Skip to content

Commit a18f646

Browse files
committed
Cleaning up the demo
1 parent c428340 commit a18f646

File tree

3 files changed

+40
-42
lines changed

3 files changed

+40
-42
lines changed

src/pg/tree/__examples__/basic/basic.ts

Lines changed: 28 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,18 @@ import PgTree from '../../tree';
44
import template from './basic.html';
55
import PgTreeButtonIcon from '../../../treeButtonIcon/treeButtonIcon';
66

7+
const IconAccount = 'M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z';
78
const IconEye = 'M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z';
89
const IconEyeOff = 'M2,5.27L3.28,4L20,20.72L18.73,22L15.65,18.92C14.5,19.3 13.28,19.5 12,19.5C7,19.5 2.73,16.39 1,12C1.69,10.24 2.79,8.69 4.19,7.46L2,5.27M12,9A3,3 0 0,1 15,12C15,12.35 14.94,12.69 14.83,13L11,9.17C11.31,9.06 11.65,9 12,9M12,4.5C17,4.5 21.27,7.61 23,12C22.18,14.08 20.79,15.88 19,17.19L17.58,15.76C18.94,14.82 20.06,13.54 20.82,12C19.17,8.64 15.76,6.5 12,6.5C10.91,6.5 9.84,6.68 8.84,7L7.3,5.47C8.74,4.85 10.33,4.5 12,4.5M3.18,12C4.83,15.36 8.24,17.5 12,17.5C12.69,17.5 13.37,17.43 14,17.29L11.72,15C10.29,14.85 9.15,13.71 9,12.28L5.6,8.87C4.61,9.72 3.78,10.78 3.18,12Z';
910
const IconLock = 'M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z';
1011
const IconUnlock = 'M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z';
1112

12-
function createItem(key) {
13+
function createItem(label) {
1314
return {
1415
icon: {
15-
path: IconEye
16+
path: IconAccount
1617
},
17-
label: 'Item 1',
18+
label,
1819
actions: [{
1920
type: PgTreeButtonIcon,
2021
icon: IconEye,
@@ -25,6 +26,9 @@ function createItem(key) {
2526
label: 'Delete',
2627
icon: IconUnlock,
2728
enabled: false
29+
}],
30+
items: [{
31+
label: 'Sub Item'
2832
}]
2933
};
3034
}
@@ -61,54 +65,33 @@ export default class XPgTreeBasic extends HTMLElement {
6165
}
6266
});
6367
this.$tree.addEventListener('rename', (e: any) => {
64-
const { index, label } = e.detail;
65-
this.$tree.items[index].label = label;
68+
const { indexes, label } = e.detail;
69+
const item = this.#getItem(indexes);
70+
item.label = label;
6671
});
72+
let previousIndexes = null;
6773
this.$tree.addEventListener('select', (e: any) => {
6874
const { indexes } = e.detail;
69-
const item = indexes.reduce((item, index) => {
70-
return item.items[index];
71-
}, this.$tree);
75+
const item = this.#getItem(indexes);
7276
item.selected = true;
77+
if (previousIndexes) {
78+
const previousItem = this.#getItem(previousIndexes);
79+
previousItem.selected = false;
80+
}
81+
previousIndexes = indexes;
7382
});
7483
this.$tree.addEventListener('menu', (e: any) => {
7584
// action clicked
7685
});
77-
this.$tree.items = [{
78-
icon: {
79-
path: IconEye
80-
},
81-
selected: true,
82-
label: 'Item 1',
83-
actions: [{
84-
type: PgTreeButtonIcon,
85-
icon: IconEye,
86-
enabled: true
87-
},
88-
{
89-
type: PgTreeButtonIcon,
90-
label: 'Delete',
91-
icon: IconUnlock,
92-
enabled: false
93-
}]
94-
},
95-
{
96-
label: 'Item 2',
97-
items: [
98-
{
99-
label: 'Nested'
100-
}
101-
]
102-
}];
103-
// Push to same array instance!
104-
this.$tree.items.push({ label: 'testing' });
86+
this.$tree.items = [
87+
createItem('Item 1'),
88+
createItem('Item 2')
89+
];
10590

10691
let next: number = 2;
10792
this.$addItem.addEventListener('click', () => {
10893
next++;
109-
this.$tree.items.push({
110-
label: `Item ${next}`
111-
});
94+
this.$tree.items.push(createItem(`Item ${next}`));
11295
});
11396

11497
this.$removeItem.addEventListener('click', () => {
@@ -120,4 +103,10 @@ export default class XPgTreeBasic extends HTMLElement {
120103
this.$tree.items[1].label = `Updated ${updatedTimes++}`;
121104
});
122105
}
106+
107+
#getItem(indexes: number[]) {
108+
return indexes.reduce((item, index) => {
109+
return item.items[index];
110+
}, this.$tree);
111+
}
123112
}

src/pg/tree/tree.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@
77
flex-direction: column;
88
background: var(--pg-tree-background, #2C2C2C);
99
padding: 0.25rem;
10+
gap: 0.25rem;
1011
}

src/pg/treeItem/treeItem.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,13 @@ export default class PgTreeItem extends HTMLElement {
3636

3737
connectedCallback() {
3838
this.$item.addEventListener('action', this.#handleAction.bind(this));
39-
this.$button.addEventListener('dblclick', this.#handleRename.bind(this));
39+
this.$button.addEventListener('dblclick', this.#handleDoubleClick.bind(this));
4040
this.$button.addEventListener('click', this.#handleClick.bind(this));
4141
this.$item.addEventListener('contextmenu', this.#handleContextMenu.bind(this));
4242
this.$input.addEventListener('blur', this.#handleBlur.bind(this));
4343
this.$input.addEventListener('keydown', this.#handleKeyDown.bind(this));
4444
this.$items.addEventListener('select', this.#handleSelect.bind(this));
45+
this.$items.addEventListener('rename', this.#handleRename.bind(this));
4546
forEach({
4647
container: this.$actions,
4748
items: this.actions,
@@ -68,6 +69,9 @@ export default class PgTreeItem extends HTMLElement {
6869
if (changes.selected) {
6970
this.$item.classList.toggle('selected', this.selected);
7071
}
72+
if (changes.items) {
73+
this.$items.classList.toggle('hide', this.items.length === 0);
74+
}
7175
}
7276

7377
#handleClick() {
@@ -92,6 +96,10 @@ export default class PgTreeItem extends HTMLElement {
9296
}));
9397
}
9498

99+
#handleRename(e: any) {
100+
e.detail.indexes.unshift(this.index);
101+
}
102+
95103
#handleSelect(e: any) {
96104
e.detail.indexes.unshift(this.index);
97105
}
@@ -100,7 +108,7 @@ export default class PgTreeItem extends HTMLElement {
100108
e.preventDefault();
101109
}
102110

103-
#handleRename(e) {
111+
#handleDoubleClick(e) {
104112
this.$button.classList.add('hide');
105113
this.$actions.classList.add('hide');
106114
this.$input.classList.remove('hide');
@@ -118,7 +126,7 @@ export default class PgTreeItem extends HTMLElement {
118126
bubbles: true,
119127
composed: true,
120128
detail: {
121-
index: this.index,
129+
indexes: [this.index],
122130
label: this.$input.value
123131
}
124132
}));

0 commit comments

Comments
 (0)