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