@itwin/components-react 3.6.0-dev.55 → 3.6.0-dev.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/components-react/breadcrumb/Breadcrumb.d.ts +5 -5
- package/lib/cjs/components-react/breadcrumb/Breadcrumb.js +3 -3
- package/lib/cjs/components-react/breadcrumb/Breadcrumb.js.map +1 -1
- package/lib/cjs/components-react/breadcrumb/BreadcrumbDetails.d.ts +2 -2
- package/lib/cjs/components-react/breadcrumb/BreadcrumbDetails.js +1 -1
- package/lib/cjs/components-react/breadcrumb/BreadcrumbDetails.js.map +1 -1
- package/lib/cjs/components-react/breadcrumb/BreadcrumbPath.d.ts +3 -3
- package/lib/cjs/components-react/breadcrumb/BreadcrumbPath.js +2 -2
- package/lib/cjs/components-react/breadcrumb/BreadcrumbPath.js.map +1 -1
- package/lib/cjs/components-react/breadcrumb/BreadcrumbTreeUtils.d.ts +1 -1
- package/lib/cjs/components-react/breadcrumb/BreadcrumbTreeUtils.js +1 -1
- package/lib/cjs/components-react/breadcrumb/BreadcrumbTreeUtils.js.map +1 -1
- package/lib/cjs/components-react/common/showhide/ShowHideDialog.d.ts +2 -2
- package/lib/cjs/components-react/common/showhide/ShowHideDialog.js +1 -1
- package/lib/cjs/components-react/common/showhide/ShowHideDialog.js.map +1 -1
- package/lib/cjs/components-react/common/showhide/ShowHideItem.d.ts +2 -2
- package/lib/cjs/components-react/common/showhide/ShowHideItem.js.map +1 -1
- package/lib/cjs/components-react/common/showhide/ShowHideMenu.d.ts +2 -2
- package/lib/cjs/components-react/common/showhide/ShowHideMenu.js +1 -1
- package/lib/cjs/components-react/common/showhide/ShowHideMenu.js.map +1 -1
- package/lib/cjs/components-react/editors/ThemedEnumEditor.d.ts +3 -3
- package/lib/cjs/components-react/editors/ThemedEnumEditor.js +2 -2
- package/lib/cjs/components-react/editors/ThemedEnumEditor.js.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilder.d.ts +22 -25
- package/lib/cjs/components-react/filter-builder/FilterBuilder.d.ts.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilder.js +19 -81
- package/lib/cjs/components-react/filter-builder/FilterBuilder.js.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderContext.d.ts +80 -0
- package/lib/cjs/components-react/filter-builder/FilterBuilderContext.d.ts.map +1 -0
- package/lib/cjs/components-react/filter-builder/FilterBuilderContext.js +83 -0
- package/lib/cjs/components-react/filter-builder/FilterBuilderContext.js.map +1 -0
- package/lib/cjs/components-react/filter-builder/FilterBuilderRule.d.ts +14 -3
- package/lib/cjs/components-react/filter-builder/FilterBuilderRule.d.ts.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderRule.js +16 -10
- package/lib/cjs/components-react/filter-builder/FilterBuilderRule.js.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderRule.scss +4 -0
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.d.ts +25 -16
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.d.ts.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.js +22 -14
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.d.ts +14 -2
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.d.ts.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js +11 -5
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.d.ts +16 -2
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.d.ts.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js +11 -5
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.d.ts +14 -2
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.d.ts.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js +11 -5
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderState.d.ts +50 -7
- package/lib/cjs/components-react/filter-builder/FilterBuilderState.d.ts.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderState.js +60 -8
- package/lib/cjs/components-react/filter-builder/FilterBuilderState.js.map +1 -1
- package/lib/cjs/components-react/filter-builder/Operators.d.ts +23 -5
- package/lib/cjs/components-react/filter-builder/Operators.d.ts.map +1 -1
- package/lib/cjs/components-react/filter-builder/Operators.js +25 -7
- package/lib/cjs/components-react/filter-builder/Operators.js.map +1 -1
- package/lib/cjs/components-react/filter-builder/Types.d.ts +24 -4
- package/lib/cjs/components-react/filter-builder/Types.d.ts.map +1 -1
- package/lib/cjs/components-react/filter-builder/Types.js +11 -1
- package/lib/cjs/components-react/filter-builder/Types.js.map +1 -1
- package/lib/cjs/components-react/iconpicker/IconPickerButton.d.ts +2 -2
- package/lib/cjs/components-react/iconpicker/IconPickerButton.js +2 -2
- package/lib/cjs/components-react/iconpicker/IconPickerButton.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/component/PropertyGrid.d.ts +1 -1
- package/lib/cjs/components-react/propertygrid/component/PropertyGrid.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-items/FlatGridItem.d.ts +2 -2
- package/lib/cjs/components-react/propertygrid/internal/flat-items/FlatGridItem.d.ts.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-items/FlatGridItem.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.d.ts +2 -2
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
- package/lib/cjs/components-react/table/SimpleTableDataProvider.d.ts +1 -1
- package/lib/cjs/components-react/table/SimpleTableDataProvider.js +1 -1
- package/lib/cjs/components-react/table/SimpleTableDataProvider.js.map +1 -1
- package/lib/cjs/components-react/table/TableDataProvider.d.ts +8 -8
- package/lib/cjs/components-react/table/TableDataProvider.js +2 -2
- package/lib/cjs/components-react/table/TableDataProvider.js.map +1 -1
- package/lib/cjs/components-react/table/columnfiltering/ColumnFiltering.d.ts +16 -16
- package/lib/cjs/components-react/table/columnfiltering/ColumnFiltering.js +6 -6
- package/lib/cjs/components-react/table/columnfiltering/ColumnFiltering.js.map +1 -1
- package/lib/cjs/components-react/table/component/ColumnDragLayer.d.ts +1 -1
- package/lib/cjs/components-react/table/component/ColumnDragLayer.js +1 -1
- package/lib/cjs/components-react/table/component/ColumnDragLayer.js.map +1 -1
- package/lib/cjs/components-react/table/component/Table.d.ts +9 -9
- package/lib/cjs/components-react/table/component/Table.d.ts.map +1 -1
- package/lib/cjs/components-react/table/component/Table.js +2 -2
- package/lib/cjs/components-react/table/component/Table.js.map +1 -1
- package/lib/cjs/components-react/table/component/TableCell.d.ts +6 -6
- package/lib/cjs/components-react/table/component/TableCell.js +3 -3
- package/lib/cjs/components-react/table/component/TableCell.js.map +1 -1
- package/lib/cjs/components-react/table/component/TableColumn.d.ts +1 -1
- package/lib/cjs/components-react/table/component/TableColumn.js.map +1 -1
- package/lib/cjs/components-react/table/component/dragdrop/BeDragDropContext.d.ts +1 -1
- package/lib/cjs/components-react/table/component/dragdrop/BeDragDropContext.js +1 -1
- package/lib/cjs/components-react/table/component/dragdrop/BeDragDropContext.js.map +1 -1
- package/lib/cjs/components-react/table/component/dragdrop/DragDropDef.d.ts +8 -8
- package/lib/cjs/components-react/table/component/dragdrop/DragDropDef.js +2 -2
- package/lib/cjs/components-react/table/component/dragdrop/DragDropDef.js.map +1 -1
- package/lib/cjs/components-react/table/component/dragdrop/withDragSource.d.ts +2 -2
- package/lib/cjs/components-react/table/component/dragdrop/withDragSource.js +1 -1
- package/lib/cjs/components-react/table/component/dragdrop/withDragSource.js.map +1 -1
- package/lib/cjs/components-react/table/component/dragdrop/withDropTarget.d.ts +2 -2
- package/lib/cjs/components-react/table/component/dragdrop/withDropTarget.js +1 -1
- package/lib/cjs/components-react/table/component/dragdrop/withDropTarget.js.map +1 -1
- package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.d.ts +1 -1
- package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.d.ts.map +1 -1
- package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.js.map +1 -1
- package/lib/cjs/components-react/tree/TreeDataProvider.d.ts +2 -2
- package/lib/cjs/components-react/tree/TreeDataProvider.d.ts.map +1 -1
- package/lib/cjs/components-react/tree/TreeDataProvider.js.map +1 -1
- package/lib/cjs/components-react.d.ts +4 -6
- package/lib/cjs/components-react.d.ts.map +1 -1
- package/lib/cjs/components-react.js +4 -6
- package/lib/cjs/components-react.js.map +1 -1
- package/lib/esm/components-react/breadcrumb/Breadcrumb.d.ts +5 -5
- package/lib/esm/components-react/breadcrumb/Breadcrumb.js +3 -3
- package/lib/esm/components-react/breadcrumb/Breadcrumb.js.map +1 -1
- package/lib/esm/components-react/breadcrumb/BreadcrumbDetails.d.ts +2 -2
- package/lib/esm/components-react/breadcrumb/BreadcrumbDetails.js +1 -1
- package/lib/esm/components-react/breadcrumb/BreadcrumbDetails.js.map +1 -1
- package/lib/esm/components-react/breadcrumb/BreadcrumbPath.d.ts +3 -3
- package/lib/esm/components-react/breadcrumb/BreadcrumbPath.js +2 -2
- package/lib/esm/components-react/breadcrumb/BreadcrumbPath.js.map +1 -1
- package/lib/esm/components-react/breadcrumb/BreadcrumbTreeUtils.d.ts +1 -1
- package/lib/esm/components-react/breadcrumb/BreadcrumbTreeUtils.js +1 -1
- package/lib/esm/components-react/breadcrumb/BreadcrumbTreeUtils.js.map +1 -1
- package/lib/esm/components-react/common/showhide/ShowHideDialog.d.ts +2 -2
- package/lib/esm/components-react/common/showhide/ShowHideDialog.js +1 -1
- package/lib/esm/components-react/common/showhide/ShowHideDialog.js.map +1 -1
- package/lib/esm/components-react/common/showhide/ShowHideItem.d.ts +2 -2
- package/lib/esm/components-react/common/showhide/ShowHideItem.js.map +1 -1
- package/lib/esm/components-react/common/showhide/ShowHideMenu.d.ts +2 -2
- package/lib/esm/components-react/common/showhide/ShowHideMenu.js +1 -1
- package/lib/esm/components-react/common/showhide/ShowHideMenu.js.map +1 -1
- package/lib/esm/components-react/editors/ThemedEnumEditor.d.ts +3 -3
- package/lib/esm/components-react/editors/ThemedEnumEditor.js +2 -2
- package/lib/esm/components-react/editors/ThemedEnumEditor.js.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilder.d.ts +22 -25
- package/lib/esm/components-react/filter-builder/FilterBuilder.d.ts.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilder.js +12 -73
- package/lib/esm/components-react/filter-builder/FilterBuilder.js.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderContext.d.ts +80 -0
- package/lib/esm/components-react/filter-builder/FilterBuilderContext.d.ts.map +1 -0
- package/lib/esm/components-react/filter-builder/FilterBuilderContext.js +60 -0
- package/lib/esm/components-react/filter-builder/FilterBuilderContext.js.map +1 -0
- package/lib/esm/components-react/filter-builder/FilterBuilderRule.d.ts +14 -3
- package/lib/esm/components-react/filter-builder/FilterBuilderRule.d.ts.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRule.js +11 -5
- package/lib/esm/components-react/filter-builder/FilterBuilderRule.js.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRule.scss +4 -0
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.d.ts +25 -16
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.d.ts.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.js +15 -7
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.d.ts +14 -2
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.d.ts.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js +7 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.d.ts +16 -2
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.d.ts.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js +7 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.d.ts +14 -2
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.d.ts.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js +7 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderState.d.ts +50 -7
- package/lib/esm/components-react/filter-builder/FilterBuilderState.d.ts.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderState.js +54 -3
- package/lib/esm/components-react/filter-builder/FilterBuilderState.js.map +1 -1
- package/lib/esm/components-react/filter-builder/Operators.d.ts +23 -5
- package/lib/esm/components-react/filter-builder/Operators.d.ts.map +1 -1
- package/lib/esm/components-react/filter-builder/Operators.js +23 -5
- package/lib/esm/components-react/filter-builder/Operators.js.map +1 -1
- package/lib/esm/components-react/filter-builder/Types.d.ts +24 -4
- package/lib/esm/components-react/filter-builder/Types.d.ts.map +1 -1
- package/lib/esm/components-react/filter-builder/Types.js +11 -1
- package/lib/esm/components-react/filter-builder/Types.js.map +1 -1
- package/lib/esm/components-react/iconpicker/IconPickerButton.d.ts +2 -2
- package/lib/esm/components-react/iconpicker/IconPickerButton.js +2 -2
- package/lib/esm/components-react/iconpicker/IconPickerButton.js.map +1 -1
- package/lib/esm/components-react/propertygrid/component/PropertyGrid.d.ts +1 -1
- package/lib/esm/components-react/propertygrid/component/PropertyGrid.js.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-items/FlatGridItem.d.ts +2 -2
- package/lib/esm/components-react/propertygrid/internal/flat-items/FlatGridItem.d.ts.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-items/FlatGridItem.js.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.d.ts +2 -2
- package/lib/esm/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
- package/lib/esm/components-react/table/SimpleTableDataProvider.d.ts +1 -1
- package/lib/esm/components-react/table/SimpleTableDataProvider.js +1 -1
- package/lib/esm/components-react/table/SimpleTableDataProvider.js.map +1 -1
- package/lib/esm/components-react/table/TableDataProvider.d.ts +8 -8
- package/lib/esm/components-react/table/TableDataProvider.js +2 -2
- package/lib/esm/components-react/table/TableDataProvider.js.map +1 -1
- package/lib/esm/components-react/table/columnfiltering/ColumnFiltering.d.ts +16 -16
- package/lib/esm/components-react/table/columnfiltering/ColumnFiltering.js +6 -6
- package/lib/esm/components-react/table/columnfiltering/ColumnFiltering.js.map +1 -1
- package/lib/esm/components-react/table/component/ColumnDragLayer.d.ts +1 -1
- package/lib/esm/components-react/table/component/ColumnDragLayer.js +1 -1
- package/lib/esm/components-react/table/component/ColumnDragLayer.js.map +1 -1
- package/lib/esm/components-react/table/component/Table.d.ts +9 -9
- package/lib/esm/components-react/table/component/Table.d.ts.map +1 -1
- package/lib/esm/components-react/table/component/Table.js +2 -2
- package/lib/esm/components-react/table/component/Table.js.map +1 -1
- package/lib/esm/components-react/table/component/TableCell.d.ts +6 -6
- package/lib/esm/components-react/table/component/TableCell.js +3 -3
- package/lib/esm/components-react/table/component/TableCell.js.map +1 -1
- package/lib/esm/components-react/table/component/TableColumn.d.ts +1 -1
- package/lib/esm/components-react/table/component/TableColumn.js.map +1 -1
- package/lib/esm/components-react/table/component/dragdrop/BeDragDropContext.d.ts +1 -1
- package/lib/esm/components-react/table/component/dragdrop/BeDragDropContext.js +1 -1
- package/lib/esm/components-react/table/component/dragdrop/BeDragDropContext.js.map +1 -1
- package/lib/esm/components-react/table/component/dragdrop/DragDropDef.d.ts +8 -8
- package/lib/esm/components-react/table/component/dragdrop/DragDropDef.js +2 -2
- package/lib/esm/components-react/table/component/dragdrop/DragDropDef.js.map +1 -1
- package/lib/esm/components-react/table/component/dragdrop/withDragSource.d.ts +2 -2
- package/lib/esm/components-react/table/component/dragdrop/withDragSource.js +1 -1
- package/lib/esm/components-react/table/component/dragdrop/withDragSource.js.map +1 -1
- package/lib/esm/components-react/table/component/dragdrop/withDropTarget.d.ts +2 -2
- package/lib/esm/components-react/table/component/dragdrop/withDropTarget.js +1 -1
- package/lib/esm/components-react/table/component/dragdrop/withDropTarget.js.map +1 -1
- package/lib/esm/components-react/toolbar/ToolbarWithOverflow.d.ts +1 -1
- package/lib/esm/components-react/toolbar/ToolbarWithOverflow.d.ts.map +1 -1
- package/lib/esm/components-react/toolbar/ToolbarWithOverflow.js.map +1 -1
- package/lib/esm/components-react/tree/TreeDataProvider.d.ts +2 -2
- package/lib/esm/components-react/tree/TreeDataProvider.d.ts.map +1 -1
- package/lib/esm/components-react/tree/TreeDataProvider.js.map +1 -1
- package/lib/esm/components-react.d.ts +4 -6
- package/lib/esm/components-react.d.ts.map +1 -1
- package/lib/esm/components-react.js +4 -6
- package/lib/esm/components-react.js.map +1 -1
- package/package.json +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterBuilderRuleProperty.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleProperty.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAI5D
|
|
1
|
+
{"version":3,"file":"FilterBuilderRuleProperty.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleProperty.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAI5D;;;GAGG;AACH,MAAM,WAAW,sCAAsC;IACrD,oCAAoC;IACpC,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;IACvC,+DAA+D;IAC/D,yBAAyB,EAAE,CAAC,QAAQ,CAAC,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACpE,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IACrD,4DAA4D;IAC5D,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,sCAAsC,eAsC9F"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
/** @packageDocumentation
|
|
7
|
+
* @module PropertyFilterBuilder
|
|
8
|
+
*/
|
|
2
9
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
10
|
if (k2 === undefined) k2 = k;
|
|
4
11
|
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
@@ -20,14 +27,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
20
27
|
};
|
|
21
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
29
|
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
30
|
const React = __importStar(require("react"));
|
|
28
31
|
const itwinui_react_1 = require("@itwin/itwinui-react");
|
|
29
32
|
const UiComponents_1 = require("../UiComponents");
|
|
30
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* Component that renders [[PropertyFilterBuilderRuleRenderer]] property selector.
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
31
37
|
function PropertyFilterBuilderRuleProperty(props) {
|
|
32
38
|
const { selectedProperty, properties, onSelectedPropertyChanged, propertyRenderer, isDisabled } = props;
|
|
33
39
|
const selectOptions = React.useMemo(() => properties.map((property) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterBuilderRuleProperty.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleProperty.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FilterBuilderRuleProperty.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleProperty.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;;;;;;;;;;;;;;;;;;;;AAEH,6CAA+B;AAE/B,wDAAwE;AACxE,kDAA+C;AAmB/C;;;GAGG;AACH,SAAgB,iCAAiC,CAAC,KAA6C;IAC7F,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAExG,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,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,YAAkC,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE;QAChG,OAAO,oBAAC,wBAAQ,IAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,IACrD,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CACpE,CAAC;IACd,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,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;gBACnE,QAAQ,EAAE,UAAU;aACrB,EACD,YAAY,EAAE,YAAY,EAC1B,oBAAoB,EAAE,IAAI,GAC1B,CACE,CAAC;AACT,CAAC;AAtCD,8EAsCC","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\n/** @packageDocumentation\r\n * @module PropertyFilterBuilder\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { PropertyDescription } from \"@itwin/appui-abstract\";\r\nimport { ComboBox, MenuItem, SelectOption } from \"@itwin/itwinui-react\";\r\nimport { UiComponents } from \"../UiComponents\";\r\n\r\n/**\r\n * Props for [[PropertyFilterBuilderRuleProperty]] component.\r\n * @internal\r\n */\r\nexport interface PropertyFilterBuilderRulePropertyProps {\r\n /** List of available properties. */\r\n properties: PropertyDescription[];\r\n /** Currently selected property. */\r\n selectedProperty?: PropertyDescription;\r\n /** Callback that is invoked when selected property changes. */\r\n onSelectedPropertyChanged: (property?: PropertyDescription) => void;\r\n /** Custom renderer for property item inside selector. */\r\n propertyRenderer?: (name: string) => React.ReactNode;\r\n /** Specifies whether selector should be disabled or not. */\r\n isDisabled?: boolean;\r\n}\r\n\r\n/**\r\n * Component that renders [[PropertyFilterBuilderRuleRenderer]] property selector.\r\n * @internal\r\n */\r\nexport function PropertyFilterBuilderRuleProperty(props: PropertyFilterBuilderRulePropertyProps) {\r\n const { selectedProperty, properties, onSelectedPropertyChanged, propertyRenderer, isDisabled } = 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 const itemRenderer = React.useCallback((selectOption: SelectOption<string>, { isSelected, id }) => {\r\n return <MenuItem key={id} id={id} isSelected={isSelected}>\r\n {propertyRenderer ? propertyRenderer(selectOption.value) : selectOption.label}\r\n </MenuItem>;\r\n }, [propertyRenderer]);\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 disabled: isDisabled,\r\n }}\r\n itemRenderer={itemRenderer}\r\n enableVirtualization={true}\r\n />\r\n </div>;\r\n}\r\n"]}
|
|
@@ -1,11 +1,23 @@
|
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module PropertyFilterBuilder
|
|
3
|
+
*/
|
|
1
4
|
/// <reference types="react" />
|
|
2
5
|
import { PropertyDescription, PropertyValue } from "@itwin/appui-abstract";
|
|
3
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Props for [[PropertyFilterBuilderRuleValue]] component.
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
4
10
|
export interface PropertyFilterBuilderRuleValueProps {
|
|
11
|
+
/** Currently entered value. */
|
|
5
12
|
value?: PropertyValue;
|
|
13
|
+
/** Property used in rule to which this value will be compared to. */
|
|
6
14
|
property: PropertyDescription;
|
|
15
|
+
/** Callback that is invoked when value changes. */
|
|
7
16
|
onChange: (value: PropertyValue) => void;
|
|
8
17
|
}
|
|
9
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Component that renders [[PropertyFilterBuilderRuleRenderer]] value input.
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
10
22
|
export declare function PropertyFilterBuilderRuleValue(props: PropertyFilterBuilderRuleValueProps): JSX.Element;
|
|
11
23
|
//# sourceMappingURL=FilterBuilderRuleValue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterBuilderRuleValue.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleValue.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FilterBuilderRuleValue.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleValue.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAGH,OAAO,EAAE,mBAAmB,EAAkB,aAAa,EAAuB,MAAM,uBAAuB,CAAC;AAGhH;;;GAGG;AACH,MAAM,WAAW,mCAAmC;IAClD,+BAA+B;IAC/B,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,qEAAqE;IACrE,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,mDAAmD;IACnD,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC1C;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,mCAAmC,eAmBxF"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
/** @packageDocumentation
|
|
7
|
+
* @module PropertyFilterBuilder
|
|
8
|
+
*/
|
|
2
9
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
10
|
if (k2 === undefined) k2 = k;
|
|
4
11
|
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
@@ -20,14 +27,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
20
27
|
};
|
|
21
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
29
|
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
30
|
const React = __importStar(require("react"));
|
|
28
31
|
const appui_abstract_1 = require("@itwin/appui-abstract");
|
|
29
32
|
const EditorContainer_1 = require("../editors/EditorContainer");
|
|
30
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* Component that renders [[PropertyFilterBuilderRuleRenderer]] value input.
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
31
37
|
function PropertyFilterBuilderRuleValue(props) {
|
|
32
38
|
const { value, property, onChange } = props;
|
|
33
39
|
const propertyRecord = React.useMemo(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterBuilderRuleValue.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleValue.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FilterBuilderRuleValue.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleValue.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;;;;;;;;;;;;;;;;;;;;AAEH,6CAA+B;AAC/B,0DAAgH;AAChH,gEAAkF;AAelF;;;GAGG;AACH,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,EAAE,WAAW,EAAE,oCAAmB,CAAC,SAAS,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC/F,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEtB,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAuB,EAAE,EAAE;QAC5E,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,GAAG,CAAC,EAC9C,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\n/** @packageDocumentation\r\n * @module PropertyFilterBuilder\r\n */\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/**\r\n * Props for [[PropertyFilterBuilderRuleValue]] component.\r\n * @internal\r\n */\r\nexport interface PropertyFilterBuilderRuleValueProps {\r\n /** Currently entered value. */\r\n value?: PropertyValue;\r\n /** Property used in rule to which this value will be compared to. */\r\n property: PropertyDescription;\r\n /** Callback that is invoked when value changes. */\r\n onChange: (value: PropertyValue) => void;\r\n}\r\n\r\n/**\r\n * Component that renders [[PropertyFilterBuilderRuleRenderer]] value input.\r\n * @internal\r\n */\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"]}
|
|
@@ -1,44 +1,87 @@
|
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module PropertyFilterBuilder
|
|
3
|
+
*/
|
|
1
4
|
import { PropertyDescription, PropertyValue } from "@itwin/appui-abstract";
|
|
2
5
|
import { PropertyFilterRuleGroupOperator, PropertyFilterRuleOperator } from "./Operators";
|
|
3
6
|
import { PropertyFilter } from "./Types";
|
|
4
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Data structure that describes [[PropertyFilterBuilder]] component state.
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
5
11
|
export interface PropertyFilterBuilderState {
|
|
12
|
+
/** Root group of rules in [[PropertyFilterBuilder]] component. */
|
|
6
13
|
rootGroup: PropertyFilterBuilderRuleGroup;
|
|
7
14
|
}
|
|
8
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Type that describes [[PropertyFilterBuilder]] component group item.
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
9
19
|
export declare type PropertyFilterBuilderRuleGroupItem = PropertyFilterBuilderRuleGroup | PropertyFilterBuilderRule;
|
|
10
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Data structure that describes [[PropertyFilterBuilder]] component rule group.
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
11
24
|
export interface PropertyFilterBuilderRuleGroup {
|
|
25
|
+
/** Id of this rule group. */
|
|
12
26
|
id: string;
|
|
27
|
+
/** Id of rule group that this group is nested in. */
|
|
13
28
|
groupId?: string;
|
|
29
|
+
/** Operator that should join items in this group. */
|
|
14
30
|
operator: PropertyFilterRuleGroupOperator;
|
|
31
|
+
/** Items in this group. */
|
|
15
32
|
items: PropertyFilterBuilderRuleGroupItem[];
|
|
16
33
|
}
|
|
17
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* Data structure that describes [[PropertyFilterBuilder]] component single rule.
|
|
36
|
+
* @internal
|
|
37
|
+
*/
|
|
18
38
|
export interface PropertyFilterBuilderRule {
|
|
39
|
+
/** Id of this rule. */
|
|
19
40
|
id: string;
|
|
41
|
+
/** Id of rule group that this rule is nested in. */
|
|
20
42
|
groupId: string;
|
|
43
|
+
/** Property used in this rule. */
|
|
21
44
|
property?: PropertyDescription;
|
|
45
|
+
/** Operator that should be used to compare property value. */
|
|
22
46
|
operator?: PropertyFilterRuleOperator;
|
|
47
|
+
/** Value that property should be compared to. */
|
|
23
48
|
value?: PropertyValue;
|
|
24
49
|
}
|
|
25
|
-
/**
|
|
50
|
+
/**
|
|
51
|
+
* Actions for controlling [[PropertyFilterBuilder]] component state.
|
|
52
|
+
* @internal
|
|
53
|
+
*/
|
|
26
54
|
export declare class PropertyFilterBuilderActions {
|
|
27
55
|
private setState;
|
|
28
56
|
constructor(setState: (setter: (prevState: PropertyFilterBuilderState) => PropertyFilterBuilderState) => void);
|
|
29
57
|
private updateState;
|
|
58
|
+
/** Adds new rule or group of rules to the group specified by path. */
|
|
30
59
|
addItem(path: string[], itemType: "RULE_GROUP" | "RULE"): void;
|
|
60
|
+
/** Removes item specified by path. */
|
|
31
61
|
removeItem(path: string[]): void;
|
|
62
|
+
/** Sets operator of rule group specified by the path. */
|
|
32
63
|
setRuleGroupOperator(path: string[], operator: PropertyFilterRuleGroupOperator): void;
|
|
64
|
+
/** Sets property of rule specified by the path. */
|
|
33
65
|
setRuleProperty(path: string[], property?: PropertyDescription): void;
|
|
66
|
+
/** Sets operator of rule specified by the path. */
|
|
34
67
|
setRuleOperator(path: string[], operator: PropertyFilterRuleOperator): void;
|
|
68
|
+
/** Sets value of rule specified by the path. */
|
|
35
69
|
setRuleValue(path: string[], value: PropertyValue): void;
|
|
36
70
|
}
|
|
37
|
-
/**
|
|
71
|
+
/**
|
|
72
|
+
* Function to check if supplied [[PropertyFilterBuilderRuleGroupItem]] is [[PropertyFilterBuilderRuleGroup]].
|
|
73
|
+
* @internal
|
|
74
|
+
*/
|
|
38
75
|
export declare function isPropertyFilterBuilderRuleGroup(item: PropertyFilterBuilderRuleGroupItem): item is PropertyFilterBuilderRuleGroup;
|
|
39
|
-
/**
|
|
76
|
+
/**
|
|
77
|
+
* Custom hook that creates state for [[PropertyFilterBuilder]] component. It creates empty state or initializes
|
|
78
|
+
* state from supplied initial filter.
|
|
79
|
+
* @internal
|
|
80
|
+
*/
|
|
40
81
|
export declare function usePropertyFilterBuilderState(initialFilter?: PropertyFilter): {
|
|
41
82
|
state: PropertyFilterBuilderState;
|
|
42
83
|
actions: PropertyFilterBuilderActions;
|
|
43
84
|
};
|
|
85
|
+
/** @internal */
|
|
86
|
+
export declare function buildPropertyFilter(groupItem: PropertyFilterBuilderRuleGroupItem): PropertyFilter | undefined;
|
|
44
87
|
//# sourceMappingURL=FilterBuilderState.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterBuilderState.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderState.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FilterBuilderState.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderState.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAuB,MAAM,uBAAuB,CAAC;AAEhG,OAAO,EAAiC,+BAA+B,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzH,OAAO,EAA6B,cAAc,EAAsB,MAAM,SAAS,CAAC;AAExF;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,kEAAkE;IAClE,SAAS,EAAE,8BAA8B,CAAC;CAC3C;AAED;;;GAGG;AACH,oBAAY,kCAAkC,GAAG,8BAA8B,GAAG,yBAAyB,CAAC;AAE5G;;;GAGG;AACH,MAAM,WAAW,8BAA8B;IAC7C,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,QAAQ,EAAE,+BAA+B,CAAC;IAC1C,2BAA2B;IAC3B,KAAK,EAAE,kCAAkC,EAAE,CAAC;CAC7C;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,0BAA0B,CAAC;IACtC,iDAAiD;IACjD,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,4BAA4B;IAC3B,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,0BAA0B,KAAK,0BAA0B,KAAK,IAAI;IAErH,OAAO,CAAC,WAAW;IAInB,sEAAsE;IAC/D,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,YAAY,GAAG,MAAM;IAU9D,sCAAsC;IAC/B,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE;IAoBhC,yDAAyD;IAClD,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,+BAA+B;IASrF,mDAAmD;IAC5C,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,mBAAmB;IAUrE,mDAAmD;IAC5C,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,0BAA0B;IAW3E,gDAAgD;IACzC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa;CAQzD;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,kCAAkC,GAAG,IAAI,IAAI,8BAA8B,CAEjI;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,aAAa,CAAC,EAAE,cAAc;;;EAO3E;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,kCAAkC,GAAG,cAAc,GAAG,SAAS,CAI7G"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
/** @packageDocumentation
|
|
7
|
+
* @module PropertyFilterBuilder
|
|
8
|
+
*/
|
|
2
9
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
10
|
if (k2 === undefined) k2 = k;
|
|
4
11
|
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
@@ -19,17 +26,17 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
19
26
|
return result;
|
|
20
27
|
};
|
|
21
28
|
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
|
-
*--------------------------------------------------------------------------------------------*/
|
|
29
|
+
exports.buildPropertyFilter = exports.usePropertyFilterBuilderState = exports.isPropertyFilterBuilderRuleGroup = exports.PropertyFilterBuilderActions = void 0;
|
|
27
30
|
const immer_1 = require("immer");
|
|
28
31
|
const React = __importStar(require("react"));
|
|
32
|
+
const appui_abstract_1 = require("@itwin/appui-abstract");
|
|
29
33
|
const core_bentley_1 = require("@itwin/core-bentley");
|
|
30
34
|
const Operators_1 = require("./Operators");
|
|
31
35
|
const Types_1 = require("./Types");
|
|
32
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* Actions for controlling [[PropertyFilterBuilder]] component state.
|
|
38
|
+
* @internal
|
|
39
|
+
*/
|
|
33
40
|
class PropertyFilterBuilderActions {
|
|
34
41
|
constructor(setState) {
|
|
35
42
|
this.setState = setState;
|
|
@@ -37,6 +44,7 @@ class PropertyFilterBuilderActions {
|
|
|
37
44
|
updateState(updater) {
|
|
38
45
|
this.setState((0, immer_1.produce)(updater));
|
|
39
46
|
}
|
|
47
|
+
/** Adds new rule or group of rules to the group specified by path. */
|
|
40
48
|
addItem(path, itemType) {
|
|
41
49
|
this.updateState((state) => {
|
|
42
50
|
const parentGroup = findRuleGroup(state.rootGroup, path);
|
|
@@ -46,6 +54,7 @@ class PropertyFilterBuilderActions {
|
|
|
46
54
|
parentGroup.items.push(item);
|
|
47
55
|
});
|
|
48
56
|
}
|
|
57
|
+
/** Removes item specified by path. */
|
|
49
58
|
removeItem(path) {
|
|
50
59
|
function removeItemFromGroup(state, pathToItem) {
|
|
51
60
|
const pathToParent = pathToItem.slice(0, -1);
|
|
@@ -64,6 +73,7 @@ class PropertyFilterBuilderActions {
|
|
|
64
73
|
removeItemFromGroup(state, path);
|
|
65
74
|
});
|
|
66
75
|
}
|
|
76
|
+
/** Sets operator of rule group specified by the path. */
|
|
67
77
|
setRuleGroupOperator(path, operator) {
|
|
68
78
|
this.updateState((state) => {
|
|
69
79
|
const group = findRuleGroup(state.rootGroup, path);
|
|
@@ -72,6 +82,7 @@ class PropertyFilterBuilderActions {
|
|
|
72
82
|
group.operator = operator;
|
|
73
83
|
});
|
|
74
84
|
}
|
|
85
|
+
/** Sets property of rule specified by the path. */
|
|
75
86
|
setRuleProperty(path, property) {
|
|
76
87
|
this.updateState((state) => {
|
|
77
88
|
const rule = findRule(state.rootGroup, path);
|
|
@@ -81,6 +92,7 @@ class PropertyFilterBuilderActions {
|
|
|
81
92
|
rule.value = undefined;
|
|
82
93
|
});
|
|
83
94
|
}
|
|
95
|
+
/** Sets operator of rule specified by the path. */
|
|
84
96
|
setRuleOperator(path, operator) {
|
|
85
97
|
this.updateState((state) => {
|
|
86
98
|
const rule = findRule(state.rootGroup, path);
|
|
@@ -91,6 +103,7 @@ class PropertyFilterBuilderActions {
|
|
|
91
103
|
rule.operator = operator;
|
|
92
104
|
});
|
|
93
105
|
}
|
|
106
|
+
/** Sets value of rule specified by the path. */
|
|
94
107
|
setRuleValue(path, value) {
|
|
95
108
|
this.updateState((state) => {
|
|
96
109
|
const rule = findRule(state.rootGroup, path);
|
|
@@ -101,18 +114,57 @@ class PropertyFilterBuilderActions {
|
|
|
101
114
|
}
|
|
102
115
|
}
|
|
103
116
|
exports.PropertyFilterBuilderActions = PropertyFilterBuilderActions;
|
|
104
|
-
/**
|
|
117
|
+
/**
|
|
118
|
+
* Function to check if supplied [[PropertyFilterBuilderRuleGroupItem]] is [[PropertyFilterBuilderRuleGroup]].
|
|
119
|
+
* @internal
|
|
120
|
+
*/
|
|
105
121
|
function isPropertyFilterBuilderRuleGroup(item) {
|
|
106
122
|
return item.items !== undefined;
|
|
107
123
|
}
|
|
108
124
|
exports.isPropertyFilterBuilderRuleGroup = isPropertyFilterBuilderRuleGroup;
|
|
109
|
-
/**
|
|
125
|
+
/**
|
|
126
|
+
* Custom hook that creates state for [[PropertyFilterBuilder]] component. It creates empty state or initializes
|
|
127
|
+
* state from supplied initial filter.
|
|
128
|
+
* @internal
|
|
129
|
+
*/
|
|
110
130
|
function usePropertyFilterBuilderState(initialFilter) {
|
|
111
131
|
const [state, setState] = React.useState(() => initialFilter ? convertFilterToState(initialFilter) : { rootGroup: createEmptyRuleGroup() });
|
|
112
132
|
const [actions] = React.useState(() => new PropertyFilterBuilderActions(setState));
|
|
113
133
|
return { state, actions };
|
|
114
134
|
}
|
|
115
135
|
exports.usePropertyFilterBuilderState = usePropertyFilterBuilderState;
|
|
136
|
+
/** @internal */
|
|
137
|
+
function buildPropertyFilter(groupItem) {
|
|
138
|
+
if (isPropertyFilterBuilderRuleGroup(groupItem))
|
|
139
|
+
return buildPropertyFilterFromRuleGroup(groupItem);
|
|
140
|
+
return buildPropertyFilterFromRule(groupItem);
|
|
141
|
+
}
|
|
142
|
+
exports.buildPropertyFilter = buildPropertyFilter;
|
|
143
|
+
function buildPropertyFilterFromRuleGroup(rootGroup) {
|
|
144
|
+
if (rootGroup.items.length === 0)
|
|
145
|
+
return undefined;
|
|
146
|
+
const rules = new Array();
|
|
147
|
+
for (const item of rootGroup.items) {
|
|
148
|
+
const rule = buildPropertyFilter(item);
|
|
149
|
+
if (!rule)
|
|
150
|
+
return undefined;
|
|
151
|
+
rules.push(rule);
|
|
152
|
+
}
|
|
153
|
+
if (rules.length === 1)
|
|
154
|
+
return rules[0];
|
|
155
|
+
return {
|
|
156
|
+
operator: rootGroup.operator,
|
|
157
|
+
rules,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
function buildPropertyFilterFromRule(rule) {
|
|
161
|
+
const { property, operator, value } = rule;
|
|
162
|
+
if (!property || operator === undefined)
|
|
163
|
+
return undefined;
|
|
164
|
+
if (!(0, Operators_1.isUnaryPropertyFilterOperator)(operator) && (value === undefined || value.valueFormat !== appui_abstract_1.PropertyValueFormat.Primitive || value.value === undefined))
|
|
165
|
+
return undefined;
|
|
166
|
+
return { property, operator, value };
|
|
167
|
+
}
|
|
116
168
|
function createEmptyRule(groupId) {
|
|
117
169
|
return {
|
|
118
170
|
id: core_bentley_1.Guid.createValue(),
|
|
@@ -1 +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\nimport { isPropertyFilterRuleGroup, PropertyFilter, PropertyFilterRule } from \"./Types\";\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(initialFilter?: PropertyFilter) {\r\n const [state, setState] = React.useState<PropertyFilterBuilderState>(\r\n () => initialFilter ? convertFilterToState(initialFilter) : { 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\r\nfunction getRuleGroupItem(filter: PropertyFilter, parentId: string): PropertyFilterBuilderRuleGroupItem {\r\n const id = Guid.createValue();\r\n if (isPropertyFilterRuleGroup(filter))\r\n return {\r\n id,\r\n groupId: parentId,\r\n operator: filter.operator,\r\n items: filter.rules.map((rule) => getRuleGroupItem(rule, id)),\r\n };\r\n return getRuleItem(filter, id);\r\n}\r\n\r\nfunction getRuleItem(filter: PropertyFilterRule, parentId: string) {\r\n return {\r\n id: Guid.createValue(),\r\n groupId: parentId,\r\n property: filter.property,\r\n operator: filter.operator,\r\n value: filter.value,\r\n };\r\n}\r\n\r\nfunction convertFilterToState(filter: PropertyFilter): PropertyFilterBuilderState {\r\n const id = Guid.createValue();\r\n if (isPropertyFilterRuleGroup(filter)) {\r\n return {\r\n rootGroup: {\r\n id,\r\n operator: filter.operator,\r\n items: filter.rules.map((rule) => getRuleGroupItem(rule, id)),\r\n },\r\n };\r\n }\r\n return {\r\n rootGroup: {\r\n id,\r\n operator: PropertyFilterRuleGroupOperator.And,\r\n items: [getRuleItem(filter, id)],\r\n },\r\n };\r\n}\r\n"]}
|
|
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\n/** @packageDocumentation\r\n * @module PropertyFilterBuilder\r\n */\r\n\r\nimport { Draft, produce } from \"immer\";\r\nimport * as React from \"react\";\r\nimport { PropertyDescription, PropertyValue, PropertyValueFormat } from \"@itwin/appui-abstract\";\r\nimport { Guid } from \"@itwin/core-bentley\";\r\nimport { isUnaryPropertyFilterOperator, PropertyFilterRuleGroupOperator, PropertyFilterRuleOperator } from \"./Operators\";\r\nimport { isPropertyFilterRuleGroup, PropertyFilter, PropertyFilterRule } from \"./Types\";\r\n\r\n/**\r\n * Data structure that describes [[PropertyFilterBuilder]] component state.\r\n * @internal\r\n */\r\nexport interface PropertyFilterBuilderState {\r\n /** Root group of rules in [[PropertyFilterBuilder]] component. */\r\n rootGroup: PropertyFilterBuilderRuleGroup;\r\n}\r\n\r\n/**\r\n * Type that describes [[PropertyFilterBuilder]] component group item.\r\n * @internal\r\n */\r\nexport type PropertyFilterBuilderRuleGroupItem = PropertyFilterBuilderRuleGroup | PropertyFilterBuilderRule;\r\n\r\n/**\r\n * Data structure that describes [[PropertyFilterBuilder]] component rule group.\r\n * @internal\r\n */\r\nexport interface PropertyFilterBuilderRuleGroup {\r\n /** Id of this rule group. */\r\n id: string;\r\n /** Id of rule group that this group is nested in. */\r\n groupId?: string;\r\n /** Operator that should join items in this group. */\r\n operator: PropertyFilterRuleGroupOperator;\r\n /** Items in this group. */\r\n items: PropertyFilterBuilderRuleGroupItem[];\r\n}\r\n\r\n/**\r\n * Data structure that describes [[PropertyFilterBuilder]] component single rule.\r\n * @internal\r\n */\r\nexport interface PropertyFilterBuilderRule {\r\n /** Id of this rule. */\r\n id: string;\r\n /** Id of rule group that this rule is nested in. */\r\n groupId: string;\r\n /** Property used in this rule. */\r\n property?: PropertyDescription;\r\n /** Operator that should be used to compare property value. */\r\n operator?: PropertyFilterRuleOperator;\r\n /** Value that property should be compared to. */\r\n value?: PropertyValue;\r\n}\r\n\r\n/**\r\n * Actions for controlling [[PropertyFilterBuilder]] component state.\r\n * @internal\r\n */\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 /** Adds new rule or group of rules to the group specified by path. */\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 /** Removes item specified by path. */\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 /** Sets operator of rule group specified by the path. */\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 /** Sets property of rule specified by the path. */\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 /** Sets operator of rule specified by the path. */\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 /** Sets value of rule specified by the path. */\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/**\r\n * Function to check if supplied [[PropertyFilterBuilderRuleGroupItem]] is [[PropertyFilterBuilderRuleGroup]].\r\n * @internal\r\n */\r\nexport function isPropertyFilterBuilderRuleGroup(item: PropertyFilterBuilderRuleGroupItem): item is PropertyFilterBuilderRuleGroup {\r\n return (item as any).items !== undefined;\r\n}\r\n\r\n/**\r\n * Custom hook that creates state for [[PropertyFilterBuilder]] component. It creates empty state or initializes\r\n * state from supplied initial filter.\r\n * @internal\r\n */\r\nexport function usePropertyFilterBuilderState(initialFilter?: PropertyFilter) {\r\n const [state, setState] = React.useState<PropertyFilterBuilderState>(\r\n () => initialFilter ? convertFilterToState(initialFilter) : { 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\n/** @internal */\r\nexport function buildPropertyFilter(groupItem: PropertyFilterBuilderRuleGroupItem): PropertyFilter | undefined {\r\n if (isPropertyFilterBuilderRuleGroup(groupItem))\r\n return buildPropertyFilterFromRuleGroup(groupItem);\r\n return buildPropertyFilterFromRule(groupItem);\r\n}\r\n\r\nfunction buildPropertyFilterFromRuleGroup(rootGroup: PropertyFilterBuilderRuleGroup): PropertyFilter | undefined {\r\n if (rootGroup.items.length === 0)\r\n return undefined;\r\n\r\n const rules = new Array<PropertyFilter>();\r\n for (const item of rootGroup.items) {\r\n const rule = buildPropertyFilter(item);\r\n if (!rule)\r\n return undefined;\r\n rules.push(rule);\r\n }\r\n\r\n if (rules.length === 1)\r\n return rules[0];\r\n\r\n return {\r\n operator: rootGroup.operator,\r\n rules,\r\n };\r\n}\r\n\r\nfunction buildPropertyFilterFromRule(rule: PropertyFilterBuilderRule): PropertyFilter | undefined {\r\n const { property, operator, value } = rule;\r\n if (!property || operator === undefined)\r\n return undefined;\r\n\r\n if (!isUnaryPropertyFilterOperator(operator) && (value === undefined || value.valueFormat !== PropertyValueFormat.Primitive || value.value === undefined))\r\n return undefined;\r\n\r\n return { property, operator, value };\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\r\nfunction getRuleGroupItem(filter: PropertyFilter, parentId: string): PropertyFilterBuilderRuleGroupItem {\r\n const id = Guid.createValue();\r\n if (isPropertyFilterRuleGroup(filter))\r\n return {\r\n id,\r\n groupId: parentId,\r\n operator: filter.operator,\r\n items: filter.rules.map((rule) => getRuleGroupItem(rule, id)),\r\n };\r\n return getRuleItem(filter, id);\r\n}\r\n\r\nfunction getRuleItem(filter: PropertyFilterRule, parentId: string) {\r\n return {\r\n id: Guid.createValue(),\r\n groupId: parentId,\r\n property: filter.property,\r\n operator: filter.operator,\r\n value: filter.value,\r\n };\r\n}\r\n\r\nfunction convertFilterToState(filter: PropertyFilter): PropertyFilterBuilderState {\r\n const id = Guid.createValue();\r\n if (isPropertyFilterRuleGroup(filter)) {\r\n return {\r\n rootGroup: {\r\n id,\r\n operator: filter.operator,\r\n items: filter.rules.map((rule) => getRuleGroupItem(rule, id)),\r\n },\r\n };\r\n }\r\n return {\r\n rootGroup: {\r\n id,\r\n operator: PropertyFilterRuleGroupOperator.And,\r\n items: [getRuleItem(filter, id)],\r\n },\r\n };\r\n}\r\n"]}
|
|
@@ -1,10 +1,19 @@
|
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module PropertyFilterBuilder
|
|
3
|
+
*/
|
|
1
4
|
import { PropertyDescription } from "@itwin/appui-abstract";
|
|
2
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Logical operator for joining rules.
|
|
7
|
+
* @beta
|
|
8
|
+
*/
|
|
3
9
|
export declare enum PropertyFilterRuleGroupOperator {
|
|
4
10
|
And = 0,
|
|
5
11
|
Or = 1
|
|
6
12
|
}
|
|
7
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Operators for comparing property value in rule.
|
|
15
|
+
* @beta
|
|
16
|
+
*/
|
|
8
17
|
export declare enum PropertyFilterRuleOperator {
|
|
9
18
|
IsTrue = 0,
|
|
10
19
|
IsFalse = 1,
|
|
@@ -18,10 +27,19 @@ export declare enum PropertyFilterRuleOperator {
|
|
|
18
27
|
IsNull = 9,
|
|
19
28
|
IsNotNull = 10
|
|
20
29
|
}
|
|
21
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* Function that returns set of available operator based on property type.
|
|
32
|
+
* @beta
|
|
33
|
+
*/
|
|
22
34
|
export declare function getPropertyFilterOperators(property: PropertyDescription): PropertyFilterRuleOperator[];
|
|
23
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* Function that returns display label for rule operator.
|
|
37
|
+
* @beta
|
|
38
|
+
*/
|
|
24
39
|
export declare function getPropertyFilterOperatorLabel(operator: PropertyFilterRuleOperator): string;
|
|
25
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Function that checks if supplied operator is unary.
|
|
42
|
+
* @beta
|
|
43
|
+
*/
|
|
26
44
|
export declare function isUnaryPropertyFilterOperator(operator: PropertyFilterRuleOperator): boolean;
|
|
27
45
|
//# sourceMappingURL=Operators.d.ts.map
|
|
@@ -1 +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
|
|
1
|
+
{"version":3,"file":"Operators.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/Operators.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAqB,MAAM,uBAAuB,CAAC;AAG/E;;;GAGG;AACH,oBAAY,+BAA+B;IACzC,GAAG,IAAA;IACH,EAAE,IAAA;CACH;AAED;;;GAGG;AACH,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;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,mBAAmB,gCA2CvE;AAGD;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,0BAA0B,UAyBlF;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,0BAA0B,WASjF"}
|
|
@@ -1,19 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isUnaryPropertyFilterOperator = exports.getPropertyFilterOperatorLabel = exports.getPropertyFilterOperators = exports.PropertyFilterRuleOperator = exports.PropertyFilterRuleGroupOperator = void 0;
|
|
4
2
|
/*---------------------------------------------------------------------------------------------
|
|
5
3
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
6
4
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
7
5
|
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
/** @packageDocumentation
|
|
7
|
+
* @module PropertyFilterBuilder
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.isUnaryPropertyFilterOperator = exports.getPropertyFilterOperatorLabel = exports.getPropertyFilterOperators = exports.PropertyFilterRuleOperator = exports.PropertyFilterRuleGroupOperator = void 0;
|
|
8
11
|
const appui_abstract_1 = require("@itwin/appui-abstract");
|
|
9
12
|
const UiComponents_1 = require("../UiComponents");
|
|
10
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Logical operator for joining rules.
|
|
15
|
+
* @beta
|
|
16
|
+
*/
|
|
11
17
|
var PropertyFilterRuleGroupOperator;
|
|
12
18
|
(function (PropertyFilterRuleGroupOperator) {
|
|
13
19
|
PropertyFilterRuleGroupOperator[PropertyFilterRuleGroupOperator["And"] = 0] = "And";
|
|
14
20
|
PropertyFilterRuleGroupOperator[PropertyFilterRuleGroupOperator["Or"] = 1] = "Or";
|
|
15
21
|
})(PropertyFilterRuleGroupOperator = exports.PropertyFilterRuleGroupOperator || (exports.PropertyFilterRuleGroupOperator = {}));
|
|
16
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Operators for comparing property value in rule.
|
|
24
|
+
* @beta
|
|
25
|
+
*/
|
|
17
26
|
var PropertyFilterRuleOperator;
|
|
18
27
|
(function (PropertyFilterRuleOperator) {
|
|
19
28
|
PropertyFilterRuleOperator[PropertyFilterRuleOperator["IsTrue"] = 0] = "IsTrue";
|
|
@@ -28,7 +37,10 @@ var PropertyFilterRuleOperator;
|
|
|
28
37
|
PropertyFilterRuleOperator[PropertyFilterRuleOperator["IsNull"] = 9] = "IsNull";
|
|
29
38
|
PropertyFilterRuleOperator[PropertyFilterRuleOperator["IsNotNull"] = 10] = "IsNotNull";
|
|
30
39
|
})(PropertyFilterRuleOperator = exports.PropertyFilterRuleOperator || (exports.PropertyFilterRuleOperator = {}));
|
|
31
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Function that returns set of available operator based on property type.
|
|
42
|
+
* @beta
|
|
43
|
+
*/
|
|
32
44
|
function getPropertyFilterOperators(property) {
|
|
33
45
|
const typename = property.typename;
|
|
34
46
|
if (typename === appui_abstract_1.StandardTypeNames.Bool || typename === appui_abstract_1.StandardTypeNames.Boolean) {
|
|
@@ -70,7 +82,10 @@ function getPropertyFilterOperators(property) {
|
|
|
70
82
|
}
|
|
71
83
|
exports.getPropertyFilterOperators = getPropertyFilterOperators;
|
|
72
84
|
/* istanbul ignore next */
|
|
73
|
-
/**
|
|
85
|
+
/**
|
|
86
|
+
* Function that returns display label for rule operator.
|
|
87
|
+
* @beta
|
|
88
|
+
*/
|
|
74
89
|
function getPropertyFilterOperatorLabel(operator) {
|
|
75
90
|
switch (operator) {
|
|
76
91
|
case PropertyFilterRuleOperator.IsTrue:
|
|
@@ -98,7 +113,10 @@ function getPropertyFilterOperatorLabel(operator) {
|
|
|
98
113
|
}
|
|
99
114
|
}
|
|
100
115
|
exports.getPropertyFilterOperatorLabel = getPropertyFilterOperatorLabel;
|
|
101
|
-
/**
|
|
116
|
+
/**
|
|
117
|
+
* Function that checks if supplied operator is unary.
|
|
118
|
+
* @beta
|
|
119
|
+
*/
|
|
102
120
|
function isUnaryPropertyFilterOperator(operator) {
|
|
103
121
|
switch (operator) {
|
|
104
122
|
case PropertyFilterRuleOperator.IsTrue:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Operators.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/Operators.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Operators.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/Operators.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\n/** @packageDocumentation\r\n * @module PropertyFilterBuilder\r\n */\r\n\r\nimport { PropertyDescription, StandardTypeNames } from \"@itwin/appui-abstract\";\r\nimport { UiComponents } from \"../UiComponents\";\r\n\r\n/**\r\n * Logical operator for joining rules.\r\n * @beta\r\n */\r\nexport enum PropertyFilterRuleGroupOperator {\r\n And,\r\n Or,\r\n}\r\n\r\n/**\r\n * Operators for comparing property value in rule.\r\n * @beta\r\n */\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/**\r\n * Function that returns set of available operator based on property type.\r\n * @beta\r\n */\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/**\r\n * Function that returns display label for rule operator.\r\n * @beta\r\n */\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/**\r\n * Function that checks if supplied operator is unary.\r\n * @beta\r\n */\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"]}
|