@alfalab/core-components-input-autocomplete 9.3.26 → 9.4.1

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.
Files changed (161) hide show
  1. package/Component-3885b0d7.d.ts +1 -1
  2. package/Component-425c8522.d.ts +53 -0
  3. package/Component-5e1b8383.d.ts +5 -0
  4. package/Component-aed0af6e.d.ts +11 -0
  5. package/Component-b4e70cb0.d.ts +22 -0
  6. package/Component-bdb4c6b9.d.ts +8 -0
  7. package/Component-ebda875c.d.ts +101 -0
  8. package/Component-f12ee135.d.ts +71 -0
  9. package/Component.desktop.d.ts +1 -1
  10. package/Component.mobile-e81c389f.d.ts +38 -0
  11. package/Component.mobile.d.ts +1 -1
  12. package/Component.mobile.js +7 -8
  13. package/Component.modal.mobile.d.ts +123 -0
  14. package/Component.modal.mobile.js +77 -0
  15. package/Component.responsive.d.ts +2 -2
  16. package/Component.responsive.js +1 -0
  17. package/Context-bdb4c6b9.d.ts +4 -0
  18. package/ResponsiveContext-baf4875b.d.ts +5 -0
  19. package/autocomplete-field/Component.d.ts +1 -1
  20. package/autocomplete-field/Component.js +1 -1
  21. package/autocomplete-field/index.css +2 -2
  22. package/autocomplete-mobile-field/Component.d.ts +1 -1
  23. package/autocomplete-mobile-field/Component.js +1 -1
  24. package/autocomplete-mobile-field/index.css +8 -8
  25. package/consts-f777ba1a.d.ts +2 -0
  26. package/cssm/Component-3885b0d7.d.ts +1 -1
  27. package/cssm/Component-425c8522.d.ts +53 -0
  28. package/cssm/Component-5e1b8383.d.ts +5 -0
  29. package/cssm/Component-aed0af6e.d.ts +11 -0
  30. package/cssm/Component-b4e70cb0.d.ts +22 -0
  31. package/cssm/Component-bdb4c6b9.d.ts +8 -0
  32. package/cssm/Component-ebda875c.d.ts +101 -0
  33. package/cssm/Component-f12ee135.d.ts +71 -0
  34. package/cssm/Component.desktop.d.ts +1 -1
  35. package/cssm/Component.mobile-e81c389f.d.ts +38 -0
  36. package/cssm/Component.mobile.d.ts +1 -1
  37. package/cssm/Component.mobile.js +5 -4
  38. package/cssm/Component.modal.mobile.d.ts +123 -0
  39. package/cssm/Component.modal.mobile.js +79 -0
  40. package/cssm/Component.responsive.d.ts +2 -2
  41. package/cssm/Context-bdb4c6b9.d.ts +4 -0
  42. package/cssm/ResponsiveContext-baf4875b.d.ts +5 -0
  43. package/cssm/autocomplete-field/Component.d.ts +1 -1
  44. package/cssm/autocomplete-mobile-field/Component.d.ts +1 -1
  45. package/cssm/consts-f777ba1a.d.ts +2 -0
  46. package/cssm/hook-b4e70cb0.d.ts +73 -0
  47. package/cssm/index-136acbb1.d.ts +28 -0
  48. package/cssm/index-3e68f8db.d.ts +5 -0
  49. package/cssm/index-425c8522.d.ts +6 -0
  50. package/cssm/index-bdb4c6b9.d.ts +172 -0
  51. package/cssm/index-e81c389f.d.ts +3 -0
  52. package/cssm/index-ebda875c.d.ts +66 -48
  53. package/cssm/index-f12ee135.d.ts +7 -217
  54. package/cssm/mobile.d.ts +1 -0
  55. package/cssm/mobile.js +3 -0
  56. package/cssm/mobile.module.css +1 -1
  57. package/cssm/typings-5e1b8383.d.ts +550 -0
  58. package/cssm/typings-bdb4c6b9.d.ts +52 -0
  59. package/cssm/utils-5e1b8383.d.ts +38 -0
  60. package/esm/Component-3885b0d7.d.ts +1 -1
  61. package/esm/Component-425c8522.d.ts +53 -0
  62. package/esm/Component-5e1b8383.d.ts +5 -0
  63. package/esm/Component-aed0af6e.d.ts +11 -0
  64. package/esm/Component-b4e70cb0.d.ts +22 -0
  65. package/esm/Component-bdb4c6b9.d.ts +12 -0
  66. package/esm/Component-ebda875c.d.ts +101 -0
  67. package/esm/Component-f12ee135.d.ts +71 -0
  68. package/esm/Component.desktop.d.ts +1 -1
  69. package/esm/Component.mobile-b2c0420d.d.ts +35 -0
  70. package/esm/Component.mobile.d.ts +1 -1
  71. package/esm/Component.mobile.js +6 -7
  72. package/esm/Component.modal.mobile.d.ts +123 -0
  73. package/esm/Component.modal.mobile.js +66 -0
  74. package/esm/Component.responsive.d.ts +2 -2
  75. package/esm/Component.responsive.js +1 -0
  76. package/esm/Context-bdb4c6b9.d.ts +4 -0
  77. package/esm/ResponsiveContext-baf4875b.d.ts +5 -0
  78. package/esm/autocomplete-field/Component.d.ts +1 -1
  79. package/esm/autocomplete-field/Component.js +1 -1
  80. package/esm/autocomplete-field/index.css +2 -2
  81. package/esm/autocomplete-mobile-field/Component.d.ts +1 -1
  82. package/esm/autocomplete-mobile-field/Component.js +1 -1
  83. package/esm/autocomplete-mobile-field/index.css +8 -8
  84. package/esm/consts-f777ba1a.d.ts +2 -0
  85. package/esm/hook-b4e70cb0.d.ts +73 -0
  86. package/esm/index-136acbb1.d.ts +28 -0
  87. package/esm/index-3e68f8db.d.ts +5 -0
  88. package/esm/index-425c8522.d.ts +6 -0
  89. package/esm/index-bdb4c6b9.d.ts +172 -0
  90. package/esm/index-e81c389f.d.ts +3 -0
  91. package/esm/index-ebda875c.d.ts +66 -48
  92. package/esm/index-f12ee135.d.ts +7 -217
  93. package/esm/index.js +1 -0
  94. package/esm/mobile.css +4 -4
  95. package/esm/mobile.d.ts +1 -0
  96. package/esm/mobile.js +3 -0
  97. package/esm/mobile.module-bad1a093.js +4 -0
  98. package/esm/responsive.js +1 -0
  99. package/esm/typings-5e1b8383.d.ts +550 -0
  100. package/esm/typings-bdb4c6b9.d.ts +52 -0
  101. package/esm/utils-5e1b8383.d.ts +38 -0
  102. package/hook-b4e70cb0.d.ts +73 -0
  103. package/index-136acbb1.d.ts +28 -0
  104. package/index-3e68f8db.d.ts +5 -0
  105. package/index-425c8522.d.ts +6 -0
  106. package/index-bdb4c6b9.d.ts +172 -0
  107. package/index-e81c389f.d.ts +3 -0
  108. package/index-ebda875c.d.ts +66 -48
  109. package/index-f12ee135.d.ts +7 -217
  110. package/index.js +1 -0
  111. package/mobile.css +4 -4
  112. package/mobile.d.ts +1 -0
  113. package/mobile.js +4 -0
  114. package/mobile.module-22ee5ba9.js +6 -0
  115. package/modern/Component-3885b0d7.d.ts +1 -1
  116. package/modern/Component-425c8522.d.ts +53 -0
  117. package/modern/Component-5e1b8383.d.ts +5 -0
  118. package/modern/Component-aed0af6e.d.ts +11 -0
  119. package/modern/Component-b4e70cb0.d.ts +22 -0
  120. package/modern/Component-bdb4c6b9.d.ts +8 -0
  121. package/modern/Component-ebda875c.d.ts +101 -0
  122. package/modern/Component-f12ee135.d.ts +71 -0
  123. package/modern/Component.desktop.d.ts +1 -1
  124. package/modern/Component.mobile-e81c389f.d.ts +38 -0
  125. package/modern/Component.mobile.d.ts +1 -1
  126. package/modern/Component.mobile.js +6 -8
  127. package/modern/Component.modal.mobile.d.ts +123 -0
  128. package/modern/Component.modal.mobile.js +73 -0
  129. package/modern/Component.responsive.d.ts +2 -2
  130. package/modern/Component.responsive.js +1 -0
  131. package/modern/Context-bdb4c6b9.d.ts +4 -0
  132. package/modern/ResponsiveContext-baf4875b.d.ts +5 -0
  133. package/modern/autocomplete-field/Component.d.ts +1 -1
  134. package/modern/autocomplete-field/Component.js +1 -1
  135. package/modern/autocomplete-field/index.css +2 -2
  136. package/modern/autocomplete-mobile-field/Component.d.ts +1 -1
  137. package/modern/autocomplete-mobile-field/Component.js +1 -1
  138. package/modern/autocomplete-mobile-field/index.css +8 -8
  139. package/modern/consts-f777ba1a.d.ts +2 -0
  140. package/modern/hook-b4e70cb0.d.ts +73 -0
  141. package/modern/index-136acbb1.d.ts +28 -0
  142. package/modern/index-3e68f8db.d.ts +5 -0
  143. package/modern/index-425c8522.d.ts +6 -0
  144. package/modern/index-bdb4c6b9.d.ts +172 -0
  145. package/modern/index-e81c389f.d.ts +3 -0
  146. package/modern/index-ebda875c.d.ts +66 -48
  147. package/modern/index-f12ee135.d.ts +7 -217
  148. package/modern/index.js +1 -0
  149. package/modern/mobile.css +4 -4
  150. package/modern/mobile.d.ts +1 -0
  151. package/modern/mobile.js +3 -0
  152. package/modern/mobile.module-32ab5262.js +4 -0
  153. package/modern/responsive.js +1 -0
  154. package/modern/typings-5e1b8383.d.ts +550 -0
  155. package/modern/typings-bdb4c6b9.d.ts +52 -0
  156. package/modern/utils-5e1b8383.d.ts +38 -0
  157. package/package.json +5 -5
  158. package/responsive.js +1 -0
  159. package/typings-5e1b8383.d.ts +550 -0
  160. package/typings-bdb4c6b9.d.ts +52 -0
  161. package/utils-5e1b8383.d.ts +38 -0
