@skbkontur/react-ui 6.0.7-b5d2c.0 → 6.0.7-eab55.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 (232) hide show
  1. package/components/Autocomplete/Autocomplete.js +15 -4
  2. package/components/Autocomplete/Autocomplete.js.map +1 -1
  3. package/components/Calendar/Calendar.d.ts +14 -14
  4. package/components/Calendar/Calendar.js +2 -2
  5. package/components/Calendar/Calendar.js.map +1 -1
  6. package/components/Calendar/CalendarDay.d.ts +2 -2
  7. package/components/Calendar/CalendarDay.js +4 -1
  8. package/components/Calendar/CalendarDay.js.map +1 -1
  9. package/components/Calendar/DayCellView.styles.d.ts +1 -0
  10. package/components/Calendar/DayCellView.styles.js +6 -3
  11. package/components/Calendar/DayCellView.styles.js.map +1 -1
  12. package/components/Center/Center.d.ts +3 -3
  13. package/components/Center/Center.js +2 -2
  14. package/components/Center/Center.js.map +1 -1
  15. package/components/Checkbox/Checkbox.d.ts +14 -11
  16. package/components/Checkbox/Checkbox.js +6 -3
  17. package/components/Checkbox/Checkbox.js.map +1 -1
  18. package/components/ComboBox/ComboBox.d.ts +3 -3
  19. package/components/ComboBox/ComboBox.js.map +1 -1
  20. package/components/DateInput/DateInput.d.ts +15 -15
  21. package/components/DateInput/DateInput.js +1 -1
  22. package/components/DateInput/DateInput.js.map +1 -1
  23. package/components/DatePicker/DatePicker.d.ts +16 -14
  24. package/components/DatePicker/DatePicker.js +5 -4
  25. package/components/DatePicker/DatePicker.js.map +1 -1
  26. package/components/DatePicker/MobilePicker.js +1 -1
  27. package/components/DatePicker/MobilePicker.js.map +1 -1
  28. package/components/DateRangePicker/DateRangePicker.d.ts +3 -4
  29. package/components/DateRangePicker/DateRangePicker.js +4 -6
  30. package/components/DateRangePicker/DateRangePicker.js.map +1 -1
  31. package/components/DateRangePicker/DateRangePickerInput.js +4 -6
  32. package/components/DateRangePicker/DateRangePickerInput.js.map +1 -1
  33. package/components/Dropdown/Dropdown.d.ts +15 -8
  34. package/components/Dropdown/Dropdown.js +8 -1
  35. package/components/Dropdown/Dropdown.js.map +1 -1
  36. package/components/DropdownMenu/DropdownMenu.d.ts +1 -2
  37. package/components/DropdownMenu/DropdownMenu.js +1 -2
  38. package/components/DropdownMenu/DropdownMenu.js.map +1 -1
  39. package/components/FileUploader/FileUploader.d.ts +6 -4
  40. package/components/FileUploader/FileUploader.js +3 -1
  41. package/components/FileUploader/FileUploader.js.map +1 -1
  42. package/components/FileUploader/FileUploaderFile.d.ts +3 -3
  43. package/components/FileUploader/FileUploaderFile.js +1 -1
  44. package/components/FileUploader/FileUploaderFile.js.map +1 -1
  45. package/components/Input/Input.d.ts +2 -2
  46. package/components/Input/Input.js.map +1 -1
  47. package/components/Loader/Loader.d.ts +12 -4
  48. package/components/Loader/Loader.js +18 -7
  49. package/components/Loader/Loader.js.map +1 -1
  50. package/components/MenuFooter/MenuFooter.d.ts +1 -1
  51. package/components/MenuFooter/MenuFooter.js +1 -1
  52. package/components/MenuFooter/MenuFooter.js.map +1 -1
  53. package/components/MenuHeader/MenuHeader.d.ts +2 -2
  54. package/components/MenuHeader/MenuHeader.js +1 -1
  55. package/components/MenuHeader/MenuHeader.js.map +1 -1
  56. package/components/MenuItem/MenuItem.d.ts +1 -0
  57. package/components/MenuItem/MenuItem.js +17 -1
  58. package/components/MenuItem/MenuItem.js.map +1 -1
  59. package/components/MenuItem/MenuItem.styles.d.ts +3 -0
  60. package/components/MenuItem/MenuItem.styles.js +25 -16
  61. package/components/MenuItem/MenuItem.styles.js.map +1 -1
  62. package/components/MenuSeparator/MenuSeparator.d.ts +1 -1
  63. package/components/MenuSeparator/MenuSeparator.js +1 -1
  64. package/components/MenuSeparator/MenuSeparator.js.map +1 -1
  65. package/components/MiniModal/MiniModal.d.ts +1 -1
  66. package/components/MiniModal/MiniModal.js +1 -1
  67. package/components/MiniModal/MiniModal.js.map +1 -1
  68. package/components/MiniModal/MiniModalBody.d.ts +1 -1
  69. package/components/MiniModal/MiniModalBody.js +1 -1
  70. package/components/MiniModal/MiniModalBody.js.map +1 -1
  71. package/components/MiniModal/MiniModalFooter.d.ts +1 -1
  72. package/components/MiniModal/MiniModalFooter.js +1 -1
  73. package/components/MiniModal/MiniModalFooter.js.map +1 -1
  74. package/components/MiniModal/MiniModalHeader.d.ts +1 -1
  75. package/components/MiniModal/MiniModalHeader.js +1 -1
  76. package/components/MiniModal/MiniModalHeader.js.map +1 -1
  77. package/components/Paging/Paging.d.ts +2 -2
  78. package/components/Paging/Paging.js.map +1 -1
  79. package/components/Radio/Radio.d.ts +7 -7
  80. package/components/Radio/Radio.js.map +1 -1
  81. package/components/RadioGroup/RadioGroup.d.ts +2 -2
  82. package/components/RadioGroup/RadioGroup.js.map +1 -1
  83. package/components/Select/Select.d.ts +4 -4
  84. package/components/Select/Select.js +11 -1
  85. package/components/Select/Select.js.map +1 -1
  86. package/components/SingleToast/SingleToast.d.ts +10 -7
  87. package/components/SingleToast/SingleToast.js +10 -7
  88. package/components/SingleToast/SingleToast.js.map +1 -1
  89. package/components/Spinner/Spinner.d.ts +23 -33
  90. package/components/Spinner/Spinner.js +23 -19
  91. package/components/Spinner/Spinner.js.map +1 -1
  92. package/components/Spinner/Spinner.styles.d.ts +0 -3
  93. package/components/Spinner/Spinner.styles.js +6 -15
  94. package/components/Spinner/Spinner.styles.js.map +1 -1
  95. package/components/Sticky/Sticky.d.ts +4 -0
  96. package/components/Sticky/Sticky.js +4 -0
  97. package/components/Sticky/Sticky.js.map +1 -1
  98. package/components/Switcher/Switcher.d.ts +10 -8
  99. package/components/Switcher/Switcher.js +3 -1
  100. package/components/Switcher/Switcher.js.map +1 -1
  101. package/components/Textarea/Textarea.js +1 -1
  102. package/components/Textarea/Textarea.js.map +1 -1
  103. package/components/Textarea/Textarea.styles.d.ts +1 -0
  104. package/components/Textarea/Textarea.styles.js +7 -4
  105. package/components/Textarea/Textarea.styles.js.map +1 -1
  106. package/components/Textarea/TextareaCounter.d.ts +2 -0
  107. package/components/Textarea/TextareaCounter.js +22 -4
  108. package/components/Textarea/TextareaCounter.js.map +1 -1
  109. package/components/TimePicker/TimeFragmentsView.js.map +1 -1
  110. package/components/TimePicker/TimeFragmentsView.styles.js +4 -4
  111. package/components/TimePicker/TimeFragmentsView.styles.js.map +1 -1
  112. package/components/TimePicker/TimeInput.d.ts +5 -7
  113. package/components/TimePicker/TimeInput.js +19 -7
  114. package/components/TimePicker/TimeInput.js.map +1 -1
  115. package/components/TimePicker/TimePicker.d.ts +39 -7
  116. package/components/TimePicker/TimePicker.js +275 -148
  117. package/components/TimePicker/TimePicker.js.map +1 -1
  118. package/components/TimePicker/TimePicker.styles.d.ts +3 -4
  119. package/components/TimePicker/TimePicker.styles.js +11 -14
  120. package/components/TimePicker/TimePicker.styles.js.map +1 -1
  121. package/components/TimePicker/TimePickerMobilePopup.d.ts +31 -0
  122. package/components/TimePicker/TimePickerMobilePopup.js +21 -0
  123. package/components/TimePicker/TimePickerMobilePopup.js.map +1 -0
  124. package/components/TimePicker/TimePickerPopup.d.ts +19 -0
  125. package/components/TimePicker/TimePickerPopup.js +18 -0
  126. package/components/TimePicker/TimePickerPopup.js.map +1 -0
  127. package/components/TimePicker/TimePickerSlots.d.ts +16 -0
  128. package/components/TimePicker/TimePickerSlots.js +67 -0
  129. package/components/TimePicker/TimePickerSlots.js.map +1 -0
  130. package/components/TimePicker/helpers/TimePicker.constants.d.ts +0 -1
  131. package/components/TimePicker/helpers/TimePicker.constants.js +0 -1
  132. package/components/TimePicker/helpers/TimePicker.constants.js.map +1 -1
  133. package/components/TimePicker/helpers/TimePicker.editing.js +10 -1
  134. package/components/TimePicker/helpers/TimePicker.editing.js.map +1 -1
  135. package/components/TimePicker/helpers/TimePicker.shared.d.ts +1 -2
  136. package/components/TimePicker/helpers/TimePicker.shared.js +4 -4
  137. package/components/TimePicker/helpers/TimePicker.shared.js.map +1 -1
  138. package/components/TimePicker/helpers/TimePicker.value.d.ts +3 -5
  139. package/components/TimePicker/helpers/TimePicker.value.js +21 -7
  140. package/components/TimePicker/helpers/TimePicker.value.js.map +1 -1
  141. package/components/TimePicker/hooks/useTimePickerValue.d.ts +1 -1
  142. package/components/TimePicker/hooks/useTimePickerValue.js +8 -7
  143. package/components/TimePicker/hooks/useTimePickerValue.js.map +1 -1
  144. package/components/Toast/Toast.d.ts +13 -14
  145. package/components/Toast/Toast.js +3 -3
  146. package/components/Toast/Toast.js.map +1 -1
  147. package/components/Toast/ToastView.d.ts +8 -5
  148. package/components/Toast/ToastView.js +28 -8
  149. package/components/Toast/ToastView.js.map +1 -1
  150. package/components/Toast/ToastView.styles.d.ts +7 -0
  151. package/components/Toast/ToastView.styles.js +30 -8
  152. package/components/Toast/ToastView.styles.js.map +1 -1
  153. package/components/Tooltip/Tooltip.d.ts +4 -4
  154. package/components/Tooltip/Tooltip.js.map +1 -1
  155. package/internal/CloseButtonIcon/CloseButtonIcon.js +1 -1
  156. package/internal/CloseButtonIcon/CloseButtonIcon.js.map +1 -1
  157. package/internal/CommonWrapper/CommonWrapper.js +5 -0
  158. package/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  159. package/internal/CustomComboBox/ComboBoxMenu.js +1 -1
  160. package/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  161. package/internal/CustomComboBox/ComboBoxView.js +13 -2
  162. package/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  163. package/internal/Menu/Menu.js +3 -0
  164. package/internal/Menu/Menu.js.map +1 -1
  165. package/internal/Menu/Menu.styles.d.ts +1 -0
  166. package/internal/Menu/Menu.styles.js +13 -10
  167. package/internal/Menu/Menu.styles.js.map +1 -1
  168. package/internal/MenuMessage/MenuMessage.js +17 -1
  169. package/internal/MenuMessage/MenuMessage.js.map +1 -1
  170. package/internal/MenuMessage/MenuMessage.styles.d.ts +3 -0
  171. package/internal/MenuMessage/MenuMessage.styles.js +13 -4
  172. package/internal/MenuMessage/MenuMessage.styles.js.map +1 -1
  173. package/internal/MobilePopup/MobilePopup.d.ts +8 -0
  174. package/internal/MobilePopup/MobilePopup.js +34 -11
  175. package/internal/MobilePopup/MobilePopup.js.map +1 -1
  176. package/internal/MobilePopup/MobilePopup.styles.d.ts +7 -0
  177. package/internal/MobilePopup/MobilePopup.styles.js +34 -10
  178. package/internal/MobilePopup/MobilePopup.styles.js.map +1 -1
  179. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +8 -1
  180. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js +18 -1
  181. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js.map +1 -1
  182. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +3 -0
  183. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js +14 -4
  184. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js.map +1 -1
  185. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +4 -0
  186. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +48 -11
  187. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  188. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.d.ts +6 -0
  189. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js +28 -8
  190. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js.map +1 -1
  191. package/internal/NativeTimeInput/NativeTimeInput.d.ts +16 -0
  192. package/internal/NativeTimeInput/NativeTimeInput.js +25 -0
  193. package/internal/NativeTimeInput/NativeTimeInput.js.map +1 -0
  194. package/internal/NativeTimeInput/NativeTimeInput.styles.d.ts +3 -0
  195. package/internal/NativeTimeInput/NativeTimeInput.styles.js +15 -0
  196. package/internal/NativeTimeInput/NativeTimeInput.styles.js.map +1 -0
  197. package/internal/NativeTimeInput/index.d.ts +1 -0
  198. package/internal/NativeTimeInput/index.js +2 -0
  199. package/internal/NativeTimeInput/index.js.map +1 -0
  200. package/internal/NativeTimeInput/utils.d.ts +7 -0
  201. package/internal/NativeTimeInput/utils.js +28 -0
  202. package/internal/NativeTimeInput/utils.js.map +1 -0
  203. package/internal/SpinnerIcon/SpinnerIcon.d.ts +3 -3
  204. package/internal/SpinnerIcon/SpinnerIcon.js +4 -4
  205. package/internal/SpinnerIcon/SpinnerIcon.js.map +1 -1
  206. package/internal/icons2022/LoadingIcon.js +1 -1
  207. package/internal/icons2022/LoadingIcon.js.map +1 -1
  208. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.d.ts +2 -0
  209. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.js +21 -0
  210. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.js.map +1 -0
  211. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.d.ts +2 -0
  212. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.js +21 -0
  213. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.js.map +1 -0
  214. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.d.ts +2 -0
  215. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.js +21 -0
  216. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.js.map +1 -0
  217. package/internal/themes/BasicTheme.d.ts +48 -4
  218. package/internal/themes/BasicTheme.js +139 -5
  219. package/internal/themes/BasicTheme.js.map +1 -1
  220. package/internal/themes/DarkTheme6_1.d.ts +1 -0
  221. package/internal/themes/DarkTheme6_1.js +164 -0
  222. package/internal/themes/DarkTheme6_1.js.map +1 -0
  223. package/internal/themes/LightTheme6_1.d.ts +1 -0
  224. package/internal/themes/LightTheme6_1.js +164 -0
  225. package/internal/themes/LightTheme6_1.js.map +1 -0
  226. package/lib/theming/themes/DarkTheme.d.ts +1 -0
  227. package/lib/theming/themes/DarkTheme.js +3 -1
  228. package/lib/theming/themes/DarkTheme.js.map +1 -1
  229. package/lib/theming/themes/LightTheme.d.ts +1 -0
  230. package/lib/theming/themes/LightTheme.js +3 -1
  231. package/lib/theming/themes/LightTheme.js.map +1 -1
  232. package/package.json +3 -1
