@rotki/ui-library 2.12.1 → 2.12.2

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 (147) hide show
  1. package/dist/components/accordions/accordion/RuiAccordion.vue.js +1 -1
  2. package/dist/components/accordions/accordions/RuiAccordions.vue.js +1 -1
  3. package/dist/components/alerts/RuiAlert.vue.d.ts +2 -2
  4. package/dist/components/alerts/RuiAlert.vue2.js +1 -1
  5. package/dist/components/buttons/button/RuiButton.vue2.js +1 -1
  6. package/dist/components/buttons/button-group/RuiButtonGroup.vue2.js +1 -1
  7. package/dist/components/calendar/RuiCalendar.vue.js +1 -1
  8. package/dist/components/calendar/RuiCalendarGrid.vue2.js +1 -1
  9. package/dist/components/calendar/RuiCalendarHeader.vue2.js +1 -1
  10. package/dist/components/calendar/RuiCalendarMenu.vue2.js +1 -1
  11. package/dist/components/cards/RuiCard.vue.d.ts +1 -1
  12. package/dist/components/cards/RuiCard.vue2.js +1 -1
  13. package/dist/components/cards/RuiCardHeader.vue2.js +1 -1
  14. package/dist/components/chips/RuiChip.vue.d.ts +1 -1
  15. package/dist/components/chips/RuiChip.vue2.js +1 -1
  16. package/dist/components/color-picker/RuiColorBoard.vue2.js +6 -2
  17. package/dist/components/color-picker/RuiColorBoard.vue2.js.map +1 -1
  18. package/dist/components/color-picker/RuiColorDisplay.vue.js +1 -1
  19. package/dist/components/color-picker/RuiColorHue.vue2.js +8 -2
  20. package/dist/components/color-picker/RuiColorHue.vue2.js.map +1 -1
  21. package/dist/components/color-picker/RuiColorInput.vue.js +1 -1
  22. package/dist/components/color-picker/RuiColorPicker.vue.js +6 -2
  23. package/dist/components/color-picker/RuiColorPicker.vue.js.map +1 -1
  24. package/dist/components/date-time-picker/RuiDateTimePicker.vue.d.ts +4 -4
  25. package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js +5 -5
  26. package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js.map +1 -1
  27. package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue.js +1 -1
  28. package/dist/components/divider/RuiDivider.vue.js +6 -3
  29. package/dist/components/divider/RuiDivider.vue.js.map +1 -1
  30. package/dist/components/forms/auto-complete/RuiAutoComplete.vue.d.ts +17 -34
  31. package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js +18 -9
  32. package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js.map +1 -1
  33. package/dist/components/forms/checkbox/RuiCheckbox.vue.d.ts +2 -2
  34. package/dist/components/forms/checkbox/RuiCheckbox.vue2.js +2 -2
  35. package/dist/components/forms/checkbox/RuiCheckbox.vue2.js.map +1 -1
  36. package/dist/components/forms/radio-button/radio/RuiRadio.vue.d.ts +1 -1
  37. package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js +2 -2
  38. package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js.map +1 -1
  39. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue.d.ts +1 -1
  40. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue2.js +2 -2
  41. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue2.js.map +1 -1
  42. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.d.ts +3 -3
  43. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.js +4 -2
  44. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.js.map +1 -1
  45. package/dist/components/forms/select/RuiMenuSelect.vue.d.ts +17 -17
  46. package/dist/components/forms/select/RuiMenuSelect.vue2.js +14 -7
  47. package/dist/components/forms/select/RuiMenuSelect.vue2.js.map +1 -1
  48. package/dist/components/forms/select/RuiSimpleSelect.vue.d.ts +3 -1
  49. package/dist/components/forms/select/RuiSimpleSelect.vue2.js +8 -4
  50. package/dist/components/forms/select/RuiSimpleSelect.vue2.js.map +1 -1
  51. package/dist/components/forms/slider/RuiSlider.vue.d.ts +2 -2
  52. package/dist/components/forms/slider/RuiSlider.vue2.js +10 -8
  53. package/dist/components/forms/slider/RuiSlider.vue2.js.map +1 -1
  54. package/dist/components/forms/switch/RuiSwitch.vue.d.ts +1 -1
  55. package/dist/components/forms/switch/RuiSwitch.vue2.js +2 -2
  56. package/dist/components/forms/switch/RuiSwitch.vue2.js.map +1 -1
  57. package/dist/components/forms/text-area/RuiTextArea.vue.d.ts +3 -3
  58. package/dist/components/forms/text-area/RuiTextArea.vue2.js +8 -8
  59. package/dist/components/forms/text-area/RuiTextArea.vue2.js.map +1 -1
  60. package/dist/components/forms/text-field/RuiTextField.vue.d.ts +6 -6
  61. package/dist/components/forms/text-field/RuiTextField.vue2.js +5 -5
  62. package/dist/components/forms/text-field/RuiTextField.vue2.js.map +1 -1
  63. package/dist/components/helpers/RuiFormTextDetail.vue.js +1 -1
  64. package/dist/components/helpers/RuiFormTextDetail.vue.js.map +1 -1
  65. package/dist/components/icons/RuiIcon.vue2.js +3 -6
  66. package/dist/components/icons/RuiIcon.vue2.js.map +1 -1
  67. package/dist/components/index.d.ts +2 -2
  68. package/dist/components/loaders/RuiSkeletonBase.vue2.js +1 -1
  69. package/dist/components/loaders/RuiSkeletonLoader.vue2.js +1 -1
  70. package/dist/components/logos/RuiLogo.vue.js +3 -1
  71. package/dist/components/logos/RuiLogo.vue.js.map +1 -1
  72. package/dist/components/overlays/badge/RuiBadge.vue.d.ts +3 -3
  73. package/dist/components/overlays/badge/RuiBadge.vue2.js +1 -1
  74. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.js +1 -1
  75. package/dist/components/overlays/dialog/RuiDialog.vue.d.ts +4 -3
  76. package/dist/components/overlays/dialog/RuiDialog.vue2.js +11 -5
  77. package/dist/components/overlays/dialog/RuiDialog.vue2.js.map +1 -1
  78. package/dist/components/overlays/menu/RuiMenu.vue.d.ts +1 -1
  79. package/dist/components/overlays/menu/RuiMenu.vue2.js +6 -4
  80. package/dist/components/overlays/menu/RuiMenu.vue2.js.map +1 -1
  81. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue.d.ts +4 -3
  82. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue2.js +9 -4
  83. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue2.js.map +1 -1
  84. package/dist/components/overlays/notification/RuiNotification.vue.d.ts +1 -1
  85. package/dist/components/overlays/notification/RuiNotification.vue.js +3 -1
  86. package/dist/components/overlays/notification/RuiNotification.vue.js.map +1 -1
  87. package/dist/components/overlays/tooltip/RuiTooltip.vue.d.ts +1 -1
  88. package/dist/components/overlays/tooltip/RuiTooltip.vue2.js +7 -3
  89. package/dist/components/overlays/tooltip/RuiTooltip.vue2.js.map +1 -1
  90. package/dist/components/progress/RuiProgress.vue.d.ts +1 -1
  91. package/dist/components/progress/RuiProgress.vue2.js +1 -1
  92. package/dist/components/steppers/RuiFooterStepper.vue2.js +15 -8
  93. package/dist/components/steppers/RuiFooterStepper.vue2.js.map +1 -1
  94. package/dist/components/steppers/RuiStepper.vue.d.ts +1 -1
  95. package/dist/components/steppers/RuiStepper.vue2.js +9 -4
  96. package/dist/components/steppers/RuiStepper.vue2.js.map +1 -1
  97. package/dist/components/steppers/RuiStepperCustomIcon.vue2.js +1 -1
  98. package/dist/components/steppers/RuiStepperIcon.vue2.js +1 -1
  99. package/dist/components/tables/RuiDataTable.vue2.js +28 -24
  100. package/dist/components/tables/RuiDataTable.vue2.js.map +1 -1
  101. package/dist/components/tables/RuiExpandButton.vue2.js +3 -2
  102. package/dist/components/tables/RuiExpandButton.vue2.js.map +1 -1
  103. package/dist/components/tables/RuiTableHead.vue2.js +1 -1
  104. package/dist/components/tables/RuiTablePagination.vue.d.ts +1 -1
  105. package/dist/components/tables/RuiTablePagination.vue2.js +12 -5
  106. package/dist/components/tables/RuiTablePagination.vue2.js.map +1 -1
  107. package/dist/components/tabs/tab/RuiTab.vue.d.ts +2 -2
  108. package/dist/components/tabs/tab/RuiTab.vue2.js +9 -6
  109. package/dist/components/tabs/tab/RuiTab.vue2.js.map +1 -1
  110. package/dist/components/tabs/tab-item/RuiTabItem.vue.d.ts +1 -1
  111. package/dist/components/tabs/tab-item/RuiTabItem.vue2.js +2 -1
  112. package/dist/components/tabs/tab-item/RuiTabItem.vue2.js.map +1 -1
  113. package/dist/components/tabs/tab-items/RuiTabItems.vue.d.ts +1 -1
  114. package/dist/components/tabs/tab-items/RuiTabItems.vue2.js +1 -1
  115. package/dist/components/tabs/tabs/RuiTabs.vue.d.ts +1 -1
  116. package/dist/components/tabs/tabs/RuiTabs.vue2.js +1 -1
  117. package/dist/components/time-picker/RuiTimePicker.vue2.js +21 -4
  118. package/dist/components/time-picker/RuiTimePicker.vue2.js.map +1 -1
  119. package/dist/composables/icons.js +1 -1
  120. package/dist/composables/icons.js.map +1 -1
  121. package/dist/composables/popper.js +3 -3
  122. package/dist/composables/popper.js.map +1 -1
  123. package/dist/composables/theme.js +7 -4
  124. package/dist/composables/theme.js.map +1 -1
  125. package/dist/icons/icons_1.d.ts +15 -15
  126. package/dist/icons/icons_1.js +96 -96
  127. package/dist/icons/icons_1.js.map +1 -1
  128. package/dist/icons/icons_2.d.ts +38 -38
  129. package/dist/icons/icons_2.js +255 -255
  130. package/dist/icons/icons_2.js.map +1 -1
  131. package/dist/icons/icons_3.d.ts +26 -26
  132. package/dist/icons/icons_3.js +153 -153
  133. package/dist/icons/icons_3.js.map +1 -1
  134. package/dist/icons/icons_4.d.ts +37 -2
  135. package/dist/icons/icons_4.js +192 -17
  136. package/dist/icons/icons_4.js.map +1 -1
  137. package/dist/icons/index.d.ts +1 -1
  138. package/dist/icons/index.js +1 -1
  139. package/dist/icons/index.js.map +1 -1
  140. package/dist/index.js +65 -30
  141. package/dist/style.css +26 -26
  142. package/dist/vite-plugin/index.js +4 -4
  143. package/dist/vite-plugin/index.js.map +1 -1
  144. package/dist/vite-plugin/scanner.js +3 -3
  145. package/dist/vite-plugin/scanner.js.map +1 -1
  146. package/dist/web-types.json +43 -24
  147. package/package.json +28 -34
