@ncds/ui-admin 1.6.3 → 1.6.4-alpha.1

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 (262) hide show
  1. package/mcp/bin/server.d.ts +1 -0
  2. package/mcp/bin/server.js +67 -0
  3. package/mcp/bin/server.mjs +14 -0
  4. package/mcp/bin/tools/getComponentHtml.d.ts +3 -0
  5. package/mcp/bin/tools/getComponentHtml.js +30 -0
  6. package/mcp/bin/tools/getComponentProps.d.ts +3 -0
  7. package/mcp/bin/tools/getComponentProps.js +16 -0
  8. package/mcp/bin/tools/listComponents.d.ts +3 -0
  9. package/mcp/bin/tools/listComponents.js +15 -0
  10. package/mcp/bin/tools/ping.d.ts +11 -0
  11. package/mcp/bin/tools/ping.js +30 -0
  12. package/mcp/bin/tools/searchComponent.d.ts +3 -0
  13. package/mcp/bin/tools/searchComponent.js +20 -0
  14. package/mcp/bin/tools/validateHtml.d.ts +10 -0
  15. package/mcp/bin/tools/validateHtml.js +142 -0
  16. package/mcp/bin/types.d.ts +28 -0
  17. package/mcp/bin/types.js +5 -0
  18. package/mcp/bin/utils/dataLoader.d.ts +11 -0
  19. package/mcp/bin/utils/dataLoader.js +68 -0
  20. package/mcp/bin/utils/logger.d.ts +18 -0
  21. package/mcp/bin/utils/logger.js +27 -0
  22. package/mcp/bin/utils/response.d.ts +23 -0
  23. package/mcp/bin/utils/response.js +31 -0
  24. package/mcp/bin/version.d.ts +1 -0
  25. package/mcp/bin/version.js +4 -0
  26. package/mcp/data/.gitkeep +0 -0
  27. package/mcp/data/_meta.json +7 -0
  28. package/mcp/data/badge-group.json +73 -0
  29. package/mcp/data/badge.json +86 -0
  30. package/mcp/data/bread-crumb.json +22 -0
  31. package/mcp/data/breadcrumb.json +31 -0
  32. package/mcp/data/button-group.json +65 -0
  33. package/mcp/data/button.json +114 -0
  34. package/mcp/data/carousel-arrow.json +59 -0
  35. package/mcp/data/carousel-number-group.json +57 -0
  36. package/mcp/data/carousel.json +22 -0
  37. package/mcp/data/checkbox.json +31 -0
  38. package/mcp/data/combobox.json +114 -0
  39. package/mcp/data/date-picker.json +77 -0
  40. package/mcp/data/divider.json +56 -0
  41. package/mcp/data/dot.json +55 -0
  42. package/mcp/data/dropdown.json +81 -0
  43. package/mcp/data/empty-state.json +34 -0
  44. package/mcp/data/featured-icon.json +83 -0
  45. package/mcp/data/file-input.json +76 -0
  46. package/mcp/data/horizontal-tab.json +71 -0
  47. package/mcp/data/image-file-input.json +97 -0
  48. package/mcp/data/input.json +104 -0
  49. package/mcp/data/modal.json +85 -0
  50. package/mcp/data/notification.json +116 -0
  51. package/mcp/data/number-input.json +128 -0
  52. package/mcp/data/pagination.json +65 -0
  53. package/mcp/data/password-input.json +47 -0
  54. package/mcp/data/progress-bar.json +51 -0
  55. package/mcp/data/progress-circle.json +54 -0
  56. package/mcp/data/radio.json +31 -0
  57. package/mcp/data/range-date-picker-with-buttons.json +64 -0
  58. package/mcp/data/range-date-picker.json +55 -0
  59. package/mcp/data/select-dropdown.json +32 -0
  60. package/mcp/data/select.json +64 -0
  61. package/mcp/data/selectbox.json +129 -0
  62. package/mcp/data/slider.json +57 -0
  63. package/mcp/data/spinner.json +54 -0
  64. package/mcp/data/switch.json +71 -0
  65. package/mcp/data/tab.json +122 -0
  66. package/mcp/data/tag.json +66 -0
  67. package/mcp/data/textarea.json +88 -0
  68. package/mcp/data/toggle.json +59 -0
  69. package/mcp/data/tooltip.json +123 -0
  70. package/mcp/data/vertical-tab.json +64 -0
  71. package/mcp/templates/.mcp.json.example +8 -0
  72. package/mcp/templates/README.md +31 -0
  73. package/package.json +26 -3
  74. package/dist/cjs/assets/scripts/comboBox.js +0 -280
  75. package/dist/cjs/assets/scripts/datePicker.js +0 -706
  76. package/dist/cjs/assets/scripts/featuredIcon.js +0 -95
  77. package/dist/cjs/assets/scripts/fileInput/FileInput.js +0 -183
  78. package/dist/cjs/assets/scripts/fileInput/FileInputModel.js +0 -246
  79. package/dist/cjs/assets/scripts/fileInput/FileInputView.js +0 -455
  80. package/dist/cjs/assets/scripts/fileInput/const/classNames.js +0 -35
  81. package/dist/cjs/assets/scripts/fileInput/const/index.js +0 -27
  82. package/dist/cjs/assets/scripts/fileInput/const/types.js +0 -13
  83. package/dist/cjs/assets/scripts/fileInput/index.js +0 -44
  84. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInput.js +0 -187
  85. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInputModel.js +0 -255
  86. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInputView.js +0 -354
  87. package/dist/cjs/assets/scripts/imageFileInput/const/classNames.js +0 -41
  88. package/dist/cjs/assets/scripts/imageFileInput/const/index.js +0 -27
  89. package/dist/cjs/assets/scripts/imageFileInput/const/types.js +0 -13
  90. package/dist/cjs/assets/scripts/imageFileInput/index.js +0 -44
  91. package/dist/cjs/assets/scripts/index.js +0 -30
  92. package/dist/cjs/assets/scripts/modal/Modal.js +0 -116
  93. package/dist/cjs/assets/scripts/modal/ModalActions.js +0 -128
  94. package/dist/cjs/assets/scripts/modal/ModalContent.js +0 -46
  95. package/dist/cjs/assets/scripts/modal/ModalHeader.js +0 -115
  96. package/dist/cjs/assets/scripts/modal/const/classNames.js +0 -41
  97. package/dist/cjs/assets/scripts/modal/const/index.js +0 -27
  98. package/dist/cjs/assets/scripts/modal/const/types.js +0 -5
  99. package/dist/cjs/assets/scripts/modal/index.js +0 -61
  100. package/dist/cjs/assets/scripts/modal/utils/contentUtils.js +0 -35
  101. package/dist/cjs/assets/scripts/notification/FloatingNotification.js +0 -180
  102. package/dist/cjs/assets/scripts/notification/FullWidthNotification.js +0 -120
  103. package/dist/cjs/assets/scripts/notification/MessageNotification.js +0 -146
  104. package/dist/cjs/assets/scripts/notification/Notification.js +0 -116
  105. package/dist/cjs/assets/scripts/notification/const/classNames.js +0 -50
  106. package/dist/cjs/assets/scripts/notification/const/icons.js +0 -45
  107. package/dist/cjs/assets/scripts/notification/const/index.js +0 -87
  108. package/dist/cjs/assets/scripts/notification/const/sizes.js +0 -54
  109. package/dist/cjs/assets/scripts/notification/const/types.js +0 -14
  110. package/dist/cjs/assets/scripts/notification/index.js +0 -92
  111. package/dist/cjs/assets/scripts/notification/utils.js +0 -92
  112. package/dist/cjs/assets/scripts/progress-bar/ProgressBar.js +0 -272
  113. package/dist/cjs/assets/scripts/progress-bar/index.js +0 -12
  114. package/dist/cjs/assets/scripts/selectBox.js +0 -319
  115. package/dist/cjs/assets/scripts/shared/ButtonCloseX.js +0 -46
  116. package/dist/cjs/assets/scripts/tab.js +0 -40
  117. package/dist/cjs/assets/scripts/tag/Tag.js +0 -268
  118. package/dist/cjs/assets/scripts/tag/const/classNames.js +0 -24
  119. package/dist/cjs/assets/scripts/tag/const/index.js +0 -38
  120. package/dist/cjs/assets/scripts/tag/const/sizes.js +0 -13
  121. package/dist/cjs/assets/scripts/tag/const/types.js +0 -5
  122. package/dist/cjs/assets/scripts/tag/index.js +0 -44
  123. package/dist/cjs/assets/scripts/tooltip/Tooltip.js +0 -380
  124. package/dist/cjs/assets/scripts/tooltip/TooltipLayerManager.js +0 -84
  125. package/dist/cjs/assets/scripts/tooltip/const/classNames.js +0 -29
  126. package/dist/cjs/assets/scripts/tooltip/const/constants.js +0 -56
  127. package/dist/cjs/assets/scripts/tooltip/const/icons.js +0 -15
  128. package/dist/cjs/assets/scripts/tooltip/const/index.js +0 -123
  129. package/dist/cjs/assets/scripts/tooltip/const/templates.js +0 -49
  130. package/dist/cjs/assets/scripts/tooltip/const/types.js +0 -5
  131. package/dist/cjs/assets/scripts/tooltip/index.js +0 -57
  132. package/dist/cjs/assets/scripts/tooltip/utils.js +0 -41
  133. package/dist/cjs/assets/scripts/utils/unifiedBox/DOMRenderer.js +0 -384
  134. package/dist/cjs/assets/scripts/utils/unifiedBox/DropdownModel.js +0 -368
  135. package/dist/cjs/assets/scripts/utils/unifiedBox/UnifiedBoxController.js +0 -681
  136. package/dist/cjs/assets/scripts/utils/unifiedBox/UnifiedBoxManager.js +0 -711
  137. package/dist/esm/assets/scripts/comboBox.js +0 -275
  138. package/dist/esm/assets/scripts/datePicker.js +0 -699
  139. package/dist/esm/assets/scripts/featuredIcon.js +0 -90
  140. package/dist/esm/assets/scripts/fileInput/FileInput.js +0 -178
  141. package/dist/esm/assets/scripts/fileInput/FileInputModel.js +0 -241
  142. package/dist/esm/assets/scripts/fileInput/FileInputView.js +0 -450
  143. package/dist/esm/assets/scripts/fileInput/const/classNames.js +0 -25
  144. package/dist/esm/assets/scripts/fileInput/const/index.js +0 -2
  145. package/dist/esm/assets/scripts/fileInput/const/types.js +0 -7
  146. package/dist/esm/assets/scripts/fileInput/index.js +0 -9
  147. package/dist/esm/assets/scripts/imageFileInput/ImageFileInput.js +0 -182
  148. package/dist/esm/assets/scripts/imageFileInput/ImageFileInputModel.js +0 -250
  149. package/dist/esm/assets/scripts/imageFileInput/ImageFileInputView.js +0 -349
  150. package/dist/esm/assets/scripts/imageFileInput/const/classNames.js +0 -30
  151. package/dist/esm/assets/scripts/imageFileInput/const/index.js +0 -2
  152. package/dist/esm/assets/scripts/imageFileInput/const/types.js +0 -7
  153. package/dist/esm/assets/scripts/imageFileInput/index.js +0 -9
  154. package/dist/esm/assets/scripts/index.js +0 -28
  155. package/dist/esm/assets/scripts/modal/Modal.js +0 -110
  156. package/dist/esm/assets/scripts/modal/ModalActions.js +0 -123
  157. package/dist/esm/assets/scripts/modal/ModalContent.js +0 -41
  158. package/dist/esm/assets/scripts/modal/ModalHeader.js +0 -110
  159. package/dist/esm/assets/scripts/modal/const/classNames.js +0 -31
  160. package/dist/esm/assets/scripts/modal/const/index.js +0 -2
  161. package/dist/esm/assets/scripts/modal/const/types.js +0 -1
  162. package/dist/esm/assets/scripts/modal/index.js +0 -15
  163. package/dist/esm/assets/scripts/modal/utils/contentUtils.js +0 -28
  164. package/dist/esm/assets/scripts/notification/FloatingNotification.js +0 -176
  165. package/dist/esm/assets/scripts/notification/FullWidthNotification.js +0 -115
  166. package/dist/esm/assets/scripts/notification/MessageNotification.js +0 -141
  167. package/dist/esm/assets/scripts/notification/Notification.js +0 -111
  168. package/dist/esm/assets/scripts/notification/const/classNames.js +0 -44
  169. package/dist/esm/assets/scripts/notification/const/icons.js +0 -39
  170. package/dist/esm/assets/scripts/notification/const/index.js +0 -4
  171. package/dist/esm/assets/scripts/notification/const/sizes.js +0 -48
  172. package/dist/esm/assets/scripts/notification/const/types.js +0 -8
  173. package/dist/esm/assets/scripts/notification/index.js +0 -11
  174. package/dist/esm/assets/scripts/notification/utils.js +0 -79
  175. package/dist/esm/assets/scripts/progress-bar/ProgressBar.js +0 -267
  176. package/dist/esm/assets/scripts/progress-bar/index.js +0 -1
  177. package/dist/esm/assets/scripts/selectBox.js +0 -314
  178. package/dist/esm/assets/scripts/shared/ButtonCloseX.js +0 -38
  179. package/dist/esm/assets/scripts/tab.js +0 -35
  180. package/dist/esm/assets/scripts/tag/Tag.js +0 -263
  181. package/dist/esm/assets/scripts/tag/const/classNames.js +0 -16
  182. package/dist/esm/assets/scripts/tag/const/index.js +0 -3
  183. package/dist/esm/assets/scripts/tag/const/sizes.js +0 -7
  184. package/dist/esm/assets/scripts/tag/const/types.js +0 -1
  185. package/dist/esm/assets/scripts/tag/index.js +0 -9
  186. package/dist/esm/assets/scripts/tooltip/Tooltip.js +0 -375
  187. package/dist/esm/assets/scripts/tooltip/TooltipLayerManager.js +0 -79
  188. package/dist/esm/assets/scripts/tooltip/const/classNames.js +0 -23
  189. package/dist/esm/assets/scripts/tooltip/const/constants.js +0 -50
  190. package/dist/esm/assets/scripts/tooltip/const/icons.js +0 -9
  191. package/dist/esm/assets/scripts/tooltip/const/index.js +0 -4
  192. package/dist/esm/assets/scripts/tooltip/const/templates.js +0 -42
  193. package/dist/esm/assets/scripts/tooltip/const/types.js +0 -1
  194. package/dist/esm/assets/scripts/tooltip/index.js +0 -10
  195. package/dist/esm/assets/scripts/tooltip/utils.js +0 -35
  196. package/dist/esm/assets/scripts/utils/unifiedBox/DOMRenderer.js +0 -379
  197. package/dist/esm/assets/scripts/utils/unifiedBox/DropdownModel.js +0 -363
  198. package/dist/esm/assets/scripts/utils/unifiedBox/UnifiedBoxController.js +0 -676
  199. package/dist/esm/assets/scripts/utils/unifiedBox/UnifiedBoxManager.js +0 -706
  200. package/dist/types/assets/scripts/comboBox.d.ts +0 -91
  201. package/dist/types/assets/scripts/datePicker.d.ts +0 -87
  202. package/dist/types/assets/scripts/featuredIcon.d.ts +0 -23
  203. package/dist/types/assets/scripts/fileInput/FileInput.d.ts +0 -67
  204. package/dist/types/assets/scripts/fileInput/FileInputModel.d.ts +0 -70
  205. package/dist/types/assets/scripts/fileInput/FileInputView.d.ts +0 -77
  206. package/dist/types/assets/scripts/fileInput/const/classNames.d.ts +0 -17
  207. package/dist/types/assets/scripts/fileInput/const/index.d.ts +0 -3
  208. package/dist/types/assets/scripts/fileInput/const/types.d.ts +0 -132
  209. package/dist/types/assets/scripts/fileInput/index.d.ts +0 -4
  210. package/dist/types/assets/scripts/imageFileInput/ImageFileInput.d.ts +0 -64
  211. package/dist/types/assets/scripts/imageFileInput/ImageFileInputModel.d.ts +0 -74
  212. package/dist/types/assets/scripts/imageFileInput/ImageFileInputView.d.ts +0 -80
  213. package/dist/types/assets/scripts/imageFileInput/const/classNames.d.ts +0 -20
  214. package/dist/types/assets/scripts/imageFileInput/const/index.d.ts +0 -3
  215. package/dist/types/assets/scripts/imageFileInput/const/types.d.ts +0 -126
  216. package/dist/types/assets/scripts/imageFileInput/index.d.ts +0 -4
  217. package/dist/types/assets/scripts/index.d.ts +0 -33
  218. package/dist/types/assets/scripts/modal/Modal.d.ts +0 -28
  219. package/dist/types/assets/scripts/modal/ModalActions.d.ts +0 -19
  220. package/dist/types/assets/scripts/modal/ModalContent.d.ts +0 -14
  221. package/dist/types/assets/scripts/modal/ModalHeader.d.ts +0 -16
  222. package/dist/types/assets/scripts/modal/const/classNames.d.ts +0 -23
  223. package/dist/types/assets/scripts/modal/const/index.d.ts +0 -3
  224. package/dist/types/assets/scripts/modal/const/types.d.ts +0 -62
  225. package/dist/types/assets/scripts/modal/index.d.ts +0 -8
  226. package/dist/types/assets/scripts/modal/utils/contentUtils.d.ts +0 -11
  227. package/dist/types/assets/scripts/notification/FloatingNotification.d.ts +0 -25
  228. package/dist/types/assets/scripts/notification/FullWidthNotification.d.ts +0 -22
  229. package/dist/types/assets/scripts/notification/MessageNotification.d.ts +0 -23
  230. package/dist/types/assets/scripts/notification/Notification.d.ts +0 -22
  231. package/dist/types/assets/scripts/notification/const/classNames.d.ts +0 -44
  232. package/dist/types/assets/scripts/notification/const/icons.d.ts +0 -26
  233. package/dist/types/assets/scripts/notification/const/index.d.ts +0 -6
  234. package/dist/types/assets/scripts/notification/const/sizes.d.ts +0 -33
  235. package/dist/types/assets/scripts/notification/const/types.d.ts +0 -20
  236. package/dist/types/assets/scripts/notification/index.d.ts +0 -8
  237. package/dist/types/assets/scripts/notification/utils.d.ts +0 -9
  238. package/dist/types/assets/scripts/progress-bar/ProgressBar.d.ts +0 -68
  239. package/dist/types/assets/scripts/progress-bar/index.d.ts +0 -2
  240. package/dist/types/assets/scripts/selectBox.d.ts +0 -77
  241. package/dist/types/assets/scripts/shared/ButtonCloseX.d.ts +0 -6
  242. package/dist/types/assets/scripts/tab.d.ts +0 -8
  243. package/dist/types/assets/scripts/tag/Tag.d.ts +0 -28
  244. package/dist/types/assets/scripts/tag/const/classNames.d.ts +0 -12
  245. package/dist/types/assets/scripts/tag/const/index.d.ts +0 -4
  246. package/dist/types/assets/scripts/tag/const/sizes.d.ts +0 -8
  247. package/dist/types/assets/scripts/tag/const/types.d.ts +0 -34
  248. package/dist/types/assets/scripts/tag/index.d.ts +0 -4
  249. package/dist/types/assets/scripts/tooltip/Tooltip.d.ts +0 -55
  250. package/dist/types/assets/scripts/tooltip/TooltipLayerManager.d.ts +0 -22
  251. package/dist/types/assets/scripts/tooltip/const/classNames.d.ts +0 -18
  252. package/dist/types/assets/scripts/tooltip/const/constants.d.ts +0 -34
  253. package/dist/types/assets/scripts/tooltip/const/icons.d.ts +0 -5
  254. package/dist/types/assets/scripts/tooltip/const/index.d.ts +0 -6
  255. package/dist/types/assets/scripts/tooltip/const/templates.d.ts +0 -17
  256. package/dist/types/assets/scripts/tooltip/const/types.d.ts +0 -15
  257. package/dist/types/assets/scripts/tooltip/index.d.ts +0 -7
  258. package/dist/types/assets/scripts/tooltip/utils.d.ts +0 -3
  259. package/dist/types/assets/scripts/utils/unifiedBox/DOMRenderer.d.ts +0 -108
  260. package/dist/types/assets/scripts/utils/unifiedBox/DropdownModel.d.ts +0 -158
  261. package/dist/types/assets/scripts/utils/unifiedBox/UnifiedBoxController.d.ts +0 -171
  262. package/dist/types/assets/scripts/utils/unifiedBox/UnifiedBoxManager.d.ts +0 -99
