@economic/taco 2.26.3 → 2.26.4
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/esm/packages/taco/src/primitives/Table/Core/Table.js +2 -1
- package/dist/esm/packages/taco/src/primitives/Table/Core/Table.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Menu.js +2 -2
- package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Menu.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/Core/features/{useStylesheet.js → useTableStyle.js} +24 -15
- package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableStyle.js.map +1 -0
- package/dist/esm/packages/taco/src/primitives/Table/Core/features/{useStylesheetColumnFreezing.js → useTableStyleColumnFreezing.js} +6 -4
- package/dist/esm/packages/taco/src/primitives/Table/Core/features/{useStylesheetColumnFreezing.js.map → useTableStyleColumnFreezing.js.map} +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/Core/features/{useStylesheetCssGrid.js → useTableStyleGrid.js} +12 -5
- package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableStyleGrid.js.map +1 -0
- package/dist/esm/packages/taco/src/primitives/Table/Core/useTable.js +6 -2
- package/dist/esm/packages/taco/src/primitives/Table/Core/useTable.js.map +1 -1
- package/dist/primitives/Table/Core/features/useTableStyle.d.ts +797 -0
- package/dist/primitives/Table/Core/features/useTableStyleColumnFreezing.d.ts +4 -0
- package/dist/primitives/Table/Core/features/useTableStyleGrid.d.ts +7 -0
- package/dist/primitives/Table/Core/useTable.d.ts +2 -1
- package/dist/taco.cjs.development.js +43 -19
- package/dist/taco.cjs.development.js.map +1 -1
- package/dist/taco.cjs.production.min.js +1 -1
- package/dist/taco.cjs.production.min.js.map +1 -1
- package/package.json +2 -2
- package/dist/esm/packages/taco/src/primitives/Table/Core/features/useStylesheet.js.map +0 -1
- package/dist/esm/packages/taco/src/primitives/Table/Core/features/useStylesheetCssGrid.js.map +0 -1
- package/dist/primitives/Table/Core/features/useStylesheet.d.ts +0 -3
- package/dist/primitives/Table/Core/features/useStylesheetColumnFreezing.d.ts +0 -2
- package/dist/primitives/Table/Core/features/useStylesheetCssGrid.d.ts +0 -3
@@ -21,7 +21,7 @@ function TableGrid(props) {
|
|
21
21
|
const handleFocus = table.meta.rowActive.rowActiveIndex === undefined ? event => {
|
22
22
|
table.meta.rowActive.handleFocus(event, table.meta.length, table.renderer.scrollToIndex);
|
23
23
|
} : undefined;
|
24
|
-
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, table.stylesheet, /*#__PURE__*/React__default.createElement(FocusScope, null, /*#__PURE__*/React__default.createElement("table", Object.assign({}, attributes, {
|
24
|
+
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("style", null, table.stylesheet), /*#__PURE__*/React__default.createElement(FocusScope, null, /*#__PURE__*/React__default.createElement("table", Object.assign({}, attributes, {
|
25
25
|
id: table.id,
|
26
26
|
"data-table-font-size": table.meta.fontSize.size,
|
27
27
|
"data-table-horizontally-scrolled": table.meta.columnFreezing.isHorizontallyScrolled ? true : undefined,
|
@@ -32,6 +32,7 @@ function TableGrid(props) {
|
|
32
32
|
onFocus: handleFocus,
|
33
33
|
onScroll: table.meta.columnFreezing.handleScroll,
|
34
34
|
ref: table.ref,
|
35
|
+
style: table.style,
|
35
36
|
tabIndex: -1
|
36
37
|
}), /*#__PURE__*/React__default.createElement("thead", null, table.instance.getHeaderGroups().map(headerGroup => ( /*#__PURE__*/React__default.createElement("tr", {
|
37
38
|
key: headerGroup.id
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Table.js","sources":["../../../../../../../../src/primitives/Table/Core/Table.tsx"],"sourcesContent":["import React from 'react';\nimport { FocusScope } from '@react-aria/focus';\nimport { Header } from './components/Header/Header';\nimport { Body } from './components/Body/Body';\nimport { Footer } from './components/Footer/Footer';\nimport { EmptyStateBody } from './components/Body/EmptyStateBody';\nimport { useTableReturnValue } from './useTable';\nimport { TableToolbar } from './components/Toolbar/Toolbar';\nimport './style.css';\n\ntype TableProps = {\n children: JSX.Element | Array<JSX.Element | null>;\n};\n\nexport function Table(props: TableProps) {\n return <>{props.children}</>;\n}\nTable.Toolbar = TableToolbar;\nTable.Grid = TableGrid;\n\nexport type TableGridProps<TType = unknown> = React.TableHTMLAttributes<HTMLTableElement> & {\n 'data-taco': string;\n enableHorizontalArrowKeyNavigation?: boolean;\n table: useTableReturnValue<TType>;\n};\n\nexport function TableGrid<TType = unknown>(props: TableGridProps<TType>) {\n const { enableHorizontalArrowKeyNavigation, table, ...attributes } = props;\n const handleFocus =\n table.meta.rowActive.rowActiveIndex === undefined\n ? (event: React.FocusEvent) => {\n table.meta.rowActive.handleFocus(event, table.meta.length, table.renderer.scrollToIndex);\n }\n : undefined;\n\n return (\n <>\n {table.stylesheet}
|
1
|
+
{"version":3,"file":"Table.js","sources":["../../../../../../../../src/primitives/Table/Core/Table.tsx"],"sourcesContent":["import React from 'react';\nimport { FocusScope } from '@react-aria/focus';\nimport { Header } from './components/Header/Header';\nimport { Body } from './components/Body/Body';\nimport { Footer } from './components/Footer/Footer';\nimport { EmptyStateBody } from './components/Body/EmptyStateBody';\nimport { useTableReturnValue } from './useTable';\nimport { TableToolbar } from './components/Toolbar/Toolbar';\nimport './style.css';\n\ntype TableProps = {\n children: JSX.Element | Array<JSX.Element | null>;\n};\n\nexport function Table(props: TableProps) {\n return <>{props.children}</>;\n}\nTable.Toolbar = TableToolbar;\nTable.Grid = TableGrid;\n\nexport type TableGridProps<TType = unknown> = React.TableHTMLAttributes<HTMLTableElement> & {\n 'data-taco': string;\n enableHorizontalArrowKeyNavigation?: boolean;\n table: useTableReturnValue<TType>;\n};\n\nexport function TableGrid<TType = unknown>(props: TableGridProps<TType>) {\n const { enableHorizontalArrowKeyNavigation, table, ...attributes } = props;\n const handleFocus =\n table.meta.rowActive.rowActiveIndex === undefined\n ? (event: React.FocusEvent) => {\n table.meta.rowActive.handleFocus(event, table.meta.length, table.renderer.scrollToIndex);\n }\n : undefined;\n\n return (\n <>\n <style>{table.stylesheet}</style>\n <FocusScope>\n <table\n {...attributes}\n id={table.id}\n data-table-font-size={table.meta.fontSize.size}\n data-table-horizontally-scrolled={table.meta.columnFreezing.isHorizontallyScrolled ? true : undefined}\n data-table-pause-hover={table.meta.rowActive.isHoverStatePaused ? true : undefined}\n data-table-resizing={table.state.columnSizingInfo.isResizingColumn ? true : undefined}\n data-table-row-height={table.meta.rowHeight.height}\n data-table-grouped={!!table.state.grouping?.length}\n onFocus={handleFocus}\n onScroll={table.meta.columnFreezing.handleScroll}\n ref={table.ref}\n style={table.style}\n tabIndex={-1}>\n <thead>\n {table.instance.getHeaderGroups().map(headerGroup => (\n <tr key={headerGroup.id}>\n {headerGroup.headers.map(props => (\n <Header key={props.id} header={props} scrollToIndex={table.renderer.scrollToIndex} />\n ))}\n </tr>\n ))}\n </thead>\n {table.instance.getRowModel().rows.length ? (\n <>\n <Body\n enableHorizontalArrowKeyNavigation={enableHorizontalArrowKeyNavigation}\n table={table.instance}\n style={table.renderer.style}>\n {table.renderer.rows}\n </Body>\n {table.meta.footer.isEnabled ? (\n <tfoot>\n <tr>{table.instance.getFooterGroups()[0].headers.map(Footer)}</tr>\n </tfoot>\n ) : null}\n </>\n ) : (\n <EmptyStateBody emptyState={table.props.emptyState} />\n )}\n </table>\n </FocusScope>\n </>\n );\n}\n"],"names":["Table","props","React","children","Toolbar","TableToolbar","Grid","TableGrid","enableHorizontalArrowKeyNavigation","table","attributes","handleFocus","meta","rowActive","rowActiveIndex","undefined","event","length","renderer","scrollToIndex","stylesheet","FocusScope","id","fontSize","size","columnFreezing","isHorizontallyScrolled","isHoverStatePaused","state","columnSizingInfo","isResizingColumn","rowHeight","height","_table$state$grouping","grouping","onFocus","onScroll","handleScroll","ref","style","tabIndex","instance","getHeaderGroups","map","headerGroup","key","headers","Header","header","getRowModel","rows","Body","footer","isEnabled","getFooterGroups","Footer","EmptyStateBody","emptyState"],"mappings":";;;;;;;;SAcgBA,KAAKA,CAACC,KAAiB;EACnC,oBAAOC,4DAAGD,KAAK,CAACE,QAAQ,CAAI;AAChC;AACAH,KAAK,CAACI,OAAO,GAAGC,YAAY;AAC5BL,KAAK,CAACM,IAAI,GAAGC,SAAS;SAQNA,SAASA,CAAkBN,KAA4B;;EACnE,MAAM;IAAEO,kCAAkC;IAAEC,KAAK;IAAE,GAAGC;GAAY,GAAGT,KAAK;EAC1E,MAAMU,WAAW,GACbF,KAAK,CAACG,IAAI,CAACC,SAAS,CAACC,cAAc,KAAKC,SAAS,GAC1CC,KAAuB;IACpBP,KAAK,CAACG,IAAI,CAACC,SAAS,CAACF,WAAW,CAACK,KAAK,EAAEP,KAAK,CAACG,IAAI,CAACK,MAAM,EAAER,KAAK,CAACS,QAAQ,CAACC,aAAa,CAAC;GAC3F,GACDJ,SAAS;EAEnB,oBACIb,yEACIA,4CAAQO,KAAK,CAACW,UAAU,CAAS,eACjClB,6BAACmB,UAAU,qBACPnB,wDACQQ,UAAU;IACdY,EAAE,EAAEb,KAAK,CAACa,EAAE;4BACUb,KAAK,CAACG,IAAI,CAACW,QAAQ,CAACC,IAAI;wCACZf,KAAK,CAACG,IAAI,CAACa,cAAc,CAACC,sBAAsB,GAAG,IAAI,GAAGX,SAAS;8BAC7EN,KAAK,CAACG,IAAI,CAACC,SAAS,CAACc,kBAAkB,GAAG,IAAI,GAAGZ,SAAS;2BAC7DN,KAAK,CAACmB,KAAK,CAACC,gBAAgB,CAACC,gBAAgB,GAAG,IAAI,GAAGf,SAAS;6BAC9DN,KAAK,CAACG,IAAI,CAACmB,SAAS,CAACC,MAAM;0BAC9B,CAAC,GAAAC,qBAAA,GAACxB,KAAK,CAACmB,KAAK,CAACM,QAAQ,cAAAD,qBAAA,eAApBA,qBAAA,CAAsBhB,MAAM;IAClDkB,OAAO,EAAExB,WAAW;IACpByB,QAAQ,EAAE3B,KAAK,CAACG,IAAI,CAACa,cAAc,CAACY,YAAY;IAChDC,GAAG,EAAE7B,KAAK,CAAC6B,GAAG;IACdC,KAAK,EAAE9B,KAAK,CAAC8B,KAAK;IAClBC,QAAQ,EAAE,CAAC;mBACXtC,4CACKO,KAAK,CAACgC,QAAQ,CAACC,eAAe,EAAE,CAACC,GAAG,CAACC,WAAW,mBAC7C1C;IAAI2C,GAAG,EAAED,WAAW,CAACtB;KAChBsB,WAAW,CAACE,OAAO,CAACH,GAAG,CAAC1C,KAAK,mBAC1BC,6BAAC6C,MAAM;IAACF,GAAG,EAAE5C,KAAK,CAACqB,EAAE;IAAE0B,MAAM,EAAE/C,KAAK;IAAEkB,aAAa,EAAEV,KAAK,CAACS,QAAQ,CAACC;IAAiB,CACxF,CAAC,CACD,CACR,CAAC,CACE,EACPV,KAAK,CAACgC,QAAQ,CAACQ,WAAW,EAAE,CAACC,IAAI,CAACjC,MAAM,kBACrCf,yEACIA,6BAACiD,IAAI;IACD3C,kCAAkC,EAAEA,kCAAkC;IACtEC,KAAK,EAAEA,KAAK,CAACgC,QAAQ;IACrBF,KAAK,EAAE9B,KAAK,CAACS,QAAQ,CAACqB;KACrB9B,KAAK,CAACS,QAAQ,CAACgC,IAAI,CACjB,EACNzC,KAAK,CAACG,IAAI,CAACwC,MAAM,CAACC,SAAS,kBACxBnD,yDACIA,yCAAKO,KAAK,CAACgC,QAAQ,CAACa,eAAe,EAAE,CAAC,CAAC,CAAC,CAACR,OAAO,CAACH,GAAG,CAACY,MAAM,CAAC,CAAM,CAC9D,IACR,IAAI,CACT,mBAEHrD,6BAACsD,cAAc;IAACC,UAAU,EAAEhD,KAAK,CAACR,KAAK,CAACwD;IAAc,CACzD,CACG,CACC,CACd;AAEX;;;;"}
|
package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Menu.js
CHANGED
@@ -134,11 +134,11 @@ function HeaderMenu(props) {
|
|
134
134
|
// can't use display: none because the button needs to be focusable
|
135
135
|
const className = cn(
|
136
136
|
// positioning
|
137
|
-
'justify-end
|
137
|
+
'justify-end overflow-hidden',
|
138
138
|
// sizing
|
139
139
|
'!h-6 !w-0 !min-h-[theme(spacing.6)] !min-w-0',
|
140
140
|
// visible - hover
|
141
|
-
'group-hover/header:!w-6 group-hover/header:!min-w-[theme(spacing.6)]',
|
141
|
+
'group-hover/header:!w-6 group-hover/header:!min-w-[theme(spacing.6)] group-hover/header:-mr-1',
|
142
142
|
// visible - expanded
|
143
143
|
'aria-expanded:!w-6 aria-expanded:!min-w-[theme(spacing.6)]',
|
144
144
|
// visible - focus
|
package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Menu.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Menu.js","sources":["../../../../../../../../../../../src/primitives/Table/Core/components/Header/components/Menu.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'clsx';\nimport { IconButton } from '../../../../../../components/IconButton/IconButton';\nimport { Menu as MenuPrimitive } from '../../../../../../components/Menu/Menu';\nimport { useLocalization } from '../../../../../../components/Provider/Localization';\nimport { GotoPopover } from './Goto';\nimport { TableColumnMenu, TableColumnSortDirection } from '../../../../types';\n\nexport type HeaderMenuProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n canFilter: boolean;\n canGoto: boolean;\n canHide: boolean;\n canPin: boolean;\n canSort: boolean;\n customMenu?: TableColumnMenu;\n index: number;\n isFiltered: boolean;\n onFilter?: () => void;\n onGoto?: (query: string) => Promise<number>;\n onHide?: (event: unknown) => void;\n onPin?: (index: number | undefined) => void;\n onSortToggle?: (sortDirection: TableColumnSortDirection | false) => void;\n scrollToIndex: (index: number) => void;\n setRowActiveIndex: (index: number) => void;\n sortDirection?: TableColumnSortDirection | false;\n};\n\nexport function HeaderMenu(props: HeaderMenuProps) {\n const {\n canFilter,\n canGoto,\n canHide,\n canPin,\n canSort,\n customMenu,\n index,\n isFiltered,\n onFilter: handleFilter,\n onGoto: handleGoto,\n onHide: handleHide,\n onPin: handlePin,\n onSortToggle: handleSortToggle,\n scrollToIndex,\n setRowActiveIndex,\n sortDirection,\n } = props;\n const { texts } = useLocalization();\n const [popover, setPopover] = React.useState<string | undefined>(undefined);\n\n let popoverElement;\n\n if (popover) {\n const handleClosePopover = () => setPopover(undefined);\n\n switch (popover) {\n case 'goto': {\n if (handleGoto) {\n const goto = async (query: string) => {\n try {\n const index = await handleGoto(query);\n setRowActiveIndex(index);\n scrollToIndex(index);\n } catch (e) {\n console.error(e);\n //\n } finally {\n handleClosePopover();\n }\n };\n popoverElement = props => <GotoPopover {...props} open onChange={handleClosePopover} onGoto={goto} />;\n }\n }\n }\n }\n\n const memoedMenuItems = React.useMemo(() => {\n const menuItems: JSX.Element[] = [];\n\n if (canHide && handleHide) {\n // we do this in the next tick, otherwise the menu closes and react throws a \"state update on unmounted component\" error\n const handleClick = event => setTimeout(() => handleHide(event), 1);\n\n menuItems.push(\n <MenuPrimitive.Item icon=\"eye-off\" onClick={handleClick}>\n {texts.table.columns.menu.hideColumn}\n </MenuPrimitive.Item>\n );\n }\n\n if (canSort) {\n menuItems.push(\n <MenuPrimitive.Item\n icon=\"sort-by\"\n subMenu={() => (\n <MenuPrimitive.SubMenu>\n <MenuPrimitive.RadioGroup onChange={handleSortToggle as any} value={sortDirection}>\n <MenuPrimitive.RadioGroup.Item value=\"asc\">\n {texts.table.columns.menu.sortingOrder.ascending}\n </MenuPrimitive.RadioGroup.Item>\n <MenuPrimitive.RadioGroup.Item value=\"desc\">\n {texts.table.columns.menu.sortingOrder.descending}\n </MenuPrimitive.RadioGroup.Item>\n <MenuPrimitive.RadioGroup.Item value={false}>\n {texts.table.columns.menu.sortingOrder.unsorted}\n </MenuPrimitive.RadioGroup.Item>\n </MenuPrimitive.RadioGroup>\n </MenuPrimitive.SubMenu>\n )}>\n {texts.table.columns.menu.sorting}\n </MenuPrimitive.Item>\n );\n }\n\n if (canGoto) {\n menuItems.push(\n <MenuPrimitive.Item icon=\"move\" onClick={() => setPopover('goto')} shortcut=\"g\">\n {texts.table.columns.menu.gotoRow}...\n </MenuPrimitive.Item>\n );\n }\n\n if (canPin && handlePin) {\n menuItems.push(\n <MenuPrimitive.Item icon=\"column-freeze\" onClick={() => handlePin(index)}>\n {index === 0\n ? texts.table.columns.menu.freezeFirstColumn\n : texts.table.columns.menu.freezeUptoColumn.replace('[TOTAL]', String(index + 1))}\n </MenuPrimitive.Item>\n );\n\n menuItems.push(\n <MenuPrimitive.Item icon=\"column-unfreeze\" onClick={() => handlePin(undefined)}>\n {texts.table.columns.menu.unfreezeColumns}\n </MenuPrimitive.Item>\n );\n }\n if (canFilter && handleFilter) {\n menuItems.push(\n <MenuPrimitive.Item icon={isFiltered ? 'filter-solid' : 'filter'} onClick={() => handleFilter()}>\n {isFiltered ? texts.table.columns.menu.editFilter : texts.table.columns.menu.filter}\n </MenuPrimitive.Item>\n );\n }\n\n if (customMenu) {\n const menu = customMenu({ trigger: undefined });\n const customItems = React.Children.toArray(menu.props.children.props.children) as JSX.Element[];\n\n if (customItems.length) {\n if (menuItems.length) {\n menuItems.push(<MenuPrimitive.Separator />);\n }\n\n menuItems.push(...customItems);\n }\n }\n\n return menuItems.map((item, key) => React.cloneElement(item, { key }));\n }, [\n canFilter,\n canGoto,\n canHide,\n canPin,\n canSort,\n customMenu,\n handleGoto,\n handleSortToggle,\n index,\n isFiltered,\n sortDirection,\n ]);\n\n // can't use display: none because the button needs to be focusable\n const className = cn(\n // positioning\n 'justify-end -mr-1 overflow-hidden',\n // sizing\n '!h-6 !w-0 !min-h-[theme(spacing.6)] !min-w-0',\n // visible - hover\n 'group-hover/header:!w-6 group-hover/header:!min-w-[theme(spacing.6)]',\n // visible - expanded\n 'aria-expanded:!w-6 aria-expanded:!min-w-[theme(spacing.6)]',\n // visible - focus\n 'focus:!w-6 focus:!min-w-[theme(spacing.6)]',\n {\n '!w-6 !min-w-[theme(spacing.6)]': !!popoverElement,\n },\n props.className\n );\n\n return (\n <IconButton\n className={className}\n icon=\"more\"\n menu={\n popoverElement\n ? undefined\n : menuProps => (\n <MenuPrimitive {...menuProps}>\n <MenuPrimitive.Content>{memoedMenuItems}</MenuPrimitive.Content>\n </MenuPrimitive>\n )\n }\n popover={popoverElement}\n onClickCapture={event => event.preventDefault()}\n />\n );\n}\n"],"names":["HeaderMenu","props","canFilter","canGoto","canHide","canPin","canSort","customMenu","index","isFiltered","onFilter","handleFilter","onGoto","handleGoto","onHide","handleHide","onPin","handlePin","onSortToggle","handleSortToggle","scrollToIndex","setRowActiveIndex","sortDirection","texts","useLocalization","popover","setPopover","React","useState","undefined","popoverElement","handleClosePopover","goto","query","Promise","resolve","then","e","console","error","_wasThrown","_result","_temp","reject","GotoPopover","open","onChange","memoedMenuItems","useMemo","menuItems","handleClick","event","setTimeout","push","MenuPrimitive","Item","icon","onClick","table","columns","menu","hideColumn","subMenu","SubMenu","RadioGroup","value","sortingOrder","ascending","descending","unsorted","sorting","shortcut","gotoRow","freezeFirstColumn","freezeUptoColumn","replace","String","unfreezeColumns","editFilter","filter","trigger","customItems","Children","toArray","children","length","Separator","map","item","key","cloneElement","className","cn","IconButton","menuProps","Content","onClickCapture","preventDefault"],"mappings":";;;;;;;;SA2BgBA,UAAUA,CAACC,KAAsB;EAC7C,MAAM;IACFC,SAAS;IACTC,OAAO;IACPC,OAAO;IACPC,MAAM;IACNC,OAAO;IACPC,UAAU;IACVC,KAAK;IACLC,UAAU;IACVC,QAAQ,EAAEC,YAAY;IACtBC,MAAM,EAAEC,UAAU;IAClBC,MAAM,EAAEC,UAAU;IAClBC,KAAK,EAAEC,SAAS;IAChBC,YAAY,EAAEC,gBAAgB;IAC9BC,aAAa;IACbC,iBAAiB;IACjBC;GACH,GAAGrB,KAAK;EACT,MAAM;IAAEsB;GAAO,GAAGC,eAAe,EAAE;EACnC,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAGC,cAAK,CAACC,QAAQ,CAAqBC,SAAS,CAAC;EAE3E,IAAIC,cAAc;EAElB,IAAIL,OAAO,EAAE;IACT,MAAMM,kBAAkB,GAAGA,MAAML,UAAU,CAACG,SAAS,CAAC;IAEtD,QAAQJ,OAAO;MACX,KAAK,MAAM;QAAE;UACT,IAAIZ,UAAU,EAAE;YACZ,MAAMmB,IAAI,aAAUC,KAAa;cAAA;;4CACzB;oBAAA,OAAAC,OAAA,CAAAC,OAAA,CACoBtB,UAAU,CAACoB,KAAK,CAAC,EAAAG,IAAA,WAA/B5B,KAAK;sBACXa,iBAAiB,CAACb,KAAK,CAAC;sBACxBY,aAAa,CAACZ,KAAK,CAAC;;mBACvB,YAAQ6B,CAAC,EAAE;oBACRC,OAAO,CAACC,KAAK,CAACF,CAAC,CAAC;;mBAEnB;6BAAAG,UAAA,EAAAC,OAAA;kBACGV,kBAAkB,EAAE;kBAAC,IAAAS,UAAA,QAAAC,OAAA;kBAAA,OAAAA,OAAA;;gBAAA,OAAAP,OAAA,CAAAC,OAAA,CAAAO,KAAA,IAAAA,KAAA,CAAAN,IAAA,GAAAM,KAAA,CAAAN,IAAA;eAE5B,QAAAC,CAAA;gBAAA,OAAAH,OAAA,CAAAS,MAAA,CAAAN,CAAA;;;YACDP,cAAc,GAAG7B,KAAK,iBAAI0B,6BAACiB,WAAW,oBAAK3C,KAAK;cAAE4C,IAAI;cAACC,QAAQ,EAAEf,kBAAkB;cAAEnB,MAAM,EAAEoB;eAAQ;;;;;EAMrH,MAAMe,eAAe,GAAGpB,cAAK,CAACqB,OAAO,CAAC;IAClC,MAAMC,SAAS,GAAkB,EAAE;IAEnC,IAAI7C,OAAO,IAAIW,UAAU,EAAE;;MAEvB,MAAMmC,WAAW,GAAGC,KAAK,IAAIC,UAAU,CAAC,MAAMrC,UAAU,CAACoC,KAAK,CAAC,EAAE,CAAC,CAAC;MAEnEF,SAAS,CAACI,IAAI,eACV1B,6BAAC2B,IAAa,CAACC,IAAI;QAACC,IAAI,EAAC,SAAS;QAACC,OAAO,EAAEP;SACvC3B,KAAK,CAACmC,KAAK,CAACC,OAAO,CAACC,IAAI,CAACC,UAAU,CACnB,CACxB;;IAGL,IAAIvD,OAAO,EAAE;MACT2C,SAAS,CAACI,IAAI,eACV1B,6BAAC2B,IAAa,CAACC,IAAI;QACfC,IAAI,EAAC,SAAS;QACdM,OAAO,EAAEA,qBACLnC,6BAAC2B,IAAa,CAACS,OAAO,qBAClBpC,6BAAC2B,IAAa,CAACU,UAAU;UAAClB,QAAQ,EAAE3B,gBAAuB;UAAE8C,KAAK,EAAE3C;wBAChEK,6BAAC2B,IAAa,CAACU,UAAU,CAACT,IAAI;UAACU,KAAK,EAAC;WAChC1C,KAAK,CAACmC,KAAK,CAACC,OAAO,CAACC,IAAI,CAACM,YAAY,CAACC,SAAS,CACpB,eAChCxC,6BAAC2B,IAAa,CAACU,UAAU,CAACT,IAAI;UAACU,KAAK,EAAC;WAChC1C,KAAK,CAACmC,KAAK,CAACC,OAAO,CAACC,IAAI,CAACM,YAAY,CAACE,UAAU,CACrB,eAChCzC,6BAAC2B,IAAa,CAACU,UAAU,CAACT,IAAI;UAACU,KAAK,EAAE;WACjC1C,KAAK,CAACmC,KAAK,CAACC,OAAO,CAACC,IAAI,CAACM,YAAY,CAACG,QAAQ,CACnB,CACT,CACP;SAE3B9C,KAAK,CAACmC,KAAK,CAACC,OAAO,CAACC,IAAI,CAACU,OAAO,CAChB,CACxB;;IAGL,IAAInE,OAAO,EAAE;MACT8C,SAAS,CAACI,IAAI,eACV1B,6BAAC2B,IAAa,CAACC,IAAI;QAACC,IAAI,EAAC,MAAM;QAACC,OAAO,EAAEA,MAAM/B,UAAU,CAAC,MAAM,CAAC;QAAE6C,QAAQ,EAAC;SACvEhD,KAAK,CAACmC,KAAK,CAACC,OAAO,CAACC,IAAI,CAACY,OAAO,QAChB,CACxB;;IAGL,IAAInE,MAAM,IAAIY,SAAS,EAAE;MACrBgC,SAAS,CAACI,IAAI,eACV1B,6BAAC2B,IAAa,CAACC,IAAI;QAACC,IAAI,EAAC,eAAe;QAACC,OAAO,EAAEA,MAAMxC,SAAS,CAACT,KAAK;SAClEA,KAAK,KAAK,CAAC,GACNe,KAAK,CAACmC,KAAK,CAACC,OAAO,CAACC,IAAI,CAACa,iBAAiB,GAC1ClD,KAAK,CAACmC,KAAK,CAACC,OAAO,CAACC,IAAI,CAACc,gBAAgB,CAACC,OAAO,CAAC,SAAS,EAAEC,MAAM,CAACpE,KAAK,GAAG,CAAC,CAAC,CAAC,CACpE,CACxB;MAEDyC,SAAS,CAACI,IAAI,eACV1B,6BAAC2B,IAAa,CAACC,IAAI;QAACC,IAAI,EAAC,iBAAiB;QAACC,OAAO,EAAEA,MAAMxC,SAAS,CAACY,SAAS;SACxEN,KAAK,CAACmC,KAAK,CAACC,OAAO,CAACC,IAAI,CAACiB,eAAe,CACxB,CACxB;;IAEL,IAAI3E,SAAS,IAAIS,YAAY,EAAE;MAC3BsC,SAAS,CAACI,IAAI,eACV1B,6BAAC2B,IAAa,CAACC,IAAI;QAACC,IAAI,EAAE/C,UAAU,GAAG,cAAc,GAAG,QAAQ;QAAEgD,OAAO,EAAEA,MAAM9C,YAAY;SACxFF,UAAU,GAAGc,KAAK,CAACmC,KAAK,CAACC,OAAO,CAACC,IAAI,CAACkB,UAAU,GAAGvD,KAAK,CAACmC,KAAK,CAACC,OAAO,CAACC,IAAI,CAACmB,MAAM,CAClE,CACxB;;IAGL,IAAIxE,UAAU,EAAE;MACZ,MAAMqD,IAAI,GAAGrD,UAAU,CAAC;QAAEyE,OAAO,EAAEnD;OAAW,CAAC;MAC/C,MAAMoD,WAAW,GAAGtD,cAAK,CAACuD,QAAQ,CAACC,OAAO,CAACvB,IAAI,CAAC3D,KAAK,CAACmF,QAAQ,CAACnF,KAAK,CAACmF,QAAQ,CAAkB;MAE/F,IAAIH,WAAW,CAACI,MAAM,EAAE;QACpB,IAAIpC,SAAS,CAACoC,MAAM,EAAE;UAClBpC,SAAS,CAACI,IAAI,eAAC1B,6BAAC2B,IAAa,CAACgC,SAAS,OAAG,CAAC;;QAG/CrC,SAAS,CAACI,IAAI,CAAC,GAAG4B,WAAW,CAAC;;;IAItC,OAAOhC,SAAS,CAACsC,GAAG,CAAC,CAACC,IAAI,EAAEC,GAAG,kBAAK9D,cAAK,CAAC+D,YAAY,CAACF,IAAI,EAAE;MAAEC;KAAK,CAAC,CAAC;GACzE,EAAE,CACCvF,SAAS,EACTC,OAAO,EACPC,OAAO,EACPC,MAAM,EACNC,OAAO,EACPC,UAAU,EACVM,UAAU,EACVM,gBAAgB,EAChBX,KAAK,EACLC,UAAU,EACVa,aAAa,CAChB,CAAC;;EAGF,MAAMqE,SAAS,GAAGC,EAAE;;EAEhB,mCAAmC;;EAEnC,8CAA8C;;EAE9C,sEAAsE;;EAEtE,4DAA4D;;EAE5D,4CAA4C,EAC5C;IACI,gCAAgC,EAAE,CAAC,CAAC9D;GACvC,EACD7B,KAAK,CAAC0F,SAAS,CAClB;EAED,oBACIhE,6BAACkE,UAAU;IACPF,SAAS,EAAEA,SAAS;IACpBnC,IAAI,EAAC,MAAM;IACXI,IAAI,EACA9B,cAAc,GACRD,SAAS,GACTiE,SAAS,mBACLnE,6BAAC2B,IAAa,oBAAKwC,SAAS,gBACxBnE,6BAAC2B,IAAa,CAACyC,OAAO,QAAEhD,eAAe,CAAyB,CACpD,CACnB;IAEXtB,OAAO,EAAEK,cAAc;IACvBkE,cAAc,EAAE7C,KAAK,IAAIA,KAAK,CAAC8C,cAAc;IAC/C;AAEV;;;;"}
|
1
|
+
{"version":3,"file":"Menu.js","sources":["../../../../../../../../../../../src/primitives/Table/Core/components/Header/components/Menu.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'clsx';\nimport { IconButton } from '../../../../../../components/IconButton/IconButton';\nimport { Menu as MenuPrimitive } from '../../../../../../components/Menu/Menu';\nimport { useLocalization } from '../../../../../../components/Provider/Localization';\nimport { GotoPopover } from './Goto';\nimport { TableColumnMenu, TableColumnSortDirection } from '../../../../types';\n\nexport type HeaderMenuProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n canFilter: boolean;\n canGoto: boolean;\n canHide: boolean;\n canPin: boolean;\n canSort: boolean;\n customMenu?: TableColumnMenu;\n index: number;\n isFiltered: boolean;\n onFilter?: () => void;\n onGoto?: (query: string) => Promise<number>;\n onHide?: (event: unknown) => void;\n onPin?: (index: number | undefined) => void;\n onSortToggle?: (sortDirection: TableColumnSortDirection | false) => void;\n scrollToIndex: (index: number) => void;\n setRowActiveIndex: (index: number) => void;\n sortDirection?: TableColumnSortDirection | false;\n};\n\nexport function HeaderMenu(props: HeaderMenuProps) {\n const {\n canFilter,\n canGoto,\n canHide,\n canPin,\n canSort,\n customMenu,\n index,\n isFiltered,\n onFilter: handleFilter,\n onGoto: handleGoto,\n onHide: handleHide,\n onPin: handlePin,\n onSortToggle: handleSortToggle,\n scrollToIndex,\n setRowActiveIndex,\n sortDirection,\n } = props;\n const { texts } = useLocalization();\n const [popover, setPopover] = React.useState<string | undefined>(undefined);\n\n let popoverElement;\n\n if (popover) {\n const handleClosePopover = () => setPopover(undefined);\n\n switch (popover) {\n case 'goto': {\n if (handleGoto) {\n const goto = async (query: string) => {\n try {\n const index = await handleGoto(query);\n setRowActiveIndex(index);\n scrollToIndex(index);\n } catch (e) {\n console.error(e);\n //\n } finally {\n handleClosePopover();\n }\n };\n popoverElement = props => <GotoPopover {...props} open onChange={handleClosePopover} onGoto={goto} />;\n }\n }\n }\n }\n\n const memoedMenuItems = React.useMemo(() => {\n const menuItems: JSX.Element[] = [];\n\n if (canHide && handleHide) {\n // we do this in the next tick, otherwise the menu closes and react throws a \"state update on unmounted component\" error\n const handleClick = event => setTimeout(() => handleHide(event), 1);\n\n menuItems.push(\n <MenuPrimitive.Item icon=\"eye-off\" onClick={handleClick}>\n {texts.table.columns.menu.hideColumn}\n </MenuPrimitive.Item>\n );\n }\n\n if (canSort) {\n menuItems.push(\n <MenuPrimitive.Item\n icon=\"sort-by\"\n subMenu={() => (\n <MenuPrimitive.SubMenu>\n <MenuPrimitive.RadioGroup onChange={handleSortToggle as any} value={sortDirection}>\n <MenuPrimitive.RadioGroup.Item value=\"asc\">\n {texts.table.columns.menu.sortingOrder.ascending}\n </MenuPrimitive.RadioGroup.Item>\n <MenuPrimitive.RadioGroup.Item value=\"desc\">\n {texts.table.columns.menu.sortingOrder.descending}\n </MenuPrimitive.RadioGroup.Item>\n <MenuPrimitive.RadioGroup.Item value={false}>\n {texts.table.columns.menu.sortingOrder.unsorted}\n </MenuPrimitive.RadioGroup.Item>\n </MenuPrimitive.RadioGroup>\n </MenuPrimitive.SubMenu>\n )}>\n {texts.table.columns.menu.sorting}\n </MenuPrimitive.Item>\n );\n }\n\n if (canGoto) {\n menuItems.push(\n <MenuPrimitive.Item icon=\"move\" onClick={() => setPopover('goto')} shortcut=\"g\">\n {texts.table.columns.menu.gotoRow}...\n </MenuPrimitive.Item>\n );\n }\n\n if (canPin && handlePin) {\n menuItems.push(\n <MenuPrimitive.Item icon=\"column-freeze\" onClick={() => handlePin(index)}>\n {index === 0\n ? texts.table.columns.menu.freezeFirstColumn\n : texts.table.columns.menu.freezeUptoColumn.replace('[TOTAL]', String(index + 1))}\n </MenuPrimitive.Item>\n );\n\n menuItems.push(\n <MenuPrimitive.Item icon=\"column-unfreeze\" onClick={() => handlePin(undefined)}>\n {texts.table.columns.menu.unfreezeColumns}\n </MenuPrimitive.Item>\n );\n }\n if (canFilter && handleFilter) {\n menuItems.push(\n <MenuPrimitive.Item icon={isFiltered ? 'filter-solid' : 'filter'} onClick={() => handleFilter()}>\n {isFiltered ? texts.table.columns.menu.editFilter : texts.table.columns.menu.filter}\n </MenuPrimitive.Item>\n );\n }\n\n if (customMenu) {\n const menu = customMenu({ trigger: undefined });\n const customItems = React.Children.toArray(menu.props.children.props.children) as JSX.Element[];\n\n if (customItems.length) {\n if (menuItems.length) {\n menuItems.push(<MenuPrimitive.Separator />);\n }\n\n menuItems.push(...customItems);\n }\n }\n\n return menuItems.map((item, key) => React.cloneElement(item, { key }));\n }, [\n canFilter,\n canGoto,\n canHide,\n canPin,\n canSort,\n customMenu,\n handleGoto,\n handleSortToggle,\n index,\n isFiltered,\n sortDirection,\n ]);\n\n // can't use display: none because the button needs to be focusable\n const className = cn(\n // positioning\n 'justify-end overflow-hidden',\n // sizing\n '!h-6 !w-0 !min-h-[theme(spacing.6)] !min-w-0',\n // visible - hover\n 'group-hover/header:!w-6 group-hover/header:!min-w-[theme(spacing.6)] group-hover/header:-mr-1',\n // visible - expanded\n 'aria-expanded:!w-6 aria-expanded:!min-w-[theme(spacing.6)]',\n // visible - focus\n 'focus:!w-6 focus:!min-w-[theme(spacing.6)]',\n {\n '!w-6 !min-w-[theme(spacing.6)]': !!popoverElement,\n },\n props.className\n );\n\n return (\n <IconButton\n className={className}\n icon=\"more\"\n menu={\n popoverElement\n ? undefined\n : menuProps => (\n <MenuPrimitive {...menuProps}>\n <MenuPrimitive.Content>{memoedMenuItems}</MenuPrimitive.Content>\n </MenuPrimitive>\n )\n }\n popover={popoverElement}\n onClickCapture={event => event.preventDefault()}\n />\n );\n}\n"],"names":["HeaderMenu","props","canFilter","canGoto","canHide","canPin","canSort","customMenu","index","isFiltered","onFilter","handleFilter","onGoto","handleGoto","onHide","handleHide","onPin","handlePin","onSortToggle","handleSortToggle","scrollToIndex","setRowActiveIndex","sortDirection","texts","useLocalization","popover","setPopover","React","useState","undefined","popoverElement","handleClosePopover","goto","query","Promise","resolve","then","e","console","error","_wasThrown","_result","_temp","reject","GotoPopover","open","onChange","memoedMenuItems","useMemo","menuItems","handleClick","event","setTimeout","push","MenuPrimitive","Item","icon","onClick","table","columns","menu","hideColumn","subMenu","SubMenu","RadioGroup","value","sortingOrder","ascending","descending","unsorted","sorting","shortcut","gotoRow","freezeFirstColumn","freezeUptoColumn","replace","String","unfreezeColumns","editFilter","filter","trigger","customItems","Children","toArray","children","length","Separator","map","item","key","cloneElement","className","cn","IconButton","menuProps","Content","onClickCapture","preventDefault"],"mappings":";;;;;;;;SA2BgBA,UAAUA,CAACC,KAAsB;EAC7C,MAAM;IACFC,SAAS;IACTC,OAAO;IACPC,OAAO;IACPC,MAAM;IACNC,OAAO;IACPC,UAAU;IACVC,KAAK;IACLC,UAAU;IACVC,QAAQ,EAAEC,YAAY;IACtBC,MAAM,EAAEC,UAAU;IAClBC,MAAM,EAAEC,UAAU;IAClBC,KAAK,EAAEC,SAAS;IAChBC,YAAY,EAAEC,gBAAgB;IAC9BC,aAAa;IACbC,iBAAiB;IACjBC;GACH,GAAGrB,KAAK;EACT,MAAM;IAAEsB;GAAO,GAAGC,eAAe,EAAE;EACnC,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAGC,cAAK,CAACC,QAAQ,CAAqBC,SAAS,CAAC;EAE3E,IAAIC,cAAc;EAElB,IAAIL,OAAO,EAAE;IACT,MAAMM,kBAAkB,GAAGA,MAAML,UAAU,CAACG,SAAS,CAAC;IAEtD,QAAQJ,OAAO;MACX,KAAK,MAAM;QAAE;UACT,IAAIZ,UAAU,EAAE;YACZ,MAAMmB,IAAI,aAAUC,KAAa;cAAA;;4CACzB;oBAAA,OAAAC,OAAA,CAAAC,OAAA,CACoBtB,UAAU,CAACoB,KAAK,CAAC,EAAAG,IAAA,WAA/B5B,KAAK;sBACXa,iBAAiB,CAACb,KAAK,CAAC;sBACxBY,aAAa,CAACZ,KAAK,CAAC;;mBACvB,YAAQ6B,CAAC,EAAE;oBACRC,OAAO,CAACC,KAAK,CAACF,CAAC,CAAC;;mBAEnB;6BAAAG,UAAA,EAAAC,OAAA;kBACGV,kBAAkB,EAAE;kBAAC,IAAAS,UAAA,QAAAC,OAAA;kBAAA,OAAAA,OAAA;;gBAAA,OAAAP,OAAA,CAAAC,OAAA,CAAAO,KAAA,IAAAA,KAAA,CAAAN,IAAA,GAAAM,KAAA,CAAAN,IAAA;eAE5B,QAAAC,CAAA;gBAAA,OAAAH,OAAA,CAAAS,MAAA,CAAAN,CAAA;;;YACDP,cAAc,GAAG7B,KAAK,iBAAI0B,6BAACiB,WAAW,oBAAK3C,KAAK;cAAE4C,IAAI;cAACC,QAAQ,EAAEf,kBAAkB;cAAEnB,MAAM,EAAEoB;eAAQ;;;;;EAMrH,MAAMe,eAAe,GAAGpB,cAAK,CAACqB,OAAO,CAAC;IAClC,MAAMC,SAAS,GAAkB,EAAE;IAEnC,IAAI7C,OAAO,IAAIW,UAAU,EAAE;;MAEvB,MAAMmC,WAAW,GAAGC,KAAK,IAAIC,UAAU,CAAC,MAAMrC,UAAU,CAACoC,KAAK,CAAC,EAAE,CAAC,CAAC;MAEnEF,SAAS,CAACI,IAAI,eACV1B,6BAAC2B,IAAa,CAACC,IAAI;QAACC,IAAI,EAAC,SAAS;QAACC,OAAO,EAAEP;SACvC3B,KAAK,CAACmC,KAAK,CAACC,OAAO,CAACC,IAAI,CAACC,UAAU,CACnB,CACxB;;IAGL,IAAIvD,OAAO,EAAE;MACT2C,SAAS,CAACI,IAAI,eACV1B,6BAAC2B,IAAa,CAACC,IAAI;QACfC,IAAI,EAAC,SAAS;QACdM,OAAO,EAAEA,qBACLnC,6BAAC2B,IAAa,CAACS,OAAO,qBAClBpC,6BAAC2B,IAAa,CAACU,UAAU;UAAClB,QAAQ,EAAE3B,gBAAuB;UAAE8C,KAAK,EAAE3C;wBAChEK,6BAAC2B,IAAa,CAACU,UAAU,CAACT,IAAI;UAACU,KAAK,EAAC;WAChC1C,KAAK,CAACmC,KAAK,CAACC,OAAO,CAACC,IAAI,CAACM,YAAY,CAACC,SAAS,CACpB,eAChCxC,6BAAC2B,IAAa,CAACU,UAAU,CAACT,IAAI;UAACU,KAAK,EAAC;WAChC1C,KAAK,CAACmC,KAAK,CAACC,OAAO,CAACC,IAAI,CAACM,YAAY,CAACE,UAAU,CACrB,eAChCzC,6BAAC2B,IAAa,CAACU,UAAU,CAACT,IAAI;UAACU,KAAK,EAAE;WACjC1C,KAAK,CAACmC,KAAK,CAACC,OAAO,CAACC,IAAI,CAACM,YAAY,CAACG,QAAQ,CACnB,CACT,CACP;SAE3B9C,KAAK,CAACmC,KAAK,CAACC,OAAO,CAACC,IAAI,CAACU,OAAO,CAChB,CACxB;;IAGL,IAAInE,OAAO,EAAE;MACT8C,SAAS,CAACI,IAAI,eACV1B,6BAAC2B,IAAa,CAACC,IAAI;QAACC,IAAI,EAAC,MAAM;QAACC,OAAO,EAAEA,MAAM/B,UAAU,CAAC,MAAM,CAAC;QAAE6C,QAAQ,EAAC;SACvEhD,KAAK,CAACmC,KAAK,CAACC,OAAO,CAACC,IAAI,CAACY,OAAO,QAChB,CACxB;;IAGL,IAAInE,MAAM,IAAIY,SAAS,EAAE;MACrBgC,SAAS,CAACI,IAAI,eACV1B,6BAAC2B,IAAa,CAACC,IAAI;QAACC,IAAI,EAAC,eAAe;QAACC,OAAO,EAAEA,MAAMxC,SAAS,CAACT,KAAK;SAClEA,KAAK,KAAK,CAAC,GACNe,KAAK,CAACmC,KAAK,CAACC,OAAO,CAACC,IAAI,CAACa,iBAAiB,GAC1ClD,KAAK,CAACmC,KAAK,CAACC,OAAO,CAACC,IAAI,CAACc,gBAAgB,CAACC,OAAO,CAAC,SAAS,EAAEC,MAAM,CAACpE,KAAK,GAAG,CAAC,CAAC,CAAC,CACpE,CACxB;MAEDyC,SAAS,CAACI,IAAI,eACV1B,6BAAC2B,IAAa,CAACC,IAAI;QAACC,IAAI,EAAC,iBAAiB;QAACC,OAAO,EAAEA,MAAMxC,SAAS,CAACY,SAAS;SACxEN,KAAK,CAACmC,KAAK,CAACC,OAAO,CAACC,IAAI,CAACiB,eAAe,CACxB,CACxB;;IAEL,IAAI3E,SAAS,IAAIS,YAAY,EAAE;MAC3BsC,SAAS,CAACI,IAAI,eACV1B,6BAAC2B,IAAa,CAACC,IAAI;QAACC,IAAI,EAAE/C,UAAU,GAAG,cAAc,GAAG,QAAQ;QAAEgD,OAAO,EAAEA,MAAM9C,YAAY;SACxFF,UAAU,GAAGc,KAAK,CAACmC,KAAK,CAACC,OAAO,CAACC,IAAI,CAACkB,UAAU,GAAGvD,KAAK,CAACmC,KAAK,CAACC,OAAO,CAACC,IAAI,CAACmB,MAAM,CAClE,CACxB;;IAGL,IAAIxE,UAAU,EAAE;MACZ,MAAMqD,IAAI,GAAGrD,UAAU,CAAC;QAAEyE,OAAO,EAAEnD;OAAW,CAAC;MAC/C,MAAMoD,WAAW,GAAGtD,cAAK,CAACuD,QAAQ,CAACC,OAAO,CAACvB,IAAI,CAAC3D,KAAK,CAACmF,QAAQ,CAACnF,KAAK,CAACmF,QAAQ,CAAkB;MAE/F,IAAIH,WAAW,CAACI,MAAM,EAAE;QACpB,IAAIpC,SAAS,CAACoC,MAAM,EAAE;UAClBpC,SAAS,CAACI,IAAI,eAAC1B,6BAAC2B,IAAa,CAACgC,SAAS,OAAG,CAAC;;QAG/CrC,SAAS,CAACI,IAAI,CAAC,GAAG4B,WAAW,CAAC;;;IAItC,OAAOhC,SAAS,CAACsC,GAAG,CAAC,CAACC,IAAI,EAAEC,GAAG,kBAAK9D,cAAK,CAAC+D,YAAY,CAACF,IAAI,EAAE;MAAEC;KAAK,CAAC,CAAC;GACzE,EAAE,CACCvF,SAAS,EACTC,OAAO,EACPC,OAAO,EACPC,MAAM,EACNC,OAAO,EACPC,UAAU,EACVM,UAAU,EACVM,gBAAgB,EAChBX,KAAK,EACLC,UAAU,EACVa,aAAa,CAChB,CAAC;;EAGF,MAAMqE,SAAS,GAAGC,EAAE;;EAEhB,6BAA6B;;EAE7B,8CAA8C;;EAE9C,+FAA+F;;EAE/F,4DAA4D;;EAE5D,4CAA4C,EAC5C;IACI,gCAAgC,EAAE,CAAC,CAAC9D;GACvC,EACD7B,KAAK,CAAC0F,SAAS,CAClB;EAED,oBACIhE,6BAACkE,UAAU;IACPF,SAAS,EAAEA,SAAS;IACpBnC,IAAI,EAAC,MAAM;IACXI,IAAI,EACA9B,cAAc,GACRD,SAAS,GACTiE,SAAS,mBACLnE,6BAAC2B,IAAa,oBAAKwC,SAAS,gBACxBnE,6BAAC2B,IAAa,CAACyC,OAAO,QAAEhD,eAAe,CAAyB,CACpD,CACnB;IAEXtB,OAAO,EAAEK,cAAc;IACvBkE,cAAc,EAAE7C,KAAK,IAAIA,KAAK,CAAC8C,cAAc;IAC/C;AAEV;;;;"}
|
@@ -1,18 +1,27 @@
|
|
1
|
-
import
|
2
|
-
import {
|
3
|
-
import { useStylesheetColumnFreezing } from './useStylesheetColumnFreezing.js';
|
1
|
+
import { useTableStyleGrid } from './useTableStyleGrid.js';
|
2
|
+
import { useTableStyleColumnFreezing } from './useTableStyleColumnFreezing.js';
|
4
3
|
|
5
|
-
function
|
4
|
+
function useTableStyle(tableId, table) {
|
6
5
|
const tableMeta = table.options.meta;
|
7
|
-
const
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
const
|
15
|
-
|
6
|
+
const {
|
7
|
+
style: cssGridStyle,
|
8
|
+
stylesheet: cssGridStylesheet
|
9
|
+
} = useTableStyleGrid(tableId, table, tableMeta.fontSize.size);
|
10
|
+
const {
|
11
|
+
stylesheet: columnFreezingStylesheet
|
12
|
+
} = useTableStyleColumnFreezing(tableId, table);
|
13
|
+
const style = {
|
14
|
+
// css vars required by children of table
|
15
|
+
'--table-header-group-depth': table.getHeaderGroups().length,
|
16
|
+
'--table-cell-padding-x': getCellWidthPadding(tableMeta.fontSize.size),
|
17
|
+
'--table-cell-padding-y': getCellHeightPadding(tableMeta.rowHeight.height, tableMeta.fontSize.size),
|
18
|
+
...cssGridStyle
|
19
|
+
};
|
20
|
+
const stylesheet = [cssGridStylesheet, columnFreezingStylesheet].filter(s => !!s).join('\n');
|
21
|
+
return {
|
22
|
+
style,
|
23
|
+
stylesheet
|
24
|
+
};
|
16
25
|
}
|
17
26
|
// we cannot just use a fixed height because our rows need to grow in height (images, edit mode validation etc)
|
18
27
|
function getCellHeightPadding(height, fontSize) {
|
@@ -73,5 +82,5 @@ function getCellWidthPadding(fontSize) {
|
|
73
82
|
}
|
74
83
|
}
|
75
84
|
|
76
|
-
export {
|
77
|
-
//# sourceMappingURL=
|
85
|
+
export { useTableStyle };
|
86
|
+
//# sourceMappingURL=useTableStyle.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useTableStyle.js","sources":["../../../../../../../../../src/primitives/Table/Core/features/useTableStyle.tsx"],"sourcesContent":["import { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport { useTableStyleGrid } from './useTableStyleGrid';\nimport { useTableStyleColumnFreezing } from './useTableStyleColumnFreezing';\nimport { TableFontSize, TableRowHeight } from '../../types';\n\nexport function useTableStyle<TType = unknown>(tableId: string, table: ReactTable<TType>) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const { style: cssGridStyle, stylesheet: cssGridStylesheet } = useTableStyleGrid<TType>(\n tableId,\n table,\n tableMeta.fontSize.size\n );\n const { stylesheet: columnFreezingStylesheet } = useTableStyleColumnFreezing(tableId, table);\n\n const style = {\n // css vars required by children of table\n '--table-header-group-depth': table.getHeaderGroups().length,\n '--table-cell-padding-x': getCellWidthPadding(tableMeta.fontSize.size),\n '--table-cell-padding-y': getCellHeightPadding(tableMeta.rowHeight.height, tableMeta.fontSize.size),\n ...cssGridStyle,\n };\n\n const stylesheet = [cssGridStylesheet, columnFreezingStylesheet].filter(s => !!s).join('\\n');\n\n return { style, stylesheet };\n}\n\n// we cannot just use a fixed height because our rows need to grow in height (images, edit mode validation etc)\nfunction getCellHeightPadding(height: TableRowHeight, fontSize: TableFontSize) {\n // TODO: can we get the rem values from tailwind\n switch (height) {\n case 'short': {\n switch (fontSize) {\n case 'small':\n return '8px';\n\n default:\n return '6px';\n }\n }\n\n case 'tall': {\n switch (fontSize) {\n case 'small':\n return '16px';\n\n case 'large':\n return '12px';\n\n default:\n return '14px';\n }\n }\n\n case 'extra-tall': {\n switch (fontSize) {\n case 'small':\n return '22px';\n\n case 'large':\n return '18px';\n\n default:\n return '20px';\n }\n }\n\n default: {\n switch (fontSize) {\n case 'small':\n return '12px';\n\n case 'large':\n return '8px';\n\n default:\n return '10px';\n }\n }\n }\n}\n\nfunction getCellWidthPadding(fontSize: TableFontSize) {\n switch (fontSize) {\n case 'small':\n return '8px';\n\n case 'medium':\n return '12px';\n\n default:\n return '16px';\n }\n}\n"],"names":["useTableStyle","tableId","table","tableMeta","options","meta","style","cssGridStyle","stylesheet","cssGridStylesheet","useTableStyleGrid","fontSize","size","columnFreezingStylesheet","useTableStyleColumnFreezing","getHeaderGroups","length","getCellWidthPadding","getCellHeightPadding","rowHeight","height","filter","s","join"],"mappings":";;;SAKgBA,aAAaA,CAAkBC,OAAe,EAAEC,KAAwB;EACpF,MAAMC,SAAS,GAAGD,KAAK,CAACE,OAAO,CAACC,IAA6B;EAC7D,MAAM;IAAEC,KAAK,EAAEC,YAAY;IAAEC,UAAU,EAAEC;GAAmB,GAAGC,iBAAiB,CAC5ET,OAAO,EACPC,KAAK,EACLC,SAAS,CAACQ,QAAQ,CAACC,IAAI,CAC1B;EACD,MAAM;IAAEJ,UAAU,EAAEK;GAA0B,GAAGC,2BAA2B,CAACb,OAAO,EAAEC,KAAK,CAAC;EAE5F,MAAMI,KAAK,GAAG;;IAEV,4BAA4B,EAAEJ,KAAK,CAACa,eAAe,EAAE,CAACC,MAAM;IAC5D,wBAAwB,EAAEC,mBAAmB,CAACd,SAAS,CAACQ,QAAQ,CAACC,IAAI,CAAC;IACtE,wBAAwB,EAAEM,oBAAoB,CAACf,SAAS,CAACgB,SAAS,CAACC,MAAM,EAAEjB,SAAS,CAACQ,QAAQ,CAACC,IAAI,CAAC;IACnG,GAAGL;GACN;EAED,MAAMC,UAAU,GAAG,CAACC,iBAAiB,EAAEI,wBAAwB,CAAC,CAACQ,MAAM,CAACC,CAAC,IAAI,CAAC,CAACA,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;EAE5F,OAAO;IAAEjB,KAAK;IAAEE;GAAY;AAChC;AAEA;AACA,SAASU,oBAAoBA,CAACE,MAAsB,EAAET,QAAuB;;EAEzE,QAAQS,MAAM;IACV,KAAK,OAAO;MAAE;QACV,QAAQT,QAAQ;UACZ,KAAK,OAAO;YACR,OAAO,KAAK;UAEhB;YACI,OAAO,KAAK;;;IAIxB,KAAK,MAAM;MAAE;QACT,QAAQA,QAAQ;UACZ,KAAK,OAAO;YACR,OAAO,MAAM;UAEjB,KAAK,OAAO;YACR,OAAO,MAAM;UAEjB;YACI,OAAO,MAAM;;;IAIzB,KAAK,YAAY;MAAE;QACf,QAAQA,QAAQ;UACZ,KAAK,OAAO;YACR,OAAO,MAAM;UAEjB,KAAK,OAAO;YACR,OAAO,MAAM;UAEjB;YACI,OAAO,MAAM;;;IAIzB;MAAS;QACL,QAAQA,QAAQ;UACZ,KAAK,OAAO;YACR,OAAO,MAAM;UAEjB,KAAK,OAAO;YACR,OAAO,KAAK;UAEhB;YACI,OAAO,MAAM;;;;AAIjC;AAEA,SAASM,mBAAmBA,CAACN,QAAuB;EAChD,QAAQA,QAAQ;IACZ,KAAK,OAAO;MACR,OAAO,KAAK;IAEhB,KAAK,QAAQ;MACT,OAAO,MAAM;IAEjB;MACI,OAAO,MAAM;;AAEzB;;;;"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import React__default from 'react';
|
2
2
|
|
3
|
-
function
|
3
|
+
function useTableStyleColumnFreezing(tableId, table) {
|
4
4
|
const {
|
5
5
|
columnPinning
|
6
6
|
} = table.getState();
|
@@ -37,8 +37,10 @@ function useStylesheetColumnFreezing(tableId, table) {
|
|
37
37
|
}
|
38
38
|
return styles.join('\n');
|
39
39
|
}, [columnPinning]);
|
40
|
-
return
|
40
|
+
return {
|
41
|
+
stylesheet
|
42
|
+
};
|
41
43
|
}
|
42
44
|
|
43
|
-
export {
|
44
|
-
//# sourceMappingURL=
|
45
|
+
export { useTableStyleColumnFreezing };
|
46
|
+
//# sourceMappingURL=useTableStyleColumnFreezing.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"
|
1
|
+
{"version":3,"file":"useTableStyleColumnFreezing.js","sources":["../../../../../../../../../src/primitives/Table/Core/features/useTableStyleColumnFreezing.ts"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable } from '@tanstack/react-table';\n\nexport function useTableStyleColumnFreezing<TType = unknown>(tableId: string, table: ReactTable<TType>) {\n const { columnPinning } = table.getState();\n\n const stylesheet = React.useMemo(() => {\n const styles: string[] = [];\n\n // might be a better way to get this information, but it wasn't obvious\n const all = table\n .getFlatHeaders()\n .filter(column => !column.subHeaders.length)\n .map(x => x.id);\n const left = table\n .getLeftFlatHeaders()\n .filter(column => !column.subHeaders.length)\n .map(x => x.id);\n const right = table\n .getRightFlatHeaders()\n .filter(column => !column.subHeaders.length)\n .map(x => x.id);\n\n if (left.length) {\n const index = all.indexOf(left[left.length - 1]);\n\n // add right border, hide the header seperator and add shadow when scrolled\n // we have to be specific so that nested tables don't inherit the same css\n styles.push(`table[data-taco^='table']#${tableId} > thead > tr > th:nth-child(${index + 1}),\n table[data-taco^='table']#${tableId} > tbody > tr > td:nth-child(${index + 1}) {\n border-right-width: 1px;\n }\\ntable[data-taco^='table']#${tableId} > thead > tr > th:nth-child(${index + 1})[data-cell-id^=\"__\"],\n table[data-taco^='table']#${tableId} > tbody > tr > td:nth-child(${index + 1})[data-cell-id^=\"__\"] {\n border-right-color: transparent;\n }\\ntable[data-taco^='table']#${tableId} > thead > tr > th:nth-child(${index + 1}):after {\n content: none;\n }\\ntable[data-taco^='table'][data-table-horizontally-scrolled=\"true\"]#${tableId} > thead > tr > th:nth-child(${\n index + 1\n }),\n table[data-taco^='table'][data-table-horizontally-scrolled=\"true\"]#${tableId} > tbody > tr > td:nth-child(${\n index + 1\n }) {\n border-right-color: rgb(221, 221, 221);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), 6px 0px 6px rgb(0 0 0/8%);\n }`);\n }\n\n if (right.length) {\n const index = all.indexOf(right[right.length - 1]);\n\n styles.push(`table[data-taco^='table']#${tableId} > thead > tr > th:nth-child(${index + 1}):not([data-cell-id^=\"__\"]),\n table[data-taco^='table']#${tableId} > tbody > tr > td:nth-child(${index + 1}):not([data-cell-id^=\"__\"]) {\n border-left-width: 1px;\n }`);\n }\n\n return styles.join('\\n');\n }, [columnPinning]);\n\n return { stylesheet };\n}\n"],"names":["useTableStyleColumnFreezing","tableId","table","columnPinning","getState","stylesheet","React","useMemo","styles","all","getFlatHeaders","filter","column","subHeaders","length","map","x","id","left","getLeftFlatHeaders","right","getRightFlatHeaders","index","indexOf","push","join"],"mappings":";;SAGgBA,2BAA2BA,CAAkBC,OAAe,EAAEC,KAAwB;EAClG,MAAM;IAAEC;GAAe,GAAGD,KAAK,CAACE,QAAQ,EAAE;EAE1C,MAAMC,UAAU,GAAGC,cAAK,CAACC,OAAO,CAAC;IAC7B,MAAMC,MAAM,GAAa,EAAE;;IAG3B,MAAMC,GAAG,GAAGP,KAAK,CACZQ,cAAc,EAAE,CAChBC,MAAM,CAACC,MAAM,IAAI,CAACA,MAAM,CAACC,UAAU,CAACC,MAAM,CAAC,CAC3CC,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,EAAE,CAAC;IACnB,MAAMC,IAAI,GAAGhB,KAAK,CACbiB,kBAAkB,EAAE,CACpBR,MAAM,CAACC,MAAM,IAAI,CAACA,MAAM,CAACC,UAAU,CAACC,MAAM,CAAC,CAC3CC,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,EAAE,CAAC;IACnB,MAAMG,KAAK,GAAGlB,KAAK,CACdmB,mBAAmB,EAAE,CACrBV,MAAM,CAACC,MAAM,IAAI,CAACA,MAAM,CAACC,UAAU,CAACC,MAAM,CAAC,CAC3CC,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,EAAE,CAAC;IAEnB,IAAIC,IAAI,CAACJ,MAAM,EAAE;MACb,MAAMQ,KAAK,GAAGb,GAAG,CAACc,OAAO,CAACL,IAAI,CAACA,IAAI,CAACJ,MAAM,GAAG,CAAC,CAAC,CAAC;;;MAIhDN,MAAM,CAACgB,IAAI,8BAA8BvB,uCAAuCqB,KAAK,GAAG;4CACxDrB,wCAAwCqB,KAAK,GAAG;;+CAE7CrB,wCAAwCqB,KAAK,GAAG;4CACnDrB,wCAAwCqB,KAAK,GAAG;;+CAE7CrB,wCAAwCqB,KAAK,GAAG;;wFAEPrB,wCACxEqB,KAAK,GAAG;qFAE6DrB,wCACrEqB,KAAK,GAAG;;;kBAIN,CAAC;;IAGX,IAAIF,KAAK,CAACN,MAAM,EAAE;MACd,MAAMQ,KAAK,GAAGb,GAAG,CAACc,OAAO,CAACH,KAAK,CAACA,KAAK,CAACN,MAAM,GAAG,CAAC,CAAC,CAAC;MAElDN,MAAM,CAACgB,IAAI,8BAA8BvB,uCAAuCqB,KAAK,GAAG;4CACxDrB,uCAAuCqB,KAAK,GAAG;;kBAEzE,CAAC;;IAGX,OAAOd,MAAM,CAACiB,IAAI,CAAC,IAAI,CAAC;GAC3B,EAAE,CAACtB,aAAa,CAAC,CAAC;EAEnB,OAAO;IAAEE;GAAY;AACzB;;;;"}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import React__default from 'react';
|
2
2
|
import { getCellMinWidth } from '../../useTableManager/util/columns.js';
|
3
3
|
|
4
|
-
function
|
4
|
+
function useTableStyleGrid(tableId, table, fontSize) {
|
5
5
|
const tableMeta = table.options.meta;
|
6
6
|
const allVisibleColumns = table.getVisibleLeafColumns();
|
7
7
|
const columnSizing = table.getState().columnSizing;
|
@@ -49,10 +49,17 @@ function useStylesheetCssGrid(tableId, table, fontSize) {
|
|
49
49
|
}, '');
|
50
50
|
// we have to be specific so that nested tables don't inherit the same css
|
51
51
|
const hiddenColumns = printHiddenColumns.map(id => `table[data-taco^='table']#${tableId} > thead > tr > th[data-cell-id='${id}']\n,table[data-taco^='table']#${tableId} > tbody > tr > td[data-cell-id='${id}']\n`).join(',');
|
52
|
-
|
53
|
-
|
52
|
+
const style = {
|
53
|
+
gridTemplateColumns,
|
54
|
+
gridTemplateRows
|
55
|
+
};
|
56
|
+
const stylesheet = `@media print { table[data-taco^='table']#${tableId} { grid-template-columns: ${printGridTemplateColumns}; } ${hiddenColumns ? `${hiddenColumns} { display: none; }` : ''}}`;
|
57
|
+
return {
|
58
|
+
style,
|
59
|
+
stylesheet
|
60
|
+
};
|
54
61
|
}, [allVisibleColumns, columnSizing, globalMinSize, tableMeta.rowActions.rowActionsLength]);
|
55
62
|
}
|
56
63
|
|
57
|
-
export {
|
58
|
-
//# sourceMappingURL=
|
64
|
+
export { useTableStyleGrid };
|
65
|
+
//# sourceMappingURL=useTableStyleGrid.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useTableStyleGrid.js","sources":["../../../../../../../../../src/primitives/Table/Core/features/useTableStyleGrid.ts"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport { TableFontSize } from '../../types';\nimport { getCellMinWidth } from '../../useTableManager/util/columns';\n\nexport function useTableStyleGrid<TType = unknown>(tableId: string, table: ReactTable<TType>, fontSize: TableFontSize) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const allVisibleColumns = table.getVisibleLeafColumns();\n const columnSizing = table.getState().columnSizing;\n const globalMinSize = getCellMinWidth(fontSize);\n\n // header body ?footer\n const gridTemplateRows = table.getRowModel().rows.length ? 'min-content 1fr min-content' : 'min-content 1fr';\n\n return React.useMemo(() => {\n let printGridTemplateColumns = '';\n const printHiddenColumns: string[] = [];\n\n const gridTemplateColumns = allVisibleColumns.reduce((accum, column, index) => {\n if (table.options.enableGrouping && column.getIsGrouped()) {\n return accum;\n }\n\n const minSize = column.columnDef.minSize ?? globalMinSize;\n const width = columnSizing[column.id] as number | 'grow';\n\n let size;\n let printSize;\n\n if (column.id === '__actions') {\n const minWidth = tableMeta.rowActions.rowActionsLength * 32 + 8; /* button margins l+r */\n size = `minmax(${minWidth}px, auto)`;\n } else if (width !== undefined) {\n const isLastColumn = index === allVisibleColumns.length - 1;\n\n if (width === 'grow' || (Number.isNaN(width) && !isLastColumn)) {\n size = `minmax(max-content, 1fr)`;\n } else {\n const minWidth = width < minSize ? minSize : width;\n\n if (isLastColumn) {\n size = `minmax(${minWidth}px, auto)`;\n } else {\n size = `${minWidth}px`;\n }\n }\n } else {\n size = `minmax(max-content, auto)`;\n }\n\n if (column.columnDef.meta?.enablePrinting === false) {\n printSize = '';\n printHiddenColumns.push(column.id);\n } else {\n printSize = 'auto';\n }\n\n printGridTemplateColumns = `${printGridTemplateColumns} ${printSize}`.trim();\n\n return `${accum} ${size}`.trim();\n }, '');\n\n // we have to be specific so that nested tables don't inherit the same css\n const hiddenColumns = printHiddenColumns\n .map(\n id =>\n `table[data-taco^='table']#${tableId} > thead > tr > th[data-cell-id='${id}']\\n,table[data-taco^='table']#${tableId} > tbody > tr > td[data-cell-id='${id}']\\n`\n )\n .join(',');\n\n const style: React.CSSProperties = {\n gridTemplateColumns,\n gridTemplateRows,\n };\n\n const stylesheet = `@media print { table[data-taco^='table']#${tableId} { grid-template-columns: ${printGridTemplateColumns}; } ${\n hiddenColumns ? `${hiddenColumns} { display: none; }` : ''\n }}`;\n\n return { style, stylesheet };\n }, [allVisibleColumns, columnSizing, globalMinSize, tableMeta.rowActions.rowActionsLength]);\n}\n"],"names":["useTableStyleGrid","tableId","table","fontSize","tableMeta","options","meta","allVisibleColumns","getVisibleLeafColumns","columnSizing","getState","globalMinSize","getCellMinWidth","gridTemplateRows","getRowModel","rows","length","React","useMemo","printGridTemplateColumns","printHiddenColumns","gridTemplateColumns","reduce","accum","column","index","enableGrouping","getIsGrouped","minSize","_column$columnDef$min","columnDef","width","id","size","printSize","minWidth","rowActions","rowActionsLength","undefined","isLastColumn","Number","isNaN","_column$columnDef$met","enablePrinting","push","trim","hiddenColumns","map","join","style","stylesheet"],"mappings":";;;SAKgBA,iBAAiBA,CAAkBC,OAAe,EAAEC,KAAwB,EAAEC,QAAuB;EACjH,MAAMC,SAAS,GAAGF,KAAK,CAACG,OAAO,CAACC,IAA6B;EAC7D,MAAMC,iBAAiB,GAAGL,KAAK,CAACM,qBAAqB,EAAE;EACvD,MAAMC,YAAY,GAAGP,KAAK,CAACQ,QAAQ,EAAE,CAACD,YAAY;EAClD,MAAME,aAAa,GAAGC,eAAe,CAACT,QAAQ,CAAC;;EAG/C,MAAMU,gBAAgB,GAAGX,KAAK,CAACY,WAAW,EAAE,CAACC,IAAI,CAACC,MAAM,GAAG,6BAA6B,GAAG,iBAAiB;EAE5G,OAAOC,cAAK,CAACC,OAAO,CAAC;IACjB,IAAIC,wBAAwB,GAAG,EAAE;IACjC,MAAMC,kBAAkB,GAAa,EAAE;IAEvC,MAAMC,mBAAmB,GAAGd,iBAAiB,CAACe,MAAM,CAAC,CAACC,KAAK,EAAEC,MAAM,EAAEC,KAAK;;MACtE,IAAIvB,KAAK,CAACG,OAAO,CAACqB,cAAc,IAAIF,MAAM,CAACG,YAAY,EAAE,EAAE;QACvD,OAAOJ,KAAK;;MAGhB,MAAMK,OAAO,IAAAC,qBAAA,GAAGL,MAAM,CAACM,SAAS,CAACF,OAAO,cAAAC,qBAAA,cAAAA,qBAAA,GAAIlB,aAAa;MACzD,MAAMoB,KAAK,GAAGtB,YAAY,CAACe,MAAM,CAACQ,EAAE,CAAoB;MAExD,IAAIC,IAAI;MACR,IAAIC,SAAS;MAEb,IAAIV,MAAM,CAACQ,EAAE,KAAK,WAAW,EAAE;QAC3B,MAAMG,QAAQ,GAAG/B,SAAS,CAACgC,UAAU,CAACC,gBAAgB,GAAG,EAAE,GAAG,CAAC,CAAC;QAChEJ,IAAI,aAAaE,mBAAmB;OACvC,MAAM,IAAIJ,KAAK,KAAKO,SAAS,EAAE;QAC5B,MAAMC,YAAY,GAAGd,KAAK,KAAKlB,iBAAiB,CAACS,MAAM,GAAG,CAAC;QAE3D,IAAIe,KAAK,KAAK,MAAM,IAAKS,MAAM,CAACC,KAAK,CAACV,KAAK,CAAC,IAAI,CAACQ,YAAa,EAAE;UAC5DN,IAAI,6BAA6B;SACpC,MAAM;UACH,MAAME,QAAQ,GAAGJ,KAAK,GAAGH,OAAO,GAAGA,OAAO,GAAGG,KAAK;UAElD,IAAIQ,YAAY,EAAE;YACdN,IAAI,aAAaE,mBAAmB;WACvC,MAAM;YACHF,IAAI,MAAME,YAAY;;;OAGjC,MAAM;QACHF,IAAI,8BAA8B;;MAGtC,IAAI,EAAAS,qBAAA,GAAAlB,MAAM,CAACM,SAAS,CAACxB,IAAI,cAAAoC,qBAAA,uBAArBA,qBAAA,CAAuBC,cAAc,MAAK,KAAK,EAAE;QACjDT,SAAS,GAAG,EAAE;QACdd,kBAAkB,CAACwB,IAAI,CAACpB,MAAM,CAACQ,EAAE,CAAC;OACrC,MAAM;QACHE,SAAS,GAAG,MAAM;;MAGtBf,wBAAwB,MAAMA,4BAA4Be,WAAW,CAACW,IAAI,EAAE;MAE5E,UAAUtB,SAASU,MAAM,CAACY,IAAI,EAAE;KACnC,EAAE,EAAE,CAAC;;IAGN,MAAMC,aAAa,GAAG1B,kBAAkB,CACnC2B,GAAG,CACAf,EAAE,iCAC+B/B,2CAA2C+B,oCAAoC/B,2CAA2C+B,QAAQ,CACtK,CACAgB,IAAI,CAAC,GAAG,CAAC;IAEd,MAAMC,KAAK,GAAwB;MAC/B5B,mBAAmB;MACnBR;KACH;IAED,MAAMqC,UAAU,+CAA+CjD,oCAAoCkB,+BAC/F2B,aAAa,MAAMA,kCAAkC,GAAG,KACzD;IAEH,OAAO;MAAEG,KAAK;MAAEC;KAAY;GAC/B,EAAE,CAAC3C,iBAAiB,EAAEE,YAAY,EAAEE,aAAa,EAAEP,SAAS,CAACgC,UAAU,CAACC,gBAAgB,CAAC,CAAC;AAC/F;;;;"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { useMergedRef } from '../../../hooks/useMergedRef.js';
|
2
2
|
import { useTableManager } from '../useTableManager/useTableManager.js';
|
3
|
-
import {
|
3
|
+
import { useTableStyle } from './features/useTableStyle.js';
|
4
4
|
import { useTableGlobalShortcuts } from './features/useTableGlobalShortcuts.js';
|
5
5
|
import { useTableRef } from './features/useTableRef.js';
|
6
6
|
import { useTableRenderer } from './features/useTableRenderer.js';
|
@@ -24,7 +24,10 @@ function useTable(props, externalRef, renderers, meta) {
|
|
24
24
|
// configure the virtualised renderer
|
25
25
|
const renderer = useTableRenderer(renderers, manager.instance, ref, props.defaultRowActiveIndex);
|
26
26
|
// configure dynamic styling
|
27
|
-
const
|
27
|
+
const {
|
28
|
+
style,
|
29
|
+
stylesheet
|
30
|
+
} = useTableStyle(manager.id, manager.instance);
|
28
31
|
// configure global keyboard shortcuts
|
29
32
|
useTableGlobalShortcuts(manager.instance, ref, renderer.scrollToIndex);
|
30
33
|
// augment the ref with some helper functions
|
@@ -41,6 +44,7 @@ function useTable(props, externalRef, renderers, meta) {
|
|
41
44
|
toolbarRight: props.toolbarRight
|
42
45
|
},
|
43
46
|
renderer,
|
47
|
+
style,
|
44
48
|
stylesheet,
|
45
49
|
ref
|
46
50
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useTable.js","sources":["../../../../../../../../src/primitives/Table/Core/useTable.ts"],"sourcesContent":["import { Table as ReactTable, TableMeta as ReactTableMeta, TableState as ReactTableState } from '@tanstack/react-table';\nimport { ScrollToOptions as ReactVirtualScrollToOptions } from '@tanstack/react-virtual';\nimport { useMergedRef } from '../../../hooks/useMergedRef';\nimport { TableCustomSettingsRenderer, TableEmptyStateRenderer, TableProps } from '../types';\nimport { useTableManager } from '../useTableManager/useTableManager';\nimport {
|
1
|
+
{"version":3,"file":"useTable.js","sources":["../../../../../../../../src/primitives/Table/Core/useTable.ts"],"sourcesContent":["import { Table as ReactTable, TableMeta as ReactTableMeta, TableState as ReactTableState } from '@tanstack/react-table';\nimport { ScrollToOptions as ReactVirtualScrollToOptions } from '@tanstack/react-virtual';\nimport { useMergedRef } from '../../../hooks/useMergedRef';\nimport { TableCustomSettingsRenderer, TableEmptyStateRenderer, TableProps } from '../types';\nimport { useTableManager } from '../useTableManager/useTableManager';\nimport { useTableStyle } from './features/useTableStyle';\nimport { useTableGlobalShortcuts } from './features/useTableGlobalShortcuts';\nimport { useTableRef } from './features/useTableRef';\nimport { useTableRenderer } from './features/useTableRenderer';\nimport { useTableRowActiveListener } from './listeners/useTableRowActiveListener';\nimport { TableRef } from '../types';\nimport { useTableRenderers } from './types';\nimport { renderer as rowActions } from './components/Columns/Internal/Actions';\nimport { renderer as rowDrag } from './components/Columns/Internal/Drag';\nimport { renderer as rowExpansion } from './components/Columns/Internal/Expansion';\nimport { renderer as rowSelection } from './components/Columns/Internal/Selection';\nimport { useTableManagerInternalColumns } from '../useTableManager/types';\n\nconst INTERNAL_RENDERERS = {\n rowActions,\n rowDrag,\n rowExpansion,\n rowSelection,\n};\n\nexport type useTableReturnValue<TType = unknown> = {\n id: string;\n instance: ReactTable<TType>;\n meta: ReactTableMeta<TType>;\n props: {\n customSettings: TableCustomSettingsRenderer | undefined;\n emptyState: TableEmptyStateRenderer | undefined;\n toolbarLeft: JSX.Element | undefined;\n toolbarPanel: JSX.Element | undefined;\n toolbarRight: JSX.Element | undefined;\n };\n ref: React.RefObject<TableRef>;\n renderer: {\n rows: JSX.Element[] | null;\n style: React.CSSProperties;\n scrollToIndex: (index: number, options?: ReactVirtualScrollToOptions) => void;\n };\n style: React.CSSProperties;\n stylesheet: string;\n state: ReactTableState;\n};\n\nexport function useTable<TType = unknown, TMeta = {}>(\n props: TableProps<TType>,\n externalRef: React.Ref<TableRef>,\n renderers: useTableRenderers<TType>,\n meta?: Partial<ReactTableMeta<TType>> & TMeta\n): useTableReturnValue<TType> {\n // create a ref and merge with the consumer's ref\n const ref = useMergedRef<TableRef>(externalRef);\n // configure the table\n const manager = useTableManager<TType>(props, meta, INTERNAL_RENDERERS as useTableManagerInternalColumns<TType>);\n // configure the virtualised renderer\n const renderer = useTableRenderer<TType>(renderers, manager.instance, ref, props.defaultRowActiveIndex);\n // configure dynamic styling\n const { style, stylesheet } = useTableStyle(manager.id, manager.instance);\n // configure global keyboard shortcuts\n useTableGlobalShortcuts(manager.instance, ref, renderer.scrollToIndex);\n // augment the ref with some helper functions\n useTableRef(manager.instance, ref);\n\n // listeners - they are here and not in useTableManager because they rely on the dom and the table ref\n useTableRowActiveListener(manager.instance, ref);\n\n return {\n ...manager,\n props: {\n customSettings: props.customSettings,\n emptyState: props.emptyState,\n toolbarLeft: props.toolbarLeft,\n toolbarPanel: props.toolbarPanel,\n toolbarRight: props.toolbarRight,\n },\n renderer,\n style,\n stylesheet,\n ref,\n };\n}\n"],"names":["INTERNAL_RENDERERS","rowActions","rowDrag","rowExpansion","rowSelection","useTable","props","externalRef","renderers","meta","ref","useMergedRef","manager","useTableManager","renderer","useTableRenderer","instance","defaultRowActiveIndex","style","stylesheet","useTableStyle","id","useTableGlobalShortcuts","scrollToIndex","useTableRef","useTableRowActiveListener","customSettings","emptyState","toolbarLeft","toolbarPanel","toolbarRight"],"mappings":";;;;;;;;;;;;AAkBA,MAAMA,kBAAkB,GAAG;cACvBC,QAAU;WACVC,UAAO;gBACPC,UAAY;gBACZC;CACH;SAwBeC,QAAQA,CACpBC,KAAwB,EACxBC,WAAgC,EAChCC,SAAmC,EACnCC,IAA6C;;EAG7C,MAAMC,GAAG,GAAGC,YAAY,CAAWJ,WAAW,CAAC;;EAE/C,MAAMK,OAAO,GAAGC,eAAe,CAAQP,KAAK,EAAEG,IAAI,EAAET,kBAA2D,CAAC;;EAEhH,MAAMc,QAAQ,GAAGC,gBAAgB,CAAQP,SAAS,EAAEI,OAAO,CAACI,QAAQ,EAAEN,GAAG,EAAEJ,KAAK,CAACW,qBAAqB,CAAC;;EAEvG,MAAM;IAAEC,KAAK;IAAEC;GAAY,GAAGC,aAAa,CAACR,OAAO,CAACS,EAAE,EAAET,OAAO,CAACI,QAAQ,CAAC;;EAEzEM,uBAAuB,CAACV,OAAO,CAACI,QAAQ,EAAEN,GAAG,EAAEI,QAAQ,CAACS,aAAa,CAAC;;EAEtEC,WAAW,CAACZ,OAAO,CAACI,QAAQ,EAAEN,GAAG,CAAC;;EAGlCe,yBAAyB,CAACb,OAAO,CAACI,QAAQ,EAAEN,GAAG,CAAC;EAEhD,OAAO;IACH,GAAGE,OAAO;IACVN,KAAK,EAAE;MACHoB,cAAc,EAAEpB,KAAK,CAACoB,cAAc;MACpCC,UAAU,EAAErB,KAAK,CAACqB,UAAU;MAC5BC,WAAW,EAAEtB,KAAK,CAACsB,WAAW;MAC9BC,YAAY,EAAEvB,KAAK,CAACuB,YAAY;MAChCC,YAAY,EAAExB,KAAK,CAACwB;KACvB;IACDhB,QAAQ;IACRI,KAAK;IACLC,UAAU;IACVT;GACH;AACL;;;;"}
|