@@ -1 +1 @@
1
- {"version":3,"file":"RuiLogo.vue.js","sources":["../../../src/components/logos/RuiLogo.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { isClient } from '@vueuse/shared';\nimport { useSSRContext } from 'vue';\nimport fallback from '@/components/logos/logo.svg';\nimport { transformCase } from '@/utils/helpers';\n\nexport interface ExternalLinks {\n drawer?: string;\n app?: string;\n website?: string;\n about?: string;\n emptyScreen?: string;\n [key: string]: string | undefined;\n}\n\nexport interface Props {\n text?: boolean;\n branch?: 'develop' | 'main' | string;\n logo?: keyof ExternalLinks;\n size?: string | number; // in rems\n uniqueKey?: string | number;\n}\n\ndefineOptions({\n name: 'RuiLogo',\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n text: false,\n branch: 'develop',\n logo: undefined,\n size: 3,\n uniqueKey: undefined,\n});\n\nconst customImageRef = ref<HTMLImageElement>();\nconst error = ref(false);\nconst decoding = ref(!!props.logo);\nconst pendingSources = ref(false);\nconst appName = 'rotki';\nconst emptyLinks: ExternalLinks = {\n app: undefined,\n website: undefined,\n about: undefined,\n emptyScreen: undefined,\n};\nconst externalSources = ref(emptyLinks);\n\nconst externalSource = computed(() => {\n const sources = get(externalSources);\n const { logo } = props;\n if (!logo || !sources[logo]) {\n set(decoding, get(pendingSources));\n return undefined;\n }\n\n const url = `https://raw.githubusercontent.com/rotki/data/${props.branch}/assets/icons/${sources[logo]}`;\n\n if (props.uniqueKey !== undefined)\n return `${url}?key=${props.uniqueKey}`;\n\n return url;\n});\n\nasync function fetchSources() {\n if (!props.logo)\n return;\n\n set(pendingSources, true);\n try {\n const { data } = await useFetch<string>(\n `https://raw.githubusercontent.com/rotki/data/${props.branch}/constants/asset-mappings.json`,\n );\n\n const links = transformCase(JSON.parse(get(data) ?? 'null')?.logo, 'camelCase');\n\n if (links)\n set(externalSources, links);\n }\n catch {}\n set(pendingSources, false);\n}\n\nwatch(\n () => get(customImageRef)?.complete,\n (complete) => {\n if (complete) {\n get(customImageRef)\n ?.decode()\n .catch(() => set(error, true))\n .finally(() => set(decoding, false));\n }\n },\n);\n\nwatchEffect(fetchSources);\n\nif (!isClient)\n useSSRContext();\n\nonServerPrefetch(async () => {\n await fetchSources();\n});\n</script>\n\n<template>\n <div\n class=\"gap-x-4 flex items-center relative\"\n :style=\"{ height: `${size}rem` }\"\n >\n <div\n v-if=\"!externalSource && decoding\"\n class=\"h-full transition delay-0 opacity-0\"\n :style=\"{ width: `${size}rem` }\"\n />\n <img\n v-else-if=\"externalSource && (!error || decoding)\"\n ref=\"customImageRef\"\n :src=\"externalSource\"\n :alt=\"appName\"\n data-image=\"custom\"\n class=\"h-full transition ease-out duration-200 delay-100\"\n :style=\"{ width: `${size}rem` }\"\n @error=\"error = true\"\n />\n <img\n v-else\n :src=\"fallback\"\n :alt=\"appName\"\n data-image=\"fallback\"\n class=\"h-full transition ease-out duration-200 delay-100\"\n :style=\"{ width: `${size}rem` }\"\n />\n <div\n v-if=\"text\"\n class=\"text-h4 text-rui-primary dark:text-white\"\n >\n {{ appName }}\n </div>\n </div>\n</template>\n"],"names":["_createElementBlock","_unref","_toDisplayString"],"mappings":";;;;;;;;;;;AAuCA,MAAM,UAAU;;;;;;;;;;;;;;AAZhB,UAAM,QAAQ;AAQd,UAAM,iBAAiB,IAAA;AACvB,UAAM,QAAQ,IAAI,KAAK;AACvB,UAAM,WAAW,IAAI,CAAC,CAAC,MAAM,IAAI;AACjC,UAAM,iBAAiB,IAAI,KAAK;AAEhC,UAAM,aAA4B;AAAA,MAChC,KAAK;AAAA,MACL,SAAS;AAAA,MACT,OAAO;AAAA,MACP,aAAa;AAAA,IAAA;AAEf,UAAM,kBAAkB,IAAI,UAAU;AAEtC,UAAM,iBAAiB,SAAS,MAAM;AACpC,YAAM,UAAU,IAAI,eAAe;AACnC,YAAM,EAAE,SAAS;AACjB,UAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,GAAG;AAC3B,YAAI,UAAU,IAAI,cAAc,CAAC;AACjC,eAAO;AAAA,MACT;AAEA,YAAM,MAAM,gDAAgD,MAAM,MAAM,iBAAiB,QAAQ,IAAI,CAAC;AAEtG,UAAI,MAAM,cAAc;AACtB,eAAO,GAAG,GAAG,QAAQ,MAAM,SAAS;AAEtC,aAAO;AAAA,IACT,CAAC;AAED,mBAAe,eAAe;AAC5B,UAAI,CAAC,MAAM;AACT;AAEF,UAAI,gBAAgB,IAAI;AACxB,UAAI;AACF,cAAM,EAAE,KAAA,IAAS,MAAM;AAAA,UACrB,gDAAgD,MAAM,MAAM;AAAA,QAAA;AAG9D,cAAM,QAAQ,cAAc,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,GAAG,MAAM,WAAW;AAE9E,YAAI;AACF,cAAI,iBAAiB,KAAK;AAAA,MAC9B,QACM;AAAA,MAAC;AACP,UAAI,gBAAgB,KAAK;AAAA,IAC3B;AAEA;AAAA,MACE,MAAM,IAAI,cAAc,GAAG;AAAA,MAC3B,CAAC,aAAa;AACZ,YAAI,UAAU;AACZ,cAAI,cAAc,GACd,OAAA,EACD,MAAM,MAAM,IAAI,OAAO,IAAI,CAAC,EAC5B,QAAQ,MAAM,IAAI,UAAU,KAAK,CAAC;AAAA,QACvC;AAAA,MACF;AAAA,IAAA;AAGF,gBAAY,YAAY;AAExB,QAAI,CAAC;AACH,oBAAA;AAEF,qBAAiB,YAAY;AAC3B,YAAM,aAAA;AAAA,IACR,CAAC;;0BAICA,mBAiCM,OAAA;AAAA,QAhCJ,OAAM;AAAA,QACL,mCAAoB,QAAA,IAAI,OAAA;AAAA,MAAA;QAGhB,CAAAC,MAAA,cAAA,KAAkBA,MAAA,QAAA,kBAD3BD,mBAIE,OAAA;AAAA;UAFA,OAAM;AAAA,UACL,kCAAmB,QAAA,IAAI,OAAA;AAAA,QAAA,eAGbC,MAAA,cAAA,MAAc,CAAMA,MAAA,KAAA,KAASA,MAAA,QAAA,mBAD1CD,mBASE,OAAA;AAAA;mBAPI;AAAA,UAAJ,KAAI;AAAA,UACH,KAAKC,MAAA,cAAA;AAAA,UACL,KAAK;AAAA,UACN,cAAW;AAAA,UACX,OAAM;AAAA,UACL,kCAAmB,QAAA,IAAI,OAAA;AAAA,UACvB,+CAAO,MAAA,QAAK;AAAA,QAAA,0CAEfD,mBAOE,OAAA;AAAA;UALC,KAAKC,MAAA,QAAA;AAAA,UACL,KAAK;AAAA,UACN,cAAW;AAAA,UACX,OAAM;AAAA,UACL,kCAAmB,QAAA,IAAI,OAAA;AAAA,QAAA;QAGlB,QAAA,qBADRD,mBAKM,OALN,YAKME,gBADD,OAAO,CAAA;;;;;"}
1
+ {"version":3,"file":"RuiLogo.vue.js","sources":["../../../src/components/logos/RuiLogo.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { isClient } from '@vueuse/shared';\nimport { useSSRContext } from 'vue';\nimport fallback from '@/components/logos/logo.svg';\nimport { transformCase } from '@/utils/helpers';\n\nexport interface ExternalLinks {\n drawer?: string;\n app?: string;\n website?: string;\n about?: string;\n emptyScreen?: string;\n [key: string]: string | undefined;\n}\n\nexport interface Props {\n text?: boolean;\n branch?: 'develop' | 'main' | string;\n logo?: keyof ExternalLinks;\n size?: string | number; // in rems\n uniqueKey?: string | number;\n}\n\ndefineOptions({\n name: 'RuiLogo',\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n text: false,\n branch: 'develop',\n logo: undefined,\n size: 3,\n uniqueKey: undefined,\n});\n\nconst customImageRef = ref<HTMLImageElement>();\nconst error = ref(false);\nconst decoding = ref(!!props.logo);\nconst pendingSources = ref(false);\nconst appName = 'rotki';\nconst emptyLinks: ExternalLinks = {\n app: undefined,\n website: undefined,\n about: undefined,\n emptyScreen: undefined,\n};\nconst externalSources = ref(emptyLinks);\n\nconst externalSource = computed(() => {\n const sources = get(externalSources);\n const { logo } = props;\n if (!logo || !sources[logo]) {\n set(decoding, get(pendingSources));\n return undefined;\n }\n\n const url = `https://raw.githubusercontent.com/rotki/data/${props.branch}/assets/icons/${sources[logo]}`;\n\n if (props.uniqueKey !== undefined)\n return `${url}?key=${props.uniqueKey}`;\n\n return url;\n});\n\nasync function fetchSources() {\n if (!props.logo)\n return;\n\n set(pendingSources, true);\n try {\n const { data } = await useFetch<string>(\n `https://raw.githubusercontent.com/rotki/data/${props.branch}/constants/asset-mappings.json`,\n );\n\n const links = transformCase(JSON.parse(get(data) ?? 'null')?.logo, 'camelCase');\n\n if (links)\n set(externalSources, links);\n }\n catch {}\n set(pendingSources, false);\n}\n\nwatch(\n () => get(customImageRef)?.complete,\n (complete) => {\n if (complete) {\n get(customImageRef)\n ?.decode()\n .catch(() => set(error, true))\n .finally(() => set(decoding, false));\n }\n },\n);\n\nwatchEffect(fetchSources);\n\nif (!isClient)\n useSSRContext();\n\nonServerPrefetch(async () => {\n await fetchSources();\n});\n</script>\n\n<template>\n <div\n class=\"gap-x-4 flex items-center relative\"\n :style=\"{ height: `${size}rem` }\"\n >\n <div\n v-if=\"!externalSource && decoding\"\n role=\"img\"\n :aria-label=\"appName\"\n class=\"h-full transition delay-0 opacity-0\"\n :style=\"{ width: `${size}rem` }\"\n />\n <img\n v-else-if=\"externalSource && (!error || decoding)\"\n ref=\"customImageRef\"\n :src=\"externalSource\"\n :alt=\"appName\"\n data-image=\"custom\"\n class=\"h-full transition ease-out duration-200 delay-100\"\n :style=\"{ width: `${size}rem` }\"\n @error=\"error = true\"\n />\n <img\n v-else\n :src=\"fallback\"\n :alt=\"appName\"\n data-image=\"fallback\"\n class=\"h-full transition ease-out duration-200 delay-100\"\n :style=\"{ width: `${size}rem` }\"\n />\n <div\n v-if=\"text\"\n class=\"text-h4 text-rui-primary dark:text-white\"\n >\n {{ appName }}\n </div>\n </div>\n</template>\n"],"names":["_createElementBlock","_unref","_toDisplayString"],"mappings":";;;;;;;;;;;AAuCA,MAAM,UAAU;;;;;;;;;;;;;;AAZhB,UAAM,QAAQ;AAQd,UAAM,iBAAiB,IAAA;AACvB,UAAM,QAAQ,IAAI,KAAK;AACvB,UAAM,WAAW,IAAI,CAAC,CAAC,MAAM,IAAI;AACjC,UAAM,iBAAiB,IAAI,KAAK;AAEhC,UAAM,aAA4B;AAAA,MAChC,KAAK;AAAA,MACL,SAAS;AAAA,MACT,OAAO;AAAA,MACP,aAAa;AAAA,IAAA;AAEf,UAAM,kBAAkB,IAAI,UAAU;AAEtC,UAAM,iBAAiB,SAAS,MAAM;AACpC,YAAM,UAAU,IAAI,eAAe;AACnC,YAAM,EAAE,SAAS;AACjB,UAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,GAAG;AAC3B,YAAI,UAAU,IAAI,cAAc,CAAC;AACjC,eAAO;AAAA,MACT;AAEA,YAAM,MAAM,gDAAgD,MAAM,MAAM,iBAAiB,QAAQ,IAAI,CAAC;AAEtG,UAAI,MAAM,cAAc;AACtB,eAAO,GAAG,GAAG,QAAQ,MAAM,SAAS;AAEtC,aAAO;AAAA,IACT,CAAC;AAED,mBAAe,eAAe;AAC5B,UAAI,CAAC,MAAM;AACT;AAEF,UAAI,gBAAgB,IAAI;AACxB,UAAI;AACF,cAAM,EAAE,KAAA,IAAS,MAAM;AAAA,UACrB,gDAAgD,MAAM,MAAM;AAAA,QAAA;AAG9D,cAAM,QAAQ,cAAc,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,GAAG,MAAM,WAAW;AAE9E,YAAI;AACF,cAAI,iBAAiB,KAAK;AAAA,MAC9B,QACM;AAAA,MAAC;AACP,UAAI,gBAAgB,KAAK;AAAA,IAC3B;AAEA;AAAA,MACE,MAAM,IAAI,cAAc,GAAG;AAAA,MAC3B,CAAC,aAAa;AACZ,YAAI,UAAU;AACZ,cAAI,cAAc,GACd,OAAA,EACD,MAAM,MAAM,IAAI,OAAO,IAAI,CAAC,EAC5B,QAAQ,MAAM,IAAI,UAAU,KAAK,CAAC;AAAA,QACvC;AAAA,MACF;AAAA,IAAA;AAGF,gBAAY,YAAY;AAExB,QAAI,CAAC;AACH,oBAAA;AAEF,qBAAiB,YAAY;AAC3B,YAAM,aAAA;AAAA,IACR,CAAC;;0BAICA,mBAmCM,OAAA;AAAA,QAlCJ,OAAM;AAAA,QACL,mCAAoB,QAAA,IAAI,OAAA;AAAA,MAAA;QAGhB,CAAAC,MAAA,cAAA,KAAkBA,MAAA,QAAA,kBAD3BD,mBAME,OAAA;AAAA;UAJA,MAAK;AAAA,UACJ,cAAY;AAAA,UACb,OAAM;AAAA,UACL,kCAAmB,QAAA,IAAI,OAAA;AAAA,QAAA,eAGbC,MAAA,cAAA,MAAc,CAAMA,MAAA,KAAA,KAASA,MAAA,QAAA,mBAD1CD,mBASE,OAAA;AAAA;mBAPI;AAAA,UAAJ,KAAI;AAAA,UACH,KAAKC,MAAA,cAAA;AAAA,UACL,KAAK;AAAA,UACN,cAAW;AAAA,UACX,OAAM;AAAA,UACL,kCAAmB,QAAA,IAAI,OAAA;AAAA,UACvB,+CAAO,MAAA,QAAK;AAAA,QAAA,0CAEfD,mBAOE,OAAA;AAAA;UALC,KAAKC,MAAA,QAAA;AAAA,UACL,KAAK;AAAA,UACN,cAAW;AAAA,UACX,OAAM;AAAA,UACL,kCAAmB,QAAA,IAAI,OAAA;AAAA,QAAA;QAGlB,QAAA,qBADRD,mBAKM,OALN,YAKME,gBADD,OAAO,CAAA;;;;;"}
@@ -22,17 +22,17 @@ type __VLS_Slots = {} & {
22
22
  icon?: (props: typeof __VLS_11) => any;
23
23
  };
