@siemens/ix 0.0.0-pr-1974-20250627115746 → 0.0.0-pr-1974-20250627142646

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 (158) hide show
  1. package/package.json +2 -2
  2. package/dist/collection/components/application-header/test/application-header.ct.js +0 -389
  3. package/dist/collection/components/application-header/test/application-header.ct.js.map +0 -1
  4. package/dist/collection/components/avatar/test/avatar.ct.js +0 -85
  5. package/dist/collection/components/avatar/test/avatar.ct.js.map +0 -1
  6. package/dist/collection/components/blind/test/blind.ct.js +0 -16
  7. package/dist/collection/components/blind/test/blind.ct.js.map +0 -1
  8. package/dist/collection/components/breadcrumb/test/breadcrumb.ct.js +0 -98
  9. package/dist/collection/components/breadcrumb/test/breadcrumb.ct.js.map +0 -1
  10. package/dist/collection/components/button/test/button.ct.js +0 -153
  11. package/dist/collection/components/button/test/button.ct.js.map +0 -1
  12. package/dist/collection/components/category-filter/test/category-filter.ct.js +0 -62
  13. package/dist/collection/components/category-filter/test/category-filter.ct.js.map +0 -1
  14. package/dist/collection/components/checkbox/tests/checkbox.ct.js +0 -86
  15. package/dist/collection/components/checkbox/tests/checkbox.ct.js.map +0 -1
  16. package/dist/collection/components/checkbox-group/test/checkbox-group.ct.js +0 -48
  17. package/dist/collection/components/checkbox-group/test/checkbox-group.ct.js.map +0 -1
  18. package/dist/collection/components/chip/test/chip.ct.js +0 -76
  19. package/dist/collection/components/chip/test/chip.ct.js.map +0 -1
  20. package/dist/collection/components/custom-field/tests/custom-field.ct.js +0 -68
  21. package/dist/collection/components/custom-field/tests/custom-field.ct.js.map +0 -1
  22. package/dist/collection/components/date-dropdown/test/date-dropdown.ct.js +0 -215
  23. package/dist/collection/components/date-dropdown/test/date-dropdown.ct.js.map +0 -1
  24. package/dist/collection/components/date-input/tests/date-input.ct.js +0 -117
  25. package/dist/collection/components/date-input/tests/date-input.ct.js.map +0 -1
  26. package/dist/collection/components/date-picker/test/date-picker.ct.js +0 -221
  27. package/dist/collection/components/date-picker/test/date-picker.ct.js.map +0 -1
  28. package/dist/collection/components/datetime-picker/test/datetime-picker.ct.js +0 -55
  29. package/dist/collection/components/datetime-picker/test/datetime-picker.ct.js.map +0 -1
  30. package/dist/collection/components/drawer/test/drawer.ct.js +0 -67
  31. package/dist/collection/components/drawer/test/drawer.ct.js.map +0 -1
  32. package/dist/collection/components/dropdown/test/dropdown.ct.js +0 -624
  33. package/dist/collection/components/dropdown/test/dropdown.ct.js.map +0 -1
  34. package/dist/collection/components/dropdown-button/dropdown-button.ct.js +0 -51
  35. package/dist/collection/components/dropdown-button/dropdown-button.ct.js.map +0 -1
  36. package/dist/collection/components/event-list/test/event-list.ct.js +0 -88
  37. package/dist/collection/components/event-list/test/event-list.ct.js.map +0 -1
  38. package/dist/collection/components/expanding-search/test/expanding-search.ct.js +0 -56
  39. package/dist/collection/components/expanding-search/test/expanding-search.ct.js.map +0 -1
  40. package/dist/collection/components/field-label/tests/field-label.ct.js +0 -121
  41. package/dist/collection/components/field-label/tests/field-label.ct.js.map +0 -1
  42. package/dist/collection/components/field-wrapper/tests/field-wrapper.ct.js +0 -63
  43. package/dist/collection/components/field-wrapper/tests/field-wrapper.ct.js.map +0 -1
  44. package/dist/collection/components/flip-tile/test/flip-tile.ct.js +0 -89
  45. package/dist/collection/components/flip-tile/test/flip-tile.ct.js.map +0 -1
  46. package/dist/collection/components/group/test/group.ct.js +0 -115
  47. package/dist/collection/components/group/test/group.ct.js.map +0 -1
  48. package/dist/collection/components/icon-button/test/icon-button.ct.js +0 -30
  49. package/dist/collection/components/icon-button/test/icon-button.ct.js.map +0 -1
  50. package/dist/collection/components/input/tests/form-ready.ct.js +0 -73
  51. package/dist/collection/components/input/tests/form-ready.ct.js.map +0 -1
  52. package/dist/collection/components/input/tests/validation.ct.js +0 -84
  53. package/dist/collection/components/input/tests/validation.ct.js.map +0 -1
  54. package/dist/collection/components/input-group/tests/input-group.ct.js +0 -161
  55. package/dist/collection/components/input-group/tests/input-group.ct.js.map +0 -1
  56. package/dist/collection/components/menu/test/menu.ct.js +0 -256
  57. package/dist/collection/components/menu/test/menu.ct.js.map +0 -1
  58. package/dist/collection/components/menu-about/test/menu-about.ct.js +0 -65
  59. package/dist/collection/components/menu-about/test/menu-about.ct.js.map +0 -1
  60. package/dist/collection/components/menu-avatar-item/test/menu-avatar-item.ct.js +0 -47
  61. package/dist/collection/components/menu-avatar-item/test/menu-avatar-item.ct.js.map +0 -1
  62. package/dist/collection/components/menu-category/test/menu-category.ct.js +0 -274
  63. package/dist/collection/components/menu-category/test/menu-category.ct.js.map +0 -1
  64. package/dist/collection/components/menu-item/test/menu-item.ct.js +0 -67
  65. package/dist/collection/components/menu-item/test/menu-item.ct.js.map +0 -1
  66. package/dist/collection/components/menu-settings/test/menu-settings.ct.js +0 -32
  67. package/dist/collection/components/menu-settings/test/menu-settings.ct.js.map +0 -1
  68. package/dist/collection/components/message-bar/test/message-bar.ct.js +0 -28
  69. package/dist/collection/components/message-bar/test/message-bar.ct.js.map +0 -1
  70. package/dist/collection/components/modal/test/modal.ct.js +0 -204
  71. package/dist/collection/components/modal/test/modal.ct.js.map +0 -1
  72. package/dist/collection/components/pagination/test/pagination.ct.js +0 -68
  73. package/dist/collection/components/pagination/test/pagination.ct.js.map +0 -1
  74. package/dist/collection/components/pane/test/panes.ct.js +0 -59
  75. package/dist/collection/components/pane/test/panes.ct.js.map +0 -1
  76. package/dist/collection/components/pane-layout/test/pane-layout.ct.js +0 -60
  77. package/dist/collection/components/pane-layout/test/pane-layout.ct.js.map +0 -1
  78. package/dist/collection/components/pill/test/pill.ct.js +0 -63
  79. package/dist/collection/components/pill/test/pill.ct.js.map +0 -1
  80. package/dist/collection/components/radio/test/radio.ct.js +0 -77
  81. package/dist/collection/components/radio/test/radio.ct.js.map +0 -1
  82. package/dist/collection/components/radio-group/test/radio-group.ct.js +0 -117
  83. package/dist/collection/components/radio-group/test/radio-group.ct.js.map +0 -1
  84. package/dist/collection/components/select/test/select-keyboard.ct.js +0 -380
  85. package/dist/collection/components/select/test/select-keyboard.ct.js.map +0 -1
  86. package/dist/collection/components/select/test/select.ct.js +0 -594
  87. package/dist/collection/components/select/test/select.ct.js.map +0 -1
  88. package/dist/collection/components/slider/test/slider.ct.js +0 -65
  89. package/dist/collection/components/slider/test/slider.ct.js.map +0 -1
  90. package/dist/collection/components/tabs/test/tabs.ct.js +0 -134
  91. package/dist/collection/components/tabs/test/tabs.ct.js.map +0 -1
  92. package/dist/collection/components/time-input/test/time-input.ct.js +0 -62
  93. package/dist/collection/components/time-input/test/time-input.ct.js.map +0 -1
  94. package/dist/collection/components/time-picker/test/time-picker.ct.js +0 -172
  95. package/dist/collection/components/time-picker/test/time-picker.ct.js.map +0 -1
  96. package/dist/collection/components/toggle/test/toggle.ct.js +0 -84
  97. package/dist/collection/components/toggle/test/toggle.ct.js.map +0 -1
  98. package/dist/collection/components/tooltip/test/tooltip.ct.js +0 -243
  99. package/dist/collection/components/tooltip/test/tooltip.ct.js.map +0 -1
  100. package/dist/collection/components/tree/test/tree.ct.js +0 -355
  101. package/dist/collection/components/tree/test/tree.ct.js.map +0 -1
  102. package/dist/collection/components/upload/test/upload.ct.js +0 -17
  103. package/dist/collection/components/upload/test/upload.ct.js.map +0 -1
  104. package/dist/collection/components/workflow-steps/test/workflow-steps.ct.js +0 -74
  105. package/dist/collection/components/workflow-steps/test/workflow-steps.ct.js.map +0 -1
  106. package/dist/collection/tests/utils/test/matchMedia.mock.js +0 -22
  107. package/dist/types/components/application-header/test/application-header.ct.d.ts +0 -1
  108. package/dist/types/components/avatar/test/avatar.ct.d.ts +0 -1
  109. package/dist/types/components/blind/test/blind.ct.d.ts +0 -1
  110. package/dist/types/components/breadcrumb/test/breadcrumb.ct.d.ts +0 -1
  111. package/dist/types/components/button/test/button.ct.d.ts +0 -7
  112. package/dist/types/components/category-filter/test/category-filter.ct.d.ts +0 -1
  113. package/dist/types/components/checkbox/tests/checkbox.ct.d.ts +0 -1
  114. package/dist/types/components/checkbox-group/test/checkbox-group.ct.d.ts +0 -1
  115. package/dist/types/components/chip/test/chip.ct.d.ts +0 -1
  116. package/dist/types/components/custom-field/tests/custom-field.ct.d.ts +0 -1
  117. package/dist/types/components/date-dropdown/test/date-dropdown.ct.d.ts +0 -1
  118. package/dist/types/components/date-input/tests/date-input.ct.d.ts +0 -1
  119. package/dist/types/components/date-picker/test/date-picker.ct.d.ts +0 -1
  120. package/dist/types/components/datetime-picker/test/datetime-picker.ct.d.ts +0 -1
  121. package/dist/types/components/drawer/test/drawer.ct.d.ts +0 -1
  122. package/dist/types/components/dropdown/test/dropdown.ct.d.ts +0 -1
  123. package/dist/types/components/dropdown-button/dropdown-button.ct.d.ts +0 -1
  124. package/dist/types/components/event-list/test/event-list.ct.d.ts +0 -1
  125. package/dist/types/components/expanding-search/test/expanding-search.ct.d.ts +0 -1
  126. package/dist/types/components/field-label/tests/field-label.ct.d.ts +0 -1
  127. package/dist/types/components/field-wrapper/tests/field-wrapper.ct.d.ts +0 -1
  128. package/dist/types/components/flip-tile/test/flip-tile.ct.d.ts +0 -1
  129. package/dist/types/components/group/test/group.ct.d.ts +0 -1
  130. package/dist/types/components/icon-button/test/icon-button.ct.d.ts +0 -1
  131. package/dist/types/components/input/tests/form-ready.ct.d.ts +0 -1
  132. package/dist/types/components/input/tests/validation.ct.d.ts +0 -1
  133. package/dist/types/components/input-group/tests/input-group.ct.d.ts +0 -1
  134. package/dist/types/components/menu/test/menu.ct.d.ts +0 -1
  135. package/dist/types/components/menu-about/test/menu-about.ct.d.ts +0 -1
  136. package/dist/types/components/menu-avatar-item/test/menu-avatar-item.ct.d.ts +0 -1
  137. package/dist/types/components/menu-category/test/menu-category.ct.d.ts +0 -1
  138. package/dist/types/components/menu-item/test/menu-item.ct.d.ts +0 -1
  139. package/dist/types/components/menu-settings/test/menu-settings.ct.d.ts +0 -1
  140. package/dist/types/components/message-bar/test/message-bar.ct.d.ts +0 -1
  141. package/dist/types/components/modal/test/modal.ct.d.ts +0 -8
  142. package/dist/types/components/pagination/test/pagination.ct.d.ts +0 -1
  143. package/dist/types/components/pane/test/panes.ct.d.ts +0 -1
  144. package/dist/types/components/pane-layout/test/pane-layout.ct.d.ts +0 -1
  145. package/dist/types/components/pill/test/pill.ct.d.ts +0 -1
  146. package/dist/types/components/radio/test/radio.ct.d.ts +0 -1
  147. package/dist/types/components/radio-group/test/radio-group.ct.d.ts +0 -1
  148. package/dist/types/components/select/test/select-keyboard.ct.d.ts +0 -1
  149. package/dist/types/components/select/test/select.ct.d.ts +0 -1
  150. package/dist/types/components/slider/test/slider.ct.d.ts +0 -1
  151. package/dist/types/components/tabs/test/tabs.ct.d.ts +0 -1
  152. package/dist/types/components/time-input/test/time-input.ct.d.ts +0 -1
  153. package/dist/types/components/time-picker/test/time-picker.ct.d.ts +0 -1
  154. package/dist/types/components/toggle/test/toggle.ct.d.ts +0 -1
  155. package/dist/types/components/tooltip/test/tooltip.ct.d.ts +0 -1
  156. package/dist/types/components/tree/test/tree.ct.d.ts +0 -1
  157. package/dist/types/components/upload/test/upload.ct.d.ts +0 -1
  158. package/dist/types/components/workflow-steps/test/workflow-steps.ct.d.ts +0 -1
