@ncds/ui-admin 1.6.2 → 1.6.4-alpha.0

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