@snack-uikit/fields 0.32.2 → 0.32.4-preview-481a0237.0

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 (56) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +7 -0
  3. package/dist/cjs/components/FieldColor/FieldColor.d.ts +4 -0
  4. package/dist/cjs/components/FieldColor/FieldColor.js +5 -3
  5. package/dist/cjs/components/FieldDate/FieldDate.d.ts +2 -0
  6. package/dist/cjs/components/FieldDate/FieldDate.js +5 -3
  7. package/dist/cjs/components/FieldSecure/FieldSecure.d.ts +2 -0
  8. package/dist/cjs/components/FieldSecure/FieldSecure.js +5 -3
  9. package/dist/cjs/components/FieldSelect/FieldSelectMultiple.d.ts +1 -0
  10. package/dist/cjs/components/FieldSelect/FieldSelectMultiple.js +5 -3
  11. package/dist/cjs/components/FieldSelect/FieldSelectSingle.d.ts +1 -0
  12. package/dist/cjs/components/FieldSelect/FieldSelectSingle.js +4 -2
  13. package/dist/cjs/components/FieldSelect/hooks.d.ts +2 -1
  14. package/dist/cjs/components/FieldSelect/hooks.js +3 -1
  15. package/dist/cjs/components/FieldSelect/types.d.ts +2 -0
  16. package/dist/cjs/components/FieldText/FieldText.d.ts +2 -0
  17. package/dist/cjs/components/FieldText/FieldText.js +4 -2
  18. package/dist/cjs/components/FieldTextArea/FieldTextArea.d.ts +2 -0
  19. package/dist/cjs/components/FieldTextArea/FieldTextArea.js +5 -3
  20. package/dist/cjs/components/FieldTime/FieldTime.d.ts +2 -0
  21. package/dist/cjs/components/FieldTime/FieldTime.js +5 -3
  22. package/dist/cjs/hooks/useCopyButton.d.ts +2 -1
  23. package/dist/cjs/hooks/useCopyButton.js +3 -1
  24. package/dist/esm/components/FieldColor/FieldColor.d.ts +4 -0
  25. package/dist/esm/components/FieldColor/FieldColor.js +2 -2
  26. package/dist/esm/components/FieldDate/FieldDate.d.ts +2 -0
  27. package/dist/esm/components/FieldDate/FieldDate.js +2 -2
  28. package/dist/esm/components/FieldSecure/FieldSecure.d.ts +2 -0
  29. package/dist/esm/components/FieldSecure/FieldSecure.js +2 -1
  30. package/dist/esm/components/FieldSelect/FieldSelectMultiple.d.ts +1 -0
  31. package/dist/esm/components/FieldSelect/FieldSelectMultiple.js +2 -1
  32. package/dist/esm/components/FieldSelect/FieldSelectSingle.d.ts +1 -0
  33. package/dist/esm/components/FieldSelect/FieldSelectSingle.js +2 -1
  34. package/dist/esm/components/FieldSelect/hooks.d.ts +2 -1
  35. package/dist/esm/components/FieldSelect/hooks.js +2 -1
  36. package/dist/esm/components/FieldSelect/types.d.ts +2 -0
  37. package/dist/esm/components/FieldText/FieldText.d.ts +2 -0
  38. package/dist/esm/components/FieldText/FieldText.js +2 -1
  39. package/dist/esm/components/FieldTextArea/FieldTextArea.d.ts +2 -0
  40. package/dist/esm/components/FieldTextArea/FieldTextArea.js +2 -2
  41. package/dist/esm/components/FieldTime/FieldTime.d.ts +2 -0
  42. package/dist/esm/components/FieldTime/FieldTime.js +2 -2
  43. package/dist/esm/hooks/useCopyButton.d.ts +2 -1
  44. package/dist/esm/hooks/useCopyButton.js +3 -3
  45. package/package.json +4 -4
  46. package/src/components/FieldColor/FieldColor.tsx +4 -1
  47. package/src/components/FieldDate/FieldDate.tsx +4 -1
  48. package/src/components/FieldSecure/FieldSecure.tsx +4 -0
  49. package/src/components/FieldSelect/FieldSelectMultiple.tsx +2 -0
  50. package/src/components/FieldSelect/FieldSelectSingle.tsx +2 -0
  51. package/src/components/FieldSelect/hooks.ts +3 -0
  52. package/src/components/FieldSelect/types.ts +2 -0
  53. package/src/components/FieldText/FieldText.tsx +4 -0
  54. package/src/components/FieldTextArea/FieldTextArea.tsx +4 -1
  55. package/src/components/FieldTime/FieldTime.tsx +4 -1
  56. package/src/hooks/useCopyButton.tsx +4 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,16 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## 0.32.3 (2024-11-08)
