← К списку компонентов

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="Выберите очередь"
        />
    );
};

Основные свойства

Свойство

Тип

По умолчанию

Описание

queues

`QueueInfo[]

string[]`

Список очередей для отображения

defaultQueue

`QueueInfo

string`

Очередь, выбранная по умолчанию при монтировании

loading

boolean

false

Состояние загрузки

onSearch

(text: string) =>
  Promise<QueueInfo[]>

Асинхронный поиск при вводе текста

onChange

(queue: QueueInfo) =>
  void

Колбэк при смене выбранной очереди

initialEmpty

boolean

false

Не выбирать очередь по умолчанию при монтировании

withoutSuggest

boolean

false

Отключить поле поиска внутри выпадающего списка

withValueIcon

boolean

false

Показывать иконку очереди рядом с выбранным значением

confirmUpdate

() =>
  Promise<{success: boolean}>

Асинхронная проверка перед применением нового выбора

error

`string

boolean`

Сообщение об ошибке или флаг ошибки

placeholder

string

Плейсхолдер при отсутствии выбора

size

'xs' | 's' | 'm' | 'l' | 'xl'

'm'

Размер контрола

withBorder

boolean

false

Отображать рамку вокруг контрола

className

string

Дополнительный CSS-класс

Предыдущая
Следующая