@ncds/ui-admin 1.8.1 → 1.8.2

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 (438) hide show
  1. package/dist/cjs/src/components/badge/index.js +11 -0
  2. package/dist/cjs/src/components/date-picker/index.js +11 -0
  3. package/dist/cjs/src/components/image-file-input/components/index.js +16 -0
  4. package/dist/cjs/src/components/image-file-input/index.js +11 -0
  5. package/dist/cjs/src/components/progress-bar/components/index.js +27 -0
  6. package/dist/cjs/src/components/progress-bar/hooks/index.js +16 -0
  7. package/dist/cjs/src/components/progress-bar/index.js +33 -0
  8. package/dist/cjs/src/components/select/Select.js +0 -1
  9. package/dist/cjs/src/components/select-dropdown/index.js +11 -7
  10. package/dist/cjs/src/components/switch/index.js +11 -7
  11. package/dist/cjs/src/components/tooltip/Tooltip.js +170 -104
  12. package/dist/cjs/src/hooks/dropdown/index.js +61 -37
  13. package/dist/cjs/src/hooks/index.js +31 -25
  14. package/dist/cjs/vitest.config.js +13 -0
  15. package/dist/esm/src/components/badge/index.js +2 -1
  16. package/dist/esm/src/components/date-picker/index.js +1 -0
  17. package/dist/esm/src/components/empty-state/EmptyState.js +2 -3
  18. package/dist/esm/src/components/image-file-input/components/index.js +1 -0
  19. package/dist/esm/src/components/image-file-input/index.js +2 -1
  20. package/dist/esm/src/components/progress-bar/components/index.js +2 -0
  21. package/dist/esm/src/components/progress-bar/hooks/index.js +1 -0
  22. package/dist/esm/src/components/progress-bar/index.js +4 -1
  23. package/dist/esm/src/components/select/Select.js +0 -1
  24. package/dist/esm/src/components/select-dropdown/index.js +1 -1
  25. package/dist/esm/src/components/switch/index.js +1 -1
  26. package/dist/esm/src/components/tag/Tag.js +2 -3
  27. package/dist/esm/src/components/tooltip/Tooltip.js +172 -106
  28. package/dist/esm/src/hooks/dropdown/index.js +6 -6
  29. package/dist/esm/src/hooks/index.js +3 -3
  30. package/dist/esm/src/types/component-meta.js +2 -0
  31. package/dist/esm/vitest.config.js +7 -0
  32. package/dist/temp/src/components/badge/index.d.ts +1 -0
  33. package/dist/temp/src/components/badge/index.js +1 -0
  34. package/dist/temp/src/components/date-picker/index.d.ts +1 -0
  35. package/dist/temp/src/components/date-picker/index.js +1 -0
  36. package/dist/temp/src/components/empty-state/EmptyState.d.ts +3 -5
  37. package/dist/temp/src/components/empty-state/EmptyState.js +1 -2
  38. package/dist/temp/src/components/image-file-input/components/index.d.ts +1 -0
  39. package/dist/temp/src/components/image-file-input/components/index.js +1 -0
  40. package/dist/temp/src/components/image-file-input/index.d.ts +1 -0
  41. package/dist/temp/src/components/image-file-input/index.js +1 -0
  42. package/dist/temp/src/components/progress-bar/components/index.d.ts +2 -0
  43. package/dist/temp/src/components/progress-bar/components/index.js +2 -0
  44. package/dist/temp/src/components/progress-bar/hooks/index.d.ts +1 -0
  45. package/dist/temp/src/components/progress-bar/hooks/index.js +1 -0
  46. package/dist/temp/src/components/progress-bar/index.d.ts +3 -0
  47. package/dist/temp/src/components/progress-bar/index.js +3 -0
  48. package/dist/temp/src/components/select/Select.js +1 -1
  49. package/dist/temp/src/components/select-dropdown/index.d.ts +1 -1
  50. package/dist/temp/src/components/select-dropdown/index.js +1 -1
  51. package/dist/temp/src/components/spinner/Spinner.d.ts +1 -2
  52. package/dist/temp/src/components/switch/index.d.ts +1 -2
  53. package/dist/temp/src/components/switch/index.js +1 -1
  54. package/dist/temp/src/components/tag/Tag.d.ts +3 -5
  55. package/dist/temp/src/components/tag/Tag.js +1 -2
  56. package/dist/temp/src/components/tooltip/Tooltip.d.ts +4 -2
  57. package/dist/temp/src/components/tooltip/Tooltip.js +126 -68
  58. package/dist/temp/src/hooks/dropdown/index.d.ts +6 -6
  59. package/dist/temp/src/hooks/dropdown/index.js +6 -6
  60. package/dist/temp/src/hooks/index.d.ts +3 -3
  61. package/dist/temp/src/hooks/index.js +3 -3
  62. package/dist/temp/src/types/component-meta.d.ts +26 -0
  63. package/dist/temp/src/types/component-meta.js +2 -0
  64. package/dist/temp/src/types/dropdown/option.d.ts +2 -4
  65. package/dist/temp/src/types/side-slot.d.ts +9 -1
  66. package/dist/temp/vitest.config.d.ts +2 -0
  67. package/dist/temp/vitest.config.js +7 -0
  68. package/dist/types/src/components/badge/index.d.ts +1 -0
  69. package/dist/types/src/components/date-picker/index.d.ts +1 -0
  70. package/dist/types/src/components/empty-state/EmptyState.d.ts +3 -5
  71. package/dist/types/src/components/image-file-input/components/index.d.ts +1 -0
  72. package/dist/types/src/components/image-file-input/index.d.ts +1 -0
  73. package/dist/types/src/components/progress-bar/components/index.d.ts +2 -0
  74. package/dist/types/src/components/progress-bar/hooks/index.d.ts +1 -0
  75. package/dist/types/src/components/progress-bar/index.d.ts +3 -0
  76. package/dist/types/src/components/select-dropdown/index.d.ts +1 -1
  77. package/dist/types/src/components/spinner/Spinner.d.ts +1 -2
  78. package/dist/types/src/components/switch/index.d.ts +1 -2
  79. package/dist/types/src/components/tag/Tag.d.ts +3 -5
  80. package/dist/types/src/components/tooltip/Tooltip.d.ts +4 -2
  81. package/dist/types/src/hooks/dropdown/index.d.ts +6 -6
  82. package/dist/types/src/hooks/index.d.ts +3 -3
  83. package/dist/types/src/types/component-meta.d.ts +26 -0
  84. package/dist/types/src/types/dropdown/option.d.ts +2 -4
  85. package/dist/types/src/types/side-slot.d.ts +9 -1
  86. package/dist/types/vitest.config.d.ts +2 -0
  87. package/dist/ui-admin/assets/styles/style.css +18 -7
  88. package/package.json +6 -1
  89. package/dist/cjs/assets/scripts/baseBox.js +0 -146
  90. package/dist/cjs/assets/scripts/comboBox.js +0 -137
  91. package/dist/cjs/assets/scripts/datePicker.js +0 -671
  92. package/dist/cjs/assets/scripts/featuredIcon.js +0 -87
  93. package/dist/cjs/assets/scripts/fileInput/const/classNames.js +0 -25
  94. package/dist/cjs/assets/scripts/fileInput/const/index.js +0 -27
  95. package/dist/cjs/assets/scripts/fileInput/const/types.js +0 -13
  96. package/dist/cjs/assets/scripts/fileInput/fileInput.js +0 -78
  97. package/dist/cjs/assets/scripts/fileInput/fileInputModel.js +0 -53
  98. package/dist/cjs/assets/scripts/fileInput/fileInputView.js +0 -152
  99. package/dist/cjs/assets/scripts/fileInput/index.js +0 -44
  100. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInput.js +0 -184
  101. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInputModel.js +0 -222
  102. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInputView.js +0 -356
  103. package/dist/cjs/assets/scripts/imageFileInput/const/classNames.js +0 -31
  104. package/dist/cjs/assets/scripts/imageFileInput/const/index.js +0 -27
  105. package/dist/cjs/assets/scripts/imageFileInput/const/types.js +0 -13
  106. package/dist/cjs/assets/scripts/imageFileInput/index.js +0 -44
  107. package/dist/cjs/assets/scripts/index.js +0 -32
  108. package/dist/cjs/assets/scripts/modal/Modal.js +0 -104
  109. package/dist/cjs/assets/scripts/modal/ModalActions.js +0 -116
  110. package/dist/cjs/assets/scripts/modal/ModalContent.js +0 -46
  111. package/dist/cjs/assets/scripts/modal/ModalHeader.js +0 -104
  112. package/dist/cjs/assets/scripts/modal/const/classNames.js +0 -33
  113. package/dist/cjs/assets/scripts/modal/const/index.js +0 -27
  114. package/dist/cjs/assets/scripts/modal/index.js +0 -61
  115. package/dist/cjs/assets/scripts/modal/utils/contentUtils.js +0 -35
  116. package/dist/cjs/assets/scripts/notification/FloatingNotification.js +0 -178
  117. package/dist/cjs/assets/scripts/notification/FullWidthNotification.js +0 -132
  118. package/dist/cjs/assets/scripts/notification/MessageNotification.js +0 -159
  119. package/dist/cjs/assets/scripts/notification/Notification.js +0 -101
  120. package/dist/cjs/assets/scripts/notification/const/classNames.js +0 -50
  121. package/dist/cjs/assets/scripts/notification/const/icons.js +0 -31
  122. package/dist/cjs/assets/scripts/notification/const/index.js +0 -87
  123. package/dist/cjs/assets/scripts/notification/const/sizes.js +0 -46
  124. package/dist/cjs/assets/scripts/notification/const/types.js +0 -14
  125. package/dist/cjs/assets/scripts/notification/index.js +0 -92
  126. package/dist/cjs/assets/scripts/notification/utils.js +0 -97
  127. package/dist/cjs/assets/scripts/progress-bar/ProgressBar.js +0 -271
  128. package/dist/cjs/assets/scripts/progress-bar/index.js +0 -12
  129. package/dist/cjs/assets/scripts/selectBox.js +0 -169
  130. package/dist/cjs/assets/scripts/shared/ButtonCloseX.js +0 -45
  131. package/dist/cjs/assets/scripts/tab.js +0 -40
  132. package/dist/cjs/assets/scripts/table/Table.js +0 -377
  133. package/dist/cjs/assets/scripts/table/const/classNames.js +0 -33
  134. package/dist/cjs/assets/scripts/table/const/index.js +0 -27
  135. package/dist/cjs/assets/scripts/table/const/types.js +0 -5
  136. package/dist/cjs/assets/scripts/table/index.js +0 -43
  137. package/dist/cjs/assets/scripts/tag/Tag.js +0 -261
  138. package/dist/cjs/assets/scripts/tag/const/classNames.js +0 -20
  139. package/dist/cjs/assets/scripts/tag/const/index.js +0 -38
  140. package/dist/cjs/assets/scripts/tag/const/sizes.js +0 -13
  141. package/dist/cjs/assets/scripts/tag/const/types.js +0 -5
  142. package/dist/cjs/assets/scripts/tag/index.js +0 -44
  143. package/dist/cjs/assets/scripts/tooltip/Tooltip.js +0 -353
  144. package/dist/cjs/assets/scripts/tooltip/TooltipLayerManager.js +0 -82
  145. package/dist/cjs/assets/scripts/tooltip/const/classNames.js +0 -29
  146. package/dist/cjs/assets/scripts/tooltip/const/constants.js +0 -56
  147. package/dist/cjs/assets/scripts/tooltip/const/icons.js +0 -15
  148. package/dist/cjs/assets/scripts/tooltip/const/index.js +0 -123
  149. package/dist/cjs/assets/scripts/tooltip/const/templates.js +0 -66
  150. package/dist/cjs/assets/scripts/tooltip/const/types.js +0 -5
  151. package/dist/cjs/assets/scripts/tooltip/index.js +0 -57
  152. package/dist/cjs/assets/scripts/tooltip/utils.js +0 -40
  153. package/dist/cjs/assets/scripts/utils/debounce.js +0 -32
  154. package/dist/cjs/assets/scripts/utils/unifiedBox/domRenderer.js +0 -370
  155. package/dist/cjs/assets/scripts/utils/unifiedBox/dropdownModel.js +0 -285
  156. package/dist/cjs/assets/scripts/utils/unifiedBox/unifiedBoxController.js +0 -622
  157. package/dist/cjs/assets/scripts/utils/unifiedBox/unifiedBoxManager.js +0 -473
  158. package/dist/esm/assets/scripts/baseBox.js +0 -139
  159. package/dist/esm/assets/scripts/comboBox.js +0 -130
  160. package/dist/esm/assets/scripts/datePicker.js +0 -663
  161. package/dist/esm/assets/scripts/featuredIcon.js +0 -80
  162. package/dist/esm/assets/scripts/fileInput/const/classNames.js +0 -16
  163. package/dist/esm/assets/scripts/fileInput/const/index.js +0 -2
  164. package/dist/esm/assets/scripts/fileInput/const/types.js +0 -7
  165. package/dist/esm/assets/scripts/fileInput/fileInput.js +0 -71
  166. package/dist/esm/assets/scripts/fileInput/fileInputModel.js +0 -46
  167. package/dist/esm/assets/scripts/fileInput/fileInputView.js +0 -145
  168. package/dist/esm/assets/scripts/fileInput/index.js +0 -9
  169. package/dist/esm/assets/scripts/imageFileInput/ImageFileInput.js +0 -177
  170. package/dist/esm/assets/scripts/imageFileInput/ImageFileInputModel.js +0 -215
  171. package/dist/esm/assets/scripts/imageFileInput/ImageFileInputView.js +0 -349
  172. package/dist/esm/assets/scripts/imageFileInput/const/classNames.js +0 -20
  173. package/dist/esm/assets/scripts/imageFileInput/const/index.js +0 -2
  174. package/dist/esm/assets/scripts/imageFileInput/const/types.js +0 -7
  175. package/dist/esm/assets/scripts/imageFileInput/index.js +0 -9
  176. package/dist/esm/assets/scripts/index.js +0 -30
  177. package/dist/esm/assets/scripts/modal/Modal.js +0 -98
  178. package/dist/esm/assets/scripts/modal/ModalActions.js +0 -109
  179. package/dist/esm/assets/scripts/modal/ModalContent.js +0 -39
  180. package/dist/esm/assets/scripts/modal/ModalHeader.js +0 -97
  181. package/dist/esm/assets/scripts/modal/const/classNames.js +0 -23
  182. package/dist/esm/assets/scripts/modal/const/index.js +0 -2
  183. package/dist/esm/assets/scripts/modal/const/types.js +0 -1
  184. package/dist/esm/assets/scripts/modal/index.js +0 -15
  185. package/dist/esm/assets/scripts/modal/utils/contentUtils.js +0 -28
  186. package/dist/esm/assets/scripts/notification/FloatingNotification.js +0 -172
  187. package/dist/esm/assets/scripts/notification/FullWidthNotification.js +0 -125
  188. package/dist/esm/assets/scripts/notification/MessageNotification.js +0 -152
  189. package/dist/esm/assets/scripts/notification/Notification.js +0 -94
  190. package/dist/esm/assets/scripts/notification/const/classNames.js +0 -44
  191. package/dist/esm/assets/scripts/notification/const/icons.js +0 -25
  192. package/dist/esm/assets/scripts/notification/const/index.js +0 -4
  193. package/dist/esm/assets/scripts/notification/const/sizes.js +0 -40
  194. package/dist/esm/assets/scripts/notification/const/types.js +0 -8
  195. package/dist/esm/assets/scripts/notification/index.js +0 -11
  196. package/dist/esm/assets/scripts/notification/utils.js +0 -84
  197. package/dist/esm/assets/scripts/progress-bar/ProgressBar.js +0 -264
  198. package/dist/esm/assets/scripts/progress-bar/index.js +0 -1
  199. package/dist/esm/assets/scripts/selectBox.js +0 -162
  200. package/dist/esm/assets/scripts/shared/ButtonCloseX.js +0 -37
  201. package/dist/esm/assets/scripts/tab.js +0 -33
  202. package/dist/esm/assets/scripts/table/Table.js +0 -370
  203. package/dist/esm/assets/scripts/table/const/classNames.js +0 -27
  204. package/dist/esm/assets/scripts/table/const/index.js +0 -2
  205. package/dist/esm/assets/scripts/table/const/types.js +0 -1
  206. package/dist/esm/assets/scripts/table/index.js +0 -8
  207. package/dist/esm/assets/scripts/tag/Tag.js +0 -254
  208. package/dist/esm/assets/scripts/tag/const/classNames.js +0 -12
  209. package/dist/esm/assets/scripts/tag/const/index.js +0 -3
  210. package/dist/esm/assets/scripts/tag/const/sizes.js +0 -7
  211. package/dist/esm/assets/scripts/tag/const/types.js +0 -1
  212. package/dist/esm/assets/scripts/tag/index.js +0 -9
  213. package/dist/esm/assets/scripts/tooltip/Tooltip.js +0 -346
  214. package/dist/esm/assets/scripts/tooltip/TooltipLayerManager.js +0 -75
  215. package/dist/esm/assets/scripts/tooltip/const/classNames.js +0 -23
  216. package/dist/esm/assets/scripts/tooltip/const/constants.js +0 -50
  217. package/dist/esm/assets/scripts/tooltip/const/icons.js +0 -9
  218. package/dist/esm/assets/scripts/tooltip/const/index.js +0 -4
  219. package/dist/esm/assets/scripts/tooltip/const/templates.js +0 -59
  220. package/dist/esm/assets/scripts/tooltip/const/types.js +0 -1
  221. package/dist/esm/assets/scripts/tooltip/index.js +0 -10
  222. package/dist/esm/assets/scripts/tooltip/utils.js +0 -34
  223. package/dist/esm/assets/scripts/utils/debounce.js +0 -26
  224. package/dist/esm/assets/scripts/utils/unifiedBox/domRenderer.js +0 -363
  225. package/dist/esm/assets/scripts/utils/unifiedBox/dropdownModel.js +0 -279
  226. package/dist/esm/assets/scripts/utils/unifiedBox/unifiedBoxController.js +0 -615
  227. package/dist/esm/assets/scripts/utils/unifiedBox/unifiedBoxManager.js +0 -466
  228. package/dist/temp/assets/scripts/baseBox.d.ts +0 -55
  229. package/dist/temp/assets/scripts/baseBox.js +0 -140
  230. package/dist/temp/assets/scripts/comboBox.d.ts +0 -60
  231. package/dist/temp/assets/scripts/comboBox.js +0 -132
  232. package/dist/temp/assets/scripts/datePicker.d.ts +0 -86
  233. package/dist/temp/assets/scripts/datePicker.js +0 -699
  234. package/dist/temp/assets/scripts/featuredIcon.d.ts +0 -22
  235. package/dist/temp/assets/scripts/featuredIcon.js +0 -79
  236. package/dist/temp/assets/scripts/fileInput/const/classNames.d.ts +0 -15
  237. package/dist/temp/assets/scripts/fileInput/const/classNames.js +0 -16
  238. package/dist/temp/assets/scripts/fileInput/const/index.d.ts +0 -2
  239. package/dist/temp/assets/scripts/fileInput/const/index.js +0 -2
  240. package/dist/temp/assets/scripts/fileInput/const/types.d.ts +0 -88
  241. package/dist/temp/assets/scripts/fileInput/const/types.js +0 -7
  242. package/dist/temp/assets/scripts/fileInput/fileInput.d.ts +0 -13
  243. package/dist/temp/assets/scripts/fileInput/fileInput.js +0 -71
  244. package/dist/temp/assets/scripts/fileInput/fileInputModel.d.ts +0 -12
  245. package/dist/temp/assets/scripts/fileInput/fileInputModel.js +0 -37
  246. package/dist/temp/assets/scripts/fileInput/fileInputView.d.ts +0 -42
  247. package/dist/temp/assets/scripts/fileInput/fileInputView.js +0 -145
  248. package/dist/temp/assets/scripts/fileInput/index.d.ts +0 -3
  249. package/dist/temp/assets/scripts/fileInput/index.js +0 -9
  250. package/dist/temp/assets/scripts/imageFileInput/ImageFileInput.d.ts +0 -63
  251. package/dist/temp/assets/scripts/imageFileInput/ImageFileInput.js +0 -180
  252. package/dist/temp/assets/scripts/imageFileInput/ImageFileInputModel.d.ts +0 -73
  253. package/dist/temp/assets/scripts/imageFileInput/ImageFileInputModel.js +0 -214
  254. package/dist/temp/assets/scripts/imageFileInput/ImageFileInputView.d.ts +0 -79
  255. package/dist/temp/assets/scripts/imageFileInput/ImageFileInputView.js +0 -350
  256. package/dist/temp/assets/scripts/imageFileInput/const/classNames.d.ts +0 -19
  257. package/dist/temp/assets/scripts/imageFileInput/const/classNames.js +0 -20
  258. package/dist/temp/assets/scripts/imageFileInput/const/index.d.ts +0 -2
  259. package/dist/temp/assets/scripts/imageFileInput/const/index.js +0 -2
  260. package/dist/temp/assets/scripts/imageFileInput/const/types.d.ts +0 -125
  261. package/dist/temp/assets/scripts/imageFileInput/const/types.js +0 -7
  262. package/dist/temp/assets/scripts/imageFileInput/index.d.ts +0 -3
  263. package/dist/temp/assets/scripts/imageFileInput/index.js +0 -9
  264. package/dist/temp/assets/scripts/index.d.ts +0 -34
  265. package/dist/temp/assets/scripts/index.js +0 -30
  266. package/dist/temp/assets/scripts/modal/Modal.d.ts +0 -27
  267. package/dist/temp/assets/scripts/modal/Modal.js +0 -100
  268. package/dist/temp/assets/scripts/modal/ModalActions.d.ts +0 -18
  269. package/dist/temp/assets/scripts/modal/ModalActions.js +0 -117
  270. package/dist/temp/assets/scripts/modal/ModalContent.d.ts +0 -13
  271. package/dist/temp/assets/scripts/modal/ModalContent.js +0 -39
  272. package/dist/temp/assets/scripts/modal/ModalHeader.d.ts +0 -15
  273. package/dist/temp/assets/scripts/modal/ModalHeader.js +0 -96
  274. package/dist/temp/assets/scripts/modal/const/classNames.d.ts +0 -22
  275. package/dist/temp/assets/scripts/modal/const/classNames.js +0 -23
  276. package/dist/temp/assets/scripts/modal/const/index.d.ts +0 -2
  277. package/dist/temp/assets/scripts/modal/const/index.js +0 -2
  278. package/dist/temp/assets/scripts/modal/const/types.d.ts +0 -61
  279. package/dist/temp/assets/scripts/modal/const/types.js +0 -1
  280. package/dist/temp/assets/scripts/modal/index.d.ts +0 -7
  281. package/dist/temp/assets/scripts/modal/index.js +0 -15
  282. package/dist/temp/assets/scripts/modal/utils/contentUtils.d.ts +0 -10
  283. package/dist/temp/assets/scripts/modal/utils/contentUtils.js +0 -29
  284. package/dist/temp/assets/scripts/notification/FloatingNotification.d.ts +0 -24
  285. package/dist/temp/assets/scripts/notification/FloatingNotification.js +0 -157
  286. package/dist/temp/assets/scripts/notification/FullWidthNotification.d.ts +0 -21
  287. package/dist/temp/assets/scripts/notification/FullWidthNotification.js +0 -110
  288. package/dist/temp/assets/scripts/notification/MessageNotification.d.ts +0 -22
  289. package/dist/temp/assets/scripts/notification/MessageNotification.js +0 -140
  290. package/dist/temp/assets/scripts/notification/Notification.d.ts +0 -21
  291. package/dist/temp/assets/scripts/notification/Notification.js +0 -94
  292. package/dist/temp/assets/scripts/notification/const/classNames.d.ts +0 -43
  293. package/dist/temp/assets/scripts/notification/const/classNames.js +0 -44
  294. package/dist/temp/assets/scripts/notification/const/icons.d.ts +0 -25
  295. package/dist/temp/assets/scripts/notification/const/icons.js +0 -25
  296. package/dist/temp/assets/scripts/notification/const/index.d.ts +0 -5
  297. package/dist/temp/assets/scripts/notification/const/index.js +0 -4
  298. package/dist/temp/assets/scripts/notification/const/sizes.d.ts +0 -32
  299. package/dist/temp/assets/scripts/notification/const/sizes.js +0 -40
  300. package/dist/temp/assets/scripts/notification/const/types.d.ts +0 -19
  301. package/dist/temp/assets/scripts/notification/const/types.js +0 -8
  302. package/dist/temp/assets/scripts/notification/index.d.ts +0 -7
  303. package/dist/temp/assets/scripts/notification/index.js +0 -11
  304. package/dist/temp/assets/scripts/notification/utils.d.ts +0 -8
  305. package/dist/temp/assets/scripts/notification/utils.js +0 -89
  306. package/dist/temp/assets/scripts/progress-bar/ProgressBar.d.ts +0 -67
  307. package/dist/temp/assets/scripts/progress-bar/ProgressBar.js +0 -263
  308. package/dist/temp/assets/scripts/progress-bar/index.d.ts +0 -1
  309. package/dist/temp/assets/scripts/progress-bar/index.js +0 -1
  310. package/dist/temp/assets/scripts/selectBox.d.ts +0 -50
  311. package/dist/temp/assets/scripts/selectBox.js +0 -170
  312. package/dist/temp/assets/scripts/shared/ButtonCloseX.d.ts +0 -5
  313. package/dist/temp/assets/scripts/shared/ButtonCloseX.js +0 -33
  314. package/dist/temp/assets/scripts/tab.d.ts +0 -7
  315. package/dist/temp/assets/scripts/tab.js +0 -33
  316. package/dist/temp/assets/scripts/table/Table.d.ts +0 -41
  317. package/dist/temp/assets/scripts/table/Table.js +0 -378
  318. package/dist/temp/assets/scripts/table/const/classNames.d.ts +0 -27
  319. package/dist/temp/assets/scripts/table/const/classNames.js +0 -27
  320. package/dist/temp/assets/scripts/table/const/index.d.ts +0 -2
  321. package/dist/temp/assets/scripts/table/const/index.js +0 -2
  322. package/dist/temp/assets/scripts/table/const/types.d.ts +0 -23
  323. package/dist/temp/assets/scripts/table/const/types.js +0 -1
  324. package/dist/temp/assets/scripts/table/index.d.ts +0 -3
  325. package/dist/temp/assets/scripts/table/index.js +0 -8
  326. package/dist/temp/assets/scripts/tag/Tag.d.ts +0 -27
  327. package/dist/temp/assets/scripts/tag/Tag.js +0 -259
  328. package/dist/temp/assets/scripts/tag/const/classNames.d.ts +0 -11
  329. package/dist/temp/assets/scripts/tag/const/classNames.js +0 -12
  330. package/dist/temp/assets/scripts/tag/const/index.d.ts +0 -3
  331. package/dist/temp/assets/scripts/tag/const/index.js +0 -3
  332. package/dist/temp/assets/scripts/tag/const/sizes.d.ts +0 -7
  333. package/dist/temp/assets/scripts/tag/const/sizes.js +0 -7
  334. package/dist/temp/assets/scripts/tag/const/types.d.ts +0 -33
  335. package/dist/temp/assets/scripts/tag/const/types.js +0 -1
  336. package/dist/temp/assets/scripts/tag/index.d.ts +0 -3
  337. package/dist/temp/assets/scripts/tag/index.js +0 -9
  338. package/dist/temp/assets/scripts/tooltip/Tooltip.d.ts +0 -54
  339. package/dist/temp/assets/scripts/tooltip/Tooltip.js +0 -335
  340. package/dist/temp/assets/scripts/tooltip/TooltipLayerManager.d.ts +0 -21
  341. package/dist/temp/assets/scripts/tooltip/TooltipLayerManager.js +0 -71
  342. package/dist/temp/assets/scripts/tooltip/const/classNames.d.ts +0 -17
  343. package/dist/temp/assets/scripts/tooltip/const/classNames.js +0 -23
  344. package/dist/temp/assets/scripts/tooltip/const/constants.d.ts +0 -33
  345. package/dist/temp/assets/scripts/tooltip/const/constants.js +0 -46
  346. package/dist/temp/assets/scripts/tooltip/const/icons.d.ts +0 -4
  347. package/dist/temp/assets/scripts/tooltip/const/icons.js +0 -9
  348. package/dist/temp/assets/scripts/tooltip/const/index.d.ts +0 -5
  349. package/dist/temp/assets/scripts/tooltip/const/index.js +0 -4
  350. package/dist/temp/assets/scripts/tooltip/const/templates.d.ts +0 -16
  351. package/dist/temp/assets/scripts/tooltip/const/templates.js +0 -59
  352. package/dist/temp/assets/scripts/tooltip/const/types.d.ts +0 -14
  353. package/dist/temp/assets/scripts/tooltip/const/types.js +0 -1
  354. package/dist/temp/assets/scripts/tooltip/index.d.ts +0 -6
  355. package/dist/temp/assets/scripts/tooltip/index.js +0 -10
  356. package/dist/temp/assets/scripts/tooltip/utils.d.ts +0 -2
  357. package/dist/temp/assets/scripts/tooltip/utils.js +0 -33
  358. package/dist/temp/assets/scripts/utils/debounce.d.ts +0 -8
  359. package/dist/temp/assets/scripts/utils/debounce.js +0 -23
  360. package/dist/temp/assets/scripts/utils/unifiedBox/domRenderer.d.ts +0 -107
  361. package/dist/temp/assets/scripts/utils/unifiedBox/domRenderer.js +0 -367
  362. package/dist/temp/assets/scripts/utils/unifiedBox/dropdownModel.d.ts +0 -142
  363. package/dist/temp/assets/scripts/utils/unifiedBox/dropdownModel.js +0 -286
  364. package/dist/temp/assets/scripts/utils/unifiedBox/unifiedBoxController.d.ts +0 -156
  365. package/dist/temp/assets/scripts/utils/unifiedBox/unifiedBoxController.js +0 -604
  366. package/dist/temp/assets/scripts/utils/unifiedBox/unifiedBoxManager.d.ts +0 -95
  367. package/dist/temp/assets/scripts/utils/unifiedBox/unifiedBoxManager.js +0 -482
  368. package/dist/types/assets/scripts/baseBox.d.ts +0 -55
  369. package/dist/types/assets/scripts/comboBox.d.ts +0 -60
  370. package/dist/types/assets/scripts/datePicker.d.ts +0 -86
  371. package/dist/types/assets/scripts/featuredIcon.d.ts +0 -22
  372. package/dist/types/assets/scripts/fileInput/const/classNames.d.ts +0 -15
  373. package/dist/types/assets/scripts/fileInput/const/index.d.ts +0 -2
  374. package/dist/types/assets/scripts/fileInput/const/types.d.ts +0 -88
  375. package/dist/types/assets/scripts/fileInput/fileInput.d.ts +0 -13
  376. package/dist/types/assets/scripts/fileInput/fileInputModel.d.ts +0 -12
  377. package/dist/types/assets/scripts/fileInput/fileInputView.d.ts +0 -42
  378. package/dist/types/assets/scripts/fileInput/index.d.ts +0 -3
  379. package/dist/types/assets/scripts/imageFileInput/ImageFileInput.d.ts +0 -63
  380. package/dist/types/assets/scripts/imageFileInput/ImageFileInputModel.d.ts +0 -73
  381. package/dist/types/assets/scripts/imageFileInput/ImageFileInputView.d.ts +0 -79
  382. package/dist/types/assets/scripts/imageFileInput/const/classNames.d.ts +0 -19
  383. package/dist/types/assets/scripts/imageFileInput/const/index.d.ts +0 -2
  384. package/dist/types/assets/scripts/imageFileInput/const/types.d.ts +0 -125
  385. package/dist/types/assets/scripts/imageFileInput/index.d.ts +0 -3
  386. package/dist/types/assets/scripts/index.d.ts +0 -34
  387. package/dist/types/assets/scripts/modal/Modal.d.ts +0 -27
  388. package/dist/types/assets/scripts/modal/ModalActions.d.ts +0 -18
  389. package/dist/types/assets/scripts/modal/ModalContent.d.ts +0 -13
  390. package/dist/types/assets/scripts/modal/ModalHeader.d.ts +0 -15
  391. package/dist/types/assets/scripts/modal/const/classNames.d.ts +0 -22
  392. package/dist/types/assets/scripts/modal/const/index.d.ts +0 -2
  393. package/dist/types/assets/scripts/modal/const/types.d.ts +0 -61
  394. package/dist/types/assets/scripts/modal/index.d.ts +0 -7
  395. package/dist/types/assets/scripts/modal/utils/contentUtils.d.ts +0 -10
  396. package/dist/types/assets/scripts/notification/FloatingNotification.d.ts +0 -24
  397. package/dist/types/assets/scripts/notification/FullWidthNotification.d.ts +0 -21
  398. package/dist/types/assets/scripts/notification/MessageNotification.d.ts +0 -22
  399. package/dist/types/assets/scripts/notification/Notification.d.ts +0 -21
  400. package/dist/types/assets/scripts/notification/const/classNames.d.ts +0 -43
  401. package/dist/types/assets/scripts/notification/const/icons.d.ts +0 -25
  402. package/dist/types/assets/scripts/notification/const/index.d.ts +0 -5
  403. package/dist/types/assets/scripts/notification/const/sizes.d.ts +0 -32
  404. package/dist/types/assets/scripts/notification/const/types.d.ts +0 -19
  405. package/dist/types/assets/scripts/notification/index.d.ts +0 -7
  406. package/dist/types/assets/scripts/notification/utils.d.ts +0 -8
  407. package/dist/types/assets/scripts/progress-bar/ProgressBar.d.ts +0 -67
  408. package/dist/types/assets/scripts/progress-bar/index.d.ts +0 -1
  409. package/dist/types/assets/scripts/selectBox.d.ts +0 -50
  410. package/dist/types/assets/scripts/shared/ButtonCloseX.d.ts +0 -5
  411. package/dist/types/assets/scripts/tab.d.ts +0 -7
  412. package/dist/types/assets/scripts/table/Table.d.ts +0 -41
  413. package/dist/types/assets/scripts/table/const/classNames.d.ts +0 -27
  414. package/dist/types/assets/scripts/table/const/index.d.ts +0 -2
  415. package/dist/types/assets/scripts/table/const/types.d.ts +0 -23
  416. package/dist/types/assets/scripts/table/index.d.ts +0 -3
  417. package/dist/types/assets/scripts/tag/Tag.d.ts +0 -27
  418. package/dist/types/assets/scripts/tag/const/classNames.d.ts +0 -11
  419. package/dist/types/assets/scripts/tag/const/index.d.ts +0 -3
  420. package/dist/types/assets/scripts/tag/const/sizes.d.ts +0 -7
  421. package/dist/types/assets/scripts/tag/const/types.d.ts +0 -33
  422. package/dist/types/assets/scripts/tag/index.d.ts +0 -3
  423. package/dist/types/assets/scripts/tooltip/Tooltip.d.ts +0 -54
  424. package/dist/types/assets/scripts/tooltip/TooltipLayerManager.d.ts +0 -21
  425. package/dist/types/assets/scripts/tooltip/const/classNames.d.ts +0 -17
  426. package/dist/types/assets/scripts/tooltip/const/constants.d.ts +0 -33
  427. package/dist/types/assets/scripts/tooltip/const/icons.d.ts +0 -4
  428. package/dist/types/assets/scripts/tooltip/const/index.d.ts +0 -5
  429. package/dist/types/assets/scripts/tooltip/const/templates.d.ts +0 -16
  430. package/dist/types/assets/scripts/tooltip/const/types.d.ts +0 -14
  431. package/dist/types/assets/scripts/tooltip/index.d.ts +0 -6
  432. package/dist/types/assets/scripts/tooltip/utils.d.ts +0 -2
  433. package/dist/types/assets/scripts/utils/debounce.d.ts +0 -8
  434. package/dist/types/assets/scripts/utils/unifiedBox/domRenderer.d.ts +0 -107
  435. package/dist/types/assets/scripts/utils/unifiedBox/dropdownModel.d.ts +0 -142
  436. package/dist/types/assets/scripts/utils/unifiedBox/unifiedBoxController.d.ts +0 -156
  437. package/dist/types/assets/scripts/utils/unifiedBox/unifiedBoxManager.d.ts +0 -95
  438. /package/dist/cjs/{assets/scripts/modal/const/types.js → src/types/component-meta.js} +0 -0
