@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,172 +1,115 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import
|
|
3
|
-
import type { AppConfig } from '@nuxt/schema'
|
|
4
|
-
import _appConfig from '#build/app.config'
|
|
5
|
-
import theme from '#build/b24ui/button'
|
|
6
|
-
import type { LinkProps } from './Link.vue'
|
|
7
|
-
import type { UseComponentIconsProps } from '../composables/useComponentIcons'
|
|
8
|
-
import { tv } from '../utils/tv'
|
|
9
|
-
import type { AvatarProps } from '../types'
|
|
10
|
-
import type { PartialString } from '../types/utils'
|
|
11
|
-
|
|
12
|
-
const appConfigButton = _appConfig as AppConfig & { b24ui: { button: Partial<typeof theme> } }
|
|
13
|
-
|
|
14
|
-
const button = tv({ extend: tv(theme), ...(appConfigButton.b24ui?.button || {}) })
|
|
15
|
-
|
|
16
|
-
type ButtonVariants = VariantProps<typeof button>
|
|
17
|
-
|
|
18
|
-
export interface ButtonProps extends Omit<UseComponentIconsProps, 'trailing' | 'trailingIcon'>, Omit<LinkProps, 'raw' | 'custom'> {
|
|
19
|
-
label?: string
|
|
20
|
-
/**
|
|
21
|
-
* @defaultValue 'default'
|
|
22
|
-
*/
|
|
23
|
-
color?: ButtonVariants['color']
|
|
24
|
-
activeColor?: ButtonVariants['color']
|
|
25
|
-
/**
|
|
26
|
-
* @defaultValue 'normal'
|
|
27
|
-
*/
|
|
28
|
-
depth?: ButtonVariants['depth']
|
|
29
|
-
activeDepth?: ButtonVariants['depth']
|
|
30
|
-
/**
|
|
31
|
-
* @defaultValue 'md'
|
|
32
|
-
*/
|
|
33
|
-
size?: ButtonVariants['size']
|
|
34
|
-
/**
|
|
35
|
-
* Rounds the corners of the button
|
|
36
|
-
* @defaultValue false
|
|
37
|
-
*/
|
|
38
|
-
rounded?: boolean
|
|
39
|
-
/**
|
|
40
|
-
* Render the button full width
|
|
41
|
-
* @defaultValue false
|
|
42
|
-
*/
|
|
43
|
-
block?: boolean
|
|
44
|
-
/**
|
|
45
|
-
* Set loading state automatically based on the `@click` promise state
|
|
46
|
-
* @defaultValue false
|
|
47
|
-
*/
|
|
48
|
-
loadingAuto?: boolean
|
|
49
|
-
/**
|
|
50
|
-
* Disable uppercase label
|
|
51
|
-
* @defaultValue false
|
|
52
|
-
*/
|
|
53
|
-
normalCase?: boolean
|
|
54
|
-
/**
|
|
55
|
-
* Shows LoaderWaitIcon in loading mode
|
|
56
|
-
* @defaultValue false
|
|
57
|
-
*/
|
|
58
|
-
useWait?: boolean
|
|
59
|
-
/**
|
|
60
|
-
* Shows LoaderClockIcon icon in loading mode
|
|
61
|
-
* @defaultValue false
|
|
62
|
-
*/
|
|
63
|
-
useClock?: boolean
|
|
64
|
-
/**
|
|
65
|
-
* Shows icons.chevronDown on the right side
|
|
66
|
-
* @defaultValue false
|
|
67
|
-
*/
|
|
68
|
-
useDropdown?: boolean
|
|
69
|
-
onClick?: ((event: MouseEvent) => void | Promise<void>) | Array<((event: MouseEvent) => void | Promise<void>)>
|
|
70
|
-
class?: any
|
|
71
|
-
/**
|
|
72
|
-
* The class to apply when the link is active
|
|
73
|
-
* @defaultValue ''
|
|
74
|
-
*/
|
|
75
|
-
activeClass?: string
|
|
76
|
-
/**
|
|
77
|
-
* The class to apply when the link is inactive
|
|
78
|
-
* @defaultValue ''
|
|
79
|
-
*/
|
|
80
|
-
inactiveClass?: string
|
|
81
|
-
b24ui?: PartialString<typeof button.slots>
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
export interface ButtonSlots {
|
|
85
|
-
leading(props?: {}): any
|
|
86
|
-
default(props?: {}): any
|
|
87
|
-
trailing(props?: {}): any
|
|
88
|
-
}
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/b24ui/button";
|
|
89
3
|
</script>
|
|
90
4
|
|
|
91
|
-
<script setup
|
|
92
|
-
import {
|
|
93
|
-
import {
|
|
94
|
-
import {
|
|
95
|
-
import {
|
|
96
|
-
import {
|
|
97
|
-
import {
|
|
98
|
-
import {
|
|
99
|
-
import
|
|
100
|
-
import
|
|
101
|
-
import
|
|
102
|
-
import
|
|
103
|
-
import
|
|
104
|
-
import
|
|
105
|
-
import
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
5
|
+
<script setup>
|
|
6
|
+
import { computed, ref, inject } from "vue";
|
|
7
|
+
import { defu } from "defu";
|
|
8
|
+
import { useForwardProps } from "reka-ui";
|
|
9
|
+
import { useAppConfig } from "#imports";
|
|
10
|
+
import { useComponentIcons } from "../composables/useComponentIcons";
|
|
11
|
+
import { useButtonGroup } from "../composables/useButtonGroup";
|
|
12
|
+
import { formLoadingInjectionKey } from "../composables/useFormField";
|
|
13
|
+
import { omit } from "../utils";
|
|
14
|
+
import { tv } from "../utils/tv";
|
|
15
|
+
import { pickLinkProps } from "../utils/link";
|
|
16
|
+
import B24Avatar from "./Avatar.vue";
|
|
17
|
+
import B24Link from "./Link.vue";
|
|
18
|
+
import B24LinkBase from "./LinkBase.vue";
|
|
19
|
+
import ChevronDownIcon from "@bitrix24/b24icons-vue/actions/ChevronDownIcon";
|
|
20
|
+
import LoaderWaitIcon from "@bitrix24/b24icons-vue/animated/LoaderWaitIcon";
|
|
21
|
+
import LoaderClockIcon from "@bitrix24/b24icons-vue/animated/LoaderClockIcon";
|
|
22
|
+
import SpinnerIcon from "@bitrix24/b24icons-vue/specialized/SpinnerIcon";
|
|
23
|
+
const props = defineProps({
|
|
24
|
+
label: { type: String, required: false },
|
|
25
|
+
color: { type: null, required: false },
|
|
26
|
+
activeColor: { type: null, required: false },
|
|
27
|
+
depth: { type: null, required: false },
|
|
28
|
+
activeDepth: { type: null, required: false },
|
|
29
|
+
size: { type: null, required: false },
|
|
30
|
+
rounded: { type: Boolean, required: false },
|
|
31
|
+
block: { type: Boolean, required: false },
|
|
32
|
+
loadingAuto: { type: Boolean, required: false },
|
|
33
|
+
normalCase: { type: Boolean, required: false },
|
|
34
|
+
useWait: { type: Boolean, required: false },
|
|
35
|
+
useClock: { type: Boolean, required: false },
|
|
36
|
+
useDropdown: { type: Boolean, required: false },
|
|
37
|
+
onClick: { type: [Function, Array], required: false },
|
|
38
|
+
class: { type: null, required: false },
|
|
39
|
+
activeClass: { type: String, required: false, default: "" },
|
|
40
|
+
inactiveClass: { type: String, required: false, default: "" },
|
|
41
|
+
b24ui: { type: null, required: false },
|
|
42
|
+
icon: { type: [Function, Object], required: false },
|
|
43
|
+
avatar: { type: Object, required: false },
|
|
44
|
+
loading: { type: Boolean, required: false },
|
|
45
|
+
as: { type: null, required: false },
|
|
46
|
+
type: { type: null, required: false, default: "button" },
|
|
47
|
+
disabled: { type: Boolean, required: false },
|
|
48
|
+
active: { type: Boolean, required: false, default: void 0 },
|
|
49
|
+
exact: { type: Boolean, required: false },
|
|
50
|
+
exactQuery: { type: [Boolean, String], required: false },
|
|
51
|
+
exactHash: { type: Boolean, required: false },
|
|
52
|
+
isAction: { type: Boolean, required: false },
|
|
53
|
+
to: { type: null, required: false },
|
|
54
|
+
href: { type: null, required: false },
|
|
55
|
+
external: { type: Boolean, required: false },
|
|
56
|
+
target: { type: [String, Object, null], required: false },
|
|
57
|
+
rel: { type: [String, Object, null], required: false },
|
|
58
|
+
noRel: { type: Boolean, required: false },
|
|
59
|
+
prefetchedClass: { type: String, required: false },
|
|
60
|
+
prefetch: { type: Boolean, required: false },
|
|
61
|
+
prefetchOn: { type: [String, Object], required: false },
|
|
62
|
+
noPrefetch: { type: Boolean, required: false },
|
|
63
|
+
exactActiveClass: { type: String, required: false },
|
|
64
|
+
ariaCurrentValue: { type: String, required: false },
|
|
65
|
+
viewTransition: { type: Boolean, required: false },
|
|
66
|
+
replace: { type: Boolean, required: false }
|
|
67
|
+
});
|
|
68
|
+
const slots = defineSlots();
|
|
69
|
+
const appConfig = useAppConfig();
|
|
70
|
+
const { orientation, size: buttonSize, noSplit } = useButtonGroup(props);
|
|
71
|
+
const linkProps = useForwardProps(pickLinkProps(props));
|
|
121
72
|
const proxyLinkProps = computed(() => {
|
|
122
|
-
return omit(linkProps.value, [
|
|
123
|
-
})
|
|
124
|
-
|
|
125
|
-
const
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
const
|
|
129
|
-
|
|
130
|
-
async function onClickWrapper(event: MouseEvent) {
|
|
131
|
-
loadingAutoState.value = true
|
|
132
|
-
const callbacks = Array.isArray(props.onClick) ? props.onClick : [props.onClick]
|
|
73
|
+
return omit(linkProps.value, ["type", "disabled", "onClick"]);
|
|
74
|
+
});
|
|
75
|
+
const loadingAutoState = ref(false);
|
|
76
|
+
const formLoading = inject(formLoadingInjectionKey, void 0);
|
|
77
|
+
async function onClickWrapper(event) {
|
|
78
|
+
loadingAutoState.value = true;
|
|
79
|
+
const callbacks = Array.isArray(props.onClick) ? props.onClick : [props.onClick];
|
|
133
80
|
try {
|
|
134
|
-
await Promise.all(callbacks.map(fn => fn?.(event)))
|
|
81
|
+
await Promise.all(callbacks.map((fn) => fn?.(event)));
|
|
135
82
|
} finally {
|
|
136
|
-
loadingAutoState.value = false
|
|
83
|
+
loadingAutoState.value = false;
|
|
137
84
|
}
|
|
138
85
|
}
|
|
139
|
-
|
|
140
86
|
const isLoading = computed(() => {
|
|
141
|
-
return props.loading ||
|
|
142
|
-
})
|
|
143
|
-
|
|
87
|
+
return props.loading || props.loadingAuto && (loadingAutoState.value || formLoading?.value && props.type === "submit");
|
|
88
|
+
});
|
|
144
89
|
const { isLeading, leadingIconName } = useComponentIcons(
|
|
145
90
|
computed(() => ({ ...props, loading: false }))
|
|
146
|
-
)
|
|
147
|
-
|
|
91
|
+
);
|
|
148
92
|
const isLabel = computed(() => {
|
|
149
|
-
let isUseSlot = false
|
|
150
|
-
|
|
93
|
+
let isUseSlot = false;
|
|
151
94
|
if (slots && !!slots.default) {
|
|
152
|
-
isUseSlot = true
|
|
95
|
+
isUseSlot = true;
|
|
153
96
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
})
|
|
157
|
-
|
|
97
|
+
return (props?.label || "").length > 0 || isUseSlot;
|
|
98
|
+
});
|
|
158
99
|
const b24ui = computed(() => tv({
|
|
159
|
-
extend:
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
100
|
+
extend: tv(theme),
|
|
101
|
+
...defu({
|
|
102
|
+
variants: {
|
|
103
|
+
active: {
|
|
104
|
+
true: {
|
|
105
|
+
base: props.activeClass
|
|
106
|
+
},
|
|
107
|
+
false: {
|
|
108
|
+
base: props.inactiveClass
|
|
109
|
+
}
|
|
167
110
|
}
|
|
168
111
|
}
|
|
169
|
-
}
|
|
112
|
+
}, appConfig.b24ui?.button || {})
|
|
170
113
|
})({
|
|
171
114
|
color: props.color,
|
|
172
115
|
depth: props.depth,
|
|
@@ -182,7 +125,7 @@ const b24ui = computed(() => tv({
|
|
|
182
125
|
useClock: Boolean(props.useClock),
|
|
183
126
|
leading: Boolean(isLeading.value),
|
|
184
127
|
buttonGroup: orientation.value
|
|
185
|
-
}))
|
|
128
|
+
}));
|
|
186
129
|
</script>
|
|
187
130
|
|
|
188
131
|
<template>
|
|
@@ -197,11 +140,11 @@ const b24ui = computed(() => tv({
|
|
|
197
140
|
<B24LinkBase
|
|
198
141
|
v-bind="slotProps"
|
|
199
142
|
:class="b24ui.base({
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
143
|
+
class: [props.class, props.b24ui?.base],
|
|
144
|
+
active,
|
|
145
|
+
...active && activeDepth ? { depth: activeDepth } : {},
|
|
146
|
+
...active && activeColor ? { color: activeColor } : {}
|
|
147
|
+
})"
|
|
205
148
|
@click="onClickWrapper"
|
|
206
149
|
>
|
|
207
150
|
<div
|
|
@@ -214,19 +157,19 @@ const b24ui = computed(() => tv({
|
|
|
214
157
|
</div>
|
|
215
158
|
<div
|
|
216
159
|
:class="[
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
160
|
+
b24ui.baseLine({ class: [props.b24ui?.baseLine] }),
|
|
161
|
+
isLoading ? 'invisible' : ''
|
|
162
|
+
]"
|
|
220
163
|
>
|
|
221
164
|
<slot name="leading">
|
|
222
165
|
<Component
|
|
223
166
|
:is="leadingIconName"
|
|
224
|
-
v-if="isLeading &&
|
|
167
|
+
v-if="isLeading && typeof leadingIconName !== 'undefined'"
|
|
225
168
|
:class="b24ui.leadingIcon({ class: props.b24ui?.leadingIcon })"
|
|
226
169
|
/>
|
|
227
170
|
<B24Avatar
|
|
228
171
|
v-else-if="!!avatar"
|
|
229
|
-
:size="
|
|
172
|
+
:size="props.b24ui?.leadingAvatarSize || b24ui.leadingAvatarSize()"
|
|
230
173
|
v-bind="avatar"
|
|
231
174
|
:class="b24ui.leadingAvatar({ class: props.b24ui?.leadingAvatar })"
|
|
232
175
|
/>
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
2
|
+
import theme from '#build/b24ui/button';
|
|
3
|
+
import type { LinkProps } from './Link.vue';
|
|
4
|
+
import type { UseComponentIconsProps } from '../composables/useComponentIcons';
|
|
5
|
+
import type { ComponentConfig } from '../types/utils';
|
|
6
|
+
type Button = ComponentConfig<typeof theme, AppConfig, 'button'>;
|
|
7
|
+
export interface ButtonProps extends Omit<UseComponentIconsProps, 'trailing' | 'trailingIcon'>, Omit<LinkProps, 'raw' | 'custom'> {
|
|
8
|
+
label?: string;
|
|
9
|
+
/**
|
|
10
|
+
* @defaultValue 'default'
|
|
11
|
+
*/
|
|
12
|
+
color?: Button['variants']['color'];
|
|
13
|
+
activeColor?: Button['variants']['color'];
|
|
14
|
+
/**
|
|
15
|
+
* @defaultValue 'normal'
|
|
16
|
+
*/
|
|
17
|
+
depth?: Button['variants']['depth'];
|
|
18
|
+
activeDepth?: Button['variants']['depth'];
|
|
19
|
+
/**
|
|
20
|
+
* @defaultValue 'md'
|
|
21
|
+
*/
|
|
22
|
+
size?: Button['variants']['size'];
|
|
23
|
+
/**
|
|
24
|
+
* Rounds the corners of the button
|
|
25
|
+
* @defaultValue false
|
|
26
|
+
*/
|
|
27
|
+
rounded?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Render the button full width
|
|
30
|
+
* @defaultValue false
|
|
31
|
+
*/
|
|
32
|
+
block?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Set loading state automatically based on the `@click` promise state
|
|
35
|
+
* @defaultValue false
|
|
36
|
+
*/
|
|
37
|
+
loadingAuto?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Disable uppercase label
|
|
40
|
+
* @defaultValue false
|
|
41
|
+
*/
|
|
42
|
+
normalCase?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Shows LoaderWaitIcon in loading mode
|
|
45
|
+
* @defaultValue false
|
|
46
|
+
*/
|
|
47
|
+
useWait?: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Shows LoaderClockIcon icon in loading mode
|
|
50
|
+
* @defaultValue false
|
|
51
|
+
*/
|
|
52
|
+
useClock?: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Shows icons.chevronDown on the right side
|
|
55
|
+
* @defaultValue false
|
|
56
|
+
*/
|
|
57
|
+
useDropdown?: boolean;
|
|
58
|
+
onClick?: ((event: MouseEvent) => void | Promise<void>) | Array<((event: MouseEvent) => void | Promise<void>)>;
|
|
59
|
+
class?: any;
|
|
60
|
+
/**
|
|
61
|
+
* The class to apply when the link is active
|
|
62
|
+
* @defaultValue ''
|
|
63
|
+
*/
|
|
64
|
+
activeClass?: string;
|
|
65
|
+
/**
|
|
66
|
+
* The class to apply when the link is inactive
|
|
67
|
+
* @defaultValue ''
|
|
68
|
+
*/
|
|
69
|
+
inactiveClass?: string;
|
|
70
|
+
b24ui?: Button['slots'];
|
|
71
|
+
}
|
|
72
|
+
export interface ButtonSlots {
|
|
73
|
+
leading(props?: {}): any;
|
|
74
|
+
default(props?: {}): any;
|
|
75
|
+
trailing(props?: {}): any;
|
|
76
|
+
}
|
|
77
|
+
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<ButtonProps>, {
|
|
78
|
+
type: string;
|
|
79
|
+
active: undefined;
|
|
80
|
+
activeClass: string;
|
|
81
|
+
inactiveClass: string;
|
|
82
|
+
}>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<ButtonProps>, {
|
|
83
|
+
type: string;
|
|
84
|
+
active: undefined;
|
|
85
|
+
activeClass: string;
|
|
86
|
+
inactiveClass: string;
|
|
87
|
+
}>>> & Readonly<{}>, {
|
|
88
|
+
type: "reset" | "submit" | "button";
|
|
89
|
+
activeClass: string;
|
|
90
|
+
active: boolean;
|
|
91
|
+
inactiveClass: string;
|
|
92
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<ButtonSlots> & ButtonSlots>;
|
|
93
|
+
export default _default;
|
|
94
|
+
type __VLS_WithDefaults<P, D> = {
|
|
95
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
|
|
96
|
+
default: D[K];
|
|
97
|
+
}> : P[K];
|
|
98
|
+
};
|
|
99
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
100
|
+
type __VLS_TypePropsToOption<T> = {
|
|
101
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
102
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
103
|
+
} : {
|
|
104
|
+
type: import('vue').PropType<T[K]>;
|
|
105
|
+
required: true;
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
109
|
+
new (): {
|
|
110
|
+
$slots: S;
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
type __VLS_PrettifyLocal<T> = {
|
|
114
|
+
[K in keyof T]: T[K];
|
|
115
|
+
} & {};
|
|
@@ -1,64 +1,37 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import
|
|
3
|
-
import type { AppConfig } from '@nuxt/schema'
|
|
4
|
-
import _appConfig from '#build/app.config'
|
|
5
|
-
import theme from '#build/b24ui/button-group'
|
|
6
|
-
import { tv } from '../utils/tv'
|
|
7
|
-
|
|
8
|
-
const appConfigButtonGroup = _appConfig as AppConfig & { b24ui: { buttonGroup: Partial<typeof theme> } }
|
|
9
|
-
|
|
10
|
-
const buttonGroup = tv({ extend: tv(theme), ...(appConfigButtonGroup.b24ui?.buttonGroup) })
|
|
11
|
-
|
|
12
|
-
type ButtonGroupVariants = VariantProps<typeof buttonGroup>
|
|
13
|
-
|
|
14
|
-
export interface ButtonGroupProps {
|
|
15
|
-
/**
|
|
16
|
-
* The element or component this component should render as.
|
|
17
|
-
* @defaultValue 'div'
|
|
18
|
-
*/
|
|
19
|
-
as?: any
|
|
20
|
-
/**
|
|
21
|
-
* @defaultValue 'md'
|
|
22
|
-
*/
|
|
23
|
-
size?: ButtonGroupVariants['size']
|
|
24
|
-
/**
|
|
25
|
-
* The orientation the buttons are laid out.
|
|
26
|
-
* @defaultValue 'horizontal'
|
|
27
|
-
*/
|
|
28
|
-
orientation?: ButtonGroupVariants['orientation']
|
|
29
|
-
/**
|
|
30
|
-
* Disable show split
|
|
31
|
-
* @defaultValue false
|
|
32
|
-
*/
|
|
33
|
-
noSplit?: boolean
|
|
34
|
-
class?: any
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export interface ButtonGroupSlots {
|
|
38
|
-
default(props?: {}): any
|
|
39
|
-
}
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/b24ui/button-group";
|
|
40
3
|
</script>
|
|
41
4
|
|
|
42
|
-
<script setup
|
|
43
|
-
import { provide, computed } from
|
|
44
|
-
import { Primitive } from
|
|
45
|
-
import {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
|
|
5
|
+
<script setup>
|
|
6
|
+
import { provide, computed } from "vue";
|
|
7
|
+
import { Primitive } from "reka-ui";
|
|
8
|
+
import { useAppConfig } from "#imports";
|
|
9
|
+
import { buttonGroupInjectionKey } from "../composables/useButtonGroup";
|
|
10
|
+
import { tv } from "../utils/tv";
|
|
11
|
+
const props = defineProps({
|
|
12
|
+
as: { type: null, required: false },
|
|
13
|
+
size: { type: null, required: false },
|
|
14
|
+
orientation: { type: null, required: false, default: "horizontal" },
|
|
15
|
+
noSplit: { type: Boolean, required: false, default: false },
|
|
16
|
+
class: { type: null, required: false },
|
|
17
|
+
b24ui: { type: null, required: false }
|
|
18
|
+
});
|
|
19
|
+
defineSlots();
|
|
20
|
+
const appConfig = useAppConfig();
|
|
21
|
+
const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.buttonGroup || {} }));
|
|
53
22
|
provide(buttonGroupInjectionKey, computed(() => ({
|
|
54
23
|
orientation: props.orientation,
|
|
55
24
|
noSplit: Boolean(props.noSplit),
|
|
56
25
|
size: props.size
|
|
57
|
-
})))
|
|
26
|
+
})));
|
|
58
27
|
</script>
|
|
59
28
|
|
|
60
29
|
<template>
|
|
61
|
-
<Primitive
|
|
30
|
+
<Primitive
|
|
31
|
+
:as="as"
|
|
32
|
+
class="group/items is-button-group"
|
|
33
|
+
:class="b24ui({ orientation, class: props.class })"
|
|
34
|
+
>
|
|
62
35
|
<slot />
|
|
63
36
|
</Primitive>
|
|
64
37
|
</template>
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
2
|
+
import theme from '#build/b24ui/button-group';
|
|
3
|
+
import type { ComponentConfig } from '../types/utils';
|
|
4
|
+
type ButtonGroup = ComponentConfig<typeof theme, AppConfig, 'buttonGroup'>;
|
|
5
|
+
export interface ButtonGroupProps {
|
|
6
|
+
/**
|
|
7
|
+
* The element or component this component should render as.
|
|
8
|
+
* @defaultValue 'div'
|
|
9
|
+
*/
|
|
10
|
+
as?: any;
|
|
11
|
+
/**
|
|
12
|
+
* @defaultValue 'md'
|
|
13
|
+
*/
|
|
14
|
+
size?: ButtonGroup['variants']['size'];
|
|
15
|
+
/**
|
|
16
|
+
* The orientation the buttons are laid out.
|
|
17
|
+
* @defaultValue 'horizontal'
|
|
18
|
+
*/
|
|
19
|
+
orientation?: ButtonGroup['variants']['orientation'];
|
|
20
|
+
/**
|
|
21
|
+
* Disable show split
|
|
22
|
+
* @defaultValue false
|
|
23
|
+
*/
|
|
24
|
+
noSplit?: boolean;
|
|
25
|
+
class?: any;
|
|
26
|
+
b24ui?: ButtonGroup['slots'];
|
|
27
|
+
}
|
|
28
|
+
export interface ButtonGroupSlots {
|
|
29
|
+
default(props?: {}): any;
|
|
30
|
+
}
|
|
31
|
+
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<ButtonGroupProps>, {
|
|
32
|
+
orientation: string;
|
|
33
|
+
noSplit: boolean;
|
|
34
|
+
}>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<ButtonGroupProps>, {
|
|
35
|
+
orientation: string;
|
|
36
|
+
noSplit: boolean;
|
|
37
|
+
}>>> & Readonly<{}>, {
|
|
38
|
+
orientation: ButtonGroup["variants"]["orientation"];
|
|
39
|
+
noSplit: boolean;
|
|
40
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<ButtonGroupSlots> & ButtonGroupSlots>;
|
|
41
|
+
export default _default;
|
|
42
|
+
type __VLS_WithDefaults<P, D> = {
|
|
43
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
|
|
44
|
+
default: D[K];
|
|
45
|
+
}> : P[K];
|
|
46
|
+
};
|
|
47
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
48
|
+
type __VLS_TypePropsToOption<T> = {
|
|
49
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
50
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
51
|
+
} : {
|
|
52
|
+
type: import('vue').PropType<T[K]>;
|
|
53
|
+
required: true;
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
57
|
+
new (): {
|
|
58
|
+
$slots: S;
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
type __VLS_PrettifyLocal<T> = {
|
|
62
|
+
[K in keyof T]: T[K];
|
|
63
|
+
} & {};
|