24
24
  declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
25
- left: boolean;
26
25
  size: "sm" | "md" | "lg";
27
- placement: "top" | "center" | "bottom";
28
- color: "default" | ContextColorsType;
29
26
  text: string | null;
27
+ color: "default" | ContextColorsType;
30
28
  rounded: "sm" | "md" | "lg" | "full";
31
29
  icon: RuiIcons | null;
32
30
  modelValue: boolean;
33
31
  dot: boolean;
32
+ left: boolean;
34
33
  offsetX: string | number;
35
34
  offsetY: string | number;
35
+ placement: "top" | "center" | "bottom";
36
36
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
37
37
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
38
38
  declare const _default: typeof __VLS_export;
@@ -1,4 +1,4 @@
1
- import { defineComponent, useCssVars, unref, toRefs, useSlots, createElementBlock, openBlock, normalizeClass, renderSlot, createVNode, Transition, withCtx, createCommentVNode, createElementVNode, toDisplayString, createBlock } from "vue";
1
+ import { defineComponent, useCssVars, unref, useSlots, toRefs, openBlock, createElementBlock, normalizeClass, renderSlot, createVNode, Transition, withCtx, createElementVNode, toDisplayString, createBlock, createCommentVNode } from "vue";
2
2
  import { logicOr, logicAnd } from "@vueuse/math";
3
3
  import RuiIcon from "../../icons/RuiIcon.vue.js";
4
4
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -1,4 +1,4 @@
1
- import { defineComponent, createBlock, openBlock, mergeProps, createSlots, renderList, withCtx, renderSlot, normalizeProps, guardReactiveProps } from "vue";
1
+ import { defineComponent, openBlock, createBlock, mergeProps, createSlots, renderList, withCtx, renderSlot, normalizeProps, guardReactiveProps } from "vue";
2
2
  import RuiDialog from "../dialog/RuiDialog.vue.js";