@@ -0,0 +1,73 @@
1
+ /// <reference types="react" />
2
+ import { BaseSelectProps, OptionShape } from "./index-3e68f8db";
3
+ type UseSelectWithApplyProps = {
4
+ /**
5
+ * Список выбранных пунктов
6
+ */
7
+ selected: BaseSelectProps['selected'];
8
+ /**
9
+ * Список вариантов выбора
10
+ */
11
+ options: BaseSelectProps['options'];
12
+ /**
13
+ * Обработчик выбора
14
+ */
15
+ onChange: BaseSelectProps['onChange'];
16
+ /**
17
+ * Компонент выпадающего меню
18
+ */
19
+ OptionsList?: BaseSelectProps['OptionsList'];
20
+ /**
21
+ * Пропсы, которые будут прокинуты в компонент списка
22
+ */
23
+ optionsListProps?: BaseSelectProps['optionsListProps'];
24
+ /**
25
+ * Показывать кнопку очистки
26
+ */
27
+ showClear?: boolean;
28
+ /**
29
+ * Показывать пункт "Выбрать все"
30
+ */
31
+ showSelectAll?: boolean;
32
+ /**
33
+ * Показывать пункт "Выбрать все" в заголовке списка
34
+ */
35
+ showHeaderWithSelectAll?: boolean;
36
+ };
37
+ declare const SELECT_ALL_KEY = "select_all";
38
+ declare function useSelectWithApply({ options, selected, onChange, OptionsList, optionsListProps, showClear, showSelectAll, showHeaderWithSelectAll, }: UseSelectWithApplyProps): {
39
+ OptionsList: import("react").ForwardRefExoticComponent<import("./index-3e68f8db").OptionsListProps & {
40
+ showClear?: boolean | undefined;
41
+ onClose?: (() => void) | undefined;
42
+ selectedDraft?: OptionShape[] | undefined;
43
+ OptionsList?: import("react").FC<import("./index-3e68f8db").OptionsListProps & import("react").RefAttributes<HTMLDivElement>> | undefined;
44
+ Footer?: import("react").FC<import("./Component-b4e70cb0").FooterProps> | undefined;
45
+ Header?: import("react").FC<import("./Component-aed0af6e").HeaderProps> | undefined;
46
+ headerProps?: import("./Component-aed0af6e").HeaderProps | undefined;
47
+ showHeaderWithSelectAll?: boolean | undefined;
48
+ } & import("react").RefAttributes<HTMLDivElement>>;
49
+ optionsListProps: {
50
+ OptionsList: import("react").FC<import("./index-3e68f8db").OptionsListProps & import("react").RefAttributes<HTMLDivElement>> | undefined;
51
+ showClear: boolean;
52
+ onClear: () => void;
53
+ onApply: () => void;
54
+ onClose: () => void;
55
+ selectedDraft: OptionShape[];
56
+ showHeaderWithSelectAll: boolean;
57
+ headerProps: {
58
+ indeterminate: boolean;
59
+ checked: boolean;
60
+ onChange: () => void;
61
+ };
62
+ };
63
+ allowUnselect: boolean;
64
+ multiple: boolean;
65
+ options: (OptionShape | import("./index-3e68f8db").GroupShape | {
66
+ key: string;
67
+ content: string;
68
+ })[];
69
+ onChange: (payload: import("./index-3e68f8db").BaseSelectChangePayload) => void;
70
+ selected: string | OptionShape | (string | OptionShape)[] | null | undefined;
71
+ };
72
+ export * from "./Component-b4e70cb0";
73
+ export { UseSelectWithApplyProps, SELECT_ALL_KEY, useSelectWithApply };
@@ -0,0 +1,28 @@
1
+ /// <reference types="react" />
2
+ import { FC, ReactNode } from "react";
3
+ /**
4
+ * Набор констант для z-index соответствующих классов компонентов.
5
+ * Значения выбраны по приоритету.
6
+ */
7
+ declare const stackingOrder: {
8
+ FOCUSED: number;
9
+ DEFAULT: number;
10
+ POPOVER: number;
11
+ MODAL: number;
12
+ TOAST: number;
13
+ };
14
+ declare const StackingContext: import("react").Context<number>;
15
+ type StackProps = {
16
+ /**
17
+ * Render prop, в который передается функция.
18
+ * Функция принимает аргумент со значением z-index из текущего контекста.
19
+ */
20
+ children: (value: number) => ReactNode;
21
+ /**
22
+ * Исходное значение для z-index.
23
+ * @default 5
24
+ */
25
+ value?: number;
26
+ };
27
+ declare const Stack: FC<StackProps>;
28
+ export { stackingOrder, StackingContext, StackProps, Stack };
@@ -0,0 +1,5 @@
1
+ export * from "packages/select/src/Component";
2
+ export * from "packages/select/src/components/index";
3
+ export * from "packages/select/src/presets/index";
4
+ export * from "./typings-5e1b8383";
5
+ export * from "./utils-5e1b8383";
@@ -0,0 +1,6 @@
1
+ type BackgroundColorType = 'accent' | 'info' | 'attention-muted' | 'positive-muted' | 'negative-muted' | 'primary' | 'primary-inverted' | 'secondary' | 'secondary-inverted' | 'tertiary' | 'tertiary-inverted' | 'quaternary' | 'quaternary-inverted' | 'specialbg-component' | 'specialbg-component-inverted' | 'specialbg-primary-grouped' | 'specialbg-secondary-grouped' | 'specialbg-tertiary-grouped' | 'specialbg-secondary-transparent' | 'specialbg-secondary-transparent-inverted' | 'specialbg-tertiary-transparent' | 'specialbg-tertiary-transparent-inverted';
2
+ type BorderColorType = 'accent' | 'key' | 'key-inverted' | 'link' | 'primary' | 'primary-inverted' | 'secondary' | 'secondary-inverted' | 'tertiary' | 'tertiary-inverted' | 'underline' | 'underline-inverted' | 'graphic-attention' | 'graphic-link' | 'graphic-negative' | 'graphic-positive' | 'specialbg-secondary-transparent' | 'specialbg-secondary-transparent-inverted' | 'specialbg-tertiary-transparent' | 'specialbg-tertiary-transparent-inverted';
3
+ type GraphicColorType = 'accent' | 'link' | 'attention' | 'positive' | 'negative' | 'primary' | 'primary-inverted' | 'secondary' | 'secondary-inverted' | 'tertiary' | 'tertiary-inverted' | 'quaternary' | 'quaternary-inverted' | 'static-light' | 'static-accent' | 'static-dark';
4
+ type ShadowType = 'shadow-xs' | 'shadow-s' | 'shadow-m' | 'shadow-l' | 'shadow-xl' | 'shadow-xs-hard' | 'shadow-s-hard' | 'shadow-m-hard' | 'shadow-l-hard' | 'shadow-xl-hard' | 'shadow-xs-up' | 'shadow-s-up' | 'shadow-m-up' | 'shadow-l-up' | 'shadow-xl-up' | 'shadow-xs-hard-up' | 'shadow-s-hard-up' | 'shadow-m-hard-up' | 'shadow-l-hard-up' | 'shadow-xl-hard-up';
5
+ type GapType = '3xs' | '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | '6xl' | '7xl' | '8xl';
6
+ export { BackgroundColorType, BorderColorType, GraphicColorType, ShadowType, GapType };
@@ -0,0 +1,172 @@
1
+ /// <reference types="react-transition-group" />
2
+ /// <reference types="react" />
3
+ /* eslint-disable jsx-a11y/no-noninteractive-element-interactions */
4
+ import React from "react";
5
+ import { FC, KeyboardEvent, MouseEvent, MutableRefObject, ReactNode, Ref } from "react";
6
+ import { TransitionProps } from "react-transition-group/Transition";
7
+ import { BackdropProps, PortalProps } from "./index-ebda875c";
8
+ type BaseModalProps = {
9
+ /**
10
+ * Контент
11
+ */
12
+ children?: ReactNode;
13
+ /**
14
+ * Компонент бэкдропа
15
+ */
16
+ Backdrop?: FC<BackdropProps>;
17
+ /**
18
+ * Свойства для Бэкдропа
19
+ */
20
+ backdropProps?: Partial<BackdropProps> & Record<string, unknown>;
21
+ /**
22
+ * Нода, компонент или функция возвращающая их
23
+ *
24
+ * Контейнер к которому будут добавляться порталы
25
+ */
26
+ container?: PortalProps["getPortalContainer"];
27
+ /**
28
+ * Отключает автоматический перевод фокуса на модалку при открытии
29
+ * @default false
30
+ */
31
+ disableAutoFocus?: boolean;
32
+ /**
33
+ * Отключает ловушку фокуса
34
+ * @default false
35
+ */
36
+ disableFocusLock?: boolean;
37
+ /**
38
+ * Отключает восстановление фокуса на предыдущем элементе после закрытия модалки
39
+ * @default false
40
+ */
41
+ disableRestoreFocus?: boolean;
42
+ /**
43
+ * Отключает вызов `callback` при нажатии Escape
44
+ * @default false
45
+ */
46
+ disableEscapeKeyDown?: boolean;
47
+ /**
48
+ * Отключает вызов `callback` при клике на бэкдроп
49
+ * @default false
50
+ */
51
+ disableBackdropClick?: boolean;
52
+ /**
53
+ * Отключает блокировку скролла при открытии модального окна
54
+ * @default false
55
+ */
56
+ disableBlockingScroll?: boolean;
57
+ /**
58
+ * Содержимое модалки всегда в DOM
59
+ * @default false
60
+ */
61
+ keepMounted?: boolean;
62
+ /**
63
+ * Управление видимостью модалки
64
+ */
65
+ open: boolean;
66
+ /**
67
+ * Дополнительный класс
68
+ */
69
+ className?: string;
70
+ /**
71
+ * Дополнительный класс
72
+ */
73
+ contentClassName?: string;
74
+ /**
75
+ * Дополнительный класс для обертки (Modal)
76
+ */
77
+ wrapperClassName?: string;
78
+ /**
79
+ * Обработчик скролла контента
80
+ */
81
+ scrollHandler?: "wrapper" | "content" | MutableRefObject<HTMLDivElement | null>;
82
+ /**
83
+ * Пропсы для анимации (CSSTransition)
84
+ */
85
+ transitionProps?: Partial<TransitionProps>;
86
+ /**
87
+ * Рендерить ли в контейнер через портал.
88
+ * @default true
89
+ */
90
+ usePortal?: boolean;
91
+ /**
92
+ * Обработчик события нажатия на бэкдроп
93
+ */
94
+ onBackdropClick?: (event: MouseEvent) => void;
95
+ /**
96
+ * Обработчик события нажатия на Escape
97
+ *
98
+ * Если `disableEscapeKeyDown` - false и модальное окно в фокусе
99
+ */
100
+ onEscapeKeyDown?: (event: KeyboardEvent) => void;
101
+ /**
102
+ * Обработчик закрытия
103
+ */
104
+ onClose?: (event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>, reason?: "backdropClick" | "escapeKeyDown" | "closerClick") => void;
105
+ /**
106
+ * Обработчик события onEntered компонента Transition
107
+ */
108
+ onMount?: () => void;
109
+ /**
110
+ * Обработчик события onExited компонента Transition
111
+ */
112
+ onUnmount?: () => void;
113
+ /**
114
+ * Идентификатор для систем автоматизированного тестирования
115
+ */
116
+ dataTestId?: string;
117
+ /**
118
+ * z-index компонента
119
+ */
120
+ zIndex?: number;
121
+ /**
122
+ * Реф, который должен быть установлен компонентной области
123
+ */
124
+ componentRef?: MutableRefObject<HTMLDivElement | null>;
125
+ };
126
+ type BaseModalContext = {
127
+ parentRef: React.RefObject<HTMLDivElement>;
128
+ componentRef: React.RefObject<HTMLDivElement>;
129
+ hasFooter?: boolean;
130
+ hasHeader?: boolean;
131
+ hasScroll?: boolean;
132
+ headerHighlighted?: boolean;
133
+ footerHighlighted?: boolean;
134
+ headerOffset?: number;
135
+ setHeaderOffset: (offset: number) => void;
136
+ contentRef: Ref<HTMLElement>;
137
+ setHasHeader: (exists: boolean) => void;
138
+ setHasFooter: (exists: boolean) => void;
139
+ onClose: Required<BaseModalProps>["onClose"];
140
+ };
141
+ // eslint-disable-next-line @typescript-eslint/no-redeclare
142
+ declare const BaseModalContext: React.Context<BaseModalContext>;
143
+ declare const BaseModal: React.ForwardRefExoticComponent<BaseModalProps & React.RefAttributes<HTMLDivElement>>;
144
+ declare function isScrolledToTop(target: HTMLElement): boolean;
145
+ declare function isScrolledToBottom(target: HTMLElement): boolean;
146
+ declare function hasScrollbar(target: HTMLElement): boolean;
147
+ declare const getScrollbarSize: () => number;
148
+ declare const restoreContainerStyles: (container: HTMLElement) => void;
149
+ declare const handleContainer: (container?: HTMLElement) => void;
150
+ type SavedStyle = {
151
+ value: string;
152
+ key: string;
153
+ el: HTMLElement;
154
+ };
155
+ type RestoreStyle = {
156
+ container: HTMLElement;
157
+ modals: number;
158
+ styles: SavedStyle[];
159
+ };
160
+ declare class ModalStore {
161
+ private readonly restoreStyles;
162
+ constructor();
163
+ getRestoreStyles: () => RestoreStyle[];
164
+ }
165
+ declare const getModalStore: () => ModalStore;
166
+ declare class GlobalStore {
167
+ private readonly modalStore;
168
+ constructor();
169
+ getModalStore: () => ModalStore;
170
+ }
171
+ export { BaseModalProps, BaseModalContext, BaseModal, isScrolledToTop, isScrolledToBottom, hasScrollbar, getScrollbarSize, restoreContainerStyles, handleContainer, getModalStore, GlobalStore };
172
+ export type { SavedStyle };
@@ -0,0 +1,3 @@
1
+ export * from "./Component-3885b0d7";
2
+ export * from "./index-ebda875c";
3
+ export type { NavigationBarProps } from "./types-ebda875c";
@@ -1,80 +1,98 @@
1
1
  /// <reference types="react" />
