@warp-ds/elements 2.5.1-next.5 → 2.5.2

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.
Files changed (62) hide show
  1. package/dist/.storybook/utilities.d.ts +0 -1
  2. package/dist/.storybook/utilities.js +14 -22
  3. package/dist/custom-elements.json +31 -572
  4. package/dist/index.d.ts +0 -269
  5. package/dist/packages/combobox/combobox.d.ts +0 -5
  6. package/dist/packages/combobox/combobox.js +12 -12
  7. package/dist/packages/combobox/combobox.js.map +3 -3
  8. package/dist/packages/combobox/combobox.stories.js +7 -7
  9. package/dist/packages/combobox/combobox.test.js +0 -90
  10. package/dist/packages/toast/toast.d.ts +1 -0
  11. package/dist/packages/toast/toast.js +11 -11
  12. package/dist/packages/toast/toast.js.map +4 -4
  13. package/dist/web-types.json +1 -91
  14. package/package.json +1 -9
  15. package/dist/packages/pagination/locales/da/messages.d.mts +0 -1
  16. package/dist/packages/pagination/locales/da/messages.mjs +0 -1
  17. package/dist/packages/pagination/locales/en/messages.d.mts +0 -1
  18. package/dist/packages/pagination/locales/en/messages.mjs +0 -1
  19. package/dist/packages/pagination/locales/fi/messages.d.mts +0 -1
  20. package/dist/packages/pagination/locales/fi/messages.mjs +0 -1
  21. package/dist/packages/pagination/locales/nb/messages.d.mts +0 -1
  22. package/dist/packages/pagination/locales/nb/messages.mjs +0 -1
  23. package/dist/packages/pagination/locales/sv/messages.d.mts +0 -1
  24. package/dist/packages/pagination/locales/sv/messages.mjs +0 -1
  25. package/dist/packages/pagination/pagination.d.ts +0 -32
  26. package/dist/packages/pagination/pagination.js +0 -2503
  27. package/dist/packages/pagination/pagination.js.map +0 -7
  28. package/dist/packages/pagination/pagination.react.stories.d.ts +0 -21
  29. package/dist/packages/pagination/pagination.react.stories.js +0 -45
  30. package/dist/packages/pagination/pagination.stories.d.ts +0 -14
  31. package/dist/packages/pagination/pagination.stories.js +0 -56
  32. package/dist/packages/pagination/pagination.test.d.ts +0 -1
  33. package/dist/packages/pagination/pagination.test.js +0 -76
  34. package/dist/packages/pagination/react.d.ts +0 -5
  35. package/dist/packages/pagination/react.js +0 -15
  36. package/dist/packages/pagination/styles.d.ts +0 -1
  37. package/dist/packages/pagination/styles.js +0 -2
  38. package/dist/packages/textarea/locales/da/messages.d.mts +0 -1
  39. package/dist/packages/textarea/locales/da/messages.mjs +0 -1
  40. package/dist/packages/textarea/locales/en/messages.d.mts +0 -1
  41. package/dist/packages/textarea/locales/en/messages.mjs +0 -1
  42. package/dist/packages/textarea/locales/fi/messages.d.mts +0 -1
  43. package/dist/packages/textarea/locales/fi/messages.mjs +0 -1
  44. package/dist/packages/textarea/locales/nb/messages.d.mts +0 -1
  45. package/dist/packages/textarea/locales/nb/messages.mjs +0 -1
  46. package/dist/packages/textarea/locales/sv/messages.d.mts +0 -1
  47. package/dist/packages/textarea/locales/sv/messages.mjs +0 -1
  48. package/dist/packages/textarea/react.d.ts +0 -11
  49. package/dist/packages/textarea/react.js +0 -21
  50. package/dist/packages/textarea/styles.d.ts +0 -1
  51. package/dist/packages/textarea/styles.js +0 -2
  52. package/dist/packages/textarea/textarea.d.ts +0 -62
  53. package/dist/packages/textarea/textarea.js +0 -2476
  54. package/dist/packages/textarea/textarea.js.map +0 -7
  55. package/dist/packages/textarea/textarea.react.stories.d.ts +0 -33
  56. package/dist/packages/textarea/textarea.react.stories.js +0 -41
  57. package/dist/packages/textarea/textarea.stories.d.ts +0 -20
  58. package/dist/packages/textarea/textarea.stories.js +0 -113
  59. package/dist/packages/textarea/textarea.test.d.ts +0 -1
  60. package/dist/packages/textarea/textarea.test.js +0 -172
  61. package/dist/packages/utils.d.ts +0 -1
  62. package/dist/packages/utils.js +0 -4