3
3
  const _sfc_main = /* @__PURE__ */ defineComponent({
4
4
  ...{
@@ -6,6 +6,7 @@ export interface DialogProps {
6
6
  bottomSheet?: boolean;
7
7
  contentClass?: any;
8
8
  zIndex?: string | number;
9
+ ariaLabel?: string;
9
10
  }
10
11
  declare function close(): void;
11
12
  declare var __VLS_1: {
@@ -23,18 +24,18 @@ type __VLS_Slots = {} & {
23
24
  default?: (props: typeof __VLS_21) => any;
24
25
  };
25
26
  declare const __VLS_base: import("vue").DefineComponent<DialogProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
26
- closed: () => any;
27
27
  "update:model-value": (value: boolean) => any;
28
+ closed: () => any;
28
29
  "click:outside": () => any;
29
30
  "click:esc": () => any;
30
31
  }, string, import("vue").PublicProps, Readonly<DialogProps> & Readonly<{
31
- onClosed?: (() => any) | undefined;
32
32
  "onUpdate:model-value"?: ((value: boolean) => any) | undefined;
33
+ onClosed?: (() => any) | undefined;
33
34
  "onClick:outside"?: (() => any) | undefined;
34
35
  "onClick:esc"?: (() => any) | undefined;
35
36
  }>, {
36
- width: string | number;
37
37
  modelValue: boolean;
38
+ width: string | number;
38
39
  contentClass: any;
39
40
  persistent: boolean;
40
41
  zIndex: string | number;
@@ -1,7 +1,8 @@
1
+ import { defineComponent, toRefs, ref, nextTick, watch, computed, openBlock, createElementBlock, normalizeProps, guardReactiveProps, unref, renderSlot, createBlock, Teleport, mergeProps, withKeys, withModifiers, createVNode, Transition, withCtx, normalizeClass, createCommentVNode, normalizeStyle } 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
3
  import { watchImmediate } from "@vueuse/core";
4
4
  import { set, get } from "@vueuse/shared";
5
+ const _hoisted_1 = ["aria-label"];
5
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
6
7
  ...{
7
8
  name: "RuiDialog",
@@ -15,7 +16,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
15
16
  maxWidth: {},
16
17
  bottomSheet: { type: Boolean, default: false },
17
18
  contentClass: { default: "" },
18
- zIndex: { default: 9999 }
19
+ zIndex: { default: 9999 },
20
+ ariaLabel: {}
19
21
  },
20
22
  emits: ["update:model-value", "closed", "click:outside", "click:esc"],
21
23
  setup(__props, { emit: __emit }) {
@@ -116,7 +118,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
116
118
  emit("click:outside");
117
119
  }
118
120
  return (_ctx, _cache) => {
119
- return openBlock(), createElementBlock("div", normalizeProps(guardReactiveProps(("getRootAttrs" in _ctx ? _ctx.getRootAttrs : unref(getRootAttrs))(_ctx.$attrs))), [
121
+ return openBlock(), createElementBlock("div", normalizeProps(guardReactiveProps(unref(getRootAttrs)(_ctx.$attrs))), [
120
122
  renderSlot(_ctx.$slots, "activator", normalizeProps(guardReactiveProps({ attrs: unref(dialogAttrs), isOpen: unref(isOpen) }))),
121
123
  (openBlock(), createBlock(Teleport, { to: "body" }, [
122
124
  unref(isOpen) || unref(internalValue) ? (openBlock(), createElementBlock("div", mergeProps({
@@ -124,8 +126,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
124
126
  class: _ctx.$style.wrapper,
125
127
  style: { zIndex: __props.zIndex },
126
128
  role: "dialog",
129
+ "aria-modal": "true",
130
+ "aria-label": __props.ariaLabel,
127
131
  tabindex: "0"
128
- }, ("getNonRootAttrs" in _ctx ? _ctx.getNonRootAttrs : unref(getNonRootAttrs))(_ctx.$attrs), {
132
+ }, unref(getNonRootAttrs)(_ctx.$attrs), {
129
133
  onKeydown: _cache[1] || (_cache[1] = withKeys(withModifiers(($event) => onEscClick(), ["stop"]), ["esc"]))
130
134
  }), [
131
135
  createVNode(Transition, {
@@ -139,6 +143,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
139
143
  default: withCtx(() => [
140
144
  unref(isOpen) && unref(internalValue) ? (openBlock(), createElementBlock("div", {
141
145
  key: 0,
146
+ "data-id": "overlay",
142
147
  class: normalizeClass(_ctx.$style.overlay),
143
148
  onClick: _cache[0] || (_cache[0] = withModifiers(($event) => onClickOutside(), ["stop"]))
144
149
  }, null, 2)) : createCommentVNode("", true)
@@ -151,6 +156,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
151
156
  key: 0,
152
157
  ref_key: "contentRef",
153
158
  ref: contentRef,
159
+ "data-id": "content",
154
160
  style: normalizeStyle(unref(style)),
155
161
  tabindex: "0",
156
162
  class: normalizeClass([_ctx.$style.content, __props.contentClass, { [_ctx.$style.center]: !unref(bottomSheet) }])
@@ -160,7 +166,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
160
166
  ]),
161
167
  _: 3
162
168
  }, 16)
163
- ], 16)) : createCommentVNode("", true)
169
+ ], 16, _hoisted_1)) : createCommentVNode("", true)
164
170
  ]))
165
171
  ], 16);
166
172
  };
@@ -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 modelValue?: boolean;\n persistent?: boolean;\n width?: string | number;\n maxWidth?: string | number;\n bottomSheet?: boolean;\n contentClass?: any;\n zIndex?: string | number;\n ariaLabel?: string;\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 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":["isOpen","contentRef","_createElementBlock","_normalizeProps","_guardReactiveProps","_unref","$attrs","_renderSlot","_createBlock","_Teleport","_openBlock","_mergeProps","$style","_createVNode","_Transition","_normalizeClass"],"mappings":"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"}
@@ -38,7 +38,6 @@ declare const __VLS_base: import("vue").DefineComponent<MenuProps, {}, {}, {}, {
38
38
  }, string, import("vue").PublicProps, Readonly<MenuProps> & Readonly<{
39
39
  "onUpdate:model-value"?: ((value: boolean) => any) | undefined;
40
40
  }>, {
41
- popper: PopperOptions;
42
41
  disabled: boolean;
43
42
  modelValue: boolean;
44
43
  errorMessages: string | string[];
@@ -48,6 +47,7 @@ declare const __VLS_base: import("vue").DefineComponent<MenuProps, {}, {}, {}, {
48
47
  fullWidth: boolean;
49
48
  openDelay: number;
50
49
  closeDelay: number;
50
+ popper: PopperOptions;
51
51
  wrapperClass: string | object | string[];
52
52
  menuClass: string | object | string[];
53
53
  closeOnContentClick: boolean;
@@ -1,10 +1,10 @@
1
- import { defineComponent, toRefs, ref, watch, computed, createElementBlock, openBlock, withKeys, withModifiers, unref, createElementVNode, createBlock, createCommentVNode, normalizeClass, renderSlot, normalizeProps, guardReactiveProps, Teleport, createVNode, TransitionGroup, withCtx, mergeProps, nextTick } from "vue";
1
+ import { defineComponent, toRefs, ref, watch, computed, openBlock, createElementBlock, withKeys, withModifiers, unref, createElementVNode, normalizeClass, renderSlot, normalizeProps, guardReactiveProps, createBlock, Teleport, createVNode, TransitionGroup, withCtx, mergeProps, createCommentVNode, nextTick } from "vue";
2
2
  import _sfc_main$1 from "../../helpers/RuiFormTextDetail.vue.js";
3
3
  import { usePopper } from "../../../composables/popper.js";
4
+ import { useFormTextDetail } from "../../../utils/form-text-detail.js";
4
5
  import { useElementSize, onClickOutside } from "@vueuse/core";
5
6
  import { set, get } from "@vueuse/shared";
6
- import { useFormTextDetail } from "../../../utils/form-text-detail.js";
7
- const _hoisted_1 = ["data-menu-disabled"];
7
+ const _hoisted_1 = ["data-menu-disabled", "aria-expanded"];
8
8
  const FOCUSABLE_ELEMENTS_SELECTOR = 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])';
9
9
  const _sfc_main = /* @__PURE__ */ defineComponent({
10
10
  ...{
@@ -156,7 +156,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
156
156
  ref_key: "activator",
157
157
  ref: activator,
158
158
  class: normalizeClass([_ctx.$style.wrapper, __props.wrapperClass, { "w-full": __props.fullWidth }]),
159
- "data-menu-disabled": unref(disabled)
159
+ "data-menu-disabled": unref(disabled),
160
+ "aria-haspopup": "true",
161
+ "aria-expanded": unref(open)
160
162
  }, [
161
163
  renderSlot(_ctx.$slots, "activator", normalizeProps(guardReactiveProps({ attrs: unref(menuAttrs), open: unref(open), disabled: unref(disabled), hasError: unref(hasError), hasSuccess: unref(hasSuccess) })))
162
164
  ], 10, _hoisted_1),
@@ -1 +1 @@
1
- {"version":3,"file":"RuiMenu.vue2.js","sources":["../../../../src/components/overlays/menu/RuiMenu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport RuiFormTextDetail from '@/components/helpers/RuiFormTextDetail.vue';\nimport { type PopperOptions, usePopper } from '@/composables/popper';\n\nexport interface MenuProps {\n modelValue?: boolean;\n openOnHover?: boolean;\n fullWidth?: boolean;\n disabled?: boolean;\n openDelay?: number;\n closeDelay?: number;\n popper?: PopperOptions;\n wrapperClass?: string | object | string[];\n menuClass?: string | object | string[];\n closeOnContentClick?: boolean;\n persistOnActivatorClick?: boolean;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n showDetails?: boolean;\n dense?: boolean;\n persistent?: boolean;\n disableAutoFocus?: boolean;\n}\n\ndefineOptions({\n name: 'RuiMenu',\n});\n\nconst props = withDefaults(defineProps<MenuProps>(), {\n modelValue: false,\n openOnHover: false,\n disabled: false,\n fullWidth: false,\n openDelay: 0,\n closeDelay: 0,\n popper: () => ({}),\n wrapperClass: '',\n menuClass: '',\n closeOnContentClick: false,\n persistOnActivatorClick: false,\n hint: undefined,\n errorMessages: () => [],\n successMessages: () => [],\n persistent: false,\n disableAutoFocus: false,\n});\n\nconst emit = defineEmits<{\n (e: 'update:model-value', value: boolean): void;\n}>();\n\nconst {\n modelValue,\n closeDelay,\n openDelay,\n popper,\n disabled,\n persistOnActivatorClick,\n closeOnContentClick,\n openOnHover,\n errorMessages,\n successMessages,\n persistent,\n disableAutoFocus,\n} = toRefs(props);\n\nconst {\n reference: activator,\n popper: menu,\n open,\n popperEnter,\n leavePending,\n onLeavePending,\n onOpen,\n onClose,\n onPopperLeave,\n updatePopper,\n} = usePopper(popper, disabled, openDelay, closeDelay);\n\nconst { width } = useElementSize(activator);\n\nconst click = ref<boolean>(false);\nconst menuContent = ref<HTMLElement>();\n\nconst FOCUSABLE_ELEMENTS_SELECTOR = 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\nfunction focusMenu() {\n if (get(disableAutoFocus))\n return;\n\n nextTick(() => {\n const content = get(menuContent);\n if (!content)\n return;\n\n // Focus on the menu container itself\n content.focus();\n });\n}\n\nfunction onLeave(event?: KeyboardEvent) {\n if (!get(open))\n return;\n onClose();\n set(click, false);\n event?.stopPropagation();\n\n // Return focus to activator when menu closes\n if (!get(disableAutoFocus)) {\n nextTick(() => {\n const activatorEl = get(activator);\n if (activatorEl) {\n const focusableEl = activatorEl.querySelector<HTMLElement>(\n FOCUSABLE_ELEMENTS_SELECTOR,\n );\n if (focusableEl) {\n focusableEl.focus();\n }\n }\n });\n }\n}\n\nfunction checkClick() {\n if (get(open) && get(click)) {\n if (!get(persistOnActivatorClick))\n onLeave();\n }\n else {\n onOpen();\n set(click, true);\n }\n}\n\nwatch(modelValue, (value) => {\n if (value) {\n onOpen();\n set(click, true);\n }\n else {\n onLeave();\n }\n});\n\nwatch(open, (open) => {\n emit('update:model-value', open);\n if (open) {\n focusMenu();\n }\n});\n\nonClickOutside(menu, () => {\n if (get(open) && !get(persistent))\n onLeave();\n}, { ignore: [activator] });\n\nconst baseMenuAttrs = computed(() => {\n if (get(disabled))\n return {};\n\n const openOnHoverVal = get(openOnHover);\n const clickVal = get(click);\n return {\n onMouseover: () => {\n if (openOnHoverVal)\n onOpen();\n },\n onMouseleave: () => {\n if (openOnHoverVal && !clickVal)\n onClose();\n },\n };\n});\n\nconst menuAttrs = computed(() => {\n if (get(disabled))\n return {};\n\n return { ...get(baseMenuAttrs), onClick: checkClick };\n});\n\nconst { hasError, hasSuccess } = useFormTextDetail(\n errorMessages,\n successMessages,\n);\n</script>\n\n<template>\n <div\n @keydown.esc.stop=\"onLeave()\"\n @keydown.tab=\"!disableAutoFocus && open ? undefined : null\"\n >\n <div\n ref=\"activator\"\n :class=\"[$style.wrapper, wrapperClass, { 'w-full': fullWidth }]\"\n :data-menu-disabled=\"disabled\"\n >\n <slot\n name=\"activator\"\n v-bind=\"{ attrs: menuAttrs, open, disabled, hasError, hasSuccess }\"\n />\n </div>\n <Teleport\n v-if=\"!disabled\"\n to=\"body\"\n >\n <div\n v-if=\"popperEnter\"\n ref=\"menu\"\n :class=\"[\n $style.menu,\n menuClass,\n $style[`menu__${popper?.strategy ?? 'absolute'}`],\n ]\"\n role=\"menu\"\n @click=\"closeOnContentClick ? onLeave() : undefined\"\n @keydown.esc.stop=\"onLeave()\"\n >\n <TransitionGroup\n enter-active-class=\"transition ease-out duration-200\"\n enter-from-class=\"opacity-0 translate-y-1\"\n enter-to-class=\"opacity-100 translate-y-0\"\n leave-active-class=\"transition ease-in duration-150\"\n leave-from-class=\"opacity-100 translate-y-0\"\n leave-to-class=\"opacity-0 translate-y-1\"\n @before-enter=\"updatePopper()\"\n @after-leave=\"leavePending ? onPopperLeave() : undefined\"\n @before-leave=\"onLeavePending()\"\n >\n <div\n v-if=\"open\"\n ref=\"menuContent\"\n key=\"menu\"\n role=\"menu-content\"\n :class=\"$style.base\"\n tabindex=\"-1\"\n v-bind=\"baseMenuAttrs\"\n >\n <slot v-bind=\"{ width }\" />\n </div>\n </TransitionGroup>\n </div>\n </Teleport>\n <RuiFormTextDetail\n v-if=\"showDetails\"\n class=\"pt-1\"\n :class=\"[dense ? 'px-2' : 'px-4']\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hint=\"hint\"\n />\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.wrapper {\n @apply relative inline-flex max-w-full;\n}\n\n.menu {\n @apply w-max transform transition-opacity delay-0 z-[9999];\n\n &__fixed {\n @apply fixed;\n }\n\n &__absolute {\n @apply absolute;\n }\n\n .base {\n @apply rounded overflow-hidden shadow-8;\n @apply bg-white text-rui-text;\n\n &:focus {\n @apply outline-none;\n }\n }\n}\n\n:global(.dark) {\n .menu {\n .base {\n @apply bg-[#2E2E2E];\n }\n }\n}\n</style>\n"],"names":["open","_createElementBlock","_unref","_createElementVNode","$style","_renderSlot","_normalizeProps","_guardReactiveProps","_createBlock","_Teleport","_normalizeClass","_createVNode","_TransitionGroup","_openBlock","_mergeProps","RuiFormTextDetail"],"mappings":"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"}
1
+ {"version":3,"file":"RuiMenu.vue2.js","sources":["../../../../src/components/overlays/menu/RuiMenu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport RuiFormTextDetail from '@/components/helpers/RuiFormTextDetail.vue';\nimport { type PopperOptions, usePopper } from '@/composables/popper';\nimport { useFormTextDetail } from '@/utils/form-text-detail';\n\nexport interface MenuProps {\n modelValue?: boolean;\n openOnHover?: boolean;\n fullWidth?: boolean;\n disabled?: boolean;\n openDelay?: number;\n closeDelay?: number;\n popper?: PopperOptions;\n wrapperClass?: string | object | string[];\n menuClass?: string | object | string[];\n closeOnContentClick?: boolean;\n persistOnActivatorClick?: boolean;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n showDetails?: boolean;\n dense?: boolean;\n persistent?: boolean;\n disableAutoFocus?: boolean;\n}\n\ndefineOptions({\n name: 'RuiMenu',\n});\n\nconst props = withDefaults(defineProps<MenuProps>(), {\n modelValue: false,\n openOnHover: false,\n disabled: false,\n fullWidth: false,\n openDelay: 0,\n closeDelay: 0,\n popper: () => ({}),\n wrapperClass: '',\n menuClass: '',\n closeOnContentClick: false,\n persistOnActivatorClick: false,\n hint: undefined,\n errorMessages: () => [],\n successMessages: () => [],\n persistent: false,\n disableAutoFocus: false,\n});\n\nconst emit = defineEmits<{\n (e: 'update:model-value', value: boolean): void;\n}>();\n\nconst {\n modelValue,\n closeDelay,\n openDelay,\n popper,\n disabled,\n persistOnActivatorClick,\n closeOnContentClick,\n openOnHover,\n errorMessages,\n successMessages,\n persistent,\n disableAutoFocus,\n} = toRefs(props);\n\nconst {\n reference: activator,\n popper: menu,\n open,\n popperEnter,\n leavePending,\n onLeavePending,\n onOpen,\n onClose,\n onPopperLeave,\n updatePopper,\n} = usePopper(popper, disabled, openDelay, closeDelay);\n\nconst { width } = useElementSize(activator);\n\nconst click = ref<boolean>(false);\nconst menuContent = ref<HTMLElement>();\n\nconst FOCUSABLE_ELEMENTS_SELECTOR = 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\nfunction focusMenu() {\n if (get(disableAutoFocus))\n return;\n\n nextTick(() => {\n const content = get(menuContent);\n if (!content)\n return;\n\n // Focus on the menu container itself\n content.focus();\n });\n}\n\nfunction onLeave(event?: KeyboardEvent) {\n if (!get(open))\n return;\n onClose();\n set(click, false);\n event?.stopPropagation();\n\n // Return focus to activator when menu closes\n if (!get(disableAutoFocus)) {\n nextTick(() => {\n const activatorEl = get(activator);\n if (activatorEl) {\n const focusableEl = activatorEl.querySelector<HTMLElement>(\n FOCUSABLE_ELEMENTS_SELECTOR,\n );\n if (focusableEl) {\n focusableEl.focus();\n }\n }\n });\n }\n}\n\nfunction checkClick() {\n if (get(open) && get(click)) {\n if (!get(persistOnActivatorClick))\n onLeave();\n }\n else {\n onOpen();\n set(click, true);\n }\n}\n\nwatch(modelValue, (value) => {\n if (value) {\n onOpen();\n set(click, true);\n }\n else {\n onLeave();\n }\n});\n\nwatch(open, (open) => {\n emit('update:model-value', open);\n if (open) {\n focusMenu();\n }\n});\n\nonClickOutside(menu, () => {\n if (get(open) && !get(persistent))\n onLeave();\n}, { ignore: [activator] });\n\nconst baseMenuAttrs = computed(() => {\n if (get(disabled))\n return {};\n\n const openOnHoverVal = get(openOnHover);\n const clickVal = get(click);\n return {\n onMouseover: () => {\n if (openOnHoverVal)\n onOpen();\n },\n onMouseleave: () => {\n if (openOnHoverVal && !clickVal)\n onClose();\n },\n };\n});\n\nconst menuAttrs = computed(() => {\n if (get(disabled))\n return {};\n\n return { ...get(baseMenuAttrs), onClick: checkClick };\n});\n\nconst { hasError, hasSuccess } = useFormTextDetail(\n errorMessages,\n successMessages,\n);\n</script>\n\n<template>\n <div\n @keydown.esc.stop=\"onLeave()\"\n @keydown.tab=\"!disableAutoFocus && open ? undefined : null\"\n >\n <div\n ref=\"activator\"\n :class=\"[$style.wrapper, wrapperClass, { 'w-full': fullWidth }]\"\n :data-menu-disabled=\"disabled\"\n aria-haspopup=\"true\"\n :aria-expanded=\"open\"\n >\n <slot\n name=\"activator\"\n v-bind=\"{ attrs: menuAttrs, open, disabled, hasError, hasSuccess }\"\n />\n </div>\n <Teleport\n v-if=\"!disabled\"\n to=\"body\"\n >\n <div\n v-if=\"popperEnter\"\n ref=\"menu\"\n :class=\"[\n $style.menu,\n menuClass,\n $style[`menu__${popper?.strategy ?? 'absolute'}`],\n ]\"\n role=\"menu\"\n @click=\"closeOnContentClick ? onLeave() : undefined\"\n @keydown.esc.stop=\"onLeave()\"\n >\n <TransitionGroup\n enter-active-class=\"transition ease-out duration-200\"\n enter-from-class=\"opacity-0 translate-y-1\"\n enter-to-class=\"opacity-100 translate-y-0\"\n leave-active-class=\"transition ease-in duration-150\"\n leave-from-class=\"opacity-100 translate-y-0\"\n leave-to-class=\"opacity-0 translate-y-1\"\n @before-enter=\"updatePopper()\"\n @after-leave=\"leavePending ? onPopperLeave() : undefined\"\n @before-leave=\"onLeavePending()\"\n >\n <div\n v-if=\"open\"\n ref=\"menuContent\"\n key=\"menu\"\n role=\"menu-content\"\n :class=\"$style.base\"\n tabindex=\"-1\"\n v-bind=\"baseMenuAttrs\"\n >\n <slot v-bind=\"{ width }\" />\n </div>\n </TransitionGroup>\n </div>\n </Teleport>\n <RuiFormTextDetail\n v-if=\"showDetails\"\n class=\"pt-1\"\n :class=\"[dense ? 'px-2' : 'px-4']\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hint=\"hint\"\n />\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.wrapper {\n @apply relative inline-flex max-w-full;\n}\n\n.menu {\n @apply w-max transform transition-opacity delay-0 z-[9999];\n\n &__fixed {\n @apply fixed;\n }\n\n &__absolute {\n @apply absolute;\n }\n\n .base {\n @apply rounded overflow-hidden shadow-8;\n @apply bg-white text-rui-text;\n\n &:focus {\n @apply outline-none;\n }\n }\n}\n\n:global(.dark) {\n .menu {\n .base {\n @apply bg-[#2E2E2E];\n }\n }\n}\n</style>\n"],"names":["open","_createElementBlock","_unref","_createElementVNode","$style","_renderSlot","_normalizeProps","_guardReactiveProps","_createBlock","_Teleport","_normalizeClass","_createVNode","_TransitionGroup","_openBlock","_mergeProps","RuiFormTextDetail"],"mappings":"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"}
@@ -7,6 +7,7 @@ export interface NavigationDrawerProps {
7
7
  overlay?: boolean;
8
8
  position?: 'left' | 'right';
9
9
  contentClass?: string | object | string[];
10
+ ariaLabel?: string;
10
11
  }
11
12
  declare function close(): void;
12
13
  declare var __VLS_1: {
@@ -26,14 +27,14 @@ type __VLS_Slots = {} & {
26
27
  default?: (props: typeof __VLS_15) => any;
27
28
  };
28
29
  declare const __VLS_base: import("vue").DefineComponent<NavigationDrawerProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
29
- closed: () => any;
30
30
  "update:model-value": (value: boolean) => any;
31
+ closed: () => any;
31
32
  }, string, import("vue").PublicProps, Readonly<NavigationDrawerProps> & Readonly<{
32
- onClosed?: (() => any) | undefined;
33
33
  "onUpdate:model-value"?: ((value: boolean) => any) | undefined;
34
+ onClosed?: (() => any) | undefined;
34
35
  }>, {
35
- width: string | number;
36
36
  modelValue: boolean;
37
+ width: string | number;
37
38
  contentClass: string | object | string[];
38
39
  overlay: boolean;
39
40
  position: "left" | "right";
@@ -1,7 +1,8 @@
1
- import { defineComponent, toRefs, ref, nextTick, watch, computed, createElementBlock, openBlock, renderSlot, createBlock, normalizeProps, guardReactiveProps, unref, Teleport, createCommentVNode, Transition, withCtx, withModifiers, normalizeClass, mergeProps } from "vue";
1
+ import { defineComponent, toRefs, ref, nextTick, watch, computed, openBlock, createElementBlock, renderSlot, normalizeProps, guardReactiveProps, unref, createBlock, Teleport, Transition, withCtx, withModifiers, normalizeClass, createCommentVNode, mergeProps } from "vue";
2
2
  import { transformPropsUnit, getRootAttrs } from "../../../utils/helpers.js";
3
3
  import { watchImmediate, onClickOutside } from "@vueuse/core";
4
4
  import { set, get } from "@vueuse/shared";
5
+ const _hoisted_1 = ["aria-label", "aria-hidden"];
5
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
6
7
  ...{
7
8
  name: "RuiNavigationDrawer",
@@ -16,7 +17,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16
17
  miniVariant: { type: Boolean, default: false },
17
18
  overlay: { type: Boolean, default: false },
18
19
  position: { default: "left" },
19
- contentClass: { default: "" }
20
+ contentClass: { default: "" },
21
+ ariaLabel: {}
20
22
  },
21
23
  emits: ["update:model-value", "closed"],
22
24
  setup(__props, { emit: __emit }) {
@@ -99,6 +101,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
99
101
  default: withCtx(() => [
100
102
  isOpen.value && internalValue.value ? (openBlock(), createElementBlock("div", {
101
103
  key: 0,
104
+ "data-id": "overlay",
102
105
  class: normalizeClass(_ctx.$style.overlay),
103
106
  onClick: _cache[0] || (_cache[0] = withModifiers(($event) => close(), ["stop"]))
104
107
  }, null, 2)) : createCommentVNode("", true)
@@ -120,10 +123,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
120
123
  [_ctx.$style.temporary]: __props.temporary,
121
124
  [_ctx.$style["with-overlay"]]: __props.overlay
122
125
  }
123
- ]
126
+ ],
127
+ "aria-label": __props.ariaLabel,
128
+ "aria-hidden": unref(miniVariant) && !(isOpen.value && internalValue.value) ? "true" : void 0
124
129
  }, unref(getRootAttrs)(_ctx.$attrs)), [
125
130
  renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps({ attrs: unref(activatorAttrs), close })))
126
- ], 16)) : createCommentVNode("", true)
131
+ ], 16, _hoisted_1)) : createCommentVNode("", true)
127
132
  ]))
