@getmicdrop/svelte-components 2.0.5 → 2.0.6

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 (106) hide show
  1. package/dist/components/Alert/Alert.spec.js +170 -170
  2. package/dist/components/Badges/Badge.spec.js +103 -103
  3. package/dist/components/BottomSheet/BottomSheet.spec.js +127 -127
  4. package/dist/components/Breadcrumb/Breadcrumb.spec.js +120 -120
  5. package/dist/components/Button/Button.spec.js +211 -211
  6. package/dist/components/Button/ButtonSaveDemo.spec.js +48 -48
  7. package/dist/components/Calendar/Calendar.spec.js +131 -131
  8. package/dist/components/Calendar/QuarterView.spec.js +394 -394
  9. package/dist/components/Card.spec.js +47 -47
  10. package/dist/components/CropImage/CropImage.spec.js +216 -216
  11. package/dist/components/DarkModeToggle.spec.js +357 -357
  12. package/dist/components/ErrorDisplay.spec.js +69 -69
  13. package/dist/components/FormActions.spec.js +88 -88
  14. package/dist/components/FormValidationSummary.spec.js +203 -203
  15. package/dist/components/Icons/Icon.spec.js +175 -175
  16. package/dist/components/Icons/MoreHori.spec.js +67 -67
  17. package/dist/components/Icons/WarningIcon.spec.js +30 -30
  18. package/dist/components/Input/Input.spec.js +573 -573
  19. package/dist/components/Input/MultiSelect.spec.js +257 -257
  20. package/dist/components/Input/OTPInput.spec.js +238 -238
  21. package/dist/components/Input/Select.spec.js +218 -218
  22. package/dist/components/Layout/BottomNav.spec.js +130 -130
  23. package/dist/components/Layout/Header.spec.js +203 -203
  24. package/dist/components/Modal/ConfirmationModal.spec.js +191 -191
  25. package/dist/components/Modal/Modal.spec.js +95 -95
  26. package/dist/components/Modal/ModalStateManager.spec.js +100 -100
  27. package/dist/components/PageLoader.spec.js +54 -54
  28. package/dist/components/PasswordStrengthIndicator/PasswordStrengthIndicator.spec.js +173 -173
  29. package/dist/components/PlaceAutocomplete/PlaceAutocomplete.spec.js +300 -300
  30. package/dist/components/Spinner/Spinner.spec.js +75 -75
  31. package/dist/components/StatusIndicator/StatusIndicator.spec.js +129 -129
  32. package/dist/components/Toggle.spec.js +158 -158
  33. package/dist/components/ValidationError.spec.js +79 -79
  34. package/dist/components/pages/performers/AvailabilityCalendarModal.spec.js +606 -606
  35. package/dist/components/pages/performers/AvailabilityCalendarModal.svelte +4 -4
  36. package/dist/components/pages/performers/ModalShowInfo.spec.js +124 -124
  37. package/dist/components/pages/performers/ModalShowInfo.svelte +1 -1
  38. package/dist/components/pages/performers/PageBackButton.spec.js +89 -89
  39. package/dist/components/pages/performers/SectionHeader.spec.js +75 -75
  40. package/dist/components/pages/performers/ShowDetails.spec.js +166 -166
  41. package/dist/components/pages/performers/ShowItemCard.spec.js +793 -793
  42. package/dist/components/pages/performers/ShowItemCard.svelte +4 -4
  43. package/dist/components/pages/performers/SwitchOption.spec.js +127 -127
  44. package/dist/components/pages/performers/VenueInfo.spec.js +167 -167
  45. package/dist/components/pages/performers/VenueInfo.svelte +1 -1
  46. package/dist/components/pages/performers/VenueItemCard.spec.js +763 -763
  47. package/dist/components/pages/performers/VenueItemCard.svelte +4 -4
  48. package/dist/components/pages/profile/profile-form.spec.js +9 -9
  49. package/dist/components/pages/settings/tabs/CustomImageDropzone.svelte +3 -3
  50. package/dist/components/pages/shows/ShowList.spec.js +33 -33
  51. package/dist/components/pages/shows/TabContent.spec.js +90 -90
  52. package/dist/components/pages/shows/TabNavigation.spec.js +143 -143
  53. package/dist/config.js +5 -5
  54. package/dist/config.spec.js +29 -29
  55. package/dist/constants/formOptions.js +25 -25
  56. package/dist/constants/formOptions.spec.js +88 -88
  57. package/dist/index.js +111 -111
  58. package/dist/stores/auth.d.ts +9 -0
  59. package/dist/stores/auth.d.ts.map +1 -0
  60. package/dist/stores/auth.js +36 -0
  61. package/dist/stores/auth.spec.d.ts +2 -0
  62. package/dist/stores/auth.spec.d.ts.map +1 -0
  63. package/dist/stores/auth.spec.js +139 -0
  64. package/dist/stores/formDataStore.d.ts +17 -0
  65. package/dist/stores/formDataStore.d.ts.map +1 -0
  66. package/dist/stores/formDataStore.js +25 -0
  67. package/dist/stores/formDataStore.spec.d.ts +2 -0
  68. package/dist/stores/formDataStore.spec.d.ts.map +1 -0
  69. package/dist/stores/formDataStore.spec.js +257 -0
  70. package/dist/stores/formSave.d.ts +24 -0
  71. package/dist/stores/formSave.d.ts.map +1 -0
  72. package/dist/stores/formSave.js +132 -0
  73. package/dist/stores/formSave.spec.d.ts +2 -0
  74. package/dist/stores/formSave.spec.d.ts.map +1 -0
  75. package/dist/stores/formSave.spec.js +296 -0
  76. package/dist/stores/index.d.ts +1 -0
  77. package/dist/stores/index.d.ts.map +1 -0
  78. package/dist/stores/index.js +0 -0
  79. package/dist/stores/navigation.d.ts +5 -0
  80. package/dist/stores/navigation.d.ts.map +1 -0
  81. package/dist/stores/navigation.js +12 -0
  82. package/dist/stores/navigation.spec.d.ts +2 -0
  83. package/dist/stores/navigation.spec.d.ts.map +1 -0
  84. package/dist/stores/navigation.spec.js +136 -0
  85. package/dist/stores/toaster.d.ts +4 -0
  86. package/dist/stores/toaster.d.ts.map +1 -0
  87. package/dist/stores/toaster.js +13 -0
  88. package/dist/stores/toaster.spec.d.ts +2 -0
  89. package/dist/stores/toaster.spec.d.ts.map +1 -0
  90. package/dist/stores/toaster.spec.js +59 -0
  91. package/dist/telemetry.js +357 -357
  92. package/dist/telemetry.server.js +211 -211
  93. package/dist/telemetry.server.spec.js +434 -434
  94. package/dist/telemetry.spec.js +660 -660
  95. package/dist/utils/apiConfig.js +49 -49
  96. package/dist/utils/apiConfig.spec.js +118 -118
  97. package/dist/utils/greetings.js +187 -187
  98. package/dist/utils/greetings.spec.js +337 -337
  99. package/dist/utils/imageValidation.js +121 -121
  100. package/dist/utils/imageValidation.spec.js +220 -220
  101. package/dist/utils/portal.js +25 -25
  102. package/dist/utils/portal.spec.js +143 -143
  103. package/dist/utils/utils/utils.js +323 -323
  104. package/dist/utils/utils/utils.spec.js +698 -698
  105. package/dist/utils/utils.spec.js +643 -643
  106. package/package.json +1 -1
