@furystack/shades-common-components 10.0.35 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/esm/components/animations.spec.d.ts +2 -0
  3. package/esm/components/animations.spec.d.ts.map +1 -0
  4. package/esm/components/animations.spec.js +201 -0
  5. package/esm/components/animations.spec.js.map +1 -0
  6. package/esm/components/app-bar-link.js +21 -20
  7. package/esm/components/app-bar-link.js.map +1 -1
  8. package/esm/components/app-bar-link.spec.d.ts +2 -0
  9. package/esm/components/app-bar-link.spec.d.ts.map +1 -0
  10. package/esm/components/app-bar-link.spec.js +252 -0
  11. package/esm/components/app-bar-link.spec.js.map +1 -0
  12. package/esm/components/app-bar.js +21 -21
  13. package/esm/components/app-bar.js.map +1 -1
  14. package/esm/components/app-bar.spec.d.ts +2 -0
  15. package/esm/components/app-bar.spec.d.ts.map +1 -0
  16. package/esm/components/app-bar.spec.js +117 -0
  17. package/esm/components/app-bar.spec.js.map +1 -0
  18. package/esm/components/avatar.d.ts.map +1 -1
  19. package/esm/components/avatar.js +15 -19
  20. package/esm/components/avatar.js.map +1 -1
  21. package/esm/components/avatar.spec.d.ts +2 -0
  22. package/esm/components/avatar.spec.d.ts.map +1 -0
  23. package/esm/components/avatar.spec.js +114 -0
  24. package/esm/components/avatar.spec.js.map +1 -0
  25. package/esm/components/button.d.ts.map +1 -1
  26. package/esm/components/button.js +145 -156
  27. package/esm/components/button.js.map +1 -1
  28. package/esm/components/button.spec.d.ts +2 -0
  29. package/esm/components/button.spec.d.ts.map +1 -0
  30. package/esm/components/button.spec.js +155 -0
  31. package/esm/components/button.spec.js.map +1 -0
  32. package/esm/components/command-palette/command-palette-input.d.ts.map +1 -1
  33. package/esm/components/command-palette/command-palette-input.js +18 -16
  34. package/esm/components/command-palette/command-palette-input.js.map +1 -1
  35. package/esm/components/command-palette/command-palette-input.spec.d.ts +2 -0
  36. package/esm/components/command-palette/command-palette-input.spec.d.ts.map +1 -0
  37. package/esm/components/command-palette/command-palette-input.spec.js +233 -0
  38. package/esm/components/command-palette/command-palette-input.spec.js.map +1 -0
  39. package/esm/components/command-palette/command-palette-manager.spec.d.ts +2 -0
  40. package/esm/components/command-palette/command-palette-manager.spec.d.ts.map +1 -0
  41. package/esm/components/command-palette/command-palette-manager.spec.js +362 -0
  42. package/esm/components/command-palette/command-palette-manager.spec.js.map +1 -0
  43. package/esm/components/command-palette/command-palette-suggestion-list.d.ts.map +1 -1
  44. package/esm/components/command-palette/command-palette-suggestion-list.js +42 -46
  45. package/esm/components/command-palette/command-palette-suggestion-list.js.map +1 -1
  46. package/esm/components/command-palette/command-palette-suggestion-list.spec.d.ts +2 -0
  47. package/esm/components/command-palette/command-palette-suggestion-list.spec.d.ts.map +1 -0
  48. package/esm/components/command-palette/command-palette-suggestion-list.spec.js +376 -0
  49. package/esm/components/command-palette/command-palette-suggestion-list.spec.js.map +1 -0
  50. package/esm/components/command-palette/index.d.ts.map +1 -1
  51. package/esm/components/command-palette/index.js +100 -110
  52. package/esm/components/command-palette/index.js.map +1 -1
  53. package/esm/components/command-palette/index.spec.d.ts +2 -0
  54. package/esm/components/command-palette/index.spec.d.ts.map +1 -0
  55. package/esm/components/command-palette/index.spec.js +509 -0
  56. package/esm/components/command-palette/index.spec.js.map +1 -0
  57. package/esm/components/data-grid/body.js +1 -1
  58. package/esm/components/data-grid/body.js.map +1 -1
  59. package/esm/components/data-grid/body.spec.d.ts +2 -0
  60. package/esm/components/data-grid/body.spec.d.ts.map +1 -0
  61. package/esm/components/data-grid/body.spec.js +228 -0
  62. package/esm/components/data-grid/body.spec.js.map +1 -0
  63. package/esm/components/data-grid/data-grid-row.d.ts.map +1 -1
  64. package/esm/components/data-grid/data-grid-row.js +49 -73
  65. package/esm/components/data-grid/data-grid-row.js.map +1 -1
  66. package/esm/components/data-grid/data-grid-row.spec.d.ts +2 -0
  67. package/esm/components/data-grid/data-grid-row.spec.d.ts.map +1 -0
  68. package/esm/components/data-grid/data-grid-row.spec.js +296 -0
  69. package/esm/components/data-grid/data-grid-row.spec.js.map +1 -0
  70. package/esm/components/data-grid/data-grid.d.ts.map +1 -1
  71. package/esm/components/data-grid/data-grid.js +35 -28
  72. package/esm/components/data-grid/data-grid.js.map +1 -1
  73. package/esm/components/data-grid/data-grid.spec.d.ts +2 -0
  74. package/esm/components/data-grid/data-grid.spec.d.ts.map +1 -0
  75. package/esm/components/data-grid/data-grid.spec.js +544 -0
  76. package/esm/components/data-grid/data-grid.spec.js.map +1 -0
  77. package/esm/components/data-grid/footer.js +21 -15
  78. package/esm/components/data-grid/footer.js.map +1 -1
  79. package/esm/components/data-grid/footer.spec.d.ts +2 -0
  80. package/esm/components/data-grid/footer.spec.d.ts.map +1 -0
  81. package/esm/components/data-grid/footer.spec.js +264 -0
  82. package/esm/components/data-grid/footer.spec.js.map +1 -0
  83. package/esm/components/data-grid/header.d.ts.map +1 -1
  84. package/esm/components/data-grid/header.js +55 -33
  85. package/esm/components/data-grid/header.js.map +1 -1
  86. package/esm/components/data-grid/header.spec.d.ts +2 -0
  87. package/esm/components/data-grid/header.spec.d.ts.map +1 -0
  88. package/esm/components/data-grid/header.spec.js +421 -0
  89. package/esm/components/data-grid/header.spec.js.map +1 -0
  90. package/esm/components/data-grid/selection-cell.d.ts.map +1 -1
  91. package/esm/components/data-grid/selection-cell.js +13 -6
  92. package/esm/components/data-grid/selection-cell.js.map +1 -1
  93. package/esm/components/data-grid/selection-cell.spec.d.ts +2 -0
  94. package/esm/components/data-grid/selection-cell.spec.d.ts.map +1 -0
  95. package/esm/components/data-grid/selection-cell.spec.js +118 -0
  96. package/esm/components/data-grid/selection-cell.spec.js.map +1 -0
  97. package/esm/components/fab.d.ts.map +1 -1
  98. package/esm/components/fab.js +10 -1
  99. package/esm/components/fab.js.map +1 -1
  100. package/esm/components/fab.spec.d.ts +2 -0
  101. package/esm/components/fab.spec.d.ts.map +1 -0
  102. package/esm/components/fab.spec.js +95 -0
  103. package/esm/components/fab.spec.js.map +1 -0
  104. package/esm/components/form.spec.d.ts +2 -0
  105. package/esm/components/form.spec.d.ts.map +1 -0
  106. package/esm/components/form.spec.js +314 -0
  107. package/esm/components/form.spec.js.map +1 -0
  108. package/esm/components/grid.d.ts.map +1 -1
  109. package/esm/components/grid.js +40 -37
  110. package/esm/components/grid.js.map +1 -1
  111. package/esm/components/grid.spec.d.ts +2 -0
  112. package/esm/components/grid.spec.d.ts.map +1 -0
  113. package/esm/components/grid.spec.js +316 -0
  114. package/esm/components/grid.spec.js.map +1 -0
  115. package/esm/components/inputs/autocomplete.spec.d.ts +2 -0
  116. package/esm/components/inputs/autocomplete.spec.d.ts.map +1 -0
  117. package/esm/components/inputs/autocomplete.spec.js +194 -0
  118. package/esm/components/inputs/autocomplete.spec.js.map +1 -0
  119. package/esm/components/inputs/input.d.ts.map +1 -1
  120. package/esm/components/inputs/input.js +141 -109
  121. package/esm/components/inputs/input.js.map +1 -1
  122. package/esm/components/inputs/input.spec.d.ts +2 -0
  123. package/esm/components/inputs/input.spec.d.ts.map +1 -0
  124. package/esm/components/inputs/input.spec.js +577 -0
  125. package/esm/components/inputs/input.spec.js.map +1 -0
  126. package/esm/components/inputs/text-area.d.ts.map +1 -1
  127. package/esm/components/inputs/text-area.js +54 -58
  128. package/esm/components/inputs/text-area.js.map +1 -1
  129. package/esm/components/inputs/text-area.spec.d.ts +2 -0
  130. package/esm/components/inputs/text-area.spec.d.ts.map +1 -0
  131. package/esm/components/inputs/text-area.spec.js +214 -0
  132. package/esm/components/inputs/text-area.spec.js.map +1 -0
  133. package/esm/components/loader.js +1 -1
  134. package/esm/components/loader.js.map +1 -1
  135. package/esm/components/loader.spec.d.ts +2 -0
  136. package/esm/components/loader.spec.d.ts.map +1 -0
  137. package/esm/components/loader.spec.js +251 -0
  138. package/esm/components/loader.spec.js.map +1 -0
  139. package/esm/components/modal.d.ts.map +1 -1
  140. package/esm/components/modal.js +11 -9
  141. package/esm/components/modal.js.map +1 -1
  142. package/esm/components/modal.spec.d.ts +2 -0
  143. package/esm/components/modal.spec.d.ts.map +1 -0
  144. package/esm/components/modal.spec.js +227 -0
  145. package/esm/components/modal.spec.js.map +1 -0
  146. package/esm/components/noty-list.d.ts.map +1 -1
  147. package/esm/components/noty-list.js +39 -40
  148. package/esm/components/noty-list.js.map +1 -1
  149. package/esm/components/noty-list.spec.d.ts +2 -0
  150. package/esm/components/noty-list.spec.d.ts.map +1 -0
  151. package/esm/components/noty-list.spec.js +486 -0
  152. package/esm/components/noty-list.spec.js.map +1 -0
  153. package/esm/components/paper.d.ts.map +1 -1
  154. package/esm/components/paper.js +15 -12
  155. package/esm/components/paper.js.map +1 -1
  156. package/esm/components/paper.spec.d.ts +2 -0
  157. package/esm/components/paper.spec.d.ts.map +1 -0
  158. package/esm/components/paper.spec.js +63 -0
  159. package/esm/components/paper.spec.js.map +1 -0
  160. package/esm/components/skeleton.js +1 -1
  161. package/esm/components/skeleton.js.map +1 -1
  162. package/esm/components/skeleton.spec.d.ts +2 -0
  163. package/esm/components/skeleton.spec.d.ts.map +1 -0
  164. package/esm/components/skeleton.spec.js +159 -0
  165. package/esm/components/skeleton.spec.js.map +1 -0
  166. package/esm/components/styles.spec.d.ts +2 -0
  167. package/esm/components/styles.spec.d.ts.map +1 -0
  168. package/esm/components/styles.spec.js +56 -0
  169. package/esm/components/styles.spec.js.map +1 -0
  170. package/esm/components/suggest/index.d.ts.map +1 -1
  171. package/esm/components/suggest/index.js +74 -83
  172. package/esm/components/suggest/index.js.map +1 -1
  173. package/esm/components/suggest/index.spec.d.ts +2 -0
  174. package/esm/components/suggest/index.spec.d.ts.map +1 -0
  175. package/esm/components/suggest/index.spec.js +515 -0
  176. package/esm/components/suggest/index.spec.js.map +1 -0
  177. package/esm/components/suggest/suggest-input.d.ts.map +1 -1
  178. package/esm/components/suggest/suggest-input.js +16 -17
  179. package/esm/components/suggest/suggest-input.js.map +1 -1
  180. package/esm/components/suggest/suggest-input.spec.d.ts +2 -0
  181. package/esm/components/suggest/suggest-input.spec.d.ts.map +1 -0
  182. package/esm/components/suggest/suggest-input.spec.js +138 -0
  183. package/esm/components/suggest/suggest-input.spec.js.map +1 -0
  184. package/esm/components/suggest/suggest-manager.spec.d.ts +2 -0
  185. package/esm/components/suggest/suggest-manager.spec.d.ts.map +1 -0
  186. package/esm/components/suggest/suggest-manager.spec.js +308 -0
  187. package/esm/components/suggest/suggest-manager.spec.js.map +1 -0
  188. package/esm/components/suggest/suggestion-list.d.ts.map +1 -1
  189. package/esm/components/suggest/suggestion-list.js +43 -48
  190. package/esm/components/suggest/suggestion-list.js.map +1 -1
  191. package/esm/components/suggest/suggestion-list.spec.d.ts +2 -0
  192. package/esm/components/suggest/suggestion-list.spec.d.ts.map +1 -0
  193. package/esm/components/suggest/suggestion-list.spec.js +252 -0
  194. package/esm/components/suggest/suggestion-list.spec.js.map +1 -0
  195. package/esm/components/tabs.d.ts.map +1 -1
  196. package/esm/components/tabs.js +32 -18
  197. package/esm/components/tabs.js.map +1 -1
  198. package/esm/components/tabs.spec.d.ts +2 -0
  199. package/esm/components/tabs.spec.d.ts.map +1 -0
  200. package/esm/components/tabs.spec.js +187 -0
  201. package/esm/components/tabs.spec.js.map +1 -0
  202. package/esm/components/wizard/index.d.ts.map +1 -1
  203. package/esm/components/wizard/index.js +10 -7
  204. package/esm/components/wizard/index.js.map +1 -1
  205. package/esm/components/wizard/index.spec.d.ts +2 -0
  206. package/esm/components/wizard/index.spec.d.ts.map +1 -0
  207. package/esm/components/wizard/index.spec.js +171 -0
  208. package/esm/components/wizard/index.spec.js.map +1 -0
  209. package/esm/services/collection-service.spec.js +391 -2
  210. package/esm/services/collection-service.spec.js.map +1 -1
  211. package/esm/services/css-variable-theme.d.ts.map +1 -1
  212. package/esm/services/css-variable-theme.js +21 -1
  213. package/esm/services/css-variable-theme.js.map +1 -1
  214. package/esm/services/css-variable-theme.spec.d.ts +2 -0
  215. package/esm/services/css-variable-theme.spec.d.ts.map +1 -0
  216. package/esm/services/css-variable-theme.spec.js +169 -0
  217. package/esm/services/css-variable-theme.spec.js.map +1 -0
  218. package/esm/services/default-palette.d.ts +4 -0
  219. package/esm/services/default-palette.d.ts.map +1 -1
  220. package/esm/services/default-palette.js +22 -0
  221. package/esm/services/default-palette.js.map +1 -1
  222. package/esm/services/theme-provider-service.d.ts +59 -1
  223. package/esm/services/theme-provider-service.d.ts.map +1 -1
  224. package/esm/services/theme-provider-service.js.map +1 -1
  225. package/esm/services/theme-provider-service.spec.d.ts +2 -0
  226. package/esm/services/theme-provider-service.spec.d.ts.map +1 -0
  227. package/esm/services/theme-provider-service.spec.js +166 -0
  228. package/esm/services/theme-provider-service.spec.js.map +1 -0
  229. package/package.json +2 -2
  230. package/src/components/animations.spec.ts +299 -0
  231. package/src/components/app-bar-link.spec.tsx +341 -0
  232. package/src/components/app-bar-link.tsx +21 -21
  233. package/src/components/app-bar.spec.tsx +142 -0
  234. package/src/components/app-bar.tsx +22 -22
  235. package/src/components/avatar.spec.tsx +146 -0
  236. package/src/components/avatar.tsx +17 -20
  237. package/src/components/button.spec.tsx +193 -0
  238. package/src/components/button.tsx +162 -197
  239. package/src/components/command-palette/command-palette-input.spec.tsx +320 -0
  240. package/src/components/command-palette/command-palette-input.tsx +19 -22
  241. package/src/components/command-palette/command-palette-manager.spec.ts +470 -0
  242. package/src/components/command-palette/command-palette-suggestion-list.spec.tsx +499 -0
  243. package/src/components/command-palette/command-palette-suggestion-list.tsx +42 -46
  244. package/src/components/command-palette/index.spec.tsx +684 -0
  245. package/src/components/command-palette/index.tsx +107 -136
  246. package/src/components/data-grid/body.spec.tsx +340 -0
  247. package/src/components/data-grid/body.tsx +1 -1
  248. package/src/components/data-grid/data-grid-row.spec.tsx +382 -0
  249. package/src/components/data-grid/data-grid-row.tsx +50 -82
  250. package/src/components/data-grid/data-grid.spec.tsx +939 -0
  251. package/src/components/data-grid/data-grid.tsx +38 -35
  252. package/src/components/data-grid/footer.spec.tsx +344 -0
  253. package/src/components/data-grid/footer.tsx +19 -19
  254. package/src/components/data-grid/header.spec.tsx +563 -0
  255. package/src/components/data-grid/header.tsx +53 -44
  256. package/src/components/data-grid/selection-cell.spec.tsx +150 -0
  257. package/src/components/data-grid/selection-cell.tsx +12 -6
  258. package/src/components/fab.spec.tsx +108 -0
  259. package/src/components/fab.tsx +10 -1
  260. package/src/components/form.spec.tsx +481 -0
  261. package/src/components/grid.spec.tsx +334 -0
  262. package/src/components/grid.tsx +57 -63
  263. package/src/components/inputs/autocomplete.spec.tsx +258 -0
  264. package/src/components/inputs/input.spec.tsx +808 -0
  265. package/src/components/inputs/input.tsx +153 -139
  266. package/src/components/inputs/text-area.spec.tsx +285 -0
  267. package/src/components/inputs/text-area.tsx +53 -79
  268. package/src/components/loader.spec.tsx +346 -0
  269. package/src/components/loader.tsx +1 -1
  270. package/src/components/modal.spec.tsx +304 -0
  271. package/src/components/modal.tsx +11 -9
  272. package/src/components/noty-list.spec.tsx +631 -0
  273. package/src/components/noty-list.tsx +39 -50
  274. package/src/components/paper.spec.tsx +72 -0
  275. package/src/components/paper.tsx +15 -13
  276. package/src/components/skeleton.spec.tsx +219 -0
  277. package/src/components/skeleton.tsx +1 -1
  278. package/src/components/styles.spec.ts +70 -0
  279. package/src/components/suggest/index.spec.tsx +861 -0
  280. package/src/components/suggest/index.tsx +74 -101
  281. package/src/components/suggest/suggest-input.spec.tsx +181 -0
  282. package/src/components/suggest/suggest-input.tsx +16 -24
  283. package/src/components/suggest/suggest-manager.spec.ts +409 -0
  284. package/src/components/suggest/suggestion-list.spec.tsx +334 -0
  285. package/src/components/suggest/suggestion-list.tsx +43 -48
  286. package/src/components/tabs.spec.tsx +236 -0
  287. package/src/components/tabs.tsx +33 -21
  288. package/src/components/wizard/index.spec.tsx +224 -0
  289. package/src/components/wizard/index.tsx +10 -9
  290. package/src/services/collection-service.spec.ts +492 -3
  291. package/src/services/css-variable-theme.spec.ts +204 -0
  292. package/src/services/css-variable-theme.ts +21 -1
  293. package/src/services/default-palette.ts +22 -0
  294. package/src/services/theme-provider-service.spec.ts +195 -0
  295. package/src/services/theme-provider-service.ts +60 -2
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=suggestion-list.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggestion-list.spec.d.ts","sourceRoot":"","sources":["../../../src/components/suggest/suggestion-list.spec.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,252 @@
1
+ import { Injector } from '@furystack/inject';
2
+ import { createComponent, initializeShadeRoot } from '@furystack/shades';
3
+ import { using } from '@furystack/utils';
4
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
5
+ import { SuggestManager } from './suggest-manager.js';
6
+ import { SuggestionList } from './suggestion-list.js';
7
+ const createTestEntries = () => [
8
+ { id: 1, name: 'alpha' },
9
+ { id: 2, name: 'beta' },
10
+ { id: 3, name: 'gamma' },
11
+ ];
12
+ const createSuggestionResult = (entry) => ({
13
+ element: (createComponent("span", null, entry.name)),
14
+ score: entry.id,
15
+ });
16
+ describe('SuggestionList', () => {
17
+ let originalAnimate;
18
+ beforeEach(() => {
19
+ document.body.innerHTML = '<div id="root"></div>';
20
+ vi.useFakeTimers();
21
+ originalAnimate = Element.prototype.animate;
22
+ Element.prototype.animate = vi.fn(() => {
23
+ const mockAnimation = {
24
+ onfinish: null,
25
+ oncancel: null,
26
+ cancel: vi.fn(),
27
+ play: vi.fn(),
28
+ pause: vi.fn(),
29
+ finish: vi.fn(),
30
+ addEventListener: vi.fn(),
31
+ removeEventListener: vi.fn(),
32
+ };
33
+ return mockAnimation;
34
+ });
35
+ });
36
+ afterEach(() => {
37
+ document.body.innerHTML = '';
38
+ Element.prototype.animate = originalAnimate;
39
+ vi.useRealTimers();
40
+ vi.restoreAllMocks();
41
+ });
42
+ const createManager = () => {
43
+ const getEntries = vi.fn().mockResolvedValue(createTestEntries());
44
+ const getSuggestionEntry = vi.fn().mockImplementation(createSuggestionResult);
45
+ return new SuggestManager(getEntries, getSuggestionEntry);
46
+ };
47
+ it('should render with shadow DOM', async () => {
48
+ const injector = new Injector();
49
+ const rootElement = document.getElementById('root');
50
+ using(createManager(), (manager) => {
51
+ initializeShadeRoot({
52
+ injector,
53
+ rootElement,
54
+ jsxElement: createComponent(SuggestionList, { manager: manager }),
55
+ });
56
+ });
57
+ await vi.advanceTimersByTimeAsync(50);
58
+ const suggestionList = document.querySelector('shade-suggest-suggestion-list');
59
+ expect(suggestionList).not.toBeNull();
60
+ });
61
+ it('should render the suggestions container', async () => {
62
+ const injector = new Injector();
63
+ const rootElement = document.getElementById('root');
64
+ using(createManager(), (manager) => {
65
+ initializeShadeRoot({
66
+ injector,
67
+ rootElement,
68
+ jsxElement: createComponent(SuggestionList, { manager: manager }),
69
+ });
70
+ });
71
+ await vi.advanceTimersByTimeAsync(50);
72
+ const container = document.querySelector('.suggestion-items-container');
73
+ expect(container).not.toBeNull();
74
+ });
75
+ it('should render suggestion items when suggestions are present', async () => {
76
+ const injector = new Injector();
77
+ const rootElement = document.getElementById('root');
78
+ const manager = createManager();
79
+ initializeShadeRoot({
80
+ injector,
81
+ rootElement,
82
+ jsxElement: createComponent(SuggestionList, { manager: manager }),
83
+ });
84
+ await vi.advanceTimersByTimeAsync(50);
85
+ void manager.getSuggestion({ injector, term: 'test' });
86
+ await vi.advanceTimersByTimeAsync(250);
87
+ await vi.advanceTimersByTimeAsync(50);
88
+ const suggestionItems = document.querySelectorAll('.suggestion-item');
89
+ expect(suggestionItems.length).toBe(3);
90
+ expect(suggestionItems[0].textContent).toContain('alpha');
91
+ expect(suggestionItems[1].textContent).toContain('beta');
92
+ expect(suggestionItems[2].textContent).toContain('gamma');
93
+ manager[Symbol.dispose]();
94
+ });
95
+ it('should apply selected class to the correct suggestion item', async () => {
96
+ const injector = new Injector();
97
+ const rootElement = document.getElementById('root');
98
+ const manager = createManager();
99
+ initializeShadeRoot({
100
+ injector,
101
+ rootElement,
102
+ jsxElement: createComponent(SuggestionList, { manager: manager }),
103
+ });
104
+ await vi.advanceTimersByTimeAsync(50);
105
+ void manager.getSuggestion({ injector, term: 'test' });
106
+ await vi.advanceTimersByTimeAsync(250);
107
+ await vi.advanceTimersByTimeAsync(50);
108
+ const suggestionItems = document.querySelectorAll('.suggestion-item');
109
+ expect(suggestionItems[0].classList.contains('selected')).toBe(true);
110
+ expect(suggestionItems[1].classList.contains('selected')).toBe(false);
111
+ expect(suggestionItems[2].classList.contains('selected')).toBe(false);
112
+ manager[Symbol.dispose]();
113
+ });
114
+ it('should update selected class when selectedIndex changes', async () => {
115
+ const injector = new Injector();
116
+ const rootElement = document.getElementById('root');
117
+ const manager = createManager();
118
+ initializeShadeRoot({
119
+ injector,
120
+ rootElement,
121
+ jsxElement: createComponent(SuggestionList, { manager: manager }),
122
+ });
123
+ await vi.advanceTimersByTimeAsync(50);
124
+ void manager.getSuggestion({ injector, term: 'test' });
125
+ await vi.advanceTimersByTimeAsync(250);
126
+ await vi.advanceTimersByTimeAsync(50);
127
+ manager.selectedIndex.setValue(1);
128
+ await vi.advanceTimersByTimeAsync(50);
129
+ const suggestionItems = document.querySelectorAll('.suggestion-item');
130
+ expect(suggestionItems[0].classList.contains('selected')).toBe(false);
131
+ expect(suggestionItems[1].classList.contains('selected')).toBe(true);
132
+ expect(suggestionItems[2].classList.contains('selected')).toBe(false);
133
+ manager.selectedIndex.setValue(2);
134
+ await vi.advanceTimersByTimeAsync(50);
135
+ expect(suggestionItems[0].classList.contains('selected')).toBe(false);
136
+ expect(suggestionItems[1].classList.contains('selected')).toBe(false);
137
+ expect(suggestionItems[2].classList.contains('selected')).toBe(true);
138
+ manager[Symbol.dispose]();
139
+ });
140
+ it('should call selectSuggestion when a suggestion item is clicked', async () => {
141
+ const injector = new Injector();
142
+ const rootElement = document.getElementById('root');
143
+ const manager = createManager();
144
+ const selectSpy = vi.spyOn(manager, 'selectSuggestion');
145
+ initializeShadeRoot({
146
+ injector,
147
+ rootElement,
148
+ jsxElement: createComponent(SuggestionList, { manager: manager }),
149
+ });
150
+ await vi.advanceTimersByTimeAsync(50);
151
+ void manager.getSuggestion({ injector, term: 'test' });
152
+ await vi.advanceTimersByTimeAsync(250);
153
+ await vi.advanceTimersByTimeAsync(50);
154
+ manager.isOpened.setValue(true);
155
+ await vi.advanceTimersByTimeAsync(50);
156
+ const suggestionItems = document.querySelectorAll('.suggestion-item');
157
+ suggestionItems[1].click();
158
+ expect(selectSpy).toHaveBeenCalledWith(1);
159
+ manager[Symbol.dispose]();
160
+ });
161
+ it('should not call selectSuggestion when list is not opened', async () => {
162
+ const injector = new Injector();
163
+ const rootElement = document.getElementById('root');
164
+ const manager = createManager();
165
+ initializeShadeRoot({
166
+ injector,
167
+ rootElement,
168
+ jsxElement: createComponent(SuggestionList, { manager: manager }),
169
+ });
170
+ await vi.advanceTimersByTimeAsync(50);
171
+ manager.currentSuggestions.setValue([
172
+ { entry: { id: 1, name: 'alpha' }, suggestion: createSuggestionResult({ id: 1, name: 'alpha' }) },
173
+ { entry: { id: 2, name: 'beta' }, suggestion: createSuggestionResult({ id: 2, name: 'beta' }) },
174
+ ]);
175
+ await vi.advanceTimersByTimeAsync(50);
176
+ const selectSpy = vi.spyOn(manager, 'selectSuggestion');
177
+ const suggestionItems = document.querySelectorAll('.suggestion-item');
178
+ suggestionItems[1].click();
179
+ expect(selectSpy).not.toHaveBeenCalled();
180
+ manager[Symbol.dispose]();
181
+ });
182
+ it('should render empty container when no suggestions', async () => {
183
+ const injector = new Injector();
184
+ const rootElement = document.getElementById('root');
185
+ const getEntries = vi.fn().mockResolvedValue([]);
186
+ const getSuggestionEntry = vi.fn().mockImplementation(createSuggestionResult);
187
+ const manager = new SuggestManager(getEntries, getSuggestionEntry);
188
+ initializeShadeRoot({
189
+ injector,
190
+ rootElement,
191
+ jsxElement: createComponent(SuggestionList, { manager: manager }),
192
+ });
193
+ await vi.advanceTimersByTimeAsync(50);
194
+ const suggestionItems = document.querySelectorAll('.suggestion-item');
195
+ expect(suggestionItems.length).toBe(0);
196
+ manager[Symbol.dispose]();
197
+ });
198
+ describe('animations', () => {
199
+ it('should animate container when isOpened changes to true', async () => {
200
+ const injector = new Injector();
201
+ const rootElement = document.getElementById('root');
202
+ const manager = createManager();
203
+ initializeShadeRoot({
204
+ injector,
205
+ rootElement,
206
+ jsxElement: createComponent(SuggestionList, { manager: manager }),
207
+ });
208
+ await vi.advanceTimersByTimeAsync(50);
209
+ const container = document.querySelector('.suggestion-items-container');
210
+ manager.isOpened.setValue(true);
211
+ await vi.advanceTimersByTimeAsync(50);
212
+ expect(container.style.zIndex).toBe('1');
213
+ manager[Symbol.dispose]();
214
+ });
215
+ it('should animate container when isOpened changes to false', async () => {
216
+ const injector = new Injector();
217
+ const rootElement = document.getElementById('root');
218
+ const manager = createManager();
219
+ initializeShadeRoot({
220
+ injector,
221
+ rootElement,
222
+ jsxElement: createComponent(SuggestionList, { manager: manager }),
223
+ });
224
+ await vi.advanceTimersByTimeAsync(50);
225
+ manager.isOpened.setValue(true);
226
+ await vi.advanceTimersByTimeAsync(50);
227
+ const container = document.querySelector('.suggestion-items-container');
228
+ manager.isOpened.setValue(false);
229
+ await vi.advanceTimersByTimeAsync(50);
230
+ expect(container.style.zIndex).toBe('-1');
231
+ manager[Symbol.dispose]();
232
+ });
233
+ });
234
+ describe('container width', () => {
235
+ it('should set container width based on parent element', async () => {
236
+ const injector = new Injector();
237
+ const rootElement = document.getElementById('root');
238
+ rootElement.style.width = '400px';
239
+ const manager = createManager();
240
+ initializeShadeRoot({
241
+ injector,
242
+ rootElement,
243
+ jsxElement: createComponent(SuggestionList, { manager: manager }),
244
+ });
245
+ await vi.advanceTimersByTimeAsync(50);
246
+ const container = document.querySelector('.suggestion-items-container');
247
+ expect(container.style.width).toBeDefined();
248
+ manager[Symbol.dispose]();
249
+ });
250
+ });
251
+ });
252
+ //# sourceMappingURL=suggestion-list.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggestion-list.spec.js","sourceRoot":"","sources":["../../../src/components/suggest/suggestion-list.spec.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/components/tabs.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,GAAG,CAAC,OAAO,CAAA;IACnB,SAAS,EAAE,GAAG,CAAC,OAAO,CAAA;IACtB,IAAI,EAAE,MAAM,CAAA;CACb;AA+BD,eAAO,MAAM,IAAI;UACT,GAAG,EAAE;qBACM,OAAO,CAAC,mBAAmB,CAAC;YACrC,OAAO,CAAC,mBAAmB,CAAC;eACzB,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;;;sEAyBjC,CAAA"}
1
+ {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/components/tabs.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,GAAG,CAAC,OAAO,CAAA;IACnB,SAAS,EAAE,GAAG,CAAC,OAAO,CAAA;IACtB,IAAI,EAAE,MAAM,CAAA;CACb;AAkCD,eAAO,MAAM,IAAI;UACT,GAAG,EAAE;qBACM,OAAO,CAAC,mBAAmB,CAAC;YACrC,OAAO,CAAC,mBAAmB,CAAC;eACzB,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;;;sEAkCjC,CAAA"}
@@ -1,41 +1,55 @@
1
- import { LocationService, Shade, attachProps, createComponent } from '@furystack/shades';
2
- import { ThemeProviderService } from '../services/theme-provider-service.js';
1
+ import { LocationService, Shade, createComponent } from '@furystack/shades';
2
+ import { cssVariableTheme } from '../services/css-variable-theme.js';
3
3
  const TabHeader = Shade({
4
4
  shadowDomName: 'shade-tab-header',
5
- style: {
5
+ css: {
6
6
  padding: '1em 2.5em',
7
7
  cursor: 'pointer',
8
- transition: 'box-shadow 1s linear',
8
+ transition: 'box-shadow 0.3s ease, background 0.3s ease, color 0.3s ease, font-weight 0.3s ease',
9
+ fontWeight: 'inherit',
10
+ background: cssVariableTheme.background.default,
11
+ color: cssVariableTheme.text.secondary,
12
+ boxShadow: 'none',
13
+ '&.active': {
14
+ fontWeight: 'bolder',
15
+ background: cssVariableTheme.background.paper,
16
+ color: cssVariableTheme.text.primary,
17
+ boxShadow: `inset 0 -2px 0 ${cssVariableTheme.palette.primary.main}`,
18
+ },
9
19
  },
10
20
  elementBase: HTMLAnchorElement,
11
21
  elementBaseName: 'a',
12
22
  render: ({ children, element, injector, props, useObservable }) => {
13
- const { theme } = injector.getInstance(ThemeProviderService);
14
23
  const locationService = injector.getInstance(LocationService);
15
24
  const [hash] = useObservable('updateLocation', locationService.onLocationHashChanged);
16
25
  const isActive = hash === props.hash;
17
- attachProps(element, {
18
- style: {
19
- fontWeight: isActive ? 'bolder' : 'inherit',
20
- background: isActive ? theme.background.paper : theme.background.default,
21
- color: isActive ? theme.text.primary : theme.text.secondary,
22
- boxShadow: isActive ? `inset 0 -2px 0 ${theme.palette.primary.main}` : 'none',
23
- },
24
- href: `#${props.hash}`,
25
- });
26
+ element.classList.toggle('active', isActive);
27
+ element.setAttribute('href', `#${props.hash}`);
26
28
  return createComponent(createComponent, null, children);
27
29
  },
28
30
  });
29
31
  export const Tabs = Shade({
30
32
  shadowDomName: 'shade-tabs',
33
+ css: {
34
+ width: '100%',
35
+ height: '100%',
36
+ display: 'flex',
37
+ flexDirection: 'column',
38
+ '& .shade-tabs-header-container': {
39
+ display: 'inline-flex',
40
+ borderRadius: '5px 5px 0 0',
41
+ overflow: 'hidden',
42
+ flexShrink: '0',
43
+ },
44
+ },
31
45
  render: ({ props, element, useObservable, injector }) => {
32
- attachProps(element, {
33
- style: { width: '100%', height: '100%', display: 'flex', flexDirection: 'column', ...props.containerStyle },
34
- });
46
+ if (props.containerStyle) {
47
+ Object.assign(element.style, props.containerStyle);
48
+ }
35
49
  const [hash] = useObservable('updateLocation', injector.getInstance(LocationService).onLocationHashChanged);
36
50
  const activeTab = props.tabs.find((t) => t.hash === hash.replace('#', ''));
37
51
  return (createComponent(createComponent, null,
38
- createComponent("div", { className: "shade-tabs-header-container", style: { display: 'inline-flex', borderRadius: '5px 5px 0 0', overflow: 'hidden', flexShrink: '0' } }, props.tabs.map((tab) => (createComponent(TabHeader, { hash: tab.hash }, tab.header)))),
52
+ createComponent("div", { className: "shade-tabs-header-container" }, props.tabs.map((tab) => (createComponent(TabHeader, { hash: tab.hash }, tab.header)))),
39
53
  activeTab?.component));
40
54
  },
41
55
  });
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/components/tabs.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/components/tabs.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tabs.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.spec.d.ts","sourceRoot":"","sources":["../../src/components/tabs.spec.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,187 @@
1
+ import { Injector } from '@furystack/inject';
2
+ import { createComponent, initializeShadeRoot, LocationService } from '@furystack/shades';
3
+ import { sleepAsync, usingAsync } from '@furystack/utils';
4
+ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
5
+ import { Tabs } from './tabs.js';
6
+ describe('Tabs', () => {
7
+ beforeEach(() => {
8
+ document.body.innerHTML = '<div id="root"></div>';
9
+ window.location.hash = '';
10
+ });
11
+ afterEach(() => {
12
+ document.body.innerHTML = '';
13
+ window.location.hash = '';
14
+ });
15
+ const createTabs = () => [
16
+ {
17
+ hash: 'tab1',
18
+ header: createComponent("span", null, "Tab 1"),
19
+ component: createComponent("div", { id: "content-1" }, "Content 1"),
20
+ },
21
+ {
22
+ hash: 'tab2',
23
+ header: createComponent("span", null, "Tab 2"),
24
+ component: createComponent("div", { id: "content-2" }, "Content 2"),
25
+ },
26
+ {
27
+ hash: 'tab3',
28
+ header: createComponent("span", null, "Tab 3"),
29
+ component: createComponent("div", { id: "content-3" }, "Content 3"),
30
+ },
31
+ ];
32
+ it('should render all tab headers', async () => {
33
+ await usingAsync(new Injector(), async (injector) => {
34
+ const rootElement = document.getElementById('root');
35
+ const tabs = createTabs();
36
+ initializeShadeRoot({
37
+ injector,
38
+ rootElement,
39
+ jsxElement: createComponent(Tabs, { tabs: tabs }),
40
+ });
41
+ await sleepAsync(100);
42
+ expect(document.body.innerHTML).toContain('Tab 1');
43
+ expect(document.body.innerHTML).toContain('Tab 2');
44
+ expect(document.body.innerHTML).toContain('Tab 3');
45
+ });
46
+ });
47
+ it('should display the active tab content based on URL hash', async () => {
48
+ await usingAsync(new Injector(), async (injector) => {
49
+ window.location.hash = '#tab2';
50
+ const rootElement = document.getElementById('root');
51
+ const tabs = createTabs();
52
+ initializeShadeRoot({
53
+ injector,
54
+ rootElement,
55
+ jsxElement: createComponent(Tabs, { tabs: tabs }),
56
+ });
57
+ await sleepAsync(100);
58
+ expect(document.getElementById('content-2')).toBeTruthy();
59
+ expect(document.getElementById('content-1')).toBeFalsy();
60
+ expect(document.getElementById('content-3')).toBeFalsy();
61
+ });
62
+ });
63
+ it('should not display any tab content when hash does not match', async () => {
64
+ await usingAsync(new Injector(), async (injector) => {
65
+ window.location.hash = '#nonexistent';
66
+ const rootElement = document.getElementById('root');
67
+ const tabs = createTabs();
68
+ initializeShadeRoot({
69
+ injector,
70
+ rootElement,
71
+ jsxElement: createComponent(Tabs, { tabs: tabs }),
72
+ });
73
+ await sleepAsync(100);
74
+ expect(document.getElementById('content-1')).toBeFalsy();
75
+ expect(document.getElementById('content-2')).toBeFalsy();
76
+ expect(document.getElementById('content-3')).toBeFalsy();
77
+ });
78
+ });
79
+ it('should update active tab when hash changes', async () => {
80
+ await usingAsync(new Injector(), async (injector) => {
81
+ window.location.hash = '#tab1';
82
+ const rootElement = document.getElementById('root');
83
+ const tabs = createTabs();
84
+ initializeShadeRoot({
85
+ injector,
86
+ rootElement,
87
+ jsxElement: createComponent(Tabs, { tabs: tabs }),
88
+ });
89
+ await sleepAsync(100);
90
+ expect(document.getElementById('content-1')).toBeTruthy();
91
+ // Change hash
92
+ window.location.hash = '#tab3';
93
+ injector.getInstance(LocationService).updateState();
94
+ await sleepAsync(100);
95
+ expect(document.getElementById('content-3')).toBeTruthy();
96
+ expect(document.getElementById('content-1')).toBeFalsy();
97
+ });
98
+ });
99
+ it('should render tab headers as anchor elements with correct href', async () => {
100
+ await usingAsync(new Injector(), async (injector) => {
101
+ const rootElement = document.getElementById('root');
102
+ const tabs = createTabs();
103
+ initializeShadeRoot({
104
+ injector,
105
+ rootElement,
106
+ jsxElement: createComponent(Tabs, { tabs: tabs }),
107
+ });
108
+ await sleepAsync(100);
109
+ // Tab headers extend anchor elements
110
+ const html = document.body.innerHTML;
111
+ expect(html).toContain('href="#tab1"');
112
+ expect(html).toContain('href="#tab2"');
113
+ expect(html).toContain('href="#tab3"');
114
+ });
115
+ });
116
+ it('should mark the active tab header with active class', async () => {
117
+ await usingAsync(new Injector(), async (injector) => {
118
+ window.location.hash = '#tab2';
119
+ const rootElement = document.getElementById('root');
120
+ const tabs = createTabs();
121
+ initializeShadeRoot({
122
+ injector,
123
+ rootElement,
124
+ jsxElement: createComponent(Tabs, { tabs: tabs }),
125
+ });
126
+ await sleepAsync(100);
127
+ // The tab header with tab2 hash should have active class
128
+ const html = document.body.innerHTML;
129
+ // Verify the active tab content is shown
130
+ expect(document.getElementById('content-2')).toBeTruthy();
131
+ // Check for active class in the tab-header element containing Tab 2
132
+ expect(html).toMatch(/shade-tab-header[^>]*class="active"[^>]*href="#tab2"/);
133
+ });
134
+ });
135
+ it('should switch active class when hash changes', async () => {
136
+ await usingAsync(new Injector(), async (injector) => {
137
+ window.location.hash = '#tab1';
138
+ const rootElement = document.getElementById('root');
139
+ const tabs = createTabs();
140
+ initializeShadeRoot({
141
+ injector,
142
+ rootElement,
143
+ jsxElement: createComponent(Tabs, { tabs: tabs }),
144
+ });
145
+ await sleepAsync(100);
146
+ // Verify tab1 is active
147
+ expect(document.getElementById('content-1')).toBeTruthy();
148
+ expect(document.body.innerHTML).toMatch(/shade-tab-header[^>]*class="active"[^>]*href="#tab1"/);
149
+ // Change hash
150
+ window.location.hash = '#tab2';
151
+ injector.getInstance(LocationService).updateState();
152
+ await sleepAsync(100);
153
+ // Verify tab2 is now active
154
+ expect(document.getElementById('content-2')).toBeTruthy();
155
+ expect(document.getElementById('content-1')).toBeFalsy();
156
+ expect(document.body.innerHTML).toMatch(/shade-tab-header[^>]*class="active"[^>]*href="#tab2"/);
157
+ });
158
+ });
159
+ it('should apply containerStyle to the element', async () => {
160
+ await usingAsync(new Injector(), async (injector) => {
161
+ const rootElement = document.getElementById('root');
162
+ const tabs = createTabs();
163
+ initializeShadeRoot({
164
+ injector,
165
+ rootElement,
166
+ jsxElement: createComponent(Tabs, { tabs: tabs, containerStyle: { maxWidth: '800px' } }),
167
+ });
168
+ await sleepAsync(100);
169
+ const tabsElement = document.querySelector('shade-tabs');
170
+ expect(tabsElement.style.maxWidth).toBe('800px');
171
+ });
172
+ });
173
+ it('should work with empty tabs array', async () => {
174
+ await usingAsync(new Injector(), async (injector) => {
175
+ const rootElement = document.getElementById('root');
176
+ initializeShadeRoot({
177
+ injector,
178
+ rootElement,
179
+ jsxElement: createComponent(Tabs, { tabs: [] }),
180
+ });
181
+ await sleepAsync(100);
182
+ const tabHeaders = document.querySelectorAll('shade-tab-header');
183
+ expect(tabHeaders.length).toBe(0);
184
+ });
185
+ });
186
+ });
187
+ //# sourceMappingURL=tabs.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.spec.js","sourceRoot":"","sources":["../../src/components/tabs.spec.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/wizard/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAIrD,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,KAAK,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;IAClF;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AAED,eAAO,MAAM,MAAM;;0CAsCjB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/wizard/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAIrD,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,KAAK,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;IAClF;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AAED,eAAO,MAAM,MAAM;;0CAuCjB,CAAA"}
@@ -2,16 +2,19 @@ import { createComponent, Shade } from '@furystack/shades';
2
2
  import { Paper } from '../paper.js';
3
3
  export const Wizard = Shade({
4
4
  shadowDomName: 'shades-wizard',
5
+ css: {
6
+ '& .wizard-container': {
7
+ display: 'flex',
8
+ alignItems: 'center',
9
+ justifyContent: 'center',
10
+ width: '100%',
11
+ height: '100%',
12
+ },
13
+ },
5
14
  render: ({ props, useState }) => {
6
15
  const [currentPage, setCurrentPage] = useState('currentPage', 0);
7
16
  const CurrentPage = props.steps[currentPage];
8
- return (createComponent("div", { style: {
9
- display: 'flex',
10
- alignItems: 'center',
11
- justifyContent: 'center',
12
- width: '100%',
13
- height: '100%',
14
- } },
17
+ return (createComponent("div", { className: "wizard-container" },
15
18
  createComponent(Paper, { style: { maxWidth: '100%', maxHeight: '100%' }, elevation: 3, onclick: (ev) => ev.stopPropagation() },
16
19
  createComponent(CurrentPage, { currentPage: currentPage, maxPages: props.steps.length, onNext: () => {
17
20
  if (currentPage < props.steps.length - 1) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/wizard/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAgCnC,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,CAAc;IACvC,aAAa,EAAE,eAAe;IAC9B,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC9B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,CAAA;QAEhE,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAE5C,OAAO,CACL,yBACE,KAAK,EAAE;gBACL,OAAO,EAAE,MAAM;gBACf,UAAU,EAAE,QAAQ;gBACpB,cAAc,EAAE,QAAQ;gBACxB,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,MAAM;aACf;YAED,gBAAC,KAAK,IAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE;gBACxG,gBAAC,WAAW,IACV,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAC5B,MAAM,EAAE,GAAG,EAAE;wBACX,IAAI,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACzC,cAAc,CAAC,WAAW,GAAG,CAAC,CAAC,CAAA;wBACjC,CAAC;6BAAM,CAAC;4BACN,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAA;wBACpB,CAAC;oBACH,CAAC,EACD,MAAM,EAAE,GAAG,EAAE;wBACX,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;4BACpB,cAAc,CAAC,WAAW,GAAG,CAAC,CAAC,CAAA;wBACjC,CAAC;oBACH,CAAC,GACD,CACI,CACJ,CACP,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/wizard/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAgCnC,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,CAAc;IACvC,aAAa,EAAE,eAAe;IAC9B,GAAG,EAAE;QACH,qBAAqB,EAAE;YACrB,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,QAAQ;YACxB,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM;SACf;KACF;IACD,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC9B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,CAAA;QAEhE,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAE5C,OAAO,CACL,yBAAK,SAAS,EAAC,kBAAkB;YAC/B,gBAAC,KAAK,IAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE;gBACxG,gBAAC,WAAW,IACV,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAC5B,MAAM,EAAE,GAAG,EAAE;wBACX,IAAI,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACzC,cAAc,CAAC,WAAW,GAAG,CAAC,CAAC,CAAA;wBACjC,CAAC;6BAAM,CAAC;4BACN,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAA;wBACpB,CAAC;oBACH,CAAC,EACD,MAAM,EAAE,GAAG,EAAE;wBACX,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;4BACpB,cAAc,CAAC,WAAW,GAAG,CAAC,CAAC,CAAA;wBACjC,CAAC;oBACH,CAAC,GACD,CACI,CACJ,CACP,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.spec.d.ts","sourceRoot":"","sources":["../../../src/components/wizard/index.spec.tsx"],"names":[],"mappings":""}