@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
@@ -1 +1 @@
1
- {"version":3,"file":"InputLayout.js","sourceRoot":"","sources":["../../../../components/Input/InputLayout/InputLayout.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAWxF,MAAM,CAAC,IAAM,WAAW,GAAG,iBAAiB,CAAyC,aAAa,EAAE,UAAC,KAAK,EAAE,GAAG;IAC7G,IAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;IACxC,IAAA,QAAQ,GAA8E,KAAK,SAAnF,EAAE,SAAS,GAAmE,KAAK,UAAxE,EAAE,MAAM,GAA2D,KAAK,OAAhE,EAAE,MAAM,GAAmD,KAAK,OAAxD,EAAE,UAAU,GAAuC,KAAK,WAA5C,EAAE,OAAO,GAA8B,KAAK,QAAnC,EAAE,QAAQ,GAAoB,KAAK,SAAzB,EAAE,KAAkB,KAAK,IAAV,EAAb,GAAG,mBAAG,OAAO,KAAA,CAAW;IACpG,IAAM,QAAQ,yBAAiC,yBAAyB,GAAK,OAAO,CAAE,CAAC;IACvF,IAAM,GAAG,GAAG,GAAG,CAAC;IAEhB,OAAO,CACL,oBAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,QAAQ;QAC1C,oBAAC,aAAa,eAAK,KAAK;YACtB,oBAAC,GAAG,yBAAW,aAAa,CAAC,IAAI,IAAM,UAAU,IAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC;gBACpF,oBAAC,gBAAgB,IAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC,MAAM,GAAG;gBAC9D,8BAAM,SAAS,EAAE,YAAY,CAAC,KAAK,EAAE,IAAG,QAAQ,CAAQ;gBACxD,oBAAC,gBAAgB,IAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC,OAAO,GAAG,CAC5D,CACQ,CACY,CAC/B,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import React from 'react';\n\nimport type { CommonProps } from '../../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../../internal/CommonWrapper/index.js';\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName.js';\nimport { mergeRefs } from '../../../lib/mergeRefs.js';\nimport { useStyles } from '../../../lib/renderEnvironment/index.js';\nimport { InputDataTids } from '../Input.js';\nimport type { InputProps } from '../Input.js';\nimport { getStylesLayout } from './InputLayout.styles.js';\nimport { InputLayoutAside } from './InputLayoutAside.js';\nimport { InputLayoutContext, InputLayoutContextDefault } from './InputLayoutContext.js';\nimport type { InputLayoutContextProps } from './InputLayoutContext.js';\n\ntype InputLayoutRootFromInputProps = Pick<InputProps, 'leftIcon' | 'rightIcon' | 'prefix' | 'suffix'>;\n\nexport interface InputLayoutRootProps extends InputLayoutRootFromInputProps, CommonProps {\n labelProps: React.LabelHTMLAttributes<HTMLLabelElement> & { ref?: React.Ref<HTMLLabelElement> };\n context: Partial<InputLayoutContextProps>;\n tag?: 'label' | 'span';\n}\n\nexport const InputLayout = forwardRefAndName<HTMLLabelElement, InputLayoutRootProps>('InputLayout', (props, ref) => {\n const stylesLayout = useStyles(getStylesLayout);\n const { leftIcon, rightIcon, prefix, suffix, labelProps, context, children, tag = 'label' } = props;\n const _context: InputLayoutContextProps = { ...InputLayoutContextDefault, ...context };\n const Tag = tag;\n\n return (\n <InputLayoutContext.Provider value={_context}>\n <CommonWrapper {...props}>\n <Tag data-tid={InputDataTids.root} {...labelProps} ref={mergeRefs(ref, labelProps.ref)}>\n <InputLayoutAside icon={leftIcon} text={prefix} side=\"left\" />\n <span className={stylesLayout.input()}>{children}</span>\n <InputLayoutAside icon={rightIcon} text={suffix} side=\"right\" />\n </Tag>\n </CommonWrapper>\n </InputLayoutContext.Provider>\n );\n});\n"]}
1
+ {"version":3,"file":"InputLayout.js","sourceRoot":"","sources":["../../../../components/Input/InputLayout/InputLayout.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAyBxF,MAAM,CAAC,IAAM,WAAW,GAAG,iBAAiB,CAAyC,aAAa,EAAE,UAAC,KAAK,EAAE,GAAG;;IAC7G,IAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;IAE9C,IAAA,QAAQ,GAgBN,KAAK,SAhBC,EACR,SAAS,GAeP,KAAK,UAfE,EACT,MAAM,GAcJ,KAAK,OAdD,EACN,MAAM,GAaJ,KAAK,OAbD,EACN,KAAK,GAYH,KAAK,MAZF,EACL,iBAAiB,GAWf,KAAK,kBAXU,EACjB,gBAAgB,GAUd,KAAK,iBAVS,EAChB,aAAa,GASX,KAAK,cATM,EACb,WAAW,GAQT,KAAK,YARI,EACX,kBAAkB,GAOhB,KAAK,mBAPW,EAClB,SAAS,GAMP,KAAK,UANE,EACT,IAAI,GAKF,KAAK,KALH,EACJ,UAAU,GAIR,KAAK,WAJG,EACV,OAAO,GAGL,KAAK,QAHA,EACP,QAAQ,GAEN,KAAK,SAFC,EACR,KACE,KAAK,IADM,EAAb,GAAG,mBAAG,OAAO,KAAA,CACL;IACV,IAAM,QAAQ,yBAAiC,yBAAyB,GAAK,OAAO,CAAE,CAAC;IACvF,IAAM,GAAG,GAAG,GAAG,CAAC;IAChB,IAAM,OAAO,GACX,iBAAiB,IAAI,gBAAgB,CAAC,CAAC,CAAC,CACtC,oBAAC,uBAAuB,IACtB,GAAG,EAAC,SAAS,EACb,UAAU,EAAE,KAAK,EACjB,MAAM,EAAE,MAAA,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,aAAa,mCAAI,CAAC,EACvC,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,kBAAkB,EAC/B,IAAI,EAAE,IAAI,GACV,CACH,CAAC,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO,CACL,oBAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,QAAQ;QAC1C,oBAAC,aAAa,eAAK,KAAK;YACtB,oBAAC,GAAG,yBAAW,aAAa,CAAC,IAAI,IAAM,UAAU,IAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC;gBACpF,oBAAC,gBAAgB,IAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC,MAAM,GAAG;gBAC9D,8BAAM,SAAS,EAAE,YAAY,CAAC,KAAK,EAAE,IAAG,QAAQ,CAAQ;gBACxD,oBAAC,gBAAgB,IAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,OAAO,GAAG,CAC9E,CACQ,CACY,CAC/B,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import React from 'react';\n\nimport type { CommonProps } from '../../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../../internal/CommonWrapper/index.js';\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName.js';\nimport { mergeRefs } from '../../../lib/mergeRefs.js';\nimport { useStyles } from '../../../lib/renderEnvironment/index.js';\nimport { InputDataTids } from '../Input.js';\nimport type { InputProps } from '../Input.js';\nimport { getStylesLayout } from './InputLayout.styles.js';\nimport { InputLayoutAside } from './InputLayoutAside.js';\nimport { InputLayoutAsideCounter } from './InputLayoutAsideCounter.js';\nimport { InputLayoutContext, InputLayoutContextDefault } from './InputLayoutContext.js';\nimport type { InputLayoutContextProps } from './InputLayoutContext.js';\n\ntype InputLayoutRootFromInputProps = Pick<\n InputProps,\n | 'leftIcon'\n | 'rightIcon'\n | 'prefix'\n | 'suffix'\n | 'value'\n | 'showLengthCounter'\n | 'lengthCounter'\n | 'counterHelp'\n | 'maxLength'\n | 'size'\n>;\n\nexport interface InputLayoutRootProps extends InputLayoutRootFromInputProps, CommonProps {\n labelProps: React.LabelHTMLAttributes<HTMLLabelElement> & { ref?: React.Ref<HTMLLabelElement> };\n context: Partial<InputLayoutContextProps>;\n isCounterVisible?: boolean;\n onCloseCounterHelp?: () => void;\n tag?: 'label' | 'span';\n}\n\nexport const InputLayout = forwardRefAndName<HTMLLabelElement, InputLayoutRootProps>('InputLayout', (props, ref) => {\n const stylesLayout = useStyles(getStylesLayout);\n const {\n leftIcon,\n rightIcon,\n prefix,\n suffix,\n value,\n showLengthCounter,\n isCounterVisible,\n lengthCounter,\n counterHelp,\n onCloseCounterHelp,\n maxLength,\n size,\n labelProps,\n context,\n children,\n tag = 'label',\n } = props;\n const _context: InputLayoutContextProps = { ...InputLayoutContextDefault, ...context };\n const Tag = tag;\n const counter =\n showLengthCounter && isCounterVisible ? (\n <InputLayoutAsideCounter\n key=\"counter\"\n inputValue={value}\n length={maxLength ?? lengthCounter ?? 0}\n help={counterHelp}\n onCloseHelp={onCloseCounterHelp}\n size={size}\n />\n ) : undefined;\n\n return (\n <InputLayoutContext.Provider value={_context}>\n <CommonWrapper {...props}>\n <Tag data-tid={InputDataTids.root} {...labelProps} ref={mergeRefs(ref, labelProps.ref)}>\n <InputLayoutAside icon={leftIcon} text={prefix} side=\"left\" />\n <span className={stylesLayout.input()}>{children}</span>\n <InputLayoutAside icon={rightIcon} text={suffix} counter={counter} side=\"right\" />\n </Tag>\n </CommonWrapper>\n </InputLayoutContext.Provider>\n );\n});\n"]}
@@ -8,4 +8,10 @@ export declare const getStylesLayout: import("../../../lib/theming/Emotion.js").
8
8
  iconDisabled(t: Theme): string;
