Product
Socket Now Supports uv.lock Files
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
Компонент уведомления.
import {
Alert,
alertTypes,
} from '@n3/kit/Alert';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
type | + | enum - alertTypes.INFO - alertTypes.WARNING - alertTypes.DANGER - alertTypes.SUCCESS | Тип сообщения | |
title | node | null | Заголовок сообщения | |
button | node | null | Кнопка действий у сообщения | |
noMargins | bool | false | Если true, сообщение ренедерится без отступов сверху и снизу | |
children | node | null |
Стилизованный react-select/creatable
+ react-select-async-paginate
.
import { AsyncCreatable } from '@n3/kit/AsyncCreatable';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
allowCreateWhileLoading | boolean | |||
formatCreateLabel | (inputValue: string) => ReactNode | |||
isValidNewOption | (inputValue: string, value: any, options: OptionsType) => boolean | |||
getNewOptionData | (inputValue: string, optionLabel: ReactNode) => any | |||
onCreateOption | (inputValue: string) => void | |||
createOptionPosition | "first" | "last" | ||
small | boolean | false | Маленькое ли поле | |
isMulti | boolean | false | Множественный выбор | |
isClearable | boolean | true | Возможность сброса значения | |
hasError | boolean | false | Есть ли у поля ошибка | |
hasWarning | boolean | false | Есть ли у поля предупреждение | |
value | any | null | Значение поля | |
selectRef | Ref | ref для получения экземпляра react-select | ||
renderModal | (renderProps: ModalSelectButtonModalRenderProps<ValueType>) => ReactNode | undefined | Функция рендера содержимого модального окна | |
isDisabled | boolean | false | Выключено ли поле | |
getOptionLabel | GetOptionLabel | null | Функция получения заголовка опции для вывода и фильтрации | |
labelKey | string | "label" | Ключ, для получения заголовка опции в случае, если не определено getOptionLabel | |
getOptionValue | GetOptionValue | null | Функция получения значения опции | |
valueKey | string | "value" | Ключ, для получения значения опции в случае, если не определено getOptionValue | |
onChange | (nextValue: any) => void | "(): void => {}" | Обработчик изменения значения поля @param nextValue - новое значение поля | |
loadOptions | LoadOptions<any, any> | Асинхронная функция запроса данных с сервера в формате react-select-async-paginate @param search - значение строки поиска @param prevOptions - список загруженных опций @param additional - дополнительные параметры запроса @returns ответ сервера | ||
additional | any | Дополнительные параметры первого запроса | ||
debounceTimeout | number | Задержка при отправке запросов | ||
cacheUniqs | + | any[] | Список значений при изменении одного из которых опции будут сброшены |
Автокомплит.
import { Autocomplete } from '@n3/kit/Autocomplete';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
loadOptions | + | LoadOptions | Функция загрузки опций @param search - текущее значение поля ввода @returns response.options - опции | |
value | + | string | Значение элемента input | |
onChange | OnChange | Обработчик изменения значения поля при ручном вводе | ||
onSelect | OnSelect | Обработчик изменения значения поля при выборе из меню @param value - текст выбранной опции @param option - выбранная опция | ||
disabled | boolean | false | Выключено ли поле | |
hasError | boolean | false | Есть ли у поля ошибка | |
hasWarning | boolean | false | Есть ли у поля предупреждение | |
inputProps | HTMLProps<HTMLInputElement> | "{}" | Дополнительные props элемента input | |
labelKey | string | "label" | Ключ, по которому хранится текст опции | |
getOptionLabel | GetOptionLabel | Функция получения текста опции, который будет подставлен при выборе | ||
formatOptionLabel | FormatOptionLabel | Функция отображения опции |
Страницы ошибки, полученной с помощью axios
.
import { AxiosErrorPage } from '@n3/kit/AxiosErrorPage';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
error | + | AxiosError | Ошибка axios |
Компонент хлебных крошек.
import { Breadcrumbs } from '@n3/kit/Breadcrumbs';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
breadcrumbs | + | arrayOf [ shape { - url string - title string } ] | массив объектов хлебных крошек | |
homeLink | string | undefined | Ссылка на домашнюю страницу |
Компонент кнопки.
import {
Button,
buttonColors,
ButtonIcon,
buttonSizes,
} from '@n3/kit/Button';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
color | ButtonColor | Цвет кнопки | ||
size | ButtonSize | Размер кнопки | ||
component | elementType | 'button' | Компонент корневого элемента кнопки | |
componentProps | object | {} | Дополнительный props компонента кнопки при использовании кастомного component | |
loading | bool | false | Состояние загрузки | |
disabled | bool | false | Кнопка выключена | |
pressed | bool | false | Кнопка зажата | |
flatLeft | bool | false | Не отображать закругления слева | |
flatRight | bool | false | Не отображать закругления справа | |
onlyIcon | bool | false | Кнопка состоит только из иконки | |
className | string | '' | Дополнительный класс корневого компонента кнопки | |
onClick | func | Function.prototype | Обработчик нажатия на кнопку | |
children | node | null |
Компонент для выравнивания иконок относительно границ и текста кнопки.
<Button>
Скачать
<ButtonIcon
isRight
>
<i className="fa fa-download" />
</ButtonIcon>
</Button>
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
isLeft | bool | false | Иконка находится слева от текста | |
isRight | bool | false | Иконка находится справа от текста |
Кнопка-дропдаун.
import { ButtonDropdown } from '@n3/kit/ButtonDropdown';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
dropdown | + | DropdownBase | props компонента Dropdown | |
hasArrow | boolean | false | Показывать ли стрелку справа от текста | |
children | ReactNode | null | Содержимое кнопки | |
...rest | Object | props, которые будут переданы в кнопку |
Группа кнопок.
import { ButtonGroup } from '@n3/kit/ButtonGroup';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
borderCollapse | boolean | false | Должны ли соседние кнопки иметь общую границу | |
...rest | Object | props, которые будут переданы в каждую кнопку |
Ссылка react-router-dom
, стилизованная под кнопку.
import { ButtonLink } from '@n3/kit/ButtonLink';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
icon | - | ReactNode | undefined | Иконка кнопки |
onlyIcon | - | boolean | undefined | Отображать только иконку внутри кнопки |
to | + | any | Параметр ссылки react-router-dom | |
target | string | undefined | Параметр ссылки react-router-dom | |
disabled | boolean | false | Выключена ли кнопка |
Кнопка, открывающая модальное окно.
import { ButtonModal } from '@n3/kit/ButtonModal';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
renderModal | + | (renderProps: { closeModal: () => void; }) => ReactNode | Функция рендера модального окна | |
modalSize | ModalSize | Размер модального окна | ||
hasCloseButton | boolean | Отображается ли кнопка закрытия окна | ||
isHideOnBackdropClick | boolean | Закрывать ли окно при нажатии вне окна | ||
...rest | `Omit<ButtonProps, 'component' | 'componentProps'>` |
Тулбар кнопок.
import { ButtonToolbar } from '@n3/kit/ButtonToolbar';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
align | enum - 'left' - 'right' | 'left' | Выравнивание кнопок внутри | |
indent | enum - 'default' - 'small' | 'default' | Расстояние между кнопками | |
children | node | null |
Кнопка с выпадающим списком.
import { ButtonWithDropdown } from '@n3/kit/ButtonWithDropdown';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
size | ButtonSize | Размер кнопки | ||
component | ButtonComponent | undefined | Компонент корневого элемента кнопки | |
Компонент кнопки | ||||
componentProps | { [key: string]: any; } | undefined | Дополнительный props компонента кнопки при использовании кастомного component | |
Дополнительные props кнопки | ||||
loading | boolean | false | Состояние загрузки | |
Находится ли кнопка в состоянии загрузки | ||||
disabled | boolean | false | Кнопка выключена | |
Выключены ли кнопка и дропдаун | ||||
pressed | boolean | Кнопка зажата | ||
flatLeft | boolean | Не отображать закругления слева | ||
flatRight | boolean | Не отображать закругления справа | ||
onlyIcon | boolean | Кнопка состоит только из иконки | ||
className | string | Дополнительный класс корневого компонента кнопки | ||
onClick | Function | Function.prototype | Обработчик нажатия на кнопку | |
Обработчик нажатия на кнопку | ||||
children | ReactNode | null | Текст кнопки | |
dropdown | + | DropdownBase | props компонента Dropdown | |
buttonDisabled | boolean | false | Выключена ли кнопка | |
color | ButtonColor | buttonColors.DEFAULT | Цвет | |
dropdownDisabled | boolean | false | Выключена ли кнопка открытия выпадающего списка |
Ячейка внутри Row
.
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
isPercenage | boolean | false | Пропорциональная ширина колонки относительно контейнера | |
xs | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | null | Количество колонок в разрешениях до 576px | |
sm | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | null | Количество колонок в разрешениях до 768px | |
md | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | null | Количество колонок в разрешениях до 992px | |
lg | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | null | Количество колонок в разрешениях до 1200px | |
xl | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | null | Количество колонок в разрешениях от 1200px включительно |
Чекбокс.
import { Checkbox } from '@n3/kit/Checkbox';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
checked | + | boolean | выбран ли данный чекбокс | |
name | string | "" | name html-элемента input, а также аргумент колбэка onChange | |
value | ReactText | "" | value html-элемента input, а также аргумент колбэка onChange | |
disabled | boolean | false | выключен ли данный чекбокс | |
hasError | boolean | false | подсветка ошибки | |
hasWarning | boolean | false | подсветка предупреждения | |
indeterminate | boolean | false | находится ли данный чекбокс в неопределённом состоянии | |
helpText | ReactNode | null | текст/контент, всплывающий при наведении на чекбокс | |
label | ReactNode | null | текст/контент, выводящийся рядом с чекбоксом | |
onChange | OnCheckboxChange | "(): void => {}" | хэндлер изменения значения, вызывается с параметрами: (nextChecked, value, name) |
Группа чекбоксов.
import { CheckboxGroup } from '@n3/kit/CheckboxGroup';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
inline | boolean | false | инлайновый вывод чекбоксов | |
name | string | "" | name каждого html-элемента input | |
value | + | ReactText[] | массив значений выбранных опций | |
disabled | boolean | false | выключена ли данная группа чекбоксов | |
options | + | Record<string, any>[] | список опций данной группы чекбоксов | |
valueKey | string | "value" | ключ, по которому хранятся значения в объектах options | |
labelKey | string | "label" | ключ, по которому хранятся заголовки в объектах options | |
onChange | (nextValue: ReactText[]) => void | "(): void => {}" | хэндлер изменения значения |
Кнопка очистки поля.
import { ClearButton } from '@n3/kit/ClearButton';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
as | ComponentType | 'span' | Корневой компонент | |
...rest | ComponentProps | Дополнительные props компонента as |
Счётчик.
import { Counter } from '@n3/kit/Counter';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
counter | + | number | Значение счётчика | |
maxNumber | number | null | Максимальное значение счётчика | |
isLight | bool | false | Отображение в светлых цветах |
Стилизованный react-select/creatable
.
import { Creatable } from '@n3/kit/Creatable';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
allowCreateWhileLoading | boolean | |||
formatCreateLabel | (inputValue: string) => ReactNode | |||
isValidNewOption | (inputValue: string, value: any, options: OptionsType) => boolean | |||
getNewOptionData | (inputValue: string, optionLabel: ReactNode) => any | |||
onCreateOption | (inputValue: string) => void | |||
createOptionPosition | "first" | "last" | ||
small | boolean | false | Маленькое ли поле | |
isMulti | boolean | false | Множественный выбор | |
isClearable | boolean | true | Возможность сброса значения | |
hasError | boolean | false | Есть ли у поля ошибка | |
hasWarning | boolean | false | Есть ли у поля предупреждение | |
value | any | null | Значение поля | |
selectRef | Ref | ref для получения экземпляра react-select | ||
renderModal | (renderProps: ModalSelectButtonModalRenderProps<ValueType>) => ReactNode | undefined | Функция рендера содержимого модального окна | |
isDisabled | boolean | false | Выключено ли поле | |
getOptionLabel | GetOptionLabel | null | Функция получения заголовка опции для вывода и фильтрации | |
labelKey | string | "label" | Ключ, для получения заголовка опции в случае, если не определено getOptionLabel | |
getOptionValue | GetOptionValue | null | Функция получения значения опции | |
valueKey | string | "value" | Ключ, для получения значения опции в случае, если не определено getOptionValue | |
onChange | (nextValue: any) => void | "(): void => {}" | Обработчик изменения значения поля @param nextValue - новое значение поля | |
options | + | OptionsType | GroupedOptionsType |
Список опций выпадающего меню для приложений на базе @n3/kit
.
import { createDropdownMenu } from '@n3/kit/createDropdownMenu';
import { ButtonDropdown } from '@n3/kit/ButtonDropdown';
import { createDropdownMenu } from '@n3/kit/createDropdownMenu';
// ...
<ButtonDropdown
dropdown={createDropdownMenu([
{
render: ({
className,
children,
}) => (
<a
className={className}
href="http://netrika.ru/"
target="_blank"
>
{children}
</a>
),
label: 'Ссылка на сайт Нетрики',
},
{
onClick: () => {
alert('Hello');
},
label: 'Алерт',
},
])}
>
Открыть меню
</ButtonDropdown>
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
render | (renderProps: DropdownMenuItemRenderProps) => ReactNode | defaultRender | Функция рендера компонента | |
disabled | bool | false | Выключен ли данный элемент меню | |
className | string | '' | Дополнительный className | |
onClick | func | null | ||
renderIcon | func | null | Функция рендера иконки пункта меню @param {Object} renderProps @param {boolean} renderProps.disabled - выключен ли пункт меню | |
label | + | node | Текст пункта меню |
Лэйаут страницы создания.
import { CreateLayout } from '@n3/kit/CreateLayout';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
breadcrumbs | Breadcrumb[] | Массив объектов хлебных крошек | ||
title | + | node | Заголовок страницы | |
headerBlock | node | null | Блок, выводящийся между заголовком страницы и табами | |
children | node | null | Содержимое страницы |
Действие удаления строки таблицы.
import { createRemoveTableAction } from '@n3/kit/createRemoveTableAction';
import { TableActions } from '@n3/kit/TableActions';
// ...
<TableActions
actions={[
createRemoveTableAction({}, {
remove: () => new Promise((resolve) => {
setTimeout(() => {
resolve();
}, 1500);
}),
approveTitle: 'Удаление ЕИСТ',
approveContent: 'Восстановить проект будет невозможно.',
approveButtonText: 'Удалить проект',
cancelButtonText: 'Отменить',
notification: {
title: 'Успешно',
content: 'Проект успешно удалён',
},
}),
]}
/>
Аргументы:
createDropdownMenu
;useRemoveButton
.Поле ввода даты.
import { Datepicker } from '@n3/kit/Datepicker';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
selected | Date | Выбранная дата | ||
disabled | boolean | false | Выключено ли поле | |
small | boolean | false | Маленькое ли поле | |
hasError | boolean | false | Есть ли у поля ошибка | |
hasWarning | boolean | false | Есть ли у поля предупреждение | |
withTime | boolean | false | Есть ли возможность выбора времени | |
timeCaption | string | "Время" | Текст над вариантами выбора времени | |
block | boolean | false | Отображать ли поле во всю ширину | |
isClearable | boolean | false | Возможность сброса выбранной даты | |
autoComplete | "on" | "off" | "off" | |
onChange | (nextDate: Date) => void | "(): void => {}" | Обработчик изменения или сброса значения @param nextDate - новое значение |
Инпут с задержкой.
import { DebounceInput } from '@n3/kit/DebounceInput';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
component | InputComponent | Компонент корневого элемента инпута | ||
disabled | boolean | Выключено ли поле | ||
hasError | boolean | Есть ли у поля ошибка | ||
hasWarning | boolean | Есть ли у поля предупреждение | ||
small | boolean | Маленькое ли поле | ||
className | string | Дополнительный класс корневого компонента инпута | ||
isOnlyBorderBottom | boolean | Отображение без рамки только с подчёркиванием снизу | ||
buttons | RenderInputButton[] | Массив функций реднеда кнопок @param props - все props инпута @param index - индекс кнопки | ||
debounceTimeout | number | 300 | Время задержки в мс |
Компонент выпадающего меню.
import { Dropdown } from '@n3/kit/Dropdown';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
hasHorizontalOffsets | bool | true | есть ли горизонтальный отступ между элементом и меню | |
hasVerticalOffsets | bool | true | есть ли вертикальный отступ между элементом и меню | |
renderContent | + | (renderProps: DropdownContentRenderProps) => ReactNode | функция рендера содержимого выпадающего меню | |
placement | string | 'bottom-start' | позиция меню в формате popper.js | |
popperStyle | object | {} | дополнительные стили popper-компонента | |
popperProps | objectOf { any } | {} | дополнительные опции popper-компонента | |
modifiers | arrayOf [ object ] | [] | modifiers popper-компонента | |
children | + | func | Функция рендера элемента, открывающего выпадающего меню @param {Object} renderProps @param {boolean} renderProps.isDropdownOpen - открыто ли меню @param {Function} renderProps.onClick - обработчик нажатия на элемент, открывающий/закрывающий меню @param {React ref} renderProps.ref - ref элемента, относительно которого позиционируется выпадающее меню |
Лэйаут страницы редактирования.
import { EditLayout } from '@n3/kit/EditLayout';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
breadcrumbs | Breadcrumb[] | Массив объектов хлебных крошек | ||
title | + | node | Заголовок страницы | |
headerBlock | node | null | Блок, выводящийся между заголовком страницы и табами | |
children | node | null | Содержимое страницы |
Выпадающий список в виде точек.
import { EllipsisDropdown } from '@n3/kit/EllipsisDropdown';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
dropdown | + | shape { - hasHorizontalOffsets bool - hasVerticalOffsets bool - renderContent func - placement string - popperStyle object - popperProps objectOf { any } - modifiers arrayOf [ object ] } | props компонента Dropdown | |
className | string | '' | ||
disabled | bool | false |
Страница ошибки.
import { ErrorPage } from '@n3/kit/ErrorPage';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
status | + | number | http-статус | |
title | ReactNode | null | Заголовок страницы | |
description | ReactNode | null | Описание/руководство к действиям |
Компонент, стилизованный, как ссылка.
import { FakeLink } from '@n3/kit/FakeLink';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
component | React Component | 'span' | ||
disabled | boolean | false | Выключена ли обработка событий | |
onClick | Function | null | Обработчик нажатия, вызывается, если disabled не true |
Обёртка над полем для вывода заголовка, подсказки, ошибок и предупреждений.
import { FieldGroup } from '@n3/kit/FieldGroup';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
colon | boolean | true | Если `true``, после заголовка выводится двоеточие | |
direction | `'horizontal' | 'vertical'` | 'horizontal' | |
onlyField | boolean | false | Если true, поле выводится без заголовка | |
label | string | undefined | Заголовок поля | |
required | boolean | false | Обязательность поля | |
isCellsPercentage | boolean | false | Пропорциональная ширина поля и контейнера для единиц измерения | |
isInput | boolean | false | Задать отступ заголовка, чтобы он был в одну линию с текстом поля ввода | |
isShow | boolean | false | Вывод в режиме просмотра (влияет на расстояние между полями) | |
hasRepeatOffsets | boolean | false | Вывод внутри Repeat.Block | |
hint | ReactNode | undefined | Подсказка, выводящаяся в тултипе рядом с заголовком | |
unit | ReactNode | undefined | Единицы измерения, выводится справа от поля | |
help | string[] | undefined | Подсказки поля | |
errors | string[] | undefined | Ошибки поля | |
warnings | string[] | undefined | Предупреждения поля | |
showBackground | boolean | undefined | Менять ли фон поля в случае ошибки или предупреждения | |
labelColsXs | CellValue | 3 | Количество колонок заголовка | |
fieldColsXs | CellValue | 5 | Количество колонок контента | |
unitColsXs | CellValue | 1 | Количество колонок единиц измерения | |
children | ReactNode | undefined | Контент поля |
Обёртка над полем для вывода подсказки, ошибок и предупреждений.
import { FieldWrapper } from '@n3/kit/FieldWrapper';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
help | string[] | null | Подсказки поля | |
errors | string[] | null | Ошибки поля | |
warnings | string[] | null | Предупреждения поля | |
showBackground | boolean | false | Менять ли фон в случае ошибки или предупреждения | |
children | ReactNode | null | Поле |
Стилизованный react-select
.
import { FilterSelect } from '@n3/kit/FilterSelect';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
small | boolean | false | Маленькое ли поле | |
isMulti | boolean | false | Множественный выбор | |
isClearable | boolean | true | Возможность сброса значения | |
hasError | boolean | false | Есть ли у поля ошибка | |
hasWarning | boolean | false | Есть ли у поля предупреждение | |
value | any | null | Значение поля | |
selectRef | Ref | ref для получения экземпляра react-select | ||
modalComponent | ComponentType | Компонент модального окна @prop {Function} onSelect - функция выбора значения @prop {Function} onCancel - функция закрытия модального окна без изменения значения | ||
modalProps | { [key: string]: any; } | Дополнительные props компонента модального окна | ||
isDisabled | boolean | false | Выключено ли поле | |
getOptionLabel | GetOptionLabel | null | Функция получения заголовка опции для вывода и фильтрации | |
labelKey | string | "label" | Ключ, для получения заголовка опции в случае, если не определено getOptionLabel Ключ для отображения текста поля, работает только в случае, если getOptionLabel не определён | |
getOptionValue | GetOptionValue | null | Функция получения значения опции | |
valueKey | string | "value" | Ключ, для получения значения опции в случае, если не определено getOptionValue Ключ для нахождения значения поля, работает только в случае, если getOptionValue не определён | |
onChange | ((nextValue: any) => void) | ((nextValue: any) => void) | "(): void => {}" | |
mainPlaceholder | string | "Выберите..." | Плейсхолдер компонента, который всегда отображается | |
options | + | OptionsType | GroupedOptionsType |
Стилизованный react-select-fetch
.
import { FilterSelectAjax } from '@n3/kit/FilterSelectAjax';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
small | boolean | false | Маленькое ли поле | |
isMulti | boolean | false | Множественный выбор | |
isClearable | boolean | true | Возможность сброса значения | |
hasError | boolean | false | Есть ли у поля ошибка | |
hasWarning | boolean | false | Есть ли у поля предупреждение | |
value | any | null | Значение поля | |
selectRef | Ref | ref для получения экземпляра react-select | ||
modalComponent | ComponentType | Компонент модального окна @prop {Function} onSelect - функция выбора значения @prop {Function} onCancel - функция закрытия модального окна без изменения значения | ||
modalProps | { [key: string]: any; } | Дополнительные props компонента модального окна | ||
isDisabled | boolean | false | Выключено ли поле | |
getOptionLabel | GetOptionLabel | null | Функция получения заголовка опции для вывода и фильтрации | |
labelKey | string | "label" | Ключ, для получения заголовка опции в случае, если не определено getOptionLabel Ключ для отображения текста поля, работает только в случае, если getOptionLabel не определён | |
getOptionValue | GetOptionValue | null | Функция получения значения опции | |
valueKey | string | "value" | Ключ, для получения значения опции в случае, если не определено getOptionValue Ключ для нахождения значения поля, работает только в случае, если getOptionValue не определён | |
onChange | ((nextValue: any) => void) | ((nextValue: any) => void) | "(): void => { }" | |
url | + | string | апи-url для запроса данных | |
queryParams | { [key: string]: any; } | Перманентные параметры запроса | ||
searchParamName | string | Ключ, по которому текст строки поиска будет добавлен к параметрам запроса | ||
pageParamName | string | Ключ, по которому номер текущей страницы будет добавлен к параметрам запроса | ||
offsetParamName | string | Ключ, по которому индекс первой опции для запроса будет добавлен к параметрам запроса | ||
mapResponse | MapResponse | Функция маппинга ответа сервера в формат react-select-async-paginate | ||
get | Get | Асинхронная функция запроса данных с сервера @param url - апи-url @param queryParams - параметры запроса @returns ответ сервера | ||
debounceTimeout | number | Задержка при отправке запросов | ||
cacheUniqs | + | any[] | Список значений при изменении одного из которых опции будут сброшены | |
mainPlaceholder | string | "Выберите..." | Плейсхолдер компонента, который всегда отображается |
Стилизованный react-select-async-paginate
.
import { FilterSelectAsync } from '@n3/kit/FilterSelectAsync';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
small | boolean | false | Маленькое ли поле | |
isMulti | boolean | false | Множественный выбор | |
isClearable | boolean | true | Возможность сброса значения | |
hasError | boolean | false | Есть ли у поля ошибка | |
hasWarning | boolean | false | Есть ли у поля предупреждение | |
value | any | null | Значение поля | |
selectRef | Ref | ref для получения экземпляра react-select | ||
modalComponent | ComponentType | Компонент модального окна @prop {Function} onSelect - функция выбора значения @prop {Function} onCancel - функция закрытия модального окна без изменения значения | ||
modalProps | { [key: string]: any; } | Дополнительные props компонента модального окна | ||
isDisabled | boolean | false | Выключено ли поле | |
getOptionLabel | GetOptionLabel | null | Функция получения заголовка опции для вывода и фильтрации | |
labelKey | string | "label" | Ключ, для получения заголовка опции в случае, если не определено getOptionLabel Ключ для отображения текста поля, работает только в случае, если getOptionLabel не определён | |
getOptionValue | GetOptionValue | null | Функция получения значения опции | |
valueKey | string | "value" | Ключ, для получения значения опции в случае, если не определено getOptionValue Ключ для нахождения значения поля, работает только в случае, если getOptionValue не определён | |
onChange | ((nextValue: any) => void) | ((nextValue: any) => void) | "(): void => {}" | |
loadOptions | LoadOptions<any, any> | Асинхронная функция запроса данных с сервера в формате react-select-async-paginate @param search - значение строки поиска @param prevOptions - список загруженных опций @param additional - дополнительные параметры запроса @returns ответ сервера | ||
additional | any | Дополнительные параметры первого запроса | ||
debounceTimeout | number | Задержка при отправке запросов | ||
cacheUniqs | + | any[] | Список значений при изменении одного из которых опции будут сброшены | |
mainPlaceholder | string | "Выберите..." | Плейсхолдер компонента, который всегда отображается |
Контейнер содержимого.
import { Grid } from '@n3/kit/Grid';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
centered | boolean | false | Добавить ли margin слева и справа | |
isFixedWidth | boolean | false | Не давать контенту сужаться |
Шапка страницы.
import { Header } from '@n3/kit/Header';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
logo | + | HeaderLogoParams | Логотип в левой части | |
isUserBlockHidden | boolean | false | Скрыть ли блок текущего пользователя (аватар + имя + дропдаун с действиями) | |
showAvatar | boolean | Отображать ли аватар текущего пользователя | ||
avatar | string | Аватар текщего пользователя (отобразится плейсхолдер в случае, если аватар не задан) | ||
userName | ReactNode | Имя текщего пользователя | ||
dropdownOptions | HeaderDropdownOption[] | Опции выпадающего меню | ||
leftBlock | ReactNode | undefined | Блок слева | |
menu | HeaderMenuItem[] | Левое меню | ||
rightMenu | HeaderMenuItem[] | Правое меню | ||
withPusher | boolean | false | Добавить ли dom-элемент для отступа сверху страницы, равного высоте шапки | |
counters | { [key: string]: number; } | Счётчики | ||
countersMaxNumber | number | Максимальное число в счётчиках | ||
collapsible | boolean | Отображение иконки раскрытия бокового меню на меленьких разрешениях | ||
openMenu | () => void | Функция раскрытия бокового меню | ||
isLogoCollapsible | boolean | false | Схлопывать ли логотип при схлопывании меню | |
menuCollapsed | boolean | false | Схлопнуто ли меню в иконки |
Компонент, задающий контент шапки. Должен быть использован внутри компонента Layout
.
import { HeaderLeftBlock } from '@n3/kit/Layout';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
children | + | ReactNode | Контент, который будет отображён в шапке страницы |
Компонент всплывающей подсказки.
import { Hint } from '@n3/kit/Hint';
// ...
<Hint
tooltip="Подсказка"
/>
Для кастомизации принимает свойства компонента Tooltip
.
Инпут.
import { Input } from '@n3/kit/Input';
import { useState } from 'react';
import { Input } from '@n3/kit/Input';
function Example() {
const [value, setValue] = useState('');
<Input
value={value}
onChange={(event) => {
setValue(event.target.value);
}}
/>
}
import { useState } from 'react';
import {
Input,
StyledInputButton,
} from '@n3/kit/Input';
function Example() {
const [value, setValue] = useState('');
<Input
value={value}
onChange={(event) => {
setValue(event.target.value);
}}
buttons={[
(inputProps, index) => (
<StyledInputButton
type="button"
key={index}
>
<FontAwesomeIcon
icon="cog"
/>
</StyledInputButton>
),
(inputProps, index) => (
<StyledInputButton
type="button"
key={index}
>
<FontAwesomeIcon
icon="file"
/>
</StyledInputButton>
),
]}
/>
}
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
component | InputComponent | Компонент корневого элемента инпута | ||
disabled | boolean | Выключено ли поле | ||
hasError | boolean | Есть ли у поля ошибка | ||
hasWarning | boolean | Есть ли у поля предупреждение | ||
small | boolean | Маленькое ли поле | ||
className | string | Дополнительный класс корневого компонента инпута | ||
isOnlyBorderBottom | boolean | Отображение без рамки только с подчёркиванием снизу | ||
buttons | RenderInputButton[] | Массив функций реднеда кнопок @param props - все props инпута @param index - индекс кнопки |
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
disabled | boolean | Кнопка выключена | ||
$small | boolean | Кнопка маленькая |
Поле ввода с маской.
import { InputMask } from '@n3/kit/InputMask';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
component | InputComponent | Компонент корневого элемента инпута | ||
disabled | boolean | Выключено ли поле | ||
hasError | boolean | Есть ли у поля ошибка | ||
hasWarning | boolean | Есть ли у поля предупреждение | ||
small | boolean | Маленькое ли поле | ||
className | string | Дополнительный класс корневого компонента инпута | ||
isOnlyBorderBottom | boolean | Отображение без рамки только с подчёркиванием снизу | ||
buttons | RenderInputButton[] | Массив функций реднеда кнопок @param renderProps - объект свойств для ренера | ||
mask | + | boolean | (string | RegExp)[] | ((value: string) => maskArray) | маска в формате react-text-mask |
Компонент, включающий в себя шапку и сайдбар.
import { Layout } from '@n3/kit/Layout';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
header | + | HeaderParams | Объект props компонента Header | |
sidebar | + | SidebarParams | Объект props компонента Sidebar | |
collapsible | boolean | true | Возможность скрытия меню на маленьких экранах | |
menuCollapsed | boolean | false | Схлопнуто ли меню в иконки | |
openedGroups | { [key: string]: boolean; } | "{}" | Объект, показывающий, какие группы открыты | |
counters | { [key: string]: number; } | "{}" | Счётчики | |
countersMaxNumber | number | null | Максимальное число в счётчиках | |
children | + | ((renderProps: LayoutContextValue) => ReactNode) | Функция рендера контента @param renderProps | |
onCollapseMenu | (nextValue: boolean) => void | "(): void => {}" | Обработчик схлопывания меню в иконки @param nextValue - новое состояние схлопнутости | |
onToggleGroup | (groupId: string, opened: boolean) => void | "(): void => {}" | Обработчик скрытия/раскрытия пунктов меню @param groupId - id группы @param opened - новое состояние открытости/закрытости |
Компонент, включающий в себя шапку и Grid
, центрирующий контент.
import { LayoutWithoutSidebar } from '@n3/kit/LayoutWithoutSidebar';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
header | + | HeaderParams | Объект props компонента Header | |
counters | { [key: string]: number; } | {} | Счётчики | |
countersMaxNumber | number | null | Максимальное число в счётчиках | |
hasGrid | boolean | true | Оборачивать ли содержимое в компонент Grid | |
grid | GridProps | {} | Объект props компонента Grid | |
children | ReactNode | null | Контент |
Лэйаут страницы списка.
import { ListLayout } from '@n3/kit/ListLayout';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
breadcrumbs | Breadcrumb[] | Массив объектов хлебных крошек | ||
title | + | node | Заголовок страницы | |
headerBlock | node | null | Блок, выводящийся между заголовком страницы и табами | |
actionsBlock | node | null | Блок действий (кнопки и т.п.) | |
children | node | null | Содержимое страницы |
Плейсхолдер пустого списка.
import {
ListPlaceholder,
ListPlaceholderWithoutFilters,
} from '@n3/kit/ListPlaceholder';
ListPlaceholder
- используется в случае, когда применены фильтрыListPlaceholderWithoutFilters
- используется в случае, когда ни один фильтр не применёнНазвание | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
children | ReactNode | 'Не найдено ни одной записи' | Заголовок | |
renderDescription | RenderDescription | null | Руководство к действиям @param params - параметры | |
reload | () => void | null | Функиця перезагрузки списка, по умолчанию очищает параметры адресной строки |
Индикация загрузки для определённой области.
import { LoadingArea } from '@n3/kit/LoadingArea';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
loading | boolean | true | Состояние загрузки | |
children | ReactNode | null |
Компонент, аналогичный Layout
, хранящий состояние открытости/закрытости пунктов в localStorage
.
Модальное окно.
import {
Modal,
modalSizes,
} from '@n3/kit/Modal';
...
<Modal
show={show}
onHide={toggleShow}
>
<Modal.Body>
<Modal.Title>
Заголовок модального окна
</Modal.Title>
<div>
Контент модального окна
</div>
</Modal.Body>
<Modal.Footer>
Футер модального окна
</Modal.Footer>
</Modal>
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
size | enum - modalSizes.DEFAULT - modalSizes.SMALL | modalSizes.DEFAULT | Размер модального окна | |
show | + | bool | Отображается ли модальное окно | |
hasCloseButton | bool | true | Отображается ли кнопка закрытия окна | |
onHide | + | func | Обработчик закрытия модального окна | |
isHideOnBackdropClick | bool | true | Закрывать ли окно при нажатии вне окна | |
children | node | null |
Поле выбора из модального окна.
import { ModalSelect } from '@n3/kit/ModalSelect';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
renderModal | + | (renderProps: ModalSelectButtonModalRenderProps<ValueType>) => ReactNode | Функция рендера содержимого модального окна | |
disabled | boolean | false | Выключено ли поле | |
hasError | boolean | false | Есть ли у поля ошибка | |
hasWarning | boolean | false | Есть ли у поля предупреждение | |
text | + | string | Текст, выводящийся в поле | |
placeholder | string | "" | ||
onChange | (nextValue: any) => void | "(): void => {}" | Обработчик изменения значения поля |
Кнопка, открывающая модальное окно для выбора.
import { ModalSelectButton } from '@n3/kit/ModalSelectButton';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
className | string | "" | ||
renderModal | + | (renderProps: ModalSelectButtonModalRenderProps<ValueType>) => ReactNode | Функция рендера содержимого модального окна | |
disabled | boolean | false | ||
onSelectFromModal | (nextValue: any) => void | "(): void => {}" |
Лэйаут страницы списка внутри родительской сущности.
import { NestedListLayout } from '@n3/kit/NestedListLayout';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
breadcrumbs | Breadcrumb[] | Массив объектов хлебных крошек | ||
parentTitle | + | node | Заголовок родительской сущности | |
parentActionsBlock | node | Блок действий у заголовка родительской сущности (кнопки и т.п.) | ||
parentStatus | node | null | Статус | |
parentStatusColor | TagColor | undefined | Цвет тэга статуса | |
headerBlock | node | null | Блок, выводящийся между заголовком страницы и табами | |
tabs | Tab[] | Табы родительской сущности | ||
currentTab | + | any | id выбранного таба | |
title | + | node | Заголовок страницы | |
actionsBlock | node | null | Блок действий (кнопки и т.п.) | |
children | node | null | Содержимое страницы |
Пример использования:
import { NestedRoutesLayout } from '@n3/kit/NestedRoutesLayout';
// ...
const data = await fetch(/* ... */);
const NestedRoute = ({
Layout,
payload,
}) => (
<Layout
title="Вложенный заголовок"
breadcrumbs={[{
url: null,
title: 'Дополнительная крошка',
}]}
>
Контент
</Layout>
);
<NestedRoutesLayout
breadcrumbs={[{
url: '/',
title: 'Хлебная крошка',
}]}
title="Основной заголовок"
tabs={[
{
id: 'tabId',
title: 'Заголовок таба',
to: '/tab/',
component: NestedRoute,
},
]}
payload={data}
/>
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
breadcrumbs | + | Breadcrumb[] | Массив объектов хлебных крошек | |
title | + | node | Заголовок страницы | |
actionsBlock | node | Блок действий у заголовка сущности (кнопки и т.п.) | ||
status | node | null | Статус | |
statusColor | TagColor | undefined | Цвет тэга статуса | |
headerBlock | node | null | Блок, выводящийся между заголовком страницы и табами | |
tabs | NestedRoutesLayoutTab<Payload>[] | Табы | ||
redirectFrom | string | null | Переадресация из | |
redirectTo | string | null | Переадресация в | |
payload | Payload | null | Данные, которые будут переданы во вложенные страницы |
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
breadcrumbs | Breadcrumb[] | Дополнительные хлебные крошки | ||
title | node | Заголовок вложенной страницы | ||
actionsBlock | node | Блок действий вложенной страницы | ||
children | node | null | Содержимое страницы |
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
id | + | TabId | id таба | |
title | + | node | Заголовок таба | |
path | string | Путь страницы для react-router-dom , если не определено, используется to | ||
to | + | string | url страницы | |
component | + | ComponentType<NestedRouteComponentProps<any, any>> | null | Компонент страницы |
import { NestedShowLayout } from '@n3/kit/NestedShowLayout';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
breadcrumbs | Breadcrumb[] | Массив объектов хлебных крошек | ||
title | + | node | Заголовок страницы | |
actionsBlock | node | Блок действий у заголовка сущности (кнопки и т.п.) | ||
status | node | null | Статус | |
statusColor | TagColor | undefined | Цвет тэга статуса | |
headerBlock | node | null | Блок, выводящийся между заголовком страницы и табами | |
tabs | Tab[] | Табы | ||
currentTab | + | any | id выбранного таба | |
children | node | null | Содержимое страницы |
Компонент выбора количества элементов на странице для приложений на базе @n3/kit
.
import { PageSizeSelect } from '@n3/kit/PageSizeSelect';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
start | + | number | Порядковый номер первого элемента | |
end | + | number | Порядковый номер последнего элемента | |
count | + | number | Общее количество элементов | |
value | + | number | Выбранное значение | |
options | number[] | [20, 40, 100] | Список возможных значений | |
onChange | + | (nextValue: number) => void | Обработчик изменения значения @param nextValue - новое значение | |
toggleButtonId | string | '' | id кнопки открытия/закрытия меню | |
wrapperId | string | '' | id корневого элемента |
Заголовок страницы.
import { PageTitle } from '@n3/kit/PageTitle';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
pageType | enum - 'list' - 'form' - 'parent' | 'list' | Тип страницы | |
actionsBlock | ReactNode | null | Блок действий (кнопки и т.п.) | |
status | ReactNode | null | Статус | |
statusColor | TagColor | 'gray | Цвет тэга статуса | |
children | node | null | Заголовок страницы |
Пагинатор.
import { Paginator } from '@n3/kit/Paginator';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
page | + | number | Текущая страница пагинатора, начиная с 1 | |
pageCount | + | number | Количество страниц | |
hrefBuilder | func | undefined | Функция генерации атрибута href компонента <a> @param {number} page - номер страницы, начиная с 1 | |
onPageChange | + | func | Обработчик изменения страницы @param {number} page - номер страницы, начиная с 1 | |
wrapperId | string | id корневого dom-элемента |
Парсинг состояния Layout
из localStorage
.
import { parseLayoutFromLocalStorage } from '@n3/kit/LocalStorageLayout';
Компонент для задания глобальных параметров компонентов.
import { Provider } from '@n3/kit/Provider';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
children | ReactNode | undefined | ||
theme | + | ThemeType | Тема в формате @n3/css-base |
Радиокнопка.
import { Radio } from '@n3/kit/Radio';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
value | + | ReactText | value html-элемента input, также передаётся в колбэке onChange | |
checked | + | boolean | выбрано | |
disabled | boolean | false | выключено | |
name | string | "" | name html-элемента input | |
label | ReactNode | null | текст/контент, выводящийся рядом с радио | |
onChange | (value: ReactText) => void | (): void => {} | хэндлер изменения значения, вызывается с параметрами: (newChecked) |
Группа радиокнопок.
import { RadioGroup } from '@n3/kit/RadioGroup';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
inline | boolean | false | инлайновый вывод | |
name | string | "" | name каждого html-элемента input | |
value | ReactText | null | значение выбранной опции | |
disabled | boolean | false | выключена ли данная группа радио | |
options | + | Record<string, any>[] | список опций данной группы радио | |
valueKey | string | "value" | ключ, по которому хранятся значения в объектах options | |
labelKey | string | "label" | ключ, по которому хранятся заголовки в объектах options | |
onChange | (value: ReactText) => void | "(): void => {}" | хэндлер изменения значения |
Кнопка удаления.
import { RemoveButton } from '@n3/kit/RemoveButton';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
color | enum - buttonColors.DEFAULT - buttonColors.PRIMARY - buttonColors.TERTIARY - buttonColors.DANGER | undefined | Цвет кнопки | |
size | enum - buttonSizes.DEFAULT - buttonSizes.SMALL | undefined | Размер кнопки | |
disabled | bool | false | Выключена ли кнопка | |
children | + | node | ||
remove | + | func | Асинхронная функция удаления | |
onRemoveSuccess | func | undefined | Обработчик успешного удаления | |
approveTitle | node | undefined | Заголовок подтверждения | |
approveContent | node | undefined | Текст подтверждения | |
approveButtonText | + | string | Текст кнопки подтвеждения | |
approveButtonColor | enum - buttonColors.DEFAULT - buttonColors.PRIMARY - buttonColors.TERTIARY - buttonColors.DANGER | buttonColors.DANGER | Цвет кнопки подтверждения | |
cancelButtonText | + | string | Текст кнопки отмены | |
errorsPath | string | 'response.data.detail' | Путь до объекта ошибкок в случае ошибки удаления | |
redirectTo | any | undefined | Адрес редиректа в случае успешного удаления | |
notification | object | undefined | Сообщение @n3/browser-messages в случае успешного удаления |
Повторяющиеся блоки.
import { Repeat } from '@n3/kit/Repeat';
<Repeat
title="Группа полей"
>
<Repeat.Block
index={0}
>
Блок №1
</Repeat.Block>
<Repeat.Block
index={1}
>
Блок №2
</Repeat.Block>
<Repeat.Block
index={2}
>
Блок №3
</Repeat.Block>
</Repeat>
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
disabled | boolean | false | Выключена ли кнопка добавления | |
title | ReactNode | null | Заголовок | |
addButtonTitle | ReactNode | "Добавить ещё" | Текст кнопки добавления | |
handleAdd | () => void | null | Обработчик нажания на кнопку добавления, если не определён, кнопка добавления не отображается |
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
disabled | boolean | false | Выключена ли кнопка удаления | |
title | ReactNode | null | Заголовок | |
index | + | number | Индекс в последовательности блоков | |
hasHorizontalPadding | boolean | true | Есть ли отступ от левой и правой границ до контента | |
handleRemove | (index: number) => void | null | Обработчик нажания на кнопку удаления, если не определён, кнопка удаления не отображается @param index - индекс блока в массиве |
import { Row } from '@n3/kit/Row';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
isWrap | boolean | false | Рендер внутренних блоков c переносами | |
$rowGap | string | number | undefined | Отступ между строками Если число, берётся соответсвующий отступ из темы Если строка, она напрямую используется для свойства rowGap |
Поле поиска.
import { SearchInput } from '@n3/kit/SearchInput';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
component | InputComponent | Компонент корневого элемента инпута | ||
disabled | boolean | false | Выключено ли поле Выключено ли поле | |
hasError | boolean | Есть ли у поля ошибка | ||
hasWarning | boolean | Есть ли у поля предупреждение | ||
small | boolean | Маленькое ли поле | ||
className | string | Дополнительный класс корневого компонента инпута | ||
isOnlyBorderBottom | boolean | Отображение без рамки только с подчёркиванием снизу | ||
buttons | RenderInputButton[] | Массив функций реднеда кнопок @param props - все props инпута @param index - индекс кнопки | ||
value | + | string | Значение поля | |
onChange | (event: ChangeEvent) => void | "(): void => { }" | Обработчик изменения инпута @param event - событие | |
onValueChange | (nextValue: string) => void | "(): void => { }" | Обработчик изменения значения поля (в т.ч. при нажатии на кнопку сброса) @param newValue - новое значение поля | |
handleClear | () => void | "(): void => { }" | Обработчик нажатия на кнопку сброса | |
handleSearch | (searchValue: string) => void | "(): void => { }" | Обработчик нажатия на кнопку поиска @param searchValue - текущее значение поля поиска |
Секция.
import { Section } from '@n3/kit/Section';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
title | string | null | Заголовок секции | |
titleColsXs | CellValue | 3 | Количество колонок заголовка | |
contentColsXs | CellValue | 8 | Количество колонок контента | |
hint | ReactNode | null | Подсказка, выводящаяся у заголовка поля | |
isEdit | boolean | false | Используется ли внутри формы редактирования | |
children | ReactNode | null | Контент |
Селект.
import { Select } from '@n3/kit/Select';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
small | boolean | false | Маленькое ли поле | |
isMulti | boolean | false | Множественный выбор | |
isClearable | boolean | true | Возможность сброса значения | |
hasError | boolean | false | Есть ли у поля ошибка | |
hasWarning | boolean | false | Есть ли у поля предупреждение | |
value | any | null | Значение поля | |
selectRef | Ref | ref для получения экземпляра react-select | ||
renderModal | (renderProps: ModalSelectButtonModalRenderProps<ValueType>) => ReactNode | undefined | Функция рендера содержимого модального окна | |
isDisabled | boolean | false | Выключено ли поле | |
getOptionLabel | GetOptionLabel | null | Функция получения заголовка опции для вывода и фильтрации | |
labelKey | string | "label" | Ключ, для получения заголовка опции в случае, если не определено getOptionLabel | |
getOptionValue | GetOptionValue | null | Функция получения значения опции | |
valueKey | string | "value" | Ключ, для получения значения опции в случае, если не определено getOptionValue | |
onChange | (nextValue: any) => void | "(): void => {}" | Обработчик изменения значения поля @param nextValue - новое значение поля | |
options | + | OptionsType | GroupedOptionsType |
Стилизованный react-select-fetch
.
import { SelectAjax } from '@n3/kit/SelectAjax';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
small | boolean | false | Маленькое ли поле | |
isMulti | boolean | false | Множественный выбор | |
isClearable | boolean | true | Возможность сброса значения | |
hasError | boolean | false | Есть ли у поля ошибка | |
hasWarning | boolean | false | Есть ли у поля предупреждение | |
value | any | null | Значение поля | |
selectRef | Ref | ref для получения экземпляра react-select | ||
renderModal | (renderProps: ModalSelectButtonModalRenderProps<ValueType>) => ReactNode | undefined | Функция рендера содержимого модального окна | |
isDisabled | boolean | false | Выключено ли поле | |
getOptionLabel | GetOptionLabel | null | Функция получения заголовка опции для вывода и фильтрации | |
labelKey | string | "label" | Ключ, для получения заголовка опции в случае, если не определено getOptionLabel | |
getOptionValue | GetOptionValue | null | Функция получения значения опции | |
valueKey | string | "value" | Ключ, для получения значения опции в случае, если не определено getOptionValue | |
onChange | (nextValue: any) => void | "(): void => {}" | Обработчик изменения значения поля @param nextValue - новое значение поля | |
url | + | string | апи-url для запроса данных | |
queryParams | { [key: string]: any; } | Перманентные параметры запроса | ||
searchParamName | string | Ключ, по которому текст строки поиска будет добавлен к параметрам запроса | ||
pageParamName | string | Ключ, по которому номер текущей страницы будет добавлен к параметрам запроса | ||
offsetParamName | string | Ключ, по которому индекс первой опции для запроса будет добавлен к параметрам запроса | ||
mapResponse | MapResponse | Функция маппинга ответа сервера в формат react-select-async-paginate | ||
get | Get | Асинхронная функция запроса данных с сервера @param url - апи-url @param queryParams - параметры запроса @returns ответ сервера | ||
debounceTimeout | number | Задержка при отправке запросов | ||
cacheUniqs | + | any[] | Список значений при изменении одного из которых опции будут сброшены |
Стилизованный react-select-async-paginate
.
import { SelectAsync } from '@n3/kit/SelectAsync';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
small | boolean | false | Маленькое ли поле | |
isMulti | boolean | false | Множественный выбор | |
isClearable | boolean | true | Возможность сброса значения | |
hasError | boolean | false | Есть ли у поля ошибка | |
hasWarning | boolean | false | Есть ли у поля предупреждение | |
value | any | null | Значение поля | |
selectRef | Ref | ref для получения экземпляра react-select | ||
renderModal | (renderProps: ModalSelectButtonModalRenderProps<ValueType>) => ReactNode | undefined | Функция рендера содержимого модального окна | |
isDisabled | boolean | false | Выключено ли поле | |
getOptionLabel | GetOptionLabel | null | Функция получения заголовка опции для вывода и фильтрации | |
labelKey | string | "label" | Ключ, для получения заголовка опции в случае, если не определено getOptionLabel | |
getOptionValue | GetOptionValue | null | Функция получения значения опции | |
valueKey | string | "value" | Ключ, для получения значения опции в случае, если не определено getOptionValue | |
onChange | (nextValue: any) => void | "(): void => {}" | Обработчик изменения значения поля @param nextValue - новое значение поля | |
loadOptions | LoadOptions<any, any> | Асинхронная функция запроса данных с сервера в формате react-select-async-paginate @param search - значение строки поиска @param prevOptions - список загруженных опций @param additional - дополнительные параметры запроса @returns ответ сервера | ||
additional | any | Дополнительные параметры первого запроса | ||
debounceTimeout | number | Задержка при отправке запросов | ||
cacheUniqs | + | any[] | Список значений при изменении одного из которых опции будут сброшены |
Всплывающее подтверждение.
import {
showConfirm,
ConfirmError,
} from '@n3/kit/showConfirm';
// ...
const result = await showConfirm({
title: 'Таблица «Отчет 23.10.2019»',
content: 'Вы сможете переместить таблицу обратно в любое время.',
approveButtonText: 'Переместить',
cancelButtonText: 'Оставить',
});
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
modalSize | enum - modalSizes.SMALL - modalSizes.DEFAULT | modalSizes.SMALL | Размер модального окна | |
title | string | null | Заголовок | |
content | node | null | Текст | |
approve | func | null | Асинхронная функция подтверждения, может закончиться с исключением ConfirmError({ title, message }) | |
cancelButtonText | + | string | Текст кнопки отмены | |
approveButtonText | + | string | Текст кнопки подтвеждения | |
approveButtonColor | enum - buttonColors.DEFAULT - buttonColors.PRIMARY - buttonColors.TERTIARY - buttonColors.DANGER | buttonColors.PRIMARY | Цвет кнопки подтверждения | |
resolveModal | + | func |
Сайдбар.
import { Sidebar } from '@n3/kit/Sidebar';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
menuCollapsible | boolean | true | Возможность схлопывания меню в иконки | |
linksGroups | + | (SidebarLinksGroup | SidebarLink)[] | Описание пунктов | |
counters | { [key: string]: number; } | "{}" | Счётчики | |
countersMaxNumber | number | null | Максимальное число в счётчиках | |
showCountersInOpenedState | boolean | false | Показывать ли счётчики у открытых групп | |
collapsible | boolean | true | Возможность скрытия меню на маленьких экранах | |
collapsed | boolean | true | Скрыто ли меню на маленьком экране | |
openedGroups | { [key: string]: boolean; } | "{}" | Объект, показывающий, какие группы открыты | |
openedByDefault | boolean | false | Открыты ли по умолчанию группы, id которых отстуствуют в openedGroups | |
menuCollapsed | boolean | false | Схлопнуто ли меню в иконки | |
closeMenu | () => void | "(): void => {}" | Обработчик закрытия меню | |
setMenuCollapsed | (nextValue: boolean) => void | "(): void => {}" | Обработчик схлопывания меню в иконки @param nextValue - новое состояние схлопнутости | |
onToggleGroup | (groupId: string, opened: boolean) => void | "(): void => {}" | Обработчик скрытия/раскрытия пунктов меню @param groupId - id группы @param opened - новое состояние открытости/закрытости |
link
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
type | + | "link" | ||
id | + | string | ||
title | + | ReactNode | Заголовок ссылки | |
renderIcon | RenderSidebarIcon | null | Функция рендера иконки первого уровня | |
payload | + | { url: string; target?: string; isAnchor?: boolean; } |
group
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
type | + | "group" | ||
id | + | string | ||
title | + | ReactNode | Заголовок группы | |
renderIcon | RenderSidebarIcon | null | Функция рендера иконки первого уровня | |
payload | + | { links: (SidebarLinksGroup | SidebarLink)[]; } |
Индикатор сортировки.
import { SortIndicator } from '@n3/kit/SortIndicator';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
iconUpClassName | string | "" | Дополнительный класс иконки "вверх" | |
iconDownClassName | string | "" | Дополнительный класс иконки "вниз" | |
isActive | boolean | false | Активна ли сортировка по выбранному параметру | |
asc | boolean | true | По возрастанию ли сортировка |
Переключатель сортировки.
import { SortSwitch } from '@n3/kit/SortSwitcher';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
activeParam | string | null | Параметр, по которому произведена сортировка | |
param | + | string | Текущий параметр для сортировки | |
asc | + | boolean | Сортировка по возрастанию | |
isDefaultSortAsc | boolean | true | Сортировка по умолчанию по возрастанию | |
setSorting | + | (paramName: string, asc: boolean) => void | Обработчик изменения параметра или порядка сортировки @param paramName - параметр сортировки @param asc - сортировка по возрастанию | |
children | ReactNode | null | Заголовок |
Компоненты для создания таблиц.
import {
Table,
Th,
Td,
} from '@n3/kit/Table';
// ...
<Table>
<thead>
<tr>
<Th rowSpan={2}>#</Th>
<Th colSpan={2}>Name of person</Th>
<Th rowSpan={2}>Username</Th>
</tr>
<tr>
<Th>First Name</Th>
<Th>Last Name</Th>
</tr>
</thead>
<tbody>
<tr>
<Td>1</Td>
<Td>Mark</Td>
<Td>Otto</Td>
<Td>@mdo</Td>
</tr>
<tr>
<Td>2</Td>
<Td>Jacob</Td>
<Td>Thornton</Td>
<Td>@fat</Td>
</tr>
<tr>
<Td>3</Td>
<Td colSpan="2">Larry the Bird</Td>
<Td>@twitter</Td>
</tr>
</tbody>
<tfoot>
<tr>
<Td>#</Td>
<Td>First Name</Td>
<Td>Last Name</Td>
<Td>Username</Td>
</tr>
</tfoot>
</Table>
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
lightenRow | number | null | Номер строки, для которой применена подсветка |
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
className | string | '' | ||
isMinWidth | bool | false | Добавить width: 1px для рендера узких колонок (иконкий действий и т.п.) | |
isNowrap | bool | false | Добавить white-space: nowrap | |
hasWordBreak | bool | false | Добавить свойства для разбиения строк в случае переполнения | |
textAlign | enum - 'left' - 'right' - 'center' | 'left' | ||
width | union - string - number | null |
Компонент действий со строками таблицы.
import { TableActions } from '@n3/kit/TableActions';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
actions | + | arrayOf [ shape { - render func - disabled bool - label string - onClick func - renderIcon func } ] | Список действий |
Табы.
import { Tabs } from '@n3/kit/Tabs';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
tabs | + | arrayOf [ shape { - id union - number - string - title node - renderIcon func } ] | Массив табов для рендера | |
current | union - number - string | null | id выбранного таба | |
recountOnResize | bool | false | Пересчитывать ли состояние скрытий/показа табов при изменении размеров окна | |
renderTab | func | undefined | Функция рендера таба @param {Object} renderProps @param {string} renderProps.className @param {Function} renderProps.onClick @param {ReactNode} renderProps.label - заголовок таба @param {Object} renderProps.tab - объект таба | |
setCurrentTab | func | undefined | Обработчик изменения текущего таба @param {string | |
renderContent | func | (contentNode) => contentNode | Функция рендера табов для возможности создания обёртки |
Тег.
import { Tag } from '@n3/kit/Tag';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
preset | TagPresetType | 'light_gray' | Цвет тега | |
textColor | string | undefined | Переопределённый цвет текста (только в случае, есле цветов из preset недостаточно) | |
backgrondColor | string | undefined | Переопределённый цвет фона (только в случае, есле цветов из preset недостаточно) | |
borderColor | string | undefined | Переопределённый цвет границы (только в случае, есле цветов из preset недостаточно) | |
component | TagComponent | 'span' | Компонент тега | |
className | string | '' | Дополнительный класс тега | |
size | TagSize | 'medium' | Размер (работает только в стандартном стиле) | |
variant | TagVariant | 'default' | Стиль отображения тега |
import { Toggle } from '@n3/kit/Tag';
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
checked | + | boolean | выбран ли данный toggle | |
disabled | boolean | false | Выключено ли поле | |
name | string | '' | name html-элемента input, а также аргумент колбэка onChange | |
value | ToggleValue | '' | value html-элемента input, а также аргумент колбэка onChange | |
label | ReactNode | '' | текст/контент, выводящийся рядом | |
small | boolean | false | Маленький ли toggle | |
className | string | '' | Дополнительный класс корневого компонента | |
inputProps | `Omit<HTMLProps, 'ref' | 'as'>` | undefined | |
onChange | OnToggleChange | undefined | хэндлер изменения значения, вызывается с параметрами: (nextChecked, value, name) |
Компонент для создания всплывающих подсказок.
import { Tooltip } from '@n3/kit/Tooltip';
// ...
<Tooltip
tooltip="Подсказка"
>
{({
innerProps,
ref,
}) => (
<span
{...innerProps}
ref={ref}
>
Наведите, чтобы увидеть подсказку
</span>
)}
</Tooltip>
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
tooltip | + | node | Контент тултипа | |
placement | string | 'bottom' | Расположение popper-компонента | |
popperStyle | objectOf { any } | {} | Дополнительные стили popper-компонента | |
popperProps | objectOf { any } | {} | Дополнительные опции popper-компонента | |
children | + | func | Функция рендера тултипа @param {Object} renderProps @param {Object} renderProps.ref - ref dom-элемента, открывающего тултип @param {Object} renderProps.innerProps - props, которые должны переданы dom-элементу, открывающему тултип @param {boolean} renderProps.isOpen - открыт ли тултип |
import { Typography } from '@n3/kit/Typography';
// ...
<Typography
variant="h3"
align="center"
>
Текст
</Typography>
Название | Обязательность | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
className | string | '' | Дополнительный класс | |
variant | TypographyVariantType | 'body01' | Вариант текста | |
align | string | 'inherit' | Выравнивание в блоке | |
color | string | undefined | Цвет текста | |
component | ComponentType<any> | undefined | Компонент | |
children | TypographyVariantType | undefined | ||
...rest | `Record<string, unknown>`` | Дополнительные props компонента |
Хук для получения состояния Layout
(возвращает null
, если Layout
не используется).
import { useLayoutState } from '@n3/kit/Layout';
Хук для создания кастомной кнопки удаления.
import type {
ReactElement,
ReactNode,
} from 'react';
import {
useRemoveButton,
} from '@n3/kit/useRemoveButton';
import type {
UseRemoveButtonParams,
} from '@n3/kit/useRemoveButton';
type CustomRemoveButtonProps = UseRemoveButtonParams & {
children?: ReactNode;
};
function CustomRemoveButton(props: CustomRemoveButtonProps): ReactElement {
const {
children,
remove,
onRemoveSuccess,
approveTitle,
approveContent,
approveButtonText,
approveButtonColor,
cancelButtonText,
errorsPath,
redirectTo,
notification,
} = props;
const {
isRemoving,
onClick,
} = useRemoveButton({
remove,
onRemoveSuccess,
approveTitle,
approveContent,
approveButtonText,
approveButtonColor,
cancelButtonText,
errorsPath,
redirectTo,
notification,
});
return (
<button
type="button"
disabled={isRemoving}
onClick={onClick}
>
{children}
</button>
);
}
FAQs
React components for n3 interfaces
We found that @n3/kit demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
Research
Security News
Socket researchers have discovered multiple malicious npm packages targeting Solana private keys, abusing Gmail to exfiltrate the data and drain Solana wallets.
Security News
PEP 770 proposes adding SBOM support to Python packages to improve transparency and catch hidden non-Python dependencies that security tools often miss.