@daffodil/design 0.60.0 → 0.62.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/accordion/examples/package.json +1 -1
- package/article/examples/package.json +1 -1
- package/atoms/button/button.component.d.ts +18 -2
- package/atoms/button/button.module.d.ts +2 -1
- package/atoms/form/error-message/error-message.component.d.ts +1 -0
- package/atoms/form/form-label/form-label.directive.d.ts +6 -0
- package/atoms/form/form-label/form-label.module.d.ts +7 -0
- package/atoms/form/form-label/public_api.d.ts +2 -0
- package/atoms/form/{select/select/select.component.d.ts → native-select/native-select.component.d.ts} +1 -1
- package/atoms/form/{select/select.module.d.ts → native-select/native-select.module.d.ts} +1 -1
- package/atoms/form/native-select/public_api.d.ts +2 -0
- package/atoms/form/quantity-field/quantity-field.module.d.ts +1 -1
- package/atoms/form/quantity-field/quantity-select/quantity-select.component.d.ts +1 -1
- package/atoms/loading-icon/loading-icon.component.d.ts +3 -3
- package/button/examples/examples.d.ts +4 -0
- package/button/examples/flat-button/flat-button.component.d.ts +7 -0
- package/button/examples/flat-button/flat-button.module.d.ts +9 -0
- package/button/examples/package.json +1 -1
- package/button/examples/public_api.d.ts +10 -9
- package/callout/examples/package.json +1 -1
- package/card/examples/package.json +1 -1
- package/checkbox/examples/package.json +1 -1
- package/container/examples/package.json +1 -1
- package/core/animation/animation-state-with-params.d.ts +8 -0
- package/core/public_api.d.ts +3 -2
- package/core/statusable/public_api.d.ts +2 -0
- package/esm2020/atoms/button/button.component.mjs +62 -5
- package/esm2020/atoms/button/button.module.mjs +6 -2
- package/esm2020/atoms/form/error-message/error-message.component.mjs +10 -4
- package/esm2020/atoms/form/form-label/form-label.directive.mjs +19 -0
- package/esm2020/atoms/form/form-label/form-label.module.mjs +20 -0
- package/esm2020/atoms/form/form-label/public_api.mjs +3 -0
- package/esm2020/atoms/form/native-select/native-select.component.mjs +64 -0
- package/esm2020/atoms/form/{select/select.module.mjs → native-select/native-select.module.mjs} +2 -2
- package/esm2020/atoms/form/native-select/public_api.mjs +3 -0
- package/esm2020/atoms/form/quantity-field/quantity-field.module.mjs +2 -2
- package/esm2020/atoms/form/quantity-field/quantity-select/quantity-select.component.mjs +3 -3
- package/esm2020/atoms/image/image.component.mjs +2 -2
- package/esm2020/atoms/loading-icon/loading-icon.component.mjs +4 -5
- package/esm2020/button/examples/basic-button/basic-button.component.mjs +7 -6
- package/esm2020/button/examples/examples.mjs +19 -0
- package/esm2020/button/examples/flat-button/flat-button.component.mjs +24 -0
- package/esm2020/button/examples/flat-button/flat-button.module.mjs +30 -0
- package/esm2020/button/examples/icon-button/icon-button.component.mjs +6 -5
- package/esm2020/button/examples/public_api.mjs +11 -18
- package/esm2020/button/examples/raised-button/raised-button.component.mjs +7 -6
- package/esm2020/button/examples/sizeable-button/sizeable-button.component.mjs +3 -7
- package/esm2020/button/examples/statusable-button/statusable-button.component.mjs +3 -11
- package/esm2020/button/examples/stroked-button/stroked-button.component.mjs +7 -6
- package/esm2020/button/examples/underline-button/underline-button.component.mjs +7 -6
- package/esm2020/button/examples/underline-button/underline-button.module.mjs +1 -1
- package/esm2020/callout/examples/callout-text-alignment/callout-text-alignment.component.mjs +1 -1
- package/esm2020/callout/examples/callout-theming/callout-theming.component.mjs +1 -1
- package/esm2020/callout/examples/callout-with-grid/callout-with-grid.component.mjs +1 -1
- package/esm2020/callout/examples/compact-callout/compact-callout.component.mjs +1 -1
- package/esm2020/card/examples/basic-card/basic-card.component.mjs +1 -1
- package/esm2020/card/examples/card-orientation/card-orientation.component.mjs +1 -1
- package/esm2020/checkbox/examples/basic-checkbox/basic-checkbox.component.mjs +1 -1
- package/esm2020/checkbox/examples/checkbox-set/checkbox-set.component.mjs +1 -1
- package/esm2020/core/animation/animation-state-with-params.mjs +2 -0
- package/esm2020/core/public_api.mjs +4 -3
- package/esm2020/core/statusable/public_api.mjs +3 -0
- package/esm2020/hero/examples/compact-hero/compact-hero.component.mjs +1 -1
- package/esm2020/hero/examples/hero-text-alignment/hero-text-alignment.component.mjs +1 -1
- package/esm2020/hero/examples/hero-theming/hero-theming.component.mjs +1 -1
- package/esm2020/hero/examples/hero-with-grid/hero-with-grid.component.mjs +1 -1
- package/esm2020/menu/examples/basic-menu/basic-menu.component.mjs +1 -1
- package/esm2020/modal/examples/basic-modal/basic-modal.component.mjs +1 -1
- package/esm2020/modal/examples/basic-modal/modal-content.component.mjs +1 -1
- package/esm2020/molecules/backdrop/animation/backdrop-animation-state.mjs +2 -0
- package/esm2020/molecules/backdrop/animation/backdrop-animation.mjs +6 -2
- package/esm2020/molecules/backdrop/backdrop/backdrop.component.mjs +40 -5
- package/esm2020/molecules/media-gallery/media-gallery.component.mjs +2 -2
- package/esm2020/molecules/qty-dropdown/qty-dropdown.component.mjs +1 -1
- package/esm2020/molecules/qty-dropdown/qty-dropdown.module.mjs +2 -2
- package/esm2020/molecules/sidebar/animation/sidebar-animation-state.mjs +2 -2
- package/esm2020/molecules/sidebar/animation/sidebar-animation-width.mjs +2 -0
- package/esm2020/molecules/sidebar/animation/sidebar-animation.mjs +21 -4
- package/esm2020/molecules/sidebar/animation/sidebar-viewport-animation-state.mjs +3 -0
- package/esm2020/molecules/sidebar/helper/sidebar-mode.mjs +1 -1
- package/esm2020/molecules/sidebar/helper/sidebar-side.mjs +2 -0
- package/esm2020/molecules/sidebar/public_api.mjs +1 -2
- package/esm2020/molecules/sidebar/sidebar/sidebar.component.mjs +62 -10
- package/esm2020/molecules/sidebar/sidebar-viewport/backdrop-interactable.mjs +5 -0
- package/esm2020/molecules/sidebar/sidebar-viewport/content-pad.mjs +17 -0
- package/esm2020/molecules/sidebar/sidebar-viewport/content-shift.mjs +21 -0
- package/esm2020/molecules/sidebar/sidebar-viewport/sidebar-viewport.component.mjs +83 -81
- package/esm2020/navbar/examples/basic-navbar/basic-navbar.component.mjs +1 -1
- package/esm2020/navbar/examples/contained-navbar/contained-navbar.component.mjs +1 -1
- package/esm2020/navbar/examples/navbar-theming/navbar-theming.component.mjs +1 -1
- package/esm2020/navbar/examples/raised-navbar/raised-navbar.component.mjs +1 -1
- package/esm2020/public_api.mjs +3 -2
- package/esm2020/sidebar/examples/basic-sidebar/basic-sidebar.component.mjs +12 -0
- package/esm2020/sidebar/examples/basic-sidebar/basic-sidebar.module.mjs +29 -0
- package/esm2020/sidebar/examples/daffodil-design-sidebar-examples.mjs +5 -0
- package/esm2020/sidebar/examples/fixed-and-over-sidebar/fixed-and-over-sidebar.component.mjs +21 -0
- package/esm2020/sidebar/examples/fixed-and-over-sidebar/fixed-and-over-sidebar.module.mjs +32 -0
- package/esm2020/sidebar/examples/index.mjs +2 -0
- package/esm2020/sidebar/examples/public_api.mjs +18 -0
- package/esm2020/sidebar/examples/sidebar-with-sticky/sidebar-with-sticky.component.mjs +12 -0
- package/esm2020/sidebar/examples/sidebar-with-sticky/sidebar-with-sticky.module.mjs +29 -0
- package/esm2020/sidebar/examples/two-fixed-sidebars-either-side/two-fixed-sidebars-either-side.component.mjs +12 -0
- package/esm2020/sidebar/examples/two-fixed-sidebars-either-side/two-fixed-sidebars-either-side.module.mjs +29 -0
- package/esm2020/sidebar/examples/under-sidebar/under-sidebar.component.mjs +26 -0
- package/esm2020/sidebar/examples/under-sidebar/under-sidebar.module.mjs +32 -0
- package/esm2020/tree/daffodil-design-tree.mjs +5 -0
- package/esm2020/tree/examples/basic-tree/basic-tree.component.mjs +39 -0
- package/esm2020/tree/examples/basic-tree/basic-tree.module.mjs +34 -0
- package/esm2020/tree/examples/daffodil-design-tree-examples.mjs +5 -0
- package/esm2020/tree/examples/index.mjs +2 -0
- package/esm2020/tree/examples/public_api.mjs +7 -0
- package/esm2020/tree/index.mjs +2 -0
- package/esm2020/tree/interfaces/recursive-key.mjs +2 -0
- package/esm2020/tree/interfaces/tree-data.mjs +2 -0
- package/esm2020/tree/interfaces/tree-ui.mjs +2 -0
- package/esm2020/tree/public_api.mjs +5 -0
- package/esm2020/tree/tree/tree-notifier.service.mjs +45 -0
- package/esm2020/tree/tree/tree.component.mjs +106 -0
- package/esm2020/tree/tree-item/tree-item.directive.mjs +154 -0
- package/esm2020/tree/tree.module.mjs +31 -0
- package/esm2020/tree/utils/flatten-tree.mjs +47 -0
- package/esm2020/tree/utils/hydrate-tree.mjs +31 -0
- package/esm2020/tree/utils/transform-in-place.mjs +23 -0
- package/esm2020/tree/utils/traverse-tree.mjs +21 -0
- package/fesm2015/daffodil-design-button-examples.mjs +160 -122
- package/fesm2015/daffodil-design-button-examples.mjs.map +1 -1
- package/fesm2015/daffodil-design-callout-examples.mjs +4 -4
- package/fesm2015/daffodil-design-callout-examples.mjs.map +1 -1
- package/fesm2015/daffodil-design-card-examples.mjs +2 -2
- package/fesm2015/daffodil-design-card-examples.mjs.map +1 -1
- package/fesm2015/daffodil-design-checkbox-examples.mjs +2 -2
- package/fesm2015/daffodil-design-checkbox-examples.mjs.map +1 -1
- package/fesm2015/daffodil-design-hero-examples.mjs +4 -4
- package/fesm2015/daffodil-design-hero-examples.mjs.map +1 -1
- package/fesm2015/daffodil-design-menu-examples.mjs +1 -1
- package/fesm2015/daffodil-design-menu-examples.mjs.map +1 -1
- package/fesm2015/daffodil-design-modal-examples.mjs +2 -2
- package/fesm2015/daffodil-design-modal-examples.mjs.map +1 -1
- package/fesm2015/daffodil-design-navbar-examples.mjs +4 -4
- package/fesm2015/daffodil-design-navbar-examples.mjs.map +1 -1
- package/fesm2015/daffodil-design-sidebar-examples.mjs +218 -0
- package/fesm2015/daffodil-design-sidebar-examples.mjs.map +1 -0
- package/fesm2015/daffodil-design-tree-examples.mjs +81 -0
- package/fesm2015/daffodil-design-tree-examples.mjs.map +1 -0
- package/fesm2015/daffodil-design-tree.mjs +443 -0
- package/fesm2015/daffodil-design-tree.mjs.map +1 -0
- package/fesm2015/daffodil-design.mjs +440 -191
- package/fesm2015/daffodil-design.mjs.map +1 -1
- package/fesm2020/daffodil-design-button-examples.mjs +160 -122
- package/fesm2020/daffodil-design-button-examples.mjs.map +1 -1
- package/fesm2020/daffodil-design-callout-examples.mjs +4 -4
- package/fesm2020/daffodil-design-callout-examples.mjs.map +1 -1
- package/fesm2020/daffodil-design-card-examples.mjs +2 -2
- package/fesm2020/daffodil-design-card-examples.mjs.map +1 -1
- package/fesm2020/daffodil-design-checkbox-examples.mjs +2 -2
- package/fesm2020/daffodil-design-checkbox-examples.mjs.map +1 -1
- package/fesm2020/daffodil-design-hero-examples.mjs +4 -4
- package/fesm2020/daffodil-design-hero-examples.mjs.map +1 -1
- package/fesm2020/daffodil-design-menu-examples.mjs +1 -1
- package/fesm2020/daffodil-design-menu-examples.mjs.map +1 -1
- package/fesm2020/daffodil-design-modal-examples.mjs +2 -2
- package/fesm2020/daffodil-design-modal-examples.mjs.map +1 -1
- package/fesm2020/daffodil-design-navbar-examples.mjs +4 -4
- package/fesm2020/daffodil-design-navbar-examples.mjs.map +1 -1
- package/fesm2020/daffodil-design-sidebar-examples.mjs +218 -0
- package/fesm2020/daffodil-design-sidebar-examples.mjs.map +1 -0
- package/fesm2020/daffodil-design-tree-examples.mjs +81 -0
- package/fesm2020/daffodil-design-tree-examples.mjs.map +1 -0
- package/fesm2020/daffodil-design-tree.mjs +448 -0
- package/fesm2020/daffodil-design-tree.mjs.map +1 -0
- package/fesm2020/daffodil-design.mjs +440 -191
- package/fesm2020/daffodil-design.mjs.map +1 -1
- package/hero/examples/package.json +1 -1
- package/image/examples/package.json +1 -1
- package/input/examples/package.json +1 -1
- package/list/examples/package.json +1 -1
- package/loading-icon/examples/package.json +1 -1
- package/media-gallery/examples/package.json +1 -1
- package/menu/examples/package.json +1 -1
- package/modal/examples/package.json +1 -1
- package/molecules/backdrop/animation/backdrop-animation-state.d.ts +2 -0
- package/molecules/backdrop/backdrop/backdrop.component.d.ts +17 -3
- package/molecules/qty-dropdown/qty-dropdown.module.d.ts +1 -1
- package/molecules/sidebar/animation/sidebar-animation-state.d.ts +2 -1
- package/molecules/sidebar/animation/sidebar-animation-width.d.ts +2 -0
- package/molecules/sidebar/animation/sidebar-animation.d.ts +3 -1
- package/molecules/sidebar/animation/sidebar-viewport-animation-state.d.ts +6 -0
- package/molecules/sidebar/helper/sidebar-mode.d.ts +27 -1
- package/molecules/sidebar/helper/sidebar-side.d.ts +12 -0
- package/molecules/sidebar/public_api.d.ts +2 -1
- package/molecules/sidebar/sidebar/sidebar.component.d.ts +37 -5
- package/molecules/sidebar/sidebar-viewport/backdrop-interactable.d.ts +6 -0
- package/molecules/sidebar/sidebar-viewport/content-pad.d.ts +7 -0
- package/molecules/sidebar/sidebar-viewport/content-shift.d.ts +8 -0
- package/molecules/sidebar/sidebar-viewport/sidebar-viewport.component.d.ts +47 -44
- package/navbar/examples/package.json +1 -1
- package/package.json +1 -1
- package/paginator/examples/package.json +1 -1
- package/public_api.d.ts +2 -1
- package/quantity-field/examples/package.json +1 -1
- package/radio/examples/package.json +1 -1
- package/scss/global.scss +1 -0
- package/scss/state/skeleton/_mixins.scss +1 -0
- package/scss/theme.scss +4 -2
- package/scss/theming/_color-palettes.scss +5 -5
- package/sidebar/examples/basic-sidebar/basic-sidebar.component.d.ts +5 -0
- package/sidebar/examples/basic-sidebar/basic-sidebar.module.d.ts +8 -0
- package/sidebar/examples/daffodil-design-sidebar-examples.d.ts +5 -0
- package/sidebar/examples/fixed-and-over-sidebar/fixed-and-over-sidebar.component.d.ts +8 -0
- package/sidebar/examples/fixed-and-over-sidebar/fixed-and-over-sidebar.module.d.ts +8 -0
- package/sidebar/examples/index.d.ts +1 -0
- package/sidebar/examples/package.json +1 -0
- package/sidebar/examples/public_api.d.ts +2 -0
- package/sidebar/examples/sidebar-with-sticky/sidebar-with-sticky.component.d.ts +5 -0
- package/sidebar/examples/sidebar-with-sticky/sidebar-with-sticky.module.d.ts +8 -0
- package/sidebar/examples/two-fixed-sidebars-either-side/two-fixed-sidebars-either-side.component.d.ts +5 -0
- package/sidebar/examples/two-fixed-sidebars-either-side/two-fixed-sidebars-either-side.module.d.ts +8 -0
- package/sidebar/examples/under-sidebar/under-sidebar.component.d.ts +10 -0
- package/sidebar/examples/under-sidebar/under-sidebar.module.d.ts +8 -0
- package/src/atoms/button/button-theme-variants/button.scss +9 -18
- package/src/atoms/button/button-theme-variants/flat.scss +25 -0
- package/src/atoms/button/button-theme-variants/raised.scss +6 -26
- package/src/atoms/button/button-theme-variants/stroked.scss +12 -20
- package/src/atoms/button/button-theme.scss +121 -117
- package/src/atoms/form/{select → native-select}/README.md +1 -1
- package/src/atoms/form/{select/select/select-theme.scss → native-select/native-select-theme.scss} +3 -3
- package/src/atoms/loading-icon/loading-icon-theme.scss +4 -0
- package/src/molecules/sidebar/README.md +10 -0
- package/src/molecules/sidebar/helper/_variables.scss +7 -0
- package/src/molecules/sidebar/sidebar/sidebar-theme.scss +3 -3
- package/src/molecules/sidebar/sidebar-viewport/sidebar-viewport-theme.scss +5 -0
- package/tree/README.md +38 -0
- package/tree/daffodil-design-tree.d.ts +5 -0
- package/tree/examples/basic-tree/basic-tree.component.d.ts +7 -0
- package/tree/examples/basic-tree/basic-tree.module.d.ts +10 -0
- package/tree/examples/daffodil-design-tree-examples.d.ts +5 -0
- package/tree/examples/index.d.ts +1 -0
- package/tree/examples/package.json +1 -0
- package/tree/examples/public_api.d.ts +4 -0
- package/tree/index.d.ts +1 -0
- package/tree/interfaces/recursive-key.d.ts +3 -0
- package/tree/interfaces/tree-data.d.ts +13 -0
- package/tree/interfaces/tree-ui.d.ts +11 -0
- package/tree/package.json +1 -0
- package/tree/public_api.d.ts +6 -0
- package/tree/src/tree-theme.scss +38 -0
- package/tree/tree/tree-notifier.service.d.ts +32 -0
- package/tree/tree/tree.component.d.ts +75 -0
- package/tree/tree-item/tree-item.directive.d.ts +102 -0
- package/tree/tree.module.d.ts +9 -0
- package/tree/utils/flatten-tree.d.ts +19 -0
- package/tree/utils/hydrate-tree.d.ts +8 -0
- package/tree/utils/transform-in-place.d.ts +15 -0
- package/tree/utils/traverse-tree.d.ts +5 -0
- package/atoms/form/select/public_api.d.ts +0 -2
- package/esm2020/atoms/form/select/public_api.mjs +0 -3
- package/esm2020/atoms/form/select/select/select.component.mjs +0 -64
- package/src/atoms/button/button-theme-variants/focus.scss +0 -6
@@ -0,0 +1,106 @@
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChild, HostBinding, Input, TemplateRef, ViewEncapsulation, } from '@angular/core';
|
2
|
+
import { flattenTree, } from '../utils/flatten-tree';
|
3
|
+
import { hydrateTree } from '../utils/hydrate-tree';
|
4
|
+
import { DaffTreeNotifierService } from './tree-notifier.service';
|
5
|
+
import * as i0 from "@angular/core";
|
6
|
+
import * as i1 from "./tree-notifier.service";
|
7
|
+
import * as i2 from "@angular/common";
|
8
|
+
/**
|
9
|
+
* The `DaffTreeComponent` allows you to render tree structures as interactable ui.
|
10
|
+
*
|
11
|
+
* They can be used like:
|
12
|
+
*
|
13
|
+
* ```html
|
14
|
+
* <ul daff-tree [tree]="tree">
|
15
|
+
* <ng-template #daffTreeItemWithChildrenTpl let-node>
|
16
|
+
* <button daffTreeItem [node]="node">{{ node.title }} </button>
|
17
|
+
* </ng-template>
|
18
|
+
*
|
19
|
+
* <ng-template #daffTreeItemTpl let-node>
|
20
|
+
* <a daffTreeItem [node]="node" [routerLink]="node.url">{{ node.title }}</a>
|
21
|
+
* </ng-template>
|
22
|
+
* </ul>
|
23
|
+
* ```
|
24
|
+
*
|
25
|
+
* where `tree` is a {@link DaffTreeData}.
|
26
|
+
*
|
27
|
+
*/
|
28
|
+
export class DaffTreeComponent {
|
29
|
+
constructor(notifier) {
|
30
|
+
this.notifier = notifier;
|
31
|
+
/**
|
32
|
+
* The css class of the daff-tree.
|
33
|
+
*
|
34
|
+
* @docs-private
|
35
|
+
*/
|
36
|
+
this.class = true;
|
37
|
+
/**
|
38
|
+
* The internal tree element.
|
39
|
+
*/
|
40
|
+
this.tree = undefined;
|
41
|
+
/**
|
42
|
+
* The flattened tree data. You can iterate through this if you want to inspect
|
43
|
+
* the resulting array structure we computed to render the tree.
|
44
|
+
*/
|
45
|
+
this.flatTree = [];
|
46
|
+
/**
|
47
|
+
* @docs-private
|
48
|
+
*/
|
49
|
+
this._dataTree = undefined;
|
50
|
+
}
|
51
|
+
/**
|
52
|
+
* The tree data you would like to render.
|
53
|
+
*/
|
54
|
+
get dataTree() {
|
55
|
+
return this._dataTree;
|
56
|
+
}
|
57
|
+
set dataTree(dataTree) {
|
58
|
+
if (!dataTree) {
|
59
|
+
this._dataTree = undefined;
|
60
|
+
this.tree = undefined;
|
61
|
+
this.flatTree = [];
|
62
|
+
return;
|
63
|
+
}
|
64
|
+
this._dataTree = dataTree;
|
65
|
+
this.tree = hydrateTree(this.dataTree);
|
66
|
+
this.flatTree = flattenTree(this.tree);
|
67
|
+
}
|
68
|
+
;
|
69
|
+
/**
|
70
|
+
* The track-by function used to reduce tree-item re-renders
|
71
|
+
*/
|
72
|
+
trackByTreeElement(index, el) {
|
73
|
+
return el.title;
|
74
|
+
}
|
75
|
+
/**
|
76
|
+
* @docs-private
|
77
|
+
*/
|
78
|
+
ngOnInit() {
|
79
|
+
this.notifier.notice$.subscribe(() => {
|
80
|
+
this.flatTree = flattenTree(this.tree);
|
81
|
+
});
|
82
|
+
}
|
83
|
+
}
|
84
|
+
/** @nocollapse */ DaffTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffTreeComponent, deps: [{ token: i1.DaffTreeNotifierService }], target: i0.ɵɵFactoryTarget.Component });
|
85
|
+
/** @nocollapse */ DaffTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: DaffTreeComponent, selector: "ul[daff-tree]", inputs: { dataTree: ["tree", "dataTree"] }, host: { properties: { "class.daff-tree": "this.class" } }, providers: [
|
86
|
+
DaffTreeNotifierService,
|
87
|
+
], queries: [{ propertyName: "withChildrenTemplate", first: true, predicate: ["daffTreeItemWithChildrenTpl"], descendants: true, static: true }, { propertyName: "treeItemTemplate", first: true, predicate: ["daffTreeItemTpl"], descendants: true, static: true }], ngImport: i0, template: "<ng-container *ngFor=\"let node of flatTree; trackBy: trackByTreeElement\">\n\t<li [attr.aria-level]=\"node.level\">\n\t\t<ng-container \n\t\t\t*ngTemplateOutlet=\"node.hasChildren ? withChildrenTemplate : treeItemTemplate; context: { $implicit: node }\">\n\t\t</ng-container>\t\n\t</li>\n</ng-container>", styles: [".daff-tree{margin:0;padding:0;list-style:none;--tree-padding: 16px}.daff-tree-item{cursor:pointer;-webkit-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;position:relative;background:none;border:0;padding:8px 16px 8px 0;line-height:1.5rem;font-weight:400;text-align:left;text-decoration:none;width:100%;padding-left:calc(var(--tree-padding) * (var(--depth)))}.daff-tree-item:before{content:\"\";position:absolute;top:0;bottom:0;left:0;width:4px}.daff-tree-item:focus,.daff-tree-item:focus-visible{z-index:1}.daff-tree-item.selected{font-weight:600}.daff-tree-item__parent{position:relative}.daff-tree-item__parent:after{content:\"\";position:absolute;top:48%;right:16px;display:inline-block;border-right:2px solid currentColor;border-bottom:2px solid currentColor;width:8px;height:8px;transform:translateY(-50%) rotate(45deg);transition:transform .15s}.daff-tree-item__parent.open:after{top:56%;transform:translateY(-50%) rotate(225deg)}\n"], directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffTreeComponent, decorators: [{
|
89
|
+
type: Component,
|
90
|
+
args: [{ selector: 'ul[daff-tree]', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
91
|
+
DaffTreeNotifierService,
|
92
|
+
], template: "<ng-container *ngFor=\"let node of flatTree; trackBy: trackByTreeElement\">\n\t<li [attr.aria-level]=\"node.level\">\n\t\t<ng-container \n\t\t\t*ngTemplateOutlet=\"node.hasChildren ? withChildrenTemplate : treeItemTemplate; context: { $implicit: node }\">\n\t\t</ng-container>\t\n\t</li>\n</ng-container>", styles: [".daff-tree{margin:0;padding:0;list-style:none;--tree-padding: 16px}.daff-tree-item{cursor:pointer;-webkit-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;position:relative;background:none;border:0;padding:8px 16px 8px 0;line-height:1.5rem;font-weight:400;text-align:left;text-decoration:none;width:100%;padding-left:calc(var(--tree-padding) * (var(--depth)))}.daff-tree-item:before{content:\"\";position:absolute;top:0;bottom:0;left:0;width:4px}.daff-tree-item:focus,.daff-tree-item:focus-visible{z-index:1}.daff-tree-item.selected{font-weight:600}.daff-tree-item__parent{position:relative}.daff-tree-item__parent:after{content:\"\";position:absolute;top:48%;right:16px;display:inline-block;border-right:2px solid currentColor;border-bottom:2px solid currentColor;width:8px;height:8px;transform:translateY(-50%) rotate(45deg);transition:transform .15s}.daff-tree-item__parent.open:after{top:56%;transform:translateY(-50%) rotate(225deg)}\n"] }]
|
93
|
+
}], ctorParameters: function () { return [{ type: i1.DaffTreeNotifierService }]; }, propDecorators: { class: [{
|
94
|
+
type: HostBinding,
|
95
|
+
args: ['class.daff-tree']
|
96
|
+
}], dataTree: [{
|
97
|
+
type: Input,
|
98
|
+
args: ['tree']
|
99
|
+
}], withChildrenTemplate: [{
|
100
|
+
type: ContentChild,
|
101
|
+
args: ['daffTreeItemWithChildrenTpl', { static: true }]
|
102
|
+
}], treeItemTemplate: [{
|
103
|
+
type: ContentChild,
|
104
|
+
args: ['daffTreeItemTpl', { static: true }]
|
105
|
+
}] } });
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbi90cmVlL3NyYy90cmVlL3RyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ24vdHJlZS9zcmMvdHJlZS90cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLFdBQVcsRUFDWCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUVMLFdBQVcsR0FDWixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUVsRTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQVlILE1BQU0sT0FBTyxpQkFBaUI7SUEyRDVCLFlBQ1UsUUFBaUM7UUFBakMsYUFBUSxHQUFSLFFBQVEsQ0FBeUI7UUExRDNDOzs7O1dBSUc7UUFDNkIsVUFBSyxHQUFHLElBQUksQ0FBQztRQUU3Qzs7V0FFRztRQUNLLFNBQUksR0FBd0IsU0FBUyxDQUFDO1FBRTlDOzs7V0FHRztRQUNJLGFBQVEsR0FBdUIsRUFBRSxDQUFDO1FBRXpDOztXQUVHO1FBQ0ssY0FBUyxHQUEwQixTQUFTLENBQUM7SUFzQ2xELENBQUM7SUFwQ0o7O09BRUc7SUFDSCxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLFFBQStCO1FBQzFDLElBQUcsQ0FBQyxRQUFRLEVBQUU7WUFDWixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNuQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFBQSxDQUFDO0lBcUJGOztPQUVHO0lBQ0gsa0JBQWtCLENBQUMsS0FBYSxFQUFFLEVBQU87UUFDdkMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O2lJQTdFVSxpQkFBaUI7cUhBQWpCLGlCQUFpQiwrSUFKakI7UUFDVCx1QkFBdUI7S0FDeEIsNlJDbERILGtUQU1lOzJGRDhDRixpQkFBaUI7a0JBWDdCLFNBQVM7K0JBRUUsZUFBZSxpQkFHVixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNULHVCQUF1QjtxQkFDeEI7OEdBUytCLEtBQUs7c0JBQXBDLFdBQVc7dUJBQUMsaUJBQWlCO2dCQXNCMUIsUUFBUTtzQkFEWCxLQUFLO3VCQUFDLE1BQU07Z0JBc0JiLG9CQUFvQjtzQkFEbkIsWUFBWTt1QkFBQyw2QkFBNkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBUVYsZ0JBQWdCO3NCQUFsRSxZQUFZO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERhZmZUcmVlRGF0YSB9IGZyb20gJy4uL2ludGVyZmFjZXMvdHJlZS1kYXRhJztcbmltcG9ydCB7IERhZmZUcmVlVWkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RyZWUtdWknO1xuaW1wb3J0IHtcbiAgRGFmZlRyZWVGbGF0Tm9kZSxcbiAgZmxhdHRlblRyZWUsXG59IGZyb20gJy4uL3V0aWxzL2ZsYXR0ZW4tdHJlZSc7XG5pbXBvcnQgeyBoeWRyYXRlVHJlZSB9IGZyb20gJy4uL3V0aWxzL2h5ZHJhdGUtdHJlZSc7XG5pbXBvcnQgeyBEYWZmVHJlZU5vdGlmaWVyU2VydmljZSB9IGZyb20gJy4vdHJlZS1ub3RpZmllci5zZXJ2aWNlJztcblxuLyoqXG4gKiBUaGUgYERhZmZUcmVlQ29tcG9uZW50YCBhbGxvd3MgeW91IHRvIHJlbmRlciB0cmVlIHN0cnVjdHVyZXMgYXMgaW50ZXJhY3RhYmxlIHVpLlxuICpcbiAqIFRoZXkgY2FuIGJlIHVzZWQgbGlrZTpcbiAqXG4gKiBgYGBodG1sXG4gKiA8dWwgZGFmZi10cmVlIFt0cmVlXT1cInRyZWVcIj5cbiAqICAgPG5nLXRlbXBsYXRlICNkYWZmVHJlZUl0ZW1XaXRoQ2hpbGRyZW5UcGwgbGV0LW5vZGU+XG4gKiAgICAgICA8YnV0dG9uIGRhZmZUcmVlSXRlbSBbbm9kZV09XCJub2RlXCI+e3sgbm9kZS50aXRsZSB9fSA8L2J1dHRvbj5cbiAqICAgPC9uZy10ZW1wbGF0ZT5cbiAqXG4gKiAgIDxuZy10ZW1wbGF0ZSAjZGFmZlRyZWVJdGVtVHBsIGxldC1ub2RlPlxuICogICAgICAgPGEgZGFmZlRyZWVJdGVtIFtub2RlXT1cIm5vZGVcIiBbcm91dGVyTGlua109XCJub2RlLnVybFwiPnt7IG5vZGUudGl0bGUgfX08L2E+XG4gKiAgIDwvbmctdGVtcGxhdGU+XG4gKiA8L3VsPlxuICogYGBgXG4gKlxuICogd2hlcmUgYHRyZWVgIGlzIGEge0BsaW5rIERhZmZUcmVlRGF0YX0uXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICd1bFtkYWZmLXRyZWVdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90cmVlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBEYWZmVHJlZU5vdGlmaWVyU2VydmljZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRGFmZlRyZWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIC8qKlxuICAgKiBUaGUgY3NzIGNsYXNzIG9mIHRoZSBkYWZmLXRyZWUuXG4gICAqXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZGFmZi10cmVlJykgY2xhc3MgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBUaGUgaW50ZXJuYWwgdHJlZSBlbGVtZW50LlxuICAgKi9cbiAgcHJpdmF0ZSB0cmVlOiBEYWZmVHJlZVVpPHVua25vd24+ID0gdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgZmxhdHRlbmVkIHRyZWUgZGF0YS4gWW91IGNhbiBpdGVyYXRlIHRocm91Z2ggdGhpcyBpZiB5b3Ugd2FudCB0byBpbnNwZWN0XG4gICAqIHRoZSByZXN1bHRpbmcgYXJyYXkgc3RydWN0dXJlIHdlIGNvbXB1dGVkIHRvIHJlbmRlciB0aGUgdHJlZS5cbiAgICovXG4gIHB1YmxpYyBmbGF0VHJlZTogRGFmZlRyZWVGbGF0Tm9kZVtdID0gW107XG5cbiAgLyoqXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX2RhdGFUcmVlOiBEYWZmVHJlZURhdGE8dW5rbm93bj4gPSB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0cmVlIGRhdGEgeW91IHdvdWxkIGxpa2UgdG8gcmVuZGVyLlxuICAgKi9cbiAgQElucHV0KCd0cmVlJylcbiAgZ2V0IGRhdGFUcmVlKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhVHJlZTtcbiAgfVxuICBzZXQgZGF0YVRyZWUoZGF0YVRyZWU6IERhZmZUcmVlRGF0YTx1bmtub3duPil7XG4gICAgaWYoIWRhdGFUcmVlKSB7XG4gICAgICB0aGlzLl9kYXRhVHJlZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMudHJlZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZmxhdFRyZWUgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZGF0YVRyZWUgPSBkYXRhVHJlZTtcbiAgICB0aGlzLnRyZWUgPSBoeWRyYXRlVHJlZSh0aGlzLmRhdGFUcmVlKTtcbiAgICB0aGlzLmZsYXRUcmVlID0gZmxhdHRlblRyZWUodGhpcy50cmVlKTtcbiAgfTtcblxuICAvKipcbiAgICogVGhlIHRlbXBsYXRlIHVzZWQgdG8gcmVuZGVyIHRyZWUtbm9kZXMgdGhhdCB0aGVtc2VsdmVzIGhhdmUgY2hpbGRyZW4uXG4gICAqXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIEBDb250ZW50Q2hpbGQoJ2RhZmZUcmVlSXRlbVdpdGhDaGlsZHJlblRwbCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHdpdGhDaGlsZHJlblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKlxuICAgKiBUaGUgdGVtcGxhdGUgdXNlZCB0byByZW5kZXIgdHJlZS1ub2RlcyB0aGF0IGhhdmUgbm8gY2hpbGRyZW4uXG4gICAqXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIEBDb250ZW50Q2hpbGQoJ2RhZmZUcmVlSXRlbVRwbCcsIHsgc3RhdGljOiB0cnVlIH0pIHRyZWVJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBub3RpZmllcjogRGFmZlRyZWVOb3RpZmllclNlcnZpY2UsXG4gICkge31cblxuICAvKipcbiAgICogVGhlIHRyYWNrLWJ5IGZ1bmN0aW9uIHVzZWQgdG8gcmVkdWNlIHRyZWUtaXRlbSByZS1yZW5kZXJzXG4gICAqL1xuICB0cmFja0J5VHJlZUVsZW1lbnQoaW5kZXg6IG51bWJlciwgZWw6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIGVsLnRpdGxlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubm90aWZpZXIubm90aWNlJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5mbGF0VHJlZSA9IGZsYXR0ZW5UcmVlKHRoaXMudHJlZSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG5vZGUgb2YgZmxhdFRyZWU7IHRyYWNrQnk6IHRyYWNrQnlUcmVlRWxlbWVudFwiPlxuXHQ8bGkgW2F0dHIuYXJpYS1sZXZlbF09XCJub2RlLmxldmVsXCI+XG5cdFx0PG5nLWNvbnRhaW5lciBcblx0XHRcdCpuZ1RlbXBsYXRlT3V0bGV0PVwibm9kZS5oYXNDaGlsZHJlbiA/IHdpdGhDaGlsZHJlblRlbXBsYXRlIDogdHJlZUl0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG5vZGUgfVwiPlxuXHRcdDwvbmctY29udGFpbmVyPlx0XG5cdDwvbGk+XG48L25nLWNvbnRhaW5lcj4iXX0=
|
@@ -0,0 +1,154 @@
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
2
|
+
import { Directive, HostBinding, HostListener, Inject, Input, } from '@angular/core';
|
3
|
+
import { DaffTreeNotifierService } from '../tree/tree-notifier.service';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
import * as i1 from "../tree/tree-notifier.service";
|
6
|
+
/**
|
7
|
+
* The `DaffTreeItemDirective` allows you to demarcate the elements which are
|
8
|
+
* tree-children that interact with the parent tree.
|
9
|
+
*
|
10
|
+
* They can be used like:
|
11
|
+
*
|
12
|
+
* ```html
|
13
|
+
* <ul daff-tree [tree]="tree">
|
14
|
+
* <ng-template #daffTreeItemWithChildrenTpl let-node>
|
15
|
+
* <button daffTreeItem [node]="node">{{ node.title }} </button>
|
16
|
+
* </ng-template>
|
17
|
+
*
|
18
|
+
* <ng-template #daffTreeItemTpl let-node>
|
19
|
+
* <a daffTreeItem [node]="node" [routerLink]="node.url">{{ node.title }}</a>
|
20
|
+
* </ng-template>
|
21
|
+
* </ul>
|
22
|
+
* ```
|
23
|
+
*
|
24
|
+
* where `tree` is a {@link DaffTreeData} and `daff-tree` is a {@link DaffTreeComponent}.
|
25
|
+
*
|
26
|
+
*/
|
27
|
+
export class DaffTreeItemDirective {
|
28
|
+
constructor(document, treeNotifier) {
|
29
|
+
this.document = document;
|
30
|
+
this.treeNotifier = treeNotifier;
|
31
|
+
/**
|
32
|
+
* The css class of the daff-tree.
|
33
|
+
*
|
34
|
+
* @docs-private
|
35
|
+
*/
|
36
|
+
this.class = true;
|
37
|
+
/**
|
38
|
+
* The css class of a DaffTreeItemDirective that has children.
|
39
|
+
*
|
40
|
+
* @docs-private
|
41
|
+
*/
|
42
|
+
this.classParent = false;
|
43
|
+
/**
|
44
|
+
* The CSS class indicating whether or not the tree is `open`.
|
45
|
+
*/
|
46
|
+
this.openClass = false;
|
47
|
+
/**
|
48
|
+
* Whether or not the tree item is the currently active item.
|
49
|
+
* Note that there is no requirement there there only be one active item at a time.
|
50
|
+
*/
|
51
|
+
this.selected = false;
|
52
|
+
}
|
53
|
+
/**
|
54
|
+
* The CSS class indicating whether or not the tree is `selected`.
|
55
|
+
*/
|
56
|
+
get selectedClass() {
|
57
|
+
return this.selected;
|
58
|
+
}
|
59
|
+
;
|
60
|
+
/**
|
61
|
+
* The {@link DaffTreeFlatNode} associated with this specific tree item.
|
62
|
+
*/
|
63
|
+
get node() {
|
64
|
+
return this._node;
|
65
|
+
}
|
66
|
+
;
|
67
|
+
set node(val) {
|
68
|
+
this._node = val;
|
69
|
+
this.id = 'tree-' + this._node.id;
|
70
|
+
this.ariaExpanded = this._node._treeRef.open ? 'true' : 'false';
|
71
|
+
this.depth = this._node.level;
|
72
|
+
this.classParent = this._node.hasChildren;
|
73
|
+
this.openClass = this._node._treeRef.open;
|
74
|
+
}
|
75
|
+
/**
|
76
|
+
* @docs-private
|
77
|
+
*/
|
78
|
+
onEscape() {
|
79
|
+
this.toggleParent(this.node);
|
80
|
+
}
|
81
|
+
/**
|
82
|
+
* @docs-private
|
83
|
+
*/
|
84
|
+
onClick() {
|
85
|
+
if (this.node.hasChildren) {
|
86
|
+
this.toggleTree(this.node);
|
87
|
+
}
|
88
|
+
this.treeNotifier.notify();
|
89
|
+
}
|
90
|
+
/**
|
91
|
+
* Toggle the open state of the tree's parent.
|
92
|
+
*/
|
93
|
+
toggleParent(node) {
|
94
|
+
if (node._treeRef?.parent.parent === undefined) {
|
95
|
+
return;
|
96
|
+
}
|
97
|
+
node._treeRef.parent.open = !node._treeRef.parent.open;
|
98
|
+
this.document.getElementById('tree-' + node._treeRef.parent.id).focus();
|
99
|
+
}
|
100
|
+
/**
|
101
|
+
* Toggle the open state of this specific subtree tree.
|
102
|
+
*/
|
103
|
+
toggleTree(node) {
|
104
|
+
if (node._treeRef.open === false) {
|
105
|
+
node._treeRef.open = true;
|
106
|
+
}
|
107
|
+
else {
|
108
|
+
node._treeRef.open = false;
|
109
|
+
}
|
110
|
+
}
|
111
|
+
}
|
112
|
+
/** @nocollapse */ DaffTreeItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffTreeItemDirective, deps: [{ token: DOCUMENT }, { token: i1.DaffTreeNotifierService }], target: i0.ɵɵFactoryTarget.Directive });
|
113
|
+
/** @nocollapse */ DaffTreeItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.0", type: DaffTreeItemDirective, selector: "[daffTreeItem]", inputs: { node: "node", selected: "selected" }, host: { listeners: { "keydown.escape": "onEscape()", "click": "onClick()" }, properties: { "class.daff-tree-item": "this.class", "class.daff-tree-item__parent": "this.classParent", "attr.id": "this.id", "attr.aria-expanded": "this.ariaExpanded", "style.--depth": "this.depth", "class.selected": "this.selectedClass", "class.open": "this.openClass" } }, ngImport: i0 });
|
114
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffTreeItemDirective, decorators: [{
|
115
|
+
type: Directive,
|
116
|
+
args: [{
|
117
|
+
selector: '[daffTreeItem]',
|
118
|
+
}]
|
119
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
120
|
+
type: Inject,
|
121
|
+
args: [DOCUMENT]
|
122
|
+
}] }, { type: i1.DaffTreeNotifierService }]; }, propDecorators: { class: [{
|
123
|
+
type: HostBinding,
|
124
|
+
args: ['class.daff-tree-item']
|
125
|
+
}], classParent: [{
|
126
|
+
type: HostBinding,
|
127
|
+
args: ['class.daff-tree-item__parent']
|
128
|
+
}], id: [{
|
129
|
+
type: HostBinding,
|
130
|
+
args: ['attr.id']
|
131
|
+
}], ariaExpanded: [{
|
132
|
+
type: HostBinding,
|
133
|
+
args: ['attr.aria-expanded']
|
134
|
+
}], depth: [{
|
135
|
+
type: HostBinding,
|
136
|
+
args: ['style.--depth']
|
137
|
+
}], selectedClass: [{
|
138
|
+
type: HostBinding,
|
139
|
+
args: ['class.selected']
|
140
|
+
}], openClass: [{
|
141
|
+
type: HostBinding,
|
142
|
+
args: ['class.open']
|
143
|
+
}], node: [{
|
144
|
+
type: Input
|
145
|
+
}], selected: [{
|
146
|
+
type: Input
|
147
|
+
}], onEscape: [{
|
148
|
+
type: HostListener,
|
149
|
+
args: ['keydown.escape']
|
150
|
+
}], onClick: [{
|
151
|
+
type: HostListener,
|
152
|
+
args: ['click']
|
153
|
+
}] } });
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduL3RyZWUvc3JjL3RyZWUtaXRlbS90cmVlLWl0ZW0uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBR3hFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUlILE1BQU0sT0FBTyxxQkFBcUI7SUErRWhDLFlBQzRCLFFBQWEsRUFDL0IsWUFBcUM7UUFEbkIsYUFBUSxHQUFSLFFBQVEsQ0FBSztRQUMvQixpQkFBWSxHQUFaLFlBQVksQ0FBeUI7UUEvRS9DOzs7O1dBSUc7UUFDa0MsVUFBSyxHQUFHLElBQUksQ0FBQztRQUVsRDs7OztXQUlHO1FBQzBDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBK0JqRTs7V0FFRztRQUN3QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBeUI3Qzs7O1dBR0c7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDO0lBS3ZCLENBQUM7SUE1Q0o7O09BRUc7SUFDSCxJQUFtQyxhQUFhO1FBQzlDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBQUEsQ0FBQztJQWNGOztPQUVHO0lBQ0gsSUFDSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFBQSxDQUFDO0lBQ0YsSUFBSSxJQUFJLENBQUMsR0FBcUI7UUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7UUFDakIsSUFBSSxDQUFDLEVBQUUsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUMxQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUM1QyxDQUFDO0lBYUQ7O09BRUc7SUFFSCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBRUgsT0FBTztRQUNMLElBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDNUI7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVksQ0FBQyxJQUFzQjtRQUNqQyxJQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDN0MsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQzVDLElBQUksQ0FBQyxRQUFTLENBQUMsY0FBYyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0RixDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVLENBQUMsSUFBc0I7UUFDL0IsSUFBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQzNCO2FBQU07WUFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7U0FDNUI7SUFDSCxDQUFDOztxSUEzSFUscUJBQXFCLGtCQWdGdEIsUUFBUTt5SEFoRlAscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBSGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0I7OzBCQWlGSSxNQUFNOzJCQUFDLFFBQVE7a0ZBekVtQixLQUFLO3NCQUF6QyxXQUFXO3VCQUFDLHNCQUFzQjtnQkFPVSxXQUFXO3NCQUF2RCxXQUFXO3VCQUFDLDhCQUE4QjtnQkFPbkIsRUFBRTtzQkFBekIsV0FBVzt1QkFBQyxTQUFTO2dCQVFhLFlBQVk7c0JBQTlDLFdBQVc7dUJBQUMsb0JBQW9CO2dCQU9ILEtBQUs7c0JBQWxDLFdBQVc7dUJBQUMsZUFBZTtnQkFLTyxhQUFhO3NCQUEvQyxXQUFXO3VCQUFDLGdCQUFnQjtnQkFPRixTQUFTO3NCQUFuQyxXQUFXO3VCQUFDLFlBQVk7Z0JBYXJCLElBQUk7c0JBRFAsS0FBSztnQkFpQkcsUUFBUTtzQkFBaEIsS0FBSztnQkFXTixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZ0JBQWdCO2dCQVM5QixPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERhZmZUcmVlTm90aWZpZXJTZXJ2aWNlIH0gZnJvbSAnLi4vdHJlZS90cmVlLW5vdGlmaWVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGFmZlRyZWVGbGF0Tm9kZSB9IGZyb20gJy4uL3V0aWxzL2ZsYXR0ZW4tdHJlZSc7XG5cbi8qKlxuICogVGhlIGBEYWZmVHJlZUl0ZW1EaXJlY3RpdmVgIGFsbG93cyB5b3UgdG8gZGVtYXJjYXRlIHRoZSBlbGVtZW50cyB3aGljaCBhcmVcbiAqIHRyZWUtY2hpbGRyZW4gdGhhdCBpbnRlcmFjdCB3aXRoIHRoZSBwYXJlbnQgdHJlZS5cbiAqXG4gKiBUaGV5IGNhbiBiZSB1c2VkIGxpa2U6XG4gKlxuICogYGBgaHRtbFxuICogPHVsIGRhZmYtdHJlZSBbdHJlZV09XCJ0cmVlXCI+XG4gKiAgIDxuZy10ZW1wbGF0ZSAjZGFmZlRyZWVJdGVtV2l0aENoaWxkcmVuVHBsIGxldC1ub2RlPlxuICogICAgICAgPGJ1dHRvbiBkYWZmVHJlZUl0ZW0gW25vZGVdPVwibm9kZVwiPnt7IG5vZGUudGl0bGUgfX0gPC9idXR0b24+XG4gKiAgIDwvbmctdGVtcGxhdGU+XG4gKlxuICogICA8bmctdGVtcGxhdGUgI2RhZmZUcmVlSXRlbVRwbCBsZXQtbm9kZT5cbiAqICAgICAgIDxhIGRhZmZUcmVlSXRlbSBbbm9kZV09XCJub2RlXCIgW3JvdXRlckxpbmtdPVwibm9kZS51cmxcIj57eyBub2RlLnRpdGxlIH19PC9hPlxuICogICA8L25nLXRlbXBsYXRlPlxuICogPC91bD5cbiAqIGBgYFxuICpcbiAqIHdoZXJlIGB0cmVlYCBpcyBhIHtAbGluayBEYWZmVHJlZURhdGF9IGFuZCBgZGFmZi10cmVlYCBpcyBhIHtAbGluayBEYWZmVHJlZUNvbXBvbmVudH0uXG4gKlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZGFmZlRyZWVJdGVtXScsXG59KVxuZXhwb3J0IGNsYXNzIERhZmZUcmVlSXRlbURpcmVjdGl2ZSB7XG5cbiAgLyoqXG4gICAqIFRoZSBjc3MgY2xhc3Mgb2YgdGhlIGRhZmYtdHJlZS5cbiAgICpcbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kYWZmLXRyZWUtaXRlbScpIGNsYXNzID0gdHJ1ZTtcblxuICAvKipcbiAgICogVGhlIGNzcyBjbGFzcyBvZiBhIERhZmZUcmVlSXRlbURpcmVjdGl2ZSB0aGF0IGhhcyBjaGlsZHJlbi5cbiAgICpcbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kYWZmLXRyZWUtaXRlbV9fcGFyZW50JykgY2xhc3NQYXJlbnQgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIGh0bWwgYGlkYCBvZiB0aGUgdHJlZSBpdGVtLiBUaGlzIGlzIGRlcml2ZWQgZnJvbSB0aGUge0BsaW5rIERhZmZUcmVlRGF0YX0uXG4gICAqXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIEBIb3N0QmluZGluZygnYXR0ci5pZCcpIGlkO1xuXG4gIC8qKlxuICAgKiBBY2Nlc3NpYmlsaXR5IHByb3BlcnR5LCBub3RpZnlpbmcgdXNlcnMgYWJvdXQgd2hldGhlclxuICAgKiBvciBub3QgdGhlIHRyZWUgaXRlbSBpcyBvcGVuLlxuICAgKlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1leHBhbmRlZCcpIGFyaWFFeHBhbmRlZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNzcyB2YXJpYWJsZSBpbmRpY2F0aW5nIHRoZSBkZXB0aCBvZiB0aGUgdHJlZS5cbiAgICogWW91IGNhbiB1c2UgdGhpcyB0byBzdHlsZSB5b3VyIHRlbXBsYXRlcyBpZiB5b3Ugd2FudCB0b1xuICAgKiB1c2UgZGlmZmVyZW50IGRlc2lnbnMgYXQgZGlmZmVyZW50IGRlcHRocy5cbiAgICovXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS1kZXB0aCcpIGRlcHRoOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3MgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0aGUgdHJlZSBpcyBgc2VsZWN0ZWRgLlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zZWxlY3RlZCcpIGdldCBzZWxlY3RlZENsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkO1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGNsYXNzIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdGhlIHRyZWUgaXMgYG9wZW5gLlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5vcGVuJykgb3BlbkNsYXNzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSB7QGxpbmsgRGFmZlRyZWVGbGF0Tm9kZX0gYXNzb2NpYXRlZCB3aXRoIHRoaXMgc3BlY2lmaWMgdHJlZSBpdGVtLlxuICAgKlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9ub2RlOiBEYWZmVHJlZUZsYXROb2RlO1xuXG4gIC8qKlxuICAgKiBUaGUge0BsaW5rIERhZmZUcmVlRmxhdE5vZGV9IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNwZWNpZmljIHRyZWUgaXRlbS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBub2RlKCkge1xuICAgIHJldHVybiB0aGlzLl9ub2RlO1xuICB9O1xuICBzZXQgbm9kZSh2YWw6IERhZmZUcmVlRmxhdE5vZGUpIHtcbiAgICB0aGlzLl9ub2RlID0gdmFsO1xuICAgIHRoaXMuaWQgPSAndHJlZS0nICsgdGhpcy5fbm9kZS5pZDtcbiAgICB0aGlzLmFyaWFFeHBhbmRlZCA9IHRoaXMuX25vZGUuX3RyZWVSZWYub3BlbiA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gICAgdGhpcy5kZXB0aCA9IHRoaXMuX25vZGUubGV2ZWw7XG4gICAgdGhpcy5jbGFzc1BhcmVudCA9IHRoaXMuX25vZGUuaGFzQ2hpbGRyZW47XG4gICAgdGhpcy5vcGVuQ2xhc3MgPSB0aGlzLl9ub2RlLl90cmVlUmVmLm9wZW47XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIHRyZWUgaXRlbSBpcyB0aGUgY3VycmVudGx5IGFjdGl2ZSBpdGVtLlxuICAgKiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gcmVxdWlyZW1lbnQgdGhlcmUgdGhlcmUgb25seSBiZSBvbmUgYWN0aXZlIGl0ZW0gYXQgYSB0aW1lLlxuICAgKi9cbiAgQElucHV0KCkgc2VsZWN0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnksXG4gICAgcHJpdmF0ZSB0cmVlTm90aWZpZXI6IERhZmZUcmVlTm90aWZpZXJTZXJ2aWNlLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZXNjYXBlJylcbiAgb25Fc2NhcGUoKSB7XG4gICAgdGhpcy50b2dnbGVQYXJlbnQodGhpcy5ub2RlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIG9uQ2xpY2soKSB7XG4gICAgaWYodGhpcy5ub2RlLmhhc0NoaWxkcmVuKSB7XG4gICAgICB0aGlzLnRvZ2dsZVRyZWUodGhpcy5ub2RlKTtcbiAgICB9XG4gICAgdGhpcy50cmVlTm90aWZpZXIubm90aWZ5KCk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlIHRoZSBvcGVuIHN0YXRlIG9mIHRoZSB0cmVlJ3MgcGFyZW50LlxuICAgKi9cbiAgdG9nZ2xlUGFyZW50KG5vZGU6IERhZmZUcmVlRmxhdE5vZGUpIHtcbiAgICBpZihub2RlLl90cmVlUmVmPy5wYXJlbnQucGFyZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbm9kZS5fdHJlZVJlZi5wYXJlbnQub3BlbiA9ICFub2RlLl90cmVlUmVmLnBhcmVudC5vcGVuO1xuICAgICg8RG9jdW1lbnQ+dGhpcy5kb2N1bWVudCkuZ2V0RWxlbWVudEJ5SWQoJ3RyZWUtJyArIG5vZGUuX3RyZWVSZWYucGFyZW50LmlkKS5mb2N1cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB0aGUgb3BlbiBzdGF0ZSBvZiB0aGlzIHNwZWNpZmljIHN1YnRyZWUgdHJlZS5cbiAgICovXG4gIHRvZ2dsZVRyZWUobm9kZTogRGFmZlRyZWVGbGF0Tm9kZSkge1xuICAgIGlmKG5vZGUuX3RyZWVSZWYub3BlbiA9PT0gZmFsc2UpIHtcbiAgICAgIG5vZGUuX3RyZWVSZWYub3BlbiA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUuX3RyZWVSZWYub3BlbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIl19
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
2
|
+
import { NgModule } from '@angular/core';
|
3
|
+
import { DaffTreeItemDirective } from './tree-item/tree-item.directive';
|
4
|
+
import { DaffTreeComponent } from './tree/tree.component';
|
5
|
+
import * as i0 from "@angular/core";
|
6
|
+
export class DaffTreeModule {
|
7
|
+
}
|
8
|
+
/** @nocollapse */ DaffTreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffTreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
9
|
+
/** @nocollapse */ DaffTreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffTreeModule, declarations: [DaffTreeComponent,
|
10
|
+
DaffTreeItemDirective], imports: [CommonModule], exports: [DaffTreeComponent,
|
11
|
+
DaffTreeItemDirective] });
|
12
|
+
/** @nocollapse */ DaffTreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffTreeModule, imports: [[
|
13
|
+
CommonModule,
|
14
|
+
]] });
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffTreeModule, decorators: [{
|
16
|
+
type: NgModule,
|
17
|
+
args: [{
|
18
|
+
declarations: [
|
19
|
+
DaffTreeComponent,
|
20
|
+
DaffTreeItemDirective,
|
21
|
+
],
|
22
|
+
imports: [
|
23
|
+
CommonModule,
|
24
|
+
],
|
25
|
+
exports: [
|
26
|
+
DaffTreeComponent,
|
27
|
+
DaffTreeItemDirective,
|
28
|
+
],
|
29
|
+
}]
|
30
|
+
}] });
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2Rlc2lnbi90cmVlL3NyYy90cmVlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFlMUQsTUFBTSxPQUFPLGNBQWM7OzhIQUFkLGNBQWM7K0hBQWQsY0FBYyxpQkFYdkIsaUJBQWlCO1FBQ2pCLHFCQUFxQixhQUdyQixZQUFZLGFBR1osaUJBQWlCO1FBQ2pCLHFCQUFxQjsrSEFHWixjQUFjLFlBUmhCO1lBQ1AsWUFBWTtTQUNiOzJGQU1VLGNBQWM7a0JBYjFCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLGlCQUFpQjt3QkFDakIscUJBQXFCO3FCQUN0QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsaUJBQWlCO3dCQUNqQixxQkFBcUI7cUJBQ3RCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERhZmZUcmVlSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vdHJlZS1pdGVtL3RyZWUtaXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGFmZlRyZWVDb21wb25lbnQgfSBmcm9tICcuL3RyZWUvdHJlZS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBEYWZmVHJlZUNvbXBvbmVudCxcbiAgICBEYWZmVHJlZUl0ZW1EaXJlY3RpdmUsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBEYWZmVHJlZUNvbXBvbmVudCxcbiAgICBEYWZmVHJlZUl0ZW1EaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERhZmZUcmVlTW9kdWxlIHsgfVxuIl19
|
@@ -0,0 +1,47 @@
|
|
1
|
+
/**
|
2
|
+
* Flatten a DaffTreeUi<unknown> into an array, removing elements from the array
|
3
|
+
* below nodes in the tree that are not open.
|
4
|
+
*/
|
5
|
+
export const flattenTree = (daffUiTree) => {
|
6
|
+
const tree = [];
|
7
|
+
let items = [
|
8
|
+
{
|
9
|
+
...daffUiTree,
|
10
|
+
title: 'Root',
|
11
|
+
level: 0,
|
12
|
+
url: '/',
|
13
|
+
data: undefined,
|
14
|
+
open: true,
|
15
|
+
_treeRef: daffUiTree,
|
16
|
+
},
|
17
|
+
];
|
18
|
+
while (items) {
|
19
|
+
const el = items.pop();
|
20
|
+
if (!el) {
|
21
|
+
break;
|
22
|
+
}
|
23
|
+
if (el.open) {
|
24
|
+
items = [
|
25
|
+
...items,
|
26
|
+
...el.items.map((i) => ({
|
27
|
+
...i,
|
28
|
+
level: el.level + 1,
|
29
|
+
_treeRef: i,
|
30
|
+
})).reverse(),
|
31
|
+
];
|
32
|
+
}
|
33
|
+
if (el._treeRef.parent?.open) {
|
34
|
+
tree.push({
|
35
|
+
id: el.id,
|
36
|
+
title: el.title,
|
37
|
+
level: el.level,
|
38
|
+
url: el.url,
|
39
|
+
hasChildren: el.items.length > 0,
|
40
|
+
data: undefined,
|
41
|
+
_treeRef: el._treeRef,
|
42
|
+
});
|
43
|
+
}
|
44
|
+
}
|
45
|
+
return tree;
|
46
|
+
};
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdHRlbi10cmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ24vdHJlZS9zcmMvdXRpbHMvZmxhdHRlbi10cmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdCQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxVQUErQixFQUFzQixFQUFFO0lBQ2pGLE1BQU0sSUFBSSxHQUF1QixFQUFFLENBQUM7SUFFcEMsSUFBSSxLQUFLLEdBQUc7UUFDVjtZQUNFLEdBQUcsVUFBVTtZQUNiLEtBQUssRUFBRSxNQUFNO1lBQ2IsS0FBSyxFQUFFLENBQUM7WUFDUixHQUFHLEVBQUUsR0FBRztZQUNSLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLElBQUk7WUFDVixRQUFRLEVBQUUsVUFBVTtTQUNyQjtLQUNGLENBQUM7SUFHRixPQUFNLEtBQUssRUFBRTtRQUNYLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFHLENBQUMsRUFBRSxFQUFFO1lBQ04sTUFBTTtTQUNQO1FBRUQsSUFBRyxFQUFFLENBQUMsSUFBSSxFQUFFO1lBQ1YsS0FBSyxHQUFHO2dCQUNOLEdBQUcsS0FBSztnQkFDUixHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUN0QixHQUFHLENBQUM7b0JBQ0osS0FBSyxFQUNMLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQztvQkFDWixRQUFRLEVBQUUsQ0FBQztpQkFDWixDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7YUFDZCxDQUFDO1NBQ0g7UUFFRCxJQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtZQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNSLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtnQkFDVCxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUs7Z0JBQ2YsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLO2dCQUNmLEdBQUcsRUFBRyxFQUFFLENBQUMsR0FBRztnQkFDWixXQUFXLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFDaEMsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRO2FBQ3RCLENBQUMsQ0FBQztTQUNKO0tBQ0Y7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhZmZUcmVlVWkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RyZWUtdWknO1xuXG4vKipcbiAqIEEgZmxhdHRlbmVkIG5vZGUgb2YgYSB0cmVlLiBUaGlzIGlzIHVzZWQgd2hlbiB0cmFuc2xhdGluZyB0aGUgdHJlZSBkYXRhXG4gKiBzdHJ1Y3R1cmUgaW50byBhbiBhcnJheS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYWZmVHJlZUZsYXROb2RlIHtcbiAgaWQ6IG51bWJlciB8IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgdXJsOiBzdHJpbmc7XG4gIGxldmVsOiBudW1iZXI7XG4gIGhhc0NoaWxkcmVuOiBib29sZWFuO1xuICBkYXRhOiB1bmtub3duO1xuICBfdHJlZVJlZjogRGFmZlRyZWVVaTx1bmtub3duPjtcbn1cblxuLyoqXG4gKiBGbGF0dGVuIGEgRGFmZlRyZWVVaTx1bmtub3duPiBpbnRvIGFuIGFycmF5LCByZW1vdmluZyBlbGVtZW50cyBmcm9tIHRoZSBhcnJheVxuICogYmVsb3cgbm9kZXMgaW4gdGhlIHRyZWUgdGhhdCBhcmUgbm90IG9wZW4uXG4gKi9cbmV4cG9ydCBjb25zdCBmbGF0dGVuVHJlZSA9IChkYWZmVWlUcmVlOiBEYWZmVHJlZVVpPHVua25vd24+KTogRGFmZlRyZWVGbGF0Tm9kZVtdID0+ICB7XG4gIGNvbnN0IHRyZWU6IERhZmZUcmVlRmxhdE5vZGVbXSA9IFtdO1xuXG4gIGxldCBpdGVtcyA9IFtcbiAgICB7XG4gICAgICAuLi5kYWZmVWlUcmVlLFxuICAgICAgdGl0bGU6ICdSb290JyxcbiAgICAgIGxldmVsOiAwLFxuICAgICAgdXJsOiAnLycsXG4gICAgICBkYXRhOiB1bmRlZmluZWQsXG4gICAgICBvcGVuOiB0cnVlLFxuICAgICAgX3RyZWVSZWY6IGRhZmZVaVRyZWUsXG4gICAgfSxcbiAgXTtcblxuXG4gIHdoaWxlKGl0ZW1zKSB7XG4gICAgY29uc3QgZWwgPSBpdGVtcy5wb3AoKTtcbiAgICBpZighZWwpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmKGVsLm9wZW4pIHtcbiAgICAgIGl0ZW1zID0gW1xuICAgICAgICAuLi5pdGVtcyxcbiAgICAgICAgLi4uZWwuaXRlbXMubWFwKChpKSA9PiAoe1xuICAgICAgICAgIC4uLmksXG4gICAgICAgICAgbGV2ZWw6XG4gICAgICAgICAgZWwubGV2ZWwgKyAxLFxuICAgICAgICAgIF90cmVlUmVmOiBpLFxuICAgICAgICB9KSkucmV2ZXJzZSgpLFxuICAgICAgXTtcbiAgICB9XG5cbiAgICBpZihlbC5fdHJlZVJlZi5wYXJlbnQ/Lm9wZW4pIHtcbiAgICAgIHRyZWUucHVzaCh7XG4gICAgICAgIGlkOiBlbC5pZCxcbiAgICAgICAgdGl0bGU6IGVsLnRpdGxlLFxuICAgICAgICBsZXZlbDogZWwubGV2ZWwsXG4gICAgICAgIHVybCA6IGVsLnVybCxcbiAgICAgICAgaGFzQ2hpbGRyZW46IGVsLml0ZW1zLmxlbmd0aCA+IDAsXG4gICAgICAgIGRhdGE6IHVuZGVmaW5lZCxcbiAgICAgICAgX3RyZWVSZWY6IGVsLl90cmVlUmVmLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRyZWU7XG59O1xuIl19
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import { traverse } from './traverse-tree';
|
2
|
+
export const daffDataTreeToUiTree = (data, parent, open = false) => ({
|
3
|
+
id: data.id ?? data.title,
|
4
|
+
title: data.title,
|
5
|
+
url: data.url,
|
6
|
+
data: data.data,
|
7
|
+
open,
|
8
|
+
parent,
|
9
|
+
items: [],
|
10
|
+
});
|
11
|
+
/**
|
12
|
+
* This function translates the original data given to us by the client
|
13
|
+
* to the internal representation of the tree used by the {@link DaffTreeComponent}
|
14
|
+
*/
|
15
|
+
export const hydrateTree = (data) => {
|
16
|
+
const tree = daffDataTreeToUiTree(data, undefined, true);
|
17
|
+
let treeStack = [
|
18
|
+
tree,
|
19
|
+
];
|
20
|
+
traverse(data, (el) => {
|
21
|
+
const treeEl = treeStack.pop();
|
22
|
+
treeEl.items = el.items.map((i) => daffDataTreeToUiTree(i, treeEl, false));
|
23
|
+
treeStack = [
|
24
|
+
...treeStack,
|
25
|
+
...treeEl.items,
|
26
|
+
];
|
27
|
+
return el;
|
28
|
+
}, 'items');
|
29
|
+
return tree;
|
30
|
+
};
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHlkcmF0ZS10cmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ24vdHJlZS9zcmMvdXRpbHMvaHlkcmF0ZS10cmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzQyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFJLElBQXFCLEVBQUUsTUFBcUIsRUFBRSxPQUFnQixLQUFLLEVBQWlCLEVBQUUsQ0FBQyxDQUFDO0lBQzlILEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLO0lBQ3pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztJQUNqQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7SUFDYixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7SUFDZixJQUFJO0lBQ0osTUFBTTtJQUNOLEtBQUssRUFBRSxFQUFFO0NBQ1YsQ0FBQyxDQUFDO0FBRUg7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUksSUFBcUIsRUFBaUIsRUFBRTtJQUNyRSxNQUFNLElBQUksR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRXpELElBQUksU0FBUyxHQUFHO1FBQ2QsSUFBSTtLQUNMLENBQUM7SUFFRixRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7UUFDcEIsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFFLG9CQUFvQixDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM1RSxTQUFTLEdBQUc7WUFDVixHQUFHLFNBQVM7WUFDWixHQUFHLE1BQU0sQ0FBQyxLQUFLO1NBQ2hCLENBQUM7UUFDRixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVaLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGFmZlRyZWVEYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90cmVlLWRhdGEnO1xuaW1wb3J0IHsgRGFmZlRyZWVVaSB9IGZyb20gJy4uL2ludGVyZmFjZXMvdHJlZS11aSc7XG5pbXBvcnQgeyB0cmF2ZXJzZSB9IGZyb20gJy4vdHJhdmVyc2UtdHJlZSc7XG5cbmV4cG9ydCBjb25zdCBkYWZmRGF0YVRyZWVUb1VpVHJlZSA9IDxUPihkYXRhOiBEYWZmVHJlZURhdGE8VD4sIHBhcmVudDogRGFmZlRyZWVVaTxUPiwgb3BlbjogYm9vbGVhbiA9IGZhbHNlKTogRGFmZlRyZWVVaTxUPiA9PiAoe1xuICBpZDogZGF0YS5pZCA/PyBkYXRhLnRpdGxlLFxuICB0aXRsZTogZGF0YS50aXRsZSxcbiAgdXJsOiBkYXRhLnVybCxcbiAgZGF0YTogZGF0YS5kYXRhLFxuICBvcGVuLFxuICBwYXJlbnQsXG4gIGl0ZW1zOiBbXSxcbn0pO1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gdHJhbnNsYXRlcyB0aGUgb3JpZ2luYWwgZGF0YSBnaXZlbiB0byB1cyBieSB0aGUgY2xpZW50XG4gKiB0byB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRyZWUgdXNlZCBieSB0aGUge0BsaW5rIERhZmZUcmVlQ29tcG9uZW50fVxuICovXG5leHBvcnQgY29uc3QgaHlkcmF0ZVRyZWUgPSA8VD4oZGF0YTogRGFmZlRyZWVEYXRhPFQ+KTogRGFmZlRyZWVVaTxUPiA9PiB7XG4gIGNvbnN0IHRyZWUgPSBkYWZmRGF0YVRyZWVUb1VpVHJlZShkYXRhLCB1bmRlZmluZWQsIHRydWUpO1xuXG4gIGxldCB0cmVlU3RhY2sgPSBbXG4gICAgdHJlZSxcbiAgXTtcblxuICB0cmF2ZXJzZShkYXRhLCAoZWwpID0+IHtcbiAgICBjb25zdCB0cmVlRWwgPSB0cmVlU3RhY2sucG9wKCk7XG4gICAgdHJlZUVsLml0ZW1zID0gZWwuaXRlbXMubWFwKChpKSA9PiAgZGFmZkRhdGFUcmVlVG9VaVRyZWUoaSwgdHJlZUVsLCBmYWxzZSkpO1xuICAgIHRyZWVTdGFjayA9IFtcbiAgICAgIC4uLnRyZWVTdGFjayxcbiAgICAgIC4uLnRyZWVFbC5pdGVtcyxcbiAgICBdO1xuICAgIHJldHVybiBlbDtcbiAgfSwgJ2l0ZW1zJyk7XG5cbiAgcmV0dXJuIHRyZWU7XG59O1xuIl19
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import { traverse } from './traverse-tree';
|
2
|
+
/**
|
3
|
+
* Transform a tree-like structure in-place into a {@link DaffTreeData}.
|
4
|
+
*
|
5
|
+
* This will mutate the original object, hydrating with additional properties.
|
6
|
+
*
|
7
|
+
* @param tree - The data structure representing tree-like data.
|
8
|
+
* @param transformFn - A user-supplied function that will transform the user
|
9
|
+
* type into a {@link DaffTreeData}
|
10
|
+
* @param key - The property of the your tree that indicates which
|
11
|
+
* key contains the "children" of your tree structure.
|
12
|
+
*
|
13
|
+
*/
|
14
|
+
export const daffTransformTreeInPlace = (tree, transformFn, key) => traverse(tree, (el) => {
|
15
|
+
const r = Object.assign(el, transformFn(el));
|
16
|
+
r.items = el[key];
|
17
|
+
el = r;
|
18
|
+
return el;
|
19
|
+
},
|
20
|
+
// This type is confusing. I don't understand why it has to be here,
|
21
|
+
// the associated error message is incomprehensible.
|
22
|
+
key);
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLWluLXBsYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ24vdHJlZS9zcmMvdXRpbHMvdHJhbnNmb3JtLWluLXBsYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzQzs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBSXRDLElBQU8sRUFDUCxXQUFtRCxFQUNuRCxHQUE4QixFQUNQLEVBQUUsQ0FBQyxRQUFRLENBQ2xDLElBQUksRUFDSixDQUFDLEVBQUUsRUFBRSxFQUFFO0lBQ0wsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEIsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNQLE9BQWtDLEVBQUUsQ0FBQztBQUN2QyxDQUFDO0FBQ0Msb0VBQW9FO0FBQ3BFLG9EQUFvRDtBQUNaLEdBQUcsQ0FDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlY3Vyc2l2ZVRyZWVLZXlPZlR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlY3Vyc2l2ZS1rZXknO1xuaW1wb3J0IHsgRGFmZlRyZWVEYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90cmVlLWRhdGEnO1xuaW1wb3J0IHsgdHJhdmVyc2UgfSBmcm9tICcuL3RyYXZlcnNlLXRyZWUnO1xuXG4vKipcbiAqIFRyYW5zZm9ybSBhIHRyZWUtbGlrZSBzdHJ1Y3R1cmUgaW4tcGxhY2UgaW50byBhIHtAbGluayBEYWZmVHJlZURhdGF9LlxuICpcbiAqIFRoaXMgd2lsbCBtdXRhdGUgdGhlIG9yaWdpbmFsIG9iamVjdCwgaHlkcmF0aW5nIHdpdGggYWRkaXRpb25hbCBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSB0cmVlIC0gVGhlIGRhdGEgc3RydWN0dXJlIHJlcHJlc2VudGluZyB0cmVlLWxpa2UgZGF0YS5cbiAqIEBwYXJhbSB0cmFuc2Zvcm1GbiAtIEEgdXNlci1zdXBwbGllZCBmdW5jdGlvbiB0aGF0IHdpbGwgdHJhbnNmb3JtIHRoZSB1c2VyXG4gKiAgdHlwZSBpbnRvIGEge0BsaW5rIERhZmZUcmVlRGF0YX1cbiAqIEBwYXJhbSBrZXkgLSBUaGUgcHJvcGVydHkgb2YgdGhlIHlvdXIgdHJlZSB0aGF0IGluZGljYXRlcyB3aGljaFxuICogIGtleSBjb250YWlucyB0aGUgXCJjaGlsZHJlblwiIG9mIHlvdXIgdHJlZSBzdHJ1Y3R1cmUuXG4gKlxuICovXG5leHBvcnQgY29uc3QgZGFmZlRyYW5zZm9ybVRyZWVJblBsYWNlID0gPFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICBUIGV4dGVuZHMgUmVjb3JkPGFueSxhbnk+LFxuPihcbiAgdHJlZTogVCxcbiAgdHJhbnNmb3JtRm46ICh0eXBlOiBUKSA9PiBUICYgRGFmZlRyZWVEYXRhPHVua25vd24+LFxuICBrZXk6IFJlY3Vyc2l2ZVRyZWVLZXlPZlR5cGU8VD4sXG4pOiBEYWZmVHJlZURhdGE8dW5rbm93bj4gPT4gdHJhdmVyc2U8VCwgVCAmIERhZmZUcmVlRGF0YTx1bmtub3duPj4oXG4gIHRyZWUsXG4gIChlbCkgPT4ge1xuICAgIGNvbnN0IHIgPSBPYmplY3QuYXNzaWduKGVsLCB0cmFuc2Zvcm1GbihlbCkpO1xuICAgIHIuaXRlbXMgPSBlbFtrZXldO1xuICAgIGVsID0gcjtcbiAgICByZXR1cm4gPFQgJiBEYWZmVHJlZURhdGE8dW5rbm93bj4+ZWw7XG4gIH0sXG4gICAgLy8gVGhpcyB0eXBlIGlzIGNvbmZ1c2luZy4gSSBkb24ndCB1bmRlcnN0YW5kIHdoeSBpdCBoYXMgdG8gYmUgaGVyZSxcbiAgICAvLyB0aGUgYXNzb2NpYXRlZCBlcnJvciBtZXNzYWdlIGlzIGluY29tcHJlaGVuc2libGUuXG4gICAgPFRbc3RyaW5nXSBleHRlbmRzIFRbXSA/IHN0cmluZyA6IG5ldmVyPmtleSxcbik7XG4iXX0=
|
@@ -0,0 +1,21 @@
|
|
1
|
+
/**
|
2
|
+
* Traverse the tree, pre-order, right-to-left
|
3
|
+
*/
|
4
|
+
export const traverse = (tree, visit, key) => {
|
5
|
+
let stack = [
|
6
|
+
tree,
|
7
|
+
];
|
8
|
+
while (stack) {
|
9
|
+
const el = stack.pop();
|
10
|
+
if (!el) {
|
11
|
+
break;
|
12
|
+
}
|
13
|
+
visit(el);
|
14
|
+
stack = [
|
15
|
+
...stack,
|
16
|
+
...el[key],
|
17
|
+
];
|
18
|
+
}
|
19
|
+
return tree;
|
20
|
+
};
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhdmVyc2UtdHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduL3RyZWUvc3JjL3V0aWxzL3RyYXZlcnNlLXRyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FDdEIsSUFBTyxFQUNQLEtBQXFCLEVBQ3JCLEdBQThCLEVBQzNCLEVBQUU7SUFDTCxJQUFJLEtBQUssR0FBRztRQUNWLElBQUk7S0FDTCxDQUFDO0lBRUYsT0FBTSxLQUFLLEVBQUU7UUFDWCxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBRyxDQUFDLEVBQUUsRUFBRTtZQUNOLE1BQU07U0FDUDtRQUVELEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVWLEtBQUssR0FBRztZQUNOLEdBQUcsS0FBSztZQUNSLEdBQWlCLEVBQUUsQ0FBQyxHQUFHLENBQUM7U0FDekIsQ0FBQztLQUNIO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWN1cnNpdmVUcmVlS2V5T2ZUeXBlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZWN1cnNpdmUta2V5JztcblxuLyoqXG4gKiBUcmF2ZXJzZSB0aGUgdHJlZSwgcHJlLW9yZGVyLCByaWdodC10by1sZWZ0XG4gKi9cbmV4cG9ydCBjb25zdCB0cmF2ZXJzZSA9IDxUIGV4dGVuZHMgUmVjb3JkPGFueSwgYW55PiwgViBleHRlbmRzIFJlY29yZDxhbnksIGFueT4gPSBUPihcbiAgdHJlZTogVCxcbiAgdmlzaXQ6ICh0cmVlOiBUKSA9PiBWLFxuICBrZXk6IFJlY3Vyc2l2ZVRyZWVLZXlPZlR5cGU8VD4sXG4pOiBWID0+IHtcbiAgbGV0IHN0YWNrID0gW1xuICAgIHRyZWUsXG4gIF07XG5cbiAgd2hpbGUoc3RhY2spIHtcbiAgICBjb25zdCBlbCA9IHN0YWNrLnBvcCgpO1xuICAgIGlmKCFlbCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdmlzaXQoZWwpO1xuXG4gICAgc3RhY2sgPSBbXG4gICAgICAuLi5zdGFjayxcbiAgICAgIC4uLjxUW10+PHVua25vd24+ZWxba2V5XSxcbiAgICBdO1xuICB9XG5cbiAgcmV0dXJuIHRyZWU7XG59O1xuIl19
|