@@ -10,10 +10,14 @@ var __assign = (this && this.__assign) || function () {
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
12
  import React, { useCallback, useContext, useImperativeHandle, useState } from 'react';
13
+ import { QuestionCircleIcon16Light } from '../../internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.js';
13
14
  import { QuestionCircleIcon16Solid } from '../../internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Solid.js';
15
+ import { QuestionCircleIcon20Regular } from '../../internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.js';
16
+ import { QuestionCircleIcon24Regular } from '../../internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.js';
14
17
  import { forwardRefAndName } from '../../lib/forwardRefAndName.js';
15
18
  import { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';
16
19
  import { ThemeContext } from '../../lib/theming/ThemeContext.js';
20
+ import { isThemeGTE } from '../../lib/theming/ThemeHelpers.js';
17
21
  import { isFunction } from '../../lib/utils.js';
18
22
  import { Tooltip } from '../Tooltip/index.js';
19
23
  import { TextareaDataTids } from './Textarea.js';
@@ -29,8 +33,9 @@ var getCounterOffsets = function (textarea) {
29
33
  };
30
34
  export var TextareaCounter = forwardRefAndName('TextareaCounter', function (_a, ref) {
31
35
  var _b;
32
- var length = _a.length, value = _a.value, help = _a.help, onCloseHelp = _a.onCloseHelp, textarea = _a.textarea;
36
+ var length = _a.length, value = _a.value, help = _a.help, onCloseHelp = _a.onCloseHelp, textarea = _a.textarea, size = _a.size;
33
37
  var theme = useContext(ThemeContext);
38
+ var isThemeGTE6_1 = isThemeGTE(theme, '6.1');
34
39
  var cx = useEmotion().cx;
35
40
  var styles = useStyles(getStyles);
36
41
  var _c = useState(textarea.clientWidth), width = _c[0], setWidth = _c[1];
@@ -50,18 +55,31 @@ export var TextareaCounter = forwardRefAndName('TextareaCounter', function (_a,
50
55
  var textareaValue = value ? value.toString().length : 0;
51
56
  var counterValue = length - textareaValue;
52
57
  var counterOffsets = getCounterOffsets(textarea);
58
+ var getHelpIcon = function () {
59
+ switch (size) {
60
+ case 'large':
61
+ return React.createElement(QuestionCircleIcon24Regular, __assign({}, helpIconProps));
62
+ case 'medium':
63
+ return React.createElement(QuestionCircleIcon20Regular, __assign({}, helpIconProps));
64
+ case 'small':
65
+ default:
66
+ return React.createElement(QuestionCircleIcon16Light, __assign({}, helpIconProps));
67
+ }
68
+ };
53
69
  var helpIconProps = {
54
70
  onMouseDown: handleHelpMouseDown,
55
71
  color: theme.textareaCounterHelpIconColor,
56
72
  'data-tid': TextareaDataTids.helpIcon,
57
73
  };
58
- var helpIcon = React.createElement(QuestionCircleIcon16Solid, __assign({}, helpIconProps));
74
+ var helpIcon = isThemeGTE6_1 ? getHelpIcon() : React.createElement(QuestionCircleIcon16Solid, __assign({}, helpIconProps));
59
75
  var counterHelp = isFunction(help) ? (help()) : (React.createElement(Tooltip, { pos: 'right bottom', trigger: 'click', render: renderTooltipContent, onCloseClick: onCloseHelp }, helpIcon));
76
+ var isNegativeValue = counterValue < 0;
60
77
  return (React.createElement("div", { "data-tid": TextareaDataTids.counter, className: cx(styles.counterContainer(theme)), style: { width: width, height: height } },
61
78
  React.createElement("span", { style: counterOffsets, className: cx(styles.counter(theme), (_b = {},
62
- _b[styles.counterError(theme)] = counterValue < 0,
79
+ _b[styles.counter6_1(theme)] = isThemeGTE6_1,
80
+ _b[styles.counterError(theme)] = isNegativeValue,
63
81
  _b)) },
64
- counterValue,
82
+ isThemeGTE6_1 && isNegativeValue ? "\u2013".concat(-counterValue) : counterValue,
65
83
  help && React.createElement("span", { className: styles.counterHelp() }, counterHelp))));
66
84
  });
67
85
  //# sourceMappingURL=TextareaCounter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextareaCounter.js","sourceRoot":"","sources":["../../../components/Textarea/TextareaCounter.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useContext, useImperativeHandle, useState } from 'react';\nimport type { SyntheticEvent } from 'react';\n\nimport { QuestionCircleIcon16Solid } from '../../internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Solid.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { isFunction } from '../../lib/utils.js';\nimport { Tooltip } from '../Tooltip/index.js';\nimport { TextareaDataTids } from './Textarea.js';\nimport type { TextareaProps } from './Textarea.js';\nimport { getStyles } from './Textarea.styles.js';\n\nexport interface TextareaCounterProps {\n value: TextareaProps['value'];\n length: number;\n help: TextareaProps['counterHelp'];\n onCloseHelp: () => void;\n textarea: HTMLTextAreaElement;\n}\n\nexport interface TextareaCounterRef {\n reflow: () => void;\n}\n\nconst handleHelpMouseDown = (e: SyntheticEvent) => e.preventDefault();\n\nconst getCounterOffsets = (textarea: HTMLTextAreaElement) => {\n const computedStyle = textarea.ownerDocument.defaultView?.getComputedStyle(textarea);\n\n return {\n right: computedStyle?.paddingRight ?? textarea.style.paddingRight ?? '0px',\n bottom: computedStyle?.paddingBottom ?? textarea.style.paddingBottom ?? '0px',\n };\n};\n\nexport const TextareaCounter = forwardRefAndName<TextareaCounterRef, TextareaCounterProps>(\n 'TextareaCounter',\n ({ length, value, help, onCloseHelp, textarea }, ref) => {\n const theme = useContext(ThemeContext);\n const { cx } = useEmotion();\n const styles = useStyles(getStyles);\n const [width, setWidth] = useState(textarea.clientWidth);\n const [height, setHeight] = useState(textarea.clientHeight);\n const reflow = useCallback(() => {\n const { clientWidth, clientHeight } = textarea;\n setWidth(clientWidth);\n setHeight(clientHeight);\n }, [textarea]);\n useImperativeHandle(ref, () => ({ reflow }), [reflow]);\n const renderTooltipContent = useCallback(() => {\n if (typeof help === 'function') {\n return help();\n }\n return help;\n }, [help]);\n const textareaValue = value ? value.toString().length : 0;\n const counterValue = length - textareaValue;\n const counterOffsets = getCounterOffsets(textarea);\n\n const helpIconProps = {\n onMouseDown: handleHelpMouseDown,\n color: theme.textareaCounterHelpIconColor,\n 'data-tid': TextareaDataTids.helpIcon,\n };\n const helpIcon = <QuestionCircleIcon16Solid {...helpIconProps} />;\n const counterHelp = isFunction(help) ? (\n help()\n ) : (\n <Tooltip pos={'right bottom'} trigger={'click'} render={renderTooltipContent} onCloseClick={onCloseHelp}>\n {helpIcon}\n </Tooltip>\n );\n\n return (\n <div data-tid={TextareaDataTids.counter} className={cx(styles.counterContainer(theme))} style={{ width, height }}>\n <span\n style={counterOffsets}\n className={cx(styles.counter(theme), {\n [styles.counterError(theme)]: counterValue < 0,\n })}\n >\n {counterValue}\n {help && <span className={styles.counterHelp()}>{counterHelp}</span>}\n </span>\n </div>\n );\n },\n);\n"]}
1
+ {"version":3,"file":"TextareaCounter.js","sourceRoot":"","sources":["../../../components/Textarea/TextareaCounter.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useContext, useImperativeHandle, useState } from 'react';\nimport type { SyntheticEvent } from 'react';\n\nimport { QuestionCircleIcon16Light } from '../../internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.js';\nimport { QuestionCircleIcon16Solid } from '../../internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Solid.js';\nimport { QuestionCircleIcon20Regular } from '../../internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.js';\nimport { QuestionCircleIcon24Regular } from '../../internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { isFunction } from '../../lib/utils.js';\nimport { Tooltip } from '../Tooltip/index.js';\nimport { TextareaDataTids } from './Textarea.js';\nimport type { TextareaProps } from './Textarea.js';\nimport { getStyles } from './Textarea.styles.js';\n\nexport interface TextareaCounterProps {\n value: TextareaProps['value'];\n length: number;\n help: TextareaProps['counterHelp'];\n onCloseHelp: () => void;\n textarea: HTMLTextAreaElement;\n size: SizeProp;\n}\n\nexport interface TextareaCounterRef {\n reflow: () => void;\n}\n\nconst handleHelpMouseDown = (e: SyntheticEvent) => e.preventDefault();\n\nconst getCounterOffsets = (textarea: HTMLTextAreaElement) => {\n const computedStyle = textarea.ownerDocument.defaultView?.getComputedStyle(textarea);\n\n return {\n right: computedStyle?.paddingRight ?? textarea.style.paddingRight ?? '0px',\n bottom: computedStyle?.paddingBottom ?? textarea.style.paddingBottom ?? '0px',\n };\n};\n\nexport const TextareaCounter = forwardRefAndName<TextareaCounterRef, TextareaCounterProps>(\n 'TextareaCounter',\n ({ length, value, help, onCloseHelp, textarea, size }, ref) => {\n const theme = useContext(ThemeContext);\n const isThemeGTE6_1 = isThemeGTE(theme, '6.1');\n\n const { cx } = useEmotion();\n const styles = useStyles(getStyles);\n const [width, setWidth] = useState(textarea.clientWidth);\n const [height, setHeight] = useState(textarea.clientHeight);\n const reflow = useCallback(() => {\n const { clientWidth, clientHeight } = textarea;\n setWidth(clientWidth);\n setHeight(clientHeight);\n }, [textarea]);\n useImperativeHandle(ref, () => ({ reflow }), [reflow]);\n const renderTooltipContent = useCallback(() => {\n if (typeof help === 'function') {\n return help();\n }\n return help;\n }, [help]);\n const textareaValue = value ? value.toString().length : 0;\n const counterValue = length - textareaValue;\n const counterOffsets = getCounterOffsets(textarea);\n\n const getHelpIcon = () => {\n switch (size) {\n case 'large':\n return <QuestionCircleIcon24Regular {...helpIconProps} />;\n case 'medium':\n return <QuestionCircleIcon20Regular {...helpIconProps} />;\n case 'small':\n default:\n return <QuestionCircleIcon16Light {...helpIconProps} />;\n }\n };\n const helpIconProps = {\n onMouseDown: handleHelpMouseDown,\n color: theme.textareaCounterHelpIconColor,\n 'data-tid': TextareaDataTids.helpIcon,\n };\n const helpIcon = isThemeGTE6_1 ? getHelpIcon() : <QuestionCircleIcon16Solid {...helpIconProps} />;\n const counterHelp = isFunction(help) ? (\n help()\n ) : (\n <Tooltip pos={'right bottom'} trigger={'click'} render={renderTooltipContent} onCloseClick={onCloseHelp}>\n {helpIcon}\n </Tooltip>\n );\n\n const isNegativeValue = counterValue < 0;\n\n return (\n <div data-tid={TextareaDataTids.counter} className={cx(styles.counterContainer(theme))} style={{ width, height }}>\n <span\n style={counterOffsets}\n className={cx(styles.counter(theme), {\n [styles.counter6_1(theme)]: isThemeGTE6_1,\n [styles.counterError(theme)]: isNegativeValue,\n })}\n >\n {isThemeGTE6_1 && isNegativeValue ? `–${-counterValue}` : counterValue}\n {help && <span className={styles.counterHelp()}>{counterHelp}</span>}\n </span>\n </div>\n );\n },\n);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TimeFragmentsView.js","sourceRoot":"","sources":["../../../components/TimePicker/TimeFragmentsView.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useContext, useImperativeHandle, useRef } from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { TIME_PLACEHOLDER_CHAR, TIME_SEPARATOR } from './helpers/TimePicker.constants.js';\nimport type { TimePrecision, TimeSegment } from './helpers/TimePicker.shared.js';\nimport { getDisplaySegments, getTimeSegments } from './helpers/TimePicker.shared.js';\nimport { getStyles } from './TimeFragmentsView.styles.js';\n\nexport interface TimeFragmentsViewRef {\n isFragment(el: HTMLElement | EventTarget | null): boolean;\n getSegment(el: HTMLElement | EventTarget | null): TimeSegment | null;\n getRootNode(): HTMLSpanElement | null;\n}\n\nexport interface TimeFragmentsViewProps {\n value: string;\n precision: TimePrecision;\n size: SizeProp;\n onSelectSegment?(segment: TimeSegment, event: React.MouseEvent<HTMLSpanElement>): void;\n}\n\nconst getSeparatorSizeClassName = (styles: ReturnType<typeof getStyles>, size: SizeProp): string => {\n switch (size) {\n case 'large':\n return styles.separatorLarge();\n case 'medium':\n return styles.separatorMedium();\n case 'small':\n default:\n return styles.separatorSmall();\n }\n};\n\nexport const TimeFragmentsView = forwardRefAndName<TimeFragmentsViewRef, TimeFragmentsViewProps>(\n 'TimeFragmentsView',\n (props, ref) => {\n const { value, precision, size, onSelectSegment } = props;\n\n const theme = useContext(ThemeContext);\n\n const { cx } = useEmotion();\n\n const styles = useStyles(getStyles);\n\n const rootRef = useRef<HTMLSpanElement>(null);\n\n const rootClassName = cx(styles.root(), styles.selected(theme));\n const maskClassName = styles.mask(theme);\n const separatorSizeClassName = getSeparatorSizeClassName(styles, size);\n\n const getSegment = useCallback(\n (el: HTMLElement | EventTarget | null): TimeSegment | null => {\n const rootNode = rootRef.current;\n\n if (!rootNode || !el) {\n return null;\n }\n\n const fragments: HTMLSpanElement[] = Array.from(rootNode.querySelectorAll('[data-fragment]'));\n const segments = getTimeSegments(precision);\n\n const index = fragments.findIndex((fragment) => fragment === el || fragment.contains(el as HTMLSpanElement));\n\n return index >= 0 ? (segments[index] ?? null) : null;\n },\n [precision],\n );\n\n const isFragment = useCallback(\n (el: HTMLElement | EventTarget | null): boolean => {\n return getSegment(el) !== null;\n },\n [getSegment],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n isFragment,\n getSegment,\n getRootNode: () => rootRef.current,\n }),\n [getSegment, isFragment],\n );\n\n const segments = getTimeSegments(precision);\n const displaySegments = getDisplaySegments(value, precision);\n\n return (\n <span ref={rootRef} className={rootClassName}>\n {value\n ? segments.flatMap((segment, index) => {\n const segmentValue = displaySegments[index] ?? '';\n\n const valueMask = Array.from(segmentValue)\n .filter((char) => char !== TIME_PLACEHOLDER_CHAR)\n .join('');\n\n const placeholderLength = segmentValue.length - valueMask.length;\n\n const nodes = [\n <span\n key={segment}\n data-fragment=\"\"\n className={styles.segment()}\n onMouseUp={(event) => onSelectSegment?.(segment, event)}\n >\n {valueMask}\n <span className={maskClassName}>{Array(placeholderLength).fill(TIME_PLACEHOLDER_CHAR).join('')}</span>\n </span>,\n ];\n\n if (index < segments.length - 1) {\n nodes.push(\n <span\n key={`separator-${index}`}\n className={cx(maskClassName, styles.separator(), separatorSizeClassName, {\n [styles.separatorFilled()]: !segmentValue.includes(TIME_PLACEHOLDER_CHAR),\n })}\n >\n {TIME_SEPARATOR}\n </span>,\n );\n }\n\n return nodes;\n })\n : null}\n </span>\n );\n },\n);\n"]}
1
+ {"version":3,"file":"TimeFragmentsView.js","sourceRoot":"","sources":["../../../components/TimePicker/TimeFragmentsView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAEpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAE1F,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAkB1D,IAAM,yBAAyB,GAAG,UAAC,MAAoC,EAAE,IAAc;IACrF,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,MAAM,CAAC,cAAc,EAAE,CAAC;QACjC,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,eAAe,EAAE,CAAC;QAClC,KAAK,OAAO,CAAC;QACb;YACE,OAAO,MAAM,CAAC,cAAc,EAAE,CAAC;IACnC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAG,iBAAiB,CAChD,mBAAmB,EACnB,UAAC,KAAK,EAAE,GAAG;IACD,IAAA,KAAK,GAAuC,KAAK,MAA5C,EAAE,SAAS,GAA4B,KAAK,UAAjC,EAAE,IAAI,GAAsB,KAAK,KAA3B,EAAE,eAAe,GAAK,KAAK,gBAAV,CAAW;IAE1D,IAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAE/B,IAAA,EAAE,GAAK,UAAU,EAAE,GAAjB,CAAkB;IAE5B,IAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAEpC,IAAM,OAAO,GAAG,MAAM,CAAkB,IAAI,CAAC,CAAC;IAE9C,IAAM,aAAa,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,IAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,IAAM,sBAAsB,GAAG,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEvE,IAAM,UAAU,GAAG,WAAW,CAC5B,UAAC,EAAoC;;QACnC,IAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;QAEjC,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAM,SAAS,GAAsB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC9F,IAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAE5C,IAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,UAAC,QAAQ,IAAK,OAAA,QAAQ,KAAK,EAAE,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAqB,CAAC,EAA3D,CAA2D,CAAC,CAAC;QAE7G,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAA,QAAQ,CAAC,KAAK,CAAC,mCAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,CAAC,EACD,CAAC,SAAS,CAAC,CACZ,CAAC;IAEF,IAAM,UAAU,GAAG,WAAW,CAC5B,UAAC,EAAoC;QACnC,OAAO,UAAU,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;IACjC,CAAC,EACD,CAAC,UAAU,CAAC,CACb,CAAC;IAEF,mBAAmB,CACjB,GAAG,EACH,cAAM,OAAA,CAAC;QACL,UAAU,YAAA;QACV,UAAU,YAAA;QACV,WAAW,EAAE,cAAM,OAAA,OAAO,CAAC,OAAO,EAAf,CAAe;KACnC,CAAC,EAJI,CAIJ,EACF,CAAC,UAAU,EAAE,UAAU,CAAC,CACzB,CAAC;IAEF,IAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAE7D,OAAO,CACL,8BAAM,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,IACzC,KAAK;QACJ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,OAAO,EAAE,KAAK;;;YAC9B,IAAM,YAAY,GAAG,MAAA,eAAe,CAAC,KAAK,CAAC,mCAAI,EAAE,CAAC;YAElD,IAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;iBACvC,MAAM,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,KAAK,qBAAqB,EAA9B,CAA8B,CAAC;iBAChD,IAAI,CAAC,EAAE,CAAC,CAAC;YAEZ,IAAM,iBAAiB,GAAG,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;YAEjE,IAAM,KAAK,GAAG;gBACZ,8BACE,GAAG,EAAE,OAAO,mBACE,EAAE,EAChB,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,EAC3B,SAAS,EAAE,UAAC,KAAK,IAAK,OAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG,OAAO,EAAE,KAAK,CAAC,EAAjC,CAAiC;oBAEtD,SAAS;oBACV,8BAAM,SAAS,EAAE,aAAa,IAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAQ,CACjG;aACR,CAAC;YAEF,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,KAAK,CAAC,IAAI,CACR,8BACE,GAAG,EAAE,oBAAa,KAAK,CAAE,EACzB,SAAS,EAAE,EAAE,CAAC,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,sBAAsB;wBACrE,GAAC,MAAM,CAAC,eAAe,EAAE,IAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,qBAAqB,CAAC;4BACzE,IAED,cAAc,CACV,CACR,CAAC;YACJ,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QACJ,CAAC,CAAC,IAAI,CACH,CACR,CAAC;AACJ,CAAC,CACF,CAAC","sourcesContent":["import React, { useCallback, useContext, useImperativeHandle, useRef } from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { TIME_PLACEHOLDER_CHAR, TIME_SEPARATOR } from './helpers/TimePicker.constants.js';\nimport type { TimePrecision, TimeSegment } from './helpers/TimePicker.shared.js';\nimport { getDisplaySegments, getTimeSegments } from './helpers/TimePicker.shared.js';\nimport { getStyles } from './TimeFragmentsView.styles.js';\n\nexport interface TimeFragmentsViewRef {\n isFragment(el: HTMLElement | EventTarget | null): boolean;\n\n getSegment(el: HTMLElement | EventTarget | null): TimeSegment | null;\n\n getRootNode(): HTMLSpanElement | null;\n}\n\nexport interface TimeFragmentsViewProps {\n value: string;\n precision: TimePrecision;\n size: SizeProp;\n\n onSelectSegment?(segment: TimeSegment, event: React.MouseEvent<HTMLSpanElement>): void;\n}\n\nconst getSeparatorSizeClassName = (styles: ReturnType<typeof getStyles>, size: SizeProp): string => {\n switch (size) {\n case 'large':\n return styles.separatorLarge();\n case 'medium':\n return styles.separatorMedium();\n case 'small':\n default:\n return styles.separatorSmall();\n }\n};\n\nexport const TimeFragmentsView = forwardRefAndName<TimeFragmentsViewRef, TimeFragmentsViewProps>(\n 'TimeFragmentsView',\n (props, ref) => {\n const { value, precision, size, onSelectSegment } = props;\n\n const theme = useContext(ThemeContext);\n\n const { cx } = useEmotion();\n\n const styles = useStyles(getStyles);\n\n const rootRef = useRef<HTMLSpanElement>(null);\n\n const rootClassName = cx(styles.root(), styles.selected(theme));\n const maskClassName = styles.mask(theme);\n const separatorSizeClassName = getSeparatorSizeClassName(styles, size);\n\n const getSegment = useCallback(\n (el: HTMLElement | EventTarget | null): TimeSegment | null => {\n const rootNode = rootRef.current;\n\n if (!rootNode || !el) {\n return null;\n }\n\n const fragments: HTMLSpanElement[] = Array.from(rootNode.querySelectorAll('[data-fragment]'));\n const segments = getTimeSegments(precision);\n\n const index = fragments.findIndex((fragment) => fragment === el || fragment.contains(el as HTMLSpanElement));\n\n return index >= 0 ? (segments[index] ?? null) : null;\n },\n [precision],\n );\n\n const isFragment = useCallback(\n (el: HTMLElement | EventTarget | null): boolean => {\n return getSegment(el) !== null;\n },\n [getSegment],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n isFragment,\n getSegment,\n getRootNode: () => rootRef.current,\n }),\n [getSegment, isFragment],\n );\n\n const segments = getTimeSegments(precision);\n const displaySegments = getDisplaySegments(value, precision);\n\n return (\n <span ref={rootRef} className={rootClassName}>\n {value\n ? segments.flatMap((segment, index) => {\n const segmentValue = displaySegments[index] ?? '';\n\n const valueMask = Array.from(segmentValue)\n .filter((char) => char !== TIME_PLACEHOLDER_CHAR)\n .join('');\n\n const placeholderLength = segmentValue.length - valueMask.length;\n\n const nodes = [\n <span\n key={segment}\n data-fragment=\"\"\n className={styles.segment()}\n onMouseUp={(event) => onSelectSegment?.(segment, event)}\n >\n {valueMask}\n <span className={maskClassName}>{Array(placeholderLength).fill(TIME_PLACEHOLDER_CHAR).join('')}</span>\n </span>,\n ];\n\n if (index < segments.length - 1) {\n nodes.push(\n <span\n key={`separator-${index}`}\n className={cx(maskClassName, styles.separator(), separatorSizeClassName, {\n [styles.separatorFilled()]: !segmentValue.includes(TIME_PLACEHOLDER_CHAR),\n })}\n >\n {TIME_SEPARATOR}\n </span>,\n );\n }\n\n return nodes;\n })\n : null}\n </span>\n );\n },\n);\n"]}
@@ -20,16 +20,16 @@ export var getStyles = memoizeGetStyles(function (_a) {
20
20
  return css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n display: inline;\n font-variant-numeric: tabular-nums;\n white-space: pre;\n "], ["\n display: inline;\n font-variant-numeric: tabular-nums;\n white-space: pre;\n "])));
21
21
  },
22
22
  separator: function () {
23
- return css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n display: inline-block;\n font-variant-numeric: tabular-nums;\n white-space: pre;\n "], ["\n display: inline-block;\n font-variant-numeric: tabular-nums;\n white-space: pre;\n "])));
23
+ return css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n display: inline;\n position: relative;\n "], ["\n display: inline;\n position: relative;\n "])));
24
24
  },
25
25
  separatorSmall: function () {
26
- return css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n vertical-align: 1px;\n margin-left: 1px;\n margin-right: 1px;\n "], ["\n vertical-align: 1px;\n margin-left: 1px;\n margin-right: 1px;\n "])));
26
+ return css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n top: -1px;\n padding-left: 1px;\n padding-right: 1px;\n "], ["\n top: -1px;\n padding-left: 1px;\n padding-right: 1px;\n "])));
27
27
  },
28
28
  separatorMedium: function () {
29
- return css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n vertical-align: 1px;\n margin-left: 2px;\n margin-right: 2px;\n "], ["\n vertical-align: 1px;\n margin-left: 2px;\n margin-right: 2px;\n "])));
29
+ return css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n top: -1px;\n padding-left: 2px;\n padding-right: 2px;\n "], ["\n top: -1px;\n padding-left: 2px;\n padding-right: 2px;\n "])));
30
30
  },
31
31
  separatorLarge: function () {
32
- return css(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n vertical-align: 2px;\n margin-left: 2px;\n margin-right: 2px;\n "], ["\n vertical-align: 2px;\n margin-left: 2px;\n margin-right: 2px;\n "])));
32
+ return css(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n top: -2px;\n padding-left: 2px;\n padding-right: 2px;\n "], ["\n top: -2px;\n padding-left: 2px;\n padding-right: 2px;\n "])));
33
33
  },
34
34
  mask: function (t) {
35
35
  return css(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), t.inputPlaceholderColor);
@@ -1 +1 @@
1
- {"version":3,"file":"TimeFragmentsView.styles.js","sourceRoot":"","sources":["../../../components/TimePicker/TimeFragmentsView.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,MAAM,CAAC,IAAM,SAAS,GAAG,gBAAgB,CAAC,UAAC,EAAgB;QAAd,GAAG,SAAA;IAAgB,OAAA,CAAC;QAC/D,IAAI;YACF,OAAO,GAAG,uKAAA,oGAIT,KAAC;QACJ,CAAC;QAED,QAAQ,YAAC,CAAQ;YACf,IAAM,YAAY,GAAG,UAAC,UAAkB,EAAE,KAAa;gBACrD,OAAA,CAAC,UAAU,IAAI,KAAK,CAAC;oBACrB,+CACgB,UAAU,+BACf,KAAK,eACd;YAJF,CAIE,CAAC;YAEL,OAAO,GAAG,4GAAA,+BAEN,EAAwF,QAC3F,KADG,YAAY,CAAC,CAAC,CAAC,iCAAiC,EAAE,CAAC,CAAC,mCAAmC,CAAC,EAC1F;QACJ,CAAC;QAED,OAAO;YACL,OAAO,GAAG,uKAAA,oGAIT,KAAC;QACJ,CAAC;QAED,SAAS;YACP,OAAO,GAAG,6KAAA,0GAIT,KAAC;QACJ,CAAC;QAED,cAAc;YACZ,OAAO,GAAG,0JAAA,uFAIT,KAAC;QACJ,CAAC;QAED,eAAe;YACb,OAAO,GAAG,0JAAA,uFAIT,KAAC;QACJ,CAAC;QAED,cAAc;YACZ,OAAO,GAAG,0JAAA,uFAIT,KAAC;QACJ,CAAC;QAED,IAAI,YAAC,CAAQ;YACX,OAAO,GAAG,+FAAA,iBACC,EAAuB,SACjC,KADU,CAAC,CAAC,qBAAqB,EAChC;QACJ,CAAC;QAED,eAAe;YACb,OAAO,GAAG,kGAAA,+BAET,KAAC;QACJ,CAAC;KACF,CAAC;AA1E8D,CA0E9D,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { memoizeGetStyles } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\n\nexport const getStyles = memoizeGetStyles(({ css }: Emotion) => ({\n root() {\n return css`\n cursor: text;\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n `;\n },\n\n selected(t: Theme) {\n const getSelection = (background: string, color: string) =>\n (background || color) &&\n `& ::selection {\n background: ${background};\n color: ${color};\n }`;\n\n return css`\n cursor: text;\n ${getSelection(t.dateInputComponentSelectedBgColor, t.dateInputComponentSelectedTextColor)}\n `;\n },\n\n segment() {\n return css`\n display: inline;\n font-variant-numeric: tabular-nums;\n white-space: pre;\n `;\n },\n\n separator() {\n return css`\n display: inline-block;\n font-variant-numeric: tabular-nums;\n white-space: pre;\n `;\n },\n\n separatorSmall() {\n return css`\n vertical-align: 1px;\n margin-left: 1px;\n margin-right: 1px;\n `;\n },\n\n separatorMedium() {\n return css`\n vertical-align: 1px;\n margin-left: 2px;\n margin-right: 2px;\n `;\n },\n\n separatorLarge() {\n return css`\n vertical-align: 2px;\n margin-left: 2px;\n margin-right: 2px;\n `;\n },\n\n mask(t: Theme) {\n return css`\n color: ${t.inputPlaceholderColor};\n `;\n },\n\n separatorFilled() {\n return css`\n color: inherit;\n `;\n },\n}));\n"]}
1
+ {"version":3,"file":"TimeFragmentsView.styles.js","sourceRoot":"","sources":["../../../components/TimePicker/TimeFragmentsView.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,MAAM,CAAC,IAAM,SAAS,GAAG,gBAAgB,CAAC,UAAC,EAAgB;QAAd,GAAG,SAAA;IAAgB,OAAA,CAAC;QAC/D,IAAI;YACF,OAAO,GAAG,uKAAA,oGAIT,KAAC;QACJ,CAAC;QAED,QAAQ,YAAC,CAAQ;YACf,IAAM,YAAY,GAAG,UAAC,UAAkB,EAAE,KAAa;gBACrD,OAAA,CAAC,UAAU,IAAI,KAAK,CAAC;oBACrB,+CACgB,UAAU,+BACf,KAAK,eACd;YAJF,CAIE,CAAC;YAEL,OAAO,GAAG,4GAAA,+BAEN,EAAwF,QAC3F,KADG,YAAY,CAAC,CAAC,CAAC,iCAAiC,EAAE,CAAC,CAAC,mCAAmC,CAAC,EAC1F;QACJ,CAAC;QAED,OAAO;YACL,OAAO,GAAG,uKAAA,oGAIT,KAAC;QACJ,CAAC;QAED,SAAS;YACP,OAAO,GAAG,8HAAA,2DAGT,KAAC;QACJ,CAAC;QAED,cAAc;YACZ,OAAO,GAAG,kJAAA,+EAIT,KAAC;QACJ,CAAC;QAED,eAAe;YACb,OAAO,GAAG,kJAAA,+EAIT,KAAC;QACJ,CAAC;QAED,cAAc;YACZ,OAAO,GAAG,kJAAA,+EAIT,KAAC;QACJ,CAAC;QAED,IAAI,YAAC,CAAQ;YACX,OAAO,GAAG,+FAAA,iBACC,EAAuB,SACjC,KADU,CAAC,CAAC,qBAAqB,EAChC;QACJ,CAAC;QAED,eAAe;YACb,OAAO,GAAG,kGAAA,+BAET,KAAC;QACJ,CAAC;KACF,CAAC;AAzE8D,CAyE9D,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { memoizeGetStyles } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\n\nexport const getStyles = memoizeGetStyles(({ css }: Emotion) => ({\n root() {\n return css`\n cursor: text;\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n `;\n },\n\n selected(t: Theme) {\n const getSelection = (background: string, color: string) =>\n (background || color) &&\n `& ::selection {\n background: ${background};\n color: ${color};\n }`;\n\n return css`\n cursor: text;\n ${getSelection(t.dateInputComponentSelectedBgColor, t.dateInputComponentSelectedTextColor)}\n `;\n },\n\n segment() {\n return css`\n display: inline;\n font-variant-numeric: tabular-nums;\n white-space: pre;\n `;\n },\n\n separator() {\n return css`\n display: inline;\n position: relative;\n `;\n },\n\n separatorSmall() {\n return css`\n top: -1px;\n padding-left: 1px;\n padding-right: 1px;\n `;\n },\n\n separatorMedium() {\n return css`\n top: -1px;\n padding-left: 2px;\n padding-right: 2px;\n `;\n },\n\n separatorLarge() {\n return css`\n top: -2px;\n padding-left: 2px;\n padding-right: 2px;\n `;\n },\n\n mask(t: Theme) {\n return css`\n color: ${t.inputPlaceholderColor};\n `;\n },\n\n separatorFilled() {\n return css`\n color: inherit;\n `;\n },\n}));\n"]}
@@ -1,23 +1,21 @@
1
- import type { MouseEventHandler, ReactNode } from 'react';
2
1
  import React from 'react';
3
2
  import type { InputProps } from '../Input/index.js';
4
3
  import type { TimePrecision, TimeSegment } from './helpers/TimePicker.shared.js';
5
4
  export interface TimeInputProps extends Omit<InputProps, 'type' | 'value' | 'onValueChange' | 'rightIcon' | 'inputMode'> {
5
+ dropdown?: boolean;
6
6
  precision: TimePrecision;
7
- rightContent?: ReactNode;
8
7
  value: string;
9
- onRightContentMouseDown?: MouseEventHandler<HTMLSpanElement>;
10
- onSelectSegment?: (segment: TimeSegment, event: React.MouseEvent<HTMLSpanElement>) => void;
8
+ onSelectSegment?(segment: TimeSegment, event: React.MouseEvent<HTMLSpanElement>): void;
11
9
  }
12
10
  export interface TimeInputRef {
13
11
  focus(): void;
14
12
  blur(): void;
15
13
  blink(): void;
16
- getNode(): HTMLElement | null;
17
14
  isFragment(el: HTMLElement | EventTarget | null): boolean;
18
- getSegment(el: HTMLElement | EventTarget | null): TimeSegment | null;
19
- selectAll(): void;
20
15
  isAllSelected(): boolean;
16
+ getSegment(el: HTMLElement | EventTarget | null): TimeSegment | null;
21
17
  selectSegment(segment: TimeSegment): void;
18
+ selectAll(): void;
19
+ getNode(): HTMLElement | null;
22
20
  }
23
21
  export declare const TimeInput: import("../../lib/forwardRefAndName.js").ReactUIComponentWithRef<TimeInputRef, TimeInputProps> & Record<never, never>;
@@ -20,7 +20,7 @@ var __rest = (this && this.__rest) || function (s, e) {
20
20
  }
21
21
  return t;
22
22
  };
23
- import React, { useContext, useImperativeHandle, useRef } from 'react';
23
+ import React, { useContext, useEffect, useImperativeHandle, useRef } from 'react';
24
24
  import { InputLikeText } from '../../internal/InputLikeText/index.js';
25
25
  import { forwardRefAndName } from '../../lib/forwardRefAndName.js';
26
26
  import { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';
@@ -29,11 +29,10 @@ import { getTimePickerInputWidth } from './helpers/TimePicker.layout.js';
29
29
  import { getTimeSegmentSelectionNodeRange } from './helpers/TimePicker.selection.js';
30
30
  import { TimeClockIcon } from './TimeClockIcon.js';
31
31
  import { TimeFragmentsView } from './TimeFragmentsView.js';
32
- import { TimePickerDataTids } from './TimePicker.js';
33
32
  import { getStyles } from './TimePicker.styles.js';
34
33
  export var TimeInput = forwardRefAndName('TimeInput', function (props, ref) {
35
34
  var _a;
36
- var precision = props.precision, rightContent = props.rightContent, onRightContentMouseDown = props.onRightContentMouseDown, onSelectSegment = props.onSelectSegment, _b = props.size, size = _b === void 0 ? 'small' : _b, width = props.width, rest = __rest(props, ["precision", "rightContent", "onRightContentMouseDown", "onSelectSegment", "size", "width"]);
35
+ var _b = props.dropdown, dropdown = _b === void 0 ? false : _b, _c = props.size, size = _c === void 0 ? 'small' : _c, disabled = props.disabled, autoFocus = props.autoFocus, width = props.width, precision = props.precision, value = props.value, onSelectSegment = props.onSelectSegment, rest = __rest(props, ["dropdown", "size", "disabled", "autoFocus", "width", "precision", "value", "onSelectSegment"]);
37
36
  var theme = useContext(ThemeContext);
38
37
  var cx = useEmotion().cx;
39
38
  var styles = useStyles(getStyles);
@@ -78,9 +77,22 @@ export var TimeInput = forwardRefAndName('TimeInput', function (props, ref) {
78
77
  (_c = inputLikeTextRef.current) === null || _c === void 0 ? void 0 : _c.selectInnerNode(rootNode, start, end);
79
78
  },
80
79
  }); }, [precision]);
81
- return (React.createElement(InputLikeText, __assign({ ref: inputLikeTextRef }, rest, { takeContentWidth: true, inputMode: "numeric", size: size, width: width !== null && width !== void 0 ? width : getTimePickerInputWidth(size, precision), value: props.value, rightIcon: React.createElement("span", { "data-tid": TimePickerDataTids.rightContent, className: cx(styles.rightContent(), styles.rightContentInteractive(), (_a = {},
82
- _a[styles.rightContentDefault(theme)] = !rightContent,
83
- _a)), onMouseDown: onRightContentMouseDown }, rightContent !== null && rightContent !== void 0 ? rightContent : React.createElement(TimeClockIcon, { size: size })) }),
84
- React.createElement(TimeFragmentsView, { ref: fragmentsViewRef, value: props.value, precision: precision, size: size, onSelectSegment: onSelectSegment })));
80
+ useEffect(function () {
81
+ if (!autoFocus || disabled) {
82
+ return;
83
+ }
84
+ var timer = setTimeout(function () {
85
+ var _a;
86
+ (_a = inputLikeTextRef.current) === null || _a === void 0 ? void 0 : _a.focus();
87
+ }, 0);
88
+ return function () {
89
+ clearTimeout(timer);
90
+ };
91
+ }, []);
92
+ return (React.createElement(InputLikeText, __assign({ ref: inputLikeTextRef }, rest, { disabled: disabled, takeContentWidth: true, inputMode: "numeric", size: size, width: width !== null && width !== void 0 ? width : getTimePickerInputWidth(size, precision), value: value, rightIcon: React.createElement("span", { className: cx(styles.rightIcon(), styles.rightIconDefault(theme), (_a = {},
93
+ _a[styles.rightIconInteractive()] = dropdown && !disabled,
94
+ _a)) },
95
+ React.createElement(TimeClockIcon, { size: size })) }),
96
+ React.createElement(TimeFragmentsView, { ref: fragmentsViewRef, precision: precision, size: size, value: value, onSelectSegment: onSelectSegment })));
85
97
  });
86
98
  //# sourceMappingURL=TimeInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TimeInput.js","sourceRoot":"","sources":["../../../components/TimePicker/TimeInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { MouseEventHandler, ReactNode } from 'react';\nimport React, { useContext, useImperativeHandle, useRef } from 'react';\n\nimport { InputLikeText } from '../../internal/InputLikeText/index.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { InputProps } from '../Input/index.js';\nimport { getTimePickerInputWidth } from './helpers/TimePicker.layout.js';\nimport { getTimeSegmentSelectionNodeRange } from './helpers/TimePicker.selection.js';\nimport type { TimePrecision, TimeSegment } from './helpers/TimePicker.shared.js';\nimport { TimeClockIcon } from './TimeClockIcon.js';\nimport type { TimeFragmentsViewRef } from './TimeFragmentsView.js';\nimport { TimeFragmentsView } from './TimeFragmentsView.js';\nimport { TimePickerDataTids } from './TimePicker.js';\nimport { getStyles } from './TimePicker.styles.js';\n\nexport interface TimeInputProps extends Omit<\n InputProps,\n 'type' | 'value' | 'onValueChange' | 'rightIcon' | 'inputMode'\n> {\n precision: TimePrecision;\n rightContent?: ReactNode;\n value: string;\n onRightContentMouseDown?: MouseEventHandler<HTMLSpanElement>;\n onSelectSegment?: (segment: TimeSegment, event: React.MouseEvent<HTMLSpanElement>) => void;\n}\n\nexport interface TimeInputRef {\n focus(): void;\n\n blur(): void;\n\n blink(): void;\n\n getNode(): HTMLElement | null;\n\n isFragment(el: HTMLElement | EventTarget | null): boolean;\n\n getSegment(el: HTMLElement | EventTarget | null): TimeSegment | null;\n\n selectAll(): void;\n\n isAllSelected(): boolean;\n\n selectSegment(segment: TimeSegment): void;\n}\n\nexport const TimeInput = forwardRefAndName<TimeInputRef, TimeInputProps>('TimeInput', (props, ref) => {\n const { precision, rightContent, onRightContentMouseDown, onSelectSegment, size = 'small', width, ...rest } = props;\n\n const theme = useContext(ThemeContext);\n\n const { cx } = useEmotion();\n\n const styles = useStyles(getStyles);\n\n const inputLikeTextRef = useRef<InputLikeText>(null);\n const fragmentsViewRef = useRef<TimeFragmentsViewRef>(null);\n\n useImperativeHandle(\n ref,\n () => ({\n focus: () => inputLikeTextRef.current?.focus(),\n blur: () => inputLikeTextRef.current?.blur(),\n blink: () => inputLikeTextRef.current?.blink(),\n getNode: () => inputLikeTextRef.current?.getNode() ?? null,\n isFragment: (el) => fragmentsViewRef.current?.isFragment(el) ?? false,\n getSegment: (el) => fragmentsViewRef.current?.getSegment(el) ?? null,\n selectAll: () => {\n const rootNode = fragmentsViewRef.current?.getRootNode() ?? null;\n\n if (!rootNode) {\n return;\n }\n\n inputLikeTextRef.current?.selectInnerNode(rootNode, 0, rootNode.childNodes.length);\n },\n\n isAllSelected: () => {\n const rootNode = fragmentsViewRef.current?.getRootNode() ?? null;\n\n if (!rootNode) {\n return false;\n }\n\n const selection = rootNode.ownerDocument.defaultView?.getSelection() ?? null;\n\n if (!selection || selection.rangeCount === 0 || selection.isCollapsed) {\n return false;\n }\n\n const range = selection.getRangeAt(0);\n const text = rootNode.textContent ?? '';\n\n return (\n range.toString() === text && rootNode.contains(range.startContainer) && rootNode.contains(range.endContainer)\n );\n },\n\n selectSegment: (segment) => {\n const rootNode = fragmentsViewRef.current?.getRootNode() ?? null;\n\n if (!rootNode) {\n return;\n }\n\n const [start, end] = getTimeSegmentSelectionNodeRange(segment, precision);\n inputLikeTextRef.current?.selectInnerNode(rootNode, start, end);\n },\n }),\n [precision],\n );\n\n return (\n <InputLikeText\n ref={inputLikeTextRef}\n {...rest}\n takeContentWidth\n inputMode=\"numeric\"\n size={size}\n width={width ?? getTimePickerInputWidth(size, precision)}\n value={props.value}\n rightIcon={\n <span\n data-tid={TimePickerDataTids.rightContent}\n className={cx(styles.rightContent(), styles.rightContentInteractive(), {\n [styles.rightContentDefault(theme)]: !rightContent,\n })}\n onMouseDown={onRightContentMouseDown}\n >\n {rightContent ?? <TimeClockIcon size={size} />}\n </span>\n }\n >\n <TimeFragmentsView\n ref={fragmentsViewRef}\n value={props.value}\n precision={precision}\n size={size}\n onSelectSegment={onSelectSegment}\n />\n </InputLikeText>\n );\n});\n"]}
1
+ {"version":3,"file":"TimeInput.js","sourceRoot":"","sources":["../../../components/TimePicker/TimeInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useEffect, useImperativeHandle, useRef } from 'react';\n\nimport { InputLikeText } from '../../internal/InputLikeText/index.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { InputProps } from '../Input/index.js';\nimport { getTimePickerInputWidth } from './helpers/TimePicker.layout.js';\nimport { getTimeSegmentSelectionNodeRange } from './helpers/TimePicker.selection.js';\nimport type { TimePrecision, TimeSegment } from './helpers/TimePicker.shared.js';\nimport { TimeClockIcon } from './TimeClockIcon.js';\nimport type { TimeFragmentsViewRef } from './TimeFragmentsView.js';\nimport { TimeFragmentsView } from './TimeFragmentsView.js';\nimport { getStyles } from './TimePicker.styles.js';\n\nexport interface TimeInputProps extends Omit<\n InputProps,\n 'type' | 'value' | 'onValueChange' | 'rightIcon' | 'inputMode'\n> {\n dropdown?: boolean;\n precision: TimePrecision;\n value: string;\n onSelectSegment?(segment: TimeSegment, event: React.MouseEvent<HTMLSpanElement>): void;\n}\n\nexport interface TimeInputRef {\n focus(): void;\n\n blur(): void;\n\n blink(): void;\n\n isFragment(el: HTMLElement | EventTarget | null): boolean;\n\n isAllSelected(): boolean;\n\n getSegment(el: HTMLElement | EventTarget | null): TimeSegment | null;\n\n selectSegment(segment: TimeSegment): void;\n\n selectAll(): void;\n\n getNode(): HTMLElement | null;\n}\n\nexport const TimeInput = forwardRefAndName<TimeInputRef, TimeInputProps>('TimeInput', (props, ref) => {\n const {\n dropdown = false,\n size = 'small',\n disabled,\n autoFocus,\n width,\n precision,\n value,\n onSelectSegment,\n ...rest\n } = props;\n\n const theme = useContext(ThemeContext);\n\n const { cx } = useEmotion();\n\n const styles = useStyles(getStyles);\n\n const inputLikeTextRef = useRef<InputLikeText>(null);\n const fragmentsViewRef = useRef<TimeFragmentsViewRef>(null);\n\n useImperativeHandle(\n ref,\n () => ({\n focus: () => inputLikeTextRef.current?.focus(),\n blur: () => inputLikeTextRef.current?.blur(),\n blink: () => inputLikeTextRef.current?.blink(),\n getNode: () => inputLikeTextRef.current?.getNode() ?? null,\n isFragment: (el) => fragmentsViewRef.current?.isFragment(el) ?? false,\n getSegment: (el) => fragmentsViewRef.current?.getSegment(el) ?? null,\n selectAll: () => {\n const rootNode = fragmentsViewRef.current?.getRootNode() ?? null;\n\n if (!rootNode) {\n return;\n }\n\n inputLikeTextRef.current?.selectInnerNode(rootNode, 0, rootNode.childNodes.length);\n },\n\n isAllSelected: () => {\n const rootNode = fragmentsViewRef.current?.getRootNode() ?? null;\n\n if (!rootNode) {\n return false;\n }\n\n const selection = rootNode.ownerDocument.defaultView?.getSelection() ?? null;\n\n if (!selection || selection.rangeCount === 0 || selection.isCollapsed) {\n return false;\n }\n\n const range = selection.getRangeAt(0);\n const text = rootNode.textContent ?? '';\n\n return (\n range.toString() === text && rootNode.contains(range.startContainer) && rootNode.contains(range.endContainer)\n );\n },\n\n selectSegment: (segment) => {\n const rootNode = fragmentsViewRef.current?.getRootNode() ?? null;\n\n if (!rootNode) {\n return;\n }\n\n const [start, end] = getTimeSegmentSelectionNodeRange(segment, precision);\n inputLikeTextRef.current?.selectInnerNode(rootNode, start, end);\n },\n }),\n [precision],\n );\n\n useEffect(() => {\n if (!autoFocus || disabled) {\n return;\n }\n\n const timer = setTimeout(() => {\n inputLikeTextRef.current?.focus();\n }, 0);\n\n return () => {\n clearTimeout(timer);\n };\n }, []);\n\n return (\n <InputLikeText\n ref={inputLikeTextRef}\n {...rest}\n disabled={disabled}\n takeContentWidth\n inputMode=\"numeric\"\n size={size}\n width={width ?? getTimePickerInputWidth(size, precision)}\n value={value}\n rightIcon={\n <span\n className={cx(styles.rightIcon(), styles.rightIconDefault(theme), {\n [styles.rightIconInteractive()]: dropdown && !disabled,\n })}\n >\n <TimeClockIcon size={size} />\n </span>\n }\n >\n <TimeFragmentsView\n ref={fragmentsViewRef}\n precision={precision}\n size={size}\n value={value}\n onSelectSegment={onSelectSegment}\n />\n </InputLikeText>\n );\n});\n"]}
@@ -1,27 +1,59 @@
1
- import type { AriaAttributes, ReactNode } from 'react';
1
+ import React from 'react';
2
+ import type { AriaAttributes } from 'react';
3
+ import type { SizeProp } from '../../lib/types/props.js';
2
4
  import type { InputProps } from '../Input/index.js';
3
5
  import type { TimePrecision, TimeSlot } from './helpers/TimePicker.shared.js';
4
- export interface TimePickerProps extends Omit<InputProps, 'type' | 'value' | 'defaultValue' | 'onValueChange' | 'rightIcon' | 'inputMode'>, Pick<AriaAttributes, 'aria-describedby' | 'aria-label'> {
6
+ type UnsupportedInputProps = 'autofocus' | 'type' | 'defaultValue' | 'value' | 'leftIcon' | 'rightIcon' | 'showClearIcon' | 'inputMode' | 'element' | 'align' | 'suffix' | 'prefix' | 'borderless' | 'selectAllOnFocus' | 'onValueChange' | 'onUnexpectedInput';
7
+ export interface TimePickerProps extends Omit<InputProps, UnsupportedInputProps>, Pick<AriaAttributes, 'aria-describedby' | 'aria-label'> {
8
+ /** Добавляет выпадающее меню с часовыми слотами в рабочее время @default false */
5
9
  dropdown?: boolean;
6
- menuPos?: 'top' | 'bottom';
7
- menuAlign?: 'left' | 'right';
10
+ /** Устанавливает точность времени @default minute */
8
11
  precision?: TimePrecision;
12
+ /** Определяет массив объектов с кастомными слотами в формате TimeSlot */
9
13
  slots?: TimeSlot[];
10
- rightContent?: ReactNode;
11
- value?: string | null;
14
+ /** Задает нижнюю границу времени. Слоты за границей становятся disabled */
15
+ minValue?: string;
16
+ /** Задает верхнюю границу времени. Слоты за границей становятся disabled */
17
+ maxValue?: string;
18
+ /** Значение поля @param value 'hh.mm.[:ss]' */
19
+ value?: string;
20
+ /** Событие изменения значения `value` в поле @param value - 'hh.mm.[:ss]' */
12
21
  onValueChange?(value: string): void;
22
+ /** Устанавливает фокус на поле ввода после окончания загрузки страницы @default false */
23
+ autoFocus?: boolean;
24
+ /** Включает нативный системный выбор времени на мобильных устройствах */
25
+ useMobileNativeTimePicker?: boolean;
26
+ /** Расположение выпадающего меню */
27
+ menuPos?: 'top' | 'bottom';
28
+ /** Выравнивание выпадающего меню */
29
+ menuAlign?: 'left' | 'right';
30
+ /** Ширина выпадающего меню. @default Равна ширине поля ввода */
31
+ menuWidth?: React.CSSProperties['width'];
32
+ /** Размер поля ввода и выпадающего меню */
33
+ size?: SizeProp;
13
34
  }
14
35
  export interface TimePickerRef {
36
+ /** Устанавливает фокус на поле ввода */
15
37
  focus(): void;
38
+ /** Снимает фокус с поля ввода */
16
39
  blur(): void;
40
+ /** Запускает анимацию blink у поля ввода времени */
41
+ blink(): void;
42
+ /** Возвращает DOM-узел поля ввода */
17
43
  getNode(): HTMLElement | null;
44
+ /** Возвращает корневой DOM-узел компонента */
18
45
  getRootNode(): HTMLElement | null;
19
46
  }
47
+ export type TimePicker = TimePickerRef;
20
48
  export declare const TimePickerDataTids: {
21
49
  readonly root: "TimePicker__root";
22
50
  readonly input: "TimePicker__input";
51
+ readonly mobileInput: "TimePicker__mobileInput";
52
+ readonly nativeInput: "TimePicker__nativeInput";
23
53
  readonly popup: "TimePicker__popup";
54
+ readonly mobilePopup: "TimePicker__mobilePopup";
24
55
  readonly slot: "TimePicker__slot";
25
- readonly rightContent: "TimePicker__rightContent";
26
56
  };
57
+ /** Поле с временем помогает вводить время с клавиатуры или выбирать его с помощью мыши */
27
58
  export declare const TimePicker: import("../../lib/forwardRefAndName.js").ReactUIComponentWithRef<TimePickerRef, TimePickerProps> & Record<never, never>;
59
+ export {};