@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,183 +1,103 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import
|
|
3
|
-
import type { AppConfig } from '@nuxt/schema'
|
|
4
|
-
import _appConfig from '#build/app.config'
|
|
5
|
-
import type { RouterLinkProps, RouteLocationRaw } from 'vue-router'
|
|
6
|
-
import theme from '#build/b24ui/link'
|
|
7
|
-
import { tv } from '../utils/tv'
|
|
8
|
-
|
|
9
|
-
interface NuxtLinkProps extends Omit<RouterLinkProps, 'to'> {
|
|
10
|
-
/**
|
|
11
|
-
* Route Location the link should navigate to when clicked on.
|
|
12
|
-
*/
|
|
13
|
-
to?: RouteLocationRaw // need to manually type to avoid breaking typedPages
|
|
14
|
-
/**
|
|
15
|
-
* An alias for `to`. If used with `to`, `href` will be ignored
|
|
16
|
-
*/
|
|
17
|
-
href?: NuxtLinkProps['to']
|
|
18
|
-
/**
|
|
19
|
-
* Forces the link to be considered as external (true) or internal (false). This is helpful to handle edge-cases
|
|
20
|
-
*/
|
|
21
|
-
external?: boolean
|
|
22
|
-
/**
|
|
23
|
-
* Where to display the linked URL as the name for a browsing context.
|
|
24
|
-
*/
|
|
25
|
-
target?: '_blank' | '_parent' | '_self' | '_top' | (string & {}) | null
|
|
26
|
-
/**
|
|
27
|
-
* A rel attribute value to apply on the link. Defaults to "noopener noreferrer" for external links.
|
|
28
|
-
*/
|
|
29
|
-
rel?: 'noopener' | 'noreferrer' | 'nofollow' | 'sponsored' | 'ugc' | (string & {}) | null
|
|
30
|
-
/**
|
|
31
|
-
* If set to true, no rel attribute will be added to the link
|
|
32
|
-
*/
|
|
33
|
-
noRel?: boolean
|
|
34
|
-
/**
|
|
35
|
-
* A class to apply to links that have been prefetched.
|
|
36
|
-
*/
|
|
37
|
-
prefetchedClass?: string
|
|
38
|
-
/**
|
|
39
|
-
* When enabled will prefetch middleware, layouts and payloads of links in the viewport.
|
|
40
|
-
*/
|
|
41
|
-
prefetch?: boolean
|
|
42
|
-
/**
|
|
43
|
-
* Allows controlling when to prefetch links. By default, prefetch is triggered only on visibility.
|
|
44
|
-
*/
|
|
45
|
-
prefetchOn?: 'visibility' | 'interaction' | Partial<{
|
|
46
|
-
visibility: boolean
|
|
47
|
-
interaction: boolean
|
|
48
|
-
}>
|
|
49
|
-
/**
|
|
50
|
-
* Escape hatch to disable `prefetch` attribute.
|
|
51
|
-
*/
|
|
52
|
-
noPrefetch?: boolean
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
const appConfigLink = _appConfig as AppConfig & { b24ui: { link: Partial<typeof theme> } }
|
|
56
|
-
|
|
57
|
-
const link = tv({ extend: tv(theme), ...(appConfigLink.b24ui?.link || {}) })
|
|
58
|
-
|
|
59
|
-
export interface LinkProps extends NuxtLinkProps {
|
|
60
|
-
/**
|
|
61
|
-
* The element or component this component should render as when not a link.
|
|
62
|
-
* @defaultValue 'button'
|
|
63
|
-
*/
|
|
64
|
-
as?: any
|
|
65
|
-
/**
|
|
66
|
-
* The type of the button when not a link.
|
|
67
|
-
* @defaultValue 'button'
|
|
68
|
-
*/
|
|
69
|
-
type?: ButtonHTMLAttributes['type']
|
|
70
|
-
disabled?: boolean
|
|
71
|
-
/** Force the link to be active independent of the current route. */
|
|
72
|
-
active?: boolean
|
|
73
|
-
/** Will only be active if the current route is an exact match. */
|
|
74
|
-
exact?: boolean
|
|
75
|
-
/** Allows controlling how the current route query sets the link as active. */
|
|
76
|
-
exactQuery?: boolean | 'partial'
|
|
77
|
-
/** Will only be active if the current route hash is an exact match. */
|
|
78
|
-
exactHash?: boolean
|
|
79
|
-
/** The class to apply when the link is inactive. */
|
|
80
|
-
inactiveClass?: string
|
|
81
|
-
custom?: boolean
|
|
82
|
-
/** When `true`, uses special underlined styling. */
|
|
83
|
-
isAction?: boolean
|
|
84
|
-
/** When `true`, only styles from `class`, `activeClass`, and `inactiveClass` will be applied. */
|
|
85
|
-
raw?: boolean
|
|
86
|
-
class?: any
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
export interface LinkSlots {
|
|
90
|
-
default(props: { active: boolean }): any
|
|
91
|
-
}
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/b24ui/link";
|
|
92
3
|
</script>
|
|
93
4
|
|
|
94
|
-
<script setup
|
|
95
|
-
import { computed } from
|
|
96
|
-
import {
|
|
97
|
-
import {
|
|
98
|
-
import {
|
|
99
|
-
import {
|
|
100
|
-
import
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
const props =
|
|
105
|
-
as:
|
|
106
|
-
type:
|
|
107
|
-
|
|
108
|
-
active:
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
5
|
+
<script setup>
|
|
6
|
+
import { computed } from "vue";
|
|
7
|
+
import { defu } from "defu";
|
|
8
|
+
import { isEqual, diff } from "ohash/utils";
|
|
9
|
+
import { useForwardProps } from "reka-ui";
|
|
10
|
+
import { reactiveOmit } from "@vueuse/core";
|
|
11
|
+
import { useRoute, useAppConfig } from "#imports";
|
|
12
|
+
import { tv } from "../utils/tv";
|
|
13
|
+
import B24LinkBase from "./LinkBase.vue";
|
|
14
|
+
defineOptions({ inheritAttrs: false });
|
|
15
|
+
const props = defineProps({
|
|
16
|
+
as: { type: null, required: false, default: "button" },
|
|
17
|
+
type: { type: null, required: false, default: "button" },
|
|
18
|
+
disabled: { type: Boolean, required: false },
|
|
19
|
+
active: { type: Boolean, required: false, default: void 0 },
|
|
20
|
+
exact: { type: Boolean, required: false },
|
|
21
|
+
exactQuery: { type: [Boolean, String], required: false },
|
|
22
|
+
exactHash: { type: Boolean, required: false },
|
|
23
|
+
inactiveClass: { type: String, required: false, default: "" },
|
|
24
|
+
custom: { type: Boolean, required: false },
|
|
25
|
+
isAction: { type: Boolean, required: false, default: false },
|
|
26
|
+
raw: { type: Boolean, required: false },
|
|
27
|
+
class: { type: null, required: false },
|
|
28
|
+
to: { type: null, required: false },
|
|
29
|
+
href: { type: null, required: false },
|
|
30
|
+
external: { type: Boolean, required: false },
|
|
31
|
+
target: { type: [String, Object, null], required: false },
|
|
32
|
+
rel: { type: [String, Object, null], required: false },
|
|
33
|
+
noRel: { type: Boolean, required: false },
|
|
34
|
+
prefetchedClass: { type: String, required: false },
|
|
35
|
+
prefetch: { type: Boolean, required: false },
|
|
36
|
+
prefetchOn: { type: [String, Object], required: false },
|
|
37
|
+
noPrefetch: { type: Boolean, required: false },
|
|
38
|
+
activeClass: { type: String, required: false, default: "" },
|
|
39
|
+
exactActiveClass: { type: String, required: false },
|
|
40
|
+
ariaCurrentValue: { type: String, required: false, default: "page" },
|
|
41
|
+
viewTransition: { type: Boolean, required: false },
|
|
42
|
+
replace: { type: Boolean, required: false }
|
|
43
|
+
});
|
|
44
|
+
defineSlots();
|
|
45
|
+
const route = useRoute();
|
|
46
|
+
const appConfig = useAppConfig();
|
|
47
|
+
const nuxtLinkProps = useForwardProps(reactiveOmit(props, "as", "type", "disabled", "active", "exact", "exactQuery", "exactHash", "activeClass", "inactiveClass", "raw", "class"));
|
|
118
48
|
const b24ui = computed(() => tv({
|
|
119
|
-
extend:
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
49
|
+
extend: tv(theme),
|
|
50
|
+
...defu({
|
|
51
|
+
variants: {
|
|
52
|
+
active: {
|
|
53
|
+
true: props.activeClass,
|
|
54
|
+
false: props.inactiveClass
|
|
55
|
+
}
|
|
124
56
|
}
|
|
125
|
-
}
|
|
126
|
-
}))
|
|
127
|
-
|
|
128
|
-
function isPartiallyEqual(item1: any, item2: any) {
|
|
57
|
+
}, appConfig.b24ui?.link || {})
|
|
58
|
+
}));
|
|
59
|
+
function isPartiallyEqual(item1, item2) {
|
|
129
60
|
const diffedKeys = diff(item1, item2).reduce((filtered, q) => {
|
|
130
|
-
if (q.type ===
|
|
131
|
-
filtered.add(q.key)
|
|
61
|
+
if (q.type === "added") {
|
|
62
|
+
filtered.add(q.key);
|
|
132
63
|
}
|
|
133
|
-
return filtered
|
|
134
|
-
}, new Set
|
|
135
|
-
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
return isEqual(item1Filtered, item2Filtered)
|
|
64
|
+
return filtered;
|
|
65
|
+
}, /* @__PURE__ */ new Set());
|
|
66
|
+
const item1Filtered = Object.fromEntries(Object.entries(item1).filter(([key]) => !diffedKeys.has(key)));
|
|
67
|
+
const item2Filtered = Object.fromEntries(Object.entries(item2).filter(([key]) => !diffedKeys.has(key)));
|
|
68
|
+
return isEqual(item1Filtered, item2Filtered);
|
|
140
69
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
return props.active
|
|
70
|
+
function isLinkActive({ route: linkRoute, isActive, isExactActive }) {
|
|
71
|
+
if (props.active !== void 0) {
|
|
72
|
+
return props.active;
|
|
145
73
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
if (!isPartiallyEqual(linkRoute.query, route.query)) return false
|
|
74
|
+
if (props.exactQuery === "partial") {
|
|
75
|
+
if (!isPartiallyEqual(linkRoute.query, route.query)) return false;
|
|
149
76
|
} else if (props.exactQuery === true) {
|
|
150
|
-
if (!isEqual(linkRoute.query, route.query)) return false
|
|
77
|
+
if (!isEqual(linkRoute.query, route.query)) return false;
|
|
151
78
|
}
|
|
152
|
-
|
|
153
79
|
if (props.exactHash && linkRoute.hash !== route.hash) {
|
|
154
|
-
return false
|
|
80
|
+
return false;
|
|
155
81
|
}
|
|
156
|
-
|
|
157
82
|
if (props.exact && isExactActive) {
|
|
158
|
-
return true
|
|
83
|
+
return true;
|
|
159
84
|
}
|
|
160
|
-
|
|
161
85
|
if (!props.exact && isActive) {
|
|
162
|
-
return true
|
|
86
|
+
return true;
|
|
163
87
|
}
|
|
164
|
-
|
|
165
|
-
return false
|
|
88
|
+
return false;
|
|
166
89
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
const active = isLinkActive({ route, isActive, isExactActive })
|
|
170
|
-
|
|
90
|
+
function resolveLinkClass({ route: route2, isActive, isExactActive }) {
|
|
91
|
+
const active = isLinkActive({ route: route2, isActive, isExactActive });
|
|
171
92
|
if (props.raw) {
|
|
172
|
-
return [props.class, active ? props.activeClass : props.inactiveClass]
|
|
93
|
+
return [props.class, active ? props.activeClass : props.inactiveClass];
|
|
173
94
|
}
|
|
174
|
-
|
|
175
95
|
return b24ui.value({
|
|
176
96
|
class: props.class,
|
|
177
97
|
active,
|
|
178
98
|
disabled: props.disabled,
|
|
179
99
|
isAction: Boolean(props.isAction)
|
|
180
|
-
})
|
|
100
|
+
});
|
|
181
101
|
}
|
|
182
102
|
</script>
|
|
183
103
|
|
|
@@ -190,34 +110,34 @@ function resolveLinkClass({ route, isActive, isExactActive }: any) {
|
|
|
190
110
|
<template v-if="custom">
|
|
191
111
|
<slot
|
|
192
112
|
v-bind="{
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
113
|
+
...$attrs,
|
|
114
|
+
...exact && isExactActive ? { 'aria-current': props.ariaCurrentValue } : {},
|
|
115
|
+
as,
|
|
116
|
+
type,
|
|
117
|
+
disabled,
|
|
118
|
+
href,
|
|
119
|
+
navigate,
|
|
120
|
+
rel,
|
|
121
|
+
target,
|
|
122
|
+
isExternal,
|
|
123
|
+
active: isLinkActive({ route: linkRoute, isActive, isExactActive })
|
|
124
|
+
}"
|
|
205
125
|
/>
|
|
206
126
|
</template>
|
|
207
127
|
<B24LinkBase
|
|
208
128
|
v-else
|
|
209
129
|
v-bind="{
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
130
|
+
...$attrs,
|
|
131
|
+
...exact && isExactActive ? { 'aria-current': props.ariaCurrentValue } : {},
|
|
132
|
+
as,
|
|
133
|
+
type,
|
|
134
|
+
disabled,
|
|
135
|
+
href,
|
|
136
|
+
navigate,
|
|
137
|
+
rel,
|
|
138
|
+
target,
|
|
139
|
+
isExternal
|
|
140
|
+
}"
|
|
221
141
|
:class="resolveLinkClass({ route: linkRoute, isActive, isExactActive })"
|
|
222
142
|
>
|
|
223
143
|
<slot :active="isLinkActive({ route: linkRoute, isActive, isExactActive })" />
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import type { ButtonHTMLAttributes } from 'vue';
|
|
2
|
+
import type { RouterLinkProps, RouteLocationRaw } from 'vue-router';
|
|
3
|
+
interface NuxtLinkProps extends Omit<RouterLinkProps, 'to'> {
|
|
4
|
+
/**
|
|
5
|
+
* Route Location the link should navigate to when clicked on.
|
|
6
|
+
*/
|
|
7
|
+
to?: RouteLocationRaw;
|
|
8
|
+
/**
|
|
9
|
+
* An alias for `to`. If used with `to`, `href` will be ignored
|
|
10
|
+
*/
|
|
11
|
+
href?: NuxtLinkProps['to'];
|
|
12
|
+
/**
|
|
13
|
+
* Forces the link to be considered as external (true) or internal (false). This is helpful to handle edge-cases
|
|
14
|
+
*/
|
|
15
|
+
external?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Where to display the linked URL as the name for a browsing context.
|
|
18
|
+
*/
|
|
19
|
+
target?: '_blank' | '_parent' | '_self' | '_top' | (string & {}) | null;
|
|
20
|
+
/**
|
|
21
|
+
* A rel attribute value to apply on the link. Defaults to "noopener noreferrer" for external links.
|
|
22
|
+
*/
|
|
23
|
+
rel?: 'noopener' | 'noreferrer' | 'nofollow' | 'sponsored' | 'ugc' | (string & {}) | null;
|
|
24
|
+
/**
|
|
25
|
+
* If set to true, no rel attribute will be added to the link
|
|
26
|
+
*/
|
|
27
|
+
noRel?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* A class to apply to links that have been prefetched.
|
|
30
|
+
*/
|
|
31
|
+
prefetchedClass?: string;
|
|
32
|
+
/**
|
|
33
|
+
* When enabled will prefetch middleware, layouts and payloads of links in the viewport.
|
|
34
|
+
*/
|
|
35
|
+
prefetch?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Allows controlling when to prefetch links. By default, prefetch is triggered only on visibility.
|
|
38
|
+
*/
|
|
39
|
+
prefetchOn?: 'visibility' | 'interaction' | Partial<{
|
|
40
|
+
visibility: boolean;
|
|
41
|
+
interaction: boolean;
|
|
42
|
+
}>;
|
|
43
|
+
/**
|
|
44
|
+
* Escape hatch to disable `prefetch` attribute.
|
|
45
|
+
*/
|
|
46
|
+
noPrefetch?: boolean;
|
|
47
|
+
}
|
|
48
|
+
export interface LinkProps extends NuxtLinkProps {
|
|
49
|
+
/**
|
|
50
|
+
* The element or component this component should render as when not a link.
|
|
51
|
+
* @defaultValue 'button'
|
|
52
|
+
*/
|
|
53
|
+
as?: any;
|
|
54
|
+
/**
|
|
55
|
+
* The type of the button when not a link.
|
|
56
|
+
* @defaultValue 'button'
|
|
57
|
+
*/
|
|
58
|
+
type?: ButtonHTMLAttributes['type'];
|
|
59
|
+
disabled?: boolean;
|
|
60
|
+
/** Force the link to be active independent of the current route. */
|
|
61
|
+
active?: boolean;
|
|
62
|
+
/** Will only be active if the current route is an exact match. */
|
|
63
|
+
exact?: boolean;
|
|
64
|
+
/** Allows controlling how the current route query sets the link as active. */
|
|
65
|
+
exactQuery?: boolean | 'partial';
|
|
66
|
+
/** Will only be active if the current route hash is an exact match. */
|
|
67
|
+
exactHash?: boolean;
|
|
68
|
+
/** The class to apply when the link is inactive. */
|
|
69
|
+
inactiveClass?: string;
|
|
70
|
+
custom?: boolean;
|
|
71
|
+
/** When `true`, uses special underlined styling. */
|
|
72
|
+
isAction?: boolean;
|
|
73
|
+
/** When `true`, only styles from `class`, `activeClass`, and `inactiveClass` will be applied. */
|
|
74
|
+
raw?: boolean;
|
|
75
|
+
class?: any;
|
|
76
|
+
}
|
|
77
|
+
export interface LinkSlots {
|
|
78
|
+
default(props: {
|
|
79
|
+
active: boolean;
|
|
80
|
+
}): any;
|
|
81
|
+
}
|
|
82
|
+
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<LinkProps>, {
|
|
83
|
+
as: string;
|
|
84
|
+
type: string;
|
|
85
|
+
ariaCurrentValue: string;
|
|
86
|
+
active: undefined;
|
|
87
|
+
isAction: boolean;
|
|
88
|
+
activeClass: string;
|
|
89
|
+
inactiveClass: string;
|
|
90
|
+
}>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<LinkProps>, {
|
|
91
|
+
as: string;
|
|
92
|
+
type: string;
|
|
93
|
+
ariaCurrentValue: string;
|
|
94
|
+
active: undefined;
|
|
95
|
+
isAction: boolean;
|
|
96
|
+
activeClass: string;
|
|
97
|
+
inactiveClass: string;
|
|
98
|
+
}>>> & Readonly<{}>, {
|
|
99
|
+
as: any;
|
|
100
|
+
type: "reset" | "submit" | "button";
|
|
101
|
+
activeClass: string;
|
|
102
|
+
ariaCurrentValue: "page" | "step" | "location" | "date" | "time" | "true" | "false";
|
|
103
|
+
active: boolean;
|
|
104
|
+
inactiveClass: string;
|
|
105
|
+
isAction: boolean;
|
|
106
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<LinkSlots> & LinkSlots>;
|
|
107
|
+
export default _default;
|
|
108
|
+
type __VLS_WithDefaults<P, D> = {
|
|
109
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
|
|
110
|
+
default: D[K];
|
|
111
|
+
}> : P[K];
|
|
112
|
+
};
|
|
113
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
114
|
+
type __VLS_TypePropsToOption<T> = {
|
|
115
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
116
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
117
|
+
} : {
|
|
118
|
+
type: import('vue').PropType<T[K]>;
|
|
119
|
+
required: true;
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
123
|
+
new (): {
|
|
124
|
+
$slots: S;
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
type __VLS_PrettifyLocal<T> = {
|
|
128
|
+
[K in keyof T]: T[K];
|
|
129
|
+
} & {};
|
|
@@ -1,43 +1,34 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import type { LinkProps } from '../types'
|
|
1
|
+
<script>
|
|
3
2
|
|
|
4
|
-
export interface LinkBaseProps {
|
|
5
|
-
as?: string
|
|
6
|
-
type?: string
|
|
7
|
-
disabled?: boolean
|
|
8
|
-
onClick?: ((e: MouseEvent) => void | Promise<void>) | Array<((e: MouseEvent) => void | Promise<void>)>
|
|
9
|
-
href?: string
|
|
10
|
-
navigate?: (e: MouseEvent) => void
|
|
11
|
-
target?: LinkProps['target']
|
|
12
|
-
rel?: LinkProps['rel']
|
|
13
|
-
active?: boolean
|
|
14
|
-
isExternal?: boolean
|
|
15
|
-
}
|
|
16
3
|
</script>
|
|
17
4
|
|
|
18
|
-
<script setup
|
|
19
|
-
import { Primitive } from
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
type:
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
|
5
|
+
<script setup>
|
|
6
|
+
import { Primitive } from "reka-ui";
|
|
7
|
+
const props = defineProps({
|
|
8
|
+
as: { type: String, required: false, default: "button" },
|
|
9
|
+
type: { type: String, required: false, default: "button" },
|
|
10
|
+
disabled: { type: Boolean, required: false },
|
|
11
|
+
onClick: { type: [Function, Array], required: false },
|
|
12
|
+
href: { type: String, required: false },
|
|
13
|
+
navigate: { type: Function, required: false },
|
|
14
|
+
target: { type: [String, Object, null], required: false },
|
|
15
|
+
rel: { type: [String, Object, null], required: false },
|
|
16
|
+
active: { type: Boolean, required: false },
|
|
17
|
+
isExternal: { type: Boolean, required: false }
|
|
18
|
+
});
|
|
19
|
+
function onClickWrapper(e) {
|
|
27
20
|
if (props.disabled) {
|
|
28
|
-
e.stopPropagation()
|
|
29
|
-
e.preventDefault()
|
|
30
|
-
return
|
|
21
|
+
e.stopPropagation();
|
|
22
|
+
e.preventDefault();
|
|
23
|
+
return;
|
|
31
24
|
}
|
|
32
|
-
|
|
33
25
|
if (props.onClick) {
|
|
34
26
|
for (const onClick of Array.isArray(props.onClick) ? props.onClick : [props.onClick]) {
|
|
35
|
-
onClick(e)
|
|
27
|
+
onClick(e);
|
|
36
28
|
}
|
|
37
29
|
}
|
|
38
|
-
|
|
39
30
|
if (props.href && props.navigate && !props.isExternal) {
|
|
40
|
-
props.navigate(e)
|
|
31
|
+
props.navigate(e);
|
|
41
32
|
}
|
|
42
33
|
}
|
|
43
34
|
</script>
|
|
@@ -45,18 +36,18 @@ function onClickWrapper(e: MouseEvent) {
|
|
|
45
36
|
<template>
|
|
46
37
|
<Primitive
|
|
47
38
|
v-bind="href ? {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
39
|
+
'as': 'a',
|
|
40
|
+
'href': disabled ? void 0 : href,
|
|
41
|
+
'aria-disabled': disabled ? 'true' : void 0,
|
|
42
|
+
'role': disabled ? 'link' : void 0,
|
|
43
|
+
'tabindex': disabled ? -1 : void 0
|
|
44
|
+
} : as === 'button' ? {
|
|
45
|
+
as,
|
|
46
|
+
type,
|
|
47
|
+
disabled
|
|
48
|
+
} : {
|
|
49
|
+
as
|
|
50
|
+
}"
|
|
60
51
|
:rel="rel"
|
|
61
52
|
:target="target"
|
|
62
53
|
@click="onClickWrapper"
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { LinkProps } from '../types';
|
|
2
|
+
export interface LinkBaseProps {
|
|
3
|
+
as?: string;
|
|
4
|
+
type?: string;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
onClick?: ((e: MouseEvent) => void | Promise<void>) | Array<((e: MouseEvent) => void | Promise<void>)>;
|
|
7
|
+
href?: string;
|
|
8
|
+
navigate?: (e: MouseEvent) => void;
|
|
9
|
+
target?: LinkProps['target'];
|
|
10
|
+
rel?: LinkProps['rel'];
|
|
11
|
+
active?: boolean;
|
|
12
|
+
isExternal?: boolean;
|
|
13
|
+
}
|
|
14
|
+
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<LinkBaseProps>, {
|
|
15
|
+
as: string;
|
|
16
|
+
type: string;
|
|
17
|
+
}>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<LinkBaseProps>, {
|
|
18
|
+
as: string;
|
|
19
|
+
type: string;
|
|
20
|
+
}>>> & Readonly<{}>, {
|
|
21
|
+
as: string;
|
|
22
|
+
type: string;
|
|
23
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, {
|
|
24
|
+
default?(_: {}): any;
|
|
25
|
+
}>;
|
|
26
|
+
export default _default;
|
|
27
|
+
type __VLS_WithDefaults<P, D> = {
|
|
28
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
|
|
29
|
+
default: D[K];
|
|
30
|
+
}> : P[K];
|
|
31
|
+
};
|
|
32
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
33
|
+
type __VLS_TypePropsToOption<T> = {
|
|
34
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
35
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
36
|
+
} : {
|
|
37
|
+
type: import('vue').PropType<T[K]>;
|
|
38
|
+
required: true;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
42
|
+
new (): {
|
|
43
|
+
$slots: S;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
type __VLS_PrettifyLocal<T> = {
|
|
47
|
+
[K in keyof T]: T[K];
|
|
48
|
+
} & {};
|