diff --git a/README.txt b/README.txt index 28afe97..c53b7bd 100644 --- a/README.txt +++ b/README.txt @@ -18,7 +18,7 @@ further information. -- WIDGET SETTINGS -- -"Paragraphs Sets" exposes settings on the "Paragraphs EXPERIMENTAL widget". +"Paragraphs Sets" exposes settings on the "Paragraphs EXPERIMENTAL" widget. * "Enable Paragraphs Sets": Whether to show the Paragraphs Sets form element at the top of the Paragraphs widget. diff --git a/paragraphs_sets.module b/paragraphs_sets.module index b2e5c6c..9a1d960 100644 --- a/paragraphs_sets.module +++ b/paragraphs_sets.module @@ -133,11 +133,6 @@ function paragraphs_sets_field_widget_multivalue_form_alter(array &$elements, Fo return; } - $widget_third_party_settings = $widget->getThirdPartySetting('paragraphs_sets', 'paragraphs_sets', []); - if (empty($widget_third_party_settings['use_paragraphs_sets'])) { - return; - } - $items = $context['items']; $host = $context['items']->getEntity(); $form = $context['form']; @@ -167,6 +162,7 @@ function paragraphs_sets_field_widget_multivalue_form_alter(array &$elements, Fo $sets = ParagraphsSets::getSets(array_keys($field_allowed_paragraphs_types)); // Limit available sets from widget settings. + $widget_third_party_settings = $widget->getThirdPartySetting('paragraphs_sets', 'paragraphs_sets', []); if (isset($widget_third_party_settings['sets_allowed']) && count(array_filter($widget_third_party_settings['sets_allowed']))) { $sets = array_intersect_key($sets, array_filter($widget_third_party_settings['sets_allowed'])); } @@ -175,7 +171,10 @@ function paragraphs_sets_field_widget_multivalue_form_alter(array &$elements, Fo // Consider adding a default paragraph set for new host entities. if ($max == 0 && $items->getEntity()->isNew() && empty($set)) { - $set = ParagraphsSets::getDefaultParagraphTypeMachineName($widget); + $default_set = $widget_third_party_settings['default_set'] ?? DEFAULT_SET_EMPTY_VALUE; + if ($default_set !== DEFAULT_SET_EMPTY_VALUE) { + $set = $default_set; + } } if ($set && isset($sets[$set])) { @@ -316,6 +315,11 @@ function paragraphs_sets_field_widget_multivalue_form_alter(array &$elements, Fo } } + // Bail now if this field does not want the Paragraphs Sets form elements. + if (empty($widget_third_party_settings['use_paragraphs_sets'])) { + return; + } + $field_state = ParagraphsSets::getWidgetState($field_parents, $field_name, $form_state); $field_state['real_item_count'] = $field_state['items_count']; $field_state['add_mode'] = $widget->getSetting('add_mode'); diff --git a/src/ParagraphsSets.php b/src/ParagraphsSets.php index 83bb996..48f7192 100644 --- a/src/ParagraphsSets.php +++ b/src/ParagraphsSets.php @@ -65,39 +65,6 @@ class ParagraphsSets { return $opts; } - /** - * Returns the machine name for default paragraph set. - * - * @param \Drupal\Core\Field\WidgetBaseInterface $widget - * The widget to operate on. - * - * @return string - * Machine name for default paragraph set. - */ - public static function getDefaultParagraphTypeMachineName(WidgetBaseInterface $widget) { - $settings = $widget->getThirdPartySetting('paragraphs_sets', 'paragraphs_sets', []); - if (isset($settings['default_set']) && $settings['default_set'] != '_none') { - return $settings['default_set']; - } - - $default_type = $widget->getSetting('default_paragraph_type'); - $allowed_types = static::getSets(); - if ($default_type && isset($allowed_types[$default_type])) { - return $default_type; - } - // Check if the user explicitly selected not to have any default Paragraph - // set. Otherwise, if there is only one set available, that one is the - // default. - if ($default_type === '_none') { - return NULL; - } - if (count($allowed_types) === 1) { - return key($allowed_types); - } - - return NULL; - } - /** * Builds select element for set selection. *