bank20baht-ui 0.1.8 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -3
- package/dist/components/primitives/baht-table.d.ts +20 -8
- package/dist/custom-elements.json +105 -7
- package/dist/index.js +674 -609
- package/dist/tokens.css +426 -91
- package/dist/vscode.html-custom-data.json +1 -1
- package/dist/web-types.json +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -211,9 +211,10 @@ el.registry = {
|
|
|
211
211
|
|
|
212
212
|
## Design system — 20baht
|
|
213
213
|
|
|
214
|
-
Ships themed as the **20baht design system**:
|
|
215
|
-
|
|
216
|
-
"paper" easing
|
|
214
|
+
Ships themed as the **20baht design system**: olive intaglio (`#5C7A33`), rose
|
|
215
|
+
underprint (`#A9645A`), foil gold on note paper (`#FBFAF3`), Bricolage Grotesque /
|
|
216
|
+
Geist / Geist Mono, borders-over-shadows, "paper" easing — plus a dark theme
|
|
217
|
+
(`<html data-baht-theme="dark">`, OS-following by default). 35+ components:
|
|
217
218
|
|
|
218
219
|
```html
|
|
219
220
|
<baht-button variant="secondary" size="sm">Cancel</baht-button>
|
|
@@ -21,10 +21,11 @@ export type CellRenderer = (value: unknown, row: Record<string, unknown>) => unk
|
|
|
21
21
|
* t.cursorMode = true; t.hasNext = true; t.hasPrev = false;
|
|
22
22
|
* t.addEventListener('baht-cursor-change', (e) => fetchPage(e.detail.direction));
|
|
23
23
|
*
|
|
24
|
-
* A built-in "Columns"
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* (JS property — a boolean attribute
|
|
24
|
+
* A built-in "Columns" button is ON by default — it opens a ServiceNow-style
|
|
25
|
+
* Available/Selected dual-list modal (add/remove, reorder, Select all/Clear
|
|
26
|
+
* all) derived from `columns` (or the first row's keys), no host wiring
|
|
27
|
+
* required. Set `t.columnPicker = false` (JS property — a boolean attribute
|
|
28
|
+
* can't express "off") to hide it:
|
|
28
29
|
*
|
|
29
30
|
* t.addEventListener('baht-columns-change', (e) => console.log(e.detail.visibleColumns));
|
|
30
31
|
*
|
|
@@ -64,16 +65,27 @@ export declare class BahtTable extends BahtElement {
|
|
|
64
65
|
private pickerOpen;
|
|
65
66
|
/** User's picks once they've touched the picker; null = follow `visibleColumns`/all. */
|
|
66
67
|
private pickedColumns;
|
|
67
|
-
|
|
68
|
+
/** Working copy edited inside the modal; committed to `pickedColumns` on OK. */
|
|
69
|
+
private draftColumns;
|
|
70
|
+
/** Highlighted (not yet moved) options in each list. */
|
|
71
|
+
private pickAvail;
|
|
72
|
+
private pickSel;
|
|
73
|
+
private readonly onPickerKeydown;
|
|
68
74
|
disconnectedCallback(): void;
|
|
69
75
|
private get allColumnKeys();
|
|
70
76
|
private get columnKeys();
|
|
71
|
-
private
|
|
72
|
-
private
|
|
77
|
+
private openPicker;
|
|
78
|
+
private closePicker;
|
|
79
|
+
private static selectedValues;
|
|
80
|
+
private addToSelected;
|
|
81
|
+
private removeFromSelected;
|
|
82
|
+
private moveSelected;
|
|
83
|
+
private confirmPicker;
|
|
73
84
|
private labelFor;
|
|
74
85
|
private emitRow;
|
|
75
86
|
private cell;
|
|
76
87
|
private renderBody;
|
|
77
|
-
private
|
|
88
|
+
private renderColumnToggle;
|
|
89
|
+
private renderColumnModal;
|
|
78
90
|
protected render(): TemplateResult;
|
|
79
91
|
}
|
|
@@ -8348,7 +8348,7 @@
|
|
|
8348
8348
|
"declarations": [
|
|
8349
8349
|
{
|
|
8350
8350
|
"kind": "class",
|
|
8351
|
-
"description": "Server-side data table. `items` is ONE page of rows — the component never\nslices or fetches; on `baht-page-change` the host fetches the next page and\nre-feeds `items`/`page`. While that fetch runs, set `loading` to show\nskeleton rows.\n\n const t = document.querySelector('baht-table');\n t.columns = { name: 'Name', created_at: 'Created' };\n t.items = pageRows; // current page only\n t.loading = false; t.page = 1; t.totalPages = 12;\n t.addEventListener('baht-page-change', (e) => fetchPage(e.detail.page));\n t.addEventListener('baht-row-click', (e) => open(e.detail.id));\n\nSet `cursor-mode` for cursor-based APIs (no total count) — the footer\nbecomes a Prev/Next pair gated by `has-next`/`has-prev`, and the host\nlistens for `baht-cursor-change` instead of `baht-page-change`:\n\n t.cursorMode = true; t.hasNext = true; t.hasPrev = false;\n t.addEventListener('baht-cursor-change', (e) => fetchPage(e.detail.direction));\n\nA built-in \"Columns\"
|
|
8351
|
+
"description": "Server-side data table. `items` is ONE page of rows — the component never\nslices or fetches; on `baht-page-change` the host fetches the next page and\nre-feeds `items`/`page`. While that fetch runs, set `loading` to show\nskeleton rows.\n\n const t = document.querySelector('baht-table');\n t.columns = { name: 'Name', created_at: 'Created' };\n t.items = pageRows; // current page only\n t.loading = false; t.page = 1; t.totalPages = 12;\n t.addEventListener('baht-page-change', (e) => fetchPage(e.detail.page));\n t.addEventListener('baht-row-click', (e) => open(e.detail.id));\n\nSet `cursor-mode` for cursor-based APIs (no total count) — the footer\nbecomes a Prev/Next pair gated by `has-next`/`has-prev`, and the host\nlistens for `baht-cursor-change` instead of `baht-page-change`:\n\n t.cursorMode = true; t.hasNext = true; t.hasPrev = false;\n t.addEventListener('baht-cursor-change', (e) => fetchPage(e.detail.direction));\n\nA built-in \"Columns\" button is ON by default — it opens a ServiceNow-style\nAvailable/Selected dual-list modal (add/remove, reorder, Select all/Clear\nall) derived from `columns` (or the first row's keys), no host wiring\nrequired. Set `t.columnPicker = false` (JS property — a boolean attribute\ncan't express \"off\") to hide it:\n\n t.addEventListener('baht-columns-change', (e) => console.log(e.detail.visibleColumns));\n\n`visibleColumns` still works standalone for a host-controlled subset (no\nrefetch) — pass it explicitly and the built-in picker (if also enabled)\nstarts from that selection and keeps emitting updates for it.",
|
|
8352
8352
|
"name": "BahtTable",
|
|
8353
8353
|
"members": [
|
|
8354
8354
|
{
|
|
@@ -8548,7 +8548,36 @@
|
|
|
8548
8548
|
},
|
|
8549
8549
|
{
|
|
8550
8550
|
"kind": "field",
|
|
8551
|
-
"name": "
|
|
8551
|
+
"name": "draftColumns",
|
|
8552
|
+
"type": {
|
|
8553
|
+
"text": "string[]"
|
|
8554
|
+
},
|
|
8555
|
+
"privacy": "private",
|
|
8556
|
+
"default": "[]",
|
|
8557
|
+
"description": "Working copy edited inside the modal; committed to `pickedColumns` on OK."
|
|
8558
|
+
},
|
|
8559
|
+
{
|
|
8560
|
+
"kind": "field",
|
|
8561
|
+
"name": "pickAvail",
|
|
8562
|
+
"type": {
|
|
8563
|
+
"text": "string[]"
|
|
8564
|
+
},
|
|
8565
|
+
"privacy": "private",
|
|
8566
|
+
"default": "[]",
|
|
8567
|
+
"description": "Highlighted (not yet moved) options in each list."
|
|
8568
|
+
},
|
|
8569
|
+
{
|
|
8570
|
+
"kind": "field",
|
|
8571
|
+
"name": "pickSel",
|
|
8572
|
+
"type": {
|
|
8573
|
+
"text": "string[]"
|
|
8574
|
+
},
|
|
8575
|
+
"privacy": "private",
|
|
8576
|
+
"default": "[]"
|
|
8577
|
+
},
|
|
8578
|
+
{
|
|
8579
|
+
"kind": "field",
|
|
8580
|
+
"name": "onPickerKeydown",
|
|
8552
8581
|
"privacy": "private",
|
|
8553
8582
|
"readonly": true
|
|
8554
8583
|
},
|
|
@@ -8572,7 +8601,7 @@
|
|
|
8572
8601
|
},
|
|
8573
8602
|
{
|
|
8574
8603
|
"kind": "method",
|
|
8575
|
-
"name": "
|
|
8604
|
+
"name": "openPicker",
|
|
8576
8605
|
"privacy": "private",
|
|
8577
8606
|
"return": {
|
|
8578
8607
|
"type": {
|
|
@@ -8582,22 +8611,81 @@
|
|
|
8582
8611
|
},
|
|
8583
8612
|
{
|
|
8584
8613
|
"kind": "method",
|
|
8585
|
-
"name": "
|
|
8614
|
+
"name": "closePicker",
|
|
8586
8615
|
"privacy": "private",
|
|
8587
8616
|
"return": {
|
|
8588
8617
|
"type": {
|
|
8589
8618
|
"text": "void"
|
|
8590
8619
|
}
|
|
8620
|
+
}
|
|
8621
|
+
},
|
|
8622
|
+
{
|
|
8623
|
+
"kind": "method",
|
|
8624
|
+
"name": "selectedValues",
|
|
8625
|
+
"privacy": "private",
|
|
8626
|
+
"static": true,
|
|
8627
|
+
"return": {
|
|
8628
|
+
"type": {
|
|
8629
|
+
"text": "string[]"
|
|
8630
|
+
}
|
|
8591
8631
|
},
|
|
8592
8632
|
"parameters": [
|
|
8593
8633
|
{
|
|
8594
|
-
"name": "
|
|
8634
|
+
"name": "e",
|
|
8595
8635
|
"type": {
|
|
8596
|
-
"text": "
|
|
8636
|
+
"text": "Event"
|
|
8597
8637
|
}
|
|
8598
8638
|
}
|
|
8599
8639
|
]
|
|
8600
8640
|
},
|
|
8641
|
+
{
|
|
8642
|
+
"kind": "method",
|
|
8643
|
+
"name": "addToSelected",
|
|
8644
|
+
"privacy": "private",
|
|
8645
|
+
"return": {
|
|
8646
|
+
"type": {
|
|
8647
|
+
"text": "void"
|
|
8648
|
+
}
|
|
8649
|
+
}
|
|
8650
|
+
},
|
|
8651
|
+
{
|
|
8652
|
+
"kind": "method",
|
|
8653
|
+
"name": "removeFromSelected",
|
|
8654
|
+
"privacy": "private",
|
|
8655
|
+
"return": {
|
|
8656
|
+
"type": {
|
|
8657
|
+
"text": "void"
|
|
8658
|
+
}
|
|
8659
|
+
}
|
|
8660
|
+
},
|
|
8661
|
+
{
|
|
8662
|
+
"kind": "method",
|
|
8663
|
+
"name": "moveSelected",
|
|
8664
|
+
"privacy": "private",
|
|
8665
|
+
"return": {
|
|
8666
|
+
"type": {
|
|
8667
|
+
"text": "void"
|
|
8668
|
+
}
|
|
8669
|
+
},
|
|
8670
|
+
"parameters": [
|
|
8671
|
+
{
|
|
8672
|
+
"name": "dir",
|
|
8673
|
+
"type": {
|
|
8674
|
+
"text": "-1 | 1"
|
|
8675
|
+
}
|
|
8676
|
+
}
|
|
8677
|
+
]
|
|
8678
|
+
},
|
|
8679
|
+
{
|
|
8680
|
+
"kind": "method",
|
|
8681
|
+
"name": "confirmPicker",
|
|
8682
|
+
"privacy": "private",
|
|
8683
|
+
"return": {
|
|
8684
|
+
"type": {
|
|
8685
|
+
"text": "void"
|
|
8686
|
+
}
|
|
8687
|
+
}
|
|
8688
|
+
},
|
|
8601
8689
|
{
|
|
8602
8690
|
"kind": "method",
|
|
8603
8691
|
"name": "labelFor",
|
|
@@ -8684,7 +8772,17 @@
|
|
|
8684
8772
|
},
|
|
8685
8773
|
{
|
|
8686
8774
|
"kind": "method",
|
|
8687
|
-
"name": "
|
|
8775
|
+
"name": "renderColumnToggle",
|
|
8776
|
+
"privacy": "private",
|
|
8777
|
+
"return": {
|
|
8778
|
+
"type": {
|
|
8779
|
+
"text": "TemplateResult"
|
|
8780
|
+
}
|
|
8781
|
+
}
|
|
8782
|
+
},
|
|
8783
|
+
{
|
|
8784
|
+
"kind": "method",
|
|
8785
|
+
"name": "renderColumnModal",
|
|
8688
8786
|
"privacy": "private",
|
|
8689
8787
|
"return": {
|
|
8690
8788
|
"type": {
|