@adia-ai/web-components 0.8.18 → 0.8.20
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/CHANGELOG.md +26 -0
- package/components/nav-group/nav-group.a2ui.json +5 -0
- package/components/nav-group/nav-group.class.js +14 -6
- package/components/nav-group/nav-group.css +5 -2
- package/components/nav-group/nav-group.d.ts +2 -0
- package/components/nav-group/nav-group.yaml +4 -0
- package/components/select/select.a2ui.json +6 -1
- package/components/select/select.class.js +34 -7
- package/components/select/select.d.ts +2 -0
- package/components/select/select.yaml +16 -1
- package/dist/host.min.css +1 -1
- package/dist/host.sheet.js +1 -1
- package/dist/theme-provider.min.js +1 -1
- package/dist/web-components.min.css +1 -1
- package/dist/web-components.min.js +18 -18
- package/dist/web-components.sheet.js +1 -1
- package/package.json +2 -1
- package/styles/colors/semantics/core.css +10 -4
- package/components/adia-mark/adia-mark.test.js +0 -69
- package/components/adia-wordmark/adia-wordmark.test.js +0 -69
- package/components/agent-artifact/agent-artifact.test.js +0 -61
- package/components/alert/alert.test.js +0 -364
- package/components/color-picker/color-picker.test.js +0 -96
- package/components/combobox/combobox.test.js +0 -256
- package/components/command/command.test.js +0 -99
- package/components/date-range-picker/date-range-picker.test.js +0 -387
- package/components/datetime-picker/datetime-picker.test.js +0 -454
- package/components/demo-toggle/demo-toggle.test.js +0 -102
- package/components/description-list/description-list.test.js +0 -72
- package/components/display-field/display-field.test.js +0 -115
- package/components/empty-state/empty-state.test.js +0 -77
- package/components/field/field.test.js +0 -260
- package/components/fields/fields.test.js +0 -88
- package/components/inline-message/inline-message.test.js +0 -203
- package/components/input/input.test.js +0 -335
- package/components/integration-card/integration-card.test.js +0 -318
- package/components/link/link.test.js +0 -143
- package/components/list/list.test.js +0 -106
- package/components/list-window/list-window.test.js +0 -303
- package/components/loading-overlay/loading-overlay.test.js +0 -257
- package/components/menu/menu.test.js +0 -176
- package/components/nav/nav.test.js +0 -428
- package/components/nav-group/nav-group.test.js +0 -67
- package/components/option-card/option-card.test.js +0 -32
- package/components/pagination/pagination.test.js +0 -195
- package/components/select/select.test.js +0 -453
- package/components/slider/slider.test.js +0 -202
- package/components/spinner/spinner.test.js +0 -272
- package/components/stat/stat.test.js +0 -108
- package/components/step-progress/step-progress.test.js +0 -129
- package/components/swatch/swatch.test.js +0 -563
- package/components/table/table.test.js +0 -479
- package/components/table-toolbar/table-toolbar.test.js +0 -152
- package/components/tag/tag.test.js +0 -137
- package/components/tags-input/tags-input.test.js +0 -477
- package/components/text/text.test.js +0 -202
- package/components/theme-provider/theme-provider.test.js +0 -94
- package/components/time-picker/time-picker.test.js +0 -287
- package/components/timeline/timeline.test.js +0 -31
- package/components/toggle-scheme/toggle-scheme.test.js +0 -110
- package/components/tree/tree.test.js +0 -312
- package/core/element.test.js +0 -389
- package/core/icons.test.js +0 -187
- package/core/logical-children.test.js +0 -54
- package/core/markdown.test.js +0 -47
- package/core/responsive.test.js +0 -121
- package/core/template.test.js +0 -611
- package/traits/active-state/active-state.test.js +0 -28
- package/traits/anchor-positioning/anchor-positioning.test.js +0 -122
- package/traits/announcer/announcer.test.js +0 -268
- package/traits/arrow-grid-nav/arrow-grid-nav.test.js +0 -375
- package/traits/attention-pulse/attention-pulse.test.js +0 -26
- package/traits/confetti/confetti.test.js +0 -46
- package/traits/confetti-burst/confetti-burst.test.js +0 -46
- package/traits/count-up/count-up.test.js +0 -54
- package/traits/declarative.test.js +0 -138
- package/traits/dirty-state/dirty-state.test.js +0 -45
- package/traits/drag-ghost/drag-ghost.test.js +0 -19
- package/traits/draggable/draggable.test.js +0 -60
- package/traits/draggable-list-item/draggable-list-item.test.js +0 -51
- package/traits/drop-target/drop-target.test.js +0 -241
- package/traits/droppable/droppable.test.js +0 -54
- package/traits/droppable-collection/droppable-collection.test.js +0 -99
- package/traits/error-shake/error-shake.test.js +0 -114
- package/traits/fade-presence/fade-presence.test.js +0 -20
- package/traits/focus-restore/focus-restore.test.js +0 -202
- package/traits/focus-trap/focus-trap.test.js +0 -42
- package/traits/focusable/focusable.test.js +0 -53
- package/traits/glow-focus/glow-focus.test.js +0 -31
- package/traits/gradient-shift/gradient-shift.test.js +0 -22
- package/traits/haptic-feedback/haptic-feedback.test.js +0 -52
- package/traits/hotkey/hotkey.test.js +0 -61
- package/traits/hoverable/hoverable.test.js +0 -24
- package/traits/inertia-drag/inertia-drag.test.js +0 -33
- package/traits/input-mask/input-mask.test.js +0 -151
- package/traits/intersection-observer/intersection-observer.test.js +0 -38
- package/traits/keyboard-nav/keyboard-nav.test.js +0 -41
- package/traits/keyboard-reorderable/keyboard-reorderable.test.js +0 -45
- package/traits/layout-animation/layout-animation.test.js +0 -114
- package/traits/long-press/long-press.test.js +0 -244
- package/traits/magnetic-hover/magnetic-hover.test.js +0 -30
- package/traits/noise-texture/noise-texture.test.js +0 -20
- package/traits/parallax/parallax.test.js +0 -26
- package/traits/portal/portal.test.js +0 -30
- package/traits/pressable/pressable.test.js +0 -73
- package/traits/resettable/resettable.test.js +0 -100
- package/traits/resizable/resizable.test.js +0 -39
- package/traits/resize-observer/resize-observer.test.js +0 -38
- package/traits/ripple/ripple.test.js +0 -32
- package/traits/roving-tabindex/roving-tabindex.test.js +0 -28
- package/traits/scale-press/scale-press.test.js +0 -39
- package/traits/scroll-lock/scroll-lock.test.js +0 -45
- package/traits/scroll-progress/scroll-progress.test.js +0 -182
- package/traits/shimmer-loading/shimmer-loading.test.js +0 -43
- package/traits/smoke.test.js +0 -111
- package/traits/snap-to-grid/snap-to-grid.test.js +0 -40
- package/traits/sound-feedback/sound-feedback.test.js +0 -26
- package/traits/spring-animate/spring-animate.test.js +0 -28
- package/traits/success-checkmark/success-checkmark.test.js +0 -120
- package/traits/tilt-hover/tilt-hover.test.js +0 -32
- package/traits/tossable/tossable.test.js +0 -31
- package/traits/traits-host.test.js +0 -73
- package/traits/typeahead/typeahead.test.js +0 -38
- package/traits/typewriter/typewriter.test.js +0 -47
- package/traits/validation/validation.test.js +0 -93
- package/traits/view-transition/view-transition.test.js +0 -268
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach } from 'vitest';
|
|
2
|
-
import '../../core/element.js';
|
|
3
|
-
import './step-progress.js';
|
|
4
|
-
|
|
5
|
-
const tick = () => new Promise((r) => queueMicrotask(r));
|
|
6
|
-
|
|
7
|
-
function mount(html) {
|
|
8
|
-
const wrap = document.createElement('div');
|
|
9
|
-
wrap.innerHTML = html;
|
|
10
|
-
document.body.appendChild(wrap);
|
|
11
|
-
return wrap.firstElementChild;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
describe('step-progress-ui', () => {
|
|
15
|
-
beforeEach(() => { document.body.innerHTML = ''; });
|
|
16
|
-
|
|
17
|
-
it('registers as a custom element', () => {
|
|
18
|
-
expect(customElements.get('step-progress-ui')).toBeDefined();
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it('sets role=progressbar + aria-value{min,max,now}', () => {
|
|
22
|
-
const el = mount('<step-progress-ui value="3" total="10"></step-progress-ui>');
|
|
23
|
-
expect(el.getAttribute('role')).toBe('progressbar');
|
|
24
|
-
expect(el.getAttribute('aria-valuemin')).toBe('0');
|
|
25
|
-
expect(el.getAttribute('aria-valuemax')).toBe('10');
|
|
26
|
-
expect(el.getAttribute('aria-valuenow')).toBe('3');
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
it('auto-mints a caption span + track div', () => {
|
|
30
|
-
const el = mount('<step-progress-ui value="2" total="5" caption="Step 2 of 5"></step-progress-ui>');
|
|
31
|
-
expect(el.querySelector(':scope > [slot="caption"]')).not.toBeNull();
|
|
32
|
-
expect(el.querySelector(':scope > [slot="track"]')).not.toBeNull();
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
it('renders one <span> per step in the track', () => {
|
|
36
|
-
const el = mount('<step-progress-ui value="2" total="5"></step-progress-ui>');
|
|
37
|
-
const dashes = el.querySelectorAll(':scope > [slot="track"] > span');
|
|
38
|
-
expect(dashes.length).toBe(5);
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
it('marks the first `value` dashes as [data-active]', () => {
|
|
42
|
-
const el = mount('<step-progress-ui value="3" total="5"></step-progress-ui>');
|
|
43
|
-
const dashes = el.querySelectorAll(':scope > [slot="track"] > span');
|
|
44
|
-
expect(dashes[0].hasAttribute('data-active')).toBe(true);
|
|
45
|
-
expect(dashes[1].hasAttribute('data-active')).toBe(true);
|
|
46
|
-
expect(dashes[2].hasAttribute('data-active')).toBe(true);
|
|
47
|
-
expect(dashes[3].hasAttribute('data-active')).toBe(false);
|
|
48
|
-
expect(dashes[4].hasAttribute('data-active')).toBe(false);
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
it('renders the caption text in the caption slot', () => {
|
|
52
|
-
const el = mount('<step-progress-ui value="3" total="10" caption="Step 3 of 10"></step-progress-ui>');
|
|
53
|
-
expect(el.querySelector('[slot="caption"]').textContent).toBe('Step 3 of 10');
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
it('hides the caption span when caption is empty', () => {
|
|
57
|
-
const el = mount('<step-progress-ui value="2" total="5"></step-progress-ui>');
|
|
58
|
-
expect(el.querySelector('[slot="caption"]').hasAttribute('hidden')).toBe(true);
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
it('updates the dash + aria when value changes', async () => {
|
|
62
|
-
const el = mount('<step-progress-ui value="2" total="5"></step-progress-ui>');
|
|
63
|
-
el.value = 4;
|
|
64
|
-
await tick();
|
|
65
|
-
const dashes = el.querySelectorAll(':scope > [slot="track"] > span');
|
|
66
|
-
expect(el.getAttribute('aria-valuenow')).toBe('4');
|
|
67
|
-
expect(dashes[3].hasAttribute('data-active')).toBe(true);
|
|
68
|
-
expect(dashes[4].hasAttribute('data-active')).toBe(false);
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
it('grows the dash count when total increases', async () => {
|
|
72
|
-
const el = mount('<step-progress-ui value="2" total="5"></step-progress-ui>');
|
|
73
|
-
expect(el.querySelectorAll('[slot="track"] > span').length).toBe(5);
|
|
74
|
-
el.total = 8;
|
|
75
|
-
await tick();
|
|
76
|
-
expect(el.querySelectorAll('[slot="track"] > span').length).toBe(8);
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
it('shrinks the dash count when total decreases', async () => {
|
|
80
|
-
const el = mount('<step-progress-ui value="2" total="8"></step-progress-ui>');
|
|
81
|
-
expect(el.querySelectorAll('[slot="track"] > span').length).toBe(8);
|
|
82
|
-
el.total = 4;
|
|
83
|
-
await tick();
|
|
84
|
-
expect(el.querySelectorAll('[slot="track"] > span').length).toBe(4);
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
it('clamps value to [0, total]', () => {
|
|
88
|
-
const el = mount('<step-progress-ui value="20" total="5"></step-progress-ui>');
|
|
89
|
-
const dashes = el.querySelectorAll(':scope > [slot="track"] > span');
|
|
90
|
-
expect(el.getAttribute('aria-valuenow')).toBe('5');
|
|
91
|
-
for (const dash of dashes) {
|
|
92
|
-
expect(dash.hasAttribute('data-active')).toBe(true);
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
it('handles value=0 (empty state) — no dashes active', () => {
|
|
97
|
-
const el = mount('<step-progress-ui value="0" total="5"></step-progress-ui>');
|
|
98
|
-
const dashes = el.querySelectorAll(':scope > [slot="track"] > span');
|
|
99
|
-
expect(el.getAttribute('aria-valuenow')).toBe('0');
|
|
100
|
-
for (const dash of dashes) {
|
|
101
|
-
expect(dash.hasAttribute('data-active')).toBe(false);
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
it('handles value=total (complete state) — all dashes active', () => {
|
|
106
|
-
const el = mount('<step-progress-ui value="5" total="5" caption="All steps complete"></step-progress-ui>');
|
|
107
|
-
const dashes = el.querySelectorAll(':scope > [slot="track"] > span');
|
|
108
|
-
for (const dash of dashes) {
|
|
109
|
-
expect(dash.hasAttribute('data-active')).toBe(true);
|
|
110
|
-
}
|
|
111
|
-
expect(el.querySelector('[slot="caption"]').textContent).toBe('All steps complete');
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
it('survives disconnect without throwing', () => {
|
|
115
|
-
const el = mount('<step-progress-ui value="3" total="10"></step-progress-ui>');
|
|
116
|
-
expect(() => el.remove()).not.toThrow();
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
// Regression (audit-wrapper-trap arm 2): WRAPPED consumer [slot="caption"] +
|
|
120
|
-
// [slot="track"] (e.g. via `.map()`/conditional interpolation) must be seen by
|
|
121
|
-
// the absence check so it doesn't MINT duplicates over the consumer's slots.
|
|
122
|
-
it('does NOT mint duplicates when WRAPPED consumer caption + track are present', async () => {
|
|
123
|
-
const el = mount(`<step-progress-ui value="2" total="5"><span style="display:contents" role="presentation"><span slot="caption" data-test="c">Custom</span><div slot="track" data-test="t"></div></span></step-progress-ui>`);
|
|
124
|
-
await tick();
|
|
125
|
-
expect(el.querySelectorAll('[slot="caption"]').length).toBe(1);
|
|
126
|
-
expect(el.querySelectorAll('[slot="track"]').length).toBe(1);
|
|
127
|
-
expect(el.querySelector('[slot="caption"]').dataset.test).toBe('c');
|
|
128
|
-
});
|
|
129
|
-
});
|