@refinitiv-ui/elements 5.3.4 → 5.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +89 -0
- package/lib/accordion/custom-elements.md +18 -0
- package/lib/accordion/index.d.ts +5 -5
- package/lib/accordion/index.js +8 -11
- package/lib/appstate-bar/custom-elements.md +22 -0
- package/lib/appstate-bar/index.d.ts +5 -5
- package/lib/appstate-bar/index.js +8 -11
- package/lib/autosuggest/custom-elements.json +24 -4
- package/lib/autosuggest/custom-elements.md +54 -0
- package/lib/autosuggest/helpers/types.d.ts +1 -1
- package/lib/autosuggest/helpers/utils.d.ts +2 -2
- package/lib/autosuggest/helpers/utils.js +1 -2
- package/lib/autosuggest/index.d.ts +13 -8
- package/lib/autosuggest/index.js +38 -31
- package/lib/button/custom-elements.json +2 -2
- package/lib/button/custom-elements.md +23 -0
- package/lib/button/index.d.ts +13 -13
- package/lib/button/index.js +41 -31
- package/lib/button-bar/custom-elements.md +9 -0
- package/lib/button-bar/index.d.ts +3 -3
- package/lib/button-bar/index.js +8 -10
- package/lib/calendar/constants.d.ts +22 -0
- package/lib/calendar/constants.js +23 -0
- package/lib/calendar/custom-elements.json +8 -6
- package/lib/calendar/custom-elements.md +35 -0
- package/lib/calendar/index.d.ts +9 -7
- package/lib/calendar/index.js +20 -38
- package/lib/calendar/locales.d.ts +1 -31
- package/lib/calendar/locales.js +0 -104
- package/lib/calendar/types.d.ts +1 -5
- package/lib/calendar/types.js +1 -6
- package/lib/calendar/utils.d.ts +31 -1
- package/lib/calendar/utils.js +104 -2
- package/lib/canvas/custom-elements.json +7 -5
- package/lib/canvas/custom-elements.md +27 -0
- package/lib/canvas/index.d.ts +4 -3
- package/lib/canvas/index.js +8 -10
- package/lib/card/custom-elements.json +3 -1
- package/lib/card/custom-elements.md +24 -0
- package/lib/card/helpers/types.d.ts +1 -1
- package/lib/card/index.d.ts +10 -8
- package/lib/card/index.js +14 -13
- package/lib/chart/custom-elements.json +1 -1
- package/lib/chart/custom-elements.md +16 -0
- package/lib/chart/helpers/index.d.ts +2 -2
- package/lib/chart/helpers/index.js +2 -2
- package/lib/chart/index.d.ts +6 -6
- package/lib/chart/index.js +12 -14
- package/lib/checkbox/custom-elements.json +4 -4
- package/lib/checkbox/custom-elements.md +18 -0
- package/lib/checkbox/index.d.ts +21 -13
- package/lib/checkbox/index.js +56 -31
- package/lib/clock/custom-elements.json +21 -4
- package/lib/clock/custom-elements.md +28 -0
- package/lib/clock/index.d.ts +17 -5
- package/lib/clock/index.js +37 -18
- package/lib/clock/themes/halo/dark/index.js +1 -1
- package/lib/clock/themes/halo/light/index.js +1 -1
- package/lib/clock/themes/solar/charcoal/index.js +1 -1
- package/lib/clock/themes/solar/pearl/index.js +1 -1
- package/lib/clock/utils/TickManager.js +2 -2
- package/lib/collapse/custom-elements.md +27 -0
- package/lib/collapse/index.d.ts +7 -7
- package/lib/collapse/index.js +11 -13
- package/lib/color-dialog/custom-elements.json +29 -16
- package/lib/color-dialog/custom-elements.md +39 -0
- package/lib/color-dialog/elements/color-palettes.d.ts +5 -5
- package/lib/color-dialog/elements/color-palettes.js +9 -13
- package/lib/color-dialog/elements/grayscale-palettes.d.ts +5 -5
- package/lib/color-dialog/elements/grayscale-palettes.js +10 -13
- package/lib/color-dialog/elements/palettes.d.ts +10 -3
- package/lib/color-dialog/elements/palettes.js +58 -45
- package/lib/color-dialog/helpers/color-helpers.d.ts +7 -53
- package/lib/color-dialog/helpers/color-helpers.js +12 -109
- package/lib/color-dialog/helpers/value-model.d.ts +1 -1
- package/lib/color-dialog/helpers/value-model.js +18 -16
- package/lib/color-dialog/index.d.ts +19 -19
- package/lib/color-dialog/index.js +47 -45
- package/lib/combo-box/custom-elements.json +28 -16
- package/lib/combo-box/custom-elements.md +35 -0
- package/lib/combo-box/helpers/filter.d.ts +4 -4
- package/lib/combo-box/helpers/types.d.ts +2 -2
- package/lib/combo-box/index.d.ts +26 -18
- package/lib/combo-box/index.js +36 -27
- package/lib/combo-box/themes/halo/dark/index.js +1 -1
- package/lib/combo-box/themes/halo/light/index.js +1 -1
- package/lib/combo-box/themes/solar/charcoal/index.js +1 -1
- package/lib/combo-box/themes/solar/pearl/index.js +1 -1
- package/lib/counter/custom-elements.json +8 -4
- package/lib/counter/custom-elements.md +11 -0
- package/lib/counter/index.d.ts +5 -3
- package/lib/counter/index.js +11 -12
- package/lib/datetime-picker/custom-elements.json +52 -23
- package/lib/datetime-picker/custom-elements.md +57 -0
- package/lib/datetime-picker/index.d.ts +25 -14
- package/lib/datetime-picker/index.js +46 -35
- package/lib/datetime-picker/locales.d.ts +1 -1
- package/lib/datetime-picker/locales.js +12 -1
- package/lib/datetime-picker/themes/solar/charcoal/index.js +1 -1
- package/lib/datetime-picker/themes/solar/pearl/index.js +1 -1
- package/lib/datetime-picker/types.d.ts +1 -1
- package/lib/datetime-picker/utils.js +1 -1
- package/lib/dialog/custom-elements.json +34 -12
- package/lib/dialog/custom-elements.md +47 -0
- package/lib/dialog/index.d.ts +17 -20
- package/lib/dialog/index.js +28 -31
- package/lib/email-field/custom-elements.json +81 -94
- package/lib/email-field/custom-elements.md +37 -0
- package/lib/email-field/index.d.ts +44 -116
- package/lib/email-field/index.js +48 -249
- package/lib/email-field/themes/solar/charcoal/index.js +1 -1
- package/lib/email-field/themes/solar/pearl/index.js +1 -1
- package/lib/events.d.ts +2 -2
- package/lib/events.js +1 -2
- package/lib/flag/custom-elements.md +10 -0
- package/lib/flag/index.d.ts +6 -4
- package/lib/flag/index.js +12 -12
- package/lib/flag/utils/FlagLoader.d.ts +1 -1
- package/lib/flag/utils/FlagLoader.js +1 -1
- package/lib/header/custom-elements.md +18 -0
- package/lib/header/index.d.ts +2 -2
- package/lib/header/index.js +5 -8
- package/lib/heatmap/custom-elements.md +26 -0
- package/lib/heatmap/helpers/color.d.ts +1 -1
- package/lib/heatmap/helpers/color.js +1 -1
- package/lib/heatmap/helpers/text.d.ts +1 -1
- package/lib/heatmap/index.d.ts +7 -7
- package/lib/heatmap/index.js +15 -16
- package/lib/icon/custom-elements.json +6 -4
- package/lib/icon/custom-elements.md +8 -0
- package/lib/icon/index.d.ts +9 -6
- package/lib/icon/index.js +28 -18
- package/lib/icon/utils/IconLoader.d.ts +6 -1
- package/lib/icon/utils/IconLoader.js +24 -17
- package/lib/index.d.ts +2 -1
- package/lib/index.js +2 -1
- package/lib/interactive-chart/custom-elements.json +6 -10
- package/lib/interactive-chart/custom-elements.md +31 -0
- package/lib/interactive-chart/helpers/types.d.ts +2 -2
- package/lib/interactive-chart/index.d.ts +11 -8
- package/lib/interactive-chart/index.js +17 -17
- package/lib/item/custom-elements.json +4 -4
- package/lib/item/custom-elements.md +29 -0
- package/lib/item/helpers/types.d.ts +1 -1
- package/lib/item/index.d.ts +18 -8
- package/lib/item/index.js +36 -16
- package/lib/label/custom-elements.md +11 -0
- package/lib/label/index.d.ts +3 -3
- package/lib/label/index.js +12 -20
- package/lib/layout/custom-elements.md +26 -0
- package/lib/layout/index.d.ts +3 -3
- package/lib/layout/index.js +6 -9
- package/lib/led-gauge/custom-elements.json +4 -4
- package/lib/led-gauge/custom-elements.md +17 -0
- package/lib/led-gauge/index.d.ts +5 -4
- package/lib/led-gauge/index.js +9 -11
- package/lib/list/custom-elements.json +18 -5
- package/lib/list/custom-elements.md +32 -0
- package/lib/list/helpers/list-renderer.d.ts +2 -2
- package/lib/list/helpers/list-renderer.js +4 -2
- package/lib/list/helpers/types.d.ts +2 -2
- package/lib/list/index.d.ts +27 -10
- package/lib/list/index.js +54 -25
- package/lib/list/renderer.d.ts +2 -2
- package/lib/list/renderer.js +1 -1
- package/lib/loader/custom-elements.md +5 -0
- package/lib/loader/index.js +4 -8
- package/lib/multi-input/custom-elements.json +7 -6
- package/lib/multi-input/custom-elements.md +43 -0
- package/lib/multi-input/helpers/types.d.ts +1 -1
- package/lib/multi-input/index.d.ts +11 -7
- package/lib/multi-input/index.js +20 -17
- package/lib/multi-input/themes/solar/charcoal/index.js +1 -1
- package/lib/multi-input/themes/solar/pearl/index.js +1 -1
- package/lib/notification/custom-elements.md +26 -0
- package/lib/notification/elements/notification-tray.d.ts +2 -2
- package/lib/notification/elements/notification-tray.js +6 -9
- package/lib/notification/elements/notification.d.ts +5 -5
- package/lib/notification/elements/notification.js +8 -11
- package/lib/notification/helpers/status.d.ts +1 -1
- package/lib/notification/helpers/status.js +1 -1
- package/lib/notification/helpers/types.d.ts +1 -1
- package/lib/notification/index.d.ts +2 -2
- package/lib/notification/index.js +2 -2
- package/lib/number-field/custom-elements.json +99 -54
- package/lib/number-field/custom-elements.md +42 -0
- package/lib/number-field/index.d.ts +96 -51
- package/lib/number-field/index.js +121 -89
- package/lib/number-field/themes/solar/charcoal/index.js +1 -1
- package/lib/number-field/themes/solar/pearl/index.js +1 -1
- package/lib/overlay/custom-elements.json +26 -13
- package/lib/overlay/custom-elements.md +54 -0
- package/lib/overlay/elements/overlay-backdrop.d.ts +4 -4
- package/lib/overlay/elements/overlay-backdrop.js +6 -9
- package/lib/overlay/elements/overlay-viewport.d.ts +3 -3
- package/lib/overlay/elements/overlay-viewport.js +5 -9
- package/lib/overlay/elements/overlay.d.ts +10 -5
- package/lib/overlay/elements/overlay.js +27 -28
- package/lib/overlay/index.d.ts +2 -2
- package/lib/overlay/index.js +1 -1
- package/lib/overlay/managers/backdrop-manager.d.ts +1 -1
- package/lib/overlay/managers/backdrop-manager.js +2 -2
- package/lib/overlay/managers/close-manager.js +1 -1
- package/lib/overlay/managers/focus-manager.js +2 -2
- package/lib/overlay/managers/interaction-lock-manager.js +2 -2
- package/lib/overlay/managers/viewport-manager.d.ts +2 -2
- package/lib/overlay/managers/viewport-manager.js +6 -2
- package/lib/overlay/managers/zindex-manager.js +1 -1
- package/lib/overlay-menu/custom-elements.json +70 -20
- package/lib/overlay-menu/custom-elements.md +44 -0
- package/lib/overlay-menu/helpers/types.d.ts +3 -3
- package/lib/overlay-menu/index.d.ts +26 -19
- package/lib/overlay-menu/index.js +47 -33
- package/lib/overlay-menu/managers/menu-manager.d.ts +2 -2
- package/lib/overlay-menu/managers/menu-manager.js +3 -3
- package/lib/pagination/custom-elements.md +27 -0
- package/lib/pagination/index.d.ts +8 -8
- package/lib/pagination/index.js +13 -15
- package/lib/panel/custom-elements.md +11 -0
- package/lib/panel/index.d.ts +3 -3
- package/lib/panel/index.js +6 -9
- package/lib/password-field/custom-elements.json +62 -67
- package/lib/password-field/custom-elements.md +39 -0
- package/lib/password-field/index.d.ts +43 -94
- package/lib/password-field/index.js +52 -198
- package/lib/password-field/themes/solar/charcoal/index.js +1 -1
- package/lib/password-field/themes/solar/pearl/index.js +1 -1
- package/lib/pill/custom-elements.json +8 -6
- package/lib/pill/custom-elements.md +22 -0
- package/lib/pill/index.d.ts +5 -5
- package/lib/pill/index.js +9 -11
- package/lib/progress-bar/custom-elements.md +18 -0
- package/lib/progress-bar/index.d.ts +3 -3
- package/lib/progress-bar/index.js +7 -9
- package/lib/radio-button/custom-elements.json +4 -4
- package/lib/radio-button/custom-elements.md +19 -0
- package/lib/radio-button/index.d.ts +25 -8
- package/lib/radio-button/index.js +84 -21
- package/lib/radio-button/radio-button-registry.d.ts +3 -2
- package/lib/radio-button/radio-button-registry.js +57 -4
- package/lib/rating/custom-elements.md +17 -0
- package/lib/rating/index.d.ts +3 -3
- package/lib/rating/index.js +9 -10
- package/lib/search-field/custom-elements.json +70 -74
- package/lib/search-field/custom-elements.md +41 -0
- package/lib/search-field/index.d.ts +44 -101
- package/lib/search-field/index.js +50 -220
- package/lib/search-field/themes/solar/charcoal/index.js +1 -1
- package/lib/search-field/themes/solar/pearl/index.js +1 -1
- package/lib/select/custom-elements.json +5 -4
- package/lib/select/custom-elements.md +24 -0
- package/lib/select/helpers/types.d.ts +1 -1
- package/lib/select/index.d.ts +18 -10
- package/lib/select/index.js +84 -45
- package/lib/sidebar-layout/custom-elements.json +2 -6
- package/lib/sidebar-layout/custom-elements.md +21 -0
- package/lib/sidebar-layout/index.d.ts +7 -6
- package/lib/sidebar-layout/index.js +9 -10
- package/lib/slider/custom-elements.json +4 -4
- package/lib/slider/custom-elements.md +28 -0
- package/lib/slider/index.d.ts +4 -4
- package/lib/slider/index.js +9 -10
- package/lib/sparkline/custom-elements.json +4 -4
- package/lib/sparkline/custom-elements.md +16 -0
- package/lib/sparkline/index.d.ts +6 -4
- package/lib/sparkline/index.js +10 -10
- package/lib/swing-gauge/custom-elements.json +5 -3
- package/lib/swing-gauge/custom-elements.md +17 -0
- package/lib/swing-gauge/helpers.d.ts +1 -1
- package/lib/swing-gauge/helpers.js +1 -1
- package/lib/swing-gauge/index.d.ts +9 -7
- package/lib/swing-gauge/index.js +17 -15
- package/lib/tab/custom-elements.json +2 -2
- package/lib/tab/custom-elements.md +22 -0
- package/lib/tab/index.d.ts +5 -5
- package/lib/tab/index.js +9 -12
- package/lib/tab/themes/solar/charcoal/index.js +1 -1
- package/lib/tab/themes/solar/pearl/index.js +1 -1
- package/lib/tab-bar/custom-elements.md +11 -0
- package/lib/tab-bar/index.d.ts +4 -4
- package/lib/tab-bar/index.js +9 -11
- package/lib/tab-bar/themes/solar/charcoal/index.js +1 -1
- package/lib/tab-bar/themes/solar/pearl/index.js +1 -1
- package/lib/text-field/custom-elements.json +78 -89
- package/lib/text-field/custom-elements.md +35 -0
- package/lib/text-field/index.d.ts +59 -79
- package/lib/text-field/index.js +99 -158
- package/lib/text-field/themes/solar/charcoal/index.js +1 -1
- package/lib/text-field/themes/solar/pearl/index.js +1 -1
- package/lib/time-picker/custom-elements.json +4 -4
- package/lib/time-picker/custom-elements.md +28 -0
- package/lib/time-picker/index.d.ts +7 -4
- package/lib/time-picker/index.js +15 -14
- package/lib/time-picker/themes/solar/charcoal/index.js +1 -1
- package/lib/time-picker/themes/solar/pearl/index.js +1 -1
- package/lib/toggle/custom-elements.json +4 -4
- package/lib/toggle/custom-elements.md +19 -0
- package/lib/toggle/index.d.ts +14 -4
- package/lib/toggle/index.js +31 -12
- package/lib/tooltip/custom-elements.md +14 -0
- package/lib/tooltip/elements/title-tooltip.js +2 -2
- package/lib/tooltip/elements/tooltip-element.d.ts +1 -1
- package/lib/tooltip/helpers/overflow-tooltip.d.ts +1 -1
- package/lib/tooltip/helpers/overflow-tooltip.js +1 -1
- package/lib/tooltip/helpers/renderer.d.ts +1 -1
- package/lib/tooltip/helpers/types.d.ts +1 -1
- package/lib/tooltip/index.d.ts +9 -9
- package/lib/tooltip/index.js +18 -20
- package/lib/tooltip/managers/tooltip-manager.d.ts +2 -2
- package/lib/tooltip/managers/tooltip-manager.js +3 -7
- package/lib/tornado-chart/custom-elements.md +18 -0
- package/lib/tornado-chart/elements/tornado-chart.d.ts +4 -4
- package/lib/tornado-chart/elements/tornado-chart.js +8 -11
- package/lib/tornado-chart/elements/tornado-item.d.ts +5 -5
- package/lib/tornado-chart/elements/tornado-item.js +10 -12
- package/lib/tornado-chart/index.d.ts +2 -2
- package/lib/tornado-chart/index.js +2 -2
- package/lib/tree/custom-elements.json +17 -3
- package/lib/tree/custom-elements.md +32 -0
- package/lib/tree/elements/tree-item.d.ts +4 -4
- package/lib/tree/elements/tree-item.js +10 -13
- package/lib/tree/elements/tree.d.ts +51 -5
- package/lib/tree/elements/tree.js +138 -11
- package/lib/tree/helpers/filter.d.ts +8 -0
- package/lib/tree/helpers/filter.js +33 -0
- package/lib/tree/helpers/renderer.d.ts +2 -2
- package/lib/tree/helpers/renderer.js +3 -3
- package/lib/tree/helpers/types.d.ts +9 -1
- package/lib/tree/index.d.ts +4 -4
- package/lib/tree/index.js +3 -3
- package/lib/tree/managers/tree-manager.d.ts +22 -10
- package/lib/tree/managers/tree-manager.js +56 -40
- package/lib/tree/themes/halo/dark/index.js +1 -1
- package/lib/tree/themes/halo/light/index.js +1 -1
- package/lib/tree/themes/solar/charcoal/index.js +1 -1
- package/lib/tree/themes/solar/pearl/index.js +1 -1
- package/lib/tree-select/custom-elements.json +10 -6
- package/lib/tree-select/custom-elements.md +26 -0
- package/lib/tree-select/helpers/types.d.ts +2 -2
- package/lib/tree-select/index.d.ts +32 -28
- package/lib/tree-select/index.js +54 -44
- package/lib/tree-select/themes/halo/dark/index.js +1 -1
- package/lib/tree-select/themes/halo/light/index.js +1 -1
- package/lib/tree-select/themes/solar/charcoal/index.js +1 -1
- package/lib/tree-select/themes/solar/pearl/index.js +1 -1
- package/lib/version.d.ts +1 -0
- package/lib/version.js +1 -0
- package/package.json +298 -15
- package/lib/autosuggest/helpers/const.d.ts +0 -2
- package/lib/autosuggest/helpers/const.js +0 -3
- package/lib/overlay-menu/helpers/uuid.d.ts +0 -7
- package/lib/overlay-menu/helpers/uuid.js +0 -13
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { JSXInterface } from '../../jsx';
|
|
2
2
|
import { TemplateResult, ControlElement, PropertyValues } from '@refinitiv-ui/core';
|
|
3
|
-
import '../../icon';
|
|
4
|
-
import '../../checkbox';
|
|
5
|
-
import { TreeDataItem } from '../helpers/types';
|
|
6
|
-
import { CheckedState } from '../managers/tree-manager';
|
|
3
|
+
import '../../icon/index.js';
|
|
4
|
+
import '../../checkbox/index.js';
|
|
5
|
+
import type { TreeDataItem } from '../helpers/types';
|
|
6
|
+
import { CheckedState } from '../managers/tree-manager.js';
|
|
7
7
|
/**
|
|
8
8
|
* Displays a tree list item.
|
|
9
9
|
* Groups display expansion arrows.
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
import {
|
|
8
|
-
import '../../
|
|
9
|
-
import {
|
|
10
|
-
import '../../checkbox';
|
|
11
|
-
import { CheckedState } from '../managers/tree-manager';
|
|
12
|
-
import { VERSION } from '../../';
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { html, ControlElement } from '@refinitiv-ui/core';
|
|
3
|
+
import { customElement } from '@refinitiv-ui/core/lib/decorators/custom-element.js';
|
|
4
|
+
import { property } from '@refinitiv-ui/core/lib/decorators/property.js';
|
|
5
|
+
import { VERSION } from '../../version.js';
|
|
6
|
+
import '../../icon/index.js';
|
|
7
|
+
import { preload } from '../../icon/index.js';
|
|
8
|
+
import '../../checkbox/index.js';
|
|
9
|
+
import { CheckedState } from '../managers/tree-manager.js';
|
|
13
10
|
preload('right');
|
|
14
11
|
const emptyTemplate = html ``;
|
|
15
12
|
/**
|
|
@@ -106,7 +103,7 @@ let TreeItem = class TreeItem extends ControlElement {
|
|
|
106
103
|
if (typeof this.icon === 'undefined') {
|
|
107
104
|
return emptyTemplate;
|
|
108
105
|
}
|
|
109
|
-
return html `<ef-icon part="label-icon"
|
|
106
|
+
return html `<ef-icon part="label-icon" icon="${this.icon}"></ef-icon>`;
|
|
110
107
|
}
|
|
111
108
|
/**
|
|
112
109
|
* Is the item fully checked?
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { JSXInterface } from '../../jsx';
|
|
2
2
|
import { PropertyValues, TapEvent } from '@refinitiv-ui/core';
|
|
3
|
-
import { CollectionComposer } from '@refinitiv-ui/utils';
|
|
4
|
-
import { List } from '../../list';
|
|
5
|
-
import { TreeRenderer } from '../helpers/renderer';
|
|
6
|
-
import { TreeData, TreeDataItem } from '../helpers/types';
|
|
7
|
-
import { TreeManagerMode } from '../managers/tree-manager';
|
|
3
|
+
import { CollectionComposer } from '@refinitiv-ui/utils/lib/collection.js';
|
|
4
|
+
import { List } from '../../list/index.js';
|
|
5
|
+
import { TreeRenderer } from '../helpers/renderer.js';
|
|
6
|
+
import type { TreeData, TreeDataItem, TreeFilter } from '../helpers/types';
|
|
7
|
+
import { TreeManagerMode } from '../managers/tree-manager.js';
|
|
8
8
|
/**
|
|
9
9
|
* Displays a tree structure
|
|
10
10
|
* to be used for menus and group selections
|
|
@@ -35,6 +35,16 @@ export declare class Tree<T extends TreeDataItem = TreeDataItem> extends List<T>
|
|
|
35
35
|
* selection mode is enabled
|
|
36
36
|
*/
|
|
37
37
|
noRelation: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Query string applied to tree
|
|
40
|
+
*/
|
|
41
|
+
query: string;
|
|
42
|
+
/**
|
|
43
|
+
* Custom filter for static data
|
|
44
|
+
* @type {TreeFilter<T> | null}
|
|
45
|
+
* @ignore set to protected for now and need to discuss before set to public API
|
|
46
|
+
*/
|
|
47
|
+
protected filter: TreeFilter<T> | null;
|
|
38
48
|
/**
|
|
39
49
|
* Renderer used for generating tree items
|
|
40
50
|
* @type {TreeRenderer}
|
|
@@ -117,10 +127,46 @@ export declare class Tree<T extends TreeDataItem = TreeDataItem> extends List<T>
|
|
|
117
127
|
* @override
|
|
118
128
|
*/
|
|
119
129
|
protected update(changedProperties: PropertyValues): void;
|
|
130
|
+
/**
|
|
131
|
+
* Filter the internal items by query changes items' hidden state
|
|
132
|
+
* @returns {void}
|
|
133
|
+
*/
|
|
134
|
+
protected filterItems(): void;
|
|
135
|
+
/**
|
|
136
|
+
* Utility method
|
|
137
|
+
* Adds descendants for each item passed
|
|
138
|
+
* @param items List of child items
|
|
139
|
+
* @returns {void}
|
|
140
|
+
*/
|
|
141
|
+
protected addItemDescendantsToRender(items: T[]): void;
|
|
142
|
+
/**
|
|
143
|
+
* Utility method
|
|
144
|
+
* Add nested children of item list
|
|
145
|
+
* @param items List of items
|
|
146
|
+
* @param excludeItems List of exclude items
|
|
147
|
+
* @param [includeHidden=false] Include hidden items
|
|
148
|
+
* @returns {void}
|
|
149
|
+
*/
|
|
150
|
+
protected addNestedItemsToRender(items: readonly T[], excludeItems: readonly T[], includeHidden?: boolean): void;
|
|
151
|
+
/**
|
|
152
|
+
* Utility method
|
|
153
|
+
* Adds ancestors for each item passed and expand
|
|
154
|
+
* @param items List of child items
|
|
155
|
+
* @returns {void}
|
|
156
|
+
*/
|
|
157
|
+
protected addExpandedAncestorsToRender(items: T[]): void;
|
|
158
|
+
/**
|
|
159
|
+
* Utility method
|
|
160
|
+
* Adds parent and expands
|
|
161
|
+
* @param ancestor parent item
|
|
162
|
+
* @returns {void}
|
|
163
|
+
*/
|
|
164
|
+
protected addExpandedAncestorToRender(ancestor: T): void;
|
|
120
165
|
/**
|
|
121
166
|
* Selected items in tree
|
|
122
167
|
* @override
|
|
123
168
|
* @type {string[]}
|
|
169
|
+
* @default []
|
|
124
170
|
*/
|
|
125
171
|
get values(): string[];
|
|
126
172
|
set values(value: string[]);
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
};
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { List } from '../../list';
|
|
10
|
-
import { TreeRenderer } from '../helpers/renderer';
|
|
11
|
-
import { TreeManager, TreeManagerMode } from '../managers/tree-manager';
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { customElement } from '@refinitiv-ui/core/lib/decorators/custom-element.js';
|
|
3
|
+
import { property } from '@refinitiv-ui/core/lib/decorators/property.js';
|
|
4
|
+
import { VERSION } from '../../version.js';
|
|
5
|
+
import { List } from '../../list/index.js';
|
|
6
|
+
import { TreeRenderer } from '../helpers/renderer.js';
|
|
7
|
+
import { defaultFilter } from '../helpers/filter.js';
|
|
8
|
+
import { TreeManager, TreeManagerMode } from '../managers/tree-manager.js';
|
|
12
9
|
const EXPAND_TOGGLE_ATTR = 'expand-toggle';
|
|
13
10
|
/**
|
|
14
11
|
* Displays a tree structure
|
|
@@ -37,6 +34,16 @@ let Tree = class Tree extends List {
|
|
|
37
34
|
* selection mode is enabled
|
|
38
35
|
*/
|
|
39
36
|
this.noRelation = false;
|
|
37
|
+
/**
|
|
38
|
+
* Query string applied to tree
|
|
39
|
+
*/
|
|
40
|
+
this.query = '';
|
|
41
|
+
/**
|
|
42
|
+
* Custom filter for static data
|
|
43
|
+
* @type {TreeFilter<T> | null}
|
|
44
|
+
* @ignore set to protected for now and need to discuss before set to public API
|
|
45
|
+
*/
|
|
46
|
+
this.filter = defaultFilter(this);
|
|
40
47
|
/**
|
|
41
48
|
* Renderer used for generating tree items
|
|
42
49
|
* @type {TreeRenderer}
|
|
@@ -230,12 +237,129 @@ let Tree = class Tree extends List {
|
|
|
230
237
|
if (changedProperties.has('noRelation') || changedProperties.has('multiple')) {
|
|
231
238
|
this.manager.setMode(this.mode);
|
|
232
239
|
}
|
|
240
|
+
if (changedProperties.has('query') || changedProperties.has('data')) {
|
|
241
|
+
this.filterItems();
|
|
242
|
+
}
|
|
233
243
|
super.update(changedProperties);
|
|
234
244
|
}
|
|
245
|
+
/**
|
|
246
|
+
* Filter the internal items by query changes items' hidden state
|
|
247
|
+
* @returns {void}
|
|
248
|
+
*/
|
|
249
|
+
filterItems() {
|
|
250
|
+
// if filter is null, it is off and external app is responsible
|
|
251
|
+
if (this.filter) {
|
|
252
|
+
const filter = this.filter;
|
|
253
|
+
const items = this.queryItems((item) => {
|
|
254
|
+
// Do not filter hidden items
|
|
255
|
+
if (item.hidden) {
|
|
256
|
+
return false;
|
|
257
|
+
}
|
|
258
|
+
const result = filter(item);
|
|
259
|
+
if (result) {
|
|
260
|
+
this.manager.includeItem(item);
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
this.manager.excludeItem(item);
|
|
264
|
+
}
|
|
265
|
+
return result;
|
|
266
|
+
}).slice();
|
|
267
|
+
// Do not expand tree if there is no filter applied
|
|
268
|
+
if (this.query) {
|
|
269
|
+
/**
|
|
270
|
+
* Add all descendants of item list to make the descendants
|
|
271
|
+
* are accessible which user can navigate into the nested data
|
|
272
|
+
*/
|
|
273
|
+
this.addItemDescendantsToRender(items);
|
|
274
|
+
/**
|
|
275
|
+
* Add all parents of item list which they must be shown
|
|
276
|
+
* when some descendant is shown.
|
|
277
|
+
*/
|
|
278
|
+
this.addExpandedAncestorsToRender(items);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Utility method
|
|
284
|
+
* Adds descendants for each item passed
|
|
285
|
+
* @param items List of child items
|
|
286
|
+
* @returns {void}
|
|
287
|
+
*/
|
|
288
|
+
addItemDescendantsToRender(items) {
|
|
289
|
+
items.forEach((item) => {
|
|
290
|
+
/**
|
|
291
|
+
* Collapse an item to prevent tree show too many nested expanded
|
|
292
|
+
*/
|
|
293
|
+
if (this.manager.isItemExpanded(item)) {
|
|
294
|
+
this.manager.collapseItem(item);
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* show all descendants of items to make them all are selectable
|
|
298
|
+
* and user can navigate into nested data
|
|
299
|
+
*/
|
|
300
|
+
const children = this.composer.getItemChildren(item);
|
|
301
|
+
if (children.length) {
|
|
302
|
+
this.addNestedItemsToRender(children, items, false);
|
|
303
|
+
}
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Utility method
|
|
308
|
+
* Add nested children of item list
|
|
309
|
+
* @param items List of items
|
|
310
|
+
* @param excludeItems List of exclude items
|
|
311
|
+
* @param [includeHidden=false] Include hidden items
|
|
312
|
+
* @returns {void}
|
|
313
|
+
*/
|
|
314
|
+
addNestedItemsToRender(items, excludeItems, includeHidden = false) {
|
|
315
|
+
items.forEach(item => {
|
|
316
|
+
// Skip hidden and exclude item
|
|
317
|
+
if (!item.hidden && !excludeItems.includes(item)) {
|
|
318
|
+
// Add item and nested children
|
|
319
|
+
this.manager.includeItem(item);
|
|
320
|
+
const children = this.manager.getItemChildren(item);
|
|
321
|
+
if (children.length) {
|
|
322
|
+
this.addNestedItemsToRender(children, excludeItems, includeHidden);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Utility method
|
|
329
|
+
* Adds ancestors for each item passed and expand
|
|
330
|
+
* @param items List of child items
|
|
331
|
+
* @returns {void}
|
|
332
|
+
*/
|
|
333
|
+
addExpandedAncestorsToRender(items) {
|
|
334
|
+
// Establish unique ancestors set
|
|
335
|
+
const ancestors = new Set();
|
|
336
|
+
// we iterate each item match so as to find ancestors
|
|
337
|
+
items.forEach((item) => {
|
|
338
|
+
// Get the ancestors
|
|
339
|
+
const parent = this.manager.getItemParent(item);
|
|
340
|
+
if (parent && !ancestors.has(parent)) {
|
|
341
|
+
this.manager.getItemAncestors(item).forEach((ancestor) => {
|
|
342
|
+
ancestors.add(ancestor); // track ancestors
|
|
343
|
+
this.addExpandedAncestorToRender(ancestor);
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Utility method
|
|
350
|
+
* Adds parent and expands
|
|
351
|
+
* @param ancestor parent item
|
|
352
|
+
* @returns {void}
|
|
353
|
+
*/
|
|
354
|
+
addExpandedAncestorToRender(ancestor) {
|
|
355
|
+
this.manager.includeItem(ancestor);
|
|
356
|
+
this.manager.expandItem(ancestor);
|
|
357
|
+
}
|
|
235
358
|
/**
|
|
236
359
|
* Selected items in tree
|
|
237
360
|
* @override
|
|
238
361
|
* @type {string[]}
|
|
362
|
+
* @default []
|
|
239
363
|
*/
|
|
240
364
|
get values() {
|
|
241
365
|
return this.manager.checkedItems.map(item => {
|
|
@@ -277,6 +401,9 @@ __decorate([
|
|
|
277
401
|
__decorate([
|
|
278
402
|
property({ attribute: 'no-relation', type: Boolean })
|
|
279
403
|
], Tree.prototype, "noRelation", void 0);
|
|
404
|
+
__decorate([
|
|
405
|
+
property({ type: String })
|
|
406
|
+
], Tree.prototype, "query", void 0);
|
|
280
407
|
__decorate([
|
|
281
408
|
property({ attribute: false })
|
|
282
409
|
], Tree.prototype, "renderer", void 0);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Tree, TreeDataItem } from '../index';
|
|
2
|
+
import type { TreeFilter } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Default filter used by tree
|
|
5
|
+
* @param el Tree instance to filter
|
|
6
|
+
* @returns Filter accepting an item
|
|
7
|
+
*/
|
|
8
|
+
export declare const defaultFilter: <T extends TreeDataItem = TreeDataItem>(el: Tree<T>) => TreeFilter<T>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default filter used by tree
|
|
3
|
+
* @param el Tree instance to filter
|
|
4
|
+
* @returns Filter accepting an item
|
|
5
|
+
*/
|
|
6
|
+
export const defaultFilter = (el) => {
|
|
7
|
+
// reference query string for validating queryRegExp cache state
|
|
8
|
+
let query = '';
|
|
9
|
+
// cache RegExp
|
|
10
|
+
let queryRegExp;
|
|
11
|
+
// Get current RegExp, or renew if out of date
|
|
12
|
+
// this is fetched on demand by filter/renderer
|
|
13
|
+
// only created once per query
|
|
14
|
+
const getRegularExpressionOfQuery = () => {
|
|
15
|
+
if (el.query !== query || !queryRegExp) {
|
|
16
|
+
query = el.query || '';
|
|
17
|
+
queryRegExp = new RegExp(query.replace(/(\W)/g, '\\$1'), 'i');
|
|
18
|
+
}
|
|
19
|
+
return queryRegExp;
|
|
20
|
+
};
|
|
21
|
+
// return scoped custom filter
|
|
22
|
+
return (item) => {
|
|
23
|
+
const label = item.label;
|
|
24
|
+
if (!label) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
const regex = getRegularExpressionOfQuery();
|
|
28
|
+
const result = regex.test(label);
|
|
29
|
+
// this regex uses global scope, so the index needs resetting
|
|
30
|
+
regex.lastIndex = 0;
|
|
31
|
+
return result;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { TreeManager, TreeManagerMode, CheckedState } from '../managers/tree-manager';
|
|
2
|
-
import { Renderer } from '../../list/renderer';
|
|
3
|
-
import '../elements/tree-item';
|
|
1
|
+
import { TreeManager, TreeManagerMode, CheckedState } from '../managers/tree-manager.js';
|
|
2
|
+
import { Renderer } from '../../list/renderer.js';
|
|
3
|
+
import '../elements/tree-item.js';
|
|
4
4
|
export class TreeRenderer extends Renderer {
|
|
5
5
|
constructor(scope) {
|
|
6
6
|
let manager;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CollectionComposer, DataItem } from '@refinitiv-ui/utils';
|
|
1
|
+
import type { CollectionComposer, DataItem } from '@refinitiv-ui/utils/lib/collection';
|
|
2
2
|
export declare type TreeData<T extends TreeDataItem = TreeDataItem> = T[] | CollectionComposer<T> | null;
|
|
3
3
|
export interface TreeDataItem extends DataItem {
|
|
4
4
|
/**
|
|
@@ -15,3 +15,11 @@ export interface TreeDataItem extends DataItem {
|
|
|
15
15
|
*/
|
|
16
16
|
expanded?: boolean;
|
|
17
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Predicate callback
|
|
20
|
+
* Matches item against filter function
|
|
21
|
+
*
|
|
22
|
+
* @param item Item to filter
|
|
23
|
+
* @return Does item match filter
|
|
24
|
+
*/
|
|
25
|
+
export declare type TreeFilter<T extends TreeDataItem = TreeDataItem> = (item: T) => boolean;
|
package/lib/tree/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from './elements/tree';
|
|
2
|
-
export * from './elements/tree-item';
|
|
3
|
-
export { TreeRenderer } from './helpers/renderer';
|
|
4
|
-
export { TreeData, TreeDataItem } from './helpers/types';
|
|
1
|
+
export * from './elements/tree.js';
|
|
2
|
+
export * from './elements/tree-item.js';
|
|
3
|
+
export { TreeRenderer } from './helpers/renderer.js';
|
|
4
|
+
export type { TreeData, TreeDataItem } from './helpers/types';
|
package/lib/tree/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './elements/tree';
|
|
2
|
-
export * from './elements/tree-item';
|
|
3
|
-
export { TreeRenderer } from './helpers/renderer';
|
|
1
|
+
export * from './elements/tree.js';
|
|
2
|
+
export * from './elements/tree-item.js';
|
|
3
|
+
export { TreeRenderer } from './helpers/renderer.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CollectionComposer } from '@refinitiv-ui/utils';
|
|
2
|
-
import { TreeDataItem } from '../helpers/types';
|
|
1
|
+
import type { CollectionComposer } from '@refinitiv-ui/utils/lib/collection';
|
|
2
|
+
import type { TreeDataItem } from '../helpers/types';
|
|
3
3
|
export declare enum CheckedState {
|
|
4
4
|
CHECKED = 1,
|
|
5
5
|
UNCHECKED = 0,
|
|
@@ -72,18 +72,30 @@ export declare class TreeManager<T extends TreeDataItem> {
|
|
|
72
72
|
* @returns `True` if the item is hidden
|
|
73
73
|
*/
|
|
74
74
|
private isItemHidden;
|
|
75
|
-
/**
|
|
76
|
-
* Is the item visible?
|
|
77
|
-
* @param item Original data item
|
|
78
|
-
* @returns `True` if the item is visible
|
|
79
|
-
*/
|
|
80
|
-
private isItemVisible;
|
|
81
75
|
/**
|
|
82
76
|
* Is the item checked?
|
|
83
77
|
* @param item Original data item
|
|
84
78
|
* @returns `True` if the item is checked
|
|
85
79
|
*/
|
|
86
80
|
private isItemChecked;
|
|
81
|
+
/**
|
|
82
|
+
* Is the item checked indeterminately?
|
|
83
|
+
* @param item Original data item
|
|
84
|
+
* @returns `True` if the item has managed relationships and contains checked descendants
|
|
85
|
+
*/
|
|
86
|
+
private isItemCheckedIndeterminate;
|
|
87
|
+
/**
|
|
88
|
+
* Determines whether the item is unchecked and can be changed to a checked state.
|
|
89
|
+
* @param item Original data item
|
|
90
|
+
* @returns True if the item can be changed to 'checked'.
|
|
91
|
+
*/
|
|
92
|
+
private canCheckItem;
|
|
93
|
+
/**
|
|
94
|
+
* Determines whether the item is checked and can be changed to an unchecked state.
|
|
95
|
+
* @param item Original data item
|
|
96
|
+
* @returns True if the item can be changed to 'unchecked'.
|
|
97
|
+
*/
|
|
98
|
+
private canUncheckItem;
|
|
87
99
|
/**
|
|
88
100
|
* Makes an item visible
|
|
89
101
|
* @param item Original data item
|
|
@@ -98,10 +110,10 @@ export declare class TreeManager<T extends TreeDataItem> {
|
|
|
98
110
|
private hideItem;
|
|
99
111
|
/**
|
|
100
112
|
* Forces a modification event, so that the renderer can update.
|
|
101
|
-
* @param item Item of which to find
|
|
113
|
+
* @param item Item of which to find path
|
|
102
114
|
* @returns {void}
|
|
103
115
|
*/
|
|
104
|
-
private
|
|
116
|
+
private forceUpdateOnPath;
|
|
105
117
|
/**
|
|
106
118
|
* Sets the mode (algorithm) the manager should use
|
|
107
119
|
* @param mode Tree manager mode
|
|
@@ -48,7 +48,10 @@ export class TreeManager {
|
|
|
48
48
|
*/
|
|
49
49
|
get checkedItems() {
|
|
50
50
|
return this.composer.queryItems((item) => {
|
|
51
|
-
|
|
51
|
+
if (this.manageRelationships && this.isItemParent(item)) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
return this.isItemChecked(item);
|
|
52
55
|
}, Infinity);
|
|
53
56
|
}
|
|
54
57
|
/**
|
|
@@ -91,8 +94,7 @@ export class TreeManager {
|
|
|
91
94
|
*/
|
|
92
95
|
getVisibleItems(items, result = []) {
|
|
93
96
|
for (const item of items) {
|
|
94
|
-
if (this.
|
|
95
|
-
result.push(item);
|
|
97
|
+
if (!this.isItemHidden(item) && result.push(item) && this.isItemExpanded(item)) {
|
|
96
98
|
const children = this.getItemChildren(item);
|
|
97
99
|
children.length && this.getVisibleItems(children, result);
|
|
98
100
|
}
|
|
@@ -107,24 +109,50 @@ export class TreeManager {
|
|
|
107
109
|
isItemHidden(item) {
|
|
108
110
|
return this.composer.getItemPropertyValue(item, 'hidden') === true;
|
|
109
111
|
}
|
|
110
|
-
/**
|
|
111
|
-
* Is the item visible?
|
|
112
|
-
* @param item Original data item
|
|
113
|
-
* @returns `True` if the item is visible
|
|
114
|
-
*/
|
|
115
|
-
isItemVisible(item) {
|
|
116
|
-
return !this.isItemHidden(item)
|
|
117
|
-
&& !this.composer.getItemAncestors(item)
|
|
118
|
-
.some(ancestor => !this.isItemExpanded(ancestor));
|
|
119
|
-
}
|
|
120
112
|
/**
|
|
121
113
|
* Is the item checked?
|
|
122
114
|
* @param item Original data item
|
|
123
115
|
* @returns `True` if the item is checked
|
|
124
116
|
*/
|
|
125
117
|
isItemChecked(item) {
|
|
118
|
+
if (this.manageRelationships && this.isItemParent(item)) {
|
|
119
|
+
return !this.getItemChildren(item).some(child => !this.isItemChecked(child));
|
|
120
|
+
}
|
|
126
121
|
return this.composer.getItemPropertyValue(item, 'selected') === true;
|
|
127
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Is the item checked indeterminately?
|
|
125
|
+
* @param item Original data item
|
|
126
|
+
* @returns `True` if the item has managed relationships and contains checked descendants
|
|
127
|
+
*/
|
|
128
|
+
isItemCheckedIndeterminate(item) {
|
|
129
|
+
if (this.manageRelationships && this.isItemParent(item)) {
|
|
130
|
+
return this.getItemDescendants(item).some(desc => this.isItemChecked(desc));
|
|
131
|
+
}
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Determines whether the item is unchecked and can be changed to a checked state.
|
|
136
|
+
* @param item Original data item
|
|
137
|
+
* @returns True if the item can be changed to 'checked'.
|
|
138
|
+
*/
|
|
139
|
+
canCheckItem(item) {
|
|
140
|
+
if (this.manageRelationships && this.isItemParent(item)) {
|
|
141
|
+
return this.getItemChildren(item).some(child => this.canCheckItem(child));
|
|
142
|
+
}
|
|
143
|
+
return this.isItemCheckable(item) && this.composer.getItemPropertyValue(item, 'selected') !== true;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Determines whether the item is checked and can be changed to an unchecked state.
|
|
147
|
+
* @param item Original data item
|
|
148
|
+
* @returns True if the item can be changed to 'unchecked'.
|
|
149
|
+
*/
|
|
150
|
+
canUncheckItem(item) {
|
|
151
|
+
if (this.manageRelationships && this.isItemParent(item)) {
|
|
152
|
+
return this.getItemChildren(item).some(child => this.canUncheckItem(child));
|
|
153
|
+
}
|
|
154
|
+
return this.isItemCheckable(item) && this.composer.getItemPropertyValue(item, 'selected') === true;
|
|
155
|
+
}
|
|
128
156
|
/**
|
|
129
157
|
* Makes an item visible
|
|
130
158
|
* @param item Original data item
|
|
@@ -144,15 +172,12 @@ export class TreeManager {
|
|
|
144
172
|
}
|
|
145
173
|
/**
|
|
146
174
|
* Forces a modification event, so that the renderer can update.
|
|
147
|
-
* @param item Item of which to find
|
|
175
|
+
* @param item Item of which to find path
|
|
148
176
|
* @returns {void}
|
|
149
177
|
*/
|
|
150
|
-
|
|
151
|
-
this.
|
|
152
|
-
|
|
153
|
-
this.composer.setItemPropertyValue(ancestor, 'selected', allSelected);
|
|
154
|
-
this.updateItem(ancestor);
|
|
155
|
-
});
|
|
178
|
+
forceUpdateOnPath(item) {
|
|
179
|
+
const path = [...this.getItemAncestors(item), item];
|
|
180
|
+
path.forEach(item => this.composer.updateItemTimestamp(item));
|
|
156
181
|
}
|
|
157
182
|
/**
|
|
158
183
|
* Sets the mode (algorithm) the manager should use
|
|
@@ -232,16 +257,13 @@ export class TreeManager {
|
|
|
232
257
|
* @returns Checked state of the item
|
|
233
258
|
*/
|
|
234
259
|
getItemCheckedState(item) {
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
if (isParent && this.manageRelationships) {
|
|
238
|
-
const checkedCount = descendants.reduce((count, item) => {
|
|
239
|
-
return count + (this.isItemChecked(item) === true ? 1 : 0);
|
|
240
|
-
}, 0);
|
|
241
|
-
return !checkedCount ? CheckedState.UNCHECKED
|
|
242
|
-
: checkedCount === descendants.length ? CheckedState.CHECKED : CheckedState.INDETERMINATE;
|
|
260
|
+
if (this.isItemChecked(item)) {
|
|
261
|
+
return CheckedState.CHECKED;
|
|
243
262
|
}
|
|
244
|
-
|
|
263
|
+
if (this.isItemCheckedIndeterminate(item)) {
|
|
264
|
+
return CheckedState.INDETERMINATE;
|
|
265
|
+
}
|
|
266
|
+
return CheckedState.UNCHECKED;
|
|
245
267
|
}
|
|
246
268
|
/**
|
|
247
269
|
* Gets an item's ancestors
|
|
@@ -319,17 +341,14 @@ export class TreeManager {
|
|
|
319
341
|
return this._checkItem(item);
|
|
320
342
|
}
|
|
321
343
|
_checkItem(item, manageRelationships = this.manageRelationships) {
|
|
322
|
-
if (this.
|
|
344
|
+
if (this.canCheckItem(item)) {
|
|
323
345
|
this.composer.setItemPropertyValue(item, 'selected', true);
|
|
324
346
|
if (manageRelationships) {
|
|
325
|
-
this.
|
|
347
|
+
this.forceUpdateOnPath(item);
|
|
326
348
|
this.getItemDescendants(item).forEach(descendant => this._checkItem(descendant, false));
|
|
327
349
|
}
|
|
328
350
|
return true;
|
|
329
351
|
}
|
|
330
|
-
if (this.isItemParent(item)) {
|
|
331
|
-
this.updateItem(item); // update parent checked state
|
|
332
|
-
}
|
|
333
352
|
return false;
|
|
334
353
|
}
|
|
335
354
|
/**
|
|
@@ -341,17 +360,14 @@ export class TreeManager {
|
|
|
341
360
|
return this._uncheckItem(item);
|
|
342
361
|
}
|
|
343
362
|
_uncheckItem(item, manageRelationships = this.manageRelationships) {
|
|
344
|
-
if (this.
|
|
363
|
+
if (this.canUncheckItem(item)) {
|
|
345
364
|
this.composer.setItemPropertyValue(item, 'selected', false);
|
|
346
365
|
if (manageRelationships) {
|
|
347
|
-
this.
|
|
366
|
+
this.forceUpdateOnPath(item);
|
|
348
367
|
this.getItemDescendants(item).forEach(descendant => this._uncheckItem(descendant, false));
|
|
349
368
|
}
|
|
350
369
|
return true;
|
|
351
370
|
}
|
|
352
|
-
if (this.isItemParent(item)) {
|
|
353
|
-
this.updateItem(item); // update parent checked state
|
|
354
|
-
}
|
|
355
371
|
return false;
|
|
356
372
|
}
|
|
357
373
|
/**
|
|
@@ -360,7 +376,7 @@ export class TreeManager {
|
|
|
360
376
|
* @returns `True` if the item is modified
|
|
361
377
|
*/
|
|
362
378
|
toggleItem(item) {
|
|
363
|
-
return this.
|
|
379
|
+
return this.checkItem(item) || this.uncheckItem(item);
|
|
364
380
|
}
|
|
365
381
|
/**
|
|
366
382
|
* Checks all items
|