xmlui 0.10.12 → 0.10.14

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 (209) hide show
  1. package/dist/lib/{index-CDOoBf2R.mjs → index-779mp2Bm.mjs} +1508 -1287
  2. package/dist/lib/index.css +1 -1
  3. package/dist/lib/{initMock-BAV9RKui.mjs → initMock-CAXdczCj.mjs} +1 -1
  4. package/dist/lib/scss/components-core/theming/_themes.scss +1 -1
  5. package/dist/lib/xmlui.d.ts +17 -2
  6. package/dist/lib/xmlui.mjs +33 -32
  7. package/dist/metadata/{collectedComponentMetadata-Dp8BqWQO.mjs → collectedComponentMetadata-7DFXlw-J.mjs} +14957 -14751
  8. package/dist/metadata/{initMock-BvEO8W8r.mjs → initMock-AFWEftc6.mjs} +1 -1
  9. package/dist/metadata/style.css +1 -1
  10. package/dist/metadata/xmlui-metadata.mjs +1 -1
  11. package/dist/metadata/xmlui-metadata.umd.js +3 -3
  12. package/dist/scripts/bin/build-lib.js +21 -13
  13. package/dist/scripts/bin/viteConfig.js +3 -1
  14. package/dist/scripts/package.json +1 -1
  15. package/dist/scripts/src/abstractions/scripting/Token.js +2 -0
  16. package/dist/scripts/src/abstractions/scripting/TryScope.js +2 -0
  17. package/dist/scripts/src/abstractions/scripting/modules.js +2 -0
  18. package/dist/scripts/src/components/APICall/APICall.spec.js +910 -0
  19. package/dist/scripts/src/components/Accordion/Accordion.spec.js +969 -0
  20. package/dist/scripts/src/components/Animation/Animation.js +50 -0
  21. package/dist/scripts/src/components/App/App.spec.js +219 -0
  22. package/dist/scripts/src/components/AppHeader/AppHeader.spec.js +169 -0
  23. package/dist/scripts/src/components/AppState/AppState.spec.js +268 -0
  24. package/dist/scripts/src/components/AutoComplete/AutoComplete.spec.js +383 -0
  25. package/dist/scripts/src/components/Avatar/Avatar.spec.js +1543 -0
  26. package/dist/scripts/src/components/Backdrop/Backdrop.spec.js +131 -0
  27. package/dist/scripts/src/components/Badge/Badge.spec.js +2214 -0
  28. package/dist/scripts/src/components/Bookmark/Bookmark.spec.js +230 -0
  29. package/dist/scripts/src/components/Breakout/Breakout.spec.js +56 -0
  30. package/dist/scripts/src/components/Button/Button-style.spec.js +274 -0
  31. package/dist/scripts/src/components/Button/Button.spec.js +454 -0
  32. package/dist/scripts/src/components/Card/Card.spec.js +150 -0
  33. package/dist/scripts/src/components/Carousel/Carousel.spec.js +343 -0
  34. package/dist/scripts/src/components/Carousel/CarouselNative.js +2 -2
  35. package/dist/scripts/src/components/ChangeListener/ChangeListener.spec.js +169 -0
  36. package/dist/scripts/src/components/Charts/AreaChart/AreaChart.spec.js +999 -0
  37. package/dist/scripts/src/components/Charts/BarChart/BarChart.spec.js +597 -0
  38. package/dist/scripts/src/components/Charts/DonutChart/DonutChart.spec.js +608 -0
  39. package/dist/scripts/src/components/Charts/LabelList/LabelList.spec.js +539 -0
  40. package/dist/scripts/src/components/Charts/Legend/Legend.spec.js +558 -0
  41. package/dist/scripts/src/components/Charts/LineChart/LineChart.spec.js +450 -0
  42. package/dist/scripts/src/components/Charts/PieChart/PieChart.spec.js +584 -0
  43. package/dist/scripts/src/components/Charts/RadarChart/RadarChart.spec.js +571 -0
  44. package/dist/scripts/src/components/Charts/Tooltip/TooltipContent.spec.js +449 -0
  45. package/dist/scripts/src/components/Checkbox/Checkbox.spec.js +964 -0
  46. package/dist/scripts/src/components/CodeBlock/CodeBlock.spec.js +196 -0
  47. package/dist/scripts/src/components/ColorPicker/ColorPicker.js +3 -3
  48. package/dist/scripts/src/components/ColorPicker/ColorPicker.spec.js +283 -0
  49. package/dist/scripts/src/components/ColorPicker/ColorPickerNative.js +16 -5
  50. package/dist/scripts/src/components/Column/doc-resources/list-component-data.js +53 -0
  51. package/dist/scripts/src/components/ComponentProvider.js +6 -6
  52. package/dist/scripts/src/components/ContentSeparator/ContentSeparator.spec.js +338 -0
  53. package/dist/scripts/src/components/DateInput/DateInput.spec.js +918 -0
  54. package/dist/scripts/src/components/DatePicker/DatePicker.spec.js +362 -0
  55. package/dist/scripts/src/components/DatePicker/DatePickerNative.js +3 -3
  56. package/dist/scripts/src/components/DropdownMenu/DropdownMenu.spec.js +331 -0
  57. package/dist/scripts/src/components/DropdownMenu/DropdownMenuNative.js +1 -1
  58. package/dist/scripts/src/components/EmojiSelector/EmojiSelector.spec.js +29 -0
  59. package/dist/scripts/src/components/ExpandableItem/ExpandableItem.spec.js +435 -0
  60. package/dist/scripts/src/components/FileInput/FileInput.spec.js +249 -0
  61. package/dist/scripts/src/components/FileInput/FileInputNative.js +14 -10
  62. package/dist/scripts/src/components/FileUploadDropZone/FileUploadDropZone.spec.js +296 -0
  63. package/dist/scripts/src/components/FileUploadDropZone/FileUploadDropZoneNative.js +1 -1
  64. package/dist/scripts/src/components/FlowLayout/FlowLayout.spec.js +518 -0
  65. package/dist/scripts/src/components/Footer/Footer.spec.js +991 -0
  66. package/dist/scripts/src/components/Form/Form.js +6 -0
  67. package/dist/scripts/src/components/Form/Form.spec.js +1257 -0
  68. package/dist/scripts/src/components/Form/FormNative.js +13 -3
  69. package/dist/scripts/src/components/FormItem/FormItem.spec.js +723 -0
  70. package/dist/scripts/src/components/FormItem/ItemWithLabel.js +2 -2
  71. package/dist/scripts/src/components/FormSection/FormSection.js +6 -31
  72. package/dist/scripts/src/components/Fragment/Fragment.js +5 -1
  73. package/dist/scripts/src/components/Fragment/Fragment.spec.js +50 -0
  74. package/dist/scripts/src/components/Heading/H1.spec.js +66 -0
  75. package/dist/scripts/src/components/Heading/H2.spec.js +66 -0
  76. package/dist/scripts/src/components/Heading/H3.spec.js +66 -0
  77. package/dist/scripts/src/components/Heading/H4.spec.js +66 -0
  78. package/dist/scripts/src/components/Heading/H5.spec.js +66 -0
  79. package/dist/scripts/src/components/Heading/H6.spec.js +66 -0
  80. package/dist/scripts/src/components/Heading/Heading.js +0 -12
  81. package/dist/scripts/src/components/Heading/Heading.spec.js +897 -0
  82. package/dist/scripts/src/components/HtmlTags/HtmlTags.spec.js +69 -0
  83. package/dist/scripts/src/components/IFrame/IFrame.spec.js +527 -0
  84. package/dist/scripts/src/components/Icon/ArrowDropDown.js +11 -0
  85. package/dist/scripts/src/components/Icon/ArrowDropUp.js +11 -0
  86. package/dist/scripts/src/components/Icon/ArrowLeft.js +11 -0
  87. package/dist/scripts/src/components/Icon/ArrowRight.js +11 -0
  88. package/dist/scripts/src/components/Icon/ChevronDownIcon.js +7 -0
  89. package/dist/scripts/src/components/Icon/ChevronUpIcon.js +7 -0
  90. package/dist/scripts/src/components/Icon/Icon.spec.js +527 -0
  91. package/dist/scripts/src/components/Icon/SunIcon.js +10 -0
  92. package/dist/scripts/src/components/Image/Image.js +2 -1
  93. package/dist/scripts/src/components/Image/Image.spec.js +198 -0
  94. package/dist/scripts/src/components/Image/ImageNative.js +30 -2
  95. package/dist/scripts/src/components/Input/InputLabel.js +25 -0
  96. package/dist/scripts/src/components/Input/index.js +5 -0
  97. package/dist/scripts/src/components/Items/Items.spec.js +397 -0
  98. package/dist/scripts/src/components/Link/Link.spec.js +894 -0
  99. package/dist/scripts/src/components/List/List.spec.js +927 -0
  100. package/dist/scripts/src/components/List/doc-resources/list-component-data.js +53 -0
  101. package/dist/scripts/src/components/Markdown/Markdown.spec.js +188 -0
  102. package/dist/scripts/src/components/ModalDialog/ModalDialog.js +1 -1
  103. package/dist/scripts/src/components/ModalDialog/ModalDialog.spec.js +162 -0
  104. package/dist/scripts/src/components/ModalDialog/ModalDialogNative.js +1 -1
  105. package/dist/scripts/src/components/NavGroup/NavGroup.spec.js +153 -0
  106. package/dist/scripts/src/components/NavGroup/NavGroupNative.js +2 -2
  107. package/dist/scripts/src/components/NavLink/NavLink.spec.js +864 -0
  108. package/dist/scripts/src/components/NavPanel/NavPanel.spec.js +864 -0
  109. package/dist/scripts/src/components/NoResult/NoResult.spec.js +863 -0
  110. package/dist/scripts/src/components/NumberBox/NumberBox.spec.js +1231 -0
  111. package/dist/scripts/src/components/Option/Option.spec.js +472 -0
  112. package/dist/scripts/src/components/PageMetaTitle/PageMetaTitle.spec.js +80 -0
  113. package/dist/scripts/src/components/Pagination/Pagination.spec.js +1003 -0
  114. package/dist/scripts/src/components/ProfileMenu/ProfileMenu.js +20 -0
  115. package/dist/scripts/src/components/ProgressBar/ProgressBar.spec.js +166 -0
  116. package/dist/scripts/src/components/Queue/Queue.spec.js +626 -0
  117. package/dist/scripts/src/components/RadioGroup/RadioGroup.spec.js +479 -0
  118. package/dist/scripts/src/components/RadioGroup/RadioGroupNative.js +17 -1
  119. package/dist/scripts/src/components/Redirect/Redirect.spec.js +527 -0
  120. package/dist/scripts/src/components/ResponsiveBar/ResponsiveBar.spec.js +76 -0
  121. package/dist/scripts/src/components/Select/Select.spec.js +527 -0
  122. package/dist/scripts/src/components/Slider/Slider.js +2 -0
  123. package/dist/scripts/src/components/Slider/Slider.spec.js +574 -0
  124. package/dist/scripts/src/components/Slider/SliderNative.js +62 -25
  125. package/dist/scripts/src/components/Slot/Slot.spec.js +368 -0
  126. package/dist/scripts/src/components/SpaceFiller/SpaceFiller.spec.js +184 -0
  127. package/dist/scripts/src/components/Spinner/Spinner.spec.js +161 -0
  128. package/dist/scripts/src/components/Splitter/HSplitter.spec.js +104 -0
  129. package/dist/scripts/src/components/Splitter/Splitter.spec.js +543 -0
  130. package/dist/scripts/src/components/Splitter/VSplitter.spec.js +104 -0
  131. package/dist/scripts/src/components/Stack/CHStack.spec.js +86 -0
  132. package/dist/scripts/src/components/Stack/CVStack.spec.js +86 -0
  133. package/dist/scripts/src/components/Stack/HStack.spec.js +67 -0
  134. package/dist/scripts/src/components/Stack/Stack.spec.js +654 -0
  135. package/dist/scripts/src/components/Stack/VStack.spec.js +67 -0
  136. package/dist/scripts/src/components/Switch/Switch.spec.js +829 -0
  137. package/dist/scripts/src/components/Table/Table.js +8 -5
  138. package/dist/scripts/src/components/Table/Table.spec.js +555 -0
  139. package/dist/scripts/src/components/Table/TableNative.js +1 -1
  140. package/dist/scripts/src/components/Table/doc-resources/list-component-data.js +53 -0
  141. package/dist/scripts/src/components/TableOfContents/TableOfContents.spec.js +838 -0
  142. package/dist/scripts/src/components/Tabs/Tabs.spec.js +875 -0
  143. package/dist/scripts/src/components/Text/Text.js +0 -13
  144. package/dist/scripts/src/components/Text/Text.spec.js +1075 -0
  145. package/dist/scripts/src/components/TextArea/TextArea.spec.js +714 -0
  146. package/dist/scripts/src/components/TextArea/TextAreaNative.js +8 -1
  147. package/dist/scripts/src/components/TextBox/TextBox.spec.js +643 -0
  148. package/dist/scripts/src/components/Theme/NotificationToast.js +4 -1
  149. package/dist/scripts/src/components/Theme/Theme.spec.js +124 -0
  150. package/dist/scripts/src/components/TimeInput/TimeInput.spec.js +1122 -0
  151. package/dist/scripts/src/components/Timer/Timer.spec.js +358 -0
  152. package/dist/scripts/src/components/ToneChangerButton/ToneChangerButton.spec.js +414 -0
  153. package/dist/scripts/src/components/ToneSwitch/ToneSwitch.spec.js +89 -0
  154. package/dist/scripts/src/components/Tooltip/Tooltip.spec.js +418 -0
  155. package/dist/scripts/src/components/chart-color-schemes.js +43 -0
  156. package/dist/scripts/src/components-core/CompoundComponent.js +5 -5
  157. package/dist/scripts/src/components-core/RestApiProxy.js +89 -11
  158. package/dist/scripts/src/components-core/devtools/InspectorDialogVisibilityContext.js +8 -0
  159. package/dist/scripts/src/components-core/renderers.js +31 -0
  160. package/dist/scripts/src/components-core/rendering/ComponentAdapter.js +1 -1
  161. package/dist/scripts/src/components-core/rendering/Container.js +19 -8
  162. package/dist/scripts/src/components-core/rendering/reducer.js +1 -1
  163. package/dist/scripts/src/components-core/script-runner/simplify-expression.js +386 -0
  164. package/dist/scripts/src/components-core/theming/component-layout-resolver.js +153 -0
  165. package/dist/scripts/src/components-core/theming/parse-layout-props.js +98 -0
  166. package/dist/scripts/src/components-core/theming/themes/root.js +13 -20
  167. package/dist/scripts/src/components-core/theming/themes/solid.js +16 -0
  168. package/dist/scripts/src/components-core/utils/audio-utils.js +83 -0
  169. package/dist/scripts/src/index-standalone.js +61 -0
  170. package/dist/scripts/src/index.js +2 -1
  171. package/dist/scripts/src/language-server/server-common.js +151 -0
  172. package/dist/scripts/src/language-server/server-web-worker.js +47 -0
  173. package/dist/scripts/src/language-server/server.js +42 -0
  174. package/dist/scripts/src/language-server/services/common/docs-generation.js +73 -0
  175. package/dist/scripts/src/language-server/services/common/lsp-utils.js +9 -0
  176. package/dist/scripts/src/language-server/services/common/syntax-node-utilities.js +135 -0
  177. package/dist/scripts/src/language-server/services/completion.js +270 -0
  178. package/dist/scripts/src/language-server/services/diagnostic.js +19 -0
  179. package/dist/scripts/src/language-server/services/format.js +430 -0
  180. package/dist/scripts/src/language-server/services/hover.js +164 -0
  181. package/dist/scripts/src/language-server/xmlui-metadata-generated.mjs +16266 -0
  182. package/dist/scripts/src/logging/xmlui.js +21 -0
  183. package/dist/scripts/src/parsers/common/utils.js +19 -0
  184. package/dist/scripts/src/syntax/monaco/grammar.monacoLanguage.js +286 -0
  185. package/dist/scripts/src/syntax/monaco/index.js +14 -0
  186. package/dist/scripts/src/syntax/monaco/xmlui-dark.js +25 -0
  187. package/dist/scripts/src/syntax/monaco/xmlui-light.js +25 -0
  188. package/dist/scripts/src/syntax/monaco/xmluiscript.monacoLanguage.js +310 -0
  189. package/dist/scripts/src/syntax/textMate/index.js +14 -0
  190. package/dist/scripts/src/syntax/textMate/xmlui-dark.json +631 -0
  191. package/dist/scripts/src/syntax/textMate/xmlui-light.json +565 -0
  192. package/dist/scripts/src/syntax/textMate/xmlui.json +564 -0
  193. package/dist/scripts/src/syntax/textMate/xmlui.tmLanguage.json +341 -0
  194. package/dist/scripts/src/testing/ComponentDrivers.js +1355 -0
  195. package/dist/scripts/src/testing/assertions.js +444 -0
  196. package/dist/scripts/src/testing/component-test-helpers.js +389 -0
  197. package/dist/scripts/src/testing/drivers/DateInputDriver.js +19 -0
  198. package/dist/scripts/src/testing/drivers/ModalDialogDriver.js +10 -0
  199. package/dist/scripts/src/testing/drivers/TimeInputDriver.js +22 -0
  200. package/dist/scripts/src/testing/drivers/TimerDriver.js +64 -0
  201. package/dist/scripts/src/testing/fixtures.js +487 -0
  202. package/dist/scripts/src/testing/infrastructure/TestBed.js +17 -0
  203. package/dist/scripts/src/testing/infrastructure/main.js +9 -0
  204. package/dist/scripts/src/testing/infrastructure/public/mockServiceWorker.js +266 -0
  205. package/dist/scripts/src/testing/themed-app-test-helpers.js +139 -0
  206. package/dist/standalone/xmlui-standalone.es.d.ts +19 -2
  207. package/dist/standalone/xmlui-standalone.umd.js +36 -36
  208. package/package.json +1 -1
  209. package/dist/scripts/src/components/RadioGroup/RadioItem.js +0 -28
