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