QueueSelect
Выпадающий список для выбора очереди Трекера. Поддерживает статический список очередей, асинхронный поиск/саджест, иконки, состояние загрузки и диалог подтверждения перед сменой выбора.
Базовое использование
import {QueueSelect} from '@weavix/tracker-components';
import type {QueueInfo} from '@weavix/tracker-components';
const queues: QueueInfo[] = [
{key: 'DEV', display: 'Development'},
{key: 'DESIGN', display: 'Design'},
];
<QueueSelect
queues={queues}
defaultQueue={queues[0]}
onChange={(queue) => console.log(queue)}
/>;
Использование с Tracker API (статический список + асинхронный саджест)
Загружает очереди один раз при монтировании и переключается на саджест-эндпоинт, как только пользователь начинает вводить текст.
import React, {useEffect, useState} from 'react';
import {CancellablePromise} from '@gravity-ui/sdk';
import {QueueSelect} from '@weavix/tracker-components';
import type {QueueInfo} from '@weavix/tracker-components';
interface Props {
trackerApi: TrackerApi;
onChange: (queue: QueueInfo) => void;
}
export const QueueSelectWithApi: React.FC<Props> = ({trackerApi, onChange}) => {
const [queues, setQueues] = useState<QueueInfo[]>([]);
const [loading, setLoading] = useState(true);
// Загрузка всех очередей при монтировании
useEffect(() => {
trackerApi.v3
.get['/queues']()
.then((result) => setQueues(result.data))
.finally(() => setLoading(false));
}, [trackerApi]);
// Саджест при вводе пользователя
const handleSearch = (text: string): CancellablePromise<QueueInfo[]> => {
const promise = trackerApi.v3
.get['/queues/_suggest']({queryParams: {input: text, fields: []}})
.then((result) => result.data);
return new CancellablePromise(promise, () => {});
};
return (
<QueueSelect
queues={queues}
loading={loading}
onSearch={handleSearch}
onChange={onChange}
placeholder="Выберите очередь"
/>
);
};
Основные свойства
|
Свойство |
Тип |
По умолчанию |
Описание |
|
|
|
`QueueInfo[] |
string[]` |
— |
Список очередей для отображения |
|
|
`QueueInfo |
string` |
— |
Очередь, выбранная по умолчанию при монтировании |
|
|
|
|
Состояние загрузки |
|
|
|
|
— |
Асинхронный поиск при вводе текста |
|
|
|
|
— |
Колбэк при смене выбранной очереди |
|
|
|
|
|
Не выбирать очередь по умолчанию при монтировании |
|
|
|
|
|
Отключить поле поиска внутри выпадающего списка |
|
|
|
|
|
Показывать иконку очереди рядом с выбранным значением |
|
|
|
|
— |
Асинхронная проверка перед применением нового выбора |
|
|
|
`string |
boolean` |
— |
Сообщение об ошибке или флаг ошибки |
|
|
|
— |
Плейсхолдер при отсутствии выбора |
|
|
|
|
|
Размер контрола |
|
|
|
|
|
Отображать рамку вокруг контрола |
|
|
|
|
— |
Дополнительный CSS-класс |