Skip to content

Commit 8d99590

Browse files
committed
Modal and element version bump.
1 parent 7ef406d commit 8d99590

File tree

15 files changed

+186
-15
lines changed

15 files changed

+186
-15
lines changed

package-lock.json

Lines changed: 9 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"private": true,
33
"name": "@pictogrammers/components",
44
"type": "module",
5-
"version": "0.4.7",
5+
"version": "0.4.8",
66
"license": "MIT",
77
"author": "Austin Andrews",
88
"scripts": {
@@ -25,7 +25,7 @@
2525
"remarkable": "^2.0.1"
2626
},
2727
"devDependencies": {
28-
"@pictogrammers/element": "0.0.68",
28+
"@pictogrammers/element": "0.0.70",
2929
"@pictogrammers/element-jest": "^0.1.10",
3030
"@pictogrammers/element-webpack": "^0.1.56",
3131
"cross-env": "^7.0.3",

src/pg/app/app.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
flex-direction: column;
5858
grid-column: 1;
5959
grid-row: 2;
60-
min-width: 10rem;
60+
min-width: 12rem;
6161
max-width: 20rem;
6262
}
6363

src/pg/app/app.ts

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

33
import template from './app.html';
44
import style from './app.css';
@@ -14,9 +14,14 @@ export default class PgApp extends HTMLElement {
1414
@Part() $side: HTMLDivElement;
1515
@Part() $resize: HTMLButtonElement;
1616

17+
@Local('app') store = new Map([
18+
['width', 12 * 16]
19+
]);
20+
1721
connectedCallback() {
1822
this.$logo.addEventListener('click', this.#handleClick.bind(this));
1923
this.$resize.addEventListener('pointerdown', this.#handlePointerDown.bind(this));
24+
this.$side.style.width = `${this.store.get('width')}px`;
2025
}
2126

2227
#handleClick() {
@@ -33,6 +38,7 @@ export default class PgApp extends HTMLElement {
3338
const x = currentX - ee.clientX;
3439
const width = currentWidth - x;
3540
this.$side.style.width = `${width}px`;
41+
this.store.set('width', Math.floor(width));
3642
}
3743
const handlePointerUp = () => {
3844
this.$resize.classList.remove('dragging');
@@ -42,4 +48,4 @@ export default class PgApp extends HTMLElement {
4248
document.addEventListener('pointermove', handlePointerMove);
4349
document.addEventListener('pointerup', handlePointerUp);
4450
}
45-
}
51+
}

src/pg/modal/README.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# `PgModalAlert`
2+
3+
The `PgModal` is a base class for creating modals.
4+
5+
```typescript
6+
import '@pictogrammers/components/pgModal';
7+
import PgModal from '@pictogrammers/components/pgModal';
8+
```
9+
10+
```typescript
11+
import { Component, Prop, Part } from '@pictogrammers/element';
12+
13+
import template from './modal.html';
14+
import style from './modal.css';
15+
16+
@Component({
17+
selector: 'my-modal',
18+
template,
19+
style
20+
})
21+
export default class MyModal extends PgModal {
22+
@Part() $close: HTMLButtonElement;
23+
connectedCallback() {
24+
this.$close.addEventListener('click', () => {
25+
this.close();
26+
});
27+
}
28+
}
29+
```
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<div class="example">
2+
<button part="button">Launch MyModal</button>
3+
<div><code>Result: </code><code part="result"></code></div>
4+
</div>
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import { Component, Part, Prop } from '@pictogrammers/element';
2+
import PgModal from '../../modal';
3+
4+
import template from './basic.html';
5+
6+
@Component({
7+
selector: 'x-my-modal',
8+
template: `<main>Hello! <button part="close">Close</button></main>`
9+
})
10+
export class XMyModal extends PgModal {
11+
12+
@Part() $close: HTMLButtonElement;
13+
14+
connectedCallback() {
15+
this.$close.addEventListener('click', () => {
16+
this.close();
17+
});
18+
}
19+
}
20+
21+
@Component({
22+
selector: 'x-pg-modal-basic',
23+
template
24+
})
25+
export default class XPgModalBasic extends HTMLElement {
26+
27+
@Part() $button: HTMLButtonElement;
28+
@Part() $result: HTMLSpanElement;
29+
30+
connectedCallback() {
31+
this.$button.addEventListener('click', this.handleClick.bind(this));
32+
}
33+
34+
async handleClick() {
35+
const result = await XMyModal.open({
36+
header: 'Delete Item',
37+
message: 'Are you sure you want to delete the item?'
38+
});
39+
this.$result.textContent = `${result}`;
40+
}
41+
42+
}

src/pg/modal/modal.css

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
.backdrop {
2+
display: flex;
3+
position: fixed;
4+
top: 0;
5+
left: 0;
6+
right: 0;
7+
bottom: 0;
8+
background: rgba(0, 0, 0, 0.6);
9+
justify-content: center;
10+
align-items: center;
11+
}
12+
.dialog {
13+
background: #fff;
14+
border-radius: 0.5rem;
15+
box-shadow: 0 1px 1rem rgba(0, 0, 0, 0.5);
16+
overflow: hidden;
17+
min-width: 15rem;
18+
}
19+
header {
20+
border-bottom: 1px solid #ccc;
21+
background: #f1f1f1;
22+
padding: 0.75rem 1rem;
23+
}
24+
header h2 {
25+
font-size: 1.25rem;
26+
margin: 0;
27+
font-weight: normal;
28+
}
29+
main {
30+
padding: 0.5rem 1rem;
31+
}
32+
footer {
33+
display: flex;
34+
flex-direction: row;
35+
padding: 0.75rem 1rem;
36+
border-top: 1px solid #ccc;
37+
background: #f1f1f1;
38+
justify-content: flex-end;
39+
gap: 0.5rem;
40+
}

src/pg/modal/modal.html

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<div class="backdrop">
2+
<div class="dialog"
3+
role="dialog"
4+
id="dialog1"
5+
aria-labelledby="dialog1_label"
6+
aria-modal="true">
7+
<child/>
8+
</div>
9+
</div>

src/pg/modal/modal.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { Component } from '@pictogrammers/element';
2+
3+
import template from './modal.html';
4+
import style from './modal.css';
5+
6+
import PgOverlay from '../overlay/overlay';
7+
8+
@Component({
9+
template,
10+
style
11+
})
12+
export default class PgModal extends PgOverlay {
13+
14+
}

0 commit comments

Comments
 (0)