@simplysm/solid 13.0.72 → 13.0.74

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 (210) hide show
  1. package/README.md +209 -202
  2. package/dist/components/data/calendar/Calendar.d.ts.map +1 -1
  3. package/dist/components/data/calendar/Calendar.js +3 -11
  4. package/dist/components/data/calendar/Calendar.js.map +2 -2
  5. package/dist/components/data/sheet/DataSheet.js +10 -10
  6. package/dist/components/data/sheet/DataSheet.js.map +2 -2
  7. package/dist/components/data/sheet/DataSheetConfigDialog.d.ts.map +1 -1
  8. package/dist/components/data/sheet/DataSheetConfigDialog.js +27 -9
  9. package/dist/components/data/sheet/DataSheetConfigDialog.js.map +2 -2
  10. package/dist/components/disclosure/Dialog.d.ts +1 -1
  11. package/dist/components/disclosure/Dialog.d.ts.map +1 -1
  12. package/dist/components/disclosure/Dialog.js +5 -5
  13. package/dist/components/disclosure/Dialog.js.map +2 -2
  14. package/dist/components/disclosure/dialogZIndex.d.ts +1 -1
  15. package/dist/components/features/crud-detail/CrudDetail.js +23 -23
  16. package/dist/components/features/crud-detail/CrudDetail.js.map +2 -2
  17. package/dist/components/features/crud-sheet/CrudSheet.js +49 -49
  18. package/dist/components/features/crud-sheet/CrudSheet.js.map +2 -2
  19. package/dist/components/features/crud-sheet/types.d.ts +4 -4
  20. package/dist/components/features/crud-sheet/types.d.ts.map +1 -1
  21. package/dist/components/features/data-select-button/DataSelectButton.d.ts +25 -7
  22. package/dist/components/features/data-select-button/DataSelectButton.d.ts.map +1 -1
  23. package/dist/components/features/data-select-button/DataSelectButton.js +27 -12
  24. package/dist/components/features/data-select-button/DataSelectButton.js.map +2 -2
  25. package/dist/components/features/permission-table/PermissionTable.js +4 -4
  26. package/dist/components/features/permission-table/PermissionTable.js.map +2 -2
  27. package/dist/components/features/shared-data/SharedDataSelect.d.ts +22 -10
  28. package/dist/components/features/shared-data/SharedDataSelect.d.ts.map +1 -1
  29. package/dist/components/features/shared-data/SharedDataSelect.js +113 -29
  30. package/dist/components/features/shared-data/SharedDataSelect.js.map +2 -2
  31. package/dist/components/features/shared-data/SharedDataSelectButton.d.ts +3 -3
  32. package/dist/components/features/shared-data/SharedDataSelectButton.d.ts.map +1 -1
  33. package/dist/components/features/shared-data/SharedDataSelectButton.js.map +1 -1
  34. package/dist/components/features/shared-data/SharedDataSelectList.js +5 -4
  35. package/dist/components/features/shared-data/SharedDataSelectList.js.map +2 -2
  36. package/dist/components/feedback/notification/NotificationBanner.js +3 -3
  37. package/dist/components/feedback/notification/NotificationBanner.js.map +2 -2
  38. package/dist/components/feedback/notification/NotificationBell.d.ts.map +1 -1
  39. package/dist/components/feedback/notification/NotificationBell.js +12 -5
  40. package/dist/components/feedback/notification/NotificationBell.js.map +2 -2
  41. package/dist/components/feedback/notification/NotificationProvider.d.ts.map +1 -1
  42. package/dist/components/feedback/notification/NotificationProvider.js +3 -1
  43. package/dist/components/feedback/notification/NotificationProvider.js.map +2 -2
  44. package/dist/components/form-control/ThemeToggle.d.ts.map +1 -1
  45. package/dist/components/form-control/ThemeToggle.js +9 -6
  46. package/dist/components/form-control/ThemeToggle.js.map +2 -2
  47. package/dist/components/form-control/checkbox/Checkbox.d.ts.map +1 -1
  48. package/dist/components/form-control/checkbox/Checkbox.js +3 -1
  49. package/dist/components/form-control/checkbox/Checkbox.js.map +2 -2
  50. package/dist/components/form-control/checkbox/CheckboxGroup.js +1 -1
  51. package/dist/components/form-control/checkbox/CheckboxGroup.js.map +2 -2
  52. package/dist/components/form-control/checkbox/Radio.d.ts.map +1 -1
  53. package/dist/components/form-control/checkbox/Radio.js +3 -1
  54. package/dist/components/form-control/checkbox/Radio.js.map +2 -2
  55. package/dist/components/form-control/checkbox/RadioGroup.js +1 -1
  56. package/dist/components/form-control/checkbox/RadioGroup.js.map +2 -2
  57. package/dist/components/form-control/color-picker/ColorPicker.d.ts.map +1 -1
  58. package/dist/components/form-control/color-picker/ColorPicker.js +3 -1
  59. package/dist/components/form-control/color-picker/ColorPicker.js.map +2 -2
  60. package/dist/components/form-control/combobox/Combobox.d.ts.map +1 -1
  61. package/dist/components/form-control/combobox/Combobox.js +9 -5
  62. package/dist/components/form-control/combobox/Combobox.js.map +2 -2
  63. package/dist/components/form-control/date-range-picker/DateRangePicker.js +9 -9
  64. package/dist/components/form-control/date-range-picker/DateRangePicker.js.map +2 -2
  65. package/dist/components/form-control/editor/EditorToolbar.js +3 -3
  66. package/dist/components/form-control/editor/EditorToolbar.js.map +2 -2
  67. package/dist/components/form-control/field/DatePicker.d.ts.map +1 -1
  68. package/dist/components/form-control/field/DatePicker.js +9 -3
  69. package/dist/components/form-control/field/DatePicker.js.map +2 -2
  70. package/dist/components/form-control/field/DateTimePicker.d.ts.map +1 -1
  71. package/dist/components/form-control/field/DateTimePicker.js +9 -3
  72. package/dist/components/form-control/field/DateTimePicker.js.map +2 -2
  73. package/dist/components/form-control/field/NumberInput.d.ts.map +1 -1
  74. package/dist/components/form-control/field/NumberInput.js +9 -3
  75. package/dist/components/form-control/field/NumberInput.js.map +2 -2
  76. package/dist/components/form-control/field/TextInput.d.ts.map +1 -1
  77. package/dist/components/form-control/field/TextInput.js +10 -4
  78. package/dist/components/form-control/field/TextInput.js.map +2 -2
  79. package/dist/components/form-control/field/Textarea.d.ts.map +1 -1
  80. package/dist/components/form-control/field/Textarea.js +9 -3
  81. package/dist/components/form-control/field/Textarea.js.map +2 -2
  82. package/dist/components/form-control/field/TimePicker.d.ts.map +1 -1
  83. package/dist/components/form-control/field/TimePicker.js +9 -3
  84. package/dist/components/form-control/field/TimePicker.js.map +2 -2
  85. package/dist/components/form-control/numpad/Numpad.d.ts.map +1 -1
  86. package/dist/components/form-control/numpad/Numpad.js +5 -1
  87. package/dist/components/form-control/numpad/Numpad.js.map +2 -2
  88. package/dist/components/form-control/select/Select.js +7 -7
  89. package/dist/components/form-control/select/Select.js.map +2 -2
  90. package/dist/components/form-control/state-preset/StatePreset.d.ts.map +1 -1
  91. package/dist/components/form-control/state-preset/StatePreset.js +42 -20
  92. package/dist/components/form-control/state-preset/StatePreset.js.map +2 -2
  93. package/dist/components/layout/sidebar/SidebarContainer.js +3 -3
  94. package/dist/components/layout/sidebar/SidebarContainer.js.map +2 -2
  95. package/dist/components/layout/sidebar/SidebarMenu.d.ts.map +1 -1
  96. package/dist/components/layout/sidebar/SidebarMenu.js +5 -2
  97. package/dist/components/layout/sidebar/SidebarMenu.js.map +2 -2
  98. package/dist/components/layout/topbar/Topbar.js +3 -4
  99. package/dist/components/layout/topbar/Topbar.js.map +2 -2
  100. package/dist/components/layout/topbar/TopbarMenu.js +3 -3
  101. package/dist/components/layout/topbar/TopbarMenu.js.map +2 -2
  102. package/dist/hooks/createSelectionGroup.d.ts +2 -2
  103. package/dist/hooks/createSelectionGroup.d.ts.map +1 -1
  104. package/dist/hooks/createSelectionGroup.js +5 -2
  105. package/dist/hooks/createSelectionGroup.js.map +2 -2
  106. package/dist/providers/i18n/I18nContext.d.ts +0 -4
  107. package/dist/providers/i18n/I18nContext.d.ts.map +1 -1
  108. package/dist/providers/i18n/I18nContext.js +1 -5
  109. package/dist/providers/i18n/I18nContext.js.map +2 -2
  110. package/dist/providers/i18n/locales/en.d.ts +38 -0
  111. package/dist/providers/i18n/locales/en.d.ts.map +1 -1
  112. package/dist/providers/i18n/locales/en.js +39 -1
  113. package/dist/providers/i18n/locales/en.js.map +1 -1
  114. package/dist/providers/i18n/locales/ko.d.ts +38 -0
  115. package/dist/providers/i18n/locales/ko.d.ts.map +1 -1
  116. package/dist/providers/i18n/locales/ko.js +39 -1
  117. package/dist/providers/i18n/locales/ko.js.map +1 -1
  118. package/package.json +6 -6
  119. package/src/components/data/calendar/Calendar.tsx +3 -4
  120. package/src/components/data/sheet/DataSheet.tsx +11 -11
  121. package/src/components/data/sheet/DataSheetConfigDialog.tsx +12 -10
  122. package/src/components/data/sheet/types.ts +1 -1
  123. package/src/components/disclosure/Dialog.tsx +10 -10
  124. package/src/components/disclosure/dialogZIndex.ts +1 -1
  125. package/src/components/features/crud-detail/CrudDetail.tsx +25 -25
  126. package/src/components/features/crud-sheet/CrudSheet.tsx +53 -53
  127. package/src/components/features/crud-sheet/types.ts +4 -4
  128. package/src/components/features/data-select-button/DataSelectButton.tsx +51 -21
  129. package/src/components/features/permission-table/PermissionTable.tsx +3 -3
  130. package/src/components/features/shared-data/SharedDataSelect.tsx +172 -33
  131. package/src/components/features/shared-data/SharedDataSelectButton.tsx +3 -2
  132. package/src/components/features/shared-data/SharedDataSelectList.tsx +4 -4
  133. package/src/components/feedback/notification/NotificationBanner.tsx +3 -3
  134. package/src/components/feedback/notification/NotificationBell.tsx +6 -4
  135. package/src/components/feedback/notification/NotificationProvider.tsx +3 -1
  136. package/src/components/form-control/ThemeToggle.tsx +10 -6
  137. package/src/components/form-control/checkbox/Checkbox.tsx +4 -1
  138. package/src/components/form-control/checkbox/CheckboxGroup.tsx +1 -1
  139. package/src/components/form-control/checkbox/Radio.tsx +4 -1
  140. package/src/components/form-control/checkbox/RadioGroup.tsx +1 -1
  141. package/src/components/form-control/color-picker/ColorPicker.tsx +4 -1
  142. package/src/components/form-control/combobox/Combobox.tsx +6 -3
  143. package/src/components/form-control/date-range-picker/DateRangePicker.tsx +8 -8
  144. package/src/components/form-control/editor/EditorToolbar.tsx +23 -23
  145. package/src/components/form-control/field/DatePicker.tsx +6 -3
  146. package/src/components/form-control/field/DateTimePicker.tsx +6 -3
  147. package/src/components/form-control/field/NumberInput.tsx +6 -3
  148. package/src/components/form-control/field/TextInput.tsx +7 -4
  149. package/src/components/form-control/field/Textarea.tsx +6 -3
  150. package/src/components/form-control/field/TimePicker.tsx +6 -3
  151. package/src/components/form-control/numpad/Numpad.tsx +3 -1
  152. package/src/components/form-control/select/Select.tsx +7 -7
  153. package/src/components/form-control/state-preset/StatePreset.tsx +14 -12
  154. package/src/components/layout/sidebar/SidebarContainer.tsx +3 -3
  155. package/src/components/layout/sidebar/SidebarMenu.tsx +3 -1
  156. package/src/components/layout/topbar/Topbar.tsx +3 -3
  157. package/src/components/layout/topbar/TopbarMenu.tsx +3 -3
  158. package/src/hooks/createSelectionGroup.tsx +8 -4
  159. package/src/providers/i18n/I18nContext.tsx +0 -7
  160. package/src/providers/i18n/locales/en.ts +38 -0
  161. package/src/providers/i18n/locales/ko.ts +38 -0
  162. package/tailwind.config.ts +2 -2
  163. package/tests/components/data/kanban/Kanban.selection.spec.tsx +34 -24
  164. package/tests/components/disclosure/Dialog.spec.tsx +28 -28
  165. package/tests/components/disclosure/DialogProvider.spec.tsx +51 -25
  166. package/tests/components/features/address/AddressSearch.spec.tsx +12 -4
  167. package/tests/components/features/crud-detail/CrudDetail.spec.tsx +1 -0
  168. package/tests/components/features/crud-sheet/CrudSheet.spec.tsx +30 -6
  169. package/tests/components/features/data-select-button/DataSelectButton.spec.tsx +77 -56
  170. package/tests/components/features/permission-table/PermissionTable.spec.tsx +12 -8
  171. package/tests/components/features/shared-data/SharedDataSelect.spec.tsx +172 -0
  172. package/tests/components/features/shared-data/SharedDataSelectList.spec.tsx +14 -2
  173. package/tests/components/feedback/notification/LiveRegion.spec.tsx +20 -9
  174. package/tests/components/feedback/notification/NotificationBanner.spec.tsx +64 -46
  175. package/tests/components/feedback/notification/NotificationBell.spec.tsx +70 -51
  176. package/tests/components/feedback/notification/NotificationContext.spec.tsx +105 -78
  177. package/tests/components/form-control/checkbox/Checkbox.spec.tsx +25 -20
  178. package/tests/components/form-control/checkbox/CheckboxGroup.spec.tsx +53 -30
  179. package/tests/components/form-control/checkbox/Radio.spec.tsx +25 -20
  180. package/tests/components/form-control/checkbox/RadioGroup.spec.tsx +53 -30
  181. package/tests/components/form-control/color-picker/ColorPicker.spec.tsx +24 -15
  182. package/tests/components/form-control/combobox/Combobox.spec.tsx +92 -59
  183. package/tests/components/form-control/date-range-picker/DateRangePicker.spec.tsx +2 -2
  184. package/tests/components/form-control/field/DatePicker.spec.tsx +50 -44
  185. package/tests/components/form-control/field/DateTimePicker.spec.tsx +51 -45
  186. package/tests/components/form-control/field/NumberInput.spec.tsx +53 -47
  187. package/tests/components/form-control/field/TextInput.spec.tsx +50 -44
  188. package/tests/components/form-control/field/Textarea.spec.tsx +35 -29
  189. package/tests/components/form-control/field/TimePicker.spec.tsx +43 -37
  190. package/tests/components/form-control/numpad/Numpad.spec.tsx +175 -25
  191. package/tests/components/form-control/select/Select.spec.tsx +5 -0
  192. package/tests/components/form-control/select/SelectItem.spec.tsx +1 -0
  193. package/tests/components/layout/sidebar/Sidebar.spec.tsx +79 -35
  194. package/tests/components/layout/sidebar/SidebarContainer.spec.tsx +1 -0
  195. package/tests/components/layout/sidebar/SidebarMenu.spec.tsx +28 -17
  196. package/tests/components/layout/topbar/TopbarActions.spec.tsx +41 -23
  197. package/tests/components/layout/topbar/createTopbarActions.spec.tsx +1 -0
  198. package/tests/hooks/usePrint.spec.tsx +1 -1
  199. package/tests/hooks/useRouterLink.spec.tsx +2 -0
  200. package/tests/hooks/useSyncConfig.spec.tsx +1 -0
  201. package/tests/providers/ErrorLoggerProvider.spec.tsx +1 -0
  202. package/tests/providers/PwaUpdateProvider.spec.tsx +16 -6
  203. package/tests/providers/ServiceClientContext.spec.tsx +40 -25
  204. package/tests/providers/i18n/I18nContext.spec.tsx +3 -4
  205. package/tests/providers/shared-data/SharedDataProvider.spec.tsx +2 -0
  206. package/dist/hooks/usePrint.d.ts +0 -3
  207. package/dist/hooks/usePrint.d.ts.map +0 -1
  208. package/dist/hooks/usePrint.js +0 -5
  209. package/dist/hooks/usePrint.js.map +0 -6
  210. package/src/hooks/usePrint.ts +0 -2
