mirror of
https://bitbucket.org/bellord13/kit.git
synced 2026-11-13 19:06:11 +03:00
134 lines
4.9 KiB
PHP
134 lines
4.9 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @var array $arParams
|
|
*/
|
|
use \Wt\Core\Type;
|
|
|
|
$arParamsDefault = [
|
|
'AUTO_SELECT' => true,
|
|
'OPTIONS_VALUE_KEY' => 'ID',
|
|
'OPTIONS_TEXT_KEY' => 'NAME',
|
|
'ADD_CLASS' => '',
|
|
'CLASS' => '',
|
|
'LABEL_CLASS' => '',
|
|
'ID' => '',
|
|
'NAME' => '',
|
|
'ONCHANGE' => '',
|
|
'HIDDEN' => true, // || 'TYPE' => 'hidden'
|
|
'SELECTED' => ' id ',
|
|
'LABEL' => '',
|
|
'MULTIPLE' => '',
|
|
'ARROW_IN_LABEL' => false,
|
|
'OPTIONS_HTML' => '', // !!
|
|
'CHECK_DIRTY' => true, // !!
|
|
'OPTIONS' => [],
|
|
];
|
|
$optionDefault = [
|
|
'ID' => '',
|
|
'NAME' => '',
|
|
'ATTR' => '',
|
|
'VISIBLE' => true,
|
|
'SELECTED' => 'Y',
|
|
'DISABLED' => 'Y', // || RESTRICTED
|
|
];
|
|
|
|
if(!isset($arParams['AUTO_SELECT'])) {
|
|
$arParams['AUTO_SELECT'] = $arParamsDefault['AUTO_SELECT'];
|
|
}
|
|
$arParams['AUTO_SELECT'] = \Bx\Kit\Tools::isTrue($arParams['AUTO_SELECT']);
|
|
|
|
if(!isset($arParams['OPTIONS_VALUE_KEY'])) {
|
|
$arParams['OPTIONS_VALUE_KEY'] = $arParamsDefault['OPTIONS_VALUE_KEY'];
|
|
}
|
|
if(!isset($arParams['OPTIONS_TEXT_KEY'])) {
|
|
$arParams['OPTIONS_TEXT_KEY'] = $arParamsDefault['OPTIONS_TEXT_KEY'];
|
|
}
|
|
$arParams['OPTIONS'] = (array)$arParams['OPTIONS'];
|
|
|
|
|
|
$arrowInLabel = \Bx\Kit\Tools::isTrue($arParams['ARROW_IN_LABEL']);
|
|
|
|
if(!isset($arParams['CHECK_DIRTY'])) {
|
|
$arParams['CHECK_DIRTY'] = $arParamsDefault['CHECK_DIRTY'];
|
|
}
|
|
$checkDirty = \Bx\Kit\Tools::isTrue($arParams['CHECK_DIRTY']);
|
|
|
|
$optionSelectedArray = [];
|
|
$hidden = \Bx\Kit\Tools::isTrue($arParams['HIDDEN']) || ($arParams['TYPE'] == 'hidden');
|
|
$multiple = \Bx\Kit\Tools::isTrue($arParams['MULTIPLE']);
|
|
$optionsHtml = '';
|
|
|
|
if($arParams['OPTIONS']) {
|
|
if(strlen($arParams['SELECTED'])) {
|
|
foreach ($arParams['OPTIONS'] as $option) {
|
|
if(isset($option['VISIBLE']) && !\Bx\Kit\Tools::isTrue($option['VISIBLE'])) continue;
|
|
if($arParams['SELECTED'] == Type\Arr::get($option, $arParams['OPTIONS_VALUE_KEY'])) {
|
|
$optionSelectedArray = $option;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if($arParams['AUTO_SELECT']) {
|
|
if(!$optionSelectedArray) {
|
|
foreach ($arParams['OPTIONS'] as $option) {
|
|
if(isset($option['VISIBLE']) && !\Bx\Kit\Tools::isTrue($option['VISIBLE'])) continue;
|
|
if(\Bx\Kit\Tools::isTrue($option['SELECTED'])) {
|
|
$optionSelectedArray = $option;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if(!$optionSelectedArray) {
|
|
$optionSelectedArray = reset($arParams['OPTIONS']);
|
|
}
|
|
}
|
|
}
|
|
$optionsCount = 0;
|
|
foreach ($arParams['OPTIONS'] as $option) {
|
|
if(isset($option['VISIBLE']) && !\Bx\Kit\Tools::isTrue($option['VISIBLE'])) continue;
|
|
$isSelected = (Type\Arr::get($optionSelectedArray, $arParams['OPTIONS_VALUE_KEY']) == Type\Arr::get($option, $arParams['OPTIONS_VALUE_KEY']));
|
|
$isDisabled = \Bx\Kit\Tools::isTrue($option['DISABLED']) || \Bx\Kit\Tools::isTrue($option['RESTRICTED']);
|
|
|
|
$optionsCount++;
|
|
$optionsHtml .= ' <option value="'.Type\Arr::get($option, $arParams['OPTIONS_VALUE_KEY']).'" '. \Bx\Kit\Node\Lib::getAttrByArray($option['ATTR']) .
|
|
($isSelected?' selected':'').''.
|
|
($isDisabled?' disabled':'').'>'.Type\Arr::get($option, $arParams['OPTIONS_TEXT_KEY']).'</option>';
|
|
}
|
|
|
|
|
|
|
|
?><label class="kit-field kit-field--select<?=($hidden?' kit-hidden':'')?> <?=$arParams['LABEL_CLASS']?>">
|
|
<select data-dirty="<?=(!$checkDirty || $optionSelectedArray)?'true':'false'?>"
|
|
name="<?=$arParams['NAME']?>"
|
|
<?if($arParams['ID']){?>id="<?=$arParams['ID']?>"<?}?>
|
|
<?if($multiple){?> multiple<?}?>
|
|
<?if($arParams['ONCHANGE']){?> onchange="<?=\Bx\Kit\Lib\Type\Str::safeHtmlAttr($arParams['ONCHANGE'])?>"<?}?>
|
|
class="kit-field__input <?=$arParams['CLASS']?> <?=$arParams['ADD_CLASS']?>"
|
|
<?=\Bx\Kit\Node\Lib::getAttrByArray($arParams['ATTR'])?>
|
|
<?if($arParams['PLACEHOLDER']){?>data-placeholder="<?=$arParams['PLACEHOLDER']?>"<?}?>
|
|
>
|
|
<?
|
|
echo $optionsHtml?:$arParams['OPTIONS_HTML'];
|
|
?>
|
|
</select>
|
|
<?
|
|
if($arParams['HINT']){
|
|
app()->service()->templater()->render('kit:field/hint', ['TITLE' => $arParams['HINT']]);
|
|
}?>
|
|
<?if(!$arrowInLabel){?><span class="kit-field__arrow"><?=app()->service()->templater()->get('kit:svg/chevronAnimate')?></span><?}?>
|
|
<span class="kit-field__display"><?=Type\Arr::get($optionSelectedArray, $arParams['OPTIONS_TEXT_KEY'])?:$arParams['PLACEHOLDER']?></span>
|
|
<span class="kit-field__label"><?=$arParams['LABEL']?:$arParams['NAME']?:''?><?if($arrowInLabel){?><span class="kit-field__arrow"><?=\Bx\Kit\Template::get('svg/chevronAnimate')?></span><?}?></span>
|
|
<span class="kit-field__error"></span>
|
|
<span class="kit-field__hr"></span>
|
|
<?if($arParams['AREA_LEFT']){?><div class="kit-field__area-left"><?=$arParams['AREA_LEFT']?></div><?}?>
|
|
<?if($arParams['AREA_RIGHT']){?><div class="kit-field__area-right"><?=$arParams['AREA_RIGHT']?></div><?}?>
|
|
</label><?
|
|
|
|
?>
|
|
|
|
|
|
|