7
+
8
+ ### Only dependencies have been changed
9
+ * [@snack-uikit/calendar@0.11.3](https://github.com/cloud-ru-tech/snack-uikit/blob/master/packages/calendar/CHANGELOG.md)
10
+ * [@snack-uikit/list@0.21.3](https://github.com/cloud-ru-tech/snack-uikit/blob/master/packages/list/CHANGELOG.md)
11
+
12
+
13
+
14
+
15
+
6
16
  ## 0.32.2 (2024-11-08)
7
17
 
8
18
  ### Only dependencies have been changed
package/README.md CHANGED
@@ -198,6 +198,7 @@ FieldStepper в основном предназначен для работы с
198
198
  | open | `boolean` | - | Открыт color-picker |
199
199
  | onOpenChange | `(value: boolean) => void` | - | Колбек открытия пикера |
200
200
  | showCopyButton | `boolean` | - | Отображение кнопки копирования |
201
+ | onClickCopy | `() => void` | - | Колбек клика по кнопке Копировать для поля |
201
202
  | showClearButton | `boolean` | true | Отображение кнопки Очистки поля |
202
203
  | value | `string` | - | Значение input |
203
204
  | onChange | `(value: string) => void` | - | |
@@ -234,6 +235,7 @@ FieldStepper в основном предназначен для работы с
234
235
  | value | `Date` | - | Значение поля |
235
236
  | onChange | `(value: Date) => void` | - | Колбек смены значения |
236
237
  | showCopyButton | `boolean` | - | Отображение кнопки копирования |
238
+ | onClickCopy | `() => void` | - | Колбек клика по кнопке Копировать для поля |
237
239
  | showClearButton | `boolean` | true | Отображение кнопки Очистки поля |
238
240
  | buildCellProps | `(date: Date, viewMode: ViewMode) => { isDisabled?: boolean; isHoliday?: boolean } ;` | - | Колбек установки свойств ячеек календаря. Вызывается на построение каждой ячейки. Принимает два параметра: <br> `Date` - дата ячейки <br> `ViewMode`: <br> - `month` отображение месяца, каждая ячейка - 1 день <br> - `year` отображение года, каждая ячейка - 1 месяц <br> - `decade` отображение декады, каждая ячейка - 1 год <br><br> Колбек должен возвращать объект с полями, отвечающими за отключение и подкраску ячейки. |
239
241
  | id | `string` | - | Значение html-атрибута id |
@@ -283,6 +285,7 @@ FieldStepper в основном предназначен для работы с
283
285
  | hidden | `boolean` | - | Замаскированно ли значение поля |
284
286
  | onHiddenChange | `(value: boolean) => void` | - | Колбек смены маскирования |
285
287
  | showCopyButton | `boolean` | - | Отображение кнопки копирования |
288
+ | onClickCopy | `() => void` | - | Колбек клика по кнопке Копировать для поля |
286
289
  | allowMoreThanMaxLength | `boolean` | - | Можно ли вводить больше разрешённого кол-ва символов |
287
290
  | prefixIcon | `ReactElement<any, string \| JSXElementConstructor<any>>` | - | Иконка-префикс для поля |
288
291
  | asyncValueGetter | `() => Promise<string>` | - | Свойство позволяет грузить данные в поле по требованию |
@@ -344,6 +347,7 @@ FieldStepper в основном предназначен для работы с
344
347
  | showClearButton | `boolean` | true | Отображение кнопки очистки поля |
345
348
  | open | `boolean` | - | |
346
349
  | onOpenChange | `(open: boolean) => void` | - | |
350
+ | onClickCopy | `() => void` | - | Колбек клика по кнопке Копировать для поля |
347
351
  | prefixIcon | `ReactElement<any, string \| JSXElementConstructor<any>>` | - | Иконка-префикс для поля |
348
352
  | widthStrategy | enum PopoverWidthStrategy: `"auto"`, `"gte"`, `"eq"` | - | |
349
353
  | pinTop | `OptionProps[]` | - | |
@@ -437,6 +441,7 @@ FieldStepper в основном предназначен для работы с
437
441
  | name | type | default value | description |
438
442
  |------|------|---------------|-------------|
439
443
  | showCopyButton | `boolean` | - | Отображение кнопки Копировать для поля (актуально только для `readonly = true`) |
444
+ | onClickCopy | `() => void` | - | Колбек клика по кнопке Копировать для поля |
440
445
  | showClearButton | `boolean` | true | Отображение кнопки очистки поля |
441
446
  | allowMoreThanMaxLength | `boolean` | - | Можно ли вводить больше разрешённого кол-ва символов |
442
447
  | prefixIcon | `ReactElement<any, string \| JSXElementConstructor<any>>` | - | Иконка-префикс для поля |
@@ -476,6 +481,7 @@ FieldStepper в основном предназначен для работы с
476
481
  | resizable | `boolean` | - | Может ли ли пользователь изменять размеры поля (если св-во не включено, поле автоматически меняет свой размер) |
477
482
  | onChange | `(value: string, e?: ChangeEvent<HTMLTextAreaElement>) => void` | - | Колбек смены значения |
478
483
  | showCopyButton | `boolean` | - | Отображение кнопки Копировать для поля (актуально только для `readonly = true`) |
484
+ | onClickCopy | `() => void` | - | Колбек клика по кнопке Копировать для поля |
479
485
  | showClearButton | `boolean` | true | Отображение кнопки очистки поля |
480
486
  | allowMoreThanMaxLength | `boolean` | true | Можно ли вводить больше разрешённого кол-ва символов |
481
487
  | value | `string` | - | HTML-аттрибут value |
@@ -509,6 +515,7 @@ FieldStepper в основном предназначен для работы с
509
515
  | value | `TimeValue` | - | Значение поля |
510
516
  | onChange | `(value?: TimeValue) => void` | - | Колбек смены значения |
511
517
  | showCopyButton | `boolean` | - | Отображение кнопки копирования |
518
+ | onClickCopy | `() => void` | - | Колбек клика по кнопке Копировать для поля |
512
519
  | showSeconds | `boolean` | true | Показывать ли секунды |
513
520
  | showClearButton | `boolean` | true | Отображение кнопки Очистки поля |
514
521
  | id | `string` | - | Значение html-атрибута id |
@@ -11,6 +11,8 @@ type FieldDateOwnProps = {
11
11
  onOpenChange?(value: boolean): void;
12
12
  /** Отображение кнопки копирования */
13
13
  showCopyButton?: boolean;
14
+ /** Колбек клика по кнопке Копировать для поля */
15
+ onClickCopy?(): void;
14
16
  /**
15
17
  * Отображение кнопки Очистки поля
16
18
  * @default true
@@ -29,6 +31,8 @@ export declare const FieldColor: import("react").ForwardRefExoticComponent<{
29
31
  onOpenChange?(value: boolean): void;
30
32
  /** Отображение кнопки копирования */
31
33
  showCopyButton?: boolean;
34
+ /** Колбек клика по кнопке Копировать для поля */
35
+ onClickCopy?(): void;
32
36
  /**
33
37
  * Отображение кнопки Очистки поля
34
38
  * @default true
@@ -58,9 +58,10 @@ exports.FieldColor = (0, react_1.forwardRef)((_a, ref) => {
58
58
  autoApply,
59
59
  placeholder,
60
60
  onFocus,
61
- onBlur
61
+ onBlur,
62
+ onClickCopy
62
63
  } = _a,
63
- rest = __rest(_a, ["id", "name", "value", "disabled", "readonly", "showCopyButton", "showClearButton", "open", "onChange", "onOpenChange", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "showHintIcon", "size", "validationState", "error", "withAlpha", "autoApply", "placeholder", "onFocus", "onBlur"]);
64
+ rest = __rest(_a, ["id", "name", "value", "disabled", "readonly", "showCopyButton", "showClearButton", "open", "onChange", "onOpenChange", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "showHintIcon", "size", "validationState", "error", "withAlpha", "autoApply", "placeholder", "onFocus", "onBlur", "onClickCopy"]);
64
65
  const [isOpen, setIsOpen] = (0, uncontrollable_1.useUncontrolledProp)(open, false, onOpenChange);
65
66
  const localRef = (0, react_1.useRef)(null);
66
67
  const showDropList = isOpen && !readonly && !disabled;
@@ -94,7 +95,8 @@ exports.FieldColor = (0, react_1.forwardRef)((_a, ref) => {
94
95
  copyButtonRef,
95
96
  showCopyButton,
96
97
  size,
97
- valueToCopy: value
98
+ valueToCopy: value,
99
+ onClickCopy
98
100
  });
99
101
  const {
100
102
  postfixButtons,
@@ -21,6 +21,8 @@ type FieldDateOwnProps = {
21
21
  onChange?(value: Date | undefined): void;
22
22
  /** Отображение кнопки копирования */
23
23
  showCopyButton?: boolean;
24
+ /** Колбек клика по кнопке Копировать для поля */
25
+ onClickCopy?(): void;
24
26
  /**
25
27
  * Отображение кнопки Очистки поля
26
28
  * @default true
@@ -59,9 +59,10 @@ exports.FieldDate = (0, react_1.forwardRef)((_a, ref) => {
59
59
  validationState = constants_1.VALIDATION_STATE.Default,
60
60
  buildCellProps,
61
61
  error,
62
- mode
62
+ mode,
63
+ onClickCopy
63
64
  } = _a,
64
- rest = __rest(_a, ["id", "name", "value", "disabled", "readonly", "showCopyButton", "showClearButton", "open", "onOpenChange", "onChange", "onFocus", "onBlur", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "showHintIcon", "size", "validationState", "buildCellProps", "error", "mode"]);
65
+ rest = __rest(_a, ["id", "name", "value", "disabled", "readonly", "showCopyButton", "showClearButton", "open", "onOpenChange", "onChange", "onFocus", "onBlur", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "showHintIcon", "size", "validationState", "buildCellProps", "error", "mode", "onClickCopy"]);
65
66
  const [isOpen, setIsOpen] = (0, uncontrollable_1.useUncontrolledProp)(open, false, onOpenChange);
66
67
  const localRef = (0, react_1.useRef)(null);
67
68
  const clearButtonRef = (0, react_1.useRef)(null);
@@ -125,7 +126,8 @@ exports.FieldDate = (0, react_1.forwardRef)((_a, ref) => {
125
126
  copyButtonRef,
126
127
  showCopyButton,
127
128
  size,
128
- valueToCopy
129
+ valueToCopy,
130
+ onClickCopy
129
131
  });
130
132
  const calendarIcon = (0, react_1.useMemo)(() => ({
131
133
  active: false,
@@ -11,6 +11,8 @@ type FieldSecureOwnProps = {
11
11
  onHiddenChange?(value: boolean): void;
12
12
  /** Отображение кнопки копирования */
13
13
  showCopyButton?: boolean;
14
+ /** Колбек клика по кнопке Копировать для поля */
15
+ onClickCopy?(): void;
14
16
  /** Можно ли вводить больше разрешённого кол-ва символов */
15
17
  allowMoreThanMaxLength?: boolean;
16
18
  /** Иконка-префикс для поля */
@@ -84,9 +84,10 @@ exports.FieldSecure = (0, react_1.forwardRef)((_a, ref) => {
84
84
  prefixIcon,
85
85
  error,
86
86
  asyncValueGetter,
87
- autoComplete
87
+ autoComplete,
88
+ onClickCopy
88
89
  } = _a,
89
- rest = __rest(_a, ["id", "name", "value", "placeholder", "maxLength", "disabled", "readonly", "showCopyButton", "allowMoreThanMaxLength", "hidden", "onHiddenChange", "showHintIcon", "onChange", "onFocus", "onBlur", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "size", "validationState", "prefixIcon", "error", "asyncValueGetter", "autoComplete"]);
90
+ rest = __rest(_a, ["id", "name", "value", "placeholder", "maxLength", "disabled", "readonly", "showCopyButton", "allowMoreThanMaxLength", "hidden", "onHiddenChange", "showHintIcon", "onChange", "onFocus", "onBlur", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "size", "validationState", "prefixIcon", "error", "asyncValueGetter", "autoComplete", "onClickCopy"]);
90
91
  const localRef = (0, react_1.useRef)(null);
91
92
  const copyButtonRef = (0, react_1.useRef)(null);
92
93
  const hideButtonRef = (0, react_1.useRef)(null);
@@ -154,7 +155,8 @@ exports.FieldSecure = (0, react_1.forwardRef)((_a, ref) => {
154
155
  size,
155
156
  valueToCopy: value,
156
157
  onValueRequest: getAsyncValue,
157
- disabled: isLoading
158
+ disabled: isLoading,
159
+ onClickCopy
158
160
  });
159
161
  const hideButtonSettings = (0, hooks_1.useHideButton)({
160
162
  hideButtonRef,
@@ -14,6 +14,7 @@ export declare const FieldSelectMultiple: import("react").ForwardRefExoticCompon
14
14
  pinBottom?: import("./types").OptionProps[];
15
15
  searchable?: boolean;
16
16
  showCopyButton?: boolean;
17
+ onClickCopy?(): void;
17
18
  showClearButton?: boolean;
18
19
  readonly?: boolean;
19
20
  prefixIcon?: import("react").ReactElement;
@@ -67,9 +67,10 @@ exports.FieldSelectMultiple = (0, react_1.forwardRef)((props, ref) => {
67
67
  enableFuzzySearch = true,
68
68
  resetSearchOnOptionSelection = true,
69
69
  onOpenChange,
70
- selectedOptionFormatter = defaultSelectedOptionFormatter
70
+ selectedOptionFormatter = defaultSelectedOptionFormatter,
71
+ onClickCopy
71
72
  } = props,
72
- rest = __rest(props, ["id", "name", "placeholder", "size", "options", "value", "defaultValue", "onChange", "disabled", "readonly", "searchable", "showClearButton", "onKeyDown", "validationState", "search", "autocomplete", "prefixIcon", "prefix", "postfix", "removeByBackspace", "addOptionByEnter", "untouchableScrollbars", "open", "enableFuzzySearch", "resetSearchOnOptionSelection", "onOpenChange", "selectedOptionFormatter"]);
73
+ rest = __rest(props, ["id", "name", "placeholder", "size", "options", "value", "defaultValue", "onChange", "disabled", "readonly", "searchable", "showClearButton", "onKeyDown", "validationState", "search", "autocomplete", "prefixIcon", "prefix", "postfix", "removeByBackspace", "addOptionByEnter", "untouchableScrollbars", "open", "enableFuzzySearch", "resetSearchOnOptionSelection", "onOpenChange", "selectedOptionFormatter", "onClickCopy"]);
73
74
  const localRef = (0, react_1.useRef)(null);
74
75
  const inputPlugRef = (0, react_1.useRef)(null);
75
76
  const contentRef = (0, react_1.useRef)(null);
@@ -146,7 +147,8 @@ exports.FieldSelectMultiple = (0, react_1.forwardRef)((props, ref) => {
146
147
  showClearButton: showClearButton && !disabled && !readonly && Boolean(selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.find(item => !item.disabled)),
147
148
  showCopyButton: false,
148
149
  inputRef: localRef,
149
- onClear
150
+ onClear,
151
+ onClickCopy
150
152
  });
151
153
  const commonHandleOnKeyDown = (0, hooks_2.useHandleOnKeyDown)({
152
154
  inputKeyDownNavigationHandler,
@@ -12,6 +12,7 @@ export declare const FieldSelectSingle: import("react").ForwardRefExoticComponen
12
12
  pinBottom?: import("./types").OptionProps[];
13
13
  searchable?: boolean;
14
14
  showCopyButton?: boolean;
15
+ onClickCopy?(): void;
15
16
  showClearButton?: boolean;
16
17
  readonly?: boolean;
17
18
  prefixIcon?: import("react").ReactElement;
@@ -64,9 +64,10 @@ exports.FieldSelectSingle = (0, react_1.forwardRef)((props, ref) => {
64
64
  open: openProp,
65
65
  onOpenChange,
66
66
  selectedOptionFormatter = defaultSelectedOptionFormatter,
67
- enableFuzzySearch = true
67
+ enableFuzzySearch = true,
68
+ onClickCopy
68
69
  } = props,
69
- rest = __rest(props, ["id", "name", "placeholder", "size", "options", "value", "defaultValue", "onChange", "disabled", "readonly", "searchable", "showCopyButton", "showClearButton", "onKeyDown", "required", "validationState", "search", "autocomplete", "prefixIcon", "prefix", "postfix", "addOptionByEnter", "untouchableScrollbars", "open", "onOpenChange", "selectedOptionFormatter", "enableFuzzySearch"]);
70
+ rest = __rest(props, ["id", "name", "placeholder", "size", "options", "value", "defaultValue", "onChange", "disabled", "readonly", "searchable", "showCopyButton", "showClearButton", "onKeyDown", "required", "validationState", "search", "autocomplete", "prefixIcon", "prefix", "postfix", "addOptionByEnter", "untouchableScrollbars", "open", "onOpenChange", "selectedOptionFormatter", "enableFuzzySearch", "onClickCopy"]);
70
71
  const localRef = (0, react_1.useRef)(null);
71
72
  const [open = false, setOpen] = (0, hooks_1.useValueControl)({
72
73
  value: openProp,
@@ -153,6 +154,7 @@ exports.FieldSelectSingle = (0, react_1.forwardRef)((props, ref) => {
153
154
  showCopyButton,
154
155
  inputRef: localRef,
155
156
  onClear,
157
+ onClickCopy,
156
158
  valueToCopy: selectedOptionFormatter(selectedItem)
157
159
  });
158
160
  const handleBlur = e => {
@@ -14,10 +14,11 @@ type UseButtonsProps = {
14
14
  showCopyButton: boolean;
15
15
  size: 's' | 'm' | 'l';
16
16
  onClear(): void;
17
+ onClickCopy?(): void;
17
18
  inputRef: RefObject<HTMLInputElement>;
18
19
  valueToCopy?: string;
19
20
  };
20
- export declare function useButtons({ readonly, showClearButton, showCopyButton, size, onClear, inputRef, valueToCopy, }: UseButtonsProps): {
21
+ export declare function useButtons({ readonly, showClearButton, showCopyButton, size, onClear, onClickCopy, inputRef, valueToCopy, }: UseButtonsProps): {
21
22
  postfixButtons: import("react/jsx-runtime").JSX.Element | undefined;
22
23
  inputKeyDownNavigationHandler: KeyboardEventHandler<HTMLInputElement>;
23
24
  buttonsRefs: (Element | null)[];
@@ -52,6 +52,7 @@ function useButtons(_ref2) {
52
52
  showCopyButton,
53
53
  size,
54
54
  onClear,
55
+ onClickCopy,
55
56
  inputRef,
56
57
  valueToCopy = ''
57
58
  } = _ref2;
@@ -68,7 +69,8 @@ function useButtons(_ref2) {
68
69
  copyButtonRef,
69
70
  showCopyButton: readonly && showCopyButton,
70
71
  size,
71
- valueToCopy
72
+ valueToCopy,
73
+ onClickCopy
72
74
  });
73
75
  const {
74
76
  onInputKeyDown: inputKeyDownNavigationHandler,
@@ -46,6 +46,8 @@ type FiledSelectCommonProps = WithSupportProps<{
46
46
  searchable?: boolean;
47
47
  /** Отображение кнопки Копировать для поля (актуально только для `readonly = true`) */
48
48
  showCopyButton?: boolean;
49
+ /** Колбек клика по кнопке Копировать для поля */
50
+ onClickCopy?(): void;
49
51
  /**
50
52
  * Отображение кнопки очистки поля
51
53
  * @default true
@@ -8,6 +8,8 @@ type WrapperProps = Pick<FieldDecoratorProps, 'className' | 'label' | 'labelTool
8
8
  type FieldTextOwnProps = {
9
9
  /** Отображение кнопки Копировать для поля (актуально только для `readonly = true`) */
10
10
  showCopyButton?: boolean;
11
+ /** Колбек клика по кнопке Копировать для поля */
12
+ onClickCopy?(): void;
11
13
  /**
12
14
  * Отображение кнопки очистки поля
13
15
  * @default true
@@ -43,6 +43,7 @@ exports.FieldText = (0, react_1.forwardRef)((_a, ref) => {
43
43
  onChange: onChangeProp,
44
44
  onFocus,
45
45
  onBlur,
46
+ onClickCopy,
46
47
  className,
47
48
  label,
48
49
  labelTooltip,
@@ -60,7 +61,7 @@ exports.FieldText = (0, react_1.forwardRef)((_a, ref) => {
60
61
  postfix,
61
62
  button: buttonProp
62
63
  } = _a,
63
- rest = __rest(_a, ["id", "name", "value", "placeholder", "maxLength", "disabled", "readonly", "showCopyButton", "showClearButton", "allowMoreThanMaxLength", "onChange", "onFocus", "onBlur", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "showHintIcon", "size", "validationState", "error", "autoComplete", "prefixIcon", "prefix", "postfix", "button"]);
64
+ rest = __rest(_a, ["id", "name", "value", "placeholder", "maxLength", "disabled", "readonly", "showCopyButton", "showClearButton", "allowMoreThanMaxLength", "onChange", "onFocus", "onBlur", "onClickCopy", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "showHintIcon", "size", "validationState", "error", "autoComplete", "prefixIcon", "prefix", "postfix", "button"]);
64
65
  const [value = '', onChange] = (0, hooks_1.useValueControl)({
65
66
  value: valueProp,
66
67
  defaultValue: '',
@@ -110,7 +111,8 @@ exports.FieldText = (0, react_1.forwardRef)((_a, ref) => {
110
111
  size,
111
112
  valueToCopy: value,
112
113
  prefix: typeof prefix === 'string' ? prefix : undefined,
113
- postfix: typeof postfix === 'string' ? postfix : undefined
114
+ postfix: typeof postfix === 'string' ? postfix : undefined,
115
+ onClickCopy
114
116
  });
115
117
  const [isButtonFocused, setIsButtonFocused] = (0, react_1.useState)(false);
116
118
  const onButtonFocus = (0, react_1.useCallback)(() => setIsButtonFocused(true), []);
@@ -15,6 +15,8 @@ type FieldTextAreaOwnProps = {
15
15
  onChange?(value: string, e?: ChangeEvent<HTMLTextAreaElement>): void;
16
16
  /** Отображение кнопки Копировать для поля (актуально только для `readonly = true`) */
17
17
  showCopyButton?: boolean;
18
+ /** Колбек клика по кнопке Копировать для поля */
19
+ onClickCopy?(): void;
18
20
  /**
19
21
  * Отображение кнопки очистки поля
20
22
  * @default true
@@ -57,9 +57,10 @@ exports.FieldTextArea = (0, react_1.forwardRef)((_a, ref) => {
57
57
  hint,
58
58
  error,
59
59
  size = input_private_1.SIZE.S,
60
- validationState = constants_1.VALIDATION_STATE.Default
60
+ validationState = constants_1.VALIDATION_STATE.Default,
61
+ onClickCopy
61
62
  } = _a,
62
- rest = __rest(_a, ["id", "name", "value", "placeholder", "maxLength", "minRows", "maxRows", "disabled", "resizable", "readonly", "showCopyButton", "showClearButton", "allowMoreThanMaxLength", "showHintIcon", "onChange", "onFocus", "onBlur", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "error", "size", "validationState"]);
63
+ rest = __rest(_a, ["id", "name", "value", "placeholder", "maxLength", "minRows", "maxRows", "disabled", "resizable", "readonly", "showCopyButton", "showClearButton", "allowMoreThanMaxLength", "showHintIcon", "onChange", "onFocus", "onBlur", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "error", "size", "validationState", "onClickCopy"]);
63
64
  const localRef = (0, react_1.useRef)(null);
64
65
  const clearButtonRef = (0, react_1.useRef)(null);
65
66
  const copyButtonRef = (0, react_1.useRef)(null);
@@ -92,7 +93,8 @@ exports.FieldTextArea = (0, react_1.forwardRef)((_a, ref) => {
92
93
  copyButtonRef,
93
94
  showCopyButton,
94
95
  size,
95
- valueToCopy: value
96
+ valueToCopy: value,
97
+ onClickCopy
96
98
  });
97
99
  const {
98
100
  postfixButtons,
@@ -15,6 +15,8 @@ type FieldTimeOwnProps = {
15
15
  onChange?: TimePickerProps['onChangeValue'];
16
16
  /** Отображение кнопки копирования */
17
17
  showCopyButton?: boolean;
18
+ /** Колбек клика по кнопке Копировать для поля */
19
+ onClickCopy?(): void;
18
20
  /** Показывать ли секунды */
19
21
  showSeconds?: boolean;
20
22
  /**
@@ -76,9 +76,10 @@ exports.FieldTime = (0, react_1.forwardRef)((_a, ref) => {
76
76
  showSeconds = true,
77
77
  size = input_private_1.SIZE.S,
78
78
  validationState = constants_1.VALIDATION_STATE.Default,
79
- error
79
+ error,
80
+ onClickCopy
80
81
  } = _a,
81
- rest = __rest(_a, ["id", "name", "value", "disabled", "readonly", "showCopyButton", "showClearButton", "open", "onOpenChange", "onChange", "onFocus", "onBlur", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "showHintIcon", "showSeconds", "size", "validationState", "error"]);
82
+ rest = __rest(_a, ["id", "name", "value", "disabled", "readonly", "showCopyButton", "showClearButton", "open", "onOpenChange", "onChange", "onFocus", "onBlur", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "showHintIcon", "showSeconds", "size", "validationState", "error", "onClickCopy"]);
82
83
  const [isOpen, setIsOpen] = (0, uncontrollable_1.useUncontrolledProp)(open, false, onOpenChange);
83
84
  const localRef = (0, react_1.useRef)(null);
84
85
  const clearButtonRef = (0, react_1.useRef)(null);
@@ -130,7 +131,8 @@ exports.FieldTime = (0, react_1.forwardRef)((_a, ref) => {
130
131
  copyButtonRef,
131
132
  showCopyButton,
132
133
  size,
133
- valueToCopy
134
+ valueToCopy,
135
+ onClickCopy
134
136
  });
135
137
  const calendarIcon = (0, react_1.useMemo)(() => ({
136
138
  active: false,
@@ -7,9 +7,10 @@ type UseCopyButtonProps = {
7
7
  valueToCopy: string;
8
8
  size: Size;
9
9
  onValueRequest?(): AsyncValueRequest;
10
+ onClickCopy?(): void;
10
11
  disabled?: boolean;
11
12
  prefix?: string;
12
13
  postfix?: string;
13
14
  };
14
- export declare function useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy, onValueRequest, disabled, prefix, postfix, }: UseCopyButtonProps): ButtonProps;
15
+ export declare function useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy, onValueRequest, onClickCopy, disabled, prefix, postfix, }: UseCopyButtonProps): ButtonProps;
15
16
  export {};
@@ -15,6 +15,7 @@ function useCopyButton(_ref) {
15
15
  size,
16
16
  valueToCopy,
17
17
  onValueRequest,
18
+ onClickCopy,
18
19
  disabled,
19
20
  prefix = '',
20
21
  postfix = ''
@@ -28,7 +29,8 @@ function useCopyButton(_ref) {
28
29
  size: input_private_1.BUTTON_SIZE_MAP[size],
29
30
  valueToCopy: (prefix !== null && prefix !== void 0 ? prefix : '') + valueToCopy + (postfix !== null && postfix !== void 0 ? postfix : ''),
30
31
  onValueRequest: onValueRequest,
32
+ onClick: onClickCopy,
31
33
  disabled: disabled
32
34
  }))
33
- }), [copyButtonRef, disabled, onValueRequest, showCopyButton, size, valueToCopy, prefix, postfix]);
35
+ }), [copyButtonRef, showCopyButton, size, prefix, valueToCopy, postfix, onValueRequest, onClickCopy, disabled]);
34
36
  }
@@ -11,6 +11,8 @@ type FieldDateOwnProps = {
11
11
  onOpenChange?(value: boolean): void;
12
12
  /** Отображение кнопки копирования */
13
13
  showCopyButton?: boolean;
14
+ /** Колбек клика по кнопке Копировать для поля */
15
+ onClickCopy?(): void;
14
16
  /**
15
17
  * Отображение кнопки Очистки поля
16
18
  * @default true
@@ -29,6 +31,8 @@ export declare const FieldColor: import("react").ForwardRefExoticComponent<{
29
31
  onOpenChange?(value: boolean): void;
30
32
  /** Отображение кнопки копирования */
31
33
  showCopyButton?: boolean;
34
+ /** Колбек клика по кнопке Копировать для поля */
35
+ onClickCopy?(): void;
32
36
  /**
33
37
  * Отображение кнопки Очистки поля
34
38
  * @default true
@@ -24,7 +24,7 @@ import { getValidationState } from '../../utils/getValidationState';
24
24
  import { FieldDecorator } from '../FieldDecorator';
25
25
  import styles from './styles.module.css';
26
26
  export const FieldColor = forwardRef((_a, ref) => {
27
- var { id, name, value: valueProp, disabled = false, readonly = false, showCopyButton: showCopyButtonProp = true, showClearButton: showClearButtonProp = true, open, onChange, onOpenChange, className, label, labelTooltip, labelTooltipPlacement, required = false, caption, hint, showHintIcon, size = SIZE.S, validationState = VALIDATION_STATE.Default, error, withAlpha, autoApply, placeholder, onFocus, onBlur } = _a, rest = __rest(_a, ["id", "name", "value", "disabled", "readonly", "showCopyButton", "showClearButton", "open", "onChange", "onOpenChange", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "showHintIcon", "size", "validationState", "error", "withAlpha", "autoApply", "placeholder", "onFocus", "onBlur"]);
27
+ var { id, name, value: valueProp, disabled = false, readonly = false, showCopyButton: showCopyButtonProp = true, showClearButton: showClearButtonProp = true, open, onChange, onOpenChange, className, label, labelTooltip, labelTooltipPlacement, required = false, caption, hint, showHintIcon, size = SIZE.S, validationState = VALIDATION_STATE.Default, error, withAlpha, autoApply, placeholder, onFocus, onBlur, onClickCopy } = _a, rest = __rest(_a, ["id", "name", "value", "disabled", "readonly", "showCopyButton", "showClearButton", "open", "onChange", "onOpenChange", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "showHintIcon", "size", "validationState", "error", "withAlpha", "autoApply", "placeholder", "onFocus", "onBlur", "onClickCopy"]);
28
28
  const [isOpen, setIsOpen] = useUncontrolledProp(open, false, onOpenChange);
29
29
  const localRef = useRef(null);
30
30
  const showDropList = isOpen && !readonly && !disabled;
@@ -43,7 +43,7 @@ export const FieldColor = forwardRef((_a, ref) => {
43
43
  }
44
44
  };
45
45
  const clearButtonSettings = useClearButton({ clearButtonRef, showClearButton, size, onClear });
46
- const copyButtonSettings = useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy: value });
46
+ const copyButtonSettings = useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy: value, onClickCopy });
47
47
  const { postfixButtons, inputTabIndex, onInputKeyDown } = useButtonNavigation({
48
48
  inputRef: localRef,
49
49
  postfixButtons: useMemo(() => [clearButtonSettings, copyButtonSettings], [clearButtonSettings, copyButtonSettings]),
@@ -21,6 +21,8 @@ type FieldDateOwnProps = {
21
21
  onChange?(value: Date | undefined): void;
22
22
  /** Отображение кнопки копирования */
23
23
  showCopyButton?: boolean;
24
+ /** Колбек клика по кнопке Копировать для поля */
25
+ onClickCopy?(): void;
24
26
  /**
25
27
  * Отображение кнопки Очистки поля
26
28
  * @default true
@@ -26,7 +26,7 @@ import { FieldDecorator } from '../FieldDecorator';
26
26
  import styles from './styles.module.css';
27
27
  export const FieldDate = forwardRef((_a, ref) => {
28
28
  var _b;
29
- var { id, name, value: valueProp, disabled = false, readonly = false, showCopyButton: showCopyButtonProp = true, showClearButton: showClearButtonProp = true, open, onOpenChange, onChange, onFocus, onBlur: onBlurProp, className, label, labelTooltip, labelTooltipPlacement, required = false, caption, hint, showHintIcon, size = SIZE.S, validationState = VALIDATION_STATE.Default, buildCellProps, error, mode } = _a, rest = __rest(_a, ["id", "name", "value", "disabled", "readonly", "showCopyButton", "showClearButton", "open", "onOpenChange", "onChange", "onFocus", "onBlur", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "showHintIcon", "size", "validationState", "buildCellProps", "error", "mode"]);
29
+ var { id, name, value: valueProp, disabled = false, readonly = false, showCopyButton: showCopyButtonProp = true, showClearButton: showClearButtonProp = true, open, onOpenChange, onChange, onFocus, onBlur: onBlurProp, className, label, labelTooltip, labelTooltipPlacement, required = false, caption, hint, showHintIcon, size = SIZE.S, validationState = VALIDATION_STATE.Default, buildCellProps, error, mode, onClickCopy } = _a, rest = __rest(_a, ["id", "name", "value", "disabled", "readonly", "showCopyButton", "showClearButton", "open", "onOpenChange", "onChange", "onFocus", "onBlur", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "showHintIcon", "size", "validationState", "buildCellProps", "error", "mode", "onClickCopy"]);
30
30
  const [isOpen, setIsOpen] = useUncontrolledProp(open, false, onOpenChange);
31
31
  const localRef = useRef(null);
32
32
  const clearButtonRef = useRef(null);
@@ -77,7 +77,7 @@ export const FieldDate = forwardRef((_a, ref) => {
77
77
  }, [mode, showSeconds]);
78
78
  const valueToCopy = getStringDateValue(valueProp);
79
79
  const clearButtonSettings = useClearButton({ clearButtonRef, showClearButton, size, onClear: handleClear });
80
- const copyButtonSettings = useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy });
80
+ const copyButtonSettings = useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy, onClickCopy });
81
81
  const calendarIcon = useMemo(() => ({
82
82
  active: false,
83
83
  show: true,
@@ -11,6 +11,8 @@ type FieldSecureOwnProps = {
11
11
  onHiddenChange?(value: boolean): void;
12
12
  /** Отображение кнопки копирования */
13
13
  showCopyButton?: boolean;
14
+ /** Колбек клика по кнопке Копировать для поля */
15
+ onClickCopy?(): void;
14
16
  /** Можно ли вводить больше разрешённого кол-ва символов */
15
17
  allowMoreThanMaxLength?: boolean;
16
18
  /** Иконка-префикс для поля */
@@ -30,7 +30,7 @@ import { useCopyButton, useHideButton, useValueControl } from '../../hooks';
30
30
  import { getValidationState } from '../../utils/getValidationState';
31
31
  import { FieldDecorator } from '../FieldDecorator';
32
32
  export const FieldSecure = forwardRef((_a, ref) => {
33
- var { id, name, value: valueProp, placeholder, maxLength, disabled = false, readonly = false, showCopyButton: showCopyButtonProp = true, allowMoreThanMaxLength = false, hidden: hiddenProp, onHiddenChange, showHintIcon, onChange: onChangeProp, onFocus, onBlur, className, label, labelTooltip, labelTooltipPlacement, required = false, caption, hint, size = SIZE.S, validationState = VALIDATION_STATE.Default, prefixIcon, error, asyncValueGetter, autoComplete } = _a, rest = __rest(_a, ["id", "name", "value", "placeholder", "maxLength", "disabled", "readonly", "showCopyButton", "allowMoreThanMaxLength", "hidden", "onHiddenChange", "showHintIcon", "onChange", "onFocus", "onBlur", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "size", "validationState", "prefixIcon", "error", "asyncValueGetter", "autoComplete"]);
33
+ var { id, name, value: valueProp, placeholder, maxLength, disabled = false, readonly = false, showCopyButton: showCopyButtonProp = true, allowMoreThanMaxLength = false, hidden: hiddenProp, onHiddenChange, showHintIcon, onChange: onChangeProp, onFocus, onBlur, className, label, labelTooltip, labelTooltipPlacement, required = false, caption, hint, size = SIZE.S, validationState = VALIDATION_STATE.Default, prefixIcon, error, asyncValueGetter, autoComplete, onClickCopy } = _a, rest = __rest(_a, ["id", "name", "value", "placeholder", "maxLength", "disabled", "readonly", "showCopyButton", "allowMoreThanMaxLength", "hidden", "onHiddenChange", "showHintIcon", "onChange", "onFocus", "onBlur", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "size", "validationState", "prefixIcon", "error", "asyncValueGetter", "autoComplete", "onClickCopy"]);
34
34
  const localRef = useRef(null);
35
35
  const copyButtonRef = useRef(null);
36
36
  const hideButtonRef = useRef(null);
@@ -95,6 +95,7 @@ export const FieldSecure = forwardRef((_a, ref) => {
95
95
  valueToCopy: value,
96
96
  onValueRequest: getAsyncValue,
97
97
  disabled: isLoading,
98
+ onClickCopy,
98
99
  });
99
100
  const hideButtonSettings = useHideButton({
100
101
  hideButtonRef,
@@ -14,6 +14,7 @@ export declare const FieldSelectMultiple: import("react").ForwardRefExoticCompon
14
14
  pinBottom?: import("./types").OptionProps[];
15
15
  searchable?: boolean;
16
16
  showCopyButton?: boolean;
17
+ onClickCopy?(): void;
17
18
  showClearButton?: boolean;
18
19
  readonly?: boolean;
19
20
  prefixIcon?: import("react").ReactElement;
@@ -32,7 +32,7 @@ const defaultSelectedOptionFormatter = item =>
32
32
  (item === null || item === void 0 ? void 0 : item.content.option) || '';
33
33
  export const FieldSelectMultiple = forwardRef((props, ref) => {
34
34
  var _a;
35
- const { id, name, placeholder, size = 's', options, value: valueProp, defaultValue, onChange: onChangeProp, disabled = false, readonly = false, searchable = true, showClearButton = true, onKeyDown: onInputKeyDownProp, validationState = 'default', search, autocomplete = false, prefixIcon, prefix, postfix, removeByBackspace = false, addOptionByEnter = false, untouchableScrollbars = false, open: openProp, enableFuzzySearch = true, resetSearchOnOptionSelection = true, onOpenChange, selectedOptionFormatter = defaultSelectedOptionFormatter } = props, rest = __rest(props, ["id", "name", "placeholder", "size", "options", "value", "defaultValue", "onChange", "disabled", "readonly", "searchable", "showClearButton", "onKeyDown", "validationState", "search", "autocomplete", "prefixIcon", "prefix", "postfix", "removeByBackspace", "addOptionByEnter", "untouchableScrollbars", "open", "enableFuzzySearch", "resetSearchOnOptionSelection", "onOpenChange", "selectedOptionFormatter"]);
35
+ const { id, name, placeholder, size = 's', options, value: valueProp, defaultValue, onChange: onChangeProp, disabled = false, readonly = false, searchable = true, showClearButton = true, onKeyDown: onInputKeyDownProp, validationState = 'default', search, autocomplete = false, prefixIcon, prefix, postfix, removeByBackspace = false, addOptionByEnter = false, untouchableScrollbars = false, open: openProp, enableFuzzySearch = true, resetSearchOnOptionSelection = true, onOpenChange, selectedOptionFormatter = defaultSelectedOptionFormatter, onClickCopy } = props, rest = __rest(props, ["id", "name", "placeholder", "size", "options", "value", "defaultValue", "onChange", "disabled", "readonly", "searchable", "showClearButton", "onKeyDown", "validationState", "search", "autocomplete", "prefixIcon", "prefix", "postfix", "removeByBackspace", "addOptionByEnter", "untouchableScrollbars", "open", "enableFuzzySearch", "resetSearchOnOptionSelection", "onOpenChange", "selectedOptionFormatter", "onClickCopy"]);
36
36
  const localRef = useRef(null);
37
37
  const inputPlugRef = useRef(null);
38
38
  const contentRef = useRef(null);
@@ -66,6 +66,7 @@ export const FieldSelectMultiple = forwardRef((props, ref) => {
66
66
  showCopyButton: false,
67
67
  inputRef: localRef,
68
68
  onClear,
69
+ onClickCopy,
69
70
  });
70
71
  const commonHandleOnKeyDown = useHandleOnKeyDown({
71
72
  inputKeyDownNavigationHandler,
@@ -12,6 +12,7 @@ export declare const FieldSelectSingle: import("react").ForwardRefExoticComponen
12
12
  pinBottom?: import("./types").OptionProps[];
13
13
  searchable?: boolean;
14
14
  showCopyButton?: boolean;
15
+ onClickCopy?(): void;
15
16
  showClearButton?: boolean;
16
17
  readonly?: boolean;
17
18
  prefixIcon?: import("react").ReactElement;
@@ -29,7 +29,7 @@ const defaultSelectedOptionFormatter = item =>
29
29
  // @ts-expect-error
30
30
  (item === null || item === void 0 ? void 0 : item.content.option) || '';
31
31
  export const FieldSelectSingle = forwardRef((props, ref) => {
32
- const { id, name, placeholder, size = 's', options, value: valueProp, defaultValue, onChange: onChangeProp, disabled = false, readonly = false, searchable = true, showCopyButton = true, showClearButton = true, onKeyDown: onInputKeyDownProp, required = false, validationState = 'default', search, autocomplete = false, prefixIcon, prefix, postfix, addOptionByEnter = false, untouchableScrollbars = false, open: openProp, onOpenChange, selectedOptionFormatter = defaultSelectedOptionFormatter, enableFuzzySearch = true } = props, rest = __rest(props, ["id", "name", "placeholder", "size", "options", "value", "defaultValue", "onChange", "disabled", "readonly", "searchable", "showCopyButton", "showClearButton", "onKeyDown", "required", "validationState", "search", "autocomplete", "prefixIcon", "prefix", "postfix", "addOptionByEnter", "untouchableScrollbars", "open", "onOpenChange", "selectedOptionFormatter", "enableFuzzySearch"]);
32
+ const { id, name, placeholder, size = 's', options, value: valueProp, defaultValue, onChange: onChangeProp, disabled = false, readonly = false, searchable = true, showCopyButton = true, showClearButton = true, onKeyDown: onInputKeyDownProp, required = false, validationState = 'default', search, autocomplete = false, prefixIcon, prefix, postfix, addOptionByEnter = false, untouchableScrollbars = false, open: openProp, onOpenChange, selectedOptionFormatter = defaultSelectedOptionFormatter, enableFuzzySearch = true, onClickCopy } = props, rest = __rest(props, ["id", "name", "placeholder", "size", "options", "value", "defaultValue", "onChange", "disabled", "readonly", "searchable", "showCopyButton", "showClearButton", "onKeyDown", "required", "validationState", "search", "autocomplete", "prefixIcon", "prefix", "postfix", "addOptionByEnter", "untouchableScrollbars", "open", "onOpenChange", "selectedOptionFormatter", "enableFuzzySearch", "onClickCopy"]);
33
33
  const localRef = useRef(null);
34
34
  const [open = false, setOpen] = useValueControl({ value: openProp, onChange: onOpenChange });
35
35
  const [value, setValue] = useValueControl({
@@ -73,6 +73,7 @@ export const FieldSelectSingle = forwardRef((props, ref) => {
73
73
  showCopyButton,
74
74
  inputRef: localRef,
75
75
  onClear,
76
+ onClickCopy,
76
77
  valueToCopy: selectedOptionFormatter(selectedItem),
77
78
  });
78
79
  const handleBlur = (e) => {
@@ -14,10 +14,11 @@ type UseButtonsProps = {
14
14
  showCopyButton: boolean;
15
15
  size: 's' | 'm' | 'l';
16
16
  onClear(): void;
17
+ onClickCopy?(): void;
17
18
  inputRef: RefObject<HTMLInputElement>;
18
19
  valueToCopy?: string;
19
20
  };
20
- export declare function useButtons({ readonly, showClearButton, showCopyButton, size, onClear, inputRef, valueToCopy, }: UseButtonsProps): {
21
+ export declare function useButtons({ readonly, showClearButton, showCopyButton, size, onClear, onClickCopy, inputRef, valueToCopy, }: UseButtonsProps): {
21
22
  postfixButtons: import("react/jsx-runtime").JSX.Element | undefined;
22
23
  inputKeyDownNavigationHandler: KeyboardEventHandler<HTMLInputElement>;
23
24
  buttonsRefs: (Element | null)[];
@@ -26,7 +26,7 @@ export function useHandleOnKeyDown({ setOpen, inputKeyDownNavigationHandler, onI
26
26
  onInputKeyDownProp === null || onInputKeyDownProp === void 0 ? void 0 : onInputKeyDownProp(e);
27
27
  }, [inputKeyDownNavigationHandler, onInputKeyDownProp, setOpen]);
28
28
  }
29
- export function useButtons({ readonly, showClearButton, showCopyButton, size, onClear, inputRef, valueToCopy = '', }) {
29
+ export function useButtons({ readonly, showClearButton, showCopyButton, size, onClear, onClickCopy, inputRef, valueToCopy = '', }) {
30
30
  const clearButtonRef = useRef(null);
31
31
  const copyButtonRef = useRef(null);
32
32
  const buttonsRefs = [copyButtonRef.current, clearButtonRef.current];
@@ -41,6 +41,7 @@ export function useButtons({ readonly, showClearButton, showCopyButton, size, on
41
41
  showCopyButton: readonly && showCopyButton,
42
42
  size,
43
43
  valueToCopy,
44
+ onClickCopy,
44
45
  });
45
46
  const { onInputKeyDown: inputKeyDownNavigationHandler, postfixButtons } = useButtonNavigation({
46
47
  inputRef,
@@ -46,6 +46,8 @@ type FiledSelectCommonProps = WithSupportProps<{
46
46
  searchable?: boolean;
47
47
  /** Отображение кнопки Копировать для поля (актуально только для `readonly = true`) */
48
48
  showCopyButton?: boolean;
49
+ /** Колбек клика по кнопке Копировать для поля */
50
+ onClickCopy?(): void;
49
51
  /**
50
52
  * Отображение кнопки очистки поля
51
53
  * @default true
@@ -8,6 +8,8 @@ type WrapperProps = Pick<FieldDecoratorProps, 'className' | 'label' | 'labelTool
8
8
  type FieldTextOwnProps = {
9
9
  /** Отображение кнопки Копировать для поля (актуально только для `readonly = true`) */
10
10
  showCopyButton?: boolean;
11
+ /** Колбек клика по кнопке Копировать для поля */
12
+ onClickCopy?(): void;
11
13
  /**
12
14
  * Отображение кнопки очистки поля
13
15
  * @default true
@@ -21,7 +21,7 @@ import { getValidationState } from '../../utils/getValidationState';
21
21
  import { FieldDecorator } from '../FieldDecorator';
22
22
  import { getContainerVariant } from './helpers';
23
23
  export const FieldText = forwardRef((_a, ref) => {
24
- var { id, name, value: valueProp, placeholder, maxLength, disabled = false, readonly = false, showCopyButton: showCopyButtonProp = true, showClearButton: showClearButtonProp = true, allowMoreThanMaxLength = false, onChange: onChangeProp, onFocus, onBlur, className, label, labelTooltip, labelTooltipPlacement, required = false, caption, hint, showHintIcon, size = SIZE.S, validationState = VALIDATION_STATE.Default, error, autoComplete, prefixIcon, prefix, postfix, button: buttonProp } = _a, rest = __rest(_a, ["id", "name", "value", "placeholder", "maxLength", "disabled", "readonly", "showCopyButton", "showClearButton", "allowMoreThanMaxLength", "onChange", "onFocus", "onBlur", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "showHintIcon", "size", "validationState", "error", "autoComplete", "prefixIcon", "prefix", "postfix", "button"]);
24
+ var { id, name, value: valueProp, placeholder, maxLength, disabled = false, readonly = false, showCopyButton: showCopyButtonProp = true, showClearButton: showClearButtonProp = true, allowMoreThanMaxLength = false, onChange: onChangeProp, onFocus, onBlur, onClickCopy, className, label, labelTooltip, labelTooltipPlacement, required = false, caption, hint, showHintIcon, size = SIZE.S, validationState = VALIDATION_STATE.Default, error, autoComplete, prefixIcon, prefix, postfix, button: buttonProp } = _a, rest = __rest(_a, ["id", "name", "value", "placeholder", "maxLength", "disabled", "readonly", "showCopyButton", "showClearButton", "allowMoreThanMaxLength", "onChange", "onFocus", "onBlur", "onClickCopy", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "showHintIcon", "size", "validationState", "error", "autoComplete", "prefixIcon", "prefix", "postfix", "button"]);
25
25
  const [value = '', onChange] = useValueControl({
26
26
  value: valueProp,
27
27
  defaultValue: '',
@@ -56,6 +56,7 @@ export const FieldText = forwardRef((_a, ref) => {
56
56
  valueToCopy: value,
57
57
  prefix: typeof prefix === 'string' ? prefix : undefined,
58
58
  postfix: typeof postfix === 'string' ? postfix : undefined,
59
+ onClickCopy,
59
60
  });
60
61
  const [isButtonFocused, setIsButtonFocused] = useState(false);
61
62
  const onButtonFocus = useCallback(() => setIsButtonFocused(true), []);
@@ -15,6 +15,8 @@ type FieldTextAreaOwnProps = {
15
15
  onChange?(value: string, e?: ChangeEvent<HTMLTextAreaElement>): void;
16
16
  /** Отображение кнопки Копировать для поля (актуально только для `readonly = true`) */
17
17
  showCopyButton?: boolean;
18
+ /** Колбек клика по кнопке Копировать для поля */
19
+ onClickCopy?(): void;
18
20
  /**
19
21
  * Отображение кнопки очистки поля
20
22
  * @default true
@@ -22,7 +22,7 @@ import { getValidationState } from '../../utils/getValidationState';
22
22
  import { FieldDecorator } from '../FieldDecorator';
23
23
  import styles from './styles.module.css';
24
24
  export const FieldTextArea = forwardRef((_a, ref) => {
25
- var { id, name, value: valueProp, placeholder, maxLength, minRows = 3, maxRows = 1000, disabled = false, resizable = false, readonly = false, showCopyButton: showCopyButtonProp = true, showClearButton: showClearButtonProp = true, allowMoreThanMaxLength = true, showHintIcon, onChange: onChangeProp, onFocus, onBlur, className, label, labelTooltip, labelTooltipPlacement, required = false, caption, hint, error, size = SIZE.S, validationState = VALIDATION_STATE.Default } = _a, rest = __rest(_a, ["id", "name", "value", "placeholder", "maxLength", "minRows", "maxRows", "disabled", "resizable", "readonly", "showCopyButton", "showClearButton", "allowMoreThanMaxLength", "showHintIcon", "onChange", "onFocus", "onBlur", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "error", "size", "validationState"]);
25
+ var { id, name, value: valueProp, placeholder, maxLength, minRows = 3, maxRows = 1000, disabled = false, resizable = false, readonly = false, showCopyButton: showCopyButtonProp = true, showClearButton: showClearButtonProp = true, allowMoreThanMaxLength = true, showHintIcon, onChange: onChangeProp, onFocus, onBlur, className, label, labelTooltip, labelTooltipPlacement, required = false, caption, hint, error, size = SIZE.S, validationState = VALIDATION_STATE.Default, onClickCopy } = _a, rest = __rest(_a, ["id", "name", "value", "placeholder", "maxLength", "minRows", "maxRows", "disabled", "resizable", "readonly", "showCopyButton", "showClearButton", "allowMoreThanMaxLength", "showHintIcon", "onChange", "onFocus", "onBlur", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "error", "size", "validationState", "onClickCopy"]);
26
26
  const localRef = useRef(null);
27
27
  const clearButtonRef = useRef(null);
28
28
  const copyButtonRef = useRef(null);
@@ -43,7 +43,7 @@ export const FieldTextArea = forwardRef((_a, ref) => {
43
43
  }
44
44
  };
45
45
  const clearButtonSettings = useClearButton({ clearButtonRef, showClearButton, size, onClear });
46
- const copyButtonSettings = useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy: value });
46
+ const copyButtonSettings = useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy: value, onClickCopy });
47
47
  const { postfixButtons, inputTabIndex, onInputKeyDown } = useButtonNavigation({
48
48
  inputRef: localRef,
49
49
  postfixButtons: useMemo(() => [clearButtonSettings, copyButtonSettings], [clearButtonSettings, copyButtonSettings]),
@@ -15,6 +15,8 @@ type FieldTimeOwnProps = {
15
15
  onChange?: TimePickerProps['onChangeValue'];
16
16
  /** Отображение кнопки копирования */
17
17
  showCopyButton?: boolean;
18
+ /** Колбек клика по кнопке Копировать для поля */
19
+ onClickCopy?(): void;
18
20
  /** Показывать ли секунды */
19
21
  showSeconds?: boolean;
20
22
  /**
@@ -40,7 +40,7 @@ const getStringTimeValue = (time, { showSeconds, locale }) => {
40
40
  });
41
41
  };
42
42
  export const FieldTime = forwardRef((_a, ref) => {
43
- var { id, name, value: valueProp, disabled = false, readonly = false, showCopyButton: showCopyButtonProp = true, showClearButton: showClearButtonProp = true, open, onOpenChange, onChange, onFocus, onBlur: onBlurProp, className, label, labelTooltip, labelTooltipPlacement, required = false, caption, hint, showHintIcon, showSeconds = true, size = SIZE.S, validationState = VALIDATION_STATE.Default, error } = _a, rest = __rest(_a, ["id", "name", "value", "disabled", "readonly", "showCopyButton", "showClearButton", "open", "onOpenChange", "onChange", "onFocus", "onBlur", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "showHintIcon", "showSeconds", "size", "validationState", "error"]);
43
+ var { id, name, value: valueProp, disabled = false, readonly = false, showCopyButton: showCopyButtonProp = true, showClearButton: showClearButtonProp = true, open, onOpenChange, onChange, onFocus, onBlur: onBlurProp, className, label, labelTooltip, labelTooltipPlacement, required = false, caption, hint, showHintIcon, showSeconds = true, size = SIZE.S, validationState = VALIDATION_STATE.Default, error, onClickCopy } = _a, rest = __rest(_a, ["id", "name", "value", "disabled", "readonly", "showCopyButton", "showClearButton", "open", "onOpenChange", "onChange", "onFocus", "onBlur", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "showHintIcon", "showSeconds", "size", "validationState", "error", "onClickCopy"]);
44
44
  const [isOpen, setIsOpen] = useUncontrolledProp(open, false, onOpenChange);
45
45
  const localRef = useRef(null);
46
46
  const clearButtonRef = useRef(null);
@@ -75,7 +75,7 @@ export const FieldTime = forwardRef((_a, ref) => {
75
75
  }, [onChange, required, setIsOpen]);
76
76
  const valueToCopy = getStringTimeValue(valueProp, { showSeconds, locale: DEFAULT_LOCALE });
77
77
  const clearButtonSettings = useClearButton({ clearButtonRef, showClearButton, size, onClear: handleClear });
78
- const copyButtonSettings = useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy });
78
+ const copyButtonSettings = useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy, onClickCopy });
79
79
  const calendarIcon = useMemo(() => ({
80
80
  active: false,
81
81
  show: true,
@@ -7,9 +7,10 @@ type UseCopyButtonProps = {
7
7
  valueToCopy: string;
8
8
  size: Size;
9
9
  onValueRequest?(): AsyncValueRequest;
10
+ onClickCopy?(): void;
10
11
  disabled?: boolean;
11
12
  prefix?: string;
12
13
  postfix?: string;
13
14
  };
14
- export declare function useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy, onValueRequest, disabled, prefix, postfix, }: UseCopyButtonProps): ButtonProps;
15
+ export declare function useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy, onValueRequest, onClickCopy, disabled, prefix, postfix, }: UseCopyButtonProps): ButtonProps;
15
16
  export {};
@@ -2,12 +2,12 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useMemo } from 'react';
3
3
  import { BUTTON_SIZE_MAP } from '@snack-uikit/input-private';
4
4
  import { ButtonCopyValue } from '../helperComponents';
5
- export function useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy, onValueRequest, disabled, prefix = '', postfix = '', }) {
5
+ export function useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy, onValueRequest, onClickCopy, disabled, prefix = '', postfix = '', }) {
6
6
  return useMemo(() => ({
7
7
  id: 'copy',
8
8
  active: true,
9
9
  ref: copyButtonRef,
10
10
  show: showCopyButton,
11
- render: props => (_jsx(ButtonCopyValue, Object.assign({}, props, { size: BUTTON_SIZE_MAP[size], valueToCopy: (prefix !== null && prefix !== void 0 ? prefix : '') + valueToCopy + (postfix !== null && postfix !== void 0 ? postfix : ''), onValueRequest: onValueRequest, disabled: disabled }))),
12
- }), [copyButtonRef, disabled, onValueRequest, showCopyButton, size, valueToCopy, prefix, postfix]);
11
+ render: props => (_jsx(ButtonCopyValue, Object.assign({}, props, { size: BUTTON_SIZE_MAP[size], valueToCopy: (prefix !== null && prefix !== void 0 ? prefix : '') + valueToCopy + (postfix !== null && postfix !== void 0 ? postfix : ''), onValueRequest: onValueRequest, onClick: onClickCopy, disabled: disabled }))),
12
+ }), [copyButtonRef, showCopyButton, size, prefix, valueToCopy, postfix, onValueRequest, onClickCopy, disabled]);
13
13
  }
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "title": "Fields",
7
- "version": "0.32.2",
7
+ "version": "0.32.4-preview-481a0237.0",
8
8
  "sideEffects": [
9
9
  "*.css",
10
10
  "*.woff",
@@ -37,13 +37,13 @@
37
37
  "scripts": {},
38
38
  "dependencies": {
39
39
  "@snack-uikit/button": "0.19.1",
40
- "@snack-uikit/calendar": "0.11.2",
40
+ "@snack-uikit/calendar": "0.11.3",
41
41
  "@snack-uikit/color-picker": "0.3.1",
42
42
  "@snack-uikit/divider": "3.2.0",
43
43
  "@snack-uikit/dropdown": "0.4.0",
44
44
  "@snack-uikit/icons": "0.24.0",
45
45
  "@snack-uikit/input-private": "4.2.1",
46
- "@snack-uikit/list": "0.21.2",
46
+ "@snack-uikit/list": "0.21.3",
47
47
  "@snack-uikit/scroll": "0.9.0",
48
48
  "@snack-uikit/skeleton": "0.5.0",
49
49
  "@snack-uikit/slider": "0.3.1",
@@ -65,5 +65,5 @@
65
65
  "peerDependencies": {
66
66
  "@snack-uikit/locale": "*"
67
67
  },
68
- "gitHead": "df11a8777bfe0bd167f02aff8c393c48a24c1173"
68
+ "gitHead": "d3588d229ca3a76ee95cd5d6176302c51d5012fc"
69
69
  }
@@ -41,6 +41,8 @@ type FieldDateOwnProps = {
41
41
  onOpenChange?(value: boolean): void;
42
42
  /** Отображение кнопки копирования */
43
43
  showCopyButton?: boolean;
44
+ /** Колбек клика по кнопке Копировать для поля */
45
+ onClickCopy?(): void;
44
46
  /**
45
47
  * Отображение кнопки Очистки поля
46
48
  * @default true
@@ -82,6 +84,7 @@ export const FieldColor = forwardRef<HTMLInputElement, FieldColorProps>(
82
84
  placeholder,
83
85
  onFocus,
84
86
  onBlur,
87
+ onClickCopy,
85
88
  ...rest
86
89
  },
87
90
  ref,
@@ -110,7 +113,7 @@ export const FieldColor = forwardRef<HTMLInputElement, FieldColorProps>(
110
113
  };
111
114
 
112
115
  const clearButtonSettings = useClearButton({ clearButtonRef, showClearButton, size, onClear });
113
- const copyButtonSettings = useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy: value });
116
+ const copyButtonSettings = useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy: value, onClickCopy });
114
117
  const { postfixButtons, inputTabIndex, onInputKeyDown } = useButtonNavigation({
115
118
  inputRef: localRef,
116
119
  postfixButtons: useMemo(
@@ -58,6 +58,8 @@ type FieldDateOwnProps = {
58
58
  onChange?(value: Date | undefined): void;
59
59
  /** Отображение кнопки копирования */
60
60
  showCopyButton?: boolean;
61
+ /** Колбек клика по кнопке Копировать для поля */
62
+ onClickCopy?(): void;
61
63
  /**
62
64
  * Отображение кнопки Очистки поля
63
65
  * @default true
@@ -102,6 +104,7 @@ export const FieldDate = forwardRef<HTMLInputElement, FieldDateProps>(
102
104
  buildCellProps,
103
105
  error,
104
106
  mode,
107
+ onClickCopy,
105
108
  ...rest
106
109
  },
107
110
  ref,
@@ -168,7 +171,7 @@ export const FieldDate = forwardRef<HTMLInputElement, FieldDateProps>(
168
171
 
169
172
  const valueToCopy = getStringDateValue(valueProp);
170
173
  const clearButtonSettings = useClearButton({ clearButtonRef, showClearButton, size, onClear: handleClear });
171
- const copyButtonSettings = useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy });
174
+ const copyButtonSettings = useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy, onClickCopy });
172
175
  const calendarIcon: ButtonProps = useMemo(
173
176
  () => ({
174
177
  active: false,
@@ -47,6 +47,8 @@ type FieldSecureOwnProps = {
47
47
  onHiddenChange?(value: boolean): void;
48
48
  /** Отображение кнопки копирования */
49
49
  showCopyButton?: boolean;
50
+ /** Колбек клика по кнопке Копировать для поля */
51
+ onClickCopy?(): void;
50
52
  /** Можно ли вводить больше разрешённого кол-ва символов */
51
53
  allowMoreThanMaxLength?: boolean;
52
54
  /** Иконка-префикс для поля */
@@ -88,6 +90,7 @@ export const FieldSecure = forwardRef<HTMLInputElement, FieldSecureProps>(
88
90
  error,
89
91
  asyncValueGetter,
90
92
  autoComplete,
93
+ onClickCopy,
91
94
  ...rest
92
95
  },
93
96
  ref,
@@ -166,6 +169,7 @@ export const FieldSecure = forwardRef<HTMLInputElement, FieldSecureProps>(
166
169
  valueToCopy: value,
167
170
  onValueRequest: getAsyncValue,
168
171
  disabled: isLoading,
172
+ onClickCopy,
169
173
  });
170
174
 
171
175
  const hideButtonSettings = useHideButton({
@@ -53,6 +53,7 @@ export const FieldSelectMultiple = forwardRef<HTMLInputElement, FieldSelectMulti
53
53
  resetSearchOnOptionSelection = true,
54
54
  onOpenChange,
55
55
  selectedOptionFormatter = defaultSelectedOptionFormatter,
56
+ onClickCopy,
56
57
  ...rest
57
58
  } = props;
58
59
  const localRef = useRef<HTMLInputElement>(null);
@@ -104,6 +105,7 @@ export const FieldSelectMultiple = forwardRef<HTMLInputElement, FieldSelectMulti
104
105
  showCopyButton: false,
105
106
  inputRef: localRef,
106
107
  onClear,
108
+ onClickCopy,
107
109
  });
108
110
 
109
111
  const commonHandleOnKeyDown = useHandleOnKeyDown({
@@ -59,6 +59,7 @@ export const FieldSelectSingle = forwardRef<HTMLInputElement, FieldSelectSingleP
59
59
  onOpenChange,
60
60
  selectedOptionFormatter = defaultSelectedOptionFormatter,
61
61
  enableFuzzySearch = true,
62
+ onClickCopy,
62
63
  ...rest
63
64
  } = props;
64
65
  const localRef = useRef<HTMLInputElement>(null);
@@ -123,6 +124,7 @@ export const FieldSelectSingle = forwardRef<HTMLInputElement, FieldSelectSingleP
123
124
  showCopyButton,
124
125
  inputRef: localRef,
125
126
  onClear,
127
+ onClickCopy,
126
128
  valueToCopy: selectedOptionFormatter(selectedItem),
127
129
  });
128
130
 
@@ -60,6 +60,7 @@ type UseButtonsProps = {
60
60
  showCopyButton: boolean;
61
61
  size: 's' | 'm' | 'l';
62
62
  onClear(): void;
63
+ onClickCopy?(): void;
63
64
  inputRef: RefObject<HTMLInputElement>;
64
65
  valueToCopy?: string;
65
66
  };
@@ -70,6 +71,7 @@ export function useButtons({
70
71
  showCopyButton,
71
72
  size,
72
73
  onClear,
74
+ onClickCopy,
73
75
  inputRef,
74
76
  valueToCopy = '',
75
77
  }: UseButtonsProps) {
@@ -89,6 +91,7 @@ export function useButtons({
89
91
  showCopyButton: readonly && showCopyButton,
90
92
  size,
91
93
  valueToCopy,
94
+ onClickCopy,
92
95
  });
93
96
  const { onInputKeyDown: inputKeyDownNavigationHandler, postfixButtons } = useButtonNavigation({
94
97
  inputRef,
@@ -98,6 +98,8 @@ type FiledSelectCommonProps = WithSupportProps<{
98
98
  searchable?: boolean;
99
99
  /** Отображение кнопки Копировать для поля (актуально только для `readonly = true`) */
100
100
  showCopyButton?: boolean;
101
+ /** Колбек клика по кнопке Копировать для поля */
102
+ onClickCopy?(): void;
101
103
  /**
102
104
  * Отображение кнопки очистки поля
103
105
  * @default true
@@ -36,6 +36,8 @@ type WrapperProps = Pick<
36
36
  type FieldTextOwnProps = {
37
37
  /** Отображение кнопки Копировать для поля (актуально только для `readonly = true`) */
38
38
  showCopyButton?: boolean;
39
+ /** Колбек клика по кнопке Копировать для поля */
40
+ onClickCopy?(): void;
39
41
  /**
40
42
  * Отображение кнопки очистки поля
41
43
  * @default true
@@ -71,6 +73,7 @@ export const FieldText = forwardRef<HTMLInputElement, FieldTextProps>(
71
73
  onChange: onChangeProp,
72
74
  onFocus,
73
75
  onBlur,
76
+ onClickCopy,
74
77
  className,
75
78
  label,
76
79
  labelTooltip,
@@ -139,6 +142,7 @@ export const FieldText = forwardRef<HTMLInputElement, FieldTextProps>(
139
142
  valueToCopy: value,
140
143
  prefix: typeof prefix === 'string' ? prefix : undefined,
141
144
  postfix: typeof postfix === 'string' ? postfix : undefined,
145
+ onClickCopy,
142
146
  });
143
147
 
144
148
  const [isButtonFocused, setIsButtonFocused] = useState(false);
@@ -41,6 +41,8 @@ type FieldTextAreaOwnProps = {
41
41
  onChange?(value: string, e?: ChangeEvent<HTMLTextAreaElement>): void;
42
42
  /** Отображение кнопки Копировать для поля (актуально только для `readonly = true`) */
43
43
  showCopyButton?: boolean;
44
+ /** Колбек клика по кнопке Копировать для поля */
45
+ onClickCopy?(): void;
44
46
  /**
45
47
  * Отображение кнопки очистки поля
46
48
  * @default true
@@ -82,6 +84,7 @@ export const FieldTextArea = forwardRef<HTMLTextAreaElement, FieldTextAreaProps>
82
84
  error,
83
85
  size = SIZE.S,
84
86
  validationState = VALIDATION_STATE.Default,
87
+ onClickCopy,
85
88
  ...rest
86
89
  },
87
90
  ref,
@@ -110,7 +113,7 @@ export const FieldTextArea = forwardRef<HTMLTextAreaElement, FieldTextAreaProps>
110
113
  };
111
114
 
112
115
  const clearButtonSettings = useClearButton({ clearButtonRef, showClearButton, size, onClear });
113
- const copyButtonSettings = useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy: value });
116
+ const copyButtonSettings = useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy: value, onClickCopy });
114
117
  const { postfixButtons, inputTabIndex, onInputKeyDown } = useButtonNavigation({
115
118
  inputRef: localRef,
116
119
  postfixButtons: useMemo(
@@ -52,6 +52,8 @@ type FieldTimeOwnProps = {
52
52
  onChange?: TimePickerProps['onChangeValue'];
53
53
  /** Отображение кнопки копирования */
54
54
  showCopyButton?: boolean;
55
+ /** Колбек клика по кнопке Копировать для поля */
56
+ onClickCopy?(): void;
55
57
  /** Показывать ли секунды */
56
58
  showSeconds?: boolean;
57
59
  /**
@@ -110,6 +112,7 @@ export const FieldTime = forwardRef<HTMLInputElement, FieldTimeProps>(
110
112
  size = SIZE.S,
111
113
  validationState = VALIDATION_STATE.Default,
112
114
  error,
115
+ onClickCopy,
113
116
  ...rest
114
117
  },
115
118
  ref,
@@ -154,7 +157,7 @@ export const FieldTime = forwardRef<HTMLInputElement, FieldTimeProps>(
154
157
 
155
158
  const valueToCopy = getStringTimeValue(valueProp, { showSeconds, locale: DEFAULT_LOCALE });
156
159
  const clearButtonSettings = useClearButton({ clearButtonRef, showClearButton, size, onClear: handleClear });
157
- const copyButtonSettings = useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy });
160
+ const copyButtonSettings = useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy, onClickCopy });
158
161
  const calendarIcon: ButtonProps = useMemo(
159
162
  () => ({
160
163
  active: false,
@@ -11,6 +11,7 @@ type UseCopyButtonProps = {
11
11
  valueToCopy: string;
12
12
  size: Size;
13
13
  onValueRequest?(): AsyncValueRequest;
14
+ onClickCopy?(): void;
14
15
  disabled?: boolean;
15
16
  prefix?: string;
16
17
  postfix?: string;
@@ -22,6 +23,7 @@ export function useCopyButton({
22
23
  size,
23
24
  valueToCopy,
24
25
  onValueRequest,
26
+ onClickCopy,
25
27
  disabled,
26
28
  prefix = '',
27
29
  postfix = '',
@@ -38,10 +40,11 @@ export function useCopyButton({
38
40
  size={BUTTON_SIZE_MAP[size]}
39
41
  valueToCopy={(prefix ?? '') + valueToCopy + (postfix ?? '')}
40
42
  onValueRequest={onValueRequest}
43
+ onClick={onClickCopy}
41
44
  disabled={disabled}
42
45
  />
43
46
  ),
44
47
  }),
45
- [copyButtonRef, disabled, onValueRequest, showCopyButton, size, valueToCopy, prefix, postfix],
48
+ [copyButtonRef, showCopyButton, size, prefix, valueToCopy, postfix, onValueRequest, onClickCopy, disabled],
46
49
  );
47
50
  }