128
133
  ]);
129
134
  };
@@ -1 +1 @@
1
- {"version":3,"file":"RuiNavigationDrawer.vue2.js","sources":["../../../../src/components/overlays/navigation-drawer/RuiNavigationDrawer.vue"],"sourcesContent":["<script setup lang='ts'>\nimport type { MaybeElement } from '@vueuse/core';\nimport { type Ref, ref } from 'vue';\nimport { getRootAttrs } from '@/utils/helpers';\n\nexport interface NavigationDrawerProps {\n modelValue?: boolean;\n temporary?: boolean;\n stateless?: boolean;\n width?: string | number;\n miniVariant?: boolean;\n overlay?: boolean;\n position?: 'left' | 'right';\n contentClass?: string | object | string[];\n}\n\ndefineOptions({\n name: 'RuiNavigationDrawer',\n inheritAttrs: false,\n});\n\nconst props = withDefaults(defineProps<NavigationDrawerProps>(), {\n modelValue: false,\n temporary: false,\n stateless: false,\n width: 360,\n miniVariant: false,\n overlay: false,\n position: 'left',\n contentClass: '',\n});\n\nconst emit = defineEmits<{\n (e: 'update:model-value', value: boolean): void;\n (e: 'closed'): void;\n}>();\n\nconst {\n modelValue,\n position,\n miniVariant,\n width,\n} = toRefs(props);\n\nfunction onUpdateModelValue(value: boolean): void {\n emit('update:model-value', value);\n\n if (!value)\n emit('closed');\n}\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 window.requestAnimationFrame(() => {\n set(isOpen, value);\n });\n }\n else {\n setTimeout(() => {\n set(isOpen, value);\n }, 150);\n }\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 }, 150);\n }\n});\n\nfunction close(): void {\n set(isOpen, false);\n}\n\nconst style = computed(() => ({\n width: transformPropsUnit(get(width)),\n}));\n\nconst content: Ref<MaybeElement | null> = ref(null);\n\nonClickOutside(content, () => {\n if (get(isOpen) && props.temporary && !props.stateless) {\n setTimeout(() => {\n close();\n }, 50);\n }\n});\n\nconst activatorAttrs = computed(() => ({\n onClick: () => {\n const newValue = !get(internalValue);\n set(internalValue, newValue);\n onUpdateModelValue(newValue);\n },\n}));\n</script>\n\n<template>\n <div>\n <slot\n name=\"activator\"\n v-bind=\"{ open: internalValue, attrs: activatorAttrs }\"\n />\n <Teleport to=\"body\">\n <Transition\n v-if=\"overlay\"\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-150\"\n leave-to-class=\"opacity-0\"\n >\n <div\n v-if=\"isOpen && internalValue\"\n :class=\"$style.overlay\"\n @click.stop=\"close()\"\n />\n </Transition>\n <aside\n v-if=\"isOpen || internalValue || miniVariant\"\n ref=\"content\"\n :style=\"style\"\n :class=\"[\n $style.content,\n contentClass,\n {\n [$style.visible]: isOpen && internalValue,\n [$style[position]]: position,\n [$style.mini]: miniVariant,\n [$style.temporary]: temporary,\n [$style['with-overlay']]: overlay,\n },\n ]\"\n v-bind=\"getRootAttrs($attrs)\"\n >\n <slot v-bind=\"{ attrs: activatorAttrs, close }\" />\n </aside>\n </Teleport>\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.overlay {\n @apply absolute top-0 left-0 w-full h-full backdrop-blur bg-rui-grey-500/[0.5] z-[10000];\n}\n\n.content {\n @apply transition-all duration-150 ease-in-out top-0 h-full fixed text-rui-text bg-white z-[7];\n\n &.left {\n @apply -translate-x-full left-0;\n }\n\n &.right {\n @apply translate-x-full right-0;\n }\n\n &.with-overlay {\n @apply z-[10000];\n }\n\n &.visible {\n @apply translate-x-0;\n }\n\n &.temporary {\n &.visible {\n @apply shadow-5;\n }\n }\n\n &.mini {\n @apply translate-x-0;\n\n &:not(.visible) {\n @apply w-14 #{!important};\n }\n }\n}\n\n:global(.dark) {\n .overlay {\n @apply bg-black/[0.5];\n }\n\n .content {\n @apply bg-[#363636];\n }\n}\n</style>\n"],"names":["isOpen","_createElementBlock","_renderSlot","_normalizeProps","_guardReactiveProps","_unref","_createBlock","_Teleport","_Transition","_normalizeClass","$style","_openBlock","_mergeProps","$attrs"],"mappings":"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"}
1
+ {"version":3,"file":"RuiNavigationDrawer.vue2.js","sources":["../../../../src/components/overlays/navigation-drawer/RuiNavigationDrawer.vue"],"sourcesContent":["<script setup lang='ts'>\nimport type { MaybeElement } from '@vueuse/core';\nimport { type Ref, ref } from 'vue';\nimport { getRootAttrs, transformPropsUnit } from '@/utils/helpers';\n\nexport interface NavigationDrawerProps {\n modelValue?: boolean;\n temporary?: boolean;\n stateless?: boolean;\n width?: string | number;\n miniVariant?: boolean;\n overlay?: boolean;\n position?: 'left' | 'right';\n contentClass?: string | object | string[];\n ariaLabel?: string;\n}\n\ndefineOptions({\n name: 'RuiNavigationDrawer',\n inheritAttrs: false,\n});\n\nconst props = withDefaults(defineProps<NavigationDrawerProps>(), {\n modelValue: false,\n temporary: false,\n stateless: false,\n width: 360,\n miniVariant: false,\n overlay: false,\n position: 'left',\n contentClass: '',\n});\n\nconst emit = defineEmits<{\n (e: 'update:model-value', value: boolean): void;\n (e: 'closed'): void;\n}>();\n\nconst {\n modelValue,\n position,\n miniVariant,\n width,\n} = toRefs(props);\n\nfunction onUpdateModelValue(value: boolean): void {\n emit('update:model-value', value);\n\n if (!value)\n emit('closed');\n}\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 window.requestAnimationFrame(() => {\n set(isOpen, value);\n });\n }\n else {\n setTimeout(() => {\n set(isOpen, value);\n }, 150);\n }\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 }, 150);\n }\n});\n\nfunction close(): void {\n set(isOpen, false);\n}\n\nconst style = computed(() => ({\n width: transformPropsUnit(get(width)),\n}));\n\nconst content: Ref<MaybeElement | null> = ref(null);\n\nonClickOutside(content, () => {\n if (get(isOpen) && props.temporary && !props.stateless) {\n setTimeout(() => {\n close();\n }, 50);\n }\n});\n\nconst activatorAttrs = computed(() => ({\n onClick: () => {\n const newValue = !get(internalValue);\n set(internalValue, newValue);\n onUpdateModelValue(newValue);\n },\n}));\n</script>\n\n<template>\n <div>\n <slot\n name=\"activator\"\n v-bind=\"{ open: internalValue, attrs: activatorAttrs }\"\n />\n <Teleport to=\"body\">\n <Transition\n v-if=\"overlay\"\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-150\"\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=\"close()\"\n />\n </Transition>\n <aside\n v-if=\"isOpen || internalValue || miniVariant\"\n ref=\"content\"\n :style=\"style\"\n :class=\"[\n $style.content,\n contentClass,\n {\n [$style.visible]: isOpen && internalValue,\n [$style[position]]: position,\n [$style.mini]: miniVariant,\n [$style.temporary]: temporary,\n [$style['with-overlay']]: overlay,\n },\n ]\"\n :aria-label=\"ariaLabel\"\n :aria-hidden=\"miniVariant && !(isOpen && internalValue) ? 'true' : undefined\"\n v-bind=\"getRootAttrs($attrs)\"\n >\n <slot v-bind=\"{ attrs: activatorAttrs, close }\" />\n </aside>\n </Teleport>\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.overlay {\n @apply absolute top-0 left-0 w-full h-full backdrop-blur bg-rui-grey-500/[0.5] z-[10000];\n}\n\n.content {\n @apply transition-all duration-150 ease-in-out top-0 h-full fixed text-rui-text bg-white z-[7];\n\n &.left {\n @apply -translate-x-full left-0;\n }\n\n &.right {\n @apply translate-x-full right-0;\n }\n\n &.with-overlay {\n @apply z-[10000];\n }\n\n &.visible {\n @apply translate-x-0;\n }\n\n &.temporary {\n &.visible {\n @apply shadow-5;\n }\n }\n\n &.mini {\n @apply translate-x-0;\n\n &:not(.visible) {\n @apply w-14 #{!important};\n }\n }\n}\n\n:global(.dark) {\n .overlay {\n @apply bg-black/[0.5];\n }\n\n .content {\n @apply bg-[#363636];\n }\n}\n</style>\n"],"names":["isOpen","_createElementBlock","_renderSlot","_normalizeProps","_guardReactiveProps","_unref","_createBlock","_Teleport","_Transition","_normalizeClass","$style","_openBlock","_mergeProps","$attrs"],"mappings":"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"}
@@ -13,8 +13,8 @@ declare const __VLS_base: import("vue").DefineComponent<NotificationProps, {}, {
13
13
  }, string, import("vue").PublicProps, Readonly<NotificationProps> & Readonly<{
14
14
  "onUpdate:model-value"?: ((value: boolean) => any) | undefined;
15
15
  }>, {
16
- width: number | string;
17
16
  theme: "light" | "dark";
17
+ width: number | string;
18
18
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
19
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
20
20
  declare const _default: typeof __VLS_export;
@@ -1,4 +1,4 @@
1
- import { defineComponent, toRefs, computed, createBlock, openBlock, Teleport, createVNode, Transition, withCtx, createElementBlock, createCommentVNode, unref, mergeProps, renderSlot } from "vue";
1
+ import { defineComponent, toRefs, computed, openBlock, createBlock, Teleport, createVNode, Transition, withCtx, unref, createElementBlock, mergeProps, renderSlot, createCommentVNode } from "vue";
2
2
  import { transformPropsUnit } from "../../../utils/helpers.js";
3
3
  import { get } from "@vueuse/shared";
4
4
  import { watchImmediate } from "@vueuse/core";
@@ -50,6 +50,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
50
50
  default: withCtx(() => [
51
51
  unref(modelValue) ? (openBlock(), createElementBlock("div", mergeProps({
52
52
  key: 0,
53
+ role: "alert",
54
+ "aria-live": "polite",
53
55
  class: ["top-2 right-2 fixed drop-shadow-lg rounded-sm z-50", {
54
56
  "bg-white dark:bg-[#363636]": !__props.theme,
55
57
  "bg-white text-rui-light-text": __props.theme === "light",
@@ -1 +1 @@
1
- {"version":3,"file":"RuiNotification.vue.js","sources":["../../../../src/components/overlays/notification/RuiNotification.vue"],"sourcesContent":["<script lang='ts' setup>\nexport interface NotificationProps {\n modelValue: boolean;\n timeout: number;\n width?: number | string;\n theme?: 'light' | 'dark';\n}\n\ndefineOptions({\n name: 'RuiNotification',\n inheritAttrs: false,\n});\n\nconst props = withDefaults(\n defineProps<NotificationProps>(),\n {\n width: 400,\n theme: undefined,\n },\n);\n\nconst emit = defineEmits<{\n (e: 'update:model-value', value: boolean): void;\n}>();\n\nconst { timeout, modelValue, width } = toRefs(props);\n\nconst style = computed(() => ({\n width: transformPropsUnit(get(width)),\n}));\n\nfunction dismiss() {\n if (get(timeout) < 0)\n return;\n\n emit('update:model-value', false);\n}\n\nwatchImmediate(modelValue, (display) => {\n if (!display)\n return;\n\n const duration = get(timeout);\n if (duration > 0) {\n setTimeout(() => {\n emit('update:model-value', false);\n }, duration);\n }\n});\n</script>\n\n<template>\n <Teleport to=\"body\">\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=\"modelValue\"\n class=\"top-2 right-2 fixed drop-shadow-lg rounded-sm z-50\"\n :class=\"{\n 'bg-white dark:bg-[#363636]': !theme,\n 'bg-white text-rui-light-text': theme === 'light',\n 'bg-[#363636] text-rui-dark-text': theme === 'dark',\n }\"\n :style=\"style\"\n v-bind=\"$attrs\"\n @click=\"dismiss()\"\n >\n <slot />\n </div>\n </Transition>\n </Teleport>\n</template>\n"],"names":["_createBlock","_Teleport","_createVNode","_Transition","_unref","_openBlock","_createElementBlock","_mergeProps","$attrs","_renderSlot"],"mappings":";;;;;;;;;;;;;;;;;;AAaA,UAAM,QAAQ;AAQd,UAAM,OAAO;AAIb,UAAM,EAAE,SAAS,YAAY,MAAA,IAAU,OAAO,KAAK;AAEnD,UAAM,QAAQ,SAAS,OAAO;AAAA,MAC5B,OAAO,mBAAmB,IAAI,KAAK,CAAC;AAAA,IAAA,EACpC;AAEF,aAAS,UAAU;AACjB,UAAI,IAAI,OAAO,IAAI;AACjB;AAEF,WAAK,sBAAsB,KAAK;AAAA,IAClC;AAEA,mBAAe,YAAY,CAAC,YAAY;AACtC,UAAI,CAAC;AACH;AAEF,YAAM,WAAW,IAAI,OAAO;AAC5B,UAAI,WAAW,GAAG;AAChB,mBAAW,MAAM;AACf,eAAK,sBAAsB,KAAK;AAAA,QAClC,GAAG,QAAQ;AAAA,MACb;AAAA,IACF,CAAC;;0BAICA,YAwBWC,UAAA,EAxBD,IAAG,UAAM;AAAA,QACjBC,YAsBaC,YAAA;AAAA,UArBX,oBAAiB;AAAA,UACjB,sBAAmB;AAAA,UACnB,kBAAe;AAAA,UACf,oBAAiB;AAAA,UACjB,sBAAmB;AAAA,UACnB,kBAAe;AAAA,QAAA;2BAEf,MAaM;AAAA,YAZEC,MAAA,UAAA,KADRC,aAAAC,mBAaM,OAbNC,WAaM;AAAA;cAXJ,QAAM,sDAAoD;AAAA,+CACP,QAAA;AAAA,gDAAiD,QAAA,UAAK;AAAA,mDAA2D,QAAA,UAAK;AAAA,cAAA;cAKxK,OAAOH,MAAA,KAAA;AAAA,YAAA,GACAI,KAAAA,QAAM;AAAA,cACb,+CAAO,QAAA;AAAA,YAAO;cAEfC,WAAQ,KAAA,QAAA,SAAA;AAAA,YAAA;;;;;;;;"}
1
+ {"version":3,"file":"RuiNotification.vue.js","sources":["../../../../src/components/overlays/notification/RuiNotification.vue"],"sourcesContent":["<script lang='ts' setup>\nimport { transformPropsUnit } from '@/utils/helpers';\n\nexport interface NotificationProps {\n modelValue: boolean;\n timeout: number;\n width?: number | string;\n theme?: 'light' | 'dark';\n}\n\ndefineOptions({\n name: 'RuiNotification',\n inheritAttrs: false,\n});\n\nconst props = withDefaults(\n defineProps<NotificationProps>(),\n {\n width: 400,\n theme: undefined,\n },\n);\n\nconst emit = defineEmits<{\n (e: 'update:model-value', value: boolean): void;\n}>();\n\nconst { timeout, modelValue, width } = toRefs(props);\n\nconst style = computed(() => ({\n width: transformPropsUnit(get(width)),\n}));\n\nfunction dismiss() {\n if (get(timeout) < 0)\n return;\n\n emit('update:model-value', false);\n}\n\nwatchImmediate(modelValue, (display) => {\n if (!display)\n return;\n\n const duration = get(timeout);\n if (duration > 0) {\n setTimeout(() => {\n emit('update:model-value', false);\n }, duration);\n }\n});\n</script>\n\n<template>\n <Teleport to=\"body\">\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=\"modelValue\"\n role=\"alert\"\n aria-live=\"polite\"\n class=\"top-2 right-2 fixed drop-shadow-lg rounded-sm z-50\"\n :class=\"{\n 'bg-white dark:bg-[#363636]': !theme,\n 'bg-white text-rui-light-text': theme === 'light',\n 'bg-[#363636] text-rui-dark-text': theme === 'dark',\n }\"\n :style=\"style\"\n v-bind=\"$attrs\"\n @click=\"dismiss()\"\n >\n <slot />\n </div>\n </Transition>\n </Teleport>\n</template>\n"],"names":["_createBlock","_Teleport","_createVNode","_Transition","_unref","_openBlock","_createElementBlock","_mergeProps","$attrs","_renderSlot"],"mappings":";;;;;;;;;;;;;;;;;;AAeA,UAAM,QAAQ;AAQd,UAAM,OAAO;AAIb,UAAM,EAAE,SAAS,YAAY,MAAA,IAAU,OAAO,KAAK;AAEnD,UAAM,QAAQ,SAAS,OAAO;AAAA,MAC5B,OAAO,mBAAmB,IAAI,KAAK,CAAC;AAAA,IAAA,EACpC;AAEF,aAAS,UAAU;AACjB,UAAI,IAAI,OAAO,IAAI;AACjB;AAEF,WAAK,sBAAsB,KAAK;AAAA,IAClC;AAEA,mBAAe,YAAY,CAAC,YAAY;AACtC,UAAI,CAAC;AACH;AAEF,YAAM,WAAW,IAAI,OAAO;AAC5B,UAAI,WAAW,GAAG;AAChB,mBAAW,MAAM;AACf,eAAK,sBAAsB,KAAK;AAAA,QAClC,GAAG,QAAQ;AAAA,MACb;AAAA,IACF,CAAC;;0BAICA,YA0BWC,UAAA,EA1BD,IAAG,UAAM;AAAA,QACjBC,YAwBaC,YAAA;AAAA,UAvBX,oBAAiB;AAAA,UACjB,sBAAmB;AAAA,UACnB,kBAAe;AAAA,UACf,oBAAiB;AAAA,UACjB,sBAAmB;AAAA,UACnB,kBAAe;AAAA,QAAA;2BAEf,MAeM;AAAA,YAdEC,MAAA,UAAA,KADRC,aAAAC,mBAeM,OAfNC,WAeM;AAAA;cAbJ,MAAK;AAAA,cACL,aAAU;AAAA,cACV,QAAM,sDAAoD;AAAA,+CACP,QAAA;AAAA,gDAAiD,QAAA,UAAK;AAAA,mDAA2D,QAAA,UAAK;AAAA,cAAA;cAKxK,OAAOH,MAAA,KAAA;AAAA,YAAA,GACAI,KAAAA,QAAM;AAAA,cACb,+CAAO,QAAA;AAAA,YAAO;cAEfC,WAAQ,KAAA,QAAA,SAAA;AAAA,YAAA;;;;;;;;"}
@@ -22,11 +22,11 @@ declare const __VLS_base: import("vue").DefineComponent<Props, {
22
22
  onOpen: (immediate?: boolean) => void;
23
23
  onClose: (immediate?: boolean) => void;
24
24
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
25
- popper: PopperOptions;
26
25
  text: string | null;
27
26
  disabled: boolean;
28
27
  openDelay: number;
29
28
  closeDelay: number;
29
+ popper: PopperOptions;
30
30
  hideArrow: boolean;
31
31
  persistOnTooltipHover: boolean;
32
32
  tooltipClass: string;
@@ -1,6 +1,7 @@
1
- import { defineComponent, toRefs, createElementBlock, openBlock, unref, normalizeClass, renderSlot, createBlock, createCommentVNode, Teleport, createVNode, TransitionGroup, withCtx, createTextVNode, toDisplayString } from "vue";
1
+ import { defineComponent, toRefs, useId, openBlock, createElementBlock, unref, normalizeClass, renderSlot, createBlock, Teleport, createVNode, TransitionGroup, withCtx, createTextVNode, toDisplayString, createCommentVNode } from "vue";
2
2
  import { usePopper } from "../../../composables/popper.js";
3
- const _hoisted_1 = ["data-tooltip-disabled"];
3
+ const _hoisted_1 = ["data-tooltip-disabled", "aria-describedby"];
4
+ const _hoisted_2 = ["id"];
4
5
  const _sfc_main = /* @__PURE__ */ defineComponent({
5
6
  ...{
6
7
  name: "RuiTooltip"
@@ -19,6 +20,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
19
20
  setup(__props, { expose: __expose }) {
20
21
  const props = __props;
21
22
  const { closeDelay, openDelay, popper, disabled } = toRefs(props);
23
+ const tooltipId = useId();
22
24
  const {
23
25
  reference: activator,
24
26
  popper: tooltip,
@@ -39,6 +41,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
39
41
  ref: activator,
40
42
  class: normalizeClass(_ctx.$style.wrapper),
41
43
  "data-tooltip-disabled": unref(disabled),
44
+ "aria-describedby": !unref(disabled) && unref(open) ? unref(tooltipId) : void 0,
42
45
  onMouseover: _cache[4] || (_cache[4] = ($event) => unref(onOpen)()),
43
46
  onMouseleave: _cache[5] || (_cache[5] = ($event) => unref(onClose)()),
44
47
  onFocusin: _cache[6] || (_cache[6] = ($event) => unref(onOpen)()),
@@ -54,6 +57,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
54
57
  }, [
55
58
  unref(popperEnter) ? (openBlock(), createElementBlock("div", {
56
59
  key: 0,
60
+ id: unref(tooltipId),
57
61
  ref_key: "tooltip",
58
62
  ref: tooltip,
59
63
  class: normalizeClass([
@@ -93,7 +97,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
93
97
  ]),
94
98
  _: 3
95
99
  })
96
- ], 2)) : createCommentVNode("", true)
100
+ ], 10, _hoisted_2)) : createCommentVNode("", true)
97
101
  ])) : createCommentVNode("", true)
98
102
  ], 42, _hoisted_1);
99
103
  };
@@ -1 +1 @@
1
- {"version":3,"file":"RuiTooltip.vue2.js","sources":["../../../../src/components/overlays/tooltip/RuiTooltip.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { type PopperOptions, usePopper } from '@/composables/popper';\n\nexport interface Props {\n text?: string | null;\n disabled?: boolean;\n hideArrow?: boolean;\n openDelay?: number;\n closeDelay?: number;\n persistOnTooltipHover?: boolean;\n popper?: PopperOptions;\n tooltipClass?: string;\n}\n\ndefineOptions({\n name: 'RuiTooltip',\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n text: null,\n disabled: false,\n hideArrow: false,\n openDelay: 0,\n closeDelay: 500,\n persistOnTooltipHover: false,\n popper: () => ({}),\n tooltipClass: '',\n});\n\nconst { closeDelay, openDelay, popper, disabled } = toRefs(props);\n\nconst {\n reference: activator,\n popper: tooltip,\n open,\n popperEnter,\n onOpen,\n onClose,\n onPopperLeave,\n updatePopper,\n} = usePopper(popper, disabled, openDelay, closeDelay);\n\ndefineExpose({\n onOpen,\n onClose,\n});\n</script>\n\n<template>\n <div\n ref=\"activator\"\n :class=\"$style.wrapper\"\n :data-tooltip-disabled=\"disabled\"\n @mouseover=\"onOpen()\"\n @mouseleave=\"onClose()\"\n @focusin=\"onOpen()\"\n @focusout=\"onClose()\"\n >\n <slot\n name=\"activator\"\n :open=\"open\"\n :close=\"onClose\"\n />\n\n <Teleport\n v-if=\"!disabled\"\n to=\"body\"\n >\n <div\n v-if=\"popperEnter\"\n ref=\"tooltip\"\n :class=\"[\n $style.tooltip,\n tooltipClass,\n $style[`tooltip__${popper?.strategy ?? 'absolute'}`],\n ]\"\n role=\"tooltip\"\n >\n <TransitionGroup\n enter-active-class=\"transition ease-out duration-200\"\n enter-from-class=\"opacity-0 translate-y-1\"\n enter-to-class=\"opacity-100 translate-y-0\"\n leave-active-class=\"transition ease-in duration-150\"\n leave-from-class=\"opacity-100 translate-y-0\"\n leave-to-class=\"opacity-0 translate-y-1\"\n @before-enter=\"updatePopper()\"\n @after-leave=\"onPopperLeave()\"\n >\n <div\n v-if=\"open\"\n key=\"tooltip\"\n :class=\"$style.base\"\n role=\"tooltip-content\"\n @mouseover=\"persistOnTooltipHover && onOpen()\"\n @mouseleave=\"persistOnTooltipHover && onClose()\"\n >\n <slot>\n {{ text }}\n </slot>\n </div>\n <span\n v-if=\"!hideArrow\"\n :class=\"[$style.arrow, { [$style.arrow__open ?? '']: open }]\"\n data-popper-arrow\n />\n </TransitionGroup>\n </div>\n </Teleport>\n </div>\n</template>\n\n<style lang=\"scss\" module>\n$arrowSize: 0.625rem;\n.wrapper {\n @apply relative inline-flex;\n}\n\n.tooltip {\n @apply w-max transform transition-opacity delay-0 z-[9999];\n\n &__fixed {\n @apply fixed;\n }\n\n &__absolute {\n @apply absolute;\n }\n\n .base {\n @apply px-2 py-1 text-xs font-normal;\n @apply bg-rui-grey-700/90 text-white rounded shadow;\n }\n\n .arrow {\n @apply w-2.5 h-2.5 transition-opacity opacity-0;\n\n &__open {\n @apply opacity-100;\n }\n\n &::before {\n @apply block border-[0.3125rem] origin-center;\n @apply border-l-transparent border-b-transparent border-t-rui-grey-700/90 border-r-rui-grey-700/90;\n\n content: '';\n border-radius: 0 0.125rem 0 0;\n }\n }\n\n &[data-popper-placement*='bottom'] .arrow {\n top: calc(0.5px - #{$arrowSize} / 2);\n\n &::before {\n @apply -rotate-45;\n }\n }\n\n &[data-popper-placement*='top'] .arrow {\n bottom: calc(0.5px - #{$arrowSize} / 2);\n\n &::before {\n @apply rotate-[135deg];\n }\n }\n\n &[data-popper-placement*='left'] .arrow {\n right: calc(0.5px - #{$arrowSize} / 2);\n\n &::before {\n @apply rotate-45;\n }\n }\n\n &[data-popper-placement*='right'] .arrow {\n left: calc(0.5px - #{$arrowSize} / 2);\n\n &::before {\n @apply -rotate-[135deg];\n }\n }\n}\n</style>\n"],"names":["_createElementBlock","_normalizeClass","$style","_unref","_renderSlot","_createBlock","_Teleport","_createVNode","_TransitionGroup"],"mappings":";;;;;;;;;;;;;;;;;;;AAkBA,UAAM,QAAQ;AAWd,UAAM,EAAE,YAAY,WAAW,QAAQ,SAAA,IAAa,OAAO,KAAK;AAEhE,UAAM;AAAA,MACJ,WAAW;AAAA,MACX,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACE,UAAU,QAAQ,UAAU,WAAW,UAAU;AAErD,aAAa;AAAA,MACX;AAAA,MACA;AAAA,IAAA,CACD;;0BAICA,mBA2DM,OAAA;AAAA,iBA1DA;AAAA,QAAJ,KAAI;AAAA,QACH,OAAKC,eAAEC,KAAAA,OAAO,OAAO;AAAA,QACrB,yBAAuBC,MAAA,QAAA;AAAA,QACvB,mDAAWA,MAAA,MAAA;QACX,oDAAYA,MAAA,OAAA;QACZ,iDAASA,MAAA,MAAA;QACT,kDAAUA,MAAA,OAAA,EAAA;AAAA,MAAO;QAElBC,WAIE,KAAA,QAAA,aAAA;AAAA,UAFC,MAAMD,MAAA,IAAA;AAAA,UACN,OAAOA,MAAA,OAAA;AAAA,QAAA;SAIDA,MAAA,QAAA,kBADTE,YA2CWC,UAAA;AAAA;UAzCT,IAAG;AAAA,QAAA;UAGKH,MAAA,WAAA,kBADRH,mBAsCM,OAAA;AAAA;qBApCA;AAAA,YAAJ,KAAI;AAAA,YACH,OAAKC,eAAA;AAAA,cAAcC,KAAAA,OAAO;AAAA,cAAmB,QAAA;AAAA,cAAwBA,KAAAA,OAAM,YAAaC,MAAA,MAAA,GAAQ,YAAQ,UAAA,EAAA;AAAA,YAAA;YAKzG,MAAK;AAAA,UAAA;YAELI,YA2BkBC,iBAAA;AAAA,cA1BhB,sBAAmB;AAAA,cACnB,oBAAiB;AAAA,cACjB,kBAAe;AAAA,cACf,sBAAmB;AAAA,cACnB,oBAAiB;AAAA,cACjB,kBAAe;AAAA,cACd,qDAAcL,MAAA,YAAA;cACd,oDAAaA,MAAA,aAAA,EAAA;AAAA,YAAa;+BAE3B,MAWM;AAAA,gBAVEA,MAAA,IAAA,kBADRH,mBAWM,OAAA;AAAA,kBATJ,KAAI;AAAA,kBACH,OAAKC,eAAEC,KAAAA,OAAO,IAAI;AAAA,kBACnB,MAAK;AAAA,kBACJ,aAAS,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,QAAA,yBAAyBC,MAAA,MAAA,EAAA;AAAA,kBACpC,cAAU,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,QAAA,yBAAyBA,MAAA,OAAA,EAAA;AAAA,gBAAO;kBAE7CC,WAEO,4BAFP,MAEO;AAAA,oDADF,QAAA,IAAI,GAAA,CAAA;AAAA,kBAAA;;iBAIF,QAAA,0BADTJ,mBAIE,QAAA;AAAA;kBAFC,OAAKC,eAAA,CAAGC,YAAO,UAAUA,KAAAA,OAAO,eAAW,EAAA,GAASC,MAAA,IAAA,EAAA,CAAI,CAAA;AAAA,kBACzD,qBAAA;AAAA,gBAAA;;;;;;;;;;"}
1
+ {"version":3,"file":"RuiTooltip.vue2.js","sources":["../../../../src/components/overlays/tooltip/RuiTooltip.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { type PopperOptions, usePopper } from '@/composables/popper';\n\nexport interface Props {\n text?: string | null;\n disabled?: boolean;\n hideArrow?: boolean;\n openDelay?: number;\n closeDelay?: number;\n persistOnTooltipHover?: boolean;\n popper?: PopperOptions;\n tooltipClass?: string;\n}\n\ndefineOptions({\n name: 'RuiTooltip',\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n text: null,\n disabled: false,\n hideArrow: false,\n openDelay: 0,\n closeDelay: 500,\n persistOnTooltipHover: false,\n popper: () => ({}),\n tooltipClass: '',\n});\n\nconst { closeDelay, openDelay, popper, disabled } = toRefs(props);\n\nconst tooltipId = useId();\n\nconst {\n reference: activator,\n popper: tooltip,\n open,\n popperEnter,\n onOpen,\n onClose,\n onPopperLeave,\n updatePopper,\n} = usePopper(popper, disabled, openDelay, closeDelay);\n\ndefineExpose({\n onOpen,\n onClose,\n});\n</script>\n\n<template>\n <div\n ref=\"activator\"\n :class=\"$style.wrapper\"\n :data-tooltip-disabled=\"disabled\"\n :aria-describedby=\"!disabled && open ? tooltipId : undefined\"\n @mouseover=\"onOpen()\"\n @mouseleave=\"onClose()\"\n @focusin=\"onOpen()\"\n @focusout=\"onClose()\"\n >\n <slot\n name=\"activator\"\n :open=\"open\"\n :close=\"onClose\"\n />\n\n <Teleport\n v-if=\"!disabled\"\n to=\"body\"\n >\n <div\n v-if=\"popperEnter\"\n :id=\"tooltipId\"\n ref=\"tooltip\"\n :class=\"[\n $style.tooltip,\n tooltipClass,\n $style[`tooltip__${popper?.strategy ?? 'absolute'}`],\n ]\"\n role=\"tooltip\"\n >\n <TransitionGroup\n enter-active-class=\"transition ease-out duration-200\"\n enter-from-class=\"opacity-0 translate-y-1\"\n enter-to-class=\"opacity-100 translate-y-0\"\n leave-active-class=\"transition ease-in duration-150\"\n leave-from-class=\"opacity-100 translate-y-0\"\n leave-to-class=\"opacity-0 translate-y-1\"\n @before-enter=\"updatePopper()\"\n @after-leave=\"onPopperLeave()\"\n >\n <div\n v-if=\"open\"\n key=\"tooltip\"\n :class=\"$style.base\"\n role=\"tooltip-content\"\n @mouseover=\"persistOnTooltipHover && onOpen()\"\n @mouseleave=\"persistOnTooltipHover && onClose()\"\n >\n <slot>\n {{ text }}\n </slot>\n </div>\n <span\n v-if=\"!hideArrow\"\n :class=\"[$style.arrow, { [$style.arrow__open ?? '']: open }]\"\n data-popper-arrow\n />\n </TransitionGroup>\n </div>\n </Teleport>\n </div>\n</template>\n\n<style lang=\"scss\" module>\n$arrowSize: 0.625rem;\n.wrapper {\n @apply relative inline-flex;\n}\n\n.tooltip {\n @apply w-max transform transition-opacity delay-0 z-[9999];\n\n &__fixed {\n @apply fixed;\n }\n\n &__absolute {\n @apply absolute;\n }\n\n .base {\n @apply px-2 py-1 text-xs font-normal;\n @apply bg-rui-grey-700/90 text-white rounded shadow;\n }\n\n .arrow {\n @apply w-2.5 h-2.5 transition-opacity opacity-0;\n\n &__open {\n @apply opacity-100;\n }\n\n &::before {\n @apply block border-[0.3125rem] origin-center;\n @apply border-l-transparent border-b-transparent border-t-rui-grey-700/90 border-r-rui-grey-700/90;\n\n content: '';\n border-radius: 0 0.125rem 0 0;\n }\n }\n\n &[data-popper-placement*='bottom'] .arrow {\n top: calc(0.5px - #{$arrowSize} / 2);\n\n &::before {\n @apply -rotate-45;\n }\n }\n\n &[data-popper-placement*='top'] .arrow {\n bottom: calc(0.5px - #{$arrowSize} / 2);\n\n &::before {\n @apply rotate-[135deg];\n }\n }\n\n &[data-popper-placement*='left'] .arrow {\n right: calc(0.5px - #{$arrowSize} / 2);\n\n &::before {\n @apply rotate-45;\n }\n }\n\n &[data-popper-placement*='right'] .arrow {\n left: calc(0.5px - #{$arrowSize} / 2);\n\n &::before {\n @apply -rotate-[135deg];\n }\n }\n}\n</style>\n"],"names":["_createElementBlock","_normalizeClass","$style","_unref","_renderSlot","_createBlock","_Teleport","_createVNode","_TransitionGroup"],"mappings":";;;;;;;;;;;;;;;;;;;;AAkBA,UAAM,QAAQ;AAWd,UAAM,EAAE,YAAY,WAAW,QAAQ,SAAA,IAAa,OAAO,KAAK;AAEhE,UAAM,YAAY,MAAA;AAElB,UAAM;AAAA,MACJ,WAAW;AAAA,MACX,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACE,UAAU,QAAQ,UAAU,WAAW,UAAU;AAErD,aAAa;AAAA,MACX;AAAA,MACA;AAAA,IAAA,CACD;;0BAICA,mBA6DM,OAAA;AAAA,iBA5DA;AAAA,QAAJ,KAAI;AAAA,QACH,OAAKC,eAAEC,KAAAA,OAAO,OAAO;AAAA,QACrB,yBAAuBC,MAAA,QAAA;AAAA,QACvB,qBAAmBA,MAAA,QAAA,KAAYA,cAAOA,MAAA,SAAA,IAAY;AAAA,QAClD,mDAAWA,MAAA,MAAA;QACX,oDAAYA,MAAA,OAAA;QACZ,iDAASA,MAAA,MAAA;QACT,kDAAUA,MAAA,OAAA,EAAA;AAAA,MAAO;QAElBC,WAIE,KAAA,QAAA,aAAA;AAAA,UAFC,MAAMD,MAAA,IAAA;AAAA,UACN,OAAOA,MAAA,OAAA;AAAA,QAAA;SAIDA,MAAA,QAAA,kBADTE,YA4CWC,UAAA;AAAA;UA1CT,IAAG;AAAA,QAAA;UAGKH,MAAA,WAAA,kBADRH,mBAuCM,OAAA;AAAA;YArCH,IAAIG,MAAA,SAAA;AAAA,qBACD;AAAA,YAAJ,KAAI;AAAA,YACH,OAAKF,eAAA;AAAA,cAAcC,KAAAA,OAAO;AAAA,cAAmB,QAAA;AAAA,cAAwBA,KAAAA,OAAM,YAAaC,MAAA,MAAA,GAAQ,YAAQ,UAAA,EAAA;AAAA,YAAA;YAKzG,MAAK;AAAA,UAAA;YAELI,YA2BkBC,iBAAA;AAAA,cA1BhB,sBAAmB;AAAA,cACnB,oBAAiB;AAAA,cACjB,kBAAe;AAAA,cACf,sBAAmB;AAAA,cACnB,oBAAiB;AAAA,cACjB,kBAAe;AAAA,cACd,qDAAcL,MAAA,YAAA;cACd,oDAAaA,MAAA,aAAA,EAAA;AAAA,YAAa;+BAE3B,MAWM;AAAA,gBAVEA,MAAA,IAAA,kBADRH,mBAWM,OAAA;AAAA,kBATJ,KAAI;AAAA,kBACH,OAAKC,eAAEC,KAAAA,OAAO,IAAI;AAAA,kBACnB,MAAK;AAAA,kBACJ,aAAS,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,QAAA,yBAAyBC,MAAA,MAAA,EAAA;AAAA,kBACpC,cAAU,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,QAAA,yBAAyBA,MAAA,OAAA,EAAA;AAAA,gBAAO;kBAE7CC,WAEO,4BAFP,MAEO;AAAA,oDADF,QAAA,IAAI,GAAA,CAAA;AAAA,kBAAA;;iBAIF,QAAA,0BADTJ,mBAIE,QAAA;AAAA;kBAFC,OAAKC,eAAA,CAAGC,YAAO,UAAUA,KAAAA,OAAO,eAAW,EAAA,GAASC,MAAA,IAAA,EAAA,CAAI,CAAA;AAAA,kBACzD,qBAAA;AAAA,gBAAA;;;;;;;;;;"}
@@ -26,9 +26,9 @@ export interface Props {
26
26
  declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
27
27
  size: number | string;
28
28
  value: number;
29
- color: ContextColorsType | "inherit";
30
29
  bufferValue: number;
31
30
  variant: "determinate" | "indeterminate" | "buffer";
31
+ color: ContextColorsType | "inherit";
32
32
  circular: boolean;
33
33
  showLabel: boolean;
34
34
  thickness: number | string;
@@ -1,4 +1,4 @@
1
- import { defineComponent, useCssVars, unref, computed, toRefs, createElementBlock, openBlock, normalizeClass, createElementVNode, createCommentVNode, Fragment, toDisplayString } from "vue";
1
+ import { defineComponent, useCssVars, unref, toRefs, computed, openBlock, createElementBlock, normalizeClass, createElementVNode, Fragment, createCommentVNode, toDisplayString } from "vue";
2
2
  import { get } from "@vueuse/shared";
3
3
  const _hoisted_1 = ["aria-valuenow"];
4
4
  const _hoisted_2 = ["viewBox"];