@@ -1,594 +0,0 @@
1
- /*
2
- * SPDX-FileCopyrightText: 2023 Siemens AG
3
- *
4
- * SPDX-License-Identifier: MIT
5
- *
6
- * This source code is licensed under the MIT license found in the
7
- * LICENSE file in the root directory of this source tree.
8
- */
9
- import { expect } from "@playwright/test";
10
- import { getFormValue, preventFormSubmission, test } from "../../../tests/utils/test/index";
11
- test('renders', async ({ mount, page }) => {
12
- await mount(`
13
- <ix-select>
14
- <ix-select-item value="11" label="Item 1">Test</ix-select-item>
15
- <ix-select-item value="22" label="Item 2">Test</ix-select-item>
16
- </ix-select>
17
- `);
18
- const element = page.locator('ix-select');
19
- await expect(element).toHaveClass(/hydrated/);
20
- await page.locator('[data-select-dropdown]').click();
21
- const dropdown = element.locator('ix-dropdown');
22
- await expect(dropdown).toBeVisible();
23
- await expect(page.getByRole('button', { name: 'Item 1' })).toBeVisible();
24
- await expect(page.getByRole('button', { name: 'Item 2' })).toBeVisible();
25
- });
26
- test('editable mode', async ({ mount, page }) => {
27
- await mount(`
28
- <ix-select editable>
29
- <ix-select-item value="11" label="Item 1">Test</ix-select-item>
30
- <ix-select-item value="22" label="Item 2">Test</ix-select-item>
31
- </ix-select>
32
- `);
33
- const element = page.locator('ix-select');
34
- await expect(element).toHaveClass(/hydrated/);
35
- await page.locator('[data-select-dropdown]').click();
36
- await page.getByTestId('input').fill('Not existing');
37
- const dropdown = element.locator('ix-dropdown');
38
- await expect(dropdown).toBeVisible();
39
- await expect(page.getByRole('button', { name: 'Item 1' })).not.toBeVisible();
40
- await expect(page.getByRole('button', { name: 'Item 2' })).not.toBeVisible();
41
- const add = page.getByRole('button', { name: /Not existing/ });
42
- await expect(add).toBeVisible();
43
- await add.click();
44
- await expect(page.getByTestId('input')).toHaveValue(/Not existing/);
45
- await page.locator('[data-select-dropdown]').click();
46
- await expect(page.getByRole('button', { name: 'Item 1' })).toBeVisible();
47
- await expect(page.getByRole('button', { name: 'Item 2' })).toBeVisible();
48
- const addedItem = page
49
- .getByRole('listitem')
50
- .filter({ hasText: 'Not existing' });
51
- await expect(addedItem).toBeVisible();
52
- });
53
- test('single selection', async ({ mount, page }) => {
54
- await mount(`
55
- <ix-select>
56
- <ix-select-item value="11" label="Item 1">Test</ix-select-item>
57
- <ix-select-item value="22" label="Item 2">Test</ix-select-item>
58
- </ix-select>
59
- `);
60
- const element = page.locator('ix-select');
61
- await element.evaluate((select) => (select.value = '22'));
62
- await page.locator('[data-select-dropdown]').click();
63
- const dropdown = element.locator('ix-dropdown');
64
- await expect(dropdown).toBeVisible();
65
- await expect(page.getByRole('button', { name: 'Item 1' })).toBeVisible();
66
- await expect(page.getByRole('button', { name: 'Item 2' }).locator('ix-icon')).toBeVisible();
67
- });
68
- test('multiple selection', async ({ mount, page }) => {
69
- await mount(`
70
- <ix-select mode="multiple">
71
- <ix-select-item value="1" label="Item 1">Test</ix-select-item>
72
- <ix-select-item value="2" label="Item 2">Test</ix-select-item>
73
- <ix-select-item value="3" label="Item 3">Test</ix-select-item>
74
- <ix-select-item value="4" label="Item 4">Test</ix-select-item>
75
- </ix-select>
76
- `);
77
- const element = page.locator('ix-select');
78
- await element.evaluate((select) => (select.value = []));
79
- await page.locator('[data-select-dropdown]').click();
80
- const dropdown = element.locator('ix-dropdown');
81
- const chips = element.locator('.chips');
82
- await expect(dropdown).toBeVisible();
83
- const item1 = element.locator('ix-select-item').nth(0);
84
- const item3 = element.locator('ix-select-item').nth(2);
85
- await item1.click();
86
- await item3.click();
87
- await expect(item1.locator('ix-icon')).toBeVisible();
88
- await expect(item3.locator('ix-icon')).toBeVisible();
89
- const chip1 = chips.getByTitle('Item 1');
90
- const chip3 = chips.getByTitle('Item 3');
91
- await expect(chip1).toBeVisible();
92
- await expect(chip3).toBeVisible();
93
- });
94
- test('filter', async ({ mount, page }) => {
95
- await mount(`
96
- <ix-select mode="multiple">
97
- <ix-select-item value="1" label="Item 1">Test</ix-select-item>
98
- <ix-select-item value="2" label="Item 2">Test</ix-select-item>
99
- <ix-select-item value="abc" label="abc">Test</ix-select-item>
100
- <ix-select-item value="4" label="Item 4">Test</ix-select-item>
101
- </ix-select>
102
- `);
103
- const element = page.locator('ix-select');
104
- await element.evaluate((select) => (select.value = []));
105
- await page.locator('[data-select-dropdown]').click();
106
- const dropdown = element.locator('ix-dropdown');
107
- await expect(dropdown).toBeVisible();
108
- await element.locator('input').fill('abc');
109
- const item1 = page.getByRole('button', { name: 'Item 1' });
110
- const item2 = page.getByRole('button', { name: 'Item 2' });
111
- const item4 = page.getByRole('button', { name: 'Item 4' });
112
- const item_abc = page.getByRole('button', { name: 'abc' });
113
- await expect(item1).not.toBeVisible();
114
- await expect(item2).not.toBeVisible();
115
- await expect(item4).not.toBeVisible();
116
- await expect(item_abc).toBeVisible();
117
- });
118
- test('open filtered dropdown on input', async ({ mount, page }) => {
119
- await mount(`
120
- <ix-select>
121
- <ix-select-item value="1" label="Item 1">Test</ix-select-item>
122
- <ix-select-item value="2" label="Item 2">Test</ix-select-item>
123
- </ix-select>
124
- `);
125
- const select = page.locator('ix-select');
126
- const input = select.locator('input');
127
- await select.evaluate((select) => (select.value = []));
128
- await input.focus();
129
- await page.keyboard.press('Escape');
130
- const dropdown = select.locator('ix-dropdown');
131
- await expect(dropdown).not.toBeVisible();
132
- await input.fill('1');
133
- const item1 = page.getByRole('button', { name: 'Item 1' });
134
- const item2 = page.getByRole('button', { name: 'Item 2' });
135
- await expect(item1).toBeVisible();
136
- await expect(item2).not.toBeVisible();
137
- });
138
- test('remove text from input and reselect the element', async ({ mount, page, }) => {
139
- await mount(`
140
- <ix-select value="2">
141
- <ix-select-item value="1" label="Item 1">Test</ix-select-item>
142
- <ix-select-item value="2" label="Item 2">Test</ix-select-item>
143
- <ix-select-item value="3" label="Item 3">Test</ix-select-item>
144
- </ix-select>
145
- `);
146
- await page.locator('[data-select-dropdown]').click();
147
- const element = page.locator('ix-select');
148
- await element.evaluate((select) => (select.value = []));
149
- const dropdown = element.locator('ix-dropdown');
150
- await expect(dropdown).toBeVisible();
151
- const item2 = page.getByRole('button', { name: 'Item 2' });
152
- await item2.click();
153
- const inputValue = await element.locator('input').inputValue();
154
- expect(inputValue).toEqual('Item 2');
155
- });
156
- test('type in a novel item name in editable mode and then remove it', async ({ mount, page, }) => {
157
- await mount(`
158
- <ix-select value="2" editable>
159
- <ix-select-item value="1" label="Item 1">Test</ix-select-item>
160
- <ix-select-item value="2" label="Item 2">Test</ix-select-item>
161
- </ix-select>
162
- `);
163
- const element = page.locator('ix-select');
164
- await expect(element).toHaveClass(/hydrated/);
165
- await page.locator('[data-select-dropdown]').click();
166
- await page.getByTestId('input').fill('test');
167
- await expect(page.getByRole('button', { name: 'Item 1' })).not.toBeVisible();
168
- await expect(page.getByRole('button', { name: 'Item 2' })).not.toBeVisible();
169
- const add = page.getByRole('button', { name: 'test' });
170
- await expect(add).toBeVisible();
171
- await page.getByTestId('input').fill('');
172
- await expect(page.getByRole('button', { name: 'Item 1' })).toBeVisible();
173
- await expect(page.getByRole('button', { name: 'Item 2' })).toBeVisible();
174
- await expect(add).not.toBeVisible();
175
- });
176
- test('type in a novel item name in editable mode, click outside and reopen the select', async ({ mount, page, }) => {
177
- await mount(`
178
- <ix-select value="2" editable>
179
- <ix-select-item value="1" label="Item 1">Test</ix-select-item>
180
- <ix-select-item value="2" label="Item 2">Test</ix-select-item>
181
- <ix-select-item value="3" label="Item 3">Test</ix-select-item>
182
- </ix-select>
183
- <ix-button>outside</ix-button>
184
- `);
185
- const selectElement = page.locator('ix-select');
186
- const btnElement = page.locator('ix-button');
187
- await expect(selectElement).toHaveClass(/hydrated/);
188
- await expect(btnElement).toBeVisible();
189
- await page.locator('[data-select-dropdown]').click();
190
- await page.getByTestId('input').fill('test');
191
- const add = page.getByRole('button', { name: 'test' });
192
- await expect(add).toBeVisible();
193
- await btnElement.click();
194
- const inputValue = await page.getByTestId('input').inputValue();
195
- expect(inputValue).toBe('Item 2');
196
- await page.locator('[data-select-dropdown]').click();
197
- await expect(page.getByRole('button', { name: 'Item 1' })).toBeVisible();
198
- await expect(page.getByRole('button', { name: 'Item 2' })).toBeVisible();
199
- await expect(page.getByRole('button', { name: 'Item 3' })).toBeVisible();
200
- });
201
- test('type in a novel item name and click outside', async ({ mount, page }) => {
202
- await mount(`
203
- <ix-select value="2">
204
- <ix-select-item value="1" label="Item 1">Test</ix-select-item>
205
- <ix-select-item value="2" label="Item 2">Test</ix-select-item>
206
- <ix-select-item value="3" label="Item 3">Test</ix-select-item>
207
- </ix-select>
208
- <ix-button>outside</ix-button>
209
- `);
210
- const selectElement = page.locator('ix-select');
211
- await expect(selectElement).toHaveClass(/hydrated/);
212
- await page.locator('[data-select-dropdown]').click();
213
- await page.getByTestId('input').fill('test');
214
- await page.keyboard.press('Enter');
215
- const inputValue = await page.getByTestId('input').inputValue();
216
- expect(inputValue).toBe('Item 2');
217
- });
218
- test('check if clear button visible in disabled', async ({ mount, page }) => {
219
- await mount(`
220
- <ix-select value="2" allow-clear>
221
- <ix-select-item value="1" label="Item 1">Test</ix-select-item>
222
- <ix-select-item value="2" label="Item 2">Test</ix-select-item>
223
- <ix-select-item value="3" label="Item 3">Test</ix-select-item>
224
- </ix-select>
225
- `);
226
- const selectElement = page.locator('ix-select');
227
- await expect(selectElement).toHaveClass(/hydrated/);
228
- const clearButton = page.locator('ix-icon-button.clear.btn-icon-16');
229
- await expect(clearButton).toBeVisible();
230
- await selectElement.evaluate((select) => (select.disabled = true));
231
- await expect(clearButton).not.toBeAttached();
232
- });
233
- test('type in a novel item name in multiple mode, click outside', async ({ mount, page, }) => {
234
- await mount(`
235
- <ix-select value="2" mode="multiple">
236
- <ix-select-item value="1" label="Item 1">Test</ix-select-item>
237
- <ix-select-item value="2" label="Item 2">Test</ix-select-item>
238
- <ix-select-item value="3" label="Item 3">Test</ix-select-item>
239
- </ix-select>
240
- <ix-button>outside</ix-button>
241
- `);
242
- const selectElement = page.locator('ix-select');
243
- const btnElement = page.locator('ix-button');
244
- await expect(selectElement).toHaveClass(/hydrated/);
245
- await expect(btnElement).toBeVisible();
246
- await page.locator('[data-select-dropdown]').click();
247
- await page.getByTestId('input').fill('test');
248
- await btnElement.click();
249
- const inputValue = await page.getByTestId('input').inputValue();
250
- expect(inputValue).toBe('');
251
- });
252
- test('pass object as value and check if it is selectable', async ({ mount, page, }) => {
253
- await mount(`
254
- <ix-select>
255
- <ix-select-item label="Item 1">Test</ix-select-item>
256
- <ix-select-item label="Item 2">Test</ix-select-item>
257
- <ix-select-item label="Item 3">Test</ix-select-item>
258
- </ix-select>
259
- `);
260
- const selectElement = page.locator('ix-select');
261
- await expect(selectElement).toHaveClass(/hydrated/);
262
- async function setSelectItemValue(index) {
263
- await page
264
- .locator('ix-select-item')
265
- .nth(index)
266
- .evaluate((e, index) => {
267
- e.value = `${index}`;
268
- });
269
- }
270
- for (let index = 0; index < 3; index++) {
271
- await setSelectItemValue(index);
272
- }
273
- await page.locator('[data-select-dropdown]').click();
274
- await page.locator('ix-select-item').last().click();
275
- await page.locator('[data-select-dropdown]').click();
276
- await expect(page.getByRole('button', { name: 'Item 1' })).toBeVisible();
277
- await expect(page.getByRole('button', { name: 'Item 2' })).toBeVisible();
278
- await expect(page.getByRole('button', { name: 'Item 3' })).toBeVisible();
279
- await expect(page.getByRole('button', { name: 'Item 3' }).locator('ix-icon')).toBeVisible();
280
- });
281
- test('form-ready', async ({ mount, page }) => {
282
- await mount(`
283
- <form>
284
- <ix-select name="my-custom-entry">
285
- <ix-select-item value="1" label="Item 1">Test</ix-select-item>
286
- <ix-select-item value="2" label="Item 2">Test</ix-select-item>
287
- </ix-select>
288
- </form>
289
- `);
290
- const select = page.locator('ix-select');
291
- const formElement = page.locator('form');
292
- await preventFormSubmission(formElement);
293
- await page.locator('[data-select-dropdown]').click();
294
- await page.locator('ix-select-item').nth(1).click();
295
- const inputValue = await select.locator('input').inputValue();
296
- expect(inputValue).toEqual('Item 2');
297
- const formData = await getFormValue(formElement, 'my-custom-entry', page);
298
- expect(formData).toEqual('2');
299
- });
300
- test('form-ready - with initial value', async ({ mount, page }) => {
301
- await mount(`
302
- <form>
303
- <ix-select name="my-custom-entry" value="some other">
304
- <ix-select-item value="1" label="Item 1">Test</ix-select-item>
305
- <ix-select-item value="2" label="Item 2">Test</ix-select-item>
306
- <ix-select-item value="some other" label="Item 3">Test</ix-select-item>
307
- </ix-select>
308
- </form>
309
- `);
310
- const formElement = page.locator('form');
311
- await preventFormSubmission(formElement);
312
- const formData = await getFormValue(formElement, 'my-custom-entry', page);
313
- expect(formData).toEqual('some other');
314
- });
315
- test.describe('Events', () => {
316
- test('value change', async ({ mount, page }) => {
317
- await mount(`<ix-select>
318
- <ix-select-item value="1" label="Item 1"></ix-select-item>
319
- </ix-select>`);
320
- const select = page.locator('ix-select');
321
- const valueChanged = select.evaluate((elm) => {
322
- return new Promise((resolve) => {
323
- elm.addEventListener('valueChange', (e) => resolve(e.detail));
324
- });
325
- });
326
- await page.locator('ix-icon-button').click();
327
- await page.locator('ix-select-item').click();
328
- await expect(select).toHaveClass(/hydrated/);
329
- expect(await valueChanged).toBe('1');
330
- });
331
- test('add item', async ({ mount, page }) => {
332
- const itemText = 'test';
333
- await mount(`<ix-select editable></ix-select>`);
334
- const select = page.locator('ix-select');
335
- const itemAdded = select.evaluate((elm) => {
336
- return new Promise((resolve) => {
337
- elm.addEventListener('addItem', (e) => resolve(e.detail));
338
- });
339
- });
340
- const input = page.locator('input');
341
- await input.focus();
342
- await input.fill(itemText);
343
- await page.keyboard.press('Enter');
344
- await expect(select).toHaveClass(/hydrated/);
345
- expect(await itemAdded).toBe(itemText);
346
- });
347
- test.describe('prevent default', () => {
348
- test('value change', async ({ mount, page }) => {
349
- await mount(`<ix-select>
350
- <ix-select-item value="1" label="Item 1"></ix-select-item>
351
- </ix-select>`);
352
- const select = page.locator('ix-select');
353
- await select.evaluate((i) => i.addEventListener('vauleChange', (e) => e.preventDefault()));
354
- await page.locator('ix-icon-button').click();
355
- const item = page.locator('ix-select-item');
356
- await item.click();
357
- await expect(item).not.toHaveClass('selected');
358
- });
359
- test('add item', async ({ mount, page }) => {
360
- await mount(`<ix-select editable></ix-select>`);
361
- const select = page.locator('ix-select');
362
- await select.evaluate((i) => i.addEventListener('addItem', (e) => e.preventDefault()));
363
- const input = page.locator('input');
364
- await input.focus();
365
- await input.fill('test');
366
- await page.keyboard.press('Enter');
367
- const count = await page.locator('ix-select-item').count();
368
- await expect(count).toBe(0);
369
- });
370
- });
371
- });
372
- test('async set content and check input value', async ({ mount, page }) => {
373
- await mount(`<ix-select value="1"></ix-select>`);
374
- await page.evaluate(async () => {
375
- const select = document.querySelector('ix-select');
376
- if (select) {
377
- await new Promise((resolve) => setTimeout(resolve, 1000));
378
- select.innerHTML = `
379
- <ix-select-item value="1" label="Item 1">Test</ix-select-item>
380
- <ix-select-item value="2" label="Item 2">Test</ix-select-item>
381
- `;
382
- }
383
- });
384
- const input = page.locator('input');
385
- await expect(input).toHaveValue('Item 1');
386
- });
387
- test.describe('Enter selection with non-existing and existing items', () => {
388
- test('editable', async ({ mount, page }) => {
389
- await mount(`
390
- <ix-select editable>
391
- <ix-select-item value="1" label="Item 1">Test</ix-select-item>
392
- <ix-select-item value="2" label="Item 2">Test</ix-select-item>
393
- </ix-select>
394
- `);
395
- const selectElement = page.locator('ix-select');
396
- const input = selectElement.locator('input');
397
- await input.fill('Item 1');
398
- await page.keyboard.press('Enter');
399
- await expect(input).toHaveValue('Item 1');
400
- await input.fill('Item 3');
401
- await page.keyboard.press('Enter');
402
- await expect(input).toHaveValue('Item 3');
403
- });
404
- test('non-editable', async ({ mount, page }) => {
405
- await mount(`
406
- <ix-select>
407
- <ix-select-item value="1" label="Item 1">Test</ix-select-item>
408
- <ix-select-item value="2" label="Item 2">Test</ix-select-item>
409
- </ix-select>
410
- `);
411
- const selectElement = page.locator('ix-select');
412
- const input = selectElement.locator('input');
413
- await input.fill('Item 1');
414
- await page.keyboard.press('Enter');
415
- await expect(input).toHaveValue('Item 1');
416
- await input.fill('Item 3');
417
- await page.keyboard.press('Enter');
418
- await expect(input).toHaveValue('Item 1');
419
- });
420
- });
421
- test.describe('Dropdown width', () => {
422
- test('should be 25rem when dropdown-width is set to 35rem and dropdown-max-width to 25rem', async ({ mount, page, }) => {
423
- await mount(`<ix-select value="1" dropdown-width="35rem" dropdown-max-width="25rem">
424
- <ix-select-item label="this is an example for a very long selection option. this is an example for a very long selection option." value="1"></ix-select-item>
425
- </ix-select>`);
426
- const select = page.locator('ix-select');
427
- await page.locator('[data-select-dropdown]').click();
428
- const dropdown = select.locator('ix-dropdown');
429
- await expect(dropdown).toBeVisible();
430
- const box = await dropdown.boundingBox();
431
- expect(box === null || box === void 0 ? void 0 : box.width).toBe(16 * 25);
432
- });
433
- test('should be 25rem when dropdown-width is set to 25 and dropdown-max-width to 35rem', async ({ mount, page, }) => {
434
- await mount(`<ix-select value="1" dropdown-width="25rem" dropdown-max-width="35rem">
435
- <ix-select-item label="this is an example for a very long selection option. this is an example for a very long selection option." value="1"></ix-select-item>
436
- </ix-select>`);
437
- const select = page.locator('ix-select');
438
- await page.locator('[data-select-dropdown]').click();
439
- const dropdown = select.locator('ix-dropdown');
440
- await expect(dropdown).toBeVisible();
441
- const box = await dropdown.boundingBox();
442
- expect(box === null || box === void 0 ? void 0 : box.width).toBe(16 * 25);
443
- });
444
- test('should be 25rem when dropdown-width is set to 25 and dropdown-max-width is not set', async ({ mount, page, }) => {
445
- await mount(`<ix-select value="1" dropdown-width="25rem">
446
- <ix-select-item label="this is an example for a very long selection option. this is an example for a very long selection option." value="1"></ix-select-item>
447
- </ix-select>`);
448
- const select = page.locator('ix-select');
449
- await page.locator('[data-select-dropdown]').click();
450
- const dropdown = select.locator('ix-dropdown');
451
- await expect(dropdown).toBeVisible();
452
- const box = await dropdown.boundingBox();
453
- expect(box === null || box === void 0 ? void 0 : box.width).toBe(16 * 25);
454
- });
455
- test('should be 35rem when dropdown-width is not set and dropdown-max-width is set to 35rem', async ({ mount, page, }) => {
456
- await mount(`<ix-select value="1" dropdown-max-width="35rem">
457
- <ix-select-item label="this is an example for a very long selection option. this is an example for a very long selection option." value="1"></ix-select-item>
458
- </ix-select>`);
459
- const select = page.locator('ix-select');
460
- await page.locator('[data-select-dropdown]').click();
461
- const dropdown = select.locator('ix-dropdown');
462
- await expect(dropdown).toBeVisible();
463
- const box = await dropdown.boundingBox();
464
- expect(box === null || box === void 0 ? void 0 : box.width).toBe(16 * 35);
465
- });
466
- test('should be 100% when dropdown-width and dropdown-max-width are not set', async ({ mount, page, }) => {
467
- var _a;
468
- await mount(`<ix-select value="1">
469
- <ix-select-item label="this is an example for a very long selection option. this is an example for a very long selection option. this is an example for a very long selection option. this is an example for a very long selection option. this is an example for a very long selection option." value="1"></ix-select-item>
470
- </ix-select>`);
471
- const select = page.locator('ix-select');
472
- await page.locator('[data-select-dropdown]').click();
473
- const dropdown = select.locator('ix-dropdown');
474
- await expect(dropdown).toBeVisible();
475
- const box = await dropdown.boundingBox();
476
- const pageWidth = (_a = page.viewportSize()) === null || _a === void 0 ? void 0 : _a.width;
477
- expect(box === null || box === void 0 ? void 0 : box.width).toBe(pageWidth);
478
- });
479
- });
480
- test('should be 100% when dropdown-max-width is greater than the viewport width', async ({ mount, page, }) => {
481
- var _a;
482
- await mount(`<ix-select value="1" dropdown-max-width="10000rem">
483
- <ix-select-item label="this is an example for a very long selection option. this is an example for a very long selection option. this is an example for a very long selection option. this is an example for a very long selection option. this is an example for a very long selection option." value="1"></ix-select-item>
484
- </ix-select>`);
485
- const select = page.locator('ix-select');
486
- await page.locator('[data-select-dropdown]').click();
487
- const dropdown = select.locator('ix-dropdown');
488
- await expect(dropdown).toBeVisible();
489
- const box = await dropdown.boundingBox();
490
- const pageWidth = (_a = page.viewportSize()) === null || _a === void 0 ? void 0 : _a.width;
491
- expect(box === null || box === void 0 ? void 0 : box.width).toBe(pageWidth);
492
- });
493
- test('dropdown can be opened after clearing select in editable mode', async ({ mount, page, }) => {
494
- await mount(`
495
- <ix-select editable allow-clear>
496
- <ix-select-item value="1" label="Item 1">Test</ix-select-item>
497
- <ix-select-item value="2" label="Item 2">Test</ix-select-item>
498
- <ix-select-item value="3" label="Item 3">Test</ix-select-item>
499
- </ix-select>
500
- `);
501
- const selectElement = page.locator('ix-select');
502
- await expect(selectElement).toHaveClass(/hydrated/);
503
- await page.locator('[data-select-dropdown]').click();
504
- await page.locator('ix-select-item').nth(1).click();
505
- await expect(selectElement.locator('input')).toHaveValue('Item 2');
506
- const clearButton = page.locator('ix-icon-button.clear.btn-icon-16');
507
- await expect(clearButton).toBeVisible();
508
- await clearButton.click();
509
- await page.locator('[data-select-dropdown]').click();
510
- const dropdown = selectElement.locator('ix-dropdown');
511
- await expect(dropdown).toBeVisible();
512
- });
513
- test('should not show add icon when spaces are entered at the start of input', async ({ mount, page, }) => {
514
- await mount(`<ix-select editable>
515
- <ix-select-item label="Item 1" value="1"></ix-select-item>
516
- <ix-select-item label="Item 2" value="2"></ix-select-item>
517
- </ix-select>`);
518
- const select = page.locator('ix-select');
519
- const input = select.locator('input');
520
- await input.fill(' Item 1');
521
- const addItem = select.locator('.add-item');
522
- await expect(addItem).toHaveCount(0);
523
- });
524
- test('should not show add icon when only spaces are entered in input', async ({ mount, page, }) => {
525
- await mount(`<ix-select editable>
526
- <ix-select-item label="Item 1" value="1"></ix-select-item>
527
- <ix-select-item label="Item 2" value="2"></ix-select-item>
528
- </ix-select>`);
529
- const select = page.locator('ix-select');
530
- const input = select.locator('input');
531
- await input.fill(' ');
532
- const addItem = select.locator('.add-item');
533
- await expect(addItem).toHaveCount(0);
534
- });
535
- test('should trim the value before saving', async ({ mount, page }) => {
536
- await mount(`<ix-select editable>
537
- <ix-select-item label="Item 1" value="1"></ix-select-item>
538
- <ix-select-item label="Item 7" value="7"></ix-select-item>
539
- </ix-select>`);
540
- const select = page.locator('ix-select');
541
- const input = select.locator('Input');
542
- await input.fill(' Item 7 ');
543
- await input.press('Enter');
544
- await expect(input).toHaveValue('Item 7');
545
- });
546
- test('should preserve spaces within input and show add icon', async ({ mount, page, }) => {
547
- await mount(`<ix-select editable>
548
- <ix-select-item label="Item 1" value="1"></ix-select-item>
549
- <ix-select-item label="Item 7" value="7"></ix-select-item>
550
- </ix-select>`);
551
- const select = page.locator('ix-select');
552
- const input = select.locator('input');
553
- const itemText = 'Item 1';
554
- await input.fill(itemText);
555
- const addItem = select.locator('.add-item');
556
- await expect(addItem).toHaveCount(1);
557
- await expect(input).toHaveValue(itemText);
558
- });
559
- test('last select item can be accessed via scrolling', async ({ mount, page, }) => {
560
- await mount(`
561
- <ix-select>
562
- ${Array.from({
563
- length: 20,
564
- }, (_, i) => `<ix-select-item value="${i + 1}" label="Item ${i + 1}">Item ${i + 1}</ix-select-item>`).join('')}
565
- </ix-select>
566
- `);
567
- const select = page.locator('ix-select');
568
- await page.locator('[data-select-dropdown]').click();
569
- const dropdown = select.locator('ix-dropdown');
570
- await expect(dropdown).toBeVisible();
571
- const lastItem = page.locator('ix-select-item').last();
572
- await lastItem.evaluate((item) => {
573
- item.scrollIntoView();
574
- });
575
- await expect(lastItem).toBeVisible();
576
- });
577
- test('last select item can be accessed via scrolling when select placed at center of the page', async ({ mount, page, }) => {
578
- await mount(`
579
- <div style="height:calc(50vh-1px)"></div>
580
- <ix-select>
581
- ${Array.from({ length: 20 }, (_, i) => `<ix-select-item value="${i + 1}" label="Item ${i + 1}">Item ${i + 1}</ix-select-item>`).join('')}
582
- </ix-select>
583
- `);
584
- const select = page.locator('ix-select');
585
- await page.locator('[data-select-dropdown]').click();
586
- const dropdown = select.locator('ix-dropdown');
587
- await expect(dropdown).toBeVisible();
588
- const lastItem = page.locator('ix-select-item').last();
589
- await lastItem.evaluate((item) => {
590
- item.scrollIntoView();
591
- });
592
- await expect(lastItem).toBeVisible();
593
- });
594
- //# sourceMappingURL=select.ct.js.map