Skip to content

Commit 64ea8aa

Browse files
committed
Nested menus.
1 parent 30d09e3 commit 64ea8aa

File tree

7 files changed

+33
-16
lines changed

7 files changed

+33
-16
lines changed

src/components/pg/buttonMenu/__examples__/basic/basic.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export default class XPgButtonMenuBasic extends HTMLElement {
3737
}
3838

3939
handleChange(e: any) {
40-
const { active } = e.detail;
41-
this.$value.textContent = `${active}`;
40+
const { indexes, item } = e.detail;
41+
this.$value.textContent = `indexes: ${indexes.join(',')}; item: ${JSON.stringify(item)}`;
4242
}
4343
}

src/components/pg/buttonMenu/buttonMenu.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,12 @@ export default class PgButtonMenu extends HTMLElement {
5252
});
5353
this.$icon.path = IconExpand;
5454
if (result !== undefined) {
55+
const { indexes, item } = result;
5556
this.dispatchEvent(new CustomEvent('change', {
5657
detail: {
57-
value: result.value
58+
indexes,
59+
item,
60+
value: item.value
5861
}
5962
}));
6063
}

src/components/pg/menu/menu.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,12 @@ export default class PgMenu extends HTMLElement {
3434
}));
3535
});
3636
$item.addEventListener('select', (e: any) => {
37-
const { index } = e.detail;
37+
const { indexes, item } = e.detail;
38+
const lastIndex = indexes[indexes.length - 1];
3839
this.dispatchEvent(new CustomEvent('select', {
3940
detail: {
40-
indexes: [index],
41-
item
41+
indexes,
42+
item: item ? item : this.items[lastIndex],
4243
}
4344
}));
4445
});

src/components/pg/menuItem/menuItem.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,11 @@ export default class PgMenuItem extends HTMLElement {
5656
if (result === null) {
5757
this.focus();
5858
} else if (result) {
59+
const { indexes, item } = result;
5960
this.dispatchEvent(new CustomEvent('select', {
6061
detail: {
6162
item: result,
62-
indexes: [this.index],
63+
indexes: [...indexes, this.index],
6364
}
6465
}));
6566
} else {
@@ -73,7 +74,7 @@ export default class PgMenuItem extends HTMLElement {
7374
this.dispatchEvent(new CustomEvent('select', {
7475
detail: {
7576
indexes: [this.index],
76-
item: this.items[this.index],
77+
item: undefined, // determined by parent
7778
}
7879
}));
7980
}

src/components/pg/menuItemIcon/menuItemIcon.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,11 @@ export default class PgMenuItemIcon extends HTMLElement {
6363
if (result === null) {
6464
this.focus();
6565
} else if (result) {
66+
const { indexes, item } = result;
6667
this.dispatchEvent(new CustomEvent('select', {
6768
detail: {
68-
item: result
69+
indexes: [...indexes, this.index],
70+
item,
6971
}
7072
}));
7173
} else {
@@ -78,8 +80,8 @@ export default class PgMenuItemIcon extends HTMLElement {
7880
} else {
7981
this.dispatchEvent(new CustomEvent('select', {
8082
detail: {
81-
indexex: [this.index],
82-
item: this.items[this.index]
83+
indexes: [this.index],
84+
item: undefined, // determined by parent
8385
}
8486
}));
8587
}
@@ -118,9 +120,11 @@ export default class PgMenuItemIcon extends HTMLElement {
118120
if (result === null) {
119121
this.focus();
120122
} else if (result) {
123+
const { indexes, item } = result;
121124
this.dispatchEvent(new CustomEvent('select', {
122125
detail: {
123-
item: result
126+
indexes: [...indexes, this.index],
127+
item,
124128
}
125129
}));
126130
} else {

src/components/pg/overlayMenu/overlayMenu.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,12 @@ export default class PgOverlayMenu extends PgOverlay {
6060
}
6161

6262
#handleSelect(e: any) {
63-
e.detail.item.index = e.detail.index;
64-
this.close(e.detail.item);
63+
// e.detail.item.index = e.detail.index;
64+
const { indexes, item } = e.detail;
65+
this.close({
66+
indexes,
67+
item
68+
});
6569
this.source?.focus();
6670
}
6771
}

src/components/pg/overlaySubMenu/overlaySubMenu.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,12 @@ export default class PgOverlaySubMenu extends PgOverlay {
9696
}
9797

9898
#handleSelect(e: any) {
99-
e.detail.item.index = e.detail.index;
100-
this.close(e.detail.item);
99+
const { item, indexes } = e.detail;
100+
//e.detail.item.index = e.detail.indexes;
101+
this.close({
102+
indexes,
103+
item,
104+
});
101105
this.source?.focus();
102106
}
103107
}

0 commit comments

Comments
 (0)