@rotki/ui-library 2.12.1 → 2.13.0

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 (287) hide show
  1. package/dist/components/accordions/accordion/RuiAccordion.vue.d.ts +6 -14
  2. package/dist/components/accordions/accordion/RuiAccordion.vue.js +3 -4
  3. package/dist/components/accordions/accordion/RuiAccordion.vue.js.map +1 -1
  4. package/dist/components/accordions/accordions/RuiAccordions.vue.d.ts +10 -9
  5. package/dist/components/accordions/accordions/RuiAccordions.vue.js +27 -26
  6. package/dist/components/accordions/accordions/RuiAccordions.vue.js.map +1 -1
  7. package/dist/components/alerts/RuiAlert.vue.d.ts +7 -17
  8. package/dist/components/alerts/RuiAlert.vue2.js +8 -16
  9. package/dist/components/alerts/RuiAlert.vue2.js.map +1 -1
  10. package/dist/components/buttons/button/RuiButton.vue.d.ts +5 -7
  11. package/dist/components/buttons/button/RuiButton.vue2.js +19 -20
  12. package/dist/components/buttons/button/RuiButton.vue2.js.map +1 -1
  13. package/dist/components/buttons/button-group/RuiButtonGroup.vue.d.ts +6 -5
  14. package/dist/components/buttons/button-group/RuiButtonGroup.vue2.js +42 -41
  15. package/dist/components/buttons/button-group/RuiButtonGroup.vue2.js.map +1 -1
  16. package/dist/components/calendar/RuiCalendar.vue.d.ts +1 -6
  17. package/dist/components/calendar/RuiCalendar.vue.js +7 -8
  18. package/dist/components/calendar/RuiCalendar.vue.js.map +1 -1
  19. package/dist/components/calendar/RuiCalendarGrid.vue.js +1 -1
  20. package/dist/components/calendar/RuiCalendarGrid.vue2.js +20 -18
  21. package/dist/components/calendar/RuiCalendarGrid.vue2.js.map +1 -1
  22. package/dist/components/calendar/RuiCalendarHeader.vue.js +1 -1
  23. package/dist/components/calendar/RuiCalendarHeader.vue2.js +3 -4
  24. package/dist/components/calendar/RuiCalendarHeader.vue2.js.map +1 -1
  25. package/dist/components/calendar/RuiCalendarMenu.vue.js +1 -1
  26. package/dist/components/calendar/RuiCalendarMenu.vue2.js +48 -40
  27. package/dist/components/calendar/RuiCalendarMenu.vue2.js.map +1 -1
  28. package/dist/components/cards/RuiCard.vue.d.ts +9 -24
  29. package/dist/components/cards/RuiCard.vue2.js +7 -7
  30. package/dist/components/cards/RuiCard.vue2.js.map +1 -1
  31. package/dist/components/cards/RuiCardHeader.vue.d.ts +5 -10
  32. package/dist/components/cards/RuiCardHeader.vue2.js +1 -1
  33. package/dist/components/cards/RuiCardHeader.vue2.js.map +1 -1
  34. package/dist/components/chips/RuiChip.vue.d.ts +7 -21
  35. package/dist/components/chips/RuiChip.vue2.js +16 -21
  36. package/dist/components/chips/RuiChip.vue2.js.map +1 -1
  37. package/dist/components/color-picker/RuiColorBoard.vue.d.ts +1 -1
  38. package/dist/components/color-picker/RuiColorBoard.vue2.js +19 -19
  39. package/dist/components/color-picker/RuiColorBoard.vue2.js.map +1 -1
  40. package/dist/components/color-picker/RuiColorDisplay.vue.js +3 -5
  41. package/dist/components/color-picker/RuiColorDisplay.vue.js.map +1 -1
  42. package/dist/components/color-picker/RuiColorHue.vue2.js +17 -14
  43. package/dist/components/color-picker/RuiColorHue.vue2.js.map +1 -1
  44. package/dist/components/color-picker/RuiColorInput.vue.js +9 -7
  45. package/dist/components/color-picker/RuiColorInput.vue.js.map +1 -1
  46. package/dist/components/color-picker/RuiColorPicker.vue.d.ts +7 -9
  47. package/dist/components/color-picker/RuiColorPicker.vue.js +23 -14
  48. package/dist/components/color-picker/RuiColorPicker.vue.js.map +1 -1
  49. package/dist/components/color-picker/utils.js +22 -5
  50. package/dist/components/color-picker/utils.js.map +1 -1
  51. package/dist/components/date-time-picker/RuiDateTimePicker.vue.d.ts +2 -44
  52. package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js +75 -79
  53. package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js.map +1 -1
  54. package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue.js +1 -1
  55. package/dist/components/date-time-picker/dayjs-setup.d.ts +1 -0
  56. package/dist/components/date-time-picker/dayjs-setup.js +8 -0
  57. package/dist/components/date-time-picker/dayjs-setup.js.map +1 -0
  58. package/dist/components/date-time-picker/segment-config.d.ts +14 -0
  59. package/dist/components/date-time-picker/segment-config.js +23 -0
  60. package/dist/components/date-time-picker/segment-config.js.map +1 -0
  61. package/dist/components/date-time-picker/segment-utils.d.ts +5 -0
  62. package/dist/components/date-time-picker/segment-utils.js +36 -0
  63. package/dist/components/date-time-picker/segment-utils.js.map +1 -0
  64. package/dist/components/date-time-picker/use-date-time-selection.d.ts +1 -0
  65. package/dist/components/date-time-picker/use-date-time-selection.js +1 -0
  66. package/dist/components/date-time-picker/use-date-time-selection.js.map +1 -1
  67. package/dist/components/date-time-picker/use-keyboard-handler.d.ts +4 -8
  68. package/dist/components/date-time-picker/use-keyboard-handler.js +9 -54
  69. package/dist/components/date-time-picker/use-keyboard-handler.js.map +1 -1
  70. package/dist/components/date-time-picker/utils.d.ts +1 -0
  71. package/dist/components/date-time-picker/utils.js +1 -0
  72. package/dist/components/date-time-picker/utils.js.map +1 -1
  73. package/dist/components/divider/RuiDivider.vue.d.ts +1 -3
  74. package/dist/components/divider/RuiDivider.vue.js +6 -3
  75. package/dist/components/divider/RuiDivider.vue.js.map +1 -1
  76. package/dist/components/forms/auto-complete/RuiAutoComplete.vue.d.ts +10 -1138
  77. package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js +153 -160
  78. package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js.map +1 -1
  79. package/dist/components/forms/checkbox/RuiCheckbox.vue.d.ts +15 -24
  80. package/dist/components/forms/checkbox/RuiCheckbox.vue2.js +32 -32
  81. package/dist/components/forms/checkbox/RuiCheckbox.vue2.js.map +1 -1
  82. package/dist/components/forms/radio-button/radio/RuiRadio.vue.d.ts +2 -2
  83. package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js +19 -22
  84. package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js.map +1 -1
  85. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue.d.ts +4 -2
  86. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue2.js +13 -16
  87. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue2.js.map +1 -1
  88. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.d.ts +7 -13
  89. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.js +10 -9
  90. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.js.map +1 -1
  91. package/dist/components/forms/select/RuiMenuSelect.vue.d.ts +10 -785
  92. package/dist/components/forms/select/RuiMenuSelect.vue2.js +60 -56
  93. package/dist/components/forms/select/RuiMenuSelect.vue2.js.map +1 -1
  94. package/dist/components/forms/select/RuiSimpleSelect.vue.d.ts +11 -10
  95. package/dist/components/forms/select/RuiSimpleSelect.vue2.js +21 -26
  96. package/dist/components/forms/select/RuiSimpleSelect.vue2.js.map +1 -1
  97. package/dist/components/forms/slider/RuiSlider.vue.d.ts +10 -26
  98. package/dist/components/forms/slider/RuiSlider.vue2.js +45 -48
  99. package/dist/components/forms/slider/RuiSlider.vue2.js.map +1 -1
  100. package/dist/components/forms/switch/RuiSwitch.vue.d.ts +12 -20
  101. package/dist/components/forms/switch/RuiSwitch.vue2.js +22 -21
  102. package/dist/components/forms/switch/RuiSwitch.vue2.js.map +1 -1
  103. package/dist/components/forms/text-area/RuiTextArea.vue.d.ts +5 -30
  104. package/dist/components/forms/text-area/RuiTextArea.vue2.js +47 -83
  105. package/dist/components/forms/text-area/RuiTextArea.vue2.js.map +1 -1
  106. package/dist/components/forms/text-field/RuiTextField.vue.d.ts +10 -30
  107. package/dist/components/forms/text-field/RuiTextField.vue2.js +36 -67
  108. package/dist/components/forms/text-field/RuiTextField.vue2.js.map +1 -1
  109. package/dist/components/helpers/RuiFormTextDetail.vue.d.ts +1 -5
  110. package/dist/components/helpers/RuiFormTextDetail.vue.js +5 -9
  111. package/dist/components/helpers/RuiFormTextDetail.vue.js.map +1 -1
  112. package/dist/components/icons/LazyIcon.vue.d.ts +1 -3
  113. package/dist/components/icons/RuiIcon.vue.d.ts +1 -4
  114. package/dist/components/icons/RuiIcon.vue2.js +11 -14
  115. package/dist/components/icons/RuiIcon.vue2.js.map +1 -1
  116. package/dist/components/index.d.ts +4 -4
  117. package/dist/components/loaders/RuiSkeletonBase.vue.d.ts +1 -3
  118. package/dist/components/loaders/RuiSkeletonBase.vue2.js +2 -2
  119. package/dist/components/loaders/RuiSkeletonBase.vue2.js.map +1 -1
  120. package/dist/components/loaders/RuiSkeletonLoader.vue.d.ts +1 -4
  121. package/dist/components/loaders/RuiSkeletonLoader.vue2.js +2 -2
  122. package/dist/components/loaders/RuiSkeletonLoader.vue2.js.map +1 -1
  123. package/dist/components/logos/RuiLogo.vue.d.ts +1 -7
  124. package/dist/components/logos/RuiLogo.vue.js +13 -13
  125. package/dist/components/logos/RuiLogo.vue.js.map +1 -1
  126. package/dist/components/overlays/badge/RuiBadge.vue.d.ts +5 -20
  127. package/dist/components/overlays/badge/RuiBadge.vue2.js +11 -13
  128. package/dist/components/overlays/badge/RuiBadge.vue2.js.map +1 -1
  129. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.d.ts +10 -5
  130. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.js +18 -7
  131. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.js.map +1 -1
  132. package/dist/components/overlays/dialog/RuiDialog.vue.d.ts +22 -27
  133. package/dist/components/overlays/dialog/RuiDialog.vue2.js +90 -67
  134. package/dist/components/overlays/dialog/RuiDialog.vue2.js.map +1 -1
  135. package/dist/components/overlays/menu/RuiMenu.vue.d.ts +24 -35
  136. package/dist/components/overlays/menu/RuiMenu.vue2.js +71 -78
  137. package/dist/components/overlays/menu/RuiMenu.vue2.js.map +1 -1
  138. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue.d.ts +23 -30
  139. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue2.js +78 -49
  140. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue2.js.map +1 -1
  141. package/dist/components/overlays/notification/RuiNotification.vue.d.ts +12 -12
  142. package/dist/components/overlays/notification/RuiNotification.vue.js +27 -22
  143. package/dist/components/overlays/notification/RuiNotification.vue.js.map +1 -1
  144. package/dist/components/overlays/tooltip/RuiTooltip.vue.d.ts +7 -18
  145. package/dist/components/overlays/tooltip/RuiTooltip.vue2.js +16 -9
  146. package/dist/components/overlays/tooltip/RuiTooltip.vue2.js.map +1 -1
  147. package/dist/components/progress/RuiProgress.vue.d.ts +8 -10
  148. package/dist/components/progress/RuiProgress.vue2.js +18 -24
  149. package/dist/components/progress/RuiProgress.vue2.js.map +1 -1
  150. package/dist/components/steppers/RuiFooterStepper.vue.d.ts +10 -11
  151. package/dist/components/steppers/RuiFooterStepper.vue2.js +33 -26
  152. package/dist/components/steppers/RuiFooterStepper.vue2.js.map +1 -1
  153. package/dist/components/steppers/RuiStepper.vue.d.ts +6 -15
  154. package/dist/components/steppers/RuiStepper.vue2.js +39 -36
  155. package/dist/components/steppers/RuiStepper.vue2.js.map +1 -1
  156. package/dist/components/steppers/RuiStepperCustomIcon.vue.d.ts +1 -3
  157. package/dist/components/steppers/RuiStepperCustomIcon.vue2.js +2 -2
  158. package/dist/components/steppers/RuiStepperCustomIcon.vue2.js.map +1 -1
  159. package/dist/components/steppers/RuiStepperIcon.vue.d.ts +1 -3
  160. package/dist/components/steppers/RuiStepperIcon.vue2.js +2 -2
  161. package/dist/components/steppers/RuiStepperIcon.vue2.js.map +1 -1
  162. package/dist/components/tables/RuiDataTable.vue.d.ts +29 -81
  163. package/dist/components/tables/RuiDataTable.vue2.js +196 -601
  164. package/dist/components/tables/RuiDataTable.vue2.js.map +1 -1
  165. package/dist/components/tables/RuiDataTable.vue3.js +24 -27
  166. package/dist/components/tables/RuiDataTable.vue3.js.map +1 -1
  167. package/dist/components/tables/RuiExpandButton.vue.d.ts +3 -6
  168. package/dist/components/tables/RuiExpandButton.vue2.js +4 -2
  169. package/dist/components/tables/RuiExpandButton.vue2.js.map +1 -1
  170. package/dist/components/tables/RuiTableHead.vue.d.ts +4 -7
  171. package/dist/components/tables/RuiTableHead.vue2.js +20 -20
  172. package/dist/components/tables/RuiTableHead.vue2.js.map +1 -1
  173. package/dist/components/tables/RuiTablePagination.vue.d.ts +10 -10
  174. package/dist/components/tables/RuiTablePagination.vue2.js +27 -19
  175. package/dist/components/tables/RuiTablePagination.vue2.js.map +1 -1
  176. package/dist/components/tabs/tab/RuiTab.vue.d.ts +3 -18
  177. package/dist/components/tabs/tab/RuiTab.vue2.js +84 -52
  178. package/dist/components/tabs/tab/RuiTab.vue2.js.map +1 -1
  179. package/dist/components/tabs/tab-item/RuiTabItem.vue.d.ts +3 -11
  180. package/dist/components/tabs/tab-item/RuiTabItem.vue2.js +3 -2
  181. package/dist/components/tabs/tab-item/RuiTabItem.vue2.js.map +1 -1
  182. package/dist/components/tabs/tab-items/RuiTabItems.vue.d.ts +2 -5
  183. package/dist/components/tabs/tab-items/RuiTabItems.vue2.js +18 -18
  184. package/dist/components/tabs/tab-items/RuiTabItems.vue2.js.map +1 -1
  185. package/dist/components/tabs/tabs/RuiTabs.vue.d.ts +10 -14
  186. package/dist/components/tabs/tabs/RuiTabs.vue2.js +101 -94
  187. package/dist/components/tabs/tabs/RuiTabs.vue2.js.map +1 -1
  188. package/dist/components/time-picker/RuiTimePicker.vue.d.ts +1 -4
  189. package/dist/components/time-picker/RuiTimePicker.vue2.js +88 -38
  190. package/dist/components/time-picker/RuiTimePicker.vue2.js.map +1 -1
  191. package/dist/composables/breakpoint.js +8 -13
  192. package/dist/composables/breakpoint.js.map +1 -1
  193. package/dist/composables/dropdown-menu.d.ts +7 -4
  194. package/dist/composables/dropdown-menu.js +73 -50
  195. package/dist/composables/dropdown-menu.js.map +1 -1
  196. package/dist/composables/forms/auto-complete/focus.d.ts +7 -5
  197. package/dist/composables/forms/auto-complete/focus.js +28 -17
  198. package/dist/composables/forms/auto-complete/focus.js.map +1 -1
  199. package/dist/composables/forms/auto-complete/index.d.ts +0 -9
  200. package/dist/composables/forms/auto-complete/keyboard-navigation.d.ts +8 -3
  201. package/dist/composables/forms/auto-complete/keyboard-navigation.js +11 -5
  202. package/dist/composables/forms/auto-complete/keyboard-navigation.js.map +1 -1
  203. package/dist/composables/forms/auto-complete/search.d.ts +7 -0
  204. package/dist/composables/forms/auto-complete/search.js +10 -8
  205. package/dist/composables/forms/auto-complete/search.js.map +1 -1
  206. package/dist/composables/forms/auto-complete/value.d.ts +4 -0
  207. package/dist/composables/forms/auto-complete/value.js +24 -42
  208. package/dist/composables/forms/auto-complete/value.js.map +1 -1
  209. package/dist/composables/forms/use-label-with-quote.d.ts +2 -0
  210. package/dist/composables/forms/use-label-with-quote.js +14 -0
  211. package/dist/composables/forms/use-label-with-quote.js.map +1 -0
  212. package/dist/composables/forms/use-prepend-append-width.d.ts +6 -0
  213. package/dist/composables/forms/use-prepend-append-width.js +25 -0
  214. package/dist/composables/forms/use-prepend-append-width.js.map +1 -0
  215. package/dist/composables/icons.js +1 -1
  216. package/dist/composables/icons.js.map +1 -1
  217. package/dist/composables/popper.js +63 -49
  218. package/dist/composables/popper.js.map +1 -1
  219. package/dist/composables/sticky-header.d.ts +7 -5
  220. package/dist/composables/sticky-header.js +51 -41
  221. package/dist/composables/sticky-header.js.map +1 -1
  222. package/dist/composables/tables/data-table/columns.d.ts +25 -0
  223. package/dist/composables/tables/data-table/columns.js +54 -0
  224. package/dist/composables/tables/data-table/columns.js.map +1 -0
  225. package/dist/composables/tables/data-table/expansion.d.ts +17 -0
  226. package/dist/composables/tables/data-table/expansion.js +38 -0
  227. package/dist/composables/tables/data-table/expansion.js.map +1 -0
  228. package/dist/composables/tables/data-table/grouping.d.ts +29 -0
  229. package/dist/composables/tables/data-table/grouping.js +136 -0
  230. package/dist/composables/tables/data-table/grouping.js.map +1 -0
  231. package/dist/composables/tables/data-table/pagination.d.ts +33 -0
  232. package/dist/composables/tables/data-table/pagination.js +119 -0
  233. package/dist/composables/tables/data-table/pagination.js.map +1 -0
  234. package/dist/composables/tables/data-table/selection.d.ts +29 -0
  235. package/dist/composables/tables/data-table/selection.js +164 -0
  236. package/dist/composables/tables/data-table/selection.js.map +1 -0
  237. package/dist/composables/tables/data-table/sort.d.ts +32 -0
  238. package/dist/composables/tables/data-table/sort.js +136 -0
  239. package/dist/composables/tables/data-table/sort.js.map +1 -0
  240. package/dist/composables/tables/data-table/types.d.ts +14 -0
  241. package/dist/composables/tables/data-table/types.js +11 -0
  242. package/dist/composables/tables/data-table/types.js.map +1 -0
  243. package/dist/composables/theme.js +5 -21
  244. package/dist/composables/theme.js.map +1 -1
  245. package/dist/composables/timeout-manager.d.ts +4 -2
  246. package/dist/composables/timeout-manager.js +2 -1
  247. package/dist/composables/timeout-manager.js.map +1 -1
  248. package/dist/icons/icons_1.d.ts +15 -15
  249. package/dist/icons/icons_1.js +123 -123
  250. package/dist/icons/icons_1.js.map +1 -1
  251. package/dist/icons/icons_2.d.ts +46 -46
  252. package/dist/icons/icons_2.js +301 -301
  253. package/dist/icons/icons_2.js.map +1 -1
  254. package/dist/icons/icons_3.d.ts +43 -43
  255. package/dist/icons/icons_3.js +252 -252
  256. package/dist/icons/icons_3.js.map +1 -1
  257. package/dist/icons/icons_4.d.ts +72 -2
  258. package/dist/icons/icons_4.js +368 -18
  259. package/dist/icons/icons_4.js.map +1 -1
  260. package/dist/icons/index.d.ts +1 -1
  261. package/dist/icons/index.js +1 -1
  262. package/dist/icons/index.js.map +1 -1
  263. package/dist/index.js +105 -42
  264. package/dist/index.js.map +1 -1
  265. package/dist/style.css +189 -162
  266. package/dist/theme/index.js +15 -1
  267. package/dist/theme/index.js.map +1 -1
  268. package/dist/utils/assert.d.ts +1 -1
  269. package/dist/utils/assert.js.map +1 -1
  270. package/dist/utils/form-text-detail.d.ts +9 -8
  271. package/dist/utils/form-text-detail.js +1 -2
  272. package/dist/utils/form-text-detail.js.map +1 -1
  273. package/dist/utils/helpers.d.ts +4 -32
  274. package/dist/utils/helpers.js +8 -9
  275. package/dist/utils/helpers.js.map +1 -1
  276. package/dist/utils/is-equal.d.ts +1 -1
  277. package/dist/utils/is-equal.js +5 -3
  278. package/dist/utils/is-equal.js.map +1 -1
  279. package/dist/vite-plugin/index.js +4 -4
  280. package/dist/vite-plugin/index.js.map +1 -1
  281. package/dist/vite-plugin/scanner.js +3 -3
  282. package/dist/vite-plugin/scanner.js.map +1 -1
  283. package/dist/web-types.json +390 -371
  284. package/package.json +47 -44
  285. package/dist/utils/generate-id.d.ts +0 -5
  286. package/dist/utils/generate-id.js +0 -21
  287. package/dist/utils/generate-id.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RuiBadge.vue2.js","sources":["../../../../src/components/overlays/badge/RuiBadge.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ContextColorsType } from '@/consts/colors';\nimport type { RuiIcons } from '@/icons';\nimport { logicAnd, logicOr } from '@vueuse/math';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\n\nexport interface Props {\n text?: string | null;\n icon?: RuiIcons | null;\n modelValue?: boolean;\n dot?: boolean;\n left?: boolean;\n offsetX?: string | number;\n offsetY?: string | number;\n placement?: 'top' | 'center' | 'bottom';\n size?: 'sm' | 'md' | 'lg';\n rounded?: 'sm' | 'md' | 'lg' | 'full';\n color?: 'default' | ContextColorsType;\n}\n\ndefineOptions({\n name: 'RuiBadge',\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n text: null,\n icon: null,\n modelValue: true,\n dot: false,\n placement: 'top',\n left: false,\n size: 'md',\n rounded: 'full',\n color: 'primary',\n offsetX: 0,\n offsetY: 0,\n});\n\nconst slots = useSlots();\n\nconst { modelValue, offsetX, offsetY, icon, text } = toRefs(props);\n\nconst hasIcon = logicOr(icon, slots.icon);\n\nconst hasText = logicOr(text, slots.badge);\n\nconst hasIconAndText = logicAnd(hasIcon, hasText);\n</script>\n\n<template>\n <div :class=\"$style.wrapper\">\n <slot />\n <Transition\n appear\n enter-active-class=\"transform ease-out duration-200\"\n enter-from-class=\"scale-0\"\n enter-to-class=\"scale-100\"\n leave-active-class=\"transform ease-in duration-150\"\n leave-from-class=\"scale-100\"\n leave-to-class=\"scale-0\"\n >\n <div\n v-if=\"modelValue\"\n :class=\"[\n $style.badge,\n $style[color ?? 'primary'],\n $style[`placement__${placement}`],\n $style[`rounded__${rounded}`],\n $style[`size__${size}`],\n { [$style.left]: left, [$style.dot]: dot },\n ]\"\n aria-atomic=\"true\"\n aria-label=\"Badge\"\n aria-live=\"polite\"\n role=\"status\"\n >\n <span\n v-if=\"!dot\"\n :class=\"[\n $style.content,\n {\n [$style.text_icon]: hasIconAndText,\n },\n ]\"\n >\n <slot name=\"badge\">\n <span>\n {{ text }}\n </span>\n </slot>\n <slot name=\"icon\">\n <RuiIcon\n v-if=\"icon\"\n :name=\"icon\"\n size=\"16\"\n :class=\"{ 'ml-0.5': hasText }\"\n />\n </slot>\n </span>\n </div>\n </Transition>\n </div>\n</template>\n\n<style lang=\"scss\" module>\n@use '@/styles/colors.scss' as c;\n@use 'sass:list';\n\n$borders: full, sm, md, lg;\n$sizes: sm, md, lg;\n\n.wrapper {\n @apply relative inline-block;\n\n .badge {\n @apply flex items-center justify-center text-xs font-medium absolute;\n @apply bg-transparent text-rui-light-text;\n\n left: calc(100% - 0.5rem + v-bind(offsetX) * 0.0625rem);\n\n .content {\n @apply flex items-center px-1;\n\n &.text_icon {\n @apply px-2;\n }\n }\n\n @each $color in c.$context-colors {\n &.#{$color} {\n @apply text-white bg-rui-#{$color};\n }\n }\n\n @each $border in $borders {\n &.rounded__#{$border} {\n @apply rounded-#{$border};\n }\n }\n\n &.size__sm {\n @apply min-h-[1.25rem] min-w-[1.25rem];\n\n &.left {\n left: calc(-0.95rem + v-bind(offsetX) * 0.0625rem);\n }\n\n &.placement__center {\n top: calc(50% - 0.65rem - v-bind(offsetY) * 0.0625rem);\n }\n }\n\n &.size__md {\n @apply min-h-[1.5rem] min-w-[1.5rem];\n\n &.left {\n left: calc(-1.05rem + v-bind(offsetX) * 0.0625rem);\n }\n\n &.placement__center {\n top: calc(50% - 0.75rem - v-bind(offsetY) * 0.0625rem);\n }\n }\n\n &.size__lg {\n @apply min-h-[1.75rem] min-w-[1.75rem];\n\n &.left {\n left: calc(-1.15rem + v-bind(offsetX) * 0.0625rem);\n }\n\n &.placement__center {\n top: calc(50% - 0.85rem - v-bind(offsetY) * 0.0625rem);\n }\n }\n\n &.placement__top {\n bottom: calc(100% - 0.5rem - v-bind(offsetY) * 0.0625rem);\n }\n\n &.placement__bottom {\n top: calc(100% - 0.5rem - v-bind(offsetY) * 0.0625rem);\n }\n\n &.dot {\n left: calc(100% + 0.125rem + v-bind(offsetX) * 0.0625rem);\n\n &.default {\n @apply bg-gray-500;\n }\n\n &.size__sm {\n @apply min-w-[0.375rem] min-h-[0.375rem];\n }\n\n &.size__md {\n @apply min-w-[0.5rem] min-h-[0.5rem];\n }\n\n &.size__lg {\n @apply min-w-[0.625rem] min-h-[0.625rem];\n }\n\n &.left {\n left: calc(-0.65rem + v-bind(offsetX) * 0.0625rem);\n }\n\n &.placement__top {\n bottom: calc(100% + 0.25rem - v-bind(offsetY) * 0.0625rem);\n }\n\n &.placement__center {\n top: calc(50% - 0.25rem - v-bind(offsetY) * 0.0625rem);\n }\n\n &.placement__bottom {\n top: calc(100% + 0.25rem - v-bind(offsetY) * 0.0625rem);\n }\n }\n }\n}\n\n:global(.dark) {\n .wrapper {\n .badge {\n @apply text-rui-text;\n\n @each $color in c.$context-colors {\n @if list.index((warning, success, info), $color) {\n &.#{$color} {\n @apply text-rui-light-text;\n }\n }\n }\n }\n }\n}\n</style>\n"],"names":["_createElementBlock","_normalizeClass","$style","_renderSlot","_createVNode","_Transition","_unref","_createElementVNode","_createBlock"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,UAAM,QAAQ;AAcd,UAAM,QAAQ,SAAA;AAEd,UAAM,EAAE,YAAY,SAAS,SAAS,MAAM,KAAA,IAAS,OAAO,KAAK;AAEjE,UAAM,UAAU,QAAQ,MAAM,MAAM,IAAI;AAExC,UAAM,UAAU,QAAQ,MAAM,MAAM,KAAK;AAEzC,UAAM,iBAAiB,SAAS,SAAS,OAAO;;0BAI9CA,mBAmDM,OAAA;AAAA,QAnDA,OAAKC,eAAEC,KAAAA,OAAO,OAAO;AAAA,MAAA;QACzBC,WAAQ,KAAA,QAAA,SAAA;AAAA,QACRC,YAgDaC,YAAA;AAAA,UA/CX,QAAA;AAAA,UACA,sBAAmB;AAAA,UACnB,oBAAiB;AAAA,UACjB,kBAAe;AAAA,UACf,sBAAmB;AAAA,UACnB,oBAAiB;AAAA,UACjB,kBAAe;AAAA,QAAA;2BAEf,MAsCM;AAAA,YArCEC,MAAA,UAAA,kBADRN,mBAsCM,OAAA;AAAA;cApCH,OAAKC,eAAA;AAAA,gBAAcC,KAAAA,OAAO;AAAA,gBAAiBA,KAAAA,OAAO,QAAA,SAAK,SAAA;AAAA,gBAA0BA,KAAAA,qBAAqB,QAAA,SAAS,EAAA;AAAA,gBAAeA,KAAAA,mBAAmB,QAAA,OAAO,EAAA;AAAA,gBAAeA,KAAAA,gBAAgB,QAAA,IAAI,EAAA;AAAA,mBAAkBA,KAAAA,OAAO,IAAI,GAAG,QAAA,OAAOA,KAAAA,OAAO,GAAG,GAAG,QAAA,IAAA;AAAA,cAAG;cAQnP,eAAY;AAAA,cACZ,cAAW;AAAA,cACX,aAAU;AAAA,cACV,MAAK;AAAA,YAAA;eAGI,QAAA,oBADTF,mBAsBO,QAAA;AAAA;gBApBJ,OAAKC,eAAA;AAAA,kBAAgBC,KAAAA,OAAO;AAAA;qBAAsCA,KAAAA,OAAO,SAAS,GAAGI,MAAA,cAAA;AAAA,kBAAA;AAAA;;gBAOtFH,WAIO,0BAJP,MAIO;AAAA,kBAHLI,mBAEO,8BADFD,MAAA,IAAA,CAAI,GAAA,CAAA;AAAA,gBAAA;gBAGXH,WAOO,yBAPP,MAOO;AAAA,kBALGG,MAAA,IAAA,kBADRE,YAKE,SAAA;AAAA;oBAHC,MAAMF,MAAA,IAAA;AAAA,oBACP,MAAK;AAAA,oBACJ,kCAAmBA,MAAA,OAAA,GAAO;AAAA,kBAAA;;;;;;;;;;;"}
1
+ {"version":3,"file":"RuiBadge.vue2.js","sources":["../../../../src/components/overlays/badge/RuiBadge.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ContextColorsType } from '@/consts/colors';\nimport type { RuiIcons } from '@/icons';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\n\nexport interface Props {\n text?: string | null;\n icon?: RuiIcons | null;\n modelValue?: boolean;\n dot?: boolean;\n left?: boolean;\n offsetX?: string | number;\n offsetY?: string | number;\n placement?: 'top' | 'center' | 'bottom';\n size?: 'sm' | 'md' | 'lg';\n rounded?: 'sm' | 'md' | 'lg' | 'full';\n color?: 'default' | ContextColorsType;\n}\n\ndefineOptions({\n name: 'RuiBadge',\n});\n\nconst {\n text = null,\n icon = null,\n modelValue = true,\n dot = false,\n placement = 'top',\n left = false,\n size = 'md',\n rounded = 'full',\n color = 'primary',\n offsetX = 0,\n offsetY = 0,\n} = defineProps<Props>();\n\nconst slots = defineSlots<{\n default?: () => any;\n badge?: () => any;\n icon?: () => any;\n}>();\n\nconst hasIcon = computed<boolean>(() => !!icon || !!slots.icon);\n\nconst hasText = computed<boolean>(() => !!text || !!slots.badge);\n\nconst hasIconAndText = computed<boolean>(() => get(hasIcon) && get(hasText));\n</script>\n\n<template>\n <div :class=\"$style.wrapper\">\n <slot />\n <Transition\n appear\n enter-active-class=\"transform ease-out duration-200\"\n enter-from-class=\"scale-0\"\n enter-to-class=\"scale-100\"\n leave-active-class=\"transform ease-in duration-150\"\n leave-from-class=\"scale-100\"\n leave-to-class=\"scale-0\"\n >\n <div\n v-if=\"modelValue\"\n :class=\"[\n $style.badge,\n $style[color ?? 'primary'],\n $style[`placement__${placement}`],\n $style[`rounded__${rounded}`],\n $style[`size__${size}`],\n { [$style.left]: left, [$style.dot]: dot },\n ]\"\n aria-atomic=\"true\"\n aria-label=\"Badge\"\n aria-live=\"polite\"\n role=\"status\"\n >\n <span\n v-if=\"!dot\"\n :class=\"[\n $style.content,\n {\n [$style.text_icon]: hasIconAndText,\n },\n ]\"\n >\n <slot name=\"badge\">\n <span>\n {{ text }}\n </span>\n </slot>\n <slot name=\"icon\">\n <RuiIcon\n v-if=\"icon\"\n :name=\"icon\"\n size=\"16\"\n :class=\"{ 'ml-0.5': hasText }\"\n />\n </slot>\n </span>\n </div>\n </Transition>\n </div>\n</template>\n\n<style lang=\"scss\" module>\n@use '@/styles/colors.scss' as c;\n@use 'sass:list';\n\n$borders: full, sm, md, lg;\n$sizes: sm, md, lg;\n\n.wrapper {\n @apply relative inline-block;\n\n .badge {\n @apply flex items-center justify-center text-xs font-medium absolute;\n @apply bg-transparent text-rui-light-text;\n\n left: calc(100% - 0.5rem + v-bind(offsetX) * 0.0625rem);\n\n .content {\n @apply flex items-center px-1;\n\n &.text_icon {\n @apply px-2;\n }\n }\n\n @each $color in c.$context-colors {\n &.#{$color} {\n @apply text-white bg-rui-#{$color};\n }\n }\n\n @each $border in $borders {\n &.rounded__#{$border} {\n @apply rounded-#{$border};\n }\n }\n\n &.size__sm {\n @apply min-h-[1.25rem] min-w-[1.25rem];\n\n &.left {\n left: calc(-0.95rem + v-bind(offsetX) * 0.0625rem);\n }\n\n &.placement__center {\n top: calc(50% - 0.65rem - v-bind(offsetY) * 0.0625rem);\n }\n }\n\n &.size__md {\n @apply min-h-[1.5rem] min-w-[1.5rem];\n\n &.left {\n left: calc(-1.05rem + v-bind(offsetX) * 0.0625rem);\n }\n\n &.placement__center {\n top: calc(50% - 0.75rem - v-bind(offsetY) * 0.0625rem);\n }\n }\n\n &.size__lg {\n @apply min-h-[1.75rem] min-w-[1.75rem];\n\n &.left {\n left: calc(-1.15rem + v-bind(offsetX) * 0.0625rem);\n }\n\n &.placement__center {\n top: calc(50% - 0.85rem - v-bind(offsetY) * 0.0625rem);\n }\n }\n\n &.placement__top {\n bottom: calc(100% - 0.5rem - v-bind(offsetY) * 0.0625rem);\n }\n\n &.placement__bottom {\n top: calc(100% - 0.5rem - v-bind(offsetY) * 0.0625rem);\n }\n\n &.dot {\n left: calc(100% + 0.125rem + v-bind(offsetX) * 0.0625rem);\n\n &.default {\n @apply bg-gray-500;\n }\n\n &.size__sm {\n @apply min-w-[0.375rem] min-h-[0.375rem];\n }\n\n &.size__md {\n @apply min-w-[0.5rem] min-h-[0.5rem];\n }\n\n &.size__lg {\n @apply min-w-[0.625rem] min-h-[0.625rem];\n }\n\n &.left {\n left: calc(-0.65rem + v-bind(offsetX) * 0.0625rem);\n }\n\n &.placement__top {\n bottom: calc(100% + 0.25rem - v-bind(offsetY) * 0.0625rem);\n }\n\n &.placement__center {\n top: calc(50% - 0.25rem - v-bind(offsetY) * 0.0625rem);\n }\n\n &.placement__bottom {\n top: calc(100% + 0.25rem - v-bind(offsetY) * 0.0625rem);\n }\n }\n }\n}\n\n:global(.dark) {\n .wrapper {\n .badge {\n @apply text-rui-text;\n\n @each $color in c.$context-colors {\n @if list.index((warning, success, info), $color) {\n &.#{$color} {\n @apply text-rui-light-text;\n }\n }\n }\n }\n }\n}\n</style>\n"],"names":["_useSlots","_createElementBlock","_normalizeClass","$style","_renderSlot","_createVNode","_Transition","_unref","_createElementVNode","_createBlock"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAqCA,UAAM,QAAQA,SAAA;AAMd,UAAM,UAAU,SAAkB,MAAM,CAAC,CAAC,QAAA,QAAQ,CAAC,CAAC,MAAM,IAAI;AAE9D,UAAM,UAAU,SAAkB,MAAM,CAAC,CAAC,QAAA,QAAQ,CAAC,CAAC,MAAM,KAAK;AAE/D,UAAM,iBAAiB,SAAkB,MAAM,IAAI,OAAO,KAAK,IAAI,OAAO,CAAC;;0BAIzEC,mBAmDM,OAAA;AAAA,QAnDA,OAAKC,eAAEC,KAAAA,OAAO,OAAO;AAAA,MAAA;QACzBC,WAAQ,KAAA,QAAA,SAAA;AAAA,QACRC,YAgDaC,YAAA;AAAA,UA/CX,QAAA;AAAA,UACA,sBAAmB;AAAA,UACnB,oBAAiB;AAAA,UACjB,kBAAe;AAAA,UACf,sBAAmB;AAAA,UACnB,oBAAiB;AAAA,UACjB,kBAAe;AAAA,QAAA;2BAEf,MAsCM;AAAA,YArCE,QAAA,2BADRL,mBAsCM,OAAA;AAAA;cApCH,OAAKC,eAAA;AAAA,gBAAcC,KAAAA,OAAO;AAAA,gBAAiBA,KAAAA,OAAO,QAAA,SAAK,SAAA;AAAA,gBAA0BA,KAAAA,qBAAqB,QAAA,SAAS,EAAA;AAAA,gBAAeA,KAAAA,mBAAmB,QAAA,OAAO,EAAA;AAAA,gBAAeA,KAAAA,gBAAgB,QAAA,IAAI,EAAA;AAAA,mBAAkBA,KAAAA,OAAO,IAAI,GAAG,QAAA,OAAOA,KAAAA,OAAO,GAAG,GAAG,QAAA,IAAA;AAAA,cAAG;cAQnP,eAAY;AAAA,cACZ,cAAW;AAAA,cACX,aAAU;AAAA,cACV,MAAK;AAAA,YAAA;eAGI,QAAA,oBADTF,mBAsBO,QAAA;AAAA;gBApBJ,OAAKC,eAAA;AAAA,kBAAgBC,KAAAA,OAAO;AAAA;qBAAsCA,KAAAA,OAAO,SAAS,GAAGI,MAAA,cAAA;AAAA,kBAAA;AAAA;;gBAOtFH,WAIO,0BAJP,MAIO;AAAA,kBAHLI,mBAEO,8BADF,QAAA,IAAI,GAAA,CAAA;AAAA,gBAAA;gBAGXJ,WAOO,yBAPP,MAOO;AAAA,kBALG,QAAA,qBADRK,YAKE,SAAA;AAAA;oBAHC,MAAM,QAAA;AAAA,oBACP,MAAK;AAAA,oBACJ,kCAAmBF,MAAA,OAAA,GAAO;AAAA,kBAAA;;;;;;;;;;;"}
@@ -1,17 +1,22 @@
1
1
  export interface BottomSheetProps {
2
- modelValue?: boolean;
3
2
  persistent?: boolean;
4
3
  width?: string | number;
5
4
  maxWidth?: string | number;
6
5
  }
6
+ type __VLS_Props = BottomSheetProps;
7
+ type __VLS_ModelProps = {
8
+ modelValue?: boolean;
9
+ };
10
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
7
11
  declare var __VLS_10: string, __VLS_11: any;
8
12
  type __VLS_Slots = {} & {
9
13
  [K in NonNullable<typeof __VLS_10>]?: (props: typeof __VLS_11) => any;
10
14
  };
11
- declare const __VLS_base: import("vue").DefineComponent<BottomSheetProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<BottomSheetProps> & Readonly<{}>, {
12
- modelValue: boolean;
13
- persistent: boolean;
14
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
16
+ "update:modelValue": (value: boolean) => any;
17
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
18
+ "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
19
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
20
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
16
21
  declare const _default: typeof __VLS_export;
17
22
  export default _default;
@@ -1,4 +1,4 @@
1
- import { defineComponent, createBlock, openBlock, mergeProps, createSlots, renderList, withCtx, renderSlot, normalizeProps, guardReactiveProps } from "vue";
1
+ import { defineComponent, useModel, openBlock, createBlock, mergeProps, createSlots, renderList, withCtx, renderSlot, normalizeProps, guardReactiveProps, mergeModels } from "vue";
2
2
  import RuiDialog from "../dialog/RuiDialog.vue.js";
3
3
  const _sfc_main = /* @__PURE__ */ defineComponent({
4
4
  ...{
@@ -6,16 +6,27 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6
6
  inheritAttrs: false
7
7
  },
8
8
  __name: "RuiBottomSheet",
9
- props: {
10
- modelValue: { type: Boolean, default: false },
9
+ props: /* @__PURE__ */ mergeModels({
11
10
  persistent: { type: Boolean, default: false },
12
11
  width: {},
13
12
  maxWidth: {}
14
- },
13
+ }, {
14
+ "modelValue": { type: Boolean, ...{ default: false } },
15
+ "modelModifiers": {}
16
+ }),
17
+ emits: ["update:modelValue"],
15
18
  setup(__props) {
16
- const props = __props;
19
+ const modelValue = useModel(__props, "modelValue");
17
20
  return (_ctx, _cache) => {
18
- return openBlock(), createBlock(RuiDialog, mergeProps({ "bottom-sheet": "" }, { ...props, ..._ctx.$attrs }), createSlots({ _: 2 }, [
21
+ return openBlock(), createBlock(RuiDialog, mergeProps({
22
+ modelValue: modelValue.value,
23
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),
24
+ "bottom-sheet": ""
25
+ }, _ctx.$attrs, {
26
+ persistent: __props.persistent,
27
+ width: __props.width,
28
+ "max-width": __props.maxWidth
29
+ }), createSlots({ _: 2 }, [
19
30
  renderList(Object.keys(_ctx.$slots), (slot) => {
20
31
  return {
21
32
  name: slot,
@@ -24,7 +35,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
24
35
  ])
25
36
  };
26
37
  })
27
- ]), 1040);
38
+ ]), 1040, ["modelValue", "persistent", "width", "max-width"]);
28
39
  };
29
40
  }
30
41
  });
@@ -1 +1 @@
1
- {"version":3,"file":"RuiBottomSheet.vue.js","sources":["../../../../src/components/overlays/bottom-sheet/RuiBottomSheet.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport RuiDialog from '@/components/overlays/dialog/RuiDialog.vue';\n\n// keep these props in sync with Dialog props\nexport interface BottomSheetProps {\n modelValue?: boolean;\n persistent?: boolean;\n width?: string | number;\n maxWidth?: string | number;\n}\n\ndefineOptions({\n name: 'RuiBottomSheet',\n inheritAttrs: false,\n});\n\nconst props = withDefaults(defineProps<BottomSheetProps>(), {\n modelValue: false,\n persistent: false,\n});\n</script>\n\n<template>\n <RuiDialog\n bottom-sheet\n v-bind=\"{ ...props, ...$attrs }\"\n >\n <template\n v-for=\"slot in Object.keys($slots)\"\n #[slot]=\"scope\"\n >\n <slot\n v-bind=\"scope\"\n :name=\"slot\"\n />\n </template>\n </RuiDialog>\n</template>\n"],"names":["_createBlock","_mergeProps","$attrs","_createSlots","_renderList","$slots","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps"],"mappings":";;;;;;;;;;;;;;;AAgBA,UAAM,QAAQ;;0BAOZA,YAaY,WAbZC,WAaY,EAZV,gBAAA,MAAY,EAAA,GACC,OAAK,GAAKC,KAAAA,OAAAA,CAAM,GAAAC,YAAA,EAAA,GAAA,KAAA;AAAA,QAGZC,WAAA,OAAO,KAAKC,KAAAA,MAAM,IAA1B,SAAI;;kBACV;AAAA,YAED,IAAAC,QAAA,CAFS,UAAK;AAAA,cAEdC,WAGE,KAAA,QADO,MAAIC,eAAAC,mBADH,KAAK,CAAA,CAAA;AAAA,YAAA;;;;;;;"}
1
+ {"version":3,"file":"RuiBottomSheet.vue.js","sources":["../../../../src/components/overlays/bottom-sheet/RuiBottomSheet.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport RuiDialog from '@/components/overlays/dialog/RuiDialog.vue';\n\n// keep these props in sync with Dialog props\nexport interface BottomSheetProps {\n persistent?: boolean;\n width?: string | number;\n maxWidth?: string | number;\n}\n\ndefineOptions({\n name: 'RuiBottomSheet',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<boolean>({ default: false });\n\nconst { persistent = false, width, maxWidth } = defineProps<BottomSheetProps>();\n</script>\n\n<template>\n <RuiDialog\n v-model=\"modelValue\"\n bottom-sheet\n v-bind=\"$attrs\"\n :persistent=\"persistent\"\n :width=\"width\"\n :max-width=\"maxWidth\"\n >\n <template\n v-for=\"slot in Object.keys($slots)\"\n #[slot]=\"scope\"\n >\n <slot\n v-bind=\"scope\"\n :name=\"slot\"\n />\n </template>\n </RuiDialog>\n</template>\n"],"names":["_useModel","_openBlock","_createBlock","_mergeProps","$attrs","_renderList","$slots","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps"],"mappings":";;;;;;;;;;;;;;;;;;AAeA,UAAM,aAAaA,8BAAuC;;AAMxD,aAAAC,UAAA,GAAAC,YAiBY,WAjBZC,WAiBY;AAAA,oBAhBD,WAAA;AAAA,qEAAA,WAAU,QAAA;AAAA,QACnB,gBAAA;AAAA,MAAA,GACQC,KAAAA,QAAM;AAAA,QACb,YAAY,QAAA;AAAA,QACZ,OAAO,QAAA;AAAA,QACP,aAAW,QAAA;AAAA,MAAA;QAGKC,WAAA,OAAO,KAAKC,KAAAA,MAAM,IAA1B,SAAI;;kBACV;AAAA,YAED,IAAAC,QAAA,CAFS,UAAK;AAAA,cAEdC,WAGE,KAAA,QADO,MAAIC,eAAAC,mBADH,KAAK,CAAA,CAAA;AAAA,YAAA;;;;;;;"}
@@ -1,45 +1,40 @@
1
1
  export interface DialogProps {
2
- modelValue?: boolean;
3
2
  persistent?: boolean;
4
3
  width?: string | number;
5
4
  maxWidth?: string | number;
6
5
  bottomSheet?: boolean;
7
- contentClass?: any;
6
+ contentClass?: string | string[] | Record<string, boolean>;
8
7
  zIndex?: string | number;
8
+ ariaLabel?: string;
9
9
  }
10
- declare function close(): void;
11
- declare var __VLS_1: {
12
- attrs: {
13
- onClick: () => void;
14
- };
15
- isOpen: boolean;
16
- }, __VLS_21: {
17
- isOpen: true;
18
- close: typeof close;
10
+ type __VLS_Props = DialogProps;
11
+ type __VLS_Slots = {
12
+ activator?: (props: {
13
+ attrs: {
14
+ onClick: () => void;
15
+ };
16
+ isOpen: boolean;
17
+ }) => any;
18
+ default?: (props: {
19
+ isOpen: boolean;
20
+ close: () => void;
21
+ }) => any;
19
22
  };
20
- type __VLS_Slots = {} & {
21
- activator?: (props: typeof __VLS_1) => any;
22
- } & {
23
- default?: (props: typeof __VLS_21) => any;
23
+ type __VLS_ModelProps = {
24
+ modelValue?: boolean;
24
25
  };
25
- declare const __VLS_base: import("vue").DefineComponent<DialogProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
26
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
27
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
28
+ "update:modelValue": (value: boolean) => any;
26
29
  closed: () => any;
27
- "update:model-value": (value: boolean) => any;
28
30
  "click:outside": () => any;
29
31
  "click:esc": () => any;
30
- }, string, import("vue").PublicProps, Readonly<DialogProps> & Readonly<{
32
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
33
+ "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
31
34
  onClosed?: (() => any) | undefined;
32
- "onUpdate:model-value"?: ((value: boolean) => any) | undefined;
33
35
  "onClick:outside"?: (() => any) | undefined;
34
36
  "onClick:esc"?: (() => any) | undefined;
35
- }>, {
36
- width: string | number;
37
- modelValue: boolean;
38
- contentClass: any;
39
- persistent: boolean;
40
- zIndex: string | number;
41
- bottomSheet: boolean;
42
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
37
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
43
38
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
44
39
  declare const _default: typeof __VLS_export;
45
40
  export default _default;
@@ -1,81 +1,36 @@
1
+ import { defineComponent, useModel, ref, useTemplateRef, computed, watch, nextTick, onBeforeUnmount, openBlock, createElementBlock, normalizeProps, guardReactiveProps, unref, renderSlot, createBlock, Teleport, mergeProps, withKeys, withModifiers, createVNode, Transition, withCtx, normalizeClass, createCommentVNode, normalizeStyle, mergeModels } from "vue";
1
2
  import { transformPropsUnit, getRootAttrs, getNonRootAttrs } from "../../../utils/helpers.js";
2
- import { defineComponent, toRefs, ref, nextTick, watch, computed, createElementBlock, openBlock, normalizeProps, guardReactiveProps, unref, renderSlot, createBlock, Teleport, createCommentVNode, mergeProps, withKeys, withModifiers, createVNode, Transition, withCtx, normalizeClass, normalizeStyle } from "vue";
3
- import { watchImmediate } from "@vueuse/core";
4
- import { set, get } from "@vueuse/shared";
3
+ import { get, set } from "@vueuse/shared";
4
+ const _hoisted_1 = ["aria-label"];
5
5
  const _sfc_main = /* @__PURE__ */ defineComponent({
6
6
  ...{
7
7
  name: "RuiDialog",
8
8
  inheritAttrs: false
9
9
  },
10
10
  __name: "RuiDialog",
11
- props: {
12
- modelValue: { type: Boolean, default: false },
11
+ props: /* @__PURE__ */ mergeModels({
13
12
  persistent: { type: Boolean, default: false },
14
13
  width: { default: "98%" },
15
14
  maxWidth: {},
16
15
  bottomSheet: { type: Boolean, default: false },
17
16
  contentClass: { default: "" },
18
- zIndex: { default: 9999 }
19
- },
20
- emits: ["update:model-value", "closed", "click:outside", "click:esc"],
17
+ zIndex: { default: 9999 },
18
+ ariaLabel: {}
19
+ }, {
20
+ "modelValue": { type: Boolean, ...{ default: false } },
21
+ "modelModifiers": {}
22
+ }),
23
+ emits: /* @__PURE__ */ mergeModels(["closed", "click:outside", "click:esc"], ["update:modelValue"]),
21
24
  setup(__props, { emit: __emit }) {
22
- const props = __props;
25
+ const modelValue = useModel(__props, "modelValue");
23
26
  const emit = __emit;
24
- const {
25
- modelValue,
26
- width,
27
- maxWidth,
28
- bottomSheet
29
- } = toRefs(props);
30
27
  const internalValue = ref(false);
31
28
  const isOpen = ref(false);
32
- watchImmediate(modelValue, (value) => {
33
- nextTick(() => {
34
- set(internalValue, value);
35
- });
36
- });
37
- watch(internalValue, (value) => {
38
- if (value) {
39
- nextTick(() => {
40
- set(isOpen, value);
41
- });
42
- } else {
43
- setTimeout(() => {
44
- set(isOpen, value);
45
- }, 100);
46
- }
47
- });
48
- function onUpdateModelValue(value) {
49
- emit("update:model-value", value);
50
- if (!value)
51
- emit("closed");
52
- }
53
- watch(isOpen, (isOpen2) => {
54
- if (isOpen2) {
55
- onUpdateModelValue(isOpen2);
56
- set(internalValue, isOpen2);
57
- } else {
58
- setTimeout(() => {
59
- onUpdateModelValue(isOpen2);
60
- set(internalValue, isOpen2);
61
- }, 100);
62
- }
63
- });
64
- function close() {
65
- set(isOpen, false);
66
- }
29
+ const contentRef = useTemplateRef("contentRef");
67
30
  const style = computed(() => ({
68
- width: transformPropsUnit(get(width)),
69
- maxWidth: transformPropsUnit(get(maxWidth))
31
+ width: transformPropsUnit(__props.width),
32
+ maxWidth: transformPropsUnit(__props.maxWidth)
70
33
  }));
71
- const contentRef = ref();
72
- watch(contentRef, (contentRef2) => {
73
- if (contentRef2) {
74
- nextTick(() => {
75
- contentRef2.focus();
76
- });
77
- }
78
- });
79
34
  const dialogAttrs = computed(() => ({
80
35
  onClick: () => {
81
36
  const newValue = !get(internalValue);
@@ -84,7 +39,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
84
39
  }
85
40
  }));
86
41
  const contentTransition = computed(() => {
87
- if (!get(bottomSheet)) {
42
+ if (!__props.bottomSheet) {
88
43
  return {
89
44
  enterFromClass: "opacity-0 scale-75",
90
45
  enterActiveClass: "ease-out duration-150",
@@ -103,20 +58,84 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
103
58
  leaveToClass: "translate-y-full"
104
59
  };
105
60
  });
61
+ function onUpdateModelValue(value) {
62
+ set(modelValue, value);
63
+ if (!value)
64
+ emit("closed");
65
+ }
66
+ function close() {
67
+ set(isOpen, false);
68
+ }
106
69
  function onEscClick() {
107
- if (!props.persistent) {
70
+ if (!__props.persistent) {
108
71
  close();
109
72
  }
110
73
  emit("click:esc");
111
74
  }
112
75
  function onClickOutside() {
113
- if (!props.persistent) {
76
+ if (!__props.persistent) {
114
77
  close();
115
78
  }
116
79
  emit("click:outside");
117
80
  }
81
+ watch(
82
+ modelValue,
83
+ (value) => {
84
+ nextTick(() => {
85
+ set(internalValue, value);
86
+ });
87
+ },
88
+ { immediate: true }
89
+ );
90
+ let internalValueTimeoutId;
91
+ let isOpenTimeoutId;
92
+ watch(internalValue, (value) => {
93
+ if (internalValueTimeoutId !== void 0) {
94
+ clearTimeout(internalValueTimeoutId);
95
+ internalValueTimeoutId = void 0;
96
+ }
97
+ if (value) {
98
+ nextTick(() => {
99
+ set(isOpen, value);
100
+ });
101
+ } else {
102
+ internalValueTimeoutId = setTimeout(() => {
103
+ set(isOpen, value);
104
+ internalValueTimeoutId = void 0;
105
+ }, 100);
106
+ }
107
+ });
108
+ watch(isOpen, (isOpen2) => {
109
+ if (isOpenTimeoutId !== void 0) {
110
+ clearTimeout(isOpenTimeoutId);
111
+ isOpenTimeoutId = void 0;
112
+ }
113
+ if (isOpen2) {
114
+ onUpdateModelValue(isOpen2);
115
+ set(internalValue, isOpen2);
116
+ } else {
117
+ isOpenTimeoutId = setTimeout(() => {
118
+ onUpdateModelValue(isOpen2);
119
+ set(internalValue, isOpen2);
120
+ isOpenTimeoutId = void 0;
121
+ }, 100);
122
+ }
123
+ });
124
+ onBeforeUnmount(() => {
125
+ if (internalValueTimeoutId !== void 0)
126
+ clearTimeout(internalValueTimeoutId);
127
+ if (isOpenTimeoutId !== void 0)
128
+ clearTimeout(isOpenTimeoutId);
129
+ });
130
+ watch(contentRef, (contentRef2) => {
131
+ if (contentRef2) {
132
+ nextTick(() => {
133
+ contentRef2.focus();
134
+ });
135
+ }
136
+ });
118
137
  return (_ctx, _cache) => {
119
- return openBlock(), createElementBlock("div", normalizeProps(guardReactiveProps(("getRootAttrs" in _ctx ? _ctx.getRootAttrs : unref(getRootAttrs))(_ctx.$attrs))), [
138
+ return openBlock(), createElementBlock("div", normalizeProps(guardReactiveProps(unref(getRootAttrs)(_ctx.$attrs))), [
120
139
  renderSlot(_ctx.$slots, "activator", normalizeProps(guardReactiveProps({ attrs: unref(dialogAttrs), isOpen: unref(isOpen) }))),
121
140
  (openBlock(), createBlock(Teleport, { to: "body" }, [
122
141
  unref(isOpen) || unref(internalValue) ? (openBlock(), createElementBlock("div", mergeProps({
@@ -124,8 +143,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
124
143
  class: _ctx.$style.wrapper,
125
144
  style: { zIndex: __props.zIndex },
126
145
  role: "dialog",
146
+ "aria-modal": "true",
147
+ "aria-label": __props.ariaLabel,
127
148
  tabindex: "0"
128
- }, ("getNonRootAttrs" in _ctx ? _ctx.getNonRootAttrs : unref(getNonRootAttrs))(_ctx.$attrs), {
149
+ }, unref(getNonRootAttrs)(_ctx.$attrs), {
129
150
  onKeydown: _cache[1] || (_cache[1] = withKeys(withModifiers(($event) => onEscClick(), ["stop"]), ["esc"]))
130
151
  }), [
131
152
  createVNode(Transition, {
@@ -139,6 +160,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
139
160
  default: withCtx(() => [
140
161
  unref(isOpen) && unref(internalValue) ? (openBlock(), createElementBlock("div", {
141
162
  key: 0,
163
+ "data-id": "overlay",
142
164
  class: normalizeClass(_ctx.$style.overlay),
143
165
  onClick: _cache[0] || (_cache[0] = withModifiers(($event) => onClickOutside(), ["stop"]))
144
166
  }, null, 2)) : createCommentVNode("", true)
@@ -151,16 +173,17 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
151
173
  key: 0,
152
174
  ref_key: "contentRef",
153
175
  ref: contentRef,
176
+ "data-id": "content",
154
177
  style: normalizeStyle(unref(style)),
155
178
  tabindex: "0",
156
- class: normalizeClass([_ctx.$style.content, __props.contentClass, { [_ctx.$style.center]: !unref(bottomSheet) }])
179
+ class: normalizeClass([_ctx.$style.content, __props.contentClass, { [_ctx.$style.center]: !__props.bottomSheet }])
157
180
  }, [
158
181
  renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps({ isOpen: unref(isOpen), close })))
159
182
  ], 6)) : createCommentVNode("", true)
160
183
  ]),
161
184
  _: 3
162
185
  }, 16)
163
- ], 16)) : createCommentVNode("", true)
186
+ ], 16, _hoisted_1)) : createCommentVNode("", true)
164
187
  ]))
165
188
  ], 16);
166
189
  };
@@ -1 +1 @@
1
- {"version":3,"file":"RuiDialog.vue2.js","sources":["../../../../src/components/overlays/dialog/RuiDialog.vue"],"sourcesContent":["<script setup lang=\"ts\">\nexport interface DialogProps {\n modelValue?: boolean;\n persistent?: boolean;\n width?: string | number;\n maxWidth?: string | number;\n bottomSheet?: boolean;\n contentClass?: any;\n zIndex?: string | number;\n}\n\ndefineOptions({\n name: 'RuiDialog',\n inheritAttrs: false,\n});\n\nconst props = withDefaults(defineProps<DialogProps>(), {\n modelValue: false,\n persistent: false,\n width: '98%',\n bottomSheet: false,\n contentClass: '',\n zIndex: 9999,\n});\n\nconst emit = defineEmits<{\n (e: 'update:model-value', value: boolean): void;\n (e: 'closed'): void;\n (e: 'click:outside'): void;\n (e: 'click:esc'): void;\n}>();\n\nconst {\n modelValue,\n width,\n maxWidth,\n bottomSheet,\n} = toRefs(props);\n\nconst internalValue = ref<boolean>(false);\nconst isOpen = ref<boolean>(false);\n\nwatchImmediate(modelValue, (value) => {\n nextTick(() => {\n set(internalValue, value);\n });\n});\n\nwatch(internalValue, (value) => {\n if (value) {\n nextTick(() => {\n set(isOpen, value);\n });\n }\n else {\n setTimeout(() => {\n set(isOpen, value);\n }, 100);\n }\n});\n\nfunction onUpdateModelValue(value: boolean) {\n emit('update:model-value', value);\n\n if (!value)\n emit('closed');\n}\n\nwatch(isOpen, (isOpen) => {\n if (isOpen) {\n onUpdateModelValue(isOpen);\n set(internalValue, isOpen);\n }\n else {\n setTimeout(() => {\n onUpdateModelValue(isOpen);\n set(internalValue, isOpen);\n }, 100);\n }\n});\n\nfunction close() {\n set(isOpen, false);\n}\n\nconst style = computed(() => ({\n width: transformPropsUnit(get(width)),\n maxWidth: transformPropsUnit(get(maxWidth)),\n}));\n\nconst contentRef = ref<HTMLDivElement>();\n\nwatch(contentRef, (contentRef) => {\n if (contentRef) {\n nextTick(() => {\n contentRef.focus();\n });\n }\n});\n\nconst dialogAttrs = computed(() => ({\n onClick: () => {\n const newValue = !get(internalValue);\n set(internalValue, newValue);\n onUpdateModelValue(newValue);\n },\n}));\n\nconst contentTransition = computed(() => {\n if (!get(bottomSheet)) {\n return {\n enterFromClass: 'opacity-0 scale-75',\n enterActiveClass: 'ease-out duration-150',\n enterToClass: 'opacity-100 scale-100',\n leaveFromClass: 'opacity-100 scale-100',\n leaveActiveClass: 'ease-in duration-100',\n leaveToClass: 'opacity-0 scale-75',\n };\n }\n\n return {\n enterFromClass: 'translate-y-full',\n enterActiveClass: 'ease-out duration-150',\n enterToClass: 'translate-y-0',\n leaveFromClass: 'translate-y-0',\n leaveActiveClass: 'ease-in duration-100',\n leaveToClass: 'translate-y-full',\n };\n});\n\nfunction onEscClick() {\n if (!props.persistent) {\n close();\n }\n emit('click:esc');\n}\n\nfunction onClickOutside() {\n if (!props.persistent) {\n close();\n }\n emit('click:outside');\n}\n</script>\n\n<template>\n <div v-bind=\"getRootAttrs($attrs)\">\n <slot\n name=\"activator\"\n v-bind=\"{ attrs: dialogAttrs, isOpen }\"\n />\n <Teleport to=\"body\">\n <div\n v-if=\"isOpen || internalValue\"\n :class=\"$style.wrapper\"\n :style=\"{ zIndex }\"\n role=\"dialog\"\n tabindex=\"0\"\n v-bind=\"getNonRootAttrs($attrs)\"\n @keydown.esc.stop=\"onEscClick()\"\n >\n <Transition\n enter-from-class=\"opacity-0\"\n enter-active-class=\"ease-out duration-150\"\n enter-to-class=\"opacity-100\"\n leave-from-class=\"opacity-100\"\n leave-active-class=\"ease-in duration-100\"\n leave-to-class=\"opacity-0\"\n >\n <div\n v-if=\"isOpen && internalValue\"\n :class=\"$style.overlay\"\n @click.stop=\"onClickOutside()\"\n />\n </Transition>\n <Transition v-bind=\"contentTransition\">\n <div\n v-if=\"isOpen && internalValue\"\n ref=\"contentRef\"\n :style=\"style\"\n tabindex=\"0\"\n :class=\"[$style.content, contentClass, { [$style.center]: !bottomSheet }]\"\n >\n <slot v-bind=\"{ isOpen, close }\" />\n </div>\n </Transition>\n </div>\n </Teleport>\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.wrapper {\n @apply fixed w-full h-full top-0 left-0;\n}\n\n.overlay {\n @apply absolute top-0 left-0 w-full h-full backdrop-blur bg-rui-grey-500/[0.5];\n}\n\n.content {\n @apply absolute left-1/2 bottom-0 transform -translate-x-1/2 outline-none overflow-y-auto max-h-[90vh];\n\n &.center {\n @apply top-1/2 -translate-y-1/2 bottom-auto;\n }\n}\n\n:global(.dark) {\n .overlay {\n @apply bg-black/[0.5];\n }\n}\n</style>\n"],"names":["isOpen","contentRef","_createElementBlock","_normalizeProps","_guardReactiveProps","getRootAttrs","$attrs","_renderSlot","_unref","_createBlock","_Teleport","_openBlock","_mergeProps","$style","getNonRootAttrs","_createVNode","_Transition","_normalizeClass"],"mappings":"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"}
1
+ {"version":3,"file":"RuiDialog.vue2.js","sources":["../../../../src/components/overlays/dialog/RuiDialog.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { getNonRootAttrs, getRootAttrs, transformPropsUnit } from '@/utils/helpers';\n\nexport interface DialogProps {\n persistent?: boolean;\n width?: string | number;\n maxWidth?: string | number;\n bottomSheet?: boolean;\n contentClass?: string | string[] | Record<string, boolean>;\n zIndex?: string | number;\n ariaLabel?: string;\n}\n\ndefineOptions({\n name: 'RuiDialog',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<boolean>({ default: false });\n\nconst {\n persistent = false,\n width = '98%',\n maxWidth,\n bottomSheet = false,\n contentClass = '',\n zIndex = 9999,\n ariaLabel,\n} = defineProps<DialogProps>();\n\nconst emit = defineEmits<{\n 'closed': [];\n 'click:outside': [];\n 'click:esc': [];\n}>();\n\ndefineSlots<{\n activator?: (props: { attrs: { onClick: () => void }; isOpen: boolean }) => any;\n default?: (props: { isOpen: boolean; close: () => void }) => any;\n}>();\n\nconst internalValue = ref<boolean>(false);\nconst isOpen = ref<boolean>(false);\nconst contentRef = useTemplateRef<HTMLDivElement>('contentRef');\n\nconst style = computed<{ width: string | undefined; maxWidth: string | undefined }>(() => ({\n width: transformPropsUnit(width),\n maxWidth: transformPropsUnit(maxWidth),\n}));\n\nconst dialogAttrs = computed<{ onClick: () => void }>(() => ({\n onClick: () => {\n const newValue = !get(internalValue);\n set(internalValue, newValue);\n onUpdateModelValue(newValue);\n },\n}));\n\nconst contentTransition = computed<Record<string, string>>(() => {\n if (!bottomSheet) {\n return {\n enterFromClass: 'opacity-0 scale-75',\n enterActiveClass: 'ease-out duration-150',\n enterToClass: 'opacity-100 scale-100',\n leaveFromClass: 'opacity-100 scale-100',\n leaveActiveClass: 'ease-in duration-100',\n leaveToClass: 'opacity-0 scale-75',\n };\n }\n\n return {\n enterFromClass: 'translate-y-full',\n enterActiveClass: 'ease-out duration-150',\n enterToClass: 'translate-y-0',\n leaveFromClass: 'translate-y-0',\n leaveActiveClass: 'ease-in duration-100',\n leaveToClass: 'translate-y-full',\n };\n});\n\nfunction onUpdateModelValue(value: boolean): void {\n set(modelValue, value);\n\n if (!value)\n emit('closed');\n}\n\nfunction close(): void {\n set(isOpen, false);\n}\n\nfunction onEscClick(): void {\n if (!persistent) {\n close();\n }\n emit('click:esc');\n}\n\nfunction onClickOutside(): void {\n if (!persistent) {\n close();\n }\n emit('click:outside');\n}\n\nwatch(\n modelValue,\n (value) => {\n nextTick(() => {\n set(internalValue, value);\n });\n },\n { immediate: true },\n);\n\nlet internalValueTimeoutId: ReturnType<typeof setTimeout> | undefined;\nlet isOpenTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\nwatch(internalValue, (value) => {\n if (internalValueTimeoutId !== undefined) {\n clearTimeout(internalValueTimeoutId);\n internalValueTimeoutId = undefined;\n }\n if (value) {\n nextTick(() => {\n set(isOpen, value);\n });\n }\n else {\n internalValueTimeoutId = setTimeout(() => {\n set(isOpen, value);\n internalValueTimeoutId = undefined;\n }, 100);\n }\n});\n\nwatch(isOpen, (isOpen) => {\n if (isOpenTimeoutId !== undefined) {\n clearTimeout(isOpenTimeoutId);\n isOpenTimeoutId = undefined;\n }\n if (isOpen) {\n onUpdateModelValue(isOpen);\n set(internalValue, isOpen);\n }\n else {\n isOpenTimeoutId = setTimeout(() => {\n onUpdateModelValue(isOpen);\n set(internalValue, isOpen);\n isOpenTimeoutId = undefined;\n }, 100);\n }\n});\n\nonBeforeUnmount(() => {\n if (internalValueTimeoutId !== undefined)\n clearTimeout(internalValueTimeoutId);\n if (isOpenTimeoutId !== undefined)\n clearTimeout(isOpenTimeoutId);\n});\n\nwatch(contentRef, (contentRef) => {\n if (contentRef) {\n nextTick(() => {\n contentRef.focus();\n });\n }\n});\n</script>\n\n<template>\n <div v-bind=\"getRootAttrs($attrs)\">\n <slot\n name=\"activator\"\n v-bind=\"{ attrs: dialogAttrs, isOpen }\"\n />\n <Teleport to=\"body\">\n <div\n v-if=\"isOpen || internalValue\"\n :class=\"$style.wrapper\"\n :style=\"{ zIndex }\"\n role=\"dialog\"\n aria-modal=\"true\"\n :aria-label=\"ariaLabel\"\n tabindex=\"0\"\n v-bind=\"getNonRootAttrs($attrs)\"\n @keydown.esc.stop=\"onEscClick()\"\n >\n <Transition\n enter-from-class=\"opacity-0\"\n enter-active-class=\"ease-out duration-150\"\n enter-to-class=\"opacity-100\"\n leave-from-class=\"opacity-100\"\n leave-active-class=\"ease-in duration-100\"\n leave-to-class=\"opacity-0\"\n >\n <div\n v-if=\"isOpen && internalValue\"\n data-id=\"overlay\"\n :class=\"$style.overlay\"\n @click.stop=\"onClickOutside()\"\n />\n </Transition>\n <Transition v-bind=\"contentTransition\">\n <div\n v-if=\"isOpen && internalValue\"\n ref=\"contentRef\"\n data-id=\"content\"\n :style=\"style\"\n tabindex=\"0\"\n :class=\"[$style.content, contentClass, { [$style.center]: !bottomSheet }]\"\n >\n <slot v-bind=\"{ isOpen, close }\" />\n </div>\n </Transition>\n </div>\n </Teleport>\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.wrapper {\n @apply fixed w-full h-full top-0 left-0;\n}\n\n.overlay {\n @apply absolute top-0 left-0 w-full h-full backdrop-blur bg-rui-grey-500/[0.5];\n}\n\n.content {\n @apply absolute left-1/2 bottom-0 transform -translate-x-1/2 outline-none overflow-y-auto max-h-[90vh];\n\n &.center {\n @apply top-1/2 -translate-y-1/2 bottom-auto;\n }\n}\n\n:global(.dark) {\n .overlay {\n @apply bg-black/[0.5];\n }\n}\n</style>\n"],"names":["_useModel","isOpen","contentRef","_createElementBlock","_normalizeProps","_guardReactiveProps","_unref","$attrs","_renderSlot","_createBlock","_Teleport","_openBlock","_mergeProps","$style","_createVNode","_Transition","_normalizeClass"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import { type PopperOptions } from '../../../composables/popper.js';
2
2
  export interface MenuProps {
3
- modelValue?: boolean;
4
3
  openOnHover?: boolean;
5
4
  fullWidth?: boolean;
6
5
  disabled?: boolean;
@@ -19,42 +18,32 @@ export interface MenuProps {
19
18
  persistent?: boolean;
20
19
  disableAutoFocus?: boolean;
21
20
  }
22
- declare var __VLS_1: {
23
- attrs: {};
24
- open: boolean;
25
- disabled: boolean;
26
- hasError: boolean;
27
- hasSuccess: boolean;
28
- }, __VLS_19: {
29
- width: number;
21
+ type __VLS_Props = MenuProps;
22
+ type __VLS_Slots = {
23
+ activator?: (props: {
24
+ attrs: {
25
+ onMouseover?: () => void;
26
+ onMouseleave?: () => void;
27
+ onClick?: () => void;
28
+ };
29
+ open: boolean;
30
+ disabled: boolean;
31
+ hasError: boolean;
32
+ hasSuccess: boolean;
33
+ }) => any;
34
+ default?: (props: {
35
+ width: number;
36
+ }) => any;
30
37
  };
31
- type __VLS_Slots = {} & {
32
- activator?: (props: typeof __VLS_1) => any;
33
- } & {
34
- default?: (props: typeof __VLS_19) => any;
38
+ type __VLS_ModelProps = {
39
+ modelValue?: boolean;
35
40
  };
36
- declare const __VLS_base: import("vue").DefineComponent<MenuProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
37
- "update:model-value": (value: boolean) => any;
38
- }, string, import("vue").PublicProps, Readonly<MenuProps> & Readonly<{
39
- "onUpdate:model-value"?: ((value: boolean) => any) | undefined;
40
- }>, {
41
- popper: PopperOptions;
42
- disabled: boolean;
43
- modelValue: boolean;
44
- errorMessages: string | string[];
45
- successMessages: string | string[];
46
- hint: string;
47
- openOnHover: boolean;
48
- fullWidth: boolean;
49
- openDelay: number;
50
- closeDelay: number;
51
- wrapperClass: string | object | string[];
52
- menuClass: string | object | string[];
53
- closeOnContentClick: boolean;
54
- persistOnActivatorClick: boolean;
55
- persistent: boolean;
56
- disableAutoFocus: boolean;
57
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
41
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
42
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
43
+ "update:modelValue": (value: boolean) => any;
44
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
45
+ "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
46
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
58
47
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
59
48
  declare const _default: typeof __VLS_export;
60
49
  export default _default;