@bitrix24/b24ui-nuxt 0.5.11 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.nuxt/b24ui/advice.ts +10 -2
- package/.nuxt/b24ui/alert.ts +10 -2
- package/.nuxt/b24ui/avatar-group.ts +10 -2
- package/.nuxt/b24ui/avatar.ts +10 -2
- package/.nuxt/b24ui/badge.ts +10 -2
- package/.nuxt/b24ui/button-group.ts +10 -2
- package/.nuxt/b24ui/button.ts +16 -6
- package/.nuxt/b24ui/calendar.ts +10 -2
- package/.nuxt/b24ui/checkbox.ts +10 -2
- package/.nuxt/b24ui/chip.ts +10 -2
- package/.nuxt/b24ui/collapsible.ts +10 -2
- package/.nuxt/b24ui/container.ts +10 -2
- package/.nuxt/b24ui/countdown.ts +10 -2
- package/.nuxt/b24ui/description-list.ts +10 -2
- package/.nuxt/b24ui/dropdown-menu.ts +10 -2
- package/.nuxt/b24ui/form-field.ts +10 -2
- package/.nuxt/b24ui/form.ts +10 -2
- package/.nuxt/b24ui/input-menu.ts +12 -4
- package/.nuxt/b24ui/input-number.ts +10 -2
- package/.nuxt/b24ui/input.ts +10 -2
- package/.nuxt/b24ui/kbd.ts +10 -2
- package/.nuxt/b24ui/link.ts +10 -2
- package/.nuxt/b24ui/modal.ts +10 -2
- package/.nuxt/b24ui/navbar-divider.ts +10 -2
- package/.nuxt/b24ui/navbar-section.ts +10 -2
- package/.nuxt/b24ui/navbar-spacer.ts +10 -2
- package/.nuxt/b24ui/navbar.ts +10 -2
- package/.nuxt/b24ui/navigation-menu.ts +10 -2
- package/.nuxt/b24ui/popover.ts +10 -2
- package/.nuxt/b24ui/progress.ts +10 -2
- package/.nuxt/b24ui/radio-group.ts +10 -2
- package/.nuxt/b24ui/range.ts +10 -2
- package/.nuxt/b24ui/select-menu.ts +14 -6
- package/.nuxt/b24ui/select.ts +12 -4
- package/.nuxt/b24ui/separator.ts +10 -2
- package/.nuxt/b24ui/sidebar-body.ts +10 -2
- package/.nuxt/b24ui/sidebar-footer.ts +10 -2
- package/.nuxt/b24ui/sidebar-header.ts +10 -2
- package/.nuxt/b24ui/sidebar-heading.ts +10 -2
- package/.nuxt/b24ui/sidebar-layout.ts +10 -2
- package/.nuxt/b24ui/sidebar-section.ts +10 -2
- package/.nuxt/b24ui/sidebar-spacer.ts +10 -2
- package/.nuxt/b24ui/sidebar.ts +10 -2
- package/.nuxt/b24ui/skeleton.ts +10 -2
- package/.nuxt/b24ui/slideover.ts +10 -2
- package/.nuxt/b24ui/stacked-layout.ts +10 -2
- package/.nuxt/b24ui/switch.ts +10 -2
- package/.nuxt/b24ui/tabs.ts +10 -2
- package/.nuxt/b24ui/textarea.ts +10 -2
- package/.nuxt/b24ui/toast.ts +10 -2
- package/.nuxt/b24ui/toaster.ts +10 -2
- package/.nuxt/b24ui/tooltip.ts +10 -2
- package/cli/templates.mjs +19 -15
- package/dist/meta.d.mts +5675 -7513
- package/dist/meta.mjs +5675 -7513
- package/dist/module.json +3 -3
- package/dist/module.mjs +2 -2
- package/dist/runtime/components/Advice.vue +27 -55
- package/dist/runtime/components/Advice.vue.d.ts +56 -0
- package/dist/runtime/components/Alert.vue +35 -97
- package/dist/runtime/components/Alert.vue.d.ts +97 -0
- package/dist/runtime/components/App.vue +24 -34
- package/dist/runtime/components/App.vue.d.ts +23 -0
- package/dist/runtime/components/Avatar.vue +43 -82
- package/dist/runtime/components/Avatar.vue.d.ts +62 -0
- package/dist/runtime/components/AvatarGroup.vue +40 -77
- package/dist/runtime/components/AvatarGroup.vue.d.ts +40 -0
- package/dist/runtime/components/Badge.vue +40 -84
- package/dist/runtime/components/Badge.vue.d.ts +78 -0
- package/dist/runtime/components/Button.vue +107 -164
- package/dist/runtime/components/Button.vue.d.ts +115 -0
- package/dist/runtime/components/ButtonGroup.vue +25 -52
- package/dist/runtime/components/ButtonGroup.vue.d.ts +63 -0
- package/dist/runtime/components/Calendar.vue +73 -153
- package/dist/runtime/components/Calendar.vue.d.ts +107 -0
- package/dist/runtime/components/Checkbox.vue +42 -74
- package/dist/runtime/components/Checkbox.vue.d.ts +55 -0
- package/dist/runtime/components/Chip.vue +26 -75
- package/dist/runtime/components/Chip.vue.d.ts +77 -0
- package/dist/runtime/components/Collapsible.vue +22 -41
- package/dist/runtime/components/Collapsible.vue.d.ts +50 -0
- package/dist/runtime/components/Container.vue +15 -28
- package/dist/runtime/components/Container.vue.d.ts +27 -0
- package/dist/runtime/components/Countdown.vue +153 -379
- package/dist/runtime/components/Countdown.vue.d.ts +122 -0
- package/dist/runtime/components/DescriptionList.vue +78 -150
- package/dist/runtime/components/DescriptionList.vue.d.ts +109 -0
- package/dist/runtime/components/DropdownMenu.vue +38 -140
- package/dist/runtime/components/DropdownMenu.vue.d.ts +133 -0
- package/dist/runtime/components/DropdownMenuContent.vue +65 -79
- package/dist/runtime/components/DropdownMenuContent.vue.d.ts +51 -0
- package/dist/runtime/components/Form.vue +132 -218
- package/dist/runtime/components/Form.vue.d.ts +55 -0
- package/dist/runtime/components/FormField.vue +36 -81
- package/dist/runtime/components/FormField.vue.d.ts +73 -0
- package/dist/runtime/components/Input.vue +79 -180
- package/dist/runtime/components/Input.vue.d.ts +135 -0
- package/dist/runtime/components/InputMenu.vue +185 -382
- package/dist/runtime/components/InputMenu.vue.d.ts +357 -0
- package/dist/runtime/components/InputNumber.vue +77 -176
- package/dist/runtime/components/InputNumber.vue.d.ts +238 -0
- package/dist/runtime/components/Kbd.vue +20 -46
- package/dist/runtime/components/Kbd.vue.d.ts +55 -0
- package/dist/runtime/components/Link.vue +99 -179
- package/dist/runtime/components/Link.vue.d.ts +129 -0
- package/dist/runtime/components/LinkBase.vue +33 -42
- package/dist/runtime/components/LinkBase.vue.d.ts +48 -0
- package/dist/runtime/components/Modal.vue +48 -128
- package/dist/runtime/components/Modal.vue.d.ts +124 -0
- package/dist/runtime/components/ModalDialogClose.vue +5 -8
- package/dist/runtime/components/ModalDialogClose.vue.d.ts +10 -0
- package/dist/runtime/components/Navbar.vue +15 -33
- package/dist/runtime/components/Navbar.vue.d.ts +46 -0
- package/dist/runtime/components/NavbarDivider.vue +15 -33
- package/dist/runtime/components/NavbarDivider.vue.d.ts +46 -0
- package/dist/runtime/components/NavbarSection.vue +15 -33
- package/dist/runtime/components/NavbarSection.vue.d.ts +46 -0
- package/dist/runtime/components/NavbarSpacer.vue +15 -33
- package/dist/runtime/components/NavbarSpacer.vue.d.ts +46 -0
- package/dist/runtime/components/NavigationMenu.vue +74 -209
- package/dist/runtime/components/NavigationMenu.vue.d.ts +159 -0
- package/dist/runtime/components/OverlayProvider.vue +14 -18
- package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -0
- package/dist/runtime/components/Popover.vue +40 -82
- package/dist/runtime/components/Popover.vue.d.ts +79 -0
- package/dist/runtime/components/Progress.vue +70 -137
- package/dist/runtime/components/Progress.vue.d.ts +103 -0
- package/dist/runtime/components/RadioGroup.vue +59 -135
- package/dist/runtime/components/RadioGroup.vue.d.ts +88 -0
- package/dist/runtime/components/Range.vue +46 -86
- package/dist/runtime/components/Range.vue.d.ts +73 -0
- package/dist/runtime/components/Select.vue +110 -261
- package/dist/runtime/components/Select.vue.d.ts +170 -0
- package/dist/runtime/components/SelectMenu.vue +161 -348
- package/dist/runtime/components/SelectMenu.vue.d.ts +217 -0
- package/dist/runtime/components/Separator.vue +28 -72
- package/dist/runtime/components/Separator.vue.d.ts +77 -0
- package/dist/runtime/components/Sidebar.vue +15 -33
- package/dist/runtime/components/Sidebar.vue.d.ts +46 -0
- package/dist/runtime/components/SidebarBody.vue +17 -39
- package/dist/runtime/components/SidebarBody.vue.d.ts +53 -0
- package/dist/runtime/components/SidebarFooter.vue +15 -33
- package/dist/runtime/components/SidebarFooter.vue.d.ts +46 -0
- package/dist/runtime/components/SidebarHeader.vue +15 -33
- package/dist/runtime/components/SidebarHeader.vue.d.ts +46 -0
- package/dist/runtime/components/SidebarHeading.vue +15 -33
- package/dist/runtime/components/SidebarHeading.vue.d.ts +46 -0
- package/dist/runtime/components/SidebarLayout.vue +34 -71
- package/dist/runtime/components/SidebarLayout.vue.d.ts +65 -0
- package/dist/runtime/components/SidebarSection.vue +15 -33
- package/dist/runtime/components/SidebarSection.vue.d.ts +46 -0
- package/dist/runtime/components/SidebarSpacer.vue +15 -33
- package/dist/runtime/components/SidebarSpacer.vue.d.ts +46 -0
- package/dist/runtime/components/Skeleton.vue +14 -23
- package/dist/runtime/components/Skeleton.vue.d.ts +26 -0
- package/dist/runtime/components/Slideover.vue +50 -132
- package/dist/runtime/components/Slideover.vue.d.ts +127 -0
- package/dist/runtime/components/StackedLayout.vue +34 -74
- package/dist/runtime/components/StackedLayout.vue.d.ts +65 -0
- package/dist/runtime/components/Switch.vue +46 -96
- package/dist/runtime/components/Switch.vue.d.ts +77 -0
- package/dist/runtime/components/Tabs.vue +41 -106
- package/dist/runtime/components/Tabs.vue.d.ts +104 -0
- package/dist/runtime/components/Textarea.vue +92 -202
- package/dist/runtime/components/Textarea.vue.d.ts +141 -0
- package/dist/runtime/components/Toast.vue +47 -106
- package/dist/runtime/components/Toast.vue.d.ts +95 -0
- package/dist/runtime/components/Toaster.vue +70 -116
- package/dist/runtime/components/Toaster.vue.d.ts +70 -0
- package/dist/runtime/components/Tooltip.vue +36 -65
- package/dist/runtime/components/Tooltip.vue.d.ts +65 -0
- package/dist/runtime/components/content/TableWrapper.vue +24 -71
- package/dist/runtime/components/content/TableWrapper.vue.d.ts +83 -0
- package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
- package/dist/runtime/composables/useButtonGroup.d.ts +2 -2
- package/dist/runtime/composables/useComponentIcons.d.ts +3 -3
- package/dist/runtime/composables/useFormField.d.ts +2 -2
- package/dist/runtime/composables/useOverlay.d.ts +14 -7
- package/dist/runtime/composables/useOverlay.js +14 -6
- package/dist/runtime/prose/A.vue +16 -26
- package/dist/runtime/prose/A.vue.d.ts +27 -0
- package/dist/runtime/prose/Blockquote.vue +14 -26
- package/dist/runtime/prose/Blockquote.vue.d.ts +27 -0
- package/dist/runtime/prose/Code.vue +15 -32
- package/dist/runtime/prose/Code.vue.d.ts +31 -0
- package/dist/runtime/prose/Em.vue +16 -26
- package/dist/runtime/prose/Em.vue.d.ts +27 -0
- package/dist/runtime/prose/H1.vue +14 -26
- package/dist/runtime/prose/H1.vue.d.ts +27 -0
- package/dist/runtime/prose/H2.vue +14 -26
- package/dist/runtime/prose/H2.vue.d.ts +27 -0
- package/dist/runtime/prose/H3.vue +14 -26
- package/dist/runtime/prose/H3.vue.d.ts +27 -0
- package/dist/runtime/prose/H4.vue +14 -26
- package/dist/runtime/prose/H4.vue.d.ts +27 -0
- package/dist/runtime/prose/H5.vue +14 -26
- package/dist/runtime/prose/H5.vue.d.ts +27 -0
- package/dist/runtime/prose/H6.vue +14 -26
- package/dist/runtime/prose/H6.vue.d.ts +27 -0
- package/dist/runtime/prose/Hr.vue +13 -22
- package/dist/runtime/prose/Hr.vue.d.ts +19 -0
- package/dist/runtime/prose/Img.vue +13 -26
- package/dist/runtime/prose/Img.vue.d.ts +19 -0
- package/dist/runtime/prose/Li.vue +14 -26
- package/dist/runtime/prose/Li.vue.d.ts +27 -0
- package/dist/runtime/prose/Ol.vue +14 -26
- package/dist/runtime/prose/Ol.vue.d.ts +27 -0
- package/dist/runtime/prose/P.vue +14 -26
- package/dist/runtime/prose/P.vue.d.ts +27 -0
- package/dist/runtime/prose/Pre.vue +17 -33
- package/dist/runtime/prose/Pre.vue.d.ts +47 -0
- package/dist/runtime/prose/Strong.vue +14 -26
- package/dist/runtime/prose/Strong.vue.d.ts +27 -0
- package/dist/runtime/prose/Table.vue +21 -57
- package/dist/runtime/prose/Table.vue.d.ts +74 -0
- package/dist/runtime/prose/Tbody.vue +14 -26
- package/dist/runtime/prose/Tbody.vue.d.ts +27 -0
- package/dist/runtime/prose/Td.vue +14 -26
- package/dist/runtime/prose/Td.vue.d.ts +27 -0
- package/dist/runtime/prose/Th.vue +14 -26
- package/dist/runtime/prose/Th.vue.d.ts +27 -0
- package/dist/runtime/prose/Thead.vue +14 -26
- package/dist/runtime/prose/Thead.vue.d.ts +27 -0
- package/dist/runtime/prose/Tr.vue +14 -26
- package/dist/runtime/prose/Tr.vue.d.ts +27 -0
- package/dist/runtime/prose/Ul.vue +14 -26
- package/dist/runtime/prose/Ul.vue.d.ts +27 -0
- package/dist/runtime/types/form.d.ts +1 -0
- package/dist/runtime/types/utils.d.ts +42 -3
- package/dist/runtime/utils/link.d.ts +3 -3
- package/dist/runtime/utils/tv.js +2 -2
- package/dist/runtime/vue/components/Link.vue +122 -208
- package/dist/runtime/vue/components/Link.vue.d.ts +129 -0
- package/dist/shared/{b24ui-nuxt.CS9Lf0os.mjs → b24ui-nuxt.wBs9vEU5.mjs} +33 -8
- package/dist/types.d.mts +3 -5
- package/dist/unplugin.mjs +1 -1
- package/dist/vite.mjs +1 -1
- package/package.json +19 -27
- package/dist/meta.cjs +0 -72112
- package/dist/meta.d.cts +0 -72110
- package/dist/meta.d.ts +0 -72110
- package/dist/module.cjs +0 -63
- package/dist/module.d.cts +0 -15
- package/dist/module.d.ts +0 -15
- package/dist/shared/b24ui-nuxt.DrKwIWoc.cjs +0 -7721
- package/dist/types.d.ts +0 -7
- package/dist/unplugin.cjs +0 -236
- package/dist/unplugin.d.cts +0 -33
- package/dist/unplugin.d.ts +0 -33
- package/dist/vite.cjs +0 -21
- package/dist/vite.d.cts +0 -14
- package/dist/vite.d.ts +0 -14
|
@@ -1,19 +1,15 @@
|
|
|
1
|
-
<script setup
|
|
2
|
-
import { computed } from
|
|
3
|
-
import { useOverlay
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const onClose = (id: symbol, value: any) => {
|
|
15
|
-
close(id, value)
|
|
16
|
-
}
|
|
1
|
+
<script setup>
|
|
2
|
+
import { computed } from "vue";
|
|
3
|
+
import { useOverlay } from "../composables/useOverlay";
|
|
4
|
+
const { overlays, unMount, close } = useOverlay();
|
|
5
|
+
const mountedOverlays = computed(() => overlays.filter((overlay) => overlay.isMounted));
|
|
6
|
+
const onAfterLeave = (id) => {
|
|
7
|
+
close(id);
|
|
8
|
+
unMount(id);
|
|
9
|
+
};
|
|
10
|
+
const onClose = (id, value) => {
|
|
11
|
+
close(id, value);
|
|
12
|
+
};
|
|
17
13
|
</script>
|
|
18
14
|
|
|
19
15
|
<template>
|
|
@@ -22,8 +18,8 @@ const onClose = (id: symbol, value: any) => {
|
|
|
22
18
|
v-for="overlay in mountedOverlays"
|
|
23
19
|
:key="overlay.id"
|
|
24
20
|
v-bind="overlay.props"
|
|
25
|
-
v-model:open="overlay.
|
|
26
|
-
@close="(value
|
|
21
|
+
v-model:open="overlay.isOpen"
|
|
22
|
+
@close="(value) => onClose(overlay.id, value)"
|
|
27
23
|
@after:leave="onAfterLeave(overlay.id)"
|
|
28
24
|
/>
|
|
29
25
|
</template>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
export default _default;
|
|
@@ -1,92 +1,50 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import
|
|
3
|
-
import type { AppConfig } from '@nuxt/schema'
|
|
4
|
-
import _appConfig from '#build/app.config'
|
|
5
|
-
import theme from '#build/b24ui/popover'
|
|
6
|
-
import { tv } from '../utils/tv'
|
|
7
|
-
import type { EmitsToProps } from '../types/utils'
|
|
8
|
-
|
|
9
|
-
const appConfigPopover = _appConfig as AppConfig & { b24ui: { popover: Partial<typeof theme> } }
|
|
10
|
-
|
|
11
|
-
const popover = tv({ extend: tv(theme), ...(appConfigPopover.b24ui?.popover || {}) })
|
|
12
|
-
|
|
13
|
-
export interface PopoverProps extends PopoverRootProps, Pick<HoverCardRootProps, 'openDelay' | 'closeDelay'> {
|
|
14
|
-
/**
|
|
15
|
-
* The display mode of the popover.
|
|
16
|
-
* @defaultValue 'click'
|
|
17
|
-
*/
|
|
18
|
-
mode?: 'click' | 'hover'
|
|
19
|
-
/**
|
|
20
|
-
* The content of the popover.
|
|
21
|
-
* @defaultValue { side: 'bottom', sideOffset: 8, collisionPadding: 8 }
|
|
22
|
-
*/
|
|
23
|
-
content?: Omit<PopoverContentProps, 'as' | 'asChild' | 'forceMount'> & Partial<EmitsToProps<PopoverContentEmits>>
|
|
24
|
-
/**
|
|
25
|
-
* Display an arrow alongside the popover.
|
|
26
|
-
* @defaultValue false
|
|
27
|
-
*/
|
|
28
|
-
arrow?: boolean | Omit<PopoverArrowProps, 'as' | 'asChild'>
|
|
29
|
-
/**
|
|
30
|
-
* Render the popover in a portal.
|
|
31
|
-
* @defaultValue true
|
|
32
|
-
*/
|
|
33
|
-
portal?: boolean
|
|
34
|
-
/**
|
|
35
|
-
* When `false`, the popover will not close when clicking outside or pressing escape.
|
|
36
|
-
* @defaultValue true
|
|
37
|
-
*/
|
|
38
|
-
dismissible?: boolean
|
|
39
|
-
class?: any
|
|
40
|
-
b24ui?: Partial<typeof popover.slots>
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export interface PopoverEmits extends PopoverRootEmits {}
|
|
44
|
-
|
|
45
|
-
export interface PopoverSlots {
|
|
46
|
-
default(props: { open: boolean }): any
|
|
47
|
-
content(props?: {}): any
|
|
48
|
-
}
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/b24ui/popover";
|
|
49
3
|
</script>
|
|
50
4
|
|
|
51
|
-
<script setup
|
|
52
|
-
import { computed, toRef } from
|
|
53
|
-
import { defu } from
|
|
54
|
-
import { useForwardPropsEmits } from
|
|
55
|
-
import { Popover, HoverCard } from
|
|
56
|
-
import { reactivePick } from
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
mode:
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
5
|
+
<script setup>
|
|
6
|
+
import { computed, toRef } from "vue";
|
|
7
|
+
import { defu } from "defu";
|
|
8
|
+
import { useForwardPropsEmits } from "reka-ui";
|
|
9
|
+
import { Popover, HoverCard } from "reka-ui/namespaced";
|
|
10
|
+
import { reactivePick } from "@vueuse/core";
|
|
11
|
+
import { useAppConfig } from "#imports";
|
|
12
|
+
import { tv } from "../utils/tv";
|
|
13
|
+
const props = defineProps({
|
|
14
|
+
mode: { type: String, required: false, default: "click" },
|
|
15
|
+
content: { type: Object, required: false },
|
|
16
|
+
arrow: { type: [Boolean, Object], required: false },
|
|
17
|
+
portal: { type: Boolean, required: false, default: true },
|
|
18
|
+
dismissible: { type: Boolean, required: false, default: true },
|
|
19
|
+
class: { type: null, required: false },
|
|
20
|
+
b24ui: { type: null, required: false },
|
|
21
|
+
defaultOpen: { type: Boolean, required: false },
|
|
22
|
+
open: { type: Boolean, required: false },
|
|
23
|
+
modal: { type: Boolean, required: false },
|
|
24
|
+
openDelay: { type: Number, required: false, default: 0 },
|
|
25
|
+
closeDelay: { type: Number, required: false, default: 0 }
|
|
26
|
+
});
|
|
27
|
+
const emits = defineEmits(["update:open"]);
|
|
28
|
+
const slots = defineSlots();
|
|
29
|
+
const appConfig = useAppConfig();
|
|
30
|
+
const pick = props.mode === "hover" ? reactivePick(props, "defaultOpen", "open", "openDelay", "closeDelay") : reactivePick(props, "defaultOpen", "open", "modal");
|
|
31
|
+
const rootProps = useForwardPropsEmits(pick, emits);
|
|
32
|
+
const contentProps = toRef(() => defu(props.content, { side: "bottom", sideOffset: 8, collisionPadding: 8 }));
|
|
71
33
|
const contentEvents = computed(() => {
|
|
72
34
|
if (!props.dismissible) {
|
|
73
35
|
return {
|
|
74
|
-
pointerDownOutside: (e
|
|
75
|
-
interactOutside: (e
|
|
76
|
-
escapeKeyDown: (e
|
|
77
|
-
}
|
|
36
|
+
pointerDownOutside: (e) => e.preventDefault(),
|
|
37
|
+
interactOutside: (e) => e.preventDefault(),
|
|
38
|
+
escapeKeyDown: (e) => e.preventDefault()
|
|
39
|
+
};
|
|
78
40
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
// eslint-disable-next-line vue/no-dupe-keys
|
|
85
|
-
const b24ui = computed(() => popover({
|
|
41
|
+
return {};
|
|
42
|
+
});
|
|
43
|
+
const arrowProps = toRef(() => props.arrow);
|
|
44
|
+
const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.popover || {} })({
|
|
86
45
|
side: contentProps.value.side
|
|
87
|
-
}))
|
|
88
|
-
|
|
89
|
-
const Component = computed(() => props.mode === 'hover' ? HoverCard : Popover)
|
|
46
|
+
}));
|
|
47
|
+
const Component = computed(() => props.mode === "hover" ? HoverCard : Popover);
|
|
90
48
|
</script>
|
|
91
49
|
|
|
92
50
|
<template>
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Popover } from 'reka-ui/namespaced';
|
|
2
|
+
import type { PopoverRootProps, HoverCardRootProps, PopoverRootEmits, PopoverContentProps, PopoverContentEmits, PopoverArrowProps } from 'reka-ui';
|
|
3
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
4
|
+
import theme from '#build/b24ui/popover';
|
|
5
|
+
import type { EmitsToProps, ComponentConfig } from '../types/utils';
|
|
6
|
+
type Popover = ComponentConfig<typeof theme, AppConfig, 'popover'>;
|
|
7
|
+
export interface PopoverProps extends PopoverRootProps, Pick<HoverCardRootProps, 'openDelay' | 'closeDelay'> {
|
|
8
|
+
/**
|
|
9
|
+
* The display mode of the popover.
|
|
10
|
+
* @defaultValue 'click'
|
|
11
|
+
*/
|
|
12
|
+
mode?: 'click' | 'hover';
|
|
13
|
+
/**
|
|
14
|
+
* The content of the popover.
|
|
15
|
+
* @defaultValue { side: 'bottom', sideOffset: 8, collisionPadding: 8 }
|
|
16
|
+
*/
|
|
17
|
+
content?: Omit<PopoverContentProps, 'as' | 'asChild' | 'forceMount'> & Partial<EmitsToProps<PopoverContentEmits>>;
|
|
18
|
+
/**
|
|
19
|
+
* Display an arrow alongside the popover.
|
|
20
|
+
* @defaultValue false
|
|
21
|
+
*/
|
|
22
|
+
arrow?: boolean | Omit<PopoverArrowProps, 'as' | 'asChild'>;
|
|
23
|
+
/**
|
|
24
|
+
* Render the popover in a portal.
|
|
25
|
+
* @defaultValue true
|
|
26
|
+
*/
|
|
27
|
+
portal?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* When `false`, the popover will not close when clicking outside or pressing escape.
|
|
30
|
+
* @defaultValue true
|
|
31
|
+
*/
|
|
32
|
+
dismissible?: boolean;
|
|
33
|
+
class?: any;
|
|
34
|
+
b24ui?: Popover['slots'];
|
|
35
|
+
}
|
|
36
|
+
export interface PopoverEmits extends PopoverRootEmits {
|
|
37
|
+
}
|
|
38
|
+
export interface PopoverSlots {
|
|
39
|
+
default(props: {
|
|
40
|
+
open: boolean;
|
|
41
|
+
}): any;
|
|
42
|
+
content(props?: {}): any;
|
|
43
|
+
}
|
|
44
|
+
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<PopoverProps>, {
|
|
45
|
+
portal: boolean;
|
|
46
|
+
mode: string;
|
|
47
|
+
openDelay: number;
|
|
48
|
+
closeDelay: number;
|
|
49
|
+
dismissible: boolean;
|
|
50
|
+
}>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, any, string, import("vue").PublicProps, any, {
|
|
51
|
+
mode: "click" | "hover";
|
|
52
|
+
portal: boolean;
|
|
53
|
+
dismissible: boolean;
|
|
54
|
+
openDelay: number;
|
|
55
|
+
closeDelay: number;
|
|
56
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<PopoverSlots> & PopoverSlots>;
|
|
57
|
+
export default _default;
|
|
58
|
+
type __VLS_WithDefaults<P, D> = {
|
|
59
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
|
|
60
|
+
default: D[K];
|
|
61
|
+
}> : P[K];
|
|
62
|
+
};
|
|
63
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
64
|
+
type __VLS_TypePropsToOption<T> = {
|
|
65
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
66
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
67
|
+
} : {
|
|
68
|
+
type: import('vue').PropType<T[K]>;
|
|
69
|
+
required: true;
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
73
|
+
new (): {
|
|
74
|
+
$slots: S;
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
type __VLS_PrettifyLocal<T> = {
|
|
78
|
+
[K in keyof T]: T[K];
|
|
79
|
+
} & {};
|
|
@@ -1,178 +1,111 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import type { VariantProps } from 'tailwind-variants'
|
|
4
|
-
import type { ProgressRootProps, ProgressRootEmits } from 'reka-ui'
|
|
5
|
-
import type { AppConfig } from '@nuxt/schema'
|
|
6
|
-
import _appConfig from '#build/app.config'
|
|
7
|
-
import theme from '#build/b24ui/progress'
|
|
8
|
-
import { tv } from '../utils/tv'
|
|
9
|
-
|
|
10
|
-
const appConfigProgress = _appConfig as AppConfig & { b24ui: { progress: Partial<typeof theme> } }
|
|
11
|
-
|
|
12
|
-
const progress = tv({ extend: tv(theme), ...(appConfigProgress.b24ui?.progress || {}) })
|
|
13
|
-
|
|
14
|
-
type ProgressVariants = VariantProps<typeof progress>
|
|
15
|
-
|
|
16
|
-
export interface ProgressProps extends Pick<ProgressRootProps, 'getValueLabel' | 'modelValue'> {
|
|
17
|
-
/**
|
|
18
|
-
* The element or component this component should render as.
|
|
19
|
-
* @defaultValue 'div'
|
|
20
|
-
*/
|
|
21
|
-
as?: any
|
|
22
|
-
/**
|
|
23
|
-
* The maximum progress value
|
|
24
|
-
*/
|
|
25
|
-
max?: number | Array<any>
|
|
26
|
-
/**
|
|
27
|
-
* Display the current progress value
|
|
28
|
-
*/
|
|
29
|
-
status?: boolean
|
|
30
|
-
/**
|
|
31
|
-
* Whether the progress is visually inverted
|
|
32
|
-
* @defaultValue false
|
|
33
|
-
*/
|
|
34
|
-
inverted?: boolean
|
|
35
|
-
/**
|
|
36
|
-
* @defaultValue 'md'
|
|
37
|
-
*/
|
|
38
|
-
size?: ProgressVariants['size']
|
|
39
|
-
/**
|
|
40
|
-
* @defaultValue 'primary'
|
|
41
|
-
*/
|
|
42
|
-
color?: ProgressVariants['color']
|
|
43
|
-
/**
|
|
44
|
-
* The orientation of the progress bar.
|
|
45
|
-
* @defaultValue 'horizontal'
|
|
46
|
-
*/
|
|
47
|
-
orientation?: ProgressVariants['orientation']
|
|
48
|
-
/**
|
|
49
|
-
* @defaultValue 'loading'
|
|
50
|
-
*/
|
|
51
|
-
animation?: ProgressVariants['animation']
|
|
52
|
-
class?: any
|
|
53
|
-
b24ui?: Partial<typeof progress.slots>
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export interface ProgressEmits extends ProgressRootEmits {}
|
|
57
|
-
|
|
58
|
-
export type ProgressSlots = {
|
|
59
|
-
status(props: { percent?: number }): any
|
|
60
|
-
} & {
|
|
61
|
-
[key: string]: (props: { step: number }) => any
|
|
62
|
-
}
|
|
63
|
-
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/b24ui/progress";
|
|
64
3
|
</script>
|
|
65
4
|
|
|
66
|
-
<script setup
|
|
67
|
-
import { computed } from
|
|
68
|
-
import { Primitive, ProgressRoot, ProgressIndicator, useForwardPropsEmits } from
|
|
69
|
-
import { reactivePick } from
|
|
70
|
-
import {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
5
|
+
<script setup>
|
|
6
|
+
import { computed } from "vue";
|
|
7
|
+
import { Primitive, ProgressRoot, ProgressIndicator, useForwardPropsEmits } from "reka-ui";
|
|
8
|
+
import { reactivePick } from "@vueuse/core";
|
|
9
|
+
import { useAppConfig } from "#imports";
|
|
10
|
+
import { useLocale } from "../composables/useLocale";
|
|
11
|
+
import { tv } from "../utils/tv";
|
|
12
|
+
const props = defineProps({
|
|
13
|
+
as: { type: null, required: false },
|
|
14
|
+
max: { type: [Number, Array], required: false },
|
|
15
|
+
status: { type: Boolean, required: false },
|
|
16
|
+
inverted: { type: Boolean, required: false, default: false },
|
|
17
|
+
size: { type: null, required: false },
|
|
18
|
+
color: { type: null, required: false },
|
|
19
|
+
orientation: { type: null, required: false, default: "horizontal" },
|
|
20
|
+
animation: { type: null, required: false },
|
|
21
|
+
class: { type: null, required: false },
|
|
22
|
+
b24ui: { type: null, required: false },
|
|
23
|
+
getValueLabel: { type: Function, required: false },
|
|
24
|
+
modelValue: { type: [Number, null], required: false, default: null }
|
|
25
|
+
});
|
|
26
|
+
const emits = defineEmits(["update:modelValue", "update:max"]);
|
|
27
|
+
const slots = defineSlots();
|
|
28
|
+
const { dir } = useLocale();
|
|
29
|
+
const appConfig = useAppConfig();
|
|
30
|
+
const rootProps = useForwardPropsEmits(reactivePick(props, "getValueLabel", "modelValue"), emits);
|
|
31
|
+
const isIndeterminate = computed(() => rootProps.value.modelValue === null);
|
|
32
|
+
const hasSteps = computed(() => Array.isArray(props.max));
|
|
87
33
|
const realMax = computed(() => {
|
|
88
34
|
if (isIndeterminate.value || !props.max) {
|
|
89
|
-
return
|
|
35
|
+
return void 0;
|
|
90
36
|
}
|
|
91
|
-
|
|
92
37
|
if (Array.isArray(props.max)) {
|
|
93
|
-
return props.max.length - 1
|
|
38
|
+
return props.max.length - 1;
|
|
94
39
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
})
|
|
98
|
-
|
|
40
|
+
return Number(props.max);
|
|
41
|
+
});
|
|
99
42
|
const percent = computed(() => {
|
|
100
43
|
if (isIndeterminate.value) {
|
|
101
|
-
return
|
|
44
|
+
return void 0;
|
|
102
45
|
}
|
|
103
|
-
|
|
104
46
|
switch (true) {
|
|
105
|
-
case rootProps.value.modelValue
|
|
106
|
-
|
|
107
|
-
|
|
47
|
+
case rootProps.value.modelValue < 0:
|
|
48
|
+
return 0;
|
|
49
|
+
case rootProps.value.modelValue > (realMax.value ?? 100):
|
|
50
|
+
return 100;
|
|
51
|
+
default:
|
|
52
|
+
return Math.round(rootProps.value.modelValue / (realMax.value ?? 100) * 100);
|
|
108
53
|
}
|
|
109
|
-
})
|
|
110
|
-
|
|
54
|
+
});
|
|
111
55
|
const indicatorStyle = computed(() => {
|
|
112
|
-
if (percent.value ===
|
|
113
|
-
return
|
|
56
|
+
if (percent.value === void 0) {
|
|
57
|
+
return;
|
|
114
58
|
}
|
|
115
|
-
|
|
116
|
-
if (props.orientation === 'vertical') {
|
|
59
|
+
if (props.orientation === "vertical") {
|
|
117
60
|
return {
|
|
118
|
-
transform: `translateY(${props.inverted ?
|
|
119
|
-
}
|
|
61
|
+
transform: `translateY(${props.inverted ? "" : "-"}${100 - percent.value}%)`
|
|
62
|
+
};
|
|
120
63
|
} else {
|
|
121
|
-
if (dir.value ===
|
|
64
|
+
if (dir.value === "rtl") {
|
|
122
65
|
return {
|
|
123
|
-
transform: `translateX(${props.inverted ?
|
|
124
|
-
}
|
|
66
|
+
transform: `translateX(${props.inverted ? "-" : ""}${100 - percent.value}%)`
|
|
67
|
+
};
|
|
125
68
|
} else {
|
|
126
69
|
return {
|
|
127
|
-
transform: `translateX(${props.inverted ?
|
|
128
|
-
}
|
|
70
|
+
transform: `translateX(${props.inverted ? "" : "-"}${100 - percent.value}%)`
|
|
71
|
+
};
|
|
129
72
|
}
|
|
130
73
|
}
|
|
131
|
-
})
|
|
132
|
-
|
|
74
|
+
});
|
|
133
75
|
const statusStyle = computed(() => {
|
|
134
76
|
return {
|
|
135
|
-
[props.orientation ===
|
|
136
|
-
}
|
|
137
|
-
})
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
return index === Number(props.modelValue)
|
|
77
|
+
[props.orientation === "vertical" ? "height" : "width"]: percent.value ? `${percent.value}%` : "fit-content"
|
|
78
|
+
};
|
|
79
|
+
});
|
|
80
|
+
function isActive(index) {
|
|
81
|
+
return index === Number(props.modelValue);
|
|
141
82
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
return index === 0
|
|
83
|
+
function isFirst(index) {
|
|
84
|
+
return index === 0;
|
|
145
85
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
return index === realMax.value
|
|
86
|
+
function isLast(index) {
|
|
87
|
+
return index === realMax.value;
|
|
149
88
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
index = Number(index)
|
|
153
|
-
|
|
89
|
+
function stepVariant(index) {
|
|
90
|
+
index = Number(index);
|
|
154
91
|
if (isActive(index) && !isFirst(index)) {
|
|
155
|
-
return
|
|
92
|
+
return "active";
|
|
156
93
|
}
|
|
157
|
-
|
|
158
94
|
if (isFirst(index) && isActive(index)) {
|
|
159
|
-
return
|
|
95
|
+
return "first";
|
|
160
96
|
}
|
|
161
|
-
|
|
162
97
|
if (isLast(index) && isActive(index)) {
|
|
163
|
-
return
|
|
98
|
+
return "last";
|
|
164
99
|
}
|
|
165
|
-
|
|
166
|
-
return 'other'
|
|
100
|
+
return "other";
|
|
167
101
|
}
|
|
168
|
-
|
|
169
|
-
const b24ui = computed(() => progress({
|
|
102
|
+
const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.progress || {} })({
|
|
170
103
|
animation: props.animation,
|
|
171
104
|
size: props.size,
|
|
172
105
|
color: props.color,
|
|
173
106
|
orientation: props.orientation,
|
|
174
107
|
inverted: props.inverted
|
|
175
|
-
}))
|
|
108
|
+
}));
|
|
176
109
|
</script>
|
|
177
110
|
|
|
178
111
|
<template>
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import type { ProgressRootProps, ProgressRootEmits } from 'reka-ui';
|
|
2
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
3
|
+
import theme from '#build/b24ui/progress';
|
|
4
|
+
import type { ComponentConfig } from '../types/utils';
|
|
5
|
+
type Progress = ComponentConfig<typeof theme, AppConfig, 'progress'>;
|
|
6
|
+
export interface ProgressProps extends Pick<ProgressRootProps, 'getValueLabel' | 'modelValue'> {
|
|
7
|
+
/**
|
|
8
|
+
* The element or component this component should render as.
|
|
9
|
+
* @defaultValue 'div'
|
|
10
|
+
*/
|
|
11
|
+
as?: any;
|
|
12
|
+
/**
|
|
13
|
+
* The maximum progress value
|
|
14
|
+
*/
|
|
15
|
+
max?: number | Array<any>;
|
|
16
|
+
/**
|
|
17
|
+
* Display the current progress value
|
|
18
|
+
*/
|
|
19
|
+
status?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Whether the progress is visually inverted
|
|
22
|
+
* @defaultValue false
|
|
23
|
+
*/
|
|
24
|
+
inverted?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* @defaultValue 'md'
|
|
27
|
+
*/
|
|
28
|
+
size?: Progress['variants']['size'];
|
|
29
|
+
/**
|
|
30
|
+
* @defaultValue 'primary'
|
|
31
|
+
*/
|
|
32
|
+
color?: Progress['variants']['color'];
|
|
33
|
+
/**
|
|
34
|
+
* The orientation of the progress bar.
|
|
35
|
+
* @defaultValue 'horizontal'
|
|
36
|
+
*/
|
|
37
|
+
orientation?: Progress['variants']['orientation'];
|
|
38
|
+
/**
|
|
39
|
+
* @defaultValue 'loading'
|
|
40
|
+
*/
|
|
41
|
+
animation?: Progress['variants']['animation'];
|
|
42
|
+
class?: any;
|
|
43
|
+
b24ui?: Progress['slots'];
|
|
44
|
+
}
|
|
45
|
+
export interface ProgressEmits extends ProgressRootEmits {
|
|
46
|
+
}
|
|
47
|
+
export type ProgressSlots = {
|
|
48
|
+
status(props: {
|
|
49
|
+
percent?: number;
|
|
50
|
+
}): any;
|
|
51
|
+
} & {
|
|
52
|
+
[key: string]: (props: {
|
|
53
|
+
step: number;
|
|
54
|
+
}) => any;
|
|
55
|
+
};
|
|
56
|
+
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<ProgressProps>, {
|
|
57
|
+
inverted: boolean;
|
|
58
|
+
modelValue: null;
|
|
59
|
+
orientation: string;
|
|
60
|
+
}>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, any, string, import("vue").PublicProps, any, {
|
|
61
|
+
orientation: Progress["variants"]["orientation"];
|
|
62
|
+
inverted: boolean;
|
|
63
|
+
modelValue: number | null;
|
|
64
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<{
|
|
65
|
+
status(props: {
|
|
66
|
+
percent?: number;
|
|
67
|
+
}): any;
|
|
68
|
+
} & {
|
|
69
|
+
[key: string]: (props: {
|
|
70
|
+
step: number;
|
|
71
|
+
}) => any;
|
|
72
|
+
}> & {
|
|
73
|
+
status(props: {
|
|
74
|
+
percent?: number;
|
|
75
|
+
}): any;
|
|
76
|
+
} & {
|
|
77
|
+
[key: string]: (props: {
|
|
78
|
+
step: number;
|
|
79
|
+
}) => any;
|
|
80
|
+
}>;
|
|
81
|
+
export default _default;
|
|
82
|
+
type __VLS_WithDefaults<P, D> = {
|
|
83
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
|
|
84
|
+
default: D[K];
|
|
85
|
+
}> : P[K];
|
|
86
|
+
};
|
|
87
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
88
|
+
type __VLS_TypePropsToOption<T> = {
|
|
89
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
90
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
91
|
+
} : {
|
|
92
|
+
type: import('vue').PropType<T[K]>;
|
|
93
|
+
required: true;
|
|
94
|
+
};
|
|
95
|
+
};
|
|
96
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
97
|
+
new (): {
|
|
98
|
+
$slots: S;
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
type __VLS_PrettifyLocal<T> = {
|
|
102
|
+
[K in keyof T]: T[K];
|
|
103
|
+
} & {};
|