@hitachivantara/uikit-react-lab 3.45.3 → 3.45.6
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/QueryBuilder/QueryBuilder.js +67 -3
- package/dist/QueryBuilder/QueryBuilder.js.map +1 -1
- package/dist/QueryBuilder/RuleGroup/RuleGroup.js +79 -8
- package/dist/QueryBuilder/RuleGroup/RuleGroup.js.map +1 -1
- package/dist/QueryBuilder/RuleGroup/styles.js +5 -5
- package/dist/QueryBuilder/RuleGroup/styles.js.map +1 -1
- package/dist/legacy/QueryBuilder/QueryBuilder.js +67 -3
- package/dist/legacy/QueryBuilder/QueryBuilder.js.map +1 -1
- package/dist/legacy/QueryBuilder/RuleGroup/RuleGroup.js +77 -9
- package/dist/legacy/QueryBuilder/RuleGroup/RuleGroup.js.map +1 -1
- package/dist/legacy/QueryBuilder/RuleGroup/styles.js +5 -4
- package/dist/legacy/QueryBuilder/RuleGroup/styles.js.map +1 -1
- package/dist/modern/QueryBuilder/QueryBuilder.js +67 -3
- package/dist/modern/QueryBuilder/QueryBuilder.js.map +1 -1
- package/dist/modern/QueryBuilder/RuleGroup/RuleGroup.js +77 -9
- package/dist/modern/QueryBuilder/RuleGroup/RuleGroup.js.map +1 -1
- package/dist/modern/QueryBuilder/RuleGroup/styles.js +5 -4
- package/dist/modern/QueryBuilder/RuleGroup/styles.js.map +1 -1
- package/package.json +3 -3
|
@@ -6,12 +6,13 @@ import "core-js/modules/es.array.map.js";
|
|
|
6
6
|
import "core-js/modules/es.object.to-string.js";
|
|
7
7
|
import React, { useCallback, useContext } from "react";
|
|
8
8
|
import clsx from "clsx";
|
|
9
|
+
import { withStyles } from "@material-ui/core";
|
|
9
10
|
import PropTypes from "prop-types";
|
|
10
11
|
import { HvGrid, HvMultiButton, HvButton, HvEmptyState, HvTypography, withTooltip } from "@hitachivantara/uikit-react-core";
|
|
11
12
|
import { Add, Delete, Info } from "@hitachivantara/uikit-react-icons";
|
|
12
13
|
import Context from "../Context";
|
|
13
14
|
import Rule from "../Rule";
|
|
14
|
-
import
|
|
15
|
+
import styles from "./styles";
|
|
15
16
|
|
|
16
17
|
var RuleGroup = function RuleGroup(_ref) {
|
|
17
18
|
var _labels$query, _labels$query$addRule, _labels$query2, _labels$query2$addRul, _labels$query3, _labels$query3$addGro, _labels$query4, _labels$query4$addGro, _labels$query5, _labels$query5$delete, _labels$query6, _labels$query6$delete, _labels$query8, _labels$query8$delete, _labels$query9, _labels$query9$delete, _labels$empty, _labels$empty2, _labels$empty3, _labels$empty4;
|
|
@@ -22,16 +23,15 @@ var RuleGroup = function RuleGroup(_ref) {
|
|
|
22
23
|
_ref$combinator = _ref.combinator,
|
|
23
24
|
combinator = _ref$combinator === void 0 ? "and" : _ref$combinator,
|
|
24
25
|
_ref$rules = _ref.rules,
|
|
25
|
-
rules = _ref$rules === void 0 ? [] : _ref$rules
|
|
26
|
-
|
|
27
|
-
level: level
|
|
28
|
-
});
|
|
26
|
+
rules = _ref$rules === void 0 ? [] : _ref$rules,
|
|
27
|
+
classes = _ref.classes;
|
|
29
28
|
var context = useContext(Context);
|
|
30
29
|
var dispatchAction = context.dispatchAction,
|
|
31
30
|
askAction = context.askAction,
|
|
32
31
|
maxDepth = context.maxDepth,
|
|
33
32
|
combinators = context.combinators,
|
|
34
33
|
labels = context.labels;
|
|
34
|
+
var normalizedMaxDepth = maxDepth - 1;
|
|
35
35
|
var actionButtons = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(HvButton, {
|
|
36
36
|
category: "secondary",
|
|
37
37
|
onClick: function onClick() {
|
|
@@ -40,7 +40,7 @@ var RuleGroup = function RuleGroup(_ref) {
|
|
|
40
40
|
id: id
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
|
-
}, _Add || (_Add = /*#__PURE__*/React.createElement(Add, null)), level === 0 && ((_labels$query = labels.query) === null || _labels$query === void 0 ? void 0 : (_labels$query$addRule = _labels$query.addRule) === null || _labels$query$addRule === void 0 ? void 0 : _labels$query$addRule.label) != null ? (_labels$query2 = labels.query) === null || _labels$query2 === void 0 ? void 0 : (_labels$query2$addRul = _labels$query2.addRule) === null || _labels$query2$addRul === void 0 ? void 0 : _labels$query2$addRul.label : labels.group.addRule.label), level
|
|
43
|
+
}, _Add || (_Add = /*#__PURE__*/React.createElement(Add, null)), level === 0 && ((_labels$query = labels.query) === null || _labels$query === void 0 ? void 0 : (_labels$query$addRule = _labels$query.addRule) === null || _labels$query$addRule === void 0 ? void 0 : _labels$query$addRule.label) != null ? (_labels$query2 = labels.query) === null || _labels$query2 === void 0 ? void 0 : (_labels$query2$addRul = _labels$query2.addRule) === null || _labels$query2$addRul === void 0 ? void 0 : _labels$query2$addRul.label : labels.group.addRule.label), level <= normalizedMaxDepth && /*#__PURE__*/React.createElement(HvButton, {
|
|
44
44
|
category: "secondary",
|
|
45
45
|
onClick: function onClick() {
|
|
46
46
|
dispatchAction({
|
|
@@ -101,7 +101,8 @@ var RuleGroup = function RuleGroup(_ref) {
|
|
|
101
101
|
key: rule.id || Math.random(),
|
|
102
102
|
level: level + 1
|
|
103
103
|
}, rule, {
|
|
104
|
-
id: rule.id
|
|
104
|
+
id: rule.id,
|
|
105
|
+
classes: classes
|
|
105
106
|
}));
|
|
106
107
|
}
|
|
107
108
|
|
|
@@ -136,7 +137,7 @@ var RuleGroup = function RuleGroup(_ref) {
|
|
|
136
137
|
cursor: "pointer",
|
|
137
138
|
textDecoration: "underline"
|
|
138
139
|
}
|
|
139
|
-
}, "".concat((_labels$empty2 = labels.empty) === null || _labels$empty2 === void 0 ? void 0 : _labels$empty2.createCondition)), level
|
|
140
|
+
}, "".concat((_labels$empty2 = labels.empty) === null || _labels$empty2 === void 0 ? void 0 : _labels$empty2.createCondition)), level <= normalizedMaxDepth && /*#__PURE__*/React.createElement(React.Fragment, null, "".concat((_labels$empty3 = labels.empty) === null || _labels$empty3 === void 0 ? void 0 : _labels$empty3.spacer), /*#__PURE__*/React.createElement(HvTypography, {
|
|
140
141
|
variant: "link",
|
|
141
142
|
component: "a",
|
|
142
143
|
onClick: function onClick() {
|
|
@@ -160,10 +161,77 @@ var RuleGroup = function RuleGroup(_ref) {
|
|
|
160
161
|
};
|
|
161
162
|
|
|
162
163
|
process.env.NODE_ENV !== "production" ? RuleGroup.propTypes = {
|
|
164
|
+
/**
|
|
165
|
+
* Override or extend the styles applied to the component.
|
|
166
|
+
* See CSS API tab for more details.
|
|
167
|
+
*/
|
|
168
|
+
classes: PropTypes.shape({
|
|
169
|
+
/**
|
|
170
|
+
* Styles applied to the component root class.
|
|
171
|
+
*/
|
|
172
|
+
root: PropTypes.string,
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Styles applied to the top group container.
|
|
176
|
+
*/
|
|
177
|
+
topGroup: PropTypes.string,
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Styles applied to the sub group containers.
|
|
181
|
+
*/
|
|
182
|
+
subGroup: PropTypes.string,
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Styles applied to the multi-button combinator container.
|
|
186
|
+
*/
|
|
187
|
+
combinator: PropTypes.string,
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Styles applied to the multi-button combinator container on the top group.
|
|
191
|
+
*/
|
|
192
|
+
topCombinator: PropTypes.string,
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Styles applied to each combinator button.
|
|
196
|
+
*/
|
|
197
|
+
combinatorButton: PropTypes.string,
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Styles applied to the remove button.
|
|
201
|
+
*/
|
|
202
|
+
removeButton: PropTypes.string,
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Styles applied to the remove button on the top group.
|
|
206
|
+
*/
|
|
207
|
+
topRemoveButton: PropTypes.string,
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Styles applied to the rules container.
|
|
211
|
+
*/
|
|
212
|
+
rulesContainer: PropTypes.string,
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Styles applied to the sub rules container.
|
|
216
|
+
*/
|
|
217
|
+
subRulesContainer: PropTypes.string,
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Styles applied to the action button container.
|
|
221
|
+
*/
|
|
222
|
+
actionButtonContainer: PropTypes.string,
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Styles applied to the top action button container.
|
|
226
|
+
*/
|
|
227
|
+
topActionButtonContainer: PropTypes.string
|
|
228
|
+
}),
|
|
163
229
|
id: PropTypes.number,
|
|
164
230
|
level: PropTypes.number,
|
|
165
231
|
combinator: PropTypes.string,
|
|
166
232
|
rules: PropTypes.array
|
|
167
233
|
} : void 0;
|
|
168
|
-
export default
|
|
234
|
+
export default withStyles(styles, {
|
|
235
|
+
name: "RuleGroup"
|
|
236
|
+
})(RuleGroup);
|
|
169
237
|
//# sourceMappingURL=RuleGroup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuleGroup.js","names":["React","useCallback","useContext","clsx","PropTypes","HvGrid","HvMultiButton","HvButton","HvEmptyState","HvTypography","withTooltip","Add","Delete","Info","Context","Rule","useStyles","RuleGroup","level","id","combinator","rules","classes","context","dispatchAction","askAction","maxDepth","combinators","labels","actionButtons","type","query","addRule","label","group","addGroup","DeleteIcon","delete","tooltip","onClickCombinator","item","operand","root","topGroup","subGroup","topCombinator","map","combinatorButton","removeButton","topRemoveButton","actions","dialog","ariaLabel","length","rulesContainer","subRulesContainer","rule","index","Math","random","isInvalid","some","r","i","attribute","empty","title","cursor","textDecoration","createCondition","spacer","createGroup","actionButtonContainer","topActionButtonContainer","propTypes","number","string","array"],"sources":["../../../../src/QueryBuilder/RuleGroup/RuleGroup.js"],"sourcesContent":["import React, { useCallback, useContext } from \"react\";\nimport clsx from \"clsx\";\nimport PropTypes from \"prop-types\";\nimport {\n HvGrid,\n HvMultiButton,\n HvButton,\n HvEmptyState,\n HvTypography,\n withTooltip,\n} from \"@hitachivantara/uikit-react-core\";\nimport { Add, Delete, Info } from \"@hitachivantara/uikit-react-icons\";\n\nimport Context from \"../Context\";\nimport Rule from \"../Rule\";\nimport useStyles from \"./styles\";\n\nconst RuleGroup = ({ level = 0, id, combinator = \"and\", rules = [] }) => {\n const classes = useStyles({ level });\n const context = useContext(Context);\n\n const { dispatchAction, askAction, maxDepth, combinators, labels } = context;\n\n const actionButtons = (\n <>\n <HvButton\n category=\"secondary\"\n onClick={() => {\n dispatchAction({ type: \"add-rule\", id });\n }}\n >\n <Add />\n {level === 0 && labels.query?.addRule?.label != null\n ? labels.query?.addRule?.label\n : labels.group.addRule.label}\n </HvButton>\n {level < maxDepth && (\n <HvButton\n category=\"secondary\"\n onClick={() => {\n dispatchAction({ type: \"add-group\", id });\n }}\n >\n <Add />\n {level === 0 && labels.query?.addGroup?.label != null\n ? labels.query?.addGroup?.label\n : labels.group.addGroup.label}\n </HvButton>\n )}\n </>\n );\n\n const DeleteIcon = withTooltip(\n () => <Delete />,\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) => {\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={clsx(classes.root, {\n [classes.topGroup]: level === 0,\n [classes.subGroup]: level !== 0,\n })}\n >\n <HvGrid container>\n <HvGrid item>\n <HvMultiButton className={clsx(classes.combinator, classes.topCombinator)}>\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 >\n {item.label}\n </HvButton>\n ))}\n </HvMultiButton>\n </HvGrid>\n <HvGrid item>\n <HvButton\n icon\n className={clsx(classes.removeButton, classes.topRemoveButton)}\n onClick={() => {\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 >\n <DeleteIcon />\n </HvButton>\n </HvGrid>\n </HvGrid>\n {rules?.length > 0 && (\n <div\n className={clsx(classes.rulesContainer, {\n [classes.subRulesContainer]: level > 0,\n topRulesContainer: level === 0,\n })}\n >\n {rules.map((rule, index) => {\n if (\"combinator\" in rule) {\n return (\n <RuleGroup\n key={rule.id || Math.random()}\n level={level + 1}\n {...rule}\n id={rule.id}\n />\n );\n }\n\n const isInvalid =\n combinator === \"and\" &&\n rules.some((r, i) => {\n if (\"attribute\" in r) {\n if (r.attribute === rule.attribute && r.id !== rule.id && i < index) {\n return true;\n }\n }\n return false;\n });\n\n return (\n <Rule\n key={rule.id || Math.random()}\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 variant=\"link\"\n component=\"a\"\n onClick={() => {\n dispatchAction({ type: \"add-rule\", id });\n }}\n style={{ cursor: \"pointer\", textDecoration: \"underline\" }}\n >\n {`${labels.empty?.createCondition}`}\n </HvTypography>\n {level === 0 && (\n <>\n {`${labels.empty?.spacer}`}\n <HvTypography\n variant=\"link\"\n component=\"a\"\n onClick={() => {\n dispatchAction({ type: \"add-group\", id });\n }}\n style={{ cursor: \"pointer\", textDecoration: \"underline\" }}\n >\n {`${labels.empty?.createGroup}`}\n </HvTypography>\n </>\n )}\n </>\n }\n icon={<Info />}\n />\n )}\n <HvGrid container>\n <HvGrid\n item\n className={clsx(classes.actionButtonContainer, classes.topActionButtonContainer)}\n >\n {actionButtons}\n </HvGrid>\n </HvGrid>\n </div>\n );\n};\n\nRuleGroup.propTypes = {\n id: PropTypes.number,\n level: PropTypes.number,\n combinator: PropTypes.string,\n rules: PropTypes.array,\n};\n\nexport default RuleGroup;\n"],"mappings":";;;;;;AAAA,OAAOA,KAAP,IAAgBC,WAAhB,EAA6BC,UAA7B,QAA+C,OAA/C;AACA,OAAOC,IAAP,MAAiB,MAAjB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SACEC,MADF,EAEEC,aAFF,EAGEC,QAHF,EAIEC,YAJF,EAKEC,YALF,EAMEC,WANF,QAOO,kCAPP;AAQA,SAASC,GAAT,EAAcC,MAAd,EAAsBC,IAAtB,QAAkC,mCAAlC;AAEA,OAAOC,OAAP,MAAoB,YAApB;AACA,OAAOC,IAAP,MAAiB,SAAjB;AACA,OAAOC,SAAP,MAAsB,UAAtB;;AAEA,IAAMC,SAAS,GAAG,SAAZA,SAAY,OAAuD;EAAA;;EAAA,sBAApDC,KAAoD;EAAA,IAApDA,KAAoD,2BAA5C,CAA4C;EAAA,IAAzCC,EAAyC,QAAzCA,EAAyC;EAAA,2BAArCC,UAAqC;EAAA,IAArCA,UAAqC,gCAAxB,KAAwB;EAAA,sBAAjBC,KAAiB;EAAA,IAAjBA,KAAiB,2BAAT,EAAS;EACvE,IAAMC,OAAO,GAAGN,SAAS,CAAC;IAAEE,KAAK,EAALA;EAAF,CAAD,CAAzB;EACA,IAAMK,OAAO,GAAGrB,UAAU,CAACY,OAAD,CAA1B;EAEA,IAAQU,cAAR,GAAqED,OAArE,CAAQC,cAAR;EAAA,IAAwBC,SAAxB,GAAqEF,OAArE,CAAwBE,SAAxB;EAAA,IAAmCC,QAAnC,GAAqEH,OAArE,CAAmCG,QAAnC;EAAA,IAA6CC,WAA7C,GAAqEJ,OAArE,CAA6CI,WAA7C;EAAA,IAA0DC,MAA1D,GAAqEL,OAArE,CAA0DK,MAA1D;EAEA,IAAMC,aAAa,gBACjB,uDACE,oBAAC,QAAD;IACE,QAAQ,EAAC,WADX;IAEE,OAAO,EAAE,mBAAM;MACbL,cAAc,CAAC;QAAEM,IAAI,EAAE,UAAR;QAAoBX,EAAE,EAAFA;MAApB,CAAD,CAAd;IACD;EAJH,gCAME,oBAAC,GAAD,OANF,GAOGD,KAAK,KAAK,CAAV,IAAe,kBAAAU,MAAM,CAACG,KAAP,yFAAcC,OAAd,gFAAuBC,KAAvB,KAAgC,IAA/C,qBACGL,MAAM,CAACG,KADV,4EACG,eAAcC,OADjB,0DACG,sBAAuBC,KAD1B,GAEGL,MAAM,CAACM,KAAP,CAAaF,OAAb,CAAqBC,KAT3B,CADF,EAYGf,KAAK,GAAGQ,QAAR,iBACC,oBAAC,QAAD;IACE,QAAQ,EAAC,WADX;IAEE,OAAO,EAAE,mBAAM;MACbF,cAAc,CAAC;QAAEM,IAAI,EAAE,WAAR;QAAqBX,EAAE,EAAFA;MAArB,CAAD,CAAd;IACD;EAJH,kCAME,oBAAC,GAAD,OANF,GAOGD,KAAK,KAAK,CAAV,IAAe,mBAAAU,MAAM,CAACG,KAAP,2FAAcI,QAAd,gFAAwBF,KAAxB,KAAiC,IAAhD,qBACGL,MAAM,CAACG,KADV,4EACG,eAAcI,QADjB,0DACG,sBAAwBF,KAD3B,GAEGL,MAAM,CAACM,KAAP,CAAaC,QAAb,CAAsBF,KAT5B,CAbJ,CADF;EA6BA,IAAMG,UAAU,GAAG1B,WAAW,CAC5B;IAAA,0CAAM,oBAAC,MAAD,OAAN;EAAA,CAD4B,EAE5BQ,KAAK,KAAK,CAAV,sBAAeU,MAAM,CAACG,KAAtB,oEAAe,eAAcM,MAA7B,kDAAe,sBAAsBC,OAArC,qBACIV,MAAM,CAACG,KADX,4EACI,eAAcM,MADlB,0DACI,sBAAsBC,OAD1B,GAEIV,MAAM,CAACM,KAAP,CAAaG,MAAb,CAAoBC,OAJI,EAK5B,KAL4B,CAA9B;EAQA,IAAMC,iBAAiB,GAAGtC,WAAW,CACnC,UAACuC,IAAD,EAAU;IACRhB,cAAc,CAAC;MACbM,IAAI,EAAE,gBADO;MAEbX,EAAE,EAAFA,EAFa;MAGbC,UAAU,EAAEoB,IAAI,CAACC;IAHJ,CAAD,CAAd;EAKD,CAPkC,EAQnC,CAACjB,cAAD,EAAiBL,EAAjB,CARmC,CAArC;EAWA,oBACE;IACE,SAAS,EAAEhB,IAAI,CAACmB,OAAO,CAACoB,IAAT,EACOxB,KAAK,KAAK,CADjB,GACZI,OAAO,CAACqB,QADI,GAEZrB,OAAO,CAACsB,QAFI;EADjB,gBAME,oBAAC,MAAD;IAAQ,SAAS;EAAjB,gBACE,oBAAC,MAAD;IAAQ,IAAI;EAAZ,gBACE,oBAAC,aAAD;IAAe,SAAS,EAAEzC,IAAI,CAACmB,OAAO,CAACF,UAAT,EAAqBE,OAAO,CAACuB,aAA7B;EAA9B,GACGlB,WAAW,CAACmB,GAAZ,CAAgB,UAACN,IAAD;IAAA,oBACf,oBAAC,QAAD;MACE,GAAG,EAAEA,IAAI,CAACC,OADZ;MAEE,SAAS,EAAEnB,OAAO,CAACyB,gBAFrB;MAGE,QAAQ,EAAEP,IAAI,CAACC,OAAL,KAAiBrB,UAH7B;MAIE,OAAO,EAAE;QAAA,OAAMoB,IAAI,CAACC,OAAL,IAAgBF,iBAAiB,CAACC,IAAD,CAAvC;MAAA;IAJX,GAMGA,IAAI,CAACP,KANR,CADe;EAAA,CAAhB,CADH,CADF,CADF,eAeE,oBAAC,MAAD;IAAQ,IAAI;EAAZ,gBACE,oBAAC,QAAD;IACE,IAAI,MADN;IAEE,SAAS,EAAE9B,IAAI,CAACmB,OAAO,CAAC0B,YAAT,EAAuB1B,OAAO,CAAC2B,eAA/B,CAFjB;IAGE,OAAO,EAAE,mBAAM;MAAA;;MACbxB,SAAS,CAAC;QACRyB,OAAO,EAAE,CAAC;UAAEpB,IAAI,EAAE,aAAR;UAAuBX,EAAE,EAAFA;QAAvB,CAAD,CADD;QAERgC,MAAM,EACJjC,KAAK,KAAK,CAAV,IAAe,mBAAAU,MAAM,CAACG,KAAP,kEAAcM,MAAd,KAAwB,IAAvC,GACIT,MAAM,CAACG,KAAP,CAAaM,MADjB,GAEIT,MAAM,CAACM,KAAP,CAAaG;MALX,CAAD,CAAT;IAOD,CAXH;IAYE,cACEnB,KAAK,KAAK,CAAV,sBAAeU,MAAM,CAACG,KAAtB,oEAAe,eAAcM,MAA7B,kDAAe,sBAAsBe,SAArC,qBACIxB,MAAM,CAACG,KADX,4EACI,eAAcM,MADlB,0DACI,sBAAsBe,SAD1B,GAEIxB,MAAM,CAACM,KAAP,CAAaG,MAAb,CAAoBe;EAf5B,gBAkBE,oBAAC,UAAD,OAlBF,CADF,CAfF,CANF,EA4CG,CAAA/B,KAAK,SAAL,IAAAA,KAAK,WAAL,YAAAA,KAAK,CAAEgC,MAAP,IAAgB,CAAhB,iBACC;IACE,SAAS,EAAElD,IAAI,CAACmB,OAAO,CAACgC,cAAT,EACgBpC,KAAK,GAAG,CADxB,IACZI,OAAO,CAACiC,iBADI,EAEMrC,KAAK,KAAK,CAFhB;EADjB,GAMGG,KAAK,CAACyB,GAAN,CAAU,UAACU,IAAD,EAAOC,KAAP,EAAiB;IAC1B,IAAI,gBAAgBD,IAApB,EAA0B;MACxB,oBACE,oBAAC,SAAD;QACE,GAAG,EAAEA,IAAI,CAACrC,EAAL,IAAWuC,IAAI,CAACC,MAAL,EADlB;QAEE,KAAK,EAAEzC,KAAK,GAAG;MAFjB,GAGMsC,IAHN;QAIE,EAAE,EAAEA,IAAI,CAACrC;MAJX,GADF;IAQD;;IAED,IAAMyC,SAAS,GACbxC,UAAU,KAAK,KAAf,IACAC,KAAK,CAACwC,IAAN,CAAW,UAACC,CAAD,EAAIC,CAAJ,EAAU;MACnB,IAAI,eAAeD,CAAnB,EAAsB;QACpB,IAAIA,CAAC,CAACE,SAAF,KAAgBR,IAAI,CAACQ,SAArB,IAAkCF,CAAC,CAAC3C,EAAF,KAASqC,IAAI,CAACrC,EAAhD,IAAsD4C,CAAC,GAAGN,KAA9D,EAAqE;UACnE,OAAO,IAAP;QACD;MACF;;MACD,OAAO,KAAP;IACD,CAPD,CAFF;IAWA,oBACE,oBAAC,IAAD;MACE,GAAG,EAAED,IAAI,CAACrC,EAAL,IAAWuC,IAAI,CAACC,MAAL;IADlB,GAEMH,IAFN;MAGE,SAAS,EAAEI,SAHb;MAIE,EAAE,EAAEJ,IAAI,CAACrC,EAJX;MAKE,UAAU,EAAEC;IALd,GADF;EASD,CAhCA,CANH,CA7CJ,EAsFG,CAAAC,KAAK,SAAL,IAAAA,KAAK,WAAL,YAAAA,KAAK,CAAEgC,MAAP,MAAkB,CAAlB,iBACC,oBAAC,YAAD;IACE,KAAK,mBAAEzB,MAAM,CAACqC,KAAT,kDAAE,cAAcC,KADvB;IAEE,OAAO,eACL,uDACE,oBAAC,YAAD;MACE,OAAO,EAAC,MADV;MAEE,SAAS,EAAC,GAFZ;MAGE,OAAO,EAAE,mBAAM;QACb1C,cAAc,CAAC;UAAEM,IAAI,EAAE,UAAR;UAAoBX,EAAE,EAAFA;QAApB,CAAD,CAAd;MACD,CALH;MAME,KAAK,EAAE;QAAEgD,MAAM,EAAE,SAAV;QAAqBC,cAAc,EAAE;MAArC;IANT,+BAQMxC,MAAM,CAACqC,KARb,mDAQM,eAAcI,eARpB,EADF,EAWGnD,KAAK,KAAK,CAAV,iBACC,sEACMU,MAAM,CAACqC,KADb,mDACM,eAAcK,MADpB,gBAEE,oBAAC,YAAD;MACE,OAAO,EAAC,MADV;MAEE,SAAS,EAAC,GAFZ;MAGE,OAAO,EAAE,mBAAM;QACb9C,cAAc,CAAC;UAAEM,IAAI,EAAE,WAAR;UAAqBX,EAAE,EAAFA;QAArB,CAAD,CAAd;MACD,CALH;MAME,KAAK,EAAE;QAAEgD,MAAM,EAAE,SAAV;QAAqBC,cAAc,EAAE;MAArC;IANT,+BAQMxC,MAAM,CAACqC,KARb,mDAQM,eAAcM,WARpB,EAFF,CAZJ,CAHJ;IA+BE,IAAI,iCAAE,oBAAC,IAAD,OAAF;EA/BN,EAvFJ,eAyHE,oBAAC,MAAD;IAAQ,SAAS;EAAjB,gBACE,oBAAC,MAAD;IACE,IAAI,MADN;IAEE,SAAS,EAAEpE,IAAI,CAACmB,OAAO,CAACkD,qBAAT,EAAgClD,OAAO,CAACmD,wBAAxC;EAFjB,GAIG5C,aAJH,CADF,CAzHF,CADF;AAoID,CA1LD;;AA4LA,wCAAAZ,SAAS,CAACyD,SAAV,GAAsB;EACpBvD,EAAE,EAAEf,SAAS,CAACuE,MADM;EAEpBzD,KAAK,EAAEd,SAAS,CAACuE,MAFG;EAGpBvD,UAAU,EAAEhB,SAAS,CAACwE,MAHF;EAIpBvD,KAAK,EAAEjB,SAAS,CAACyE;AAJG,CAAtB;AAOA,eAAe5D,SAAf"}
|
|
1
|
+
{"version":3,"file":"RuleGroup.js","names":["React","useCallback","useContext","clsx","withStyles","PropTypes","HvGrid","HvMultiButton","HvButton","HvEmptyState","HvTypography","withTooltip","Add","Delete","Info","Context","Rule","styles","RuleGroup","level","id","combinator","rules","classes","context","dispatchAction","askAction","maxDepth","combinators","labels","normalizedMaxDepth","actionButtons","type","query","addRule","label","group","addGroup","DeleteIcon","delete","tooltip","onClickCombinator","item","operand","root","topGroup","subGroup","topCombinator","map","combinatorButton","removeButton","topRemoveButton","actions","dialog","ariaLabel","length","rulesContainer","subRulesContainer","rule","index","Math","random","isInvalid","some","r","i","attribute","empty","title","cursor","textDecoration","createCondition","spacer","createGroup","actionButtonContainer","topActionButtonContainer","propTypes","shape","string","number","array","name"],"sources":["../../../../src/QueryBuilder/RuleGroup/RuleGroup.js"],"sourcesContent":["import React, { useCallback, useContext } from \"react\";\nimport clsx from \"clsx\";\nimport { withStyles } from \"@material-ui/core\";\nimport PropTypes from \"prop-types\";\nimport {\n HvGrid,\n HvMultiButton,\n HvButton,\n HvEmptyState,\n HvTypography,\n withTooltip,\n} from \"@hitachivantara/uikit-react-core\";\nimport { Add, Delete, Info } from \"@hitachivantara/uikit-react-icons\";\n\nimport Context from \"../Context\";\nimport Rule from \"../Rule\";\nimport styles from \"./styles\";\n\nconst RuleGroup = ({ level = 0, id, combinator = \"and\", rules = [], classes }) => {\n const context = useContext(Context);\n\n const { dispatchAction, askAction, maxDepth, combinators, labels } = context;\n const normalizedMaxDepth = maxDepth - 1;\n\n const actionButtons = (\n <>\n <HvButton\n category=\"secondary\"\n onClick={() => {\n dispatchAction({ type: \"add-rule\", id });\n }}\n >\n <Add />\n {level === 0 && labels.query?.addRule?.label != null\n ? labels.query?.addRule?.label\n : labels.group.addRule.label}\n </HvButton>\n {level <= normalizedMaxDepth && (\n <HvButton\n category=\"secondary\"\n onClick={() => {\n dispatchAction({ type: \"add-group\", id });\n }}\n >\n <Add />\n {level === 0 && labels.query?.addGroup?.label != null\n ? labels.query?.addGroup?.label\n : labels.group.addGroup.label}\n </HvButton>\n )}\n </>\n );\n\n const DeleteIcon = withTooltip(\n () => <Delete />,\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) => {\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={clsx(classes.root, {\n [classes.topGroup]: level === 0,\n [classes.subGroup]: level !== 0,\n })}\n >\n <HvGrid container>\n <HvGrid item>\n <HvMultiButton className={clsx(classes.combinator, classes.topCombinator)}>\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 >\n {item.label}\n </HvButton>\n ))}\n </HvMultiButton>\n </HvGrid>\n <HvGrid item>\n <HvButton\n icon\n className={clsx(classes.removeButton, classes.topRemoveButton)}\n onClick={() => {\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 >\n <DeleteIcon />\n </HvButton>\n </HvGrid>\n </HvGrid>\n {rules?.length > 0 && (\n <div\n className={clsx(classes.rulesContainer, {\n [classes.subRulesContainer]: level > 0,\n topRulesContainer: level === 0,\n })}\n >\n {rules.map((rule, index) => {\n if (\"combinator\" in rule) {\n return (\n <RuleGroup\n key={rule.id || Math.random()}\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 (r.attribute === rule.attribute && r.id !== rule.id && i < index) {\n return true;\n }\n }\n return false;\n });\n\n return (\n <Rule\n key={rule.id || Math.random()}\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 variant=\"link\"\n component=\"a\"\n onClick={() => {\n dispatchAction({ type: \"add-rule\", id });\n }}\n style={{ cursor: \"pointer\", textDecoration: \"underline\" }}\n >\n {`${labels.empty?.createCondition}`}\n </HvTypography>\n {level <= normalizedMaxDepth && (\n <>\n {`${labels.empty?.spacer}`}\n <HvTypography\n variant=\"link\"\n component=\"a\"\n onClick={() => {\n dispatchAction({ type: \"add-group\", id });\n }}\n style={{ cursor: \"pointer\", textDecoration: \"underline\" }}\n >\n {`${labels.empty?.createGroup}`}\n </HvTypography>\n </>\n )}\n </>\n }\n icon={<Info />}\n />\n )}\n <HvGrid container>\n <HvGrid\n item\n className={clsx(classes.actionButtonContainer, classes.topActionButtonContainer)}\n >\n {actionButtons}\n </HvGrid>\n </HvGrid>\n </div>\n );\n};\n\nRuleGroup.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n * See CSS API tab for more details.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the component root class.\n */\n root: PropTypes.string,\n /**\n * Styles applied to the top group container.\n */\n topGroup: PropTypes.string,\n /**\n * Styles applied to the sub group containers.\n */\n subGroup: PropTypes.string,\n /**\n * Styles applied to the multi-button combinator container.\n */\n combinator: PropTypes.string,\n /**\n * Styles applied to the multi-button combinator container on the top group.\n */\n topCombinator: PropTypes.string,\n /**\n * Styles applied to each combinator button.\n */\n combinatorButton: PropTypes.string,\n /**\n * Styles applied to the remove button.\n */\n removeButton: PropTypes.string,\n /**\n * Styles applied to the remove button on the top group.\n */\n topRemoveButton: PropTypes.string,\n /**\n * Styles applied to the rules container.\n */\n rulesContainer: PropTypes.string,\n /**\n * Styles applied to the sub rules container.\n */\n subRulesContainer: PropTypes.string,\n /**\n * Styles applied to the action button container.\n */\n actionButtonContainer: PropTypes.string,\n /**\n * Styles applied to the top action button container.\n */\n topActionButtonContainer: PropTypes.string,\n }),\n id: PropTypes.number,\n level: PropTypes.number,\n combinator: PropTypes.string,\n rules: PropTypes.array,\n};\n\nexport default withStyles(styles, { name: \"RuleGroup\" })(RuleGroup);\n"],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
var useStyles = makeStyles(function (theme) {
|
|
1
|
+
var styles = function styles(theme) {
|
|
3
2
|
return {
|
|
4
3
|
root: {
|
|
5
4
|
position: "relative",
|
|
@@ -11,6 +10,7 @@ var useStyles = makeStyles(function (theme) {
|
|
|
11
10
|
subGroup: {
|
|
12
11
|
margin: "40px 14px 32px 20px",
|
|
13
12
|
minHeight: 120,
|
|
13
|
+
paddingBottom: 60,
|
|
14
14
|
"&::before": {
|
|
15
15
|
content: '""',
|
|
16
16
|
position: "absolute",
|
|
@@ -79,6 +79,7 @@ var useStyles = makeStyles(function (theme) {
|
|
|
79
79
|
width: "100%"
|
|
80
80
|
}
|
|
81
81
|
};
|
|
82
|
-
}
|
|
83
|
-
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
export default styles;
|
|
84
85
|
//# sourceMappingURL=styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","names":["
|
|
1
|
+
{"version":3,"file":"styles.js","names":["styles","theme","root","position","padding","hv","spacing","sm","marginTop","marginBottom","border","palette","atmosphere","atmo4","subGroup","margin","minHeight","paddingBottom","content","zIndex","width","height","borderBottom","borderLeft","top","left","topGroup","backgroundColor","maxWidth","minWidth","combinator","topCombinator","combinatorButton","actionButtonContainer","marginLeft","topActionButtonContainer","bottom","md","right","removeButton","topRemoveButton","atmo2","rulesContainer","subRulesContainer","paddingLeft","paddingTop"],"sources":["../../../../src/QueryBuilder/RuleGroup/styles.js"],"sourcesContent":["const styles = (theme) => ({\n root: {\n position: \"relative\",\n padding: theme.hv.spacing.sm,\n\n marginTop: 12,\n marginBottom: 32,\n\n border: `1px solid ${theme.hv.palette.atmosphere.atmo4}`,\n },\n subGroup: {\n margin: \"40px 14px 32px 20px\",\n minHeight: 120,\n paddingBottom: 60,\n\n \"&::before\": {\n content: '\"\"',\n position: \"absolute\",\n zIndex: 2,\n\n width: 21,\n height: 36,\n\n borderBottom: `1px solid ${theme.hv.palette.atmosphere.atmo4}`,\n borderLeft: `1px solid ${theme.hv.palette.atmosphere.atmo4}`,\n\n top: -38,\n left: -42,\n },\n \":not(.topRulesContainer)>&:last-child::after\": {\n content: '\"\"',\n position: \"absolute\",\n zIndex: 1,\n\n width: 32,\n height: \"100%\",\n\n borderLeft: `1px solid ${theme.hv.palette.atmosphere.atmo4}`,\n\n top: 0,\n left: -22,\n },\n },\n topGroup: {\n margin: theme.hv.spacing.sm,\n backgroundColor: \"transparent\",\n maxWidth: \"100%\",\n minWidth: 740,\n\n paddingBottom: theme.hv.spacing.sm * 3,\n },\n\n combinator: {\n minWidth: 80,\n },\n topCombinator: {\n position: \"absolute\",\n top: -theme.hv.spacing.sm,\n left: -theme.hv.spacing.sm,\n },\n\n combinatorButton: {},\n\n actionButtonContainer: {\n marginLeft: \"auto\",\n\n \"&>*\": {\n marginLeft: theme.hv.spacing.sm,\n },\n },\n topActionButtonContainer: {\n position: \"absolute\",\n bottom: -theme.hv.spacing.md,\n right: theme.hv.spacing.sm,\n },\n\n removeButton: {},\n topRemoveButton: {\n position: \"absolute\",\n top: -16,\n right: -16,\n backgroundColor: theme.hv.palette.atmosphere.atmo2,\n },\n\n rulesContainer: {},\n\n subRulesContainer: {\n borderLeft: `1px solid ${theme.hv.palette.atmosphere.atmo4}`,\n\n marginLeft: theme.hv.spacing.sm,\n marginBottom: theme.hv.spacing.md,\n paddingLeft: theme.hv.spacing.sm,\n\n paddingTop: 7,\n\n position: \"relative\",\n left: -41,\n\n width: \"100%\",\n },\n});\n\nexport default styles;\n"],"mappings":"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"}
|
|
@@ -24,7 +24,8 @@ const HvQueryBuilder = ({
|
|
|
24
24
|
operators,
|
|
25
25
|
combinators,
|
|
26
26
|
maxDepth = 1,
|
|
27
|
-
labels
|
|
27
|
+
labels,
|
|
28
|
+
classes
|
|
28
29
|
}) => {
|
|
29
30
|
const [pendingAction, askAction] = useState();
|
|
30
31
|
const currentAttributes = useRef();
|
|
@@ -79,7 +80,8 @@ const HvQueryBuilder = ({
|
|
|
79
80
|
level: 0,
|
|
80
81
|
id: state.id,
|
|
81
82
|
combinator: state.combinator,
|
|
82
|
-
rules: state.rules
|
|
83
|
+
rules: state.rules,
|
|
84
|
+
classes: classes
|
|
83
85
|
}), /*#__PURE__*/React.createElement(ConfirmationDialog, {
|
|
84
86
|
isOpen: pendingAction != null,
|
|
85
87
|
onConfirm: onConfirmHandler,
|
|
@@ -94,8 +96,70 @@ const HvQueryBuilder = ({
|
|
|
94
96
|
|
|
95
97
|
process.env.NODE_ENV !== "production" ? HvQueryBuilder.propTypes = {
|
|
96
98
|
/**
|
|
97
|
-
*
|
|
99
|
+
* Override or extend the styles applied to the component.
|
|
100
|
+
* See CSS API tab for more details.
|
|
98
101
|
*/
|
|
102
|
+
classes: PropTypes.shape({
|
|
103
|
+
/**
|
|
104
|
+
* Styles applied to the component root class.
|
|
105
|
+
*/
|
|
106
|
+
root: PropTypes.string,
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Styles applied to the top group container.
|
|
110
|
+
*/
|
|
111
|
+
topGroup: PropTypes.string,
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Styles applied to the sub group containers.
|
|
115
|
+
*/
|
|
116
|
+
subGroup: PropTypes.string,
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Styles applied to the multi-button combinator container.
|
|
120
|
+
*/
|
|
121
|
+
combinator: PropTypes.string,
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Styles applied to the multi-button combinator container on the top group.
|
|
125
|
+
*/
|
|
126
|
+
topCombinator: PropTypes.string,
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Styles applied to each combinator button.
|
|
130
|
+
*/
|
|
131
|
+
combinatorButton: PropTypes.string,
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Styles applied to the remove button.
|
|
135
|
+
*/
|
|
136
|
+
removeButton: PropTypes.string,
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Styles applied to the remove button on the top group.
|
|
140
|
+
*/
|
|
141
|
+
topRemoveButton: PropTypes.string,
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Styles applied to the rules container.
|
|
145
|
+
*/
|
|
146
|
+
rulesContainer: PropTypes.string,
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Styles applied to the sub rules container.
|
|
150
|
+
*/
|
|
151
|
+
subRulesContainer: PropTypes.string,
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Styles applied to the action button container.
|
|
155
|
+
*/
|
|
156
|
+
actionButtonContainer: PropTypes.string,
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Styles applied to the top action button container.
|
|
160
|
+
*/
|
|
161
|
+
topActionButtonContainer: PropTypes.string
|
|
162
|
+
}),
|
|
99
163
|
attributes: PropTypes.shape({
|
|
100
164
|
key: PropTypes.shape({
|
|
101
165
|
id: PropTypes.number,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBuilder.js","names":["React","useEffect","useMemo","useReducer","useRef","useState","useContext","PropTypes","isEqual","cloneDeep","withStyles","Context","RuleGroup","ConfirmationDialog","emptyGroup","clearNodeIds","reducer","styles","HvQueryBuilder","attributes","query","onChange","operators","combinators","maxDepth","labels","pendingAction","askAction","currentAttributes","state","dispatchAction","initialState","prevState","setPrevState","defaultcontext","context","initialTouched","current","type","onConfirmHandler","undefined","actions","forEach","action","onCancelHandler","id","combinator","rules","dialog","dialogTitle","dialogMessage","dialogConfirm","dialogCancel","dialogCloseTooltip","propTypes","shape","key","number","label","string","isRequired","value","any","order","arrayOf","operator","operand","attribute","func","instanceOf","Object","name"],"sources":["../../../src/QueryBuilder/QueryBuilder.js"],"sourcesContent":["import React, { useEffect, useMemo, useReducer, useRef, useState, useContext } from \"react\";\nimport PropTypes from \"prop-types\";\nimport isEqual from \"lodash/isEqual\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport { withStyles } from \"@material-ui/core\";\n\nimport Context from \"./Context\";\nimport RuleGroup from \"./RuleGroup\";\nimport ConfirmationDialog from \"./ConfirmationDialog\";\nimport { emptyGroup, clearNodeIds } from \"./utils\";\nimport reducer from \"./utils/reducer\";\nimport styles from \"./styles\";\n\n/**\n * **HvQueryBuilder** component allows you to create conditions and group them using logical operators.\n * It outputs a structured set of rules which can be easily parsed to create SQL/NoSQL/whatever queries.\n *\n * **PLEASE NOTE**: This component implementation is still a WIP. There might be breaking changes.\n */\nconst HvQueryBuilder = ({\n attributes = [],\n query,\n onChange,\n operators,\n combinators,\n maxDepth = 1,\n labels,\n}) => {\n const [pendingAction, askAction] = useState();\n const currentAttributes = useRef();\n const [state, dispatchAction] = useReducer(\n reducer,\n query,\n (initialState) => initialState || emptyGroup()\n );\n\n const initialState = query === state;\n const [prevState, setPrevState] = useState();\n\n const defaultcontext = useContext(Context);\n\n const context = useMemo(\n () => ({\n dispatchAction,\n askAction,\n attributes,\n operators: operators ?? defaultcontext.operators,\n combinators: combinators ?? defaultcontext.combinators,\n maxDepth: maxDepth ?? defaultcontext.maxDepth,\n labels: labels ?? defaultcontext.labels,\n initialTouched: initialState,\n }),\n [\n attributes,\n operators,\n defaultcontext.operators,\n defaultcontext.combinators,\n defaultcontext.maxDepth,\n defaultcontext.labels,\n combinators,\n maxDepth,\n labels,\n initialState,\n ]\n );\n\n useEffect(() => {\n if (currentAttributes.current == null) {\n // first run, nothing to do\n currentAttributes.current = attributes;\n } else if (currentAttributes.current !== attributes) {\n // attributes changed, the existing query is almost certain invalid, so reset it\n currentAttributes.current = attributes;\n dispatchAction({ type: \"reset-query\" });\n }\n }, [attributes]);\n\n // Propagate the change if the query is modified.\n useEffect(() => {\n if (!initialState && !isEqual(state, prevState)) {\n onChange?.(clearNodeIds(state));\n setPrevState(cloneDeep(state));\n }\n }, [state, prevState, initialState, onChange]);\n\n const onConfirmHandler = () => {\n if (pendingAction) {\n askAction(undefined);\n pendingAction.actions.forEach((action) => dispatchAction(action));\n }\n };\n\n const onCancelHandler = () => {\n askAction(undefined);\n };\n\n return (\n <Context.Provider value={context}>\n <RuleGroup level={0} id={state.id} combinator={state.combinator} rules={state.rules} />\n <ConfirmationDialog\n isOpen={pendingAction != null}\n onConfirm={onConfirmHandler}\n onCancel={onCancelHandler}\n title={pendingAction?.dialog.dialogTitle || \"\"}\n message={pendingAction?.dialog.dialogMessage || \"\"}\n confirmButtonLabel={pendingAction?.dialog.dialogConfirm || \"\"}\n cancelButtonLabel={pendingAction?.dialog.dialogCancel || \"\"}\n closeButtonTooltip={pendingAction?.dialog.dialogCloseTooltip || \"\"}\n />\n </Context.Provider>\n );\n};\n\nHvQueryBuilder.propTypes = {\n /**\n * The query rules attributes.\n */\n attributes: PropTypes.shape({\n key: PropTypes.shape({\n id: PropTypes.number,\n label: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n value: PropTypes.any,\n order: PropTypes.number,\n }),\n }).isRequired,\n /**\n * The query rules operators by attribute type and combinator.\n */\n operators: PropTypes.shape({\n type: PropTypes.arrayOf(\n PropTypes.shape({\n operator: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n combinators: PropTypes.arrayOf(PropTypes.string).isRequired,\n })\n ),\n }),\n /**\n * The query combinators operands.\n */\n combinators: PropTypes.arrayOf(\n PropTypes.shape({\n operand: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n })\n ),\n /**\n * The initial query representation.\n */\n query: PropTypes.shape({\n id: PropTypes.number,\n combinator: PropTypes.string.isRequired,\n rules: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number,\n attribute: PropTypes.string,\n operator: PropTypes.string,\n value: PropTypes.any,\n })\n ).isRequired,\n }),\n /**\n * Callback fired when query changes.\n */\n onChange: PropTypes.func,\n /**\n * Max depth of nested query groups.\n */\n maxDepth: PropTypes.number,\n /**\n * An object containing all the labels.\n */\n labels: PropTypes.instanceOf(Object),\n};\n\nexport default withStyles(styles, { name: \"HvQueryBuilder\" })(HvQueryBuilder);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"QueryBuilder.js","names":["React","useEffect","useMemo","useReducer","useRef","useState","useContext","PropTypes","isEqual","cloneDeep","withStyles","Context","RuleGroup","ConfirmationDialog","emptyGroup","clearNodeIds","reducer","styles","HvQueryBuilder","attributes","query","onChange","operators","combinators","maxDepth","labels","classes","pendingAction","askAction","currentAttributes","state","dispatchAction","initialState","prevState","setPrevState","defaultcontext","context","initialTouched","current","type","onConfirmHandler","undefined","actions","forEach","action","onCancelHandler","id","combinator","rules","dialog","dialogTitle","dialogMessage","dialogConfirm","dialogCancel","dialogCloseTooltip","propTypes","shape","root","string","topGroup","subGroup","topCombinator","combinatorButton","removeButton","topRemoveButton","rulesContainer","subRulesContainer","actionButtonContainer","topActionButtonContainer","key","number","label","isRequired","value","any","order","arrayOf","operator","operand","attribute","func","instanceOf","Object","name"],"sources":["../../../src/QueryBuilder/QueryBuilder.js"],"sourcesContent":["import React, { useEffect, useMemo, useReducer, useRef, useState, useContext } from \"react\";\nimport PropTypes from \"prop-types\";\nimport isEqual from \"lodash/isEqual\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport { withStyles } from \"@material-ui/core\";\n\nimport Context from \"./Context\";\nimport RuleGroup from \"./RuleGroup\";\nimport ConfirmationDialog from \"./ConfirmationDialog\";\nimport { emptyGroup, clearNodeIds } from \"./utils\";\nimport reducer from \"./utils/reducer\";\nimport styles from \"./styles\";\n\n/**\n * **HvQueryBuilder** component allows you to create conditions and group them using logical operators.\n * It outputs a structured set of rules which can be easily parsed to create SQL/NoSQL/whatever queries.\n *\n * **PLEASE NOTE**: This component implementation is still a WIP. There might be breaking changes.\n */\nconst HvQueryBuilder = ({\n attributes = [],\n query,\n onChange,\n operators,\n combinators,\n maxDepth = 1,\n labels,\n classes,\n}) => {\n const [pendingAction, askAction] = useState();\n const currentAttributes = useRef();\n const [state, dispatchAction] = useReducer(\n reducer,\n query,\n (initialState) => initialState || emptyGroup()\n );\n\n const initialState = query === state;\n const [prevState, setPrevState] = useState();\n\n const defaultcontext = useContext(Context);\n\n const context = useMemo(\n () => ({\n dispatchAction,\n askAction,\n attributes,\n operators: operators ?? defaultcontext.operators,\n combinators: combinators ?? defaultcontext.combinators,\n maxDepth: maxDepth ?? defaultcontext.maxDepth,\n labels: labels ?? defaultcontext.labels,\n initialTouched: initialState,\n }),\n [\n attributes,\n operators,\n defaultcontext.operators,\n defaultcontext.combinators,\n defaultcontext.maxDepth,\n defaultcontext.labels,\n combinators,\n maxDepth,\n labels,\n initialState,\n ]\n );\n\n useEffect(() => {\n if (currentAttributes.current == null) {\n // first run, nothing to do\n currentAttributes.current = attributes;\n } else if (currentAttributes.current !== attributes) {\n // attributes changed, the existing query is almost certain invalid, so reset it\n currentAttributes.current = attributes;\n dispatchAction({ type: \"reset-query\" });\n }\n }, [attributes]);\n\n // Propagate the change if the query is modified.\n useEffect(() => {\n if (!initialState && !isEqual(state, prevState)) {\n onChange?.(clearNodeIds(state));\n setPrevState(cloneDeep(state));\n }\n }, [state, prevState, initialState, onChange]);\n\n const onConfirmHandler = () => {\n if (pendingAction) {\n askAction(undefined);\n pendingAction.actions.forEach((action) => dispatchAction(action));\n }\n };\n\n const onCancelHandler = () => {\n askAction(undefined);\n };\n\n return (\n <Context.Provider value={context}>\n <RuleGroup\n level={0}\n id={state.id}\n combinator={state.combinator}\n rules={state.rules}\n classes={classes}\n />\n <ConfirmationDialog\n isOpen={pendingAction != null}\n onConfirm={onConfirmHandler}\n onCancel={onCancelHandler}\n title={pendingAction?.dialog.dialogTitle || \"\"}\n message={pendingAction?.dialog.dialogMessage || \"\"}\n confirmButtonLabel={pendingAction?.dialog.dialogConfirm || \"\"}\n cancelButtonLabel={pendingAction?.dialog.dialogCancel || \"\"}\n closeButtonTooltip={pendingAction?.dialog.dialogCloseTooltip || \"\"}\n />\n </Context.Provider>\n );\n};\n\nHvQueryBuilder.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n * See CSS API tab for more details.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the component root class.\n */\n root: PropTypes.string,\n /**\n * Styles applied to the top group container.\n */\n topGroup: PropTypes.string,\n /**\n * Styles applied to the sub group containers.\n */\n subGroup: PropTypes.string,\n /**\n * Styles applied to the multi-button combinator container.\n */\n combinator: PropTypes.string,\n /**\n * Styles applied to the multi-button combinator container on the top group.\n */\n topCombinator: PropTypes.string,\n /**\n * Styles applied to each combinator button.\n */\n combinatorButton: PropTypes.string,\n /**\n * Styles applied to the remove button.\n */\n removeButton: PropTypes.string,\n /**\n * Styles applied to the remove button on the top group.\n */\n topRemoveButton: PropTypes.string,\n /**\n * Styles applied to the rules container.\n */\n rulesContainer: PropTypes.string,\n /**\n * Styles applied to the sub rules container.\n */\n subRulesContainer: PropTypes.string,\n /**\n * Styles applied to the action button container.\n */\n actionButtonContainer: PropTypes.string,\n /**\n * Styles applied to the top action button container.\n */\n topActionButtonContainer: PropTypes.string,\n }),\n attributes: PropTypes.shape({\n key: PropTypes.shape({\n id: PropTypes.number,\n label: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n value: PropTypes.any,\n order: PropTypes.number,\n }),\n }).isRequired,\n /**\n * The query rules operators by attribute type and combinator.\n */\n operators: PropTypes.shape({\n type: PropTypes.arrayOf(\n PropTypes.shape({\n operator: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n combinators: PropTypes.arrayOf(PropTypes.string).isRequired,\n })\n ),\n }),\n /**\n * The query combinators operands.\n */\n combinators: PropTypes.arrayOf(\n PropTypes.shape({\n operand: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n })\n ),\n /**\n * The initial query representation.\n */\n query: PropTypes.shape({\n id: PropTypes.number,\n combinator: PropTypes.string.isRequired,\n rules: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number,\n attribute: PropTypes.string,\n operator: PropTypes.string,\n value: PropTypes.any,\n })\n ).isRequired,\n }),\n /**\n * Callback fired when query changes.\n */\n onChange: PropTypes.func,\n /**\n * Max depth of nested query groups.\n */\n maxDepth: PropTypes.number,\n /**\n * An object containing all the labels.\n */\n labels: PropTypes.instanceOf(Object),\n};\n\nexport default withStyles(styles, { name: \"HvQueryBuilder\" })(HvQueryBuilder);\n"],"mappings":";AAAA,OAAOA,KAAP,IAAgBC,SAAhB,EAA2BC,OAA3B,EAAoCC,UAApC,EAAgDC,MAAhD,EAAwDC,QAAxD,EAAkEC,UAAlE,QAAoF,OAApF;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,OAAP,MAAoB,gBAApB;AACA,OAAOC,SAAP,MAAsB,kBAAtB;AACA,SAASC,UAAT,QAA2B,mBAA3B;AAEA,OAAOC,OAAP,MAAoB,WAApB;AACA,OAAOC,SAAP,MAAsB,aAAtB;AACA,OAAOC,kBAAP,MAA+B,sBAA/B;AACA,SAASC,UAAT,EAAqBC,YAArB,QAAyC,SAAzC;AACA,OAAOC,OAAP,MAAoB,iBAApB;AACA,OAAOC,MAAP,MAAmB,UAAnB;AAEA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,cAAc,GAAG,CAAC;EACtBC,UAAU,GAAG,EADS;EAEtBC,KAFsB;EAGtBC,QAHsB;EAItBC,SAJsB;EAKtBC,WALsB;EAMtBC,QAAQ,GAAG,CANW;EAOtBC,MAPsB;EAQtBC;AARsB,CAAD,KASjB;EACJ,MAAM,CAACC,aAAD,EAAgBC,SAAhB,IAA6BvB,QAAQ,EAA3C;EACA,MAAMwB,iBAAiB,GAAGzB,MAAM,EAAhC;EACA,MAAM,CAAC0B,KAAD,EAAQC,cAAR,IAA0B5B,UAAU,CACxCa,OADwC,EAExCI,KAFwC,EAGvCY,YAAD,IAAkBA,YAAY,IAAIlB,UAAU,EAHJ,CAA1C;EAMA,MAAMkB,YAAY,GAAGZ,KAAK,KAAKU,KAA/B;EACA,MAAM,CAACG,SAAD,EAAYC,YAAZ,IAA4B7B,QAAQ,EAA1C;EAEA,MAAM8B,cAAc,GAAG7B,UAAU,CAACK,OAAD,CAAjC;EAEA,MAAMyB,OAAO,GAAGlC,OAAO,CACrB,OAAO;IACL6B,cADK;IAELH,SAFK;IAGLT,UAHK;IAILG,SAAS,EAAEA,SAAF,aAAEA,SAAF,cAAEA,SAAF,GAAea,cAAc,CAACb,SAJlC;IAKLC,WAAW,EAAEA,WAAF,aAAEA,WAAF,cAAEA,WAAF,GAAiBY,cAAc,CAACZ,WALtC;IAMLC,QAAQ,EAAEA,QAAF,aAAEA,QAAF,cAAEA,QAAF,GAAcW,cAAc,CAACX,QANhC;IAOLC,MAAM,EAAEA,MAAF,aAAEA,MAAF,cAAEA,MAAF,GAAYU,cAAc,CAACV,MAP5B;IAQLY,cAAc,EAAEL;EARX,CAAP,CADqB,EAWrB,CACEb,UADF,EAEEG,SAFF,EAGEa,cAAc,CAACb,SAHjB,EAIEa,cAAc,CAACZ,WAJjB,EAKEY,cAAc,CAACX,QALjB,EAMEW,cAAc,CAACV,MANjB,EAOEF,WAPF,EAQEC,QARF,EASEC,MATF,EAUEO,YAVF,CAXqB,CAAvB;EAyBA/B,SAAS,CAAC,MAAM;IACd,IAAI4B,iBAAiB,CAACS,OAAlB,IAA6B,IAAjC,EAAuC;MACrC;MACAT,iBAAiB,CAACS,OAAlB,GAA4BnB,UAA5B;IACD,CAHD,MAGO,IAAIU,iBAAiB,CAACS,OAAlB,KAA8BnB,UAAlC,EAA8C;MACnD;MACAU,iBAAiB,CAACS,OAAlB,GAA4BnB,UAA5B;MACAY,cAAc,CAAC;QAAEQ,IAAI,EAAE;MAAR,CAAD,CAAd;IACD;EACF,CATQ,EASN,CAACpB,UAAD,CATM,CAAT,CAvCI,CAkDJ;;EACAlB,SAAS,CAAC,MAAM;IACd,IAAI,CAAC+B,YAAD,IAAiB,CAACxB,OAAO,CAACsB,KAAD,EAAQG,SAAR,CAA7B,EAAiD;MAC/CZ,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ,CAAGN,YAAY,CAACe,KAAD,CAAf,CAAR;MACAI,YAAY,CAACzB,SAAS,CAACqB,KAAD,CAAV,CAAZ;IACD;EACF,CALQ,EAKN,CAACA,KAAD,EAAQG,SAAR,EAAmBD,YAAnB,EAAiCX,QAAjC,CALM,CAAT;;EAOA,MAAMmB,gBAAgB,GAAG,MAAM;IAC7B,IAAIb,aAAJ,EAAmB;MACjBC,SAAS,CAACa,SAAD,CAAT;MACAd,aAAa,CAACe,OAAd,CAAsBC,OAAtB,CAA+BC,MAAD,IAAYb,cAAc,CAACa,MAAD,CAAxD;IACD;EACF,CALD;;EAOA,MAAMC,eAAe,GAAG,MAAM;IAC5BjB,SAAS,CAACa,SAAD,CAAT;EACD,CAFD;;EAIA,oBACE,oBAAC,OAAD,CAAS,QAAT;IAAkB,KAAK,EAAEL;EAAzB,gBACE,oBAAC,SAAD;IACE,KAAK,EAAE,CADT;IAEE,EAAE,EAAEN,KAAK,CAACgB,EAFZ;IAGE,UAAU,EAAEhB,KAAK,CAACiB,UAHpB;IAIE,KAAK,EAAEjB,KAAK,CAACkB,KAJf;IAKE,OAAO,EAAEtB;EALX,EADF,eAQE,oBAAC,kBAAD;IACE,MAAM,EAAEC,aAAa,IAAI,IAD3B;IAEE,SAAS,EAAEa,gBAFb;IAGE,QAAQ,EAAEK,eAHZ;IAIE,KAAK,EAAE,CAAAlB,aAAa,SAAb,IAAAA,aAAa,WAAb,YAAAA,aAAa,CAAEsB,MAAf,CAAsBC,WAAtB,KAAqC,EAJ9C;IAKE,OAAO,EAAE,CAAAvB,aAAa,SAAb,IAAAA,aAAa,WAAb,YAAAA,aAAa,CAAEsB,MAAf,CAAsBE,aAAtB,KAAuC,EALlD;IAME,kBAAkB,EAAE,CAAAxB,aAAa,SAAb,IAAAA,aAAa,WAAb,YAAAA,aAAa,CAAEsB,MAAf,CAAsBG,aAAtB,KAAuC,EAN7D;IAOE,iBAAiB,EAAE,CAAAzB,aAAa,SAAb,IAAAA,aAAa,WAAb,YAAAA,aAAa,CAAEsB,MAAf,CAAsBI,YAAtB,KAAsC,EAP3D;IAQE,kBAAkB,EAAE,CAAA1B,aAAa,SAAb,IAAAA,aAAa,WAAb,YAAAA,aAAa,CAAEsB,MAAf,CAAsBK,kBAAtB,KAA4C;EARlE,EARF,CADF;AAqBD,CAnGD;;AAqGA,wCAAApC,cAAc,CAACqC,SAAf,GAA2B;EACzB;AACF;AACA;AACA;EACE7B,OAAO,EAAEnB,SAAS,CAACiD,KAAV,CAAgB;IACvB;AACJ;AACA;IACIC,IAAI,EAAElD,SAAS,CAACmD,MAJO;;IAKvB;AACJ;AACA;IACIC,QAAQ,EAAEpD,SAAS,CAACmD,MARG;;IASvB;AACJ;AACA;IACIE,QAAQ,EAAErD,SAAS,CAACmD,MAZG;;IAavB;AACJ;AACA;IACIX,UAAU,EAAExC,SAAS,CAACmD,MAhBC;;IAiBvB;AACJ;AACA;IACIG,aAAa,EAAEtD,SAAS,CAACmD,MApBF;;IAqBvB;AACJ;AACA;IACII,gBAAgB,EAAEvD,SAAS,CAACmD,MAxBL;;IAyBvB;AACJ;AACA;IACIK,YAAY,EAAExD,SAAS,CAACmD,MA5BD;;IA6BvB;AACJ;AACA;IACIM,eAAe,EAAEzD,SAAS,CAACmD,MAhCJ;;IAiCvB;AACJ;AACA;IACIO,cAAc,EAAE1D,SAAS,CAACmD,MApCH;;IAqCvB;AACJ;AACA;IACIQ,iBAAiB,EAAE3D,SAAS,CAACmD,MAxCN;;IAyCvB;AACJ;AACA;IACIS,qBAAqB,EAAE5D,SAAS,CAACmD,MA5CV;;IA6CvB;AACJ;AACA;IACIU,wBAAwB,EAAE7D,SAAS,CAACmD;EAhDb,CAAhB,CALgB;EAuDzBvC,UAAU,EAAEZ,SAAS,CAACiD,KAAV,CAAgB;IAC1Ba,GAAG,EAAE9D,SAAS,CAACiD,KAAV,CAAgB;MACnBV,EAAE,EAAEvC,SAAS,CAAC+D,MADK;MAEnBC,KAAK,EAAEhE,SAAS,CAACmD,MAAV,CAAiBc,UAFL;MAGnBjC,IAAI,EAAEhC,SAAS,CAACmD,MAAV,CAAiBc,UAHJ;MAInBC,KAAK,EAAElE,SAAS,CAACmE,GAJE;MAKnBC,KAAK,EAAEpE,SAAS,CAAC+D;IALE,CAAhB;EADqB,CAAhB,EAQTE,UA/DsB;;EAgEzB;AACF;AACA;EACElD,SAAS,EAAEf,SAAS,CAACiD,KAAV,CAAgB;IACzBjB,IAAI,EAAEhC,SAAS,CAACqE,OAAV,CACJrE,SAAS,CAACiD,KAAV,CAAgB;MACdqB,QAAQ,EAAEtE,SAAS,CAACmD,MAAV,CAAiBc,UADb;MAEdD,KAAK,EAAEhE,SAAS,CAACmD,MAAV,CAAiBc,UAFV;MAGdjD,WAAW,EAAEhB,SAAS,CAACqE,OAAV,CAAkBrE,SAAS,CAACmD,MAA5B,EAAoCc;IAHnC,CAAhB,CADI;EADmB,CAAhB,CAnEc;;EA4EzB;AACF;AACA;EACEjD,WAAW,EAAEhB,SAAS,CAACqE,OAAV,CACXrE,SAAS,CAACiD,KAAV,CAAgB;IACdsB,OAAO,EAAEvE,SAAS,CAACmD,MAAV,CAAiBc,UADZ;IAEdD,KAAK,EAAEhE,SAAS,CAACmD,MAAV,CAAiBc;EAFV,CAAhB,CADW,CA/EY;;EAqFzB;AACF;AACA;EACEpD,KAAK,EAAEb,SAAS,CAACiD,KAAV,CAAgB;IACrBV,EAAE,EAAEvC,SAAS,CAAC+D,MADO;IAErBvB,UAAU,EAAExC,SAAS,CAACmD,MAAV,CAAiBc,UAFR;IAGrBxB,KAAK,EAAEzC,SAAS,CAACqE,OAAV,CACLrE,SAAS,CAACiD,KAAV,CAAgB;MACdV,EAAE,EAAEvC,SAAS,CAAC+D,MADA;MAEdS,SAAS,EAAExE,SAAS,CAACmD,MAFP;MAGdmB,QAAQ,EAAEtE,SAAS,CAACmD,MAHN;MAIde,KAAK,EAAElE,SAAS,CAACmE;IAJH,CAAhB,CADK,EAOLF;EAVmB,CAAhB,CAxFkB;;EAoGzB;AACF;AACA;EACEnD,QAAQ,EAAEd,SAAS,CAACyE,IAvGK;;EAwGzB;AACF;AACA;EACExD,QAAQ,EAAEjB,SAAS,CAAC+D,MA3GK;;EA4GzB;AACF;AACA;EACE7C,MAAM,EAAElB,SAAS,CAAC0E,UAAV,CAAqBC,MAArB;AA/GiB,CAA3B;AAkHA,eAAexE,UAAU,CAACO,MAAD,EAAS;EAAEkE,IAAI,EAAE;AAAR,CAAT,CAAV,CAA+CjE,cAA/C,CAAf"}
|
|
@@ -4,24 +4,23 @@ var _Add, _Add2, _Delete, _Info;
|
|
|
4
4
|
|
|
5
5
|
import React, { useCallback, useContext } from "react";
|
|
6
6
|
import clsx from "clsx";
|
|
7
|
+
import { withStyles } from "@material-ui/core";
|
|
7
8
|
import PropTypes from "prop-types";
|
|
8
9
|
import { HvGrid, HvMultiButton, HvButton, HvEmptyState, HvTypography, withTooltip } from "@hitachivantara/uikit-react-core";
|
|
9
10
|
import { Add, Delete, Info } from "@hitachivantara/uikit-react-icons";
|
|
10
11
|
import Context from "../Context";
|
|
11
12
|
import Rule from "../Rule";
|
|
12
|
-
import
|
|
13
|
+
import styles from "./styles";
|
|
13
14
|
|
|
14
15
|
const RuleGroup = ({
|
|
15
16
|
level = 0,
|
|
16
17
|
id,
|
|
17
18
|
combinator = "and",
|
|
18
|
-
rules = []
|
|
19
|
+
rules = [],
|
|
20
|
+
classes
|
|
19
21
|
}) => {
|
|
20
22
|
var _labels$query, _labels$query$addRule, _labels$query2, _labels$query2$addRul, _labels$query3, _labels$query3$addGro, _labels$query4, _labels$query4$addGro, _labels$query5, _labels$query5$delete, _labels$query6, _labels$query6$delete, _labels$query8, _labels$query8$delete, _labels$query9, _labels$query9$delete, _labels$empty, _labels$empty2, _labels$empty3, _labels$empty4;
|
|
21
23
|
|
|
22
|
-
const classes = useStyles({
|
|
23
|
-
level
|
|
24
|
-
});
|
|
25
24
|
const context = useContext(Context);
|
|
26
25
|
const {
|
|
27
26
|
dispatchAction,
|
|
@@ -30,6 +29,7 @@ const RuleGroup = ({
|
|
|
30
29
|
combinators,
|
|
31
30
|
labels
|
|
32
31
|
} = context;
|
|
32
|
+
const normalizedMaxDepth = maxDepth - 1;
|
|
33
33
|
const actionButtons = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(HvButton, {
|
|
34
34
|
category: "secondary",
|
|
35
35
|
onClick: () => {
|
|
@@ -38,7 +38,7 @@ const RuleGroup = ({
|
|
|
38
38
|
id
|
|
39
39
|
});
|
|
40
40
|
}
|
|
41
|
-
}, _Add || (_Add = /*#__PURE__*/React.createElement(Add, null)), level === 0 && ((_labels$query = labels.query) === null || _labels$query === void 0 ? void 0 : (_labels$query$addRule = _labels$query.addRule) === null || _labels$query$addRule === void 0 ? void 0 : _labels$query$addRule.label) != null ? (_labels$query2 = labels.query) === null || _labels$query2 === void 0 ? void 0 : (_labels$query2$addRul = _labels$query2.addRule) === null || _labels$query2$addRul === void 0 ? void 0 : _labels$query2$addRul.label : labels.group.addRule.label), level
|
|
41
|
+
}, _Add || (_Add = /*#__PURE__*/React.createElement(Add, null)), level === 0 && ((_labels$query = labels.query) === null || _labels$query === void 0 ? void 0 : (_labels$query$addRule = _labels$query.addRule) === null || _labels$query$addRule === void 0 ? void 0 : _labels$query$addRule.label) != null ? (_labels$query2 = labels.query) === null || _labels$query2 === void 0 ? void 0 : (_labels$query2$addRul = _labels$query2.addRule) === null || _labels$query2$addRul === void 0 ? void 0 : _labels$query2$addRul.label : labels.group.addRule.label), level <= normalizedMaxDepth && /*#__PURE__*/React.createElement(HvButton, {
|
|
42
42
|
category: "secondary",
|
|
43
43
|
onClick: () => {
|
|
44
44
|
dispatchAction({
|
|
@@ -93,7 +93,8 @@ const RuleGroup = ({
|
|
|
93
93
|
key: rule.id || Math.random(),
|
|
94
94
|
level: level + 1
|
|
95
95
|
}, rule, {
|
|
96
|
-
id: rule.id
|
|
96
|
+
id: rule.id,
|
|
97
|
+
classes: classes
|
|
97
98
|
}));
|
|
98
99
|
}
|
|
99
100
|
|
|
@@ -128,7 +129,7 @@ const RuleGroup = ({
|
|
|
128
129
|
cursor: "pointer",
|
|
129
130
|
textDecoration: "underline"
|
|
130
131
|
}
|
|
131
|
-
}, `${(_labels$empty2 = labels.empty) === null || _labels$empty2 === void 0 ? void 0 : _labels$empty2.createCondition}`), level
|
|
132
|
+
}, `${(_labels$empty2 = labels.empty) === null || _labels$empty2 === void 0 ? void 0 : _labels$empty2.createCondition}`), level <= normalizedMaxDepth && /*#__PURE__*/React.createElement(React.Fragment, null, `${(_labels$empty3 = labels.empty) === null || _labels$empty3 === void 0 ? void 0 : _labels$empty3.spacer}`, /*#__PURE__*/React.createElement(HvTypography, {
|
|
132
133
|
variant: "link",
|
|
133
134
|
component: "a",
|
|
134
135
|
onClick: () => {
|
|
@@ -152,10 +153,77 @@ const RuleGroup = ({
|
|
|
152
153
|
};
|
|
153
154
|
|
|
154
155
|
process.env.NODE_ENV !== "production" ? RuleGroup.propTypes = {
|
|
156
|
+
/**
|
|
157
|
+
* Override or extend the styles applied to the component.
|
|
158
|
+
* See CSS API tab for more details.
|
|
159
|
+
*/
|
|
160
|
+
classes: PropTypes.shape({
|
|
161
|
+
/**
|
|
162
|
+
* Styles applied to the component root class.
|
|
163
|
+
*/
|
|
164
|
+
root: PropTypes.string,
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Styles applied to the top group container.
|
|
168
|
+
*/
|
|
169
|
+
topGroup: PropTypes.string,
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Styles applied to the sub group containers.
|
|
173
|
+
*/
|
|
174
|
+
subGroup: PropTypes.string,
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Styles applied to the multi-button combinator container.
|
|
178
|
+
*/
|
|
179
|
+
combinator: PropTypes.string,
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Styles applied to the multi-button combinator container on the top group.
|
|
183
|
+
*/
|
|
184
|
+
topCombinator: PropTypes.string,
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Styles applied to each combinator button.
|
|
188
|
+
*/
|
|
189
|
+
combinatorButton: PropTypes.string,
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Styles applied to the remove button.
|
|
193
|
+
*/
|
|
194
|
+
removeButton: PropTypes.string,
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Styles applied to the remove button on the top group.
|
|
198
|
+
*/
|
|
199
|
+
topRemoveButton: PropTypes.string,
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Styles applied to the rules container.
|
|
203
|
+
*/
|
|
204
|
+
rulesContainer: PropTypes.string,
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Styles applied to the sub rules container.
|
|
208
|
+
*/
|
|
209
|
+
subRulesContainer: PropTypes.string,
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Styles applied to the action button container.
|
|
213
|
+
*/
|
|
214
|
+
actionButtonContainer: PropTypes.string,
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Styles applied to the top action button container.
|
|
218
|
+
*/
|
|
219
|
+
topActionButtonContainer: PropTypes.string
|
|
220
|
+
}),
|
|
155
221
|
id: PropTypes.number,
|
|
156
222
|
level: PropTypes.number,
|
|
157
223
|
combinator: PropTypes.string,
|
|
158
224
|
rules: PropTypes.array
|
|
159
225
|
} : void 0;
|
|
160
|
-
export default
|
|
226
|
+
export default withStyles(styles, {
|
|
227
|
+
name: "RuleGroup"
|
|
228
|
+
})(RuleGroup);
|
|
161
229
|
//# sourceMappingURL=RuleGroup.js.map
|