@consta/uikit 4.13.0 → 4.14.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 (87) hide show
  1. package/__internal__/src/components/Breadcrumbs/BreadcrumbsItem/BreadcrumbsItem.js +1 -1
  2. package/__internal__/src/components/Breadcrumbs/BreadcrumbsItem/BreadcrumbsItem.js.map +1 -1
  3. package/__internal__/src/components/Breadcrumbs/BreadcrumbsMore/BreadcrumbsMore.js +1 -1
  4. package/__internal__/src/components/Breadcrumbs/BreadcrumbsMore/BreadcrumbsMore.js.map +1 -1
  5. package/__internal__/src/components/BreadcrumbsDeprecated/BreadcrumbsDeprecated.js +1 -1
  6. package/__internal__/src/components/BreadcrumbsDeprecated/BreadcrumbsDeprecated.js.map +1 -1
  7. package/__internal__/src/components/CalendarDeprecated/CalendarMonthToggler/CalendarMonthToggler.js +1 -1
  8. package/__internal__/src/components/CalendarDeprecated/CalendarMonthToggler/CalendarMonthToggler.js.map +1 -1
  9. package/__internal__/src/components/CalendarDeprecated/CalendarSlider/CalendarSlider.js +1 -1
  10. package/__internal__/src/components/CalendarDeprecated/CalendarSlider/CalendarSlider.js.map +1 -1
  11. package/__internal__/src/components/DatePicker/DatePickerDropdown/DatePickerDropdown.js +1 -1
  12. package/__internal__/src/components/DatePicker/DatePickerDropdown/DatePickerDropdown.js.map +1 -1
  13. package/__internal__/src/components/DatePicker/DatePickerTypeDate/DatePickerTypeDate.js +1 -1
  14. package/__internal__/src/components/DatePicker/DatePickerTypeDate/DatePickerTypeDate.js.map +1 -1
  15. package/__internal__/src/components/DatePicker/DatePickerTypeDateRange/DatePickerTypeDateRange.js +1 -1
  16. package/__internal__/src/components/DatePicker/DatePickerTypeDateRange/DatePickerTypeDateRange.js.map +1 -1
  17. package/__internal__/src/components/DatePicker/DatePickerTypeDateTime/DatePickerTypeDateTime.js +1 -1
  18. package/__internal__/src/components/DatePicker/DatePickerTypeDateTime/DatePickerTypeDateTime.js.map +1 -1
  19. package/__internal__/src/components/DatePicker/DatePickerTypeDateTimeRange/DatePickerTypeDateTimeRange.js +1 -1
  20. package/__internal__/src/components/DatePicker/DatePickerTypeDateTimeRange/DatePickerTypeDateTimeRange.js.map +1 -1
  21. package/__internal__/src/components/DatePicker/DatePickerTypeMonth/DatePickerTypeMonth.js +1 -1
  22. package/__internal__/src/components/DatePicker/DatePickerTypeMonth/DatePickerTypeMonth.js.map +1 -1
  23. package/__internal__/src/components/DatePicker/DatePickerTypeMonthRange/DatePickerTypeMonthRange.js +1 -1
  24. package/__internal__/src/components/DatePicker/DatePickerTypeMonthRange/DatePickerTypeMonthRange.js.map +1 -1
  25. package/__internal__/src/components/DatePicker/DatePickerTypeTime/DatePickerTypeTime.js +1 -1
  26. package/__internal__/src/components/DatePicker/DatePickerTypeTime/DatePickerTypeTime.js.map +1 -1
  27. package/__internal__/src/components/DatePicker/DatePickerTypeYear/DatePickerTypeYear.js +1 -1
  28. package/__internal__/src/components/DatePicker/DatePickerTypeYear/DatePickerTypeYear.js.map +1 -1
  29. package/__internal__/src/components/DatePicker/DatePickerTypeYearRange/DatePickerTypeYearRange.js +1 -1
  30. package/__internal__/src/components/DatePicker/DatePickerTypeYearRange/DatePickerTypeYearRange.js.map +1 -1
  31. package/__internal__/src/components/DateTime/DateTimeSlider/DateTimeSlider.js +1 -1
  32. package/__internal__/src/components/DateTime/DateTimeSlider/DateTimeSlider.js.map +1 -1
  33. package/__internal__/src/components/DateTime/DateTimeToggler/DateTimeToggler.js +1 -1
  34. package/__internal__/src/components/DateTime/DateTimeToggler/DateTimeToggler.js.map +1 -1
  35. package/__internal__/src/components/Pagination/Pagination.js +1 -1
  36. package/__internal__/src/components/Pagination/Pagination.js.map +1 -1
  37. package/__internal__/src/components/ProgressStepBar/ProgressStepBar.js +1 -1
  38. package/__internal__/src/components/ProgressStepBar/ProgressStepBar.js.map +1 -1
  39. package/__internal__/src/components/Responses403/Responses403.js +1 -1
  40. package/__internal__/src/components/Responses403/Responses403.js.map +1 -1
  41. package/__internal__/src/components/Responses404/Responses404.js +1 -1
  42. package/__internal__/src/components/Responses404/Responses404.js.map +1 -1
  43. package/__internal__/src/components/ResponsesDeleted/ResponsesDeleted.js +1 -1
  44. package/__internal__/src/components/ResponsesDeleted/ResponsesDeleted.js.map +1 -1
  45. package/__internal__/src/components/ResponsesEmptyBox/ResponsesEmptyBox.js +1 -1
  46. package/__internal__/src/components/ResponsesEmptyBox/ResponsesEmptyBox.js.map +1 -1
  47. package/__internal__/src/components/ResponsesEmptyPockets/ResponsesEmptyPockets.js +1 -1
  48. package/__internal__/src/components/ResponsesEmptyPockets/ResponsesEmptyPockets.js.map +1 -1
  49. package/__internal__/src/components/ResponsesExit/ResponsesExit.js +1 -1
  50. package/__internal__/src/components/ResponsesExit/ResponsesExit.js.map +1 -1
  51. package/__internal__/src/components/ResponsesNothingFound/ResponsesNothingFound.js +1 -1
  52. package/__internal__/src/components/ResponsesNothingFound/ResponsesNothingFound.js.map +1 -1
  53. package/__internal__/src/components/SnackBar/SnackBarActionButton/SnackBarActionButton.js +1 -1
  54. package/__internal__/src/components/SnackBar/SnackBarActionButton/SnackBarActionButton.js.map +1 -1
  55. package/__internal__/src/components/SnackBar/SnackBarItem/SnackBarItem.js +1 -1
  56. package/__internal__/src/components/SnackBar/SnackBarItem/SnackBarItem.js.map +1 -1
  57. package/__internal__/src/components/Steps/Steps.js +1 -1
  58. package/__internal__/src/components/Steps/Steps.js.map +1 -1
  59. package/__internal__/src/components/Table/FilterContainer/TableFilterContainer.js +1 -1
  60. package/__internal__/src/components/Table/FilterContainer/TableFilterContainer.js.map +1 -1
  61. package/__internal__/src/components/Table/FilterTooltip/TableFilterTooltip.js +1 -1
  62. package/__internal__/src/components/Table/FilterTooltip/TableFilterTooltip.js.map +1 -1
  63. package/__internal__/src/components/Table/Header/TableHeader.js +1 -1
  64. package/__internal__/src/components/Table/Header/TableHeader.js.map +1 -1
  65. package/__internal__/src/components/Table/RowsCollapse/TableRowsCollapse.js +1 -1
  66. package/__internal__/src/components/Table/RowsCollapse/TableRowsCollapse.js.map +1 -1
  67. package/__internal__/src/components/Table/TextFilter/TableTextFilter.js +1 -1
  68. package/__internal__/src/components/Table/TextFilter/TableTextFilter.js.map +1 -1
  69. package/__internal__/src/components/Tabs/FitModeScrollWrapper/TabsFitModeScrollWrapper.js +1 -1
  70. package/__internal__/src/components/Tabs/FitModeScrollWrapper/TabsFitModeScrollWrapper.js.map +1 -1
  71. package/__internal__/src/components/Tabs/MoreItems/TabsMoreItems.js +1 -1
  72. package/__internal__/src/components/Tabs/MoreItems/TabsMoreItems.js.map +1 -1
  73. package/__internal__/src/components/TabsDeprecated/FitModeScrollWrapper/TabsFitModeScrollWrapper.js +1 -1
  74. package/__internal__/src/components/TabsDeprecated/FitModeScrollWrapper/TabsFitModeScrollWrapper.js.map +1 -1
  75. package/__internal__/src/components/TabsDeprecated/MoreItems/TabsMoreItems.js +1 -1
  76. package/__internal__/src/components/TabsDeprecated/MoreItems/TabsMoreItems.js.map +1 -1
  77. package/__internal__/src/components/ThemeToggler/ThemeToggler.js +1 -1
  78. package/__internal__/src/components/ThemeToggler/ThemeToggler.js.map +1 -1
  79. package/__internal__/src/components/ThemeToggler/helpers.d.ts +1 -0
  80. package/__internal__/src/components/ThemeToggler/types.d.ts +4 -2
  81. package/__internal__/src/components/ThemeToggler/types.js.map +1 -1
  82. package/__internal__/src/components/User/User.js +1 -1
  83. package/__internal__/src/components/User/User.js.map +1 -1
  84. package/package.json +1 -1
  85. package/__internal__/src/components/DatePicker/useDropdownVisible.d.ts +0 -24
  86. package/__internal__/src/components/DatePicker/useDropdownVisible.js +0 -2
  87. package/__internal__/src/components/DatePicker/useDropdownVisible.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SnackBarItem.js","names":["IconClose","React","useEffect","useState","useFlag","cn","isNumber","isString","Button","Text","cnTheme","SnackBarActionButton","SnackBarLine","SnackBarTimer","snackBarItemStatusDefault","snackBarPropFormDefault","defaultInitialTimerTime","cnSnackBarItem","getAutoCloseTime","autoClose","SnackBarItemRender","props","ref","onClose","showProgress","Icon","icon","form","message","actions","status","onAutoCloseProp","onAutoClose","className","otherProps","timerFunctions","setTimerFunctions","hover","onHover","on","offHover","off","timeIsOver","onTimeIsOver","handleMountTimer","autoCloseTime","hideAutoCloseTimer","pause","start","handleTimeIsOver","handleClose","color","handleMouseEnter","handleMouseLeave","SnackBarItem","forwardRef"],"sources":["../../../../../../src/components/SnackBar/SnackBarItem/SnackBarItem.tsx"],"sourcesContent":["import '../../Theme/_color/Theme_color_gpnDark.css';\nimport './SnackBarItem.css';\n\nimport { IconClose } from '@consta/icons/IconClose';\nimport React, { useEffect, useState } from 'react';\n\nimport { useFlag } from '../../../hooks/useFlag/useFlag';\nimport { cn } from '../../../utils/bem';\nimport { isNumber, isString } from '../../../utils/type-guards';\nimport { Button } from '../../Button/Button';\nimport { Text } from '../../Text/Text';\nimport { cnTheme } from '../../Theme/Theme';\nimport { SnackBarActionButton } from '../SnackBarActionButton/SnackBarActionButton';\nimport { SnackBarLine } from '../SnackBarLine/SnackBarLine';\nimport { SnackBarTimer } from '../SnackBarTimer/SnackBarTimer';\nimport {\n SnackBarItemComponent,\n SnackBarItemProps,\n snackBarItemStatusDefault,\n snackBarPropFormDefault,\n SnackBarTimerPropOnMount,\n} from '../types';\n\nconst defaultInitialTimerTime = 3;\n\nexport const cnSnackBarItem = cn('SnackBarItem');\n\nconst getAutoCloseTime = (\n autoClose: boolean | number | undefined,\n): number | false => {\n if (autoClose) {\n if (typeof autoClose === 'number') {\n return autoClose;\n }\n return defaultInitialTimerTime;\n }\n return false;\n};\n\nexport const SnackBarItemRender = (\n props: SnackBarItemProps,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const {\n onClose,\n autoClose,\n showProgress,\n icon: Icon,\n form = snackBarPropFormDefault,\n message,\n actions,\n status = snackBarItemStatusDefault,\n onAutoClose: onAutoCloseProp,\n className,\n ...otherProps\n } = props;\n\n const [timerFunctions, setTimerFunctions] = useState<{\n start: () => void;\n pause: () => void;\n } | null>(null);\n const [hover, { on: onHover, off: offHover }] = useFlag(false);\n const [timeIsOver, { on: onTimeIsOver }] = useFlag(false);\n const handleMountTimer: SnackBarTimerPropOnMount = (timerFunctions) =>\n setTimerFunctions(timerFunctions);\n const handleMouseEnter = () => onHover();\n const handleMouseLeave = () => offHover();\n const autoCloseTime = getAutoCloseTime(autoClose);\n const hideAutoCloseTimer =\n showProgress === undefined ||\n !(isNumber(autoCloseTime) && autoCloseTime > 0);\n const onAutoClose = () => {\n if (onAutoCloseProp) {\n onAutoCloseProp();\n } else {\n onClose?.();\n }\n };\n\n useEffect(() => {\n if (!timeIsOver) {\n if (hover) {\n timerFunctions && timerFunctions.pause();\n } else {\n timerFunctions && timerFunctions.start();\n }\n }\n }, [hover, timeIsOver, timerFunctions]);\n\n const handleTimeIsOver = () => {\n onTimeIsOver();\n onAutoClose();\n };\n\n const handleClose = onClose ? () => onClose() : undefined;\n\n return (\n <div\n ref={ref}\n className={cnSnackBarItem({ status, showProgress, form }, [\n cnTheme({ color: 'gpnDark' }),\n className,\n ])}\n onMouseEnter={autoCloseTime ? handleMouseEnter : undefined}\n onMouseLeave={autoCloseTime ? handleMouseLeave : undefined}\n {...otherProps}\n >\n {autoCloseTime && showProgress !== 'line' && (\n <SnackBarTimer\n className={cnSnackBarItem('Timer')}\n onMount={handleMountTimer}\n onTimeIsOver={handleTimeIsOver}\n startTime={autoCloseTime}\n hidden={hideAutoCloseTimer}\n />\n )}\n {Icon &&\n ((hideAutoCloseTimer && showProgress === 'timer') ||\n showProgress !== 'timer') && (\n <Icon className={cnSnackBarItem('Icon')} size=\"m\" />\n )}\n <div className={cnSnackBarItem('Content')}>\n {isString(message) || isNumber(message) ? (\n <Text className={cnSnackBarItem('Message')} lineHeight=\"s\">\n {message}\n </Text>\n ) : (\n message\n )}\n {actions && (\n <SnackBarActionButton\n actions={actions}\n className={cnSnackBarItem('ActionButton')}\n />\n )}\n </div>\n {onClose && (\n <Button\n className={cnSnackBarItem('CloseButton')}\n view=\"clear\"\n iconLeft={IconClose}\n form=\"round\"\n size=\"xs\"\n onClick={handleClose}\n />\n )}\n {autoCloseTime && showProgress === 'line' && (\n <SnackBarLine\n className={cnSnackBarItem('Line')}\n onMount={handleMountTimer}\n onTimeIsOver={handleTimeIsOver}\n startTime={autoCloseTime}\n />\n )}\n </div>\n );\n};\n\nexport const SnackBarItem = React.forwardRef(\n SnackBarItemRender,\n) as SnackBarItemComponent;\n"],"mappings":"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"}
1
+ {"version":3,"file":"SnackBarItem.js","names":["IconClose","React","useEffect","useState","useFlag","cn","isNumber","isString","Button","Text","cnTheme","SnackBarActionButton","SnackBarLine","SnackBarTimer","snackBarItemStatusDefault","snackBarPropFormDefault","defaultInitialTimerTime","cnSnackBarItem","getAutoCloseTime","autoClose","SnackBarItemRender","props","ref","onClose","showProgress","Icon","icon","form","message","actions","status","onAutoCloseProp","onAutoClose","className","otherProps","timerFunctions","setTimerFunctions","hover","onHover","on","offHover","off","timeIsOver","onTimeIsOver","handleMountTimer","autoCloseTime","hideAutoCloseTimer","pause","start","handleTimeIsOver","handleClose","color","handleMouseEnter","handleMouseLeave","SnackBarItem","forwardRef"],"sources":["../../../../../../src/components/SnackBar/SnackBarItem/SnackBarItem.tsx"],"sourcesContent":["import '../../Theme/_color/Theme_color_gpnDark.css';\nimport './SnackBarItem.css';\n\nimport { IconClose } from '@consta/icons/IconClose';\nimport React, { useEffect, useState } from 'react';\n\nimport { useFlag } from '../../../hooks/useFlag/useFlag';\nimport { cn } from '../../../utils/bem';\nimport { isNumber, isString } from '../../../utils/type-guards';\nimport { Button } from '../../Button/Button';\nimport { Text } from '../../Text/Text';\nimport { cnTheme } from '../../Theme/Theme';\nimport { SnackBarActionButton } from '../SnackBarActionButton/SnackBarActionButton';\nimport { SnackBarLine } from '../SnackBarLine/SnackBarLine';\nimport { SnackBarTimer } from '../SnackBarTimer/SnackBarTimer';\nimport {\n SnackBarItemComponent,\n SnackBarItemProps,\n snackBarItemStatusDefault,\n snackBarPropFormDefault,\n SnackBarTimerPropOnMount,\n} from '../types';\n\nconst defaultInitialTimerTime = 3;\n\nexport const cnSnackBarItem = cn('SnackBarItem');\n\nconst getAutoCloseTime = (\n autoClose: boolean | number | undefined,\n): number | false => {\n if (autoClose) {\n if (typeof autoClose === 'number') {\n return autoClose;\n }\n return defaultInitialTimerTime;\n }\n return false;\n};\n\nexport const SnackBarItemRender = (\n props: SnackBarItemProps,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const {\n onClose,\n autoClose,\n showProgress,\n icon: Icon,\n form = snackBarPropFormDefault,\n message,\n actions,\n status = snackBarItemStatusDefault,\n onAutoClose: onAutoCloseProp,\n className,\n ...otherProps\n } = props;\n\n const [timerFunctions, setTimerFunctions] = useState<{\n start: () => void;\n pause: () => void;\n } | null>(null);\n const [hover, { on: onHover, off: offHover }] = useFlag(false);\n const [timeIsOver, { on: onTimeIsOver }] = useFlag(false);\n const handleMountTimer: SnackBarTimerPropOnMount = (timerFunctions) =>\n setTimerFunctions(timerFunctions);\n const handleMouseEnter = () => onHover();\n const handleMouseLeave = () => offHover();\n const autoCloseTime = getAutoCloseTime(autoClose);\n const hideAutoCloseTimer =\n showProgress === undefined ||\n !(isNumber(autoCloseTime) && autoCloseTime > 0);\n const onAutoClose = () => {\n if (onAutoCloseProp) {\n onAutoCloseProp();\n } else {\n onClose?.();\n }\n };\n\n useEffect(() => {\n if (!timeIsOver) {\n if (hover) {\n timerFunctions && timerFunctions.pause();\n } else {\n timerFunctions && timerFunctions.start();\n }\n }\n }, [hover, timeIsOver, timerFunctions]);\n\n const handleTimeIsOver = () => {\n onTimeIsOver();\n onAutoClose();\n };\n\n const handleClose = onClose ? () => onClose() : undefined;\n\n return (\n <div\n ref={ref}\n className={cnSnackBarItem({ status, showProgress, form }, [\n cnTheme({ color: 'gpnDark' }),\n className,\n ])}\n onMouseEnter={autoCloseTime ? handleMouseEnter : undefined}\n onMouseLeave={autoCloseTime ? handleMouseLeave : undefined}\n {...otherProps}\n >\n {autoCloseTime && showProgress !== 'line' && (\n <SnackBarTimer\n className={cnSnackBarItem('Timer')}\n onMount={handleMountTimer}\n onTimeIsOver={handleTimeIsOver}\n startTime={autoCloseTime}\n hidden={hideAutoCloseTimer}\n />\n )}\n {Icon &&\n ((hideAutoCloseTimer && showProgress === 'timer') ||\n showProgress !== 'timer') && (\n <Icon className={cnSnackBarItem('Icon')} size=\"m\" />\n )}\n <div className={cnSnackBarItem('Content')}>\n {isString(message) || isNumber(message) ? (\n <Text className={cnSnackBarItem('Message')} lineHeight=\"s\">\n {message}\n </Text>\n ) : (\n message\n )}\n {actions && (\n <SnackBarActionButton\n actions={actions}\n className={cnSnackBarItem('ActionButton')}\n />\n )}\n </div>\n {onClose && (\n <Button\n className={cnSnackBarItem('CloseButton')}\n view=\"clear\"\n iconLeft={IconClose}\n form=\"round\"\n type=\"button\"\n size=\"xs\"\n onClick={handleClose}\n />\n )}\n {autoCloseTime && showProgress === 'line' && (\n <SnackBarLine\n className={cnSnackBarItem('Line')}\n onMount={handleMountTimer}\n onTimeIsOver={handleTimeIsOver}\n startTime={autoCloseTime}\n />\n )}\n </div>\n );\n};\n\nexport const SnackBarItem = React.forwardRef(\n SnackBarItemRender,\n) as SnackBarItemComponent;\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["size","items","value","getItemLabel","getItemDisabled","getItemCompleted","getItemSkipped","onChange","className"];import"./Steps.css";import{IconArrowLeft}from"@consta/icons/IconArrowLeft";import{IconArrowRight}from"@consta/icons/IconArrowRight";import React,{forwardRef,useMemo,useRef,useState}from"react";import{useChoiceGroup}from"../../hooks/useChoiceGroup/useChoiceGroup";import{useOverflow}from"../../hooks/useOverflow/useOverflow";import{useScrollElements}from"../../hooks/useScrollElements/useScrollElements";import{cn}from"../../utils/bem";import{Button}from"../Button/Button";import{withDefaultGetters}from"./helper";import{StepsStep}from"./StepsStep/StepsStep";import{stepsDefaultSize}from"./types";export var cnSteps=cn("Steps");var StepsRender=function(a,b){var c=withDefaultGetters(a),d=c.size,e=void 0===d?stepsDefaultSize:d,f=c.items,g=c.value,h=c.getItemLabel,i=c.getItemDisabled,j=c.getItemCompleted,k=c.getItemSkipped,l=c.onChange,m=c.className,n=_objectWithoutProperties(c,_excluded),o=useState(-1),p=_slicedToArray(o,2),q=p[0],r=p[1],s=useChoiceGroup({value:g,getKey:h,callBack:l,multiple:!1}),t=s.getOnChange,u=s.getChecked;useMemo(function(){f.forEach(function(a,b){u(a)&&r(b)})},[f,g]);var v=useScrollElements(f),w=v.refs,x=v.scrollTo,y=useRef(null),z=useOverflow({currentRef:y}),A=function(a,b){b&&0!==q&&(t(f[q-1])(a),x(q-1)),b||q===f.length-1||(t(f[q+1])(a),x(q+1))};return React.createElement("div",Object.assign({ref:b,className:cnSteps({size:e},[m])},n),z&&React.createElement(Button,{iconLeft:function iconLeft(){return React.createElement(IconArrowLeft,{size:"xs"})},view:"clear",onlyIcon:!0,size:"xs",className:cnSteps("Button",{side:"left"}),onClick:function onClick(a){return A(a,!0)}}),React.createElement("div",{ref:y,className:cnSteps("List")},f.map(function(a,b){return React.createElement(StepsStep,{key:b,ref:w[b],className:cnSteps("Item"),label:null!==j&&void 0!==j&&j(a)?h(a):"".concat(b+1," ").concat(h(a)),size:e,active:q===b,onChange:t(a),completed:null===j||void 0===j?void 0:j(a),skipped:null===k||void 0===k?void 0:k(a),disabled:null===i||void 0===i?void 0:i(a)})})),z&&React.createElement(Button,{iconLeft:function iconLeft(){return React.createElement(IconArrowRight,{size:"xs"})},view:"clear",onlyIcon:!0,size:"xs",className:cnSteps("Button",{side:"right"}),onClick:function onClick(a){return A(a,!1)}}))};export var Steps=forwardRef(StepsRender);export*from"./types";
1
+ import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["size","items","value","getItemLabel","getItemDisabled","getItemCompleted","getItemSkipped","onChange","className"];import"./Steps.css";import{IconArrowLeft}from"@consta/icons/IconArrowLeft";import{IconArrowRight}from"@consta/icons/IconArrowRight";import React,{forwardRef,useMemo,useRef,useState}from"react";import{useChoiceGroup}from"../../hooks/useChoiceGroup/useChoiceGroup";import{useOverflow}from"../../hooks/useOverflow/useOverflow";import{useScrollElements}from"../../hooks/useScrollElements/useScrollElements";import{cn}from"../../utils/bem";import{Button}from"../Button/Button";import{withDefaultGetters}from"./helper";import{StepsStep}from"./StepsStep/StepsStep";import{stepsDefaultSize}from"./types";export var cnSteps=cn("Steps");var StepsRender=function(a,b){var c=withDefaultGetters(a),d=c.size,e=void 0===d?stepsDefaultSize:d,f=c.items,g=c.value,h=c.getItemLabel,i=c.getItemDisabled,j=c.getItemCompleted,k=c.getItemSkipped,l=c.onChange,m=c.className,n=_objectWithoutProperties(c,_excluded),o=useState(-1),p=_slicedToArray(o,2),q=p[0],r=p[1],s=useChoiceGroup({value:g,getKey:h,callBack:l,multiple:!1}),t=s.getOnChange,u=s.getChecked;useMemo(function(){f.forEach(function(a,b){u(a)&&r(b)})},[f,g]);var v=useScrollElements(f),w=v.refs,x=v.scrollTo,y=useRef(null),z=useOverflow({currentRef:y}),A=function(a,b){b&&0!==q&&(t(f[q-1])(a),x(q-1)),b||q===f.length-1||(t(f[q+1])(a),x(q+1))};return React.createElement("div",Object.assign({ref:b,className:cnSteps({size:e},[m])},n),z&&React.createElement(Button,{iconLeft:function iconLeft(){return React.createElement(IconArrowLeft,{size:"xs"})},view:"clear",onlyIcon:!0,size:"xs",type:"button",className:cnSteps("Button",{side:"left"}),onClick:function onClick(a){return A(a,!0)}}),React.createElement("div",{ref:y,className:cnSteps("List")},f.map(function(a,b){return React.createElement(StepsStep,{key:b,ref:w[b],className:cnSteps("Item"),label:null!==j&&void 0!==j&&j(a)?h(a):"".concat(b+1," ").concat(h(a)),size:e,active:q===b,onChange:t(a),completed:null===j||void 0===j?void 0:j(a),skipped:null===k||void 0===k?void 0:k(a),disabled:null===i||void 0===i?void 0:i(a)})})),z&&React.createElement(Button,{iconLeft:function iconLeft(){return React.createElement(IconArrowRight,{size:"xs"})},view:"clear",onlyIcon:!0,size:"xs",type:"button",className:cnSteps("Button",{side:"right"}),onClick:function onClick(a){return A(a,!1)}}))};export var Steps=forwardRef(StepsRender);export*from"./types";
2
2
  //# sourceMappingURL=Steps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Steps.js","names":["IconArrowLeft","IconArrowRight","React","forwardRef","useMemo","useRef","useState","useChoiceGroup","useOverflow","useScrollElements","cn","Button","withDefaultGetters","StepsStep","stepsDefaultSize","cnSteps","StepsRender","props","ref","size","items","value","getItemLabel","getItemDisabled","getItemCompleted","getItemSkipped","onChange","className","otherProps","activeStep","setActiveStep","getKey","callBack","multiple","getOnChange","getChecked","forEach","item","index","refs","scrollTo","stepsRef","isOverflow","currentRef","changeStep","e","prev","length","side","map","Steps"],"sources":["../../../../../src/components/Steps/Steps.tsx"],"sourcesContent":["import './Steps.css';\n\nimport { IconArrowLeft } from '@consta/icons/IconArrowLeft';\nimport { IconArrowRight } from '@consta/icons/IconArrowRight';\nimport React, { forwardRef, useMemo, useRef, useState } from 'react';\n\nimport { useChoiceGroup } from '../../hooks/useChoiceGroup/useChoiceGroup';\nimport { useOverflow } from '../../hooks/useOverflow/useOverflow';\nimport { useScrollElements } from '../../hooks/useScrollElements/useScrollElements';\nimport { cn } from '../../utils/bem';\nimport { Button } from '../Button/Button';\nimport { withDefaultGetters } from './helper';\nimport { StepsStep } from './StepsStep/StepsStep';\nimport { StepsCompnent, stepsDefaultSize, StepsProps } from './types';\n\nexport const cnSteps = cn('Steps');\n\nconst StepsRender = (props: StepsProps, ref: React.Ref<HTMLDivElement>) => {\n const {\n size = stepsDefaultSize,\n items,\n value,\n getItemLabel,\n getItemDisabled,\n getItemCompleted,\n getItemSkipped,\n onChange,\n className,\n ...otherProps\n } = withDefaultGetters(props);\n\n const [activeStep, setActiveStep] = useState<number>(-1);\n\n const { getOnChange, getChecked } = useChoiceGroup({\n value,\n getKey: getItemLabel,\n callBack: onChange,\n multiple: false,\n });\n\n useMemo(() => {\n items.forEach((item, index) => {\n if (getChecked(item)) {\n setActiveStep(index);\n }\n });\n }, [items, value]);\n\n const { refs, scrollTo } = useScrollElements(items);\n\n const stepsRef = useRef<HTMLDivElement>(null);\n\n const isOverflow = useOverflow({ currentRef: stepsRef });\n\n const changeStep = (e: React.MouseEvent, prev: boolean) => {\n if (prev && activeStep !== 0) {\n getOnChange(items[activeStep - 1])(e);\n scrollTo(activeStep - 1);\n }\n if (!prev && activeStep !== items.length - 1) {\n getOnChange(items[activeStep + 1])(e);\n scrollTo(activeStep + 1);\n }\n };\n\n return (\n <div ref={ref} className={cnSteps({ size }, [className])} {...otherProps}>\n {isOverflow && (\n <Button\n iconLeft={() => <IconArrowLeft size=\"xs\" />}\n view=\"clear\"\n onlyIcon\n size=\"xs\"\n className={cnSteps('Button', { side: 'left' })}\n onClick={(e) => changeStep(e, true)}\n />\n )}\n <div ref={stepsRef} className={cnSteps('List')}>\n {items.map((item, index) => (\n <StepsStep\n key={index}\n ref={refs[index] as React.RefObject<HTMLButtonElement>}\n className={cnSteps('Item')}\n label={\n getItemCompleted?.(item)\n ? getItemLabel(item)\n : `${index + 1} ${getItemLabel(item)}`\n }\n size={size}\n active={activeStep === index}\n onChange={getOnChange(item)}\n completed={getItemCompleted?.(item)}\n skipped={getItemSkipped?.(item)}\n disabled={getItemDisabled?.(item)}\n />\n ))}\n </div>\n {isOverflow && (\n <Button\n iconLeft={() => <IconArrowRight size=\"xs\" />}\n view=\"clear\"\n onlyIcon\n size=\"xs\"\n className={cnSteps('Button', { side: 'right' })}\n onClick={(e) => changeStep(e, false)}\n />\n )}\n </div>\n );\n};\n\nexport const Steps = forwardRef(StepsRender) as StepsCompnent;\n\nexport * from './types';\n"],"mappings":"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"}
1
+ {"version":3,"file":"Steps.js","names":["IconArrowLeft","IconArrowRight","React","forwardRef","useMemo","useRef","useState","useChoiceGroup","useOverflow","useScrollElements","cn","Button","withDefaultGetters","StepsStep","stepsDefaultSize","cnSteps","StepsRender","props","ref","size","items","value","getItemLabel","getItemDisabled","getItemCompleted","getItemSkipped","onChange","className","otherProps","activeStep","setActiveStep","getKey","callBack","multiple","getOnChange","getChecked","forEach","item","index","refs","scrollTo","stepsRef","isOverflow","currentRef","changeStep","e","prev","length","side","map","Steps"],"sources":["../../../../../src/components/Steps/Steps.tsx"],"sourcesContent":["import './Steps.css';\n\nimport { IconArrowLeft } from '@consta/icons/IconArrowLeft';\nimport { IconArrowRight } from '@consta/icons/IconArrowRight';\nimport React, { forwardRef, useMemo, useRef, useState } from 'react';\n\nimport { useChoiceGroup } from '../../hooks/useChoiceGroup/useChoiceGroup';\nimport { useOverflow } from '../../hooks/useOverflow/useOverflow';\nimport { useScrollElements } from '../../hooks/useScrollElements/useScrollElements';\nimport { cn } from '../../utils/bem';\nimport { Button } from '../Button/Button';\nimport { withDefaultGetters } from './helper';\nimport { StepsStep } from './StepsStep/StepsStep';\nimport { StepsCompnent, stepsDefaultSize, StepsProps } from './types';\n\nexport const cnSteps = cn('Steps');\n\nconst StepsRender = (props: StepsProps, ref: React.Ref<HTMLDivElement>) => {\n const {\n size = stepsDefaultSize,\n items,\n value,\n getItemLabel,\n getItemDisabled,\n getItemCompleted,\n getItemSkipped,\n onChange,\n className,\n ...otherProps\n } = withDefaultGetters(props);\n\n const [activeStep, setActiveStep] = useState<number>(-1);\n\n const { getOnChange, getChecked } = useChoiceGroup({\n value,\n getKey: getItemLabel,\n callBack: onChange,\n multiple: false,\n });\n\n useMemo(() => {\n items.forEach((item, index) => {\n if (getChecked(item)) {\n setActiveStep(index);\n }\n });\n }, [items, value]);\n\n const { refs, scrollTo } = useScrollElements(items);\n\n const stepsRef = useRef<HTMLDivElement>(null);\n\n const isOverflow = useOverflow({ currentRef: stepsRef });\n\n const changeStep = (e: React.MouseEvent, prev: boolean) => {\n if (prev && activeStep !== 0) {\n getOnChange(items[activeStep - 1])(e);\n scrollTo(activeStep - 1);\n }\n if (!prev && activeStep !== items.length - 1) {\n getOnChange(items[activeStep + 1])(e);\n scrollTo(activeStep + 1);\n }\n };\n\n return (\n <div ref={ref} className={cnSteps({ size }, [className])} {...otherProps}>\n {isOverflow && (\n <Button\n iconLeft={() => <IconArrowLeft size=\"xs\" />}\n view=\"clear\"\n onlyIcon\n size=\"xs\"\n type=\"button\"\n className={cnSteps('Button', { side: 'left' })}\n onClick={(e) => changeStep(e, true)}\n />\n )}\n <div ref={stepsRef} className={cnSteps('List')}>\n {items.map((item, index) => (\n <StepsStep\n key={index}\n ref={refs[index] as React.RefObject<HTMLButtonElement>}\n className={cnSteps('Item')}\n label={\n getItemCompleted?.(item)\n ? getItemLabel(item)\n : `${index + 1} ${getItemLabel(item)}`\n }\n size={size}\n active={activeStep === index}\n onChange={getOnChange(item)}\n completed={getItemCompleted?.(item)}\n skipped={getItemSkipped?.(item)}\n disabled={getItemDisabled?.(item)}\n />\n ))}\n </div>\n {isOverflow && (\n <Button\n iconLeft={() => <IconArrowRight size=\"xs\" />}\n view=\"clear\"\n onlyIcon\n size=\"xs\"\n type=\"button\"\n className={cnSteps('Button', { side: 'right' })}\n onClick={(e) => changeStep(e, false)}\n />\n )}\n </div>\n );\n};\n\nexport const Steps = forwardRef(StepsRender) as StepsCompnent;\n\nexport * from './types';\n"],"mappings":"yRAAA,oBAEA,OAASA,aAAT,KAA8B,6BAA9B,CACA,OAASC,cAAT,KAA+B,8BAA/B,CACA,MAAOC,MAAP,EAAgBC,UAAhB,CAA4BC,OAA5B,CAAqCC,MAArC,CAA6CC,QAA7C,KAA6D,OAA7D,CAEA,OAASC,cAAT,iDACA,OAASC,WAAT,2CACA,OAASC,iBAAT,uDACA,OAASC,EAAT,uBACA,OAASC,MAAT,wBACA,OAASC,kBAAT,gBACA,OAASC,SAAT,6BACA,OAAwBC,gBAAxB,eAEA,MAAO,IAAMC,QAAO,CAAGL,EAAE,CAAC,OAAD,CAAlB,CAEP,GAAMM,YAAW,CAAG,SAACC,CAAD,CAAoBC,CAApB,CAAuD,OAYrEN,kBAAkB,CAACK,CAAD,CAZmD,KAEvEE,IAFuE,CAEvEA,CAFuE,YAEhEL,gBAFgE,GAGvEM,CAHuE,GAGvEA,KAHuE,CAIvEC,CAJuE,GAIvEA,KAJuE,CAKvEC,CALuE,GAKvEA,YALuE,CAMvEC,CANuE,GAMvEA,eANuE,CAOvEC,CAPuE,GAOvEA,gBAPuE,CAQvEC,CARuE,GAQvEA,cARuE,CASvEC,CATuE,GASvEA,QATuE,CAUvEC,CAVuE,GAUvEA,SAVuE,CAWpEC,CAXoE,yCAcrCtB,QAAQ,CAAS,CAAC,CAAV,CAd6B,uBAclEuB,CAdkE,MActDC,CAdsD,QAgBrCvB,cAAc,CAAC,CACjDc,KAAK,CAALA,CADiD,CAEjDU,MAAM,CAAET,CAFyC,CAGjDU,QAAQ,CAAEN,CAHuC,CAIjDO,QAAQ,GAJyC,CAAD,CAhBuB,CAgBjEC,CAhBiE,GAgBjEA,WAhBiE,CAgBpDC,CAhBoD,GAgBpDA,UAhBoD,CAuBzE/B,OAAO,CAAC,UAAM,CACZgB,CAAK,CAACgB,OAAN,CAAc,SAACC,CAAD,CAAOC,CAAP,CAAiB,CACzBH,CAAU,CAACE,CAAD,CADe,EAE3BP,CAAa,CAACQ,CAAD,CAEhB,CAJD,CAKD,CANM,CAMJ,CAAClB,CAAD,CAAQC,CAAR,CANI,CAvBkE,OA+B9CZ,iBAAiB,CAACW,CAAD,CA/B6B,CA+BjEmB,CA/BiE,GA+BjEA,IA/BiE,CA+B3DC,CA/B2D,GA+B3DA,QA/B2D,CAiCnEC,CAAQ,CAAGpC,MAAM,CAAiB,IAAjB,CAjCkD,CAmCnEqC,CAAU,CAAGlC,WAAW,CAAC,CAAEmC,UAAU,CAAEF,CAAd,CAAD,CAnC2C,CAqCnEG,CAAU,CAAG,SAACC,CAAD,CAAsBC,CAAtB,CAAwC,CACrDA,CAAI,EAAmB,CAAf,GAAAjB,CAD6C,GAEvDK,CAAW,CAACd,CAAK,CAACS,CAAU,CAAG,CAAd,CAAN,CAAX,CAAmCgB,CAAnC,CAFuD,CAGvDL,CAAQ,CAACX,CAAU,CAAG,CAAd,CAH+C,EAKpDiB,CAAD,EAASjB,CAAU,GAAKT,CAAK,CAAC2B,MAAN,CAAe,CALc,GAMvDb,CAAW,CAACd,CAAK,CAACS,CAAU,CAAG,CAAd,CAAN,CAAX,CAAmCgB,CAAnC,CANuD,CAOvDL,CAAQ,CAACX,CAAU,CAAG,CAAd,CAP+C,CAS1D,CA9CwE,CAgDzE,MACE,0CAAK,GAAG,CAAEX,CAAV,CAAe,SAAS,CAAEH,OAAO,CAAC,CAAEI,IAAI,CAAJA,CAAF,CAAD,CAAW,CAACQ,CAAD,CAAX,CAAjC,EAA8DC,CAA9D,EACGc,CAAU,EACT,oBAAC,MAAD,EACE,QAAQ,CAAE,0BAAM,qBAAC,aAAD,EAAe,IAAI,CAAC,IAApB,EAAN,CADZ,CAEE,IAAI,CAAC,OAFP,CAGE,QAAQ,GAHV,CAIE,IAAI,CAAC,IAJP,CAKE,IAAI,CAAC,QALP,CAME,SAAS,CAAE3B,OAAO,CAAC,QAAD,CAAW,CAAEiC,IAAI,CAAE,MAAR,CAAX,CANpB,CAOE,OAAO,CAAE,iBAACH,CAAD,QAAOD,EAAU,CAACC,CAAD,IAAjB,CAPX,EAFJ,CAYE,2BAAK,GAAG,CAAEJ,CAAV,CAAoB,SAAS,CAAE1B,OAAO,CAAC,MAAD,CAAtC,EACGK,CAAK,CAAC6B,GAAN,CAAU,SAACZ,CAAD,CAAOC,CAAP,QACT,qBAAC,SAAD,EACE,GAAG,CAAEA,CADP,CAEE,GAAG,CAAEC,CAAI,CAACD,CAAD,CAFX,CAGE,SAAS,CAAEvB,OAAO,CAAC,MAAD,CAHpB,CAIE,KAAK,CACH,OAAAS,CAAgB,WAAhBA,CAAA,EAAAA,CAAgB,CAAGa,CAAH,CAAhB,CACIf,CAAY,CAACe,CAAD,CADhB,WAEOC,CAAK,CAAG,CAFf,aAEoBhB,CAAY,CAACe,CAAD,CAFhC,CALJ,CASE,IAAI,CAAElB,CATR,CAUE,MAAM,CAAEU,CAAU,GAAKS,CAVzB,CAWE,QAAQ,CAAEJ,CAAW,CAACG,CAAD,CAXvB,CAYE,SAAS,QAAEb,CAAF,WAAEA,CAAF,QAAEA,CAAgB,CAAGa,CAAH,CAZ7B,CAaE,OAAO,QAAEZ,CAAF,WAAEA,CAAF,QAAEA,CAAc,CAAGY,CAAH,CAbzB,CAcE,QAAQ,QAAEd,CAAF,WAAEA,CAAF,QAAEA,CAAe,CAAGc,CAAH,CAd3B,EADS,CAAV,CADH,CAZF,CAgCGK,CAAU,EACT,oBAAC,MAAD,EACE,QAAQ,CAAE,0BAAM,qBAAC,cAAD,EAAgB,IAAI,CAAC,IAArB,EAAN,CADZ,CAEE,IAAI,CAAC,OAFP,CAGE,QAAQ,GAHV,CAIE,IAAI,CAAC,IAJP,CAKE,IAAI,CAAC,QALP,CAME,SAAS,CAAE3B,OAAO,CAAC,QAAD,CAAW,CAAEiC,IAAI,CAAE,OAAR,CAAX,CANpB,CAOE,OAAO,CAAE,iBAACH,CAAD,QAAOD,EAAU,CAACC,CAAD,IAAjB,CAPX,EAjCJ,CA6CH,CA9FD,CAgGA,MAAO,IAAMK,MAAK,CAAG/C,UAAU,CAACa,WAAD,CAAxB,CAEP"}
@@ -1,2 +1,2 @@
1
- import"./TableFilterContainer.css";import React from"react";import{cn}from"../../../utils/bem";import{Button}from"../../Button/Button";import{Text}from"../../Text/Text";var cnTableFilterContainer=cn("TableFilterContainer");export var TableFilterContainer=function(a){var b=a.onConfirm,c=a.title,d=a.confirmButtonLabel,e=void 0===d?"\u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C":d,f=a.cancelButtonLabel,g=void 0===f?"\u041E\u0442\u043C\u0435\u043D\u0430":f,h=a.onCancel,i=a.children,j=a.className;return React.createElement("div",{className:cnTableFilterContainer(null,[j])},c&&React.createElement(Text,{view:"primary",size:"m",className:cnTableFilterContainer("Title"),lineHeight:"l"},c),i,React.createElement("div",{className:cnTableFilterContainer("Buttons")},React.createElement(Button,{label:g,size:"s",view:"ghost",onClick:h}),React.createElement(Button,{label:e,size:"s",view:"primary",onClick:b})))};
1
+ import"./TableFilterContainer.css";import React from"react";import{cn}from"../../../utils/bem";import{Button}from"../../Button/Button";import{Text}from"../../Text/Text";var cnTableFilterContainer=cn("TableFilterContainer");export var TableFilterContainer=function(a){var b=a.onConfirm,c=a.title,d=a.confirmButtonLabel,e=void 0===d?"\u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C":d,f=a.cancelButtonLabel,g=void 0===f?"\u041E\u0442\u043C\u0435\u043D\u0430":f,h=a.onCancel,i=a.children,j=a.className;return React.createElement("div",{className:cnTableFilterContainer(null,[j])},c&&React.createElement(Text,{view:"primary",size:"m",className:cnTableFilterContainer("Title"),lineHeight:"l"},c),i,React.createElement("div",{className:cnTableFilterContainer("Buttons")},React.createElement(Button,{type:"button",label:g,size:"s",view:"ghost",onClick:h}),React.createElement(Button,{type:"button",label:e,size:"s",view:"primary",onClick:b})))};
2
2
  //# sourceMappingURL=TableFilterContainer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableFilterContainer.js","names":["React","cn","Button","Text","cnTableFilterContainer","TableFilterContainer","onConfirm","title","confirmButtonLabel","cancelButtonLabel","onCancel","children","className"],"sources":["../../../../../../src/components/Table/FilterContainer/TableFilterContainer.tsx"],"sourcesContent":["import './TableFilterContainer.css';\n\nimport React from 'react';\n\nimport { cn } from '../../../utils/bem';\nimport { Button } from '../../Button/Button';\nimport { Text } from '../../Text/Text';\n\nconst cnTableFilterContainer = cn('TableFilterContainer');\n\nexport type TableFilterContainerProps = {\n onCancel: () => void;\n onConfirm: () => void;\n title?: string;\n confirmButtonLabel?: string;\n cancelButtonLabel?: string;\n className?: string;\n children?: React.ReactNode;\n};\n\nexport const TableFilterContainer: React.FC<TableFilterContainerProps> = ({\n onConfirm,\n title,\n confirmButtonLabel = 'Применить',\n cancelButtonLabel = 'Отмена',\n onCancel,\n children,\n className,\n}) => {\n return (\n <div className={cnTableFilterContainer(null, [className])}>\n {title && (\n <Text\n view=\"primary\"\n size=\"m\"\n className={cnTableFilterContainer('Title')}\n lineHeight=\"l\"\n >\n {title}\n </Text>\n )}\n {children}\n <div className={cnTableFilterContainer('Buttons')}>\n <Button\n label={cancelButtonLabel}\n size=\"s\"\n view=\"ghost\"\n onClick={onCancel}\n />\n <Button\n label={confirmButtonLabel}\n size=\"s\"\n view=\"primary\"\n onClick={onConfirm}\n />\n </div>\n </div>\n );\n};\n"],"mappings":"AAAA,mCAEA,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAASC,EAAT,0BACA,OAASC,MAAT,2BACA,OAASC,IAAT,uBAEA,GAAMC,uBAAsB,CAAGH,EAAE,CAAC,sBAAD,CAAjC,CAYA,MAAO,IAAMI,qBAAyD,CAAG,WAQnE,IAPJC,EAOI,GAPJA,SAOI,CANJC,CAMI,GANJA,KAMI,KALJC,kBAKI,CALJA,CAKI,YALiB,wDAKjB,OAJJC,iBAII,CAJJA,CAII,YAJgB,sCAIhB,GAHJC,CAGI,GAHJA,QAGI,CAFJC,CAEI,GAFJA,QAEI,CADJC,CACI,GADJA,SACI,CACJ,MACE,4BAAK,SAAS,CAAER,sBAAsB,CAAC,IAAD,CAAO,CAACQ,CAAD,CAAP,CAAtC,EACGL,CAAK,EACJ,oBAAC,IAAD,EACE,IAAI,CAAC,SADP,CAEE,IAAI,CAAC,GAFP,CAGE,SAAS,CAAEH,sBAAsB,CAAC,OAAD,CAHnC,CAIE,UAAU,CAAC,GAJb,EAMGG,CANH,CAFJ,CAWGI,CAXH,CAYE,2BAAK,SAAS,CAAEP,sBAAsB,CAAC,SAAD,CAAtC,EACE,oBAAC,MAAD,EACE,KAAK,CAAEK,CADT,CAEE,IAAI,CAAC,GAFP,CAGE,IAAI,CAAC,OAHP,CAIE,OAAO,CAAEC,CAJX,EADF,CAOE,oBAAC,MAAD,EACE,KAAK,CAAEF,CADT,CAEE,IAAI,CAAC,GAFP,CAGE,IAAI,CAAC,SAHP,CAIE,OAAO,CAAEF,CAJX,EAPF,CAZF,CA4BH,CAtCM"}
1
+ {"version":3,"file":"TableFilterContainer.js","names":["React","cn","Button","Text","cnTableFilterContainer","TableFilterContainer","onConfirm","title","confirmButtonLabel","cancelButtonLabel","onCancel","children","className"],"sources":["../../../../../../src/components/Table/FilterContainer/TableFilterContainer.tsx"],"sourcesContent":["import './TableFilterContainer.css';\n\nimport React from 'react';\n\nimport { cn } from '../../../utils/bem';\nimport { Button } from '../../Button/Button';\nimport { Text } from '../../Text/Text';\n\nconst cnTableFilterContainer = cn('TableFilterContainer');\n\nexport type TableFilterContainerProps = {\n onCancel: () => void;\n onConfirm: () => void;\n title?: string;\n confirmButtonLabel?: string;\n cancelButtonLabel?: string;\n className?: string;\n children?: React.ReactNode;\n};\n\nexport const TableFilterContainer: React.FC<TableFilterContainerProps> = ({\n onConfirm,\n title,\n confirmButtonLabel = 'Применить',\n cancelButtonLabel = 'Отмена',\n onCancel,\n children,\n className,\n}) => {\n return (\n <div className={cnTableFilterContainer(null, [className])}>\n {title && (\n <Text\n view=\"primary\"\n size=\"m\"\n className={cnTableFilterContainer('Title')}\n lineHeight=\"l\"\n >\n {title}\n </Text>\n )}\n {children}\n <div className={cnTableFilterContainer('Buttons')}>\n <Button\n type=\"button\"\n label={cancelButtonLabel}\n size=\"s\"\n view=\"ghost\"\n onClick={onCancel}\n />\n <Button\n type=\"button\"\n label={confirmButtonLabel}\n size=\"s\"\n view=\"primary\"\n onClick={onConfirm}\n />\n </div>\n </div>\n );\n};\n"],"mappings":"AAAA,mCAEA,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAASC,EAAT,0BACA,OAASC,MAAT,2BACA,OAASC,IAAT,uBAEA,GAAMC,uBAAsB,CAAGH,EAAE,CAAC,sBAAD,CAAjC,CAYA,MAAO,IAAMI,qBAAyD,CAAG,WAQnE,IAPJC,EAOI,GAPJA,SAOI,CANJC,CAMI,GANJA,KAMI,KALJC,kBAKI,CALJA,CAKI,YALiB,wDAKjB,OAJJC,iBAII,CAJJA,CAII,YAJgB,sCAIhB,GAHJC,CAGI,GAHJA,QAGI,CAFJC,CAEI,GAFJA,QAEI,CADJC,CACI,GADJA,SACI,CACJ,MACE,4BAAK,SAAS,CAAER,sBAAsB,CAAC,IAAD,CAAO,CAACQ,CAAD,CAAP,CAAtC,EACGL,CAAK,EACJ,oBAAC,IAAD,EACE,IAAI,CAAC,SADP,CAEE,IAAI,CAAC,GAFP,CAGE,SAAS,CAAEH,sBAAsB,CAAC,OAAD,CAHnC,CAIE,UAAU,CAAC,GAJb,EAMGG,CANH,CAFJ,CAWGI,CAXH,CAYE,2BAAK,SAAS,CAAEP,sBAAsB,CAAC,SAAD,CAAtC,EACE,oBAAC,MAAD,EACE,IAAI,CAAC,QADP,CAEE,KAAK,CAAEK,CAFT,CAGE,IAAI,CAAC,GAHP,CAIE,IAAI,CAAC,OAJP,CAKE,OAAO,CAAEC,CALX,EADF,CAQE,oBAAC,MAAD,EACE,IAAI,CAAC,QADP,CAEE,KAAK,CAAEF,CAFT,CAGE,IAAI,CAAC,GAHP,CAIE,IAAI,CAAC,SAJP,CAKE,OAAO,CAAEF,CALX,EARF,CAZF,CA8BH,CAxCM"}
@@ -1,2 +1,2 @@
1
- import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import"./TableFilterTooltip.css";import{IconFunnel}from"@consta/icons/IconFunnel";import React,{useRef,useState}from"react";import{Transition}from"react-transition-group";import{animateTimeout,cnMixPopoverAnimate}from"../../../mixs/MixPopoverAnimate/MixPopoverAnimate";import{cn}from"../../../utils/bem";import{Button}from"../../Button/Button";import{Popover}from"../../Popover/Popover";import{Text}from"../../Text/Text";var cnTableFilterTooltip=cn("TableFilterTooltip");export var TableFilterTooltip=function(a){var b=a.field,c=a.isOpened,d=a.options,e=a.values,f=a.className,g=a.children,h=a.onChange,i=a.onToggle,j=useState("downRight"),k=_slicedToArray(j,2),l=k[0],m=k[1],n=useRef(null),o=useRef(null);return React.createElement(React.Fragment,null,React.createElement(Button,{ref:n,size:"xs",iconSize:"s",view:"clear",onlyIcon:!0,onClick:i,className:cnTableFilterTooltip("Button",{isOpened:c},[f]),iconLeft:IconFunnel}),React.createElement(Transition,{in:c,unmountOnExit:!0,nodeRef:o,timeout:animateTimeout},function(a){return React.createElement(Popover,{anchorRef:n,possibleDirections:["downRight","downLeft"],direction:"downRight",offset:4,arrowOffset:12,ref:o,onSetDirection:m,onClickOutside:i,className:cnTableFilterTooltip("Popover",[cnMixPopoverAnimate({animate:a,direction:l})])},g||React.createElement("div",{className:cnTableFilterTooltip("Content")},React.createElement(Text,{as:"div",size:"xs",view:"primary",className:cnTableFilterTooltip("Title")},"\u0424\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E \u0443\u0441\u043B\u043E\u0432\u0438\u044E"),React.createElement("select",{className:cnTableFilterTooltip("Select"),value:_toConsumableArray(e),multiple:!0,onChange:function onChange(a){h(b,Array.from(a.target.selectedOptions).map(function(a){return a.value}))}},d.map(function(a){return React.createElement("option",{key:a.value,className:cnTableFilterTooltip("Option"),value:a.value,title:a.label},a.label)}))))}))};
1
+ import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import"./TableFilterTooltip.css";import{IconFunnel}from"@consta/icons/IconFunnel";import React,{useRef,useState}from"react";import{Transition}from"react-transition-group";import{animateTimeout,cnMixPopoverAnimate}from"../../../mixs/MixPopoverAnimate/MixPopoverAnimate";import{cn}from"../../../utils/bem";import{Button}from"../../Button/Button";import{Popover}from"../../Popover/Popover";import{Text}from"../../Text/Text";var cnTableFilterTooltip=cn("TableFilterTooltip");export var TableFilterTooltip=function(a){var b=a.field,c=a.isOpened,d=a.options,e=a.values,f=a.className,g=a.children,h=a.onChange,i=a.onToggle,j=useState("downRight"),k=_slicedToArray(j,2),l=k[0],m=k[1],n=useRef(null),o=useRef(null);return React.createElement(React.Fragment,null,React.createElement(Button,{type:"button",ref:n,size:"xs",iconSize:"s",view:"clear",onlyIcon:!0,onClick:i,className:cnTableFilterTooltip("Button",{isOpened:c},[f]),iconLeft:IconFunnel}),React.createElement(Transition,{in:c,unmountOnExit:!0,nodeRef:o,timeout:animateTimeout},function(a){return React.createElement(Popover,{anchorRef:n,possibleDirections:["downRight","downLeft"],direction:"downRight",offset:4,arrowOffset:12,ref:o,onSetDirection:m,onClickOutside:i,className:cnTableFilterTooltip("Popover",[cnMixPopoverAnimate({animate:a,direction:l})])},g||React.createElement("div",{className:cnTableFilterTooltip("Content")},React.createElement(Text,{as:"div",size:"xs",view:"primary",className:cnTableFilterTooltip("Title")},"\u0424\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E \u0443\u0441\u043B\u043E\u0432\u0438\u044E"),React.createElement("select",{className:cnTableFilterTooltip("Select"),value:_toConsumableArray(e),multiple:!0,onChange:function onChange(a){h(b,Array.from(a.target.selectedOptions).map(function(a){return a.value}))}},d.map(function(a){return React.createElement("option",{key:a.value,className:cnTableFilterTooltip("Option"),value:a.value,title:a.label},a.label)}))))}))};
2
2
  //# sourceMappingURL=TableFilterTooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableFilterTooltip.js","names":["IconFunnel","React","useRef","useState","Transition","animateTimeout","cnMixPopoverAnimate","cn","Button","Popover","Text","cnTableFilterTooltip","TableFilterTooltip","field","isOpened","options","values","className","children","onChange","onToggle","direction","setDirection","buttonRef","popoverRef","animate","e","Array","from","target","selectedOptions","map","option","value","label"],"sources":["../../../../../../src/components/Table/FilterTooltip/TableFilterTooltip.tsx"],"sourcesContent":["import './TableFilterTooltip.css';\n\nimport { IconFunnel } from '@consta/icons/IconFunnel';\nimport React, { useRef, useState } from 'react';\nimport { Transition } from 'react-transition-group';\n\nimport {\n animateTimeout,\n cnMixPopoverAnimate,\n} from '../../../mixs/MixPopoverAnimate/MixPopoverAnimate';\nimport { cn } from '../../../utils/bem';\nimport { Button } from '../../Button/Button';\nimport { Direction, Popover } from '../../Popover/Popover';\nimport { Text } from '../../Text/Text';\n\nconst cnTableFilterTooltip = cn('TableFilterTooltip');\n\ntype Values = string[];\n\ntype Props = {\n options: Array<{\n value: Values[number];\n label: string;\n }>;\n values: Values;\n field: string;\n isOpened: boolean;\n onChange: (field: string, values: Values) => void;\n onToggle: () => void;\n className?: string;\n children?: React.ReactNode;\n};\n\nexport const TableFilterTooltip: React.FC<Props> = ({\n field,\n isOpened,\n options,\n values,\n className,\n children,\n onChange,\n onToggle,\n}) => {\n const [direction, setDirection] = useState<Direction>('downRight');\n\n const buttonRef = useRef<HTMLButtonElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n\n return (\n <>\n <Button\n ref={buttonRef}\n size=\"xs\"\n iconSize=\"s\"\n view=\"clear\"\n onlyIcon\n onClick={onToggle}\n className={cnTableFilterTooltip('Button', { isOpened }, [className])}\n iconLeft={IconFunnel}\n />\n <Transition\n in={isOpened}\n unmountOnExit\n nodeRef={popoverRef}\n timeout={animateTimeout}\n >\n {(animate) => (\n <Popover\n anchorRef={buttonRef}\n possibleDirections={['downRight', 'downLeft']}\n direction=\"downRight\"\n offset={4}\n arrowOffset={12}\n ref={popoverRef}\n onSetDirection={setDirection}\n onClickOutside={onToggle}\n className={cnTableFilterTooltip('Popover', [\n cnMixPopoverAnimate({ animate, direction }),\n ])}\n >\n {children || (\n <div className={cnTableFilterTooltip('Content')}>\n <Text\n as=\"div\"\n size=\"xs\"\n view=\"primary\"\n className={cnTableFilterTooltip('Title')}\n >\n Фильтровать по условию\n </Text>\n <select\n className={cnTableFilterTooltip('Select')}\n value={[...values]}\n multiple\n onChange={(e): void => {\n onChange(\n field,\n Array.from(e.target.selectedOptions).map(\n (option) => option.value,\n ),\n );\n }}\n >\n {options.map((option) => (\n <option\n key={option.value}\n className={cnTableFilterTooltip('Option')}\n value={option.value}\n title={option.label}\n >\n {option.label}\n </option>\n ))}\n </select>\n </div>\n )}\n </Popover>\n )}\n </Transition>\n </>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"TableFilterTooltip.js","names":["IconFunnel","React","useRef","useState","Transition","animateTimeout","cnMixPopoverAnimate","cn","Button","Popover","Text","cnTableFilterTooltip","TableFilterTooltip","field","isOpened","options","values","className","children","onChange","onToggle","direction","setDirection","buttonRef","popoverRef","animate","e","Array","from","target","selectedOptions","map","option","value","label"],"sources":["../../../../../../src/components/Table/FilterTooltip/TableFilterTooltip.tsx"],"sourcesContent":["import './TableFilterTooltip.css';\n\nimport { IconFunnel } from '@consta/icons/IconFunnel';\nimport React, { useRef, useState } from 'react';\nimport { Transition } from 'react-transition-group';\n\nimport {\n animateTimeout,\n cnMixPopoverAnimate,\n} from '../../../mixs/MixPopoverAnimate/MixPopoverAnimate';\nimport { cn } from '../../../utils/bem';\nimport { Button } from '../../Button/Button';\nimport { Direction, Popover } from '../../Popover/Popover';\nimport { Text } from '../../Text/Text';\n\nconst cnTableFilterTooltip = cn('TableFilterTooltip');\n\ntype Values = string[];\n\ntype Props = {\n options: Array<{\n value: Values[number];\n label: string;\n }>;\n values: Values;\n field: string;\n isOpened: boolean;\n onChange: (field: string, values: Values) => void;\n onToggle: () => void;\n className?: string;\n children?: React.ReactNode;\n};\n\nexport const TableFilterTooltip: React.FC<Props> = ({\n field,\n isOpened,\n options,\n values,\n className,\n children,\n onChange,\n onToggle,\n}) => {\n const [direction, setDirection] = useState<Direction>('downRight');\n\n const buttonRef = useRef<HTMLButtonElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n\n return (\n <>\n <Button\n type=\"button\"\n ref={buttonRef}\n size=\"xs\"\n iconSize=\"s\"\n view=\"clear\"\n onlyIcon\n onClick={onToggle}\n className={cnTableFilterTooltip('Button', { isOpened }, [className])}\n iconLeft={IconFunnel}\n />\n <Transition\n in={isOpened}\n unmountOnExit\n nodeRef={popoverRef}\n timeout={animateTimeout}\n >\n {(animate) => (\n <Popover\n anchorRef={buttonRef}\n possibleDirections={['downRight', 'downLeft']}\n direction=\"downRight\"\n offset={4}\n arrowOffset={12}\n ref={popoverRef}\n onSetDirection={setDirection}\n onClickOutside={onToggle}\n className={cnTableFilterTooltip('Popover', [\n cnMixPopoverAnimate({ animate, direction }),\n ])}\n >\n {children || (\n <div className={cnTableFilterTooltip('Content')}>\n <Text\n as=\"div\"\n size=\"xs\"\n view=\"primary\"\n className={cnTableFilterTooltip('Title')}\n >\n Фильтровать по условию\n </Text>\n <select\n className={cnTableFilterTooltip('Select')}\n value={[...values]}\n multiple\n onChange={(e): void => {\n onChange(\n field,\n Array.from(e.target.selectedOptions).map(\n (option) => option.value,\n ),\n );\n }}\n >\n {options.map((option) => (\n <option\n key={option.value}\n className={cnTableFilterTooltip('Option')}\n value={option.value}\n title={option.label}\n >\n {option.label}\n </option>\n ))}\n </select>\n </div>\n )}\n </Popover>\n )}\n </Transition>\n </>\n );\n};\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import _defineProperty from"@babel/runtime/helpers/defineProperty";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import"./TableHeader.css";import React from"react";import{cn}from"../../../utils/bem";import{Button}from"../../Button/Button";import{TableCell}from"../Cell/TableCell";import{getOptionsForFilters}from"../filtering";import{TableFilterTooltip}from"../FilterTooltip/TableFilterTooltip";var cnTableHeader=cn("TableHeader");export var levelTypes=["high","low","default"];export var TableHeader=function(a){var b=a.isStickyHeader,c=a.headersWithMetaData,d=a.headerRowsHeights,f=a.headerRowsRefs,g=a.getStickyLeftOffset,h=a.stickyColumnsGrid,i=a.showVerticalCellShadow,j=a.headerVerticalAlign,k=a.getSortIcon,l=a.handleSortClick,m=a.handleFilterTogglerClick,n=a.handleCellClick,o=a.handleTooltipSave,p=a.filters,q=a.visibleFilter,r=a.selectedFilters,s=a.showHorizontalCellShadow,t=a.borderBetweenColumns,u=d.reduce(function(c,a){return c+a},0),v={"--table-header-height":"".concat(u,"px")},w=function(a){var b;return 1<=+a.position.colSpan?"high":null!==(b=a.position)&&void 0!==b&&b.smallTextSize?"low":"default"},x=function(a){var b=[],d=function(a){a.columns?a.columns.forEach(function(a){return d(c.find(function(b){return b.title===a.title}))}):b.push(a)};return d(a),b.some(function(a){return a.isResized})},y=function(a){var b,c,d,e;if(!p||!a.accessor)return null;var f=p.find(function(b){var c=b.field;return c===a.accessor}),g=null===f||void 0===f||null===(b=f.component)||void 0===b?void 0:b.name,h=null!==(c=null===f||void 0===f||null===(d=f.component)||void 0===d?void 0:d.props)&&void 0!==c?c:{},i=m(a.accessor),j=null===f||void 0===f?void 0:f.id;return a.filterable?React.createElement(TableFilterTooltip,{field:a.accessor,isOpened:q===a.accessor,options:getOptionsForFilters(p,a.accessor),values:r[a.accessor].selected||[],onChange:o,onToggle:m(a.accessor),className:cnTableHeader("Icon",{type:"filter"})},g&&React.createElement(g,Object.assign({},h,{onConfirm:function handleFilterSave(b){j&&o(a.accessor,[j],b),i()},filterValue:null===(e=r[a.accessor])||void 0===e?void 0:e.value,onCancel:m(a.accessor)}))):null},z=function(a){return a.control?React.createElement("div",{className:cnTableHeader("\u0421ontrol")},a.control({column:a})):null};return React.createElement(React.Fragment,null,React.createElement("div",{className:cnTableHeader("Row",{withVerticalBorder:t})},c.map(function(a,m){var o,p,q,r,s={};return a.position.colSpan&&(s.gridColumnEnd="span ".concat(a.position.colSpan)),a.position.rowSpan&&(s.gridRowEnd="span ".concat(a.position.rowSpan)),b&&(s.top=d.slice(0,a.position.level).reduce(function(c,a){return c+a},0)),React.createElement(TableCell,{type:"header",key:m,ref:function ref(a){f.current[m]=a},style:_objectSpread(_objectSpread({},s),{},{left:g(a.position.gridIndex,a.position.topHeaderGridIndex)}),isSticky:b,isResized:x(a),column:a,verticalAlign:j,onContextMenu:function onContextMenu(a){return n({e:a,type:"contextMenu",columnIdx:m,ref:{current:f.current[m]}})},onClick:function onClick(a){return n({e:a,type:"click",columnIdx:m,ref:{current:f.current[m]}})},className:cnTableHeader("Cell",{isFirstColumn:null===(o=a.position)||void 0===o?void 0:o.isFirst,isFirstRow:0===a.position.level,isLastInColumn:(null===(p=a.position)||void 0===p?void 0:p.topHeaderGridIndex)!==(null===(q=c[m+1])||void 0===q||null===(r=q.position)||void 0===r?void 0:r.topHeaderGridIndex),level:w(a)}),showVerticalShadow:i&&a.position.gridIndex+((null===a||void 0===a?void 0:a.position.colSpan)||1)===h},a.title,React.createElement("div",{className:cnTableHeader("Buttons",{isSortingActive:a.isSortingActive,isFilterActive:a.isFilterActive,verticalAlign:j})},a.sortable&&React.createElement(Button,{size:"xs",iconSize:"s",view:"clear",onlyIcon:!0,onClick:function onClick(){return l(a)},iconLeft:k(a),className:cnTableHeader("Icon",{type:"sort"})}),y(a),z(a)))})),React.createElement("div",{className:cnTableHeader("ShadowWrapper"),style:v},React.createElement("div",{className:cnTableHeader("Shadow",{show:s&&b})})))};
1
+ import _defineProperty from"@babel/runtime/helpers/defineProperty";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import"./TableHeader.css";import React from"react";import{cn}from"../../../utils/bem";import{Button}from"../../Button/Button";import{TableCell}from"../Cell/TableCell";import{getOptionsForFilters}from"../filtering";import{TableFilterTooltip}from"../FilterTooltip/TableFilterTooltip";var cnTableHeader=cn("TableHeader");export var levelTypes=["high","low","default"];export var TableHeader=function(a){var b=a.isStickyHeader,c=a.headersWithMetaData,d=a.headerRowsHeights,f=a.headerRowsRefs,g=a.getStickyLeftOffset,h=a.stickyColumnsGrid,i=a.showVerticalCellShadow,j=a.headerVerticalAlign,k=a.getSortIcon,l=a.handleSortClick,m=a.handleFilterTogglerClick,n=a.handleCellClick,o=a.handleTooltipSave,p=a.filters,q=a.visibleFilter,r=a.selectedFilters,s=a.showHorizontalCellShadow,t=a.borderBetweenColumns,u=d.reduce(function(c,a){return c+a},0),v={"--table-header-height":"".concat(u,"px")},w=function(a){var b;return 1<=+a.position.colSpan?"high":null!==(b=a.position)&&void 0!==b&&b.smallTextSize?"low":"default"},x=function(a){var b=[],d=function(a){a.columns?a.columns.forEach(function(a){return d(c.find(function(b){return b.title===a.title}))}):b.push(a)};return d(a),b.some(function(a){return a.isResized})},y=function(a){var b,c,d,e;if(!p||!a.accessor)return null;var f=p.find(function(b){var c=b.field;return c===a.accessor}),g=null===f||void 0===f||null===(b=f.component)||void 0===b?void 0:b.name,h=null!==(c=null===f||void 0===f||null===(d=f.component)||void 0===d?void 0:d.props)&&void 0!==c?c:{},i=m(a.accessor),j=null===f||void 0===f?void 0:f.id;return a.filterable?React.createElement(TableFilterTooltip,{field:a.accessor,isOpened:q===a.accessor,options:getOptionsForFilters(p,a.accessor),values:r[a.accessor].selected||[],onChange:o,onToggle:m(a.accessor),className:cnTableHeader("Icon",{type:"filter"})},g&&React.createElement(g,Object.assign({},h,{onConfirm:function handleFilterSave(b){j&&o(a.accessor,[j],b),i()},filterValue:null===(e=r[a.accessor])||void 0===e?void 0:e.value,onCancel:m(a.accessor)}))):null},z=function(a){return a.control?React.createElement("div",{className:cnTableHeader("\u0421ontrol")},a.control({column:a})):null};return React.createElement(React.Fragment,null,React.createElement("div",{className:cnTableHeader("Row",{withVerticalBorder:t})},c.map(function(a,m){var o,p,q,r,s={};return a.position.colSpan&&(s.gridColumnEnd="span ".concat(a.position.colSpan)),a.position.rowSpan&&(s.gridRowEnd="span ".concat(a.position.rowSpan)),b&&(s.top=d.slice(0,a.position.level).reduce(function(c,a){return c+a},0)),React.createElement(TableCell,{type:"header",key:m,ref:function ref(a){f.current[m]=a},style:_objectSpread(_objectSpread({},s),{},{left:g(a.position.gridIndex,a.position.topHeaderGridIndex)}),isSticky:b,isResized:x(a),column:a,verticalAlign:j,onContextMenu:function onContextMenu(a){return n({e:a,type:"contextMenu",columnIdx:m,ref:{current:f.current[m]}})},onClick:function onClick(a){return n({e:a,type:"click",columnIdx:m,ref:{current:f.current[m]}})},className:cnTableHeader("Cell",{isFirstColumn:null===(o=a.position)||void 0===o?void 0:o.isFirst,isFirstRow:0===a.position.level,isLastInColumn:(null===(p=a.position)||void 0===p?void 0:p.topHeaderGridIndex)!==(null===(q=c[m+1])||void 0===q||null===(r=q.position)||void 0===r?void 0:r.topHeaderGridIndex),level:w(a)}),showVerticalShadow:i&&a.position.gridIndex+((null===a||void 0===a?void 0:a.position.colSpan)||1)===h},a.title,React.createElement("div",{className:cnTableHeader("Buttons",{isSortingActive:a.isSortingActive,isFilterActive:a.isFilterActive,verticalAlign:j})},a.sortable&&React.createElement(Button,{type:"button",size:"xs",iconSize:"s",view:"clear",onlyIcon:!0,onClick:function onClick(){return l(a)},iconLeft:k(a),className:cnTableHeader("Icon",{type:"sort"})}),y(a),z(a)))})),React.createElement("div",{className:cnTableHeader("ShadowWrapper"),style:v},React.createElement("div",{className:cnTableHeader("Shadow",{show:s&&b})})))};
2
2
  //# sourceMappingURL=TableHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableHeader.js","names":["React","cn","Button","TableCell","getOptionsForFilters","TableFilterTooltip","cnTableHeader","levelTypes","TableHeader","isStickyHeader","headersWithMetaData","headerRowsHeights","headerRowsRefs","getStickyLeftOffset","stickyColumnsGrid","showVerticalCellShadow","headerVerticalAlign","getSortIcon","handleSortClick","handleFilterTogglerClick","handleCellClick","handleTooltipSave","filters","visibleFilter","selectedFilters","showHorizontalCellShadow","borderBetweenColumns","tableHeaderHeight","reduce","a","b","tableHeaderStyle","getLevelType","column","position","colSpan","smallTextSize","isColumnResized","headers","build","header","columns","forEach","col","find","head","title","push","some","isResized","getFilterPopover","accessor","curFilter","field","FilterComponent","component","name","filterComponentProps","props","onToggle","filterId","id","filterable","selected","type","handleFilterSave","filterValue","value","control","withVerticalBorder","map","columnIdx","style","gridColumnEnd","rowSpan","gridRowEnd","top","slice","level","ref","current","left","gridIndex","topHeaderGridIndex","e","isFirstColumn","isFirst","isFirstRow","isLastInColumn","isSortingActive","isFilterActive","verticalAlign","sortable","show"],"sources":["../../../../../../src/components/Table/Header/TableHeader.tsx"],"sourcesContent":["import './TableHeader.css';\n\nimport React from 'react';\n\nimport { cn } from '../../../utils/bem';\nimport { Button } from '../../Button/Button';\nimport { TableCell } from '../Cell/TableCell';\nimport {\n FieldSelectedValues,\n Filters,\n getOptionsForFilters,\n SelectedFilters,\n} from '../filtering';\nimport { TableFilterTooltip } from '../FilterTooltip/TableFilterTooltip';\nimport { Header } from '../helpers';\nimport {\n ColumnMetaData,\n HeaderVerticalAlign,\n onCellClick,\n TableColumn,\n TableRow,\n} from '../Table';\n\nconst cnTableHeader = cn('TableHeader');\n\ntype TableCSSCustomProperty = {\n '--table-header-height': string;\n};\n\nexport const levelTypes = ['high', 'low', 'default'] as const;\nexport type LevelType = typeof levelTypes[number];\n\ntype Props<T extends TableRow> = {\n isStickyHeader: boolean;\n headersWithMetaData: Array<Header<T> & ColumnMetaData>;\n headerRowsHeights: Array<number>;\n headerRowsRefs: React.MutableRefObject<Record<number, HTMLDivElement | null>>;\n getStickyLeftOffset: (\n columnIndex: number,\n topHeaderGridIndex: number,\n ) => number | undefined;\n stickyColumnsGrid: number;\n showVerticalCellShadow: boolean;\n headerVerticalAlign: HeaderVerticalAlign;\n getSortIcon: (column: Header<T>) => React.FC;\n handleSortClick: (column: TableColumn<T>) => void;\n handleFilterTogglerClick: (id: string) => () => void;\n handleCellClick: onCellClick;\n handleTooltipSave: (\n field: string,\n tooltipSelectedFilters: FieldSelectedValues,\n value?: unknown,\n ) => void;\n filters: Filters<T> | undefined;\n visibleFilter: string | null;\n selectedFilters: SelectedFilters;\n showHorizontalCellShadow: boolean;\n borderBetweenColumns: boolean;\n};\n\nexport const TableHeader = <T extends TableRow>({\n isStickyHeader,\n headersWithMetaData,\n headerRowsHeights,\n headerRowsRefs,\n getStickyLeftOffset,\n stickyColumnsGrid,\n showVerticalCellShadow,\n headerVerticalAlign,\n getSortIcon,\n handleSortClick,\n handleFilterTogglerClick,\n handleCellClick,\n handleTooltipSave,\n filters,\n visibleFilter,\n selectedFilters,\n showHorizontalCellShadow,\n borderBetweenColumns,\n}: Props<T>): React.ReactElement => {\n const tableHeaderHeight = headerRowsHeights.reduce(\n (a: number, b: number) => a + b,\n 0,\n );\n const tableHeaderStyle: React.CSSProperties & TableCSSCustomProperty = {\n '--table-header-height': `${tableHeaderHeight}px`,\n };\n const getLevelType = (column: Header<T> & ColumnMetaData): LevelType => {\n if (Number(column.position!.colSpan) >= 1) return 'high';\n if (column.position?.smallTextSize) return 'low';\n return 'default';\n };\n const isColumnResized = (column: Header<T> & ColumnMetaData): boolean => {\n const headers: Array<Header<T> & ColumnMetaData> = [];\n const build = (header: Header<T> & ColumnMetaData) => {\n if (!header.columns) {\n headers.push(header);\n } else {\n header.columns.forEach((col) =>\n build(\n headersWithMetaData.find(\n (head) => head.title === col.title,\n ) as Header<T> & ColumnMetaData,\n ),\n );\n }\n };\n build(column);\n return headers.some((header) => header.isResized);\n };\n\n const getFilterPopover = (\n column: Header<T> & ColumnMetaData,\n ): React.ReactNode => {\n if (!filters || !column.accessor) {\n return null;\n }\n const curFilter = filters.find(({ field }) => field === column.accessor);\n const FilterComponent = curFilter?.component?.name;\n const filterComponentProps = curFilter?.component?.props ?? {};\n const onToggle = handleFilterTogglerClick(column.accessor);\n const filterId = curFilter?.id;\n const handleFilterSave = (filterValue?: unknown) => {\n if (filterId) {\n handleTooltipSave(column.accessor!, [filterId], filterValue);\n }\n onToggle();\n };\n\n return column.filterable ? (\n <TableFilterTooltip\n field={column.accessor}\n isOpened={visibleFilter === column.accessor}\n options={getOptionsForFilters(filters, column.accessor)}\n values={selectedFilters[column.accessor].selected || []}\n onChange={handleTooltipSave}\n onToggle={handleFilterTogglerClick(column.accessor)}\n className={cnTableHeader('Icon', { type: 'filter' })}\n >\n {FilterComponent && (\n <FilterComponent\n {...filterComponentProps}\n onConfirm={handleFilterSave}\n filterValue={selectedFilters[column.accessor]?.value}\n onCancel={handleFilterTogglerClick(column.accessor)}\n />\n )}\n </TableFilterTooltip>\n ) : null;\n };\n\n const control = (column: Header<T> & ColumnMetaData): React.ReactNode => {\n if (column.control) {\n return (\n <div className={cnTableHeader('Сontrol')}>\n {column.control({ column })}\n </div>\n );\n }\n\n return null;\n };\n\n return (\n <>\n <div\n className={cnTableHeader('Row', {\n withVerticalBorder: borderBetweenColumns,\n })}\n >\n {headersWithMetaData.map(\n (column: Header<T> & ColumnMetaData, columnIdx: number) => {\n const style: React.CSSProperties = {};\n if (column.position!.colSpan) {\n style.gridColumnEnd = `span ${column.position!.colSpan}`;\n }\n if (column.position!.rowSpan) {\n style.gridRowEnd = `span ${column.position!.rowSpan}`;\n }\n if (isStickyHeader) {\n style.top = headerRowsHeights\n .slice(0, column.position!.level)\n .reduce((a: number, b: number) => a + b, 0);\n }\n return (\n <TableCell\n type=\"header\"\n key={columnIdx}\n ref={(ref: HTMLDivElement | null): void => {\n /* eslint-disable-next-line no-param-reassign */\n headerRowsRefs.current[columnIdx] = ref;\n }}\n style={{\n ...style,\n left: getStickyLeftOffset(\n column.position!.gridIndex,\n column.position!.topHeaderGridIndex,\n ),\n }}\n isSticky={isStickyHeader}\n isResized={isColumnResized(column)}\n column={column}\n verticalAlign={headerVerticalAlign}\n onContextMenu={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'contextMenu',\n columnIdx,\n ref: { current: headerRowsRefs.current[columnIdx] },\n })\n }\n onClick={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'click',\n columnIdx,\n ref: { current: headerRowsRefs.current[columnIdx] },\n })\n }\n className={cnTableHeader('Cell', {\n isFirstColumn: column.position?.isFirst,\n isFirstRow: column.position!.level === 0,\n isLastInColumn:\n column.position?.topHeaderGridIndex !==\n headersWithMetaData[columnIdx + 1]?.position\n ?.topHeaderGridIndex,\n level: getLevelType(column),\n })}\n showVerticalShadow={\n showVerticalCellShadow &&\n column.position!.gridIndex! +\n (column?.position!.colSpan || 1) ===\n stickyColumnsGrid\n }\n >\n {column.title}\n\n <div\n className={cnTableHeader('Buttons', {\n isSortingActive: column.isSortingActive,\n isFilterActive: column.isFilterActive,\n verticalAlign: headerVerticalAlign,\n })}\n >\n {column.sortable && (\n <Button\n size=\"xs\"\n iconSize=\"s\"\n view=\"clear\"\n onlyIcon\n onClick={(): void => handleSortClick(column)}\n iconLeft={getSortIcon(column)}\n className={cnTableHeader('Icon', { type: 'sort' })}\n />\n )}\n\n {getFilterPopover(column)}\n\n {control(column)}\n </div>\n </TableCell>\n );\n },\n )}\n </div>\n {/*\n Рендерим тень заголовка отдельно чтобы избежать возможных наложений\n теней для ячеек заголовка и ячеек прикрепленных слева.\n */}\n <div className={cnTableHeader('ShadowWrapper')} style={tableHeaderStyle}>\n <div\n className={cnTableHeader('Shadow', {\n show: showHorizontalCellShadow && isStickyHeader,\n })}\n />\n </div>\n </>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"TableHeader.js","names":["React","cn","Button","TableCell","getOptionsForFilters","TableFilterTooltip","cnTableHeader","levelTypes","TableHeader","isStickyHeader","headersWithMetaData","headerRowsHeights","headerRowsRefs","getStickyLeftOffset","stickyColumnsGrid","showVerticalCellShadow","headerVerticalAlign","getSortIcon","handleSortClick","handleFilterTogglerClick","handleCellClick","handleTooltipSave","filters","visibleFilter","selectedFilters","showHorizontalCellShadow","borderBetweenColumns","tableHeaderHeight","reduce","a","b","tableHeaderStyle","getLevelType","column","position","colSpan","smallTextSize","isColumnResized","headers","build","header","columns","forEach","col","find","head","title","push","some","isResized","getFilterPopover","accessor","curFilter","field","FilterComponent","component","name","filterComponentProps","props","onToggle","filterId","id","filterable","selected","type","handleFilterSave","filterValue","value","control","withVerticalBorder","map","columnIdx","style","gridColumnEnd","rowSpan","gridRowEnd","top","slice","level","ref","current","left","gridIndex","topHeaderGridIndex","e","isFirstColumn","isFirst","isFirstRow","isLastInColumn","isSortingActive","isFilterActive","verticalAlign","sortable","show"],"sources":["../../../../../../src/components/Table/Header/TableHeader.tsx"],"sourcesContent":["import './TableHeader.css';\n\nimport React from 'react';\n\nimport { cn } from '../../../utils/bem';\nimport { Button } from '../../Button/Button';\nimport { TableCell } from '../Cell/TableCell';\nimport {\n FieldSelectedValues,\n Filters,\n getOptionsForFilters,\n SelectedFilters,\n} from '../filtering';\nimport { TableFilterTooltip } from '../FilterTooltip/TableFilterTooltip';\nimport { Header } from '../helpers';\nimport {\n ColumnMetaData,\n HeaderVerticalAlign,\n onCellClick,\n TableColumn,\n TableRow,\n} from '../Table';\n\nconst cnTableHeader = cn('TableHeader');\n\ntype TableCSSCustomProperty = {\n '--table-header-height': string;\n};\n\nexport const levelTypes = ['high', 'low', 'default'] as const;\nexport type LevelType = typeof levelTypes[number];\n\ntype Props<T extends TableRow> = {\n isStickyHeader: boolean;\n headersWithMetaData: Array<Header<T> & ColumnMetaData>;\n headerRowsHeights: Array<number>;\n headerRowsRefs: React.MutableRefObject<Record<number, HTMLDivElement | null>>;\n getStickyLeftOffset: (\n columnIndex: number,\n topHeaderGridIndex: number,\n ) => number | undefined;\n stickyColumnsGrid: number;\n showVerticalCellShadow: boolean;\n headerVerticalAlign: HeaderVerticalAlign;\n getSortIcon: (column: Header<T>) => React.FC;\n handleSortClick: (column: TableColumn<T>) => void;\n handleFilterTogglerClick: (id: string) => () => void;\n handleCellClick: onCellClick;\n handleTooltipSave: (\n field: string,\n tooltipSelectedFilters: FieldSelectedValues,\n value?: unknown,\n ) => void;\n filters: Filters<T> | undefined;\n visibleFilter: string | null;\n selectedFilters: SelectedFilters;\n showHorizontalCellShadow: boolean;\n borderBetweenColumns: boolean;\n};\n\nexport const TableHeader = <T extends TableRow>({\n isStickyHeader,\n headersWithMetaData,\n headerRowsHeights,\n headerRowsRefs,\n getStickyLeftOffset,\n stickyColumnsGrid,\n showVerticalCellShadow,\n headerVerticalAlign,\n getSortIcon,\n handleSortClick,\n handleFilterTogglerClick,\n handleCellClick,\n handleTooltipSave,\n filters,\n visibleFilter,\n selectedFilters,\n showHorizontalCellShadow,\n borderBetweenColumns,\n}: Props<T>): React.ReactElement => {\n const tableHeaderHeight = headerRowsHeights.reduce(\n (a: number, b: number) => a + b,\n 0,\n );\n const tableHeaderStyle: React.CSSProperties & TableCSSCustomProperty = {\n '--table-header-height': `${tableHeaderHeight}px`,\n };\n const getLevelType = (column: Header<T> & ColumnMetaData): LevelType => {\n if (Number(column.position!.colSpan) >= 1) return 'high';\n if (column.position?.smallTextSize) return 'low';\n return 'default';\n };\n const isColumnResized = (column: Header<T> & ColumnMetaData): boolean => {\n const headers: Array<Header<T> & ColumnMetaData> = [];\n const build = (header: Header<T> & ColumnMetaData) => {\n if (!header.columns) {\n headers.push(header);\n } else {\n header.columns.forEach((col) =>\n build(\n headersWithMetaData.find(\n (head) => head.title === col.title,\n ) as Header<T> & ColumnMetaData,\n ),\n );\n }\n };\n build(column);\n return headers.some((header) => header.isResized);\n };\n\n const getFilterPopover = (\n column: Header<T> & ColumnMetaData,\n ): React.ReactNode => {\n if (!filters || !column.accessor) {\n return null;\n }\n const curFilter = filters.find(({ field }) => field === column.accessor);\n const FilterComponent = curFilter?.component?.name;\n const filterComponentProps = curFilter?.component?.props ?? {};\n const onToggle = handleFilterTogglerClick(column.accessor);\n const filterId = curFilter?.id;\n const handleFilterSave = (filterValue?: unknown) => {\n if (filterId) {\n handleTooltipSave(column.accessor!, [filterId], filterValue);\n }\n onToggle();\n };\n\n return column.filterable ? (\n <TableFilterTooltip\n field={column.accessor}\n isOpened={visibleFilter === column.accessor}\n options={getOptionsForFilters(filters, column.accessor)}\n values={selectedFilters[column.accessor].selected || []}\n onChange={handleTooltipSave}\n onToggle={handleFilterTogglerClick(column.accessor)}\n className={cnTableHeader('Icon', { type: 'filter' })}\n >\n {FilterComponent && (\n <FilterComponent\n {...filterComponentProps}\n onConfirm={handleFilterSave}\n filterValue={selectedFilters[column.accessor]?.value}\n onCancel={handleFilterTogglerClick(column.accessor)}\n />\n )}\n </TableFilterTooltip>\n ) : null;\n };\n\n const control = (column: Header<T> & ColumnMetaData): React.ReactNode => {\n if (column.control) {\n return (\n <div className={cnTableHeader('Сontrol')}>\n {column.control({ column })}\n </div>\n );\n }\n\n return null;\n };\n\n return (\n <>\n <div\n className={cnTableHeader('Row', {\n withVerticalBorder: borderBetweenColumns,\n })}\n >\n {headersWithMetaData.map(\n (column: Header<T> & ColumnMetaData, columnIdx: number) => {\n const style: React.CSSProperties = {};\n if (column.position!.colSpan) {\n style.gridColumnEnd = `span ${column.position!.colSpan}`;\n }\n if (column.position!.rowSpan) {\n style.gridRowEnd = `span ${column.position!.rowSpan}`;\n }\n if (isStickyHeader) {\n style.top = headerRowsHeights\n .slice(0, column.position!.level)\n .reduce((a: number, b: number) => a + b, 0);\n }\n return (\n <TableCell\n type=\"header\"\n key={columnIdx}\n ref={(ref: HTMLDivElement | null): void => {\n /* eslint-disable-next-line no-param-reassign */\n headerRowsRefs.current[columnIdx] = ref;\n }}\n style={{\n ...style,\n left: getStickyLeftOffset(\n column.position!.gridIndex,\n column.position!.topHeaderGridIndex,\n ),\n }}\n isSticky={isStickyHeader}\n isResized={isColumnResized(column)}\n column={column}\n verticalAlign={headerVerticalAlign}\n onContextMenu={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'contextMenu',\n columnIdx,\n ref: { current: headerRowsRefs.current[columnIdx] },\n })\n }\n onClick={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'click',\n columnIdx,\n ref: { current: headerRowsRefs.current[columnIdx] },\n })\n }\n className={cnTableHeader('Cell', {\n isFirstColumn: column.position?.isFirst,\n isFirstRow: column.position!.level === 0,\n isLastInColumn:\n column.position?.topHeaderGridIndex !==\n headersWithMetaData[columnIdx + 1]?.position\n ?.topHeaderGridIndex,\n level: getLevelType(column),\n })}\n showVerticalShadow={\n showVerticalCellShadow &&\n column.position!.gridIndex! +\n (column?.position!.colSpan || 1) ===\n stickyColumnsGrid\n }\n >\n {column.title}\n\n <div\n className={cnTableHeader('Buttons', {\n isSortingActive: column.isSortingActive,\n isFilterActive: column.isFilterActive,\n verticalAlign: headerVerticalAlign,\n })}\n >\n {column.sortable && (\n <Button\n type=\"button\"\n size=\"xs\"\n iconSize=\"s\"\n view=\"clear\"\n onlyIcon\n onClick={(): void => handleSortClick(column)}\n iconLeft={getSortIcon(column)}\n className={cnTableHeader('Icon', { type: 'sort' })}\n />\n )}\n\n {getFilterPopover(column)}\n\n {control(column)}\n </div>\n </TableCell>\n );\n },\n )}\n </div>\n {/*\n Рендерим тень заголовка отдельно чтобы избежать возможных наложений\n теней для ячеек заголовка и ячеек прикрепленных слева.\n */}\n <div className={cnTableHeader('ShadowWrapper')} style={tableHeaderStyle}>\n <div\n className={cnTableHeader('Shadow', {\n show: showHorizontalCellShadow && isStickyHeader,\n })}\n />\n </div>\n </>\n );\n};\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import"./TableRowsCollapse.css";import{IconArrowDown}from"@consta/icons/IconArrowDown";import{IconArrowUp}from"@consta/icons/IconArrowUp";import React from"react";import{cn}from"../../../utils/bem";import{Button}from"../../Button/Button";export var cnTableRowsCollapse=cn("TableRowsCollapse");export var TableRowsCollapse=function(a){var b=a.level,c=a.children,d=a.isExpanded,e=a.toggleCollapse,f=a.withCollapseButton,g=a.isExpandedByDefault;return React.createElement("div",{style:{"--nesting-level":b},className:cnTableRowsCollapse()},!g&&f&&React.createElement("div",{className:cnTableRowsCollapse("buttonContainer")},React.createElement(Button,{"aria-expanded":d,iconLeft:d?IconArrowUp:IconArrowDown,iconSize:"s",onClick:e,size:"xs",onlyIcon:!0,view:"clear"})),React.createElement("div",{className:cnTableRowsCollapse("cellContainer",{withExpanderPadding:!g})},c))};
1
+ import"./TableRowsCollapse.css";import{IconArrowDown}from"@consta/icons/IconArrowDown";import{IconArrowUp}from"@consta/icons/IconArrowUp";import React from"react";import{cn}from"../../../utils/bem";import{Button}from"../../Button/Button";export var cnTableRowsCollapse=cn("TableRowsCollapse");export var TableRowsCollapse=function(a){var b=a.level,c=a.children,d=a.isExpanded,e=a.toggleCollapse,f=a.withCollapseButton,g=a.isExpandedByDefault;return React.createElement("div",{style:{"--nesting-level":b},className:cnTableRowsCollapse()},!g&&f&&React.createElement("div",{className:cnTableRowsCollapse("buttonContainer")},React.createElement(Button,{type:"button","aria-expanded":d,iconLeft:d?IconArrowUp:IconArrowDown,iconSize:"s",onClick:e,size:"xs",onlyIcon:!0,view:"clear"})),React.createElement("div",{className:cnTableRowsCollapse("cellContainer",{withExpanderPadding:!g})},c))};
2
2
  //# sourceMappingURL=TableRowsCollapse.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableRowsCollapse.js","names":["IconArrowDown","IconArrowUp","React","cn","Button","cnTableRowsCollapse","TableRowsCollapse","props","level","children","isExpanded","toggleCollapse","withCollapseButton","isExpandedByDefault","withExpanderPadding"],"sources":["../../../../../../src/components/Table/RowsCollapse/TableRowsCollapse.tsx"],"sourcesContent":["import './TableRowsCollapse.css';\n\nimport { IconArrowDown } from '@consta/icons/IconArrowDown';\nimport { IconArrowUp } from '@consta/icons/IconArrowUp';\nimport React from 'react';\n\nimport { cn } from '../../../utils/bem';\nimport { Button } from '../../Button/Button';\n\nexport type Props = {\n level: number;\n isExpandedByDefault?: boolean;\n toggleCollapse?: (e: React.SyntheticEvent) => void;\n isExpanded?: boolean;\n withCollapseButton?: boolean;\n children?: React.ReactNode;\n};\n\nexport const cnTableRowsCollapse = cn('TableRowsCollapse');\n\nexport const TableRowsCollapse: React.FC<Props> = (props) => {\n const {\n level,\n children,\n isExpanded,\n toggleCollapse,\n withCollapseButton,\n isExpandedByDefault,\n } = props;\n\n const style: React.CSSProperties & {\n '--nesting-level': number;\n } = { '--nesting-level': level };\n\n return (\n <div style={style} className={cnTableRowsCollapse()}>\n {!isExpandedByDefault && withCollapseButton && (\n <div className={cnTableRowsCollapse('buttonContainer')}>\n <Button\n aria-expanded={isExpanded}\n iconLeft={isExpanded ? IconArrowUp : IconArrowDown}\n iconSize=\"s\"\n onClick={toggleCollapse}\n size=\"xs\"\n onlyIcon\n view=\"clear\"\n />\n </div>\n )}\n <div\n className={cnTableRowsCollapse('cellContainer', {\n withExpanderPadding: !isExpandedByDefault,\n })}\n >\n {children}\n </div>\n </div>\n );\n};\n"],"mappings":"AAAA,gCAEA,OAASA,aAAT,KAA8B,6BAA9B,CACA,OAASC,WAAT,KAA4B,2BAA5B,CACA,MAAOC,MAAP,KAAkB,OAAlB,CAEA,OAASC,EAAT,0BACA,OAASC,MAAT,2BAWA,MAAO,IAAMC,oBAAmB,CAAGF,EAAE,CAAC,mBAAD,CAA9B,CAEP,MAAO,IAAMG,kBAAkC,CAAG,SAACC,CAAD,CAAW,IAEzDC,EAFyD,CAQvDD,CARuD,CAEzDC,KAFyD,CAGzDC,CAHyD,CAQvDF,CARuD,CAGzDE,QAHyD,CAIzDC,CAJyD,CAQvDH,CARuD,CAIzDG,UAJyD,CAKzDC,CALyD,CAQvDJ,CARuD,CAKzDI,cALyD,CAMzDC,CANyD,CAQvDL,CARuD,CAMzDK,kBANyD,CAOzDC,CAPyD,CAQvDN,CARuD,CAOzDM,mBAPyD,CAc3D,MACE,4BAAK,KAAK,CAHR,CAAE,kBAAmBL,CAArB,CAGF,CAAmB,SAAS,CAAEH,mBAAmB,EAAjD,EACG,CAACQ,CAAD,EAAwBD,CAAxB,EACC,2BAAK,SAAS,CAAEP,mBAAmB,CAAC,iBAAD,CAAnC,EACE,oBAAC,MAAD,EACE,gBAAeK,CADjB,CAEE,QAAQ,CAAEA,CAAU,CAAGT,WAAH,CAAiBD,aAFvC,CAGE,QAAQ,CAAC,GAHX,CAIE,OAAO,CAAEW,CAJX,CAKE,IAAI,CAAC,IALP,CAME,QAAQ,GANV,CAOE,IAAI,CAAC,OAPP,EADF,CAFJ,CAcE,2BACE,SAAS,CAAEN,mBAAmB,CAAC,eAAD,CAAkB,CAC9CS,mBAAmB,CAAE,CAACD,CADwB,CAAlB,CADhC,EAKGJ,CALH,CAdF,CAuBH,CAtCM"}
1
+ {"version":3,"file":"TableRowsCollapse.js","names":["IconArrowDown","IconArrowUp","React","cn","Button","cnTableRowsCollapse","TableRowsCollapse","props","level","children","isExpanded","toggleCollapse","withCollapseButton","isExpandedByDefault","withExpanderPadding"],"sources":["../../../../../../src/components/Table/RowsCollapse/TableRowsCollapse.tsx"],"sourcesContent":["import './TableRowsCollapse.css';\n\nimport { IconArrowDown } from '@consta/icons/IconArrowDown';\nimport { IconArrowUp } from '@consta/icons/IconArrowUp';\nimport React from 'react';\n\nimport { cn } from '../../../utils/bem';\nimport { Button } from '../../Button/Button';\n\nexport type Props = {\n level: number;\n isExpandedByDefault?: boolean;\n toggleCollapse?: (e: React.SyntheticEvent) => void;\n isExpanded?: boolean;\n withCollapseButton?: boolean;\n children?: React.ReactNode;\n};\n\nexport const cnTableRowsCollapse = cn('TableRowsCollapse');\n\nexport const TableRowsCollapse: React.FC<Props> = (props) => {\n const {\n level,\n children,\n isExpanded,\n toggleCollapse,\n withCollapseButton,\n isExpandedByDefault,\n } = props;\n\n const style: React.CSSProperties & {\n '--nesting-level': number;\n } = { '--nesting-level': level };\n\n return (\n <div style={style} className={cnTableRowsCollapse()}>\n {!isExpandedByDefault && withCollapseButton && (\n <div className={cnTableRowsCollapse('buttonContainer')}>\n <Button\n type=\"button\"\n aria-expanded={isExpanded}\n iconLeft={isExpanded ? IconArrowUp : IconArrowDown}\n iconSize=\"s\"\n onClick={toggleCollapse}\n size=\"xs\"\n onlyIcon\n view=\"clear\"\n />\n </div>\n )}\n <div\n className={cnTableRowsCollapse('cellContainer', {\n withExpanderPadding: !isExpandedByDefault,\n })}\n >\n {children}\n </div>\n </div>\n );\n};\n"],"mappings":"AAAA,gCAEA,OAASA,aAAT,KAA8B,6BAA9B,CACA,OAASC,WAAT,KAA4B,2BAA5B,CACA,MAAOC,MAAP,KAAkB,OAAlB,CAEA,OAASC,EAAT,0BACA,OAASC,MAAT,2BAWA,MAAO,IAAMC,oBAAmB,CAAGF,EAAE,CAAC,mBAAD,CAA9B,CAEP,MAAO,IAAMG,kBAAkC,CAAG,SAACC,CAAD,CAAW,IAEzDC,EAFyD,CAQvDD,CARuD,CAEzDC,KAFyD,CAGzDC,CAHyD,CAQvDF,CARuD,CAGzDE,QAHyD,CAIzDC,CAJyD,CAQvDH,CARuD,CAIzDG,UAJyD,CAKzDC,CALyD,CAQvDJ,CARuD,CAKzDI,cALyD,CAMzDC,CANyD,CAQvDL,CARuD,CAMzDK,kBANyD,CAOzDC,CAPyD,CAQvDN,CARuD,CAOzDM,mBAPyD,CAc3D,MACE,4BAAK,KAAK,CAHR,CAAE,kBAAmBL,CAArB,CAGF,CAAmB,SAAS,CAAEH,mBAAmB,EAAjD,EACG,CAACQ,CAAD,EAAwBD,CAAxB,EACC,2BAAK,SAAS,CAAEP,mBAAmB,CAAC,iBAAD,CAAnC,EACE,oBAAC,MAAD,EACE,IAAI,CAAC,QADP,CAEE,gBAAeK,CAFjB,CAGE,QAAQ,CAAEA,CAAU,CAAGT,WAAH,CAAiBD,aAHvC,CAIE,QAAQ,CAAC,GAJX,CAKE,OAAO,CAAEW,CALX,CAME,IAAI,CAAC,IANP,CAOE,QAAQ,GAPV,CAQE,IAAI,CAAC,OARP,EADF,CAFJ,CAeE,2BACE,SAAS,CAAEN,mBAAmB,CAAC,eAAD,CAAkB,CAC9CS,mBAAmB,CAAE,CAACD,CADwB,CAAlB,CADhC,EAKGJ,CALH,CAfF,CAwBH,CAvCM"}
@@ -1,2 +1,2 @@
1
- import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import"./TableTextFilter.css";import{IconSearchStroked}from"@consta/icons/IconSearchStroked";import React,{useMemo,useState}from"react";import{cn}from"../../../utils/bem";import{Button}from"../../Button/Button";import{CheckboxGroup}from"../../CheckboxGroup";import{Text}from"../../Text/Text";import{TextField}from"../../TextField/TextField";import{TableFilterContainer}from"../FilterContainer/TableFilterContainer";var cnTextFilter=cn("TableTextFilter");export var TableTextFilter=function(a){var b=a.items,c=void 0===b?[]:b,d=a.withSearch,e=a.onConfirm,f=a.onCancel,g=a.filterValue,h=a.title,i=a.emptySearchText,j=void 0===i?"\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E :(":i,k=useState(null),l=_slicedToArray(k,2),m=l[0],n=l[1],o=useState(g||c),p=_slicedToArray(o,2),q=p[0],r=p[1],s=useMemo(function(){return m?c.filter(function(a){var b=a.name;return b.match(new RegExp("".concat(m),"i"))}):c},[m,c]),t=useMemo(function(){return s.length===(null===q||void 0===q?void 0:q.length)},[s,q]),u=useMemo(function(){return null===q||void 0===q?void 0:q.length},[q]);return React.createElement(TableFilterContainer,{title:h,onCancel:f,onConfirm:function confirmHandler(){n(null),e(null===q?[]:q)}},void 0!==d&&d&&React.createElement(TextField,{value:m,onChange:function onChange(a){var b=a.value;return n(b)},leftSide:IconSearchStroked,size:"s",placeholder:"\u041D\u0430\u0439\u0442\u0438 \u0432 \u0441\u043F\u0438\u0441\u043A\u0435",width:"full",className:cnTextFilter("Searchbar")}),React.createElement("div",{className:cnTextFilter("Controls")},React.createElement(Button,{size:"m",form:"brick",label:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435",view:"clear",onClick:function setAll(){r(s)},disabled:!s.length||t}),React.createElement(Button,{size:"m",form:"brick",label:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C",view:"clear",onClick:function resetHandler(){r(null)},disabled:!s.length||!u})),React.createElement("div",{className:cnTextFilter("Checkboxes")},s.length?React.createElement(CheckboxGroup,{items:s,value:q,getItemLabel:function getItemLabel(a){return a.name},onChange:function onChange(a){var b=a.value;r(b)},name:"checkboxGroup"}):React.createElement(Text,{lineHeight:"2xs"},j)))};
1
+ import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import"./TableTextFilter.css";import{IconSearchStroked}from"@consta/icons/IconSearchStroked";import React,{useMemo,useState}from"react";import{cn}from"../../../utils/bem";import{Button}from"../../Button/Button";import{CheckboxGroup}from"../../CheckboxGroup";import{Text}from"../../Text/Text";import{TextField}from"../../TextField/TextField";import{TableFilterContainer}from"../FilterContainer/TableFilterContainer";var cnTextFilter=cn("TableTextFilter");export var TableTextFilter=function(a){var b=a.items,c=void 0===b?[]:b,d=a.withSearch,e=a.onConfirm,f=a.onCancel,g=a.filterValue,h=a.title,i=a.emptySearchText,j=void 0===i?"\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E :(":i,k=useState(null),l=_slicedToArray(k,2),m=l[0],n=l[1],o=useState(g||c),p=_slicedToArray(o,2),q=p[0],r=p[1],s=useMemo(function(){return m?c.filter(function(a){var b=a.name;return b.match(new RegExp("".concat(m),"i"))}):c},[m,c]),t=useMemo(function(){return s.length===(null===q||void 0===q?void 0:q.length)},[s,q]),u=useMemo(function(){return null===q||void 0===q?void 0:q.length},[q]);return React.createElement(TableFilterContainer,{title:h,onCancel:f,onConfirm:function confirmHandler(){n(null),e(null===q?[]:q)}},void 0!==d&&d&&React.createElement(TextField,{value:m,onChange:function onChange(a){var b=a.value;return n(b)},leftSide:IconSearchStroked,size:"s",placeholder:"\u041D\u0430\u0439\u0442\u0438 \u0432 \u0441\u043F\u0438\u0441\u043A\u0435",width:"full",className:cnTextFilter("Searchbar")}),React.createElement("div",{className:cnTextFilter("Controls")},React.createElement(Button,{size:"m",type:"button",form:"brick",label:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435",view:"clear",onClick:function setAll(){r(s)},disabled:!s.length||t}),React.createElement(Button,{size:"m",form:"brick",type:"button",label:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C",view:"clear",onClick:function resetHandler(){r(null)},disabled:!s.length||!u})),React.createElement("div",{className:cnTextFilter("Checkboxes")},s.length?React.createElement(CheckboxGroup,{items:s,value:q,getItemLabel:function getItemLabel(a){return a.name},onChange:function onChange(a){var b=a.value;r(b)},name:"checkboxGroup"}):React.createElement(Text,{lineHeight:"2xs"},j)))};
2
2
  //# sourceMappingURL=TableTextFilter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableTextFilter.js","names":["IconSearchStroked","React","useMemo","useState","cn","Button","CheckboxGroup","Text","TextField","TableFilterContainer","cnTextFilter","TableTextFilter","items","withSearch","onConfirm","onCancel","filterValue","title","emptySearchText","searchValue","setSearchValue","checkboxGroupValue","setCheckboxGroupValue","filteredItems","filter","name","match","RegExp","isAllSelected","length","isSelected","confirmHandler","value","setAll","resetHandler","item"],"sources":["../../../../../../src/components/Table/TextFilter/TableTextFilter.tsx"],"sourcesContent":["import './TableTextFilter.css';\n\nimport { IconSearchStroked } from '@consta/icons/IconSearchStroked';\nimport React, { useMemo, useState } from 'react';\n\nimport { cn } from '../../../utils/bem';\nimport { Button } from '../../Button/Button';\nimport { CheckboxGroup } from '../../CheckboxGroup';\nimport { Text } from '../../Text/Text';\nimport { TextField } from '../../TextField/TextField';\nimport { TableFilterContainer } from '../FilterContainer/TableFilterContainer';\nimport { FilterComponentProps } from '../filtering';\n\nconst cnTextFilter = cn('TableTextFilter');\n\ntype Item = {\n name: string;\n value: string;\n};\n\ntype TableTextFilterProps = FilterComponentProps & {\n items?: Item[];\n withSearch?: boolean;\n title?: string;\n emptySearchText?: string;\n};\n\nexport const TableTextFilter: React.FC<TableTextFilterProps> = ({\n items = [],\n withSearch = false,\n onConfirm,\n onCancel,\n filterValue,\n title,\n emptySearchText = 'Ничего не найдено :(',\n}) => {\n const [searchValue, setSearchValue] = useState<string | null>(null);\n const [checkboxGroupValue, setCheckboxGroupValue] = useState<Item[] | null>(\n (filterValue as Item[]) || items,\n );\n\n const confirmHandler = () => {\n setSearchValue(null);\n onConfirm(checkboxGroupValue === null ? [] : checkboxGroupValue);\n };\n\n const resetHandler = () => {\n setCheckboxGroupValue(null);\n };\n\n const filteredItems = useMemo(() => {\n if (!searchValue) {\n return items;\n }\n\n return items.filter(({ name }) => {\n return name.match(new RegExp(`${searchValue}`, 'i'));\n });\n }, [searchValue, items]);\n\n const setAll = () => {\n setCheckboxGroupValue(filteredItems);\n };\n\n const isAllSelected = useMemo(\n () => filteredItems.length === checkboxGroupValue?.length,\n [filteredItems, checkboxGroupValue],\n );\n\n const isSelected = useMemo(\n () => checkboxGroupValue?.length,\n [checkboxGroupValue],\n );\n\n return (\n <TableFilterContainer\n title={title}\n onCancel={onCancel}\n onConfirm={confirmHandler}\n >\n {withSearch && (\n <TextField\n value={searchValue}\n onChange={({ value }) => setSearchValue(value)}\n leftSide={IconSearchStroked}\n size=\"s\"\n placeholder=\"Найти в списке\"\n width=\"full\"\n className={cnTextFilter('Searchbar')}\n />\n )}\n <div className={cnTextFilter('Controls')}>\n <Button\n size=\"m\"\n form=\"brick\"\n label=\"Выбрать все\"\n view=\"clear\"\n onClick={setAll}\n disabled={!filteredItems.length || isAllSelected}\n />\n <Button\n size=\"m\"\n form=\"brick\"\n label=\"Сбросить\"\n view=\"clear\"\n onClick={resetHandler}\n disabled={!filteredItems.length || !isSelected}\n />\n </div>\n <div className={cnTextFilter('Checkboxes')}>\n {filteredItems.length ? (\n <CheckboxGroup\n items={filteredItems}\n value={checkboxGroupValue}\n getItemLabel={(item) => item.name}\n onChange={({ value }) => {\n setCheckboxGroupValue(value);\n }}\n name=\"checkboxGroup\"\n />\n ) : (\n <Text lineHeight=\"2xs\">{emptySearchText}</Text>\n )}\n </div>\n </TableFilterContainer>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"TableTextFilter.js","names":["IconSearchStroked","React","useMemo","useState","cn","Button","CheckboxGroup","Text","TextField","TableFilterContainer","cnTextFilter","TableTextFilter","items","withSearch","onConfirm","onCancel","filterValue","title","emptySearchText","searchValue","setSearchValue","checkboxGroupValue","setCheckboxGroupValue","filteredItems","filter","name","match","RegExp","isAllSelected","length","isSelected","confirmHandler","value","setAll","resetHandler","item"],"sources":["../../../../../../src/components/Table/TextFilter/TableTextFilter.tsx"],"sourcesContent":["import './TableTextFilter.css';\n\nimport { IconSearchStroked } from '@consta/icons/IconSearchStroked';\nimport React, { useMemo, useState } from 'react';\n\nimport { cn } from '../../../utils/bem';\nimport { Button } from '../../Button/Button';\nimport { CheckboxGroup } from '../../CheckboxGroup';\nimport { Text } from '../../Text/Text';\nimport { TextField } from '../../TextField/TextField';\nimport { TableFilterContainer } from '../FilterContainer/TableFilterContainer';\nimport { FilterComponentProps } from '../filtering';\n\nconst cnTextFilter = cn('TableTextFilter');\n\ntype Item = {\n name: string;\n value: string;\n};\n\ntype TableTextFilterProps = FilterComponentProps & {\n items?: Item[];\n withSearch?: boolean;\n title?: string;\n emptySearchText?: string;\n};\n\nexport const TableTextFilter: React.FC<TableTextFilterProps> = ({\n items = [],\n withSearch = false,\n onConfirm,\n onCancel,\n filterValue,\n title,\n emptySearchText = 'Ничего не найдено :(',\n}) => {\n const [searchValue, setSearchValue] = useState<string | null>(null);\n const [checkboxGroupValue, setCheckboxGroupValue] = useState<Item[] | null>(\n (filterValue as Item[]) || items,\n );\n\n const confirmHandler = () => {\n setSearchValue(null);\n onConfirm(checkboxGroupValue === null ? [] : checkboxGroupValue);\n };\n\n const resetHandler = () => {\n setCheckboxGroupValue(null);\n };\n\n const filteredItems = useMemo(() => {\n if (!searchValue) {\n return items;\n }\n\n return items.filter(({ name }) => {\n return name.match(new RegExp(`${searchValue}`, 'i'));\n });\n }, [searchValue, items]);\n\n const setAll = () => {\n setCheckboxGroupValue(filteredItems);\n };\n\n const isAllSelected = useMemo(\n () => filteredItems.length === checkboxGroupValue?.length,\n [filteredItems, checkboxGroupValue],\n );\n\n const isSelected = useMemo(\n () => checkboxGroupValue?.length,\n [checkboxGroupValue],\n );\n\n return (\n <TableFilterContainer\n title={title}\n onCancel={onCancel}\n onConfirm={confirmHandler}\n >\n {withSearch && (\n <TextField\n value={searchValue}\n onChange={({ value }) => setSearchValue(value)}\n leftSide={IconSearchStroked}\n size=\"s\"\n placeholder=\"Найти в списке\"\n width=\"full\"\n className={cnTextFilter('Searchbar')}\n />\n )}\n <div className={cnTextFilter('Controls')}>\n <Button\n size=\"m\"\n type=\"button\"\n form=\"brick\"\n label=\"Выбрать все\"\n view=\"clear\"\n onClick={setAll}\n disabled={!filteredItems.length || isAllSelected}\n />\n <Button\n size=\"m\"\n form=\"brick\"\n type=\"button\"\n label=\"Сбросить\"\n view=\"clear\"\n onClick={resetHandler}\n disabled={!filteredItems.length || !isSelected}\n />\n </div>\n <div className={cnTextFilter('Checkboxes')}>\n {filteredItems.length ? (\n <CheckboxGroup\n items={filteredItems}\n value={checkboxGroupValue}\n getItemLabel={(item) => item.name}\n onChange={({ value }) => {\n setCheckboxGroupValue(value);\n }}\n name=\"checkboxGroup\"\n />\n ) : (\n <Text lineHeight=\"2xs\">{emptySearchText}</Text>\n )}\n </div>\n </TableFilterContainer>\n );\n};\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import"./TabsFitModeScrollWrapper.css";import{IconArrowLeft}from"@consta/icons/IconArrowLeft";import{IconArrowRight}from"@consta/icons/IconArrowRight";import React from"react";import{useResizeObserved}from"../../../hooks/useResizeObserved/useResizeObserved";import{useScrollPosition}from"../../../hooks/useScrollPosition/useScrollPosition";import{cn}from"../../../utils/bem";import{Button}from"../../Button/Button";import{getTabsWidth,getVisibleTabsRange}from"../helpers";var cnTabsFitModeScrollWrapper=cn("TabsFitModeScrollWrapper");export var TabsFitModeScrollWrapper=function(a){var b=a.tabsDimensions,c=a.items,d=a.renderItemsList,e=a.getItemChecked,f=React.useRef(null),g=useResizeObserved(React.useMemo(function(){return[f]},[f]),function(a){var b;return{isScrollable:a&&a.scrollWidth>a.offsetWidth,width:null!==(b=null===a||void 0===a?void 0:a.offsetWidth)&&void 0!==b?b:0,paddingLeft:a?parseInt(getComputedStyle(a).paddingLeft,10):0}}),h=_slicedToArray(g,1),i=h[0],j=i.isScrollable,k=i.width,l=i.paddingLeft,m=useScrollPosition(f.current),n=m.scrollLeft,o=getVisibleTabsRange({tabsDimensions:b,containerWidth:k,containerPaddingLeft:l,scrollLeft:n}),p=_slicedToArray(o,2),q=p[0],r=p[1],s=function(a){if(!(a>=q&&a<=r)){var c,d=getTabsWidth(b.slice(0,a));null===(c=f.current)||void 0===c?void 0:c.scrollTo({left:d,behavior:"smooth"})}},t=function(){s(q-1)},u=function(){s(r+1)},v=c.findIndex(e);return React.useEffect(function(){j&&s(v)},[v,j]),React.createElement("div",{className:cnTabsFitModeScrollWrapper()},j&&React.createElement(React.Fragment,null,["prev","next"].map(function(a){return React.createElement(Button,{key:a,view:"clear",size:"xs",onlyIcon:!0,disabled:"prev"===a?0===q:r===c.length-1,iconLeft:"prev"===a?IconArrowLeft:IconArrowRight,className:cnTabsFitModeScrollWrapper("Button",{to:a}),onClick:"prev"===a?t:u})})),React.createElement("div",{className:cnTabsFitModeScrollWrapper("Content"),ref:f},d({getTabClassName:function getTabClassName(a){return cnTabsFitModeScrollWrapper("Tab",{noMargin:a===c.length-1})}})))};
1
+ import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import"./TabsFitModeScrollWrapper.css";import{IconArrowLeft}from"@consta/icons/IconArrowLeft";import{IconArrowRight}from"@consta/icons/IconArrowRight";import React from"react";import{useResizeObserved}from"../../../hooks/useResizeObserved/useResizeObserved";import{useScrollPosition}from"../../../hooks/useScrollPosition/useScrollPosition";import{cn}from"../../../utils/bem";import{Button}from"../../Button/Button";import{getTabsWidth,getVisibleTabsRange}from"../helpers";var cnTabsFitModeScrollWrapper=cn("TabsFitModeScrollWrapper");export var TabsFitModeScrollWrapper=function(a){var b=a.tabsDimensions,c=a.items,d=a.renderItemsList,e=a.getItemChecked,f=React.useRef(null),g=useResizeObserved(React.useMemo(function(){return[f]},[f]),function(a){var b;return{isScrollable:a&&a.scrollWidth>a.offsetWidth,width:null!==(b=null===a||void 0===a?void 0:a.offsetWidth)&&void 0!==b?b:0,paddingLeft:a?parseInt(getComputedStyle(a).paddingLeft,10):0}}),h=_slicedToArray(g,1),i=h[0],j=i.isScrollable,k=i.width,l=i.paddingLeft,m=useScrollPosition(f.current),n=m.scrollLeft,o=getVisibleTabsRange({tabsDimensions:b,containerWidth:k,containerPaddingLeft:l,scrollLeft:n}),p=_slicedToArray(o,2),q=p[0],r=p[1],s=function(a){if(!(a>=q&&a<=r)){var c,d=getTabsWidth(b.slice(0,a));null===(c=f.current)||void 0===c?void 0:c.scrollTo({left:d,behavior:"smooth"})}},t=function(){s(q-1)},u=function(){s(r+1)},v=c.findIndex(e);return React.useEffect(function(){j&&s(v)},[v,j]),React.createElement("div",{className:cnTabsFitModeScrollWrapper()},j&&React.createElement(React.Fragment,null,["prev","next"].map(function(a){return React.createElement(Button,{key:a,view:"clear",type:"button",size:"xs",onlyIcon:!0,disabled:"prev"===a?0===q:r===c.length-1,iconLeft:"prev"===a?IconArrowLeft:IconArrowRight,className:cnTabsFitModeScrollWrapper("Button",{to:a}),onClick:"prev"===a?t:u})})),React.createElement("div",{className:cnTabsFitModeScrollWrapper("Content"),ref:f},d({getTabClassName:function getTabClassName(a){return cnTabsFitModeScrollWrapper("Tab",{noMargin:a===c.length-1})}})))};
2
2
  //# sourceMappingURL=TabsFitModeScrollWrapper.js.map
@@ -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","getTabClassName","noMargin"],"sources":["../../../../../../src/components/Tabs/FitModeScrollWrapper/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]),\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 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 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","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","getTabClassName","noMargin"],"sources":["../../../../../../src/components/Tabs/FitModeScrollWrapper/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]),\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 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,2 +1,2 @@
1
- import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import"./TabsMoreItems.css";import{IconMeatball}from"@consta/icons/IconMeatball";import FocusTrap from"focus-trap-react";import React,{forwardRef,useEffect,useRef,useState}from"react";import{Transition}from"react-transition-group";import{Button}from"../../Button";import{ListBox}from"../../ListCanary";import{Popover}from"../../Popover/Popover";import{useFlag}from"../../../hooks/useFlag";import{useForkRef}from"../../../hooks/useForkRef";import{animateTimeout,cnMixPopoverAnimate}from"../../../mixs/MixPopoverAnimate";import{cn}from"../../../utils/bem";var cnTabsMoreItems=cn("TabsMoreItems"),TabsMoreItemsRender=function(a,b){var c=a.items,d=a.renderItem,e=a.getItemLabel,f=a.getItemChecked,g=a.height,h=a.size,i=useFlag(!1),j=_slicedToArray(i,2),k=j[0],l=j[1],m=useRef(null),n=useRef(null),o=useState("downStartLeft"),p=_slicedToArray(o,2),q=p[0],r=p[1];return useEffect(function(){0===c.length&&l.off()},[c]),React.createElement(React.Fragment,null,React.createElement("div",{ref:useForkRef([b,m]),className:cnTabsMoreItems("Button"),style:{height:g}},React.createElement(Button,{size:"xs",view:"ghost",onlyIcon:!0,iconLeft:IconMeatball,onClick:l.toggle})),React.createElement(Transition,{in:k,unmountOnExit:!0,nodeRef:n,timeout:animateTimeout},function(a){var b;return React.createElement(Popover,{anchorRef:m,offset:-1,ref:n,direction:"downStartRight",spareDirection:"downStartLeft",className:cnTabsMoreItems("Popover",[cnMixPopoverAnimate({animate:a,direction:q})]),onSetDirection:r,possibleDirections:["downStartRight","downStartLeft","upStartRight","upStartLeft","downCenter","upCenter"]},React.createElement(FocusTrap,{focusTrapOptions:{fallbackFocus:null!==(b=m.current)&&void 0!==b?b:void 0,clickOutsideDeactivates:function clickOutsideDeactivates(a){var b,c=null===(b=m.current)||void 0===b?void 0:b.contains(a.target);return!c},allowOutsideClick:!0,onDeactivate:l.off}},React.createElement(ListBox,{shadow:!0,border:!0,size:h,form:"default",className:cnTabsMoreItems("Content")},c.map(function(a){return React.createElement("div",{key:e(a),className:cnTabsMoreItems("Item",{active:f(a)})},d(a,l.off,!0))}))))}))};export var TabsMoreItems=forwardRef(TabsMoreItemsRender);
1
+ import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import"./TabsMoreItems.css";import{IconMeatball}from"@consta/icons/IconMeatball";import FocusTrap from"focus-trap-react";import React,{forwardRef,useEffect,useRef,useState}from"react";import{Transition}from"react-transition-group";import{Button}from"../../Button";import{ListBox}from"../../ListCanary";import{Popover}from"../../Popover/Popover";import{useFlag}from"../../../hooks/useFlag";import{useForkRef}from"../../../hooks/useForkRef";import{animateTimeout,cnMixPopoverAnimate}from"../../../mixs/MixPopoverAnimate";import{cn}from"../../../utils/bem";var cnTabsMoreItems=cn("TabsMoreItems"),TabsMoreItemsRender=function(a,b){var c=a.items,d=a.renderItem,e=a.getItemLabel,f=a.getItemChecked,g=a.height,h=a.size,i=useFlag(!1),j=_slicedToArray(i,2),k=j[0],l=j[1],m=useRef(null),n=useRef(null),o=useState("downStartLeft"),p=_slicedToArray(o,2),q=p[0],r=p[1];return useEffect(function(){0===c.length&&l.off()},[c]),React.createElement(React.Fragment,null,React.createElement("div",{ref:useForkRef([b,m]),className:cnTabsMoreItems("Button"),style:{height:g}},React.createElement(Button,{size:"xs",type:"button",view:"ghost",onlyIcon:!0,iconLeft:IconMeatball,onClick:l.toggle})),React.createElement(Transition,{in:k,unmountOnExit:!0,nodeRef:n,timeout:animateTimeout},function(a){var b;return React.createElement(Popover,{anchorRef:m,offset:-1,ref:n,direction:"downStartRight",spareDirection:"downStartLeft",className:cnTabsMoreItems("Popover",[cnMixPopoverAnimate({animate:a,direction:q})]),onSetDirection:r,possibleDirections:["downStartRight","downStartLeft","upStartRight","upStartLeft","downCenter","upCenter"]},React.createElement(FocusTrap,{focusTrapOptions:{fallbackFocus:null!==(b=m.current)&&void 0!==b?b:void 0,clickOutsideDeactivates:function clickOutsideDeactivates(a){var b,c=null===(b=m.current)||void 0===b?void 0:b.contains(a.target);return!c},allowOutsideClick:!0,onDeactivate:l.off}},React.createElement(ListBox,{shadow:!0,border:!0,size:h,form:"default",className:cnTabsMoreItems("Content")},c.map(function(a){return React.createElement("div",{key:e(a),className:cnTabsMoreItems("Item",{active:f(a)})},d(a,l.off,!0))}))))}))};export var TabsMoreItems=forwardRef(TabsMoreItemsRender);
2
2
  //# sourceMappingURL=TabsMoreItems.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TabsMoreItems.js","names":["IconMeatball","FocusTrap","React","forwardRef","useEffect","useRef","useState","Transition","Button","ListBox","Popover","useFlag","useForkRef","animateTimeout","cnMixPopoverAnimate","cn","cnTabsMoreItems","TabsMoreItemsRender","props","ref","items","renderItem","getItemLabel","getItemChecked","height","size","open","setOpen","buttonRef","popoverRef","direction","setDirection","length","off","toggle","animate","fallbackFocus","current","clickOutsideDeactivates","e","isClickInsideButton","contains","target","allowOutsideClick","onDeactivate","map","item","active","TabsMoreItems"],"sources":["../../../../../../src/components/Tabs/MoreItems/TabsMoreItems.tsx"],"sourcesContent":["import './TabsMoreItems.css';\n\nimport { IconMeatball } from '@consta/icons/IconMeatball';\nimport FocusTrap from 'focus-trap-react';\nimport React, { forwardRef, useEffect, useRef, useState } from 'react';\nimport { Transition } from 'react-transition-group';\n\nimport { Button } from '##/components/Button';\nimport { ListBox } from '##/components/ListCanary';\nimport { Direction, Popover } from '##/components/Popover/Popover';\nimport { useFlag } from '##/hooks/useFlag';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { animateTimeout, cnMixPopoverAnimate } from '##/mixs/MixPopoverAnimate';\nimport { cn } from '##/utils/bem';\n\nimport { TabsMoreItemsComponent, TabsMoreItemsProps } from '../types';\n\nconst cnTabsMoreItems = cn('TabsMoreItems');\n\nconst TabsMoreItemsRender = (\n props: TabsMoreItemsProps,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const { items, renderItem, getItemLabel, getItemChecked, height, size } =\n props;\n const [open, setOpen] = useFlag(false);\n const buttonRef = useRef<HTMLDivElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n const [direction, setDirection] = useState<Direction>('downStartLeft');\n\n useEffect(() => {\n items.length === 0 && setOpen.off();\n }, [items]);\n\n return (\n <>\n <div\n ref={useForkRef([ref, buttonRef])}\n className={cnTabsMoreItems('Button')}\n style={{ height }}\n >\n <Button\n size=\"xs\"\n view=\"ghost\"\n onlyIcon\n iconLeft={IconMeatball}\n onClick={setOpen.toggle}\n />\n </div>\n <Transition\n in={open}\n unmountOnExit\n nodeRef={popoverRef}\n timeout={animateTimeout}\n >\n {(animate) => (\n <Popover\n anchorRef={buttonRef}\n offset={-1}\n ref={popoverRef}\n direction=\"downStartRight\"\n spareDirection=\"downStartLeft\"\n className={cnTabsMoreItems('Popover', [\n cnMixPopoverAnimate({ animate, direction }),\n ])}\n onSetDirection={setDirection}\n possibleDirections={[\n 'downStartRight',\n 'downStartLeft',\n 'upStartRight',\n 'upStartLeft',\n 'downCenter',\n 'upCenter',\n ]}\n >\n <FocusTrap\n focusTrapOptions={{\n fallbackFocus: buttonRef.current ?? undefined,\n clickOutsideDeactivates: (e) => {\n const isClickInsideButton = buttonRef.current?.contains(\n e.target as Node,\n );\n return !isClickInsideButton;\n },\n allowOutsideClick: true,\n onDeactivate: setOpen.off,\n }}\n >\n <ListBox\n shadow\n border\n size={size}\n form=\"default\"\n className={cnTabsMoreItems('Content')}\n >\n {items.map((item) => (\n <div\n key={getItemLabel(item)}\n className={cnTabsMoreItems('Item', {\n active: getItemChecked(item),\n })}\n >\n {renderItem(item, setOpen.off, true)}\n </div>\n ))}\n </ListBox>\n </FocusTrap>\n </Popover>\n )}\n </Transition>\n </>\n );\n};\n\nexport const TabsMoreItems = forwardRef(\n TabsMoreItemsRender,\n) as TabsMoreItemsComponent;\n"],"mappings":"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"}
