Система управления «Сайт PRO»
Версия 20240107

input.dropdown.php

Поле «Подстановка»

Вызывается из:

Смотрите описание Cms\Root\Form\Field\Base

Исходный код
<?php

$attributes = $Field->getInputAttributes(array(
    'grid-margin' => $Field->getInputMargin(),
    'grid-width' => $Field->getInputWidth(),
    'type' => 'text',
    'name' => $Field->name,
    'value' => $Field->v(),
    'placeholder' => strval($Field->placeholder) !== '' ? htmlspecialchars($Field->placeholder) : null,
    'required' => $Field->required ? '' : null,
    'readonly' => $Field->readonly ? '' : null,
    'disabled' => $Field->disabled ? '' : null,
    'class' => 'field-input field-input--' . $Field->type . ' input input--' . $Field->type . ' with-button',
    'id' => $Field->id('-input'),
    'list' => $Field->id('-list'),
    'onclick' => 'try { this.showPicker() } catch (e) { }',
));
print '<input';
foreach ($attributes as $attributeName => $attributeValue) if ($attributeValue !== null) print ' ' . $attributeName . '="' . $attributeValue . '"';
print '>';

print '<datalist id="' . $Field->id('-list') . '">';
if (is_array($Field->optionList) && !empty($Field->optionList)) {
    foreach ($Field->optionList as $option) {
        if ($option['isGroup']) {
            print "\n" . '<optgroup label="' . $Field->v($option['label']) . '">';
            foreach ($option['optionList'] as $option) {
                $optionValue = $option['value'];
                $optionLabel = $option['label'];
                print "\n" . '<option value="' . $Field->v($optionValue) . '"' . ($optionValue === $value ? ' selected=""' : '') . '>' . $Field->v($optionLabel) . '</option>';
            }
            print "\n" . '</optgroup>';
        } else {
            $optionValue = $option['value'];
            $optionLabel = $option['label'];
            print "\n" . '<option value="' . $Field->v($optionValue) . '"' . (strval($optionValue) === $value ? ' selected=""' : '') . '>' . $Field->v($optionLabel) . '</option>';
        }
    }
}
print '</datalist>';

?>

<script>
cmsRequire(['form/script/input.dropdown'], init => init(document.getElementById(<?=$Field->jId('-input')?>)));
</script>