@bitrix24/b24ui-nuxt 0.5.10 → 0.5.11
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/dist/meta.cjs +72112 -0
- package/dist/meta.d.cts +72110 -0
- package/dist/meta.d.mts +5060 -5060
- package/dist/meta.d.ts +72110 -0
- package/dist/meta.mjs +5060 -5060
- package/dist/module.cjs +63 -0
- package/dist/module.d.cts +15 -0
- package/dist/module.d.ts +15 -0
- package/dist/module.json +3 -3
- package/dist/module.mjs +1 -1
- package/dist/runtime/components/Advice.vue +54 -47
- package/dist/runtime/components/Alert.vue +96 -71
- package/dist/runtime/components/App.vue +34 -37
- package/dist/runtime/components/Avatar.vue +81 -69
- package/dist/runtime/components/AvatarGroup.vue +76 -53
- package/dist/runtime/components/Badge.vue +83 -83
- package/dist/runtime/components/Button.vue +157 -220
- package/dist/runtime/components/ButtonGroup.vue +51 -35
- package/dist/runtime/components/Calendar.vue +152 -186
- package/dist/runtime/components/Checkbox.vue +73 -84
- package/dist/runtime/components/Chip.vue +74 -59
- package/dist/runtime/components/Collapsible.vue +41 -44
- package/dist/runtime/components/Container.vue +27 -18
- package/dist/runtime/components/Countdown.vue +378 -198
- package/dist/runtime/components/DescriptionList.vue +149 -102
- package/dist/runtime/components/DropdownMenu.vue +139 -83
- package/dist/runtime/components/DropdownMenuContent.vue +84 -137
- package/dist/runtime/components/Form.vue +216 -162
- package/dist/runtime/components/FormField.vue +80 -76
- package/dist/runtime/components/Input.vue +179 -160
- package/dist/runtime/components/InputMenu.vue +380 -300
- package/dist/runtime/components/InputNumber.vue +175 -178
- package/dist/runtime/components/Kbd.vue +45 -33
- package/dist/runtime/components/Link.vue +173 -179
- package/dist/runtime/components/LinkBase.vue +42 -64
- package/dist/runtime/components/Modal.vue +127 -105
- package/dist/runtime/components/ModalDialogClose.vue +8 -4
- package/dist/runtime/components/Navbar.vue +33 -24
- package/dist/runtime/components/NavbarDivider.vue +33 -24
- package/dist/runtime/components/NavbarSection.vue +33 -24
- package/dist/runtime/components/NavbarSpacer.vue +33 -24
- package/dist/runtime/components/NavigationMenu.vue +210 -144
- package/dist/runtime/components/OverlayProvider.vue +17 -13
- package/dist/runtime/components/Popover.vue +81 -81
- package/dist/runtime/components/Progress.vue +136 -109
- package/dist/runtime/components/RadioGroup.vue +134 -120
- package/dist/runtime/components/Range.vue +85 -94
- package/dist/runtime/components/Select.vue +260 -212
- package/dist/runtime/components/SelectMenu.vue +365 -272
- package/dist/runtime/components/Separator.vue +71 -61
- package/dist/runtime/components/Sidebar.vue +33 -24
- package/dist/runtime/components/SidebarBody.vue +38 -30
- package/dist/runtime/components/SidebarFooter.vue +33 -24
- package/dist/runtime/components/SidebarHeader.vue +33 -24
- package/dist/runtime/components/SidebarHeading.vue +33 -24
- package/dist/runtime/components/SidebarLayout.vue +70 -40
- package/dist/runtime/components/SidebarSection.vue +33 -24
- package/dist/runtime/components/SidebarSpacer.vue +33 -24
- package/dist/runtime/components/Skeleton.vue +22 -17
- package/dist/runtime/components/Slideover.vue +131 -108
- package/dist/runtime/components/StackedLayout.vue +73 -40
- package/dist/runtime/components/Switch.vue +95 -100
- package/dist/runtime/components/Tabs.vue +107 -81
- package/dist/runtime/components/Textarea.vue +201 -177
- package/dist/runtime/components/Toast.vue +105 -94
- package/dist/runtime/components/Toaster.vue +116 -94
- package/dist/runtime/components/Tooltip.vue +64 -78
- package/dist/runtime/components/content/TableWrapper.vue +70 -58
- 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 +1 -1
- package/dist/runtime/prose/A.vue +23 -18
- package/dist/runtime/prose/Blockquote.vue +23 -18
- package/dist/runtime/prose/Code.vue +31 -23
- package/dist/runtime/prose/Em.vue +23 -18
- package/dist/runtime/prose/H1.vue +23 -18
- package/dist/runtime/prose/H2.vue +23 -18
- package/dist/runtime/prose/H3.vue +23 -18
- package/dist/runtime/prose/H4.vue +23 -18
- package/dist/runtime/prose/H5.vue +23 -18
- package/dist/runtime/prose/H6.vue +23 -18
- package/dist/runtime/prose/Hr.vue +19 -18
- package/dist/runtime/prose/Img.vue +23 -18
- package/dist/runtime/prose/Li.vue +23 -18
- package/dist/runtime/prose/Ol.vue +23 -18
- package/dist/runtime/prose/P.vue +23 -18
- package/dist/runtime/prose/Pre.vue +33 -28
- package/dist/runtime/prose/Strong.vue +23 -18
- package/dist/runtime/prose/Table.vue +54 -44
- package/dist/runtime/prose/Tbody.vue +23 -18
- package/dist/runtime/prose/Td.vue +23 -18
- package/dist/runtime/prose/Th.vue +23 -18
- package/dist/runtime/prose/Thead.vue +23 -18
- package/dist/runtime/prose/Tr.vue +23 -18
- package/dist/runtime/prose/Ul.vue +23 -18
- package/dist/runtime/vue/components/Link.vue +202 -201
- package/dist/shared/b24ui-nuxt.DrKwIWoc.cjs +7721 -0
- package/dist/types.d.mts +5 -3
- package/dist/types.d.ts +7 -0
- package/dist/unplugin.cjs +236 -0
- package/dist/unplugin.d.cts +33 -0
- package/dist/unplugin.d.ts +33 -0
- package/dist/vite.cjs +21 -0
- package/dist/vite.d.cts +14 -0
- package/dist/vite.d.ts +14 -0
- package/package.json +25 -13
- package/dist/runtime/components/Advice.vue.d.ts +0 -170
- package/dist/runtime/components/Alert.vue.d.ts +0 -464
- package/dist/runtime/components/App.vue.d.ts +0 -23
- package/dist/runtime/components/Avatar.vue.d.ts +0 -281
- package/dist/runtime/components/AvatarGroup.vue.d.ts +0 -204
- package/dist/runtime/components/Badge.vue.d.ts +0 -517
- package/dist/runtime/components/Button.vue.d.ts +0 -640
- package/dist/runtime/components/ButtonGroup.vue.d.ts +0 -116
- package/dist/runtime/components/Calendar.vue.d.ts +0 -437
- package/dist/runtime/components/Checkbox.vue.d.ts +0 -354
- package/dist/runtime/components/Chip.vue.d.ts +0 -271
- package/dist/runtime/components/Collapsible.vue.d.ts +0 -118
- package/dist/runtime/components/Container.vue.d.ts +0 -27
- package/dist/runtime/components/Countdown.vue.d.ts +0 -356
- package/dist/runtime/components/DescriptionList.vue.d.ts +0 -379
- package/dist/runtime/components/DropdownMenu.vue.d.ts +0 -533
- package/dist/runtime/components/DropdownMenuContent.vue.d.ts +0 -228
- package/dist/runtime/components/Form.vue.d.ts +0 -55
- package/dist/runtime/components/FormField.vue.d.ts +0 -282
- package/dist/runtime/components/Input.vue.d.ts +0 -755
- package/dist/runtime/components/InputMenu.vue.d.ts +0 -1504
- package/dist/runtime/components/InputNumber.vue.d.ts +0 -658
- package/dist/runtime/components/Kbd.vue.d.ts +0 -109
- package/dist/runtime/components/Link.vue.d.ts +0 -129
- package/dist/runtime/components/LinkBase.vue.d.ts +0 -48
- package/dist/runtime/components/Modal.vue.d.ts +0 -327
- package/dist/runtime/components/ModalDialogClose.vue.d.ts +0 -10
- package/dist/runtime/components/Navbar.vue.d.ts +0 -101
- package/dist/runtime/components/NavbarDivider.vue.d.ts +0 -101
- package/dist/runtime/components/NavbarSection.vue.d.ts +0 -101
- package/dist/runtime/components/NavbarSpacer.vue.d.ts +0 -101
- package/dist/runtime/components/NavigationMenu.vue.d.ts +0 -824
- package/dist/runtime/components/OverlayProvider.vue.d.ts +0 -2
- package/dist/runtime/components/Popover.vue.d.ts +0 -147
- package/dist/runtime/components/Progress.vue.d.ts +0 -592
- package/dist/runtime/components/RadioGroup.vue.d.ts +0 -723
- package/dist/runtime/components/Range.vue.d.ts +0 -417
- package/dist/runtime/components/Select.vue.d.ts +0 -1200
- package/dist/runtime/components/SelectMenu.vue.d.ts +0 -1298
- package/dist/runtime/components/Separator.vue.d.ts +0 -400
- package/dist/runtime/components/Sidebar.vue.d.ts +0 -101
- package/dist/runtime/components/SidebarBody.vue.d.ts +0 -90
- package/dist/runtime/components/SidebarFooter.vue.d.ts +0 -101
- package/dist/runtime/components/SidebarHeader.vue.d.ts +0 -101
- package/dist/runtime/components/SidebarHeading.vue.d.ts +0 -101
- package/dist/runtime/components/SidebarLayout.vue.d.ts +0 -222
- package/dist/runtime/components/SidebarSection.vue.d.ts +0 -101
- package/dist/runtime/components/SidebarSpacer.vue.d.ts +0 -101
- package/dist/runtime/components/Skeleton.vue.d.ts +0 -26
- package/dist/runtime/components/Slideover.vue.d.ts +0 -360
- package/dist/runtime/components/StackedLayout.vue.d.ts +0 -192
- package/dist/runtime/components/Switch.vue.d.ts +0 -587
- package/dist/runtime/components/Tabs.vue.d.ts +0 -453
- package/dist/runtime/components/Textarea.vue.d.ts +0 -601
- package/dist/runtime/components/Toast.vue.d.ts +0 -438
- package/dist/runtime/components/Toaster.vue.d.ts +0 -219
- package/dist/runtime/components/Tooltip.vue.d.ts +0 -186
- package/dist/runtime/components/content/TableWrapper.vue.d.ts +0 -237
- package/dist/runtime/prose/A.vue.d.ts +0 -84
- package/dist/runtime/prose/Blockquote.vue.d.ts +0 -84
- package/dist/runtime/prose/Code.vue.d.ts +0 -97
- package/dist/runtime/prose/Em.vue.d.ts +0 -84
- package/dist/runtime/prose/H1.vue.d.ts +0 -97
- package/dist/runtime/prose/H2.vue.d.ts +0 -123
- package/dist/runtime/prose/H3.vue.d.ts +0 -123
- package/dist/runtime/prose/H4.vue.d.ts +0 -123
- package/dist/runtime/prose/H5.vue.d.ts +0 -123
- package/dist/runtime/prose/H6.vue.d.ts +0 -123
- package/dist/runtime/prose/Hr.vue.d.ts +0 -74
- package/dist/runtime/prose/Img.vue.d.ts +0 -77
- package/dist/runtime/prose/Li.vue.d.ts +0 -84
- package/dist/runtime/prose/Ol.vue.d.ts +0 -84
- package/dist/runtime/prose/P.vue.d.ts +0 -84
- package/dist/runtime/prose/Pre.vue.d.ts +0 -117
- package/dist/runtime/prose/Strong.vue.d.ts +0 -84
- package/dist/runtime/prose/Table.vue.d.ts +0 -144
- package/dist/runtime/prose/Tbody.vue.d.ts +0 -84
- package/dist/runtime/prose/Td.vue.d.ts +0 -84
- package/dist/runtime/prose/Th.vue.d.ts +0 -84
- package/dist/runtime/prose/Thead.vue.d.ts +0 -84
- package/dist/runtime/prose/Tr.vue.d.ts +0 -84
- package/dist/runtime/prose/Ul.vue.d.ts +0 -84
- package/dist/runtime/vue/components/Link.vue.d.ts +0 -129
|
@@ -1,138 +1,120 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { ButtonHTMLAttributes } from 'vue'
|
|
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
|
+
}
|
|
7
92
|
</script>
|
|
8
93
|
|
|
9
|
-
<script setup>
|
|
10
|
-
import { computed } from
|
|
11
|
-
import { isEqual, diff } from
|
|
12
|
-
import { useForwardProps } from
|
|
13
|
-
import { reactiveOmit } from
|
|
14
|
-
import { useRoute } from
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
required: false,
|
|
34
|
-
default: void 0
|
|
35
|
-
},
|
|
36
|
-
exact: {
|
|
37
|
-
type: Boolean,
|
|
38
|
-
required: false
|
|
39
|
-
},
|
|
40
|
-
exactQuery: {
|
|
41
|
-
type: [Boolean, String],
|
|
42
|
-
required: false
|
|
43
|
-
},
|
|
44
|
-
exactHash: {
|
|
45
|
-
type: Boolean,
|
|
46
|
-
required: false
|
|
47
|
-
},
|
|
48
|
-
inactiveClass: {
|
|
49
|
-
type: String,
|
|
50
|
-
required: false,
|
|
51
|
-
default: ""
|
|
52
|
-
},
|
|
53
|
-
custom: {
|
|
54
|
-
type: Boolean,
|
|
55
|
-
required: false
|
|
56
|
-
},
|
|
57
|
-
isAction: {
|
|
58
|
-
type: Boolean,
|
|
59
|
-
required: false,
|
|
60
|
-
default: false
|
|
61
|
-
},
|
|
62
|
-
raw: {
|
|
63
|
-
type: Boolean,
|
|
64
|
-
required: false
|
|
65
|
-
},
|
|
66
|
-
class: {
|
|
67
|
-
type: null,
|
|
68
|
-
required: false
|
|
69
|
-
},
|
|
70
|
-
to: {
|
|
71
|
-
type: null,
|
|
72
|
-
required: false
|
|
73
|
-
},
|
|
74
|
-
href: {
|
|
75
|
-
type: null,
|
|
76
|
-
required: false
|
|
77
|
-
},
|
|
78
|
-
external: {
|
|
79
|
-
type: Boolean,
|
|
80
|
-
required: false
|
|
81
|
-
},
|
|
82
|
-
target: {
|
|
83
|
-
type: [String, Object, null],
|
|
84
|
-
required: false
|
|
85
|
-
},
|
|
86
|
-
rel: {
|
|
87
|
-
type: [String, Object, null],
|
|
88
|
-
required: false
|
|
89
|
-
},
|
|
90
|
-
noRel: {
|
|
91
|
-
type: Boolean,
|
|
92
|
-
required: false
|
|
93
|
-
},
|
|
94
|
-
prefetchedClass: {
|
|
95
|
-
type: String,
|
|
96
|
-
required: false
|
|
97
|
-
},
|
|
98
|
-
prefetch: {
|
|
99
|
-
type: Boolean,
|
|
100
|
-
required: false
|
|
101
|
-
},
|
|
102
|
-
prefetchOn: {
|
|
103
|
-
type: [String, Object],
|
|
104
|
-
required: false
|
|
105
|
-
},
|
|
106
|
-
noPrefetch: {
|
|
107
|
-
type: Boolean,
|
|
108
|
-
required: false
|
|
109
|
-
},
|
|
110
|
-
activeClass: {
|
|
111
|
-
type: String,
|
|
112
|
-
required: false,
|
|
113
|
-
default: ""
|
|
114
|
-
},
|
|
115
|
-
exactActiveClass: {
|
|
116
|
-
type: String,
|
|
117
|
-
required: false
|
|
118
|
-
},
|
|
119
|
-
ariaCurrentValue: {
|
|
120
|
-
type: String,
|
|
121
|
-
required: false,
|
|
122
|
-
default: "page"
|
|
123
|
-
},
|
|
124
|
-
viewTransition: {
|
|
125
|
-
type: Boolean,
|
|
126
|
-
required: false
|
|
127
|
-
},
|
|
128
|
-
replace: {
|
|
129
|
-
type: Boolean,
|
|
130
|
-
required: false
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
defineSlots();
|
|
134
|
-
const route = useRoute();
|
|
135
|
-
const nuxtLinkProps = useForwardProps(reactiveOmit(props, "as", "type", "disabled", "active", "exact", "exactQuery", "exactHash", "activeClass", "inactiveClass", "raw", "class"));
|
|
94
|
+
<script setup lang="ts">
|
|
95
|
+
import { computed } from 'vue'
|
|
96
|
+
import { isEqual, diff } from 'ohash/utils'
|
|
97
|
+
import { useForwardProps } from 'reka-ui'
|
|
98
|
+
import { reactiveOmit } from '@vueuse/core'
|
|
99
|
+
import { useRoute } from '#imports'
|
|
100
|
+
import B24LinkBase from './LinkBase.vue'
|
|
101
|
+
|
|
102
|
+
defineOptions({ inheritAttrs: false })
|
|
103
|
+
|
|
104
|
+
const props = withDefaults(defineProps<LinkProps>(), {
|
|
105
|
+
as: 'button',
|
|
106
|
+
type: 'button',
|
|
107
|
+
ariaCurrentValue: 'page',
|
|
108
|
+
active: undefined,
|
|
109
|
+
isAction: false,
|
|
110
|
+
activeClass: '',
|
|
111
|
+
inactiveClass: ''
|
|
112
|
+
})
|
|
113
|
+
defineSlots<LinkSlots>()
|
|
114
|
+
|
|
115
|
+
const route = useRoute()
|
|
116
|
+
const nuxtLinkProps = useForwardProps(reactiveOmit(props, 'as', 'type', 'disabled', 'active', 'exact', 'exactQuery', 'exactHash', 'activeClass', 'inactiveClass', 'raw', 'class'))
|
|
117
|
+
|
|
136
118
|
const b24ui = computed(() => tv({
|
|
137
119
|
extend: link,
|
|
138
120
|
variants: {
|
|
@@ -141,49 +123,61 @@ const b24ui = computed(() => tv({
|
|
|
141
123
|
false: props.inactiveClass
|
|
142
124
|
}
|
|
143
125
|
}
|
|
144
|
-
}))
|
|
145
|
-
|
|
126
|
+
}))
|
|
127
|
+
|
|
128
|
+
function isPartiallyEqual(item1: any, item2: any) {
|
|
146
129
|
const diffedKeys = diff(item1, item2).reduce((filtered, q) => {
|
|
147
|
-
if (q.type ===
|
|
148
|
-
filtered.add(q.key)
|
|
130
|
+
if (q.type === 'added') {
|
|
131
|
+
filtered.add(q.key)
|
|
149
132
|
}
|
|
150
|
-
return filtered
|
|
151
|
-
},
|
|
152
|
-
|
|
153
|
-
const
|
|
154
|
-
|
|
133
|
+
return filtered
|
|
134
|
+
}, new Set<string>())
|
|
135
|
+
|
|
136
|
+
const item1Filtered = Object.fromEntries(Object.entries(item1).filter(([key]) => !diffedKeys.has(key)))
|
|
137
|
+
const item2Filtered = Object.fromEntries(Object.entries(item2).filter(([key]) => !diffedKeys.has(key)))
|
|
138
|
+
|
|
139
|
+
return isEqual(item1Filtered, item2Filtered)
|
|
155
140
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
141
|
+
|
|
142
|
+
function isLinkActive({ route: linkRoute, isActive, isExactActive }: any) {
|
|
143
|
+
if (props.active !== undefined) {
|
|
144
|
+
return props.active
|
|
159
145
|
}
|
|
160
|
-
|
|
161
|
-
|
|
146
|
+
|
|
147
|
+
if (props.exactQuery === 'partial') {
|
|
148
|
+
if (!isPartiallyEqual(linkRoute.query, route.query)) return false
|
|
162
149
|
} else if (props.exactQuery === true) {
|
|
163
|
-
if (!isEqual(linkRoute.query, route.query)) return false
|
|
150
|
+
if (!isEqual(linkRoute.query, route.query)) return false
|
|
164
151
|
}
|
|
152
|
+
|
|
165
153
|
if (props.exactHash && linkRoute.hash !== route.hash) {
|
|
166
|
-
return false
|
|
154
|
+
return false
|
|
167
155
|
}
|
|
156
|
+
|
|
168
157
|
if (props.exact && isExactActive) {
|
|
169
|
-
return true
|
|
158
|
+
return true
|
|
170
159
|
}
|
|
160
|
+
|
|
171
161
|
if (!props.exact && isActive) {
|
|
172
|
-
return true
|
|
162
|
+
return true
|
|
173
163
|
}
|
|
174
|
-
|
|
164
|
+
|
|
165
|
+
return false
|
|
175
166
|
}
|
|
176
|
-
|
|
177
|
-
|
|
167
|
+
|
|
168
|
+
function resolveLinkClass({ route, isActive, isExactActive }: any) {
|
|
169
|
+
const active = isLinkActive({ route, isActive, isExactActive })
|
|
170
|
+
|
|
178
171
|
if (props.raw) {
|
|
179
|
-
return [props.class, active ? props.activeClass : props.inactiveClass]
|
|
172
|
+
return [props.class, active ? props.activeClass : props.inactiveClass]
|
|
180
173
|
}
|
|
174
|
+
|
|
181
175
|
return b24ui.value({
|
|
182
176
|
class: props.class,
|
|
183
177
|
active,
|
|
184
178
|
disabled: props.disabled,
|
|
185
179
|
isAction: Boolean(props.isAction)
|
|
186
|
-
})
|
|
180
|
+
})
|
|
187
181
|
}
|
|
188
182
|
</script>
|
|
189
183
|
|
|
@@ -196,34 +190,34 @@ function resolveLinkClass({ route: route2, isActive, isExactActive }) {
|
|
|
196
190
|
<template v-if="custom">
|
|
197
191
|
<slot
|
|
198
192
|
v-bind="{
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
}"
|
|
193
|
+
...$attrs,
|
|
194
|
+
...(exact && isExactActive ? { 'aria-current': props.ariaCurrentValue } : {}),
|
|
195
|
+
as,
|
|
196
|
+
type,
|
|
197
|
+
disabled,
|
|
198
|
+
href,
|
|
199
|
+
navigate,
|
|
200
|
+
rel,
|
|
201
|
+
target,
|
|
202
|
+
isExternal,
|
|
203
|
+
active: isLinkActive({ route: linkRoute, isActive, isExactActive })
|
|
204
|
+
}"
|
|
211
205
|
/>
|
|
212
206
|
</template>
|
|
213
207
|
<B24LinkBase
|
|
214
208
|
v-else
|
|
215
209
|
v-bind="{
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
}"
|
|
210
|
+
...$attrs,
|
|
211
|
+
...(exact && isExactActive ? { 'aria-current': props.ariaCurrentValue } : {}),
|
|
212
|
+
as,
|
|
213
|
+
type,
|
|
214
|
+
disabled,
|
|
215
|
+
href,
|
|
216
|
+
navigate,
|
|
217
|
+
rel,
|
|
218
|
+
target,
|
|
219
|
+
isExternal
|
|
220
|
+
}"
|
|
227
221
|
:class="resolveLinkClass({ route: linkRoute, isActive, isExactActive })"
|
|
228
222
|
>
|
|
229
223
|
<slot :active="isLinkActive({ route: linkRoute, isActive, isExactActive })" />
|
|
@@ -1,65 +1,43 @@
|
|
|
1
|
-
<script>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { LinkProps } from '../types'
|
|
2
3
|
|
|
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
|
+
}
|
|
3
16
|
</script>
|
|
4
17
|
|
|
5
|
-
<script setup>
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
required: false,
|
|
15
|
-
default: "button"
|
|
16
|
-
},
|
|
17
|
-
disabled: {
|
|
18
|
-
type: Boolean,
|
|
19
|
-
required: false
|
|
20
|
-
},
|
|
21
|
-
onClick: {
|
|
22
|
-
type: [Function, Array],
|
|
23
|
-
required: false
|
|
24
|
-
},
|
|
25
|
-
href: {
|
|
26
|
-
type: String,
|
|
27
|
-
required: false
|
|
28
|
-
},
|
|
29
|
-
navigate: {
|
|
30
|
-
type: Function,
|
|
31
|
-
required: false
|
|
32
|
-
},
|
|
33
|
-
target: {
|
|
34
|
-
type: [String, Object, null],
|
|
35
|
-
required: false
|
|
36
|
-
},
|
|
37
|
-
rel: {
|
|
38
|
-
type: [String, Object, null],
|
|
39
|
-
required: false
|
|
40
|
-
},
|
|
41
|
-
active: {
|
|
42
|
-
type: Boolean,
|
|
43
|
-
required: false
|
|
44
|
-
},
|
|
45
|
-
isExternal: {
|
|
46
|
-
type: Boolean,
|
|
47
|
-
required: false
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
function onClickWrapper(e) {
|
|
18
|
+
<script setup lang="ts">
|
|
19
|
+
import { Primitive } from 'reka-ui'
|
|
20
|
+
|
|
21
|
+
const props = withDefaults(defineProps<LinkBaseProps>(), {
|
|
22
|
+
as: 'button',
|
|
23
|
+
type: 'button'
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
function onClickWrapper(e: MouseEvent) {
|
|
51
27
|
if (props.disabled) {
|
|
52
|
-
e.stopPropagation()
|
|
53
|
-
e.preventDefault()
|
|
54
|
-
return
|
|
28
|
+
e.stopPropagation()
|
|
29
|
+
e.preventDefault()
|
|
30
|
+
return
|
|
55
31
|
}
|
|
32
|
+
|
|
56
33
|
if (props.onClick) {
|
|
57
34
|
for (const onClick of Array.isArray(props.onClick) ? props.onClick : [props.onClick]) {
|
|
58
|
-
onClick(e)
|
|
35
|
+
onClick(e)
|
|
59
36
|
}
|
|
60
37
|
}
|
|
38
|
+
|
|
61
39
|
if (props.href && props.navigate && !props.isExternal) {
|
|
62
|
-
props.navigate(e)
|
|
40
|
+
props.navigate(e)
|
|
63
41
|
}
|
|
64
42
|
}
|
|
65
43
|
</script>
|
|
@@ -67,18 +45,18 @@ function onClickWrapper(e) {
|
|
|
67
45
|
<template>
|
|
68
46
|
<Primitive
|
|
69
47
|
v-bind="href ? {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
} : as === 'button' ? {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
} : {
|
|
80
|
-
|
|
81
|
-
}"
|
|
48
|
+
'as': 'a',
|
|
49
|
+
'href': disabled ? undefined : href,
|
|
50
|
+
'aria-disabled': disabled ? 'true' : undefined,
|
|
51
|
+
'role': disabled ? 'link' : undefined,
|
|
52
|
+
'tabindex': disabled ? -1 : undefined
|
|
53
|
+
} : as === 'button' ? {
|
|
54
|
+
as,
|
|
55
|
+
type,
|
|
56
|
+
disabled
|
|
57
|
+
} : {
|
|
58
|
+
as
|
|
59
|
+
}"
|
|
82
60
|
:rel="rel"
|
|
83
61
|
:target="target"
|
|
84
62
|
@click="onClickWrapper"
|