2
+ /// <reference types="react-transition-group" />
2
3
  import React from "react";
3
- import { ButtonHTMLAttributes, ElementType, FC, AnchorHTMLAttributes } from "react";
4
- import { ButtonProps } from "@alfalab/core-components-button";
5
- interface CloserProps extends ButtonHTMLAttributes<HTMLButtonElement> {
4
+ import { ChangeEvent, InputHTMLAttributes, ReactNode } from "react";
5
+ type NativeProps = InputHTMLAttributes<HTMLInputElement>;
6
+ type Align = "start" | "center";
7
+ type CheckboxProps = Omit<NativeProps, "size" | "onChange" | "enterKeyHint"> & {
6
8
  /**
7
- * Вид компонента
9
+ * Управление состоянием вкл/выкл чекбокса (native prop)
8
10
  */
9
- view: "desktop" | "mobile";
11
+ checked?: boolean;
10
12
  /**
11
- * Дополнительный класс
13
+ * Обработчик переключения чекбокса
12
14
  */
13
- className?: string;
15
+ onChange?: (event: ChangeEvent<HTMLInputElement>, payload: {
16
+ checked: boolean;
17
+ name?: string;
18
+ }) => void;
14
19
  /**
15
- * Позиция крестика
20
+ * Текст подписи к чекбоксу
16
21
  */
17
- align?: "left" | "right";
22
+ label?: ReactNode;
18
23
  /**
19
- * Фиксирует крестик
24
+ * Текст подсказки снизу
20
25
  */
21
- sticky?: boolean;
26
+ hint?: ReactNode;
22
27
  /**
23
- * Иконка
28
+ * Размер компонента
24
29
  */
25
- icon?: ElementType;
30
+ size?: "s" | "m";
26
31
  /**
27
- * Идентификатор для систем автоматизированного тестирования
32
+ * Доп. класс чекбокса
28
33
  */
29
- dataTestId?: string;
34
+ boxClassName?: string;
30
35
  /**
31
- * Коллбэк закрытия.
36
+ * Доп. класс контента
32
37
  */
33
- onClose?: (event: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>, reason?: "backdropClick" | "escapeKeyDown" | "closerClick") => void;
34
- }
35
- declare const Closer: FC<CloserProps>;
36
- type IconButtonProps = {
38
+ contentClassName?: string;
37
39
  /**
38
- * Компонент иконки
40
+ * Выравнивание
39
41
  */
40
- icon: ElementType<{
41
- className?: string;
42
- }>;
42
+ align?: Align;
43
43
  /**
44
- * Тип кнопки
44
+ * Дополнительный слот
45
45
  */
46
- view?: "primary" | "secondary" | "transparent" | "tertiary" | "negative";
46
+ addons?: React.ReactNode;
47
47
  /**
48
- * Размер компонента
48
+ * Растягивать ли компонент на всю ширину
49
49
  */
50
- size?: "xxs" | "xs" | "s";
50
+ block?: boolean;
51
51
  /**
52
- * Дополнительный класс
52
+ * Управление состоянием включен / выключен
53
53
  */
54
- className?: string;
54
+ disabled?: boolean;
55
55
  /**
56
- * Выравнивание иконки
57
- * @default 'center'
56
+ * Управление состоянием активен / неактивен
58
57
  */
59
- alignIcon?: "left" | "center" | "right";
58
+ inactive?: boolean;
60
59
  /**
61
60
  * Идентификатор для систем автоматизированного тестирования
62
61
  */
63
62
  dataTestId?: string;
64
63
  /**
65
- * Набор цветов для компонента
66
- */
67
- colors?: "default" | "inverted";
68
- } & Omit<ButtonHTMLAttributes<HTMLButtonElement>, "size"> & Pick<ButtonProps, "href" | "loading"> & Pick<AnchorHTMLAttributes<HTMLAnchorElement>, "target" | "download">;
69
- declare const IconButton: React.ForwardRefExoticComponent<{
70
- icon: ElementType<{
71
- className?: string;
72
- }>;
73
- view?: "primary" | "secondary" | "tertiary" | "negative" | "transparent" | undefined;
74
- size?: "xs" | "s" | "xxs" | undefined;
75
- className?: string | undefined;
76
- alignIcon?: "right" | "left" | "center" | undefined;
64
+ * Управление неопределенным состоянием чекбокса
65
+ */
66
+ indeterminate?: boolean;
67
+ /**
68
+ * Отображение ошибки
69
+ */
70
+ error?: ReactNode | boolean;
71
+ /**
72
+ * Флаг для скрытия нативного инпута.
73
+ * @default false
74
+ */
75
+ hiddenInput?: boolean;
76
+ };
77
+ declare const Checkbox: React.ForwardRefExoticComponent<Omit<NativeProps, "size" | "onChange" | "enterKeyHint"> & {
78
+ checked?: boolean | undefined;
79
+ onChange?: ((event: ChangeEvent<HTMLInputElement>, payload: {
80
+ checked: boolean;
81
+ name?: string;
82
+ }) => void) | undefined;
83
+ label?: ReactNode;
84
+ hint?: ReactNode;
85
+ size?: "s" | "m" | undefined;
86
+ boxClassName?: string | undefined;
87
+ contentClassName?: string | undefined;
88
+ align?: Align | undefined;
89
+ addons?: React.ReactNode;
90
+ block?: boolean | undefined;
91
+ disabled?: boolean | undefined;
92
+ inactive?: boolean | undefined;
77
93
  dataTestId?: string | undefined;
78
- colors?: "default" | "inverted" | undefined;
79
- } & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "size"> & Pick<ButtonProps, "href" | "loading"> & Pick<React.AnchorHTMLAttributes<HTMLAnchorElement>, "download" | "target"> & React.RefAttributes<HTMLButtonElement>>;
80
- export { CloserProps, Closer, IconButtonProps, IconButton };
94
+ indeterminate?: boolean | undefined;
95
+ error?: ReactNode | boolean;
96
+ hiddenInput?: boolean | undefined;
97
+ } & React.RefAttributes<HTMLLabelElement>>;
98
+ export { CheckboxProps, Checkbox };