@itwin/components-react 3.3.0-dev.9 → 3.4.0-dev.10

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.
Files changed (135) hide show
  1. package/CHANGELOG.md +43 -1
  2. package/lib/cjs/components-react/common/DateUtils.d.ts +12 -2
  3. package/lib/cjs/components-react/common/DateUtils.d.ts.map +1 -1
  4. package/lib/cjs/components-react/common/DateUtils.js +14 -4
  5. package/lib/cjs/components-react/common/DateUtils.js.map +1 -1
  6. package/lib/cjs/components-react/common/SubscriptionScheduler.d.ts +6 -8
  7. package/lib/cjs/components-react/common/SubscriptionScheduler.d.ts.map +1 -1
  8. package/lib/cjs/components-react/common/SubscriptionScheduler.js +18 -52
  9. package/lib/cjs/components-react/common/SubscriptionScheduler.js.map +1 -1
  10. package/lib/cjs/components-react/editors/DateTimeEditor.d.ts.map +1 -1
  11. package/lib/cjs/components-react/editors/DateTimeEditor.js +2 -0
  12. package/lib/cjs/components-react/editors/DateTimeEditor.js.map +1 -1
  13. package/lib/cjs/components-react/filter-builder/FilterBuilder.d.ts +36 -0
  14. package/lib/cjs/components-react/filter-builder/FilterBuilder.d.ts.map +1 -0
  15. package/lib/cjs/components-react/filter-builder/FilterBuilder.js +118 -0
  16. package/lib/cjs/components-react/filter-builder/FilterBuilder.js.map +1 -0
  17. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.d.ts +11 -0
  18. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.d.ts.map +1 -0
  19. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.js +76 -0
  20. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.js.map +1 -0
  21. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.scss +41 -0
  22. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.d.ts +29 -0
  23. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.d.ts.map +1 -0
  24. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.js +79 -0
  25. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -0
  26. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.scss +73 -0
  27. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.d.ts +12 -0
  28. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.d.ts.map +1 -0
  29. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js +47 -0
  30. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -0
  31. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.d.ts +11 -0
  32. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.d.ts.map +1 -0
  33. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js +52 -0
  34. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -0
  35. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.d.ts +11 -0
  36. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.d.ts.map +1 -0
  37. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js +43 -0
  38. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -0
  39. package/lib/cjs/components-react/filter-builder/FilterBuilderState.d.ts +43 -0
  40. package/lib/cjs/components-react/filter-builder/FilterBuilderState.d.ts.map +1 -0
  41. package/lib/cjs/components-react/filter-builder/FilterBuilderState.js +152 -0
  42. package/lib/cjs/components-react/filter-builder/FilterBuilderState.js.map +1 -0
  43. package/lib/cjs/components-react/filter-builder/Operators.d.ts +27 -0
  44. package/lib/cjs/components-react/filter-builder/Operators.d.ts.map +1 -0
  45. package/lib/cjs/components-react/filter-builder/Operators.js +113 -0
  46. package/lib/cjs/components-react/filter-builder/Operators.js.map +1 -0
  47. package/lib/cjs/components-react/filter-builder/Types.d.ts +18 -0
  48. package/lib/cjs/components-react/filter-builder/Types.d.ts.map +1 -0
  49. package/lib/cjs/components-react/filter-builder/Types.js +9 -0
  50. package/lib/cjs/components-react/filter-builder/Types.js.map +1 -0
  51. package/lib/cjs/components-react/toolbar/Overflow.scss +3 -2
  52. package/lib/cjs/components-react/toolbar/PopupItem.scss +4 -5
  53. package/lib/cjs/components-react/tree/controlled/TreeHooks.d.ts.map +1 -1
  54. package/lib/cjs/components-react/tree/controlled/TreeHooks.js +5 -8
  55. package/lib/cjs/components-react/tree/controlled/TreeHooks.js.map +1 -1
  56. package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.d.ts +8 -4
  57. package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.d.ts.map +1 -1
  58. package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.js +54 -45
  59. package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.js.map +1 -1
  60. package/lib/cjs/components-react/tree/controlled/component/TreeNodeRenderer.d.ts +2 -0
  61. package/lib/cjs/components-react/tree/controlled/component/TreeNodeRenderer.d.ts.map +1 -1
  62. package/lib/cjs/components-react/tree/controlled/component/TreeNodeRenderer.js +1 -1
  63. package/lib/cjs/components-react/tree/controlled/component/TreeNodeRenderer.js.map +1 -1
  64. package/lib/cjs/components-react.d.ts +9 -0
  65. package/lib/cjs/components-react.d.ts.map +1 -1
  66. package/lib/cjs/components-react.js +9 -0
  67. package/lib/cjs/components-react.js.map +1 -1
  68. package/lib/esm/components-react/common/DateUtils.d.ts +12 -2
  69. package/lib/esm/components-react/common/DateUtils.d.ts.map +1 -1
  70. package/lib/esm/components-react/common/DateUtils.js +12 -2
  71. package/lib/esm/components-react/common/DateUtils.js.map +1 -1
  72. package/lib/esm/components-react/common/SubscriptionScheduler.d.ts +6 -8
  73. package/lib/esm/components-react/common/SubscriptionScheduler.d.ts.map +1 -1
  74. package/lib/esm/components-react/common/SubscriptionScheduler.js +18 -52
  75. package/lib/esm/components-react/common/SubscriptionScheduler.js.map +1 -1
  76. package/lib/esm/components-react/editors/DateTimeEditor.d.ts.map +1 -1
  77. package/lib/esm/components-react/editors/DateTimeEditor.js +2 -0
  78. package/lib/esm/components-react/editors/DateTimeEditor.js.map +1 -1
  79. package/lib/esm/components-react/filter-builder/FilterBuilder.d.ts +36 -0
  80. package/lib/esm/components-react/filter-builder/FilterBuilder.d.ts.map +1 -0
  81. package/lib/esm/components-react/filter-builder/FilterBuilder.js +94 -0
  82. package/lib/esm/components-react/filter-builder/FilterBuilder.js.map +1 -0
  83. package/lib/esm/components-react/filter-builder/FilterBuilderRule.d.ts +11 -0
  84. package/lib/esm/components-react/filter-builder/FilterBuilderRule.d.ts.map +1 -0
  85. package/lib/esm/components-react/filter-builder/FilterBuilderRule.js +53 -0
  86. package/lib/esm/components-react/filter-builder/FilterBuilderRule.js.map +1 -0
  87. package/lib/esm/components-react/filter-builder/FilterBuilderRule.scss +41 -0
  88. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.d.ts +29 -0
  89. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.d.ts.map +1 -0
  90. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.js +55 -0
  91. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -0
  92. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.scss +73 -0
  93. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.d.ts +12 -0
  94. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.d.ts.map +1 -0
  95. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js +24 -0
  96. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -0
  97. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.d.ts +11 -0
  98. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.d.ts.map +1 -0
  99. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js +29 -0
  100. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -0
  101. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.d.ts +11 -0
  102. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.d.ts.map +1 -0
  103. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js +20 -0
  104. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -0
  105. package/lib/esm/components-react/filter-builder/FilterBuilderState.d.ts +43 -0
  106. package/lib/esm/components-react/filter-builder/FilterBuilderState.d.ts.map +1 -0
  107. package/lib/esm/components-react/filter-builder/FilterBuilderState.js +127 -0
  108. package/lib/esm/components-react/filter-builder/FilterBuilderState.js.map +1 -0
  109. package/lib/esm/components-react/filter-builder/Operators.d.ts +27 -0
  110. package/lib/esm/components-react/filter-builder/Operators.d.ts.map +1 -0
  111. package/lib/esm/components-react/filter-builder/Operators.js +107 -0
  112. package/lib/esm/components-react/filter-builder/Operators.js.map +1 -0
  113. package/lib/esm/components-react/filter-builder/Types.d.ts +18 -0
  114. package/lib/esm/components-react/filter-builder/Types.d.ts.map +1 -0
  115. package/lib/esm/components-react/filter-builder/Types.js +5 -0
  116. package/lib/esm/components-react/filter-builder/Types.js.map +1 -0
  117. package/lib/esm/components-react/toolbar/Overflow.scss +3 -2
  118. package/lib/esm/components-react/toolbar/PopupItem.scss +4 -5
  119. package/lib/esm/components-react/tree/controlled/TreeHooks.d.ts.map +1 -1
  120. package/lib/esm/components-react/tree/controlled/TreeHooks.js +6 -9
  121. package/lib/esm/components-react/tree/controlled/TreeHooks.js.map +1 -1
  122. package/lib/esm/components-react/tree/controlled/TreeNodeLoader.d.ts +8 -4
  123. package/lib/esm/components-react/tree/controlled/TreeNodeLoader.d.ts.map +1 -1
  124. package/lib/esm/components-react/tree/controlled/TreeNodeLoader.js +53 -44
  125. package/lib/esm/components-react/tree/controlled/TreeNodeLoader.js.map +1 -1
  126. package/lib/esm/components-react/tree/controlled/component/TreeNodeRenderer.d.ts +2 -0
  127. package/lib/esm/components-react/tree/controlled/component/TreeNodeRenderer.d.ts.map +1 -1
  128. package/lib/esm/components-react/tree/controlled/component/TreeNodeRenderer.js +1 -1
  129. package/lib/esm/components-react/tree/controlled/component/TreeNodeRenderer.js.map +1 -1
  130. package/lib/esm/components-react.d.ts +9 -0
  131. package/lib/esm/components-react.d.ts.map +1 -1
  132. package/lib/esm/components-react.js +9 -0
  133. package/lib/esm/components-react.js.map +1 -1
  134. package/lib/public/locales/en/UiComponents.json +16 -0
  135. package/package.json +19 -16
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.PropertyFilterBuilderRuleProperty = void 0;
23
+ /*---------------------------------------------------------------------------------------------
24
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
25
+ * See LICENSE.md in the project root for license terms and full copyright notice.
26
+ *--------------------------------------------------------------------------------------------*/
27
+ const React = __importStar(require("react"));
28
+ const itwinui_react_1 = require("@itwin/itwinui-react");
29
+ const UiComponents_1 = require("../UiComponents");
30
+ /** @alpha */
31
+ function PropertyFilterBuilderRuleProperty(props) {
32
+ const { selectedProperty, properties, onSelectedPropertyChanged } = props;
33
+ const selectOptions = React.useMemo(() => properties.map((property) => ({
34
+ id: property.name,
35
+ label: property.displayLabel,
36
+ value: property.name,
37
+ })), [properties]);
38
+ const onPropertyChanged = React.useCallback((name) => {
39
+ onSelectedPropertyChanged(properties.find((property) => property.name === name));
40
+ }, [properties, onSelectedPropertyChanged]);
41
+ React.useEffect(() => {
42
+ const currentSelectedProperty = properties.find((property) => property.name === (selectedProperty === null || selectedProperty === void 0 ? void 0 : selectedProperty.name));
43
+ if ((currentSelectedProperty === null || currentSelectedProperty === void 0 ? void 0 : currentSelectedProperty.name) !== (selectedProperty === null || selectedProperty === void 0 ? void 0 : selectedProperty.name))
44
+ onSelectedPropertyChanged(currentSelectedProperty);
45
+ }, [properties, selectedProperty, onSelectedPropertyChanged]);
46
+ return React.createElement("div", { className: "rule-property" },
47
+ React.createElement(itwinui_react_1.ComboBox, { options: selectOptions, onChange: onPropertyChanged, value: selectedProperty === null || selectedProperty === void 0 ? void 0 : selectedProperty.name, inputProps: {
48
+ placeholder: UiComponents_1.UiComponents.translate("filterBuilder.chooseProperty"),
49
+ } }));
50
+ }
51
+ exports.PropertyFilterBuilderRuleProperty = PropertyFilterBuilderRuleProperty;
52
+ //# sourceMappingURL=FilterBuilderRuleProperty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterBuilderRuleProperty.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleProperty.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;;;+FAG+F;AAC/F,6CAA+B;AAE/B,wDAA8D;AAC9D,kDAA+C;AAS/C,aAAa;AACb,SAAgB,iCAAiC,CAAC,KAA6C;IAC7F,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,yBAAyB,EAAE,GAAG,KAAK,CAAC;IAE1E,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAyB,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC9F,EAAE,EAAE,QAAQ,CAAC,IAAI;QACjB,KAAK,EAAE,QAAQ,CAAC,YAAY;QAC5B,KAAK,EAAE,QAAQ,CAAC,IAAI;KACrB,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEnB,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,IAAY,EAAE,EAAE;QAC3D,yBAAyB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;IACnF,CAAC,EAAE,CAAC,UAAU,EAAE,yBAAyB,CAAC,CAAC,CAAC;IAE5C,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,uBAAuB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,MAAK,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,IAAI,CAAA,CAAC,CAAC;QACxG,IAAI,CAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,OAAK,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,IAAI,CAAA;YAC1D,yBAAyB,CAAC,uBAAuB,CAAC,CAAC;IACvD,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,EAAE,yBAAyB,CAAC,CAAC,CAAC;IAE9D,OAAO,6BAAK,SAAS,EAAC,eAAe;QACnC,oBAAC,wBAAQ,IACP,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,IAAI,EAC7B,UAAU,EAAE;gBACV,WAAW,EAAE,2BAAY,CAAC,SAAS,CAAC,8BAA8B,CAAC;aACpE,GACD,CACE,CAAC;AACT,CAAC;AA7BD,8EA6BC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport * as React from \"react\";\r\nimport { PropertyDescription } from \"@itwin/appui-abstract\";\r\nimport { ComboBox, SelectOption } from \"@itwin/itwinui-react\";\r\nimport { UiComponents } from \"../UiComponents\";\r\n\r\n/** @alpha */\r\nexport interface PropertyFilterBuilderRulePropertyProps {\r\n properties: PropertyDescription[];\r\n selectedProperty?: PropertyDescription;\r\n onSelectedPropertyChanged: (property?: PropertyDescription) => void;\r\n}\r\n\r\n/** @alpha */\r\nexport function PropertyFilterBuilderRuleProperty(props: PropertyFilterBuilderRulePropertyProps) {\r\n const { selectedProperty, properties, onSelectedPropertyChanged } = props;\r\n\r\n const selectOptions = React.useMemo<SelectOption<string>[]>(() => properties.map((property) => ({\r\n id: property.name,\r\n label: property.displayLabel,\r\n value: property.name,\r\n })), [properties]);\r\n\r\n const onPropertyChanged = React.useCallback((name: string) => {\r\n onSelectedPropertyChanged(properties.find((property) => property.name === name));\r\n }, [properties, onSelectedPropertyChanged]);\r\n\r\n React.useEffect(() => {\r\n const currentSelectedProperty = properties.find((property) => property.name === selectedProperty?.name);\r\n if (currentSelectedProperty?.name !== selectedProperty?.name)\r\n onSelectedPropertyChanged(currentSelectedProperty);\r\n }, [properties, selectedProperty, onSelectedPropertyChanged]);\r\n\r\n return <div className=\"rule-property\">\r\n <ComboBox\r\n options={selectOptions}\r\n onChange={onPropertyChanged}\r\n value={selectedProperty?.name}\r\n inputProps={{\r\n placeholder: UiComponents.translate(\"filterBuilder.chooseProperty\"),\r\n }}\r\n />\r\n </div>;\r\n}\r\n"]}
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ import { PropertyDescription, PropertyValue } from "@itwin/appui-abstract";
3
+ /** @alpha */
4
+ export interface PropertyFilterBuilderRuleValueProps {
5
+ value?: PropertyValue;
6
+ property: PropertyDescription;
7
+ onChange: (value: PropertyValue) => void;
8
+ }
9
+ /** @alpha */
10
+ export declare function PropertyFilterBuilderRuleValue(props: PropertyFilterBuilderRuleValueProps): JSX.Element;
11
+ //# sourceMappingURL=FilterBuilderRuleValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterBuilderRuleValue.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleValue.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,mBAAmB,EAAkB,aAAa,EAAuB,MAAM,uBAAuB,CAAC;AAGhH,aAAa;AACb,MAAM,WAAW,mCAAmC;IAClD,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC1C;AAED,aAAa;AACb,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,mCAAmC,eAmBxF"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.PropertyFilterBuilderRuleValue = void 0;
23
+ /*---------------------------------------------------------------------------------------------
24
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
25
+ * See LICENSE.md in the project root for license terms and full copyright notice.
26
+ *--------------------------------------------------------------------------------------------*/
27
+ const React = __importStar(require("react"));
28
+ const appui_abstract_1 = require("@itwin/appui-abstract");
29
+ const EditorContainer_1 = require("../editors/EditorContainer");
30
+ /** @alpha */
31
+ function PropertyFilterBuilderRuleValue(props) {
32
+ const { value, property, onChange } = props;
33
+ const propertyRecord = React.useMemo(() => {
34
+ return new appui_abstract_1.PropertyRecord(value !== null && value !== void 0 ? value : { valueFormat: appui_abstract_1.PropertyValueFormat.Primitive }, property);
35
+ }, [value, property]);
36
+ const onValueChange = React.useCallback(({ newValue }) => {
37
+ onChange(newValue);
38
+ }, [onChange]);
39
+ return React.createElement("div", { className: "rule-value" },
40
+ React.createElement(EditorContainer_1.EditorContainer, { propertyRecord: propertyRecord, onCancel: /* istanbul ignore next */ () => { }, onCommit: onValueChange, setFocus: false }));
41
+ }
42
+ exports.PropertyFilterBuilderRuleValue = PropertyFilterBuilderRuleValue;
43
+ //# sourceMappingURL=FilterBuilderRuleValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterBuilderRuleValue.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleValue.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;;;+FAG+F;AAC/F,6CAA+B;AAC/B,0DAAgH;AAChH,gEAAkF;AASlF,aAAa;AACb,SAAgB,8BAA8B,CAAC,KAA0C;IACvF,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAE5C,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACxC,OAAO,IAAI,+BAAc,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAC,WAAW,EAAE,oCAAmB,CAAC,SAAS,EAAC,EAAE,QAAQ,CAAC,CAAC;IAC7F,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEtB,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,EAAC,QAAQ,EAAsB,EAAE,EAAE;QAC1E,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,OAAO,6BAAK,SAAS,EAAC,YAAY;QAChC,oBAAC,iCAAe,IACd,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,0BAA0B,CAAC,GAAG,EAAE,GAAE,CAAC,EAC7C,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,KAAK,GACf,CACE,CAAC;AACT,CAAC;AAnBD,wEAmBC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport * as React from \"react\";\r\nimport { PropertyDescription, PropertyRecord, PropertyValue, PropertyValueFormat } from \"@itwin/appui-abstract\";\r\nimport { EditorContainer, PropertyUpdatedArgs } from \"../editors/EditorContainer\";\r\n\r\n/** @alpha */\r\nexport interface PropertyFilterBuilderRuleValueProps {\r\n value?: PropertyValue;\r\n property: PropertyDescription;\r\n onChange: (value: PropertyValue) => void;\r\n}\r\n\r\n/** @alpha */\r\nexport function PropertyFilterBuilderRuleValue(props: PropertyFilterBuilderRuleValueProps) {\r\n const { value, property, onChange } = props;\r\n\r\n const propertyRecord = React.useMemo(() => {\r\n return new PropertyRecord(value ?? {valueFormat: PropertyValueFormat.Primitive}, property);\r\n }, [value, property]);\r\n\r\n const onValueChange = React.useCallback(({newValue}: PropertyUpdatedArgs) => {\r\n onChange(newValue);\r\n }, [onChange]);\r\n\r\n return <div className=\"rule-value\">\r\n <EditorContainer\r\n propertyRecord={propertyRecord}\r\n onCancel={/* istanbul ignore next */ () => {}}\r\n onCommit={onValueChange}\r\n setFocus={false}\r\n />\r\n </div>;\r\n}\r\n"]}
@@ -0,0 +1,43 @@
1
+ import { PropertyDescription, PropertyValue } from "@itwin/appui-abstract";
2
+ import { PropertyFilterRuleGroupOperator, PropertyFilterRuleOperator } from "./Operators";
3
+ /** @alpha */
4
+ export interface PropertyFilterBuilderState {
5
+ rootGroup: PropertyFilterBuilderRuleGroup;
6
+ }
7
+ /** @alpha */
8
+ export declare type PropertyFilterBuilderRuleGroupItem = PropertyFilterBuilderRuleGroup | PropertyFilterBuilderRule;
9
+ /** @alpha */
10
+ export interface PropertyFilterBuilderRuleGroup {
11
+ id: string;
12
+ groupId?: string;
13
+ operator: PropertyFilterRuleGroupOperator;
14
+ items: PropertyFilterBuilderRuleGroupItem[];
15
+ }
16
+ /** @alpha */
17
+ export interface PropertyFilterBuilderRule {
18
+ id: string;
19
+ groupId: string;
20
+ property?: PropertyDescription;
21
+ operator?: PropertyFilterRuleOperator;
22
+ value?: PropertyValue;
23
+ }
24
+ /** @alpha */
25
+ export declare class PropertyFilterBuilderActions {
26
+ private setState;
27
+ constructor(setState: (setter: (prevState: PropertyFilterBuilderState) => PropertyFilterBuilderState) => void);
28
+ private updateState;
29
+ addItem(path: string[], itemType: "RULE_GROUP" | "RULE"): void;
30
+ removeItem(path: string[]): void;
31
+ setRuleGroupOperator(path: string[], operator: PropertyFilterRuleGroupOperator): void;
32
+ setRuleProperty(path: string[], property?: PropertyDescription): void;
33
+ setRuleOperator(path: string[], operator: PropertyFilterRuleOperator): void;
34
+ setRuleValue(path: string[], value: PropertyValue): void;
35
+ }
36
+ /** @alpha */
37
+ export declare function isPropertyFilterBuilderRuleGroup(item: PropertyFilterBuilderRuleGroupItem): item is PropertyFilterBuilderRuleGroup;
38
+ /** @alpha */
39
+ export declare function usePropertyFilterBuilderState(): {
40
+ state: PropertyFilterBuilderState;
41
+ actions: PropertyFilterBuilderActions;
42
+ };
43
+ //# sourceMappingURL=FilterBuilderState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterBuilderState.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderState.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3E,OAAO,EAAiC,+BAA+B,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAEzH,aAAa;AACb,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,8BAA8B,CAAC;CAC3C;AAED,aAAa;AACb,oBAAY,kCAAkC,GAAG,8BAA8B,GAAG,yBAAyB,CAAC;AAE5G,aAAa;AACb,MAAM,WAAW,8BAA8B;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,+BAA+B,CAAC;IAC1C,KAAK,EAAE,kCAAkC,EAAE,CAAC;CAC7C;AAED,aAAa;AACb,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,QAAQ,CAAC,EAAE,0BAA0B,CAAC;IACtC,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,aAAa;AACb,qBAAa,4BAA4B;IAC3B,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,0BAA0B,KAAK,0BAA0B,KAAK,IAAI;IAErH,OAAO,CAAC,WAAW;IAIZ,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,YAAY,GAAG,MAAM;IAUvD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE;IAoBzB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,+BAA+B;IAS9E,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,mBAAmB;IAU9D,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,0BAA0B;IAWpE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa;CAQzD;AAED,aAAa;AACb,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,kCAAkC,GAAG,IAAI,IAAI,8BAA8B,CAEjI;AAED,aAAa;AACb,wBAAgB,6BAA6B;;;EAO5C"}
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.usePropertyFilterBuilderState = exports.isPropertyFilterBuilderRuleGroup = exports.PropertyFilterBuilderActions = void 0;
23
+ /*---------------------------------------------------------------------------------------------
24
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
25
+ * See LICENSE.md in the project root for license terms and full copyright notice.
26
+ *--------------------------------------------------------------------------------------------*/
27
+ const immer_1 = require("immer");
28
+ const React = __importStar(require("react"));
29
+ const core_bentley_1 = require("@itwin/core-bentley");
30
+ const Operators_1 = require("./Operators");
31
+ /** @alpha */
32
+ class PropertyFilterBuilderActions {
33
+ constructor(setState) {
34
+ this.setState = setState;
35
+ }
36
+ updateState(updater) {
37
+ this.setState((0, immer_1.produce)(updater));
38
+ }
39
+ addItem(path, itemType) {
40
+ this.updateState((state) => {
41
+ const parentGroup = findRuleGroup(state.rootGroup, path);
42
+ if (!parentGroup)
43
+ return;
44
+ const item = itemType === "RULE_GROUP" ? createEmptyRuleGroup(parentGroup.id) : createEmptyRule(parentGroup.id);
45
+ parentGroup.items.push(item);
46
+ });
47
+ }
48
+ removeItem(path) {
49
+ function removeItemFromGroup(state, pathToItem) {
50
+ const pathToParent = pathToItem.slice(0, -1);
51
+ const parentGroup = findRuleGroup(state.rootGroup, pathToParent);
52
+ if (!parentGroup)
53
+ return;
54
+ const itemId = pathToItem[pathToItem.length - 1];
55
+ const itemIndex = parentGroup.items.findIndex((item) => item.id === itemId);
56
+ if (itemIndex === -1)
57
+ return;
58
+ parentGroup.items.splice(itemIndex, 1);
59
+ if (parentGroup.items.length === 0)
60
+ removeItemFromGroup(state, pathToParent);
61
+ }
62
+ this.updateState((state) => {
63
+ removeItemFromGroup(state, path);
64
+ });
65
+ }
66
+ setRuleGroupOperator(path, operator) {
67
+ this.updateState((state) => {
68
+ const group = findRuleGroup(state.rootGroup, path);
69
+ if (!group)
70
+ return;
71
+ group.operator = operator;
72
+ });
73
+ }
74
+ setRuleProperty(path, property) {
75
+ this.updateState((state) => {
76
+ const rule = findRule(state.rootGroup, path);
77
+ if (!rule)
78
+ return;
79
+ rule.property = property;
80
+ rule.value = undefined;
81
+ });
82
+ }
83
+ setRuleOperator(path, operator) {
84
+ this.updateState((state) => {
85
+ const rule = findRule(state.rootGroup, path);
86
+ if (!rule)
87
+ return;
88
+ if ((0, Operators_1.isUnaryPropertyFilterOperator)(operator))
89
+ rule.value = undefined;
90
+ rule.operator = operator;
91
+ });
92
+ }
93
+ setRuleValue(path, value) {
94
+ this.updateState((state) => {
95
+ const rule = findRule(state.rootGroup, path);
96
+ if (!rule)
97
+ return;
98
+ rule.value = value;
99
+ });
100
+ }
101
+ }
102
+ exports.PropertyFilterBuilderActions = PropertyFilterBuilderActions;
103
+ /** @alpha */
104
+ function isPropertyFilterBuilderRuleGroup(item) {
105
+ return item.items !== undefined;
106
+ }
107
+ exports.isPropertyFilterBuilderRuleGroup = isPropertyFilterBuilderRuleGroup;
108
+ /** @alpha */
109
+ function usePropertyFilterBuilderState() {
110
+ const [state, setState] = React.useState(() => ({
111
+ rootGroup: createEmptyRuleGroup(),
112
+ }));
113
+ const [actions] = React.useState(() => new PropertyFilterBuilderActions(setState));
114
+ return { state, actions };
115
+ }
116
+ exports.usePropertyFilterBuilderState = usePropertyFilterBuilderState;
117
+ function createEmptyRule(groupId) {
118
+ return {
119
+ id: core_bentley_1.Guid.createValue(),
120
+ groupId,
121
+ };
122
+ }
123
+ function createEmptyRuleGroup(groupId) {
124
+ const id = core_bentley_1.Guid.createValue();
125
+ return {
126
+ id,
127
+ groupId,
128
+ operator: Operators_1.PropertyFilterRuleGroupOperator.And,
129
+ items: [createEmptyRule(id)],
130
+ };
131
+ }
132
+ function findRuleGroup(rootGroup, path) {
133
+ if (path.length === 0)
134
+ return rootGroup;
135
+ const [currentItemId, ...rest] = path;
136
+ const currentItem = rootGroup.items.find((item) => item.id === currentItemId);
137
+ if (!currentItem || !isPropertyFilterBuilderRuleGroup(currentItem))
138
+ return undefined;
139
+ return findRuleGroup(currentItem, rest);
140
+ }
141
+ function findRule(rootGroup, path) {
142
+ if (path.length === 0)
143
+ return undefined;
144
+ const [currentItemId, ...rest] = path;
145
+ const currentItem = rootGroup.items.find((item) => item.id === currentItemId);
146
+ if (!currentItem)
147
+ return undefined;
148
+ if (isPropertyFilterBuilderRuleGroup(currentItem))
149
+ return findRule(currentItem, rest);
150
+ return currentItem;
151
+ }
152
+ //# sourceMappingURL=FilterBuilderState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterBuilderState.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderState.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { Draft, produce } from \"immer\";\r\nimport * as React from \"react\";\r\nimport { PropertyDescription, PropertyValue } from \"@itwin/appui-abstract\";\r\nimport { Guid } from \"@itwin/core-bentley\";\r\nimport { isUnaryPropertyFilterOperator, PropertyFilterRuleGroupOperator, PropertyFilterRuleOperator } from \"./Operators\";\r\n\r\n/** @alpha */\r\nexport interface PropertyFilterBuilderState {\r\n rootGroup: PropertyFilterBuilderRuleGroup;\r\n}\r\n\r\n/** @alpha */\r\nexport type PropertyFilterBuilderRuleGroupItem = PropertyFilterBuilderRuleGroup | PropertyFilterBuilderRule;\r\n\r\n/** @alpha */\r\nexport interface PropertyFilterBuilderRuleGroup {\r\n id: string;\r\n groupId?: string;\r\n operator: PropertyFilterRuleGroupOperator;\r\n items: PropertyFilterBuilderRuleGroupItem[];\r\n}\r\n\r\n/** @alpha */\r\nexport interface PropertyFilterBuilderRule {\r\n id: string;\r\n groupId: string;\r\n property?: PropertyDescription;\r\n operator?: PropertyFilterRuleOperator;\r\n value?: PropertyValue;\r\n}\r\n\r\n/** @alpha */\r\nexport class PropertyFilterBuilderActions {\r\n constructor(private setState: (setter: (prevState: PropertyFilterBuilderState) => PropertyFilterBuilderState) => void) {}\r\n\r\n private updateState(updater: (state: Draft<PropertyFilterBuilderState>) => void) {\r\n this.setState(produce(updater));\r\n }\r\n\r\n public addItem(path: string[], itemType: \"RULE_GROUP\" | \"RULE\") {\r\n this.updateState((state) => {\r\n const parentGroup = findRuleGroup(state.rootGroup, path);\r\n if (!parentGroup)\r\n return;\r\n const item = itemType === \"RULE_GROUP\" ? createEmptyRuleGroup(parentGroup.id) : createEmptyRule(parentGroup.id);\r\n parentGroup.items.push(item);\r\n });\r\n }\r\n\r\n public removeItem(path: string[]) {\r\n function removeItemFromGroup(state: Draft<PropertyFilterBuilderState>, pathToItem: string[]) {\r\n const pathToParent = pathToItem.slice(0, -1);\r\n const parentGroup = findRuleGroup(state.rootGroup, pathToParent);\r\n if (!parentGroup)\r\n return;\r\n const itemId = pathToItem[pathToItem.length - 1];\r\n const itemIndex = parentGroup.items.findIndex((item) => item.id === itemId);\r\n if (itemIndex === -1)\r\n return;\r\n parentGroup.items.splice(itemIndex, 1);\r\n if (parentGroup.items.length === 0)\r\n removeItemFromGroup(state, pathToParent);\r\n }\r\n\r\n this.updateState((state) => {\r\n removeItemFromGroup(state, path);\r\n });\r\n }\r\n\r\n public setRuleGroupOperator(path: string[], operator: PropertyFilterRuleGroupOperator) {\r\n this.updateState((state) => {\r\n const group = findRuleGroup(state.rootGroup, path);\r\n if (!group)\r\n return;\r\n group.operator = operator;\r\n });\r\n }\r\n\r\n public setRuleProperty(path: string[], property?: PropertyDescription) {\r\n this.updateState((state) => {\r\n const rule = findRule(state.rootGroup, path);\r\n if (!rule)\r\n return;\r\n rule.property = property;\r\n rule.value = undefined;\r\n });\r\n }\r\n\r\n public setRuleOperator(path: string[], operator: PropertyFilterRuleOperator) {\r\n this.updateState((state) => {\r\n const rule = findRule(state.rootGroup, path);\r\n if (!rule)\r\n return;\r\n if (isUnaryPropertyFilterOperator(operator))\r\n rule.value = undefined;\r\n rule.operator = operator;\r\n });\r\n }\r\n\r\n public setRuleValue(path: string[], value: PropertyValue) {\r\n this.updateState((state) => {\r\n const rule = findRule(state.rootGroup, path);\r\n if (!rule)\r\n return;\r\n rule.value = value;\r\n });\r\n }\r\n}\r\n\r\n/** @alpha */\r\nexport function isPropertyFilterBuilderRuleGroup(item: PropertyFilterBuilderRuleGroupItem): item is PropertyFilterBuilderRuleGroup {\r\n return (item as any).items !== undefined;\r\n}\r\n\r\n/** @alpha */\r\nexport function usePropertyFilterBuilderState() {\r\n const [state, setState] = React.useState<PropertyFilterBuilderState>(() => ({\r\n rootGroup: createEmptyRuleGroup(),\r\n }));\r\n const [actions] = React.useState(() => new PropertyFilterBuilderActions(setState));\r\n\r\n return { state, actions };\r\n}\r\n\r\nfunction createEmptyRule(groupId: string): PropertyFilterBuilderRule {\r\n return {\r\n id: Guid.createValue(),\r\n groupId,\r\n };\r\n}\r\n\r\nfunction createEmptyRuleGroup(groupId?: string): PropertyFilterBuilderRuleGroup {\r\n const id = Guid.createValue();\r\n return {\r\n id,\r\n groupId,\r\n operator: PropertyFilterRuleGroupOperator.And,\r\n items: [createEmptyRule(id)],\r\n };\r\n}\r\n\r\nfunction findRuleGroup(rootGroup: PropertyFilterBuilderRuleGroup, path: string[]): PropertyFilterBuilderRuleGroup | undefined {\r\n if (path.length === 0)\r\n return rootGroup;\r\n\r\n const [currentItemId, ...rest] = path;\r\n const currentItem = rootGroup.items.find((item) => item.id === currentItemId);\r\n if (!currentItem || !isPropertyFilterBuilderRuleGroup(currentItem))\r\n return undefined;\r\n\r\n return findRuleGroup(currentItem, rest);\r\n}\r\n\r\nfunction findRule(rootGroup: PropertyFilterBuilderRuleGroup, path: string[]): PropertyFilterBuilderRule | undefined {\r\n if (path.length === 0)\r\n return undefined;\r\n\r\n const [currentItemId, ...rest] = path;\r\n const currentItem = rootGroup.items.find((item) => item.id === currentItemId);\r\n if (!currentItem)\r\n return undefined;\r\n\r\n if (isPropertyFilterBuilderRuleGroup(currentItem))\r\n return findRule(currentItem, rest);\r\n\r\n return currentItem;\r\n}\r\n"]}
@@ -0,0 +1,27 @@
1
+ import { PropertyDescription } from "@itwin/appui-abstract";
2
+ /** @alpha */
3
+ export declare enum PropertyFilterRuleGroupOperator {
4
+ And = 0,
5
+ Or = 1
6
+ }
7
+ /** @alpha */
8
+ export declare enum PropertyFilterRuleOperator {
9
+ IsTrue = 0,
10
+ IsFalse = 1,
11
+ IsEqual = 2,
12
+ IsNotEqual = 3,
13
+ Greater = 4,
14
+ GreaterOrEqual = 5,
15
+ Less = 6,
16
+ LessOrEqual = 7,
17
+ Like = 8,
18
+ IsNull = 9,
19
+ IsNotNull = 10
20
+ }
21
+ /** @alpha */
22
+ export declare function getPropertyFilterOperators(property: PropertyDescription): PropertyFilterRuleOperator[];
23
+ /** @alpha */
24
+ export declare function getPropertyFilterOperatorLabel(operator: PropertyFilterRuleOperator): string;
25
+ /** @alpha */
26
+ export declare function isUnaryPropertyFilterOperator(operator: PropertyFilterRuleOperator): boolean;
27
+ //# sourceMappingURL=Operators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Operators.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/Operators.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAqB,MAAM,uBAAuB,CAAC;AAG/E,aAAa;AACb,oBAAY,+BAA+B;IACzC,GAAG,IAAA;IACH,EAAE,IAAA;CACH;AAED,aAAa;AACb,oBAAY,0BAA0B;IACpC,MAAM,IAAA;IACN,OAAO,IAAA;IAEP,OAAO,IAAA;IACP,UAAU,IAAA;IAEV,OAAO,IAAA;IACP,cAAc,IAAA;IACd,IAAI,IAAA;IACJ,WAAW,IAAA;IAEX,IAAI,IAAA;IAEJ,MAAM,IAAA;IACN,SAAS,KAAA;CACV;AAED,aAAa;AACb,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,mBAAmB,gCA2CvE;AAGD,aAAa;AACb,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,0BAA0B,UAyBlF;AAED,aAAa;AACb,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,0BAA0B,WASjF"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isUnaryPropertyFilterOperator = exports.getPropertyFilterOperatorLabel = exports.getPropertyFilterOperators = exports.PropertyFilterRuleOperator = exports.PropertyFilterRuleGroupOperator = void 0;
4
+ /*---------------------------------------------------------------------------------------------
5
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
+ * See LICENSE.md in the project root for license terms and full copyright notice.
7
+ *--------------------------------------------------------------------------------------------*/
8
+ const appui_abstract_1 = require("@itwin/appui-abstract");
9
+ const UiComponents_1 = require("../UiComponents");
10
+ /** @alpha */
11
+ var PropertyFilterRuleGroupOperator;
12
+ (function (PropertyFilterRuleGroupOperator) {
13
+ PropertyFilterRuleGroupOperator[PropertyFilterRuleGroupOperator["And"] = 0] = "And";
14
+ PropertyFilterRuleGroupOperator[PropertyFilterRuleGroupOperator["Or"] = 1] = "Or";
15
+ })(PropertyFilterRuleGroupOperator = exports.PropertyFilterRuleGroupOperator || (exports.PropertyFilterRuleGroupOperator = {}));
16
+ /** @alpha */
17
+ var PropertyFilterRuleOperator;
18
+ (function (PropertyFilterRuleOperator) {
19
+ PropertyFilterRuleOperator[PropertyFilterRuleOperator["IsTrue"] = 0] = "IsTrue";
20
+ PropertyFilterRuleOperator[PropertyFilterRuleOperator["IsFalse"] = 1] = "IsFalse";
21
+ PropertyFilterRuleOperator[PropertyFilterRuleOperator["IsEqual"] = 2] = "IsEqual";
22
+ PropertyFilterRuleOperator[PropertyFilterRuleOperator["IsNotEqual"] = 3] = "IsNotEqual";
23
+ PropertyFilterRuleOperator[PropertyFilterRuleOperator["Greater"] = 4] = "Greater";
24
+ PropertyFilterRuleOperator[PropertyFilterRuleOperator["GreaterOrEqual"] = 5] = "GreaterOrEqual";
25
+ PropertyFilterRuleOperator[PropertyFilterRuleOperator["Less"] = 6] = "Less";
26
+ PropertyFilterRuleOperator[PropertyFilterRuleOperator["LessOrEqual"] = 7] = "LessOrEqual";
27
+ PropertyFilterRuleOperator[PropertyFilterRuleOperator["Like"] = 8] = "Like";
28
+ PropertyFilterRuleOperator[PropertyFilterRuleOperator["IsNull"] = 9] = "IsNull";
29
+ PropertyFilterRuleOperator[PropertyFilterRuleOperator["IsNotNull"] = 10] = "IsNotNull";
30
+ })(PropertyFilterRuleOperator = exports.PropertyFilterRuleOperator || (exports.PropertyFilterRuleOperator = {}));
31
+ /** @alpha */
32
+ function getPropertyFilterOperators(property) {
33
+ const typename = property.typename;
34
+ if (typename === appui_abstract_1.StandardTypeNames.Bool || typename === appui_abstract_1.StandardTypeNames.Boolean) {
35
+ return [
36
+ PropertyFilterRuleOperator.IsTrue,
37
+ PropertyFilterRuleOperator.IsFalse,
38
+ ];
39
+ }
40
+ const operators = [
41
+ PropertyFilterRuleOperator.IsEqual,
42
+ PropertyFilterRuleOperator.IsNotEqual,
43
+ PropertyFilterRuleOperator.IsNull,
44
+ PropertyFilterRuleOperator.IsNotNull,
45
+ ];
46
+ if (typename === appui_abstract_1.StandardTypeNames.Number
47
+ || typename === appui_abstract_1.StandardTypeNames.Int
48
+ || typename === appui_abstract_1.StandardTypeNames.Integer
49
+ || typename === appui_abstract_1.StandardTypeNames.Double
50
+ || typename === appui_abstract_1.StandardTypeNames.Float
51
+ || typename === appui_abstract_1.StandardTypeNames.Hex
52
+ || typename === appui_abstract_1.StandardTypeNames.Hexadecimal
53
+ || typename === appui_abstract_1.StandardTypeNames.ShortDate
54
+ || typename === appui_abstract_1.StandardTypeNames.DateTime) {
55
+ return [
56
+ ...operators,
57
+ PropertyFilterRuleOperator.Greater,
58
+ PropertyFilterRuleOperator.GreaterOrEqual,
59
+ PropertyFilterRuleOperator.Less,
60
+ PropertyFilterRuleOperator.LessOrEqual,
61
+ ];
62
+ }
63
+ if (typename === appui_abstract_1.StandardTypeNames.String || typename === appui_abstract_1.StandardTypeNames.Text) {
64
+ return [
65
+ ...operators,
66
+ PropertyFilterRuleOperator.Like,
67
+ ];
68
+ }
69
+ return operators;
70
+ }
71
+ exports.getPropertyFilterOperators = getPropertyFilterOperators;
72
+ /* istanbul ignore next */
73
+ /** @alpha */
74
+ function getPropertyFilterOperatorLabel(operator) {
75
+ switch (operator) {
76
+ case PropertyFilterRuleOperator.IsTrue:
77
+ return UiComponents_1.UiComponents.translate("filterBuilder.operators.isTrue");
78
+ case PropertyFilterRuleOperator.IsFalse:
79
+ return UiComponents_1.UiComponents.translate("filterBuilder.operators.isFalse");
80
+ case PropertyFilterRuleOperator.IsEqual:
81
+ return UiComponents_1.UiComponents.translate("filterBuilder.operators.equal");
82
+ case PropertyFilterRuleOperator.IsNotEqual:
83
+ return UiComponents_1.UiComponents.translate("filterBuilder.operators.notEqual");
84
+ case PropertyFilterRuleOperator.Greater:
85
+ return ">";
86
+ case PropertyFilterRuleOperator.GreaterOrEqual:
87
+ return ">=";
88
+ case PropertyFilterRuleOperator.Less:
89
+ return "<";
90
+ case PropertyFilterRuleOperator.LessOrEqual:
91
+ return "<=";
92
+ case PropertyFilterRuleOperator.Like:
93
+ return UiComponents_1.UiComponents.translate("filterBuilder.operators.contains");
94
+ case PropertyFilterRuleOperator.IsNull:
95
+ return UiComponents_1.UiComponents.translate("filterBuilder.operators.isNull");
96
+ case PropertyFilterRuleOperator.IsNotNull:
97
+ return UiComponents_1.UiComponents.translate("filterBuilder.operators.isNotNull");
98
+ }
99
+ }
100
+ exports.getPropertyFilterOperatorLabel = getPropertyFilterOperatorLabel;
101
+ /** @alpha */
102
+ function isUnaryPropertyFilterOperator(operator) {
103
+ switch (operator) {
104
+ case PropertyFilterRuleOperator.IsTrue:
105
+ case PropertyFilterRuleOperator.IsFalse:
106
+ case PropertyFilterRuleOperator.IsNull:
107
+ case PropertyFilterRuleOperator.IsNotNull:
108
+ return true;
109
+ }
110
+ return false;
111
+ }
112
+ exports.isUnaryPropertyFilterOperator = isUnaryPropertyFilterOperator;
113
+ //# sourceMappingURL=Operators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Operators.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/Operators.ts"],"names":[],"mappings":";;;AAAA;;;+FAG+F;AAC/F,0DAA+E;AAC/E,kDAA+C;AAE/C,aAAa;AACb,IAAY,+BAGX;AAHD,WAAY,+BAA+B;IACzC,mFAAG,CAAA;IACH,iFAAE,CAAA;AACJ,CAAC,EAHW,+BAA+B,GAA/B,uCAA+B,KAA/B,uCAA+B,QAG1C;AAED,aAAa;AACb,IAAY,0BAgBX;AAhBD,WAAY,0BAA0B;IACpC,+EAAM,CAAA;IACN,iFAAO,CAAA;IAEP,iFAAO,CAAA;IACP,uFAAU,CAAA;IAEV,iFAAO,CAAA;IACP,+FAAc,CAAA;IACd,2EAAI,CAAA;IACJ,yFAAW,CAAA;IAEX,2EAAI,CAAA;IAEJ,+EAAM,CAAA;IACN,sFAAS,CAAA;AACX,CAAC,EAhBW,0BAA0B,GAA1B,kCAA0B,KAA1B,kCAA0B,QAgBrC;AAED,aAAa;AACb,SAAgB,0BAA0B,CAAC,QAA6B;IACtE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAEnC,IAAI,QAAQ,KAAK,kCAAiB,CAAC,IAAI,IAAI,QAAQ,KAAK,kCAAiB,CAAC,OAAO,EAAE;QACjF,OAAO;YACL,0BAA0B,CAAC,MAAM;YACjC,0BAA0B,CAAC,OAAO;SACnC,CAAC;KACH;IAED,MAAM,SAAS,GAAG;QAChB,0BAA0B,CAAC,OAAO;QAClC,0BAA0B,CAAC,UAAU;QACrC,0BAA0B,CAAC,MAAM;QACjC,0BAA0B,CAAC,SAAS;KACrC,CAAC;IAEF,IAAI,QAAQ,KAAK,kCAAiB,CAAC,MAAM;WACpC,QAAQ,KAAK,kCAAiB,CAAC,GAAG;WAClC,QAAQ,KAAK,kCAAiB,CAAC,OAAO;WACtC,QAAQ,KAAK,kCAAiB,CAAC,MAAM;WACrC,QAAQ,KAAK,kCAAiB,CAAC,KAAK;WACpC,QAAQ,KAAK,kCAAiB,CAAC,GAAG;WAClC,QAAQ,KAAK,kCAAiB,CAAC,WAAW;WAC1C,QAAQ,KAAK,kCAAiB,CAAC,SAAS;WACxC,QAAQ,KAAK,kCAAiB,CAAC,QAAQ,EAAE;QAC5C,OAAO;YACL,GAAG,SAAS;YACZ,0BAA0B,CAAC,OAAO;YAClC,0BAA0B,CAAC,cAAc;YACzC,0BAA0B,CAAC,IAAI;YAC/B,0BAA0B,CAAC,WAAW;SACvC,CAAC;KACH;IAED,IAAI,QAAQ,KAAK,kCAAiB,CAAC,MAAM,IAAI,QAAQ,KAAK,kCAAiB,CAAC,IAAI,EAAE;QAChF,OAAO;YACL,GAAG,SAAS;YACZ,0BAA0B,CAAC,IAAI;SAChC,CAAC;KACH;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AA3CD,gEA2CC;AAED,0BAA0B;AAC1B,aAAa;AACb,SAAgB,8BAA8B,CAAC,QAAoC;IACjF,QAAO,QAAQ,EAAE;QACf,KAAK,0BAA0B,CAAC,MAAM;YACpC,OAAO,2BAAY,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;QAClE,KAAK,0BAA0B,CAAC,OAAO;YACrC,OAAO,2BAAY,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC;QACnE,KAAK,0BAA0B,CAAC,OAAO;YACrC,OAAO,2BAAY,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;QACjE,KAAK,0BAA0B,CAAC,UAAU;YACxC,OAAO,2BAAY,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;QACpE,KAAK,0BAA0B,CAAC,OAAO;YACrC,OAAO,GAAG,CAAC;QACb,KAAK,0BAA0B,CAAC,cAAc;YAC5C,OAAO,IAAI,CAAC;QACd,KAAK,0BAA0B,CAAC,IAAI;YAClC,OAAO,GAAG,CAAC;QACb,KAAK,0BAA0B,CAAC,WAAW;YACzC,OAAO,IAAI,CAAC;QACd,KAAK,0BAA0B,CAAC,IAAI;YAClC,OAAO,2BAAY,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;QACpE,KAAK,0BAA0B,CAAC,MAAM;YACpC,OAAO,2BAAY,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;QAClE,KAAK,0BAA0B,CAAC,SAAS;YACvC,OAAO,2BAAY,CAAC,SAAS,CAAC,mCAAmC,CAAC,CAAC;KACtE;AACH,CAAC;AAzBD,wEAyBC;AAED,aAAa;AACb,SAAgB,6BAA6B,CAAC,QAAoC;IAChF,QAAQ,QAAQ,EAAE;QAChB,KAAK,0BAA0B,CAAC,MAAM,CAAC;QACvC,KAAK,0BAA0B,CAAC,OAAO,CAAC;QACxC,KAAK,0BAA0B,CAAC,MAAM,CAAC;QACvC,KAAK,0BAA0B,CAAC,SAAS;YACvC,OAAO,IAAI,CAAC;KACf;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AATD,sEASC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { PropertyDescription, StandardTypeNames } from \"@itwin/appui-abstract\";\r\nimport { UiComponents } from \"../UiComponents\";\r\n\r\n/** @alpha */\r\nexport enum PropertyFilterRuleGroupOperator {\r\n And,\r\n Or,\r\n}\r\n\r\n/** @alpha */\r\nexport enum PropertyFilterRuleOperator {\r\n IsTrue,\r\n IsFalse,\r\n\r\n IsEqual,\r\n IsNotEqual,\r\n\r\n Greater,\r\n GreaterOrEqual,\r\n Less,\r\n LessOrEqual,\r\n\r\n Like,\r\n\r\n IsNull,\r\n IsNotNull,\r\n}\r\n\r\n/** @alpha */\r\nexport function getPropertyFilterOperators(property: PropertyDescription) {\r\n const typename = property.typename;\r\n\r\n if (typename === StandardTypeNames.Bool || typename === StandardTypeNames.Boolean) {\r\n return [\r\n PropertyFilterRuleOperator.IsTrue,\r\n PropertyFilterRuleOperator.IsFalse,\r\n ];\r\n }\r\n\r\n const operators = [\r\n PropertyFilterRuleOperator.IsEqual,\r\n PropertyFilterRuleOperator.IsNotEqual,\r\n PropertyFilterRuleOperator.IsNull,\r\n PropertyFilterRuleOperator.IsNotNull,\r\n ];\r\n\r\n if (typename === StandardTypeNames.Number\r\n || typename === StandardTypeNames.Int\r\n || typename === StandardTypeNames.Integer\r\n || typename === StandardTypeNames.Double\r\n || typename === StandardTypeNames.Float\r\n || typename === StandardTypeNames.Hex\r\n || typename === StandardTypeNames.Hexadecimal\r\n || typename === StandardTypeNames.ShortDate\r\n || typename === StandardTypeNames.DateTime) {\r\n return [\r\n ...operators,\r\n PropertyFilterRuleOperator.Greater,\r\n PropertyFilterRuleOperator.GreaterOrEqual,\r\n PropertyFilterRuleOperator.Less,\r\n PropertyFilterRuleOperator.LessOrEqual,\r\n ];\r\n }\r\n\r\n if (typename === StandardTypeNames.String || typename === StandardTypeNames.Text) {\r\n return [\r\n ...operators,\r\n PropertyFilterRuleOperator.Like,\r\n ];\r\n }\r\n\r\n return operators;\r\n}\r\n\r\n/* istanbul ignore next */\r\n/** @alpha */\r\nexport function getPropertyFilterOperatorLabel(operator: PropertyFilterRuleOperator) {\r\n switch(operator) {\r\n case PropertyFilterRuleOperator.IsTrue:\r\n return UiComponents.translate(\"filterBuilder.operators.isTrue\");\r\n case PropertyFilterRuleOperator.IsFalse:\r\n return UiComponents.translate(\"filterBuilder.operators.isFalse\");\r\n case PropertyFilterRuleOperator.IsEqual:\r\n return UiComponents.translate(\"filterBuilder.operators.equal\");\r\n case PropertyFilterRuleOperator.IsNotEqual:\r\n return UiComponents.translate(\"filterBuilder.operators.notEqual\");\r\n case PropertyFilterRuleOperator.Greater:\r\n return \">\";\r\n case PropertyFilterRuleOperator.GreaterOrEqual:\r\n return \">=\";\r\n case PropertyFilterRuleOperator.Less:\r\n return \"<\";\r\n case PropertyFilterRuleOperator.LessOrEqual:\r\n return \"<=\";\r\n case PropertyFilterRuleOperator.Like:\r\n return UiComponents.translate(\"filterBuilder.operators.contains\");\r\n case PropertyFilterRuleOperator.IsNull:\r\n return UiComponents.translate(\"filterBuilder.operators.isNull\");\r\n case PropertyFilterRuleOperator.IsNotNull:\r\n return UiComponents.translate(\"filterBuilder.operators.isNotNull\");\r\n }\r\n}\r\n\r\n/** @alpha */\r\nexport function isUnaryPropertyFilterOperator(operator: PropertyFilterRuleOperator) {\r\n switch (operator) {\r\n case PropertyFilterRuleOperator.IsTrue:\r\n case PropertyFilterRuleOperator.IsFalse:\r\n case PropertyFilterRuleOperator.IsNull:\r\n case PropertyFilterRuleOperator.IsNotNull:\r\n return true;\r\n }\r\n return false;\r\n}\r\n"]}
@@ -0,0 +1,18 @@
1
+ import { PropertyDescription, PropertyValue } from "@itwin/appui-abstract";
2
+ import { PropertyFilterRuleGroupOperator, PropertyFilterRuleOperator } from "./Operators";
3
+ /** @alpha */
4
+ export declare type PropertyFilter = PropertyFilterRule | PropertyFilterRuleGroup;
5
+ /** @alpha */
6
+ export interface PropertyFilterRuleGroup {
7
+ operator: PropertyFilterRuleGroupOperator;
8
+ rules: Array<PropertyFilter>;
9
+ }
10
+ /** @alpha */
11
+ export interface PropertyFilterRule {
12
+ property: PropertyDescription;
13
+ operator: PropertyFilterRuleOperator;
14
+ value?: PropertyValue;
15
+ }
16
+ /** @alpha */
17
+ export declare function isPropertyFilterRuleGroup(filter: PropertyFilter): filter is PropertyFilterRuleGroup;
18
+ //# sourceMappingURL=Types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Types.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/Types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,+BAA+B,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAE1F,aAAa;AACb,oBAAY,cAAc,GAAG,kBAAkB,GAAG,uBAAuB,CAAC;AAE1E,aAAa;AACb,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,+BAA+B,CAAC;IAC1C,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;CAC9B;AAED,aAAa;AACb,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,QAAQ,EAAE,0BAA0B,CAAC;IACrC,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,aAAa;AACb,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,IAAI,uBAAuB,CAEnG"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isPropertyFilterRuleGroup = void 0;
4
+ /** @alpha */
5
+ function isPropertyFilterRuleGroup(filter) {
6
+ return filter.rules !== undefined;
7
+ }
8
+ exports.isPropertyFilterRuleGroup = isPropertyFilterRuleGroup;
9
+ //# sourceMappingURL=Types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Types.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/Types.ts"],"names":[],"mappings":";;;AAuBA,aAAa;AACb,SAAgB,yBAAyB,CAAC,MAAsB;IAC9D,OAAQ,MAAc,CAAC,KAAK,KAAK,SAAS,CAAC;AAC7C,CAAC;AAFD,8DAEC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { PropertyDescription, PropertyValue } from \"@itwin/appui-abstract\";\r\nimport { PropertyFilterRuleGroupOperator, PropertyFilterRuleOperator } from \"./Operators\";\r\n\r\n/** @alpha */\r\nexport type PropertyFilter = PropertyFilterRule | PropertyFilterRuleGroup;\r\n\r\n/** @alpha */\r\nexport interface PropertyFilterRuleGroup {\r\n operator: PropertyFilterRuleGroupOperator;\r\n rules: Array<PropertyFilter>;\r\n}\r\n\r\n/** @alpha */\r\nexport interface PropertyFilterRule {\r\n property: PropertyDescription;\r\n operator: PropertyFilterRuleOperator;\r\n value?: PropertyValue;\r\n}\r\n\r\n/** @alpha */\r\nexport function isPropertyFilterRuleGroup(filter: PropertyFilter): filter is PropertyFilterRuleGroup {\r\n return (filter as any).rules !== undefined;\r\n}\r\n"]}
@@ -3,6 +3,7 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  @import "~@itwin/core-react/lib/cjs/core-react/z-index";
6
+ @import "~@itwin/itwinui-css/scss/style/speed";
6
7
  @import "variables";
