diff --git a/css/paragraphs.widget.css b/css/paragraphs.widget.css
index 32e285a..76a539c 100644
--- a/css/paragraphs.widget.css
+++ b/css/paragraphs.widget.css
@@ -104,6 +104,12 @@
   display: none;
 }
 
+.paragraph-bullet:after {
+  content: "\25cf";
+  padding: 0 10px;
+  color: #777;
+}
+
 .js .field--widget-paragraphs th .paragraphs-actions {
   float: right;
   margin-right: -11px;
diff --git a/css/paragraphs.widget.scss b/css/paragraphs.widget.scss
index 46bb0d4..dbc46af 100644
--- a/css/paragraphs.widget.scss
+++ b/css/paragraphs.widget.scss
@@ -86,6 +86,12 @@
   }
 }
 
+.paragraph-bullet:after {
+  content: "\25cf";
+  padding: 0 10px;
+  color: #777;
+}
+
 // We are using .js prefix here mainly because we want to apply this style rules
 // only for JS version of a widget.
 .js {
diff --git a/paragraphs.module b/paragraphs.module
index de2c975..cfd0fc6 100644
--- a/paragraphs.module
+++ b/paragraphs.module
@@ -341,6 +341,20 @@ function paragraphs_preprocess_field_multiple_value_form(&$variables) {
       unset($variables['table']['#rows'][0]);
     }
   }
+  if (isset($variables['element']['#allow_reference_changes']) && !$variables['element']['#allow_reference_changes']) {
+    if (isset($variables['table']['#tabledrag'])) {
+      // Remove the tabledrag.
+      unset($variables['table']['#tabledrag']);
+      unset($variables['table']['#header'][1]);
+      foreach ($variables['table']['#rows'] as $key => $value) {
+        $variables['table']['#rows'][$key]['data'][0]['class'][] = 'paragraph-bullet';
+        // Restore the removed weight and give access FALSE.
+        $variables['table']['#rows'][$key]['data'][1]['data']['_weight'] = $value['data'][2]['data'];
+        unset($variables['table']['#rows'][$key]['data'][2]);
+        $variables['table']['#rows'][$key]['data'][1]['data']['_weight']['#access'] = FALSE;
+      }
+    }
+  }
 }
 
 /**
diff --git a/src/Plugin/Field/FieldWidget/ParagraphsWidget.php b/src/Plugin/Field/FieldWidget/ParagraphsWidget.php
index 4eab1b4..801f159 100644
--- a/src/Plugin/Field/FieldWidget/ParagraphsWidget.php
+++ b/src/Plugin/Field/FieldWidget/ParagraphsWidget.php
@@ -1073,6 +1073,7 @@ class ParagraphsWidget extends WidgetBase {
       $elements['add_more'] = $this->buildAddActions();
     }
 
+    $elements['#allow_reference_changes'] = $this->allowReferenceChanges();
     $elements['#attached']['library'][] = 'paragraphs/drupal.paragraphs.widget';
 
     return $elements;
diff --git a/tests/src/FunctionalJavascript/ParagraphsExperimentalWidgetElementsTest.php b/tests/src/FunctionalJavascript/ParagraphsExperimentalWidgetElementsTest.php
new file mode 100644
index 0000000..6dcf7a4
--- /dev/null
+++ b/tests/src/FunctionalJavascript/ParagraphsExperimentalWidgetElementsTest.php
@@ -0,0 +1,91 @@
+<?php
+
+namespace Drupal\Tests\paragraphs\FunctionalJavascript;
+
+use Drupal\FunctionalJavascriptTests\JavascriptTestBase;
+use Drupal\language\Entity\ConfigurableLanguage;
+
+/**
+ * Test paragraphs widget elements.
+ *
+ * @group paragraphs
+ */
+class ParagraphsExperimentalWidgetElementsTest extends JavascriptTestBase {
+
+  use LoginAdminTrait;
+  use ParagraphsTestBaseTrait;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'node',
+    'paragraphs',
+    'paragraphs_demo',
+    'field',
+    'field_ui',
+    'block',
+    'link',
+    'text',
+    'content_translation',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+  }
+
+  /**
+   * Test paragraphs drag handler during translation.
+   */
+  public function testDragHandler() {
+    $this->loginAsAdmin([
+      'administer site configuration',
+      'create paragraphed_content_demo content',
+      'edit any paragraphed_content_demo content',
+      'delete any paragraphed_content_demo content',
+      'administer content translation',
+      'translate any entity',
+      'create content translations',
+      'administer languages',
+    ]);
+    ConfigurableLanguage::createFromLangcode('sr')->save();
+    $edit = [
+      'settings[paragraph][nested_paragraph][translatable]' => TRUE,
+      'settings[paragraph][nested_paragraph][settings][language][language_alterable]' => TRUE,
+      'settings[paragraph][images][fields][field_images_demo]' => TRUE,
+    ];
+    $this->drupalPostForm('admin/config/regional/content-language', $edit, t('Save configuration'));
+    $settings = [
+      'add_mode' => 'modal',
+    ];
+    $this->setParagraphsWidgetSettings('paragraphed_content_demo', 'field_paragraphs_demo', $settings);
+
+    // Create a node and add a paragraph.
+    $page = $this->getSession()->getPage();
+    $this->drupalGet('node/add/paragraphed_content_demo');
+    $page->pressButton('Add Paragraph');
+    $this->assertSession()->assertWaitOnAjaxRequest();
+    $page->pressButton('Text');
+    $this->assertSession()->assertWaitOnAjaxRequest();
+    // Assert the draghandle is visible.
+    $style_selector = $page->find('css', '.tabledrag-handle');
+    $this->assertTrue($style_selector->isVisible());
+    $edit = [
+      'title[0][value]' => 'Title',
+      'field_paragraphs_demo[0][subform][field_text_demo][0][value]' => 'First',
+    ];
+    $this->drupalPostForm(NULL, $edit, t('Save'));
+    // Translate the node.
+    $node = $this->getNodeByTitle('Title');
+    $this->drupalGet('node/' . $node->id() . '/translations/add/en/sr');
+    $page = $this->getSession()->getPage();
+    // Assert that the draghandle is not displayed.
+    $this->assertNull($page->find('css', '.tabledrag-handle'));
+  }
+
+}
