@adia-ai/web-components 0.4.5 → 0.4.7
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 +63 -24
- package/USAGE.md +604 -0
- package/components/accordion/accordion.d.ts +17 -0
- package/components/accordion/accordion.js +10 -117
- package/components/accordion/class.js +132 -0
- package/components/action-list/action-list.d.ts +15 -0
- package/components/action-list/action-list.js +9 -140
- package/components/action-list/class.js +156 -0
- package/components/agent-artifact/agent-artifact.d.ts +25 -0
- package/components/agent-artifact/agent-artifact.js +8 -181
- package/components/agent-artifact/class.js +200 -0
- package/components/agent-feedback-bar/agent-feedback-bar.d.ts +21 -0
- package/components/agent-feedback-bar/agent-feedback-bar.js +8 -143
- package/components/agent-feedback-bar/class.js +162 -0
- package/components/agent-questions/agent-questions.d.ts +23 -0
- package/components/agent-questions/agent-questions.js +8 -180
- package/components/agent-questions/class.js +199 -0
- package/components/agent-reasoning/agent-reasoning.d.ts +23 -0
- package/components/agent-reasoning/agent-reasoning.js +8 -494
- package/components/agent-reasoning/class.js +513 -0
- package/components/agent-suggestions/agent-suggestions.d.ts +21 -0
- package/components/agent-suggestions/agent-suggestions.js +8 -78
- package/components/agent-suggestions/class.js +97 -0
- package/components/agent-trace/agent-trace.d.ts +19 -0
- package/components/alert/alert.d.ts +29 -0
- package/components/alert/alert.js +8 -175
- package/components/alert/class.js +194 -0
- package/components/avatar/avatar.d.ts +27 -0
- package/components/avatar/avatar.js +9 -159
- package/components/avatar/class.js +173 -0
- package/components/badge/badge.d.ts +27 -0
- package/components/badge/badge.js +9 -75
- package/components/badge/class.js +93 -0
- package/components/block/block.d.ts +19 -0
- package/components/block/block.js +9 -15
- package/components/block/class.js +33 -0
- package/components/breadcrumb/breadcrumb.d.ts +23 -0
- package/components/breadcrumb/breadcrumb.js +8 -113
- package/components/breadcrumb/class.js +132 -0
- package/components/button/button.d.ts +34 -0
- package/components/button/button.js +15 -66
- package/components/button/class.js +80 -0
- package/components/calendar-picker/calendar-picker.a2ui.json +6 -1
- package/components/calendar-picker/calendar-picker.d.ts +27 -0
- package/components/calendar-picker/calendar-picker.js +8 -332
- package/components/calendar-picker/calendar-picker.yaml +51 -177
- package/components/calendar-picker/class.js +351 -0
- package/components/canvas/canvas.a2ui.json +6 -1
- package/components/canvas/canvas.d.ts +17 -0
- package/components/canvas/canvas.yaml +19 -36
- package/components/card/card.a2ui.json +3 -0
- package/components/card/card.d.ts +27 -0
- package/components/card/card.js +9 -50
- package/components/card/card.yaml +171 -433
- package/components/card/class.js +68 -0
- package/components/chart/chart.d.ts +41 -0
- package/components/chart/chart.js +8 -2131
- package/components/chart/class.js +2150 -0
- package/components/chart-legend/chart-legend.d.ts +27 -0
- package/components/chart-legend/chart-legend.js +8 -197
- package/components/chart-legend/class.js +215 -0
- package/components/chat-thread/chat-thread.d.ts +17 -0
- package/components/chat-thread/chat-thread.js +8 -157
- package/components/chat-thread/class.js +176 -0
- package/components/check/check.d.ts +30 -0
- package/components/check/check.js +11 -52
- package/components/check/class.js +68 -0
- package/components/code/class.js +501 -0
- package/components/code/code.d.ts +39 -0
- package/components/code/code.js +8 -482
- package/components/col/class.js +30 -0
- package/components/col/col.d.ts +23 -0
- package/components/col/col.js +10 -13
- package/components/color-picker/class.js +550 -0
- package/components/color-picker/color-picker.d.ts +37 -0
- package/components/color-picker/color-picker.js +8 -531
- package/components/command/class.js +364 -0
- package/components/command/command.a2ui.json +3 -0
- package/components/command/command.d.ts +19 -0
- package/components/command/command.js +8 -345
- package/components/command/command.yaml +105 -124
- package/components/demo-toggle/class.js +153 -0
- package/components/demo-toggle/demo-toggle.d.ts +23 -0
- package/components/demo-toggle/demo-toggle.js +8 -135
- package/components/description-list/class.js +86 -0
- package/components/description-list/description-list.d.ts +21 -0
- package/components/description-list/description-list.js +8 -67
- package/components/divider/class.js +57 -0
- package/components/divider/divider.d.ts +19 -0
- package/components/divider/divider.js +10 -40
- package/components/drawer/class.js +306 -0
- package/components/drawer/drawer.d.ts +25 -0
- package/components/drawer/drawer.js +8 -287
- package/components/embed/class.js +73 -0
- package/components/embed/embed.d.ts +23 -0
- package/components/embed/embed.js +9 -55
- package/components/empty-state/class.js +108 -0
- package/components/empty-state/empty-state.d.ts +21 -0
- package/components/empty-state/empty-state.js +9 -90
- package/components/feed/class.js +381 -0
- package/components/feed/feed.d.ts +19 -0
- package/components/feed/feed.js +9 -367
- package/components/field/class.js +266 -0
- package/components/field/field.d.ts +23 -0
- package/components/field/field.js +8 -247
- package/components/fields/class.js +106 -0
- package/components/fields/fields.d.ts +19 -0
- package/components/fields/fields.js +8 -87
- package/components/grid/class.js +31 -0
- package/components/grid/grid.d.ts +23 -0
- package/components/grid/grid.js +10 -14
- package/components/heatmap/class.js +305 -0
- package/components/heatmap/heatmap.d.ts +31 -0
- package/components/heatmap/heatmap.js +8 -286
- package/components/icon/class.js +54 -0
- package/components/icon/icon.d.ts +23 -0
- package/components/icon/icon.js +13 -40
- package/components/image/class.js +112 -0
- package/components/image/image.d.ts +33 -0
- package/components/image/image.js +9 -94
- package/components/index.js +1 -0
- package/components/input/class.js +773 -0
- package/components/input/input.a2ui.json +3 -0
- package/components/input/input.d.ts +61 -0
- package/components/input/input.js +8 -755
- package/components/input/input.yaml +171 -442
- package/components/inspector/class.js +142 -0
- package/components/inspector/inspector.a2ui.json +8 -1
- package/components/inspector/inspector.d.ts +17 -0
- package/components/inspector/inspector.js +8 -124
- package/components/inspector/inspector.yaml +15 -30
- package/components/kbd/class.js +34 -0
- package/components/kbd/kbd.a2ui.json +3 -0
- package/components/kbd/kbd.d.ts +17 -0
- package/components/kbd/kbd.js +10 -17
- package/components/kbd/kbd.yaml +54 -185
- package/components/link/class.js +187 -0
- package/components/link/link.d.ts +55 -0
- package/components/link/link.js +8 -168
- package/components/list/class.js +249 -0
- package/components/list/list.d.ts +23 -0
- package/components/list/list.js +9 -231
- package/components/menu/class.js +332 -0
- package/components/menu/menu.d.ts +21 -0
- package/components/menu/menu.js +11 -316
- package/components/modal/class.js +231 -0
- package/components/modal/modal.a2ui.json +5 -1
- package/components/modal/modal.d.ts +23 -0
- package/components/modal/modal.js +8 -212
- package/components/modal/modal.yaml +19 -39
- package/components/nav/class.js +150 -0
- package/components/nav/nav.d.ts +31 -0
- package/components/nav/nav.js +8 -131
- package/components/nav-group/class.js +152 -0
- package/components/nav-group/nav-group.d.ts +35 -0
- package/components/nav-group/nav-group.js +9 -134
- package/components/nav-item/class.js +86 -0
- package/components/nav-item/nav-item.d.ts +37 -0
- package/components/nav-item/nav-item.js +10 -69
- package/components/noodles/class.js +510 -0
- package/components/noodles/noodles.d.ts +33 -0
- package/components/noodles/noodles.js +9 -493
- package/components/option-card/class.js +167 -0
- package/components/option-card/option-card.d.ts +30 -0
- package/components/option-card/option-card.js +8 -149
- package/components/otp-input/class.js +180 -0
- package/components/otp-input/otp-input.a2ui.json +5 -1
- package/components/otp-input/otp-input.d.ts +25 -0
- package/components/otp-input/otp-input.js +9 -162
- package/components/otp-input/otp-input.yaml +45 -174
- package/components/page/class.js +97 -0
- package/components/page/page.d.ts +46 -0
- package/components/page/page.js +8 -79
- package/components/pagination/class.js +195 -0
- package/components/pagination/pagination.d.ts +23 -0
- package/components/pagination/pagination.js +9 -177
- package/components/pane/class.js +186 -0
- package/components/pane/pane.a2ui.json +12 -1
- package/components/pane/pane.css +10 -0
- package/components/pane/pane.d.ts +31 -0
- package/components/pane/pane.js +8 -143
- package/components/pane/pane.yaml +57 -157
- package/components/pipeline-status/class.js +189 -0
- package/components/pipeline-status/pipeline-status.a2ui.json +7 -1
- package/components/pipeline-status/pipeline-status.d.ts +21 -0
- package/components/pipeline-status/pipeline-status.js +9 -172
- package/components/pipeline-status/pipeline-status.yaml +34 -72
- package/components/popover/class.js +194 -0
- package/components/popover/popover.d.ts +23 -0
- package/components/popover/popover.js +9 -176
- package/components/progress/class.js +74 -0
- package/components/progress/progress.a2ui.json +3 -0
- package/components/progress/progress.d.ts +19 -0
- package/components/progress/progress.js +10 -57
- package/components/progress/progress.yaml +124 -287
- package/components/progress-row/class.js +110 -0
- package/components/progress-row/progress-row.d.ts +23 -0
- package/components/progress-row/progress-row.js +8 -92
- package/components/radio/class.js +83 -0
- package/components/radio/radio.d.ts +28 -0
- package/components/radio/radio.js +11 -67
- package/components/range/class.js +194 -0
- package/components/range/range.d.ts +31 -0
- package/components/range/range.js +9 -176
- package/components/rating/class.js +148 -0
- package/components/rating/rating.d.ts +33 -0
- package/components/rating/rating.js +9 -130
- package/components/richtext/class.js +87 -0
- package/components/richtext/richtext.a2ui.json +7 -1
- package/components/richtext/richtext.d.ts +19 -0
- package/components/richtext/richtext.js +8 -68
- package/components/richtext/richtext.yaml +30 -65
- package/components/row/class.js +50 -0
- package/components/row/row.d.ts +27 -0
- package/components/row/row.js +10 -33
- package/components/search/class.js +134 -0
- package/components/search/search.d.ts +35 -0
- package/components/search/search.js +10 -117
- package/components/segment/class.js +62 -0
- package/components/segment/segment.d.ts +25 -0
- package/components/segment/segment.js +10 -45
- package/components/segmented/class.js +165 -0
- package/components/segmented/segmented.a2ui.json +4 -0
- package/components/segmented/segmented.d.ts +24 -0
- package/components/segmented/segmented.js +10 -148
- package/components/segmented/segmented.yaml +41 -59
- package/components/select/class.js +408 -0
- package/components/select/select.d.ts +57 -0
- package/components/select/select.js +15 -396
- package/components/skeleton/class.js +52 -0
- package/components/skeleton/skeleton.d.ts +23 -0
- package/components/skeleton/skeleton.js +8 -34
- package/components/slider/class.js +184 -0
- package/components/slider/slider.d.ts +31 -0
- package/components/slider/slider.js +9 -166
- package/components/stack/class.js +28 -0
- package/components/stack/stack.d.ts +17 -0
- package/components/stack/stack.js +10 -11
- package/components/step-progress/class.js +98 -0
- package/components/step-progress/step-progress.d.ts +27 -0
- package/components/step-progress/step-progress.js +8 -79
- package/components/stepper/class.js +126 -0
- package/components/stepper/stepper.d.ts +19 -0
- package/components/stepper/stepper.js +9 -112
- package/components/stream/class.js +109 -0
- package/components/stream/stream.d.ts +19 -0
- package/components/stream/stream.js +8 -90
- package/components/swatch/class.js +131 -0
- package/components/swatch/swatch.d.ts +28 -0
- package/components/swatch/swatch.js +8 -112
- package/components/swiper/class.js +373 -0
- package/components/swiper/swiper.a2ui.json +4 -0
- package/components/swiper/swiper.d.ts +31 -0
- package/components/swiper/swiper.js +8 -354
- package/components/swiper/swiper.yaml +68 -212
- package/components/switch/class.js +63 -0
- package/components/switch/switch.a2ui.json +6 -1
- package/components/switch/switch.d.ts +30 -0
- package/components/switch/switch.js +11 -47
- package/components/switch/switch.yaml +70 -265
- package/components/table/class.js +1453 -0
- package/components/table/table.d.ts +37 -0
- package/components/table/table.js +8 -1435
- package/components/table-toolbar/class.js +680 -0
- package/components/table-toolbar/table-toolbar.d.ts +33 -0
- package/components/table-toolbar/table-toolbar.js +8 -689
- package/components/tabs/class.js +242 -0
- package/components/tabs/tabs.d.ts +21 -0
- package/components/tabs/tabs.js +8 -223
- package/components/tag/class.js +99 -0
- package/components/tag/tag.d.ts +27 -0
- package/components/tag/tag.js +8 -80
- package/components/text/class.js +46 -0
- package/components/text/text.d.ts +25 -0
- package/components/text/text.js +9 -28
- package/components/textarea/class.js +134 -0
- package/components/textarea/textarea.d.ts +31 -0
- package/components/textarea/textarea.js +11 -118
- package/components/timeline/class.js +176 -0
- package/components/timeline/timeline.d.ts +19 -0
- package/components/timeline/timeline.js +9 -162
- package/components/toast/class.js +92 -0
- package/components/toast/toast.d.ts +23 -0
- package/components/toast/toast.js +9 -76
- package/components/toggle-group/class.js +154 -0
- package/components/toggle-group/toggle-group.d.ts +19 -0
- package/components/toggle-group/toggle-group.js +11 -140
- package/components/toggle-scheme/class.js +286 -0
- package/components/toggle-scheme/toggle-scheme.a2ui.json +197 -0
- package/components/toggle-scheme/toggle-scheme.css +20 -0
- package/components/toggle-scheme/toggle-scheme.d.ts +41 -0
- package/components/toggle-scheme/toggle-scheme.js +17 -0
- package/components/toggle-scheme/toggle-scheme.yaml +173 -0
- package/components/toolbar/class.js +388 -0
- package/components/toolbar/toolbar.d.ts +23 -0
- package/components/toolbar/toolbar.js +10 -376
- package/components/tooltip/class.js +299 -0
- package/components/tooltip/tooltip.d.ts +27 -0
- package/components/tooltip/tooltip.js +8 -280
- package/components/tree/class.js +245 -0
- package/components/tree/tree.d.ts +15 -0
- package/components/tree/tree.js +9 -244
- package/components/upload/class.js +199 -0
- package/components/upload/upload.d.ts +27 -0
- package/components/upload/upload.js +11 -183
- package/core/element.d.ts +174 -0
- package/core/form.d.ts +108 -0
- package/core/index.d.ts +11 -0
- package/core/index.js +1 -0
- package/core/register.d.ts +25 -0
- package/core/register.js +58 -0
- package/core/signals.d.ts +94 -0
- package/core/template.d.ts +70 -0
- package/index.d.ts +315 -0
- package/package.json +25 -6
- package/traits/CATEGORIES.md +1 -1
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Non-side-effect class export for `<demo-toggle-ui>`.
|
|
3
|
+
*
|
|
4
|
+
* Importing this file gives you the class(es) without auto-registering the tag.
|
|
5
|
+
* Useful for test isolation, subclassing with tag-name override, or selective
|
|
6
|
+
* composition.
|
|
7
|
+
*
|
|
8
|
+
* The auto-register path stays at `@adia-ai/web-components/components/demo-toggle`
|
|
9
|
+
* (which imports this file + calls `defineIfFree()`).
|
|
10
|
+
*
|
|
11
|
+
* @see ../../USAGE.md#registration--auto-vs-explicit
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* <demo-toggle-ui>
|
|
16
|
+
* <section slot="off">…without trait…</section>
|
|
17
|
+
* <section slot="on">…with trait…</section>
|
|
18
|
+
* </demo-toggle-ui>
|
|
19
|
+
*
|
|
20
|
+
* Side-by-side "with trait / without trait" comparison primitive.
|
|
21
|
+
* Renders a header bar with a switch-ui that flips which child slot is
|
|
22
|
+
* visible. Reflects [data-state="on"|"off"] on the host so consumer CSS
|
|
23
|
+
* can theme the bar around the active variant.
|
|
24
|
+
*
|
|
25
|
+
* Two layout modes:
|
|
26
|
+
* default — only the active slot is in the layout (the other is `display: none`).
|
|
27
|
+
* data-mode="overlay" — both slots stack on the same coordinates; inactive
|
|
28
|
+
* slot is `visibility: hidden` so layout never shifts.
|
|
29
|
+
*
|
|
30
|
+
* Authoring API:
|
|
31
|
+
* [label-on] — header label when state=on (default: "On")
|
|
32
|
+
* [label-off] — header label when state=off (default: "Off")
|
|
33
|
+
* [initial] — "on" | "off"; only consulted when [state] is unset on connect
|
|
34
|
+
* [state] — "on" | "off"; reflected; the live state attribute
|
|
35
|
+
*
|
|
36
|
+
* Events:
|
|
37
|
+
* change — { detail: { state: "on" | "off" } }
|
|
38
|
+
*
|
|
39
|
+
* Keyboard:
|
|
40
|
+
* The embedded <switch-ui> handles space + enter via its own keydown wiring.
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
import { UIElement } from '../../core/element.js';
|
|
44
|
+
import '../switch/switch.js';
|
|
45
|
+
import '../row/row.js';
|
|
46
|
+
import '../text/text.js';
|
|
47
|
+
|
|
48
|
+
export class UIDemoToggle extends UIElement {
|
|
49
|
+
static properties = {
|
|
50
|
+
labelOn: { type: String, default: 'On', attribute: 'label-on', reflect: true },
|
|
51
|
+
labelOff: { type: String, default: 'Off', attribute: 'label-off', reflect: true },
|
|
52
|
+
initial: { type: String, default: 'off', reflect: true },
|
|
53
|
+
state: { type: String, default: '', reflect: true },
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
// Header bar with a switch + active label. Stamped once per class via
|
|
57
|
+
// static parts; live label text is updated in render() so the same
|
|
58
|
+
// template covers every (label-on, label-off, state) tuple.
|
|
59
|
+
static parts = {
|
|
60
|
+
bar: `
|
|
61
|
+
<row-ui slot="bar" gap="3" align="center" data-demo-toggle-bar>
|
|
62
|
+
<text-ui slot="label" data-demo-toggle-label></text-ui>
|
|
63
|
+
<switch-ui slot="switch" data-demo-toggle-switch></switch-ui>
|
|
64
|
+
</row-ui>
|
|
65
|
+
`,
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
static template = () => null;
|
|
69
|
+
|
|
70
|
+
#bar = null;
|
|
71
|
+
#switch = null;
|
|
72
|
+
#label = null;
|
|
73
|
+
#bound = false;
|
|
74
|
+
|
|
75
|
+
connected() {
|
|
76
|
+
// Resolve the initial state. Honor [state] if explicitly authored;
|
|
77
|
+
// otherwise fall back to [initial] (default "off"). Anything other
|
|
78
|
+
// than the literal "on" coerces to "off" so authors can't poison
|
|
79
|
+
// the data-state attribute with arbitrary values.
|
|
80
|
+
if (!this.state) {
|
|
81
|
+
const seed = (this.initial === 'on') ? 'on' : 'off';
|
|
82
|
+
this.state = seed;
|
|
83
|
+
} else {
|
|
84
|
+
this.state = (this.state === 'on') ? 'on' : 'off';
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Stamp the header bar lazily — `this.ensure('bar')` clones the
|
|
88
|
+
// blueprint into the light DOM the first time it's called.
|
|
89
|
+
this.#bar = this.ensure('bar');
|
|
90
|
+
this.#switch = this.#bar.querySelector('[data-demo-toggle-switch]');
|
|
91
|
+
this.#label = this.#bar.querySelector('[data-demo-toggle-label]');
|
|
92
|
+
|
|
93
|
+
if (!this.#bound) {
|
|
94
|
+
this.#bound = true;
|
|
95
|
+
this.#switch.addEventListener('change', this.#onSwitchChange);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
disconnected() {
|
|
100
|
+
if (this.#switch) {
|
|
101
|
+
this.#switch.removeEventListener('change', this.#onSwitchChange);
|
|
102
|
+
}
|
|
103
|
+
this.#bar = null;
|
|
104
|
+
this.#switch = null;
|
|
105
|
+
this.#label = null;
|
|
106
|
+
this.#bound = false;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
render() {
|
|
110
|
+
if (!this.#bar) return;
|
|
111
|
+
const on = this.state === 'on';
|
|
112
|
+
|
|
113
|
+
// Sync the embedded switch to the host's state. checked is a
|
|
114
|
+
// reflected property; the assignment fires no event because
|
|
115
|
+
// syncValue() short-circuits when the next state matches.
|
|
116
|
+
if (this.#switch.checked !== on) {
|
|
117
|
+
this.#switch.checked = on;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if (this.#label) {
|
|
121
|
+
this.#label.textContent = on ? this.labelOn : this.labelOff;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Public toggle method — flips the host between on and off and emits
|
|
127
|
+
* a `change` event. Mirrors the click-on-switch path so consumers
|
|
128
|
+
* can drive the state from outside without touching the embedded
|
|
129
|
+
* switch directly.
|
|
130
|
+
*/
|
|
131
|
+
toggle() {
|
|
132
|
+
this.state = (this.state === 'on') ? 'off' : 'on';
|
|
133
|
+
this.dispatchEvent(new CustomEvent('change', {
|
|
134
|
+
bubbles: true,
|
|
135
|
+
detail: { state: this.state },
|
|
136
|
+
}));
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
#onSwitchChange = (e) => {
|
|
140
|
+
// The embedded <switch-ui> fires a bubbling `change`. Stop it at the
|
|
141
|
+
// host boundary — we re-dispatch our own `change` with detail.state
|
|
142
|
+
// so consumers see exactly one event per toggle, not the inner
|
|
143
|
+
// switch's bare event AND our annotated one.
|
|
144
|
+
e.stopPropagation();
|
|
145
|
+
const next = this.#switch.checked ? 'on' : 'off';
|
|
146
|
+
if (next === this.state) return;
|
|
147
|
+
this.state = next;
|
|
148
|
+
this.dispatchEvent(new CustomEvent('change', {
|
|
149
|
+
bubbles: true,
|
|
150
|
+
detail: { state: this.state },
|
|
151
|
+
}));
|
|
152
|
+
};
|
|
153
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `<demo-toggle-ui>` — Side-by-side comparison primitive — header bar with a switch + two child slots ("on" / "off"); toggling the switch swaps which slot is visible. Used on trait detail pages to show "with trait" vs "without trait" on the same chrome. data-mode="overlay" stacks the slots on the same coordinates so layout never shifts.
|
|
3
|
+
*
|
|
4
|
+
* @see https://ui-kit.exe.xyz/site/components/demo-toggle
|
|
5
|
+
*
|
|
6
|
+
* Type declarations generated by scripts/build/dts-codegen.mjs from
|
|
7
|
+
* the component's `.a2ui.json` sidecar. Edit the source `.yaml`,
|
|
8
|
+
* run `npm run components`, then `npm run codegen:dts` to regenerate;
|
|
9
|
+
* or hand-author this file fully if rich event types are needed.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { UIElement } from '../../core/element.js';
|
|
13
|
+
|
|
14
|
+
export class UIDemoToggle extends UIElement {
|
|
15
|
+
/** Initial state when [state] is not set on connect ("on" | "off"). */
|
|
16
|
+
initial: 'on' | 'off';
|
|
17
|
+
/** Header label rendered when state is "off". */
|
|
18
|
+
labelOff: string;
|
|
19
|
+
/** Header label rendered when state is "on". */
|
|
20
|
+
labelOn: string;
|
|
21
|
+
/** Current toggle state ("on" | "off"). Reflected as data-state on the host. */
|
|
22
|
+
state: '' | 'on' | 'off';
|
|
23
|
+
}
|
|
@@ -1,144 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* <section slot="off">…without trait…</section>
|
|
4
|
-
* <section slot="on">…with trait…</section>
|
|
5
|
-
* </demo-toggle-ui>
|
|
2
|
+
* `<demo-toggle-ui>` — auto-registers the tag on import.
|
|
6
3
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* visible. Reflects [data-state="on"|"off"] on the host so consumer CSS
|
|
10
|
-
* can theme the bar around the active variant.
|
|
4
|
+
* For non-side-effect class import (test isolation, tag override), use
|
|
5
|
+
* the `class` subpath:
|
|
11
6
|
*
|
|
12
|
-
*
|
|
13
|
-
* default — only the active slot is in the layout (the other is `display: none`).
|
|
14
|
-
* data-mode="overlay" — both slots stack on the same coordinates; inactive
|
|
15
|
-
* slot is `visibility: hidden` so layout never shifts.
|
|
7
|
+
* import { UIDemoToggle } from '@adia-ai/web-components/components/demo-toggle/class';
|
|
16
8
|
*
|
|
17
|
-
*
|
|
18
|
-
* [label-on] — header label when state=on (default: "On")
|
|
19
|
-
* [label-off] — header label when state=off (default: "Off")
|
|
20
|
-
* [initial] — "on" | "off"; only consulted when [state] is unset on connect
|
|
21
|
-
* [state] — "on" | "off"; reflected; the live state attribute
|
|
22
|
-
*
|
|
23
|
-
* Events:
|
|
24
|
-
* change — { detail: { state: "on" | "off" } }
|
|
25
|
-
*
|
|
26
|
-
* Keyboard:
|
|
27
|
-
* The embedded <switch-ui> handles space + enter via its own keydown wiring.
|
|
9
|
+
* @see ../../USAGE.md#registration--auto-vs-explicit
|
|
28
10
|
*/
|
|
29
11
|
|
|
30
|
-
import {
|
|
31
|
-
import '
|
|
32
|
-
import '../row/row.js';
|
|
33
|
-
import '../text/text.js';
|
|
34
|
-
|
|
35
|
-
class UIDemoToggle extends UIElement {
|
|
36
|
-
static properties = {
|
|
37
|
-
labelOn: { type: String, default: 'On', attribute: 'label-on', reflect: true },
|
|
38
|
-
labelOff: { type: String, default: 'Off', attribute: 'label-off', reflect: true },
|
|
39
|
-
initial: { type: String, default: 'off', reflect: true },
|
|
40
|
-
state: { type: String, default: '', reflect: true },
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
// Header bar with a switch + active label. Stamped once per class via
|
|
44
|
-
// static parts; live label text is updated in render() so the same
|
|
45
|
-
// template covers every (label-on, label-off, state) tuple.
|
|
46
|
-
static parts = {
|
|
47
|
-
bar: `
|
|
48
|
-
<row-ui slot="bar" gap="3" align="center" data-demo-toggle-bar>
|
|
49
|
-
<text-ui slot="label" data-demo-toggle-label></text-ui>
|
|
50
|
-
<switch-ui slot="switch" data-demo-toggle-switch></switch-ui>
|
|
51
|
-
</row-ui>
|
|
52
|
-
`,
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
static template = () => null;
|
|
56
|
-
|
|
57
|
-
#bar = null;
|
|
58
|
-
#switch = null;
|
|
59
|
-
#label = null;
|
|
60
|
-
#bound = false;
|
|
61
|
-
|
|
62
|
-
connected() {
|
|
63
|
-
// Resolve the initial state. Honor [state] if explicitly authored;
|
|
64
|
-
// otherwise fall back to [initial] (default "off"). Anything other
|
|
65
|
-
// than the literal "on" coerces to "off" so authors can't poison
|
|
66
|
-
// the data-state attribute with arbitrary values.
|
|
67
|
-
if (!this.state) {
|
|
68
|
-
const seed = (this.initial === 'on') ? 'on' : 'off';
|
|
69
|
-
this.state = seed;
|
|
70
|
-
} else {
|
|
71
|
-
this.state = (this.state === 'on') ? 'on' : 'off';
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// Stamp the header bar lazily — `this.ensure('bar')` clones the
|
|
75
|
-
// blueprint into the light DOM the first time it's called.
|
|
76
|
-
this.#bar = this.ensure('bar');
|
|
77
|
-
this.#switch = this.#bar.querySelector('[data-demo-toggle-switch]');
|
|
78
|
-
this.#label = this.#bar.querySelector('[data-demo-toggle-label]');
|
|
79
|
-
|
|
80
|
-
if (!this.#bound) {
|
|
81
|
-
this.#bound = true;
|
|
82
|
-
this.#switch.addEventListener('change', this.#onSwitchChange);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
disconnected() {
|
|
87
|
-
if (this.#switch) {
|
|
88
|
-
this.#switch.removeEventListener('change', this.#onSwitchChange);
|
|
89
|
-
}
|
|
90
|
-
this.#bar = null;
|
|
91
|
-
this.#switch = null;
|
|
92
|
-
this.#label = null;
|
|
93
|
-
this.#bound = false;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
render() {
|
|
97
|
-
if (!this.#bar) return;
|
|
98
|
-
const on = this.state === 'on';
|
|
99
|
-
|
|
100
|
-
// Sync the embedded switch to the host's state. checked is a
|
|
101
|
-
// reflected property; the assignment fires no event because
|
|
102
|
-
// syncValue() short-circuits when the next state matches.
|
|
103
|
-
if (this.#switch.checked !== on) {
|
|
104
|
-
this.#switch.checked = on;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
if (this.#label) {
|
|
108
|
-
this.#label.textContent = on ? this.labelOn : this.labelOff;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* Public toggle method — flips the host between on and off and emits
|
|
114
|
-
* a `change` event. Mirrors the click-on-switch path so consumers
|
|
115
|
-
* can drive the state from outside without touching the embedded
|
|
116
|
-
* switch directly.
|
|
117
|
-
*/
|
|
118
|
-
toggle() {
|
|
119
|
-
this.state = (this.state === 'on') ? 'off' : 'on';
|
|
120
|
-
this.dispatchEvent(new CustomEvent('change', {
|
|
121
|
-
bubbles: true,
|
|
122
|
-
detail: { state: this.state },
|
|
123
|
-
}));
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
#onSwitchChange = (e) => {
|
|
127
|
-
// The embedded <switch-ui> fires a bubbling `change`. Stop it at the
|
|
128
|
-
// host boundary — we re-dispatch our own `change` with detail.state
|
|
129
|
-
// so consumers see exactly one event per toggle, not the inner
|
|
130
|
-
// switch's bare event AND our annotated one.
|
|
131
|
-
e.stopPropagation();
|
|
132
|
-
const next = this.#switch.checked ? 'on' : 'off';
|
|
133
|
-
if (next === this.state) return;
|
|
134
|
-
this.state = next;
|
|
135
|
-
this.dispatchEvent(new CustomEvent('change', {
|
|
136
|
-
bubbles: true,
|
|
137
|
-
detail: { state: this.state },
|
|
138
|
-
}));
|
|
139
|
-
};
|
|
140
|
-
}
|
|
12
|
+
import { defineIfFree } from '../../core/register.js';
|
|
13
|
+
import { UIDemoToggle } from './class.js';
|
|
141
14
|
|
|
142
|
-
|
|
15
|
+
defineIfFree('demo-toggle-ui', UIDemoToggle);
|
|
143
16
|
|
|
144
17
|
export { UIDemoToggle };
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Non-side-effect class export for `<description-list-ui>`.
|
|
3
|
+
*
|
|
4
|
+
* Importing this file gives you the class(es) without auto-registering the tag.
|
|
5
|
+
* Useful for test isolation, subclassing with tag-name override, or selective
|
|
6
|
+
* composition.
|
|
7
|
+
*
|
|
8
|
+
* The auto-register path stays at `@adia-ai/web-components/components/description-list`
|
|
9
|
+
* (which imports this file + calls `defineIfFree()`).
|
|
10
|
+
*
|
|
11
|
+
* @see ../../USAGE.md#registration--auto-vs-explicit
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* <description-list-ui> — Semantic dl/dt/dd wrapper for key-value metadata.
|
|
16
|
+
*
|
|
17
|
+
* Pure layout component. Renders terms and descriptions in a grid.
|
|
18
|
+
*
|
|
19
|
+
* Declarative use (recommended — preserves semantics for SSR + AT):
|
|
20
|
+
* <description-list-ui>
|
|
21
|
+
* <dt>Status</dt><dd>Active</dd>
|
|
22
|
+
* <dt>Plan</dt><dd>Pro</dd>
|
|
23
|
+
* </description-list-ui>
|
|
24
|
+
*
|
|
25
|
+
* Programmatic use:
|
|
26
|
+
* <description-list-ui
|
|
27
|
+
* items='[{"term":"Status","description":"Active"}]'></description-list-ui>
|
|
28
|
+
*
|
|
29
|
+
* Props:
|
|
30
|
+
* layout — "stacked" (term above, default) | "inline" (term : value on one row)
|
|
31
|
+
* align — "start" (default) | "between" (space-between for inline layout)
|
|
32
|
+
* items — optional JSON array of {term, description} pairs
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
import { UIElement } from '../../core/element.js';
|
|
36
|
+
|
|
37
|
+
export class UIDescriptionList extends UIElement {
|
|
38
|
+
static properties = {
|
|
39
|
+
layout: { type: String, default: 'stacked', reflect: true },
|
|
40
|
+
align: { type: String, default: 'start', reflect: true },
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
static template = () => null;
|
|
44
|
+
|
|
45
|
+
connected() {
|
|
46
|
+
// ARIA 1.2: list role requires listitem children, but <dt>/<dd>
|
|
47
|
+
// aren't listitems. group role is the accurate fit for a
|
|
48
|
+
// labeled-pairs grouping.
|
|
49
|
+
this.setAttribute('role', 'group');
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
render() {
|
|
53
|
+
const items = this.#resolveItems();
|
|
54
|
+
if (!items.length) return; // preserve declarative children
|
|
55
|
+
|
|
56
|
+
this.innerHTML = items.map(({ term, description }) => `
|
|
57
|
+
<dt data-dl-term>${this.#escape(term)}</dt>
|
|
58
|
+
<dd data-dl-desc>${this.#escape(description)}</dd>
|
|
59
|
+
`).join('');
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
#resolveItems() {
|
|
63
|
+
if (Array.isArray(this._items) && this._items.length) return this._items;
|
|
64
|
+
const attr = this.getAttribute('items');
|
|
65
|
+
if (attr) {
|
|
66
|
+
try {
|
|
67
|
+
const parsed = JSON.parse(attr);
|
|
68
|
+
if (Array.isArray(parsed)) return parsed;
|
|
69
|
+
} catch { /* fall through */ }
|
|
70
|
+
}
|
|
71
|
+
return [];
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
set items(v) {
|
|
75
|
+
this._items = Array.isArray(v) ? v : [];
|
|
76
|
+
this.render();
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
get items() {
|
|
80
|
+
return this._items || [];
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
#escape(s) {
|
|
84
|
+
return String(s == null ? '' : s).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `<description-list-ui>` — Semantic key-value list (dl/dt/dd). Preserves native HTML semantics for screen readers and SSR. Layout supports stacked (default) or inline.
|
|
3
|
+
*
|
|
4
|
+
* @see https://ui-kit.exe.xyz/site/components/description-list
|
|
5
|
+
*
|
|
6
|
+
* Type declarations generated by scripts/build/dts-codegen.mjs from
|
|
7
|
+
* the component's `.a2ui.json` sidecar. Edit the source `.yaml`,
|
|
8
|
+
* run `npm run components`, then `npm run codegen:dts` to regenerate;
|
|
9
|
+
* or hand-author this file fully if rich event types are needed.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { UIElement } from '../../core/element.js';
|
|
13
|
+
|
|
14
|
+
export class UIDescriptionList extends UIElement {
|
|
15
|
+
/** Optional JSON array of {term, description} — alternative to declarative <dt>/<dd> children */
|
|
16
|
+
items: unknown[];
|
|
17
|
+
/** Alignment for inline layout — between = term left, value right. */
|
|
18
|
+
align: 'start' | 'between';
|
|
19
|
+
/** stacked: term above description. inline: term and description on one row. */
|
|
20
|
+
layout: 'stacked' | 'inline';
|
|
21
|
+
}
|
|
@@ -1,76 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* `<description-list-ui>` — auto-registers the tag on import.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* For non-side-effect class import (test isolation, tag override), use
|
|
5
|
+
* the `class` subpath:
|
|
5
6
|
*
|
|
6
|
-
*
|
|
7
|
-
* <description-list-ui>
|
|
8
|
-
* <dt>Status</dt><dd>Active</dd>
|
|
9
|
-
* <dt>Plan</dt><dd>Pro</dd>
|
|
10
|
-
* </description-list-ui>
|
|
7
|
+
* import { UIDescriptionList } from '@adia-ai/web-components/components/description-list/class';
|
|
11
8
|
*
|
|
12
|
-
*
|
|
13
|
-
* <description-list-ui
|
|
14
|
-
* items='[{"term":"Status","description":"Active"}]'></description-list-ui>
|
|
15
|
-
*
|
|
16
|
-
* Props:
|
|
17
|
-
* layout — "stacked" (term above, default) | "inline" (term : value on one row)
|
|
18
|
-
* align — "start" (default) | "between" (space-between for inline layout)
|
|
19
|
-
* items — optional JSON array of {term, description} pairs
|
|
9
|
+
* @see ../../USAGE.md#registration--auto-vs-explicit
|
|
20
10
|
*/
|
|
21
11
|
|
|
22
|
-
import {
|
|
23
|
-
|
|
24
|
-
class UIDescriptionList extends UIElement {
|
|
25
|
-
static properties = {
|
|
26
|
-
layout: { type: String, default: 'stacked', reflect: true },
|
|
27
|
-
align: { type: String, default: 'start', reflect: true },
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
static template = () => null;
|
|
31
|
-
|
|
32
|
-
connected() {
|
|
33
|
-
// ARIA 1.2: list role requires listitem children, but <dt>/<dd>
|
|
34
|
-
// aren't listitems. group role is the accurate fit for a
|
|
35
|
-
// labeled-pairs grouping.
|
|
36
|
-
this.setAttribute('role', 'group');
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
render() {
|
|
40
|
-
const items = this.#resolveItems();
|
|
41
|
-
if (!items.length) return; // preserve declarative children
|
|
42
|
-
|
|
43
|
-
this.innerHTML = items.map(({ term, description }) => `
|
|
44
|
-
<dt data-dl-term>${this.#escape(term)}</dt>
|
|
45
|
-
<dd data-dl-desc>${this.#escape(description)}</dd>
|
|
46
|
-
`).join('');
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
#resolveItems() {
|
|
50
|
-
if (Array.isArray(this._items) && this._items.length) return this._items;
|
|
51
|
-
const attr = this.getAttribute('items');
|
|
52
|
-
if (attr) {
|
|
53
|
-
try {
|
|
54
|
-
const parsed = JSON.parse(attr);
|
|
55
|
-
if (Array.isArray(parsed)) return parsed;
|
|
56
|
-
} catch { /* fall through */ }
|
|
57
|
-
}
|
|
58
|
-
return [];
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
set items(v) {
|
|
62
|
-
this._items = Array.isArray(v) ? v : [];
|
|
63
|
-
this.render();
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
get items() {
|
|
67
|
-
return this._items || [];
|
|
68
|
-
}
|
|
12
|
+
import { defineIfFree } from '../../core/register.js';
|
|
13
|
+
import { UIDescriptionList } from './class.js';
|
|
69
14
|
|
|
70
|
-
|
|
71
|
-
return String(s == null ? '' : s).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
|
72
|
-
}
|
|
73
|
-
}
|
|
15
|
+
defineIfFree('description-list-ui', UIDescriptionList);
|
|
74
16
|
|
|
75
|
-
customElements.define('description-list-ui', UIDescriptionList);
|
|
76
17
|
export { UIDescriptionList };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Non-side-effect class export for `<divider-ui>`.
|
|
3
|
+
*
|
|
4
|
+
* Importing this file gives you the class(es) without auto-registering the tag.
|
|
5
|
+
* Useful for test isolation, subclassing with tag-name override, or selective
|
|
6
|
+
* composition.
|
|
7
|
+
*
|
|
8
|
+
* The auto-register path stays at `@adia-ai/web-components/components/divider`
|
|
9
|
+
* (which imports this file + calls `defineIfFree()`).
|
|
10
|
+
*
|
|
11
|
+
* @see ../../USAGE.md#registration--auto-vs-explicit
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* <divider-ui></divider-ui>
|
|
16
|
+
* <divider-ui label="or"></divider-ui>
|
|
17
|
+
* <divider-ui vertical></divider-ui>
|
|
18
|
+
*
|
|
19
|
+
* Horizontal or vertical divider with optional label.
|
|
20
|
+
* Renders as a simple line, or a line broken by centered text.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
import { UIElement } from '../../core/element.js';
|
|
24
|
+
|
|
25
|
+
export class UIDivider extends UIElement {
|
|
26
|
+
static properties = {
|
|
27
|
+
label: { type: String, default: '', reflect: true },
|
|
28
|
+
vertical: { type: Boolean, default: false, reflect: true },
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
static template = () => null;
|
|
32
|
+
|
|
33
|
+
connected() {
|
|
34
|
+
this.setAttribute('role', 'separator');
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
render() {
|
|
38
|
+
if (this.vertical) {
|
|
39
|
+
this.setAttribute('aria-orientation', 'vertical');
|
|
40
|
+
} else {
|
|
41
|
+
this.removeAttribute('aria-orientation');
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (this.label) {
|
|
45
|
+
let span = this.querySelector('[slot="label"]');
|
|
46
|
+
if (!span) {
|
|
47
|
+
span = document.createElement('span');
|
|
48
|
+
span.setAttribute('slot', 'label');
|
|
49
|
+
this.appendChild(span);
|
|
50
|
+
}
|
|
51
|
+
span.textContent = this.label;
|
|
52
|
+
} else {
|
|
53
|
+
const span = this.querySelector('[slot="label"]');
|
|
54
|
+
if (span) span.remove();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `<divider-ui>` — Horizontal or vertical divider with optional label.
|
|
3
|
+
*
|
|
4
|
+
* @see https://ui-kit.exe.xyz/site/components/divider
|
|
5
|
+
*
|
|
6
|
+
* Type declarations generated by scripts/build/dts-codegen.mjs from
|
|
7
|
+
* the component's `.a2ui.json` sidecar. Edit the source `.yaml`,
|
|
8
|
+
* run `npm run components`, then `npm run codegen:dts` to regenerate;
|
|
9
|
+
* or hand-author this file fully if rich event types are needed.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { UIElement } from '../../core/element.js';
|
|
13
|
+
|
|
14
|
+
export class UIDivider extends UIElement {
|
|
15
|
+
/** Center label text */
|
|
16
|
+
label: string;
|
|
17
|
+
/** Vertical orientation */
|
|
18
|
+
vertical: boolean;
|
|
19
|
+
}
|
|
@@ -1,47 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* <divider-ui label="or"></divider-ui>
|
|
4
|
-
* <divider-ui vertical></divider-ui>
|
|
2
|
+
* `<divider-ui>` — auto-registers the tag on import.
|
|
5
3
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* For non-side-effect class import (test isolation, tag override), use
|
|
5
|
+
* the `class` subpath:
|
|
6
|
+
*
|
|
7
|
+
* import { UIDivider } from '@adia-ai/web-components/components/divider/class';
|
|
8
|
+
*
|
|
9
|
+
* @see ../../USAGE.md#registration--auto-vs-explicit
|
|
8
10
|
*/
|
|
9
11
|
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
class UIDivider extends UIElement {
|
|
13
|
-
static properties = {
|
|
14
|
-
label: { type: String, default: '', reflect: true },
|
|
15
|
-
vertical: { type: Boolean, default: false, reflect: true },
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
static template = () => null;
|
|
19
|
-
|
|
20
|
-
connected() {
|
|
21
|
-
this.setAttribute('role', 'separator');
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
render() {
|
|
25
|
-
if (this.vertical) {
|
|
26
|
-
this.setAttribute('aria-orientation', 'vertical');
|
|
27
|
-
} else {
|
|
28
|
-
this.removeAttribute('aria-orientation');
|
|
29
|
-
}
|
|
12
|
+
import { defineIfFree } from '../../core/register.js';
|
|
13
|
+
import { UIDivider } from './class.js';
|
|
30
14
|
|
|
31
|
-
|
|
32
|
-
let span = this.querySelector('[slot="label"]');
|
|
33
|
-
if (!span) {
|
|
34
|
-
span = document.createElement('span');
|
|
35
|
-
span.setAttribute('slot', 'label');
|
|
36
|
-
this.appendChild(span);
|
|
37
|
-
}
|
|
38
|
-
span.textContent = this.label;
|
|
39
|
-
} else {
|
|
40
|
-
const span = this.querySelector('[slot="label"]');
|
|
41
|
-
if (span) span.remove();
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
customElements.define('divider-ui', UIDivider);
|
|
15
|
+
defineIfFree('divider-ui', UIDivider);
|
|
46
16
|
|
|
47
17
|
export { UIDivider };
|