@hitachivantara/uikit-react-core 5.38.0 → 5.38.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/dist/cjs/components/Drawer/Drawer.cjs +2 -5
- package/dist/cjs/components/Drawer/Drawer.cjs.map +1 -1
- package/dist/cjs/components/Drawer/Drawer.styles.cjs +0 -2
- package/dist/cjs/components/Drawer/Drawer.styles.cjs.map +1 -1
- package/dist/cjs/components/Pagination/Pagination.cjs +5 -5
- package/dist/cjs/components/Pagination/Pagination.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Rule.cjs +3 -5
- package/dist/cjs/components/QueryBuilder/Rule/Rule.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.cjs +6 -7
- package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.cjs.map +1 -1
- package/dist/cjs/utils/IconButton.cjs +12 -0
- package/dist/cjs/utils/IconButton.cjs.map +1 -0
- package/dist/esm/components/Drawer/Drawer.js +2 -5
- package/dist/esm/components/Drawer/Drawer.js.map +1 -1
- package/dist/esm/components/Drawer/Drawer.styles.js +0 -2
- package/dist/esm/components/Drawer/Drawer.styles.js.map +1 -1
- package/dist/esm/components/Pagination/Pagination.js +5 -5
- package/dist/esm/components/Pagination/Pagination.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Rule.js +4 -6
- package/dist/esm/components/QueryBuilder/Rule/Rule.js.map +1 -1
- package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.js +6 -7
- package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.js.map +1 -1
- package/dist/esm/utils/IconButton.js +12 -0
- package/dist/esm/utils/IconButton.js.map +1 -0
- package/dist/types/index.d.ts +19 -24
- package/package.json +3 -3
- package/dist/cjs/components/Pagination/ButtonIconTooltip.cjs +0 -16
- package/dist/cjs/components/Pagination/ButtonIconTooltip.cjs.map +0 -1
- package/dist/esm/components/Pagination/ButtonIconTooltip.js +0 -16
- package/dist/esm/components/Pagination/ButtonIconTooltip.js.map +0 -1
|
@@ -5,12 +5,11 @@ const material = require("@mui/material");
|
|
|
5
5
|
const uikitReactIcons = require("@hitachivantara/uikit-react-icons");
|
|
6
6
|
const uikitStyles = require("@hitachivantara/uikit-styles");
|
|
7
7
|
const useDefaultProps = require("../../hooks/useDefaultProps.cjs");
|
|
8
|
-
const
|
|
8
|
+
const IconButton = require("../../utils/IconButton.cjs");
|
|
9
9
|
const setId = require("../../utils/setId.cjs");
|
|
10
10
|
const useTheme = require("../../hooks/useTheme.cjs");
|
|
11
11
|
const hexToRgbA = require("../../utils/hexToRgbA.cjs");
|
|
12
12
|
const Drawer_styles = require("./Drawer.styles.cjs");
|
|
13
|
-
const Button = require("../Button/Button.cjs");
|
|
14
13
|
const HvDrawer = (props) => {
|
|
15
14
|
const {
|
|
16
15
|
className,
|
|
@@ -33,15 +32,13 @@ const HvDrawer = (props) => {
|
|
|
33
32
|
const {
|
|
34
33
|
colors
|
|
35
34
|
} = useTheme.useTheme();
|
|
36
|
-
const closeButtonDisplay = () => /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.Close, { role: "none" });
|
|
37
|
-
const CloseButtonTooltipWrapper = buttonTitle ? withTooltip.withTooltip(closeButtonDisplay, buttonTitle, "top") : closeButtonDisplay;
|
|
38
35
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
39
36
|
/* @__PURE__ */ jsxRuntime.jsxs(material.Drawer, { className: cx(classes.root, className), id, anchor, open, PaperProps: {
|
|
40
37
|
classes: {
|
|
41
38
|
root: classes.paper
|
|
42
39
|
}
|
|
43
40
|
}, onClose, ...others, children: [
|
|
44
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
41
|
+
/* @__PURE__ */ jsxRuntime.jsx(IconButton.IconButton, { id: setId.setId(id, "close"), className: classes.closeButton, variant: "secondaryGhost", onClick: onClose, title: buttonTitle, children: /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.Close, { role: "none" }) }),
|
|
45
42
|
children
|
|
46
43
|
] }),
|
|
47
44
|
showBackdrop && /* @__PURE__ */ jsxRuntime.jsx(material.Backdrop, { open: !!open, onClick: (event) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Drawer.cjs","sources":["../../../../src/components/Drawer/Drawer.tsx"],"sourcesContent":["import {\n Drawer as MuiDrawer,\n DrawerProps as MuiDrawerProps,\n Backdrop as MuiBackdrop,\n} from \"@mui/material\";\n\nimport { Close } from \"@hitachivantara/uikit-react-icons\";\n\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\n\nimport { HvBaseProps } from \"@core/types/generic\";\nimport {
|
|
1
|
+
{"version":3,"file":"Drawer.cjs","sources":["../../../../src/components/Drawer/Drawer.tsx"],"sourcesContent":["import {\n Drawer as MuiDrawer,\n DrawerProps as MuiDrawerProps,\n Backdrop as MuiBackdrop,\n} from \"@mui/material\";\n\nimport { Close } from \"@hitachivantara/uikit-react-icons\";\n\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\n\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { IconButton } from \"@core/utils/IconButton\";\nimport { setId } from \"@core/utils/setId\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { useTheme } from \"@core/hooks/useTheme\";\nimport { hexToRgbA } from \"@core/utils/hexToRgbA\";\n\nimport { staticClasses, useClasses } from \"./Drawer.styles\";\n\nexport { staticClasses as drawerClasses };\n\nexport type HvDrawerClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvDrawerProps\n extends MuiDrawerProps,\n Omit<MuiDrawerProps, \"classes\">,\n HvBaseProps<HTMLDivElement> {\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes?: HvDrawerClasses;\n /**\n * Components of the Drawer.\n */\n children?: React.ReactNode;\n /**\n * Current state of the Drawer.\n */\n open?: boolean;\n /**\n * Function executed on close.\n * Extended from Modal from material-ui\n *\n */\n onClose?: (\n event: React.SyntheticEvent,\n reason?: \"escapeKeyDown\" | \"backdropClick\"\n ) => void;\n /**\n * The side the drawer opens from.\n */\n anchor?: \"left\" | \"top\" | \"right\" | \"bottom\";\n /**\n * Title for the button close.\n */\n buttonTitle?: string;\n /**\n * Show backdrop when drawer ix open.\n */\n showBackdrop?: boolean;\n /**\n * Prevent closing the dialog when clicking on the backdrop.\n */\n disableBackdropClick?: boolean;\n /** @ignore */\n ref?: MuiDrawerProps[\"ref\"];\n /** @ignore */\n component?: MuiDrawerProps[\"component\"];\n}\n\n/**\n * The Drawer component provides a foundation to create a sliding pane.\n * It only provides the pane with a close button, the rest of the\n * content can be customized.\n */\nexport const HvDrawer = (props: HvDrawerProps) => {\n const {\n className,\n classes: classesProp,\n id,\n children,\n open,\n onClose,\n anchor = \"right\",\n buttonTitle = \"Close\",\n showBackdrop = true,\n disableBackdropClick = false,\n ...others\n } = useDefaultProps(\"HvDrawer\", props);\n\n const { classes, cx, css } = useClasses(classesProp);\n const { colors } = useTheme();\n\n return (\n <>\n <MuiDrawer\n className={cx(classes.root, className)}\n id={id}\n anchor={anchor}\n open={open}\n PaperProps={{\n classes: {\n root: classes.paper,\n },\n }}\n onClose={onClose}\n {...others}\n >\n <IconButton\n id={setId(id, \"close\")}\n className={classes.closeButton}\n variant=\"secondaryGhost\"\n onClick={onClose}\n title={buttonTitle}\n >\n <Close role=\"none\" />\n </IconButton>\n {children}\n </MuiDrawer>\n {showBackdrop && (\n <MuiBackdrop\n open={!!open}\n onClick={(event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n if (disableBackdropClick) return;\n onClose?.(event, \"backdropClick\");\n }}\n className={cx(\n css({\n background: hexToRgbA(colors?.atmo4 || theme.colors.atmo4),\n }),\n classes.background\n )}\n />\n )}\n </>\n );\n};\n"],"names":["HvDrawer","props","className","classes","classesProp","id","children","open","onClose","anchor","buttonTitle","showBackdrop","disableBackdropClick","others","useDefaultProps","cx","css","useClasses","colors","useTheme","jsxs","Fragment","MuiDrawer","root","paper","jsx","IconButton","setId","closeButton","Close","MuiBackdrop","event","background","hexToRgbA","atmo4","theme"],"mappings":";;;;;;;;;;;;AAqFaA,MAAAA,WAAWA,CAACC,UAAyB;AAC1C,QAAA;AAAA,IACJC;AAAAA,IACAC,SAASC;AAAAA,IACTC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC,SAAS;AAAA,IACTC,cAAc;AAAA,IACdC,eAAe;AAAA,IACfC,uBAAuB;AAAA,IACvB,GAAGC;AAAAA,EAAAA,IACDC,gBAAgB,gBAAA,YAAYb,KAAK;AAE/B,QAAA;AAAA,IAAEE;AAAAA,IAASY;AAAAA,IAAIC;AAAAA,EAAAA,IAAQC,cAAAA,WAAWb,WAAW;AAC7C,QAAA;AAAA,IAAEc;AAAAA,MAAWC,SAAS,SAAA;AAE5B,SAEIC,2BAAA,KAAAC,qBAAA,EAAA,UAAA;AAAA,IAACD,2BAAAA,KAAAE,SAAA,QAAA,EACC,WAAWP,GAAGZ,QAAQoB,MAAMrB,SAAS,GACrC,IACA,QACA,MACA,YAAY;AAAA,MACVC,SAAS;AAAA,QACPoB,MAAMpB,QAAQqB;AAAAA,MAChB;AAAA,IAAA,GAEF,SACIX,GAAAA,QAEJ,UAAA;AAAA,MAAAY,2BAAAA,IAACC,yBACC,IAAIC,YAAMtB,IAAI,OAAO,GACrB,WAAWF,QAAQyB,aACnB,SAAQ,kBACR,SAASpB,SACT,OAAOE,aAEP,yCAACmB,gBAAAA,OAAM,EAAA,MAAK,QAAM,EACpB,CAAA;AAAA,MACCvB;AAAAA,IAAAA,GACH;AAAA,IACCK,+CACEmB,SAAAA,UACC,EAAA,MAAM,CAAC,CAACvB,MACR,SAAS,CAACwB,UAAqD;AACzDnB,UAAAA;AAAsB;AAC1BJ,gBAAUuB,OAAO,eAAe;AAAA,IAAA,GAElC,WAAWhB,GACTC,IAAI;AAAA,MACFgB,YAAYC,UAAUf,UAAAA,QAAQgB,SAASC,YAAAA,MAAMjB,OAAOgB,KAAK;AAAA,IAAA,CAC1D,GACD/B,QAAQ6B,UACV,GAEH;AAAA,EACH,EAAA,CAAA;AAEJ;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Drawer.styles.cjs","sources":["../../../../src/components/Drawer/Drawer.styles.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { createClasses } from \"@core/utils/classes\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvDrawer\", {\n root: {},\n paper: {\n backgroundColor: theme.colors.atmo1,\n padding: 0,\n overflow: \"auto\",\n boxShadow: theme.colors.shadow,\n },\n background: {},\n closeButton: {\n
|
|
1
|
+
{"version":3,"file":"Drawer.styles.cjs","sources":["../../../../src/components/Drawer/Drawer.styles.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { createClasses } from \"@core/utils/classes\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvDrawer\", {\n root: {},\n paper: {\n backgroundColor: theme.colors.atmo1,\n padding: 0,\n overflow: \"auto\",\n boxShadow: theme.colors.shadow,\n },\n background: {},\n closeButton: {\n position: \"absolute\",\n top: theme.spacing(\"sm\"),\n right: theme.spacing(\"sm\"),\n },\n});\n"],"names":["staticClasses","useClasses","createClasses","root","paper","backgroundColor","theme","colors","atmo1","padding","overflow","boxShadow","shadow","background","closeButton","position","top","spacing","right"],"mappings":";;;;AAIa,MAAA;AAAA,EAAEA;AAAAA,EAAeC;AAAW,IAAIC,QAAAA,cAAc,YAAY;AAAA,EACrEC,MAAM,CAAC;AAAA,EACPC,OAAO;AAAA,IACLC,iBAAiBC,YAAAA,MAAMC,OAAOC;AAAAA,IAC9BC,SAAS;AAAA,IACTC,UAAU;AAAA,IACVC,WAAWL,YAAAA,MAAMC,OAAOK;AAAAA,EAC1B;AAAA,EACAC,YAAY,CAAC;AAAA,EACbC,aAAa;AAAA,IACXC,UAAU;AAAA,IACVC,KAAKV,YAAAA,MAAMW,QAAQ,IAAI;AAAA,IACvBC,OAAOZ,YAAAA,MAAMW,QAAQ,IAAI;AAAA,EAC3B;AACF,CAAC;;;"}
|
|
@@ -7,11 +7,11 @@ const uikitReactIcons = require("@hitachivantara/uikit-react-icons");
|
|
|
7
7
|
const useDefaultProps = require("../../hooks/useDefaultProps.cjs");
|
|
8
8
|
const setId = require("../../utils/setId.cjs");
|
|
9
9
|
const keyboardUtils = require("../../utils/keyboardUtils.cjs");
|
|
10
|
+
const IconButton = require("../../utils/IconButton.cjs");
|
|
10
11
|
const useLabels = require("../../hooks/useLabels.cjs");
|
|
11
12
|
const Select = require("./Select.cjs");
|
|
12
13
|
const Pagination_styles = require("./Pagination.styles.cjs");
|
|
13
14
|
const utils = require("./utils.cjs");
|
|
14
|
-
const ButtonIconTooltip = require("./ButtonIconTooltip.cjs");
|
|
15
15
|
const Typography = require("../Typography/Typography.cjs");
|
|
16
16
|
const Input = require("../Input/Input.cjs");
|
|
17
17
|
const DEFAULT_LABELS = {
|
|
@@ -90,15 +90,15 @@ const HvPagination = (props) => {
|
|
|
90
90
|
/* @__PURE__ */ jsxRuntime.jsx(material.Hidden, { xsDown: true, children: /* @__PURE__ */ jsxRuntime.jsx(Typography.HvTypography, { component: "span", className: classes.pageSizeTextContainer, children: labels?.pageSizeEntryName }) })
|
|
91
91
|
] }) }),
|
|
92
92
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: classes.pageNavigator, ...navigationProps, children: [
|
|
93
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
94
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
93
|
+
/* @__PURE__ */ jsxRuntime.jsx(IconButton.IconButton, { id: setId.setId(id, "firstPage-button"), className: classes.iconContainer, disabled: !canPrevious, onClick: () => changePage(0), title: labels?.firstPage || labels?.paginationFirstPageTitle, children: /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.Start, { role: "none", className: classes.icon, color: utils.setColor(!canPrevious), iconSize: "XS" }) }),
|
|
94
|
+
/* @__PURE__ */ jsxRuntime.jsx(IconButton.IconButton, { id: setId.setId(id, "previousPage-button"), className: classes.iconContainer, disabled: !canPrevious, onClick: () => changePage(page - 1), title: labels?.previousPage || labels?.paginationPreviousPageTitle, children: /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.Backwards, { role: "none", className: classes.icon, color: utils.setColor(!canPrevious), iconSize: "XS" }) }),
|
|
95
95
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: classes.pageInfo, children: [
|
|
96
96
|
showPageJump ? renderPageJump() : /* @__PURE__ */ jsxRuntime.jsx(Typography.HvTypography, { variant: "caption2", component: "span", children: `${page + 1}` }),
|
|
97
97
|
/* @__PURE__ */ jsxRuntime.jsx(Typography.HvTypography, { component: "span", children: `${labels?.pagesSeparator} ` }),
|
|
98
98
|
/* @__PURE__ */ jsxRuntime.jsx(Typography.HvTypography, { component: "span", id: setId.setId(id, "totalPages"), className: classes.totalPagesTextContainer, children: pages })
|
|
99
99
|
] }),
|
|
100
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
101
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
100
|
+
/* @__PURE__ */ jsxRuntime.jsx(IconButton.IconButton, { id: setId.setId(id, "nextPage-button"), className: classes.iconContainer, disabled: !canNext, onClick: () => changePage(page + 1), title: labels?.nextPage || labels?.paginationNextPageTitle, children: /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.Forwards, { role: "none", className: classes.icon, color: utils.setColor(!canNext), iconSize: "XS" }) }),
|
|
101
|
+
/* @__PURE__ */ jsxRuntime.jsx(IconButton.IconButton, { id: setId.setId(id, "lastPage-button"), className: classes.iconContainer, disabled: !canNext, onClick: () => changePage(pages - 1), title: labels?.lastPage || labels?.paginationLastPageTitle, children: /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.End, { className: classes.icon, color: utils.setColor(!canNext), iconSize: "XS" }) })
|
|
102
102
|
] })
|
|
103
103
|
] });
|
|
104
104
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.cjs","sources":["../../../../src/components/Pagination/Pagination.tsx"],"sourcesContent":["import { HTMLAttributes, useCallback, useEffect } from \"react\";\n\nimport { Hidden } from \"@mui/material\";\n\nimport {\n Start,\n End,\n Backwards,\n Forwards,\n} from \"@hitachivantara/uikit-react-icons\";\n\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\n\nimport { HvInput, HvInputProps } from \"@core/components/Input\";\nimport { HvTypography } from \"@core/components/Typography\";\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { setId } from \"@core/utils/setId\";\nimport { isKey } from \"@core/utils/keyboardUtils\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { useLabels } from \"@core/hooks/useLabels\";\n\nimport HvSelect, { Option } from \"./Select\";\nimport { staticClasses, useClasses } from \"./Pagination.styles\";\nimport { usePageInput, getSafePage, setColor } from \"./utils\";\nimport ButtonIconTooltip from \"./ButtonIconTooltip\";\n\nexport { staticClasses as paginationClasses };\n\nexport type HvPaginationClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvPaginationLabels {\n /** The show label. */\n pageSizePrev?: string;\n /** Indicate the units of the page size selection. */\n pageSizeEntryName?: string;\n /** Used for the aria-label of the selection of number of unit.s */\n pageSizeSelectorDescription?: string;\n /** Separator of current page and total pages. */\n pagesSeparator?: string;\n /** Title of button `firstPage`. */\n paginationFirstPageTitle?: string;\n /** Title of button `previousPage`. */\n paginationPreviousPageTitle?: string;\n /** Title of button `nextPage`. */\n paginationNextPageTitle?: string;\n /** Title of button `lastPage`. */\n paginationLastPageTitle?: string;\n /** Aria-label passed to the page input. */\n paginationInputLabel?: string;\n /** Aria-label of the first page button */\n firstPage?: string;\n /** Aria-label of the previous page button */\n previousPage?: string;\n /** Aria-label of the next page button */\n nextPage?: string;\n /** Aria-label of the last page button */\n lastPage?: string;\n}\n\nexport interface HvPaginationProps extends HvBaseProps {\n /** The number of pages the component has. */\n pages?: number;\n /** The currently selected page (0-indexed). */\n page?: number;\n /** Controls whether the left page size mechanism should be visible. */\n showPageSizeOptions?: boolean;\n /** The array of possible page sizes for the dropdown. */\n pageSizeOptions?: number[];\n /** The currently selected page size. */\n pageSize?: number;\n /** Controls whether the central page changing mechanism should be visible. */\n showPageJump?: boolean;\n /** Controls whether the previous/first page buttons are enabled. */\n canPrevious?: boolean;\n /** Controls whether the next/last page buttons are enabled. */\n canNext?: boolean;\n /** Function called when the page changes. */\n onPageChange?: (page: number) => void;\n /** Function called when the page size changes. */\n onPageSizeChange?: (pageSize: number) => void;\n /** An object containing all the labels for the component. */\n labels?: HvPaginationLabels;\n /** Other props to show page component. */\n showPageProps?: HTMLAttributes<HTMLDivElement>;\n /** Other props to pagination component. */\n navigationProps?: HTMLAttributes<HTMLDivElement>;\n /** Extra properties passed to the input component representing the current pages. */\n currentPageInputProps?: HvInputProps;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvPaginationClasses;\n}\n\nconst DEFAULT_LABELS = {\n pageSizePrev: \"Show\",\n pageSizeEntryName: \"rows\",\n pageSizeSelectorDescription: \"Select how many to display\",\n pagesSeparator: \"/\",\n paginationFirstPageTitle: \"First page\",\n paginationPreviousPageTitle: \"Previous page\",\n paginationNextPageTitle: \"Next page\",\n paginationLastPageTitle: \"Last page\",\n paginationInputLabel: \"Current page\",\n firstPage: \"First Page\",\n previousPage: \"Previous Page\",\n nextPage: \"Next Page\",\n lastPage: \"Last Page\",\n};\n\nconst defaultPageSizeOptions = [5, 10, 20, 25, 50, 100];\n\n/**\n * Pagination is the process of dividing a document into discrete pages. It relates to how users interact\n * with structured content on a website or application.\n */\nexport const HvPagination = (props: HvPaginationProps) => {\n const {\n classes: classesProp,\n className,\n id,\n pages = 1,\n page = 0,\n showPageSizeOptions = true,\n pageSizeOptions = defaultPageSizeOptions,\n pageSize = defaultPageSizeOptions[1],\n showPageJump = true,\n canPrevious = false,\n canNext = false,\n onPageChange,\n onPageSizeChange,\n labels: labelsProp,\n showPageProps,\n navigationProps,\n currentPageInputProps,\n ...others\n } = useDefaultProps(\"HvPagination\", props);\n\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n const [pageInput, handleInputChange] = usePageInput(page);\n const { classes, cx } = useClasses(classesProp);\n\n const changePage = useCallback(\n (newPage: number) => {\n const safePage: number = getSafePage(newPage, page, pages);\n\n onPageChange?.(safePage);\n handleInputChange(null, safePage + 1);\n },\n [page, pages, onPageChange, handleInputChange]\n );\n\n useEffect(() => {\n if (page >= pages && pages > 0) {\n changePage(page);\n }\n }, [changePage, page, pages]);\n\n useEffect(() => {\n if (pageInput !== page + 1) {\n handleInputChange(null, page + 1);\n }\n\n // we only want to \"fix\" the input's display value when `page` property changed\n // (either externally or when internally committed - onBlur or Enter),\n // not while editing the input.\n // breaking a rule of hooks isn't ideal and it's just a hack for fixing\n // a bug preventing properly controlling of the `page` property.\n // fixing it some other way would potentially introduce a breaking change.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [handleInputChange, page]);\n\n const renderPageJump = () => (\n <div className={classes.pageJump}>\n <HvInput\n id={setId(id, \"currentPage\")}\n labels={labels}\n inputProps={{\n \"aria-label\": labels?.paginationInputLabel,\n // We really want the native number input\n type: \"number\",\n }}\n classes={{\n root: classes?.pageSizeInputContainer,\n input: classes?.pageSizeInput,\n inputRoot: classes?.pageSizeInputRoot,\n }}\n onChange={(event, value) => handleInputChange(event, Number(value))}\n value={String(pageInput)}\n onBlur={(evt, value) => changePage(Number(value) - 1)}\n onKeyDown={(evt, value) =>\n isKey(evt, \"Enter\") && changePage(Number(value) - 1)\n }\n disabled={pageSize === 0}\n disableClear\n {...currentPageInputProps}\n />\n </div>\n );\n\n return (\n <div id={id} className={cx(classes.root, className)} {...others}>\n <div className={classes.pageSizeOptions} {...showPageProps}>\n {showPageSizeOptions && (\n <>\n <Hidden xsDown>\n <HvTypography\n component=\"span\"\n className={classes?.pageSizeTextContainer}\n >\n {labels?.pageSizePrev}\n </HvTypography>\n </Hidden>\n <HvSelect\n id={setId(id, \"pageSize\")}\n disabled={pageSize === 0}\n className={classes.pageSizeOptionsSelect}\n aria-label={labels?.pageSizeSelectorDescription}\n onChange={(_: any, val: number) => onPageSizeChange?.(val)}\n value={pageSize}\n classes={{ header: classes.pageSizeHeader }}\n >\n {pageSizeOptions.map((option) => (\n <Option key={option} value={option}>\n {option}\n </Option>\n ))}\n </HvSelect>\n <Hidden xsDown>\n <HvTypography\n component=\"span\"\n className={classes.pageSizeTextContainer}\n >\n {labels?.pageSizeEntryName}\n </HvTypography>\n </Hidden>\n </>\n )}\n </div>\n <div className={classes.pageNavigator} {...navigationProps}>\n <ButtonIconTooltip\n id={setId(id, \"firstPage-button\")}\n aria-label={labels?.firstPage}\n className={classes.iconContainer}\n disabled={!canPrevious}\n onClick={() => changePage(0)}\n tooltip={labels?.paginationFirstPageTitle}\n >\n <Start\n className={classes.icon}\n color={setColor(!canPrevious)}\n iconSize=\"XS\"\n />\n </ButtonIconTooltip>\n <ButtonIconTooltip\n id={setId(id, \"previousPage-button\")}\n aria-label={labels?.previousPage}\n className={classes.iconContainer}\n disabled={!canPrevious}\n onClick={() => changePage(page - 1)}\n tooltip={labels?.paginationPreviousPageTitle}\n >\n <Backwards\n className={classes.icon}\n color={setColor(!canPrevious)}\n iconSize=\"XS\"\n />\n </ButtonIconTooltip>\n <div className={classes.pageInfo}>\n {showPageJump ? (\n renderPageJump()\n ) : (\n <HvTypography variant=\"caption2\" component=\"span\">{`${\n page + 1\n }`}</HvTypography>\n )}\n <HvTypography component=\"span\">{`${labels?.pagesSeparator} `}</HvTypography>\n <HvTypography\n component=\"span\"\n id={setId(id, \"totalPages\")}\n className={classes.totalPagesTextContainer}\n >\n {pages}\n </HvTypography>\n </div>\n <ButtonIconTooltip\n id={setId(id, \"nextPage-button\")}\n aria-label={labels?.nextPage}\n className={classes.iconContainer}\n disabled={!canNext}\n onClick={() => changePage(page + 1)}\n tooltip={labels?.paginationNextPageTitle}\n >\n <Forwards\n className={classes.icon}\n color={setColor(!canNext)}\n iconSize=\"XS\"\n />\n </ButtonIconTooltip>\n <ButtonIconTooltip\n id={setId(id, \"lastPage-button\")}\n aria-label={labels?.lastPage}\n className={classes.iconContainer}\n disabled={!canNext}\n onClick={() => changePage(pages - 1)}\n tooltip={labels?.paginationLastPageTitle}\n >\n <End\n className={classes.icon}\n color={setColor(!canNext)}\n iconSize=\"XS\"\n />\n </ButtonIconTooltip>\n </div>\n </div>\n );\n};\n"],"names":["DEFAULT_LABELS","pageSizePrev","pageSizeEntryName","pageSizeSelectorDescription","pagesSeparator","paginationFirstPageTitle","paginationPreviousPageTitle","paginationNextPageTitle","paginationLastPageTitle","paginationInputLabel","firstPage","previousPage","nextPage","lastPage","defaultPageSizeOptions","HvPagination","props","classes","classesProp","className","id","pages","page","showPageSizeOptions","pageSizeOptions","pageSize","showPageJump","canPrevious","canNext","onPageChange","onPageSizeChange","labels","labelsProp","showPageProps","navigationProps","currentPageInputProps","others","useDefaultProps","useLabels","pageInput","handleInputChange","usePageInput","cx","useClasses","changePage","useCallback","newPage","safePage","getSafePage","useEffect","renderPageJump","jsx","pageJump","HvInput","setId","type","root","pageSizeInputContainer","input","pageSizeInput","inputRoot","pageSizeInputRoot","event","value","Number","String","evt","isKey","jsxs","Fragment","Hidden","HvTypography","pageSizeTextContainer","HvSelect","pageSizeOptionsSelect","_","val","header","pageSizeHeader","map","option","Option","pageNavigator","ButtonIconTooltip","iconContainer","Start","icon","setColor","Backwards","pageInfo","totalPagesTextContainer","Forwards","End"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Pagination.cjs","sources":["../../../../src/components/Pagination/Pagination.tsx"],"sourcesContent":["import { HTMLAttributes, useCallback, useEffect } from \"react\";\n\nimport { Hidden } from \"@mui/material\";\n\nimport {\n Start,\n End,\n Backwards,\n Forwards,\n} from \"@hitachivantara/uikit-react-icons\";\n\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\n\nimport { HvInput, HvInputProps } from \"@core/components/Input\";\nimport { HvTypography } from \"@core/components/Typography\";\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { setId } from \"@core/utils/setId\";\nimport { isKey } from \"@core/utils/keyboardUtils\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { IconButton } from \"@core/utils/IconButton\";\nimport { useLabels } from \"@core/hooks/useLabels\";\n\nimport HvSelect, { Option } from \"./Select\";\nimport { staticClasses, useClasses } from \"./Pagination.styles\";\nimport { usePageInput, getSafePage, setColor } from \"./utils\";\n\nexport { staticClasses as paginationClasses };\n\nexport type HvPaginationClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvPaginationLabels {\n /** The show label. */\n pageSizePrev?: string;\n /** Indicate the units of the page size selection. */\n pageSizeEntryName?: string;\n /** Used for the aria-label of the selection of number of unit.s */\n pageSizeSelectorDescription?: string;\n /** Separator of current page and total pages. */\n pagesSeparator?: string;\n /** Title of button `firstPage`. @deprecated Use `firstPage` instead. */\n paginationFirstPageTitle?: string;\n /** Title of button `previousPage`. @deprecated Use `previousPage` instead. */\n paginationPreviousPageTitle?: string;\n /** Title of button `nextPage`. @deprecated Use `nextPage` instead. */\n paginationNextPageTitle?: string;\n /** Title of button `lastPage`. @deprecated Use `lastPage` instead. */\n paginationLastPageTitle?: string;\n /** Aria-label passed to the page input. */\n paginationInputLabel?: string;\n /** Label of the first page button */\n firstPage?: string;\n /** Label of the previous page button */\n previousPage?: string;\n /** Label of the next page button */\n nextPage?: string;\n /** Label of the last page button */\n lastPage?: string;\n}\n\nexport interface HvPaginationProps extends HvBaseProps {\n /** The number of pages the component has. */\n pages?: number;\n /** The currently selected page (0-indexed). */\n page?: number;\n /** Controls whether the left page size mechanism should be visible. */\n showPageSizeOptions?: boolean;\n /** The array of possible page sizes for the dropdown. */\n pageSizeOptions?: number[];\n /** The currently selected page size. */\n pageSize?: number;\n /** Controls whether the central page changing mechanism should be visible. */\n showPageJump?: boolean;\n /** Controls whether the previous/first page buttons are enabled. */\n canPrevious?: boolean;\n /** Controls whether the next/last page buttons are enabled. */\n canNext?: boolean;\n /** Function called when the page changes. */\n onPageChange?: (page: number) => void;\n /** Function called when the page size changes. */\n onPageSizeChange?: (pageSize: number) => void;\n /** An object containing all the labels for the component. */\n labels?: HvPaginationLabels;\n /** Other props to show page component. */\n showPageProps?: HTMLAttributes<HTMLDivElement>;\n /** Other props to pagination component. */\n navigationProps?: HTMLAttributes<HTMLDivElement>;\n /** Extra properties passed to the input component representing the current pages. */\n currentPageInputProps?: HvInputProps;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvPaginationClasses;\n}\n\nconst DEFAULT_LABELS: HvPaginationLabels = {\n pageSizePrev: \"Show\",\n pageSizeEntryName: \"rows\",\n pageSizeSelectorDescription: \"Select how many to display\",\n pagesSeparator: \"/\",\n paginationFirstPageTitle: \"First page\",\n paginationPreviousPageTitle: \"Previous page\",\n paginationNextPageTitle: \"Next page\",\n paginationLastPageTitle: \"Last page\",\n paginationInputLabel: \"Current page\",\n firstPage: \"First Page\",\n previousPage: \"Previous Page\",\n nextPage: \"Next Page\",\n lastPage: \"Last Page\",\n};\n\nconst defaultPageSizeOptions = [5, 10, 20, 25, 50, 100];\n\n/**\n * Pagination is the process of dividing a document into discrete pages. It relates to how users interact\n * with structured content on a website or application.\n */\nexport const HvPagination = (props: HvPaginationProps) => {\n const {\n classes: classesProp,\n className,\n id,\n pages = 1,\n page = 0,\n showPageSizeOptions = true,\n pageSizeOptions = defaultPageSizeOptions,\n pageSize = defaultPageSizeOptions[1],\n showPageJump = true,\n canPrevious = false,\n canNext = false,\n onPageChange,\n onPageSizeChange,\n labels: labelsProp,\n showPageProps,\n navigationProps,\n currentPageInputProps,\n ...others\n } = useDefaultProps(\"HvPagination\", props);\n\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n const [pageInput, handleInputChange] = usePageInput(page);\n const { classes, cx } = useClasses(classesProp);\n\n const changePage = useCallback(\n (newPage: number) => {\n const safePage: number = getSafePage(newPage, page, pages);\n\n onPageChange?.(safePage);\n handleInputChange(null, safePage + 1);\n },\n [page, pages, onPageChange, handleInputChange]\n );\n\n useEffect(() => {\n if (page >= pages && pages > 0) {\n changePage(page);\n }\n }, [changePage, page, pages]);\n\n useEffect(() => {\n if (pageInput !== page + 1) {\n handleInputChange(null, page + 1);\n }\n\n // we only want to \"fix\" the input's display value when `page` property changed\n // (either externally or when internally committed - onBlur or Enter),\n // not while editing the input.\n // breaking a rule of hooks isn't ideal and it's just a hack for fixing\n // a bug preventing properly controlling of the `page` property.\n // fixing it some other way would potentially introduce a breaking change.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [handleInputChange, page]);\n\n const renderPageJump = () => (\n <div className={classes.pageJump}>\n <HvInput\n id={setId(id, \"currentPage\")}\n labels={labels}\n inputProps={{\n \"aria-label\": labels?.paginationInputLabel,\n // We really want the native number input\n type: \"number\",\n }}\n classes={{\n root: classes?.pageSizeInputContainer,\n input: classes?.pageSizeInput,\n inputRoot: classes?.pageSizeInputRoot,\n }}\n onChange={(event, value) => handleInputChange(event, Number(value))}\n value={String(pageInput)}\n onBlur={(evt, value) => changePage(Number(value) - 1)}\n onKeyDown={(evt, value) =>\n isKey(evt, \"Enter\") && changePage(Number(value) - 1)\n }\n disabled={pageSize === 0}\n disableClear\n {...currentPageInputProps}\n />\n </div>\n );\n\n return (\n <div id={id} className={cx(classes.root, className)} {...others}>\n <div className={classes.pageSizeOptions} {...showPageProps}>\n {showPageSizeOptions && (\n <>\n <Hidden xsDown>\n <HvTypography\n component=\"span\"\n className={classes?.pageSizeTextContainer}\n >\n {labels?.pageSizePrev}\n </HvTypography>\n </Hidden>\n <HvSelect\n id={setId(id, \"pageSize\")}\n disabled={pageSize === 0}\n className={classes.pageSizeOptionsSelect}\n aria-label={labels?.pageSizeSelectorDescription}\n onChange={(_: any, val: number) => onPageSizeChange?.(val)}\n value={pageSize}\n classes={{ header: classes.pageSizeHeader }}\n >\n {pageSizeOptions.map((option) => (\n <Option key={option} value={option}>\n {option}\n </Option>\n ))}\n </HvSelect>\n <Hidden xsDown>\n <HvTypography\n component=\"span\"\n className={classes.pageSizeTextContainer}\n >\n {labels?.pageSizeEntryName}\n </HvTypography>\n </Hidden>\n </>\n )}\n </div>\n <div className={classes.pageNavigator} {...navigationProps}>\n <IconButton\n id={setId(id, \"firstPage-button\")}\n className={classes.iconContainer}\n disabled={!canPrevious}\n onClick={() => changePage(0)}\n title={labels?.firstPage || labels?.paginationFirstPageTitle}\n >\n <Start\n role=\"none\"\n className={classes.icon}\n color={setColor(!canPrevious)}\n iconSize=\"XS\"\n />\n </IconButton>\n <IconButton\n id={setId(id, \"previousPage-button\")}\n className={classes.iconContainer}\n disabled={!canPrevious}\n onClick={() => changePage(page - 1)}\n title={labels?.previousPage || labels?.paginationPreviousPageTitle}\n >\n <Backwards\n role=\"none\"\n className={classes.icon}\n color={setColor(!canPrevious)}\n iconSize=\"XS\"\n />\n </IconButton>\n <div className={classes.pageInfo}>\n {showPageJump ? (\n renderPageJump()\n ) : (\n <HvTypography variant=\"caption2\" component=\"span\">{`${\n page + 1\n }`}</HvTypography>\n )}\n <HvTypography component=\"span\">{`${labels?.pagesSeparator} `}</HvTypography>\n <HvTypography\n component=\"span\"\n id={setId(id, \"totalPages\")}\n className={classes.totalPagesTextContainer}\n >\n {pages}\n </HvTypography>\n </div>\n <IconButton\n id={setId(id, \"nextPage-button\")}\n className={classes.iconContainer}\n disabled={!canNext}\n onClick={() => changePage(page + 1)}\n title={labels?.nextPage || labels?.paginationNextPageTitle}\n >\n <Forwards\n role=\"none\"\n className={classes.icon}\n color={setColor(!canNext)}\n iconSize=\"XS\"\n />\n </IconButton>\n <IconButton\n id={setId(id, \"lastPage-button\")}\n className={classes.iconContainer}\n disabled={!canNext}\n onClick={() => changePage(pages - 1)}\n title={labels?.lastPage || labels?.paginationLastPageTitle}\n >\n <End\n className={classes.icon}\n color={setColor(!canNext)}\n iconSize=\"XS\"\n />\n </IconButton>\n </div>\n </div>\n );\n};\n"],"names":["DEFAULT_LABELS","pageSizePrev","pageSizeEntryName","pageSizeSelectorDescription","pagesSeparator","paginationFirstPageTitle","paginationPreviousPageTitle","paginationNextPageTitle","paginationLastPageTitle","paginationInputLabel","firstPage","previousPage","nextPage","lastPage","defaultPageSizeOptions","HvPagination","props","classes","classesProp","className","id","pages","page","showPageSizeOptions","pageSizeOptions","pageSize","showPageJump","canPrevious","canNext","onPageChange","onPageSizeChange","labels","labelsProp","showPageProps","navigationProps","currentPageInputProps","others","useDefaultProps","useLabels","pageInput","handleInputChange","usePageInput","cx","useClasses","changePage","useCallback","newPage","safePage","getSafePage","useEffect","renderPageJump","jsx","pageJump","HvInput","setId","type","root","pageSizeInputContainer","input","pageSizeInput","inputRoot","pageSizeInputRoot","event","value","Number","String","evt","isKey","jsxs","Fragment","Hidden","HvTypography","pageSizeTextContainer","HvSelect","pageSizeOptionsSelect","_","val","header","pageSizeHeader","map","option","Option","pageNavigator","IconButton","iconContainer","Start","icon","setColor","Backwards","pageInfo","totalPagesTextContainer","Forwards","End"],"mappings":"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"}
|
|
@@ -4,14 +4,13 @@ const jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
|
4
4
|
const React = require("react");
|
|
5
5
|
const uikitReactIcons = require("@hitachivantara/uikit-react-icons");
|
|
6
6
|
const material = require("@mui/material");
|
|
7
|
-
const
|
|
7
|
+
const IconButton = require("../../../utils/IconButton.cjs");
|
|
8
8
|
const Context = require("../Context.cjs");
|
|
9
9
|
const Rule_styles = require("./Rule.styles.cjs");
|
|
10
10
|
const Grid = require("../../Grid/Grid.cjs");
|
|
11
11
|
const Attribute = require("./Attribute/Attribute.cjs");
|
|
12
12
|
const Operator = require("./Operator/Operator.cjs");
|
|
13
13
|
const Value = require("./Value/Value.cjs");
|
|
14
|
-
const Button = require("../../Button/Button.cjs");
|
|
15
14
|
const useDefaultProps = require("../../../hooks/useDefaultProps.cjs");
|
|
16
15
|
const Rule = (props) => {
|
|
17
16
|
const {
|
|
@@ -50,14 +49,13 @@ const Rule = (props) => {
|
|
|
50
49
|
return -1;
|
|
51
50
|
}, [attribute, attributes, combinator, operators]);
|
|
52
51
|
const shouldShowValueInput = operator !== "Empty" && operator !== "IsNotEmpty";
|
|
53
|
-
const DeleteIcon = withTooltip.withTooltip(() => /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.Delete, {}), labels.rule.delete.tooltip, "bottom");
|
|
54
52
|
return /* @__PURE__ */ jsxRuntime.jsxs(Grid.HvGrid, { container: true, className: cx(classes.root, {
|
|
55
53
|
[classes.isMdDown]: isMdDown
|
|
56
54
|
}), spacing: 0, children: [
|
|
57
55
|
/* @__PURE__ */ jsxRuntime.jsx(Grid.HvGrid, { item: true, xs: 12, md: 3, children: /* @__PURE__ */ jsxRuntime.jsx(Attribute.Attribute, { attribute, id, disabled, isInvalid }) }),
|
|
58
56
|
attribute != null && availableOperators > 0 && /* @__PURE__ */ jsxRuntime.jsx(Grid.HvGrid, { item: true, xs: 12, md: 3, children: /* @__PURE__ */ jsxRuntime.jsx(Operator.Operator, { id, combinator, attribute, operator }) }),
|
|
59
57
|
attribute != null && (operator != null || availableOperators === 0) && /* @__PURE__ */ jsxRuntime.jsx(Grid.HvGrid, { item: true, xs: 12, md: true, children: shouldShowValueInput && /* @__PURE__ */ jsxRuntime.jsx(Value.Value, { attribute, id, operator, value }) }),
|
|
60
|
-
/* @__PURE__ */ jsxRuntime.jsx(Grid.HvGrid, { item: true, className: classes.actionsContainer, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
58
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid.HvGrid, { item: true, className: classes.actionsContainer, children: /* @__PURE__ */ jsxRuntime.jsx(IconButton.IconButton, { placement: "bottom", title: labels.rule.delete.tooltip || labels.rule.delete.ariaLabel, onClick: () => disableConfirmation ? dispatchAction({
|
|
61
59
|
type: "remove-node",
|
|
62
60
|
id
|
|
63
61
|
}) : askAction({
|
|
@@ -66,7 +64,7 @@ const Rule = (props) => {
|
|
|
66
64
|
id
|
|
67
65
|
}],
|
|
68
66
|
dialog: labels.rule.delete
|
|
69
|
-
}), disabled: readOnly, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
67
|
+
}), disabled: readOnly, children: /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.Delete, { role: "none" }) }) })
|
|
70
68
|
] });
|
|
71
69
|
};
|
|
72
70
|
exports.queryBuilderRuleClasses = Rule_styles.staticClasses;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Rule.cjs","sources":["../../../../../src/components/QueryBuilder/Rule/Rule.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { Delete } from \"@hitachivantara/uikit-react-icons\";\nimport { useMediaQuery, useTheme } from \"@mui/material\";\n\nimport { HvGrid } from \"@core/components/Grid\";\nimport {
|
|
1
|
+
{"version":3,"file":"Rule.cjs","sources":["../../../../../src/components/QueryBuilder/Rule/Rule.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { Delete } from \"@hitachivantara/uikit-react-icons\";\nimport { useMediaQuery, useTheme } from \"@mui/material\";\n\nimport { HvGrid } from \"@core/components/Grid\";\nimport { IconButton } from \"@core/utils/IconButton\";\nimport { useDefaultProps } from \"@core/hooks\";\nimport { ExtractNames } from \"@core/utils\";\n\nimport { useQueryBuilderContext } from \"../Context\";\nimport { Attribute } from \"./Attribute\";\nimport { Operator } from \"./Operator\";\nimport { Value } from \"./Value\";\nimport { staticClasses, useClasses } from \"./Rule.styles\";\n\nexport { staticClasses as queryBuilderRuleClasses };\n\nexport type HvQueryBuilderRuleClasses = ExtractNames<typeof useClasses>;\n\nexport interface RuleProps {\n id: React.Key;\n combinator: string;\n attribute?: string;\n operator?: string;\n value?: any;\n disabled?: boolean;\n isInvalid: boolean;\n classes?: HvQueryBuilderRuleClasses;\n}\n\nexport const Rule = (props: RuleProps) => {\n const {\n id,\n combinator,\n attribute,\n operator,\n value,\n disabled,\n isInvalid,\n classes: classesProp,\n } = useDefaultProps(\"HvQueryBuilderRule\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const {\n askAction,\n dispatchAction,\n attributes,\n operators,\n labels,\n readOnly,\n disableConfirmation,\n } = useQueryBuilderContext();\n\n const theme = useTheme();\n\n const isMdDown = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const availableOperators = useMemo(() => {\n const attributeSpec =\n attribute != null && attributes ? attributes[attribute] : null;\n if (attributeSpec != null) {\n const typeOperators = operators[attributeSpec.type];\n if (typeOperators != null) {\n return typeOperators.reduce(\n (count, item) =>\n count + (item.combinators.includes(combinator) ? 1 : 0),\n 0\n );\n }\n }\n\n return -1;\n }, [attribute, attributes, combinator, operators]);\n\n const shouldShowValueInput =\n operator !== \"Empty\" && operator !== \"IsNotEmpty\";\n\n return (\n <HvGrid\n container\n className={cx(classes.root, { [classes.isMdDown]: isMdDown })}\n spacing={0}\n >\n <HvGrid item xs={12} md={3}>\n <Attribute\n attribute={attribute}\n id={id}\n disabled={disabled}\n isInvalid={isInvalid}\n />\n </HvGrid>\n {attribute != null && availableOperators > 0 && (\n <HvGrid item xs={12} md={3}>\n <Operator\n id={id}\n combinator={combinator}\n attribute={attribute}\n operator={operator}\n />\n </HvGrid>\n )}\n {attribute != null && (operator != null || availableOperators === 0) && (\n <HvGrid item xs={12} md>\n {shouldShowValueInput && (\n <Value\n attribute={attribute}\n id={id}\n operator={operator}\n value={value}\n />\n )}\n </HvGrid>\n )}\n <HvGrid item className={classes.actionsContainer}>\n <IconButton\n placement=\"bottom\"\n title={labels.rule.delete.tooltip || labels.rule.delete.ariaLabel}\n onClick={() =>\n disableConfirmation\n ? dispatchAction({ type: \"remove-node\", id })\n : askAction({\n actions: [{ type: \"remove-node\", id }],\n dialog: labels.rule.delete,\n })\n }\n disabled={readOnly}\n >\n <Delete role=\"none\" />\n </IconButton>\n </HvGrid>\n </HvGrid>\n );\n};\n"],"names":["Rule","props","id","combinator","attribute","operator","value","disabled","isInvalid","classes","classesProp","useDefaultProps","cx","useClasses","askAction","dispatchAction","attributes","operators","labels","readOnly","disableConfirmation","useQueryBuilderContext","theme","useTheme","isMdDown","useMediaQuery","breakpoints","down","availableOperators","useMemo","attributeSpec","typeOperators","type","reduce","count","item","combinators","includes","shouldShowValueInput","HvGrid","root","jsx","Attribute","Operator","Value","actionsContainer","IconButton","rule","delete","tooltip","ariaLabel","actions","dialog","Delete"],"mappings":";;;;;;;;;;;;;;AA8BaA,MAAAA,OAAOA,CAACC,UAAqB;AAClC,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC,SAASC;AAAAA,EAAAA,IACPC,gBAAgB,gBAAA,sBAAsBV,KAAK;AAEzC,QAAA;AAAA,IAAEQ;AAAAA,IAASG;AAAAA,EAAAA,IAAOC,YAAAA,WAAWH,WAAW;AAExC,QAAA;AAAA,IACJI;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,MACEC,QAAuB,uBAAA;AAE3B,QAAMC,QAAQC,SAAAA;AAEd,QAAMC,WAAWC,SAAAA,cAAcH,MAAMI,YAAYC,KAAK,IAAI,CAAC;AAErDC,QAAAA,qBAAqBC,MAAAA,QAAQ,MAAM;AACvC,UAAMC,gBACJ1B,aAAa,QAAQY,aAAaA,WAAWZ,SAAS,IAAI;AAC5D,QAAI0B,iBAAiB,MAAM;AACnBC,YAAAA,gBAAgBd,UAAUa,cAAcE,IAAI;AAClD,UAAID,iBAAiB,MAAM;AACzB,eAAOA,cAAcE,OACnB,CAACC,OAAOC,SACND,SAASC,KAAKC,YAAYC,SAASlC,UAAU,IAAI,IAAI,IACvD,CACF;AAAA,MACF;AAAA,IACF;AAEO,WAAA;AAAA,KACN,CAACC,WAAWY,YAAYb,YAAYc,SAAS,CAAC;AAE3CqB,QAAAA,uBACJjC,aAAa,WAAWA,aAAa;AAEvC,yCACGkC,KACC,QAAA,EAAA,WAAS,MACT,WAAW3B,GAAGH,QAAQ+B,MAAM;AAAA,IAAE,CAAC/B,QAAQe,QAAQ,GAAGA;AAAAA,EAAAA,CAAU,GAC5D,SAAS,GAET,UAAA;AAAA,IAAAiB,2BAAA,IAACF,KAAO,QAAA,EAAA,MAAI,MAAC,IAAI,IAAI,IAAI,GACvB,UAAAE,2BAAA,IAACC,UACC,WAAA,EAAA,WACA,IACA,UACA,UAAqB,CAAA,GAEzB;AAAA,IACCtC,aAAa,QAAQwB,qBAAqB,KACxCa,2BAAAA,IAAAF,KAAA,QAAA,EAAO,MAAI,MAAC,IAAI,IAAI,IAAI,GACvB,UAACE,2BAAA,IAAAE,mBAAA,EACC,IACA,YACA,WACA,SAAmB,CAAA,GAEvB;AAAA,IAEDvC,aAAa,SAASC,YAAY,QAAQuB,uBAAuB,MAChEa,2BAAAA,IAACF,eAAO,MAAI,MAAC,IAAI,IAAI,IAAE,MACpBD,UACC,wBAAAG,2BAAAA,IAACG,MAAAA,SACC,WACA,IACA,UACA,MAAA,CAEH,EACH,CAAA;AAAA,IAEFH,2BAAAA,IAACF,eAAO,MAAI,MAAC,WAAW9B,QAAQoC,kBAC9B,UAACJ,2BAAAA,IAAAK,WAAA,YAAA,EACC,WAAU,UACV,OAAO5B,OAAO6B,KAAKC,OAAOC,WAAW/B,OAAO6B,KAAKC,OAAOE,WACxD,SAAS,MACP9B,sBACIL,eAAe;AAAA,MAAEiB,MAAM;AAAA,MAAe9B;AAAAA,IAAI,CAAA,IAC1CY,UAAU;AAAA,MACRqC,SAAS,CAAC;AAAA,QAAEnB,MAAM;AAAA,QAAe9B;AAAAA,MAAAA,CAAI;AAAA,MACrCkD,QAAQlC,OAAO6B,KAAKC;AAAAA,IACrB,CAAA,GAEP,UAAU7B,UAEV,yCAACkC,wBAAO,EAAA,MAAK,QAAM,EAAA,CACrB,EACF,CAAA;AAAA,EACF,EAAA,CAAA;AAEJ;;;"}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
4
4
|
const React = require("react");
|
|
5
5
|
const uikitReactIcons = require("@hitachivantara/uikit-react-icons");
|
|
6
|
-
const
|
|
6
|
+
const IconButton = require("../../../utils/IconButton.cjs");
|
|
7
7
|
const Context = require("../Context.cjs");
|
|
8
8
|
const QueryBuilder_styles = require("../QueryBuilder.styles.cjs");
|
|
9
9
|
const Button = require("../../Button/Button.cjs");
|
|
@@ -46,9 +46,6 @@ const RuleGroup = ({
|
|
|
46
46
|
});
|
|
47
47
|
}, disabled: readOnly, startIcon: /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.Add, {}), children: level === 0 && labels.query?.addGroup?.label != null ? labels.query?.addGroup?.label : labels.group.addGroup.label }) })
|
|
48
48
|
] });
|
|
49
|
-
const DeleteIcon = withTooltip.withTooltip(() => /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.Delete, { className: cx({
|
|
50
|
-
[classes.topRemoveButtonDisabled]: readOnly
|
|
51
|
-
}) }), level === 0 && labels.query?.delete?.tooltip ? labels.query?.delete?.tooltip : labels.group.delete.tooltip, "top");
|
|
52
49
|
const onClickCombinator = React.useCallback((item) => {
|
|
53
50
|
dispatchAction({
|
|
54
51
|
type: "set-combinator",
|
|
@@ -60,8 +57,8 @@ const RuleGroup = ({
|
|
|
60
57
|
[classes.topGroup]: level === 0,
|
|
61
58
|
[classes.subGroup]: level > 0
|
|
62
59
|
}), children: [
|
|
63
|
-
/* @__PURE__ */ jsxRuntime.jsx(MultiButton.HvMultiButton, { className: cx(classes.combinator, classes.topCombinator), disabled: readOnly, children: combinators
|
|
64
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cx(classes.buttonBackground, classes.topRemoveButton), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
60
|
+
/* @__PURE__ */ jsxRuntime.jsx(MultiButton.HvMultiButton, { className: cx(classes.combinator, classes.topCombinator), disabled: readOnly, children: combinators?.map((item) => /* @__PURE__ */ jsxRuntime.jsx(Button.HvButton, { className: classes.combinatorButton, selected: item.operand === combinator, onClick: () => item.operand && onClickCombinator(item), disabled: readOnly, size: "xs", children: item.label }, item.operand)) }),
|
|
61
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cx(classes.buttonBackground, classes.topRemoveButton), children: /* @__PURE__ */ jsxRuntime.jsx(IconButton.IconButton, { className: classes.removeButton, onClick: () => disableConfirmation ? dispatchAction({
|
|
65
62
|
type: "remove-node",
|
|
66
63
|
id
|
|
67
64
|
}) : askAction({
|
|
@@ -70,7 +67,9 @@ const RuleGroup = ({
|
|
|
70
67
|
id
|
|
71
68
|
}],
|
|
72
69
|
dialog: level === 0 && labels.query?.delete != null ? labels.query.delete : labels.group.delete
|
|
73
|
-
}),
|
|
70
|
+
}), title: level === 0 && labels.query?.delete?.tooltip || labels.group.delete.tooltip || level === 0 && labels.query?.delete?.ariaLabel || labels.group.delete.ariaLabel, disabled: readOnly, children: /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.Delete, { role: "none", className: cx({
|
|
71
|
+
[classes.topRemoveButtonDisabled]: readOnly
|
|
72
|
+
}) }) }) }),
|
|
74
73
|
rules?.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cx(classes.rulesContainer, {
|
|
75
74
|
[classes.subRulesContainer]: level > 0,
|
|
76
75
|
[classes.topRulesContainer]: level === 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuleGroup.cjs","sources":["../../../../../src/components/QueryBuilder/RuleGroup/RuleGroup.tsx"],"sourcesContent":["import { useCallback } from \"react\";\nimport { Add, Delete, Info } from \"@hitachivantara/uikit-react-icons\";\n\nimport { HvButton } from \"@core/components/Button\";\nimport { HvEmptyState } from \"@core/components/EmptyState\";\nimport { HvMultiButton } from \"@core/components/MultiButton\";\nimport { HvTypography } from \"@core/components/Typography\";\nimport { withTooltip } from \"@core/hocs/withTooltip\";\nimport { ExtractNames } from \"@core/utils/classes\";\n\nimport { Rule } from \"../Rule\";\nimport { useQueryBuilderContext } from \"../Context\";\nimport { useClasses } from \"../QueryBuilder.styles\";\nimport { HvQueryBuilderQuery, HvQueryBuilderQueryCombinator } from \"../types\";\n\nexport interface RuleGroupProps {\n id: React.Key;\n level?: number;\n combinator?: string;\n rules?: HvQueryBuilderQuery[\"rules\"];\n classes?: ExtractNames<typeof useClasses>;\n}\n\nexport const RuleGroup = ({\n level = 0,\n id,\n combinator = \"and\",\n rules = [],\n classes: classesProp,\n}: RuleGroupProps) => {\n const { classes, cx } = useClasses(classesProp);\n\n const {\n dispatchAction,\n askAction,\n maxDepth,\n combinators,\n labels,\n readOnly,\n disableConfirmation,\n } = useQueryBuilderContext();\n\n const normalizedMaxDepth = maxDepth - 1;\n\n const actionButtons = (\n <>\n <div className={classes.buttonBackground}>\n <HvButton\n variant=\"secondarySubtle\"\n onClick={() => {\n dispatchAction({ type: \"add-rule\", id });\n }}\n disabled={readOnly}\n startIcon={<Add />}\n >\n {level === 0 && labels.query?.addRule?.label != null\n ? labels.query?.addRule?.label\n : labels.group.addRule.label}\n </HvButton>\n </div>\n {level <= normalizedMaxDepth && (\n <div className={classes.buttonBackground}>\n <HvButton\n variant=\"secondarySubtle\"\n onClick={() => {\n dispatchAction({ type: \"add-group\", id });\n }}\n disabled={readOnly}\n startIcon={<Add />}\n >\n {level === 0 && labels.query?.addGroup?.label != null\n ? labels.query?.addGroup?.label\n : labels.group.addGroup.label}\n </HvButton>\n </div>\n )}\n </>\n );\n\n const DeleteIcon = withTooltip(\n () => (\n <Delete className={cx({ [classes.topRemoveButtonDisabled]: readOnly })} />\n ),\n level === 0 && labels.query?.delete?.tooltip\n ? labels.query?.delete?.tooltip\n : labels.group.delete.tooltip,\n \"top\"\n );\n\n const onClickCombinator = useCallback(\n (item: HvQueryBuilderQueryCombinator) => {\n dispatchAction({\n type: \"set-combinator\",\n id,\n combinator: item.operand,\n });\n },\n [dispatchAction, id]\n );\n\n return (\n <div\n className={cx(classes.root, {\n [classes.topGroup]: level === 0,\n [classes.subGroup]: level > 0,\n })}\n >\n <HvMultiButton\n className={cx(classes.combinator, classes.topCombinator)}\n disabled={readOnly}\n >\n {combinators &&\n combinators.map((item) => (\n <HvButton\n key={item.operand}\n className={classes.combinatorButton}\n selected={item.operand === combinator}\n onClick={() => item.operand && onClickCombinator(item)}\n disabled={readOnly}\n size=\"xs\"\n >\n {item.label}\n </HvButton>\n ))}\n </HvMultiButton>\n <div className={cx(classes.buttonBackground, classes.topRemoveButton)}>\n <HvButton\n icon\n className={classes.removeButton}\n onClick={() =>\n disableConfirmation\n ? dispatchAction({ type: \"remove-node\", id })\n : askAction({\n actions: [{ type: \"remove-node\", id }],\n dialog:\n level === 0 && labels.query?.delete != null\n ? labels.query.delete\n : labels.group.delete,\n })\n }\n aria-label={\n level === 0 && labels.query?.delete?.ariaLabel\n ? labels.query?.delete?.ariaLabel\n : labels.group.delete.ariaLabel\n }\n disabled={readOnly}\n >\n <DeleteIcon />\n </HvButton>\n </div>\n {rules?.length > 0 && (\n <div\n className={cx(classes.rulesContainer, {\n [classes.subRulesContainer]: level > 0,\n [classes.topRulesContainer]: level === 0,\n })}\n >\n {rules.map((rule, index) => {\n if (\"combinator\" in rule) {\n return (\n <RuleGroup\n key={rule.id}\n level={level + 1}\n {...rule}\n id={rule.id}\n classes={classes}\n />\n );\n }\n\n const isInvalid =\n combinator === \"and\" &&\n rules.some((r, i) => {\n if (\"attribute\" in r) {\n if (\n r.attribute === rule.attribute &&\n r.id !== rule.id &&\n i < index\n ) {\n return true;\n }\n }\n return false;\n });\n\n return (\n <Rule\n key={rule.id}\n {...rule}\n isInvalid={isInvalid}\n id={rule.id}\n combinator={combinator}\n />\n );\n })}\n </div>\n )}\n {rules?.length === 0 && (\n <HvEmptyState\n title={labels.empty?.title}\n message={\n <>\n <HvTypography\n link\n component=\"button\"\n onClick={() => {\n dispatchAction({ type: \"add-rule\", id });\n }}\n className={classes.createConditionButton}\n >\n {`${labels.empty?.createCondition}`}\n </HvTypography>\n {level <= normalizedMaxDepth && (\n <>\n {`${labels.empty?.spacer}`}\n <HvTypography\n link\n component=\"button\"\n onClick={() => {\n dispatchAction({ type: \"add-group\", id });\n }}\n className={classes.createGroupButton}\n >\n {`${labels.empty?.createGroup}`}\n </HvTypography>\n </>\n )}\n </>\n }\n icon={<Info />}\n />\n )}\n <div\n className={cx(\n classes.actionButtonContainer,\n classes.topActionButtonContainer\n )}\n >\n {actionButtons}\n </div>\n </div>\n );\n};\n"],"names":["RuleGroup","level","id","combinator","rules","classes","classesProp","cx","useClasses","dispatchAction","askAction","maxDepth","combinators","labels","readOnly","disableConfirmation","useQueryBuilderContext","normalizedMaxDepth","actionButtons","jsxs","Fragment","jsx","buttonBackground","HvButton","type","Add","query","addRule","label","group","addGroup","DeleteIcon","withTooltip","Delete","topRemoveButtonDisabled","delete","tooltip","onClickCombinator","useCallback","item","operand","root","topGroup","subGroup","HvMultiButton","topCombinator","map","combinatorButton","topRemoveButton","removeButton","actions","dialog","ariaLabel","length","rulesContainer","subRulesContainer","topRulesContainer","rule","index","isInvalid","some","r","i","attribute","Rule","HvEmptyState","empty","title","HvTypography","createConditionButton","createCondition","spacer","createGroupButton","createGroup","Info","actionButtonContainer","topActionButtonContainer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RuleGroup.cjs","sources":["../../../../../src/components/QueryBuilder/RuleGroup/RuleGroup.tsx"],"sourcesContent":["import { useCallback } from \"react\";\nimport { Add, Delete, Info } from \"@hitachivantara/uikit-react-icons\";\n\nimport { HvButton } from \"@core/components/Button\";\nimport { HvEmptyState } from \"@core/components/EmptyState\";\nimport { HvMultiButton } from \"@core/components/MultiButton\";\nimport { HvTypography } from \"@core/components/Typography\";\nimport { IconButton } from \"@core/utils/IconButton\";\nimport { ExtractNames } from \"@core/utils/classes\";\n\nimport { Rule } from \"../Rule\";\nimport { useQueryBuilderContext } from \"../Context\";\nimport { useClasses } from \"../QueryBuilder.styles\";\nimport { HvQueryBuilderQuery, HvQueryBuilderQueryCombinator } from \"../types\";\n\nexport interface RuleGroupProps {\n id: React.Key;\n level?: number;\n combinator?: string;\n rules?: HvQueryBuilderQuery[\"rules\"];\n classes?: ExtractNames<typeof useClasses>;\n}\n\nexport const RuleGroup = ({\n level = 0,\n id,\n combinator = \"and\",\n rules = [],\n classes: classesProp,\n}: RuleGroupProps) => {\n const { classes, cx } = useClasses(classesProp);\n\n const {\n dispatchAction,\n askAction,\n maxDepth,\n combinators,\n labels,\n readOnly,\n disableConfirmation,\n } = useQueryBuilderContext();\n\n const normalizedMaxDepth = maxDepth - 1;\n\n const actionButtons = (\n <>\n <div className={classes.buttonBackground}>\n <HvButton\n variant=\"secondarySubtle\"\n onClick={() => {\n dispatchAction({ type: \"add-rule\", id });\n }}\n disabled={readOnly}\n startIcon={<Add />}\n >\n {level === 0 && labels.query?.addRule?.label != null\n ? labels.query?.addRule?.label\n : labels.group.addRule.label}\n </HvButton>\n </div>\n {level <= normalizedMaxDepth && (\n <div className={classes.buttonBackground}>\n <HvButton\n variant=\"secondarySubtle\"\n onClick={() => {\n dispatchAction({ type: \"add-group\", id });\n }}\n disabled={readOnly}\n startIcon={<Add />}\n >\n {level === 0 && labels.query?.addGroup?.label != null\n ? labels.query?.addGroup?.label\n : labels.group.addGroup.label}\n </HvButton>\n </div>\n )}\n </>\n );\n\n const onClickCombinator = useCallback(\n (item: HvQueryBuilderQueryCombinator) => {\n dispatchAction({\n type: \"set-combinator\",\n id,\n combinator: item.operand,\n });\n },\n [dispatchAction, id]\n );\n\n return (\n <div\n className={cx(classes.root, {\n [classes.topGroup]: level === 0,\n [classes.subGroup]: level > 0,\n })}\n >\n <HvMultiButton\n className={cx(classes.combinator, classes.topCombinator)}\n disabled={readOnly}\n >\n {combinators?.map((item) => (\n <HvButton\n key={item.operand}\n className={classes.combinatorButton}\n selected={item.operand === combinator}\n onClick={() => item.operand && onClickCombinator(item)}\n disabled={readOnly}\n size=\"xs\"\n >\n {item.label}\n </HvButton>\n ))}\n </HvMultiButton>\n <div className={cx(classes.buttonBackground, classes.topRemoveButton)}>\n <IconButton\n className={classes.removeButton}\n onClick={() =>\n disableConfirmation\n ? dispatchAction({ type: \"remove-node\", id })\n : askAction({\n actions: [{ type: \"remove-node\", id }],\n dialog:\n level === 0 && labels.query?.delete != null\n ? labels.query.delete\n : labels.group.delete,\n })\n }\n title={\n (level === 0 && labels.query?.delete?.tooltip) ||\n labels.group.delete.tooltip ||\n (level === 0 && labels.query?.delete?.ariaLabel) ||\n labels.group.delete.ariaLabel\n }\n disabled={readOnly}\n >\n <Delete\n role=\"none\"\n className={cx({ [classes.topRemoveButtonDisabled]: readOnly })}\n />\n </IconButton>\n </div>\n {rules?.length > 0 && (\n <div\n className={cx(classes.rulesContainer, {\n [classes.subRulesContainer]: level > 0,\n [classes.topRulesContainer]: level === 0,\n })}\n >\n {rules.map((rule, index) => {\n if (\"combinator\" in rule) {\n return (\n <RuleGroup\n key={rule.id}\n level={level + 1}\n {...rule}\n id={rule.id}\n classes={classes}\n />\n );\n }\n\n const isInvalid =\n combinator === \"and\" &&\n rules.some((r, i) => {\n if (\"attribute\" in r) {\n if (\n r.attribute === rule.attribute &&\n r.id !== rule.id &&\n i < index\n ) {\n return true;\n }\n }\n return false;\n });\n\n return (\n <Rule\n key={rule.id}\n {...rule}\n isInvalid={isInvalid}\n id={rule.id}\n combinator={combinator}\n />\n );\n })}\n </div>\n )}\n {rules?.length === 0 && (\n <HvEmptyState\n title={labels.empty?.title}\n message={\n <>\n <HvTypography\n link\n component=\"button\"\n onClick={() => {\n dispatchAction({ type: \"add-rule\", id });\n }}\n className={classes.createConditionButton}\n >\n {`${labels.empty?.createCondition}`}\n </HvTypography>\n {level <= normalizedMaxDepth && (\n <>\n {`${labels.empty?.spacer}`}\n <HvTypography\n link\n component=\"button\"\n onClick={() => {\n dispatchAction({ type: \"add-group\", id });\n }}\n className={classes.createGroupButton}\n >\n {`${labels.empty?.createGroup}`}\n </HvTypography>\n </>\n )}\n </>\n }\n icon={<Info />}\n />\n )}\n <div\n className={cx(\n classes.actionButtonContainer,\n classes.topActionButtonContainer\n )}\n >\n {actionButtons}\n </div>\n </div>\n );\n};\n"],"names":["RuleGroup","level","id","combinator","rules","classes","classesProp","cx","useClasses","dispatchAction","askAction","maxDepth","combinators","labels","readOnly","disableConfirmation","useQueryBuilderContext","normalizedMaxDepth","actionButtons","jsxs","Fragment","jsx","buttonBackground","HvButton","type","Add","query","addRule","label","group","addGroup","onClickCombinator","useCallback","item","operand","root","topGroup","subGroup","HvMultiButton","topCombinator","map","combinatorButton","topRemoveButton","IconButton","removeButton","actions","dialog","delete","tooltip","ariaLabel","Delete","topRemoveButtonDisabled","length","rulesContainer","subRulesContainer","topRulesContainer","rule","index","isInvalid","some","r","i","attribute","Rule","HvEmptyState","empty","title","HvTypography","createConditionButton","createCondition","spacer","createGroupButton","createGroup","Info","actionButtonContainer","topActionButtonContainer"],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
4
|
+
const Button = require("../components/Button/Button.cjs");
|
|
5
|
+
const Tooltip = require("../components/Tooltip/Tooltip.cjs");
|
|
6
|
+
const IconButton = ({
|
|
7
|
+
title,
|
|
8
|
+
placement = "top",
|
|
9
|
+
...others
|
|
10
|
+
}) => /* @__PURE__ */ jsxRuntime.jsx(Tooltip.HvTooltip, { enterDelay: 500, title, placement, children: /* @__PURE__ */ jsxRuntime.jsx(Button.HvButton, { icon: true, ...others }) });
|
|
11
|
+
exports.IconButton = IconButton;
|
|
12
|
+
//# sourceMappingURL=IconButton.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IconButton.cjs","sources":["../../../src/utils/IconButton.tsx"],"sourcesContent":["import { HvButton, HvButtonProps } from \"@core/components/Button\";\nimport { HvTooltip, HvTooltipProps } from \"@core/components/Tooltip\";\n\nexport interface IconButtonProps extends Omit<HvButtonProps, \"icon\" | \"title\"> {\n title: React.ReactNode;\n placement?: HvTooltipProps[\"placement\"];\n onClick?: HvButtonProps[\"onClick\"];\n}\n\n/** An `HvButton` of type icon wrapped in a tooltip */\nexport const IconButton = ({\n title,\n placement = \"top\",\n ...others\n}: IconButtonProps) => (\n <HvTooltip enterDelay={500} title={title} placement={placement}>\n <HvButton icon {...others} />\n </HvTooltip>\n);\n"],"names":["IconButton","title","placement","others","jsx","HvTooltip","HvButton"],"mappings":";;;;;AAUO,MAAMA,aAAaA,CAAC;AAAA,EACzBC;AAAAA,EACAC,YAAY;AAAA,EACZ,GAAGC;AACY,MACdC,2BAAAA,IAAAC,QAAAA,WAAA,EAAU,YAAY,KAAK,OAAc,WACxC,UAACD,2BAAA,IAAAE,OAAA,UAAA,EAAS,MAAI,MAAC,GAAIH,OAAAA,CAAO,EAC5B,CAAA;;"}
|
|
@@ -3,13 +3,12 @@ import { Drawer, Backdrop } from "@mui/material";
|
|
|
3
3
|
import { Close } from "@hitachivantara/uikit-react-icons";
|
|
4
4
|
import { theme } from "@hitachivantara/uikit-styles";
|
|
5
5
|
import { useDefaultProps } from "../../hooks/useDefaultProps.js";
|
|
6
|
-
import {
|
|
6
|
+
import { IconButton } from "../../utils/IconButton.js";
|
|
7
7
|
import { setId } from "../../utils/setId.js";
|
|
8
8
|
import { useTheme } from "../../hooks/useTheme.js";
|
|
9
9
|
import { hexToRgbA } from "../../utils/hexToRgbA.js";
|
|
10
10
|
import { useClasses } from "./Drawer.styles.js";
|
|
11
11
|
import { staticClasses } from "./Drawer.styles.js";
|
|
12
|
-
import { HvButton } from "../Button/Button.js";
|
|
13
12
|
const HvDrawer = (props) => {
|
|
14
13
|
const {
|
|
15
14
|
className,
|
|
@@ -32,15 +31,13 @@ const HvDrawer = (props) => {
|
|
|
32
31
|
const {
|
|
33
32
|
colors
|
|
34
33
|
} = useTheme();
|
|
35
|
-
const closeButtonDisplay = () => /* @__PURE__ */ jsx(Close, { role: "none" });
|
|
36
|
-
const CloseButtonTooltipWrapper = buttonTitle ? withTooltip(closeButtonDisplay, buttonTitle, "top") : closeButtonDisplay;
|
|
37
34
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
38
35
|
/* @__PURE__ */ jsxs(Drawer, { className: cx(classes.root, className), id, anchor, open, PaperProps: {
|
|
39
36
|
classes: {
|
|
40
37
|
root: classes.paper
|
|
41
38
|
}
|
|
42
39
|
}, onClose, ...others, children: [
|
|
43
|
-
/* @__PURE__ */ jsx(
|
|
40
|
+
/* @__PURE__ */ jsx(IconButton, { id: setId(id, "close"), className: classes.closeButton, variant: "secondaryGhost", onClick: onClose, title: buttonTitle, children: /* @__PURE__ */ jsx(Close, { role: "none" }) }),
|
|
44
41
|
children
|
|
45
42
|
] }),
|
|
46
43
|
showBackdrop && /* @__PURE__ */ jsx(Backdrop, { open: !!open, onClick: (event) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Drawer.js","sources":["../../../../src/components/Drawer/Drawer.tsx"],"sourcesContent":["import {\n Drawer as MuiDrawer,\n DrawerProps as MuiDrawerProps,\n Backdrop as MuiBackdrop,\n} from \"@mui/material\";\n\nimport { Close } from \"@hitachivantara/uikit-react-icons\";\n\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\n\nimport { HvBaseProps } from \"@core/types/generic\";\nimport {
|
|
1
|
+
{"version":3,"file":"Drawer.js","sources":["../../../../src/components/Drawer/Drawer.tsx"],"sourcesContent":["import {\n Drawer as MuiDrawer,\n DrawerProps as MuiDrawerProps,\n Backdrop as MuiBackdrop,\n} from \"@mui/material\";\n\nimport { Close } from \"@hitachivantara/uikit-react-icons\";\n\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\n\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { IconButton } from \"@core/utils/IconButton\";\nimport { setId } from \"@core/utils/setId\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { useTheme } from \"@core/hooks/useTheme\";\nimport { hexToRgbA } from \"@core/utils/hexToRgbA\";\n\nimport { staticClasses, useClasses } from \"./Drawer.styles\";\n\nexport { staticClasses as drawerClasses };\n\nexport type HvDrawerClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvDrawerProps\n extends MuiDrawerProps,\n Omit<MuiDrawerProps, \"classes\">,\n HvBaseProps<HTMLDivElement> {\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes?: HvDrawerClasses;\n /**\n * Components of the Drawer.\n */\n children?: React.ReactNode;\n /**\n * Current state of the Drawer.\n */\n open?: boolean;\n /**\n * Function executed on close.\n * Extended from Modal from material-ui\n *\n */\n onClose?: (\n event: React.SyntheticEvent,\n reason?: \"escapeKeyDown\" | \"backdropClick\"\n ) => void;\n /**\n * The side the drawer opens from.\n */\n anchor?: \"left\" | \"top\" | \"right\" | \"bottom\";\n /**\n * Title for the button close.\n */\n buttonTitle?: string;\n /**\n * Show backdrop when drawer ix open.\n */\n showBackdrop?: boolean;\n /**\n * Prevent closing the dialog when clicking on the backdrop.\n */\n disableBackdropClick?: boolean;\n /** @ignore */\n ref?: MuiDrawerProps[\"ref\"];\n /** @ignore */\n component?: MuiDrawerProps[\"component\"];\n}\n\n/**\n * The Drawer component provides a foundation to create a sliding pane.\n * It only provides the pane with a close button, the rest of the\n * content can be customized.\n */\nexport const HvDrawer = (props: HvDrawerProps) => {\n const {\n className,\n classes: classesProp,\n id,\n children,\n open,\n onClose,\n anchor = \"right\",\n buttonTitle = \"Close\",\n showBackdrop = true,\n disableBackdropClick = false,\n ...others\n } = useDefaultProps(\"HvDrawer\", props);\n\n const { classes, cx, css } = useClasses(classesProp);\n const { colors } = useTheme();\n\n return (\n <>\n <MuiDrawer\n className={cx(classes.root, className)}\n id={id}\n anchor={anchor}\n open={open}\n PaperProps={{\n classes: {\n root: classes.paper,\n },\n }}\n onClose={onClose}\n {...others}\n >\n <IconButton\n id={setId(id, \"close\")}\n className={classes.closeButton}\n variant=\"secondaryGhost\"\n onClick={onClose}\n title={buttonTitle}\n >\n <Close role=\"none\" />\n </IconButton>\n {children}\n </MuiDrawer>\n {showBackdrop && (\n <MuiBackdrop\n open={!!open}\n onClick={(event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n if (disableBackdropClick) return;\n onClose?.(event, \"backdropClick\");\n }}\n className={cx(\n css({\n background: hexToRgbA(colors?.atmo4 || theme.colors.atmo4),\n }),\n classes.background\n )}\n />\n )}\n </>\n );\n};\n"],"names":["HvDrawer","props","className","classes","classesProp","id","children","open","onClose","anchor","buttonTitle","showBackdrop","disableBackdropClick","others","useDefaultProps","cx","css","useClasses","colors","useTheme","MuiDrawer","root","paper","setId","closeButton","MuiBackdrop","event","background","hexToRgbA","atmo4","theme"],"mappings":";;;;;;;;;;;AAqFaA,MAAAA,WAAWA,CAACC,UAAyB;AAC1C,QAAA;AAAA,IACJC;AAAAA,IACAC,SAASC;AAAAA,IACTC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC,SAAS;AAAA,IACTC,cAAc;AAAA,IACdC,eAAe;AAAA,IACfC,uBAAuB;AAAA,IACvB,GAAGC;AAAAA,EAAAA,IACDC,gBAAgB,YAAYb,KAAK;AAE/B,QAAA;AAAA,IAAEE;AAAAA,IAASY;AAAAA,IAAIC;AAAAA,EAAAA,IAAQC,WAAWb,WAAW;AAC7C,QAAA;AAAA,IAAEc;AAAAA,MAAWC,SAAS;AAE5B,SAEI,qBAAA,UAAA,EAAA,UAAA;AAAA,IAAC,qBAAAC,QAAA,EACC,WAAWL,GAAGZ,QAAQkB,MAAMnB,SAAS,GACrC,IACA,QACA,MACA,YAAY;AAAA,MACVC,SAAS;AAAA,QACPkB,MAAMlB,QAAQmB;AAAAA,MAChB;AAAA,IAAA,GAEF,SACIT,GAAAA,QAEJ,UAAA;AAAA,MAAA,oBAAC,cACC,IAAIU,MAAMlB,IAAI,OAAO,GACrB,WAAWF,QAAQqB,aACnB,SAAQ,kBACR,SAAShB,SACT,OAAOE,aAEP,8BAAC,OAAM,EAAA,MAAK,QAAM,EACpB,CAAA;AAAA,MACCJ;AAAAA,IAAAA,GACH;AAAA,IACCK,oCACEc,UACC,EAAA,MAAM,CAAC,CAAClB,MACR,SAAS,CAACmB,UAAqD;AACzDd,UAAAA;AAAsB;AAC1BJ,gBAAUkB,OAAO,eAAe;AAAA,IAAA,GAElC,WAAWX,GACTC,IAAI;AAAA,MACFW,YAAYC,UAAUV,QAAQW,SAASC,MAAMZ,OAAOW,KAAK;AAAA,IAAA,CAC1D,GACD1B,QAAQwB,UACV,GAEH;AAAA,EACH,EAAA,CAAA;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Drawer.styles.js","sources":["../../../../src/components/Drawer/Drawer.styles.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { createClasses } from \"@core/utils/classes\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvDrawer\", {\n root: {},\n paper: {\n backgroundColor: theme.colors.atmo1,\n padding: 0,\n overflow: \"auto\",\n boxShadow: theme.colors.shadow,\n },\n background: {},\n closeButton: {\n
|
|
1
|
+
{"version":3,"file":"Drawer.styles.js","sources":["../../../../src/components/Drawer/Drawer.styles.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { createClasses } from \"@core/utils/classes\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvDrawer\", {\n root: {},\n paper: {\n backgroundColor: theme.colors.atmo1,\n padding: 0,\n overflow: \"auto\",\n boxShadow: theme.colors.shadow,\n },\n background: {},\n closeButton: {\n position: \"absolute\",\n top: theme.spacing(\"sm\"),\n right: theme.spacing(\"sm\"),\n },\n});\n"],"names":["staticClasses","useClasses","createClasses","root","paper","backgroundColor","theme","colors","atmo1","padding","overflow","boxShadow","shadow","background","closeButton","position","top","spacing","right"],"mappings":";;AAIa,MAAA;AAAA,EAAEA;AAAAA,EAAeC;AAAW,IAAIC,cAAc,YAAY;AAAA,EACrEC,MAAM,CAAC;AAAA,EACPC,OAAO;AAAA,IACLC,iBAAiBC,MAAMC,OAAOC;AAAAA,IAC9BC,SAAS;AAAA,IACTC,UAAU;AAAA,IACVC,WAAWL,MAAMC,OAAOK;AAAAA,EAC1B;AAAA,EACAC,YAAY,CAAC;AAAA,EACbC,aAAa;AAAA,IACXC,UAAU;AAAA,IACVC,KAAKV,MAAMW,QAAQ,IAAI;AAAA,IACvBC,OAAOZ,MAAMW,QAAQ,IAAI;AAAA,EAC3B;AACF,CAAC;"}
|
|
@@ -5,12 +5,12 @@ import { Start, Backwards, Forwards, End } from "@hitachivantara/uikit-react-ico
|
|
|
5
5
|
import { useDefaultProps } from "../../hooks/useDefaultProps.js";
|
|
6
6
|
import { setId } from "../../utils/setId.js";
|
|
7
7
|
import { isKey } from "../../utils/keyboardUtils.js";
|
|
8
|
+
import { IconButton } from "../../utils/IconButton.js";
|
|
8
9
|
import { useLabels } from "../../hooks/useLabels.js";
|
|
9
10
|
import HvSelect, { Option } from "./Select.js";
|
|
10
11
|
import { useClasses } from "./Pagination.styles.js";
|
|
11
12
|
import { staticClasses } from "./Pagination.styles.js";
|
|
12
13
|
import { usePageInput, setColor, getSafePage } from "./utils.js";
|
|
13
|
-
import ButtonIconTooltip from "./ButtonIconTooltip.js";
|
|
14
14
|
import { HvTypography } from "../Typography/Typography.js";
|
|
15
15
|
import { HvInput } from "../Input/Input.js";
|
|
16
16
|
const DEFAULT_LABELS = {
|
|
@@ -89,15 +89,15 @@ const HvPagination = (props) => {
|
|
|
89
89
|
/* @__PURE__ */ jsx(Hidden, { xsDown: true, children: /* @__PURE__ */ jsx(HvTypography, { component: "span", className: classes.pageSizeTextContainer, children: labels?.pageSizeEntryName }) })
|
|
90
90
|
] }) }),
|
|
91
91
|
/* @__PURE__ */ jsxs("div", { className: classes.pageNavigator, ...navigationProps, children: [
|
|
92
|
-
/* @__PURE__ */ jsx(
|
|
93
|
-
/* @__PURE__ */ jsx(
|
|
92
|
+
/* @__PURE__ */ jsx(IconButton, { id: setId(id, "firstPage-button"), className: classes.iconContainer, disabled: !canPrevious, onClick: () => changePage(0), title: labels?.firstPage || labels?.paginationFirstPageTitle, children: /* @__PURE__ */ jsx(Start, { role: "none", className: classes.icon, color: setColor(!canPrevious), iconSize: "XS" }) }),
|
|
93
|
+
/* @__PURE__ */ jsx(IconButton, { id: setId(id, "previousPage-button"), className: classes.iconContainer, disabled: !canPrevious, onClick: () => changePage(page - 1), title: labels?.previousPage || labels?.paginationPreviousPageTitle, children: /* @__PURE__ */ jsx(Backwards, { role: "none", className: classes.icon, color: setColor(!canPrevious), iconSize: "XS" }) }),
|
|
94
94
|
/* @__PURE__ */ jsxs("div", { className: classes.pageInfo, children: [
|
|
95
95
|
showPageJump ? renderPageJump() : /* @__PURE__ */ jsx(HvTypography, { variant: "caption2", component: "span", children: `${page + 1}` }),
|
|
96
96
|
/* @__PURE__ */ jsx(HvTypography, { component: "span", children: `${labels?.pagesSeparator} ` }),
|
|
97
97
|
/* @__PURE__ */ jsx(HvTypography, { component: "span", id: setId(id, "totalPages"), className: classes.totalPagesTextContainer, children: pages })
|
|
98
98
|
] }),
|
|
99
|
-
/* @__PURE__ */ jsx(
|
|
100
|
-
/* @__PURE__ */ jsx(
|
|
99
|
+
/* @__PURE__ */ jsx(IconButton, { id: setId(id, "nextPage-button"), className: classes.iconContainer, disabled: !canNext, onClick: () => changePage(page + 1), title: labels?.nextPage || labels?.paginationNextPageTitle, children: /* @__PURE__ */ jsx(Forwards, { role: "none", className: classes.icon, color: setColor(!canNext), iconSize: "XS" }) }),
|
|
100
|
+
/* @__PURE__ */ jsx(IconButton, { id: setId(id, "lastPage-button"), className: classes.iconContainer, disabled: !canNext, onClick: () => changePage(pages - 1), title: labels?.lastPage || labels?.paginationLastPageTitle, children: /* @__PURE__ */ jsx(End, { className: classes.icon, color: setColor(!canNext), iconSize: "XS" }) })
|
|
101
101
|
] })
|
|
102
102
|
] });
|
|
103
103
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.js","sources":["../../../../src/components/Pagination/Pagination.tsx"],"sourcesContent":["import { HTMLAttributes, useCallback, useEffect } from \"react\";\n\nimport { Hidden } from \"@mui/material\";\n\nimport {\n Start,\n End,\n Backwards,\n Forwards,\n} from \"@hitachivantara/uikit-react-icons\";\n\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\n\nimport { HvInput, HvInputProps } from \"@core/components/Input\";\nimport { HvTypography } from \"@core/components/Typography\";\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { setId } from \"@core/utils/setId\";\nimport { isKey } from \"@core/utils/keyboardUtils\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { useLabels } from \"@core/hooks/useLabels\";\n\nimport HvSelect, { Option } from \"./Select\";\nimport { staticClasses, useClasses } from \"./Pagination.styles\";\nimport { usePageInput, getSafePage, setColor } from \"./utils\";\nimport ButtonIconTooltip from \"./ButtonIconTooltip\";\n\nexport { staticClasses as paginationClasses };\n\nexport type HvPaginationClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvPaginationLabels {\n /** The show label. */\n pageSizePrev?: string;\n /** Indicate the units of the page size selection. */\n pageSizeEntryName?: string;\n /** Used for the aria-label of the selection of number of unit.s */\n pageSizeSelectorDescription?: string;\n /** Separator of current page and total pages. */\n pagesSeparator?: string;\n /** Title of button `firstPage`. */\n paginationFirstPageTitle?: string;\n /** Title of button `previousPage`. */\n paginationPreviousPageTitle?: string;\n /** Title of button `nextPage`. */\n paginationNextPageTitle?: string;\n /** Title of button `lastPage`. */\n paginationLastPageTitle?: string;\n /** Aria-label passed to the page input. */\n paginationInputLabel?: string;\n /** Aria-label of the first page button */\n firstPage?: string;\n /** Aria-label of the previous page button */\n previousPage?: string;\n /** Aria-label of the next page button */\n nextPage?: string;\n /** Aria-label of the last page button */\n lastPage?: string;\n}\n\nexport interface HvPaginationProps extends HvBaseProps {\n /** The number of pages the component has. */\n pages?: number;\n /** The currently selected page (0-indexed). */\n page?: number;\n /** Controls whether the left page size mechanism should be visible. */\n showPageSizeOptions?: boolean;\n /** The array of possible page sizes for the dropdown. */\n pageSizeOptions?: number[];\n /** The currently selected page size. */\n pageSize?: number;\n /** Controls whether the central page changing mechanism should be visible. */\n showPageJump?: boolean;\n /** Controls whether the previous/first page buttons are enabled. */\n canPrevious?: boolean;\n /** Controls whether the next/last page buttons are enabled. */\n canNext?: boolean;\n /** Function called when the page changes. */\n onPageChange?: (page: number) => void;\n /** Function called when the page size changes. */\n onPageSizeChange?: (pageSize: number) => void;\n /** An object containing all the labels for the component. */\n labels?: HvPaginationLabels;\n /** Other props to show page component. */\n showPageProps?: HTMLAttributes<HTMLDivElement>;\n /** Other props to pagination component. */\n navigationProps?: HTMLAttributes<HTMLDivElement>;\n /** Extra properties passed to the input component representing the current pages. */\n currentPageInputProps?: HvInputProps;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvPaginationClasses;\n}\n\nconst DEFAULT_LABELS = {\n pageSizePrev: \"Show\",\n pageSizeEntryName: \"rows\",\n pageSizeSelectorDescription: \"Select how many to display\",\n pagesSeparator: \"/\",\n paginationFirstPageTitle: \"First page\",\n paginationPreviousPageTitle: \"Previous page\",\n paginationNextPageTitle: \"Next page\",\n paginationLastPageTitle: \"Last page\",\n paginationInputLabel: \"Current page\",\n firstPage: \"First Page\",\n previousPage: \"Previous Page\",\n nextPage: \"Next Page\",\n lastPage: \"Last Page\",\n};\n\nconst defaultPageSizeOptions = [5, 10, 20, 25, 50, 100];\n\n/**\n * Pagination is the process of dividing a document into discrete pages. It relates to how users interact\n * with structured content on a website or application.\n */\nexport const HvPagination = (props: HvPaginationProps) => {\n const {\n classes: classesProp,\n className,\n id,\n pages = 1,\n page = 0,\n showPageSizeOptions = true,\n pageSizeOptions = defaultPageSizeOptions,\n pageSize = defaultPageSizeOptions[1],\n showPageJump = true,\n canPrevious = false,\n canNext = false,\n onPageChange,\n onPageSizeChange,\n labels: labelsProp,\n showPageProps,\n navigationProps,\n currentPageInputProps,\n ...others\n } = useDefaultProps(\"HvPagination\", props);\n\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n const [pageInput, handleInputChange] = usePageInput(page);\n const { classes, cx } = useClasses(classesProp);\n\n const changePage = useCallback(\n (newPage: number) => {\n const safePage: number = getSafePage(newPage, page, pages);\n\n onPageChange?.(safePage);\n handleInputChange(null, safePage + 1);\n },\n [page, pages, onPageChange, handleInputChange]\n );\n\n useEffect(() => {\n if (page >= pages && pages > 0) {\n changePage(page);\n }\n }, [changePage, page, pages]);\n\n useEffect(() => {\n if (pageInput !== page + 1) {\n handleInputChange(null, page + 1);\n }\n\n // we only want to \"fix\" the input's display value when `page` property changed\n // (either externally or when internally committed - onBlur or Enter),\n // not while editing the input.\n // breaking a rule of hooks isn't ideal and it's just a hack for fixing\n // a bug preventing properly controlling of the `page` property.\n // fixing it some other way would potentially introduce a breaking change.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [handleInputChange, page]);\n\n const renderPageJump = () => (\n <div className={classes.pageJump}>\n <HvInput\n id={setId(id, \"currentPage\")}\n labels={labels}\n inputProps={{\n \"aria-label\": labels?.paginationInputLabel,\n // We really want the native number input\n type: \"number\",\n }}\n classes={{\n root: classes?.pageSizeInputContainer,\n input: classes?.pageSizeInput,\n inputRoot: classes?.pageSizeInputRoot,\n }}\n onChange={(event, value) => handleInputChange(event, Number(value))}\n value={String(pageInput)}\n onBlur={(evt, value) => changePage(Number(value) - 1)}\n onKeyDown={(evt, value) =>\n isKey(evt, \"Enter\") && changePage(Number(value) - 1)\n }\n disabled={pageSize === 0}\n disableClear\n {...currentPageInputProps}\n />\n </div>\n );\n\n return (\n <div id={id} className={cx(classes.root, className)} {...others}>\n <div className={classes.pageSizeOptions} {...showPageProps}>\n {showPageSizeOptions && (\n <>\n <Hidden xsDown>\n <HvTypography\n component=\"span\"\n className={classes?.pageSizeTextContainer}\n >\n {labels?.pageSizePrev}\n </HvTypography>\n </Hidden>\n <HvSelect\n id={setId(id, \"pageSize\")}\n disabled={pageSize === 0}\n className={classes.pageSizeOptionsSelect}\n aria-label={labels?.pageSizeSelectorDescription}\n onChange={(_: any, val: number) => onPageSizeChange?.(val)}\n value={pageSize}\n classes={{ header: classes.pageSizeHeader }}\n >\n {pageSizeOptions.map((option) => (\n <Option key={option} value={option}>\n {option}\n </Option>\n ))}\n </HvSelect>\n <Hidden xsDown>\n <HvTypography\n component=\"span\"\n className={classes.pageSizeTextContainer}\n >\n {labels?.pageSizeEntryName}\n </HvTypography>\n </Hidden>\n </>\n )}\n </div>\n <div className={classes.pageNavigator} {...navigationProps}>\n <ButtonIconTooltip\n id={setId(id, \"firstPage-button\")}\n aria-label={labels?.firstPage}\n className={classes.iconContainer}\n disabled={!canPrevious}\n onClick={() => changePage(0)}\n tooltip={labels?.paginationFirstPageTitle}\n >\n <Start\n className={classes.icon}\n color={setColor(!canPrevious)}\n iconSize=\"XS\"\n />\n </ButtonIconTooltip>\n <ButtonIconTooltip\n id={setId(id, \"previousPage-button\")}\n aria-label={labels?.previousPage}\n className={classes.iconContainer}\n disabled={!canPrevious}\n onClick={() => changePage(page - 1)}\n tooltip={labels?.paginationPreviousPageTitle}\n >\n <Backwards\n className={classes.icon}\n color={setColor(!canPrevious)}\n iconSize=\"XS\"\n />\n </ButtonIconTooltip>\n <div className={classes.pageInfo}>\n {showPageJump ? (\n renderPageJump()\n ) : (\n <HvTypography variant=\"caption2\" component=\"span\">{`${\n page + 1\n }`}</HvTypography>\n )}\n <HvTypography component=\"span\">{`${labels?.pagesSeparator} `}</HvTypography>\n <HvTypography\n component=\"span\"\n id={setId(id, \"totalPages\")}\n className={classes.totalPagesTextContainer}\n >\n {pages}\n </HvTypography>\n </div>\n <ButtonIconTooltip\n id={setId(id, \"nextPage-button\")}\n aria-label={labels?.nextPage}\n className={classes.iconContainer}\n disabled={!canNext}\n onClick={() => changePage(page + 1)}\n tooltip={labels?.paginationNextPageTitle}\n >\n <Forwards\n className={classes.icon}\n color={setColor(!canNext)}\n iconSize=\"XS\"\n />\n </ButtonIconTooltip>\n <ButtonIconTooltip\n id={setId(id, \"lastPage-button\")}\n aria-label={labels?.lastPage}\n className={classes.iconContainer}\n disabled={!canNext}\n onClick={() => changePage(pages - 1)}\n tooltip={labels?.paginationLastPageTitle}\n >\n <End\n className={classes.icon}\n color={setColor(!canNext)}\n iconSize=\"XS\"\n />\n </ButtonIconTooltip>\n </div>\n </div>\n );\n};\n"],"names":["DEFAULT_LABELS","pageSizePrev","pageSizeEntryName","pageSizeSelectorDescription","pagesSeparator","paginationFirstPageTitle","paginationPreviousPageTitle","paginationNextPageTitle","paginationLastPageTitle","paginationInputLabel","firstPage","previousPage","nextPage","lastPage","defaultPageSizeOptions","HvPagination","props","classes","classesProp","className","id","pages","page","showPageSizeOptions","pageSizeOptions","pageSize","showPageJump","canPrevious","canNext","onPageChange","onPageSizeChange","labels","labelsProp","showPageProps","navigationProps","currentPageInputProps","others","useDefaultProps","useLabels","pageInput","handleInputChange","usePageInput","cx","useClasses","changePage","useCallback","newPage","safePage","getSafePage","useEffect","renderPageJump","pageJump","setId","type","root","pageSizeInputContainer","input","pageSizeInput","inputRoot","pageSizeInputRoot","event","value","Number","String","evt","isKey","pageSizeTextContainer","pageSizeOptionsSelect","_","val","header","pageSizeHeader","map","option","pageNavigator","iconContainer","icon","setColor","pageInfo","totalPagesTextContainer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Pagination.js","sources":["../../../../src/components/Pagination/Pagination.tsx"],"sourcesContent":["import { HTMLAttributes, useCallback, useEffect } from \"react\";\n\nimport { Hidden } from \"@mui/material\";\n\nimport {\n Start,\n End,\n Backwards,\n Forwards,\n} from \"@hitachivantara/uikit-react-icons\";\n\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\n\nimport { HvInput, HvInputProps } from \"@core/components/Input\";\nimport { HvTypography } from \"@core/components/Typography\";\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { setId } from \"@core/utils/setId\";\nimport { isKey } from \"@core/utils/keyboardUtils\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { IconButton } from \"@core/utils/IconButton\";\nimport { useLabels } from \"@core/hooks/useLabels\";\n\nimport HvSelect, { Option } from \"./Select\";\nimport { staticClasses, useClasses } from \"./Pagination.styles\";\nimport { usePageInput, getSafePage, setColor } from \"./utils\";\n\nexport { staticClasses as paginationClasses };\n\nexport type HvPaginationClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvPaginationLabels {\n /** The show label. */\n pageSizePrev?: string;\n /** Indicate the units of the page size selection. */\n pageSizeEntryName?: string;\n /** Used for the aria-label of the selection of number of unit.s */\n pageSizeSelectorDescription?: string;\n /** Separator of current page and total pages. */\n pagesSeparator?: string;\n /** Title of button `firstPage`. @deprecated Use `firstPage` instead. */\n paginationFirstPageTitle?: string;\n /** Title of button `previousPage`. @deprecated Use `previousPage` instead. */\n paginationPreviousPageTitle?: string;\n /** Title of button `nextPage`. @deprecated Use `nextPage` instead. */\n paginationNextPageTitle?: string;\n /** Title of button `lastPage`. @deprecated Use `lastPage` instead. */\n paginationLastPageTitle?: string;\n /** Aria-label passed to the page input. */\n paginationInputLabel?: string;\n /** Label of the first page button */\n firstPage?: string;\n /** Label of the previous page button */\n previousPage?: string;\n /** Label of the next page button */\n nextPage?: string;\n /** Label of the last page button */\n lastPage?: string;\n}\n\nexport interface HvPaginationProps extends HvBaseProps {\n /** The number of pages the component has. */\n pages?: number;\n /** The currently selected page (0-indexed). */\n page?: number;\n /** Controls whether the left page size mechanism should be visible. */\n showPageSizeOptions?: boolean;\n /** The array of possible page sizes for the dropdown. */\n pageSizeOptions?: number[];\n /** The currently selected page size. */\n pageSize?: number;\n /** Controls whether the central page changing mechanism should be visible. */\n showPageJump?: boolean;\n /** Controls whether the previous/first page buttons are enabled. */\n canPrevious?: boolean;\n /** Controls whether the next/last page buttons are enabled. */\n canNext?: boolean;\n /** Function called when the page changes. */\n onPageChange?: (page: number) => void;\n /** Function called when the page size changes. */\n onPageSizeChange?: (pageSize: number) => void;\n /** An object containing all the labels for the component. */\n labels?: HvPaginationLabels;\n /** Other props to show page component. */\n showPageProps?: HTMLAttributes<HTMLDivElement>;\n /** Other props to pagination component. */\n navigationProps?: HTMLAttributes<HTMLDivElement>;\n /** Extra properties passed to the input component representing the current pages. */\n currentPageInputProps?: HvInputProps;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvPaginationClasses;\n}\n\nconst DEFAULT_LABELS: HvPaginationLabels = {\n pageSizePrev: \"Show\",\n pageSizeEntryName: \"rows\",\n pageSizeSelectorDescription: \"Select how many to display\",\n pagesSeparator: \"/\",\n paginationFirstPageTitle: \"First page\",\n paginationPreviousPageTitle: \"Previous page\",\n paginationNextPageTitle: \"Next page\",\n paginationLastPageTitle: \"Last page\",\n paginationInputLabel: \"Current page\",\n firstPage: \"First Page\",\n previousPage: \"Previous Page\",\n nextPage: \"Next Page\",\n lastPage: \"Last Page\",\n};\n\nconst defaultPageSizeOptions = [5, 10, 20, 25, 50, 100];\n\n/**\n * Pagination is the process of dividing a document into discrete pages. It relates to how users interact\n * with structured content on a website or application.\n */\nexport const HvPagination = (props: HvPaginationProps) => {\n const {\n classes: classesProp,\n className,\n id,\n pages = 1,\n page = 0,\n showPageSizeOptions = true,\n pageSizeOptions = defaultPageSizeOptions,\n pageSize = defaultPageSizeOptions[1],\n showPageJump = true,\n canPrevious = false,\n canNext = false,\n onPageChange,\n onPageSizeChange,\n labels: labelsProp,\n showPageProps,\n navigationProps,\n currentPageInputProps,\n ...others\n } = useDefaultProps(\"HvPagination\", props);\n\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n const [pageInput, handleInputChange] = usePageInput(page);\n const { classes, cx } = useClasses(classesProp);\n\n const changePage = useCallback(\n (newPage: number) => {\n const safePage: number = getSafePage(newPage, page, pages);\n\n onPageChange?.(safePage);\n handleInputChange(null, safePage + 1);\n },\n [page, pages, onPageChange, handleInputChange]\n );\n\n useEffect(() => {\n if (page >= pages && pages > 0) {\n changePage(page);\n }\n }, [changePage, page, pages]);\n\n useEffect(() => {\n if (pageInput !== page + 1) {\n handleInputChange(null, page + 1);\n }\n\n // we only want to \"fix\" the input's display value when `page` property changed\n // (either externally or when internally committed - onBlur or Enter),\n // not while editing the input.\n // breaking a rule of hooks isn't ideal and it's just a hack for fixing\n // a bug preventing properly controlling of the `page` property.\n // fixing it some other way would potentially introduce a breaking change.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [handleInputChange, page]);\n\n const renderPageJump = () => (\n <div className={classes.pageJump}>\n <HvInput\n id={setId(id, \"currentPage\")}\n labels={labels}\n inputProps={{\n \"aria-label\": labels?.paginationInputLabel,\n // We really want the native number input\n type: \"number\",\n }}\n classes={{\n root: classes?.pageSizeInputContainer,\n input: classes?.pageSizeInput,\n inputRoot: classes?.pageSizeInputRoot,\n }}\n onChange={(event, value) => handleInputChange(event, Number(value))}\n value={String(pageInput)}\n onBlur={(evt, value) => changePage(Number(value) - 1)}\n onKeyDown={(evt, value) =>\n isKey(evt, \"Enter\") && changePage(Number(value) - 1)\n }\n disabled={pageSize === 0}\n disableClear\n {...currentPageInputProps}\n />\n </div>\n );\n\n return (\n <div id={id} className={cx(classes.root, className)} {...others}>\n <div className={classes.pageSizeOptions} {...showPageProps}>\n {showPageSizeOptions && (\n <>\n <Hidden xsDown>\n <HvTypography\n component=\"span\"\n className={classes?.pageSizeTextContainer}\n >\n {labels?.pageSizePrev}\n </HvTypography>\n </Hidden>\n <HvSelect\n id={setId(id, \"pageSize\")}\n disabled={pageSize === 0}\n className={classes.pageSizeOptionsSelect}\n aria-label={labels?.pageSizeSelectorDescription}\n onChange={(_: any, val: number) => onPageSizeChange?.(val)}\n value={pageSize}\n classes={{ header: classes.pageSizeHeader }}\n >\n {pageSizeOptions.map((option) => (\n <Option key={option} value={option}>\n {option}\n </Option>\n ))}\n </HvSelect>\n <Hidden xsDown>\n <HvTypography\n component=\"span\"\n className={classes.pageSizeTextContainer}\n >\n {labels?.pageSizeEntryName}\n </HvTypography>\n </Hidden>\n </>\n )}\n </div>\n <div className={classes.pageNavigator} {...navigationProps}>\n <IconButton\n id={setId(id, \"firstPage-button\")}\n className={classes.iconContainer}\n disabled={!canPrevious}\n onClick={() => changePage(0)}\n title={labels?.firstPage || labels?.paginationFirstPageTitle}\n >\n <Start\n role=\"none\"\n className={classes.icon}\n color={setColor(!canPrevious)}\n iconSize=\"XS\"\n />\n </IconButton>\n <IconButton\n id={setId(id, \"previousPage-button\")}\n className={classes.iconContainer}\n disabled={!canPrevious}\n onClick={() => changePage(page - 1)}\n title={labels?.previousPage || labels?.paginationPreviousPageTitle}\n >\n <Backwards\n role=\"none\"\n className={classes.icon}\n color={setColor(!canPrevious)}\n iconSize=\"XS\"\n />\n </IconButton>\n <div className={classes.pageInfo}>\n {showPageJump ? (\n renderPageJump()\n ) : (\n <HvTypography variant=\"caption2\" component=\"span\">{`${\n page + 1\n }`}</HvTypography>\n )}\n <HvTypography component=\"span\">{`${labels?.pagesSeparator} `}</HvTypography>\n <HvTypography\n component=\"span\"\n id={setId(id, \"totalPages\")}\n className={classes.totalPagesTextContainer}\n >\n {pages}\n </HvTypography>\n </div>\n <IconButton\n id={setId(id, \"nextPage-button\")}\n className={classes.iconContainer}\n disabled={!canNext}\n onClick={() => changePage(page + 1)}\n title={labels?.nextPage || labels?.paginationNextPageTitle}\n >\n <Forwards\n role=\"none\"\n className={classes.icon}\n color={setColor(!canNext)}\n iconSize=\"XS\"\n />\n </IconButton>\n <IconButton\n id={setId(id, \"lastPage-button\")}\n className={classes.iconContainer}\n disabled={!canNext}\n onClick={() => changePage(pages - 1)}\n title={labels?.lastPage || labels?.paginationLastPageTitle}\n >\n <End\n className={classes.icon}\n color={setColor(!canNext)}\n iconSize=\"XS\"\n />\n </IconButton>\n </div>\n </div>\n );\n};\n"],"names":["DEFAULT_LABELS","pageSizePrev","pageSizeEntryName","pageSizeSelectorDescription","pagesSeparator","paginationFirstPageTitle","paginationPreviousPageTitle","paginationNextPageTitle","paginationLastPageTitle","paginationInputLabel","firstPage","previousPage","nextPage","lastPage","defaultPageSizeOptions","HvPagination","props","classes","classesProp","className","id","pages","page","showPageSizeOptions","pageSizeOptions","pageSize","showPageJump","canPrevious","canNext","onPageChange","onPageSizeChange","labels","labelsProp","showPageProps","navigationProps","currentPageInputProps","others","useDefaultProps","useLabels","pageInput","handleInputChange","usePageInput","cx","useClasses","changePage","useCallback","newPage","safePage","getSafePage","useEffect","renderPageJump","pageJump","setId","type","root","pageSizeInputContainer","input","pageSizeInput","inputRoot","pageSizeInputRoot","event","value","Number","String","evt","isKey","pageSizeTextContainer","pageSizeOptionsSelect","_","val","header","pageSizeHeader","map","option","pageNavigator","iconContainer","icon","setColor","pageInfo","totalPagesTextContainer"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsxs, jsx } from "@emotion/react/jsx-runtime";
|
|
2
2
|
import { useMemo } from "react";
|
|
3
3
|
import { Delete } from "@hitachivantara/uikit-react-icons";
|
|
4
4
|
import { useTheme, useMediaQuery } from "@mui/material";
|
|
5
|
-
import {
|
|
5
|
+
import { IconButton } from "../../../utils/IconButton.js";
|
|
6
6
|
import { useQueryBuilderContext } from "../Context.js";
|
|
7
7
|
import { useClasses } from "./Rule.styles.js";
|
|
8
8
|
import { staticClasses } from "./Rule.styles.js";
|
|
@@ -10,7 +10,6 @@ import { HvGrid } from "../../Grid/Grid.js";
|
|
|
10
10
|
import { Attribute } from "./Attribute/Attribute.js";
|
|
11
11
|
import { Operator } from "./Operator/Operator.js";
|
|
12
12
|
import { Value } from "./Value/Value.js";
|
|
13
|
-
import { HvButton } from "../../Button/Button.js";
|
|
14
13
|
import { useDefaultProps } from "../../../hooks/useDefaultProps.js";
|
|
15
14
|
const Rule = (props) => {
|
|
16
15
|
const {
|
|
@@ -49,14 +48,13 @@ const Rule = (props) => {
|
|
|
49
48
|
return -1;
|
|
50
49
|
}, [attribute, attributes, combinator, operators]);
|
|
51
50
|
const shouldShowValueInput = operator !== "Empty" && operator !== "IsNotEmpty";
|
|
52
|
-
const DeleteIcon = withTooltip(() => /* @__PURE__ */ jsx(Delete, {}), labels.rule.delete.tooltip, "bottom");
|
|
53
51
|
return /* @__PURE__ */ jsxs(HvGrid, { container: true, className: cx(classes.root, {
|
|
54
52
|
[classes.isMdDown]: isMdDown
|
|
55
53
|
}), spacing: 0, children: [
|
|
56
54
|
/* @__PURE__ */ jsx(HvGrid, { item: true, xs: 12, md: 3, children: /* @__PURE__ */ jsx(Attribute, { attribute, id, disabled, isInvalid }) }),
|
|
57
55
|
attribute != null && availableOperators > 0 && /* @__PURE__ */ jsx(HvGrid, { item: true, xs: 12, md: 3, children: /* @__PURE__ */ jsx(Operator, { id, combinator, attribute, operator }) }),
|
|
58
56
|
attribute != null && (operator != null || availableOperators === 0) && /* @__PURE__ */ jsx(HvGrid, { item: true, xs: 12, md: true, children: shouldShowValueInput && /* @__PURE__ */ jsx(Value, { attribute, id, operator, value }) }),
|
|
59
|
-
/* @__PURE__ */ jsx(HvGrid, { item: true, className: classes.actionsContainer, children: /* @__PURE__ */ jsx(
|
|
57
|
+
/* @__PURE__ */ jsx(HvGrid, { item: true, className: classes.actionsContainer, children: /* @__PURE__ */ jsx(IconButton, { placement: "bottom", title: labels.rule.delete.tooltip || labels.rule.delete.ariaLabel, onClick: () => disableConfirmation ? dispatchAction({
|
|
60
58
|
type: "remove-node",
|
|
61
59
|
id
|
|
62
60
|
}) : askAction({
|
|
@@ -65,7 +63,7 @@ const Rule = (props) => {
|
|
|
65
63
|
id
|
|
66
64
|
}],
|
|
67
65
|
dialog: labels.rule.delete
|
|
68
|
-
}), disabled: readOnly, children: /* @__PURE__ */ jsx(
|
|
66
|
+
}), disabled: readOnly, children: /* @__PURE__ */ jsx(Delete, { role: "none" }) }) })
|
|
69
67
|
] });
|
|
70
68
|
};
|
|
71
69
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Rule.js","sources":["../../../../../src/components/QueryBuilder/Rule/Rule.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { Delete } from \"@hitachivantara/uikit-react-icons\";\nimport { useMediaQuery, useTheme } from \"@mui/material\";\n\nimport { HvGrid } from \"@core/components/Grid\";\nimport {
|
|
1
|
+
{"version":3,"file":"Rule.js","sources":["../../../../../src/components/QueryBuilder/Rule/Rule.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { Delete } from \"@hitachivantara/uikit-react-icons\";\nimport { useMediaQuery, useTheme } from \"@mui/material\";\n\nimport { HvGrid } from \"@core/components/Grid\";\nimport { IconButton } from \"@core/utils/IconButton\";\nimport { useDefaultProps } from \"@core/hooks\";\nimport { ExtractNames } from \"@core/utils\";\n\nimport { useQueryBuilderContext } from \"../Context\";\nimport { Attribute } from \"./Attribute\";\nimport { Operator } from \"./Operator\";\nimport { Value } from \"./Value\";\nimport { staticClasses, useClasses } from \"./Rule.styles\";\n\nexport { staticClasses as queryBuilderRuleClasses };\n\nexport type HvQueryBuilderRuleClasses = ExtractNames<typeof useClasses>;\n\nexport interface RuleProps {\n id: React.Key;\n combinator: string;\n attribute?: string;\n operator?: string;\n value?: any;\n disabled?: boolean;\n isInvalid: boolean;\n classes?: HvQueryBuilderRuleClasses;\n}\n\nexport const Rule = (props: RuleProps) => {\n const {\n id,\n combinator,\n attribute,\n operator,\n value,\n disabled,\n isInvalid,\n classes: classesProp,\n } = useDefaultProps(\"HvQueryBuilderRule\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const {\n askAction,\n dispatchAction,\n attributes,\n operators,\n labels,\n readOnly,\n disableConfirmation,\n } = useQueryBuilderContext();\n\n const theme = useTheme();\n\n const isMdDown = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const availableOperators = useMemo(() => {\n const attributeSpec =\n attribute != null && attributes ? attributes[attribute] : null;\n if (attributeSpec != null) {\n const typeOperators = operators[attributeSpec.type];\n if (typeOperators != null) {\n return typeOperators.reduce(\n (count, item) =>\n count + (item.combinators.includes(combinator) ? 1 : 0),\n 0\n );\n }\n }\n\n return -1;\n }, [attribute, attributes, combinator, operators]);\n\n const shouldShowValueInput =\n operator !== \"Empty\" && operator !== \"IsNotEmpty\";\n\n return (\n <HvGrid\n container\n className={cx(classes.root, { [classes.isMdDown]: isMdDown })}\n spacing={0}\n >\n <HvGrid item xs={12} md={3}>\n <Attribute\n attribute={attribute}\n id={id}\n disabled={disabled}\n isInvalid={isInvalid}\n />\n </HvGrid>\n {attribute != null && availableOperators > 0 && (\n <HvGrid item xs={12} md={3}>\n <Operator\n id={id}\n combinator={combinator}\n attribute={attribute}\n operator={operator}\n />\n </HvGrid>\n )}\n {attribute != null && (operator != null || availableOperators === 0) && (\n <HvGrid item xs={12} md>\n {shouldShowValueInput && (\n <Value\n attribute={attribute}\n id={id}\n operator={operator}\n value={value}\n />\n )}\n </HvGrid>\n )}\n <HvGrid item className={classes.actionsContainer}>\n <IconButton\n placement=\"bottom\"\n title={labels.rule.delete.tooltip || labels.rule.delete.ariaLabel}\n onClick={() =>\n disableConfirmation\n ? dispatchAction({ type: \"remove-node\", id })\n : askAction({\n actions: [{ type: \"remove-node\", id }],\n dialog: labels.rule.delete,\n })\n }\n disabled={readOnly}\n >\n <Delete role=\"none\" />\n </IconButton>\n </HvGrid>\n </HvGrid>\n );\n};\n"],"names":["Rule","props","id","combinator","attribute","operator","value","disabled","isInvalid","classes","classesProp","useDefaultProps","cx","useClasses","askAction","dispatchAction","attributes","operators","labels","readOnly","disableConfirmation","useQueryBuilderContext","theme","useTheme","isMdDown","useMediaQuery","breakpoints","down","availableOperators","useMemo","attributeSpec","typeOperators","type","reduce","count","item","combinators","includes","shouldShowValueInput","root","actionsContainer","rule","delete","tooltip","ariaLabel","actions","dialog"],"mappings":";;;;;;;;;;;;;AA8BaA,MAAAA,OAAOA,CAACC,UAAqB;AAClC,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC,SAASC;AAAAA,EAAAA,IACPC,gBAAgB,sBAAsBV,KAAK;AAEzC,QAAA;AAAA,IAAEQ;AAAAA,IAASG;AAAAA,EAAAA,IAAOC,WAAWH,WAAW;AAExC,QAAA;AAAA,IACJI;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,MACEC,uBAAuB;AAE3B,QAAMC,QAAQC;AAEd,QAAMC,WAAWC,cAAcH,MAAMI,YAAYC,KAAK,IAAI,CAAC;AAErDC,QAAAA,qBAAqBC,QAAQ,MAAM;AACvC,UAAMC,gBACJ1B,aAAa,QAAQY,aAAaA,WAAWZ,SAAS,IAAI;AAC5D,QAAI0B,iBAAiB,MAAM;AACnBC,YAAAA,gBAAgBd,UAAUa,cAAcE,IAAI;AAClD,UAAID,iBAAiB,MAAM;AACzB,eAAOA,cAAcE,OACnB,CAACC,OAAOC,SACND,SAASC,KAAKC,YAAYC,SAASlC,UAAU,IAAI,IAAI,IACvD,CACF;AAAA,MACF;AAAA,IACF;AAEO,WAAA;AAAA,KACN,CAACC,WAAWY,YAAYb,YAAYc,SAAS,CAAC;AAE3CqB,QAAAA,uBACJjC,aAAa,WAAWA,aAAa;AAEvC,8BACG,QACC,EAAA,WAAS,MACT,WAAWO,GAAGH,QAAQ8B,MAAM;AAAA,IAAE,CAAC9B,QAAQe,QAAQ,GAAGA;AAAAA,EAAAA,CAAU,GAC5D,SAAS,GAET,UAAA;AAAA,IAAA,oBAAC,QAAO,EAAA,MAAI,MAAC,IAAI,IAAI,IAAI,GACvB,UAAA,oBAAC,WACC,EAAA,WACA,IACA,UACA,UAAqB,CAAA,GAEzB;AAAA,IACCpB,aAAa,QAAQwB,qBAAqB,KACxC,oBAAA,QAAA,EAAO,MAAI,MAAC,IAAI,IAAI,IAAI,GACvB,UAAC,oBAAA,UAAA,EACC,IACA,YACA,WACA,SAAmB,CAAA,GAEvB;AAAA,IAEDxB,aAAa,SAASC,YAAY,QAAQuB,uBAAuB,MAChE,oBAAC,UAAO,MAAI,MAAC,IAAI,IAAI,IAAE,MACpBU,UACC,wBAAA,oBAAC,SACC,WACA,IACA,UACA,MAAA,CAEH,EACH,CAAA;AAAA,IAEF,oBAAC,UAAO,MAAI,MAAC,WAAW7B,QAAQ+B,kBAC9B,UAAC,oBAAA,YAAA,EACC,WAAU,UACV,OAAOtB,OAAOuB,KAAKC,OAAOC,WAAWzB,OAAOuB,KAAKC,OAAOE,WACxD,SAAS,MACPxB,sBACIL,eAAe;AAAA,MAAEiB,MAAM;AAAA,MAAe9B;AAAAA,IAAI,CAAA,IAC1CY,UAAU;AAAA,MACR+B,SAAS,CAAC;AAAA,QAAEb,MAAM;AAAA,QAAe9B;AAAAA,MAAAA,CAAI;AAAA,MACrC4C,QAAQ5B,OAAOuB,KAAKC;AAAAA,IACrB,CAAA,GAEP,UAAUvB,UAEV,8BAAC,QAAO,EAAA,MAAK,QAAM,EAAA,CACrB,EACF,CAAA;AAAA,EACF,EAAA,CAAA;AAEJ;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, Fragment, jsx } from "@emotion/react/jsx-runtime";
|
|
2
2
|
import { useCallback } from "react";
|
|
3
3
|
import { Add, Delete, Info } from "@hitachivantara/uikit-react-icons";
|
|
4
|
-
import {
|
|
4
|
+
import { IconButton } from "../../../utils/IconButton.js";
|
|
5
5
|
import { useQueryBuilderContext } from "../Context.js";
|
|
6
6
|
import { useClasses } from "../QueryBuilder.styles.js";
|
|
7
7
|
import { HvButton } from "../../Button/Button.js";
|
|
@@ -44,9 +44,6 @@ const RuleGroup = ({
|
|
|
44
44
|
});
|
|
45
45
|
}, disabled: readOnly, startIcon: /* @__PURE__ */ jsx(Add, {}), children: level === 0 && labels.query?.addGroup?.label != null ? labels.query?.addGroup?.label : labels.group.addGroup.label }) })
|
|
46
46
|
] });
|
|
47
|
-
const DeleteIcon = withTooltip(() => /* @__PURE__ */ jsx(Delete, { className: cx({
|
|
48
|
-
[classes.topRemoveButtonDisabled]: readOnly
|
|
49
|
-
}) }), level === 0 && labels.query?.delete?.tooltip ? labels.query?.delete?.tooltip : labels.group.delete.tooltip, "top");
|
|
50
47
|
const onClickCombinator = useCallback((item) => {
|
|
51
48
|
dispatchAction({
|
|
52
49
|
type: "set-combinator",
|
|
@@ -58,8 +55,8 @@ const RuleGroup = ({
|
|
|
58
55
|
[classes.topGroup]: level === 0,
|
|
59
56
|
[classes.subGroup]: level > 0
|
|
60
57
|
}), children: [
|
|
61
|
-
/* @__PURE__ */ jsx(HvMultiButton, { className: cx(classes.combinator, classes.topCombinator), disabled: readOnly, children: combinators
|
|
62
|
-
/* @__PURE__ */ jsx("div", { className: cx(classes.buttonBackground, classes.topRemoveButton), children: /* @__PURE__ */ jsx(
|
|
58
|
+
/* @__PURE__ */ jsx(HvMultiButton, { className: cx(classes.combinator, classes.topCombinator), disabled: readOnly, children: combinators?.map((item) => /* @__PURE__ */ jsx(HvButton, { className: classes.combinatorButton, selected: item.operand === combinator, onClick: () => item.operand && onClickCombinator(item), disabled: readOnly, size: "xs", children: item.label }, item.operand)) }),
|
|
59
|
+
/* @__PURE__ */ jsx("div", { className: cx(classes.buttonBackground, classes.topRemoveButton), children: /* @__PURE__ */ jsx(IconButton, { className: classes.removeButton, onClick: () => disableConfirmation ? dispatchAction({
|
|
63
60
|
type: "remove-node",
|
|
64
61
|
id
|
|
65
62
|
}) : askAction({
|
|
@@ -68,7 +65,9 @@ const RuleGroup = ({
|
|
|
68
65
|
id
|
|
69
66
|
}],
|
|
70
67
|
dialog: level === 0 && labels.query?.delete != null ? labels.query.delete : labels.group.delete
|
|
71
|
-
}),
|
|
68
|
+
}), title: level === 0 && labels.query?.delete?.tooltip || labels.group.delete.tooltip || level === 0 && labels.query?.delete?.ariaLabel || labels.group.delete.ariaLabel, disabled: readOnly, children: /* @__PURE__ */ jsx(Delete, { role: "none", className: cx({
|
|
69
|
+
[classes.topRemoveButtonDisabled]: readOnly
|
|
70
|
+
}) }) }) }),
|
|
72
71
|
rules?.length > 0 && /* @__PURE__ */ jsx("div", { className: cx(classes.rulesContainer, {
|
|
73
72
|
[classes.subRulesContainer]: level > 0,
|
|
74
73
|
[classes.topRulesContainer]: level === 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuleGroup.js","sources":["../../../../../src/components/QueryBuilder/RuleGroup/RuleGroup.tsx"],"sourcesContent":["import { useCallback } from \"react\";\nimport { Add, Delete, Info } from \"@hitachivantara/uikit-react-icons\";\n\nimport { HvButton } from \"@core/components/Button\";\nimport { HvEmptyState } from \"@core/components/EmptyState\";\nimport { HvMultiButton } from \"@core/components/MultiButton\";\nimport { HvTypography } from \"@core/components/Typography\";\nimport { withTooltip } from \"@core/hocs/withTooltip\";\nimport { ExtractNames } from \"@core/utils/classes\";\n\nimport { Rule } from \"../Rule\";\nimport { useQueryBuilderContext } from \"../Context\";\nimport { useClasses } from \"../QueryBuilder.styles\";\nimport { HvQueryBuilderQuery, HvQueryBuilderQueryCombinator } from \"../types\";\n\nexport interface RuleGroupProps {\n id: React.Key;\n level?: number;\n combinator?: string;\n rules?: HvQueryBuilderQuery[\"rules\"];\n classes?: ExtractNames<typeof useClasses>;\n}\n\nexport const RuleGroup = ({\n level = 0,\n id,\n combinator = \"and\",\n rules = [],\n classes: classesProp,\n}: RuleGroupProps) => {\n const { classes, cx } = useClasses(classesProp);\n\n const {\n dispatchAction,\n askAction,\n maxDepth,\n combinators,\n labels,\n readOnly,\n disableConfirmation,\n } = useQueryBuilderContext();\n\n const normalizedMaxDepth = maxDepth - 1;\n\n const actionButtons = (\n <>\n <div className={classes.buttonBackground}>\n <HvButton\n variant=\"secondarySubtle\"\n onClick={() => {\n dispatchAction({ type: \"add-rule\", id });\n }}\n disabled={readOnly}\n startIcon={<Add />}\n >\n {level === 0 && labels.query?.addRule?.label != null\n ? labels.query?.addRule?.label\n : labels.group.addRule.label}\n </HvButton>\n </div>\n {level <= normalizedMaxDepth && (\n <div className={classes.buttonBackground}>\n <HvButton\n variant=\"secondarySubtle\"\n onClick={() => {\n dispatchAction({ type: \"add-group\", id });\n }}\n disabled={readOnly}\n startIcon={<Add />}\n >\n {level === 0 && labels.query?.addGroup?.label != null\n ? labels.query?.addGroup?.label\n : labels.group.addGroup.label}\n </HvButton>\n </div>\n )}\n </>\n );\n\n const DeleteIcon = withTooltip(\n () => (\n <Delete className={cx({ [classes.topRemoveButtonDisabled]: readOnly })} />\n ),\n level === 0 && labels.query?.delete?.tooltip\n ? labels.query?.delete?.tooltip\n : labels.group.delete.tooltip,\n \"top\"\n );\n\n const onClickCombinator = useCallback(\n (item: HvQueryBuilderQueryCombinator) => {\n dispatchAction({\n type: \"set-combinator\",\n id,\n combinator: item.operand,\n });\n },\n [dispatchAction, id]\n );\n\n return (\n <div\n className={cx(classes.root, {\n [classes.topGroup]: level === 0,\n [classes.subGroup]: level > 0,\n })}\n >\n <HvMultiButton\n className={cx(classes.combinator, classes.topCombinator)}\n disabled={readOnly}\n >\n {combinators &&\n combinators.map((item) => (\n <HvButton\n key={item.operand}\n className={classes.combinatorButton}\n selected={item.operand === combinator}\n onClick={() => item.operand && onClickCombinator(item)}\n disabled={readOnly}\n size=\"xs\"\n >\n {item.label}\n </HvButton>\n ))}\n </HvMultiButton>\n <div className={cx(classes.buttonBackground, classes.topRemoveButton)}>\n <HvButton\n icon\n className={classes.removeButton}\n onClick={() =>\n disableConfirmation\n ? dispatchAction({ type: \"remove-node\", id })\n : askAction({\n actions: [{ type: \"remove-node\", id }],\n dialog:\n level === 0 && labels.query?.delete != null\n ? labels.query.delete\n : labels.group.delete,\n })\n }\n aria-label={\n level === 0 && labels.query?.delete?.ariaLabel\n ? labels.query?.delete?.ariaLabel\n : labels.group.delete.ariaLabel\n }\n disabled={readOnly}\n >\n <DeleteIcon />\n </HvButton>\n </div>\n {rules?.length > 0 && (\n <div\n className={cx(classes.rulesContainer, {\n [classes.subRulesContainer]: level > 0,\n [classes.topRulesContainer]: level === 0,\n })}\n >\n {rules.map((rule, index) => {\n if (\"combinator\" in rule) {\n return (\n <RuleGroup\n key={rule.id}\n level={level + 1}\n {...rule}\n id={rule.id}\n classes={classes}\n />\n );\n }\n\n const isInvalid =\n combinator === \"and\" &&\n rules.some((r, i) => {\n if (\"attribute\" in r) {\n if (\n r.attribute === rule.attribute &&\n r.id !== rule.id &&\n i < index\n ) {\n return true;\n }\n }\n return false;\n });\n\n return (\n <Rule\n key={rule.id}\n {...rule}\n isInvalid={isInvalid}\n id={rule.id}\n combinator={combinator}\n />\n );\n })}\n </div>\n )}\n {rules?.length === 0 && (\n <HvEmptyState\n title={labels.empty?.title}\n message={\n <>\n <HvTypography\n link\n component=\"button\"\n onClick={() => {\n dispatchAction({ type: \"add-rule\", id });\n }}\n className={classes.createConditionButton}\n >\n {`${labels.empty?.createCondition}`}\n </HvTypography>\n {level <= normalizedMaxDepth && (\n <>\n {`${labels.empty?.spacer}`}\n <HvTypography\n link\n component=\"button\"\n onClick={() => {\n dispatchAction({ type: \"add-group\", id });\n }}\n className={classes.createGroupButton}\n >\n {`${labels.empty?.createGroup}`}\n </HvTypography>\n </>\n )}\n </>\n }\n icon={<Info />}\n />\n )}\n <div\n className={cx(\n classes.actionButtonContainer,\n classes.topActionButtonContainer\n )}\n >\n {actionButtons}\n </div>\n </div>\n );\n};\n"],"names":["RuleGroup","level","id","combinator","rules","classes","classesProp","cx","useClasses","dispatchAction","askAction","maxDepth","combinators","labels","readOnly","disableConfirmation","useQueryBuilderContext","normalizedMaxDepth","actionButtons","buttonBackground","type","query","addRule","label","group","addGroup","DeleteIcon","withTooltip","topRemoveButtonDisabled","delete","tooltip","onClickCombinator","useCallback","item","operand","root","topGroup","subGroup","topCombinator","map","combinatorButton","topRemoveButton","removeButton","actions","dialog","ariaLabel","length","rulesContainer","subRulesContainer","topRulesContainer","rule","index","isInvalid","some","r","i","attribute","empty","title","createConditionButton","createCondition","spacer","createGroupButton","createGroup","actionButtonContainer","topActionButtonContainer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RuleGroup.js","sources":["../../../../../src/components/QueryBuilder/RuleGroup/RuleGroup.tsx"],"sourcesContent":["import { useCallback } from \"react\";\nimport { Add, Delete, Info } from \"@hitachivantara/uikit-react-icons\";\n\nimport { HvButton } from \"@core/components/Button\";\nimport { HvEmptyState } from \"@core/components/EmptyState\";\nimport { HvMultiButton } from \"@core/components/MultiButton\";\nimport { HvTypography } from \"@core/components/Typography\";\nimport { IconButton } from \"@core/utils/IconButton\";\nimport { ExtractNames } from \"@core/utils/classes\";\n\nimport { Rule } from \"../Rule\";\nimport { useQueryBuilderContext } from \"../Context\";\nimport { useClasses } from \"../QueryBuilder.styles\";\nimport { HvQueryBuilderQuery, HvQueryBuilderQueryCombinator } from \"../types\";\n\nexport interface RuleGroupProps {\n id: React.Key;\n level?: number;\n combinator?: string;\n rules?: HvQueryBuilderQuery[\"rules\"];\n classes?: ExtractNames<typeof useClasses>;\n}\n\nexport const RuleGroup = ({\n level = 0,\n id,\n combinator = \"and\",\n rules = [],\n classes: classesProp,\n}: RuleGroupProps) => {\n const { classes, cx } = useClasses(classesProp);\n\n const {\n dispatchAction,\n askAction,\n maxDepth,\n combinators,\n labels,\n readOnly,\n disableConfirmation,\n } = useQueryBuilderContext();\n\n const normalizedMaxDepth = maxDepth - 1;\n\n const actionButtons = (\n <>\n <div className={classes.buttonBackground}>\n <HvButton\n variant=\"secondarySubtle\"\n onClick={() => {\n dispatchAction({ type: \"add-rule\", id });\n }}\n disabled={readOnly}\n startIcon={<Add />}\n >\n {level === 0 && labels.query?.addRule?.label != null\n ? labels.query?.addRule?.label\n : labels.group.addRule.label}\n </HvButton>\n </div>\n {level <= normalizedMaxDepth && (\n <div className={classes.buttonBackground}>\n <HvButton\n variant=\"secondarySubtle\"\n onClick={() => {\n dispatchAction({ type: \"add-group\", id });\n }}\n disabled={readOnly}\n startIcon={<Add />}\n >\n {level === 0 && labels.query?.addGroup?.label != null\n ? labels.query?.addGroup?.label\n : labels.group.addGroup.label}\n </HvButton>\n </div>\n )}\n </>\n );\n\n const onClickCombinator = useCallback(\n (item: HvQueryBuilderQueryCombinator) => {\n dispatchAction({\n type: \"set-combinator\",\n id,\n combinator: item.operand,\n });\n },\n [dispatchAction, id]\n );\n\n return (\n <div\n className={cx(classes.root, {\n [classes.topGroup]: level === 0,\n [classes.subGroup]: level > 0,\n })}\n >\n <HvMultiButton\n className={cx(classes.combinator, classes.topCombinator)}\n disabled={readOnly}\n >\n {combinators?.map((item) => (\n <HvButton\n key={item.operand}\n className={classes.combinatorButton}\n selected={item.operand === combinator}\n onClick={() => item.operand && onClickCombinator(item)}\n disabled={readOnly}\n size=\"xs\"\n >\n {item.label}\n </HvButton>\n ))}\n </HvMultiButton>\n <div className={cx(classes.buttonBackground, classes.topRemoveButton)}>\n <IconButton\n className={classes.removeButton}\n onClick={() =>\n disableConfirmation\n ? dispatchAction({ type: \"remove-node\", id })\n : askAction({\n actions: [{ type: \"remove-node\", id }],\n dialog:\n level === 0 && labels.query?.delete != null\n ? labels.query.delete\n : labels.group.delete,\n })\n }\n title={\n (level === 0 && labels.query?.delete?.tooltip) ||\n labels.group.delete.tooltip ||\n (level === 0 && labels.query?.delete?.ariaLabel) ||\n labels.group.delete.ariaLabel\n }\n disabled={readOnly}\n >\n <Delete\n role=\"none\"\n className={cx({ [classes.topRemoveButtonDisabled]: readOnly })}\n />\n </IconButton>\n </div>\n {rules?.length > 0 && (\n <div\n className={cx(classes.rulesContainer, {\n [classes.subRulesContainer]: level > 0,\n [classes.topRulesContainer]: level === 0,\n })}\n >\n {rules.map((rule, index) => {\n if (\"combinator\" in rule) {\n return (\n <RuleGroup\n key={rule.id}\n level={level + 1}\n {...rule}\n id={rule.id}\n classes={classes}\n />\n );\n }\n\n const isInvalid =\n combinator === \"and\" &&\n rules.some((r, i) => {\n if (\"attribute\" in r) {\n if (\n r.attribute === rule.attribute &&\n r.id !== rule.id &&\n i < index\n ) {\n return true;\n }\n }\n return false;\n });\n\n return (\n <Rule\n key={rule.id}\n {...rule}\n isInvalid={isInvalid}\n id={rule.id}\n combinator={combinator}\n />\n );\n })}\n </div>\n )}\n {rules?.length === 0 && (\n <HvEmptyState\n title={labels.empty?.title}\n message={\n <>\n <HvTypography\n link\n component=\"button\"\n onClick={() => {\n dispatchAction({ type: \"add-rule\", id });\n }}\n className={classes.createConditionButton}\n >\n {`${labels.empty?.createCondition}`}\n </HvTypography>\n {level <= normalizedMaxDepth && (\n <>\n {`${labels.empty?.spacer}`}\n <HvTypography\n link\n component=\"button\"\n onClick={() => {\n dispatchAction({ type: \"add-group\", id });\n }}\n className={classes.createGroupButton}\n >\n {`${labels.empty?.createGroup}`}\n </HvTypography>\n </>\n )}\n </>\n }\n icon={<Info />}\n />\n )}\n <div\n className={cx(\n classes.actionButtonContainer,\n classes.topActionButtonContainer\n )}\n >\n {actionButtons}\n </div>\n </div>\n );\n};\n"],"names":["RuleGroup","level","id","combinator","rules","classes","classesProp","cx","useClasses","dispatchAction","askAction","maxDepth","combinators","labels","readOnly","disableConfirmation","useQueryBuilderContext","normalizedMaxDepth","actionButtons","buttonBackground","type","query","addRule","label","group","addGroup","onClickCombinator","useCallback","item","operand","root","topGroup","subGroup","topCombinator","map","combinatorButton","topRemoveButton","removeButton","actions","dialog","delete","tooltip","ariaLabel","topRemoveButtonDisabled","length","rulesContainer","subRulesContainer","topRulesContainer","rule","index","isInvalid","some","r","i","attribute","empty","title","createConditionButton","createCondition","spacer","createGroupButton","createGroup","actionButtonContainer","topActionButtonContainer"],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { HvButton } from "../components/Button/Button.js";
|
|
3
|
+
import { HvTooltip } from "../components/Tooltip/Tooltip.js";
|
|
4
|
+
const IconButton = ({
|
|
5
|
+
title,
|
|
6
|
+
placement = "top",
|
|
7
|
+
...others
|
|
8
|
+
}) => /* @__PURE__ */ jsx(HvTooltip, { enterDelay: 500, title, placement, children: /* @__PURE__ */ jsx(HvButton, { icon: true, ...others }) });
|
|
9
|
+
export {
|
|
10
|
+
IconButton
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=IconButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IconButton.js","sources":["../../../src/utils/IconButton.tsx"],"sourcesContent":["import { HvButton, HvButtonProps } from \"@core/components/Button\";\nimport { HvTooltip, HvTooltipProps } from \"@core/components/Tooltip\";\n\nexport interface IconButtonProps extends Omit<HvButtonProps, \"icon\" | \"title\"> {\n title: React.ReactNode;\n placement?: HvTooltipProps[\"placement\"];\n onClick?: HvButtonProps[\"onClick\"];\n}\n\n/** An `HvButton` of type icon wrapped in a tooltip */\nexport const IconButton = ({\n title,\n placement = \"top\",\n ...others\n}: IconButtonProps) => (\n <HvTooltip enterDelay={500} title={title} placement={placement}>\n <HvButton icon {...others} />\n </HvTooltip>\n);\n"],"names":["IconButton","title","placement","others"],"mappings":";;;AAUO,MAAMA,aAAaA,CAAC;AAAA,EACzBC;AAAAA,EACAC,YAAY;AAAA,EACZ,GAAGC;AACY,MACd,oBAAA,WAAA,EAAU,YAAY,KAAK,OAAc,WACxC,UAAC,oBAAA,UAAA,EAAS,MAAI,MAAC,GAAIA,OAAAA,CAAO,EAC5B,CAAA;"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -182,6 +182,13 @@ export declare const actionClasses: {
|
|
|
182
182
|
noIcon: "HvVerticalNavigationAction-noIcon";
|
|
183
183
|
};
|
|
184
184
|
|
|
185
|
+
/** @private label structure action icon buttons */
|
|
186
|
+
declare interface ActionIconLabels extends DialogLabels {
|
|
187
|
+
/** @deprecated use `tooltip` label instead */
|
|
188
|
+
ariaLabel: string;
|
|
189
|
+
tooltip?: string;
|
|
190
|
+
}
|
|
191
|
+
|
|
185
192
|
export declare const actionsClasses: {
|
|
186
193
|
root: "HvVerticalNavigationActions-root";
|
|
187
194
|
hide: "HvVerticalNavigationActions-hide";
|
|
@@ -4578,23 +4585,23 @@ export declare interface HvPaginationLabels {
|
|
|
4578
4585
|
pageSizeSelectorDescription?: string;
|
|
4579
4586
|
/** Separator of current page and total pages. */
|
|
4580
4587
|
pagesSeparator?: string;
|
|
4581
|
-
/** Title of button `firstPage`. */
|
|
4588
|
+
/** Title of button `firstPage`. @deprecated Use `firstPage` instead. */
|
|
4582
4589
|
paginationFirstPageTitle?: string;
|
|
4583
|
-
/** Title of button `previousPage`. */
|
|
4590
|
+
/** Title of button `previousPage`. @deprecated Use `previousPage` instead. */
|
|
4584
4591
|
paginationPreviousPageTitle?: string;
|
|
4585
|
-
/** Title of button `nextPage`. */
|
|
4592
|
+
/** Title of button `nextPage`. @deprecated Use `nextPage` instead. */
|
|
4586
4593
|
paginationNextPageTitle?: string;
|
|
4587
|
-
/** Title of button `lastPage`. */
|
|
4594
|
+
/** Title of button `lastPage`. @deprecated Use `lastPage` instead. */
|
|
4588
4595
|
paginationLastPageTitle?: string;
|
|
4589
4596
|
/** Aria-label passed to the page input. */
|
|
4590
4597
|
paginationInputLabel?: string;
|
|
4591
|
-
/**
|
|
4598
|
+
/** Label of the first page button */
|
|
4592
4599
|
firstPage?: string;
|
|
4593
|
-
/**
|
|
4600
|
+
/** Label of the previous page button */
|
|
4594
4601
|
previousPage?: string;
|
|
4595
|
-
/**
|
|
4602
|
+
/** Label of the next page button */
|
|
4596
4603
|
nextPage?: string;
|
|
4597
|
-
/**
|
|
4604
|
+
/** Label of the last page button */
|
|
4598
4605
|
lastPage?: string;
|
|
4599
4606
|
}
|
|
4600
4607
|
|
|
@@ -4955,10 +4962,7 @@ export declare const hvQueryBuilderDefaultOperators: {
|
|
|
4955
4962
|
|
|
4956
4963
|
export declare interface HvQueryBuilderLabels {
|
|
4957
4964
|
query?: {
|
|
4958
|
-
delete?:
|
|
4959
|
-
ariaLabel: string;
|
|
4960
|
-
tooltip?: string;
|
|
4961
|
-
} & DialogLabels;
|
|
4965
|
+
delete?: ActionIconLabels;
|
|
4962
4966
|
addRule?: {
|
|
4963
4967
|
label: string;
|
|
4964
4968
|
};
|
|
@@ -5032,20 +5036,11 @@ export declare interface HvQueryBuilderLabels {
|
|
|
5032
5036
|
};
|
|
5033
5037
|
};
|
|
5034
5038
|
};
|
|
5035
|
-
delete:
|
|
5036
|
-
ariaLabel: string;
|
|
5037
|
-
tooltip?: string;
|
|
5038
|
-
} & DialogLabels;
|
|
5039
|
+
delete: ActionIconLabels;
|
|
5039
5040
|
};
|
|
5040
5041
|
group: {
|
|
5041
|
-
delete:
|
|
5042
|
-
|
|
5043
|
-
tooltip?: string;
|
|
5044
|
-
} & DialogLabels;
|
|
5045
|
-
reset: {
|
|
5046
|
-
ariaLabel: string;
|
|
5047
|
-
tooltip?: string;
|
|
5048
|
-
} & DialogLabels;
|
|
5042
|
+
delete: ActionIconLabels;
|
|
5043
|
+
reset: ActionIconLabels;
|
|
5049
5044
|
addRule: {
|
|
5050
5045
|
label: string;
|
|
5051
5046
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hitachivantara/uikit-react-core",
|
|
3
|
-
"version": "5.38.
|
|
3
|
+
"version": "5.38.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"author": "Hitachi Vantara UI Kit Team",
|
|
6
6
|
"description": "Core React components for the NEXT Design System.",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"@emotion/css": "^11.11.0",
|
|
34
34
|
"@emotion/serialize": "^1.1.2",
|
|
35
35
|
"@emotion/utils": "^1.2.1",
|
|
36
|
-
"@hitachivantara/uikit-react-icons": "^5.7.
|
|
36
|
+
"@hitachivantara/uikit-react-icons": "^5.7.8",
|
|
37
37
|
"@hitachivantara/uikit-react-shared": "^5.1.20",
|
|
38
38
|
"@hitachivantara/uikit-styles": "^5.16.4",
|
|
39
39
|
"@internationalized/date": "^3.2.0",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"access": "public",
|
|
65
65
|
"directory": "package"
|
|
66
66
|
},
|
|
67
|
-
"gitHead": "
|
|
67
|
+
"gitHead": "9a3c1e9133fd88de735dfc01248aa83abe4f7c98",
|
|
68
68
|
"main": "dist/cjs/index.cjs",
|
|
69
69
|
"exports": {
|
|
70
70
|
".": {
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
-
const jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
4
|
-
const Button = require("../Button/Button.cjs");
|
|
5
|
-
const Tooltip = require("../Tooltip/Tooltip.cjs");
|
|
6
|
-
const Typography = require("../Typography/Typography.cjs");
|
|
7
|
-
const ButtonIconTooltip = ({
|
|
8
|
-
tooltip,
|
|
9
|
-
children,
|
|
10
|
-
...buttonProps
|
|
11
|
-
}) => {
|
|
12
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Tooltip.HvTooltip, { title: /* @__PURE__ */ jsxRuntime.jsx(Typography.HvTypography, { children: tooltip }), children: /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(Button.HvButton, { icon: true, ...buttonProps, children }) }) });
|
|
13
|
-
};
|
|
14
|
-
const ButtonIconTooltip$1 = ButtonIconTooltip;
|
|
15
|
-
exports.default = ButtonIconTooltip$1;
|
|
16
|
-
//# sourceMappingURL=ButtonIconTooltip.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonIconTooltip.cjs","sources":["../../../../src/components/Pagination/ButtonIconTooltip.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\n\nimport { HvButton, HvButtonProps } from \"@core/components/Button\";\nimport { HvTooltip } from \"@core/components/Tooltip\";\nimport { HvTypography } from \"@core/components/Typography\";\n\ninterface ButtonIconTooltipProps extends HvButtonProps {\n tooltip: ReactNode;\n children: ReactNode;\n}\n\nconst ButtonIconTooltip = ({\n tooltip,\n children,\n ...buttonProps\n}: ButtonIconTooltipProps) => {\n return (\n <HvTooltip title={<HvTypography>{tooltip}</HvTypography>}>\n <div>\n <HvButton icon {...buttonProps}>\n {children}\n </HvButton>\n </div>\n </HvTooltip>\n );\n};\nexport default ButtonIconTooltip;\n"],"names":["ButtonIconTooltip","tooltip","children","buttonProps","HvTooltip","jsx","HvTypography","HvButton"],"mappings":";;;;;;AAWA,MAAMA,oBAAoBA,CAAC;AAAA,EACzBC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AACmB,MAAM;AAC5B,wCACGC,QAAAA,WAAU,EAAA,OAAQC,2BAAA,IAAAC,yBAAA,EAAcL,mBAAQ,GACvC,UAAAI,2BAAA,IAAC,OACC,EAAA,UAAAA,2BAAAA,IAACE,mBAAS,MAAI,MAAC,GAAIJ,aAChBD,SAAAA,CACH,EACF,CAAA,EACF,CAAA;AAEJ;AACA,MAAA,sBAAeF;;"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
-
import { HvButton } from "../Button/Button.js";
|
|
3
|
-
import { HvTooltip } from "../Tooltip/Tooltip.js";
|
|
4
|
-
import { HvTypography } from "../Typography/Typography.js";
|
|
5
|
-
const ButtonIconTooltip = ({
|
|
6
|
-
tooltip,
|
|
7
|
-
children,
|
|
8
|
-
...buttonProps
|
|
9
|
-
}) => {
|
|
10
|
-
return /* @__PURE__ */ jsx(HvTooltip, { title: /* @__PURE__ */ jsx(HvTypography, { children: tooltip }), children: /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(HvButton, { icon: true, ...buttonProps, children }) }) });
|
|
11
|
-
};
|
|
12
|
-
const ButtonIconTooltip$1 = ButtonIconTooltip;
|
|
13
|
-
export {
|
|
14
|
-
ButtonIconTooltip$1 as default
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=ButtonIconTooltip.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonIconTooltip.js","sources":["../../../../src/components/Pagination/ButtonIconTooltip.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\n\nimport { HvButton, HvButtonProps } from \"@core/components/Button\";\nimport { HvTooltip } from \"@core/components/Tooltip\";\nimport { HvTypography } from \"@core/components/Typography\";\n\ninterface ButtonIconTooltipProps extends HvButtonProps {\n tooltip: ReactNode;\n children: ReactNode;\n}\n\nconst ButtonIconTooltip = ({\n tooltip,\n children,\n ...buttonProps\n}: ButtonIconTooltipProps) => {\n return (\n <HvTooltip title={<HvTypography>{tooltip}</HvTypography>}>\n <div>\n <HvButton icon {...buttonProps}>\n {children}\n </HvButton>\n </div>\n </HvTooltip>\n );\n};\nexport default ButtonIconTooltip;\n"],"names":["ButtonIconTooltip","tooltip","children","buttonProps"],"mappings":";;;;AAWA,MAAMA,oBAAoBA,CAAC;AAAA,EACzBC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AACmB,MAAM;AAC5B,6BACG,WAAU,EAAA,OAAQ,oBAAA,cAAA,EAAcF,mBAAQ,GACvC,UAAA,oBAAC,OACC,EAAA,UAAA,oBAAC,YAAS,MAAI,MAAC,GAAIE,aAChBD,SAAAA,CACH,EACF,CAAA,EACF,CAAA;AAEJ;AACA,MAAA,sBAAeF;"}
|