@cute-widgets/base 20.0.1
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 +1 -0
- package/LICENSE.md +191 -0
- package/README.md +190 -0
- package/abstract/index.d.ts +327 -0
- package/alert/index.d.ts +68 -0
- package/autocomplete/index.d.ts +442 -0
- package/badge/index.d.ts +26 -0
- package/bottom-sheet/index.d.ts +231 -0
- package/button/index.d.ts +182 -0
- package/button-toggle/index.d.ts +225 -0
- package/card/index.d.ts +163 -0
- package/checkbox/index.d.ts +174 -0
- package/chips/index.d.ts +963 -0
- package/collapse/index.d.ts +97 -0
- package/core/animation/index.d.ts +43 -0
- package/core/datetime/index.d.ts +404 -0
- package/core/directives/index.d.ts +168 -0
- package/core/error/index.d.ts +74 -0
- package/core/index.d.ts +1039 -0
- package/core/interfaces/index.d.ts +114 -0
- package/core/layout/index.d.ts +53 -0
- package/core/line/index.d.ts +37 -0
- package/core/nav/index.d.ts +321 -0
- package/core/observers/index.d.ts +124 -0
- package/core/option/index.d.ts +185 -0
- package/core/pipes/index.d.ts +53 -0
- package/core/ripple/index.d.ts +66 -0
- package/core/testing/index.d.ts +154 -0
- package/core/theming/index.d.ts +118 -0
- package/core/types/index.d.ts +53 -0
- package/core/utils/index.d.ts +129 -0
- package/cute-widgets-base-20.0.1.tgz +0 -0
- package/datepicker/index.d.ts +1817 -0
- package/dialog/index.d.ts +484 -0
- package/divider/index.d.ts +24 -0
- package/expansion/README.md +8 -0
- package/expansion/index.d.ts +308 -0
- package/fesm2022/cute-widgets-base-abstract.mjs +547 -0
- package/fesm2022/cute-widgets-base-abstract.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-alert.mjs +198 -0
- package/fesm2022/cute-widgets-base-alert.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-autocomplete.mjs +1217 -0
- package/fesm2022/cute-widgets-base-autocomplete.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-badge.mjs +75 -0
- package/fesm2022/cute-widgets-base-badge.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-bottom-sheet.mjs +416 -0
- package/fesm2022/cute-widgets-base-bottom-sheet.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-button-toggle.mjs +640 -0
- package/fesm2022/cute-widgets-base-button-toggle.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-button.mjs +546 -0
- package/fesm2022/cute-widgets-base-button.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-card.mjs +471 -0
- package/fesm2022/cute-widgets-base-card.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-checkbox.mjs +390 -0
- package/fesm2022/cute-widgets-base-checkbox.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-chips.mjs +2360 -0
- package/fesm2022/cute-widgets-base-chips.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-collapse.mjs +259 -0
- package/fesm2022/cute-widgets-base-collapse.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-animation.mjs +53 -0
- package/fesm2022/cute-widgets-base-core-animation.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-datetime.mjs +568 -0
- package/fesm2022/cute-widgets-base-core-datetime.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-directives.mjs +404 -0
- package/fesm2022/cute-widgets-base-core-directives.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-error.mjs +105 -0
- package/fesm2022/cute-widgets-base-core-error.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-interfaces.mjs +22 -0
- package/fesm2022/cute-widgets-base-core-interfaces.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-layout.mjs +74 -0
- package/fesm2022/cute-widgets-base-core-layout.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-line.mjs +87 -0
- package/fesm2022/cute-widgets-base-core-line.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-nav.mjs +863 -0
- package/fesm2022/cute-widgets-base-core-nav.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-observers.mjs +304 -0
- package/fesm2022/cute-widgets-base-core-observers.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-option.mjs +373 -0
- package/fesm2022/cute-widgets-base-core-option.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-pipes.mjs +97 -0
- package/fesm2022/cute-widgets-base-core-pipes.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-ripple.mjs +172 -0
- package/fesm2022/cute-widgets-base-core-ripple.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-testing.mjs +210 -0
- package/fesm2022/cute-widgets-base-core-testing.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-theming.mjs +314 -0
- package/fesm2022/cute-widgets-base-core-theming.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-types.mjs +22 -0
- package/fesm2022/cute-widgets-base-core-types.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-utils.mjs +257 -0
- package/fesm2022/cute-widgets-base-core-utils.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core.mjs +1600 -0
- package/fesm2022/cute-widgets-base-core.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-datepicker.mjs +4827 -0
- package/fesm2022/cute-widgets-base-datepicker.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-dialog.mjs +1046 -0
- package/fesm2022/cute-widgets-base-dialog.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-divider.mjs +86 -0
- package/fesm2022/cute-widgets-base-divider.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-expansion.mjs +623 -0
- package/fesm2022/cute-widgets-base-expansion.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-form-field.mjs +969 -0
- package/fesm2022/cute-widgets-base-form-field.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-grid-list.mjs +715 -0
- package/fesm2022/cute-widgets-base-grid-list.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-icon.mjs +1105 -0
- package/fesm2022/cute-widgets-base-icon.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-input.mjs +726 -0
- package/fesm2022/cute-widgets-base-input.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-layout-container.mjs +95 -0
- package/fesm2022/cute-widgets-base-layout-container.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-layout-stack.mjs +166 -0
- package/fesm2022/cute-widgets-base-layout-stack.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-layout.mjs +250 -0
- package/fesm2022/cute-widgets-base-layout.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-list.mjs +1557 -0
- package/fesm2022/cute-widgets-base-list.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-menu.mjs +1283 -0
- package/fesm2022/cute-widgets-base-menu.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-navbar.mjs +359 -0
- package/fesm2022/cute-widgets-base-navbar.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-paginator.mjs +485 -0
- package/fesm2022/cute-widgets-base-paginator.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-progress.mjs +321 -0
- package/fesm2022/cute-widgets-base-progress.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-radio.mjs +637 -0
- package/fesm2022/cute-widgets-base-radio.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-select.mjs +1208 -0
- package/fesm2022/cute-widgets-base-select.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-sidenav.mjs +1095 -0
- package/fesm2022/cute-widgets-base-sidenav.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-slider.mjs +99 -0
- package/fesm2022/cute-widgets-base-slider.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-snack-bar.mjs +897 -0
- package/fesm2022/cute-widgets-base-snack-bar.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-sort.mjs +639 -0
- package/fesm2022/cute-widgets-base-sort.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-spinner.mjs +154 -0
- package/fesm2022/cute-widgets-base-spinner.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-stepper.mjs +673 -0
- package/fesm2022/cute-widgets-base-stepper.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-table.mjs +1023 -0
- package/fesm2022/cute-widgets-base-table.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-tabs.mjs +729 -0
- package/fesm2022/cute-widgets-base-tabs.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-timepicker.mjs +965 -0
- package/fesm2022/cute-widgets-base-timepicker.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-toolbar.mjs +120 -0
- package/fesm2022/cute-widgets-base-toolbar.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-tooltip.mjs +947 -0
- package/fesm2022/cute-widgets-base-tooltip.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-tree.mjs +598 -0
- package/fesm2022/cute-widgets-base-tree.mjs.map +1 -0
- package/fesm2022/cute-widgets-base.mjs +68 -0
- package/fesm2022/cute-widgets-base.mjs.map +1 -0
- package/form-field/index.d.ts +401 -0
- package/grid-list/index.d.ts +361 -0
- package/icon/index.d.ts +477 -0
- package/index.d.ts +3 -0
- package/input/index.d.ts +256 -0
- package/layout/container/index.d.ts +31 -0
- package/layout/index.d.ts +78 -0
- package/layout/stack/index.d.ts +52 -0
- package/list/index.d.ts +659 -0
- package/menu/index.d.ts +497 -0
- package/navbar/index.d.ts +91 -0
- package/package.json +279 -0
- package/paginator/index.d.ts +216 -0
- package/progress/index.d.ts +130 -0
- package/radio/index.d.ts +259 -0
- package/select/index.d.ts +426 -0
- package/sidenav/index.d.ts +369 -0
- package/slider/index.d.ts +48 -0
- package/snack-bar/index.d.ts +374 -0
- package/sort/index.d.ts +334 -0
- package/spinner/index.d.ts +70 -0
- package/stepper/index.d.ts +295 -0
- package/table/index.d.ts +395 -0
- package/tabs/index.d.ts +307 -0
- package/timepicker/index.d.ts +350 -0
- package/toolbar/index.d.ts +36 -0
- package/tooltip/index.d.ts +299 -0
- package/tree/index.d.ts +314 -0
|
@@ -0,0 +1,598 @@
|
|
|
1
|
+
import { CdkTreeNode, CdkTreeNodeDef, CdkNestedTreeNode, CDK_TREE_NODE_OUTLET_NODE, CdkTreeNodePadding, CdkTreeNodeOutlet, CdkTree, CdkTreeNodeToggle, CdkTreeModule } from '@angular/cdk/tree';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { inject, HostAttributeToken, booleanAttribute, numberAttribute, Input, Directive, ViewContainerRef, EventEmitter, ViewChild, Output, ChangeDetectionStrategy, ViewEncapsulation, Component, NgModule } from '@angular/core';
|
|
4
|
+
import { Subject, BehaviorSubject, merge } from 'rxjs';
|
|
5
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
|
+
import { DataSource } from '@angular/cdk/collections';
|
|
7
|
+
import { take, map } from 'rxjs/operators';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @license Apache-2.0
|
|
11
|
+
*
|
|
12
|
+
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
13
|
+
*
|
|
14
|
+
* You may not use this file except in compliance with the License
|
|
15
|
+
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
+
*
|
|
17
|
+
* This code is a modification of the `@angular/material` original
|
|
18
|
+
* code licensed under MIT-style License (https://angular.dev/license).
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Determine if argument TreeKeyManager is the NoopTreeKeyManager. This function is safe to use with SSR.
|
|
22
|
+
*/
|
|
23
|
+
function isNoopTreeKeyManager(keyManager) {
|
|
24
|
+
return !!keyManager._isNoopTreeKeyManager;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Wrapper for the CdkTree node with CuteWidget's design styles.
|
|
28
|
+
*/
|
|
29
|
+
class CuteTreeNode extends CdkTreeNode {
|
|
30
|
+
/**
|
|
31
|
+
* The tabindex of the tree node.
|
|
32
|
+
*
|
|
33
|
+
* @deprecated By default CuteTreeNode manages focus using TreeKeyManager instead of tabIndex.
|
|
34
|
+
* Recommend to avoid setting tabIndex directly to prevent TreeKeyManager from getting into
|
|
35
|
+
* an unexpected state. Tabindex to be removed in a future version.
|
|
36
|
+
* @breaking-change 21.0.0 Remove this attribute.
|
|
37
|
+
*/
|
|
38
|
+
get tabIndexInputBinding() { return this._tabIndexInputBinding; }
|
|
39
|
+
set tabIndexInputBinding(value) {
|
|
40
|
+
// If the specified tabIndex value is null or undefined, fall back to the default value.
|
|
41
|
+
this._tabIndexInputBinding = value;
|
|
42
|
+
}
|
|
43
|
+
_getTabindexAttribute() {
|
|
44
|
+
if (isNoopTreeKeyManager(this._tree._keyManager)) {
|
|
45
|
+
return this.tabIndexInputBinding;
|
|
46
|
+
}
|
|
47
|
+
return this._tabindex;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Whether the component is disabled.
|
|
51
|
+
*
|
|
52
|
+
* @deprecated This is an alias for `isDisabled`.
|
|
53
|
+
* @breaking-change 21.0.0 Remove this input
|
|
54
|
+
*/
|
|
55
|
+
get disabled() { return this.isDisabled; }
|
|
56
|
+
set disabled(value) { this.isDisabled = value; }
|
|
57
|
+
constructor() {
|
|
58
|
+
super();
|
|
59
|
+
this._tabIndexInputBinding = 0;
|
|
60
|
+
/**
|
|
61
|
+
* The default tabindex of the tree node.
|
|
62
|
+
*
|
|
63
|
+
* @deprecated By default CuteTreeNode manages focus using TreeKeyManager instead of tabIndex.
|
|
64
|
+
* Recommend to avoid setting tabIndex directly to prevent TreeKeyManager form getting into
|
|
65
|
+
* an unexpected state. Tabindex to be removed in a future version.
|
|
66
|
+
* @breaking-change 21.0.0 Remove this attribute.
|
|
67
|
+
*/
|
|
68
|
+
this.defaultTabIndex = 0;
|
|
69
|
+
const tabIndex = inject(new HostAttributeToken('tabindex'), { optional: true });
|
|
70
|
+
this.tabIndexInputBinding = Number(tabIndex) || this.defaultTabIndex;
|
|
71
|
+
}
|
|
72
|
+
// This is a workaround for https://github.com/angular/angular/issues/23091
|
|
73
|
+
// In aot mode, the lifecycle hooks from parent class are not called.
|
|
74
|
+
ngOnInit() {
|
|
75
|
+
super.ngOnInit();
|
|
76
|
+
}
|
|
77
|
+
ngOnDestroy() {
|
|
78
|
+
super.ngOnDestroy();
|
|
79
|
+
}
|
|
80
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteTreeNode, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
81
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "20.3.15", type: CuteTreeNode, isStandalone: true, selector: "cute-tree-node", inputs: { cdkTreeNodeTypeaheadLabel: ["cuteTreeNodeTypeaheadLabel", "cdkTreeNodeTypeaheadLabel"], tabIndexInputBinding: ["tabIndex", "tabIndexInputBinding", (value) => (value == null ? 0 : numberAttribute(value))], disabled: ["disabled", "disabled", booleanAttribute] }, outputs: { activation: "activation", expandedChange: "expandedChange" }, host: { listeners: { "click": "_focusItem()" }, properties: { "attr.aria-expanded": "_getAriaExpanded()", "attr.aria-level": "level + 1", "attr.aria-posinset": "_getPositionInSet()", "attr.aria-setsize": "_getSetSize()", "tabindex": "_getTabindexAttribute()" }, classAttribute: "cute-tree-node" }, providers: [{ provide: CdkTreeNode, useExisting: CuteTreeNode }], exportAs: ["cuteTreeNode"], usesInheritance: true, ngImport: i0 }); }
|
|
82
|
+
}
|
|
83
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteTreeNode, decorators: [{
|
|
84
|
+
type: Directive,
|
|
85
|
+
args: [{
|
|
86
|
+
selector: 'cute-tree-node',
|
|
87
|
+
exportAs: 'cuteTreeNode',
|
|
88
|
+
inputs: ['cdkTreeNodeTypeaheadLabel: cuteTreeNodeTypeaheadLabel'],
|
|
89
|
+
outputs: ['activation', 'expandedChange'],
|
|
90
|
+
providers: [{ provide: CdkTreeNode, useExisting: CuteTreeNode }],
|
|
91
|
+
host: {
|
|
92
|
+
'class': 'cute-tree-node',
|
|
93
|
+
'[attr.aria-expanded]': '_getAriaExpanded()',
|
|
94
|
+
'[attr.aria-level]': 'level + 1',
|
|
95
|
+
'[attr.aria-posinset]': '_getPositionInSet()',
|
|
96
|
+
'[attr.aria-setsize]': '_getSetSize()',
|
|
97
|
+
'(click)': '_focusItem()',
|
|
98
|
+
'[tabindex]': '_getTabindexAttribute()',
|
|
99
|
+
},
|
|
100
|
+
standalone: true,
|
|
101
|
+
}]
|
|
102
|
+
}], ctorParameters: () => [], propDecorators: { tabIndexInputBinding: [{
|
|
103
|
+
type: Input,
|
|
104
|
+
args: [{
|
|
105
|
+
transform: (value) => (value == null ? 0 : numberAttribute(value)),
|
|
106
|
+
alias: 'tabIndex',
|
|
107
|
+
}]
|
|
108
|
+
}], disabled: [{
|
|
109
|
+
type: Input,
|
|
110
|
+
args: [{ transform: booleanAttribute }]
|
|
111
|
+
}] } });
|
|
112
|
+
/**
|
|
113
|
+
* Wrapper for the CdkTree node definition with CuteWidgets' design styles.
|
|
114
|
+
* Captures the node's template and a `when` predicate that describes when this node should be used.
|
|
115
|
+
*/
|
|
116
|
+
class CuteTreeNodeDef extends CdkTreeNodeDef {
|
|
117
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteTreeNodeDef, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
118
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteTreeNodeDef, isStandalone: true, selector: "[cuteTreeNodeDef]", inputs: { when: ["cuteTreeNodeDefWhen", "when"], data: ["cuteTreeNode", "data"] }, providers: [{ provide: CdkTreeNodeDef, useExisting: CuteTreeNodeDef }], usesInheritance: true, ngImport: i0 }); }
|
|
119
|
+
}
|
|
120
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteTreeNodeDef, decorators: [{
|
|
121
|
+
type: Directive,
|
|
122
|
+
args: [{
|
|
123
|
+
selector: '[cuteTreeNodeDef]',
|
|
124
|
+
inputs: ['when: cuteTreeNodeDefWhen'],
|
|
125
|
+
providers: [{ provide: CdkTreeNodeDef, useExisting: CuteTreeNodeDef }],
|
|
126
|
+
standalone: true,
|
|
127
|
+
}]
|
|
128
|
+
}], propDecorators: { data: [{
|
|
129
|
+
type: Input,
|
|
130
|
+
args: ['cuteTreeNode']
|
|
131
|
+
}] } });
|
|
132
|
+
/**
|
|
133
|
+
* Wrapper for the CdkTree nested node with CuteWidgets' design styles.
|
|
134
|
+
*/
|
|
135
|
+
class CuteNestedTreeNode extends CdkNestedTreeNode {
|
|
136
|
+
constructor() {
|
|
137
|
+
super(...arguments);
|
|
138
|
+
this._tabIndex = 0;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Whether the node is disabled.
|
|
142
|
+
*
|
|
143
|
+
* @deprecated This is an alias for `isDisabled`.
|
|
144
|
+
* @breaking-change 21.0.0 Remove this input
|
|
145
|
+
*/
|
|
146
|
+
get disabled() { return this.isDisabled; }
|
|
147
|
+
set disabled(value) { this.isDisabled = value; }
|
|
148
|
+
/** Tabindex of the node. */
|
|
149
|
+
get tabIndex() { return this.isDisabled ? -1 : this._tabIndex; }
|
|
150
|
+
set tabIndex(value) {
|
|
151
|
+
// If the specified tabIndex value is null or undefined, fall back to the default value.
|
|
152
|
+
this._tabIndex = value;
|
|
153
|
+
}
|
|
154
|
+
// This is a workaround for https://github.com/angular/angular/issues/19145
|
|
155
|
+
// In aot mode, the lifecycle hooks from parent class are not called.
|
|
156
|
+
// TODO(tinayuangao): Remove when the angular issue #19145 is fixed
|
|
157
|
+
ngOnInit() {
|
|
158
|
+
super.ngOnInit();
|
|
159
|
+
}
|
|
160
|
+
ngAfterContentInit() {
|
|
161
|
+
super.ngAfterContentInit();
|
|
162
|
+
}
|
|
163
|
+
ngOnDestroy() {
|
|
164
|
+
super.ngOnDestroy();
|
|
165
|
+
}
|
|
166
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteNestedTreeNode, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
167
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "20.3.15", type: CuteNestedTreeNode, isStandalone: true, selector: "cute-nested-tree-node", inputs: { node: ["cuteNestedTreeNode", "node"], disabled: ["disabled", "disabled", booleanAttribute], tabIndex: ["tabIndex", "tabIndex", (value) => (value == null ? 0 : numberAttribute(value))] }, outputs: { activation: "activation", expandedChange: "expandedChange" }, host: { classAttribute: "cute-nested-tree-node" }, providers: [
|
|
168
|
+
{ provide: CdkNestedTreeNode, useExisting: CuteNestedTreeNode },
|
|
169
|
+
{ provide: CdkTreeNode, useExisting: CuteNestedTreeNode },
|
|
170
|
+
{ provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: CuteNestedTreeNode },
|
|
171
|
+
], exportAs: ["cuteNestedTreeNode"], usesInheritance: true, ngImport: i0 }); }
|
|
172
|
+
}
|
|
173
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteNestedTreeNode, decorators: [{
|
|
174
|
+
type: Directive,
|
|
175
|
+
args: [{
|
|
176
|
+
selector: 'cute-nested-tree-node',
|
|
177
|
+
exportAs: 'cuteNestedTreeNode',
|
|
178
|
+
outputs: ['activation', 'expandedChange'],
|
|
179
|
+
providers: [
|
|
180
|
+
{ provide: CdkNestedTreeNode, useExisting: CuteNestedTreeNode },
|
|
181
|
+
{ provide: CdkTreeNode, useExisting: CuteNestedTreeNode },
|
|
182
|
+
{ provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: CuteNestedTreeNode },
|
|
183
|
+
],
|
|
184
|
+
host: {
|
|
185
|
+
'class': 'cute-nested-tree-node',
|
|
186
|
+
},
|
|
187
|
+
standalone: true,
|
|
188
|
+
}]
|
|
189
|
+
}], propDecorators: { node: [{
|
|
190
|
+
type: Input,
|
|
191
|
+
args: ['cuteNestedTreeNode']
|
|
192
|
+
}], disabled: [{
|
|
193
|
+
type: Input,
|
|
194
|
+
args: [{ transform: booleanAttribute }]
|
|
195
|
+
}], tabIndex: [{
|
|
196
|
+
type: Input,
|
|
197
|
+
args: [{
|
|
198
|
+
transform: (value) => (value == null ? 0 : numberAttribute(value)),
|
|
199
|
+
}]
|
|
200
|
+
}] } });
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* @license Apache-2.0
|
|
204
|
+
*
|
|
205
|
+
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
206
|
+
*
|
|
207
|
+
* You may not use this file except in compliance with the License
|
|
208
|
+
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
209
|
+
*
|
|
210
|
+
* This code is a modification of the `@angular/material` original
|
|
211
|
+
* code licensed under MIT-style License (https://angular.dev/license).
|
|
212
|
+
*/
|
|
213
|
+
/**
|
|
214
|
+
* Wrapper for the CdkTree padding with **CuteWidgets** design styles.
|
|
215
|
+
*/
|
|
216
|
+
class CuteTreeNodePadding extends CdkTreeNodePadding {
|
|
217
|
+
/** The level of depth of the tree node. The padding will be `level * indent` pixels. */
|
|
218
|
+
get level() { return this._level; }
|
|
219
|
+
set level(value) { this._setLevelInput(value); }
|
|
220
|
+
/** The indent for each level. Default number 40px from material design menu submenu spec. */
|
|
221
|
+
get indent() { return this._indent; }
|
|
222
|
+
set indent(indent) { this._setIndentInput(indent); }
|
|
223
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteTreeNodePadding, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
224
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "20.3.15", type: CuteTreeNodePadding, isStandalone: true, selector: "[cuteTreeNodePadding]", inputs: { level: ["cuteTreeNodePadding", "level", numberAttribute], indent: ["cuteTreeNodePaddingIndent", "indent"] }, providers: [{ provide: CdkTreeNodePadding, useExisting: CuteTreeNodePadding }], usesInheritance: true, ngImport: i0 }); }
|
|
225
|
+
}
|
|
226
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteTreeNodePadding, decorators: [{
|
|
227
|
+
type: Directive,
|
|
228
|
+
args: [{
|
|
229
|
+
selector: '[cuteTreeNodePadding]',
|
|
230
|
+
providers: [{ provide: CdkTreeNodePadding, useExisting: CuteTreeNodePadding }],
|
|
231
|
+
standalone: true,
|
|
232
|
+
}]
|
|
233
|
+
}], propDecorators: { level: [{
|
|
234
|
+
type: Input,
|
|
235
|
+
args: [{ alias: 'cuteTreeNodePadding', transform: numberAttribute }]
|
|
236
|
+
}], indent: [{
|
|
237
|
+
type: Input,
|
|
238
|
+
args: ['cuteTreeNodePaddingIndent']
|
|
239
|
+
}] } });
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* @license Apache-2.0
|
|
243
|
+
*
|
|
244
|
+
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
245
|
+
*
|
|
246
|
+
* You may not use this file except in compliance with the License
|
|
247
|
+
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
248
|
+
*
|
|
249
|
+
* This code is a modification of the `@angular/material` original
|
|
250
|
+
* code licensed under MIT-style License (https://angular.dev/license).
|
|
251
|
+
*/
|
|
252
|
+
/**
|
|
253
|
+
* Outlet for nested CdkNode. Put `[cuteTreeNodeOutlet]` on a tag to place children dataNodes
|
|
254
|
+
* inside the outlet.
|
|
255
|
+
*/
|
|
256
|
+
class CuteTreeNodeOutlet {
|
|
257
|
+
constructor() {
|
|
258
|
+
this.viewContainer = inject(ViewContainerRef);
|
|
259
|
+
this._node = inject(CDK_TREE_NODE_OUTLET_NODE, { optional: true });
|
|
260
|
+
}
|
|
261
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteTreeNodeOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
262
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteTreeNodeOutlet, isStandalone: true, selector: "[cuteTreeNodeOutlet]", providers: [
|
|
263
|
+
{
|
|
264
|
+
provide: CdkTreeNodeOutlet,
|
|
265
|
+
useExisting: CuteTreeNodeOutlet,
|
|
266
|
+
},
|
|
267
|
+
], ngImport: i0 }); }
|
|
268
|
+
}
|
|
269
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteTreeNodeOutlet, decorators: [{
|
|
270
|
+
type: Directive,
|
|
271
|
+
args: [{
|
|
272
|
+
selector: '[cuteTreeNodeOutlet]',
|
|
273
|
+
providers: [
|
|
274
|
+
{
|
|
275
|
+
provide: CdkTreeNodeOutlet,
|
|
276
|
+
useExisting: CuteTreeNodeOutlet,
|
|
277
|
+
},
|
|
278
|
+
],
|
|
279
|
+
standalone: true,
|
|
280
|
+
}]
|
|
281
|
+
}] });
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* @license Apache-2.0
|
|
285
|
+
*
|
|
286
|
+
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
287
|
+
*
|
|
288
|
+
* You may not use this file except in compliance with the License
|
|
289
|
+
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
290
|
+
*
|
|
291
|
+
* This code is a modification of the `@angular/material` original
|
|
292
|
+
* code licensed under MIT-style License (https://angular.dev/license).
|
|
293
|
+
*/
|
|
294
|
+
/**
|
|
295
|
+
* Wrapper for the CdkTable with **CuteWidgets** design styles.
|
|
296
|
+
*/
|
|
297
|
+
class CuteTree extends CdkTree {
|
|
298
|
+
constructor() {
|
|
299
|
+
super();
|
|
300
|
+
this._renderChanges = new Subject();
|
|
301
|
+
/** Event emitted on each change in the rendered data. */
|
|
302
|
+
this.renderNodesChange = new EventEmitter();
|
|
303
|
+
// Outlets within the tree's template where the dataNodes will be inserted.
|
|
304
|
+
// We need an initializer here to avoid a TS error. The value will be set in `ngAfterViewInit`.
|
|
305
|
+
this._nodeOutlet = undefined;
|
|
306
|
+
this._renderChanges
|
|
307
|
+
.pipe(takeUntilDestroyed())
|
|
308
|
+
.subscribe(nodes => this.renderNodesChange.emit(nodes));
|
|
309
|
+
}
|
|
310
|
+
renderNodeChanges(data) {
|
|
311
|
+
// We generate an event before calling the ancestor, otherwise
|
|
312
|
+
// the content of `data` array will not be correct !!!???
|
|
313
|
+
this._renderChanges.next(data);
|
|
314
|
+
super.renderNodeChanges(data);
|
|
315
|
+
}
|
|
316
|
+
ngOnDestroy() {
|
|
317
|
+
super.ngOnDestroy();
|
|
318
|
+
this._renderChanges.complete();
|
|
319
|
+
}
|
|
320
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteTree, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
321
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: CuteTree, isStandalone: true, selector: "cute-tree", outputs: { renderNodesChange: "renderNodesChange" }, host: { attributes: { "role": "tree" }, classAttribute: "cute-tree" }, providers: [{ provide: CdkTree, useExisting: CuteTree }], viewQueries: [{ propertyName: "_nodeOutlet", first: true, predicate: CuteTreeNodeOutlet, descendants: true, static: true }], exportAs: ["cuteTree"], usesInheritance: true, ngImport: i0, template: `<ng-container cuteTreeNodeOutlet></ng-container>`, isInline: true, styles: [".cute-tree{display:block}.cute-tree-node:is([cuteTreeNodeToggle]),.cute-nested-tree-node:is([cuteTreeNodeToggle]){cursor:pointer}.cute-tree-node{display:flex;align-items:center;flex:1;word-wrap:break-word}.cute-nested-tree-node{display:flex;align-items:center;flex:1;word-wrap:break-word;border-bottom-width:0}\n"], dependencies: [{ kind: "directive", type: CuteTreeNodeOutlet, selector: "[cuteTreeNodeOutlet]" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
|
|
322
|
+
}
|
|
323
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteTree, decorators: [{
|
|
324
|
+
type: Component,
|
|
325
|
+
args: [{ selector: 'cute-tree', exportAs: 'cuteTree', template: `<ng-container cuteTreeNodeOutlet></ng-container>`, host: {
|
|
326
|
+
'class': 'cute-tree',
|
|
327
|
+
'role': 'tree',
|
|
328
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, providers: [{ provide: CdkTree, useExisting: CuteTree }], imports: [CuteTreeNodeOutlet], styles: [".cute-tree{display:block}.cute-tree-node:is([cuteTreeNodeToggle]),.cute-nested-tree-node:is([cuteTreeNodeToggle]){cursor:pointer}.cute-tree-node{display:flex;align-items:center;flex:1;word-wrap:break-word}.cute-nested-tree-node{display:flex;align-items:center;flex:1;word-wrap:break-word;border-bottom-width:0}\n"] }]
|
|
329
|
+
}], ctorParameters: () => [], propDecorators: { renderNodesChange: [{
|
|
330
|
+
type: Output
|
|
331
|
+
}], _nodeOutlet: [{
|
|
332
|
+
type: ViewChild,
|
|
333
|
+
args: [CuteTreeNodeOutlet, { static: true }]
|
|
334
|
+
}] } });
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* @license Apache-2.0
|
|
338
|
+
*
|
|
339
|
+
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
340
|
+
*
|
|
341
|
+
* You may not use this file except in compliance with the License
|
|
342
|
+
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
343
|
+
*
|
|
344
|
+
* This code is a modification of the `@angular/material` original
|
|
345
|
+
* code licensed under MIT-style License (https://angular.dev/license).
|
|
346
|
+
*/
|
|
347
|
+
/**
|
|
348
|
+
* Wrapper for the CdkTree's toggle with **CuteWidgets** design styles.
|
|
349
|
+
*/
|
|
350
|
+
class CuteTreeNodeToggle extends CdkTreeNodeToggle {
|
|
351
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteTreeNodeToggle, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
352
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteTreeNodeToggle, isStandalone: true, selector: "[cuteTreeNodeToggle]", inputs: { recursive: ["cuteTreeNodeToggleRecursive", "recursive"] }, providers: [{ provide: CdkTreeNodeToggle, useExisting: CuteTreeNodeToggle }], usesInheritance: true, ngImport: i0 }); }
|
|
353
|
+
}
|
|
354
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteTreeNodeToggle, decorators: [{
|
|
355
|
+
type: Directive,
|
|
356
|
+
args: [{
|
|
357
|
+
selector: '[cuteTreeNodeToggle]',
|
|
358
|
+
providers: [{ provide: CdkTreeNodeToggle, useExisting: CuteTreeNodeToggle }],
|
|
359
|
+
inputs: ['recursive: cuteTreeNodeToggleRecursive'],
|
|
360
|
+
standalone: true,
|
|
361
|
+
}]
|
|
362
|
+
}] });
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* @license Apache-2.0
|
|
366
|
+
*
|
|
367
|
+
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
368
|
+
*
|
|
369
|
+
* You may not use this file except in compliance with the License
|
|
370
|
+
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
371
|
+
*
|
|
372
|
+
* This code is a modification of the `@angular/material` original
|
|
373
|
+
* code licensed under MIT-style License (https://angular.dev/license).
|
|
374
|
+
*/
|
|
375
|
+
/**
|
|
376
|
+
* Tree flattener to convert a normal type of node to node with children & level information.
|
|
377
|
+
* Transform nested nodes of type `T` to flattened nodes of type `F`.
|
|
378
|
+
*
|
|
379
|
+
* For example, the input data of type `T` is nested, and contains its children data:
|
|
380
|
+
* SomeNode: {
|
|
381
|
+
* key: 'Fruits',
|
|
382
|
+
* children: [
|
|
383
|
+
* NodeOne: {
|
|
384
|
+
* key: 'Apple',
|
|
385
|
+
* },
|
|
386
|
+
* NodeTwo: {
|
|
387
|
+
* key: 'Pear',
|
|
388
|
+
* }
|
|
389
|
+
* ]
|
|
390
|
+
* }
|
|
391
|
+
* After flattener flatten the tree, the structure will become
|
|
392
|
+
* SomeNode: {
|
|
393
|
+
* key: 'Fruits',
|
|
394
|
+
* expandable: true,
|
|
395
|
+
* level: 1
|
|
396
|
+
* },
|
|
397
|
+
* NodeOne: {
|
|
398
|
+
* key: 'Apple',
|
|
399
|
+
* expandable: false,
|
|
400
|
+
* level: 2
|
|
401
|
+
* },
|
|
402
|
+
* NodeTwo: {
|
|
403
|
+
* key: 'Pear',
|
|
404
|
+
* expandable: false,
|
|
405
|
+
* level: 2
|
|
406
|
+
* }
|
|
407
|
+
* and the output flattened type is `F` with additional information.
|
|
408
|
+
*/
|
|
409
|
+
class CuteTreeFlattener {
|
|
410
|
+
constructor(transformFunction, getLevel, isExpandable, getChildren) {
|
|
411
|
+
this.transformFunction = transformFunction;
|
|
412
|
+
this.getLevel = getLevel;
|
|
413
|
+
this.isExpandable = isExpandable;
|
|
414
|
+
this.getChildren = getChildren;
|
|
415
|
+
}
|
|
416
|
+
_flattenNode(node, level, resultNodes, parentMap) {
|
|
417
|
+
const flatNode = this.transformFunction(node, level);
|
|
418
|
+
resultNodes.push(flatNode);
|
|
419
|
+
if (this.isExpandable(flatNode)) {
|
|
420
|
+
const childrenNodes = this.getChildren(node);
|
|
421
|
+
if (childrenNodes) {
|
|
422
|
+
if (Array.isArray(childrenNodes)) {
|
|
423
|
+
this._flattenChildren(childrenNodes, level, resultNodes, parentMap);
|
|
424
|
+
}
|
|
425
|
+
else {
|
|
426
|
+
childrenNodes.pipe(take(1)).subscribe(children => {
|
|
427
|
+
this._flattenChildren(children, level, resultNodes, parentMap);
|
|
428
|
+
});
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
return resultNodes;
|
|
433
|
+
}
|
|
434
|
+
_flattenChildren(children, level, resultNodes, parentMap) {
|
|
435
|
+
children.forEach((child, index) => {
|
|
436
|
+
let childParentMap = parentMap.slice();
|
|
437
|
+
childParentMap.push(index != children.length - 1);
|
|
438
|
+
this._flattenNode(child, level + 1, resultNodes, childParentMap);
|
|
439
|
+
});
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Flatten a list of node type T to a flattened version of node F.
|
|
443
|
+
* Please note that type T may be nested, and the length of `structuredData` may be different
|
|
444
|
+
* from that of a returned list `F[]`.
|
|
445
|
+
*/
|
|
446
|
+
flattenNodes(structuredData) {
|
|
447
|
+
let resultNodes = [];
|
|
448
|
+
structuredData.forEach(node => this._flattenNode(node, 0, resultNodes, []));
|
|
449
|
+
return resultNodes;
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Expand flattened node with current expansion status.
|
|
453
|
+
* The returned list may have different length.
|
|
454
|
+
*/
|
|
455
|
+
expandFlattenedNodes(nodes, treeControl) {
|
|
456
|
+
let results = [];
|
|
457
|
+
let currentExpand = [];
|
|
458
|
+
currentExpand[0] = true;
|
|
459
|
+
nodes.forEach(node => {
|
|
460
|
+
let expand = true;
|
|
461
|
+
for (let i = 0; i <= this.getLevel(node); i++) {
|
|
462
|
+
expand = expand && currentExpand[i];
|
|
463
|
+
}
|
|
464
|
+
if (expand) {
|
|
465
|
+
results.push(node);
|
|
466
|
+
}
|
|
467
|
+
if (this.isExpandable(node)) {
|
|
468
|
+
currentExpand[this.getLevel(node) + 1] = treeControl.isExpanded(node);
|
|
469
|
+
}
|
|
470
|
+
});
|
|
471
|
+
return results;
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
/**
|
|
475
|
+
* Data source for a flat tree.
|
|
476
|
+
* The data source needs to handle expansion/collapsion of the tree node and change the data feed
|
|
477
|
+
* to `CuteTree`.
|
|
478
|
+
* The nested tree nodes of type `T` are flattened through `CuteTreeFlattener`, and converted
|
|
479
|
+
* to type `F` for `CuteTree` to consume.
|
|
480
|
+
*/
|
|
481
|
+
class CuteTreeFlatDataSource extends DataSource {
|
|
482
|
+
get data() {
|
|
483
|
+
return this._data.value;
|
|
484
|
+
}
|
|
485
|
+
set data(value) {
|
|
486
|
+
this._data.next(value);
|
|
487
|
+
this._flattenedData.next(this._treeFlattener.flattenNodes(this.data));
|
|
488
|
+
this._treeControl.dataNodes = this._flattenedData.value;
|
|
489
|
+
}
|
|
490
|
+
constructor(_treeControl, _treeFlattener, initialData) {
|
|
491
|
+
super();
|
|
492
|
+
this._treeControl = _treeControl;
|
|
493
|
+
this._treeFlattener = _treeFlattener;
|
|
494
|
+
this._flattenedData = new BehaviorSubject([]);
|
|
495
|
+
this._expandedData = new BehaviorSubject([]);
|
|
496
|
+
this._data = new BehaviorSubject([]);
|
|
497
|
+
if (initialData) {
|
|
498
|
+
// Assign the data through the constructor to ensure that all of the logic is executed.
|
|
499
|
+
this.data = initialData;
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
connect(collectionViewer) {
|
|
503
|
+
return merge(collectionViewer.viewChange, this._treeControl.expansionModel.changed, this._flattenedData).pipe(map(() => {
|
|
504
|
+
this._expandedData.next(this._treeFlattener.expandFlattenedNodes(this._flattenedData.value, this._treeControl));
|
|
505
|
+
return this._expandedData.value;
|
|
506
|
+
}));
|
|
507
|
+
}
|
|
508
|
+
disconnect() {
|
|
509
|
+
// no op
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
/**
|
|
514
|
+
* @license Apache-2.0
|
|
515
|
+
*
|
|
516
|
+
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
517
|
+
*
|
|
518
|
+
* You may not use this file except in compliance with the License
|
|
519
|
+
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
520
|
+
*
|
|
521
|
+
* This code is a modification of the `@angular/material` original
|
|
522
|
+
* code licensed under MIT-style License (https://angular.dev/license).
|
|
523
|
+
*/
|
|
524
|
+
/**
|
|
525
|
+
* Data source for a nested tree.
|
|
526
|
+
*
|
|
527
|
+
* The data source for a nested tree doesn't have to consider node flattener, or the way to expand
|
|
528
|
+
* or collapse. The expansion/collapsion will be handled by TreeControl and each non-leaf node.
|
|
529
|
+
*/
|
|
530
|
+
class CuteTreeNestedDataSource extends DataSource {
|
|
531
|
+
constructor() {
|
|
532
|
+
super(...arguments);
|
|
533
|
+
this._data = new BehaviorSubject([]);
|
|
534
|
+
}
|
|
535
|
+
/**
|
|
536
|
+
* Data for the nested tree
|
|
537
|
+
*/
|
|
538
|
+
get data() { return this._data.value; }
|
|
539
|
+
set data(value) {
|
|
540
|
+
this._data.next(value);
|
|
541
|
+
}
|
|
542
|
+
connect(collectionViewer) {
|
|
543
|
+
return merge(...[collectionViewer.viewChange, this._data]).pipe(map(() => this.data));
|
|
544
|
+
}
|
|
545
|
+
disconnect() {
|
|
546
|
+
// no op
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
/**
|
|
551
|
+
* @license Apache-2.0
|
|
552
|
+
*
|
|
553
|
+
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
554
|
+
*
|
|
555
|
+
* You may not use this file except in compliance with the License
|
|
556
|
+
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
557
|
+
*/
|
|
558
|
+
const TYPES = [
|
|
559
|
+
CuteNestedTreeNode,
|
|
560
|
+
CuteTreeNodeDef,
|
|
561
|
+
CuteTreeNodePadding,
|
|
562
|
+
CuteTreeNodeToggle,
|
|
563
|
+
CuteTree,
|
|
564
|
+
CuteTreeNode,
|
|
565
|
+
CuteTreeNodeOutlet,
|
|
566
|
+
];
|
|
567
|
+
class CuteTreeModule {
|
|
568
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteTreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
569
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: CuteTreeModule, imports: [CdkTreeModule, CuteNestedTreeNode,
|
|
570
|
+
CuteTreeNodeDef,
|
|
571
|
+
CuteTreeNodePadding,
|
|
572
|
+
CuteTreeNodeToggle,
|
|
573
|
+
CuteTree,
|
|
574
|
+
CuteTreeNode,
|
|
575
|
+
CuteTreeNodeOutlet], exports: [CuteNestedTreeNode,
|
|
576
|
+
CuteTreeNodeDef,
|
|
577
|
+
CuteTreeNodePadding,
|
|
578
|
+
CuteTreeNodeToggle,
|
|
579
|
+
CuteTree,
|
|
580
|
+
CuteTreeNode,
|
|
581
|
+
CuteTreeNodeOutlet] }); }
|
|
582
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteTreeModule, imports: [CdkTreeModule] }); }
|
|
583
|
+
}
|
|
584
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteTreeModule, decorators: [{
|
|
585
|
+
type: NgModule,
|
|
586
|
+
args: [{
|
|
587
|
+
imports: [CdkTreeModule, ...TYPES],
|
|
588
|
+
exports: TYPES,
|
|
589
|
+
declarations: [],
|
|
590
|
+
}]
|
|
591
|
+
}] });
|
|
592
|
+
|
|
593
|
+
/**
|
|
594
|
+
* Generated bundle index. Do not edit.
|
|
595
|
+
*/
|
|
596
|
+
|
|
597
|
+
export { CuteNestedTreeNode, CuteTree, CuteTreeFlatDataSource, CuteTreeFlattener, CuteTreeModule, CuteTreeNestedDataSource, CuteTreeNode, CuteTreeNodeDef, CuteTreeNodeOutlet, CuteTreeNodePadding, CuteTreeNodeToggle };
|
|
598
|
+
//# sourceMappingURL=cute-widgets-base-tree.mjs.map
|