@skbkontur/react-ui 6.0.8 → 6.1.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 (171) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/components/Autocomplete/Autocomplete.js +15 -4
  3. package/components/Autocomplete/Autocomplete.js.map +1 -1
  4. package/components/Button/Button.d.ts +1 -1
  5. package/components/Button/Button.js +5 -4
  6. package/components/Button/Button.js.map +1 -1
  7. package/components/Calendar/CalendarDay.js +3 -0
  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/DatePicker/MobilePicker.js +1 -1
  13. package/components/DatePicker/MobilePicker.js.map +1 -1
  14. package/components/DateRangePicker/DateRangePicker.js +1 -1
  15. package/components/DateRangePicker/DateRangePicker.js.map +1 -1
  16. package/components/FxInput/FxInputRestoreBtn.js +1 -1
  17. package/components/FxInput/FxInputRestoreBtn.js.map +1 -1
  18. package/components/Input/Input.d.ts +19 -1
  19. package/components/Input/Input.js +10 -3
  20. package/components/Input/Input.js.map +1 -1
  21. package/components/Input/InputLayout/InputLayout.d.ts +3 -1
  22. package/components/Input/InputLayout/InputLayout.js +5 -2
  23. package/components/Input/InputLayout/InputLayout.js.map +1 -1
  24. package/components/Input/InputLayout/InputLayout.styles.d.ts +6 -0
  25. package/components/Input/InputLayout/InputLayout.styles.js +19 -1
  26. package/components/Input/InputLayout/InputLayout.styles.js.map +1 -1
  27. package/components/Input/InputLayout/InputLayoutAside.d.ts +2 -0
  28. package/components/Input/InputLayout/InputLayoutAside.js +2 -2
  29. package/components/Input/InputLayout/InputLayoutAside.js.map +1 -1
  30. package/components/Input/InputLayout/InputLayoutAsideCounter.d.ts +11 -0
  31. package/components/Input/InputLayout/InputLayoutAsideCounter.js +74 -0
  32. package/components/Input/InputLayout/InputLayoutAsideCounter.js.map +1 -0
  33. package/components/Loader/Loader.d.ts +12 -4
  34. package/components/Loader/Loader.js +18 -7
  35. package/components/Loader/Loader.js.map +1 -1
  36. package/components/MenuItem/MenuItem.d.ts +1 -0
  37. package/components/MenuItem/MenuItem.js +17 -1
  38. package/components/MenuItem/MenuItem.js.map +1 -1
  39. package/components/MenuItem/MenuItem.styles.d.ts +3 -0
  40. package/components/MenuItem/MenuItem.styles.js +25 -16
  41. package/components/MenuItem/MenuItem.styles.js.map +1 -1
  42. package/components/Select/Select.js +11 -1
  43. package/components/Select/Select.js.map +1 -1
  44. package/components/SingleToast/SingleToast.d.ts +9 -6
  45. package/components/SingleToast/SingleToast.js +9 -6
  46. package/components/SingleToast/SingleToast.js.map +1 -1
  47. package/components/Spinner/Spinner.d.ts +23 -33
  48. package/components/Spinner/Spinner.js +23 -19
  49. package/components/Spinner/Spinner.js.map +1 -1
  50. package/components/Spinner/Spinner.styles.d.ts +0 -3
  51. package/components/Spinner/Spinner.styles.js +6 -15
  52. package/components/Spinner/Spinner.styles.js.map +1 -1
  53. package/components/Switcher/Switcher.js +1 -0
  54. package/components/Switcher/Switcher.js.map +1 -1
  55. package/components/Textarea/Textarea.js +1 -1
  56. package/components/Textarea/Textarea.js.map +1 -1
  57. package/components/Textarea/Textarea.styles.d.ts +1 -0
  58. package/components/Textarea/Textarea.styles.js +7 -4
  59. package/components/Textarea/Textarea.styles.js.map +1 -1
  60. package/components/Textarea/TextareaCounter.d.ts +2 -0
  61. package/components/Textarea/TextareaCounter.js +22 -4
  62. package/components/Textarea/TextareaCounter.js.map +1 -1
  63. package/components/Toast/Toast.d.ts +13 -14
  64. package/components/Toast/Toast.js +3 -3
  65. package/components/Toast/Toast.js.map +1 -1
  66. package/components/Toast/ToastView.d.ts +8 -5
  67. package/components/Toast/ToastView.js +28 -8
  68. package/components/Toast/ToastView.js.map +1 -1
  69. package/components/Toast/ToastView.styles.d.ts +7 -0
  70. package/components/Toast/ToastView.styles.js +30 -8
  71. package/components/Toast/ToastView.styles.js.map +1 -1
  72. package/components/TokenInput/TokenInput.d.ts +18 -2
  73. package/components/TokenInput/TokenInput.js +236 -79
  74. package/components/TokenInput/TokenInput.js.map +1 -1
  75. package/components/TokenInput/TokenInput.styles.d.ts +1 -0
  76. package/components/TokenInput/TokenInput.styles.js +12 -9
  77. package/components/TokenInput/TokenInput.styles.js.map +1 -1
  78. package/components/TokenInput/TokenInputMenu.d.ts +2 -1
  79. package/components/TokenInput/TokenInputMenu.js +1 -1
  80. package/components/TokenInput/TokenInputMenu.js.map +1 -1
  81. package/components/TokenInput/TokenInputMobileMenu.d.ts +25 -0
  82. package/components/TokenInput/TokenInputMobileMenu.js +40 -0
  83. package/components/TokenInput/TokenInputMobileMenu.js.map +1 -0
  84. package/components/TokenInput/TokenInputReducer.d.ts +2 -0
  85. package/components/TokenInput/TokenInputReducer.js +14 -0
  86. package/components/TokenInput/TokenInputReducer.js.map +1 -1
  87. package/components/Tooltip/Tooltip.d.ts +4 -0
  88. package/components/Tooltip/Tooltip.js +50 -11
  89. package/components/Tooltip/Tooltip.js.map +1 -1
  90. package/internal/CloseButtonIcon/CloseButtonIcon.js +1 -1
  91. package/internal/CloseButtonIcon/CloseButtonIcon.js.map +1 -1
  92. package/internal/CommonWrapper/CommonWrapper.js +5 -0
  93. package/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  94. package/internal/CustomComboBox/ComboBoxMenu.js +1 -1
  95. package/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  96. package/internal/CustomComboBox/ComboBoxView.js +13 -2
  97. package/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  98. package/internal/InputLikeText/InputLikeText.d.ts +1 -1
  99. package/internal/InputLikeText/InputLikeText.js.map +1 -1
  100. package/internal/Menu/Menu.js +3 -0
  101. package/internal/Menu/Menu.js.map +1 -1
  102. package/internal/Menu/Menu.styles.d.ts +1 -0
  103. package/internal/Menu/Menu.styles.js +13 -10
  104. package/internal/Menu/Menu.styles.js.map +1 -1
  105. package/internal/MenuMessage/MenuMessage.js +17 -1
  106. package/internal/MenuMessage/MenuMessage.js.map +1 -1
  107. package/internal/MenuMessage/MenuMessage.styles.d.ts +3 -0
  108. package/internal/MenuMessage/MenuMessage.styles.js +13 -4
  109. package/internal/MenuMessage/MenuMessage.styles.js.map +1 -1
  110. package/internal/MobilePopup/MobilePopup.d.ts +8 -0
  111. package/internal/MobilePopup/MobilePopup.js +34 -11
  112. package/internal/MobilePopup/MobilePopup.js.map +1 -1
  113. package/internal/MobilePopup/MobilePopup.styles.d.ts +7 -0
  114. package/internal/MobilePopup/MobilePopup.styles.js +34 -10
  115. package/internal/MobilePopup/MobilePopup.styles.js.map +1 -1
  116. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +8 -1
  117. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js +18 -1
  118. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js.map +1 -1
  119. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +3 -0
  120. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js +14 -4
  121. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js.map +1 -1
  122. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +4 -0
  123. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +48 -11
  124. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  125. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.d.ts +6 -0
  126. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js +28 -8
  127. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js.map +1 -1
  128. package/internal/Popup/Popup.d.ts +9 -3
  129. package/internal/Popup/Popup.js +117 -15
  130. package/internal/Popup/Popup.js.map +1 -1
  131. package/internal/Popup/Popup.styles.js +1 -1
  132. package/internal/Popup/Popup.styles.js.map +1 -1
  133. package/internal/Popup/PopupHelper.d.ts +4 -0
  134. package/internal/Popup/PopupHelper.js +8 -0
  135. package/internal/Popup/PopupHelper.js.map +1 -1
  136. package/internal/Popup/PopupPin.d.ts +19 -4
  137. package/internal/Popup/PopupPin.js +109 -8
  138. package/internal/Popup/PopupPin.js.map +1 -1
  139. package/internal/Popup/PopupPin.styles.d.ts +2 -0
  140. package/internal/Popup/PopupPin.styles.js +11 -5
  141. package/internal/Popup/PopupPin.styles.js.map +1 -1
  142. package/internal/SpinnerIcon/SpinnerIcon.d.ts +3 -3
  143. package/internal/SpinnerIcon/SpinnerIcon.js +4 -4
  144. package/internal/SpinnerIcon/SpinnerIcon.js.map +1 -1
  145. package/internal/icons2022/LoadingIcon.js +1 -1
  146. package/internal/icons2022/LoadingIcon.js.map +1 -1
  147. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.d.ts +2 -0
  148. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.js +21 -0
  149. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.js.map +1 -0
  150. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.d.ts +2 -0
  151. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.js +21 -0
  152. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.js.map +1 -0
  153. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.d.ts +2 -0
  154. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.js +21 -0
  155. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.js.map +1 -0
  156. package/internal/themes/BasicTheme.d.ts +83 -4
  157. package/internal/themes/BasicTheme.js +186 -5
  158. package/internal/themes/BasicTheme.js.map +1 -1
  159. package/internal/themes/DarkTheme6_1.d.ts +1 -0
  160. package/internal/themes/DarkTheme6_1.js +41 -0
  161. package/internal/themes/DarkTheme6_1.js.map +1 -0
  162. package/internal/themes/LightTheme6_1.d.ts +1 -0
  163. package/internal/themes/LightTheme6_1.js +39 -0
  164. package/internal/themes/LightTheme6_1.js.map +1 -0
  165. package/lib/theming/themes/DarkTheme.d.ts +1 -0
  166. package/lib/theming/themes/DarkTheme.js +3 -1
  167. package/lib/theming/themes/DarkTheme.js.map +1 -1
  168. package/lib/theming/themes/LightTheme.d.ts +1 -0
  169. package/lib/theming/themes/LightTheme.js +3 -1
  170. package/lib/theming/themes/LightTheme.js.map +1 -1
  171. package/package.json +1 -1
