@sellmate/design-system 0.0.52 → 0.0.54

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 (361) hide show
  1. package/dist/cjs/design-system.cjs.js +5 -3
  2. package/dist/cjs/design-system.cjs.js.map +1 -1
  3. package/dist/cjs/{index-Bxead0A0.js → index-B7tkxTye.js} +11 -5
  4. package/dist/cjs/index-B7tkxTye.js.map +1 -0
  5. package/dist/cjs/index.cjs.js +2 -0
  6. package/dist/cjs/loader.cjs.js +4 -2
  7. package/dist/cjs/loader.cjs.js.map +1 -1
  8. package/dist/cjs/sd-badge.cjs.entry.js +4 -4
  9. package/dist/cjs/{sd-button_15.cjs.entry.js → sd-button_23.cjs.entry.js} +1199 -94
  10. package/dist/cjs/sd-card.cjs.entry.js +4 -4
  11. package/dist/cjs/sd-date-box.cjs.entry.js +3 -3
  12. package/dist/cjs/sd-date-picker.cjs.entry.js +4 -4
  13. package/dist/cjs/sd-date-range-picker.cjs.entry.js +5 -5
  14. package/dist/cjs/sd-modal-card.cjs.entry.js +3 -3
  15. package/dist/cjs/sd-popover.cjs.entry.js +6 -6
  16. package/dist/cjs/sd-progress.cjs.entry.js +5 -5
  17. package/dist/cjs/sd-radio-button-group.cjs.entry.js +71 -0
  18. package/dist/cjs/sd-select-multiple.cjs.entry.js +8 -5
  19. package/dist/cjs/sd-table.cjs.entry.js +6 -6
  20. package/dist/cjs/sd-tbody_3.cjs.entry.js +10 -10
  21. package/dist/cjs/sd-td.cjs.entry.js +5 -5
  22. package/dist/cjs/{tooltipArrow-C7cIAuTo.js → tooltipArrow-8I9A3AOE.js} +3 -3
  23. package/dist/cjs/{tooltipArrow-C7cIAuTo.js.map → tooltipArrow-8I9A3AOE.js.map} +1 -1
  24. package/dist/collection/collection-manifest.json +8 -2
  25. package/dist/collection/components/sd-badge/sd-badge.js +1 -1
  26. package/dist/collection/components/sd-card/sd-card.js +1 -1
  27. package/dist/collection/components/sd-date-picker/sd-date-picker.js +1 -1
  28. package/dist/collection/components/sd-date-range-picker/sd-date-range-picker.js +2 -2
  29. package/dist/collection/components/sd-file-picker/sd-file-picker.css +95 -0
  30. package/dist/collection/components/sd-file-picker/sd-file-picker.js +299 -0
  31. package/dist/collection/components/sd-file-picker/sd-file-picker.js.map +1 -0
  32. package/dist/collection/components/sd-guide/sd-guide.js +3 -3
  33. package/dist/collection/components/sd-icon/sd-icon.css +1 -4
  34. package/dist/collection/components/sd-icon/sd-icon.js +1 -1
  35. package/dist/collection/components/sd-input/sd-input.css +1 -4
  36. package/dist/collection/components/sd-input/sd-input.js +2 -2
  37. package/dist/collection/components/sd-loading-spinner/sd-loading-spinner.js +1 -1
  38. package/dist/collection/components/sd-number-input/sd-number-input.css +128 -0
  39. package/dist/collection/components/sd-number-input/sd-number-input.js +744 -0
  40. package/dist/collection/components/sd-number-input/sd-number-input.js.map +1 -0
  41. package/dist/collection/components/sd-pagination/sd-pagination.js +2 -2
  42. package/dist/collection/components/sd-popover/sd-popover.js +2 -2
  43. package/dist/collection/components/sd-portal/sd-portal.js +1 -1
  44. package/dist/collection/components/sd-progress/sd-progress.js +2 -2
  45. package/dist/collection/components/sd-radio-button-group/sd-radio-button-group.css +71 -0
  46. package/dist/collection/components/sd-radio-button-group/sd-radio-button-group.js +214 -0
  47. package/dist/collection/components/sd-radio-button-group/sd-radio-button-group.js.map +1 -0
  48. package/dist/collection/components/sd-radio-group/sd-radio-group.js +1 -1
  49. package/dist/collection/components/sd-select/sd-select-option/sd-select-option.js +1 -1
  50. package/dist/collection/components/sd-select/sd-select.js +28 -4
  51. package/dist/collection/components/sd-select/sd-select.js.map +1 -1
  52. package/dist/collection/components/sd-select-multiple/sd-select-multiple.js +26 -2
  53. package/dist/collection/components/sd-select-multiple/sd-select-multiple.js.map +1 -1
  54. package/dist/collection/components/sd-select-multiple-group/sd-select-multiple-group.css +5 -0
  55. package/dist/collection/components/sd-select-multiple-group/sd-select-multiple-group.js +92 -43
  56. package/dist/collection/components/sd-select-multiple-group/sd-select-multiple-group.js.map +1 -1
  57. package/dist/collection/components/sd-select-multiple-group/sd-select-option-group/sd-select-option-group.js +3 -3
  58. package/dist/collection/components/sd-table/sd-table.js +3 -3
  59. package/dist/collection/components/sd-table/sd-tbody/sd-tbody.js +1 -1
  60. package/dist/collection/components/sd-table/sd-td/sd-td.js +2 -2
  61. package/dist/collection/components/sd-table/sd-th/sd-th.js +1 -1
  62. package/dist/collection/components/sd-table/sd-tr/sd-tr.js +1 -1
  63. package/dist/collection/components/sd-table-backup/sd-table-backup.js +4 -4
  64. package/dist/collection/components/sd-tabs/sd-tabs.css +83 -0
  65. package/dist/collection/components/sd-tabs/sd-tabs.js +180 -0
  66. package/dist/collection/components/sd-tabs/sd-tabs.js.map +1 -0
  67. package/dist/collection/components/sd-tag/sd-tag.js +1 -1
  68. package/dist/collection/components/sd-toast-message/sd-toast-message.css +66 -0
  69. package/dist/collection/components/sd-toast-message/sd-toast-message.js +248 -0
  70. package/dist/collection/components/sd-toast-message/sd-toast-message.js.map +1 -0
  71. package/dist/collection/components/sd-toggle/sd-toggle.js +1 -1
  72. package/dist/collection/components/sd-toggle-button/sd-toggle-button.css +46 -0
  73. package/dist/collection/components/sd-toggle-button/sd-toggle-button.js +136 -0
  74. package/dist/collection/components/sd-toggle-button/sd-toggle-button.js.map +1 -0
  75. package/dist/collection/components/sd-tooltip/sd-tooltip.js +4 -4
  76. package/dist/collection/components/sd-tooltip-portal/sd-tooltip-portal.js +1 -1
  77. package/dist/components/index.js +1 -1
  78. package/dist/components/{p-DiehM5Y0.js → p-B05GJor3.js} +9 -9
  79. package/dist/components/p-B05GJor3.js.map +1 -0
  80. package/dist/components/{p-BpNH68jy.js → p-B3H_uLbl.js} +3 -3
  81. package/dist/components/{p-BpNH68jy.js.map → p-B3H_uLbl.js.map} +1 -1
  82. package/dist/components/{p-Dgxczhd0.js → p-BBNolp5g.js} +6 -6
  83. package/dist/components/{p-Dgxczhd0.js.map → p-BBNolp5g.js.map} +1 -1
  84. package/dist/components/{p-gnOKrd57.js → p-BDkKpeVz.js} +3 -3
  85. package/dist/components/{p-gnOKrd57.js.map → p-BDkKpeVz.js.map} +1 -1
  86. package/dist/components/p-BH3t01Im.js +109 -0
  87. package/dist/{design-system/sd-select-option-group.entry.esm.js.map → components/p-BH3t01Im.js.map} +1 -1
  88. package/dist/components/{p-S7M--xNH.js → p-BqxmCDlz.js} +18 -18
  89. package/dist/components/p-BqxmCDlz.js.map +1 -0
  90. package/dist/components/{p-DY6t0qQj.js → p-BwSVYr5L.js} +7 -7
  91. package/dist/components/p-BwSVYr5L.js.map +1 -0
  92. package/dist/components/{p-9kN1E6Ra.js → p-C5T02a4h.js} +27 -23
  93. package/dist/components/p-C5T02a4h.js.map +1 -0
  94. package/dist/components/{p-CkKxyn_K.js → p-C7kMNSz9.js} +9 -9
  95. package/dist/components/p-C7kMNSz9.js.map +1 -0
  96. package/dist/components/{p-BSUHSOXX.js → p-CEDtmtIo.js} +8 -8
  97. package/dist/components/p-CEDtmtIo.js.map +1 -0
  98. package/dist/components/p-CLMeZVRV.js +34 -0
  99. package/dist/components/p-CLMeZVRV.js.map +1 -0
  100. package/dist/components/p-CLNPwi8e.js +81 -0
  101. package/dist/components/p-CLNPwi8e.js.map +1 -0
  102. package/dist/components/{p-TFWJruz2.js → p-CQBrru3e.js} +11 -5
  103. package/dist/components/p-CQBrru3e.js.map +1 -0
  104. package/dist/components/{p-BsyfatBe.js → p-CV5tKC24.js} +8 -8
  105. package/dist/components/p-CV5tKC24.js.map +1 -0
  106. package/dist/components/{p-CJ0qTKU7.js → p-Cx3euWvk.js} +6 -6
  107. package/dist/components/{p-CJ0qTKU7.js.map → p-Cx3euWvk.js.map} +1 -1
  108. package/dist/components/{p-C6tAa8Q4.js → p-DY9yCaP9.js} +11 -11
  109. package/dist/components/p-DY9yCaP9.js.map +1 -0
  110. package/dist/components/{p-C171iavd.js → p-DdeknsBE.js} +8 -8
  111. package/dist/components/p-DdeknsBE.js.map +1 -0
  112. package/dist/components/{p-DyGUXuvD.js → p-GHGGjwP3.js} +12 -12
  113. package/dist/components/p-GHGGjwP3.js.map +1 -0
  114. package/dist/components/{p-1SxxSEqq.js → p-XAhTfI7Q.js} +11 -11
  115. package/dist/components/p-XAhTfI7Q.js.map +1 -0
  116. package/dist/components/p-at_j60O8.js +34 -0
  117. package/dist/components/p-at_j60O8.js.map +1 -0
  118. package/dist/components/sd-badge.js +6 -6
  119. package/dist/components/sd-badge.js.map +1 -1
  120. package/dist/components/sd-button.js +1 -1
  121. package/dist/components/sd-card.js +6 -6
  122. package/dist/components/sd-card.js.map +1 -1
  123. package/dist/components/sd-checkbox.js +1 -1
  124. package/dist/components/sd-date-box.js +1 -1
  125. package/dist/components/sd-date-picker.js +14 -14
  126. package/dist/components/sd-date-picker.js.map +1 -1
  127. package/dist/components/sd-date-range-picker.js +15 -15
  128. package/dist/components/sd-date-range-picker.js.map +1 -1
  129. package/dist/components/sd-file-picker.d.ts +11 -0
  130. package/dist/components/sd-file-picker.js +159 -0
  131. package/dist/components/sd-file-picker.js.map +1 -0
  132. package/dist/components/sd-guide.js +14 -14
  133. package/dist/components/sd-guide.js.map +1 -1
  134. package/dist/components/sd-icon.js +1 -1
  135. package/dist/components/sd-input.js +1 -1
  136. package/dist/components/sd-loading-spinner.js +1 -1
  137. package/dist/components/sd-modal-card.js +9 -9
  138. package/dist/components/sd-modal-card.js.map +1 -1
  139. package/dist/components/sd-number-input.d.ts +11 -0
  140. package/dist/components/sd-number-input.js +335 -0
  141. package/dist/components/sd-number-input.js.map +1 -0
  142. package/dist/components/sd-pagination.js +1 -1
  143. package/dist/components/sd-popover.js +14 -14
  144. package/dist/components/sd-popover.js.map +1 -1
  145. package/dist/components/sd-portal.js +1 -1
  146. package/dist/components/sd-progress.js +7 -7
  147. package/dist/components/sd-progress.js.map +1 -1
  148. package/dist/components/sd-radio-button-group.d.ts +11 -0
  149. package/dist/components/sd-radio-button-group.js +99 -0
  150. package/dist/components/sd-radio-button-group.js.map +1 -0
  151. package/dist/components/sd-radio-group.js +6 -6
  152. package/dist/components/sd-radio-group.js.map +1 -1
  153. package/dist/components/sd-select-multiple-group.js +88 -59
  154. package/dist/components/sd-select-multiple-group.js.map +1 -1
  155. package/dist/components/sd-select-multiple.js +23 -19
  156. package/dist/components/sd-select-multiple.js.map +1 -1
  157. package/dist/components/sd-select-option-group.js +1 -1
  158. package/dist/components/sd-select-option.js +1 -1
  159. package/dist/components/sd-select.js +1 -1
  160. package/dist/components/sd-table-backup.js +31 -31
  161. package/dist/components/sd-table-backup.js.map +1 -1
  162. package/dist/components/sd-table.js +34 -34
  163. package/dist/components/sd-table.js.map +1 -1
  164. package/dist/components/sd-tabs.d.ts +11 -0
  165. package/dist/components/sd-tabs.js +101 -0
  166. package/dist/components/sd-tabs.js.map +1 -0
  167. package/dist/components/sd-tag.js +1 -76
  168. package/dist/components/sd-tag.js.map +1 -1
  169. package/dist/components/sd-tbody.js +1 -1
  170. package/dist/components/sd-td.js +7 -7
  171. package/dist/components/sd-td.js.map +1 -1
  172. package/dist/components/sd-th.js +1 -1
  173. package/dist/components/sd-toast-message.d.ts +11 -0
  174. package/dist/components/sd-toast-message.js +101 -0
  175. package/dist/components/sd-toast-message.js.map +1 -0
  176. package/dist/components/sd-toggle-button.d.ts +11 -0
  177. package/dist/components/sd-toggle-button.js +74 -0
  178. package/dist/components/sd-toggle-button.js.map +1 -0
  179. package/dist/components/sd-toggle.js +6 -6
  180. package/dist/components/sd-toggle.js.map +1 -1
  181. package/dist/components/sd-tooltip-portal.js +1 -1
  182. package/dist/components/sd-tooltip.js +1 -1
  183. package/dist/components/sd-tr.js +1 -1
  184. package/dist/design-system/design-system.esm.js +1 -1
  185. package/dist/design-system/design-system.esm.js.map +1 -1
  186. package/dist/design-system/p-1fbc8e14.entry.js +2 -0
  187. package/dist/design-system/p-1fbc8e14.entry.js.map +1 -0
  188. package/dist/design-system/p-26266f8c.entry.js +2 -0
  189. package/dist/design-system/p-26266f8c.entry.js.map +1 -0
  190. package/dist/design-system/p-2df41cc3.entry.js +2 -0
  191. package/dist/design-system/p-2df41cc3.entry.js.map +1 -0
  192. package/dist/design-system/p-3cc7957d.entry.js +2 -0
  193. package/dist/design-system/p-3cc7957d.entry.js.map +1 -0
  194. package/dist/design-system/p-6b3c33c3.entry.js +2 -0
  195. package/dist/design-system/p-6b3c33c3.entry.js.map +1 -0
  196. package/dist/design-system/p-6ce950da.entry.js +2 -0
  197. package/dist/design-system/p-6ce950da.entry.js.map +1 -0
  198. package/dist/design-system/{p-ClyGLKUd.js → p-7X2nzJWz.js} +2 -2
  199. package/dist/design-system/p-7X2nzJWz.js.map +1 -0
  200. package/dist/design-system/{p-DXZjHQmQ.js → p-CdbtuKYR.js} +2 -2
  201. package/dist/design-system/{p-DXZjHQmQ.js.map → p-CdbtuKYR.js.map} +1 -1
  202. package/dist/design-system/p-a18c202d.entry.js +2 -0
  203. package/dist/design-system/p-a18c202d.entry.js.map +1 -0
  204. package/dist/design-system/p-b0668ce9.entry.js +2 -0
  205. package/dist/design-system/p-b0668ce9.entry.js.map +1 -0
  206. package/dist/design-system/p-be9c40a3.entry.js +2 -0
  207. package/dist/design-system/p-be9c40a3.entry.js.map +1 -0
  208. package/dist/design-system/p-db603dcb.entry.js +2 -0
  209. package/dist/design-system/p-db603dcb.entry.js.map +1 -0
  210. package/dist/design-system/p-ddb5a2f4.entry.js +2 -0
  211. package/dist/design-system/p-ddb5a2f4.entry.js.map +1 -0
  212. package/dist/design-system/p-e31182ad.entry.js +2 -0
  213. package/dist/design-system/p-e31182ad.entry.js.map +1 -0
  214. package/dist/design-system/p-f9e04bf9.entry.js +2 -0
  215. package/dist/design-system/p-f9e04bf9.entry.js.map +1 -0
  216. package/dist/design-system/p-fe8721b5.entry.js +2 -0
  217. package/dist/design-system/p-fe8721b5.entry.js.map +1 -0
  218. package/dist/esm/design-system.js +6 -4
  219. package/dist/esm/design-system.js.map +1 -1
  220. package/dist/esm/{index-ClyGLKUd.js → index-7X2nzJWz.js} +11 -5
  221. package/dist/esm/index-7X2nzJWz.js.map +1 -0
  222. package/dist/esm/index.js +2 -0
  223. package/dist/esm/loader.js +5 -3
  224. package/dist/esm/sd-badge.entry.js +4 -4
  225. package/dist/esm/sd-badge.entry.js.map +1 -1
  226. package/dist/esm/{sd-button_15.entry.js → sd-button_23.entry.js} +1192 -95
  227. package/dist/esm/sd-card.entry.js +4 -4
  228. package/dist/esm/sd-card.entry.js.map +1 -1
  229. package/dist/esm/sd-date-box.entry.js +3 -3
  230. package/dist/esm/sd-date-box.entry.js.map +1 -1
  231. package/dist/esm/sd-date-picker.entry.js +4 -4
  232. package/dist/esm/sd-date-picker.entry.js.map +1 -1
  233. package/dist/esm/sd-date-range-picker.entry.js +5 -5
  234. package/dist/esm/sd-date-range-picker.entry.js.map +1 -1
  235. package/dist/esm/sd-modal-card.entry.js +3 -3
  236. package/dist/esm/sd-modal-card.entry.js.map +1 -1
  237. package/dist/esm/sd-popover.entry.js +6 -6
  238. package/dist/esm/sd-popover.entry.js.map +1 -1
  239. package/dist/esm/sd-progress.entry.js +5 -5
  240. package/dist/esm/sd-progress.entry.js.map +1 -1
  241. package/dist/esm/sd-radio-button-group.entry.js +69 -0
  242. package/dist/esm/sd-radio-button-group.entry.js.map +1 -0
  243. package/dist/esm/sd-select-multiple.entry.js +8 -5
  244. package/dist/esm/sd-select-multiple.entry.js.map +1 -1
  245. package/dist/esm/sd-table.entry.js +6 -6
  246. package/dist/esm/sd-table.entry.js.map +1 -1
  247. package/dist/esm/sd-tbody_3.entry.js +10 -10
  248. package/dist/esm/sd-td.entry.js +5 -5
  249. package/dist/esm/sd-td.entry.js.map +1 -1
  250. package/dist/esm/{tooltipArrow-BwO7_hdW.js → tooltipArrow-DFRZWz6D.js} +3 -3
  251. package/dist/esm/{tooltipArrow-BwO7_hdW.js.map → tooltipArrow-DFRZWz6D.js.map} +1 -1
  252. package/dist/types/components/sd-file-picker/sd-file-picker.d.ts +29 -0
  253. package/dist/types/components/sd-number-input/sd-number-input.d.ts +58 -0
  254. package/dist/types/components/sd-radio-button-group/sd-radio-button-group.d.ts +24 -0
  255. package/dist/types/components/sd-select/sd-select.d.ts +1 -0
  256. package/dist/types/components/sd-select-multiple/sd-select-multiple.d.ts +1 -0
  257. package/dist/types/components/sd-select-multiple-group/sd-select-multiple-group.d.ts +2 -0
  258. package/dist/types/components/sd-tabs/sd-tabs.d.ts +22 -0
  259. package/dist/types/components/sd-toast-message/sd-toast-message.d.ts +19 -0
  260. package/dist/types/components/sd-toggle-button/sd-toggle-button.d.ts +14 -0
  261. package/dist/types/components.d.ts +456 -8
  262. package/dist/types/stencil-public-runtime.d.ts +43 -0
  263. package/hydrate/index.d.ts +12 -0
  264. package/hydrate/index.js +2637 -1823
  265. package/hydrate/index.mjs +2636 -1824
  266. package/package.json +2 -2
  267. package/dist/cjs/index-Bxead0A0.js.map +0 -1
  268. package/dist/cjs/sd-badge.entry.cjs.js.map +0 -1
  269. package/dist/cjs/sd-button.sd-checkbox.sd-guide.sd-icon.sd-input.sd-loading-spinner.sd-pagination.sd-portal.sd-radio-group.sd-select.sd-select-option.sd-table-backup.sd-toggle.sd-tooltip.sd-tooltip-portal.entry.cjs.js.map +0 -1
  270. package/dist/cjs/sd-card.entry.cjs.js.map +0 -1
  271. package/dist/cjs/sd-date-box.entry.cjs.js.map +0 -1
  272. package/dist/cjs/sd-date-picker.entry.cjs.js.map +0 -1
  273. package/dist/cjs/sd-date-range-picker.entry.cjs.js.map +0 -1
  274. package/dist/cjs/sd-modal-card.entry.cjs.js.map +0 -1
  275. package/dist/cjs/sd-popover.entry.cjs.js.map +0 -1
  276. package/dist/cjs/sd-progress.entry.cjs.js.map +0 -1
  277. package/dist/cjs/sd-select-multiple-group.cjs.entry.js +0 -406
  278. package/dist/cjs/sd-select-multiple-group.entry.cjs.js.map +0 -1
  279. package/dist/cjs/sd-select-multiple.entry.cjs.js.map +0 -1
  280. package/dist/cjs/sd-select-option-group.cjs.entry.js +0 -69
  281. package/dist/cjs/sd-select-option-group.entry.cjs.js.map +0 -1
  282. package/dist/cjs/sd-table.entry.cjs.js.map +0 -1
  283. package/dist/cjs/sd-tag.cjs.entry.js +0 -57
  284. package/dist/cjs/sd-tag.entry.cjs.js.map +0 -1
  285. package/dist/cjs/sd-tbody.sd-th.sd-tr.entry.cjs.js.map +0 -1
  286. package/dist/cjs/sd-td.entry.cjs.js.map +0 -1
  287. package/dist/components/p-1SxxSEqq.js.map +0 -1
  288. package/dist/components/p-9kN1E6Ra.js.map +0 -1
  289. package/dist/components/p-BSUHSOXX.js.map +0 -1
  290. package/dist/components/p-BsyfatBe.js.map +0 -1
  291. package/dist/components/p-C171iavd.js.map +0 -1
  292. package/dist/components/p-C6tAa8Q4.js.map +0 -1
  293. package/dist/components/p-C9fSCxHc.js +0 -109
  294. package/dist/components/p-C9fSCxHc.js.map +0 -1
  295. package/dist/components/p-CkKxyn_K.js.map +0 -1
  296. package/dist/components/p-D8f0ASS6.js +0 -34
  297. package/dist/components/p-D8f0ASS6.js.map +0 -1
  298. package/dist/components/p-DY6t0qQj.js.map +0 -1
  299. package/dist/components/p-DiehM5Y0.js.map +0 -1
  300. package/dist/components/p-DyGUXuvD.js.map +0 -1
  301. package/dist/components/p-S7M--xNH.js.map +0 -1
  302. package/dist/components/p-TFWJruz2.js.map +0 -1
  303. package/dist/components/p-wQDv-v0B.js +0 -34
  304. package/dist/components/p-wQDv-v0B.js.map +0 -1
  305. package/dist/design-system/p-1ad40ed0.entry.js +0 -2
  306. package/dist/design-system/p-1ad40ed0.entry.js.map +0 -1
  307. package/dist/design-system/p-1b6aec43.entry.js +0 -2
  308. package/dist/design-system/p-1b6aec43.entry.js.map +0 -1
  309. package/dist/design-system/p-1e175d35.entry.js +0 -2
  310. package/dist/design-system/p-1e175d35.entry.js.map +0 -1
  311. package/dist/design-system/p-1efccd9d.entry.js +0 -2
  312. package/dist/design-system/p-1efccd9d.entry.js.map +0 -1
  313. package/dist/design-system/p-3d78a7c7.entry.js +0 -2
  314. package/dist/design-system/p-3d78a7c7.entry.js.map +0 -1
  315. package/dist/design-system/p-4828e65b.entry.js +0 -2
  316. package/dist/design-system/p-4828e65b.entry.js.map +0 -1
  317. package/dist/design-system/p-4e7bc094.entry.js +0 -2
  318. package/dist/design-system/p-4e7bc094.entry.js.map +0 -1
  319. package/dist/design-system/p-6d81e6f8.entry.js +0 -2
  320. package/dist/design-system/p-6d81e6f8.entry.js.map +0 -1
  321. package/dist/design-system/p-717a736c.entry.js +0 -2
  322. package/dist/design-system/p-717a736c.entry.js.map +0 -1
  323. package/dist/design-system/p-74f12ea0.entry.js +0 -2
  324. package/dist/design-system/p-74f12ea0.entry.js.map +0 -1
  325. package/dist/design-system/p-7d14540d.entry.js +0 -2
  326. package/dist/design-system/p-7d14540d.entry.js.map +0 -1
  327. package/dist/design-system/p-8d6d225d.entry.js +0 -2
  328. package/dist/design-system/p-8d6d225d.entry.js.map +0 -1
  329. package/dist/design-system/p-ClyGLKUd.js.map +0 -1
  330. package/dist/design-system/p-b892a722.entry.js +0 -2
  331. package/dist/design-system/p-b892a722.entry.js.map +0 -1
  332. package/dist/design-system/p-bc905ded.entry.js +0 -2
  333. package/dist/design-system/p-bc905ded.entry.js.map +0 -1
  334. package/dist/design-system/p-c7e8a2c0.entry.js +0 -2
  335. package/dist/design-system/p-c7e8a2c0.entry.js.map +0 -1
  336. package/dist/design-system/p-c9b70553.entry.js +0 -2
  337. package/dist/design-system/p-c9b70553.entry.js.map +0 -1
  338. package/dist/design-system/sd-badge.entry.esm.js.map +0 -1
  339. package/dist/design-system/sd-button.sd-checkbox.sd-guide.sd-icon.sd-input.sd-loading-spinner.sd-pagination.sd-portal.sd-radio-group.sd-select.sd-select-option.sd-table-backup.sd-toggle.sd-tooltip.sd-tooltip-portal.entry.esm.js.map +0 -1
  340. package/dist/design-system/sd-card.entry.esm.js.map +0 -1
  341. package/dist/design-system/sd-date-box.entry.esm.js.map +0 -1
  342. package/dist/design-system/sd-date-picker.entry.esm.js.map +0 -1
  343. package/dist/design-system/sd-date-range-picker.entry.esm.js.map +0 -1
  344. package/dist/design-system/sd-modal-card.entry.esm.js.map +0 -1
  345. package/dist/design-system/sd-popover.entry.esm.js.map +0 -1
  346. package/dist/design-system/sd-progress.entry.esm.js.map +0 -1
  347. package/dist/design-system/sd-select-multiple-group.entry.esm.js.map +0 -1
  348. package/dist/design-system/sd-select-multiple.entry.esm.js.map +0 -1
  349. package/dist/design-system/sd-table.entry.esm.js.map +0 -1
  350. package/dist/design-system/sd-tag.entry.esm.js.map +0 -1
  351. package/dist/design-system/sd-tbody.sd-th.sd-tr.entry.esm.js.map +0 -1
  352. package/dist/design-system/sd-td.entry.esm.js.map +0 -1
  353. package/dist/esm/index-ClyGLKUd.js.map +0 -1
  354. package/dist/esm/sd-button.sd-checkbox.sd-guide.sd-icon.sd-input.sd-loading-spinner.sd-pagination.sd-portal.sd-radio-group.sd-select.sd-select-option.sd-table-backup.sd-toggle.sd-tooltip.sd-tooltip-portal.entry.js.map +0 -1
  355. package/dist/esm/sd-select-multiple-group.entry.js +0 -404
  356. package/dist/esm/sd-select-multiple-group.entry.js.map +0 -1
  357. package/dist/esm/sd-select-option-group.entry.js +0 -67
  358. package/dist/esm/sd-select-option-group.entry.js.map +0 -1
  359. package/dist/esm/sd-tag.entry.js +0 -55
  360. package/dist/esm/sd-tag.entry.js.map +0 -1
  361. package/dist/esm/sd-tbody.sd-th.sd-tr.entry.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"sd-card.entry.cjs.js","sources":["src/components/sd-card/sd-card.scss?tag=sd-card","src/components/sd-card/sd-card.tsx"],"sourcesContent":["@import 'variables';\r\n\r\nsd-card {\r\n display: block;\r\n height: fit-content;\r\n\r\n .sd-card {\r\n border-radius: 8px;\r\n background: white;\r\n\r\n &.sd-card--bordered {\r\n border: 1px solid $grey_30;\r\n }\r\n }\r\n}\r\n","import { Component, Host, Prop, h } from '@stencil/core';\r\n\r\n@Component({\r\n tag: 'sd-card',\r\n styleUrl: 'sd-card.scss',\r\n})\r\nexport class SdCard {\r\n @Prop() bordered: boolean = true;\r\n @Prop() class: string = '';\r\n\r\n render() {\r\n return (\r\n <Host>\r\n <div class={`sd-card ${this.bordered ? 'sd-card--bordered' : ''} ${this.class}`}>\r\n <slot></slot>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"names":["h","Host"],"mappings":";;;;AAAA,MAAM,SAAS,GAAG,2JAA2J;;MCMhK,MAAM,GAAA,MAAA;;;;IACV,QAAQ,GAAY,IAAI;IACxB,KAAK,GAAW,EAAE;IAE1B,MAAM,GAAA;QACL,QACCA,QAACC,UAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACJD,OAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,CAAA,QAAA,EAAW,IAAI,CAAC,QAAQ,GAAG,mBAAmB,GAAG,EAAE,IAAI,IAAI,CAAC,KAAK,CAAA,CAAE,EAAA,EAC9EA,OAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACR,CACA;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sd-date-box.entry.cjs.js","sources":["src/components/sd-date-box/sd-date-box.scss?tag=sd-date-box&encapsulation=scoped","src/components/sd-date-box/sd-date-box.tsx"],"sourcesContent":["@import 'variables';\r\n\r\n:host(.sd-date-box) {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 38px;\r\n height: 36px;\r\n font-size: 14px;\r\n position: relative;\r\n box-sizing: border-box;\r\n text-align: center;\r\n transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1);\r\n border-radius: 14px;\r\n\r\n .sd-date-box__content {\r\n width: 28px;\r\n height: 28px;\r\n border-radius: 14px;\r\n position: relative;\r\n .sd-date-box__label {\r\n position: relative;\r\n z-index: 2;\r\n user-select: none;\r\n line-height: 28px;\r\n }\r\n }\r\n\r\n &.sd-date-box--disabled {\r\n color: $grey_45;\r\n cursor: default !important;\r\n pointer-events: none;\r\n }\r\n\r\n &:not(.sd-date-box--disabled) {\r\n cursor: pointer;\r\n }\r\n\r\n &.sd-hoverable {\r\n &:hover {\r\n .sd-date-box__content {\r\n background: $brilliantblue_25;\r\n }\r\n }\r\n }\r\n\r\n &.sd-date-box--in-range {\r\n &:not(.sd-date-box--disabled) {\r\n .sd-date-box__content {\r\n &::before {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: -5px;\r\n width: calc(100% + 10px);\r\n height: 100%;\r\n background: $brilliantblue_25;\r\n }\r\n }\r\n }\r\n\r\n &.sd-date-box--type-start {\r\n .sd-date-box__content {\r\n &::before {\r\n left: auto !important;\r\n width: 19px !important;\r\n right: -5px;\r\n }\r\n }\r\n }\r\n\r\n &.sd-date-box--type-end {\r\n .sd-date-box__content {\r\n &::before {\r\n width: 19px !important;\r\n }\r\n }\r\n }\r\n }\r\n\r\n &.sd-date-box--selected,\r\n &.sd-date-box--type-start,\r\n &.sd-date-box--type-end {\r\n .sd-date-box__content {\r\n &::after {\r\n content: '';\r\n position: absolute;\r\n inset: 0;\r\n background: $brilliantblue_75;\r\n border-radius: 14px;\r\n z-index: 1;\r\n }\r\n\r\n .sd-date-box__label {\r\n color: white;\r\n font-weight: 700;\r\n }\r\n }\r\n }\r\n\r\n &.sd-date-box--today:not(.sd-date-box--selected) {\r\n .sd-date-box__content {\r\n &::after {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n width: 28px;\r\n height: 28px;\r\n border: 1px solid $grey_30 !important;\r\n border-radius: 14px;\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, Event, EventEmitter, Host, Prop, h } from '@stencil/core';\r\n\r\nexport type Type = 'start' | 'end' | '';\r\n\r\n@Component({\r\n tag: 'sd-date-box',\r\n styleUrl: 'sd-date-box.scss',\r\n scoped: true,\r\n})\r\nexport class SdDateBox {\r\n @Prop() date: number | string | null = null;\r\n @Prop() disabled: boolean = false;\r\n @Prop() selected: boolean = false;\r\n @Prop() isStartDate: boolean = false;\r\n @Prop() isEndDate: boolean = false;\r\n @Prop() isToday: boolean = false;\r\n @Prop() inRange: boolean = false;\r\n @Prop() type: Type = '';\r\n\r\n @Event() sdClick?: EventEmitter<number | string | null>;\r\n @Event() sdMouseOver?: EventEmitter<number | string | null>;\r\n\r\n private handleClickDate() {\r\n if (this.disabled) return;\r\n if (typeof this.date === 'string') return;\r\n\r\n this.sdClick?.emit(this.date);\r\n }\r\n\r\n private handleHoverDate() {\r\n if (typeof this.date === 'string') return;\r\n\r\n this.sdMouseOver?.emit(this.date);\r\n }\r\n\r\n render() {\r\n return (\r\n <Host\r\n role=\"button\"\r\n aria-disabled={this.disabled ? 'true' : 'false'}\r\n tabindex={this.disabled ? -1 : 0}\r\n class={{\r\n 'sd-date-box': true,\r\n 'sd-hoverable': !this.disabled || !this.selected || this.type === '',\r\n 'sd-date-box--disabled': this.disabled,\r\n 'sd-date-box--selected': this.selected,\r\n 'sd-date-box--today': this.isToday,\r\n 'sd-date-box--start-date': this.isStartDate,\r\n 'sd-date-box--end-date': this.isEndDate,\r\n 'sd-date-box--in-range': this.inRange,\r\n 'sd-date-box--type-start': this.type === 'start',\r\n 'sd-date-box--type-end': this.type === 'end',\r\n }}\r\n onClick={() => this.handleClickDate()}\r\n onMouseOver={() => this.handleHoverDate()}\r\n >\r\n <div class=\"sd-date-box__content\">\r\n <div class=\"sd-date-box__label\">{this.date}</div>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"names":["h","Host"],"mappings":";;;;AAAA,MAAM,YAAY,GAAG,w4EAAw4E;;MCSh5E,SAAS,GAAA,MAAA;;;;;;IACb,IAAI,GAA2B,IAAI;IACnC,QAAQ,GAAY,KAAK;IACzB,QAAQ,GAAY,KAAK;IACzB,WAAW,GAAY,KAAK;IAC5B,SAAS,GAAY,KAAK;IAC1B,OAAO,GAAY,KAAK;IACxB,OAAO,GAAY,KAAK;IACxB,IAAI,GAAS,EAAE;AAEd,IAAA,OAAO;AACP,IAAA,WAAW;IAEZ,eAAe,GAAA;QACtB,IAAI,IAAI,CAAC,QAAQ;YAAE;AACnB,QAAA,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;YAAE;QAEnC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGtB,eAAe,GAAA;AACtB,QAAA,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;YAAE;QAEnC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGlC,MAAM,GAAA;QACL,QACCA,OAAC,CAAAC,UAAI,EACJ,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,QAAQ,EAAA,eAAA,EACE,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,OAAO,EAC/C,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,CAAC,EAChC,KAAK,EAAE;AACN,gBAAA,aAAa,EAAE,IAAI;AACnB,gBAAA,cAAc,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE;gBACpE,uBAAuB,EAAE,IAAI,CAAC,QAAQ;gBACtC,uBAAuB,EAAE,IAAI,CAAC,QAAQ;gBACtC,oBAAoB,EAAE,IAAI,CAAC,OAAO;gBAClC,yBAAyB,EAAE,IAAI,CAAC,WAAW;gBAC3C,uBAAuB,EAAE,IAAI,CAAC,SAAS;gBACvC,uBAAuB,EAAE,IAAI,CAAC,OAAO;AACrC,gBAAA,yBAAyB,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO;AAChD,gBAAA,uBAAuB,EAAE,IAAI,CAAC,IAAI,KAAK,KAAK;aAC5C,EACD,OAAO,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE,EACrC,WAAW,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE,EAAA,EAEzCD,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,sBAAsB,EAAA,EAChCA,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,oBAAoB,EAAE,EAAA,IAAI,CAAC,IAAI,CAAO,CAC5C,CACA;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sd-date-picker.entry.cjs.js","sources":["src/components/sd-date-picker/sd-date-picker.scss?tag=sd-date-picker&encapsulation=scoped","src/components/sd-date-picker/sd-date-picker.tsx"],"sourcesContent":["@import 'variables';\r\n\r\n:host {\r\n &.sd-date-picker {\r\n width: 160px;\r\n display: inline-block;\r\n }\r\n}\r\n\r\n.sd-date-picker__menu {\r\n width: 304px;\r\n box-sizing: border-box;\r\n border-radius: 8px;\r\n padding: 24px 19px;\r\n box-shadow: 2px 2px 12px 2px #00000033;\r\n background: white;\r\n\r\n .sd-date-picker__header {\r\n display: flex;\r\n flex-flow: row nowrap;\r\n align-items: center;\r\n gap: 20px;\r\n font-size: 14px;\r\n padding: 0 5px;\r\n height: 24px;\r\n line-height: 24px;\r\n\r\n .year-nav,\r\n .month-nav {\r\n display: flex;\r\n flex-flow: row nowrap;\r\n align-items: center;\r\n gap: 12px;\r\n\r\n button {\r\n background: none;\r\n border: none;\r\n cursor: pointer;\r\n margin: 0;\r\n padding: 0;\r\n }\r\n }\r\n\r\n .year-nav {\r\n &__current {\r\n width: 40px;\r\n text-align: center;\r\n }\r\n }\r\n\r\n .month-nav {\r\n &__current {\r\n width: 100px;\r\n text-align: center;\r\n }\r\n }\r\n }\r\n .sd-date-picker__days {\r\n margin-top: 8px;\r\n display: grid;\r\n grid-template-columns: repeat(7, minmax(0, 1fr));\r\n column-gap: 10px;\r\n padding: 0 5px;\r\n\r\n .day {\r\n width: 28px;\r\n height: 20px;\r\n font-size: 12px;\r\n line-height: 20px;\r\n text-align: center;\r\n color: $grey_65;\r\n }\r\n }\r\n .sd-date-picker__body {\r\n margin-top: 12px;\r\n display: grid;\r\n grid-template-columns: repeat(7, minmax(0, 1fr));\r\n }\r\n}\r\n","import { Component, Element, Prop, State, Event, h, EventEmitter, Host } from '@stencil/core';\r\nimport { useDatePicker } from '../../modules/useDatePicker';\r\nimport { today } from '../../utils/date';\r\n\r\n@Component({\r\n tag: 'sd-date-picker',\r\n styleUrl: 'sd-date-picker.scss',\r\n scoped: true,\r\n})\r\nexport class SdDatePicker {\r\n @Element() el!: HTMLElement;\r\n\r\n @Prop() date: string | null = null;\r\n @Prop() label?: string;\r\n @Prop() selectable?: [string, string];\r\n @Prop() disabled: boolean = false;\r\n\r\n @State() isOpen: boolean = false;\r\n @State() currentDate: string | null = null;\r\n @State() currentYear!: number;\r\n @State() currentMonth!: number;\r\n\r\n @Event() sdChange!: EventEmitter<string | null>;\r\n\r\n componentWillLoad() {\r\n this.setCalendar();\r\n }\r\n\r\n private dateUtil = useDatePicker();\r\n private inputEl?: HTMLElement;\r\n\r\n private setCalendar() {\r\n const base = this.date || today;\r\n const [year, month] = base.split('-').map(Number);\r\n this.currentYear = year;\r\n this.currentMonth = month;\r\n this.currentDate = this.date;\r\n }\r\n\r\n private openMenu() {\r\n if (this.disabled) return;\r\n\r\n this.setCalendar();\r\n this.isOpen = true;\r\n }\r\n\r\n private get calendar() {\r\n return this.dateUtil.createCalendar(this.currentYear, this.currentMonth);\r\n }\r\n\r\n private setCurrentYear(year: number) {\r\n this.currentYear = year;\r\n }\r\n\r\n private setCurrentMonth(month: number) {\r\n this.currentMonth = month;\r\n }\r\n\r\n private setCurrentDate(date: string | null) {\r\n this.currentDate = date;\r\n }\r\n\r\n private handleUpdateMonth(type: 'prev' | 'next') {\r\n const { newYear, newMonth } = this.dateUtil.calculateYearMonth(\r\n this.currentYear,\r\n this.currentMonth,\r\n type,\r\n );\r\n this.setCurrentYear(newYear);\r\n this.setCurrentMonth(newMonth);\r\n }\r\n\r\n private handleDateClick(day: number) {\r\n if (!day) return;\r\n\r\n const date = this.dateUtil.formatDate(this.currentYear, this.currentMonth, day);\r\n this.setCurrentDate(date);\r\n this.isOpen = false;\r\n this.sdChange.emit?.(date);\r\n }\r\n\r\n private isDisabledDate(date: string): boolean {\r\n if (!this.selectable) return false;\r\n\r\n const [startSelectable, endSelectable] = this.selectable;\r\n\r\n if (startSelectable && endSelectable) {\r\n return date < startSelectable || date > endSelectable;\r\n }\r\n\r\n if (startSelectable) {\r\n return date < startSelectable;\r\n }\r\n\r\n if (endSelectable) {\r\n return date > endSelectable;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private handleClose = () => {\r\n this.isOpen = false;\r\n };\r\n\r\n render() {\r\n return (\r\n <Host class=\"sd-date-picker\">\r\n <sd-input\r\n ref={el => (this.inputEl = el as unknown as HTMLElement)}\r\n value={this.date}\r\n label={this.label}\r\n inside-label\r\n readonly\r\n disabled={this.disabled}\r\n inputClass=\"text-center\"\r\n onClick={() => this.openMenu()}\r\n >\r\n <sd-icon\r\n slot=\"prefix\"\r\n name=\"date\"\r\n size=\"16\"\r\n color=\"#737373\"\r\n class=\"date-icon\"\r\n onClick={() => this.openMenu()}\r\n ></sd-icon>\r\n </sd-input>\r\n\r\n {this.isOpen && (\r\n <sd-portal open={this.isOpen} parentRef={this.inputEl} onSdClose={this.handleClose}>\r\n <div class=\"sd-date-picker__menu\">\r\n <div class=\"sd-date-picker__header\">\r\n {/* Year Navigation */}\r\n <div class=\"year-nav\">\r\n <button\r\n type=\"button\"\r\n name=\"prev-year\"\r\n title=\"Previous Year\"\r\n onClick={() => this.setCurrentYear(this.currentYear - 1)}\r\n >\r\n <sd-icon name=\"arrowLeft\" size=\"12\" color=\"#CCCCCC\" />\r\n </button>\r\n <span class=\"year-nav__current\">{this.currentYear}</span>\r\n <button\r\n type=\"button\"\r\n name=\"next-year\"\r\n title=\"Next Year\"\r\n onClick={() => this.setCurrentYear(this.currentYear + 1)}\r\n >\r\n <sd-icon name=\"arrowRight\" size=\"12\" color=\"#CCCCCC\" />\r\n </button>\r\n </div>\r\n\r\n {/* Month Navigation */}\r\n <div class=\"month-nav\">\r\n <button\r\n type=\"button\"\r\n name=\"prev-month\"\r\n title=\"Previous \"\r\n onClick={() => this.handleUpdateMonth('prev')}\r\n >\r\n <sd-icon name=\"arrowLeft\" size=\"12\" color=\"#CCCCCC\" />\r\n </button>\r\n <span class=\"month-nav__current\">{this.currentMonth}월</span>\r\n <button\r\n type=\"button\"\r\n name=\"next-month\"\r\n title=\"Next Month\"\r\n onClick={() => this.handleUpdateMonth('next')}\r\n >\r\n <sd-icon name=\"arrowRight\" size=\"12\" color=\"#CCCCCC\" />\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"sd-date-picker__days\">\r\n {['일', '월', '화', '수', '목', '금', '토'].map(day => (\r\n <div key={day} class=\"day\">\r\n {day}\r\n </div>\r\n ))}\r\n </div>\r\n\r\n <div class=\"sd-date-picker__body\">\r\n {[\r\n ...this.calendar.prevMonthDays,\r\n ...this.calendar.days,\r\n ...this.calendar.afterMonthDays,\r\n ].map((day, idx) => {\r\n const formattedDate = this.dateUtil.formatDate(\r\n this.currentYear,\r\n this.currentMonth,\r\n Number(day),\r\n );\r\n\r\n return (\r\n <sd-date-box\r\n key={`${day}_${idx}`}\r\n date={!day ? '' : Number(day)}\r\n selected={this.currentDate === formattedDate}\r\n isToday={today === formattedDate}\r\n disabled={!day ? true : this.isDisabledDate(formattedDate)}\r\n onClick={\r\n !this.isDisabledDate(formattedDate) && day\r\n ? () => this.handleDateClick(Number(day))\r\n : undefined\r\n }\r\n />\r\n );\r\n })}\r\n </div>\r\n </div>\r\n </sd-portal>\r\n )}\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"names":["useDatePicker","today","h","Host"],"mappings":";;;;;AAAA,MAAM,eAAe,GAAG,s2DAAs2D;;MCSj3D,YAAY,GAAA,MAAA;;;;;;IAGhB,IAAI,GAAkB,IAAI;AAC1B,IAAA,KAAK;AACL,IAAA,UAAU;IACV,QAAQ,GAAY,KAAK;IAExB,MAAM,GAAY,KAAK;IACvB,WAAW,GAAkB,IAAI;AACjC,IAAA,WAAW;AACX,IAAA,YAAY;AAEZ,IAAA,QAAQ;IAEjB,iBAAiB,GAAA;QAChB,IAAI,CAAC,WAAW,EAAE;;IAGX,QAAQ,GAAGA,2BAAa,EAAE;AAC1B,IAAA,OAAO;IAEP,WAAW,GAAA;AAClB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAIC,mBAAK;AAC/B,QAAA,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AACjD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI;;IAGrB,QAAQ,GAAA;QACf,IAAI,IAAI,CAAC,QAAQ;YAAE;QAEnB,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;;AAGnB,IAAA,IAAY,QAAQ,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC;;AAGjE,IAAA,cAAc,CAAC,IAAY,EAAA;AAClC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;;AAGhB,IAAA,eAAe,CAAC,KAAa,EAAA;AACpC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;;AAGlB,IAAA,cAAc,CAAC,IAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;;AAGhB,IAAA,iBAAiB,CAAC,IAAqB,EAAA;QAC9C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAC7D,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,YAAY,EACjB,IAAI,CACJ;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AAC5B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;;AAGvB,IAAA,eAAe,CAAC,GAAW,EAAA;AAClC,QAAA,IAAI,CAAC,GAAG;YAAE;AAEV,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC;AAC/E,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;QACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;;AAGnB,IAAA,cAAc,CAAC,IAAY,EAAA;QAClC,IAAI,CAAC,IAAI,CAAC,UAAU;AAAE,YAAA,OAAO,KAAK;QAElC,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,GAAG,IAAI,CAAC,UAAU;AAExD,QAAA,IAAI,eAAe,IAAI,aAAa,EAAE;AACrC,YAAA,OAAO,IAAI,GAAG,eAAe,IAAI,IAAI,GAAG,aAAa;;QAGtD,IAAI,eAAe,EAAE;YACpB,OAAO,IAAI,GAAG,eAAe;;QAG9B,IAAI,aAAa,EAAE;YAClB,OAAO,IAAI,GAAG,aAAa;;AAG5B,QAAA,OAAO,KAAK;;IAGL,WAAW,GAAG,MAAK;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACpB,KAAC;IAED,MAAM,GAAA;AACL,QAAA,QACCC,OAAC,CAAAC,UAAI,EAAC,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,gBAAgB,EAAA,EAC3BD,OACC,CAAA,UAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,OAAO,GAAG,EAA4B,CAAC,EACxD,KAAK,EAAE,IAAI,CAAC,IAAI,EAChB,KAAK,EAAE,IAAI,CAAC,KAAK,EAAA,cAAA,EAAA,IAAA,EAEjB,QAAQ,EACR,IAAA,EAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,UAAU,EAAC,aAAa,EACxB,OAAO,EAAE,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,EAE9BA,OAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACC,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,MAAM,EACX,IAAI,EAAC,IAAI,EACT,KAAK,EAAC,SAAS,EACf,KAAK,EAAC,WAAW,EACjB,OAAO,EAAE,MAAM,IAAI,CAAC,QAAQ,EAAE,GACpB,CACD,EAEV,IAAI,CAAC,MAAM,KACXA,wEAAW,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,WAAW,EAAA,EACjFA,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,sBAAsB,EAAA,EAChCA,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,wBAAwB,EAAA,EAElCA,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,UAAU,EAAA,EACpBA,OACC,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,WAAW,EAChB,KAAK,EAAC,eAAe,EACrB,OAAO,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAA,EAExDA,OAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAS,IAAI,EAAC,WAAW,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,SAAS,EAAA,CAAG,CAC9C,EACTA,OAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,KAAK,EAAC,mBAAmB,IAAE,IAAI,CAAC,WAAW,CAAQ,EACzDA,OACC,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,WAAW,EAChB,KAAK,EAAC,WAAW,EACjB,OAAO,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAA,EAExDA,OAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAS,IAAI,EAAC,YAAY,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,SAAS,EAAA,CAAG,CAC/C,CACJ,EAGNA,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,WAAW,EAAA,EACrBA,OACC,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,YAAY,EACjB,KAAK,EAAC,iBAAiB,EACvB,OAAO,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAA,EAE7CA,OAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAS,IAAI,EAAC,WAAW,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,SAAS,EAAA,CAAG,CAC9C,EACTA,OAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,oBAAoB,EAAA,EAAE,IAAI,CAAC,YAAY,EAAS,QAAA,CAAA,EAC5DA,OACC,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,YAAY,EACjB,KAAK,EAAC,YAAY,EAClB,OAAO,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAA,EAE7CA,OAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAS,IAAI,EAAC,YAAY,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,SAAS,EAAG,CAAA,CAC/C,CACJ,CACD,EAENA,OAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,sBAAsB,IAC/B,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAC3CA,OAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,GAAG,EAAE,KAAK,EAAC,KAAK,EAAA,EACxB,GAAG,CACC,CACN,CAAC,CACG,EAENA,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,sBAAsB,EAC/B,EAAA;AACA,YAAA,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa;AAC9B,YAAA,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI;AACrB,YAAA,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc;AAC/B,SAAA,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;YAClB,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAC7C,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,YAAY,EACjB,MAAM,CAAC,GAAG,CAAC,CACX;AAED,YAAA,QACCA,OAAA,CAAA,aAAA,EAAA,EACC,GAAG,EAAE,CAAA,EAAG,GAAG,CAAI,CAAA,EAAA,GAAG,CAAE,CAAA,EACpB,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,EAC7B,QAAQ,EAAE,IAAI,CAAC,WAAW,KAAK,aAAa,EAC5C,OAAO,EAAED,mBAAK,KAAK,aAAa,EAChC,QAAQ,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAC1D,OAAO,EACN,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI;AACtC,sBAAE,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC;AACxC,sBAAE,SAAS,EAEZ,CAAA;AAEJ,SAAC,CAAC,CACG,CACD,CACK,CACZ,CACK;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sd-date-range-picker.entry.cjs.js","sources":["src/utils/date/addDays.ts","src/components/sd-date-range-picker/sd-date-range-picker.scss?tag=sd-date-range-picker&encapsulation=scoped","src/components/sd-date-range-picker/sd-date-range-picker.tsx"],"sourcesContent":["export const addDays = (inputDate: string, days: number) => {\r\n const [year, month, day] = inputDate.split('-').map(Number);\r\n const date = new Date(year, month - 1, day); // month는 0부터 시작하므로 -1\r\n\r\n // 날짜 계산\r\n date.setDate(date.getDate() + days);\r\n\r\n // yyyy-mm-dd 형식으로 변환\r\n const resultYear = date.getFullYear();\r\n const resultMonth = String(date.getMonth() + 1).padStart(2, '0');\r\n const resultDay = String(date.getDate()).padStart(2, '0');\r\n\r\n return `${resultYear}-${resultMonth}-${resultDay}`;\r\n};\r\n","@import 'variables';\r\n\r\n:host {\r\n &.sd-date-range-picker {\r\n width: 210px;\r\n display: inline-block;\r\n }\r\n}\r\n\r\n.sd-date-range-picker__menu {\r\n width: 609px;\r\n box-sizing: border-box;\r\n border-radius: 8px;\r\n padding: 24px 19px;\r\n box-shadow: 2px 2px 12px 2px #00000033;\r\n background: white;\r\n\r\n .sd-date-range-picker__header {\r\n margin-bottom: 16px;\r\n display: flex;\r\n flex-flow: row nowrap;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n .header-label {\r\n margin: 0 12px;\r\n width: 40px;\r\n text-align: center;\r\n font-size: 14px;\r\n line-height: 24px;\r\n }\r\n }\r\n .sd-date-range-picker__body {\r\n display: flex;\r\n flex-flow: row nowrap;\r\n align-items: stretch;\r\n gap: 19px;\r\n .calendar-container {\r\n width: 266px;\r\n\r\n .calendar-header {\r\n width: 100%;\r\n height: 24px;\r\n line-height: 24px;\r\n font-size: 14px;\r\n text-align: center;\r\n position: relative;\r\n padding: 0 5px;\r\n\r\n button {\r\n position: absolute;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n\r\n &.header-button-prev {\r\n left: 5px;\r\n }\r\n\r\n &.header-button-next {\r\n right: 5px;\r\n left: auto;\r\n }\r\n }\r\n }\r\n\r\n .calendar-days {\r\n padding: 0 5px;\r\n margin-top: 8px;\r\n display: grid;\r\n grid-template-columns: repeat(7, minmax(0, 1fr));\r\n column-gap: 10px;\r\n\r\n .day {\r\n width: 28px;\r\n height: 20px;\r\n font-size: 12px;\r\n line-height: 20px;\r\n text-align: center;\r\n color: $grey_65;\r\n }\r\n }\r\n\r\n .calendar-body {\r\n margin-top: 12px;\r\n display: grid;\r\n grid-template-columns: repeat(7, minmax(0, 1fr));\r\n }\r\n }\r\n .separator {\r\n width: 1px;\r\n background-color: $grey_35;\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n Element,\r\n Prop,\r\n State,\r\n Event,\r\n h,\r\n EventEmitter,\r\n Host,\r\n Fragment,\r\n} from '@stencil/core';\r\nimport { useDatePicker } from '../../modules/useDatePicker';\r\nimport { addDays, today } from '../../utils/date';\r\nimport { Type } from '../sd-date-box/sd-date-box';\r\n\r\n@Component({\r\n tag: 'sd-date-range-picker',\r\n styleUrl: 'sd-date-range-picker.scss',\r\n scoped: true,\r\n})\r\nexport class SdDateRangePicker {\r\n @Element() el!: HTMLElement;\r\n\r\n @Prop() date: [string, string] = ['', ''];\r\n @Prop() label?: string;\r\n @Prop() selectable?: [string, string];\r\n @Prop() maxRange?: number;\r\n @Prop() disabled: boolean = false;\r\n\r\n @State() isOpen: boolean = false;\r\n @State() dateRange: [string, string] = this.date;\r\n @State() hoverDate: string = '';\r\n @State() prevYear: number = Number(this.dateRange[0].split('-')[0]);\r\n @State() prevMonth: number = Number(this.dateRange[0].split('-')[1]);\r\n\r\n @Event() sdChange!: EventEmitter<[string, string]>;\r\n\r\n private inputEl?: HTMLElement;\r\n private dateUtil = useDatePicker();\r\n private tempDateRange: [string, string] = ['', ''];\r\n\r\n componentWillLoad() {\r\n this.resetCalendarByDateRange();\r\n }\r\n\r\n private resetCalendarByDateRange() {\r\n this.dateRange = this.date;\r\n\r\n const start = this.dateRange[0] || today;\r\n const end = this.dateRange[1] || start;\r\n\r\n const [startYear, startMonth] = start.split('-').map(Number);\r\n const [todayYear, todayMonth] = today.split('-').map(Number);\r\n\r\n if (end <= today) {\r\n // A. 완전 과거 검색(당월 포함X): 좌측 = 시작월 / 우측 = 종료월\r\n this.prevYear = startYear;\r\n this.prevMonth = startMonth;\r\n } else if (start < today && end > today) {\r\n // B. 과거~미래 걸침(당월 포함O): 좌측 = 오늘의 달\r\n this.prevYear = todayYear;\r\n this.prevMonth = todayMonth;\r\n } else {\r\n // C. 완전 미래 검색(당월 포함X): 좌측 = 시작월\r\n this.prevYear = startYear;\r\n this.prevMonth = startMonth;\r\n }\r\n }\r\n\r\n private openMenu() {\r\n if (this.disabled) return;\r\n\r\n this.tempDateRange = [...this.dateRange];\r\n this.resetCalendarByDateRange();\r\n this.isOpen = true;\r\n }\r\n\r\n private get nextYear(): number {\r\n return this.prevMonth + 1 === 13 ? this.prevYear + 1 : this.prevYear;\r\n }\r\n\r\n private get nextMonth(): number {\r\n return this.prevMonth + 1 === 13 ? 1 : this.prevMonth + 1;\r\n }\r\n\r\n private get prevCalendar() {\r\n return this.dateUtil.createCalendar(this.prevYear, this.prevMonth);\r\n }\r\n\r\n private get nextCalendar() {\r\n return this.dateUtil.createCalendar(this.nextYear, this.nextMonth);\r\n }\r\n\r\n private getDateBoxType(date: string): Type {\r\n if (date === this.dateRange[0])\r\n return this.dateRange[1] ? 'start' : this.hoverDate < this.dateRange[0] ? 'end' : 'start';\r\n if (date === this.dateRange[1]) return 'end';\r\n return '';\r\n }\r\n\r\n private isDisabledDate(date: string): boolean {\r\n if (this.maxRange && this.dateRange[0] && !this.dateRange[1]) {\r\n const minDate = addDays(this.dateRange[0], -this.maxRange);\r\n const maxDate = addDays(this.dateRange[0], this.maxRange);\r\n return !(minDate <= date && date <= maxDate);\r\n }\r\n\r\n if (!this.selectable || !this.selectable[0] || !this.selectable[1]) {\r\n return false;\r\n }\r\n return !(date >= this.selectable[0] && date <= this.selectable[1]);\r\n }\r\n\r\n private isDateInRange(date: string): boolean {\r\n // 1. 날짜 범위가 완전히 선택된 경우\r\n if (this.dateRange[0] && this.dateRange[1]) {\r\n return date >= this.dateRange[0] && date <= this.dateRange[1];\r\n }\r\n\r\n // 2. hover 상태의 날짜 범위를 확인\r\n if (!this.hoverDate || !this.dateRange[0] || this.dateRange[1]) {\r\n return false;\r\n }\r\n\r\n // 3. dateRange[0]과 hoverDate를 기준으로 범위 계산\r\n const [start, end] =\r\n this.dateRange[0] <= this.hoverDate\r\n ? [this.dateRange[0], this.hoverDate]\r\n : [this.hoverDate, this.dateRange[0]];\r\n\r\n return date >= start && date <= end;\r\n }\r\n\r\n private setPrevYear(year: number) {\r\n this.prevYear = year;\r\n }\r\n\r\n private setPrevMonth(month: number) {\r\n this.prevMonth = month;\r\n }\r\n\r\n private updateYearMonth(type: 'prev' | 'next') {\r\n const { newYear, newMonth } = this.dateUtil.calculateYearMonth(\r\n this.prevYear,\r\n this.prevMonth,\r\n type,\r\n );\r\n\r\n this.setPrevYear(newYear);\r\n this.setPrevMonth(newMonth);\r\n }\r\n\r\n private setHoverDate(date: string) {\r\n this.hoverDate = date;\r\n }\r\n\r\n private setDateRange(dateRange: [string, string]) {\r\n this.dateRange = dateRange;\r\n }\r\n\r\n private handleDateClick(type: 'prev' | 'next', day: number) {\r\n this.setHoverDate('');\r\n\r\n const selectedDate =\r\n type === 'prev'\r\n ? this.dateUtil.formatDate(this.prevYear, this.prevMonth, day)\r\n : this.dateUtil.formatDate(this.nextYear, this.nextMonth, day);\r\n\r\n if (!this.dateRange[0] || !!this.dateRange[1] || selectedDate < this.dateRange[0]) {\r\n this.setDateRange([selectedDate, '']);\r\n return; // 아직 완료 아님\r\n }\r\n\r\n const newRange: [string, string] = [this.dateRange[0], selectedDate];\r\n this.setDateRange(newRange);\r\n this.sdChange.emit?.(newRange);\r\n }\r\n\r\n private handleDateHover(type: 'prev' | 'next', day: number) {\r\n const hoverDate =\r\n type === 'prev'\r\n ? this.dateUtil.formatDate(this.prevYear, this.prevMonth, day)\r\n : this.dateUtil.formatDate(this.nextYear, this.nextMonth, day);\r\n this.setHoverDate(hoverDate);\r\n }\r\n\r\n private handleClose = () => {\r\n if (!this.dateRange[0] || !this.dateRange[1]) {\r\n this.dateRange = [...this.tempDateRange];\r\n }\r\n\r\n this.isOpen = false;\r\n };\r\n\r\n render() {\r\n return (\r\n <Host class=\"sd-date-range-picker\">\r\n <sd-input\r\n ref={el => (this.inputEl = el as unknown as HTMLElement)}\r\n value={`${this.dateRange[0]} ~ ${this.dateRange[1]}`}\r\n label={this.label}\r\n inside-label\r\n readonly\r\n disabled={this.disabled}\r\n inputClass=\"text-center\"\r\n inputStyle={{\r\n margin: '0 0 0 8px',\r\n }}\r\n onClick={() => this.openMenu()}\r\n >\r\n <sd-icon\r\n slot=\"prefix\"\r\n name=\"date\"\r\n size=\"16\"\r\n color=\"#737373\"\r\n class=\"date-icon\"\r\n onClick={() => this.openMenu()}\r\n ></sd-icon>\r\n </sd-input>\r\n\r\n {this.isOpen && (\r\n <sd-portal open={this.isOpen} parentRef={this.inputEl} onSdClose={this.handleClose}>\r\n <div class=\"sd-date-range-picker__menu\">\r\n <div class=\"sd-date-range-picker__header mb-16pxr flex flex-nowrap items-center justify-center\">\r\n <button\r\n type=\"button\"\r\n name=\"prev\"\r\n title=\"Previous\"\r\n onClick={() => this.setPrevYear(this.prevYear - 1)}\r\n >\r\n <sd-icon name=\"arrowLeft\" size=\"12\" color=\"#CCCCCC\" />\r\n </button>\r\n\r\n <div class=\"header-label\">{this.prevYear}</div>\r\n\r\n <button\r\n type=\"button\"\r\n name=\"next\"\r\n title=\"Next\"\r\n onClick={() => this.setPrevYear(this.prevYear + 1)}\r\n >\r\n <sd-icon name=\"arrowRight\" size=\"12\" color=\"#CCCCCC\" />\r\n </button>\r\n </div>\r\n\r\n <div class=\"sd-date-range-picker__body\">\r\n {[this.prevCalendar, this.nextCalendar].map((calendar, index) => (\r\n <Fragment>\r\n {index === 1 && <div class=\"separator\"></div>}\r\n\r\n <div key={index} class=\"calendar-container\">\r\n <div class=\"calendar-header\">\r\n <button\r\n type=\"button\"\r\n name=\"month\"\r\n title=\"Month\"\r\n class={index === 0 ? 'header-button-prev' : 'header-button-next'}\r\n onClick={() => this.updateYearMonth(index === 0 ? 'prev' : 'next')}\r\n >\r\n <sd-icon name={index === 0 ? 'arrowLeft' : 'arrowRight'} size=\"12\" color=\"#CCCCCC\" />\r\n </button>\r\n {index === 0\r\n ? `${this.prevYear}.${String(this.prevMonth).padStart(2, '0')}`\r\n : `${this.nextYear}.${String(this.nextMonth).padStart(2, '0')}`}\r\n </div>\r\n\r\n <div class=\"calendar-days\">\r\n {['일', '월', '화', '수', '목', '금', '토'].map(day => (\r\n <sd-date-box key={day} date={day} disabled class=\"day\" />\r\n ))}\r\n </div>\r\n\r\n <div class=\"calendar-body mt-12pxr grid grid-cols-7 gap-y-8pxr\">\r\n {[...calendar.prevMonthDays, ...calendar.days, ...calendar.afterMonthDays].map(\r\n (day, idx) => (\r\n <sd-date-box\r\n key={`prev${day}_${idx}`}\r\n date={!day ? '' : Number(day)}\r\n selected={this.dateRange.some(\r\n date =>\r\n date ===\r\n this.dateUtil.formatDate(\r\n index === 0 ? this.prevYear : this.nextYear,\r\n index === 0 ? this.prevMonth : this.nextMonth,\r\n Number(day),\r\n ),\r\n )}\r\n type={this.getDateBoxType(\r\n this.dateUtil.formatDate(\r\n index === 0 ? this.prevYear : this.nextYear,\r\n index === 0 ? this.prevMonth : this.nextMonth,\r\n Number(day),\r\n ),\r\n )}\r\n isToday={\r\n today ===\r\n this.dateUtil.formatDate(\r\n index === 0 ? this.prevYear : this.nextYear,\r\n index === 0 ? this.prevMonth : this.nextMonth,\r\n Number(day),\r\n )\r\n }\r\n disabled={\r\n !day\r\n ? true\r\n : this.isDisabledDate(\r\n this.dateUtil.formatDate(\r\n index === 0 ? this.prevYear : this.nextYear,\r\n index === 0 ? this.prevMonth : this.nextMonth,\r\n Number(day),\r\n ),\r\n )\r\n }\r\n inRange={this.isDateInRange(\r\n this.dateUtil.formatDate(\r\n index === 0 ? this.prevYear : this.nextYear,\r\n index === 0 ? this.prevMonth : this.nextMonth,\r\n Number(day),\r\n ),\r\n )}\r\n onClick={() => this.handleDateClick(index === 0 ? 'prev' : 'next', Number(day))}\r\n onMouseOver={() => this.handleDateHover(index === 0 ? 'prev' : 'next', Number(day))}\r\n />\r\n ),\r\n )}\r\n </div>\r\n </div>\r\n </Fragment>\r\n ))}\r\n </div>\r\n </div>\r\n </sd-portal>\r\n )}\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"names":["useDatePicker","today","h","Host","index","Fragment"],"mappings":";;;;;AAAO,MAAM,OAAO,GAAG,CAAC,SAAiB,EAAE,IAAY,KAAI;AAC1D,IAAA,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AAC3D,IAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;;IAG5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;;AAGnC,IAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE;AACrC,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAChE,IAAA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAEzD,IAAA,OAAO,GAAG,UAAU,CAAA,CAAA,EAAI,WAAW,CAAI,CAAA,EAAA,SAAS,EAAE;AACnD,CAAC;;ACbD,MAAM,oBAAoB,GAAG,ojGAAojG;;MCoBpkG,iBAAiB,GAAA,MAAA;;;;;;AAGrB,IAAA,IAAI,GAAqB,CAAC,EAAE,EAAE,EAAE,CAAC;AACjC,IAAA,KAAK;AACL,IAAA,UAAU;AACV,IAAA,QAAQ;IACR,QAAQ,GAAY,KAAK;IAExB,MAAM,GAAY,KAAK;AACvB,IAAA,SAAS,GAAqB,IAAI,CAAC,IAAI;IACvC,SAAS,GAAW,EAAE;AACtB,IAAA,QAAQ,GAAW,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,IAAA,SAAS,GAAW,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3D,IAAA,QAAQ;AAET,IAAA,OAAO;IACP,QAAQ,GAAGA,2BAAa,EAAE;AAC1B,IAAA,aAAa,GAAqB,CAAC,EAAE,EAAE,EAAE,CAAC;IAElD,iBAAiB,GAAA;QAChB,IAAI,CAAC,wBAAwB,EAAE;;IAGxB,wBAAwB,GAAA;AAC/B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI;QAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAIC,mBAAK;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK;AAEtC,QAAA,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AAC5D,QAAA,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAGA,mBAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AAE5D,QAAA,IAAI,GAAG,IAAIA,mBAAK,EAAE;;AAEjB,YAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;AACzB,YAAA,IAAI,CAAC,SAAS,GAAG,UAAU;;aACrB,IAAI,KAAK,GAAGA,mBAAK,IAAI,GAAG,GAAGA,mBAAK,EAAE;;AAExC,YAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;AACzB,YAAA,IAAI,CAAC,SAAS,GAAG,UAAU;;aACrB;;AAEN,YAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;AACzB,YAAA,IAAI,CAAC,SAAS,GAAG,UAAU;;;IAIrB,QAAQ,GAAA;QACf,IAAI,IAAI,CAAC,QAAQ;YAAE;QAEnB,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QACxC,IAAI,CAAC,wBAAwB,EAAE;AAC/B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;;AAGnB,IAAA,IAAY,QAAQ,GAAA;QACnB,OAAO,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ;;AAGrE,IAAA,IAAY,SAAS,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC;;AAG1D,IAAA,IAAY,YAAY,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;;AAGnE,IAAA,IAAY,YAAY,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;;AAG3D,IAAA,cAAc,CAAC,IAAY,EAAA;AAClC,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC7B,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,OAAO;AAC1F,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAAE,YAAA,OAAO,KAAK;AAC5C,QAAA,OAAO,EAAE;;AAGF,IAAA,cAAc,CAAC,IAAY,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;AAC7D,YAAA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC1D,YAAA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;YACzD,OAAO,EAAE,OAAO,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,CAAC;;QAG7C,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;AACnE,YAAA,OAAO,KAAK;;QAEb,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;;AAG3D,IAAA,aAAa,CAAC,IAAY,EAAA;;AAEjC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;AAC3C,YAAA,OAAO,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;;;QAI9D,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;AAC/D,YAAA,OAAO,KAAK;;;AAIb,QAAA,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GACjB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACzB,cAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS;AACpC,cAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAEvC,QAAA,OAAO,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG;;AAG5B,IAAA,WAAW,CAAC,IAAY,EAAA;AAC/B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;;AAGb,IAAA,YAAY,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;;AAGf,IAAA,eAAe,CAAC,IAAqB,EAAA;QAC5C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAC7D,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,SAAS,EACd,IAAI,CACJ;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;;AAGpB,IAAA,YAAY,CAAC,IAAY,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;;AAGd,IAAA,YAAY,CAAC,SAA2B,EAAA;AAC/C,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;;IAGnB,eAAe,CAAC,IAAqB,EAAE,GAAW,EAAA;AACzD,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;AAErB,QAAA,MAAM,YAAY,GACjB,IAAI,KAAK;AACR,cAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG;AAC7D,cAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC;QAEhE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YAClF,IAAI,CAAC,YAAY,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACrC,YAAA,OAAO;;AAGR,QAAA,MAAM,QAAQ,GAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC;AACpE,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC;;IAGvB,eAAe,CAAC,IAAqB,EAAE,GAAW,EAAA;AACzD,QAAA,MAAM,SAAS,GACd,IAAI,KAAK;AACR,cAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG;AAC7D,cAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC;AAChE,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;;IAGrB,WAAW,GAAG,MAAK;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YAC7C,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;;AAGzC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACpB,KAAC;IAED,MAAM,GAAA;AACL,QAAA,QACCC,OAAC,CAAAC,UAAI,EAAC,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,sBAAsB,EAAA,EACjCD,OACC,CAAA,UAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,OAAO,GAAG,EAA4B,CAAC,EACxD,KAAK,EAAE,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA,CAAE,EACpD,KAAK,EAAE,IAAI,CAAC,KAAK,EAEjB,cAAA,EAAA,IAAA,EAAA,QAAQ,QACR,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,UAAU,EAAC,aAAa,EACxB,UAAU,EAAE;AACX,gBAAA,MAAM,EAAE,WAAW;aACnB,EACD,OAAO,EAAE,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,EAE9BA,OAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACC,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,MAAM,EACX,IAAI,EAAC,IAAI,EACT,KAAK,EAAC,SAAS,EACf,KAAK,EAAC,WAAW,EACjB,OAAO,EAAE,MAAM,IAAI,CAAC,QAAQ,EAAE,GACpB,CACD,EAEV,IAAI,CAAC,MAAM,KACXA,wEAAW,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,WAAW,EAAA,EACjFA,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,4BAA4B,EAAA,EACtCA,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,oFAAoF,EAAA,EAC9FA,OACC,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,UAAU,EAChB,OAAO,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAA,EAElDA,OAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAS,IAAI,EAAC,WAAW,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,SAAS,EAAA,CAAG,CAC9C,EAETA,OAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,cAAc,IAAE,IAAI,CAAC,QAAQ,CAAO,EAE/CA,OACC,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,MAAM,EACZ,OAAO,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAA,EAElDA,OAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAS,IAAI,EAAC,YAAY,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,SAAS,EAAA,CAAG,CAC/C,CACJ,EAENA,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,4BAA4B,EACrC,EAAA,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAEE,OAAK,MAC3DF,OAAA,CAACG,cAAQ,EAAA,IAAA,EACPD,OAAK,KAAK,CAAC,IAAIF,iBAAK,KAAK,EAAC,WAAW,EAAO,CAAA,EAE7CA,OAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAEE,OAAK,EAAE,KAAK,EAAC,oBAAoB,EAAA,EAC1CF,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,iBAAiB,EAAA,EAC3BA,OACC,CAAA,QAAA,EAAA,EAAA,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,OAAO,EACZ,KAAK,EAAC,OAAO,EACb,KAAK,EAAEE,OAAK,KAAK,CAAC,GAAG,oBAAoB,GAAG,oBAAoB,EAChE,OAAO,EAAE,MAAM,IAAI,CAAC,eAAe,CAACA,OAAK,KAAK,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,EAAA,EAElEF,OAAS,CAAA,SAAA,EAAA,EAAA,IAAI,EAAEE,OAAK,KAAK,CAAC,GAAG,WAAW,GAAG,YAAY,EAAE,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,SAAS,EAAA,CAAG,CAC7E,EACRA,OAAK,KAAK;AACV,cAAE,CAAG,EAAA,IAAI,CAAC,QAAQ,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAE;AAC/D,cAAE,CAAG,EAAA,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAE,CAC3D,EAENF,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,eAAe,EAAA,EACxB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAC3CA,OAAA,CAAA,aAAA,EAAA,EAAa,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,QAAC,KAAK,EAAC,KAAK,EAAG,CAAA,CACzD,CAAC,CACG,EAENA,OAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,oDAAoD,EAAA,EAC7D,CAAC,GAAG,QAAQ,CAAC,aAAa,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,GAAG,CAC7E,CAAC,GAAG,EAAE,GAAG,MACRA,yBACC,GAAG,EAAE,CAAO,IAAA,EAAA,GAAG,IAAI,GAAG,CAAA,CAAE,EACxB,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,EAC7B,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAC5B,IAAI,IACH,IAAI;gBACJ,IAAI,CAAC,QAAQ,CAAC,UAAU,CACvBE,OAAK,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAC3CA,OAAK,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAC7C,MAAM,CAAC,GAAG,CAAC,CACX,CACF,EACD,IAAI,EAAE,IAAI,CAAC,cAAc,CACxB,IAAI,CAAC,QAAQ,CAAC,UAAU,CACvBA,OAAK,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAC3CA,OAAK,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAC7C,MAAM,CAAC,GAAG,CAAC,CACX,CACD,EACD,OAAO,EACNH,mBAAK;gBACL,IAAI,CAAC,QAAQ,CAAC,UAAU,CACvBG,OAAK,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAC3CA,OAAK,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAC7C,MAAM,CAAC,GAAG,CAAC,CACX,EAEF,QAAQ,EACP,CAAC;AACA,kBAAE;AACF,kBAAE,IAAI,CAAC,cAAc,CAClB,IAAI,CAAC,QAAQ,CAAC,UAAU,CACvBA,OAAK,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAC3CA,OAAK,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAC7C,MAAM,CAAC,GAAG,CAAC,CACX,CACD,EAEL,OAAO,EAAE,IAAI,CAAC,aAAa,CAC1B,IAAI,CAAC,QAAQ,CAAC,UAAU,CACvBA,OAAK,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAC3CA,OAAK,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAC7C,MAAM,CAAC,GAAG,CAAC,CACX,CACD,EACD,OAAO,EAAE,MAAM,IAAI,CAAC,eAAe,CAACA,OAAK,KAAK,CAAC,GAAG,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAC/E,WAAW,EAAE,MAAM,IAAI,CAAC,eAAe,CAACA,OAAK,KAAK,CAAC,GAAG,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAClF,CAAA,CACF,CACD,CACI,CACD,CACI,CACX,CAAC,CACG,CACD,CACK,CACZ,CACK;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sd-modal-card.entry.cjs.js","sources":["src/components/sd-modal-card/sd-modal-card.scss?tag=sd-modal-card","src/components/sd-modal-card/sd-modal-card.tsx"],"sourcesContent":["@import 'variables';\r\n\r\nsd-modal-card {\r\n display: block;\r\n .sd-modal-card {\r\n position: relative;\r\n padding: 40px 32px;\r\n border-radius: 8px;\r\n box-shadow: 4px 4px 24px 4px rgba(0, 0, 0, 0.2);\r\n\r\n &__close-button {\r\n position: absolute;\r\n top: 16px;\r\n right: 16px;\r\n cursor: pointer;\r\n }\r\n\r\n sd-icon.sd-modal-card__icon {\r\n display: block;\r\n width: 32px;\r\n height: 32px;\r\n margin: 0 auto 12px auto;\r\n }\r\n\r\n &__title {\r\n color: var(--point-color);\r\n font-size: 18px;\r\n font-weight: 700;\r\n line-height: 30px;\r\n text-align: center;\r\n margin: 0 0 20px 0;\r\n }\r\n\r\n &__message {\r\n color: $grey_95;\r\n font-weight: 400;\r\n font-size: 12px;\r\n line-height: 22px;\r\n text-align: center;\r\n margin: 0;\r\n }\r\n\r\n &__button-container {\r\n display: flex;\r\n margin: 32px auto 0 auto;\r\n justify-content: center;\r\n align-items: center;\r\n gap: 8px;\r\n &.flex-column {\r\n flex-direction: column;\r\n }\r\n button.sd-modal-card__button {\r\n width: 89px;\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, Event, EventEmitter, Host, Prop, h } from '@stencil/core';\r\nimport { resolveColor } from '../../utils/color';\r\nimport { ButtonSize, ButtonVariant } from '../sd-button/sd-button';\r\n\r\nexport interface SdModalCardButtonProps {\r\n label: string;\r\n color: string;\r\n size: ButtonSize;\r\n variant?: ButtonVariant;\r\n class?: string;\r\n type?: 'confirm' | 'cancel';\r\n}\r\n\r\n@Component({\r\n tag: 'sd-modal-card',\r\n styleUrl: 'sd-modal-card.scss',\r\n})\r\nexport class SdModalCard {\r\n @Prop() type: 'info' | 'warning' | 'normal' = 'info';\r\n @Prop() system: 'normal' | 'positive' | 'negative' = 'normal';\r\n @Prop() useCloseButton: boolean = true;\r\n @Prop() modalTitle: string = 'normal';\r\n @Prop() buttonFlexDirection: 'row' | 'column' = 'row';\r\n @Prop() buttonProps: SdModalCardButtonProps[] = [\r\n {\r\n label: '확인',\r\n color: 'grey_80',\r\n size: 'md',\r\n },\r\n ];\r\n @Prop() message: string[] = [];\r\n @Prop()\r\n modalClass: string = '';\r\n\r\n @Event() sdClose!: EventEmitter<MouseEvent>;\r\n @Event() sdConfirm!: EventEmitter<MouseEvent>;\r\n\r\n private get pointColor(): string {\r\n if (this.type !== 'normal') {\r\n return 'grey_95';\r\n }\r\n\r\n switch (this.system) {\r\n case 'positive':\r\n return resolveColor('brilliantblue_75');\r\n case 'negative':\r\n return resolveColor('red_75');\r\n default:\r\n return resolveColor('grey_95');\r\n }\r\n }\r\n\r\n private get getModalClass(): string {\r\n let modalClass = `sd-modal-card ${this.modalClass}`;\r\n modalClass += ' ' + `sd-modal-card-${this.system}`;\r\n return modalClass;\r\n }\r\n\r\n render() {\r\n return (\r\n <Host style={{ '--point-color': this.pointColor }}>\r\n <div class={this.getModalClass}>\r\n {this.useCloseButton && (\r\n <sd-icon\r\n class=\"sd-modal-card__close-button\"\r\n name=\"close\"\r\n size=\"20\"\r\n color=\"grey_65\"\r\n onClick={() => this.sdClose.emit()}\r\n />\r\n )}\r\n {this.type !== 'normal' && (\r\n <sd-icon\r\n class=\"sd-modal-card__icon\"\r\n name={this.type === 'info' ? 'notificationOutline' : 'warningOutline'}\r\n size=\"32\"\r\n color={this.type === 'info' ? 'brilliantblue_75' : 'red_75'}\r\n />\r\n )}\r\n <h2 class=\"sd-modal-card__title\">{this.modalTitle}</h2>\r\n <slot>\r\n <div class={`sd-modal-card__message-container`}>\r\n {this.message.map(msg => (\r\n <p class=\"sd-modal-card__message\">{msg}</p>\r\n ))}\r\n </div>\r\n </slot>\r\n <div class={`sd-modal-card__button-container flex-${this.buttonFlexDirection}`}>\r\n {this.buttonProps.map(button => (\r\n <sd-button\r\n class={'sd-modal-card__button'}\r\n variant={button.variant ? button.variant : 'outline'}\r\n label={button.label}\r\n color={button.color}\r\n size={button.size}\r\n onClick={() =>\r\n !button.type || button.type === 'confirm' ? this.sdConfirm.emit() : this.sdClose.emit()\r\n }\r\n {...(button.class && { class: button.class })}\r\n ></sd-button>\r\n ))}\r\n </div>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n\r\n// <div\r\n// style=\"\r\n// width: 100%;\r\n// display: flex;\r\n// justify-content: center;\r\n// align-items: center;\r\n// gap: 40px;\r\n// margin-top: 50px;\r\n// \"\r\n// >\r\n// <sd-modal-card id=\"1\"></sd-modal-card>\r\n// <sd-modal-card id=\"2\"></sd-modal-card>\r\n// <sd-modal-card id=\"3\"></sd-modal-card>\r\n// </div>\r\n// <div\r\n// style=\"\r\n// width: 100%;\r\n// display: flex;\r\n// justify-content: center;\r\n// align-items: center;\r\n// gap: 40px;\r\n// margin-top: 50px;\r\n// \"\r\n// >\r\n// <sd-modal-card id=\"4\"></sd-modal-card>\r\n// <sd-modal-card id=\"5\"></sd-modal-card>\r\n// <sd-modal-card id=\"6\"></sd-modal-card>\r\n// </div>\r\n// <div\r\n// style=\"\r\n// width: 100%;\r\n// display: flex;\r\n// justify-content: center;\r\n// align-items: center;\r\n// gap: 40px;\r\n// margin-top: 50px;\r\n// margin-bottom: 50px;\r\n// \"\r\n// >\r\n// <sd-modal-card id=\"7\"></sd-modal-card>\r\n// <sd-modal-card id=\"8\"></sd-modal-card>\r\n// <sd-modal-card id=\"9\"></sd-modal-card>\r\n// </div>\r\n// <script>\r\n// document.addEventListener('DOMContentLoaded', event => {\r\n// const modalCard1 = document.getElementById('1');\r\n// const modalCard2 = document.getElementById('2');\r\n// const modalCard3 = document.getElementById('3');\r\n// const modalCard4 = document.getElementById('4');\r\n// const modalCard5 = document.getElementById('5');\r\n// const modalCard6 = document.getElementById('6');\r\n// const modalCard7 = document.getElementById('7');\r\n// const modalCard8 = document.getElementById('8');\r\n// const modalCard9 = document.getElementById('9');\r\n// const message = [\r\n// 'Lorem ipsum dolor sit amet, consectetur adipisicing elit,',\r\n// 'incididunt ut labore et dolore magna aliqua.',\r\n// ];\r\n// const buttonProps = [\r\n// {\r\n// label: '취소',\r\n// color: 'grey_80',\r\n// size: 'md',\r\n// type: 'cancel',\r\n// },\r\n// {\r\n// label: '확인',\r\n// color: 'oceanblue_75',\r\n// size: 'md',\r\n// variant: 'primary',\r\n// },\r\n// ];\r\n// const colButtonProps = [\r\n// {\r\n// label: '확인',\r\n// color: 'oceanblue_75',\r\n// size: 'md',\r\n// variant: 'primary',\r\n// },\r\n// {\r\n// label: '취소',\r\n// color: 'grey_80',\r\n// size: 'md',\r\n// type: 'cancel',\r\n// },\r\n// ];\r\n// const handleClose = () => {\r\n// console.log('Modal closed');\r\n// };\r\n// const handleConfirm = () => {\r\n// console.log('Modal confirmed');\r\n// };\r\n// modalCard1.message = message;\r\n// modalCard2.message = message;\r\n// modalCard3.message = message;\r\n// modalCard4.message = message;\r\n// modalCard5.message = message;\r\n// modalCard6.message = message;\r\n// modalCard7.message = message;\r\n// modalCard8.message = message;\r\n// modalCard9.message = message;\r\n\r\n// modalCard4.type = 'warning';\r\n// modalCard5.type = 'warning';\r\n// modalCard6.type = 'warning';\r\n// modalCard7.type = 'normal';\r\n// modalCard8.type = 'normal';\r\n// modalCard9.type = 'normal';\r\n\r\n// modalCard8.system = 'positive';\r\n// modalCard9.system = 'negative';\r\n\r\n// modalCard2.buttonProps = buttonProps;\r\n// modalCard3.buttonProps = colButtonProps;\r\n// modalCard3.buttonFlexDirection = 'column';\r\n\r\n// const warningButtonProps = [buttonProps[0], { ...buttonProps[1], color: 'red_75' }];\r\n// const warningColButtonProps = [{ ...colButtonProps[0], color: 'red_75' }, colButtonProps[1]];\r\n// modalCard5.buttonProps = warningButtonProps;\r\n// modalCard6.buttonProps = warningColButtonProps;\r\n// modalCard6.buttonFlexDirection = 'column';\r\n\r\n// modalCard1.addEventListener('sdClose', handleClose);\r\n// modalCard2.addEventListener('sdClose', handleClose);\r\n// modalCard3.addEventListener('sdClose', handleClose);\r\n// modalCard1.addEventListener('sdConfirm', handleConfirm);\r\n// modalCard2.addEventListener('sdConfirm', handleConfirm);\r\n// modalCard3.addEventListener('sdConfirm', handleConfirm);\r\n// });\r\n// </script>\r\n"],"names":["resolveColor","h","Host"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sd-popover.entry.cjs.js","sources":["src/components/sd-popover/sd-popover.scss?tag=sd-popover&encapsulation=shadow","src/components/sd-popover/sd-popover.tsx"],"sourcesContent":["@import 'variables';\r\n\r\n.sd-popover {\r\n position: relative;\r\n cursor: pointer;\r\n display: inline-block;\r\n}\r\n","import { Component, Element, Fragment, Prop, State, Watch, h } from '@stencil/core';\r\nimport { ButtonSize, ButtonVariant } from '../sd-button/sd-button';\r\nimport { TooltipArrow } from '../assets/tooltipArrow';\r\n\r\n@Component({\r\n tag: 'sd-popover',\r\n styleUrl: 'sd-popover.scss',\r\n shadow: true,\r\n})\r\nexport class SdPopover {\r\n @Element() el!: HTMLElement;\r\n\r\n @Prop({ mutable: true }) show: boolean = false;\r\n\r\n @Prop({ reflect: true }) placement: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\r\n @Prop({ reflect: true }) color: string = '#01BB4B';\r\n\r\n @Prop({ reflect: true }) icon: IconName = 'helpOutline';\r\n @Prop({ reflect: true }) iconSize: number = 12;\r\n\r\n @Prop() label: string = '';\r\n @Prop({ reflect: true }) buttonSize: ButtonSize = 'sm';\r\n @Prop({ reflect: true }) buttonVariant: ButtonVariant = 'primary';\r\n\r\n @Prop({ attribute: 'title', reflect: true }) menuTitle?: string;\r\n @Prop({ reflect: true }) messages: string[] = [];\r\n @Prop({ reflect: true }) buttons: {\r\n [key: string]: any;\r\n }[] = [];\r\n @Prop() menuClass: string = '';\r\n\r\n @Prop() noHover: boolean = true;\r\n\r\n @Prop() useClose: boolean = false;\r\n\r\n @State() showPopover: boolean = false;\r\n @State() slotContent: string = '';\r\n\r\n @Watch('show')\r\n watchShowHandler(newValue: boolean) {\r\n this.showPopover = newValue;\r\n }\r\n\r\n componentWillLoad() {\r\n this.showPopover = this.show;\r\n\r\n this.slotContent = this.el.innerHTML;\r\n }\r\n\r\n private buttonEl?: HTMLElement;\r\n\r\n private handleClose = () => {\r\n this.showPopover = false;\r\n };\r\n\r\n render() {\r\n return (\r\n <Fragment>\r\n {this.label ? (\r\n <sd-button\r\n ref={el => (this.buttonEl = el as unknown as HTMLElement)}\r\n label={this.label}\r\n icon={this.icon}\r\n size={this.buttonSize}\r\n color={this.color}\r\n variant={this.buttonVariant}\r\n class=\"sd-popover\"\r\n onClick={() => (this.showPopover = !this.showPopover)}\r\n ></sd-button>\r\n ) : (\r\n <sd-icon\r\n ref={el => (this.buttonEl = el as unknown as HTMLElement)}\r\n name={this.icon}\r\n size={this.iconSize}\r\n color={this.color}\r\n class=\"sd-popover\"\r\n onClick={() => (this.showPopover = !this.showPopover)}\r\n ></sd-icon>\r\n )}\r\n\r\n {this.showPopover && (\r\n <sd-tooltip-portal\r\n parentRef={this.buttonEl}\r\n onSdClose={this.handleClose}\r\n placement={this.placement}\r\n >\r\n <div\r\n class={{\r\n 'sd-popover-menu': true,\r\n [`sd-popover-menu--${this.placement}`]: true,\r\n [this.menuClass]: !!this.menuClass,\r\n }}\r\n >\r\n <i class={`sd-popover-menu__arrow sd-popover-menu__arrow--${this.placement}`}>\r\n <TooltipArrow></TooltipArrow>\r\n </i>\r\n\r\n <div class=\"sd-popover-menu__content\">\r\n {this.menuTitle && <div class=\"sd-popover-menu__title\">{this.menuTitle}</div>}\r\n\r\n {this.messages.length > 0 && (\r\n <div class=\"sd-popover-menu__messages\">\r\n {this.messages.map(message => (\r\n <div>{message}</div>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {this.buttons.length > 0 && (\r\n <div class={`sd-popover-menu__buttons sd-popover-menu__buttons--${this.buttons.length}`}>\r\n {this.buttons.map(button => (\r\n <sd-button {...button} />\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {this.useClose && (\r\n <button class=\"sd-popover-menu__close-button\" onClick={() => this.handleClose()}>\r\n <sd-icon name=\"close\" size=\"12\" color=\"#AAAAAA\"></sd-icon>\r\n </button>\r\n )}\r\n </div>\r\n </sd-tooltip-portal>\r\n )}\r\n </Fragment>\r\n );\r\n }\r\n}\r\n"],"names":["h","Fragment","TooltipArrow"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sd-progress.entry.cjs.js","sources":["src/components/sd-progress/sd-progress.scss?tag=sd-progress","src/components/sd-progress/sd-progress.tsx"],"sourcesContent":["@import 'variables';\r\n\r\nsd-progress {\r\n display: block;\r\n\r\n .sd-progress__bar {\r\n position: relative;\r\n width: 360px;\r\n height: 20px;\r\n overflow: hidden;\r\n border-radius: 4px;\r\n background-color: $grey_20;\r\n text-align: center;\r\n\r\n &__percent {\r\n width: var(--progress-percentage);\r\n height: 100%;\r\n border-radius: 4px;\r\n background-color: var(--progress-color, $brilliantblue_75);\r\n transition: all 0.5s;\r\n &.proceed {\r\n border-top-right-radius: 50%;\r\n }\r\n }\r\n &__indicator {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n height: 20px;\r\n width: 100%;\r\n background-color: $grey_20;\r\n line-height: 21px;\r\n z-index: 1;\r\n }\r\n\r\n &__indicator--left {\r\n color: var(--progress-color, $brilliantblue_75);\r\n clip-path: inset(0 0 0 var(--progress-percentage));\r\n }\r\n\r\n &__indicator--right {\r\n color: white;\r\n background-color: var(--progress-color, $brilliantblue_75);\r\n clip-path: inset(0 calc(100% - var(--progress-percentage)) 0 0);\r\n }\r\n }\r\n\r\n .sd-progress__spinner {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n svg {\r\n transform: rotate(-90deg);\r\n }\r\n\r\n &__label {\r\n margin-top: 8px;\r\n font-size: 16px;\r\n color: var(--progress-color, $brilliantblue_75);\r\n }\r\n }\r\n\r\n .sd-progress__label {\r\n margin-top: 4px;\r\n font-size: 12px;\r\n color: $grey_95;\r\n text-align: center;\r\n }\r\n}\r\n","import { Component, Host, Prop, h } from '@stencil/core';\r\n\r\n@Component({\r\n tag: 'sd-progress',\r\n styleUrl: 'sd-progress.scss',\r\n})\r\nexport class SdProgress {\r\n @Prop() type: 'bar' | 'spinner' = 'bar';\r\n @Prop() status: 'default' | 'progress' | 'complete' | 'error' = 'default';\r\n @Prop() percentage: number = 0;\r\n @Prop() size: number = 80;\r\n @Prop() strokeWidth: number = 12;\r\n @Prop() label?: string;\r\n\r\n private statusColor = {\r\n default: '#aaaaaa',\r\n progress: '#0075ff',\r\n complete: '#12B553',\r\n error: '#FB4444',\r\n };\r\n\r\n render() {\r\n return (\r\n <Host\r\n style={{\r\n '--progress-color': this.statusColor[this.status],\r\n '--progress-percentage': `${this.percentage}%`,\r\n }}\r\n >\r\n {this.type === 'bar' ? this.renderBarProgress() : this.renderSpinnerProgress()}\r\n {this.label && <div class=\"sd-progress__label\">{this.label}</div>}\r\n </Host>\r\n );\r\n }\r\n\r\n renderBarProgress() {\r\n return (\r\n <div class={`sd-progress__bar sd-progress__bar--${this.status}`}>\r\n <div\r\n class={['sd-progress__bar__percent', this.percentage < 100 ? 'proceed' : ''].join(' ')}\r\n ></div>\r\n <div class=\"sd-progress__bar__indicator sd-progress__bar__indicator--left\">\r\n {this.percentage}%\r\n </div>\r\n <div class=\"sd-progress__bar__indicator sd-progress__bar__indicator--right\">\r\n {this.percentage}%\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n renderSpinnerProgress() {\r\n const radius = (this.size - this.strokeWidth) / 2; // 원의 반지름\r\n const circumference = 2 * Math.PI * radius; // 원의 둘레\r\n const offset = circumference - (this.percentage / 100) * circumference; // 진행률에 따른 offset\r\n const progressBgSize = `${this.size}px`;\r\n const progressSize = `${this.size / 2}px`;\r\n\r\n return (\r\n <div class={`sd-progress__spinner sd-progress__spinner--${this.status}`}>\r\n <svg width={progressBgSize} height={progressBgSize}>\r\n <circle\r\n cx={progressSize}\r\n cy={progressSize}\r\n r={radius}\r\n stroke=\"#EEEEEE\"\r\n stroke-width={this.strokeWidth}\r\n fill=\"transparent\"\r\n />\r\n <circle\r\n cx={progressSize}\r\n cy={progressSize}\r\n r={radius}\r\n stroke={this.statusColor[this.status]}\r\n stroke-width={this.strokeWidth}\r\n fill=\"transparent\"\r\n stroke-dasharray={circumference}\r\n stroke-dashoffset={offset}\r\n stroke-linecap=\"round\"\r\n class=\"transition-all duration-500\"\r\n />\r\n </svg>\r\n <strong class=\"sd-progress__spinner__label\">{this.percentage} %</strong>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n// <sd-progress id=\"sd-progress-1\"></sd-progress>\r\n// <sd-progress id=\"sd-progress-2\" type=\"spinner\"></sd-progress>\r\n// <sd-progress id=\"sd-progress-3\" type=\"spinner\"></sd-progress>\r\n// <script>\r\n// document.addEventListener('DOMContentLoaded', event => {\r\n// progress = document.getElementById('sd-progress-1');\r\n// progress2 = document.getElementById('sd-progress-2');\r\n// progress3 = document.getElementById('sd-progress-3');\r\n// progress2.label = 'test label...';\r\n// progress3.percentage = 50;\r\n// progress3.status = 'error';\r\n// let percentage = 0;\r\n// const interval = setInterval(() => {\r\n// if (percentage >= 100) {\r\n// clearInterval(interval);\r\n// progress.status = 'complete';\r\n// progress2.status = 'complete';\r\n// return;\r\n// }\r\n// percentage += 10;\r\n// progress.status = 'progress';\r\n// progress.percentage = percentage;\r\n// progress2.status = 'progress';\r\n// progress2.percentage = percentage;\r\n// }, 500);\r\n// });\r\n// </script>\r\n"],"names":["h","Host"],"mappings":"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"}
@@ -1,406 +0,0 @@
1
- 'use strict';
2
-
3
- var index = require('./index-Bxead0A0.js');
4
- var selectKeyboardNavigation = require('./select-keyboard-navigation-6fO_V4En.js');
5
-
6
- const sdSelectMultipleGroupCss = ".sd-select-multiple-group__dropdown{overflow-y:auto;overflow-x:hidden;scroll-behavior:smooth}.sd-select-multiple-group__dropdown::-webkit-scrollbar{opacity:0;background:#e5e5e5}.sd-select-multiple-group__dropdown::-webkit-scrollbar:horizontal{height:8px}.sd-select-multiple-group__dropdown::-webkit-scrollbar:vertical{width:8px}.sd-select-multiple-group__dropdown::-webkit-scrollbar-thumb{height:80px;background-color:#cccccc;border-radius:4px}.sd-select-multiple-group__dropdown::-webkit-scrollbar-track{background-color:transparent}sd-select-multiple-group{display:inline-block;height:fit-content}sd-select-multiple-group .sd-select-multiple-group{display:flex;flex-wrap:nowrap;width:var(--select-width, 200px);cursor:pointer;user-select:none;border:1px solid #aaaaaa;border-radius:4px;background-color:white;color:#333333}sd-select-multiple-group .sd-select-multiple-group:hover:not(.sd-select-multiple-group--disabled){background:#f6f6f6}sd-select-multiple-group .sd-select-multiple-group.sd-select-multiple-group--disabled{cursor:not-allowed;background-color:#eeeeee;border-color:#cccccc}sd-select-multiple-group .sd-select-multiple-group.sd-select-multiple-group--disabled .sd-select-multiple-group__label{border-right:1px solid #cccccc}sd-select-multiple-group .sd-select-multiple-group.sd-select-multiple-group--disabled .sd-select-multiple-group__trigger{color:#888888}sd-select-multiple-group .sd-select-multiple-group.sd-select-multiple-group--disabled .sd-select-multiple-group__trigger:focus,sd-select-multiple-group .sd-select-multiple-group.sd-select-multiple-group--disabled .sd-select-multiple-group__trigger:focus-visible,sd-select-multiple-group .sd-select-multiple-group.sd-select-multiple-group--disabled .sd-select-multiple-group__trigger:focus-within{outline:none !important}sd-select-multiple-group .sd-select-multiple-group__label{font-size:12px;font-weight:500;color:#333333;padding:4px 12px;border-right:1px solid #cccccc;border-radius:4px 0 0 4px;background-color:#f6f6f6}sd-select-multiple-group .sd-select-multiple-group__container{position:relative;width:100%;display:flex}sd-select-multiple-group .sd-select-multiple-group__container .sd-select-multiple-group__trigger{padding:4px 20px 4px 12px;display:flex;width:100%;align-items:center}sd-select-multiple-group .sd-select-multiple-group__container .sd-select-multiple-group__trigger .sd-select-multiple-group__value{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:20px;font-size:12px;font-weight:400}sd-select-multiple-group .sd-select-multiple-group__container .sd-select-multiple-group__trigger .sd-select-multiple-group__clear{margin:0 4px;width:8px;height:8px;background-color:transparent;outline:none;border:none}sd-select-multiple-group .sd-select-multiple-group__container .sd-select-multiple-group__arrow{position:absolute;top:8px;right:8px;width:12px;height:12px;color:#888888;transition:transform 0.3s ease}sd-select-multiple-group .sd-select-multiple-group__container .sd-select-multiple-group__arrow--open{transform:rotate(180deg)}.sd-select-multiple-group__dropdown{width:var(--select-width, 200px);max-height:var(--select-dropdown-height, 260px);padding-bottom:2px;background-color:white;box-shadow:2px 2px 12px 2px rgba(0, 0, 0, 0.1);border-radius:4px;overflow-y:auto;color:#333333}.sd-select-multiple-group__dropdown .sd-select-multiple-group__search-container{position:sticky;top:0;display:flex;width:100%;background-color:white;align-items:center;padding:4px 8px}.sd-select-multiple-group__dropdown .sd-select-multiple-group__search-container sd-input{width:100%}.sd-select-multiple-group__dropdown .sd-select-multiple-group__search-container--scrolled{box-shadow:2px 2px 8px 2px rgba(0, 0, 0, 0.2)}.sd-select-multiple-group__dropdown .sd-select-multiple-group__option-placeholder{padding:4px 12px;font-size:12px;line-height:20px}";
7
-
8
- const SdSelectMultipleGroup = class extends selectKeyboardNavigation.BaseDropdownEvent {
9
- constructor(hostRef) {
10
- super();
11
- index.registerInstance(this, hostRef);
12
- this.sdChange = index.createEvent(this, "sdChange");
13
- this.dropDownShow = index.createEvent(this, "dropDownShow");
14
- }
15
- get el() { return index.getElement(this); }
16
- // props
17
- value = null;
18
- label = '';
19
- options = [];
20
- placeholder = '선택';
21
- optionPlaceholder = '옵션이 없습니다.';
22
- width = '200px';
23
- dropdownHeight = '260px';
24
- disabled = false;
25
- clearable = false;
26
- searchable = false;
27
- useCheckbox = false;
28
- useAll = false;
29
- allCheckedLabel = '전체';
30
- allCheckOptionLabel = '전체';
31
- // props - custom styles
32
- containerStyle = {};
33
- triggerStyle = {};
34
- dropdownStyle = {};
35
- optionStyle = {};
36
- labelStyle = {};
37
- // props - custom slots
38
- optionRenderer;
39
- // states
40
- filteredOptions = this.options;
41
- isOpen = false;
42
- searchText = null;
43
- itemIndex = -1;
44
- isScrolled = false;
45
- // events
46
- sdChange;
47
- dropDownShow;
48
- selectRef;
49
- searchRef;
50
- optionRef;
51
- dropdownRef;
52
- valueChanged() {
53
- this.sdChange?.emit(this.value);
54
- }
55
- optionsChanged() {
56
- this.filteredOptions = this.options;
57
- this.filterOptions();
58
- }
59
- searchTextChanged() {
60
- this.filterOptions();
61
- }
62
- async itemIndexChanged(newIndex, oldIndex) {
63
- if (this.searchable) {
64
- const searchInput = await this.getNativeInputElement();
65
- if (this.itemIndex === -1) {
66
- searchInput?.focus();
67
- return;
68
- }
69
- else if (searchInput?.matches(':focus')) {
70
- searchInput?.blur();
71
- }
72
- }
73
- const optionElements = Array.from(this.dropdownRef?.querySelectorAll('.sd-select-multiple-group__dropdown sd-select-option-group') || []);
74
- const currentItem = optionElements?.[this.itemIndex];
75
- if (!currentItem || !this.isOpen)
76
- return;
77
- this.optionRef = currentItem;
78
- const isOptionDisabled = await this.optionRef.isDisabled();
79
- if (isOptionDisabled) {
80
- newIndex > oldIndex ? this.itemIndex++ : this.itemIndex--;
81
- return;
82
- }
83
- this.scrollToOption(currentItem);
84
- }
85
- async isOpenChanged() {
86
- // Base class의 이벤트 관리 호출 - 다른 select와의 이벤트 충돌 방지
87
- this.onDropdownToggle(this.isOpen);
88
- const selectedOption = this.getSelectedOption();
89
- if (!selectedOption) {
90
- this.itemIndex = -1;
91
- }
92
- else {
93
- this.itemIndex = this.options.indexOf(selectedOption[0]);
94
- }
95
- this.dropDownShow?.emit({ isOpen: this.isOpen });
96
- if (this.isOpen === false)
97
- return;
98
- await new Promise(resolve => setTimeout(resolve, 10));
99
- const optionElements = Array.from(this.dropdownRef?.querySelectorAll('.sd-select-multiple__dropdown sd-select-item') || []);
100
- const currentItem = optionElements?.[this.itemIndex];
101
- // 드롭다운이 열릴 때 검색 입력에 포커스
102
- if (this.searchable) {
103
- const searchInput = await this.getNativeInputElement();
104
- searchInput?.focus();
105
- }
106
- if (!currentItem)
107
- return;
108
- await new Promise(resolve => setTimeout(resolve, 10)); // 추가 딜레이
109
- this.scrollToOption(currentItem);
110
- }
111
- componentWillLoad() {
112
- // props가 모두 설정된 후에 실행되므로 올바른 options 값을 가져올 수 있음
113
- this.filteredOptions = this.options;
114
- this.initializeEvent(); // global dropdown Manager에 등록 + 이벤트 핸들러 초기화
115
- }
116
- disconnectedCallback() {
117
- this.cleanupEvent(); // global dropdown Manager에서 제거 + 이벤트 정리
118
- }
119
- handleDocumentClick(event) {
120
- if (!this.selectRef?.contains(event.target)) {
121
- this.isOpen = false;
122
- }
123
- }
124
- handleDocumentKeydown(keyboardEvent) {
125
- keyboardEvent.stopPropagation();
126
- const targetKey = ['ArrowDown', 'ArrowUp', 'Enter', 'Escape'];
127
- if (!targetKey.includes(keyboardEvent.key))
128
- return;
129
- keyboardEvent.preventDefault();
130
- switch (keyboardEvent.key) {
131
- case 'ArrowDown':
132
- case 'ArrowUp':
133
- const keyboardNavigation = new selectKeyboardNavigation.SelectKeyboardNavigation(this.searchable, this.filteredOptions);
134
- const nextIndex = keyboardNavigation.getNextIndex(this.itemIndex, keyboardEvent.key);
135
- this.itemIndex = nextIndex;
136
- break;
137
- case 'Enter':
138
- const selectedOption = this.filteredOptions[this.itemIndex];
139
- if (selectedOption && !selectedOption.disabled) {
140
- this.handleOptionSelection(selectedOption);
141
- }
142
- break;
143
- case 'Escape':
144
- this.isOpen = false;
145
- break;
146
- }
147
- }
148
- // event handlers
149
- handleTriggerClick = (event) => {
150
- event.stopPropagation();
151
- if (!this.disabled) {
152
- this.isOpen = !this.isOpen;
153
- this.dropDownShow?.emit({ isOpen: this.isOpen });
154
- }
155
- };
156
- handleAllOptionClick = (detail) => {
157
- if (detail.isSelected) {
158
- // 이미 선택된 옵션인 경우, 선택 해제
159
- const filterDisabledOptions = this.filteredOptions.filter(opt => opt.type === 'item' && !opt.disabled);
160
- this.value =
161
- this.value?.filter(selected => !filterDisabledOptions.some(opt => opt.value === selected.value)) || this.value;
162
- }
163
- else {
164
- // 새로운 옵션 선택
165
- const valueSet = new Set([
166
- ...(this.value || []),
167
- ...this.filteredOptions.filter(opt => opt.type === 'item' && !opt.disabled),
168
- ]);
169
- this.value = Array.from(valueSet);
170
- }
171
- };
172
- handleOptionClick = (detail) => {
173
- const { option, event } = detail;
174
- event.stopPropagation();
175
- if (option.type === 'group')
176
- this.handleGroupOptionClick(detail);
177
- if (option.type === 'subgroup')
178
- this.handleSubGroupOptionClick(detail);
179
- if (option.type === 'item')
180
- this.handleOptionSelection(option);
181
- };
182
- handleGroupOptionClick = (detail) => {
183
- const { option, isSelected } = detail;
184
- const childOptions = this.filteredOptions.filter(opt => opt.parent === option.value && !opt.disabled);
185
- childOptions.forEach(subgroup => {
186
- this.handleSubGroupOptionClick({
187
- option: subgroup,
188
- isSelected: isSelected || isSelected === null,
189
- });
190
- });
191
- };
192
- handleSubGroupOptionClick = (detail) => {
193
- const { option, isSelected } = detail;
194
- const childOptions = this.filteredOptions.filter(opt => opt.parent === option.value && !opt.disabled);
195
- if (isSelected || isSelected === null) {
196
- // 모든 자식 옵션이 선택된 경우, 모두 선택 해제
197
- this.value =
198
- this.value?.filter(selected => !childOptions.some(child => child.value === selected.value)) ||
199
- null;
200
- }
201
- else {
202
- // 일부 또는 전체 자식 옵션이 선택되지 않은 경우, 모두 선택
203
- const newSelections = childOptions.filter(child => !this.value?.some(selected => selected.value === child.value));
204
- this.value = [...(this.value || []), ...newSelections];
205
- }
206
- };
207
- filterOptions() {
208
- if (!this.searchText || this.searchText.trim() === '') {
209
- // 검색어가 없으면 전체 옵션 표시
210
- this.filteredOptions = this.options;
211
- return;
212
- }
213
- const searchTerm = this.searchText.toLowerCase();
214
- const matchedOptions = new Set();
215
- // 1. 직접 매칭되는 옵션들 찾기
216
- this.options.forEach(option => {
217
- if (option.label.toLowerCase().includes(searchTerm)) {
218
- matchedOptions.add(option);
219
- // 매칭된 옵션의 상위 그룹들도 포함
220
- this.addParentGroups(option, matchedOptions);
221
- }
222
- });
223
- // 2. Set을 배열로 변환하고 원본 순서 유지
224
- this.filteredOptions = this.options.filter(option => matchedOptions.has(option));
225
- }
226
- addParentGroups(option, matchedSet) {
227
- if (!option.parent)
228
- return;
229
- const parentOption = this.options.find(opt => opt.value === option.parent);
230
- if (parentOption && !matchedSet.has(parentOption)) {
231
- matchedSet.add(parentOption);
232
- // 재귀적으로 상위 그룹들도 추가
233
- this.addParentGroups(parentOption, matchedSet);
234
- }
235
- }
236
- getSelectedOption() {
237
- return this.options.filter(option => this.value?.includes(option));
238
- }
239
- handleDropdownScroll = (event) => {
240
- const target = event.target;
241
- const scrollTop = target.scrollTop;
242
- // 스크롤이 조금이라도 되면 그림자 표시
243
- this.isScrolled = scrollTop > 0;
244
- };
245
- async getNativeInputElement() {
246
- if (this.searchRef) {
247
- return this.searchRef.getNativeElement();
248
- }
249
- return null;
250
- }
251
- handleOptionSelection = (option) => {
252
- if (!option || option.disabled)
253
- return;
254
- const isAlreadySelected = this.value?.some(opt => opt.value === option.value);
255
- if (isAlreadySelected) {
256
- // 이미 선택된 옵션인 경우, 선택 해제
257
- this.value = this.value?.filter(opt => opt.value !== option.value) || null;
258
- }
259
- else {
260
- // 새로운 옵션 선택
261
- this.value = [...(this.value || []), option];
262
- }
263
- };
264
- getAllItemsUnderOption(parentOption, includeDisabled = false) {
265
- const filterChildrenWithParent = (option) => option.parent === parentOption.value && (includeDisabled || !option.disabled);
266
- if (parentOption.type === 'subgroup') {
267
- return this.filteredOptions.filter(option => filterChildrenWithParent(option) && option.type === 'item');
268
- }
269
- const allItems = [];
270
- const childOptions = this.filteredOptions.filter(filterChildrenWithParent);
271
- const subgroupOptions = childOptions.filter(option => option.type === 'subgroup');
272
- subgroupOptions.forEach(subgroup => {
273
- const itemsUnderSubgroup = this.filteredOptions.filter(option => option.parent === subgroup.value &&
274
- option.type === 'item' &&
275
- (includeDisabled ? true : !option.disabled));
276
- allItems.push(...itemsUnderSubgroup);
277
- });
278
- const directItems = childOptions.filter(option => option.type === 'item');
279
- allItems.push(...directItems);
280
- return allItems;
281
- }
282
- isAllChildrenSelected(groupOption) {
283
- const allItems = this.getAllItemsUnderOption(groupOption);
284
- if (allItems.length === 0)
285
- return false;
286
- const selectedItems = allItems.filter(item => this.value?.some(selected => selected.value === item.value));
287
- if (selectedItems.length === allItems.length)
288
- return true;
289
- if (selectedItems.length > 0)
290
- return null;
291
- return false;
292
- }
293
- getChildrenOptions(parentOption) {
294
- const allItems = this.getAllItemsUnderOption(parentOption, true);
295
- const selectedCount = allItems.filter(item => this.value?.some(val => val.value === item.value)).length;
296
- return {
297
- selectedCount,
298
- totalCount: allItems.length,
299
- };
300
- }
301
- isAllOptionsSelected() {
302
- if (!this.value || this.value.length === 0)
303
- return false;
304
- const selectableItems = this.options.filter(opt => opt.type === 'item' && !opt.disabled);
305
- if (selectableItems.length === 0)
306
- return false;
307
- const selectedValues = new Set(this.value.map(v => v.value));
308
- return selectableItems.every(option => selectedValues.has(option.value));
309
- }
310
- getTriggerLabel() {
311
- const selectedOption = this.getSelectedOption();
312
- if (!selectedOption)
313
- return '선택';
314
- if (selectedOption.length === 0)
315
- return this.placeholder;
316
- const isAllChecked = this.isAllOptionsSelected();
317
- return isAllChecked
318
- ? this.allCheckedLabel
319
- : selectedOption.map(option => option.label).join(', ');
320
- }
321
- closeDropdown() {
322
- this.isOpen = false;
323
- }
324
- scrollToOption(optionElement) {
325
- if (!this.dropdownRef || !optionElement)
326
- return;
327
- const dropdown = this.dropdownRef;
328
- const optionTop = optionElement.offsetTop;
329
- const optionHeight = optionElement.offsetHeight;
330
- const dropdownScrollTop = dropdown.scrollTop;
331
- const dropdownHeight = dropdown.clientHeight;
332
- const searchContainer = dropdown.querySelector('.sd-select__search-container');
333
- const searchOffset = searchContainer ? searchContainer.offsetHeight : 0;
334
- const visibleTop = dropdownScrollTop + searchOffset;
335
- const visibleBottom = dropdownScrollTop + dropdownHeight;
336
- if (optionTop < visibleTop) {
337
- dropdown.scrollTop = optionTop - searchOffset;
338
- }
339
- else if (optionTop + optionHeight > visibleBottom) {
340
- dropdown.scrollTop = optionTop + optionHeight - dropdownHeight + searchOffset;
341
- }
342
- }
343
- render() {
344
- const style = {
345
- '--select-width': this.width || '200px',
346
- '--select-dropdown-height': this.dropdownHeight || '260px',
347
- };
348
- return (index.h(index.Host, { key: '2fb8b95f341cea6870702474d549b10b46a33551', style: style }, index.h("div", { key: 'f0ffc9960ae27bc1e76e3cd59592de205ae0071d', class: {
349
- 'sd-select-multiple-group': true,
350
- 'sd-select-multiple-group--open': this.isOpen,
351
- 'sd-select-multiple-group--disabled': this.disabled,
352
- }, style: this.containerStyle, ref: el => (this.selectRef = el) }, this.renderLabel(this.label, this.labelStyle), index.h("div", { key: '1496b603a09001a571388baade46e4d14f19e51d', class: "sd-select-multiple-group__container" }, this.renderTrigger(), this.renderDropdown()))));
353
- }
354
- renderLabel(label, labelStyle) {
355
- if (!label)
356
- return null;
357
- return (index.h("label", { class: "sd-select-multiple-group__label", style: labelStyle }, label));
358
- }
359
- renderTrigger() {
360
- const selectedOption = this.getSelectedOption();
361
- return (index.h("div", { class: "sd-select-multiple-group__trigger", tabindex: this.disabled ? -1 : 0, onClick: this.handleTriggerClick, style: this.triggerStyle }, index.h("span", { class: "sd-select-multiple-group__value" }, this.getTriggerLabel()), this.clearable && selectedOption?.length > 0 && !this.disabled && (index.h("sd-icon", { key: "close-icon", name: "close", size: 10, color: "#888", class: "sd-select-multiple-group__clear", onClick: event => {
362
- event.stopPropagation();
363
- this.value = null;
364
- } })), index.h("sd-icon", { key: "arrow-icon", name: "arrowDown", color: "#888", class: {
365
- 'sd-select-multiple-group__arrow': true,
366
- 'sd-select-multiple-group__arrow--open': this.isOpen,
367
- } })));
368
- }
369
- renderDropdown() {
370
- const style = {
371
- '--select-width': this.width || '200px',
372
- '--select-dropdown-height': this.dropdownHeight || '260px',
373
- };
374
- if (this.isOpen === false)
375
- return null;
376
- return (index.h("sd-portal", { open: this.isOpen, parentRef: this.selectRef, onSdClose: this.closeDropdown }, index.h("div", { class: "sd-select-multiple-group__dropdown", style: { ...style, ...this.dropdownStyle }, onScroll: this.handleDropdownScroll, ref: el => (this.dropdownRef = el) }, this.searchable && (index.h("div", { class: {
377
- 'sd-select-multiple-group__search-container': true,
378
- 'sd-select-multiple-group__search-container--scrolled': this.isScrolled,
379
- }, onClick: event => event.stopPropagation() }, index.h("sd-input", { ref: el => (this.searchRef = el), value: this.searchText, placeholder: "\uAC80\uC0C9", clearable: true, inputStyle: { 'padding-left': '8px' }, autofocus: true, onSdInput: event => {
380
- this.searchText = String(event?.detail);
381
- }, onSdFocus: () => {
382
- this.itemIndex = -1;
383
- }, onKeyDown: e => {
384
- if (e.code === 'Enter')
385
- e.stopPropagation();
386
- } }, index.h("sd-icon", { name: "search", size: 16, color: "#737373", slot: "prefix" })))), this.filteredOptions.length > 0 ? (index.h(index.Fragment, null, this.useAll && (index.h("sd-select-option-group", { option: { label: this.allCheckOptionLabel, value: '', type: 'all' }, index: 0, isSelected: this.isAllOptionsSelected(), isFocused: this.itemIndex === 0, optionStyle: this.optionStyle, onOptionClick: ({ detail, }) => this.handleAllOptionClick(detail), useCheckbox: this.useCheckbox, useIndicator: false })), this.filteredOptions.map((option, index$1) => (index.h("slot", { name: `option-${option.value}` }, index.h("sd-select-option-group", { option: option, index: index$1, isSelected: option.type === 'item'
387
- ? this.value?.some(selected => selected.value === option.value)
388
- : this.isAllChildrenSelected(option), isFocused: index$1 === this.itemIndex, optionStyle: this.optionStyle, onOptionClick: ({ detail, }) => {
389
- if (option.type !== 'item' && !this.useCheckbox) {
390
- return;
391
- }
392
- this.handleOptionClick(detail);
393
- }, useCheckbox: this.useCheckbox, ...(option.type !== 'item' && { countInfo: this.getChildrenOptions(option) }) })))))) : (index.h("slot", { name: "option-placeholder" }, index.h("div", { class: 'sd-select-multiple-group__option-placeholder', style: this.optionStyle }, this.optionPlaceholder))))));
394
- }
395
- static get watchers() { return {
396
- "value": ["valueChanged"],
397
- "options": ["optionsChanged"],
398
- "searchText": ["searchTextChanged"],
399
- "itemIndex": ["itemIndexChanged"],
400
- "isOpen": ["isOpenChanged"]
401
- }; }
402
- };
403
- SdSelectMultipleGroup.style = sdSelectMultipleGroupCss;
404
-
405
- exports.sd_select_multiple_group = SdSelectMultipleGroup;
406
- //# sourceMappingURL=sd-select-multiple-group.entry.cjs.js.map