'textfield', '#title' => $this->t('Default Color'), '#maxlength' => 255, '#default_value' => $this->configuration['default_color'], '#description' => $this->t("Text color for the paragraph."), ]; return $form; } /** * {@inheritdoc} */ public function validateConfigurationForm(array &$form, FormStateInterface $form_state) { if ($form_state->getValue('default_color') == 'red') { $form_state->setErrorByName('default_color', $this->t('Red can not be used as the default color.')); } } /** * {@inheritdoc} */ public function submitConfigurationForm(array &$form, FormStateInterface $form_state) { $this->configuration['default_color'] = $form_state->getValue('default_color'); } /** * {@inheritdoc} */ public function defaultConfiguration() { return [ 'default_color' => 'blue', ]; } /** * {@inheritdoc} */ public function buildBehaviorForm(ParagraphInterface $paragraph, array &$form, FormStateInterface $form_state) { $form['text_color'] = [ '#type' => 'textfield', '#title' => $this->t('Color'), '#maxlength' => 255, '#default_value' => $paragraph->getBehaviorSetting($this->getPluginId(), 'text_color', $this->configuration['default_color']), '#description' => $this->t("Text color for the paragraph."), ]; return $form; } /** * {@inheritdoc} */ public function validateBehaviorForm(ParagraphInterface $paragraph, array &$form, FormStateInterface $form_state) { if ($form_state->getValue('text_color') != 'blue' && $form_state->getValue('text_color') != 'red') { $form_state->setError($form, 'The only allowed values are blue and red.'); } } /** * {@inheritdoc} */ public function view(array &$build, Paragraph $paragraphs_entity, EntityViewDisplayInterface $display, $view_mode) { if ($color = $paragraphs_entity->getBehaviorSetting($this->getPluginId(), 'text_color')) { $build['#attributes']['class'][] = $color . '_plugin_text'; $build['#attached']['library'][] = 'paragraphs_test/drupal.paragraphs_test.color_text'; } } /** * {@inheritdoc} */ public function settingsSummary(Paragraph $paragraph) { $text_color = $paragraph->getBehaviorSetting($this->pluginId, 'text_color'); return [$this->t('Text color: @color', ['@color' => $text_color])]; } }