@@ -31,6 +31,8 @@ import { Toast } from '../Toast/index.js';
31
31
  /**
32
32
  * Короткое немодальное уведомление, которое сообщает пользователю о результате выполнения его команды.
33
33
  * Результат может быть положительным, отрицательным или нейтральным.
34
+ *
35
+ * Компонент позволяет управлять тостом из любого места приложения статическими методами `SingleToast.push` и `SingleToast.close`.
34
36
  */
35
37
  var SingleToast = /** @class */ (function (_super) {
36
38
  __extends(SingleToast, _super);
@@ -42,6 +44,11 @@ var SingleToast = /** @class */ (function (_super) {
42
44
  SingleToast.__KONTUR_REACT_UI__ = 'SingleToast';
43
45
  SingleToast.displayName = 'SingleToast';
44
46
  SingleToast.ref = React.createRef();
47
+ /**
48
+ * Закрывает текущее уведомление без ожидания таймера.
49
+ *
50
+ * @public
51
+ */
45
52
  SingleToast.close = function () {
46
53
  var _a;
47
54
  if (REACT_MAJOR_VERSION >= 18) {
@@ -52,15 +59,11 @@ var SingleToast = /** @class */ (function (_super) {
52
59
  }
53
60
  };
54
61
  /**
55
- * Показывает тост с `notification` в качестве сообщения.
56
- * Тост автоматически скрывается через 3 или 7 секунд,
57
- * в зависимости от наличия у него кнопки `action` внутри config-а.
58
- * Время показа можно задать вручную, передав `showTime` внутри config-а.
62
+ * Показывает уведомление: перед этим закрывает уже открытый тост, затем передаёт вызов внутреннему `Toast.push` (таймер, `showTime`, `action` и остальной конфиг — как у экземпляра `Toast`).
59
63
  *
60
64
  * @public
61
65
  * @param {React.ReactNode} notification
62
- * @param {ToastPushConfig} config объект с конфигурацией отображения компонента Toast
63
- *
66
+ * @param {ToastPushConfig} config объект с конфигурацией отображения тоста
64
67
  */
65
68
  SingleToast.push = function (notification, config) {
66
69
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"SingleToast.js","sourceRoot":"","sources":["../../../components/SingleToast/SingleToast.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C;;;GAGG;AACH;IAAiC,+BAA2B;IAA5D;;QA6BE,YAAM,GAAG,cAAyB,OAAA,oBAAC,KAAK,aAAC,GAAG,EAAE,WAAW,CAAC,GAAG,IAAM,KAAI,CAAC,KAAK,EAAI,EAA/C,CAA+C,CAAC;;IACpF,CAAC;IA7Be,+BAAmB,GAAG,aAAa,AAAhB,CAAiB;IACpC,uBAAW,GAAG,aAAa,AAAhB,CAAiB;IAC5B,eAAG,GAAG,KAAK,CAAC,SAAS,EAAS,AAA3B,CAA4B;IAE/B,iBAAK,GAAe;;QAChC,IAAI,mBAAmB,IAAI,EAAE,EAAE,CAAC;YAC9B,QAAQ,CAAC,SAAS,CAAC,sBAAM,OAAA,MAAA,WAAW,CAAC,GAAG,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAA,EAAA,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,MAAA,WAAW,CAAC,GAAG,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;QACnC,CAAC;IACH,CAAC,AANkB,CAMjB;IAEF;;;;;;;;;;OAUG;IACW,gBAAI,GAAiB,UAAC,YAA6B,EAAE,MAAwB;;QACzF,WAAW,CAAC,KAAK,EAAE,CAAC;QACpB,MAAA,WAAW,CAAC,GAAG,CAAC,OAAO,0CAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC,AAHiB,CAGhB;IAGJ,kBAAC;CAAA,AA9BD,CAAiC,KAAK,CAAC,SAAS,GA8B/C;SA9BY,WAAW","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { REACT_MAJOR_VERSION } from '../../lib/react-is.js';\nimport type { ToastClose, ToastProps, ToastPushApi, ToastPushConfig } from '../Toast/index.js';\nimport { Toast } from '../Toast/index.js';\n\n/**\n * Короткое немодальное уведомление, которое сообщает пользователю о результате выполнения его команды.\n * Результат может быть положительным, отрицательным или нейтральным.\n */\nexport class SingleToast extends React.Component<ToastProps> {\n public static __KONTUR_REACT_UI__ = 'SingleToast';\n public static displayName = 'SingleToast';\n public static ref = React.createRef<Toast>();\n\n public static close: ToastClose = () => {\n if (REACT_MAJOR_VERSION >= 18) {\n ReactDOM.flushSync(() => SingleToast.ref.current?.close());\n } else {\n SingleToast.ref.current?.close();\n }\n };\n\n /**\n * Показывает тост с `notification` в качестве сообщения.\n * Тост автоматически скрывается через 3 или 7 секунд,\n * в зависимости от наличия у него кнопки `action` внутри config-а.\n * Время показа можно задать вручную, передав `showTime` внутри config-а.\n *\n * @public\n * @param {React.ReactNode} notification\n * @param {ToastPushConfig} config объект с конфигурацией отображения компонента Toast\n *\n */\n public static push: ToastPushApi = (notification: React.ReactNode, config?: ToastPushConfig): void => {\n SingleToast.close();\n SingleToast.ref.current?.push(notification, config);\n };\n\n render = (): React.JSX.Element => <Toast ref={SingleToast.ref} {...this.props} />;\n}\n"]}
1
+ {"version":3,"file":"SingleToast.js","sourceRoot":"","sources":["../../../components/SingleToast/SingleToast.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C;;;;;GAKG;AACH;IAAiC,+BAA2B;IAA5D;;QA8BE,YAAM,GAAG,cAAyB,OAAA,oBAAC,KAAK,aAAC,GAAG,EAAE,WAAW,CAAC,GAAG,IAAM,KAAI,CAAC,KAAK,EAAI,EAA/C,CAA+C,CAAC;;IACpF,CAAC;IA9Be,+BAAmB,GAAG,aAAa,AAAhB,CAAiB;IACpC,uBAAW,GAAG,aAAa,AAAhB,CAAiB;IAC5B,eAAG,GAAG,KAAK,CAAC,SAAS,EAAS,AAA3B,CAA4B;IAE7C;;;;OAIG;IACW,iBAAK,GAAe;;QAChC,IAAI,mBAAmB,IAAI,EAAE,EAAE,CAAC;YAC9B,QAAQ,CAAC,SAAS,CAAC,sBAAM,OAAA,MAAA,WAAW,CAAC,GAAG,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAA,EAAA,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,MAAA,WAAW,CAAC,GAAG,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;QACnC,CAAC;IACH,CAAC,AANkB,CAMjB;IAEF;;;;;;OAMG;IACW,gBAAI,GAAiB,UAAC,YAA6B,EAAE,MAAwB;;QACzF,WAAW,CAAC,KAAK,EAAE,CAAC;QACpB,MAAA,WAAW,CAAC,GAAG,CAAC,OAAO,0CAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC,AAHiB,CAGhB;IAGJ,kBAAC;CAAA,AA/BD,CAAiC,KAAK,CAAC,SAAS,GA+B/C;SA/BY,WAAW","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { REACT_MAJOR_VERSION } from '../../lib/react-is.js';\nimport type { ToastClose, ToastProps, ToastPushApi, ToastPushConfig } from '../Toast/index.js';\nimport { Toast } from '../Toast/index.js';\n\n/**\n * Короткое немодальное уведомление, которое сообщает пользователю о результате выполнения его команды.\n * Результат может быть положительным, отрицательным или нейтральным.\n *\n * Компонент позволяет управлять тостом из любого места приложения статическими методами `SingleToast.push` и `SingleToast.close`.\n */\nexport class SingleToast extends React.Component<ToastProps> {\n public static __KONTUR_REACT_UI__ = 'SingleToast';\n public static displayName = 'SingleToast';\n public static ref = React.createRef<Toast>();\n\n /**\n * Закрывает текущее уведомление без ожидания таймера.\n *\n * @public\n */\n public static close: ToastClose = () => {\n if (REACT_MAJOR_VERSION >= 18) {\n ReactDOM.flushSync(() => SingleToast.ref.current?.close());\n } else {\n SingleToast.ref.current?.close();\n }\n };\n\n /**\n * Показывает уведомление: перед этим закрывает уже открытый тост, затем передаёт вызов внутреннему `Toast.push` (таймер, `showTime`, `action` и остальной конфиг как у экземпляра `Toast`).\n *\n * @public\n * @param {React.ReactNode} notification\n * @param {ToastPushConfig} config объект с конфигурацией отображения тоста\n */\n public static push: ToastPushApi = (notification: React.ReactNode, config?: ToastPushConfig): void => {\n SingleToast.close();\n SingleToast.ref.current?.push(notification, config);\n };\n\n render = (): React.JSX.Element => <Toast ref={SingleToast.ref} {...this.props} />;\n}\n"]}
@@ -1,64 +1,54 @@
1
1
  import React from 'react';
2
2
  import type { CommonProps } from '../../internal/CommonWrapper/index.js';
3
3
  import type { TGetRootNode } from '../../lib/rootNode/index.js';
4
+ import type { SizeProp } from '../../lib/types/props.js';
4
5
  declare const types: readonly ["big", "mini", "normal"];
6
+ /**
7
+ * @deprecated Начиная с версии `6.1`, тип и проп устарели в пользу `SizeContext`. Они будут удалены в `7.0`.
8
+ * @see {@link SizeProp} */
5
9
  export type SpinnerType = (typeof types)[number];
6
10
  export interface SpinnerProps extends CommonProps {
7
- /**
8
- * Подпись спиннера
9
- */
11
+ /** Подпись спиннера */
10
12
  caption?: React.ReactNode;
11
- /**
12
- * Размер индикатора и текста
13
- *
14
- * @default normal
15
- */
13
+ /** Размер спиннера
14
+ * @default small */
15
+ size?: SizeProp;
16
+ /** Размер спиннера
17
+ * @deprecated Начиная с версии `6.1`, тип и проп устарели в пользу нового `SizeContext`. Они будут удалены в `7.0`.
18
+ * @see {@link size} */
16
19
  type?: SpinnerType;
17
- /**
18
- * Одноцветный режим. Удобная альтернатива пропа `dimmed`
19
- */
20
- color?: React.CSSProperties['color'];
21
- /**
22
- * Уменьшает размер индикатора для работы в строках. Если задан, то размер индикитора из `type` игнорируется
23
- *
24
- * @default false
25
- */
20
+ /** Уменьшает размер индикатора для работы в строках. Если задан, то размер спиннера из `size` игнорируется
21
+ * @default false */
26
22
  inline?: boolean;
27
- /**
28
- * Толщина индикатора в пикселях.
29
- *
30
- * @default 2
31
- */
23
+ /** Толщина индикатора в пикселях.
24
+ * @default 2 */
32
25
  width?: number;
33
- /**
34
- * Одноцветный режим. Цвет спиннера не переливается. Можно кастомизировать переменной `spinnerDimmedColor`
35
- *
36
- * @default false
37
- */
26
+ /** Цвет спиннера в одноцветном режиме. Альтернатива пропа `dimmed` */
27
+ color?: React.CSSProperties['color'];
28
+ /** Включает одноцветный режим, в котором цвет спиннера не переливается. Можно кастомизировать переменной `spinnerDimmedColor`
29
+ * @default false */
38
30
  dimmed?: boolean;
39
31
  }
40
32
  export declare const SpinnerDataTids: {
41
33
  readonly root: "Spinner__root";
42
34
  };
43
- type DefaultProps = Required<Pick<SpinnerProps, 'type'>>;
44
- /**
45
- * Зацикленный индикатор, не отображающий прогресс выполнения задачи.
46
- */
35
+ /** Зацикленный индикатор, не отображающий прогресс выполнения задачи */
47
36
  export declare class Spinner extends React.Component<SpinnerProps> {
48
37
  static __KONTUR_REACT_UI__: string;
49
38
  static displayName: string;
50
- static defaultProps: DefaultProps;
51
- private getProps;
39
+ /** @deprecated Начиная с версии `6.1`, тип и проп устарели в пользу `SizeContext`. Они будут удалены в `7.0`. */
52
40
  static Types: Record<SpinnerType, SpinnerType>;
53
41
  private emotion;
54
42
  private cx;
55
43
  private styles;
56
44
  private theme;
45
+ private size;
57
46
  getRootNode: TGetRootNode;
58
47
  private setRootNode;
59
48
  render(): React.JSX.Element;
60
49
  private renderMain;
61
50
  private renderSpinner;
62
51
  private renderCaption;
52
+ private typeToSize;
63
53
  }
64
54
  export {};
@@ -42,35 +42,41 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
42
42
  import React from 'react';
43
43
  import { CommonWrapper } from '../../internal/CommonWrapper/index.js';
44
44
  import { SpinnerIcon } from '../../internal/SpinnerIcon/SpinnerIcon.js';
45
- import { createPropsGetter } from '../../lib/createPropsGetter.js';
46
45
  import { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';
47
46
  import { rootNode } from '../../lib/rootNode/index.js';
47
+ import { withSize } from '../../lib/size/SizeDecorator.js';
48
48
  import { ThemeContext } from '../../lib/theming/ThemeContext.js';
49
49
  import { getStyles } from './Spinner.styles.js';
50
50
  var types = ['big', 'mini', 'normal'];
51
51
  export var SpinnerDataTids = {
52
52
  root: 'Spinner__root',
53
53
  };
54
- /**
55
- * Зацикленный индикатор, не отображающий прогресс выполнения задачи.
56
- */
54
+ /** Зацикленный индикатор, не отображающий прогресс выполнения задачи */
57
55
  var Spinner = /** @class */ (function (_super) {
58
56
  __extends(Spinner, _super);
59
57
  function Spinner() {
60
58
  var _this = _super !== null && _super.apply(this, arguments) || this;
61
- _this.getProps = createPropsGetter(Spinner_1.defaultProps);
62
- _this.renderSpinner = function (type, dimmed, inline) {
59
+ _this.renderSpinner = function (size, dimmed, inline) {
63
60
  var _a;
64
- return (React.createElement(SpinnerIcon, { size: type, className: _this.cx((_a = {},
61
+ return (React.createElement(SpinnerIcon, { size: size, className: _this.cx((_a = {},
65
62
  _a[_this.styles.circle(_this.theme)] = !dimmed && !_this.props.color,
66
63
  _a[_this.styles.circleDimmedColor(_this.theme)] = dimmed,
67
64
  _a[_this.styles.circleWithoutColorAnimation()] = dimmed || !!_this.props.color,
68
65
  _a)), width: _this.props.width, color: _this.props.color, inline: inline }));
69
66
  };
70
- _this.renderCaption = function (type, caption) { return (React.createElement("span", { className: _this.cx(_this.styles[type](_this.theme), _this.styles.captionColor(_this.theme)) }, caption)); };
67
+ _this.renderCaption = function (size, caption) { return (React.createElement("span", { className: _this.cx(_this.styles[size](_this.theme), _this.styles.captionColor(_this.theme)) }, caption)); };
68
+ _this.typeToSize = function (type) {
69
+ switch (type) {
70
+ case 'mini':
71
+ return 'small';
72
+ case 'normal':
73
+ return 'medium';
74
+ case 'big':
75
+ return 'large';
76
+ }
77
+ };
71
78
  return _this;
72
79
  }
73
- Spinner_1 = Spinner;
74
80
  Spinner.prototype.render = function () {
75
81
  var _this = this;
76
82
  this.styles = getStyles(this.emotion);
@@ -80,26 +86,24 @@ var Spinner = /** @class */ (function (_super) {
80
86
  }));
81
87
  };
82
88
  Spinner.prototype.renderMain = function () {
83
- var _a = this.props, _b = _a.caption, caption = _b === void 0 ? null : _b, dimmed = _a.dimmed, inline = _a.inline;
84
- var type = this.getProps().type;
89
+ var _a = this.props, _b = _a.caption, caption = _b === void 0 ? null : _b, size = _a.size, type = _a.type, dimmed = _a.dimmed, inline = _a.inline;
90
+ var parsedSize = size || !type ? this.size : this.typeToSize(type);
85
91
  return (React.createElement(CommonWrapper, __assign({ rootNodeRef: this.setRootNode }, this.props),
86
92
  React.createElement("div", { "data-tid": SpinnerDataTids.root, className: this.styles.spinner() },
87
- React.createElement("span", { className: this.styles.inner() }, this.renderSpinner(type, dimmed, inline)),
88
- caption && this.renderCaption(type, caption))));
93
+ React.createElement("span", { className: this.styles.inner() }, this.renderSpinner(parsedSize, dimmed, inline)),
94
+ caption && this.renderCaption(parsedSize, caption))));
89
95
  };
90
- var Spinner_1;
91
96
  Spinner.__KONTUR_REACT_UI__ = 'Spinner';
92
97
  Spinner.displayName = 'Spinner';
93
- Spinner.defaultProps = {
94
- type: 'normal',
95
- };
98
+ /** @deprecated Начиная с версии `6.1`, тип и проп устарели в пользу `SizeContext`. Они будут удалены в `7.0`. */
96
99
  Spinner.Types = Object.assign.apply(Object, __spreadArray([{}], types.map(function (type) {
97
100
  var _a;
98
101
  return (_a = {}, _a[type] = type, _a);
99
102
  }), false));
100
- Spinner = Spinner_1 = __decorate([
103
+ Spinner = __decorate([
101
104
  withRenderEnvironment,
102
- rootNode
105
+ rootNode,
106
+ withSize
103
107
  ], Spinner);
104
108
  return Spinner;
105
109
  }(React.Component));
@@ -1 +1 @@
1
- {"version":3,"file":"Spinner.js","sourceRoot":"","sources":["../../../components/Spinner/Spinner.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { SpinnerIcon } from '../../internal/SpinnerIcon/SpinnerIcon.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { getStyles } from './Spinner.styles.js';\n\nconst types = ['big', 'mini', 'normal'] as const;\n\nexport type SpinnerType = (typeof types)[number];\n\nexport interface SpinnerProps extends CommonProps {\n /**\n * Подпись спиннера\n */\n caption?: React.ReactNode;\n\n /**\n * Размер индикатора и текста\n *\n * @default normal\n */\n type?: SpinnerType;\n\n /**\n * Одноцветный режим. Удобная альтернатива пропа `dimmed`\n */\n color?: React.CSSProperties['color'];\n\n /**\n * Уменьшает размер индикатора для работы в строках. Если задан, то размер индикитора из `type` игнорируется\n *\n * @default false\n */\n inline?: boolean;\n\n /**\n * Толщина индикатора в пикселях.\n *\n * @default 2\n */\n width?: number;\n\n /**\n * Одноцветный режим. Цвет спиннера не переливается. Можно кастомизировать переменной `spinnerDimmedColor`\n *\n * @default false\n */\n dimmed?: boolean;\n}\n\nexport const SpinnerDataTids = {\n root: 'Spinner__root',\n} as const;\n\ntype DefaultProps = Required<Pick<SpinnerProps, 'type'>>;\n\n/**\n * Зацикленный индикатор, не отображающий прогресс выполнения задачи.\n */\n@withRenderEnvironment\n@rootNode\nexport class Spinner extends React.Component<SpinnerProps> {\n public static __KONTUR_REACT_UI__ = 'Spinner';\n public static displayName = 'Spinner';\n\n public static defaultProps: DefaultProps = {\n type: 'normal',\n };\n\n private getProps = createPropsGetter(Spinner.defaultProps);\n\n public static Types: Record<SpinnerType, SpinnerType> = Object.assign({}, ...types.map((type) => ({ [type]: type })));\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { caption = null, dimmed, inline } = this.props;\n const type = this.getProps().type;\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={SpinnerDataTids.root} className={this.styles.spinner()}>\n <span className={this.styles.inner()}>{this.renderSpinner(type, dimmed, inline)}</span>\n {caption && this.renderCaption(type, caption)}\n </div>\n </CommonWrapper>\n );\n }\n\n private renderSpinner = (type: SpinnerType, dimmed?: boolean, inline?: boolean) => {\n return (\n <SpinnerIcon\n size={type}\n className={this.cx({\n [this.styles.circle(this.theme)]: !dimmed && !this.props.color,\n [this.styles.circleDimmedColor(this.theme)]: dimmed,\n [this.styles.circleWithoutColorAnimation()]: dimmed || !!this.props.color,\n })}\n width={this.props.width}\n color={this.props.color}\n inline={inline}\n />\n );\n };\n\n private renderCaption = (type: SpinnerType, caption: React.ReactNode) => (\n <span className={this.cx(this.styles[type](this.theme), this.styles.captionColor(this.theme))}>{caption}</span>\n );\n}\n"]}
1
+ {"version":3,"file":"Spinner.js","sourceRoot":"","sources":["../../../components/Spinner/Spinner.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { SpinnerIcon } from '../../internal/SpinnerIcon/SpinnerIcon.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { getStyles } from './Spinner.styles.js';\n\nconst types = ['big', 'mini', 'normal'] as const;\n\n/**\n * @deprecated Начиная с версии `6.1`, тип и проп устарели в пользу `SizeContext`. Они будут удалены в `7.0`.\n * @see {@link SizeProp} */\nexport type SpinnerType = (typeof types)[number];\n\nexport interface SpinnerProps extends CommonProps {\n /** Подпись спиннера */\n caption?: React.ReactNode;\n\n /** Размер спиннера\n * @default small */\n size?: SizeProp;\n\n /** Размер спиннера\n * @deprecated Начиная с версии `6.1`, тип и проп устарели в пользу нового `SizeContext`. Они будут удалены в `7.0`.\n * @see {@link size} */\n type?: SpinnerType;\n\n /** Уменьшает размер индикатора для работы в строках. Если задан, то размер спиннера из `size` игнорируется\n * @default false */\n inline?: boolean;\n\n /** Толщина индикатора в пикселях.\n * @default 2 */\n width?: number;\n\n /** Цвет спиннера в одноцветном режиме. Альтернатива пропа `dimmed` */\n color?: React.CSSProperties['color'];\n\n /** Включает одноцветный режим, в котором цвет спиннера не переливается. Можно кастомизировать переменной `spinnerDimmedColor`\n * @default false */\n dimmed?: boolean;\n}\n\nexport const SpinnerDataTids = {\n root: 'Spinner__root',\n} as const;\n\n/** Зацикленный индикатор, не отображающий прогресс выполнения задачи */\n@withRenderEnvironment\n@rootNode\n@withSize\nexport class Spinner extends React.Component<SpinnerProps> {\n public static __KONTUR_REACT_UI__ = 'Spinner';\n public static displayName = 'Spinner';\n\n /** @deprecated Начиная с версии `6.1`, тип и проп устарели в пользу `SizeContext`. Они будут удалены в `7.0`. */\n public static Types: Record<SpinnerType, SpinnerType> = Object.assign({}, ...types.map((type) => ({ [type]: type })));\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private size!: SizeProp;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { caption = null, size, type, dimmed, inline } = this.props;\n const parsedSize = size || !type ? this.size : this.typeToSize(type);\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={SpinnerDataTids.root} className={this.styles.spinner()}>\n <span className={this.styles.inner()}>{this.renderSpinner(parsedSize, dimmed, inline)}</span>\n {caption && this.renderCaption(parsedSize, caption)}\n </div>\n </CommonWrapper>\n );\n }\n\n private renderSpinner = (size: SizeProp, dimmed?: boolean, inline?: boolean) => {\n return (\n <SpinnerIcon\n size={size}\n className={this.cx({\n [this.styles.circle(this.theme)]: !dimmed && !this.props.color,\n [this.styles.circleDimmedColor(this.theme)]: dimmed,\n [this.styles.circleWithoutColorAnimation()]: dimmed || !!this.props.color,\n })}\n width={this.props.width}\n color={this.props.color}\n inline={inline}\n />\n );\n };\n\n private renderCaption = (size: SizeProp, caption: React.ReactNode) => (\n <span className={this.cx(this.styles[size](this.theme), this.styles.captionColor(this.theme))}>{caption}</span>\n );\n\n private typeToSize = (type: SpinnerType) => {\n switch (type) {\n case 'mini':\n return 'small';\n case 'normal':\n return 'medium';\n case 'big':\n return 'large';\n }\n };\n}\n"]}
@@ -5,11 +5,8 @@ export declare const getStyles: import("../../lib/theming/Emotion.js").StylesGet
5
5
  circleWithoutColorAnimation(): string;
6
6
  captionColor(t: Theme): string;
7
7
  inline(): string;
8
- mini(t: Theme): string;
9
8
  small(t: Theme): string;
10
- normal(t: Theme): string;
11
9
  medium(t: Theme): string;
12
- big(t: Theme): string;
13
10
  large(t: Theme): string;
14
11
  spinner(): string;
15
12
  inner(): string;
@@ -22,31 +22,22 @@ export var getStyles = memoizeGetStyles(function (emotion) {
22
22
  inline: function () {
23
23
  return emotion.css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n font-size: inherit;\n line-height: inherit;\n "], ["\n font-size: inherit;\n line-height: inherit;\n "])));
24
24
  },
25
- mini: function (t) {
26
- return emotion.css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n margin-left: ", ";\n font-size: ", ";\n line-height: ", ";\n "], ["\n margin-left: ", ";\n font-size: ", ";\n line-height: ", ";\n "])), t.spinnerCaptionGapSmall, t.spinnerFontSizeSmall, t.spinnerLineHeightSmall);
27
- },
28
25
  small: function (t) {
29
- return emotion.css(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n margin: ", ";\n font-size: ", ";\n line-height: ", ";\n "], ["\n margin: ", ";\n font-size: ", ";\n line-height: ", ";\n "])), t.spinnerCaptionMarginSmall, t.spinnerFontSizeSmall, t.spinnerLineHeightSmall);
30
- },
31
- normal: function (t) {
32
- return emotion.css(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n display: block;\n font-size: ", ";\n line-height: ", ";\n margin-top: ", ";\n "], ["\n display: block;\n font-size: ", ";\n line-height: ", ";\n margin-top: ", ";\n "])), t.spinnerFontSizeMedium, t.spinnerLineHeightMedium, t.spinnerCaptionGapMedium);
26
+ return emotion.css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n margin-left: ", ";\n font-size: ", ";\n line-height: ", ";\n "], ["\n margin-left: ", ";\n font-size: ", ";\n line-height: ", ";\n "])), t.spinnerCaptionGapSmall, t.spinnerFontSizeSmall, t.spinnerLineHeightSmall);
33
27
  },
34
28
  medium: function (t) {
35
- return emotion.css(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n margin: ", ";\n font-size: ", ";\n line-height: ", ";\n "], ["\n margin: ", ";\n font-size: ", ";\n line-height: ", ";\n "])), t.spinnerCaptionMarginMedium, t.spinnerFontSizeMedium, t.spinnerLineHeightMedium);
36
- },
37
- big: function (t) {
38
- return emotion.css(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n display: block;\n font-size: ", ";\n line-height: ", ";\n margin-top: ", ";\n "], ["\n display: block;\n font-size: ", ";\n line-height: ", ";\n margin-top: ", ";\n "])), t.spinnerFontSizeLarge, t.spinnerLineHeightLarge, t.spinnerCaptionGapLarge);
29
+ return emotion.css(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n display: block;\n font-size: ", ";\n line-height: ", ";\n margin-top: ", ";\n "], ["\n display: block;\n font-size: ", ";\n line-height: ", ";\n margin-top: ", ";\n "])), t.spinnerFontSizeMedium, t.spinnerLineHeightMedium, t.spinnerCaptionGapMedium);
39
30
  },
40
31
  large: function (t) {
41
- return emotion.css(templateObject_11 || (templateObject_11 = __makeTemplateObject(["\n font-size: ", ";\n line-height: ", ";\n margin: ", ";\n "], ["\n font-size: ", ";\n line-height: ", ";\n margin: ", ";\n "])), t.spinnerFontSizeLarge, t.spinnerLineHeightLarge, t.spinnerCaptionMarginLarge);
32
+ return emotion.css(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n display: block;\n font-size: ", ";\n line-height: ", ";\n margin-top: ", ";\n "], ["\n display: block;\n font-size: ", ";\n line-height: ", ";\n margin-top: ", ";\n "])), t.spinnerFontSizeLarge, t.spinnerLineHeightLarge, t.spinnerCaptionGapLarge);
42
33
  },
43
34
  spinner: function () {
44
- return emotion.css(templateObject_12 || (templateObject_12 = __makeTemplateObject(["\n display: inline-block;\n text-align: center;\n line-height: normal;\n "], ["\n display: inline-block;\n text-align: center;\n line-height: normal;\n "])));
35
+ return emotion.css(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n display: inline-block;\n text-align: center;\n line-height: normal;\n "], ["\n display: inline-block;\n text-align: center;\n line-height: normal;\n "])));
45
36
  },
46
37
  inner: function () {
47
- return emotion.css(templateObject_13 || (templateObject_13 = __makeTemplateObject(["\n display: inline-block;\n "], ["\n display: inline-block;\n "])));
38
+ return emotion.css(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n display: inline-block;\n "], ["\n display: inline-block;\n "])));
48
39
  },
49
40
  };
50
41
  });
51
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13;
42
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10;
52
43
  //# sourceMappingURL=Spinner.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Spinner.styles.js","sourceRoot":"","sources":["../../../components/Spinner/Spinner.styles.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { getAnimationKeyframes } from '../../lib/theming/AnimationKeyframes.js';\nimport { memoizeGetStyles } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\n\nexport const getStyles = memoizeGetStyles((emotion: Emotion) => {\n const AnimationKeyframes = getAnimationKeyframes(emotion);\n return {\n circle(t: Theme) {\n return emotion.css`\n stroke: ${t.spinnerColor};\n\n animation:\n ${AnimationKeyframes.spinnerCircleOffset()} 1s cubic-bezier(0.5, 0.2, 0.5, 0.8) infinite,\n ${AnimationKeyframes.spinnerCircleLength()} 2s cubic-bezier(0.36, 0.14, 0.38, 0.69) infinite,\n ${AnimationKeyframes.spinnerCircleRotate()} 2s linear infinite,\n ${AnimationKeyframes.spinnerColor(t)} 6s ease-in-out infinite;\n `;\n },\n circleDimmedColor(t: Theme) {\n return emotion.css`\n stroke: ${t.spinnerDimmedColor};\n `;\n },\n circleWithoutColorAnimation() {\n return emotion.css`\n animation:\n ${AnimationKeyframes.spinnerCircleOffset()} 1s cubic-bezier(0.5, 0.2, 0.5, 0.8) infinite,\n ${AnimationKeyframes.spinnerCircleLength()} 2s cubic-bezier(0.36, 0.14, 0.38, 0.69) infinite,\n ${AnimationKeyframes.spinnerCircleRotate()} 2s linear infinite;\n `;\n },\n\n captionColor(t: Theme) {\n return emotion.css`\n color: ${t.spinnerCaptionColor};\n `;\n },\n\n inline() {\n return emotion.css`\n font-size: inherit;\n line-height: inherit;\n `;\n },\n\n mini(t: Theme) {\n return emotion.css`\n margin-left: ${t.spinnerCaptionGapSmall};\n font-size: ${t.spinnerFontSizeSmall};\n line-height: ${t.spinnerLineHeightSmall};\n `;\n },\n\n small(t: Theme) {\n return emotion.css`\n margin: ${t.spinnerCaptionMarginSmall};\n font-size: ${t.spinnerFontSizeSmall};\n line-height: ${t.spinnerLineHeightSmall};\n `;\n },\n\n normal(t: Theme) {\n return emotion.css`\n display: block;\n font-size: ${t.spinnerFontSizeMedium};\n line-height: ${t.spinnerLineHeightMedium};\n margin-top: ${t.spinnerCaptionGapMedium};\n `;\n },\n\n medium(t: Theme) {\n return emotion.css`\n margin: ${t.spinnerCaptionMarginMedium};\n font-size: ${t.spinnerFontSizeMedium};\n line-height: ${t.spinnerLineHeightMedium};\n `;\n },\n\n big(t: Theme) {\n return emotion.css`\n display: block;\n font-size: ${t.spinnerFontSizeLarge};\n line-height: ${t.spinnerLineHeightLarge};\n margin-top: ${t.spinnerCaptionGapLarge};\n `;\n },\n\n large(t: Theme) {\n return emotion.css`\n font-size: ${t.spinnerFontSizeLarge};\n line-height: ${t.spinnerLineHeightLarge};\n margin: ${t.spinnerCaptionMarginLarge};\n `;\n },\n\n spinner() {\n return emotion.css`\n display: inline-block;\n text-align: center;\n line-height: normal;\n `;\n },\n\n inner() {\n return emotion.css`\n display: inline-block;\n `;\n },\n };\n});\n"]}
1
+ {"version":3,"file":"Spinner.styles.js","sourceRoot":"","sources":["../../../components/Spinner/Spinner.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,MAAM,CAAC,IAAM,SAAS,GAAG,gBAAgB,CAAC,UAAC,OAAgB;IACzD,IAAM,kBAAkB,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC1D,OAAO;QACL,MAAM,YAAC,CAAQ;YACb,OAAO,OAAO,CAAC,GAAG,2TAAA,oBACN,EAAc,iCAGtB,EAAwC,0DACxC,EAAwC,8DACxC,EAAwC,gCACxC,EAAkC,iCACvC,KAPa,CAAC,CAAC,YAAY,EAGtB,kBAAkB,CAAC,mBAAmB,EAAE,EACxC,kBAAkB,CAAC,mBAAmB,EAAE,EACxC,kBAAkB,CAAC,mBAAmB,EAAE,EACxC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,EACtC;QACF,CAAC;QACD,iBAAiB,YAAC,CAAQ;YACxB,OAAO,OAAO,CAAC,GAAG,oGAAA,oBACN,EAAoB,WAC/B,KADW,CAAC,CAAC,kBAAkB,EAC9B;QACJ,CAAC;QACD,2BAA2B;YACzB,OAAO,OAAO,CAAC,GAAG,qQAAA,kCAEZ,EAAwC,4DACxC,EAAwC,gEACxC,EAAwC,8BAC7C,KAHK,kBAAkB,CAAC,mBAAmB,EAAE,EACxC,kBAAkB,CAAC,mBAAmB,EAAE,EACxC,kBAAkB,CAAC,mBAAmB,EAAE,EAC5C;QACJ,CAAC;QAED,YAAY,YAAC,CAAQ;YACnB,OAAO,OAAO,CAAC,GAAG,mGAAA,mBACP,EAAqB,WAC/B,KADU,CAAC,CAAC,mBAAmB,EAC9B;QACJ,CAAC;QAED,MAAM;YACJ,OAAO,OAAO,CAAC,GAAG,yIAAA,sEAGjB,KAAC;QACJ,CAAC;QAED,KAAK,YAAC,CAAQ;YACZ,OAAO,OAAO,CAAC,GAAG,+JAAA,yBACD,EAAwB,wBAC1B,EAAsB,0BACpB,EAAwB,WACxC,KAHgB,CAAC,CAAC,sBAAsB,EAC1B,CAAC,CAAC,oBAAoB,EACpB,CAAC,CAAC,sBAAsB,EACvC;QACJ,CAAC;QAED,MAAM,YAAC,CAAQ;YACb,OAAO,OAAO,CAAC,GAAG,uLAAA,gDAEH,EAAuB,0BACrB,EAAyB,yBAC1B,EAAyB,WACxC,KAHc,CAAC,CAAC,qBAAqB,EACrB,CAAC,CAAC,uBAAuB,EAC1B,CAAC,CAAC,uBAAuB,EACvC;QACJ,CAAC;QAED,KAAK,YAAC,CAAQ;YACZ,OAAO,OAAO,CAAC,GAAG,uLAAA,gDAEH,EAAsB,0BACpB,EAAwB,yBACzB,EAAwB,WACvC,KAHc,CAAC,CAAC,oBAAoB,EACpB,CAAC,CAAC,sBAAsB,EACzB,CAAC,CAAC,sBAAsB,EACtC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,OAAO,CAAC,GAAG,wKAAA,qGAIjB,KAAC;QACJ,CAAC;QAED,KAAK;YACH,OAAO,OAAO,CAAC,GAAG,+GAAA,0CAEjB,KAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { getAnimationKeyframes } from '../../lib/theming/AnimationKeyframes.js';\nimport { memoizeGetStyles } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\n\nexport const getStyles = memoizeGetStyles((emotion: Emotion) => {\n const AnimationKeyframes = getAnimationKeyframes(emotion);\n return {\n circle(t: Theme) {\n return emotion.css`\n stroke: ${t.spinnerColor};\n\n animation:\n ${AnimationKeyframes.spinnerCircleOffset()} 1s cubic-bezier(0.5, 0.2, 0.5, 0.8) infinite,\n ${AnimationKeyframes.spinnerCircleLength()} 2s cubic-bezier(0.36, 0.14, 0.38, 0.69) infinite,\n ${AnimationKeyframes.spinnerCircleRotate()} 2s linear infinite,\n ${AnimationKeyframes.spinnerColor(t)} 6s ease-in-out infinite;\n `;\n },\n circleDimmedColor(t: Theme) {\n return emotion.css`\n stroke: ${t.spinnerDimmedColor};\n `;\n },\n circleWithoutColorAnimation() {\n return emotion.css`\n animation:\n ${AnimationKeyframes.spinnerCircleOffset()} 1s cubic-bezier(0.5, 0.2, 0.5, 0.8) infinite,\n ${AnimationKeyframes.spinnerCircleLength()} 2s cubic-bezier(0.36, 0.14, 0.38, 0.69) infinite,\n ${AnimationKeyframes.spinnerCircleRotate()} 2s linear infinite;\n `;\n },\n\n captionColor(t: Theme) {\n return emotion.css`\n color: ${t.spinnerCaptionColor};\n `;\n },\n\n inline() {\n return emotion.css`\n font-size: inherit;\n line-height: inherit;\n `;\n },\n\n small(t: Theme) {\n return emotion.css`\n margin-left: ${t.spinnerCaptionGapSmall};\n font-size: ${t.spinnerFontSizeSmall};\n line-height: ${t.spinnerLineHeightSmall};\n `;\n },\n\n medium(t: Theme) {\n return emotion.css`\n display: block;\n font-size: ${t.spinnerFontSizeMedium};\n line-height: ${t.spinnerLineHeightMedium};\n margin-top: ${t.spinnerCaptionGapMedium};\n `;\n },\n\n large(t: Theme) {\n return emotion.css`\n display: block;\n font-size: ${t.spinnerFontSizeLarge};\n line-height: ${t.spinnerLineHeightLarge};\n margin-top: ${t.spinnerCaptionGapLarge};\n `;\n },\n\n spinner() {\n return emotion.css`\n display: inline-block;\n text-align: center;\n line-height: normal;\n `;\n },\n\n inner() {\n return emotion.css`\n display: inline-block;\n `;\n },\n };\n});\n"]}
@@ -137,6 +137,7 @@ var Switcher = /** @class */ (function (_super) {
137
137
  var _a = _this._extractPropsFromItem(item), ariaLabel = _a["aria-label"], label = _a.label, itemValue = _a.value, customButtonProps = _a.buttonProps;
138
138
  var isChecked = value === itemValue;
139
139
  var commonButtonProps = {
140
+ use: 'default',
140
141
  'aria-checked': isChecked,
141
142
  role: role,
142
143
  checked: isChecked,
@@ -1 +1 @@
1
- {"version":3,"file":"Switcher.js","sourceRoot":"","sources":["../../../components/Switcher/Switcher.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { HTMLAttributes } from 'react';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { isKeyArrowHorizontal, isKeyArrowLeft, isKeyEnter } from '../../lib/events/keyboard/identifiers.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { Button } from '../Button/index.js';\nimport type { ButtonProps } from '../Button/index.js';\nimport { Group, getButtonCorners } from '../Group/index.js';\nimport { mod } from './helpers.js';\nimport { getStyles } from './Switcher.styles.js';\nimport { getSwitcherTheme } from './switcherTheme.js';\n\nexport type SwitcherItems = string | SwitcherItem;\n\nexport const SwitcherDataTids = {\n root: 'Switcher__root',\n} as const;\n\nexport interface SwitcherProps extends Pick<HTMLAttributes<unknown>, 'role'>, CommonProps {\n /** Задает список элементов в свитчере. Это массив строк или объектов типа `{ label: string, value: string, buttonProps?: Partial<ButtonProps> }` */\n items: SwitcherItems[];\n\n /** Значение свитчера. */\n value?: string;\n\n /** Событие изменения значения свитчера (value). */\n onValueChange?: (value: string) => void;\n\n /** Подпись около свитчера. */\n caption?: string;\n\n /** Переводит свитчер в состояние ошибки. */\n error?: boolean;\n\n /** Размер свитчера. */\n size?: SizeProp;\n\n /** Ширина свитчера. С этим пропом элементы внутри автоматически равномерно растянутся. */\n width?: React.CSSProperties['width'];\n\n /** Блокирует свитчер. */\n disabled?: boolean;\n\n /** Задает функцию отрисовки элемента. Параметр `renderDefault` - это встроенная дефолтная функция отрисовки элемента, которую можно вызывать в `renderItem`. */\n renderItem?: (\n label: string,\n value: string,\n buttonProps: ButtonProps,\n renderDefault: () => React.ReactNode,\n ariaLabel?: string,\n ) => React.ReactNode;\n}\n\ntype DefaultProps = Required<Pick<SwitcherProps, 'role'>>;\n\nexport interface SwitcherState {\n focusedIndex: Nullable<number>;\n}\n\ninterface SwitcherItem {\n value: string;\n label: string;\n 'aria-label'?: string;\n buttonProps?: Partial<ButtonProps>;\n}\n\n/**\n * Переключатель — это замена группе радиокнопок. Переключатель меньше по высоте, это позволяет делать формы компактнее.\n */\n@withRenderEnvironment\n@rootNode\nexport class Switcher extends React.Component<SwitcherProps, SwitcherState> {\n public static __KONTUR_REACT_UI__ = 'Switcher';\n public static displayName = 'Switcher';\n\n public static defaultProps: DefaultProps = {\n role: 'switch',\n };\n\n public state: SwitcherState = {\n focusedIndex: null,\n };\n\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getSwitcherTheme(theme);\n return <ThemeContext.Provider value={this.theme}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const inputProps = {\n type: 'checkbox',\n onKeyDown: this.handleKey,\n onFocus: this._handleFocus,\n onBlur: this._handleBlur,\n className: this.styles.input(),\n };\n const items = <Group width={'100%'}>{this._renderItems()}</Group>;\n\n const captionClassName = this.cx(this.styles.caption(this.theme), this.getLabelSizeClassName());\n const wrapperClassName = this.cx(this.styles.wrap(), {\n [this.styles.error(this.theme)]: this.props.error,\n [this.styles.wrapCustomWidth()]: this.props.width !== undefined,\n });\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={SwitcherDataTids.root} className={this.styles.root()} style={{ width: this.props.width }}>\n {this.props.caption ? <div className={captionClassName}>{this.props.caption}</div> : null}\n <div className={wrapperClassName}>\n <input {...inputProps} />\n {items}\n </div>\n </div>\n </CommonWrapper>\n );\n }\n\n private selectItem = (value: string) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private _extractPropsFromItem = (item: string | SwitcherItem): SwitcherItem => {\n return typeof item === 'object' ? item : { label: item, value: item };\n };\n\n private _extractValuesFromItems = (): string[] => {\n return this.props.items.map((item) => {\n const { value } = this._extractPropsFromItem(item);\n return value;\n });\n };\n\n private _focus = (index: number) => {\n this.setState({ focusedIndex: index });\n };\n\n private handleKey = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const focusedIndex = this.state.focusedIndex;\n if (typeof focusedIndex !== 'number') {\n return;\n }\n\n if (isKeyEnter(e)) {\n if (this.props.onValueChange) {\n const { value, buttonProps } = this._extractPropsFromItem(this.props.items[focusedIndex]);\n if (!buttonProps?.disabled) {\n this.selectItem(value);\n }\n }\n return;\n }\n\n if (isKeyArrowHorizontal(e)) {\n e.preventDefault();\n this.move(isKeyArrowLeft(e));\n }\n };\n\n private move = (left: boolean) => {\n const selectedIndex = this.state.focusedIndex;\n\n if (typeof selectedIndex !== 'number') {\n return;\n }\n const newFocusedIndex = this._getNextFocusedIndex(left, selectedIndex);\n this._focus(newFocusedIndex);\n };\n\n private _getNextFocusedIndex = (left: boolean, focusedIndex: number): number => {\n const { items, disabled } = this.props;\n if (disabled) {\n return focusedIndex;\n }\n\n for (let i = 1; i < items.length; i++) {\n const index = mod(focusedIndex + (left ? -i : i), items.length);\n const { buttonProps } = this._extractPropsFromItem(items[index]);\n if (!buttonProps?.disabled) {\n return index;\n }\n }\n return focusedIndex;\n };\n\n private _handleFocus = () => {\n const { value } = this.props;\n\n const items = this._extractValuesFromItems();\n const currentIndex = [...items].indexOf(value as string);\n const index = currentIndex > -1 ? currentIndex : 0;\n\n this.setState({ focusedIndex: index });\n };\n\n private _handleBlur = () => {\n this.setState({ focusedIndex: null });\n };\n\n private _renderItems = () => {\n const { items, value, size, width, disabled, role, renderItem } = this.props;\n\n return items.map((item, i) => {\n const {\n 'aria-label': ariaLabel,\n label,\n value: itemValue,\n buttonProps: customButtonProps,\n } = this._extractPropsFromItem(item);\n\n const isChecked = value === itemValue;\n const commonButtonProps = {\n 'aria-checked': isChecked,\n role,\n checked: isChecked,\n visuallyFocused: this.state.focusedIndex === i,\n onClick: () => {\n this.selectItem(itemValue);\n },\n disableFocus: true,\n size,\n disabled,\n corners: getButtonCorners(i === 0, i === items.length - 1),\n };\n\n const buttonProps = {\n ...commonButtonProps,\n ...customButtonProps,\n };\n\n if (!buttonProps.width && width) {\n buttonProps.width = '100%';\n }\n\n const renderDefault = () => this.renderDefaultItem(label, itemValue, buttonProps, ariaLabel);\n return renderItem ? renderItem(label, itemValue, buttonProps, renderDefault, ariaLabel) : renderDefault();\n });\n };\n\n private renderDefaultItem = (label: string, value: string, buttonProps: ButtonProps, ariaLabel?: string) => (\n <Button aria-label={ariaLabel} key={value} {...buttonProps}>\n {label}\n </Button>\n );\n\n private getLabelSizeClassName = (): string => {\n switch (this.props.size) {\n case 'large':\n return this.styles.captionLarge(this.theme);\n case 'medium':\n return this.styles.captionMedium(this.theme);\n case 'small':\n default:\n return this.styles.captionSmall(this.theme);\n }\n };\n}\n"]}
1
+ {"version":3,"file":"Switcher.js","sourceRoot":"","sources":["../../../components/Switcher/Switcher.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { HTMLAttributes } from 'react';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { isKeyArrowHorizontal, isKeyArrowLeft, isKeyEnter } from '../../lib/events/keyboard/identifiers.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { Button } from '../Button/index.js';\nimport type { ButtonProps } from '../Button/index.js';\nimport { Group, getButtonCorners } from '../Group/index.js';\nimport { mod } from './helpers.js';\nimport { getStyles } from './Switcher.styles.js';\nimport { getSwitcherTheme } from './switcherTheme.js';\n\nexport type SwitcherItems = string | SwitcherItem;\n\nexport const SwitcherDataTids = {\n root: 'Switcher__root',\n} as const;\n\nexport interface SwitcherProps extends Pick<HTMLAttributes<unknown>, 'role'>, CommonProps {\n /** Задает список элементов в свитчере. Это массив строк или объектов типа `{ label: string, value: string, buttonProps?: Partial<ButtonProps> }` */\n items: SwitcherItems[];\n\n /** Значение свитчера. */\n value?: string;\n\n /** Событие изменения значения свитчера (value). */\n onValueChange?: (value: string) => void;\n\n /** Подпись около свитчера. */\n caption?: string;\n\n /** Переводит свитчер в состояние ошибки. */\n error?: boolean;\n\n /** Размер свитчера. */\n size?: SizeProp;\n\n /** Ширина свитчера. С этим пропом элементы внутри автоматически равномерно растянутся. */\n width?: React.CSSProperties['width'];\n\n /** Блокирует свитчер. */\n disabled?: boolean;\n\n /** Задает функцию отрисовки элемента. Параметр `renderDefault` - это встроенная дефолтная функция отрисовки элемента, которую можно вызывать в `renderItem`. */\n renderItem?: (\n label: string,\n value: string,\n buttonProps: ButtonProps,\n renderDefault: () => React.ReactNode,\n ariaLabel?: string,\n ) => React.ReactNode;\n}\n\ntype DefaultProps = Required<Pick<SwitcherProps, 'role'>>;\n\nexport interface SwitcherState {\n focusedIndex: Nullable<number>;\n}\n\ninterface SwitcherItem {\n value: string;\n label: string;\n 'aria-label'?: string;\n buttonProps?: Partial<ButtonProps>;\n}\n\n/**\n * Переключатель — это замена группе радиокнопок. Переключатель меньше по высоте, это позволяет делать формы компактнее.\n */\n@withRenderEnvironment\n@rootNode\nexport class Switcher extends React.Component<SwitcherProps, SwitcherState> {\n public static __KONTUR_REACT_UI__ = 'Switcher';\n public static displayName = 'Switcher';\n\n public static defaultProps: DefaultProps = {\n role: 'switch',\n };\n\n public state: SwitcherState = {\n focusedIndex: null,\n };\n\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getSwitcherTheme(theme);\n return <ThemeContext.Provider value={this.theme}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const inputProps = {\n type: 'checkbox',\n onKeyDown: this.handleKey,\n onFocus: this._handleFocus,\n onBlur: this._handleBlur,\n className: this.styles.input(),\n };\n const items = <Group width={'100%'}>{this._renderItems()}</Group>;\n\n const captionClassName = this.cx(this.styles.caption(this.theme), this.getLabelSizeClassName());\n const wrapperClassName = this.cx(this.styles.wrap(), {\n [this.styles.error(this.theme)]: this.props.error,\n [this.styles.wrapCustomWidth()]: this.props.width !== undefined,\n });\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={SwitcherDataTids.root} className={this.styles.root()} style={{ width: this.props.width }}>\n {this.props.caption ? <div className={captionClassName}>{this.props.caption}</div> : null}\n <div className={wrapperClassName}>\n <input {...inputProps} />\n {items}\n </div>\n </div>\n </CommonWrapper>\n );\n }\n\n private selectItem = (value: string) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private _extractPropsFromItem = (item: string | SwitcherItem): SwitcherItem => {\n return typeof item === 'object' ? item : { label: item, value: item };\n };\n\n private _extractValuesFromItems = (): string[] => {\n return this.props.items.map((item) => {\n const { value } = this._extractPropsFromItem(item);\n return value;\n });\n };\n\n private _focus = (index: number) => {\n this.setState({ focusedIndex: index });\n };\n\n private handleKey = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const focusedIndex = this.state.focusedIndex;\n if (typeof focusedIndex !== 'number') {\n return;\n }\n\n if (isKeyEnter(e)) {\n if (this.props.onValueChange) {\n const { value, buttonProps } = this._extractPropsFromItem(this.props.items[focusedIndex]);\n if (!buttonProps?.disabled) {\n this.selectItem(value);\n }\n }\n return;\n }\n\n if (isKeyArrowHorizontal(e)) {\n e.preventDefault();\n this.move(isKeyArrowLeft(e));\n }\n };\n\n private move = (left: boolean) => {\n const selectedIndex = this.state.focusedIndex;\n\n if (typeof selectedIndex !== 'number') {\n return;\n }\n const newFocusedIndex = this._getNextFocusedIndex(left, selectedIndex);\n this._focus(newFocusedIndex);\n };\n\n private _getNextFocusedIndex = (left: boolean, focusedIndex: number): number => {\n const { items, disabled } = this.props;\n if (disabled) {\n return focusedIndex;\n }\n\n for (let i = 1; i < items.length; i++) {\n const index = mod(focusedIndex + (left ? -i : i), items.length);\n const { buttonProps } = this._extractPropsFromItem(items[index]);\n if (!buttonProps?.disabled) {\n return index;\n }\n }\n return focusedIndex;\n };\n\n private _handleFocus = () => {\n const { value } = this.props;\n\n const items = this._extractValuesFromItems();\n const currentIndex = [...items].indexOf(value as string);\n const index = currentIndex > -1 ? currentIndex : 0;\n\n this.setState({ focusedIndex: index });\n };\n\n private _handleBlur = () => {\n this.setState({ focusedIndex: null });\n };\n\n private _renderItems = () => {\n const { items, value, size, width, disabled, role, renderItem } = this.props;\n\n return items.map((item, i) => {\n const {\n 'aria-label': ariaLabel,\n label,\n value: itemValue,\n buttonProps: customButtonProps,\n } = this._extractPropsFromItem(item);\n\n const isChecked = value === itemValue;\n const commonButtonProps = {\n use: 'default',\n 'aria-checked': isChecked,\n role,\n checked: isChecked,\n visuallyFocused: this.state.focusedIndex === i,\n onClick: () => {\n this.selectItem(itemValue);\n },\n disableFocus: true,\n size,\n disabled,\n corners: getButtonCorners(i === 0, i === items.length - 1),\n } satisfies ButtonProps;\n\n const buttonProps = {\n ...commonButtonProps,\n ...customButtonProps,\n };\n\n if (!buttonProps.width && width) {\n buttonProps.width = '100%';\n }\n\n const renderDefault = () => this.renderDefaultItem(label, itemValue, buttonProps, ariaLabel);\n return renderItem ? renderItem(label, itemValue, buttonProps, renderDefault, ariaLabel) : renderDefault();\n });\n };\n\n private renderDefaultItem = (label: string, value: string, buttonProps: ButtonProps, ariaLabel?: string) => (\n <Button aria-label={ariaLabel} key={value} {...buttonProps}>\n {label}\n </Button>\n );\n\n private getLabelSizeClassName = (): string => {\n switch (this.props.size) {\n case 'large':\n return this.styles.captionLarge(this.theme);\n case 'medium':\n return this.styles.captionMedium(this.theme);\n case 'small':\n default:\n return this.styles.captionSmall(this.theme);\n }\n };\n}\n"]}
@@ -161,7 +161,7 @@ var Textarea = /** @class */ (function (_super) {
161
161
  };
162
162
  fakeTextarea = React.createElement("textarea", __assign({}, fakeProps, { ref: _this.refFake }));
163
163
  }
164
- var counter = showLengthCounter && isCounterVisible && _this.node && (React.createElement(TextareaCounter, { textarea: _this.node, help: counterHelp, value: textareaProps.value, length: (_d = (_c = textareaProps.maxLength) !== null && _c !== void 0 ? _c : lengthCounter) !== null && _d !== void 0 ? _d : 0, onCloseHelp: _this.handleCloseCounterHelp, ref: _this.refCounter }));
164
+ var counter = showLengthCounter && isCounterVisible && _this.node && (React.createElement(TextareaCounter, { textarea: _this.node, size: _this.size, help: counterHelp, value: textareaProps.value, length: (_d = (_c = textareaProps.maxLength) !== null && _c !== void 0 ? _c : lengthCounter) !== null && _d !== void 0 ? _d : 0, onCloseHelp: _this.handleCloseCounterHelp, ref: _this.refCounter }));
165
165
  var Component = isSafariWithTextareaBug ? TextareaWithSafari17Workaround : 'textarea';
166
166
  return (React.createElement(RenderLayer, { onFocusOutside: _this.handleCloseCounterHelp, onClickOutside: _this.handleCloseCounterHelp, active: _this.state.isCounterVisible },
167
167
  React.createElement("label", __assign({ "data-tid": TextareaDataTids.root }, rootProps, { className: _this.cx(_this.getRootSizeClassName(), (_b = {},