@simplysm/solid 13.0.27 → 13.0.29

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 (278) hide show
  1. package/README.md +6 -5
  2. package/dist/components/data/Pagination.d.ts.map +1 -1
  3. package/dist/components/data/Pagination.js.map +1 -1
  4. package/dist/components/data/calendar/Calendar.d.ts.map +1 -1
  5. package/dist/components/data/calendar/Calendar.js.map +1 -1
  6. package/dist/components/data/kanban/Kanban.d.ts.map +1 -1
  7. package/dist/components/data/kanban/Kanban.js +2 -2
  8. package/dist/components/data/kanban/Kanban.js.map +2 -2
  9. package/dist/components/data/list/List.d.ts.map +1 -1
  10. package/dist/components/data/list/List.js.map +1 -1
  11. package/dist/components/data/list/ListItem.d.ts.map +1 -1
  12. package/dist/components/data/list/ListItem.js.map +1 -1
  13. package/dist/components/data/permission-table/PermissionTable.d.ts.map +1 -1
  14. package/dist/components/data/permission-table/PermissionTable.js.map +1 -1
  15. package/dist/components/data/sheet/DataSheet.d.ts.map +1 -1
  16. package/dist/components/data/sheet/DataSheet.js.map +1 -1
  17. package/dist/components/data/sheet/DataSheet.styles.d.ts.map +1 -1
  18. package/dist/components/data/sheet/DataSheet.styles.js +23 -5
  19. package/dist/components/data/sheet/DataSheet.styles.js.map +1 -1
  20. package/dist/components/data/sheet/DataSheetColumn.d.ts.map +1 -1
  21. package/dist/components/data/sheet/DataSheetColumn.js.map +1 -1
  22. package/dist/components/data/sheet/DataSheetConfigDialog.d.ts.map +1 -1
  23. package/dist/components/data/sheet/DataSheetConfigDialog.js.map +1 -1
  24. package/dist/components/data/sheet/sheetUtils.d.ts.map +1 -1
  25. package/dist/components/data/sheet/sheetUtils.js.map +1 -1
  26. package/dist/components/disclosure/Collapse.d.ts.map +1 -1
  27. package/dist/components/disclosure/Collapse.js +0 -3
  28. package/dist/components/disclosure/Collapse.js.map +1 -1
  29. package/dist/components/disclosure/Dialog.d.ts.map +1 -1
  30. package/dist/components/disclosure/Dialog.js.map +1 -1
  31. package/dist/components/disclosure/DialogContext.d.ts.map +1 -1
  32. package/dist/components/disclosure/DialogContext.js.map +1 -1
  33. package/dist/components/disclosure/DialogProvider.d.ts.map +1 -1
  34. package/dist/components/disclosure/DialogProvider.js.map +1 -1
  35. package/dist/components/disclosure/Dropdown.d.ts.map +1 -1
  36. package/dist/components/disclosure/Dropdown.js.map +1 -1
  37. package/dist/components/disclosure/Tabs.d.ts.map +1 -1
  38. package/dist/components/disclosure/Tabs.js.map +1 -1
  39. package/dist/components/display/Alert.d.ts.map +1 -1
  40. package/dist/components/display/Alert.js.map +1 -1
  41. package/dist/components/display/Card.d.ts +0 -1
  42. package/dist/components/display/Card.d.ts.map +1 -1
  43. package/dist/components/display/Card.js +1 -2
  44. package/dist/components/display/Card.js.map +1 -1
  45. package/dist/components/display/Echarts.d.ts +1 -1
  46. package/dist/components/display/Echarts.d.ts.map +1 -1
  47. package/dist/components/display/Echarts.js +2 -2
  48. package/dist/components/display/Echarts.js.map +2 -2
  49. package/dist/components/display/Link.d.ts +5 -0
  50. package/dist/components/display/Link.d.ts.map +1 -0
  51. package/dist/components/display/Link.js +26 -0
  52. package/dist/components/display/Link.js.map +6 -0
  53. package/dist/components/feedback/busy/BusyContainer.d.ts +12 -0
  54. package/dist/components/feedback/busy/BusyContainer.d.ts.map +1 -0
  55. package/dist/components/feedback/{loading/LoadingContainer.js → busy/BusyContainer.js} +7 -7
  56. package/dist/components/feedback/busy/BusyContainer.js.map +6 -0
  57. package/dist/components/feedback/busy/BusyContext.d.ts +11 -0
  58. package/dist/components/feedback/busy/BusyContext.d.ts.map +1 -0
  59. package/dist/components/feedback/busy/BusyContext.js +14 -0
  60. package/dist/components/feedback/busy/BusyContext.js.map +6 -0
  61. package/dist/components/feedback/busy/BusyProvider.d.ts +7 -0
  62. package/dist/components/feedback/busy/BusyProvider.d.ts.map +1 -0
  63. package/dist/components/feedback/{loading/LoadingProvider.js → busy/BusyProvider.js} +7 -7
  64. package/dist/components/feedback/busy/BusyProvider.js.map +6 -0
  65. package/dist/components/feedback/notification/NotificationBanner.d.ts.map +1 -1
  66. package/dist/components/feedback/notification/NotificationBanner.js.map +1 -1
  67. package/dist/components/feedback/notification/NotificationBell.d.ts.map +1 -1
  68. package/dist/components/feedback/notification/NotificationBell.js.map +1 -1
  69. package/dist/components/feedback/notification/NotificationContext.d.ts.map +1 -1
  70. package/dist/components/feedback/notification/NotificationContext.js.map +1 -1
  71. package/dist/components/feedback/notification/NotificationProvider.d.ts.map +1 -1
  72. package/dist/components/feedback/notification/NotificationProvider.js.map +1 -1
  73. package/dist/components/form-control/Button.d.ts.map +1 -1
  74. package/dist/components/form-control/Button.js +2 -2
  75. package/dist/components/form-control/Button.js.map +1 -1
  76. package/dist/components/form-control/DropdownTrigger.styles.d.ts.map +1 -1
  77. package/dist/components/form-control/DropdownTrigger.styles.js +6 -1
  78. package/dist/components/form-control/DropdownTrigger.styles.js.map +1 -1
  79. package/dist/components/form-control/Invalid.d.ts.map +1 -1
  80. package/dist/components/form-control/Invalid.js +1 -1
  81. package/dist/components/form-control/Invalid.js.map +1 -1
  82. package/dist/components/form-control/ThemeToggle.d.ts.map +1 -1
  83. package/dist/components/form-control/ThemeToggle.js.map +1 -1
  84. package/dist/components/form-control/checkbox/Checkbox.styles.d.ts.map +1 -1
  85. package/dist/components/form-control/checkbox/Checkbox.styles.js +5 -1
  86. package/dist/components/form-control/checkbox/Checkbox.styles.js.map +1 -1
  87. package/dist/components/form-control/color-picker/ColorPicker.d.ts.map +1 -1
  88. package/dist/components/form-control/color-picker/ColorPicker.js.map +1 -1
  89. package/dist/components/form-control/combobox/Combobox.d.ts.map +1 -1
  90. package/dist/components/form-control/combobox/Combobox.js +5 -5
  91. package/dist/components/form-control/combobox/Combobox.js.map +2 -2
  92. package/dist/components/form-control/editor/EditorToolbar.d.ts.map +1 -1
  93. package/dist/components/form-control/editor/EditorToolbar.js.map +1 -1
  94. package/dist/components/form-control/editor/RichTextEditor.d.ts.map +1 -1
  95. package/dist/components/form-control/editor/RichTextEditor.js.map +1 -1
  96. package/dist/components/form-control/field/DatePicker.d.ts.map +1 -1
  97. package/dist/components/form-control/field/DatePicker.js.map +1 -1
  98. package/dist/components/form-control/field/DateTimePicker.d.ts.map +1 -1
  99. package/dist/components/form-control/field/DateTimePicker.js.map +1 -1
  100. package/dist/components/form-control/field/Field.styles.d.ts.map +1 -1
  101. package/dist/components/form-control/field/Field.styles.js +17 -3
  102. package/dist/components/form-control/field/Field.styles.js.map +1 -1
  103. package/dist/components/form-control/field/NumberInput.d.ts +3 -0
  104. package/dist/components/form-control/field/NumberInput.d.ts.map +1 -1
  105. package/dist/components/form-control/field/NumberInput.js +23 -5
  106. package/dist/components/form-control/field/NumberInput.js.map +2 -2
  107. package/dist/components/form-control/field/TextInput.d.ts +4 -1
  108. package/dist/components/form-control/field/TextInput.d.ts.map +1 -1
  109. package/dist/components/form-control/field/TextInput.js +23 -6
  110. package/dist/components/form-control/field/TextInput.js.map +2 -2
  111. package/dist/components/form-control/field/Textarea.d.ts.map +1 -1
  112. package/dist/components/form-control/field/Textarea.js.map +1 -1
  113. package/dist/components/form-control/field/TimePicker.d.ts.map +1 -1
  114. package/dist/components/form-control/field/TimePicker.js.map +1 -1
  115. package/dist/components/form-control/select/Select.d.ts.map +1 -1
  116. package/dist/components/form-control/select/Select.js.map +1 -1
  117. package/dist/components/form-control/select/SelectItem.d.ts.map +1 -1
  118. package/dist/components/form-control/select/SelectItem.js.map +1 -1
  119. package/dist/components/form-control/state-preset/StatePreset.d.ts.map +1 -1
  120. package/dist/components/form-control/state-preset/StatePreset.js.map +1 -1
  121. package/dist/components/layout/FormGroup.d.ts.map +1 -1
  122. package/dist/components/layout/FormGroup.js.map +1 -1
  123. package/dist/components/layout/sidebar/Sidebar.d.ts.map +1 -1
  124. package/dist/components/layout/sidebar/Sidebar.js +1 -1
  125. package/dist/components/layout/sidebar/Sidebar.js.map +1 -1
  126. package/dist/components/layout/sidebar/SidebarContainer.d.ts.map +1 -1
  127. package/dist/components/layout/sidebar/SidebarContainer.js.map +1 -1
  128. package/dist/components/layout/sidebar/SidebarMenu.js.map +1 -1
  129. package/dist/components/layout/sidebar/SidebarUser.d.ts.map +1 -1
  130. package/dist/components/layout/sidebar/SidebarUser.js +2 -2
  131. package/dist/components/layout/sidebar/SidebarUser.js.map +1 -1
  132. package/dist/components/layout/topbar/Topbar.js +1 -1
  133. package/dist/components/layout/topbar/TopbarMenu.d.ts.map +1 -1
  134. package/dist/components/layout/topbar/TopbarMenu.js.map +1 -1
  135. package/dist/components/layout/topbar/TopbarUser.d.ts.map +1 -1
  136. package/dist/components/layout/topbar/TopbarUser.js.map +1 -1
  137. package/dist/helpers/createAppStructure.d.ts.map +1 -1
  138. package/dist/helpers/createAppStructure.js +17 -12
  139. package/dist/helpers/createAppStructure.js.map +1 -1
  140. package/dist/helpers/mergeStyles.d.ts.map +1 -1
  141. package/dist/helpers/mergeStyles.js +4 -1
  142. package/dist/helpers/mergeStyles.js.map +1 -1
  143. package/dist/helpers/splitSlots.d.ts.map +1 -1
  144. package/dist/helpers/splitSlots.js.map +1 -1
  145. package/dist/hooks/createControllableSignal.d.ts.map +1 -1
  146. package/dist/hooks/createControllableSignal.js.map +1 -1
  147. package/dist/hooks/useClipboardValueCopy.js +3 -1
  148. package/dist/hooks/useClipboardValueCopy.js.map +1 -1
  149. package/dist/hooks/useLocalStorage.d.ts.map +1 -1
  150. package/dist/hooks/useLocalStorage.js.map +1 -1
  151. package/dist/hooks/usePrint.d.ts.map +1 -1
  152. package/dist/hooks/usePrint.js +5 -3
  153. package/dist/hooks/usePrint.js.map +1 -1
  154. package/dist/hooks/useRouterLink.d.ts.map +1 -1
  155. package/dist/hooks/useRouterLink.js.map +1 -1
  156. package/dist/hooks/useSyncConfig.d.ts +3 -3
  157. package/dist/hooks/useSyncConfig.js +4 -4
  158. package/dist/hooks/useSyncConfig.js.map +1 -1
  159. package/dist/index.d.ts +4 -3
  160. package/dist/index.d.ts.map +1 -1
  161. package/dist/index.js +4 -3
  162. package/dist/index.js.map +1 -1
  163. package/dist/providers/ConfigContext.d.ts +2 -2
  164. package/dist/providers/ConfigContext.d.ts.map +1 -1
  165. package/dist/providers/InitializeProvider.js +3 -3
  166. package/dist/providers/InitializeProvider.js.map +2 -2
  167. package/dist/providers/ServiceClientProvider.d.ts.map +1 -1
  168. package/dist/providers/ServiceClientProvider.js.map +1 -1
  169. package/dist/providers/ThemeContext.d.ts.map +1 -1
  170. package/dist/providers/ThemeContext.js.map +1 -1
  171. package/dist/providers/shared-data/SharedDataChangeEvent.d.ts.map +1 -1
  172. package/dist/providers/shared-data/SharedDataChangeEvent.js +1 -3
  173. package/dist/providers/shared-data/SharedDataChangeEvent.js.map +1 -1
  174. package/dist/providers/shared-data/SharedDataContext.d.ts +1 -1
  175. package/dist/providers/shared-data/SharedDataContext.d.ts.map +1 -1
  176. package/dist/providers/shared-data/SharedDataProvider.d.ts.map +1 -1
  177. package/dist/providers/shared-data/SharedDataProvider.js +6 -6
  178. package/dist/providers/shared-data/SharedDataProvider.js.map +2 -2
  179. package/dist/styles/patterns.styles.js +1 -1
  180. package/dist/styles/tokens.styles.d.ts +1 -1
  181. package/dist/styles/tokens.styles.js +1 -1
  182. package/docs/display.md +19 -2
  183. package/docs/feedback.md +10 -10
  184. package/docs/hooks.md +6 -6
  185. package/docs/layout.md +3 -3
  186. package/docs/providers.md +1 -1
  187. package/package.json +3 -3
  188. package/src/components/data/Pagination.tsx +6 -1
  189. package/src/components/data/calendar/Calendar.tsx +18 -4
  190. package/src/components/data/kanban/Kanban.tsx +62 -18
  191. package/src/components/data/list/List.tsx +11 -4
  192. package/src/components/data/list/ListItem.tsx +12 -2
  193. package/src/components/data/permission-table/PermissionTable.tsx +32 -5
  194. package/src/components/data/sheet/DataSheet.styles.ts +23 -5
  195. package/src/components/data/sheet/DataSheet.tsx +100 -25
  196. package/src/components/data/sheet/DataSheetColumn.tsx +5 -1
  197. package/src/components/data/sheet/DataSheetConfigDialog.tsx +27 -5
  198. package/src/components/data/sheet/sheetUtils.ts +12 -3
  199. package/src/components/disclosure/Collapse.tsx +14 -3
  200. package/src/components/disclosure/Dialog.tsx +35 -6
  201. package/src/components/disclosure/DialogContext.ts +4 -1
  202. package/src/components/disclosure/DialogProvider.tsx +15 -3
  203. package/src/components/disclosure/Dropdown.tsx +12 -2
  204. package/src/components/disclosure/Tabs.tsx +29 -5
  205. package/src/components/display/Alert.tsx +3 -4
  206. package/src/components/display/Card.tsx +1 -2
  207. package/src/components/display/Echarts.tsx +12 -5
  208. package/src/components/display/Link.tsx +22 -0
  209. package/src/components/feedback/{loading/LoadingContainer.tsx → busy/BusyContainer.tsx} +43 -14
  210. package/src/components/feedback/busy/BusyContext.ts +20 -0
  211. package/src/components/feedback/{loading/LoadingProvider.tsx → busy/BusyProvider.tsx} +10 -10
  212. package/src/components/feedback/notification/NotificationBanner.tsx +13 -2
  213. package/src/components/feedback/notification/NotificationBell.tsx +17 -3
  214. package/src/components/feedback/notification/NotificationContext.ts +4 -1
  215. package/src/components/feedback/notification/NotificationProvider.tsx +3 -1
  216. package/src/components/form-control/Button.tsx +8 -3
  217. package/src/components/form-control/DropdownTrigger.styles.ts +7 -1
  218. package/src/components/form-control/Invalid.tsx +5 -1
  219. package/src/components/form-control/ThemeToggle.tsx +6 -2
  220. package/src/components/form-control/checkbox/Checkbox.styles.ts +5 -1
  221. package/src/components/form-control/color-picker/ColorPicker.tsx +15 -2
  222. package/src/components/form-control/combobox/Combobox.tsx +16 -8
  223. package/src/components/form-control/editor/EditorToolbar.tsx +16 -5
  224. package/src/components/form-control/editor/RichTextEditor.tsx +22 -4
  225. package/src/components/form-control/field/DatePicker.tsx +5 -1
  226. package/src/components/form-control/field/DateTimePicker.tsx +8 -1
  227. package/src/components/form-control/field/Field.styles.ts +17 -3
  228. package/src/components/form-control/field/NumberInput.tsx +24 -0
  229. package/src/components/form-control/field/TextInput.tsx +28 -5
  230. package/src/components/form-control/field/Textarea.tsx +2 -1
  231. package/src/components/form-control/field/TimePicker.tsx +5 -1
  232. package/src/components/form-control/select/Select.tsx +32 -7
  233. package/src/components/form-control/select/SelectItem.tsx +3 -1
  234. package/src/components/form-control/state-preset/StatePreset.tsx +39 -14
  235. package/src/components/layout/FormGroup.tsx +11 -2
  236. package/src/components/layout/sidebar/Sidebar.tsx +3 -2
  237. package/src/components/layout/sidebar/SidebarContainer.tsx +8 -1
  238. package/src/components/layout/sidebar/SidebarMenu.tsx +7 -1
  239. package/src/components/layout/sidebar/SidebarUser.tsx +9 -4
  240. package/src/components/layout/topbar/Topbar.tsx +1 -1
  241. package/src/components/layout/topbar/TopbarMenu.tsx +27 -5
  242. package/src/components/layout/topbar/TopbarUser.tsx +5 -1
  243. package/src/helpers/createAppStructure.ts +29 -15
  244. package/src/helpers/mergeStyles.ts +6 -2
  245. package/src/helpers/splitSlots.ts +4 -1
  246. package/src/hooks/createControllableSignal.ts +2 -1
  247. package/src/hooks/useClipboardValueCopy.ts +5 -2
  248. package/src/hooks/useLocalStorage.ts +3 -1
  249. package/src/hooks/usePrint.ts +9 -4
  250. package/src/hooks/useRouterLink.ts +3 -1
  251. package/src/hooks/useSyncConfig.ts +7 -7
  252. package/src/index.ts +5 -4
  253. package/src/providers/ConfigContext.ts +2 -2
  254. package/src/providers/InitializeProvider.tsx +2 -2
  255. package/src/providers/ServiceClientProvider.tsx +14 -3
  256. package/src/providers/ThemeContext.tsx +10 -2
  257. package/src/providers/shared-data/SharedDataChangeEvent.ts +4 -3
  258. package/src/providers/shared-data/SharedDataContext.ts +1 -1
  259. package/src/providers/shared-data/SharedDataProvider.tsx +13 -8
  260. package/src/styles/patterns.styles.ts +1 -1
  261. package/src/styles/tokens.styles.ts +1 -1
  262. package/tailwind.config.ts +9 -0
  263. package/tailwind.css +1 -1
  264. package/dist/components/display/Card.css +0 -15
  265. package/dist/components/feedback/loading/LoadingContainer.d.ts +0 -12
  266. package/dist/components/feedback/loading/LoadingContainer.d.ts.map +0 -1
  267. package/dist/components/feedback/loading/LoadingContainer.js.map +0 -6
  268. package/dist/components/feedback/loading/LoadingContext.d.ts +0 -11
  269. package/dist/components/feedback/loading/LoadingContext.d.ts.map +0 -1
  270. package/dist/components/feedback/loading/LoadingContext.js +0 -14
  271. package/dist/components/feedback/loading/LoadingContext.js.map +0 -6
  272. package/dist/components/feedback/loading/LoadingProvider.d.ts +0 -7
  273. package/dist/components/feedback/loading/LoadingProvider.d.ts.map +0 -1
  274. package/dist/components/feedback/loading/LoadingProvider.js.map +0 -6
  275. package/src/components/display/Card.css +0 -15
  276. package/src/components/feedback/loading/LoadingContext.ts +0 -20
  277. /package/dist/components/feedback/{loading/LoadingContainer.css → busy/BusyContainer.css} +0 -0
  278. /package/src/components/feedback/{loading/LoadingContainer.css → busy/BusyContainer.css} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/solid",
