@digital-realty/ix-generic-tree 2.0.9 → 2.1.2
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/dist/IxGenericTree.d.ts +2 -2
- package/dist/IxGenericTree.js +5 -5
- package/dist/IxGenericTree.js.map +1 -1
- package/dist/IxGenericTreeNode.js +9 -9
- package/dist/IxGenericTreeNode.js.map +1 -1
- package/dist/IxGenericTreeTestIds.js +6 -6
- package/dist/IxGenericTreeTestIds.js.map +1 -1
- package/dist/ix-generic-tree-utils.js +4 -5
- package/dist/ix-generic-tree-utils.js.map +1 -1
- package/dist/test/ix-generic-tree.test.js +11 -15
- package/dist/test/ix-generic-tree.test.js.map +1 -1
- package/dist/test/test-data.d.ts +1 -1
- package/dist/test/test-data.js.map +1 -1
- package/package.json +10 -8
package/dist/IxGenericTree.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { LitElement, TemplateResult } from 'lit';
|
|
2
1
|
import '@digital-realty/ix-textbox/ix-textbox.js';
|
|
3
|
-
import type
|
|
2
|
+
import { LitElement, type TemplateResult } from 'lit';
|
|
4
3
|
import './ix-generic-tree-node.js';
|
|
4
|
+
import type { IGenericTreeNode } from './ix-generic-tree-types.js';
|
|
5
5
|
export declare class IxGenericTree extends LitElement {
|
|
6
6
|
static styles: import("lit").CSSResult[];
|
|
7
7
|
rootNode: IGenericTreeNode;
|
package/dist/IxGenericTree.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { LitElement, html, nothing } from 'lit';
|
|
3
|
-
import { property } from 'lit/decorators.js';
|
|
4
2
|
import '@digital-realty/ix-textbox/ix-textbox.js';
|
|
3
|
+
import { html, LitElement, nothing } from 'lit';
|
|
4
|
+
import { property } from 'lit/decorators.js';
|
|
5
5
|
import './ix-generic-tree-node.js';
|
|
6
|
-
import { updateNodeCheckedStatus } from './ix-generic-tree-utils.js';
|
|
7
6
|
import { IxGenericTreeNodeStyles } from './ix-generic-tree-styles.js';
|
|
7
|
+
import { updateNodeCheckedStatus } from './ix-generic-tree-utils.js';
|
|
8
8
|
import { IxGenericTreeTestIds } from './IxGenericTreeTestIds.js';
|
|
9
9
|
export class IxGenericTree extends LitElement {
|
|
10
10
|
constructor() {
|
|
@@ -17,6 +17,7 @@ export class IxGenericTree extends LitElement {
|
|
|
17
17
|
this.searchText = '';
|
|
18
18
|
this.selectedId = '';
|
|
19
19
|
}
|
|
20
|
+
static { this.styles = [IxGenericTreeNodeStyles]; }
|
|
20
21
|
onTreeNodeExpandToggle(e) {
|
|
21
22
|
const { node } = e.detail.message;
|
|
22
23
|
node.expanded = !node.expanded;
|
|
@@ -77,7 +78,7 @@ export class IxGenericTree extends LitElement {
|
|
|
77
78
|
@input=${(e) => {
|
|
78
79
|
const input = e.target;
|
|
79
80
|
this.dispatchEvent(new CustomEvent('search-text-change', {
|
|
80
|
-
detail: { searchText: input.value }
|
|
81
|
+
detail: { searchText: input.value },
|
|
81
82
|
}));
|
|
82
83
|
}}
|
|
83
84
|
data-testid="${IxGenericTreeTestIds.SEARCH_BOX}"
|
|
@@ -90,7 +91,6 @@ export class IxGenericTree extends LitElement {
|
|
|
90
91
|
</div>`;
|
|
91
92
|
}
|
|
92
93
|
}
|
|
93
|
-
IxGenericTree.styles = [IxGenericTreeNodeStyles];
|
|
94
94
|
__decorate([
|
|
95
95
|
property({ type: Object })
|
|
96
96
|
], IxGenericTree.prototype, "rootNode", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IxGenericTree.js","sourceRoot":"","sources":["../src/IxGenericTree.ts"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"IxGenericTree.js","sourceRoot":"","sources":["../src/IxGenericTree.ts"],"names":[],"mappings":"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","sourcesContent":["import '@digital-realty/ix-textbox/ix-textbox.js';\nimport { html, LitElement, nothing, type TemplateResult } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport './ix-generic-tree-node.js';\nimport { IxGenericTreeNodeStyles } from './ix-generic-tree-styles.js';\nimport type { IGenericTreeNode } from './ix-generic-tree-types.js';\nimport { updateNodeCheckedStatus } from './ix-generic-tree-utils.js';\nimport { IxGenericTreeTestIds } from './IxGenericTreeTestIds.js';\n\nexport class IxGenericTree extends LitElement {\n static styles = [IxGenericTreeNodeStyles];\n\n @property({ type: Object }) rootNode!: IGenericTreeNode;\n\n @property({ type: Boolean }) showCheckboxes: boolean = false;\n\n @property({ type: Boolean }) disableCheckboxes: boolean = false;\n\n @property({ type: Boolean }) filledIcons: boolean = false;\n\n @property({ type: Boolean }) searchEnabled: boolean = false;\n\n @property({ type: String }) searchPlaceholder: string = '';\n\n @property({ type: String }) searchText: string = '';\n\n @property({ type: String }) selectedId: string = '';\n\n private onTreeNodeExpandToggle(e: CustomEvent) {\n const { node } = e.detail.message;\n node.expanded = !node.expanded;\n this.dispatchEvent(\n new CustomEvent('expand-toggle', {\n detail: {\n message: {\n ...e.detail.message,\n update: this.requestUpdate.bind(this),\n },\n },\n }),\n );\n this.requestUpdate();\n }\n\n private onTreeNodeCheckToggle(e: CustomEvent): void {\n const { node } = e.detail.message;\n updateNodeCheckedStatus(node, this.rootNode);\n this.rootNode = structuredClone(this.rootNode);\n this.dispatchEvent(\n new CustomEvent('check-toggle', {\n detail: {\n message: {\n ...e.detail.message,\n rootNode: this.rootNode,\n },\n },\n }),\n );\n }\n\n private renderNodes(\n nodes: Array<IGenericTreeNode> = [],\n level: number = 0,\n ): Array<TemplateResult<1>> {\n const renderedNodes = [];\n\n for (const node of nodes) {\n const renderedNode = html`<ix-generic-tree-node\n id=${node.id}\n ?expanded=${!!node.expanded}\n ?loading=${!!node.loading}\n ?disabled=${this.disableCheckboxes || !!node.disabled}\n .level=${level}\n .node=${node}\n ?showCheckbox=${this.showCheckboxes}\n ?filledIcons=${this.filledIcons}\n .selected=${this.selectedId === node.id}\n @check-toggle=${this.onTreeNodeCheckToggle}\n @expand-toggle=${this.onTreeNodeExpandToggle}\n data-testid=\"${IxGenericTreeTestIds.NODE_ID(node.id)}\"\n >\n ${node.expanded ? this.renderNodes(node.children, level + 1) : nothing}\n </ix-generic-tree-node>`;\n renderedNodes.push(renderedNode);\n }\n\n return renderedNodes;\n }\n\n private renderTextSearch() {\n return this.searchEnabled\n ? html` <ix-textbox\n filled\n leading-icon=\"search\"\n has-leading-icon\n placeholder=${this.searchPlaceholder}\n .value=${this.searchText}\n @input=${(e: Event) => {\n const input = e.target as HTMLInputElement;\n this.dispatchEvent(\n new CustomEvent('search-text-change', {\n detail: { searchText: input.value },\n }),\n );\n }}\n data-testid=\"${IxGenericTreeTestIds.SEARCH_BOX}\"\n ></ix-textbox>`\n : nothing;\n }\n\n render() {\n return html`<div>\n ${this.renderTextSearch()} ${this.renderNodes(this.rootNode.children, 0)}\n </div>`;\n }\n}\n"]}
|
|
@@ -18,6 +18,7 @@ export class IxGenericTreeNode extends LitElement {
|
|
|
18
18
|
this.level = 0;
|
|
19
19
|
this.filledIcons = false;
|
|
20
20
|
}
|
|
21
|
+
static { this.styles = [IxGenericTreeNodeStyles]; }
|
|
21
22
|
onCheck() {
|
|
22
23
|
this.node.isDirty = true;
|
|
23
24
|
if (this.node.checked) {
|
|
@@ -81,14 +82,14 @@ export class IxGenericTreeNode extends LitElement {
|
|
|
81
82
|
</div>`;
|
|
82
83
|
}
|
|
83
84
|
return html `<div class="pl-2" style="margin-top: 0.65rem">
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
85
|
+
<ix-checkbox
|
|
86
|
+
.disabled=${this.loading || this.disabled}
|
|
87
|
+
.checked=${this.node.checked}
|
|
88
|
+
.indeterminate=${this.node.indeterminate}
|
|
89
|
+
@click=${() => this.onCheck()}
|
|
90
|
+
data-testid="${IxGenericTreeTestIds.CHECK_BOX_ID(this.node.id)}"
|
|
91
|
+
></ix-checkbox>
|
|
92
|
+
</div>`;
|
|
92
93
|
}
|
|
93
94
|
nodeIcon() {
|
|
94
95
|
const { icon } = this.node;
|
|
@@ -161,7 +162,6 @@ export class IxGenericTreeNode extends LitElement {
|
|
|
161
162
|
`;
|
|
162
163
|
}
|
|
163
164
|
}
|
|
164
|
-
IxGenericTreeNode.styles = [IxGenericTreeNodeStyles];
|
|
165
165
|
__decorate([
|
|
166
166
|
property({ type: Object })
|
|
167
167
|
], IxGenericTreeNode.prototype, "node", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IxGenericTreeNode.js","sourceRoot":"","sources":["../src/IxGenericTreeNode.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,4CAA4C,CAAC;AACpD,OAAO,oCAAoC,CAAC;AAC5C,OAAO,kDAAkD,CAAC;AAC1D,OAAO,4CAA4C,CAAC;AAGpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IAAjD;;QAK+B,iBAAY,GAAY,KAAK,CAAC;QAEf,aAAQ,GAAY,KAAK,CAAC;QAEzC,YAAO,GAAY,KAAK,CAAC;QAEzB,aAAQ,GAAY,KAAK,CAAC;QAE1B,aAAQ,GAAY,KAAK,CAAC;QAE3B,UAAK,GAAG,CAAC,CAAC;QAET,gBAAW,GAAG,KAAK,CAAC;IAgKnD,CAAC;
|
|
1
|
+
{"version":3,"file":"IxGenericTreeNode.js","sourceRoot":"","sources":["../src/IxGenericTreeNode.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, nothing } from 'lit';\nimport { property } from 'lit/decorators.js';\n\nimport '@digital-realty/ix-checkbox/ix-checkbox.js';\nimport '@digital-realty/ix-icon/ix-icon.js';\nimport '@digital-realty/ix-icon-button/ix-icon-button.js';\nimport '@digital-realty/ix-progress/ix-progress.js';\n\nimport type { IGenericTreeNode } from './ix-generic-tree-types.js';\nimport { IxGenericTreeNodeStyles } from './ix-generic-tree-styles.js';\nimport { IxGenericTreeTestIds } from './IxGenericTreeTestIds.js';\n\nexport class IxGenericTreeNode extends LitElement {\n static readonly styles = [IxGenericTreeNodeStyles];\n\n @property({ type: Object }) node!: IGenericTreeNode;\n\n @property({ type: Boolean }) showCheckbox: boolean = false;\n\n @property({ type: Boolean, reflect: true }) expanded: boolean = false;\n\n @property({ type: Boolean }) loading: boolean = false;\n\n @property({ type: Boolean }) disabled: boolean = false;\n\n @property({ type: Boolean }) selected: boolean = false;\n\n @property({ type: Number }) level = 0;\n\n @property({ type: Boolean }) filledIcons = false;\n\n private onCheck() {\n this.node.isDirty = true;\n if (this.node.checked) {\n this.node.checked = false;\n this.node.indeterminate = false;\n } else {\n this.node.checked = true;\n this.node.indeterminate = false;\n }\n const event = new CustomEvent('check-toggle', {\n detail: {\n message: {\n node: this.node,\n },\n },\n });\n\n this.dispatchEvent(event);\n }\n\n private onNodeExpand(): void {\n if (!this.expandable) {\n return;\n }\n\n const event = new CustomEvent('expand-toggle', {\n detail: {\n message: {\n node: this.node,\n },\n },\n });\n\n this.dispatchEvent(event);\n }\n\n private get expandable() {\n const childrenDataIsPresent: boolean =\n this.node.children !== undefined && this.node.children.length > 0;\n const hasChildrenToLoad: boolean =\n this.node.childrenCount !== undefined && this.node.childrenCount > 0;\n return childrenDataIsPresent || hasChildrenToLoad;\n }\n\n private arrowIcon() {\n const icon = this.expanded ? 'arrow_drop_down' : 'arrow_right';\n return html`<ix-icon-button\n @click=${() => this.onNodeExpand()}\n style=\"visibility: ${this.expandable ? 'visible' : 'hidden'}\"\n icon=${icon}\n test-id=\"tree-node-expand-toggle\"\n data-testid=${IxGenericTreeTestIds.NODE_EXPAND_TOGGLE(this.node.id)}\n >\n </ix-icon-button>`;\n }\n\n private checkbox() {\n if (!this.showCheckbox) return nothing;\n\n if (this.node.inherited) {\n return html`<div class=\"pl-2\">\n <ix-icon\n data-testid=\"${IxGenericTreeTestIds.CHECK_BOX_ID(this.node.id)}\"\n class=\"inherited\"\n disabled=${this.loading || this.disabled}\n >\n arrow_drop_up\n </ix-icon>\n </div>`;\n }\n\n return html`<div class=\"pl-2\" style=\"margin-top: 0.65rem\">\n <ix-checkbox\n .disabled=${this.loading || this.disabled}\n .checked=${this.node.checked}\n .indeterminate=${this.node.indeterminate}\n @click=${() => this.onCheck()}\n data-testid=\"${IxGenericTreeTestIds.CHECK_BOX_ID(this.node.id)}\"\n ></ix-checkbox>\n </div>`;\n }\n\n private nodeIcon() {\n const { icon } = this.node;\n return icon\n ? html`<div class=\"pl-4 mt-2\">\n <ix-icon\n style=\"color: #092241; opacity: 0.6; font-size: 20px;\"\n ?filled=${this.filledIcons}\n >\n ${icon}\n </ix-icon>\n </div> `\n : nothing;\n }\n\n private label() {\n return html`\n <p\n class=\"label dlr-text-small\"\n data-testid=\"${IxGenericTreeTestIds.NODE_LABEL(this.node.id)}\"\n >\n ${this.node.label}\n </p>\n `;\n }\n\n private childCount() {\n const count =\n this.node.childrenCount === undefined ? 0 : this.node.childrenCount;\n return html`<p\n class=\"pl-2 child-count dlr-text-small\"\n data-testid=\"${IxGenericTreeTestIds.NODE_COUNT(this.node.id)}\"\n >\n ${count !== 0 ? count : nothing}\n </p>`;\n }\n\n private secondaryLabel() {\n return this.node.secondaryLabel\n ? html`<p class=\"secondary-label dlr-text-caption\">\n ${this.node.secondaryLabel}\n </p>`\n : nothing;\n }\n\n private loadingCircle() {\n return html`<div\n style=\"visibility: ${this.loading\n ? 'visible'\n : 'hidden'}; padding-left: 1rem;\"\n class=\"animate-pulse\"\n >\n <ix-progress .linear=${false} .indeterminate=${true}></ix-progress>\n </div>`;\n }\n\n render() {\n return html`\n <div style=\"padding-left: ${this.level > 0 ? '2.2rem' : '0'}\">\n <div class=\"node-item ${this.selected ? 'selected' : ''}\">\n ${this.arrowIcon()} ${this.checkbox()} ${this.nodeIcon()}\n <div\n class=\"node-item-label\"\n @click=${this.onNodeExpand}\n @keydown=${this.onNodeExpand}\n >\n <div class=\"node-item-inner\">\n ${this.label()} ${this.childCount()}\n </div>\n ${this.secondaryLabel()}\n </div>\n ${this.loadingCircle()}\n </div>\n <slot></slot>\n </div>\n `;\n }\n}\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export class IxGenericTreeTestIds {
|
|
2
|
+
static { this.SEARCH_BOX = 'search-box'; }
|
|
3
|
+
static { this.CHECK_BOX_ID = (id) => `checkbox-${id}`; }
|
|
4
|
+
static { this.NODE_ID = (id) => `node-${id}`; }
|
|
5
|
+
static { this.NODE_LABEL = (id) => `label-${id}`; }
|
|
6
|
+
static { this.NODE_COUNT = (id) => `count-${id}`; }
|
|
7
|
+
static { this.NODE_EXPAND_TOGGLE = (id) => `tree-node-toggle-${id}`; }
|
|
2
8
|
}
|
|
3
|
-
IxGenericTreeTestIds.SEARCH_BOX = 'search-box';
|
|
4
|
-
IxGenericTreeTestIds.CHECK_BOX_ID = (id) => `checkbox-${id}`;
|
|
5
|
-
IxGenericTreeTestIds.NODE_ID = (id) => `node-${id}`;
|
|
6
|
-
IxGenericTreeTestIds.NODE_LABEL = (id) => `label-${id}`;
|
|
7
|
-
IxGenericTreeTestIds.NODE_COUNT = (id) => `count-${id}`;
|
|
8
|
-
IxGenericTreeTestIds.NODE_EXPAND_TOGGLE = (id) => `tree-node-toggle-${id}`;
|
|
9
9
|
//# sourceMappingURL=IxGenericTreeTestIds.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IxGenericTreeTestIds.js","sourceRoot":"","sources":["../src/IxGenericTreeTestIds.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,oBAAoB
|
|
1
|
+
{"version":3,"file":"IxGenericTreeTestIds.js","sourceRoot":"","sources":["../src/IxGenericTreeTestIds.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,oBAAoB;aACR,eAAU,GAAG,YAAY,CAAC;aAEnC,iBAAY,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC;aAEhD,YAAO,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;aAEvC,eAAU,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC;aAE3C,eAAU,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC;aAE3C,uBAAkB,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,oBAAoB,EAAE,EAAE,CAAC","sourcesContent":["export class IxGenericTreeTestIds {\n public static readonly SEARCH_BOX = 'search-box';\n\n public static CHECK_BOX_ID = (id: string) => `checkbox-${id}`;\n\n public static NODE_ID = (id: string) => `node-${id}`;\n\n public static NODE_LABEL = (id: string) => `label-${id}`;\n\n public static NODE_COUNT = (id: string) => `count-${id}`;\n\n public static NODE_EXPAND_TOGGLE = (id: string) => `tree-node-toggle-${id}`;\n}\n"]}
|
|
@@ -173,7 +173,7 @@ export function updateChildrenCount(rootNode) {
|
|
|
173
173
|
return;
|
|
174
174
|
currentParent.childrenCount = 0;
|
|
175
175
|
if (currentParent.children) {
|
|
176
|
-
currentParent.childrenCount += currentParent.children.reduce((prev, curr) =>
|
|
176
|
+
currentParent.childrenCount += currentParent.children.reduce((prev, curr) => prev + (curr.childrenCount === 0 ? 1 : (curr.childrenCount ?? 0)), 0);
|
|
177
177
|
}
|
|
178
178
|
updateParents(currentParent);
|
|
179
179
|
}
|
|
@@ -205,7 +205,6 @@ export function collapseAllNodes(node) {
|
|
|
205
205
|
export function calculateCheckedEndNodesCount(node) {
|
|
206
206
|
let count = 0;
|
|
207
207
|
function getCheckedEndNodes(n) {
|
|
208
|
-
var _a, _b, _c;
|
|
209
208
|
if ((n.checked || n.inherited) && n.childrenCount === 0) {
|
|
210
209
|
count += 1;
|
|
211
210
|
}
|
|
@@ -214,11 +213,11 @@ export function calculateCheckedEndNodesCount(node) {
|
|
|
214
213
|
getCheckedEndNodes(child);
|
|
215
214
|
});
|
|
216
215
|
}
|
|
217
|
-
if (!
|
|
216
|
+
if (!n.children?.length && n.childrenCount !== 0) {
|
|
218
217
|
if (n.checked)
|
|
219
|
-
count +=
|
|
218
|
+
count += n.childrenCount ?? 0;
|
|
220
219
|
if (n.indeterminate)
|
|
221
|
-
count +=
|
|
220
|
+
count += n.checkedChildrenCount ?? 0;
|
|
222
221
|
}
|
|
223
222
|
}
|
|
224
223
|
getCheckedEndNodes(node);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ix-generic-tree-utils.js","sourceRoot":"","sources":["../src/ix-generic-tree-utils.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-nested-ternary */\nimport type { IGenericTreeNode } from './ix-generic-tree-types.js';\n\nexport const IconTypeMap = {\n Global: 'globe',\n Continent: 'map',\n Country: 'flag',\n City: 'domain',\n Campus: 'device_hub',\n Site: 'location_on',\n Floor: 'view_stream',\n Room: 'meeting_room',\n Cage: 'view_column',\n Row: 'view_headline',\n Cabinet: 'dock',\n Panel: 'calendar_view_day',\n Port: '',\n Fallback: 'chevron_right',\n};\n\nexport function findChildNodeById(\n node: IGenericTreeNode,\n id: string,\n): IGenericTreeNode | null {\n if (node.id === id) {\n return node;\n }\n if (!node.children) {\n return null;\n }\n\n for (const childNode of node.children) {\n const foundNode = findChildNodeById(childNode, id);\n\n if (foundNode) {\n return foundNode;\n }\n }\n\n return null;\n}\n\nexport function updateNodeCheckedStatus(\n node: IGenericTreeNode,\n rootNode: IGenericTreeNode,\n): void {\n /* eslint-disable no-param-reassign */\n function updateChildren(n: IGenericTreeNode, checked = false): void {\n n.indeterminate = false;\n if (n.children) {\n n.children.forEach(child => {\n child.inherited = checked;\n child.checked = false;\n updateChildren(child, checked);\n });\n }\n }\n\n function updateParents(n: IGenericTreeNode): void {\n if (!n.parentId) return;\n\n const currentParent = findChildNodeById(rootNode, n.parentId);\n if (!currentParent || !currentParent.children) return;\n\n const someChildrenChecked = currentParent.children.some(\n child => child.checked || child.indeterminate,\n );\n\n currentParent.indeterminate = someChildrenChecked;\n\n updateParents(currentParent);\n }\n\n // update all children to match current node checked status\n updateChildren(node, node.checked);\n\n // update all parents checked and indeterminate status\n updateParents(node);\n}\n\nexport function getFlatArrayOfCheckedNodes(\n node: IGenericTreeNode,\n): IGenericTreeNode[] {\n const checkedNodes: IGenericTreeNode[] = [];\n\n function getCheckedNodes(n: IGenericTreeNode): void {\n if (n.checked) {\n checkedNodes.push(n);\n }\n if (n.children) {\n n.children.forEach(child => {\n getCheckedNodes(child);\n });\n }\n }\n\n getCheckedNodes(node);\n return checkedNodes;\n}\n\nexport function flattenTree(rootNode: IGenericTreeNode): IGenericTreeNode[] {\n const flatArray: IGenericTreeNode[] = [];\n\n function flatten(n: IGenericTreeNode): void {\n flatArray.push(n);\n if (n.children) {\n n.children.forEach(child => {\n flatten(child);\n });\n }\n }\n\n flatten(rootNode);\n return flatArray;\n}\n\nexport function buildTreeFromFlatArray(\n flatArray: IGenericTreeNode[],\n): IGenericTreeNode {\n const rootNode: IGenericTreeNode = {\n id: 'root',\n label: '',\n children: [],\n };\n\n rootNode.children = flatArray.filter(child => !child.parentId);\n\n function buildTree(n: IGenericTreeNode): void {\n const children = flatArray.filter(child => child.parentId === n.id);\n n.children = children;\n n.children.forEach(child => {\n buildTree(child);\n });\n }\n\n rootNode.children.forEach(child => {\n buildTree(child);\n });\n return rootNode;\n}\n\nexport function isAnyNodeChecked(node: IGenericTreeNode): boolean {\n if (node.checked || node.indeterminate) {\n return true;\n }\n if (!node.children) {\n return false;\n }\n\n for (const childNode of node.children) {\n const checked = isAnyNodeChecked(childNode);\n\n if (checked) {\n return checked;\n }\n }\n\n return false;\n}\n\nexport function resetCheckedAndIndeterminateStatus(\n node: IGenericTreeNode,\n): void {\n node.checked = false;\n node.indeterminate = false;\n\n if (node.children) {\n node.children.forEach(child => {\n resetCheckedAndIndeterminateStatus(child);\n });\n }\n}\n\nexport function getCheckedAndIndeterminateNodesOnly(\n node: IGenericTreeNode,\n): IGenericTreeNode[] {\n const checkedNodes: IGenericTreeNode[] = [];\n\n function getCheckedNodes(n: IGenericTreeNode): void {\n if (n.checked || n.indeterminate || n.inherited) {\n checkedNodes.push(n);\n }\n if (n.children) {\n n.children.forEach(child => {\n getCheckedNodes(child);\n });\n }\n }\n\n getCheckedNodes(node);\n return checkedNodes;\n}\n\nexport function findDeepestNode(\n root: IGenericTreeNode,\n): IGenericTreeNode | null {\n let maxDepth = -1;\n let deepestNode = null;\n function dfs(node: IGenericTreeNode, depth: number) {\n if (!node) return;\n if (depth > maxDepth) {\n maxDepth = depth;\n deepestNode = node;\n }\n if (!node.children) return;\n for (const child of node.children) {\n dfs(child, depth + 1);\n }\n }\n dfs(root, 0);\n return deepestNode;\n}\n\nexport function updateChildrenCount(rootNode: IGenericTreeNode): void {\n const deepestNode = findDeepestNode(rootNode);\n if (!deepestNode) return;\n\n function updateParents(n: IGenericTreeNode): void {\n if (!n.parentId) return;\n\n const currentParent = findChildNodeById(rootNode, n.parentId);\n if (!currentParent) return;\n currentParent.childrenCount = 0;\n if (currentParent.children) {\n currentParent.childrenCount += currentParent.children.reduce(\n (prev, curr) =>\n prev + (curr.childrenCount === 0 ? 1 : (curr.childrenCount ?? 0)),\n 0,\n );\n }\n updateParents(currentParent);\n }\n\n updateParents(deepestNode);\n}\n\nexport function getCheckedNodesCount(node: IGenericTreeNode): number {\n let count = 0;\n function getCheckedNodes(n: IGenericTreeNode): void {\n if (n.checked || n.inherited) {\n count += 1;\n }\n if (n.children) {\n n.children.forEach(child => {\n getCheckedNodes(child);\n });\n }\n }\n getCheckedNodes(node);\n return count;\n}\n\nexport function collapseAllNodes(node: IGenericTreeNode): void {\n node.expanded = false;\n if (node.children) {\n node.children.forEach(child => {\n collapseAllNodes(child);\n });\n }\n}\n\nexport function calculateCheckedEndNodesCount(node: IGenericTreeNode): number {\n let count = 0;\n function getCheckedEndNodes(n: IGenericTreeNode): void {\n if ((n.checked || n.inherited) && n.childrenCount === 0) {\n count += 1;\n }\n if (n.children) {\n n.children.forEach(child => {\n getCheckedEndNodes(child);\n });\n }\n if (!n.children?.length && n.childrenCount !== 0) {\n if (n.checked) count += n.childrenCount ?? 0;\n if (n.indeterminate) count += n.checkedChildrenCount ?? 0;\n }\n }\n getCheckedEndNodes(node);\n return count;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ix-generic-tree-utils.js","sourceRoot":"","sources":["../src/ix-generic-tree-utils.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-nested-ternary */\nimport type { IGenericTreeNode } from './ix-generic-tree-types.js';\n\nexport const IconTypeMap = {\n Global: 'globe',\n Continent: 'map',\n Country: 'flag',\n City: 'domain',\n Campus: 'device_hub',\n Site: 'location_on',\n Floor: 'view_stream',\n Room: 'meeting_room',\n Cage: 'view_column',\n Row: 'view_headline',\n Cabinet: 'dock',\n Panel: 'calendar_view_day',\n Port: '',\n Fallback: 'chevron_right',\n};\n\nexport function findChildNodeById(\n node: IGenericTreeNode,\n id: string,\n): IGenericTreeNode | null {\n if (node.id === id) {\n return node;\n }\n if (!node.children) {\n return null;\n }\n\n for (const childNode of node.children) {\n const foundNode = findChildNodeById(childNode, id);\n\n if (foundNode) {\n return foundNode;\n }\n }\n\n return null;\n}\n\nexport function updateNodeCheckedStatus(\n node: IGenericTreeNode,\n rootNode: IGenericTreeNode,\n): void {\n /* eslint-disable no-param-reassign */\n function updateChildren(n: IGenericTreeNode, checked = false): void {\n n.indeterminate = false;\n if (n.children) {\n n.children.forEach(child => {\n child.inherited = checked;\n child.checked = false;\n updateChildren(child, checked);\n });\n }\n }\n\n function updateParents(n: IGenericTreeNode): void {\n if (!n.parentId) return;\n\n const currentParent = findChildNodeById(rootNode, n.parentId);\n if (!currentParent || !currentParent.children) return;\n\n const someChildrenChecked = currentParent.children.some(\n child => child.checked || child.indeterminate,\n );\n\n currentParent.indeterminate = someChildrenChecked;\n\n updateParents(currentParent);\n }\n\n // update all children to match current node checked status\n updateChildren(node, node.checked);\n\n // update all parents checked and indeterminate status\n updateParents(node);\n}\n\nexport function getFlatArrayOfCheckedNodes(\n node: IGenericTreeNode,\n): IGenericTreeNode[] {\n const checkedNodes: IGenericTreeNode[] = [];\n\n function getCheckedNodes(n: IGenericTreeNode): void {\n if (n.checked) {\n checkedNodes.push(n);\n }\n if (n.children) {\n n.children.forEach(child => {\n getCheckedNodes(child);\n });\n }\n }\n\n getCheckedNodes(node);\n return checkedNodes;\n}\n\nexport function flattenTree(rootNode: IGenericTreeNode): IGenericTreeNode[] {\n const flatArray: IGenericTreeNode[] = [];\n\n function flatten(n: IGenericTreeNode): void {\n flatArray.push(n);\n if (n.children) {\n n.children.forEach(child => {\n flatten(child);\n });\n }\n }\n\n flatten(rootNode);\n return flatArray;\n}\n\nexport function buildTreeFromFlatArray(\n flatArray: IGenericTreeNode[],\n): IGenericTreeNode {\n const rootNode: IGenericTreeNode = {\n id: 'root',\n label: '',\n children: [],\n };\n\n rootNode.children = flatArray.filter(child => !child.parentId);\n\n function buildTree(n: IGenericTreeNode): void {\n const children = flatArray.filter(child => child.parentId === n.id);\n n.children = children;\n n.children.forEach(child => {\n buildTree(child);\n });\n }\n\n rootNode.children.forEach(child => {\n buildTree(child);\n });\n return rootNode;\n}\n\nexport function isAnyNodeChecked(node: IGenericTreeNode): boolean {\n if (node.checked || node.indeterminate) {\n return true;\n }\n if (!node.children) {\n return false;\n }\n\n for (const childNode of node.children) {\n const checked = isAnyNodeChecked(childNode);\n\n if (checked) {\n return checked;\n }\n }\n\n return false;\n}\n\nexport function resetCheckedAndIndeterminateStatus(\n node: IGenericTreeNode,\n): void {\n node.checked = false;\n node.indeterminate = false;\n\n if (node.children) {\n node.children.forEach(child => {\n resetCheckedAndIndeterminateStatus(child);\n });\n }\n}\n\nexport function getCheckedAndIndeterminateNodesOnly(\n node: IGenericTreeNode,\n): IGenericTreeNode[] {\n const checkedNodes: IGenericTreeNode[] = [];\n\n function getCheckedNodes(n: IGenericTreeNode): void {\n if (n.checked || n.indeterminate || n.inherited) {\n checkedNodes.push(n);\n }\n if (n.children) {\n n.children.forEach(child => {\n getCheckedNodes(child);\n });\n }\n }\n\n getCheckedNodes(node);\n return checkedNodes;\n}\n\nexport function findDeepestNode(\n root: IGenericTreeNode,\n): IGenericTreeNode | null {\n let maxDepth = -1;\n let deepestNode = null;\n function dfs(node: IGenericTreeNode, depth: number) {\n if (!node) return;\n if (depth > maxDepth) {\n maxDepth = depth;\n deepestNode = node;\n }\n if (!node.children) return;\n for (const child of node.children) {\n dfs(child, depth + 1);\n }\n }\n dfs(root, 0);\n return deepestNode;\n}\n\nexport function updateChildrenCount(rootNode: IGenericTreeNode): void {\n const deepestNode = findDeepestNode(rootNode);\n if (!deepestNode) return;\n\n function updateParents(n: IGenericTreeNode): void {\n if (!n.parentId) return;\n\n const currentParent = findChildNodeById(rootNode, n.parentId);\n if (!currentParent) return;\n currentParent.childrenCount = 0;\n if (currentParent.children) {\n currentParent.childrenCount += currentParent.children.reduce(\n (prev, curr) =>\n prev + (curr.childrenCount === 0 ? 1 : (curr.childrenCount ?? 0)),\n 0,\n );\n }\n updateParents(currentParent);\n }\n\n updateParents(deepestNode);\n}\n\nexport function getCheckedNodesCount(node: IGenericTreeNode): number {\n let count = 0;\n function getCheckedNodes(n: IGenericTreeNode): void {\n if (n.checked || n.inherited) {\n count += 1;\n }\n if (n.children) {\n n.children.forEach(child => {\n getCheckedNodes(child);\n });\n }\n }\n getCheckedNodes(node);\n return count;\n}\n\nexport function collapseAllNodes(node: IGenericTreeNode): void {\n node.expanded = false;\n if (node.children) {\n node.children.forEach(child => {\n collapseAllNodes(child);\n });\n }\n}\n\nexport function calculateCheckedEndNodesCount(node: IGenericTreeNode): number {\n let count = 0;\n function getCheckedEndNodes(n: IGenericTreeNode): void {\n if ((n.checked || n.inherited) && n.childrenCount === 0) {\n count += 1;\n }\n if (n.children) {\n n.children.forEach(child => {\n getCheckedEndNodes(child);\n });\n }\n if (!n.children?.length && n.childrenCount !== 0) {\n if (n.checked) count += n.childrenCount ?? 0;\n if (n.indeterminate) count += n.checkedChildrenCount ?? 0;\n }\n }\n getCheckedEndNodes(node);\n return count;\n}\n"]}
|
|
@@ -5,11 +5,10 @@ import ixGenericTreeTestData from './test-data.js';
|
|
|
5
5
|
import '../ix-generic-tree.js';
|
|
6
6
|
import '../ix-generic-tree-node.js';
|
|
7
7
|
const selectorTestId = (element, id) => {
|
|
8
|
-
|
|
9
|
-
let target = (_a = element.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`[data-testid="${id}"]`);
|
|
8
|
+
let target = element.shadowRoot?.querySelector(`[data-testid="${id}"]`);
|
|
10
9
|
if (target)
|
|
11
10
|
return target;
|
|
12
|
-
const nodes =
|
|
11
|
+
const nodes = element.shadowRoot?.querySelectorAll('ix-generic-tree-node') ?? [];
|
|
13
12
|
for (const n of nodes) {
|
|
14
13
|
target = n.shadowRoot.querySelector(`[data-testid="${id}"]`);
|
|
15
14
|
if (target)
|
|
@@ -18,35 +17,32 @@ const selectorTestId = (element, id) => {
|
|
|
18
17
|
return undefined;
|
|
19
18
|
};
|
|
20
19
|
const replaceNodeKey = (data, key, value) => {
|
|
21
|
-
var _a;
|
|
22
20
|
/* eslint-disable no-param-reassign */
|
|
23
21
|
// @ts-ignore
|
|
24
22
|
data[key] = value;
|
|
25
|
-
if (
|
|
23
|
+
if (data.children?.length) {
|
|
26
24
|
data.children.forEach(child => replaceNodeKey(child, key, value));
|
|
27
25
|
}
|
|
28
26
|
return data;
|
|
29
27
|
};
|
|
30
28
|
const extractNodeValues = (data, key) => {
|
|
31
|
-
var _a;
|
|
32
29
|
const values = [];
|
|
33
30
|
if (data[key]) {
|
|
34
31
|
// @ts-ignore
|
|
35
32
|
values.push(data[key]);
|
|
36
33
|
}
|
|
37
|
-
if (
|
|
34
|
+
if (data.children?.length) {
|
|
38
35
|
data.children.forEach(child => values.push(...extractNodeValues(child, key)));
|
|
39
36
|
}
|
|
40
37
|
return values;
|
|
41
38
|
};
|
|
42
39
|
const extractNodeValuesAtDepth = (data, key, depth) => {
|
|
43
|
-
var _a;
|
|
44
40
|
const values = [];
|
|
45
41
|
if (data[key] !== undefined && depth === 0) {
|
|
46
42
|
// @ts-ignore
|
|
47
43
|
values.push(data[key]);
|
|
48
44
|
}
|
|
49
|
-
if (
|
|
45
|
+
if (data.children?.length) {
|
|
50
46
|
data.children.forEach(child => values.push(...extractNodeValuesAtDepth(child, key, depth - 1)));
|
|
51
47
|
}
|
|
52
48
|
return values;
|
|
@@ -60,7 +56,7 @@ describe('<ix-generic-tree>', () => {
|
|
|
60
56
|
></ix-generic-tree>`);
|
|
61
57
|
let searchBox = selectorTestId(element, IxGenericTreeTestIds.SEARCH_BOX);
|
|
62
58
|
expect(searchBox, IxGenericTreeTestIds.SEARCH_BOX).to.exist;
|
|
63
|
-
await expect(searchBox
|
|
59
|
+
await expect(searchBox?.placeholder, 'placeholder').to.equal('placeholder');
|
|
64
60
|
element.searchEnabled = false;
|
|
65
61
|
await element.updateComplete;
|
|
66
62
|
searchBox = selectorTestId(element, IxGenericTreeTestIds.SEARCH_BOX);
|
|
@@ -80,7 +76,7 @@ describe('<ix-generic-tree>', () => {
|
|
|
80
76
|
const targetId = IxGenericTreeTestIds.CHECK_BOX_ID(id);
|
|
81
77
|
const checkbox = selectorTestId(element, targetId);
|
|
82
78
|
expect(checkbox, targetId).to.exist;
|
|
83
|
-
expect(checkbox
|
|
79
|
+
expect(checkbox?.disabled, targetId).to.be.false;
|
|
84
80
|
}
|
|
85
81
|
element.disableCheckboxes = true;
|
|
86
82
|
await element.updateComplete;
|
|
@@ -89,7 +85,7 @@ describe('<ix-generic-tree>', () => {
|
|
|
89
85
|
const targetId = IxGenericTreeTestIds.CHECK_BOX_ID(id);
|
|
90
86
|
const checkbox = selectorTestId(element, targetId);
|
|
91
87
|
expect(checkbox, targetId).to.exist;
|
|
92
|
-
expect(checkbox
|
|
88
|
+
expect(checkbox?.disabled, targetId).to.be.true;
|
|
93
89
|
}
|
|
94
90
|
element.showCheckboxes = false;
|
|
95
91
|
await element.updateComplete;
|
|
@@ -122,15 +118,15 @@ describe('<ix-generic-tree>', () => {
|
|
|
122
118
|
const targetId = IxGenericTreeTestIds.NODE_LABEL(id);
|
|
123
119
|
const target = selectorTestId(element, targetId);
|
|
124
120
|
expect(target, targetId).to.exist;
|
|
125
|
-
await expect(target
|
|
126
|
-
target
|
|
121
|
+
await expect(target?.innerText, label).to.eq(label);
|
|
122
|
+
target?.click();
|
|
127
123
|
}
|
|
128
124
|
async function testCount(id, count) {
|
|
129
125
|
const targetId = IxGenericTreeTestIds.NODE_COUNT(id);
|
|
130
126
|
const target = selectorTestId(element, targetId);
|
|
131
127
|
expect(target, targetId).to.exist;
|
|
132
128
|
// A count of zero is not rendered
|
|
133
|
-
await expect(target
|
|
129
|
+
await expect(target?.innerText, targetId).to.eq(count ? count.toString(10) : '');
|
|
134
130
|
}
|
|
135
131
|
/* eslint-disable no-await-in-loop */
|
|
136
132
|
for (let i = 1; i < 5; i += 1) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ix-generic-tree.test.js","sourceRoot":"","sources":["../../src/test/ix-generic-tree.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport { IxCheckbox } from '@digital-realty/ix-checkbox';\nimport { IxTextbox } from '@digital-realty/ix-textbox';\nimport { IxGenericTree } from '../IxGenericTree.js';\nimport { IxGenericTreeNode } from '../IxGenericTreeNode.js';\nimport { IxGenericTreeTestIds } from '../IxGenericTreeTestIds.js';\nimport { IGenericTreeNode } from '../ix-generic-tree-types.js';\nimport ixGenericTreeTestData from './test-data.js';\nimport '../ix-generic-tree.js';\nimport '../ix-generic-tree-node.js';\n\nconst selectorTestId = <T extends HTMLElement>(\n element: IxGenericTree,\n id: string,\n): T | undefined => {\n let target = element.shadowRoot?.querySelector<T>(`[data-testid=\"${id}\"]`);\n if (target) return target;\n\n const nodes =\n element.shadowRoot?.querySelectorAll<IxGenericTreeNode>(\n 'ix-generic-tree-node',\n ) ?? [];\n for (const n of nodes) {\n target = n.shadowRoot!.querySelector<T>(`[data-testid=\"${id}\"]`);\n if (target) return target;\n }\n\n return undefined;\n};\n\nconst replaceNodeKey = (\n data: IGenericTreeNode,\n key: keyof IGenericTreeNode,\n value: any,\n) => {\n /* eslint-disable no-param-reassign */\n // @ts-ignore\n data[key] = value;\n if (data.children?.length) {\n data.children.forEach(child => replaceNodeKey(child, key, value));\n }\n return data;\n};\n\nconst extractNodeValues = <T>(\n data: IGenericTreeNode,\n key: keyof IGenericTreeNode,\n) => {\n const values: T[] = [];\n\n if (data[key]) {\n // @ts-ignore\n values.push(data[key]);\n }\n if (data.children?.length) {\n data.children.forEach(child =>\n values.push(...extractNodeValues<T>(child, key)),\n );\n }\n return values;\n};\n\nconst extractNodeValuesAtDepth = <T>(\n data: IGenericTreeNode,\n key: keyof IGenericTreeNode,\n depth: number,\n) => {\n const values: T[] = [];\n\n if (data[key] !== undefined && depth === 0) {\n // @ts-ignore\n values.push(data[key]);\n }\n if (data.children?.length) {\n data.children.forEach(child =>\n values.push(...extractNodeValuesAtDepth<T>(child, key, depth - 1)),\n );\n }\n return values;\n};\n\ndescribe('<ix-generic-tree>', () => {\n it('should render the search box correctly', async () => {\n const element = await fixture<IxGenericTree>(\n html`<ix-generic-tree\n .rootNode=${ixGenericTreeTestData}\n searchEnabled\n searchPlaceholder=\"placeholder\"\n ></ix-generic-tree>`,\n );\n\n let searchBox = selectorTestId<IxTextbox>(\n element,\n IxGenericTreeTestIds.SEARCH_BOX,\n );\n expect(searchBox, IxGenericTreeTestIds.SEARCH_BOX).to.exist;\n await expect(searchBox?.placeholder, 'placeholder').to.equal('placeholder');\n\n element.searchEnabled = false;\n await element.updateComplete;\n searchBox = selectorTestId<IxTextbox>(\n element,\n IxGenericTreeTestIds.SEARCH_BOX,\n );\n expect(searchBox, IxGenericTreeTestIds.SEARCH_BOX).to.not.exist;\n });\n\n it('should render the check boxes correctly', async () => {\n const data = replaceNodeKey(\n structuredClone(ixGenericTreeTestData),\n 'expanded',\n true,\n );\n\n const element = await fixture<IxGenericTree>(\n html`<ix-generic-tree\n .rootNode=${data}\n showCheckboxes\n searchEnabled\n searchPlaceholder=\"placeholder\"\n ></ix-generic-tree>`,\n );\n\n const ids = extractNodeValues<string>(data, 'id').filter(\n id => id !== 'root',\n );\n\n // Checkboxes exist and not disabled\n for (const id of ids) {\n const targetId = IxGenericTreeTestIds.CHECK_BOX_ID(id);\n const checkbox = selectorTestId<IxCheckbox>(element, targetId);\n expect(checkbox, targetId).to.exist;\n expect(checkbox?.disabled, targetId).to.be.false;\n }\n\n element.disableCheckboxes = true;\n await element.updateComplete;\n\n // Checkboxes exist and are disabled\n for (const id of ids) {\n const targetId = IxGenericTreeTestIds.CHECK_BOX_ID(id);\n const checkbox = selectorTestId<IxCheckbox>(element, targetId);\n expect(checkbox, targetId).to.exist;\n expect(checkbox?.disabled, targetId).to.be.true;\n }\n\n element.showCheckboxes = false;\n await element.updateComplete;\n\n // Checkboxes hidden\n for (const id of ids) {\n const targetId = IxGenericTreeTestIds.CHECK_BOX_ID(id);\n const checkbox = selectorTestId<IxCheckbox>(element, targetId);\n expect(checkbox, targetId).to.not.exist;\n }\n });\n\n it('should expand the nodes and render correct labels', async () => {\n const element = await fixture<IxGenericTree>(\n html`<ix-generic-tree\n .rootNode=${ixGenericTreeTestData}\n showCheckboxes\n searchEnabled\n searchPlaceholder=\"placeholder\"\n ></ix-generic-tree>`,\n );\n\n const ids = extractNodeValues<string>(ixGenericTreeTestData, 'id').filter(\n id => id !== 'root',\n );\n\n let nodes: IxGenericTreeNode[] = [];\n\n function getNodes() {\n const _nodes: IxGenericTreeNode[] = [];\n for (const id of ids) {\n const node = selectorTestId<IxGenericTreeNode>(\n element,\n IxGenericTreeTestIds.NODE_ID(id),\n );\n if (node) _nodes.push(node);\n }\n nodes = _nodes;\n }\n\n async function testLabel(id: string, label?: string) {\n const targetId = IxGenericTreeTestIds.NODE_LABEL(id);\n const target = selectorTestId<HTMLParagraphElement>(element, targetId);\n expect(target, targetId).to.exist;\n await expect(target?.innerText, label).to.eq(label);\n target?.click();\n }\n\n async function testCount(id: string, count: number) {\n const targetId = IxGenericTreeTestIds.NODE_COUNT(id);\n const target = selectorTestId<HTMLParagraphElement>(element, targetId);\n expect(target, targetId).to.exist;\n\n // A count of zero is not rendered\n await expect(target?.innerText, targetId).to.eq(\n count ? count.toString(10) : '',\n );\n }\n /* eslint-disable no-await-in-loop */\n for (let i = 1; i < 5; i += 1) {\n getNodes();\n const _ids = extractNodeValuesAtDepth<string>(\n ixGenericTreeTestData,\n 'id',\n i,\n );\n const labels = extractNodeValuesAtDepth<string>(\n ixGenericTreeTestData,\n 'label',\n i,\n );\n const counts = extractNodeValuesAtDepth<number>(\n ixGenericTreeTestData,\n 'childrenCount',\n i,\n );\n\n if (i !== 4) {\n await expect(nodes.length, `level-${i}`).to.eq(i);\n await testLabel(_ids.at(-1)!, labels.at(-1));\n await testCount(_ids.at(-1)!, counts.at(-1)!);\n await element.updateComplete;\n } else {\n // Last node has 2 children\n await expect(nodes.length, `level-${i}`).to.eq(i + 1);\n await testLabel(_ids.at(-1)!, labels.at(-1));\n await testLabel(_ids.at(-2)!, labels.at(-2));\n await testCount(_ids.at(-1)!, counts.at(-1)!);\n await testCount(_ids.at(-2)!, counts.at(-2)!);\n }\n }\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"ix-generic-tree.test.js","sourceRoot":"","sources":["../../src/test/ix-generic-tree.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport { IxCheckbox } from '@digital-realty/ix-checkbox';\nimport { IxTextbox } from '@digital-realty/ix-textbox';\nimport { IxGenericTree } from '../IxGenericTree.js';\nimport { IxGenericTreeNode } from '../IxGenericTreeNode.js';\nimport { IxGenericTreeTestIds } from '../IxGenericTreeTestIds.js';\nimport type { IGenericTreeNode } from '../ix-generic-tree-types.js';\nimport ixGenericTreeTestData from './test-data.js';\nimport '../ix-generic-tree.js';\nimport '../ix-generic-tree-node.js';\n\nconst selectorTestId = <T extends HTMLElement>(\n element: IxGenericTree,\n id: string,\n): T | undefined => {\n let target = element.shadowRoot?.querySelector<T>(`[data-testid=\"${id}\"]`);\n if (target) return target;\n\n const nodes =\n element.shadowRoot?.querySelectorAll<IxGenericTreeNode>(\n 'ix-generic-tree-node',\n ) ?? [];\n for (const n of nodes) {\n target = n.shadowRoot!.querySelector<T>(`[data-testid=\"${id}\"]`);\n if (target) return target;\n }\n\n return undefined;\n};\n\nconst replaceNodeKey = (\n data: IGenericTreeNode,\n key: keyof IGenericTreeNode,\n value: any,\n) => {\n /* eslint-disable no-param-reassign */\n // @ts-ignore\n data[key] = value;\n if (data.children?.length) {\n data.children.forEach(child => replaceNodeKey(child, key, value));\n }\n return data;\n};\n\nconst extractNodeValues = <T>(\n data: IGenericTreeNode,\n key: keyof IGenericTreeNode,\n) => {\n const values: T[] = [];\n\n if (data[key]) {\n // @ts-ignore\n values.push(data[key]);\n }\n if (data.children?.length) {\n data.children.forEach(child =>\n values.push(...extractNodeValues<T>(child, key)),\n );\n }\n return values;\n};\n\nconst extractNodeValuesAtDepth = <T>(\n data: IGenericTreeNode,\n key: keyof IGenericTreeNode,\n depth: number,\n) => {\n const values: T[] = [];\n\n if (data[key] !== undefined && depth === 0) {\n // @ts-ignore\n values.push(data[key]);\n }\n if (data.children?.length) {\n data.children.forEach(child =>\n values.push(...extractNodeValuesAtDepth<T>(child, key, depth - 1)),\n );\n }\n return values;\n};\n\ndescribe('<ix-generic-tree>', () => {\n it('should render the search box correctly', async () => {\n const element = await fixture<IxGenericTree>(\n html`<ix-generic-tree\n .rootNode=${ixGenericTreeTestData}\n searchEnabled\n searchPlaceholder=\"placeholder\"\n ></ix-generic-tree>`,\n );\n\n let searchBox = selectorTestId<IxTextbox>(\n element,\n IxGenericTreeTestIds.SEARCH_BOX,\n );\n expect(searchBox, IxGenericTreeTestIds.SEARCH_BOX).to.exist;\n await expect(searchBox?.placeholder, 'placeholder').to.equal('placeholder');\n\n element.searchEnabled = false;\n await element.updateComplete;\n searchBox = selectorTestId<IxTextbox>(\n element,\n IxGenericTreeTestIds.SEARCH_BOX,\n );\n expect(searchBox, IxGenericTreeTestIds.SEARCH_BOX).to.not.exist;\n });\n\n it('should render the check boxes correctly', async () => {\n const data = replaceNodeKey(\n structuredClone(ixGenericTreeTestData),\n 'expanded',\n true,\n );\n\n const element = await fixture<IxGenericTree>(\n html`<ix-generic-tree\n .rootNode=${data}\n showCheckboxes\n searchEnabled\n searchPlaceholder=\"placeholder\"\n ></ix-generic-tree>`,\n );\n\n const ids = extractNodeValues<string>(data, 'id').filter(\n id => id !== 'root',\n );\n\n // Checkboxes exist and not disabled\n for (const id of ids) {\n const targetId = IxGenericTreeTestIds.CHECK_BOX_ID(id);\n const checkbox = selectorTestId<IxCheckbox>(element, targetId);\n expect(checkbox, targetId).to.exist;\n expect(checkbox?.disabled, targetId).to.be.false;\n }\n\n element.disableCheckboxes = true;\n await element.updateComplete;\n\n // Checkboxes exist and are disabled\n for (const id of ids) {\n const targetId = IxGenericTreeTestIds.CHECK_BOX_ID(id);\n const checkbox = selectorTestId<IxCheckbox>(element, targetId);\n expect(checkbox, targetId).to.exist;\n expect(checkbox?.disabled, targetId).to.be.true;\n }\n\n element.showCheckboxes = false;\n await element.updateComplete;\n\n // Checkboxes hidden\n for (const id of ids) {\n const targetId = IxGenericTreeTestIds.CHECK_BOX_ID(id);\n const checkbox = selectorTestId<IxCheckbox>(element, targetId);\n expect(checkbox, targetId).to.not.exist;\n }\n });\n\n it('should expand the nodes and render correct labels', async () => {\n const element = await fixture<IxGenericTree>(\n html`<ix-generic-tree\n .rootNode=${ixGenericTreeTestData}\n showCheckboxes\n searchEnabled\n searchPlaceholder=\"placeholder\"\n ></ix-generic-tree>`,\n );\n\n const ids = extractNodeValues<string>(ixGenericTreeTestData, 'id').filter(\n id => id !== 'root',\n );\n\n let nodes: IxGenericTreeNode[] = [];\n\n function getNodes() {\n const _nodes: IxGenericTreeNode[] = [];\n for (const id of ids) {\n const node = selectorTestId<IxGenericTreeNode>(\n element,\n IxGenericTreeTestIds.NODE_ID(id),\n );\n if (node) _nodes.push(node);\n }\n nodes = _nodes;\n }\n\n async function testLabel(id: string, label?: string) {\n const targetId = IxGenericTreeTestIds.NODE_LABEL(id);\n const target = selectorTestId<HTMLParagraphElement>(element, targetId);\n expect(target, targetId).to.exist;\n await expect(target?.innerText, label).to.eq(label);\n target?.click();\n }\n\n async function testCount(id: string, count: number) {\n const targetId = IxGenericTreeTestIds.NODE_COUNT(id);\n const target = selectorTestId<HTMLParagraphElement>(element, targetId);\n expect(target, targetId).to.exist;\n\n // A count of zero is not rendered\n await expect(target?.innerText, targetId).to.eq(\n count ? count.toString(10) : '',\n );\n }\n /* eslint-disable no-await-in-loop */\n for (let i = 1; i < 5; i += 1) {\n getNodes();\n const _ids = extractNodeValuesAtDepth<string>(\n ixGenericTreeTestData,\n 'id',\n i,\n );\n const labels = extractNodeValuesAtDepth<string>(\n ixGenericTreeTestData,\n 'label',\n i,\n );\n const counts = extractNodeValuesAtDepth<number>(\n ixGenericTreeTestData,\n 'childrenCount',\n i,\n );\n\n if (i !== 4) {\n await expect(nodes.length, `level-${i}`).to.eq(i);\n await testLabel(_ids.at(-1)!, labels.at(-1));\n await testCount(_ids.at(-1)!, counts.at(-1)!);\n await element.updateComplete;\n } else {\n // Last node has 2 children\n await expect(nodes.length, `level-${i}`).to.eq(i + 1);\n await testLabel(_ids.at(-1)!, labels.at(-1));\n await testLabel(_ids.at(-2)!, labels.at(-2));\n await testCount(_ids.at(-1)!, counts.at(-1)!);\n await testCount(_ids.at(-2)!, counts.at(-2)!);\n }\n }\n });\n});\n"]}
|
package/dist/test/test-data.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-data.js","sourceRoot":"","sources":["../../src/test/test-data.ts"],"names":[],"mappings":"AAEA,MAAM,qBAAqB,GAAqB;IAC9C,EAAE,EAAE,MAAM;IACV,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE;QACR;YACE,EAAE,EAAE,WAAW;YACf,KAAK,EAAE,QAAQ;YACf,cAAc,EAAE,IAAI;YACpB,QAAQ,EAAE,EAAE;YACZ,aAAa,EAAE,CAAC;YAChB,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE;gBACR;oBACE,EAAE,EAAE,WAAW;oBACf,KAAK,EAAE,MAAM;oBACb,cAAc,EAAE,IAAI;oBACpB,QAAQ,EAAE,WAAW;oBACrB,aAAa,EAAE,CAAC;oBAChB,QAAQ,EAAE,KAAK;oBACf,aAAa,EAAE,IAAI;oBACnB,OAAO,EAAE,KAAK;oBACd,IAAI,EAAE,KAAK;oBACX,QAAQ,EAAE;wBACR;4BACE,EAAE,EAAE,WAAW;4BACf,KAAK,EAAE,QAAQ;4BACf,cAAc,EAAE,IAAI;4BACpB,QAAQ,EAAE,WAAW;4BACrB,aAAa,EAAE,CAAC;4BAChB,QAAQ,EAAE,KAAK;4BACf,aAAa,EAAE,IAAI;4BACnB,OAAO,EAAE,KAAK;4BACd,IAAI,EAAE,MAAM;4BACZ,QAAQ,EAAE;gCACR;oCACE,EAAE,EAAE,WAAW;oCACf,KAAK,EAAE,MAAM;oCACb,cAAc,EAAE,gCAAgC;oCAChD,QAAQ,EAAE,WAAW;oCACrB,aAAa,EAAE,CAAC;oCAChB,QAAQ,EAAE,KAAK;oCACf,aAAa,EAAE,KAAK;oCACpB,OAAO,EAAE,KAAK;oCACd,IAAI,EAAE,aAAa;oCACnB,QAAQ,EAAE,EAAE;iCACb;gCACD;oCACE,EAAE,EAAE,WAAW;oCACf,KAAK,EAAE,MAAM;oCACb,cAAc,EAAE,uBAAuB;oCACvC,QAAQ,EAAE,WAAW;oCACrB,aAAa,EAAE,CAAC;oCAChB,QAAQ,EAAE,KAAK;oCACf,aAAa,EAAE,KAAK;oCACpB,OAAO,EAAE,IAAI;oCACb,IAAI,EAAE,aAAa;iCACpB;6BACF;yBACF;qBACF;iBACF;aACF;SACF;KACF;CACF,CAAC;AAEF,eAAe,qBAAqB,CAAC","sourcesContent":["import { IGenericTreeNode } from '../ix-generic-tree-types.js';\n\nconst ixGenericTreeTestData: IGenericTreeNode = {\n id: 'root',\n label: '',\n children: [\n {\n id: 'level-1-1',\n label: 'Global',\n secondaryLabel: null,\n parentId: '',\n childrenCount: 2,\n disabled: false,\n indeterminate: true,\n checked: false,\n icon: 'globe',\n children: [\n {\n id: 'level-2-1',\n label: 'EMEA',\n secondaryLabel: null,\n parentId: 'level-1-1',\n childrenCount: 2,\n disabled: false,\n indeterminate: true,\n checked: false,\n icon: 'map',\n children: [\n {\n id: 'level-3-1',\n label: 'France',\n secondaryLabel: null,\n parentId: 'level-2-1',\n childrenCount: 2,\n disabled: false,\n indeterminate: true,\n checked: false,\n icon: 'flag',\n children: [\n {\n id: 'level-4-1',\n label: 'MRS3',\n secondaryLabel: 'Porte 4, 6 Bassin Léon Gourret',\n parentId: 'level-3-1',\n childrenCount: 0,\n disabled: false,\n indeterminate: false,\n checked: false,\n icon: 'location_on',\n children: [],\n },\n {\n id: 'level-4-2',\n label: 'PAR1',\n secondaryLabel: '45 Avenue Victor Hugo',\n parentId: 'level-3-1',\n childrenCount: 0,\n disabled: false,\n indeterminate: false,\n checked: true,\n icon: 'location_on',\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n};\n\nexport default ixGenericTreeTestData;\n"]}
|
|
1
|
+
{"version":3,"file":"test-data.js","sourceRoot":"","sources":["../../src/test/test-data.ts"],"names":[],"mappings":"AAEA,MAAM,qBAAqB,GAAqB;IAC9C,EAAE,EAAE,MAAM;IACV,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE;QACR;YACE,EAAE,EAAE,WAAW;YACf,KAAK,EAAE,QAAQ;YACf,cAAc,EAAE,IAAI;YACpB,QAAQ,EAAE,EAAE;YACZ,aAAa,EAAE,CAAC;YAChB,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE;gBACR;oBACE,EAAE,EAAE,WAAW;oBACf,KAAK,EAAE,MAAM;oBACb,cAAc,EAAE,IAAI;oBACpB,QAAQ,EAAE,WAAW;oBACrB,aAAa,EAAE,CAAC;oBAChB,QAAQ,EAAE,KAAK;oBACf,aAAa,EAAE,IAAI;oBACnB,OAAO,EAAE,KAAK;oBACd,IAAI,EAAE,KAAK;oBACX,QAAQ,EAAE;wBACR;4BACE,EAAE,EAAE,WAAW;4BACf,KAAK,EAAE,QAAQ;4BACf,cAAc,EAAE,IAAI;4BACpB,QAAQ,EAAE,WAAW;4BACrB,aAAa,EAAE,CAAC;4BAChB,QAAQ,EAAE,KAAK;4BACf,aAAa,EAAE,IAAI;4BACnB,OAAO,EAAE,KAAK;4BACd,IAAI,EAAE,MAAM;4BACZ,QAAQ,EAAE;gCACR;oCACE,EAAE,EAAE,WAAW;oCACf,KAAK,EAAE,MAAM;oCACb,cAAc,EAAE,gCAAgC;oCAChD,QAAQ,EAAE,WAAW;oCACrB,aAAa,EAAE,CAAC;oCAChB,QAAQ,EAAE,KAAK;oCACf,aAAa,EAAE,KAAK;oCACpB,OAAO,EAAE,KAAK;oCACd,IAAI,EAAE,aAAa;oCACnB,QAAQ,EAAE,EAAE;iCACb;gCACD;oCACE,EAAE,EAAE,WAAW;oCACf,KAAK,EAAE,MAAM;oCACb,cAAc,EAAE,uBAAuB;oCACvC,QAAQ,EAAE,WAAW;oCACrB,aAAa,EAAE,CAAC;oCAChB,QAAQ,EAAE,KAAK;oCACf,aAAa,EAAE,KAAK;oCACpB,OAAO,EAAE,IAAI;oCACb,IAAI,EAAE,aAAa;iCACpB;6BACF;yBACF;qBACF;iBACF;aACF;SACF;KACF;CACF,CAAC;AAEF,eAAe,qBAAqB,CAAC","sourcesContent":["import type { IGenericTreeNode } from '../ix-generic-tree-types.js';\n\nconst ixGenericTreeTestData: IGenericTreeNode = {\n id: 'root',\n label: '',\n children: [\n {\n id: 'level-1-1',\n label: 'Global',\n secondaryLabel: null,\n parentId: '',\n childrenCount: 2,\n disabled: false,\n indeterminate: true,\n checked: false,\n icon: 'globe',\n children: [\n {\n id: 'level-2-1',\n label: 'EMEA',\n secondaryLabel: null,\n parentId: 'level-1-1',\n childrenCount: 2,\n disabled: false,\n indeterminate: true,\n checked: false,\n icon: 'map',\n children: [\n {\n id: 'level-3-1',\n label: 'France',\n secondaryLabel: null,\n parentId: 'level-2-1',\n childrenCount: 2,\n disabled: false,\n indeterminate: true,\n checked: false,\n icon: 'flag',\n children: [\n {\n id: 'level-4-1',\n label: 'MRS3',\n secondaryLabel: 'Porte 4, 6 Bassin Léon Gourret',\n parentId: 'level-3-1',\n childrenCount: 0,\n disabled: false,\n indeterminate: false,\n checked: false,\n icon: 'location_on',\n children: [],\n },\n {\n id: 'level-4-2',\n label: 'PAR1',\n secondaryLabel: '45 Avenue Victor Hugo',\n parentId: 'level-3-1',\n childrenCount: 0,\n disabled: false,\n indeterminate: false,\n checked: true,\n icon: 'location_on',\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n};\n\nexport default ixGenericTreeTestData;\n"]}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "Webcomponent ix-generic-tree following open-wc recommendations",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Digital Realty",
|
|
6
|
-
"version": "2.
|
|
6
|
+
"version": "2.1.2",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"main": "dist/index.js",
|
|
9
9
|
"module": "dist/index.js",
|
|
@@ -21,7 +21,8 @@
|
|
|
21
21
|
"scripts": {
|
|
22
22
|
"analyze": "cem analyze --litelement",
|
|
23
23
|
"start": "tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"web-dev-server\"",
|
|
24
|
-
"
|
|
24
|
+
"clean": "rimraf dist tsconfig.tsbuildinfo",
|
|
25
|
+
"build": "npm run clean && tsc && npm run analyze -- --exclude dist",
|
|
25
26
|
"prepublish": "tsc && npm run analyze -- --exclude dist",
|
|
26
27
|
"lint": "eslint --ext .ts,.html . --ignore-path .gitignore && prettier \"**/*.ts\" --check --ignore-path .gitignore",
|
|
27
28
|
"format": "eslint --ext .ts,.html . --fix --ignore-path .gitignore && prettier \"**/*.ts\" --write --ignore-path .gitignore",
|
|
@@ -30,11 +31,11 @@
|
|
|
30
31
|
"test:watch": "tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wtr --watch\""
|
|
31
32
|
},
|
|
32
33
|
"dependencies": {
|
|
33
|
-
"@digital-realty/ix-checkbox": "^1.2
|
|
34
|
-
"@digital-realty/ix-icon": "^1.1
|
|
35
|
-
"@digital-realty/ix-icon-button": "^1.1
|
|
36
|
-
"@digital-realty/ix-progress": "^1.
|
|
37
|
-
"@digital-realty/ix-textbox": "^2.
|
|
34
|
+
"@digital-realty/ix-checkbox": "^1.3.2",
|
|
35
|
+
"@digital-realty/ix-icon": "^1.2.1",
|
|
36
|
+
"@digital-realty/ix-icon-button": "^1.2.1",
|
|
37
|
+
"@digital-realty/ix-progress": "^1.3.1",
|
|
38
|
+
"@digital-realty/ix-textbox": "^2.3.1",
|
|
38
39
|
"lit": "^3.1.4"
|
|
39
40
|
},
|
|
40
41
|
"devDependencies": {
|
|
@@ -52,6 +53,7 @@
|
|
|
52
53
|
"husky": "^9.0.11",
|
|
53
54
|
"lint-staged": "^15.2.7",
|
|
54
55
|
"prettier": "^3.3.2",
|
|
56
|
+
"rimraf": "^3.0.2",
|
|
55
57
|
"tslib": "^2.6.3",
|
|
56
58
|
"typescript": "^5.5.3"
|
|
57
59
|
},
|
|
@@ -97,5 +99,5 @@
|
|
|
97
99
|
"README.md",
|
|
98
100
|
"LICENSE"
|
|
99
101
|
],
|
|
100
|
-
"gitHead": "
|
|
102
|
+
"gitHead": "6a531416827353d6b89aed1131f2f940f7b0fa50"
|
|
101
103
|
}
|