9
9
  text(t: Theme): string;
10
10
  textDisabled(t: Theme): string;
11
+ counter(t: Theme): string;
12
+ counterSmall(t: Theme): string;
13
+ counterMedium(t: Theme): string;
14
+ counterLarge(t: Theme): string;
15
+ counterError(t: Theme): string;
16
+ counterHelp(t: Theme): string;
11
17
  }>;
@@ -32,7 +32,25 @@ export var getStylesLayout = memoizeGetStyles(function (emotion) {
32
32
  textDisabled: function (t) {
33
33
  return emotion.css(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), t.inputPlaceholderColorDisabled);
34
34
  },
35
+ counter: function (t) {
36
+ return emotion.css(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n font-variant-numeric: tabular-nums;\n color: ", ";\n "], ["\n font-variant-numeric: tabular-nums;\n color: ", ";\n "])), t.inputCounterColor);
37
+ },
38
+ counterSmall: function (t) {
39
+ return emotion.css(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n margin-left: ", ";\n "], ["\n margin-left: ", ";\n "])), t.inputCounterMarginLeftSmall);
40
+ },
41
+ counterMedium: function (t) {
42
+ return emotion.css(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n margin-left: ", ";\n "], ["\n margin-left: ", ";\n "])), t.inputCounterMarginLeftMedium);
43
+ },
44
+ counterLarge: function (t) {
45
+ return emotion.css(templateObject_11 || (templateObject_11 = __makeTemplateObject(["\n margin-left: ", ";\n "], ["\n margin-left: ", ";\n "])), t.inputCounterMarginLeftLarge);
46
+ },
47
+ counterError: function (t) {
48
+ return emotion.css(templateObject_12 || (templateObject_12 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), t.inputCounterColorError);
49
+ },
50
+ counterHelp: function (t) {
51
+ return emotion.css(templateObject_13 || (templateObject_13 = __makeTemplateObject(["\n margin-left: ", ";\n "], ["\n margin-left: ", ";\n "])), t.inputCounterHelpMarginLeft);
52
+ },
35
53
  };
36
54
  });
37
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7;
55
+ 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;
38
56
  //# sourceMappingURL=InputLayout.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputLayout.styles.js","sourceRoot":"","sources":["../../../../components/Input/InputLayout/InputLayout.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,CAAC,IAAM,eAAe,GAAG,gBAAgB,CAAC,UAAC,OAAgB;IAC/D,IAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAElC,OAAO;QACL,IAAI,YAAC,CAAQ;YACX,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;QACD,KAAK;YACH,OAAO,OAAO,CAAC,GAAG,0MAAA,uIAMjB,KAAC;QACJ,CAAC;QACD,KAAK;YACH,OAAO,OAAO,CAAC,GAAG,iOAAA,qIAMF,EAAoB,uBAEnC,KAFe,oBAAoB,EAElC;QACJ,CAAC;QACD,IAAI,YAAC,CAAQ;YACX,OAAO,OAAO,CAAC,GAAG,mGAAA,mBACP,EAAgB,WAC1B,KADU,CAAC,CAAC,cAAc,EACzB;QACJ,CAAC;QACD,SAAS,YAAC,CAAQ;YAChB,OAAO,OAAO,CAAC,GAAG,mGAAA,mBACP,EAAuB,WACjC,KADU,CAAC,CAAC,qBAAqB,EAChC;QACJ,CAAC;QACD,YAAY,YAAC,CAAQ;YACnB,OAAO,OAAO,CAAC,GAAG,6HAAA,6CAEP,EAAwB,WAClC,KADU,CAAC,CAAC,sBAAsB,EACjC;QACJ,CAAC;QACD,IAAI,YAAC,CAAQ;YACX,OAAO,OAAO,CAAC,GAAG,mGAAA,mBACP,EAAuB,WACjC,KADU,CAAC,CAAC,qBAAqB,EAChC;QACJ,CAAC;QACD,YAAY,YAAC,CAAQ;YACnB,OAAO,OAAO,CAAC,GAAG,mGAAA,mBACP,EAA+B,WACzC,KADU,CAAC,CAAC,6BAA6B,EACxC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { ZERO_WIDTH_SPACE_CSS } from '../../../lib/chars.js';\nimport { memoizeGetStyles } from '../../../lib/theming/Emotion.js';\nimport type { Theme } from '../../../lib/theming/Theme.js';\nimport { getStyles } from '../Input.styles.js';\n\nexport const getStylesLayout = memoizeGetStyles((emotion: Emotion) => {\n const styles = getStyles(emotion);\n\n return {\n root(t: Theme) {\n return styles.root(t);\n },\n input() {\n return emotion.css`\n min-width: 0;\n overflow: hidden;\n position: relative;\n width: 100%;\n display: flex;\n `;\n },\n aside() {\n return emotion.css`\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n\n &::before {\n content: '${ZERO_WIDTH_SPACE_CSS}';\n }\n `;\n },\n icon(t: Theme) {\n return emotion.css`\n color: ${t.inputIconColor};\n `;\n },\n iconFocus(t: Theme) {\n return emotion.css`\n color: ${t.inputFocusedIconColor};\n `;\n },\n iconDisabled(t: Theme) {\n return emotion.css`\n cursor: default;\n color: ${t.inputIconColorDisabled};\n `;\n },\n text(t: Theme) {\n return emotion.css`\n color: ${t.inputPlaceholderColor};\n `;\n },\n textDisabled(t: Theme) {\n return emotion.css`\n color: ${t.inputPlaceholderColorDisabled};\n `;\n },\n };\n});\n"]}
1
+ {"version":3,"file":"InputLayout.styles.js","sourceRoot":"","sources":["../../../../components/Input/InputLayout/InputLayout.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,CAAC,IAAM,eAAe,GAAG,gBAAgB,CAAC,UAAC,OAAgB;IAC/D,IAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAElC,OAAO;QACL,IAAI,YAAC,CAAQ;YACX,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;QACD,KAAK;YACH,OAAO,OAAO,CAAC,GAAG,0MAAA,uIAMjB,KAAC;QACJ,CAAC;QACD,KAAK;YACH,OAAO,OAAO,CAAC,GAAG,iOAAA,qIAMF,EAAoB,uBAEnC,KAFe,oBAAoB,EAElC;QACJ,CAAC;QACD,IAAI,YAAC,CAAQ;YACX,OAAO,OAAO,CAAC,GAAG,mGAAA,mBACP,EAAgB,WAC1B,KADU,CAAC,CAAC,cAAc,EACzB;QACJ,CAAC;QACD,SAAS,YAAC,CAAQ;YAChB,OAAO,OAAO,CAAC,GAAG,mGAAA,mBACP,EAAuB,WACjC,KADU,CAAC,CAAC,qBAAqB,EAChC;QACJ,CAAC;QACD,YAAY,YAAC,CAAQ;YACnB,OAAO,OAAO,CAAC,GAAG,6HAAA,6CAEP,EAAwB,WAClC,KADU,CAAC,CAAC,sBAAsB,EACjC;QACJ,CAAC;QACD,IAAI,YAAC,CAAQ;YACX,OAAO,OAAO,CAAC,GAAG,mGAAA,mBACP,EAAuB,WACjC,KADU,CAAC,CAAC,qBAAqB,EAChC;QACJ,CAAC;QACD,YAAY,YAAC,CAAQ;YACnB,OAAO,OAAO,CAAC,GAAG,mGAAA,mBACP,EAA+B,WACzC,KADU,CAAC,CAAC,6BAA6B,EACxC;QACJ,CAAC;QACD,OAAO,YAAC,CAAQ;YACd,OAAO,OAAO,CAAC,GAAG,gJAAA,gEAEP,EAAmB,WAC7B,KADU,CAAC,CAAC,iBAAiB,EAC5B;QACJ,CAAC;QACD,YAAY,YAAC,CAAQ;YACnB,OAAO,OAAO,CAAC,GAAG,yGAAA,yBACD,EAA6B,WAC7C,KADgB,CAAC,CAAC,2BAA2B,EAC5C;QACJ,CAAC;QACD,aAAa,YAAC,CAAQ;YACpB,OAAO,OAAO,CAAC,GAAG,2GAAA,yBACD,EAA8B,WAC9C,KADgB,CAAC,CAAC,4BAA4B,EAC7C;QACJ,CAAC;QACD,YAAY,YAAC,CAAQ;YACnB,OAAO,OAAO,CAAC,GAAG,2GAAA,yBACD,EAA6B,WAC7C,KADgB,CAAC,CAAC,2BAA2B,EAC5C;QACJ,CAAC;QACD,YAAY,YAAC,CAAQ;YACnB,OAAO,OAAO,CAAC,GAAG,qGAAA,mBACP,EAAwB,WAClC,KADU,CAAC,CAAC,sBAAsB,EACjC;QACJ,CAAC;QACD,WAAW,YAAC,CAAQ;YAClB,OAAO,OAAO,CAAC,GAAG,2GAAA,yBACD,EAA4B,WAC5C,KADgB,CAAC,CAAC,0BAA0B,EAC3C;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { ZERO_WIDTH_SPACE_CSS } from '../../../lib/chars.js';\nimport { memoizeGetStyles } from '../../../lib/theming/Emotion.js';\nimport type { Theme } from '../../../lib/theming/Theme.js';\nimport { getStyles } from '../Input.styles.js';\n\nexport const getStylesLayout = memoizeGetStyles((emotion: Emotion) => {\n const styles = getStyles(emotion);\n\n return {\n root(t: Theme) {\n return styles.root(t);\n },\n input() {\n return emotion.css`\n min-width: 0;\n overflow: hidden;\n position: relative;\n width: 100%;\n display: flex;\n `;\n },\n aside() {\n return emotion.css`\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n\n &::before {\n content: '${ZERO_WIDTH_SPACE_CSS}';\n }\n `;\n },\n icon(t: Theme) {\n return emotion.css`\n color: ${t.inputIconColor};\n `;\n },\n iconFocus(t: Theme) {\n return emotion.css`\n color: ${t.inputFocusedIconColor};\n `;\n },\n iconDisabled(t: Theme) {\n return emotion.css`\n cursor: default;\n color: ${t.inputIconColorDisabled};\n `;\n },\n text(t: Theme) {\n return emotion.css`\n color: ${t.inputPlaceholderColor};\n `;\n },\n textDisabled(t: Theme) {\n return emotion.css`\n color: ${t.inputPlaceholderColorDisabled};\n `;\n },\n counter(t: Theme) {\n return emotion.css`\n font-variant-numeric: tabular-nums;\n color: ${t.inputCounterColor};\n `;\n },\n counterSmall(t: Theme) {\n return emotion.css`\n margin-left: ${t.inputCounterMarginLeftSmall};\n `;\n },\n counterMedium(t: Theme) {\n return emotion.css`\n margin-left: ${t.inputCounterMarginLeftMedium};\n `;\n },\n counterLarge(t: Theme) {\n return emotion.css`\n margin-left: ${t.inputCounterMarginLeftLarge};\n `;\n },\n counterError(t: Theme) {\n return emotion.css`\n color: ${t.inputCounterColorError};\n `;\n },\n counterHelp(t: Theme) {\n return emotion.css`\n margin-left: ${t.inputCounterHelpMarginLeft};\n `;\n },\n };\n});\n"]}
@@ -1,8 +1,10 @@
1
+ import type { ReactElement } from 'react';
1
2
  import React from 'react';
2
3
  import type { InputProps } from '../Input.js';
3
4
  export interface InputLayoutAsideProps {
4
5
  icon: InputProps['leftIcon'] | InputProps['rightIcon'];
5
6
  text: InputProps['prefix'] | InputProps['suffix'];
7
+ counter?: ReactElement;
6
8
  side: 'left' | 'right';
7
9
  }
8
10
  export declare const InputLayoutAside: React.FunctionComponent<InputLayoutAsideProps>;
@@ -4,12 +4,12 @@ import { getStylesLayout } from './InputLayout.styles.js';
4
4
  import { InputLayoutAsideIcon } from './InputLayoutAsideIcon.js';
5
5
  import { InputLayoutAsideText } from './InputLayoutAsideText.js';
6
6
  export var InputLayoutAside = function (_a) {
7
- var icon = _a.icon, text = _a.text, side = _a.side;
7
+ var icon = _a.icon, text = _a.text, counter = _a.counter, side = _a.side;
8
8
  var stylesLayout = useStyles(getStylesLayout);
9
9
  var asideClassName = stylesLayout.aside();
10
10
  var _icon = React.createElement(InputLayoutAsideIcon, { key: "icon", icon: icon, side: side });
11
11
  var _text = React.createElement(InputLayoutAsideText, { key: "text", text: text });
12
- var child = side === 'left' ? [_icon, _text] : [_text, _icon];
12
+ var child = side === 'left' ? [_icon, _text] : [_text, counter, _icon];
13
13
  return React.createElement("span", { className: asideClassName }, child);
14
14
  };
15
15
  //# sourceMappingURL=InputLayoutAside.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputLayoutAside.js","sourceRoot":"","sources":["../../../../components/Input/InputLayout/InputLayoutAside.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAQjE,MAAM,CAAC,IAAM,gBAAgB,GAAmD,UAAC,EAAoB;QAAlB,IAAI,UAAA,EAAE,IAAI,UAAA,EAAE,IAAI,UAAA;IACjG,IAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;IAChD,IAAM,cAAc,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;IAE5C,IAAM,KAAK,GAAG,oBAAC,oBAAoB,IAAC,GAAG,EAAC,MAAM,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAI,CAAC;IAC1E,IAAM,KAAK,GAAG,oBAAC,oBAAoB,IAAC,GAAG,EAAC,MAAM,EAAC,IAAI,EAAE,IAAI,GAAI,CAAC;IAE9D,IAAM,KAAK,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAEhE,OAAO,8BAAM,SAAS,EAAE,cAAc,IAAG,KAAK,CAAQ,CAAC;AACzD,CAAC,CAAC","sourcesContent":["import React from 'react';\n\nimport { useStyles } from '../../../lib/renderEnvironment/index.js';\nimport type { InputProps } from '../Input.js';\nimport { getStylesLayout } from './InputLayout.styles.js';\nimport { InputLayoutAsideIcon } from './InputLayoutAsideIcon.js';\nimport { InputLayoutAsideText } from './InputLayoutAsideText.js';\n\nexport interface InputLayoutAsideProps {\n icon: InputProps['leftIcon'] | InputProps['rightIcon'];\n text: InputProps['prefix'] | InputProps['suffix'];\n side: 'left' | 'right';\n}\n\nexport const InputLayoutAside: React.FunctionComponent<InputLayoutAsideProps> = ({ icon, text, side }) => {\n const stylesLayout = useStyles(getStylesLayout);\n const asideClassName = stylesLayout.aside();\n\n const _icon = <InputLayoutAsideIcon key=\"icon\" icon={icon} side={side} />;\n const _text = <InputLayoutAsideText key=\"text\" text={text} />;\n\n const child = side === 'left' ? [_icon, _text] : [_text, _icon];\n\n return <span className={asideClassName}>{child}</span>;\n};\n"]}
1
+ {"version":3,"file":"InputLayoutAside.js","sourceRoot":"","sources":["../../../../components/Input/InputLayout/InputLayoutAside.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AASjE,MAAM,CAAC,IAAM,gBAAgB,GAAmD,UAAC,EAA6B;QAA3B,IAAI,UAAA,EAAE,IAAI,UAAA,EAAE,OAAO,aAAA,EAAE,IAAI,UAAA;IAC1G,IAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;IAChD,IAAM,cAAc,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;IAE5C,IAAM,KAAK,GAAG,oBAAC,oBAAoB,IAAC,GAAG,EAAC,MAAM,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAI,CAAC;IAC1E,IAAM,KAAK,GAAG,oBAAC,oBAAoB,IAAC,GAAG,EAAC,MAAM,EAAC,IAAI,EAAE,IAAI,GAAI,CAAC;IAE9D,IAAM,KAAK,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAEzE,OAAO,8BAAM,SAAS,EAAE,cAAc,IAAG,KAAK,CAAQ,CAAC;AACzD,CAAC,CAAC","sourcesContent":["import type { ReactElement } from 'react';\nimport React from 'react';\n\nimport { useStyles } from '../../../lib/renderEnvironment/index.js';\nimport type { InputProps } from '../Input.js';\nimport { getStylesLayout } from './InputLayout.styles.js';\nimport { InputLayoutAsideIcon } from './InputLayoutAsideIcon.js';\nimport { InputLayoutAsideText } from './InputLayoutAsideText.js';\n\nexport interface InputLayoutAsideProps {\n icon: InputProps['leftIcon'] | InputProps['rightIcon'];\n text: InputProps['prefix'] | InputProps['suffix'];\n counter?: ReactElement;\n side: 'left' | 'right';\n}\n\nexport const InputLayoutAside: React.FunctionComponent<InputLayoutAsideProps> = ({ icon, text, counter, side }) => {\n const stylesLayout = useStyles(getStylesLayout);\n const asideClassName = stylesLayout.aside();\n\n const _icon = <InputLayoutAsideIcon key=\"icon\" icon={icon} side={side} />;\n const _text = <InputLayoutAsideText key=\"text\" text={text} />;\n\n const child = side === 'left' ? [_icon, _text] : [_text, counter, _icon];\n\n return <span className={asideClassName}>{child}</span>;\n};\n"]}
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import type { SizeProp } from '../../../lib/types/props.js';
3
+ import { type InputProps } from '../Input.js';
4
+ export interface InputLayoutAsideCounterProps {
5
+ length: number;
6
+ inputValue: InputProps['value'];
7
+ help: InputProps['counterHelp'];
8
+ onCloseHelp?: () => void;
9
+ size?: SizeProp;
10
+ }
11
+ export declare const InputLayoutAsideCounter: React.FunctionComponent<InputLayoutAsideCounterProps>;
@@ -0,0 +1,74 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import React, { useCallback } from 'react';
13
+ import { Tooltip } from '../../../components/Tooltip/Tooltip.js';
14
+ import { QuestionCircleIcon16Light } from '../../../internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.js';
15
+ import { QuestionCircleIcon20Regular } from '../../../internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.js';
16
+ import { QuestionCircleIcon24Regular } from '../../../internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.js';
17
+ import { useEmotion, useStyles } from '../../../lib/renderEnvironment/index.js';
18
+ import { ThemeContext } from '../../../lib/theming/ThemeContext.js';
19
+ import { isFunction } from '../../../lib/utils.js';
20
+ import { InputDataTids } from '../Input.js';
21
+ import { getStylesLayout } from './InputLayout.styles.js';
22
+ var handleHelpMouseDown = function (e) { return e.preventDefault(); };
23
+ export var InputLayoutAsideCounter = function (_a) {
24
+ var _b;
25
+ var length = _a.length, inputValue = _a.inputValue, help = _a.help, onCloseHelp = _a.onCloseHelp, size = _a.size;
26
+ var theme = React.useContext(ThemeContext);
27
+ var cx = useEmotion().cx;
28
+ var stylesLayout = useStyles(getStylesLayout);
29
+ var renderTooltipContent = useCallback(function () {
30
+ if (typeof help === 'function') {
31
+ return help();
32
+ }
33
+ return help;
34
+ }, [help]);
35
+ var getHelpIcon = function () {
36
+ switch (size) {
37
+ case 'large':
38
+ return React.createElement(QuestionCircleIcon24Regular, __assign({}, helpIconProps));
39
+ case 'medium':
40
+ return React.createElement(QuestionCircleIcon20Regular, __assign({}, helpIconProps));
41
+ case 'small':
42
+ default:
43
+ return React.createElement(QuestionCircleIcon16Light, __assign({}, helpIconProps));
44
+ }
45
+ };
46
+ var helpIconProps = {
47
+ onMouseDown: handleHelpMouseDown,
48
+ color: theme.inputCounterHelpIconColor,
49
+ 'data-tid': InputDataTids.counterHelpIcon,
50
+ style: { cursor: 'pointer' },
51
+ };
52
+ var counterHelp = isFunction(help) ? (help()) : (React.createElement(Tooltip, { pos: 'right bottom', trigger: 'click', render: renderTooltipContent, onCloseClick: onCloseHelp, size: size }, getHelpIcon()));
53
+ var asideClassName = stylesLayout.aside();
54
+ var getCounterSizeClassName = function () {
55
+ switch (size) {
56
+ case 'large':
57
+ return stylesLayout.counterLarge(theme);
58
+ case 'medium':
59
+ return stylesLayout.counterMedium(theme);
60
+ case 'small':
61
+ default:
62
+ return stylesLayout.counterSmall(theme);
63
+ }
64
+ };
65
+ var inputValueLength = inputValue ? inputValue.length : 0;
66
+ var counterValue = length - inputValueLength;
67
+ var isNegativeValue = counterValue < 0;
68
+ return (React.createElement("span", { "data-tid": InputDataTids.counter, className: cx(asideClassName, getCounterSizeClassName(), stylesLayout.counter(theme), (_b = {},
69
+ _b[stylesLayout.counterError(theme)] = isNegativeValue,
70
+ _b)) },
71
+ isNegativeValue ? "\u2013".concat(-counterValue) : counterValue,
72
+ help && React.createElement("span", { className: stylesLayout.counterHelp(theme) }, counterHelp)));
73
+ };
74
+ //# sourceMappingURL=InputLayoutAsideCounter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputLayoutAsideCounter.js","sourceRoot":"","sources":["../../../../components/Input/InputLayout/InputLayoutAsideCounter.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { SyntheticEvent } from 'react';\nimport React, { useCallback } from 'react';\n\nimport { Tooltip } from '../../../components/Tooltip/Tooltip.js';\nimport { QuestionCircleIcon16Light } from '../../../internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.js';\nimport { QuestionCircleIcon20Regular } from '../../../internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.js';\nimport { QuestionCircleIcon24Regular } from '../../../internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.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 { isFunction } from '../../../lib/utils.js';\nimport { InputDataTids, type InputProps } from '../Input.js';\nimport { getStylesLayout } from './InputLayout.styles.js';\n\nexport interface InputLayoutAsideCounterProps {\n length: number;\n inputValue: InputProps['value'];\n help: InputProps['counterHelp'];\n onCloseHelp?: () => void;\n size?: SizeProp;\n}\n\nconst handleHelpMouseDown = (e: SyntheticEvent) => e.preventDefault();\n\nexport const InputLayoutAsideCounter: React.FunctionComponent<InputLayoutAsideCounterProps> = ({\n length,\n inputValue,\n help,\n onCloseHelp,\n size,\n}) => {\n const theme = React.useContext(ThemeContext);\n const { cx } = useEmotion();\n const stylesLayout = useStyles(getStylesLayout);\n\n const renderTooltipContent = useCallback(() => {\n if (typeof help === 'function') {\n return help();\n }\n return help;\n }, [help]);\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.inputCounterHelpIconColor,\n 'data-tid': InputDataTids.counterHelpIcon,\n style: { cursor: 'pointer' },\n };\n const counterHelp = isFunction(help) ? (\n help()\n ) : (\n <Tooltip\n pos={'right bottom'}\n trigger={'click'}\n render={renderTooltipContent}\n onCloseClick={onCloseHelp}\n size={size}\n >\n {getHelpIcon()}\n </Tooltip>\n );\n\n const asideClassName = stylesLayout.aside();\n const getCounterSizeClassName = () => {\n switch (size) {\n case 'large':\n return stylesLayout.counterLarge(theme);\n case 'medium':\n return stylesLayout.counterMedium(theme);\n case 'small':\n default:\n return stylesLayout.counterSmall(theme);\n }\n };\n\n const inputValueLength = inputValue ? inputValue.length : 0;\n const counterValue = length - inputValueLength;\n const isNegativeValue = counterValue < 0;\n\n return (\n <span\n data-tid={InputDataTids.counter}\n className={cx(asideClassName, getCounterSizeClassName(), stylesLayout.counter(theme), {\n [stylesLayout.counterError(theme)]: isNegativeValue,\n })}\n >\n {isNegativeValue ? `–${-counterValue}` : counterValue}\n {help && <span className={stylesLayout.counterHelp(theme)}>{counterHelp}</span>}\n </span>\n );\n};\n"]}
@@ -1,9 +1,12 @@
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
  import type { AnyObject } from '../../lib/utils.js';
5
6
  import type { SpinnerProps } from '../Spinner/index.js';
6
7
  declare const types: readonly ["mini", "normal", "big"];
8
+ /** @deprecated Начиная с версии `6.1`, тип и проп устарели в пользу `SizeContext`. Они будут удалены в `7.0`.
9
+ * @see {@link SizeProp} */
7
10
  export type LoaderType = (typeof types)[number];
8
11
  export interface LoaderProps extends CommonProps {
9
12
  /** @ignore */
@@ -12,13 +15,16 @@ export interface LoaderProps extends CommonProps {
12
15
  * @default false */
13
16
  active?: boolean;
14
17
  /** Подпись под спиннером.
15
- * @default ""
16
- */
18
+ * @default "" */
17
19
  caption?: SpinnerProps['caption'];
18
20
  /** Задает компонент, заменяющий спиннер. */
19
21
  component?: React.ReactNode;
20
22
  /** Размер спиннера и текста.
21
- * @default normal. */
23
+ * @default small */
24
+ size?: SizeProp;
25
+ /** Размер спиннера и текста.
26
+ * @deprecated Начиная с версии `6.1`, тип и проп устарели в пользу нового `SizeContext`. Они будут удалены в `7.0`.
27
+ * @see {@link size} */
22
28
  type?: LoaderType;
23
29
  /** Время в миллисекундах для показа вуали без спиннера.
24
30
  * @default 300 */
@@ -38,7 +44,7 @@ export declare const LoaderDataTids: {
38
44
  readonly veil: "Loader__Veil";
39
45
  readonly spinner: "Loader__Spinner";
40
46
  };
41
- type DefaultProps = Required<Pick<LoaderProps, 'type' | 'active' | 'delayBeforeSpinnerShow' | 'minimalDelayBeforeSpinnerHide'>>;
47
+ type DefaultProps = Required<Pick<LoaderProps, 'active' | 'delayBeforeSpinnerShow' | 'minimalDelayBeforeSpinnerHide'>>;
42
48
  /**
43
49
  * С помощью лоадера можно отобразить процесс выполнения задачи.
44
50
  * Лоадер принимает в качестве дочернего элемента другой компонент или контент, который будет показан на экране.
@@ -54,6 +60,7 @@ export declare class Loader extends React.Component<LoaderProps, LoaderState> {
54
60
  private cx;
55
61
  private styles;
56
62
  private theme;
63
+ private size;
57
64
  getRootNode: TGetRootNode;
58
65
  private setRootNode;
59
66
  private spinnerContainerNode;
@@ -77,5 +84,6 @@ export declare class Loader extends React.Component<LoaderProps, LoaderState> {
77
84
  private enableChildrenFocus;
78
85
  private makeObservable;
79
86
  private makeUnobservable;
87
+ private typeToSize;
80
88
  }
81
89
  export {};
@@ -42,6 +42,7 @@ import { isBrowser } from '../../lib/globalObject.js';
42
42
  import * as LayoutEvents from '../../lib/LayoutEvents.js';
43
43
  import { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';
44
44
  import { rootNode } from '../../lib/rootNode/index.js';
45
+ import { withSize } from '../../lib/size/SizeDecorator.js';
45
46
  import { TaskWithDelayAndMinimalDuration } from '../../lib/taskWithDelayAndMinimalDuration.js';
46
47
  import { ThemeContext } from '../../lib/theming/ThemeContext.js';
47
48
  import { Spinner } from '../Spinner/index.js';
@@ -162,6 +163,16 @@ var Loader = /** @class */ (function (_super) {
162
163
  (_a = _this.childrenObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
163
164
  _this.childrenObserver = null;
164
165
  };
166
+ _this.typeToSize = function (type) {
167
+ switch (type) {
168
+ case 'mini':
169
+ return 'small';
170
+ case 'normal':
171
+ return 'medium';
172
+ case 'big':
173
+ return 'large';
174
+ }
175
+ };
165
176
  _this.spinnerContainerNode = null;
166
177
  _this.childrenContainerNode = null;
167
178
  _this.childrenObserver = null;
@@ -246,17 +257,17 @@ var Loader = /** @class */ (function (_super) {
246
257
  };
247
258
  Loader.prototype.renderMain = function () {
248
259
  var _a;
249
- var _b = this.props, caption = _b.caption, component = _b.component;
250
- var type = this.getProps().type;
260
+ var _b = this.props, caption = _b.caption, component = _b.component, size = _b.size, type = _b.type;
251
261
  var isLoaderActive = this.state.isLoaderActive;
262
+ var parsedSize = size || !type ? this.size : this.typeToSize(type);
252
263
  return (React.createElement(CommonWrapper, __assign({ rootNodeRef: this.setRootNode }, this.props),
253
264
  React.createElement("div", { className: this.styles.loader(), "data-tid": this.props['data-tid'] || (isLoaderActive ? LoaderDataTids.veil : LoaderDataTids.idle) },
254
265
  React.createElement(ZIndex, { applyZIndex: isLoaderActive, coverChildren: isLoaderActive, style: { height: '100%' }, wrapperRef: this.childrenRef }, this.props.children),
255
266
  isLoaderActive && (React.createElement(ZIndex, { wrapperRef: this.spinnerRef, className: this.cx((_a = {},
256
267
  _a[this.styles.active(this.theme)] = isLoaderActive,
257
- _a)) }, this.state.isSpinnerVisible && this.renderSpinner(type, caption, component))))));
268
+ _a)) }, this.state.isSpinnerVisible && this.renderSpinner(parsedSize, caption, component))))));
258
269
  };
