@neo4j-ndl/react 4.21.1 → 4.21.2-alpha.585cb7c.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/accordion/stories/accordion-full.story.js +1 -1
- package/lib/cjs/accordion/stories/accordion-full.story.js.map +1 -1
- package/lib/cjs/ai/preview/Preview.js +1 -1
- package/lib/cjs/ai/preview/Preview.js.map +1 -1
- package/lib/cjs/ai/reasoning/Reasoning.js +2 -2
- package/lib/cjs/ai/reasoning/Reasoning.js.map +1 -1
- package/lib/cjs/ai/thinking/Thinking.js +1 -1
- package/lib/cjs/ai/thinking/Thinking.js.map +1 -1
- package/lib/cjs/avatar/Avatar.js +1 -1
- package/lib/cjs/avatar/Avatar.js.map +1 -1
- package/lib/cjs/banner/Banner.js +1 -1
- package/lib/cjs/banner/Banner.js.map +1 -1
- package/lib/cjs/clean-icon-button/stories/clean-icon-button-sizes.story.js +1 -1
- package/lib/cjs/clean-icon-button/stories/clean-icon-button-sizes.story.js.map +1 -1
- package/lib/cjs/clean-icon-button/stories/clean-icon-button-tone.story.js +1 -1
- package/lib/cjs/clean-icon-button/stories/clean-icon-button-tone.story.js.map +1 -1
- package/lib/cjs/data-grid/Components.js +1 -1
- package/lib/cjs/data-grid/Components.js.map +1 -1
- package/lib/cjs/data-grid/stories/datagrid-search-and-filters.stories.js +1 -1
- package/lib/cjs/data-grid/stories/datagrid-search-and-filters.stories.js.map +1 -1
- package/lib/cjs/date-picker/DatePicker.js +2 -2
- package/lib/cjs/date-picker/DatePicker.js.map +1 -1
- package/lib/cjs/date-picker/stories/date-picker-with-timezone-both-mode.story.js +2 -2
- package/lib/cjs/date-picker/stories/date-picker-with-timezone-both-mode.story.js.map +1 -1
- package/lib/cjs/drawer/Drawer.js +1 -1
- package/lib/cjs/drawer/Drawer.js.map +1 -1
- package/lib/cjs/dropzone/Dropzone.js +2 -2
- package/lib/cjs/dropzone/Dropzone.js.map +1 -1
- package/lib/cjs/dropzone/stories/dropzone-full.story.js +7 -7
- package/lib/cjs/dropzone/stories/dropzone-full.story.js.map +1 -1
- package/lib/cjs/icon-button/stories/icon-button-sizes.story.js +1 -1
- package/lib/cjs/icon-button/stories/icon-button-sizes.story.js.map +1 -1
- package/lib/cjs/icon-button/stories/icon-button-tone.story.js +1 -1
- package/lib/cjs/icon-button/stories/icon-button-tone.story.js.map +1 -1
- package/lib/cjs/radio/stories/radio-custom-label.story.js +1 -1
- package/lib/cjs/radio/stories/radio-custom-label.story.js.map +1 -1
- package/lib/cjs/select-icon-button/stories/select-icon-button-sizes.story.js +1 -1
- package/lib/cjs/select-icon-button/stories/select-icon-button-sizes.story.js.map +1 -1
- package/lib/cjs/select-icon-button/stories/select-icon-button-states.story.js +1 -1
- package/lib/cjs/select-icon-button/stories/select-icon-button-states.story.js.map +1 -1
- package/lib/cjs/side-navigation/SideNavigation.js +2 -2
- package/lib/cjs/side-navigation/SideNavigation.js.map +1 -1
- package/lib/cjs/side-navigation/stories/side-nav-badges.story.js +1 -1
- package/lib/cjs/side-navigation/stories/side-nav-badges.story.js.map +1 -1
- package/lib/cjs/side-navigation/stories/side-nav-compact.story.js +1 -1
- package/lib/cjs/side-navigation/stories/side-nav-compact.story.js.map +1 -1
- package/lib/cjs/side-navigation/stories/side-nav-default.story.js +1 -1
- package/lib/cjs/side-navigation/stories/side-nav-default.story.js.map +1 -1
- package/lib/cjs/side-navigation/stories/side-nav-secondary.story.js +1 -1
- package/lib/cjs/side-navigation/stories/side-nav-secondary.story.js.map +1 -1
- package/lib/cjs/skeleton/stories/skeleton-full-example.story.js +1 -1
- package/lib/cjs/skeleton/stories/skeleton-full-example.story.js.map +1 -1
- package/lib/cjs/skeleton/stories/skeleton-inherit-width.story.js +1 -1
- package/lib/cjs/skeleton/stories/skeleton-inherit-width.story.js.map +1 -1
- package/lib/cjs/spotlight/Spotlight.js +1 -1
- package/lib/cjs/spotlight/Spotlight.js.map +1 -1
- package/lib/cjs/status-indicator/stories/status-indicator-variants.story.js +1 -1
- package/lib/cjs/status-indicator/stories/status-indicator-variants.story.js.map +1 -1
- package/lib/cjs/tabs/Tabs.js +1 -1
- package/lib/cjs/tabs/Tabs.js.map +1 -1
- package/lib/cjs/tabs/stories/tabs-fill-variants.story.js +1 -1
- package/lib/cjs/tabs/stories/tabs-fill-variants.story.js.map +1 -1
- package/lib/cjs/tabs/stories/tabs-sizes.story.js +1 -1
- package/lib/cjs/tabs/stories/tabs-sizes.story.js.map +1 -1
- package/lib/cjs/timezone-picker/stories/timezone-picker-both-mode.story.js +1 -1
- package/lib/cjs/timezone-picker/stories/timezone-picker-both-mode.story.js.map +1 -1
- package/lib/cjs/tree-view/TreeViewTextItem.js +1 -1
- package/lib/cjs/tree-view/TreeViewTextItem.js.map +1 -1
- package/lib/cjs/typography/Typography.js.map +1 -1
- package/lib/cjs/typography/stories/typography-anchor.story.js +1 -1
- package/lib/cjs/typography/stories/typography-anchor.story.js.map +1 -1
- package/lib/esm/accordion/stories/accordion-full.story.js +1 -1
- package/lib/esm/accordion/stories/accordion-full.story.js.map +1 -1
- package/lib/esm/ai/preview/Preview.js +1 -1
- package/lib/esm/ai/preview/Preview.js.map +1 -1
- package/lib/esm/ai/reasoning/Reasoning.js +2 -2
- package/lib/esm/ai/reasoning/Reasoning.js.map +1 -1
- package/lib/esm/ai/thinking/Thinking.js +1 -1
- package/lib/esm/ai/thinking/Thinking.js.map +1 -1
- package/lib/esm/avatar/Avatar.js +1 -1
- package/lib/esm/avatar/Avatar.js.map +1 -1
- package/lib/esm/banner/Banner.js +1 -1
- package/lib/esm/banner/Banner.js.map +1 -1
- package/lib/esm/clean-icon-button/stories/clean-icon-button-sizes.story.js +1 -1
- package/lib/esm/clean-icon-button/stories/clean-icon-button-sizes.story.js.map +1 -1
- package/lib/esm/clean-icon-button/stories/clean-icon-button-tone.story.js +1 -1
- package/lib/esm/clean-icon-button/stories/clean-icon-button-tone.story.js.map +1 -1
- package/lib/esm/data-grid/Components.js +1 -1
- package/lib/esm/data-grid/Components.js.map +1 -1
- package/lib/esm/data-grid/stories/datagrid-search-and-filters.stories.js +1 -1
- package/lib/esm/data-grid/stories/datagrid-search-and-filters.stories.js.map +1 -1
- package/lib/esm/date-picker/DatePicker.js +2 -2
- package/lib/esm/date-picker/DatePicker.js.map +1 -1
- package/lib/esm/date-picker/stories/date-picker-with-timezone-both-mode.story.js +2 -2
- package/lib/esm/date-picker/stories/date-picker-with-timezone-both-mode.story.js.map +1 -1
- package/lib/esm/drawer/Drawer.js +1 -1
- package/lib/esm/drawer/Drawer.js.map +1 -1
- package/lib/esm/dropzone/Dropzone.js +2 -2
- package/lib/esm/dropzone/Dropzone.js.map +1 -1
- package/lib/esm/dropzone/stories/dropzone-full.story.js +7 -7
- package/lib/esm/dropzone/stories/dropzone-full.story.js.map +1 -1
- package/lib/esm/icon-button/stories/icon-button-sizes.story.js +1 -1
- package/lib/esm/icon-button/stories/icon-button-sizes.story.js.map +1 -1
- package/lib/esm/icon-button/stories/icon-button-tone.story.js +1 -1
- package/lib/esm/icon-button/stories/icon-button-tone.story.js.map +1 -1
- package/lib/esm/radio/stories/radio-custom-label.story.js +1 -1
- package/lib/esm/radio/stories/radio-custom-label.story.js.map +1 -1
- package/lib/esm/select-icon-button/stories/select-icon-button-sizes.story.js +1 -1
- package/lib/esm/select-icon-button/stories/select-icon-button-sizes.story.js.map +1 -1
- package/lib/esm/select-icon-button/stories/select-icon-button-states.story.js +1 -1
- package/lib/esm/select-icon-button/stories/select-icon-button-states.story.js.map +1 -1
- package/lib/esm/side-navigation/SideNavigation.js +2 -2
- package/lib/esm/side-navigation/SideNavigation.js.map +1 -1
- package/lib/esm/side-navigation/stories/side-nav-badges.story.js +1 -1
- package/lib/esm/side-navigation/stories/side-nav-badges.story.js.map +1 -1
- package/lib/esm/side-navigation/stories/side-nav-compact.story.js +1 -1
- package/lib/esm/side-navigation/stories/side-nav-compact.story.js.map +1 -1
- package/lib/esm/side-navigation/stories/side-nav-default.story.js +1 -1
- package/lib/esm/side-navigation/stories/side-nav-default.story.js.map +1 -1
- package/lib/esm/side-navigation/stories/side-nav-secondary.story.js +1 -1
- package/lib/esm/side-navigation/stories/side-nav-secondary.story.js.map +1 -1
- package/lib/esm/skeleton/stories/skeleton-full-example.story.js +1 -1
- package/lib/esm/skeleton/stories/skeleton-full-example.story.js.map +1 -1
- package/lib/esm/skeleton/stories/skeleton-inherit-width.story.js +1 -1
- package/lib/esm/skeleton/stories/skeleton-inherit-width.story.js.map +1 -1
- package/lib/esm/spotlight/Spotlight.js +1 -1
- package/lib/esm/spotlight/Spotlight.js.map +1 -1
- package/lib/esm/status-indicator/stories/status-indicator-variants.story.js +1 -1
- package/lib/esm/status-indicator/stories/status-indicator-variants.story.js.map +1 -1
- package/lib/esm/tabs/Tabs.js +1 -1
- package/lib/esm/tabs/Tabs.js.map +1 -1
- package/lib/esm/tabs/stories/tabs-fill-variants.story.js +1 -1
- package/lib/esm/tabs/stories/tabs-fill-variants.story.js.map +1 -1
- package/lib/esm/tabs/stories/tabs-sizes.story.js +1 -1
- package/lib/esm/tabs/stories/tabs-sizes.story.js.map +1 -1
- package/lib/esm/timezone-picker/stories/timezone-picker-both-mode.story.js +1 -1
- package/lib/esm/timezone-picker/stories/timezone-picker-both-mode.story.js.map +1 -1
- package/lib/esm/tree-view/TreeViewTextItem.js +1 -1
- package/lib/esm/tree-view/TreeViewTextItem.js.map +1 -1
- package/lib/esm/typography/Typography.js.map +1 -1
- package/lib/esm/typography/stories/typography-anchor.story.js +1 -1
- package/lib/esm/typography/stories/typography-anchor.story.js.map +1 -1
- package/lib/types/typography/Typography.d.ts +6 -1
- package/lib/types/typography/Typography.d.ts.map +1 -1
- package/package.json +2 -2
- package/skills/ndl-react/components/clean-icon-button.md +5 -5
- package/skills/ndl-react/components/color-picker.md +32 -32
- package/skills/ndl-react/components/date-picker.md +1 -1
- package/skills/ndl-react/components/dropzone.md +6 -6
- package/skills/ndl-react/components/icon-button.md +5 -5
- package/skills/ndl-react/components/radio.md +1 -1
- package/skills/ndl-react/components/select-icon-button.md +6 -6
- package/skills/ndl-react/components/status-indicator.md +5 -5
- package/skills/ndl-react/components/tabs.md +4 -4
- package/skills/ndl-react/components/typography.md +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Banner.js","sourceRoot":"","sources":["../../../src/banner/Banner.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport classNames from 'classnames';\nimport type React from 'react';\n\nimport {\n type CommonProps,\n type PolymorphicCommonProps,\n} from '../_common/types';\nimport { CleanIconButton } from '../clean-icon-button';\nimport { BoltIconOutline } from '../icons/generated/heroIcons/BoltIconOutline';\nimport { CheckCircleIconSolid } from '../icons/generated/heroIcons/CheckCircleIconSolid';\nimport { ExclamationCircleIconSolid } from '../icons/generated/heroIcons/ExclamationCircleIconSolid';\nimport { ExclamationTriangleIconSolid } from '../icons/generated/heroIcons/ExclamationTriangleIconSolid';\nimport { InformationCircleIconSolid } from '../icons/generated/heroIcons/InformationCircleIconSolid';\nimport { XMarkIconOutline } from '../icons/generated/heroIcons/XMarkIconOutline';\nimport { Typography } from '../typography';\n/**\n *\n *\n * Types\n *\n *\n */\n\ntype BannerCommonProps = {\n /** Shows a status icon. The icon is based on the value of the `variant` prop */\n hasIcon?: boolean;\n\n /** Content to be shown in the banner. */\n children?: React.ReactNode;\n\n /** Sets the role to alert */\n isAlert?: boolean;\n\n /** How the banner is used. */\n usage?: 'inline' | 'global';\n\n /** The variant of the banner */\n variant?: BannerVariant;\n};\n\ntype CloseableBannerProps = {\n /** If the banner is closeable. Renders an icon button in the top right corner */\n isCloseable: true;\n\n /** Event handler for when the close icon is clicked */\n onClose: (\n event?: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>,\n ) => void;\n};\n\ntype NonCloseableBannerProps = {\n isCloseable?: false;\n onClose?: never;\n};\n\ntype BannerCloseProps = CloseableBannerProps | NonCloseableBannerProps;\n\ntype BannerProps = BannerCommonProps & BannerCloseProps;\ntype BannerVariant = 'info' | 'success' | 'warning' | 'danger' | 'neutral';\n\nconst StatusIcon = ({ variant }: { variant: BannerVariant }) => {\n const iconComponent = (() => {\n switch (variant) {\n case 'success':\n return <CheckCircleIconSolid />;\n case 'warning':\n return <ExclamationTriangleIconSolid />;\n case 'danger':\n return <ExclamationCircleIconSolid />;\n case 'info':\n return <InformationCircleIconSolid />;\n case 'neutral':\n return <BoltIconOutline />;\n default:\n return null;\n }\n })();\n\n return <div className=\"ndl-banner-status-icon\">{iconComponent}</div>;\n};\n\nconst BannerHeader = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'span', { children: React.ReactNode }>) => {\n const classes = classNames('ndl-banner-header', className);\n return (\n <Typography\n as=\"span\"\n variant=\"title-
|
|
1
|
+
{"version":3,"file":"Banner.js","sourceRoot":"","sources":["../../../src/banner/Banner.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport classNames from 'classnames';\nimport type React from 'react';\n\nimport {\n type CommonProps,\n type PolymorphicCommonProps,\n} from '../_common/types';\nimport { CleanIconButton } from '../clean-icon-button';\nimport { BoltIconOutline } from '../icons/generated/heroIcons/BoltIconOutline';\nimport { CheckCircleIconSolid } from '../icons/generated/heroIcons/CheckCircleIconSolid';\nimport { ExclamationCircleIconSolid } from '../icons/generated/heroIcons/ExclamationCircleIconSolid';\nimport { ExclamationTriangleIconSolid } from '../icons/generated/heroIcons/ExclamationTriangleIconSolid';\nimport { InformationCircleIconSolid } from '../icons/generated/heroIcons/InformationCircleIconSolid';\nimport { XMarkIconOutline } from '../icons/generated/heroIcons/XMarkIconOutline';\nimport { Typography } from '../typography';\n/**\n *\n *\n * Types\n *\n *\n */\n\ntype BannerCommonProps = {\n /** Shows a status icon. The icon is based on the value of the `variant` prop */\n hasIcon?: boolean;\n\n /** Content to be shown in the banner. */\n children?: React.ReactNode;\n\n /** Sets the role to alert */\n isAlert?: boolean;\n\n /** How the banner is used. */\n usage?: 'inline' | 'global';\n\n /** The variant of the banner */\n variant?: BannerVariant;\n};\n\ntype CloseableBannerProps = {\n /** If the banner is closeable. Renders an icon button in the top right corner */\n isCloseable: true;\n\n /** Event handler for when the close icon is clicked */\n onClose: (\n event?: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>,\n ) => void;\n};\n\ntype NonCloseableBannerProps = {\n isCloseable?: false;\n onClose?: never;\n};\n\ntype BannerCloseProps = CloseableBannerProps | NonCloseableBannerProps;\n\ntype BannerProps = BannerCommonProps & BannerCloseProps;\ntype BannerVariant = 'info' | 'success' | 'warning' | 'danger' | 'neutral';\n\nconst StatusIcon = ({ variant }: { variant: BannerVariant }) => {\n const iconComponent = (() => {\n switch (variant) {\n case 'success':\n return <CheckCircleIconSolid />;\n case 'warning':\n return <ExclamationTriangleIconSolid />;\n case 'danger':\n return <ExclamationCircleIconSolid />;\n case 'info':\n return <InformationCircleIconSolid />;\n case 'neutral':\n return <BoltIconOutline />;\n default:\n return null;\n }\n })();\n\n return <div className=\"ndl-banner-status-icon\">{iconComponent}</div>;\n};\n\nconst BannerHeader = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'span', { children: React.ReactNode }>) => {\n const classes = classNames('ndl-banner-header', className);\n return (\n <Typography\n as=\"span\"\n variant=\"title-3\"\n className={classes}\n style={style}\n ref={ref}\n htmlAttributes={htmlAttributes}\n {...restProps}\n >\n {children}\n </Typography>\n );\n};\n\nconst BannerDescription = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', { children: React.ReactNode }>) => {\n const classes = classNames('ndl-banner-description', className);\n return (\n <Typography\n as=\"div\"\n variant=\"body-medium\"\n className={classes}\n style={style}\n ref={ref}\n {...restProps}\n {...htmlAttributes}\n >\n {children}\n </Typography>\n );\n};\n\nconst BannerActions = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', { children: React.ReactNode }>) => {\n const classes = classNames('ndl-banner-actions', className);\n return (\n <div\n className={classes}\n style={style}\n ref={ref}\n {...restProps}\n {...htmlAttributes}\n >\n {children}\n </div>\n );\n};\n\nconst BannerComponent = <T extends React.ElementType = 'section'>({\n as,\n variant = 'info',\n hasIcon = false,\n onClose,\n className,\n children,\n isCloseable = false,\n usage = 'inline',\n htmlAttributes,\n isAlert = false,\n ref,\n ...restProps\n}: PolymorphicCommonProps<T, BannerProps>) => {\n const Element: React.ElementType = as ?? 'section';\n\n const classes = classNames('ndl-banner', className, {\n 'ndl-danger': variant === 'danger',\n 'ndl-global': usage === 'global',\n 'ndl-info': variant === 'info',\n 'ndl-inline': usage === 'inline',\n 'ndl-neutral': variant === 'neutral',\n 'ndl-success': variant === 'success',\n 'ndl-warning': variant === 'warning',\n });\n\n const handleClose = (\n event:\n | React.MouseEvent<HTMLElement, MouseEvent>\n | React.KeyboardEvent<HTMLElement>,\n ) => {\n if (onClose && typeof onClose === 'function') {\n onClose(event);\n }\n };\n\n return (\n <Element\n className={classes}\n role={isAlert ? 'alert' : undefined}\n ref={ref}\n {...restProps}\n {...htmlAttributes}\n >\n {hasIcon && <StatusIcon variant={variant} />}\n <div className=\"ndl-banner-content\">{children}</div>\n {isCloseable && (\n <CleanIconButton\n size=\"small\"\n onClick={handleClose}\n description={null}\n htmlAttributes={{ 'aria-label': 'Close' }}\n >\n <XMarkIconOutline />\n </CleanIconButton>\n )}\n </Element>\n );\n};\n\nconst Banner = Object.assign(BannerComponent, {\n Actions: BannerActions,\n Description: BannerDescription,\n Header: BannerHeader,\n});\n\nexport { Banner };\n"]}
|
|
@@ -23,7 +23,7 @@ import '@neo4j-ndl/base/lib/neo4j-ds-styles.css';
|
|
|
23
23
|
import { CleanIconButton, Typography } from '@neo4j-ndl/react';
|
|
24
24
|
import { MagnifyingGlassIconOutline } from '@neo4j-ndl/react/icons';
|
|
25
25
|
const Component = () => {
|
|
26
|
-
return (_jsxs("div", { className: "n-flex n-flex-col n-gap-token-16", children: [_jsxs("div", { className: "n-flex n-flex-row n-gap-token-16 n-items-center", children: [_jsx(CleanIconButton, { description: "Search", size: "small", children: _jsx(MagnifyingGlassIconOutline, {}) }), _jsx(Typography, { variant: "
|
|
26
|
+
return (_jsxs("div", { className: "n-flex n-flex-col n-gap-token-16", children: [_jsxs("div", { className: "n-flex n-flex-row n-gap-token-16 n-items-center", children: [_jsx(CleanIconButton, { description: "Search", size: "small", children: _jsx(MagnifyingGlassIconOutline, {}) }), _jsx(Typography, { variant: "title-3", children: " Small" })] }), _jsxs("div", { className: "n-flex n-flex-row n-gap-token-16 n-items-center", children: [_jsx(CleanIconButton, { description: "Search", size: "medium", children: _jsx(MagnifyingGlassIconOutline, {}) }), _jsx(Typography, { variant: "title-3", children: " Medium" })] }), _jsxs("div", { className: "n-flex n-flex-row n-gap-token-16 n-items-center", children: [_jsx(CleanIconButton, { description: "Search", size: "large", children: _jsx(MagnifyingGlassIconOutline, {}) }), _jsx(Typography, { variant: "title-3", children: " Large" })] })] }));
|
|
27
27
|
};
|
|
28
28
|
export default Component;
|
|
29
29
|
//# sourceMappingURL=clean-icon-button-sizes.story.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clean-icon-button-sizes.story.js","sourceRoot":"","sources":["../../../../src/clean-icon-button/stories/clean-icon-button-sizes.story.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,yCAAyC,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEpE,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,OAAO,CACL,eAAK,SAAS,EAAC,kCAAkC,aAC/C,eAAK,SAAS,EAAC,iDAAiD,aAC9D,KAAC,eAAe,IAAC,WAAW,EAAC,QAAQ,EAAC,IAAI,EAAC,OAAO,YAChD,KAAC,0BAA0B,KAAG,GACd,EAClB,KAAC,UAAU,IAAC,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"clean-icon-button-sizes.story.js","sourceRoot":"","sources":["../../../../src/clean-icon-button/stories/clean-icon-button-sizes.story.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,yCAAyC,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEpE,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,OAAO,CACL,eAAK,SAAS,EAAC,kCAAkC,aAC/C,eAAK,SAAS,EAAC,iDAAiD,aAC9D,KAAC,eAAe,IAAC,WAAW,EAAC,QAAQ,EAAC,IAAI,EAAC,OAAO,YAChD,KAAC,0BAA0B,KAAG,GACd,EAClB,KAAC,UAAU,IAAC,OAAO,EAAC,SAAS,uBAAoB,IAC7C,EACN,eAAK,SAAS,EAAC,iDAAiD,aAC9D,KAAC,eAAe,IAAC,WAAW,EAAC,QAAQ,EAAC,IAAI,EAAC,QAAQ,YACjD,KAAC,0BAA0B,KAAG,GACd,EAClB,KAAC,UAAU,IAAC,OAAO,EAAC,SAAS,wBAAqB,IAC9C,EACN,eAAK,SAAS,EAAC,iDAAiD,aAC9D,KAAC,eAAe,IAAC,WAAW,EAAC,QAAQ,EAAC,IAAI,EAAC,OAAO,YAChD,KAAC,0BAA0B,KAAG,GACd,EAClB,KAAC,UAAU,IAAC,OAAO,EAAC,SAAS,uBAAoB,IAC7C,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport '@neo4j-ndl/base/lib/neo4j-ds-styles.css';\n\nimport { CleanIconButton, Typography } from '@neo4j-ndl/react';\nimport { MagnifyingGlassIconOutline } from '@neo4j-ndl/react/icons';\n\nconst Component = () => {\n return (\n <div className=\"n-flex n-flex-col n-gap-token-16\">\n <div className=\"n-flex n-flex-row n-gap-token-16 n-items-center\">\n <CleanIconButton description=\"Search\" size=\"small\">\n <MagnifyingGlassIconOutline />\n </CleanIconButton>\n <Typography variant=\"title-3\"> Small</Typography>\n </div>\n <div className=\"n-flex n-flex-row n-gap-token-16 n-items-center\">\n <CleanIconButton description=\"Search\" size=\"medium\">\n <MagnifyingGlassIconOutline />\n </CleanIconButton>\n <Typography variant=\"title-3\"> Medium</Typography>\n </div>\n <div className=\"n-flex n-flex-row n-gap-token-16 n-items-center\">\n <CleanIconButton description=\"Search\" size=\"large\">\n <MagnifyingGlassIconOutline />\n </CleanIconButton>\n <Typography variant=\"title-3\"> Large</Typography>\n </div>\n </div>\n );\n};\n\nexport default Component;\n"]}
|
|
@@ -23,7 +23,7 @@ import '@neo4j-ndl/base/lib/neo4j-ds-styles.css';
|
|
|
23
23
|
import { CleanIconButton, Typography } from '@neo4j-ndl/react';
|
|
24
24
|
import { MagnifyingGlassIconOutline } from '@neo4j-ndl/react/icons';
|
|
25
25
|
const Component = () => {
|
|
26
|
-
return (_jsxs("div", { className: "n-flex n-flex-col n-gap-token-16", children: [_jsxs("div", { className: "n-flex n-flex-row n-gap-token-16 n-items-center", children: [_jsx(CleanIconButton, { description: "Search", variant: "neutral", children: _jsx(MagnifyingGlassIconOutline, {}) }), _jsx(Typography, { variant: "
|
|
26
|
+
return (_jsxs("div", { className: "n-flex n-flex-col n-gap-token-16", children: [_jsxs("div", { className: "n-flex n-flex-row n-gap-token-16 n-items-center", children: [_jsx(CleanIconButton, { description: "Search", variant: "neutral", children: _jsx(MagnifyingGlassIconOutline, {}) }), _jsx(Typography, { variant: "title-3", children: "Default" })] }), _jsxs("div", { className: "n-flex n-flex-row n-gap-token-16 n-items-center", children: [_jsx(CleanIconButton, { description: "Search", variant: "danger", children: _jsx(MagnifyingGlassIconOutline, {}) }), _jsx(Typography, { variant: "title-3", children: "Danger" })] })] }));
|
|
27
27
|
};
|
|
28
28
|
export default Component;
|
|
29
29
|
//# sourceMappingURL=clean-icon-button-tone.story.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clean-icon-button-tone.story.js","sourceRoot":"","sources":["../../../../src/clean-icon-button/stories/clean-icon-button-tone.story.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,yCAAyC,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEpE,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,OAAO,CACL,eAAK,SAAS,EAAC,kCAAkC,aAC/C,eAAK,SAAS,EAAC,iDAAiD,aAC9D,KAAC,eAAe,IAAC,WAAW,EAAC,QAAQ,EAAC,OAAO,EAAC,SAAS,YACrD,KAAC,0BAA0B,KAAG,GACd,EAClB,KAAC,UAAU,IAAC,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"clean-icon-button-tone.story.js","sourceRoot":"","sources":["../../../../src/clean-icon-button/stories/clean-icon-button-tone.story.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,yCAAyC,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEpE,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,OAAO,CACL,eAAK,SAAS,EAAC,kCAAkC,aAC/C,eAAK,SAAS,EAAC,iDAAiD,aAC9D,KAAC,eAAe,IAAC,WAAW,EAAC,QAAQ,EAAC,OAAO,EAAC,SAAS,YACrD,KAAC,0BAA0B,KAAG,GACd,EAClB,KAAC,UAAU,IAAC,OAAO,EAAC,SAAS,wBAAqB,IAC9C,EACN,eAAK,SAAS,EAAC,iDAAiD,aAC9D,KAAC,eAAe,IAAC,WAAW,EAAC,QAAQ,EAAC,OAAO,EAAC,QAAQ,YACpD,KAAC,0BAA0B,KAAG,GACd,EAClB,KAAC,UAAU,IAAC,OAAO,EAAC,SAAS,uBAAoB,IAC7C,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport '@neo4j-ndl/base/lib/neo4j-ds-styles.css';\n\nimport { CleanIconButton, Typography } from '@neo4j-ndl/react';\nimport { MagnifyingGlassIconOutline } from '@neo4j-ndl/react/icons';\n\nconst Component = () => {\n return (\n <div className=\"n-flex n-flex-col n-gap-token-16\">\n <div className=\"n-flex n-flex-row n-gap-token-16 n-items-center\">\n <CleanIconButton description=\"Search\" variant=\"neutral\">\n <MagnifyingGlassIconOutline />\n </CleanIconButton>\n <Typography variant=\"title-3\">Default</Typography>\n </div>\n <div className=\"n-flex n-flex-row n-gap-token-16 n-items-center\">\n <CleanIconButton description=\"Search\" variant=\"danger\">\n <MagnifyingGlassIconOutline />\n </CleanIconButton>\n <Typography variant=\"title-3\">Danger</Typography>\n </div>\n </div>\n );\n};\n\nexport default Component;\n"]}
|
|
@@ -395,7 +395,7 @@ const LoadingPlaceholder = (_a) => {
|
|
|
395
395
|
};
|
|
396
396
|
const NoDataPlaceholder = (_a) => {
|
|
397
397
|
var { children, className, style, htmlAttributes, ref } = _a, restProps = __rest(_a, ["children", "className", "style", "htmlAttributes", "ref"]);
|
|
398
|
-
return (_jsx("div", Object.assign({ ref: ref, style: style, className: classNames('nld-table-placeholder-wrapper', className), role: "row" }, restProps, htmlAttributes, { children: children || (_jsxs(NoDataPlaceholderContentWrapper, { children: [_jsx(NoDataIcon, {}), _jsx(Typography, { variant: "subheading-
|
|
398
|
+
return (_jsx("div", Object.assign({ ref: ref, style: style, className: classNames('nld-table-placeholder-wrapper', className), role: "row" }, restProps, htmlAttributes, { children: children || (_jsxs(NoDataPlaceholderContentWrapper, { children: [_jsx(NoDataIcon, {}), _jsx(Typography, { variant: "subheading-medium", children: "No data available" })] })) })));
|
|
399
399
|
};
|
|
400
400
|
export const NoDataPlaceholderContentWrapper = (_a) => {
|
|
401
401
|
var { children, className, style, htmlAttributes, ref } = _a, restProps = __rest(_a, ["children", "className", "style", "htmlAttributes", "ref"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Components.js","sourceRoot":"","sources":["../../../src/data-grid/Components.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport { useMergeRefs } from '@floating-ui/react';\nimport {\n type Cell,\n type CellContext,\n flexRender,\n type Header as HeaderType,\n type Row,\n type RowData,\n type SortDirection,\n} from '@tanstack/react-table';\nimport classNames from 'classnames';\nimport type React from 'react';\nimport {\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { GroupBase, SelectComponentsConfig } from 'react-select';\n\nimport {\n type CommonProps,\n type PolymorphicCommonProps,\n} from '../_common/types';\nimport { CleanIconButton } from '../clean-icon-button';\nimport DataGridCrossIcon from '../icons/generated/custom/DataGridCross';\nimport { Bars3CenterLeftIconOutline } from '../icons/generated/heroIcons/Bars3CenterLeftIconOutline';\nimport { BarsArrowDownIconOutline } from '../icons/generated/heroIcons/BarsArrowDownIconOutline';\nimport { BarsArrowUpIconOutline } from '../icons/generated/heroIcons/BarsArrowUpIconOutline';\nimport { ChevronDownIconSolid } from '../icons/generated/heroIcons/ChevronDownIconSolid';\nimport { ChevronLeftIconOutline } from '../icons/generated/heroIcons/ChevronLeftIconOutline';\nimport { ChevronRightIconOutline } from '../icons/generated/heroIcons/ChevronRightIconOutline';\nimport { EllipsisHorizontalIconOutline } from '../icons/generated/heroIcons/EllipsisHorizontalIconOutline';\nimport { LoadingSpinner } from '../loading-spinner';\nimport { Menu } from '../menu';\nimport { Select } from '../select';\nimport { Skeleton } from '../skeleton';\nimport { Typography } from '../typography';\nimport { useDataGridContext } from './data-grid-context';\nimport { type ColumnAction } from './datagrid-types';\nimport {\n resizeColumn,\n ResizeDirection,\n userFriendlyPagination,\n} from './helpers';\nimport { useDataGridCellStyle } from './style-rules/hooks';\n\n/** Table results per page, with the first option being the default */\nconst TABLE_RESULTS = {\n DEFAULT: 10,\n values: [10, 25, 50, 100],\n} as const;\n\ntype paginationOption = {\n value: number;\n label: string;\n};\n\nconst getPaginationOptions = (pageSize: number): paginationOption[] => {\n return [...new Set([...TABLE_RESULTS.values, pageSize])]\n .sort((firstSize, secondSize) => firstSize - secondSize)\n .map((option) => ({\n label: `${option}`,\n value: option,\n }));\n};\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport const DEFAULT_SORT_ACTIONS: (cell: HeaderType<any, unknown>) => {\n [key in SortDirection | 'default']: ColumnAction;\n} = (cell) => ({\n asc: {\n icon: <BarsArrowUpIconOutline />,\n onClick: () => cell.column.toggleSorting(false),\n title: 'Sort ascending',\n },\n default: {\n icon: <Bars3CenterLeftIconOutline />,\n onClick: () => cell.column.clearSorting(),\n title: 'Default sort',\n },\n desc: {\n icon: <BarsArrowDownIconOutline />,\n onClick: () => cell.column.toggleSorting(true),\n title: 'Sort descending',\n },\n});\n\ntype ResizingBarProps<T extends RowData> = {\n header: HeaderType<T, unknown>;\n};\n\nconst ResizingBar = <T extends RowData>({\n header,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'button', ResizingBarProps<T>>) => {\n const { isKeyboardNavigationEnabled } = useDataGridContext<T>();\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === 'ArrowLeft') {\n event.stopPropagation();\n event.preventDefault();\n resizeColumn(ResizeDirection.LEFT, header);\n } else if (event.key === 'ArrowRight') {\n event.stopPropagation();\n event.preventDefault();\n resizeColumn(ResizeDirection.RIGHT, header);\n }\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={classNames('ndl-data-grid-resizer', className, {\n 'ndl-data-grid-is-resizing': header.column.getIsResizing(),\n })}\n style={style}\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n onKeyDown={handleKeyDown}\n aria-label=\"Resizing bar\"\n tabIndex={isKeyboardNavigationEnabled ? -1 : 0}\n {...restProps}\n {...htmlAttributes}\n />\n );\n};\n\ntype ScrollableProps = {\n children?: React.ReactNode;\n};\n\nconst Scrollable = ({\n children,\n ref,\n className,\n style,\n htmlAttributes,\n ...restProps\n}: CommonProps<'div', ScrollableProps> & {\n ref: React.RefObject<HTMLDivElement | null>;\n}) => {\n return (\n <div\n ref={ref}\n style={style}\n className={classNames('ndl-data-grid-scrollable', className)}\n {...restProps}\n {...htmlAttributes}\n >\n {children}\n </div>\n );\n};\n\ntype HeaderProps = {\n children?: React.ReactNode;\n};\n\nconst Header = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', HeaderProps>) => {\n const { tableProps, components } = useDataGridContext();\n const { getHeaderGroups, getState } = tableProps;\n\n return (\n <div\n role=\"rowgroup\"\n className={classNames('ndl-data-grid-thead', className, {\n 'ndl-data-grid-is-resizing':\n getState().columnSizingInfo.isResizingColumn,\n })}\n style={style}\n ref={ref}\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <>\n {getHeaderGroups().map((headerGroup) => (\n <div key={headerGroup.id} className=\"ndl-data-grid-tr\" role=\"row\">\n {headerGroup.headers.map(\n (header) =>\n components.HeaderCell && (\n <components.HeaderCell key={header.id} cell={header} />\n ),\n )}\n </div>\n ))}\n </>\n )}\n </div>\n );\n};\n\ntype ActionButtonProps = {\n action: ColumnAction;\n onClose: () => void;\n};\n\nexport const ActionButton = <T extends React.ElementType = 'button'>({\n action,\n onClose,\n as,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: PolymorphicCommonProps<T, ActionButtonProps>) => {\n const { onClick, ...restAction } = action;\n\n const interceptedOnClick = useCallback(\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n (event: any) => {\n const providedOnClick = onClick ?? action.onClick;\n if (typeof providedOnClick === 'function') {\n providedOnClick(event);\n }\n onClose?.();\n },\n [action.onClick, onClick, onClose],\n );\n\n return (\n <Menu.Item\n onClick={interceptedOnClick}\n as={as}\n className={className}\n style={style}\n htmlAttributes={htmlAttributes}\n ref={ref}\n {...restAction}\n {...restProps}\n />\n );\n};\n\nexport interface ActionCellProps<T extends RowData> {\n cell?: CellContext<T, unknown>;\n innerCleanIconButtonProps?: Partial<\n React.ComponentPropsWithoutRef<typeof CleanIconButton>\n >;\n innerMenuProps?: Partial<React.ComponentProps<typeof Menu>>;\n}\n\nconst ActionCell = <T extends RowData>({\n cell,\n innerCleanIconButtonProps,\n innerMenuProps,\n}: ActionCellProps<T>) => {\n const { components, isSkeletonLoading, portalTarget } =\n useDataGridContext<T>();\n const actionsButtonRef = useRef<HTMLButtonElement>(null);\n const [isActionsOpen, setIsActionsOpen] = useState(false);\n\n if (\n !cell ||\n !cell.column.columnDef.meta ||\n typeof cell.column.columnDef?.meta?.isActionCell !== 'object'\n ) {\n return null;\n }\n\n const { actions, onOpenChange } = cell.column.columnDef.meta.isActionCell;\n\n if (isSkeletonLoading) {\n return null;\n }\n\n return (\n <>\n <CleanIconButton\n as=\"button\"\n size=\"medium\"\n description=\"Actions\"\n ref={actionsButtonRef}\n isActive={isActionsOpen}\n onClick={() => {\n onOpenChange?.(!isActionsOpen);\n setIsActionsOpen(!isActionsOpen);\n }}\n {...innerCleanIconButtonProps}\n htmlAttributes={{\n tabIndex: 0,\n ...innerCleanIconButtonProps?.htmlAttributes,\n }}\n >\n {innerCleanIconButtonProps?.children || (\n <EllipsisHorizontalIconOutline />\n )}\n </CleanIconButton>\n <Menu\n isOpen={isActionsOpen}\n anchorRef={actionsButtonRef}\n onClose={() => {\n onOpenChange?.(false);\n setIsActionsOpen(false);\n }}\n {...innerMenuProps}\n portalTarget={portalTarget}\n >\n {innerMenuProps?.children || (\n <>\n {actions.map(\n (action, index) =>\n components.ActionButton && (\n <components.ActionButton\n key={`${cell.column.id}-action-${index}`}\n action={{\n ...action,\n onClick: (event) => {\n action.onClick?.(event, cell);\n },\n }}\n onClose={() => setIsActionsOpen(false)}\n />\n ),\n )}\n </>\n )}\n </Menu>\n </>\n );\n};\n\ntype ColumnControlsProps<T extends RowData> = {\n cell: HeaderType<T, unknown>;\n children?: React.ReactNode;\n};\n\nexport const ColumnControls = <T extends RowData>({\n cell,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', ColumnControlsProps<T>>) => {\n const { components, portalTarget } = useDataGridContext();\n\n const sort = cell.column.getIsSorted();\n const canSort = cell.column.getCanSort();\n const { hasDefaultSortingActions = true, actions } =\n cell.column.columnDef.meta?.columnActions || {};\n\n const sortingActions = useMemo(() => {\n if (canSort) {\n if (sort !== 'asc' && sort !== 'desc') {\n return [\n DEFAULT_SORT_ACTIONS(cell).asc,\n DEFAULT_SORT_ACTIONS(cell).desc,\n ];\n }\n if (sort === 'asc') {\n return [\n DEFAULT_SORT_ACTIONS(cell).default,\n DEFAULT_SORT_ACTIONS(cell).desc,\n ];\n }\n if (sort === 'desc') {\n return [\n DEFAULT_SORT_ACTIONS(cell).default,\n DEFAULT_SORT_ACTIONS(cell).asc,\n ];\n }\n }\n // Default case\n return [];\n }, [sort, cell, canSort]);\n\n const newActions: ColumnAction[] = [\n ...(hasDefaultSortingActions ? sortingActions : []),\n ...(actions ?? []),\n ];\n\n const actionsButtonRef = useRef<HTMLButtonElement>(null);\n const [isActionsOpen, setIsActionsOpen] = useState(false);\n\n if (!actions || actions.length === 0) {\n return null;\n }\n\n return newActions.length > 0 ? (\n <div\n ref={ref}\n className={classNames('ndl-header-action-group', className)}\n style={style}\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <Fragment>\n <CleanIconButton\n size=\"small\"\n description=\"Actions\"\n ref={actionsButtonRef}\n isActive={isActionsOpen}\n onClick={() => {\n setIsActionsOpen(!isActionsOpen);\n }}\n htmlAttributes={{\n tabIndex: 0,\n }}\n >\n <ChevronDownIconSolid />\n </CleanIconButton>\n <Menu\n isOpen={isActionsOpen}\n anchorRef={actionsButtonRef}\n onClose={() => setIsActionsOpen(false)}\n portalTarget={portalTarget}\n >\n {newActions.map(\n (action, index) =>\n components.ActionButton && (\n <components.ActionButton\n key={`${cell.column.id}-action-${index}`}\n action={action}\n onClose={() => setIsActionsOpen(false)}\n />\n ),\n )}\n </Menu>\n </Fragment>\n )}\n </div>\n ) : null;\n};\n\ntype HeaderCellProps<T> = {\n cell: HeaderType<T, unknown>;\n children?: React.ReactNode;\n};\n\nconst HeaderCell = <T extends RowData>({\n cell,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', HeaderCellProps<T>>) => {\n const { components, isResizable, isKeyboardNavigationEnabled } =\n useDataGridContext<T>();\n\n const sort = cell.column.getIsSorted();\n const canSort = cell.column.getCanSort();\n\n const ariaSortRole = useMemo(() => {\n switch (sort) {\n case 'asc':\n return 'ascending';\n case 'desc':\n return 'descending';\n default:\n return 'none';\n }\n }, [sort]);\n\n const Icon = useMemo(() => {\n switch (sort) {\n case 'asc':\n return <BarsArrowUpIconOutline className=\"ndl-header-icon\" />;\n case 'desc':\n return <BarsArrowDownIconOutline className=\"ndl-header-icon\" />;\n default:\n return (\n <Bars3CenterLeftIconOutline className=\"ndl-hoverable-indicator ndl-header-icon\" />\n );\n }\n }, [sort]);\n\n const ariaDescription = useMemo(() => {\n return canSort\n ? `Press ENTER or SPACE to sort column ${cell.column.id}`\n : `Column id: ${cell.column.id}`;\n }, [canSort, cell.column.id]);\n\n const isActionColumn = useMemo(\n () => typeof cell.column.columnDef.meta?.isActionCell === 'object',\n [cell.column.columnDef.meta],\n );\n\n const Tag = canSort ? 'button' : 'div';\n\n const InnerHeaderCell = () => (\n <div className=\"ndl-header-cell\">\n {cell.isPlaceholder\n ? null\n : flexRender(cell.column.columnDef.header, cell.getContext())}\n {canSort && Icon}\n </div>\n );\n\n return (\n <div\n ref={ref}\n tabIndex={isKeyboardNavigationEnabled && !isActionColumn ? 0 : undefined}\n key={cell.id}\n role=\"columnheader\"\n className={classNames('ndl-data-grid-th', className, {\n 'ndl-data-grid-is-resizing': cell.column.getIsResizing(),\n 'ndl-data-grid-pinned-cell': cell.column.getIsPinned(),\n 'ndl-data-grid-pinned-cell-left': cell.column.getIsPinned() === 'left',\n 'ndl-data-grid-pinned-cell-right':\n cell.column.getIsPinned() === 'right',\n 'ndl-data-grid-row-action': isActionColumn,\n 'ndl-focusable-cell': isKeyboardNavigationEnabled,\n })}\n aria-sort={ariaSortRole}\n style={{\n ...style,\n maxWidth: cell.column.columnDef.maxSize\n ? `${cell.column.columnDef.maxSize}px`\n : 'none',\n width: isActionColumn ? 40 : cell.getSize(),\n }}\n {...(isKeyboardNavigationEnabled\n ? {\n onKeyDown: (event) => {\n if (\n isResizable &&\n event.altKey &&\n (event.key === 'ArrowLeft' || event.key === 'ArrowRight')\n ) {\n const direction =\n event.key === 'ArrowLeft'\n ? ResizeDirection.LEFT\n : ResizeDirection.RIGHT;\n resizeColumn(direction, cell);\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n },\n }\n : {})}\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <>\n <Tag\n className=\"ndl-header-group\"\n style={{\n cursor: canSort ? 'pointer' : 'default',\n }}\n aria-description={ariaDescription}\n onClick={() => canSort && cell.column.toggleSorting()}\n tabIndex={canSort ? 0 : undefined}\n >\n {components.HeaderTitle ? (\n <components.HeaderTitle cell={cell}>\n <InnerHeaderCell />\n </components.HeaderTitle>\n ) : (\n <InnerHeaderCell />\n )}\n </Tag>\n {/* Column actions*/}\n {components.ColumnControls && (\n <components.ColumnControls cell={cell} />\n )}\n {/* Resizer*/}\n {isResizable &&\n cell.column.getCanResize() &&\n components.ResizingBar && <components.ResizingBar header={cell} />}\n </>\n )}\n </div>\n );\n};\n\ntype HeaderTitleProps<T> = {\n cell: HeaderType<T, unknown>;\n children?: React.ReactNode;\n};\n\nconst HeaderTitle = <T extends RowData>({\n cell,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', HeaderTitleProps<T>>) => {\n const { column, id } = cell;\n const title =\n typeof column.columnDef.header === 'string' ? column.columnDef.header : id;\n return (\n <div\n ref={ref}\n className={className}\n title={title}\n style={style}\n {...restProps}\n {...htmlAttributes}\n >\n {children}\n </div>\n );\n};\n\ntype BodyProps = {\n children?: React.ReactNode;\n};\n\nconst Body = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', BodyProps>) => {\n const { tableProps, components, isLoading } = useDataGridContext();\n const { getRowModel } = tableProps;\n\n return (\n <div\n ref={ref}\n style={style}\n className={classNames('ndl-data-grid-tbody', className)}\n role=\"rowgroup\"\n aria-busy={isLoading ? 'true' : 'false'}\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <>\n {isLoading && components.LoadingPlaceholder && (\n <components.LoadingPlaceholder />\n )}\n\n {!isLoading &&\n getRowModel().rows.length === 0 &&\n components.NoDataPlaceholder && <components.NoDataPlaceholder />}\n\n {!isLoading &&\n getRowModel().rows.map(\n (row, idx) =>\n components.BodyRow && (\n <components.BodyRow key={`table-row-${idx}`} row={row} />\n ),\n )}\n </>\n )}\n </div>\n );\n};\n\ntype BodyCellProps<T extends RowData> = {\n cell: Cell<T, unknown>;\n children?: React.ReactNode;\n};\n\nconst BodyCell = <T extends RowData>({\n cell,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', BodyCellProps<T>>) => {\n const isResizing = cell.column.getIsResizing();\n\n const isActionColumn = Boolean(cell.column.columnDef.meta?.isActionCell);\n const isInlineEditCell = Boolean(\n cell.column.columnDef.meta?.isInlineEditCell,\n );\n const isDropDownCell = Boolean(cell.column.columnDef.meta?.isDropDownCell);\n const isCustomCell = isActionColumn || isDropDownCell;\n const { isKeyboardNavigationEnabled, isSkeletonLoading, skeletonProps } =\n useDataGridContext();\n const ruleStyle = useDataGridCellStyle(cell);\n return (\n <div\n ref={ref}\n key={cell.id}\n className={classNames('ndl-data-grid-td', className, {\n 'ndl-data-grid-custom-cell': isCustomCell,\n 'ndl-data-grid-dropdown-cell': isDropDownCell,\n 'ndl-data-grid-inline-edit': isInlineEditCell,\n 'ndl-data-grid-is-resizing': isResizing,\n 'ndl-data-grid-pinned-cell': cell.column.getIsPinned(),\n 'ndl-data-grid-pinned-cell-left': cell.column.getIsPinned() === 'left',\n 'ndl-data-grid-pinned-cell-right':\n cell.column.getIsPinned() === 'right',\n 'ndl-data-grid-row-action': isActionColumn,\n 'ndl-focusable-cell': isKeyboardNavigationEnabled,\n })}\n role=\"cell\"\n tabIndex={isKeyboardNavigationEnabled ? 0 : undefined}\n style={{\n ...ruleStyle,\n ...style,\n width: isActionColumn ? 40 : cell.column.getSize(),\n }}\n {...restProps}\n {...htmlAttributes}\n >\n <Skeleton\n onBackground=\"weak\"\n shape=\"rectangular\"\n width=\"100%\"\n {...skeletonProps}\n isLoading={isSkeletonLoading && !isActionColumn}\n >\n {children || flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Skeleton>\n </div>\n );\n};\n\ntype BodyRowProps<T extends RowData> = {\n row: Row<T>;\n children?: React.ReactNode;\n};\n\nconst BodyRow = <T extends RowData>({\n row,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', BodyRowProps<T>>) => {\n const { components } = useDataGridContext<T>();\n\n return (\n <div\n key={row.id}\n ref={ref}\n style={style}\n className={classNames('ndl-data-grid-tr', className)}\n role=\"row\"\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <>\n {row\n .getVisibleCells()\n .map(\n (cell) =>\n components.BodyCell && (\n <components.BodyCell key={cell.id} cell={cell} />\n ),\n )}\n </>\n )}\n </div>\n );\n};\n\ntype TableResultProps = {\n manualPagination?: {\n from: number;\n to: number;\n totalRows: number;\n };\n children?: React.ReactNode;\n /**\n * The label to use for the results, meaning the word \"results\" in the sentence \"Showing X-Y of Z results\".\n * @defaultValue 'results'\n */\n resultsLabel?: string;\n};\n\nconst TableResults = ({\n manualPagination,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n resultsLabel = 'results',\n ...restProps\n}: CommonProps<'span', TableResultProps>) => {\n const { tableProps, isSkeletonLoading, skeletonProps, isSmallNavigation } =\n useDataGridContext();\n const { getState, getRowModel, getCoreRowModel } = tableProps;\n const {\n pagination: { pageSize, pageIndex },\n } = getState();\n const { rows } = getRowModel();\n\n const { from, to, totalRows } = useMemo(\n () =>\n manualPagination || {\n from: 1 + pageIndex * pageSize,\n to: rows.length + pageIndex * pageSize,\n totalRows: getCoreRowModel().rows.length,\n },\n [pageIndex, pageSize, manualPagination, rows, getCoreRowModel],\n );\n\n if (isSmallNavigation) {\n return null;\n }\n\n return (\n <Skeleton\n as=\"span\"\n onBackground=\"weak\"\n shape=\"rectangular\"\n {...skeletonProps}\n isLoading={isSkeletonLoading}\n >\n <span\n ref={ref}\n style={style}\n className={classNames('ndl-data-grid-results', className)}\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <span>\n Showing{' '}\n <span className=\"n-font-bold\">\n {totalRows ? `${from}${to !== from ? `-${to}` : ''}` : 0}\n </span>{' '}\n of <span className=\"n-font-bold\">{totalRows}</span> {resultsLabel}\n </span>\n )}\n </span>\n </Skeleton>\n );\n};\n\ntype RowsPerPageProps = {\n /**\n * The target element to portal the menu of the select component to.\n * Should be document.body normally, or the modal root if the select is inside a modal.\n * Defaults to the portalTarget prop of the DataGrid root component.\n */\n portalTarget?: HTMLElement | null;\n children?: React.ReactNode;\n};\n\nconst RowsPerPage = ({\n portalTarget: portalTargetProp,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', RowsPerPageProps>) => {\n const { tableProps, portalTarget } = useDataGridContext();\n\n const { setPageSize, getState } = tableProps;\n\n const {\n pagination: { pageSize },\n } = getState();\n\n const paginationOptions = getPaginationOptions(pageSize);\n const defaultPaginationOption = paginationOptions.find(\n (option) => option.value === pageSize,\n );\n\n const menuPortalTarget =\n portalTargetProp === undefined ? portalTarget : portalTargetProp;\n\n return (\n <div\n ref={ref}\n style={style}\n className={classNames('ndl-data-grid-rows-per-page', className)}\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <>\n Show\n <Select\n type=\"select\"\n size=\"medium\"\n ariaLabel=\"Select page size\"\n selectProps={{\n defaultValue: defaultPaginationOption,\n isSearchable: false,\n menuPortalTarget: menuPortalTarget,\n menuPosition: 'fixed',\n onChange: (option) => {\n if (option) {\n setPageSize(option.value);\n }\n },\n options: paginationOptions,\n styles: {\n container: () => ({\n width: '100%',\n }),\n },\n }}\n />\n </>\n )}\n </div>\n );\n};\n\ntype PaginationArrowButtonProps = {\n action: 'previous' | 'next';\n children?: React.ReactNode;\n onClick?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n};\n\nconst PaginationArrowButton = ({\n action,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'button', PaginationArrowButtonProps>) => {\n const PaginationIcon =\n action === 'previous' ? ChevronLeftIconOutline : ChevronRightIconOutline;\n const ariaLabel = action === 'previous' ? 'Previous page' : 'Next page';\n const classes = classNames('ndl-data-grid-pagination-icon-button', className);\n\n return (\n <CleanIconButton\n ref={ref}\n style={style}\n className={classes}\n description={ariaLabel}\n htmlAttributes={htmlAttributes}\n {...restProps}\n >\n {children || <PaginationIcon />}\n </CleanIconButton>\n );\n};\n\ntype PaginationNumericButtonProps = {\n currentIndex: number | string;\n isSelected: boolean;\n children?: React.ReactNode;\n onClick?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n};\n\nconst PaginationNumericButton = ({\n currentIndex,\n isSelected,\n children,\n className,\n style,\n htmlAttributes,\n onClick,\n ref,\n ...restProps\n}: CommonProps<'button', PaginationNumericButtonProps>) => {\n return (\n <button\n ref={ref}\n style={style}\n type=\"button\"\n data-testid={`ndl-table-${currentIndex}`}\n className={classNames(\n 'ndl-data-grid-pagination-numeric-button',\n className,\n {\n 'ndl-is-selected': isSelected,\n 'ndl-not-selected': !isSelected,\n 'ndl-not-selected-numeric':\n typeof currentIndex === 'number' && !isSelected,\n },\n )}\n onClick={(event) =>\n typeof currentIndex === 'number' && onClick && onClick(event)\n }\n tabIndex={typeof currentIndex === 'number' ? 0 : -1}\n {...restProps}\n {...htmlAttributes}\n >\n {children || currentIndex}\n </button>\n );\n};\n\nconst PaginationNumericButtons = () => {\n const { tableProps, components } = useDataGridContext();\n const { getState, setPageIndex, getPageCount } = tableProps;\n const {\n pagination: { pageIndex },\n } = getState();\n\n return (\n <>\n {userFriendlyPagination(pageIndex + 1, getPageCount()).map(\n (option, idx) =>\n components.PaginationNumericButton && (\n <components.PaginationNumericButton\n /** Use index to avoid situations where two \"...\" values will appear, causing a key conflict */\n key={`${option}-${idx}`}\n onClick={() =>\n typeof option === 'number' && setPageIndex(option - 1)\n }\n currentIndex={option}\n isSelected={option === pageIndex + 1}\n />\n ),\n )}\n </>\n );\n};\n\ntype PaginationProps = {\n children?: React.ReactNode;\n};\n\nconst Pagination = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'nav', PaginationProps>) => {\n const { tableProps, components, isMediumNavigation } = useDataGridContext();\n\n const { getCanPreviousPage, getCanNextPage, previousPage, nextPage } =\n tableProps;\n\n return (\n <nav\n ref={ref}\n style={style}\n className={classNames('ndl-data-grid-nav', className)}\n aria-label=\"Pagination\"\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <>\n {/* Previous page */}\n {getCanPreviousPage()\n ? components.PaginationArrowButton && (\n <components.PaginationArrowButton\n action=\"previous\"\n onClick={previousPage}\n />\n )\n : null}\n {/* Pages - hidden on narrow containers */}\n {!isMediumNavigation && components.PaginationNumericButtons && (\n <components.PaginationNumericButtons />\n )}\n {/* Next page */}\n {getCanNextPage()\n ? components.PaginationArrowButton && (\n <components.PaginationArrowButton\n action=\"next\"\n onClick={nextPage}\n />\n )\n : null}\n </>\n )}\n </nav>\n );\n};\n\ntype NavigationProps = {\n children?: React.ReactNode;\n};\n\nconst Navigation = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', NavigationProps>) => {\n const {\n tableProps,\n components,\n isSkeletonLoading,\n skeletonProps,\n isSmallNavigation,\n } = useDataGridContext();\n\n const { getPageCount } = tableProps;\n\n return (\n <div\n ref={ref}\n style={{\n ...style,\n ...(isSmallNavigation && { justifyContent: 'end' }),\n }}\n className={classNames('ndl-data-grid-navigation', className)}\n {...restProps}\n {...htmlAttributes}\n >\n <>\n {children || (\n <>\n {components.TableResults && <components.TableResults />}\n <Skeleton\n onBackground=\"weak\"\n shape=\"rectangular\"\n height=\"36px\"\n {...skeletonProps}\n isLoading={isSkeletonLoading}\n >\n <div className=\"ndl-data-grid-navigation-right-items\">\n {getPageCount() > 1 && components.Pagination && (\n <components.Pagination />\n )}\n {/* Page size selector */}\n {components.RowsPerPage && <components.RowsPerPage />}\n </div>\n </Skeleton>\n </>\n )}\n </>\n </div>\n );\n};\n\ntype LoadingPlaceholderProps = {\n children?: React.ReactNode;\n};\n\nconst LoadingPlaceholder = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', LoadingPlaceholderProps>) => {\n return (\n <div\n ref={ref}\n style={style}\n className={classNames('nld-table-placeholder-wrapper', className)}\n role=\"row\"\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <div role=\"cell\" className=\"ndl-data-grid-placeholder\">\n <div className=\"ndl-data-grid-loading-placeholder\">\n <LoadingSpinner />\n <h6>Loading data</h6>\n </div>\n </div>\n )}\n </div>\n );\n};\n\ntype NoDataPlaceholderProps = {\n children?: React.ReactNode;\n};\n\nconst NoDataPlaceholder = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', NoDataPlaceholderProps>) => {\n return (\n <div\n ref={ref}\n style={style}\n className={classNames('nld-table-placeholder-wrapper', className)}\n role=\"row\"\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <NoDataPlaceholderContentWrapper>\n <NoDataIcon />\n <Typography variant=\"subheading-small\">No data available</Typography>\n </NoDataPlaceholderContentWrapper>\n )}\n </div>\n );\n};\n\ntype NoDataPlaceholderContentWrapperProps = {\n children?: React.ReactNode;\n};\n\nexport const NoDataPlaceholderContentWrapper = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', NoDataPlaceholderContentWrapperProps>) => {\n return (\n <div\n role=\"cell\"\n className={classNames('ndl-data-grid-placeholder', className)}\n ref={ref}\n style={style}\n {...restProps}\n {...htmlAttributes}\n >\n {children}\n </div>\n );\n};\n\nexport interface InlineEditCellProps<T extends RowData> {\n cell: CellContext<T, unknown>;\n value: string;\n ariaLabel: string;\n}\n\nconst InlineEditCell = <T extends RowData>({\n cell,\n value,\n ariaLabel,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'input', InlineEditCellProps<T>>) => {\n const [inputValue, setInputValue] = useState(value);\n\n useEffect(() => {\n setInputValue(value);\n }, [value]);\n\n const { dataGridNav } = useDataGridContext<T>();\n\n if (!cell.column.columnDef.meta?.isInlineEditCell) {\n return null;\n }\n\n return (\n <input\n ref={ref}\n style={style}\n className={className}\n onChange={(event) => setInputValue(event.target.value)}\n value={inputValue}\n onFocus={() => {\n dataGridNav.disable();\n }}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n cell?.column.columnDef.meta?.isInlineEditCell?.onEditChange(\n inputValue,\n cell,\n );\n event.currentTarget.parentElement?.focus();\n return;\n } else if (event.key === 'Escape') {\n event.currentTarget.parentElement?.focus();\n return;\n }\n }}\n onBlur={() => {\n setInputValue(value);\n dataGridNav.enable();\n }}\n aria-label={ariaLabel}\n {...restProps}\n {...htmlAttributes}\n />\n );\n};\n\ntype DropDownCellProps<T extends RowData> = {\n cell: CellContext<T, unknown>;\n options: {\n value: string;\n label: string;\n }[];\n /**\n * The target element to portal the menu of the select component to, e.g. the modal root if the data grid is inside a modal.\n * Defaults to the portalTarget prop of the DataGrid root component.\n */\n portalTarget?: HTMLElement | null;\n /** Aria label of the select component. Required for accessibility. */\n ariaLabel: string;\n /** Whether the select component is disabled */\n isDisabled?: boolean;\n /** Error message. If it exists the select will be in error state. */\n errorText?: string | React.ReactNode;\n /** Help text of the select component. */\n helpText?: string | React.ReactNode;\n /**\n * Override the underlying react-select components (e.g. `Option`, `SingleValue`,\n * `MultiValue`). Merged over the Needle defaults, so only the components you\n * pass are replaced.\n */\n components?: SelectComponentsConfig<\n DropDownCellOption,\n boolean,\n GroupBase<DropDownCellOption>\n >;\n};\n\ntype DropDownCellOption = {\n value: string;\n label: string;\n};\n\nconst DropDownCell = <T extends RowData>({\n cell,\n options,\n portalTarget: portalTargetProp,\n ariaLabel,\n className,\n style,\n htmlAttributes,\n ref: forwardRef,\n isDisabled,\n errorText,\n helpText,\n components,\n ...restProps\n}: CommonProps<'div', DropDownCellProps<T>>) => {\n const { dataGridNav, portalTarget } = useDataGridContext<T>();\n const ref = useRef<HTMLDivElement>(null);\n const mergedRef = useMergeRefs([ref, forwardRef]);\n\n const dropDownMeta = cell.column.columnDef.meta?.isDropDownCell;\n if (!dropDownMeta) {\n return null;\n }\n const isMulti = dropDownMeta.isMulti ?? false;\n\n const cellValue = cell.getValue();\n const selectedValues = (\n Array.isArray(cellValue) ? cellValue : [cellValue]\n ).map((value) => value?.toString());\n\n const defaultValue = isMulti\n ? options.filter((option) => selectedValues.includes(option.value))\n : options.find((option) => option.value === cellValue?.toString());\n\n const menuPortalTarget =\n portalTargetProp === undefined ? portalTarget : portalTargetProp;\n\n return (\n <Select<DropDownCellOption, boolean>\n ref={mergedRef}\n className={className}\n isFluid={true}\n isClean={true}\n style={{ ...style, height: '100%', width: '100%' }}\n type=\"select\"\n size=\"medium\"\n ariaLabel={ariaLabel}\n isDisabled={isDisabled}\n errorText={errorText}\n helpText={helpText}\n selectProps={{\n components: components,\n defaultValue,\n isMulti,\n menuPortalTarget: menuPortalTarget,\n menuPosition: 'fixed',\n onChange: (selected) => {\n const selectedOptions = Array.isArray(selected)\n ? (selected as DropDownCellOption[])\n : selected\n ? [selected as DropDownCellOption]\n : [];\n const values = selectedOptions.map((option) => option.value);\n // `TValue` is not known inside the component; cast once at this boundary\n // to invoke onChange with the resolved single/multi value.\n const handleChange = dropDownMeta.onChange as (\n newValue: string | string[] | undefined,\n cellArg: typeof cell,\n ) => void;\n handleChange(isMulti ? values : values[0], cell);\n dataGridNav.enable();\n if (ref?.current) {\n dataGridNav.focusParentCell(ref.current);\n }\n },\n onMenuOpen: () => {\n dataGridNav.disable();\n },\n options: options,\n styles: {\n container: () => ({ height: '100%', width: '100%' }),\n control: () => ({\n borderRadius: 0,\n height: '100%',\n paddingLeft: '16px !important',\n paddingRight: '16px !important',\n }),\n },\n }}\n htmlAttributes={htmlAttributes}\n {...restProps}\n />\n );\n};\n\nconst NoDataIcon = ({\n className,\n ...restProps\n}: React.ComponentPropsWithoutRef<typeof DataGridCrossIcon>) => {\n const classes = classNames('n-size-token-64', className);\n return <DataGridCrossIcon className={classes} {...restProps} />;\n};\n\nexport {\n ResizingBar,\n Header,\n Body,\n BodyCell,\n BodyRow,\n InlineEditCell,\n DropDownCell,\n ActionCell,\n HeaderCell,\n HeaderTitle,\n Navigation,\n TableResults,\n RowsPerPage,\n Pagination,\n PaginationNumericButtons,\n PaginationArrowButton,\n PaginationNumericButton,\n NoDataPlaceholder,\n NoDataIcon,\n LoadingPlaceholder,\n Scrollable,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"Components.js","sourceRoot":"","sources":["../../../src/data-grid/Components.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport { useMergeRefs } from '@floating-ui/react';\nimport {\n type Cell,\n type CellContext,\n flexRender,\n type Header as HeaderType,\n type Row,\n type RowData,\n type SortDirection,\n} from '@tanstack/react-table';\nimport classNames from 'classnames';\nimport type React from 'react';\nimport {\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { GroupBase, SelectComponentsConfig } from 'react-select';\n\nimport {\n type CommonProps,\n type PolymorphicCommonProps,\n} from '../_common/types';\nimport { CleanIconButton } from '../clean-icon-button';\nimport DataGridCrossIcon from '../icons/generated/custom/DataGridCross';\nimport { Bars3CenterLeftIconOutline } from '../icons/generated/heroIcons/Bars3CenterLeftIconOutline';\nimport { BarsArrowDownIconOutline } from '../icons/generated/heroIcons/BarsArrowDownIconOutline';\nimport { BarsArrowUpIconOutline } from '../icons/generated/heroIcons/BarsArrowUpIconOutline';\nimport { ChevronDownIconSolid } from '../icons/generated/heroIcons/ChevronDownIconSolid';\nimport { ChevronLeftIconOutline } from '../icons/generated/heroIcons/ChevronLeftIconOutline';\nimport { ChevronRightIconOutline } from '../icons/generated/heroIcons/ChevronRightIconOutline';\nimport { EllipsisHorizontalIconOutline } from '../icons/generated/heroIcons/EllipsisHorizontalIconOutline';\nimport { LoadingSpinner } from '../loading-spinner';\nimport { Menu } from '../menu';\nimport { Select } from '../select';\nimport { Skeleton } from '../skeleton';\nimport { Typography } from '../typography';\nimport { useDataGridContext } from './data-grid-context';\nimport { type ColumnAction } from './datagrid-types';\nimport {\n resizeColumn,\n ResizeDirection,\n userFriendlyPagination,\n} from './helpers';\nimport { useDataGridCellStyle } from './style-rules/hooks';\n\n/** Table results per page, with the first option being the default */\nconst TABLE_RESULTS = {\n DEFAULT: 10,\n values: [10, 25, 50, 100],\n} as const;\n\ntype paginationOption = {\n value: number;\n label: string;\n};\n\nconst getPaginationOptions = (pageSize: number): paginationOption[] => {\n return [...new Set([...TABLE_RESULTS.values, pageSize])]\n .sort((firstSize, secondSize) => firstSize - secondSize)\n .map((option) => ({\n label: `${option}`,\n value: option,\n }));\n};\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport const DEFAULT_SORT_ACTIONS: (cell: HeaderType<any, unknown>) => {\n [key in SortDirection | 'default']: ColumnAction;\n} = (cell) => ({\n asc: {\n icon: <BarsArrowUpIconOutline />,\n onClick: () => cell.column.toggleSorting(false),\n title: 'Sort ascending',\n },\n default: {\n icon: <Bars3CenterLeftIconOutline />,\n onClick: () => cell.column.clearSorting(),\n title: 'Default sort',\n },\n desc: {\n icon: <BarsArrowDownIconOutline />,\n onClick: () => cell.column.toggleSorting(true),\n title: 'Sort descending',\n },\n});\n\ntype ResizingBarProps<T extends RowData> = {\n header: HeaderType<T, unknown>;\n};\n\nconst ResizingBar = <T extends RowData>({\n header,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'button', ResizingBarProps<T>>) => {\n const { isKeyboardNavigationEnabled } = useDataGridContext<T>();\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === 'ArrowLeft') {\n event.stopPropagation();\n event.preventDefault();\n resizeColumn(ResizeDirection.LEFT, header);\n } else if (event.key === 'ArrowRight') {\n event.stopPropagation();\n event.preventDefault();\n resizeColumn(ResizeDirection.RIGHT, header);\n }\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={classNames('ndl-data-grid-resizer', className, {\n 'ndl-data-grid-is-resizing': header.column.getIsResizing(),\n })}\n style={style}\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n onKeyDown={handleKeyDown}\n aria-label=\"Resizing bar\"\n tabIndex={isKeyboardNavigationEnabled ? -1 : 0}\n {...restProps}\n {...htmlAttributes}\n />\n );\n};\n\ntype ScrollableProps = {\n children?: React.ReactNode;\n};\n\nconst Scrollable = ({\n children,\n ref,\n className,\n style,\n htmlAttributes,\n ...restProps\n}: CommonProps<'div', ScrollableProps> & {\n ref: React.RefObject<HTMLDivElement | null>;\n}) => {\n return (\n <div\n ref={ref}\n style={style}\n className={classNames('ndl-data-grid-scrollable', className)}\n {...restProps}\n {...htmlAttributes}\n >\n {children}\n </div>\n );\n};\n\ntype HeaderProps = {\n children?: React.ReactNode;\n};\n\nconst Header = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', HeaderProps>) => {\n const { tableProps, components } = useDataGridContext();\n const { getHeaderGroups, getState } = tableProps;\n\n return (\n <div\n role=\"rowgroup\"\n className={classNames('ndl-data-grid-thead', className, {\n 'ndl-data-grid-is-resizing':\n getState().columnSizingInfo.isResizingColumn,\n })}\n style={style}\n ref={ref}\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <>\n {getHeaderGroups().map((headerGroup) => (\n <div key={headerGroup.id} className=\"ndl-data-grid-tr\" role=\"row\">\n {headerGroup.headers.map(\n (header) =>\n components.HeaderCell && (\n <components.HeaderCell key={header.id} cell={header} />\n ),\n )}\n </div>\n ))}\n </>\n )}\n </div>\n );\n};\n\ntype ActionButtonProps = {\n action: ColumnAction;\n onClose: () => void;\n};\n\nexport const ActionButton = <T extends React.ElementType = 'button'>({\n action,\n onClose,\n as,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: PolymorphicCommonProps<T, ActionButtonProps>) => {\n const { onClick, ...restAction } = action;\n\n const interceptedOnClick = useCallback(\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n (event: any) => {\n const providedOnClick = onClick ?? action.onClick;\n if (typeof providedOnClick === 'function') {\n providedOnClick(event);\n }\n onClose?.();\n },\n [action.onClick, onClick, onClose],\n );\n\n return (\n <Menu.Item\n onClick={interceptedOnClick}\n as={as}\n className={className}\n style={style}\n htmlAttributes={htmlAttributes}\n ref={ref}\n {...restAction}\n {...restProps}\n />\n );\n};\n\nexport interface ActionCellProps<T extends RowData> {\n cell?: CellContext<T, unknown>;\n innerCleanIconButtonProps?: Partial<\n React.ComponentPropsWithoutRef<typeof CleanIconButton>\n >;\n innerMenuProps?: Partial<React.ComponentProps<typeof Menu>>;\n}\n\nconst ActionCell = <T extends RowData>({\n cell,\n innerCleanIconButtonProps,\n innerMenuProps,\n}: ActionCellProps<T>) => {\n const { components, isSkeletonLoading, portalTarget } =\n useDataGridContext<T>();\n const actionsButtonRef = useRef<HTMLButtonElement>(null);\n const [isActionsOpen, setIsActionsOpen] = useState(false);\n\n if (\n !cell ||\n !cell.column.columnDef.meta ||\n typeof cell.column.columnDef?.meta?.isActionCell !== 'object'\n ) {\n return null;\n }\n\n const { actions, onOpenChange } = cell.column.columnDef.meta.isActionCell;\n\n if (isSkeletonLoading) {\n return null;\n }\n\n return (\n <>\n <CleanIconButton\n as=\"button\"\n size=\"medium\"\n description=\"Actions\"\n ref={actionsButtonRef}\n isActive={isActionsOpen}\n onClick={() => {\n onOpenChange?.(!isActionsOpen);\n setIsActionsOpen(!isActionsOpen);\n }}\n {...innerCleanIconButtonProps}\n htmlAttributes={{\n tabIndex: 0,\n ...innerCleanIconButtonProps?.htmlAttributes,\n }}\n >\n {innerCleanIconButtonProps?.children || (\n <EllipsisHorizontalIconOutline />\n )}\n </CleanIconButton>\n <Menu\n isOpen={isActionsOpen}\n anchorRef={actionsButtonRef}\n onClose={() => {\n onOpenChange?.(false);\n setIsActionsOpen(false);\n }}\n {...innerMenuProps}\n portalTarget={portalTarget}\n >\n {innerMenuProps?.children || (\n <>\n {actions.map(\n (action, index) =>\n components.ActionButton && (\n <components.ActionButton\n key={`${cell.column.id}-action-${index}`}\n action={{\n ...action,\n onClick: (event) => {\n action.onClick?.(event, cell);\n },\n }}\n onClose={() => setIsActionsOpen(false)}\n />\n ),\n )}\n </>\n )}\n </Menu>\n </>\n );\n};\n\ntype ColumnControlsProps<T extends RowData> = {\n cell: HeaderType<T, unknown>;\n children?: React.ReactNode;\n};\n\nexport const ColumnControls = <T extends RowData>({\n cell,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', ColumnControlsProps<T>>) => {\n const { components, portalTarget } = useDataGridContext();\n\n const sort = cell.column.getIsSorted();\n const canSort = cell.column.getCanSort();\n const { hasDefaultSortingActions = true, actions } =\n cell.column.columnDef.meta?.columnActions || {};\n\n const sortingActions = useMemo(() => {\n if (canSort) {\n if (sort !== 'asc' && sort !== 'desc') {\n return [\n DEFAULT_SORT_ACTIONS(cell).asc,\n DEFAULT_SORT_ACTIONS(cell).desc,\n ];\n }\n if (sort === 'asc') {\n return [\n DEFAULT_SORT_ACTIONS(cell).default,\n DEFAULT_SORT_ACTIONS(cell).desc,\n ];\n }\n if (sort === 'desc') {\n return [\n DEFAULT_SORT_ACTIONS(cell).default,\n DEFAULT_SORT_ACTIONS(cell).asc,\n ];\n }\n }\n // Default case\n return [];\n }, [sort, cell, canSort]);\n\n const newActions: ColumnAction[] = [\n ...(hasDefaultSortingActions ? sortingActions : []),\n ...(actions ?? []),\n ];\n\n const actionsButtonRef = useRef<HTMLButtonElement>(null);\n const [isActionsOpen, setIsActionsOpen] = useState(false);\n\n if (!actions || actions.length === 0) {\n return null;\n }\n\n return newActions.length > 0 ? (\n <div\n ref={ref}\n className={classNames('ndl-header-action-group', className)}\n style={style}\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <Fragment>\n <CleanIconButton\n size=\"small\"\n description=\"Actions\"\n ref={actionsButtonRef}\n isActive={isActionsOpen}\n onClick={() => {\n setIsActionsOpen(!isActionsOpen);\n }}\n htmlAttributes={{\n tabIndex: 0,\n }}\n >\n <ChevronDownIconSolid />\n </CleanIconButton>\n <Menu\n isOpen={isActionsOpen}\n anchorRef={actionsButtonRef}\n onClose={() => setIsActionsOpen(false)}\n portalTarget={portalTarget}\n >\n {newActions.map(\n (action, index) =>\n components.ActionButton && (\n <components.ActionButton\n key={`${cell.column.id}-action-${index}`}\n action={action}\n onClose={() => setIsActionsOpen(false)}\n />\n ),\n )}\n </Menu>\n </Fragment>\n )}\n </div>\n ) : null;\n};\n\ntype HeaderCellProps<T> = {\n cell: HeaderType<T, unknown>;\n children?: React.ReactNode;\n};\n\nconst HeaderCell = <T extends RowData>({\n cell,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', HeaderCellProps<T>>) => {\n const { components, isResizable, isKeyboardNavigationEnabled } =\n useDataGridContext<T>();\n\n const sort = cell.column.getIsSorted();\n const canSort = cell.column.getCanSort();\n\n const ariaSortRole = useMemo(() => {\n switch (sort) {\n case 'asc':\n return 'ascending';\n case 'desc':\n return 'descending';\n default:\n return 'none';\n }\n }, [sort]);\n\n const Icon = useMemo(() => {\n switch (sort) {\n case 'asc':\n return <BarsArrowUpIconOutline className=\"ndl-header-icon\" />;\n case 'desc':\n return <BarsArrowDownIconOutline className=\"ndl-header-icon\" />;\n default:\n return (\n <Bars3CenterLeftIconOutline className=\"ndl-hoverable-indicator ndl-header-icon\" />\n );\n }\n }, [sort]);\n\n const ariaDescription = useMemo(() => {\n return canSort\n ? `Press ENTER or SPACE to sort column ${cell.column.id}`\n : `Column id: ${cell.column.id}`;\n }, [canSort, cell.column.id]);\n\n const isActionColumn = useMemo(\n () => typeof cell.column.columnDef.meta?.isActionCell === 'object',\n [cell.column.columnDef.meta],\n );\n\n const Tag = canSort ? 'button' : 'div';\n\n const InnerHeaderCell = () => (\n <div className=\"ndl-header-cell\">\n {cell.isPlaceholder\n ? null\n : flexRender(cell.column.columnDef.header, cell.getContext())}\n {canSort && Icon}\n </div>\n );\n\n return (\n <div\n ref={ref}\n tabIndex={isKeyboardNavigationEnabled && !isActionColumn ? 0 : undefined}\n key={cell.id}\n role=\"columnheader\"\n className={classNames('ndl-data-grid-th', className, {\n 'ndl-data-grid-is-resizing': cell.column.getIsResizing(),\n 'ndl-data-grid-pinned-cell': cell.column.getIsPinned(),\n 'ndl-data-grid-pinned-cell-left': cell.column.getIsPinned() === 'left',\n 'ndl-data-grid-pinned-cell-right':\n cell.column.getIsPinned() === 'right',\n 'ndl-data-grid-row-action': isActionColumn,\n 'ndl-focusable-cell': isKeyboardNavigationEnabled,\n })}\n aria-sort={ariaSortRole}\n style={{\n ...style,\n maxWidth: cell.column.columnDef.maxSize\n ? `${cell.column.columnDef.maxSize}px`\n : 'none',\n width: isActionColumn ? 40 : cell.getSize(),\n }}\n {...(isKeyboardNavigationEnabled\n ? {\n onKeyDown: (event) => {\n if (\n isResizable &&\n event.altKey &&\n (event.key === 'ArrowLeft' || event.key === 'ArrowRight')\n ) {\n const direction =\n event.key === 'ArrowLeft'\n ? ResizeDirection.LEFT\n : ResizeDirection.RIGHT;\n resizeColumn(direction, cell);\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n },\n }\n : {})}\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <>\n <Tag\n className=\"ndl-header-group\"\n style={{\n cursor: canSort ? 'pointer' : 'default',\n }}\n aria-description={ariaDescription}\n onClick={() => canSort && cell.column.toggleSorting()}\n tabIndex={canSort ? 0 : undefined}\n >\n {components.HeaderTitle ? (\n <components.HeaderTitle cell={cell}>\n <InnerHeaderCell />\n </components.HeaderTitle>\n ) : (\n <InnerHeaderCell />\n )}\n </Tag>\n {/* Column actions*/}\n {components.ColumnControls && (\n <components.ColumnControls cell={cell} />\n )}\n {/* Resizer*/}\n {isResizable &&\n cell.column.getCanResize() &&\n components.ResizingBar && <components.ResizingBar header={cell} />}\n </>\n )}\n </div>\n );\n};\n\ntype HeaderTitleProps<T> = {\n cell: HeaderType<T, unknown>;\n children?: React.ReactNode;\n};\n\nconst HeaderTitle = <T extends RowData>({\n cell,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', HeaderTitleProps<T>>) => {\n const { column, id } = cell;\n const title =\n typeof column.columnDef.header === 'string' ? column.columnDef.header : id;\n return (\n <div\n ref={ref}\n className={className}\n title={title}\n style={style}\n {...restProps}\n {...htmlAttributes}\n >\n {children}\n </div>\n );\n};\n\ntype BodyProps = {\n children?: React.ReactNode;\n};\n\nconst Body = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', BodyProps>) => {\n const { tableProps, components, isLoading } = useDataGridContext();\n const { getRowModel } = tableProps;\n\n return (\n <div\n ref={ref}\n style={style}\n className={classNames('ndl-data-grid-tbody', className)}\n role=\"rowgroup\"\n aria-busy={isLoading ? 'true' : 'false'}\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <>\n {isLoading && components.LoadingPlaceholder && (\n <components.LoadingPlaceholder />\n )}\n\n {!isLoading &&\n getRowModel().rows.length === 0 &&\n components.NoDataPlaceholder && <components.NoDataPlaceholder />}\n\n {!isLoading &&\n getRowModel().rows.map(\n (row, idx) =>\n components.BodyRow && (\n <components.BodyRow key={`table-row-${idx}`} row={row} />\n ),\n )}\n </>\n )}\n </div>\n );\n};\n\ntype BodyCellProps<T extends RowData> = {\n cell: Cell<T, unknown>;\n children?: React.ReactNode;\n};\n\nconst BodyCell = <T extends RowData>({\n cell,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', BodyCellProps<T>>) => {\n const isResizing = cell.column.getIsResizing();\n\n const isActionColumn = Boolean(cell.column.columnDef.meta?.isActionCell);\n const isInlineEditCell = Boolean(\n cell.column.columnDef.meta?.isInlineEditCell,\n );\n const isDropDownCell = Boolean(cell.column.columnDef.meta?.isDropDownCell);\n const isCustomCell = isActionColumn || isDropDownCell;\n const { isKeyboardNavigationEnabled, isSkeletonLoading, skeletonProps } =\n useDataGridContext();\n const ruleStyle = useDataGridCellStyle(cell);\n return (\n <div\n ref={ref}\n key={cell.id}\n className={classNames('ndl-data-grid-td', className, {\n 'ndl-data-grid-custom-cell': isCustomCell,\n 'ndl-data-grid-dropdown-cell': isDropDownCell,\n 'ndl-data-grid-inline-edit': isInlineEditCell,\n 'ndl-data-grid-is-resizing': isResizing,\n 'ndl-data-grid-pinned-cell': cell.column.getIsPinned(),\n 'ndl-data-grid-pinned-cell-left': cell.column.getIsPinned() === 'left',\n 'ndl-data-grid-pinned-cell-right':\n cell.column.getIsPinned() === 'right',\n 'ndl-data-grid-row-action': isActionColumn,\n 'ndl-focusable-cell': isKeyboardNavigationEnabled,\n })}\n role=\"cell\"\n tabIndex={isKeyboardNavigationEnabled ? 0 : undefined}\n style={{\n ...ruleStyle,\n ...style,\n width: isActionColumn ? 40 : cell.column.getSize(),\n }}\n {...restProps}\n {...htmlAttributes}\n >\n <Skeleton\n onBackground=\"weak\"\n shape=\"rectangular\"\n width=\"100%\"\n {...skeletonProps}\n isLoading={isSkeletonLoading && !isActionColumn}\n >\n {children || flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Skeleton>\n </div>\n );\n};\n\ntype BodyRowProps<T extends RowData> = {\n row: Row<T>;\n children?: React.ReactNode;\n};\n\nconst BodyRow = <T extends RowData>({\n row,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', BodyRowProps<T>>) => {\n const { components } = useDataGridContext<T>();\n\n return (\n <div\n key={row.id}\n ref={ref}\n style={style}\n className={classNames('ndl-data-grid-tr', className)}\n role=\"row\"\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <>\n {row\n .getVisibleCells()\n .map(\n (cell) =>\n components.BodyCell && (\n <components.BodyCell key={cell.id} cell={cell} />\n ),\n )}\n </>\n )}\n </div>\n );\n};\n\ntype TableResultProps = {\n manualPagination?: {\n from: number;\n to: number;\n totalRows: number;\n };\n children?: React.ReactNode;\n /**\n * The label to use for the results, meaning the word \"results\" in the sentence \"Showing X-Y of Z results\".\n * @defaultValue 'results'\n */\n resultsLabel?: string;\n};\n\nconst TableResults = ({\n manualPagination,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n resultsLabel = 'results',\n ...restProps\n}: CommonProps<'span', TableResultProps>) => {\n const { tableProps, isSkeletonLoading, skeletonProps, isSmallNavigation } =\n useDataGridContext();\n const { getState, getRowModel, getCoreRowModel } = tableProps;\n const {\n pagination: { pageSize, pageIndex },\n } = getState();\n const { rows } = getRowModel();\n\n const { from, to, totalRows } = useMemo(\n () =>\n manualPagination || {\n from: 1 + pageIndex * pageSize,\n to: rows.length + pageIndex * pageSize,\n totalRows: getCoreRowModel().rows.length,\n },\n [pageIndex, pageSize, manualPagination, rows, getCoreRowModel],\n );\n\n if (isSmallNavigation) {\n return null;\n }\n\n return (\n <Skeleton\n as=\"span\"\n onBackground=\"weak\"\n shape=\"rectangular\"\n {...skeletonProps}\n isLoading={isSkeletonLoading}\n >\n <span\n ref={ref}\n style={style}\n className={classNames('ndl-data-grid-results', className)}\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <span>\n Showing{' '}\n <span className=\"n-font-bold\">\n {totalRows ? `${from}${to !== from ? `-${to}` : ''}` : 0}\n </span>{' '}\n of <span className=\"n-font-bold\">{totalRows}</span> {resultsLabel}\n </span>\n )}\n </span>\n </Skeleton>\n );\n};\n\ntype RowsPerPageProps = {\n /**\n * The target element to portal the menu of the select component to.\n * Should be document.body normally, or the modal root if the select is inside a modal.\n * Defaults to the portalTarget prop of the DataGrid root component.\n */\n portalTarget?: HTMLElement | null;\n children?: React.ReactNode;\n};\n\nconst RowsPerPage = ({\n portalTarget: portalTargetProp,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', RowsPerPageProps>) => {\n const { tableProps, portalTarget } = useDataGridContext();\n\n const { setPageSize, getState } = tableProps;\n\n const {\n pagination: { pageSize },\n } = getState();\n\n const paginationOptions = getPaginationOptions(pageSize);\n const defaultPaginationOption = paginationOptions.find(\n (option) => option.value === pageSize,\n );\n\n const menuPortalTarget =\n portalTargetProp === undefined ? portalTarget : portalTargetProp;\n\n return (\n <div\n ref={ref}\n style={style}\n className={classNames('ndl-data-grid-rows-per-page', className)}\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <>\n Show\n <Select\n type=\"select\"\n size=\"medium\"\n ariaLabel=\"Select page size\"\n selectProps={{\n defaultValue: defaultPaginationOption,\n isSearchable: false,\n menuPortalTarget: menuPortalTarget,\n menuPosition: 'fixed',\n onChange: (option) => {\n if (option) {\n setPageSize(option.value);\n }\n },\n options: paginationOptions,\n styles: {\n container: () => ({\n width: '100%',\n }),\n },\n }}\n />\n </>\n )}\n </div>\n );\n};\n\ntype PaginationArrowButtonProps = {\n action: 'previous' | 'next';\n children?: React.ReactNode;\n onClick?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n};\n\nconst PaginationArrowButton = ({\n action,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'button', PaginationArrowButtonProps>) => {\n const PaginationIcon =\n action === 'previous' ? ChevronLeftIconOutline : ChevronRightIconOutline;\n const ariaLabel = action === 'previous' ? 'Previous page' : 'Next page';\n const classes = classNames('ndl-data-grid-pagination-icon-button', className);\n\n return (\n <CleanIconButton\n ref={ref}\n style={style}\n className={classes}\n description={ariaLabel}\n htmlAttributes={htmlAttributes}\n {...restProps}\n >\n {children || <PaginationIcon />}\n </CleanIconButton>\n );\n};\n\ntype PaginationNumericButtonProps = {\n currentIndex: number | string;\n isSelected: boolean;\n children?: React.ReactNode;\n onClick?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n};\n\nconst PaginationNumericButton = ({\n currentIndex,\n isSelected,\n children,\n className,\n style,\n htmlAttributes,\n onClick,\n ref,\n ...restProps\n}: CommonProps<'button', PaginationNumericButtonProps>) => {\n return (\n <button\n ref={ref}\n style={style}\n type=\"button\"\n data-testid={`ndl-table-${currentIndex}`}\n className={classNames(\n 'ndl-data-grid-pagination-numeric-button',\n className,\n {\n 'ndl-is-selected': isSelected,\n 'ndl-not-selected': !isSelected,\n 'ndl-not-selected-numeric':\n typeof currentIndex === 'number' && !isSelected,\n },\n )}\n onClick={(event) =>\n typeof currentIndex === 'number' && onClick && onClick(event)\n }\n tabIndex={typeof currentIndex === 'number' ? 0 : -1}\n {...restProps}\n {...htmlAttributes}\n >\n {children || currentIndex}\n </button>\n );\n};\n\nconst PaginationNumericButtons = () => {\n const { tableProps, components } = useDataGridContext();\n const { getState, setPageIndex, getPageCount } = tableProps;\n const {\n pagination: { pageIndex },\n } = getState();\n\n return (\n <>\n {userFriendlyPagination(pageIndex + 1, getPageCount()).map(\n (option, idx) =>\n components.PaginationNumericButton && (\n <components.PaginationNumericButton\n /** Use index to avoid situations where two \"...\" values will appear, causing a key conflict */\n key={`${option}-${idx}`}\n onClick={() =>\n typeof option === 'number' && setPageIndex(option - 1)\n }\n currentIndex={option}\n isSelected={option === pageIndex + 1}\n />\n ),\n )}\n </>\n );\n};\n\ntype PaginationProps = {\n children?: React.ReactNode;\n};\n\nconst Pagination = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'nav', PaginationProps>) => {\n const { tableProps, components, isMediumNavigation } = useDataGridContext();\n\n const { getCanPreviousPage, getCanNextPage, previousPage, nextPage } =\n tableProps;\n\n return (\n <nav\n ref={ref}\n style={style}\n className={classNames('ndl-data-grid-nav', className)}\n aria-label=\"Pagination\"\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <>\n {/* Previous page */}\n {getCanPreviousPage()\n ? components.PaginationArrowButton && (\n <components.PaginationArrowButton\n action=\"previous\"\n onClick={previousPage}\n />\n )\n : null}\n {/* Pages - hidden on narrow containers */}\n {!isMediumNavigation && components.PaginationNumericButtons && (\n <components.PaginationNumericButtons />\n )}\n {/* Next page */}\n {getCanNextPage()\n ? components.PaginationArrowButton && (\n <components.PaginationArrowButton\n action=\"next\"\n onClick={nextPage}\n />\n )\n : null}\n </>\n )}\n </nav>\n );\n};\n\ntype NavigationProps = {\n children?: React.ReactNode;\n};\n\nconst Navigation = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', NavigationProps>) => {\n const {\n tableProps,\n components,\n isSkeletonLoading,\n skeletonProps,\n isSmallNavigation,\n } = useDataGridContext();\n\n const { getPageCount } = tableProps;\n\n return (\n <div\n ref={ref}\n style={{\n ...style,\n ...(isSmallNavigation && { justifyContent: 'end' }),\n }}\n className={classNames('ndl-data-grid-navigation', className)}\n {...restProps}\n {...htmlAttributes}\n >\n <>\n {children || (\n <>\n {components.TableResults && <components.TableResults />}\n <Skeleton\n onBackground=\"weak\"\n shape=\"rectangular\"\n height=\"36px\"\n {...skeletonProps}\n isLoading={isSkeletonLoading}\n >\n <div className=\"ndl-data-grid-navigation-right-items\">\n {getPageCount() > 1 && components.Pagination && (\n <components.Pagination />\n )}\n {/* Page size selector */}\n {components.RowsPerPage && <components.RowsPerPage />}\n </div>\n </Skeleton>\n </>\n )}\n </>\n </div>\n );\n};\n\ntype LoadingPlaceholderProps = {\n children?: React.ReactNode;\n};\n\nconst LoadingPlaceholder = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', LoadingPlaceholderProps>) => {\n return (\n <div\n ref={ref}\n style={style}\n className={classNames('nld-table-placeholder-wrapper', className)}\n role=\"row\"\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <div role=\"cell\" className=\"ndl-data-grid-placeholder\">\n <div className=\"ndl-data-grid-loading-placeholder\">\n <LoadingSpinner />\n <h6>Loading data</h6>\n </div>\n </div>\n )}\n </div>\n );\n};\n\ntype NoDataPlaceholderProps = {\n children?: React.ReactNode;\n};\n\nconst NoDataPlaceholder = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', NoDataPlaceholderProps>) => {\n return (\n <div\n ref={ref}\n style={style}\n className={classNames('nld-table-placeholder-wrapper', className)}\n role=\"row\"\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <NoDataPlaceholderContentWrapper>\n <NoDataIcon />\n <Typography variant=\"subheading-medium\">No data available</Typography>\n </NoDataPlaceholderContentWrapper>\n )}\n </div>\n );\n};\n\ntype NoDataPlaceholderContentWrapperProps = {\n children?: React.ReactNode;\n};\n\nexport const NoDataPlaceholderContentWrapper = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', NoDataPlaceholderContentWrapperProps>) => {\n return (\n <div\n role=\"cell\"\n className={classNames('ndl-data-grid-placeholder', className)}\n ref={ref}\n style={style}\n {...restProps}\n {...htmlAttributes}\n >\n {children}\n </div>\n );\n};\n\nexport interface InlineEditCellProps<T extends RowData> {\n cell: CellContext<T, unknown>;\n value: string;\n ariaLabel: string;\n}\n\nconst InlineEditCell = <T extends RowData>({\n cell,\n value,\n ariaLabel,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'input', InlineEditCellProps<T>>) => {\n const [inputValue, setInputValue] = useState(value);\n\n useEffect(() => {\n setInputValue(value);\n }, [value]);\n\n const { dataGridNav } = useDataGridContext<T>();\n\n if (!cell.column.columnDef.meta?.isInlineEditCell) {\n return null;\n }\n\n return (\n <input\n ref={ref}\n style={style}\n className={className}\n onChange={(event) => setInputValue(event.target.value)}\n value={inputValue}\n onFocus={() => {\n dataGridNav.disable();\n }}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n cell?.column.columnDef.meta?.isInlineEditCell?.onEditChange(\n inputValue,\n cell,\n );\n event.currentTarget.parentElement?.focus();\n return;\n } else if (event.key === 'Escape') {\n event.currentTarget.parentElement?.focus();\n return;\n }\n }}\n onBlur={() => {\n setInputValue(value);\n dataGridNav.enable();\n }}\n aria-label={ariaLabel}\n {...restProps}\n {...htmlAttributes}\n />\n );\n};\n\ntype DropDownCellProps<T extends RowData> = {\n cell: CellContext<T, unknown>;\n options: {\n value: string;\n label: string;\n }[];\n /**\n * The target element to portal the menu of the select component to, e.g. the modal root if the data grid is inside a modal.\n * Defaults to the portalTarget prop of the DataGrid root component.\n */\n portalTarget?: HTMLElement | null;\n /** Aria label of the select component. Required for accessibility. */\n ariaLabel: string;\n /** Whether the select component is disabled */\n isDisabled?: boolean;\n /** Error message. If it exists the select will be in error state. */\n errorText?: string | React.ReactNode;\n /** Help text of the select component. */\n helpText?: string | React.ReactNode;\n /**\n * Override the underlying react-select components (e.g. `Option`, `SingleValue`,\n * `MultiValue`). Merged over the Needle defaults, so only the components you\n * pass are replaced.\n */\n components?: SelectComponentsConfig<\n DropDownCellOption,\n boolean,\n GroupBase<DropDownCellOption>\n >;\n};\n\ntype DropDownCellOption = {\n value: string;\n label: string;\n};\n\nconst DropDownCell = <T extends RowData>({\n cell,\n options,\n portalTarget: portalTargetProp,\n ariaLabel,\n className,\n style,\n htmlAttributes,\n ref: forwardRef,\n isDisabled,\n errorText,\n helpText,\n components,\n ...restProps\n}: CommonProps<'div', DropDownCellProps<T>>) => {\n const { dataGridNav, portalTarget } = useDataGridContext<T>();\n const ref = useRef<HTMLDivElement>(null);\n const mergedRef = useMergeRefs([ref, forwardRef]);\n\n const dropDownMeta = cell.column.columnDef.meta?.isDropDownCell;\n if (!dropDownMeta) {\n return null;\n }\n const isMulti = dropDownMeta.isMulti ?? false;\n\n const cellValue = cell.getValue();\n const selectedValues = (\n Array.isArray(cellValue) ? cellValue : [cellValue]\n ).map((value) => value?.toString());\n\n const defaultValue = isMulti\n ? options.filter((option) => selectedValues.includes(option.value))\n : options.find((option) => option.value === cellValue?.toString());\n\n const menuPortalTarget =\n portalTargetProp === undefined ? portalTarget : portalTargetProp;\n\n return (\n <Select<DropDownCellOption, boolean>\n ref={mergedRef}\n className={className}\n isFluid={true}\n isClean={true}\n style={{ ...style, height: '100%', width: '100%' }}\n type=\"select\"\n size=\"medium\"\n ariaLabel={ariaLabel}\n isDisabled={isDisabled}\n errorText={errorText}\n helpText={helpText}\n selectProps={{\n components: components,\n defaultValue,\n isMulti,\n menuPortalTarget: menuPortalTarget,\n menuPosition: 'fixed',\n onChange: (selected) => {\n const selectedOptions = Array.isArray(selected)\n ? (selected as DropDownCellOption[])\n : selected\n ? [selected as DropDownCellOption]\n : [];\n const values = selectedOptions.map((option) => option.value);\n // `TValue` is not known inside the component; cast once at this boundary\n // to invoke onChange with the resolved single/multi value.\n const handleChange = dropDownMeta.onChange as (\n newValue: string | string[] | undefined,\n cellArg: typeof cell,\n ) => void;\n handleChange(isMulti ? values : values[0], cell);\n dataGridNav.enable();\n if (ref?.current) {\n dataGridNav.focusParentCell(ref.current);\n }\n },\n onMenuOpen: () => {\n dataGridNav.disable();\n },\n options: options,\n styles: {\n container: () => ({ height: '100%', width: '100%' }),\n control: () => ({\n borderRadius: 0,\n height: '100%',\n paddingLeft: '16px !important',\n paddingRight: '16px !important',\n }),\n },\n }}\n htmlAttributes={htmlAttributes}\n {...restProps}\n />\n );\n};\n\nconst NoDataIcon = ({\n className,\n ...restProps\n}: React.ComponentPropsWithoutRef<typeof DataGridCrossIcon>) => {\n const classes = classNames('n-size-token-64', className);\n return <DataGridCrossIcon className={classes} {...restProps} />;\n};\n\nexport {\n ResizingBar,\n Header,\n Body,\n BodyCell,\n BodyRow,\n InlineEditCell,\n DropDownCell,\n ActionCell,\n HeaderCell,\n HeaderTitle,\n Navigation,\n TableResults,\n RowsPerPage,\n Pagination,\n PaginationNumericButtons,\n PaginationArrowButton,\n PaginationNumericButton,\n NoDataPlaceholder,\n NoDataIcon,\n LoadingPlaceholder,\n Scrollable,\n};\n"]}
|
|
@@ -153,7 +153,7 @@ export const Searchable = () => {
|
|
|
153
153
|
}
|
|
154
154
|
}, offset: ({ rects }) => ({
|
|
155
155
|
crossAxis: -rects.floating.width,
|
|
156
|
-
}), children: _jsx(Popover.Content, { children: _jsxs("div", { className: "n-grid n-gap-token-16 n-p-token-24 n-w-[300px]", children: [_jsxs("div", { className: "n-w-full n-flex n-justify-between n-items-center", children: [_jsx(Typography, { variant: "title-
|
|
156
|
+
}), children: _jsx(Popover.Content, { children: _jsxs("div", { className: "n-grid n-gap-token-16 n-p-token-24 n-w-[300px]", children: [_jsxs("div", { className: "n-w-full n-flex n-justify-between n-items-center", children: [_jsx(Typography, { variant: "title-3", children: "Filter" }), _jsx(CleanIconButton, { onClick: handleClose, description: "Close filter menu", size: "medium", htmlAttributes: {
|
|
157
157
|
title: 'Close filter menu',
|
|
158
158
|
}, children: _jsx(XMarkIconOutline, {}) })] }), _jsxs("div", { className: "n-flex n-flex-col n-gap-2", children: [_jsx(Typography, { variant: "body-medium", className: "n-text-neutral-text-weaker n-pb-token-4", children: "Age" }), _jsx(Checkbox, { isChecked: isAgeFilterApplied('min', 18), label: "Age >= 18", onClick: () => toggleAgeFilter({ min: 18 }) }), _jsx(Checkbox, { isChecked: isAgeFilterApplied('max', 63), label: "Age <= 63", onClick: () => toggleAgeFilter({ max: 63 }) })] }), _jsx(TextButton, { className: "n-mt-token-32 n-justify-self-end", variant: "danger", "aria-label": "Clear filters", onClick: () => {
|
|
159
159
|
table.resetColumnFilters();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datagrid-search-and-filters.stories.js","sourceRoot":"","sources":["../../../../src/data-grid/stories/datagrid-search-and-filters.stories.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,yCAAyC,CAAC;AAEjD,OAAO,EACL,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,OAAO,EACP,UAAU,EACV,OAAO,EACP,UAAU,EACV,SAAS,EACT,UAAU,GACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAGL,kBAAkB,EAElB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,GACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAQ/C,eAAe;IACb,SAAS,EAAE,QAAQ;IACnB,EAAE,EAAE,yCAAyC;IAC7C,UAAU,EAAE;QACV,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;QAC1B,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;KAC5B;IACD,KAAK,EAAE,wCAAwC;CAChD,CAAC;AAOF;;;GAGG;AACH,MAAM,cAAc,GAA6B,CAC/C,GAAG,EACH,QAAQ,EACR,WAAmB,EACnB,EAAE;IACF,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAEzC,IAAI,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAW,CAAC;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAAC,EAChC,OAAO,EACP,MAAM,EACN,WAAW,EACX,GAAG,GAGwD,EAAE,EAAE,CAAC,CAChE,KAAC,UAAU,IACT,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,OAAO,mBACD,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,mBACpC,MAAM,mBACL,MAAM,EACrB,WAAW,EAAE,WAAW,EACxB,IAAI,EAAC,QAAQ,YAEb,KAAC,iBAAiB,KAAG,GACV,CACd,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAqB,IAAI,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACzC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAqB,EAAE,CAAC,CAAC;IAE3E,MAAM,WAAW,GAAG,CAClB,KAAuE,EACvE,EAAE;QACF,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,WAAW,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,kBAAkB,EAAkB,CAAC;IAE1D,MAAM,OAAO,GAAG;QACd,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC5B,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC/B,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAChC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM;YACpB,OAAO,EAAE,GAAG;YACZ,OAAO,EAAE,GAAG;YACZ,IAAI,EAAE,GAAG;SACV,CAAC;QACF,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE;YAC3B,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE;YAClC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAChC,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK;YACnB,OAAO,EAAE,EAAE;SACZ,CAAC;QACF,YAAY,CAAC,QAAQ,CAAC,eAAe,EAAE;YACrC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC/B,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAChC,MAAM,EAAE,GAAG,EAAE,CAAC,gBAAgB;YAC9B,OAAO,EAAE,GAAG;YACZ,IAAI,EAAE,GAAG;SACV,CAAC;KACH,CAAC;IAEF,MAAM,KAAK,GAAG,aAAa,CAAC;QAC1B,gBAAgB,EAAE,UAAU;QAC5B,OAAO;QACP,IAAI,EAAE,eAAe;QACrB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE;YACb,OAAO,EAAE,GAAG;YACZ,OAAO,EAAE,EAAE;SACZ;QACD,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,EAAE;QACb,eAAe,EAAE,eAAe,EAAE;QAClC,mBAAmB,EAAE,mBAAmB,EAAE;QAC1C,qBAAqB,EAAE,qBAAqB,EAAE;QAC9C,cAAc,EAAE,cAAc;QAC9B,YAAY,EAAE;YACZ,UAAU,EAAE;gBACV,QAAQ,EAAE,CAAC;aACZ;SACF;QACD,qBAAqB,EAAE,gBAAgB;QACvC,oBAAoB,EAAE,eAAe;QACrC,KAAK,EAAE;YACL,aAAa;YACb,YAAY;SACb;KACF,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAoB,EAAE,EAAE;QACzD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAEzC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAG,SAAS,CAAC,cAAc,EAEjC,CAAC;QAEd,yEAAyE;QACzE,MAAM,iBAAiB,GAAG,CAAC,YAAqB,EAAE,QAAiB,EAAE,EAAE;YACrE,IAAI,QAAQ,KAAK,SAAS,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACxD,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC;QAC1D,CAAC,CAAC;QAEF,MAAM,SAAS,GAAuB;YACpC,iBAAiB,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAG,CAAC,CAAC,EAAE,GAAG,CAAC;YAC1C,iBAAiB,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAG,CAAC,CAAC,EAAE,GAAG,CAAC;SAC3C,CAAC;QAEF,6CAA6C;QAC7C,SAAS,CAAC,cAAc,CACtB,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS;YACtD,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,SAAS,CACd,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,CAAC,IAAmB,EAAE,KAAa,EAAE,EAAE;QAChE,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;QACtE,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC,KAAyB,CAAC;YACvD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnB,OAAO,GAAG,KAAK,KAAK,CAAC;YACvB,CAAC;YACD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnB,OAAO,GAAG,KAAK,KAAK,CAAC;YACvB,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,mBAAmB,EAAC,GAAG,EAAE,GAAG,aACzC,cAAK,SAAS,EAAC,gDAAgD,YAC7D,eAAK,SAAS,EAAC,sBAAsB,aACnC,KAAC,SAAS,kBACG,cAAc,EACzB,KAAK,EAAE,YAAY,EACnB,WAAW,EAAC,QAAQ,EACpB,cAAc,EAAE,KAAC,0BAA0B,KAAG,EAC9C,WAAW,EAAE,IAAI,EACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GACxD,EACF,KAAC,wBAAwB,IACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,WAAW,EACpB,WAAW,EAAC,aAAa,GACzB,IACE,GACF,EACN,KAAC,OAAO,KAAG,EACX,KAAC,QAAQ,IAAC,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,GAAI,EACrD,KAAC,OAAO,IACN,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,QAAQ,EACvB,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE;oBACvB,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,WAAW,EAAE,CAAC;oBAChB,CAAC;gBACH,CAAC,EACD,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;oBACtB,SAAS,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK;iBACjC,CAAC,YAEF,KAAC,OAAO,CAAC,OAAO,cACd,eAAK,SAAS,EAAC,gDAAgD,aAC7D,eAAK,SAAS,EAAC,kDAAkD,aAC/D,KAAC,UAAU,IAAC,OAAO,EAAC,SAAS,uBAAoB,EACjD,KAAC,eAAe,IACd,OAAO,EAAE,WAAW,EACpB,WAAW,EAAC,mBAAmB,EAC/B,IAAI,EAAC,QAAQ,EACb,cAAc,EAAE;4CACd,KAAK,EAAE,mBAAmB;yCAC3B,YAED,KAAC,gBAAgB,KAAG,GACJ,IACd,EACN,eAAK,SAAS,EAAC,2BAA2B,aACxC,KAAC,UAAU,IACT,OAAO,EAAC,aAAa,EACrB,SAAS,EAAC,yCAAyC,oBAGxC,EACb,KAAC,QAAQ,IACP,SAAS,EAAE,kBAAkB,CAAC,KAAK,EAAE,EAAE,CAAC,EACxC,KAAK,EAAC,WAAW,EACjB,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAC3C,EACF,KAAC,QAAQ,IACP,SAAS,EAAE,kBAAkB,CAAC,KAAK,EAAE,EAAE,CAAC,EACxC,KAAK,EAAC,WAAW,EACjB,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAC3C,IACE,EACN,KAAC,UAAU,IACT,SAAS,EAAC,kCAAkC,EAC5C,OAAO,EAAC,QAAQ,gBACL,eAAe,EAC1B,OAAO,EAAE,GAAG,EAAE;oCACZ,KAAK,CAAC,kBAAkB,EAAE,CAAC;gCAC7B,CAAC,YAED,KAAC,UAAU,IACT,OAAO,EAAC,aAAa,EACrB,SAAS,EAAC,gCAAgC,0BAG/B,GACF,IACT,GACU,GACV,IACN,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC5D,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,YAAY,GAAG,kBAAkB,EAAkB,CAAC;IAE1D,MAAM,aAAa,GAAwC;QACzD,aAAa,EAAE;YACb,OAAO,EAAE;gBACP;oBACE,OAAO,EAAE,GAAG,EAAE;wBACZ,qDAAqD;wBACrD,IAAI,kBAAkB,EAAE,CAAC;4BACvB,YAAY,CAAC,eAAe,CAAC,CAAC;4BAC9B,qBAAqB,CAAC,KAAK,CAAC,CAAC;4BAC7B,OAAO;wBACT,CAAC;6BAAM,CAAC;4BACN,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CACzC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CACzB,CAAC;4BACF,YAAY,CAAC,YAAY,CAAC,CAAC;4BAC3B,qBAAqB,CAAC,IAAI,CAAC,CAAC;wBAC9B,CAAC;oBACH,CAAC;oBACD,KAAK,EAAE,WAAW;iBACnB;aACF;SACF;KACF,CAAC;IAEF,MAAM,OAAO,GAAG;QACd,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC5B,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC/B,OAAO,EAAE,GAAG;YACZ,OAAO,EAAE,GAAG;YACZ,IAAI,EAAE,GAAG;SACV,CAAC;QACF,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE;YAC3B,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC/B,MAAM,EAAE,GAAG,EAAE,CAAC,gCAAc;YAC5B,IAAI,oBACC,aAAa,CACjB;YACD,OAAO,EAAE,EAAE;SACZ,CAAC;QACF,YAAY,CAAC,QAAQ,CAAC,eAAe,EAAE;YACrC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC/B,OAAO,EAAE,GAAG;YACZ,IAAI,EAAE,GAAG;SACV,CAAC;KACH,CAAC;IAEF,MAAM,KAAK,GAAG,aAAa,CAAC;QAC1B,gBAAgB,EAAE,UAAU;QAC5B,OAAO;QACP,IAAI,EAAE,SAAS;QACf,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE;YACb,OAAO,EAAE,GAAG;YACZ,OAAO,EAAE,EAAE;SACZ;QACD,aAAa,EAAE,IAAI;QACnB,eAAe,EAAE,eAAe,EAAE;QAClC,qBAAqB,EAAE,qBAAqB,EAAE;QAC9C,iBAAiB,EAAE,iBAAiB,EAAE;QACtC,YAAY,EAAE;YACZ,UAAU,EAAE;gBACV,QAAQ,EAAE,CAAC;aACZ;SACF;KACF,CAAC,CAAC;IAEH,OAAO,CACL,cAAK,SAAS,EAAC,yDAAyD,YACtE,KAAC,QAAQ,IACP,mBAAmB,EAAE,IAAI,EACzB,WAAW,EAAE,IAAI,EACjB,aAAa,EAAE,KAAK,GACpB,GACE,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport '@neo4j-ndl/base/lib/neo4j-ds-styles.css';\n\nimport {\n Checkbox,\n CleanIconButton,\n DataGrid,\n Divider,\n IconButton,\n Popover,\n TextButton,\n TextInput,\n Typography,\n} from '@neo4j-ndl/react';\nimport {\n FunnelIconOutline,\n MagnifyingGlassIconOutline,\n XMarkIconOutline,\n} from '@neo4j-ndl/react/icons';\nimport {\n type ColumnFiltersState,\n type ColumnMeta,\n createColumnHelper,\n type FilterFn,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from '@tanstack/react-table';\nimport { useRef, useState } from 'react';\n\nimport { TABLE_DEMO_DATA } from './staticData';\n\ntype TestDataFormat = {\n name: string;\n age: number;\n cypherCommand: string;\n};\n\nexport default {\n component: DataGrid,\n id: 'components-data-grid-search-and-filters',\n parameters: {\n chromatic: { delay: 1000 },\n controls: { disable: true },\n },\n title: 'Components/DataGrid/Search And Filters',\n};\n\ninterface AgeFilterOptions {\n min?: number;\n max?: number;\n}\n\n/**\n * Custom global function as there is a bug in current version:\n * https://github.com/TanStack/table/issues/4280#issuecomment-1244878232\n */\nconst globalFilterFn: FilterFn<TestDataFormat> = (\n row,\n columnId,\n filterValue: string,\n) => {\n const search = filterValue.toLowerCase();\n\n let value = row.getValue(columnId) as string;\n if (typeof value === 'number') {\n value = String(value);\n }\n\n return value?.toLowerCase().includes(search);\n};\n\nconst OpenFilterMenuIconButton = ({\n onClick,\n isOpen,\n description,\n ref,\n}: {\n isOpen: boolean;\n} & Omit<React.ComponentProps<typeof IconButton>, 'children'>) => (\n <IconButton\n ref={ref}\n onClick={onClick}\n aria-controls={isOpen ? 'default-menu' : undefined}\n aria-haspopup=\"true\"\n aria-expanded={isOpen}\n description={description}\n size=\"medium\"\n >\n <FunnelIconOutline />\n </IconButton>\n);\n\nexport const Searchable = () => {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const isOpen = Boolean(anchorEl);\n const ref = useRef<HTMLDivElement>(null);\n const [globalFilter, setGlobalFilter] = useState('');\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);\n\n const handleClick = (\n event: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>,\n ) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const columnHelper = createColumnHelper<TestDataFormat>();\n\n const columns = [\n columnHelper.accessor('name', {\n cell: (info) => info.getValue(),\n footer: (info) => info.column.id,\n header: () => 'Name',\n maxSize: 300,\n minSize: 180,\n size: 220,\n }),\n columnHelper.accessor('age', {\n cell: (info) => info.renderValue(),\n footer: (info) => info.column.id,\n header: () => 'Age',\n minSize: 80,\n }),\n columnHelper.accessor('cypherCommand', {\n cell: (info) => info.getValue(),\n footer: (info) => info.column.id,\n header: () => 'Cypher Command',\n minSize: 400,\n size: 400,\n }),\n ];\n\n const table = useReactTable({\n columnResizeMode: 'onChange',\n columns,\n data: TABLE_DEMO_DATA,\n debugColumns: true,\n debugHeaders: true,\n debugTable: true,\n defaultColumn: {\n maxSize: 800,\n minSize: 80,\n },\n enableSorting: false,\n filterFns: {},\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n globalFilterFn: globalFilterFn,\n initialState: {\n pagination: {\n pageSize: 5,\n },\n },\n onColumnFiltersChange: setColumnFilters,\n onGlobalFilterChange: setGlobalFilter,\n state: {\n columnFilters,\n globalFilter,\n },\n });\n\n const toggleAgeFilter = ({ min, max }: AgeFilterOptions) => {\n const ageColumn = table.getColumn('age');\n\n if (!ageColumn) {\n return;\n }\n\n const currentFilter = ageColumn.getFilterValue() as\n | [number?, number?]\n | undefined;\n\n // Helper function to determine the new filter value for a specific bound\n const determineNewBound = (currentBound?: number, newBound?: number) => {\n if (newBound !== undefined && currentBound === newBound) {\n return undefined;\n }\n return newBound !== undefined ? newBound : currentBound;\n };\n\n const newFilter: [number?, number?] = [\n determineNewBound(currentFilter?.[0], min),\n determineNewBound(currentFilter?.[1], max),\n ];\n\n // Update the filter value in the table state\n ageColumn.setFilterValue(\n newFilter[0] === undefined && newFilter[1] === undefined\n ? undefined\n : newFilter,\n );\n };\n\n const isAgeFilterApplied = (type: 'min' | 'max', value: number) => {\n const ageFilter = columnFilters.find((filter) => filter.id === 'age');\n if (ageFilter) {\n const [min, max] = ageFilter.value as [number, number];\n if (type === 'min') {\n return min === value;\n }\n if (type === 'max') {\n return max === value;\n }\n }\n return false;\n };\n\n return (\n <div className=\"n-flex n-flex-col\" ref={ref}>\n <div className=\"n-flex n-flex-col n-gap-token-16 n-pb-token-16\">\n <div className=\"n-flex n-gap-token-8\">\n <TextInput\n aria-label=\"Table search\"\n value={globalFilter}\n placeholder=\"Search\"\n leadingElement={<MagnifyingGlassIconOutline />}\n isClearable={true}\n onChange={(event) => setGlobalFilter(event.target.value)}\n />\n <OpenFilterMenuIconButton\n isOpen={isOpen}\n onClick={handleClick}\n description=\"Filter Menu\"\n />\n </div>\n </div>\n <Divider />\n <DataGrid isResizable={true} tableInstance={table} />\n <Popover\n isOpen={isOpen}\n anchorElement={anchorEl}\n onOpenChange={(isOpen) => {\n if (!isOpen) {\n handleClose();\n }\n }}\n offset={({ rects }) => ({\n crossAxis: -rects.floating.width,\n })}\n >\n <Popover.Content>\n <div className=\"n-grid n-gap-token-16 n-p-token-24 n-w-[300px]\">\n <div className=\"n-w-full n-flex n-justify-between n-items-center\">\n <Typography variant=\"title-4\">Filter</Typography>\n <CleanIconButton\n onClick={handleClose}\n description=\"Close filter menu\"\n size=\"medium\"\n htmlAttributes={{\n title: 'Close filter menu',\n }}\n >\n <XMarkIconOutline />\n </CleanIconButton>\n </div>\n <div className=\"n-flex n-flex-col n-gap-2\">\n <Typography\n variant=\"body-medium\"\n className=\"n-text-neutral-text-weaker n-pb-token-4\"\n >\n Age\n </Typography>\n <Checkbox\n isChecked={isAgeFilterApplied('min', 18)}\n label=\"Age >= 18\"\n onClick={() => toggleAgeFilter({ min: 18 })}\n />\n <Checkbox\n isChecked={isAgeFilterApplied('max', 63)}\n label=\"Age <= 63\"\n onClick={() => toggleAgeFilter({ max: 63 })}\n />\n </div>\n <TextButton\n className=\"n-mt-token-32 n-justify-self-end\"\n variant=\"danger\"\n aria-label=\"Clear filters\"\n onClick={() => {\n table.resetColumnFilters();\n }}\n >\n <Typography\n variant=\"body-medium\"\n className=\"n-text-danger-text n-font-bold\"\n >\n Clear all\n </Typography>\n </TextButton>\n </div>\n </Popover.Content>\n </Popover>\n </div>\n );\n};\n\nexport const ColumnFiltering = () => {\n const [tableData, setTableData] = useState(TABLE_DEMO_DATA);\n const [isAgeFilterApplied, setIsAgeFilterApplied] = useState(false);\n const columnHelper = createColumnHelper<TestDataFormat>();\n\n const ColumnActions: ColumnMeta<TestDataFormat, unknown> = {\n columnActions: {\n actions: [\n {\n onClick: () => {\n // Filter the input table data value, TABLE_DEMO_DATA\n if (isAgeFilterApplied) {\n setTableData(TABLE_DEMO_DATA);\n setIsAgeFilterApplied(false);\n return;\n } else {\n const filteredData = TABLE_DEMO_DATA.filter(\n (data) => data.age >= 18,\n );\n setTableData(filteredData);\n setIsAgeFilterApplied(true);\n }\n },\n title: 'Age >= 18',\n },\n ],\n },\n };\n\n const columns = [\n columnHelper.accessor('name', {\n cell: (info) => info.getValue(),\n maxSize: 300,\n minSize: 180,\n size: 220,\n }),\n columnHelper.accessor('age', {\n cell: (info) => info.getValue(),\n header: () => <div>Age</div>,\n meta: {\n ...ColumnActions,\n },\n minSize: 80,\n }),\n columnHelper.accessor('cypherCommand', {\n cell: (info) => info.getValue(),\n minSize: 400,\n size: 400,\n }),\n ];\n\n const table = useReactTable({\n columnResizeMode: 'onChange',\n columns,\n data: tableData,\n debugColumns: true,\n debugHeaders: true,\n debugTable: true,\n defaultColumn: {\n maxSize: 800,\n minSize: 80,\n },\n enableSorting: true,\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n initialState: {\n pagination: {\n pageSize: 5,\n },\n },\n });\n\n return (\n <div className=\"n-h-[1000px] n-w-full n-bg-primary-bg-weak n-p-token-32\">\n <DataGrid\n isKeyboardNavigable={true}\n isResizable={true}\n tableInstance={table}\n />\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"datagrid-search-and-filters.stories.js","sourceRoot":"","sources":["../../../../src/data-grid/stories/datagrid-search-and-filters.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport '@neo4j-ndl/base/lib/neo4j-ds-styles.css';\n\nimport {\n Checkbox,\n CleanIconButton,\n DataGrid,\n Divider,\n IconButton,\n Popover,\n TextButton,\n TextInput,\n Typography,\n} from '@neo4j-ndl/react';\nimport {\n FunnelIconOutline,\n MagnifyingGlassIconOutline,\n XMarkIconOutline,\n} from '@neo4j-ndl/react/icons';\nimport {\n type ColumnFiltersState,\n type ColumnMeta,\n createColumnHelper,\n type FilterFn,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from '@tanstack/react-table';\nimport { useRef, useState } from 'react';\n\nimport { TABLE_DEMO_DATA } from './staticData';\n\ntype TestDataFormat = {\n name: string;\n age: number;\n cypherCommand: string;\n};\n\nexport default {\n component: DataGrid,\n id: 'components-data-grid-search-and-filters',\n parameters: {\n chromatic: { delay: 1000 },\n controls: { disable: true },\n },\n title: 'Components/DataGrid/Search And Filters',\n};\n\ninterface AgeFilterOptions {\n min?: number;\n max?: number;\n}\n\n/**\n * Custom global function as there is a bug in current version:\n * https://github.com/TanStack/table/issues/4280#issuecomment-1244878232\n */\nconst globalFilterFn: FilterFn<TestDataFormat> = (\n row,\n columnId,\n filterValue: string,\n) => {\n const search = filterValue.toLowerCase();\n\n let value = row.getValue(columnId) as string;\n if (typeof value === 'number') {\n value = String(value);\n }\n\n return value?.toLowerCase().includes(search);\n};\n\nconst OpenFilterMenuIconButton = ({\n onClick,\n isOpen,\n description,\n ref,\n}: {\n isOpen: boolean;\n} & Omit<React.ComponentProps<typeof IconButton>, 'children'>) => (\n <IconButton\n ref={ref}\n onClick={onClick}\n aria-controls={isOpen ? 'default-menu' : undefined}\n aria-haspopup=\"true\"\n aria-expanded={isOpen}\n description={description}\n size=\"medium\"\n >\n <FunnelIconOutline />\n </IconButton>\n);\n\nexport const Searchable = () => {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const isOpen = Boolean(anchorEl);\n const ref = useRef<HTMLDivElement>(null);\n const [globalFilter, setGlobalFilter] = useState('');\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);\n\n const handleClick = (\n event: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>,\n ) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const columnHelper = createColumnHelper<TestDataFormat>();\n\n const columns = [\n columnHelper.accessor('name', {\n cell: (info) => info.getValue(),\n footer: (info) => info.column.id,\n header: () => 'Name',\n maxSize: 300,\n minSize: 180,\n size: 220,\n }),\n columnHelper.accessor('age', {\n cell: (info) => info.renderValue(),\n footer: (info) => info.column.id,\n header: () => 'Age',\n minSize: 80,\n }),\n columnHelper.accessor('cypherCommand', {\n cell: (info) => info.getValue(),\n footer: (info) => info.column.id,\n header: () => 'Cypher Command',\n minSize: 400,\n size: 400,\n }),\n ];\n\n const table = useReactTable({\n columnResizeMode: 'onChange',\n columns,\n data: TABLE_DEMO_DATA,\n debugColumns: true,\n debugHeaders: true,\n debugTable: true,\n defaultColumn: {\n maxSize: 800,\n minSize: 80,\n },\n enableSorting: false,\n filterFns: {},\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n globalFilterFn: globalFilterFn,\n initialState: {\n pagination: {\n pageSize: 5,\n },\n },\n onColumnFiltersChange: setColumnFilters,\n onGlobalFilterChange: setGlobalFilter,\n state: {\n columnFilters,\n globalFilter,\n },\n });\n\n const toggleAgeFilter = ({ min, max }: AgeFilterOptions) => {\n const ageColumn = table.getColumn('age');\n\n if (!ageColumn) {\n return;\n }\n\n const currentFilter = ageColumn.getFilterValue() as\n | [number?, number?]\n | undefined;\n\n // Helper function to determine the new filter value for a specific bound\n const determineNewBound = (currentBound?: number, newBound?: number) => {\n if (newBound !== undefined && currentBound === newBound) {\n return undefined;\n }\n return newBound !== undefined ? newBound : currentBound;\n };\n\n const newFilter: [number?, number?] = [\n determineNewBound(currentFilter?.[0], min),\n determineNewBound(currentFilter?.[1], max),\n ];\n\n // Update the filter value in the table state\n ageColumn.setFilterValue(\n newFilter[0] === undefined && newFilter[1] === undefined\n ? undefined\n : newFilter,\n );\n };\n\n const isAgeFilterApplied = (type: 'min' | 'max', value: number) => {\n const ageFilter = columnFilters.find((filter) => filter.id === 'age');\n if (ageFilter) {\n const [min, max] = ageFilter.value as [number, number];\n if (type === 'min') {\n return min === value;\n }\n if (type === 'max') {\n return max === value;\n }\n }\n return false;\n };\n\n return (\n <div className=\"n-flex n-flex-col\" ref={ref}>\n <div className=\"n-flex n-flex-col n-gap-token-16 n-pb-token-16\">\n <div className=\"n-flex n-gap-token-8\">\n <TextInput\n aria-label=\"Table search\"\n value={globalFilter}\n placeholder=\"Search\"\n leadingElement={<MagnifyingGlassIconOutline />}\n isClearable={true}\n onChange={(event) => setGlobalFilter(event.target.value)}\n />\n <OpenFilterMenuIconButton\n isOpen={isOpen}\n onClick={handleClick}\n description=\"Filter Menu\"\n />\n </div>\n </div>\n <Divider />\n <DataGrid isResizable={true} tableInstance={table} />\n <Popover\n isOpen={isOpen}\n anchorElement={anchorEl}\n onOpenChange={(isOpen) => {\n if (!isOpen) {\n handleClose();\n }\n }}\n offset={({ rects }) => ({\n crossAxis: -rects.floating.width,\n })}\n >\n <Popover.Content>\n <div className=\"n-grid n-gap-token-16 n-p-token-24 n-w-[300px]\">\n <div className=\"n-w-full n-flex n-justify-between n-items-center\">\n <Typography variant=\"title-3\">Filter</Typography>\n <CleanIconButton\n onClick={handleClose}\n description=\"Close filter menu\"\n size=\"medium\"\n htmlAttributes={{\n title: 'Close filter menu',\n }}\n >\n <XMarkIconOutline />\n </CleanIconButton>\n </div>\n <div className=\"n-flex n-flex-col n-gap-2\">\n <Typography\n variant=\"body-medium\"\n className=\"n-text-neutral-text-weaker n-pb-token-4\"\n >\n Age\n </Typography>\n <Checkbox\n isChecked={isAgeFilterApplied('min', 18)}\n label=\"Age >= 18\"\n onClick={() => toggleAgeFilter({ min: 18 })}\n />\n <Checkbox\n isChecked={isAgeFilterApplied('max', 63)}\n label=\"Age <= 63\"\n onClick={() => toggleAgeFilter({ max: 63 })}\n />\n </div>\n <TextButton\n className=\"n-mt-token-32 n-justify-self-end\"\n variant=\"danger\"\n aria-label=\"Clear filters\"\n onClick={() => {\n table.resetColumnFilters();\n }}\n >\n <Typography\n variant=\"body-medium\"\n className=\"n-text-danger-text n-font-bold\"\n >\n Clear all\n </Typography>\n </TextButton>\n </div>\n </Popover.Content>\n </Popover>\n </div>\n );\n};\n\nexport const ColumnFiltering = () => {\n const [tableData, setTableData] = useState(TABLE_DEMO_DATA);\n const [isAgeFilterApplied, setIsAgeFilterApplied] = useState(false);\n const columnHelper = createColumnHelper<TestDataFormat>();\n\n const ColumnActions: ColumnMeta<TestDataFormat, unknown> = {\n columnActions: {\n actions: [\n {\n onClick: () => {\n // Filter the input table data value, TABLE_DEMO_DATA\n if (isAgeFilterApplied) {\n setTableData(TABLE_DEMO_DATA);\n setIsAgeFilterApplied(false);\n return;\n } else {\n const filteredData = TABLE_DEMO_DATA.filter(\n (data) => data.age >= 18,\n );\n setTableData(filteredData);\n setIsAgeFilterApplied(true);\n }\n },\n title: 'Age >= 18',\n },\n ],\n },\n };\n\n const columns = [\n columnHelper.accessor('name', {\n cell: (info) => info.getValue(),\n maxSize: 300,\n minSize: 180,\n size: 220,\n }),\n columnHelper.accessor('age', {\n cell: (info) => info.getValue(),\n header: () => <div>Age</div>,\n meta: {\n ...ColumnActions,\n },\n minSize: 80,\n }),\n columnHelper.accessor('cypherCommand', {\n cell: (info) => info.getValue(),\n minSize: 400,\n size: 400,\n }),\n ];\n\n const table = useReactTable({\n columnResizeMode: 'onChange',\n columns,\n data: tableData,\n debugColumns: true,\n debugHeaders: true,\n debugTable: true,\n defaultColumn: {\n maxSize: 800,\n minSize: 80,\n },\n enableSorting: true,\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n initialState: {\n pagination: {\n pageSize: 5,\n },\n },\n });\n\n return (\n <div className=\"n-h-[1000px] n-w-full n-bg-primary-bg-weak n-p-token-32\">\n <DataGrid\n isKeyboardNavigable={true}\n isResizable={true}\n tableInstance={table}\n />\n </div>\n );\n};\n"]}
|