'5', 'placeholder' => '', ] + parent::defaultSettings(); } /** * {@inheritdoc} */ public function settingsForm(array $form, FormStateInterface $form_state) { $element['rows'] = [ '#type' => 'number', '#title' => t('Rows'), '#default_value' => $this->getSetting('rows'), '#required' => TRUE, '#min' => 1, ]; $element['placeholder'] = [ '#type' => 'textfield', '#title' => t('Placeholder'), '#default_value' => $this->getSetting('placeholder'), '#description' => t('Text that will be shown inside the field until a value is entered. This hint is usually a sample value or a brief description of the expected format.'), ]; return $element; } /** * {@inheritdoc} */ public function settingsSummary() { $summary = []; $summary[] = t('Number of rows: @rows', ['@rows' => $this->getSetting('rows')]); $placeholder = $this->getSetting('placeholder'); if (!empty($placeholder)) { $summary[] = t('Placeholder: @placeholder', ['@placeholder' => $placeholder]); } return $summary; } /** * {@inheritdoc} */ public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) { $element['value'] = $element + [ '#type' => 'textarea', '#default_value' => $items[$delta]->value, '#rows' => $this->getSetting('rows'), '#placeholder' => $this->getSetting('placeholder'), '#attributes' => ['class' => ['js-text-full', 'text-full']], ]; return $element; } }