@hitachivantara/uikit-react-core 5.36.10 → 5.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/CheckBoxGroup/CheckBoxGroup.cjs +3 -1
- package/dist/cjs/components/CheckBoxGroup/CheckBoxGroup.cjs.map +1 -1
- package/dist/cjs/components/Dropdown/Dropdown.cjs +4 -1
- package/dist/cjs/components/Dropdown/Dropdown.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Context.cjs +15 -2
- package/dist/cjs/components/QueryBuilder/Context.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/QueryBuilder.cjs +35 -25
- package/dist/cjs/components/QueryBuilder/QueryBuilder.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/QueryBuilder.styles.cjs +10 -0
- package/dist/cjs/components/QueryBuilder/QueryBuilder.styles.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Attribute/Attribute.cjs +2 -3
- package/dist/cjs/components/QueryBuilder/Rule/Attribute/Attribute.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Operator/Operator.cjs +2 -3
- package/dist/cjs/components/QueryBuilder/Rule/Operator/Operator.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Rule.cjs +16 -14
- package/dist/cjs/components/QueryBuilder/Rule/Rule.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Value/BooleanValue/BooleanValue.cjs +1 -2
- package/dist/cjs/components/QueryBuilder/Rule/Value/BooleanValue/BooleanValue.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.cjs +1 -2
- package/dist/cjs/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Value/DateTimeValue/utils.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.cjs +4 -5
- package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Value/TextValue/TextValue.cjs +1 -2
- package/dist/cjs/components/QueryBuilder/Rule/Value/TextValue/TextValue.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Value/Value.cjs +8 -3
- package/dist/cjs/components/QueryBuilder/Rule/Value/Value.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.cjs +19 -24
- package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/utils/index.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/utils/reducer.cjs +1 -1
- package/dist/cjs/components/QueryBuilder/utils/reducer.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/providers/Provider.cjs +11 -3
- package/dist/cjs/providers/Provider.cjs.map +1 -1
- package/dist/esm/components/CheckBoxGroup/CheckBoxGroup.js +3 -1
- package/dist/esm/components/CheckBoxGroup/CheckBoxGroup.js.map +1 -1
- package/dist/esm/components/Dropdown/Dropdown.js +5 -2
- package/dist/esm/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/esm/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Context.js +17 -4
- package/dist/esm/components/QueryBuilder/Context.js.map +1 -1
- package/dist/esm/components/QueryBuilder/QueryBuilder.js +37 -27
- package/dist/esm/components/QueryBuilder/QueryBuilder.js.map +1 -1
- package/dist/esm/components/QueryBuilder/QueryBuilder.styles.js +10 -0
- package/dist/esm/components/QueryBuilder/QueryBuilder.styles.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Attribute/Attribute.js +3 -4
- package/dist/esm/components/QueryBuilder/Rule/Attribute/Attribute.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Operator/Operator.js +4 -5
- package/dist/esm/components/QueryBuilder/Rule/Operator/Operator.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Rule.js +18 -16
- package/dist/esm/components/QueryBuilder/Rule/Rule.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Value/BooleanValue/BooleanValue.js +3 -4
- package/dist/esm/components/QueryBuilder/Rule/Value/BooleanValue/BooleanValue.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.js +3 -4
- package/dist/esm/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Value/DateTimeValue/utils.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.js +6 -7
- package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Value/TextValue/TextValue.js +3 -4
- package/dist/esm/components/QueryBuilder/Rule/Value/TextValue/TextValue.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Value/Value.js +10 -5
- package/dist/esm/components/QueryBuilder/Rule/Value/Value.js.map +1 -1
- package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.js +21 -26
- package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.js.map +1 -1
- package/dist/esm/components/QueryBuilder/utils/index.js.map +1 -1
- package/dist/esm/components/QueryBuilder/utils/reducer.js +1 -1
- package/dist/esm/components/QueryBuilder/utils/reducer.js.map +1 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/providers/Provider.js +11 -3
- package/dist/esm/providers/Provider.js.map +1 -1
- package/dist/types/index.d.ts +93 -37
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Operator.js","sources":["../../../../../../src/components/QueryBuilder/Rule/Operator/Operator.tsx"],"sourcesContent":["import { memo,
|
|
1
|
+
{"version":3,"file":"Operator.js","sources":["../../../../../../src/components/QueryBuilder/Rule/Operator/Operator.tsx"],"sourcesContent":["import { memo, useMemo } from \"react\";\n\nimport { HvDropdown } from \"@core/components/Dropdown\";\n\nimport { useQueryBuilderContext } from \"../../Context\";\nimport { isBigList } from \"../../utils\";\n\nexport interface OperatorProps {\n id: React.Key;\n combinator: string;\n attribute: string;\n operator?: string;\n}\n\nexport const Operator = ({\n id,\n combinator,\n attribute,\n operator,\n}: OperatorProps) => {\n const { dispatchAction, attributes, operators, labels, readOnly } =\n useQueryBuilderContext();\n\n const value = operator ?? null;\n\n const values = useMemo(() => {\n const attributeSpec =\n attribute && attributes ? attributes[attribute] : null;\n const options = attributeSpec\n ? operators[attributeSpec.type].filter((o) =>\n o.combinators.includes(combinator)\n ) ?? []\n : [];\n return options.map((key) => ({\n id: key.operator,\n label: key.label,\n selected: key.operator === value,\n }));\n }, [attribute, attributes, operators, combinator, value]);\n\n return (\n <HvDropdown\n required\n status=\"valid\"\n singleSelectionToggle={false}\n label={labels.rule.operator.label}\n placeholder={labels.rule.operator.placeholder}\n values={values}\n disabled={values.length === 0}\n readOnly={readOnly}\n onChange={(selected) => {\n if (selected && !Array.isArray(selected) && selected.id) {\n dispatchAction({\n type: \"set-operator\",\n id,\n operator: selected.id.toString(),\n value:\n value === \"range\" ||\n selected.id === \"range\" ||\n selected.id === \"IsNotEmpty\" ||\n selected.id === \"Empty\"\n ? null\n : undefined,\n });\n } else {\n dispatchAction({\n type: \"set-operator\",\n id,\n operator: null,\n value: null,\n });\n }\n }}\n showSearch={isBigList(values)}\n {...(isBigList(values) && { virtualized: true, height: 300 })}\n />\n );\n};\n\nexport default memo(Operator);\n"],"names":["Operator","id","combinator","attribute","operator","dispatchAction","attributes","operators","labels","readOnly","useQueryBuilderContext","value","values","useMemo","attributeSpec","options","type","filter","o","combinators","includes","map","key","label","selected","rule","placeholder","length","Array","isArray","toString","undefined","isBigList","virtualized","height","memo"],"mappings":";;;;;AAcO,MAAMA,WAAWA,CAAC;AAAA,EACvBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AACa,MAAM;AACb,QAAA;AAAA,IAAEC;AAAAA,IAAgBC;AAAAA,IAAYC;AAAAA,IAAWC;AAAAA,IAAQC;AAAAA,MACrDC,uBAAuB;AAEzB,QAAMC,QAAQP,YAAY;AAEpBQ,QAAAA,SAASC,QAAQ,MAAM;AAC3B,UAAMC,gBACJX,aAAaG,aAAaA,WAAWH,SAAS,IAAI;AACpD,UAAMY,UAAUD,gBACZP,UAAUO,cAAcE,IAAI,EAAEC,OAAQC,CAAAA,MACpCA,EAAEC,YAAYC,SAASlB,UAAU,CACnC,KAAK,KACL;AACGa,WAAAA,QAAQM,IAAKC,CAAS,SAAA;AAAA,MAC3BrB,IAAIqB,IAAIlB;AAAAA,MACRmB,OAAOD,IAAIC;AAAAA,MACXC,UAAUF,IAAIlB,aAAaO;AAAAA,IAC3B,EAAA;AAAA,EAAA,GACD,CAACR,WAAWG,YAAYC,WAAWL,YAAYS,KAAK,CAAC;AAGtD,SAAA,oBAAC,YACC,EAAA,UAAQ,MACR,QAAO,SACP,uBAAuB,OACvB,OAAOH,OAAOiB,KAAKrB,SAASmB,OAC5B,aAAaf,OAAOiB,KAAKrB,SAASsB,aAClC,QACA,UAAUd,OAAOe,WAAW,GAC5B,UACA,UAAWH,CAAa,aAAA;AACtB,QAAIA,YAAY,CAACI,MAAMC,QAAQL,QAAQ,KAAKA,SAASvB,IAAI;AACxC,qBAAA;AAAA,QACbe,MAAM;AAAA,QACNf;AAAAA,QACAG,UAAUoB,SAASvB,GAAG6B,SAAS;AAAA,QAC/BnB,OACEA,UAAU,WACVa,SAASvB,OAAO,WAChBuB,SAASvB,OAAO,gBAChBuB,SAASvB,OAAO,UACZ,OACA8B;AAAAA,MAAAA,CACP;AAAA,IAAA,OACI;AACU,qBAAA;AAAA,QACbf,MAAM;AAAA,QACNf;AAAAA,QACAG,UAAU;AAAA,QACVO,OAAO;AAAA,MAAA,CACR;AAAA,IACH;AAAA,EAAA,GAEF,YAAYqB,UAAUpB,MAAM,GACvBoB,GAAAA,UAAUpB,MAAM,KAAK;AAAA,IAAEqB,aAAa;AAAA,IAAMC,QAAQ;AAAA,EACvD,EAAA,CAAA;AAEN;AAEeC,KAAKnC,QAAQ;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx, jsxs } from "@emotion/react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { useMemo } from "react";
|
|
3
3
|
import { Delete } from "@hitachivantara/uikit-react-icons";
|
|
4
4
|
import { useTheme, useMediaQuery } from "@mui/material";
|
|
5
5
|
import { withTooltip } from "../../../hocs/withTooltip.js";
|
|
6
|
-
import {
|
|
6
|
+
import { useQueryBuilderContext } from "../Context.js";
|
|
7
7
|
import { useClasses } from "./Rule.styles.js";
|
|
8
8
|
import { staticClasses } from "./Rule.styles.js";
|
|
9
9
|
import { HvGrid } from "../../Grid/Grid.js";
|
|
@@ -27,16 +27,17 @@ const Rule = (props) => {
|
|
|
27
27
|
classes,
|
|
28
28
|
cx
|
|
29
29
|
} = useClasses(classesProp);
|
|
30
|
-
const context = useContext(QueryBuilderContext);
|
|
31
|
-
const theme = useTheme();
|
|
32
|
-
const isMdDown = useMediaQuery(theme.breakpoints.down("md"));
|
|
33
30
|
const {
|
|
34
31
|
askAction,
|
|
32
|
+
dispatchAction,
|
|
35
33
|
attributes,
|
|
36
34
|
operators,
|
|
37
35
|
labels,
|
|
38
|
-
readOnly
|
|
39
|
-
|
|
36
|
+
readOnly,
|
|
37
|
+
disableConfirmation
|
|
38
|
+
} = useQueryBuilderContext();
|
|
39
|
+
const theme = useTheme();
|
|
40
|
+
const isMdDown = useMediaQuery(theme.breakpoints.down("md"));
|
|
40
41
|
const availableOperators = useMemo(() => {
|
|
41
42
|
const attributeSpec = attribute != null && attributes ? attributes[attribute] : null;
|
|
42
43
|
if (attributeSpec != null) {
|
|
@@ -55,15 +56,16 @@ const Rule = (props) => {
|
|
|
55
56
|
/* @__PURE__ */ jsx(HvGrid, { item: true, xs: 2, lg: 3, children: /* @__PURE__ */ jsx(Attribute, { attribute, id, disabled, isInvalid }) }),
|
|
56
57
|
attribute != null && availableOperators > 0 && /* @__PURE__ */ jsx(HvGrid, { item: true, xs: 2, lg: 3, children: /* @__PURE__ */ jsx(Operator, { id, combinator, attribute, operator }) }),
|
|
57
58
|
attribute != null && (operator != null || availableOperators === 0) && /* @__PURE__ */ jsx(HvGrid, { item: true, xs: true, children: shouldShowValueInput && /* @__PURE__ */ jsx(Value, { attribute, id, operator, value }) }),
|
|
58
|
-
/* @__PURE__ */ jsx(HvGrid, { item: true, className: classes.actionsContainer, children: /* @__PURE__ */ jsx(HvButton, { icon: true, "aria-label": labels.rule.delete.ariaLabel, onClick: () => {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}
|
|
66
|
-
|
|
59
|
+
/* @__PURE__ */ jsx(HvGrid, { item: true, className: classes.actionsContainer, children: /* @__PURE__ */ jsx(HvButton, { icon: true, "aria-label": labels.rule.delete.ariaLabel, onClick: () => disableConfirmation ? dispatchAction({
|
|
60
|
+
type: "remove-node",
|
|
61
|
+
id
|
|
62
|
+
}) : askAction({
|
|
63
|
+
actions: [{
|
|
64
|
+
type: "remove-node",
|
|
65
|
+
id
|
|
66
|
+
}],
|
|
67
|
+
dialog: labels.rule.delete
|
|
68
|
+
}), disabled: readOnly, children: /* @__PURE__ */ jsx(DeleteIcon, {}) }) })
|
|
67
69
|
] });
|
|
68
70
|
};
|
|
69
71
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Rule.js","sources":["../../../../../src/components/QueryBuilder/Rule/Rule.tsx"],"sourcesContent":["import {
|
|
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 { HvButton } from \"@core/components/Button\";\nimport { withTooltip } from \"@core/hocs/withTooltip\";\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 const DeleteIcon = withTooltip(\n () => <Delete />,\n labels.rule.delete.tooltip,\n \"bottom\"\n );\n\n return (\n <HvGrid\n container\n className={cx(classes.root, { [classes.isMdDown]: isMdDown })}\n spacing={0}\n wrap=\"nowrap\"\n >\n <HvGrid item xs={2} lg={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={2} lg={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>\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 <HvButton\n icon\n aria-label={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 <DeleteIcon />\n </HvButton>\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","DeleteIcon","withTooltip","rule","delete","tooltip","root","actionsContainer","ariaLabel","actions","dialog"],"mappings":";;;;;;;;;;;;;;AA+BaA,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;AAEjCkC,QAAAA,aAAaC,YACjB,MAAO,oBAAA,QAAA,CAAA,CAAS,GAChBtB,OAAOuB,KAAKC,OAAOC,SACnB,QACF;AAEA,8BACG,QACC,EAAA,WAAS,MACT,WAAW/B,GAAGH,QAAQmC,MAAM;AAAA,IAAE,CAACnC,QAAQe,QAAQ,GAAGA;AAAAA,EAAU,CAAA,GAC5D,SAAS,GACT,MAAK,UAEL,UAAA;AAAA,IAAA,oBAAC,QAAO,EAAA,MAAI,MAAC,IAAI,GAAG,IAAI,GACtB,UAAA,oBAAC,WACC,EAAA,WACA,IACA,UACA,UAAqB,CAAA,GAEzB;AAAA,IACCpB,aAAa,QAAQwB,qBAAqB,KACxC,oBAAA,QAAA,EAAO,MAAI,MAAC,IAAI,GAAG,IAAI,GACtB,UAAC,oBAAA,UAAA,EACC,IACA,YACA,WACA,SAAmB,CAAA,GAEvB;AAAA,IAEDxB,aAAa,SAASC,YAAY,QAAQuB,uBAAuB,0BAC/D,QAAO,EAAA,MAAI,MAAC,IAAE,MACZU,kCACE,oBAAA,OAAA,EACC,WACA,IACA,UACA,OAEH,EACH,CAAA;AAAA,wBAED,QAAO,EAAA,MAAI,MAAC,WAAW7B,QAAQoC,kBAC9B,UAAC,oBAAA,UAAA,EACC,MAAI,MACJ,cAAY3B,OAAOuB,KAAKC,OAAOI,WAC/B,SAAS,MACP1B,sBACIL,eAAe;AAAA,MAAEiB,MAAM;AAAA,MAAe9B;AAAAA,IAAI,CAAA,IAC1CY,UAAU;AAAA,MACRiC,SAAS,CAAC;AAAA,QAAEf,MAAM;AAAA,QAAe9B;AAAAA,MAAAA,CAAI;AAAA,MACrC8C,QAAQ9B,OAAOuB,KAAKC;AAAAA,IAAAA,CACrB,GAEP,UAAUvB,UAEV,UAAC,oBAAA,YAAA,CAAA,CAAU,EACb,CAAA,GACF;AAAA,EACF,EAAA,CAAA;AAEJ;"}
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import { jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { memo } from "react";
|
|
3
|
+
import { useQueryBuilderContext } from "../../../Context.js";
|
|
4
4
|
import { isBigList } from "../../../utils/index.js";
|
|
5
5
|
import { HvDropdown } from "../../../../Dropdown/Dropdown.js";
|
|
6
6
|
const BooleanValue = ({
|
|
7
7
|
id,
|
|
8
8
|
value = true
|
|
9
9
|
}) => {
|
|
10
|
-
const context = useContext(QueryBuilderContext);
|
|
11
10
|
const {
|
|
12
11
|
labels,
|
|
13
12
|
dispatchAction,
|
|
14
13
|
readOnly
|
|
15
|
-
} =
|
|
14
|
+
} = useQueryBuilderContext();
|
|
16
15
|
const values = ["true", "false"].map((v) => ({
|
|
17
16
|
id: v,
|
|
18
17
|
label: labels.rule.value.boolean.options[v],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BooleanValue.js","sources":["../../../../../../../src/components/QueryBuilder/Rule/Value/BooleanValue/BooleanValue.tsx"],"sourcesContent":["import { memo
|
|
1
|
+
{"version":3,"file":"BooleanValue.js","sources":["../../../../../../../src/components/QueryBuilder/Rule/Value/BooleanValue/BooleanValue.tsx"],"sourcesContent":["import { memo } from \"react\";\n\nimport { HvDropdown } from \"@core/components/Dropdown\";\n\nimport { useQueryBuilderContext } from \"../../../Context\";\nimport { isBigList } from \"../../../utils\";\n\nexport interface BooleanValueProps {\n id: React.Key;\n value?: boolean;\n}\n\nexport const BooleanValue = ({ id, value = true }: BooleanValueProps) => {\n const { labels, dispatchAction, readOnly } = useQueryBuilderContext();\n\n const values = [\"true\", \"false\"].map((v) => ({\n id: v,\n label: labels.rule.value.boolean.options[v],\n selected: value === (v === \"true\"),\n }));\n\n return (\n <HvDropdown\n required\n status=\"valid\"\n singleSelectionToggle={false}\n label={labels.rule.value.boolean.label}\n placeholder={labels.rule.value.boolean.placeholder}\n values={values}\n readOnly={readOnly}\n onChange={(selected) => {\n if (selected && !Array.isArray(selected) && selected.id) {\n dispatchAction({\n type: \"set-value\",\n id,\n value: selected.id === \"true\",\n });\n } else {\n dispatchAction({ type: \"set-value\", id, value: null });\n }\n }}\n showSearch={isBigList(values)}\n {...(isBigList(values) && { virtualized: true, height: 300 })}\n />\n );\n};\n\nexport default memo(BooleanValue);\n"],"names":["BooleanValue","id","value","labels","dispatchAction","readOnly","useQueryBuilderContext","values","map","v","label","rule","boolean","options","selected","placeholder","Array","isArray","type","isBigList","virtualized","height","memo"],"mappings":";;;;;AAYO,MAAMA,eAAeA,CAAC;AAAA,EAAEC;AAAAA,EAAIC,QAAQ;AAAwB,MAAM;AACjE,QAAA;AAAA,IAAEC;AAAAA,IAAQC;AAAAA,IAAgBC;AAAAA,MAAaC,uBAAuB;AAEpE,QAAMC,SAAS,CAAC,QAAQ,OAAO,EAAEC,IAAKC,CAAO,OAAA;AAAA,IAC3CR,IAAIQ;AAAAA,IACJC,OAAOP,OAAOQ,KAAKT,MAAMU,QAAQC,QAAQJ,CAAC;AAAA,IAC1CK,UAAUZ,WAAWO,MAAM;AAAA,EAC3B,EAAA;AAGA,SAAA,oBAAC,cACC,UAAQ,MACR,QAAO,SACP,uBAAuB,OACvB,OAAON,OAAOQ,KAAKT,MAAMU,QAAQF,OACjC,aAAaP,OAAOQ,KAAKT,MAAMU,QAAQG,aACvC,QACA,UACA,UAAWD,CAAa,aAAA;AACtB,QAAIA,YAAY,CAACE,MAAMC,QAAQH,QAAQ,KAAKA,SAASb,IAAI;AACxC,qBAAA;AAAA,QACbiB,MAAM;AAAA,QACNjB;AAAAA,QACAC,OAAOY,SAASb,OAAO;AAAA,MAAA,CACxB;AAAA,IAAA,OACI;AACU,qBAAA;AAAA,QAAEiB,MAAM;AAAA,QAAajB;AAAAA,QAAIC,OAAO;AAAA,MAAA,CAAM;AAAA,IACvD;AAAA,EAAA,GAEF,YAAYiB,UAAUZ,MAAM,GACvBY,GAAAA,UAAUZ,MAAM,KAAK;AAAA,IAAEa,aAAa;AAAA,IAAMC,QAAQ;AAAA,EACvD,EAAA,CAAA;AAEN;AAEeC,KAAKtB,YAAY;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsxs, jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { useState, useCallback, useMemo, memo } from "react";
|
|
3
3
|
import uniqueId from "lodash/uniqueId";
|
|
4
4
|
import dayjs from "dayjs";
|
|
5
5
|
import { useTheme, useMediaQuery } from "@mui/material";
|
|
6
|
-
import {
|
|
6
|
+
import { useQueryBuilderContext } from "../../../Context.js";
|
|
7
7
|
import { padTime, parseDate, parseTime } from "./utils.js";
|
|
8
8
|
import { useClasses } from "./DateTimeValue.styles.js";
|
|
9
9
|
import { HvDatePicker } from "../../../../DatePicker/DatePicker.js";
|
|
@@ -25,12 +25,11 @@ const DateTimeValue = ({
|
|
|
25
25
|
const theme = useTheme();
|
|
26
26
|
const isMdDown = useMediaQuery(theme.breakpoints.down("md"));
|
|
27
27
|
const isRange = valueIsRange(operator);
|
|
28
|
-
const context = useContext(QueryBuilderContext);
|
|
29
28
|
const {
|
|
30
29
|
labels,
|
|
31
30
|
dispatchAction,
|
|
32
31
|
readOnly
|
|
33
|
-
} =
|
|
32
|
+
} = useQueryBuilderContext();
|
|
34
33
|
const elementId = uniqueId(`datetime${id}`);
|
|
35
34
|
const [touchedDate, setTouchedDate] = useState(initialTouched);
|
|
36
35
|
const [touchedTime, setTouchedTime] = useState(initialTouched);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimeValue.js","sources":["../../../../../../../src/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.tsx"],"sourcesContent":["import { memo, useCallback, useContext, useMemo, useState } from \"react\";\n\nimport uniqueId from \"lodash/uniqueId\";\n\nimport dayjs from \"dayjs\";\n\nimport { useMediaQuery, useTheme } from \"@mui/material\";\n\nimport { HvWarningText } from \"@core/components/Forms\";\nimport { HvTimePicker } from \"@core/components/TimePicker\";\nimport { HvDatePicker } from \"@core/components/DatePicker\";\n\nimport { QueryBuilderContext } from \"../../../Context\";\nimport { padTime, parseDate, parseTime } from \"./utils\";\nimport { useClasses } from \"./DateTimeValue.styles\";\n\nfunction valueIsRange(operator) {\n return operator === \"range\";\n}\n\nexport interface DateTimeValueProps {\n id: number;\n operator: string;\n value: any;\n initialTouched: boolean;\n}\n\nexport const DateTimeValue = ({\n id,\n operator,\n value: valueProp = {},\n initialTouched = false,\n}: DateTimeValueProps) => {\n const { classes, cx } = useClasses();\n\n const theme = useTheme();\n const isMdDown = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const isRange = valueIsRange(operator);\n\n const context = useContext(QueryBuilderContext);\n const { labels, dispatchAction, readOnly } = context;\n\n const elementId = uniqueId(`datetime${id}`);\n\n const [touchedDate, setTouchedDate] = useState(initialTouched);\n const [touchedTime, setTouchedTime] = useState(initialTouched);\n const [touchedEndDate, setTouchedEndDate] = useState(initialTouched);\n const [touchedEndTime, setTouchedEndTime] = useState(initialTouched);\n\n const onDateChange = useCallback(\n (data) => {\n setTouchedDate(true);\n\n let date;\n if (data != null) {\n date = dayjs(data).format(\"YYYY-MM-DD\");\n }\n\n const oldValue = !isRange ? valueProp?.date : valueProp?.start?.date;\n\n if (date !== oldValue) {\n let value;\n if (!isRange) {\n value = {\n date,\n time: valueProp?.time,\n };\n } else {\n value = {\n start: {\n date,\n time: valueProp?.start?.time,\n },\n end: valueProp?.end,\n };\n }\n\n dispatchAction({\n type: \"set-value\",\n id,\n value,\n });\n }\n },\n [dispatchAction, id, isRange, valueProp]\n );\n\n const onTimeChange = useCallback(\n (data) => {\n setTouchedTime(true);\n\n let time;\n if (data != null) {\n time = `${padTime(data.hours)}:${padTime(data.minutes)}:${padTime(\n data.seconds\n )}`;\n }\n\n const oldValue = !isRange ? valueProp?.time : valueProp?.start?.time;\n\n if (time !== oldValue) {\n let value;\n if (!isRange) {\n value = {\n date: valueProp?.date,\n time,\n };\n } else {\n value = {\n start: {\n date: valueProp?.start?.date,\n time,\n },\n end: valueProp?.end,\n };\n }\n\n dispatchAction({\n type: \"set-value\",\n id,\n value,\n });\n }\n },\n [dispatchAction, id, isRange, valueProp]\n );\n\n const onEndDateChange = useCallback(\n (data) => {\n setTouchedEndDate(true);\n\n let date;\n if (data != null) {\n date = dayjs(data).format(\"YYYY-MM-DD\");\n }\n\n if (date !== valueProp?.end?.date) {\n const value = {\n start: valueProp?.start,\n end: {\n date,\n time: valueProp?.end?.time,\n },\n };\n\n dispatchAction({\n type: \"set-value\",\n id,\n value,\n });\n }\n },\n [dispatchAction, id, valueProp]\n );\n\n const onEndTimeChange = useCallback(\n (data) => {\n setTouchedEndTime(true);\n\n let time;\n if (data != null) {\n time = `${padTime(data.hours)}:${padTime(data.minutes)}:${padTime(\n data.seconds\n )}`;\n }\n\n if (time !== valueProp?.end?.time) {\n const value = {\n start: valueProp?.start,\n end: {\n date: valueProp?.end?.date,\n time,\n },\n };\n\n dispatchAction({\n type: \"set-value\",\n id,\n value,\n });\n }\n },\n [dispatchAction, id, valueProp]\n );\n\n const startDate = isRange ? valueProp?.start?.date : valueProp?.date;\n const datePickerValue = useMemo(() => parseDate(startDate), [startDate]);\n const datePickerStatus = datePickerValue != null ? \"valid\" : \"invalid\";\n\n const startTime = (isRange ? valueProp?.start?.time : valueProp?.time) ?? \"\";\n const timePickerValue = useMemo(() => parseTime(startTime), [startTime]);\n const timePickerStatus = timePickerValue != null ? \"valid\" : \"invalid\";\n\n const endDate = isRange ? valueProp?.end?.date : null;\n const endDatePickerValue = useMemo(() => parseDate(endDate), [endDate]);\n\n const endTime = isRange ? valueProp?.end?.time : null;\n const endTimePickerValue = useMemo(() => parseTime(endTime), [endTime]);\n\n const dateStatus = !touchedDate ? \"standBy\" : datePickerStatus;\n const timeStatus = !touchedTime ? \"standBy\" : timePickerStatus;\n\n const endDateIsBefore =\n startDate != null && endDate != null && endDate < startDate;\n\n const endTimeIsBeforeOrSame =\n startDate != null &&\n endDate != null &&\n endDate === startDate &&\n startTime != null &&\n endTime != null &&\n endTime <= startTime;\n\n const endDateTimeIsBefore = endDateIsBefore || endTimeIsBeforeOrSame;\n\n const endDatePickerStatus =\n endDatePickerValue == null || endDateTimeIsBefore ? \"invalid\" : \"valid\";\n const endDateStatus = !touchedEndDate ? \"standBy\" : endDatePickerStatus;\n\n const endTimePickerStatus =\n endTimePickerValue == null || endDateTimeIsBefore ? \"invalid\" : \"valid\";\n const endTimeStatus = !touchedEndTime ? \"standBy\" : endTimePickerStatus;\n\n return (\n <div className={classes.root}>\n <div\n className={cx(classes.row, classes.horizontal, {\n [classes.isMdDown]: isMdDown,\n })}\n >\n <HvDatePicker\n className={classes.datePicker}\n name={`${elementId}-date`}\n required\n status={dateStatus}\n statusMessage={labels.rule.value.datetime.validation.required}\n label={\n isRange\n ? labels.rule.value.datetime.startDateLabel\n : labels.rule.value.datetime.dateLabel\n }\n placeholder={\n isRange\n ? labels.rule.value.datetime.startDatePlaceholder\n : labels.rule.value.datetime.datePlaceholder\n }\n value={datePickerValue}\n onChange={onDateChange}\n readOnly={readOnly}\n />\n <HvTimePicker\n className={classes.timePicker}\n timeFormat=\"24\"\n name={`${elementId}-time`}\n required\n status={timeStatus}\n statusMessage={labels.rule.value.datetime.validation.required}\n label={\n isRange\n ? labels.rule.value.datetime.startTimeLabel\n : labels.rule.value.datetime.timeLabel\n }\n placeholder={\n isRange\n ? labels.rule.value.datetime.startTimePlaceholder\n : labels.rule.value.datetime.timePlaceholder\n }\n value={timePickerValue || undefined}\n onChange={onTimeChange}\n onToggle={(_evt, open) => {\n if (!open && !touchedTime) {\n setTouchedTime(true);\n }\n }}\n readOnly={readOnly}\n />\n </div>\n {isRange && (\n <div className={cx(classes.row, classes.vertical)}>\n <div\n className={cx(classes.horizontal, {\n [classes.isMdDown]: isMdDown,\n })}\n >\n <HvDatePicker\n className={classes.datePicker}\n name={`${elementId}-endDate`}\n required\n status={endDateStatus}\n statusMessage={labels.rule.value.datetime.validation.required}\n aria-errormessage={\n endDateTimeIsBefore ? `${elementId}-combined-error` : undefined\n }\n label={labels.rule.value.datetime.endDateLabel}\n placeholder={labels.rule.value.datetime.endDatePlaceholder}\n value={endDatePickerValue}\n onChange={onEndDateChange}\n readOnly={readOnly}\n />\n <HvTimePicker\n className={classes.timePicker}\n timeFormat=\"24\"\n name={`${elementId}-endTime`}\n required\n status={endTimeStatus}\n statusMessage={labels.rule.value.datetime.validation.required}\n aria-errormessage={\n endDateTimeIsBefore ? `${elementId}-combined-error` : undefined\n }\n label={labels.rule.value.datetime.endTimeLabel}\n placeholder={labels.rule.value.datetime.endTimePlaceholder}\n value={endTimePickerValue || undefined}\n onChange={onEndTimeChange}\n onToggle={(_evt, open) => {\n if (!open && !touchedEndTime) {\n setTouchedEndTime(true);\n }\n }}\n readOnly={readOnly}\n />\n </div>\n <HvWarningText\n disableBorder\n id={`${elementId}-combined-error`}\n isVisible={endDateTimeIsBefore}\n >\n {labels.rule.value.datetime.validation.invalidInterval}\n </HvWarningText>\n </div>\n )}\n </div>\n );\n};\n\nexport default memo(DateTimeValue);\n"],"names":["valueIsRange","operator","DateTimeValue","id","value","valueProp","initialTouched","classes","cx","useClasses","theme","useTheme","isMdDown","useMediaQuery","breakpoints","down","isRange","context","useContext","QueryBuilderContext","labels","dispatchAction","readOnly","elementId","uniqueId","touchedDate","setTouchedDate","useState","touchedTime","setTouchedTime","touchedEndDate","setTouchedEndDate","touchedEndTime","setTouchedEndTime","onDateChange","useCallback","data","date","dayjs","format","oldValue","start","time","end","type","onTimeChange","padTime","hours","minutes","seconds","onEndDateChange","onEndTimeChange","startDate","datePickerValue","useMemo","parseDate","datePickerStatus","startTime","timePickerValue","parseTime","timePickerStatus","endDate","endDatePickerValue","endTime","endTimePickerValue","dateStatus","timeStatus","endDateIsBefore","endTimeIsBeforeOrSame","endDateTimeIsBefore","endDatePickerStatus","endDateStatus","endTimePickerStatus","endTimeStatus","root","row","horizontal","datePicker","rule","datetime","validation","required","startDateLabel","dateLabel","startDatePlaceholder","datePlaceholder","timePicker","startTimeLabel","timeLabel","startTimePlaceholder","timePlaceholder","undefined","_evt","open","vertical","endDateLabel","endDatePlaceholder","endTimeLabel","endTimePlaceholder","invalidInterval","memo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DateTimeValue.js","sources":["../../../../../../../src/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.tsx"],"sourcesContent":["import { memo, useCallback, useMemo, useState } from \"react\";\nimport uniqueId from \"lodash/uniqueId\";\nimport dayjs from \"dayjs\";\nimport { useMediaQuery, useTheme } from \"@mui/material\";\n\nimport { HvWarningText } from \"@core/components/Forms\";\nimport { HvTimePicker, HvTimePickerValue } from \"@core/components/TimePicker\";\nimport { HvDatePicker } from \"@core/components/DatePicker\";\n\nimport { useQueryBuilderContext } from \"../../../Context\";\nimport { padTime, parseDate, parseTime } from \"./utils\";\nimport { useClasses } from \"./DateTimeValue.styles\";\n\nfunction valueIsRange(operator) {\n return operator === \"range\";\n}\n\nexport interface DateTimeValueProps {\n id: React.Key;\n operator?: string;\n value?: any;\n initialTouched?: boolean;\n}\n\nexport const DateTimeValue = ({\n id,\n operator,\n value: valueProp = {},\n initialTouched = false,\n}: DateTimeValueProps) => {\n const { classes, cx } = useClasses();\n\n const theme = useTheme();\n const isMdDown = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const isRange = valueIsRange(operator);\n\n const { labels, dispatchAction, readOnly } = useQueryBuilderContext();\n\n const elementId = uniqueId(`datetime${id}`);\n\n const [touchedDate, setTouchedDate] = useState(initialTouched);\n const [touchedTime, setTouchedTime] = useState(initialTouched);\n const [touchedEndDate, setTouchedEndDate] = useState(initialTouched);\n const [touchedEndTime, setTouchedEndTime] = useState(initialTouched);\n\n const onDateChange = useCallback(\n (data?: Date) => {\n setTouchedDate(true);\n\n let date;\n if (data != null) {\n date = dayjs(data).format(\"YYYY-MM-DD\");\n }\n\n const oldValue = !isRange ? valueProp?.date : valueProp?.start?.date;\n\n if (date !== oldValue) {\n let value;\n if (!isRange) {\n value = {\n date,\n time: valueProp?.time,\n };\n } else {\n value = {\n start: {\n date,\n time: valueProp?.start?.time,\n },\n end: valueProp?.end,\n };\n }\n\n dispatchAction({\n type: \"set-value\",\n id,\n value,\n });\n }\n },\n [dispatchAction, id, isRange, valueProp]\n );\n\n const onTimeChange = useCallback(\n (data: HvTimePickerValue) => {\n setTouchedTime(true);\n\n let time;\n if (data != null) {\n time = `${padTime(data.hours)}:${padTime(data.minutes)}:${padTime(\n data.seconds\n )}`;\n }\n\n const oldValue = !isRange ? valueProp?.time : valueProp?.start?.time;\n\n if (time !== oldValue) {\n let value;\n if (!isRange) {\n value = {\n date: valueProp?.date,\n time,\n };\n } else {\n value = {\n start: {\n date: valueProp?.start?.date,\n time,\n },\n end: valueProp?.end,\n };\n }\n\n dispatchAction({\n type: \"set-value\",\n id,\n value,\n });\n }\n },\n [dispatchAction, id, isRange, valueProp]\n );\n\n const onEndDateChange = useCallback(\n (data?: Date) => {\n setTouchedEndDate(true);\n\n let date;\n if (data != null) {\n date = dayjs(data).format(\"YYYY-MM-DD\");\n }\n\n if (date !== valueProp?.end?.date) {\n const value = {\n start: valueProp?.start,\n end: {\n date,\n time: valueProp?.end?.time,\n },\n };\n\n dispatchAction({\n type: \"set-value\",\n id,\n value,\n });\n }\n },\n [dispatchAction, id, valueProp]\n );\n\n const onEndTimeChange = useCallback(\n (data: HvTimePickerValue) => {\n setTouchedEndTime(true);\n\n let time;\n if (data != null) {\n time = `${padTime(data.hours)}:${padTime(data.minutes)}:${padTime(\n data.seconds\n )}`;\n }\n\n if (time !== valueProp?.end?.time) {\n const value = {\n start: valueProp?.start,\n end: {\n date: valueProp?.end?.date,\n time,\n },\n };\n\n dispatchAction({\n type: \"set-value\",\n id,\n value,\n });\n }\n },\n [dispatchAction, id, valueProp]\n );\n\n const startDate = isRange ? valueProp?.start?.date : valueProp?.date;\n const datePickerValue = useMemo(() => parseDate(startDate), [startDate]);\n const datePickerStatus = datePickerValue != null ? \"valid\" : \"invalid\";\n\n const startTime = (isRange ? valueProp?.start?.time : valueProp?.time) ?? \"\";\n const timePickerValue = useMemo(() => parseTime(startTime), [startTime]);\n const timePickerStatus = timePickerValue != null ? \"valid\" : \"invalid\";\n\n const endDate = isRange ? valueProp?.end?.date : null;\n const endDatePickerValue = useMemo(() => parseDate(endDate), [endDate]);\n\n const endTime = isRange ? valueProp?.end?.time : null;\n const endTimePickerValue = useMemo(() => parseTime(endTime), [endTime]);\n\n const dateStatus = !touchedDate ? \"standBy\" : datePickerStatus;\n const timeStatus = !touchedTime ? \"standBy\" : timePickerStatus;\n\n const endDateIsBefore =\n startDate != null && endDate != null && endDate < startDate;\n\n const endTimeIsBeforeOrSame =\n startDate != null &&\n endDate != null &&\n endDate === startDate &&\n startTime != null &&\n endTime != null &&\n endTime <= startTime;\n\n const endDateTimeIsBefore = endDateIsBefore || endTimeIsBeforeOrSame;\n\n const endDatePickerStatus =\n endDatePickerValue == null || endDateTimeIsBefore ? \"invalid\" : \"valid\";\n const endDateStatus = !touchedEndDate ? \"standBy\" : endDatePickerStatus;\n\n const endTimePickerStatus =\n endTimePickerValue == null || endDateTimeIsBefore ? \"invalid\" : \"valid\";\n const endTimeStatus = !touchedEndTime ? \"standBy\" : endTimePickerStatus;\n\n return (\n <div className={classes.root}>\n <div\n className={cx(classes.row, classes.horizontal, {\n [classes.isMdDown]: isMdDown,\n })}\n >\n <HvDatePicker\n className={classes.datePicker}\n name={`${elementId}-date`}\n required\n status={dateStatus}\n statusMessage={labels.rule.value.datetime.validation.required}\n label={\n isRange\n ? labels.rule.value.datetime.startDateLabel\n : labels.rule.value.datetime.dateLabel\n }\n placeholder={\n isRange\n ? labels.rule.value.datetime.startDatePlaceholder\n : labels.rule.value.datetime.datePlaceholder\n }\n value={datePickerValue}\n onChange={onDateChange}\n readOnly={readOnly}\n />\n <HvTimePicker\n className={classes.timePicker}\n timeFormat=\"24\"\n name={`${elementId}-time`}\n required\n status={timeStatus}\n statusMessage={labels.rule.value.datetime.validation.required}\n label={\n isRange\n ? labels.rule.value.datetime.startTimeLabel\n : labels.rule.value.datetime.timeLabel\n }\n placeholder={\n isRange\n ? labels.rule.value.datetime.startTimePlaceholder\n : labels.rule.value.datetime.timePlaceholder\n }\n value={timePickerValue || undefined}\n onChange={onTimeChange}\n onToggle={(_evt, open) => {\n if (!open && !touchedTime) {\n setTouchedTime(true);\n }\n }}\n readOnly={readOnly}\n />\n </div>\n {isRange && (\n <div className={cx(classes.row, classes.vertical)}>\n <div\n className={cx(classes.horizontal, {\n [classes.isMdDown]: isMdDown,\n })}\n >\n <HvDatePicker\n className={classes.datePicker}\n name={`${elementId}-endDate`}\n required\n status={endDateStatus}\n statusMessage={labels.rule.value.datetime.validation.required}\n aria-errormessage={\n endDateTimeIsBefore ? `${elementId}-combined-error` : undefined\n }\n label={labels.rule.value.datetime.endDateLabel}\n placeholder={labels.rule.value.datetime.endDatePlaceholder}\n value={endDatePickerValue}\n onChange={onEndDateChange}\n readOnly={readOnly}\n />\n <HvTimePicker\n className={classes.timePicker}\n timeFormat=\"24\"\n name={`${elementId}-endTime`}\n required\n status={endTimeStatus}\n statusMessage={labels.rule.value.datetime.validation.required}\n aria-errormessage={\n endDateTimeIsBefore ? `${elementId}-combined-error` : undefined\n }\n label={labels.rule.value.datetime.endTimeLabel}\n placeholder={labels.rule.value.datetime.endTimePlaceholder}\n value={endTimePickerValue || undefined}\n onChange={onEndTimeChange}\n onToggle={(_evt, open) => {\n if (!open && !touchedEndTime) {\n setTouchedEndTime(true);\n }\n }}\n readOnly={readOnly}\n />\n </div>\n <HvWarningText\n disableBorder\n id={`${elementId}-combined-error`}\n isVisible={endDateTimeIsBefore}\n >\n {labels.rule.value.datetime.validation.invalidInterval}\n </HvWarningText>\n </div>\n )}\n </div>\n );\n};\n\nexport default memo(DateTimeValue);\n"],"names":["valueIsRange","operator","DateTimeValue","id","value","valueProp","initialTouched","classes","cx","useClasses","theme","useTheme","isMdDown","useMediaQuery","breakpoints","down","isRange","labels","dispatchAction","readOnly","useQueryBuilderContext","elementId","uniqueId","touchedDate","setTouchedDate","useState","touchedTime","setTouchedTime","touchedEndDate","setTouchedEndDate","touchedEndTime","setTouchedEndTime","onDateChange","useCallback","data","date","dayjs","format","oldValue","start","time","end","type","onTimeChange","padTime","hours","minutes","seconds","onEndDateChange","onEndTimeChange","startDate","datePickerValue","useMemo","parseDate","datePickerStatus","startTime","timePickerValue","parseTime","timePickerStatus","endDate","endDatePickerValue","endTime","endTimePickerValue","dateStatus","timeStatus","endDateIsBefore","endTimeIsBeforeOrSame","endDateTimeIsBefore","endDatePickerStatus","endDateStatus","endTimePickerStatus","endTimeStatus","root","row","horizontal","datePicker","rule","datetime","validation","required","startDateLabel","dateLabel","startDatePlaceholder","datePlaceholder","timePicker","startTimeLabel","timeLabel","startTimePlaceholder","timePlaceholder","undefined","_evt","open","vertical","endDateLabel","endDatePlaceholder","endTimeLabel","endTimePlaceholder","invalidInterval","memo"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../../../../src/components/QueryBuilder/Rule/Value/DateTimeValue/utils.tsx"],"sourcesContent":["import dayjs from \"dayjs\";\n\n/**\n * Pads the unit time values so that they always have two digits\n * @param {Number} value - unit time value\n * @returns The unit time value with two digits\n */\nexport const padTime = (value) => {\n if (!value || value < 0) {\n return \"00\";\n }\n if (value < 10 && value.toString().length === 1) {\n return `0${value.toString()}`;\n }\n\n return value.toString();\n};\n\nexport const parseDate = (date) => {\n if (date != null) {\n return dayjs(date).toDate();\n }\n\n return undefined;\n};\n\nexport const parseTime = (time) => {\n if (time != null) {\n const parts = time.split(\":\");\n\n if (parts.length === 3) {\n return {\n hours: Number.parseInt(parts[0], 10),\n minutes: Number.parseInt(parts[1], 10),\n seconds: Number.parseInt(parts[2], 10),\n };\n }\n }\n\n return null;\n};\n"],"names":["padTime","value","toString","length","parseDate","date","dayjs","toDate","undefined","parseTime","time","parts","split","hours","Number","parseInt","minutes","seconds"],"mappings":";
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../../../../src/components/QueryBuilder/Rule/Value/DateTimeValue/utils.tsx"],"sourcesContent":["import dayjs from \"dayjs\";\n\n/**\n * Pads the unit time values so that they always have two digits\n * @param {Number} value - unit time value\n * @returns The unit time value with two digits\n */\nexport const padTime = (value: number) => {\n if (!value || value < 0) {\n return \"00\";\n }\n if (value < 10 && value.toString().length === 1) {\n return `0${value.toString()}`;\n }\n\n return value.toString();\n};\n\nexport const parseDate = (date: string) => {\n if (date != null) {\n return dayjs(date).toDate();\n }\n\n return undefined;\n};\n\nexport const parseTime = (time: string) => {\n if (time != null) {\n const parts = time.split(\":\");\n\n if (parts.length === 3) {\n return {\n hours: Number.parseInt(parts[0], 10),\n minutes: Number.parseInt(parts[1], 10),\n seconds: Number.parseInt(parts[2], 10),\n };\n }\n }\n\n return null;\n};\n"],"names":["padTime","value","toString","length","parseDate","date","dayjs","toDate","undefined","parseTime","time","parts","split","hours","Number","parseInt","minutes","seconds"],"mappings":";AAOaA,MAAAA,UAAUA,CAACC,UAAkB;AACpC,MAAA,CAACA,SAASA,QAAQ,GAAG;AAChB,WAAA;AAAA,EACT;AACA,MAAIA,QAAQ,MAAMA,MAAMC,SAAS,EAAEC,WAAW,GAAG;AACvC,WAAA,IAAGF,MAAMC,SAAAA,CAAW;AAAA,EAC9B;AAEA,SAAOD,MAAMC;AACf;AAEaE,MAAAA,YAAYA,CAACC,SAAiB;AACzC,MAAIA,QAAQ,MAAM;AACTC,WAAAA,MAAMD,IAAI,EAAEE;EACrB;AAEOC,SAAAA;AACT;AAEaC,MAAAA,YAAYA,CAACC,SAAiB;AACzC,MAAIA,QAAQ,MAAM;AACVC,UAAAA,QAAQD,KAAKE,MAAM,GAAG;AAExBD,QAAAA,MAAMR,WAAW,GAAG;AACf,aAAA;AAAA,QACLU,OAAOC,OAAOC,SAASJ,MAAM,CAAC,GAAG,EAAE;AAAA,QACnCK,SAASF,OAAOC,SAASJ,MAAM,CAAC,GAAG,EAAE;AAAA,QACrCM,SAASH,OAAOC,SAASJ,MAAM,CAAC,GAAG,EAAE;AAAA,MAAA;AAAA,IAEzC;AAAA,EACF;AAEO,SAAA;AACT;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsxs, jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { useCallback, useState, memo } from "react";
|
|
3
3
|
import uniqueId from "lodash/uniqueId";
|
|
4
4
|
import isEmpty from "lodash/isEmpty";
|
|
5
5
|
import { useTheme, useMediaQuery } from "@mui/material";
|
|
6
|
-
import {
|
|
6
|
+
import { useQueryBuilderContext } from "../../../Context.js";
|
|
7
7
|
import { useClasses } from "./Numeric.styles.js";
|
|
8
8
|
import { HvInput } from "../../../../Input/Input.js";
|
|
9
9
|
const NumericValue = ({
|
|
@@ -17,15 +17,14 @@ const NumericValue = ({
|
|
|
17
17
|
cx
|
|
18
18
|
} = useClasses();
|
|
19
19
|
const isRange = operator === "range";
|
|
20
|
-
const context = useContext(QueryBuilderContext);
|
|
21
20
|
const {
|
|
22
21
|
labels,
|
|
23
22
|
dispatchAction,
|
|
24
23
|
readOnly
|
|
25
|
-
} =
|
|
24
|
+
} = useQueryBuilderContext();
|
|
26
25
|
const theme = useTheme();
|
|
27
26
|
const isMdDown = useMediaQuery(theme.breakpoints.down("md"));
|
|
28
|
-
const onSingleValueChange = useCallback((
|
|
27
|
+
const onSingleValueChange = useCallback((_, data) => {
|
|
29
28
|
const numericData = isEmpty(data) ? null : Number(data);
|
|
30
29
|
dispatchAction({
|
|
31
30
|
type: "set-value",
|
|
@@ -33,7 +32,7 @@ const NumericValue = ({
|
|
|
33
32
|
value: Number.isNaN(numericData) ? data : numericData
|
|
34
33
|
});
|
|
35
34
|
}, [dispatchAction, id]);
|
|
36
|
-
const onRangeValueChange = useCallback((
|
|
35
|
+
const onRangeValueChange = useCallback((_, data, from = true) => {
|
|
37
36
|
const numericData = isEmpty(data) ? null : Number(data);
|
|
38
37
|
const currentValue = value;
|
|
39
38
|
const numericRange = {
|
|
@@ -112,7 +111,7 @@ const NumericValue = ({
|
|
|
112
111
|
] });
|
|
113
112
|
return /* @__PURE__ */ jsxs("div", { className: classes.root, children: [
|
|
114
113
|
isRange && renderRangeInputs(value || {}),
|
|
115
|
-
!isRange && /* @__PURE__ */ jsx("div", { className: classes.inputContainer, children: /* @__PURE__ */ jsx(HvInput, { label: labels.rule.value.numeric.label, className: classes.input, id: `${elementId}-numeric`, name: `${elementId}-numeric`, value: value
|
|
114
|
+
!isRange && /* @__PURE__ */ jsx("div", { className: classes.inputContainer, children: /* @__PURE__ */ jsx(HvInput, { label: labels.rule.value.numeric.label, className: classes.input, id: `${elementId}-numeric`, name: `${elementId}-numeric`, value: value?.toString() || "", onChange: onSingleValueChange, onBlur: () => {
|
|
116
115
|
setTouchedNumeric(true);
|
|
117
116
|
}, onKeyDown: (e) => {
|
|
118
117
|
if (e.key === "Enter") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumericValue.js","sources":["../../../../../../../src/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.tsx"],"sourcesContent":["import { memo, useCallback, useContext, useState } from \"react\";\n\nimport uniqueId from \"lodash/uniqueId\";\nimport isEmpty from \"lodash/isEmpty\";\n\nimport { useMediaQuery, useTheme } from \"@mui/material\";\n\nimport { HvInput } from \"@core/components/Input\";\n\nimport { QueryBuilderContext } from \"../../../Context\";\nimport { useClasses } from \"./Numeric.styles\";\n\nexport interface NumericValueProps {\n id: number;\n value: any;\n operator: string;\n initialTouched?: boolean;\n}\n\nexport const NumericValue = ({\n id,\n value,\n operator,\n initialTouched = false,\n}: NumericValueProps) => {\n const { classes, cx } = useClasses();\n\n const isRange = operator === \"range\";\n const context = useContext(QueryBuilderContext);\n const { labels, dispatchAction, readOnly } = context;\n\n const theme = useTheme();\n\n const isMdDown = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const onSingleValueChange = useCallback(\n (evt, data) => {\n const numericData = isEmpty(data) ? null : Number(data);\n dispatchAction({\n type: \"set-value\",\n id,\n value: Number.isNaN(numericData) ? data : numericData,\n });\n },\n [dispatchAction, id]\n );\n\n const onRangeValueChange = useCallback(\n (evt, data, from = true) => {\n const numericData = isEmpty(data) ? null : Number(data);\n const currentValue = value;\n const numericRange = {\n from: currentValue?.from,\n to: currentValue?.to,\n };\n if (from) {\n numericRange.from = Number.isNaN(numericData) ? data : numericData;\n } else {\n numericRange.to = Number.isNaN(numericData) ? data : numericData;\n }\n dispatchAction({\n type: \"set-value\",\n id,\n value: numericRange,\n });\n },\n [dispatchAction, id, value]\n );\n\n const [touchedNumeric, setTouchedNumeric] = useState(initialTouched);\n const [touchedNumericTo, setTouchedNumericTo] = useState(initialTouched);\n\n const elementId = uniqueId(\"numeric\");\n\n let numericValidation: \"required\" | \"invalid\" | null = null;\n let rightValidation: \"required\" | \"invalid\" | \"greaterThan\" | \"equal\" | null =\n null;\n\n if (touchedNumeric || touchedNumericTo) {\n if (value === undefined || value?.toString() === \"\") {\n if (touchedNumeric) {\n numericValidation = \"required\";\n }\n if (touchedNumericTo) {\n rightValidation = \"required\";\n }\n } else if (!isRange) {\n if (Number.isNaN(Number(value))) {\n numericValidation = \"invalid\";\n }\n } else if (isRange) {\n const rangeValue = value;\n if (\n rangeValue?.from === undefined ||\n rangeValue?.from?.toString() === \"\"\n ) {\n numericValidation = \"required\";\n } else if (Number.isNaN(Number(rangeValue?.from))) {\n numericValidation = \"invalid\";\n }\n\n if (rangeValue?.to === undefined || rangeValue?.to?.toString() === \"\") {\n rightValidation = \"required\";\n } else if (Number.isNaN(Number(rangeValue?.to))) {\n rightValidation = \"invalid\";\n } else if (Number(rangeValue?.from) > Number(rangeValue?.to)) {\n rightValidation = \"greaterThan\";\n } else if (Number(rangeValue?.from) === Number(rangeValue?.to)) {\n rightValidation = \"equal\";\n }\n }\n }\n\n const numericStatus = numericValidation != null ? \"invalid\" : \"valid\";\n const rightStatus = rightValidation != null ? \"invalid\" : \"valid\";\n\n const renderRangeInputs = (rangeValue) => (\n <div\n className={cx(classes.rangeContainer, { [classes.isMdDown]: isMdDown })}\n >\n <div className={classes.inputContainer}>\n <HvInput\n label={labels.rule.value.numeric.range.leftLabel}\n className={classes.input}\n id={`${elementId}-numeric-from`}\n name={`${elementId}-numeric-from`}\n value={rangeValue?.from?.toString() || \"\"}\n onChange={(event, data) => onRangeValueChange(event, data)}\n onBlur={() => {\n setTouchedNumeric(true);\n }}\n onKeyDown={(e: any) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n }\n }}\n status={!touchedNumeric ? \"standBy\" : numericStatus}\n statusMessage={\n numericValidation\n ? labels.rule.value.numeric.validation[numericValidation]\n : \"\"\n }\n required\n inputProps={{\n autoComplete: \"off\",\n }}\n placeholder={labels.rule.value.numeric.placeholder}\n readOnly={readOnly}\n />\n </div>\n <div className={classes.inputContainer}>\n <HvInput\n label={labels.rule.value.numeric.range.rightLabel}\n className={classes.input}\n id={`${elementId}-numeric-to`}\n name={`${elementId}-numeric-to`}\n value={rangeValue?.to?.toString() || \"\"}\n onChange={(event, data) => onRangeValueChange(event, data, false)}\n onBlur={() => {\n setTouchedNumericTo(true);\n }}\n onKeyDown={(e: any) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n }\n }}\n status={!touchedNumericTo ? \"standBy\" : rightStatus}\n statusMessage={\n rightValidation\n ? labels.rule.value.numeric.validation[rightValidation]\n : \"\"\n }\n required\n inputProps={{\n autoComplete: \"off\",\n }}\n placeholder={labels.rule.value.numeric.placeholder}\n readOnly={readOnly}\n />\n </div>\n </div>\n );\n\n return (\n <div className={classes.root}>\n {isRange && renderRangeInputs(value || {})}\n {!isRange && (\n <div className={classes.inputContainer}>\n <HvInput\n label={labels.rule.value.numeric.label}\n className={classes.input}\n id={`${elementId}-numeric`}\n name={`${elementId}-numeric`}\n value={value ? value.toString() : \"\"}\n onChange={onSingleValueChange}\n onBlur={() => {\n setTouchedNumeric(true);\n }}\n onKeyDown={(e: any) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n }\n }}\n status={!touchedNumeric ? \"standBy\" : numericStatus}\n required\n inputProps={{\n autoComplete: \"off\",\n }}\n placeholder={labels.rule.value.numeric.placeholder}\n statusMessage={\n numericValidation\n ? labels.rule.value.numeric.validation[numericValidation]\n : \"\"\n }\n readOnly={readOnly}\n />\n </div>\n )}\n </div>\n );\n};\n\nexport default memo(NumericValue);\n"],"names":["NumericValue","id","value","operator","initialTouched","classes","cx","useClasses","isRange","context","useContext","QueryBuilderContext","labels","dispatchAction","readOnly","theme","useTheme","isMdDown","useMediaQuery","breakpoints","down","onSingleValueChange","useCallback","evt","data","numericData","isEmpty","Number","type","isNaN","onRangeValueChange","from","currentValue","numericRange","to","touchedNumeric","setTouchedNumeric","useState","touchedNumericTo","setTouchedNumericTo","elementId","uniqueId","numericValidation","rightValidation","undefined","toString","rangeValue","numericStatus","rightStatus","renderRangeInputs","rangeContainer","inputContainer","rule","numeric","range","leftLabel","input","event","e","key","preventDefault","validation","autoComplete","placeholder","rightLabel","root","label","memo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NumericValue.js","sources":["../../../../../../../src/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.tsx"],"sourcesContent":["import { memo, useCallback, useState } from \"react\";\nimport uniqueId from \"lodash/uniqueId\";\nimport isEmpty from \"lodash/isEmpty\";\nimport { useMediaQuery, useTheme } from \"@mui/material\";\n\nimport { HvInput } from \"@core/components/Input\";\n\nimport { useQueryBuilderContext } from \"../../../Context\";\nimport { useClasses } from \"./Numeric.styles\";\nimport { HvQueryBuilderNumericRange } from \"../../../types\";\n\nexport interface NumericValueProps {\n id: React.Key;\n value?: any;\n operator?: string;\n initialTouched?: boolean;\n}\n\nexport const NumericValue = ({\n id,\n value,\n operator,\n initialTouched = false,\n}: NumericValueProps) => {\n const { classes, cx } = useClasses();\n\n const isRange = operator === \"range\";\n const { labels, dispatchAction, readOnly } = useQueryBuilderContext();\n\n const theme = useTheme();\n\n const isMdDown = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const onSingleValueChange = useCallback(\n (_, data: string) => {\n const numericData = isEmpty(data) ? null : Number(data);\n dispatchAction({\n type: \"set-value\",\n id,\n value: Number.isNaN(numericData) ? data : numericData,\n });\n },\n [dispatchAction, id]\n );\n\n const onRangeValueChange = useCallback(\n (_, data: string, from = true) => {\n const numericData = isEmpty(data) ? null : Number(data);\n const currentValue = value;\n const numericRange = {\n from: currentValue?.from,\n to: currentValue?.to,\n };\n if (from) {\n numericRange.from = Number.isNaN(numericData) ? data : numericData;\n } else {\n numericRange.to = Number.isNaN(numericData) ? data : numericData;\n }\n dispatchAction({\n type: \"set-value\",\n id,\n value: numericRange,\n });\n },\n [dispatchAction, id, value]\n );\n\n const [touchedNumeric, setTouchedNumeric] = useState(initialTouched);\n const [touchedNumericTo, setTouchedNumericTo] = useState(initialTouched);\n\n const elementId = uniqueId(\"numeric\");\n\n let numericValidation: \"required\" | \"invalid\" | null = null;\n let rightValidation: \"required\" | \"invalid\" | \"greaterThan\" | \"equal\" | null =\n null;\n\n if (touchedNumeric || touchedNumericTo) {\n if (value === undefined || value?.toString() === \"\") {\n if (touchedNumeric) {\n numericValidation = \"required\";\n }\n if (touchedNumericTo) {\n rightValidation = \"required\";\n }\n } else if (!isRange) {\n if (Number.isNaN(Number(value))) {\n numericValidation = \"invalid\";\n }\n } else if (isRange) {\n const rangeValue = value;\n if (\n rangeValue?.from === undefined ||\n rangeValue?.from?.toString() === \"\"\n ) {\n numericValidation = \"required\";\n } else if (Number.isNaN(Number(rangeValue?.from))) {\n numericValidation = \"invalid\";\n }\n\n if (rangeValue?.to === undefined || rangeValue?.to?.toString() === \"\") {\n rightValidation = \"required\";\n } else if (Number.isNaN(Number(rangeValue?.to))) {\n rightValidation = \"invalid\";\n } else if (Number(rangeValue?.from) > Number(rangeValue?.to)) {\n rightValidation = \"greaterThan\";\n } else if (Number(rangeValue?.from) === Number(rangeValue?.to)) {\n rightValidation = \"equal\";\n }\n }\n }\n\n const numericStatus = numericValidation != null ? \"invalid\" : \"valid\";\n const rightStatus = rightValidation != null ? \"invalid\" : \"valid\";\n\n const renderRangeInputs = (rangeValue: HvQueryBuilderNumericRange) => (\n <div\n className={cx(classes.rangeContainer, { [classes.isMdDown]: isMdDown })}\n >\n <div className={classes.inputContainer}>\n <HvInput\n label={labels.rule.value.numeric.range.leftLabel}\n className={classes.input}\n id={`${elementId}-numeric-from`}\n name={`${elementId}-numeric-from`}\n value={rangeValue?.from?.toString() || \"\"}\n onChange={(event, data) => onRangeValueChange(event, data)}\n onBlur={() => {\n setTouchedNumeric(true);\n }}\n onKeyDown={(e: any) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n }\n }}\n status={!touchedNumeric ? \"standBy\" : numericStatus}\n statusMessage={\n numericValidation\n ? labels.rule.value.numeric.validation[numericValidation]\n : \"\"\n }\n required\n inputProps={{\n autoComplete: \"off\",\n }}\n placeholder={labels.rule.value.numeric.placeholder}\n readOnly={readOnly}\n />\n </div>\n <div className={classes.inputContainer}>\n <HvInput\n label={labels.rule.value.numeric.range.rightLabel}\n className={classes.input}\n id={`${elementId}-numeric-to`}\n name={`${elementId}-numeric-to`}\n value={rangeValue?.to?.toString() || \"\"}\n onChange={(event, data) => onRangeValueChange(event, data, false)}\n onBlur={() => {\n setTouchedNumericTo(true);\n }}\n onKeyDown={(e: any) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n }\n }}\n status={!touchedNumericTo ? \"standBy\" : rightStatus}\n statusMessage={\n rightValidation\n ? labels.rule.value.numeric.validation[rightValidation]\n : \"\"\n }\n required\n inputProps={{\n autoComplete: \"off\",\n }}\n placeholder={labels.rule.value.numeric.placeholder}\n readOnly={readOnly}\n />\n </div>\n </div>\n );\n\n return (\n <div className={classes.root}>\n {isRange && renderRangeInputs(value || {})}\n {!isRange && (\n <div className={classes.inputContainer}>\n <HvInput\n label={labels.rule.value.numeric.label}\n className={classes.input}\n id={`${elementId}-numeric`}\n name={`${elementId}-numeric`}\n value={value?.toString() || \"\"}\n onChange={onSingleValueChange}\n onBlur={() => {\n setTouchedNumeric(true);\n }}\n onKeyDown={(e: any) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n }\n }}\n status={!touchedNumeric ? \"standBy\" : numericStatus}\n required\n inputProps={{\n autoComplete: \"off\",\n }}\n placeholder={labels.rule.value.numeric.placeholder}\n statusMessage={\n numericValidation\n ? labels.rule.value.numeric.validation[numericValidation]\n : \"\"\n }\n readOnly={readOnly}\n />\n </div>\n )}\n </div>\n );\n};\n\nexport default memo(NumericValue);\n"],"names":["NumericValue","id","value","operator","initialTouched","classes","cx","useClasses","isRange","labels","dispatchAction","readOnly","useQueryBuilderContext","theme","useTheme","isMdDown","useMediaQuery","breakpoints","down","onSingleValueChange","useCallback","_","data","numericData","isEmpty","Number","type","isNaN","onRangeValueChange","from","currentValue","numericRange","to","touchedNumeric","setTouchedNumeric","useState","touchedNumericTo","setTouchedNumericTo","elementId","uniqueId","numericValidation","rightValidation","undefined","toString","rangeValue","numericStatus","rightStatus","renderRangeInputs","rangeContainer","inputContainer","rule","numeric","range","leftLabel","input","event","e","key","preventDefault","validation","autoComplete","placeholder","rightLabel","root","label","memo"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { useState, memo } from "react";
|
|
3
|
+
import { useQueryBuilderContext } from "../../../Context.js";
|
|
4
4
|
import { useClasses } from "./TextValue.styles.js";
|
|
5
5
|
import { HvInput } from "../../../../Input/Input.js";
|
|
6
6
|
const TextValue = ({
|
|
@@ -11,12 +11,11 @@ const TextValue = ({
|
|
|
11
11
|
const {
|
|
12
12
|
classes
|
|
13
13
|
} = useClasses();
|
|
14
|
-
const context = useContext(QueryBuilderContext);
|
|
15
14
|
const {
|
|
16
15
|
labels,
|
|
17
16
|
dispatchAction,
|
|
18
17
|
readOnly
|
|
19
|
-
} =
|
|
18
|
+
} = useQueryBuilderContext();
|
|
20
19
|
const [touched, setTouched] = useState(initialTouched);
|
|
21
20
|
const isValid = value != null && value.toString().trim() !== "";
|
|
22
21
|
let status = isValid ? "valid" : "invalid";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextValue.js","sources":["../../../../../../../src/components/QueryBuilder/Rule/Value/TextValue/TextValue.tsx"],"sourcesContent":["import { memo,
|
|
1
|
+
{"version":3,"file":"TextValue.js","sources":["../../../../../../../src/components/QueryBuilder/Rule/Value/TextValue/TextValue.tsx"],"sourcesContent":["import { memo, useState } from \"react\";\n\nimport { HvFormStatus } from \"@core/components/Forms\";\nimport { HvInput } from \"@core/components/Input\";\n\nimport { useQueryBuilderContext } from \"../../../Context\";\nimport { useClasses } from \"./TextValue.styles\";\n\nexport interface TextValueProps {\n id: React.Key;\n value?: any;\n initialTouched?: boolean;\n}\n\nexport const TextValue = ({\n id,\n value = \"\",\n initialTouched = false,\n}: TextValueProps) => {\n const { classes } = useClasses();\n\n const { labels, dispatchAction, readOnly } = useQueryBuilderContext();\n\n const [touched, setTouched] = useState(initialTouched);\n\n const isValid = value != null && value.toString().trim() !== \"\";\n\n let status: HvFormStatus = isValid ? \"valid\" : \"invalid\";\n status = !touched ? \"standBy\" : status;\n\n return (\n <HvInput\n className={classes.location}\n label={labels.rule.value.text.label}\n required\n status={status}\n statusMessage={labels.rule.value.text.validation.required}\n value={value}\n inputProps={{\n autoComplete: \"off\",\n }}\n onChange={(t, v) => {\n dispatchAction({\n type: \"set-value\",\n id,\n value: v,\n });\n }}\n onBlur={() => {\n setTouched(true);\n }}\n onKeyDown={(e: any) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n }\n }}\n placeholder=\"—\"\n readOnly={readOnly}\n />\n );\n};\n\nexport default memo(TextValue);\n"],"names":["TextValue","id","value","initialTouched","classes","useClasses","labels","dispatchAction","readOnly","useQueryBuilderContext","touched","setTouched","useState","isValid","toString","trim","status","location","rule","text","label","validation","required","autoComplete","t","v","type","e","key","preventDefault","memo"],"mappings":";;;;;AAcO,MAAMA,YAAYA,CAAC;AAAA,EACxBC;AAAAA,EACAC,QAAQ;AAAA,EACRC,iBAAiB;AACH,MAAM;AACd,QAAA;AAAA,IAAEC;AAAAA,MAAYC,WAAW;AAEzB,QAAA;AAAA,IAAEC;AAAAA,IAAQC;AAAAA,IAAgBC;AAAAA,MAAaC,uBAAuB;AAEpE,QAAM,CAACC,SAASC,UAAU,IAAIC,SAAST,cAAc;AAErD,QAAMU,UAAUX,SAAS,QAAQA,MAAMY,WAAWC,KAAW,MAAA;AAEzDC,MAAAA,SAAuBH,UAAU,UAAU;AACtC,WAAA,CAACH,UAAU,YAAYM;AAG9B,SAAA,oBAAC,WACC,WAAWZ,QAAQa,UACnB,OAAOX,OAAOY,KAAKhB,MAAMiB,KAAKC,OAC9B,UAAQ,MACR,QACA,eAAed,OAAOY,KAAKhB,MAAMiB,KAAKE,WAAWC,UACjD,OACA,YAAY;AAAA,IACVC,cAAc;AAAA,EAAA,GAEhB,UAAU,CAACC,GAAGC,MAAM;AACH,mBAAA;AAAA,MACbC,MAAM;AAAA,MACNzB;AAAAA,MACAC,OAAOuB;AAAAA,IAAAA,CACR;AAAA,EACH,GACA,QAAQ,MAAM;AACZd,eAAW,IAAI;AAAA,EAAA,GAEjB,WAAW,CAACgB,MAAW;AACjBA,QAAAA,EAAEC,QAAQ,SAAS;AACrBD,QAAEE,eAAe;AAAA,IACnB;AAAA,EACF,GACA,aAAY,KACZ,SACA,CAAA;AAEN;AAEeC,KAAK9B,SAAS;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { memo } from "react";
|
|
3
|
+
import { useQueryBuilderContext } from "../../Context.js";
|
|
4
4
|
import { TextValue } from "./TextValue/TextValue.js";
|
|
5
5
|
import { DateTimeValue } from "./DateTimeValue/DateTimeValue.js";
|
|
6
6
|
import { NumericValue } from "./NumericValue/NumericValue.js";
|
|
@@ -11,11 +11,11 @@ const Value = ({
|
|
|
11
11
|
operator,
|
|
12
12
|
value: valueProp
|
|
13
13
|
}) => {
|
|
14
|
-
const context = useContext(QueryBuilderContext);
|
|
15
14
|
const {
|
|
16
15
|
attributes,
|
|
17
|
-
initialTouched
|
|
18
|
-
|
|
16
|
+
initialTouched,
|
|
17
|
+
renderers
|
|
18
|
+
} = useQueryBuilderContext();
|
|
19
19
|
const value = attribute && attributes ? {
|
|
20
20
|
...attributes[attribute]
|
|
21
21
|
} : {
|
|
@@ -36,7 +36,12 @@ const Value = ({
|
|
|
36
36
|
}
|
|
37
37
|
case "text":
|
|
38
38
|
case "textarea":
|
|
39
|
+
return /* @__PURE__ */ jsx(TextValue, { id, value: valueProp, initialTouched });
|
|
39
40
|
default: {
|
|
41
|
+
if (type && renderers?.[type]) {
|
|
42
|
+
const Renderer = renderers[type];
|
|
43
|
+
return /* @__PURE__ */ jsx(Renderer, { id, attribute, operator, value: valueProp });
|
|
44
|
+
}
|
|
40
45
|
return /* @__PURE__ */ jsx(TextValue, { id, value: valueProp, initialTouched });
|
|
41
46
|
}
|
|
42
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Value.js","sources":["../../../../../../src/components/QueryBuilder/Rule/Value/Value.tsx"],"sourcesContent":["import { memo
|
|
1
|
+
{"version":3,"file":"Value.js","sources":["../../../../../../src/components/QueryBuilder/Rule/Value/Value.tsx"],"sourcesContent":["import { memo } from \"react\";\n\nimport { useQueryBuilderContext } from \"../../Context\";\nimport { BooleanValue } from \"./BooleanValue\";\nimport { NumericValue } from \"./NumericValue\";\nimport { TextValue } from \"./TextValue\";\nimport { DateTimeValue } from \"./DateTimeValue\";\n\nexport interface ValueProps {\n id: React.Key;\n attribute: string;\n operator?: string;\n value?: any;\n}\n\nexport const Value = ({\n id,\n attribute,\n operator,\n value: valueProp,\n}: ValueProps) => {\n const { attributes, initialTouched, renderers } = useQueryBuilderContext();\n\n const value =\n attribute && attributes ? { ...attributes[attribute] } : { type: null };\n const { type } = value;\n\n switch (type) {\n case \"boolean\": {\n return <BooleanValue id={id} value={!!valueProp} />;\n }\n case \"numeric\": {\n return (\n <NumericValue\n id={id}\n operator={operator}\n value={valueProp}\n initialTouched={initialTouched}\n />\n );\n }\n case \"dateandtime\": {\n return (\n <DateTimeValue\n id={id}\n operator={operator}\n value={valueProp}\n initialTouched={initialTouched}\n />\n );\n }\n case \"text\":\n case \"textarea\":\n return (\n <TextValue id={id} value={valueProp} initialTouched={initialTouched} />\n );\n default: {\n if (type && renderers?.[type]) {\n const Renderer = renderers[type];\n\n return (\n <Renderer\n id={id}\n attribute={attribute}\n operator={operator}\n value={valueProp}\n />\n );\n }\n\n return (\n <TextValue id={id} value={valueProp} initialTouched={initialTouched} />\n );\n }\n }\n};\n\nexport default memo(Value);\n"],"names":["Value","id","attribute","operator","value","valueProp","attributes","initialTouched","renderers","useQueryBuilderContext","type","Renderer","memo"],"mappings":";;;;;;;AAeO,MAAMA,QAAQA,CAAC;AAAA,EACpBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,OAAOC;AACG,MAAM;AACV,QAAA;AAAA,IAAEC;AAAAA,IAAYC;AAAAA,IAAgBC;AAAAA,MAAcC,uBAAuB;AAEnEL,QAAAA,QACJF,aAAaI,aAAa;AAAA,IAAE,GAAGA,WAAWJ,SAAS;AAAA,EAAA,IAAM;AAAA,IAAEQ,MAAM;AAAA,EAAA;AAC7D,QAAA;AAAA,IAAEA;AAAAA,EAASN,IAAAA;AAEjB,UAAQM,MAAI;AAAA,IACV,KAAK,WAAW;AACd,iCAAQ,cAAa,EAAA,IAAQ,OAAO,CAAC,CAACL,UAAa,CAAA;AAAA,IACrD;AAAA,IACA,KAAK,WAAW;AACd,iCACG,cACC,EAAA,IACA,UACA,OAAOA,WACP,eACA,CAAA;AAAA,IAEN;AAAA,IACA,KAAK,eAAe;AAClB,iCACG,eACC,EAAA,IACA,UACA,OAAOA,WACP,eACA,CAAA;AAAA,IAEN;AAAA,IACA,KAAK;AAAA,IACL,KAAK;AACH,aACG,oBAAA,WAAA,EAAU,IAAQ,OAAOA,WAAW,eAAkC,CAAA;AAAA,IAE3E,SAAS;AACHK,UAAAA,QAAQF,YAAYE,IAAI,GAAG;AACvBC,cAAAA,WAAWH,UAAUE,IAAI;AAE/B,mCACG,UACC,EAAA,IACA,WACA,UACA,OAAOL,UACP,CAAA;AAAA,MAEN;AAEA,aACG,oBAAA,WAAA,EAAU,IAAQ,OAAOA,WAAW,eAAkC,CAAA;AAAA,IAE3E;AAAA,EACF;AACF;AAEeO,KAAKZ,KAAK;"}
|