@@ -1,363 +0,0 @@
1
- var __assign = this && this.__assign || function () {
2
- __assign = Object.assign || function (t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
6
- }
7
- return t;
8
- };
9
- return __assign.apply(this, arguments);
10
- };
11
- var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
12
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
13
- if (ar || !(i in from)) {
14
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
15
- ar[i] = from[i];
16
- }
17
- }
18
- return to.concat(ar || Array.prototype.slice.call(from));
19
- };
20
- /**
21
- * 드롭다운 상태 관리 모델
22
- * Observer Pattern을 통한 상태 변경 알림
23
- */
24
- var DropdownModel = /** @class */function () {
25
- function DropdownModel(initialOptions, multiple) {
26
- if (multiple === void 0) {
27
- multiple = false;
28
- }
29
- this.listeners = [];
30
- this.isComboBox = false; // ComboBox 여부 추가
31
- this.multiple = multiple;
32
- this.state = {
33
- isOpen: false,
34
- focusedIndex: -1,
35
- selectedValues: [],
36
- searchValue: '',
37
- showAllItems: false,
38
- options: __spreadArray([], initialOptions, true),
39
- filteredOptions: __spreadArray([], initialOptions, true)
40
- };
41
- }
42
- /**
43
- * 상태 변경 리스너 등록
44
- */
45
- DropdownModel.prototype.addListener = function (listener) {
46
- this.listeners.push(listener);
47
- };
48
- /**
49
- * 상태 변경 리스너 제거
50
- */
51
- DropdownModel.prototype.removeListener = function (listener) {
52
- var index = this.listeners.indexOf(listener);
53
- if (index > -1) {
54
- this.listeners.splice(index, 1);
55
- }
56
- };
57
- /**
58
- * 상태 변경 알림
59
- */
60
- DropdownModel.prototype.notifyListeners = function (changedFields) {
61
- var _this = this;
62
- this.listeners.forEach(function (listener) {
63
- listener.onStateChange(__assign({}, _this.state), changedFields);
64
- });
65
- };
66
- /**
67
- * ComboBox 타입 설정
68
- */
69
- DropdownModel.prototype.setComboBoxMode = function (isComboBox) {
70
- this.isComboBox = isComboBox;
71
- };
72
- /**
73
- * 드롭다운 열기/닫기
74
- */
75
- DropdownModel.prototype.setOpen = function (isOpen) {
76
- if (this.state.isOpen !== isOpen) {
77
- this.state.isOpen = isOpen;
78
- if (!isOpen) {
79
- this.state.focusedIndex = -1;
80
- this.state.showAllItems = false;
81
- }
82
- this.notifyListeners(['isOpen', 'focusedIndex', 'showAllItems']);
83
- }
84
- };
85
- /**
86
- * 포커스 인덱스 설정
87
- */
88
- DropdownModel.prototype.setFocusedIndex = function (index) {
89
- var maxIndex = this.state.filteredOptions.length - 1;
90
- var clampedIndex = Math.max(-1, Math.min(index, maxIndex));
91
- if (this.state.focusedIndex !== clampedIndex) {
92
- this.state.focusedIndex = clampedIndex;
93
- this.notifyListeners(['focusedIndex']);
94
- }
95
- };
96
- /**
97
- * 검색어 설정 및 필터링
98
- */
99
- DropdownModel.prototype.setSearchValue = function (searchValue) {
100
- if (this.state.searchValue !== searchValue) {
101
- this.state.searchValue = searchValue;
102
- this.updateFilteredOptions();
103
- this.notifyListeners(['searchValue', 'filteredOptions']);
104
- }
105
- };
106
- /**
107
- * 전체 보기 토글
108
- */
109
- DropdownModel.prototype.setShowAllItems = function (showAll) {
110
- if (this.state.showAllItems !== showAll) {
111
- this.state.showAllItems = showAll;
112
- this.updateFilteredOptions();
113
- this.notifyListeners(['showAllItems', 'filteredOptions']);
114
- }
115
- };
116
- /**
117
- * 선택된 값들을 직접 설정 (protected)
118
- */
119
- DropdownModel.prototype.setSelectedValues = function (values) {
120
- this.state.selectedValues = __spreadArray([], values, true);
121
- this.notifyListeners(['selectedValues']);
122
- };
123
- /**
124
- * 옵션 선택/해제
125
- */
126
- DropdownModel.prototype.toggleOption = function (optionId) {
127
- var currentValues = __spreadArray([], this.state.selectedValues, true);
128
- if (this.multiple) {
129
- var index = currentValues.indexOf(optionId);
130
- if (index > -1) {
131
- currentValues.splice(index, 1);
132
- } else {
133
- currentValues.push(optionId);
134
- }
135
- } else {
136
- currentValues.length = 0;
137
- currentValues.push(optionId);
138
- }
139
- this.state.selectedValues = currentValues;
140
- this.notifyListeners(['selectedValues']);
141
- };
142
- /**
143
- * 옵션 업데이트
144
- */
145
- DropdownModel.prototype.updateOptions = function (newOptions) {
146
- // 현재 상태 저장
147
- var wasOpen = this.state.isOpen;
148
- var wasShowAllItems = this.state.showAllItems;
149
- this.state.options = __spreadArray([], newOptions, true);
150
- this.state.selectedValues = this.state.selectedValues.filter(function (value) {
151
- return newOptions.some(function (opt) {
152
- return opt.id === value;
153
- });
154
- });
155
- // 드롭다운이 열려있었다면 상태 유지
156
- if (wasOpen) {
157
- this.state.isOpen = true;
158
- this.state.showAllItems = wasShowAllItems;
159
- }
160
- this.updateFilteredOptions();
161
- this.notifyListeners(['options', 'selectedValues', 'filteredOptions', 'isOpen', 'showAllItems']);
162
- };
163
- /**
164
- * 필터링된 옵션 업데이트
165
- */
166
- DropdownModel.prototype.updateFilteredOptions = function () {
167
- // SelectBox 모드일 때는 항상 모든 옵션 표시
168
- if (!this.isComboBox) {
169
- this.state.filteredOptions = __spreadArray([], this.state.options, true);
170
- return;
171
- }
172
- // ComboBox 모드일 때만 검색 및 필터링 적용
173
- if (!this.state.showAllItems && !this.state.searchValue) {
174
- this.state.filteredOptions = [];
175
- return;
176
- }
177
- var filtered = __spreadArray([], this.state.options, true);
178
- if (this.state.searchValue) {
179
- var searchLower_1 = this.state.searchValue.toLowerCase();
180
- filtered = filtered.filter(function (option) {
181
- return option.label.toLowerCase().includes(searchLower_1);
182
- });
183
- }
184
- this.state.filteredOptions = filtered;
185
- };
186
- /**
187
- * 현재 상태 반환 (읽기 전용)
188
- */
189
- DropdownModel.prototype.getState = function () {
190
- return __assign({}, this.state);
191
- };
192
- /**
193
- * 다중 선택 모드 여부 반환
194
- */
195
- DropdownModel.prototype.isMultiple = function () {
196
- return this.multiple;
197
- };
198
- /**
199
- * 선택된 옵션들 반환
200
- */
201
- DropdownModel.prototype.getSelectedOptions = function () {
202
- var _this = this;
203
- return this.state.options.filter(function (opt) {
204
- return _this.state.selectedValues.includes(opt.id);
205
- });
206
- };
207
- /**
208
- * 옵션이 선택되었는지 확인
209
- */
210
- DropdownModel.prototype.isOptionSelected = function (optionId) {
211
- return this.state.selectedValues.includes(optionId);
212
- };
213
- /**
214
- * 전체 선택 상태인지 확인 (isAllItemsSelected와 동일)
215
- */
216
- DropdownModel.prototype.isAllSelected = function () {
217
- return this.isAllItemsSelected();
218
- };
219
- /**
220
- * 상태 리셋
221
- */
222
- DropdownModel.prototype.reset = function () {
223
- this.state.isOpen = false;
224
- this.state.focusedIndex = -1;
225
- this.state.selectedValues = [];
226
- this.state.searchValue = '';
227
- this.state.showAllItems = false;
228
- this.state.filteredOptions = [];
229
- this.notifyListeners(['isOpen', 'focusedIndex', 'selectedValues', 'searchValue', 'showAllItems', 'filteredOptions']);
230
- };
231
- /**
232
- * 전체 선택/해제 토글 (MultiSelectUtils에서 이동)
233
- */
234
- DropdownModel.prototype.toggleSelectAll = function () {
235
- if (!this.multiple) return;
236
- var availableOptions = this.state.options.filter(function (opt) {
237
- return !opt.disabled;
238
- });
239
- var allSelected = this.state.selectedValues.length === availableOptions.length;
240
- var newValue;
241
- if (allSelected) {
242
- newValue = [];
243
- } else {
244
- newValue = availableOptions.map(function (opt) {
245
- return opt.id;
246
- });
247
- }
248
- this.state.selectedValues = newValue;
249
- this.notifyListeners(['selectedValues']);
250
- };
251
- /**
252
- * 전체 선택 버튼 텍스트 반환 (MultiSelectUtils에서 이동)
253
- */
254
- DropdownModel.prototype.getSelectAllButtonText = function () {
255
- if (!this.multiple) return '전체 선택';
256
- return this.isAllItemsSelected() ? '전체 해제' : '전체 선택';
257
- };
258
- /**
259
- * 모든 항목이 선택되었는지 확인 (MultiSelectUtils에서 이동)
260
- */
261
- DropdownModel.prototype.isAllItemsSelected = function () {
262
- var _this = this;
263
- if (!this.multiple) return false;
264
- var availableOptions = this.state.options.filter(function (opt) {
265
- return !opt.disabled;
266
- });
267
- if (availableOptions.length === 0) return false;
268
- var availableIds = availableOptions.map(function (opt) {
269
- return opt.id;
270
- });
271
- return availableIds.length > 0 && availableIds.every(function (id) {
272
- return _this.state.selectedValues.includes(id);
273
- });
274
- };
275
- /**
276
- * 검색 및 필터링 업데이트 (SearchFilterUtils에서 이동)
277
- */
278
- DropdownModel.prototype.updateSearchAndFilter = function (searchValue, showAllItems) {
279
- if (showAllItems === void 0) {
280
- showAllItems = false;
281
- }
282
- this.state.searchValue = searchValue;
283
- this.state.showAllItems = showAllItems;
284
- this.updateFilteredOptions();
285
- this.notifyListeners(['searchValue', 'filteredOptions', 'showAllItems']);
286
- };
287
- /**
288
- * 검색어만 업데이트 (필터링 없이, API 모드용)
289
- */
290
- DropdownModel.prototype.updateSearchValue = function (searchValue) {
291
- this.state.searchValue = searchValue;
292
- this.notifyListeners(['searchValue']);
293
- };
294
- /**
295
- * 드롭다운이 열릴 수 있는지 확인 (ComboBox용)
296
- */
297
- DropdownModel.prototype.canOpenDropdown = function () {
298
- return this.state.showAllItems || this.state.searchValue.trim().length > 0;
299
- };
300
- /**
301
- * 검색 결과가 없는지 확인
302
- */
303
- DropdownModel.prototype.hasNoResults = function () {
304
- return this.state.filteredOptions.length === 0 && (this.state.showAllItems || Boolean(this.state.searchValue));
305
- };
306
- /**
307
- * 상태 동기화를 위한 외부 접근 메서드들 (DropdownUtils에서 이동)
308
- */
309
- DropdownModel.prototype.syncSetIsOpen = function (isOpen) {
310
- this.state.isOpen = isOpen;
311
- this.notifyListeners(['isOpen']);
312
- };
313
- DropdownModel.prototype.syncSetFocusedIndex = function (index) {
314
- this.state.focusedIndex = index;
315
- this.notifyListeners(['focusedIndex']);
316
- };
317
- DropdownModel.prototype.syncGetIsOpen = function () {
318
- return this.state.isOpen;
319
- };
320
- DropdownModel.prototype.syncGetFocusedIndex = function () {
321
- return this.state.focusedIndex;
322
- };
323
- DropdownModel.prototype.syncGetSelectedValues = function () {
324
- return __spreadArray([], this.state.selectedValues, true);
325
- };
326
- /**
327
- * 선택값 업데이트 (SelectBoxModel에서 이동)
328
- */
329
- DropdownModel.prototype.updateSelectedValues = function (values) {
330
- this.setSelectedValues(values);
331
- };
332
- /**
333
- * 값 설정 (API 호환성)
334
- */
335
- DropdownModel.prototype.setValue = function (value) {
336
- var values = Array.isArray(value) ? value : [value];
337
- this.setSelectedValues(values);
338
- };
339
- /**
340
- * 값 가져오기 (API 호환성)
341
- */
342
- DropdownModel.prototype.getValue = function () {
343
- return this.multiple ? this.state.selectedValues : this.state.selectedValues[0] || '';
344
- };
345
- /**
346
- * 입력 초기화 (ComboBox용)
347
- */
348
- DropdownModel.prototype.clearInput = function () {
349
- this.updateSearchAndFilter('');
350
- };
351
- /**
352
- * 디버그 정보 (개발용)
353
- */
354
- DropdownModel.prototype.getDebugInfo = function () {
355
- return {
356
- state: this.state,
357
- multiple: this.multiple,
358
- listeners: this.listeners.length
359
- };
360
- };
361
- return DropdownModel;
362
- }();
363
- export { DropdownModel };