259
- Loader.prototype.renderSpinner = function (type, caption, component) {
270
+ Loader.prototype.renderSpinner = function (size, caption, component) {
260
271
  var _a;
261
272
  var _this = this;
262
273
  return (React.createElement("span", { "data-tid": LoaderDataTids.spinner, className: this.cx(this.styles.spinnerContainer(), (_a = {},
@@ -264,20 +275,20 @@ var Loader = /** @class */ (function (_super) {
264
275
  _a)), style: this.state.spinnerStyle },
265
276
  React.createElement("div", { className: this.styles.spinnerComponentWrapper(), ref: function (element) {
266
277
  _this.spinnerNode = element;
267
- } }, component !== undefined ? component : React.createElement(Spinner, { type: type, caption: caption }))));
278
+ } }, component !== undefined ? component : React.createElement(Spinner, { size: size, caption: caption }))));
268
279
  };
269
280
  var Loader_1;
270
281
  Loader.__KONTUR_REACT_UI__ = 'Loader';
271
282
  Loader.displayName = 'Loader';
272
283
  Loader.defaultProps = {
273
- type: 'normal',
274
284
  active: false,
275
285
  delayBeforeSpinnerShow: isTestEnv ? 0 : 300,
276
286
  minimalDelayBeforeSpinnerHide: isTestEnv ? 0 : 1000,
277
287
  };
