@consta/uikit 4.2.2 → 4.3.1
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.
- package/README.md +3 -3
- package/__internal__/src/components/Collapse/Collapse.d.ts +4 -45
- package/__internal__/src/components/Collapse/Collapse.js +1 -1
- package/__internal__/src/components/Collapse/Collapse.js.map +1 -1
- package/__internal__/src/components/Collapse/CollapseIcon/CollapseIcon.d.ts +1 -13
- package/__internal__/src/components/Collapse/CollapseIcon/CollapseIcon.js +1 -1
- package/__internal__/src/components/Collapse/CollapseIcon/CollapseIcon.js.map +1 -1
- package/__internal__/src/components/Collapse/types.d.ts +53 -0
- package/__internal__/src/components/Collapse/types.js +2 -0
- package/__internal__/src/components/Collapse/types.js.map +1 -0
- package/__internal__/src/components/CollapseGroup/helpers.d.ts +5 -6
- package/__internal__/src/components/CollapseGroup/helpers.js.map +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeDateTime/DateTimeTypeDateTime.css +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeTime/DateTimeTypeTime.css +1 -1
- package/__internal__/src/components/ProgressLine/ProgressLine.css +1 -1
- package/__internal__/src/components/ProgressLine/ProgressLine.js +1 -1
- package/__internal__/src/components/ProgressLine/ProgressLine.js.map +1 -1
- package/__internal__/src/components/ProgressLine/helpers.d.ts +9 -1
- package/__internal__/src/components/ProgressLine/helpers.js +1 -1
- package/__internal__/src/components/ProgressLine/helpers.js.map +1 -1
- package/__internal__/src/components/SnackBar/SnackBar.js +1 -1
- package/__internal__/src/components/SnackBar/SnackBar.js.map +1 -1
- package/__internal__/src/components/SnackBar/SnackBarItem/SnackBarItem.css +1 -1
- package/__internal__/src/components/SnackBar/SnackBarItem/SnackBarItem.js +1 -1
- package/__internal__/src/components/SnackBar/SnackBarItem/SnackBarItem.js.map +1 -1
- package/__internal__/src/components/SnackBar/helper.d.ts +1 -0
- package/__internal__/src/components/SnackBar/types.d.ts +5 -0
- package/__internal__/src/components/SnackBar/types.js +1 -1
- package/__internal__/src/components/SnackBar/types.js.map +1 -1
- package/__internal__/src/components/Table/Cell/TableCell.css +1 -1
- package/__internal__/src/components/Table/RowsCollapse/TableRowsCollapse.js +1 -1
- package/__internal__/src/components/Table/RowsCollapse/TableRowsCollapse.js.map +1 -1
- package/__internal__/src/components/Table/Table.d.ts +4 -2
- package/__internal__/src/components/Table/Table.js +1 -1
- package/__internal__/src/components/Table/Table.js.map +1 -1
- package/__internal__/src/components/Table/__mock__/data.mock.d.ts +19 -0
- package/__internal__/src/components/Table/__mock__/data.mock.js +1 -1
- package/__internal__/src/components/Table/__mock__/data.mock.js.map +1 -1
- package/__internal__/src/components/Table/helpers.d.ts +1 -0
- package/__internal__/src/components/Table/helpers.js +1 -1
- package/__internal__/src/components/Table/helpers.js.map +1 -1
- package/__internal__/src/hooks/useChoiceGroup/useChoiceGroup.js +1 -1
- package/__internal__/src/hooks/useChoiceGroup/useChoiceGroup.js.map +1 -1
- package/__internal__/src/utils/generateMask.d.ts +1 -0
- package/__internal__/src/utils/generateMask.js +2 -0
- package/__internal__/src/utils/generateMask.js.map +1 -0
- package/package.json +1 -1
- package/__internal__/src/docs/aboutConsta/aboutConsta.stand.d.ts +0 -2
- package/__internal__/src/docs/aboutConsta/aboutConsta.stand.js +0 -2
- package/__internal__/src/docs/aboutConsta/aboutConsta.stand.js.map +0 -1
- package/__internal__/src/docs/aboutConsta/components/AboutData/AboutData.css +0 -1
- package/__internal__/src/docs/aboutConsta/components/AboutData/AboutData.d.ts +0 -2
- package/__internal__/src/docs/aboutConsta/components/AboutData/AboutData.js +0 -2
- package/__internal__/src/docs/aboutConsta/components/AboutData/AboutData.js.map +0 -1
- package/__internal__/src/docs/addComponent/addComponent.stand.d.ts +0 -2
- package/__internal__/src/docs/addComponent/addComponent.stand.js +0 -2
- package/__internal__/src/docs/addComponent/addComponent.stand.js.map +0 -1
- package/__internal__/src/docs/addComponent/components/addComponentData/AddComponentData.css +0 -1
- package/__internal__/src/docs/addComponent/components/addComponentData/AddComponentData.d.ts +0 -5
- package/__internal__/src/docs/addComponent/components/addComponentData/AddComponentData.js +0 -2
- package/__internal__/src/docs/addComponent/components/addComponentData/AddComponentData.js.map +0 -1
- package/__internal__/src/docs/code/code.stand.d.ts +0 -2
- package/__internal__/src/docs/code/code.stand.js +0 -2
- package/__internal__/src/docs/code/code.stand.js.map +0 -1
- package/__internal__/src/docs/commits/commits.stand.d.ts +0 -2
- package/__internal__/src/docs/commits/commits.stand.js +0 -2
- package/__internal__/src/docs/commits/commits.stand.js.map +0 -1
- package/__internal__/src/docs/connectTheme/connectTheme.stand.d.ts +0 -2
- package/__internal__/src/docs/connectTheme/connectTheme.stand.js +0 -2
- package/__internal__/src/docs/connectTheme/connectTheme.stand.js.map +0 -1
- package/__internal__/src/docs/createPreset/createPreset.stand.d.ts +0 -2
- package/__internal__/src/docs/createPreset/createPreset.stand.js +0 -2
- package/__internal__/src/docs/createPreset/createPreset.stand.js.map +0 -1
- package/__internal__/src/docs/docs/docs.stand.d.ts +0 -2
- package/__internal__/src/docs/docs/docs.stand.js +0 -2
- package/__internal__/src/docs/docs/docs.stand.js.map +0 -1
- package/__internal__/src/docs/fileStructure/fileStructure.stand.d.ts +0 -2
- package/__internal__/src/docs/fileStructure/fileStructure.stand.js +0 -2
- package/__internal__/src/docs/fileStructure/fileStructure.stand.js.map +0 -1
- package/__internal__/src/docs/howToGo/howToGo.stand.d.ts +0 -2
- package/__internal__/src/docs/howToGo/howToGo.stand.js +0 -2
- package/__internal__/src/docs/howToGo/howToGo.stand.js.map +0 -1
- package/__internal__/src/docs/issue/issue.stand.d.ts +0 -2
- package/__internal__/src/docs/issue/issue.stand.js +0 -2
- package/__internal__/src/docs/issue/issue.stand.js.map +0 -1
- package/__internal__/src/docs/principle/principles.stand.d.ts +0 -2
- package/__internal__/src/docs/principle/principles.stand.js +0 -2
- package/__internal__/src/docs/principle/principles.stand.js.map +0 -1
- package/__internal__/src/docs/prototype/prototype.stand.d.ts +0 -2
- package/__internal__/src/docs/prototype/prototype.stand.js +0 -2
- package/__internal__/src/docs/prototype/prototype.stand.js.map +0 -1
- package/__internal__/src/docs/review/review.stand.d.ts +0 -2
- package/__internal__/src/docs/review/review.stand.js +0 -2
- package/__internal__/src/docs/review/review.stand.js.map +0 -1
- package/__internal__/src/docs/sla/components/SlaPictures/SlaPictures.d.ts +0 -1
- package/__internal__/src/docs/sla/components/SlaPictures/SlaPictures.js +0 -2
- package/__internal__/src/docs/sla/components/SlaPictures/SlaPictures.js.map +0 -1
- package/__internal__/src/docs/sla/sla.stand.d.ts +0 -2
- package/__internal__/src/docs/sla/sla.stand.js +0 -2
- package/__internal__/src/docs/sla/sla.stand.js.map +0 -1
- package/__internal__/src/docs/tableComparison/components/AboutData/AboutData.css +0 -1
- package/__internal__/src/docs/tableComparison/components/AboutData/AboutData.d.ts +0 -2
- package/__internal__/src/docs/tableComparison/components/AboutData/AboutData.js +0 -2
- package/__internal__/src/docs/tableComparison/components/AboutData/AboutData.js.map +0 -1
- package/__internal__/src/docs/tableComparison/tableComparison.stand.d.ts +0 -2
- package/__internal__/src/docs/tableComparison/tableComparison.stand.js +0 -2
- package/__internal__/src/docs/tableComparison/tableComparison.stand.js.map +0 -1
- package/__internal__/src/docs/themeAbout/themeAbout.stand.d.ts +0 -2
- package/__internal__/src/docs/themeAbout/themeAbout.stand.js +0 -2
- package/__internal__/src/docs/themeAbout/themeAbout.stand.js.map +0 -1
- package/__internal__/src/docs/units/units.stand.d.ts +0 -2
- package/__internal__/src/docs/units/units.stand.js +0 -2
- package/__internal__/src/docs/units/units.stand.js.map +0 -1
- package/__internal__/src/docs/workflow/workflow.stand.d.ts +0 -2
- package/__internal__/src/docs/workflow/workflow.stand.js +0 -2
- package/__internal__/src/docs/workflow/workflow.stand.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SnackBarItem.js","names":["React","useEffect","useState","useFlag","IconClose","cn","isNumber","isString","Button","Text","cnTheme","SnackBarActionButton","SnackBarLine","SnackBarTimer","snackBarItemStatusDefault","defaultInitialTimerTime","cnSnackBarItem","getAutoCloseTime","autoClose","SnackBarItemRender","props","ref","onClose","showProgress","Icon","icon","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 React, { useEffect, useState } from 'react';\n\nimport { useFlag } from '../../../hooks/useFlag/useFlag';\nimport { IconClose } from '../../../icons/IconClose/IconClose';\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 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 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 }, [\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":"
|
|
1
|
+
{"version":3,"file":"SnackBarItem.js","names":["React","useEffect","useState","useFlag","IconClose","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 React, { useEffect, useState } from 'react';\n\nimport { useFlag } from '../../../hooks/useFlag/useFlag';\nimport { IconClose } from '../../../icons/IconClose/IconClose';\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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"}
|
|
@@ -12,6 +12,7 @@ export declare const withDefaultGetters: (props: SnackBarProps) => {
|
|
|
12
12
|
getItemOnAutoClose: SnackBarPropGetItemOnAutoClose<SnackBarItemDefault>;
|
|
13
13
|
items: SnackBarItemDefault[];
|
|
14
14
|
children?: undefined;
|
|
15
|
+
form?: "default" | "round" | "brick" | undefined;
|
|
15
16
|
onItemClose?: ((item: SnackBarItemDefault) => void) | undefined;
|
|
16
17
|
onItemAutoClose?: ((item: SnackBarItemDefault) => void) | undefined;
|
|
17
18
|
defaultChecked?: boolean | undefined;
|
|
@@ -26,6 +26,7 @@ export declare type SnackBarActionButtonProps = {
|
|
|
26
26
|
};
|
|
27
27
|
export declare type SnackBarItemProps = PropsWithHTMLAttributesAndRef<Omit<SnackBarItemDefault, 'onClose' | 'onAutoClose'> & {
|
|
28
28
|
onClose?: () => void;
|
|
29
|
+
form?: SnackBarPropForm;
|
|
29
30
|
onAutoClose?: () => void;
|
|
30
31
|
}, HTMLDivElement>;
|
|
31
32
|
export declare const snackBarItemStatus: readonly ["normal", "system", "success", "warning", "alert"];
|
|
@@ -53,9 +54,13 @@ export declare type Mappers<ITEM> = {
|
|
|
53
54
|
getItemOnClose?: SnackBarPropGetItemOnClose<ITEM>;
|
|
54
55
|
getItemOnAutoClose?: SnackBarPropGetItemOnAutoClose<ITEM>;
|
|
55
56
|
};
|
|
57
|
+
export declare const snackBarPropForm: readonly ["default", "round", "brick"];
|
|
58
|
+
export declare type SnackBarPropForm = typeof snackBarPropForm[number];
|
|
59
|
+
export declare const snackBarPropFormDefault: "default";
|
|
56
60
|
export declare type SnackBarProps<ITEM = SnackBarItemDefault> = PropsWithHTMLAttributesAndRef<{
|
|
57
61
|
items: ITEM[];
|
|
58
62
|
children?: never;
|
|
63
|
+
form?: SnackBarPropForm;
|
|
59
64
|
onItemClose?: (item: ITEM) => void;
|
|
60
65
|
onItemAutoClose?: (item: ITEM) => void;
|
|
61
66
|
} & Mappers<ITEM>, HTMLDivElement> & (ITEM extends {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export var snackBarItemStatus=["normal","system","success","warning","alert"];export var snackBarItemStatusDefault=snackBarItemStatus[0];export var snackBarItemShowProgressProp=["timer","line"];
|
|
1
|
+
export var snackBarItemStatus=["normal","system","success","warning","alert"];export var snackBarItemStatusDefault=snackBarItemStatus[0];export var snackBarItemShowProgressProp=["timer","line"];export var snackBarPropForm=["default","round","brick"];export var snackBarPropFormDefault=snackBarPropForm[0];
|
|
2
2
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["snackBarItemStatus","snackBarItemStatusDefault","snackBarItemShowProgressProp"],"sources":["../../../../../src/components/SnackBar/types.ts"],"sourcesContent":["import { IconComponent } from '../../icons/Icon/Icon';\nimport { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';\n\nexport type SnackBarItemDefault = {\n key: string | number;\n message?: React.ReactNode;\n status?: SnackBarItemStatus;\n autoClose?: boolean | number;\n showProgress?: SnackBarItemShowProgressProp;\n icon?: IconComponent;\n actions?: SnackBarPropItemAction[];\n onClose?: (item: SnackBarItemDefault) => void;\n onAutoClose?: (item: SnackBarItemDefault) => void;\n};\n\n/**\n * @deprecated since version 3.16.0 use SnackBarItemDefault\n */\nexport type Item = SnackBarItemDefault;\n\nexport type SnackBarPropItemAction = {\n label: string | number;\n onClick: React.EventHandler<React.MouseEvent>;\n};\n\nexport type SnackBarActionButtonProps = {\n actions: SnackBarPropItemAction[];\n className?: string;\n};\n\nexport type SnackBarItemProps = PropsWithHTMLAttributesAndRef<\n Omit<SnackBarItemDefault, 'onClose' | 'onAutoClose'> & {\n onClose?: () => void;\n onAutoClose?: () => void;\n },\n HTMLDivElement\n>;\n\nexport const snackBarItemStatus = [\n 'normal',\n 'system',\n 'success',\n 'warning',\n 'alert',\n] as const;\nexport type SnackBarItemStatus = typeof snackBarItemStatus[number];\nexport const snackBarItemStatusDefault: SnackBarItemStatus =\n snackBarItemStatus[0];\n\nexport const snackBarItemShowProgressProp = ['timer', 'line'] as const;\nexport type SnackBarItemShowProgressProp =\n typeof snackBarItemShowProgressProp[number];\n\nexport type SnackBarPropGetItemKey<ITEM> = (item: ITEM) => string | number;\nexport type SnackBarPropGetItemMessage<ITEM> = (\n item: ITEM,\n) => React.ReactNode | undefined;\nexport type SnackBarPropGetItemStatus<ITEM> = (\n item: ITEM,\n) => SnackBarItemStatus | undefined;\nexport type SnackBarPropGetItemAutoClose<ITEM> = (\n item: ITEM,\n) => boolean | number | undefined;\nexport type SnackBarPropGetItemShowProgress<ITEM> = (\n item: ITEM,\n) => SnackBarItemShowProgressProp | undefined;\nexport type SnackBarPropGetItemIcon<ITEM> = (\n item: ITEM,\n) => IconComponent | undefined;\nexport type SnackBarPropGetItemActions<ITEM> = (\n item: ITEM,\n) => SnackBarPropItemAction[] | undefined;\nexport type SnackBarPropGetItemOnClose<ITEM> = (\n item: ITEM,\n) => ((item: ITEM) => void) | undefined;\nexport type SnackBarPropGetItemOnAutoClose<ITEM> = (\n item: ITEM,\n) => ((item: ITEM) => void) | undefined;\n\nexport type Mappers<ITEM> = {\n getItemKey?: SnackBarPropGetItemKey<ITEM>;\n getItemMessage?: SnackBarPropGetItemMessage<ITEM>;\n getItemStatus?: SnackBarPropGetItemStatus<ITEM>;\n getItemAutoClose?: SnackBarPropGetItemAutoClose<ITEM>;\n getItemShowProgress?: SnackBarPropGetItemShowProgress<ITEM>;\n getItemIcon?: SnackBarPropGetItemIcon<ITEM>;\n getItemActions?: SnackBarPropGetItemActions<ITEM>;\n getItemOnClose?: SnackBarPropGetItemOnClose<ITEM>;\n getItemOnAutoClose?: SnackBarPropGetItemOnAutoClose<ITEM>;\n};\n\nexport type SnackBarProps<ITEM = SnackBarItemDefault> =\n PropsWithHTMLAttributesAndRef<\n {\n items: ITEM[];\n children?: never;\n onItemClose?: (item: ITEM) => void;\n onItemAutoClose?: (item: ITEM) => void;\n } & Mappers<ITEM>,\n HTMLDivElement\n > &\n (ITEM extends { key: SnackBarItemDefault['key'] }\n ? {}\n : { getItemKey: SnackBarPropGetItemKey<ITEM> });\n\nexport type SnackBarComponent = <ITEM = SnackBarItemDefault>(\n props: SnackBarProps<ITEM>,\n) => React.ReactElement | null;\n\nexport type SnackBarTimerPropOnMount = (object: {\n pause: () => void;\n start: () => void;\n}) => void;\n\nexport type SnackBarTimerProps = {\n onMount: SnackBarTimerPropOnMount;\n onTimeIsOver: () => void;\n startTime: number;\n hidden?: boolean;\n className?: string;\n};\n\nexport type SnackBarItemComponent = (\n props: SnackBarItemProps,\n) => React.ReactElement | null;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","names":["snackBarItemStatus","snackBarItemStatusDefault","snackBarItemShowProgressProp","snackBarPropForm","snackBarPropFormDefault"],"sources":["../../../../../src/components/SnackBar/types.ts"],"sourcesContent":["import { IconComponent } from '../../icons/Icon/Icon';\nimport { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';\n\nexport type SnackBarItemDefault = {\n key: string | number;\n message?: React.ReactNode;\n status?: SnackBarItemStatus;\n autoClose?: boolean | number;\n showProgress?: SnackBarItemShowProgressProp;\n icon?: IconComponent;\n actions?: SnackBarPropItemAction[];\n onClose?: (item: SnackBarItemDefault) => void;\n onAutoClose?: (item: SnackBarItemDefault) => void;\n};\n\n/**\n * @deprecated since version 3.16.0 use SnackBarItemDefault\n */\nexport type Item = SnackBarItemDefault;\n\nexport type SnackBarPropItemAction = {\n label: string | number;\n onClick: React.EventHandler<React.MouseEvent>;\n};\n\nexport type SnackBarActionButtonProps = {\n actions: SnackBarPropItemAction[];\n className?: string;\n};\n\nexport type SnackBarItemProps = PropsWithHTMLAttributesAndRef<\n Omit<SnackBarItemDefault, 'onClose' | 'onAutoClose'> & {\n onClose?: () => void;\n form?: SnackBarPropForm;\n onAutoClose?: () => void;\n },\n HTMLDivElement\n>;\n\nexport const snackBarItemStatus = [\n 'normal',\n 'system',\n 'success',\n 'warning',\n 'alert',\n] as const;\nexport type SnackBarItemStatus = typeof snackBarItemStatus[number];\nexport const snackBarItemStatusDefault: SnackBarItemStatus =\n snackBarItemStatus[0];\n\nexport const snackBarItemShowProgressProp = ['timer', 'line'] as const;\nexport type SnackBarItemShowProgressProp =\n typeof snackBarItemShowProgressProp[number];\n\nexport type SnackBarPropGetItemKey<ITEM> = (item: ITEM) => string | number;\nexport type SnackBarPropGetItemMessage<ITEM> = (\n item: ITEM,\n) => React.ReactNode | undefined;\nexport type SnackBarPropGetItemStatus<ITEM> = (\n item: ITEM,\n) => SnackBarItemStatus | undefined;\nexport type SnackBarPropGetItemAutoClose<ITEM> = (\n item: ITEM,\n) => boolean | number | undefined;\nexport type SnackBarPropGetItemShowProgress<ITEM> = (\n item: ITEM,\n) => SnackBarItemShowProgressProp | undefined;\nexport type SnackBarPropGetItemIcon<ITEM> = (\n item: ITEM,\n) => IconComponent | undefined;\nexport type SnackBarPropGetItemActions<ITEM> = (\n item: ITEM,\n) => SnackBarPropItemAction[] | undefined;\nexport type SnackBarPropGetItemOnClose<ITEM> = (\n item: ITEM,\n) => ((item: ITEM) => void) | undefined;\nexport type SnackBarPropGetItemOnAutoClose<ITEM> = (\n item: ITEM,\n) => ((item: ITEM) => void) | undefined;\n\nexport type Mappers<ITEM> = {\n getItemKey?: SnackBarPropGetItemKey<ITEM>;\n getItemMessage?: SnackBarPropGetItemMessage<ITEM>;\n getItemStatus?: SnackBarPropGetItemStatus<ITEM>;\n getItemAutoClose?: SnackBarPropGetItemAutoClose<ITEM>;\n getItemShowProgress?: SnackBarPropGetItemShowProgress<ITEM>;\n getItemIcon?: SnackBarPropGetItemIcon<ITEM>;\n getItemActions?: SnackBarPropGetItemActions<ITEM>;\n getItemOnClose?: SnackBarPropGetItemOnClose<ITEM>;\n getItemOnAutoClose?: SnackBarPropGetItemOnAutoClose<ITEM>;\n};\n\nexport const snackBarPropForm = ['default', 'round', 'brick'] as const;\nexport type SnackBarPropForm = typeof snackBarPropForm[number];\nexport const snackBarPropFormDefault = snackBarPropForm[0];\n\nexport type SnackBarProps<ITEM = SnackBarItemDefault> =\n PropsWithHTMLAttributesAndRef<\n {\n items: ITEM[];\n children?: never;\n form?: SnackBarPropForm;\n onItemClose?: (item: ITEM) => void;\n onItemAutoClose?: (item: ITEM) => void;\n } & Mappers<ITEM>,\n HTMLDivElement\n > &\n (ITEM extends { key: SnackBarItemDefault['key'] }\n ? {}\n : { getItemKey: SnackBarPropGetItemKey<ITEM> });\n\nexport type SnackBarComponent = <ITEM = SnackBarItemDefault>(\n props: SnackBarProps<ITEM>,\n) => React.ReactElement | null;\n\nexport type SnackBarTimerPropOnMount = (object: {\n pause: () => void;\n start: () => void;\n}) => void;\n\nexport type SnackBarTimerProps = {\n onMount: SnackBarTimerPropOnMount;\n onTimeIsOver: () => void;\n startTime: number;\n hidden?: boolean;\n className?: string;\n};\n\nexport type SnackBarItemComponent = (\n props: SnackBarItemProps,\n) => React.ReactElement | null;\n"],"mappings":"AAuCA,MAAO,IAAMA,mBAAkB,CAAG,CAChC,QADgC,CAEhC,QAFgC,CAGhC,SAHgC,CAIhC,SAJgC,CAKhC,OALgC,CAA3B,CAQP,MAAO,IAAMC,0BAA6C,CACxDD,kBAAkB,CAAC,CAAD,CADb,CAGP,MAAO,IAAME,6BAA4B,CAAG,CAAC,OAAD,CAAU,MAAV,CAArC,CA0CP,MAAO,IAAMC,iBAAgB,CAAG,CAAC,SAAD,CAAY,OAAZ,CAAqB,OAArB,CAAzB,CAEP,MAAO,IAAMC,wBAAuB,CAAGD,gBAAgB,CAAC,CAAD,CAAhD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.TableCell{--buttons-wrapper-size:0px;background-color:var(--color-bg-default);box-sizing:border-box;color:var(--color-typo-primary);grid-row-end:var(--row-span);z-index:var(--table-z)}.TableCell_withoutBorder{border:none}.TableCell_isHeader{border-bottom:1px solid var(--color-bg-border);font-size:var(--size-text-xs);font-weight:var(--font-weight-text-bold);letter-spacing:.05em;line-height:var(--line-height-text-s);position:relative;text-transform:uppercase}.TableCell:not(.TableCell_isHeader){font-size:var(--size-text-s);line-height:var(--line-height-text-s)}.TableCell_isResized{word-break:break-word}.TableCell_isClickable{cursor:pointer}.TableCell_isControl,.TableCell_isFilterable,.TableCell_isSortable{--buttons-wrapper-size:var(--space-xl)}.TableCell_isFilterable.TableCell_isControl,.TableCell_isSortable.TableCell_isControl,.TableCell_isSortable.TableCell_isFilterable{--buttons-wrapper-size:var(--space-4xl)}.TableCell_isSortable.TableCell_isFilterable.TableCell_isControl{--buttons-wrapper-size:var(--space-5xl)}.TableCell_stickyOnLeft,.TableCell_stickyOnTop{position:-webkit-sticky;position:sticky}.TableCell_stickyOnLeft.TableCell_isResizer,.TableCell_stickyOnTop.TableCell_isResizer{z-index:calc(var(--sticky-top-and-left-z) + 1)}.TableCell_stickyOnTop{top:0;z-index:var(--sticky-top-z)}.TableCell_stickyOnLeft{left:0;z-index:var(--sticky-left-z)}.TableCell_stickyOnLeft.TableCell_isHeader{z-index:var(--sticky-top-and-left-z)}.TableCell_isBorderTop{border-top:var(--table-border)}.TableCell_isBorderLeft{border-left:var(--table-border)}.TableCell-Wrapper{box-sizing:border-box;display:flex;height:100%;padding:var(--cell-padding-vertical) var(--cell-padding-horizontal);padding-right:calc(var(--cell-padding-horizontal) + var(--resizer-width) + var(--buttons-wrapper-size));position:relative}.TableCell-Wrapper_wrap_truncate{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.TableCell-Wrapper_wrap_break{max-width:100%;white-space:pre-wrap;word-break:break-word}.TableCell-Wrapper_withoutPadding{padding:0}.TableCell-Wrapper_verticalAlign_top{align-items:flex-start}.TableCell-Wrapper_verticalAlign_center{align-items:center}.TableCell-Wrapper_verticalAlign_bottom{align-items:flex-end}.TableCell-Wrapper_horizontalAlign_left{justify-content:flex-start}.TableCell-Wrapper_horizontalAlign_center{justify-content:center;text-align:center}.TableCell-Wrapper_horizontalAlign_right{justify-content:flex-end;text-align:right}.TableCell_stickyOnLeft .TableCell-Wrapper:after{background:linear-gradient(90deg,var(--shadow-color),transparent);bottom:0;content:"";opacity:0;pointer-events:none;position:absolute;right:0;top:0;transform:translateX(100%);transition:opacity var(--fast-transition);width:var(--space-s)}.TableCell_stickyOnLeft.TableCell_showVerticalShadow .TableCell-Wrapper:after{opacity:1}.TableCell_isHeader:hover .TableCell-Wrapper{background:var(--color-bg-stripe)}
|
|
1
|
+
.TableCell{--buttons-wrapper-size:0px;background-color:var(--color-bg-default);box-sizing:border-box;color:var(--color-typo-primary);grid-column-end:var(--table-cell-col-end);grid-column-start:var(--table-cell-col-start);grid-row-end:var(--row-span);z-index:var(--table-z)}.TableCell_withoutBorder{border:none}.TableCell_isHeader{border-bottom:1px solid var(--color-bg-border);font-size:var(--size-text-xs);font-weight:var(--font-weight-text-bold);letter-spacing:.05em;line-height:var(--line-height-text-s);position:relative;text-transform:uppercase}.TableCell:not(.TableCell_isHeader){font-size:var(--size-text-s);line-height:var(--line-height-text-s)}.TableCell_isResized{word-break:break-word}.TableCell_isClickable{cursor:pointer}.TableCell_isControl,.TableCell_isFilterable,.TableCell_isSortable{--buttons-wrapper-size:var(--space-xl)}.TableCell_isFilterable.TableCell_isControl,.TableCell_isSortable.TableCell_isControl,.TableCell_isSortable.TableCell_isFilterable{--buttons-wrapper-size:var(--space-4xl)}.TableCell_isSortable.TableCell_isFilterable.TableCell_isControl{--buttons-wrapper-size:var(--space-5xl)}.TableCell_stickyOnLeft,.TableCell_stickyOnTop{position:-webkit-sticky;position:sticky}.TableCell_stickyOnLeft.TableCell_isResizer,.TableCell_stickyOnTop.TableCell_isResizer{z-index:calc(var(--sticky-top-and-left-z) + 1)}.TableCell_stickyOnTop{top:0;z-index:var(--sticky-top-z)}.TableCell_stickyOnLeft{left:0;z-index:var(--sticky-left-z)}.TableCell_stickyOnLeft.TableCell_isHeader{z-index:var(--sticky-top-and-left-z)}.TableCell_isBorderTop{border-top:var(--table-border)}.TableCell_isBorderLeft{border-left:var(--table-border)}.TableCell-Wrapper{box-sizing:border-box;display:flex;height:100%;padding:var(--cell-padding-vertical) var(--cell-padding-horizontal);padding-right:calc(var(--cell-padding-horizontal) + var(--resizer-width) + var(--buttons-wrapper-size));position:relative}.TableCell-Wrapper_wrap_truncate{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.TableCell-Wrapper_wrap_break{max-width:100%;white-space:pre-wrap;word-break:break-word}.TableCell-Wrapper_withoutPadding{padding:0}.TableCell-Wrapper_verticalAlign_top{align-items:flex-start}.TableCell-Wrapper_verticalAlign_center{align-items:center}.TableCell-Wrapper_verticalAlign_bottom{align-items:flex-end}.TableCell-Wrapper_horizontalAlign_left{justify-content:flex-start}.TableCell-Wrapper_horizontalAlign_center{justify-content:center;text-align:center}.TableCell-Wrapper_horizontalAlign_right{justify-content:flex-end;text-align:right}.TableCell_stickyOnLeft .TableCell-Wrapper:after{background:linear-gradient(90deg,var(--shadow-color),transparent);bottom:0;content:"";opacity:0;pointer-events:none;position:absolute;right:0;top:0;transform:translateX(100%);transition:opacity var(--fast-transition);width:var(--space-s)}.TableCell_stickyOnLeft.TableCell_showVerticalShadow .TableCell-Wrapper:after{opacity:1}.TableCell_isHeader:hover .TableCell-Wrapper{background:var(--color-bg-stripe)}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"./TableRowsCollapse.css";import React from"react";import{IconArrowDown}from"../../../icons/IconArrowDown/IconArrowDown";import{IconArrowUp}from"../../../icons/IconArrowUp/IconArrowUp";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()
|
|
1
|
+
import"./TableRowsCollapse.css";import React from"react";import{IconArrowDown}from"../../../icons/IconArrowDown/IconArrowDown";import{IconArrowUp}from"../../../icons/IconArrowUp/IconArrowUp";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))};
|
|
2
2
|
//# sourceMappingURL=TableRowsCollapse.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableRowsCollapse.js","names":["React","IconArrowDown","IconArrowUp","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 React from 'react';\n\nimport { IconArrowDown } from '../../../icons/IconArrowDown/IconArrowDown';\nimport { IconArrowUp } from '../../../icons/IconArrowUp/IconArrowUp';\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
|
|
1
|
+
{"version":3,"file":"TableRowsCollapse.js","names":["React","IconArrowDown","IconArrowUp","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 React from 'react';\n\nimport { IconArrowDown } from '../../../icons/IconArrowDown/IconArrowDown';\nimport { IconArrowUp } from '../../../icons/IconArrowUp/IconArrowUp';\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,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAASC,aAAT,kDACA,OAASC,WAAT,8CACA,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,CAAGR,WAAH,CAAiBD,aAFvC,CAGE,QAAQ,CAAC,GAHX,CAIE,OAAO,CAAEU,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"}
|
|
@@ -52,8 +52,9 @@ export declare type TableRow = {
|
|
|
52
52
|
rows?: TableRow[];
|
|
53
53
|
};
|
|
54
54
|
export declare type TableTreeRow<T extends TableRow> = {
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
options: {
|
|
56
|
+
level: number;
|
|
57
|
+
};
|
|
57
58
|
} & T;
|
|
58
59
|
export declare type TableFilters<T extends TableRow> = Filters<T>;
|
|
59
60
|
export declare type RowField<T extends TableRow> = Exclude<keyof T, symbol | number>;
|
|
@@ -63,6 +64,7 @@ declare type ColumnBase<T extends TableRow> = ValueOf<{
|
|
|
63
64
|
[K in keyof T]: {
|
|
64
65
|
accessor: K extends string ? K : never;
|
|
65
66
|
sortable?: boolean;
|
|
67
|
+
colSpan?: number | ((row: T) => number);
|
|
66
68
|
sortByField?: keyof T;
|
|
67
69
|
order?: OrderType;
|
|
68
70
|
sortFn?(a: T[K], b: T[K]): number;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _defineProperty from"@babel/runtime/helpers/defineProperty";var _excluded=["columns","rows","size","filters","isResizable","stickyHeader","stickyColumns","minColumnWidth","activeRow","verticalAlign","headerVerticalAlign","zebraStriped","borderBetweenRows","borderBetweenColumns","emptyRowsPlaceholder","defaultExpandAll","className","onRowHover","onRowClick","onRowCreate","onCellClick","getAdditionalClassName","rowCreateText","lazyLoad","onSortBy","onFiltersUpdated","getTagLabel","getCellWrap","isExpandedRowsByDefault"];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"./Table.css";import React,{useEffect,useMemo}from"react";import{useComponentSize}from"../../hooks/useComponentSize/useComponentSize";import{useForkRef}from"../../hooks/useForkRef/useForkRef";import{IconSortDown}from"../../icons/IconSortDown/IconSortDown";import{IconSortUp}from"../../icons/IconSortUp/IconSortUp";import{IconUnsort}from"../../icons/IconUnsort/IconUnsort";import{sortBy as sortByDefault,updateAt}from"../../utils/array";import{cn}from"../../utils/bem";import{setRef}from"../../utils/setRef";import{isNotNil,isString}from"../../utils/type-guards";import{Button}from"../Button/Button";import{Text}from"../Text/Text";import{TableCell}from"./Cell/TableCell";import{fieldFiltersPresent,filterTableData,getSelectedFiltersList,isSelectedFiltersPresent,useSelectedFilters}from"./filtering";import{TableHeader}from"./Header/TableHeader";import{createSortingState,getColumnLeftOffset,getColumnsSize,getMergedArray,getNewSorting,Order,transformRows,useHeaderData,useLazyLoadData}from"./helpers";import{TableResizer}from"./Resizer/TableResizer";import{TableRowsCollapse}from"./RowsCollapse/TableRowsCollapse";import{TableSelectedOptionsList}from"./SelectedOptionsList/TableSelectedOptionsList";export{TableTextFilter}from"./TextFilter/TableTextFilter";export{TableFilterContainer}from"./FilterContainer/TableFilterContainer";export{TableNumberFilter}from"./NumberFilter/TableNumberFilter";export{TableChoiceGroupFilter}from"./ChoiceGroupFilter/TableChoiceGroupFilter";var cnTable=cn("Table");export var sizes=["s","m","l"];export var zebraStriped=["odd","even"];export var headerVerticalAligns=["center","bottom"];var createButtonSizeMap={s:"xs",m:"s",l:"m"},getColumnSortByField=function(a){return a.sortable&&a.sortByField||a.accessor},sortingData=function(a,b,c){if(c)return a;if(!b)return a;var d=sortByDefault(a,b.by,b.order,b.sortFn);return d.some(function(a){var b;return null===(b=a.rows)||void 0===b?void 0:b.length})?d.map(function(a){return a.rows?_objectSpread(_objectSpread({},a),{},{rows:sortingData(a.rows,b,c)}):a}):d},defaultEmptyRowsPlaceholder=React.createElement(Text,{as:"span",view:"primary",size:"s",lineHeight:"s"},"\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445"),InternalTable=function(a,b){var c,d,e,f,g=a.columns,h=a.rows,i=a.size,j=void 0===i?"l":i,k=a.filters,l=a.isResizable,m=void 0!==l&&l,n=a.stickyHeader,o=a.stickyColumns,p=void 0===o?0:o,q=a.minColumnWidth,r=void 0===q?150:q,s=a.activeRow,t=a.verticalAlign,u=void 0===t?"top":t,v=a.headerVerticalAlign,w=void 0===v?"center":v,x=a.zebraStriped,y=a.borderBetweenRows,z=a.borderBetweenColumns,A=void 0!==z&&z,B=a.emptyRowsPlaceholder,C=void 0===B?defaultEmptyRowsPlaceholder:B,D=a.defaultExpandAll,E=a.className,F=a.onRowHover,G=a.onRowClick,H=a.onRowCreate,I=a.onCellClick,J=a.getAdditionalClassName,K=a.rowCreateText,L=void 0===K?"+ \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443":K,M=a.lazyLoad,N=a.onSortBy,O=a.onFiltersUpdated,P=a.getTagLabel,Q=a.getCellWrap,R=a.isExpandedRowsByDefault,S=void 0!==R&&R,T=_objectWithoutProperties(a,_excluded),U=useHeaderData(g),V=U.headers,W=U.flattenedHeaders,X=U.lowHeaders,Y=U.headerRowsRefs,Z=U.headerRowsHeights,$=U.resizerTopOffsets,_=(null===(c=V[0][p-1])||void 0===c?void 0:c.position.gridIndex)+((null===(d=V[0][p-1])||void 0===d?void 0:d.position.colSpan)||1),aa=function(){return X.map(function(a){return a.width})},ba=React.useState(aa()),ca=_slicedToArray(ba,2),da=ca[0],ea=ca[1],fa=React.useMemo(function(){return k&&k.filter(function(a){return a.id&&a.field})},[k]);React.useEffect(function(){ea(aa())},[X.length]);var ga=React.useState([]),ha=_slicedToArray(ga,2),ia=ha[0],ja=ha[1],ka=React.useState(null),la=_slicedToArray(ka,2),ma=la[0],na=la[1],oa=React.useState(null),pa=_slicedToArray(oa,2),qa=pa[0],ra=pa[1],sa=React.useState({top:0,left:0}),ta=_slicedToArray(sa,2),ua=ta[0],va=ta[1],wa=React.useRef(null),xa=React.useRef({}),ya=React.useRef({}),za=useSelectedFilters(fa,O),Aa=za.selectedFilters,Ba=za.updateSelectedFilters,Ca=za.removeOneSelectedFilter,Da=za.removeAllSelectedFilters,Ea=React.useState([]),Fa=_slicedToArray(Ea,2),Ga=Fa[0],Ha=Fa[1];React.useEffect(function(){var a=g.find(function(a){return isString(a.order)&&Object.prototype.hasOwnProperty.call(Order,a.order)});if(a){var b=createSortingState(getColumnSortByField(a),a.order,a.sortFn);na(b)}},[g]),useComponentSize(wa);var Ia=(null===(e=wa.current)||void 0===e?void 0:e.clientHeight)||0,Ja=(null===(f=wa.current)||void 0===f?void 0:f.clientWidth)||0,Ka=0<ua.left,La=0<ua.top,Ma=s&&s.onChange,Na=function(a,b){ea(updateAt(da,a,b))},Oa=useMemo(function(){var a=Object.values(xa.current).filter(isNotNil),b=a.map(function(a){return a.getBoundingClientRect().width}),c=getMergedArray(b,da);return c.reduce(function(c,a){return(null!==c&&void 0!==c?c:0)+(null!==a&&void 0!==a?a:0)})},[da,m]);React.useLayoutEffect(function(){var a=Object.values(xa.current).filter(isNotNil);if(0!==a.length){var b=a.map(function(a){return a.getBoundingClientRect().width});if(ja(b),a[0].getBoundingClientRect().left!==a[a.length-1].getBoundingClientRect().left){var c=getMergedArray(b,da);return(null!==Oa&&void 0!==Oa?Oa:Ja)<Ja&&(c[c.length-1]=void 0),ea(c)}return 0<Ja&&!m?ea(aa()):void 0}},[Ja,Oa]);var Pa=function(a){return getColumnSortByField(a)===(null===ma||void 0===ma?void 0:ma.by)},Qa=function(a,b){return b>=p?void 0:getColumnLeftOffset({columnIndex:a,resizedColumnWidths:da,initialColumnWidths:ia})},Ra=function(a){var b=a.id,c=a.e;s&&s.onChange&&s.onChange({id:s.id===b?void 0:b,e:c})},Sa=function(a){return function(b){return F&&F({id:a,e:b})}},Ta=function(a,b){return function(c){return H&&H({e:c,id:b,index:a})}},Ua=function(a,b){var c=Math.min(r,ia[a]),d=da[a]||ia[a],e=Math.max(c,d+b);Na(a,e);var f=wa.current;a===da.length-1&&0<b&&f&&f.scrollBy(b,0)},Va=getColumnLeftOffset({columnIndex:p,resizedColumnWidths:da,initialColumnWidths:ia}),Wa=function(a){return a.map(function(a){var b,c=a.position.gridIndex,d=da[c],e=ia[c],f=d||e,g=getColumnLeftOffset({columnIndex:c,resizedColumnWidths:da,initialColumnWidths:ia}),h=p>a.position.topHeaderGridIndex,i=p>c||Va+ua.left<g+f,j=0<((null===(b=Aa[a.accessor])||void 0===b?void 0:b.selected)||[]).length;return _objectSpread(_objectSpread({},a),{},{filterable:!!(fa&&fieldFiltersPresent(fa,a.accessor)),isSortingActive:Pa(a),isFilterActive:j,isResized:!!f&&f!==e,isSticky:h,showResizer:i,columnWidth:f,columnLeftOffset:g})})},Xa=Wa(W),Ya=React.useMemo(function(){return h.some(function(a){var b;return!(!(null!==(b=a.rows)&&void 0!==b)||!b.length)})},[h]),Za=sortingData(h,ma,N),$a=fa&&isSelectedFiltersPresent(Aa)?filterTableData({data:Za,filters:fa||[],selectedFilters:Aa}):Za,_a=M||{},ab=_a.maxVisibleRows,bb=void 0===ab?210:ab,cb=_a.scrollableEl,db=void 0===cb?wa.current:cb,eb=useLazyLoadData(bb,db,!!M),fb=eb.getSlicedRows,gb=eb.setBoundaryRef,hb=transformRows($a,Ga,S),ib=fb(hb),jb={"--table-grid-template-columns":getColumnsSize(da),"--table-width":"".concat(Ja,"px")},kb=Wa(X).some(function(a){return a.mergeCells}),lb=function(a){return function(){return Ga.includes(a)?void Ha(function(b){return b.filter(function(b){return b!==a})}):void Ha(function(b){return[].concat(_toConsumableArray(b),[a])})}},mb=function(a,b){var c,d=!(!(null!==(c=a.rows)&&void 0!==c)||!c.length)&&0===b,e={level:a.level,isExpandedByDefault:S};if(!d||S)return e;var f=Ga.includes(a.id),g=lb(a.id);return _objectSpread(_objectSpread({},e),{},{withCollapseButton:d,isExpanded:f,toggleCollapse:g})},nb=function(a,b){var c=[];return a.forEach(function(a){var d,e;if((a.defaultExpand||0<(null!==(d=null===(e=a.rows)||void 0===e?void 0:e.length)&&void 0!==d?d:0)&&b)&&c.push(a.id),a.rows){var f=nb(a.rows,b);c=[].concat(_toConsumableArray(c),_toConsumableArray(f)),0<f.length&&-1===c.indexOf(a.id)&&c.push(a.id)}}),c};useEffect(function(){h&&Ha(nb(h,D))},[h,D]);var ob=function(a,b,c){var d=a.renderCell?a.renderCell(b):b[a.accessor];if(!Ya||0!==c)return d;var e=mb(b,c);return React.createElement(TableRowsCollapse,e,d)},pb=useMemo(function(){var a,b=ib.length,c=null!==(a=ib.slice(-1).pop())&&void 0!==a?a:{},d=c.id;return H?React.createElement("div",{className:cnTable(b?"CreatRowCell":"RowWithoutCells")},React.createElement(Button,{size:createButtonSizeMap[j],form:"brick",label:L,view:"clear",className:cnTable("CreateRowButton"),onClick:Ta(b,d),width:"full"})):null},[L,ib.length,H]),qb=function(a,b,c,d){var e=c.mergeCells,f=c.accessor,g=c.position,h=c.getComparisonValue,j=void 0===h?function(a){return a}:h,k=ib[b-1]&&j(ib[b-1][f]),l=j(a[f]),m={rowSpan:1,show:!1,style:{left:Qa(d,g.topHeaderGridIndex)}};if(e&&(ib[b-1]&&k!==l||0===b)){for(var n,o=b;o<ib.length&&ib[o+1]&&(n=j(ib[o+1][f]),l===n);o++)m.rowSpan++;1<m.rowSpan&&(m.style["--row-span"]="span ".concat(m.rowSpan)),m.show=!0}return e||(m.show=!0),m},rb=function(a){null===I||void 0===I?void 0:I(a)};return React.createElement("div",Object.assign({},T,{ref:useForkRef([wa,b]),className:cnTable({size:j,isResizable:m,zebraStriped:x,withBorderBottom:!$a.length},[E]),style:jb,onScroll:function handleScroll(a){a.target instanceof HTMLElement&&a.target===wa.current&&va({top:a.target.scrollTop,left:a.target.scrollLeft})}}),Wa(X).map(function(a,b){return React.createElement(TableCell,{type:"resizer",key:b,ref:function(a){xa.current[b]=a},style:{left:Qa(b,b)},onContextMenu:function onContextMenu(a){return rb({e:a,type:"contextMenu",columnIdx:b,ref:{current:xa.current[b]}})},onClick:function onClick(a){return rb({e:a,type:"click",columnIdx:b,ref:{current:xa.current[b]}})},column:a,showVerticalShadow:Ka},m&&React.createElement(TableResizer,{height:Ia-$[b],top:$[b],isVisible:a.showResizer,onResize:function onResize(a){return Ua(b,a)},onDoubleClick:function onDoubleClick(){return Na(b,ia[b])}}))}),React.createElement(TableHeader,{isStickyHeader:void 0!==n&&n,headersWithMetaData:Xa,headerRowsHeights:Z,headerRowsRefs:Y,getStickyLeftOffset:Qa,stickyColumnsGrid:_,showVerticalCellShadow:Ka,headerVerticalAlign:w,getSortIcon:function getSortIcon(a){return Pa(a)&&("desc"===(null===ma||void 0===ma?void 0:ma.order)?IconSortDown:IconSortUp)||IconUnsort},handleSortClick:function handleSortClick(a){var b=getNewSorting(ma,getColumnSortByField(a),a.sortable&&(null===a||void 0===a?void 0:a.sortFn)||void 0),c=b?{sortingBy:b.by,sortOrder:b.order}:null;N&&N(c),na(b)},handleFilterTogglerClick:function handleFilterTogglerClick(a){return function(){ra(qa===a?null:a)}},handleCellClick:rb,handleTooltipSave:function handleTooltipSave(a,b,c){Ba(a,b,c)},filters:fa,visibleFilter:qa,selectedFilters:Aa,showHorizontalCellShadow:La,borderBetweenColumns:A}),fa&&isSelectedFiltersPresent(Aa)&&React.createElement("div",{className:cnTable("RowWithoutCells")},React.createElement(TableSelectedOptionsList,{values:getSelectedFiltersList({filters:fa,selectedFilters:Aa,columns:X}),getTagLabel:P,onRemove:function removeSelectedFilter(a){return function(b){Ca(a,b)}}(fa),onReset:function resetSelectedFilters(){fa&&fa.length&&Da(fa)}})),0<ib.length?ib.map(function(a,b){var c=0==(b+1)%2?"even":"odd";return React.createElement("div",{key:a.id,role:"presentation",className:cnTable("CellsRow",{nth:c,withMergedCells:kb}),onMouseEnter:Sa(a.id),onMouseLeave:Sa(void 0),onClick:function onClick(b){return G&&G({id:a.id,e:b})}},Wa(X).map(function(c,d){var e=qb(a,b,c,d),f=e.show,g=e.style,h=e.rowSpan;return f?React.createElement(TableCell,{type:"content",key:c.accessor,ref:function(c){ya.current["".concat(d,"-").concat(a.id)]=c,setRef(gb(d,b),c)},style:g,wrapperClassName:cnTable("ContentCell",{isActive:!!s&&s.id===a.id,isDarkned:!!s&&void 0!==s.id&&s.id!==a.id,isMerged:c.mergeCells&&1<h}),className:null===J||void 0===J?void 0:J({column:c,row:a,isActive:!!s&&s.id===a.id}),wrap:null===Q||void 0===Q?void 0:Q(a),onContextMenu:function onContextMenu(b){return rb({e:b,type:"contextMenu",columnIdx:d,rowId:a.id,ref:{current:ya.current["".concat(d,"-").concat(a.id)]}})},onClick:function onClick(b){Ra({id:a.id,e:b}),rb({e:b,type:"click",columnIdx:d,rowId:a.id,ref:{current:ya.current["".concat(d,"-").concat(a.id)]}})},column:c,verticalAlign:u,isClickable:!!Ma,showVerticalShadow:Ka&&(null===c||void 0===c?void 0:c.position.gridIndex)+((null===c||void 0===c?void 0:c.position.colSpan)||1)===_,isBorderTop:0<b&&void 0!==y&&y,isBorderLeft:0<d&&A},ob(c,a,d)):null}))}):React.createElement("div",{className:cnTable("RowWithoutCells")},React.createElement("div",{className:cnTable("EmptyCell")},function renderEmptyRowsPlaceholder(a){return"string"==typeof a?React.createElement(Text,{size:"s"},a):a}(C))),pb)};export var Table=React.forwardRef(InternalTable);
|
|
1
|
+
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _defineProperty from"@babel/runtime/helpers/defineProperty";var _excluded=["columns","rows","size","filters","isResizable","stickyHeader","stickyColumns","minColumnWidth","activeRow","verticalAlign","headerVerticalAlign","zebraStriped","borderBetweenRows","borderBetweenColumns","emptyRowsPlaceholder","defaultExpandAll","className","onRowHover","onRowClick","onRowCreate","onCellClick","getAdditionalClassName","rowCreateText","lazyLoad","onSortBy","onFiltersUpdated","getTagLabel","getCellWrap","isExpandedRowsByDefault"];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"./Table.css";import React,{useEffect,useMemo}from"react";import{useComponentSize}from"../../hooks/useComponentSize/useComponentSize";import{useForkRef}from"../../hooks/useForkRef/useForkRef";import{IconSortDown}from"../../icons/IconSortDown/IconSortDown";import{IconSortUp}from"../../icons/IconSortUp/IconSortUp";import{IconUnsort}from"../../icons/IconUnsort/IconUnsort";import{sortBy as sortByDefault,updateAt}from"../../utils/array";import{cn}from"../../utils/bem";import{setRef}from"../../utils/setRef";import{isNotNil,isString}from"../../utils/type-guards";import{Button}from"../Button/Button";import{Text}from"../Text/Text";import{TableCell}from"./Cell/TableCell";import{fieldFiltersPresent,filterTableData,getSelectedFiltersList,isSelectedFiltersPresent,useSelectedFilters}from"./filtering";import{TableHeader}from"./Header/TableHeader";import{calulateColSpans,createSortingState,getColumnLeftOffset,getColumnsSize,getMergedArray,getNewSorting,Order,transformRows,useHeaderData,useLazyLoadData}from"./helpers";import{TableResizer}from"./Resizer/TableResizer";import{TableRowsCollapse}from"./RowsCollapse/TableRowsCollapse";import{TableSelectedOptionsList}from"./SelectedOptionsList/TableSelectedOptionsList";export{TableTextFilter}from"./TextFilter/TableTextFilter";export{TableFilterContainer}from"./FilterContainer/TableFilterContainer";export{TableNumberFilter}from"./NumberFilter/TableNumberFilter";export{TableChoiceGroupFilter}from"./ChoiceGroupFilter/TableChoiceGroupFilter";var cnTable=cn("Table");export var sizes=["s","m","l"];export var zebraStriped=["odd","even"];export var headerVerticalAligns=["center","bottom"];var createButtonSizeMap={s:"xs",m:"s",l:"m"},getColumnSortByField=function(a){return a.sortable&&a.sortByField||a.accessor},sortingData=function(a,b,c){if(c)return a;if(!b)return a;var d=sortByDefault(a,b.by,b.order,b.sortFn);return d.some(function(a){var b;return null===(b=a.rows)||void 0===b?void 0:b.length})?d.map(function(a){return a.rows?_objectSpread(_objectSpread({},a),{},{rows:sortingData(a.rows,b,c)}):a}):d},defaultEmptyRowsPlaceholder=React.createElement(Text,{as:"span",view:"primary",size:"s",lineHeight:"s"},"\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445"),InternalTable=function(a,b){var c,d,e,f,g=a.columns,h=a.rows,i=a.size,j=void 0===i?"l":i,k=a.filters,l=a.isResizable,m=void 0!==l&&l,n=a.stickyHeader,o=a.stickyColumns,p=void 0===o?0:o,q=a.minColumnWidth,r=void 0===q?150:q,s=a.activeRow,t=a.verticalAlign,u=void 0===t?"top":t,v=a.headerVerticalAlign,w=void 0===v?"center":v,x=a.zebraStriped,y=a.borderBetweenRows,z=a.borderBetweenColumns,A=void 0!==z&&z,B=a.emptyRowsPlaceholder,C=void 0===B?defaultEmptyRowsPlaceholder:B,D=a.defaultExpandAll,E=a.className,F=a.onRowHover,G=a.onRowClick,H=a.onRowCreate,I=a.onCellClick,J=a.getAdditionalClassName,K=a.rowCreateText,L=void 0===K?"+ \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443":K,M=a.lazyLoad,N=a.onSortBy,O=a.onFiltersUpdated,P=a.getTagLabel,Q=a.getCellWrap,R=a.isExpandedRowsByDefault,S=void 0!==R&&R,T=_objectWithoutProperties(a,_excluded),U=useHeaderData(g),V=U.headers,W=U.flattenedHeaders,X=U.lowHeaders,Y=U.headerRowsRefs,Z=U.headerRowsHeights,$=U.resizerTopOffsets,_=(null===(c=V[0][p-1])||void 0===c?void 0:c.position.gridIndex)+((null===(d=V[0][p-1])||void 0===d?void 0:d.position.colSpan)||1),aa=function(){return X.map(function(a){return a.width})},ba=React.useState(aa()),ca=_slicedToArray(ba,2),da=ca[0],ea=ca[1],fa=React.useMemo(function(){return k&&k.filter(function(a){return a.id&&a.field})},[k]);React.useEffect(function(){ea(aa())},[X.length]);var ga=React.useState([]),ha=_slicedToArray(ga,2),ia=ha[0],ja=ha[1],ka=React.useState(null),la=_slicedToArray(ka,2),ma=la[0],na=la[1],oa=React.useState(null),pa=_slicedToArray(oa,2),qa=pa[0],ra=pa[1],sa=React.useState({top:0,left:0}),ta=_slicedToArray(sa,2),ua=ta[0],va=ta[1],wa=React.useRef(null),xa=React.useRef({}),ya=React.useRef({}),za=useSelectedFilters(fa,O),Aa=za.selectedFilters,Ba=za.updateSelectedFilters,Ca=za.removeOneSelectedFilter,Da=za.removeAllSelectedFilters,Ea=React.useState([]),Fa=_slicedToArray(Ea,2),Ga=Fa[0],Ha=Fa[1];React.useEffect(function(){var a=g.find(function(a){return isString(a.order)&&Object.prototype.hasOwnProperty.call(Order,a.order)});if(a){var b=createSortingState(getColumnSortByField(a),a.order,a.sortFn);na(b)}},[g]),useComponentSize(wa);var Ia=(null===(e=wa.current)||void 0===e?void 0:e.clientHeight)||0,Ja=(null===(f=wa.current)||void 0===f?void 0:f.clientWidth)||0,Ka=0<ua.left,La=0<ua.top,Ma=s&&s.onChange,Na=function(a,b){ea(updateAt(da,a,b))},Oa=useMemo(function(){var a=Object.values(xa.current).filter(isNotNil),b=a.map(function(a){return a.getBoundingClientRect().width}),c=getMergedArray(b,da);return c.reduce(function(c,a){return(null!==c&&void 0!==c?c:0)+(null!==a&&void 0!==a?a:0)})},[da,m]);React.useLayoutEffect(function(){var a=Object.values(xa.current).filter(isNotNil);if(0!==a.length){var b=a.map(function(a){return a.getBoundingClientRect().width});if(ja(b),a[0].getBoundingClientRect().left!==a[a.length-1].getBoundingClientRect().left){var c=getMergedArray(b,da);return(null!==Oa&&void 0!==Oa?Oa:Ja)<Ja&&(c[c.length-1]=void 0),ea(c)}return 0<Ja&&!m?ea(aa()):void 0}},[Ja,Oa]);var Pa=function(a){return getColumnSortByField(a)===(null===ma||void 0===ma?void 0:ma.by)},Qa=function(a,b){return b>=p?void 0:getColumnLeftOffset({columnIndex:a,resizedColumnWidths:da,initialColumnWidths:ia})},Ra=function(a){var b=a.id,c=a.e;s&&s.onChange&&s.onChange({id:s.id===b?void 0:b,e:c})},Sa=function(a){return function(b){return F&&F({id:a,e:b})}},Ta=function(a,b){return function(c){return H&&H({e:c,id:b,index:a})}},Ua=function(a,b){var c=Math.min(r,ia[a]),d=da[a]||ia[a],e=Math.max(c,d+b);Na(a,e);var f=wa.current;a===da.length-1&&0<b&&f&&f.scrollBy(b,0)},Va=getColumnLeftOffset({columnIndex:p,resizedColumnWidths:da,initialColumnWidths:ia}),Wa=function(a){return a.map(function(a){var b,c=a.position.gridIndex,d=da[c],e=ia[c],f=d||e,g=getColumnLeftOffset({columnIndex:c,resizedColumnWidths:da,initialColumnWidths:ia}),h=p>a.position.topHeaderGridIndex,i=p>c||Va+ua.left<g+f,j=0<((null===(b=Aa[a.accessor])||void 0===b?void 0:b.selected)||[]).length;return _objectSpread(_objectSpread({},a),{},{filterable:!!(fa&&fieldFiltersPresent(fa,a.accessor)),isSortingActive:Pa(a),isFilterActive:j,isResized:!!f&&f!==e,isSticky:h,showResizer:i,columnWidth:f,columnLeftOffset:g})})},Xa=Wa(W),Ya=React.useMemo(function(){return h.some(function(a){var b;return!(!(null!==(b=a.rows)&&void 0!==b)||!b.length)})},[h]),Za=sortingData(h,ma,N),$a=fa&&isSelectedFiltersPresent(Aa)?filterTableData({data:Za,filters:fa||[],selectedFilters:Aa}):Za,_a=M||{},ab=_a.maxVisibleRows,bb=void 0===ab?210:ab,cb=_a.scrollableEl,db=void 0===cb?wa.current:cb,eb=useLazyLoadData(bb,db,!!M),fb=eb.getSlicedRows,gb=eb.setBoundaryRef,hb=transformRows($a,Ga,S),ib=fb(hb),jb={"--table-grid-template-columns":getColumnsSize(da),"--table-width":"".concat(Ja,"px")},kb=Wa(X).some(function(a){return a.mergeCells}),lb=function(a){return function(){return Ga.includes(a)?void Ha(function(b){return b.filter(function(b){return b!==a})}):void Ha(function(b){return[].concat(_toConsumableArray(b),[a])})}},mb=function(a,b){var c,d=!(!(null!==(c=a.rows)&&void 0!==c)||!c.length)&&0===b,e={level:a.options.level,isExpandedByDefault:S};if(!d||S)return e;var f=Ga.includes(a.id),g=lb(a.id);return _objectSpread(_objectSpread({},e),{},{withCollapseButton:d,isExpanded:f,toggleCollapse:g})},nb=function(a,b){var c=[];return a.forEach(function(a){var d,e;if((a.defaultExpand||0<(null!==(d=null===(e=a.rows)||void 0===e?void 0:e.length)&&void 0!==d?d:0)&&b)&&c.push(a.id),a.rows){var f=nb(a.rows,b);c=[].concat(_toConsumableArray(c),_toConsumableArray(f)),0<f.length&&-1===c.indexOf(a.id)&&c.push(a.id)}}),c};useEffect(function(){h&&Ha(nb(h,D))},[h,D]);var ob=function(a,b,c){var d=a.renderCell?a.renderCell(b):b[a.accessor];if(!Ya||0!==c)return d;var e=mb(b,c);return React.createElement(TableRowsCollapse,e,d)},pb=useMemo(function(){var a,b=ib.length,c=null!==(a=ib.slice(-1).pop())&&void 0!==a?a:{},d=c.id;return H?React.createElement("div",{className:cnTable(b?"CreatRowCell":"RowWithoutCells")},React.createElement(Button,{size:createButtonSizeMap[j],form:"brick",label:L,view:"clear",className:cnTable("CreateRowButton"),onClick:Ta(b,d),width:"full"})):null},[L,ib.length,H]),qb=function(a,b,c,d){var e=c.mergeCells,f=c.accessor,g=c.position,h=c.getComparisonValue,j=void 0===h?function(a){return a}:h,k=ib[b-1]&&j(ib[b-1][f]),l=j(a[f]),m={rowSpan:1,show:!1,style:{left:Qa(d,g.topHeaderGridIndex)}};if(e&&(ib[b-1]&&k!==l||0===b)){for(var n,o=b;o<ib.length&&ib[o+1]&&(n=j(ib[o+1][f]),l===n);o++)m.rowSpan++;1<m.rowSpan&&(m.style["--row-span"]="span ".concat(m.rowSpan)),m.show=!0}return e||(m.show=!0),m},rb=function(a){null===I||void 0===I?void 0:I(a)};return React.createElement("div",Object.assign({},T,{ref:useForkRef([wa,b]),className:cnTable({size:j,isResizable:m,zebraStriped:x,withBorderBottom:!$a.length},[E]),style:jb,onScroll:function handleScroll(a){a.target instanceof HTMLElement&&a.target===wa.current&&va({top:a.target.scrollTop,left:a.target.scrollLeft})}}),Wa(X).map(function(a,b){return React.createElement(TableCell,{type:"resizer",key:b,ref:function(a){xa.current[b]=a},style:{left:Qa(b,b)},onContextMenu:function onContextMenu(a){return rb({e:a,type:"contextMenu",columnIdx:b,ref:{current:xa.current[b]}})},onClick:function onClick(a){return rb({e:a,type:"click",columnIdx:b,ref:{current:xa.current[b]}})},column:a,showVerticalShadow:Ka},m&&React.createElement(TableResizer,{height:Ia-$[b],top:$[b],isVisible:a.showResizer,onResize:function onResize(a){return Ua(b,a)},onDoubleClick:function onDoubleClick(){return Na(b,ia[b])}}))}),React.createElement(TableHeader,{isStickyHeader:void 0!==n&&n,headersWithMetaData:Xa,headerRowsHeights:Z,headerRowsRefs:Y,getStickyLeftOffset:Qa,stickyColumnsGrid:_,showVerticalCellShadow:Ka,headerVerticalAlign:w,getSortIcon:function getSortIcon(a){return Pa(a)&&("desc"===(null===ma||void 0===ma?void 0:ma.order)?IconSortDown:IconSortUp)||IconUnsort},handleSortClick:function handleSortClick(a){var b=getNewSorting(ma,getColumnSortByField(a),a.sortable&&(null===a||void 0===a?void 0:a.sortFn)||void 0),c=b?{sortingBy:b.by,sortOrder:b.order}:null;N&&N(c),na(b)},handleFilterTogglerClick:function handleFilterTogglerClick(a){return function(){ra(qa===a?null:a)}},handleCellClick:rb,handleTooltipSave:function handleTooltipSave(a,b,c){Ba(a,b,c)},filters:fa,visibleFilter:qa,selectedFilters:Aa,showHorizontalCellShadow:La,borderBetweenColumns:A}),fa&&isSelectedFiltersPresent(Aa)&&React.createElement("div",{className:cnTable("RowWithoutCells")},React.createElement(TableSelectedOptionsList,{values:getSelectedFiltersList({filters:fa,selectedFilters:Aa,columns:X}),getTagLabel:P,onRemove:function removeSelectedFilter(a){return function(b){Ca(a,b)}}(fa),onReset:function resetSelectedFilters(){fa&&fa.length&&Da(fa)}})),0<ib.length?ib.map(function(a,b){var c=0==(b+1)%2?"even":"odd",d=Wa(X),e=calulateColSpans(d,a);return React.createElement("div",{key:a.id,role:"presentation",className:cnTable("CellsRow",{nth:c,withMergedCells:kb}),onMouseEnter:Sa(a.id),onMouseLeave:Sa(void 0),onClick:function onClick(b){return G&&G({id:a.id,e:b})}},d.map(function(c,d){var f=qb(a,b,c,d),g=f.show,h=f.style,i=f.rowSpan,j=e[d],k=0<d?e.slice(0,d).reduce(function(c,a){return c+a})+1:1;if(g&&0<j){var l;return React.createElement(TableCell,{type:"content",key:c.accessor,ref:function(c){ya.current["".concat(d,"-").concat(a.id)]=c,setRef(gb(d,b),c)},style:_objectSpread(_objectSpread({},h),{},(l={},_defineProperty(l,"--table-cell-col-start",k),_defineProperty(l,"--table-cell-col-end",k+j),l)),wrapperClassName:cnTable("ContentCell",{isActive:!!s&&s.id===a.id,isDarkned:!!s&&s.id!==void 0&&s.id!==a.id,isMerged:c.mergeCells&&1<i}),className:null===J||void 0===J?void 0:J({column:c,row:a,isActive:!!s&&s.id===a.id}),wrap:null===Q||void 0===Q?void 0:Q(a),onContextMenu:function onContextMenu(b){return rb({e:b,type:"contextMenu",columnIdx:d,rowId:a.id,ref:{current:ya.current["".concat(d,"-").concat(a.id)]}})},onClick:function onClick(b){Ra({id:a.id,e:b}),rb({e:b,type:"click",columnIdx:d,rowId:a.id,ref:{current:ya.current["".concat(d,"-").concat(a.id)]}})},column:c,verticalAlign:u,isClickable:!!Ma,showVerticalShadow:Ka&&(null===c||void 0===c?void 0:c.position.gridIndex)+((null===c||void 0===c?void 0:c.position.colSpan)||1)===_,isBorderTop:0<b&&void 0!==y&&y,isBorderLeft:0<d&&A},ob(c,a,d))}return null}))}):React.createElement("div",{className:cnTable("RowWithoutCells")},React.createElement("div",{className:cnTable("EmptyCell")},function renderEmptyRowsPlaceholder(a){return"string"==typeof a?React.createElement(Text,{size:"s"},a):a}(C))),pb)};export var Table=React.forwardRef(InternalTable);
|
|
2
2
|
//# sourceMappingURL=Table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.js","names":["React","useEffect","useMemo","useComponentSize","useForkRef","IconSortDown","IconSortUp","IconUnsort","sortBy","sortByDefault","updateAt","cn","setRef","isNotNil","isString","Button","Text","TableCell","fieldFiltersPresent","filterTableData","getSelectedFiltersList","isSelectedFiltersPresent","useSelectedFilters","TableHeader","createSortingState","getColumnLeftOffset","getColumnsSize","getMergedArray","getNewSorting","Order","transformRows","useHeaderData","useLazyLoadData","TableResizer","TableRowsCollapse","TableSelectedOptionsList","TableTextFilter","TableFilterContainer","TableNumberFilter","TableChoiceGroupFilter","cnTable","sizes","zebraStriped","headerVerticalAligns","createButtonSizeMap","s","m","l","getColumnSortByField","column","sortable","sortByField","accessor","sortingData","rows","sorting","onSortBy","sortedRows","by","order","sortFn","some","row","length","map","defaultEmptyRowsPlaceholder","InternalTable","props","ref","columns","size","rawFilters","filters","isResizable","stickyHeader","stickyColumns","minColumnWidth","activeRow","verticalAlign","headerVerticalAlign","borderBetweenRows","borderBetweenColumns","emptyRowsPlaceholder","defaultExpandAll","className","onRowHover","onRowClick","onRowCreate","onCellClick","getAdditionalClassName","rowCreateText","lazyLoad","onFiltersUpdated","getTagLabel","getCellWrap","isExpandedRowsByDefault","otherProps","headers","flattenedHeaders","lowHeaders","headerRowsRefs","headerRowsHeights","resizerTopOffsets","stickyColumnsGrid","position","gridIndex","colSpan","getColumnsWidth","width","useState","resizedColumnWidths","setResizedColumnWidths","filter","id","field","initialColumnWidths","setInitialColumnWidths","setSorting","visibleFilter","setVisibleFilter","top","left","tableScroll","setTableScroll","tableRef","useRef","columnsRefs","cellsRefs","selectedFilters","updateSelectedFilters","removeOneSelectedFilter","removeAllSelectedFilters","expandedRowIds","setExpandedRowIds","sortingColumn","find","col","Object","prototype","hasOwnProperty","call","sortingState","tableHeight","current","clientHeight","tableWidth","clientWidth","showVerticalCellShadow","showHorizontalCellShadow","isRowsClickable","onChange","updateColumnWidth","idx","newWidth","overallColumnsWidth","columnsElements","values","columnsElementsWidths","el","getBoundingClientRect","resultArr","reduce","a","b","useLayoutEffect","isSortedByColumn","getStickyLeftOffset","columnIndex","topHeaderGridIndex","handleSelectRow","e","handleRowHover","handleRowCreate","index","handleColumnResize","delta","columnMinWidth","Math","min","prevColumnWidth","newColumnWidth","max","containerEl","scrollBy","stickyColumnsWidth","columnsWithMetaData","resizedColumnWidth","initialColumnWidth","columnWidth","columnLeftOffset","isSticky","showResizer","isFilterActive","selected","filterable","isSortingActive","isResized","headersWithMetaData","hasNestedRows","sortedTableData","filteredData","data","maxVisibleRows","scrollableEl","getSlicedRows","setBoundaryRef","flatRowsData","rowsData","tableStyle","hasMergedCells","header","mergeCells","handleExpandRow","includes","prevState","rowId","getCollapseRollProps","columnIdx","withCollapseButton","baseProps","level","isExpandedByDefault","isExpanded","toggleCollapse","getExpandedRows","expandedIds","forEach","defaultExpand","push","ids","indexOf","renderCell","cellContent","collapseRollProps","bottomCreateRowButton","rowsLength","slice","pop","lastRowId","getTableCellProps","rowIdx","getComparisonValue","previousCell","currentCell","result","rowSpan","show","style","nextCell","i","handleCellClick","params","withBorderBottom","handleScroll","target","HTMLElement","scrollTop","scrollLeft","type","getSortIcon","handleSortClick","newSorting","sortProps","sortingBy","sortOrder","handleFilterTogglerClick","handleTooltipSave","tooltipSelectedFilters","value","removeSelectedFilter","tableFilters","resetSelectedFilters","nth","withMergedCells","isActive","isDarkned","isMerged","renderEmptyRowsPlaceholder","placeholder","Table","forwardRef"],"sources":["../../../../../src/components/Table/Table.tsx"],"sourcesContent":["import './Table.css';\n\nimport React, { useEffect, useMemo } from 'react';\n\nimport { useComponentSize } from '../../hooks/useComponentSize/useComponentSize';\nimport { useForkRef } from '../../hooks/useForkRef/useForkRef';\nimport { IconSortDown } from '../../icons/IconSortDown/IconSortDown';\nimport { IconSortUp } from '../../icons/IconSortUp/IconSortUp';\nimport { IconUnsort } from '../../icons/IconUnsort/IconUnsort';\nimport { sortBy as sortByDefault, updateAt } from '../../utils/array';\nimport { cn } from '../../utils/bem';\nimport { setRef } from '../../utils/setRef';\nimport { isNotNil, isString } from '../../utils/type-guards';\nimport { Button, ButtonPropSize } from '../Button/Button';\nimport { Text } from '../Text/Text';\nimport { HorizontalAlign, TableCell, VerticalAlign } from './Cell/TableCell';\nimport {\n fieldFiltersPresent,\n FieldSelectedValues,\n Filters,\n filterTableData,\n getSelectedFiltersList,\n isSelectedFiltersPresent,\n onSortBy,\n SelectedFilters,\n useSelectedFilters,\n} from './filtering';\nimport { TableHeader } from './Header/TableHeader';\nimport {\n createSortingState,\n getColumnLeftOffset,\n getColumnsSize,\n getMergedArray,\n getNewSorting,\n Header,\n Order,\n OrderType,\n Position,\n transformRows,\n useHeaderData,\n useLazyLoadData,\n} from './helpers';\nimport { TableResizer } from './Resizer/TableResizer';\nimport {\n Props as TableRowsCollapseProps,\n TableRowsCollapse,\n} from './RowsCollapse/TableRowsCollapse';\nimport {\n GetTagLabel,\n TableSelectedOptionsList,\n} from './SelectedOptionsList/TableSelectedOptionsList';\n\nexport { TableTextFilter } from './TextFilter/TableTextFilter';\nexport { TableFilterContainer } from './FilterContainer/TableFilterContainer';\nexport { TableNumberFilter } from './NumberFilter/TableNumberFilter';\nexport { TableChoiceGroupFilter } from './ChoiceGroupFilter/TableChoiceGroupFilter';\n\nconst cnTable = cn('Table');\n\nexport const sizes = ['s', 'm', 'l'] as const;\ntype Size = typeof sizes[number];\n\nexport const zebraStriped = ['odd', 'even'] as const;\ntype ZebraStriped = typeof zebraStriped[number];\n\nexport const headerVerticalAligns = ['center', 'bottom'] as const;\nexport type HeaderVerticalAlign = typeof headerVerticalAligns[number];\n\nconst createButtonSizeMap: Record<Size, ButtonPropSize> = {\n s: 'xs',\n m: 's',\n l: 'm',\n};\n\ntype TableCSSCustomProperty = {\n '--table-width': string;\n '--table-grid-template-columns': string;\n};\n\nexport type LazyLoad =\n | {\n maxVisibleRows?: number;\n scrollableEl?: HTMLDivElement | Window;\n }\n | undefined;\n\ntype ActiveRow = {\n id: string | undefined;\n onChange: ({\n id,\n e,\n }: {\n id: string | undefined;\n e?: React.SyntheticEvent;\n }) => void;\n};\n\ntype onRowHover = ({\n id,\n e,\n}: {\n id: string | undefined;\n e: React.MouseEvent;\n}) => void;\n\ntype onRowClick = ({ id, e }: { id: string; e: React.MouseEvent }) => void;\n\ntype onRowCreate = ({\n id,\n index,\n e,\n}: {\n id?: string;\n index: number;\n e: React.MouseEvent;\n}) => void;\n\nexport type CellClickType = 'click' | 'contextMenu';\n\nexport type onCellClick = ({\n e,\n type,\n rowId,\n columnIdx,\n ref,\n}: {\n e: React.SyntheticEvent;\n type: CellClickType;\n columnIdx: number;\n ref: React.RefObject<HTMLDivElement>;\n rowId?: string;\n}) => void;\n\nexport type TableRow = {\n id: string;\n defaultExpand?: boolean;\n rows?: TableRow[];\n};\n\nexport type TableTreeRow<T extends TableRow> = {\n level: number;\n parentId?: string;\n} & T;\n\nexport type TableFilters<T extends TableRow> = Filters<T>;\n\nexport type RowField<T extends TableRow> = Exclude<keyof T, symbol | number>;\n\nexport type ColumnWidth = number | undefined;\n\nexport type ValueOf<T> = T[keyof T];\n\ntype ColumnBase<T extends TableRow> = ValueOf<{\n [K in keyof T]: {\n accessor: K extends string ? K : never;\n sortable?: boolean;\n sortByField?: keyof T;\n order?: OrderType;\n sortFn?(a: T[K], b: T[K]): number;\n renderCell?: (row: T) => React.ReactNode;\n getComparisonValue?: (cell: T[K]) => number | string;\n };\n}>;\ntype SingleColumnAddition<T extends TableRow> = ColumnBase<T> & {\n columns?: never;\n};\ntype GroupColumnAddition<T extends TableRow> = {\n columns: TableColumn<T>[];\n} & {\n // eslint-disable-next-line no-unused-vars\n [K in keyof ColumnBase<T>]?: never;\n};\nexport interface TableControl<T extends TableRow> {\n column: Header<T> & ColumnMetaData;\n}\n\nexport type SortByProps<T extends TableRow> = {\n sortingBy: keyof T;\n sortOrder: 'asc' | 'desc';\n};\n\nexport type TableColumn<T extends TableRow> = {\n title: React.ReactNode;\n align?: HorizontalAlign;\n withoutPadding?: boolean;\n width?: ColumnWidth;\n mergeCells?: boolean;\n position?: Position;\n hidden?: boolean;\n control?: ({ column }: TableControl<T>) => React.ReactNode;\n} & (GroupColumnAddition<T> | SingleColumnAddition<T>);\n\nexport type TableProps<T extends TableRow> = {\n columns: TableColumn<T>[];\n rows: T[];\n isResizable?: boolean;\n filters?: Filters<T>;\n onSortBy?: onSortBy<T>;\n size?: Size;\n stickyHeader?: boolean;\n stickyColumns?: number;\n minColumnWidth?: number;\n activeRow?: ActiveRow;\n verticalAlign?: VerticalAlign;\n headerVerticalAlign?: HeaderVerticalAlign;\n zebraStriped?: ZebraStriped;\n borderBetweenRows?: boolean;\n defaultExpandAll?: boolean;\n borderBetweenColumns?: boolean;\n emptyRowsPlaceholder?: React.ReactNode;\n className?: string;\n onRowHover?: onRowHover;\n onRowClick?: onRowClick;\n onRowCreate?: onRowCreate;\n onCellClick?: onCellClick;\n getAdditionalClassName?: (props: {\n column: TableColumn<T>;\n row: T;\n isActive: boolean;\n }) => string;\n rowCreateText?: string;\n lazyLoad?: LazyLoad;\n onFiltersUpdated?: (filters: SelectedFilters) => void;\n getTagLabel?: GetTagLabel;\n isExpandedRowsByDefault?: boolean;\n getCellWrap?: (row: T) => 'truncate' | 'break';\n};\n\ntype Table = <T extends TableRow>(\n props: TableProps<T> & { ref?: React.Ref<HTMLDivElement> },\n) => React.ReactElement | null;\n\nexport type ColumnMetaData = {\n filterable: boolean;\n isSortingActive: boolean;\n isFilterActive: boolean;\n isResized: boolean;\n isSticky: boolean;\n showResizer: boolean;\n columnWidth: number;\n columnLeftOffset: number;\n};\n\nexport type SortingState<T extends TableRow> = {\n by: keyof T;\n order: 'asc' | 'desc';\n sortFn?: (a: T[keyof T], b: T[keyof T]) => number;\n} | null;\n\ntype GetTableCellProps = {\n show: boolean;\n rowSpan: number;\n style: {\n 'left'?: number;\n '--row-span'?: string;\n };\n};\n\nconst getColumnSortByField = <T extends TableRow>(\n column: TableColumn<T>,\n): keyof T => (column.sortable && column.sortByField) || column.accessor!;\n\nconst sortingData = <T extends TableRow>(\n rows: T[],\n sorting: SortingState<T>,\n onSortBy?: onSortBy<T>,\n): T[] => {\n if (onSortBy) {\n return rows;\n }\n\n if (!sorting) {\n return rows;\n }\n const sortedRows = sortByDefault(\n rows,\n sorting.by,\n sorting.order,\n sorting.sortFn,\n );\n\n if (sortedRows.some((row) => row.rows?.length)) {\n return sortedRows.map((row) => {\n return row.rows\n ? { ...row, rows: sortingData(row.rows as T[], sorting, onSortBy) }\n : row;\n });\n }\n\n return sortedRows;\n};\n\nconst defaultEmptyRowsPlaceholder = (\n <Text as=\"span\" view=\"primary\" size=\"s\" lineHeight=\"s\">\n Нет данных\n </Text>\n);\n\nconst InternalTable = <T extends TableRow>(\n props: TableProps<T>,\n ref?: React.Ref<HTMLDivElement>,\n) => {\n const {\n columns,\n rows,\n size = 'l',\n filters: rawFilters,\n isResizable = false,\n stickyHeader = false,\n stickyColumns = 0,\n minColumnWidth = 150,\n activeRow,\n verticalAlign = 'top',\n headerVerticalAlign = 'center',\n zebraStriped,\n borderBetweenRows = false,\n borderBetweenColumns = false,\n emptyRowsPlaceholder = defaultEmptyRowsPlaceholder,\n defaultExpandAll,\n className,\n onRowHover,\n onRowClick,\n onRowCreate,\n onCellClick,\n getAdditionalClassName,\n rowCreateText = '+ Добавить строку',\n lazyLoad,\n onSortBy,\n onFiltersUpdated,\n getTagLabel,\n getCellWrap,\n isExpandedRowsByDefault = false,\n ...otherProps\n } = props;\n const {\n headers,\n flattenedHeaders,\n lowHeaders,\n headerRowsRefs,\n headerRowsHeights,\n resizerTopOffsets,\n } = useHeaderData(columns);\n const stickyColumnsGrid =\n // eslint-disable-next-line no-unsafe-optional-chaining\n headers[0][stickyColumns - 1]?.position.gridIndex! +\n (headers[0][stickyColumns - 1]?.position.colSpan || 1);\n\n const getColumnsWidth = () =>\n lowHeaders.map((column: TableColumn<T>) => column.width);\n const [resizedColumnWidths, setResizedColumnWidths] = React.useState<\n ColumnWidth[]\n >(getColumnsWidth());\n\n const filters = React.useMemo(() => {\n return (\n rawFilters && rawFilters.filter((filter) => filter.id && filter.field)\n );\n }, [rawFilters]);\n\n React.useEffect(() => {\n setResizedColumnWidths(getColumnsWidth());\n }, [lowHeaders.length]);\n\n const [initialColumnWidths, setInitialColumnWidths] = React.useState<\n number[]\n >([]);\n const [sorting, setSorting] = React.useState<SortingState<T>>(null);\n const [visibleFilter, setVisibleFilter] = React.useState<string | null>(null);\n const [tableScroll, setTableScroll] = React.useState({ top: 0, left: 0 });\n\n const tableRef = React.useRef<HTMLDivElement>(null);\n const columnsRefs = React.useRef<Record<number, HTMLDivElement | null>>({});\n const cellsRefs = React.useRef<Record<string, HTMLDivElement | null>>({});\n const {\n selectedFilters,\n updateSelectedFilters,\n removeOneSelectedFilter,\n removeAllSelectedFilters,\n } = useSelectedFilters(filters, onFiltersUpdated);\n const [expandedRowIds, setExpandedRowIds] = React.useState<string[]>([]);\n\n // установка сортировки по умолчанию\n\n React.useEffect(() => {\n const sortingColumn = columns.find(\n (col) =>\n isString(col.order) &&\n Object.prototype.hasOwnProperty.call(Order, col.order),\n );\n if (sortingColumn) {\n const sortingState = createSortingState(\n getColumnSortByField(sortingColumn),\n sortingColumn.order,\n sortingColumn.sortFn,\n );\n setSorting(sortingState);\n }\n }, [columns]);\n\n /*\n Подписываемся на изменения размеров таблицы, но не используем значения из\n хука так как нам нужна ширина и высота таблицы без размера скролла. Этот хук\n использует значения `offsetWidth` и `offsetHeight` которые включают размер\n скролл бара.\n */\n useComponentSize(tableRef);\n const tableHeight = tableRef.current?.clientHeight || 0;\n const tableWidth = tableRef.current?.clientWidth || 0;\n\n const showVerticalCellShadow = tableScroll.left > 0;\n const showHorizontalCellShadow = tableScroll.top > 0;\n const isRowsClickable = activeRow && activeRow.onChange;\n\n const updateColumnWidth = (idx: number, newWidth: number): void => {\n setResizedColumnWidths(updateAt(resizedColumnWidths, idx, newWidth));\n };\n\n const overallColumnsWidth = useMemo(() => {\n const columnsElements = Object.values(columnsRefs.current).filter(isNotNil);\n const columnsElementsWidths = columnsElements.map(\n (el) => el.getBoundingClientRect().width,\n );\n const resultArr = getMergedArray(\n columnsElementsWidths,\n resizedColumnWidths,\n );\n return resultArr.reduce((a, b) => (a ?? 0) + (b ?? 0));\n }, [resizedColumnWidths, isResizable]);\n\n React.useLayoutEffect(() => {\n const columnsElements = Object.values(columnsRefs.current).filter(isNotNil);\n if (columnsElements.length === 0) return;\n\n const columnsElementsWidths = columnsElements.map(\n (el) => el.getBoundingClientRect().width,\n );\n setInitialColumnWidths(columnsElementsWidths);\n\n // Проверяем, что таблица отрисовалась корректно, и устанавливаем значения ширин колонок после 1го и последующих рендера\n if (\n columnsElements[0].getBoundingClientRect().left !==\n columnsElements[columnsElements.length - 1].getBoundingClientRect().left\n ) {\n const resultArr = getMergedArray(\n columnsElementsWidths,\n resizedColumnWidths,\n );\n // Выставляю в undefined так как если вычеслять значение для последней колонки так,\n // чтобы заполнялось все свободное пространство, при изменении ширины таблицы в меньшую сторону\n // ширина последней колонки изменяться не будет, а так она будет css'ом проставляться в auto\n if ((overallColumnsWidth ?? tableWidth) < tableWidth) {\n resultArr[resultArr.length - 1] = undefined;\n }\n return setResizedColumnWidths(resultArr);\n }\n\n // условие изменения ширины колонок при изменении ширины экрана (контейнера таблицы)\n if (tableWidth > 0 && !isResizable) {\n return setResizedColumnWidths(getColumnsWidth());\n }\n }, [tableWidth, overallColumnsWidth]);\n\n const isSortedByColumn = (column: TableColumn<T>): boolean =>\n getColumnSortByField(column) === sorting?.by;\n\n const getSortIcon = (column: TableColumn<T>) => {\n return (\n (isSortedByColumn(column) &&\n (sorting?.order === 'desc' ? IconSortDown : IconSortUp)) ||\n IconUnsort\n );\n };\n\n const handleSortClick = (column: TableColumn<T>): void => {\n const newSorting = getNewSorting(\n sorting,\n getColumnSortByField(column),\n (column.sortable && column?.sortFn) || undefined,\n );\n\n const sortProps = newSorting\n ? {\n sortingBy: newSorting.by,\n sortOrder: newSorting.order,\n }\n : null;\n onSortBy && onSortBy(sortProps);\n setSorting(newSorting);\n };\n\n const handleFilterTogglerClick = (id: string) => (): void => {\n setVisibleFilter(visibleFilter === id ? null : id);\n };\n\n const handleTooltipSave = (\n field: string,\n tooltipSelectedFilters: FieldSelectedValues,\n value?: unknown,\n ): void => {\n updateSelectedFilters(field, tooltipSelectedFilters, value);\n };\n\n const removeSelectedFilter =\n (tableFilters: Filters<T>) =>\n (filter: string): void => {\n removeOneSelectedFilter(tableFilters, filter);\n };\n\n const resetSelectedFilters = (): void => {\n if (filters && filters.length) {\n removeAllSelectedFilters(filters);\n }\n };\n\n const getStickyLeftOffset = (\n columnIndex: number,\n topHeaderGridIndex: number,\n ): number | undefined => {\n if (topHeaderGridIndex >= stickyColumns) {\n return;\n }\n\n return getColumnLeftOffset({\n columnIndex,\n resizedColumnWidths,\n initialColumnWidths,\n });\n };\n\n const handleScroll: React.UIEventHandler = (e) => {\n if (!(e.target instanceof HTMLElement) || e.target !== tableRef.current) {\n return;\n }\n\n setTableScroll({\n top: e.target.scrollTop,\n left: e.target.scrollLeft,\n });\n };\n\n const handleSelectRow = ({\n id,\n e,\n }: {\n id: string;\n e: React.SyntheticEvent;\n }): void | undefined => {\n if (!activeRow || !activeRow.onChange) {\n return;\n }\n\n activeRow.onChange({ id: activeRow.id === id ? undefined : id, e });\n };\n\n const handleRowHover = (id?: string) => (e: React.MouseEvent) =>\n onRowHover && onRowHover({ id, e });\n\n const handleRowCreate =\n (index: number, id?: string) => (e: React.MouseEvent) =>\n onRowCreate && onRowCreate({ e, id, index });\n\n const handleColumnResize = (idx: number, delta: number): void => {\n const columnMinWidth = Math.min(minColumnWidth, initialColumnWidths[idx]);\n const prevColumnWidth =\n resizedColumnWidths[idx] || initialColumnWidths[idx];\n const newColumnWidth = Math.max(columnMinWidth, prevColumnWidth + delta);\n\n updateColumnWidth(idx, newColumnWidth);\n\n // При расширении последней колонки скроллим таблицу вправо\n const containerEl = tableRef.current;\n if (idx === resizedColumnWidths.length - 1 && delta > 0 && containerEl) {\n containerEl.scrollBy(delta, 0);\n }\n };\n\n const stickyColumnsWidth = getColumnLeftOffset({\n columnIndex: stickyColumns,\n resizedColumnWidths,\n initialColumnWidths,\n });\n\n const columnsWithMetaData = (columns: Array<Header<T>>) => {\n return columns.map((column: Header<T>) => {\n const columnIndex = column.position.gridIndex;\n const resizedColumnWidth = resizedColumnWidths[columnIndex];\n const initialColumnWidth = initialColumnWidths[columnIndex];\n const columnWidth = resizedColumnWidth || initialColumnWidth;\n const columnLeftOffset = getColumnLeftOffset({\n columnIndex,\n resizedColumnWidths,\n initialColumnWidths,\n });\n const isResized = !!columnWidth && columnWidth !== initialColumnWidth;\n const isSticky = stickyColumns > column.position!.topHeaderGridIndex;\n const showResizer =\n stickyColumns > columnIndex ||\n stickyColumnsWidth + tableScroll.left < columnLeftOffset + columnWidth;\n const isFilterActive =\n (selectedFilters[column.accessor!]?.selected || []).length > 0;\n\n return {\n ...column,\n filterable: Boolean(\n filters && fieldFiltersPresent(filters, column.accessor!),\n ),\n isSortingActive: isSortedByColumn(column),\n isFilterActive,\n isResized,\n isSticky,\n showResizer,\n columnWidth,\n columnLeftOffset,\n };\n });\n };\n\n const headersWithMetaData: Array<Header<T> & ColumnMetaData> =\n columnsWithMetaData(flattenedHeaders);\n\n const hasNestedRows = React.useMemo(\n () => rows.some((row) => Boolean(row.rows?.length)),\n [rows],\n );\n\n const sortedTableData = sortingData(rows, sorting, onSortBy);\n\n const filteredData =\n filters && isSelectedFiltersPresent(selectedFilters)\n ? filterTableData({\n data: sortedTableData,\n filters: filters || [],\n selectedFilters,\n })\n : sortedTableData;\n\n const { maxVisibleRows = 210, scrollableEl = tableRef.current } =\n lazyLoad || {};\n\n const { getSlicedRows, setBoundaryRef } = useLazyLoadData(\n maxVisibleRows,\n scrollableEl,\n !!lazyLoad,\n );\n\n const flatRowsData = transformRows(\n filteredData,\n expandedRowIds,\n isExpandedRowsByDefault,\n );\n const rowsData = getSlicedRows(flatRowsData);\n\n const tableStyle: React.CSSProperties & TableCSSCustomProperty = {\n '--table-grid-template-columns': getColumnsSize(resizedColumnWidths),\n '--table-width': `${tableWidth}px`,\n };\n\n const hasMergedCells: boolean = columnsWithMetaData(lowHeaders).some(\n (header) => header.mergeCells,\n );\n\n const handleExpandRow = (id: string): (() => void) => {\n return (): void => {\n if (expandedRowIds.includes(id)) {\n setExpandedRowIds((prevState) =>\n prevState.filter((rowId) => rowId !== id),\n );\n return;\n }\n setExpandedRowIds((prevState) => [...prevState, id]);\n };\n };\n\n const getCollapseRollProps = (\n row: TableTreeRow<T>,\n columnIdx: number,\n ): TableRowsCollapseProps => {\n const withCollapseButton = Boolean(row.rows?.length) && columnIdx === 0;\n\n const baseProps = {\n level: row.level,\n isExpandedByDefault: isExpandedRowsByDefault,\n };\n\n if (!withCollapseButton || isExpandedRowsByDefault) {\n return baseProps;\n }\n\n const isExpanded = expandedRowIds.includes(row.id);\n const toggleCollapse = handleExpandRow(row.id);\n\n return {\n ...baseProps,\n withCollapseButton,\n isExpanded,\n toggleCollapse,\n };\n };\n\n const getExpandedRows = (rows: T[], defaultExpandAll?: boolean): string[] => {\n let expandedIds: string[] = [];\n rows.forEach((row) => {\n if (\n row.defaultExpand ||\n ((row.rows?.length ?? 0) > 0 && defaultExpandAll)\n ) {\n expandedIds.push(row.id);\n }\n if (row.rows) {\n const ids = getExpandedRows(row.rows as T[], defaultExpandAll);\n expandedIds = [...expandedIds, ...ids];\n if (ids.length > 0 && expandedIds.indexOf(row.id) === -1) {\n expandedIds.push(row.id);\n }\n }\n });\n return expandedIds;\n };\n\n useEffect(() => {\n if (rows) {\n setExpandedRowIds(getExpandedRows(rows, defaultExpandAll));\n }\n }, [rows, defaultExpandAll]);\n\n const renderCell = (\n column: TableColumn<T>,\n row: T,\n columnIdx: number,\n ): React.ReactNode => {\n const cellContent = column.renderCell\n ? column.renderCell(row)\n : row[column.accessor!];\n\n if (!hasNestedRows || columnIdx !== 0) {\n return cellContent as React.ReactNode;\n }\n\n const collapseRollProps = getCollapseRollProps(\n row as TableTreeRow<T>,\n columnIdx,\n );\n\n return (\n <TableRowsCollapse {...collapseRollProps}>\n {cellContent as React.ReactNode}\n </TableRowsCollapse>\n );\n };\n\n const renderEmptyRowsPlaceholder = (\n placeholder: React.ReactNode,\n ): React.ReactNode => {\n return typeof placeholder === 'string' ? (\n <Text size=\"s\">{placeholder}</Text>\n ) : (\n placeholder\n );\n };\n\n const bottomCreateRowButton = useMemo(() => {\n const rowsLength = rowsData.length;\n /* Можно и rowsData[rowsLength - 1], но в таком случае TS не подскажет,\n что мы будем искать id в undefined это может привести к ошибке */\n const { id: lastRowId } = rowsData.slice(-1).pop() ?? {};\n\n if (!onRowCreate) {\n return null;\n }\n\n return (\n <div className={cnTable(rowsLength ? 'CreatRowCell' : 'RowWithoutCells')}>\n <Button\n size={createButtonSizeMap[size]}\n form=\"brick\"\n label={rowCreateText}\n view=\"clear\"\n className={cnTable('CreateRowButton')}\n onClick={handleRowCreate(rowsLength, lastRowId)}\n width=\"full\"\n />\n </div>\n );\n }, [rowCreateText, rowsData.length, onRowCreate]);\n\n const getTableCellProps = (\n row: TableTreeRow<T>,\n rowIdx: number,\n column: TableColumn<T>,\n columnIdx: number,\n ): GetTableCellProps => {\n const {\n mergeCells,\n accessor,\n position,\n getComparisonValue = (e) => e,\n } = column;\n\n const previousCell =\n rowsData[rowIdx - 1] &&\n getComparisonValue(rowsData[rowIdx - 1][accessor!]);\n const currentCell = getComparisonValue(row[accessor!]);\n\n const result: GetTableCellProps = {\n rowSpan: 1,\n show: false,\n style: {\n left: getStickyLeftOffset(columnIdx, position!.topHeaderGridIndex),\n },\n };\n\n if (\n mergeCells &&\n ((rowsData[rowIdx - 1] && previousCell !== currentCell) || rowIdx === 0)\n ) {\n for (let i = rowIdx; i < rowsData.length; i++) {\n if (rowsData[i + 1]) {\n const nextCell = getComparisonValue(rowsData[i + 1][accessor!]);\n\n if (currentCell === nextCell) {\n result.rowSpan++;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n\n if (result.rowSpan > 1) {\n result.style['--row-span'] = `span ${result.rowSpan}`;\n }\n\n result.show = true;\n }\n\n if (!mergeCells) {\n result.show = true;\n }\n\n return result;\n };\n\n const handleCellClick: onCellClick = (params) => {\n onCellClick?.(params);\n };\n\n return (\n <div\n {...otherProps}\n ref={useForkRef([tableRef, ref])}\n className={cnTable(\n {\n size,\n isResizable,\n zebraStriped,\n withBorderBottom: !filteredData.length,\n },\n [className],\n )}\n style={tableStyle}\n onScroll={handleScroll}\n >\n {/*\n Элементы Resizer рендерятся в отдельных ячейках нулевой высоты с шириной\n равной ширине колонки сетки, при этом у ячейки самый большой z-index в\n таблице чтобы элементы Resizer могли перекрывать ячейки заголовка и\n контента. Кроме того это позволяет зафиксировать вертикальное и\n горизонтальное положение Resizer, а также его высоту.\n\n Получение высоты Resizer элементов через свойство элемента таблицы\n scrollHeight не подходило, так как в таком случае Resizer растягивал\n таблицу по высоте, поэтому от этого способа отказались.\n */}\n {columnsWithMetaData(lowHeaders).map(\n (\n column: TableColumn<T> & { showResizer: boolean },\n columnIdx: number,\n ) => (\n <TableCell\n type=\"resizer\"\n key={columnIdx}\n ref={(ref: HTMLDivElement | null): void => {\n columnsRefs.current[columnIdx] = ref;\n }}\n style={{\n left: getStickyLeftOffset(columnIdx, columnIdx),\n }}\n onContextMenu={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'contextMenu',\n columnIdx,\n ref: { current: columnsRefs.current[columnIdx] },\n })\n }\n onClick={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'click',\n columnIdx,\n ref: { current: columnsRefs.current[columnIdx] },\n })\n }\n column={column}\n showVerticalShadow={showVerticalCellShadow}\n >\n {isResizable && (\n <TableResizer\n height={tableHeight - resizerTopOffsets[columnIdx]}\n top={resizerTopOffsets[columnIdx]}\n isVisible={column.showResizer}\n onResize={(delta): void => handleColumnResize(columnIdx, delta)}\n onDoubleClick={(): void =>\n updateColumnWidth(columnIdx, initialColumnWidths[columnIdx])\n }\n />\n )}\n </TableCell>\n ),\n )}\n <TableHeader\n isStickyHeader={stickyHeader}\n headersWithMetaData={headersWithMetaData}\n headerRowsHeights={headerRowsHeights}\n headerRowsRefs={headerRowsRefs}\n getStickyLeftOffset={getStickyLeftOffset}\n stickyColumnsGrid={stickyColumnsGrid}\n showVerticalCellShadow={showVerticalCellShadow}\n headerVerticalAlign={headerVerticalAlign}\n getSortIcon={getSortIcon}\n handleSortClick={handleSortClick}\n handleFilterTogglerClick={handleFilterTogglerClick}\n handleCellClick={handleCellClick}\n handleTooltipSave={handleTooltipSave}\n filters={filters}\n visibleFilter={visibleFilter}\n selectedFilters={selectedFilters}\n showHorizontalCellShadow={showHorizontalCellShadow}\n borderBetweenColumns={borderBetweenColumns}\n />\n {filters && isSelectedFiltersPresent(selectedFilters) && (\n <div className={cnTable('RowWithoutCells')}>\n <TableSelectedOptionsList\n values={getSelectedFiltersList({\n filters,\n selectedFilters,\n columns: lowHeaders,\n })}\n getTagLabel={getTagLabel}\n onRemove={removeSelectedFilter(filters)}\n onReset={resetSelectedFilters}\n />\n </div>\n )}\n {rowsData.length > 0 ? (\n rowsData.map((row, rowIdx) => {\n const nth = (rowIdx + 1) % 2 === 0 ? 'even' : 'odd';\n return (\n <div\n key={row.id}\n role=\"presentation\"\n className={cnTable('CellsRow', {\n nth,\n withMergedCells: hasMergedCells,\n })}\n onMouseEnter={handleRowHover(row.id)}\n onMouseLeave={handleRowHover(undefined)}\n onClick={(e) => onRowClick && onRowClick({ id: row.id, e })}\n >\n {columnsWithMetaData(lowHeaders).map(\n (column: TableColumn<T>, columnIdx: number) => {\n const { show, style, rowSpan } = getTableCellProps(\n row,\n rowIdx,\n column,\n columnIdx,\n );\n if (show) {\n return (\n <TableCell\n type=\"content\"\n key={column.accessor}\n ref={(ref: HTMLDivElement | null) => {\n cellsRefs.current[`${columnIdx}-${row.id}`] = ref;\n setRef(setBoundaryRef(columnIdx, rowIdx), ref);\n }}\n style={style}\n wrapperClassName={cnTable('ContentCell', {\n isActive: activeRow ? activeRow.id === row.id : false,\n isDarkned: activeRow\n ? activeRow.id !== undefined &&\n activeRow.id !== row.id\n : false,\n isMerged: column.mergeCells && rowSpan > 1,\n })}\n className={getAdditionalClassName?.({\n column,\n row,\n isActive: activeRow ? activeRow.id === row.id : false,\n })}\n wrap={getCellWrap?.(row)}\n onContextMenu={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'contextMenu',\n columnIdx,\n rowId: row.id,\n ref: {\n current:\n cellsRefs.current[`${columnIdx}-${row.id}`],\n },\n })\n }\n onClick={(e: React.SyntheticEvent): void => {\n handleSelectRow({ id: row.id, e });\n\n handleCellClick({\n e,\n type: 'click',\n columnIdx,\n rowId: row.id,\n ref: {\n current:\n cellsRefs.current[`${columnIdx}-${row.id}`],\n },\n });\n }}\n column={column}\n verticalAlign={verticalAlign}\n isClickable={!!isRowsClickable}\n showVerticalShadow={\n showVerticalCellShadow &&\n // eslint-disable-next-line no-unsafe-optional-chaining\n column?.position!.gridIndex! +\n (column?.position!.colSpan || 1) ===\n stickyColumnsGrid\n }\n isBorderTop={rowIdx > 0 && borderBetweenRows}\n isBorderLeft={columnIdx > 0 && borderBetweenColumns}\n >\n {renderCell(column, row, columnIdx)}\n </TableCell>\n );\n }\n return null;\n },\n )}\n </div>\n );\n })\n ) : (\n <div className={cnTable('RowWithoutCells')}>\n <div className={cnTable('EmptyCell')}>\n {renderEmptyRowsPlaceholder(emptyRowsPlaceholder)}\n </div>\n </div>\n )}\n {bottomCreateRowButton}\n </div>\n );\n};\n\nexport const Table = React.forwardRef(InternalTable) as Table;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Table.js","names":["React","useEffect","useMemo","useComponentSize","useForkRef","IconSortDown","IconSortUp","IconUnsort","sortBy","sortByDefault","updateAt","cn","setRef","isNotNil","isString","Button","Text","TableCell","fieldFiltersPresent","filterTableData","getSelectedFiltersList","isSelectedFiltersPresent","useSelectedFilters","TableHeader","calulateColSpans","createSortingState","getColumnLeftOffset","getColumnsSize","getMergedArray","getNewSorting","Order","transformRows","useHeaderData","useLazyLoadData","TableResizer","TableRowsCollapse","TableSelectedOptionsList","TableTextFilter","TableFilterContainer","TableNumberFilter","TableChoiceGroupFilter","cnTable","sizes","zebraStriped","headerVerticalAligns","createButtonSizeMap","s","m","l","getColumnSortByField","column","sortable","sortByField","accessor","sortingData","rows","sorting","onSortBy","sortedRows","by","order","sortFn","some","row","length","map","defaultEmptyRowsPlaceholder","InternalTable","props","ref","columns","size","rawFilters","filters","isResizable","stickyHeader","stickyColumns","minColumnWidth","activeRow","verticalAlign","headerVerticalAlign","borderBetweenRows","borderBetweenColumns","emptyRowsPlaceholder","defaultExpandAll","className","onRowHover","onRowClick","onRowCreate","onCellClick","getAdditionalClassName","rowCreateText","lazyLoad","onFiltersUpdated","getTagLabel","getCellWrap","isExpandedRowsByDefault","otherProps","headers","flattenedHeaders","lowHeaders","headerRowsRefs","headerRowsHeights","resizerTopOffsets","stickyColumnsGrid","position","gridIndex","colSpan","getColumnsWidth","width","useState","resizedColumnWidths","setResizedColumnWidths","filter","id","field","initialColumnWidths","setInitialColumnWidths","setSorting","visibleFilter","setVisibleFilter","top","left","tableScroll","setTableScroll","tableRef","useRef","columnsRefs","cellsRefs","selectedFilters","updateSelectedFilters","removeOneSelectedFilter","removeAllSelectedFilters","expandedRowIds","setExpandedRowIds","sortingColumn","find","col","Object","prototype","hasOwnProperty","call","sortingState","tableHeight","current","clientHeight","tableWidth","clientWidth","showVerticalCellShadow","showHorizontalCellShadow","isRowsClickable","onChange","updateColumnWidth","idx","newWidth","overallColumnsWidth","columnsElements","values","columnsElementsWidths","el","getBoundingClientRect","resultArr","reduce","a","b","useLayoutEffect","isSortedByColumn","getStickyLeftOffset","columnIndex","topHeaderGridIndex","handleSelectRow","e","handleRowHover","handleRowCreate","index","handleColumnResize","delta","columnMinWidth","Math","min","prevColumnWidth","newColumnWidth","max","containerEl","scrollBy","stickyColumnsWidth","columnsWithMetaData","resizedColumnWidth","initialColumnWidth","columnWidth","columnLeftOffset","isSticky","showResizer","isFilterActive","selected","filterable","isSortingActive","isResized","headersWithMetaData","hasNestedRows","sortedTableData","filteredData","data","maxVisibleRows","scrollableEl","getSlicedRows","setBoundaryRef","flatRowsData","rowsData","tableStyle","hasMergedCells","header","mergeCells","handleExpandRow","includes","prevState","rowId","getCollapseRollProps","columnIdx","withCollapseButton","baseProps","level","options","isExpandedByDefault","isExpanded","toggleCollapse","getExpandedRows","expandedIds","forEach","defaultExpand","push","ids","indexOf","renderCell","cellContent","collapseRollProps","bottomCreateRowButton","rowsLength","slice","pop","lastRowId","getTableCellProps","rowIdx","getComparisonValue","previousCell","currentCell","result","rowSpan","show","style","nextCell","i","handleCellClick","params","withBorderBottom","handleScroll","target","HTMLElement","scrollTop","scrollLeft","type","getSortIcon","handleSortClick","newSorting","sortProps","sortingBy","sortOrder","handleFilterTogglerClick","handleTooltipSave","tooltipSelectedFilters","value","removeSelectedFilter","tableFilters","resetSelectedFilters","nth","spans","withMergedCells","start","isActive","isDarkned","isMerged","renderEmptyRowsPlaceholder","placeholder","Table","forwardRef"],"sources":["../../../../../src/components/Table/Table.tsx"],"sourcesContent":["import './Table.css';\n\nimport React, { useEffect, useMemo } from 'react';\n\nimport { useComponentSize } from '../../hooks/useComponentSize/useComponentSize';\nimport { useForkRef } from '../../hooks/useForkRef/useForkRef';\nimport { IconSortDown } from '../../icons/IconSortDown/IconSortDown';\nimport { IconSortUp } from '../../icons/IconSortUp/IconSortUp';\nimport { IconUnsort } from '../../icons/IconUnsort/IconUnsort';\nimport { sortBy as sortByDefault, updateAt } from '../../utils/array';\nimport { cn } from '../../utils/bem';\nimport { setRef } from '../../utils/setRef';\nimport { isNotNil, isString } from '../../utils/type-guards';\nimport { Button, ButtonPropSize } from '../Button/Button';\nimport { Text } from '../Text/Text';\nimport { HorizontalAlign, TableCell, VerticalAlign } from './Cell/TableCell';\nimport {\n fieldFiltersPresent,\n FieldSelectedValues,\n Filters,\n filterTableData,\n getSelectedFiltersList,\n isSelectedFiltersPresent,\n onSortBy,\n SelectedFilters,\n useSelectedFilters,\n} from './filtering';\nimport { TableHeader } from './Header/TableHeader';\nimport {\n calulateColSpans,\n createSortingState,\n getColumnLeftOffset,\n getColumnsSize,\n getMergedArray,\n getNewSorting,\n Header,\n Order,\n OrderType,\n Position,\n transformRows,\n useHeaderData,\n useLazyLoadData,\n} from './helpers';\nimport { TableResizer } from './Resizer/TableResizer';\nimport {\n Props as TableRowsCollapseProps,\n TableRowsCollapse,\n} from './RowsCollapse/TableRowsCollapse';\nimport {\n GetTagLabel,\n TableSelectedOptionsList,\n} from './SelectedOptionsList/TableSelectedOptionsList';\n\nexport { TableTextFilter } from './TextFilter/TableTextFilter';\nexport { TableFilterContainer } from './FilterContainer/TableFilterContainer';\nexport { TableNumberFilter } from './NumberFilter/TableNumberFilter';\nexport { TableChoiceGroupFilter } from './ChoiceGroupFilter/TableChoiceGroupFilter';\n\nconst cnTable = cn('Table');\n\nexport const sizes = ['s', 'm', 'l'] as const;\ntype Size = typeof sizes[number];\n\nexport const zebraStriped = ['odd', 'even'] as const;\ntype ZebraStriped = typeof zebraStriped[number];\n\nexport const headerVerticalAligns = ['center', 'bottom'] as const;\nexport type HeaderVerticalAlign = typeof headerVerticalAligns[number];\n\nconst createButtonSizeMap: Record<Size, ButtonPropSize> = {\n s: 'xs',\n m: 's',\n l: 'm',\n};\n\ntype TableCSSCustomProperty = {\n '--table-width': string;\n '--table-grid-template-columns': string;\n};\n\nexport type LazyLoad =\n | {\n maxVisibleRows?: number;\n scrollableEl?: HTMLDivElement | Window;\n }\n | undefined;\n\ntype ActiveRow = {\n id: string | undefined;\n onChange: ({\n id,\n e,\n }: {\n id: string | undefined;\n e?: React.SyntheticEvent;\n }) => void;\n};\n\ntype onRowHover = ({\n id,\n e,\n}: {\n id: string | undefined;\n e: React.MouseEvent;\n}) => void;\n\ntype onRowClick = ({ id, e }: { id: string; e: React.MouseEvent }) => void;\n\ntype onRowCreate = ({\n id,\n index,\n e,\n}: {\n id?: string;\n index: number;\n e: React.MouseEvent;\n}) => void;\n\nexport type CellClickType = 'click' | 'contextMenu';\n\nexport type onCellClick = ({\n e,\n type,\n rowId,\n columnIdx,\n ref,\n}: {\n e: React.SyntheticEvent;\n type: CellClickType;\n columnIdx: number;\n ref: React.RefObject<HTMLDivElement>;\n rowId?: string;\n}) => void;\n\nexport type TableRow = {\n id: string;\n defaultExpand?: boolean;\n rows?: TableRow[];\n};\n\nexport type TableTreeRow<T extends TableRow> = {\n options: {\n level: number;\n };\n} & T;\n\nexport type TableFilters<T extends TableRow> = Filters<T>;\n\nexport type RowField<T extends TableRow> = Exclude<keyof T, symbol | number>;\n\nexport type ColumnWidth = number | undefined;\n\nexport type ValueOf<T> = T[keyof T];\n\ntype ColumnBase<T extends TableRow> = ValueOf<{\n [K in keyof T]: {\n accessor: K extends string ? K : never;\n sortable?: boolean;\n colSpan?: number | ((row: T) => number);\n sortByField?: keyof T;\n order?: OrderType;\n sortFn?(a: T[K], b: T[K]): number;\n renderCell?: (row: T) => React.ReactNode;\n getComparisonValue?: (cell: T[K]) => number | string;\n };\n}>;\ntype SingleColumnAddition<T extends TableRow> = ColumnBase<T> & {\n columns?: never;\n};\ntype GroupColumnAddition<T extends TableRow> = {\n columns: TableColumn<T>[];\n} & {\n // eslint-disable-next-line no-unused-vars\n [K in keyof ColumnBase<T>]?: never;\n};\nexport interface TableControl<T extends TableRow> {\n column: Header<T> & ColumnMetaData;\n}\n\nexport type SortByProps<T extends TableRow> = {\n sortingBy: keyof T;\n sortOrder: 'asc' | 'desc';\n};\n\nexport type TableColumn<T extends TableRow> = {\n title: React.ReactNode;\n align?: HorizontalAlign;\n withoutPadding?: boolean;\n width?: ColumnWidth;\n mergeCells?: boolean;\n position?: Position;\n hidden?: boolean;\n control?: ({ column }: TableControl<T>) => React.ReactNode;\n} & (GroupColumnAddition<T> | SingleColumnAddition<T>);\n\nexport type TableProps<T extends TableRow> = {\n columns: TableColumn<T>[];\n rows: T[];\n isResizable?: boolean;\n filters?: Filters<T>;\n onSortBy?: onSortBy<T>;\n size?: Size;\n stickyHeader?: boolean;\n stickyColumns?: number;\n minColumnWidth?: number;\n activeRow?: ActiveRow;\n verticalAlign?: VerticalAlign;\n headerVerticalAlign?: HeaderVerticalAlign;\n zebraStriped?: ZebraStriped;\n borderBetweenRows?: boolean;\n defaultExpandAll?: boolean;\n borderBetweenColumns?: boolean;\n emptyRowsPlaceholder?: React.ReactNode;\n className?: string;\n onRowHover?: onRowHover;\n onRowClick?: onRowClick;\n onRowCreate?: onRowCreate;\n onCellClick?: onCellClick;\n getAdditionalClassName?: (props: {\n column: TableColumn<T>;\n row: T;\n isActive: boolean;\n }) => string;\n rowCreateText?: string;\n lazyLoad?: LazyLoad;\n onFiltersUpdated?: (filters: SelectedFilters) => void;\n getTagLabel?: GetTagLabel;\n isExpandedRowsByDefault?: boolean;\n getCellWrap?: (row: T) => 'truncate' | 'break';\n};\n\ntype Table = <T extends TableRow>(\n props: TableProps<T> & { ref?: React.Ref<HTMLDivElement> },\n) => React.ReactElement | null;\n\nexport type ColumnMetaData = {\n filterable: boolean;\n isSortingActive: boolean;\n isFilterActive: boolean;\n isResized: boolean;\n isSticky: boolean;\n showResizer: boolean;\n columnWidth: number;\n columnLeftOffset: number;\n};\n\nexport type SortingState<T extends TableRow> = {\n by: keyof T;\n order: 'asc' | 'desc';\n sortFn?: (a: T[keyof T], b: T[keyof T]) => number;\n} | null;\n\ntype GetTableCellProps = {\n show: boolean;\n rowSpan: number;\n style: {\n 'left'?: number;\n '--row-span'?: string;\n };\n};\n\nconst getColumnSortByField = <T extends TableRow>(\n column: TableColumn<T>,\n): keyof T => (column.sortable && column.sortByField) || column.accessor!;\n\nconst sortingData = <T extends TableRow>(\n rows: T[],\n sorting: SortingState<T>,\n onSortBy?: onSortBy<T>,\n): T[] => {\n if (onSortBy) {\n return rows;\n }\n\n if (!sorting) {\n return rows;\n }\n const sortedRows = sortByDefault(\n rows,\n sorting.by,\n sorting.order,\n sorting.sortFn,\n );\n\n if (sortedRows.some((row) => row.rows?.length)) {\n return sortedRows.map((row) => {\n return row.rows\n ? { ...row, rows: sortingData(row.rows as T[], sorting, onSortBy) }\n : row;\n });\n }\n\n return sortedRows;\n};\n\nconst defaultEmptyRowsPlaceholder = (\n <Text as=\"span\" view=\"primary\" size=\"s\" lineHeight=\"s\">\n Нет данных\n </Text>\n);\n\nconst InternalTable = <T extends TableRow>(\n props: TableProps<T>,\n ref?: React.Ref<HTMLDivElement>,\n) => {\n const {\n columns,\n rows,\n size = 'l',\n filters: rawFilters,\n isResizable = false,\n stickyHeader = false,\n stickyColumns = 0,\n minColumnWidth = 150,\n activeRow,\n verticalAlign = 'top',\n headerVerticalAlign = 'center',\n zebraStriped,\n borderBetweenRows = false,\n borderBetweenColumns = false,\n emptyRowsPlaceholder = defaultEmptyRowsPlaceholder,\n defaultExpandAll,\n className,\n onRowHover,\n onRowClick,\n onRowCreate,\n onCellClick,\n getAdditionalClassName,\n rowCreateText = '+ Добавить строку',\n lazyLoad,\n onSortBy,\n onFiltersUpdated,\n getTagLabel,\n getCellWrap,\n isExpandedRowsByDefault = false,\n ...otherProps\n } = props;\n const {\n headers,\n flattenedHeaders,\n lowHeaders,\n headerRowsRefs,\n headerRowsHeights,\n resizerTopOffsets,\n } = useHeaderData(columns);\n const stickyColumnsGrid =\n // eslint-disable-next-line no-unsafe-optional-chaining\n headers[0][stickyColumns - 1]?.position.gridIndex! +\n (headers[0][stickyColumns - 1]?.position.colSpan || 1);\n\n const getColumnsWidth = () =>\n lowHeaders.map((column: TableColumn<T>) => column.width);\n const [resizedColumnWidths, setResizedColumnWidths] = React.useState<\n ColumnWidth[]\n >(getColumnsWidth());\n\n const filters = React.useMemo(() => {\n return (\n rawFilters && rawFilters.filter((filter) => filter.id && filter.field)\n );\n }, [rawFilters]);\n\n React.useEffect(() => {\n setResizedColumnWidths(getColumnsWidth());\n }, [lowHeaders.length]);\n\n const [initialColumnWidths, setInitialColumnWidths] = React.useState<\n number[]\n >([]);\n const [sorting, setSorting] = React.useState<SortingState<T>>(null);\n const [visibleFilter, setVisibleFilter] = React.useState<string | null>(null);\n const [tableScroll, setTableScroll] = React.useState({ top: 0, left: 0 });\n\n const tableRef = React.useRef<HTMLDivElement>(null);\n const columnsRefs = React.useRef<Record<number, HTMLDivElement | null>>({});\n const cellsRefs = React.useRef<Record<string, HTMLDivElement | null>>({});\n const {\n selectedFilters,\n updateSelectedFilters,\n removeOneSelectedFilter,\n removeAllSelectedFilters,\n } = useSelectedFilters(filters, onFiltersUpdated);\n const [expandedRowIds, setExpandedRowIds] = React.useState<string[]>([]);\n\n // установка сортировки по умолчанию\n\n React.useEffect(() => {\n const sortingColumn = columns.find(\n (col) =>\n isString(col.order) &&\n Object.prototype.hasOwnProperty.call(Order, col.order),\n );\n if (sortingColumn) {\n const sortingState = createSortingState(\n getColumnSortByField(sortingColumn),\n sortingColumn.order,\n sortingColumn.sortFn,\n );\n setSorting(sortingState);\n }\n }, [columns]);\n\n /*\n Подписываемся на изменения размеров таблицы, но не используем значения из\n хука так как нам нужна ширина и высота таблицы без размера скролла. Этот хук\n использует значения `offsetWidth` и `offsetHeight` которые включают размер\n скролл бара.\n */\n useComponentSize(tableRef);\n const tableHeight = tableRef.current?.clientHeight || 0;\n const tableWidth = tableRef.current?.clientWidth || 0;\n\n const showVerticalCellShadow = tableScroll.left > 0;\n const showHorizontalCellShadow = tableScroll.top > 0;\n const isRowsClickable = activeRow && activeRow.onChange;\n\n const updateColumnWidth = (idx: number, newWidth: number): void => {\n setResizedColumnWidths(updateAt(resizedColumnWidths, idx, newWidth));\n };\n\n const overallColumnsWidth = useMemo(() => {\n const columnsElements = Object.values(columnsRefs.current).filter(isNotNil);\n const columnsElementsWidths = columnsElements.map(\n (el) => el.getBoundingClientRect().width,\n );\n const resultArr = getMergedArray(\n columnsElementsWidths,\n resizedColumnWidths,\n );\n return resultArr.reduce((a, b) => (a ?? 0) + (b ?? 0));\n }, [resizedColumnWidths, isResizable]);\n\n React.useLayoutEffect(() => {\n const columnsElements = Object.values(columnsRefs.current).filter(isNotNil);\n if (columnsElements.length === 0) return;\n\n const columnsElementsWidths = columnsElements.map(\n (el) => el.getBoundingClientRect().width,\n );\n setInitialColumnWidths(columnsElementsWidths);\n\n // Проверяем, что таблица отрисовалась корректно, и устанавливаем значения ширин колонок после 1го и последующих рендера\n if (\n columnsElements[0].getBoundingClientRect().left !==\n columnsElements[columnsElements.length - 1].getBoundingClientRect().left\n ) {\n const resultArr = getMergedArray(\n columnsElementsWidths,\n resizedColumnWidths,\n );\n // Выставляю в undefined так как если вычеслять значение для последней колонки так,\n // чтобы заполнялось все свободное пространство, при изменении ширины таблицы в меньшую сторону\n // ширина последней колонки изменяться не будет, а так она будет css'ом проставляться в auto\n if ((overallColumnsWidth ?? tableWidth) < tableWidth) {\n resultArr[resultArr.length - 1] = undefined;\n }\n return setResizedColumnWidths(resultArr);\n }\n\n // условие изменения ширины колонок при изменении ширины экрана (контейнера таблицы)\n if (tableWidth > 0 && !isResizable) {\n return setResizedColumnWidths(getColumnsWidth());\n }\n }, [tableWidth, overallColumnsWidth]);\n\n const isSortedByColumn = (column: TableColumn<T>): boolean =>\n getColumnSortByField(column) === sorting?.by;\n\n const getSortIcon = (column: TableColumn<T>) => {\n return (\n (isSortedByColumn(column) &&\n (sorting?.order === 'desc' ? IconSortDown : IconSortUp)) ||\n IconUnsort\n );\n };\n\n const handleSortClick = (column: TableColumn<T>): void => {\n const newSorting = getNewSorting(\n sorting,\n getColumnSortByField(column),\n (column.sortable && column?.sortFn) || undefined,\n );\n\n const sortProps = newSorting\n ? {\n sortingBy: newSorting.by,\n sortOrder: newSorting.order,\n }\n : null;\n onSortBy && onSortBy(sortProps);\n setSorting(newSorting);\n };\n\n const handleFilterTogglerClick = (id: string) => (): void => {\n setVisibleFilter(visibleFilter === id ? null : id);\n };\n\n const handleTooltipSave = (\n field: string,\n tooltipSelectedFilters: FieldSelectedValues,\n value?: unknown,\n ): void => {\n updateSelectedFilters(field, tooltipSelectedFilters, value);\n };\n\n const removeSelectedFilter =\n (tableFilters: Filters<T>) =>\n (filter: string): void => {\n removeOneSelectedFilter(tableFilters, filter);\n };\n\n const resetSelectedFilters = (): void => {\n if (filters && filters.length) {\n removeAllSelectedFilters(filters);\n }\n };\n\n const getStickyLeftOffset = (\n columnIndex: number,\n topHeaderGridIndex: number,\n ): number | undefined => {\n if (topHeaderGridIndex >= stickyColumns) {\n return;\n }\n\n return getColumnLeftOffset({\n columnIndex,\n resizedColumnWidths,\n initialColumnWidths,\n });\n };\n\n const handleScroll: React.UIEventHandler = (e) => {\n if (!(e.target instanceof HTMLElement) || e.target !== tableRef.current) {\n return;\n }\n\n setTableScroll({\n top: e.target.scrollTop,\n left: e.target.scrollLeft,\n });\n };\n\n const handleSelectRow = ({\n id,\n e,\n }: {\n id: string;\n e: React.SyntheticEvent;\n }): void | undefined => {\n if (!activeRow || !activeRow.onChange) {\n return;\n }\n\n activeRow.onChange({ id: activeRow.id === id ? undefined : id, e });\n };\n\n const handleRowHover = (id?: string) => (e: React.MouseEvent) =>\n onRowHover && onRowHover({ id, e });\n\n const handleRowCreate =\n (index: number, id?: string) => (e: React.MouseEvent) =>\n onRowCreate && onRowCreate({ e, id, index });\n\n const handleColumnResize = (idx: number, delta: number): void => {\n const columnMinWidth = Math.min(minColumnWidth, initialColumnWidths[idx]);\n const prevColumnWidth =\n resizedColumnWidths[idx] || initialColumnWidths[idx];\n const newColumnWidth = Math.max(columnMinWidth, prevColumnWidth + delta);\n\n updateColumnWidth(idx, newColumnWidth);\n\n // При расширении последней колонки скроллим таблицу вправо\n const containerEl = tableRef.current;\n if (idx === resizedColumnWidths.length - 1 && delta > 0 && containerEl) {\n containerEl.scrollBy(delta, 0);\n }\n };\n\n const stickyColumnsWidth = getColumnLeftOffset({\n columnIndex: stickyColumns,\n resizedColumnWidths,\n initialColumnWidths,\n });\n\n const columnsWithMetaData = (columns: Array<Header<T>>) => {\n return columns.map((column: Header<T>) => {\n const columnIndex = column.position.gridIndex;\n const resizedColumnWidth = resizedColumnWidths[columnIndex];\n const initialColumnWidth = initialColumnWidths[columnIndex];\n const columnWidth = resizedColumnWidth || initialColumnWidth;\n const columnLeftOffset = getColumnLeftOffset({\n columnIndex,\n resizedColumnWidths,\n initialColumnWidths,\n });\n const isResized = !!columnWidth && columnWidth !== initialColumnWidth;\n const isSticky = stickyColumns > column.position!.topHeaderGridIndex;\n const showResizer =\n stickyColumns > columnIndex ||\n stickyColumnsWidth + tableScroll.left < columnLeftOffset + columnWidth;\n const isFilterActive =\n (selectedFilters[column.accessor!]?.selected || []).length > 0;\n\n return {\n ...column,\n filterable: Boolean(\n filters && fieldFiltersPresent(filters, column.accessor!),\n ),\n isSortingActive: isSortedByColumn(column),\n isFilterActive,\n isResized,\n isSticky,\n showResizer,\n columnWidth,\n columnLeftOffset,\n };\n });\n };\n\n const headersWithMetaData: Array<Header<T> & ColumnMetaData> =\n columnsWithMetaData(flattenedHeaders);\n\n const hasNestedRows = React.useMemo(\n () => rows.some((row) => Boolean(row.rows?.length)),\n [rows],\n );\n\n const sortedTableData = sortingData(rows, sorting, onSortBy);\n\n const filteredData =\n filters && isSelectedFiltersPresent(selectedFilters)\n ? filterTableData({\n data: sortedTableData,\n filters: filters || [],\n selectedFilters,\n })\n : sortedTableData;\n\n const { maxVisibleRows = 210, scrollableEl = tableRef.current } =\n lazyLoad || {};\n\n const { getSlicedRows, setBoundaryRef } = useLazyLoadData(\n maxVisibleRows,\n scrollableEl,\n !!lazyLoad,\n );\n\n const flatRowsData = transformRows(\n filteredData,\n expandedRowIds,\n isExpandedRowsByDefault,\n );\n const rowsData = getSlicedRows(flatRowsData);\n\n const tableStyle: React.CSSProperties & TableCSSCustomProperty = {\n '--table-grid-template-columns': getColumnsSize(resizedColumnWidths),\n '--table-width': `${tableWidth}px`,\n };\n\n const hasMergedCells: boolean = columnsWithMetaData(lowHeaders).some(\n (header) => header.mergeCells,\n );\n\n const handleExpandRow = (id: string): (() => void) => {\n return (): void => {\n if (expandedRowIds.includes(id)) {\n setExpandedRowIds((prevState) =>\n prevState.filter((rowId) => rowId !== id),\n );\n return;\n }\n setExpandedRowIds((prevState) => [...prevState, id]);\n };\n };\n\n const getCollapseRollProps = (\n row: TableTreeRow<T>,\n columnIdx: number,\n ): TableRowsCollapseProps => {\n const withCollapseButton = Boolean(row.rows?.length) && columnIdx === 0;\n\n const baseProps = {\n level: row.options.level,\n isExpandedByDefault: isExpandedRowsByDefault,\n };\n\n if (!withCollapseButton || isExpandedRowsByDefault) {\n return baseProps;\n }\n\n const isExpanded = expandedRowIds.includes(row.id);\n const toggleCollapse = handleExpandRow(row.id);\n\n return {\n ...baseProps,\n withCollapseButton,\n isExpanded,\n toggleCollapse,\n };\n };\n\n const getExpandedRows = (rows: T[], defaultExpandAll?: boolean): string[] => {\n let expandedIds: string[] = [];\n rows.forEach((row) => {\n if (\n row.defaultExpand ||\n ((row.rows?.length ?? 0) > 0 && defaultExpandAll)\n ) {\n expandedIds.push(row.id);\n }\n if (row.rows) {\n const ids = getExpandedRows(row.rows as T[], defaultExpandAll);\n expandedIds = [...expandedIds, ...ids];\n if (ids.length > 0 && expandedIds.indexOf(row.id) === -1) {\n expandedIds.push(row.id);\n }\n }\n });\n return expandedIds;\n };\n\n useEffect(() => {\n if (rows) {\n setExpandedRowIds(getExpandedRows(rows, defaultExpandAll));\n }\n }, [rows, defaultExpandAll]);\n\n const renderCell = (\n column: TableColumn<T>,\n row: T,\n columnIdx: number,\n ): React.ReactNode => {\n const cellContent = column.renderCell\n ? column.renderCell(row)\n : row[column.accessor!];\n\n if (!hasNestedRows || columnIdx !== 0) {\n return cellContent as React.ReactNode;\n }\n\n const collapseRollProps = getCollapseRollProps(\n row as TableTreeRow<T>,\n columnIdx,\n );\n\n return (\n <TableRowsCollapse {...collapseRollProps}>\n {cellContent as React.ReactNode}\n </TableRowsCollapse>\n );\n };\n\n const renderEmptyRowsPlaceholder = (\n placeholder: React.ReactNode,\n ): React.ReactNode => {\n return typeof placeholder === 'string' ? (\n <Text size=\"s\">{placeholder}</Text>\n ) : (\n placeholder\n );\n };\n\n const bottomCreateRowButton = useMemo(() => {\n const rowsLength = rowsData.length;\n /* Можно и rowsData[rowsLength - 1], но в таком случае TS не подскажет,\n что мы будем искать id в undefined это может привести к ошибке */\n const { id: lastRowId } = rowsData.slice(-1).pop() ?? {};\n\n if (!onRowCreate) {\n return null;\n }\n\n return (\n <div className={cnTable(rowsLength ? 'CreatRowCell' : 'RowWithoutCells')}>\n <Button\n size={createButtonSizeMap[size]}\n form=\"brick\"\n label={rowCreateText}\n view=\"clear\"\n className={cnTable('CreateRowButton')}\n onClick={handleRowCreate(rowsLength, lastRowId)}\n width=\"full\"\n />\n </div>\n );\n }, [rowCreateText, rowsData.length, onRowCreate]);\n\n const getTableCellProps = (\n row: TableTreeRow<T>,\n rowIdx: number,\n column: TableColumn<T>,\n columnIdx: number,\n ): GetTableCellProps => {\n const {\n mergeCells,\n accessor,\n position,\n getComparisonValue = (e) => e,\n } = column;\n\n const previousCell =\n rowsData[rowIdx - 1] &&\n getComparisonValue(rowsData[rowIdx - 1][accessor!]);\n const currentCell = getComparisonValue(row[accessor!]);\n\n const result: GetTableCellProps = {\n rowSpan: 1,\n show: false,\n style: {\n left: getStickyLeftOffset(columnIdx, position!.topHeaderGridIndex),\n },\n };\n\n if (\n mergeCells &&\n ((rowsData[rowIdx - 1] && previousCell !== currentCell) || rowIdx === 0)\n ) {\n for (let i = rowIdx; i < rowsData.length; i++) {\n if (rowsData[i + 1]) {\n const nextCell = getComparisonValue(rowsData[i + 1][accessor!]);\n\n if (currentCell === nextCell) {\n result.rowSpan++;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n\n if (result.rowSpan > 1) {\n result.style['--row-span'] = `span ${result.rowSpan}`;\n }\n\n result.show = true;\n }\n\n if (!mergeCells) {\n result.show = true;\n }\n\n return result;\n };\n\n const handleCellClick: onCellClick = (params) => {\n onCellClick?.(params);\n };\n\n return (\n <div\n {...otherProps}\n ref={useForkRef([tableRef, ref])}\n className={cnTable(\n {\n size,\n isResizable,\n zebraStriped,\n withBorderBottom: !filteredData.length,\n },\n [className],\n )}\n style={tableStyle}\n onScroll={handleScroll}\n >\n {/*\n Элементы Resizer рендерятся в отдельных ячейках нулевой высоты с шириной\n равной ширине колонки сетки, при этом у ячейки самый большой z-index в\n таблице чтобы элементы Resizer могли перекрывать ячейки заголовка и\n контента. Кроме того это позволяет зафиксировать вертикальное и\n горизонтальное положение Resizer, а также его высоту.\n\n Получение высоты Resizer элементов через свойство элемента таблицы\n scrollHeight не подходило, так как в таком случае Resizer растягивал\n таблицу по высоте, поэтому от этого способа отказались.\n */}\n {columnsWithMetaData(lowHeaders).map(\n (\n column: TableColumn<T> & { showResizer: boolean },\n columnIdx: number,\n ) => (\n <TableCell\n type=\"resizer\"\n key={columnIdx}\n ref={(ref: HTMLDivElement | null): void => {\n columnsRefs.current[columnIdx] = ref;\n }}\n style={{\n left: getStickyLeftOffset(columnIdx, columnIdx),\n }}\n onContextMenu={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'contextMenu',\n columnIdx,\n ref: { current: columnsRefs.current[columnIdx] },\n })\n }\n onClick={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'click',\n columnIdx,\n ref: { current: columnsRefs.current[columnIdx] },\n })\n }\n column={column}\n showVerticalShadow={showVerticalCellShadow}\n >\n {isResizable && (\n <TableResizer\n height={tableHeight - resizerTopOffsets[columnIdx]}\n top={resizerTopOffsets[columnIdx]}\n isVisible={column.showResizer}\n onResize={(delta): void => handleColumnResize(columnIdx, delta)}\n onDoubleClick={(): void =>\n updateColumnWidth(columnIdx, initialColumnWidths[columnIdx])\n }\n />\n )}\n </TableCell>\n ),\n )}\n <TableHeader\n isStickyHeader={stickyHeader}\n headersWithMetaData={headersWithMetaData}\n headerRowsHeights={headerRowsHeights}\n headerRowsRefs={headerRowsRefs}\n getStickyLeftOffset={getStickyLeftOffset}\n stickyColumnsGrid={stickyColumnsGrid}\n showVerticalCellShadow={showVerticalCellShadow}\n headerVerticalAlign={headerVerticalAlign}\n getSortIcon={getSortIcon}\n handleSortClick={handleSortClick}\n handleFilterTogglerClick={handleFilterTogglerClick}\n handleCellClick={handleCellClick}\n handleTooltipSave={handleTooltipSave}\n filters={filters}\n visibleFilter={visibleFilter}\n selectedFilters={selectedFilters}\n showHorizontalCellShadow={showHorizontalCellShadow}\n borderBetweenColumns={borderBetweenColumns}\n />\n {filters && isSelectedFiltersPresent(selectedFilters) && (\n <div className={cnTable('RowWithoutCells')}>\n <TableSelectedOptionsList\n values={getSelectedFiltersList({\n filters,\n selectedFilters,\n columns: lowHeaders,\n })}\n getTagLabel={getTagLabel}\n onRemove={removeSelectedFilter(filters)}\n onReset={resetSelectedFilters}\n />\n </div>\n )}\n {rowsData.length > 0 ? (\n rowsData.map((row, rowIdx) => {\n const nth = (rowIdx + 1) % 2 === 0 ? 'even' : 'odd';\n const columns = columnsWithMetaData(lowHeaders);\n const spans = calulateColSpans(columns, row);\n return (\n <div\n key={row.id}\n role=\"presentation\"\n className={cnTable('CellsRow', {\n nth,\n withMergedCells: hasMergedCells,\n })}\n onMouseEnter={handleRowHover(row.id)}\n onMouseLeave={handleRowHover(undefined)}\n onClick={(e) => onRowClick && onRowClick({ id: row.id, e })}\n >\n {columns.map((column: TableColumn<T>, columnIdx: number) => {\n const { show, style, rowSpan } = getTableCellProps(\n row,\n rowIdx,\n column,\n columnIdx,\n );\n const colSpan = spans[columnIdx];\n const start =\n columnIdx > 0\n ? spans.slice(0, columnIdx).reduce((a, b) => a + b) + 1\n : 1;\n if (show && colSpan > 0) {\n return (\n <TableCell\n type=\"content\"\n key={column.accessor}\n ref={(ref: HTMLDivElement | null) => {\n cellsRefs.current[`${columnIdx}-${row.id}`] = ref;\n setRef(setBoundaryRef(columnIdx, rowIdx), ref);\n }}\n style={{\n ...style,\n ['--table-cell-col-start' as string]: start,\n ['--table-cell-col-end' as string]: start + colSpan,\n }}\n wrapperClassName={cnTable('ContentCell', {\n isActive: activeRow ? activeRow.id === row.id : false,\n isDarkned: activeRow\n ? activeRow.id !== undefined &&\n activeRow.id !== row.id\n : false,\n isMerged: column.mergeCells && rowSpan > 1,\n })}\n className={getAdditionalClassName?.({\n column,\n row,\n isActive: activeRow ? activeRow.id === row.id : false,\n })}\n wrap={getCellWrap?.(row)}\n onContextMenu={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'contextMenu',\n columnIdx,\n rowId: row.id,\n ref: {\n current:\n cellsRefs.current[`${columnIdx}-${row.id}`],\n },\n })\n }\n onClick={(e: React.SyntheticEvent): void => {\n handleSelectRow({ id: row.id, e });\n\n handleCellClick({\n e,\n type: 'click',\n columnIdx,\n rowId: row.id,\n ref: {\n current:\n cellsRefs.current[`${columnIdx}-${row.id}`],\n },\n });\n }}\n column={column}\n verticalAlign={verticalAlign}\n isClickable={!!isRowsClickable}\n showVerticalShadow={\n showVerticalCellShadow &&\n // eslint-disable-next-line no-unsafe-optional-chaining\n column?.position!.gridIndex! +\n (column?.position!.colSpan || 1) ===\n stickyColumnsGrid\n }\n isBorderTop={rowIdx > 0 && borderBetweenRows}\n isBorderLeft={columnIdx > 0 && borderBetweenColumns}\n >\n {renderCell(column, row, columnIdx)}\n </TableCell>\n );\n }\n return null;\n })}\n </div>\n );\n })\n ) : (\n <div className={cnTable('RowWithoutCells')}>\n <div className={cnTable('EmptyCell')}>\n {renderEmptyRowsPlaceholder(emptyRowsPlaceholder)}\n </div>\n </div>\n )}\n {bottomCreateRowButton}\n </div>\n );\n};\n\nexport const Table = React.forwardRef(InternalTable) as Table;\n"],"mappings":"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"}
|
|
@@ -380,3 +380,22 @@ export declare const partOfTableDataForCustomTagLabelFunction: {
|
|
|
380
380
|
};
|
|
381
381
|
export declare const withControlTableMock: TableProps<typeof rowsForCustomTagLabelFunction[number]>;
|
|
382
382
|
export declare const withHiddenColumnTableMock: TableProps<typeof rowsForCustomTagLabelFunction[number]>;
|
|
383
|
+
declare const rowsWithColSpan: {
|
|
384
|
+
id: string;
|
|
385
|
+
name: string;
|
|
386
|
+
street: undefined;
|
|
387
|
+
building: undefined;
|
|
388
|
+
age: undefined;
|
|
389
|
+
number: undefined;
|
|
390
|
+
gender: undefined;
|
|
391
|
+
rows: {
|
|
392
|
+
id: string;
|
|
393
|
+
name: string;
|
|
394
|
+
street: string;
|
|
395
|
+
building: number;
|
|
396
|
+
age: number;
|
|
397
|
+
number: number;
|
|
398
|
+
gender: string;
|
|
399
|
+
}[];
|
|
400
|
+
}[];
|
|
401
|
+
export declare const withColSpan: TableProps<typeof rowsWithColSpan[number]>;
|