3
- "version": "13.0.27",
3
+ "version": "13.0.29",
4
4
  "description": "심플리즘 패키지 - SolidJS 라이브러리",
5
5
  "author": "김석래",
6
6
  "license": "Apache-2.0",
@@ -49,8 +49,8 @@
49
49
  "solid-tiptap": "^0.8.0",
50
50
  "tailwind-merge": "^3.4.1",
51
51
  "tailwindcss": "^3.4.19",
52
- "@simplysm/core-browser": "13.0.27",
53
- "@simplysm/core-common": "13.0.27"
52
+ "@simplysm/core-browser": "13.0.29",
53
+ "@simplysm/core-common": "13.0.29"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@solidjs/testing-library": "^0.8.10"
@@ -1,7 +1,12 @@
1
1
  import { type Component, For, type JSX, splitProps } from "solid-js";
2
2
  import clsx from "clsx";
3
3
  import { twMerge } from "tailwind-merge";
4
- import { IconChevronLeft, IconChevronRight, IconChevronsLeft, IconChevronsRight } from "@tabler/icons-solidjs";
4
+ import {
5
+ IconChevronLeft,
6
+ IconChevronRight,
7
+ IconChevronsLeft,
8
+ IconChevronsRight,
9
+ } from "@tabler/icons-solidjs";
5
10
  import { Button } from "../form-control/Button";