@@ -1,218 +1,218 @@
1
- import { render, screen, fireEvent } from "@testing-library/svelte";
2
- import userEvent from "@testing-library/user-event";
3
- import { expect, describe, test, vi } from "vitest";
4
- import Select from "./Select.svelte";
5
-
6
- const sampleItems = [
7
- { name: "Option 1", value: "opt1" },
8
- { name: "Option 2", value: "opt2" },
9
- { name: "Option 3", value: "opt3" },
10
- ];
11
-
12
- function setupTest(args = {}) {
13
- const user = userEvent.setup();
14
- const { component } = render(Select, {
15
- props: {
16
- items: sampleItems,
17
- ...args,
18
- },
19
- });
20
- return { user, component };
21
- }
22
-
23
- describe("Select Component Tests", () => {
24
- test("Renders select with label", () => {
25
- setupTest({
26
- label: "Test Label",
27
- id: "test-select",
28
- });
29
- expect(screen.getByText("Test Label")).toBeInTheDocument();
30
- });
31
-
32
- test("Shows placeholder when no value selected", () => {
33
- setupTest({
34
- placeholder: "Select an option",
35
- });
36
- expect(screen.getByText("Select an option")).toBeInTheDocument();
37
- });
38
-
39
- test("Opens dropdown on click", async () => {
40
- const { user } = setupTest();
41
- const trigger = screen.getByRole("button");
42
-
43
- await user.click(trigger);
44
-
45
- expect(screen.getByRole("listbox")).toBeInTheDocument();
46
- expect(screen.getByText("Option 1")).toBeInTheDocument();
47
- expect(screen.getByText("Option 2")).toBeInTheDocument();
48
- expect(screen.getByText("Option 3")).toBeInTheDocument();
49
- });
50
-
51
- test("Selects item on click", async () => {
52
- const { user } = setupTest();
53
- const trigger = screen.getByRole("button");
54
-
55
- await user.click(trigger);
56
- await user.click(screen.getByText("Option 2"));
57
-
58
- expect(screen.getByText("Option 2")).toBeInTheDocument();
59
- expect(screen.queryByRole("listbox")).not.toBeInTheDocument();
60
- });
61
-
62
- test("Closes dropdown after selection", async () => {
63
- const { user } = setupTest();
64
- const trigger = screen.getByRole("button");
65
-
66
- await user.click(trigger);
67
- await user.click(screen.getByText("Option 1"));
68
-
69
- expect(screen.queryByRole("listbox")).not.toBeInTheDocument();
70
- });
71
-
72
- test("Shows selected value", () => {
73
- setupTest({
74
- value: "opt2",
75
- });
76
- expect(screen.getByText("Option 2")).toBeInTheDocument();
77
- });
78
-
79
- test("Dispatches change event on selection", async () => {
80
- const { user, component } = setupTest();
81
- const changeSpy = vi.fn();
82
- component.$on("change", changeSpy);
83
-
84
- const trigger = screen.getByRole("button");
85
- await user.click(trigger);
86
- await user.click(screen.getByText("Option 3"));
87
-
88
- expect(changeSpy).toHaveBeenCalled();
89
- expect(changeSpy.mock.calls[0][0].detail).toEqual({
90
- value: "opt3",
91
- item: { name: "Option 3", value: "opt3" },
92
- });
93
- });
94
-
95
- test("Shows required indicator when required", () => {
96
- setupTest({
97
- label: "Required Field",
98
- required: true,
99
- });
100
- expect(screen.getByText("*")).toBeInTheDocument();
101
- });
102
-
103
- test("Displays error state", () => {
104
- setupTest({
105
- error: "This field is required",
106
- });
107
- expect(screen.getByText("This field is required")).toBeInTheDocument();
108
- });
109
-
110
- test("Disables select when disabled prop is true", async () => {
111
- const { user } = setupTest({
112
- disabled: true,
113
- });
114
- const trigger = screen.getByRole("button");
115
-
116
- expect(trigger).toBeDisabled();
117
- await user.click(trigger);
118
- expect(screen.queryByRole("listbox")).not.toBeInTheDocument();
119
- });
120
-
121
- test("Navigates options with keyboard", async () => {
122
- const { user } = setupTest();
123
- const trigger = screen.getByRole("button");
124
-
125
- await user.click(trigger);
126
- await user.keyboard("{ArrowDown}");
127
- await user.keyboard("{ArrowDown}");
128
- await user.keyboard("{Enter}");
129
-
130
- // Second option should be selected (started at 0, moved down twice)
131
- expect(screen.getByText("Option 2")).toBeInTheDocument();
132
- });
133
-
134
- test("Closes dropdown on Escape key", async () => {
135
- const { user } = setupTest();
136
- const trigger = screen.getByRole("button");
137
-
138
- await user.click(trigger);
139
- expect(screen.getByRole("listbox")).toBeInTheDocument();
140
-
141
- await user.keyboard("{Escape}");
142
- expect(screen.queryByRole("listbox")).not.toBeInTheDocument();
143
- });
144
-
145
- test("Opens dropdown with Enter key", async () => {
146
- const { user } = setupTest();
147
- const trigger = screen.getByRole("button");
148
-
149
- trigger.focus();
150
- await user.keyboard("{Enter}");
151
-
152
- expect(screen.getByRole("listbox")).toBeInTheDocument();
153
- });
154
-
155
- test("Opens dropdown with Space key", async () => {
156
- const { user } = setupTest();
157
- const trigger = screen.getByRole("button");
158
-
159
- trigger.focus();
160
- await user.keyboard(" ");
161
-
162
- expect(screen.getByRole("listbox")).toBeInTheDocument();
163
- });
164
-
165
- test("Applies animate focus class by default", () => {
166
- setupTest();
167
- const trigger = screen.getByRole("button");
168
- expect(trigger).toHaveClass("select-animate-focus");
169
- });
170
-
171
- test("Does not apply animate focus when disabled", () => {
172
- setupTest({
173
- animateFocus: false,
174
- });
175
- const trigger = screen.getByRole("button");
176
- expect(trigger).not.toHaveClass("select-animate-focus");
177
- });
178
-
179
- test("Closes dropdown when clicking outside", async () => {
180
- const { user } = setupTest();
181
- const trigger = screen.getByRole("button");
182
-
183
- await user.click(trigger);
184
- expect(screen.getByRole("listbox")).toBeInTheDocument();
185
-
186
- // Click outside by clicking on body
187
- await user.click(document.body);
188
- expect(screen.queryByRole("listbox")).not.toBeInTheDocument();
189
- });
190
-
191
- test("Shows checkmark for selected option", async () => {
192
- const { user } = setupTest({
193
- value: "opt1",
194
- });
195
- const trigger = screen.getByRole("button");
196
-
197
- await user.click(trigger);
198
-
199
- // The selected option should have a checkmark SVG
200
- const options = screen.getAllByRole("option");
201
- const selectedOption = options.find(opt => opt.getAttribute("aria-selected") === "true");
202
- expect(selectedOption).toBeInTheDocument();
203
- expect(selectedOption.querySelector("svg")).toBeInTheDocument();
204
- });
205
-
206
- test("Sets aria-expanded correctly", async () => {
207
- const { user } = setupTest();
208
- const trigger = screen.getByRole("button");
209
-
210
- expect(trigger).toHaveAttribute("aria-expanded", "false");
211
-
212
- await user.click(trigger);
213
- expect(trigger).toHaveAttribute("aria-expanded", "true");
214
-
215
- await user.click(trigger);
216
- expect(trigger).toHaveAttribute("aria-expanded", "false");
217
- });
218
- });
1
+ import { render, screen, fireEvent } from "@testing-library/svelte";
2
+ import userEvent from "@testing-library/user-event";
3
+ import { expect, describe, test, vi } from "vitest";
4
+ import Select from "./Select.svelte";
5
+
6
+ const sampleItems = [
7
+ { name: "Option 1", value: "opt1" },
8
+ { name: "Option 2", value: "opt2" },
9
+ { name: "Option 3", value: "opt3" },
10
+ ];
11
+
12
+ function setupTest(args = {}) {
13
+ const user = userEvent.setup();
14
+ const { component } = render(Select, {
15
+ props: {
16
+ items: sampleItems,
17
+ ...args,
18
+ },
19
+ });
20
+ return { user, component };
21
+ }
22
+
23
+ describe("Select Component Tests", () => {
24
+ test("Renders select with label", () => {
25
+ setupTest({
26
+ label: "Test Label",
27
+ id: "test-select",
28
+ });
29
+ expect(screen.getByText("Test Label")).toBeInTheDocument();
30
+ });
31
+
32
+ test("Shows placeholder when no value selected", () => {
33
+ setupTest({
34
+ placeholder: "Select an option",
35
+ });
36
+ expect(screen.getByText("Select an option")).toBeInTheDocument();
37
+ });
38
+
39
+ test("Opens dropdown on click", async () => {
40
+ const { user } = setupTest();
41
+ const trigger = screen.getByRole("button");
42
+
43
+ await user.click(trigger);
44
+
45
+ expect(screen.getByRole("listbox")).toBeInTheDocument();
46
+ expect(screen.getByText("Option 1")).toBeInTheDocument();
47
+ expect(screen.getByText("Option 2")).toBeInTheDocument();
48
+ expect(screen.getByText("Option 3")).toBeInTheDocument();
49
+ });
50
+
51
+ test("Selects item on click", async () => {
52
+ const { user } = setupTest();
53
+ const trigger = screen.getByRole("button");
54
+
55
+ await user.click(trigger);
56
+ await user.click(screen.getByText("Option 2"));
57
+
58
+ expect(screen.getByText("Option 2")).toBeInTheDocument();
59
+ expect(screen.queryByRole("listbox")).not.toBeInTheDocument();
60
+ });
61
+
62
+ test("Closes dropdown after selection", async () => {
63
+ const { user } = setupTest();
64
+ const trigger = screen.getByRole("button");
65
+
66
+ await user.click(trigger);
67
+ await user.click(screen.getByText("Option 1"));
68
+
69
+ expect(screen.queryByRole("listbox")).not.toBeInTheDocument();
70
+ });
71
+
72
+ test("Shows selected value", () => {
73
+ setupTest({
74
+ value: "opt2",
75
+ });
76
+ expect(screen.getByText("Option 2")).toBeInTheDocument();
77
+ });
78
+
79
+ test("Dispatches change event on selection", async () => {
80
+ const { user, component } = setupTest();
81
+ const changeSpy = vi.fn();
82
+ component.$on("change", changeSpy);
83
+
84
+ const trigger = screen.getByRole("button");
85
+ await user.click(trigger);
86
+ await user.click(screen.getByText("Option 3"));
87
+
88
+ expect(changeSpy).toHaveBeenCalled();
89
+ expect(changeSpy.mock.calls[0][0].detail).toEqual({
90
+ value: "opt3",
91
+ item: { name: "Option 3", value: "opt3" },
92
+ });
93
+ });
94
+
95
+ test("Shows required indicator when required", () => {
96
+ setupTest({
97
+ label: "Required Field",
98
+ required: true,
99
+ });
100
+ expect(screen.getByText("*")).toBeInTheDocument();
101
+ });
102
+
103
+ test("Displays error state", () => {
104
+ setupTest({
105
+ error: "This field is required",
106
+ });
107
+ expect(screen.getByText("This field is required")).toBeInTheDocument();
108
+ });
109
+
110
+ test("Disables select when disabled prop is true", async () => {
111
+ const { user } = setupTest({
112
+ disabled: true,
113
+ });
114
+ const trigger = screen.getByRole("button");
115
+
116
+ expect(trigger).toBeDisabled();
117
+ await user.click(trigger);
118
+ expect(screen.queryByRole("listbox")).not.toBeInTheDocument();
119
+ });
120
+
121
+ test("Navigates options with keyboard", async () => {
122
+ const { user } = setupTest();
123
+ const trigger = screen.getByRole("button");
124
+
125
+ await user.click(trigger);
126
+ await user.keyboard("{ArrowDown}");
127
+ await user.keyboard("{ArrowDown}");
128
+ await user.keyboard("{Enter}");
129
+
130
+ // Second option should be selected (started at 0, moved down twice)
131
+ expect(screen.getByText("Option 2")).toBeInTheDocument();
132
+ });
133
+
134
+ test("Closes dropdown on Escape key", async () => {
135
+ const { user } = setupTest();
136
+ const trigger = screen.getByRole("button");
137
+
138
+ await user.click(trigger);
139
+ expect(screen.getByRole("listbox")).toBeInTheDocument();
140
+
141
+ await user.keyboard("{Escape}");
142
+ expect(screen.queryByRole("listbox")).not.toBeInTheDocument();
143
+ });
144
+
145
+ test("Opens dropdown with Enter key", async () => {
146
+ const { user } = setupTest();
147
+ const trigger = screen.getByRole("button");
148
+
149
+ trigger.focus();
150
+ await user.keyboard("{Enter}");
151
+
152
+ expect(screen.getByRole("listbox")).toBeInTheDocument();
153
+ });
154
+
155
+ test("Opens dropdown with Space key", async () => {
156
+ const { user } = setupTest();
157
+ const trigger = screen.getByRole("button");
158
+
159
+ trigger.focus();
160
+ await user.keyboard(" ");
161
+
162
+ expect(screen.getByRole("listbox")).toBeInTheDocument();
163
+ });
164
+
165
+ test("Applies animate focus class by default", () => {
166
+ setupTest();
167
+ const trigger = screen.getByRole("button");
168
+ expect(trigger).toHaveClass("select-animate-focus");
169
+ });
170
+
171
+ test("Does not apply animate focus when disabled", () => {
172
+ setupTest({
173
+ animateFocus: false,
174
+ });
175
+ const trigger = screen.getByRole("button");
176
+ expect(trigger).not.toHaveClass("select-animate-focus");
177
+ });
178
+
179
+ test("Closes dropdown when clicking outside", async () => {
180
+ const { user } = setupTest();
181
+ const trigger = screen.getByRole("button");
182
+
183
+ await user.click(trigger);
184
+ expect(screen.getByRole("listbox")).toBeInTheDocument();
185
+
186
+ // Click outside by clicking on body
187
+ await user.click(document.body);
188
+ expect(screen.queryByRole("listbox")).not.toBeInTheDocument();
189
+ });
190
+
191
+ test("Shows checkmark for selected option", async () => {
192
+ const { user } = setupTest({
193
+ value: "opt1",
194
+ });
195
+ const trigger = screen.getByRole("button");
196
+
197
+ await user.click(trigger);
198
+
199
+ // The selected option should have a checkmark SVG
200
+ const options = screen.getAllByRole("option");
201
+ const selectedOption = options.find(opt => opt.getAttribute("aria-selected") === "true");
202
+ expect(selectedOption).toBeInTheDocument();
203
+ expect(selectedOption.querySelector("svg")).toBeInTheDocument();
204
+ });
205
+
206
+ test("Sets aria-expanded correctly", async () => {
207
+ const { user } = setupTest();
208
+ const trigger = screen.getByRole("button");
209
+
210
+ expect(trigger).toHaveAttribute("aria-expanded", "false");
211
+
212
+ await user.click(trigger);
213
+ expect(trigger).toHaveAttribute("aria-expanded", "true");
214
+
215
+ await user.click(trigger);
216
+ expect(trigger).toHaveAttribute("aria-expanded", "false");
217
+ });
218
+ });