@itwin/components-react 3.0.0-dev.72 → 3.0.0-dev.78
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/components-react/UiComponents.d.ts +10 -10
- package/lib/components-react/UiComponents.d.ts.map +1 -1
- package/lib/components-react/UiComponents.js +18 -18
- package/lib/components-react/UiComponents.js.map +1 -1
- package/lib/components-react/common/HighlightedText.d.ts +2 -2
- package/lib/components-react/common/HighlightedText.js +1 -1
- package/lib/components-react/common/HighlightedText.js.map +1 -1
- package/lib/components-react/common/HighlightingComponentProps.d.ts +2 -2
- package/lib/components-react/common/HighlightingComponentProps.js.map +1 -1
- package/lib/components-react/common/UseAsyncValue.d.ts +1 -1
- package/lib/components-react/common/UseAsyncValue.js +1 -1
- package/lib/components-react/common/UseAsyncValue.js.map +1 -1
- package/lib/components-react/datepicker/DatePicker.js +28 -28
- package/lib/components-react/datepicker/DatePicker.js.map +1 -1
- package/lib/components-react/editors/BooleanEditor.d.ts +2 -2
- package/lib/components-react/editors/BooleanEditor.js +2 -2
- package/lib/components-react/editors/BooleanEditor.js.map +1 -1
- package/lib/components-react/editors/EnumButtonGroupEditor.d.ts +2 -2
- package/lib/components-react/editors/EnumButtonGroupEditor.js +2 -2
- package/lib/components-react/editors/EnumButtonGroupEditor.js.map +1 -1
- package/lib/components-react/editors/EnumEditor.d.ts +2 -2
- package/lib/components-react/editors/EnumEditor.js +2 -2
- package/lib/components-react/editors/EnumEditor.js.map +1 -1
- package/lib/components-react/editors/ImageCheckBoxEditor.d.ts +2 -2
- package/lib/components-react/editors/ImageCheckBoxEditor.js +2 -2
- package/lib/components-react/editors/ImageCheckBoxEditor.js.map +1 -1
- package/lib/components-react/editors/NumericInputEditor.d.ts +2 -2
- package/lib/components-react/editors/NumericInputEditor.js +2 -2
- package/lib/components-react/editors/NumericInputEditor.js.map +1 -1
- package/lib/components-react/editors/PropertyEditorManager.d.ts +7 -7
- package/lib/components-react/editors/PropertyEditorManager.js +4 -4
- package/lib/components-react/editors/PropertyEditorManager.js.map +1 -1
- package/lib/components-react/editors/SliderEditor.d.ts +2 -2
- package/lib/components-react/editors/SliderEditor.js +2 -2
- package/lib/components-react/editors/SliderEditor.js.map +1 -1
- package/lib/components-react/editors/TextEditor.d.ts +1 -1
- package/lib/components-react/editors/TextEditor.js +1 -1
- package/lib/components-react/editors/TextEditor.js.map +1 -1
- package/lib/components-react/editors/TextareaEditor.d.ts +2 -2
- package/lib/components-react/editors/TextareaEditor.js +2 -2
- package/lib/components-react/editors/TextareaEditor.js.map +1 -1
- package/lib/components-react/editors/ThemedEnumEditor.d.ts +3 -3
- package/lib/components-react/editors/ThemedEnumEditor.d.ts.map +1 -1
- package/lib/components-react/editors/ThemedEnumEditor.js +3 -2
- package/lib/components-react/editors/ThemedEnumEditor.js.map +1 -1
- package/lib/components-react/editors/ToggleEditor.d.ts +2 -2
- package/lib/components-react/editors/ToggleEditor.js +2 -2
- package/lib/components-react/editors/ToggleEditor.js.map +1 -1
- package/lib/components-react/favorite/FavoritePropertiesRenderer.d.ts +1 -1
- package/lib/components-react/favorite/FavoritePropertiesRenderer.js +1 -1
- package/lib/components-react/favorite/FavoritePropertiesRenderer.js.map +1 -1
- package/lib/components-react/filtering/FilteringInput.d.ts +1 -2
- package/lib/components-react/filtering/FilteringInput.d.ts.map +1 -1
- package/lib/components-react/filtering/FilteringInput.js +1 -1
- package/lib/components-react/filtering/FilteringInput.js.map +1 -1
- package/lib/components-react/inputs/ParsedInput.d.ts +2 -2
- package/lib/components-react/inputs/ParsedInput.js +1 -1
- package/lib/components-react/inputs/ParsedInput.js.map +1 -1
- package/lib/components-react/properties/renderers/ActionButtonList.d.ts +2 -2
- package/lib/components-react/properties/renderers/ActionButtonList.js +1 -1
- package/lib/components-react/properties/renderers/ActionButtonList.js.map +1 -1
- package/lib/components-react/properties/renderers/PrimitivePropertyRenderer.d.ts +0 -1
- package/lib/components-react/properties/renderers/PrimitivePropertyRenderer.d.ts.map +1 -1
- package/lib/components-react/properties/renderers/PrimitivePropertyRenderer.js.map +1 -1
- package/lib/components-react/properties/renderers/PropertyRenderer.d.ts +5 -10
- package/lib/components-react/properties/renderers/PropertyRenderer.d.ts.map +1 -1
- package/lib/components-react/properties/renderers/PropertyRenderer.js.map +1 -1
- package/lib/components-react/properties/renderers/label/PropertyLabelRenderer.d.ts +1 -3
- package/lib/components-react/properties/renderers/label/PropertyLabelRenderer.d.ts.map +1 -1
- package/lib/components-react/properties/renderers/label/PropertyLabelRenderer.js.map +1 -1
- package/lib/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.d.ts +1 -1
- package/lib/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.js +1 -1
- package/lib/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.js.map +1 -1
- package/lib/components-react/propertygrid/PropertyCategoryRendererManager.d.ts +1 -1
- package/lib/components-react/propertygrid/PropertyCategoryRendererManager.js.map +1 -1
- package/lib/components-react/propertygrid/PropertyDataProvider.d.ts +1 -3
- package/lib/components-react/propertygrid/PropertyDataProvider.d.ts.map +1 -1
- package/lib/components-react/propertygrid/PropertyDataProvider.js.map +1 -1
- package/lib/components-react/propertygrid/component/PropertyCategoryBlock.d.ts +1 -3
- package/lib/components-react/propertygrid/component/PropertyCategoryBlock.d.ts.map +1 -1
- package/lib/components-react/propertygrid/component/PropertyCategoryBlock.js.map +1 -1
- package/lib/components-react/propertygrid/component/PropertyGridCommons.d.ts +0 -2
- package/lib/components-react/propertygrid/component/PropertyGridCommons.d.ts.map +1 -1
- package/lib/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
- package/lib/components-react/propertygrid/dataproviders/FilteringDataProvider.d.ts +13 -4
- package/lib/components-react/propertygrid/dataproviders/FilteringDataProvider.d.ts.map +1 -1
- package/lib/components-react/propertygrid/dataproviders/FilteringDataProvider.js +9 -2
- package/lib/components-react/propertygrid/dataproviders/FilteringDataProvider.js.map +1 -1
- package/lib/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.d.ts +2 -2
- package/lib/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js +2 -2
- package/lib/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js.map +1 -1
- package/lib/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.d.ts +1 -1
- package/lib/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js +1 -1
- package/lib/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js.map +1 -1
- package/lib/components-react/propertygrid/dataproviders/filterers/LabelPropertyDataFilterer.d.ts +1 -1
- package/lib/components-react/propertygrid/dataproviders/filterers/LabelPropertyDataFilterer.js +1 -1
- package/lib/components-react/propertygrid/dataproviders/filterers/LabelPropertyDataFilterer.js.map +1 -1
- package/lib/components-react/propertygrid/dataproviders/filterers/PropertyCategoryLabelFilterer.d.ts +1 -1
- package/lib/components-react/propertygrid/dataproviders/filterers/PropertyCategoryLabelFilterer.js +1 -1
- package/lib/components-react/propertygrid/dataproviders/filterers/PropertyCategoryLabelFilterer.js.map +1 -1
- package/lib/components-react/propertygrid/dataproviders/filterers/PropertyDataFiltererBase.d.ts +17 -14
- package/lib/components-react/propertygrid/dataproviders/filterers/PropertyDataFiltererBase.d.ts.map +1 -1
- package/lib/components-react/propertygrid/dataproviders/filterers/PropertyDataFiltererBase.js +10 -8
- package/lib/components-react/propertygrid/dataproviders/filterers/PropertyDataFiltererBase.js.map +1 -1
- package/lib/components-react/propertygrid/internal/PropertyGridHooks.d.ts +4 -4
- package/lib/components-react/propertygrid/internal/PropertyGridHooks.js +5 -5
- package/lib/components-react/propertygrid/internal/PropertyGridHooks.js.map +1 -1
- package/lib/components-react/selectable-content/SelectableContent.d.ts +5 -5
- package/lib/components-react/selectable-content/SelectableContent.d.ts.map +1 -1
- package/lib/components-react/selectable-content/SelectableContent.js +3 -2
- package/lib/components-react/selectable-content/SelectableContent.js.map +1 -1
- package/lib/components-react/table/SimpleTableDataProvider.d.ts +2 -2
- package/lib/components-react/table/SimpleTableDataProvider.js +2 -2
- package/lib/components-react/table/SimpleTableDataProvider.js.map +1 -1
- package/lib/components-react/table/columnfiltering/data-grid-addons/AutoCompleteFilter.d.ts.map +1 -1
- package/lib/components-react/table/columnfiltering/data-grid-addons/AutoCompleteFilter.js +1 -0
- package/lib/components-react/table/columnfiltering/data-grid-addons/AutoCompleteFilter.js.map +1 -1
- package/lib/components-react/table/component/Table.d.ts +4 -7
- package/lib/components-react/table/component/Table.d.ts.map +1 -1
- package/lib/components-react/table/component/Table.js.map +1 -1
- package/lib/components-react/toolbar/Item.d.ts +2 -2
- package/lib/components-react/toolbar/Item.js +1 -1
- package/lib/components-react/toolbar/Item.js.map +1 -1
- package/lib/components-react/toolbar/PopupItem.d.ts +2 -2
- package/lib/components-react/toolbar/PopupItem.js +1 -1
- package/lib/components-react/toolbar/PopupItem.js.map +1 -1
- package/lib/components-react/toolbar/PopupItemWithDrag.d.ts +2 -2
- package/lib/components-react/toolbar/PopupItemWithDrag.js +1 -1
- package/lib/components-react/toolbar/PopupItemWithDrag.js.map +1 -1
- package/lib/components-react/toolbar/Toolbar.d.ts +2 -2
- package/lib/components-react/toolbar/Toolbar.js +1 -1
- package/lib/components-react/toolbar/Toolbar.js.map +1 -1
- package/lib/components-react/toolbar/ToolbarWithOverflow.d.ts +6 -6
- package/lib/components-react/toolbar/ToolbarWithOverflow.js +3 -3
- package/lib/components-react/toolbar/ToolbarWithOverflow.js.map +1 -1
- package/lib/components-react/toolbar/utilities/Direction.d.ts +1 -1
- package/lib/components-react/toolbar/utilities/Direction.js +1 -1
- package/lib/components-react/toolbar/utilities/Direction.js.map +1 -1
- package/lib/components-react/tree/HighlightingEngine.d.ts +1 -1
- package/lib/components-react/tree/HighlightingEngine.js +1 -1
- package/lib/components-react/tree/HighlightingEngine.js.map +1 -1
- package/lib/components-react/tree/TreeDataProvider.d.ts +1 -1
- package/lib/components-react/tree/TreeDataProvider.js.map +1 -1
- package/lib/components-react/tree/controlled/TreeHooks.d.ts +3 -4
- package/lib/components-react/tree/controlled/TreeHooks.d.ts.map +1 -1
- package/lib/components-react/tree/controlled/TreeHooks.js +3 -4
- package/lib/components-react/tree/controlled/TreeHooks.js.map +1 -1
- package/lib/components-react/tree/controlled/component/ControlledTree.d.ts +1 -1
- package/lib/components-react/tree/controlled/component/ControlledTree.js.map +1 -1
- package/lib/components-react/tree/controlled/component/TreeNodeEditor.d.ts +9 -6
- package/lib/components-react/tree/controlled/component/TreeNodeEditor.d.ts.map +1 -1
- package/lib/components-react/tree/controlled/component/TreeNodeEditor.js +3 -2
- package/lib/components-react/tree/controlled/component/TreeNodeEditor.js.map +1 -1
- package/lib/components-react/tree/controlled/component/TreeNodeRenderer.d.ts +12 -16
- package/lib/components-react/tree/controlled/component/TreeNodeRenderer.d.ts.map +1 -1
- package/lib/components-react/tree/controlled/component/TreeNodeRenderer.js +1 -1
- package/lib/components-react/tree/controlled/component/TreeNodeRenderer.js.map +1 -1
- package/lib/components-react/tree/controlled/component/TreeRenderer.d.ts +5 -54
- package/lib/components-react/tree/controlled/component/TreeRenderer.d.ts.map +1 -1
- package/lib/components-react/tree/controlled/component/TreeRenderer.js +13 -28
- package/lib/components-react/tree/controlled/component/TreeRenderer.js.map +1 -1
- package/lib/public/locales/en/UiComponents.json +1 -8
- package/package.json +16 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HighlightingEngine.js","sourceRoot":"","sources":["../../../src/components-react/tree/HighlightingEngine.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;;;;;;;;;;;;;;;;;;;;AAEH,qCAAmC;AACnC,6CAA+B;AAC/B,+DAA4D;AA+B5D;;;GAGG;AACH,MAAa,kBAAkB;IAK7B,YAAY,KAA6B;QACvC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;IACxC,CAAC;IAEM,YAAY,CAAC,IAAqB;QACvC,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IACnE,CAAC;IAEM,mBAAmB,CAAC,IAAqB;QAC9C,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAa,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,CAAC;IAEM,iBAAiB,CAAC,IAAqB;QAC5C,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;SACjD,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,IAAY,EAAE,KAAiC;QAC3E,IAAI,KAAK,CAAC,UAAU;YAClB,OAAO,CAAC,oBAAC,iCAAe,kBAAC,IAAI,EAAE,IAAI,IAAM,KAAK,EAAI,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;;AA7BH,gDA8BC;AA3BwB,oCAAiB,GAAG,4BAA4B,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport \"./HighlightingEngine.scss\";\nimport * as React from \"react\";\nimport { HighlightedText } from \"../common/HighlightedText\";\n\n/**\n * Properties for identifying an active highlight on a node in a tree.\n * @see [[HighlightableTreeProps.activeMatch]]\n * @public\n */\nexport interface ActiveMatchInfo {\n nodeId: string;\n matchIndex: number;\n}\n\n/**\n * Properties for highlighting nodes in a tree.\n * @see [[ControlledTreeProps.nodeHighlightingProps]]\n * @public\n */\nexport interface HighlightableTreeProps {\n searchText: string;\n activeMatch?: ActiveMatchInfo;\n}\n\n/**\n * Properties for a highlightable [[TreeNode]]\n * @public\n */\nexport interface HighlightableTreeNodeProps {\n searchText: string;\n activeMatchIndex?: number;\n}\n\n/**\n * Tree highlighting engine\n * @
|
|
1
|
+
{"version":3,"file":"HighlightingEngine.js","sourceRoot":"","sources":["../../../src/components-react/tree/HighlightingEngine.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;;;;;;;;;;;;;;;;;;;;AAEH,qCAAmC;AACnC,6CAA+B;AAC/B,+DAA4D;AA+B5D;;;GAGG;AACH,MAAa,kBAAkB;IAK7B,YAAY,KAA6B;QACvC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;IACxC,CAAC;IAEM,YAAY,CAAC,IAAqB;QACvC,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IACnE,CAAC;IAEM,mBAAmB,CAAC,IAAqB;QAC9C,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAa,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,CAAC;IAEM,iBAAiB,CAAC,IAAqB;QAC5C,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;SACjD,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,IAAY,EAAE,KAAiC;QAC3E,IAAI,KAAK,CAAC,UAAU;YAClB,OAAO,CAAC,oBAAC,iCAAe,kBAAC,IAAI,EAAE,IAAI,IAAM,KAAK,EAAI,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;;AA7BH,gDA8BC;AA3BwB,oCAAiB,GAAG,4BAA4B,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport \"./HighlightingEngine.scss\";\nimport * as React from \"react\";\nimport { HighlightedText } from \"../common/HighlightedText\";\n\n/**\n * Properties for identifying an active highlight on a node in a tree.\n * @see [[HighlightableTreeProps.activeMatch]]\n * @public\n */\nexport interface ActiveMatchInfo {\n nodeId: string;\n matchIndex: number;\n}\n\n/**\n * Properties for highlighting nodes in a tree.\n * @see [[ControlledTreeProps.nodeHighlightingProps]]\n * @public\n */\nexport interface HighlightableTreeProps {\n searchText: string;\n activeMatch?: ActiveMatchInfo;\n}\n\n/**\n * Properties for a highlightable [[TreeNode]]\n * @public\n */\nexport interface HighlightableTreeNodeProps {\n searchText: string;\n activeMatchIndex?: number;\n}\n\n/**\n * Tree highlighting engine\n * @public\n */\nexport class HighlightingEngine {\n private _searchText: string;\n private _activeMatch?: ActiveMatchInfo;\n public static readonly ACTIVE_CLASS_NAME = \"components-activehighlight\";\n\n constructor(props: HighlightableTreeProps) {\n this._searchText = props.searchText;\n this._activeMatch = props.activeMatch;\n }\n\n public isNodeActive(node: { id?: string }) {\n return this._activeMatch && node.id === this._activeMatch.nodeId;\n }\n\n public getActiveMatchIndex(node: { id?: string }) {\n return this.isNodeActive(node) ? this._activeMatch!.matchIndex : undefined;\n }\n\n public createRenderProps(node: { id?: string }): HighlightableTreeNodeProps {\n return {\n searchText: this._searchText,\n activeMatchIndex: this.getActiveMatchIndex(node),\n };\n }\n\n public static renderNodeLabel(text: string, props: HighlightableTreeNodeProps): React.ReactNode {\n if (props.searchText)\n return (<HighlightedText text={text} {...props} />);\n return text;\n }\n}\n"]}
|
|
@@ -106,7 +106,7 @@ export interface EditableTreeDataProvider extends ITreeDataProvider {
|
|
|
106
106
|
/**
|
|
107
107
|
* MutableTreeDataProvider provides manipulation processing for the Tree.
|
|
108
108
|
* Useful for Drag & Drop processing.
|
|
109
|
-
* @beta
|
|
109
|
+
* @beta @deprecated
|
|
110
110
|
*/
|
|
111
111
|
export interface MutableTreeDataProvider extends ITreeDataProvider {
|
|
112
112
|
insertNode(parent: TreeNodeItem | undefined, child: TreeNodeItem, index?: number): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeDataProvider.js","sourceRoot":"","sources":["../../../src/components-react/tree/TreeDataProvider.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AA2EH;;GAEG;AACI,MAAM,qBAAqB,GAAG,CAAC,QAA0B,EAAmC,EAAE;IACnG,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC,CAAC;AAFW,QAAA,qBAAqB,yBAEhC;AACF;;GAEG;AACI,MAAM,yBAAyB,GAAG,CAAC,QAA0B,EAAuC,EAAE;IAC3G,OAAO,CAAC,SAAS,KAAM,QAAoC,CAAC,IAAI,CAAC,CAAC;AACpE,CAAC,CAAC;AAFW,QAAA,yBAAyB,6BAEpC;AACF;;GAEG;AACI,MAAM,wBAAwB,GAAG,CAAC,QAA0B,EAAsC,EAAE;IACzG,OAAO,CAAC,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC;AAC1C,CAAC,CAAC;AAFW,QAAA,wBAAwB,4BAEnC;AACF;;GAEG;AACI,MAAM,2BAA2B,GAAG,CAAC,QAA0B,EAAiC,EAAE;IACvG,MAAM,SAAS,GAAG,QAA6B,CAAC;IAChD,OAAO,SAAS,KAAK,SAAS,CAAC,QAAQ,IAAI,SAAS,KAAK,SAAS,CAAC,aAAa,CAAC;AACnF,CAAC,CAAC;AAHW,QAAA,2BAA2B,+BAGtC;AACF;;;;;GAKG;AACI,MAAM,WAAW,GAAG,CAAC,IAAkB,EAAE,EAAE;IAChD,MAAM,eAAe,GAAG,IAAqC,CAAC;IAC9D,IAAI,UAAU,IAAI,eAAe,IAAI,eAAe,CAAC,QAAQ,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAClG,OAAO,IAAI,CAAC;IACd,MAAM,aAAa,GAAG,IAA+B,CAAC;IACtD,IAAI,aAAa,IAAI,aAAa,IAAI,aAAa,CAAC,WAAW;QAC7D,OAAO,IAAI,CAAC;IACd,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AARW,QAAA,WAAW,eAQtB","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport { PropertyRecord } from \"@itwin/appui-abstract\";\nimport { CheckBoxState } from \"@itwin/core-react\";\nimport { PageOptions } from \"../common/PageOptions\";\nimport { ItemStyle } from \"../properties/ItemStyle\";\n\n/**\n * A node item which can be displayed in a tree.\n * @public\n */\nexport interface TreeNodeItem {\n id: string;\n parentId?: string;\n label: PropertyRecord;\n description?: string;\n autoExpand?: boolean;\n icon?: string;\n isCheckboxVisible?: boolean;\n isCheckboxDisabled?: boolean;\n checkBoxState?: CheckBoxState;\n isEditable?: boolean;\n style?: ItemStyle;\n /**\n * A key-value pairs data structure that can be used by data provider\n * to store some custom data for this node item.\n */\n extendedData?: { [key: string]: any };\n}\n\n/** A [[TreeNodeItem]] for immediately loaded trees\n * @public\n */\nexport interface ImmediatelyLoadedTreeNodeItem extends TreeNodeItem {\n children?: TreeNodeItem[];\n}\n\n/** A [[TreeNodeItem]] for delay-loaded trees\n * @public\n */\nexport interface DelayLoadedTreeNodeItem extends TreeNodeItem {\n hasChildren?: boolean;\n}\n\n/** Array of tree node data elements\n * @public\n */\nexport type TreeDataProviderRaw = ImmediatelyLoadedTreeNodeItem[];\n\n/** A Promise for TreeDataProviderRaw\n * @public\n */\nexport type TreeDataProviderPromise = Promise<TreeDataProviderRaw>;\n\n/** Signature for a method that returns TreeDataProviderPromise for supplied parent node\n * @public\n */\nexport type TreeDataProviderMethod = (node?: TreeNodeItem) => Promise<DelayLoadedTreeNodeItem[]>;\n\n/** Interface for a tree data provider class\n * @public\n */\nexport interface ITreeDataProvider {\n /** @deprecated */\n onTreeNodeChanged?: BeEvent<TreeDataChangesListener>;\n getNodesCount(parent?: TreeNodeItem): Promise<number>;\n getNodes(parent?: TreeNodeItem, page?: PageOptions): Promise<DelayLoadedTreeNodeItem[]>;\n}\n\n/** Type definition for all BeInspireTree data providers\n * @public\n */\nexport type TreeDataProvider = TreeDataProviderRaw | TreeDataProviderPromise | TreeDataProviderMethod | ITreeDataProvider;\n\n/** Checks if [[TreeDataProvider]] is a [[TreeDataProviderRaw]]\n * @public\n */\nexport const isTreeDataProviderRaw = (provider: TreeDataProvider): provider is TreeDataProviderRaw => {\n return Array.isArray(provider);\n};\n/** Checks if [[TreeDataProvider]] is a [[TreeDataProviderPromise]]\n * @public\n */\nexport const isTreeDataProviderPromise = (provider: TreeDataProvider): provider is TreeDataProviderPromise => {\n return (undefined !== (provider as TreeDataProviderPromise).then);\n};\n/** Checks if [[TreeDataProvider]] is a [[TreeDataProviderMethod]]\n * @public\n */\nexport const isTreeDataProviderMethod = (provider: TreeDataProvider): provider is TreeDataProviderMethod => {\n return (typeof provider === \"function\");\n};\n/** Checks if [[TreeDataProvider]] is an [[ITreeDataProvider]]\n * @public\n */\nexport const isTreeDataProviderInterface = (provider: TreeDataProvider): provider is ITreeDataProvider => {\n const candidate = provider as ITreeDataProvider;\n return undefined !== candidate.getNodes && undefined !== candidate.getNodesCount;\n};\n/**\n * Determines whether node has children\n * @param node node to check\n * @returns whether node has children\n * @public\n */\nexport const hasChildren = (node: TreeNodeItem) => {\n const nodeAsImmediate = node as ImmediatelyLoadedTreeNodeItem;\n if (\"children\" in nodeAsImmediate && nodeAsImmediate.children && nodeAsImmediate.children.length > 0)\n return true;\n const nodeAsDelayed = node as DelayLoadedTreeNodeItem;\n if (\"hasChildren\" in nodeAsDelayed && nodeAsDelayed.hasChildren)\n return true;\n return false;\n};\n\n/**\n * An interface tree data change listeners.\n * Contains a list of nodes that changed or undefined if root level changed.\n * @public\n */\nexport type TreeDataChangesListener = (nodes: Array<TreeNodeItem | undefined>) => void;\n\n/**\n * EditableTreeDataProvider provides cell editing processing for the Tree.\n * @public\n */\nexport interface EditableTreeDataProvider extends ITreeDataProvider {\n updateLabel(nodeItem: TreeNodeItem, newLabel: string): void;\n}\n\n/**\n * MutableTreeDataProvider provides manipulation processing for the Tree.\n * Useful for Drag & Drop processing.\n * @beta\n */\nexport interface MutableTreeDataProvider extends ITreeDataProvider {\n insertNode(parent: TreeNodeItem | undefined, child: TreeNodeItem, index?: number): void;\n removeNode(parent: TreeNodeItem | undefined, child: TreeNodeItem): void;\n moveNode(parent: TreeNodeItem | undefined, newParent: TreeNodeItem | undefined, child: TreeNodeItem, index?: number): void;\n\n isDescendent(parent: TreeNodeItem | undefined, nodeItem: TreeNodeItem): boolean;\n getNodeIndex(parent: TreeNodeItem | undefined, child: TreeNodeItem): number;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"TreeDataProvider.js","sourceRoot":"","sources":["../../../src/components-react/tree/TreeDataProvider.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AA2EH;;GAEG;AACI,MAAM,qBAAqB,GAAG,CAAC,QAA0B,EAAmC,EAAE;IACnG,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC,CAAC;AAFW,QAAA,qBAAqB,yBAEhC;AACF;;GAEG;AACI,MAAM,yBAAyB,GAAG,CAAC,QAA0B,EAAuC,EAAE;IAC3G,OAAO,CAAC,SAAS,KAAM,QAAoC,CAAC,IAAI,CAAC,CAAC;AACpE,CAAC,CAAC;AAFW,QAAA,yBAAyB,6BAEpC;AACF;;GAEG;AACI,MAAM,wBAAwB,GAAG,CAAC,QAA0B,EAAsC,EAAE;IACzG,OAAO,CAAC,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC;AAC1C,CAAC,CAAC;AAFW,QAAA,wBAAwB,4BAEnC;AACF;;GAEG;AACI,MAAM,2BAA2B,GAAG,CAAC,QAA0B,EAAiC,EAAE;IACvG,MAAM,SAAS,GAAG,QAA6B,CAAC;IAChD,OAAO,SAAS,KAAK,SAAS,CAAC,QAAQ,IAAI,SAAS,KAAK,SAAS,CAAC,aAAa,CAAC;AACnF,CAAC,CAAC;AAHW,QAAA,2BAA2B,+BAGtC;AACF;;;;;GAKG;AACI,MAAM,WAAW,GAAG,CAAC,IAAkB,EAAE,EAAE;IAChD,MAAM,eAAe,GAAG,IAAqC,CAAC;IAC9D,IAAI,UAAU,IAAI,eAAe,IAAI,eAAe,CAAC,QAAQ,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAClG,OAAO,IAAI,CAAC;IACd,MAAM,aAAa,GAAG,IAA+B,CAAC;IACtD,IAAI,aAAa,IAAI,aAAa,IAAI,aAAa,CAAC,WAAW;QAC7D,OAAO,IAAI,CAAC;IACd,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AARW,QAAA,WAAW,eAQtB","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport { PropertyRecord } from \"@itwin/appui-abstract\";\nimport { CheckBoxState } from \"@itwin/core-react\";\nimport { PageOptions } from \"../common/PageOptions\";\nimport { ItemStyle } from \"../properties/ItemStyle\";\n\n/**\n * A node item which can be displayed in a tree.\n * @public\n */\nexport interface TreeNodeItem {\n id: string;\n parentId?: string;\n label: PropertyRecord;\n description?: string;\n autoExpand?: boolean;\n icon?: string;\n isCheckboxVisible?: boolean;\n isCheckboxDisabled?: boolean;\n checkBoxState?: CheckBoxState;\n isEditable?: boolean;\n style?: ItemStyle;\n /**\n * A key-value pairs data structure that can be used by data provider\n * to store some custom data for this node item.\n */\n extendedData?: { [key: string]: any };\n}\n\n/** A [[TreeNodeItem]] for immediately loaded trees\n * @public\n */\nexport interface ImmediatelyLoadedTreeNodeItem extends TreeNodeItem {\n children?: TreeNodeItem[];\n}\n\n/** A [[TreeNodeItem]] for delay-loaded trees\n * @public\n */\nexport interface DelayLoadedTreeNodeItem extends TreeNodeItem {\n hasChildren?: boolean;\n}\n\n/** Array of tree node data elements\n * @public\n */\nexport type TreeDataProviderRaw = ImmediatelyLoadedTreeNodeItem[];\n\n/** A Promise for TreeDataProviderRaw\n * @public\n */\nexport type TreeDataProviderPromise = Promise<TreeDataProviderRaw>;\n\n/** Signature for a method that returns TreeDataProviderPromise for supplied parent node\n * @public\n */\nexport type TreeDataProviderMethod = (node?: TreeNodeItem) => Promise<DelayLoadedTreeNodeItem[]>;\n\n/** Interface for a tree data provider class\n * @public\n */\nexport interface ITreeDataProvider {\n /** @deprecated */\n onTreeNodeChanged?: BeEvent<TreeDataChangesListener>;\n getNodesCount(parent?: TreeNodeItem): Promise<number>;\n getNodes(parent?: TreeNodeItem, page?: PageOptions): Promise<DelayLoadedTreeNodeItem[]>;\n}\n\n/** Type definition for all BeInspireTree data providers\n * @public\n */\nexport type TreeDataProvider = TreeDataProviderRaw | TreeDataProviderPromise | TreeDataProviderMethod | ITreeDataProvider;\n\n/** Checks if [[TreeDataProvider]] is a [[TreeDataProviderRaw]]\n * @public\n */\nexport const isTreeDataProviderRaw = (provider: TreeDataProvider): provider is TreeDataProviderRaw => {\n return Array.isArray(provider);\n};\n/** Checks if [[TreeDataProvider]] is a [[TreeDataProviderPromise]]\n * @public\n */\nexport const isTreeDataProviderPromise = (provider: TreeDataProvider): provider is TreeDataProviderPromise => {\n return (undefined !== (provider as TreeDataProviderPromise).then);\n};\n/** Checks if [[TreeDataProvider]] is a [[TreeDataProviderMethod]]\n * @public\n */\nexport const isTreeDataProviderMethod = (provider: TreeDataProvider): provider is TreeDataProviderMethod => {\n return (typeof provider === \"function\");\n};\n/** Checks if [[TreeDataProvider]] is an [[ITreeDataProvider]]\n * @public\n */\nexport const isTreeDataProviderInterface = (provider: TreeDataProvider): provider is ITreeDataProvider => {\n const candidate = provider as ITreeDataProvider;\n return undefined !== candidate.getNodes && undefined !== candidate.getNodesCount;\n};\n/**\n * Determines whether node has children\n * @param node node to check\n * @returns whether node has children\n * @public\n */\nexport const hasChildren = (node: TreeNodeItem) => {\n const nodeAsImmediate = node as ImmediatelyLoadedTreeNodeItem;\n if (\"children\" in nodeAsImmediate && nodeAsImmediate.children && nodeAsImmediate.children.length > 0)\n return true;\n const nodeAsDelayed = node as DelayLoadedTreeNodeItem;\n if (\"hasChildren\" in nodeAsDelayed && nodeAsDelayed.hasChildren)\n return true;\n return false;\n};\n\n/**\n * An interface tree data change listeners.\n * Contains a list of nodes that changed or undefined if root level changed.\n * @public\n */\nexport type TreeDataChangesListener = (nodes: Array<TreeNodeItem | undefined>) => void;\n\n/**\n * EditableTreeDataProvider provides cell editing processing for the Tree.\n * @public\n */\nexport interface EditableTreeDataProvider extends ITreeDataProvider {\n updateLabel(nodeItem: TreeNodeItem, newLabel: string): void;\n}\n\n/**\n * MutableTreeDataProvider provides manipulation processing for the Tree.\n * Useful for Drag & Drop processing.\n * @beta @deprecated\n */\nexport interface MutableTreeDataProvider extends ITreeDataProvider {\n insertNode(parent: TreeNodeItem | undefined, child: TreeNodeItem, index?: number): void;\n removeNode(parent: TreeNodeItem | undefined, child: TreeNodeItem): void;\n moveNode(parent: TreeNodeItem | undefined, newParent: TreeNodeItem | undefined, child: TreeNodeItem, index?: number): void;\n\n isDescendent(parent: TreeNodeItem | undefined, nodeItem: TreeNodeItem): boolean;\n getNodeIndex(parent: TreeNodeItem | undefined, child: TreeNodeItem): number;\n}\n"]}
|
|
@@ -21,10 +21,9 @@ export declare function useTreeModel(modelSource: TreeModelSource): TreeModel;
|
|
|
21
21
|
*/
|
|
22
22
|
export declare function useTreeNodeLoader<TDataProvider extends TreeDataProvider>(dataProvider: TDataProvider, modelSource: TreeModelSource): TreeNodeLoader<TDataProvider>;
|
|
23
23
|
/**
|
|
24
|
-
* Custom hook which creates a paging nodes' loader using the supplied data provider and model source. The
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* @beta
|
|
24
|
+
* Custom hook which creates a paging nodes' loader using the supplied data provider and model source. The loader pulls
|
|
25
|
+
* nodes from the data provider and puts them into the model source.
|
|
26
|
+
* @public
|
|
28
27
|
*/
|
|
29
28
|
export declare function usePagedTreeNodeLoader<TDataProvider extends TreeDataProvider>(dataProvider: TDataProvider, pageSize: number, modelSource: TreeModelSource): PagedTreeNodeLoader<TDataProvider>;
|
|
30
29
|
/**
|
|
@@ -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
|
|
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"}
|
|
@@ -43,10 +43,9 @@ function useTreeNodeLoader(dataProvider, modelSource) {
|
|
|
43
43
|
}
|
|
44
44
|
exports.useTreeNodeLoader = useTreeNodeLoader;
|
|
45
45
|
/**
|
|
46
|
-
* Custom hook which creates a paging nodes' loader using the supplied data provider and model source. The
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
* @beta
|
|
46
|
+
* Custom hook which creates a paging nodes' loader using the supplied data provider and model source. The loader pulls
|
|
47
|
+
* nodes from the data provider and puts them into the model source.
|
|
48
|
+
* @public
|
|
50
49
|
*/
|
|
51
50
|
function usePagedTreeNodeLoader(dataProvider, pageSize, modelSource) {
|
|
52
51
|
const createLoader = (0, react_1.useCallback)(() => new TreeNodeLoader_1.PagedTreeNodeLoader(dataProvider, modelSource, pageSize), [dataProvider, modelSource, pageSize]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeHooks.js","sourceRoot":"","sources":["../../../../src/components-react/tree/controlled/TreeHooks.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,iCAAkE;AAClE,kDAAkD;AAElD,yDAA8E;AAE9E,uDAAoD;AACpD,qDAAuE;AAEvE;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,WAA4B;IACvD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE3D,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,cAAc,GAAG,GAAG,EAAE;YAC1B,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC;QACF,cAAc,EAAE,CAAC;QACjB,OAAO,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAChE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,OAAO,KAAK,CAAC;AACf,CAAC;AAZD,oCAYC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAyC,YAA2B,EAAE,WAA4B;IACjI,MAAM,YAAY,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE,CAAC,IAAI,+BAAc,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;IACnH,OAAO,IAAA,0BAAa,EAAC,YAAY,CAAC,CAAC;AACrC,CAAC;AAHD,8CAGC;AAED
|
|
1
|
+
{"version":3,"file":"TreeHooks.js","sourceRoot":"","sources":["../../../../src/components-react/tree/controlled/TreeHooks.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,iCAAkE;AAClE,kDAAkD;AAElD,yDAA8E;AAE9E,uDAAoD;AACpD,qDAAuE;AAEvE;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,WAA4B;IACvD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE3D,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,cAAc,GAAG,GAAG,EAAE;YAC1B,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC;QACF,cAAc,EAAE,CAAC;QACjB,OAAO,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAChE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,OAAO,KAAK,CAAC;AACf,CAAC;AAZD,oCAYC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAyC,YAA2B,EAAE,WAA4B;IACjI,MAAM,YAAY,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE,CAAC,IAAI,+BAAc,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;IACnH,OAAO,IAAA,0BAAa,EAAC,YAAY,CAAC,CAAC;AACrC,CAAC;AAHD,8CAGC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CAAyC,YAA2B,EAAE,QAAgB,EAAE,WAA4B;IACxJ,MAAM,YAAY,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE,CAAC,IAAI,oCAAmB,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC5I,OAAO,IAAA,0BAAa,EAAC,YAAY,CAAC,CAAC;AACrC,CAAC;AAHD,wDAGC;AAED;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAAC,YAA8B;IAC/D,0HAA0H;IAC1H,OAAO,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,IAAI,iCAAe,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,kDAAkD;AACjH,CAAC;AAHD,gDAGC;AAED;;;;;;;;GAQG;AACH,SAAgB,oBAAoB,CAA0C,eAAgE;IAC5I,MAAM,OAAO,GAAG,IAAA,mBAAW,EAAC,GAAqB,EAAE;QACjD,IAAI,OAAO,eAAe,KAAK,UAAU;YACvC,OAAO,eAAe,EAAE,CAAC;QAC3B,OAAO,IAAI,mCAAgB,CAAC,eAAe,CAAC,CAAC;IAC/C,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IACtB,OAAO,IAAA,0BAAa,EAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAPD,oDAOC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useDisposable } from \"@itwin/core-react\";\nimport { TreeDataProvider } from \"../TreeDataProvider\";\nimport { TreeEventHandler, TreeEventHandlerParams } from \"./TreeEventHandler\";\nimport { TreeModel } from \"./TreeModel\";\nimport { TreeModelSource } from \"./TreeModelSource\";\nimport { PagedTreeNodeLoader, TreeNodeLoader } from \"./TreeNodeLoader\";\n\n/**\n * React hook that returns an immutable `TreeModel` whenever it changes in the given\n * `TreeModelSource`.\n *\n * @public\n */\nexport function useTreeModel(modelSource: TreeModelSource): TreeModel {\n const [model, setModel] = useState(modelSource.getModel());\n\n useEffect(() => {\n const onModelChanged = () => {\n setModel(modelSource.getModel());\n };\n onModelChanged();\n return modelSource.onModelChanged.addListener(onModelChanged);\n }, [modelSource]);\n\n return model;\n}\n\n/**\n * Custom hook which creates a nodes' loader using the supplied data provider and model source. The\n * loader pulls nodes from the data provider and puts them into the model source.\n *\n * @public\n */\nexport function useTreeNodeLoader<TDataProvider extends TreeDataProvider>(dataProvider: TDataProvider, modelSource: TreeModelSource) {\n const createLoader = useCallback(() => new TreeNodeLoader(dataProvider, modelSource), [dataProvider, modelSource]);\n return useDisposable(createLoader);\n}\n\n/**\n * Custom hook which creates a paging nodes' loader using the supplied data provider and model source. The loader pulls\n * nodes from the data provider and puts them into the model source.\n * @public\n */\nexport function usePagedTreeNodeLoader<TDataProvider extends TreeDataProvider>(dataProvider: TDataProvider, pageSize: number, modelSource: TreeModelSource) {\n const createLoader = useCallback(() => new PagedTreeNodeLoader(dataProvider, modelSource, pageSize), [dataProvider, modelSource, pageSize]);\n return useDisposable(createLoader);\n}\n\n/**\n * Custom hook which creates a `TreeModelSource`.\n *\n * @note The model source has no direct dependency on the data provider, but we want a fresh model\n * source whenever the data provider changes - that's the reason the hook takes a data provider.\n *\n * @public\n */\nexport function useTreeModelSource(dataProvider: TreeDataProvider) {\n // need to create new model source every time data provider changes although it does not need data provider to be created.\n return useMemo(() => new TreeModelSource(), [dataProvider]); // eslint-disable-line react-hooks/exhaustive-deps\n}\n\n/**\n * Custom hook which creates and takes care of disposing a TreeEventsHandler. The input is either a factory method\n * for a custom `TreeEventHandler` implementation or parameters for the default implementation.\n *\n * @note Caller must ensure `factoryOrParams` changes only when a new handler needs to be created. `useCallback` or `useMemo` can\n * be used for that purpose based on whether the input is a factory function or params object.\n *\n * @public\n */\nexport function useTreeEventsHandler<TEventsHandler extends TreeEventHandler>(factoryOrParams: (() => TEventsHandler) | TreeEventHandlerParams) {\n const factory = useCallback((): TreeEventHandler => {\n if (typeof factoryOrParams === \"function\")\n return factoryOrParams();\n return new TreeEventHandler(factoryOrParams);\n }, [factoryOrParams]);\n return useDisposable(factory);\n}\n"]}
|
|
@@ -45,7 +45,7 @@ export interface ControlledTreeProps extends CommonProps {
|
|
|
45
45
|
noDataRenderer?: () => React.ReactElement;
|
|
46
46
|
/**
|
|
47
47
|
* Callback that is invoked when rendered items range changes.
|
|
48
|
-
* @
|
|
48
|
+
* @beta
|
|
49
49
|
*/
|
|
50
50
|
onItemsRendered?: (items: RenderedItemsRange) => void;
|
|
51
51
|
/** Width of the tree renderer. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ControlledTree.js","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/component/ControlledTree.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport * as React from \"react\";\nimport { CommonProps, FillCentered } from \"@itwin/core-react\";\nimport { DelayedSpinner } from \"../../../common/DelayedSpinner\";\nimport { SelectionMode } from \"../../../common/selection/SelectionModes\";\nimport { UiComponents } from \"../../../UiComponents\";\nimport { HighlightableTreeProps } from \"../../HighlightingEngine\";\nimport { TreeImageLoader } from \"../../ImageLoader\";\nimport { toRxjsObservable } from \"../Observable\";\nimport { TreeEventDispatcher } from \"../TreeEventDispatcher\";\nimport { TreeEvents } from \"../TreeEvents\";\nimport { computeVisibleNodes, isTreeModelNode, TreeModel, TreeModelNode, TreeModelNodePlaceholder, VisibleTreeNodes } from \"../TreeModel\";\nimport { ITreeNodeLoader } from \"../TreeNodeLoader\";\nimport { TreeNodeRenderer, TreeNodeRendererProps } from \"./TreeNodeRenderer\";\nimport { RenderedItemsRange, TreeRenderer, TreeRendererProps } from \"./TreeRenderer\";\n\n/**\n * Properties for [[ControlledTree]]\n * @public\n */\nexport interface ControlledTreeProps extends CommonProps {\n /** Model of the tree to display. */\n model: TreeModel;\n /** Node loader used to load root nodes and placeholder nodes. */\n nodeLoader: ITreeNodeLoader;\n /** Tree events handler. */\n eventsHandler: TreeEvents;\n /** Mode of nodes' selection in tree. */\n selectionMode: SelectionMode;\n /**\n * Specifies whether to show node description or not. It is used in default node renderer and to determine node height.\n * If custom node renderer and node height callbacks are used it does nothing.\n */\n descriptionsEnabled?: boolean;\n /**\n * Specifies whether to show node icon or not. It is used in default node renderer.\n * If custom node renderer is used it does nothing.\n */\n iconsEnabled?: boolean;\n /**\n * Used to highlight matches when filtering tree.\n * It is passed to treeRenderer.\n */\n nodeHighlightingProps?: HighlightableTreeProps;\n /** Custom renderer to be used to render a tree. */\n treeRenderer?: (props: TreeRendererProps) => React.ReactElement;\n /** Custom renderer to be used while root nodes is loading. */\n spinnerRenderer?: () => React.ReactElement;\n /** Custom renderer to be used when there is no data to show in tree. */\n noDataRenderer?: () => React.ReactElement;\n /**\n * Callback that is invoked when rendered items range changes.\n * @alpha\n */\n onItemsRendered?: (items: RenderedItemsRange) => void;\n /** Width of the tree renderer. */\n width: number;\n /** Height of the tree renderer. */\n height: number;\n}\n\n/**\n * React tree component which rendering is fully controlled from outside.\n * @public\n */\nexport function ControlledTree(props: ControlledTreeProps) {\n const nodeHeight = useNodeHeight(!!props.descriptionsEnabled);\n const imageLoader = React.useMemo(() => new TreeImageLoader(), []);\n const nodeRenderer = React.useCallback((nodeProps: TreeNodeRendererProps) => (\n <TreeNodeRenderer\n {...nodeProps}\n descriptionEnabled={props.descriptionsEnabled}\n imageLoader={props.iconsEnabled ? imageLoader : undefined}\n />\n ), [props.descriptionsEnabled, props.iconsEnabled, imageLoader]);\n\n const visibleNodes = React.useMemo(() => computeVisibleNodes(props.model), [props.model]);\n const eventDispatcher = useEventDispatcher(props.nodeLoader, props.eventsHandler, props.selectionMode, visibleNodes);\n\n const treeProps: TreeRendererProps = {\n nodeRenderer,\n nodeHeight,\n visibleNodes,\n treeActions: eventDispatcher,\n nodeLoader: props.nodeLoader,\n nodeHighlightingProps: props.nodeHighlightingProps,\n onItemsRendered: props.onItemsRendered,\n width: props.width,\n height: props.height,\n };\n\n const loading = useRootNodeLoader(visibleNodes, props.nodeLoader);\n const noData = visibleNodes.getNumRootNodes() === 0;\n return (\n <Loader loading={loading} noData={noData} spinnerRenderer={props.spinnerRenderer} noDataRenderer={props.noDataRenderer}>\n {props.treeRenderer ? props.treeRenderer(treeProps) : <TreeRenderer {...treeProps} />}\n </Loader>\n );\n}\n\nfunction useRootNodeLoader(visibleNodes: VisibleTreeNodes, nodeLoader: ITreeNodeLoader): boolean {\n React.useEffect(() => {\n if (visibleNodes.getNumRootNodes() === undefined) {\n const subscription = toRxjsObservable(nodeLoader.loadNode(visibleNodes.getModel().getRootNode(), 0)).subscribe();\n return () => subscription.unsubscribe();\n }\n\n return () => { };\n }, [visibleNodes, nodeLoader]);\n\n return visibleNodes.getNumRootNodes() === undefined;\n}\n\nfunction useEventDispatcher(nodeLoader: ITreeNodeLoader, treeEvents: TreeEvents, selectionMode: SelectionMode, visibleNodes: VisibleTreeNodes) {\n /* istanbul ignore next */\n const getVisibleNodes = React.useCallback(() => visibleNodes, [visibleNodes]);\n const eventDispatcher = React.useMemo(() => new TreeEventDispatcher(treeEvents, nodeLoader, selectionMode), [treeEvents, nodeLoader, selectionMode]);\n\n React.useEffect(() => {\n eventDispatcher.setVisibleNodes(getVisibleNodes);\n }, [eventDispatcher, getVisibleNodes]);\n\n return eventDispatcher;\n}\n\ninterface LoaderProps {\n loading: boolean;\n noData: boolean;\n spinnerRenderer?: () => React.ReactElement;\n noDataRenderer?: () => React.ReactElement;\n children: JSX.Element;\n}\n\nfunction Loader(props: LoaderProps) {\n if (props.loading) {\n return props.spinnerRenderer\n ? props.spinnerRenderer()\n : (\n <div className=\"components-controlledTree-loader\">\n <DelayedSpinner size=\"large\" />\n </div>\n );\n }\n if (props.noData) {\n return props.noDataRenderer\n ? props.noDataRenderer()\n : (\n <FillCentered>\n <p className=\"components-controlledTree-errorMessage\">\n {UiComponents.translate(\"general.noData\")}\n </p>\n </FillCentered>\n );\n }\n\n return props.children;\n}\n\nfunction useNodeHeight(\n descriptionsEnabled: boolean,\n): (node: TreeModelNode | TreeModelNodePlaceholder) => number {\n return React.useCallback(\n (node: TreeModelNode | TreeModelNodePlaceholder): number => {\n const contentHeight = (isTreeModelNode(node) && descriptionsEnabled && node && node.description) ? 43 : 24;\n const borderSize = 1;\n // Not counting node's border size twice because we want neighboring borders to overlap\n return contentHeight + borderSize;\n },\n [descriptionsEnabled],\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ControlledTree.js","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/component/ControlledTree.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;;;;;;;;;;;;;;;;;;;;AAEH,6CAA+B;AAC/B,kDAA8D;AAC9D,mEAAgE;AAEhE,wDAAqD;AAErD,mDAAoD;AACpD,8CAAiD;AACjD,gEAA6D;AAE7D,4CAA0I;AAE1I,yDAA6E;AAC7E,iDAAqF;AA+CrF;;;GAGG;AACH,SAAgB,cAAc,CAAC,KAA0B;IACvD,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,6BAAe,EAAE,EAAE,EAAE,CAAC,CAAC;IACnE,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,SAAgC,EAAE,EAAE,CAAC,CAC3E,oBAAC,mCAAgB,oBACX,SAAS,IACb,kBAAkB,EAAE,KAAK,CAAC,mBAAmB,EAC7C,WAAW,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,IACzD,CACH,EAAE,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;IAEjE,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAA,+BAAmB,EAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1F,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAErH,MAAM,SAAS,GAAsB;QACnC,YAAY;QACZ,UAAU;QACV,YAAY;QACZ,WAAW,EAAE,eAAe;QAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;QAClD,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC;IAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACpD,OAAO,CACL,oBAAC,MAAM,IAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,IACnH,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,oBAAC,2BAAY,oBAAK,SAAS,EAAI,CAC9E,CACV,CAAC;AACJ,CAAC;AAjCD,wCAiCC;AAED,SAAS,iBAAiB,CAAC,YAA8B,EAAE,UAA2B;IACpF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,YAAY,CAAC,eAAe,EAAE,KAAK,SAAS,EAAE;YAChD,MAAM,YAAY,GAAG,IAAA,6BAAgB,EAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YACjH,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;SACzC;QAED,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;IACnB,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IAE/B,OAAO,YAAY,CAAC,eAAe,EAAE,KAAK,SAAS,CAAC;AACtD,CAAC;AAED,SAAS,kBAAkB,CAAC,UAA2B,EAAE,UAAsB,EAAE,aAA4B,EAAE,YAA8B;IAC3I,0BAA0B;IAC1B,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAC9E,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,yCAAmB,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;IAErJ,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,eAAe,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IACnD,CAAC,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC;IAEvC,OAAO,eAAe,CAAC;AACzB,CAAC;AAUD,SAAS,MAAM,CAAC,KAAkB;IAChC,IAAI,KAAK,CAAC,OAAO,EAAE;QACjB,OAAO,KAAK,CAAC,eAAe;YAC1B,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE;YACzB,CAAC,CAAC,CACA,6BAAK,SAAS,EAAC,kCAAkC;gBAC/C,oBAAC,+BAAc,IAAC,IAAI,EAAC,OAAO,GAAG,CAC3B,CACP,CAAC;KACL;IACD,IAAI,KAAK,CAAC,MAAM,EAAE;QAChB,OAAO,KAAK,CAAC,cAAc;YACzB,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE;YACxB,CAAC,CAAC,CACA,oBAAC,yBAAY;gBACX,2BAAG,SAAS,EAAC,wCAAwC,IAClD,2BAAY,CAAC,SAAS,CAAC,gBAAgB,CAAC,CACvC,CACS,CAChB,CAAC;KACL;IAED,OAAO,KAAK,CAAC,QAAQ,CAAC;AACxB,CAAC;AAED,SAAS,aAAa,CACpB,mBAA4B;IAE5B,OAAO,KAAK,CAAC,WAAW,CACtB,CAAC,IAA8C,EAAU,EAAE;QACzD,MAAM,aAAa,GAAG,CAAC,IAAA,2BAAe,EAAC,IAAI,CAAC,IAAI,mBAAmB,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3G,MAAM,UAAU,GAAG,CAAC,CAAC;QACrB,uFAAuF;QACvF,OAAO,aAAa,GAAG,UAAU,CAAC;IACpC,CAAC,EACD,CAAC,mBAAmB,CAAC,CACtB,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport * as React from \"react\";\nimport { CommonProps, FillCentered } from \"@itwin/core-react\";\nimport { DelayedSpinner } from \"../../../common/DelayedSpinner\";\nimport { SelectionMode } from \"../../../common/selection/SelectionModes\";\nimport { UiComponents } from \"../../../UiComponents\";\nimport { HighlightableTreeProps } from \"../../HighlightingEngine\";\nimport { TreeImageLoader } from \"../../ImageLoader\";\nimport { toRxjsObservable } from \"../Observable\";\nimport { TreeEventDispatcher } from \"../TreeEventDispatcher\";\nimport { TreeEvents } from \"../TreeEvents\";\nimport { computeVisibleNodes, isTreeModelNode, TreeModel, TreeModelNode, TreeModelNodePlaceholder, VisibleTreeNodes } from \"../TreeModel\";\nimport { ITreeNodeLoader } from \"../TreeNodeLoader\";\nimport { TreeNodeRenderer, TreeNodeRendererProps } from \"./TreeNodeRenderer\";\nimport { RenderedItemsRange, TreeRenderer, TreeRendererProps } from \"./TreeRenderer\";\n\n/**\n * Properties for [[ControlledTree]]\n * @public\n */\nexport interface ControlledTreeProps extends CommonProps {\n /** Model of the tree to display. */\n model: TreeModel;\n /** Node loader used to load root nodes and placeholder nodes. */\n nodeLoader: ITreeNodeLoader;\n /** Tree events handler. */\n eventsHandler: TreeEvents;\n /** Mode of nodes' selection in tree. */\n selectionMode: SelectionMode;\n /**\n * Specifies whether to show node description or not. It is used in default node renderer and to determine node height.\n * If custom node renderer and node height callbacks are used it does nothing.\n */\n descriptionsEnabled?: boolean;\n /**\n * Specifies whether to show node icon or not. It is used in default node renderer.\n * If custom node renderer is used it does nothing.\n */\n iconsEnabled?: boolean;\n /**\n * Used to highlight matches when filtering tree.\n * It is passed to treeRenderer.\n */\n nodeHighlightingProps?: HighlightableTreeProps;\n /** Custom renderer to be used to render a tree. */\n treeRenderer?: (props: TreeRendererProps) => React.ReactElement;\n /** Custom renderer to be used while root nodes is loading. */\n spinnerRenderer?: () => React.ReactElement;\n /** Custom renderer to be used when there is no data to show in tree. */\n noDataRenderer?: () => React.ReactElement;\n /**\n * Callback that is invoked when rendered items range changes.\n * @beta\n */\n onItemsRendered?: (items: RenderedItemsRange) => void;\n /** Width of the tree renderer. */\n width: number;\n /** Height of the tree renderer. */\n height: number;\n}\n\n/**\n * React tree component which rendering is fully controlled from outside.\n * @public\n */\nexport function ControlledTree(props: ControlledTreeProps) {\n const nodeHeight = useNodeHeight(!!props.descriptionsEnabled);\n const imageLoader = React.useMemo(() => new TreeImageLoader(), []);\n const nodeRenderer = React.useCallback((nodeProps: TreeNodeRendererProps) => (\n <TreeNodeRenderer\n {...nodeProps}\n descriptionEnabled={props.descriptionsEnabled}\n imageLoader={props.iconsEnabled ? imageLoader : undefined}\n />\n ), [props.descriptionsEnabled, props.iconsEnabled, imageLoader]);\n\n const visibleNodes = React.useMemo(() => computeVisibleNodes(props.model), [props.model]);\n const eventDispatcher = useEventDispatcher(props.nodeLoader, props.eventsHandler, props.selectionMode, visibleNodes);\n\n const treeProps: TreeRendererProps = {\n nodeRenderer,\n nodeHeight,\n visibleNodes,\n treeActions: eventDispatcher,\n nodeLoader: props.nodeLoader,\n nodeHighlightingProps: props.nodeHighlightingProps,\n onItemsRendered: props.onItemsRendered,\n width: props.width,\n height: props.height,\n };\n\n const loading = useRootNodeLoader(visibleNodes, props.nodeLoader);\n const noData = visibleNodes.getNumRootNodes() === 0;\n return (\n <Loader loading={loading} noData={noData} spinnerRenderer={props.spinnerRenderer} noDataRenderer={props.noDataRenderer}>\n {props.treeRenderer ? props.treeRenderer(treeProps) : <TreeRenderer {...treeProps} />}\n </Loader>\n );\n}\n\nfunction useRootNodeLoader(visibleNodes: VisibleTreeNodes, nodeLoader: ITreeNodeLoader): boolean {\n React.useEffect(() => {\n if (visibleNodes.getNumRootNodes() === undefined) {\n const subscription = toRxjsObservable(nodeLoader.loadNode(visibleNodes.getModel().getRootNode(), 0)).subscribe();\n return () => subscription.unsubscribe();\n }\n\n return () => { };\n }, [visibleNodes, nodeLoader]);\n\n return visibleNodes.getNumRootNodes() === undefined;\n}\n\nfunction useEventDispatcher(nodeLoader: ITreeNodeLoader, treeEvents: TreeEvents, selectionMode: SelectionMode, visibleNodes: VisibleTreeNodes) {\n /* istanbul ignore next */\n const getVisibleNodes = React.useCallback(() => visibleNodes, [visibleNodes]);\n const eventDispatcher = React.useMemo(() => new TreeEventDispatcher(treeEvents, nodeLoader, selectionMode), [treeEvents, nodeLoader, selectionMode]);\n\n React.useEffect(() => {\n eventDispatcher.setVisibleNodes(getVisibleNodes);\n }, [eventDispatcher, getVisibleNodes]);\n\n return eventDispatcher;\n}\n\ninterface LoaderProps {\n loading: boolean;\n noData: boolean;\n spinnerRenderer?: () => React.ReactElement;\n noDataRenderer?: () => React.ReactElement;\n children: JSX.Element;\n}\n\nfunction Loader(props: LoaderProps) {\n if (props.loading) {\n return props.spinnerRenderer\n ? props.spinnerRenderer()\n : (\n <div className=\"components-controlledTree-loader\">\n <DelayedSpinner size=\"large\" />\n </div>\n );\n }\n if (props.noData) {\n return props.noDataRenderer\n ? props.noDataRenderer()\n : (\n <FillCentered>\n <p className=\"components-controlledTree-errorMessage\">\n {UiComponents.translate(\"general.noData\")}\n </p>\n </FillCentered>\n );\n }\n\n return props.children;\n}\n\nfunction useNodeHeight(\n descriptionsEnabled: boolean,\n): (node: TreeModelNode | TreeModelNodePlaceholder) => number {\n return React.useCallback(\n (node: TreeModelNode | TreeModelNodePlaceholder): number => {\n const contentHeight = (isTreeModelNode(node) && descriptionsEnabled && node && node.description) ? 43 : 24;\n const borderSize = 1;\n // Not counting node's border size twice because we want neighboring borders to overlap\n return contentHeight + borderSize;\n },\n [descriptionsEnabled],\n );\n}\n"]}
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
import { TreeModelNode } from "../TreeModel";
|
|
6
|
-
/**
|
|
7
|
-
*
|
|
6
|
+
/**
|
|
7
|
+
* Properties for [[TreeNodeEditor]] component.
|
|
8
|
+
* @public
|
|
8
9
|
*/
|
|
9
10
|
export interface TreeNodeEditorProps {
|
|
10
11
|
/** Tree node which is in editing mode. */
|
|
@@ -18,12 +19,14 @@ export interface TreeNodeEditorProps {
|
|
|
18
19
|
/** @internal */
|
|
19
20
|
ignoreEditorBlur?: boolean;
|
|
20
21
|
}
|
|
21
|
-
/**
|
|
22
|
-
*
|
|
22
|
+
/**
|
|
23
|
+
* Type for tree node editor renderer.
|
|
24
|
+
* @public
|
|
23
25
|
*/
|
|
24
26
|
export declare type TreeNodeEditorRenderer = (props: TreeNodeEditorProps) => React.ReactNode;
|
|
25
|
-
/**
|
|
26
|
-
*
|
|
27
|
+
/**
|
|
28
|
+
* React component for displaying tree node editor.
|
|
29
|
+
* @public
|
|
27
30
|
*/
|
|
28
31
|
export declare function TreeNodeEditor(props: TreeNodeEditorProps): JSX.Element;
|
|
29
32
|
//# sourceMappingURL=TreeNodeEditor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeNodeEditor.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/component/TreeNodeEditor.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C
|
|
1
|
+
{"version":3,"file":"TreeNodeEditor.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/component/TreeNodeEditor.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,IAAI,EAAE,aAAa,CAAC;IACpB,0DAA0D;IAC1D,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,wDAAwD;IACxD,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,oBAAoB;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAE5B,gBAAgB;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;GAGG;AACH,oBAAY,sBAAsB,GAAG,CAAC,KAAK,EAAE,mBAAmB,KAAK,KAAK,CAAC,SAAS,CAAC;AAErF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,eAoBxD"}
|
|
@@ -30,8 +30,9 @@ exports.TreeNodeEditor = void 0;
|
|
|
30
30
|
const React = __importStar(require("react"));
|
|
31
31
|
const appui_abstract_1 = require("@itwin/appui-abstract");
|
|
32
32
|
const EditorContainer_1 = require("../../../editors/EditorContainer");
|
|
33
|
-
/**
|
|
34
|
-
*
|
|
33
|
+
/**
|
|
34
|
+
* React component for displaying tree node editor.
|
|
35
|
+
* @public
|
|
35
36
|
*/
|
|
36
37
|
function TreeNodeEditor(props) {
|
|
37
38
|
const onCommit = (args) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeNodeEditor.js","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/component/TreeNodeEditor.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;;;;;;;;;;;;;;;;;;;;AAEH,6CAA+B;AAC/B,0DAA4F;AAC5F,sEAAwF;
|
|
1
|
+
{"version":3,"file":"TreeNodeEditor.js","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/component/TreeNodeEditor.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;;;;;;;;;;;;;;;;;;;;AAEH,6CAA+B;AAC/B,0DAA4F;AAC5F,sEAAwF;AA2BxF;;;GAGG;AACH,SAAgB,cAAc,CAAC,KAA0B;IACvD,MAAM,QAAQ,GAAG,CAAC,IAAyB,EAAE,EAAE;QAC7C,MAAM,QAAQ,GAAI,IAAI,CAAC,QAA2B,CAAC,KAAe,CAAC;QACnE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEnE,OAAO,CACL,8BAAM,KAAK,EAAE,KAAK,CAAC,KAAK;QACtB,oBAAC,iCAAe,IACd,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,cAAc,CAAC,WAAW,EACjC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EACxC,QAAQ,EAAE,IAAI,GACd,CACG,CACR,CAAC;AACJ,CAAC;AApBD,wCAoBC;AAED,SAAS,oBAAoB,CAAC,KAAqB;IACjD,MAAM,QAAQ,GAAwB;QACpC,IAAI,EAAE,kBAAkB;QACxB,YAAY,EAAE,kBAAkB;QAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ;KAClC,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,+BAAc,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACzD,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;IAE1B,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport * as React from \"react\";\nimport { PrimitiveValue, PropertyDescription, PropertyRecord } from \"@itwin/appui-abstract\";\nimport { EditorContainer, PropertyUpdatedArgs } from \"../../../editors/EditorContainer\";\nimport { TreeModelNode } from \"../TreeModel\";\n\n/**\n * Properties for [[TreeNodeEditor]] component.\n * @public\n */\nexport interface TreeNodeEditorProps {\n /** Tree node which is in editing mode. */\n node: TreeModelNode;\n /** Callback that is called when changes are committed. */\n onCommit: (node: TreeModelNode, newValue: string) => void;\n /** Callback that is called when editing is canceled. */\n onCancel: () => void;\n /** Editor style. */\n style?: React.CSSProperties;\n\n /** @internal */\n ignoreEditorBlur?: boolean;\n}\n\n/**\n * Type for tree node editor renderer.\n * @public\n */\nexport type TreeNodeEditorRenderer = (props: TreeNodeEditorProps) => React.ReactNode;\n\n/**\n * React component for displaying tree node editor.\n * @public\n */\nexport function TreeNodeEditor(props: TreeNodeEditorProps) {\n const onCommit = (args: PropertyUpdatedArgs) => {\n const newValue = (args.newValue as PrimitiveValue).value as string;\n props.onCommit(props.node, newValue);\n };\n\n const propertyRecord = createPropertyRecord(props.node.item.label);\n\n return (\n <span style={props.style}>\n <EditorContainer\n propertyRecord={propertyRecord}\n title={propertyRecord.description}\n onCommit={onCommit}\n onCancel={props.onCancel}\n ignoreEditorBlur={props.ignoreEditorBlur}\n setFocus={true}\n />\n </span>\n );\n}\n\nfunction createPropertyRecord(label: PropertyRecord) {\n const property: PropertyDescription = {\n name: \"tree-node-editor\",\n displayLabel: \"Tree Node Editor\",\n typename: label.property.typename,\n };\n\n const record = new PropertyRecord(label.value, property);\n record.description = \"\";\n record.isReadonly = false;\n\n return record;\n}\n"]}
|
|
@@ -13,33 +13,29 @@ import { TreeNodeEditorRenderer } from "./TreeNodeEditor";
|
|
|
13
13
|
* @public
|
|
14
14
|
*/
|
|
15
15
|
export interface TreeNodeRendererProps extends CommonProps {
|
|
16
|
+
/** Tree node to render. */
|
|
16
17
|
node: TreeModelNode;
|
|
18
|
+
/** Action handler. */
|
|
17
19
|
treeActions: TreeActions;
|
|
18
20
|
/** Properties used to highlight matches when tree is filtered. */
|
|
19
21
|
nodeHighlightProps?: HighlightableTreeNodeProps;
|
|
22
|
+
/** Specifies whether to show descriptions or not. */
|
|
23
|
+
descriptionEnabled?: boolean;
|
|
24
|
+
/** Image loader for node icons. */
|
|
25
|
+
imageLoader?: ITreeImageLoader;
|
|
26
|
+
/** Callback to render custom checkbox. */
|
|
27
|
+
checkboxRenderer?: NodeCheckboxRenderer;
|
|
28
|
+
/** Callback to render custom node editor when node is in editing mode. */
|
|
29
|
+
nodeEditorRenderer?: TreeNodeEditorRenderer;
|
|
20
30
|
/**
|
|
21
31
|
* Callback used to detect when label is rendered. It is used by TreeRenderer for scrolling to active match.
|
|
22
32
|
* @internal
|
|
23
33
|
*/
|
|
24
34
|
onLabelRendered?: (node: TreeModelNode) => void;
|
|
25
35
|
}
|
|
26
|
-
/**
|
|
27
|
-
* Extended properties for [[TreeNodeRenderer]].
|
|
28
|
-
* @beta
|
|
29
|
-
*/
|
|
30
|
-
export interface ExtendedTreeNodeRendererProps extends TreeNodeRendererProps {
|
|
31
|
-
/** Callback to render custom checkbox. */
|
|
32
|
-
checkboxRenderer?: NodeCheckboxRenderer;
|
|
33
|
-
/** Callback to render custom node editor when node is in editing mode. */
|
|
34
|
-
nodeEditorRenderer?: TreeNodeEditorRenderer;
|
|
35
|
-
/** Specifies whether to show descriptions or not. */
|
|
36
|
-
descriptionEnabled?: boolean;
|
|
37
|
-
/** Image loader used to load icon. */
|
|
38
|
-
imageLoader?: ITreeImageLoader;
|
|
39
|
-
}
|
|
40
36
|
/**
|
|
41
37
|
* Default component for rendering tree node.
|
|
42
|
-
* @
|
|
38
|
+
* @public
|
|
43
39
|
*/
|
|
44
|
-
export declare const TreeNodeRenderer: React.MemoExoticComponent<(props:
|
|
40
|
+
export declare const TreeNodeRenderer: React.MemoExoticComponent<(props: TreeNodeRendererProps) => JSX.Element>;
|
|
45
41
|
//# sourceMappingURL=TreeNodeRenderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeNodeRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/component/TreeNodeRenderer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAqB,oBAAoB,EAAY,MAAM,mBAAmB,CAAC;AAGnG,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAgB,aAAa,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;GAGG;AACH,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACxD,IAAI,EAAE,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"TreeNodeRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/component/TreeNodeRenderer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAqB,oBAAoB,EAAY,MAAM,mBAAmB,CAAC;AAGnG,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAgB,aAAa,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;GAGG;AACH,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACxD,2BAA2B;IAC3B,IAAI,EAAE,aAAa,CAAC;IAEpB,sBAAsB;IACtB,WAAW,EAAE,WAAW,CAAC;IAEzB,kEAAkE;IAClE,kBAAkB,CAAC,EAAE,0BAA0B,CAAC;IAEhD,qDAAqD;IACrD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,mCAAmC;IACnC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAE/B,0CAA0C;IAC1C,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IAExC,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,sBAAsB,CAAC;IAE5C;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CACjD;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,oCAAsB,qBAAqB,iBA+CtE,CAAC"}
|
|
@@ -35,7 +35,7 @@ const TreeComponentTestId_1 = require("../../TreeComponentTestId");
|
|
|
35
35
|
const NodeContent_1 = require("./NodeContent");
|
|
36
36
|
/**
|
|
37
37
|
* Default component for rendering tree node.
|
|
38
|
-
* @
|
|
38
|
+
* @public
|
|
39
39
|
*/
|
|
40
40
|
exports.TreeNodeRenderer = React.memo((props) => {
|
|
41
41
|
const label = (React.createElement(NodeContent_1.TreeNodeContent, { key: props.node.id, node: props.node, showDescription: props.descriptionEnabled, valueRendererManager: ValueRendererManager_1.PropertyValueRendererManager.defaultManager, highlightProps: props.nodeHighlightProps, onLabelRendered: props.onLabelRendered, nodeEditorRenderer: props.nodeEditorRenderer }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeNodeRenderer.js","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/component/TreeNodeRenderer.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;;;;;;;;;;;;;;;;;;;;AAEH,6CAA+B;AAC/B,kDAAmG;AACnG,iEAA8D;AAC9D,mFAAwF;AAGxF,mEAAgE;AAGhE,+CAAgD;AAoChD;;;GAGG;AACU,QAAA,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"TreeNodeRenderer.js","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/component/TreeNodeRenderer.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;;;;;;;;;;;;;;;;;;;;AAEH,6CAA+B;AAC/B,kDAAmG;AACnG,iEAA8D;AAC9D,mFAAwF;AAGxF,mEAAgE;AAGhE,+CAAgD;AAoChD;;;GAGG;AACU,QAAA,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,KAA4B,EAAE,EAAE;IAC1E,MAAM,KAAK,GAAG,CACZ,oBAAC,6BAAe,IACd,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAClB,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,eAAe,EAAE,KAAK,CAAC,kBAAkB,EACzC,oBAAoB,EAAE,mDAA4B,CAAC,cAAc,EACjE,cAAc,EAAE,KAAK,CAAC,kBAAkB,EACxC,eAAe,EAAE,KAAK,CAAC,eAAe,EACtC,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,GAC5C,CACH,CAAC;IAEF,SAAS,iBAAiB;QACxB,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU;YACvB,KAAK,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;YAEjD,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,mBAAmB,GAAG,CAAC,YAA0B,EAAqB,EAAE,CAAC,CAAC;QAC9E,KAAK,EAAE,YAAY,CAAC,KAAK;QACzB,OAAO,EAAE,YAAY,CAAC,OAAO;QAC7B,UAAU,EAAE,YAAY,CAAC,UAAU;QACnC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC;KACxF,CAAC,CAAC;IAEH,OAAO,CACL,oBAAC,qBAAQ,mBACM,yCAAmB,CAAC,IAAI,EACrC,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EACnG,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,EACjC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,EACjC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,EAC/B,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,EACpC,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,oBAAC,YAAY,IAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,GAAI,CAAC,CAAC,CAAC,SAAS,EACxG,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EACvB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,EACzE,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EACnE,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EACnE,sBAAsB,EAAE,iBAAiB,EACzC,eAAe,EAAE,EAAE,cAAc,EAAE,KAAK,CAAC,gBAAgB,EAAE,GAC3D,CACH,CAAC;AACJ,CAAC,CAAC,CAAC;AAOH,SAAS,YAAY,CAAC,KAAwB;IAC5C,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACpC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE1C,IAAI,CAAC,KAAK;QACR,OAAO,IAAI,CAAC;IAEd,MAAM,QAAQ,GAAG,IAAI,6BAAa,EAAE,CAAC;IACrC,OAAO,0CAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAI,CAAC;AACvC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport * as React from \"react\";\nimport { CommonProps, NodeCheckboxProps, NodeCheckboxRenderer, TreeNode } from \"@itwin/core-react\";\nimport { ImageRenderer } from \"../../../common/ImageRenderer\";\nimport { PropertyValueRendererManager } from \"../../../properties/ValueRendererManager\";\nimport { HighlightableTreeNodeProps } from \"../../HighlightingEngine\";\nimport { ITreeImageLoader } from \"../../ImageLoader\";\nimport { TreeComponentTestId } from \"../../TreeComponentTestId\";\nimport { TreeActions } from \"../TreeActions\";\nimport { CheckBoxInfo, TreeModelNode } from \"../TreeModel\";\nimport { TreeNodeContent } from \"./NodeContent\";\nimport { TreeNodeEditorRenderer } from \"./TreeNodeEditor\";\n\n/**\n * Properties for [[TreeNodeRenderer]].\n * @public\n */\nexport interface TreeNodeRendererProps extends CommonProps {\n /** Tree node to render. */\n node: TreeModelNode;\n\n /** Action handler. */\n treeActions: TreeActions;\n\n /** Properties used to highlight matches when tree is filtered. */\n nodeHighlightProps?: HighlightableTreeNodeProps;\n\n /** Specifies whether to show descriptions or not. */\n descriptionEnabled?: boolean;\n\n /** Image loader for node icons. */\n imageLoader?: ITreeImageLoader;\n\n /** Callback to render custom checkbox. */\n checkboxRenderer?: NodeCheckboxRenderer;\n\n /** Callback to render custom node editor when node is in editing mode. */\n nodeEditorRenderer?: TreeNodeEditorRenderer;\n\n /**\n * Callback used to detect when label is rendered. It is used by TreeRenderer for scrolling to active match.\n * @internal\n */\n onLabelRendered?: (node: TreeModelNode) => void;\n}\n\n/**\n * Default component for rendering tree node.\n * @public\n */\nexport const TreeNodeRenderer = React.memo((props: TreeNodeRendererProps) => {\n const label = (\n <TreeNodeContent\n key={props.node.id}\n node={props.node}\n showDescription={props.descriptionEnabled}\n valueRendererManager={PropertyValueRendererManager.defaultManager}\n highlightProps={props.nodeHighlightProps}\n onLabelRendered={props.onLabelRendered}\n nodeEditorRenderer={props.nodeEditorRenderer}\n />\n );\n\n function onExpansionToggle() {\n if (props.node.isExpanded)\n props.treeActions.onNodeCollapsed(props.node.id);\n else\n props.treeActions.onNodeExpanded(props.node.id);\n }\n\n const createCheckboxProps = (checkboxInfo: CheckBoxInfo): NodeCheckboxProps => ({\n state: checkboxInfo.state,\n tooltip: checkboxInfo.tooltip,\n isDisabled: checkboxInfo.isDisabled,\n onClick: (newState) => props.treeActions.onNodeCheckboxClicked(props.node.id, newState),\n });\n\n return (\n <TreeNode\n data-testid={TreeComponentTestId.Node}\n className={props.className}\n checkboxProps={props.node.checkbox.isVisible ? createCheckboxProps(props.node.checkbox) : undefined}\n style={props.style}\n isExpanded={props.node.isExpanded}\n isSelected={props.node.isSelected}\n isLoading={props.node.isLoading}\n isLeaf={props.node.numChildren === 0}\n icon={props.imageLoader ? <TreeNodeIcon node={props.node} imageLoader={props.imageLoader} /> : undefined}\n label={label}\n level={props.node.depth}\n onClick={(event) => props.treeActions.onNodeClicked(props.node.id, event)}\n onMouseDown={() => props.treeActions.onNodeMouseDown(props.node.id)}\n onMouseMove={() => props.treeActions.onNodeMouseMove(props.node.id)}\n onClickExpansionToggle={onExpansionToggle}\n renderOverrides={{ renderCheckbox: props.checkboxRenderer }}\n />\n );\n});\n\ninterface TreeNodeIconProps {\n node: TreeModelNode;\n imageLoader: ITreeImageLoader;\n}\n\nfunction TreeNodeIcon(props: TreeNodeIconProps) {\n const { imageLoader, node } = props;\n const image = imageLoader.load(node.item);\n\n if (!image)\n return null;\n\n const renderer = new ImageRenderer();\n return <>{renderer.render(image)}</>;\n}\n"]}
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import "./ControlledTree.scss";
|
|
5
5
|
import * as React from "react";
|
|
6
|
-
import { HighlightableTreeProps
|
|
6
|
+
import { HighlightableTreeProps } from "../../HighlightingEngine";
|
|
7
7
|
import { TreeActions } from "../TreeActions";
|
|
8
8
|
import { TreeModelNode, TreeModelNodePlaceholder, VisibleTreeNodes } from "../TreeModel";
|
|
9
9
|
import { ITreeNodeLoader } from "../TreeNodeLoader";
|
|
10
10
|
import { TreeNodeRendererProps } from "./TreeNodeRenderer";
|
|
11
11
|
/**
|
|
12
12
|
* Data structure that describes range of rendered items in the tree.
|
|
13
|
-
* @
|
|
13
|
+
* @beta
|
|
14
14
|
*/
|
|
15
15
|
export interface RenderedItemsRange {
|
|
16
16
|
overscanStartIndex: number;
|
|
@@ -35,7 +35,7 @@ export interface TreeRendererProps {
|
|
|
35
35
|
nodeHighlightingProps?: HighlightableTreeProps;
|
|
36
36
|
/**
|
|
37
37
|
* Callback that is called when rendered items range changes.
|
|
38
|
-
* @
|
|
38
|
+
* @beta
|
|
39
39
|
*/
|
|
40
40
|
onItemsRendered?: (renderedItems: RenderedItemsRange) => void;
|
|
41
41
|
/**
|
|
@@ -63,57 +63,8 @@ export interface TreeRendererAttributes {
|
|
|
63
63
|
}
|
|
64
64
|
declare type Alignment = "auto" | "smart" | "center" | "end" | "start";
|
|
65
65
|
/**
|
|
66
|
-
*
|
|
67
|
-
* @
|
|
68
|
-
*/
|
|
69
|
-
export interface TreeRendererContext {
|
|
70
|
-
/** Callback to render custom node. */
|
|
71
|
-
nodeRenderer: (props: TreeNodeRendererProps) => React.ReactNode;
|
|
72
|
-
treeActions: TreeActions;
|
|
73
|
-
nodeLoader: ITreeNodeLoader;
|
|
74
|
-
/** Flat list of nodes to be rendered. */
|
|
75
|
-
visibleNodes: VisibleTreeNodes;
|
|
76
|
-
/** Engine used to created node highlighting properties. */
|
|
77
|
-
highlightingEngine?: HighlightingEngine;
|
|
78
|
-
/**
|
|
79
|
-
* Callback used detect when label is rendered. It is used by TreeRenderer for scrolling to active match.
|
|
80
|
-
* @internal
|
|
81
|
-
*/
|
|
82
|
-
onLabelRendered?: (node: TreeModelNode) => void;
|
|
83
|
-
/**
|
|
84
|
-
* A callback that node calls after rendering to report its width
|
|
85
|
-
* @internal
|
|
86
|
-
*/
|
|
87
|
-
onNodeWidthMeasured?: (width: number) => void;
|
|
88
|
-
/**
|
|
89
|
-
* Callback used when an editor closes
|
|
90
|
-
* @internal
|
|
91
|
-
*/
|
|
92
|
-
onNodeEditorClosed?: () => void;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* [[TreeRenderer]] context provider, consumer and custom hook.
|
|
96
|
-
* @beta
|
|
97
|
-
*/
|
|
98
|
-
export declare const
|
|
99
|
-
/**
|
|
100
|
-
* Context of [[TreeRenderer]] provider.
|
|
101
|
-
* @beta
|
|
102
|
-
*/
|
|
103
|
-
TreeRendererContextProvider: React.ProviderExoticComponent<React.ProviderProps<TreeRendererContext>>,
|
|
104
|
-
/**
|
|
105
|
-
* Context of [[TreeRenderer]] consumer.
|
|
106
|
-
* @beta
|
|
107
|
-
*/
|
|
108
|
-
TreeRendererContextConsumer: React.ExoticComponent<React.ConsumerProps<TreeRendererContext>>,
|
|
109
|
-
/**
|
|
110
|
-
* Custom hook to use [[TreeRenderer]] context.
|
|
111
|
-
* @beta
|
|
112
|
-
*/
|
|
113
|
-
useTreeRendererContext: <P>(component: React.ComponentType<P>) => TreeRendererContext;
|
|
114
|
-
/**
|
|
115
|
-
* Default component for rendering tree.
|
|
116
|
-
* @beta
|
|
66
|
+
* Default tree rendering component.
|
|
67
|
+
* @public
|
|
117
68
|
*/
|
|
118
69
|
export declare class TreeRenderer extends React.Component<TreeRendererProps> implements TreeRendererAttributes {
|
|
119
70
|
private _ref;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/component/TreeRenderer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,uBAAuB,CAAC;AAE/B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"TreeRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/component/TreeRenderer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,uBAAuB,CAAC;AAE/B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAE,sBAAsB,EAAsB,MAAM,0BAA0B,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAC6D,aAAa,EAAE,wBAAwB,EAAE,gBAAgB,EAC5H,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAoB,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAI7E;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,eAAe,CAAC;IAE5B,sDAAsD;IACtD,UAAU,EAAE,CAAC,IAAI,EAAE,aAAa,GAAG,wBAAwB,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAEtF,yCAAyC;IACzC,YAAY,EAAE,gBAAgB,CAAC;IAE/B,uCAAuC;IACvC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,KAAK,CAAC,SAAS,CAAC;IAEjE,qFAAqF;IACrF,qBAAqB,CAAC,EAAE,sBAAsB,CAAC;IAE/C;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,aAAa,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAE9D;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAEhC,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IAEd,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;CAC3D;AAED,aAAK,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;AAsC/D;;;GAGG;AACH,qBAAa,YAAa,SAAQ,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAE,YAAW,sBAAsB;IACpG,OAAO,CAAC,IAAI,CAA6C;IAEzD,kBAAkB;IACX,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS;IAMzC,MAAM;CAKvB"}
|
|
@@ -39,9 +39,8 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
39
39
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
40
40
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
41
41
|
};
|
|
42
|
-
var _a;
|
|
43
42
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
-
exports.TreeRenderer =
|
|
43
|
+
exports.TreeRenderer = void 0;
|
|
45
44
|
require("./ControlledTree.scss");
|
|
46
45
|
const classnames_1 = __importDefault(require("classnames"));
|
|
47
46
|
const React = __importStar(require("react"));
|
|
@@ -55,31 +54,17 @@ const HighlightingEngine_1 = require("../../HighlightingEngine");
|
|
|
55
54
|
const TreeModel_1 = require("../TreeModel");
|
|
56
55
|
const TreeNodeRenderer_1 = require("./TreeNodeRenderer");
|
|
57
56
|
const NODE_LOAD_DELAY = 500;
|
|
57
|
+
/** [[TreeRenderer]] context provider, consumer and custom hook. */
|
|
58
|
+
const [
|
|
59
|
+
/** Context of [[TreeRenderer]] provider. */
|
|
60
|
+
TreeRendererContextProvider,
|
|
61
|
+
/** Context of [[TreeRenderer]] consumer. */
|
|
62
|
+
_TreeRendererContextConsumer,
|
|
63
|
+
/** Custom hook to use [[TreeRenderer]] context. */
|
|
64
|
+
useTreeRendererContext,] = (0, UseContextWithMandatoryProvider_1.createContextWithMandatoryProvider)("TreeRendererContext");
|
|
58
65
|
/**
|
|
59
|
-
*
|
|
60
|
-
* @
|
|
61
|
-
*/
|
|
62
|
-
_a = (0, UseContextWithMandatoryProvider_1.createContextWithMandatoryProvider)("TreeRendererContext"),
|
|
63
|
-
/**
|
|
64
|
-
* Context of [[TreeRenderer]] provider.
|
|
65
|
-
* @beta
|
|
66
|
-
*/
|
|
67
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
68
|
-
exports.TreeRendererContextProvider = _a[0],
|
|
69
|
-
/**
|
|
70
|
-
* Context of [[TreeRenderer]] consumer.
|
|
71
|
-
* @beta
|
|
72
|
-
*/
|
|
73
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
74
|
-
exports.TreeRendererContextConsumer = _a[1],
|
|
75
|
-
/**
|
|
76
|
-
* Custom hook to use [[TreeRenderer]] context.
|
|
77
|
-
* @beta
|
|
78
|
-
*/
|
|
79
|
-
exports.useTreeRendererContext = _a[2];
|
|
80
|
-
/**
|
|
81
|
-
* Default component for rendering tree.
|
|
82
|
-
* @beta
|
|
66
|
+
* Default tree rendering component.
|
|
67
|
+
* @public
|
|
83
68
|
*/
|
|
84
69
|
class TreeRenderer extends React.Component {
|
|
85
70
|
constructor() {
|
|
@@ -169,7 +154,7 @@ const TreeRendererInner = React.forwardRef((props, ref) => {
|
|
|
169
154
|
const handleRenderedItemsChange = React.useCallback((onItemsRenderedProps) => {
|
|
170
155
|
onItemsRendered && onItemsRendered(Object.assign({}, onItemsRenderedProps));
|
|
171
156
|
}, [onItemsRendered]);
|
|
172
|
-
return (React.createElement(
|
|
157
|
+
return (React.createElement(TreeRendererContextProvider, { value: rendererContext },
|
|
173
158
|
React.createElement(core_react_1.Tree, { ref: coreTreeRef, className: (0, classnames_1.default)("components-controlledTree", "components-smallEditor-host"), onKeyDown: handleKeyDown, onKeyUp: handleKeyUp },
|
|
174
159
|
React.createElement(react_window_1.VariableSizeList, { ref: variableSizeListRef, className: "ReactWindow__VariableSizeList", width: props.width, height: props.height, itemCount: props.visibleNodes.getNumNodes(), itemSize: itemSize, estimatedItemSize: 25, overscanCount: 10, itemKey: itemKey, innerElementType: innerElementType, onItemsRendered: handleRenderedItemsChange }, Node))));
|
|
175
160
|
});
|
|
@@ -182,7 +167,7 @@ function getNodeKey(node) {
|
|
|
182
167
|
const Node = React.memo(// eslint-disable-line @typescript-eslint/naming-convention
|
|
183
168
|
(props) => {
|
|
184
169
|
const { index, style } = props;
|
|
185
|
-
const { nodeRenderer, visibleNodes, treeActions, nodeLoader, onLabelRendered, highlightingEngine, onNodeWidthMeasured, onNodeEditorClosed, } =
|
|
170
|
+
const { nodeRenderer, visibleNodes, treeActions, nodeLoader, onLabelRendered, highlightingEngine, onNodeWidthMeasured, onNodeEditorClosed, } = useTreeRendererContext(Node);
|
|
186
171
|
const node = visibleNodes.getAtIndex(index);
|
|
187
172
|
useNodeLoading(node, visibleNodes, nodeLoader);
|
|
188
173
|
// Mark selected node's wrapper to make detecting consecutively selected nodes with css selectors possible
|