@consta/uikit 5.0.3 → 5.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 (151) hide show
  1. package/__internal__/src/components/BookmarkTabs/BookmarkTabs.js +1 -1
  2. package/__internal__/src/components/BookmarkTabs/BookmarkTabs.js.map +1 -1
  3. package/__internal__/src/components/DatePicker/DatePicker.js.map +1 -1
  4. package/__internal__/src/components/DatePicker/DatePickerAdditionalControls/DatePickerAdditionalControls.d.ts +1 -1
  5. package/__internal__/src/components/DatePicker/DatePickerAdditionalControls/DatePickerAdditionalControls.js.map +1 -1
  6. package/__internal__/src/components/DatePicker/DatePickerDropdown/DatePickerDropdown.d.ts +3 -3
  7. package/__internal__/src/components/DatePicker/DatePickerDropdown/DatePickerDropdown.js +1 -1
  8. package/__internal__/src/components/DatePicker/DatePickerDropdown/DatePickerDropdown.js.map +1 -1
  9. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/DatePickerFieldTypeDate.js +1 -1
  10. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/DatePickerFieldTypeDate.js.map +1 -1
  11. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/helpers.js +1 -1
  12. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/helpers.js.map +1 -1
  13. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateRange/DatePickerFieldTypeDateRange.js +1 -1
  14. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateRange/DatePickerFieldTypeDateRange.js.map +1 -1
  15. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/DatePickerFieldTypeDateTime.js +1 -1
  16. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/DatePickerFieldTypeDateTime.js.map +1 -1
  17. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/helpers.js +1 -1
  18. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/helpers.js.map +1 -1
  19. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTimeRange/DatePickerFieldTypeDateTimeRange.js +1 -1
  20. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTimeRange/DatePickerFieldTypeDateTimeRange.js.map +1 -1
  21. package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/helpers.js +1 -1
  22. package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/helpers.js.map +1 -1
  23. package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonthRange/DatePickerFieldTypeMonthRange.js +1 -1
  24. package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonthRange/DatePickerFieldTypeMonthRange.js.map +1 -1
  25. package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.js +1 -1
  26. package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.js.map +1 -1
  27. package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/helpers.js +1 -1
  28. package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/helpers.js.map +1 -1
  29. package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.js +1 -1
  30. package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.js.map +1 -1
  31. package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/helpers.js +1 -1
  32. package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/helpers.js.map +1 -1
  33. package/__internal__/src/components/DatePicker/DatePickerFieldTypeYearRange/DatePickerFieldTypeYearRange.js +1 -1
  34. package/__internal__/src/components/DatePicker/DatePickerFieldTypeYearRange/DatePickerFieldTypeYearRange.js.map +1 -1
  35. package/__internal__/src/components/DatePicker/DatePickerTypeDate/DatePickerTypeDate.js +1 -1
  36. package/__internal__/src/components/DatePicker/DatePickerTypeDate/DatePickerTypeDate.js.map +1 -1
  37. package/__internal__/src/components/DatePicker/DatePickerTypeDateRange/DatePickerTypeDateRange.js +1 -1
  38. package/__internal__/src/components/DatePicker/DatePickerTypeDateRange/DatePickerTypeDateRange.js.map +1 -1
  39. package/__internal__/src/components/DatePicker/DatePickerTypeDateTime/DatePickerTypeDateTime.js +1 -1
  40. package/__internal__/src/components/DatePicker/DatePickerTypeDateTime/DatePickerTypeDateTime.js.map +1 -1
  41. package/__internal__/src/components/DatePicker/DatePickerTypeDateTimeRange/DatePickerTypeDateTimeRange.js +1 -1
  42. package/__internal__/src/components/DatePicker/DatePickerTypeDateTimeRange/DatePickerTypeDateTimeRange.js.map +1 -1
  43. package/__internal__/src/components/DatePicker/DatePickerTypeMonth/DatePickerTypeMonth.js +1 -1
  44. package/__internal__/src/components/DatePicker/DatePickerTypeMonth/DatePickerTypeMonth.js.map +1 -1
  45. package/__internal__/src/components/DatePicker/DatePickerTypeMonthRange/DatePickerTypeMonthRange.js +1 -1
  46. package/__internal__/src/components/DatePicker/DatePickerTypeMonthRange/DatePickerTypeMonthRange.js.map +1 -1
  47. package/__internal__/src/components/DatePicker/DatePickerTypeTime/DatePickerTypeTime.js +1 -1
  48. package/__internal__/src/components/DatePicker/DatePickerTypeTime/DatePickerTypeTime.js.map +1 -1
  49. package/__internal__/src/components/DatePicker/DatePickerTypeYear/DatePickerTypeYear.js +1 -1
  50. package/__internal__/src/components/DatePicker/DatePickerTypeYear/DatePickerTypeYear.js.map +1 -1
  51. package/__internal__/src/components/DatePicker/DatePickerTypeYearRange/DatePickerTypeYearRange.js +1 -1
  52. package/__internal__/src/components/DatePicker/DatePickerTypeYearRange/DatePickerTypeYearRange.js.map +1 -1
  53. package/__internal__/src/components/DatePicker/helpers.d.ts +1 -0
  54. package/__internal__/src/components/DatePicker/helpers.js +1 -1
  55. package/__internal__/src/components/DatePicker/helpers.js.map +1 -1
  56. package/__internal__/src/components/DatePicker/useCalendarVisible.d.ts +3 -2
  57. package/__internal__/src/components/DatePicker/useCalendarVisible.js +1 -1
  58. package/__internal__/src/components/DatePicker/useCalendarVisible.js.map +1 -1
  59. package/__internal__/src/components/DateTime/DateTimeItem/DateTimeItem.css +1 -1
  60. package/__internal__/src/components/DateTime/DateTimeItem/DateTimeItem.js +1 -1
  61. package/__internal__/src/components/DateTime/DateTimeItem/DateTimeItem.js.map +1 -1
  62. package/__internal__/src/components/FieldLabel/FieldLabel.js +1 -1
  63. package/__internal__/src/components/FieldLabel/FieldLabel.js.map +1 -1
  64. package/__internal__/src/components/Pagination/Pagination.css +1 -1
  65. package/__internal__/src/components/Pagination/Pagination.js +1 -1
  66. package/__internal__/src/components/Pagination/Pagination.js.map +1 -1
  67. package/__internal__/src/components/Pagination/PaginationItem/PaginationItem.css +1 -1
  68. package/__internal__/src/components/Pagination/PaginationItem/PaginationItem.d.ts +1 -0
  69. package/__internal__/src/components/Pagination/PaginationItem/PaginationItem.js +1 -1
  70. package/__internal__/src/components/Pagination/PaginationItem/PaginationItem.js.map +1 -1
  71. package/__internal__/src/components/Pagination/PaginationList/PaginationList.css +1 -1
  72. package/__internal__/src/components/Pagination/PaginationList/PaginationList.js +1 -1
  73. package/__internal__/src/components/Pagination/PaginationList/PaginationList.js.map +1 -1
  74. package/__internal__/src/components/Pagination/PaginationNumberInput/PaginationNumberInput.js +1 -1
  75. package/__internal__/src/components/Pagination/PaginationNumberInput/PaginationNumberInput.js.map +1 -1
  76. package/__internal__/src/components/Pagination/PaginationSizeCalculateHelper/PaginationSizeCalculateHelper.css +1 -0
  77. package/__internal__/src/components/Pagination/PaginationSizeCalculateHelper/PaginationSizeCalculateHelper.d.ts +7 -0
  78. package/__internal__/src/components/Pagination/PaginationSizeCalculateHelper/PaginationSizeCalculateHelper.js +2 -0
  79. package/__internal__/src/components/Pagination/PaginationSizeCalculateHelper/PaginationSizeCalculateHelper.js.map +1 -0
  80. package/__internal__/src/components/Pagination/PaginationSizeCalculateHelper/index.d.ts +1 -0
  81. package/__internal__/src/components/Pagination/PaginationSizeCalculateHelper/index.js +2 -0
  82. package/__internal__/src/components/Pagination/PaginationSizeCalculateHelper/index.js.map +1 -0
  83. package/__internal__/src/components/Pagination/helpers.d.ts +11 -555
  84. package/__internal__/src/components/Pagination/helpers.js +1 -1
  85. package/__internal__/src/components/Pagination/helpers.js.map +1 -1
  86. package/__internal__/src/components/Pagination/index.d.ts +0 -1
  87. package/__internal__/src/components/Pagination/index.js +1 -1
  88. package/__internal__/src/components/Pagination/index.js.map +1 -1
  89. package/__internal__/src/components/Pagination/types.d.ts +17 -37
  90. package/__internal__/src/components/Pagination/types.js.map +1 -1
  91. package/__internal__/src/components/Pagination/usePaginationItems.d.ts +7 -6
  92. package/__internal__/src/components/Pagination/usePaginationItems.js +1 -1
  93. package/__internal__/src/components/Pagination/usePaginationItems.js.map +1 -1
  94. package/__internal__/src/components/Pagination/usePaginationKeys.d.ts +2 -2
  95. package/__internal__/src/components/Pagination/usePaginationKeys.js +1 -1
  96. package/__internal__/src/components/Pagination/usePaginationKeys.js.map +1 -1
  97. package/__internal__/src/components/ProgressStepBar/ProgressStepBar.js +1 -1
  98. package/__internal__/src/components/ProgressStepBar/ProgressStepBar.js.map +1 -1
  99. package/__internal__/src/components/Tabs/Tabs.js +1 -1
  100. package/__internal__/src/components/Tabs/Tabs.js.map +1 -1
  101. package/__internal__/src/components/Tabs/TabsFitModeScrollWrapper/TabsFitModeScrollWrapper.d.ts +1 -1
  102. package/__internal__/src/components/Tabs/TabsFitModeScrollWrapper/TabsFitModeScrollWrapper.js +1 -1
  103. package/__internal__/src/components/Tabs/TabsFitModeScrollWrapper/TabsFitModeScrollWrapper.js.map +1 -1
  104. package/__internal__/src/components/Tabs/helpers.d.ts +283 -1
  105. package/__internal__/src/components/Tabs/types.d.ts +9 -2
  106. package/__internal__/src/components/Tabs/types.js.map +1 -1
  107. package/__internal__/src/components/TextField/TextField.css +1 -1
  108. package/__internal__/src/components/TextField/TextField.js +1 -1
  109. package/__internal__/src/components/TextField/TextField.js.map +1 -1
  110. package/__internal__/src/fileIcons/FileIconAvi/FileIconAvi.js.map +1 -1
  111. package/__internal__/src/fileIcons/FileIconBmp/FileIconBmp.js.map +1 -1
  112. package/__internal__/src/fileIcons/FileIconCsv/FileIconCsv.js.map +1 -1
  113. package/__internal__/src/fileIcons/FileIconDoc/FileIconDoc.js.map +1 -1
  114. package/__internal__/src/fileIcons/FileIconExe/FileIconExe.js.map +1 -1
  115. package/__internal__/src/fileIcons/FileIconGif/FileIconGif.js.map +1 -1
  116. package/__internal__/src/fileIcons/FileIconJpg/FileIconJpg.js.map +1 -1
  117. package/__internal__/src/fileIcons/FileIconJson/FileIconJson.js.map +1 -1
  118. package/__internal__/src/fileIcons/FileIconLoading/FileIconLoading.js.map +1 -1
  119. package/__internal__/src/fileIcons/FileIconMov/FileIconMov.js.map +1 -1
  120. package/__internal__/src/fileIcons/FileIconMp3/FileIconMp3.js.map +1 -1
  121. package/__internal__/src/fileIcons/FileIconMp4/FileIconMp4.js.map +1 -1
  122. package/__internal__/src/fileIcons/FileIconPdf/FileIconPdf.js.map +1 -1
  123. package/__internal__/src/fileIcons/FileIconPng/FileIconPng.js.map +1 -1
  124. package/__internal__/src/fileIcons/FileIconRar/FileIconRar.js.map +1 -1
  125. package/__internal__/src/fileIcons/FileIconRtf/FileIconRtf.js.map +1 -1
  126. package/__internal__/src/fileIcons/FileIconTiff/FileIconTiff.js.map +1 -1
  127. package/__internal__/src/fileIcons/FileIconTxt/FileIconTxt.js.map +1 -1
  128. package/__internal__/src/fileIcons/FileIconUndefined/FileIconUndefined.js.map +1 -1
  129. package/__internal__/src/fileIcons/FileIconWav/FileIconWav.js.map +1 -1
  130. package/__internal__/src/fileIcons/FileIconXls/FileIconXls.js.map +1 -1
  131. package/__internal__/src/fileIcons/FileIconZip/FileIconZip.js.map +1 -1
  132. package/__internal__/src/hooks/useFlag/useFlag.d.ts +1 -2
  133. package/__internal__/src/hooks/useFlag/useFlag.js.map +1 -1
  134. package/__internal__/src/responsesImages/ResponsesImage403/ResponsesImage403.js.map +1 -1
  135. package/__internal__/src/responsesImages/ResponsesImage404/ResponsesImage404.js.map +1 -1
  136. package/__internal__/src/responsesImages/ResponsesImage500/ResponsesImage500.js.map +1 -1
  137. package/__internal__/src/responsesImages/ResponsesImage503/ResponsesImage503.js.map +1 -1
  138. package/__internal__/src/responsesImages/ResponsesImageConnectionError/ResponsesImageConnectionError.js.map +1 -1
  139. package/__internal__/src/responsesImages/ResponsesImageDeleted/ResponsesImageDeleted.js.map +1 -1
  140. package/__internal__/src/responsesImages/ResponsesImageEmptyBox/ResponsesImageEmptyBox.js.map +1 -1
  141. package/__internal__/src/responsesImages/ResponsesImageEmptyPockets/ResponsesImageEmptyPockets.js.map +1 -1
  142. package/__internal__/src/responsesImages/ResponsesImageNothingFound/ResponsesImageNothingFound.js.map +1 -1
  143. package/__internal__/src/responsesImages/ResponsesImageSuccess/ResponsesImageSuccess.js.map +1 -1
  144. package/package.json +1 -1
  145. package/__internal__/src/components/Pagination/PaginationBase/PaginationBase.css +0 -1
  146. package/__internal__/src/components/Pagination/PaginationBase/PaginationBase.d.ts +0 -3
  147. package/__internal__/src/components/Pagination/PaginationBase/PaginationBase.js +0 -2
  148. package/__internal__/src/components/Pagination/PaginationBase/PaginationBase.js.map +0 -1
  149. package/__internal__/src/components/Pagination/PaginationBase/index.d.ts +0 -1
  150. package/__internal__/src/components/Pagination/PaginationBase/index.js +0 -2
  151. package/__internal__/src/components/Pagination/PaginationBase/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TabsFitModeScrollWrapper.js","names":["IconArrowLeft","IconArrowRight","React","useResizeObserved","useScrollPosition","cn","Button","getTabsWidth","getVisibleTabsRange","cnTabsFitModeScrollWrapper","TabsFitModeScrollWrapper","tabsDimensions","items","renderItemsList","getItemChecked","scrollContainerRef","useRef","useMemo","el","isScrollable","scrollWidth","offsetWidth","width","paddingLeft","parseInt","getComputedStyle","containerWidth","containerPaddingLeft","current","scrollLeft","firstVisibleTabIdx","lastVisibleTabIdx","scrollTabIntoView","idx","previousTabsWidth","slice","scrollTo","left","behavior","scrollPrev","scrollNext","checkedTabIdx","findIndex","useEffect","map","buttonTo","length","to","visibleIndexes","Array","from","keys","getTabClassName","noMargin"],"sources":["../../../../../../src/components/Tabs/TabsFitModeScrollWrapper/TabsFitModeScrollWrapper.tsx"],"sourcesContent":["import './TabsFitModeScrollWrapper.css';\n\nimport { IconArrowLeft } from '@consta/icons/IconArrowLeft';\nimport { IconArrowRight } from '@consta/icons/IconArrowRight';\nimport React from 'react';\n\nimport { useResizeObserved } from '../../../hooks/useResizeObserved/useResizeObserved';\nimport { useScrollPosition } from '../../../hooks/useScrollPosition/useScrollPosition';\nimport { cn } from '../../../utils/bem';\nimport { Button } from '../../Button/Button';\nimport { getTabsWidth, getVisibleTabsRange } from '../helpers';\nimport { TabsFitModeWrapperProps } from '../types';\n\nconst cnTabsFitModeScrollWrapper = cn('TabsFitModeScrollWrapper');\n\nexport const TabsFitModeScrollWrapper = <ITEM,>({\n tabsDimensions,\n items,\n renderItemsList,\n getItemChecked,\n}: TabsFitModeWrapperProps<ITEM>): React.ReactElement | null => {\n const scrollContainerRef = React.useRef<HTMLDivElement>(null);\n const [\n { isScrollable, width: containerWidth, paddingLeft: containerPaddingLeft },\n ] = useResizeObserved(\n React.useMemo(() => [scrollContainerRef], [scrollContainerRef, items]),\n (el) => ({\n isScrollable: el && el.scrollWidth > el.offsetWidth,\n width: el?.offsetWidth ?? 0,\n paddingLeft: el ? parseInt(getComputedStyle(el).paddingLeft, 10) : 0,\n }),\n );\n const { scrollLeft } = useScrollPosition(scrollContainerRef.current);\n\n const [firstVisibleTabIdx, lastVisibleTabIdx] = getVisibleTabsRange({\n tabsDimensions,\n containerWidth,\n containerPaddingLeft,\n scrollLeft,\n });\n\n const scrollTabIntoView = (idx: number) => {\n const tabIsVisible = idx >= firstVisibleTabIdx && idx <= lastVisibleTabIdx;\n\n if (!tabIsVisible) {\n const previousTabsWidth = getTabsWidth(tabsDimensions.slice(0, idx));\n scrollContainerRef.current?.scrollTo({\n left: previousTabsWidth,\n behavior: 'smooth',\n });\n }\n };\n\n const scrollPrev = () => {\n scrollTabIntoView(firstVisibleTabIdx - 1);\n };\n\n const scrollNext = () => {\n scrollTabIntoView(lastVisibleTabIdx + 1);\n };\n\n // Подскролливаем к выбранному табу\n const checkedTabIdx = items.findIndex(getItemChecked);\n React.useEffect(() => {\n if (isScrollable) {\n scrollTabIntoView(checkedTabIdx);\n }\n }, [checkedTabIdx, isScrollable]);\n\n return (\n <div className={cnTabsFitModeScrollWrapper()}>\n {isScrollable && (\n <>\n {(['prev', 'next'] as const).map((buttonTo) => (\n <Button\n key={buttonTo}\n view=\"clear\"\n type=\"button\"\n size=\"xs\"\n onlyIcon\n disabled={\n buttonTo === 'prev'\n ? firstVisibleTabIdx === 0\n : lastVisibleTabIdx === items.length - 1\n }\n iconLeft={buttonTo === 'prev' ? IconArrowLeft : IconArrowRight}\n className={cnTabsFitModeScrollWrapper('Button', { to: buttonTo })}\n onClick={buttonTo === 'prev' ? scrollPrev : scrollNext}\n />\n ))}\n </>\n )}\n <div\n className={cnTabsFitModeScrollWrapper('Content')}\n ref={scrollContainerRef}\n >\n {renderItemsList({\n visibleIndexes: Array.from(Array(items.length).keys()),\n getTabClassName: (idx) =>\n cnTabsFitModeScrollWrapper('Tab', {\n noMargin: idx === items.length - 1,\n }),\n })}\n </div>\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"TabsFitModeScrollWrapper.js","names":["IconArrowLeft","IconArrowRight","React","cnMixScrollBar","useResizeObserved","useScrollPosition","cn","Button","getTabsWidth","getVisibleTabsRange","cnTabsFitModeScrollWrapper","TabsFitModeScrollWrapper","tabsDimensions","items","renderItemsList","getItemChecked","withScrollButtons","scrollContainerRef","useRef","useMemo","el","isScrollable","scrollWidth","offsetWidth","width","paddingLeft","parseInt","getComputedStyle","containerWidth","containerPaddingLeft","current","scrollLeft","firstVisibleTabIdx","lastVisibleTabIdx","scrollTabIntoView","idx","previousTabsWidth","slice","scrollTo","left","behavior","scrollPrev","scrollNext","checkedTabIdx","findIndex","useEffect","map","buttonTo","length","to","invisible","visibleIndexes","Array","from","keys","getTabClassName","noMargin"],"sources":["../../../../../../src/components/Tabs/TabsFitModeScrollWrapper/TabsFitModeScrollWrapper.tsx"],"sourcesContent":["import './TabsFitModeScrollWrapper.css';\n\nimport { IconArrowLeft } from '@consta/icons/IconArrowLeft';\nimport { IconArrowRight } from '@consta/icons/IconArrowRight';\nimport React from 'react';\n\nimport { cnMixScrollBar } from '##/mixs/MixScrollBar';\n\nimport { useResizeObserved } from '../../../hooks/useResizeObserved/useResizeObserved';\nimport { useScrollPosition } from '../../../hooks/useScrollPosition/useScrollPosition';\nimport { cn } from '../../../utils/bem';\nimport { Button } from '../../Button/Button';\nimport { getTabsWidth, getVisibleTabsRange } from '../helpers';\nimport { TabsFitModeWrapperProps } from '../types';\n\nconst cnTabsFitModeScrollWrapper = cn('TabsFitModeScrollWrapper');\n\nexport const TabsFitModeScrollWrapper = <ITEM,>({\n tabsDimensions,\n items,\n renderItemsList,\n getItemChecked,\n withScrollButtons,\n}: TabsFitModeWrapperProps<ITEM>): React.ReactElement | null => {\n const scrollContainerRef = React.useRef<HTMLDivElement>(null);\n const [\n { isScrollable, width: containerWidth, paddingLeft: containerPaddingLeft },\n ] = useResizeObserved(\n React.useMemo(() => [scrollContainerRef], [scrollContainerRef, items]),\n (el) => ({\n isScrollable: el && el.scrollWidth > el.offsetWidth,\n width: el?.offsetWidth ?? 0,\n paddingLeft: el ? parseInt(getComputedStyle(el).paddingLeft, 10) : 0,\n }),\n );\n const { scrollLeft } = useScrollPosition(scrollContainerRef.current);\n\n const [firstVisibleTabIdx, lastVisibleTabIdx] = getVisibleTabsRange({\n tabsDimensions,\n containerWidth,\n containerPaddingLeft,\n scrollLeft,\n });\n\n const scrollTabIntoView = (idx: number) => {\n const tabIsVisible = idx >= firstVisibleTabIdx && idx <= lastVisibleTabIdx;\n\n if (!tabIsVisible) {\n const previousTabsWidth = getTabsWidth(tabsDimensions.slice(0, idx));\n scrollContainerRef.current?.scrollTo({\n left: previousTabsWidth,\n behavior: 'smooth',\n });\n }\n };\n\n const scrollPrev = () => {\n scrollTabIntoView(firstVisibleTabIdx - 1);\n };\n\n const scrollNext = () => {\n scrollTabIntoView(lastVisibleTabIdx + 1);\n };\n\n // Подскролливаем к выбранному табу\n const checkedTabIdx = items.findIndex(getItemChecked);\n React.useEffect(() => {\n if (isScrollable) {\n scrollTabIntoView(checkedTabIdx);\n }\n }, [checkedTabIdx, isScrollable]);\n\n return (\n <div className={cnTabsFitModeScrollWrapper()}>\n {isScrollable && withScrollButtons && (\n <>\n {(['prev', 'next'] as const).map((buttonTo) => (\n <Button\n key={buttonTo}\n view=\"clear\"\n type=\"button\"\n size=\"xs\"\n onlyIcon\n disabled={\n buttonTo === 'prev'\n ? firstVisibleTabIdx === 0\n : lastVisibleTabIdx === items.length - 1\n }\n iconLeft={buttonTo === 'prev' ? IconArrowLeft : IconArrowRight}\n className={cnTabsFitModeScrollWrapper('Button', { to: buttonTo })}\n onClick={buttonTo === 'prev' ? scrollPrev : scrollNext}\n />\n ))}\n </>\n )}\n <div\n className={cnTabsFitModeScrollWrapper(\n 'Content',\n cnMixScrollBar({ invisible: true }),\n )}\n ref={scrollContainerRef}\n >\n {renderItemsList({\n visibleIndexes: Array.from(Array(items.length).keys()),\n getTabClassName: (idx) =>\n cnTabsFitModeScrollWrapper('Tab', {\n noMargin: idx === items.length - 1,\n }),\n })}\n </div>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -25,7 +25,288 @@ export declare const withDefaultGetters: (props: TabsProps) => {
25
25
  renderItem?: import("./types").RenderItem<TabsItemDefault> | undefined;
26
26
  disabled?: boolean | undefined;
27
27
  linePosition?: "top" | "bottom" | undefined;
28
- fitMode?: "scroll" | "dropdown" | undefined;
28
+ fitMode?: "scroll" | undefined;
29
+ withScrollButtons?: boolean | undefined;
30
+ slot?: string | undefined;
31
+ style?: import("react").CSSProperties | undefined;
32
+ title?: string | undefined;
33
+ defaultChecked?: boolean | undefined;
34
+ defaultValue?: string | number | readonly string[] | undefined;
35
+ suppressContentEditableWarning?: boolean | undefined;
36
+ suppressHydrationWarning?: boolean | undefined;
37
+ accessKey?: string | undefined;
38
+ className?: string | undefined;
39
+ contentEditable?: (boolean | "true" | "false") | "inherit" | undefined;
40
+ contextMenu?: string | undefined;
41
+ dir?: string | undefined;
42
+ draggable?: (boolean | "true" | "false") | undefined;
43
+ hidden?: boolean | undefined;
44
+ id?: string | undefined;
45
+ lang?: string | undefined;
46
+ placeholder?: string | undefined;
47
+ spellCheck?: (boolean | "true" | "false") | undefined;
48
+ tabIndex?: number | undefined;
49
+ translate?: "yes" | "no" | undefined;
50
+ radioGroup?: string | undefined;
51
+ role?: import("react").AriaRole | undefined;
52
+ about?: string | undefined;
53
+ datatype?: string | undefined;
54
+ inlist?: any;
55
+ prefix?: string | undefined;
56
+ property?: string | undefined;
57
+ resource?: string | undefined;
58
+ typeof?: string | undefined;
59
+ vocab?: string | undefined;
60
+ autoCapitalize?: string | undefined;
61
+ autoCorrect?: string | undefined;
62
+ autoSave?: string | undefined;
63
+ color?: string | undefined;
64
+ itemProp?: string | undefined;
65
+ itemScope?: boolean | undefined;
66
+ itemType?: string | undefined;
67
+ itemID?: string | undefined;
68
+ itemRef?: string | undefined;
69
+ results?: number | undefined;
70
+ security?: string | undefined;
71
+ unselectable?: "on" | "off" | undefined;
72
+ inputMode?: "search" | "text" | "email" | "tel" | "url" | "none" | "numeric" | "decimal" | undefined;
73
+ is?: string | undefined;
74
+ 'aria-activedescendant'?: string | undefined;
75
+ 'aria-atomic'?: (boolean | "true" | "false") | undefined;
76
+ 'aria-autocomplete'?: "list" | "none" | "inline" | "both" | undefined;
77
+ 'aria-busy'?: (boolean | "true" | "false") | undefined;
78
+ 'aria-checked'?: boolean | "true" | "false" | "mixed" | undefined;
79
+ 'aria-colcount'?: number | undefined;
80
+ 'aria-colindex'?: number | undefined;
81
+ 'aria-colspan'?: number | undefined;
82
+ 'aria-controls'?: string | undefined;
83
+ 'aria-current'?: boolean | "time" | "step" | "date" | "true" | "false" | "page" | "location" | undefined;
84
+ 'aria-describedby'?: string | undefined;
85
+ 'aria-details'?: string | undefined;
86
+ 'aria-disabled'?: (boolean | "true" | "false") | undefined;
87
+ 'aria-dropeffect'?: "link" | "none" | "copy" | "execute" | "move" | "popup" | undefined;
88
+ 'aria-errormessage'?: string | undefined;
89
+ 'aria-expanded'?: (boolean | "true" | "false") | undefined;
90
+ 'aria-flowto'?: string | undefined;
91
+ 'aria-grabbed'?: (boolean | "true" | "false") | undefined;
92
+ 'aria-haspopup'?: boolean | "dialog" | "menu" | "true" | "false" | "grid" | "listbox" | "tree" | undefined;
93
+ 'aria-hidden'?: (boolean | "true" | "false") | undefined;
94
+ 'aria-invalid'?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
95
+ 'aria-keyshortcuts'?: string | undefined;
96
+ 'aria-label'?: string | undefined;
97
+ 'aria-labelledby'?: string | undefined;
98
+ 'aria-level'?: number | undefined;
99
+ 'aria-live'?: "off" | "assertive" | "polite" | undefined;
100
+ 'aria-modal'?: (boolean | "true" | "false") | undefined;
101
+ 'aria-multiline'?: (boolean | "true" | "false") | undefined;
102
+ 'aria-multiselectable'?: (boolean | "true" | "false") | undefined;
103
+ 'aria-orientation'?: "horizontal" | "vertical" | undefined;
104
+ 'aria-owns'?: string | undefined;
105
+ 'aria-placeholder'?: string | undefined;
106
+ 'aria-posinset'?: number | undefined;
107
+ 'aria-pressed'?: boolean | "true" | "false" | "mixed" | undefined;
108
+ 'aria-readonly'?: (boolean | "true" | "false") | undefined;
109
+ 'aria-relevant'?: "text" | "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | undefined;
110
+ 'aria-required'?: (boolean | "true" | "false") | undefined;
111
+ 'aria-roledescription'?: string | undefined;
112
+ 'aria-rowcount'?: number | undefined;
113
+ 'aria-rowindex'?: number | undefined;
114
+ 'aria-rowspan'?: number | undefined;
115
+ 'aria-selected'?: (boolean | "true" | "false") | undefined;
116
+ 'aria-setsize'?: number | undefined;
117
+ 'aria-sort'?: "none" | "ascending" | "descending" | "other" | undefined;
118
+ 'aria-valuemax'?: number | undefined;
119
+ 'aria-valuemin'?: number | undefined;
120
+ 'aria-valuenow'?: number | undefined;
121
+ 'aria-valuetext'?: string | undefined;
122
+ dangerouslySetInnerHTML?: {
123
+ __html: string;
124
+ } | undefined;
125
+ onCopy?: import("react").ClipboardEventHandler<HTMLDivElement> | undefined;
126
+ onCopyCapture?: import("react").ClipboardEventHandler<HTMLDivElement> | undefined;
127
+ onCut?: import("react").ClipboardEventHandler<HTMLDivElement> | undefined;
128
+ onCutCapture?: import("react").ClipboardEventHandler<HTMLDivElement> | undefined;
129
+ onPaste?: import("react").ClipboardEventHandler<HTMLDivElement> | undefined;
130
+ onPasteCapture?: import("react").ClipboardEventHandler<HTMLDivElement> | undefined;
131
+ onCompositionEnd?: import("react").CompositionEventHandler<HTMLDivElement> | undefined;
132
+ onCompositionEndCapture?: import("react").CompositionEventHandler<HTMLDivElement> | undefined;
133
+ onCompositionStart?: import("react").CompositionEventHandler<HTMLDivElement> | undefined;
134
+ onCompositionStartCapture?: import("react").CompositionEventHandler<HTMLDivElement> | undefined;
135
+ onCompositionUpdate?: import("react").CompositionEventHandler<HTMLDivElement> | undefined;
136
+ onCompositionUpdateCapture?: import("react").CompositionEventHandler<HTMLDivElement> | undefined;
137
+ onFocus?: import("react").FocusEventHandler<HTMLDivElement> | undefined;
138
+ onFocusCapture?: import("react").FocusEventHandler<HTMLDivElement> | undefined;
139
+ onBlur?: import("react").FocusEventHandler<HTMLDivElement> | undefined;
140
+ onBlurCapture?: import("react").FocusEventHandler<HTMLDivElement> | undefined;
141
+ onChangeCapture?: import("react").FormEventHandler<HTMLDivElement> | undefined;
142
+ onBeforeInput?: import("react").FormEventHandler<HTMLDivElement> | undefined;
143
+ onBeforeInputCapture?: import("react").FormEventHandler<HTMLDivElement> | undefined;
144
+ onInput?: import("react").FormEventHandler<HTMLDivElement> | undefined;
145
+ onInputCapture?: import("react").FormEventHandler<HTMLDivElement> | undefined;
146
+ onReset?: import("react").FormEventHandler<HTMLDivElement> | undefined;
147
+ onResetCapture?: import("react").FormEventHandler<HTMLDivElement> | undefined;
148
+ onSubmit?: import("react").FormEventHandler<HTMLDivElement> | undefined;
149
+ onSubmitCapture?: import("react").FormEventHandler<HTMLDivElement> | undefined;
150
+ onInvalid?: import("react").FormEventHandler<HTMLDivElement> | undefined;
151
+ onInvalidCapture?: import("react").FormEventHandler<HTMLDivElement> | undefined;
152
+ onLoad?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
153
+ onLoadCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
154
+ onError?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
155
+ onErrorCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
156
+ onKeyDown?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
157
+ onKeyDownCapture?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
158
+ onKeyPress?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
159
+ onKeyPressCapture?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
160
+ onKeyUp?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
161
+ onKeyUpCapture?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
162
+ onAbort?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
163
+ onAbortCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
164
+ onCanPlay?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
165
+ onCanPlayCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
166
+ onCanPlayThrough?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
167
+ onCanPlayThroughCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
168
+ onDurationChange?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
169
+ onDurationChangeCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
170
+ onEmptied?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
171
+ onEmptiedCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
172
+ onEncrypted?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
173
+ onEncryptedCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
174
+ onEnded?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
175
+ onEndedCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
176
+ onLoadedData?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
177
+ onLoadedDataCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
178
+ onLoadedMetadata?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
179
+ onLoadedMetadataCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
180
+ onLoadStart?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
181
+ onLoadStartCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
182
+ onPause?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
183
+ onPauseCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
184
+ onPlay?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
185
+ onPlayCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
186
+ onPlaying?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
187
+ onPlayingCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
188
+ onProgress?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
189
+ onProgressCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
190
+ onRateChange?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
191
+ onRateChangeCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
192
+ onSeeked?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
193
+ onSeekedCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
194
+ onSeeking?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
195
+ onSeekingCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
196
+ onStalled?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
197
+ onStalledCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
198
+ onSuspend?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
199
+ onSuspendCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
200
+ onTimeUpdate?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
201
+ onTimeUpdateCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
202
+ onVolumeChange?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
203
+ onVolumeChangeCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
204
+ onWaiting?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
205
+ onWaitingCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
206
+ onAuxClick?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
207
+ onAuxClickCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
208
+ onClick?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
209
+ onClickCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
210
+ onContextMenu?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
211
+ onContextMenuCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
212
+ onDoubleClick?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
213
+ onDoubleClickCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
214
+ onDrag?: import("react").DragEventHandler<HTMLDivElement> | undefined;
215
+ onDragCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
216
+ onDragEnd?: import("react").DragEventHandler<HTMLDivElement> | undefined;
217
+ onDragEndCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
218
+ onDragEnter?: import("react").DragEventHandler<HTMLDivElement> | undefined;
219
+ onDragEnterCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
220
+ onDragExit?: import("react").DragEventHandler<HTMLDivElement> | undefined;
221
+ onDragExitCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
222
+ onDragLeave?: import("react").DragEventHandler<HTMLDivElement> | undefined;
223
+ onDragLeaveCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
224
+ onDragOver?: import("react").DragEventHandler<HTMLDivElement> | undefined;
225
+ onDragOverCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
226
+ onDragStart?: import("react").DragEventHandler<HTMLDivElement> | undefined;
227
+ onDragStartCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
228
+ onDrop?: import("react").DragEventHandler<HTMLDivElement> | undefined;
229
+ onDropCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
230
+ onMouseDown?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
231
+ onMouseDownCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
232
+ onMouseEnter?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
233
+ onMouseLeave?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
234
+ onMouseMove?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
235
+ onMouseMoveCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
236
+ onMouseOut?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
237
+ onMouseOutCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
238
+ onMouseOver?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
239
+ onMouseOverCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
240
+ onMouseUp?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
241
+ onMouseUpCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
242
+ onSelect?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
243
+ onSelectCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
244
+ onTouchCancel?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
245
+ onTouchCancelCapture?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
246
+ onTouchEnd?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
247
+ onTouchEndCapture?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
248
+ onTouchMove?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
249
+ onTouchMoveCapture?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
250
+ onTouchStart?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
251
+ onTouchStartCapture?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
252
+ onPointerDown?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
253
+ onPointerDownCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
254
+ onPointerMove?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
255
+ onPointerMoveCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
256
+ onPointerUp?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
257
+ onPointerUpCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
258
+ onPointerCancel?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
259
+ onPointerCancelCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
260
+ onPointerEnter?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
261
+ onPointerEnterCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
262
+ onPointerLeave?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
263
+ onPointerLeaveCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
264
+ onPointerOver?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
265
+ onPointerOverCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
266
+ onPointerOut?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
267
+ onPointerOutCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
268
+ onGotPointerCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
269
+ onGotPointerCaptureCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
270
+ onLostPointerCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
271
+ onLostPointerCaptureCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
272
+ onScroll?: import("react").UIEventHandler<HTMLDivElement> | undefined;
273
+ onScrollCapture?: import("react").UIEventHandler<HTMLDivElement> | undefined;
274
+ onWheel?: import("react").WheelEventHandler<HTMLDivElement> | undefined;
275
+ onWheelCapture?: import("react").WheelEventHandler<HTMLDivElement> | undefined;
276
+ onAnimationStart?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
277
+ onAnimationStartCapture?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
278
+ onAnimationEnd?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
279
+ onAnimationEndCapture?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
280
+ onAnimationIteration?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
281
+ onAnimationIterationCapture?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
282
+ onTransitionEnd?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
283
+ onTransitionEndCapture?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
284
+ ref?: import("react").Ref<HTMLDivElement> | undefined;
285
+ key?: import("react").Key | null | undefined;
286
+ } | {
287
+ getItemLabel: TabsPropGetItemLabel<TabsItemDefault>;
288
+ getItemIcon: TabsPropGetItemIcon<TabsItemDefault>;
289
+ getItemLeftIcon: TabsPropGetItemIcon<TabsItemDefault>;
290
+ getItemRightIcon: TabsPropGetItemIcon<TabsItemDefault>;
291
+ getItemLeftSide: TabsPropGetItemSide<TabsItemDefault>;
292
+ getItemRightSide: TabsPropGetItemSide<TabsItemDefault>;
293
+ getItemDisabled: TabsPropGetItemDisabled<TabsItemDefault>;
294
+ getItemAs: TabsPropGetItemAs<TabsItemDefault>;
295
+ getItemAttributes: TabsPropGetItemAttributes<TabsItemDefault>;
296
+ getItemRef: TabsPropGetItemRef<TabsItemDefault>;
297
+ size?: "s" | "m" | "xs" | undefined;
298
+ onlyIcon?: boolean | undefined;
299
+ view?: "clear" | "bordered" | undefined;
300
+ iconSize?: "s" | "m" | "xs" | "l" | undefined;
301
+ items: TabsItemDefault[];
302
+ value?: TabsItemDefault | null | undefined;
303
+ children?: undefined;
304
+ onChange: import("./types").TabsPropOnChange<TabsItemDefault>;
305
+ renderItem?: import("./types").RenderItem<TabsItemDefault> | undefined;
306
+ disabled?: boolean | undefined;
307
+ linePosition?: "top" | "bottom" | undefined;
308
+ fitMode?: "dropdown" | undefined;
309
+ withScrollButtons?: undefined;
29
310
  slot?: string | undefined;
30
311
  style?: import("react").CSSProperties | undefined;
31
312
  title?: string | undefined;
@@ -305,6 +586,7 @@ export declare const withDefaultGetters: (props: TabsProps) => {
305
586
  disabled?: boolean | undefined;
306
587
  linePosition: "left" | "right";
307
588
  fitMode?: undefined;
589
+ withScrollButtons?: undefined;
308
590
  slot?: string | undefined;
309
591
  style?: import("react").CSSProperties | undefined;
310
592
  title?: string | undefined;
@@ -67,6 +67,7 @@ export declare type TabsFitModeWrapperProps<ITEM> = {
67
67
  onChange: TabsPropOnChange<ITEM>;
68
68
  tabRefs: Array<React.RefObject<HTMLElement>>;
69
69
  size: TabsPropSize;
70
+ withScrollButtons?: boolean;
70
71
  };
71
72
  export declare type TabsProps<ITEM = TabsItemDefault> = PropsWithHTMLAttributesAndRef<{
72
73
  size?: TabsPropSize;
@@ -92,12 +93,18 @@ export declare type TabsProps<ITEM = TabsItemDefault> = PropsWithHTMLAttributesA
92
93
  * @deprecated since version 4.11.0 use getItemLeftIcon
93
94
  */
94
95
  getItemIcon?: TabsPropGetItemIcon<ITEM>;
95
- } & ({
96
+ } & (({
96
97
  linePosition?: Extract<TabsPropLinePosition, 'bottom' | 'top'>;
97
- fitMode?: 'dropdown' | 'scroll';
98
+ } & ({
99
+ fitMode?: 'scroll';
100
+ withScrollButtons?: boolean;
98
101
  } | {
102
+ fitMode?: 'dropdown';
103
+ withScrollButtons?: never;
104
+ })) | {
99
105
  linePosition: Extract<TabsPropLinePosition, 'left' | 'right'>;
100
106
  fitMode?: never;
107
+ withScrollButtons?: never;
101
108
  }), HTMLDivElement> & (ITEM extends {
102
109
  label: TabsItemDefault['label'];
103
110
  } ? {} : {
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":["tabsSizes","tabsDefaultSize","tabsViews","tabsDefaultView","tabsLinePositions","tabsDefaultLinePosition","tabsFitModes","tabsDefaultFitMode"],"sources":["../../../../../src/components/Tabs/types.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { AsAttributes, AsTags } from '##/utils/types/AsTags';\nimport { PropsWithAsAttributes } from '##/utils/types/PropsWithAsAttributes';\n\nimport { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';\n\nexport type TabDimensions = {\n size: number;\n gap: number;\n};\n\nexport type TabsItemDefault = {\n label: string | number;\n leftIcon?: IconComponent;\n rightIcon?: IconComponent;\n rightSide?: React.ReactNode;\n leftSide?: React.ReactNode;\n disabled?: boolean;\n as?: AsTags;\n ref?: React.RefObject<HTMLElement>;\n attributes?: AsAttributes;\n\n /**\n * @deprecated since version 4.11.0 use leftIcon\n */\n icon?: IconComponent;\n};\n\nexport const tabsSizes = ['m', 's', 'xs'] as const;\nexport type TabsPropSize = typeof tabsSizes[number];\nexport const tabsDefaultSize: TabsPropSize = tabsSizes[0];\n\nexport const tabsViews = ['bordered', 'clear'] as const;\nexport type TabsPropView = typeof tabsViews[number];\nexport const tabsDefaultView: TabsPropView = tabsViews[0];\n\nexport const tabsLinePositions = ['bottom', 'top', 'left', 'right'] as const;\nexport type TabsPropLinePosition = typeof tabsLinePositions[number];\nexport const tabsDefaultLinePosition: TabsPropLinePosition = 'bottom';\n\nexport const tabsFitModes = ['scroll', 'dropdown'] as const;\nexport type TabsPropFitMode = typeof tabsFitModes[number];\nexport const tabsDefaultFitMode: TabsPropFitMode = 'dropdown';\n\nexport type TabsPropGetItemLabel<ITEM> = (item: ITEM) => string | number;\nexport type TabsPropGetItemChecked<ITEM> = (item: ITEM) => boolean | undefined;\nexport type TabsPropGetItemIcon<ITEM> = (\n item: ITEM,\n) => IconComponent | undefined;\nexport type TabsPropGetItemSide<ITEM> = (\n item: ITEM,\n) => React.ReactNode | undefined;\n\nexport type TabsPropGetItemAs<ITEM> = (item: ITEM) => AsTags | undefined;\nexport type TabsPropGetItemAttributes<ITEM> = (\n item: ITEM,\n) => TabsItemDefault['attributes'];\nexport type TabsPropGetItemRef<ITEM> = (\n item: ITEM,\n) => React.RefObject<HTMLElement> | undefined;\n\nexport type TabsPropGetItemDisabled<ITEM> = (item: ITEM) => boolean | undefined;\n\nexport type TabsPropOnChange<ITEM> = (\n value: ITEM,\n props: {\n e: React.MouseEvent | React.KeyboardEvent;\n },\n) => void;\n\nexport type RenderItemProps<ITEM> = {\n item: ITEM;\n onChange: React.MouseEventHandler;\n checked: boolean;\n size: TabsPropSize;\n iconSize?: IconPropSize;\n onlyIcon?: boolean;\n label: string;\n tabRef?: React.RefObject<HTMLElement>;\n renderInDropdown?: boolean;\n} & Omit<TabsItemDefault, 'label' | 'ref'>;\n\nexport type RenderItem<ITEM> = (\n props: RenderItemProps<ITEM>,\n) => React.ReactElement | null;\n\nexport type TabsFitModeWrapperProps<ITEM> = {\n items: ITEM[];\n tabsDimensions: TabDimensions[];\n getItemLabel: TabsPropGetItemLabel<ITEM>;\n getItemChecked: TabsPropGetItemChecked<ITEM>;\n renderItem: (item: ITEM) => React.ReactNode;\n renderItemsList: RenderItemsListProp;\n onChange: TabsPropOnChange<ITEM>;\n tabRefs: Array<React.RefObject<HTMLElement>>;\n size: TabsPropSize;\n};\n\nexport type TabsProps<ITEM = TabsItemDefault> = PropsWithHTMLAttributesAndRef<\n {\n size?: TabsPropSize;\n onlyIcon?: boolean;\n view?: TabsPropView;\n iconSize?: IconPropSize;\n items: ITEM[];\n value?: ITEM | null;\n getItemLabel?: TabsPropGetItemLabel<ITEM>;\n getItemLeftIcon?: TabsPropGetItemIcon<ITEM>;\n getItemRightIcon?: TabsPropGetItemIcon<ITEM>;\n getItemLeftSide?: TabsPropGetItemSide<ITEM>;\n getItemRightSide?: TabsPropGetItemSide<ITEM>;\n getItemDisabled?: TabsPropGetItemDisabled<ITEM>;\n getItemAs?: TabsPropGetItemAs<ITEM>;\n getItemAttributes?: TabsPropGetItemAttributes<ITEM>;\n getItemRef?: TabsPropGetItemRef<ITEM>;\n children?: never;\n onChange: TabsPropOnChange<ITEM>;\n renderItem?: RenderItem<ITEM>;\n disabled?: boolean;\n\n /**\n * @deprecated since version 4.11.0 use getItemLeftIcon\n */\n getItemIcon?: TabsPropGetItemIcon<ITEM>;\n } & (\n | {\n linePosition?: Extract<TabsPropLinePosition, 'bottom' | 'top'>;\n fitMode?: 'dropdown' | 'scroll';\n }\n | {\n linePosition: Extract<TabsPropLinePosition, 'left' | 'right'>;\n fitMode?: never;\n }\n ),\n HTMLDivElement\n> &\n (ITEM extends { label: TabsItemDefault['label'] }\n ? {}\n : {\n getItemLabel: TabsPropGetItemLabel<ITEM>;\n });\n\nexport type TabsComponent = <ITEM>(\n props: TabsProps<ITEM>,\n) => React.ReactElement | null;\n\nexport type TabsTabProps<AS extends AsTags = 'button'> = PropsWithAsAttributes<\n {\n onChange: React.MouseEventHandler;\n checked: boolean;\n size: TabsPropSize;\n iconSize?: IconPropSize;\n onlyIcon?: boolean;\n className?: string;\n label: string;\n tabRef?: React.RefObject<HTMLElement>;\n renderInDropdown?: boolean;\n } & Omit<TabsItemDefault, 'label' | 'ref' | 'attributes'>,\n AS\n>;\n\nexport type TabsTabComponent = <AS extends AsTags = 'button'>(\n props: TabsTabProps<AS>,\n) => React.ReactElement | null;\n\nexport type TabsMoreItemsProps<ITEM = TabsItemDefault> =\n PropsWithHTMLAttributesAndRef<\n {\n items: ITEM[];\n renderItem: (\n item: ITEM,\n onClick: () => void,\n renderInDropdown?: boolean,\n ) => React.ReactNode;\n getItemLabel: TabsPropGetItemLabel<ITEM>;\n onChange: TabsPropOnChange<ITEM>;\n height: number;\n size: TabsPropSize;\n } & React.RefAttributes<HTMLDivElement>,\n HTMLDivElement\n >;\n\nexport type TabsMoreItemsComponent = <ITEM>(\n props: TabsMoreItemsProps<ITEM>,\n) => React.ReactElement | null;\n\nexport type RenderItemsListProp = (props: {\n visibleIndexes?: number[];\n withRunningLine?: boolean;\n getTabClassName?: (idx: number) => string | undefined;\n}) => React.ReactNode;\n\nexport type TabsDirection = 'horizontal' | 'vertical';\n"],"mappings":"AA8BA,MAAO,IAAMA,UAAS,CAAG,CAAC,GAAD,CAAM,GAAN,CAAW,IAAX,CAAlB,CAEP,MAAO,IAAMC,gBAA6B,CAAGD,SAAS,CAAC,CAAD,CAA/C,CAEP,MAAO,IAAME,UAAS,CAAG,CAAC,UAAD,CAAa,OAAb,CAAlB,CAEP,MAAO,IAAMC,gBAA6B,CAAGD,SAAS,CAAC,CAAD,CAA/C,CAEP,MAAO,IAAME,kBAAiB,CAAG,CAAC,QAAD,CAAW,KAAX,CAAkB,MAAlB,CAA0B,OAA1B,CAA1B,CAEP,MAAO,IAAMC,wBAA6C,CAAG,QAAtD,CAEP,MAAO,IAAMC,aAAY,CAAG,CAAC,QAAD,CAAW,UAAX,CAArB,CAEP,MAAO,IAAMC,mBAAmC,CAAG,UAA5C"}
1
+ {"version":3,"file":"types.js","names":["tabsSizes","tabsDefaultSize","tabsViews","tabsDefaultView","tabsLinePositions","tabsDefaultLinePosition","tabsFitModes","tabsDefaultFitMode"],"sources":["../../../../../src/components/Tabs/types.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { AsAttributes, AsTags } from '##/utils/types/AsTags';\nimport { PropsWithAsAttributes } from '##/utils/types/PropsWithAsAttributes';\n\nimport { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';\n\nexport type TabDimensions = {\n size: number;\n gap: number;\n};\n\nexport type TabsItemDefault = {\n label: string | number;\n leftIcon?: IconComponent;\n rightIcon?: IconComponent;\n rightSide?: React.ReactNode;\n leftSide?: React.ReactNode;\n disabled?: boolean;\n as?: AsTags;\n ref?: React.RefObject<HTMLElement>;\n attributes?: AsAttributes;\n\n /**\n * @deprecated since version 4.11.0 use leftIcon\n */\n icon?: IconComponent;\n};\n\nexport const tabsSizes = ['m', 's', 'xs'] as const;\nexport type TabsPropSize = typeof tabsSizes[number];\nexport const tabsDefaultSize: TabsPropSize = tabsSizes[0];\n\nexport const tabsViews = ['bordered', 'clear'] as const;\nexport type TabsPropView = typeof tabsViews[number];\nexport const tabsDefaultView: TabsPropView = tabsViews[0];\n\nexport const tabsLinePositions = ['bottom', 'top', 'left', 'right'] as const;\nexport type TabsPropLinePosition = typeof tabsLinePositions[number];\nexport const tabsDefaultLinePosition: TabsPropLinePosition = 'bottom';\n\nexport const tabsFitModes = ['scroll', 'dropdown'] as const;\nexport type TabsPropFitMode = typeof tabsFitModes[number];\nexport const tabsDefaultFitMode: TabsPropFitMode = 'dropdown';\n\nexport type TabsPropGetItemLabel<ITEM> = (item: ITEM) => string | number;\nexport type TabsPropGetItemChecked<ITEM> = (item: ITEM) => boolean | undefined;\nexport type TabsPropGetItemIcon<ITEM> = (\n item: ITEM,\n) => IconComponent | undefined;\nexport type TabsPropGetItemSide<ITEM> = (\n item: ITEM,\n) => React.ReactNode | undefined;\n\nexport type TabsPropGetItemAs<ITEM> = (item: ITEM) => AsTags | undefined;\nexport type TabsPropGetItemAttributes<ITEM> = (\n item: ITEM,\n) => TabsItemDefault['attributes'];\nexport type TabsPropGetItemRef<ITEM> = (\n item: ITEM,\n) => React.RefObject<HTMLElement> | undefined;\n\nexport type TabsPropGetItemDisabled<ITEM> = (item: ITEM) => boolean | undefined;\n\nexport type TabsPropOnChange<ITEM> = (\n value: ITEM,\n props: {\n e: React.MouseEvent | React.KeyboardEvent;\n },\n) => void;\n\nexport type RenderItemProps<ITEM> = {\n item: ITEM;\n onChange: React.MouseEventHandler;\n checked: boolean;\n size: TabsPropSize;\n iconSize?: IconPropSize;\n onlyIcon?: boolean;\n label: string;\n tabRef?: React.RefObject<HTMLElement>;\n renderInDropdown?: boolean;\n} & Omit<TabsItemDefault, 'label' | 'ref'>;\n\nexport type RenderItem<ITEM> = (\n props: RenderItemProps<ITEM>,\n) => React.ReactElement | null;\n\nexport type TabsFitModeWrapperProps<ITEM> = {\n items: ITEM[];\n tabsDimensions: TabDimensions[];\n getItemLabel: TabsPropGetItemLabel<ITEM>;\n getItemChecked: TabsPropGetItemChecked<ITEM>;\n renderItem: (item: ITEM) => React.ReactNode;\n renderItemsList: RenderItemsListProp;\n onChange: TabsPropOnChange<ITEM>;\n tabRefs: Array<React.RefObject<HTMLElement>>;\n size: TabsPropSize;\n withScrollButtons?: boolean;\n};\n\nexport type TabsProps<ITEM = TabsItemDefault> = PropsWithHTMLAttributesAndRef<\n {\n size?: TabsPropSize;\n onlyIcon?: boolean;\n view?: TabsPropView;\n iconSize?: IconPropSize;\n items: ITEM[];\n value?: ITEM | null;\n getItemLabel?: TabsPropGetItemLabel<ITEM>;\n getItemLeftIcon?: TabsPropGetItemIcon<ITEM>;\n getItemRightIcon?: TabsPropGetItemIcon<ITEM>;\n getItemLeftSide?: TabsPropGetItemSide<ITEM>;\n getItemRightSide?: TabsPropGetItemSide<ITEM>;\n getItemDisabled?: TabsPropGetItemDisabled<ITEM>;\n getItemAs?: TabsPropGetItemAs<ITEM>;\n getItemAttributes?: TabsPropGetItemAttributes<ITEM>;\n getItemRef?: TabsPropGetItemRef<ITEM>;\n children?: never;\n onChange: TabsPropOnChange<ITEM>;\n renderItem?: RenderItem<ITEM>;\n disabled?: boolean;\n\n /**\n * @deprecated since version 4.11.0 use getItemLeftIcon\n */\n getItemIcon?: TabsPropGetItemIcon<ITEM>;\n } & (\n | ({\n linePosition?: Extract<TabsPropLinePosition, 'bottom' | 'top'>;\n } & (\n | {\n fitMode?: 'scroll';\n withScrollButtons?: boolean;\n }\n | {\n fitMode?: 'dropdown';\n withScrollButtons?: never;\n }\n ))\n | {\n linePosition: Extract<TabsPropLinePosition, 'left' | 'right'>;\n fitMode?: never;\n withScrollButtons?: never;\n }\n ),\n HTMLDivElement\n> &\n (ITEM extends { label: TabsItemDefault['label'] }\n ? {}\n : {\n getItemLabel: TabsPropGetItemLabel<ITEM>;\n });\n\nexport type TabsComponent = <ITEM>(\n props: TabsProps<ITEM>,\n) => React.ReactElement | null;\n\nexport type TabsTabProps<AS extends AsTags = 'button'> = PropsWithAsAttributes<\n {\n onChange: React.MouseEventHandler;\n checked: boolean;\n size: TabsPropSize;\n iconSize?: IconPropSize;\n onlyIcon?: boolean;\n className?: string;\n label: string;\n tabRef?: React.RefObject<HTMLElement>;\n renderInDropdown?: boolean;\n } & Omit<TabsItemDefault, 'label' | 'ref' | 'attributes'>,\n AS\n>;\n\nexport type TabsTabComponent = <AS extends AsTags = 'button'>(\n props: TabsTabProps<AS>,\n) => React.ReactElement | null;\n\nexport type TabsMoreItemsProps<ITEM = TabsItemDefault> =\n PropsWithHTMLAttributesAndRef<\n {\n items: ITEM[];\n renderItem: (\n item: ITEM,\n onClick: () => void,\n renderInDropdown?: boolean,\n ) => React.ReactNode;\n getItemLabel: TabsPropGetItemLabel<ITEM>;\n onChange: TabsPropOnChange<ITEM>;\n height: number;\n size: TabsPropSize;\n } & React.RefAttributes<HTMLDivElement>,\n HTMLDivElement\n >;\n\nexport type TabsMoreItemsComponent = <ITEM>(\n props: TabsMoreItemsProps<ITEM>,\n) => React.ReactElement | null;\n\nexport type RenderItemsListProp = (props: {\n visibleIndexes?: number[];\n withRunningLine?: boolean;\n getTabClassName?: (idx: number) => string | undefined;\n}) => React.ReactNode;\n\nexport type TabsDirection = 'horizontal' | 'vertical';\n"],"mappings":"AA8BA,MAAO,IAAMA,UAAS,CAAG,CAAC,GAAD,CAAM,GAAN,CAAW,IAAX,CAAlB,CAEP,MAAO,IAAMC,gBAA6B,CAAGD,SAAS,CAAC,CAAD,CAA/C,CAEP,MAAO,IAAME,UAAS,CAAG,CAAC,UAAD,CAAa,OAAb,CAAlB,CAEP,MAAO,IAAMC,gBAA6B,CAAGD,SAAS,CAAC,CAAD,CAA/C,CAEP,MAAO,IAAME,kBAAiB,CAAG,CAAC,QAAD,CAAW,KAAX,CAAkB,MAAlB,CAA0B,OAA1B,CAA1B,CAEP,MAAO,IAAMC,wBAA6C,CAAG,QAAtD,CAEP,MAAO,IAAMC,aAAY,CAAG,CAAC,QAAD,CAAW,UAAX,CAArB,CAEP,MAAO,IAAMC,mBAAmC,CAAG,UAA5C"}
@@ -1 +1 @@
1
- .TextField{--caption-margin-left:calc(var(--input-space) + var(--control-border-width));--counter-button-icon-color:var(--color-control-typo-ghost);--counter-button-background:transparent;--counter-offset:0;--clear-button-color:var(--color-control-typo-clear);display:inline-flex;position:relative;width:100%}.TextField_size_xs{--label-offset:var(--space-2xs);--caption-offset:var(--space-2xs);--input-height:var(--control-height-xs);--input-font-size:var(--control-text-size-xs);--input-space:calc(var(--control-space-xs)*0.5)}.TextField_size_xs .TextField-InputContainer_form_brickRound,.TextField_size_xs .TextField-InputContainer_form_clearRound,.TextField_size_xs .TextField-InputContainer_form_round{--counter-offset:calc(var(--space-xs) - var(--space-3xs))}.TextField_size_s{--label-offset:var(--space-2xs);--caption-offset:var(--space-2xs);--input-height:var(--control-height-s);--input-font-size:var(--control-text-size-s);--input-space:calc(var(--control-space-s)*0.5)}.TextField_size_s .TextField-InputContainer_form_brickRound,.TextField_size_s .TextField-InputContainer_form_clearRound,.TextField_size_s .TextField-InputContainer_form_round{--counter-offset:var(--space-xs)}.TextField_size_m{--label-offset:var(--space-xs);--caption-offset:var(--space-xs);--input-height:var(--control-height-m);--input-font-size:var(--control-text-size-m);--input-space:calc(var(--control-space-m)*0.5)}.TextField_size_m .TextField-InputContainer_form_brickRound,.TextField_size_m .TextField-InputContainer_form_clearRound,.TextField_size_m .TextField-InputContainer_form_round{--counter-offset:calc(var(--space-s) - var(--space-3xs))}.TextField_size_l{--label-offset:var(--space-xs);--caption-offset:var(--space-xs);--input-height:var(--control-height-l);--input-font-size:var(--control-text-size-l);--input-space:calc(var(--control-space-l)*0.5)}.TextField_size_l .TextField-InputContainer_form_brickRound,.TextField_size_l .TextField-InputContainer_form_clearRound,.TextField_size_l .TextField-InputContainer_form_round{--counter-offset:var(--space-s)}.TextField_labelPosition_top{flex-direction:column}.TextField_labelPosition_top>:not(:last-child){margin-bottom:var(--label-offset)}.TextField_labelPosition_left{flex-direction:row}.TextField_labelPosition_left .TextField-Label{align-items:center;display:inline-flex;height:var(--input-height)}.TextField_labelPosition_left>:not(:last-child){margin-right:var(--space-s)}.TextField-Body{display:inline-flex;flex-direction:column;width:100%}.TextField-Body .TextField-Caption{margin-left:var(--caption-margin-left);margin-top:var(--caption-offset)}.TextField_view_clear .TextField-Caption{--caption-margin-left:0}.TextField-InputContainer{box-sizing:border-box;display:inline-flex;font-family:var(--font-primary);font-weight:var(--font-weight-text-regular);max-width:100%;min-height:var(--input-height);position:relative;transition:border-color .15s,box-shadow .15s,background-color .15s}.TextField-InputContainer_disabled{--counter-button-background:var(--color-control-bg-disable);--counter-button-icon-color:var(--color-control-typo-disable)}.TextField-InputContainer_view_clear,.TextField-InputContainer_view_clear:focus,.TextField-InputContainer_view_clear:hover{color:var(--color-control-typo-default);padding:0}.TextField-InputContainer_view_clear.TextField-InputContainer_disabled .TextField-Input,.TextField-InputContainer_view_clear:focus.TextField-InputContainer_disabled .TextField-Input,.TextField-InputContainer_view_clear:hover.TextField-InputContainer_disabled .TextField-Input{color:var(--color-control-typo-disable);pointer-events:all}.TextField-InputContainer_view_clear.TextField-InputContainer_disabled .TextField-Input:-webkit-autofill,.TextField-InputContainer_view_clear.TextField-InputContainer_disabled .TextField-Input:-webkit-autofill:focus,.TextField-InputContainer_view_clear.TextField-InputContainer_disabled .TextField-Input:-webkit-autofill:hover,.TextField-InputContainer_view_clear:focus.TextField-InputContainer_disabled .TextField-Input:-webkit-autofill,.TextField-InputContainer_view_clear:focus.TextField-InputContainer_disabled .TextField-Input:-webkit-autofill:focus,.TextField-InputContainer_view_clear:focus.TextField-InputContainer_disabled .TextField-Input:-webkit-autofill:hover,.TextField-InputContainer_view_clear:hover.TextField-InputContainer_disabled .TextField-Input:-webkit-autofill,.TextField-InputContainer_view_clear:hover.TextField-InputContainer_disabled .TextField-Input:-webkit-autofill:focus,.TextField-InputContainer_view_clear:hover.TextField-InputContainer_disabled .TextField-Input:-webkit-autofill:hover{-webkit-text-fill-color:var(--color-control-typo-disable)}.TextField-InputContainer_view_clear.TextField-InputContainer_disabled .TextField-Input::-moz-placeholder,.TextField-InputContainer_view_clear:focus.TextField-InputContainer_disabled .TextField-Input::-moz-placeholder,.TextField-InputContainer_view_clear:hover.TextField-InputContainer_disabled .TextField-Input::-moz-placeholder{color:var(--color-control-typo-disable)}.TextField-InputContainer_view_clear.TextField-InputContainer_disabled .TextField-Input::placeholder,.TextField-InputContainer_view_clear:focus.TextField-InputContainer_disabled .TextField-Input::placeholder,.TextField-InputContainer_view_clear:hover.TextField-InputContainer_disabled .TextField-Input::placeholder{color:var(--color-control-typo-disable)}.TextField-InputContainer_view_clear.TextField-InputContainer_disabled .TextField-Side_type_string,.TextField-InputContainer_view_clear.TextField-InputContainer_disabled.TextField-InputContainer_withValue .TextField-Side_type_string,.TextField-InputContainer_view_clear:focus.TextField-InputContainer_disabled .TextField-Side_type_string,.TextField-InputContainer_view_clear:focus.TextField-InputContainer_disabled.TextField-InputContainer_withValue .TextField-Side_type_string,.TextField-InputContainer_view_clear:hover.TextField-InputContainer_disabled .TextField-Side_type_string,.TextField-InputContainer_view_clear:hover.TextField-InputContainer_disabled.TextField-InputContainer_withValue .TextField-Side_type_string{color:var(--color-control-typo-disable)}.TextField-InputContainer_view_clear.TextField-InputContainer_disabled.TextField-InputContainer .TextField-Icon,.TextField-InputContainer_view_clear.TextField-InputContainer_disabled.TextField-InputContainer_withValue .TextField-Icon,.TextField-InputContainer_view_clear:focus.TextField-InputContainer_disabled.TextField-InputContainer .TextField-Icon,.TextField-InputContainer_view_clear:focus.TextField-InputContainer_disabled.TextField-InputContainer_withValue .TextField-Icon,.TextField-InputContainer_view_clear:hover.TextField-InputContainer_disabled.TextField-InputContainer .TextField-Icon,.TextField-InputContainer_view_clear:hover.TextField-InputContainer_disabled.TextField-InputContainer_withValue .TextField-Icon{color:var(--color-control-typo-disable)}.TextField-InputContainer_view_default{--container-border-color:var(--color-control-bg-border-default);background:var(--color-control-bg-default);border:var(--control-border-width) solid var(--container-border-color);border-radius:var(--control-radius);color:var(--color-control-typo-default);overflow-x:hidden;padding:0 var(--input-space)}.TextField-InputContainer_view_default:hover{border-color:var(--color-control-bg-border-default-hover)}.TextField-InputContainer_view_default.TextField-InputContainer_status_alert{--container-border-color:var(--color-bg-alert)}.TextField-InputContainer_view_default.TextField-InputContainer_status_success{--container-border-color:var(--color-bg-success)}.TextField-InputContainer_view_default.TextField-InputContainer_status_warning{--container-border-color:var(--color-bg-warning)}.TextField-InputContainer_view_default .TextField-Input{color:var(--color-control-typo-default)}.TextField-InputContainer_view_default .TextField-Input::-moz-placeholder{color:var(--color-control-typo-placeholder)}.TextField-InputContainer_view_default .TextField-Input::placeholder{color:var(--color-control-typo-placeholder)}.TextField-InputContainer_view_default .TextField-Input:-webkit-autofill,.TextField-InputContainer_view_default .TextField-Input:-webkit-autofill:focus,.TextField-InputContainer_view_default .TextField-Input:-webkit-autofill:hover{-webkit-text-fill-color:var(--color-control-typo-default)}.TextField-InputContainer_view_default .TextField-Side_type_string{color:var(--color-control-typo-placeholder)}.TextField-InputContainer_view_default.TextField-InputContainer_focus{border-color:var(--color-control-bg-border-focus);outline:none;z-index:1}.TextField-InputContainer_view_default.TextField-InputContainer_focus.TextField-InputContainer_form_clearClear{box-shadow:var(--control-border-width) 0 var(--color-control-bg-border-focus),calc(var(--control-border-width)*-1) 0 var(--color-control-bg-border-focus)}.TextField-InputContainer_view_default.TextField-InputContainer_focus.TextField-InputContainer_form_brickClear,.TextField-InputContainer_view_default.TextField-InputContainer_focus.TextField-InputContainer_form_defaultClear,.TextField-InputContainer_view_default.TextField-InputContainer_focus.TextField-InputContainer_form_roundClear{box-shadow:var(--control-border-width) 0 var(--color-control-bg-border-focus)}.TextField-InputContainer_view_default.TextField-InputContainer_focus.TextField-InputContainer_form_clearBrick,.TextField-InputContainer_view_default.TextField-InputContainer_focus.TextField-InputContainer_form_clearDefault,.TextField-InputContainer_view_default.TextField-InputContainer_focus.TextField-InputContainer_form_clearRound{box-shadow:calc(var(--control-border-width)*-1) 0 var(--color-control-bg-border-focus)}.TextField-InputContainer_view_default.TextField-InputContainer_disabled{--clear-button-color:var(--color-control-typo-disable);background:var(--color-control-bg-disable);border-color:var(--color-control-bg-border-disable)}.TextField-InputContainer_view_default.TextField-InputContainer_disabled .TextField-Input{color:var(--color-control-typo-disable);pointer-events:all}.TextField-InputContainer_view_default.TextField-InputContainer_disabled .TextField-Input::-moz-placeholder{color:var(--color-control-typo-disable)}.TextField-InputContainer_view_default.TextField-InputContainer_disabled .TextField-Input::placeholder{color:var(--color-control-typo-disable)}.TextField-InputContainer_view_default.TextField-InputContainer_disabled .TextField-Side_type_string,.TextField-InputContainer_view_default.TextField-InputContainer_disabled.TextField-InputContainer .TextField-Icon,.TextField-InputContainer_view_default.TextField-InputContainer_disabled.TextField-InputContainer_withValue .TextField-Icon,.TextField-InputContainer_view_default.TextField-InputContainer_disabled.TextField-InputContainer_withValue .TextField-Side_type_string{color:var(--color-control-typo-disable)}.TextField-InputContainer_form_defaultClear{border-right-width:0}.TextField-InputContainer_form_defaultBrick,.TextField-InputContainer_form_defaultClear{border-radius:var(--control-radius) 0 0 var(--control-radius)}.TextField-InputContainer_form_round{border-radius:calc(var(--input-height)/2);padding-left:calc(var(--input-space)*1.6);padding-right:calc(var(--input-space)*1.6)}.TextField-InputContainer_form_roundBrick{border-radius:calc(var(--input-height)/2) 0 0 calc(var(--input-height)/2);padding-left:calc(var(--input-space)*1.6)}.TextField-InputContainer_form_roundClear{border-radius:calc(var(--input-height)/2) 0 0 calc(var(--input-height)/2);border-right-width:0;padding-left:calc(var(--input-space)*1.6)}.TextField-InputContainer_form_brick{border-radius:0}.TextField-InputContainer_form_brickDefault{border-radius:0 var(--control-radius) var(--control-radius) 0}.TextField-InputContainer_form_brickRound{border-radius:0 calc(var(--input-height)/2) calc(var(--input-height)/2) 0;padding-right:calc(var(--input-space)*1.6)}.TextField-InputContainer_form_brickClear{border-radius:0;border-right-width:0}.TextField-InputContainer_form_clearDefault{border-left-width:0;border-radius:0 var(--control-radius) var(--control-radius) 0}.TextField-InputContainer_form_clearBrick{border-left-width:0;border-radius:0}.TextField-InputContainer_form_clearRound{border-left-width:0;border-radius:0 calc(var(--input-height)/2) calc(var(--input-height)/2) 0;padding-right:calc(var(--input-space)*1.6)}.TextField-InputContainer_form_clearClear{border-width:0;border-bottom-width:var(--control-border-width);border-radius:0;border-top-width:var(--control-border-width)}.TextField-InputContainer_withValue .TextField-Side.TextField-Side_type_icon,.TextField-InputContainer_withValue .TextField-Side.TextField-Side_type_string{color:var(--color-typo-secondary)}.TextField-InputContainer_incrementButtons{padding-right:0}.TextField-InputContainer_type_textarea .TextField-Input{display:block;line-height:var(--line-height-text-m);min-width:0;padding-bottom:calc((var(--input-height) - (var(--control-border-width)*2) - var(--line-height-text-m))/2);padding-top:calc((var(--input-height) - (var(--control-border-width)*2) - var(--line-height-text-m))/2);resize:none}.TextField-Counter{height:calc(var(--input-height) - var(--control-border-width)*2);margin-right:var(--counter-offset)}.TextField-Counter,.TextField-CounterButton{display:inline-flex;flex-direction:column;width:var(--space-xl)}.TextField-CounterButton{align-items:center;background-color:var(--counter-button-background);border:none;color:var(--counter-button-icon-color);cursor:pointer;flex:1;justify-content:center;margin:0;overflow-y:hidden;padding:0;transition:background-color .15s}.TextField-CounterButton_fn_increment{transform:rotate(180deg)}.TextField-ClearButton,.TextField-EyeButton{align-items:center;background-color:transparent;border:none;cursor:pointer;display:flex;flex-direction:row;height:calc(var(--input-height) - var(--control-border-width)*2);justify-content:center;margin:0;margin-left:var(--input-space);padding:0}.TextField-ClearButton{color:var(--clear-button-color)}.TextField-ClearButton:hover{--clear-button-color:var(--color-control-typo-clear-hover)}.TextField-EyeButton{color:var(--color-control-typo-placeholder)}.TextField-EyeButton:hover{color:var(--color-control-typo-clear-hover)}.TextField-ClearButtonIcon{color:var(--color-control-typo-placeholder)}.TextField-Input{background:transparent;border:none;color:currentColor;flex:1;font-family:var(--font-primary);font-size:var(--input-font-size);height:calc(var(--input-height) - var(--control-border-width)*2);min-width:80px;outline:none;padding:0;width:100%}.TextField-Input::-webkit-inner-spin-button,.TextField-Input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.TextField-Input[type=password]::-ms-reveal{display:none}.TextField-Input[type=number]{-moz-appearance:textfield}.TextField-Input:focus{outline:none}.TextField-Input:-webkit-autofill,.TextField-Input:-webkit-autofill:focus,.TextField-Input:-webkit-autofill:hover{border:none;-webkit-box-shadow:inset 0 0 0 1000px transparent;-webkit-transition:background-color 5000s ease-in-out 0s;transition:background-color 5000s ease-in-out 0s}.TextField-Side{align-items:center;display:flex;height:calc(var(--input-height) - var(--control-border-width)*2);overflow:hidden}.TextField-Side_position_left{margin-right:var(--input-space)}.TextField-Side_position_right{margin-left:var(--input-space)}.TextField-Side_type_string{font-size:var(--input-font-size);white-space:nowrap}.TextField-Icon{color:var(--color-control-typo-placeholder)}blockquote,body,code,dd,div,dl,dt,fieldset,form,h1,h2,h3,h4,h5,h6,input,li,p,pre,td,textarea,th,ul{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}abbr,fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:400}ul li{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:400}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,select,textarea{font-family:inherit;font-size:inherit;font-weight:inherit}legend{color:#000}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}img{height:auto;max-width:100%}*{box-sizing:border-box;outline:none}html.Theme.stand--AppTheme{background:var(--color-bg-default);color:var(--color-typo-primary)}@supports (scrollbar-gutter:auto){html.Theme.stand--AppTheme{overflow-y:overlay}html.Theme.stand--AppTheme::-webkit-scrollbar{height:4;width:4}html.Theme.stand--AppTheme::-webkit-scrollbar-thumb{background-color:var(--color-scroll-thumb);border-radius:4px;width:4}html.Theme.stand--AppTheme::-webkit-scrollbar-thumb:hover{background-color:var(--color-scroll-thumb-hover)}}html.Theme.stand--AppTheme_noScroll{overflow:hidden}
1
+ .TextField{--caption-margin-left:calc(var(--input-space) + var(--control-border-width));--counter-button-icon-color:var(--color-control-typo-ghost);--counter-button-background:transparent;--counter-offset:0;--clear-button-color:var(--color-control-typo-clear);display:inline-flex;position:relative;width:100%}.TextField_size_xs{--label-offset:var(--space-2xs);--caption-offset:var(--space-2xs);--input-height:var(--control-height-xs);--input-font-size:var(--control-text-size-xs);--input-space:calc(var(--control-space-xs)*0.5)}.TextField_size_xs .TextField-InputContainer_form_brickRound,.TextField_size_xs .TextField-InputContainer_form_clearRound,.TextField_size_xs .TextField-InputContainer_form_round{--counter-offset:calc(var(--space-xs) - var(--space-3xs))}.TextField_size_s{--label-offset:var(--space-2xs);--caption-offset:var(--space-2xs);--input-height:var(--control-height-s);--input-font-size:var(--control-text-size-s);--input-space:calc(var(--control-space-s)*0.5)}.TextField_size_s .TextField-InputContainer_form_brickRound,.TextField_size_s .TextField-InputContainer_form_clearRound,.TextField_size_s .TextField-InputContainer_form_round{--counter-offset:var(--space-xs)}.TextField_size_m{--label-offset:var(--space-xs);--caption-offset:var(--space-xs);--input-height:var(--control-height-m);--input-font-size:var(--control-text-size-m);--input-space:calc(var(--control-space-m)*0.5)}.TextField_size_m .TextField-InputContainer_form_brickRound,.TextField_size_m .TextField-InputContainer_form_clearRound,.TextField_size_m .TextField-InputContainer_form_round{--counter-offset:calc(var(--space-s) - var(--space-3xs))}.TextField_size_l{--label-offset:var(--space-xs);--caption-offset:var(--space-xs);--input-height:var(--control-height-l);--input-font-size:var(--control-text-size-l);--input-space:calc(var(--control-space-l)*0.5)}.TextField_size_l .TextField-InputContainer_form_brickRound,.TextField_size_l .TextField-InputContainer_form_clearRound,.TextField_size_l .TextField-InputContainer_form_round{--counter-offset:var(--space-s)}.TextField_labelPosition_top{flex-direction:column}.TextField_labelPosition_top>:not(:last-child){margin-bottom:var(--label-offset)}.TextField_labelPosition_left{flex-direction:row}.TextField_labelPosition_left .TextField-Label{align-items:center;display:inline-flex;height:var(--input-height)}.TextField_labelPosition_left>:not(:last-child){margin-right:var(--space-s)}.TextField-Body{display:inline-flex;flex-direction:column;width:100%}.TextField-Body .TextField-Caption{margin-left:var(--caption-margin-left);margin-top:var(--caption-offset)}.TextField_view_clear .TextField-Caption{--caption-margin-left:0}.TextField-InputContainer{box-sizing:border-box;display:inline-flex;font-family:var(--font-primary);font-weight:var(--font-weight-text-regular);max-width:100%;min-height:var(--input-height);position:relative;transition:border-color .15s,box-shadow .15s,background-color .15s}.TextField-InputContainer_disabled{--counter-button-background:var(--color-control-bg-disable);--counter-button-icon-color:var(--color-control-typo-disable)}.TextField-InputContainer_view_clear,.TextField-InputContainer_view_clear:focus,.TextField-InputContainer_view_clear:hover{color:var(--color-control-typo-default);padding:0}.TextField-InputContainer_view_clear.TextField-InputContainer_disabled .TextField-Input,.TextField-InputContainer_view_clear:focus.TextField-InputContainer_disabled .TextField-Input,.TextField-InputContainer_view_clear:hover.TextField-InputContainer_disabled .TextField-Input{color:var(--color-control-typo-disable);pointer-events:all}.TextField-InputContainer_view_clear.TextField-InputContainer_disabled .TextField-Input:-webkit-autofill,.TextField-InputContainer_view_clear.TextField-InputContainer_disabled .TextField-Input:-webkit-autofill:focus,.TextField-InputContainer_view_clear.TextField-InputContainer_disabled .TextField-Input:-webkit-autofill:hover,.TextField-InputContainer_view_clear:focus.TextField-InputContainer_disabled .TextField-Input:-webkit-autofill,.TextField-InputContainer_view_clear:focus.TextField-InputContainer_disabled .TextField-Input:-webkit-autofill:focus,.TextField-InputContainer_view_clear:focus.TextField-InputContainer_disabled .TextField-Input:-webkit-autofill:hover,.TextField-InputContainer_view_clear:hover.TextField-InputContainer_disabled .TextField-Input:-webkit-autofill,.TextField-InputContainer_view_clear:hover.TextField-InputContainer_disabled .TextField-Input:-webkit-autofill:focus,.TextField-InputContainer_view_clear:hover.TextField-InputContainer_disabled .TextField-Input:-webkit-autofill:hover{-webkit-text-fill-color:var(--color-control-typo-disable)}.TextField-InputContainer_view_clear.TextField-InputContainer_disabled .TextField-Input::-moz-placeholder,.TextField-InputContainer_view_clear:focus.TextField-InputContainer_disabled .TextField-Input::-moz-placeholder,.TextField-InputContainer_view_clear:hover.TextField-InputContainer_disabled .TextField-Input::-moz-placeholder{color:var(--color-control-typo-disable)}.TextField-InputContainer_view_clear.TextField-InputContainer_disabled .TextField-Input::placeholder,.TextField-InputContainer_view_clear:focus.TextField-InputContainer_disabled .TextField-Input::placeholder,.TextField-InputContainer_view_clear:hover.TextField-InputContainer_disabled .TextField-Input::placeholder{color:var(--color-control-typo-disable)}.TextField-InputContainer_view_clear.TextField-InputContainer_disabled .TextField-Side_type_string,.TextField-InputContainer_view_clear.TextField-InputContainer_disabled.TextField-InputContainer_withValue .TextField-Side_type_string,.TextField-InputContainer_view_clear:focus.TextField-InputContainer_disabled .TextField-Side_type_string,.TextField-InputContainer_view_clear:focus.TextField-InputContainer_disabled.TextField-InputContainer_withValue .TextField-Side_type_string,.TextField-InputContainer_view_clear:hover.TextField-InputContainer_disabled .TextField-Side_type_string,.TextField-InputContainer_view_clear:hover.TextField-InputContainer_disabled.TextField-InputContainer_withValue .TextField-Side_type_string{color:var(--color-control-typo-disable)}.TextField-InputContainer_view_clear.TextField-InputContainer_disabled.TextField-InputContainer .TextField-Icon,.TextField-InputContainer_view_clear.TextField-InputContainer_disabled.TextField-InputContainer_withValue .TextField-Icon,.TextField-InputContainer_view_clear:focus.TextField-InputContainer_disabled.TextField-InputContainer .TextField-Icon,.TextField-InputContainer_view_clear:focus.TextField-InputContainer_disabled.TextField-InputContainer_withValue .TextField-Icon,.TextField-InputContainer_view_clear:hover.TextField-InputContainer_disabled.TextField-InputContainer .TextField-Icon,.TextField-InputContainer_view_clear:hover.TextField-InputContainer_disabled.TextField-InputContainer_withValue .TextField-Icon{color:var(--color-control-typo-disable)}.TextField-InputContainer_view_default{--container-border-color:var(--color-control-bg-border-default);background:var(--color-control-bg-default);border:var(--control-border-width) solid var(--container-border-color);border-radius:var(--control-radius);color:var(--color-control-typo-default);overflow-x:hidden;padding:0 var(--input-space)}.TextField-InputContainer_view_default:hover{border-color:var(--color-control-bg-border-default-hover)}.TextField-InputContainer_view_default.TextField-InputContainer_status_alert{--container-border-color:var(--color-bg-alert)}.TextField-InputContainer_view_default.TextField-InputContainer_status_success{--container-border-color:var(--color-bg-success)}.TextField-InputContainer_view_default.TextField-InputContainer_status_warning{--container-border-color:var(--color-bg-warning)}.TextField-InputContainer_view_default .TextField-Input{color:var(--color-control-typo-default)}.TextField-InputContainer_view_default .TextField-Input::-moz-placeholder{color:var(--color-control-typo-placeholder)}.TextField-InputContainer_view_default .TextField-Input::placeholder{color:var(--color-control-typo-placeholder)}.TextField-InputContainer_view_default .TextField-Input:-webkit-autofill,.TextField-InputContainer_view_default .TextField-Input:-webkit-autofill:focus,.TextField-InputContainer_view_default .TextField-Input:-webkit-autofill:hover{-webkit-text-fill-color:var(--color-control-typo-default)}.TextField-InputContainer_view_default .TextField-Side_type_string{color:var(--color-control-typo-placeholder)}.TextField-InputContainer_view_default.TextField-InputContainer_focus{border-color:var(--color-control-bg-border-focus);outline:none;z-index:1}.TextField-InputContainer_view_default.TextField-InputContainer_focus.TextField-InputContainer_form_clearClear{box-shadow:var(--control-border-width) 0 var(--color-control-bg-border-focus),calc(var(--control-border-width)*-1) 0 var(--color-control-bg-border-focus)}.TextField-InputContainer_view_default.TextField-InputContainer_focus.TextField-InputContainer_form_brickClear,.TextField-InputContainer_view_default.TextField-InputContainer_focus.TextField-InputContainer_form_defaultClear,.TextField-InputContainer_view_default.TextField-InputContainer_focus.TextField-InputContainer_form_roundClear{box-shadow:var(--control-border-width) 0 var(--color-control-bg-border-focus)}.TextField-InputContainer_view_default.TextField-InputContainer_focus.TextField-InputContainer_form_clearBrick,.TextField-InputContainer_view_default.TextField-InputContainer_focus.TextField-InputContainer_form_clearDefault,.TextField-InputContainer_view_default.TextField-InputContainer_focus.TextField-InputContainer_form_clearRound{box-shadow:calc(var(--control-border-width)*-1) 0 var(--color-control-bg-border-focus)}.TextField-InputContainer_view_default.TextField-InputContainer_disabled{--clear-button-color:var(--color-control-typo-disable);background:var(--color-control-bg-disable);border-color:var(--color-control-bg-border-disable)}.TextField-InputContainer_view_default.TextField-InputContainer_disabled .TextField-Input{color:var(--color-control-typo-disable);pointer-events:all}.TextField-InputContainer_view_default.TextField-InputContainer_disabled .TextField-Input::-moz-placeholder{color:var(--color-control-typo-disable)}.TextField-InputContainer_view_default.TextField-InputContainer_disabled .TextField-Input::placeholder{color:var(--color-control-typo-disable)}.TextField-InputContainer_view_default.TextField-InputContainer_disabled .TextField-Side_type_string,.TextField-InputContainer_view_default.TextField-InputContainer_disabled.TextField-InputContainer .TextField-Icon,.TextField-InputContainer_view_default.TextField-InputContainer_disabled.TextField-InputContainer_withValue .TextField-Icon,.TextField-InputContainer_view_default.TextField-InputContainer_disabled.TextField-InputContainer_withValue .TextField-Side_type_string{color:var(--color-control-typo-disable)}.TextField-InputContainer_form_defaultClear{border-right-width:0}.TextField-InputContainer_form_defaultBrick,.TextField-InputContainer_form_defaultClear{border-radius:var(--control-radius) 0 0 var(--control-radius)}.TextField-InputContainer_form_round{border-radius:calc(var(--input-height)/2);padding-left:calc(var(--input-space)*1.6);padding-right:calc(var(--input-space)*1.6)}.TextField-InputContainer_form_roundBrick{border-radius:calc(var(--input-height)/2) 0 0 calc(var(--input-height)/2);padding-left:calc(var(--input-space)*1.6)}.TextField-InputContainer_form_roundClear{border-radius:calc(var(--input-height)/2) 0 0 calc(var(--input-height)/2);border-right-width:0;padding-left:calc(var(--input-space)*1.6)}.TextField-InputContainer_form_brick{border-radius:0}.TextField-InputContainer_form_brickDefault{border-radius:0 var(--control-radius) var(--control-radius) 0}.TextField-InputContainer_form_brickRound{border-radius:0 calc(var(--input-height)/2) calc(var(--input-height)/2) 0;padding-right:calc(var(--input-space)*1.6)}.TextField-InputContainer_form_brickClear{border-radius:0;border-right-width:0}.TextField-InputContainer_form_clearDefault{border-left-width:0;border-radius:0 var(--control-radius) var(--control-radius) 0}.TextField-InputContainer_form_clearBrick{border-left-width:0;border-radius:0}.TextField-InputContainer_form_clearRound{border-left-width:0;border-radius:0 calc(var(--input-height)/2) calc(var(--input-height)/2) 0;padding-right:calc(var(--input-space)*1.6)}.TextField-InputContainer_form_clearClear{border-width:0;border-bottom-width:var(--control-border-width);border-radius:0;border-top-width:var(--control-border-width)}.TextField-InputContainer_withValue .TextField-Side.TextField-Side_type_icon,.TextField-InputContainer_withValue .TextField-Side.TextField-Side_type_string{color:var(--color-typo-secondary)}.TextField-InputContainer_incrementButtons{padding-right:0}.TextField-InputContainer_type_textarea .TextField-Input{display:block;line-height:var(--line-height-text-m);min-width:0;padding-bottom:calc((var(--input-height) - (var(--control-border-width)*2) - var(--line-height-text-m))/2);padding-top:calc((var(--input-height) - (var(--control-border-width)*2) - var(--line-height-text-m))/2);resize:none}.TextField-Counter{height:calc(var(--input-height) - var(--control-border-width)*2);margin-right:var(--counter-offset)}.TextField-Counter,.TextField-CounterButton{display:inline-flex;flex-direction:column;width:var(--space-xl)}.TextField-CounterButton{align-items:center;background-color:var(--counter-button-background);border:none;color:var(--counter-button-icon-color);cursor:pointer;flex:1;justify-content:center;margin:0;overflow-y:hidden;padding:0;transition:background-color .15s}.TextField-CounterButton_fn_increment{transform:rotate(180deg)}.TextField-ClearButton,.TextField-EyeButton{align-items:center;background-color:transparent;border:none;cursor:pointer;display:flex;flex-direction:row;height:calc(var(--input-height) - var(--control-border-width)*2);justify-content:center;margin:0;margin-left:var(--input-space);padding:0}.TextField-ClearButton{color:var(--clear-button-color)}.TextField-ClearButton:hover{--clear-button-color:var(--color-control-typo-clear-hover)}.TextField-EyeButton{color:var(--color-control-typo-placeholder)}.TextField-EyeButton:hover{color:var(--color-control-typo-clear-hover)}.TextField-ClearButtonIcon{color:var(--color-control-typo-placeholder)}.TextField-Input{background:transparent;border:none;color:currentColor;flex:1;font-family:var(--font-primary);font-size:var(--input-font-size);height:calc(var(--input-height) - var(--control-border-width)*2);min-width:80px;outline:none;padding:0;width:100%}.TextField-Input::-webkit-inner-spin-button,.TextField-Input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.TextField-Input[type=password]::-ms-reveal{display:none}.TextField-Input[type=number]{-moz-appearance:textfield}.TextField-Input:focus{outline:none}.TextField-Input:-webkit-autofill,.TextField-Input:-webkit-autofill:focus,.TextField-Input:-webkit-autofill:hover{border:none;-webkit-box-shadow:inset 0 0 0 1000px transparent;-webkit-transition:background-color 5000s ease-in-out 0s;transition:background-color 5000s ease-in-out 0s}.TextField-Side{align-items:center;display:flex;height:calc(var(--input-height) - var(--control-border-width)*2);overflow:hidden}.TextField-Side_position_left{margin-right:var(--input-space)}.TextField-Side_position_right{margin-left:var(--input-space)}.TextField-Side_type_string{font-size:var(--input-font-size);white-space:nowrap}.TextField-Icon{color:var(--color-control-typo-placeholder)}
@@ -1,2 +1,2 @@
1
- import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["className","type","value","defaultValue","onChange","id","name","rows","cols","minRows","maxRows","inputRef","maxLength","disabled","size","view","form","state","status","onBlur","onFocus","autoFocus","placeholder","leftSide","rightSide","autoComplete","withClearButton","incrementButtons","max","min","readOnly","required","step","tabIndex","ariaLabel","label","labelIcon","inputContainerRef","labelPosition","caption","iconSize","focused","onClick","onKeyDown","onKeyDownCapture","onKeyPress","onKeyPressCapture","onKeyUp","onKeyUpCapture"];import"./TextField.css";import{IconClear}from"@consta/icons/IconClear";import{IconEye}from"@consta/icons/IconEye";import{IconEyeClose}from"@consta/icons/IconEyeClose";import{IconSelect}from"@consta/icons/IconSelect";import React,{forwardRef,useCallback,useEffect}from"react";import TextAreaAutoSize from"react-textarea-autosize";import{usePropsHandler}from"../EventInterceptor/usePropsHandler";import{FieldCaption}from"../FieldCaption/FieldCaption";import{FieldLabel}from"../FieldLabel/FieldLabel";import{useFlag}from"../../hooks/useFlag/useFlag";import{useForkRef}from"../../hooks/useForkRef/useForkRef";import{useMutableRef}from"../../hooks/useMutableRef/useMutableRef";import{useSortSteps}from"../../hooks/useSortSteps/useSortSteps";import{cn}from"../../utils/bem";import{getByMap}from"../../utils/getByMap";import{isString}from"../../utils/type-guards";import{getIncrementFlag,getTypeForRender,getValueByStep,inputValue,sizeMap}from"./helpers";import{textFieldPropFormDefault,textFieldPropSizeDefault,textFieldPropViewDefault}from"./types";export var COMPONENT_NAME="TextField";export var cnTextField=cn("TextField");export var TextFieldRender=function(a,b){var c,d=React.useRef(null),f=React.useRef(null),g=usePropsHandler(COMPONENT_NAME,a,d),h=g.className,i=g.type,j=void 0===i?"text":i,k=g.value,l=g.defaultValue,m=g.onChange,n=g.id,o=g.name,p=g.rows,q=g.cols,r=g.minRows,s=g.maxRows,t=g.inputRef,u=g.maxLength,v=g.disabled,w=g.size,x=void 0===w?textFieldPropSizeDefault:w,y=g.view,z=void 0===y?textFieldPropViewDefault:y,A=g.form,B=void 0===A?textFieldPropFormDefault:A,C=g.state,D=g.status,E=g.onBlur,F=g.onFocus,G=g.autoFocus,H=void 0!==G&&G,I=g.placeholder,J=g.leftSide,K=g.rightSide,L=g.autoComplete,M=g.withClearButton,N=g.incrementButtons,O=g.max,P=g.min,Q=g.readOnly,R=g.required,S=g.step,T=void 0===S?1:S,U=g.tabIndex,V=g.ariaLabel,W=g.label,X=g.labelIcon,Y=g.inputContainerRef,Z=g.labelPosition,$=void 0===Z?"top":Z,_=g.caption,aa=g.iconSize,ba=g.focused,ca=g.onClick,da=g.onKeyDown,ea=g.onKeyDownCapture,fa=g.onKeyPress,ga=g.onKeyPressCapture,ha=g.onKeyUp,ia=g.onKeyUpCapture,ja=_objectWithoutProperties(g,_excluded),ka="number"===j&&(void 0===N||N),la=useFlag(H),ma=_slicedToArray(la,2),na=ma[0],oa=ma[1],pa=useFlag(),qa=_slicedToArray(pa,2),ra=qa[0],sa=qa[1],ta=useFlag(),ua=_slicedToArray(ta,2),va=ua[0],wa=ua[1],xa=useMutableRef(ca),ya=useMutableRef(m),za=useCallback(function(a){var b;a.stopPropagation(),sa.toggle(),null===(b=f.current)||void 0===b?void 0:b.focus()},[]),Aa=J,Ba=K,Ca=isString(J),Da=isString(K),Ea=getByMap(sizeMap,x,aa),Fa=useSortSteps({step:T,min:+P,max:+O}),Ga=useCallback(function(a){var b;v||(null===(b=ya.current)||void 0===b?void 0:b.call(ya,a.target.value||null,{e:a,id:n,name:o})),a.target.value?wa.on():wa.off()},[n,o,v]),Ha=function(a){oa.on(),null===F||void 0===F?void 0:F(a)},Ia={className:cnTextField("Input"),value:inputValue(k),defaultValue:inputValue(l),onChange:Ga,maxLength:u,disabled:v,onBlur:function handleBlur(a){oa.off(),null===E||void 0===E?void 0:E(a)},onFocus:Ha,autoFocus:H,placeholder:I,autoComplete:L,readOnly:Q,tabIndex:U,name:o,onKeyDownCapture:ea,onKeyPress:fa,onKeyPressCapture:ga,onKeyUp:ha,onKeyUpCapture:ia,id:n?n.toString():void 0,"aria-label":V},Ja=ra?IconEyeClose:IconEye,Ka={rows:p,cols:q,minRows:r||p,maxRows:s||p,ref:useForkRef([f,t])},La={type:getTypeForRender(j,ra),max:O,min:P,step:Array.isArray(Fa)?0:Fa,onKeyDown:function onKeyDown(a){var b=getIncrementFlag(a);if(null===da||void 0===da?void 0:da(a),"number"===j&&"boolean"==typeof b&&!v){var c,d;a.preventDefault();var e=getValueByStep(Fa,null===(c=f.current)||void 0===c?void 0:c.value,b,P,O);null===(d=ya.current)||void 0===d?void 0:d.call(ya,e,{e:a,id:n,name:o}),f.current&&(f.current.value=e,wa.on())}},ref:useForkRef([f,t])},Ma=useCallback(function(a){var b;null===(b=ya.current)||void 0===b?void 0:b.call(ya,null,{e:a,id:n,name:o}),f.current&&(f.current.value="",wa.off())},[]),Na=function(a){var b,c,d=!(1<arguments.length&&void 0!==arguments[1])||arguments[1],e=getValueByStep(Fa,null===(b=f.current)||void 0===b?void 0:b.value,d,P,O);null===(c=ya.current)||void 0===c?void 0:c.call(ya,e,{e:a,id:n,name:o}),f.current&&(f.current.value=e,wa.on())},Oa={onClick:useCallback(function(a){var b,c;null===(b=f.current)||void 0===b?void 0:b.focus(),null===(c=xa.current)||void 0===c?void 0:c.call(xa,a)},[])};return useEffect(function(){if(f.current&&"number"!==j&&M){var a;null!==(a=f.current)&&void 0!==a&&a.value?wa.on():wa.off()}},[f.current,M,j]),React.createElement("div",Object.assign({className:cnTextField({labelPosition:$,size:x,view:z},[h]),ref:useForkRef([b,d])},Oa,ja),W&&React.createElement(FieldLabel,{as:"label",htmlFor:null===n||void 0===n?void 0:n.toString(),icon:X,required:R,className:cnTextField("Label",{labelPosition:$}),size:x},W),React.createElement("div",{className:cnTextField("Body")},React.createElement("div",{ref:Y,className:cnTextField("InputContainer",{view:z,form:B,status:D||C,disabled:v,type:j,focus:na||ba,withValue:va,incrementButtons:"number"===j&&ka})},Aa&&React.createElement("div",{className:cnTextField("Side",{position:"left",type:Ca?"string":"icon"}),title:"string"==typeof J?J:void 0},Ca?J:React.createElement(Aa,{className:cnTextField("Icon"),size:Ea})),"textarea"===j?React.createElement(TextAreaAutoSize,Object.assign({},Ia,Ka)):React.createElement("input",Object.assign({},Ia,La)),"number"===j&&ka&&!v&&React.createElement("div",{className:cnTextField("Counter")},React.createElement("button",{onFocus:Ha,onClick:function(a){return Na(a,!0)},type:"button",className:cnTextField("CounterButton",{fn:"increment"})},React.createElement(IconSelect,{size:"xs"})),React.createElement("button",{onFocus:Ha,onClick:function(a){return Na(a,!1)},type:"button",className:cnTextField("CounterButton")},React.createElement(IconSelect,{size:"xs"}))),!ka&&va&&M&&!v&&React.createElement("button",{type:"button",disabled:v,tabIndex:-1,onClick:Ma,className:cnTextField("ClearButton")},React.createElement(IconClear,{size:sizeMap[x],className:cnTextField("ClearButtonIcon")})),"password"===j&&(null===(c=f.current)||void 0===c?void 0:c.value)&&React.createElement("button",{className:cnTextField("ClearButton"),type:"button",onClick:za},React.createElement(Ja,{className:cnTextField("Icon"),size:Ea})),Ba&&!ka&&"password"!==j&&React.createElement("div",{className:cnTextField("Side",{position:"right",type:Da?"string":"icon"}),title:"string"==typeof K?K:void 0},Da?K:React.createElement(Ba,{className:cnTextField("Icon"),size:Ea}))),_&&React.createElement(FieldCaption,{className:cnTextField("Caption"),status:D||C},_)))};export var TextField=forwardRef(TextFieldRender);export*from"./types";
1
+ import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["className","type","value","defaultValue","onChange","id","name","rows","cols","minRows","maxRows","inputRef","maxLength","disabled","size","view","form","state","status","onBlur","onFocus","autoFocus","placeholder","leftSide","rightSide","autoComplete","withClearButton","incrementButtons","max","min","readOnly","required","step","tabIndex","ariaLabel","label","labelIcon","inputContainerRef","labelPosition","caption","iconSize","focused","onClick","onKeyDown","onKeyDownCapture","onKeyPress","onKeyPressCapture","onKeyUp","onKeyUpCapture"];import"./TextField.css";import{IconClear}from"@consta/icons/IconClear";import{IconEye}from"@consta/icons/IconEye";import{IconEyeClose}from"@consta/icons/IconEyeClose";import{IconSelect}from"@consta/icons/IconSelect";import React,{forwardRef,useCallback,useEffect}from"react";import TextAreaAutoSize from"react-textarea-autosize";import{usePropsHandler}from"../EventInterceptor/usePropsHandler";import{FieldCaption}from"../FieldCaption/FieldCaption";import{FieldLabel}from"../FieldLabel/FieldLabel";import{useFlag}from"../../hooks/useFlag/useFlag";import{useForkRef}from"../../hooks/useForkRef/useForkRef";import{useMutableRef}from"../../hooks/useMutableRef/useMutableRef";import{useSortSteps}from"../../hooks/useSortSteps/useSortSteps";import{cn}from"../../utils/bem";import{getByMap}from"../../utils/getByMap";import{isString}from"../../utils/type-guards";import{getIncrementFlag,getTypeForRender,getValueByStep,inputValue,sizeMap}from"./helpers";import{textFieldPropFormDefault,textFieldPropSizeDefault,textFieldPropViewDefault}from"./types";export var COMPONENT_NAME="TextField";export var cnTextField=cn("TextField");export var TextFieldRender=function(a,b){var c,d,e=React.useRef(null),f=React.useRef(null),g=usePropsHandler(COMPONENT_NAME,a,e),h=g.className,i=g.type,j=void 0===i?"text":i,k=g.value,l=g.defaultValue,m=g.onChange,n=g.id,o=g.name,p=g.rows,q=g.cols,r=g.minRows,s=g.maxRows,t=g.inputRef,u=g.maxLength,v=g.disabled,w=g.size,x=void 0===w?textFieldPropSizeDefault:w,y=g.view,z=void 0===y?textFieldPropViewDefault:y,A=g.form,B=void 0===A?textFieldPropFormDefault:A,C=g.state,D=g.status,E=g.onBlur,F=g.onFocus,G=g.autoFocus,H=void 0!==G&&G,I=g.placeholder,J=g.leftSide,K=g.rightSide,L=g.autoComplete,M=g.withClearButton,N=g.incrementButtons,O=g.max,P=g.min,Q=g.readOnly,R=g.required,S=g.step,T=void 0===S?1:S,U=g.tabIndex,V=g.ariaLabel,W=g.label,X=g.labelIcon,Y=g.inputContainerRef,Z=g.labelPosition,$=void 0===Z?"top":Z,_=g.caption,aa=g.iconSize,ba=g.focused,ca=g.onClick,da=g.onKeyDown,ea=g.onKeyDownCapture,fa=g.onKeyPress,ga=g.onKeyPressCapture,ha=g.onKeyUp,ia=g.onKeyUpCapture,ja=_objectWithoutProperties(g,_excluded),ka="number"===j&&(void 0===N||N),la=useFlag(H),ma=_slicedToArray(la,2),na=ma[0],oa=ma[1],pa=useFlag(),qa=_slicedToArray(pa,2),ra=qa[0],sa=qa[1],ta=useFlag(),ua=_slicedToArray(ta,2),va=ua[0],wa=ua[1],xa=useMutableRef(ca),ya=useMutableRef(m),za=useCallback(function(a){var b;a.stopPropagation(),sa.toggle(),null===(b=f.current)||void 0===b?void 0:b.focus()},[]),Aa=J,Ba=K,Ca=isString(J),Da=isString(K),Ea=getByMap(sizeMap,x,aa),Fa=useSortSteps({step:T,min:+P,max:+O}),Ga=useCallback(function(a){var b;v||(null===(b=ya.current)||void 0===b?void 0:b.call(ya,a.target.value||null,{e:a,id:n,name:o})),a.target.value?wa.on():wa.off()},[n,o,v]),Ha=function(a){oa.on(),null===F||void 0===F?void 0:F(a)},Ia={className:cnTextField("Input"),value:inputValue(k),defaultValue:inputValue(l),onChange:Ga,maxLength:u,disabled:v,onBlur:function handleBlur(a){oa.off(),null===E||void 0===E?void 0:E(a)},onFocus:Ha,autoFocus:H,placeholder:I,autoComplete:L,readOnly:Q,tabIndex:U,name:o,onKeyDownCapture:ea,onKeyPress:fa,onKeyPressCapture:ga,onKeyUp:ha,onKeyUpCapture:ia,id:n?n.toString():void 0,"aria-label":V},Ja=ra?IconEyeClose:IconEye,Ka={rows:p,cols:q,minRows:r||p,maxRows:s||p,ref:useForkRef([f,t])},La={type:getTypeForRender(j,ra),max:O,min:P,step:Array.isArray(Fa)?0:Fa,onKeyDown:function onKeyDown(a){var b=getIncrementFlag(a);if(null===da||void 0===da?void 0:da(a),"number"===j&&"boolean"==typeof b&&!v){var c,d;a.preventDefault();var e=getValueByStep(Fa,null===(c=f.current)||void 0===c?void 0:c.value,b,P,O);null===(d=ya.current)||void 0===d?void 0:d.call(ya,e,{e:a,id:n,name:o}),f.current&&(f.current.value=e,wa.on())}},ref:useForkRef([f,t])},Ma=useCallback(function(a){var b;null===(b=ya.current)||void 0===b?void 0:b.call(ya,null,{e:a,id:n,name:o}),f.current&&(f.current.value="",wa.off())},[]),Na=function(a){var b,c,d=!(1<arguments.length&&void 0!==arguments[1])||arguments[1],e=getValueByStep(Fa,null===(b=f.current)||void 0===b?void 0:b.value,d,P,O);null===(c=ya.current)||void 0===c?void 0:c.call(ya,e,{e:a,id:n,name:o}),f.current&&(f.current.value=e,wa.on())},Oa={onClick:useCallback(function(a){var b,c;null===(b=f.current)||void 0===b?void 0:b.focus(),null===(c=xa.current)||void 0===c?void 0:c.call(xa,a)},[])};return useEffect(function(){var a;wa[null!==(a=f.current)&&void 0!==a&&a.value?"on":"off"]()},[null===(c=f.current)||void 0===c?void 0:c.value]),React.createElement("div",Object.assign({className:cnTextField({labelPosition:$,size:x,view:z},[h]),ref:useForkRef([b,e])},Oa,ja),W&&React.createElement(FieldLabel,{as:"label",htmlFor:null===n||void 0===n?void 0:n.toString(),icon:X,required:R,className:cnTextField("Label",{labelPosition:$}),size:x},W),React.createElement("div",{className:cnTextField("Body")},React.createElement("div",{ref:Y,className:cnTextField("InputContainer",{view:z,form:B,status:D||C,disabled:v,type:j,focus:na||ba,withValue:va,incrementButtons:"number"===j&&ka})},Aa&&React.createElement("div",{className:cnTextField("Side",{position:"left",type:Ca?"string":"icon"}),title:"string"==typeof J?J:void 0},Ca?J:React.createElement(Aa,{className:cnTextField("Icon"),size:Ea})),"textarea"===j?React.createElement(TextAreaAutoSize,Object.assign({},Ia,Ka)):React.createElement("input",Object.assign({},Ia,La)),"number"===j&&ka&&!v&&React.createElement("div",{className:cnTextField("Counter")},React.createElement("button",{onFocus:Ha,onClick:function(a){return Na(a,!0)},type:"button",className:cnTextField("CounterButton",{fn:"increment"})},React.createElement(IconSelect,{size:"xs"})),React.createElement("button",{onFocus:Ha,onClick:function(a){return Na(a,!1)},type:"button",className:cnTextField("CounterButton")},React.createElement(IconSelect,{size:"xs"}))),!ka&&va&&M&&!v&&"number"!==j&&React.createElement("button",{type:"button",disabled:v,tabIndex:-1,onClick:Ma,className:cnTextField("ClearButton")},React.createElement(IconClear,{size:sizeMap[x],className:cnTextField("ClearButtonIcon")})),"password"===j&&(null===(d=f.current)||void 0===d?void 0:d.value)&&React.createElement("button",{className:cnTextField("ClearButton"),type:"button",onClick:za},React.createElement(Ja,{className:cnTextField("Icon"),size:Ea})),Ba&&!ka&&"password"!==j&&React.createElement("div",{className:cnTextField("Side",{position:"right",type:Da?"string":"icon"}),title:"string"==typeof K?K:void 0},Da?K:React.createElement(Ba,{className:cnTextField("Icon"),size:Ea}))),_&&React.createElement(FieldCaption,{className:cnTextField("Caption"),status:D||C},_)))};export var TextField=forwardRef(TextFieldRender);export*from"./types";
2
2
  //# sourceMappingURL=TextField.js.map