@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,108 +0,0 @@
1
- export interface RenderableOption {
2
- id: string | number;
3
- label: string;
4
- disabled?: boolean;
5
- selected?: boolean;
6
- focused?: boolean;
7
- }
8
- export interface DropdownRenderConfig {
9
- maxHeight: number;
10
- size: 'xs' | 'sm' | 'md';
11
- listboxId: string;
12
- noResultsText?: string;
13
- }
14
- export interface OptionElementData {
15
- element: HTMLLIElement;
16
- option: RenderableOption;
17
- index: number;
18
- }
19
- export declare class DOMRenderer {
20
- private optionElementCache;
21
- /**
22
- * 드롭다운 컨테이너 생성 (구조만)
23
- */
24
- createDropdownStructure(config: DropdownRenderConfig): {
25
- dropdown: HTMLDivElement;
26
- content: HTMLDivElement;
27
- optionsList: HTMLUListElement;
28
- };
29
- /**
30
- * 단일 옵션 엘리먼트 생성 (재사용 가능)
31
- */
32
- createOptionElement(option: RenderableOption, index: number, config: DropdownRenderConfig): HTMLLIElement;
33
- /**
34
- * 옵션 엘리먼트 상태 업데이트 (DOM 조작 최소화)
35
- */
36
- updateOptionElement(element: HTMLLIElement, option: RenderableOption, index: number, config: DropdownRenderConfig): void;
37
- /**
38
- * "결과 없음" 엘리먼트 생성
39
- */
40
- createNoResultsElement(text?: string): HTMLLIElement;
41
- /**
42
- * 옵션 리스트 효율적 업데이트 (Differential Rendering)
43
- */
44
- updateOptionsList(container: HTMLUListElement, newOptions: RenderableOption[], config: DropdownRenderConfig, showNoResults?: boolean): HTMLLIElement[];
45
- /**
46
- * 컨테이너 자식 엘리먼트 효율적 업데이트
47
- */
48
- private updateContainerChildren;
49
- /**
50
- * 클래스 토글 (변경이 필요한 경우에만)
51
- */
52
- private toggleClass;
53
- /**
54
- * 입력 필드 생성 (InputFieldUtils에서 이동)
55
- */
56
- createInputField(config: {
57
- placeholder?: string;
58
- disabled?: boolean;
59
- size?: 'xs' | 'sm' | 'md';
60
- showSearchIcon?: boolean;
61
- onInput?: (value: string) => void;
62
- onClick?: () => void;
63
- onShowAll?: () => void;
64
- onClear?: () => void;
65
- }): {
66
- container: HTMLElement;
67
- input: HTMLInputElement;
68
- setValue: (value: string) => void;
69
- focus: () => void;
70
- blur: () => void;
71
- };
72
- /**
73
- * 캐시 정리
74
- */
75
- clearCache(): void;
76
- /**
77
- * 특정 옵션 캐시 제거
78
- */
79
- removeCachedOption(optionId: string | number): void;
80
- /**
81
- * 공통 DOM 생성 유틸리티
82
- */
83
- static createElementWithClass(tagName: string, className: string, textContent?: string): HTMLElement;
84
- /**
85
- * 버튼 엘리먼트 생성
86
- */
87
- static createButton(className: string, textContent: string, onClick?: (e: Event) => void): HTMLButtonElement;
88
- /**
89
- * SVG 아이콘 생성
90
- */
91
- static createSvgIcon(iconName: string, size?: number): SVGElement;
92
- /**
93
- * 푸터 생성
94
- */
95
- createFooter(config: {
96
- multiple?: boolean;
97
- showFooterButtons?: boolean;
98
- onSelectAll?: () => void;
99
- onEdit?: () => void;
100
- onComplete?: () => void;
101
- selectAllButtonText?: string;
102
- }): HTMLElement;
103
- /**
104
- * 전체 선택 버튼 텍스트 업데이트
105
- */
106
- updateSelectAllButtonText(footerElement: HTMLElement, text: string): void;
107
- }
108
- //# sourceMappingURL=DOMRenderer.d.ts.map
@@ -1,158 +0,0 @@
1
- export interface DropdownOption {
2
- id: string | number;
3
- label: string;
4
- disabled?: boolean;
5
- originalValue?: string;
6
- }
7
- export interface DropdownState {
8
- isOpen: boolean;
9
- focusedIndex: number;
10
- selectedValues: (string | number)[];
11
- searchValue: string;
12
- showAllItems: boolean;
13
- options: DropdownOption[];
14
- filteredOptions: DropdownOption[];
15
- }
16
- export interface StateChangeListener {
17
- onStateChange(newState: DropdownState, changedFields: string[]): void;
18
- }
19
- /**
20
- * 드롭다운 상태 관리 모델
21
- * Observer Pattern을 통한 상태 변경 알림
22
- */
23
- export declare class DropdownModel {
24
- private state;
25
- private listeners;
26
- protected multiple: boolean;
27
- private isComboBox;
28
- constructor(initialOptions: DropdownOption[], multiple?: boolean);
29
- /**
30
- * 상태 변경 리스너 등록
31
- */
32
- addListener(listener: StateChangeListener): void;
33
- /**
34
- * 상태 변경 리스너 제거
35
- */
36
- removeListener(listener: StateChangeListener): void;
37
- /**
38
- * 상태 변경 알림
39
- */
40
- private notifyListeners;
41
- /**
42
- * ComboBox 타입 설정
43
- */
44
- setComboBoxMode(isComboBox: boolean): void;
45
- /**
46
- * 드롭다운 열기/닫기
47
- */
48
- setOpen(isOpen: boolean): void;
49
- /**
50
- * 포커스 인덱스 설정
51
- */
52
- setFocusedIndex(index: number): void;
53
- /**
54
- * 검색어 설정 및 필터링
55
- */
56
- setSearchValue(searchValue: string): void;
57
- /**
58
- * 전체 보기 토글
59
- */
60
- setShowAllItems(showAll: boolean): void;
61
- /**
62
- * 선택된 값들을 직접 설정 (protected)
63
- */
64
- protected setSelectedValues(values: (string | number)[]): void;
65
- /**
66
- * 옵션 선택/해제
67
- */
68
- toggleOption(optionId: string | number): void;
69
- /**
70
- * 옵션 업데이트
71
- */
72
- updateOptions(newOptions: DropdownOption[]): void;
73
- /**
74
- * 필터링된 옵션 업데이트
75
- */
76
- private updateFilteredOptions;
77
- /**
78
- * 현재 상태 반환 (읽기 전용)
79
- */
80
- getState(): Readonly<DropdownState>;
81
- /**
82
- * 다중 선택 모드 여부 반환
83
- */
84
- isMultiple(): boolean;
85
- /**
86
- * 선택된 옵션들 반환
87
- */
88
- getSelectedOptions(): DropdownOption[];
89
- /**
90
- * 옵션이 선택되었는지 확인
91
- */
92
- isOptionSelected(optionId: string | number): boolean;
93
- /**
94
- * 전체 선택 상태인지 확인 (isAllItemsSelected와 동일)
95
- */
96
- isAllSelected(): boolean;
97
- /**
98
- * 상태 리셋
99
- */
100
- reset(): void;
101
- /**
102
- * 전체 선택/해제 토글 (MultiSelectUtils에서 이동)
103
- */
104
- toggleSelectAll(): void;
105
- /**
106
- * 전체 선택 버튼 텍스트 반환 (MultiSelectUtils에서 이동)
107
- */
108
- getSelectAllButtonText(): string;
109
- /**
110
- * 모든 항목이 선택되었는지 확인 (MultiSelectUtils에서 이동)
111
- */
112
- isAllItemsSelected(): boolean;
113
- /**
114
- * 검색 및 필터링 업데이트 (SearchFilterUtils에서 이동)
115
- */
116
- updateSearchAndFilter(searchValue: string, showAllItems?: boolean): void;
117
- /**
118
- * 검색어만 업데이트 (필터링 없이, API 모드용)
119
- */
120
- updateSearchValue(searchValue: string): void;
121
- /**
122
- * 드롭다운이 열릴 수 있는지 확인 (ComboBox용)
123
- */
124
- canOpenDropdown(): boolean;
125
- /**
126
- * 검색 결과가 없는지 확인
127
- */
128
- hasNoResults(): boolean;
129
- /**
130
- * 상태 동기화를 위한 외부 접근 메서드들 (DropdownUtils에서 이동)
131
- */
132
- syncSetIsOpen(isOpen: boolean): void;
133
- syncSetFocusedIndex(index: number): void;
134
- syncGetIsOpen(): boolean;
135
- syncGetFocusedIndex(): number;
136
- syncGetSelectedValues(): (string | number)[];
137
- /**
138
- * 선택값 업데이트 (SelectBoxModel에서 이동)
139
- */
140
- updateSelectedValues(values: (string | number)[]): void;
141
- /**
142
- * 값 설정 (API 호환성)
143
- */
144
- setValue(value: string | number | (string | number)[]): void;
145
- /**
146
- * 값 가져오기 (API 호환성)
147
- */
148
- getValue(): string | number | (string | number)[];
149
- /**
150
- * 입력 초기화 (ComboBox용)
151
- */
152
- clearInput(): void;
153
- /**
154
- * 디버그 정보 (개발용)
155
- */
156
- getDebugInfo(): any;
157
- }
158
- //# sourceMappingURL=DropdownModel.d.ts.map
@@ -1,171 +0,0 @@
1
- import { DOMRenderer, DropdownRenderConfig } from './DOMRenderer';
2
- import { DropdownModel, DropdownState, StateChangeListener } from './DropdownModel';
3
- export interface UnifiedBoxControllerConfig {
4
- triggerElement: HTMLElement;
5
- dropdownElement: HTMLElement;
6
- model: DropdownModel;
7
- renderer: DOMRenderer;
8
- renderConfig: DropdownRenderConfig;
9
- onOpen?: () => void;
10
- onClose?: () => void;
11
- onSelectionChange?: (selectedValues: (string | number)[]) => void;
12
- onSearch?: (searchValue: string) => void;
13
- onScrollBottom?: () => void;
14
- disabled?: boolean;
15
- canToggle?: () => boolean;
16
- type?: 'selectbox' | 'combobox';
17
- }
18
- /**
19
- * SelectBox 통합 컨트롤러
20
- * 이벤트 처리, UI 상태 제어, 사용자 인터랙션 담당
21
- */
22
- export declare class UnifiedBoxController implements StateChangeListener {
23
- private config;
24
- private isOpen;
25
- private focusedIndex;
26
- private isKeyboardNavigation;
27
- private outsideClickHandler;
28
- private keyDownHandler;
29
- private scrollLockHandlers;
30
- private optionElements;
31
- private scrollPosition;
32
- private mouseMoveHandlerAttached;
33
- private lastFilteredOptionsCount;
34
- private lastFilteredOptionsHash;
35
- private scrollBottomHandler?;
36
- private lastScrollBottomTime;
37
- constructor(config: UnifiedBoxControllerConfig);
38
- /**
39
- * 상태 변경 리스너 (Observer Pattern)
40
- */
41
- onStateChange(newState: DropdownState, changedFields: string[]): void;
42
- /**
43
- * 이벤트 핸들러 설정
44
- */
45
- private setupEventHandlers;
46
- /**
47
- * 드롭다운 열기
48
- */
49
- open(): void;
50
- /**
51
- * 드롭다운 닫기
52
- */
53
- close(): void;
54
- /**
55
- * 드롭다운 토글
56
- */
57
- toggle(): void;
58
- /**
59
- * 키보드 입력 처리
60
- */
61
- private handleKeyDown;
62
- /**
63
- * 옵션 검색
64
- */
65
- private searchOption;
66
- /**
67
- * 드롭다운 표시/숨김 업데이트
68
- */
69
- private updateDropdownVisibility;
70
- /**
71
- * 옵션 표시 업데이트
72
- */
73
- private updateOptionsDisplay;
74
- /**
75
- * 포커스된 옵션 업데이트
76
- */
77
- private updateFocusedOption;
78
- /**
79
- * 옵션 클릭 이벤트 핸들러 등록
80
- */
81
- private attachOptionEventHandlers;
82
- /**
83
- * 옵션 이벤트 핸들러 제거
84
- */
85
- private removeOptionEventHandlers;
86
- /**
87
- * 옵션 업데이트가 필요한지 판단
88
- */
89
- private shouldUpdateOptions;
90
- /**
91
- * 외부 클릭 감지 활성화
92
- */
93
- private enableOutsideClick;
94
- /**
95
- * 외부 클릭 감지 비활성화
96
- */
97
- private disableOutsideClick;
98
- /**
99
- * 스크롤 잠금 활성화 (드롭다운 내부 스크롤은 허용)
100
- * ComboBox 또는 multiple 모드에서는 스크롤 잠금 비활성화
101
- */
102
- private enableScrollLock;
103
- /**
104
- * 스크롤 가능한 부모 요소 찾기
105
- */
106
- private findScrollableParent;
107
- /**
108
- * 스크롤 잠금 해제
109
- */
110
- private disableScrollLock;
111
- /**
112
- * 마우스 호버 처리 (외부에서 호출용)
113
- */
114
- handleMouseHover(index: number): void;
115
- /**
116
- * 옵션 배열 업데이트
117
- */
118
- updateOptions(options: any[]): void;
119
- getIsOpen(): boolean;
120
- setFocus(index: number): void;
121
- getFocusedIndex(): number;
122
- /**
123
- * DropdownUtils 호환을 위한 정적 팩토리 메서드
124
- */
125
- static createFromDropdownConfig(config: {
126
- triggerElement: HTMLElement;
127
- dropdownElement: HTMLElement;
128
- onOpen?: () => void;
129
- onClose?: () => void;
130
- disabled?: boolean;
131
- options?: any[];
132
- onFocusChange?: (index: number) => void;
133
- onOptionSelect?: (index: number) => void;
134
- onKeyboardNavigation?: (isKeyboard: boolean) => void;
135
- canToggle?: () => boolean;
136
- }): UnifiedBoxController;
137
- /**
138
- * 드롭다운 위치 조정 (화면 크기에 따라 up/down 방향 결정)
139
- * 단일 선택 모드에서만 적용
140
- */
141
- private adjustDropdownPosition;
142
- /**
143
- * 드롭다운 위치 계산 (React dropdownUtils.ts 로직 참고)
144
- */
145
- private calculateDropdownPosition;
146
- /**
147
- * 드롭다운 예상 높이 계산
148
- */
149
- private estimateDropdownHeight;
150
- /**
151
- * 드롭다운 세부 위치 조정 (뷰포트 경계 처리)
152
- */
153
- private adjustDropdownPositionDetails;
154
- /**
155
- * 스크롤 바닥 감지 활성화
156
- */
157
- private enableScrollBottomDetection;
158
- /**
159
- * 스크롤 바닥 감지 비활성화
160
- */
161
- private disableScrollBottomDetection;
162
- /**
163
- * disabled 상태 설정
164
- */
165
- setDisabled(disabled: boolean): void;
166
- /**
167
- * 정리
168
- */
169
- destroy(): void;
170
- }
171
- //# sourceMappingURL=UnifiedBoxController.d.ts.map
@@ -1,99 +0,0 @@
1
- import { OptionValue } from '../../../../src/types';
2
- import { DropdownOption } from './DropdownModel';
3
- export interface UnifiedBoxManagerConfig {
4
- options?: DropdownOption[];
5
- placeholder?: string;
6
- value?: OptionValue;
7
- onChange?: (value: OptionValue) => void;
8
- onSearch?: (searchValue: string) => void | Promise<void>;
9
- onEdit?: () => void;
10
- onSelectAll?: () => void;
11
- onSearchAll?: () => void;
12
- onComplete?: () => void;
13
- onScrollBottom?: () => void;
14
- searchDebounceMs?: number;
15
- maxHeight?: number;
16
- disabled?: boolean;
17
- size?: 'xs' | 'sm' | 'md';
18
- multiple?: boolean;
19
- showFooterButtons?: boolean;
20
- label?: string;
21
- required?: boolean;
22
- type?: 'selectbox' | 'combobox';
23
- }
24
- /**
25
- * 통합된 UnifiedBox 클래스
26
- * SelectBox와 ComboBox의 기능을 모두 포함
27
- */
28
- export declare class UnifiedBoxManager {
29
- private element;
30
- private config;
31
- private model;
32
- private renderer;
33
- private controller;
34
- private inputField?;
35
- private searchDebounceTimer?;
36
- private currentDebounceTimerId?;
37
- private lastSearchValue;
38
- private hasInitialOptions;
39
- private dropdownElement?;
40
- private triggerElement?;
41
- private footerElement?;
42
- private arrowElement?;
43
- constructor(element: HTMLElement, config?: UnifiedBoxManagerConfig);
44
- private initialize;
45
- private setupElementClasses;
46
- private createUI;
47
- private createComboBoxUI;
48
- private createSelectBoxUI;
49
- private createDropdown;
50
- private setupController;
51
- /**
52
- * 디바운싱 타이머 취소
53
- */
54
- private cancelDebounceTimer;
55
- private handleInput;
56
- private handleInputClick;
57
- private handleClearInput;
58
- private handleShowAll;
59
- private handleSelectionChange;
60
- private updateSelectBoxValue;
61
- private canToggleDropdown;
62
- private handleSelectAll;
63
- private handleComplete;
64
- private updateSelectAllButtonText;
65
- getValues(): DropdownOption[];
66
- getOptions(): DropdownOption[];
67
- setValues(value: DropdownOption[]): void;
68
- updateOptions(newOptions: DropdownOption[]): void;
69
- setDisabled(disabled: boolean): void;
70
- open(): void;
71
- close(): void;
72
- focus(): void;
73
- destroy(): void;
74
- selectAll(): void;
75
- deselectAll(): void;
76
- isMultiple(): boolean;
77
- toggleSelectAll(): void;
78
- getDebugInfo(): {
79
- config: UnifiedBoxManagerConfig;
80
- modelState: any;
81
- isOpen: boolean;
82
- };
83
- /**
84
- * 드롭다운을 스크롤의 바닥으로 이동
85
- * 전체 선택 시 추가 데이터 로드를 트리거하기 위해 사용
86
- */
87
- scrollToBottom(): void;
88
- /**
89
- * 전체 선택 버튼의 텍스트를 외부에서 변경
90
- * @param text 버튼에 표시할 텍스트
91
- */
92
- setSelectAllButtonText(text: string): void;
93
- /**
94
- * 특정 인덱스의 옵션으로 포커스 이동
95
- * @param index 포커스를 이동할 옵션의 인덱스
96
- */
97
- setFocusIndex(index: number): void;
98
- }
99
- //# sourceMappingURL=UnifiedBoxManager.d.ts.map