Skip to content

Commit aa2e2ab

Browse files
committed
Fixing bugs
1 parent 754ff0b commit aa2e2ab

File tree

7 files changed

+39
-40
lines changed

7 files changed

+39
-40
lines changed

src/pg/buttonMenu/__examples__/basic/basic.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<div class="example">
2-
<pg-button-menu part="menu"></pg-button-menu>
2+
<pg-button-menu part="menu" label="Options"></pg-button-menu>
33
<div>
44
<code>value: <code part="value"></code></code>
55
</div>

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export default class XPgButtonMenuBasic extends HTMLElement {
1313
@Part() $value: HTMLSpanElement;
1414

1515
connectedCallback() {
16+
this.$menu.label = 'Options';
1617
this.$menu.items = [{
1718
value: 'item1',
1819
label: 'Item 1'

src/pg/buttonMenu/buttonMenu.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,8 @@
55
span {
66
align-self: center;
77
display: flex;
8+
}
9+
10+
[part=collapse] {
11+
display: none;
812
}

src/pg/buttonMenu/buttonMenu.html

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
11
<pg-button part="button">
2-
<span part="expand">
3-
<pg-icon path="M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z"></pg-icon>
4-
</span>
5-
<span part="collapse">
6-
<pg-icon path="M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z"></pg-icon>
7-
</span>
2+
<span part="label"></span>
3+
<pg-icon part="icon" path="M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z"></pg-icon>
84
</pg-button>

src/pg/buttonMenu/buttonMenu.ts

Lines changed: 29 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Component, Part, Prop } from '@pictogrammers/element';
22

33
import PgMenuItem from '../menuItem/menuItem';
4+
import PgIcon from '../icon/icon';
45
import PgOverlayMenu from '../overlayMenu/overlayMenu';
56

67
import '../button/button';
@@ -9,7 +10,8 @@ import PgButton from '../button/button';
910
import template from './buttonMenu.html';
1011
import style from './buttonMenu.css';
1112

12-
const t = [true, 'true', ''];
13+
const IconExpand = 'M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z';
14+
const IconCollapse = 'M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z';
1315

1416
@Component({
1517
selector: 'pg-button-menu',
@@ -19,51 +21,48 @@ const t = [true, 'true', ''];
1921
export default class PgButtonMenu extends HTMLElement {
2022
@Prop() items: any[] = [];
2123
@Prop() value: any = null;
24+
@Prop() label: string = '';
25+
@Prop() default: any = null;
2226

2327
@Part() $button: PgButton;
24-
@Part() $expand: HTMLSlotElement;
25-
@Part() $collapse: HTMLSlotElement;
28+
@Part() $icon: PgIcon;
29+
@Part() $label: HTMLSpanElement;
2630

2731
connectedCallback() {
28-
this.$button.addEventListener('click', (e) => {
29-
e.stopPropagation();
30-
this.#handleClick();
31-
// open menu
32-
/*this.dispatchEvent(
33-
new CustomEvent('click', {
34-
detail: {
35-
active: this.active
36-
}
37-
})
38-
);*/
39-
});
32+
this.$button.addEventListener('click', this.#handleClick.bind(this));
33+
}
34+
35+
render(changes) {
36+
if (changes.label) {
37+
this.$label.textContent = this.label;
38+
}
4039
}
4140

4241
#menuOpen = false;
4342
async #handleClick() {
44-
if (this.#menuOpen) { return; }
43+
this.#menuOpen = !this.#menuOpen;
44+
this.$icon.path = this.#menuOpen ? IconCollapse : IconExpand;
45+
if (!this.#menuOpen) { return; }
4546
const items = this.items.map((item) => {
4647
return {
4748
type: PgMenuItem,
4849
label: item.label,
4950
value: item.value
5051
};
5152
});
52-
this.#menuOpen = true;
53-
/*
53+
// Create Menu
54+
const result = await PgOverlayMenu.open({
55+
source: this,
56+
default: this.default ?? items[0],
57+
value: items.find(x => x.value === this.value) ?? null,
58+
items: items
59+
});
5460
if (result !== undefined) {
55-
this.#value = result;
56-
}
57-
this.$result.textContent = result;
58-
*/
59-
this.#menuOpen = false;
60-
}
61-
62-
63-
render(changes) {
64-
if (changes.active) {
65-
this.$expand.style.display = this.$button.active ? 'flex' : 'none';
66-
this.$collapse.style.display = this.$button.active ? 'none' : 'flex';
61+
this.dispatchEvent(new CustomEvent('change', {
62+
detail: {
63+
value: result.value
64+
}
65+
}));
6766
}
6867
}
6968
}

src/pg/overlayMenu/overlayMenu.css

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,8 @@
77
padding: 0;
88
border: 0;
99
background: transparent;
10-
overflow: visible;
1110
--pg-menu-box-shadow: 0 0.125rem 0.5rem rgba(0, 0, 0, 0.25);
12-
top: anchor(top);
11+
top: calc(anchor(bottom) - 0.25rem);
1312
left: anchor(left);
1413
min-width: calc(anchor-size(width) + calc(2 * var(--pg-menu-padding, 0.25rem)));
1514
translate: var(--pg-overlay-menu-_x, 0) var(--pg-overlay-menu-_y, 0);

src/pg/overlaySelectMenu/overlaySelectMenu.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
overflow: visible;
1111
--pg-menu-box-shadow: 0 0.125rem 0.5rem rgba(0, 0, 0, 0.25);
1212
top: anchor(top);
13-
left: calc(anchor(right) + 0.25rem);
13+
left: anchor(left);
1414
min-width: calc(anchor-size(width) + calc(2 * var(--pg-menu-padding, 0.25rem)));
1515
margin: var(--pg-overlay-menu-_y, 0) 0 0 var(--pg-overlay-menu-_x, 0);
1616
}

0 commit comments

Comments
 (0)