278
288
  Loader = Loader_1 = __decorate([
279
289
  withRenderEnvironment,
280
- rootNode
290
+ rootNode,
291
+ withSize
281
292
  ], Loader);
282
293
  return Loader;
283
294
  }(React.Component));
@@ -1 +1 @@
1
- {"version":3,"file":"Loader.js","sourceRoot":"","sources":["../../../components/Loader/Loader.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,KAAK,YAAY,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,8CAA8C,CAAC;AAE/F,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAGjE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,IAAM,KAAK,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAU,CAAC;AAwCjD,MAAM,CAAC,IAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,cAAc;IACpB,OAAO,EAAE,iBAAiB;CAClB,CAAC;AAMX;;;;GAIG;AAGH;IAA4B,0BAAyC;IA2BnE,gBAAY,KAAkB;QAC5B,YAAA,MAAK,YAAC,KAAK,CAAC,SAAC;QAjBP,cAAQ,GAAG,iBAAiB,CAAC,QAAM,CAAC,YAAY,CAAC,CAAC;QAsJlD,iBAAW,GAAG,UAAC,OAA8B;YACnD,KAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC;QACvC,CAAC,CAAC;QAEM,gBAAU,GAAG,UAAC,OAA8B;YAClD,KAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC;QACtC,CAAC,CAAC;QAuBM,0BAAoB,GAAG;YAC7B,IAAI,CAAC,KAAI,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,KAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChE,OAAO;YACT,CAAC;YAEK,IAAA,KAOF,UAAU,CAAC,KAAI,CAAC,oBAAoB,CAAC,EANlC,YAAY,SAAA,EACV,cAAc,WAAA,EACb,eAAe,YAAA,EACjB,aAAa,UAAA,EACX,eAAe,YAAA,EAChB,cAAc,WACkB,CAAC;YAE1C,IAAM,YAAY,GAAG,KAAI,CAAC,YAAY,CAAC,WAAW,CAAC;YACnD,IAAM,WAAW,GAAG,KAAI,CAAC,YAAY,CAAC,UAAU,CAAC;YAEjD,kDAAkD;YAClD,kCAAkC;YAClC,IAAI,YAAY,IAAI,eAAe,IAAI,WAAW,IAAI,cAAc,EAAE,CAAC;gBACrE,KAAI,CAAC,QAAQ,CAAC;oBACZ,eAAe,EAAE,KAAK;oBACtB,YAAY,EAAE,EAAE;iBACjB,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,IAAM,YAAY,GAKd;gBACF,GAAG,EAAE,EAAE;gBACP,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,EAAE;gBACV,IAAI,EAAE,CAAC;aACR,CAAC;YAEF,eAAe;YACf,wDAAwD;YACxD,uBAAuB;YACvB,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBACrB,YAAY,CAAC,GAAG,GAAG,YAAY,GAAG,EAAE,CAAC;YACvC,CAAC;YAED,sDAAsD;YACtD,uBAAuB;YACvB,IAAI,eAAe,GAAG,YAAY,EAAE,CAAC;gBACnC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC;YACtE,CAAC;YAED,kEAAkE;YAClE,sEAAsE;YAEtE,IAAM,aAAa,GAAG,UAAU,CAAC,KAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;YAE1D,IAAI,aAAa,IAAI,YAAY,CAAC,MAAM,IAAI,YAAY,GAAG,aAAa,EAAE,CAAC;gBACzE,OAAO,YAAY,CAAC,GAAG,CAAC;YAC1B,CAAC;YAED,iBAAiB;YACjB,sDAAsD;YACtD,uBAAuB;YACvB,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBACtB,YAAY,CAAC,IAAI,GAAG,aAAa,CAAC;YACpC,CAAC;YAED,uDAAuD;YACvD,uBAAuB;YACvB,IAAI,cAAc,GAAG,WAAW,EAAE,CAAC;gBACjC,YAAY,CAAC,KAAK,GAAG,WAAW,GAAG,cAAc,CAAC;YACpD,CAAC;YAED,KAAI,CAAC,QAAQ,CAAC;gBACZ,eAAe,EAAE,IAAI;gBACrB,YAAY,cAAA;aACb,CAAC,CAAC;QACL,CAAC,CAAC;QAEM,0BAAoB,GAAG;YAC7B,IAAI,CAAC,KAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC3B,KAAI,CAAC,cAAc,EAAE,CAAC;YACxB,CAAC;YACD,IAAM,gBAAgB,GAAG,mBAAmB,CAAC,KAAI,CAAC,qBAAqB,CAAC,CAAC;YACzE,gBAAgB,CAAC,OAAO,CAAC,UAAC,EAAE;gBAC1B,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBACxC,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC7D,CAAC;gBACD,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEM,yBAAmB,GAAG;;YAC5B,KAAI,CAAC,gBAAgB,EAAE,CAAC;YAExB,MAAA,KAAI,CAAC,YAAY,CAAC,QAAQ,0CAAE,gBAAgB,CAAC,mBAAmB,EAAE,OAAO,CAAC,UAAC,EAAE;;gBAC3E,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAA,EAAE,CAAC,YAAY,CAAC,iBAAiB,CAAC,mCAAI,GAAG,CAAC,CAAC;gBACvE,EAAE,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEM,oBAAc,GAAG;YACvB,IAAM,MAAM,GAAG,KAAI,CAAC,qBAAqB,CAAC;YAC1C,IAAI,CAAC,MAAM,IAAI,CAAC,KAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;gBACnD,OAAO;YACT,CAAC;YACD,IAAM,MAAM,GAAG;gBACb,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,IAAI;aACd,CAAC;YACF,IAAM,QAAQ,GAAG,IAAI,KAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,KAAI,CAAC,oBAAoB,CAAC,CAAC;YACnF,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACjC,KAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;QACnC,CAAC,CAAC;QAEM,sBAAgB,GAAG;;YACzB,MAAA,KAAI,CAAC,gBAAgB,0CAAE,UAAU,EAAE,CAAC;YACpC,KAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC/B,CAAC,CAAC;QAvRA,KAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,KAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAClC,KAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,KAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,KAAI,CAAC,KAAK,GAAG;YACX,eAAe,EAAE,KAAK;YACtB,gBAAgB,EAAE,KAAK;YACvB,cAAc,EAAE,KAAK;SACtB,CAAC;;IACJ,CAAC;eAxCU,MAAM;IA0CV,kCAAiB,GAAxB;QAAA,iBAeC;QAdC,IAAI,CAAC,WAAW,GAAG,IAAI,+BAA+B,CAAC;YACrD,oBAAoB,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,sBAAsB;YAC5D,cAAc,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,6BAA6B;YAC7D,iBAAiB,EAAE,cAAM,OAAA,KAAI,CAAC,QAAQ,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,EAAzC,CAAyC;YAClE,gBAAgB,EAAE,cAAM,OAAA,KAAI,CAAC,QAAQ,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,EAA1C,CAA0C;SACnE,CAAC,CAAC;QACH,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAEzG,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAEM,mCAAkB,GAAzB,UAA0B,SAAgC,EAAE,SAAgC;QAClF,IAAA,SAAS,GAAK,IAAI,CAAC,KAAK,UAAf,CAAgB;QAC3B,IAAA,KAAoE,IAAI,CAAC,QAAQ,EAAE,EAAjF,MAAM,YAAA,EAAE,sBAAsB,4BAAA,EAAE,6BAA6B,mCAAoB,CAAC;QAClF,IAAA,cAAc,GAAK,IAAI,CAAC,KAAK,eAAf,CAAgB;QAEtC,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACvE,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC;QAED,IACE,sBAAsB,KAAK,SAAS,CAAC,sBAAsB;YAC3D,6BAA6B,KAAK,SAAS,CAAC,6BAA6B,EACzE,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACtB,oBAAoB,EAAE,sBAAsB;gBAC5C,cAAc,EAAE,6BAA6B;aAC9C,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC9D,CAAC;QAED,IAAI,cAAc,KAAK,SAAS,CAAC,cAAc,EAAE,CAAC;YAChD,IAAI,cAAc,EAAE,CAAC;gBACnB,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAEM,qCAAoB,GAA3B;QACE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;IAC/B,CAAC;IAEa,+BAAwB,GAAtC,UAAuC,KAAkB,EAAE,KAAkB;QAC3E,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC1C,OAAO;gBACL,cAAc,EAAE,IAAI;aACrB,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACtE,OAAO;gBACL,cAAc,EAAE,KAAK;aACtB,CAAC;QACJ,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,uBAAM,GAAb;QAAA,iBAWC;QAVC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtC,OAAO,CACL,oBAAC,YAAY,CAAC,QAAQ,QACnB,UAAC,KAAK;YACL,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,OAAO,KAAI,CAAC,UAAU,EAAE,CAAC;QAC3B,CAAC,CACqB,CACzB,CAAC;IACJ,CAAC;IAEO,2BAAU,GAAlB;;QACQ,IAAA,KAAyB,IAAI,CAAC,KAAK,EAAjC,OAAO,aAAA,EAAE,SAAS,eAAe,CAAC;QAC1C,IAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;QAC1B,IAAA,cAAc,GAAK,IAAI,CAAC,KAAK,eAAf,CAAgB;QAEtC,OAAO,CACL,oBAAC,aAAa,aAAC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAM,IAAI,CAAC,KAAK;YAC1D,6BACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,cACrB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC;gBAEhG,oBAAC,MAAM,IACL,WAAW,EAAE,cAAc,EAC3B,aAAa,EAAE,cAAc,EAC7B,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EACzB,UAAU,EAAE,IAAI,CAAC,WAAW,IAE3B,IAAI,CAAC,KAAK,CAAC,QAAQ,CACb;gBACR,cAAc,IAAI,CACjB,oBAAC,MAAM,IACL,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,SAAS,EAAE,IAAI,CAAC,EAAE;wBAChB,GAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,cAAc;4BAChD,IAED,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CACrE,CACV,CACG,CACQ,CACjB,CAAC;IACJ,CAAC;IAUO,8BAAa,GAArB,UAAsB,IAAiB,EAAE,OAAyB,EAAE,SAA2B;;QAA/F,iBAmBC;QAlBC,OAAO,CACL,0CACY,cAAc,CAAC,OAAO,EAChC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;gBAC/C,GAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,IAAG,IAAI,CAAC,KAAK,CAAC,eAAe;oBAClE,EACF,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;YAE9B,6BACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,EAChD,GAAG,EAAE,UAAC,OAAO;oBACX,KAAI,CAAC,WAAW,GAAG,OAAO,CAAC;gBAC7B,CAAC,IAEA,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAC,OAAO,IAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,GAAI,CAC5E,CACD,CACR,CAAC;IACJ,CAAC;;IA3La,0BAAmB,GAAG,QAAQ,AAAX,CAAY;IAC/B,kBAAW,GAAG,QAAQ,AAAX,CAAY;IAEvB,mBAAY,GAAiB;QACzC,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,KAAK;QACb,sBAAsB,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QAC3C,6BAA6B,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;KACpD,AALyB,CAKxB;IATS,MAAM;QAFlB,qBAAqB;QACrB,QAAQ;OACI,MAAM,CAsTlB;IAAD,aAAC;CAAA,AAtTD,CAA4B,KAAK,CAAC,SAAS,GAsT1C;SAtTY,MAAM","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport debounce from 'lodash.debounce';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { ZIndex } from '../../internal/ZIndex/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { isTestEnv } from '../../lib/currentEnvironment.js';\nimport { getDOMRect } from '../../lib/dom/getDOMRect.js';\nimport { getTabbableElements } from '../../lib/dom/tabbableHelpers.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { isBrowser } from '../../lib/globalObject.js';\nimport * as LayoutEvents from '../../lib/LayoutEvents.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 { TaskWithDelayAndMinimalDuration } from '../../lib/taskWithDelayAndMinimalDuration.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { AnyObject } from '../../lib/utils.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { Spinner } from '../Spinner/index.js';\nimport type { SpinnerProps } from '../Spinner/index.js';\nimport { getStyles } from './Loader.styles.js';\n\nconst types = ['mini', 'normal', 'big'] as const;\n\nexport type LoaderType = (typeof types)[number];\n\nexport interface LoaderProps extends CommonProps {\n /** @ignore */\n children?: React.ReactNode;\n\n /** Показывает лоадер.\n * @default false */\n active?: boolean;\n\n /** Подпись под спиннером.\n * @default \"\"\n */\n caption?: SpinnerProps['caption'];\n\n /** Задает компонент, заменяющий спиннер. */\n component?: React.ReactNode;\n\n /** Размер спиннера и текста.\n * @default normal. */\n type?: LoaderType;\n\n /** Время в миллисекундах для показа вуали без спиннера.\n * @default 300 */\n delayBeforeSpinnerShow?: number;\n\n /** Минимальное время в миллисекундах для показа спиннера.\n * @default 1000. */\n minimalDelayBeforeSpinnerHide?: number;\n}\n\nexport interface LoaderState {\n isStickySpinner: boolean;\n isSpinnerVisible: boolean;\n isLoaderActive: boolean;\n spinnerStyle?: AnyObject;\n}\n\nexport const LoaderDataTids = {\n idle: 'Loader__Idle',\n veil: 'Loader__Veil',\n spinner: 'Loader__Spinner',\n} as const;\n\ntype DefaultProps = Required<\n Pick<LoaderProps, 'type' | 'active' | 'delayBeforeSpinnerShow' | 'minimalDelayBeforeSpinnerHide'>\n>;\n\n/**\n * С помощью лоадера можно отобразить процесс выполнения задачи.\n * Лоадер принимает в качестве дочернего элемента другой компонент или контент, который будет показан на экране.\n * Когда происходит загрузка, поверх этого компонента или контента будет отображаться [Спиннер](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_display-data-spinner--docs).\n */\n@withRenderEnvironment\n@rootNode\nexport class Loader extends React.Component<LoaderProps, LoaderState> {\n public static __KONTUR_REACT_UI__ = 'Loader';\n public static displayName = 'Loader';\n\n public static defaultProps: DefaultProps = {\n type: 'normal',\n active: false,\n delayBeforeSpinnerShow: isTestEnv ? 0 : 300,\n minimalDelayBeforeSpinnerHide: isTestEnv ? 0 : 1000,\n };\n\n private getProps = createPropsGetter(Loader.defaultProps);\n\n private globalObject!: GlobalObject;\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 private spinnerContainerNode: Nullable<HTMLDivElement>;\n private childrenContainerNode: Nullable<HTMLDivElement>;\n private spinnerNode: Nullable<HTMLDivElement>;\n private layoutEvents: Nullable<{ remove: () => void }>;\n private spinnerTask!: TaskWithDelayAndMinimalDuration;\n private childrenObserver: Nullable<MutationObserver>;\n\n constructor(props: LoaderProps) {\n super(props);\n\n this.spinnerContainerNode = null;\n this.childrenContainerNode = null;\n this.childrenObserver = null;\n this.spinnerNode = null;\n\n this.state = {\n isStickySpinner: false,\n isSpinnerVisible: false,\n isLoaderActive: false,\n };\n }\n\n public componentDidMount() {\n this.spinnerTask = new TaskWithDelayAndMinimalDuration({\n delayBeforeTaskStart: this.getProps().delayBeforeSpinnerShow,\n durationOfTask: this.getProps().minimalDelayBeforeSpinnerHide,\n taskStartCallback: () => this.setState({ isSpinnerVisible: true }),\n taskStopCallback: () => this.setState({ isSpinnerVisible: false }),\n });\n const active = this.getProps().active;\n this.checkSpinnerPosition();\n active && this.spinnerTask.start();\n this.layoutEvents = LayoutEvents.addListener(debounce(this.checkSpinnerPosition, 10), this.globalObject);\n\n if (active) {\n this.disableChildrenFocus();\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<LoaderProps>, prevState: Readonly<LoaderState>) {\n const { component } = this.props;\n const { active, delayBeforeSpinnerShow, minimalDelayBeforeSpinnerHide } = this.getProps();\n const { isLoaderActive } = this.state;\n\n if ((active && !prevProps.active) || prevProps.component !== component) {\n this.checkSpinnerPosition();\n }\n\n if (\n delayBeforeSpinnerShow !== prevProps.delayBeforeSpinnerShow ||\n minimalDelayBeforeSpinnerHide !== prevProps.minimalDelayBeforeSpinnerHide\n ) {\n this.spinnerTask.update({\n delayBeforeTaskStart: delayBeforeSpinnerShow,\n durationOfTask: minimalDelayBeforeSpinnerHide,\n });\n }\n\n if (active !== prevProps.active) {\n active ? this.spinnerTask.start() : this.spinnerTask.stop();\n }\n\n if (isLoaderActive !== prevState.isLoaderActive) {\n if (isLoaderActive) {\n this.disableChildrenFocus();\n } else {\n this.enableChildrenFocus();\n }\n }\n }\n\n public componentWillUnmount() {\n this.makeUnobservable();\n if (this.layoutEvents) {\n this.layoutEvents.remove();\n }\n this.spinnerTask.clearTask();\n }\n\n public static getDerivedStateFromProps(props: LoaderProps, state: LoaderState): Partial<LoaderState> {\n if (props.active && !state.isLoaderActive) {\n return {\n isLoaderActive: true,\n };\n }\n if (state.isLoaderActive && !(props.active || state.isSpinnerVisible)) {\n return {\n isLoaderActive: false,\n };\n }\n\n return state;\n }\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, component } = this.props;\n const type = this.getProps().type;\n const { isLoaderActive } = this.state;\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n className={this.styles.loader()}\n data-tid={this.props['data-tid'] || (isLoaderActive ? LoaderDataTids.veil : LoaderDataTids.idle)}\n >\n <ZIndex\n applyZIndex={isLoaderActive}\n coverChildren={isLoaderActive}\n style={{ height: '100%' }}\n wrapperRef={this.childrenRef}\n >\n {this.props.children}\n </ZIndex>\n {isLoaderActive && (\n <ZIndex\n wrapperRef={this.spinnerRef}\n className={this.cx({\n [this.styles.active(this.theme)]: isLoaderActive,\n })}\n >\n {this.state.isSpinnerVisible && this.renderSpinner(type, caption, component)}\n </ZIndex>\n )}\n </div>\n </CommonWrapper>\n );\n }\n\n private childrenRef = (element: HTMLDivElement | null) => {\n this.childrenContainerNode = element;\n };\n\n private spinnerRef = (element: HTMLDivElement | null) => {\n this.spinnerContainerNode = element;\n };\n\n private renderSpinner(type?: LoaderType, caption?: React.ReactNode, component?: React.ReactNode) {\n return (\n <span\n data-tid={LoaderDataTids.spinner}\n className={this.cx(this.styles.spinnerContainer(), {\n [this.styles.spinnerContainerSticky()]: this.state.isStickySpinner,\n })}\n style={this.state.spinnerStyle}\n >\n <div\n className={this.styles.spinnerComponentWrapper()}\n ref={(element) => {\n this.spinnerNode = element;\n }}\n >\n {component !== undefined ? component : <Spinner type={type} caption={caption} />}\n </div>\n </span>\n );\n }\n\n private checkSpinnerPosition = () => {\n if (!this.spinnerContainerNode || !isBrowser(this.globalObject)) {\n return;\n }\n\n const {\n top: containerTop,\n right: containerRight,\n bottom: containerBottom,\n left: containerLeft,\n height: containerHeight,\n width: containerWidth,\n } = getDOMRect(this.spinnerContainerNode);\n\n const windowHeight = this.globalObject.innerHeight;\n const windowWidth = this.globalObject.innerWidth;\n\n // Если контейнер не больше высоты и не шире окна,\n // то просто выравниваем по центру\n if (windowHeight >= containerHeight && windowWidth >= containerWidth) {\n this.setState({\n isStickySpinner: false,\n spinnerStyle: {},\n });\n return;\n }\n\n const spinnerStyle: {\n top?: number;\n right: number;\n bottom: number;\n left: number;\n } = {\n top: 30,\n right: 0,\n bottom: 30,\n left: 0,\n };\n\n // ПО ВЕРТИКАЛИ\n // Если верхний край контейнера ниже верхнего края окна,\n // то сдвигаем и лоадер\n if (containerTop > 0) {\n spinnerStyle.top = containerTop + 30;\n }\n\n // Если нижний край контейнера выше нижнего края окна,\n // то сдвигаем и лоадер\n if (containerBottom < windowHeight) {\n spinnerStyle.bottom = Math.abs(windowHeight - containerBottom) + 30;\n }\n\n // Если знаем высоту спиннера и нижний край контейнера поднимается\n // выше отступа на высоту спиннера, то убираем верхнюю позицию лоадера\n\n const spinnerHeight = getDOMRect(this.spinnerNode).height;\n\n if (spinnerHeight && spinnerStyle.bottom >= windowHeight - spinnerHeight) {\n delete spinnerStyle.top;\n }\n\n // ПО ГОРИЗОНТАЛИ\n // Если левый край контейнера правее левого края окна,\n // то сдвигаем и лоадер\n if (containerLeft > 0) {\n spinnerStyle.left = containerLeft;\n }\n\n // Если правый край контейнера левее правого края окна,\n // то сдвигаем и лоадер\n if (containerRight < windowWidth) {\n spinnerStyle.right = windowWidth - containerRight;\n }\n\n this.setState({\n isStickySpinner: true,\n spinnerStyle,\n });\n };\n\n private disableChildrenFocus = () => {\n if (!this.childrenObserver) {\n this.makeObservable();\n }\n const tabbableElements = getTabbableElements(this.childrenContainerNode);\n tabbableElements.forEach((el) => {\n if (!el.hasAttribute('origin-tabindex')) {\n el.setAttribute('origin-tabindex', el.tabIndex.toString());\n }\n el.tabIndex = -1;\n });\n };\n\n private enableChildrenFocus = () => {\n this.makeUnobservable();\n\n this.globalObject.document?.querySelectorAll('[origin-tabindex]').forEach((el) => {\n el.setAttribute('tabindex', el.getAttribute('origin-tabindex') ?? '0');\n el.removeAttribute('origin-tabindex');\n });\n };\n\n private makeObservable = () => {\n const target = this.childrenContainerNode;\n if (!target || !this.globalObject.MutationObserver) {\n return;\n }\n const config = {\n childList: true,\n subtree: true,\n };\n const observer = new this.globalObject.MutationObserver(this.disableChildrenFocus);\n observer.observe(target, config);\n this.childrenObserver = observer;\n };\n\n private makeUnobservable = () => {\n this.childrenObserver?.disconnect();\n this.childrenObserver = null;\n };\n}\n"]}
1
+ {"version":3,"file":"Loader.js","sourceRoot":"","sources":["../../../components/Loader/Loader.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport debounce from 'lodash.debounce';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { ZIndex } from '../../internal/ZIndex/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { isTestEnv } from '../../lib/currentEnvironment.js';\nimport { getDOMRect } from '../../lib/dom/getDOMRect.js';\nimport { getTabbableElements } from '../../lib/dom/tabbableHelpers.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { isBrowser } from '../../lib/globalObject.js';\nimport * as LayoutEvents from '../../lib/LayoutEvents.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 { TaskWithDelayAndMinimalDuration } from '../../lib/taskWithDelayAndMinimalDuration.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 { AnyObject } from '../../lib/utils.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { Spinner } from '../Spinner/index.js';\nimport type { SpinnerProps } from '../Spinner/index.js';\nimport { getStyles } from './Loader.styles.js';\n\nconst types = ['mini', 'normal', 'big'] as const;\n\n/** @deprecated Начиная с версии `6.1`, тип и проп устарели в пользу `SizeContext`. Они будут удалены в `7.0`.\n * @see {@link SizeProp} */\nexport type LoaderType = (typeof types)[number];\n\nexport interface LoaderProps extends CommonProps {\n /** @ignore */\n children?: React.ReactNode;\n\n /** Показывает лоадер.\n * @default false */\n active?: boolean;\n\n /** Подпись под спиннером.\n * @default \"\" */\n caption?: SpinnerProps['caption'];\n\n /** Задает компонент, заменяющий спиннер. */\n component?: 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?: LoaderType;\n\n /** Время в миллисекундах для показа вуали без спиннера.\n * @default 300 */\n delayBeforeSpinnerShow?: number;\n\n /** Минимальное время в миллисекундах для показа спиннера.\n * @default 1000. */\n minimalDelayBeforeSpinnerHide?: number;\n}\n\nexport interface LoaderState {\n isStickySpinner: boolean;\n isSpinnerVisible: boolean;\n isLoaderActive: boolean;\n spinnerStyle?: AnyObject;\n}\n\nexport const LoaderDataTids = {\n idle: 'Loader__Idle',\n veil: 'Loader__Veil',\n spinner: 'Loader__Spinner',\n} as const;\n\ntype DefaultProps = Required<Pick<LoaderProps, 'active' | 'delayBeforeSpinnerShow' | 'minimalDelayBeforeSpinnerHide'>>;\n\n/**\n * С помощью лоадера можно отобразить процесс выполнения задачи.\n * Лоадер принимает в качестве дочернего элемента другой компонент или контент, который будет показан на экране.\n * Когда происходит загрузка, поверх этого компонента или контента будет отображаться [Спиннер](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_display-data-spinner--docs).\n */\n@withRenderEnvironment\n@rootNode\n@withSize\nexport class Loader extends React.Component<LoaderProps, LoaderState> {\n public static __KONTUR_REACT_UI__ = 'Loader';\n public static displayName = 'Loader';\n\n public static defaultProps: DefaultProps = {\n active: false,\n delayBeforeSpinnerShow: isTestEnv ? 0 : 300,\n minimalDelayBeforeSpinnerHide: isTestEnv ? 0 : 1000,\n };\n\n private getProps = createPropsGetter(Loader.defaultProps);\n\n private globalObject!: GlobalObject;\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 private spinnerContainerNode: Nullable<HTMLDivElement>;\n private childrenContainerNode: Nullable<HTMLDivElement>;\n private spinnerNode: Nullable<HTMLDivElement>;\n private layoutEvents: Nullable<{ remove: () => void }>;\n private spinnerTask!: TaskWithDelayAndMinimalDuration;\n private childrenObserver: Nullable<MutationObserver>;\n\n constructor(props: LoaderProps) {\n super(props);\n\n this.spinnerContainerNode = null;\n this.childrenContainerNode = null;\n this.childrenObserver = null;\n this.spinnerNode = null;\n\n this.state = {\n isStickySpinner: false,\n isSpinnerVisible: false,\n isLoaderActive: false,\n };\n }\n\n public componentDidMount() {\n this.spinnerTask = new TaskWithDelayAndMinimalDuration({\n delayBeforeTaskStart: this.getProps().delayBeforeSpinnerShow,\n durationOfTask: this.getProps().minimalDelayBeforeSpinnerHide,\n taskStartCallback: () => this.setState({ isSpinnerVisible: true }),\n taskStopCallback: () => this.setState({ isSpinnerVisible: false }),\n });\n const active = this.getProps().active;\n this.checkSpinnerPosition();\n active && this.spinnerTask.start();\n this.layoutEvents = LayoutEvents.addListener(debounce(this.checkSpinnerPosition, 10), this.globalObject);\n\n if (active) {\n this.disableChildrenFocus();\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<LoaderProps>, prevState: Readonly<LoaderState>) {\n const { component } = this.props;\n const { active, delayBeforeSpinnerShow, minimalDelayBeforeSpinnerHide } = this.getProps();\n const { isLoaderActive } = this.state;\n\n if ((active && !prevProps.active) || prevProps.component !== component) {\n this.checkSpinnerPosition();\n }\n\n if (\n delayBeforeSpinnerShow !== prevProps.delayBeforeSpinnerShow ||\n minimalDelayBeforeSpinnerHide !== prevProps.minimalDelayBeforeSpinnerHide\n ) {\n this.spinnerTask.update({\n delayBeforeTaskStart: delayBeforeSpinnerShow,\n durationOfTask: minimalDelayBeforeSpinnerHide,\n });\n }\n\n if (active !== prevProps.active) {\n active ? this.spinnerTask.start() : this.spinnerTask.stop();\n }\n\n if (isLoaderActive !== prevState.isLoaderActive) {\n if (isLoaderActive) {\n this.disableChildrenFocus();\n } else {\n this.enableChildrenFocus();\n }\n }\n }\n\n public componentWillUnmount() {\n this.makeUnobservable();\n if (this.layoutEvents) {\n this.layoutEvents.remove();\n }\n this.spinnerTask.clearTask();\n }\n\n public static getDerivedStateFromProps(props: LoaderProps, state: LoaderState): Partial<LoaderState> {\n if (props.active && !state.isLoaderActive) {\n return {\n isLoaderActive: true,\n };\n }\n if (state.isLoaderActive && !(props.active || state.isSpinnerVisible)) {\n return {\n isLoaderActive: false,\n };\n }\n\n return state;\n }\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, component, size, type } = this.props;\n const { isLoaderActive } = this.state;\n\n const parsedSize = size || !type ? this.size : this.typeToSize(type);\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n className={this.styles.loader()}\n data-tid={this.props['data-tid'] || (isLoaderActive ? LoaderDataTids.veil : LoaderDataTids.idle)}\n >\n <ZIndex\n applyZIndex={isLoaderActive}\n coverChildren={isLoaderActive}\n style={{ height: '100%' }}\n wrapperRef={this.childrenRef}\n >\n {this.props.children}\n </ZIndex>\n {isLoaderActive && (\n <ZIndex\n wrapperRef={this.spinnerRef}\n className={this.cx({\n [this.styles.active(this.theme)]: isLoaderActive,\n })}\n >\n {this.state.isSpinnerVisible && this.renderSpinner(parsedSize, caption, component)}\n </ZIndex>\n )}\n </div>\n </CommonWrapper>\n );\n }\n\n private childrenRef = (element: HTMLDivElement | null) => {\n this.childrenContainerNode = element;\n };\n\n private spinnerRef = (element: HTMLDivElement | null) => {\n this.spinnerContainerNode = element;\n };\n\n private renderSpinner(size?: SizeProp, caption?: React.ReactNode, component?: React.ReactNode) {\n return (\n <span\n data-tid={LoaderDataTids.spinner}\n className={this.cx(this.styles.spinnerContainer(), {\n [this.styles.spinnerContainerSticky()]: this.state.isStickySpinner,\n })}\n style={this.state.spinnerStyle}\n >\n <div\n className={this.styles.spinnerComponentWrapper()}\n ref={(element) => {\n this.spinnerNode = element;\n }}\n >\n {component !== undefined ? component : <Spinner size={size} caption={caption} />}\n </div>\n </span>\n );\n }\n\n private checkSpinnerPosition = () => {\n if (!this.spinnerContainerNode || !isBrowser(this.globalObject)) {\n return;\n }\n\n const {\n top: containerTop,\n right: containerRight,\n bottom: containerBottom,\n left: containerLeft,\n height: containerHeight,\n width: containerWidth,\n } = getDOMRect(this.spinnerContainerNode);\n\n const windowHeight = this.globalObject.innerHeight;\n const windowWidth = this.globalObject.innerWidth;\n\n // Если контейнер не больше высоты и не шире окна,\n // то просто выравниваем по центру\n if (windowHeight >= containerHeight && windowWidth >= containerWidth) {\n this.setState({\n isStickySpinner: false,\n spinnerStyle: {},\n });\n return;\n }\n\n const spinnerStyle: {\n top?: number;\n right: number;\n bottom: number;\n left: number;\n } = {\n top: 30,\n right: 0,\n bottom: 30,\n left: 0,\n };\n\n // ПО ВЕРТИКАЛИ\n // Если верхний край контейнера ниже верхнего края окна,\n // то сдвигаем и лоадер\n if (containerTop > 0) {\n spinnerStyle.top = containerTop + 30;\n }\n\n // Если нижний край контейнера выше нижнего края окна,\n // то сдвигаем и лоадер\n if (containerBottom < windowHeight) {\n spinnerStyle.bottom = Math.abs(windowHeight - containerBottom) + 30;\n }\n\n // Если знаем высоту спиннера и нижний край контейнера поднимается\n // выше отступа на высоту спиннера, то убираем верхнюю позицию лоадера\n\n const spinnerHeight = getDOMRect(this.spinnerNode).height;\n\n if (spinnerHeight && spinnerStyle.bottom >= windowHeight - spinnerHeight) {\n delete spinnerStyle.top;\n }\n\n // ПО ГОРИЗОНТАЛИ\n // Если левый край контейнера правее левого края окна,\n // то сдвигаем и лоадер\n if (containerLeft > 0) {\n spinnerStyle.left = containerLeft;\n }\n\n // Если правый край контейнера левее правого края окна,\n // то сдвигаем и лоадер\n if (containerRight < windowWidth) {\n spinnerStyle.right = windowWidth - containerRight;\n }\n\n this.setState({\n isStickySpinner: true,\n spinnerStyle,\n });\n };\n\n private disableChildrenFocus = () => {\n if (!this.childrenObserver) {\n this.makeObservable();\n }\n const tabbableElements = getTabbableElements(this.childrenContainerNode);\n tabbableElements.forEach((el) => {\n if (!el.hasAttribute('origin-tabindex')) {\n el.setAttribute('origin-tabindex', el.tabIndex.toString());\n }\n el.tabIndex = -1;\n });\n };\n\n private enableChildrenFocus = () => {\n this.makeUnobservable();\n\n this.globalObject.document?.querySelectorAll('[origin-tabindex]').forEach((el) => {\n el.setAttribute('tabindex', el.getAttribute('origin-tabindex') ?? '0');\n el.removeAttribute('origin-tabindex');\n });\n };\n\n private makeObservable = () => {\n const target = this.childrenContainerNode;\n if (!target || !this.globalObject.MutationObserver) {\n return;\n }\n const config = {\n childList: true,\n subtree: true,\n };\n const observer = new this.globalObject.MutationObserver(this.disableChildrenFocus);\n observer.observe(target, config);\n this.childrenObserver = observer;\n };\n\n private makeUnobservable = () => {\n this.childrenObserver?.disconnect();\n this.childrenObserver = null;\n };\n\n private typeToSize = (type: LoaderType) => {\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"]}
@@ -85,6 +85,7 @@ export declare class MenuItem extends React.Component<MenuItemProps> {
85
85
  select: (event: React.SyntheticEvent<HTMLElement>) => void;
86
86
  isEnabled: () => boolean;
87
87
  navigate: () => void;
88
+ private getRootMobileSizeClassName;
88
89
  private getRootSizeClassName;
89
90
  private getIconSizeClassName;
90
91
  private getWithIconSizeClassName;
@@ -51,6 +51,7 @@ import { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';
51
51
  import { rootNode } from '../../lib/rootNode/index.js';
52
52
  import { withSize } from '../../lib/size/SizeDecorator.js';
53
53
  import { ThemeContext } from '../../lib/theming/ThemeContext.js';
54
+ import { isThemeGTE } from '../../lib/theming/ThemeHelpers.js';
54
55
  import { isExternalLink, isFunction, isNonNullable, isReactUIComponent } from '../../lib/utils.js';
55
56
  import { getStyles } from './MenuItem.styles.js';
56
57
  export var MenuItemDataTids = {
@@ -109,7 +110,7 @@ var MenuItem = /** @class */ (function (_super) {
109
110
  var className = _this.cx((_b = {},
110
111
  _b[_this.styles.root(_this.theme)] = true,
111
112
  _b[_this.getRootSizeClassName()] = true,
112
- _b[_this.styles.rootMobile(_this.theme)] = isMobile,
113
+ _b[_this.getRootMobileSizeClassName()] = isMobile,
113
114
  _b[_this.styles.loose()] = !!loose,
114
115
  _b[_this.styles.hover(_this.theme)] = _this.isHover,
115
116
  _b[_this.styles.selected(_this.theme)] = _this.isSelected,
@@ -237,6 +238,21 @@ var MenuItem = /** @class */ (function (_super) {
237
238
  }
238
239
  }
239
240
  };
241
+ MenuItem.prototype.getRootMobileSizeClassName = function () {
242
+ var themeGTE6_1 = isThemeGTE(this.theme, '6.1');
243
+ if (!themeGTE6_1) {
244
+ return this.styles.rootMobile(this.theme);
245
+ }
246
+ switch (this.props.size) {
247
+ case 'large':
248
+ return this.styles.rootMobileLarge(this.theme);
249
+ case 'medium':
250
+ return this.styles.rootMobileMedium(this.theme);
251
+ case 'small':
252
+ default:
253
+ return this.styles.rootMobileSmall(this.theme);
254
+ }
255
+ };
240
256
  MenuItem.prototype.getRootSizeClassName = function () {
241
257
  switch (this.size) {
242
258
  case 'large':