Документация для разработчиков
Темная тема

Компонент для выбора элемента из списка

Описание

Компонент для выбора элемента из списка.

При фокусе селекта он автоматически раскрывается. Доступно управление с помощью клавиатуры.

Space – раскрыть селект.

Enter – выбор выделенного пункта селекта.

– переход к следующему пункту селекта.

– переход к предыдущему пункту селекта.


select.png

Подключение


JS


import {Select} from 'ui.select';

PHP


\Bitrix\Main\UI\Extension::load("ui.select");

Типы


export type SelectOption = {
	label: string;
	value: string;
}

export type SelectOptions = {
	options: SelectOption[];
	value: string;
	isSearchable: boolean;
	containerClassname: string;
	popupParams: PopupOptions;
}

// imported from main.popup
type PopupOptions = {
	id?: string,
	bindElement?: PopupTarget,
	bindOptions?: PopupTargetOptions,
	content?: string | Element | Node,
	closeByEsc?: boolean,
	buttons?: [],
	className?: string,
	width?: number,
	height?: number,
	minWidth?: number,
	minHeight?: number,
	maxWidth?: number,
	maxHeight?: number,
	resizable?: boolean,
	padding?: number,
	contentPadding?: number,
	borderRadius?: string,
	contentBorderRadius?: string,
	background?: string,
	cacheable?: boolean,
	contentBackground?: string,
	animation?: PopupAnimationOptions,
	closeIcon?: boolean,
	autoHide?: boolean,
	autoHideHandler?: (event: MouseEvent) => boolean,
	zIndexOptions?: ZIndexComponentOptions,
	toFrontOnShow?: boolean,
	events?: { [eventName: string]: (event: BaseEvent) => void },
	titleBar?: string | { content: string },
	angle?: boolean | { offset: number, position?: 'top' | 'bottom' | 'left' | 'right' },
	overlay?: boolean | { backgroundColor?: string, opacity?: number },
	contentColor?: 'white' | 'gray',
	draggable?: boolean | { restrict: boolean },
	darkMode?: boolean,
	fixed?: boolean,
	compatibleMode?: boolean,
	bindOnResize?: boolean,
	targetContainer?: HTMLElement,
	disableScroll?: boolean,

	//Compatibility
	noAllPaddings?: boolean,
	contentNoPaddings?: boolean,
}

Параметры


  • placeholder: string – отображается в селекте, пока не выбрано значение.
  • options: SelectOption – опции селекта.
  • isSearchable: boolean – дает возможность поиска.
  • containerClassname: string – дополнительный класс для контейнера. Используется для изменения стилей.
  • popupParams: PopupOptions – параметры для окна попапа.
  • Методы


  • getValue(): string – возвращает выбранное значение.
  • setValue(): string – устанавливает новое значение.
  • showMenu(): void – открывает меню.
  • hideMenu(): void – скрывает меню.
  • isMenuShown(): boolean – возвращает true, если меню открыто.
  • renderTo(targetContainer: HTMLElement): HTMLElement | null – рендерит селект внутри targetContainer.

  • События


    При выборе пункта меню селект эмитит событие BX.UI.Select::update.


    const options = [
    	{
    		value: '1',
    		label: 'the Union of Soviet Socialist Republics'
    	},
    	{
    		value: '2',
    		label: 'Deutch'
    	},
    	{
    		value: '3',
    		label: 'England'
    	},
    ]
    
    const select = new BX.Ui.Select({
    	options,
    	value: '12',
    	isSearchable: true,
    	containerClassname: '',
    });
    
    select.subscribe('update', (e) => {
    	// some code here
    });
        
    select.renderTo(document.getElementById('select'));
    

    Пример


    import {Select} from 'ui.select';
    
    const container = document.body;
    
    const select = new Select({ 
    	value: '1',
    	options: [
    		{
    			value: '1',
    			label: 'Russia',
    		}, 
    		{
    			value: '2', 
    			label: 'Germany',
    		},
    		{
    			value: '3',
    			label: 'China'
    		}
    	],
    	isSearchable: false,
    		containerClassname: '',
    });
    
    select.renderTo(container);
    

    Закрытый селект

    closed-select.png


    Открытый селект

    opened-select.png



    © «Битрикс», 2001-2024, «1С-Битрикс», 2024