Skip to content

Commit d6e6711

Browse files
committed
Bug fixes needs a lot of rework.
1 parent 33ef6d2 commit d6e6711

File tree

9 files changed

+60
-10
lines changed

9 files changed

+60
-10
lines changed

src/pg/button/button.css

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
font-size: var(--pg-button-font-size, 1rem);
1111
line-height: var(--pg-button-line-height, 1.5rem);
1212
border: 1px solid var(--pg-button-border-color, #453C4F);
13-
background-color: var(--pg-button-background-color, #fff);
13+
background-color: var(--pg-button-background-color, #FFFFFF);
1414
color: var(--pg-button-color, #453C4F);
1515
padding: var(--pg-button-padding, 0.25rem 0.5rem);
1616
border-radius: 0.25rem;
@@ -21,8 +21,8 @@
2121
[part="button"]:hover {
2222
border: 1px solid var(--pg-button-hover-border-color, #453C4F);
2323
background-color: var(--pg-button-hover-background-color, #453C4F);
24-
color: var(--pg-button-hover-color, #fff);
25-
--pg-icon-color: var(--pg-button-hover-color, #fff);
24+
color: var(--pg-button-hover-color, #FFFFFF);
25+
--pg-icon-color: var(--pg-button-hover-color, #FFFFFF);
2626
}
2727

2828
[part="button"]:active {

src/pg/inputSelect/__examples__/basic/basic.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export default class XPgInputSelectBasic extends HTMLElement {
1919
{ label: 'Option 3', value: 'option3' },
2020
{ label: 'Option 4', value: 'option4' }
2121
);
22+
this.$input.default = { label: 'None', value: '', disabled: true };
2223
//this.$input.value = this.$input.options[1].value;
2324
this.$input.addEventListener('change', this.#handleChange.bind(this));
2425
}

src/pg/inputSelect/inputSelect.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
[part=button] {
66
font-family: var(--pg-font-family);
7+
background: var(--pg-input-select-background, #FFFFFF);
78
text-align: left;
89
display: grid;
910
grid-template-rows: auto;

src/pg/inputSelect/inputSelect.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export default class PgInputSelect extends HTMLElement {
1818
@Prop() options: InputSelectItem[] = [];
1919
@Prop() value: string = '';
2020
@Prop() name: string = '';
21+
@Prop() default: any = null;
2122

2223
@Part() $button: HTMLButtonElement;
2324
@Part() $label: HTMLSpanElement;
@@ -27,8 +28,12 @@ export default class PgInputSelect extends HTMLElement {
2728
}
2829

2930
render(changes) {
30-
if (changes.value) {
31-
this.$label.textContent = this.value ? this.value : '\u00A0';
31+
if (changes.value || changes.default) {
32+
this.$label.textContent = this.value
33+
? this.value
34+
: this.default
35+
? this.default.label
36+
: '\u00A0'; // nbsp
3237
}
3338
}
3439

@@ -38,6 +43,7 @@ export default class PgInputSelect extends HTMLElement {
3843
this.#menuOpen = true;
3944
const result = await PgOverlayMenu.open({
4045
source: this.$button,
46+
default: this.default,
4147
value: this.options.find(x => x.value === this.value) ?? null,
4248
items: this.options
4349
});

src/pg/menu/menu.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ export default class PgMenu extends HTMLElement {
3636
}
3737

3838
focus(index) {
39+
if (index === -1) {
40+
index = this.items[0].disabled ? 1 : 0;
41+
}
3942
const item = this.$items.children[index] as HTMLElement;
4043
item?.focus();
4144
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Component, Part, Prop } from '@pictogrammers/element';
2+
import PgMenuItem from '../../menuItem';
23

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

@@ -7,5 +8,5 @@ import template from './basic.html';
78
template
89
})
910
export default class XPgMenuItemBasic extends HTMLElement {
10-
11+
@Part() $item: PgMenuItem;
1112
}

src/pg/menuItem/menuItem.css

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
}
44

55
[part=label] {
6+
display: flex;
7+
align-items: center;
68
font-family: var(--pg-font-family);
79
text-align: var(--pg-menu-item-text-align, left);
810
background: var(--pg-menu-item-background, transparent);
9-
padding: var(--pg-menu-padding, 0.25rem 0.5rem);
11+
padding: var(--pg-menu-padding, 0.25rem 0.5rem 0.25rem 1.5rem);
1012
border-color: transparent;
1113
border-width: 0;
1214
border-style: solid;
@@ -17,11 +19,28 @@
1719
color: var(--pg-menu-item-color, #FFFFFF);
1820
}
1921

20-
[part=label]:hover {
22+
[part=label]:not(:disabled):hover
23+
/*[part=label]:not(:disabled):focus*/ {
2124
background: #248BE5;
2225
color: #FFFFFF;
2326
}
2427

25-
[part=label]:active {
28+
[part=label]:not(:disabled):active {
2629
background: #2B9CFF;
30+
}
31+
32+
[part=label]:disabled {
33+
color: #BBBBBB;
34+
}
35+
36+
[part=label].checked::before {
37+
position: absolute;
38+
translate: -1.5rem 0;
39+
content: url("data:image/svg+xml; utf8, <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M 17.4999,10.2501L 10.5,17.25L 6.49999,13.25L 7.9142,11.8358L 10.5,14.4216L 16.0857,8.83584L 17.4999,10.2501 Z' fill='white' /></svg>");
40+
width: 1.5rem;
41+
height: 1.5rem;
42+
}
43+
44+
[part=label].checked:disabled::before {
45+
content: url("data:image/svg+xml; utf8, <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M 17.4999,10.2501L 10.5,17.25L 6.49999,13.25L 7.9142,11.8358L 10.5,14.4216L 16.0857,8.83584L 17.4999,10.2501 Z' fill='rgb(187, 187, 187)' /></svg>");
2746
}

src/pg/menuItem/menuItem.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,21 @@ const noIcon = 'M0 0h24v24H0V0zm2 2v20h20V2H2z';
1313
export default class PgMenuItem extends HTMLElement {
1414
@Prop() index: number;
1515
@Prop() label: string = '';
16+
@Prop() checked: boolean = false;
17+
@Prop() disabled: boolean = false;
1618

17-
@Part() $label: HTMLDivElement;
19+
@Part() $label: HTMLButtonElement;
1820

1921
render(changes) {
2022
if (changes.label) {
2123
this.$label.textContent = this.label;
2224
}
25+
if (changes.disabled) {
26+
this.$label.disabled = this.disabled;
27+
}
28+
if (changes.checked) {
29+
this.$label.classList.toggle('checked', this.checked);
30+
}
2331
}
2432

2533
connectedCallback() {

src/pg/overlayMenu/overlayMenu.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,16 @@ export default class PgOverlayMenu extends PgOverlay {
1515
@Part() $menu: PgMenu;
1616

1717
@Prop() source: HTMLElement | null = null;
18+
@Prop() default: any = null;
1819
@Prop() items: any[] = [];
1920
@Prop() value: any = null;
2021

2122
render(changes) {
2223
if (changes.items) {
24+
if (this.value !== null) {
25+
this.items.forEach(item => item.checked = false);
26+
this.items.find(item => item.value === this.value.value).checked = true;
27+
}
2328
this.$menu.items = this.items;
2429
}
2530
}
@@ -53,6 +58,12 @@ export default class PgOverlayMenu extends PgOverlay {
5358
y += (rect.height - height) / 2;
5459
}
5560
} else if (this.items.length > 0) {
61+
// insert default if defined
62+
if (this.default) {
63+
this.default.checked = true;
64+
this.$menu.items.unshift(this.default);
65+
}
66+
// focus first item
5667
const height = this.$menu.getItemHeight(0);
5768
y -= this.$menu.getItemOffset(0, 0);
5869
if (rect?.height !== height && rect?.height) {

0 commit comments

Comments
 (0)