@daisforge/ui 1.20.0 → 1.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/chunks/{FiltersActions-UayfdMLv.mjs → FiltersActions-CDZSO0MM.mjs} +2 -2
- package/chunks/{FiltersActions-Cw_JG2O2.cjs → FiltersActions-CVtgAJnC.cjs} +1 -1
- package/chunks/{ListOfFilters-8rHTfUXT.cjs → ListOfFilters-BAPz0OY9.cjs} +1 -1
- package/chunks/{ListOfFilters-B3CA32OD.mjs → ListOfFilters-Bd8CZHDq.mjs} +2 -2
- package/chunks/{MassActions-5p7to0R5.cjs → MassActions-C08IgW4a.cjs} +1 -1
- package/chunks/{MassActions-BJxR4H1S.mjs → MassActions-D5UwHcNG.mjs} +1 -1
- package/chunks/{Table--NExtXRi.cjs → Table-CdaMPDkg.cjs} +6 -6
- package/chunks/{Table-bmvWLH9o.mjs → Table-DYSssxRS.mjs} +865 -857
- package/chunks/{TableCanvas-DxcB4WOJ.mjs → TableCanvas-DDNRdQjN.mjs} +540 -532
- package/chunks/{TableCanvas-DTm2pu0r.cjs → TableCanvas-DPHSYfH3.cjs} +7 -7
- package/chunks/{TableGlide-BMBq6g4-.mjs → TableGlide-DAnTJtye.mjs} +4 -1
- package/chunks/TableGlide-am_w97mF.cjs +1 -0
- package/components/Combobox/index.cjs +1 -1
- package/components/Combobox/index.mjs +1 -1
- package/components/ListOfFilters/index.cjs +1 -1
- package/components/ListOfFilters/index.mjs +1 -1
- package/components/MassActions/hooks/index.cjs +1 -1
- package/components/MassActions/hooks/index.mjs +1 -1
- package/components/MassActions/index.cjs +1 -1
- package/components/MassActions/index.mjs +1 -1
- package/components/Table/components/TableDropdown/index.cjs +1 -1
- package/components/Table/components/TableDropdown/index.mjs +1 -1
- package/components/Table/feature-collapse-table/index.cjs +1 -1
- package/components/Table/feature-collapse-table/index.mjs +1 -1
- package/components/Table/feature-column-control/ColumnsList/index.cjs +1 -1
- package/components/Table/feature-column-control/ColumnsList/index.mjs +1 -1
- package/components/Table/feature-column-control/index.cjs +1 -1
- package/components/Table/feature-column-control/index.mjs +1 -1
- package/components/Table/feature-columns-grouping/index.cjs +1 -1
- package/components/Table/feature-columns-grouping/index.mjs +1 -1
- package/components/Table/feature-context-menu/index.cjs +1 -1
- package/components/Table/feature-context-menu/index.mjs +1 -1
- package/components/Table/feature-edit/index.cjs +1 -1
- package/components/Table/feature-edit/index.mjs +1 -1
- package/components/Table/feature-filtering/combobox/index.cjs +1 -1
- package/components/Table/feature-filtering/combobox/index.mjs +1 -1
- package/components/Table/feature-filtering/filter-list-block/index.cjs +1 -1
- package/components/Table/feature-filtering/filter-list-block/index.mjs +1 -1
- package/components/Table/feature-filtering/header-filter-button/index.cjs +1 -1
- package/components/Table/feature-filtering/header-filter-button/index.mjs +1 -1
- package/components/Table/feature-filtering/index.cjs +1 -1
- package/components/Table/feature-filtering/index.mjs +1 -1
- package/components/Table/feature-filtering/sidebar-filter-block/index.cjs +1 -1
- package/components/Table/feature-filtering/sidebar-filter-block/index.mjs +1 -1
- package/components/Table/feature-infinity-scroll/index.cjs +1 -1
- package/components/Table/feature-infinity-scroll/index.mjs +1 -1
- package/components/Table/feature-key-text/index.cjs +1 -1
- package/components/Table/feature-key-text/index.mjs +1 -1
- package/components/Table/feature-pagination/index.cjs +1 -1
- package/components/Table/feature-pagination/index.mjs +1 -1
- package/components/Table/feature-right-sidebar/index.cjs +1 -1
- package/components/Table/feature-right-sidebar/index.mjs +1 -1
- package/components/Table/feature-row-detail/index.cjs +1 -1
- package/components/Table/feature-row-detail/index.mjs +1 -1
- package/components/Table/feature-row-instruments/index.cjs +1 -1
- package/components/Table/feature-row-instruments/index.mjs +1 -1
- package/components/Table/feature-row-size/index.cjs +1 -1
- package/components/Table/feature-row-size/index.mjs +1 -1
- package/components/Table/feature-rows-grouping/index.cjs +1 -1
- package/components/Table/feature-rows-grouping/index.mjs +1 -1
- package/components/Table/feature-searching/index.cjs +1 -1
- package/components/Table/feature-searching/index.mjs +1 -1
- package/components/Table/feature-select-row/index.cjs +1 -1
- package/components/Table/feature-select-row/index.mjs +1 -1
- package/components/Table/feature-sorting/index.cjs +1 -1
- package/components/Table/feature-sorting/index.mjs +1 -1
- package/components/Table/feature-table-settings/index.cjs +1 -1
- package/components/Table/feature-table-settings/index.mjs +1 -1
- package/components/Table/feature-tree/index.cjs +1 -1
- package/components/Table/feature-tree/index.mjs +1 -1
- package/components/Table/index.cjs +1 -1
- package/components/Table/index.mjs +1 -1
- package/components/Table/renders/formatCell/index.cjs +1 -1
- package/components/Table/renders/formatCell/index.mjs +1 -1
- package/components/Table/styles/index.cjs +1 -1
- package/components/Table/styles/index.mjs +1 -1
- package/components/Table/table-hooks/index.cjs +1 -1
- package/components/Table/table-hooks/index.mjs +1 -1
- package/components/Table/types/index.cjs +1 -1
- package/components/Table/types/index.mjs +1 -1
- package/components/Table/types/table-config.type.d.ts +1 -0
- package/components/Table/utils/index.cjs +1 -1
- package/components/Table/utils/index.mjs +1 -1
- package/components/Table/widgets/control-block/index.cjs +1 -1
- package/components/Table/widgets/control-block/index.mjs +1 -1
- package/components/Table/widgets/control-block/right-side/index.cjs +1 -1
- package/components/Table/widgets/control-block/right-side/index.mjs +1 -1
- package/components/Table/widgets/index.cjs +1 -1
- package/components/Table/widgets/index.mjs +1 -1
- package/components/Table/widgets/mass-actions/index.cjs +1 -1
- package/components/Table/widgets/mass-actions/index.mjs +1 -1
- package/components/TableCanvas/TableGlideInstance/adapters/column/index.cjs +1 -1
- package/components/TableCanvas/TableGlideInstance/adapters/column/index.mjs +1 -1
- package/components/TableCanvas/TableGlideInstance/adapters/index.cjs +1 -1
- package/components/TableCanvas/TableGlideInstance/adapters/index.mjs +1 -1
- package/components/TableCanvas/TableGlideInstance/index.cjs +1 -1
- package/components/TableCanvas/TableGlideInstance/index.mjs +2 -2
- package/components/TableCanvas/TableGlideInstance/utils/column/index.cjs +1 -1
- package/components/TableCanvas/TableGlideInstance/utils/column/index.mjs +1 -1
- package/components/TableCanvas/TableGlideInstance/utils/index.cjs +1 -1
- package/components/TableCanvas/TableGlideInstance/utils/index.mjs +1 -1
- package/components/TableCanvas/components/SplitIconButton/index.cjs +1 -1
- package/components/TableCanvas/components/SplitIconButton/index.mjs +1 -1
- package/components/TableCanvas/components/TableDropdown/index.cjs +1 -1
- package/components/TableCanvas/components/TableDropdown/index.mjs +1 -1
- package/components/TableCanvas/feature-cell-transfer/index.cjs +1 -1
- package/components/TableCanvas/feature-cell-transfer/index.mjs +1 -1
- package/components/TableCanvas/feature-collapse-table/index.cjs +1 -1
- package/components/TableCanvas/feature-collapse-table/index.mjs +1 -1
- package/components/TableCanvas/feature-column-control/ColumnsList/index.cjs +1 -1
- package/components/TableCanvas/feature-column-control/ColumnsList/index.mjs +1 -1
- package/components/TableCanvas/feature-column-control/index.cjs +1 -1
- package/components/TableCanvas/feature-column-control/index.mjs +1 -1
- package/components/TableCanvas/feature-columns-grouping/index.cjs +1 -1
- package/components/TableCanvas/feature-columns-grouping/index.mjs +1 -1
- package/components/TableCanvas/feature-content-state/index.cjs +1 -1
- package/components/TableCanvas/feature-content-state/index.mjs +1 -1
- package/components/TableCanvas/feature-context-menu/index.cjs +1 -1
- package/components/TableCanvas/feature-context-menu/index.mjs +1 -1
- package/components/TableCanvas/feature-edit/index.cjs +1 -1
- package/components/TableCanvas/feature-edit/index.mjs +1 -1
- package/components/TableCanvas/feature-filtering/combobox/index.cjs +1 -1
- package/components/TableCanvas/feature-filtering/combobox/index.mjs +1 -1
- package/components/TableCanvas/feature-filtering/filter-list-block/index.cjs +1 -1
- package/components/TableCanvas/feature-filtering/filter-list-block/index.mjs +1 -1
- package/components/TableCanvas/feature-filtering/header-filter-button/index.cjs +1 -1
- package/components/TableCanvas/feature-filtering/header-filter-button/index.mjs +1 -1
- package/components/TableCanvas/feature-filtering/index.cjs +1 -1
- package/components/TableCanvas/feature-filtering/index.mjs +1 -1
- package/components/TableCanvas/feature-filtering/sidebar-filter-block/index.cjs +1 -1
- package/components/TableCanvas/feature-filtering/sidebar-filter-block/index.mjs +1 -1
- package/components/TableCanvas/feature-infinity-scroll/index.cjs +1 -1
- package/components/TableCanvas/feature-infinity-scroll/index.mjs +1 -1
- package/components/TableCanvas/feature-key-text/index.cjs +1 -1
- package/components/TableCanvas/feature-key-text/index.mjs +1 -1
- package/components/TableCanvas/feature-notifications/index.cjs +1 -1
- package/components/TableCanvas/feature-notifications/index.mjs +1 -1
- package/components/TableCanvas/feature-pagination/index.cjs +1 -1
- package/components/TableCanvas/feature-pagination/index.mjs +1 -1
- package/components/TableCanvas/feature-popover-table/context/index.cjs +1 -1
- package/components/TableCanvas/feature-popover-table/context/index.mjs +1 -1
- package/components/TableCanvas/feature-popover-table/hooks/index.cjs +1 -1
- package/components/TableCanvas/feature-popover-table/hooks/index.mjs +1 -1
- package/components/TableCanvas/feature-popover-table/index.cjs +1 -1
- package/components/TableCanvas/feature-popover-table/index.mjs +1 -1
- package/components/TableCanvas/feature-popover-table/utils/index.cjs +1 -1
- package/components/TableCanvas/feature-popover-table/utils/index.mjs +1 -1
- package/components/TableCanvas/feature-right-sidebar/index.cjs +1 -1
- package/components/TableCanvas/feature-right-sidebar/index.mjs +1 -1
- package/components/TableCanvas/feature-row-detail/index.cjs +1 -1
- package/components/TableCanvas/feature-row-detail/index.mjs +1 -1
- package/components/TableCanvas/feature-row-instruments/index.cjs +1 -1
- package/components/TableCanvas/feature-row-instruments/index.mjs +1 -1
- package/components/TableCanvas/feature-row-markers/index.cjs +1 -1
- package/components/TableCanvas/feature-row-markers/index.mjs +1 -1
- package/components/TableCanvas/feature-row-size/index.cjs +1 -1
- package/components/TableCanvas/feature-row-size/index.mjs +1 -1
- package/components/TableCanvas/feature-rows-grouping/index.cjs +1 -1
- package/components/TableCanvas/feature-rows-grouping/index.mjs +1 -1
- package/components/TableCanvas/feature-searching/index.cjs +1 -1
- package/components/TableCanvas/feature-searching/index.mjs +1 -1
- package/components/TableCanvas/feature-select-row/index.cjs +1 -1
- package/components/TableCanvas/feature-select-row/index.mjs +1 -1
- package/components/TableCanvas/feature-sorting/index.cjs +1 -1
- package/components/TableCanvas/feature-sorting/index.mjs +1 -1
- package/components/TableCanvas/feature-table-settings/index.cjs +1 -1
- package/components/TableCanvas/feature-table-settings/index.mjs +1 -1
- package/components/TableCanvas/feature-tooltip/index.cjs +1 -1
- package/components/TableCanvas/feature-tooltip/index.mjs +1 -1
- package/components/TableCanvas/feature-tooltip/utils/index.cjs +1 -1
- package/components/TableCanvas/feature-tooltip/utils/index.mjs +1 -1
- package/components/TableCanvas/feature-tree/index.cjs +1 -1
- package/components/TableCanvas/feature-tree/index.mjs +1 -1
- package/components/TableCanvas/index.cjs +1 -1
- package/components/TableCanvas/index.mjs +2 -2
- package/components/TableCanvas/renders/formatCell/index.cjs +1 -1
- package/components/TableCanvas/renders/formatCell/index.mjs +1 -1
- package/components/TableCanvas/styles/index.cjs +1 -1
- package/components/TableCanvas/styles/index.mjs +1 -1
- package/components/TableCanvas/table-hooks/index.cjs +1 -1
- package/components/TableCanvas/table-hooks/index.mjs +1 -1
- package/components/TableCanvas/types/index.cjs +1 -1
- package/components/TableCanvas/types/index.mjs +1 -1
- package/components/TableCanvas/types/table-config.type.d.ts +1 -0
- package/components/TableCanvas/utils/index.cjs +1 -1
- package/components/TableCanvas/utils/index.mjs +1 -1
- package/components/TableCanvas/widgets/control-block/compression/index.cjs +1 -1
- package/components/TableCanvas/widgets/control-block/compression/index.mjs +1 -1
- package/components/TableCanvas/widgets/control-block/index.cjs +1 -1
- package/components/TableCanvas/widgets/control-block/index.mjs +1 -1
- package/components/TableCanvas/widgets/control-block/right-side/index.cjs +1 -1
- package/components/TableCanvas/widgets/control-block/right-side/index.mjs +1 -1
- package/components/TableCanvas/widgets/index.cjs +1 -1
- package/components/TableCanvas/widgets/index.mjs +1 -1
- package/components/TableCanvas/widgets/mass-actions/hooks/index.cjs +1 -1
- package/components/TableCanvas/widgets/mass-actions/hooks/index.mjs +1 -1
- package/components/TableCanvas/widgets/mass-actions/index.cjs +1 -1
- package/components/TableCanvas/widgets/mass-actions/index.mjs +1 -1
- package/components/TableContract/index.cjs +1 -1
- package/components/TableContract/index.mjs +1 -1
- package/components/TableGlide/hooks/selection/index.cjs +1 -1
- package/components/TableGlide/hooks/selection/index.mjs +1 -1
- package/components/TableGlide/index.cjs +1 -1
- package/components/TableGlide/index.mjs +1 -1
- package/components/TableGlide/lib/canvas/cells/buttons/index.cjs +1 -1
- package/components/TableGlide/lib/canvas/cells/buttons/index.mjs +1 -1
- package/components/TableGlide/lib/canvas/cells/iconSprites/index.cjs +1 -1
- package/components/TableGlide/lib/canvas/cells/iconSprites/index.mjs +1 -1
- package/components/TableGlide/lib/canvas/cells/index.cjs +1 -1
- package/components/TableGlide/lib/canvas/cells/index.mjs +1 -1
- package/components/TableGlide/lib/canvas/cells/renderer/index.cjs +1 -1
- package/components/TableGlide/lib/canvas/cells/renderer/index.mjs +1 -1
- package/components/TableGlide/lib/canvas/core/helpers/index.cjs +1 -1
- package/components/TableGlide/lib/canvas/core/helpers/index.mjs +1 -1
- package/components/TableGlide/lib/canvas/core/index.cjs +1 -1
- package/components/TableGlide/lib/canvas/core/index.mjs +1 -1
- package/components/TableGlide/lib/canvas/hooks/index.cjs +1 -1
- package/components/TableGlide/lib/canvas/hooks/index.mjs +1 -1
- package/components/TableGlide/lib/canvas/index.cjs +1 -1
- package/components/TableGlide/lib/canvas/index.mjs +1 -1
- package/components/TableGlide/lib/canvas/miniflex/index.cjs +1 -1
- package/components/TableGlide/lib/canvas/miniflex/index.mjs +1 -1
- package/components/TableGlide/lib/canvas/primitives/index.cjs +1 -1
- package/components/TableGlide/lib/canvas/primitives/index.mjs +1 -1
- package/components/TableGlide/lib/canvas/utils/index.cjs +1 -1
- package/components/TableGlide/lib/canvas/utils/index.mjs +1 -1
- package/components/TableGlide/theming/index.cjs +1 -1
- package/components/TableGlide/theming/index.mjs +1 -1
- package/formComponents/FormCombobox/index.cjs +1 -1
- package/formComponents/FormCombobox/index.mjs +1 -1
- package/formComponents/FormSwitch/index.cjs +1 -1
- package/formComponents/FormSwitch/index.mjs +1 -1
- package/index.cjs +1 -1
- package/index.mjs +5 -5
- package/layouts/FiltersActions/hooks/index.cjs +1 -1
- package/layouts/FiltersActions/hooks/index.mjs +1 -1
- package/layouts/FiltersActions/index.cjs +1 -1
- package/layouts/FiltersActions/index.mjs +1 -1
- package/mcp-data/component-index.json +765 -504
- package/package.json +2 -2
- package/chunks/TableGlide-DtosQrHB.cjs +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedAt": "2026-09-
|
|
3
|
-
"libVersion": "1.
|
|
2
|
+
"generatedAt": "2026-09-25T13:25:33.162Z",
|
|
3
|
+
"libVersion": "1.21.0",
|
|
4
4
|
"components": {
|
|
5
5
|
"Accordion": {
|
|
6
6
|
"name": "Accordion",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
72
72
|
}
|
|
73
73
|
],
|
|
74
|
-
"atomicMcpVersion": "0.
|
|
74
|
+
"atomicMcpVersion": "0.360.0",
|
|
75
75
|
"importPath": "@daisforge/ui",
|
|
76
76
|
"importStatement": "import { Accordion } from '@daisforge/ui';",
|
|
77
77
|
"minimalUsage": "<Accordion />",
|
|
@@ -91,9 +91,9 @@
|
|
|
91
91
|
},
|
|
92
92
|
{
|
|
93
93
|
"exportName": "Vendor2",
|
|
94
|
-
"displayName": "
|
|
94
|
+
"displayName": "Встроенная иконка AccordionItem",
|
|
95
95
|
"type": "vendor",
|
|
96
|
-
"code": "import React from 'react';\nimport { Accordion, AccordionItem } from '@daisforge/ui';\nexport function App() {\n return (\n <div>\n <Accordion size=\"s\">\n <AccordionItem
|
|
96
|
+
"code": "import React from 'react';\nimport { Accordion, AccordionItem } from '@daisforge/ui';\nexport function App() {\n return (\n <div>\n <Accordion size=\"s\">\n <AccordionItem defaultIconContent=\"arrow\" defaultIconPlacement=\"left\" title=\"Как оплатить заправку бонусами СберСпасибо?\">После указания деталей заправки нажмите кнопку «К оплате». Откроется окно оплаты, где вы сможете списать бонусы и оплатить ими до 99% стоимости топлива</AccordionItem>\n <AccordionItem defaultIconContent=\"arrow\" defaultIconPlacement=\"left\" title=\"Как оплатить заправку бонусами СберСпасибо?\">После указания деталей заправки нажмите кнопку «К оплате». Откроется окно оплаты, где вы сможете списать бонусы и оплатить ими до 99% стоимости топлива</AccordionItem>\n <AccordionItem defaultIconContent=\"arrow\" defaultIconPlacement=\"left\" title=\"Как оплатить заправку бонусами СберСпасибо?\">После указания деталей заправки нажмите кнопку «К оплате». Откроется окно оплаты, где вы сможете списать бонусы и оплатить ими до 99% стоимости топлива</AccordionItem>\n </Accordion>\n </div>\n );\n}"
|
|
97
97
|
}
|
|
98
98
|
]
|
|
99
99
|
},
|
|
@@ -217,7 +217,7 @@
|
|
|
217
217
|
"раскрывающийся блок"
|
|
218
218
|
],
|
|
219
219
|
"hasCuratedMeta": true,
|
|
220
|
-
"atomicMcpVersion": "0.
|
|
220
|
+
"atomicMcpVersion": "0.360.0",
|
|
221
221
|
"importPath": "@daisforge/ui",
|
|
222
222
|
"importStatement": "import { AccordionItem } from '@daisforge/ui';",
|
|
223
223
|
"minimalUsage": "<AccordionItem />",
|
|
@@ -237,9 +237,9 @@
|
|
|
237
237
|
},
|
|
238
238
|
{
|
|
239
239
|
"exportName": "Vendor2",
|
|
240
|
-
"displayName": "
|
|
240
|
+
"displayName": "Встроенная иконка AccordionItem",
|
|
241
241
|
"type": "vendor",
|
|
242
|
-
"code": "import React from 'react';\nimport { Accordion, AccordionItem } from '@daisforge/ui';\nexport function App() {\n return (\n <div>\n <Accordion size=\"s\">\n <AccordionItem
|
|
242
|
+
"code": "import React from 'react';\nimport { Accordion, AccordionItem } from '@daisforge/ui';\nexport function App() {\n return (\n <div>\n <Accordion size=\"s\">\n <AccordionItem defaultIconContent=\"arrow\" defaultIconPlacement=\"left\" title=\"Как оплатить заправку бонусами СберСпасибо?\">После указания деталей заправки нажмите кнопку «К оплате». Откроется окно оплаты, где вы сможете списать бонусы и оплатить ими до 99% стоимости топлива</AccordionItem>\n <AccordionItem defaultIconContent=\"arrow\" defaultIconPlacement=\"left\" title=\"Как оплатить заправку бонусами СберСпасибо?\">После указания деталей заправки нажмите кнопку «К оплате». Откроется окно оплаты, где вы сможете списать бонусы и оплатить ими до 99% стоимости топлива</AccordionItem>\n <AccordionItem defaultIconContent=\"arrow\" defaultIconPlacement=\"left\" title=\"Как оплатить заправку бонусами СберСпасибо?\">После указания деталей заправки нажмите кнопку «К оплате». Откроется окно оплаты, где вы сможете списать бонусы и оплатить ими до 99% стоимости топлива</AccordionItem>\n </Accordion>\n </div>\n );\n}"
|
|
243
243
|
}
|
|
244
244
|
]
|
|
245
245
|
},
|
|
@@ -479,7 +479,7 @@
|
|
|
479
479
|
}
|
|
480
480
|
],
|
|
481
481
|
"hasCuratedMeta": true,
|
|
482
|
-
"atomicMcpVersion": "0.
|
|
482
|
+
"atomicMcpVersion": "0.360.0",
|
|
483
483
|
"importPath": "@daisforge/ui",
|
|
484
484
|
"importStatement": "import { AiAgentPopover } from '@daisforge/ui';",
|
|
485
485
|
"minimalUsage": "<AiAgentPopover />",
|
|
@@ -964,7 +964,7 @@
|
|
|
964
964
|
}
|
|
965
965
|
],
|
|
966
966
|
"hasCuratedMeta": true,
|
|
967
|
-
"atomicMcpVersion": "0.
|
|
967
|
+
"atomicMcpVersion": "0.360.0",
|
|
968
968
|
"importPath": "@daisforge/ui",
|
|
969
969
|
"importStatement": "import { AnalyticalWidget } from '@daisforge/ui';",
|
|
970
970
|
"minimalUsage": "<AnalyticalWidget contentSlot={'Контент'} size={{}}>\n {/* части: AnalyticalWidget.Header, AnalyticalWidget.FilterIconButton, AnalyticalWidget.DotsIconButton, AnalyticalWidget.Chips */}\n</AnalyticalWidget>",
|
|
@@ -1077,7 +1077,7 @@
|
|
|
1077
1077
|
}
|
|
1078
1078
|
],
|
|
1079
1079
|
"hasCuratedMeta": true,
|
|
1080
|
-
"atomicMcpVersion": "0.
|
|
1080
|
+
"atomicMcpVersion": "0.360.0",
|
|
1081
1081
|
"importPath": "@daisforge/ui",
|
|
1082
1082
|
"importStatement": "import { ApprovalCenter } from '@daisforge/ui';",
|
|
1083
1083
|
"minimalUsage": "<ApprovalCenter tabs={{}} />",
|
|
@@ -1344,7 +1344,7 @@
|
|
|
1344
1344
|
],
|
|
1345
1345
|
"hasCuratedMeta": true,
|
|
1346
1346
|
"inheritedProps": [],
|
|
1347
|
-
"atomicMcpVersion": "0.
|
|
1347
|
+
"atomicMcpVersion": "0.360.0",
|
|
1348
1348
|
"importPath": "@daisforge/ui",
|
|
1349
1349
|
"importStatement": "import { Attach } from '@daisforge/ui';",
|
|
1350
1350
|
"minimalUsage": "<Attach />",
|
|
@@ -1878,7 +1878,7 @@
|
|
|
1878
1878
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
1879
1879
|
}
|
|
1880
1880
|
],
|
|
1881
|
-
"atomicMcpVersion": "0.
|
|
1881
|
+
"atomicMcpVersion": "0.360.0",
|
|
1882
1882
|
"importPath": "@daisforge/ui",
|
|
1883
1883
|
"importStatement": "import { Autocomplete } from '@daisforge/ui';",
|
|
1884
1884
|
"minimalUsage": "<Autocomplete />",
|
|
@@ -2293,7 +2293,7 @@
|
|
|
2293
2293
|
"поиск с автодополнением"
|
|
2294
2294
|
],
|
|
2295
2295
|
"hasCuratedMeta": true,
|
|
2296
|
-
"atomicMcpVersion": "0.
|
|
2296
|
+
"atomicMcpVersion": "0.360.0",
|
|
2297
2297
|
"importPath": "@daisforge/ui",
|
|
2298
2298
|
"importStatement": "import { AutocompleteSearch } from '@daisforge/ui';",
|
|
2299
2299
|
"minimalUsage": "<AutocompleteSearch />",
|
|
@@ -2525,6 +2525,13 @@
|
|
|
2525
2525
|
"inheritedFrom": "Avatar",
|
|
2526
2526
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
2527
2527
|
},
|
|
2528
|
+
{
|
|
2529
|
+
"name": "thousandSeparator",
|
|
2530
|
+
"type": "string | boolean",
|
|
2531
|
+
"required": false,
|
|
2532
|
+
"inheritedFrom": "Avatar",
|
|
2533
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
2534
|
+
},
|
|
2528
2535
|
{
|
|
2529
2536
|
"name": "transparent",
|
|
2530
2537
|
"type": "boolean",
|
|
@@ -2540,7 +2547,7 @@
|
|
|
2540
2547
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
2541
2548
|
}
|
|
2542
2549
|
],
|
|
2543
|
-
"atomicMcpVersion": "0.
|
|
2550
|
+
"atomicMcpVersion": "0.360.0",
|
|
2544
2551
|
"importPath": "@daisforge/ui",
|
|
2545
2552
|
"importStatement": "import { Avatar } from '@daisforge/ui';",
|
|
2546
2553
|
"minimalUsage": "<Avatar />",
|
|
@@ -2592,7 +2599,7 @@
|
|
|
2592
2599
|
],
|
|
2593
2600
|
"hasCuratedMeta": true,
|
|
2594
2601
|
"inheritedProps": [],
|
|
2595
|
-
"atomicMcpVersion": "0.
|
|
2602
|
+
"atomicMcpVersion": "0.360.0",
|
|
2596
2603
|
"importPath": "@daisforge/ui",
|
|
2597
2604
|
"importStatement": "import { AvatarGroup } from '@daisforge/ui';",
|
|
2598
2605
|
"minimalUsage": "<AvatarGroup />",
|
|
@@ -2731,7 +2738,7 @@
|
|
|
2731
2738
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
2732
2739
|
}
|
|
2733
2740
|
],
|
|
2734
|
-
"atomicMcpVersion": "0.
|
|
2741
|
+
"atomicMcpVersion": "0.360.0",
|
|
2735
2742
|
"importPath": "@daisforge/ui",
|
|
2736
2743
|
"importStatement": "import { Badge } from '@daisforge/ui';",
|
|
2737
2744
|
"minimalUsage": "<Badge />",
|
|
@@ -2841,7 +2848,7 @@
|
|
|
2841
2848
|
}
|
|
2842
2849
|
],
|
|
2843
2850
|
"hasCuratedMeta": true,
|
|
2844
|
-
"atomicMcpVersion": "0.
|
|
2851
|
+
"atomicMcpVersion": "0.360.0",
|
|
2845
2852
|
"importPath": "@daisforge/ui",
|
|
2846
2853
|
"importStatement": "import { BlockGradientScroll } from '@daisforge/ui';",
|
|
2847
2854
|
"minimalUsage": "<BlockGradientScroll />",
|
|
@@ -2993,7 +3000,7 @@
|
|
|
2993
3000
|
}
|
|
2994
3001
|
],
|
|
2995
3002
|
"hasCuratedMeta": true,
|
|
2996
|
-
"atomicMcpVersion": "0.
|
|
3003
|
+
"atomicMcpVersion": "0.360.0",
|
|
2997
3004
|
"importPath": "@daisforge/ui",
|
|
2998
3005
|
"importStatement": "import { BlockTitle } from '@daisforge/ui';",
|
|
2999
3006
|
"minimalUsage": "<BlockTitle />",
|
|
@@ -3346,7 +3353,7 @@
|
|
|
3346
3353
|
}
|
|
3347
3354
|
],
|
|
3348
3355
|
"hasCuratedMeta": true,
|
|
3349
|
-
"atomicMcpVersion": "0.
|
|
3356
|
+
"atomicMcpVersion": "0.360.0",
|
|
3350
3357
|
"importPath": "@daisforge/ui",
|
|
3351
3358
|
"importStatement": "import { Box } from '@daisforge/ui';",
|
|
3352
3359
|
"minimalUsage": "<Box />",
|
|
@@ -3436,7 +3443,7 @@
|
|
|
3436
3443
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
3437
3444
|
}
|
|
3438
3445
|
],
|
|
3439
|
-
"atomicMcpVersion": "0.
|
|
3446
|
+
"atomicMcpVersion": "0.360.0",
|
|
3440
3447
|
"importPath": "@daisforge/ui",
|
|
3441
3448
|
"importStatement": "import { Breadcrumbs } from '@daisforge/ui';",
|
|
3442
3449
|
"minimalUsage": "<Breadcrumbs items={[]} />",
|
|
@@ -3629,13 +3636,13 @@
|
|
|
3629
3636
|
},
|
|
3630
3637
|
{
|
|
3631
3638
|
"name": "view",
|
|
3632
|
-
"type": "\"clear\" | \"default\" | \"accent\" | \"positive\" | \"warning\" | \"negative\" | \"dark\" | \"secondary\" | \"black\" | \"white\"",
|
|
3639
|
+
"type": "\"clear\" | \"default\" | \"accent\" | \"positive\" | \"warning\" | \"negative\" | \"dark\" | \"secondary\" | \"black\" | \"white\" | \"gradient\"",
|
|
3633
3640
|
"required": false,
|
|
3634
3641
|
"inheritedFrom": "Button",
|
|
3635
3642
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
3636
3643
|
}
|
|
3637
3644
|
],
|
|
3638
|
-
"atomicMcpVersion": "0.
|
|
3645
|
+
"atomicMcpVersion": "0.360.0",
|
|
3639
3646
|
"importPath": "@daisforge/ui",
|
|
3640
3647
|
"importStatement": "import { Button } from '@daisforge/ui';",
|
|
3641
3648
|
"minimalUsage": "<Button />",
|
|
@@ -3692,7 +3699,7 @@
|
|
|
3692
3699
|
"кастомная кнопка"
|
|
3693
3700
|
],
|
|
3694
3701
|
"hasCuratedMeta": true,
|
|
3695
|
-
"atomicMcpVersion": "0.
|
|
3702
|
+
"atomicMcpVersion": "0.360.0",
|
|
3696
3703
|
"importPath": "@daisforge/ui",
|
|
3697
3704
|
"importStatement": "import { ButtonBase } from '@daisforge/ui';",
|
|
3698
3705
|
"minimalUsage": "<ButtonBase />",
|
|
@@ -3772,14 +3779,14 @@
|
|
|
3772
3779
|
},
|
|
3773
3780
|
{
|
|
3774
3781
|
"name": "view",
|
|
3775
|
-
"type": "\"clear\" | \"default\" | \"accent\" | \"positive\" | \"warning\" | \"negative\" | \"dark\" | \"secondary\" | \"black\" | \"white\"",
|
|
3782
|
+
"type": "\"clear\" | \"default\" | \"accent\" | \"positive\" | \"warning\" | \"negative\" | \"dark\" | \"secondary\" | \"black\" | \"white\" | \"gradient\"",
|
|
3776
3783
|
"required": false,
|
|
3777
3784
|
"description": "Вид группы кнопок",
|
|
3778
3785
|
"inheritedFrom": "ButtonGroup",
|
|
3779
3786
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
3780
3787
|
}
|
|
3781
3788
|
],
|
|
3782
|
-
"atomicMcpVersion": "0.
|
|
3789
|
+
"atomicMcpVersion": "0.360.0",
|
|
3783
3790
|
"importPath": "@daisforge/ui",
|
|
3784
3791
|
"importStatement": "import { ButtonGroup } from '@daisforge/ui';",
|
|
3785
3792
|
"minimalUsage": "<ButtonGroup />",
|
|
@@ -3792,9 +3799,9 @@
|
|
|
3792
3799
|
},
|
|
3793
3800
|
{
|
|
3794
3801
|
"exportName": "Vendor2",
|
|
3795
|
-
"displayName": "
|
|
3802
|
+
"displayName": "Границы кнопки",
|
|
3796
3803
|
"type": "vendor",
|
|
3797
|
-
"code": "import React from 'react';\nimport { ButtonGroup, Button } from '@daisforge/ui';\nexport function App() {\n return (\n <div>\n <ButtonGroup size=\"
|
|
3804
|
+
"code": "import React from 'react';\nimport { ButtonGroup, Button } from '@daisforge/ui';\nexport function App() {\n return (\n <div>\n <ButtonGroup size=\"xs\" shape=\"segmented\">\n {Array(3)\n .fill(true)\n .map((_, i) => (\n <Button text={`Button ${i}`} />\n ))}\n </ButtonGroup>\n <ButtonGroup size=\"xs\" shape=\"default\">\n {Array(3)\n .fill(true)\n .map((_, i) => (\n <Button text={`Button ${i}`} />\n ))}\n </ButtonGroup>\n </div>\n );\n}"
|
|
3798
3805
|
}
|
|
3799
3806
|
]
|
|
3800
3807
|
},
|
|
@@ -3804,14 +3811,7 @@
|
|
|
3804
3811
|
"folderName": "Calendar",
|
|
3805
3812
|
"role": "primary",
|
|
3806
3813
|
"description": "Календарь для выбора одной даты или диапазона дат с отметкой событий",
|
|
3807
|
-
"props": [
|
|
3808
|
-
{
|
|
3809
|
-
"name": "onChangeVisibleDate",
|
|
3810
|
-
"type": "((date: Date) => void) | undefined",
|
|
3811
|
-
"required": false,
|
|
3812
|
-
"description": "Обработчик изменения отображаемых месяца или года при навигации по календарю."
|
|
3813
|
-
}
|
|
3814
|
-
],
|
|
3814
|
+
"props": [],
|
|
3815
3815
|
"propsTypeName": "CalendarProps",
|
|
3816
3816
|
"sourceFile": "node_modules/@salutejs/sdds-finai/types/components/Calendar/Calendar.d.ts",
|
|
3817
3817
|
"type": "wrapper",
|
|
@@ -3976,6 +3976,14 @@
|
|
|
3976
3976
|
"inheritedFrom": "Calendar",
|
|
3977
3977
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
3978
3978
|
},
|
|
3979
|
+
{
|
|
3980
|
+
"name": "onChangeVisibleDate",
|
|
3981
|
+
"type": "((date: Date) => void)",
|
|
3982
|
+
"required": false,
|
|
3983
|
+
"description": "Обработчик изменения отображаемых месяца или года при навигации по календарю.",
|
|
3984
|
+
"inheritedFrom": "Calendar",
|
|
3985
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
3986
|
+
},
|
|
3979
3987
|
{
|
|
3980
3988
|
"name": "renderFromDate",
|
|
3981
3989
|
"type": "Date",
|
|
@@ -4031,7 +4039,7 @@
|
|
|
4031
4039
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
4032
4040
|
}
|
|
4033
4041
|
],
|
|
4034
|
-
"atomicMcpVersion": "0.
|
|
4042
|
+
"atomicMcpVersion": "0.360.0",
|
|
4035
4043
|
"importPath": "@daisforge/ui",
|
|
4036
4044
|
"importStatement": "import { Calendar } from '@daisforge/ui';",
|
|
4037
4045
|
"minimalUsage": "<Calendar onChangeValue={() => {}} value={{}} />",
|
|
@@ -4829,7 +4837,7 @@
|
|
|
4829
4837
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
4830
4838
|
}
|
|
4831
4839
|
],
|
|
4832
|
-
"atomicMcpVersion": "0.
|
|
4840
|
+
"atomicMcpVersion": "0.360.0",
|
|
4833
4841
|
"importPath": "@daisforge/ui",
|
|
4834
4842
|
"importStatement": "import { Card } from '@daisforge/ui';",
|
|
4835
4843
|
"minimalUsage": "<Card />",
|
|
@@ -4873,7 +4881,7 @@
|
|
|
4873
4881
|
],
|
|
4874
4882
|
"hasCuratedMeta": true,
|
|
4875
4883
|
"parentComponent": "Card",
|
|
4876
|
-
"atomicMcpVersion": "0.
|
|
4884
|
+
"atomicMcpVersion": "0.360.0",
|
|
4877
4885
|
"importPath": "@daisforge/ui",
|
|
4878
4886
|
"importStatement": "import { CardContent } from '@daisforge/ui';",
|
|
4879
4887
|
"minimalUsage": "<CardContent />",
|
|
@@ -4919,7 +4927,7 @@
|
|
|
4919
4927
|
"relatedExports": [
|
|
4920
4928
|
"CardContent"
|
|
4921
4929
|
],
|
|
4922
|
-
"atomicMcpVersion": "0.
|
|
4930
|
+
"atomicMcpVersion": "0.360.0",
|
|
4923
4931
|
"importPath": "@daisforge/ui",
|
|
4924
4932
|
"importStatement": "import { CardInnerContent } from '@daisforge/ui';",
|
|
4925
4933
|
"minimalUsage": "<CardInnerContent />",
|
|
@@ -5033,7 +5041,7 @@
|
|
|
5033
5041
|
],
|
|
5034
5042
|
"hasCuratedMeta": true,
|
|
5035
5043
|
"inheritedProps": [],
|
|
5036
|
-
"atomicMcpVersion": "0.
|
|
5044
|
+
"atomicMcpVersion": "0.360.0",
|
|
5037
5045
|
"importPath": "@daisforge/ui",
|
|
5038
5046
|
"importStatement": "import { Carousel } from '@daisforge/ui';",
|
|
5039
5047
|
"minimalUsage": "<Carousel />",
|
|
@@ -5095,7 +5103,7 @@
|
|
|
5095
5103
|
"scroll snap"
|
|
5096
5104
|
],
|
|
5097
5105
|
"hasCuratedMeta": true,
|
|
5098
|
-
"atomicMcpVersion": "0.
|
|
5106
|
+
"atomicMcpVersion": "0.360.0",
|
|
5099
5107
|
"importPath": "@daisforge/ui",
|
|
5100
5108
|
"importStatement": "import { CarouselItem } from '@daisforge/ui';",
|
|
5101
5109
|
"minimalUsage": "<CarouselItem />",
|
|
@@ -5133,7 +5141,7 @@
|
|
|
5133
5141
|
"содержимое строки списка"
|
|
5134
5142
|
],
|
|
5135
5143
|
"hasCuratedMeta": true,
|
|
5136
|
-
"atomicMcpVersion": "0.
|
|
5144
|
+
"atomicMcpVersion": "0.360.0",
|
|
5137
5145
|
"importPath": "@daisforge/ui",
|
|
5138
5146
|
"importStatement": "import { CellTextbox } from '@daisforge/ui';",
|
|
5139
5147
|
"minimalUsage": "<CellTextbox />",
|
|
@@ -5162,7 +5170,7 @@
|
|
|
5162
5170
|
"подпись поля списка"
|
|
5163
5171
|
],
|
|
5164
5172
|
"hasCuratedMeta": true,
|
|
5165
|
-
"atomicMcpVersion": "0.
|
|
5173
|
+
"atomicMcpVersion": "0.360.0",
|
|
5166
5174
|
"importPath": "@daisforge/ui",
|
|
5167
5175
|
"importStatement": "import { CellTextboxLabel } from '@daisforge/ui';",
|
|
5168
5176
|
"minimalUsage": "<CellTextboxLabel />",
|
|
@@ -5191,7 +5199,7 @@
|
|
|
5191
5199
|
"вторичный текст ячейки"
|
|
5192
5200
|
],
|
|
5193
5201
|
"hasCuratedMeta": true,
|
|
5194
|
-
"atomicMcpVersion": "0.
|
|
5202
|
+
"atomicMcpVersion": "0.360.0",
|
|
5195
5203
|
"importPath": "@daisforge/ui",
|
|
5196
5204
|
"importStatement": "import { CellTextboxSubtitle } from '@daisforge/ui';",
|
|
5197
5205
|
"minimalUsage": "<CellTextboxSubtitle />",
|
|
@@ -5220,7 +5228,7 @@
|
|
|
5220
5228
|
"основной текст ячейки"
|
|
5221
5229
|
],
|
|
5222
5230
|
"hasCuratedMeta": true,
|
|
5223
|
-
"atomicMcpVersion": "0.
|
|
5231
|
+
"atomicMcpVersion": "0.360.0",
|
|
5224
5232
|
"importPath": "@daisforge/ui",
|
|
5225
5233
|
"importStatement": "import { CellTextboxTitle } from '@daisforge/ui';",
|
|
5226
5234
|
"minimalUsage": "<CellTextboxTitle />",
|
|
@@ -5340,7 +5348,7 @@
|
|
|
5340
5348
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
5341
5349
|
}
|
|
5342
5350
|
],
|
|
5343
|
-
"atomicMcpVersion": "0.
|
|
5351
|
+
"atomicMcpVersion": "0.360.0",
|
|
5344
5352
|
"importPath": "@daisforge/ui",
|
|
5345
5353
|
"importStatement": "import { Cell } from '@daisforge/ui';",
|
|
5346
5354
|
"minimalUsage": "<Cell />",
|
|
@@ -5565,7 +5573,7 @@
|
|
|
5565
5573
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
5566
5574
|
}
|
|
5567
5575
|
],
|
|
5568
|
-
"atomicMcpVersion": "0.
|
|
5576
|
+
"atomicMcpVersion": "0.360.0",
|
|
5569
5577
|
"importPath": "@daisforge/ui",
|
|
5570
5578
|
"importStatement": "import { Checkbox } from '@daisforge/ui';",
|
|
5571
5579
|
"minimalUsage": "<Checkbox />",
|
|
@@ -5692,7 +5700,7 @@
|
|
|
5692
5700
|
},
|
|
5693
5701
|
{
|
|
5694
5702
|
"name": "size",
|
|
5695
|
-
"type": "\"s\" | \"m\" | \"xs\" | \"xxs\"",
|
|
5703
|
+
"type": "\"s\" | \"m\" | \"xs\" | \"xxs\" | \"28xs\" | \"16xxs\"",
|
|
5696
5704
|
"required": false,
|
|
5697
5705
|
"description": "Размер Chip",
|
|
5698
5706
|
"default": "'m'",
|
|
@@ -5738,7 +5746,7 @@
|
|
|
5738
5746
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
5739
5747
|
}
|
|
5740
5748
|
],
|
|
5741
|
-
"atomicMcpVersion": "0.
|
|
5749
|
+
"atomicMcpVersion": "0.360.0",
|
|
5742
5750
|
"importPath": "@daisforge/ui",
|
|
5743
5751
|
"importStatement": "import { Chip } from '@daisforge/ui';",
|
|
5744
5752
|
"minimalUsage": "<Chip />",
|
|
@@ -5827,7 +5835,7 @@
|
|
|
5827
5835
|
},
|
|
5828
5836
|
{
|
|
5829
5837
|
"name": "size",
|
|
5830
|
-
"type": "\"s\" | \"m\" | \"xs\"",
|
|
5838
|
+
"type": "\"s\" | \"m\" | \"xs\" | \"xxs\" | \"28xs\" | \"16xxs\"",
|
|
5831
5839
|
"required": false,
|
|
5832
5840
|
"description": "Размер группы",
|
|
5833
5841
|
"inheritedFrom": "ChipGroup",
|
|
@@ -5842,7 +5850,7 @@
|
|
|
5842
5850
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
5843
5851
|
}
|
|
5844
5852
|
],
|
|
5845
|
-
"atomicMcpVersion": "0.
|
|
5853
|
+
"atomicMcpVersion": "0.360.0",
|
|
5846
5854
|
"importPath": "@daisforge/ui",
|
|
5847
5855
|
"importStatement": "import { ChipGroup } from '@daisforge/ui';",
|
|
5848
5856
|
"minimalUsage": "<ChipGroup />",
|
|
@@ -5868,12 +5876,6 @@
|
|
|
5868
5876
|
"role": "primary",
|
|
5869
5877
|
"description": "Поле ввода одноразового OTP-кода с подписью и обработкой ошибок",
|
|
5870
5878
|
"props": [
|
|
5871
|
-
{
|
|
5872
|
-
"name": "enableWebOTP",
|
|
5873
|
-
"type": "boolean | undefined",
|
|
5874
|
-
"required": false,
|
|
5875
|
-
"description": ""
|
|
5876
|
-
},
|
|
5877
5879
|
{
|
|
5878
5880
|
"name": "autoComplete",
|
|
5879
5881
|
"type": "React.HTMLInputAutoCompleteAttribute | undefined",
|
|
@@ -5954,6 +5956,13 @@
|
|
|
5954
5956
|
"inheritedFrom": "CodeField",
|
|
5955
5957
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
5956
5958
|
},
|
|
5959
|
+
{
|
|
5960
|
+
"name": "enableWebOTP",
|
|
5961
|
+
"type": "boolean",
|
|
5962
|
+
"required": false,
|
|
5963
|
+
"inheritedFrom": "CodeField",
|
|
5964
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
5965
|
+
},
|
|
5957
5966
|
{
|
|
5958
5967
|
"name": "isError",
|
|
5959
5968
|
"type": "boolean",
|
|
@@ -5975,6 +5984,13 @@
|
|
|
5975
5984
|
"inheritedFrom": "CodeField",
|
|
5976
5985
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
5977
5986
|
},
|
|
5987
|
+
{
|
|
5988
|
+
"name": "onClick",
|
|
5989
|
+
"type": "MouseEventHandler<HTMLDivElement>",
|
|
5990
|
+
"required": false,
|
|
5991
|
+
"inheritedFrom": "CodeField",
|
|
5992
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
5993
|
+
},
|
|
5978
5994
|
{
|
|
5979
5995
|
"name": "onFullCodeEnter",
|
|
5980
5996
|
"type": "((code: string) => void)",
|
|
@@ -6012,7 +6028,7 @@
|
|
|
6012
6028
|
},
|
|
6013
6029
|
{
|
|
6014
6030
|
"name": "value",
|
|
6015
|
-
"type": "string",
|
|
6031
|
+
"type": "string | (string & readonly string[])",
|
|
6016
6032
|
"required": false,
|
|
6017
6033
|
"inheritedFrom": "CodeField",
|
|
6018
6034
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
@@ -6032,7 +6048,7 @@
|
|
|
6032
6048
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
6033
6049
|
}
|
|
6034
6050
|
],
|
|
6035
|
-
"atomicMcpVersion": "0.
|
|
6051
|
+
"atomicMcpVersion": "0.360.0",
|
|
6036
6052
|
"importPath": "@daisforge/ui",
|
|
6037
6053
|
"importStatement": "import { CodeField } from '@daisforge/ui';",
|
|
6038
6054
|
"minimalUsage": "<CodeField />",
|
|
@@ -6041,7 +6057,7 @@
|
|
|
6041
6057
|
"exportName": "Vendor1",
|
|
6042
6058
|
"displayName": "Web OTP API",
|
|
6043
6059
|
"type": "vendor",
|
|
6044
|
-
"code": "
|
|
6060
|
+
"code": "import React from 'react';\nimport { CodeField } from '@daisforge/ui';\nexport function App() {\n return <CodeField enableWebOTP caption=\"Введите код из СМС\" />;\n}"
|
|
6045
6061
|
},
|
|
6046
6062
|
{
|
|
6047
6063
|
"exportName": "Vendor2",
|
|
@@ -6197,7 +6213,7 @@
|
|
|
6197
6213
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
6198
6214
|
}
|
|
6199
6215
|
],
|
|
6200
|
-
"atomicMcpVersion": "0.
|
|
6216
|
+
"atomicMcpVersion": "0.360.0",
|
|
6201
6217
|
"importPath": "@daisforge/ui",
|
|
6202
6218
|
"importStatement": "import { CodeInput } from '@daisforge/ui';",
|
|
6203
6219
|
"minimalUsage": "<CodeInput />",
|
|
@@ -6338,7 +6354,7 @@
|
|
|
6338
6354
|
}
|
|
6339
6355
|
],
|
|
6340
6356
|
"hasCuratedMeta": true,
|
|
6341
|
-
"atomicMcpVersion": "0.
|
|
6357
|
+
"atomicMcpVersion": "0.360.0",
|
|
6342
6358
|
"importPath": "@daisforge/ui",
|
|
6343
6359
|
"importStatement": "import { Collapse } from '@daisforge/ui';",
|
|
6344
6360
|
"minimalUsage": "<Collapse />",
|
|
@@ -6844,6 +6860,13 @@
|
|
|
6844
6860
|
"inheritedFrom": "Combobox",
|
|
6845
6861
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
6846
6862
|
},
|
|
6863
|
+
{
|
|
6864
|
+
"name": "hasDivider",
|
|
6865
|
+
"type": "boolean",
|
|
6866
|
+
"required": false,
|
|
6867
|
+
"inheritedFrom": "Combobox",
|
|
6868
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
6869
|
+
},
|
|
6847
6870
|
{
|
|
6848
6871
|
"name": "hintSize",
|
|
6849
6872
|
"type": "\"s\" | \"m\"",
|
|
@@ -6950,7 +6973,7 @@
|
|
|
6950
6973
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
6951
6974
|
}
|
|
6952
6975
|
],
|
|
6953
|
-
"atomicMcpVersion": "0.
|
|
6976
|
+
"atomicMcpVersion": "0.360.0",
|
|
6954
6977
|
"importPath": "@daisforge/ui",
|
|
6955
6978
|
"importStatement": "import { Combobox } from '@daisforge/ui';",
|
|
6956
6979
|
"minimalUsage": "<Combobox items={[]} />",
|
|
@@ -7029,15 +7052,22 @@
|
|
|
7029
7052
|
},
|
|
7030
7053
|
{
|
|
7031
7054
|
"name": "view",
|
|
7032
|
-
"type": "\"default\" | \"accent\" | \"positive\" | \"warning\" | \"negative\" | \"dark\" | \"light\"",
|
|
7055
|
+
"type": "\"default\" | \"accent\" | \"positive\" | \"warning\" | \"negative\" | \"dark\" | \"light\" | \"secondary\"",
|
|
7033
7056
|
"required": false,
|
|
7034
7057
|
"description": "Вид Counter",
|
|
7035
7058
|
"default": "default",
|
|
7036
7059
|
"inheritedFrom": "Counter",
|
|
7037
7060
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
7061
|
+
},
|
|
7062
|
+
{
|
|
7063
|
+
"name": "thousandSeparator",
|
|
7064
|
+
"type": "string | boolean",
|
|
7065
|
+
"required": false,
|
|
7066
|
+
"inheritedFrom": "Counter",
|
|
7067
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
7038
7068
|
}
|
|
7039
7069
|
],
|
|
7040
|
-
"atomicMcpVersion": "0.
|
|
7070
|
+
"atomicMcpVersion": "0.360.0",
|
|
7041
7071
|
"importPath": "@daisforge/ui",
|
|
7042
7072
|
"importStatement": "import { Counter } from '@daisforge/ui';",
|
|
7043
7073
|
"minimalUsage": "<Counter count={0} />",
|
|
@@ -7069,14 +7099,7 @@
|
|
|
7069
7099
|
"folderName": "DatePicker",
|
|
7070
7100
|
"role": "primary",
|
|
7071
7101
|
"description": "Поле выбора одной даты со встроенным календарём и иконкой",
|
|
7072
|
-
"props": [
|
|
7073
|
-
{
|
|
7074
|
-
"name": "onChangeVisibleDate",
|
|
7075
|
-
"type": "((date: Date) => void) | undefined",
|
|
7076
|
-
"required": false,
|
|
7077
|
-
"description": "Обработчик изменения отображаемых месяца или года при навигации по календарю."
|
|
7078
|
-
}
|
|
7079
|
-
],
|
|
7102
|
+
"props": [],
|
|
7080
7103
|
"propsTypeName": "DatePickerProps",
|
|
7081
7104
|
"sourceFile": "packages/ui-kit/src/components/DatePicker/DatePicker.tsx",
|
|
7082
7105
|
"type": "wrapper",
|
|
@@ -7500,6 +7523,14 @@
|
|
|
7500
7523
|
"inheritedFrom": "DatePicker",
|
|
7501
7524
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
7502
7525
|
},
|
|
7526
|
+
{
|
|
7527
|
+
"name": "onChangeVisibleDate",
|
|
7528
|
+
"type": "((date: Date) => void)",
|
|
7529
|
+
"required": false,
|
|
7530
|
+
"description": "Обработчик изменения отображаемых месяца или года при навигации по календарю.",
|
|
7531
|
+
"inheritedFrom": "DatePicker",
|
|
7532
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
7533
|
+
},
|
|
7503
7534
|
{
|
|
7504
7535
|
"name": "onCommitDate",
|
|
7505
7536
|
"type": "OnCommitDateCallback",
|
|
@@ -7720,7 +7751,7 @@
|
|
|
7720
7751
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
7721
7752
|
}
|
|
7722
7753
|
],
|
|
7723
|
-
"atomicMcpVersion": "0.
|
|
7754
|
+
"atomicMcpVersion": "0.360.0",
|
|
7724
7755
|
"importPath": "@daisforge/ui",
|
|
7725
7756
|
"importStatement": "import { DatePicker } from '@daisforge/ui';",
|
|
7726
7757
|
"minimalUsage": "<DatePicker />",
|
|
@@ -8361,18 +8392,6 @@
|
|
|
8361
8392
|
"role": "primary",
|
|
8362
8393
|
"description": "Поле для ввода даты и времени одновременно в одном контроле",
|
|
8363
8394
|
"props": [
|
|
8364
|
-
{
|
|
8365
|
-
"name": "onChangeVisibleDate",
|
|
8366
|
-
"type": "((date: Date) => void) | undefined",
|
|
8367
|
-
"required": false,
|
|
8368
|
-
"description": "Обработчик изменения отображаемых месяца или года при навигации по календарю."
|
|
8369
|
-
},
|
|
8370
|
-
{
|
|
8371
|
-
"name": "hasTimeFormat",
|
|
8372
|
-
"type": "boolean | undefined",
|
|
8373
|
-
"required": false,
|
|
8374
|
-
"description": ""
|
|
8375
|
-
},
|
|
8376
8395
|
{
|
|
8377
8396
|
"name": "enterKeyHint",
|
|
8378
8397
|
"type": "\"search\" | \"enter\" | \"done\" | \"go\" | \"next\" | \"previous\" | \"send\" | undefined",
|
|
@@ -8642,6 +8661,14 @@
|
|
|
8642
8661
|
"inheritedFrom": "DateTimePicker",
|
|
8643
8662
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
8644
8663
|
},
|
|
8664
|
+
{
|
|
8665
|
+
"name": "onChangeVisibleDate",
|
|
8666
|
+
"type": "((date: Date) => void)",
|
|
8667
|
+
"required": false,
|
|
8668
|
+
"description": "Обработчик изменения отображаемых месяца или года при навигации по календарю.",
|
|
8669
|
+
"inheritedFrom": "DateTimePicker",
|
|
8670
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
8671
|
+
},
|
|
8645
8672
|
{
|
|
8646
8673
|
"name": "onToggle",
|
|
8647
8674
|
"type": "((isOpen: boolean, event?: Event | SyntheticEvent<Element, Event>) => void)",
|
|
@@ -8837,6 +8864,13 @@
|
|
|
8837
8864
|
"inheritedFrom": "DateTimePicker",
|
|
8838
8865
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
8839
8866
|
},
|
|
8867
|
+
{
|
|
8868
|
+
"name": "hasTimeFormat",
|
|
8869
|
+
"type": "boolean",
|
|
8870
|
+
"required": false,
|
|
8871
|
+
"inheritedFrom": "DateTimePicker",
|
|
8872
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
8873
|
+
},
|
|
8840
8874
|
{
|
|
8841
8875
|
"name": "hintContentLeft",
|
|
8842
8876
|
"type": "ReactNode",
|
|
@@ -9013,7 +9047,7 @@
|
|
|
9013
9047
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
9014
9048
|
}
|
|
9015
9049
|
],
|
|
9016
|
-
"atomicMcpVersion": "0.
|
|
9050
|
+
"atomicMcpVersion": "0.360.0",
|
|
9017
9051
|
"importPath": "@daisforge/ui",
|
|
9018
9052
|
"importStatement": "import { DateTimePicker } from '@daisforge/ui';",
|
|
9019
9053
|
"minimalUsage": "<DateTimePicker />",
|
|
@@ -9038,48 +9072,57 @@
|
|
|
9038
9072
|
"folderName": "Divider",
|
|
9039
9073
|
"role": "primary",
|
|
9040
9074
|
"description": "Разделительная линия между блоками контента, гориз. или верт.",
|
|
9041
|
-
"props": [
|
|
9075
|
+
"props": [],
|
|
9076
|
+
"propsTypeName": "DividerProps",
|
|
9077
|
+
"sourceFile": "node_modules/@salutejs/sdds-finai/types/components/Divider/Divider.d.ts",
|
|
9078
|
+
"type": "wrapper",
|
|
9079
|
+
"atomicBase": "Divider",
|
|
9080
|
+
"category": "Локальные компоненты",
|
|
9081
|
+
"keywords": [
|
|
9082
|
+
"разделитель блоков",
|
|
9083
|
+
"линия-сепаратор",
|
|
9084
|
+
"отступ между секциями"
|
|
9085
|
+
],
|
|
9086
|
+
"hasCuratedMeta": true,
|
|
9087
|
+
"inheritedProps": [
|
|
9042
9088
|
{
|
|
9043
9089
|
"name": "length",
|
|
9044
|
-
"type": "string | number
|
|
9090
|
+
"type": "string | number",
|
|
9045
9091
|
"required": false,
|
|
9046
9092
|
"description": "Размер разделителя",
|
|
9047
|
-
"default": "'100%'"
|
|
9093
|
+
"default": "'100%'",
|
|
9094
|
+
"inheritedFrom": "Divider",
|
|
9095
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
9048
9096
|
},
|
|
9049
9097
|
{
|
|
9050
9098
|
"name": "orientation",
|
|
9051
|
-
"type": "
|
|
9099
|
+
"type": "\"horizontal\" | \"vertical\"",
|
|
9052
9100
|
"required": false,
|
|
9053
9101
|
"description": "Направление разделителя",
|
|
9054
|
-
"default": "'horizontal'"
|
|
9102
|
+
"default": "'horizontal'",
|
|
9103
|
+
"inheritedFrom": "Divider",
|
|
9104
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
9055
9105
|
},
|
|
9056
9106
|
{
|
|
9057
9107
|
"name": "size",
|
|
9058
|
-
"type": "
|
|
9108
|
+
"type": "\"m\"",
|
|
9059
9109
|
"required": false,
|
|
9060
9110
|
"description": "Размер разделителя",
|
|
9061
|
-
"default": "'m'"
|
|
9111
|
+
"default": "'m'",
|
|
9112
|
+
"inheritedFrom": "Divider",
|
|
9113
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
9062
9114
|
},
|
|
9063
9115
|
{
|
|
9064
9116
|
"name": "view",
|
|
9065
|
-
"type": "
|
|
9117
|
+
"type": "\"default\" | \"dark\" | \"light\" | \"inverse\"",
|
|
9066
9118
|
"required": false,
|
|
9067
9119
|
"description": "Вид разделителя",
|
|
9068
|
-
"default": "'default'"
|
|
9120
|
+
"default": "'default'",
|
|
9121
|
+
"inheritedFrom": "Divider",
|
|
9122
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
9069
9123
|
}
|
|
9070
9124
|
],
|
|
9071
|
-
"
|
|
9072
|
-
"sourceFile": "node_modules/@salutejs/sdds-finai/types/components/Divider/Divider.d.ts",
|
|
9073
|
-
"type": "wrapper",
|
|
9074
|
-
"atomicBase": "Divider",
|
|
9075
|
-
"category": "Локальные компоненты",
|
|
9076
|
-
"keywords": [
|
|
9077
|
-
"разделитель блоков",
|
|
9078
|
-
"линия-сепаратор",
|
|
9079
|
-
"отступ между секциями"
|
|
9080
|
-
],
|
|
9081
|
-
"hasCuratedMeta": true,
|
|
9082
|
-
"atomicDataMissing": true,
|
|
9125
|
+
"atomicMcpVersion": "0.360.0",
|
|
9083
9126
|
"importPath": "@daisforge/ui",
|
|
9084
9127
|
"importStatement": "import { Divider } from '@daisforge/ui';",
|
|
9085
9128
|
"minimalUsage": "<Divider />",
|
|
@@ -9097,6 +9140,18 @@
|
|
|
9097
9140
|
"type": "usage",
|
|
9098
9141
|
"code": "<Divider className=\"no-info-divider\" />",
|
|
9099
9142
|
"sourceFile": "packages/storybook/src/stories/AiChatDAIS/components/MessageBubble.tsx"
|
|
9143
|
+
},
|
|
9144
|
+
{
|
|
9145
|
+
"exportName": "Vendor1",
|
|
9146
|
+
"displayName": "Ориентация разделителя",
|
|
9147
|
+
"type": "vendor",
|
|
9148
|
+
"code": "import React from 'react';\nimport { BodyS, Divider } from '@daisforge/ui';\nexport function App() {\n const Demo = ({\n orientation = 'horizontal',\n length = '100%',\n beforeText = 'Before',\n afterText = 'After',\n }) => {\n const wrapperStyle = {\n display: \"inline-flex\",\n gap: \"0.5rem\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexDirection: orientation === \"horizontal\" ? \"column\" : \"row\"\n }\n return (\n <div style={wrapperStyle}>\n <BodyS>{beforeText}</BodyS>\n <Divider orientation={orientation} length={length} />\n <BodyS>{afterText}</BodyS>\n </div>\n );\n };\n return (\n <div style={{ display: \"flex\", gap: \"2rem\" }}>\n <Demo />\n <Demo orientation=\"vertical\" />\n </div>\n );\n}"
|
|
9149
|
+
},
|
|
9150
|
+
{
|
|
9151
|
+
"exportName": "Vendor2",
|
|
9152
|
+
"displayName": "Примеры Примеры",
|
|
9153
|
+
"type": "vendor",
|
|
9154
|
+
"code": "import React, { useState } from 'react';\nimport { Autocomplete, BodyXS, Divider, TabItem, Tabs } from '@daisforge/ui';\nexport function App() {\n const departments = [\n { value: 'all', label: 'Все' },\n { value: 'design', label: 'Дизайн' },\n { value: 'frontend', label: 'Фронтенд' },\n ];\n const people = [\n { label: 'Алексей Смирнов', department: 'design' },\n { label: 'Екатерина Иванова', department: 'design' },\n { label: 'Ольга Васильева', department: 'design' },\n { label: 'Дмитрий Петров', department: 'frontend' },\n { label: 'Сергей Сидоров', department: 'frontend' },\n { label: 'Мария Кузнецова', department: 'frontend' },\n { label: 'Андрей Попов', department: 'frontend' },\n ];\n const [department, setDepartment] = useState('all');\n const [value, setValue] = useState('');\n const filter = (item) =>\n (department === 'all' || item.department === department) &&\n item.label.toLowerCase().includes(value.toLowerCase());\n const found = people.filter(filter);\n return (\n <div style={{ display: 'block', height:\"420px\" }}>\n <Autocomplete\n suggestions={people}\n filter={filter}\n value={value}\n onChange={(event) => setValue(event.target.value)}\n onSuggestionSelect={(item) => setValue(item.label)}\n threshold={0}\n label=\"Label\"\n placeholder=\"Placeholder\"\n listMaxHeight=\"200px\"\n beforeList={\n <Tabs view=\"filled\" size=\"xs\" stretch>\n {departments.map((item) => (\n <TabItem\n key={item.value}\n view=\"secondary\"\n size=\"xs\"\n tabIndex={0}\n selected={item.value === department}\n onClick={() => setDepartment(item.value)}\n >\n {item.label}\n </TabItem>\n ))}\n </Tabs>\n }\n afterList={\n <>\n <Divider />\n <BodyXS style={{ padding: '0.5rem 0.75rem', color: 'var\n// … (обрезано)"
|
|
9100
9155
|
}
|
|
9101
9156
|
]
|
|
9102
9157
|
},
|
|
@@ -9106,14 +9161,7 @@
|
|
|
9106
9161
|
"folderName": "Drawer",
|
|
9107
9162
|
"role": "primary",
|
|
9108
9163
|
"description": "Базовая выезжающая боковая панель поверх контента страницы",
|
|
9109
|
-
"props": [
|
|
9110
|
-
{
|
|
9111
|
-
"name": "overlayProps",
|
|
9112
|
-
"type": "DrawerOverlayProps | undefined",
|
|
9113
|
-
"required": false,
|
|
9114
|
-
"description": "Настройки подложки.\nПо умолчанию `position` равен `fixed` для document и `absolute` для остальных frame."
|
|
9115
|
-
}
|
|
9116
|
-
],
|
|
9164
|
+
"props": [],
|
|
9117
9165
|
"propsTypeName": "DrawerProps",
|
|
9118
9166
|
"sourceFile": "node_modules/@salutejs/sdds-finai/types/components/Drawer/Drawer.d.ts",
|
|
9119
9167
|
"type": "wrapper",
|
|
@@ -9261,6 +9309,14 @@
|
|
|
9261
9309
|
"inheritedFrom": "Drawer",
|
|
9262
9310
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
9263
9311
|
},
|
|
9312
|
+
{
|
|
9313
|
+
"name": "overlayProps",
|
|
9314
|
+
"type": "DrawerOverlayProps",
|
|
9315
|
+
"required": false,
|
|
9316
|
+
"description": "Настройки подложки.\nПо умолчанию `position` равен `fixed` для document и `absolute` для остальных frame.",
|
|
9317
|
+
"inheritedFrom": "Drawer",
|
|
9318
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
9319
|
+
},
|
|
9264
9320
|
{
|
|
9265
9321
|
"name": "placement",
|
|
9266
9322
|
"type": "\"top\" | \"bottom\" | \"right\" | \"left\"",
|
|
@@ -9358,7 +9414,7 @@
|
|
|
9358
9414
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
9359
9415
|
}
|
|
9360
9416
|
],
|
|
9361
|
-
"atomicMcpVersion": "0.
|
|
9417
|
+
"atomicMcpVersion": "0.360.0",
|
|
9362
9418
|
"importPath": "@daisforge/ui",
|
|
9363
9419
|
"importStatement": "import { Drawer } from '@daisforge/ui';",
|
|
9364
9420
|
"minimalUsage": "<Drawer />",
|
|
@@ -10803,7 +10859,7 @@
|
|
|
10803
10859
|
"DrawerDFFooter",
|
|
10804
10860
|
"DrawerDFHeader"
|
|
10805
10861
|
],
|
|
10806
|
-
"atomicMcpVersion": "0.
|
|
10862
|
+
"atomicMcpVersion": "0.360.0",
|
|
10807
10863
|
"importPath": "@daisforge/ui",
|
|
10808
10864
|
"importStatement": "import { DrawerDF } from '@daisforge/ui';",
|
|
10809
10865
|
"minimalUsage": "<DrawerDF>\n {/* части: DrawerDF.Content, DrawerDF.Header, DrawerDF.DotsIconButton, DrawerDF.Footer */}\n</DrawerDF>",
|
|
@@ -11141,7 +11197,7 @@
|
|
|
11141
11197
|
],
|
|
11142
11198
|
"hasCuratedMeta": true,
|
|
11143
11199
|
"parentComponent": "DrawerDF",
|
|
11144
|
-
"atomicMcpVersion": "0.
|
|
11200
|
+
"atomicMcpVersion": "0.360.0",
|
|
11145
11201
|
"compoundPartOf": {
|
|
11146
11202
|
"component": "DrawerDF",
|
|
11147
11203
|
"part": "Content"
|
|
@@ -11455,7 +11511,7 @@
|
|
|
11455
11511
|
],
|
|
11456
11512
|
"hasCuratedMeta": true,
|
|
11457
11513
|
"parentComponent": "DrawerDF",
|
|
11458
|
-
"atomicMcpVersion": "0.
|
|
11514
|
+
"atomicMcpVersion": "0.360.0",
|
|
11459
11515
|
"compoundPartOf": {
|
|
11460
11516
|
"component": "DrawerDF",
|
|
11461
11517
|
"part": "Footer"
|
|
@@ -11799,7 +11855,7 @@
|
|
|
11799
11855
|
],
|
|
11800
11856
|
"hasCuratedMeta": true,
|
|
11801
11857
|
"parentComponent": "DrawerDF",
|
|
11802
|
-
"atomicMcpVersion": "0.
|
|
11858
|
+
"atomicMcpVersion": "0.360.0",
|
|
11803
11859
|
"compoundPartOf": {
|
|
11804
11860
|
"component": "DrawerDF",
|
|
11805
11861
|
"part": "Header"
|
|
@@ -12042,7 +12098,7 @@
|
|
|
12042
12098
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
12043
12099
|
}
|
|
12044
12100
|
],
|
|
12045
|
-
"atomicMcpVersion": "0.
|
|
12101
|
+
"atomicMcpVersion": "0.360.0",
|
|
12046
12102
|
"importPath": "@daisforge/ui",
|
|
12047
12103
|
"importStatement": "import { Dropdown } from '@daisforge/ui';",
|
|
12048
12104
|
"minimalUsage": "<Dropdown items={[]} />",
|
|
@@ -12225,7 +12281,7 @@
|
|
|
12225
12281
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
12226
12282
|
}
|
|
12227
12283
|
],
|
|
12228
|
-
"atomicMcpVersion": "0.
|
|
12284
|
+
"atomicMcpVersion": "0.360.0",
|
|
12229
12285
|
"importPath": "@daisforge/ui",
|
|
12230
12286
|
"importStatement": "import { Dropzone } from '@daisforge/ui';",
|
|
12231
12287
|
"minimalUsage": "<Dropzone />",
|
|
@@ -12418,13 +12474,13 @@
|
|
|
12418
12474
|
},
|
|
12419
12475
|
{
|
|
12420
12476
|
"name": "view",
|
|
12421
|
-
"type": "\"default\" | \"accent\" | \"positive\" | \"warning\" | \"negative\" | \"secondary\" | \"info\"",
|
|
12477
|
+
"type": "\"default\" | \"accent\" | \"positive\" | \"warning\" | \"negative\" | \"secondary\" | \"gradient\" | \"info\"",
|
|
12422
12478
|
"required": false,
|
|
12423
12479
|
"inheritedFrom": "EmbedIconButton",
|
|
12424
12480
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
12425
12481
|
}
|
|
12426
12482
|
],
|
|
12427
|
-
"atomicMcpVersion": "0.
|
|
12483
|
+
"atomicMcpVersion": "0.360.0",
|
|
12428
12484
|
"importPath": "@daisforge/ui",
|
|
12429
12485
|
"importStatement": "import { EmbedIconButton } from '@daisforge/ui';",
|
|
12430
12486
|
"minimalUsage": "<EmbedIconButton />",
|
|
@@ -12520,7 +12576,7 @@
|
|
|
12520
12576
|
],
|
|
12521
12577
|
"hasCuratedMeta": true,
|
|
12522
12578
|
"inheritedProps": [],
|
|
12523
|
-
"atomicMcpVersion": "0.
|
|
12579
|
+
"atomicMcpVersion": "0.360.0",
|
|
12524
12580
|
"importPath": "@daisforge/ui",
|
|
12525
12581
|
"importStatement": "import { EmbeddedButtonBeta } from '@daisforge/ui';",
|
|
12526
12582
|
"minimalUsage": "<EmbeddedButtonBeta />",
|
|
@@ -12637,7 +12693,7 @@
|
|
|
12637
12693
|
}
|
|
12638
12694
|
],
|
|
12639
12695
|
"hasCuratedMeta": true,
|
|
12640
|
-
"atomicMcpVersion": "0.
|
|
12696
|
+
"atomicMcpVersion": "0.360.0",
|
|
12641
12697
|
"importPath": "@daisforge/ui",
|
|
12642
12698
|
"importStatement": "import { EmptyState } from '@daisforge/ui';",
|
|
12643
12699
|
"minimalUsage": "<EmptyState size={\"l\"} />",
|
|
@@ -12759,7 +12815,7 @@
|
|
|
12759
12815
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
12760
12816
|
}
|
|
12761
12817
|
],
|
|
12762
|
-
"atomicMcpVersion": "0.
|
|
12818
|
+
"atomicMcpVersion": "0.360.0",
|
|
12763
12819
|
"importPath": "@daisforge/ui",
|
|
12764
12820
|
"importStatement": "import { Flow } from '@daisforge/ui';",
|
|
12765
12821
|
"minimalUsage": "<Flow />",
|
|
@@ -13012,7 +13068,7 @@
|
|
|
13012
13068
|
"responsive layout"
|
|
13013
13069
|
],
|
|
13014
13070
|
"hasCuratedMeta": true,
|
|
13015
|
-
"atomicMcpVersion": "0.
|
|
13071
|
+
"atomicMcpVersion": "0.360.0",
|
|
13016
13072
|
"importPath": "@daisforge/ui",
|
|
13017
13073
|
"importStatement": "import { Col } from '@daisforge/ui';",
|
|
13018
13074
|
"minimalUsage": "<Col />",
|
|
@@ -13066,7 +13122,7 @@
|
|
|
13066
13122
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
13067
13123
|
}
|
|
13068
13124
|
],
|
|
13069
|
-
"atomicMcpVersion": "0.
|
|
13125
|
+
"atomicMcpVersion": "0.360.0",
|
|
13070
13126
|
"importPath": "@daisforge/ui",
|
|
13071
13127
|
"importStatement": "import { Grid } from '@daisforge/ui';",
|
|
13072
13128
|
"minimalUsage": "<Grid />",
|
|
@@ -13101,7 +13157,7 @@
|
|
|
13101
13157
|
"horizontal layout"
|
|
13102
13158
|
],
|
|
13103
13159
|
"hasCuratedMeta": true,
|
|
13104
|
-
"atomicMcpVersion": "0.
|
|
13160
|
+
"atomicMcpVersion": "0.360.0",
|
|
13105
13161
|
"importPath": "@daisforge/ui",
|
|
13106
13162
|
"importStatement": "import { Row } from '@daisforge/ui';",
|
|
13107
13163
|
"minimalUsage": "<Row />",
|
|
@@ -13398,7 +13454,7 @@
|
|
|
13398
13454
|
}
|
|
13399
13455
|
],
|
|
13400
13456
|
"hasCuratedMeta": true,
|
|
13401
|
-
"atomicMcpVersion": "0.
|
|
13457
|
+
"atomicMcpVersion": "0.360.0",
|
|
13402
13458
|
"importPath": "@daisforge/ui",
|
|
13403
13459
|
"importStatement": "import { GridDND } from '@daisforge/ui';",
|
|
13404
13460
|
"minimalUsage": "<GridDND items={[]}>\n {/* части: GridDND.ItemWrapper */}\n</GridDND>",
|
|
@@ -13604,13 +13660,13 @@
|
|
|
13604
13660
|
},
|
|
13605
13661
|
{
|
|
13606
13662
|
"name": "view",
|
|
13607
|
-
"type": "\"clear\" | \"default\" | \"accent\" | \"positive\" | \"warning\" | \"negative\" | \"dark\" | \"secondary\" | \"black\" | \"white\"",
|
|
13663
|
+
"type": "\"clear\" | \"default\" | \"accent\" | \"positive\" | \"warning\" | \"negative\" | \"dark\" | \"secondary\" | \"black\" | \"white\" | \"gradient\"",
|
|
13608
13664
|
"required": false,
|
|
13609
13665
|
"inheritedFrom": "IconButton",
|
|
13610
13666
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
13611
13667
|
}
|
|
13612
13668
|
],
|
|
13613
|
-
"atomicMcpVersion": "0.
|
|
13669
|
+
"atomicMcpVersion": "0.360.0",
|
|
13614
13670
|
"importPath": "@daisforge/ui",
|
|
13615
13671
|
"importStatement": "import { IconButton } from '@daisforge/ui';",
|
|
13616
13672
|
"minimalUsage": "<IconButton />",
|
|
@@ -13812,7 +13868,7 @@
|
|
|
13812
13868
|
"dropdown trigger"
|
|
13813
13869
|
],
|
|
13814
13870
|
"hasCuratedMeta": true,
|
|
13815
|
-
"atomicMcpVersion": "0.
|
|
13871
|
+
"atomicMcpVersion": "0.360.0",
|
|
13816
13872
|
"importPath": "@daisforge/ui",
|
|
13817
13873
|
"importStatement": "import { IconButtonDots } from '@daisforge/ui';",
|
|
13818
13874
|
"minimalUsage": "<IconButtonDots />",
|
|
@@ -13986,7 +14042,7 @@
|
|
|
13986
14042
|
"индикатор активных фильтров"
|
|
13987
14043
|
],
|
|
13988
14044
|
"hasCuratedMeta": true,
|
|
13989
|
-
"atomicMcpVersion": "0.
|
|
14045
|
+
"atomicMcpVersion": "0.360.0",
|
|
13990
14046
|
"importPath": "@daisforge/ui",
|
|
13991
14047
|
"importStatement": "import { IconButtonFilter } from '@daisforge/ui';",
|
|
13992
14048
|
"minimalUsage": "<IconButtonFilter />",
|
|
@@ -14024,7 +14080,7 @@
|
|
|
14024
14080
|
],
|
|
14025
14081
|
"docs": "# IconSvgSprite\n\n### Компонент для отрисовки SVG спрайтов\n\n---\n\n#### Использование\n\nВ `iconUrl` передается url `https://cdn.dddd.ru/FileWithSprites.svg` на файл содержащий спрайты иконок и ссылка на необходимую иконку `#IconId`.\nИспользуется в finai-admin, finai-header, finai-platform.\nДля этих микрофронтов url к картинке приходит в формате `/pl/static-res/finai_icons/sprite-{size}-1.svg#IconAvatar-{size}`,\nв которых плейсхолдер `{size}` в компоненте заменяется пропсом `size`. При отсутствии плейсхолдеров будет использоваться исходный url к спрайту.\n\n```jsx\n\n<IconSprite iconUrl=\"https://cdn.dddd.ru/FileWithSprites.svg#IconId\" />;\n```\n\n### Пропсы\n\n```js\ntype Props = {\n // url иконки\n iconUrl: string,\n // размер иконки, default = 's'\n size?: 'xs' | 's' | 'm',\n // цвет иконки\n color?: string,\n // css класс\n className?: string\n};\n```\n\n### Механизм работы SVG спрайтов\n\nДокументация [\\<symbol\\>](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/symbol) [\\<use\\>](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/use)\n\n - `<symbol id=\"Icon-1\">` - определяем иконку внутри тэга `symbol`, атрибут `id` используется в качестве ссылки на иконку\n\n```svg\n<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" style=\"display: none;\" ... >\n <symbol id=\"Icon1\" width=\"100%\" viewBox=\"0 0 24 24\" ... >\n <g><path ... </g>\n </symbol>\n <symbol id=\"Icon2\" width=\"100%\" viewBox=\"0 0 24 24\" ... >\n <g><path ... </g>\n </symbol>\n</svg>\n```\n\n - Используем иконку с помощью тэга `<use>`\n\n```svg\n<svg width=\"100%\" viewBox=\"0 0 16 16\" ... >\n <use xlinkHref=\"https://cdn.dddd.ru/FileWithSprites.svg#Icon1\" />\n</svg>\n\n```",
|
|
14026
14082
|
"hasCuratedMeta": true,
|
|
14027
|
-
"atomicMcpVersion": "0.
|
|
14083
|
+
"atomicMcpVersion": "0.360.0",
|
|
14028
14084
|
"importPath": "@daisforge/ui",
|
|
14029
14085
|
"importStatement": "import { IconSvgSprite } from '@daisforge/ui';",
|
|
14030
14086
|
"minimalUsage": "<IconSvgSprite iconUrl={'значение'} />",
|
|
@@ -14097,7 +14153,7 @@
|
|
|
14097
14153
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
14098
14154
|
}
|
|
14099
14155
|
],
|
|
14100
|
-
"atomicMcpVersion": "0.
|
|
14156
|
+
"atomicMcpVersion": "0.360.0",
|
|
14101
14157
|
"importPath": "@daisforge/ui",
|
|
14102
14158
|
"importStatement": "import { Image } from '@daisforge/ui';",
|
|
14103
14159
|
"minimalUsage": "<Image />",
|
|
@@ -14148,7 +14204,7 @@
|
|
|
14148
14204
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
14149
14205
|
}
|
|
14150
14206
|
],
|
|
14151
|
-
"atomicMcpVersion": "0.
|
|
14207
|
+
"atomicMcpVersion": "0.360.0",
|
|
14152
14208
|
"importPath": "@daisforge/ui",
|
|
14153
14209
|
"importStatement": "import { Indicator } from '@daisforge/ui';",
|
|
14154
14210
|
"minimalUsage": "<Indicator size={\"s\"} view={\"default\"} />",
|
|
@@ -14357,7 +14413,7 @@
|
|
|
14357
14413
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
14358
14414
|
}
|
|
14359
14415
|
],
|
|
14360
|
-
"atomicMcpVersion": "0.
|
|
14416
|
+
"atomicMcpVersion": "0.360.0",
|
|
14361
14417
|
"importPath": "@daisforge/ui",
|
|
14362
14418
|
"importStatement": "import { InformationWrapper } from '@daisforge/ui';",
|
|
14363
14419
|
"minimalUsage": "<InformationWrapper />",
|
|
@@ -14677,7 +14733,7 @@
|
|
|
14677
14733
|
"relatedExports": [
|
|
14678
14734
|
"LeftPanelToggleButton"
|
|
14679
14735
|
],
|
|
14680
|
-
"atomicMcpVersion": "0.
|
|
14736
|
+
"atomicMcpVersion": "0.360.0",
|
|
14681
14737
|
"importPath": "@daisforge/ui",
|
|
14682
14738
|
"importStatement": "import { LeftPanel } from '@daisforge/ui';",
|
|
14683
14739
|
"minimalUsage": "<LeftPanel>\n {/* части: LeftPanel.LeftPanelToggleButton */}\n</LeftPanel>",
|
|
@@ -14888,7 +14944,7 @@
|
|
|
14888
14944
|
],
|
|
14889
14945
|
"hasCuratedMeta": true,
|
|
14890
14946
|
"parentComponent": "LeftPanel",
|
|
14891
|
-
"atomicMcpVersion": "0.
|
|
14947
|
+
"atomicMcpVersion": "0.360.0",
|
|
14892
14948
|
"importPath": "@daisforge/ui",
|
|
14893
14949
|
"importStatement": "import { LeftPanelToggleButton } from '@daisforge/ui';",
|
|
14894
14950
|
"minimalUsage": "<LeftPanelToggleButton />",
|
|
@@ -14971,7 +15027,7 @@
|
|
|
14971
15027
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
14972
15028
|
}
|
|
14973
15029
|
],
|
|
14974
|
-
"atomicMcpVersion": "0.
|
|
15030
|
+
"atomicMcpVersion": "0.360.0",
|
|
14975
15031
|
"importPath": "@daisforge/ui",
|
|
14976
15032
|
"importStatement": "import { Link } from '@daisforge/ui';",
|
|
14977
15033
|
"minimalUsage": "<Link />",
|
|
@@ -15100,13 +15156,13 @@
|
|
|
15100
15156
|
},
|
|
15101
15157
|
{
|
|
15102
15158
|
"name": "view",
|
|
15103
|
-
"type": "\"default\" | \"accent\" | \"positive\" | \"warning\" | \"negative\" | \"secondary\" | \"info\"",
|
|
15159
|
+
"type": "\"default\" | \"accent\" | \"positive\" | \"warning\" | \"negative\" | \"secondary\" | \"gradient\" | \"info\"",
|
|
15104
15160
|
"required": false,
|
|
15105
15161
|
"inheritedFrom": "LinkButton",
|
|
15106
15162
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
15107
15163
|
}
|
|
15108
15164
|
],
|
|
15109
|
-
"atomicMcpVersion": "0.
|
|
15165
|
+
"atomicMcpVersion": "0.360.0",
|
|
15110
15166
|
"importPath": "@daisforge/ui",
|
|
15111
15167
|
"importStatement": "import { LinkButton } from '@daisforge/ui';",
|
|
15112
15168
|
"minimalUsage": "<LinkButton />",
|
|
@@ -15214,7 +15270,7 @@
|
|
|
15214
15270
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
15215
15271
|
}
|
|
15216
15272
|
],
|
|
15217
|
-
"atomicMcpVersion": "0.
|
|
15273
|
+
"atomicMcpVersion": "0.360.0",
|
|
15218
15274
|
"importPath": "@daisforge/ui",
|
|
15219
15275
|
"importStatement": "import { List } from '@daisforge/ui';",
|
|
15220
15276
|
"minimalUsage": "<List />",
|
|
@@ -15277,7 +15333,7 @@
|
|
|
15277
15333
|
"list row"
|
|
15278
15334
|
],
|
|
15279
15335
|
"hasCuratedMeta": true,
|
|
15280
|
-
"atomicMcpVersion": "0.
|
|
15336
|
+
"atomicMcpVersion": "0.360.0",
|
|
15281
15337
|
"importPath": "@daisforge/ui",
|
|
15282
15338
|
"importStatement": "import { ListItem } from '@daisforge/ui';",
|
|
15283
15339
|
"minimalUsage": "<ListItem />",
|
|
@@ -15427,7 +15483,7 @@
|
|
|
15427
15483
|
"сброс фильтров"
|
|
15428
15484
|
],
|
|
15429
15485
|
"hasCuratedMeta": true,
|
|
15430
|
-
"atomicMcpVersion": "0.
|
|
15486
|
+
"atomicMcpVersion": "0.360.0",
|
|
15431
15487
|
"importPath": "@daisforge/ui",
|
|
15432
15488
|
"importStatement": "import { ListOfFilters } from '@daisforge/ui';",
|
|
15433
15489
|
"minimalUsage": "<ListOfFilters clearAll={() => {}} items={[]} opened={true} />",
|
|
@@ -15920,7 +15976,7 @@
|
|
|
15920
15976
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
15921
15977
|
}
|
|
15922
15978
|
],
|
|
15923
|
-
"atomicMcpVersion": "0.
|
|
15979
|
+
"atomicMcpVersion": "0.360.0",
|
|
15924
15980
|
"importPath": "@daisforge/ui",
|
|
15925
15981
|
"importStatement": "import { Mask } from '@daisforge/ui';",
|
|
15926
15982
|
"minimalUsage": "<Mask />",
|
|
@@ -16113,7 +16169,7 @@
|
|
|
16113
16169
|
}
|
|
16114
16170
|
],
|
|
16115
16171
|
"hasCuratedMeta": true,
|
|
16116
|
-
"atomicMcpVersion": "0.
|
|
16172
|
+
"atomicMcpVersion": "0.360.0",
|
|
16117
16173
|
"importPath": "@daisforge/ui",
|
|
16118
16174
|
"importStatement": "import { MassActions } from '@daisforge/ui';",
|
|
16119
16175
|
"minimalUsage": "<MassActions containerRef={() => {}} leftSection={'Контент'} selectedCount={0}>\n {/* части: MassActions.Counter */}\n</MassActions>",
|
|
@@ -16227,7 +16283,7 @@
|
|
|
16227
16283
|
"action button dropdown"
|
|
16228
16284
|
],
|
|
16229
16285
|
"hasCuratedMeta": true,
|
|
16230
|
-
"atomicMcpVersion": "0.
|
|
16286
|
+
"atomicMcpVersion": "0.360.0",
|
|
16231
16287
|
"importPath": "@daisforge/ui",
|
|
16232
16288
|
"importStatement": "import { MassActionsButton } from '@daisforge/ui';",
|
|
16233
16289
|
"minimalUsage": "<MassActionsButton />",
|
|
@@ -16276,7 +16332,7 @@
|
|
|
16276
16332
|
"чекбокс выбора всех"
|
|
16277
16333
|
],
|
|
16278
16334
|
"hasCuratedMeta": true,
|
|
16279
|
-
"atomicMcpVersion": "0.
|
|
16335
|
+
"atomicMcpVersion": "0.360.0",
|
|
16280
16336
|
"compoundPartOf": {
|
|
16281
16337
|
"component": "MassActions",
|
|
16282
16338
|
"part": "Counter"
|
|
@@ -16339,7 +16395,7 @@
|
|
|
16339
16395
|
"fixed position"
|
|
16340
16396
|
],
|
|
16341
16397
|
"hasCuratedMeta": true,
|
|
16342
|
-
"atomicMcpVersion": "0.
|
|
16398
|
+
"atomicMcpVersion": "0.360.0",
|
|
16343
16399
|
"importPath": "@daisforge/ui",
|
|
16344
16400
|
"importStatement": "import { MassActionsStatic } from '@daisforge/ui';",
|
|
16345
16401
|
"minimalUsage": "<MassActionsStatic />",
|
|
@@ -16359,14 +16415,7 @@
|
|
|
16359
16415
|
"folderName": "Modal",
|
|
16360
16416
|
"role": "primary",
|
|
16361
16417
|
"description": "Базовое модальное окно поверх контента без готовых layout-слотов",
|
|
16362
|
-
"props": [
|
|
16363
|
-
{
|
|
16364
|
-
"name": "focusTrapSelectors",
|
|
16365
|
-
"type": "string[] | undefined",
|
|
16366
|
-
"required": false,
|
|
16367
|
-
"description": "Селекторы дополнительных DOM-поддеревьев, которые считаются частью модального окна для focus trap.\nИспользуется для элементов, отрисованных через Portal или вне DOM-поддерева модального окна."
|
|
16368
|
-
}
|
|
16369
|
-
],
|
|
16418
|
+
"props": [],
|
|
16370
16419
|
"propsTypeName": "ModalProps",
|
|
16371
16420
|
"sourceFile": "node_modules/@salutejs/sdds-finai/types/components/Modal/Modal.d.ts",
|
|
16372
16421
|
"type": "wrapper",
|
|
@@ -16411,6 +16460,14 @@
|
|
|
16411
16460
|
"inheritedFrom": "Modal",
|
|
16412
16461
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
16413
16462
|
},
|
|
16463
|
+
{
|
|
16464
|
+
"name": "focusTrapSelectors",
|
|
16465
|
+
"type": "string[]",
|
|
16466
|
+
"required": false,
|
|
16467
|
+
"description": "Селекторы дополнительных DOM-поддеревьев, которые считаются частью модального окна для focus trap.\nИспользуется для элементов, отрисованных через Portal или вне DOM-поддерева модального окна.",
|
|
16468
|
+
"inheritedFrom": "Modal",
|
|
16469
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
16470
|
+
},
|
|
16414
16471
|
{
|
|
16415
16472
|
"name": "frame",
|
|
16416
16473
|
"type": "string | RefObject<HTMLElement | null>",
|
|
@@ -16437,7 +16494,7 @@
|
|
|
16437
16494
|
},
|
|
16438
16495
|
{
|
|
16439
16496
|
"name": "initialFocusRef",
|
|
16440
|
-
"type": "RefObject<HTMLElement>",
|
|
16497
|
+
"type": "string | RefObject<HTMLElement>",
|
|
16441
16498
|
"required": false,
|
|
16442
16499
|
"description": "Первый элемент для фокуса внутри модального окна.",
|
|
16443
16500
|
"inheritedFrom": "Modal",
|
|
@@ -16571,6 +16628,13 @@
|
|
|
16571
16628
|
"inheritedFrom": "Modal",
|
|
16572
16629
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
16573
16630
|
},
|
|
16631
|
+
{
|
|
16632
|
+
"name": "size",
|
|
16633
|
+
"type": "string",
|
|
16634
|
+
"required": false,
|
|
16635
|
+
"inheritedFrom": "Modal",
|
|
16636
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
16637
|
+
},
|
|
16574
16638
|
{
|
|
16575
16639
|
"name": "view",
|
|
16576
16640
|
"type": "string",
|
|
@@ -16579,22 +16643,22 @@
|
|
|
16579
16643
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
16580
16644
|
}
|
|
16581
16645
|
],
|
|
16582
|
-
"atomicMcpVersion": "0.
|
|
16646
|
+
"atomicMcpVersion": "0.360.0",
|
|
16583
16647
|
"importPath": "@daisforge/ui",
|
|
16584
16648
|
"importStatement": "import { Modal } from '@daisforge/ui';",
|
|
16585
16649
|
"minimalUsage": "<Modal />",
|
|
16586
16650
|
"examples": [
|
|
16587
16651
|
{
|
|
16588
16652
|
"exportName": "Vendor1",
|
|
16589
|
-
"displayName": "
|
|
16653
|
+
"displayName": "FocusTrapped FocusTrapped Свойство isFocusTrapped захватывает фокус внутри одного DOM элемента. Когда свойство имеет значение true , при нажатии Tab или Shift + Tab фокус будет перемещаться только внутри модального окна.",
|
|
16590
16654
|
"type": "vendor",
|
|
16591
|
-
"code": "
|
|
16655
|
+
"code": "<Modal opened focusTrapSelectors={['#fullscreen-table', '.nested-modal']}>\n <Content />\n</Modal>"
|
|
16592
16656
|
},
|
|
16593
16657
|
{
|
|
16594
16658
|
"exportName": "Vendor2",
|
|
16595
|
-
"displayName": "
|
|
16659
|
+
"displayName": "Подключение анимации",
|
|
16596
16660
|
"type": "vendor",
|
|
16597
|
-
"code": "
|
|
16661
|
+
"code": "import styled from 'styled-components';\nimport { Modal } from '@daisforge/ui';\nconst StyledModal = styled(Modal)`\n && > .${popupClasses.root}, .${modalClasses.overlay} {\n animation: fadeIn 1s forwards;\n }\n &&.${popupClasses.endAnimation} .${popupClasses.root} {\n animation: fadeOut 1s forwards;\n }\n &&.${popupClasses.endAnimation} .${modalClasses.overlay} {\n animation: fadeOut 1s forwards;\n }\n @keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n @keyframes fadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n }\n`;"
|
|
16598
16662
|
}
|
|
16599
16663
|
]
|
|
16600
16664
|
},
|
|
@@ -16900,13 +16964,13 @@
|
|
|
16900
16964
|
},
|
|
16901
16965
|
{
|
|
16902
16966
|
"name": "view",
|
|
16903
|
-
"type": "\"clear\" | \"default\" | \"accent\" | \"positive\" | \"warning\" | \"negative\" | \"dark\" | \"secondary\" | \"black\" | \"white\"",
|
|
16967
|
+
"type": "\"clear\" | \"default\" | \"accent\" | \"positive\" | \"warning\" | \"negative\" | \"dark\" | \"secondary\" | \"black\" | \"white\" | \"gradient\"",
|
|
16904
16968
|
"required": false,
|
|
16905
16969
|
"inheritedFrom": "IconButton",
|
|
16906
16970
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
16907
16971
|
}
|
|
16908
16972
|
],
|
|
16909
|
-
"atomicMcpVersion": "0.
|
|
16973
|
+
"atomicMcpVersion": "0.360.0",
|
|
16910
16974
|
"compoundPartOf": {
|
|
16911
16975
|
"component": "ModalDF",
|
|
16912
16976
|
"part": "BackIconButton"
|
|
@@ -16978,7 +17042,45 @@
|
|
|
16978
17042
|
],
|
|
16979
17043
|
"hasCuratedMeta": true,
|
|
16980
17044
|
"parentComponent": "ModalDF",
|
|
16981
|
-
"
|
|
17045
|
+
"inheritedProps": [
|
|
17046
|
+
{
|
|
17047
|
+
"name": "length",
|
|
17048
|
+
"type": "string | number",
|
|
17049
|
+
"required": false,
|
|
17050
|
+
"description": "Размер разделителя",
|
|
17051
|
+
"default": "'100%'",
|
|
17052
|
+
"inheritedFrom": "Divider",
|
|
17053
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
17054
|
+
},
|
|
17055
|
+
{
|
|
17056
|
+
"name": "orientation",
|
|
17057
|
+
"type": "\"horizontal\" | \"vertical\"",
|
|
17058
|
+
"required": false,
|
|
17059
|
+
"description": "Направление разделителя",
|
|
17060
|
+
"default": "'horizontal'",
|
|
17061
|
+
"inheritedFrom": "Divider",
|
|
17062
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
17063
|
+
},
|
|
17064
|
+
{
|
|
17065
|
+
"name": "size",
|
|
17066
|
+
"type": "\"m\"",
|
|
17067
|
+
"required": false,
|
|
17068
|
+
"description": "Размер разделителя",
|
|
17069
|
+
"default": "'m'",
|
|
17070
|
+
"inheritedFrom": "Divider",
|
|
17071
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
17072
|
+
},
|
|
17073
|
+
{
|
|
17074
|
+
"name": "view",
|
|
17075
|
+
"type": "\"default\" | \"dark\" | \"light\" | \"inverse\"",
|
|
17076
|
+
"required": false,
|
|
17077
|
+
"description": "Вид разделителя",
|
|
17078
|
+
"default": "'default'",
|
|
17079
|
+
"inheritedFrom": "Divider",
|
|
17080
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
17081
|
+
}
|
|
17082
|
+
],
|
|
17083
|
+
"atomicMcpVersion": "0.360.0",
|
|
16982
17084
|
"compoundPartOf": {
|
|
16983
17085
|
"component": "ModalDF",
|
|
16984
17086
|
"part": "Divider"
|
|
@@ -16993,6 +17095,12 @@
|
|
|
16993
17095
|
"type": "usage",
|
|
16994
17096
|
"code": "<ModalDF.Divider />",
|
|
16995
17097
|
"sourceFile": "packages/storybook/src/stories/ModalDF/ModalDF.stories.tsx"
|
|
17098
|
+
},
|
|
17099
|
+
{
|
|
17100
|
+
"exportName": "Vendor",
|
|
17101
|
+
"displayName": "Ориентация разделителя",
|
|
17102
|
+
"type": "vendor",
|
|
17103
|
+
"code": "import React from 'react';\nimport { BodyS, Divider } from '@daisforge/ui';\nexport function App() {\n const Demo = ({\n orientation = 'horizontal',\n length = '100%',\n beforeText = 'Before',\n afterText = 'After',\n }) => {\n const wrapperStyle = {\n display: \"inline-flex\",\n gap: \"0.5rem\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexDirection: orientation === \"horizontal\" ? \"column\" : \"row\"\n }\n return (\n <div style={wrapperStyle}>\n <BodyS>{beforeText}</BodyS>\n <Divider orientation={orientation} length={length} />\n <BodyS>{afterText}</BodyS>\n </div>\n );\n };\n return (\n <div style={{ display: \"flex\", gap: \"2rem\" }}>\n <Demo />\n <Demo orientation=\"vertical\" />\n </div>\n );\n}"
|
|
16996
17104
|
}
|
|
16997
17105
|
]
|
|
16998
17106
|
},
|
|
@@ -17304,13 +17412,13 @@
|
|
|
17304
17412
|
},
|
|
17305
17413
|
{
|
|
17306
17414
|
"name": "view",
|
|
17307
|
-
"type": "\"clear\" | \"default\" | \"accent\" | \"positive\" | \"warning\" | \"negative\" | \"dark\" | \"secondary\" | \"black\" | \"white\"",
|
|
17415
|
+
"type": "\"clear\" | \"default\" | \"accent\" | \"positive\" | \"warning\" | \"negative\" | \"dark\" | \"secondary\" | \"black\" | \"white\" | \"gradient\"",
|
|
17308
17416
|
"required": false,
|
|
17309
17417
|
"inheritedFrom": "IconButton",
|
|
17310
17418
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
17311
17419
|
}
|
|
17312
17420
|
],
|
|
17313
|
-
"atomicMcpVersion": "0.
|
|
17421
|
+
"atomicMcpVersion": "0.360.0",
|
|
17314
17422
|
"compoundPartOf": {
|
|
17315
17423
|
"component": "ModalDF",
|
|
17316
17424
|
"part": "DotsIconButton"
|
|
@@ -17378,7 +17486,7 @@
|
|
|
17378
17486
|
],
|
|
17379
17487
|
"hasCuratedMeta": true,
|
|
17380
17488
|
"parentComponent": "ModalDF",
|
|
17381
|
-
"atomicMcpVersion": "0.
|
|
17489
|
+
"atomicMcpVersion": "0.360.0",
|
|
17382
17490
|
"compoundPartOf": {
|
|
17383
17491
|
"component": "ModalDF",
|
|
17384
17492
|
"part": "Footer"
|
|
@@ -17459,7 +17567,7 @@
|
|
|
17459
17567
|
],
|
|
17460
17568
|
"hasCuratedMeta": true,
|
|
17461
17569
|
"parentComponent": "ModalDF",
|
|
17462
|
-
"atomicMcpVersion": "0.
|
|
17570
|
+
"atomicMcpVersion": "0.360.0",
|
|
17463
17571
|
"compoundPartOf": {
|
|
17464
17572
|
"component": "ModalDF",
|
|
17465
17573
|
"part": "Header"
|
|
@@ -17509,7 +17617,7 @@
|
|
|
17509
17617
|
],
|
|
17510
17618
|
"hasCuratedMeta": true,
|
|
17511
17619
|
"parentComponent": "ModalDF",
|
|
17512
|
-
"atomicMcpVersion": "0.
|
|
17620
|
+
"atomicMcpVersion": "0.360.0",
|
|
17513
17621
|
"compoundPartOf": {
|
|
17514
17622
|
"component": "ModalDF",
|
|
17515
17623
|
"part": "ServiceButtons"
|
|
@@ -17534,12 +17642,6 @@
|
|
|
17534
17642
|
"role": "primary",
|
|
17535
17643
|
"description": "Расширенное модальное окно с compound-слотами: шапка, контент, футер, Left/Main",
|
|
17536
17644
|
"props": [
|
|
17537
|
-
{
|
|
17538
|
-
"name": "focusTrapSelectors",
|
|
17539
|
-
"type": "string[] | undefined",
|
|
17540
|
-
"required": false,
|
|
17541
|
-
"description": "Селекторы дополнительных DOM-поддеревьев, которые считаются частью модального окна для focus trap.\nИспользуется для элементов, отрисованных через Portal или вне DOM-поддерева модального окна."
|
|
17542
|
-
},
|
|
17543
17645
|
{
|
|
17544
17646
|
"name": "contentContainerProps",
|
|
17545
17647
|
"type": "Partial<ContainerProps> | undefined",
|
|
@@ -18082,6 +18184,14 @@
|
|
|
18082
18184
|
"inheritedFrom": "Modal",
|
|
18083
18185
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
18084
18186
|
},
|
|
18187
|
+
{
|
|
18188
|
+
"name": "focusTrapSelectors",
|
|
18189
|
+
"type": "string[]",
|
|
18190
|
+
"required": false,
|
|
18191
|
+
"description": "Селекторы дополнительных DOM-поддеревьев, которые считаются частью модального окна для focus trap.\nИспользуется для элементов, отрисованных через Portal или вне DOM-поддерева модального окна.",
|
|
18192
|
+
"inheritedFrom": "Modal",
|
|
18193
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
18194
|
+
},
|
|
18085
18195
|
{
|
|
18086
18196
|
"name": "frame",
|
|
18087
18197
|
"type": "string | RefObject<HTMLElement | null>",
|
|
@@ -18100,7 +18210,7 @@
|
|
|
18100
18210
|
},
|
|
18101
18211
|
{
|
|
18102
18212
|
"name": "initialFocusRef",
|
|
18103
|
-
"type": "RefObject<HTMLElement>",
|
|
18213
|
+
"type": "string | RefObject<HTMLElement>",
|
|
18104
18214
|
"required": false,
|
|
18105
18215
|
"description": "Первый элемент для фокуса внутри модального окна.",
|
|
18106
18216
|
"inheritedFrom": "Modal",
|
|
@@ -18241,6 +18351,13 @@
|
|
|
18241
18351
|
"inheritedFrom": "Modal",
|
|
18242
18352
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
18243
18353
|
},
|
|
18354
|
+
{
|
|
18355
|
+
"name": "size",
|
|
18356
|
+
"type": "string",
|
|
18357
|
+
"required": false,
|
|
18358
|
+
"inheritedFrom": "Modal",
|
|
18359
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
18360
|
+
},
|
|
18244
18361
|
{
|
|
18245
18362
|
"name": "view",
|
|
18246
18363
|
"type": "string",
|
|
@@ -18249,7 +18366,7 @@
|
|
|
18249
18366
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
18250
18367
|
}
|
|
18251
18368
|
],
|
|
18252
|
-
"atomicMcpVersion": "0.
|
|
18369
|
+
"atomicMcpVersion": "0.360.0",
|
|
18253
18370
|
"importPath": "@daisforge/ui",
|
|
18254
18371
|
"importStatement": "import { ModalDF } from '@daisforge/ui';",
|
|
18255
18372
|
"minimalUsage": "<ModalDF>\n {/* части: ModalDF.Left, ModalDF.Main, ModalDF.Header, ModalDF.Footer, ModalDF.Content, ModalDF.Divider, ModalDF.ServiceButtons, ModalDF.DotsIconButton, ModalDF.BackIconButton */}\n</ModalDF>",
|
|
@@ -18305,7 +18422,7 @@
|
|
|
18305
18422
|
],
|
|
18306
18423
|
"hasCuratedMeta": true,
|
|
18307
18424
|
"parentComponent": "ModalDF",
|
|
18308
|
-
"atomicMcpVersion": "0.
|
|
18425
|
+
"atomicMcpVersion": "0.360.0",
|
|
18309
18426
|
"compoundPartOf": {
|
|
18310
18427
|
"component": "ModalDF",
|
|
18311
18428
|
"part": "Left"
|
|
@@ -18355,7 +18472,7 @@
|
|
|
18355
18472
|
],
|
|
18356
18473
|
"hasCuratedMeta": true,
|
|
18357
18474
|
"parentComponent": "ModalDF",
|
|
18358
|
-
"atomicMcpVersion": "0.
|
|
18475
|
+
"atomicMcpVersion": "0.360.0",
|
|
18359
18476
|
"compoundPartOf": {
|
|
18360
18477
|
"component": "ModalDF",
|
|
18361
18478
|
"part": "Main"
|
|
@@ -18405,7 +18522,7 @@
|
|
|
18405
18522
|
],
|
|
18406
18523
|
"hasCuratedMeta": true,
|
|
18407
18524
|
"parentComponent": "ModalDF",
|
|
18408
|
-
"atomicMcpVersion": "0.
|
|
18525
|
+
"atomicMcpVersion": "0.360.0",
|
|
18409
18526
|
"compoundPartOf": {
|
|
18410
18527
|
"component": "ModalDF",
|
|
18411
18528
|
"part": "Content"
|
|
@@ -18449,12 +18566,6 @@
|
|
|
18449
18566
|
"required": false,
|
|
18450
18567
|
"description": "Иконка в верхней части модального окна"
|
|
18451
18568
|
},
|
|
18452
|
-
{
|
|
18453
|
-
"name": "focusTrapSelectors",
|
|
18454
|
-
"type": "string[] | undefined",
|
|
18455
|
-
"required": false,
|
|
18456
|
-
"description": "Селекторы дополнительных DOM-поддеревьев, которые считаются частью модального окна для focus trap.\nИспользуется для элементов, отрисованных через Portal или вне DOM-поддерева модального окна."
|
|
18457
|
-
},
|
|
18458
18569
|
{
|
|
18459
18570
|
"name": "contentContainerProps",
|
|
18460
18571
|
"type": "Partial<ContainerProps> | undefined",
|
|
@@ -18564,6 +18675,14 @@
|
|
|
18564
18675
|
"inheritedFrom": "Modal",
|
|
18565
18676
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
18566
18677
|
},
|
|
18678
|
+
{
|
|
18679
|
+
"name": "focusTrapSelectors",
|
|
18680
|
+
"type": "string[]",
|
|
18681
|
+
"required": false,
|
|
18682
|
+
"description": "Селекторы дополнительных DOM-поддеревьев, которые считаются частью модального окна для focus trap.\nИспользуется для элементов, отрисованных через Portal или вне DOM-поддерева модального окна.",
|
|
18683
|
+
"inheritedFrom": "Modal",
|
|
18684
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
18685
|
+
},
|
|
18567
18686
|
{
|
|
18568
18687
|
"name": "frame",
|
|
18569
18688
|
"type": "string | RefObject<HTMLElement | null>",
|
|
@@ -18582,7 +18701,7 @@
|
|
|
18582
18701
|
},
|
|
18583
18702
|
{
|
|
18584
18703
|
"name": "initialFocusRef",
|
|
18585
|
-
"type": "RefObject<HTMLElement>",
|
|
18704
|
+
"type": "string | RefObject<HTMLElement>",
|
|
18586
18705
|
"required": false,
|
|
18587
18706
|
"description": "Первый элемент для фокуса внутри модального окна.",
|
|
18588
18707
|
"inheritedFrom": "Modal",
|
|
@@ -18730,9 +18849,16 @@
|
|
|
18730
18849
|
"required": false,
|
|
18731
18850
|
"inheritedFrom": "Modal",
|
|
18732
18851
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
18852
|
+
},
|
|
18853
|
+
{
|
|
18854
|
+
"name": "size",
|
|
18855
|
+
"type": "string",
|
|
18856
|
+
"required": false,
|
|
18857
|
+
"inheritedFrom": "Modal",
|
|
18858
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
18733
18859
|
}
|
|
18734
18860
|
],
|
|
18735
|
-
"atomicMcpVersion": "0.
|
|
18861
|
+
"atomicMcpVersion": "0.360.0",
|
|
18736
18862
|
"importPath": "@daisforge/ui",
|
|
18737
18863
|
"importStatement": "import { ModalDFConfirmation } from '@daisforge/ui';",
|
|
18738
18864
|
"minimalUsage": "<ModalDFConfirmation>\n {/* части: ModalDFConfirmation.Footer */}\n</ModalDFConfirmation>",
|
|
@@ -18833,6 +18959,13 @@
|
|
|
18833
18959
|
"inheritedFrom": "Modal",
|
|
18834
18960
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
18835
18961
|
},
|
|
18962
|
+
{
|
|
18963
|
+
"name": "focusTrapSelectors",
|
|
18964
|
+
"type": "string[]",
|
|
18965
|
+
"required": false,
|
|
18966
|
+
"inheritedFrom": "Modal",
|
|
18967
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
18968
|
+
},
|
|
18836
18969
|
{
|
|
18837
18970
|
"name": "frame",
|
|
18838
18971
|
"type": "string | RefObject<HTMLElement | null>",
|
|
@@ -18856,7 +18989,7 @@
|
|
|
18856
18989
|
},
|
|
18857
18990
|
{
|
|
18858
18991
|
"name": "initialFocusRef",
|
|
18859
|
-
"type": "RefObject<HTMLElement>",
|
|
18992
|
+
"type": "string | RefObject<HTMLElement>",
|
|
18860
18993
|
"required": false,
|
|
18861
18994
|
"inheritedFrom": "Modal",
|
|
18862
18995
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
@@ -18945,6 +19078,13 @@
|
|
|
18945
19078
|
"inheritedFrom": "Modal",
|
|
18946
19079
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
18947
19080
|
},
|
|
19081
|
+
{
|
|
19082
|
+
"name": "size",
|
|
19083
|
+
"type": "string",
|
|
19084
|
+
"required": false,
|
|
19085
|
+
"inheritedFrom": "Modal",
|
|
19086
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
19087
|
+
},
|
|
18948
19088
|
{
|
|
18949
19089
|
"name": "view",
|
|
18950
19090
|
"type": "string",
|
|
@@ -18974,7 +19114,7 @@
|
|
|
18974
19114
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
18975
19115
|
}
|
|
18976
19116
|
],
|
|
18977
|
-
"atomicMcpVersion": "0.
|
|
19117
|
+
"atomicMcpVersion": "0.360.0",
|
|
18978
19118
|
"compoundPartOf": {
|
|
18979
19119
|
"component": "ModalDFConfirmation",
|
|
18980
19120
|
"part": "Footer"
|
|
@@ -18992,15 +19132,15 @@
|
|
|
18992
19132
|
},
|
|
18993
19133
|
{
|
|
18994
19134
|
"exportName": "Vendor1",
|
|
18995
|
-
"displayName": "
|
|
19135
|
+
"displayName": "FocusTrapped FocusTrapped Свойство isFocusTrapped захватывает фокус внутри одного DOM элемента. Когда свойство имеет значение true , при нажатии Tab или Shift + Tab фокус будет перемещаться только внутри модального окна.",
|
|
18996
19136
|
"type": "vendor",
|
|
18997
|
-
"code": "
|
|
19137
|
+
"code": "<Modal opened focusTrapSelectors={['#fullscreen-table', '.nested-modal']}>\n <Content />\n</Modal>"
|
|
18998
19138
|
},
|
|
18999
19139
|
{
|
|
19000
19140
|
"exportName": "Vendor2",
|
|
19001
|
-
"displayName": "
|
|
19141
|
+
"displayName": "Подключение анимации",
|
|
19002
19142
|
"type": "vendor",
|
|
19003
|
-
"code": "
|
|
19143
|
+
"code": "import styled from 'styled-components';\nimport { Modal } from '@daisforge/ui';\nconst StyledModal = styled(Modal)`\n && > .${popupClasses.root}, .${modalClasses.overlay} {\n animation: fadeIn 1s forwards;\n }\n &&.${popupClasses.endAnimation} .${popupClasses.root} {\n animation: fadeOut 1s forwards;\n }\n &&.${popupClasses.endAnimation} .${modalClasses.overlay} {\n animation: fadeOut 1s forwards;\n }\n @keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n @keyframes fadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n }\n`;"
|
|
19004
19144
|
}
|
|
19005
19145
|
]
|
|
19006
19146
|
},
|
|
@@ -19115,7 +19255,7 @@
|
|
|
19115
19255
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
19116
19256
|
}
|
|
19117
19257
|
],
|
|
19118
|
-
"atomicMcpVersion": "0.
|
|
19258
|
+
"atomicMcpVersion": "0.360.0",
|
|
19119
19259
|
"importPath": "@daisforge/ui",
|
|
19120
19260
|
"importStatement": "import { Note } from '@daisforge/ui';",
|
|
19121
19261
|
"minimalUsage": "<Note />",
|
|
@@ -19329,7 +19469,7 @@
|
|
|
19329
19469
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
19330
19470
|
}
|
|
19331
19471
|
],
|
|
19332
|
-
"atomicMcpVersion": "0.
|
|
19472
|
+
"atomicMcpVersion": "0.360.0",
|
|
19333
19473
|
"importPath": "@daisforge/ui",
|
|
19334
19474
|
"importStatement": "import { Notification } from '@daisforge/ui';",
|
|
19335
19475
|
"minimalUsage": "<Notification />",
|
|
@@ -19424,12 +19564,6 @@
|
|
|
19424
19564
|
"role": "primary",
|
|
19425
19565
|
"description": "Поле ввода с форматированием чисел (разделители, десятичные) и кнопкой очистки",
|
|
19426
19566
|
"props": [
|
|
19427
|
-
{
|
|
19428
|
-
"name": "suffix",
|
|
19429
|
-
"type": "string | undefined",
|
|
19430
|
-
"required": false,
|
|
19431
|
-
"description": "Суффикс текста в поле ввода."
|
|
19432
|
-
},
|
|
19433
19567
|
{
|
|
19434
19568
|
"name": "onClear",
|
|
19435
19569
|
"type": "(() => void) | undefined",
|
|
@@ -19571,6 +19705,14 @@
|
|
|
19571
19705
|
"inheritedFrom": "NumberFormat",
|
|
19572
19706
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
19573
19707
|
},
|
|
19708
|
+
{
|
|
19709
|
+
"name": "suffix",
|
|
19710
|
+
"type": "string",
|
|
19711
|
+
"required": false,
|
|
19712
|
+
"description": "Суффикс текста в поле ввода.",
|
|
19713
|
+
"inheritedFrom": "NumberFormat",
|
|
19714
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
19715
|
+
},
|
|
19574
19716
|
{
|
|
19575
19717
|
"name": "thousandSeparator",
|
|
19576
19718
|
"type": "string | boolean",
|
|
@@ -19784,6 +19926,13 @@
|
|
|
19784
19926
|
"inheritedFrom": "NumberFormat",
|
|
19785
19927
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
19786
19928
|
},
|
|
19929
|
+
{
|
|
19930
|
+
"name": "prefix",
|
|
19931
|
+
"type": "string",
|
|
19932
|
+
"required": false,
|
|
19933
|
+
"inheritedFrom": "NumberFormat",
|
|
19934
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
19935
|
+
},
|
|
19787
19936
|
{
|
|
19788
19937
|
"name": "rightHelper",
|
|
19789
19938
|
"type": "ReactNode",
|
|
@@ -19835,7 +19984,7 @@
|
|
|
19835
19984
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
19836
19985
|
}
|
|
19837
19986
|
],
|
|
19838
|
-
"atomicMcpVersion": "0.
|
|
19987
|
+
"atomicMcpVersion": "0.360.0",
|
|
19839
19988
|
"importPath": "@daisforge/ui",
|
|
19840
19989
|
"importStatement": "import { NumberFormat } from '@daisforge/ui';",
|
|
19841
19990
|
"minimalUsage": "<NumberFormat />",
|
|
@@ -20200,7 +20349,7 @@
|
|
|
20200
20349
|
}
|
|
20201
20350
|
],
|
|
20202
20351
|
"hasCuratedMeta": true,
|
|
20203
|
-
"atomicMcpVersion": "0.
|
|
20352
|
+
"atomicMcpVersion": "0.360.0",
|
|
20204
20353
|
"importPath": "@daisforge/ui",
|
|
20205
20354
|
"importStatement": "import { NumberFormatAmount } from '@daisforge/ui';",
|
|
20206
20355
|
"minimalUsage": "<NumberFormatAmount />",
|
|
@@ -20239,60 +20388,6 @@
|
|
|
20239
20388
|
"role": "primary",
|
|
20240
20389
|
"description": "Числовое поле со стрелками инкремента/декремента и ограничением min/max",
|
|
20241
20390
|
"props": [
|
|
20242
|
-
{
|
|
20243
|
-
"name": "allowLeadingZeros",
|
|
20244
|
-
"type": "boolean | undefined",
|
|
20245
|
-
"required": false,
|
|
20246
|
-
"description": ""
|
|
20247
|
-
},
|
|
20248
|
-
{
|
|
20249
|
-
"name": "allowNegative",
|
|
20250
|
-
"type": "boolean | undefined",
|
|
20251
|
-
"required": false,
|
|
20252
|
-
"description": ""
|
|
20253
|
-
},
|
|
20254
|
-
{
|
|
20255
|
-
"name": "decimalScale",
|
|
20256
|
-
"type": "number | undefined",
|
|
20257
|
-
"required": false,
|
|
20258
|
-
"description": ""
|
|
20259
|
-
},
|
|
20260
|
-
{
|
|
20261
|
-
"name": "decimalSeparator",
|
|
20262
|
-
"type": "string | undefined",
|
|
20263
|
-
"required": false,
|
|
20264
|
-
"description": ""
|
|
20265
|
-
},
|
|
20266
|
-
{
|
|
20267
|
-
"name": "defaultValue",
|
|
20268
|
-
"type": "string | number | undefined",
|
|
20269
|
-
"required": false,
|
|
20270
|
-
"description": ""
|
|
20271
|
-
},
|
|
20272
|
-
{
|
|
20273
|
-
"name": "fixedDecimalScale",
|
|
20274
|
-
"type": "boolean | undefined",
|
|
20275
|
-
"required": false,
|
|
20276
|
-
"description": ""
|
|
20277
|
-
},
|
|
20278
|
-
{
|
|
20279
|
-
"name": "isAllowed",
|
|
20280
|
-
"type": "((values: NumberFormatValues) => boolean) | ((values: NumberFormatValues) => boolean) | undefined",
|
|
20281
|
-
"required": false,
|
|
20282
|
-
"description": ""
|
|
20283
|
-
},
|
|
20284
|
-
{
|
|
20285
|
-
"name": "thousandSeparator",
|
|
20286
|
-
"type": "string | boolean | undefined",
|
|
20287
|
-
"required": false,
|
|
20288
|
-
"description": ""
|
|
20289
|
-
},
|
|
20290
|
-
{
|
|
20291
|
-
"name": "thousandsGroupStyle",
|
|
20292
|
-
"type": "\"none\" | \"thousand\" | \"lakh\" | \"wan\" | undefined",
|
|
20293
|
-
"required": false,
|
|
20294
|
-
"description": ""
|
|
20295
|
-
},
|
|
20296
20391
|
{
|
|
20297
20392
|
"name": "autoComplete",
|
|
20298
20393
|
"type": "React.HTMLInputAutoCompleteAttribute | undefined",
|
|
@@ -20318,6 +20413,20 @@
|
|
|
20318
20413
|
],
|
|
20319
20414
|
"hasCuratedMeta": true,
|
|
20320
20415
|
"inheritedProps": [
|
|
20416
|
+
{
|
|
20417
|
+
"name": "allowLeadingZeros",
|
|
20418
|
+
"type": "boolean",
|
|
20419
|
+
"required": false,
|
|
20420
|
+
"inheritedFrom": "NumberInput",
|
|
20421
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
20422
|
+
},
|
|
20423
|
+
{
|
|
20424
|
+
"name": "allowNegative",
|
|
20425
|
+
"type": "boolean",
|
|
20426
|
+
"required": false,
|
|
20427
|
+
"inheritedFrom": "NumberInput",
|
|
20428
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
20429
|
+
},
|
|
20321
20430
|
{
|
|
20322
20431
|
"name": "clear",
|
|
20323
20432
|
"type": "boolean",
|
|
@@ -20339,6 +20448,20 @@
|
|
|
20339
20448
|
"inheritedFrom": "NumberInput",
|
|
20340
20449
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
20341
20450
|
},
|
|
20451
|
+
{
|
|
20452
|
+
"name": "decimalScale",
|
|
20453
|
+
"type": "number",
|
|
20454
|
+
"required": false,
|
|
20455
|
+
"inheritedFrom": "NumberInput",
|
|
20456
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
20457
|
+
},
|
|
20458
|
+
{
|
|
20459
|
+
"name": "decimalSeparator",
|
|
20460
|
+
"type": "string",
|
|
20461
|
+
"required": false,
|
|
20462
|
+
"inheritedFrom": "NumberInput",
|
|
20463
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
20464
|
+
},
|
|
20342
20465
|
{
|
|
20343
20466
|
"name": "decrementIcon",
|
|
20344
20467
|
"type": "ReactNode",
|
|
@@ -20346,6 +20469,13 @@
|
|
|
20346
20469
|
"inheritedFrom": "NumberInput",
|
|
20347
20470
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
20348
20471
|
},
|
|
20472
|
+
{
|
|
20473
|
+
"name": "defaultValue",
|
|
20474
|
+
"type": "string | number",
|
|
20475
|
+
"required": false,
|
|
20476
|
+
"inheritedFrom": "NumberInput",
|
|
20477
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
20478
|
+
},
|
|
20349
20479
|
{
|
|
20350
20480
|
"name": "disabled",
|
|
20351
20481
|
"type": "boolean",
|
|
@@ -20360,6 +20490,13 @@
|
|
|
20360
20490
|
"inheritedFrom": "NumberInput",
|
|
20361
20491
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
20362
20492
|
},
|
|
20493
|
+
{
|
|
20494
|
+
"name": "fixedDecimalScale",
|
|
20495
|
+
"type": "boolean",
|
|
20496
|
+
"required": false,
|
|
20497
|
+
"inheritedFrom": "NumberInput",
|
|
20498
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
20499
|
+
},
|
|
20363
20500
|
{
|
|
20364
20501
|
"name": "incrementIcon",
|
|
20365
20502
|
"type": "ReactNode",
|
|
@@ -20374,6 +20511,13 @@
|
|
|
20374
20511
|
"inheritedFrom": "NumberInput",
|
|
20375
20512
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
20376
20513
|
},
|
|
20514
|
+
{
|
|
20515
|
+
"name": "isAllowed",
|
|
20516
|
+
"type": "((values: NumberFormatValues) => boolean)",
|
|
20517
|
+
"required": false,
|
|
20518
|
+
"inheritedFrom": "NumberInput",
|
|
20519
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
20520
|
+
},
|
|
20377
20521
|
{
|
|
20378
20522
|
"name": "isLoading",
|
|
20379
20523
|
"type": "boolean",
|
|
@@ -20486,6 +20630,20 @@
|
|
|
20486
20630
|
"inheritedFrom": "NumberInput",
|
|
20487
20631
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
20488
20632
|
},
|
|
20633
|
+
{
|
|
20634
|
+
"name": "thousandSeparator",
|
|
20635
|
+
"type": "string | boolean",
|
|
20636
|
+
"required": false,
|
|
20637
|
+
"inheritedFrom": "NumberInput",
|
|
20638
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
20639
|
+
},
|
|
20640
|
+
{
|
|
20641
|
+
"name": "thousandsGroupStyle",
|
|
20642
|
+
"type": "\"none\" | \"thousand\" | \"lakh\" | \"wan\"",
|
|
20643
|
+
"required": false,
|
|
20644
|
+
"inheritedFrom": "NumberInput",
|
|
20645
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
20646
|
+
},
|
|
20489
20647
|
{
|
|
20490
20648
|
"name": "value",
|
|
20491
20649
|
"type": "string | number",
|
|
@@ -20501,7 +20659,7 @@
|
|
|
20501
20659
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
20502
20660
|
}
|
|
20503
20661
|
],
|
|
20504
|
-
"atomicMcpVersion": "0.
|
|
20662
|
+
"atomicMcpVersion": "0.360.0",
|
|
20505
20663
|
"importPath": "@daisforge/ui",
|
|
20506
20664
|
"importStatement": "import { NumberInput } from '@daisforge/ui';",
|
|
20507
20665
|
"minimalUsage": "<NumberInput />",
|
|
@@ -20575,7 +20733,7 @@
|
|
|
20575
20733
|
"оверлей под модалкой"
|
|
20576
20734
|
],
|
|
20577
20735
|
"hasCuratedMeta": true,
|
|
20578
|
-
"atomicMcpVersion": "0.
|
|
20736
|
+
"atomicMcpVersion": "0.360.0",
|
|
20579
20737
|
"importPath": "@daisforge/ui",
|
|
20580
20738
|
"importStatement": "import { Overlay } from '@daisforge/ui';",
|
|
20581
20739
|
"minimalUsage": "<Overlay backgroundColorProperty={'значение'} zIndex={'значение'} />",
|
|
@@ -20689,7 +20847,7 @@
|
|
|
20689
20847
|
}
|
|
20690
20848
|
],
|
|
20691
20849
|
"hasCuratedMeta": true,
|
|
20692
|
-
"atomicMcpVersion": "0.
|
|
20850
|
+
"atomicMcpVersion": "0.360.0",
|
|
20693
20851
|
"importPath": "@daisforge/ui",
|
|
20694
20852
|
"importStatement": "import { PageTitle } from '@daisforge/ui';",
|
|
20695
20853
|
"minimalUsage": "<PageTitle />",
|
|
@@ -20986,7 +21144,7 @@
|
|
|
20986
21144
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
20987
21145
|
}
|
|
20988
21146
|
],
|
|
20989
|
-
"atomicMcpVersion": "0.
|
|
21147
|
+
"atomicMcpVersion": "0.360.0",
|
|
20990
21148
|
"importPath": "@daisforge/ui",
|
|
20991
21149
|
"importStatement": "import { Pagination } from '@daisforge/ui';",
|
|
20992
21150
|
"minimalUsage": "<Pagination />",
|
|
@@ -21011,14 +21169,7 @@
|
|
|
21011
21169
|
"folderName": "Popover",
|
|
21012
21170
|
"role": "primary",
|
|
21013
21171
|
"description": "Всплывающая панель у элемента-триггера для доп. контента, меню или подсказок",
|
|
21014
|
-
"props": [
|
|
21015
|
-
{
|
|
21016
|
-
"name": "stretchHeight",
|
|
21017
|
-
"type": "boolean | undefined",
|
|
21018
|
-
"required": false,
|
|
21019
|
-
"description": "Растянуть Popover до границы доступной области по вертикали."
|
|
21020
|
-
}
|
|
21021
|
-
],
|
|
21172
|
+
"props": [],
|
|
21022
21173
|
"propsTypeName": "PopoverProps",
|
|
21023
21174
|
"sourceFile": "node_modules/@salutejs/sdds-finai/types/components/Popover/Popover.d.ts",
|
|
21024
21175
|
"type": "wrapper",
|
|
@@ -21148,6 +21299,14 @@
|
|
|
21148
21299
|
"inheritedFrom": "Popover",
|
|
21149
21300
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
21150
21301
|
},
|
|
21302
|
+
{
|
|
21303
|
+
"name": "stretchHeight",
|
|
21304
|
+
"type": "boolean",
|
|
21305
|
+
"required": false,
|
|
21306
|
+
"description": "Растянуть Popover до границы доступной области по вертикали.",
|
|
21307
|
+
"inheritedFrom": "Popover",
|
|
21308
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
21309
|
+
},
|
|
21151
21310
|
{
|
|
21152
21311
|
"name": "target",
|
|
21153
21312
|
"type": "string | number | boolean | ReactElement<any, string | JSXElementConstructor<any>> | ReactFragment | ReactPortal | ((instance: HTMLElement | null) => void) | RefObject<...> | null",
|
|
@@ -21197,7 +21356,7 @@
|
|
|
21197
21356
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
21198
21357
|
}
|
|
21199
21358
|
],
|
|
21200
|
-
"atomicMcpVersion": "0.
|
|
21359
|
+
"atomicMcpVersion": "0.360.0",
|
|
21201
21360
|
"importPath": "@daisforge/ui",
|
|
21202
21361
|
"importStatement": "import { Popover } from '@daisforge/ui';",
|
|
21203
21362
|
"minimalUsage": "<Popover />",
|
|
@@ -21377,7 +21536,7 @@
|
|
|
21377
21536
|
"chooseWhen": "Новая проработанная версия — нужен изменяемый размер попапа, явный выбор триггера (hover/click/focus) или рендер в портал — иначе берите стабильный Popover.",
|
|
21378
21537
|
"hasCuratedMeta": true,
|
|
21379
21538
|
"inheritedProps": [],
|
|
21380
|
-
"atomicMcpVersion": "0.
|
|
21539
|
+
"atomicMcpVersion": "0.360.0",
|
|
21381
21540
|
"importPath": "@daisforge/ui",
|
|
21382
21541
|
"importStatement": "import { PopoverBeta } from '@daisforge/ui';",
|
|
21383
21542
|
"minimalUsage": "<PopoverBeta target={'Контент'} />",
|
|
@@ -21674,7 +21833,7 @@
|
|
|
21674
21833
|
],
|
|
21675
21834
|
"hasCuratedMeta": true,
|
|
21676
21835
|
"parentComponent": "PopoverDF",
|
|
21677
|
-
"atomicMcpVersion": "0.
|
|
21836
|
+
"atomicMcpVersion": "0.360.0",
|
|
21678
21837
|
"compoundPartOf": {
|
|
21679
21838
|
"component": "PopoverDF",
|
|
21680
21839
|
"part": "Body"
|
|
@@ -21982,7 +22141,7 @@
|
|
|
21982
22141
|
],
|
|
21983
22142
|
"hasCuratedMeta": true,
|
|
21984
22143
|
"parentComponent": "PopoverDF",
|
|
21985
|
-
"atomicMcpVersion": "0.
|
|
22144
|
+
"atomicMcpVersion": "0.360.0",
|
|
21986
22145
|
"compoundPartOf": {
|
|
21987
22146
|
"component": "PopoverDF",
|
|
21988
22147
|
"part": "Footer"
|
|
@@ -22057,7 +22216,7 @@
|
|
|
22057
22216
|
],
|
|
22058
22217
|
"hasCuratedMeta": true,
|
|
22059
22218
|
"parentComponent": "PopoverDF",
|
|
22060
|
-
"atomicMcpVersion": "0.
|
|
22219
|
+
"atomicMcpVersion": "0.360.0",
|
|
22061
22220
|
"compoundPartOf": {
|
|
22062
22221
|
"component": "PopoverDF",
|
|
22063
22222
|
"part": "Header"
|
|
@@ -22841,7 +23000,7 @@
|
|
|
22841
23000
|
"PopoverDFFooter",
|
|
22842
23001
|
"PopoverDFHeader"
|
|
22843
23002
|
],
|
|
22844
|
-
"atomicMcpVersion": "0.
|
|
23003
|
+
"atomicMcpVersion": "0.360.0",
|
|
22845
23004
|
"importPath": "@daisforge/ui",
|
|
22846
23005
|
"importStatement": "import { PopoverDF } from '@daisforge/ui';",
|
|
22847
23006
|
"minimalUsage": "<PopoverDF target={'Контент'}>\n {/* части: PopoverDF.Header, PopoverDF.Body, PopoverDF.Footer */}\n</PopoverDF>",
|
|
@@ -22903,7 +23062,7 @@
|
|
|
22903
23062
|
"provider для окна"
|
|
22904
23063
|
],
|
|
22905
23064
|
"hasCuratedMeta": true,
|
|
22906
|
-
"atomicMcpVersion": "0.
|
|
23065
|
+
"atomicMcpVersion": "0.360.0",
|
|
22907
23066
|
"importPath": "@daisforge/ui",
|
|
22908
23067
|
"importStatement": "import { PopupProvider } from '@daisforge/ui';",
|
|
22909
23068
|
"minimalUsage": "<PopupProvider />",
|
|
@@ -23059,7 +23218,7 @@
|
|
|
23059
23218
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
23060
23219
|
}
|
|
23061
23220
|
],
|
|
23062
|
-
"atomicMcpVersion": "0.
|
|
23221
|
+
"atomicMcpVersion": "0.360.0",
|
|
23063
23222
|
"importPath": "@daisforge/ui",
|
|
23064
23223
|
"importStatement": "import { Popup } from '@daisforge/ui';",
|
|
23065
23224
|
"minimalUsage": "<Popup />",
|
|
@@ -23361,7 +23520,7 @@
|
|
|
23361
23520
|
],
|
|
23362
23521
|
"hasCuratedMeta": true,
|
|
23363
23522
|
"parentComponent": "PopupDF",
|
|
23364
|
-
"atomicMcpVersion": "0.
|
|
23523
|
+
"atomicMcpVersion": "0.360.0",
|
|
23365
23524
|
"compoundPartOf": {
|
|
23366
23525
|
"component": "PopupDF",
|
|
23367
23526
|
"part": "Body"
|
|
@@ -23669,7 +23828,7 @@
|
|
|
23669
23828
|
],
|
|
23670
23829
|
"hasCuratedMeta": true,
|
|
23671
23830
|
"parentComponent": "PopupDF",
|
|
23672
|
-
"atomicMcpVersion": "0.
|
|
23831
|
+
"atomicMcpVersion": "0.360.0",
|
|
23673
23832
|
"compoundPartOf": {
|
|
23674
23833
|
"component": "PopupDF",
|
|
23675
23834
|
"part": "Footer"
|
|
@@ -23756,7 +23915,7 @@
|
|
|
23756
23915
|
],
|
|
23757
23916
|
"hasCuratedMeta": true,
|
|
23758
23917
|
"parentComponent": "PopupDF",
|
|
23759
|
-
"atomicMcpVersion": "0.
|
|
23918
|
+
"atomicMcpVersion": "0.360.0",
|
|
23760
23919
|
"compoundPartOf": {
|
|
23761
23920
|
"component": "PopupDF",
|
|
23762
23921
|
"part": "Header"
|
|
@@ -24504,7 +24663,7 @@
|
|
|
24504
24663
|
"PopupDFFooter",
|
|
24505
24664
|
"PopupDFHeader"
|
|
24506
24665
|
],
|
|
24507
|
-
"atomicMcpVersion": "0.
|
|
24666
|
+
"atomicMcpVersion": "0.360.0",
|
|
24508
24667
|
"importPath": "@daisforge/ui",
|
|
24509
24668
|
"importStatement": "import { PopupDF } from '@daisforge/ui';",
|
|
24510
24669
|
"minimalUsage": "<PopupDF>\n {/* части: PopupDF.Header, PopupDF.Body, PopupDF.Footer */}\n</PopupDF>",
|
|
@@ -24560,7 +24719,7 @@
|
|
|
24560
24719
|
"рендер вне дерева"
|
|
24561
24720
|
],
|
|
24562
24721
|
"hasCuratedMeta": true,
|
|
24563
|
-
"atomicMcpVersion": "0.
|
|
24722
|
+
"atomicMcpVersion": "0.360.0",
|
|
24564
24723
|
"importPath": "@daisforge/ui",
|
|
24565
24724
|
"importStatement": "import { Portal } from '@daisforge/ui';",
|
|
24566
24725
|
"minimalUsage": "<Portal />",
|
|
@@ -24661,7 +24820,7 @@
|
|
|
24661
24820
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
24662
24821
|
}
|
|
24663
24822
|
],
|
|
24664
|
-
"atomicMcpVersion": "0.
|
|
24823
|
+
"atomicMcpVersion": "0.360.0",
|
|
24665
24824
|
"importPath": "@daisforge/ui",
|
|
24666
24825
|
"importStatement": "import { Price } from '@daisforge/ui';",
|
|
24667
24826
|
"minimalUsage": "<Price children={0} />",
|
|
@@ -24812,7 +24971,7 @@
|
|
|
24812
24971
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
24813
24972
|
}
|
|
24814
24973
|
],
|
|
24815
|
-
"atomicMcpVersion": "0.
|
|
24974
|
+
"atomicMcpVersion": "0.360.0",
|
|
24816
24975
|
"importPath": "@daisforge/ui",
|
|
24817
24976
|
"importStatement": "import { Progress } from '@daisforge/ui';",
|
|
24818
24977
|
"minimalUsage": "<Progress value={0} />",
|
|
@@ -24910,7 +25069,7 @@
|
|
|
24910
25069
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
24911
25070
|
}
|
|
24912
25071
|
],
|
|
24913
|
-
"atomicMcpVersion": "0.
|
|
25072
|
+
"atomicMcpVersion": "0.360.0",
|
|
24914
25073
|
"importPath": "@daisforge/ui",
|
|
24915
25074
|
"importStatement": "import { ProgressBarCircular } from '@daisforge/ui';",
|
|
24916
25075
|
"minimalUsage": "<ProgressBarCircular />",
|
|
@@ -25118,7 +25277,7 @@
|
|
|
25118
25277
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
25119
25278
|
}
|
|
25120
25279
|
],
|
|
25121
|
-
"atomicMcpVersion": "0.
|
|
25280
|
+
"atomicMcpVersion": "0.360.0",
|
|
25122
25281
|
"importPath": "@daisforge/ui",
|
|
25123
25282
|
"importStatement": "import { Radiobox } from '@daisforge/ui';",
|
|
25124
25283
|
"minimalUsage": "<Radiobox />",
|
|
@@ -25155,7 +25314,7 @@
|
|
|
25155
25314
|
],
|
|
25156
25315
|
"chooseWhen": "Вне react-hook-form — группа радиокнопок с value/onChange напрямую.",
|
|
25157
25316
|
"hasCuratedMeta": true,
|
|
25158
|
-
"atomicMcpVersion": "0.
|
|
25317
|
+
"atomicMcpVersion": "0.360.0",
|
|
25159
25318
|
"importPath": "@daisforge/ui",
|
|
25160
25319
|
"importStatement": "import { RadioGroup } from '@daisforge/ui';",
|
|
25161
25320
|
"minimalUsage": "<RadioGroup />",
|
|
@@ -25175,29 +25334,11 @@
|
|
|
25175
25334
|
"description": "Стиль для UI конфигурации\nВлияет на выбор предустановленого набора токенов",
|
|
25176
25335
|
"default": "default"
|
|
25177
25336
|
},
|
|
25178
|
-
{
|
|
25179
|
-
"name": "firstTextfieldInputWrapperRef",
|
|
25180
|
-
"type": "React.Ref<HTMLDivElement> | undefined",
|
|
25181
|
-
"required": false,
|
|
25182
|
-
"description": "Ссылка на обертку первого поля ввода"
|
|
25183
|
-
},
|
|
25184
25337
|
{
|
|
25185
25338
|
"name": "hasClearDivider",
|
|
25186
25339
|
"type": "boolean | undefined",
|
|
25187
25340
|
"required": false,
|
|
25188
25341
|
"description": "Отображение разделителя для `appearance='clear'`"
|
|
25189
|
-
},
|
|
25190
|
-
{
|
|
25191
|
-
"name": "inputWrapperRef",
|
|
25192
|
-
"type": "React.Ref<HTMLDivElement> | undefined",
|
|
25193
|
-
"required": false,
|
|
25194
|
-
"description": "Ссылка на обертку полей ввода"
|
|
25195
|
-
},
|
|
25196
|
-
{
|
|
25197
|
-
"name": "secondTextfieldInputWrapperRef",
|
|
25198
|
-
"type": "React.Ref<HTMLDivElement> | undefined",
|
|
25199
|
-
"required": false,
|
|
25200
|
-
"description": "Ссылка на обертку второго поля ввода"
|
|
25201
25342
|
}
|
|
25202
25343
|
],
|
|
25203
25344
|
"propsTypeName": "RangeProps",
|
|
@@ -25252,6 +25393,14 @@
|
|
|
25252
25393
|
"inheritedFrom": "Range",
|
|
25253
25394
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
25254
25395
|
},
|
|
25396
|
+
{
|
|
25397
|
+
"name": "firstTextfieldInputWrapperRef",
|
|
25398
|
+
"type": "Ref<HTMLDivElement>",
|
|
25399
|
+
"required": false,
|
|
25400
|
+
"description": "Ссылка на обертку первого поля ввода",
|
|
25401
|
+
"inheritedFrom": "Range",
|
|
25402
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
25403
|
+
},
|
|
25255
25404
|
{
|
|
25256
25405
|
"name": "firstTextfieldTextAfter",
|
|
25257
25406
|
"type": "string",
|
|
@@ -25391,6 +25540,14 @@
|
|
|
25391
25540
|
"inheritedFrom": "Range",
|
|
25392
25541
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
25393
25542
|
},
|
|
25543
|
+
{
|
|
25544
|
+
"name": "inputWrapperRef",
|
|
25545
|
+
"type": "Ref<HTMLDivElement>",
|
|
25546
|
+
"required": false,
|
|
25547
|
+
"description": "Ссылка на обертку полей ввода",
|
|
25548
|
+
"inheritedFrom": "Range",
|
|
25549
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
25550
|
+
},
|
|
25394
25551
|
{
|
|
25395
25552
|
"name": "leftHelper",
|
|
25396
25553
|
"type": "string",
|
|
@@ -25496,6 +25653,14 @@
|
|
|
25496
25653
|
"inheritedFrom": "Range",
|
|
25497
25654
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
25498
25655
|
},
|
|
25656
|
+
{
|
|
25657
|
+
"name": "secondTextfieldInputWrapperRef",
|
|
25658
|
+
"type": "Ref<HTMLDivElement>",
|
|
25659
|
+
"required": false,
|
|
25660
|
+
"description": "Ссылка на обертку второго поля ввода",
|
|
25661
|
+
"inheritedFrom": "Range",
|
|
25662
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
25663
|
+
},
|
|
25499
25664
|
{
|
|
25500
25665
|
"name": "secondTextfieldTextAfter",
|
|
25501
25666
|
"type": "string",
|
|
@@ -25624,7 +25789,7 @@
|
|
|
25624
25789
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
25625
25790
|
}
|
|
25626
25791
|
],
|
|
25627
|
-
"atomicMcpVersion": "0.
|
|
25792
|
+
"atomicMcpVersion": "0.360.0",
|
|
25628
25793
|
"importPath": "@daisforge/ui",
|
|
25629
25794
|
"importStatement": "import { Range } from '@daisforge/ui';",
|
|
25630
25795
|
"minimalUsage": "<Range />",
|
|
@@ -25761,7 +25926,7 @@
|
|
|
25761
25926
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
25762
25927
|
}
|
|
25763
25928
|
],
|
|
25764
|
-
"atomicMcpVersion": "0.
|
|
25929
|
+
"atomicMcpVersion": "0.360.0",
|
|
25765
25930
|
"importPath": "@daisforge/ui",
|
|
25766
25931
|
"importStatement": "import { Rating } from '@daisforge/ui';",
|
|
25767
25932
|
"minimalUsage": "<Rating />",
|
|
@@ -25796,7 +25961,7 @@
|
|
|
25796
25961
|
"скринридер"
|
|
25797
25962
|
],
|
|
25798
25963
|
"hasCuratedMeta": true,
|
|
25799
|
-
"atomicMcpVersion": "0.
|
|
25964
|
+
"atomicMcpVersion": "0.360.0",
|
|
25800
25965
|
"importPath": "@daisforge/ui",
|
|
25801
25966
|
"importStatement": "import { SSRProvider } from '@daisforge/ui';",
|
|
25802
25967
|
"minimalUsage": "<SSRProvider />",
|
|
@@ -25927,7 +26092,7 @@
|
|
|
25927
26092
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
25928
26093
|
}
|
|
25929
26094
|
],
|
|
25930
|
-
"atomicMcpVersion": "0.
|
|
26095
|
+
"atomicMcpVersion": "0.360.0",
|
|
25931
26096
|
"importPath": "@daisforge/ui",
|
|
25932
26097
|
"importStatement": "import { SegmentGroup } from '@daisforge/ui';",
|
|
25933
26098
|
"minimalUsage": "<SegmentGroup />",
|
|
@@ -26190,7 +26355,7 @@
|
|
|
26190
26355
|
"состояние выбора вкладки"
|
|
26191
26356
|
],
|
|
26192
26357
|
"hasCuratedMeta": true,
|
|
26193
|
-
"atomicMcpVersion": "0.
|
|
26358
|
+
"atomicMcpVersion": "0.360.0",
|
|
26194
26359
|
"importPath": "@daisforge/ui",
|
|
26195
26360
|
"importStatement": "import { SegmentProvider } from '@daisforge/ui';",
|
|
26196
26361
|
"minimalUsage": "<SegmentProvider />",
|
|
@@ -26777,7 +26942,7 @@
|
|
|
26777
26942
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
26778
26943
|
}
|
|
26779
26944
|
],
|
|
26780
|
-
"atomicMcpVersion": "0.
|
|
26945
|
+
"atomicMcpVersion": "0.360.0",
|
|
26781
26946
|
"importPath": "@daisforge/ui",
|
|
26782
26947
|
"importStatement": "import { Select } from '@daisforge/ui';",
|
|
26783
26948
|
"minimalUsage": "<Select items={[]} />",
|
|
@@ -26816,45 +26981,7 @@
|
|
|
26816
26981
|
"folderName": "Sheet",
|
|
26817
26982
|
"role": "primary",
|
|
26818
26983
|
"description": "Шторка (bottom sheet), выезжающая поверх экрана снизу с шапкой и футером",
|
|
26819
|
-
"props": [
|
|
26820
|
-
{
|
|
26821
|
-
"name": "closeOnEsc",
|
|
26822
|
-
"type": "boolean | undefined",
|
|
26823
|
-
"required": false,
|
|
26824
|
-
"description": "Закрывать шторку при нажатии на ESC.",
|
|
26825
|
-
"default": "true"
|
|
26826
|
-
},
|
|
26827
|
-
{
|
|
26828
|
-
"name": "initialSnapPoint",
|
|
26829
|
-
"type": "string | undefined",
|
|
26830
|
-
"required": false,
|
|
26831
|
-
"description": "Начальная точка остановки.\nПо умолчанию — первая из `snapPoints`."
|
|
26832
|
-
},
|
|
26833
|
-
{
|
|
26834
|
-
"name": "onEscKeyDown",
|
|
26835
|
-
"type": "((event: KeyboardEvent) => void) | undefined",
|
|
26836
|
-
"required": false,
|
|
26837
|
-
"description": "Обработчик нажатия ESC (если не передан, используется onClose)."
|
|
26838
|
-
},
|
|
26839
|
-
{
|
|
26840
|
-
"name": "onOverlayClick",
|
|
26841
|
-
"type": "((event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void) | undefined",
|
|
26842
|
-
"required": false,
|
|
26843
|
-
"description": "Обработчик клика по оверлею (если не передан, используется onClose)."
|
|
26844
|
-
},
|
|
26845
|
-
{
|
|
26846
|
-
"name": "onSnapPointChange",
|
|
26847
|
-
"type": "((snapPoint: string) => void) | undefined",
|
|
26848
|
-
"required": false,
|
|
26849
|
-
"description": "Обработчик смены активной точки остановки."
|
|
26850
|
-
},
|
|
26851
|
-
{
|
|
26852
|
-
"name": "snapPoints",
|
|
26853
|
-
"type": "SheetSnapPoints | undefined",
|
|
26854
|
-
"required": false,
|
|
26855
|
-
"description": "Точки остановки шторки.\nCSS-размеры: '320px', '50%', '40dvh'.\nЕсли не передано или массив пуст — snap-points отключены."
|
|
26856
|
-
}
|
|
26857
|
-
],
|
|
26984
|
+
"props": [],
|
|
26858
26985
|
"propsTypeName": "SheetProps",
|
|
26859
26986
|
"sourceFile": "node_modules/@salutejs/sdds-finai/types/components/Sheet/Sheet.d.ts",
|
|
26860
26987
|
"type": "wrapper",
|
|
@@ -26875,6 +27002,15 @@
|
|
|
26875
27002
|
"inheritedFrom": "Sheet",
|
|
26876
27003
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
26877
27004
|
},
|
|
27005
|
+
{
|
|
27006
|
+
"name": "closeOnEsc",
|
|
27007
|
+
"type": "boolean",
|
|
27008
|
+
"required": false,
|
|
27009
|
+
"description": "Закрывать шторку при нажатии на ESC.",
|
|
27010
|
+
"default": "true",
|
|
27011
|
+
"inheritedFrom": "Sheet",
|
|
27012
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
27013
|
+
},
|
|
26878
27014
|
{
|
|
26879
27015
|
"name": "contentFooter",
|
|
26880
27016
|
"type": "ReactNode",
|
|
@@ -26917,6 +27053,14 @@
|
|
|
26917
27053
|
"inheritedFrom": "Sheet",
|
|
26918
27054
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
26919
27055
|
},
|
|
27056
|
+
{
|
|
27057
|
+
"name": "initialSnapPoint",
|
|
27058
|
+
"type": "string",
|
|
27059
|
+
"required": false,
|
|
27060
|
+
"description": "Начальная точка остановки.\nПо умолчанию — первая из `snapPoints`.",
|
|
27061
|
+
"inheritedFrom": "Sheet",
|
|
27062
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
27063
|
+
},
|
|
26920
27064
|
{
|
|
26921
27065
|
"name": "isFooterFixed",
|
|
26922
27066
|
"type": "boolean",
|
|
@@ -26935,6 +27079,30 @@
|
|
|
26935
27079
|
"inheritedFrom": "Sheet",
|
|
26936
27080
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
26937
27081
|
},
|
|
27082
|
+
{
|
|
27083
|
+
"name": "onEscKeyDown",
|
|
27084
|
+
"type": "((event: KeyboardEvent) => void)",
|
|
27085
|
+
"required": false,
|
|
27086
|
+
"description": "Обработчик нажатия ESC (если не передан, используется onClose).",
|
|
27087
|
+
"inheritedFrom": "Sheet",
|
|
27088
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
27089
|
+
},
|
|
27090
|
+
{
|
|
27091
|
+
"name": "onOverlayClick",
|
|
27092
|
+
"type": "((event: MouseEvent<HTMLDivElement, MouseEvent>) => void)",
|
|
27093
|
+
"required": false,
|
|
27094
|
+
"description": "Обработчик клика по оверлею (если не передан, используется onClose).",
|
|
27095
|
+
"inheritedFrom": "Sheet",
|
|
27096
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
27097
|
+
},
|
|
27098
|
+
{
|
|
27099
|
+
"name": "onSnapPointChange",
|
|
27100
|
+
"type": "((snapPoint: string) => void)",
|
|
27101
|
+
"required": false,
|
|
27102
|
+
"description": "Обработчик смены активной точки остановки.",
|
|
27103
|
+
"inheritedFrom": "Sheet",
|
|
27104
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
27105
|
+
},
|
|
26938
27106
|
{
|
|
26939
27107
|
"name": "opened",
|
|
26940
27108
|
"type": "boolean",
|
|
@@ -26943,6 +27111,14 @@
|
|
|
26943
27111
|
"inheritedFrom": "Sheet",
|
|
26944
27112
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
26945
27113
|
},
|
|
27114
|
+
{
|
|
27115
|
+
"name": "snapPoints",
|
|
27116
|
+
"type": "SheetSnapPoints",
|
|
27117
|
+
"required": false,
|
|
27118
|
+
"description": "Точки остановки шторки.\nCSS-размеры: '320px', '50%', '40dvh'.\nЕсли не передано или массив пуст — snap-points отключены.",
|
|
27119
|
+
"inheritedFrom": "Sheet",
|
|
27120
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
27121
|
+
},
|
|
26946
27122
|
{
|
|
26947
27123
|
"name": "throttleMs",
|
|
26948
27124
|
"type": "number",
|
|
@@ -26986,7 +27162,7 @@
|
|
|
26986
27162
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
26987
27163
|
}
|
|
26988
27164
|
],
|
|
26989
|
-
"atomicMcpVersion": "0.
|
|
27165
|
+
"atomicMcpVersion": "0.360.0",
|
|
26990
27166
|
"importPath": "@daisforge/ui",
|
|
26991
27167
|
"importStatement": "import { Sheet } from '@daisforge/ui';",
|
|
26992
27168
|
"minimalUsage": "<Sheet onClose={() => {}} />",
|
|
@@ -27011,14 +27187,7 @@
|
|
|
27011
27187
|
"folderName": "Skeleton",
|
|
27012
27188
|
"role": "primary",
|
|
27013
27189
|
"description": "Плейсхолдер-линия для имитации загрузки текстовой строки",
|
|
27014
|
-
"props": [
|
|
27015
|
-
{
|
|
27016
|
-
"name": "animationDuration",
|
|
27017
|
-
"type": "number | undefined",
|
|
27018
|
-
"required": false,
|
|
27019
|
-
"description": "Длительность одного цикла анимации в миллисекундах"
|
|
27020
|
-
}
|
|
27021
|
-
],
|
|
27190
|
+
"props": [],
|
|
27022
27191
|
"propsTypeName": "ComponentProps<typeof LineSkeleton>",
|
|
27023
27192
|
"sourceFile": "node_modules/@salutejs/sdds-finai/types/components/Skeleton/Skeleton.d.ts",
|
|
27024
27193
|
"type": "wrapper",
|
|
@@ -27031,6 +27200,14 @@
|
|
|
27031
27200
|
],
|
|
27032
27201
|
"hasCuratedMeta": true,
|
|
27033
27202
|
"inheritedProps": [
|
|
27203
|
+
{
|
|
27204
|
+
"name": "animationDuration",
|
|
27205
|
+
"type": "number",
|
|
27206
|
+
"required": false,
|
|
27207
|
+
"description": "Длительность одного цикла анимации в миллисекундах",
|
|
27208
|
+
"inheritedFrom": "LineSkeleton",
|
|
27209
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
27210
|
+
},
|
|
27034
27211
|
{
|
|
27035
27212
|
"name": "animationType",
|
|
27036
27213
|
"type": "\"shimmer\" | \"pulse\"",
|
|
@@ -27094,7 +27271,7 @@
|
|
|
27094
27271
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
27095
27272
|
}
|
|
27096
27273
|
],
|
|
27097
|
-
"atomicMcpVersion": "0.
|
|
27274
|
+
"atomicMcpVersion": "0.360.0",
|
|
27098
27275
|
"importPath": "@daisforge/ui",
|
|
27099
27276
|
"importStatement": "import { LineSkeleton } from '@daisforge/ui';",
|
|
27100
27277
|
"minimalUsage": "<LineSkeleton />",
|
|
@@ -27188,7 +27365,7 @@
|
|
|
27188
27365
|
"заглушка изображения"
|
|
27189
27366
|
],
|
|
27190
27367
|
"hasCuratedMeta": true,
|
|
27191
|
-
"atomicMcpVersion": "0.
|
|
27368
|
+
"atomicMcpVersion": "0.360.0",
|
|
27192
27369
|
"importPath": "@daisforge/ui",
|
|
27193
27370
|
"importStatement": "import { RectSkeleton } from '@daisforge/ui';",
|
|
27194
27371
|
"minimalUsage": "<RectSkeleton />",
|
|
@@ -27634,7 +27811,7 @@
|
|
|
27634
27811
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
27635
27812
|
}
|
|
27636
27813
|
],
|
|
27637
|
-
"atomicMcpVersion": "0.
|
|
27814
|
+
"atomicMcpVersion": "0.360.0",
|
|
27638
27815
|
"importPath": "@daisforge/ui",
|
|
27639
27816
|
"importStatement": "import { Slider } from '@daisforge/ui';",
|
|
27640
27817
|
"minimalUsage": "<Slider max={0} min={0} />",
|
|
@@ -27718,7 +27895,7 @@
|
|
|
27718
27895
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
27719
27896
|
}
|
|
27720
27897
|
],
|
|
27721
|
-
"atomicMcpVersion": "0.
|
|
27898
|
+
"atomicMcpVersion": "0.360.0",
|
|
27722
27899
|
"importPath": "@daisforge/ui",
|
|
27723
27900
|
"importStatement": "import { Spinner } from '@daisforge/ui';",
|
|
27724
27901
|
"minimalUsage": "<Spinner />",
|
|
@@ -27822,7 +27999,7 @@
|
|
|
27822
27999
|
}
|
|
27823
28000
|
],
|
|
27824
28001
|
"hasCuratedMeta": true,
|
|
27825
|
-
"atomicMcpVersion": "0.
|
|
28002
|
+
"atomicMcpVersion": "0.360.0",
|
|
27826
28003
|
"importPath": "@daisforge/ui",
|
|
27827
28004
|
"importStatement": "import { SplitView } from '@daisforge/ui';",
|
|
27828
28005
|
"minimalUsage": "<SplitView mainContent={'Контент'} />",
|
|
@@ -27977,7 +28154,7 @@
|
|
|
27977
28154
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
27978
28155
|
}
|
|
27979
28156
|
],
|
|
27980
|
-
"atomicMcpVersion": "0.
|
|
28157
|
+
"atomicMcpVersion": "0.360.0",
|
|
27981
28158
|
"importPath": "@daisforge/ui",
|
|
27982
28159
|
"importStatement": "import { Steps } from '@daisforge/ui';",
|
|
27983
28160
|
"minimalUsage": "<Steps />",
|
|
@@ -28070,7 +28247,7 @@
|
|
|
28070
28247
|
],
|
|
28071
28248
|
"hasCuratedMeta": true,
|
|
28072
28249
|
"parentComponent": "Stories",
|
|
28073
|
-
"atomicMcpVersion": "0.
|
|
28250
|
+
"atomicMcpVersion": "0.360.0",
|
|
28074
28251
|
"compoundPartOf": {
|
|
28075
28252
|
"component": "Stories",
|
|
28076
28253
|
"part": "Preview"
|
|
@@ -28375,7 +28552,7 @@
|
|
|
28375
28552
|
"relatedExports": [
|
|
28376
28553
|
"StoriesPreview"
|
|
28377
28554
|
],
|
|
28378
|
-
"atomicMcpVersion": "0.
|
|
28555
|
+
"atomicMcpVersion": "0.360.0",
|
|
28379
28556
|
"importPath": "@daisforge/ui",
|
|
28380
28557
|
"importStatement": "import { Stories } from '@daisforge/ui';",
|
|
28381
28558
|
"minimalUsage": "<Stories>\n {/* части: Stories.Preview */}\n</Stories>",
|
|
@@ -28523,7 +28700,7 @@
|
|
|
28523
28700
|
],
|
|
28524
28701
|
"chooseWhen": "Вне react-hook-form — тумблер вкл/выкл с value/onChange напрямую.",
|
|
28525
28702
|
"hasCuratedMeta": true,
|
|
28526
|
-
"atomicMcpVersion": "0.
|
|
28703
|
+
"atomicMcpVersion": "0.360.0",
|
|
28527
28704
|
"importPath": "@daisforge/ui",
|
|
28528
28705
|
"importStatement": "import { Switch } from '@daisforge/ui';",
|
|
28529
28706
|
"minimalUsage": "<Switch />",
|
|
@@ -28635,7 +28812,7 @@
|
|
|
28635
28812
|
"Canvas",
|
|
28636
28813
|
"TextCellEntryType"
|
|
28637
28814
|
],
|
|
28638
|
-
"atomicMcpVersion": "0.
|
|
28815
|
+
"atomicMcpVersion": "0.360.0",
|
|
28639
28816
|
"importPath": "@daisforge/ui/components/TableCanvas",
|
|
28640
28817
|
"importStatement": "import { TableFilterSelect } from '@daisforge/ui/components/TableCanvas';",
|
|
28641
28818
|
"minimalUsage": "<TableFilterSelect onChange={() => {}} options={[]} value={[]} />",
|
|
@@ -28677,7 +28854,7 @@
|
|
|
28677
28854
|
"Canvas",
|
|
28678
28855
|
"TextCellEntryType"
|
|
28679
28856
|
],
|
|
28680
|
-
"atomicMcpVersion": "0.
|
|
28857
|
+
"atomicMcpVersion": "0.360.0",
|
|
28681
28858
|
"importPath": "@daisforge/ui/components/TableCanvas",
|
|
28682
28859
|
"importStatement": "import { TableFilterSelectList } from '@daisforge/ui/components/TableCanvas';",
|
|
28683
28860
|
"minimalUsage": "<TableFilterSelectList />",
|
|
@@ -28708,7 +28885,7 @@
|
|
|
28708
28885
|
],
|
|
28709
28886
|
"hasCuratedMeta": true,
|
|
28710
28887
|
"parentComponent": "TableCanvas",
|
|
28711
|
-
"atomicMcpVersion": "0.
|
|
28888
|
+
"atomicMcpVersion": "0.360.0",
|
|
28712
28889
|
"importPath": "@daisforge/ui/components/TableCanvas",
|
|
28713
28890
|
"importStatement": "import { TableFilterSelectListItem } from '@daisforge/ui/components/TableCanvas';",
|
|
28714
28891
|
"minimalUsage": "<TableFilterSelectListItem />",
|
|
@@ -28757,7 +28934,7 @@
|
|
|
28757
28934
|
"Canvas",
|
|
28758
28935
|
"TextCellEntryType"
|
|
28759
28936
|
],
|
|
28760
|
-
"atomicMcpVersion": "0.
|
|
28937
|
+
"atomicMcpVersion": "0.360.0",
|
|
28761
28938
|
"importPath": "@daisforge/ui/components/TableCanvas",
|
|
28762
28939
|
"importStatement": "import { TableFilterSelectSearchTextfield } from '@daisforge/ui/components/TableCanvas';",
|
|
28763
28940
|
"minimalUsage": "<TableFilterSelectSearchTextfield />",
|
|
@@ -28791,7 +28968,7 @@
|
|
|
28791
28968
|
"Canvas",
|
|
28792
28969
|
"TextCellEntryType"
|
|
28793
28970
|
],
|
|
28794
|
-
"atomicMcpVersion": "0.
|
|
28971
|
+
"atomicMcpVersion": "0.360.0",
|
|
28795
28972
|
"importPath": "@daisforge/ui/components/TableCanvas",
|
|
28796
28973
|
"importStatement": "import { TableFilterSelectTotalListItemContainer } from '@daisforge/ui/components/TableCanvas';",
|
|
28797
28974
|
"minimalUsage": "<TableFilterSelectTotalListItemContainer />",
|
|
@@ -28904,7 +29081,7 @@
|
|
|
28904
29081
|
"NoRowsFallback",
|
|
28905
29082
|
"ContainerStyled"
|
|
28906
29083
|
],
|
|
28907
|
-
"atomicMcpVersion": "0.
|
|
29084
|
+
"atomicMcpVersion": "0.360.0",
|
|
28908
29085
|
"importPath": "@daisforge/ui",
|
|
28909
29086
|
"importStatement": "import { Table } from '@daisforge/ui';",
|
|
28910
29087
|
"minimalUsage": "<Table columnConfig={[]} rows={[]} />",
|
|
@@ -29042,7 +29219,7 @@
|
|
|
29042
29219
|
],
|
|
29043
29220
|
"hasCuratedMeta": true,
|
|
29044
29221
|
"parentComponent": "Table",
|
|
29045
|
-
"atomicMcpVersion": "0.
|
|
29222
|
+
"atomicMcpVersion": "0.360.0",
|
|
29046
29223
|
"importPath": "@daisforge/ui",
|
|
29047
29224
|
"importStatement": "import { ControlBlockSwitch } from '@daisforge/ui';",
|
|
29048
29225
|
"minimalUsage": "<ControlBlockSwitch />",
|
|
@@ -29073,7 +29250,7 @@
|
|
|
29073
29250
|
],
|
|
29074
29251
|
"hasCuratedMeta": true,
|
|
29075
29252
|
"parentComponent": "Table",
|
|
29076
|
-
"atomicMcpVersion": "0.
|
|
29253
|
+
"atomicMcpVersion": "0.360.0",
|
|
29077
29254
|
"importPath": "@daisforge/ui",
|
|
29078
29255
|
"importStatement": "import { NoRowsFallback } from '@daisforge/ui';",
|
|
29079
29256
|
"minimalUsage": "<NoRowsFallback />",
|
|
@@ -29104,7 +29281,7 @@
|
|
|
29104
29281
|
],
|
|
29105
29282
|
"hasCuratedMeta": true,
|
|
29106
29283
|
"parentComponent": "TableCanvas",
|
|
29107
|
-
"atomicMcpVersion": "0.
|
|
29284
|
+
"atomicMcpVersion": "0.360.0",
|
|
29108
29285
|
"importPath": "@daisforge/ui/components/TableCanvas",
|
|
29109
29286
|
"importStatement": "import { ContainerStyled } from '@daisforge/ui/components/TableCanvas';",
|
|
29110
29287
|
"minimalUsage": "<ContainerStyled />",
|
|
@@ -29215,7 +29392,7 @@
|
|
|
29215
29392
|
],
|
|
29216
29393
|
"hasCuratedMeta": true,
|
|
29217
29394
|
"parentComponent": "TableCanvas",
|
|
29218
|
-
"atomicMcpVersion": "0.
|
|
29395
|
+
"atomicMcpVersion": "0.360.0",
|
|
29219
29396
|
"importPath": "@daisforge/ui/components/TableCanvas",
|
|
29220
29397
|
"importStatement": "import { SplitIconButton } from '@daisforge/ui/components/TableCanvas';",
|
|
29221
29398
|
"minimalUsage": "<SplitIconButton icon={'Контент'} />",
|
|
@@ -29741,6 +29918,13 @@
|
|
|
29741
29918
|
"inheritedFrom": "Combobox",
|
|
29742
29919
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
29743
29920
|
},
|
|
29921
|
+
{
|
|
29922
|
+
"name": "hasDivider",
|
|
29923
|
+
"type": "boolean",
|
|
29924
|
+
"required": false,
|
|
29925
|
+
"inheritedFrom": "Combobox",
|
|
29926
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
29927
|
+
},
|
|
29744
29928
|
{
|
|
29745
29929
|
"name": "hintSize",
|
|
29746
29930
|
"type": "\"s\" | \"m\"",
|
|
@@ -29847,7 +30031,7 @@
|
|
|
29847
30031
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
29848
30032
|
}
|
|
29849
30033
|
],
|
|
29850
|
-
"atomicMcpVersion": "0.
|
|
30034
|
+
"atomicMcpVersion": "0.360.0",
|
|
29851
30035
|
"importPath": "@daisforge/ui/components/TableCanvas",
|
|
29852
30036
|
"importStatement": "import { CellEditorCombobox } from '@daisforge/ui/components/TableCanvas';",
|
|
29853
30037
|
"minimalUsage": "<CellEditorCombobox autoFocusType={\"autoFocus\"} cellHeight={0} cellWidth={0} paddingInline={0} items={[]} />",
|
|
@@ -29891,12 +30075,6 @@
|
|
|
29891
30075
|
"required": true,
|
|
29892
30076
|
"description": ""
|
|
29893
30077
|
},
|
|
29894
|
-
{
|
|
29895
|
-
"name": "suffix",
|
|
29896
|
-
"type": "string | undefined",
|
|
29897
|
-
"required": false,
|
|
29898
|
-
"description": "Суффикс текста в поле ввода."
|
|
29899
|
-
},
|
|
29900
30078
|
{
|
|
29901
30079
|
"name": "align",
|
|
29902
30080
|
"type": "\"center\" | \"right\" | \"left\" | undefined",
|
|
@@ -30051,6 +30229,14 @@
|
|
|
30051
30229
|
"inheritedFrom": "NumberFormat",
|
|
30052
30230
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
30053
30231
|
},
|
|
30232
|
+
{
|
|
30233
|
+
"name": "suffix",
|
|
30234
|
+
"type": "string",
|
|
30235
|
+
"required": false,
|
|
30236
|
+
"description": "Суффикс текста в поле ввода.",
|
|
30237
|
+
"inheritedFrom": "NumberFormat",
|
|
30238
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
30239
|
+
},
|
|
30054
30240
|
{
|
|
30055
30241
|
"name": "thousandSeparator",
|
|
30056
30242
|
"type": "string | boolean",
|
|
@@ -30264,6 +30450,13 @@
|
|
|
30264
30450
|
"inheritedFrom": "NumberFormat",
|
|
30265
30451
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
30266
30452
|
},
|
|
30453
|
+
{
|
|
30454
|
+
"name": "prefix",
|
|
30455
|
+
"type": "string",
|
|
30456
|
+
"required": false,
|
|
30457
|
+
"inheritedFrom": "NumberFormat",
|
|
30458
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
30459
|
+
},
|
|
30267
30460
|
{
|
|
30268
30461
|
"name": "rightHelper",
|
|
30269
30462
|
"type": "ReactNode",
|
|
@@ -30314,7 +30507,7 @@
|
|
|
30314
30507
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
30315
30508
|
}
|
|
30316
30509
|
],
|
|
30317
|
-
"atomicMcpVersion": "0.
|
|
30510
|
+
"atomicMcpVersion": "0.360.0",
|
|
30318
30511
|
"importPath": "@daisforge/ui/components/TableCanvas",
|
|
30319
30512
|
"importStatement": "import { CellEditorNumberFormat } from '@daisforge/ui/components/TableCanvas';",
|
|
30320
30513
|
"minimalUsage": "<CellEditorNumberFormat autoFocusType={\"autoFocus\"} cellHeight={0} cellWidth={0} />",
|
|
@@ -30419,7 +30612,7 @@
|
|
|
30419
30612
|
],
|
|
30420
30613
|
"hasCuratedMeta": true,
|
|
30421
30614
|
"parentComponent": "TableCanvas",
|
|
30422
|
-
"atomicMcpVersion": "0.
|
|
30615
|
+
"atomicMcpVersion": "0.360.0",
|
|
30423
30616
|
"importPath": "@daisforge/ui/components/TableCanvas",
|
|
30424
30617
|
"importStatement": "import { CellEditorTextArea } from '@daisforge/ui/components/TableCanvas';",
|
|
30425
30618
|
"minimalUsage": "<CellEditorTextArea cellHeight={0} cellWidth={0} paddingInline={0} />",
|
|
@@ -30506,24 +30699,24 @@
|
|
|
30506
30699
|
"Canvas",
|
|
30507
30700
|
"TextCellEntryType"
|
|
30508
30701
|
],
|
|
30509
|
-
"atomicMcpVersion": "0.
|
|
30702
|
+
"atomicMcpVersion": "0.360.0",
|
|
30510
30703
|
"importPath": "@daisforge/ui",
|
|
30511
30704
|
"importStatement": "import { TableCanvas } from '@daisforge/ui';",
|
|
30512
30705
|
"minimalUsage": "<TableCanvas columnConfig={[]} rows={[]} />",
|
|
30513
30706
|
"examples": [
|
|
30514
30707
|
{
|
|
30515
30708
|
"exportName": "Usage1",
|
|
30516
|
-
"displayName": "Использование в TableCanvas.
|
|
30709
|
+
"displayName": "Использование в TableCanvas.summaryRows.stories.tsx",
|
|
30517
30710
|
"type": "usage",
|
|
30518
|
-
"code": "<TableCanvas\n
|
|
30519
|
-
"sourceFile": "packages/storybook/src/stories/TableCanvas/TableCanvas.
|
|
30711
|
+
"code": "<TableCanvas\n key={tableKey}\n tableConfig={{\n containerStyle: { height: '600px' },\n summaryRows: {\n showDefault,\n showInControl: true,\n onChange: handleSummaryRowsChange,\n domMetadata: {\n dataAttributes: { 'data-testid': TEST_ID.switch },\n },\n },\n sidebarConfig: {\n defaultTabs: [\n {\n id: 'tableSettings',\n domMetadata: {\n dataAttributes: { 'data-testid': TEST_ID.settingsTab },\n },\n },\n ],\n },\n }}\n columnConfig={columnConfig}\n bottomSummaryRows={bottomSummaryRowsData}\n rows={rows}\n />",
|
|
30712
|
+
"sourceFile": "packages/storybook/src/stories/TableCanvas/TableCanvas.SummaryRows/TableCanvas.summaryRows.stories.tsx"
|
|
30520
30713
|
},
|
|
30521
30714
|
{
|
|
30522
30715
|
"exportName": "Usage2",
|
|
30523
|
-
"displayName": "Использование в TableCanvas.
|
|
30716
|
+
"displayName": "Использование в TableCanvas.multipleFeatures.stories.tsx",
|
|
30524
30717
|
"type": "usage",
|
|
30525
|
-
"code": "<TableCanvas\n
|
|
30526
|
-
"sourceFile": "packages/storybook/src/stories/TableCanvas/TableCanvas.
|
|
30718
|
+
"code": "<TableCanvas\n tableConfig={{\n editing: {\n onRowsChange: setRows,\n rowKeyGetter: (r) => `${r.id}`,\n },\n containerStyle: { height: '80vh' },\n unstickyHeader,\n fullScreenEnabled: true,\n resizableColumn: true,\n loadingOverlay: {\n active: isVisibleLoadingOverlay,\n showSubtitleDelay: 5000,\n subtitle:\n 'Данные обрабатываются, обычно это занимает не более 10 секунд',\n },\n rowSize: {\n default: 'big',\n showInControl: true,\n },\n cellsSelection: { mode: selectionMode },\n highlightActiveType,\n searching: {\n enabled: true,\n debounceDelay: 400,\n },\n keyText: {\n showInControl: true,\n controlBlock: {},\n sidebar: {},\n },\n summaryRows: {\n showDefault: true,\n showInControl: true,\n },\n columnsControl: {\n enable: true,\n hiding: true,\n pinning: true,\n reorderingAside: true,\n reorderingHeader: true,\n disableHiding: ['id'],\n disablePinning: ['developer'],\n columnsLabel: {\n task: 'Задачи',\n },\n pinnedDefault: ['id'],\n },\n rowMarkers: {\n startIndex: 1,\n },\n sidebarConfig: {\n customTabs: [\n {\n id: 'customInfo',\n label: 'Информация',\n icon: <IconInfo size=\"s\" />,\n content: <CustomInfoTab />,\n title: 'Информация',\n showInSidebar: true,\n },\n ],\n },\n controlBlock: {\n show: controlBlock,\n rightSideInner: [\n {\n text: 'Label',\n contentLeft: <IconSb color=\"inherit\" />,\n view: 'linkAccent',\n 'data-test-id': 'Label right 1',\n },\n {\n text: 'Скачать',\n contentLeft: <IconSb color=\"inherit\" />,\n 'data-test-id': 'store2',\n \n// … (обрезано)",
|
|
30719
|
+
"sourceFile": "packages/storybook/src/stories/TableCanvas/TableCanvas.MultipleFeatures/TableCanvas.multipleFeatures.stories.tsx"
|
|
30527
30720
|
}
|
|
30528
30721
|
]
|
|
30529
30722
|
},
|
|
@@ -31522,7 +31715,7 @@
|
|
|
31522
31715
|
"Canvas",
|
|
31523
31716
|
"TextCellEntryType"
|
|
31524
31717
|
],
|
|
31525
|
-
"atomicMcpVersion": "0.
|
|
31718
|
+
"atomicMcpVersion": "0.360.0",
|
|
31526
31719
|
"importPath": "@daisforge/ui/components/TableCanvas",
|
|
31527
31720
|
"importStatement": "import { TableGlideInstance } from '@daisforge/ui/components/TableCanvas';",
|
|
31528
31721
|
"minimalUsage": "<TableGlideInstance CellReadOnlyEditor={() => {}} columns={[]} rows={[]} />",
|
|
@@ -31545,7 +31738,7 @@
|
|
|
31545
31738
|
],
|
|
31546
31739
|
"hasCuratedMeta": true,
|
|
31547
31740
|
"parentComponent": "TableCanvas",
|
|
31548
|
-
"atomicMcpVersion": "0.
|
|
31741
|
+
"atomicMcpVersion": "0.360.0",
|
|
31549
31742
|
"importPath": "@daisforge/ui",
|
|
31550
31743
|
"importStatement": "import { TextCellEntry } from '@daisforge/ui';",
|
|
31551
31744
|
"minimalUsage": "<TextCellEntry />",
|
|
@@ -31608,7 +31801,7 @@
|
|
|
31608
31801
|
],
|
|
31609
31802
|
"hasCuratedMeta": true,
|
|
31610
31803
|
"parentComponent": "TableGlide",
|
|
31611
|
-
"atomicMcpVersion": "0.
|
|
31804
|
+
"atomicMcpVersion": "0.360.0",
|
|
31612
31805
|
"importPath": "@daisforge/ui/components/TableGlide",
|
|
31613
31806
|
"importStatement": "import { Canvas } from '@daisforge/ui/components/TableGlide';",
|
|
31614
31807
|
"minimalUsage": "<Canvas />",
|
|
@@ -31631,7 +31824,7 @@
|
|
|
31631
31824
|
],
|
|
31632
31825
|
"hasCuratedMeta": true,
|
|
31633
31826
|
"parentComponent": "TableCanvas",
|
|
31634
|
-
"atomicMcpVersion": "0.
|
|
31827
|
+
"atomicMcpVersion": "0.360.0",
|
|
31635
31828
|
"importPath": "@daisforge/ui",
|
|
31636
31829
|
"importStatement": "import { TextCellEntryType } from '@daisforge/ui';",
|
|
31637
31830
|
"minimalUsage": "<TextCellEntryType />",
|
|
@@ -31838,7 +32031,7 @@
|
|
|
31838
32031
|
}
|
|
31839
32032
|
],
|
|
31840
32033
|
"hasCuratedMeta": true,
|
|
31841
|
-
"atomicMcpVersion": "0.
|
|
32034
|
+
"atomicMcpVersion": "0.360.0",
|
|
31842
32035
|
"importPath": "@daisforge/ui",
|
|
31843
32036
|
"importStatement": "import { TableContract } from '@daisforge/ui';",
|
|
31844
32037
|
"minimalUsage": "<TableContract />",
|
|
@@ -32839,7 +33032,7 @@
|
|
|
32839
33032
|
"Canvas",
|
|
32840
33033
|
"RootBridge"
|
|
32841
33034
|
],
|
|
32842
|
-
"atomicMcpVersion": "0.
|
|
33035
|
+
"atomicMcpVersion": "0.360.0",
|
|
32843
33036
|
"importPath": "@daisforge/ui/components/TableGlide",
|
|
32844
33037
|
"importStatement": "import { TableGlide } from '@daisforge/ui/components/TableGlide';",
|
|
32845
33038
|
"minimalUsage": "<TableGlide columns={[]} rows={[]} />",
|
|
@@ -33008,7 +33201,7 @@
|
|
|
33008
33201
|
],
|
|
33009
33202
|
"hasCuratedMeta": true,
|
|
33010
33203
|
"parentComponent": "TableGlide",
|
|
33011
|
-
"atomicMcpVersion": "0.
|
|
33204
|
+
"atomicMcpVersion": "0.360.0",
|
|
33012
33205
|
"importPath": "@daisforge/ui/components/TableGlide",
|
|
33013
33206
|
"importStatement": "import { CanvasContainer } from '@daisforge/ui/components/TableGlide';",
|
|
33014
33207
|
"minimalUsage": "<CanvasContainer />",
|
|
@@ -33086,7 +33279,7 @@
|
|
|
33086
33279
|
],
|
|
33087
33280
|
"hasCuratedMeta": true,
|
|
33088
33281
|
"parentComponent": "TableGlide",
|
|
33089
|
-
"atomicMcpVersion": "0.
|
|
33282
|
+
"atomicMcpVersion": "0.360.0",
|
|
33090
33283
|
"importPath": "@daisforge/ui/components/TableGlide",
|
|
33091
33284
|
"importStatement": "import { CanvasNode } from '@daisforge/ui/components/TableGlide';",
|
|
33092
33285
|
"minimalUsage": "<CanvasNode />",
|
|
@@ -33231,7 +33424,7 @@
|
|
|
33231
33424
|
],
|
|
33232
33425
|
"hasCuratedMeta": true,
|
|
33233
33426
|
"parentComponent": "TableGlide",
|
|
33234
|
-
"atomicMcpVersion": "0.
|
|
33427
|
+
"atomicMcpVersion": "0.360.0",
|
|
33235
33428
|
"importPath": "@daisforge/ui/components/TableGlide",
|
|
33236
33429
|
"importStatement": "import { CanvasBadge } from '@daisforge/ui/components/TableGlide';",
|
|
33237
33430
|
"minimalUsage": "<CanvasBadge text={'значение'} />",
|
|
@@ -33374,7 +33567,7 @@
|
|
|
33374
33567
|
],
|
|
33375
33568
|
"hasCuratedMeta": true,
|
|
33376
33569
|
"parentComponent": "TableGlide",
|
|
33377
|
-
"atomicMcpVersion": "0.
|
|
33570
|
+
"atomicMcpVersion": "0.360.0",
|
|
33378
33571
|
"importPath": "@daisforge/ui/components/TableGlide",
|
|
33379
33572
|
"importStatement": "import { CanvasButton } from '@daisforge/ui/components/TableGlide';",
|
|
33380
33573
|
"minimalUsage": "<CanvasButton children={'значение'} />",
|
|
@@ -33542,7 +33735,7 @@
|
|
|
33542
33735
|
],
|
|
33543
33736
|
"hasCuratedMeta": true,
|
|
33544
33737
|
"parentComponent": "TableGlide",
|
|
33545
|
-
"atomicMcpVersion": "0.
|
|
33738
|
+
"atomicMcpVersion": "0.360.0",
|
|
33546
33739
|
"importPath": "@daisforge/ui/components/TableGlide",
|
|
33547
33740
|
"importStatement": "import { CanvasEmbedIconButton } from '@daisforge/ui/components/TableGlide';",
|
|
33548
33741
|
"minimalUsage": "<CanvasEmbedIconButton icon={{}} />",
|
|
@@ -33671,7 +33864,7 @@
|
|
|
33671
33864
|
],
|
|
33672
33865
|
"hasCuratedMeta": true,
|
|
33673
33866
|
"parentComponent": "TableGlide",
|
|
33674
|
-
"atomicMcpVersion": "0.
|
|
33867
|
+
"atomicMcpVersion": "0.360.0",
|
|
33675
33868
|
"importPath": "@daisforge/ui/components/TableGlide",
|
|
33676
33869
|
"importStatement": "import { CanvasIcon } from '@daisforge/ui/components/TableGlide';",
|
|
33677
33870
|
"minimalUsage": "<CanvasIcon icon={{}} />",
|
|
@@ -33808,7 +34001,7 @@
|
|
|
33808
34001
|
],
|
|
33809
34002
|
"hasCuratedMeta": true,
|
|
33810
34003
|
"parentComponent": "TableGlide",
|
|
33811
|
-
"atomicMcpVersion": "0.
|
|
34004
|
+
"atomicMcpVersion": "0.360.0",
|
|
33812
34005
|
"importPath": "@daisforge/ui/components/TableGlide",
|
|
33813
34006
|
"importStatement": "import { CanvasIconButton } from '@daisforge/ui/components/TableGlide';",
|
|
33814
34007
|
"minimalUsage": "<CanvasIconButton icon={{}} />",
|
|
@@ -33913,7 +34106,7 @@
|
|
|
33913
34106
|
],
|
|
33914
34107
|
"hasCuratedMeta": true,
|
|
33915
34108
|
"parentComponent": "TableGlide",
|
|
33916
|
-
"atomicMcpVersion": "0.
|
|
34109
|
+
"atomicMcpVersion": "0.360.0",
|
|
33917
34110
|
"importPath": "@daisforge/ui/components/TableGlide",
|
|
33918
34111
|
"importStatement": "import { CanvasRect } from '@daisforge/ui/components/TableGlide';",
|
|
33919
34112
|
"minimalUsage": "<CanvasRect />",
|
|
@@ -34046,7 +34239,7 @@
|
|
|
34046
34239
|
],
|
|
34047
34240
|
"hasCuratedMeta": true,
|
|
34048
34241
|
"parentComponent": "TableGlide",
|
|
34049
|
-
"atomicMcpVersion": "0.
|
|
34242
|
+
"atomicMcpVersion": "0.360.0",
|
|
34050
34243
|
"importPath": "@daisforge/ui/components/TableGlide",
|
|
34051
34244
|
"importStatement": "import { CanvasText } from '@daisforge/ui/components/TableGlide';",
|
|
34052
34245
|
"minimalUsage": "<CanvasText />",
|
|
@@ -34232,7 +34425,7 @@
|
|
|
34232
34425
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
34233
34426
|
}
|
|
34234
34427
|
],
|
|
34235
|
-
"atomicMcpVersion": "0.
|
|
34428
|
+
"atomicMcpVersion": "0.360.0",
|
|
34236
34429
|
"importPath": "@daisforge/ui/components/TableGlide",
|
|
34237
34430
|
"importStatement": "import { CanvasLink } from '@daisforge/ui/components/TableGlide';",
|
|
34238
34431
|
"minimalUsage": "<CanvasLink />",
|
|
@@ -34308,7 +34501,7 @@
|
|
|
34308
34501
|
],
|
|
34309
34502
|
"hasCuratedMeta": true,
|
|
34310
34503
|
"parentComponent": "TableGlide",
|
|
34311
|
-
"atomicMcpVersion": "0.
|
|
34504
|
+
"atomicMcpVersion": "0.360.0",
|
|
34312
34505
|
"importPath": "@daisforge/ui/components/TableGlide",
|
|
34313
34506
|
"importStatement": "import { RootBridge } from '@daisforge/ui/components/TableGlide';",
|
|
34314
34507
|
"minimalUsage": "<RootBridge cellId={'значение'} nodeRegistry={'Контент'} renderContent={() => {}} />",
|
|
@@ -35075,7 +35268,7 @@
|
|
|
35075
35268
|
"Canvas",
|
|
35076
35269
|
"RootBridge"
|
|
35077
35270
|
],
|
|
35078
|
-
"atomicMcpVersion": "0.
|
|
35271
|
+
"atomicMcpVersion": "0.360.0",
|
|
35079
35272
|
"importPath": "@daisforge/ui",
|
|
35080
35273
|
"importStatement": "import { DataEditor } from '@daisforge/ui';",
|
|
35081
35274
|
"minimalUsage": "<DataEditor columns={[]} getCellContent={() => {}} />",
|
|
@@ -35256,7 +35449,7 @@
|
|
|
35256
35449
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
35257
35450
|
}
|
|
35258
35451
|
],
|
|
35259
|
-
"atomicMcpVersion": "0.
|
|
35452
|
+
"atomicMcpVersion": "0.360.0",
|
|
35260
35453
|
"importPath": "@daisforge/ui",
|
|
35261
35454
|
"importStatement": "import { TableSDDS } from '@daisforge/ui';",
|
|
35262
35455
|
"minimalUsage": "<TableSDDS columns={[]} data={[]} />",
|
|
@@ -35736,7 +35929,7 @@
|
|
|
35736
35929
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
35737
35930
|
}
|
|
35738
35931
|
],
|
|
35739
|
-
"atomicMcpVersion": "0.
|
|
35932
|
+
"atomicMcpVersion": "0.360.0",
|
|
35740
35933
|
"importPath": "@daisforge/ui",
|
|
35741
35934
|
"importStatement": "import { TableTabs } from '@daisforge/ui';",
|
|
35742
35935
|
"minimalUsage": "<TableTabs tabs={[]}>\n {/* части: TableTabs.TabPanel */}\n</TableTabs>",
|
|
@@ -36119,7 +36312,7 @@
|
|
|
36119
36312
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
36120
36313
|
}
|
|
36121
36314
|
],
|
|
36122
|
-
"atomicMcpVersion": "0.
|
|
36315
|
+
"atomicMcpVersion": "0.360.0",
|
|
36123
36316
|
"importPath": "@daisforge/ui",
|
|
36124
36317
|
"importStatement": "import { Tabs } from '@daisforge/ui';",
|
|
36125
36318
|
"minimalUsage": "<Tabs />",
|
|
@@ -36538,7 +36731,7 @@
|
|
|
36538
36731
|
],
|
|
36539
36732
|
"chooseWhen": "Вне react-hook-form — многострочное поле с value/onChange напрямую.",
|
|
36540
36733
|
"hasCuratedMeta": true,
|
|
36541
|
-
"atomicMcpVersion": "0.
|
|
36734
|
+
"atomicMcpVersion": "0.360.0",
|
|
36542
36735
|
"importPath": "@daisforge/ui",
|
|
36543
36736
|
"importStatement": "import { TextArea } from '@daisforge/ui';",
|
|
36544
36737
|
"minimalUsage": "<TextArea />",
|
|
@@ -37000,7 +37193,7 @@
|
|
|
37000
37193
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
37001
37194
|
}
|
|
37002
37195
|
],
|
|
37003
|
-
"atomicMcpVersion": "0.
|
|
37196
|
+
"atomicMcpVersion": "0.360.0",
|
|
37004
37197
|
"importPath": "@daisforge/ui",
|
|
37005
37198
|
"importStatement": "import { TextField } from '@daisforge/ui';",
|
|
37006
37199
|
"minimalUsage": "<TextField />",
|
|
@@ -37328,7 +37521,7 @@
|
|
|
37328
37521
|
}
|
|
37329
37522
|
],
|
|
37330
37523
|
"hasCuratedMeta": true,
|
|
37331
|
-
"atomicMcpVersion": "0.
|
|
37524
|
+
"atomicMcpVersion": "0.360.0",
|
|
37332
37525
|
"importPath": "@daisforge/ui",
|
|
37333
37526
|
"importStatement": "import { TextFieldSearch } from '@daisforge/ui';",
|
|
37334
37527
|
"minimalUsage": "<TextFieldSearch />",
|
|
@@ -37422,7 +37615,7 @@
|
|
|
37422
37615
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
37423
37616
|
}
|
|
37424
37617
|
],
|
|
37425
|
-
"atomicMcpVersion": "0.
|
|
37618
|
+
"atomicMcpVersion": "0.360.0",
|
|
37426
37619
|
"importPath": "@daisforge/ui",
|
|
37427
37620
|
"importStatement": "import { TextFieldGroup } from '@daisforge/ui';",
|
|
37428
37621
|
"minimalUsage": "<TextFieldGroup />",
|
|
@@ -37447,14 +37640,7 @@
|
|
|
37447
37640
|
"folderName": "TimePicker",
|
|
37448
37641
|
"role": "primary",
|
|
37449
37642
|
"description": "Поле ввода времени с масками часов/минут/секунд и ограничением диапазона.",
|
|
37450
|
-
"props": [
|
|
37451
|
-
{
|
|
37452
|
-
"name": "hasTimeFormat",
|
|
37453
|
-
"type": "boolean | undefined",
|
|
37454
|
-
"required": false,
|
|
37455
|
-
"description": ""
|
|
37456
|
-
}
|
|
37457
|
-
],
|
|
37643
|
+
"props": [],
|
|
37458
37644
|
"propsTypeName": "TimePickerProps",
|
|
37459
37645
|
"sourceFile": "node_modules/@salutejs/sdds-finai/types/components/TimePicker/TimePicker.d.ts",
|
|
37460
37646
|
"type": "wrapper",
|
|
@@ -37649,6 +37835,13 @@
|
|
|
37649
37835
|
"inheritedFrom": "TimePicker",
|
|
37650
37836
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
37651
37837
|
},
|
|
37838
|
+
{
|
|
37839
|
+
"name": "hasTimeFormat",
|
|
37840
|
+
"type": "boolean",
|
|
37841
|
+
"required": false,
|
|
37842
|
+
"inheritedFrom": "TimePicker",
|
|
37843
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
37844
|
+
},
|
|
37652
37845
|
{
|
|
37653
37846
|
"name": "hintContentLeft",
|
|
37654
37847
|
"type": "ReactNode",
|
|
@@ -37874,7 +38067,7 @@
|
|
|
37874
38067
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
37875
38068
|
}
|
|
37876
38069
|
],
|
|
37877
|
-
"atomicMcpVersion": "0.
|
|
38070
|
+
"atomicMcpVersion": "0.360.0",
|
|
37878
38071
|
"importPath": "@daisforge/ui",
|
|
37879
38072
|
"importStatement": "import { TimePicker } from '@daisforge/ui';",
|
|
37880
38073
|
"minimalUsage": "<TimePicker />",
|
|
@@ -37999,7 +38192,7 @@
|
|
|
37999
38192
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
38000
38193
|
}
|
|
38001
38194
|
],
|
|
38002
|
-
"atomicMcpVersion": "0.
|
|
38195
|
+
"atomicMcpVersion": "0.360.0",
|
|
38003
38196
|
"importPath": "@daisforge/ui",
|
|
38004
38197
|
"importStatement": "import { Toast } from '@daisforge/ui';",
|
|
38005
38198
|
"minimalUsage": "<Toast />",
|
|
@@ -38120,7 +38313,7 @@
|
|
|
38120
38313
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
38121
38314
|
}
|
|
38122
38315
|
],
|
|
38123
|
-
"atomicMcpVersion": "0.
|
|
38316
|
+
"atomicMcpVersion": "0.360.0",
|
|
38124
38317
|
"importPath": "@daisforge/ui",
|
|
38125
38318
|
"importStatement": "import { Toolbar } from '@daisforge/ui';",
|
|
38126
38319
|
"minimalUsage": "<Toolbar />",
|
|
@@ -38452,7 +38645,7 @@
|
|
|
38452
38645
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
38453
38646
|
}
|
|
38454
38647
|
],
|
|
38455
|
-
"atomicMcpVersion": "0.
|
|
38648
|
+
"atomicMcpVersion": "0.360.0",
|
|
38456
38649
|
"importPath": "@daisforge/ui",
|
|
38457
38650
|
"importStatement": "import { TooltipList } from '@daisforge/ui';",
|
|
38458
38651
|
"minimalUsage": "<TooltipList items={[]} />",
|
|
@@ -38703,7 +38896,7 @@
|
|
|
38703
38896
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
38704
38897
|
}
|
|
38705
38898
|
],
|
|
38706
|
-
"atomicMcpVersion": "0.
|
|
38899
|
+
"atomicMcpVersion": "0.360.0",
|
|
38707
38900
|
"importPath": "@daisforge/ui",
|
|
38708
38901
|
"importStatement": "import { Tooltip } from '@daisforge/ui';",
|
|
38709
38902
|
"minimalUsage": "<Tooltip text={'Контент'} />",
|
|
@@ -38859,7 +39052,7 @@
|
|
|
38859
39052
|
"chooseWhen": "Новая версия с лучшей логикой работы слоев. Точно в новых проектах использовать его. Или в старых проектах, если не устроил обычный Tooltip. И точно если Нужен явный выбор триггера (клик/hover/фокус)",
|
|
38860
39053
|
"hasCuratedMeta": true,
|
|
38861
39054
|
"inheritedProps": [],
|
|
38862
|
-
"atomicMcpVersion": "0.
|
|
39055
|
+
"atomicMcpVersion": "0.360.0",
|
|
38863
39056
|
"importPath": "@daisforge/ui",
|
|
38864
39057
|
"importStatement": "import { TooltipBeta } from '@daisforge/ui';",
|
|
38865
39058
|
"minimalUsage": "<TooltipBeta children={'значение'} target={'Контент'} />",
|
|
@@ -39057,7 +39250,7 @@
|
|
|
39057
39250
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
39058
39251
|
}
|
|
39059
39252
|
],
|
|
39060
|
-
"atomicMcpVersion": "0.
|
|
39253
|
+
"atomicMcpVersion": "0.360.0",
|
|
39061
39254
|
"importPath": "@daisforge/ui",
|
|
39062
39255
|
"importStatement": "import { Tour } from '@daisforge/ui';",
|
|
39063
39256
|
"minimalUsage": "<Tour renderStep={() => {}} steps={[]} />",
|
|
@@ -39113,7 +39306,7 @@
|
|
|
39113
39306
|
],
|
|
39114
39307
|
"hasCuratedMeta": true,
|
|
39115
39308
|
"parentComponent": "TourWidget",
|
|
39116
|
-
"atomicMcpVersion": "0.
|
|
39309
|
+
"atomicMcpVersion": "0.360.0",
|
|
39117
39310
|
"compoundPartOf": {
|
|
39118
39311
|
"component": "TourWidget",
|
|
39119
39312
|
"part": "Bullet"
|
|
@@ -39154,7 +39347,7 @@
|
|
|
39154
39347
|
],
|
|
39155
39348
|
"hasCuratedMeta": true,
|
|
39156
39349
|
"parentComponent": "TourWidget",
|
|
39157
|
-
"atomicMcpVersion": "0.
|
|
39350
|
+
"atomicMcpVersion": "0.360.0",
|
|
39158
39351
|
"compoundPartOf": {
|
|
39159
39352
|
"component": "TourWidget",
|
|
39160
39353
|
"part": "Bullets"
|
|
@@ -39204,7 +39397,7 @@
|
|
|
39204
39397
|
],
|
|
39205
39398
|
"hasCuratedMeta": true,
|
|
39206
39399
|
"parentComponent": "TourWidget",
|
|
39207
|
-
"atomicMcpVersion": "0.
|
|
39400
|
+
"atomicMcpVersion": "0.360.0",
|
|
39208
39401
|
"compoundPartOf": {
|
|
39209
39402
|
"component": "TourWidget",
|
|
39210
39403
|
"part": "Content"
|
|
@@ -39254,7 +39447,7 @@
|
|
|
39254
39447
|
],
|
|
39255
39448
|
"hasCuratedMeta": true,
|
|
39256
39449
|
"parentComponent": "TourWidget",
|
|
39257
|
-
"atomicMcpVersion": "0.
|
|
39450
|
+
"atomicMcpVersion": "0.360.0",
|
|
39258
39451
|
"compoundPartOf": {
|
|
39259
39452
|
"component": "TourWidget",
|
|
39260
39453
|
"part": "Footer"
|
|
@@ -39316,7 +39509,7 @@
|
|
|
39316
39509
|
],
|
|
39317
39510
|
"hasCuratedMeta": true,
|
|
39318
39511
|
"parentComponent": "TourWidget",
|
|
39319
|
-
"atomicMcpVersion": "0.
|
|
39512
|
+
"atomicMcpVersion": "0.360.0",
|
|
39320
39513
|
"compoundPartOf": {
|
|
39321
39514
|
"component": "TourWidget",
|
|
39322
39515
|
"part": "Header"
|
|
@@ -39517,7 +39710,7 @@
|
|
|
39517
39710
|
"TourWidgetFooter",
|
|
39518
39711
|
"TourWidgetHeader"
|
|
39519
39712
|
],
|
|
39520
|
-
"atomicMcpVersion": "0.
|
|
39713
|
+
"atomicMcpVersion": "0.360.0",
|
|
39521
39714
|
"importPath": "@daisforge/ui",
|
|
39522
39715
|
"importStatement": "import { TourWidget } from '@daisforge/ui';",
|
|
39523
39716
|
"minimalUsage": "<TourWidget>\n {/* части: TourWidget.Header, TourWidget.Content, TourWidget.Footer, TourWidget.Bullet, TourWidget.Bullets */}\n</TourWidget>",
|
|
@@ -39881,7 +40074,7 @@
|
|
|
39881
40074
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
39882
40075
|
}
|
|
39883
40076
|
],
|
|
39884
|
-
"atomicMcpVersion": "0.
|
|
40077
|
+
"atomicMcpVersion": "0.360.0",
|
|
39885
40078
|
"importPath": "@daisforge/ui",
|
|
39886
40079
|
"importStatement": "import { Tree } from '@daisforge/ui';",
|
|
39887
40080
|
"minimalUsage": "<Tree items={[]} />",
|
|
@@ -40151,7 +40344,7 @@
|
|
|
40151
40344
|
"ellipsis"
|
|
40152
40345
|
],
|
|
40153
40346
|
"hasCuratedMeta": true,
|
|
40154
|
-
"atomicMcpVersion": "0.
|
|
40347
|
+
"atomicMcpVersion": "0.360.0",
|
|
40155
40348
|
"importPath": "@daisforge/ui",
|
|
40156
40349
|
"importStatement": "import { TypographyWithAutoTooltip } from '@daisforge/ui';",
|
|
40157
40350
|
"minimalUsage": "<TypographyWithAutoTooltip />",
|
|
@@ -40696,23 +40889,29 @@
|
|
|
40696
40889
|
"examples": [
|
|
40697
40890
|
{
|
|
40698
40891
|
"exportName": "Usage1",
|
|
40699
|
-
"displayName": "Использование в
|
|
40892
|
+
"displayName": "Использование в TableCanvas.summaryRows.stories.tsx",
|
|
40700
40893
|
"type": "usage",
|
|
40701
|
-
"code": "<BodyS
|
|
40702
|
-
"sourceFile": "packages/storybook/src/stories/
|
|
40894
|
+
"code": "<BodyS color={textSecondary} data-testid={TEST_ID.log}>\n {log.length\n ? `onChange: ${log.join(', ')}`\n : 'onChange ещё не вызывался'}\n </BodyS>",
|
|
40895
|
+
"sourceFile": "packages/storybook/src/stories/TableCanvas/TableCanvas.SummaryRows/TableCanvas.summaryRows.stories.tsx"
|
|
40703
40896
|
},
|
|
40704
40897
|
{
|
|
40705
40898
|
"exportName": "Usage2",
|
|
40706
|
-
"displayName": "Использование в
|
|
40899
|
+
"displayName": "Использование в Table.customRenderWithContext.stories.tsx",
|
|
40707
40900
|
"type": "usage",
|
|
40708
|
-
"code": "<BodyS
|
|
40709
|
-
"sourceFile": "packages/storybook/src/stories/
|
|
40901
|
+
"code": "<BodyS bold>Размер строки {rowSize}</BodyS>",
|
|
40902
|
+
"sourceFile": "packages/storybook/src/stories/Table/Table.customRender/Table.customRenderWithContext.stories.tsx"
|
|
40710
40903
|
},
|
|
40711
40904
|
{
|
|
40712
|
-
"exportName": "
|
|
40905
|
+
"exportName": "Vendor1",
|
|
40713
40906
|
"displayName": "Интерфейсы Интерфейсы Типографика для таких частей интерфейса, как button, label, подписи, и т.п.",
|
|
40714
40907
|
"type": "vendor",
|
|
40715
40908
|
"code": "import React from 'react';\nimport { BodyL, BodyM, BodyS, BodyXS, BodyXXS } from '@daisforge/ui';\nexport function App() {\n return (\n <div style={{ display: 'block' }}>\n <BodyL>BodyL</BodyL>\n <BodyL bold>BodyL Bold</BodyL>\n <BodyL medium>BodyL Medium</BodyL>\n <BodyM>BodyM</BodyM>\n <BodyM bold>BodyM Bold</BodyM>\n <BodyM medium>BodyM Medium</BodyM>\n <BodyS>BodyS</BodyS>\n <BodyS bold>BodyS Bold</BodyS>\n <BodyS medium>BodyS Medium</BodyS>\n <BodyXS>BodyXS</BodyXS>\n <BodyXS bold>BodyXS Bold</BodyXS>\n <BodyXS medium>BodyXS Medium</BodyXS>\n <BodyXXS>BodyXXS</BodyXXS>\n <BodyXXS bold>BodyXXS Bold</BodyXXS>\n <BodyXXS medium>BodyXXS Medium</BodyXXS>\n </div>\n );\n}"
|
|
40909
|
+
},
|
|
40910
|
+
{
|
|
40911
|
+
"exportName": "Vendor2",
|
|
40912
|
+
"displayName": "Ориентация разделителя",
|
|
40913
|
+
"type": "vendor",
|
|
40914
|
+
"code": "import React from 'react';\nimport { BodyS, Divider } from '@daisforge/ui';\nexport function App() {\n const Demo = ({\n orientation = 'horizontal',\n length = '100%',\n beforeText = 'Before',\n afterText = 'After',\n }) => {\n const wrapperStyle = {\n display: \"inline-flex\",\n gap: \"0.5rem\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexDirection: orientation === \"horizontal\" ? \"column\" : \"row\"\n }\n return (\n <div style={wrapperStyle}>\n <BodyS>{beforeText}</BodyS>\n <Divider orientation={orientation} length={length} />\n <BodyS>{afterText}</BodyS>\n </div>\n );\n };\n return (\n <div style={{ display: \"flex\", gap: \"2rem\" }}>\n <Demo />\n <Demo orientation=\"vertical\" />\n </div>\n );\n}"
|
|
40716
40915
|
}
|
|
40717
40916
|
]
|
|
40718
40917
|
},
|
|
@@ -40893,10 +41092,16 @@
|
|
|
40893
41092
|
"sourceFile": "packages/storybook/src/stories/TableCanvas/TableCanvas.CellPreview/TableCanvas.cellPreview.stories.tsx"
|
|
40894
41093
|
},
|
|
40895
41094
|
{
|
|
40896
|
-
"exportName": "
|
|
41095
|
+
"exportName": "Vendor1",
|
|
40897
41096
|
"displayName": "Интерфейсы Интерфейсы Типографика для таких частей интерфейса, как button, label, подписи, и т.п.",
|
|
40898
41097
|
"type": "vendor",
|
|
40899
41098
|
"code": "import React from 'react';\nimport { BodyL, BodyM, BodyS, BodyXS, BodyXXS } from '@daisforge/ui';\nexport function App() {\n return (\n <div style={{ display: 'block' }}>\n <BodyL>BodyL</BodyL>\n <BodyL bold>BodyL Bold</BodyL>\n <BodyL medium>BodyL Medium</BodyL>\n <BodyM>BodyM</BodyM>\n <BodyM bold>BodyM Bold</BodyM>\n <BodyM medium>BodyM Medium</BodyM>\n <BodyS>BodyS</BodyS>\n <BodyS bold>BodyS Bold</BodyS>\n <BodyS medium>BodyS Medium</BodyS>\n <BodyXS>BodyXS</BodyXS>\n <BodyXS bold>BodyXS Bold</BodyXS>\n <BodyXS medium>BodyXS Medium</BodyXS>\n <BodyXXS>BodyXXS</BodyXXS>\n <BodyXXS bold>BodyXXS Bold</BodyXXS>\n <BodyXXS medium>BodyXXS Medium</BodyXXS>\n </div>\n );\n}"
|
|
41099
|
+
},
|
|
41100
|
+
{
|
|
41101
|
+
"exportName": "Vendor2",
|
|
41102
|
+
"displayName": "Примеры Примеры",
|
|
41103
|
+
"type": "vendor",
|
|
41104
|
+
"code": "import React, { useState } from 'react';\nimport { Autocomplete, BodyXS, Divider, TabItem, Tabs } from '@daisforge/ui';\nexport function App() {\n const departments = [\n { value: 'all', label: 'Все' },\n { value: 'design', label: 'Дизайн' },\n { value: 'frontend', label: 'Фронтенд' },\n ];\n const people = [\n { label: 'Алексей Смирнов', department: 'design' },\n { label: 'Екатерина Иванова', department: 'design' },\n { label: 'Ольга Васильева', department: 'design' },\n { label: 'Дмитрий Петров', department: 'frontend' },\n { label: 'Сергей Сидоров', department: 'frontend' },\n { label: 'Мария Кузнецова', department: 'frontend' },\n { label: 'Андрей Попов', department: 'frontend' },\n ];\n const [department, setDepartment] = useState('all');\n const [value, setValue] = useState('');\n const filter = (item) =>\n (department === 'all' || item.department === department) &&\n item.label.toLowerCase().includes(value.toLowerCase());\n const found = people.filter(filter);\n return (\n <div style={{ display: 'block', height:\"420px\" }}>\n <Autocomplete\n suggestions={people}\n filter={filter}\n value={value}\n onChange={(event) => setValue(event.target.value)}\n onSuggestionSelect={(item) => setValue(item.label)}\n threshold={0}\n label=\"Label\"\n placeholder=\"Placeholder\"\n listMaxHeight=\"200px\"\n beforeList={\n <Tabs view=\"filled\" size=\"xs\" stretch>\n {departments.map((item) => (\n <TabItem\n key={item.value}\n view=\"secondary\"\n size=\"xs\"\n tabIndex={0}\n selected={item.value === department}\n onClick={() => setDepartment(item.value)}\n >\n {item.label}\n </TabItem>\n ))}\n </Tabs>\n }\n afterList={\n <>\n <Divider />\n <BodyXS style={{ padding: '0.5rem 0.75rem', color: 'var\n// … (обрезано)"
|
|
40900
41105
|
}
|
|
40901
41106
|
]
|
|
40902
41107
|
},
|
|
@@ -42314,7 +42519,7 @@
|
|
|
42314
42519
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
42315
42520
|
}
|
|
42316
42521
|
],
|
|
42317
|
-
"atomicMcpVersion": "0.
|
|
42522
|
+
"atomicMcpVersion": "0.360.0",
|
|
42318
42523
|
"importPath": "@daisforge/ui",
|
|
42319
42524
|
"importStatement": "import { ViewContainer } from '@daisforge/ui';",
|
|
42320
42525
|
"minimalUsage": "<ViewContainer />",
|
|
@@ -42396,7 +42601,45 @@
|
|
|
42396
42601
|
],
|
|
42397
42602
|
"hasCuratedMeta": true,
|
|
42398
42603
|
"parentComponent": "Widget",
|
|
42399
|
-
"
|
|
42604
|
+
"inheritedProps": [
|
|
42605
|
+
{
|
|
42606
|
+
"name": "length",
|
|
42607
|
+
"type": "string | number",
|
|
42608
|
+
"required": false,
|
|
42609
|
+
"description": "Размер разделителя",
|
|
42610
|
+
"default": "'100%'",
|
|
42611
|
+
"inheritedFrom": "Divider",
|
|
42612
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
42613
|
+
},
|
|
42614
|
+
{
|
|
42615
|
+
"name": "orientation",
|
|
42616
|
+
"type": "\"horizontal\" | \"vertical\"",
|
|
42617
|
+
"required": false,
|
|
42618
|
+
"description": "Направление разделителя",
|
|
42619
|
+
"default": "'horizontal'",
|
|
42620
|
+
"inheritedFrom": "Divider",
|
|
42621
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
42622
|
+
},
|
|
42623
|
+
{
|
|
42624
|
+
"name": "size",
|
|
42625
|
+
"type": "\"m\"",
|
|
42626
|
+
"required": false,
|
|
42627
|
+
"description": "Размер разделителя",
|
|
42628
|
+
"default": "'m'",
|
|
42629
|
+
"inheritedFrom": "Divider",
|
|
42630
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
42631
|
+
},
|
|
42632
|
+
{
|
|
42633
|
+
"name": "view",
|
|
42634
|
+
"type": "\"default\" | \"dark\" | \"light\" | \"inverse\"",
|
|
42635
|
+
"required": false,
|
|
42636
|
+
"description": "Вид разделителя",
|
|
42637
|
+
"default": "'default'",
|
|
42638
|
+
"inheritedFrom": "Divider",
|
|
42639
|
+
"inheritedPackage": "@salutejs/sdds-finai"
|
|
42640
|
+
}
|
|
42641
|
+
],
|
|
42642
|
+
"atomicMcpVersion": "0.360.0",
|
|
42400
42643
|
"compoundPartOf": {
|
|
42401
42644
|
"component": "Widget",
|
|
42402
42645
|
"part": "Divider"
|
|
@@ -42411,6 +42654,12 @@
|
|
|
42411
42654
|
"type": "usage",
|
|
42412
42655
|
"code": "<Widget.Divider />",
|
|
42413
42656
|
"sourceFile": "packages/storybook/src/stories/Widget/Widget.stories.tsx"
|
|
42657
|
+
},
|
|
42658
|
+
{
|
|
42659
|
+
"exportName": "Vendor",
|
|
42660
|
+
"displayName": "Ориентация разделителя",
|
|
42661
|
+
"type": "vendor",
|
|
42662
|
+
"code": "import React from 'react';\nimport { BodyS, Divider } from '@daisforge/ui';\nexport function App() {\n const Demo = ({\n orientation = 'horizontal',\n length = '100%',\n beforeText = 'Before',\n afterText = 'After',\n }) => {\n const wrapperStyle = {\n display: \"inline-flex\",\n gap: \"0.5rem\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexDirection: orientation === \"horizontal\" ? \"column\" : \"row\"\n }\n return (\n <div style={wrapperStyle}>\n <BodyS>{beforeText}</BodyS>\n <Divider orientation={orientation} length={length} />\n <BodyS>{afterText}</BodyS>\n </div>\n );\n };\n return (\n <div style={{ display: \"flex\", gap: \"2rem\" }}>\n <Demo />\n <Demo orientation=\"vertical\" />\n </div>\n );\n}"
|
|
42414
42663
|
}
|
|
42415
42664
|
]
|
|
42416
42665
|
},
|
|
@@ -42721,7 +42970,7 @@
|
|
|
42721
42970
|
],
|
|
42722
42971
|
"hasCuratedMeta": true,
|
|
42723
42972
|
"parentComponent": "Widget",
|
|
42724
|
-
"atomicMcpVersion": "0.
|
|
42973
|
+
"atomicMcpVersion": "0.360.0",
|
|
42725
42974
|
"compoundPartOf": {
|
|
42726
42975
|
"component": "Widget",
|
|
42727
42976
|
"part": "Footer"
|
|
@@ -42868,7 +43117,7 @@
|
|
|
42868
43117
|
],
|
|
42869
43118
|
"hasCuratedMeta": true,
|
|
42870
43119
|
"parentComponent": "Widget",
|
|
42871
|
-
"atomicMcpVersion": "0.
|
|
43120
|
+
"atomicMcpVersion": "0.360.0",
|
|
42872
43121
|
"compoundPartOf": {
|
|
42873
43122
|
"component": "Widget",
|
|
42874
43123
|
"part": "Header"
|
|
@@ -43195,13 +43444,13 @@
|
|
|
43195
43444
|
},
|
|
43196
43445
|
{
|
|
43197
43446
|
"name": "view",
|
|
43198
|
-
"type": "\"clear\" | \"default\" | \"accent\" | \"positive\" | \"warning\" | \"negative\" | \"dark\" | \"secondary\" | \"black\" | \"white\"",
|
|
43447
|
+
"type": "\"clear\" | \"default\" | \"accent\" | \"positive\" | \"warning\" | \"negative\" | \"dark\" | \"secondary\" | \"black\" | \"white\" | \"gradient\"",
|
|
43199
43448
|
"required": false,
|
|
43200
43449
|
"inheritedFrom": "IconButton",
|
|
43201
43450
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
43202
43451
|
}
|
|
43203
43452
|
],
|
|
43204
|
-
"atomicMcpVersion": "0.
|
|
43453
|
+
"atomicMcpVersion": "0.360.0",
|
|
43205
43454
|
"compoundPartOf": {
|
|
43206
43455
|
"component": "Widget",
|
|
43207
43456
|
"part": "IconButtonBack"
|
|
@@ -43241,7 +43490,7 @@
|
|
|
43241
43490
|
],
|
|
43242
43491
|
"hasCuratedMeta": true,
|
|
43243
43492
|
"parentComponent": "Widget",
|
|
43244
|
-
"atomicMcpVersion": "0.
|
|
43493
|
+
"atomicMcpVersion": "0.360.0",
|
|
43245
43494
|
"compoundPartOf": {
|
|
43246
43495
|
"component": "Widget",
|
|
43247
43496
|
"part": "IconButtonDots"
|
|
@@ -43573,7 +43822,7 @@
|
|
|
43573
43822
|
],
|
|
43574
43823
|
"hasCuratedMeta": true,
|
|
43575
43824
|
"parentComponent": "Widget",
|
|
43576
|
-
"atomicMcpVersion": "0.
|
|
43825
|
+
"atomicMcpVersion": "0.360.0",
|
|
43577
43826
|
"compoundPartOf": {
|
|
43578
43827
|
"component": "Widget",
|
|
43579
43828
|
"part": "ServiceButtons"
|
|
@@ -43608,7 +43857,7 @@
|
|
|
43608
43857
|
],
|
|
43609
43858
|
"hasCuratedMeta": true,
|
|
43610
43859
|
"parentComponent": "Widget",
|
|
43611
|
-
"atomicMcpVersion": "0.
|
|
43860
|
+
"atomicMcpVersion": "0.360.0",
|
|
43612
43861
|
"compoundPartOf": {
|
|
43613
43862
|
"component": "Widget",
|
|
43614
43863
|
"part": "Content"
|
|
@@ -44574,7 +44823,7 @@
|
|
|
44574
44823
|
"WidgetServiceButtons",
|
|
44575
44824
|
"WidgetContent"
|
|
44576
44825
|
],
|
|
44577
|
-
"atomicMcpVersion": "0.
|
|
44826
|
+
"atomicMcpVersion": "0.360.0",
|
|
44578
44827
|
"importPath": "@daisforge/ui",
|
|
44579
44828
|
"importStatement": "import { Widget } from '@daisforge/ui';",
|
|
44580
44829
|
"minimalUsage": "<Widget>\n {/* части: Widget.Header, Widget.Footer, Widget.Content, Widget.Divider, Widget.ServiceButtons, Widget.IconButtonDots, Widget.IconButtonBack */}\n</Widget>",
|
|
@@ -44980,7 +45229,7 @@
|
|
|
44980
45229
|
],
|
|
44981
45230
|
"chooseWhen": "Внутри формы на react-hook-form — принимает name/control/rules вместо value/onChange.",
|
|
44982
45231
|
"hasCuratedMeta": true,
|
|
44983
|
-
"atomicMcpVersion": "0.
|
|
45232
|
+
"atomicMcpVersion": "0.360.0",
|
|
44984
45233
|
"importPath": "@daisforge/ui",
|
|
44985
45234
|
"importStatement": "import { FormAutocomplete } from '@daisforge/ui';",
|
|
44986
45235
|
"minimalUsage": "<FormAutocomplete name={{}} />",
|
|
@@ -45114,7 +45363,7 @@
|
|
|
45114
45363
|
],
|
|
45115
45364
|
"chooseWhen": "Внутри формы на react-hook-form — одиночный чекбокс или группа через name/control, правила — через rules.",
|
|
45116
45365
|
"hasCuratedMeta": true,
|
|
45117
|
-
"atomicMcpVersion": "0.
|
|
45366
|
+
"atomicMcpVersion": "0.360.0",
|
|
45118
45367
|
"importPath": "@daisforge/ui",
|
|
45119
45368
|
"importStatement": "import { FormCheckbox } from '@daisforge/ui';",
|
|
45120
45369
|
"minimalUsage": "<FormCheckbox name={{}} />",
|
|
@@ -45575,7 +45824,7 @@
|
|
|
45575
45824
|
],
|
|
45576
45825
|
"chooseWhen": "Внутри формы на react-hook-form — тот же мультивыбор с поиском через name/control/rules.",
|
|
45577
45826
|
"hasCuratedMeta": true,
|
|
45578
|
-
"atomicMcpVersion": "0.
|
|
45827
|
+
"atomicMcpVersion": "0.360.0",
|
|
45579
45828
|
"importPath": "@daisforge/ui",
|
|
45580
45829
|
"importStatement": "import { FormCombobox } from '@daisforge/ui';",
|
|
45581
45830
|
"minimalUsage": "<FormCombobox items={[]} name={{}} />",
|
|
@@ -46087,7 +46336,7 @@
|
|
|
46087
46336
|
],
|
|
46088
46337
|
"chooseWhen": "Внутри формы на react-hook-form — добавляет валидацию формата и диапазона min/max через rules.",
|
|
46089
46338
|
"hasCuratedMeta": true,
|
|
46090
|
-
"atomicMcpVersion": "0.
|
|
46339
|
+
"atomicMcpVersion": "0.360.0",
|
|
46091
46340
|
"importPath": "@daisforge/ui",
|
|
46092
46341
|
"importStatement": "import { FormDatePicker } from '@daisforge/ui';",
|
|
46093
46342
|
"minimalUsage": "<FormDatePicker name={{}} />",
|
|
@@ -46719,7 +46968,7 @@
|
|
|
46719
46968
|
],
|
|
46720
46969
|
"chooseWhen": "Внутри формы на react-hook-form — тот же диапазон дат с валидацией периода через rules.",
|
|
46721
46970
|
"hasCuratedMeta": true,
|
|
46722
|
-
"atomicMcpVersion": "0.
|
|
46971
|
+
"atomicMcpVersion": "0.360.0",
|
|
46723
46972
|
"importPath": "@daisforge/ui",
|
|
46724
46973
|
"importStatement": "import { FormDatePickerRange } from '@daisforge/ui';",
|
|
46725
46974
|
"minimalUsage": "<FormDatePickerRange name={{}} />",
|
|
@@ -47077,7 +47326,7 @@
|
|
|
47077
47326
|
],
|
|
47078
47327
|
"chooseWhen": "Внутри формы на react-hook-form — то же поле с маской, плюс поддержка чипов, через name/control.",
|
|
47079
47328
|
"hasCuratedMeta": true,
|
|
47080
|
-
"atomicMcpVersion": "0.
|
|
47329
|
+
"atomicMcpVersion": "0.360.0",
|
|
47081
47330
|
"importPath": "@daisforge/ui",
|
|
47082
47331
|
"importStatement": "import { FormMask } from '@daisforge/ui';",
|
|
47083
47332
|
"minimalUsage": "<FormMask mask={'значение'} name={{}} />",
|
|
@@ -47437,7 +47686,7 @@
|
|
|
47437
47686
|
],
|
|
47438
47687
|
"chooseWhen": "Внутри формы на react-hook-form — то же форматирование чисел через name/control/rules.",
|
|
47439
47688
|
"hasCuratedMeta": true,
|
|
47440
|
-
"atomicMcpVersion": "0.
|
|
47689
|
+
"atomicMcpVersion": "0.360.0",
|
|
47441
47690
|
"importPath": "@daisforge/ui",
|
|
47442
47691
|
"importStatement": "import { FormNumberFormat } from '@daisforge/ui';",
|
|
47443
47692
|
"minimalUsage": "<FormNumberFormat name={{}} />",
|
|
@@ -47556,7 +47805,7 @@
|
|
|
47556
47805
|
],
|
|
47557
47806
|
"chooseWhen": "Только как элемент внутри FormRadioGroup для форм на react-hook-form — не используется отдельно от группы.",
|
|
47558
47807
|
"hasCuratedMeta": true,
|
|
47559
|
-
"atomicMcpVersion": "0.
|
|
47808
|
+
"atomicMcpVersion": "0.360.0",
|
|
47560
47809
|
"importPath": "@daisforge/ui",
|
|
47561
47810
|
"importStatement": "import { FormRadiobox } from '@daisforge/ui';",
|
|
47562
47811
|
"minimalUsage": "<FormRadiobox value={{}} />",
|
|
@@ -47662,7 +47911,7 @@
|
|
|
47662
47911
|
],
|
|
47663
47912
|
"chooseWhen": "Внутри формы на react-hook-form — та же группа радиокнопок с валидацией и подсказкой через name/control/rules.",
|
|
47664
47913
|
"hasCuratedMeta": true,
|
|
47665
|
-
"atomicMcpVersion": "0.
|
|
47914
|
+
"atomicMcpVersion": "0.360.0",
|
|
47666
47915
|
"importPath": "@daisforge/ui",
|
|
47667
47916
|
"importStatement": "import { FormRadioGroup } from '@daisforge/ui';",
|
|
47668
47917
|
"minimalUsage": "<FormRadioGroup name={{}} />",
|
|
@@ -47826,7 +48075,7 @@
|
|
|
47826
48075
|
],
|
|
47827
48076
|
"chooseWhen": "Внутри формы на react-hook-form — тот же переключатель через name/control.",
|
|
47828
48077
|
"hasCuratedMeta": true,
|
|
47829
|
-
"atomicMcpVersion": "0.
|
|
48078
|
+
"atomicMcpVersion": "0.360.0",
|
|
47830
48079
|
"importPath": "@daisforge/ui",
|
|
47831
48080
|
"importStatement": "import { FormSegmentGroup } from '@daisforge/ui';",
|
|
47832
48081
|
"minimalUsage": "<FormSegmentGroup items={'Контент'} name={{}} />",
|
|
@@ -48261,7 +48510,7 @@
|
|
|
48261
48510
|
],
|
|
48262
48511
|
"chooseWhen": "Внутри формы на react-hook-form — тот же список через name/control/rules.",
|
|
48263
48512
|
"hasCuratedMeta": true,
|
|
48264
|
-
"atomicMcpVersion": "0.
|
|
48513
|
+
"atomicMcpVersion": "0.360.0",
|
|
48265
48514
|
"importPath": "@daisforge/ui",
|
|
48266
48515
|
"importStatement": "import { FormSelect } from '@daisforge/ui';",
|
|
48267
48516
|
"minimalUsage": "<FormSelect items={[]} name={{}} />",
|
|
@@ -48403,7 +48652,7 @@
|
|
|
48403
48652
|
],
|
|
48404
48653
|
"chooseWhen": "Внутри формы на react-hook-form — тот же тумблер через name/control.",
|
|
48405
48654
|
"hasCuratedMeta": true,
|
|
48406
|
-
"atomicMcpVersion": "0.
|
|
48655
|
+
"atomicMcpVersion": "0.360.0",
|
|
48407
48656
|
"importPath": "@daisforge/ui",
|
|
48408
48657
|
"importStatement": "import { FormSwitch } from '@daisforge/ui';",
|
|
48409
48658
|
"minimalUsage": "<FormSwitch name={{}} />",
|
|
@@ -48694,7 +48943,7 @@
|
|
|
48694
48943
|
],
|
|
48695
48944
|
"chooseWhen": "Внутри формы на react-hook-form — то же поле со счётчиком символов через name/control/rules.",
|
|
48696
48945
|
"hasCuratedMeta": true,
|
|
48697
|
-
"atomicMcpVersion": "0.
|
|
48946
|
+
"atomicMcpVersion": "0.360.0",
|
|
48698
48947
|
"importPath": "@daisforge/ui",
|
|
48699
48948
|
"importStatement": "import { FormTextArea } from '@daisforge/ui';",
|
|
48700
48949
|
"minimalUsage": "<FormTextArea name={{}} />",
|
|
@@ -48998,7 +49247,7 @@
|
|
|
48998
49247
|
],
|
|
48999
49248
|
"chooseWhen": "Внутри формы на react-hook-form — то же поле с выводом ошибки валидации через name/control/rules.",
|
|
49000
49249
|
"hasCuratedMeta": true,
|
|
49001
|
-
"atomicMcpVersion": "0.
|
|
49250
|
+
"atomicMcpVersion": "0.360.0",
|
|
49002
49251
|
"importPath": "@daisforge/ui",
|
|
49003
49252
|
"importStatement": "import { FormTextField } from '@daisforge/ui';",
|
|
49004
49253
|
"minimalUsage": "<FormTextField name={{}} />",
|
|
@@ -49109,7 +49358,7 @@
|
|
|
49109
49358
|
}
|
|
49110
49359
|
],
|
|
49111
49360
|
"hasCuratedMeta": true,
|
|
49112
|
-
"atomicMcpVersion": "0.
|
|
49361
|
+
"atomicMcpVersion": "0.360.0",
|
|
49113
49362
|
"importPath": "@daisforge/ui",
|
|
49114
49363
|
"importStatement": "import { Container } from '@daisforge/ui';",
|
|
49115
49364
|
"minimalUsage": "<Container />",
|
|
@@ -49314,7 +49563,7 @@
|
|
|
49314
49563
|
}
|
|
49315
49564
|
],
|
|
49316
49565
|
"hasCuratedMeta": true,
|
|
49317
|
-
"atomicMcpVersion": "0.
|
|
49566
|
+
"atomicMcpVersion": "0.360.0",
|
|
49318
49567
|
"importPath": "@daisforge/ui",
|
|
49319
49568
|
"importStatement": "import { ErrorPage } from '@daisforge/ui';",
|
|
49320
49569
|
"minimalUsage": "<ErrorPage />",
|
|
@@ -49653,13 +49902,13 @@
|
|
|
49653
49902
|
},
|
|
49654
49903
|
{
|
|
49655
49904
|
"name": "view",
|
|
49656
|
-
"type": "\"clear\" | \"default\" | \"accent\" | \"positive\" | \"warning\" | \"negative\" | \"dark\" | \"secondary\" | \"black\" | \"white\"",
|
|
49905
|
+
"type": "\"clear\" | \"default\" | \"accent\" | \"positive\" | \"warning\" | \"negative\" | \"dark\" | \"secondary\" | \"black\" | \"white\" | \"gradient\"",
|
|
49657
49906
|
"required": false,
|
|
49658
49907
|
"inheritedFrom": "IconButton",
|
|
49659
49908
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
49660
49909
|
}
|
|
49661
49910
|
],
|
|
49662
|
-
"atomicMcpVersion": "0.
|
|
49911
|
+
"atomicMcpVersion": "0.360.0",
|
|
49663
49912
|
"compoundPartOf": {
|
|
49664
49913
|
"component": "FiltersActions",
|
|
49665
49914
|
"part": "DotsIconButton"
|
|
@@ -49937,13 +50186,13 @@
|
|
|
49937
50186
|
},
|
|
49938
50187
|
{
|
|
49939
50188
|
"name": "view",
|
|
49940
|
-
"type": "\"clear\" | \"default\" | \"accent\" | \"positive\" | \"warning\" | \"negative\" | \"dark\" | \"secondary\" | \"black\" | \"white\"",
|
|
50189
|
+
"type": "\"clear\" | \"default\" | \"accent\" | \"positive\" | \"warning\" | \"negative\" | \"dark\" | \"secondary\" | \"black\" | \"white\" | \"gradient\"",
|
|
49941
50190
|
"required": false,
|
|
49942
50191
|
"inheritedFrom": "Button",
|
|
49943
50192
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
49944
50193
|
}
|
|
49945
50194
|
],
|
|
49946
|
-
"atomicMcpVersion": "0.
|
|
50195
|
+
"atomicMcpVersion": "0.360.0",
|
|
49947
50196
|
"compoundPartOf": {
|
|
49948
50197
|
"component": "FiltersActions",
|
|
49949
50198
|
"part": "FiltersButton"
|
|
@@ -50084,7 +50333,7 @@
|
|
|
50084
50333
|
],
|
|
50085
50334
|
"hasCuratedMeta": true,
|
|
50086
50335
|
"parentComponent": "FiltersActions",
|
|
50087
|
-
"atomicMcpVersion": "0.
|
|
50336
|
+
"atomicMcpVersion": "0.360.0",
|
|
50088
50337
|
"compoundPartOf": {
|
|
50089
50338
|
"component": "FiltersActions",
|
|
50090
50339
|
"part": "ListOfFilters"
|
|
@@ -50140,7 +50389,7 @@
|
|
|
50140
50389
|
],
|
|
50141
50390
|
"hasCuratedMeta": true,
|
|
50142
50391
|
"parentComponent": "FiltersActions",
|
|
50143
|
-
"atomicMcpVersion": "0.
|
|
50392
|
+
"atomicMcpVersion": "0.360.0",
|
|
50144
50393
|
"importPath": "@daisforge/ui",
|
|
50145
50394
|
"importStatement": "import { RedDot } from '@daisforge/ui';",
|
|
50146
50395
|
"minimalUsage": "<RedDot />",
|
|
@@ -50433,7 +50682,7 @@
|
|
|
50433
50682
|
"inheritedPackage": "@salutejs/sdds-finai"
|
|
50434
50683
|
}
|
|
50435
50684
|
],
|
|
50436
|
-
"atomicMcpVersion": "0.
|
|
50685
|
+
"atomicMcpVersion": "0.360.0",
|
|
50437
50686
|
"compoundPartOf": {
|
|
50438
50687
|
"component": "FiltersActions",
|
|
50439
50688
|
"part": "Tabs"
|
|
@@ -52109,7 +52358,7 @@
|
|
|
52109
52358
|
"FiltersActionsTabItem",
|
|
52110
52359
|
"FiltersActionsTabs"
|
|
52111
52360
|
],
|
|
52112
|
-
"atomicMcpVersion": "0.
|
|
52361
|
+
"atomicMcpVersion": "0.360.0",
|
|
52113
52362
|
"importPath": "@daisforge/ui",
|
|
52114
52363
|
"importStatement": "import { FiltersActions } from '@daisforge/ui';",
|
|
52115
52364
|
"minimalUsage": "<FiltersActions>\n {/* части: FiltersActions.FiltersButton, FiltersActions.DotsIconButton, FiltersActions.ListOfFilters, FiltersActions.TextFieldSearch, FiltersActions.Tabs, FiltersActions.TabItem, FiltersActions.SegmentItem, FiltersActions.Tooltip, FiltersActions.TooltipList, FiltersActions.FilterPopover, FiltersActions.FiltersButtonWithPopover, FiltersActions.ResetAllFiltersButton, FiltersActions.SwitcherFilter, FiltersActions.RedDot */}\n</FiltersActions>",
|
|
@@ -52310,7 +52559,7 @@
|
|
|
52310
52559
|
}
|
|
52311
52560
|
],
|
|
52312
52561
|
"hasCuratedMeta": true,
|
|
52313
|
-
"atomicMcpVersion": "0.
|
|
52562
|
+
"atomicMcpVersion": "0.360.0",
|
|
52314
52563
|
"importPath": "@daisforge/ui",
|
|
52315
52564
|
"importStatement": "import { Layout } from '@daisforge/ui';",
|
|
52316
52565
|
"minimalUsage": "<Layout />",
|
|
@@ -52437,7 +52686,7 @@
|
|
|
52437
52686
|
}
|
|
52438
52687
|
],
|
|
52439
52688
|
"hasCuratedMeta": true,
|
|
52440
|
-
"atomicMcpVersion": "0.
|
|
52689
|
+
"atomicMcpVersion": "0.360.0",
|
|
52441
52690
|
"importPath": "@daisforge/ui",
|
|
52442
52691
|
"importStatement": "import { PageLayout } from '@daisforge/ui';",
|
|
52443
52692
|
"minimalUsage": "<PageLayout />",
|
|
@@ -53634,11 +53883,11 @@
|
|
|
53634
53883
|
"legacy": false,
|
|
53635
53884
|
"summary": "*tableConfig.filtering**",
|
|
53636
53885
|
"docs": "# Filtering\n\n**tableConfig.filtering**\n\nФильтрация данных таблицы с поддержкой автоматического и ручного режимов.\n\n## Ключевые особенности\n\n- Три типа фильтров: `input`, `select`, `custom`\n- Автоматическая фильтрация по умолчанию, ручная через `manualFiltering: true`\n- Отображение активных фильтров в виде chip-элементов\n- Поддержка фильтрации через sidebar с настройкой порядка и глобальных фильтров\n- Кастомизация chip-стилей и лейблов\n\n## Типы фильтров\n\n### Input\n\nТекстовый фильтр с режимами: `'includes'`, `'startWith'`, `'equal'` или кастомная функция.\n\n### Select\n\nФильтр выбором из списка. Поддержка одиночного (`'single'`) и множественного (`'multiple'`) выбора.\n\n### Custom\n\nПолностью кастомный компонент фильтра через `customRender`.\n\n## Конфигурация FilteringConfig\n\n- **`state`** `[T, setState]` — стейт фильтров (обязательный)\n- **`manualFiltering`** `boolean` — ручная фильтрация (данные не фильтруются таблицей)\n- **`filtersInfo`** `Record<keyof T, { label, clearedValue }>` — метки и дефолтные значения фильтров\n- **`sidebarConfig`** `{ order?, items }` — конфигурация sidebar с фильтрами\n- **`chipStyle`** `(itemOrGroup, item) => CSSObject` — кастомные стили для chip-элементов\n- **`renderGroupLabel`** `(group) => string` — кастомный заголовок группы чипсов\n- **`renderChipLabel`** `(group, item) => string` — кастомный текст чипса\n\n## Кастомизация чипсов\n\n### chipStyle\n\nПозволяет динамически задавать стили для каждого чипа фильтра в зависимости от его типа и содержимого.\n\n### renderGroupLabel\n\nФорматтер заголовка группы чипсов. Полезен для i18n или добавления счётчика выбранных элементов.\n\n### renderChipLabel\n\nФорматтер текста внутри чипса. Полезен при серверной пагинации, когда в стейте хранится только `value`, а `label` подставляется из кэша.\n\n## Особенности\n\n- При `manualFiltering: true` таблица не фильтрует данные — ожидается внешняя логика (серверная)\n- `sidebarConfig` позволяет добавлять глобальные фильтры, не привязанные к колонкам\n- `filtersInfo` задаёт лейблы и значения по умолчанию для каждого фильтра\n\n> Подробнее о типах — [Filtering API](?path=/docs/локальные-компоненты-tablecanvas-filtering-api--docs)",
|
|
53637
|
-
"apiDocs": "# Filtering API\n\n## FilteringConfig\n\n```typescript\ntype FilteringConfig<T> = {\n state: [T, React.Dispatch<React.SetStateAction<T>>];\n /**\n * @deprecated Использовать filtersInfo\n *\n * clearedValue - состояние фильтров после очистки. Используется для сравнения:\n * Например, был ли фильтр конкретной колонки изменен рассчитывается посредством сравнения текущего значения фильтра и значения фильтра в clearedValue.\n * Если они равны, то фильтр считается не измененным.\n */\n clearedValue?: T;\n /**\n * Информация о фильтрах для каждой колонки.\n * Используется для:\n * 1. Хранения меток (label) фильтров для отображения в UI\n * 2. Хранения значений по умолчанию (clearedValue) для каждого фильтра\n * 3. Определения, был ли фильтр изменен (сравнение текущего значения с clearedValue)\n */\n filtersInfo?: Record<\n keyof T,\n {\n label: string;\n clearedValue: T[keyof T];\n }\n >;\n /**\n * manualFiltering - пропс, активирующий ручную-кастомную (или на стороне бэка) фильтрацию.\n * @remarks\n * Для автоматической фильтрации (когда не используется manualFiltering в tableConfig):\n * - Для всех типов фильтров обязательно должен быть указан `valueInRow`\n * - Для component: 'select' дополнительно должен быть указан `filteringType`\n * - Для component: 'input' с кастомным фильтром (когда filter - функция)\n * функция фильтрации должна быть передана явно\n *\n * Если используется manualFiltering, эти параметры не обязательны,\n * так как вся логика фильтрации реализуется извне.\n */\n manualFiltering?: boolean;\n /**\n * Конфигурация для отображения фильтров в правом сайдбаре.\n *\n * Позволяет:\n * 1. Добавлять глобальные фильтры (не привязанные к конкретной колонке)\n * 2. Управлять порядком отображения фильтров\n * 3. Переопределять рендер и заголовки колоночных фильтров\n *\n * Логика работы:\n * - По умолчанию в сайдбаре отображаются все колоночные фильтры (из columnConfig)\n * - Ключом фильтра считается `key` колонки, если его нет, то пытаемся взять `keyInFilterState` (если указан), иначе это не будет работать\n * - Заголовком фильтра по умолчанию является `name` колонки или ключ фильтра (name || key)\n * - Глобальные фильтры добавляются через `items` с уникальными ключами\n *\n * Особенности:\n * 1. Порядок отображения:\n * - Сначала фильтры из `order` (в указанной последовательности)\n * - Затем остальные колоночные фильтры (в порядке columnConfig)\n * - В конце - глобальные фильтры (в алфавитном порядке ключей)\n *\n * 2. Переопределение колоночных фильтров:\n * - Чтобы изменить заголовок: укажите ключ колонки в `items` с новым `label`\n * - Чтобы заменить рендер: укажите ключ колонки с `customRenderFn`\n * - Оригинальный фильтр из колонки будет проигнорирован\n *\n * 3. Глобальные фильтры:\n * - Ключ не должен совпадать с ключами колонок\n * - Обязательно указать `label` и `customRenderFn`\n * - Отображаются после всех колоночных фильтров, если не переопределены в order\n *\n * @example\n * // Добавление глобального фильтра и изменение порядка\n * sidebarConfig: {\n * order: ['status', 'tasks', 'type'], // Сначала статус, затем глобальный поиск\n * items: {\n * tasks: { // Уникальный ключ\n * label: 'Поиск по всем полям',\n * customRenderFn: () => <TaskComponent />\n * },\n * status: { // Переопределение колоночного фильтра\n * label: 'Статус заявки', // Новый заголовок\n * customRenderFn: () => <CustomStatusFilter /> // Кастомный рендер\n * }\n * type: { // Переопределение только Label колоночного фильтра\n * label: 'Тип', // Новый заголовок\n * }\n * }\n * }\n */\n sidebarConfig?: {\n /**\n * Определяет порядок отображения фильтров.\n * - Указываются ключи фильтров (колоночных или глобальных)\n * - Не указанные в order фильтры отображаются после\n * - Если order пуст, сохраняется порядок: глобальные фильтры + columnConfig фильтры в конце\n */\n order?: string[];\n /**\n * Конфигурация фильтров для сайдбара.\n * Ключом может быть:\n * - Ключ колонки (для переопределения колоночного фильтра)\n * - Уникальный ключ (для добавления глобального фильтра)\n */\n items: Partial<\n Record<\n keyof T,\n {\n /** Заголовок фильтра (обязателен для глобальных фильтров), можно использовать для переопределения для локальных фильтров */\n label: string;\n /**\n * Функция рендера компонента фильтра.\n * Для колоночных фильтров переопределяет оригинальный рендер.\n * Для глобальных фильтров обязательна.\n */\n customRenderFn?: (\n filters: T,\n setFilters: React.Dispatch<React.SetStateAction<T>>,\n ) => React.ReactNode;\n }\n >\n >;\n };\n /**\n * Callback для кастомизации стилей чипсов (фильтров) в списке\n *\n * @param {ItemOrGroup} itemOrGroup - Текущий элемент или группа фильтров\n * @param {Item | undefined} item - Конкретный элемент фильтра (если есть)\n * @returns {CSSObject} Объект стилей, который будет применен к чипсу\n *\n * @description\n * Позволяет динамически задавать стили для каждого чипса в зависимости от его типа и содержимого.\n * Вызывается для каждого отображаемого чипса (как для отдельных элементов, так и для элементов внутри групп).\n *\n * @example\n * // Пример 1: Стилизация чипсов по типу\n * chipStyle: (itemOrGroup, item) => {\n * if (isGroup(itemOrGroup)) {\n * return { backgroundColor: '#f0f0f0' };\n * }\n * return { backgroundColor: '#e0e0e0' };\n * }\n *\n * @example\n * // Пример 2: Стилизация по значению фильтра\n * chipStyle: (itemOrGroup, item) => {\n * if (item?.label === 'Высокий приоритет') {\n * return {\n * backgroundColor: '#ffebee',\n * color: '#d32f2f'\n * };\n * }\n * return {};\n * }\n *\n * @example\n * // Пример 3: Разные стили для элементов в группе и одиночных\n * chipStyle: (itemOrGroup, item) => {\n * if (item) {\n * // Стиль для элемента внутри группы\n * return { maxWidth: 180 };\n * }\n * // Стиль для одиночного чипа\n * return { maxWidth: 150 };\n * }\n */\n chipStyle?: (itemOrGroup: ItemOrGroup, item: Item | undefined) => CSSObject;\n /**\n * Пользовательский форматтер заголовка группы чипсов.\n *\n * Используется в блоке активных фильтров для подмены текста заголовка\n * группы (например, “Статус”, “Тип”, “Автор”). Полезно, когда нужно\n * динамически менять подпись (добавить счётчик, i18n и т.п.).\n *\n * @param {ItemOrGroup} itemOrGroup Объект группы (тип Group). Вызов происходит только для групп,\n * поэтому безопасно кастовать к Group.\n * @returns {string} Текст заголовка группы чипсов.\n *\n * @default Возвращается `group.groupLabel`.\n *\n * @remarks\n * - Функция должна быть чистой и быстрой (без сетевых запросов и побочных эффектов).\n * - Возвращайте ТОЛЬКО строку — чипы отображают текстовое значение.\n * - Для длинных строк применяется усечение (overflow с многоточием) на уровне компонента.\n *\n * @example\n * // Добавить двоеточие и количество выбранных элементов\n * renderGroupLabel: (group) => `${group.groupLabel}: ${group.items.length}`\n *\n * @example\n * // Локализация заголовка группы\n * const i18n = { status: 'Статус', type: 'Тип' };\n * renderGroupLabel: (group) => i18n[group.groupId] ?? group.groupLabel\n */\n renderGroupLabel?: (group: Group) => string;\n\n /**\n * Пользовательский форматтер текста чипса (элемента внутри группы или одиночного фильтра).\n *\n * Позволяет управлять тем, что именно отображается внутри каждого чипса. Особенно полезен\n * при серверной пагинации/ленивой загрузке, когда в состоянии фильтра хранится только value,\n * а label необходимо подставить из локального кэша.\n *\n * @param {Group | null } group Группа, внутри которой рендерится чип (или null).\n * @param {Item} item Сам элемент чипса. В группах передаётся конкретный `Item`,\n * для одиночного чипа может быть `undefined`.\n * @returns {string} Текст, который будет показан в чипсе.\n *\n * @default Используется `item?.label.toString()` (или строковое представление value).\n *\n * @remarks\n * - Функция должна быть чистой и быстрой;\n * - Возвращайте ТОЛЬКО строку.\n *\n * @example\n * // 1) Отображение label из кэша при серверной пагинации\n * const labelsCacheRef = useRef(new Map<string, string>());\n * renderChipLabel: (group, item) => {\n * if (item?.id != null) {\n * const key = String(item.id);\n * const fromCache = labelsCacheRef.current.get(key);\n * if (fromCache) return fromCache; // красивый label, если уже загрузили\n * return String(item.label ?? key); // фоллбэк: временно показываем value/label из item\n * }\n * return ''; // безопасный фоллбэк для одиночных случаев\n * }\n *\n * @example\n * // 2) Нормализация отображения числовых значений\n * renderChipLabel: (_group, item) => {\n * const v = Number(item?.label);\n * return Number.isFinite(v) ? v.toLocaleString('ru-RU') : String(item?.label ?? '');\n * }\n *\n * @example\n * // 3) Префикс по типу группы\n * renderChipLabel: (group, item) => {\n * const prefix = group.groupId === 'status' ? '' : '#';\n * return `${prefix}${item?.label ?? item?.id ?? ''}`;\n * }\n */\n renderChipLabel?: (group: Group | null, item: Item) => string;\n};\n\nexport type DefaultSidebarTabIds = 'columns' | 'tableSettings' | 'filtering';\n\n/**\n * Конфигурация sidebar\n */\nexport type SidebarConfig = {\n /**\n * Включен ли sidebar. Отвечает только за UI. Не влияет на перерасчёт фичей.\n * @default true\n */\n enabled?: boolean;\n /**\n * Открыт ли sidebar при первом рендере (uncontrolled-режим).\n * Игнорируется, если передан openState.\n * @default false\n */\n defaultOpen?: boolean;\n /**\n * Внешний контроль открытия/закрытия sidebar.\n * Если передан — источник истины, defaultOpen игнорируется.\n */\n openState?: [boolean, React.Dispatch<React.SetStateAction<boolean>>];\n /**\n * id вкладки, выбранной по умолчанию (актуально при открытом сайдбаре).\n * Если id не найден или у вкладки showInSidebar=false — используется первая доступная.\n */\n defaultActiveTabId?: string;\n /**\n * Внешний контроль активной вкладки (controlled-режим).\n * Если передан — источник истины, defaultActiveTabId игнорируется.\n */\n activeTabState?: [\n string | null,\n React.Dispatch<React.SetStateAction<string | null>>,\n ];\n /**\n * Колбэк смены активной вкладки. Вызывается и в uncontrolled-режиме.\n * При закрытии сайдбара приходит null.\n */\n onActiveTabChange?: (tabId: string | null, tab?: SidebarTab) => void;\n /**\n * Кастомные табы\n */\n customTabs?: Array<\n Omit<SidebarTab, 'id'> & {\n id: Exclude<string, DefaultSidebarTabIds>;\n }\n >;\n /**\n * Порядок отображения кастомных вкладок\n */\n customTabsOrder?: Array<Exclude<string, DefaultSidebarTabIds>>;\n defaultTabs?: Array<\n | {\n id: 'filtering' | 'columns';\n /** название таба в рамках горизонтального табов внутри таба настройки */\n label?: string;\n /** название таба в рамках вертикальных табов сайдбара (если данный таб окажется единственным табом в настройках) */\n title?: string;\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: DomMetadata;\n /**\n * Кастомный элемент справа от title в шапке сайдбара\n */\n titleRightSlot?: React.ReactNode;\n /** @default true */\n showInSidebar?: boolean;\n /** тултип иконки шестеренки (для табов с id = filtering и columns - недоступен. Настраивается через таб с id='tableSettings') */\n iconTooltipText?: undefined;\n }\n | {\n id: 'tableSettings';\n /** название таба в рамках горизонтального табов внутри таба настройки */\n label?: string;\n /** название таба в рамках вертикальных табов сайдбара */\n title?: string;\n\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: DomMetadata;\n /**\n * Кастомный слот для вкладки tableSettings (рендерится после общих настроек)\n * Только дл id: 'tableSettings'\n */\n customGeneralSettingsSlot?: React.ReactNode;\n /**\n * Кастомный элемент справа от title в шапке сайдбара\n */\n titleRightSlot?: React.ReactNode;\n /** @default true */\n showInSidebar?: boolean;\n /** тултип иконки шестеренки @default 'Настройки' */\n iconTooltipText?: string;\n }\n >;\n};\n\nexport function activeViewIs<T extends 'cards' | 'rows'>(\n checkType: T,\n viewState: 'cards' | 'rows',\n view: View,\n): view is ViewMods[T] {\n return checkType === viewState;\n}\n\n/** Размер controlBlock: 'm' и 's' — одинаковые стили, 'xs' — уменьшенный */\nexport type ControlBlockSize = 'm' | 's' | 'xs';\n\nexport type ControlBlockConfig = {\n /**\n * show - наличие controlBlock-а\n * @default true\n */\n show?: boolean;\n /**\n * Размер controlBlock и его элементов (кнопки, иконки, поиск, отступы).\n * 'm' и 's' — стандартные стили, 'xs' — компактный режим.\n * Не влияет на customFeatures и кастомные слоты — они контролируются разработчиком.\n * @default 'm'\n */\n size?: ControlBlockSize;\n /**\n * @deprecated Используйте кастомные кнопки через rightSideInner или customFeatures.\n * leftSideInner - пропс для добавления кнопок в левую часть контролблока.\n * Продолжает работать для обратной совместимости.\n */\n leftSideInner?: ControlBlockButtonProps[];\n /**\n * rightSideInner - пропс для добавления кнопок в правую часть контролблока\n */\n rightSideInner?: ControlBlockButtonProps[];\n /**\n * customFeatures - пропс для добавления кастомных фичей (кнопки-иконки)\n */\n customFeatures?: FeatureItem[];\n /**\n * pinningMenu - нативная фича закрепления столбцов (SplitIconButton с\n * дропдауном) в правой зоне иконок. Появляется, когда активировано\n * закрепление колонок (columnsControl.pinning). Продукт может донастроить\n * и дополнить пункты меню (см. PinningMenuConfig).\n */\n pinningMenu?: PinningMenuConfig;\n /**\n * Пропсы для компонента dropdown в котором будут скрыты левые фичи при адаптивной компрессии\n */\n leftSideDropdownProps?: TableDropdownConfigProps;\n /**\n * Пропсы для компонента dropdown в котором будут скрыты правые фичи при адаптивной компрессии\n */\n rightSideDropdownProps?: TableDropdownConfigProps;\n /**\n * Активна ли фича компрессии (сжатие ToolsMenu при адаптиве)\n * @default true\n */\n enableAdaptiveCompress?: boolean;\n /**\n * Панель массовых действий\n */\n massActionPanel?: {\n /**\n * Кнопки панели. Размеры кнопок/дропдаунов панель подбирает сама (по `size` панели и компактности) —\n * передавать `size` кнопкам не нужно. Если `size` на кнопке всё же задан — он используется как есть.\n */\n buttons: MassActionButtonProps[];\n /**\n * Пропсы для Dropdown, в который сжались кнопки\n */\n collapsedDropdownProps?: TableDropdownConfigProps;\n /**\n * Отступ панели снизу от контейнера (px)\n * @default 24\n */\n bottom?: number;\n /**\n * Управление отображением панели массовых действий.\n * - `undefined` (по умолчанию) — стандартное поведение (показывается при selecting + выбранных строках)\n * - `false` — панель не рендерится, разработчик управляет действиями самостоятельно\n * - `true` — панель показывается всегда, даже без активного selecting и выбранных строк\n */\n show?: boolean;\n /**\n * Размерная сетка панели внутри таблицы: `m`/`s` — обычный размер, `xs` — уменьшенный (кнопки `xxs`, «ещё» `xs`, счётчик Body XS).\n * Viewport-логика (1280) в таблице не используется.\n * @default 's'\n */\n size?: MassActionsSize;\n };\n};\n\n/** Пропсы кнопки редактирования. onClick исключён — используйте onSave/onCancel/onEnableEditing. */\nexport type EditingButtonProps = Omit<\n Partial<ControlBlockButtonProps>,\n | 'onClick'\n | 'size'\n | 'dropdown'\n | 'isTargetAction'\n | 'skipRightDivider'\n | 'tooltipText'\n>;\n\nexport type EditingConfig<\n RowType extends ObjectForExtending,\n RowIdType,\n SummaryRowType,\n> = {\n /**\n * Функция обработки изменений в редактируемой строке\n */\n onRowsChange: Maybe<\n (rows: RowType[], data: RowsChangeData<RowType, SummaryRowType>) => void\n >;\n /**\n * свойство, необходимое для корректного изменения дочерних строк.\n * Данное свойство обязательно, если ваши дочерние строки установлены не под ключом \"subRows\" внутри строки.\n *\n * Как дочерние строки можно указывать свойство, которые вложено в другое свойство.\n * В таком случае \".\" будет знаком для обозначения сл. уровня вложенности.\n *\n * @example \"child\" или \"uvh367.children\"\n */\n subRowsKey?: string;\n /**\n * Глубокое копирование строк перед применением правки в режиме редактирования.\n *\n * Включите, если строки, передаваемые в таблицу, иммутабельны/заморожены\n * (напр. стейт под управлением Redux Toolkit или Immer — они вызывают\n * Object.freeze в dev). При редактировании дочерней строки таблица записывает\n * изменение ВНУТРЬ объекта родителя; на замороженном объекте это падает с\n * `TypeError: Cannot assign to read only property`.\n *\n * Когда флаг включён, таблица сама делает structuredClone редактируемой строки\n * перед записью — ваш иммутабельный стейт не мутируется, и редактирование\n * дочерних строк работает без действий с вашей стороны.\n *\n * ⚠️ Данные строки должны быть сериализуемыми. Где доступен structuredClone —\n * Date/Map/Set и вложенные структуры копируются корректно; на старых средах\n * без structuredClone используется JSON-фоллбэк (теряет Date/Map/Set, undefined\n * и функции). Не включайте без необходимости — глубокое копирование добавляет\n * накладные расходы.\n *\n * @default false\n */\n deepCloneRows?: boolean;\n /**\n * Функция определения уникального id строки\n * @param row\n * @returns\n */\n rowKeyGetter: (row: RowType) => RowIdType;\n /**\n * Функция определения возможности редактирования строки\n * @param row\n * @returns\n */\n rowEditable?: (row: RowType) => boolean;\n /**\n * defaultEnabled - пропс, отвечающий за то, будет ли активен режим редактирования или нет. По умолчанию - не активно.\n * @default false\n */\n defaultEnabled?: boolean;\n /**\n * enabled - необходим для управления режимом редактирования снаружи компонента Таблицы.\n * По умолчанию, управление происходит в компоненте.\n * Приоритетнее, чем defaultEnabled.\n *\n * @type boolean - если НЕ нужно переключение в самой таблице\n * @type [boolean, React.Dispatch<React.SetStateAction<boolean>>] - если нужно переключение в самой таблице\n *\n */\n enabled?: boolean | [boolean, React.Dispatch<React.SetStateAction<boolean>>];\n /**\n * Cостояние скрытия/раскрытия кнопки включения/выключения фичи\n * @default true\n */\n showButtons?: boolean;\n /**\n * Функция, вызывающаяся при включении фичи.\n * @param enableEditorMode - функция включающая режим редактирования\n */\n onEnableEditing?: (enableEditorMode: () => void) => void;\n /**\n * Функция, вызывающаяся при сохранении отредактированного.\n * @param disableEditorMode - функция выключающая режим редактирования\n */\n onSave?: (disableEditorMode: () => void) => void;\n /**\n * Функция, вызывающаяся при отмене отредактированного.\n * @param disableEditorMode - функция выключающая режим редактирования\n */\n onCancel?: (disableEditorMode: () => void) => void;\n /** Пропсы кнопок в controlBlock. */\n buttons?: {\n save?: EditingButtonProps;\n cancel?: EditingButtonProps;\n edit?: EditingButtonProps;\n };\n /**\n * Кастомный слот, отображаемый левее кнопок «Отменить» / «Сохранить».\n * Виден только когда режим редактирования активен (editMode = true).\n * Зона ответственности разработчика — размерная сетка controlBlock не влияет на этот слот.\n */\n editModeLeftSlot?: React.ReactNode;\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: {\n enableButton?: DomMetadata;\n saveButton?: DomMetadata;\n cancelButton?: DomMetadata;\n };\n};\n\nexport type SummaryRowsConfig = {\n showDefault: boolean;\n showInControl: boolean;\n} & {\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: DomMetadata;\n};\n\n/**\n * Конфиг тултипа при hover по canvas-элементам.\n * Для активации фичи необходимо заполнить данный конфиг,\n * а также добавить нужные изменения в Canvas-элементах или в конфиге колонки.\n */\nexport type TableConfigTooltip = {\n /**\n * Включить/выключить колоночные и кастомные тултипы (cellTooltip, headerCellTooltip).\n * Внутренние тултипы (drag-иконка в шапке и другие по nodeId) работают всегда.\n * @default false\n */\n enabled?: boolean;\n /** Глобальная задержка перед показом тултипа (мс). Per-node переопределяет. @default 500 */\n mouseEnterDelay?: number;\n /** Глобальная задержка перед скрытием тултипа (мс). Per-node переопределяет. @default 0 */\n mouseLeaveDelay?: number;\n /**\n * Минимальная ширина тултипа. Число трактуется как px, строка с единицей\n * (например '20rem', '50%') отдаётся как есть. Действует на все canvas-тултипы,\n * включая авто-тултип Canvas.Text. Если ширина задана на самом тултипе\n * (per-node), приоритет у неё.\n */\n minWidth?: number | string;\n /**\n * Максимальная ширина тултипа. Число трактуется как px, строка с единицей\n * (например '20rem', '50%') отдаётся как есть. Действует на все canvas-тултипы,\n * включая авто-тултип Canvas.Text. Если ширина задана на самом тултипе\n * (per-node), приоритет у неё.\n */\n maxWidth?: number | string;\n};\n\nexport type InfinityScrollConfig<RowType extends ObjectForExtending> = {\n /** Триггер достижения скроллом зоны подгрузки данных. */\n onTrigger: (rows: RowType[]) => Promise<void> | void;\n /** Состояние загрузки (скелетоны) новых строк. */\n isLoading: boolean;\n /**\n * Флаг, когда все данные загружены — false.\n * @default true\n */\n hasMore?: boolean;\n /**\n * Для mode='region': за сколько строк до конца триггерить загрузку.\n * @default 5\n */\n rowThreshold?: number;\n};\n\nexport type { TableCanvasEmptyStateConfig, TableCanvasErrorStateConfig };\n\n/**\n * Настройка выделения ячеек/колонок/строк в TableCanvas — единый объект.\n * Это отдельная ось взаимодействия — не зависит от `highlightActiveType`.\n */\nexport type CellsSelectionConfig = {\n /**\n * Режим фактического выделения ячеек (нативный glide selection). По нему\n * работают copy/paste, рамка, fill-handle и затемнение шапки/нумерации.\n * @default \"range-cell\"\n */\n mode?: CellsSelectionMode;\n /**\n * Выделение колонок по клику на шапку. Ctrl/Cmd — добавить/убрать колонку,\n * Shift — диапазон колонок. Клик по иконкам сортировки/фильтрации в шапке\n * выделение НЕ вызывает. Поддерживает copy/paste по выделенным колонкам.\n * @default true\n */\n enableColumnSelection?: boolean;\n /**\n * Выделение строк по клику/драгу на колонке нумерации (`rowMarkers`).\n * Ctrl/Cmd — несмежный выбор отдельных строк, драг — смежный диапазон.\n * Поддерживает copy/paste по выделенным строкам. Требует включённой колонки\n * нумерации (`rowMarkers`). При `false` клик по нумерации ничего не выделяет.\n * @default true\n */\n enableRowSelection?: boolean;\n /**\n * Выделение всей таблицы кликом по «нулевой» ячейке — шапке колонки нумерации\n * (левый верхний угол). Выделяет все строки данных по всем колонкам одним\n * диапазоном; поддерживает copy/paste. Требует включённой колонки нумерации\n * (`rowMarkers`) и активного `mode` (≠ `disabled`).\n * @default true\n */\n enableSelectAll?: boolean;\n /**\n * Внешний (controlled) контроль НАТИВНОГО выделения (ячейки/диапазон/смежные\n * строки и колонки). `state` — кортеж `[value, setter]` как у `selecting.state`.\n * Сброс: `setter({ current: undefined, rows: empty, columns: empty })`.\n * Несмежный Ctrl-выбор колонок/строк (own-state) сюда не входит — он внутренний.\n */\n state?: [GridSelection, React.Dispatch<React.SetStateAction<GridSelection>>];\n};\n\n/** Один объединённый блок: какие строки и колонки слить. */\nexport type MergedCellsRegion = {\n rowKeys: Array<string | number>;\n colKeys: string[];\n /** Выравнивание контента этого блока. Важнее колоночного и общего. */\n mergedCellsAlign?: MergedCellsAlign;\n};\n\n/**\n * Видимость сторон рамки ячейки: true рисовать, false не рисовать, не задано -\n * работает уровень ниже (настройка колонки, строки или общая).\n */\nexport type CellBorderVisibility = {\n top?: boolean;\n right?: boolean;\n bottom?: boolean;\n left?: boolean;\n};\n\n/**\n * Управление рамками (линиями) таблицы: включение и выключение. Уровни, от\n * слабого к сильному: общие настройки (vertical, horizontal), затем колонка\n * (getVerticalBorder) и строка (getHorizontalBorder), затем ячейка\n * (getCellBorder).\n */\nexport type BordersConfig<RowType = ObjectForExtending> = {\n /** Рисовать ли вертикальные линии между колонками. @default true */\n vertical?: boolean;\n /** Рисовать ли горизонтальные линии между строками тела. @default true */\n horizontal?: boolean;\n /**\n * Точечное управление вертикальной линией справа от колонки (разделитель\n * после неё). Вернуть true или false, чтобы переопределить общую настройку\n * vertical, или undefined, чтобы оставить её. Зовётся на каждую видимую\n * колонку при перерисовке, поэтому функция должна быть быстрой.\n */\n getVerticalBorder?: (params: {\n /** Ключ колонки, справа от которой рисуется линия. */\n columnKey: string;\n /** Индекс колонки в порядке отрисовки (закреплённые в начале). */\n columnIndex: number;\n }) => boolean | undefined;\n /**\n * Точечное управление горизонтальной линией сверху строки. Вернуть true или\n * false, чтобы переопределить общую настройку horizontal, или undefined,\n * чтобы оставить её. Для summary-строк не вызывается. Зовётся на каждую\n * видимую строку при перерисовке, поэтому функция должна быть быстрой.\n */\n getHorizontalBorder?: (params: {\n /** Строка под линией (линия рисуется сверху этой строки). */\n row: RowType;\n /** Индекс строки среди отображаемых. При раскрытии subRows индексы сдвигаются. */\n rowIndex: number;\n /** Уровень вложенности subRows: 0 корень, 1 и больше дочерние. */\n treeLvl: number;\n }) => boolean | undefined;\n /**\n * Стороны рамки конкретной ячейки, вкл и выкл. Для ячеек без переопределений\n * возвращать undefined. Включает отрисовку линий с разбивкой по ячейкам,\n * поэтому функция должна быть быстрой: без тяжёлых вычислений и с готовыми\n * объектами-константами вместо новых на каждый вызов. Для summary-строк не\n * вызывается.\n */\n getCellBorder?: (params: {\n /** Индекс колонки среди отображаемых (без служебных). */\n col: number;\n /** Ключ колонки. */\n columnKey: string | undefined;\n /** Строка ячейки. */\n row: RowType;\n /** Индекс строки среди отображаемых. */\n rowIndex: number;\n /** Уровень вложенности subRows: 0 корень, 1 и больше дочерние. */\n treeLvl: number;\n }) => CellBorderVisibility | undefined;\n};\n\nexport type TableConfig<\n RowType extends ObjectForExtending,\n SummaryRowType,\n RowIdType extends string | number,\n FilterStateType extends ObjectForExtending,\n // SubRowType\n> = {\n /**\n * Группировка колонок (многоуровневая шапка через `columnConfig.children`):\n * объединение пустых ячеек шапки (`squashEmptyCells`, по умолчанию включено) и\n * дефолт выравнивания в объединённых ячейках (`squashedHeaderAlign`).\n */\n columnsGrouping?: ColumnsGroupingConfig;\n /**\n * Подсветка активной сущности в canvas-таблице.\n * @deprecated Значения `'cell'`/`'range-cell'` устарели — используйте\n * `cellsSelection.mode`. Актуальны `'row'` (подсветка строки) и `'disabled'`.\n */\n highlightActiveType?: HighlightActiveType;\n /**\n * Единый конфиг выделения ячеек: режим (`mode`), оси\n * (`enableColumnSelection`/`enableRowSelection`/`enableSelectAll`) и controlled\n * (`state`). См. {@link CellsSelectionConfig}.\n */\n cellsSelection?: CellsSelectionConfig;\n /**\n * Подсвеченная строка (`highlightActiveType='row'`).\n * `state` (опционально) — controlled-кортеж `[value, setter]`: задан — значением\n * владеешь снаружи (сброс `setter(undefined)`); не задан — таблица крутит\n * подсветку внутренним стейтом, а `onChange` всё равно срабатывает (подписка\n * без владения значением).\n */\n highlightActiveRow?: {\n state?: [\n number | undefined,\n React.Dispatch<React.SetStateAction<number | undefined>>,\n ];\n /**\n * Колбэк смены подсвеченной строки: отдаёт её флэт-индекс и сам объект\n * строки (`rows[index]`). Позволяет открывать данные подсвеченной строки\n * (например, в SplitView) без `onCellClicked`.\n */\n onChange?: (params: {\n index: number | undefined;\n row: RowType | undefined;\n }) => void;\n };\n /**\n * Эффекты при наведении (hover)\n * `row` — подсветка строки под курсором.\n * Независимая визуальная ось: селектинг (`cellsSelection`) и `highlightActiveType='row'`\n * рисуются ПОВЕРХ hover-подсветки и визуально перекрывают её (hover\n * «остаётся под ними» и снова виден после сброса выделения).\n *\n * `{ row: true }` — включить с цветами из темы;\n * `{ row: { color: '#F7F9FB' } }` — переопределить цвет data-ячеек.\n * @default undefined (выключено)\n */\n hoverEffects?: HoverEffectsConfig;\n /**\n * Включает компенсацию тонких canvas-линий при browser zoom ниже 100%, когда devicePixelRatio меньше 1.\n * Влияет только на grid/header/sticky hairline borders.\n * @default false\n */\n enableLowDprHairline?: boolean;\n /**\n * Управление рамками (линиями) таблицы: включение и выключение.\n *\n * Уровни, от слабого к сильному: общие настройки (vertical, horizontal),\n * затем колонка (getVerticalBorder) и строка (getHorizontalBorder), затем\n * ячейка (getCellBorder).\n *\n * `vertical: false` и `horizontal: false` убирают все вертикальные или\n * горизонтальные линии тела. `getCellBorder` включает и выключает стороны\n * рамки конкретной ячейки; при его использовании линии рисуются с разбивкой\n * по ячейкам.\n */\n borders?: BordersConfig<RowType>;\n /**\n * rowSize - размеры строк таблицы\n */\n rowSize?: Prettify<RowSize>;\n /**\n * rowHeight - размер высоты строк таблицы\n */\n rowHeight?: Maybe<number | RowHeightFunc<RowType>>;\n /**\n * sorting - активация сортировки. Условие активации - это наличие данного свойства. Нужно также сконфигурировать колонки.\n *\n * Пример:\n *\n * tableConfig={sorting: {sortingState}}\n *\n * columnConfig=[{sortingType: 'numberSort'}]\n */\n sorting?: {\n state: [\n readonly SortColumn[],\n React.Dispatch<React.SetStateAction<readonly SortColumn[]>>,\n ];\n /**\n * manualSorting - пропс, активирующий ручную-кастомную (или на стороне бэкенда) сортировку\n */\n manualSorting?: boolean;\n };\n /** @deprecated Свойство view не используется и будет удалено в следующей мажорной версии. */\n view?: View;\n /**\n * filtering - активация фильтрации. Условие активации - это наличие данного свойства. Нужно также сконфигурировать колонки.\n *\n * Пример:\n *\n * tableConfig={filtering: {stateAndSetter, ...}}\n *\n * columnConfig=[{filtering: {...}}]\n */\n filtering?: FilteringConfig<FilterStateType>;\n /**\n * Сворачивание / разворачивание таблицы\n */\n collapsing?: TableCollapseConfig;\n /**\n * selecting - активация выбора строк. Условие активации - это наличие данного свойства.\n * Есть поддержка выбора строк с многоуровневой вложенностью.\n *\n * Пример:\n *\n *```jsx\n * import { Table } from '@daisforge/ui';\n *\n * <Table\n * tableConfig={{selecting: {stateAndSetter, rowKeyGetter}}}\n * {...rest}\n * />\n * ```\n */\n selecting?: {\n state: [\n ReadonlySet<RowIdType>,\n React.Dispatch<React.SetStateAction<ReadonlySet<RowIdType>>>,\n ];\n rowKeyGetter: (row: RowType) => RowIdType;\n } & Prettify<SelectingRowConfig<RowType, RowIdType>> & {\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n controlBlock?: {\n domMetadata?: DomMetadata;\n };\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам RightSidebar\n */\n sidebar?: {\n domMetadata?: DomMetadata;\n };\n };\n /**\n * editing - активация редактирования. Условие активации - это наличие данного свойства. Нужно также сконфигурировать колонки.\n *\n * Пример:\n *\n * tableConfig={editing: {onRowsChange, rowKeyGetter}}\n *\n * columnConfig=[{editingCell: {...}}]\n */\n editing?: EditingConfig<RowType, RowIdType, SummaryRowType>;\n\n /**\n * cellTransfer — конфигурация копирования, вставки и fill handle.\n * По умолчанию копирование (Ctrl+C) работает в режиме редактирования.\n * Данные копируются в формате TSV (tab-separated values), совместимом с Excel.\n *\n * Пример:\n *\n * tableConfig={{ cellTransfer: { enabled: true, onBeforeCopy: (data) => data } }}\n */\n cellTransfer?: CellTransferConfig;\n\n /**\n * Объединение ячеек тела таблицы.\n *\n * mergeByCellValues — колонки, в которых подряд идущие одинаковые значения\n * сливаются в один блок (по вертикали). Границы блоков таблица считает сама из\n * данных; сортировка и фильтр их пересобирают. Данные не меняются — значение и\n * так повторяется в строках, объединение лишь показывает его одной ячейкой.\n *\n * mergedCellsRegions — список блоков, заданных снаружи (как выделение): каждый\n * блок описан ключами строк (rowKeys) и колонок (colKeys). Нужен rowKeyGetter.\n * Если после сортировки или скрытия колонок строки/колонки блока перестали идти\n * подряд — блок не рисуется. Важнее mergeByCellValues.\n *\n * Примеры: mergeCells={{ mergeByCellValues: ['dept', 'role'] }},\n * mergeCells={{ mergedCellsRegions, rowKeyGetter: (r) => r.id }}.\n */\n mergeCells?: {\n mergeByCellValues?: Array<\n string | { colKey: string; value: (row: RowType) => unknown }\n >;\n /** Список блоков, заданных снаружи (по ключам строк и колонок). */\n mergedCellsRegions?: MergedCellsRegion[];\n /**\n * Нужен для mergedCellsRegions: находит строку по её ключу. Должна быть\n * стабильной функцией; менять её на лету не нужно — в пересборку таблицы она\n * не входит.\n */\n rowKeyGetter?: (row: RowType) => string | number;\n /**\n * Выравнивание по умолчанию для всех блоков. Колоночный mergedCellsAlign и\n * выравнивание конкретного региона важнее.\n */\n mergedCellsAlign?: MergedCellsAlign;\n };\n\n /**\n * Модуль нотификаций: стандартизированный канал событий для внешних\n * потребителей. Таблица UI не рисует — вызывает `onNotification`, потребитель\n * показывает тост/модалку на своей стороне. Сейчас эмитятся ошибки copy/paste\n * (в т.ч. multi-range 2D-разброс, readonly/overflow-abort, пропуск валидацией).\n */\n notifications?: TableNotificationsConfig;\n\n /**\n * subRows - активация иерархии, отображения вложенных строк. Условие активации - наличие данного свойства. Нужно также сконфигурировать колонки.\n *\n * Пример:\n *\n * tableConfig={subRows: {getSubRows, rowKeyGetter}}\n *\n * columnConfig=[{subRow: {...}}]\n */\n subRows?: SubRows<RowType, RowIdType>;\n /**\n * Столбец с нумерацией строк.\n * Активируется наличием этого свойства. Поддерживает `subRows` любой глубины.\n *\n * @see {@link RowMarkersTableConfig} — полное описание конфигурации и примеры.\n */\n rowMarkers?: RowMarkersTableConfig<RowType>;\n rowsGrouping?: RowsGrouping<RowType, SummaryRowType>;\n\n /**\n * resizableColumn - активация изменения ширины колонки с помощью курсора. Условие активации - resizableColumn: true. Нужно также сконфигурировать колонки.\n *\n * Пример:\n *\n * tableConfig={resizableColumn: true}\n *\n * columnConfig=[{resizable: true}]\n */\n resizableColumn?: boolean;\n /**\n * style - inline-стили. Для стилей самой таблицы (без вложенности).\n *\n * Исключены свойства 'width' | 'height' | 'minWidth' | 'minHeight' | 'maxWidth' | 'maxHeight'. Их следует стилизовать через свойства containerStyle.\n */\n style?: Omit<\n CSSProperties,\n 'width' | 'height' | 'minWidth' | 'minHeight' | 'maxWidth' | 'maxHeight'\n >;\n /**\n * css - для стилей простых и сложных(например, для стилизации cell, headerCell, ...).\n *\n * Пример:\n *\n * ```css\n * & > .rdg-header-row > .rdgCell {\n * background-color: red;\n * }\n * ```\n *\n */\n css?: string | CSSObject;\n\n summaryRows?: SummaryRowsConfig;\n /**\n * controlBlock - пропс для активации, кастомизации контролблока.\n */\n controlBlock?: ControlBlockConfig;\n /**\n * containerStyle - инлайновые стили контейнера таблицы и контролблока. высоту и ширину для таблицы рекомендуется задавать в этом пропсе.\n * Пример:\n *\n * ```tsx\n tableConfig={{ containerStyle: { height: '70vh' } }}\n * ```\n */\n containerStyle?: CSSProperties | undefined;\n /**\n * containerCss - стили для контейнера таблицы и контролблока.\n * Через этот пропс можно дополнительно кастомизировать контейнер и все его дочерние элементы.\n */\n containerCss?: string | CSSObject | undefined;\n /**\n * containerId - html-атрибут id контейнера таблицы.\n */\n containerId?: string | undefined;\n\n /**\n * unstickyHeader - откреплённая шапка. Header уезжает вместе со скроллом контента.\n * @default false\n */\n unstickyHeader?: boolean;\n\n /** Тултип при hover по canvas-элементам.\n * Для активации фичи необходимо заполнить данный конфиг,\n * а также добавить нужные изменения в Canvas-элементах или в конфиге колонки.\n */\n tooltip?: TableConfigTooltip;\n\n /**\n * infinityScroll - бесконечная подгрузка данных при скролле.\n *\n * Условие активации - наличие самого пропса infinityScroll.\n *\n * При активации infinityScroll отключается дефолтная сортировка и фильтрация.\n * (Предполагается, что если есть infinityScroll,\n * то в таблице представлен не весь объем данных,\n * по этой причине дефолтная сортировка и фильтрация не подходят и будут отображать некорректные данные)\n *\n */\n infinityScroll?: InfinityScrollConfig<RowType>;\n /**\n * @isLoading - состояние загрузки данных для таблицы.\n */\n isLoading?: boolean | { boolean: boolean; skeletonRowsCount: number };\n /**\n * loadingOverlay - конфигурация для отображения оверлея загрузки.\n * Показывает индикатор загрузки поверх таблицы с возможностью кастомизации.\n */\n loadingOverlay?: {\n /**\n * Активен ли оверлей загрузки\n * @default true\n */\n active?: boolean;\n /**\n * Кастомный компонент спиннера\n * @default <Spinner view=\"secondary\" size=\"36\" /> (внутренний компонент)\n */\n spinner?: ReactNode;\n /**\n * Основной заголовок оверлея\n * @default \"Загрузка таблицы\"\n */\n title?: string;\n /**\n * Подзаголовок, который появится после задержки, пустая строка - значит он не появится\n * @default \"\"\n */\n subtitle?: string;\n /**\n * Задержка перед показом подзаголовка (мс)\n * @default 10000 (10 секунд)\n */\n showSubtitleDelay?: number;\n };\n /**\n * Empty state внутри content-области canvas-таблицы.\n * Не заменяет control block, header или pagination.\n */\n emptyState?: TableCanvasEmptyStateConfig;\n /**\n * Error state внутри content-области canvas-таблицы.\n * Не заменяет control block, header или pagination.\n */\n errorState?: TableCanvasErrorStateConfig;\n // FIXME:\n // noRowsFallback?: boolean | { custom: ReactNode };\n columnsControl?: ColumnsControlConfig;\n // FIXME:\n // rowDetailPanel?: RowDetailConfig<RowType>;\n // FIXME: Временно комментирую использование, пока не адаптируем TableCanvas\n // rowInstruments?: {\n // getRowDropdownConfig: RowInstrumentsType<RowType>;\n // /**\n // * @default false\n // */\n // defaultOpened?: boolean;\n // /**\n // * @default true\n // */\n // showInControl?: boolean;\n // /**\n // * Внешний стейт видимости\n // */\n // openedState?: [boolean, React.Dispatch<React.SetStateAction<boolean>>];\n // };\n fullScreenEnabled?: FullScreen;\n /**\n * Переносит портал editor overlay внутрь контейнера таблицы вместо document.body.\n * Решает проблему focus trap и сдвига координат при рендере таблицы в модалке с CSS transform.\n * @default undefined (overlay рендерится в document.body — стандартное поведение)\n */\n editorOverlayPortal?: 'inside';\n keyText?: boolean | KeyTextConfig;\n /**\n * pagination - пропс для пагинации.\n *\n * Условие активации - наличие самого пропса pagination.\n *\n * При активации pagination отключается дефолтные поиск, сортировка и фильтрация.\n * (поиск работает на уровне с фильтрацией и сортировкой, сначала поиск, затем фильтрация, затем сортировка)\n *\n */\n pagination?: PaginationProps;\n /**\n * searching - пропс для поиска по таблицу.\n *\n * Условие активации - наличие searching.enabled: true\n *\n */\n /**\n * Конфигурация табов в сайдбаре\n */\n sidebarConfig?: SidebarConfig;\n searching?: SearchingProps;\n /**\n * onHeaderContextMenu - callback открытия контекстного меню.\n */\n onHeaderContextMenu?: TableGlideInstanceProps<\n RowType,\n SummaryRowType\n >['onHeaderContextMenu'];\n onHeaderContextMenuDropdown?: TableGlideInstanceProps<\n RowType,\n SummaryRowType\n >['onHeaderContextMenuDropdown'];\n onCellContextMenuDropdown?: TableGlideInstanceProps<\n RowType,\n SummaryRowType\n >['onCellContextMenuDropdown'];\n onCellContextMenu?: TableGlideInstanceProps<\n RowType,\n SummaryRowType\n >['onCellContextMenu'];\n /**\n * Обработчик клика по ячейке.\n *\n * Получает `cell` readonly [colIndex, rowIndex] от glide, и `info` обогащённый объект\n * с row, column, ctxs, refTable (аналогично onCellContextMenu).\n */\n onCellClicked?: (\n cell: readonly [number, number],\n info: TableInfoWithRow<RowType, SummaryRowType>,\n ) => void;\n} & GlideInstanceOmitted<RowType, SummaryRowType>;\n\ntype GlideInstanceOmitted<\n RowType extends ObjectForExtending,\n SummaryRowType,\n> = Pick<\n Omit<\n TableGlideInstanceProps<RowType, SummaryRowType>,\n | keyof TableGlideCustomProps<RowType, SummaryRowType>\n | 'CellReadOnlyEditor' /* CellReadOnlyEditor - свойство только для GlideInstance */\n >,\n | 'className'\n | 'columnSelect'\n | 'minColumnWidth'\n | 'maxColumnWidth'\n | 'maxColumnAutoWidth'\n | 'onVisibleRegionChanged'\n | 'onCellClicked'\n // | 'CellReadOnlyEditor'\n // | 'onGroupHeaderClicked'\n | 'onHeaderClicked'\n | 'onItemHovered'\n | 'trapFocus'\n | 'onColumnResize'\n>;\nexport type CellReadOnlyEditorProps<\n RowType extends ObjectForExtending,\n SummaryRowType,\n> = CellReadOnlyEditorGlideInstanceStaticProps &\n EditingCellInfo<RowType, SummaryRowType>;\n\n// & Pick<\n// DataGridPropsDefault<RowType, SummaryRowType, RowIdType>,\n// | 'summaryRowHeight'\n// | 'onFill'\n// | 'onCopy'\n// | 'onPaste'\n// | 'onCellClick'\n// | 'onCellDoubleClick'\n// | 'onCellContextMenu'\n// | 'onCellKeyDown'\n// | 'onSelectedCellChange'\n// | 'onScroll'\n// | 'onColumnResize'\n// | 'onColumnsReorder'\n// | 'enableVirtualization'\n// | 'rowClass'\n// | 'data-testid'\n// | 'headerRowHeight'\n// >;\n\n/**\n * Конфигурация фичи rowMarkers (столбец с нумерацией строк).\n *\n * Столбец frozen, вставляется первым, исключён из reorder/pin/hide/sort/grouping.\n * Поддерживает плоский и древовидный (`subRows`) режимы любой глубины вложенности.\n *\n * **Дефолтное поведение** (без `getRowMarker`): root-only нумерация —\n * корневые строки получают номер (`startIndex + rootIndex`), дочерние — пустую строку.\n *\n * @example\n * ```tsx\n * // Минимальная конфигурация\n * tableConfig={{ rowMarkers: { startIndex: 1 } }}\n *\n * // Сквозная стабильная нумерация\n * tableConfig={{ rowMarkers: { getRowMarker: ({ flatIndex }) => flatIndex + 1 } }}\n * ```\n */\nexport type RowMarkersTableConfig<\n RowType extends ObjectForExtending = ObjectForExtending,\n> = {\n /**\n * Стартовый индекс нумерации (для дефолтной логики без `getRowMarker`).\n * @default 1\n */\n startIndex?: number;\n\n /**\n * Ширина столбца с нумерацией (в px).\n * Если задан `size` — он приоритетнее.\n+ * Если ни `size`, ни `width` не заданы — ширина подстраивается\n+ * под глобальный `tableConfig.rowSize` (small=20, medium=32, big=48).\n * @default 32\n */\n width?: number;\n /**\n * Размер столбца. Приоритетнее `width`.\n * - `xs` = 20px\n * - `s` = 32px\n * - `m` = 48px\n */\n size?: 'xs' | 's' | 'm';\n /**\n * Кастомная функция нумерации. Полностью переопределяет дефолтную root-only логику.\n * Вызывается при рендере каждой ячейки столбца нумерации.\n *\n * ⚠️ Вызывается не только при полной отрисовке таблицы, но и при ховере/скролле —\n * для **одной** ячейки. Не используйте внешние переменные-счётчики —\n * используйте аргументы (`siblingPath`, `flatIndex` и др.), они всегда актуальны.\n *\n * @example\n * // Сквозная стабильная нумерация (все строки, номера не прыгают при сворачивании)\n * getRowMarker: ({ flatIndex }) => flatIndex + 1\n *\n * @example\n * // Корневые — номер, дочерние — прочерк\n * getRowMarker: ({ isSubRow, flatIndex }) => isSubRow ? '—' : flatIndex + 1\n *\n * @example\n * // Иерархическая нумерация любой глубины: 1, 1.1, 1.1.1, 1.2, 2\n * getRowMarker: ({ siblingPath }) => siblingPath.map(i => i + 1).join('.')\n */\n getRowMarker?: (args: {\n /** Данные текущей строки. */\n row: RowType;\n /** Уровень строки в дереве: `0` — корневая, `1` — дочерняя, `2` — внучка, и т.д. */\n level: number;\n /** `true`, если строка дочерняя (`level > 0`). */\n isSubRow: boolean;\n /**\n * Индекс строки в **видимых** строках.\n * **Нестабильный** — меняется при сворачивании и разворачивании веток.\n */\n rowIndex: number;\n /**\n * Стабильный 0-based индекс строки в **полном** дереве (включая скрытые/свёрнутые).\n * Не меняется при collapse/expand — подходит для сквозной нумерации.\n */\n flatIndex: number;\n /**\n * Порядковый номер среди siblings одного родителя (0-based).\n * Для корневых строк — порядковый номер среди всех корневых.\n * Для дочерних — порядковый номер среди children одного `parentKey`.\n */\n siblingIndex: number;\n /**\n * Путь siblingIndex-ов от корня до текущей строки (каждый элемент 0-based).\n *\n * Примеры:\n * - корневая строка (2-я): `[1]`\n * - дочерняя (3-й ребёнок 2-го корня): `[1, 2]`\n * - внучка (1-й ребёнок 1-го ребёнка 1-го корня): `[0, 0, 0]`\n *\n * Для иерархической нумерации: `siblingPath.map(i => i + 1).join('.')` → `\"1.1.1\"`\n *\n * Для плоской таблицы (без subRows): всегда `[siblingIndex]` (один элемент).\n */\n siblingPath: number[];\n /**\n * Ключ родительской строки (`rowKeyGetter(parent)`).\n * `null` для корневых строк. Работает для **любой** глубины вложенности.\n */\n parentKey: string | number | null;\n /** Текущий видимый `flattened` массив строк. */\n rows: readonly RowType[];\n }) => string | number;\n};\n```\n\n## FilterComponentInPopoverProps\n\nПропсы, доступные в кастомном компоненте фильтра (`component: 'custom'`).\n\n```typescript\ntype FilterComponentInPopoverProps<\n FilterStateType extends ObjectForExtending,\n ColumnConfig,\n> = {\n popoverIsOpen: boolean;\n setPopoverIsOpen: React.Dispatch<React.SetStateAction<boolean>>;\n columnConfig: ColumnConfig;\n tabIndex: number;\n headerContextState: HeaderContextValueTypeInstance<FilterStateType> &\n FiltersVariables &\n HeaderContextValueTypeInstance<ObjectForExtending>;\n /**\n * Источник открытия фильтра: из шапки таблицы или из сайдбара\n * Полезно для условной логики в customRender (например, alwaysOpened для combobox)\n */\n filterSource?: 'header' | 'sidebar';\n};\n```",
|
|
53886
|
+
"apiDocs": "# Filtering API\n\n## FilteringConfig\n\n```typescript\ntype FilteringConfig<T> = {\n state: [T, React.Dispatch<React.SetStateAction<T>>];\n /**\n * @deprecated Использовать filtersInfo\n *\n * clearedValue - состояние фильтров после очистки. Используется для сравнения:\n * Например, был ли фильтр конкретной колонки изменен рассчитывается посредством сравнения текущего значения фильтра и значения фильтра в clearedValue.\n * Если они равны, то фильтр считается не измененным.\n */\n clearedValue?: T;\n /**\n * Информация о фильтрах для каждой колонки.\n * Используется для:\n * 1. Хранения меток (label) фильтров для отображения в UI\n * 2. Хранения значений по умолчанию (clearedValue) для каждого фильтра\n * 3. Определения, был ли фильтр изменен (сравнение текущего значения с clearedValue)\n */\n filtersInfo?: Record<\n keyof T,\n {\n label: string;\n clearedValue: T[keyof T];\n }\n >;\n /**\n * manualFiltering - пропс, активирующий ручную-кастомную (или на стороне бэка) фильтрацию.\n * @remarks\n * Для автоматической фильтрации (когда не используется manualFiltering в tableConfig):\n * - Для всех типов фильтров обязательно должен быть указан `valueInRow`\n * - Для component: 'select' дополнительно должен быть указан `filteringType`\n * - Для component: 'input' с кастомным фильтром (когда filter - функция)\n * функция фильтрации должна быть передана явно\n *\n * Если используется manualFiltering, эти параметры не обязательны,\n * так как вся логика фильтрации реализуется извне.\n */\n manualFiltering?: boolean;\n /**\n * Конфигурация для отображения фильтров в правом сайдбаре.\n *\n * Позволяет:\n * 1. Добавлять глобальные фильтры (не привязанные к конкретной колонке)\n * 2. Управлять порядком отображения фильтров\n * 3. Переопределять рендер и заголовки колоночных фильтров\n *\n * Логика работы:\n * - По умолчанию в сайдбаре отображаются все колоночные фильтры (из columnConfig)\n * - Ключом фильтра считается `key` колонки, если его нет, то пытаемся взять `keyInFilterState` (если указан), иначе это не будет работать\n * - Заголовком фильтра по умолчанию является `name` колонки или ключ фильтра (name || key)\n * - Глобальные фильтры добавляются через `items` с уникальными ключами\n *\n * Особенности:\n * 1. Порядок отображения:\n * - Сначала фильтры из `order` (в указанной последовательности)\n * - Затем остальные колоночные фильтры (в порядке columnConfig)\n * - В конце - глобальные фильтры (в алфавитном порядке ключей)\n *\n * 2. Переопределение колоночных фильтров:\n * - Чтобы изменить заголовок: укажите ключ колонки в `items` с новым `label`\n * - Чтобы заменить рендер: укажите ключ колонки с `customRenderFn`\n * - Оригинальный фильтр из колонки будет проигнорирован\n *\n * 3. Глобальные фильтры:\n * - Ключ не должен совпадать с ключами колонок\n * - Обязательно указать `label` и `customRenderFn`\n * - Отображаются после всех колоночных фильтров, если не переопределены в order\n *\n * @example\n * // Добавление глобального фильтра и изменение порядка\n * sidebarConfig: {\n * order: ['status', 'tasks', 'type'], // Сначала статус, затем глобальный поиск\n * items: {\n * tasks: { // Уникальный ключ\n * label: 'Поиск по всем полям',\n * customRenderFn: () => <TaskComponent />\n * },\n * status: { // Переопределение колоночного фильтра\n * label: 'Статус заявки', // Новый заголовок\n * customRenderFn: () => <CustomStatusFilter /> // Кастомный рендер\n * }\n * type: { // Переопределение только Label колоночного фильтра\n * label: 'Тип', // Новый заголовок\n * }\n * }\n * }\n */\n sidebarConfig?: {\n /**\n * Определяет порядок отображения фильтров.\n * - Указываются ключи фильтров (колоночных или глобальных)\n * - Не указанные в order фильтры отображаются после\n * - Если order пуст, сохраняется порядок: глобальные фильтры + columnConfig фильтры в конце\n */\n order?: string[];\n /**\n * Конфигурация фильтров для сайдбара.\n * Ключом может быть:\n * - Ключ колонки (для переопределения колоночного фильтра)\n * - Уникальный ключ (для добавления глобального фильтра)\n */\n items: Partial<\n Record<\n keyof T,\n {\n /** Заголовок фильтра (обязателен для глобальных фильтров), можно использовать для переопределения для локальных фильтров */\n label: string;\n /**\n * Функция рендера компонента фильтра.\n * Для колоночных фильтров переопределяет оригинальный рендер.\n * Для глобальных фильтров обязательна.\n */\n customRenderFn?: (\n filters: T,\n setFilters: React.Dispatch<React.SetStateAction<T>>,\n ) => React.ReactNode;\n }\n >\n >;\n };\n /**\n * Callback для кастомизации стилей чипсов (фильтров) в списке\n *\n * @param {ItemOrGroup} itemOrGroup - Текущий элемент или группа фильтров\n * @param {Item | undefined} item - Конкретный элемент фильтра (если есть)\n * @returns {CSSObject} Объект стилей, который будет применен к чипсу\n *\n * @description\n * Позволяет динамически задавать стили для каждого чипса в зависимости от его типа и содержимого.\n * Вызывается для каждого отображаемого чипса (как для отдельных элементов, так и для элементов внутри групп).\n *\n * @example\n * // Пример 1: Стилизация чипсов по типу\n * chipStyle: (itemOrGroup, item) => {\n * if (isGroup(itemOrGroup)) {\n * return { backgroundColor: '#f0f0f0' };\n * }\n * return { backgroundColor: '#e0e0e0' };\n * }\n *\n * @example\n * // Пример 2: Стилизация по значению фильтра\n * chipStyle: (itemOrGroup, item) => {\n * if (item?.label === 'Высокий приоритет') {\n * return {\n * backgroundColor: '#ffebee',\n * color: '#d32f2f'\n * };\n * }\n * return {};\n * }\n *\n * @example\n * // Пример 3: Разные стили для элементов в группе и одиночных\n * chipStyle: (itemOrGroup, item) => {\n * if (item) {\n * // Стиль для элемента внутри группы\n * return { maxWidth: 180 };\n * }\n * // Стиль для одиночного чипа\n * return { maxWidth: 150 };\n * }\n */\n chipStyle?: (itemOrGroup: ItemOrGroup, item: Item | undefined) => CSSObject;\n /**\n * Пользовательский форматтер заголовка группы чипсов.\n *\n * Используется в блоке активных фильтров для подмены текста заголовка\n * группы (например, “Статус”, “Тип”, “Автор”). Полезно, когда нужно\n * динамически менять подпись (добавить счётчик, i18n и т.п.).\n *\n * @param {ItemOrGroup} itemOrGroup Объект группы (тип Group). Вызов происходит только для групп,\n * поэтому безопасно кастовать к Group.\n * @returns {string} Текст заголовка группы чипсов.\n *\n * @default Возвращается `group.groupLabel`.\n *\n * @remarks\n * - Функция должна быть чистой и быстрой (без сетевых запросов и побочных эффектов).\n * - Возвращайте ТОЛЬКО строку — чипы отображают текстовое значение.\n * - Для длинных строк применяется усечение (overflow с многоточием) на уровне компонента.\n *\n * @example\n * // Добавить двоеточие и количество выбранных элементов\n * renderGroupLabel: (group) => `${group.groupLabel}: ${group.items.length}`\n *\n * @example\n * // Локализация заголовка группы\n * const i18n = { status: 'Статус', type: 'Тип' };\n * renderGroupLabel: (group) => i18n[group.groupId] ?? group.groupLabel\n */\n renderGroupLabel?: (group: Group) => string;\n\n /**\n * Пользовательский форматтер текста чипса (элемента внутри группы или одиночного фильтра).\n *\n * Позволяет управлять тем, что именно отображается внутри каждого чипса. Особенно полезен\n * при серверной пагинации/ленивой загрузке, когда в состоянии фильтра хранится только value,\n * а label необходимо подставить из локального кэша.\n *\n * @param {Group | null } group Группа, внутри которой рендерится чип (или null).\n * @param {Item} item Сам элемент чипса. В группах передаётся конкретный `Item`,\n * для одиночного чипа может быть `undefined`.\n * @returns {string} Текст, который будет показан в чипсе.\n *\n * @default Используется `item?.label.toString()` (или строковое представление value).\n *\n * @remarks\n * - Функция должна быть чистой и быстрой;\n * - Возвращайте ТОЛЬКО строку.\n *\n * @example\n * // 1) Отображение label из кэша при серверной пагинации\n * const labelsCacheRef = useRef(new Map<string, string>());\n * renderChipLabel: (group, item) => {\n * if (item?.id != null) {\n * const key = String(item.id);\n * const fromCache = labelsCacheRef.current.get(key);\n * if (fromCache) return fromCache; // красивый label, если уже загрузили\n * return String(item.label ?? key); // фоллбэк: временно показываем value/label из item\n * }\n * return ''; // безопасный фоллбэк для одиночных случаев\n * }\n *\n * @example\n * // 2) Нормализация отображения числовых значений\n * renderChipLabel: (_group, item) => {\n * const v = Number(item?.label);\n * return Number.isFinite(v) ? v.toLocaleString('ru-RU') : String(item?.label ?? '');\n * }\n *\n * @example\n * // 3) Префикс по типу группы\n * renderChipLabel: (group, item) => {\n * const prefix = group.groupId === 'status' ? '' : '#';\n * return `${prefix}${item?.label ?? item?.id ?? ''}`;\n * }\n */\n renderChipLabel?: (group: Group | null, item: Item) => string;\n};\n\nexport type DefaultSidebarTabIds = 'columns' | 'tableSettings' | 'filtering';\n\n/**\n * Конфигурация sidebar\n */\nexport type SidebarConfig = {\n /**\n * Включен ли sidebar. Отвечает только за UI. Не влияет на перерасчёт фичей.\n * @default true\n */\n enabled?: boolean;\n /**\n * Открыт ли sidebar при первом рендере (uncontrolled-режим).\n * Игнорируется, если передан openState.\n * @default false\n */\n defaultOpen?: boolean;\n /**\n * Внешний контроль открытия/закрытия sidebar.\n * Если передан — источник истины, defaultOpen игнорируется.\n */\n openState?: [boolean, React.Dispatch<React.SetStateAction<boolean>>];\n /**\n * id вкладки, выбранной по умолчанию (актуально при открытом сайдбаре).\n * Если id не найден или у вкладки showInSidebar=false — используется первая доступная.\n */\n defaultActiveTabId?: string;\n /**\n * Внешний контроль активной вкладки (controlled-режим).\n * Если передан — источник истины, defaultActiveTabId игнорируется.\n */\n activeTabState?: [\n string | null,\n React.Dispatch<React.SetStateAction<string | null>>,\n ];\n /**\n * Колбэк смены активной вкладки. Вызывается и в uncontrolled-режиме.\n * При закрытии сайдбара приходит null.\n */\n onActiveTabChange?: (tabId: string | null, tab?: SidebarTab) => void;\n /**\n * Кастомные табы\n */\n customTabs?: Array<\n Omit<SidebarTab, 'id'> & {\n id: Exclude<string, DefaultSidebarTabIds>;\n }\n >;\n /**\n * Порядок отображения кастомных вкладок\n */\n customTabsOrder?: Array<Exclude<string, DefaultSidebarTabIds>>;\n defaultTabs?: Array<\n | {\n id: 'filtering' | 'columns';\n /** название таба в рамках горизонтального табов внутри таба настройки */\n label?: string;\n /** название таба в рамках вертикальных табов сайдбара (если данный таб окажется единственным табом в настройках) */\n title?: string;\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: DomMetadata;\n /**\n * Кастомный элемент справа от title в шапке сайдбара\n */\n titleRightSlot?: React.ReactNode;\n /** @default true */\n showInSidebar?: boolean;\n /** тултип иконки шестеренки (для табов с id = filtering и columns - недоступен. Настраивается через таб с id='tableSettings') */\n iconTooltipText?: undefined;\n }\n | {\n id: 'tableSettings';\n /** название таба в рамках горизонтального табов внутри таба настройки */\n label?: string;\n /** название таба в рамках вертикальных табов сайдбара */\n title?: string;\n\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: DomMetadata;\n /**\n * Кастомный слот для вкладки tableSettings (рендерится после общих настроек)\n * Только дл id: 'tableSettings'\n */\n customGeneralSettingsSlot?: React.ReactNode;\n /**\n * Кастомный элемент справа от title в шапке сайдбара\n */\n titleRightSlot?: React.ReactNode;\n /** @default true */\n showInSidebar?: boolean;\n /** тултип иконки шестеренки @default 'Настройки' */\n iconTooltipText?: string;\n }\n >;\n};\n\nexport function activeViewIs<T extends 'cards' | 'rows'>(\n checkType: T,\n viewState: 'cards' | 'rows',\n view: View,\n): view is ViewMods[T] {\n return checkType === viewState;\n}\n\n/** Размер controlBlock: 'm' и 's' — одинаковые стили, 'xs' — уменьшенный */\nexport type ControlBlockSize = 'm' | 's' | 'xs';\n\nexport type ControlBlockConfig = {\n /**\n * show - наличие controlBlock-а\n * @default true\n */\n show?: boolean;\n /**\n * Размер controlBlock и его элементов (кнопки, иконки, поиск, отступы).\n * 'm' и 's' — стандартные стили, 'xs' — компактный режим.\n * Не влияет на customFeatures и кастомные слоты — они контролируются разработчиком.\n * @default 'm'\n */\n size?: ControlBlockSize;\n /**\n * @deprecated Используйте кастомные кнопки через rightSideInner или customFeatures.\n * leftSideInner - пропс для добавления кнопок в левую часть контролблока.\n * Продолжает работать для обратной совместимости.\n */\n leftSideInner?: ControlBlockButtonProps[];\n /**\n * rightSideInner - пропс для добавления кнопок в правую часть контролблока\n */\n rightSideInner?: ControlBlockButtonProps[];\n /**\n * customFeatures - пропс для добавления кастомных фичей (кнопки-иконки)\n */\n customFeatures?: FeatureItem[];\n /**\n * pinningMenu - нативная фича закрепления столбцов (SplitIconButton с\n * дропдауном) в правой зоне иконок. Появляется, когда активировано\n * закрепление колонок (columnsControl.pinning). Продукт может донастроить\n * и дополнить пункты меню (см. PinningMenuConfig).\n */\n pinningMenu?: PinningMenuConfig;\n /**\n * Пропсы для компонента dropdown в котором будут скрыты левые фичи при адаптивной компрессии\n */\n leftSideDropdownProps?: TableDropdownConfigProps;\n /**\n * Пропсы для компонента dropdown в котором будут скрыты правые фичи при адаптивной компрессии\n */\n rightSideDropdownProps?: TableDropdownConfigProps;\n /**\n * Активна ли фича компрессии (сжатие ToolsMenu при адаптиве)\n * @default true\n */\n enableAdaptiveCompress?: boolean;\n /**\n * Панель массовых действий\n */\n massActionPanel?: {\n /**\n * Кнопки панели. Размеры кнопок/дропдаунов панель подбирает сама (по `size` панели и компактности) —\n * передавать `size` кнопкам не нужно. Если `size` на кнопке всё же задан — он используется как есть.\n */\n buttons: MassActionButtonProps[];\n /**\n * Пропсы для Dropdown, в который сжались кнопки\n */\n collapsedDropdownProps?: TableDropdownConfigProps;\n /**\n * Отступ панели снизу от контейнера (px)\n * @default 24\n */\n bottom?: number;\n /**\n * Управление отображением панели массовых действий.\n * - `undefined` (по умолчанию) — стандартное поведение (показывается при selecting + выбранных строках)\n * - `false` — панель не рендерится, разработчик управляет действиями самостоятельно\n * - `true` — панель показывается всегда, даже без активного selecting и выбранных строк\n */\n show?: boolean;\n /**\n * Размерная сетка панели внутри таблицы: `m`/`s` — обычный размер, `xs` — уменьшенный (кнопки `xxs`, «ещё» `xs`, счётчик Body XS).\n * Viewport-логика (1280) в таблице не используется.\n * @default 's'\n */\n size?: MassActionsSize;\n };\n};\n\n/** Пропсы кнопки редактирования. onClick исключён — используйте onSave/onCancel/onEnableEditing. */\nexport type EditingButtonProps = Omit<\n Partial<ControlBlockButtonProps>,\n | 'onClick'\n | 'size'\n | 'dropdown'\n | 'isTargetAction'\n | 'skipRightDivider'\n | 'tooltipText'\n>;\n\nexport type EditingConfig<\n RowType extends ObjectForExtending,\n RowIdType,\n SummaryRowType,\n> = {\n /**\n * Функция обработки изменений в редактируемой строке\n */\n onRowsChange: Maybe<\n (rows: RowType[], data: RowsChangeData<RowType, SummaryRowType>) => void\n >;\n /**\n * свойство, необходимое для корректного изменения дочерних строк.\n * Данное свойство обязательно, если ваши дочерние строки установлены не под ключом \"subRows\" внутри строки.\n *\n * Как дочерние строки можно указывать свойство, которые вложено в другое свойство.\n * В таком случае \".\" будет знаком для обозначения сл. уровня вложенности.\n *\n * @example \"child\" или \"uvh367.children\"\n */\n subRowsKey?: string;\n /**\n * Глубокое копирование строк перед применением правки в режиме редактирования.\n *\n * Включите, если строки, передаваемые в таблицу, иммутабельны/заморожены\n * (напр. стейт под управлением Redux Toolkit или Immer — они вызывают\n * Object.freeze в dev). При редактировании дочерней строки таблица записывает\n * изменение ВНУТРЬ объекта родителя; на замороженном объекте это падает с\n * `TypeError: Cannot assign to read only property`.\n *\n * Когда флаг включён, таблица сама делает structuredClone редактируемой строки\n * перед записью — ваш иммутабельный стейт не мутируется, и редактирование\n * дочерних строк работает без действий с вашей стороны.\n *\n * ⚠️ Данные строки должны быть сериализуемыми. Где доступен structuredClone —\n * Date/Map/Set и вложенные структуры копируются корректно; на старых средах\n * без structuredClone используется JSON-фоллбэк (теряет Date/Map/Set, undefined\n * и функции). Не включайте без необходимости — глубокое копирование добавляет\n * накладные расходы.\n *\n * @default false\n */\n deepCloneRows?: boolean;\n /**\n * Функция определения уникального id строки\n * @param row\n * @returns\n */\n rowKeyGetter: (row: RowType) => RowIdType;\n /**\n * Функция определения возможности редактирования строки\n * @param row\n * @returns\n */\n rowEditable?: (row: RowType) => boolean;\n /**\n * defaultEnabled - пропс, отвечающий за то, будет ли активен режим редактирования или нет. По умолчанию - не активно.\n * @default false\n */\n defaultEnabled?: boolean;\n /**\n * enabled - необходим для управления режимом редактирования снаружи компонента Таблицы.\n * По умолчанию, управление происходит в компоненте.\n * Приоритетнее, чем defaultEnabled.\n *\n * @type boolean - если НЕ нужно переключение в самой таблице\n * @type [boolean, React.Dispatch<React.SetStateAction<boolean>>] - если нужно переключение в самой таблице\n *\n */\n enabled?: boolean | [boolean, React.Dispatch<React.SetStateAction<boolean>>];\n /**\n * Cостояние скрытия/раскрытия кнопки включения/выключения фичи\n * @default true\n */\n showButtons?: boolean;\n /**\n * Функция, вызывающаяся при включении фичи.\n * @param enableEditorMode - функция включающая режим редактирования\n */\n onEnableEditing?: (enableEditorMode: () => void) => void;\n /**\n * Функция, вызывающаяся при сохранении отредактированного.\n * @param disableEditorMode - функция выключающая режим редактирования\n */\n onSave?: (disableEditorMode: () => void) => void;\n /**\n * Функция, вызывающаяся при отмене отредактированного.\n * @param disableEditorMode - функция выключающая режим редактирования\n */\n onCancel?: (disableEditorMode: () => void) => void;\n /** Пропсы кнопок в controlBlock. */\n buttons?: {\n save?: EditingButtonProps;\n cancel?: EditingButtonProps;\n edit?: EditingButtonProps;\n };\n /**\n * Кастомный слот, отображаемый левее кнопок «Отменить» / «Сохранить».\n * Виден только когда режим редактирования активен (editMode = true).\n * Зона ответственности разработчика — размерная сетка controlBlock не влияет на этот слот.\n */\n editModeLeftSlot?: React.ReactNode;\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: {\n enableButton?: DomMetadata;\n saveButton?: DomMetadata;\n cancelButton?: DomMetadata;\n };\n};\n\nexport type SummaryRowsConfig = {\n showDefault: boolean;\n showInControl: boolean;\n /**\n * callback при переключении тогла «Итоговые строки» в настройках таблицы.\n * Вызывается только по действию пользователя (не при монтировании),\n * поэтому подходит для сохранения выбора, например, в localStorage.\n * Сохранённое значение передавайте обратно в `showDefault`.\n */\n onChange?: (checked: boolean) => void;\n} & {\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: DomMetadata;\n};\n\n/**\n * Конфиг тултипа при hover по canvas-элементам.\n * Для активации фичи необходимо заполнить данный конфиг,\n * а также добавить нужные изменения в Canvas-элементах или в конфиге колонки.\n */\nexport type TableConfigTooltip = {\n /**\n * Включить/выключить колоночные и кастомные тултипы (cellTooltip, headerCellTooltip).\n * Внутренние тултипы (drag-иконка в шапке и другие по nodeId) работают всегда.\n * @default false\n */\n enabled?: boolean;\n /** Глобальная задержка перед показом тултипа (мс). Per-node переопределяет. @default 500 */\n mouseEnterDelay?: number;\n /** Глобальная задержка перед скрытием тултипа (мс). Per-node переопределяет. @default 0 */\n mouseLeaveDelay?: number;\n /**\n * Минимальная ширина тултипа. Число трактуется как px, строка с единицей\n * (например '20rem', '50%') отдаётся как есть. Действует на все canvas-тултипы,\n * включая авто-тултип Canvas.Text. Если ширина задана на самом тултипе\n * (per-node), приоритет у неё.\n */\n minWidth?: number | string;\n /**\n * Максимальная ширина тултипа. Число трактуется как px, строка с единицей\n * (например '20rem', '50%') отдаётся как есть. Действует на все canvas-тултипы,\n * включая авто-тултип Canvas.Text. Если ширина задана на самом тултипе\n * (per-node), приоритет у неё.\n */\n maxWidth?: number | string;\n};\n\nexport type InfinityScrollConfig<RowType extends ObjectForExtending> = {\n /** Триггер достижения скроллом зоны подгрузки данных. */\n onTrigger: (rows: RowType[]) => Promise<void> | void;\n /** Состояние загрузки (скелетоны) новых строк. */\n isLoading: boolean;\n /**\n * Флаг, когда все данные загружены — false.\n * @default true\n */\n hasMore?: boolean;\n /**\n * Для mode='region': за сколько строк до конца триггерить загрузку.\n * @default 5\n */\n rowThreshold?: number;\n};\n\nexport type { TableCanvasEmptyStateConfig, TableCanvasErrorStateConfig };\n\n/**\n * Настройка выделения ячеек/колонок/строк в TableCanvas — единый объект.\n * Это отдельная ось взаимодействия — не зависит от `highlightActiveType`.\n */\nexport type CellsSelectionConfig = {\n /**\n * Режим фактического выделения ячеек (нативный glide selection). По нему\n * работают copy/paste, рамка, fill-handle и затемнение шапки/нумерации.\n * @default \"range-cell\"\n */\n mode?: CellsSelectionMode;\n /**\n * Выделение колонок по клику на шапку. Ctrl/Cmd — добавить/убрать колонку,\n * Shift — диапазон колонок. Клик по иконкам сортировки/фильтрации в шапке\n * выделение НЕ вызывает. Поддерживает copy/paste по выделенным колонкам.\n * @default true\n */\n enableColumnSelection?: boolean;\n /**\n * Выделение строк по клику/драгу на колонке нумерации (`rowMarkers`).\n * Ctrl/Cmd — несмежный выбор отдельных строк, драг — смежный диапазон.\n * Поддерживает copy/paste по выделенным строкам. Требует включённой колонки\n * нумерации (`rowMarkers`). При `false` клик по нумерации ничего не выделяет.\n * @default true\n */\n enableRowSelection?: boolean;\n /**\n * Выделение всей таблицы кликом по «нулевой» ячейке — шапке колонки нумерации\n * (левый верхний угол). Выделяет все строки данных по всем колонкам одним\n * диапазоном; поддерживает copy/paste. Требует включённой колонки нумерации\n * (`rowMarkers`) и активного `mode` (≠ `disabled`).\n * @default true\n */\n enableSelectAll?: boolean;\n /**\n * Внешний (controlled) контроль НАТИВНОГО выделения (ячейки/диапазон/смежные\n * строки и колонки). `state` — кортеж `[value, setter]` как у `selecting.state`.\n * Сброс: `setter({ current: undefined, rows: empty, columns: empty })`.\n * Несмежный Ctrl-выбор колонок/строк (own-state) сюда не входит — он внутренний.\n */\n state?: [GridSelection, React.Dispatch<React.SetStateAction<GridSelection>>];\n};\n\n/** Один объединённый блок: какие строки и колонки слить. */\nexport type MergedCellsRegion = {\n rowKeys: Array<string | number>;\n colKeys: string[];\n /** Выравнивание контента этого блока. Важнее колоночного и общего. */\n mergedCellsAlign?: MergedCellsAlign;\n};\n\n/**\n * Видимость сторон рамки ячейки: true рисовать, false не рисовать, не задано -\n * работает уровень ниже (настройка колонки, строки или общая).\n */\nexport type CellBorderVisibility = {\n top?: boolean;\n right?: boolean;\n bottom?: boolean;\n left?: boolean;\n};\n\n/**\n * Управление рамками (линиями) таблицы: включение и выключение. Уровни, от\n * слабого к сильному: общие настройки (vertical, horizontal), затем колонка\n * (getVerticalBorder) и строка (getHorizontalBorder), затем ячейка\n * (getCellBorder).\n */\nexport type BordersConfig<RowType = ObjectForExtending> = {\n /** Рисовать ли вертикальные линии между колонками. @default true */\n vertical?: boolean;\n /** Рисовать ли горизонтальные линии между строками тела. @default true */\n horizontal?: boolean;\n /**\n * Точечное управление вертикальной линией справа от колонки (разделитель\n * после неё). Вернуть true или false, чтобы переопределить общую настройку\n * vertical, или undefined, чтобы оставить её. Зовётся на каждую видимую\n * колонку при перерисовке, поэтому функция должна быть быстрой.\n */\n getVerticalBorder?: (params: {\n /** Ключ колонки, справа от которой рисуется линия. */\n columnKey: string;\n /** Индекс колонки в порядке отрисовки (закреплённые в начале). */\n columnIndex: number;\n }) => boolean | undefined;\n /**\n * Точечное управление горизонтальной линией сверху строки. Вернуть true или\n * false, чтобы переопределить общую настройку horizontal, или undefined,\n * чтобы оставить её. Для summary-строк не вызывается. Зовётся на каждую\n * видимую строку при перерисовке, поэтому функция должна быть быстрой.\n */\n getHorizontalBorder?: (params: {\n /** Строка под линией (линия рисуется сверху этой строки). */\n row: RowType;\n /** Индекс строки среди отображаемых. При раскрытии subRows индексы сдвигаются. */\n rowIndex: number;\n /** Уровень вложенности subRows: 0 корень, 1 и больше дочерние. */\n treeLvl: number;\n }) => boolean | undefined;\n /**\n * Стороны рамки конкретной ячейки, вкл и выкл. Для ячеек без переопределений\n * возвращать undefined. Включает отрисовку линий с разбивкой по ячейкам,\n * поэтому функция должна быть быстрой: без тяжёлых вычислений и с готовыми\n * объектами-константами вместо новых на каждый вызов. Для summary-строк не\n * вызывается.\n */\n getCellBorder?: (params: {\n /** Индекс колонки среди отображаемых (без служебных). */\n col: number;\n /** Ключ колонки. */\n columnKey: string | undefined;\n /** Строка ячейки. */\n row: RowType;\n /** Индекс строки среди отображаемых. */\n rowIndex: number;\n /** Уровень вложенности subRows: 0 корень, 1 и больше дочерние. */\n treeLvl: number;\n }) => CellBorderVisibility | undefined;\n};\n\nexport type TableConfig<\n RowType extends ObjectForExtending,\n SummaryRowType,\n RowIdType extends string | number,\n FilterStateType extends ObjectForExtending,\n // SubRowType\n> = {\n /**\n * Группировка колонок (многоуровневая шапка через `columnConfig.children`):\n * объединение пустых ячеек шапки (`squashEmptyCells`, по умолчанию включено) и\n * дефолт выравнивания в объединённых ячейках (`squashedHeaderAlign`).\n */\n columnsGrouping?: ColumnsGroupingConfig;\n /**\n * Подсветка активной сущности в canvas-таблице.\n * @deprecated Значения `'cell'`/`'range-cell'` устарели — используйте\n * `cellsSelection.mode`. Актуальны `'row'` (подсветка строки) и `'disabled'`.\n */\n highlightActiveType?: HighlightActiveType;\n /**\n * Единый конфиг выделения ячеек: режим (`mode`), оси\n * (`enableColumnSelection`/`enableRowSelection`/`enableSelectAll`) и controlled\n * (`state`). См. {@link CellsSelectionConfig}.\n */\n cellsSelection?: CellsSelectionConfig;\n /**\n * Подсвеченная строка (`highlightActiveType='row'`).\n * `state` (опционально) — controlled-кортеж `[value, setter]`: задан — значением\n * владеешь снаружи (сброс `setter(undefined)`); не задан — таблица крутит\n * подсветку внутренним стейтом, а `onChange` всё равно срабатывает (подписка\n * без владения значением).\n */\n highlightActiveRow?: {\n state?: [\n number | undefined,\n React.Dispatch<React.SetStateAction<number | undefined>>,\n ];\n /**\n * Колбэк смены подсвеченной строки: отдаёт её флэт-индекс и сам объект\n * строки (`rows[index]`). Позволяет открывать данные подсвеченной строки\n * (например, в SplitView) без `onCellClicked`.\n */\n onChange?: (params: {\n index: number | undefined;\n row: RowType | undefined;\n }) => void;\n };\n /**\n * Эффекты при наведении (hover)\n * `row` — подсветка строки под курсором.\n * Независимая визуальная ось: селектинг (`cellsSelection`) и `highlightActiveType='row'`\n * рисуются ПОВЕРХ hover-подсветки и визуально перекрывают её (hover\n * «остаётся под ними» и снова виден после сброса выделения).\n *\n * `{ row: true }` — включить с цветами из темы;\n * `{ row: { color: '#F7F9FB' } }` — переопределить цвет data-ячеек.\n * @default undefined (выключено)\n */\n hoverEffects?: HoverEffectsConfig;\n /**\n * Включает компенсацию тонких canvas-линий при browser zoom ниже 100%, когда devicePixelRatio меньше 1.\n * Влияет только на grid/header/sticky hairline borders.\n * @default false\n */\n enableLowDprHairline?: boolean;\n /**\n * Управление рамками (линиями) таблицы: включение и выключение.\n *\n * Уровни, от слабого к сильному: общие настройки (vertical, horizontal),\n * затем колонка (getVerticalBorder) и строка (getHorizontalBorder), затем\n * ячейка (getCellBorder).\n *\n * `vertical: false` и `horizontal: false` убирают все вертикальные или\n * горизонтальные линии тела. `getCellBorder` включает и выключает стороны\n * рамки конкретной ячейки; при его использовании линии рисуются с разбивкой\n * по ячейкам.\n */\n borders?: BordersConfig<RowType>;\n /**\n * rowSize - размеры строк таблицы\n */\n rowSize?: Prettify<RowSize>;\n /**\n * rowHeight - размер высоты строк таблицы\n */\n rowHeight?: Maybe<number | RowHeightFunc<RowType>>;\n /**\n * sorting - активация сортировки. Условие активации - это наличие данного свойства. Нужно также сконфигурировать колонки.\n *\n * Пример:\n *\n * tableConfig={sorting: {sortingState}}\n *\n * columnConfig=[{sortingType: 'numberSort'}]\n */\n sorting?: {\n state: [\n readonly SortColumn[],\n React.Dispatch<React.SetStateAction<readonly SortColumn[]>>,\n ];\n /**\n * manualSorting - пропс, активирующий ручную-кастомную (или на стороне бэкенда) сортировку\n */\n manualSorting?: boolean;\n };\n /** @deprecated Свойство view не используется и будет удалено в следующей мажорной версии. */\n view?: View;\n /**\n * filtering - активация фильтрации. Условие активации - это наличие данного свойства. Нужно также сконфигурировать колонки.\n *\n * Пример:\n *\n * tableConfig={filtering: {stateAndSetter, ...}}\n *\n * columnConfig=[{filtering: {...}}]\n */\n filtering?: FilteringConfig<FilterStateType>;\n /**\n * Сворачивание / разворачивание таблицы\n */\n collapsing?: TableCollapseConfig;\n /**\n * selecting - активация выбора строк. Условие активации - это наличие данного свойства.\n * Есть поддержка выбора строк с многоуровневой вложенностью.\n *\n * Пример:\n *\n *```jsx\n * import { Table } from '@daisforge/ui';\n *\n * <Table\n * tableConfig={{selecting: {stateAndSetter, rowKeyGetter}}}\n * {...rest}\n * />\n * ```\n */\n selecting?: {\n state: [\n ReadonlySet<RowIdType>,\n React.Dispatch<React.SetStateAction<ReadonlySet<RowIdType>>>,\n ];\n rowKeyGetter: (row: RowType) => RowIdType;\n } & Prettify<SelectingRowConfig<RowType, RowIdType>> & {\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n controlBlock?: {\n domMetadata?: DomMetadata;\n };\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам RightSidebar\n */\n sidebar?: {\n domMetadata?: DomMetadata;\n };\n };\n /**\n * editing - активация редактирования. Условие активации - это наличие данного свойства. Нужно также сконфигурировать колонки.\n *\n * Пример:\n *\n * tableConfig={editing: {onRowsChange, rowKeyGetter}}\n *\n * columnConfig=[{editingCell: {...}}]\n */\n editing?: EditingConfig<RowType, RowIdType, SummaryRowType>;\n\n /**\n * cellTransfer — конфигурация копирования, вставки и fill handle.\n * По умолчанию копирование (Ctrl+C) работает в режиме редактирования.\n * Данные копируются в формате TSV (tab-separated values), совместимом с Excel.\n *\n * Пример:\n *\n * tableConfig={{ cellTransfer: { enabled: true, onBeforeCopy: (data) => data } }}\n */\n cellTransfer?: CellTransferConfig;\n\n /**\n * Объединение ячеек тела таблицы.\n *\n * mergeByCellValues — колонки, в которых подряд идущие одинаковые значения\n * сливаются в один блок (по вертикали). Границы блоков таблица считает сама из\n * данных; сортировка и фильтр их пересобирают. Данные не меняются — значение и\n * так повторяется в строках, объединение лишь показывает его одной ячейкой.\n *\n * mergedCellsRegions — список блоков, заданных снаружи (как выделение): каждый\n * блок описан ключами строк (rowKeys) и колонок (colKeys). Нужен rowKeyGetter.\n * Если после сортировки или скрытия колонок строки/колонки блока перестали идти\n * подряд — блок не рисуется. Важнее mergeByCellValues.\n *\n * Примеры: mergeCells={{ mergeByCellValues: ['dept', 'role'] }},\n * mergeCells={{ mergedCellsRegions, rowKeyGetter: (r) => r.id }}.\n */\n mergeCells?: {\n mergeByCellValues?: Array<\n string | { colKey: string; value: (row: RowType) => unknown }\n >;\n /** Список блоков, заданных снаружи (по ключам строк и колонок). */\n mergedCellsRegions?: MergedCellsRegion[];\n /**\n * Нужен для mergedCellsRegions: находит строку по её ключу. Должна быть\n * стабильной функцией; менять её на лету не нужно — в пересборку таблицы она\n * не входит.\n */\n rowKeyGetter?: (row: RowType) => string | number;\n /**\n * Выравнивание по умолчанию для всех блоков. Колоночный mergedCellsAlign и\n * выравнивание конкретного региона важнее.\n */\n mergedCellsAlign?: MergedCellsAlign;\n };\n\n /**\n * Модуль нотификаций: стандартизированный канал событий для внешних\n * потребителей. Таблица UI не рисует — вызывает `onNotification`, потребитель\n * показывает тост/модалку на своей стороне. Сейчас эмитятся ошибки copy/paste\n * (в т.ч. multi-range 2D-разброс, readonly/overflow-abort, пропуск валидацией).\n */\n notifications?: TableNotificationsConfig;\n\n /**\n * subRows - активация иерархии, отображения вложенных строк. Условие активации - наличие данного свойства. Нужно также сконфигурировать колонки.\n *\n * Пример:\n *\n * tableConfig={subRows: {getSubRows, rowKeyGetter}}\n *\n * columnConfig=[{subRow: {...}}]\n */\n subRows?: SubRows<RowType, RowIdType>;\n /**\n * Столбец с нумерацией строк.\n * Активируется наличием этого свойства. Поддерживает `subRows` любой глубины.\n *\n * @see {@link RowMarkersTableConfig} — полное описание конфигурации и примеры.\n */\n rowMarkers?: RowMarkersTableConfig<RowType>;\n rowsGrouping?: RowsGrouping<RowType, SummaryRowType>;\n\n /**\n * resizableColumn - активация изменения ширины колонки с помощью курсора. Условие активации - resizableColumn: true. Нужно также сконфигурировать колонки.\n *\n * Пример:\n *\n * tableConfig={resizableColumn: true}\n *\n * columnConfig=[{resizable: true}]\n */\n resizableColumn?: boolean;\n /**\n * style - inline-стили. Для стилей самой таблицы (без вложенности).\n *\n * Исключены свойства 'width' | 'height' | 'minWidth' | 'minHeight' | 'maxWidth' | 'maxHeight'. Их следует стилизовать через свойства containerStyle.\n */\n style?: Omit<\n CSSProperties,\n 'width' | 'height' | 'minWidth' | 'minHeight' | 'maxWidth' | 'maxHeight'\n >;\n /**\n * css - для стилей простых и сложных(например, для стилизации cell, headerCell, ...).\n *\n * Пример:\n *\n * ```css\n * & > .rdg-header-row > .rdgCell {\n * background-color: red;\n * }\n * ```\n *\n */\n css?: string | CSSObject;\n\n summaryRows?: SummaryRowsConfig;\n /**\n * controlBlock - пропс для активации, кастомизации контролблока.\n */\n controlBlock?: ControlBlockConfig;\n /**\n * containerStyle - инлайновые стили контейнера таблицы и контролблока. высоту и ширину для таблицы рекомендуется задавать в этом пропсе.\n * Пример:\n *\n * ```tsx\n tableConfig={{ containerStyle: { height: '70vh' } }}\n * ```\n */\n containerStyle?: CSSProperties | undefined;\n /**\n * containerCss - стили для контейнера таблицы и контролблока.\n * Через этот пропс можно дополнительно кастомизировать контейнер и все его дочерние элементы.\n */\n containerCss?: string | CSSObject | undefined;\n /**\n * containerId - html-атрибут id контейнера таблицы.\n */\n containerId?: string | undefined;\n\n /**\n * unstickyHeader - откреплённая шапка. Header уезжает вместе со скроллом контента.\n * @default false\n */\n unstickyHeader?: boolean;\n\n /** Тултип при hover по canvas-элементам.\n * Для активации фичи необходимо заполнить данный конфиг,\n * а также добавить нужные изменения в Canvas-элементах или в конфиге колонки.\n */\n tooltip?: TableConfigTooltip;\n\n /**\n * infinityScroll - бесконечная подгрузка данных при скролле.\n *\n * Условие активации - наличие самого пропса infinityScroll.\n *\n * При активации infinityScroll отключается дефолтная сортировка и фильтрация.\n * (Предполагается, что если есть infinityScroll,\n * то в таблице представлен не весь объем данных,\n * по этой причине дефолтная сортировка и фильтрация не подходят и будут отображать некорректные данные)\n *\n */\n infinityScroll?: InfinityScrollConfig<RowType>;\n /**\n * @isLoading - состояние загрузки данных для таблицы.\n */\n isLoading?: boolean | { boolean: boolean; skeletonRowsCount: number };\n /**\n * loadingOverlay - конфигурация для отображения оверлея загрузки.\n * Показывает индикатор загрузки поверх таблицы с возможностью кастомизации.\n */\n loadingOverlay?: {\n /**\n * Активен ли оверлей загрузки\n * @default true\n */\n active?: boolean;\n /**\n * Кастомный компонент спиннера\n * @default <Spinner view=\"secondary\" size=\"36\" /> (внутренний компонент)\n */\n spinner?: ReactNode;\n /**\n * Основной заголовок оверлея\n * @default \"Загрузка таблицы\"\n */\n title?: string;\n /**\n * Подзаголовок, который появится после задержки, пустая строка - значит он не появится\n * @default \"\"\n */\n subtitle?: string;\n /**\n * Задержка перед показом подзаголовка (мс)\n * @default 10000 (10 секунд)\n */\n showSubtitleDelay?: number;\n };\n /**\n * Empty state внутри content-области canvas-таблицы.\n * Не заменяет control block, header или pagination.\n */\n emptyState?: TableCanvasEmptyStateConfig;\n /**\n * Error state внутри content-области canvas-таблицы.\n * Не заменяет control block, header или pagination.\n */\n errorState?: TableCanvasErrorStateConfig;\n // FIXME:\n // noRowsFallback?: boolean | { custom: ReactNode };\n columnsControl?: ColumnsControlConfig;\n // FIXME:\n // rowDetailPanel?: RowDetailConfig<RowType>;\n // FIXME: Временно комментирую использование, пока не адаптируем TableCanvas\n // rowInstruments?: {\n // getRowDropdownConfig: RowInstrumentsType<RowType>;\n // /**\n // * @default false\n // */\n // defaultOpened?: boolean;\n // /**\n // * @default true\n // */\n // showInControl?: boolean;\n // /**\n // * Внешний стейт видимости\n // */\n // openedState?: [boolean, React.Dispatch<React.SetStateAction<boolean>>];\n // };\n fullScreenEnabled?: FullScreen;\n /**\n * Переносит портал editor overlay внутрь контейнера таблицы вместо document.body.\n * Решает проблему focus trap и сдвига координат при рендере таблицы в модалке с CSS transform.\n * @default undefined (overlay рендерится в document.body — стандартное поведение)\n */\n editorOverlayPortal?: 'inside';\n keyText?: boolean | KeyTextConfig;\n /**\n * pagination - пропс для пагинации.\n *\n * Условие активации - наличие самого пропса pagination.\n *\n * При активации pagination отключается дефолтные поиск, сортировка и фильтрация.\n * (поиск работает на уровне с фильтрацией и сортировкой, сначала поиск, затем фильтрация, затем сортировка)\n *\n */\n pagination?: PaginationProps;\n /**\n * searching - пропс для поиска по таблицу.\n *\n * Условие активации - наличие searching.enabled: true\n *\n */\n /**\n * Конфигурация табов в сайдбаре\n */\n sidebarConfig?: SidebarConfig;\n searching?: SearchingProps;\n /**\n * onHeaderContextMenu - callback открытия контекстного меню.\n */\n onHeaderContextMenu?: TableGlideInstanceProps<\n RowType,\n SummaryRowType\n >['onHeaderContextMenu'];\n onHeaderContextMenuDropdown?: TableGlideInstanceProps<\n RowType,\n SummaryRowType\n >['onHeaderContextMenuDropdown'];\n onCellContextMenuDropdown?: TableGlideInstanceProps<\n RowType,\n SummaryRowType\n >['onCellContextMenuDropdown'];\n onCellContextMenu?: TableGlideInstanceProps<\n RowType,\n SummaryRowType\n >['onCellContextMenu'];\n /**\n * Обработчик клика по ячейке.\n *\n * Получает `cell` readonly [colIndex, rowIndex] от glide, и `info` обогащённый объект\n * с row, column, ctxs, refTable (аналогично onCellContextMenu).\n */\n onCellClicked?: (\n cell: readonly [number, number],\n info: TableInfoWithRow<RowType, SummaryRowType>,\n ) => void;\n} & GlideInstanceOmitted<RowType, SummaryRowType>;\n\ntype GlideInstanceOmitted<\n RowType extends ObjectForExtending,\n SummaryRowType,\n> = Pick<\n Omit<\n TableGlideInstanceProps<RowType, SummaryRowType>,\n | keyof TableGlideCustomProps<RowType, SummaryRowType>\n | 'CellReadOnlyEditor' /* CellReadOnlyEditor - свойство только для GlideInstance */\n >,\n | 'className'\n | 'columnSelect'\n | 'minColumnWidth'\n | 'maxColumnWidth'\n | 'maxColumnAutoWidth'\n | 'onVisibleRegionChanged'\n | 'onCellClicked'\n // | 'CellReadOnlyEditor'\n // | 'onGroupHeaderClicked'\n | 'onHeaderClicked'\n | 'onItemHovered'\n | 'trapFocus'\n | 'onColumnResize'\n>;\nexport type CellReadOnlyEditorProps<\n RowType extends ObjectForExtending,\n SummaryRowType,\n> = CellReadOnlyEditorGlideInstanceStaticProps &\n EditingCellInfo<RowType, SummaryRowType>;\n\n// & Pick<\n// DataGridPropsDefault<RowType, SummaryRowType, RowIdType>,\n// | 'summaryRowHeight'\n// | 'onFill'\n// | 'onCopy'\n// | 'onPaste'\n// | 'onCellClick'\n// | 'onCellDoubleClick'\n// | 'onCellContextMenu'\n// | 'onCellKeyDown'\n// | 'onSelectedCellChange'\n// | 'onScroll'\n// | 'onColumnResize'\n// | 'onColumnsReorder'\n// | 'enableVirtualization'\n// | 'rowClass'\n// | 'data-testid'\n// | 'headerRowHeight'\n// >;\n\n/**\n * Конфигурация фичи rowMarkers (столбец с нумерацией строк).\n *\n * Столбец frozen, вставляется первым, исключён из reorder/pin/hide/sort/grouping.\n * Поддерживает плоский и древовидный (`subRows`) режимы любой глубины вложенности.\n *\n * **Дефолтное поведение** (без `getRowMarker`): root-only нумерация —\n * корневые строки получают номер (`startIndex + rootIndex`), дочерние — пустую строку.\n *\n * @example\n * ```tsx\n * // Минимальная конфигурация\n * tableConfig={{ rowMarkers: { startIndex: 1 } }}\n *\n * // Сквозная стабильная нумерация\n * tableConfig={{ rowMarkers: { getRowMarker: ({ flatIndex }) => flatIndex + 1 } }}\n * ```\n */\nexport type RowMarkersTableConfig<\n RowType extends ObjectForExtending = ObjectForExtending,\n> = {\n /**\n * Стартовый индекс нумерации (для дефолтной логики без `getRowMarker`).\n * @default 1\n */\n startIndex?: number;\n\n /**\n * Ширина столбца с нумерацией (в px).\n * Если задан `size` — он приоритетнее.\n+ * Если ни `size`, ни `width` не заданы — ширина подстраивается\n+ * под глобальный `tableConfig.rowSize` (small=20, medium=32, big=48).\n * @default 32\n */\n width?: number;\n /**\n * Размер столбца. Приоритетнее `width`.\n * - `xs` = 20px\n * - `s` = 32px\n * - `m` = 48px\n */\n size?: 'xs' | 's' | 'm';\n /**\n * Кастомная функция нумерации. Полностью переопределяет дефолтную root-only логику.\n * Вызывается при рендере каждой ячейки столбца нумерации.\n *\n * ⚠️ Вызывается не только при полной отрисовке таблицы, но и при ховере/скролле —\n * для **одной** ячейки. Не используйте внешние переменные-счётчики —\n * используйте аргументы (`siblingPath`, `flatIndex` и др.), они всегда актуальны.\n *\n * @example\n * // Сквозная стабильная нумерация (все строки, номера не прыгают при сворачивании)\n * getRowMarker: ({ flatIndex }) => flatIndex + 1\n *\n * @example\n * // Корневые — номер, дочерние — прочерк\n * getRowMarker: ({ isSubRow, flatIndex }) => isSubRow ? '—' : flatIndex + 1\n *\n * @example\n * // Иерархическая нумерация любой глубины: 1, 1.1, 1.1.1, 1.2, 2\n * getRowMarker: ({ siblingPath }) => siblingPath.map(i => i + 1).join('.')\n */\n getRowMarker?: (args: {\n /** Данные текущей строки. */\n row: RowType;\n /** Уровень строки в дереве: `0` — корневая, `1` — дочерняя, `2` — внучка, и т.д. */\n level: number;\n /** `true`, если строка дочерняя (`level > 0`). */\n isSubRow: boolean;\n /**\n * Индекс строки в **видимых** строках.\n * **Нестабильный** — меняется при сворачивании и разворачивании веток.\n */\n rowIndex: number;\n /**\n * Стабильный 0-based индекс строки в **полном** дереве (включая скрытые/свёрнутые).\n * Не меняется при collapse/expand — подходит для сквозной нумерации.\n */\n flatIndex: number;\n /**\n * Порядковый номер среди siblings одного родителя (0-based).\n * Для корневых строк — порядковый номер среди всех корневых.\n * Для дочерних — порядковый номер среди children одного `parentKey`.\n */\n siblingIndex: number;\n /**\n * Путь siblingIndex-ов от корня до текущей строки (каждый элемент 0-based).\n *\n * Примеры:\n * - корневая строка (2-я): `[1]`\n * - дочерняя (3-й ребёнок 2-го корня): `[1, 2]`\n * - внучка (1-й ребёнок 1-го ребёнка 1-го корня): `[0, 0, 0]`\n *\n * Для иерархической нумерации: `siblingPath.map(i => i + 1).join('.')` → `\"1.1.1\"`\n *\n * Для плоской таблицы (без subRows): всегда `[siblingIndex]` (один элемент).\n */\n siblingPath: number[];\n /**\n * Ключ родительской строки (`rowKeyGetter(parent)`).\n * `null` для корневых строк. Работает для **любой** глубины вложенности.\n */\n parentKey: string | number | null;\n /** Текущий видимый `flattened` массив строк. */\n rows: readonly RowType[];\n }) => string | number;\n};\n```\n\n## FilterComponentInPopoverProps\n\nПропсы, доступные в кастомном компоненте фильтра (`component: 'custom'`).\n\n```typescript\ntype FilterComponentInPopoverProps<\n FilterStateType extends ObjectForExtending,\n ColumnConfig,\n> = {\n popoverIsOpen: boolean;\n setPopoverIsOpen: React.Dispatch<React.SetStateAction<boolean>>;\n columnConfig: ColumnConfig;\n tabIndex: number;\n headerContextState: HeaderContextValueTypeInstance<FilterStateType> &\n FiltersVariables &\n HeaderContextValueTypeInstance<ObjectForExtending>;\n /**\n * Источник открытия фильтра: из шапки таблицы или из сайдбара\n * Полезно для условной логики в customRender (например, alwaysOpened для combobox)\n */\n filterSource?: 'header' | 'sidebar';\n};\n```",
|
|
53638
53887
|
"api": [
|
|
53639
53888
|
{
|
|
53640
53889
|
"typeName": "FilteringConfig",
|
|
53641
|
-
"source": "type FilteringConfig<T> = {\n state: [T, React.Dispatch<React.SetStateAction<T>>];\n /**\n * @deprecated Использовать filtersInfo\n *\n * clearedValue - состояние фильтров после очистки. Используется для сравнения:\n * Например, был ли фильтр конкретной колонки изменен рассчитывается посредством сравнения текущего значения фильтра и значения фильтра в clearedValue.\n * Если они равны, то фильтр считается не измененным.\n */\n clearedValue?: T;\n /**\n * Информация о фильтрах для каждой колонки.\n * Используется для:\n * 1. Хранения меток (label) фильтров для отображения в UI\n * 2. Хранения значений по умолчанию (clearedValue) для каждого фильтра\n * 3. Определения, был ли фильтр изменен (сравнение текущего значения с clearedValue)\n */\n filtersInfo?: Record<\n keyof T,\n {\n label: string;\n clearedValue: T[keyof T];\n }\n >;\n /**\n * manualFiltering - пропс, активирующий ручную-кастомную (или на стороне бэка) фильтрацию.\n * @remarks\n * Для автоматической фильтрации (когда не используется manualFiltering в tableConfig):\n * - Для всех типов фильтров обязательно должен быть указан `valueInRow`\n * - Для component: 'select' дополнительно должен быть указан `filteringType`\n * - Для component: 'input' с кастомным фильтром (когда filter - функция)\n * функция фильтрации должна быть передана явно\n *\n * Если используется manualFiltering, эти параметры не обязательны,\n * так как вся логика фильтрации реализуется извне.\n */\n manualFiltering?: boolean;\n /**\n * Конфигурация для отображения фильтров в правом сайдбаре.\n *\n * Позволяет:\n * 1. Добавлять глобальные фильтры (не привязанные к конкретной колонке)\n * 2. Управлять порядком отображения фильтров\n * 3. Переопределять рендер и заголовки колоночных фильтров\n *\n * Логика работы:\n * - По умолчанию в сайдбаре отображаются все колоночные фильтры (из columnConfig)\n * - Ключом фильтра считается `key` колонки, если его нет, то пытаемся взять `keyInFilterState` (если указан), иначе это не будет работать\n * - Заголовком фильтра по умолчанию является `name` колонки или ключ фильтра (name || key)\n * - Глобальные фильтры добавляются через `items` с уникальными ключами\n *\n * Особенности:\n * 1. Порядок отображения:\n * - Сначала фильтры из `order` (в указанной последовательности)\n * - Затем остальные колоночные фильтры (в порядке columnConfig)\n * - В конце - глобальные фильтры (в алфавитном порядке ключей)\n *\n * 2. Переопределение колоночных фильтров:\n * - Чтобы изменить заголовок: укажите ключ колонки в `items` с новым `label`\n * - Чтобы заменить рендер: укажите ключ колонки с `customRenderFn`\n * - Оригинальный фильтр из колонки будет проигнорирован\n *\n * 3. Глобальные фильтры:\n * - Ключ не должен совпадать с ключами колонок\n * - Обязательно указать `label` и `customRenderFn`\n * - Отображаются после всех колоночных фильтров, если не переопределены в order\n *\n * @example\n * // Добавление глобального фильтра и изменение порядка\n * sidebarConfig: {\n * order: ['status', 'tasks', 'type'], // Сначала статус, затем глобальный поиск\n * items: {\n * tasks: { // Уникальный ключ\n * label: 'Поиск по всем полям',\n * customRenderFn: () => <TaskComponent />\n * },\n * status: { // Переопределение колоночного фильтра\n * label: 'Статус заявки', // Новый заголовок\n * customRenderFn: () => <CustomStatusFilter /> // Кастомный рендер\n * }\n * type: { // Переопределение только Label колоночного фильтра\n * label: 'Тип', // Новый заголовок\n * }\n * }\n * }\n */\n sidebarConfig?: {\n /**\n * Определяет порядок отображения фильтров.\n * - Указываются ключи фильтров (колоночных или глобальных)\n * - Не указанные в order фильтры отображаются после\n * - Если order пуст, сохраняется порядок: глобальные фильтры + columnConfig фильтры в конце\n */\n order?: string[];\n /**\n * Конфигурация фильтров для сайдбара.\n * Ключом может быть:\n * - Ключ колонки (для переопределения колоночного фильтра)\n * - Уникальный ключ (для добавления глобального фильтра)\n */\n items: Partial<\n Record<\n keyof T,\n {\n /** Заголовок фильтра (обязателен для глобальных фильтров), можно использовать для переопределения для локальных фильтров */\n label: string;\n /**\n * Функция рендера компонента фильтра.\n * Для колоночных фильтров переопределяет оригинальный рендер.\n * Для глобальных фильтров обязательна.\n */\n customRenderFn?: (\n filters: T,\n setFilters: React.Dispatch<React.SetStateAction<T>>,\n ) => React.ReactNode;\n }\n >\n >;\n };\n /**\n * Callback для кастомизации стилей чипсов (фильтров) в списке\n *\n * @param {ItemOrGroup} itemOrGroup - Текущий элемент или группа фильтров\n * @param {Item | undefined} item - Конкретный элемент фильтра (если есть)\n * @returns {CSSObject} Объект стилей, который будет применен к чипсу\n *\n * @description\n * Позволяет динамически задавать стили для каждого чипса в зависимости от его типа и содержимого.\n * Вызывается для каждого отображаемого чипса (как для отдельных элементов, так и для элементов внутри групп).\n *\n * @example\n * // Пример 1: Стилизация чипсов по типу\n * chipStyle: (itemOrGroup, item) => {\n * if (isGroup(itemOrGroup)) {\n * return { backgroundColor: '#f0f0f0' };\n * }\n * return { backgroundColor: '#e0e0e0' };\n * }\n *\n * @example\n * // Пример 2: Стилизация по значению фильтра\n * chipStyle: (itemOrGroup, item) => {\n * if (item?.label === 'Высокий приоритет') {\n * return {\n * backgroundColor: '#ffebee',\n * color: '#d32f2f'\n * };\n * }\n * return {};\n * }\n *\n * @example\n * // Пример 3: Разные стили для элементов в группе и одиночных\n * chipStyle: (itemOrGroup, item) => {\n * if (item) {\n * // Стиль для элемента внутри группы\n * return { maxWidth: 180 };\n * }\n * // Стиль для одиночного чипа\n * return { maxWidth: 150 };\n * }\n */\n chipStyle?: (itemOrGroup: ItemOrGroup, item: Item | undefined) => CSSObject;\n /**\n * Пользовательский форматтер заголовка группы чипсов.\n *\n * Используется в блоке активных фильтров для подмены текста заголовка\n * группы (например, “Статус”, “Тип”, “Автор”). Полезно, когда нужно\n * динамически менять подпись (добавить счётчик, i18n и т.п.).\n *\n * @param {ItemOrGroup} itemOrGroup Объект группы (тип Group). Вызов происходит только для групп,\n * поэтому безопасно кастовать к Group.\n * @returns {string} Текст заголовка группы чипсов.\n *\n * @default Возвращается `group.groupLabel`.\n *\n * @remarks\n * - Функция должна быть чистой и быстрой (без сетевых запросов и побочных эффектов).\n * - Возвращайте ТОЛЬКО строку — чипы отображают текстовое значение.\n * - Для длинных строк применяется усечение (overflow с многоточием) на уровне компонента.\n *\n * @example\n * // Добавить двоеточие и количество выбранных элементов\n * renderGroupLabel: (group) => `${group.groupLabel}: ${group.items.length}`\n *\n * @example\n * // Локализация заголовка группы\n * const i18n = { status: 'Статус', type: 'Тип' };\n * renderGroupLabel: (group) => i18n[group.groupId] ?? group.groupLabel\n */\n renderGroupLabel?: (group: Group) => string;\n\n /**\n * Пользовательский форматтер текста чипса (элемента внутри группы или одиночного фильтра).\n *\n * Позволяет управлять тем, что именно отображается внутри каждого чипса. Особенно полезен\n * при серверной пагинации/ленивой загрузке, когда в состоянии фильтра хранится только value,\n * а label необходимо подставить из локального кэша.\n *\n * @param {Group | null } group Группа, внутри которой рендерится чип (или null).\n * @param {Item} item Сам элемент чипса. В группах передаётся конкретный `Item`,\n * для одиночного чипа может быть `undefined`.\n * @returns {string} Текст, который будет показан в чипсе.\n *\n * @default Используется `item?.label.toString()` (или строковое представление value).\n *\n * @remarks\n * - Функция должна быть чистой и быстрой;\n * - Возвращайте ТОЛЬКО строку.\n *\n * @example\n * // 1) Отображение label из кэша при серверной пагинации\n * const labelsCacheRef = useRef(new Map<string, string>());\n * renderChipLabel: (group, item) => {\n * if (item?.id != null) {\n * const key = String(item.id);\n * const fromCache = labelsCacheRef.current.get(key);\n * if (fromCache) return fromCache; // красивый label, если уже загрузили\n * return String(item.label ?? key); // фоллбэк: временно показываем value/label из item\n * }\n * return ''; // безопасный фоллбэк для одиночных случаев\n * }\n *\n * @example\n * // 2) Нормализация отображения числовых значений\n * renderChipLabel: (_group, item) => {\n * const v = Number(item?.label);\n * return Number.isFinite(v) ? v.toLocaleString('ru-RU') : String(item?.label ?? '');\n * }\n *\n * @example\n * // 3) Префикс по типу группы\n * renderChipLabel: (group, item) => {\n * const prefix = group.groupId === 'status' ? '' : '#';\n * return `${prefix}${item?.label ?? item?.id ?? ''}`;\n * }\n */\n renderChipLabel?: (group: Group | null, item: Item) => string;\n};\n\nexport type DefaultSidebarTabIds = 'columns' | 'tableSettings' | 'filtering';\n\n/**\n * Конфигурация sidebar\n */\nexport type SidebarConfig = {\n /**\n * Включен ли sidebar. Отвечает только за UI. Не влияет на перерасчёт фичей.\n * @default true\n */\n enabled?: boolean;\n /**\n * Открыт ли sidebar при первом рендере (uncontrolled-режим).\n * Игнорируется, если передан openState.\n * @default false\n */\n defaultOpen?: boolean;\n /**\n * Внешний контроль открытия/закрытия sidebar.\n * Если передан — источник истины, defaultOpen игнорируется.\n */\n openState?: [boolean, React.Dispatch<React.SetStateAction<boolean>>];\n /**\n * id вкладки, выбранной по умолчанию (актуально при открытом сайдбаре).\n * Если id не найден или у вкладки showInSidebar=false — используется первая доступная.\n */\n defaultActiveTabId?: string;\n /**\n * Внешний контроль активной вкладки (controlled-режим).\n * Если передан — источник истины, defaultActiveTabId игнорируется.\n */\n activeTabState?: [\n string | null,\n React.Dispatch<React.SetStateAction<string | null>>,\n ];\n /**\n * Колбэк смены активной вкладки. Вызывается и в uncontrolled-режиме.\n * При закрытии сайдбара приходит null.\n */\n onActiveTabChange?: (tabId: string | null, tab?: SidebarTab) => void;\n /**\n * Кастомные табы\n */\n customTabs?: Array<\n Omit<SidebarTab, 'id'> & {\n id: Exclude<string, DefaultSidebarTabIds>;\n }\n >;\n /**\n * Порядок отображения кастомных вкладок\n */\n customTabsOrder?: Array<Exclude<string, DefaultSidebarTabIds>>;\n defaultTabs?: Array<\n | {\n id: 'filtering' | 'columns';\n /** название таба в рамках горизонтального табов внутри таба настройки */\n label?: string;\n /** название таба в рамках вертикальных табов сайдбара (если данный таб окажется единственным табом в настройках) */\n title?: string;\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: DomMetadata;\n /**\n * Кастомный элемент справа от title в шапке сайдбара\n */\n titleRightSlot?: React.ReactNode;\n /** @default true */\n showInSidebar?: boolean;\n /** тултип иконки шестеренки (для табов с id = filtering и columns - недоступен. Настраивается через таб с id='tableSettings') */\n iconTooltipText?: undefined;\n }\n | {\n id: 'tableSettings';\n /** название таба в рамках горизонтального табов внутри таба настройки */\n label?: string;\n /** название таба в рамках вертикальных табов сайдбара */\n title?: string;\n\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: DomMetadata;\n /**\n * Кастомный слот для вкладки tableSettings (рендерится после общих настроек)\n * Только дл id: 'tableSettings'\n */\n customGeneralSettingsSlot?: React.ReactNode;\n /**\n * Кастомный элемент справа от title в шапке сайдбара\n */\n titleRightSlot?: React.ReactNode;\n /** @default true */\n showInSidebar?: boolean;\n /** тултип иконки шестеренки @default 'Настройки' */\n iconTooltipText?: string;\n }\n >;\n};\n\nexport function activeViewIs<T extends 'cards' | 'rows'>(\n checkType: T,\n viewState: 'cards' | 'rows',\n view: View,\n): view is ViewMods[T] {\n return checkType === viewState;\n}\n\n/** Размер controlBlock: 'm' и 's' — одинаковые стили, 'xs' — уменьшенный */\nexport type ControlBlockSize = 'm' | 's' | 'xs';\n\nexport type ControlBlockConfig = {\n /**\n * show - наличие controlBlock-а\n * @default true\n */\n show?: boolean;\n /**\n * Размер controlBlock и его элементов (кнопки, иконки, поиск, отступы).\n * 'm' и 's' — стандартные стили, 'xs' — компактный режим.\n * Не влияет на customFeatures и кастомные слоты — они контролируются разработчиком.\n * @default 'm'\n */\n size?: ControlBlockSize;\n /**\n * @deprecated Используйте кастомные кнопки через rightSideInner или customFeatures.\n * leftSideInner - пропс для добавления кнопок в левую часть контролблока.\n * Продолжает работать для обратной совместимости.\n */\n leftSideInner?: ControlBlockButtonProps[];\n /**\n * rightSideInner - пропс для добавления кнопок в правую часть контролблока\n */\n rightSideInner?: ControlBlockButtonProps[];\n /**\n * customFeatures - пропс для добавления кастомных фичей (кнопки-иконки)\n */\n customFeatures?: FeatureItem[];\n /**\n * pinningMenu - нативная фича закрепления столбцов (SplitIconButton с\n * дропдауном) в правой зоне иконок. Появляется, когда активировано\n * закрепление колонок (columnsControl.pinning). Продукт может донастроить\n * и дополнить пункты меню (см. PinningMenuConfig).\n */\n pinningMenu?: PinningMenuConfig;\n /**\n * Пропсы для компонента dropdown в котором будут скрыты левые фичи при адаптивной компрессии\n */\n leftSideDropdownProps?: TableDropdownConfigProps;\n /**\n * Пропсы для компонента dropdown в котором будут скрыты правые фичи при адаптивной компрессии\n */\n rightSideDropdownProps?: TableDropdownConfigProps;\n /**\n * Активна ли фича компрессии (сжатие ToolsMenu при адаптиве)\n * @default true\n */\n enableAdaptiveCompress?: boolean;\n /**\n * Панель массовых действий\n */\n massActionPanel?: {\n /**\n * Кнопки панели. Размеры кнопок/дропдаунов панель подбирает сама (по `size` панели и компактности) —\n * передавать `size` кнопкам не нужно. Если `size` на кнопке всё же задан — он используется как есть.\n */\n buttons: MassActionButtonProps[];\n /**\n * Пропсы для Dropdown, в который сжались кнопки\n */\n collapsedDropdownProps?: TableDropdownConfigProps;\n /**\n * Отступ панели снизу от контейнера (px)\n * @default 24\n */\n bottom?: number;\n /**\n * Управление отображением панели массовых действий.\n * - `undefined` (по умолчанию) — стандартное поведение (показывается при selecting + выбранных строках)\n * - `false` — панель не рендерится, разработчик управляет действиями самостоятельно\n * - `true` — панель показывается всегда, даже без активного selecting и выбранных строк\n */\n show?: boolean;\n /**\n * Размерная сетка панели внутри таблицы: `m`/`s` — обычный размер, `xs` — уменьшенный (кнопки `xxs`, «ещё» `xs`, счётчик Body XS).\n * Viewport-логика (1280) в таблице не используется.\n * @default 's'\n */\n size?: MassActionsSize;\n };\n};\n\n/** Пропсы кнопки редактирования. onClick исключён — используйте onSave/onCancel/onEnableEditing. */\nexport type EditingButtonProps = Omit<\n Partial<ControlBlockButtonProps>,\n | 'onClick'\n | 'size'\n | 'dropdown'\n | 'isTargetAction'\n | 'skipRightDivider'\n | 'tooltipText'\n>;\n\nexport type EditingConfig<\n RowType extends ObjectForExtending,\n RowIdType,\n SummaryRowType,\n> = {\n /**\n * Функция обработки изменений в редактируемой строке\n */\n onRowsChange: Maybe<\n (rows: RowType[], data: RowsChangeData<RowType, SummaryRowType>) => void\n >;\n /**\n * свойство, необходимое для корректного изменения дочерних строк.\n * Данное свойство обязательно, если ваши дочерние строки установлены не под ключом \"subRows\" внутри строки.\n *\n * Как дочерние строки можно указывать свойство, которые вложено в другое свойство.\n * В таком случае \".\" будет знаком для обозначения сл. уровня вложенности.\n *\n * @example \"child\" или \"uvh367.children\"\n */\n subRowsKey?: string;\n /**\n * Глубокое копирование строк перед применением правки в режиме редактирования.\n *\n * Включите, если строки, передаваемые в таблицу, иммутабельны/заморожены\n * (напр. стейт под управлением Redux Toolkit или Immer — они вызывают\n * Object.freeze в dev). При редактировании дочерней строки таблица записывает\n * изменение ВНУТРЬ объекта родителя; на замороженном объекте это падает с\n * `TypeError: Cannot assign to read only property`.\n *\n * Когда флаг включён, таблица сама делает structuredClone редактируемой строки\n * перед записью — ваш иммутабельный стейт не мутируется, и редактирование\n * дочерних строк работает без действий с вашей стороны.\n *\n * ⚠️ Данные строки должны быть сериализуемыми. Где доступен structuredClone —\n * Date/Map/Set и вложенные структуры копируются корректно; на старых средах\n * без structuredClone используется JSON-фоллбэк (теряет Date/Map/Set, undefined\n * и функции). Не включайте без необходимости — глубокое копирование добавляет\n * накладные расходы.\n *\n * @default false\n */\n deepCloneRows?: boolean;\n /**\n * Функция определения уникального id строки\n * @param row\n * @returns\n */\n rowKeyGetter: (row: RowType) => RowIdType;\n /**\n * Функция определения возможности редактирования строки\n * @param row\n * @returns\n */\n rowEditable?: (row: RowType) => boolean;\n /**\n * defaultEnabled - пропс, отвечающий за то, будет ли активен режим редактирования или нет. По умолчанию - не активно.\n * @default false\n */\n defaultEnabled?: boolean;\n /**\n * enabled - необходим для управления режимом редактирования снаружи компонента Таблицы.\n * По умолчанию, управление происходит в компоненте.\n * Приоритетнее, чем defaultEnabled.\n *\n * @type boolean - если НЕ нужно переключение в самой таблице\n * @type [boolean, React.Dispatch<React.SetStateAction<boolean>>] - если нужно переключение в самой таблице\n *\n */\n enabled?: boolean | [boolean, React.Dispatch<React.SetStateAction<boolean>>];\n /**\n * Cостояние скрытия/раскрытия кнопки включения/выключения фичи\n * @default true\n */\n showButtons?: boolean;\n /**\n * Функция, вызывающаяся при включении фичи.\n * @param enableEditorMode - функция включающая режим редактирования\n */\n onEnableEditing?: (enableEditorMode: () => void) => void;\n /**\n * Функция, вызывающаяся при сохранении отредактированного.\n * @param disableEditorMode - функция выключающая режим редактирования\n */\n onSave?: (disableEditorMode: () => void) => void;\n /**\n * Функция, вызывающаяся при отмене отредактированного.\n * @param disableEditorMode - функция выключающая режим редактирования\n */\n onCancel?: (disableEditorMode: () => void) => void;\n /** Пропсы кнопок в controlBlock. */\n buttons?: {\n save?: EditingButtonProps;\n cancel?: EditingButtonProps;\n edit?: EditingButtonProps;\n };\n /**\n * Кастомный слот, отображаемый левее кнопок «Отменить» / «Сохранить».\n * Виден только когда режим редактирования активен (editMode = true).\n * Зона ответственности разработчика — размерная сетка controlBlock не влияет на этот слот.\n */\n editModeLeftSlot?: React.ReactNode;\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: {\n enableButton?: DomMetadata;\n saveButton?: DomMetadata;\n cancelButton?: DomMetadata;\n };\n};\n\nexport type SummaryRowsConfig = {\n showDefault: boolean;\n showInControl: boolean;\n} & {\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: DomMetadata;\n};\n\n/**\n * Конфиг тултипа при hover по canvas-элементам.\n * Для активации фичи необходимо заполнить данный конфиг,\n * а также добавить нужные изменения в Canvas-элементах или в конфиге колонки.\n */\nexport type TableConfigTooltip = {\n /**\n * Включить/выключить колоночные и кастомные тултипы (cellTooltip, headerCellTooltip).\n * Внутренние тултипы (drag-иконка в шапке и другие по nodeId) работают всегда.\n * @default false\n */\n enabled?: boolean;\n /** Глобальная задержка перед показом тултипа (мс). Per-node переопределяет. @default 500 */\n mouseEnterDelay?: number;\n /** Глобальная задержка перед скрытием тултипа (мс). Per-node переопределяет. @default 0 */\n mouseLeaveDelay?: number;\n /**\n * Минимальная ширина тултипа. Число трактуется как px, строка с единицей\n * (например '20rem', '50%') отдаётся как есть. Действует на все canvas-тултипы,\n * включая авто-тултип Canvas.Text. Если ширина задана на самом тултипе\n * (per-node), приоритет у неё.\n */\n minWidth?: number | string;\n /**\n * Максимальная ширина тултипа. Число трактуется как px, строка с единицей\n * (например '20rem', '50%') отдаётся как есть. Действует на все canvas-тултипы,\n * включая авто-тултип Canvas.Text. Если ширина задана на самом тултипе\n * (per-node), приоритет у неё.\n */\n maxWidth?: number | string;\n};\n\nexport type InfinityScrollConfig<RowType extends ObjectForExtending> = {\n /** Триггер достижения скроллом зоны подгрузки данных. */\n onTrigger: (rows: RowType[]) => Promise<void> | void;\n /** Состояние загрузки (скелетоны) новых строк. */\n isLoading: boolean;\n /**\n * Флаг, когда все данные загружены — false.\n * @default true\n */\n hasMore?: boolean;\n /**\n * Для mode='region': за сколько строк до конца триггерить загрузку.\n * @default 5\n */\n rowThreshold?: number;\n};\n\nexport type { TableCanvasEmptyStateConfig, TableCanvasErrorStateConfig };\n\n/**\n * Настройка выделения ячеек/колонок/строк в TableCanvas — единый объект.\n * Это отдельная ось взаимодействия — не зависит от `highlightActiveType`.\n */\nexport type CellsSelectionConfig = {\n /**\n * Режим фактического выделения ячеек (нативный glide selection). По нему\n * работают copy/paste, рамка, fill-handle и затемнение шапки/нумерации.\n * @default \"range-cell\"\n */\n mode?: CellsSelectionMode;\n /**\n * Выделение колонок по клику на шапку. Ctrl/Cmd — добавить/убрать колонку,\n * Shift — диапазон колонок. Клик по иконкам сортировки/фильтрации в шапке\n * выделение НЕ вызывает. Поддерживает copy/paste по выделенным колонкам.\n * @default true\n */\n enableColumnSelection?: boolean;\n /**\n * Выделение строк по клику/драгу на колонке нумерации (`rowMarkers`).\n * Ctrl/Cmd — несмежный выбор отдельных строк, драг — смежный диапазон.\n * Поддерживает copy/paste по выделенным строкам. Требует включённой колонки\n * нумерации (`rowMarkers`). При `false` клик по нумерации ничего не выделяет.\n * @default true\n */\n enableRowSelection?: boolean;\n /**\n * Выделение всей таблицы кликом по «нулевой» ячейке — шапке колонки нумерации\n * (левый верхний угол). Выделяет все строки данных по всем колонкам одним\n * диапазоном; поддерживает copy/paste. Требует включённой колонки нумерации\n * (`rowMarkers`) и активного `mode` (≠ `disabled`).\n * @default true\n */\n enableSelectAll?: boolean;\n /**\n * Внешний (controlled) контроль НАТИВНОГО выделения (ячейки/диапазон/смежные\n * строки и колонки). `state` — кортеж `[value, setter]` как у `selecting.state`.\n * Сброс: `setter({ current: undefined, rows: empty, columns: empty })`.\n * Несмежный Ctrl-выбор колонок/строк (own-state) сюда не входит — он внутренний.\n */\n state?: [GridSelection, React.Dispatch<React.SetStateAction<GridSelection>>];\n};\n\n/** Один объединённый блок: какие строки и колонки слить. */\nexport type MergedCellsRegion = {\n rowKeys: Array<string | number>;\n colKeys: string[];\n /** Выравнивание контента этого блока. Важнее колоночного и общего. */\n mergedCellsAlign?: MergedCellsAlign;\n};\n\n/**\n * Видимость сторон рамки ячейки: true рисовать, false не рисовать, не задано -\n * работает уровень ниже (настройка колонки, строки или общая).\n */\nexport type CellBorderVisibility = {\n top?: boolean;\n right?: boolean;\n bottom?: boolean;\n left?: boolean;\n};\n\n/**\n * Управление рамками (линиями) таблицы: включение и выключение. Уровни, от\n * слабого к сильному: общие настройки (vertical, horizontal), затем колонка\n * (getVerticalBorder) и строка (getHorizontalBorder), затем ячейка\n * (getCellBorder).\n */\nexport type BordersConfig<RowType = ObjectForExtending> = {\n /** Рисовать ли вертикальные линии между колонками. @default true */\n vertical?: boolean;\n /** Рисовать ли горизонтальные линии между строками тела. @default true */\n horizontal?: boolean;\n /**\n * Точечное управление вертикальной линией справа от колонки (разделитель\n * после неё). Вернуть true или false, чтобы переопределить общую настройку\n * vertical, или undefined, чтобы оставить её. Зовётся на каждую видимую\n * колонку при перерисовке, поэтому функция должна быть быстрой.\n */\n getVerticalBorder?: (params: {\n /** Ключ колонки, справа от которой рисуется линия. */\n columnKey: string;\n /** Индекс колонки в порядке отрисовки (закреплённые в начале). */\n columnIndex: number;\n }) => boolean | undefined;\n /**\n * Точечное управление горизонтальной линией сверху строки. Вернуть true или\n * false, чтобы переопределить общую настройку horizontal, или undefined,\n * чтобы оставить её. Для summary-строк не вызывается. Зовётся на каждую\n * видимую строку при перерисовке, поэтому функция должна быть быстрой.\n */\n getHorizontalBorder?: (params: {\n /** Строка под линией (линия рисуется сверху этой строки). */\n row: RowType;\n /** Индекс строки среди отображаемых. При раскрытии subRows индексы сдвигаются. */\n rowIndex: number;\n /** Уровень вложенности subRows: 0 корень, 1 и больше дочерние. */\n treeLvl: number;\n }) => boolean | undefined;\n /**\n * Стороны рамки конкретной ячейки, вкл и выкл. Для ячеек без переопределений\n * возвращать undefined. Включает отрисовку линий с разбивкой по ячейкам,\n * поэтому функция должна быть быстрой: без тяжёлых вычислений и с готовыми\n * объектами-константами вместо новых на каждый вызов. Для summary-строк не\n * вызывается.\n */\n getCellBorder?: (params: {\n /** Индекс колонки среди отображаемых (без служебных). */\n col: number;\n /** Ключ колонки. */\n columnKey: string | undefined;\n /** Строка ячейки. */\n row: RowType;\n /** Индекс строки среди отображаемых. */\n rowIndex: number;\n /** Уровень вложенности subRows: 0 корень, 1 и больше дочерние. */\n treeLvl: number;\n }) => CellBorderVisibility | undefined;\n};\n\nexport type TableConfig<\n RowType extends ObjectForExtending,\n SummaryRowType,\n RowIdType extends string | number,\n FilterStateType extends ObjectForExtending,\n // SubRowType\n> = {\n /**\n * Группировка колонок (многоуровневая шапка через `columnConfig.children`):\n * объединение пустых ячеек шапки (`squashEmptyCells`, по умолчанию включено) и\n * дефолт выравнивания в объединённых ячейках (`squashedHeaderAlign`).\n */\n columnsGrouping?: ColumnsGroupingConfig;\n /**\n * Подсветка активной сущности в canvas-таблице.\n * @deprecated Значения `'cell'`/`'range-cell'` устарели — используйте\n * `cellsSelection.mode`. Актуальны `'row'` (подсветка строки) и `'disabled'`.\n */\n highlightActiveType?: HighlightActiveType;\n /**\n * Единый конфиг выделения ячеек: режим (`mode`), оси\n * (`enableColumnSelection`/`enableRowSelection`/`enableSelectAll`) и controlled\n * (`state`). См. {@link CellsSelectionConfig}.\n */\n cellsSelection?: CellsSelectionConfig;\n /**\n * Подсвеченная строка (`highlightActiveType='row'`).\n * `state` (опционально) — controlled-кортеж `[value, setter]`: задан — значением\n * владеешь снаружи (сброс `setter(undefined)`); не задан — таблица крутит\n * подсветку внутренним стейтом, а `onChange` всё равно срабатывает (подписка\n * без владения значением).\n */\n highlightActiveRow?: {\n state?: [\n number | undefined,\n React.Dispatch<React.SetStateAction<number | undefined>>,\n ];\n /**\n * Колбэк смены подсвеченной строки: отдаёт её флэт-индекс и сам объект\n * строки (`rows[index]`). Позволяет открывать данные подсвеченной строки\n * (например, в SplitView) без `onCellClicked`.\n */\n onChange?: (params: {\n index: number | undefined;\n row: RowType | undefined;\n }) => void;\n };\n /**\n * Эффекты при наведении (hover)\n * `row` — подсветка строки под курсором.\n * Независимая визуальная ось: селектинг (`cellsSelection`) и `highlightActiveType='row'`\n * рисуются ПОВЕРХ hover-подсветки и визуально перекрывают её (hover\n * «остаётся под ними» и снова виден после сброса выделения).\n *\n * `{ row: true }` — включить с цветами из темы;\n * `{ row: { color: '#F7F9FB' } }` — переопределить цвет data-ячеек.\n * @default undefined (выключено)\n */\n hoverEffects?: HoverEffectsConfig;\n /**\n * Включает компенсацию тонких canvas-линий при browser zoom ниже 100%, когда devicePixelRatio меньше 1.\n * Влияет только на grid/header/sticky hairline borders.\n * @default false\n */\n enableLowDprHairline?: boolean;\n /**\n * Управление рамками (линиями) таблицы: включение и выключение.\n *\n * Уровни, от слабого к сильному: общие настройки (vertical, horizontal),\n * затем колонка (getVerticalBorder) и строка (getHorizontalBorder), затем\n * ячейка (getCellBorder).\n *\n * `vertical: false` и `horizontal: false` убирают все вертикальные или\n * горизонтальные линии тела. `getCellBorder` включает и выключает стороны\n * рамки конкретной ячейки; при его использовании линии рисуются с разбивкой\n * по ячейкам.\n */\n borders?: BordersConfig<RowType>;\n /**\n * rowSize - размеры строк таблицы\n */\n rowSize?: Prettify<RowSize>;\n /**\n * rowHeight - размер высоты строк таблицы\n */\n rowHeight?: Maybe<number | RowHeightFunc<RowType>>;\n /**\n * sorting - активация сортировки. Условие активации - это наличие данного свойства. Нужно также сконфигурировать колонки.\n *\n * Пример:\n *\n * tableConfig={sorting: {sortingState}}\n *\n * columnConfig=[{sortingType: 'numberSort'}]\n */\n sorting?: {\n state: [\n readonly SortColumn[],\n React.Dispatch<React.SetStateAction<readonly SortColumn[]>>,\n ];\n /**\n * manualSorting - пропс, активирующий ручную-кастомную (или на стороне бэкенда) сортировку\n */\n manualSorting?: boolean;\n };\n /** @deprecated Свойство view не используется и будет удалено в следующей мажорной версии. */\n view?: View;\n /**\n * filtering - активация фильтрации. Условие активации - это наличие данного свойства. Нужно также сконфигурировать колонки.\n *\n * Пример:\n *\n * tableConfig={filtering: {stateAndSetter, ...}}\n *\n * columnConfig=[{filtering: {...}}]\n */\n filtering?: FilteringConfig<FilterStateType>;\n /**\n * Сворачивание / разворачивание таблицы\n */\n collapsing?: TableCollapseConfig;\n /**\n * selecting - активация выбора строк. Условие активации - это наличие данного свойства.\n * Есть поддержка выбора строк с многоуровневой вложенностью.\n *\n * Пример:\n *\n *"
|
|
53890
|
+
"source": "type FilteringConfig<T> = {\n state: [T, React.Dispatch<React.SetStateAction<T>>];\n /**\n * @deprecated Использовать filtersInfo\n *\n * clearedValue - состояние фильтров после очистки. Используется для сравнения:\n * Например, был ли фильтр конкретной колонки изменен рассчитывается посредством сравнения текущего значения фильтра и значения фильтра в clearedValue.\n * Если они равны, то фильтр считается не измененным.\n */\n clearedValue?: T;\n /**\n * Информация о фильтрах для каждой колонки.\n * Используется для:\n * 1. Хранения меток (label) фильтров для отображения в UI\n * 2. Хранения значений по умолчанию (clearedValue) для каждого фильтра\n * 3. Определения, был ли фильтр изменен (сравнение текущего значения с clearedValue)\n */\n filtersInfo?: Record<\n keyof T,\n {\n label: string;\n clearedValue: T[keyof T];\n }\n >;\n /**\n * manualFiltering - пропс, активирующий ручную-кастомную (или на стороне бэка) фильтрацию.\n * @remarks\n * Для автоматической фильтрации (когда не используется manualFiltering в tableConfig):\n * - Для всех типов фильтров обязательно должен быть указан `valueInRow`\n * - Для component: 'select' дополнительно должен быть указан `filteringType`\n * - Для component: 'input' с кастомным фильтром (когда filter - функция)\n * функция фильтрации должна быть передана явно\n *\n * Если используется manualFiltering, эти параметры не обязательны,\n * так как вся логика фильтрации реализуется извне.\n */\n manualFiltering?: boolean;\n /**\n * Конфигурация для отображения фильтров в правом сайдбаре.\n *\n * Позволяет:\n * 1. Добавлять глобальные фильтры (не привязанные к конкретной колонке)\n * 2. Управлять порядком отображения фильтров\n * 3. Переопределять рендер и заголовки колоночных фильтров\n *\n * Логика работы:\n * - По умолчанию в сайдбаре отображаются все колоночные фильтры (из columnConfig)\n * - Ключом фильтра считается `key` колонки, если его нет, то пытаемся взять `keyInFilterState` (если указан), иначе это не будет работать\n * - Заголовком фильтра по умолчанию является `name` колонки или ключ фильтра (name || key)\n * - Глобальные фильтры добавляются через `items` с уникальными ключами\n *\n * Особенности:\n * 1. Порядок отображения:\n * - Сначала фильтры из `order` (в указанной последовательности)\n * - Затем остальные колоночные фильтры (в порядке columnConfig)\n * - В конце - глобальные фильтры (в алфавитном порядке ключей)\n *\n * 2. Переопределение колоночных фильтров:\n * - Чтобы изменить заголовок: укажите ключ колонки в `items` с новым `label`\n * - Чтобы заменить рендер: укажите ключ колонки с `customRenderFn`\n * - Оригинальный фильтр из колонки будет проигнорирован\n *\n * 3. Глобальные фильтры:\n * - Ключ не должен совпадать с ключами колонок\n * - Обязательно указать `label` и `customRenderFn`\n * - Отображаются после всех колоночных фильтров, если не переопределены в order\n *\n * @example\n * // Добавление глобального фильтра и изменение порядка\n * sidebarConfig: {\n * order: ['status', 'tasks', 'type'], // Сначала статус, затем глобальный поиск\n * items: {\n * tasks: { // Уникальный ключ\n * label: 'Поиск по всем полям',\n * customRenderFn: () => <TaskComponent />\n * },\n * status: { // Переопределение колоночного фильтра\n * label: 'Статус заявки', // Новый заголовок\n * customRenderFn: () => <CustomStatusFilter /> // Кастомный рендер\n * }\n * type: { // Переопределение только Label колоночного фильтра\n * label: 'Тип', // Новый заголовок\n * }\n * }\n * }\n */\n sidebarConfig?: {\n /**\n * Определяет порядок отображения фильтров.\n * - Указываются ключи фильтров (колоночных или глобальных)\n * - Не указанные в order фильтры отображаются после\n * - Если order пуст, сохраняется порядок: глобальные фильтры + columnConfig фильтры в конце\n */\n order?: string[];\n /**\n * Конфигурация фильтров для сайдбара.\n * Ключом может быть:\n * - Ключ колонки (для переопределения колоночного фильтра)\n * - Уникальный ключ (для добавления глобального фильтра)\n */\n items: Partial<\n Record<\n keyof T,\n {\n /** Заголовок фильтра (обязателен для глобальных фильтров), можно использовать для переопределения для локальных фильтров */\n label: string;\n /**\n * Функция рендера компонента фильтра.\n * Для колоночных фильтров переопределяет оригинальный рендер.\n * Для глобальных фильтров обязательна.\n */\n customRenderFn?: (\n filters: T,\n setFilters: React.Dispatch<React.SetStateAction<T>>,\n ) => React.ReactNode;\n }\n >\n >;\n };\n /**\n * Callback для кастомизации стилей чипсов (фильтров) в списке\n *\n * @param {ItemOrGroup} itemOrGroup - Текущий элемент или группа фильтров\n * @param {Item | undefined} item - Конкретный элемент фильтра (если есть)\n * @returns {CSSObject} Объект стилей, который будет применен к чипсу\n *\n * @description\n * Позволяет динамически задавать стили для каждого чипса в зависимости от его типа и содержимого.\n * Вызывается для каждого отображаемого чипса (как для отдельных элементов, так и для элементов внутри групп).\n *\n * @example\n * // Пример 1: Стилизация чипсов по типу\n * chipStyle: (itemOrGroup, item) => {\n * if (isGroup(itemOrGroup)) {\n * return { backgroundColor: '#f0f0f0' };\n * }\n * return { backgroundColor: '#e0e0e0' };\n * }\n *\n * @example\n * // Пример 2: Стилизация по значению фильтра\n * chipStyle: (itemOrGroup, item) => {\n * if (item?.label === 'Высокий приоритет') {\n * return {\n * backgroundColor: '#ffebee',\n * color: '#d32f2f'\n * };\n * }\n * return {};\n * }\n *\n * @example\n * // Пример 3: Разные стили для элементов в группе и одиночных\n * chipStyle: (itemOrGroup, item) => {\n * if (item) {\n * // Стиль для элемента внутри группы\n * return { maxWidth: 180 };\n * }\n * // Стиль для одиночного чипа\n * return { maxWidth: 150 };\n * }\n */\n chipStyle?: (itemOrGroup: ItemOrGroup, item: Item | undefined) => CSSObject;\n /**\n * Пользовательский форматтер заголовка группы чипсов.\n *\n * Используется в блоке активных фильтров для подмены текста заголовка\n * группы (например, “Статус”, “Тип”, “Автор”). Полезно, когда нужно\n * динамически менять подпись (добавить счётчик, i18n и т.п.).\n *\n * @param {ItemOrGroup} itemOrGroup Объект группы (тип Group). Вызов происходит только для групп,\n * поэтому безопасно кастовать к Group.\n * @returns {string} Текст заголовка группы чипсов.\n *\n * @default Возвращается `group.groupLabel`.\n *\n * @remarks\n * - Функция должна быть чистой и быстрой (без сетевых запросов и побочных эффектов).\n * - Возвращайте ТОЛЬКО строку — чипы отображают текстовое значение.\n * - Для длинных строк применяется усечение (overflow с многоточием) на уровне компонента.\n *\n * @example\n * // Добавить двоеточие и количество выбранных элементов\n * renderGroupLabel: (group) => `${group.groupLabel}: ${group.items.length}`\n *\n * @example\n * // Локализация заголовка группы\n * const i18n = { status: 'Статус', type: 'Тип' };\n * renderGroupLabel: (group) => i18n[group.groupId] ?? group.groupLabel\n */\n renderGroupLabel?: (group: Group) => string;\n\n /**\n * Пользовательский форматтер текста чипса (элемента внутри группы или одиночного фильтра).\n *\n * Позволяет управлять тем, что именно отображается внутри каждого чипса. Особенно полезен\n * при серверной пагинации/ленивой загрузке, когда в состоянии фильтра хранится только value,\n * а label необходимо подставить из локального кэша.\n *\n * @param {Group | null } group Группа, внутри которой рендерится чип (или null).\n * @param {Item} item Сам элемент чипса. В группах передаётся конкретный `Item`,\n * для одиночного чипа может быть `undefined`.\n * @returns {string} Текст, который будет показан в чипсе.\n *\n * @default Используется `item?.label.toString()` (или строковое представление value).\n *\n * @remarks\n * - Функция должна быть чистой и быстрой;\n * - Возвращайте ТОЛЬКО строку.\n *\n * @example\n * // 1) Отображение label из кэша при серверной пагинации\n * const labelsCacheRef = useRef(new Map<string, string>());\n * renderChipLabel: (group, item) => {\n * if (item?.id != null) {\n * const key = String(item.id);\n * const fromCache = labelsCacheRef.current.get(key);\n * if (fromCache) return fromCache; // красивый label, если уже загрузили\n * return String(item.label ?? key); // фоллбэк: временно показываем value/label из item\n * }\n * return ''; // безопасный фоллбэк для одиночных случаев\n * }\n *\n * @example\n * // 2) Нормализация отображения числовых значений\n * renderChipLabel: (_group, item) => {\n * const v = Number(item?.label);\n * return Number.isFinite(v) ? v.toLocaleString('ru-RU') : String(item?.label ?? '');\n * }\n *\n * @example\n * // 3) Префикс по типу группы\n * renderChipLabel: (group, item) => {\n * const prefix = group.groupId === 'status' ? '' : '#';\n * return `${prefix}${item?.label ?? item?.id ?? ''}`;\n * }\n */\n renderChipLabel?: (group: Group | null, item: Item) => string;\n};\n\nexport type DefaultSidebarTabIds = 'columns' | 'tableSettings' | 'filtering';\n\n/**\n * Конфигурация sidebar\n */\nexport type SidebarConfig = {\n /**\n * Включен ли sidebar. Отвечает только за UI. Не влияет на перерасчёт фичей.\n * @default true\n */\n enabled?: boolean;\n /**\n * Открыт ли sidebar при первом рендере (uncontrolled-режим).\n * Игнорируется, если передан openState.\n * @default false\n */\n defaultOpen?: boolean;\n /**\n * Внешний контроль открытия/закрытия sidebar.\n * Если передан — источник истины, defaultOpen игнорируется.\n */\n openState?: [boolean, React.Dispatch<React.SetStateAction<boolean>>];\n /**\n * id вкладки, выбранной по умолчанию (актуально при открытом сайдбаре).\n * Если id не найден или у вкладки showInSidebar=false — используется первая доступная.\n */\n defaultActiveTabId?: string;\n /**\n * Внешний контроль активной вкладки (controlled-режим).\n * Если передан — источник истины, defaultActiveTabId игнорируется.\n */\n activeTabState?: [\n string | null,\n React.Dispatch<React.SetStateAction<string | null>>,\n ];\n /**\n * Колбэк смены активной вкладки. Вызывается и в uncontrolled-режиме.\n * При закрытии сайдбара приходит null.\n */\n onActiveTabChange?: (tabId: string | null, tab?: SidebarTab) => void;\n /**\n * Кастомные табы\n */\n customTabs?: Array<\n Omit<SidebarTab, 'id'> & {\n id: Exclude<string, DefaultSidebarTabIds>;\n }\n >;\n /**\n * Порядок отображения кастомных вкладок\n */\n customTabsOrder?: Array<Exclude<string, DefaultSidebarTabIds>>;\n defaultTabs?: Array<\n | {\n id: 'filtering' | 'columns';\n /** название таба в рамках горизонтального табов внутри таба настройки */\n label?: string;\n /** название таба в рамках вертикальных табов сайдбара (если данный таб окажется единственным табом в настройках) */\n title?: string;\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: DomMetadata;\n /**\n * Кастомный элемент справа от title в шапке сайдбара\n */\n titleRightSlot?: React.ReactNode;\n /** @default true */\n showInSidebar?: boolean;\n /** тултип иконки шестеренки (для табов с id = filtering и columns - недоступен. Настраивается через таб с id='tableSettings') */\n iconTooltipText?: undefined;\n }\n | {\n id: 'tableSettings';\n /** название таба в рамках горизонтального табов внутри таба настройки */\n label?: string;\n /** название таба в рамках вертикальных табов сайдбара */\n title?: string;\n\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: DomMetadata;\n /**\n * Кастомный слот для вкладки tableSettings (рендерится после общих настроек)\n * Только дл id: 'tableSettings'\n */\n customGeneralSettingsSlot?: React.ReactNode;\n /**\n * Кастомный элемент справа от title в шапке сайдбара\n */\n titleRightSlot?: React.ReactNode;\n /** @default true */\n showInSidebar?: boolean;\n /** тултип иконки шестеренки @default 'Настройки' */\n iconTooltipText?: string;\n }\n >;\n};\n\nexport function activeViewIs<T extends 'cards' | 'rows'>(\n checkType: T,\n viewState: 'cards' | 'rows',\n view: View,\n): view is ViewMods[T] {\n return checkType === viewState;\n}\n\n/** Размер controlBlock: 'm' и 's' — одинаковые стили, 'xs' — уменьшенный */\nexport type ControlBlockSize = 'm' | 's' | 'xs';\n\nexport type ControlBlockConfig = {\n /**\n * show - наличие controlBlock-а\n * @default true\n */\n show?: boolean;\n /**\n * Размер controlBlock и его элементов (кнопки, иконки, поиск, отступы).\n * 'm' и 's' — стандартные стили, 'xs' — компактный режим.\n * Не влияет на customFeatures и кастомные слоты — они контролируются разработчиком.\n * @default 'm'\n */\n size?: ControlBlockSize;\n /**\n * @deprecated Используйте кастомные кнопки через rightSideInner или customFeatures.\n * leftSideInner - пропс для добавления кнопок в левую часть контролблока.\n * Продолжает работать для обратной совместимости.\n */\n leftSideInner?: ControlBlockButtonProps[];\n /**\n * rightSideInner - пропс для добавления кнопок в правую часть контролблока\n */\n rightSideInner?: ControlBlockButtonProps[];\n /**\n * customFeatures - пропс для добавления кастомных фичей (кнопки-иконки)\n */\n customFeatures?: FeatureItem[];\n /**\n * pinningMenu - нативная фича закрепления столбцов (SplitIconButton с\n * дропдауном) в правой зоне иконок. Появляется, когда активировано\n * закрепление колонок (columnsControl.pinning). Продукт может донастроить\n * и дополнить пункты меню (см. PinningMenuConfig).\n */\n pinningMenu?: PinningMenuConfig;\n /**\n * Пропсы для компонента dropdown в котором будут скрыты левые фичи при адаптивной компрессии\n */\n leftSideDropdownProps?: TableDropdownConfigProps;\n /**\n * Пропсы для компонента dropdown в котором будут скрыты правые фичи при адаптивной компрессии\n */\n rightSideDropdownProps?: TableDropdownConfigProps;\n /**\n * Активна ли фича компрессии (сжатие ToolsMenu при адаптиве)\n * @default true\n */\n enableAdaptiveCompress?: boolean;\n /**\n * Панель массовых действий\n */\n massActionPanel?: {\n /**\n * Кнопки панели. Размеры кнопок/дропдаунов панель подбирает сама (по `size` панели и компактности) —\n * передавать `size` кнопкам не нужно. Если `size` на кнопке всё же задан — он используется как есть.\n */\n buttons: MassActionButtonProps[];\n /**\n * Пропсы для Dropdown, в который сжались кнопки\n */\n collapsedDropdownProps?: TableDropdownConfigProps;\n /**\n * Отступ панели снизу от контейнера (px)\n * @default 24\n */\n bottom?: number;\n /**\n * Управление отображением панели массовых действий.\n * - `undefined` (по умолчанию) — стандартное поведение (показывается при selecting + выбранных строках)\n * - `false` — панель не рендерится, разработчик управляет действиями самостоятельно\n * - `true` — панель показывается всегда, даже без активного selecting и выбранных строк\n */\n show?: boolean;\n /**\n * Размерная сетка панели внутри таблицы: `m`/`s` — обычный размер, `xs` — уменьшенный (кнопки `xxs`, «ещё» `xs`, счётчик Body XS).\n * Viewport-логика (1280) в таблице не используется.\n * @default 's'\n */\n size?: MassActionsSize;\n };\n};\n\n/** Пропсы кнопки редактирования. onClick исключён — используйте onSave/onCancel/onEnableEditing. */\nexport type EditingButtonProps = Omit<\n Partial<ControlBlockButtonProps>,\n | 'onClick'\n | 'size'\n | 'dropdown'\n | 'isTargetAction'\n | 'skipRightDivider'\n | 'tooltipText'\n>;\n\nexport type EditingConfig<\n RowType extends ObjectForExtending,\n RowIdType,\n SummaryRowType,\n> = {\n /**\n * Функция обработки изменений в редактируемой строке\n */\n onRowsChange: Maybe<\n (rows: RowType[], data: RowsChangeData<RowType, SummaryRowType>) => void\n >;\n /**\n * свойство, необходимое для корректного изменения дочерних строк.\n * Данное свойство обязательно, если ваши дочерние строки установлены не под ключом \"subRows\" внутри строки.\n *\n * Как дочерние строки можно указывать свойство, которые вложено в другое свойство.\n * В таком случае \".\" будет знаком для обозначения сл. уровня вложенности.\n *\n * @example \"child\" или \"uvh367.children\"\n */\n subRowsKey?: string;\n /**\n * Глубокое копирование строк перед применением правки в режиме редактирования.\n *\n * Включите, если строки, передаваемые в таблицу, иммутабельны/заморожены\n * (напр. стейт под управлением Redux Toolkit или Immer — они вызывают\n * Object.freeze в dev). При редактировании дочерней строки таблица записывает\n * изменение ВНУТРЬ объекта родителя; на замороженном объекте это падает с\n * `TypeError: Cannot assign to read only property`.\n *\n * Когда флаг включён, таблица сама делает structuredClone редактируемой строки\n * перед записью — ваш иммутабельный стейт не мутируется, и редактирование\n * дочерних строк работает без действий с вашей стороны.\n *\n * ⚠️ Данные строки должны быть сериализуемыми. Где доступен structuredClone —\n * Date/Map/Set и вложенные структуры копируются корректно; на старых средах\n * без structuredClone используется JSON-фоллбэк (теряет Date/Map/Set, undefined\n * и функции). Не включайте без необходимости — глубокое копирование добавляет\n * накладные расходы.\n *\n * @default false\n */\n deepCloneRows?: boolean;\n /**\n * Функция определения уникального id строки\n * @param row\n * @returns\n */\n rowKeyGetter: (row: RowType) => RowIdType;\n /**\n * Функция определения возможности редактирования строки\n * @param row\n * @returns\n */\n rowEditable?: (row: RowType) => boolean;\n /**\n * defaultEnabled - пропс, отвечающий за то, будет ли активен режим редактирования или нет. По умолчанию - не активно.\n * @default false\n */\n defaultEnabled?: boolean;\n /**\n * enabled - необходим для управления режимом редактирования снаружи компонента Таблицы.\n * По умолчанию, управление происходит в компоненте.\n * Приоритетнее, чем defaultEnabled.\n *\n * @type boolean - если НЕ нужно переключение в самой таблице\n * @type [boolean, React.Dispatch<React.SetStateAction<boolean>>] - если нужно переключение в самой таблице\n *\n */\n enabled?: boolean | [boolean, React.Dispatch<React.SetStateAction<boolean>>];\n /**\n * Cостояние скрытия/раскрытия кнопки включения/выключения фичи\n * @default true\n */\n showButtons?: boolean;\n /**\n * Функция, вызывающаяся при включении фичи.\n * @param enableEditorMode - функция включающая режим редактирования\n */\n onEnableEditing?: (enableEditorMode: () => void) => void;\n /**\n * Функция, вызывающаяся при сохранении отредактированного.\n * @param disableEditorMode - функция выключающая режим редактирования\n */\n onSave?: (disableEditorMode: () => void) => void;\n /**\n * Функция, вызывающаяся при отмене отредактированного.\n * @param disableEditorMode - функция выключающая режим редактирования\n */\n onCancel?: (disableEditorMode: () => void) => void;\n /** Пропсы кнопок в controlBlock. */\n buttons?: {\n save?: EditingButtonProps;\n cancel?: EditingButtonProps;\n edit?: EditingButtonProps;\n };\n /**\n * Кастомный слот, отображаемый левее кнопок «Отменить» / «Сохранить».\n * Виден только когда режим редактирования активен (editMode = true).\n * Зона ответственности разработчика — размерная сетка controlBlock не влияет на этот слот.\n */\n editModeLeftSlot?: React.ReactNode;\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: {\n enableButton?: DomMetadata;\n saveButton?: DomMetadata;\n cancelButton?: DomMetadata;\n };\n};\n\nexport type SummaryRowsConfig = {\n showDefault: boolean;\n showInControl: boolean;\n /**\n * callback при переключении тогла «Итоговые строки» в настройках таблицы.\n * Вызывается только по действию пользователя (не при монтировании),\n * поэтому подходит для сохранения выбора, например, в localStorage.\n * Сохранённое значение передавайте обратно в `showDefault`.\n */\n onChange?: (checked: boolean) => void;\n} & {\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: DomMetadata;\n};\n\n/**\n * Конфиг тултипа при hover по canvas-элементам.\n * Для активации фичи необходимо заполнить данный конфиг,\n * а также добавить нужные изменения в Canvas-элементах или в конфиге колонки.\n */\nexport type TableConfigTooltip = {\n /**\n * Включить/выключить колоночные и кастомные тултипы (cellTooltip, headerCellTooltip).\n * Внутренние тултипы (drag-иконка в шапке и другие по nodeId) работают всегда.\n * @default false\n */\n enabled?: boolean;\n /** Глобальная задержка перед показом тултипа (мс). Per-node переопределяет. @default 500 */\n mouseEnterDelay?: number;\n /** Глобальная задержка перед скрытием тултипа (мс). Per-node переопределяет. @default 0 */\n mouseLeaveDelay?: number;\n /**\n * Минимальная ширина тултипа. Число трактуется как px, строка с единицей\n * (например '20rem', '50%') отдаётся как есть. Действует на все canvas-тултипы,\n * включая авто-тултип Canvas.Text. Если ширина задана на самом тултипе\n * (per-node), приоритет у неё.\n */\n minWidth?: number | string;\n /**\n * Максимальная ширина тултипа. Число трактуется как px, строка с единицей\n * (например '20rem', '50%') отдаётся как есть. Действует на все canvas-тултипы,\n * включая авто-тултип Canvas.Text. Если ширина задана на самом тултипе\n * (per-node), приоритет у неё.\n */\n maxWidth?: number | string;\n};\n\nexport type InfinityScrollConfig<RowType extends ObjectForExtending> = {\n /** Триггер достижения скроллом зоны подгрузки данных. */\n onTrigger: (rows: RowType[]) => Promise<void> | void;\n /** Состояние загрузки (скелетоны) новых строк. */\n isLoading: boolean;\n /**\n * Флаг, когда все данные загружены — false.\n * @default true\n */\n hasMore?: boolean;\n /**\n * Для mode='region': за сколько строк до конца триггерить загрузку.\n * @default 5\n */\n rowThreshold?: number;\n};\n\nexport type { TableCanvasEmptyStateConfig, TableCanvasErrorStateConfig };\n\n/**\n * Настройка выделения ячеек/колонок/строк в TableCanvas — единый объект.\n * Это отдельная ось взаимодействия — не зависит от `highlightActiveType`.\n */\nexport type CellsSelectionConfig = {\n /**\n * Режим фактического выделения ячеек (нативный glide selection). По нему\n * работают copy/paste, рамка, fill-handle и затемнение шапки/нумерации.\n * @default \"range-cell\"\n */\n mode?: CellsSelectionMode;\n /**\n * Выделение колонок по клику на шапку. Ctrl/Cmd — добавить/убрать колонку,\n * Shift — диапазон колонок. Клик по иконкам сортировки/фильтрации в шапке\n * выделение НЕ вызывает. Поддерживает copy/paste по выделенным колонкам.\n * @default true\n */\n enableColumnSelection?: boolean;\n /**\n * Выделение строк по клику/драгу на колонке нумерации (`rowMarkers`).\n * Ctrl/Cmd — несмежный выбор отдельных строк, драг — смежный диапазон.\n * Поддерживает copy/paste по выделенным строкам. Требует включённой колонки\n * нумерации (`rowMarkers`). При `false` клик по нумерации ничего не выделяет.\n * @default true\n */\n enableRowSelection?: boolean;\n /**\n * Выделение всей таблицы кликом по «нулевой» ячейке — шапке колонки нумерации\n * (левый верхний угол). Выделяет все строки данных по всем колонкам одним\n * диапазоном; поддерживает copy/paste. Требует включённой колонки нумерации\n * (`rowMarkers`) и активного `mode` (≠ `disabled`).\n * @default true\n */\n enableSelectAll?: boolean;\n /**\n * Внешний (controlled) контроль НАТИВНОГО выделения (ячейки/диапазон/смежные\n * строки и колонки). `state` — кортеж `[value, setter]` как у `selecting.state`.\n * Сброс: `setter({ current: undefined, rows: empty, columns: empty })`.\n * Несмежный Ctrl-выбор колонок/строк (own-state) сюда не входит — он внутренний.\n */\n state?: [GridSelection, React.Dispatch<React.SetStateAction<GridSelection>>];\n};\n\n/** Один объединённый блок: какие строки и колонки слить. */\nexport type MergedCellsRegion = {\n rowKeys: Array<string | number>;\n colKeys: string[];\n /** Выравнивание контента этого блока. Важнее колоночного и общего. */\n mergedCellsAlign?: MergedCellsAlign;\n};\n\n/**\n * Видимость сторон рамки ячейки: true рисовать, false не рисовать, не задано -\n * работает уровень ниже (настройка колонки, строки или общая).\n */\nexport type CellBorderVisibility = {\n top?: boolean;\n right?: boolean;\n bottom?: boolean;\n left?: boolean;\n};\n\n/**\n * Управление рамками (линиями) таблицы: включение и выключение. Уровни, от\n * слабого к сильному: общие настройки (vertical, horizontal), затем колонка\n * (getVerticalBorder) и строка (getHorizontalBorder), затем ячейка\n * (getCellBorder).\n */\nexport type BordersConfig<RowType = ObjectForExtending> = {\n /** Рисовать ли вертикальные линии между колонками. @default true */\n vertical?: boolean;\n /** Рисовать ли горизонтальные линии между строками тела. @default true */\n horizontal?: boolean;\n /**\n * Точечное управление вертикальной линией справа от колонки (разделитель\n * после неё). Вернуть true или false, чтобы переопределить общую настройку\n * vertical, или undefined, чтобы оставить её. Зовётся на каждую видимую\n * колонку при перерисовке, поэтому функция должна быть быстрой.\n */\n getVerticalBorder?: (params: {\n /** Ключ колонки, справа от которой рисуется линия. */\n columnKey: string;\n /** Индекс колонки в порядке отрисовки (закреплённые в начале). */\n columnIndex: number;\n }) => boolean | undefined;\n /**\n * Точечное управление горизонтальной линией сверху строки. Вернуть true или\n * false, чтобы переопределить общую настройку horizontal, или undefined,\n * чтобы оставить её. Для summary-строк не вызывается. Зовётся на каждую\n * видимую строку при перерисовке, поэтому функция должна быть быстрой.\n */\n getHorizontalBorder?: (params: {\n /** Строка под линией (линия рисуется сверху этой строки). */\n row: RowType;\n /** Индекс строки среди отображаемых. При раскрытии subRows индексы сдвигаются. */\n rowIndex: number;\n /** Уровень вложенности subRows: 0 корень, 1 и больше дочерние. */\n treeLvl: number;\n }) => boolean | undefined;\n /**\n * Стороны рамки конкретной ячейки, вкл и выкл. Для ячеек без переопределений\n * возвращать undefined. Включает отрисовку линий с разбивкой по ячейкам,\n * поэтому функция должна быть быстрой: без тяжёлых вычислений и с готовыми\n * объектами-константами вместо новых на каждый вызов. Для summary-строк не\n * вызывается.\n */\n getCellBorder?: (params: {\n /** Индекс колонки среди отображаемых (без служебных). */\n col: number;\n /** Ключ колонки. */\n columnKey: string | undefined;\n /** Строка ячейки. */\n row: RowType;\n /** Индекс строки среди отображаемых. */\n rowIndex: number;\n /** Уровень вложенности subRows: 0 корень, 1 и больше дочерние. */\n treeLvl: number;\n }) => CellBorderVisibility | undefined;\n};\n\nexport type TableConfig<\n RowType extends ObjectForExtending,\n SummaryRowType,\n RowIdType extends string | number,\n FilterStateType extends ObjectForExtending,\n // SubRowType\n> = {\n /**\n * Группировка колонок (многоуровневая шапка через `columnConfig.children`):\n * объединение пустых ячеек шапки (`squashEmptyCells`, по умолчанию включено) и\n * дефолт выравнивания в объединённых ячейках (`squashedHeaderAlign`).\n */\n columnsGrouping?: ColumnsGroupingConfig;\n /**\n * Подсветка активной сущности в canvas-таблице.\n * @deprecated Значения `'cell'`/`'range-cell'` устарели — используйте\n * `cellsSelection.mode`. Актуальны `'row'` (подсветка строки) и `'disabled'`.\n */\n highlightActiveType?: HighlightActiveType;\n /**\n * Единый конфиг выделения ячеек: режим (`mode`), оси\n * (`enableColumnSelection`/`enableRowSelection`/`enableSelectAll`) и controlled\n * (`state`). См. {@link CellsSelectionConfig}.\n */\n cellsSelection?: CellsSelectionConfig;\n /**\n * Подсвеченная строка (`highlightActiveType='row'`).\n * `state` (опционально) — controlled-кортеж `[value, setter]`: задан — значением\n * владеешь снаружи (сброс `setter(undefined)`); не задан — таблица крутит\n * подсветку внутренним стейтом, а `onChange` всё равно срабатывает (подписка\n * без владения значением).\n */\n highlightActiveRow?: {\n state?: [\n number | undefined,\n React.Dispatch<React.SetStateAction<number | undefined>>,\n ];\n /**\n * Колбэк смены подсвеченной строки: отдаёт её флэт-индекс и сам объект\n * строки (`rows[index]`). Позволяет открывать данные подсвеченной строки\n * (например, в SplitView) без `onCellClicked`.\n */\n onChange?: (params: {\n index: number | undefined;\n row: RowType | undefined;\n }) => void;\n };\n /**\n * Эффекты при наведении (hover)\n * `row` — подсветка строки под курсором.\n * Независимая визуальная ось: селектинг (`cellsSelection`) и `highlightActiveType='row'`\n * рисуются ПОВЕРХ hover-подсветки и визуально перекрывают её (hover\n * «остаётся под ними» и снова виден после сброса выделения).\n *\n * `{ row: true }` — включить с цветами из темы;\n * `{ row: { color: '#F7F9FB' } }` — переопределить цвет data-ячеек.\n * @default undefined (выключено)\n */\n hoverEffects?: HoverEffectsConfig;\n /**\n * Включает компенсацию тонких canvas-линий при browser zoom ниже 100%, когда devicePixelRatio меньше 1.\n * Влияет только на grid/header/sticky hairline borders.\n * @default false\n */\n enableLowDprHairline?: boolean;\n /**\n * Управление рамками (линиями) таблицы: включение и выключение.\n *\n * Уровни, от слабого к сильному: общие настройки (vertical, horizontal),\n * затем колонка (getVerticalBorder) и строка (getHorizontalBorder), затем\n * ячейка (getCellBorder).\n *\n * `vertical: false` и `horizontal: false` убирают все вертикальные или\n * горизонтальные линии тела. `getCellBorder` включает и выключает стороны\n * рамки конкретной ячейки; при его использовании линии рисуются с разбивкой\n * по ячейкам.\n */\n borders?: BordersConfig<RowType>;\n /**\n * rowSize - размеры строк таблицы\n */\n rowSize?: Prettify<RowSize>;\n /**\n * rowHeight - размер высоты строк таблицы\n */\n rowHeight?: Maybe<number | RowHeightFunc<RowType>>;\n /**\n * sorting - активация сортировки. Условие активации - это наличие данного свойства. Нужно также сконфигурировать колонки.\n *\n * Пример:\n *\n * tableConfig={sorting: {sortingState}}\n *\n * columnConfig=[{sortingType: 'numberSort'}]\n */\n sorting?: {\n state: [\n readonly SortColumn[],\n React.Dispatch<React.SetStateAction<readonly SortColumn[]>>,\n ];\n /**\n * manualSorting - пропс, активирующий ручную-кастомную (или на стороне бэкенда) сортировку\n */\n manualSorting?: boolean;\n };\n /** @deprecated Свойство view не используется и будет удалено в следующей мажорной версии. */\n view?: View;\n /**\n * filtering - активация фильтрации. Условие активации - это наличие данного свойства. Нужно также сконфигурировать колонки.\n *\n * Пример:\n *\n * tableConfig={filtering: {stateAndSetter, ...}}\n *\n * columnConfig=[{filtering: {...}}]\n */\n filtering?: FilteringConfig<FilterStateType>;\n /**\n * Сворачивание / разворачивание таблицы\n */\n collapsing?: TableCollapseConfig;\n /**\n * selecting - активация выбора строк. Условие активации - это наличие данного свойства.\n * Есть поддержка выбора строк с многоуровневой вложенностью.\n *\n * Пример:\n *\n *"
|
|
53642
53891
|
},
|
|
53643
53892
|
{
|
|
53644
53893
|
"typeName": "FilterComponentInPopoverProps",
|
|
@@ -54417,12 +54666,12 @@
|
|
|
54417
54666
|
"feature": "SummaryRows",
|
|
54418
54667
|
"legacy": false,
|
|
54419
54668
|
"summary": "*tableConfig.summaryRows + пропс bottomSummaryRows**",
|
|
54420
|
-
"docs": "# Summary Rows\n\n**tableConfig.summaryRows + пропс bottomSummaryRows**\n\nИтоговые строки в нижней части таблицы.\n\nКонфигурация состоит из двух частей:\n\n- **`tableConfig.summaryRows`** (`SummaryRowsConfig`) — настройка видимости и кнопки в control block\n- **Пропс `bottomSummaryRows`** (`SummaryRowType[]`) — массив данных для итоговых строк\n\n## tableConfig.summaryRows (SummaryRowsConfig)\n\n- **`showDefault`** `boolean` — показывать итоговые строки по умолчанию\n- **`showInControl`** `boolean` — кнопка переключения видимости в control block\n\n## Пропс bottomSummaryRows\n\nМассив объектов `SummaryRowType[]`, передаётся напрямую в компонент `TableCanvas`. Количество элементов массива = количество итоговых строк. Пустой массив — итоговые строки не отображаются.\n\n## Рендер в columnConfig\n\nКастомный рендер через `renderSummaryCell` в конфигурации колонки. Данные итоговой строки доступны через `row`.\n\n## Особенности\n\n- Необходимо соблюдать отступы ячеек через `theme.cellHorizontalPadding`\n\n> Подробнее о типах — [Summary Rows API](?path=/docs/локальные-компоненты-tablecanvas-summaryrows-api--docs)",
|
|
54421
|
-
"apiDocs": "# Summary Rows API\n\n## SummaryRowsConfig\n\n```typescript\ntype SummaryRowsConfig = {\n showDefault: boolean;\n showInControl: boolean;\n} & {\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: DomMetadata;\n};\n```",
|
|
54669
|
+
"docs": "# Summary Rows\n\n**tableConfig.summaryRows + пропс bottomSummaryRows**\n\nИтоговые строки в нижней части таблицы.\n\nКонфигурация состоит из двух частей:\n\n- **`tableConfig.summaryRows`** (`SummaryRowsConfig`) — настройка видимости и кнопки в control block\n- **Пропс `bottomSummaryRows`** (`SummaryRowType[]`) — массив данных для итоговых строк\n\n## tableConfig.summaryRows (SummaryRowsConfig)\n\n- **`showDefault`** `boolean` — показывать итоговые строки по умолчанию\n- **`showInControl`** `boolean` — кнопка переключения видимости в control block\n- **`onChange`** `(checked: boolean) => void` — вызывается, когда пользователь переключает тогл «Итоговые строки» в настройках таблицы. Не вызывается при монтировании\n\n### Сохранение выбора пользователя\n\nСохраните значение в `onChange` и передайте его обратно в `showDefault`:\n\n```tsx\nconst STORAGE_KEY = 'my-table:summary-rows';\n\nconst [showSummary] = useState(\n () => localStorage.getItem(STORAGE_KEY) !== 'false',\n);\n\n<TableCanvas\n tableConfig={{\n summaryRows: {\n showDefault: showSummary,\n showInControl: true,\n onChange: (checked) =>\n localStorage.setItem(STORAGE_KEY, String(checked)),\n },\n }}\n ...\n/>;\n```\n\n> `showDefault` читается только при монтировании таблицы. Если поменять его позже, текущее состояние тогла не изменится.\n\n## Пропс bottomSummaryRows\n\nМассив объектов `SummaryRowType[]`, передаётся напрямую в компонент `TableCanvas`. Количество элементов массива = количество итоговых строк. Пустой массив — итоговые строки не отображаются.\n\n## Рендер в columnConfig\n\nКастомный рендер через `renderSummaryCell` в конфигурации колонки. Данные итоговой строки доступны через `row`.\n\n## Особенности\n\n- Необходимо соблюдать отступы ячеек через `theme.cellHorizontalPadding`\n\n> Подробнее о типах — [Summary Rows API](?path=/docs/локальные-компоненты-tablecanvas-summaryrows-api--docs)",
|
|
54670
|
+
"apiDocs": "# Summary Rows API\n\n## SummaryRowsConfig\n\n```typescript\ntype SummaryRowsConfig = {\n showDefault: boolean;\n showInControl: boolean;\n /**\n * callback при переключении тогла «Итоговые строки» в настройках таблицы.\n * Вызывается только по действию пользователя (не при монтировании),\n * поэтому подходит для сохранения выбора, например, в localStorage.\n * Сохранённое значение передавайте обратно в `showDefault`.\n */\n onChange?: (checked: boolean) => void;\n} & {\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: DomMetadata;\n};\n```",
|
|
54422
54671
|
"api": [
|
|
54423
54672
|
{
|
|
54424
54673
|
"typeName": "SummaryRowsConfig",
|
|
54425
|
-
"source": "type SummaryRowsConfig = {\n showDefault: boolean;\n showInControl: boolean;\n} & {\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: DomMetadata;\n};"
|
|
54674
|
+
"source": "type SummaryRowsConfig = {\n showDefault: boolean;\n showInControl: boolean;\n /**\n * callback при переключении тогла «Итоговые строки» в настройках таблицы.\n * Вызывается только по действию пользователя (не при монтировании),\n * поэтому подходит для сохранения выбора, например, в localStorage.\n * Сохранённое значение передавайте обратно в `showDefault`.\n */\n onChange?: (checked: boolean) => void;\n} & {\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: DomMetadata;\n};"
|
|
54426
54675
|
}
|
|
54427
54676
|
],
|
|
54428
54677
|
"stories": [
|
|
@@ -54431,6 +54680,12 @@
|
|
|
54431
54680
|
"displayName": "ID",
|
|
54432
54681
|
"type": "full-code",
|
|
54433
54682
|
"code": "import { ColumnConfig, TableCanvas } from '@daisforge/ui/components/TableCanvas';\n\n() => {\n const [rows] = useState(createRows);\n\n const bottomSummaryRowsData: TSummaryRowData[] = [\n {\n type: 'bottom',\n values: [\n { columnId: 'id', value: 'Итого' },\n { columnId: 'task', value: `Всего тасков ${rows.length}` },\n {\n columnId: 'priority',\n value: `Средних приоритетов ${\n rows.filter((el) => el.priority === 'Medium').length\n }`,\n },\n ],\n },\n ];\n\n const renderCommonSummaryCell = useCallback(\n (props: SummaryCellInfoGlideInstance<Row, TSummaryRowData>) =>\n props.row.values.find((el) => el.columnId === props.column.key)\n ?.value ?? '',\n [],\n );\n\n const columnConfig = useMemo<readonly ColumnConfig<Row, TSummaryRowData>[]>(\n () => [\n {\n key: 'id',\n name: 'ID',\n renderSummaryCell: renderCommonSummaryCell,\n },\n {\n key: 'task',\n name: 'Title',\n renderSummaryCell: renderCommonSummaryCell,\n },\n {\n key: 'priority',\n name: 'Priority',\n renderSummaryCell: (props) => {\n const { row, theme } = props;\n\n return (\n <Canvas.Container\n padding={{\n left: theme.cellHorizontalPadding,\n right: theme.cellHorizontalPadding,\n }}\n >\n <Canvas.Text color={row.type === 'top' ? 'red' : 'orange'}>\n {renderCommonSummaryCell(props)}\n </Canvas.Text>\n </Canvas.Container>\n );\n },\n },\n {\n key: 'issueType',\n name: 'Issue Type',\n },\n {\n key: 'complete',\n name: '% Complete',\n },\n ],\n [renderCommonSummaryCell],\n );\n\n return (\n <TableCanvas\n tableConfig={{\n containerStyle: { height: '700px' },\n summaryRows: {\n showDefault: true,\n showInControl: true,\n },\n }}\n columnConfig={columnConfig}\n bottomSummaryRows={bottomSummaryRowsData}\n rows={rows}\n />\n );\n }"
|
|
54683
|
+
},
|
|
54684
|
+
{
|
|
54685
|
+
"exportName": "SummaryRowsOnChange",
|
|
54686
|
+
"displayName": "Сохранение выбора (onChange)",
|
|
54687
|
+
"type": "full-code",
|
|
54688
|
+
"code": "import { ColumnConfig, TableCanvas } from '@daisforge/ui/components/TableCanvas';\n\n() => {\n const [rows] = useState(() => createRows(undefined, ROWS_COUNT));\n // showDefault читается только при монтировании, поэтому для применения\n // сохранённого значения перемонтируем таблицу через key\n const [tableKey, setTableKey] = useState(0);\n const [showDefault, setShowDefault] = useState(readSavedSummaryRows);\n const [log, setLog] = useState<boolean[]>([]);\n\n const bottomSummaryRowsData: TSummaryRowData[] = [\n {\n type: 'bottom',\n values: [\n { columnId: 'id', value: 'Итого' },\n { columnId: 'task', value: `Всего тасков ${rows.length}` },\n ],\n },\n ];\n\n const columnConfig = useMemo<readonly ColumnConfig<Row, TSummaryRowData>[]>(\n () => [\n {\n key: 'id',\n name: 'ID',\n renderSummaryCell: (props) =>\n props.row.values.find((el) => el.columnId === props.column.key)\n ?.value ?? '',\n },\n {\n key: 'task',\n name: 'Title',\n renderSummaryCell: (props) =>\n props.row.values.find((el) => el.columnId === props.column.key)\n ?.value ?? '',\n },\n { key: 'priority', name: 'Priority' },\n { key: 'issueType', name: 'Issue Type' },\n ],\n [],\n );\n\n const handleSummaryRowsChange = (checked: boolean) => {\n try {\n localStorage.setItem(SUMMARY_ROWS_STORAGE_KEY, String(checked));\n } catch {\n // localStorage недоступен — просто не сохраняем\n }\n setLog((prev) => [...prev, checked]);\n };\n\n // Имитация перезагрузки страницы: читаем сохранённое значение\n // и монтируем таблицу заново\n const handleRemount = () => {\n setShowDefault(readSavedSummaryRows());\n setLog([]);\n setTableKey((prev) => prev + 1);\n };\n\n const handleReset = () => {\n try {\n localStorage.removeItem(SUMMARY_ROWS_STORAGE_KEY);\n } catch {\n // localStorage недоступен\n }\n handleRemount();\n };\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', gap: s.x4 }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: s.x4 }}>\n <Button\n size=\"xs\"\n view=\"secondary\"\n onClick={handleRemount}\n data-testid={TEST_ID.remount}\n >\n Перемонтировать таблицу\n </Button>\n <Button\n size=\"xs\"\n view=\"secondary\"\n onClick={handleReset}\n data-testid={TEST_ID.reset}\n >\n Сбросить сохранённый выбор\n </Button>\n <BodyS color={textSecondary} data-testid={TEST_ID.log}>\n {log.length\n ? `onChange: ${log.join(', ')}`\n : 'onChange ещё не вызывался'}\n </BodyS>\n </div>\n <TableCanvas\n key={tableKey}\n tableConfig={{\n containerStyle: { height: '600px' },\n summaryRows: {\n showDefault,\n showInControl: true,\n onChange: handleSummaryRowsChange,\n domMetadata: {\n dataAttributes: { 'data-testid': TEST_ID.switch },\n },\n },\n sidebarConfig: {\n defaultTabs: [\n {\n id: 'tableSettings',\n domMetadata: {\n dataAttributes: { 'data-testid': TEST_ID.settingsTab },\n },\n },\n ],\n },\n }}\n columnConfig={columnConfig}\n bottomSummaryRows={bottomSummaryRowsData}\n rows={rows}\n />\n </div>\n );\n }"
|
|
54434
54689
|
}
|
|
54435
54690
|
]
|
|
54436
54691
|
},
|
|
@@ -55666,12 +55921,12 @@
|
|
|
55666
55921
|
"feature": "summaryRows",
|
|
55667
55922
|
"legacy": true,
|
|
55668
55923
|
"summary": "*tableConfig.summaryRows**",
|
|
55669
|
-
"docs": "# Summary Rows\n\n**tableConfig.summaryRows**\n\nИтоговые строки в верхней и/или нижней части таблицы.\n\n## Ключевые особенности\n\n- Отображение итогов через `topSummaryRows` и `bottomSummaryRows` пропсы\n- Кнопка переключения видимости в control block (`showInControl: true`)\n- Кастомный рендер через `renderSummaryCell` в `columnConfig`\n\n## Особенности\n\n- Количество элементов массива = количество итоговых строк\n- Пустой массив — итоговые строки не отображаются\n- `renderSummaryCell` получает `RenderSummaryCellProps` с данными итоговой строки\n\n> Подробнее о типах и пропсах — [Summary Rows API](?path=/docs/локальные-компоненты-table-summaryrows-api--docs)",
|
|
55670
|
-
"apiDocs": "# Summary Rows API\n\n## SummaryRowsConfig\n\n```typescript\ntype SummaryRowsConfig = {\n showDefault: boolean;\n showInControl: boolean;\n} & {\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: DomMetadata;\n};\n```\n\n## TableProps\n\n```typescript\ntype TableProps<\n FilterStateType extends ObjectForExtending,\n RowIdType extends string | number,\n HeaderContextValueType extends ObjectForExtending,\n RowContextValueType extends ObjectForExtending,\n RowType extends ObjectForExtending,\n SummaryRowType = unknown,\n> = {\n /**\n * columnConfig - Конфигурация колонок.\n *\n * (рекомендуется минимальное количество зависимостей для данной сущности - в идеале, чтобы не пересоздавался)\n */\n columnConfig: readonly ColumnConfig<RowType, SummaryRowType>[];\n /**\n * rows - данные для таблицы. ```RowType extends Record<string | number, any>```\n */\n rows: RowType[];\n /**\n * topSummaryRows - данные для итоговой строки в верхней части таблицы. ```SummaryRowType[]```\n */\n topSummaryRows?: SummaryRowType[];\n /**\n * rows - данные для итоговой строки в нижней части таблицы. ```SummaryRowType[]```\n */\n bottomSummaryRows?: SummaryRowType[];\n /**\n * tableConfig - Конфигурация фичей таблицы (их активация и отключение)\n */\n tableConfig?: Prettify<\n TableConfig<RowType, SummaryRowType, RowIdType, FilterStateType>\n >;\n /**\n * headerContextValue: любые стейты, которые нужны в headerCell - кладем в headerContextValue. И получаем доступ с помощью useHeaderContext.\n */\n headerContextValue?: HeaderContextValueType;\n /**\n * rowContextValue: любые стейты, которые нужны в cell - кладем в rowContextValue. И получаем доступ с помощью useRowContext.\n */\n rowContextValue?: RowContextValueType;\n refTable?: Ref<DataGridHandle>;\n refTableContainer?: React.Ref<HTMLDivElement>;\n};\n```",
|
|
55924
|
+
"docs": "# Summary Rows\n\n**tableConfig.summaryRows**\n\nИтоговые строки в верхней и/или нижней части таблицы.\n\n## Ключевые особенности\n\n- Отображение итогов через `topSummaryRows` и `bottomSummaryRows` пропсы\n- Кнопка переключения видимости в control block (`showInControl: true`)\n- Кастомный рендер через `renderSummaryCell` в `columnConfig`\n- Колбэк `onChange(checked)`: вызывается, когда пользователь переключает тогл «Итоговые строки» в настройках таблицы. Не вызывается при монтировании\n\n## Сохранение выбора пользователя\n\nСохраните значение в `onChange` и передайте его обратно в `showDefault`:\n\n```tsx\nconst STORAGE_KEY = 'my-table:summary-rows';\n\nconst [showSummary] = useState(\n () => localStorage.getItem(STORAGE_KEY) !== 'false',\n);\n\n<Table\n tableConfig={{\n summaryRows: {\n showDefault: showSummary,\n showInControl: true,\n onChange: (checked) =>\n localStorage.setItem(STORAGE_KEY, String(checked)),\n },\n }}\n ...\n/>;\n```\n\n> `showDefault` читается только при монтировании таблицы. Если поменять его позже, текущее состояние тогла не изменится.\n\n## Особенности\n\n- Количество элементов массива = количество итоговых строк\n- Пустой массив — итоговые строки не отображаются\n- `renderSummaryCell` получает `RenderSummaryCellProps` с данными итоговой строки\n\n> Подробнее о типах и пропсах — [Summary Rows API](?path=/docs/локальные-компоненты-table-summaryrows-api--docs)",
|
|
55925
|
+
"apiDocs": "# Summary Rows API\n\n## SummaryRowsConfig\n\n```typescript\ntype SummaryRowsConfig = {\n showDefault: boolean;\n showInControl: boolean;\n /**\n * callback при переключении тогла «Итоговые строки» в настройках таблицы.\n * Вызывается только по действию пользователя (не при монтировании),\n * поэтому подходит для сохранения выбора, например, в localStorage.\n * Сохранённое значение передавайте обратно в `showDefault`.\n */\n onChange?: (checked: boolean) => void;\n} & {\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: DomMetadata;\n};\n```\n\n## TableProps\n\n```typescript\ntype TableProps<\n FilterStateType extends ObjectForExtending,\n RowIdType extends string | number,\n HeaderContextValueType extends ObjectForExtending,\n RowContextValueType extends ObjectForExtending,\n RowType extends ObjectForExtending,\n SummaryRowType = unknown,\n> = {\n /**\n * columnConfig - Конфигурация колонок.\n *\n * (рекомендуется минимальное количество зависимостей для данной сущности - в идеале, чтобы не пересоздавался)\n */\n columnConfig: readonly ColumnConfig<RowType, SummaryRowType>[];\n /**\n * rows - данные для таблицы. ```RowType extends Record<string | number, any>```\n */\n rows: RowType[];\n /**\n * topSummaryRows - данные для итоговой строки в верхней части таблицы. ```SummaryRowType[]```\n */\n topSummaryRows?: SummaryRowType[];\n /**\n * rows - данные для итоговой строки в нижней части таблицы. ```SummaryRowType[]```\n */\n bottomSummaryRows?: SummaryRowType[];\n /**\n * tableConfig - Конфигурация фичей таблицы (их активация и отключение)\n */\n tableConfig?: Prettify<\n TableConfig<RowType, SummaryRowType, RowIdType, FilterStateType>\n >;\n /**\n * headerContextValue: любые стейты, которые нужны в headerCell - кладем в headerContextValue. И получаем доступ с помощью useHeaderContext.\n */\n headerContextValue?: HeaderContextValueType;\n /**\n * rowContextValue: любые стейты, которые нужны в cell - кладем в rowContextValue. И получаем доступ с помощью useRowContext.\n */\n rowContextValue?: RowContextValueType;\n refTable?: Ref<DataGridHandle>;\n refTableContainer?: React.Ref<HTMLDivElement>;\n};\n```",
|
|
55671
55926
|
"api": [
|
|
55672
55927
|
{
|
|
55673
55928
|
"typeName": "SummaryRowsConfig",
|
|
55674
|
-
"source": "type SummaryRowsConfig = {\n showDefault: boolean;\n showInControl: boolean;\n} & {\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: DomMetadata;\n};"
|
|
55929
|
+
"source": "type SummaryRowsConfig = {\n showDefault: boolean;\n showInControl: boolean;\n /**\n * callback при переключении тогла «Итоговые строки» в настройках таблицы.\n * Вызывается только по действию пользователя (не при монтировании),\n * поэтому подходит для сохранения выбора, например, в localStorage.\n * Сохранённое значение передавайте обратно в `showDefault`.\n */\n onChange?: (checked: boolean) => void;\n} & {\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: DomMetadata;\n};"
|
|
55675
55930
|
},
|
|
55676
55931
|
{
|
|
55677
55932
|
"typeName": "TableProps",
|
|
@@ -55684,6 +55939,12 @@
|
|
|
55684
55939
|
"displayName": "ID",
|
|
55685
55940
|
"type": "full-code",
|
|
55686
55941
|
"code": "import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n Badge,\n Box,\n Button,\n ColumnConfig,\n ColumnOrColumnGroupConfig,\n RenderCellProps,\n RowHeightFunc,\n SIZES,\n Select,\n Switch,\n Table,\n TextField,\n} from '@daisforge/ui';\nimport { IconAddOutline, IconBoxOutline, IconSber } from '@daisforge/ui/icons';\n\n() => {\n const [rows] = useState(createRows);\n\n const topSummaryRowsData: TSummaryRowData[] = [\n {\n type: 'top',\n values: [\n {\n columnId: 'id',\n value: 'Итого',\n },\n {\n columnId: 'priority',\n value: `Критичных приоритетов ${\n rows.filter((el) => el.priority === 'Critical').length\n }`,\n },\n ],\n },\n {\n type: 'top',\n values: [\n {\n columnId: 'id',\n value: 'Итого',\n },\n {\n columnId: 'priority',\n value: `Высоких приоритетов ${\n rows.filter((el) => el.priority === 'High').length\n }`,\n },\n ],\n },\n ];\n\n const bottomSummaryRowsData: TSummaryRowData[] = [\n {\n type: 'bottom',\n values: [\n { columnId: 'id', value: 'Итого' },\n { columnId: 'task', value: `Всего тасков ${rows.length}` },\n {\n columnId: 'priority',\n value: `Средних приоритетов ${\n rows.filter((el) => el.priority === 'Medium').length\n }`,\n },\n ],\n },\n ];\n\n const renderCommonSummaryCell = useCallback(\n (props: RenderSummaryCellProps<unknown, Row>) =>\n (props.row as TSummaryRowData).values.find(\n (el) => el.columnId === props.column.key,\n )?.value,\n [],\n );\n\n const columnConfig = useMemo<readonly ColumnConfig<Row>[]>(\n () => [\n {\n key: 'id',\n name: 'ID',\n renderSummaryCell: renderCommonSummaryCell,\n },\n {\n key: 'task',\n name: 'Title',\n renderSummaryCell: renderCommonSummaryCell,\n },\n {\n key: 'priority',\n name: 'Priority',\n renderSummaryCell: (props) => {\n const rowData = props.row as TSummaryRowData;\n return (\n <div\n style={{\n color: rowData.type === 'top' ? textNegative : textWarning,\n }}\n >\n {renderCommonSummaryCell(props)}\n </div>\n );\n },\n },\n {\n key: 'issueType',\n name: 'Issue Type',\n },\n {\n key: 'complete',\n name: '% Complete',\n },\n ],\n [renderCommonSummaryCell],\n );\n\n return (\n <Table\n tableConfig={{\n containerStyle: { height: '700px' },\n summaryRows: {\n showDefault: true,\n showInControl: true,\n },\n }}\n columnConfig={columnConfig}\n topSummaryRows={topSummaryRowsData}\n bottomSummaryRows={bottomSummaryRowsData}\n rows={rows}\n />\n );\n }"
|
|
55942
|
+
},
|
|
55943
|
+
{
|
|
55944
|
+
"exportName": "SummaryRowsOnChange",
|
|
55945
|
+
"displayName": "Сохранение выбора (onChange)",
|
|
55946
|
+
"type": "full-code",
|
|
55947
|
+
"code": "import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n Badge,\n Box,\n Button,\n ColumnConfig,\n ColumnOrColumnGroupConfig,\n RenderCellProps,\n RowHeightFunc,\n SIZES,\n Select,\n Switch,\n Table,\n TextField,\n} from '@daisforge/ui';\nimport { IconAddOutline, IconBoxOutline, IconSber } from '@daisforge/ui/icons';\n\n() => {\n const [rows] = useState(createRows);\n // showDefault читается только при монтировании, поэтому для применения\n // сохранённого значения перемонтируем таблицу через key\n const [tableKey, setTableKey] = useState(0);\n const [showDefault, setShowDefault] = useState(readSavedSummaryRows);\n const [log, setLog] = useState<boolean[]>([]);\n\n const bottomSummaryRowsData: TSummaryRowData[] = [\n {\n type: 'bottom',\n values: [\n { columnId: 'id', value: 'Итого' },\n { columnId: 'task', value: `Всего тасков ${rows.length}` },\n ],\n },\n ];\n\n const columnConfig = useMemo<readonly ColumnConfig<Row>[]>(\n () => [\n {\n key: 'id',\n name: 'ID',\n renderSummaryCell: (props) =>\n (props.row as TSummaryRowData).values.find(\n (el) => el.columnId === props.column.key,\n )?.value,\n },\n {\n key: 'task',\n name: 'Title',\n renderSummaryCell: (props) =>\n (props.row as TSummaryRowData).values.find(\n (el) => el.columnId === props.column.key,\n )?.value,\n },\n { key: 'priority', name: 'Priority' },\n { key: 'issueType', name: 'Issue Type' },\n ],\n [],\n );\n\n const handleSummaryRowsChange = (checked: boolean) => {\n try {\n localStorage.setItem(SUMMARY_ROWS_STORAGE_KEY, String(checked));\n } catch {\n // localStorage недоступен — просто не сохраняем\n }\n setLog((prev) => [...prev, checked]);\n };\n\n // Имитация перезагрузки страницы: читаем сохранённое значение\n // и монтируем таблицу заново\n const handleRemount = () => {\n setShowDefault(readSavedSummaryRows());\n setLog([]);\n setTableKey((prev) => prev + 1);\n };\n\n const handleReset = () => {\n try {\n localStorage.removeItem(SUMMARY_ROWS_STORAGE_KEY);\n } catch {\n // localStorage недоступен\n }\n handleRemount();\n };\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', gap: s.x4 }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: s.x4 }}>\n <Button\n size=\"xs\"\n view=\"secondary\"\n onClick={handleRemount}\n data-testid={TEST_ID.remount}\n >\n Перемонтировать таблицу\n </Button>\n <Button\n size=\"xs\"\n view=\"secondary\"\n onClick={handleReset}\n data-testid={TEST_ID.reset}\n >\n Сбросить сохранённый выбор\n </Button>\n <BodyS color={textSecondary} data-testid={TEST_ID.log}>\n {log.length\n ? `onChange: ${log.join(', ')}`\n : 'onChange ещё не вызывался'}\n </BodyS>\n </div>\n <Table\n key={tableKey}\n tableConfig={{\n containerStyle: { height: '600px' },\n summaryRows: {\n showDefault,\n showInControl: true,\n onChange: handleSummaryRowsChange,\n domMetadata: {\n dataAttributes: { 'data-testid': TEST_ID.switch },\n },\n },\n sidebarConfig: {\n defaultTabs: [\n {\n id: 'tableSettings',\n domMetadata: {\n dataAttributes: { 'data-testid': TEST_ID.settingsTab },\n },\n },\n ],\n },\n }}\n columnConfig={columnConfig}\n bottomSummaryRows={bottomSummaryRowsData}\n rows={rows}\n />\n </div>\n );\n }"
|
|
55687
55948
|
}
|
|
55688
55949
|
]
|
|
55689
55950
|
}
|
|
@@ -57980,14 +58241,14 @@
|
|
|
57980
58241
|
},
|
|
57981
58242
|
"Table.SummaryRowsConfig": {
|
|
57982
58243
|
"name": "SummaryRowsConfig",
|
|
57983
|
-
"definition": "export type SummaryRowsConfig = {\n showDefault: boolean;\n showInControl: boolean;\n} & {\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: DomMetadata;\n};",
|
|
58244
|
+
"definition": "export type SummaryRowsConfig = {\n showDefault: boolean;\n showInControl: boolean;\n /**\n * callback при переключении тогла «Итоговые строки» в настройках таблицы.\n * Вызывается только по действию пользователя (не при монтировании),\n * поэтому подходит для сохранения выбора, например, в localStorage.\n * Сохранённое значение передавайте обратно в `showDefault`.\n */\n onChange?: (checked: boolean) => void;\n} & {\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: DomMetadata;\n};",
|
|
57984
58245
|
"importPath": "@daisforge/ui",
|
|
57985
58246
|
"importStatement": "import { SummaryRowsConfig } from '@daisforge/ui';",
|
|
57986
58247
|
"sourceFile": "packages/ui-kit/src/components/Table/types/table-config.type.ts"
|
|
57987
58248
|
},
|
|
57988
58249
|
"TableCanvas.SummaryRowsConfig": {
|
|
57989
58250
|
"name": "SummaryRowsConfig",
|
|
57990
|
-
"definition": "export type SummaryRowsConfig = {\n showDefault: boolean;\n showInControl: boolean;\n} & {\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: DomMetadata;\n};",
|
|
58251
|
+
"definition": "export type SummaryRowsConfig = {\n showDefault: boolean;\n showInControl: boolean;\n /**\n * callback при переключении тогла «Итоговые строки» в настройках таблицы.\n * Вызывается только по действию пользователя (не при монтировании),\n * поэтому подходит для сохранения выбора, например, в localStorage.\n * Сохранённое значение передавайте обратно в `showDefault`.\n */\n onChange?: (checked: boolean) => void;\n} & {\n /**\n * Метки для автоматизированного тестирования и аналитики\n * Добавляет data-атрибуты и CSS-классы к элементам controlBlock\n */\n domMetadata?: DomMetadata;\n};",
|
|
57991
58252
|
"importPath": "@daisforge/ui/components/TableCanvas",
|
|
57992
58253
|
"importStatement": "import { SummaryRowsConfig } from '@daisforge/ui/components/TableCanvas';",
|
|
57993
58254
|
"sourceFile": "packages/ui-kit/src/components/TableCanvas/types/table-config.type.ts"
|