Skip to content

Commit 83aee4e

Browse files
committed
Various updates.
1 parent 86a000b commit 83aee4e

File tree

16 files changed

+160
-14
lines changed

16 files changed

+160
-14
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
<div part="wrapper">
2-
<select part="select"></select>
2+
<button part="select"></button>
33
<svg part="chevron" viewBox="0 0 24 24"><path d="M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z" /></svg>
44
</div>

src/pg/inputSelect/inputSelect.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Component, Prop, Part } from '@pictogrammers/element';
1+
import { Component, Prop, Part, forEach } from '@pictogrammers/element';
22

33
import template from './inputSelect.html';
44
import style from './inputSelect.css';
@@ -20,18 +20,20 @@ export default class PgInputSelect extends HTMLElement {
2020

2121
@Part() $select: HTMLSelectElement;
2222

23+
//cacheKeys: string[] = [];
24+
2325
render(changes) {
24-
if (changes.options) {
25-
this.options.forEach(o => {
26+
/*if (changes.options) {
27+
this.options.forEach((o) => {
2628
const option = document.createElement('option');
27-
option.innerText = o.label;
29+
option.textContent = o.label;
2830
option.value = o.value;
2931
this.$select.appendChild(option);
3032
});
3133
if (this.$select.value !== this.value) {
3234
this.$select.value = this.value;
3335
}
34-
}
36+
}*/
3537
if (changes.value) {
3638
if (this.$select.value !== this.value) {
3739
this.$select.value = this.value;
@@ -40,6 +42,13 @@ export default class PgInputSelect extends HTMLElement {
4042
}
4143

4244
connectedCallback() {
45+
forEach({
46+
container: this.$select,
47+
items: this.options,
48+
type: () => {
49+
return HTMLOptionElement;
50+
}
51+
})
4352
this.$select.addEventListener('change', this.handleSelect.bind(this));
4453
}
4554

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
<div class="example">
2-
<pg-nav
3-
logo="M2,2H8V4H16V2H22V8H20V16H22V22H16V20H8V22H2V16H4V8H2V2M16,8V6H8V8H6V16H8V18H16V16H18V8H16M4,4V6H6V4H4M18,4V6H20V4H18M4,18V20H6V18H4M18,18V20H20V18H18Z"
4-
name="Material Design Icons"></pg-nav>
2+
<pg-menu part="menu"></pg-menu>
53
</div>

src/pg/menu/__examples__/basic/basic.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Component, Part, Prop } from '@pictogrammers/element';
2+
import PgMenu from '../../menu';
23

34
import template from './basic.html';
45

@@ -7,5 +8,12 @@ import template from './basic.html';
78
template
89
})
910
export default class XPgMenuBasic extends HTMLElement {
11+
@Part() $menu: PgMenu;
1012

13+
connectedCallback() {
14+
this.$menu.items = [{
15+
label: 'Item 1',
16+
value: 'item1'
17+
}];
18+
}
1119
}

src/pg/menu/menu.css

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
11
:host {
22
display: contents;
33
}
4+
5+
[part="items"] {
6+
display: flex;
7+
flex-direction: column;
8+
}

src/pg/menu/menu.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ const noIcon = 'M0 0h24v24H0V0zm2 2v20h20V2H2z';
1212
template
1313
})
1414
export default class PgMenu extends HTMLElement {
15+
1516
@Prop() items: any[] = [];
1617

1718
@Part() $items: HTMLDivElement;
@@ -22,6 +23,14 @@ export default class PgMenu extends HTMLElement {
2223
items: this.items,
2324
type: (item) => {
2425
return PgMenuItem;
26+
},
27+
create: ($item) => {
28+
$item.addEventListener('select', (e: any) => {
29+
const { index } = e.detail;
30+
this.dispatchEvent(new CustomEvent('select', {
31+
detail: { index }
32+
}))
33+
});
2534
}
2635
});
2736
}
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
<div class="example">
2-
<pg-nav
3-
logo="M2,2H8V4H16V2H22V8H20V16H22V22H16V20H8V22H2V16H4V8H2V2M16,8V6H8V8H6V16H8V18H16V16H18V8H16M4,4V6H6V4H4M18,4V6H20V4H18M4,18V20H6V18H4M18,18V20H20V18H18Z"
4-
name="Material Design Icons"></pg-nav>
2+
<pg-menu-item part="item"></pg-menu-item>
53
</div>

src/pg/menuItem/menuItem.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<div part="label"></div>
1+
<button part="label"></button>

src/pg/menuItem/menuItem.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,23 @@ const noIcon = 'M0 0h24v24H0V0zm2 2v20h20V2H2z';
1111
template
1212
})
1313
export default class PgMenuItem extends HTMLElement {
14+
@Prop() index: number;
1415
@Prop() label: string = '';
1516

1617
@Part() $label: HTMLDivElement;
1718

18-
connectedCallback() {
19+
render(changes) {
20+
if (changes.label) {
21+
this.$label.textContent = this.label;
22+
}
23+
}
1924

25+
connectedCallback() {
26+
this.$label.addEventListener('click', () => {
27+
this.dispatchEvent(new CustomEvent('select', {
28+
detail: { index: this.index }
29+
}));
30+
})
2031
}
2132

2233
}

src/pg/overlayMenu/README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Overlay Menu
2+
3+
The `PgOverlayMenu` creates a menu.
4+
5+
```typescript
6+
const result = await PgOverlayMenu.open({
7+
source: this.$element,
8+
items: [{
9+
label: 'Item 1',
10+
value: 'item1'
11+
}, {
12+
label: 'Item 2',
13+
value: 'item2'
14+
}]
15+
});
16+
```

0 commit comments

Comments
 (0)