yuyeon 0.0.0 → 0.0.3

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 (386) hide show
  1. package/dist/style.css +1 -0
  2. package/dist/yuyeon.mjs +3607 -0
  3. package/dist/yuyeon.umd.js +1 -0
  4. package/lib/components/app/YApp.mjs +30 -0
  5. package/lib/components/app/YApp.mjs.map +1 -0
  6. package/lib/components/app/YApp.scss +14 -0
  7. package/lib/components/app/index.mjs +2 -0
  8. package/lib/components/app/index.mjs.map +1 -0
  9. package/lib/components/bench/YBench.mjs +44 -0
  10. package/lib/components/bench/YBench.mjs.map +1 -0
  11. package/lib/components/bench/index.mjs +2 -0
  12. package/lib/components/bench/index.mjs.map +1 -0
  13. package/lib/components/button/YButton.mjs +138 -0
  14. package/lib/components/button/YButton.mjs.map +1 -0
  15. package/{src/components/button/y-btn.scss → lib/components/button/YButton.scss} +67 -29
  16. package/lib/components/button/index.mjs +2 -0
  17. package/lib/components/button/index.mjs.map +1 -0
  18. package/lib/components/card/YCard.mjs +18 -0
  19. package/lib/components/card/YCard.mjs.map +1 -0
  20. package/lib/components/card/YCardBody.mjs +10 -0
  21. package/lib/components/card/YCardBody.mjs.map +1 -0
  22. package/lib/components/card/YCardFooter.mjs +10 -0
  23. package/lib/components/card/YCardFooter.mjs.map +1 -0
  24. package/lib/components/card/YCardHeader.mjs +10 -0
  25. package/lib/components/card/YCardHeader.mjs.map +1 -0
  26. package/lib/components/card/index.mjs +6 -0
  27. package/lib/components/card/index.mjs.map +1 -0
  28. package/lib/components/checkbox/YCheckbox.mjs +154 -0
  29. package/lib/components/checkbox/YCheckbox.mjs.map +1 -0
  30. package/lib/components/checkbox/YInputCheckbox.mjs +113 -0
  31. package/lib/components/checkbox/YInputCheckbox.mjs.map +1 -0
  32. package/{src/components/checkbox/y-input-checkbox.scss → lib/components/checkbox/YInputCheckbox.scss} +19 -19
  33. package/lib/components/checkbox/index.mjs +5 -0
  34. package/lib/components/checkbox/index.mjs.map +1 -0
  35. package/{src/components/chip/y-chip.vue → lib/components/chip/YChip.mjs} +26 -27
  36. package/lib/components/chip/YChip.mjs.map +1 -0
  37. package/{src/components/chip/y-chip.scss → lib/components/chip/YChip.scss} +0 -4
  38. package/lib/components/chip/index.mjs +3 -0
  39. package/lib/components/chip/index.mjs.map +1 -0
  40. package/lib/components/dialog/YDialog.mjs +97 -0
  41. package/lib/components/dialog/YDialog.mjs.map +1 -0
  42. package/lib/components/dialog/index.mjs +2 -0
  43. package/lib/components/dialog/index.mjs.map +1 -0
  44. package/lib/components/field-input/YFieldInput.mjs +218 -0
  45. package/lib/components/field-input/YFieldInput.mjs.map +1 -0
  46. package/{src/components/field-input/y-field-input.scss → lib/components/field-input/YFieldInput.scss} +2 -4
  47. package/lib/components/field-input/index.mjs +2 -0
  48. package/lib/components/field-input/index.mjs.map +1 -0
  49. package/lib/components/form/YForm.mjs +79 -0
  50. package/lib/components/form/YForm.mjs.map +1 -0
  51. package/lib/components/form/index.mjs +4 -0
  52. package/lib/components/form/index.mjs.map +1 -0
  53. package/lib/components/icons/YIconCheckbox.mjs +21 -0
  54. package/lib/components/icons/YIconCheckbox.mjs.map +1 -0
  55. package/lib/components/icons/YIconClear.mjs +16 -0
  56. package/lib/components/icons/YIconClear.mjs.map +1 -0
  57. package/lib/components/icons/YIconExpand.mjs +20 -0
  58. package/lib/components/icons/YIconExpand.mjs.map +1 -0
  59. package/lib/components/icons/index.mjs +4 -0
  60. package/lib/components/icons/index.mjs.map +1 -0
  61. package/lib/components/index.mjs +24 -0
  62. package/lib/components/index.mjs.map +1 -0
  63. package/lib/components/input/YInput.mjs +346 -0
  64. package/lib/components/input/YInput.mjs.map +1 -0
  65. package/{src/components/input/y-input.scss → lib/components/input/YInput.scss} +12 -4
  66. package/lib/components/input/index.mjs +2 -0
  67. package/lib/components/input/index.mjs.map +1 -0
  68. package/lib/components/input/index.scss +2 -0
  69. package/lib/components/layer/YLayer.mjs +193 -0
  70. package/lib/components/layer/YLayer.mjs.map +1 -0
  71. package/lib/components/layer/index.mjs +2 -0
  72. package/lib/components/layer/index.mjs.map +1 -0
  73. package/lib/components/layer/scroll-strategies.mjs +132 -0
  74. package/lib/components/layer/scroll-strategies.mjs.map +1 -0
  75. package/lib/components/list/YList.mjs +16 -0
  76. package/lib/components/list/YList.mjs.map +1 -0
  77. package/lib/components/list/YList.scss +3 -0
  78. package/lib/components/list/YListItem.mjs +37 -0
  79. package/lib/components/list/YListItem.mjs.map +1 -0
  80. package/lib/components/list/YListItem.scss +59 -0
  81. package/lib/components/list/index.mjs +3 -0
  82. package/lib/components/list/index.mjs.map +1 -0
  83. package/lib/components/loading/YSpinnerRing.mjs +25 -0
  84. package/lib/components/loading/YSpinnerRing.mjs.map +1 -0
  85. package/{src/components/ring-spinner/y-ring-spinner.scss → lib/components/loading/YSpinnerRing.scss} +3 -3
  86. package/lib/components/loading/index.mjs +2 -0
  87. package/lib/components/loading/index.mjs.map +1 -0
  88. package/lib/components/menu/YMenu.mjs +239 -0
  89. package/lib/components/menu/YMenu.mjs.map +1 -0
  90. package/lib/components/menu/YMenu.scss +7 -0
  91. package/lib/components/menu/index.mjs +2 -0
  92. package/lib/components/menu/index.mjs.map +1 -0
  93. package/lib/components/navigation/YNavigation.mjs +17 -0
  94. package/lib/components/navigation/YNavigation.mjs.map +1 -0
  95. package/lib/components/navigation/index.mjs +2 -0
  96. package/lib/components/navigation/index.mjs.map +1 -0
  97. package/lib/components/pagination/YPagination.mjs +61 -0
  98. package/lib/components/pagination/YPagination.mjs.map +1 -0
  99. package/lib/components/pagination/YPagination.scss +5 -0
  100. package/lib/components/pagination/index.mjs +2 -0
  101. package/lib/components/pagination/index.mjs.map +1 -0
  102. package/lib/components/panel/YDividePanel.mjs +89 -0
  103. package/lib/components/panel/YDividePanel.mjs.map +1 -0
  104. package/lib/components/panel/YDividePanel.scss +43 -0
  105. package/lib/components/panel/index.mjs +2 -0
  106. package/lib/components/panel/index.mjs.map +1 -0
  107. package/lib/components/plate/YPlate.mjs +27 -0
  108. package/lib/components/plate/YPlate.mjs.map +1 -0
  109. package/lib/components/plate/YPlate.scss +9 -0
  110. package/lib/components/plate/index.mjs +2 -0
  111. package/lib/components/plate/index.mjs.map +1 -0
  112. package/lib/components/progress-bar/YProgressBar.mjs +110 -0
  113. package/lib/components/progress-bar/YProgressBar.mjs.map +1 -0
  114. package/lib/components/progress-bar/YProgressBar.scss +40 -0
  115. package/lib/components/progress-bar/index.mjs +2 -0
  116. package/lib/components/progress-bar/index.mjs.map +1 -0
  117. package/lib/components/snackbar/YSnackbar.mjs +187 -0
  118. package/lib/components/snackbar/YSnackbar.mjs.map +1 -0
  119. package/lib/components/snackbar/YSnackbar.scss +38 -0
  120. package/lib/components/snackbar/index.mjs +2 -0
  121. package/lib/components/snackbar/index.mjs.map +1 -0
  122. package/lib/components/switch/YSwitch.mjs +228 -0
  123. package/lib/components/switch/YSwitch.mjs.map +1 -0
  124. package/{src/components/switch/y-switch.scss → lib/components/switch/YSwitch.scss} +18 -26
  125. package/lib/components/switch/index.mjs +2 -0
  126. package/lib/components/switch/index.mjs.map +1 -0
  127. package/lib/components/table/YDataTable.mjs +46 -0
  128. package/lib/components/table/YDataTable.mjs.map +1 -0
  129. package/lib/components/table/YDataTableBody.mjs +12 -0
  130. package/lib/components/table/YDataTableBody.mjs.map +1 -0
  131. package/lib/components/table/YDataTableCell.mjs +55 -0
  132. package/lib/components/table/YDataTableCell.mjs.map +1 -0
  133. package/lib/components/table/YDataTableControl.mjs +37 -0
  134. package/lib/components/table/YDataTableControl.mjs.map +1 -0
  135. package/lib/components/table/YDataTableControl.scss +6 -0
  136. package/lib/components/table/YDataTableHead.mjs +12 -0
  137. package/lib/components/table/YDataTableHead.mjs.map +1 -0
  138. package/lib/components/table/YDataTableLayer.mjs +14 -0
  139. package/lib/components/table/YDataTableLayer.mjs.map +1 -0
  140. package/lib/components/table/YDataTableRow.mjs +12 -0
  141. package/lib/components/table/YDataTableRow.mjs.map +1 -0
  142. package/lib/components/table/YDataTableServer.mjs +54 -0
  143. package/lib/components/table/YDataTableServer.mjs.map +1 -0
  144. package/lib/components/table/YTable.mjs +53 -0
  145. package/lib/components/table/YTable.mjs.map +1 -0
  146. package/lib/components/table/YTable.scss +61 -0
  147. package/lib/components/table/index.mjs +4 -0
  148. package/lib/components/table/index.mjs.map +1 -0
  149. package/lib/components/table/pagination.mjs +21 -0
  150. package/lib/components/table/pagination.mjs.map +1 -0
  151. package/lib/components/text-highlighter/YTextHighlighter.mjs +94 -0
  152. package/lib/components/text-highlighter/YTextHighlighter.mjs.map +1 -0
  153. package/lib/components/text-highlighter/index.mjs +3 -0
  154. package/lib/components/text-highlighter/index.mjs.map +1 -0
  155. package/lib/components/tooltip/YTooltip.mjs +209 -0
  156. package/lib/components/tooltip/YTooltip.mjs.map +1 -0
  157. package/lib/components/tooltip/YTooltip.scss +19 -0
  158. package/lib/components/tooltip/index.mjs +2 -0
  159. package/lib/components/tooltip/index.mjs.map +1 -0
  160. package/lib/components/transitions/expand-transition.mjs +88 -0
  161. package/lib/components/transitions/expand-transition.mjs.map +1 -0
  162. package/lib/components/transitions/index.mjs +4 -0
  163. package/lib/components/transitions/index.mjs.map +1 -0
  164. package/lib/components/tree-view/YTreeView.mjs +92 -0
  165. package/lib/components/tree-view/YTreeView.mjs.map +1 -0
  166. package/lib/components/tree-view/YTreeView.scss +46 -0
  167. package/lib/components/tree-view/YTreeViewNode.mjs +122 -0
  168. package/lib/components/tree-view/YTreeViewNode.mjs.map +1 -0
  169. package/lib/components/tree-view/index.mjs +3 -0
  170. package/lib/components/tree-view/index.mjs.map +1 -0
  171. package/lib/composables/collections.mjs +2 -0
  172. package/lib/composables/collections.mjs.map +1 -0
  173. package/lib/composables/communication.mjs +46 -0
  174. package/lib/composables/communication.mjs.map +1 -0
  175. package/lib/composables/component.mjs +8 -0
  176. package/lib/composables/component.mjs.map +1 -0
  177. package/{src/composables/layer-group.ts → lib/composables/layer-group.mjs} +8 -10
  178. package/lib/composables/layer-group.mjs.map +1 -0
  179. package/lib/composables/layout.mjs +13 -0
  180. package/lib/composables/layout.mjs.map +1 -0
  181. package/lib/composables/levitation.mjs +135 -0
  182. package/lib/composables/levitation.mjs.map +1 -0
  183. package/{src/composables/progress.ts → lib/composables/progress.mjs} +6 -5
  184. package/lib/composables/progress.mjs.map +1 -0
  185. package/lib/composables/resize-observer.mjs +34 -0
  186. package/lib/composables/resize-observer.mjs.map +1 -0
  187. package/lib/composables/scope.mjs +27 -0
  188. package/lib/composables/scope.mjs.map +1 -0
  189. package/lib/composables/theme/index.mjs +49 -0
  190. package/lib/composables/theme/index.mjs.map +1 -0
  191. package/lib/composables/theme/setting.mjs +46 -0
  192. package/lib/composables/theme/setting.mjs.map +1 -0
  193. package/lib/composables/timing.mjs +77 -0
  194. package/lib/composables/timing.mjs.map +1 -0
  195. package/lib/composables/transition.mjs +50 -0
  196. package/lib/composables/transition.mjs.map +1 -0
  197. package/lib/directives/complement-click/index.mjs +78 -0
  198. package/lib/directives/complement-click/index.mjs.map +1 -0
  199. package/{src/directives/plate-wave/index.ts → lib/directives/plate-wave/index.mjs} +25 -42
  200. package/lib/directives/plate-wave/index.mjs.map +1 -0
  201. package/{src → lib}/directives/plate-wave/plate-wave.scss +1 -1
  202. package/lib/directives/theme-class.mjs +24 -0
  203. package/lib/directives/theme-class.mjs.map +1 -0
  204. package/lib/etc/index.mjs +6 -0
  205. package/lib/etc/index.mjs.map +1 -0
  206. package/lib/index.mjs +55 -0
  207. package/lib/index.mjs.map +1 -0
  208. package/{src/mixins/di.ts → lib/mixins/di.mjs} +7 -8
  209. package/lib/mixins/di.mjs.map +1 -0
  210. package/{src/mixins/rebind-attrs.ts → lib/mixins/rebind-attrs.mjs} +9 -8
  211. package/lib/mixins/rebind-attrs.mjs.map +1 -0
  212. package/{src/styles/palette.scss → lib/styles/_palette.scss} +0 -4
  213. package/lib/styles/base.scss +95 -0
  214. package/lib/styles/settings/_variables.scss +14 -0
  215. package/lib/styles/settings/provided.scss +35 -0
  216. package/lib/styles/theme/dark.scss +21 -0
  217. package/{src → lib}/styles/theme/index.scss +0 -3
  218. package/lib/styles/theme/light.scss +21 -0
  219. package/lib/util/FrameScheduler.mjs +29 -0
  220. package/lib/util/FrameScheduler.mjs.map +1 -0
  221. package/lib/util/Rect.mjs +27 -0
  222. package/lib/util/Rect.mjs.map +1 -0
  223. package/lib/util/common.mjs +66 -0
  224. package/lib/util/common.mjs.map +1 -0
  225. package/lib/util/dom.mjs +8 -0
  226. package/lib/util/dom.mjs.map +1 -0
  227. package/lib/util/scroll.mjs +28 -0
  228. package/lib/util/scroll.mjs.map +1 -0
  229. package/lib/util/string.mjs +33 -0
  230. package/lib/util/string.mjs.map +1 -0
  231. package/lib/util/ui.mjs +83 -0
  232. package/lib/util/ui.mjs.map +1 -0
  233. package/lib/util/validation.mjs +5 -0
  234. package/lib/util/validation.mjs.map +1 -0
  235. package/lib/util/vue-component.mjs +64 -0
  236. package/lib/util/vue-component.mjs.map +1 -0
  237. package/package.json +62 -22
  238. package/types/components/app/YApp.d.ts +7 -0
  239. package/types/components/app/index.d.ts +1 -0
  240. package/types/components/button/YButton.d.ts +122 -0
  241. package/types/components/button/index.d.ts +1 -0
  242. package/types/components/card/YCard.d.ts +11 -0
  243. package/types/components/card/YCardBody.d.ts +2 -0
  244. package/types/components/card/YCardFooter.d.ts +2 -0
  245. package/types/components/card/YCardHeader.d.ts +2 -0
  246. package/types/components/card/index.d.ts +5 -0
  247. package/types/components/checkbox/YCheckbox.d.ts +46 -0
  248. package/types/components/checkbox/YInputCheckbox.d.ts +42 -0
  249. package/types/components/checkbox/index.d.ts +4 -0
  250. package/types/components/chip/YChip.d.ts +34 -0
  251. package/types/components/chip/index.d.ts +2 -0
  252. package/types/components/dialog/YDialog.d.ts +120 -0
  253. package/types/components/dialog/index.d.ts +1 -0
  254. package/types/components/field-input/YFieldInput.d.ts +118 -0
  255. package/types/components/field-input/index.d.ts +1 -0
  256. package/types/components/form/YForm.d.ts +32 -0
  257. package/types/components/form/index.d.ts +3 -0
  258. package/types/components/icons/YIconCheckbox.d.ts +1 -0
  259. package/types/components/icons/YIconClear.d.ts +1 -0
  260. package/types/components/icons/YIconExpand.d.ts +1 -0
  261. package/types/components/icons/index.d.ts +3 -0
  262. package/types/components/index.d.ts +23 -0
  263. package/types/components/input/YInput.d.ts +166 -0
  264. package/types/components/input/index.d.ts +1 -0
  265. package/types/components/layer/YLayer.d.ts +99 -0
  266. package/types/components/layer/index.d.ts +1 -0
  267. package/types/components/list/YList.d.ts +2 -0
  268. package/types/components/list/YListItem.d.ts +28 -0
  269. package/types/components/list/index.d.ts +2 -0
  270. package/types/components/loading/YSpinnerRing.d.ts +1 -0
  271. package/types/components/loading/index.d.ts +1 -0
  272. package/types/components/menu/YMenu.d.ts +236 -0
  273. package/types/components/menu/index.d.ts +1 -0
  274. package/types/components/pagination/YPagination.d.ts +106 -0
  275. package/types/components/pagination/index.d.ts +1 -0
  276. package/types/components/panel/YDividePanel.d.ts +3 -0
  277. package/types/components/panel/index.d.ts +1 -0
  278. package/types/components/plate/YPlate.d.ts +10 -0
  279. package/types/components/plate/index.d.ts +1 -0
  280. package/types/components/progress-bar/YProgressBar.d.ts +59 -0
  281. package/types/components/progress-bar/index.d.ts +1 -0
  282. package/types/components/snackbar/YSnackbar.d.ts +77 -0
  283. package/types/components/snackbar/index.d.ts +1 -0
  284. package/types/components/switch/YSwitch.d.ts +106 -0
  285. package/types/components/switch/index.d.ts +1 -0
  286. package/types/components/table/YDataTable.d.ts +63 -0
  287. package/types/components/table/YDataTableBody.d.ts +2 -0
  288. package/types/components/table/YDataTableControl.d.ts +2 -0
  289. package/types/components/table/YDataTableHead.d.ts +2 -0
  290. package/types/components/table/YDataTableLayer.d.ts +2 -0
  291. package/types/components/table/YDataTableServer.d.ts +82 -0
  292. package/types/components/table/YTable.d.ts +32 -0
  293. package/types/components/table/index.d.ts +3 -0
  294. package/types/components/table/pagination.d.ts +38 -0
  295. package/types/components/tooltip/YTooltip.d.ts +188 -0
  296. package/types/components/tooltip/index.d.ts +1 -0
  297. package/types/components/transitions/expand-transition.d.ts +16 -0
  298. package/types/components/transitions/index.d.ts +32 -0
  299. package/types/components/tree-view/YTreeView.d.ts +37 -0
  300. package/types/components/tree-view/YTreeViewNode.d.ts +51 -0
  301. package/types/components/tree-view/index.d.ts +2 -0
  302. package/types/composables/communication.d.ts +1 -0
  303. package/types/composables/component.d.ts +2 -0
  304. package/types/composables/layer-group.d.ts +5 -0
  305. package/types/composables/progress.d.ts +3 -0
  306. package/types/composables/resize-observer.d.ts +14 -0
  307. package/types/composables/scope.d.ts +2 -0
  308. package/types/composables/theme/index.d.ts +15 -0
  309. package/types/composables/theme/setting.d.ts +12 -0
  310. package/types/composables/timing.d.ts +15 -0
  311. package/types/composables/transition.d.ts +21 -0
  312. package/types/directives/complement-click/index.d.ts +25 -0
  313. package/types/directives/plate-wave/index.d.ts +13 -0
  314. package/types/directives/theme-class.d.ts +3 -0
  315. package/types/etc/index.d.ts +1 -0
  316. package/types/globals.d.ts +11 -0
  317. package/types/index.d.ts +9 -0
  318. package/types/mixins/di.d.ts +2 -0
  319. package/types/mixins/rebind-attrs.d.ts +5 -0
  320. package/types/shims.d.ts +71 -0
  321. package/types/util/common.d.ts +8 -0
  322. package/types/util/dom.d.ts +1 -0
  323. package/types/util/string.d.ts +3 -0
  324. package/types/util/ui.d.ts +9 -0
  325. package/types/util/vue-component.d.ts +33 -0
  326. package/types/vite-env.d.ts +1 -0
  327. package/src/components/button/index.ts +0 -3
  328. package/src/components/button/y-btn.ts +0 -104
  329. package/src/components/card/index.ts +0 -6
  330. package/src/components/card/y-card-body.ts +0 -8
  331. package/src/components/card/y-card-footer.ts +0 -8
  332. package/src/components/card/y-card-header.ts +0 -8
  333. package/src/components/card/y-card.ts +0 -16
  334. package/src/components/checkbox/IconCheckbox.vue +0 -24
  335. package/src/components/checkbox/YCheckbox.vue +0 -113
  336. package/src/components/checkbox/YInputCheckbox.vue +0 -108
  337. package/src/components/checkbox/index.ts +0 -8
  338. package/src/components/chip/index.ts +0 -3
  339. package/src/components/dialog/index.ts +0 -3
  340. package/src/components/dialog/y-dialog.vue +0 -46
  341. package/src/components/field-input/index.scss +0 -5
  342. package/src/components/field-input/index.ts +0 -11
  343. package/src/components/field-input/y-field-input.ts +0 -214
  344. package/src/components/form/index.ts +0 -9
  345. package/src/components/form/y-form.ts +0 -93
  346. package/src/components/icons/icon-clearable.ts +0 -6
  347. package/src/components/index.ts +0 -17
  348. package/src/components/input/index.scss +0 -5
  349. package/src/components/input/index.ts +0 -9
  350. package/src/components/input/y-input.ts +0 -368
  351. package/src/components/layer/index.ts +0 -3
  352. package/src/components/layer/y-layer.vue +0 -146
  353. package/src/components/lottie-player.ts +0 -41
  354. package/src/components/progress-bar/index.ts +0 -3
  355. package/src/components/progress-bar/y-progress-bar.vue +0 -144
  356. package/src/components/ring-spinner/y-ring-spinner.vue +0 -31
  357. package/src/components/switch/YSwitch.vue +0 -217
  358. package/src/components/switch/index.scss +0 -5
  359. package/src/components/switch/index.ts +0 -11
  360. package/src/components/text-highlighter/index.scss +0 -5
  361. package/src/components/text-highlighter/index.ts +0 -3
  362. package/src/components/text-highlighter/y-text-highlighter.ts +0 -89
  363. package/src/composables/lazy.ts +0 -30
  364. package/src/composables/theme.ts +0 -25
  365. package/src/directives/complement-click/index.ts +0 -123
  366. package/src/directives/theme-class.ts +0 -14
  367. package/src/file-extension.d.ts +0 -14
  368. package/src/index.ts +0 -21
  369. package/src/styles/base.scss +0 -28
  370. package/src/styles/theme/dark.scss +0 -35
  371. package/src/styles/theme/light.scss +0 -32
  372. package/src/util/common.ts +0 -59
  373. package/src/util/date-time.ts +0 -41
  374. package/src/util/dom.ts +0 -6
  375. package/src/util/string.ts +0 -9
  376. package/src/util/ui.ts +0 -39
  377. package/src/util/validation.ts +0 -9
  378. package/src/util/vue-component.ts +0 -18
  379. /package/{src/components/card/y-card.scss → lib/components/card/YCard.scss} +0 -0
  380. /package/{src/components/checkbox/y-checkbox.scss → lib/components/checkbox/YCheckbox.scss} +0 -0
  381. /package/{src/components/dialog/y-dialog.scss → lib/components/dialog/YDialog.scss} +0 -0
  382. /package/{src/components/layer/y-layer.scss → lib/components/layer/YLayer.scss} +0 -0
  383. /package/{src/components/text-highlighter/y-text-highlighter.scss → lib/components/text-highlighter/YTextHighlighter.scss} +0 -0
  384. /package/{src/styles/variables.scss → lib/styles/_variables.scss} +0 -0
  385. /package/{src → lib}/styles/util/helper.scss +0 -0
  386. /package/{src → lib}/styles/util/theme.scss +0 -0