7
8
 
8
9
  .components-toolbar-button-item.components-ellipsis-icon {
@@ -47,10 +48,10 @@
47
48
 
48
49
  @include uicore-z-index(toolbar-panels);
49
50
 
50
- transition: visibility 0.5s ease, opacity 0.5s ease;
51
+ transition: visibility $iui-speed ease, opacity $iui-speed ease;
51
52
 
52
53
  &.nz-hidden {
53
54
  opacity: 0;
54
55
  visibility: hidden;
55
56
  }
56
- }
57
+ }
@@ -4,6 +4,7 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  @import "~@itwin/core-react/lib/cjs/core-react/z-index";
6
6
  @import "~@itwin/core-react/lib/cjs/core-react/geometry";
7
+ @import "~@itwin/itwinui-css/scss/style/speed";
7
8
  @import "variables";
8
9
 
9
10
  .components-toolbar-expandable-button {
@@ -29,11 +30,9 @@
29
30
  filter: $arrow-shadow;
30
31
  pointer-events: none;
31
32
 
32
- @include triangle-bottom-right(
33
- $width: $triangle-width,
33
+ @include triangle-bottom-right($width: $triangle-width,
34
34
  $height: $triangle-height,
35
- $color: $buic-icon-color
36
- );
35
+ $color: $buic-icon-color );
37
36
  }
