Skip to content

Commit 9a95d78

Browse files
committed
Progress on tables.
1 parent 1b97829 commit 9a95d78

File tree

15 files changed

+256
-0
lines changed

15 files changed

+256
-0
lines changed

src/pg/inputPixelEditor/__examples__/basic/basic.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ export default class XPgInputPixelEditorBasic extends HTMLElement {
4343
@Part() $saveSvg: HTMLInputElement;
4444
@Part() $savePng: HTMLInputElement;
4545

46+
@Part() $addLayer: HTMLButtonElement;
47+
4648
// MAKE A LIST COMPONENT!!!! [text | delete]
4749
@Part() $colors: HTMLPreElement;
4850
@Part() $layers: HTMLPreElement;
@@ -142,6 +144,10 @@ export default class XPgInputPixelEditorBasic extends HTMLElement {
142144
// no save
143145
}
144146
});
147+
this.$addLayer.addEventListener('click', () => {
148+
// number[][][]
149+
// this.$input.addLayer();
150+
});
145151
}
146152

147153
handleFile(e) {

src/pg/table/README.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# `<pg-preview>`
2+
3+
The `pg-table` component allows a standard way to create static tables. While it has features like the datatable it is much more lightweight lacking features like column resize and edit.
4+
5+
- `TableHeaderText`
6+
- `TableHeader`
7+
8+
```typescript
9+
import '@pictogrammers/components/pg/table';
10+
import PgTable from '@pictogrammers/components/pg/table';
11+
```
12+
13+
```html
14+
<pg-table part="table"></pg-table>
15+
```
16+
17+
| Attributes | Tested | Default | Description |
18+
| ---------- | -------- | ------- | ----------- |
19+
| columns | | [] | Column definition. |
20+
| data | | [] | Data |
21+
22+
## Columns
23+
24+
```typescript
25+
// type: TableHeaderText
26+
this.$table.columns = [{
27+
label: 'Check All',
28+
key: 'check',
29+
hideLabel: true,
30+
type: TableHeaderCheck,
31+
}, {
32+
label: 'Name',
33+
key: 'name'
34+
}, {
35+
label: 'Age',
36+
key: 'age'
37+
}, {
38+
label: 'Favorite',
39+
key: 'favorite',
40+
hideLabel: true,
41+
}];
42+
```
43+
44+
## Data
45+
46+
```typescript
47+
const IconStar = 'M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z';
48+
const IconStarOutline = 'M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z';
49+
this.$table.data = [{
50+
name: 'Dipper Pines',
51+
age: 12,
52+
favorite: {
53+
type: TableCellButtonIcon,
54+
icon: IconStar,
55+
}
56+
}, {
57+
name: 'Mabel Pines',
58+
age: 12,
59+
favorite: {
60+
type: TableCellButtonIcon,
61+
icon: IconStar,
62+
}
63+
}];
64+
```
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<div class="example">
2+
<pg-table part="table"></pg-table>
3+
<div>
4+
<button part="pushData">Push Data</button>
5+
</div>
6+
</div>
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import { Component, Part, Prop } from '@pictogrammers/element';
2+
import PgTable from '../../table';
3+
4+
import template from './basic.html';
5+
6+
@Component({
7+
selector: 'x-pg-table-basic',
8+
template
9+
})
10+
export default class XPgTableBasic extends HTMLElement {
11+
12+
@Part() $table: PgTable;
13+
14+
connectedCallback() {
15+
// this.$table.addEventListener('click', this.handleClick.bind(this));
16+
this.$table.columns = [{
17+
label: 'Name',
18+
key: 'name'
19+
}, {
20+
label: 'Age',
21+
key: 'age'
22+
}, {
23+
label: 'Favorite',
24+
key: 'favorite',
25+
hideLabel: true,
26+
}];
27+
const IconStar = 'M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z';
28+
const IconStarOutline = 'M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z';
29+
this.$table.data = [{
30+
name: 'Dipper Pines',
31+
age: 12,
32+
// favorite: {
33+
// type: TableCellButtonIcon,
34+
// icon: IconStar,
35+
// }
36+
}, {
37+
name: 'Mabel Pines',
38+
age: 12,
39+
// favorite: {
40+
// type: TableCellButtonIcon,
41+
// icon: IconStar,
42+
// }
43+
}];
44+
}
45+
46+
handleClick() {
47+
48+
}
49+
50+
}

src/pg/table/table.css

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
:host {
2+
display: inline-flex;
3+
color: var(--pg-icon-color, #222);
4+
}
5+
6+
[part=table] {
7+
display: table;
8+
border-spacing: 0;
9+
}
10+
11+
[part=header] {
12+
display: table-header-group;
13+
}
14+
15+
[part=columns] {
16+
display: table-row;
17+
}
18+
19+
[part=rows] {
20+
display: table-row-group;
21+
}

src/pg/table/table.html

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<div part="table">
2+
<div part="header">
3+
<div part="columns"></div>
4+
</div>
5+
<div part="rows"></div>
6+
</div>

src/pg/table/table.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import { Component, Prop, Part, forEach } from '@pictogrammers/element';
2+
3+
import PgTableColumn from '../tableColumn/tableColumn';
4+
import PgTableRow from '../tableRow/tableRow';
5+
6+
import template from './table.html';
7+
import style from './table.css';
8+
9+
@Component({
10+
selector: 'pg-table',
11+
style,
12+
template
13+
})
14+
export default class PgTable extends HTMLElement {
15+
@Prop() columns: any[] = [];
16+
@Prop() data: any[] = [];
17+
18+
@Part() $columns: HTMLDivElement;
19+
@Part() $rows: HTMLDivElement;
20+
21+
connectedCallback() {
22+
forEach({
23+
container: this.$columns,
24+
items: this.columns,
25+
type: () => PgTableColumn,
26+
});
27+
forEach({
28+
container: this.$rows,
29+
items: this.data,
30+
type: () => PgTableRow,
31+
});
32+
}
33+
34+
render(changes) {
35+
if (changes.data) {
36+
console.log(this.data);
37+
}
38+
}
39+
}

src/pg/tableColumn/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# `PgTableColumn`
2+
3+
See `PgTable`.

src/pg/tableColumn/tableColumn.css

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
:host {
2+
display: contents;
3+
}
4+
5+
[part=label] {
6+
display: table-cell;
7+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<div part="label"></div>

0 commit comments

Comments
 (0)