fui-material 2.7.12 → 2.7.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/f-ui-kit.es.js +281 -192
- package/dist/f-ui-kit.es.js.map +1 -1
- package/dist/f-ui-kit.umd.js +2 -2
- package/dist/f-ui-kit.umd.js.map +1 -1
- package/dist/index.css +1 -1
- package/dist/types/material/FSegmentedControl/FSegmentedControl.d.ts +92 -0
- package/dist/types/material/FSegmentedControl/index.d.ts +1 -0
- package/dist/types/material/index.d.ts +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { type ReactNode, type CSSProperties, type MouseEvent } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Описание элемента сегментированного контрола.
|
|
4
|
+
*
|
|
5
|
+
* @interface ISegmentedItem
|
|
6
|
+
* @template T Тип идентификатора (по умолчанию `string | number`)
|
|
7
|
+
*/
|
|
8
|
+
export interface ISegmentedItem<T = string | number> {
|
|
9
|
+
/**
|
|
10
|
+
* Уникальный идентификатор сегмента.
|
|
11
|
+
* @type {T}
|
|
12
|
+
*/
|
|
13
|
+
id: T;
|
|
14
|
+
/**
|
|
15
|
+
* Текстовая метка сегмента.
|
|
16
|
+
* @type {string}
|
|
17
|
+
*/
|
|
18
|
+
label: string;
|
|
19
|
+
/**
|
|
20
|
+
* Иконка сегмента (отображается перед текстом).
|
|
21
|
+
* @type {ReactNode | undefined}
|
|
22
|
+
*/
|
|
23
|
+
icon?: ReactNode;
|
|
24
|
+
/**
|
|
25
|
+
* Бейдж со счетчиком или статусом.
|
|
26
|
+
* @type {string | number | undefined}
|
|
27
|
+
*/
|
|
28
|
+
badge?: string | number;
|
|
29
|
+
/**
|
|
30
|
+
* Флаг блокировки отдельного сегмента.
|
|
31
|
+
* @type {boolean | undefined}
|
|
32
|
+
*/
|
|
33
|
+
disabled?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Кастомный обработчик клика для конкретного сегмента.
|
|
36
|
+
* Если внутри вызвать `e.preventDefault()`, стандартный вызов `onChange` будет отменен.
|
|
37
|
+
* @type {((e: MouseEvent<HTMLButtonElement>, item: ISegmentedItem<T>) => void) | undefined}
|
|
38
|
+
*/
|
|
39
|
+
onClick?: (e: MouseEvent<HTMLButtonElement>, item: ISegmentedItem<T>) => void;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Интерфейс пропсов для компонента `FSegmentedControl`.
|
|
43
|
+
*
|
|
44
|
+
* @interface IFSegmentedControlProps
|
|
45
|
+
* @template T Тип идентификатора активного элемента
|
|
46
|
+
*/
|
|
47
|
+
export interface IFSegmentedControlProps<T = string | number> {
|
|
48
|
+
/**
|
|
49
|
+
* Массив элементов для отображения в контроле.
|
|
50
|
+
* @type {ISegmentedItem<T>[]}
|
|
51
|
+
*/
|
|
52
|
+
items: ISegmentedItem<T>[];
|
|
53
|
+
/**
|
|
54
|
+
* Идентификатор текущего активного элемента.
|
|
55
|
+
* @type {T}
|
|
56
|
+
*/
|
|
57
|
+
activeId: T;
|
|
58
|
+
/**
|
|
59
|
+
* Callback, вызываемый при смене активного сегмента.
|
|
60
|
+
* @type {(id: T) => void}
|
|
61
|
+
*/
|
|
62
|
+
onChange: (id: T) => void;
|
|
63
|
+
/**
|
|
64
|
+
* Размер контрола.
|
|
65
|
+
* @type {'sm' | 'md' | 'lg' | undefined}
|
|
66
|
+
* @default 'md'
|
|
67
|
+
*/
|
|
68
|
+
size?: "sm" | "md" | "lg";
|
|
69
|
+
/**
|
|
70
|
+
* Дополнительный класс для внешнего контейнера.
|
|
71
|
+
* @type {string | undefined}
|
|
72
|
+
*/
|
|
73
|
+
className?: string;
|
|
74
|
+
/**
|
|
75
|
+
* Инлайновые стили для внешнего контейнера.
|
|
76
|
+
* @type {CSSProperties | undefined}
|
|
77
|
+
*/
|
|
78
|
+
style?: CSSProperties;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Компонент `FSegmentedControl` — переключатель группы опций с анимированным ползунком.
|
|
82
|
+
*
|
|
83
|
+
* Особенности:
|
|
84
|
+
* - Поддерживает размеры `sm`, `md`, `lg`.
|
|
85
|
+
* - Автоматически рассчитывает ширину и смещение активного элемента.
|
|
86
|
+
* - Поддерживает иконки, бейджи, disabled-состояния элементов и персональные `onClick`.
|
|
87
|
+
*/
|
|
88
|
+
export declare const FSegmentedControl: {
|
|
89
|
+
<T extends string | number>({ items, activeId, onChange, size, className, style, }: IFSegmentedControlProps<T>): import("react").JSX.Element;
|
|
90
|
+
displayName: string;
|
|
91
|
+
};
|
|
92
|
+
export default FSegmentedControl;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "./FSegmentedControl";
|
|
@@ -49,3 +49,4 @@ export { default as FMenuBlockLinks } from "./MenuLinks/FMenuBlockLinks";
|
|
|
49
49
|
export { default as FMenuLinks } from "./MenuLinks/FMenuLinks";
|
|
50
50
|
export { default as FTooltip } from "./FTooltip";
|
|
51
51
|
export { default as FSearchableSelect } from "./FSearchableSelect";
|
|
52
|
+
export { default as FSegmentedControl } from "./FSegmentedControl";
|