@@ -0,0 +1,999 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const fixtures_1 = require("../../../testing/fixtures");
13
+ // Test data helpers - using proper XMLUI data format
14
+ const sampleData = `[
15
+ { name: 'Jan', value: 100, category: 400 },
16
+ { name: 'Feb', value: 150, category: 300 },
17
+ { name: 'Mar', value: 120, category: 500 },
18
+ { name: 'Apr', value: 180, category: 200 }
19
+ ]`;
20
+ const emptyData = `[]`;
21
+ const singlePointData = `[
22
+ { name: 'Jan', value: 100, category: 400 }
23
+ ]`;
24
+ const multiSeriesData = `[
25
+ { month: 'Jan', sales: 1200, profit: 400, expenses: 800 },
26
+ { month: 'Feb', sales: 1900, profit: 600, expenses: 1300 },
27
+ { month: 'Mar', sales: 1500, profit: 500, expenses: 1000 },
28
+ { month: 'Apr', sales: 1800, profit: 700, expenses: 1100 }
29
+ ]`;
30
+ const largeDataset = `[
31
+ ${Array.from({ length: 20 }, (_, i) => `{ name: 'Point${i + 1}', value: ${Math.floor(Math.random() * 1000)}, secondary: ${Math.floor(Math.random() * 500)} }`).join(', ')}
32
+ ]`;
33
+ // Chart selectors - update based on specific Recharts component
34
+ const chartRoot = ".recharts-responsive-container";
35
+ const chartSvg = ".recharts-surface";
36
+ const chartElementsSelector = ".recharts-area"; // AreaChart specific
37
+ const legendSelector = ".recharts-legend-wrapper";
38
+ const tooltipSelector = ".recharts-tooltip-wrapper";
39
+ const xAxisSelector = ".recharts-xAxis";
40
+ const yAxisSelector = ".recharts-yAxis";
41
+ const xTicksSelector = ".recharts-xAxis .recharts-cartesian-axis-tick-value";
42
+ const yTicksSelector = ".recharts-yAxis .recharts-cartesian-axis-tick-value";
43
+ // --- Smoke Tests
44
+ fixtures_1.test.describe("smoke tests", { tag: "@smoke" }, () => {
45
+ (0, fixtures_1.test)("component renders with basic props", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
46
+ yield initTestBed(`
47
+ <AreaChart
48
+ nameKey="name"
49
+ data="{${sampleData}}"
50
+ dataKeys="{['value']}"
51
+ width="600px"
52
+ height="400px"
53
+ />
54
+ `);
55
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
56
+ yield (0, fixtures_1.expect)(page.locator(chartRoot)).toBeVisible();
57
+ }));
58
+ (0, fixtures_1.test)("renders correct number of chart elements", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
59
+ yield initTestBed(`
60
+ <AreaChart
61
+ nameKey="name"
62
+ data="{${sampleData}}"
63
+ dataKeys="{['value', 'category']}"
64
+ width="600px"
65
+ height="400px"
66
+ />
67
+ `);
68
+ yield page.waitForSelector(chartElementsSelector, { timeout: 10000 });
69
+ const elements = page.locator(chartElementsSelector);
70
+ yield (0, fixtures_1.expect)(elements).toHaveCount(2); // Should match dataKeys length
71
+ }));
72
+ (0, fixtures_1.test)("handles empty data gracefully", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
73
+ yield initTestBed(`
74
+ <AreaChart
75
+ nameKey="name"
76
+ data="{${emptyData}}"
77
+ dataKeys="{['value']}"
78
+ width="600px"
79
+ height="400px"
80
+ />
81
+ `);
82
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
83
+ yield (0, fixtures_1.expect)(page.locator(chartRoot)).toBeVisible();
84
+ }));
85
+ (0, fixtures_1.test)("handles single data point", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
86
+ yield initTestBed(`
87
+ <AreaChart
88
+ nameKey="name"
89
+ data="{${singlePointData}}"
90
+ dataKeys="{['value']}"
91
+ width="600px"
92
+ height="400px"
93
+ />
94
+ `);
95
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
96
+ yield (0, fixtures_1.expect)(page.locator(chartRoot)).toBeVisible();
97
+ }));
98
+ });
99
+ // --- Axis Tests
100
+ fixtures_1.test.describe("x-axis", () => {
101
+ (0, fixtures_1.test)("x-axis is shown by default", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
102
+ yield initTestBed(`
103
+ <AreaChart
104
+ nameKey="name"
105
+ data="{${sampleData}}"
106
+ dataKeys="{['value']}"
107
+ width="600px"
108
+ height="400px"
109
+ />
110
+ `);
111
+ yield page.waitForSelector(xAxisSelector, { timeout: 10000 });
112
+ yield (0, fixtures_1.expect)(page.locator(xAxisSelector)).toBeVisible();
113
+ }));
114
+ (0, fixtures_1.test)("x-axis can be hidden", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
115
+ yield initTestBed(`
116
+ <AreaChart
117
+ nameKey="name"
118
+ data="{${sampleData}}"
119
+ dataKeys="{['value']}"
120
+ hideX="true"
121
+ width="600px"
122
+ height="400px"
123
+ />
124
+ `);
125
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
126
+ yield (0, fixtures_1.expect)(page.locator(xAxisSelector)).not.toBeVisible();
127
+ }));
128
+ (0, fixtures_1.test)("x-axis tick labels can be hidden", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
129
+ yield initTestBed(`
130
+ <AreaChart
131
+ nameKey="name"
132
+ data="{${sampleData}}"
133
+ dataKeys="{['value']}"
134
+ hideTickX="true"
135
+ width="600px"
136
+ height="400px"
137
+ />
138
+ `);
139
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
140
+ yield (0, fixtures_1.expect)(page.locator(xTicksSelector)).not.toBeVisible();
141
+ }));
142
+ });
143
+ fixtures_1.test.describe("y-axis", () => {
144
+ (0, fixtures_1.test)("y-axis is shown by default", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
145
+ yield initTestBed(`
146
+ <AreaChart
147
+ nameKey="name"
148
+ data="{${sampleData}}"
149
+ dataKeys="{['value']}"
150
+ width="600px"
151
+ height="400px"
152
+ />
153
+ `);
154
+ yield page.waitForSelector(yAxisSelector, { timeout: 10000 });
155
+ yield (0, fixtures_1.expect)(page.locator(yAxisSelector)).toBeVisible();
156
+ }));
157
+ (0, fixtures_1.test)("y-axis can be hidden", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
158
+ yield initTestBed(`
159
+ <AreaChart
160
+ nameKey="name"
161
+ data="{${sampleData}}"
162
+ dataKeys="{['value']}"
163
+ hideY="true"
164
+ width="600px"
165
+ height="400px"
166
+ />
167
+ `);
168
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
169
+ yield (0, fixtures_1.expect)(page.locator(yAxisSelector)).not.toBeVisible();
170
+ }));
171
+ (0, fixtures_1.test)("y-axis tick labels can be hidden", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
172
+ yield initTestBed(`
173
+ <AreaChart
174
+ nameKey="name"
175
+ data="{${sampleData}}"
176
+ dataKeys="{['value']}"
177
+ hideTickY="true"
178
+ width="600px"
179
+ height="400px"
180
+ />
181
+ `);
182
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
183
+ yield (0, fixtures_1.expect)(page.locator(yTicksSelector)).not.toBeVisible();
184
+ }));
185
+ });
186
+ // --- Legend Tests
187
+ fixtures_1.test.describe("legend", () => {
188
+ (0, fixtures_1.test)("legend is hidden by default", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
189
+ yield initTestBed(`
190
+ <AreaChart
191
+ nameKey="name"
192
+ data="{${sampleData}}"
193
+ dataKeys="{['value', 'category']}"
194
+ width="600px"
195
+ height="400px"
196
+ />
197
+ `);
198
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
199
+ yield (0, fixtures_1.expect)(page.locator(legendSelector)).not.toBeVisible();
200
+ }));
201
+ (0, fixtures_1.test)("legend can be shown", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
202
+ yield initTestBed(`
203
+ <AreaChart
204
+ nameKey="name"
205
+ data="{${sampleData}}"
206
+ dataKeys="{['value', 'category']}"
207
+ showLegend="true"
208
+ width="600px"
209
+ height="400px"
210
+ />
211
+ `);
212
+ yield page.waitForSelector(legendSelector, { timeout: 10000 });
213
+ yield (0, fixtures_1.expect)(page.locator(legendSelector)).toBeVisible();
214
+ }));
215
+ });
216
+ // --- Area Chart Specific Tests
217
+ fixtures_1.test.describe("stacked areas", () => {
218
+ (0, fixtures_1.test)("areas are not stacked by default", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
219
+ yield initTestBed(`
220
+ <AreaChart
221
+ nameKey="name"
222
+ data="{${sampleData}}"
223
+ dataKeys="{['value', 'category']}"
224
+ width="600px"
225
+ height="400px"
226
+ />
227
+ `);
228
+ yield page.waitForSelector(chartElementsSelector, { timeout: 10000 });
229
+ const areas = page.locator(chartElementsSelector);
230
+ yield (0, fixtures_1.expect)(areas).toHaveCount(2);
231
+ }));
232
+ (0, fixtures_1.test)("areas can be stacked", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
233
+ yield initTestBed(`
234
+ <AreaChart
235
+ nameKey="name"
236
+ data="{${sampleData}}"
237
+ dataKeys="{['value', 'category']}"
238
+ stacked="true"
239
+ width="600px"
240
+ height="400px"
241
+ />
242
+ `);
243
+ yield page.waitForSelector(chartElementsSelector, { timeout: 10000 });
244
+ const areas = page.locator(chartElementsSelector);
245
+ yield (0, fixtures_1.expect)(areas).toHaveCount(2);
246
+ }));
247
+ });
248
+ fixtures_1.test.describe("curved areas", () => {
249
+ (0, fixtures_1.test)("areas are linear by default", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
250
+ yield initTestBed(`
251
+ <AreaChart
252
+ nameKey="name"
253
+ data="{${sampleData}}"
254
+ dataKeys="{['value']}"
255
+ width="600px"
256
+ height="400px"
257
+ />
258
+ `);
259
+ yield page.waitForSelector(chartElementsSelector, { timeout: 10000 });
260
+ yield (0, fixtures_1.expect)(page.locator(chartElementsSelector)).toBeVisible();
261
+ }));
262
+ (0, fixtures_1.test)("areas can be curved", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
263
+ yield initTestBed(`
264
+ <AreaChart
265
+ nameKey="name"
266
+ data="{${sampleData}}"
267
+ dataKeys="{['value']}"
268
+ curved="true"
269
+ width="600px"
270
+ height="400px"
271
+ />
272
+ `);
273
+ yield page.waitForSelector(chartElementsSelector, { timeout: 10000 });
274
+ yield (0, fixtures_1.expect)(page.locator(chartElementsSelector)).toBeVisible();
275
+ }));
276
+ });
277
+ // --- Responsive Behavior Tests
278
+ fixtures_1.test.describe("responsive behavior", () => {
279
+ (0, fixtures_1.test)("enters mini mode with very small container height", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
280
+ yield initTestBed(`
281
+ <AreaChart
282
+ nameKey="name"
283
+ data="{${sampleData}}"
284
+ dataKeys="{['value']}"
285
+ showLegend="true"
286
+ width="600px"
287
+ height="100px"
288
+ />
289
+ `);
290
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
291
+ // In mini mode, legend and axes should be hidden
292
+ yield (0, fixtures_1.expect)(page.locator(legendSelector)).not.toBeVisible();
293
+ yield (0, fixtures_1.expect)(page.locator(xAxisSelector)).not.toBeVisible();
294
+ yield (0, fixtures_1.expect)(page.locator(yAxisSelector)).not.toBeVisible();
295
+ }));
296
+ (0, fixtures_1.test)("normal mode with adequate height", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
297
+ yield initTestBed(`
298
+ <AreaChart
299
+ nameKey="name"
300
+ data="{${sampleData}}"
301
+ dataKeys="{['value']}"
302
+ showLegend="true"
303
+ width="600px"
304
+ height="300px"
305
+ />
306
+ `);
307
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
308
+ // In normal mode, legend and axes should be visible
309
+ yield (0, fixtures_1.expect)(page.locator(legendSelector)).toBeVisible();
310
+ yield (0, fixtures_1.expect)(page.locator(xAxisSelector)).toBeVisible();
311
+ yield (0, fixtures_1.expect)(page.locator(yAxisSelector)).toBeVisible();
312
+ }));
313
+ });
314
+ // --- Tooltip Tests
315
+ fixtures_1.test.describe("tooltip", () => {
316
+ (0, fixtures_1.test)("tooltip is shown by default", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
317
+ yield initTestBed(`
318
+ <AreaChart
319
+ nameKey="name"
320
+ data="{${sampleData}}"
321
+ dataKeys="{['value']}"
322
+ width="600px"
323
+ height="400px"
324
+ />
325
+ `);
326
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
327
+ // Hover over chart area to trigger tooltip
328
+ yield page.locator(chartElementsSelector).first().hover();
329
+ yield (0, fixtures_1.expect)(page.locator(tooltipSelector)).toBeVisible();
330
+ }));
331
+ (0, fixtures_1.test)("tooltip can be hidden", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
332
+ yield initTestBed(`
333
+ <AreaChart
334
+ nameKey="name"
335
+ data="{${sampleData}}"
336
+ dataKeys="{['value']}"
337
+ hideTooltip="true"
338
+ width="600px"
339
+ height="400px"
340
+ />
341
+ `);
342
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
343
+ // Hover over chart area - tooltip should not appear
344
+ yield page.locator(chartElementsSelector).first().hover();
345
+ yield (0, fixtures_1.expect)(page.locator(tooltipSelector)).not.toBeVisible();
346
+ }));
347
+ });
348
+ // --- Comprehensive Prop Tests
349
+ fixtures_1.test.describe("data prop", () => {
350
+ (0, fixtures_1.test)("handles array data correctly", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
351
+ yield initTestBed(`
352
+ <AreaChart
353
+ nameKey="name"
354
+ data="{${sampleData}}"
355
+ dataKeys="{['value']}"
356
+ width="600px"
357
+ height="400px"
358
+ />
359
+ `);
360
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
361
+ yield (0, fixtures_1.expect)(page.locator(chartRoot)).toBeVisible();
362
+ yield (0, fixtures_1.expect)(page.locator(chartElementsSelector)).toHaveCount(1);
363
+ }));
364
+ (0, fixtures_1.test)("handles empty array gracefully", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
365
+ yield initTestBed(`
366
+ <AreaChart
367
+ nameKey="name"
368
+ data="{${emptyData}}"
369
+ dataKeys="{['value']}"
370
+ width="600px"
371
+ height="400px"
372
+ />
373
+ `);
374
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
375
+ yield (0, fixtures_1.expect)(page.locator(chartRoot)).toBeVisible();
376
+ }));
377
+ (0, fixtures_1.test)("handles large datasets", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
378
+ yield initTestBed(`
379
+ <AreaChart
380
+ nameKey="name"
381
+ data="{${largeDataset}}"
382
+ dataKeys="{['value', 'secondary']}"
383
+ width="600px"
384
+ height="400px"
385
+ />
386
+ `);
387
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
388
+ yield (0, fixtures_1.expect)(page.locator(chartElementsSelector)).toHaveCount(2);
389
+ }));
390
+ (0, fixtures_1.test)("handles missing data prop", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
391
+ yield initTestBed(`
392
+ <AreaChart
393
+ nameKey="name"
394
+ dataKeys="{['value']}"
395
+ width="600px"
396
+ height="400px"
397
+ />
398
+ `);
399
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
400
+ yield (0, fixtures_1.expect)(page.locator(chartRoot)).toBeVisible();
401
+ }));
402
+ });
403
+ fixtures_1.test.describe("dataKeys prop", () => {
404
+ (0, fixtures_1.test)("renders single data series", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
405
+ yield initTestBed(`
406
+ <AreaChart
407
+ nameKey="name"
408
+ data="{${sampleData}}"
409
+ dataKeys="{['value']}"
410
+ width="600px"
411
+ height="400px"
412
+ />
413
+ `);
414
+ yield page.waitForSelector(chartElementsSelector, { timeout: 10000 });
415
+ yield (0, fixtures_1.expect)(page.locator(chartElementsSelector)).toHaveCount(1);
416
+ }));
417
+ (0, fixtures_1.test)("renders multiple data series", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
418
+ yield initTestBed(`
419
+ <AreaChart
420
+ nameKey="month"
421
+ data="{${multiSeriesData}}"
422
+ dataKeys="{['sales', 'profit', 'expenses']}"
423
+ width="600px"
424
+ height="400px"
425
+ />
426
+ `);
427
+ yield page.waitForSelector(chartElementsSelector, { timeout: 10000 });
428
+ yield (0, fixtures_1.expect)(page.locator(chartElementsSelector)).toHaveCount(3);
429
+ }));
430
+ (0, fixtures_1.test)("handles empty dataKeys array", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
431
+ yield initTestBed(`
432
+ <AreaChart
433
+ nameKey="name"
434
+ data="{${sampleData}}"
435
+ dataKeys="{[]}"
436
+ width="600px"
437
+ height="400px"
438
+ />
439
+ `);
440
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
441
+ yield (0, fixtures_1.expect)(page.locator(chartRoot)).toBeVisible();
442
+ yield (0, fixtures_1.expect)(page.locator(chartElementsSelector)).toHaveCount(0);
443
+ }));
444
+ (0, fixtures_1.test)("handles non-existent dataKeys", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
445
+ yield initTestBed(`
446
+ <AreaChart
447
+ nameKey="name"
448
+ data="{${sampleData}}"
449
+ dataKeys="{['nonexistent', 'alsononexistent']}"
450
+ width="600px"
451
+ height="400px"
452
+ />
453
+ `);
454
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
455
+ yield (0, fixtures_1.expect)(page.locator(chartRoot)).toBeVisible();
456
+ }));
457
+ });
458
+ fixtures_1.test.describe("nameKey prop", () => {
459
+ (0, fixtures_1.test)("uses correct nameKey for x-axis labels", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
460
+ yield initTestBed(`
461
+ <AreaChart
462
+ nameKey="name"
463
+ data="{${sampleData}}"
464
+ dataKeys="{['value']}"
465
+ width="600px"
466
+ height="400px"
467
+ />
468
+ `);
469
+ yield page.waitForSelector(xTicksSelector, { timeout: 10000 });
470
+ const firstTick = page.locator(xTicksSelector).first();
471
+ yield (0, fixtures_1.expect)(firstTick).toContainText("Jan");
472
+ }));
473
+ (0, fixtures_1.test)("handles different nameKey", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
474
+ yield initTestBed(`
475
+ <AreaChart
476
+ nameKey="month"
477
+ data="{${multiSeriesData}}"
478
+ dataKeys="{['sales']}"
479
+ width="600px"
480
+ height="400px"
481
+ />
482
+ `);
483
+ yield page.waitForSelector(xTicksSelector, { timeout: 10000 });
484
+ const firstTick = page.locator(xTicksSelector).first();
485
+ yield (0, fixtures_1.expect)(firstTick).toContainText("Jan");
486
+ }));
487
+ (0, fixtures_1.test)("handles missing nameKey", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
488
+ yield initTestBed(`
489
+ <AreaChart
490
+ data="{${sampleData}}"
491
+ dataKeys="{['value']}"
492
+ width="600px"
493
+ height="400px"
494
+ />
495
+ `);
496
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
497
+ yield (0, fixtures_1.expect)(page.locator(chartRoot)).toBeVisible();
498
+ }));
499
+ (0, fixtures_1.test)("handles non-existent nameKey", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
500
+ yield initTestBed(`
501
+ <AreaChart
502
+ nameKey="nonexistent"
503
+ data="{${sampleData}}"
504
+ dataKeys="{['value']}"
505
+ width="600px"
506
+ height="400px"
507
+ />
508
+ `);
509
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
510
+ yield (0, fixtures_1.expect)(page.locator(chartRoot)).toBeVisible();
511
+ }));
512
+ });
513
+ fixtures_1.test.describe("hideX prop", () => {
514
+ (0, fixtures_1.test)("shows X-axis by default", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
515
+ yield initTestBed(`
516
+ <AreaChart
517
+ nameKey="name"
518
+ data="{${sampleData}}"
519
+ dataKeys="{['value']}"
520
+ width="600px"
521
+ height="400px"
522
+ />
523
+ `);
524
+ yield page.waitForSelector(xAxisSelector, { timeout: 10000 });
525
+ yield (0, fixtures_1.expect)(page.locator(xAxisSelector)).toBeVisible();
526
+ }));
527
+ (0, fixtures_1.test)("hides X-axis when hideX is true", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
528
+ yield initTestBed(`
529
+ <AreaChart
530
+ nameKey="name"
531
+ data="{${sampleData}}"
532
+ dataKeys="{['value']}"
533
+ hideX="true"
534
+ width="600px"
535
+ height="400px"
536
+ />
537
+ `);
538
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
539
+ yield (0, fixtures_1.expect)(page.locator(xAxisSelector)).not.toBeVisible();
540
+ }));
541
+ (0, fixtures_1.test)("shows X-axis when hideX is false", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
542
+ yield initTestBed(`
543
+ <AreaChart
544
+ nameKey="name"
545
+ data="{${sampleData}}"
546
+ dataKeys="{['value']}"
547
+ hideX="false"
548
+ width="600px"
549
+ height="400px"
550
+ />
551
+ `);
552
+ yield page.waitForSelector(xAxisSelector, { timeout: 10000 });
553
+ yield (0, fixtures_1.expect)(page.locator(xAxisSelector)).toBeVisible();
554
+ }));
555
+ });
556
+ fixtures_1.test.describe("hideY prop", () => {
557
+ (0, fixtures_1.test)("shows Y-axis by default", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
558
+ yield initTestBed(`
559
+ <AreaChart
560
+ nameKey="name"
561
+ data="{${sampleData}}"
562
+ dataKeys="{['value']}"
563
+ width="600px"
564
+ height="400px"
565
+ />
566
+ `);
567
+ yield page.waitForSelector(yAxisSelector, { timeout: 10000 });
568
+ yield (0, fixtures_1.expect)(page.locator(yAxisSelector)).toBeVisible();
569
+ }));
570
+ (0, fixtures_1.test)("hides Y-axis when hideY is true", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
571
+ yield initTestBed(`
572
+ <AreaChart
573
+ nameKey="name"
574
+ data="{${sampleData}}"
575
+ dataKeys="{['value']}"
576
+ hideY="true"
577
+ width="600px"
578
+ height="400px"
579
+ />
580
+ `);
581
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
582
+ yield (0, fixtures_1.expect)(page.locator(yAxisSelector)).not.toBeVisible();
583
+ }));
584
+ (0, fixtures_1.test)("shows Y-axis when hideY is false", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
585
+ yield initTestBed(`
586
+ <AreaChart
587
+ nameKey="name"
588
+ data="{${sampleData}}"
589
+ dataKeys="{['value']}"
590
+ hideY="false"
591
+ width="600px"
592
+ height="400px"
593
+ />
594
+ `);
595
+ yield page.waitForSelector(yAxisSelector, { timeout: 10000 });
596
+ yield (0, fixtures_1.expect)(page.locator(yAxisSelector)).toBeVisible();
597
+ }));
598
+ });
599
+ fixtures_1.test.describe("hideTickX prop", () => {
600
+ (0, fixtures_1.test)("shows X-axis ticks by default", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
601
+ yield initTestBed(`
602
+ <AreaChart
603
+ nameKey="name"
604
+ data="{${sampleData}}"
605
+ dataKeys="{['value']}"
606
+ width="600px"
607
+ height="400px"
608
+ />
609
+ `);
610
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
611
+ yield page.waitForSelector(xAxisSelector, { timeout: 5000 });
612
+ // Wait a bit more for ticks to render
613
+ yield page.waitForTimeout(1000);
614
+ const ticks = page.locator(xTicksSelector);
615
+ yield (0, fixtures_1.expect)(ticks.first()).toBeVisible();
616
+ }));
617
+ (0, fixtures_1.test)("hides X-axis ticks when hideTickX is true", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
618
+ yield initTestBed(`
619
+ <AreaChart
620
+ nameKey="name"
621
+ data="{${sampleData}}"
622
+ dataKeys="{['value']}"
623
+ hideTickX="true"
624
+ width="600px"
625
+ height="400px"
626
+ />
627
+ `);
628
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
629
+ yield (0, fixtures_1.expect)(page.locator(xTicksSelector)).not.toBeVisible();
630
+ }));
631
+ (0, fixtures_1.test)("shows X-axis ticks when hideTickX is false", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
632
+ yield initTestBed(`
633
+ <AreaChart
634
+ nameKey="name"
635
+ data="{${sampleData}}"
636
+ dataKeys="{['value']}"
637
+ hideTickX="false"
638
+ width="600px"
639
+ height="400px"
640
+ />
641
+ `);
642
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
643
+ yield page.waitForSelector(xAxisSelector, { timeout: 5000 });
644
+ yield page.waitForTimeout(1000);
645
+ const ticks = page.locator(xTicksSelector);
646
+ yield (0, fixtures_1.expect)(ticks.first()).toBeVisible();
647
+ }));
648
+ });
649
+ fixtures_1.test.describe("hideTickY prop", () => {
650
+ (0, fixtures_1.test)("shows Y-axis ticks by default", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
651
+ yield initTestBed(`
652
+ <AreaChart
653
+ nameKey="name"
654
+ data="{${sampleData}}"
655
+ dataKeys="{['value']}"
656
+ width="600px"
657
+ height="400px"
658
+ />
659
+ `);
660
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
661
+ yield page.waitForSelector(yAxisSelector, { timeout: 5000 });
662
+ yield page.waitForTimeout(1000);
663
+ const ticks = page.locator(yTicksSelector);
664
+ yield (0, fixtures_1.expect)(ticks.first()).toBeVisible();
665
+ }));
666
+ (0, fixtures_1.test)("hides Y-axis ticks when hideTickY is true", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
667
+ yield initTestBed(`
668
+ <AreaChart
669
+ nameKey="name"
670
+ data="{${sampleData}}"
671
+ dataKeys="{['value']}"
672
+ hideTickY="true"
673
+ width="600px"
674
+ height="400px"
675
+ />
676
+ `);
677
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
678
+ yield (0, fixtures_1.expect)(page.locator(yTicksSelector)).not.toBeVisible();
679
+ }));
680
+ (0, fixtures_1.test)("shows Y-axis ticks when hideTickY is false", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
681
+ yield initTestBed(`
682
+ <AreaChart
683
+ nameKey="name"
684
+ data="{${sampleData}}"
685
+ dataKeys="{['value']}"
686
+ hideTickY="false"
687
+ width="600px"
688
+ height="400px"
689
+ />
690
+ `);
691
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
692
+ yield page.waitForSelector(yAxisSelector, { timeout: 5000 });
693
+ yield page.waitForTimeout(1000);
694
+ const ticks = page.locator(yTicksSelector);
695
+ yield (0, fixtures_1.expect)(ticks.first()).toBeVisible();
696
+ }));
697
+ });
698
+ fixtures_1.test.describe("hideTooltip prop", () => {
699
+ (0, fixtures_1.test)("shows tooltip by default", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
700
+ yield initTestBed(`
701
+ <AreaChart
702
+ nameKey="name"
703
+ data="{${sampleData}}"
704
+ dataKeys="{['value']}"
705
+ width="600px"
706
+ height="400px"
707
+ />
708
+ `);
709
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
710
+ yield page.locator(chartElementsSelector).first().hover();
711
+ yield (0, fixtures_1.expect)(page.locator(tooltipSelector)).toBeVisible();
712
+ }));
713
+ (0, fixtures_1.test)("hides tooltip when hideTooltip is true", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
714
+ yield initTestBed(`
715
+ <AreaChart
716
+ nameKey="name"
717
+ data="{${sampleData}}"
718
+ dataKeys="{['value']}"
719
+ hideTooltip="true"
720
+ width="600px"
721
+ height="400px"
722
+ />
723
+ `);
724
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
725
+ yield page.locator(chartElementsSelector).first().hover();
726
+ yield (0, fixtures_1.expect)(page.locator(tooltipSelector)).not.toBeVisible();
727
+ }));
728
+ (0, fixtures_1.test)("shows tooltip when hideTooltip is false", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
729
+ yield initTestBed(`
730
+ <AreaChart
731
+ nameKey="name"
732
+ data="{${sampleData}}"
733
+ dataKeys="{['value']}"
734
+ hideTooltip="false"
735
+ width="600px"
736
+ height="400px"
737
+ />
738
+ `);
739
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
740
+ yield page.locator(chartElementsSelector).first().hover();
741
+ yield (0, fixtures_1.expect)(page.locator(tooltipSelector)).toBeVisible();
742
+ }));
743
+ });
744
+ fixtures_1.test.describe("showLegend prop", () => {
745
+ (0, fixtures_1.test)("hides legend by default", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
746
+ yield initTestBed(`
747
+ <AreaChart
748
+ nameKey="name"
749
+ data="{${sampleData}}"
750
+ dataKeys="{['value', 'category']}"
751
+ width="600px"
752
+ height="400px"
753
+ />
754
+ `);
755
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
756
+ yield (0, fixtures_1.expect)(page.locator(legendSelector)).not.toBeVisible();
757
+ }));
758
+ (0, fixtures_1.test)("shows legend when showLegend is true", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
759
+ yield initTestBed(`
760
+ <AreaChart
761
+ nameKey="name"
762
+ data="{${sampleData}}"
763
+ dataKeys="{['value', 'category']}"
764
+ showLegend="true"
765
+ width="600px"
766
+ height="400px"
767
+ />
768
+ `);
769
+ yield page.waitForSelector(legendSelector, { timeout: 10000 });
770
+ yield (0, fixtures_1.expect)(page.locator(legendSelector)).toBeVisible();
771
+ }));
772
+ (0, fixtures_1.test)("hides legend when showLegend is false", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
773
+ yield initTestBed(`
774
+ <AreaChart
775
+ nameKey="name"
776
+ data="{${sampleData}}"
777
+ dataKeys="{['value', 'category']}"
778
+ showLegend="false"
779
+ width="600px"
780
+ height="400px"
781
+ />
782
+ `);
783
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
784
+ yield (0, fixtures_1.expect)(page.locator(legendSelector)).not.toBeVisible();
785
+ }));
786
+ });
787
+ fixtures_1.test.describe("stacked prop", () => {
788
+ (0, fixtures_1.test)("areas are not stacked by default", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
789
+ yield initTestBed(`
790
+ <AreaChart
791
+ nameKey="name"
792
+ data="{${sampleData}}"
793
+ dataKeys="{['value', 'category']}"
794
+ width="600px"
795
+ height="400px"
796
+ />
797
+ `);
798
+ yield page.waitForSelector(chartElementsSelector, { timeout: 10000 });
799
+ yield (0, fixtures_1.expect)(page.locator(chartElementsSelector)).toHaveCount(2);
800
+ }));
801
+ (0, fixtures_1.test)("stacks areas when stacked is true", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
802
+ yield initTestBed(`
803
+ <AreaChart
804
+ nameKey="name"
805
+ data="{${sampleData}}"
806
+ dataKeys="{['value', 'category']}"
807
+ stacked="true"
808
+ width="600px"
809
+ height="400px"
810
+ />
811
+ `);
812
+ yield page.waitForSelector(chartElementsSelector, { timeout: 10000 });
813
+ yield (0, fixtures_1.expect)(page.locator(chartElementsSelector)).toHaveCount(2);
814
+ }));
815
+ (0, fixtures_1.test)("does not stack when stacked is false", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
816
+ yield initTestBed(`
817
+ <AreaChart
818
+ nameKey="name"
819
+ data="{${sampleData}}"
820
+ dataKeys="{['value', 'category']}"
821
+ stacked="false"
822
+ width="600px"
823
+ height="400px"
824
+ />
825
+ `);
826
+ yield page.waitForSelector(chartElementsSelector, { timeout: 10000 });
827
+ yield (0, fixtures_1.expect)(page.locator(chartElementsSelector)).toHaveCount(2);
828
+ }));
829
+ });
830
+ fixtures_1.test.describe("curved prop", () => {
831
+ (0, fixtures_1.test)("areas are linear by default", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
832
+ yield initTestBed(`
833
+ <AreaChart
834
+ nameKey="name"
835
+ data="{${sampleData}}"
836
+ dataKeys="{['value']}"
837
+ width="600px"
838
+ height="400px"
839
+ />
840
+ `);
841
+ yield page.waitForSelector(chartElementsSelector, { timeout: 10000 });
842
+ yield (0, fixtures_1.expect)(page.locator(chartElementsSelector)).toBeVisible();
843
+ }));
844
+ (0, fixtures_1.test)("curves areas when curved is true", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
845
+ yield initTestBed(`
846
+ <AreaChart
847
+ nameKey="name"
848
+ data="{${sampleData}}"
849
+ dataKeys="{['value']}"
850
+ curved="true"
851
+ width="600px"
852
+ height="400px"
853
+ />
854
+ `);
855
+ yield page.waitForSelector(chartElementsSelector, { timeout: 10000 });
856
+ yield (0, fixtures_1.expect)(page.locator(chartElementsSelector)).toBeVisible();
857
+ }));
858
+ (0, fixtures_1.test)("keeps areas linear when curved is false", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
859
+ yield initTestBed(`
860
+ <AreaChart
861
+ nameKey="name"
862
+ data="{${sampleData}}"
863
+ dataKeys="{['value']}"
864
+ curved="false"
865
+ width="600px"
866
+ height="400px"
867
+ />
868
+ `);
869
+ yield page.waitForSelector(chartElementsSelector, { timeout: 10000 });
870
+ yield (0, fixtures_1.expect)(page.locator(chartElementsSelector)).toBeVisible();
871
+ }));
872
+ });
873
+ fixtures_1.test.describe("tickFormatter props", () => {
874
+ (0, fixtures_1.test)("applies custom X-axis tick formatter", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
875
+ yield initTestBed(`
876
+ <AreaChart
877
+ nameKey="name"
878
+ data="{${sampleData}}"
879
+ dataKeys="{['value']}"
880
+ tickFormatterX="{(value) => 'X-' + value}"
881
+ width="600px"
882
+ height="400px"
883
+ />
884
+ `);
885
+ yield page.waitForSelector(xTicksSelector, { timeout: 10000 });
886
+ const firstTick = page.locator(xTicksSelector).first();
887
+ yield (0, fixtures_1.expect)(firstTick).toContainText("X-");
888
+ }));
889
+ (0, fixtures_1.test)("applies custom Y-axis tick formatter", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
890
+ yield initTestBed(`
891
+ <AreaChart
892
+ nameKey="name"
893
+ data="{${sampleData}}"
894
+ dataKeys="{['value']}"
895
+ tickFormatterY="{(value) => value + '%'}"
896
+ width="600px"
897
+ height="400px"
898
+ />
899
+ `);
900
+ yield page.waitForSelector(yTicksSelector, { timeout: 10000 });
901
+ const firstTick = page.locator(yTicksSelector).first();
902
+ yield (0, fixtures_1.expect)(firstTick).toContainText("%");
903
+ }));
904
+ (0, fixtures_1.test)("works without tick formatters", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
905
+ yield initTestBed(`
906
+ <AreaChart
907
+ nameKey="name"
908
+ data="{${sampleData}}"
909
+ dataKeys="{['value']}"
910
+ width="600px"
911
+ height="400px"
912
+ />
913
+ `);
914
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
915
+ yield page.waitForSelector(xAxisSelector, { timeout: 5000 });
916
+ yield page.waitForSelector(yAxisSelector, { timeout: 5000 });
917
+ yield page.waitForTimeout(1000);
918
+ const xTicks = page.locator(xTicksSelector);
919
+ const yTicks = page.locator(yTicksSelector);
920
+ yield (0, fixtures_1.expect)(xTicks.first()).toBeVisible();
921
+ yield (0, fixtures_1.expect)(yTicks.first()).toBeVisible();
922
+ }));
923
+ });
924
+ fixtures_1.test.describe("combined props", () => {
925
+ (0, fixtures_1.test)("all visual props combined", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
926
+ yield initTestBed(`
927
+ <AreaChart
928
+ nameKey="month"
929
+ data="{${multiSeriesData}}"
930
+ dataKeys="{['sales', 'profit']}"
931
+ stacked="true"
932
+ curved="true"
933
+ showLegend="true"
934
+ hideTickX="true"
935
+ hideTickY="true"
936
+ width="600px"
937
+ height="400px"
938
+ />
939
+ `);
940
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
941
+ yield (0, fixtures_1.expect)(page.locator(chartElementsSelector)).toHaveCount(2);
942
+ yield (0, fixtures_1.expect)(page.locator(legendSelector)).toBeVisible();
943
+ yield (0, fixtures_1.expect)(page.locator(xTicksSelector)).not.toBeVisible();
944
+ yield (0, fixtures_1.expect)(page.locator(yTicksSelector)).not.toBeVisible();
945
+ }));
946
+ (0, fixtures_1.test)("minimal configuration", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
947
+ yield initTestBed(`
948
+ <AreaChart
949
+ nameKey="name"
950
+ data="{${sampleData}}"
951
+ dataKeys="{['value']}"
952
+ hideX="true"
953
+ hideY="true"
954
+ hideTooltip="true"
955
+ width="600px"
956
+ height="400px"
957
+ />
958
+ `);
959
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
960
+ yield (0, fixtures_1.expect)(page.locator(chartElementsSelector)).toHaveCount(1);
961
+ yield (0, fixtures_1.expect)(page.locator(xAxisSelector)).not.toBeVisible();
962
+ yield (0, fixtures_1.expect)(page.locator(yAxisSelector)).not.toBeVisible();
963
+ }));
964
+ (0, fixtures_1.test)("maximum configuration", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
965
+ yield initTestBed(`
966
+ <AreaChart
967
+ nameKey="month"
968
+ data="{${multiSeriesData}}"
969
+ dataKeys="{['sales', 'profit', 'expenses']}"
970
+ stacked="true"
971
+ curved="true"
972
+ showLegend="true"
973
+ hideX="false"
974
+ hideY="false"
975
+ hideTickX="false"
976
+ hideTickY="false"
977
+ hideTooltip="false"
978
+ tickFormatterX="{(value) => 'Month: ' + value}"
979
+ tickFormatterY="{(value) => '$' + value}"
980
+ width="600px"
981
+ height="400px"
982
+ />
983
+ `);
984
+ yield page.waitForSelector(chartRoot, { timeout: 10000 });
985
+ yield page.waitForSelector(chartElementsSelector, { timeout: 5000 });
986
+ yield (0, fixtures_1.expect)(page.locator(chartElementsSelector)).toHaveCount(3);
987
+ yield page.waitForSelector(legendSelector, { timeout: 5000 });
988
+ yield (0, fixtures_1.expect)(page.locator(legendSelector)).toBeVisible();
989
+ yield page.waitForSelector(xAxisSelector, { timeout: 5000 });
990
+ yield page.waitForSelector(yAxisSelector, { timeout: 5000 });
991
+ yield (0, fixtures_1.expect)(page.locator(xAxisSelector)).toBeVisible();
992
+ yield (0, fixtures_1.expect)(page.locator(yAxisSelector)).toBeVisible();
993
+ yield page.waitForTimeout(1000);
994
+ const xTicks = page.locator(xTicksSelector);
995
+ const yTicks = page.locator(yTicksSelector);
996
+ yield (0, fixtures_1.expect)(xTicks.first()).toBeVisible();
997
+ yield (0, fixtures_1.expect)(yTicks.first()).toBeVisible();
998
+ }));
999
+ });