38
37
 
39
38
  &:active>.components-triangle {
@@ -78,7 +77,7 @@
78
77
  border-style: solid;
79
78
  border-radius: 3px;
80
79
 
81
- transition: visibility 0.5s ease, opacity 0.5s ease;
80
+ transition: visibility $iui-speed ease, opacity $iui-speed ease;
82
81
 
83
82
  &.nz-hidden {
84
83
  opacity: 0;
@@ -1 +1 @@
1
- {"version":3,"file":"TreeHooks.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeHooks.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvE;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,eAAe,GAAG,SAAS,CAYpE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,SAAS,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,iCAGlI;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,SAAS,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,sCAGzJ;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,mBAGhE;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,cAAc,SAAS,gBAAgB,EAAE,eAAe,EAAE,CAAC,MAAM,cAAc,CAAC,GAAG,sBAAsB,oBAO7I"}
1
+ {"version":3,"file":"TreeHooks.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeHooks.ts"],"names":[],"mappings":"AAIA;;GAEG;AAKH,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvE;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,eAAe,GAAG,SAAS,CAMpE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,SAAS,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,iCAGlI;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,SAAS,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,sCAGzJ;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,mBAGhE;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,cAAc,SAAS,gBAAgB,EAAE,eAAe,EAAE,CAAC,MAAM,cAAc,CAAC,GAAG,sBAAsB,oBAO7I"}