
| Current Path : /var/www/html/c12park/web/modules/contrib/webform/src/Plugin/WebformElement/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : /var/www/html/c12park/web/modules/contrib/webform/src/Plugin/WebformElement/TextBaseTrait.php |
<?php
namespace Drupal\webform\Plugin\WebformElement;
/**
* Text base trait contains methods that are applicable to any text elements.
*/
trait TextBaseTrait {
/**
* Build counter widget used by text elements and other element.
*
* @param string $name
* Property name prefix.
* @param string $title
* Property title prefix.
*
* @return array
* A renderable array containing a counter configuration form.
*
* @see \Drupal\webform\Plugin\WebformElement\TextBase::form
* @see \Drupal\webform\Plugin\WebformElement\OptionsBase::form
*/
public function buildCounterForm($name = '', $title = NULL) {
if ($title === NULL) {
$title = $this->t('Counter');
}
$t_args = ['@title' => $title];
$build[$name . 'counter_type'] = [
'#type' => 'select',
'#title' => $title,
'#description' => $this->t('Limit entered value to a maximum number of characters or words.'),
'#empty_option' => $this->t('- None -'),
'#options' => [
'character' => $this->t('Characters'),
'word' => $this->t('Words'),
],
];
$build['counter_container'] = $this->getFormInlineContainer();
$build['counter_container']['#states'] = [
'invisible' => [
':input[name="properties[' . $name . 'counter_type]"]' => ['value' => ''],
],
];
$build['counter_container'][$name . 'counter_minimum'] = [
'#type' => 'number',
'#title' => $this->t('@title minimum', $t_args),
'#min' => 1,
'#states' => [
'required' => [
':input[name="properties[' . $name . 'counter_type]"]' => ['!value' => ''],
':input[name="properties[' . $name . 'counter_maximum]"]' => ['value' => ''],
],
],
];
$build['counter_container'][$name . 'counter_maximum'] = [
'#type' => 'number',
'#title' => $this->t('@title maximum', $t_args),
'#min' => 1,
'#states' => [
'required' => [
':input[name="properties[' . $name . 'counter_type]"]' => ['!value' => ''],
':input[name="properties[' . $name . 'counter_minimum]"]' => ['value' => ''],
],
],
];
$build['counter_message_container'] = [
'#type' => 'container',
'#states' => [
'invisible' => [
':input[name="properties[' . $name . 'counter_type]"]' => ['value' => ''],
],
],
];
$build['counter_message_container'][$name . 'counter_minimum_message'] = [
'#type' => 'textfield',
'#title' => $this->t('@title minimum message', $t_args),
'#description' => $this->t('Defaults to: %value', ['%value' => $this->t('%d characters/word(s) entered')]),
'#states' => [
'visible' => [
':input[name="properties[' . $name . 'counter_minimum]"]' => ['!value' => ''],
':input[name="properties[' . $name . 'counter_maximum]"]' => ['value' => ''],
],
],
];
$build['counter_message_container'][$name . 'counter_maximum_message'] = [
'#type' => 'textfield',
'#title' => $this->t('@title maximum message', $t_args),
'#description' => $this->t('Defaults to: %value', ['%value' => $this->t('%d characters/word(s) remaining')]),
'#states' => [
'visible' => [
':input[name="properties[' . $name . 'counter_maximum]"]' => ['!value' => ''],
],
],
];
if ($this->librariesManager->isExcluded('jquery.textcounter')) {
$build[$name . 'counter_type']['#access'] = FALSE;
$build[$name . 'counter_container']['#access'] = FALSE;
$build[$name . 'counter_message_container']['#access'] = FALSE;
}
return $build;
}
}