@@ -1,29 +1,36 @@
1
1
  import { render, fireEvent, waitFor } from "@solidjs/testing-library";
2
2
  import { describe, it, expect, vi, beforeEach } from "vitest";
3
3
  import { Combobox } from "../../../../src/components/form-control/combobox/Combobox";
4
+ import { I18nProvider } from "../../../../src/providers/i18n/I18nContext";
5
+ import { ConfigProvider } from "../../../../src/providers/ConfigContext";
4
6
 
5
7
  describe("Combobox component", () => {
6
8
  const mockLoadItems = vi.fn(() => Promise.resolve([]));
7
9
 
8
10
  beforeEach(() => {
11
+ localStorage.setItem("test.i18n-locale", JSON.stringify("en"));
9
12
  mockLoadItems.mockClear();
10
13
  });
11
14
 
12
15
  describe("basic rendering", () => {
13
16
  it("renders trigger", () => {
14
17
  const { getByRole } = render(() => (
15
- <Combobox loadItems={mockLoadItems} renderValue={(v) => <>{v}</>} />
18
+ <ConfigProvider clientName="test"><I18nProvider>
19
+ <Combobox loadItems={mockLoadItems} renderValue={(v) => <>{v}</>} />
20
+ </I18nProvider></ConfigProvider>
16
21
  ));
17
22
  expect(getByRole("combobox")).not.toBeNull();
18
23
  });
19
24
 
20
25
  it("displays placeholder", () => {
21
26
  const { container } = render(() => (
22
- <Combobox
23
- loadItems={mockLoadItems}
24
- placeholder="검색하세요"
25
- renderValue={(v) => <>{v}</>}
26
- />
27
+ <ConfigProvider clientName="test"><I18nProvider>
28
+ <Combobox
29
+ loadItems={mockLoadItems}
30
+ placeholder="검색하세요"
31
+ renderValue={(v) => <>{v}</>}
32
+ />
33
+ </I18nProvider></ConfigProvider>
27
34
  ));
28
35
  const input = container.querySelector("input");
29
36
  expect(input?.getAttribute("placeholder")).toBe("검색하세요");
@@ -31,7 +38,9 @@ describe("Combobox component", () => {
31
38
 
32
39
  it("defaults input autocomplete to one-time-code", () => {
33
40
  const { container } = render(() => (
34
- <Combobox loadItems={mockLoadItems} renderValue={(v) => <>{v}</>} />
41
+ <ConfigProvider clientName="test"><I18nProvider>
42
+ <Combobox loadItems={mockLoadItems} renderValue={(v) => <>{v}</>} />
43
+ </I18nProvider></ConfigProvider>
35
44
  ));
36
45
  const input = container.querySelector("input") as HTMLInputElement;
37
46
  expect(input.autocomplete).toBe("one-time-code");
@@ -39,7 +48,9 @@ describe("Combobox component", () => {
39
48
 
40
49
  it("sets aria-disabled when disabled", () => {
41
50
  const { getByRole } = render(() => (
42
- <Combobox loadItems={mockLoadItems} disabled renderValue={(v) => <>{v}</>} />
51
+ <ConfigProvider clientName="test"><I18nProvider>
52
+ <Combobox loadItems={mockLoadItems} disabled renderValue={(v) => <>{v}</>} />
53
+ </I18nProvider></ConfigProvider>
43
54
  ));
44
55
  expect(getByRole("combobox").getAttribute("aria-disabled")).toBe("true");
45
56
  });
@@ -49,7 +60,9 @@ describe("Combobox component", () => {
49
60
  it("opens dropdown on input", async () => {
50
61
  const loadItems = vi.fn(() => Promise.resolve([{ id: 1, name: "사과" }]));
51
62
  const { container } = render(() => (
52
- <Combobox loadItems={loadItems} renderValue={(v: { name: string }) => <>{v.name}</>} />
63
+ <ConfigProvider clientName="test"><I18nProvider>
64
+ <Combobox loadItems={loadItems} renderValue={(v: { name: string }) => <>{v.name}</>} />
65
+ </I18nProvider></ConfigProvider>
53
66
  ));
54
67
 
55
68
  const input = container.querySelector("input")!;
@@ -63,7 +76,9 @@ describe("Combobox component", () => {
63
76
  it("closes dropdown when item is selected", async () => {
64
77
  const loadItems = vi.fn(() => Promise.resolve([{ id: 1, name: "사과" }]));
65
78
  const { container, getByRole } = render(() => (
66
- <Combobox loadItems={loadItems} renderValue={(v: { name: string }) => <>{v.name}</>} />
79
+ <ConfigProvider clientName="test"><I18nProvider>
80
+ <Combobox loadItems={loadItems} renderValue={(v: { name: string }) => <>{v.name}</>} />
81
+ </I18nProvider></ConfigProvider>
67
82
  ));
68
83
 
69
84
  const input = container.querySelector("input")!;
@@ -84,7 +99,9 @@ describe("Combobox component", () => {
84
99
  it("closes dropdown with Escape key", async () => {
85
100
  const loadItems = vi.fn(() => Promise.resolve([{ id: 1, name: "사과" }]));
86
101
  const { container, getByRole } = render(() => (
87
- <Combobox loadItems={loadItems} renderValue={(v: { name: string }) => <>{v.name}</>} />
102
+ <ConfigProvider clientName="test"><I18nProvider>
103
+ <Combobox loadItems={loadItems} renderValue={(v: { name: string }) => <>{v.name}</>} />
104
+ </I18nProvider></ConfigProvider>
88
105
  ));
89
106
 
90
107
  const input = container.querySelector("input")!;
@@ -108,11 +125,13 @@ describe("Combobox component", () => {
108
125
  const loadItems = vi.fn(() => Promise.resolve([{ id: 1, name: "사과" }]));
109
126
 
110
127
  const { container } = render(() => (
111
- <Combobox
112
- loadItems={loadItems}
113
- onValueChange={handleChange}
114
- renderValue={(v: { name: string }) => <>{v.name}</>}
115
- />
128
+ <ConfigProvider clientName="test"><I18nProvider>
129
+ <Combobox
130
+ loadItems={loadItems}
131
+ onValueChange={handleChange}
132
+ renderValue={(v: { name: string }) => <>{v.name}</>}
133
+ />
134
+ </I18nProvider></ConfigProvider>
116
135
  ));
117
136
 
118
137
  const input = container.querySelector("input")!;
@@ -134,11 +153,13 @@ describe("Combobox component", () => {
134
153
  const loadItems = vi.fn(() => Promise.resolve([{ id: 1, name: "결과" }]));
135
154
 
136
155
  const { container } = render(() => (
137
- <Combobox
138
- loadItems={loadItems}
139
- debounceMs={50}
140
- renderValue={(v: { name: string }) => <>{v.name}</>}
141
- />
156
+ <ConfigProvider clientName="test"><I18nProvider>
157
+ <Combobox
158
+ loadItems={loadItems}
159
+ debounceMs={50}
160
+ renderValue={(v: { name: string }) => <>{v.name}</>}
161
+ />
162
+ </I18nProvider></ConfigProvider>
142
163
  ));
143
164
 
144
165
  const input = container.querySelector("input")!;
@@ -160,12 +181,14 @@ describe("Combobox component", () => {
160
181
  const loadItems = vi.fn(() => Promise.resolve([]));
161
182
 
162
183
  const { container, getByRole } = render(() => (
163
- <Combobox
164
- loadItems={loadItems}
165
- onValueChange={handleChange}
166
- allowCustomValue
167
- renderValue={(v) => <>{v}</>}
168
- />
184
+ <ConfigProvider clientName="test"><I18nProvider>
185
+ <Combobox
186
+ loadItems={loadItems}
187
+ onValueChange={handleChange}
188
+ allowCustomValue
189
+ renderValue={(v) => <>{v}</>}
190
+ />
191
+ </I18nProvider></ConfigProvider>
169
192
  ));
170
193
 
171
194
  const input = container.querySelector("input")!;
@@ -180,13 +203,15 @@ describe("Combobox component", () => {
180
203
  const loadItems = vi.fn(() => Promise.resolve([]));
181
204
 
182
205
  const { container, getByRole } = render(() => (
183
- <Combobox
184
- loadItems={loadItems}
185
- onValueChange={handleChange}
186
- allowCustomValue
187
- parseCustomValue={(text) => ({ name: text, custom: true })}
188
- renderValue={(v: { name: string }) => <>{v.name}</>}
189
- />
206
+ <ConfigProvider clientName="test"><I18nProvider>
207
+ <Combobox
208
+ loadItems={loadItems}
209
+ onValueChange={handleChange}
210
+ allowCustomValue
211
+ parseCustomValue={(text) => ({ name: text, custom: true })}
212
+ renderValue={(v: { name: string }) => <>{v.name}</>}
213
+ />
214
+ </I18nProvider></ConfigProvider>
190
215
  ));
191
216
 
192
217
  const input = container.querySelector("input")!;
@@ -200,25 +225,29 @@ describe("Combobox component", () => {
200
225
  describe("validation", () => {
201
226
  it("sets error message when required and value is empty", () => {
202
227
  const { container } = render(() => (
203
- <Combobox
204
- loadItems={mockLoadItems}
205
- required
206
- value={undefined}
207
- renderValue={(v) => <>{v}</>}
208
- />
228
+ <ConfigProvider clientName="test"><I18nProvider>
229
+ <Combobox
230
+ loadItems={mockLoadItems}
231
+ required
232
+ value={undefined}
233
+ renderValue={(v) => <>{v}</>}
234
+ />
235
+ </I18nProvider></ConfigProvider>
209
236
  ));
210
237
  const hiddenInput = container.querySelector("input[aria-hidden='true']") as HTMLInputElement;
211
- expect(hiddenInput.validationMessage).toBe("This field is required");
238
+ expect(hiddenInput.validationMessage).toBe("This is a required field");
212
239
  });
213
240
 
214
241
  it("is valid when required and value exists", () => {
215
242
  const { container } = render(() => (
216
- <Combobox
217
- loadItems={mockLoadItems}
218
- required
219
- value="선택된 값"
220
- renderValue={(v) => <>{v}</>}
221
- />
243
+ <ConfigProvider clientName="test"><I18nProvider>
244
+ <Combobox
245
+ loadItems={mockLoadItems}
246
+ required
247
+ value="선택된 값"
248
+ renderValue={(v) => <>{v}</>}
249
+ />
250
+ </I18nProvider></ConfigProvider>
222
251
  ));
223
252
  const hiddenInput = container.querySelector("input[aria-hidden='true']") as HTMLInputElement;
224
253
  expect(hiddenInput.validity.valid).toBe(true);
@@ -226,12 +255,14 @@ describe("Combobox component", () => {
226
255
 
227
256
  it("sets error message returned by validate function", () => {
228
257
  const { container } = render(() => (
229
- <Combobox
230
- loadItems={mockLoadItems}
231
- validate={(v) => (v === "invalid-val" ? "허용되지 않는 값입니다" : undefined)}
232
- value="invalid-val"
233
- renderValue={(v) => <>{v}</>}
234
- />
258
+ <ConfigProvider clientName="test"><I18nProvider>
259
+ <Combobox
260
+ loadItems={mockLoadItems}
261
+ validate={(v) => (v === "invalid-val" ? "허용되지 않는 값입니다" : undefined)}
262
+ value="invalid-val"
263
+ renderValue={(v) => <>{v}</>}
264
+ />
265
+ </I18nProvider></ConfigProvider>
235
266
  ));
236
267
  const hiddenInput = container.querySelector("input[aria-hidden='true']") as HTMLInputElement;
237
268
  expect(hiddenInput.validationMessage).toBe("허용되지 않는 값입니다");
@@ -239,12 +270,14 @@ describe("Combobox component", () => {
239
270
 
240
271
  it("is valid when validate function returns undefined", () => {
241
272
  const { container } = render(() => (
242
- <Combobox
243
- loadItems={mockLoadItems}
244
- validate={(v) => (v === "invalid-val" ? "허용되지 않는 값입니다" : undefined)}
245
- value="valid-val"
246
- renderValue={(v) => <>{v}</>}
247
- />
273
+ <ConfigProvider clientName="test"><I18nProvider>
274
+ <Combobox
275
+ loadItems={mockLoadItems}
276
+ validate={(v) => (v === "invalid-val" ? "허용되지 않는 값입니다" : undefined)}
277
+ value="valid-val"
278
+ renderValue={(v) => <>{v}</>}
279
+ />
280
+ </I18nProvider></ConfigProvider>
248
281
  ));
249
282
  const hiddenInput = container.querySelector("input[aria-hidden='true']") as HTMLInputElement;
250
283
  expect(hiddenInput.validity.valid).toBe(true);
@@ -167,7 +167,7 @@ describe("DateRangePicker component", () => {
167
167
 
168
168
  describe("disabled state", () => {
169
169
  it("applies aria-disabled to Select", () => {
170
- const { container } = render(() => <DateRangePicker disabled />);
170
+ const { container } = render(() => <ConfigProvider clientName="test"><I18nProvider><DateRangePicker disabled /></I18nProvider></ConfigProvider>);
171
171
  const wrapper = container.querySelector("[data-date-range-picker]");
172
172
 
173
173
  const select = wrapper?.querySelector("[data-select]");
@@ -198,7 +198,7 @@ describe("DateRangePicker component", () => {
198
198
  describe("class merging", () => {
199
199
  it("applies custom class to wrapper", () => {
200
200
  // eslint-disable-next-line tailwindcss/no-custom-classname
201
- const { container } = render(() => <DateRangePicker class="my-custom-class" />);
201
+ const { container } = render(() => <ConfigProvider clientName="test"><I18nProvider><DateRangePicker class="my-custom-class" /></I18nProvider></ConfigProvider>);
202
202
  const wrapper = container.querySelector("[data-date-range-picker]") as HTMLElement;
203
203
 
204
204
  expect(wrapper).toBeTruthy();