@@ -1,172 +0,0 @@
1
- import { userEvent } from '@vitest/browser/context';
2
- import { html } from 'lit';
3
- import { expect, test, vi } from 'vitest';
4
- import { render } from 'vitest-browser-lit';
5
- import './textarea.js';
6
- test('renders the textarea', async () => {
7
- const component = html `<w-textarea label="Test label"></w-textarea>`;
8
- const page = render(component);
9
- await expect.element(page.getByText('Test label')).toBeVisible();
10
- });
11
- test('works as expected in forms', async () => {
12
- const label = 'Test label';
13
- const component = html `
14
- <form data-testid="form">
15
- <w-textarea label="${label}" name="message" value="Hola el Mundo"></w-textarea>
16
- </form>
17
- `;
18
- const page = render(component);
19
- await expect.element(page.getByLabelText(label)).toHaveValue('Hola el Mundo');
20
- let formData = new FormData(page.getByTestId('form').element());
21
- expect(formData.get('message')).toBe('Hola el Mundo');
22
- const inputHandler = vi.fn();
23
- const changeHandler = vi.fn();
24
- page.getByLabelText(label).element().addEventListener('input', inputHandler);
25
- page.getByLabelText(label).element().addEventListener('change', changeHandler);
26
- await page.getByLabelText(label).fill('Hello, World');
27
- expect(inputHandler).toHaveBeenCalled();
28
- expect(changeHandler).not.toHaveBeenCalled();
29
- await userEvent.tab(); // trigger a blur to fire the change event
30
- await expect.poll(() => changeHandler.mock.calls.length).toBeGreaterThan(0);
31
- await expect.element(page.getByLabelText(label)).toHaveValue('Hello, World');
32
- formData = new FormData(page.getByTestId('form').element());
33
- expect(formData.get('message')).toBe('Hello, World');
34
- });
35
- test('renders help text if provided', async () => {
36
- const component = html `<w-textarea label="Test label" help-text="Helpful help text"></w-textarea>`;
37
- const page = render(component);
38
- await expect.element(page.getByText('Helpful help text')).toBeVisible();
39
- });
40
- test('marks input field as aria-invalid if the invalid prop is true', async () => {
41
- const component = html `<w-textarea label="Test label" invalid help-text="No, bad input!"></w-textarea>`;
42
- const page = render(component);
43
- await expect.element(page.getByLabelText('Test label')).toHaveAccessibleErrorMessage('No, bad input!');
44
- });
45
- test('aria-invalid attribute is absent when textarea is valid', async () => {
46
- const component = html `<w-textarea label="Test label" data-testid="textarea"></w-textarea>`;
47
- const page = render(component);
48
- const textarea = page.getByLabelText('Test label');
49
- await expect.element(textarea).toBeVisible();
50
- // aria-invalid should NOT be present when valid
51
- await expect.element(textarea).not.toHaveAttribute('aria-invalid');
52
- });
53
- test('aria-invalid attribute is "true" when textarea is invalid', async () => {
54
- const component = html `<w-textarea label="Test label" invalid></w-textarea>`;
55
- const page = render(component);
56
- const textarea = page.getByLabelText('Test label');
57
- await expect.element(textarea).toBeVisible();
58
- // aria-invalid should be "true" when invalid
59
- await expect.element(textarea).toHaveAttribute('aria-invalid', 'true');
60
- });
61
- test('marks input field as readonly if the readonly prop is true', async () => {
62
- const component = html `<w-textarea label="Test label" readonly></w-textarea>`;
63
- const page = render(component);
64
- await expect.element(page.getByLabelText('Test label')).toHaveAttribute('readonly', '');
65
- });
66
- test('can reset textarea by resetting surrounding form', async () => {
67
- render(html `
68
- <form>
69
- <w-textarea name="message" value="Hola el Mundo"></w-textarea>
70
- </form>
71
- `);
72
- const form = document.querySelector('form');
73
- const wTextArea = document.querySelector('w-textarea');
74
- // sanity
75
- expect(form).not.toBeNull();
76
- expect(wTextArea).not.toBeNull();
77
- await expect.poll(() => wTextArea.value).toBe('Hola el Mundo');
78
- wTextArea.value = 'Definitely not Hola el Mundo';
79
- await expect.poll(() => wTextArea.value).toBe('Definitely not Hola el Mundo');
80
- // Reset the form
81
- form.reset();
82
- await expect.poll(() => wTextArea.value).toBe('Hola el Mundo');
83
- });
84
- test('checkValidity returns false when required textarea is empty', async () => {
85
- render(html `<w-textarea label="Message" name="message" required></w-textarea>`);
86
- const wTextArea = document.querySelector('w-textarea');
87
- // Wait for component to be ready
88
- await expect.poll(() => wTextArea.checkValidity()).toBe(false);
89
- expect(wTextArea.validity.valueMissing).toBe(true);
90
- expect(wTextArea.validationMessage).not.toBe('');
91
- });
92
- test('checkValidity returns true when required textarea has a value', async () => {
93
- render(html `<w-textarea label="Message" name="message" required value="Hello"></w-textarea>`);
94
- const wTextArea = document.querySelector('w-textarea');
95
- // Wait for component to be ready
96
- await expect.poll(() => wTextArea.checkValidity()).toBe(true);
97
- expect(wTextArea.validity.valid).toBe(true);
98
- });
99
- test('form submission is blocked when required textarea is empty', async () => {
100
- const submitHandler = vi.fn((e) => e.preventDefault());
101
- render(html `
102
- <form data-testid="form">
103
- <w-textarea label="Message" name="message" required></w-textarea>
104
- <button type="submit">Submit</button>
105
- </form>
106
- `);
107
- const form = document.querySelector('form');
108
- form.addEventListener('submit', submitHandler);
109
- const wTextArea = document.querySelector('w-textarea');
110
- // Wait for component to be ready
111
- await expect.poll(() => wTextArea.checkValidity()).toBe(false);
112
- // Try to submit - should be blocked by validation
113
- const submitButton = document.querySelector('button');
114
- submitButton.click();
115
- // Component should show invalid state with error message
116
- await expect.poll(() => wTextArea.invalid).toBe(true);
117
- await expect.poll(() => wTextArea.helpText).not.toBe('');
118
- // Form should not have been submitted
119
- expect(submitHandler).not.toHaveBeenCalled();
120
- });
121
- test('form submission succeeds when required textarea has a value', async () => {
122
- const submitHandler = vi.fn((e) => e.preventDefault());
123
- render(html `
124
- <form data-testid="form">
125
- <w-textarea label="Message" name="message" required value="Hello"></w-textarea>
126
- <button type="submit">Submit</button>
127
- </form>
128
- `);
129
- const form = document.querySelector('form');
130
- form.addEventListener('submit', submitHandler);
131
- const wTextArea = document.querySelector('w-textarea');
132
- // Wait for component to be ready
133
- await expect.poll(() => wTextArea.checkValidity()).toBe(true);
134
- // Submit should succeed
135
- const submitButton = document.querySelector('button');
136
- submitButton.click();
137
- // Form should have been submitted
138
- await expect.poll(() => submitHandler.mock.calls.length).toBeGreaterThan(0);
139
- });
140
- test('shows validation error on blur when required field is empty', async () => {
141
- const page = render(html `<w-textarea label="Message" name="message" required></w-textarea>`);
142
- const wTextArea = document.querySelector('w-textarea');
143
- // Initially should not show error (no interaction yet)
144
- await expect.poll(() => wTextArea.invalid).toBeFalsy();
145
- // Focus and blur the textarea
146
- const textarea = page.getByLabelText('Message');
147
- await textarea.click();
148
- await userEvent.tab(); // blur
149
- // Should now show validation error
150
- await expect.poll(() => wTextArea.invalid).toBe(true);
151
- await expect.poll(() => wTextArea.helpText).not.toBe('');
152
- });
153
- test('restores original help text when validation passes', async () => {
154
- const page = render(html `
155
- <w-textarea label="Message" name="message" required help-text="Enter your message"></w-textarea>
156
- `);
157
- const wTextArea = document.querySelector('w-textarea');
158
- // Initially should show original help text
159
- await expect.poll(() => wTextArea.helpText).toBe('Enter your message');
160
- // Focus and blur to trigger validation
161
- const textarea = page.getByLabelText('Message');
162
- await textarea.click();
163
- await userEvent.tab();
164
- // Should show validation error
165
- await expect.poll(() => wTextArea.invalid).toBe(true);
166
- await expect.poll(() => wTextArea.helpText).not.toBe('Enter your message');
167
- // Fill in a value
168
- await textarea.fill('Hello');
169
- // Should restore original help text
170
- await expect.poll(() => wTextArea.invalid).toBe(false);
171
- await expect.poll(() => wTextArea.helpText).toBe('Enter your message');
172
- });
@@ -1 +0,0 @@
1
- export declare function uniqueId(prefix?: string): string;
@@ -1,4 +0,0 @@
1
- import { nanoid } from 'nanoid';
2
- export function uniqueId(prefix = '') {
3
- return `${prefix}${nanoid()}`;
4
- }