@@ -1,663 +0,0 @@
1
- import { formatDateInput, formatHourInput, formatMinuteInput } from '../../src/utils/date-picker';
2
- import flatpickr from 'flatpickr';
3
- import { Korean } from 'flatpickr/dist/l10n/ko';
4
- import moment from 'moment';
5
- // Constants
6
- const CONSTANTS = {
7
- ICON_SIZES: {
8
- xs: '14',
9
- sm: '16'
10
- },
11
- CLASS_NAMES: {
12
- RANGE_WRAPPER: 'ncua-range-date-picker',
13
- RANGE_WITH_BUTTONS: 'ncua-range-date-picker-with-buttons',
14
- DATE_PICKER: 'ncua-date-picker',
15
- DATE_PICKER_INPUT: 'ncua-date-picker__input',
16
- DATE_PICKER_ICO: 'ncua-date-picker__ico',
17
- BUTTON_GROUP: 'ncua-button-group',
18
- BUTTON_GROUP_HAS_BORDER: 'has-border',
19
- BUTTON: 'ncua-button-group__item',
20
- HAS_TIME: 'ncua-date-picker--has-time'
21
- },
22
- FORMATS: {
23
- DATE: 'YYYY-MM-DD',
24
- DATE_TIME: 'YYYY-MM-DD HH:mm'
25
- },
26
- ERROR_MESSAGES: {
27
- FLATPICKR_NOT_LOADED: 'flatpickr 라이브러리가 로드되지 않았습니다.',
28
- MOMENT_NOT_LOADED: 'moment 라이브러리가 로드되지 않았습니다.'
29
- }
30
- };
31
- class DatePicker {
32
- constructor(wrapper, options) {
33
- this.flatpickrInstances = [];
34
- this.currentButton = null;
35
- const {
36
- buttons = [],
37
- size,
38
- autoComplete = 'off',
39
- datePickerOptions,
40
- onValidationError
41
- } = options;
42
- this.validateWrapper(wrapper);
43
- this.validationDependencies(buttons?.length > 0);
44
- this.instanceId = DatePicker.instanceCounter++;
45
- this.contentWrapper = wrapper;
46
- this.datePickerOptions = datePickerOptions;
47
- this.buttons = buttons;
48
- this.size = size;
49
- this.separator = '~';
50
- this.autoComplete = autoComplete;
51
- this.dateFormat = datePickerOptions[0].options.enableTime ? CONSTANTS.FORMATS.DATE_TIME : CONSTANTS.FORMATS.DATE;
52
- this.onValidationError = onValidationError;
53
- this.init();
54
- }
55
- validateWrapper(wrapper) {
56
- if (DatePicker.usedWrappers.has(wrapper)) {
57
- throw new Error(`이미 사용 중인 DOM 요소입니다. ` + `같은 DOM 요소에는 하나의 DatePicker 인스턴스만 생성할 수 있습니다. ` + `다른 DOM 요소를 사용하거나 기존 인스턴스를 먼저 제거해주세요.`);
58
- }
59
- DatePicker.usedWrappers.add(wrapper);
60
- }
61
- init() {
62
- this.contentWrapper.innerHTML = '';
63
- this.initializeWrapper();
64
- this.initButtonGroup();
65
- this.initDatePicker();
66
- }
67
- validationDependencies(hasButtons) {
68
- if (typeof flatpickr === 'undefined') {
69
- throw new Error(CONSTANTS.ERROR_MESSAGES.FLATPICKR_NOT_LOADED);
70
- }
71
- if (hasButtons && typeof moment === 'undefined') {
72
- throw new Error(CONSTANTS.ERROR_MESSAGES.MOMENT_NOT_LOADED);
73
- }
74
- }
75
- initializeWrapper() {
76
- if (this.datePickerOptions.length < 2) return;
77
- this.contentWrapper.classList.add(CONSTANTS.CLASS_NAMES.RANGE_WRAPPER);
78
- }
79
- initButtonGroup() {
80
- if (this.buttons.length === 0) return;
81
- if (this.contentWrapper.classList.contains(CONSTANTS.CLASS_NAMES.RANGE_WRAPPER)) {
82
- this.contentWrapper.classList.replace(CONSTANTS.CLASS_NAMES.RANGE_WRAPPER, CONSTANTS.CLASS_NAMES.RANGE_WITH_BUTTONS);
83
- }
84
- this.contentWrapper.classList.add(CONSTANTS.CLASS_NAMES.RANGE_WITH_BUTTONS);
85
- const createButtonWrapperElement = () => {
86
- const wrapper = document.createElement('div');
87
- wrapper.className = `${CONSTANTS.CLASS_NAMES.BUTTON_GROUP} ${CONSTANTS.CLASS_NAMES.BUTTON_GROUP_HAS_BORDER} ${CONSTANTS.CLASS_NAMES.BUTTON_GROUP}--${this.size}`;
88
- return wrapper;
89
- };
90
- const appendButtons = wrapper => {
91
- this.buttons.forEach(button => {
92
- const buttonElement = this.createButtonElement(button);
93
- wrapper.appendChild(buttonElement);
94
- });
95
- };
96
- const wrapper = createButtonWrapperElement();
97
- appendButtons(wrapper);
98
- wrapper.addEventListener('click', this.updateDateWithButton.bind(this));
99
- this.contentWrapper.appendChild(wrapper);
100
- }
101
- createButtonElement(button) {
102
- if (button.isCurrent) {
103
- this.currentButton = button;
104
- }
105
- const buttonElement = document.createElement('button');
106
- buttonElement.className = `${CONSTANTS.CLASS_NAMES.BUTTON} ${button.isCurrent ? 'is-current' : ''}`;
107
- buttonElement.textContent = button.text;
108
- buttonElement.type = 'button';
109
- return buttonElement;
110
- }
111
- reRenderButtonGroup(buttons) {
112
- const buttonGroup = this.contentWrapper.querySelector(`.${CONSTANTS.CLASS_NAMES.BUTTON_GROUP}`);
113
- if (!buttonGroup) return;
114
- buttonGroup.innerHTML = '';
115
- buttons.forEach(button => {
116
- if (button.isCurrent) {
117
- this.currentButton = button;
118
- }
119
- buttonGroup.appendChild(this.createButtonElement(button));
120
- });
121
- this.buttons = buttons;
122
- }
123
- initDatePicker() {
124
- const datePickerOptions = this.datePickerOptions;
125
- const createInputWrapperElement = size => {
126
- const wrapper = document.createElement('div');
127
- wrapper.className = `${CONSTANTS.CLASS_NAMES.DATE_PICKER} ${CONSTANTS.CLASS_NAMES.DATE_PICKER}--${size} ${this.datePickerOptions.some(option => option.options.enableTime) ? CONSTANTS.CLASS_NAMES.HAS_TIME : ''}`;
128
- return wrapper;
129
- };
130
- const createInput = (datePickerOption, index) => {
131
- const defaultPlaceHolder = datePickerOption.options.enableTime ? CONSTANTS.FORMATS.DATE_TIME : CONSTANTS.FORMATS.DATE;
132
- const input = document.createElement('input');
133
- input.type = 'text';
134
- input.placeholder = datePickerOption.placeholder ?? defaultPlaceHolder;
135
- input.name = datePickerOption.attrName ?? '';
136
- input.id = `datepicker-${this.instanceId}-${datePickerOption.element}-${index}`;
137
- input.className = CONSTANTS.CLASS_NAMES.DATE_PICKER_INPUT;
138
- input.autocomplete = this.autoComplete;
139
- return input;
140
- };
141
- const createIcon = (size, elementId, index) => {
142
- const getCalendarIconSvg = size => {
143
- return `
144
- <svg xmlns="http://www.w3.org/2000/svg" width="${size}" height="${size}" viewBox="0 0 16 16" fill="none">
145
- <path
146
- d="M14 6.66671H2M10.6667 1.33337V4.00004M5.33333 1.33337V4.00004M5.2 14.6667H10.8C11.9201 14.6667 12.4802 14.6667 12.908 14.4487C13.2843 14.257 13.5903 13.951 13.782 13.5747C14 13.1469 14 12.5868 14 11.4667V5.86671C14 4.7466 14 4.18655 13.782 3.75873C13.5903 3.3824 13.2843 3.07644 12.908 2.88469C12.4802 2.66671 11.9201 2.66671 10.8 2.66671H5.2C4.0799 2.66671 3.51984 2.66671 3.09202 2.88469C2.71569 3.07644 2.40973 3.3824 2.21799 3.75873C2 4.18655 2 4.7466 2 5.86671V11.4667C2 12.5868 2 13.1469 2.21799 13.5747C2.40973 13.951 2.71569 14.257 3.09202 14.4487C3.51984 14.6667 4.0799 14.6667 5.2 14.6667Z"
147
- stroke="black"
148
- stroke-width="1.33333"
149
- stroke-linecap="round"
150
- stroke-linejoin="round"
151
- ></path>
152
- </svg>`;
153
- };
154
- const ico = document.createElement('label');
155
- ico.htmlFor = `datepicker-${this.instanceId}-${elementId}-${index}`;
156
- ico.className = CONSTANTS.CLASS_NAMES.DATE_PICKER_ICO;
157
- ico.innerHTML = getCalendarIconSvg(CONSTANTS.ICON_SIZES[size]);
158
- return ico;
159
- };
160
- const insertSeparator = () => {
161
- const span = document.createElement('span');
162
- span.textContent = this.separator;
163
- this.contentWrapper.insertBefore(span, this.contentWrapper.querySelectorAll(`.${CONSTANTS.CLASS_NAMES.DATE_PICKER}`)[1]);
164
- };
165
- const createDatePickerElement = (datePickerOption, index) => {
166
- const inputWrapper = createInputWrapperElement(this.size);
167
- const input = createInput(datePickerOption, index);
168
- inputWrapper.appendChild(input);
169
- inputWrapper.appendChild(createIcon(this.size, datePickerOption.element, index));
170
- inputWrapper.addEventListener('click', () => {
171
- // biome-ignore lint/suspicious/noAssignInExpressions: <explanation>
172
- // biome-ignore lint/suspicious/useIterableCallbackReturn: <explanation>
173
- this.buttons.forEach(button => button.isCurrent = false);
174
- this.currentButton = null;
175
- this.reRenderButtonGroup(this.buttons);
176
- });
177
- this.contentWrapper.appendChild(inputWrapper);
178
- if (index > 0) {
179
- insertSeparator();
180
- }
181
- return this.initializeFlatpickr(input, datePickerOption.options, inputWrapper);
182
- };
183
- const createFlatpickrInstances = datePickerOptions => {
184
- return datePickerOptions.map((datePickerOption, index) => createDatePickerElement(datePickerOption, index));
185
- };
186
- const calcInitDates = datePickerOptions => {
187
- if (this.buttons.length > 0) {
188
- const currentButton = this.buttons.find(button => button.isCurrent);
189
- if (!currentButton) {
190
- return datePickerOptions.map(() => '');
191
- }
192
- return this.calculateDatesFromButton(currentButton);
193
- }
194
- return datePickerOptions.map(datePickerOption => {
195
- if (datePickerOption.options?.defaultDate) {
196
- return moment(datePickerOption.options.defaultDate.toString()).format(this.dateFormat);
197
- }
198
- return '';
199
- });
200
- };
201
- this.flatpickrInstances = createFlatpickrInstances(this.datePickerOptions);
202
- const dates = calcInitDates(datePickerOptions);
203
- this.setMultipleDates(dates);
204
- }
205
- initializeFlatpickr(input, options, wrapper) {
206
- // flatpickr locale 설정 확인
207
- const locale = typeof options.locale === 'string' ? options.locale : 'ko';
208
- this.setupFlatpickrLocale(locale, options);
209
- const onInputHandler = this.createInputHandler();
210
- const onHourInputHandler = this.createHourInputHandler();
211
- const onMinuteInputHandler = this.createMinuteInputHandler();
212
- const onMouseDown = this.createMouseDownHandler(wrapper);
213
- // onBlur 핸들러 추가하여 입력 전 날짜 저장
214
- const onBlurHandler = this.createBlurHandler();
215
- document.addEventListener('mousedown', onMouseDown, true);
216
- return flatpickr(input, {
217
- ...options,
218
- allowInput: options.allowInput ?? true,
219
- appendTo: wrapper,
220
- time_24hr: true,
221
- defaultHour: options.defaultHour || 0,
222
- defaultMinute: options.defaultMinute || 0,
223
- locale,
224
- formatDate: (date, format, locale) => {
225
- try {
226
- // 유효한 날짜인지 확인
227
- if (!date || !(date instanceof Date) || isNaN(date.getTime())) {
228
- return '';
229
- }
230
- // moment로 포맷팅
231
- const momentDate = moment(date);
232
- if (!momentDate.isValid()) {
233
- return '';
234
- }
235
- // format을 moment 형식으로 변환
236
- const momentFormat = this.convertFlatpickrFormatToMoment(format);
237
- return momentDate.format(momentFormat);
238
- } catch (error) {
239
- // 오류 발생 시 빈 문자열 반환 (232-23 같은 잘못된 날짜 처리)
240
- return '';
241
- }
242
- },
243
- onChange: this.createOnChangeHandler(options),
244
- onReady: this.createOnReadyHandler(onInputHandler, onHourInputHandler, onMinuteInputHandler, onBlurHandler),
245
- onDestroy: this.createOnDestroyHandler(onInputHandler, onHourInputHandler, onMinuteInputHandler, onMouseDown, onBlurHandler)
246
- });
247
- }
248
- createBlurHandler() {
249
- return e => {
250
- const target = e.target;
251
- const inputIndex = this.findFlatpickrInstanceIndexByInput(target);
252
- if (inputIndex < 0) return;
253
- // blur 시점에 현재 selectedDates를 저장 (입력 전 상태)
254
- const instance = this.flatpickrInstances[inputIndex];
255
- if (instance && instance.selectedDates.length > 0) {
256
- // 이전 날짜를 별도로 저장 (onChange에서 사용)
257
- instance._previousDateBeforeInput = instance.selectedDates[0];
258
- }
259
- };
260
- }
261
- setupFlatpickrLocale(locale, options) {
262
- if (flatpickr?.l10ns?.[locale]) {
263
- return;
264
- }
265
- console.warn(`flatpickr locale '${locale}' is not loaded. Available locales:`, Object.keys(flatpickr?.l10ns || {}));
266
- if (locale === 'ko') {
267
- flatpickr.l10ns.ko = Korean;
268
- } else {
269
- options.locale = undefined;
270
- }
271
- }
272
- createInputHandler() {
273
- return e => {
274
- const target = e.target;
275
- const input = target.value;
276
- const instance = this.findFlatpickrInstanceByInput(target);
277
- if (!instance) return;
278
- // 빈 입력 처리
279
- if (!input || input.trim() === '') {
280
- this.clearInputValue(target, instance);
281
- return;
282
- }
283
- // 숫자나 하이픈이 없는 경우 처리
284
- if (!/[0-9]/.test(input)) {
285
- this.restorePreviousDate(target, instance);
286
- return;
287
- }
288
- const formattedInput = formatDateInput(input);
289
- // 포맷팅만 수행
290
- if (formattedInput !== input) {
291
- target.value = formattedInput;
292
- return;
293
- }
294
- // 완전한 날짜 형식이지만 유효하지 않은 경우 처리
295
- if (formattedInput && formattedInput.length >= 10) {
296
- const parsedDate = moment(formattedInput);
297
- if (!parsedDate.isValid()) {
298
- this.restorePreviousDate(target, instance);
299
- }
300
- }
301
- };
302
- }
303
- findFlatpickrInstanceByInput(input) {
304
- const index = this.findFlatpickrInstanceIndexByInput(input);
305
- return index >= 0 ? this.flatpickrInstances[index] : null;
306
- }
307
- clearInputValue(target, instance) {
308
- target.value = '';
309
- instance.setDate('', false);
310
- }
311
- restorePreviousDate(target, instance) {
312
- const hasPreviousDate = instance.selectedDates.length > 0;
313
- if (!hasPreviousDate) {
314
- this.clearInputValue(target, instance);
315
- return;
316
- }
317
- const previousDate = instance.selectedDates[0];
318
- const isValidDate = previousDate instanceof Date && !isNaN(previousDate.getTime());
319
- if (isValidDate) {
320
- target.value = moment(previousDate).format(this.dateFormat);
321
- instance.setDate(previousDate, false);
322
- } else {
323
- this.clearInputValue(target, instance);
324
- }
325
- }
326
- createHourInputHandler() {
327
- return e => {
328
- const target = e.target;
329
- const input = target.value;
330
- const formattedInput = formatHourInput(input);
331
- if (formattedInput === input) return;
332
- target.value = formattedInput;
333
- };
334
- }
335
- createMinuteInputHandler() {
336
- return e => {
337
- const target = e.target;
338
- const input = target.value;
339
- const formattedInput = formatMinuteInput(input);
340
- if (formattedInput === input) return;
341
- target.value = formattedInput;
342
- };
343
- }
344
- createMouseDownHandler(wrapper) {
345
- return e => {
346
- const flatpickrCalendar = wrapper.querySelector('.flatpickr-calendar.open');
347
- if (!flatpickrCalendar) return;
348
- if (flatpickrCalendar.contains(e.target)) return;
349
- const timeInputs = flatpickrCalendar.querySelectorAll('.flatpickr-time input');
350
- timeInputs.forEach(input => {
351
- if (document.activeElement === input) {
352
- input.blur();
353
- }
354
- });
355
- };
356
- }
357
- createOnChangeHandler(options) {
358
- return (selectedDates, dateStr, instance) => {
359
- try {
360
- const inputIndex = this.findFlatpickrInstanceIndexByInput(instance.input);
361
- if (inputIndex < 0) return;
362
- // blur 시 저장한 이전 날짜 사용
363
- const previousDate = instance._previousDateBeforeInput;
364
- // selectedDates가 비어있거나 첫 번째 날짜가 유효하지 않은 경우 처리
365
- if (!selectedDates || selectedDates.length === 0 || !selectedDates[0] || !(selectedDates[0] instanceof Date) || !this.isValidDate(selectedDates[0])) {
366
- // 유효하지 않은 날짜는 이전 값으로 복원하거나 빈 값으로 처리
367
- if (previousDate && this.isValidDate(previousDate)) {
368
- // 이전 값이 있으면 이전 값으로 복원
369
- instance.selectedDates = [previousDate];
370
- instance.setDate(previousDate, false);
371
- } else {
372
- // 이전 값이 없으면 빈 값으로 처리
373
- instance.selectedDates = [];
374
- instance.setDate('', false);
375
- }
376
- // 원본 onChange는 호출하지 않음
377
- return;
378
- }
379
- // 유효한 날짜인 경우에만 원본 onChange 호출
380
- this.invokeOriginalOnChange(options.onChange, selectedDates, dateStr, instance);
381
- const selectedDate = selectedDates[0];
382
- // minDate/maxDate 검증
383
- this.validateAndRestoreIfNeeded(selectedDate, instance, inputIndex, previousDate);
384
- // 검증 후 현재 날짜를 이전 날짜로 업데이트
385
- if (this.isValidDate(selectedDate)) {
386
- instance._previousDateBeforeInput = selectedDate;
387
- this.flatpickrInstances[inputIndex].selectedDates = [selectedDate];
388
- }
389
- } catch (error) {
390
- // 오류 발생 시 이전 값으로 복원
391
- const previousDate = instance._previousDateBeforeInput;
392
- if (previousDate && this.isValidDate(previousDate)) {
393
- instance.selectedDates = [previousDate];
394
- } else {
395
- instance.selectedDates = [];
396
- }
397
- this.restoreDateToInstance(instance, previousDate);
398
- }
399
- };
400
- }
401
- invokeOriginalOnChange(onChange, selectedDates, dateStr, instance) {
402
- if (!onChange) return;
403
- if (Array.isArray(onChange)) {
404
- onChange.forEach(hook => {
405
- void hook(selectedDates, dateStr, instance);
406
- });
407
- } else {
408
- onChange(selectedDates, dateStr, instance);
409
- }
410
- }
411
- isValidDate(date) {
412
- return date instanceof Date && !isNaN(date.getTime());
413
- }
414
- validateAndRestoreIfNeeded(selectedDate, instance, inputIndex, previousDate) {
415
- try {
416
- const isValid = this.validateDate(selectedDate, inputIndex, previousDate);
417
- if (!isValid) {
418
- this.restoreDateToInstance(instance, previousDate);
419
- } else {
420
- // 유효한 경우에만 업데이트
421
- instance._previousDateBeforeInput = selectedDate;
422
- this.flatpickrInstances[inputIndex].selectedDates = [selectedDate];
423
- }
424
- } catch (error) {
425
- // 오류 발생 시 이전 값으로 복원
426
- this.restoreDateToInstance(instance, previousDate);
427
- }
428
- }
429
- findFlatpickrInstanceIndexByInput(input) {
430
- return this.flatpickrInstances.findIndex(inst => inst.input === input);
431
- }
432
- restoreDateToInstance(instance, previousDate) {
433
- try {
434
- // setDate 호출 전에 날짜 유효성 확인
435
- if (previousDate && this.isValidDate(previousDate)) {
436
- // selectedDates 배열을 정리하여 formatting.js에서 오류가 발생하지 않도록 함
437
- instance.selectedDates = [previousDate];
438
- instance.setDate(previousDate, false);
439
- } else {
440
- // 빈 값으로 설정할 때도 selectedDates를 정리
441
- instance.selectedDates = [];
442
- instance.setDate('', false);
443
- }
444
- } catch (error) {
445
- // setDate에서 오류 발생 시 selectedDates를 빈 배열로 설정
446
- try {
447
- instance.selectedDates = [];
448
- instance.setDate('', false);
449
- } catch {
450
- // 최종 실패 시 무시
451
- }
452
- }
453
- }
454
- createOnReadyHandler(onInputHandler, onHourInputHandler, onMinuteInputHandler, onBlurHandler) {
455
- return (selectedDates, dateStr, instance) => {
456
- const input = instance.input;
457
- if (!input) return;
458
- input.addEventListener('input', onInputHandler);
459
- input.addEventListener('blur', onBlurHandler);
460
- const timeInputWrapper = input.parentElement?.querySelector('.flatpickr-time');
461
- if (!timeInputWrapper) return;
462
- const hourInput = timeInputWrapper.querySelector('.flatpickr-hour');
463
- const minuteInput = timeInputWrapper.querySelector('.flatpickr-minute');
464
- if (!hourInput || !minuteInput) return;
465
- hourInput.addEventListener('input', onHourInputHandler);
466
- minuteInput.addEventListener('input', onMinuteInputHandler);
467
- };
468
- }
469
- createOnDestroyHandler(onInputHandler, onHourInputHandler, onMinuteInputHandler, onMouseDown, onBlurHandler) {
470
- return (selectedDates, dateStr, instance) => {
471
- const input = instance.input;
472
- if (!input) return;
473
- input.removeEventListener('input', onInputHandler);
474
- input.removeEventListener('blur', onBlurHandler);
475
- // hourInput과 minuteInput에서 이벤트 리스너 제거 (input이 아님)
476
- const timeInputWrapper = input.parentElement?.querySelector('.flatpickr-time');
477
- if (timeInputWrapper) {
478
- const hourInput = timeInputWrapper.querySelector('.flatpickr-hour');
479
- const minuteInput = timeInputWrapper.querySelector('.flatpickr-minute');
480
- if (hourInput) {
481
- hourInput.removeEventListener('input', onHourInputHandler);
482
- }
483
- if (minuteInput) {
484
- minuteInput.removeEventListener('input', onMinuteInputHandler);
485
- }
486
- }
487
- document.removeEventListener('mousedown', onMouseDown, true);
488
- };
489
- }
490
- convertDateOption(dateOption) {
491
- if (!dateOption) return undefined;
492
- if (typeof dateOption === 'string' || dateOption instanceof Date) {
493
- return dateOption;
494
- }
495
- if (typeof dateOption === 'number') {
496
- return new Date(dateOption);
497
- }
498
- if (Array.isArray(dateOption) && dateOption.length > 0) {
499
- return dateOption[0] instanceof Date ? dateOption[0] : new Date(dateOption[0]);
500
- }
501
- return undefined;
502
- }
503
- validateDate(date, index, previousDate) {
504
- const option = this.datePickerOptions[index];
505
- if (!option) return true;
506
- const {
507
- minDate,
508
- maxDate
509
- } = option.options;
510
- if (!minDate && !maxDate) return true;
511
- const inputDate = moment(date);
512
- if (!inputDate.isValid()) return true;
513
- const violations = this.checkDateViolations(inputDate, minDate, maxDate);
514
- if (violations.length === 0) return true;
515
- if (this.onValidationError) {
516
- const error = {
517
- index,
518
- date,
519
- minDate: this.convertDateOption(minDate),
520
- maxDate: this.convertDateOption(maxDate),
521
- violations,
522
- previousDate
523
- };
524
- this.onValidationError(error);
525
- }
526
- return false;
527
- }
528
- checkDateViolations(inputDate, minDate, maxDate) {
529
- const violations = [];
530
- if (minDate) {
531
- const min = moment(minDate);
532
- if (min.isValid() && inputDate.isBefore(min, 'day')) {
533
- violations.push('minDate');
534
- }
535
- }
536
- if (maxDate) {
537
- const max = moment(maxDate);
538
- if (max.isValid() && inputDate.isAfter(max, 'day')) {
539
- violations.push('maxDate');
540
- }
541
- }
542
- return violations;
543
- }
544
- setDate(dates) {
545
- const [startDate, endDate] = dates;
546
- const datesToSet = this.datePickerOptions.map((option, index) => {
547
- const date = index === 0 ? startDate : endDate;
548
- return this.formatDateForOption(date, option, index);
549
- });
550
- const period = this.calculatePeriod(datesToSet);
551
- this.updateButtonsByPeriod(period);
552
- this.setMultipleDates(datesToSet);
553
- }
554
- formatDateForOption(date, option, index) {
555
- if (!date || date === '0000-00-00') return '';
556
- const hasTime = option.options?.enableTime;
557
- const flatpickrFormat = option.options?.dateFormat || (hasTime ? 'Y-m-d H:i' : 'Y-m-d');
558
- const momentFormat = this.convertFlatpickrFormatToMoment(flatpickrFormat);
559
- const momentDate = this.parseDateWithMultipleFormats(date, hasTime, momentFormat);
560
- if (!momentDate || !momentDate.isValid()) return '';
561
- const isValid = this.validateDate(momentDate.toDate(), index);
562
- if (!isValid) return '';
563
- return this.formatMomentDate(momentDate, date, hasTime, index, momentFormat);
564
- }
565
- parseDateWithMultipleFormats(date, hasTime, momentFormat) {
566
- // hasTime이 true인 경우 (시간 포함 여부와 무관하게 moment로 파싱)
567
- if (hasTime) {
568
- const momentDate = moment(date);
569
- return momentDate.isValid() ? momentDate : null;
570
- }
571
- // hasTime이 false인 경우 - 여러 형식으로 시도
572
- let momentDate = moment(date);
573
- if (momentDate.isValid()) {
574
- return momentDate;
575
- }
576
- momentDate = moment(date, momentFormat, true);
577
- if (momentDate.isValid()) {
578
- return momentDate;
579
- }
580
- momentDate = moment(date, [momentFormat, 'YYYY-MM-DD', 'YYYY/MM/DD', 'MM/DD/YYYY'], true);
581
- return momentDate.isValid() ? momentDate : null;
582
- }
583
- formatMomentDate(momentDate, originalDate, hasTime, index, momentFormat) {
584
- // hasTime이 true이고 원본 날짜에 시간이 없는 경우
585
- if (hasTime && !originalDate.includes(':')) {
586
- return index === 0 ? momentDate.startOf('day').format(momentFormat) : momentDate.endOf('day').format(momentFormat);
587
- }
588
- return momentDate.format(momentFormat);
589
- }
590
- calculatePeriod(datesToSet) {
591
- if (!datesToSet[0] || !datesToSet[1]) return null;
592
- return moment(datesToSet[1]).diff(moment(datesToSet[0]), 'days');
593
- }
594
- updateDateWithButton(e) {
595
- const target = e.target;
596
- if (!target.classList.contains(CONSTANTS.CLASS_NAMES.BUTTON)) return;
597
- const clickedButton = this.buttons.find(button => button.text === target.textContent);
598
- if (!clickedButton || clickedButton === this.currentButton) return;
599
- const updateButtonState = () => {
600
- return this.buttons.map(button => ({
601
- ...button,
602
- isCurrent: button.text === clickedButton?.text
603
- }));
604
- };
605
- this.currentButton = clickedButton;
606
- this.reRenderButtonGroup(updateButtonState());
607
- this.setMultipleDates(this.calculateDatesFromButton(clickedButton));
608
- }
609
- setMultipleDates(dates) {
610
- dates.forEach((date, index) => {
611
- const shouldTriggerChange = index === dates.length - 1;
612
- this.flatpickrInstances[index]?.setDate(date, shouldTriggerChange);
613
- this.flatpickrInstances[index]?.redraw();
614
- });
615
- }
616
- updateButtonsByPeriod(period) {
617
- const newButtons = this.buttons.map(button => ({
618
- ...button,
619
- isCurrent: period !== null && button.period === period
620
- }));
621
- this.reRenderButtonGroup(newButtons);
622
- }
623
- calculateDatesFromButton(button) {
624
- const {
625
- period,
626
- unit
627
- } = button;
628
- return this.datePickerOptions.map((option, index) => {
629
- const hasTime = option.options?.enableTime;
630
- if (index === 0) {
631
- const startMoment = period ? moment().subtract(period, unit) : moment();
632
- return hasTime ? startMoment.startOf('day').format(this.dateFormat) : startMoment.format(this.dateFormat);
633
- }
634
- return hasTime ? moment().endOf('day').format(this.dateFormat) : moment().format(this.dateFormat);
635
- });
636
- }
637
- // flatpickr 형식을 moment 형식으로 변환하는 헬퍼 메서드
638
- convertFlatpickrFormatToMoment(flatpickrFormat) {
639
- const map = {
640
- Y: 'YYYY',
641
- y: 'YY',
642
- m: 'MM',
643
- d: 'DD',
644
- H: 'HH',
645
- i: 'mm',
646
- S: 'ss'
647
- };
648
- return flatpickrFormat.replace(/[YymdHiS]/g, matched => map[matched] || matched);
649
- }
650
- getDates() {
651
- return this.flatpickrInstances.map(instance => {
652
- const selectedDates = instance.selectedDates;
653
- if (selectedDates.length > 0) {
654
- return moment(selectedDates[0]).format(this.dateFormat);
655
- }
656
- return '';
657
- });
658
- }
659
- }
660
- DatePicker.instanceCounter = 0;
661
- DatePicker.usedWrappers = new Set(); // 사용된 wrapper 요소 추적용
662
- export { DatePicker };
663
- window.DatePicker = DatePicker;