@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,267 +0,0 @@
1
- /**
2
- * ProgressBar 클래스
3
- * 프로그레스 바를 생성하고 관리하는 역할을 합니다.
4
- */
5
- var __assign = this && this.__assign || function () {
6
- __assign = Object.assign || function (t) {
7
- for (var s, i = 1, n = arguments.length; i < n; i++) {
8
- s = arguments[i];
9
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
10
- }
11
- return t;
12
- };
13
- return __assign.apply(this, arguments);
14
- };
15
- /**
16
- * 값을 0-100 범위로 제한
17
- */
18
- function clampValue(value) {
19
- return Math.min(Math.max(0, value), 100);
20
- }
21
- /**
22
- * 색상 이름을 fill 색상 클래스명으로 변환
23
- */
24
- function getFillColorClass(color) {
25
- if (!color) return '';
26
- var normalizedColor = color.toLowerCase().trim();
27
- return "ncua-progress-bar__fill--color-".concat(normalizedColor);
28
- }
29
- /**
30
- * 색상 이름을 label 색상 클래스명으로 변환
31
- */
32
- function getLabelColorClass(color) {
33
- if (!color) return '';
34
- var normalizedColor = color.toLowerCase().trim();
35
- return "ncua-progress-bar__label--color-".concat(normalizedColor);
36
- }
37
- /**
38
- * ProgressBar 클래스
39
- */
40
- var ProgressBar = /** @class */function () {
41
- function ProgressBar(options) {
42
- if (options === void 0) {
43
- options = {};
44
- }
45
- this.element = null;
46
- this.options = __assign({
47
- showZeroLabel: false,
48
- valueToPercent: true
49
- }, options);
50
- }
51
- /**
52
- * segments 처리 로직
53
- */
54
- ProgressBar.prototype.processSegments = function () {
55
- var _a;
56
- var _b = this.options,
57
- segments = _b.segments,
58
- label = _b.label,
59
- valueToPercent = _b.valueToPercent;
60
- var hasSegments = Boolean(segments && segments.length > 0);
61
- var segmentCount = (_a = segments === null || segments === void 0 ? void 0 : segments.length) !== null && _a !== void 0 ? _a : 0;
62
- if (hasSegments) {
63
- // segment가 2개 이상일 때만 valueToPercent 적용 (기본값: true)
64
- var shouldApplyValueToPercent = segmentCount >= 2 && valueToPercent !== false;
65
- var segmentsToProcess = segments;
66
- // valueToPercent 적용: segments의 합계를 100%로 규정하고 비율로 계산
67
- if (shouldApplyValueToPercent) {
68
- // 원본 값들의 합계 계산
69
- var originalTotal_1 = segmentsToProcess.reduce(function (sum, seg) {
70
- return sum + seg.value;
71
- }, 0);
72
- if (originalTotal_1 > 0) {
73
- // 각 segment를 합계 대비 비율로 변환 (합계를 100%로 규정)
74
- segmentsToProcess = segmentsToProcess.map(function (segment) {
75
- return {
76
- value: segment.value / originalTotal_1 * 100,
77
- color: segment.color
78
- };
79
- });
80
- }
81
- }
82
- // 각 값 제한 (0-100 범위)
83
- var limitedSegments = segmentsToProcess.map(function (segment) {
84
- return {
85
- value: clampValue(segment.value),
86
- color: segment.color
87
- };
88
- });
89
- // 전체 합계 계산
90
- var actualTotal_1 = limitedSegments.reduce(function (sum, seg) {
91
- return sum + seg.value;
92
- }, 0);
93
- var total_1 = Math.min(actualTotal_1, 100);
94
- // 모든 segments를 좌측에서부터 연속적으로 배치 (비율로 계산)
95
- var processed = limitedSegments.map(function (segment) {
96
- return __assign(__assign({}, segment), {
97
- width: actualTotal_1 > 0 ? segment.value / actualTotal_1 * total_1 : 0
98
- });
99
- });
100
- // segment의 개수가 2이상일때는 bottom 라벨로 고정
101
- var effectiveLabel = segmentCount >= 2 ? 'bottom' : label;
102
- // floating label 스타일
103
- var progressValueStyle = effectiveLabel === 'top-float' || effectiveLabel === 'bottom-float' ? {
104
- '--progress-value': "".concat(total_1, "%")
105
- } : undefined;
106
- return {
107
- totalValue: total_1,
108
- displayValue: "".concat(total_1.toFixed(0), "%"),
109
- processedSegments: processed,
110
- effectiveLabel: effectiveLabel,
111
- progressValueStyle: progressValueStyle
112
- };
113
- }
114
- // value만 있을 때는 valueToPercent 무시 (이미 퍼센트로 간주)
115
- if (this.options.value !== undefined) {
116
- var clamped = clampValue(this.options.value);
117
- var effectiveLabel = label;
118
- var progressValueStyle = effectiveLabel === 'top-float' || effectiveLabel === 'bottom-float' ? {
119
- '--progress-value': "".concat(clamped, "%")
120
- } : undefined;
121
- return {
122
- totalValue: clamped,
123
- displayValue: "".concat(clamped.toFixed(0), "%"),
124
- processedSegments: [],
125
- effectiveLabel: effectiveLabel,
126
- progressValueStyle: progressValueStyle
127
- };
128
- }
129
- return {
130
- totalValue: 0,
131
- displayValue: '0%',
132
- processedSegments: [],
133
- effectiveLabel: label,
134
- progressValueStyle: undefined
135
- };
136
- };
137
- /**
138
- * 단일 라벨 HTML 생성
139
- */
140
- ProgressBar.prototype.renderSingleLabel = function (labelType, displayValue, totalValue) {
141
- // 0%이고 showZeroLabel이 false면 라벨 표시하지 않음
142
- if (totalValue === 0 && !this.options.showZeroLabel) {
143
- return '';
144
- }
145
- return "<span class=\"ncua-progress-bar__label ncua-progress-bar__label-".concat(labelType, "\">").concat(displayValue, "</span>");
146
- };
147
- /**
148
- * segments 라벨 HTML 생성
149
- */
150
- ProgressBar.prototype.renderSegmentLabels = function (segments, segmentCount) {
151
- var _this = this;
152
- if (segmentCount < 2) return '';
153
- var labels = [];
154
- segments.forEach(function (segment, index) {
155
- // 0%이고 showZeroLabel이 false면 라벨 표시하지 않음
156
- if (segment.value === 0 && !_this.options.showZeroLabel) {
157
- return;
158
- }
159
- var leftPosition = 0;
160
- for (var i = 0; i < index; i++) {
161
- leftPosition += segments[i].width;
162
- }
163
- // 0%일 때는 segment 시작 위치에 맞추되, 라벨이 게이지 바를 넘어가지 않도록 조정
164
- // 그 외에는 중앙에 정렬
165
- var isZero = segment.value === 0;
166
- // 0%일 때는 약간의 오프셋을 주어 자연스럽게 보이도록 함 (라벨 너비의 절반 정도)
167
- var labelPosition = isZero ? Math.max(0, leftPosition - 1) : leftPosition + segment.width / 2;
168
- var transform = isZero ? 'translateX(0)' : 'translateX(-50%)';
169
- var colorClass = getLabelColorClass(segment.color);
170
- labels.push("<span class=\"ncua-progress-bar__label ncua-progress-bar__label--segment ".concat(colorClass, "\" style=\"left: ").concat(labelPosition, "%; transform: ").concat(transform, ";\">").concat(segment.value.toFixed(0), "%</span>"));
171
- });
172
- return labels.length > 0 ? "<div class=\"ncua-progress-bar__labels--multiple\">".concat(labels.join(''), "</div>") : '';
173
- };
174
- /**
175
- * segment bar HTML 생성
176
- */
177
- ProgressBar.prototype.renderSegmentBar = function (segments) {
178
- var fills = [];
179
- segments.forEach(function (segment, index) {
180
- var classes = ['ncua-progress-bar__fill', index === 0 ? 'ncua-progress-bar__fill--first' : '', index === segments.length - 1 ? 'ncua-progress-bar__fill--last' : '', getFillColorClass(segment.color)].filter(Boolean).join(' ');
181
- fills.push("<div class=\"".concat(classes, "\" style=\"width: ").concat(segment.width, "%;\"></div>"));
182
- });
183
- return fills.join('');
184
- };
185
- /**
186
- * HTML 문자열 생성
187
- */
188
- ProgressBar.prototype.toHTML = function () {
189
- var _a, _b;
190
- var _c = this.processSegments(),
191
- totalValue = _c.totalValue,
192
- displayValue = _c.displayValue,
193
- processedSegments = _c.processedSegments,
194
- effectiveLabel = _c.effectiveLabel,
195
- progressValueStyle = _c.progressValueStyle;
196
- var hasSegments = Boolean(this.options.segments && this.options.segments.length > 0);
197
- var segmentCount = (_b = (_a = this.options.segments) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;
198
- var isFloatingLabel = effectiveLabel === 'top-float' || effectiveLabel === 'bottom-float';
199
- // 스타일 문자열 생성
200
- var styleString = progressValueStyle ? "style=\"".concat(Object.entries(progressValueStyle).map(function (_a) {
201
- var key = _a[0],
202
- value = _a[1];
203
- return "".concat(key.replace(/([A-Z])/g, '-$1').toLowerCase(), ": ").concat(value);
204
- }).join('; '), "\"") : '';
205
- // segment가 1개이거나 value만 있을 때는 동일하게 처리 (단일 progress bar)
206
- var isSingleBar = segmentCount < 2; // segment가 0개 또는 1개일 때
207
- if (isSingleBar) {
208
- var fillColorClass = hasSegments && segmentCount === 1 ? getFillColorClass(processedSegments[0].color) : '';
209
- var floatingLabel_1 = isFloatingLabel ? this.renderSingleLabel(effectiveLabel, displayValue, totalValue) : '';
210
- var rightLabel_1 = effectiveLabel === 'right' ? this.renderSingleLabel('right', displayValue, totalValue) : '';
211
- var bottomLabel_1 = effectiveLabel === 'bottom' ? this.renderSingleLabel('bottom', displayValue, totalValue) : '';
212
- // 단일 progress bar일 때는 text-align: left를 위한 클래스 추가
213
- var singleSegmentClass = 'ncua-progress-bar--single-segment';
214
- return "<div class=\"ncua-progress-bar ncua-progress-bar-".concat(effectiveLabel || '', " ").concat(singleSegmentClass, "\" ").concat(styleString, ">\n ").concat(floatingLabel_1, "\n <div class=\"ncua-progress-bar__content\">\n <div class=\"ncua-progress-bar__bar\">\n <div class=\"ncua-progress-bar__fill ").concat(fillColorClass, "\" style=\"width: ").concat(totalValue, "%;\" aria-valuenow=\"").concat(totalValue, "\" aria-valuemin=\"0\" aria-valuemax=\"100\"></div>\n </div>\n ").concat(rightLabel_1, "\n </div>\n ").concat(bottomLabel_1, "\n</div>");
215
- }
216
- // 일반 케이스
217
- var floatingLabel = isFloatingLabel ? this.renderSingleLabel(effectiveLabel, displayValue, totalValue) : '';
218
- var rightLabel = effectiveLabel === 'right' ? this.renderSingleLabel('right', displayValue, totalValue) : '';
219
- var bottomLabel = effectiveLabel === 'bottom' ? this.renderSingleLabel('bottom', displayValue, totalValue) : '';
220
- var segmentLabels = hasSegments && segmentCount >= 2 ? this.renderSegmentLabels(processedSegments, segmentCount) : '';
221
- var segmentBar = hasSegments ? this.renderSegmentBar(processedSegments) : "<div class=\"ncua-progress-bar__fill\" style=\"width: ".concat(totalValue, "%;\" aria-valuenow=\"").concat(totalValue, "\" aria-valuemin=\"0\" aria-valuemax=\"100\"></div>");
222
- var segmentsClass = hasSegments ? 'ncua-progress-bar__bar--segments' : '';
223
- return "<div class=\"ncua-progress-bar ncua-progress-bar-".concat(effectiveLabel || '', "\" ").concat(styleString, ">\n ").concat(floatingLabel, "\n <div class=\"ncua-progress-bar__content\">\n <div class=\"ncua-progress-bar__bar ").concat(segmentsClass, "\">\n ").concat(segmentBar, "\n </div>\n ").concat(rightLabel, "\n </div>\n ").concat(hasSegments && segmentCount >= 2 ? segmentLabels : bottomLabel, "\n</div>");
224
- };
225
- /**
226
- * DOM 요소 생성
227
- */
228
- ProgressBar.prototype.toElement = function () {
229
- var div = document.createElement('div');
230
- div.innerHTML = this.toHTML();
231
- this.element = div.firstElementChild;
232
- return this.element;
233
- };
234
- /**
235
- * 요소 반환
236
- */
237
- ProgressBar.prototype.getElement = function () {
238
- return this.toElement();
239
- };
240
- /**
241
- * 옵션 업데이트
242
- */
243
- ProgressBar.prototype.updateOptions = function (newOptions) {
244
- this.options = __assign(__assign({}, this.options), newOptions);
245
- if (this.element) {
246
- var newElement = this.toElement();
247
- if (this.element.parentNode) {
248
- this.element.parentNode.replaceChild(newElement, this.element);
249
- }
250
- this.element = newElement;
251
- }
252
- };
253
- /**
254
- * Static factory method
255
- */
256
- ProgressBar.create = function (options) {
257
- return new ProgressBar(options);
258
- };
259
- /**
260
- * Static method: HTML 문자열 생성
261
- */
262
- ProgressBar.toHTML = function (options) {
263
- return new ProgressBar(options).toHTML();
264
- };
265
- return ProgressBar;
266
- }();
267
- export { ProgressBar };
@@ -1 +0,0 @@
1
- export { ProgressBar } from './ProgressBar';
@@ -1,314 +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
- import { UnifiedBoxManager } from './utils/unifiedBox/UnifiedBoxManager';
12
- var SelectBox = /** @class */function () {
13
- function SelectBox(element, config) {
14
- if (config === void 0) {
15
- config = {};
16
- }
17
- var _this = this;
18
- var _a, _b, _c, _d, _e, _f;
19
- this.targetSelect = null;
20
- this.isInitializing = true;
21
- this.lastValue = '';
22
- this.element = element;
23
- // 타겟 select 요소 찾기
24
- this.targetSelect = this.findTargetSelect(element);
25
- // HTML에서 옵션 파싱 (config.options가 없을 경우)
26
- var htmlOptions = this.parseOptionsFromHTML();
27
- // JavaScript 옵션을 DropdownOption 형식으로 변환
28
- var normalizedOptions = config.options ? this.normalizeOptions(config.options) : htmlOptions;
29
- var finalOptions = normalizedOptions;
30
- // HTML에서 속성 파싱
31
- var htmlAttributes = this.parseAttributesFromHTML();
32
- // 기존 API를 새 API로 변환
33
- var unifiedConfig = __assign(__assign({}, config), {
34
- type: 'selectbox',
35
- multiple: (_a = config.multiple) !== null && _a !== void 0 ? _a : false,
36
- showFooterButtons: (_b = config.showFooterButtons) !== null && _b !== void 0 ? _b : false,
37
- onEdit: config.onEdit,
38
- onSelectAll: config.onSelectAll,
39
- onComplete: config.onComplete,
40
- options: finalOptions,
41
- placeholder: config.placeholder || htmlAttributes.placeholder || '선택하세요',
42
- value: (_d = (_c = config.value) !== null && _c !== void 0 ? _c : htmlAttributes.value) !== null && _d !== void 0 ? _d : config.multiple ? [] : '',
43
- disabled: (_f = (_e = config.disabled) !== null && _e !== void 0 ? _e : htmlAttributes.disabled) !== null && _f !== void 0 ? _f : false,
44
- size: config.size || htmlAttributes.size || 'md',
45
- onChange: function (value) {
46
- var _a;
47
- // 초기화 중에는 동기화하지 않음 (무한 루프 방지)
48
- if (_this.isInitializing) {
49
- _this.lastValue = value; // 초기값 저장
50
- return;
51
- }
52
- // 값이 실제로 변경되지 않았으면 동기화 생략 (무한 루프 방지)
53
- if (JSON.stringify(_this.lastValue) === JSON.stringify(value)) {
54
- return;
55
- }
56
- _this.lastValue = value; // 새 값 저장
57
- // 타겟 select와 동기화
58
- if (config.multiple) {
59
- _this.syncWithTargetSelectMultiple(value);
60
- } else {
61
- _this.syncWithTargetSelect(value);
62
- }
63
- // onChange 콜백에는 실제 value를 전달
64
- var realValue = config.multiple ? value.map(function (v) {
65
- return _this.getRealValueFromId(v);
66
- }) : _this.getRealValueFromId(value);
67
- (_a = config.onChange) === null || _a === void 0 ? void 0 : _a.call(config, realValue);
68
- }
69
- });
70
- this.unifiedSelectBox = new UnifiedBoxManager(element, unifiedConfig);
71
- // 초기화 완료 (다음 이벤트 루프에서 실행)
72
- setTimeout(function () {
73
- _this.isInitializing = false;
74
- }, 0);
75
- }
76
- /**
77
- * JavaScript 옵션을 DropdownOption 형식으로 변환
78
- */
79
- SelectBox.prototype.normalizeOptions = function (options) {
80
- return options.map(function (option) {
81
- // 이미 DropdownOption 형식인 경우
82
- if ('label' in option) {
83
- return option;
84
- }
85
- // SelectBoxOptionType 형식인 경우 (text -> label 변환)
86
- var selectBoxOption = option;
87
- return {
88
- id: selectBoxOption.id,
89
- label: selectBoxOption.text,
90
- disabled: selectBoxOption.disabled
91
- };
92
- });
93
- };
94
- /**
95
- * 타겟 select 요소 찾기
96
- */
97
- SelectBox.prototype.findTargetSelect = function (element) {
98
- // 1. 직접 select 태그인 경우
99
- if (element.tagName === 'SELECT') {
100
- return element;
101
- }
102
- // 2. 자식으로 select 태그가 있는 경우
103
- var selectChild = element.querySelector('select');
104
- if (selectChild) {
105
- return selectChild;
106
- }
107
- // 3. data-target 속성으로 지정된 경우
108
- var targetId = element.getAttribute('data-target');
109
- if (targetId) {
110
- var targetElement = document.getElementById(targetId);
111
- if (targetElement && targetElement.tagName === 'SELECT') {
112
- return targetElement;
113
- }
114
- }
115
- return null;
116
- };
117
- /**
118
- * HTML select에서 옵션 파싱
119
- */
120
- SelectBox.prototype.parseOptionsFromHTML = function () {
121
- if (!this.targetSelect) return [];
122
- var options = [];
123
- var optionElements = this.targetSelect.querySelectorAll('option');
124
- // 빈 값 옵션 개수 확인 (최적화를 위해)
125
- var emptyValueCount = Array.from(optionElements).filter(function (opt) {
126
- return opt.value === '';
127
- }).length;
128
- optionElements.forEach(function (optionElement, index) {
129
- var optionValue = optionElement.value;
130
- // 빈 값 옵션이 1개뿐이면 단순 처리, 여러 개면 고유 ID 생성
131
- var optionId;
132
- if (optionValue !== '') {
133
- optionId = optionValue;
134
- } else if (emptyValueCount === 1) {
135
- // 빈 값 옵션이 하나뿐이면 그냥 빈 문자열 사용 (단순화)
136
- optionId = '';
137
- } else {
138
- // 빈 값 옵션이 여러 개면 고유 ID 생성 (구분 필요)
139
- optionId = "__empty_option_".concat(index);
140
- }
141
- options.push({
142
- id: optionId,
143
- label: optionElement.textContent || optionElement.value || '선택하세요',
144
- disabled: optionElement.disabled,
145
- // 원본 value 저장 (동기화를 위해)
146
- originalValue: optionValue
147
- });
148
- });
149
- return options;
150
- };
151
- /**
152
- * HTML에서 속성 파싱
153
- */
154
- SelectBox.prototype.parseAttributesFromHTML = function () {
155
- var attributes = {};
156
- if (this.targetSelect) {
157
- // select 요소의 속성들
158
- if (this.targetSelect.disabled) attributes.disabled = true;
159
- if (this.targetSelect.value) attributes.value = this.targetSelect.value;
160
- // placeholder는 첫 번째 빈 option에서 가져오기
161
- var firstOption = this.targetSelect.querySelector('option[value=""], option:not([value])');
162
- if (firstOption) {
163
- attributes.placeholder = firstOption.textContent || '선택하세요';
164
- }
165
- }
166
- // 컨테이너 요소의 data 속성들
167
- var containerAttributes = this.element.dataset;
168
- if (containerAttributes.placeholder) attributes.placeholder = containerAttributes.placeholder;
169
- if (containerAttributes.size) attributes.size = containerAttributes.size;
170
- if (containerAttributes.disabled === 'true') attributes.disabled = true;
171
- return attributes;
172
- };
173
- /**
174
- * ID로부터 실제 HTML select의 value 값을 가져오기
175
- */
176
- SelectBox.prototype.getRealValueFromId = function (id) {
177
- var options = this.unifiedSelectBox.getOptions();
178
- var option = options.find(function (opt) {
179
- return opt.id === id;
180
- });
181
- // originalValue가 있으면 그것을 사용, 없으면 id를 문자열로 변환
182
- return (option === null || option === void 0 ? void 0 : option.originalValue) !== undefined ? option.originalValue : String(id);
183
- };
184
- /**
185
- * 실제 HTML select의 value 값으로부터 내부 ID를 가져오기
186
- */
187
- SelectBox.prototype.getIdFromRealValue = function (value) {
188
- var options = this.unifiedSelectBox.getOptions();
189
- var option = options.find(function (opt) {
190
- return opt.originalValue === String(value);
191
- });
192
- // originalValue가 일치하는 옵션을 찾으면 그 ID를 반환, 없으면 value 그대로 반환
193
- return option ? option.id : value;
194
- };
195
- /**
196
- * 타겟 select와 동기화 (Single 모드)
197
- */
198
- SelectBox.prototype.syncWithTargetSelect = function (value) {
199
- if (this.targetSelect) {
200
- // originalValue가 있는 옵션을 찾아서 실제 value로 변환
201
- var realValue = this.getRealValueFromId(value);
202
- this.targetSelect.value = realValue;
203
- // select 요소의 change 이벤트 발생
204
- var event_1 = new Event('change', {
205
- bubbles: true
206
- });
207
- this.targetSelect.dispatchEvent(event_1);
208
- }
209
- };
210
- /**
211
- * 타겟 select와 동기화 (Multiple 모드)
212
- */
213
- SelectBox.prototype.syncWithTargetSelectMultiple = function (values) {
214
- var _this = this;
215
- if (this.targetSelect && this.targetSelect.multiple) {
216
- // 모든 옵션 선택 해제
217
- Array.from(this.targetSelect.options).forEach(function (option) {
218
- option.selected = false;
219
- });
220
- // 선택된 값들에 해당하는 옵션들 선택
221
- values.forEach(function (value) {
222
- var realValue = _this.getRealValueFromId(value);
223
- var option = _this.targetSelect.querySelector("option[value=\"".concat(realValue, "\"]"));
224
- if (option) {
225
- option.selected = true;
226
- }
227
- });
228
- // select 요소의 change 이벤트 발생
229
- var event_2 = new Event('change', {
230
- bubbles: true
231
- });
232
- this.targetSelect.dispatchEvent(event_2);
233
- }
234
- };
235
- // 기존 API 호환성 메서드들
236
- SelectBox.prototype.getValues = function () {
237
- var _this = this;
238
- var internalValue = this.unifiedSelectBox.getValues();
239
- return internalValue.map(function (option) {
240
- return __assign(__assign({}, option), {
241
- id: _this.getRealValueFromId(option.id)
242
- });
243
- });
244
- };
245
- SelectBox.prototype.setValues = function (value) {
246
- var _this = this;
247
- var internalValue = value.map(function (v) {
248
- return _this.getIdFromRealValue(v.id);
249
- });
250
- if (JSON.stringify(this.lastValue) === JSON.stringify(internalValue)) {
251
- return;
252
- }
253
- this.lastValue = internalValue;
254
- // id 배열을 옵션 객체 배열로 변환
255
- var allOptions = this.unifiedSelectBox.getOptions();
256
- var optionArray = internalValue.map(function (id) {
257
- return allOptions.find(function (opt) {
258
- return opt.id === id;
259
- });
260
- }).filter(function (opt) {
261
- return opt !== undefined;
262
- });
263
- this.unifiedSelectBox.setValues(optionArray);
264
- // setValues 호출 시에도 타겟 select와 동기화
265
- if (this.targetSelect) {
266
- if (this.unifiedSelectBox.isMultiple()) {
267
- this.syncWithTargetSelectMultiple(internalValue);
268
- } else {
269
- // 단일 선택 모드인 경우 첫 번째 값만 사용
270
- this.syncWithTargetSelect(internalValue[0] || '');
271
- }
272
- }
273
- };
274
- SelectBox.prototype.getOptions = function () {
275
- return this.unifiedSelectBox.getOptions();
276
- };
277
- SelectBox.prototype.updateOptions = function (newOptions) {
278
- this.unifiedSelectBox.updateOptions(newOptions);
279
- };
280
- SelectBox.prototype.setDisabled = function (disabled) {
281
- this.unifiedSelectBox.setDisabled(disabled);
282
- };
283
- SelectBox.prototype.open = function () {
284
- this.unifiedSelectBox.open();
285
- };
286
- SelectBox.prototype.close = function () {
287
- this.unifiedSelectBox.close();
288
- };
289
- SelectBox.prototype.focus = function () {
290
- this.unifiedSelectBox.focus();
291
- };
292
- SelectBox.prototype.destroy = function () {
293
- this.unifiedSelectBox.destroy();
294
- };
295
- // Multiple 모드 전용 메서드들
296
- SelectBox.prototype.selectAll = function () {
297
- this.unifiedSelectBox.selectAll();
298
- };
299
- SelectBox.prototype.deselectAll = function () {
300
- this.unifiedSelectBox.deselectAll();
301
- };
302
- SelectBox.prototype.getSelectedCount = function () {
303
- var values = this.getValues();
304
- return values.length;
305
- };
306
- SelectBox.prototype.isMultiple = function () {
307
- return this.unifiedSelectBox.isMultiple();
308
- };
309
- SelectBox.prototype.toggleSelectAll = function () {
310
- this.unifiedSelectBox.toggleSelectAll();
311
- };
312
- return SelectBox;
313
- }();
314
- export { SelectBox };
@@ -1,38 +0,0 @@
1
- // 공통 X버튼 로직 (React ButtonCloseX 컴포넌트와 동일한 구조)
2
- // React ButtonCloseX와 동일한 SVG 사이즈 매핑
3
- export var SVG_SIZE = {
4
- xs: 16,
5
- sm: 20,
6
- md: 20,
7
- lg: 24
8
- };
9
- // X버튼 SVG 아이콘
10
- export var X_CLOSE_SVG = function (size) {
11
- return "<svg width=\"".concat(size, "\" height=\"").concat(size, "\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>");
12
- };
13
- // X버튼 렌더링 유틸리티 (React ButtonCloseX와 동일한 인터페이스)
14
- export function ButtonCloseX(size, theme, additionalClasses, ariaLabel, onClick) {
15
- if (theme === void 0) {
16
- theme = 'light';
17
- }
18
- if (additionalClasses === void 0) {
19
- additionalClasses = '';
20
- }
21
- if (ariaLabel === void 0) {
22
- ariaLabel = '닫기';
23
- }
24
- var svgSize = SVG_SIZE[size];
25
- var buttonId = "close-btn-".concat(Math.random().toString(36).substr(2, 9));
26
- var buttonHTML = "\n <button type=\"button\" id=\"".concat(buttonId, "\" class=\"ncua-button-close-x ncua-button-close-x--").concat(size, " ncua-button-close-x--").concat(theme, " ").concat(additionalClasses, "\" aria-label=\"").concat(ariaLabel, "\">\n ").concat(X_CLOSE_SVG(svgSize.toString()), "\n </button>\n ");
27
- // onClick이 제공된 경우 이벤트 바인딩
28
- if (onClick) {
29
- // DOM에 추가된 후 이벤트 바인딩을 위해 setTimeout 사용
30
- setTimeout(function () {
31
- var button = document.getElementById(buttonId);
32
- if (button) {
33
- button.addEventListener('click', onClick);
34
- }
35
- }, 0);
36
- }
37
- return buttonHTML;
38
- }
@@ -1,35 +0,0 @@
1
- import { Swiper } from 'swiper';
2
- var Tab = /** @class */function () {
3
- function Tab(element) {
4
- this.swiper = null;
5
- if (!element) {
6
- throw new Error('Tab element is required');
7
- }
8
- if (!(element instanceof HTMLElement)) {
9
- throw new Error('Invalid element type provided to Tab');
10
- }
11
- this.element = element;
12
- this.init();
13
- }
14
- Tab.prototype.init = function () {
15
- this.swiper = new Swiper(this.element, {
16
- slidesPerView: 'auto',
17
- spaceBetween: 8,
18
- grabCursor: true,
19
- loop: false,
20
- freeMode: {
21
- enabled: true,
22
- sticky: false
23
- },
24
- mousewheel: true
25
- });
26
- };
27
- Tab.prototype.destroy = function () {
28
- if (this.swiper) {
29
- this.swiper.destroy();
30
- this.swiper = null;
31
- }
32
- };
33
- return Tab;
34
- }();
35
- export { Tab };