@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,706 +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 __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
12
- function adopt(value) {
13
- return value instanceof P ? value : new P(function (resolve) {
14
- resolve(value);
15
- });
16
- }
17
- return new (P || (P = Promise))(function (resolve, reject) {
18
- function fulfilled(value) {
19
- try {
20
- step(generator.next(value));
21
- } catch (e) {
22
- reject(e);
23
- }
24
- }
25
- function rejected(value) {
26
- try {
27
- step(generator["throw"](value));
28
- } catch (e) {
29
- reject(e);
30
- }
31
- }
32
- function step(result) {
33
- result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
34
- }
35
- step((generator = generator.apply(thisArg, _arguments || [])).next());
36
- });
37
- };
38
- var __generator = this && this.__generator || function (thisArg, body) {
39
- var _ = {
40
- label: 0,
41
- sent: function () {
42
- if (t[0] & 1) throw t[1];
43
- return t[1];
44
- },
45
- trys: [],
46
- ops: []
47
- },
48
- f,
49
- y,
50
- t,
51
- g;
52
- return g = {
53
- next: verb(0),
54
- "throw": verb(1),
55
- "return": verb(2)
56
- }, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
57
- return this;
58
- }), g;
59
- function verb(n) {
60
- return function (v) {
61
- return step([n, v]);
62
- };
63
- }
64
- function step(op) {
65
- if (f) throw new TypeError("Generator is already executing.");
66
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
67
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
68
- if (y = 0, t) op = [op[0] & 2, t.value];
69
- switch (op[0]) {
70
- case 0:
71
- case 1:
72
- t = op;
73
- break;
74
- case 4:
75
- _.label++;
76
- return {
77
- value: op[1],
78
- done: false
79
- };
80
- case 5:
81
- _.label++;
82
- y = op[1];
83
- op = [0];
84
- continue;
85
- case 7:
86
- op = _.ops.pop();
87
- _.trys.pop();
88
- continue;
89
- default:
90
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
91
- _ = 0;
92
- continue;
93
- }
94
- if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
95
- _.label = op[1];
96
- break;
97
- }
98
- if (op[0] === 6 && _.label < t[1]) {
99
- _.label = t[1];
100
- t = op;
101
- break;
102
- }
103
- if (t && _.label < t[2]) {
104
- _.label = t[2];
105
- _.ops.push(op);
106
- break;
107
- }
108
- if (t[2]) _.ops.pop();
109
- _.trys.pop();
110
- continue;
111
- }
112
- op = body.call(thisArg, _);
113
- } catch (e) {
114
- op = [6, e];
115
- y = 0;
116
- } finally {
117
- f = t = 0;
118
- }
119
- if (op[0] & 5) throw op[1];
120
- return {
121
- value: op[0] ? op[1] : void 0,
122
- done: true
123
- };
124
- }
125
- };
126
- var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
127
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
128
- if (ar || !(i in from)) {
129
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
130
- ar[i] = from[i];
131
- }
132
- }
133
- return to.concat(ar || Array.prototype.slice.call(from));
134
- };
135
- import { DOMRenderer } from './DOMRenderer';
136
- import { DropdownModel } from './DropdownModel';
137
- import { UnifiedBoxController } from './UnifiedBoxController';
138
- /**
139
- * 통합된 UnifiedBox 클래스
140
- * SelectBox와 ComboBox의 기능을 모두 포함
141
- */
142
- var UnifiedBoxManager = /** @class */function () {
143
- function UnifiedBoxManager(element, config) {
144
- if (config === void 0) {
145
- config = {};
146
- }
147
- var _a;
148
- this.lastSearchValue = ''; // 이전 검색어 추적 (API 모드에서 옵션 교체를 위해)
149
- this.hasInitialOptions = false; // 초기 옵션이 있는지 여부 (select 태그 등)
150
- this.element = element;
151
- this.config = __assign(__assign({
152
- options: [],
153
- placeholder: config.type === 'combobox' ? '검색하세요' : '선택하세요',
154
- maxHeight: 275,
155
- disabled: false,
156
- size: 'md',
157
- multiple: false,
158
- showFooterButtons: false,
159
- required: false,
160
- type: 'selectbox'
161
- }, config), {
162
- searchDebounceMs: (_a = config.searchDebounceMs) !== null && _a !== void 0 ? _a : 500
163
- });
164
- this.initialize();
165
- }
166
- UnifiedBoxManager.prototype.initialize = function () {
167
- this.element.innerHTML = '';
168
- this.setupElementClasses();
169
- // 초기 옵션이 있는지 확인 (select 태그 등에서 파싱된 옵션이 있는 경우)
170
- this.hasInitialOptions = this.config.options && this.config.options.length > 0 || false;
171
- this.model = new DropdownModel(this.config.options || [], this.config.multiple || false);
172
- // ComboBox 타입인 경우 모델에 설정
173
- if (this.config.type === 'combobox') {
174
- this.model.setComboBoxMode(true);
175
- }
176
- this.renderer = new DOMRenderer();
177
- this.createUI();
178
- this.setupController();
179
- if (this.config.value) {
180
- this.model.setValue(this.config.value);
181
- }
182
- };
183
- UnifiedBoxManager.prototype.setupElementClasses = function () {
184
- var baseClass = this.config.type === 'combobox' ? 'ncua-combobox' : 'ncua-selectbox';
185
- this.element.className = "".concat(baseClass, " ").concat(baseClass, "--").concat(this.config.size);
186
- if (this.config.disabled) {
187
- this.element.classList.add("".concat(baseClass, "--disabled"));
188
- }
189
- if (this.config.multiple) {
190
- this.element.classList.add("".concat(baseClass, "--multiple"));
191
- }
192
- };
193
- UnifiedBoxManager.prototype.createUI = function () {
194
- if (this.config.type === 'combobox') {
195
- this.createComboBoxUI();
196
- } else {
197
- this.createSelectBoxUI();
198
- }
199
- };
200
- UnifiedBoxManager.prototype.createComboBoxUI = function () {
201
- var _this = this;
202
- // 컨텐츠 컨테이너
203
- var content = DOMRenderer.createElementWithClass('div', 'ncua-combobox__content');
204
- this.element.appendChild(content);
205
- // 입력 필드 생성
206
- this.inputField = this.renderer.createInputField({
207
- placeholder: this.config.placeholder || '검색하세요',
208
- disabled: this.config.disabled || false,
209
- size: this.config.size || 'md',
210
- showSearchIcon: true,
211
- onInput: function (value) {
212
- return _this.handleInput(value);
213
- },
214
- onClick: function () {
215
- return _this.handleInputClick();
216
- },
217
- onClear: function () {
218
- return _this.handleClearInput();
219
- },
220
- onShowAll: function () {
221
- return _this.handleShowAll();
222
- }
223
- });
224
- content.appendChild(this.inputField.container);
225
- this.triggerElement = this.inputField.input;
226
- // 드롭다운 생성
227
- this.createDropdown(content);
228
- };
229
- UnifiedBoxManager.prototype.createSelectBoxUI = function () {
230
- // 트리거 생성
231
- var trigger = DOMRenderer.createElementWithClass('div', 'ncua-selectbox__content');
232
- trigger.setAttribute('tabindex', this.config.disabled ? '-1' : '0');
233
- trigger.setAttribute('role', 'combobox');
234
- trigger.setAttribute('aria-expanded', 'false');
235
- trigger.setAttribute('aria-haspopup', 'listbox');
236
- var valueSpan = DOMRenderer.createElementWithClass('span', 'ncua-selectbox__value', this.config.placeholder);
237
- var arrow = DOMRenderer.createSvgIcon('chevron-down', this.config.size === 'xs' ? 14 : 16);
238
- arrow.classList.add('ncua-selectbox__arrow');
239
- trigger.appendChild(valueSpan);
240
- trigger.appendChild(arrow);
241
- this.element.appendChild(trigger);
242
- this.triggerElement = trigger;
243
- this.arrowElement = arrow;
244
- // 드롭다운 생성
245
- this.createDropdown(this.element);
246
- };
247
- UnifiedBoxManager.prototype.createDropdown = function (parent) {
248
- var _this = this;
249
- var dropdownStructure = this.renderer.createDropdownStructure({
250
- maxHeight: this.config.maxHeight || 275,
251
- size: this.config.size || 'md',
252
- listboxId: "selectbox-".concat(Date.now()),
253
- noResultsText: '일치하는 결과가 없습니다.'
254
- });
255
- this.dropdownElement = dropdownStructure.dropdown;
256
- // SelectBox 단일 선택 모드일 때 특별한 클래스 추가
257
- if (this.config.type === 'selectbox' && !this.config.multiple) {
258
- this.dropdownElement.classList.add('ncua-select-dropdown--selectbox-single');
259
- }
260
- // 다중 선택 모드일 때 클래스 추가
261
- if (this.config.multiple) {
262
- this.dropdownElement.classList.add('ncua-select-dropdown--multiple');
263
- }
264
- parent.appendChild(this.dropdownElement);
265
- // 푸터 버튼 추가 (필요한 경우)
266
- if (this.config.multiple || this.config.showFooterButtons) {
267
- this.footerElement = this.renderer.createFooter({
268
- multiple: this.config.multiple,
269
- showFooterButtons: this.config.showFooterButtons,
270
- selectAllButtonText: this.model.getSelectAllButtonText(),
271
- onSelectAll: function () {
272
- return _this.handleSelectAll();
273
- },
274
- onEdit: this.config.onEdit ? function () {
275
- var _a, _b;
276
- return (_b = (_a = _this.config).onEdit) === null || _b === void 0 ? void 0 : _b.call(_a);
277
- } : undefined,
278
- onComplete: function () {
279
- return _this.handleComplete();
280
- }
281
- });
282
- this.dropdownElement.appendChild(this.footerElement);
283
- }
284
- };
285
- UnifiedBoxManager.prototype.setupController = function () {
286
- var _this = this;
287
- if (!this.triggerElement || !this.dropdownElement) {
288
- throw new Error('Trigger or dropdown element not found');
289
- }
290
- var controllerConfig = {
291
- triggerElement: this.triggerElement,
292
- dropdownElement: this.dropdownElement,
293
- model: this.model,
294
- renderer: this.renderer,
295
- renderConfig: {
296
- maxHeight: this.config.maxHeight || 275,
297
- size: this.config.size || 'md',
298
- listboxId: "selectbox-".concat(Date.now()),
299
- noResultsText: '일치하는 결과가 없습니다.'
300
- },
301
- onOpen: function () {
302
- var baseClass = _this.config.type === 'combobox' ? 'ncua-combobox' : 'ncua-selectbox';
303
- _this.element.classList.add("".concat(baseClass, "--open"));
304
- if (_this.triggerElement) {
305
- _this.triggerElement.setAttribute('aria-expanded', 'true');
306
- }
307
- // 화살표 아이콘 회전 (selectbox 타입일 때만)
308
- if (_this.config.type === 'selectbox' && _this.arrowElement) {
309
- _this.arrowElement.classList.add('ncua-selectbox__arrow--up');
310
- }
311
- },
312
- onClose: function () {
313
- var baseClass = _this.config.type === 'combobox' ? 'ncua-combobox' : 'ncua-selectbox';
314
- _this.element.classList.remove("".concat(baseClass, "--open"));
315
- if (_this.triggerElement) {
316
- _this.triggerElement.setAttribute('aria-expanded', 'false');
317
- }
318
- // 화살표 아이콘 원래대로 (selectbox 타입일 때만)
319
- if (_this.config.type === 'selectbox' && _this.arrowElement) {
320
- _this.arrowElement.classList.remove('ncua-selectbox__arrow--up');
321
- }
322
- },
323
- onSelectionChange: function (selectedValues) {
324
- _this.handleSelectionChange(selectedValues);
325
- },
326
- onSearch: function (searchValue) {
327
- var _a, _b;
328
- (_b = (_a = _this.config).onSearch) === null || _b === void 0 ? void 0 : _b.call(_a, searchValue);
329
- },
330
- onScrollBottom: this.config.onScrollBottom,
331
- disabled: this.config.disabled || false,
332
- canToggle: function () {
333
- return _this.canToggleDropdown();
334
- },
335
- type: this.config.type // 타입 정보 전달
336
- };
337
- this.controller = new UnifiedBoxController(controllerConfig);
338
- };
339
- /**
340
- * 디바운싱 타이머 취소
341
- */
342
- UnifiedBoxManager.prototype.cancelDebounceTimer = function () {
343
- if (this.searchDebounceTimer) {
344
- clearTimeout(this.searchDebounceTimer);
345
- this.searchDebounceTimer = undefined;
346
- this.currentDebounceTimerId = undefined;
347
- }
348
- };
349
- // 이벤트 핸들러들
350
- UnifiedBoxManager.prototype.handleInput = function (value) {
351
- var _this = this;
352
- var _a, _b;
353
- this.cancelDebounceTimer();
354
- // 필터링은 즉시 업데이트 (사용자가 입력하는 동안 필터링 결과를 즉시 보여줌)
355
- // 하지만 onSearch 콜백은 디바운싱 적용
356
- var isApiMode = this.config.type === 'combobox' && !this.hasInitialOptions;
357
- // API 모드에서는 검색어 변경 추적만 하고, 옵션은 디바운싱 후 비우기
358
- if (isApiMode && this.lastSearchValue !== value) {
359
- this.lastSearchValue = value;
360
- }
361
- // 디바운싱이 설정되어 있으면 입력이 멈춘 후 onSearch 콜백만 실행
362
- if (this.config.searchDebounceMs > 0) {
363
- // 새로운 타이머 ID 생성 (각 타이머를 고유하게 식별)
364
- var timerId_1 = Date.now() + Math.random();
365
- this.currentDebounceTimerId = timerId_1;
366
- this.searchDebounceTimer = window.setTimeout(function () {
367
- return __awaiter(_this, void 0, void 0, function () {
368
- var _a, _b;
369
- return __generator(this, function (_c) {
370
- switch (_c.label) {
371
- case 0:
372
- // 타이머가 취소되었는지 확인 (다른 타이머가 시작되었으면 현재 타이머는 무시)
373
- if (this.currentDebounceTimerId !== timerId_1) {
374
- return [2 /*return*/]; // 이 타이머는 취소되었으므로 실행하지 않음
375
- }
376
- // 타이머가 여전히 유효하면 실행
377
- this.searchDebounceTimer = undefined;
378
- this.currentDebounceTimerId = undefined;
379
- // API 모드: 검색어만 업데이트 (필터링은 하지 않음, 서버에서 필터링된 결과를 받음)
380
- // 일반 모드: 검색어 업데이트 + 로컬 필터링
381
- if (isApiMode) {
382
- this.model.updateSearchValue(value);
383
- } else {
384
- this.model.updateSearchAndFilter(value);
385
- }
386
- // onSearch 콜백 호출 및 완료 대기 (디바운싱 적용, 최종 타이머만 실행)
387
- return [4 /*yield*/, (_b = (_a = this.config).onSearch) === null || _b === void 0 ? void 0 : _b.call(_a, value)];
388
- case 1:
389
- // onSearch 콜백 호출 및 완료 대기 (디바운싱 적용, 최종 타이머만 실행)
390
- _c.sent();
391
- // 텍스트가 있을 때만 드롭다운 열기
392
- if (value.trim()) {
393
- this.controller.open();
394
- } else if (!this.model.getState().showAllItems) {
395
- this.controller.close();
396
- }
397
- return [2 /*return*/];
398
- }
399
- });
400
- });
401
- }, this.config.searchDebounceMs);
402
- } else {
403
- // 디바운싱이 0으로 명시적으로 설정되었으면 즉시 실행
404
- this.model.updateSearchAndFilter(value);
405
- // 텍스트가 있거나 옵션이 있으면 드롭다운 열기
406
- var hasOptions = this.model.getState().options.length > 0 || this.model.getState().filteredOptions.length > 0;
407
- if (value.trim() || hasOptions) {
408
- this.controller.open();
409
- } else if (!this.model.getState().showAllItems) {
410
- this.controller.close();
411
- }
412
- // onSearch 콜백 호출 (디바운싱 없음)
413
- (_b = (_a = this.config).onSearch) === null || _b === void 0 ? void 0 : _b.call(_a, value);
414
- }
415
- };
416
- UnifiedBoxManager.prototype.handleInputClick = function () {
417
- var _a, _b;
418
- if (!this.config.disabled) {
419
- (_a = this.inputField) === null || _a === void 0 ? void 0 : _a.focus();
420
- if (this.config.type === 'combobox') {
421
- var currentInputValue = ((_b = this.inputField) === null || _b === void 0 ? void 0 : _b.input.value) || '';
422
- if (currentInputValue.trim().length > 0 || this.model.getState().showAllItems) {
423
- this.controller.open();
424
- }
425
- }
426
- }
427
- };
428
- UnifiedBoxManager.prototype.handleClearInput = function () {
429
- this.cancelDebounceTimer();
430
- // input 필드 텍스트 지우기
431
- if (this.inputField) {
432
- this.inputField.setValue('');
433
- }
434
- // 모델의 검색값도 초기화
435
- this.model.clearInput();
436
- // ComboBox 타입이고 초기 옵션이 없는 경우 (API 모드)
437
- // Clear 버튼 클릭 시 옵션도 완전히 비우기
438
- var isApiMode = this.config.type === 'combobox' && !this.hasInitialOptions;
439
- if (isApiMode) {
440
- this.model.updateOptions([]);
441
- this.lastSearchValue = '';
442
- }
443
- this.controller.close();
444
- };
445
- UnifiedBoxManager.prototype.handleShowAll = function () {
446
- var _a, _b, _c, _d;
447
- return __awaiter(this, void 0, void 0, function () {
448
- var hasOptions;
449
- return __generator(this, function (_e) {
450
- switch (_e.label) {
451
- case 0:
452
- if (!!this.config.disabled) return [3 /*break*/, 2];
453
- (_a = this.inputField) === null || _a === void 0 ? void 0 : _a.focus();
454
- (_b = this.inputField) === null || _b === void 0 ? void 0 : _b.setValue('');
455
- this.model.updateSearchAndFilter('', true);
456
- // onSearchAll 콜백 호출 (async 함수일 경우를 대비해 Promise.resolve로 감싸서 처리)
457
- return [4 /*yield*/, Promise.resolve((_d = (_c = this.config).onSearchAll) === null || _d === void 0 ? void 0 : _d.call(_c))];
458
- case 1:
459
- // onSearchAll 콜백 호출 (async 함수일 경우를 대비해 Promise.resolve로 감싸서 처리)
460
- _e.sent();
461
- hasOptions = this.model.getState().options.length > 0 || this.model.getState().filteredOptions.length > 0;
462
- if (hasOptions) {
463
- this.controller.open();
464
- }
465
- _e.label = 2;
466
- case 2:
467
- return [2 /*return*/];
468
- }
469
- });
470
- });
471
- };
472
- UnifiedBoxManager.prototype.handleSelectionChange = function (selectedValues) {
473
- var _a, _b;
474
- this.cancelDebounceTimer();
475
- var result = this.config.multiple ? selectedValues : selectedValues[0] || '';
476
- (_b = (_a = this.config).onChange) === null || _b === void 0 ? void 0 : _b.call(_a, result);
477
- // UI 업데이트
478
- if (this.config.type === 'selectbox') {
479
- this.updateSelectBoxValue();
480
- }
481
- // 다중 선택인 경우 전체 선택 버튼 텍스트 업데이트
482
- if (this.config.multiple) {
483
- this.updateSelectAllButtonText();
484
- }
485
- // 단일 선택 시 드롭다운 닫기
486
- if (!this.config.multiple && !this.config.showFooterButtons) {
487
- this.controller.close();
488
- }
489
- };
490
- UnifiedBoxManager.prototype.updateSelectBoxValue = function () {
491
- var valueSpan = this.element.querySelector('.ncua-selectbox__value');
492
- if (valueSpan) {
493
- if (this.config.multiple) {
494
- // Multiple 모드일 때는 항상 placeholder 표시
495
- valueSpan.textContent = this.config.placeholder || '';
496
- } else {
497
- // Single 모드일 때는 선택된 옵션 또는 placeholder 표시
498
- var selectedOptions = this.model.getSelectedOptions();
499
- var selectedOption = selectedOptions[0];
500
- valueSpan.textContent = selectedOption ? selectedOption.label : this.config.placeholder || '';
501
- }
502
- }
503
- };
504
- UnifiedBoxManager.prototype.canToggleDropdown = function () {
505
- var _a;
506
- if (this.config.type === 'combobox') {
507
- // ComboBox의 경우: 인풋에 텍스트가 있으면 항상 토글 가능
508
- var currentInputValue = ((_a = this.inputField) === null || _a === void 0 ? void 0 : _a.input.value) || '';
509
- return currentInputValue.trim().length > 0 || this.model.getState().showAllItems;
510
- }
511
- return true; // SelectBox는 항상 토글 가능
512
- };
513
- // 푸터 버튼 핸들러들
514
- UnifiedBoxManager.prototype.handleSelectAll = function () {
515
- var _a, _b;
516
- if (this.config.multiple) {
517
- this.model.toggleSelectAll();
518
- this.updateSelectAllButtonText();
519
- // 외부 콜백 호출
520
- (_b = (_a = this.config).onSelectAll) === null || _b === void 0 ? void 0 : _b.call(_a);
521
- }
522
- };
523
- UnifiedBoxManager.prototype.handleComplete = function () {
524
- var _a, _b, _c, _d;
525
- if (this.config.multiple || this.config.type === 'combobox') {
526
- var currentValues = this.model.getValue();
527
- // SelectBox 타입이고 multiple 모드일 때만 onChange 콜백으로 현재 선택된 값들 전달
528
- if (this.config.type === 'selectbox' && this.config.multiple && Array.isArray(currentValues)) {
529
- (_b = (_a = this.config).onChange) === null || _b === void 0 ? void 0 : _b.call(_a, currentValues);
530
- }
531
- (_d = (_c = this.config).onComplete) === null || _d === void 0 ? void 0 : _d.call(_c);
532
- // ComboBox 타입인 경우에만 값 초기화 및 검색어 초기화
533
- if (this.config.type === 'combobox') {
534
- this.model.setValue([]);
535
- if (this.inputField) {
536
- this.inputField.setValue('');
537
- }
538
- this.model.clearInput();
539
- var isApiMode = !this.hasInitialOptions;
540
- if (isApiMode) {
541
- this.model.updateOptions([]);
542
- this.lastSearchValue = '';
543
- }
544
- }
545
- this.controller.close();
546
- }
547
- };
548
- UnifiedBoxManager.prototype.updateSelectAllButtonText = function () {
549
- if (!this.config.multiple || !this.footerElement) return;
550
- this.renderer.updateSelectAllButtonText(this.footerElement, this.model.getSelectAllButtonText());
551
- };
552
- // Public API
553
- UnifiedBoxManager.prototype.getValues = function () {
554
- var selectedIds = this.model.getValue();
555
- var allOptions = this.getOptions();
556
- // selectedIds가 배열이 아닌 경우 배열로 변환
557
- var ids = Array.isArray(selectedIds) ? selectedIds : selectedIds ? [selectedIds] : [];
558
- // 선택된 id에 해당하는 옵션 객체들을 찾아서 반환
559
- return ids.map(function (id) {
560
- return allOptions.find(function (opt) {
561
- return opt.id === id;
562
- });
563
- }).filter(function (opt) {
564
- return opt !== undefined;
565
- });
566
- };
567
- UnifiedBoxManager.prototype.getOptions = function () {
568
- return this.config.options || [];
569
- };
570
- UnifiedBoxManager.prototype.setValues = function (value) {
571
- // 옵션 객체 배열에서 id 배열로 변환
572
- var ids = value.map(function (option) {
573
- return option.id;
574
- });
575
- // 단일 선택 모드인 경우 첫 번째 값만 사용
576
- var finalIds = this.config.multiple ? ids : ids[0] || '';
577
- this.model.setValue(finalIds);
578
- if (this.config.type === 'selectbox') {
579
- this.updateSelectBoxValue();
580
- } else {
581
- // ComboBox의 경우 input 필드도 업데이트
582
- if (this.inputField) {
583
- var isEmpty = value.length === 0;
584
- if (isEmpty) {
585
- // 빈 값으로 설정할 때 input 필드와 검색값 모두 비우기
586
- this.inputField.setValue('');
587
- this.model.updateSearchAndFilter('');
588
- }
589
- }
590
- }
591
- };
592
- UnifiedBoxManager.prototype.updateOptions = function (newOptions) {
593
- // config.options도 업데이트 (getOptions()가 이를 반환하므로)
594
- this.config.options = __spreadArray([], newOptions, true);
595
- this.model.updateOptions(newOptions);
596
- this.controller.updateOptions(newOptions);
597
- };
598
- UnifiedBoxManager.prototype.setDisabled = function (disabled) {
599
- var _a, _b;
600
- this.config.disabled = disabled;
601
- var baseClass = this.config.type === 'combobox' ? 'ncua-combobox' : 'ncua-selectbox';
602
- var disabledClass = "".concat(baseClass, "--disabled");
603
- this.element.classList.toggle(disabledClass, disabled);
604
- if (this.controller) {
605
- this.controller.setDisabled(disabled);
606
- }
607
- if (this.config.type === 'combobox') {
608
- // 입력 필드 비활성화
609
- if ((_a = this.inputField) === null || _a === void 0 ? void 0 : _a.input) {
610
- this.inputField.input.disabled = disabled;
611
- (_b = this.inputField.container) === null || _b === void 0 ? void 0 : _b.classList.toggle('is-disabled', disabled);
612
- }
613
- } else if (this.triggerElement) {
614
- this.triggerElement.setAttribute('tabindex', disabled ? '-1' : '0');
615
- }
616
- };
617
- UnifiedBoxManager.prototype.open = function () {
618
- this.controller.open();
619
- };
620
- UnifiedBoxManager.prototype.close = function () {
621
- this.controller.close();
622
- };
623
- UnifiedBoxManager.prototype.focus = function () {
624
- var _a, _b;
625
- if (this.config.type === 'combobox') {
626
- (_a = this.inputField) === null || _a === void 0 ? void 0 : _a.focus();
627
- } else {
628
- (_b = this.triggerElement) === null || _b === void 0 ? void 0 : _b.focus();
629
- }
630
- };
631
- UnifiedBoxManager.prototype.destroy = function () {
632
- this.cancelDebounceTimer();
633
- this.controller.destroy();
634
- this.renderer.clearCache();
635
- this.inputField = undefined;
636
- };
637
- // Multiple 모드 전용 메서드들
638
- UnifiedBoxManager.prototype.selectAll = function () {
639
- var _a;
640
- if (this.config.multiple) {
641
- var allOptionIds = ((_a = this.config.options) === null || _a === void 0 ? void 0 : _a.map(function (option) {
642
- return option.id;
643
- })) || [];
644
- this.model.setValue(allOptionIds);
645
- }
646
- };
647
- UnifiedBoxManager.prototype.deselectAll = function () {
648
- if (this.config.multiple) {
649
- this.model.setValue([]);
650
- }
651
- };
652
- UnifiedBoxManager.prototype.isMultiple = function () {
653
- return this.config.multiple || false;
654
- };
655
- UnifiedBoxManager.prototype.toggleSelectAll = function () {
656
- var _a;
657
- if (!this.config.multiple) return;
658
- var currentValues = this.model.getValue();
659
- var allOptionIds = ((_a = this.config.options) === null || _a === void 0 ? void 0 : _a.map(function (option) {
660
- return option.id;
661
- })) || [];
662
- if (Array.isArray(currentValues) && currentValues.length === allOptionIds.length) {
663
- // 모든 옵션이 선택되어 있으면 전체 해제
664
- this.deselectAll();
665
- } else {
666
- // 일부만 선택되어 있거나 아무것도 선택되지 않았으면 전체 선택
667
- this.selectAll();
668
- }
669
- };
670
- // 디버깅용
671
- UnifiedBoxManager.prototype.getDebugInfo = function () {
672
- return {
673
- config: this.config,
674
- modelState: this.model.getDebugInfo(),
675
- isOpen: this.model.getState().isOpen
676
- };
677
- };
678
- /**
679
- * 드롭다운을 스크롤의 바닥으로 이동
680
- * 전체 선택 시 추가 데이터 로드를 트리거하기 위해 사용
681
- */
682
- UnifiedBoxManager.prototype.scrollToBottom = function () {
683
- if (!this.dropdownElement) return;
684
- var optionsList = this.dropdownElement.querySelector('.ncua-select-dropdown__options');
685
- if (!optionsList) return;
686
- // 스크롤을 바닥으로 이동
687
- optionsList.scrollTop = optionsList.scrollHeight;
688
- };
689
- /**
690
- * 전체 선택 버튼의 텍스트를 외부에서 변경
691
- * @param text 버튼에 표시할 텍스트
692
- */
693
- UnifiedBoxManager.prototype.setSelectAllButtonText = function (text) {
694
- if (!this.config.multiple || !this.footerElement) return;
695
- this.renderer.updateSelectAllButtonText(this.footerElement, text);
696
- };
697
- /**
698
- * 특정 인덱스의 옵션으로 포커스 이동
699
- * @param index 포커스를 이동할 옵션의 인덱스
700
- */
701
- UnifiedBoxManager.prototype.setFocusIndex = function (index) {
702
- this.controller.setFocus(index);
703
- };
704
- return UnifiedBoxManager;
705
- }();
706
- export { UnifiedBoxManager };