6
11
  import { Icon } from "../display/Icon";
7
12
 
@@ -4,7 +4,10 @@ import clsx from "clsx";
4
4
  import { twMerge } from "tailwind-merge";
5
5
  import { createControllableSignal } from "../../../hooks/createControllableSignal";
6
6
 
7
- export interface CalendarProps<TValue> extends Omit<JSX.HTMLAttributes<HTMLTableElement>, "children"> {
7
+ export interface CalendarProps<TValue> extends Omit<
8
+ JSX.HTMLAttributes<HTMLTableElement>,
9
+ "children"
10
+ > {
8
11
  items: TValue[];
9
12
  getItemDate: (item: TValue, index: number) => DateOnly;
10
13
  renderItem: (item: TValue, index: number) => JSX.Element;
@@ -116,14 +119,25 @@ function CalendarBase<TValue>(props: CalendarProps<TValue>) {
116
119
  <tr>
117
120
  <For each={row}>
118
121
  {(cell) => (
119
- <td class={twMerge(notCurrentClass, cell.date.month !== yearMonth().month && "not-current")}>
122
+ <td
123
+ class={twMerge(
124
+ notCurrentClass,
125
+ cell.date.month !== yearMonth().month && "not-current",
126
+ )}
127
+ >
120
128
  <div
121
- class={cell.date.month !== yearMonth().month ? twMerge(dayClass, notCurrentDayClass) : dayClass}
129
+ class={
130
+ cell.date.month !== yearMonth().month
131
+ ? twMerge(dayClass, notCurrentDayClass)
132
+ : dayClass
133
+ }
122
134
  >
123
135
  {cell.date.day}
124
136
  </div>
125
137
  <div class={contentClass}>
126
- <For each={cell.items}>{(entry) => local.renderItem(entry.item, entry.index)}</For>
138
+ <For each={cell.items}>
139
+ {(entry) => local.renderItem(entry.item, entry.index)}
140
+ </For>
127
141
  </div>
128
142
  </td>
129
143
  )}
@@ -16,7 +16,7 @@ import { IconEye, IconEyeOff } from "@tabler/icons-solidjs";
16
16
  import { Card } from "../../display/Card";
17
17
  import { Checkbox } from "../../form-control/checkbox/Checkbox";
18
18
  import { Icon } from "../../display/Icon";
19
- import { LoadingContainer } from "../../feedback/loading/LoadingContainer";
19
+ import { BusyContainer } from "../../feedback/busy/BusyContainer";
20
20
  import { createControllableSignal } from "../../../hooks/createControllableSignal";
21
21
  import { splitSlots } from "../../../helpers/splitSlots";
22
22
  import "./Kanban.css";
@@ -34,15 +34,22 @@ import {
34
34
 
35
35
  // ─── KanbanLaneTitle ─────────────────────────────────────────────
36
36
 
37
- const KanbanLaneTitle: ParentComponent = (props) => <div data-kanban-lane-title>{props.children}</div>;
37
+ const KanbanLaneTitle: ParentComponent = (props) => (
38
+ <div data-kanban-lane-title>{props.children}</div>
39
+ );
38
40
 
39
41
  // ─── KanbanLaneTools ─────────────────────────────────────────────
40
42
 
41
- const KanbanLaneTools: ParentComponent = (props) => <div data-kanban-lane-tools>{props.children}</div>;
43
+ const KanbanLaneTools: ParentComponent = (props) => (
44
+ <div data-kanban-lane-tools>{props.children}</div>
45
+ );
42
46
 
43
47
  // ─── KanbanCard ──────────────────────────────────────────────────
44
48
 
45
- export interface KanbanCardProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, "children" | "draggable"> {
49
+ export interface KanbanCardProps extends Omit<
50
+ JSX.HTMLAttributes<HTMLDivElement>,
51
+ "children" | "draggable"
52
+ > {
46
53
  value?: unknown;
47
54
  draggable?: boolean;
48
55
  selectable?: boolean;
@@ -52,14 +59,25 @@ export interface KanbanCardProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>
52
59
 
53
60
  const cardHostClass = clsx("relative block", "transition-opacity duration-200");
54
61
 
55
- const cardContentClass = clsx("select-none whitespace-normal", "animate-none", "transition-shadow duration-200");
62
+ const cardContentClass = clsx(
63
+ "select-none whitespace-normal",
64
+ "animate-none",
65
+ "transition-shadow duration-200",
66
+ );
56
67
 
57
68
  const cardSelectedClass = clsx("ring-2 ring-primary-500/50", "shadow-md dark:shadow-black/30");
58
69
 
59
70
  const LONG_PRESS_MS = 500;
60
71
 
61
72
  const KanbanCard: ParentComponent<KanbanCardProps> = (props) => {
62
- const [local, rest] = splitProps(props, ["children", "class", "value", "draggable", "selectable", "contentClass"]);
73
+ const [local, rest] = splitProps(props, [
74
+ "children",
75
+ "class",
76
+ "value",
77
+ "draggable",
78
+ "selectable",
79
+ "contentClass",
80
+ ]);
63
81
 
64
82
  const boardCtx = useKanbanContext();
65
83
  const laneCtx = useKanbanLaneContext();
@@ -182,7 +200,12 @@ const KanbanCard: ParentComponent<KanbanCardProps> = (props) => {
182
200
  ref={hostRef}
183
201
  data-kanban-card
184
202
  draggable={isDraggable()}
185
- class={twMerge(cardHostClass, isDraggable() && "cursor-grab", isDragSource() && "opacity-30", local.class)}
203
+ class={twMerge(
204
+ cardHostClass,
205
+ isDraggable() && "cursor-grab",
206
+ isDragSource() && "opacity-30",
207
+ local.class,
208
+ )}
186
209
  onDragStart={handleDragStart}
187
210
  onDragOver={handleDragOver}
188
211
  onDrop={handleDrop}
@@ -191,7 +214,9 @@ const KanbanCard: ParentComponent<KanbanCardProps> = (props) => {
191
214
  onPointerCancel={handlePointerCancel}
192
215
  onClick={handleClick}
193
216
  >
194
- <Card class={twMerge(cardContentClass, isSelected() && cardSelectedClass, local.contentClass)}>
217
+ <Card
218
+ class={twMerge(cardContentClass, isSelected() && cardSelectedClass, local.contentClass)}
219
+ >
195
220
  {local.children}
196
221
  </Card>
197
222
  </div>
@@ -267,9 +292,9 @@ const KanbanLane: ParentComponent<KanbanLaneProps> = (props) => {
267
292
 
268
293
  const boardCtx = useKanbanContext();
269
294
 
270
- const [registeredCards, setRegisteredCards] = createSignal<Map<string, { value: unknown; selectable: boolean }>>(
271
- new Map(),
272
- );
295
+ const [registeredCards, setRegisteredCards] = createSignal<
296
+ Map<string, { value: unknown; selectable: boolean }>
297
+ >(new Map());
273
298
 
274
299
  const registerCard = (id: string, info: { value: unknown; selectable: boolean }) => {
275
300
  setRegisteredCards((prev) => new Map(prev).set(id, info));
@@ -396,7 +421,8 @@ const KanbanLane: ParentComponent<KanbanLaneProps> = (props) => {
396
421
  placeholderEl.style.height = `${dc.heightOnDrag}px`;
397
422
 
398
423
  // 삽입 위치 계산
399
- const referenceNode = target.position === "before" ? target.element : target.element.nextElementSibling;
424
+ const referenceNode =
425
+ target.position === "before" ? target.element : target.element.nextElementSibling;
400
426
 
401
427
  // 이미 올바른 위치면 DOM 조작 생략
402
428
  if (placeholderEl.parentNode === bodyRef && placeholderEl.nextSibling === referenceNode) {
@@ -414,7 +440,7 @@ const KanbanLane: ParentComponent<KanbanLaneProps> = (props) => {
414
440
  });
415
441
 
416
442
  return (
417
- <LoadingContainer busy={local.busy} variant="bar">
443
+ <BusyContainer busy={local.busy} variant="bar">
418
444
  <div
419
445
  {...rest}
420
446
  data-kanban-lane
@@ -427,12 +453,21 @@ const KanbanLane: ParentComponent<KanbanLaneProps> = (props) => {
427
453
  <Show when={hasHeader()}>
428
454
  <div class={laneHeaderBaseClass}>
429
455
  <Show when={local.collapsible}>
430
- <button type="button" class={collapseButtonClass} onClick={() => setCollapsed((prev) => !prev)}>
456
+ <button
457
+ type="button"
458
+ class={collapseButtonClass}
459
+ onClick={() => setCollapsed((prev) => !prev)}
460
+ >
431
461
  <Icon icon={collapsed() ? IconEyeOff : IconEye} size="1em" />
432
462
  </button>
433
463
  </Show>
434
464
  <Show when={hasSelectableCards()}>
435
- <Checkbox value={isAllSelected()} onValueChange={handleSelectAll} inline theme="primary" />
465
+ <Checkbox
466
+ value={isAllSelected()}
467
+ onValueChange={handleSelectAll}
468
+ inline
469
+ theme="primary"
470
+ />
436
471
  </Show>
437
472
  <div class="flex-1">{slots().kanbanLaneTitle}</div>
438
473
  <Show when={slots().kanbanLaneTools.length > 0}>
@@ -446,7 +481,7 @@ const KanbanLane: ParentComponent<KanbanLaneProps> = (props) => {
446
481
  </div>
447
482
  </Show>
448
483
  </div>
449
- </LoadingContainer>
484
+ </BusyContainer>
450
485
  );
451
486
  };
452
487
 
@@ -459,7 +494,10 @@ const KanbanLane: ParentComponent<KanbanLaneProps> = (props) => {
459
494
 
460
495
  // ─── Kanban (Board) ──────────────────────────────────────────────
461
496
 
462
- export interface KanbanProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, "children" | "onDrop"> {
497
+ export interface KanbanProps extends Omit<
498
+ JSX.HTMLAttributes<HTMLDivElement>,
499
+ "children" | "onDrop"
500
+ > {
463
501
  onDrop?: (info: KanbanDropInfo) => void;
464
502
  selectedValues?: unknown[];
465
503
  onSelectedValuesChange?: (values: unknown[]) => void;
@@ -477,7 +515,13 @@ interface KanbanComponent {
477
515
  }
478
516
 
479
517
  const KanbanBase = (props: KanbanProps) => {
480
- const [local, rest] = splitProps(props, ["children", "class", "onDrop", "selectedValues", "onSelectedValuesChange"]);
518
+ const [local, rest] = splitProps(props, [
519
+ "children",
520
+ "class",
521
+ "onDrop",
522
+ "selectedValues",
523
+ "onSelectedValuesChange",
524
+ ]);
481
525
 
482
526
  const [dragCard, setDragCard] = createSignal<KanbanCardRef>();
483
527
 
@@ -6,11 +6,15 @@ import { ListItem } from "./ListItem";
6
6
 
7
7
  const baseClass = clsx("inline-flex flex-col rounded-md");
8
8
 
9
- const rootClass = clsx("border border-base-300 bg-base-50 p-px dark:border-base-700 dark:bg-base-900");
9
+ const rootClass = clsx(
10
+ "border border-base-300 bg-base-50 p-px dark:border-base-700 dark:bg-base-900",
11
+ );
10
12
 
11
13
  const nestedClass = clsx("rounded-none py-1");
12
14
 
13
- const insetClass = clsx("w-full border-transparent bg-transparent dark:border-transparent dark:bg-transparent");
15
+ const insetClass = clsx(
16
+ "w-full border-transparent bg-transparent dark:border-transparent dark:bg-transparent",
17
+ );
14
18
 
15
19
  export interface ListProps extends JSX.HTMLAttributes<HTMLDivElement> {
16
20
  /**
@@ -89,7 +93,8 @@ const ListBase: ParentComponent<ListProps> = (props) => {
89
93
  current.click();
90
94
  } else {
91
95
  // Collapse의 이전 형제가 부모 button
92
- const parentItem = current.closest("[data-collapse]")?.previousElementSibling as HTMLElement | null;
96
+ const parentItem = current.closest("[data-collapse]")
97
+ ?.previousElementSibling as HTMLElement | null;
93
98
  if (parentItem?.hasAttribute("data-list-item")) {
94
99
  parentItem.focus();
95
100
  }
@@ -100,7 +105,9 @@ const ListBase: ParentComponent<ListProps> = (props) => {
100
105
  const current = e.target as HTMLElement;
101
106
  if (!current.hasAttribute("data-list-item")) return;
102
107
 
103
- const allItems = [...listRef.querySelectorAll('[data-list-item]:not([aria-disabled="true"])')] as HTMLElement[];
108
+ const allItems = [
109
+ ...listRef.querySelectorAll('[data-list-item]:not([aria-disabled="true"])'),
110
+ ] as HTMLElement[];
104
111
  const visibleItems = allItems.filter((el) => isVisible(el));
105
112
  const idx = visibleItems.indexOf(current);
106
113
 
@@ -1,4 +1,11 @@
1
- import { children, type Component, type JSX, type ParentComponent, Show, splitProps } from "solid-js";
1
+ import {
2
+ children,
3
+ type Component,
4
+ type JSX,
5
+ type ParentComponent,
6
+ Show,
7
+ splitProps,
8
+ } from "solid-js";
2
9
  import { IconChevronDown, type IconProps } from "@tabler/icons-solidjs";
3
10
  import { Icon } from "../../display/Icon";
4
11
  import clsx from "clsx";
@@ -52,7 +59,10 @@ const ListItemChildren: ParentComponent = (props) => (
52
59
  </div>
53
60
  );
54
61
 
55
- export interface ListItemProps extends Omit<JSX.ButtonHTMLAttributes<HTMLButtonElement>, "onClick"> {
62
+ export interface ListItemProps extends Omit<
63
+ JSX.ButtonHTMLAttributes<HTMLButtonElement>,
64
+ "onClick"
65
+ > {
56
66
  /**
57
67
  * 중첩 리스트의 열림 상태 (controlled 모드)
58
68
  */
@@ -1,5 +1,14 @@
1
1
  import type { JSX } from "solid-js";
2
- import { type Component, createEffect, createMemo, createSignal, For, on, Show, splitProps } from "solid-js";
2
+ import {
3
+ type Component,
4
+ createEffect,
5
+ createMemo,
6
+ createSignal,
7
+ For,
8
+ on,
9
+ Show,
10
+ splitProps,
11
+ } from "solid-js";
3
12
  import clsx from "clsx";
4
13
  import { twMerge } from "tailwind-merge";
5
14
  import { DataSheet } from "../sheet/DataSheet";
@@ -113,7 +122,10 @@ export function changePermCheck<TModule>(
113
122
  // --- 내부 헬퍼 ---
114
123
 
115
124
  /** 모듈 필터에 의해 보이는지 확인 (객체 참조 유지) */
116
- function isItemVisible<TModule>(item: PermissionItem<TModule>, modules: TModule[] | undefined): boolean {
125
+ function isItemVisible<TModule>(
126
+ item: PermissionItem<TModule>,
127
+ modules: TModule[] | undefined,
128
+ ): boolean {
117
129
  if (!modules || modules.length === 0) return true;
118
130
  if (item.modules && !item.modules.some((m) => modules.includes(m))) return false;
119
131
  if (!item.perms && item.children) {
@@ -123,7 +135,10 @@ function isItemVisible<TModule>(item: PermissionItem<TModule>, modules: TModule[
123
135
  }
124
136
 
125
137
  /** 보이는 아이템에서만 고유 perm 타입 수집 */
126
- function collectVisiblePerms<TModule>(items: PermissionItem<TModule>[], modules: TModule[] | undefined): string[] {
138
+ function collectVisiblePerms<TModule>(
139
+ items: PermissionItem<TModule>[],
140
+ modules: TModule[] | undefined,
141
+ ): string[] {
127
142
  const set = new Set<string>();
128
143
 
129
144
  function walk(list: PermissionItem<TModule>[]) {
@@ -165,7 +180,11 @@ function hasPermInTree<TModule>(item: PermissionItem<TModule>, perm: string): bo
165
180
  }
166
181
 
167
182
  /** 기본 권한(perms[0])이 꺼져 있어서 비활성화해야 하는지 */
168
- function isPermDisabled<TModule>(item: PermissionItem<TModule>, perm: string, value: Record<string, boolean>): boolean {
183
+ function isPermDisabled<TModule>(
184
+ item: PermissionItem<TModule>,
185
+ perm: string,
186
+ value: Record<string, boolean>,
187
+ ): boolean {
169
188
  if (!item.perms || item.href == null || item.href === "") return false;
170
189
  const basePerm = item.perms[0];
171
190
  if (perm === basePerm) return false;
@@ -196,7 +215,15 @@ function collectExpandable<TModule>(
196
215
  // --- 컴포넌트 ---
197
216
 
198
217
  export const PermissionTable: Component<PermissionTableProps> = (props) => {
199
- const [local] = splitProps(props, ["items", "value", "onValueChange", "modules", "disabled", "class", "style"]);
218
+ const [local] = splitProps(props, [
219
+ "items",
220
+ "value",
221
+ "onValueChange",
222
+ "modules",
223
+ "disabled",
224
+ "class",
225
+ "style",
226
+ ]);
200
227
 
201
228
  // 보이는 최상위 아이템 (객체 참조 유지)
202
229
  const visibleItems = createMemo(() => {
@@ -1,7 +1,11 @@
1
1
  import clsx from "clsx";
2
2
  import { borderDefault, borderSubtle } from "../../../styles/tokens.styles";
3
3
 
4
- export const dataSheetContainerClass = clsx("relative", "bg-white dark:bg-base-950", "overflow-auto");
4
+ export const dataSheetContainerClass = clsx(
5
+ "relative",
6
+ "bg-white dark:bg-base-950",
7
+ "overflow-auto",
8
+ );
5
9
 
6
10
  export const tableClass = clsx("border-separate border-spacing-0", "w-max");
7
11
 
@@ -111,7 +115,12 @@ export const expandToggleClass = clsx(
111
115
  );
112
116
 
113
117
  // 선택 컬럼 — single 모드 아이콘 래퍼
114
- export const selectSingleClass = clsx("flex items-center justify-center", "size-6", "cursor-pointer", "rounded");
118
+ export const selectSingleClass = clsx(
119
+ "flex items-center justify-center",
120
+ "size-6",
121
+ "cursor-pointer",
122
+ "rounded",
123
+ );
115
124
 
116
125
  // single 모드 — 선택됨
117
126
  export const selectSingleSelectedClass = clsx("text-primary-500", "dark:text-primary-400");
@@ -143,13 +152,22 @@ export const featureCellWrapperClass = clsx("flex items-center", "px-1");
143
152
  export const featureCellBodyWrapperClass = clsx("flex h-full items-center", "px-1");
144
153
 
145
154
  // 기능 컬럼 헤더 클릭 가능 래퍼 (전체 선택 등)
146
- export const featureCellClickableClass = clsx("flex cursor-pointer items-center justify-center", "px-1");
155
+ export const featureCellClickableClass = clsx(
156
+ "flex cursor-pointer items-center justify-center",
157
+ "px-1",
158
+ );
147
159
 
148
160
  // 기능 컬럼 바디 클릭 가능 래퍼 (선택/재정렬 등 — 전체 높이)
149
- export const featureCellBodyClickableClass = clsx("flex h-full cursor-pointer items-center justify-center", "px-1");
161
+ export const featureCellBodyClickableClass = clsx(
162
+ "flex h-full cursor-pointer items-center justify-center",
163
+ "px-1",
164
+ );
150
165
 
151
166
  // 재정렬 핸들 래퍼 (touch-none 추가)
152
- export const reorderCellWrapperClass = clsx("flex h-full touch-none items-center justify-center", "px-1");
167
+ export const reorderCellWrapperClass = clsx(
168
+ "flex h-full touch-none items-center justify-center",
169
+ "px-1",
170
+ );
153
171
 
154
172
  // 설정 버튼
155
173
  export const configButtonClass = clsx(