1
+ {"version":3,"file":"TabsMoreItems.js","names":["IconMeatball","FocusTrap","React","forwardRef","useEffect","useRef","useState","Transition","Button","ListBox","Popover","useFlag","useForkRef","animateTimeout","cnMixPopoverAnimate","cn","cnTabsMoreItems","TabsMoreItemsRender","props","ref","items","renderItem","getItemLabel","getItemChecked","height","size","open","setOpen","buttonRef","popoverRef","direction","setDirection","length","off","toggle","animate","fallbackFocus","current","clickOutsideDeactivates","e","isClickInsideButton","contains","target","allowOutsideClick","onDeactivate","map","item","active","TabsMoreItems"],"sources":["../../../../../../src/components/Tabs/MoreItems/TabsMoreItems.tsx"],"sourcesContent":["import './TabsMoreItems.css';\n\nimport { IconMeatball } from '@consta/icons/IconMeatball';\nimport FocusTrap from 'focus-trap-react';\nimport React, { forwardRef, useEffect, useRef, useState } from 'react';\nimport { Transition } from 'react-transition-group';\n\nimport { Button } from '##/components/Button';\nimport { ListBox } from '##/components/ListCanary';\nimport { Direction, Popover } from '##/components/Popover/Popover';\nimport { useFlag } from '##/hooks/useFlag';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { animateTimeout, cnMixPopoverAnimate } from '##/mixs/MixPopoverAnimate';\nimport { cn } from '##/utils/bem';\n\nimport { TabsMoreItemsComponent, TabsMoreItemsProps } from '../types';\n\nconst cnTabsMoreItems = cn('TabsMoreItems');\n\nconst TabsMoreItemsRender = (\n props: TabsMoreItemsProps,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const { items, renderItem, getItemLabel, getItemChecked, height, size } =\n props;\n const [open, setOpen] = useFlag(false);\n const buttonRef = useRef<HTMLDivElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n const [direction, setDirection] = useState<Direction>('downStartLeft');\n\n useEffect(() => {\n items.length === 0 && setOpen.off();\n }, [items]);\n\n return (\n <>\n <div\n ref={useForkRef([ref, buttonRef])}\n className={cnTabsMoreItems('Button')}\n style={{ height }}\n >\n <Button\n size=\"xs\"\n type=\"button\"\n view=\"ghost\"\n onlyIcon\n iconLeft={IconMeatball}\n onClick={setOpen.toggle}\n />\n </div>\n <Transition\n in={open}\n unmountOnExit\n nodeRef={popoverRef}\n timeout={animateTimeout}\n >\n {(animate) => (\n <Popover\n anchorRef={buttonRef}\n offset={-1}\n ref={popoverRef}\n direction=\"downStartRight\"\n spareDirection=\"downStartLeft\"\n className={cnTabsMoreItems('Popover', [\n cnMixPopoverAnimate({ animate, direction }),\n ])}\n onSetDirection={setDirection}\n possibleDirections={[\n 'downStartRight',\n 'downStartLeft',\n 'upStartRight',\n 'upStartLeft',\n 'downCenter',\n 'upCenter',\n ]}\n >\n <FocusTrap\n focusTrapOptions={{\n fallbackFocus: buttonRef.current ?? undefined,\n clickOutsideDeactivates: (e) => {\n const isClickInsideButton = buttonRef.current?.contains(\n e.target as Node,\n );\n return !isClickInsideButton;\n },\n allowOutsideClick: true,\n onDeactivate: setOpen.off,\n }}\n >\n <ListBox\n shadow\n border\n size={size}\n form=\"default\"\n className={cnTabsMoreItems('Content')}\n >\n {items.map((item) => (\n <div\n key={getItemLabel(item)}\n className={cnTabsMoreItems('Item', {\n active: getItemChecked(item),\n })}\n >\n {renderItem(item, setOpen.off, true)}\n </div>\n ))}\n </ListBox>\n </FocusTrap>\n </Popover>\n )}\n </Transition>\n </>\n );\n};\n\nexport const TabsMoreItems = forwardRef(\n TabsMoreItemsRender,\n) as TabsMoreItemsComponent;\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import"./TabsFitModeScrollWrapper.css";import{IconArrowLeft}from"@consta/icons/IconArrowLeft";import{IconArrowRight}from"@consta/icons/IconArrowRight";import React from"react";import{useResizeObserved}from"../../../hooks/useResizeObserved/useResizeObserved";import{useScrollPosition}from"../../../hooks/useScrollPosition/useScrollPosition";import{cn}from"../../../utils/bem";import{Button}from"../../Button/Button";import{getTabsWidth}from"../helpers";import{getVisibleTabsRange}from"./helpers";var cnTabsFitModeScrollWrapper=cn("TabsFitModeScrollWrapper");export var TabsFitModeScrollWrapper=function(a){var b=a.tabsDimensions,c=a.items,d=a.renderItemsList,e=a.getChecked,f=React.useRef(null),g=useResizeObserved(React.useMemo(function(){return[f]},[f]),function(a){var b;return{isScrollable:a&&a.scrollWidth>a.offsetWidth,width:null!==(b=null===a||void 0===a?void 0:a.offsetWidth)&&void 0!==b?b:0,paddingLeft:a?parseInt(getComputedStyle(a).paddingLeft,10):0}}),h=_slicedToArray(g,1),i=h[0],j=i.isScrollable,k=i.width,l=i.paddingLeft,m=useScrollPosition(f.current),n=m.scrollLeft,o=getVisibleTabsRange({tabsDimensions:b,containerWidth:k,containerPaddingLeft:l,scrollLeft:n}),p=_slicedToArray(o,2),q=p[0],r=p[1],s=function(a){if(!(a>=q&&a<=r)){var c,d=getTabsWidth(b.slice(0,a));null===(c=f.current)||void 0===c?void 0:c.scrollTo({left:d,behavior:"smooth"})}},t=function(){s(q-1)},u=function(){s(r+1)},v=c.findIndex(e);return React.useEffect(function(){j&&s(v)},[v,j]),React.createElement("div",{className:cnTabsFitModeScrollWrapper()},j&&React.createElement(React.Fragment,null,["prev","next"].map(function(a){return React.createElement(Button,{key:a,view:"clear",size:"xs",onlyIcon:!0,disabled:"prev"===a?0===q:r===c.length-1,iconLeft:"prev"===a?IconArrowLeft:IconArrowRight,className:cnTabsFitModeScrollWrapper("Button",{to:a}),onClick:"prev"===a?t:u})})),React.createElement("div",{className:cnTabsFitModeScrollWrapper("Content"),ref:f},d({getTabClassName:function getTabClassName(a){return cnTabsFitModeScrollWrapper("Tab",{noMargin:a===c.length-1})}})))};
1
+ import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import"./TabsFitModeScrollWrapper.css";import{IconArrowLeft}from"@consta/icons/IconArrowLeft";import{IconArrowRight}from"@consta/icons/IconArrowRight";import React from"react";import{useResizeObserved}from"../../../hooks/useResizeObserved/useResizeObserved";import{useScrollPosition}from"../../../hooks/useScrollPosition/useScrollPosition";import{cn}from"../../../utils/bem";import{Button}from"../../Button/Button";import{getTabsWidth}from"../helpers";import{getVisibleTabsRange}from"./helpers";var cnTabsFitModeScrollWrapper=cn("TabsFitModeScrollWrapper");export var TabsFitModeScrollWrapper=function(a){var b=a.tabsDimensions,c=a.items,d=a.renderItemsList,e=a.getChecked,f=React.useRef(null),g=useResizeObserved(React.useMemo(function(){return[f]},[f]),function(a){var b;return{isScrollable:a&&a.scrollWidth>a.offsetWidth,width:null!==(b=null===a||void 0===a?void 0:a.offsetWidth)&&void 0!==b?b:0,paddingLeft:a?parseInt(getComputedStyle(a).paddingLeft,10):0}}),h=_slicedToArray(g,1),i=h[0],j=i.isScrollable,k=i.width,l=i.paddingLeft,m=useScrollPosition(f.current),n=m.scrollLeft,o=getVisibleTabsRange({tabsDimensions:b,containerWidth:k,containerPaddingLeft:l,scrollLeft:n}),p=_slicedToArray(o,2),q=p[0],r=p[1],s=function(a){if(!(a>=q&&a<=r)){var c,d=getTabsWidth(b.slice(0,a));null===(c=f.current)||void 0===c?void 0:c.scrollTo({left:d,behavior:"smooth"})}},t=function(){s(q-1)},u=function(){s(r+1)},v=c.findIndex(e);return React.useEffect(function(){j&&s(v)},[v,j]),React.createElement("div",{className:cnTabsFitModeScrollWrapper()},j&&React.createElement(React.Fragment,null,["prev","next"].map(function(a){return React.createElement(Button,{key:a,view:"clear",type:"button",size:"xs",onlyIcon:!0,disabled:"prev"===a?0===q:r===c.length-1,iconLeft:"prev"===a?IconArrowLeft:IconArrowRight,className:cnTabsFitModeScrollWrapper("Button",{to:a}),onClick:"prev"===a?t:u})})),React.createElement("div",{className:cnTabsFitModeScrollWrapper("Content"),ref:f},d({getTabClassName:function getTabClassName(a){return cnTabsFitModeScrollWrapper("Tab",{noMargin:a===c.length-1})}})))};
2
2
  //# sourceMappingURL=TabsFitModeScrollWrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TabsFitModeScrollWrapper.js","names":["IconArrowLeft","IconArrowRight","React","useResizeObserved","useScrollPosition","cn","Button","getTabsWidth","getVisibleTabsRange","cnTabsFitModeScrollWrapper","TabsFitModeScrollWrapper","tabsDimensions","items","renderItemsList","getChecked","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","getTabClassName","noMargin"],"sources":["../../../../../../src/components/TabsDeprecated/FitModeScrollWrapper/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, TabsFitModeWrapperProps } from '../helpers';\nimport { getVisibleTabsRange } from './helpers';\n\nconst cnTabsFitModeScrollWrapper = cn('TabsFitModeScrollWrapper');\n\nexport const TabsFitModeScrollWrapper = <ITEM,>({\n tabsDimensions,\n items,\n renderItemsList,\n getChecked,\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]),\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(getChecked);\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 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 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","useResizeObserved","useScrollPosition","cn","Button","getTabsWidth","getVisibleTabsRange","cnTabsFitModeScrollWrapper","TabsFitModeScrollWrapper","tabsDimensions","items","renderItemsList","getChecked","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","getTabClassName","noMargin"],"sources":["../../../../../../src/components/TabsDeprecated/FitModeScrollWrapper/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, TabsFitModeWrapperProps } from '../helpers';\nimport { getVisibleTabsRange } from './helpers';\n\nconst cnTabsFitModeScrollWrapper = cn('TabsFitModeScrollWrapper');\n\nexport const TabsFitModeScrollWrapper = <ITEM,>({\n tabsDimensions,\n items,\n renderItemsList,\n getChecked,\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]),\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(getChecked);\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 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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"}