@@ -0,0 +1,132 @@
1
+ import { effectScope, nextTick, onScopeDispose, watchEffect } from 'vue';
2
+ import { FrameScheduler } from "../../util/FrameScheduler.mjs";
3
+ import { getScrollParents, hasScrollbar } from "../../util/scroll.mjs";
4
+ import { toStyleSizeValue } from "../../util/ui.mjs";
5
+ import { propsFactory } from "../../util/vue-component.mjs";
6
+ const frameScheduler = new FrameScheduler();
7
+ const scrollStrategies = {
8
+ none: null,
9
+ close: closeScrollStrategy,
10
+ block: blockScrollStrategy,
11
+ reposition: repositionScrollStrategy
12
+ };
13
+ export const pressScrollStrategyProps = propsFactory({
14
+ scrollStrategy: {
15
+ type: [String, Function],
16
+ default: 'block',
17
+ validator: val => typeof val === 'function' || val in scrollStrategies
18
+ }
19
+ }, 'YLayer__scroll-strategies');
20
+ export function useScrollStrategies(props, data) {
21
+ let scope;
22
+ watchEffect(async () => {
23
+ scope?.stop();
24
+ if (!(data.active.value && props.scrollStrategy)) return;
25
+ scope = effectScope();
26
+ await nextTick();
27
+ scope.active && scope.run(() => {
28
+ if (typeof props.scrollStrategy === 'function') {
29
+ props.scrollStrategy(data, props, scope);
30
+ } else {
31
+ scrollStrategies[props.scrollStrategy]?.(data, props, scope);
32
+ }
33
+ });
34
+ });
35
+ onScopeDispose(() => {
36
+ scope?.stop();
37
+ });
38
+ }
39
+ function closeScrollStrategy(data) {
40
+ function onScroll(e) {
41
+ data.active.value = false;
42
+ }
43
+ bindScroll(data.baseEl.value ?? data.contentEl.value, onScroll);
44
+ }
45
+ const BLOCKER_LAYER_CLASS = 'y-layer--scroll-blocked';
46
+ const BLOCKER_CLASS = 'y-layer-scroll-blocked';
47
+ const BLOCKER_SCROLL_X_VAR = '--y-body-scroll-x';
48
+ const BLOCKER_SCROLL_Y_VAR = '--y-body-scroll-y';
49
+ const BLOCKER_SCROLL_OFFSET_VAR = '--y-scrollbar-offset';
50
+ function blockScrollStrategy(data, props) {
51
+ const offsetParent = data.root.value?.offsetParent;
52
+ const scrollElements = [...new Set([...getScrollParents(data.baseEl.value, props.contained ? offsetParent : undefined), ...getScrollParents(data.contentEl.value, props.contained ? offsetParent : undefined)])].filter(el => !el.classList.contains(BLOCKER_CLASS));
53
+ const scrollbarWidth = window.innerWidth - document.documentElement.offsetWidth;
54
+ const scrollableParent = (el => hasScrollbar(el) && el)(offsetParent || document.documentElement);
55
+ if (scrollableParent) {
56
+ data.root.value.classList.add(BLOCKER_LAYER_CLASS);
57
+ }
58
+ scrollElements.forEach((el, i) => {
59
+ el.style.setProperty(BLOCKER_SCROLL_X_VAR, toStyleSizeValue(-el.scrollLeft) ?? null);
60
+ el.style.setProperty(BLOCKER_SCROLL_Y_VAR, toStyleSizeValue(-el.scrollTop) ?? null);
61
+ el.style.setProperty(BLOCKER_SCROLL_OFFSET_VAR, toStyleSizeValue(scrollbarWidth) ?? null);
62
+ el.classList.add(BLOCKER_LAYER_CLASS);
63
+ });
64
+ onScopeDispose(() => {
65
+ scrollElements.forEach((el, i) => {
66
+ const x = parseFloat(el.style.getPropertyValue(BLOCKER_SCROLL_X_VAR));
67
+ const y = parseFloat(el.style.getPropertyValue(BLOCKER_SCROLL_Y_VAR));
68
+ el.style.removeProperty(BLOCKER_SCROLL_X_VAR);
69
+ el.style.removeProperty(BLOCKER_SCROLL_Y_VAR);
70
+ el.style.removeProperty(BLOCKER_SCROLL_OFFSET_VAR);
71
+ el.classList.remove(BLOCKER_CLASS);
72
+ el.scrollLeft = -x;
73
+ el.scrollTop = -y;
74
+ });
75
+ if (scrollableParent) {
76
+ data.root.value.classList.remove(BLOCKER_LAYER_CLASS);
77
+ }
78
+ });
79
+ }
80
+ function repositionScrollStrategy(data, props, scope) {
81
+ let slow = false;
82
+ let raf = -1;
83
+ let ric = -1;
84
+ function update(e) {
85
+ frameScheduler.requestNewFrame(() => {
86
+ const start = performance.now();
87
+ data.updateLevitation.value?.(e);
88
+ const time = performance.now() - start;
89
+ slow = time / (1000 / 60) > 2;
90
+ });
91
+ }
92
+ ric = (typeof requestIdleCallback === 'undefined' ? cb => cb() : requestIdleCallback)(() => {
93
+ scope.run(() => {
94
+ bindScroll(data.baseEl.value ?? data.contentEl.value, e => {
95
+ if (slow) {
96
+ // If the position calculation is slow,
97
+ // defer updates until scrolling is finished.
98
+ // Browsers usually fire one scroll event per frame so
99
+ // we just wait until we've got two frames without an event
100
+ cancelAnimationFrame(raf);
101
+ raf = requestAnimationFrame(() => {
102
+ raf = requestAnimationFrame(() => {
103
+ update(e);
104
+ });
105
+ });
106
+ } else {
107
+ update(e);
108
+ }
109
+ });
110
+ });
111
+ });
112
+ onScopeDispose(() => {
113
+ typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(ric);
114
+ cancelAnimationFrame(raf);
115
+ });
116
+ }
117
+
118
+ /** @private */
119
+ function bindScroll(el, onScroll) {
120
+ const scrollElements = [document, ...getScrollParents(el)];
121
+ scrollElements.forEach(el => {
122
+ el.addEventListener('scroll', onScroll, {
123
+ passive: true
124
+ });
125
+ });
126
+ onScopeDispose(() => {
127
+ scrollElements.forEach(el => {
128
+ el.removeEventListener('scroll', onScroll);
129
+ });
130
+ });
131
+ }
132
+ //# sourceMappingURL=scroll-strategies.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll-strategies.mjs","names":["effectScope","nextTick","onScopeDispose","watchEffect","FrameScheduler","getScrollParents","hasScrollbar","toStyleSizeValue","propsFactory","frameScheduler","scrollStrategies","none","close","closeScrollStrategy","block","blockScrollStrategy","reposition","repositionScrollStrategy","pressScrollStrategyProps","scrollStrategy","type","String","Function","default","validator","val","useScrollStrategies","props","data","scope","stop","active","value","run","onScroll","e","bindScroll","baseEl","contentEl","BLOCKER_LAYER_CLASS","BLOCKER_CLASS","BLOCKER_SCROLL_X_VAR","BLOCKER_SCROLL_Y_VAR","BLOCKER_SCROLL_OFFSET_VAR","offsetParent","root","scrollElements","Set","contained","undefined","filter","el","classList","contains","scrollbarWidth","window","innerWidth","document","documentElement","offsetWidth","scrollableParent","add","forEach","i","style","setProperty","scrollLeft","scrollTop","x","parseFloat","getPropertyValue","y","removeProperty","remove","slow","raf","ric","update","requestNewFrame","start","performance","now","updateLevitation","time","requestIdleCallback","cb","cancelAnimationFrame","requestAnimationFrame","cancelIdleCallback","addEventListener","passive","removeEventListener"],"sources":["../../../src/components/layer/scroll-strategies.ts"],"sourcesContent":["import type { EffectScope, PropType, Ref } from 'vue';\nimport { effectScope, nextTick, onScopeDispose, watchEffect } from 'vue';\n\nimport { FrameScheduler } from '../../util/FrameScheduler';\nimport { getScrollParents, hasScrollbar } from '../../util/scroll';\nimport { toStyleSizeValue } from '../../util/ui';\nimport { propsFactory } from '../../util/vue-component';\n\nconst frameScheduler = new FrameScheduler();\n\nexport interface ScrollStrategyData {\n root: Ref<HTMLElement | undefined>;\n contentEl: Ref<HTMLElement | undefined>;\n baseEl: Ref<HTMLElement | undefined>;\n active: Ref<boolean>;\n updateLevitation: Ref<((e: Event) => void) | undefined>;\n}\n\ntype ScrollStrategyFn = (\n data: ScrollStrategyData,\n props: StrategyProps,\n scope: EffectScope,\n) => void;\n\nconst scrollStrategies = {\n none: null,\n close: closeScrollStrategy,\n block: blockScrollStrategy,\n reposition: repositionScrollStrategy,\n};\n\nexport interface StrategyProps {\n scrollStrategy: keyof typeof scrollStrategies | ScrollStrategyFn;\n contained: boolean | undefined;\n}\n\nexport const pressScrollStrategyProps = propsFactory(\n {\n scrollStrategy: {\n type: [String, Function] as PropType<StrategyProps['scrollStrategy']>,\n default: 'block',\n validator: (val: any) =>\n typeof val === 'function' || val in scrollStrategies,\n },\n },\n 'YLayer__scroll-strategies',\n);\n\nexport function useScrollStrategies(\n props: StrategyProps,\n data: ScrollStrategyData,\n) {\n let scope: EffectScope | undefined;\n watchEffect(async () => {\n scope?.stop();\n\n if (!(data.active.value && props.scrollStrategy)) return;\n\n scope = effectScope();\n await nextTick();\n scope.active &&\n scope.run(() => {\n if (typeof props.scrollStrategy === 'function') {\n props.scrollStrategy(data, props, scope!);\n } else {\n scrollStrategies[props.scrollStrategy]?.(data, props, scope!);\n }\n });\n });\n\n onScopeDispose(() => {\n scope?.stop();\n });\n}\n\nfunction closeScrollStrategy(data: ScrollStrategyData) {\n function onScroll(e: Event) {\n data.active.value = false;\n }\n\n bindScroll(data.baseEl.value ?? data.contentEl.value, onScroll);\n}\n\nconst BLOCKER_LAYER_CLASS = 'y-layer--scroll-blocked';\nconst BLOCKER_CLASS = 'y-layer-scroll-blocked';\nconst BLOCKER_SCROLL_X_VAR = '--y-body-scroll-x';\nconst BLOCKER_SCROLL_Y_VAR = '--y-body-scroll-y';\nconst BLOCKER_SCROLL_OFFSET_VAR = '--y-scrollbar-offset';\n\nfunction blockScrollStrategy(data: ScrollStrategyData, props: StrategyProps) {\n const offsetParent = data.root.value?.offsetParent;\n const scrollElements = [\n ...new Set([\n ...getScrollParents(\n data.baseEl.value,\n props.contained ? offsetParent : undefined,\n ),\n ...getScrollParents(\n data.contentEl.value,\n props.contained ? offsetParent : undefined,\n ),\n ]),\n ].filter((el) => !el.classList.contains(BLOCKER_CLASS));\n const scrollbarWidth =\n window.innerWidth - document.documentElement.offsetWidth;\n\n const scrollableParent = ((el) => hasScrollbar(el) && el)(\n offsetParent || document.documentElement,\n );\n if (scrollableParent) {\n data.root.value!.classList.add(BLOCKER_LAYER_CLASS);\n }\n\n scrollElements.forEach((el, i) => {\n el.style.setProperty(\n BLOCKER_SCROLL_X_VAR,\n toStyleSizeValue(-el.scrollLeft) ?? null,\n );\n el.style.setProperty(\n BLOCKER_SCROLL_Y_VAR,\n toStyleSizeValue(-el.scrollTop) ?? null,\n );\n el.style.setProperty(\n BLOCKER_SCROLL_OFFSET_VAR,\n toStyleSizeValue(scrollbarWidth) ?? null,\n );\n el.classList.add(BLOCKER_LAYER_CLASS);\n });\n\n onScopeDispose(() => {\n scrollElements.forEach((el, i) => {\n const x = parseFloat(el.style.getPropertyValue(BLOCKER_SCROLL_X_VAR));\n const y = parseFloat(el.style.getPropertyValue(BLOCKER_SCROLL_Y_VAR));\n\n el.style.removeProperty(BLOCKER_SCROLL_X_VAR);\n el.style.removeProperty(BLOCKER_SCROLL_Y_VAR);\n el.style.removeProperty(BLOCKER_SCROLL_OFFSET_VAR);\n el.classList.remove(BLOCKER_CLASS);\n\n el.scrollLeft = -x;\n el.scrollTop = -y;\n });\n if (scrollableParent) {\n data.root.value!.classList.remove(BLOCKER_LAYER_CLASS);\n }\n });\n}\n\nfunction repositionScrollStrategy(\n data: ScrollStrategyData,\n props: StrategyProps,\n scope: EffectScope,\n) {\n let slow = false;\n let raf = -1;\n let ric = -1;\n\n function update(e: Event) {\n frameScheduler.requestNewFrame(() => {\n const start = performance.now();\n data.updateLevitation.value?.(e);\n const time = performance.now() - start;\n slow = time / (1000 / 60) > 2;\n });\n }\n\n ric = (\n typeof requestIdleCallback === 'undefined'\n ? (cb: Function) => cb()\n : requestIdleCallback\n )(() => {\n scope.run(() => {\n bindScroll(data.baseEl.value ?? data.contentEl.value, (e) => {\n if (slow) {\n // If the position calculation is slow,\n // defer updates until scrolling is finished.\n // Browsers usually fire one scroll event per frame so\n // we just wait until we've got two frames without an event\n cancelAnimationFrame(raf);\n raf = requestAnimationFrame(() => {\n raf = requestAnimationFrame(() => {\n update(e);\n });\n });\n } else {\n update(e);\n }\n });\n });\n });\n\n onScopeDispose(() => {\n typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(ric);\n cancelAnimationFrame(raf);\n });\n}\n\n/** @private */\nfunction bindScroll(el: HTMLElement | undefined, onScroll: (e: Event) => void) {\n const scrollElements = [document, ...getScrollParents(el)];\n scrollElements.forEach((el) => {\n el.addEventListener('scroll', onScroll, { passive: true });\n });\n\n onScopeDispose(() => {\n scrollElements.forEach((el) => {\n el.removeEventListener('scroll', onScroll);\n });\n });\n}\n"],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { createVNode as _createVNode, Fragment as _Fragment } from "vue";
2
+ import { defineComponent } from 'vue';
3
+ import { useRender } from "../../composables/component.mjs";
4
+ import "./YList.scss";
5
+ export const YList = defineComponent({
6
+ name: 'YList',
7
+ setup(props, _ref) {
8
+ let {
9
+ slots
10
+ } = _ref;
11
+ useRender(() => _createVNode(_Fragment, null, [_createVNode("div", {
12
+ "class": 'y-list'
13
+ }, [slots.default?.()])]));
14
+ }
15
+ });
16
+ //# sourceMappingURL=YList.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YList.mjs","names":["defineComponent","useRender","YList","name","setup","props","_ref","slots","_createVNode","_Fragment","default"],"sources":["../../../src/components/list/YList.tsx"],"sourcesContent":["import { defineComponent } from 'vue';\r\n\r\nimport { useRender } from '../../composables/component';\r\n\r\nimport './YList.scss';\r\n\r\nexport const YList = defineComponent({\r\n name: 'YList',\r\n setup(props, { slots }) {\r\n useRender(() => (\r\n <>\r\n <div class={'y-list'}>{slots.default?.()}</div>\r\n </>\r\n ));\r\n },\r\n});\r\n\r\nexport type YList = InstanceType<typeof YList>;\r\n"],"mappings":";AAAA,SAASA,eAAe,QAAQ,KAAK;AAAC,SAE7BC,SAAS;AAElB;AAEA,OAAO,MAAMC,KAAK,GAAGF,eAAe,CAAC;EACnCG,IAAI,EAAE,OAAO;EACbC,KAAKA,CAACC,KAAK,EAAAC,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpBL,SAAS,CAAC,MAAAO,YAAA,CAAAC,SAAA,SAAAD,YAAA;MAAA,SAEM;IAAQ,IAAGD,KAAK,CAACG,OAAO,GAAG,CAAC,IAE3C,CAAC;EACJ;AACF,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ .y-list {
2
+ //
3
+ }
@@ -0,0 +1,37 @@
1
+ import { createVNode as _createVNode } from "vue";
2
+ import { defineComponent } from 'vue';
3
+ import { useRender } from "../../composables/component.mjs";
4
+ import { propsFactory } from "../../util/vue-component.mjs";
5
+ import "./YListItem.scss";
6
+ export const pressYListItemProps = propsFactory({
7
+ tag: {
8
+ type: String,
9
+ default: 'div'
10
+ }
11
+ }, 'y-list-item');
12
+ export const YListItem = defineComponent({
13
+ name: 'YListItem',
14
+ props: {
15
+ ...pressYListItemProps()
16
+ },
17
+ setup(props, _ref) {
18
+ let {
19
+ slots
20
+ } = _ref;
21
+ useRender(() => {
22
+ const ElTag = props.tag;
23
+ return _createVNode(ElTag, {
24
+ "class": ['y-list-item']
25
+ }, {
26
+ default: () => [slots.prepend && _createVNode("div", {
27
+ "class": 'y-list-item__prepend'
28
+ }, [slots.prepend()]), _createVNode("div", {
29
+ "class": 'y-list-item__content'
30
+ }, [slots.default?.()]), slots.append && _createVNode("div", {
31
+ "class": 'y-list-item__append'
32
+ }, [slots.append()])]
33
+ });
34
+ });
35
+ }
36
+ });
37
+ //# sourceMappingURL=YListItem.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YListItem.mjs","names":["defineComponent","useRender","propsFactory","pressYListItemProps","tag","type","String","default","YListItem","name","props","setup","_ref","slots","ElTag","_createVNode","prepend","append"],"sources":["../../../src/components/list/YListItem.tsx"],"sourcesContent":["import { defineComponent } from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport { propsFactory } from '../../util/vue-component';\nimport './YListItem.scss';\n\nexport const pressYListItemProps = propsFactory({\n tag: {\n type: String,\n default: 'div',\n },\n}, 'y-list-item');\n\nexport const YListItem = defineComponent({\n name: 'YListItem',\n props: {\n ...pressYListItemProps(),\n },\n setup(props, { slots }) {\n useRender(() => {\n const ElTag = props.tag as keyof HTMLElementTagNameMap;\n return (\n <ElTag class={['y-list-item']}>\n {slots.prepend && (\n <div class={'y-list-item__prepend'}>{slots.prepend()}</div>\n )}\n <div class={'y-list-item__content'}>{slots.default?.()}</div>\n {slots.append && (\n <div class={'y-list-item__append'}>{slots.append()}</div>\n )}\n </ElTag>\n )\n });\n },\n});\n\nexport type YListItem = InstanceType<typeof YListItem>;\n"],"mappings":";AAAA,SAASA,eAAe,QAAQ,KAAK;AAAC,SAE7BC,SAAS;AAAA,SACTC,YAAY;AACrB;AAEA,OAAO,MAAMC,mBAAmB,GAAGD,YAAY,CAAC;EAC9CE,GAAG,EAAE;IACHC,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX;AACF,CAAC,EAAE,aAAa,CAAC;AAEjB,OAAO,MAAMC,SAAS,GAAGR,eAAe,CAAC;EACvCS,IAAI,EAAE,WAAW;EACjBC,KAAK,EAAE;IACL,GAAGP,mBAAmB,CAAC;EACzB,CAAC;EACDQ,KAAKA,CAACD,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpBX,SAAS,CAAC,MAAM;MACd,MAAMa,KAAK,GAAGJ,KAAK,CAACN,GAAkC;MACtD,OAAAW,YAAA,CAAAD,KAAA;QAAA,SACgB,CAAC,aAAa;MAAC;QAAAP,OAAA,EAAAA,CAAA,MAC1BM,KAAK,CAACG,OAAO,IAAAD,YAAA;UAAA,SACA;QAAsB,IAAGF,KAAK,CAACG,OAAO,CAAC,CAAC,EACrD,EAAAD,YAAA;UAAA,SACW;QAAsB,IAAGF,KAAK,CAACN,OAAO,GAAG,CAAC,IACrDM,KAAK,CAACI,MAAM,IAAAF,YAAA;UAAA,SACC;QAAqB,IAAGF,KAAK,CAACI,MAAM,CAAC,CAAC,EACnD;MAAA;IAGP,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
@@ -0,0 +1,59 @@
1
+ .y-list-item {
2
+ position: relative;
3
+ list-style: none;
4
+ padding: 8px;
5
+ border-radius: 8px;
6
+ display: flex;
7
+ align-items: center;
8
+ transition-duration: 0.24s;
9
+ transition-property: color;
10
+ transition-timing-function: cubic-bezier(0.17, 0.67, 0.16, 0.89);
11
+
12
+ > div {
13
+ position: relative;
14
+ }
15
+
16
+ &:before {
17
+ content: '';
18
+ position: absolute;
19
+ inset: 0;
20
+ border-radius: inherit;
21
+ color: inherit;
22
+ background-color: currentColor;
23
+ opacity: 0;
24
+ }
25
+
26
+ &:hover:before {
27
+ opacity: 0.14;
28
+ }
29
+
30
+ &--active#{&} {
31
+ font-weight: bold;
32
+
33
+ &:before {
34
+ opacity: 0.03;
35
+ }
36
+ }
37
+
38
+ &--link {
39
+ text-decoration: none;
40
+ cursor: pointer;
41
+ }
42
+
43
+ &--category:hover:before {
44
+ opacity: 0;
45
+ }
46
+
47
+ &__prepend {
48
+ }
49
+
50
+ &__content {
51
+ align-self: center;
52
+ }
53
+
54
+ &-icon {
55
+ width: 24px;
56
+ height: 24px;
57
+ min-width: 24px;
58
+ }
59
+ }
@@ -0,0 +1,3 @@
1
+ export * from "./YListItem.mjs";
2
+ export * from "./YList.mjs";
3
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/components/list/index.ts"],"sourcesContent":["export * from './YListItem';\r\nexport * from './YList';\r\n"],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import { createVNode as _createVNode } from "vue";
2
+ import { defineComponent } from 'vue';
3
+ import "./YSpinnerRing.scss";
4
+ const NAME = 'YSpinnerRing';
5
+ export const YSpinnerRing = defineComponent({
6
+ name: NAME,
7
+ render() {
8
+ return _createVNode("svg", {
9
+ "class": "y-spinner-ring",
10
+ "width": "48",
11
+ "height": "48",
12
+ "viewBox": "0 0 48 48",
13
+ "xmlns": "http://www.w3.org/2000/svg"
14
+ }, [_createVNode("circle", {
15
+ "class": "y-spinner-ring__circle",
16
+ "cx": "24",
17
+ "cy": "24",
18
+ "r": "18",
19
+ "stroke-width": "4",
20
+ "stroke-dasharray": "113.097",
21
+ "stroke-dashoffset": "113.097"
22
+ }, null)]);
23
+ }
24
+ });
25
+ //# sourceMappingURL=YSpinnerRing.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YSpinnerRing.mjs","names":["defineComponent","NAME","YSpinnerRing","name","render","_createVNode"],"sources":["../../../src/components/loading/YSpinnerRing.tsx"],"sourcesContent":["import { defineComponent } from 'vue';\n\nimport './YSpinnerRing.scss';\n\nconst NAME = 'YSpinnerRing';\n\nexport const YSpinnerRing = defineComponent({\n name: NAME,\n render() {\n return (\n <svg\n class=\"y-spinner-ring\"\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n class=\"y-spinner-ring__circle\"\n cx=\"24\"\n cy=\"24\"\n r=\"18\"\n stroke-width=\"4\"\n stroke-dasharray=\"113.097\"\n stroke-dashoffset=\"113.097\"\n />\n </svg>\n );\n },\n});\n"],"mappings":";AAAA,SAASA,eAAe,QAAQ,KAAK;AAErC;AAEA,MAAMC,IAAI,GAAG,cAAc;AAE3B,OAAO,MAAMC,YAAY,GAAGF,eAAe,CAAC;EAC1CG,IAAI,EAAEF,IAAI;EACVG,MAAMA,CAAA,EAAG;IACP,OAAAC,YAAA;MAAA,SAEU,gBAAgB;MAAA,SAChB,IAAI;MAAA,UACH,IAAI;MAAA,WACH,WAAW;MAAA,SACb;IAA4B,IAAAA,YAAA;MAAA,SAG1B,wBAAwB;MAAA,MAC3B,IAAI;MAAA,MACJ,IAAI;MAAA,KACL,IAAI;MAAA,gBACO,GAAG;MAAA,oBACC,SAAS;MAAA,qBACR;IAAS;EAInC;AACF,CAAC,CAAC"}
@@ -1,15 +1,15 @@
1
- .y-ring-spinner {
1
+ .y-spinner-ring {
2
2
  transform-origin: center;
3
3
  animation: rotate 2s linear infinite;
4
4
 
5
5
  &__circle {
6
6
  fill: none;
7
7
  stroke: currentColor;
8
- animation: ring-spinner-dash 1.4s cubic-bezier(0.27, 0.03, 0.5, 1.22)
8
+ animation: spinner-ring-dash 1.4s cubic-bezier(0.27, 0.03, 0.5, 1.22)
9
9
  infinite;
10
10
  }
11
11
  }
12
- @keyframes ring-spinner-dash {
12
+ @keyframes spinner-ring-dash {
13
13
  0% {
14
14
  stroke-dasharray: 1, 200;
15
15
  stroke-dashoffset: 0;
@@ -0,0 +1,2 @@
1
+ export * from "./YSpinnerRing.mjs";
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/components/loading/index.ts"],"sourcesContent":["export * from './YSpinnerRing';\n"],"mappings":""}
@@ -0,0 +1,239 @@
1
+ import { createVNode as _createVNode, Fragment as _Fragment } from "vue";
2
+ import { computed, defineComponent, mergeProps, nextTick, ref, toRef, watch, watchEffect } from 'vue';
3
+ import { useModelDuplex } from "../../composables/communication.mjs";
4
+ import { useRender } from "../../composables/component.mjs";
5
+ import { polyTransitionPropOptions } from "../../composables/transition.mjs";
6
+ import { toKebabCase } from "../../util/string.mjs";
7
+ import { bindClasses } from "../../util/vue-component.mjs";
8
+ import { YLayer } from "../layer/index.mjs";
9
+ import "./YMenu.scss";
10
+ import { toStyleSizeValue } from "../../util/ui.mjs";
11
+ const NAME = 'YMenu';
12
+ const CLASS_NAME = toKebabCase(NAME);
13
+ export const YMenuPropOptions = {
14
+ modelValue: {
15
+ type: Boolean,
16
+ default: false
17
+ },
18
+ menuClasses: {
19
+ type: [Array, String, Object]
20
+ },
21
+ disabled: {
22
+ type: Boolean,
23
+ default: false
24
+ },
25
+ position: {
26
+ type: String,
27
+ default: 'default'
28
+ },
29
+ align: {
30
+ type: String,
31
+ default: 'start'
32
+ },
33
+ openOnHover: {
34
+ type: Boolean,
35
+ default: false
36
+ },
37
+ closeOnClick: {
38
+ type: Boolean
39
+ },
40
+ preventClip: {
41
+ type: Boolean,
42
+ default: true
43
+ },
44
+ offsetY: {
45
+ type: [Number, String]
46
+ }
47
+ };
48
+
49
+ /**
50
+ * # Component
51
+ */
52
+ export const YMenu = defineComponent({
53
+ name: NAME,
54
+ props: {
55
+ ...YMenuPropOptions,
56
+ transition: {
57
+ ...polyTransitionPropOptions.transition,
58
+ default: 'fade'
59
+ }
60
+ },
61
+ emits: ['update:modelValue'],
62
+ setup(props, _ref) {
63
+ let {
64
+ slots,
65
+ emit,
66
+ expose
67
+ } = _ref;
68
+ const el$ = ref();
69
+ const base$ = ref();
70
+ const baseSlot = ref();
71
+ const baseEl = ref();
72
+ const contentEl = ref();
73
+ const classes = computed(() => {
74
+ const boundClasses = bindClasses(props.menuClasses);
75
+ return {
76
+ ...boundClasses,
77
+ 'y-menu': true
78
+ };
79
+ });
80
+ const model = useModelDuplex(props);
81
+ const active = computed({
82
+ get: () => {
83
+ return !!model.value;
84
+ },
85
+ set: v => {
86
+ if (!(v && props.disabled)) model.value = v;
87
+ }
88
+ });
89
+ const position = toRef(props, 'position');
90
+ const align = toRef(props, 'align');
91
+ const coordinate = ref();
92
+ const coordinateStyles = computed(() => {
93
+ return coordinate.value ?? {};
94
+ });
95
+ function computeCoordinates() {
96
+ const $base = baseEl.value;
97
+ const actived = active.value;
98
+ if ($base && actived) {
99
+ const $content = contentEl.value;
100
+ const rect = $base.getBoundingClientRect();
101
+ let top = rect.top;
102
+ let left = rect.left + rect.width / 2;
103
+ if ($content) {
104
+ if (position.value === 'top' || position.value === 'bottom') {
105
+ if (position.value === 'top') {
106
+ top -= $content.clientHeight;
107
+ top -= 8; // Offset
108
+ }
109
+
110
+ if (position.value === 'bottom') {
111
+ top += rect.height;
112
+ top += 8; // Offset
113
+ }
114
+ }
115
+
116
+ if (align.value === 'center') {
117
+ left -= $content.clientWidth / 2;
118
+ } else if (align.value === 'start') {
119
+ left = rect.left;
120
+ } else if (align.value === 'end') {
121
+ left = rect.right;
122
+ left -= $content.clientWidth;
123
+ }
124
+ }
125
+ if (props.offsetY) {
126
+ top += +props.offsetY;
127
+ }
128
+ return {
129
+ top: `${top}px`,
130
+ left: `${left}px`,
131
+ minWidth: toStyleSizeValue(rect.width)
132
+ };
133
+ }
134
+ return {};
135
+ }
136
+ const baseFromSlotEl = computed(() => {
137
+ return baseSlot.value?.[0]?.el;
138
+ });
139
+ watchEffect(() => {
140
+ if (!base$.value) {
141
+ baseEl.value = baseFromSlotEl.value;
142
+ return;
143
+ }
144
+ const base = base$.value;
145
+ baseEl.value = base$.value?.$el ? base$.value?.$el : base;
146
+ });
147
+ watch(active, neo => {
148
+ if (neo) {
149
+ nextTick(() => {
150
+ const $content = el$.value?.content$;
151
+ contentEl.value = $content;
152
+ coordinate.value = computeCoordinates();
153
+ });
154
+ }
155
+ });
156
+ function onMouseenter(e) {
157
+ if (props.openOnHover) {
158
+ active.value = true;
159
+ }
160
+ }
161
+ function onMouseleave(e) {
162
+ if (props.openOnHover) {
163
+ active.value = false;
164
+ }
165
+ }
166
+ function onClick(e) {
167
+ const currentActive = active.value;
168
+ if (!props.disabled) {
169
+ active.value = !currentActive;
170
+ }
171
+ }
172
+ function onComplementClick(e) {
173
+ if (active.value) {
174
+ active.value = false;
175
+ }
176
+ }
177
+ function bindHover(el) {
178
+ el.addEventListener('mouseenter', onMouseenter);
179
+ el.addEventListener('mouseleave', onMouseleave);
180
+ }
181
+ function unbindHover(el) {
182
+ el.removeEventListener('mouseenter', onMouseenter);
183
+ el.removeEventListener('mouseleave', onMouseleave);
184
+ }
185
+ watch(baseEl, (neo, old) => {
186
+ if (neo) {
187
+ bindHover(neo);
188
+ neo.addEventListener('click', onClick);
189
+ } else if (old) {
190
+ unbindHover(old);
191
+ old.removeEventListener('click', onClick);
192
+ }
193
+ });
194
+ useRender(() => {
195
+ const slotBase = slots.base?.({
196
+ active: active.value,
197
+ props: mergeProps({
198
+ ref: base$,
199
+ class: {
200
+ 'y-menu-base': true,
201
+ 'y-menu-base--active': active.value
202
+ }
203
+ })
204
+ });
205
+ baseSlot.value = slotBase;
206
+ return _createVNode(_Fragment, null, [slotBase, _createVNode(YLayer, {
207
+ "modelValue": active.value,
208
+ "onUpdate:modelValue": $event => active.value = $event,
209
+ "ref": el$,
210
+ "classes": classes.value,
211
+ "scrim": false,
212
+ "disabled": props.disabled,
213
+ "content-styles": {
214
+ ...coordinateStyles.value
215
+ },
216
+ "content-classes": ['y-menu__content'],
217
+ "transition": props.transition,
218
+ "onClick:complement": onComplementClick
219
+ }, {
220
+ default: function () {
221
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
222
+ args[_key] = arguments[_key];
223
+ }
224
+ return _createVNode(_Fragment, null, [slots.default?.(...args) ?? '']);
225
+ }
226
+ })]);
227
+ });
228
+ if (import.meta.env.DEV) {
229
+ return {
230
+ base$,
231
+ el$,
232
+ baseEl,
233
+ coordinatesStyles: coordinateStyles,
234
+ baseSlot
235
+ };
236
+ }
237
+ }
238
+ });
239
+ //# sourceMappingURL=YMenu.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YMenu.mjs","names":["computed","defineComponent","mergeProps","nextTick","ref","toRef","watch","watchEffect","useModelDuplex","useRender","polyTransitionPropOptions","toKebabCase","bindClasses","YLayer","toStyleSizeValue","NAME","CLASS_NAME","YMenuPropOptions","modelValue","type","Boolean","default","menuClasses","Array","String","Object","disabled","position","align","openOnHover","closeOnClick","preventClip","offsetY","Number","YMenu","name","props","transition","emits","setup","_ref","slots","emit","expose","el$","base$","baseSlot","baseEl","contentEl","classes","boundClasses","model","active","get","value","set","v","coordinate","coordinateStyles","computeCoordinates","$base","actived","$content","rect","getBoundingClientRect","top","left","width","clientHeight","height","clientWidth","right","minWidth","baseFromSlotEl","el","base","$el","neo","content$","onMouseenter","e","onMouseleave","onClick","currentActive","onComplementClick","bindHover","addEventListener","unbindHover","removeEventListener","old","slotBase","class","_createVNode","_Fragment","$event","_len","arguments","length","args","_key","import","meta","env","DEV","coordinatesStyles"],"sources":["../../../src/components/menu/YMenu.tsx"],"sourcesContent":["import type { CSSProperties, PropType } from 'vue';\nimport {\n computed,\n defineComponent,\n mergeProps,\n nextTick,\n ref,\n toRef,\n watch,\n watchEffect,\n} from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { polyTransitionPropOptions } from '../../composables/transition';\nimport { toKebabCase } from '../../util/string';\nimport { bindClasses } from '../../util/vue-component';\nimport { YLayer } from '../layer';\nimport './YMenu.scss';\nimport { toStyleSizeValue } from \"../../util/ui\";\n\nconst NAME = 'YMenu';\nconst CLASS_NAME = toKebabCase(NAME);\n\nexport const YMenuPropOptions = {\n modelValue: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n menuClasses: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n disabled: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n position: {\n type: String as PropType<'default' | 'top' | 'bottom' | 'left' | 'right'>,\n default: 'default',\n },\n align: {\n type: String as PropType<'center' | 'start' | 'end'>,\n default: 'start',\n },\n openOnHover: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n closeOnClick: {\n type: Boolean,\n },\n preventClip: {\n type: Boolean as PropType<boolean>,\n default: true,\n },\n offsetY: {\n type: [Number, String],\n }\n};\n\n/**\n * # Component\n */\nexport const YMenu = defineComponent({\n name: NAME,\n props: {\n ...YMenuPropOptions,\n transition: {\n ...polyTransitionPropOptions.transition,\n default: 'fade',\n },\n },\n emits: ['update:modelValue'],\n setup(props, { slots, emit, expose }) {\n const el$ = ref<typeof YLayer>();\n const base$ = ref();\n const baseSlot = ref();\n const baseEl = ref<HTMLElement>();\n const contentEl = ref<HTMLElement>();\n\n const classes = computed(() => {\n const boundClasses = bindClasses(props.menuClasses);\n return {\n ...boundClasses,\n 'y-menu': true,\n };\n });\n\n const model = useModelDuplex(props);\n\n const active = computed({\n get: (): boolean => {\n return !!model.value;\n },\n set: (v: boolean) => {\n if (!(v && props.disabled)) model.value = v;\n },\n });\n\n const position = toRef(props, 'position');\n const align = toRef(props, 'align');\n const coordinate = ref<CSSProperties>();\n const coordinateStyles = computed<CSSProperties>(() => {\n return coordinate.value ?? {};\n });\n\n function computeCoordinates() {\n const $base = baseEl.value;\n const actived = active.value;\n if ($base && actived) {\n const $content = contentEl.value;\n const rect = $base.getBoundingClientRect();\n\n let top = rect.top;\n let left = rect.left + rect.width / 2;\n if ($content) {\n if (position.value === 'top' || position.value === 'bottom') {\n if (position.value === 'top') {\n top -= $content.clientHeight;\n top -= 8; // Offset\n }\n if (position.value === 'bottom') {\n top += rect.height;\n top += 8; // Offset\n }\n }\n\n if (align.value === 'center') {\n left -= $content.clientWidth / 2;\n } else if (align.value === 'start') {\n left = rect.left;\n } else if (align.value === 'end') {\n left = rect.right;\n left -= $content.clientWidth;\n }\n }\n\n if (props.offsetY) {\n top += +(props.offsetY);\n }\n\n return {\n top: `${top}px`,\n left: `${left}px`,\n minWidth: toStyleSizeValue(rect.width),\n };\n }\n return {};\n }\n\n const baseFromSlotEl = computed(() => {\n return baseSlot.value?.[0]?.el;\n });\n\n watchEffect(() => {\n if (!base$.value) {\n baseEl.value = baseFromSlotEl.value;\n return;\n }\n const base = base$.value;\n baseEl.value = base$.value?.$el ? base$.value?.$el : base;\n });\n\n watch(active, (neo) => {\n if (neo) {\n nextTick(() => {\n const $content = el$.value?.content$;\n contentEl.value = $content;\n coordinate.value = computeCoordinates();\n });\n }\n });\n\n function onMouseenter(e: MouseEvent) {\n if (props.openOnHover) {\n active.value = true;\n }\n }\n\n function onMouseleave(e: MouseEvent) {\n if (props.openOnHover) {\n active.value = false;\n }\n }\n\n function onClick(e: MouseEvent) {\n const currentActive = active.value;\n if (!props.disabled) {\n active.value = !currentActive;\n }\n }\n\n function onComplementClick(e: MouseEvent) {\n if (active.value) {\n active.value = false;\n }\n }\n\n function bindHover(el: HTMLElement) {\n el.addEventListener('mouseenter', onMouseenter);\n el.addEventListener('mouseleave', onMouseleave);\n }\n\n function unbindHover(el: HTMLElement) {\n el.removeEventListener('mouseenter', onMouseenter);\n el.removeEventListener('mouseleave', onMouseleave);\n }\n\n watch(baseEl, (neo, old) => {\n if (neo) {\n bindHover(neo);\n neo.addEventListener('click', onClick);\n } else if (old) {\n unbindHover(old);\n old.removeEventListener('click', onClick);\n }\n });\n\n useRender(() => {\n const slotBase = slots.base?.({\n active: active.value,\n props: mergeProps({\n ref: base$,\n class: {\n 'y-menu-base': true,\n 'y-menu-base--active': active.value,\n }\n }),\n });\n baseSlot.value = slotBase;\n return (\n <>\n {slotBase}\n <YLayer\n v-model={active.value}\n ref={el$}\n classes={classes.value}\n scrim={false}\n disabled={props.disabled}\n content-styles={{ ...coordinateStyles.value }}\n content-classes={['y-menu__content']}\n transition={props.transition}\n onClick:complement={onComplementClick}\n >\n {{\n default: (...args: any) => {\n return <>{slots.default?.(...args) ?? ''}</>;\n },\n }}\n </YLayer>\n </>\n );\n });\n\n if (import.meta.env.DEV) {\n return {\n base$,\n el$,\n baseEl,\n coordinatesStyles: coordinateStyles,\n baseSlot,\n };\n }\n },\n});\n\nexport type YMenu = InstanceType<typeof YMenu>;\n"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ .y-menu {
2
+ font-size: 0.875rem;
3
+
4
+ &__content {
5
+ //
6
+ }
7
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./YMenu.mjs";
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/components/menu/index.ts"],"sourcesContent":["export * from './YMenu';\r\n"],"mappings":""}