@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,143 +1,56 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import
|
|
3
|
-
import type { AppConfig } from '@nuxt/schema'
|
|
4
|
-
import _appConfig from '#build/app.config'
|
|
5
|
-
import theme from '#build/b24ui/textarea'
|
|
6
|
-
import type { UseComponentIconsProps } from '../composables/useComponentIcons'
|
|
7
|
-
import { tv } from '../utils/tv'
|
|
8
|
-
import type { AvatarProps } from '../types'
|
|
9
|
-
import type { PartialString } from '../types/utils'
|
|
10
|
-
|
|
11
|
-
const appConfigTextarea = _appConfig as AppConfig & { b24ui: { textarea: Partial<typeof theme> } }
|
|
12
|
-
|
|
13
|
-
const textarea = tv({ extend: tv(theme), ...(appConfigTextarea.b24ui?.textarea || {}) })
|
|
14
|
-
|
|
15
|
-
type TextareaVariants = VariantProps<typeof textarea>
|
|
16
|
-
|
|
17
|
-
export interface TextareaProps extends UseComponentIconsProps {
|
|
18
|
-
/**
|
|
19
|
-
* The element or component this component should render as.
|
|
20
|
-
* @defaultValue 'div'
|
|
21
|
-
*/
|
|
22
|
-
as?: any
|
|
23
|
-
id?: string
|
|
24
|
-
name?: string
|
|
25
|
-
/**
|
|
26
|
-
* The placeholder text when the textarea is empty
|
|
27
|
-
*/
|
|
28
|
-
placeholder?: string
|
|
29
|
-
/**
|
|
30
|
-
* @defaultValue 'primary'
|
|
31
|
-
*/
|
|
32
|
-
color?: TextareaVariants['color']
|
|
33
|
-
/**
|
|
34
|
-
* Removes padding from input
|
|
35
|
-
* @defaultValue false
|
|
36
|
-
*/
|
|
37
|
-
noPadding?: boolean
|
|
38
|
-
/**
|
|
39
|
-
* Removes all borders (rings)
|
|
40
|
-
* @defaultValue false
|
|
41
|
-
*/
|
|
42
|
-
noBorder?: boolean
|
|
43
|
-
/**
|
|
44
|
-
* Removes all borders (rings) except the bottom one
|
|
45
|
-
* @defaultValue false
|
|
46
|
-
*/
|
|
47
|
-
underline?: boolean
|
|
48
|
-
/**
|
|
49
|
-
* Rounds the corners of the button
|
|
50
|
-
* @defaultValue false
|
|
51
|
-
*/
|
|
52
|
-
rounded?: boolean
|
|
53
|
-
/**
|
|
54
|
-
* @defaultValue false
|
|
55
|
-
*/
|
|
56
|
-
required?: boolean
|
|
57
|
-
/**
|
|
58
|
-
* @defaultValue false
|
|
59
|
-
*/
|
|
60
|
-
autofocus?: boolean
|
|
61
|
-
/**
|
|
62
|
-
* @defaultValue 0
|
|
63
|
-
*/
|
|
64
|
-
autofocusDelay?: number
|
|
65
|
-
/**
|
|
66
|
-
* @defaultValue false
|
|
67
|
-
*/
|
|
68
|
-
autoresize?: boolean
|
|
69
|
-
/**
|
|
70
|
-
* @defaultValue 0
|
|
71
|
-
*/
|
|
72
|
-
autoresizeDelay?: number
|
|
73
|
-
/**
|
|
74
|
-
* @defaultValue false
|
|
75
|
-
*/
|
|
76
|
-
disabled?: boolean
|
|
77
|
-
/**
|
|
78
|
-
* @defaultValue 3
|
|
79
|
-
*/
|
|
80
|
-
rows?: number
|
|
81
|
-
/**
|
|
82
|
-
* @defaultValue 5
|
|
83
|
-
*/
|
|
84
|
-
maxrows?: number
|
|
85
|
-
tag?: string
|
|
86
|
-
/**
|
|
87
|
-
* @defaultValue 'primary'
|
|
88
|
-
*/
|
|
89
|
-
tagColor?: TextareaVariants['tagColor']
|
|
90
|
-
/**
|
|
91
|
-
* Highlight the ring color like a focus state
|
|
92
|
-
* @defaultValue false
|
|
93
|
-
*/
|
|
94
|
-
highlight?: boolean
|
|
95
|
-
class?: any
|
|
96
|
-
b24ui?: PartialString<typeof textarea.slots>
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
export interface TextareaEmits {
|
|
100
|
-
(e: 'update:modelValue', payload: string | number): void
|
|
101
|
-
(e: 'blur', event: FocusEvent): void
|
|
102
|
-
(e: 'change', event: Event): void
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
export interface TextareaSlots {
|
|
106
|
-
leading(props?: {}): any
|
|
107
|
-
default(props?: {}): any
|
|
108
|
-
trailing(props?: {}): any
|
|
109
|
-
}
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/b24ui/textarea";
|
|
110
3
|
</script>
|
|
111
4
|
|
|
112
|
-
<script setup
|
|
113
|
-
import { ref, computed, onMounted, nextTick, watch } from
|
|
114
|
-
import { Primitive } from
|
|
115
|
-
import {
|
|
116
|
-
import {
|
|
117
|
-
import {
|
|
118
|
-
import
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
const props =
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
5
|
+
<script setup>
|
|
6
|
+
import { ref, computed, onMounted, nextTick, watch } from "vue";
|
|
7
|
+
import { Primitive } from "reka-ui";
|
|
8
|
+
import { useAppConfig } from "#imports";
|
|
9
|
+
import { useComponentIcons } from "../composables/useComponentIcons";
|
|
10
|
+
import { useFormField } from "../composables/useFormField";
|
|
11
|
+
import { looseToNumber } from "../utils";
|
|
12
|
+
import { tv } from "../utils/tv";
|
|
13
|
+
import B24Avatar from "./Avatar.vue";
|
|
14
|
+
defineOptions({ inheritAttrs: false });
|
|
15
|
+
const props = defineProps({
|
|
16
|
+
as: { type: null, required: false },
|
|
17
|
+
id: { type: String, required: false },
|
|
18
|
+
name: { type: String, required: false },
|
|
19
|
+
placeholder: { type: String, required: false },
|
|
20
|
+
color: { type: null, required: false },
|
|
21
|
+
noPadding: { type: Boolean, required: false },
|
|
22
|
+
noBorder: { type: Boolean, required: false },
|
|
23
|
+
underline: { type: Boolean, required: false },
|
|
24
|
+
rounded: { type: Boolean, required: false },
|
|
25
|
+
required: { type: Boolean, required: false },
|
|
26
|
+
autofocus: { type: Boolean, required: false },
|
|
27
|
+
autofocusDelay: { type: Number, required: false, default: 0 },
|
|
28
|
+
autoresize: { type: Boolean, required: false },
|
|
29
|
+
autoresizeDelay: { type: Number, required: false, default: 0 },
|
|
30
|
+
disabled: { type: Boolean, required: false },
|
|
31
|
+
rows: { type: Number, required: false, default: 3 },
|
|
32
|
+
maxrows: { type: Number, required: false, default: 5 },
|
|
33
|
+
tag: { type: String, required: false },
|
|
34
|
+
tagColor: { type: null, required: false },
|
|
35
|
+
highlight: { type: Boolean, required: false },
|
|
36
|
+
class: { type: null, required: false },
|
|
37
|
+
b24ui: { type: null, required: false },
|
|
38
|
+
icon: { type: [Function, Object], required: false },
|
|
39
|
+
avatar: { type: Object, required: false },
|
|
40
|
+
loading: { type: Boolean, required: false },
|
|
41
|
+
trailing: { type: Boolean, required: false },
|
|
42
|
+
trailingIcon: { type: [Function, Object], required: false }
|
|
43
|
+
});
|
|
44
|
+
const slots = defineSlots();
|
|
45
|
+
const emits = defineEmits(["update:modelValue", "blur", "change"]);
|
|
46
|
+
const [modelValue, modelModifiers] = defineModel({ type: [String, Number, null] });
|
|
47
|
+
const appConfig = useAppConfig();
|
|
48
|
+
const { emitFormFocus, emitFormBlur, emitFormInput, emitFormChange, color, id, name, highlight, disabled, ariaAttrs } = useFormField(props, { deferInputValidation: true });
|
|
49
|
+
const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(props);
|
|
136
50
|
const isTag = computed(() => {
|
|
137
|
-
return props.tag
|
|
138
|
-
})
|
|
139
|
-
|
|
140
|
-
const b24ui = computed(() => textarea({
|
|
51
|
+
return props.tag;
|
|
52
|
+
});
|
|
53
|
+
const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.textarea || {} })({
|
|
141
54
|
color: color.value,
|
|
142
55
|
loading: props.loading,
|
|
143
56
|
highlight: highlight.value,
|
|
@@ -149,102 +62,79 @@ const b24ui = computed(() => textarea({
|
|
|
149
62
|
underline: Boolean(props.underline),
|
|
150
63
|
leading: Boolean(isLeading.value || !!props.avatar || !!slots.leading),
|
|
151
64
|
trailing: Boolean(isTrailing.value || !!slots.trailing)
|
|
152
|
-
}))
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
// Custom function to handle the v-model properties
|
|
157
|
-
function updateInput(value: string | null) {
|
|
65
|
+
}));
|
|
66
|
+
const textareaRef = ref(null);
|
|
67
|
+
function updateInput(value) {
|
|
158
68
|
if (modelModifiers.trim) {
|
|
159
|
-
value = value?.trim() ?? null
|
|
69
|
+
value = value?.trim() ?? null;
|
|
160
70
|
}
|
|
161
|
-
|
|
162
71
|
if (modelModifiers.number) {
|
|
163
|
-
value = looseToNumber(value)
|
|
72
|
+
value = looseToNumber(value);
|
|
164
73
|
}
|
|
165
|
-
|
|
166
74
|
if (modelModifiers.nullify) {
|
|
167
|
-
value ||= null
|
|
75
|
+
value ||= null;
|
|
168
76
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
emitFormInput()
|
|
77
|
+
modelValue.value = value;
|
|
78
|
+
emitFormInput();
|
|
172
79
|
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
autoResize()
|
|
176
|
-
|
|
80
|
+
function onInput(event) {
|
|
81
|
+
autoResize();
|
|
177
82
|
if (!modelModifiers.lazy) {
|
|
178
|
-
updateInput(
|
|
83
|
+
updateInput(event.target.value);
|
|
179
84
|
}
|
|
180
85
|
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
const value = (event.target as HTMLInputElement).value
|
|
184
|
-
|
|
86
|
+
function onChange(event) {
|
|
87
|
+
const value = event.target.value;
|
|
185
88
|
if (modelModifiers.lazy) {
|
|
186
|
-
updateInput(value)
|
|
89
|
+
updateInput(value);
|
|
187
90
|
}
|
|
188
|
-
|
|
189
|
-
// Update trimmed textarea so that it has same behavior as native textarea https://github.com/vuejs/core/blob/5ea8a8a4fab4e19a71e123e4d27d051f5e927172/packages/runtime-dom/src/directives/vModel.ts#L63
|
|
190
91
|
if (modelModifiers.trim) {
|
|
191
|
-
|
|
92
|
+
event.target.value = value.trim();
|
|
192
93
|
}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
emits('change', event)
|
|
94
|
+
emitFormChange();
|
|
95
|
+
emits("change", event);
|
|
196
96
|
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
emits('blur', event)
|
|
97
|
+
function onBlur(event) {
|
|
98
|
+
emitFormBlur();
|
|
99
|
+
emits("blur", event);
|
|
201
100
|
}
|
|
202
|
-
|
|
203
101
|
function autoFocus() {
|
|
204
102
|
if (props.autofocus) {
|
|
205
|
-
textareaRef.value?.focus()
|
|
103
|
+
textareaRef.value?.focus();
|
|
206
104
|
}
|
|
207
105
|
}
|
|
208
|
-
|
|
209
106
|
function autoResize() {
|
|
210
107
|
if (props.autoresize && textareaRef.value) {
|
|
211
|
-
textareaRef.value.rows = props.rows
|
|
212
|
-
const overflow = textareaRef.value.style.overflow
|
|
213
|
-
textareaRef.value.style.overflow =
|
|
214
|
-
|
|
215
|
-
const
|
|
216
|
-
const
|
|
217
|
-
const
|
|
218
|
-
const
|
|
219
|
-
const
|
|
220
|
-
const
|
|
221
|
-
const newRows = (scrollHeight - padding) / lineHeight
|
|
222
|
-
|
|
108
|
+
textareaRef.value.rows = props.rows;
|
|
109
|
+
const overflow = textareaRef.value.style.overflow;
|
|
110
|
+
textareaRef.value.style.overflow = "hidden";
|
|
111
|
+
const styles = window.getComputedStyle(textareaRef.value);
|
|
112
|
+
const paddingTop = Number.parseInt(styles.paddingTop);
|
|
113
|
+
const paddingBottom = Number.parseInt(styles.paddingBottom);
|
|
114
|
+
const padding = paddingTop + paddingBottom;
|
|
115
|
+
const lineHeight = Number.parseInt(styles.lineHeight);
|
|
116
|
+
const { scrollHeight } = textareaRef.value;
|
|
117
|
+
const newRows = (scrollHeight - padding) / lineHeight;
|
|
223
118
|
if (newRows > props.rows) {
|
|
224
|
-
textareaRef.value.rows = props.maxrows ? Math.min(newRows, props.maxrows) : newRows
|
|
119
|
+
textareaRef.value.rows = props.maxrows ? Math.min(newRows, props.maxrows) : newRows;
|
|
225
120
|
}
|
|
226
|
-
|
|
227
|
-
textareaRef.value.style.overflow = overflow
|
|
121
|
+
textareaRef.value.style.overflow = overflow;
|
|
228
122
|
}
|
|
229
123
|
}
|
|
230
|
-
|
|
231
124
|
watch(modelValue, () => {
|
|
232
|
-
nextTick(autoResize)
|
|
233
|
-
})
|
|
234
|
-
|
|
125
|
+
nextTick(autoResize);
|
|
126
|
+
});
|
|
235
127
|
onMounted(() => {
|
|
236
128
|
setTimeout(() => {
|
|
237
|
-
autoFocus()
|
|
238
|
-
}, props.autofocusDelay)
|
|
239
|
-
|
|
129
|
+
autoFocus();
|
|
130
|
+
}, props.autofocusDelay);
|
|
240
131
|
setTimeout(() => {
|
|
241
|
-
autoResize()
|
|
242
|
-
}, props.autoresizeDelay)
|
|
243
|
-
})
|
|
244
|
-
|
|
132
|
+
autoResize();
|
|
133
|
+
}, props.autoresizeDelay);
|
|
134
|
+
});
|
|
245
135
|
defineExpose({
|
|
246
136
|
textareaRef
|
|
247
|
-
})
|
|
137
|
+
});
|
|
248
138
|
</script>
|
|
249
139
|
|
|
250
140
|
<template>
|
|
@@ -281,7 +171,7 @@ defineExpose({
|
|
|
281
171
|
/>
|
|
282
172
|
<B24Avatar
|
|
283
173
|
v-else-if="!!avatar"
|
|
284
|
-
:size="
|
|
174
|
+
:size="props.b24ui?.leadingAvatarSize || b24ui.leadingAvatarSize()"
|
|
285
175
|
v-bind="avatar"
|
|
286
176
|
:class="b24ui.leadingAvatar({ class: props.b24ui?.leadingAvatar })"
|
|
287
177
|
/>
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
2
|
+
import theme from '#build/b24ui/textarea';
|
|
3
|
+
import type { UseComponentIconsProps } from '../composables/useComponentIcons';
|
|
4
|
+
import type { ComponentConfig } from '../types/utils';
|
|
5
|
+
type Textarea = ComponentConfig<typeof theme, AppConfig, 'textarea'>;
|
|
6
|
+
export interface TextareaProps extends UseComponentIconsProps {
|
|
7
|
+
/**
|
|
8
|
+
* The element or component this component should render as.
|
|
9
|
+
* @defaultValue 'div'
|
|
10
|
+
*/
|
|
11
|
+
as?: any;
|
|
12
|
+
id?: string;
|
|
13
|
+
name?: string;
|
|
14
|
+
/**
|
|
15
|
+
* The placeholder text when the textarea is empty
|
|
16
|
+
*/
|
|
17
|
+
placeholder?: string;
|
|
18
|
+
/**
|
|
19
|
+
* @defaultValue 'primary'
|
|
20
|
+
*/
|
|
21
|
+
color?: Textarea['variants']['color'];
|
|
22
|
+
/**
|
|
23
|
+
* Removes padding from input
|
|
24
|
+
* @defaultValue false
|
|
25
|
+
*/
|
|
26
|
+
noPadding?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Removes all borders (rings)
|
|
29
|
+
* @defaultValue false
|
|
30
|
+
*/
|
|
31
|
+
noBorder?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Removes all borders (rings) except the bottom one
|
|
34
|
+
* @defaultValue false
|
|
35
|
+
*/
|
|
36
|
+
underline?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Rounds the corners of the button
|
|
39
|
+
* @defaultValue false
|
|
40
|
+
*/
|
|
41
|
+
rounded?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* @defaultValue false
|
|
44
|
+
*/
|
|
45
|
+
required?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* @defaultValue false
|
|
48
|
+
*/
|
|
49
|
+
autofocus?: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* @defaultValue 0
|
|
52
|
+
*/
|
|
53
|
+
autofocusDelay?: number;
|
|
54
|
+
/**
|
|
55
|
+
* @defaultValue false
|
|
56
|
+
*/
|
|
57
|
+
autoresize?: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* @defaultValue 0
|
|
60
|
+
*/
|
|
61
|
+
autoresizeDelay?: number;
|
|
62
|
+
/**
|
|
63
|
+
* @defaultValue false
|
|
64
|
+
*/
|
|
65
|
+
disabled?: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* @defaultValue 3
|
|
68
|
+
*/
|
|
69
|
+
rows?: number;
|
|
70
|
+
/**
|
|
71
|
+
* @defaultValue 5
|
|
72
|
+
*/
|
|
73
|
+
maxrows?: number;
|
|
74
|
+
tag?: string;
|
|
75
|
+
/**
|
|
76
|
+
* @defaultValue 'primary'
|
|
77
|
+
*/
|
|
78
|
+
tagColor?: Textarea['variants']['tagColor'];
|
|
79
|
+
/**
|
|
80
|
+
* Highlight the ring color like a focus state
|
|
81
|
+
* @defaultValue false
|
|
82
|
+
*/
|
|
83
|
+
highlight?: boolean;
|
|
84
|
+
class?: any;
|
|
85
|
+
b24ui?: Textarea['slots'];
|
|
86
|
+
}
|
|
87
|
+
export interface TextareaEmits {
|
|
88
|
+
(e: 'update:modelValue', payload: string | number): void;
|
|
89
|
+
(e: 'blur', event: FocusEvent): void;
|
|
90
|
+
(e: 'change', event: Event): void;
|
|
91
|
+
}
|
|
92
|
+
export interface TextareaSlots {
|
|
93
|
+
leading(props?: {}): any;
|
|
94
|
+
default(props?: {}): any;
|
|
95
|
+
trailing(props?: {}): any;
|
|
96
|
+
}
|
|
97
|
+
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<{
|
|
98
|
+
modelValue?: string | number | null;
|
|
99
|
+
} & TextareaProps>, {
|
|
100
|
+
rows: number;
|
|
101
|
+
maxrows: number;
|
|
102
|
+
autofocusDelay: number;
|
|
103
|
+
autoresizeDelay: number;
|
|
104
|
+
}>>, {
|
|
105
|
+
textareaRef: import("vue").Ref<HTMLTextAreaElement | null, HTMLTextAreaElement | null>;
|
|
106
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<{
|
|
107
|
+
modelValue?: string | number | null;
|
|
108
|
+
} & TextareaProps>, {
|
|
109
|
+
rows: number;
|
|
110
|
+
maxrows: number;
|
|
111
|
+
autofocusDelay: number;
|
|
112
|
+
autoresizeDelay: number;
|
|
113
|
+
}>>> & Readonly<{}>, {
|
|
114
|
+
autofocusDelay: number;
|
|
115
|
+
autoresizeDelay: number;
|
|
116
|
+
rows: number;
|
|
117
|
+
maxrows: number;
|
|
118
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<TextareaSlots> & TextareaSlots>;
|
|
119
|
+
export default _default;
|
|
120
|
+
type __VLS_WithDefaults<P, D> = {
|
|
121
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
|
|
122
|
+
default: D[K];
|
|
123
|
+
}> : P[K];
|
|
124
|
+
};
|
|
125
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
126
|
+
type __VLS_TypePropsToOption<T> = {
|
|
127
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
128
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
129
|
+
} : {
|
|
130
|
+
type: import('vue').PropType<T[K]>;
|
|
131
|
+
required: true;
|
|
132
|
+
};
|
|
133
|
+
};
|
|
134
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
135
|
+
new (): {
|
|
136
|
+
$slots: S;
|
|
137
|
+
};
|
|
138
|
+
};
|
|
139
|
+
type __VLS_PrettifyLocal<T> = {
|
|
140
|
+
[K in keyof T]: T[K];
|
|
141
|
+
} & {};
|
|
@@ -1,117 +1,58 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import
|
|
3
|
-
import type { ToastRootProps, ToastRootEmits } from 'reka-ui'
|
|
4
|
-
import type { AppConfig } from '@nuxt/schema'
|
|
5
|
-
import _appConfig from '#build/app.config'
|
|
6
|
-
import theme from '#build/b24ui/toast'
|
|
7
|
-
import { tv } from '../utils/tv'
|
|
8
|
-
import type { AvatarProps, ButtonProps, IconComponent } from '../types'
|
|
9
|
-
import type { StringOrVNode } from '../types/utils'
|
|
10
|
-
|
|
11
|
-
const appConfigToast = _appConfig as AppConfig & { b24ui: { toast: Partial<typeof theme> } }
|
|
12
|
-
|
|
13
|
-
const toast = tv({ extend: tv(theme), ...(appConfigToast.b24ui?.toast || {}) })
|
|
14
|
-
|
|
15
|
-
type ToastVariants = VariantProps<typeof toast>
|
|
16
|
-
|
|
17
|
-
export interface ToastProps extends Pick<ToastRootProps, 'defaultOpen' | 'open' | 'type' | 'duration'> {
|
|
18
|
-
/**
|
|
19
|
-
* The element or component this component should render as.
|
|
20
|
-
* @defaultValue 'li'
|
|
21
|
-
*/
|
|
22
|
-
as?: any
|
|
23
|
-
title?: StringOrVNode
|
|
24
|
-
description?: StringOrVNode
|
|
25
|
-
/**
|
|
26
|
-
* @IconComponent
|
|
27
|
-
*/
|
|
28
|
-
icon?: IconComponent
|
|
29
|
-
avatar?: AvatarProps
|
|
30
|
-
/**
|
|
31
|
-
* @defaultValue 'default'
|
|
32
|
-
*/
|
|
33
|
-
color?: ToastVariants['color']
|
|
34
|
-
/**
|
|
35
|
-
* The orientation between the content and the actions
|
|
36
|
-
* @defaultValue 'vertical'
|
|
37
|
-
*/
|
|
38
|
-
orientation?: ToastVariants['orientation']
|
|
39
|
-
/**
|
|
40
|
-
* Display a list of actions:
|
|
41
|
-
* - under the title and description when orientation is `vertical`
|
|
42
|
-
* - next to the close button when orientation is `horizontal`
|
|
43
|
-
* `{ size: 'xs' }`{lang="ts"}
|
|
44
|
-
*/
|
|
45
|
-
actions?: ButtonProps[]
|
|
46
|
-
/**
|
|
47
|
-
* Display a close button to dismiss the toast.
|
|
48
|
-
* `{ size: 'md', color: 'neutral', variant: 'link' }`{lang="ts"}
|
|
49
|
-
* @defaultValue true
|
|
50
|
-
*/
|
|
51
|
-
close?: boolean | Partial<ButtonProps>
|
|
52
|
-
/**
|
|
53
|
-
* The icon displayed in the close button.
|
|
54
|
-
* @defaultValue icons.close
|
|
55
|
-
* @IconComponent
|
|
56
|
-
*/
|
|
57
|
-
closeIcon?: IconComponent
|
|
58
|
-
class?: any
|
|
59
|
-
b24ui?: Partial<typeof toast.slots>
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export interface ToastEmits extends ToastRootEmits {}
|
|
63
|
-
|
|
64
|
-
export interface ToastSlots {
|
|
65
|
-
leading(props?: {}): any
|
|
66
|
-
title(props?: {}): any
|
|
67
|
-
description(props?: {}): any
|
|
68
|
-
actions(props?: {}): any
|
|
69
|
-
close(props: { b24ui: ReturnType<typeof toast> }): any
|
|
70
|
-
}
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/b24ui/toast";
|
|
71
3
|
</script>
|
|
72
4
|
|
|
73
|
-
<script setup
|
|
74
|
-
import { ref, computed, onMounted } from
|
|
75
|
-
import { ToastRoot, ToastTitle, ToastDescription, ToastAction, ToastClose, useForwardPropsEmits } from
|
|
76
|
-
import { reactivePick } from
|
|
77
|
-
import {
|
|
78
|
-
import
|
|
79
|
-
import
|
|
80
|
-
import
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
5
|
+
<script setup>
|
|
6
|
+
import { ref, computed, onMounted } from "vue";
|
|
7
|
+
import { ToastRoot, ToastTitle, ToastDescription, ToastAction, ToastClose, useForwardPropsEmits } from "reka-ui";
|
|
8
|
+
import { reactivePick } from "@vueuse/core";
|
|
9
|
+
import { useAppConfig } from "#imports";
|
|
10
|
+
import { useLocale } from "../composables/useLocale";
|
|
11
|
+
import { tv } from "../utils/tv";
|
|
12
|
+
import icons from "../dictionary/icons";
|
|
13
|
+
import B24Avatar from "./Avatar.vue";
|
|
14
|
+
import B24Button from "./Button.vue";
|
|
15
|
+
const props = defineProps({
|
|
16
|
+
as: { type: null, required: false },
|
|
17
|
+
title: { type: [String, Object, Function], required: false },
|
|
18
|
+
description: { type: [String, Object, Function], required: false },
|
|
19
|
+
icon: { type: [Function, Object], required: false },
|
|
20
|
+
avatar: { type: Object, required: false },
|
|
21
|
+
color: { type: null, required: false },
|
|
22
|
+
orientation: { type: null, required: false, default: "vertical" },
|
|
23
|
+
actions: { type: Array, required: false },
|
|
24
|
+
close: { type: [Boolean, Object], required: false, default: true },
|
|
25
|
+
closeIcon: { type: [Function, Object], required: false },
|
|
26
|
+
class: { type: null, required: false },
|
|
27
|
+
b24ui: { type: null, required: false },
|
|
28
|
+
defaultOpen: { type: Boolean, required: false },
|
|
29
|
+
open: { type: Boolean, required: false },
|
|
30
|
+
type: { type: String, required: false },
|
|
31
|
+
duration: { type: Number, required: false }
|
|
32
|
+
});
|
|
33
|
+
const emits = defineEmits(["escapeKeyDown", "pause", "resume", "swipeStart", "swipeMove", "swipeCancel", "swipeEnd", "update:open"]);
|
|
34
|
+
const slots = defineSlots();
|
|
35
|
+
const { t } = useLocale();
|
|
36
|
+
const appConfig = useAppConfig();
|
|
37
|
+
const rootProps = useForwardPropsEmits(reactivePick(props, "as", "defaultOpen", "open", "duration", "type"), emits);
|
|
38
|
+
const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.toast || {} })({
|
|
94
39
|
color: props.color,
|
|
95
40
|
orientation: props.orientation,
|
|
96
41
|
title: !!props.title || !!slots.title
|
|
97
|
-
}))
|
|
98
|
-
|
|
99
|
-
const
|
|
100
|
-
const height = ref(0)
|
|
101
|
-
|
|
42
|
+
}));
|
|
43
|
+
const el = ref();
|
|
44
|
+
const height = ref(0);
|
|
102
45
|
onMounted(() => {
|
|
103
46
|
if (!el.value) {
|
|
104
|
-
return
|
|
47
|
+
return;
|
|
105
48
|
}
|
|
106
|
-
|
|
107
49
|
setTimeout(() => {
|
|
108
|
-
height.value = el.value.$el.getBoundingClientRect()?.height
|
|
109
|
-
}, 0)
|
|
110
|
-
})
|
|
111
|
-
|
|
50
|
+
height.value = el.value.$el.getBoundingClientRect()?.height;
|
|
51
|
+
}, 0);
|
|
52
|
+
});
|
|
112
53
|
defineExpose({
|
|
113
54
|
height
|
|
114
|
-
})
|
|
55
|
+
});
|
|
115
56
|
</script>
|
|
116
57
|
|
|
117
58
|
<template>
|
|
@@ -129,7 +70,7 @@ defineExpose({
|
|
|
129
70
|
v-if="icon"
|
|
130
71
|
:class="b24ui.icon({ class: props.b24ui?.icon })"
|
|
131
72
|
/>
|
|
132
|
-
<B24Avatar v-else-if="avatar" :size="
|
|
73
|
+
<B24Avatar v-else-if="avatar" :size="props.b24ui?.avatarSize || b24ui.avatarSize()" v-bind="avatar" :class="b24ui.avatar({ class: props.b24ui?.avatar })" />
|
|
133
74
|
</slot>
|
|
134
75
|
|
|
135
76
|
<div :class="b24ui.wrapper({ class: props.b24ui?.wrapper })">
|
|
@@ -161,7 +102,7 @@ defineExpose({
|
|
|
161
102
|
</div>
|
|
162
103
|
</div>
|
|
163
104
|
|
|
164
|
-
<div v-if="
|
|
105
|
+
<div v-if="orientation === 'horizontal' && actions?.length || close !== null" :class="b24ui.actions({ class: props.b24ui?.actions, orientation: 'horizontal' })">
|
|
165
106
|
<template v-if="orientation === 'horizontal' && actions?.length">
|
|
166
107
|
<slot name="actions">
|
|
167
108
|
<ToastAction v-for="(action, index) in actions" :key="index" :alt-text="action.label || 'Action'" as-child @click.stop>
|
|
@@ -178,7 +119,7 @@ defineExpose({
|
|
|
178
119
|
size="xs"
|
|
179
120
|
color="link"
|
|
180
121
|
:aria-label="t('toast.close')"
|
|
181
|
-
v-bind="
|
|
122
|
+
v-bind="typeof close === 'object' ? close : {}"
|
|
182
123
|
:class="b24ui.close({ class: props.b24ui?.close })"
|
|
183
124
|
@click.stop
|
|
184
125
|
/>
|