@nuxt/ui 4.0.1 → 4.1.0
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/ui/calendar.ts +221 -9
- package/.nuxt/ui/chat-message.ts +10 -3
- package/.nuxt/ui/command-palette.ts +12 -2
- package/.nuxt/ui/context-menu.ts +3 -1
- package/.nuxt/ui/dropdown-menu.ts +3 -1
- package/.nuxt/ui/empty.ts +83 -0
- package/.nuxt/ui/index.ts +1 -0
- package/.nuxt/ui/input-menu.ts +12 -2
- package/.nuxt/ui/input-number.ts +25 -14
- package/.nuxt/ui/kbd.ts +1 -1
- package/.nuxt/ui/prose/code-tree.ts +1 -1
- package/.nuxt/ui/prose/img.ts +2 -1
- package/.nuxt/ui/select-menu.ts +12 -2
- package/.nuxt/ui/select.ts +4 -2
- package/.nuxt/ui/table.ts +8 -2
- package/.nuxt/ui/tree.ts +25 -11
- package/cli/templates.mjs +14 -2
- package/dist/module.d.mts +15 -0
- package/dist/module.json +2 -2
- package/dist/module.mjs +5 -2
- package/dist/runtime/components/Accordion.d.vue.ts +7 -1
- package/dist/runtime/components/Accordion.vue +4 -4
- package/dist/runtime/components/Accordion.vue.d.ts +7 -1
- package/dist/runtime/components/Alert.d.vue.ts +4 -4
- package/dist/runtime/components/Alert.vue +1 -1
- package/dist/runtime/components/Alert.vue.d.ts +4 -4
- package/dist/runtime/components/AuthForm.d.vue.ts +3 -1
- package/dist/runtime/components/AuthForm.vue +1 -1
- package/dist/runtime/components/AuthForm.vue.d.ts +3 -1
- package/dist/runtime/components/Avatar.d.vue.ts +5 -4
- package/dist/runtime/components/Avatar.vue +10 -3
- package/dist/runtime/components/Avatar.vue.d.ts +5 -4
- package/dist/runtime/components/Badge.d.vue.ts +9 -3
- package/dist/runtime/components/Badge.vue +3 -3
- package/dist/runtime/components/Badge.vue.d.ts +9 -3
- package/dist/runtime/components/Banner.d.vue.ts +4 -2
- package/dist/runtime/components/Banner.vue +1 -1
- package/dist/runtime/components/Banner.vue.d.ts +4 -2
- package/dist/runtime/components/BlogPost.d.vue.ts +9 -3
- package/dist/runtime/components/BlogPost.vue +2 -2
- package/dist/runtime/components/BlogPost.vue.d.ts +9 -3
- package/dist/runtime/components/BlogPosts.d.vue.ts +22 -13
- package/dist/runtime/components/BlogPosts.vue +8 -2
- package/dist/runtime/components/BlogPosts.vue.d.ts +22 -13
- package/dist/runtime/components/Breadcrumb.d.vue.ts +19 -4
- package/dist/runtime/components/Breadcrumb.vue +8 -8
- package/dist/runtime/components/Breadcrumb.vue.d.ts +19 -4
- package/dist/runtime/components/Button.d.vue.ts +9 -3
- package/dist/runtime/components/Button.vue +3 -3
- package/dist/runtime/components/Button.vue.d.ts +9 -3
- package/dist/runtime/components/Calendar.d.vue.ts +4 -0
- package/dist/runtime/components/Calendar.vue +3 -1
- package/dist/runtime/components/Calendar.vue.d.ts +4 -0
- package/dist/runtime/components/ChangelogVersion.d.vue.ts +12 -4
- package/dist/runtime/components/ChangelogVersion.vue +3 -3
- package/dist/runtime/components/ChangelogVersion.vue.d.ts +12 -4
- package/dist/runtime/components/ChangelogVersions.d.vue.ts +8 -36
- package/dist/runtime/components/ChangelogVersions.vue +2 -2
- package/dist/runtime/components/ChangelogVersions.vue.d.ts +8 -36
- package/dist/runtime/components/ChatMessage.d.vue.ts +1 -0
- package/dist/runtime/components/ChatMessage.vue +1 -1
- package/dist/runtime/components/ChatMessage.vue.d.ts +1 -0
- package/dist/runtime/components/ChatMessages.d.vue.ts +14 -15
- package/dist/runtime/components/ChatMessages.vue +24 -8
- package/dist/runtime/components/ChatMessages.vue.d.ts +14 -15
- package/dist/runtime/components/CommandPalette.d.vue.ts +43 -12
- package/dist/runtime/components/CommandPalette.vue +134 -68
- package/dist/runtime/components/CommandPalette.vue.d.ts +43 -12
- package/dist/runtime/components/ContextMenu.d.vue.ts +28 -6
- package/dist/runtime/components/ContextMenu.vue +2 -0
- package/dist/runtime/components/ContextMenu.vue.d.ts +28 -6
- package/dist/runtime/components/ContextMenuContent.d.vue.ts +2 -3
- package/dist/runtime/components/ContextMenuContent.vue +21 -11
- package/dist/runtime/components/ContextMenuContent.vue.d.ts +2 -3
- package/dist/runtime/components/DashboardNavbar.d.vue.ts +9 -3
- package/dist/runtime/components/DashboardNavbar.vue +3 -3
- package/dist/runtime/components/DashboardNavbar.vue.d.ts +9 -3
- package/dist/runtime/components/DashboardSearch.d.vue.ts +3 -1
- package/dist/runtime/components/DashboardSearch.vue +2 -2
- package/dist/runtime/components/DashboardSearch.vue.d.ts +3 -1
- package/dist/runtime/components/DashboardSearchButton.vue +2 -2
- package/dist/runtime/components/DashboardSidebar.d.vue.ts +5 -1
- package/dist/runtime/components/DashboardSidebar.vue +4 -4
- package/dist/runtime/components/DashboardSidebar.vue.d.ts +5 -1
- package/dist/runtime/components/Drawer.vue +2 -5
- package/dist/runtime/components/DropdownMenu.d.vue.ts +28 -6
- package/dist/runtime/components/DropdownMenu.vue +2 -0
- package/dist/runtime/components/DropdownMenu.vue.d.ts +28 -6
- package/dist/runtime/components/DropdownMenuContent.d.vue.ts +8 -5
- package/dist/runtime/components/DropdownMenuContent.vue +21 -11
- package/dist/runtime/components/DropdownMenuContent.vue.d.ts +8 -5
- package/dist/runtime/components/Empty.d.vue.ts +53 -0
- package/dist/runtime/components/Empty.vue +68 -0
- package/dist/runtime/components/Empty.vue.d.ts +53 -0
- package/dist/runtime/components/Error.d.vue.ts +0 -1
- package/dist/runtime/components/Error.vue +1 -1
- package/dist/runtime/components/Error.vue.d.ts +0 -1
- package/dist/runtime/components/FileUpload.d.vue.ts +6 -1
- package/dist/runtime/components/FileUpload.vue +8 -7
- package/dist/runtime/components/FileUpload.vue.d.ts +6 -1
- package/dist/runtime/components/FooterColumns.d.vue.ts +9 -2
- package/dist/runtime/components/FooterColumns.vue +2 -2
- package/dist/runtime/components/FooterColumns.vue.d.ts +9 -2
- package/dist/runtime/components/Header.d.vue.ts +4 -1
- package/dist/runtime/components/Header.vue +3 -3
- package/dist/runtime/components/Header.vue.d.ts +4 -1
- package/dist/runtime/components/Input.d.vue.ts +9 -3
- package/dist/runtime/components/Input.vue +3 -3
- package/dist/runtime/components/Input.vue.d.ts +9 -3
- package/dist/runtime/components/InputMenu.d.vue.ts +40 -10
- package/dist/runtime/components/InputMenu.vue +117 -65
- package/dist/runtime/components/InputMenu.vue.d.ts +40 -10
- package/dist/runtime/components/InputNumber.d.vue.ts +4 -2
- package/dist/runtime/components/InputNumber.vue +7 -5
- package/dist/runtime/components/InputNumber.vue.d.ts +4 -2
- package/dist/runtime/components/InputTags.d.vue.ts +10 -3
- package/dist/runtime/components/InputTags.vue +5 -5
- package/dist/runtime/components/InputTags.vue.d.ts +10 -3
- package/dist/runtime/components/Main.d.vue.ts +2 -4
- package/dist/runtime/components/Main.vue +1 -1
- package/dist/runtime/components/Main.vue.d.ts +2 -4
- package/dist/runtime/components/Modal.d.vue.ts +1 -4
- package/dist/runtime/components/Modal.vue +3 -6
- package/dist/runtime/components/Modal.vue.d.ts +1 -4
- package/dist/runtime/components/NavigationMenu.d.vue.ts +16 -4
- package/dist/runtime/components/NavigationMenu.vue +14 -7
- package/dist/runtime/components/NavigationMenu.vue.d.ts +16 -4
- package/dist/runtime/components/PageAnchors.d.vue.ts +9 -2
- package/dist/runtime/components/PageAnchors.vue +2 -2
- package/dist/runtime/components/PageAnchors.vue.d.ts +9 -2
- package/dist/runtime/components/PageCard.d.vue.ts +3 -1
- package/dist/runtime/components/PageCard.vue +1 -1
- package/dist/runtime/components/PageCard.vue.d.ts +3 -1
- package/dist/runtime/components/PageFeature.d.vue.ts +3 -1
- package/dist/runtime/components/PageFeature.vue +1 -1
- package/dist/runtime/components/PageFeature.vue.d.ts +3 -1
- package/dist/runtime/components/PageLinks.d.vue.ts +9 -2
- package/dist/runtime/components/PageLinks.vue +2 -2
- package/dist/runtime/components/PageLinks.vue.d.ts +9 -2
- package/dist/runtime/components/PageSection.d.vue.ts +3 -1
- package/dist/runtime/components/PageSection.vue +1 -1
- package/dist/runtime/components/PageSection.vue.d.ts +3 -1
- package/dist/runtime/components/Pagination.d.vue.ts +3 -1
- package/dist/runtime/components/Pagination.vue +1 -1
- package/dist/runtime/components/Pagination.vue.d.ts +3 -1
- package/dist/runtime/components/Popover.d.vue.ts +24 -23
- package/dist/runtime/components/Popover.vue +4 -4
- package/dist/runtime/components/Popover.vue.d.ts +24 -23
- package/dist/runtime/components/PricingPlan.d.vue.ts +9 -3
- package/dist/runtime/components/PricingPlan.vue +3 -3
- package/dist/runtime/components/PricingPlan.vue.d.ts +9 -3
- package/dist/runtime/components/PricingPlans.d.vue.ts +20 -13
- package/dist/runtime/components/PricingPlans.vue +7 -1
- package/dist/runtime/components/PricingPlans.vue.d.ts +20 -13
- package/dist/runtime/components/Select.d.vue.ts +20 -9
- package/dist/runtime/components/Select.vue +18 -9
- package/dist/runtime/components/Select.vue.d.ts +20 -9
- package/dist/runtime/components/SelectMenu.d.vue.ts +39 -11
- package/dist/runtime/components/SelectMenu.vue +114 -61
- package/dist/runtime/components/SelectMenu.vue.d.ts +39 -11
- package/dist/runtime/components/Separator.d.vue.ts +3 -1
- package/dist/runtime/components/Separator.vue +1 -1
- package/dist/runtime/components/Separator.vue.d.ts +3 -1
- package/dist/runtime/components/Slideover.d.vue.ts +1 -4
- package/dist/runtime/components/Slideover.vue +3 -6
- package/dist/runtime/components/Slideover.vue.d.ts +1 -4
- package/dist/runtime/components/Stepper.d.vue.ts +4 -1
- package/dist/runtime/components/Stepper.vue +1 -1
- package/dist/runtime/components/Stepper.vue.d.ts +4 -1
- package/dist/runtime/components/Table.d.vue.ts +21 -1
- package/dist/runtime/components/Table.vue +126 -60
- package/dist/runtime/components/Table.vue.d.ts +21 -1
- package/dist/runtime/components/Tabs.d.vue.ts +8 -3
- package/dist/runtime/components/Tabs.vue +3 -3
- package/dist/runtime/components/Tabs.vue.d.ts +8 -3
- package/dist/runtime/components/Textarea.d.vue.ts +9 -3
- package/dist/runtime/components/Textarea.vue +3 -3
- package/dist/runtime/components/Textarea.vue.d.ts +9 -3
- package/dist/runtime/components/Toast.d.vue.ts +4 -4
- package/dist/runtime/components/Toast.vue +1 -1
- package/dist/runtime/components/Toast.vue.d.ts +4 -4
- package/dist/runtime/components/Toaster.d.vue.ts +6 -0
- package/dist/runtime/components/Toaster.vue +6 -3
- package/dist/runtime/components/Toaster.vue.d.ts +6 -0
- package/dist/runtime/components/Tooltip.d.vue.ts +3 -1
- package/dist/runtime/components/Tooltip.vue +1 -1
- package/dist/runtime/components/Tooltip.vue.d.ts +3 -1
- package/dist/runtime/components/Tree.d.vue.ts +43 -5
- package/dist/runtime/components/Tree.vue +169 -81
- package/dist/runtime/components/Tree.vue.d.ts +43 -5
- package/dist/runtime/components/User.d.vue.ts +3 -1
- package/dist/runtime/components/User.vue +1 -1
- package/dist/runtime/components/User.vue.d.ts +3 -1
- package/dist/runtime/components/content/ContentNavigation.d.vue.ts +1 -0
- package/dist/runtime/components/content/ContentNavigation.vue +5 -5
- package/dist/runtime/components/content/ContentNavigation.vue.d.ts +1 -0
- package/dist/runtime/components/content/ContentSearch.d.vue.ts +3 -1
- package/dist/runtime/components/content/ContentSearch.vue +4 -2
- package/dist/runtime/components/content/ContentSearch.vue.d.ts +3 -1
- package/dist/runtime/components/content/ContentSearchButton.vue +2 -2
- package/dist/runtime/components/content/ContentSurround.d.vue.ts +1 -0
- package/dist/runtime/components/content/ContentSurround.vue +4 -4
- package/dist/runtime/components/content/ContentSurround.vue.d.ts +1 -0
- package/dist/runtime/components/content/ContentToc.d.vue.ts +2 -0
- package/dist/runtime/components/content/ContentToc.vue +2 -2
- package/dist/runtime/components/content/ContentToc.vue.d.ts +2 -0
- package/dist/runtime/components/prose/Accordion.d.vue.ts +6 -0
- package/dist/runtime/components/prose/Accordion.vue +3 -2
- package/dist/runtime/components/prose/Accordion.vue.d.ts +6 -0
- package/dist/runtime/components/prose/CodeTree.vue +40 -36
- package/dist/runtime/components/prose/Collapsible.d.vue.ts +2 -2
- package/dist/runtime/components/prose/Collapsible.vue +2 -2
- package/dist/runtime/components/prose/Collapsible.vue.d.ts +2 -2
- package/dist/runtime/components/prose/Field.d.vue.ts +1 -1
- package/dist/runtime/components/prose/Field.vue.d.ts +1 -1
- package/dist/runtime/components/prose/Img.vue +14 -3
- package/dist/runtime/components/prose/Tabs.d.vue.ts +6 -0
- package/dist/runtime/components/prose/Tabs.vue +3 -2
- package/dist/runtime/components/prose/Tabs.vue.d.ts +6 -0
- package/dist/runtime/composables/useKbd.js +1 -1
- package/dist/runtime/composables/useToast.d.ts +3 -1
- package/dist/runtime/composables/useToast.js +4 -3
- package/dist/runtime/inertia/components/Link.vue +12 -7
- package/dist/runtime/locale/hr.d.ts +3 -0
- package/dist/runtime/locale/hr.js +129 -0
- package/dist/runtime/locale/index.d.ts +1 -0
- package/dist/runtime/locale/index.js +1 -0
- package/dist/runtime/types/index.d.ts +2 -1
- package/dist/runtime/types/index.js +2 -1
- package/dist/runtime/types/tv.d.ts +6 -0
- package/dist/shared/{ui.D-FDXAUi.mjs → ui.Cmctwxv6.mjs} +381 -48
- package/dist/unplugin.mjs +2 -1
- package/dist/vite.mjs +3 -2
- package/package.json +18 -17
|
@@ -4,7 +4,7 @@ import theme from "#build/ui/input-menu";
|
|
|
4
4
|
|
|
5
5
|
<script setup>
|
|
6
6
|
import { computed, ref, toRef, onMounted, toRaw, nextTick } from "vue";
|
|
7
|
-
import { ComboboxRoot, ComboboxArrow, ComboboxAnchor, ComboboxInput, ComboboxTrigger, ComboboxPortal, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxLabel, ComboboxSeparator, ComboboxItem, ComboboxItemIndicator, TagsInputRoot, TagsInputItem, TagsInputItemText, TagsInputItemDelete, TagsInputInput, useForwardPropsEmits, useFilter } from "reka-ui";
|
|
7
|
+
import { ComboboxRoot, ComboboxArrow, ComboboxAnchor, ComboboxInput, ComboboxTrigger, ComboboxPortal, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxVirtualizer, ComboboxLabel, ComboboxSeparator, ComboboxItem, ComboboxItemIndicator, TagsInputRoot, TagsInputItem, TagsInputItemText, TagsInputItemDelete, TagsInputInput, useForwardPropsEmits, useFilter } from "reka-ui";
|
|
8
8
|
import { defu } from "defu";
|
|
9
9
|
import { isEqual } from "ohash/utils";
|
|
10
10
|
import { reactivePick, createReusableTemplate } from "@vueuse/core";
|
|
@@ -37,8 +37,10 @@ const props = defineProps({
|
|
|
37
37
|
content: { type: Object, required: false },
|
|
38
38
|
arrow: { type: [Boolean, Object], required: false },
|
|
39
39
|
portal: { type: [Boolean, String], required: false, skipCheck: true, default: true },
|
|
40
|
+
virtualize: { type: [Boolean, Object], required: false, default: false },
|
|
40
41
|
valueKey: { type: null, required: false },
|
|
41
42
|
labelKey: { type: null, required: false, default: "label" },
|
|
43
|
+
descriptionKey: { type: null, required: false, default: "description" },
|
|
42
44
|
items: { type: null, required: false },
|
|
43
45
|
defaultValue: { type: null, required: false },
|
|
44
46
|
modelValue: { type: null, required: false },
|
|
@@ -76,11 +78,32 @@ const rootProps = useForwardPropsEmits(reactivePick(props, "as", "modelValue", "
|
|
|
76
78
|
const portalProps = usePortal(toRef(() => props.portal));
|
|
77
79
|
const contentProps = toRef(() => defu(props.content, { side: "bottom", sideOffset: 8, collisionPadding: 8, position: "popper" }));
|
|
78
80
|
const arrowProps = toRef(() => props.arrow);
|
|
81
|
+
const virtualizerProps = toRef(() => !!props.virtualize && defu(typeof props.virtualize === "boolean" ? {} : props.virtualize, {
|
|
82
|
+
estimateSize: {
|
|
83
|
+
xs: 24,
|
|
84
|
+
sm: 28,
|
|
85
|
+
md: 32,
|
|
86
|
+
lg: 36,
|
|
87
|
+
xl: 40
|
|
88
|
+
}[props.size || "md"]
|
|
89
|
+
}));
|
|
79
90
|
const { emitFormBlur, emitFormFocus, emitFormChange, emitFormInput, size: formGroupSize, color, id, name, highlight, disabled, ariaAttrs } = useFormField(props);
|
|
80
91
|
const { orientation, size: fieldGroupSize } = useFieldGroup(props);
|
|
81
92
|
const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(toRef(() => defu(props, { trailingIcon: appConfig.ui.icons.chevronDown })));
|
|
82
93
|
const inputSize = computed(() => fieldGroupSize.value || formGroupSize.value);
|
|
83
94
|
const [DefineCreateItemTemplate, ReuseCreateItemTemplate] = createReusableTemplate();
|
|
95
|
+
const [DefineItemTemplate, ReuseItemTemplate] = createReusableTemplate({
|
|
96
|
+
props: {
|
|
97
|
+
item: {
|
|
98
|
+
type: [Object, String, Number, Boolean],
|
|
99
|
+
required: true
|
|
100
|
+
},
|
|
101
|
+
index: {
|
|
102
|
+
type: Number,
|
|
103
|
+
required: false
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
});
|
|
84
107
|
const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.inputMenu || {} })({
|
|
85
108
|
color: color.value,
|
|
86
109
|
variant: props.variant,
|
|
@@ -90,7 +113,8 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.inputMenu ||
|
|
|
90
113
|
leading: isLeading.value || !!props.avatar || !!slots.leading,
|
|
91
114
|
trailing: isTrailing.value || !!slots.trailing,
|
|
92
115
|
multiple: props.multiple,
|
|
93
|
-
fieldGroup: orientation.value
|
|
116
|
+
fieldGroup: orientation.value,
|
|
117
|
+
virtualize: !!props.virtualize
|
|
94
118
|
}));
|
|
95
119
|
const items = computed(() => groups.value.flatMap((group) => group));
|
|
96
120
|
function displayValue(value) {
|
|
@@ -190,9 +214,8 @@ function onUpdateOpen(value) {
|
|
|
190
214
|
clearTimeout(timeoutId);
|
|
191
215
|
}
|
|
192
216
|
}
|
|
193
|
-
function onRemoveTag(event) {
|
|
217
|
+
function onRemoveTag(event, modelValue) {
|
|
194
218
|
if (props.multiple) {
|
|
195
|
-
const modelValue = props.modelValue;
|
|
196
219
|
const filteredValue = modelValue.filter((value) => !isEqual(value, event));
|
|
197
220
|
emits("update:modelValue", filteredValue);
|
|
198
221
|
emits("remove-tag", event);
|
|
@@ -219,21 +242,72 @@ defineExpose({
|
|
|
219
242
|
|
|
220
243
|
<template>
|
|
221
244
|
<DefineCreateItemTemplate>
|
|
222
|
-
<
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
>
|
|
228
|
-
<
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
</ComboboxItem>
|
|
234
|
-
</ComboboxGroup>
|
|
245
|
+
<ComboboxItem
|
|
246
|
+
:class="ui.item({ class: props.ui?.item })"
|
|
247
|
+
:value="searchTerm"
|
|
248
|
+
@select.prevent="emits('create', searchTerm)"
|
|
249
|
+
>
|
|
250
|
+
<span :class="ui.itemLabel({ class: props.ui?.itemLabel })">
|
|
251
|
+
<slot name="create-item-label" :item="searchTerm">
|
|
252
|
+
{{ t("inputMenu.create", { label: searchTerm }) }}
|
|
253
|
+
</slot>
|
|
254
|
+
</span>
|
|
255
|
+
</ComboboxItem>
|
|
235
256
|
</DefineCreateItemTemplate>
|
|
236
257
|
|
|
258
|
+
<DefineItemTemplate v-slot="{ item, index }">
|
|
259
|
+
<ComboboxLabel v-if="isInputItem(item) && item.type === 'label'" :class="ui.label({ class: [props.ui?.label, item.ui?.label, item.class] })">
|
|
260
|
+
{{ get(item, props.labelKey) }}
|
|
261
|
+
</ComboboxLabel>
|
|
262
|
+
|
|
263
|
+
<ComboboxSeparator v-else-if="isInputItem(item) && item.type === 'separator'" :class="ui.separator({ class: [props.ui?.separator, item.ui?.separator, item.class] })" />
|
|
264
|
+
|
|
265
|
+
<ComboboxItem
|
|
266
|
+
v-else
|
|
267
|
+
:class="ui.item({ class: [props.ui?.item, isInputItem(item) && item.ui?.item, isInputItem(item) && item.class] })"
|
|
268
|
+
:disabled="isInputItem(item) && item.disabled"
|
|
269
|
+
:value="props.valueKey && isInputItem(item) ? get(item, props.valueKey) : item"
|
|
270
|
+
@select="onSelect($event, item)"
|
|
271
|
+
>
|
|
272
|
+
<slot name="item" :item="item" :index="index" :ui="ui">
|
|
273
|
+
<slot name="item-leading" :item="item" :index="index" :ui="ui">
|
|
274
|
+
<UIcon v-if="isInputItem(item) && item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: [props.ui?.itemLeadingIcon, item.ui?.itemLeadingIcon] })" />
|
|
275
|
+
<UAvatar v-else-if="isInputItem(item) && item.avatar" :size="item.ui?.itemLeadingAvatarSize || props.ui?.itemLeadingAvatarSize || ui.itemLeadingAvatarSize()" v-bind="item.avatar" :class="ui.itemLeadingAvatar({ class: [props.ui?.itemLeadingAvatar, item.ui?.itemLeadingAvatar] })" />
|
|
276
|
+
<UChip
|
|
277
|
+
v-else-if="isInputItem(item) && item.chip"
|
|
278
|
+
:size="item.ui?.itemLeadingChipSize || props.ui?.itemLeadingChipSize || ui.itemLeadingChipSize()"
|
|
279
|
+
inset
|
|
280
|
+
standalone
|
|
281
|
+
v-bind="item.chip"
|
|
282
|
+
:class="ui.itemLeadingChip({ class: [props.ui?.itemLeadingChip, item.ui?.itemLeadingChip] })"
|
|
283
|
+
/>
|
|
284
|
+
</slot>
|
|
285
|
+
|
|
286
|
+
<span :class="ui.itemWrapper({ class: [props.ui?.itemWrapper, isInputItem(item) && item.ui?.itemWrapper] })">
|
|
287
|
+
<span :class="ui.itemLabel({ class: [props.ui?.itemLabel, isInputItem(item) && item.ui?.itemLabel] })">
|
|
288
|
+
<slot name="item-label" :item="item" :index="index">
|
|
289
|
+
{{ isInputItem(item) ? get(item, props.labelKey) : item }}
|
|
290
|
+
</slot>
|
|
291
|
+
</span>
|
|
292
|
+
|
|
293
|
+
<span v-if="isInputItem(item) && (get(item, props.descriptionKey) || !!slots['item-description'])" :class="ui.itemDescription({ class: [props.ui?.itemDescription, isInputItem(item) && item.ui?.itemDescription] })">
|
|
294
|
+
<slot name="item-description" :item="item" :index="index">
|
|
295
|
+
{{ get(item, props.descriptionKey) }}
|
|
296
|
+
</slot>
|
|
297
|
+
</span>
|
|
298
|
+
</span>
|
|
299
|
+
|
|
300
|
+
<span :class="ui.itemTrailing({ class: [props.ui?.itemTrailing, isInputItem(item) && item.ui?.itemTrailing] })">
|
|
301
|
+
<slot name="item-trailing" :item="item" :index="index" :ui="ui" />
|
|
302
|
+
|
|
303
|
+
<ComboboxItemIndicator as-child>
|
|
304
|
+
<UIcon :name="selectedIcon || appConfig.ui.icons.check" :class="ui.itemTrailingIcon({ class: [props.ui?.itemTrailingIcon, isInputItem(item) && item.ui?.itemTrailingIcon] })" />
|
|
305
|
+
</ComboboxItemIndicator>
|
|
306
|
+
</span>
|
|
307
|
+
</slot>
|
|
308
|
+
</ComboboxItem>
|
|
309
|
+
</DefineItemTemplate>
|
|
310
|
+
|
|
237
311
|
<ComboboxRoot
|
|
238
312
|
v-slot="{ modelValue, open }"
|
|
239
313
|
v-bind="rootProps"
|
|
@@ -257,9 +331,9 @@ defineExpose({
|
|
|
257
331
|
as-child
|
|
258
332
|
@blur="onBlur"
|
|
259
333
|
@focus="onFocus"
|
|
260
|
-
@remove-tag="onRemoveTag"
|
|
334
|
+
@remove-tag="onRemoveTag($event, modelValue)"
|
|
261
335
|
>
|
|
262
|
-
<TagsInputItem v-for="(item, index) in tags" :key="index" :value="
|
|
336
|
+
<TagsInputItem v-for="(item, index) in tags" :key="index" :value="item" :class="ui.tagsItem({ class: [props.ui?.tagsItem, isInputItem(item) && item.ui?.tagsItem] })">
|
|
263
337
|
<TagsInputItemText :class="ui.tagsItemText({ class: [props.ui?.tagsItemText, isInputItem(item) && item.ui?.tagsItemText] })">
|
|
264
338
|
<slot name="tags-item-text" :item="item" :index="index">
|
|
265
339
|
{{ displayValue(item) }}
|
|
@@ -267,7 +341,7 @@ defineExpose({
|
|
|
267
341
|
</TagsInputItemText>
|
|
268
342
|
|
|
269
343
|
<TagsInputItemDelete :class="ui.tagsItemDelete({ class: [props.ui?.tagsItemDelete, isInputItem(item) && item.ui?.tagsItemDelete] })" :disabled="disabled">
|
|
270
|
-
<slot name="tags-item-delete" :item="item" :index="index">
|
|
344
|
+
<slot name="tags-item-delete" :item="item" :index="index" :ui="ui">
|
|
271
345
|
<UIcon :name="deleteIcon || appConfig.ui.icons.close" :class="ui.tagsItemDeleteIcon({ class: [props.ui?.tagsItemDeleteIcon, isInputItem(item) && item.ui?.tagsItemDeleteIcon] })" />
|
|
272
346
|
</slot>
|
|
273
347
|
</TagsInputItemDelete>
|
|
@@ -324,56 +398,34 @@ defineExpose({
|
|
|
324
398
|
</ComboboxEmpty>
|
|
325
399
|
|
|
326
400
|
<div role="presentation" :class="ui.viewport({ class: props.ui?.viewport })">
|
|
327
|
-
<
|
|
328
|
-
|
|
329
|
-
<ComboboxGroup v-for="(group, groupIndex) in filteredGroups" :key="`group-${groupIndex}`" :class="ui.group({ class: props.ui?.group })">
|
|
330
|
-
<template v-for="(item, index) in group" :key="`group-${groupIndex}-${index}`">
|
|
331
|
-
<ComboboxLabel v-if="isInputItem(item) && item.type === 'label'" :class="ui.label({ class: [props.ui?.label, item.ui?.label, item.class] })">
|
|
332
|
-
{{ get(item, props.labelKey) }}
|
|
333
|
-
</ComboboxLabel>
|
|
334
|
-
|
|
335
|
-
<ComboboxSeparator v-else-if="isInputItem(item) && item.type === 'separator'" :class="ui.separator({ class: [props.ui?.separator, item.ui?.separator, item.class] })" />
|
|
401
|
+
<template v-if="!!virtualize">
|
|
402
|
+
<ReuseCreateItemTemplate v-if="createItem && createItemPosition === 'top'" />
|
|
336
403
|
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
<slot name="item-leading" :item="item" :index="index">
|
|
346
|
-
<UIcon v-if="isInputItem(item) && item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: [props.ui?.itemLeadingIcon, item.ui?.itemLeadingIcon] })" />
|
|
347
|
-
<UAvatar v-else-if="isInputItem(item) && item.avatar" :size="item.ui?.itemLeadingAvatarSize || props.ui?.itemLeadingAvatarSize || ui.itemLeadingAvatarSize()" v-bind="item.avatar" :class="ui.itemLeadingAvatar({ class: [props.ui?.itemLeadingAvatar, item.ui?.itemLeadingAvatar] })" />
|
|
348
|
-
<UChip
|
|
349
|
-
v-else-if="isInputItem(item) && item.chip"
|
|
350
|
-
:size="item.ui?.itemLeadingChipSize || props.ui?.itemLeadingChipSize || ui.itemLeadingChipSize()"
|
|
351
|
-
inset
|
|
352
|
-
standalone
|
|
353
|
-
v-bind="item.chip"
|
|
354
|
-
:class="ui.itemLeadingChip({ class: [props.ui?.itemLeadingChip, item.ui?.itemLeadingChip] })"
|
|
355
|
-
/>
|
|
356
|
-
</slot>
|
|
404
|
+
<ComboboxVirtualizer
|
|
405
|
+
v-slot="{ option: item, virtualItem }"
|
|
406
|
+
:options="filteredItems"
|
|
407
|
+
:text-content="(item2) => isInputItem(item2) ? get(item2, props.labelKey) : String(item2)"
|
|
408
|
+
v-bind="virtualizerProps"
|
|
409
|
+
>
|
|
410
|
+
<ReuseItemTemplate :item="item" :index="virtualItem.index" />
|
|
411
|
+
</ComboboxVirtualizer>
|
|
357
412
|
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
{{ isInputItem(item) ? get(item, props.labelKey) : item }}
|
|
361
|
-
</slot>
|
|
362
|
-
</span>
|
|
413
|
+
<ReuseCreateItemTemplate v-if="createItem && createItemPosition === 'bottom'" />
|
|
414
|
+
</template>
|
|
363
415
|
|
|
364
|
-
|
|
365
|
-
|
|
416
|
+
<template v-else>
|
|
417
|
+
<ComboboxGroup v-if="createItem && createItemPosition === 'top'" :class="ui.group({ class: props.ui?.group })">
|
|
418
|
+
<ReuseCreateItemTemplate />
|
|
419
|
+
</ComboboxGroup>
|
|
366
420
|
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
</span>
|
|
371
|
-
</slot>
|
|
372
|
-
</ComboboxItem>
|
|
373
|
-
</template>
|
|
374
|
-
</ComboboxGroup>
|
|
421
|
+
<ComboboxGroup v-for="(group, groupIndex) in filteredGroups" :key="`group-${groupIndex}`" :class="ui.group({ class: props.ui?.group })">
|
|
422
|
+
<ReuseItemTemplate v-for="(item, index) in group" :key="`group-${groupIndex}-${index}`" :item="item" :index="index" />
|
|
423
|
+
</ComboboxGroup>
|
|
375
424
|
|
|
376
|
-
|
|
425
|
+
<ComboboxGroup v-if="createItem && createItemPosition === 'bottom'" :class="ui.group({ class: props.ui?.group })">
|
|
426
|
+
<ReuseCreateItemTemplate />
|
|
427
|
+
</ComboboxGroup>
|
|
428
|
+
</template>
|
|
377
429
|
</div>
|
|
378
430
|
|
|
379
431
|
<slot name="content-bottom" />
|
|
@@ -11,6 +11,7 @@ type InputMenu = ComponentConfig<typeof theme, AppConfig, 'inputMenu'>;
|
|
|
11
11
|
export type InputMenuValue = AcceptableValue;
|
|
12
12
|
export type InputMenuItem = InputMenuValue | {
|
|
13
13
|
label?: string;
|
|
14
|
+
description?: string;
|
|
14
15
|
/**
|
|
15
16
|
* @IconifyIcon
|
|
16
17
|
*/
|
|
@@ -23,9 +24,9 @@ export type InputMenuItem = InputMenuValue | {
|
|
|
23
24
|
*/
|
|
24
25
|
type?: 'label' | 'separator' | 'item';
|
|
25
26
|
disabled?: boolean;
|
|
26
|
-
onSelect
|
|
27
|
+
onSelect?: (e: Event) => void;
|
|
27
28
|
class?: any;
|
|
28
|
-
ui?: Pick<InputMenu['slots'], 'tagsItem' | 'tagsItemText' | 'tagsItemDelete' | 'tagsItemDeleteIcon' | 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChip' | 'itemLeadingChipSize' | 'itemLabel' | 'itemTrailing' | 'itemTrailingIcon'>;
|
|
29
|
+
ui?: Pick<InputMenu['slots'], 'tagsItem' | 'tagsItemText' | 'tagsItemDelete' | 'tagsItemDeleteIcon' | 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChip' | 'itemLeadingChipSize' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemTrailing' | 'itemTrailingIcon'>;
|
|
29
30
|
[key: string]: any;
|
|
30
31
|
};
|
|
31
32
|
export interface InputMenuProps<T extends ArrayOrNested<InputMenuItem> = ArrayOrNested<InputMenuItem>, VK extends GetItemKeys<T> | undefined = undefined, M extends boolean = false> extends Pick<ComboboxRootProps<T>, 'open' | 'defaultOpen' | 'disabled' | 'name' | 'resetSearchTermOnBlur' | 'resetSearchTermOnSelect' | 'highlightOnHover' | 'openOnClick' | 'openOnFocus'>, UseComponentIconsProps {
|
|
@@ -87,6 +88,23 @@ export interface InputMenuProps<T extends ArrayOrNested<InputMenuItem> = ArrayOr
|
|
|
87
88
|
* @defaultValue true
|
|
88
89
|
*/
|
|
89
90
|
portal?: boolean | string | HTMLElement;
|
|
91
|
+
/**
|
|
92
|
+
* Enable virtualization for large lists.
|
|
93
|
+
* Note: when enabled, all groups are flattened into a single list due to a limitation of Reka UI (https://github.com/unovue/reka-ui/issues/1885).
|
|
94
|
+
* @defaultValue false
|
|
95
|
+
*/
|
|
96
|
+
virtualize?: boolean | {
|
|
97
|
+
/**
|
|
98
|
+
* Number of items rendered outside the visible area
|
|
99
|
+
* @defaultValue 12
|
|
100
|
+
*/
|
|
101
|
+
overscan?: number;
|
|
102
|
+
/**
|
|
103
|
+
* Estimated size (in px) of each item
|
|
104
|
+
* @defaultValue 32
|
|
105
|
+
*/
|
|
106
|
+
estimateSize?: number;
|
|
107
|
+
};
|
|
90
108
|
/**
|
|
91
109
|
* When `items` is an array of objects, select the field to use as the value instead of the object itself.
|
|
92
110
|
* @defaultValue undefined
|
|
@@ -97,6 +115,11 @@ export interface InputMenuProps<T extends ArrayOrNested<InputMenuItem> = ArrayOr
|
|
|
97
115
|
* @defaultValue 'label'
|
|
98
116
|
*/
|
|
99
117
|
labelKey?: GetItemKeys<T>;
|
|
118
|
+
/**
|
|
119
|
+
* When `items` is an array of objects, select the field to use as the description.
|
|
120
|
+
* @defaultValue 'description'
|
|
121
|
+
*/
|
|
122
|
+
descriptionKey?: GetItemKeys<T>;
|
|
100
123
|
items?: T;
|
|
101
124
|
/** The value of the InputMenu when initially rendered. Use when you do not need to control the state of the InputMenu. */
|
|
102
125
|
defaultValue?: GetModelValue<T, VK, M>;
|
|
@@ -144,30 +167,37 @@ export type InputMenuEmits<A extends ArrayOrNested<InputMenuItem>, VK extends Ge
|
|
|
144
167
|
type SlotProps<T extends InputMenuItem> = (props: {
|
|
145
168
|
item: T;
|
|
146
169
|
index: number;
|
|
170
|
+
ui: InputMenu['ui'];
|
|
147
171
|
}) => any;
|
|
148
172
|
export interface InputMenuSlots<A extends ArrayOrNested<InputMenuItem> = ArrayOrNested<InputMenuItem>, VK extends GetItemKeys<A> | undefined = undefined, M extends boolean = false, T extends NestedItem<A> = NestedItem<A>> {
|
|
149
173
|
'leading'(props: {
|
|
150
174
|
modelValue?: GetModelValue<A, VK, M>;
|
|
151
175
|
open: boolean;
|
|
152
|
-
ui:
|
|
153
|
-
[K in keyof Required<InputMenu['slots']>]: (props?: Record<string, any>) => string;
|
|
154
|
-
};
|
|
176
|
+
ui: InputMenu['ui'];
|
|
155
177
|
}): any;
|
|
156
178
|
'trailing'(props: {
|
|
157
179
|
modelValue?: GetModelValue<A, VK, M>;
|
|
158
180
|
open: boolean;
|
|
159
|
-
ui:
|
|
160
|
-
[K in keyof Required<InputMenu['slots']>]: (props?: Record<string, any>) => string;
|
|
161
|
-
};
|
|
181
|
+
ui: InputMenu['ui'];
|
|
162
182
|
}): any;
|
|
163
183
|
'empty'(props: {
|
|
164
184
|
searchTerm?: string;
|
|
165
185
|
}): any;
|
|
166
186
|
'item': SlotProps<T>;
|
|
167
187
|
'item-leading': SlotProps<T>;
|
|
168
|
-
'item-label':
|
|
188
|
+
'item-label'(props: {
|
|
189
|
+
item: T;
|
|
190
|
+
index: number;
|
|
191
|
+
}): any;
|
|
192
|
+
'item-description'(props: {
|
|
193
|
+
item: T;
|
|
194
|
+
index: number;
|
|
195
|
+
}): any;
|
|
169
196
|
'item-trailing': SlotProps<T>;
|
|
170
|
-
'tags-item-text':
|
|
197
|
+
'tags-item-text'(props: {
|
|
198
|
+
item: T;
|
|
199
|
+
index: number;
|
|
200
|
+
}): any;
|
|
171
201
|
'tags-item-delete': SlotProps<T>;
|
|
172
202
|
'content-top': (props?: {}) => any;
|
|
173
203
|
'content-bottom': (props?: {}) => any;
|
|
@@ -27,7 +27,7 @@ export interface InputNumberProps extends Pick<NumberFieldRootProps, 'modelValue
|
|
|
27
27
|
* Configure the increment button. The `color` and `size` are inherited.
|
|
28
28
|
* @defaultValue { variant: 'link' }
|
|
29
29
|
*/
|
|
30
|
-
increment?: ButtonProps;
|
|
30
|
+
increment?: boolean | ButtonProps;
|
|
31
31
|
/**
|
|
32
32
|
* The icon displayed to increment the value.
|
|
33
33
|
* @defaultValue appConfig.ui.icons.plus
|
|
@@ -40,7 +40,7 @@ export interface InputNumberProps extends Pick<NumberFieldRootProps, 'modelValue
|
|
|
40
40
|
* Configure the decrement button. The `color` and `size` are inherited.
|
|
41
41
|
* @defaultValue { variant: 'link' }
|
|
42
42
|
*/
|
|
43
|
-
decrement?: ButtonProps;
|
|
43
|
+
decrement?: boolean | ButtonProps;
|
|
44
44
|
/**
|
|
45
45
|
* The icon displayed to decrement the value.
|
|
46
46
|
* @defaultValue appConfig.ui.icons.minus
|
|
@@ -178,6 +178,8 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<InputN
|
|
|
178
178
|
onChange?: ((event: Event) => any) | undefined;
|
|
179
179
|
"onUpdate:modelValue"?: ((value: number) => any) | undefined;
|
|
180
180
|
}>, {
|
|
181
|
+
decrement: boolean | ButtonProps;
|
|
182
|
+
increment: boolean | ButtonProps;
|
|
181
183
|
orientation: "vertical" | "horizontal";
|
|
182
184
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, InputNumberSlots>;
|
|
183
185
|
declare const _default: typeof __VLS_export;
|
|
@@ -21,10 +21,10 @@ const props = defineProps({
|
|
|
21
21
|
size: { type: null, required: false },
|
|
22
22
|
highlight: { type: Boolean, required: false },
|
|
23
23
|
orientation: { type: String, required: false, default: "horizontal" },
|
|
24
|
-
increment: { type: Object, required: false },
|
|
24
|
+
increment: { type: [Boolean, Object], required: false, default: true },
|
|
25
25
|
incrementIcon: { type: [String, Object], required: false },
|
|
26
26
|
incrementDisabled: { type: Boolean, required: false },
|
|
27
|
-
decrement: { type: Object, required: false },
|
|
27
|
+
decrement: { type: [Boolean, Object], required: false, default: true },
|
|
28
28
|
decrementIcon: { type: [String, Object], required: false },
|
|
29
29
|
decrementDisabled: { type: Boolean, required: false },
|
|
30
30
|
autofocus: { type: Boolean, required: false },
|
|
@@ -64,7 +64,9 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.inputNumber |
|
|
|
64
64
|
size: inputSize.value,
|
|
65
65
|
highlight: highlight.value,
|
|
66
66
|
orientation: props.orientation,
|
|
67
|
-
fieldGroup: orientation.value
|
|
67
|
+
fieldGroup: orientation.value,
|
|
68
|
+
increment: props.orientation === "vertical" ? !!props.increment || !!props.decrement : !!props.increment,
|
|
69
|
+
decrement: props.orientation === "vertical" ? false : !!props.decrement
|
|
68
70
|
}));
|
|
69
71
|
const incrementIcon = computed(() => props.incrementIcon || (props.orientation === "horizontal" ? appConfig.ui.icons.plus : appConfig.ui.icons.chevronUp));
|
|
70
72
|
const decrementIcon = computed(() => props.decrementIcon || (props.orientation === "horizontal" ? appConfig.ui.icons.minus : appConfig.ui.icons.chevronDown));
|
|
@@ -118,7 +120,7 @@ defineExpose({
|
|
|
118
120
|
@focus="emitFormFocus"
|
|
119
121
|
/>
|
|
120
122
|
|
|
121
|
-
<div :class="ui.increment({ class: props.ui?.increment })">
|
|
123
|
+
<div v-if="!!increment" :class="ui.increment({ class: props.ui?.increment })">
|
|
122
124
|
<NumberFieldIncrement as-child :disabled="disabled || incrementDisabled">
|
|
123
125
|
<slot name="increment">
|
|
124
126
|
<UButton
|
|
@@ -133,7 +135,7 @@ defineExpose({
|
|
|
133
135
|
</NumberFieldIncrement>
|
|
134
136
|
</div>
|
|
135
137
|
|
|
136
|
-
<div :class="ui.decrement({ class: props.ui?.decrement })">
|
|
138
|
+
<div v-if="!!decrement" :class="ui.decrement({ class: props.ui?.decrement })">
|
|
137
139
|
<NumberFieldDecrement as-child :disabled="disabled || decrementDisabled">
|
|
138
140
|
<slot name="decrement">
|
|
139
141
|
<UButton
|
|
@@ -27,7 +27,7 @@ export interface InputNumberProps extends Pick<NumberFieldRootProps, 'modelValue
|
|
|
27
27
|
* Configure the increment button. The `color` and `size` are inherited.
|
|
28
28
|
* @defaultValue { variant: 'link' }
|
|
29
29
|
*/
|
|
30
|
-
increment?: ButtonProps;
|
|
30
|
+
increment?: boolean | ButtonProps;
|
|
31
31
|
/**
|
|
32
32
|
* The icon displayed to increment the value.
|
|
33
33
|
* @defaultValue appConfig.ui.icons.plus
|
|
@@ -40,7 +40,7 @@ export interface InputNumberProps extends Pick<NumberFieldRootProps, 'modelValue
|
|
|
40
40
|
* Configure the decrement button. The `color` and `size` are inherited.
|
|
41
41
|
* @defaultValue { variant: 'link' }
|
|
42
42
|
*/
|
|
43
|
-
decrement?: ButtonProps;
|
|
43
|
+
decrement?: boolean | ButtonProps;
|
|
44
44
|
/**
|
|
45
45
|
* The icon displayed to decrement the value.
|
|
46
46
|
* @defaultValue appConfig.ui.icons.minus
|
|
@@ -178,6 +178,8 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<InputN
|
|
|
178
178
|
onChange?: ((event: Event) => any) | undefined;
|
|
179
179
|
"onUpdate:modelValue"?: ((value: number) => any) | undefined;
|
|
180
180
|
}>, {
|
|
181
|
+
decrement: boolean | ButtonProps;
|
|
182
|
+
increment: boolean | ButtonProps;
|
|
181
183
|
orientation: "vertical" | "horizontal";
|
|
182
184
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, InputNumberSlots>;
|
|
183
185
|
declare const _default: typeof __VLS_export;
|
|
@@ -49,11 +49,18 @@ export interface InputTagsEmits<T extends InputTagItem> extends TagsInputRootEmi
|
|
|
49
49
|
type SlotProps<T extends InputTagItem> = (props: {
|
|
50
50
|
item: T;
|
|
51
51
|
index: number;
|
|
52
|
+
ui: InputTags['ui'];
|
|
52
53
|
}) => any;
|
|
53
54
|
export interface InputTagsSlots<T extends InputTagItem = InputTagItem> {
|
|
54
|
-
'leading'(props
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
'leading'(props: {
|
|
56
|
+
ui: InputTags['ui'];
|
|
57
|
+
}): any;
|
|
58
|
+
'default'(props: {
|
|
59
|
+
ui: InputTags['ui'];
|
|
60
|
+
}): any;
|
|
61
|
+
'trailing'(props: {
|
|
62
|
+
ui: InputTags['ui'];
|
|
63
|
+
}): any;
|
|
57
64
|
'item-text': SlotProps<T>;
|
|
58
65
|
'item-delete': SlotProps<T>;
|
|
59
66
|
}
|
|
@@ -120,14 +120,14 @@ defineExpose({
|
|
|
120
120
|
:class="ui.item({ class: [props.ui?.item] })"
|
|
121
121
|
>
|
|
122
122
|
<TagsInputItemText :class="ui.itemText({ class: [props.ui?.itemText] })">
|
|
123
|
-
<slot v-if="!!slots['item-text']" name="item-text" :item="item" :index="index" />
|
|
123
|
+
<slot v-if="!!slots['item-text']" name="item-text" :item="item" :index="index" :ui="ui" />
|
|
124
124
|
</TagsInputItemText>
|
|
125
125
|
|
|
126
126
|
<TagsInputItemDelete
|
|
127
127
|
:class="ui.itemDelete({ class: [props.ui?.itemDelete] })"
|
|
128
128
|
:disabled="disabled"
|
|
129
129
|
>
|
|
130
|
-
<slot name="item-delete" :item="item" :index="index">
|
|
130
|
+
<slot name="item-delete" :item="item" :index="index" :ui="ui">
|
|
131
131
|
<UIcon :name="deleteIcon || appConfig.ui.icons.close" :class="ui.itemDeleteIcon({ class: [props.ui?.itemDeleteIcon] })" />
|
|
132
132
|
</slot>
|
|
133
133
|
</TagsInputItemDelete>
|
|
@@ -143,17 +143,17 @@ defineExpose({
|
|
|
143
143
|
@focus="onFocus"
|
|
144
144
|
/>
|
|
145
145
|
|
|
146
|
-
<slot />
|
|
146
|
+
<slot :ui="ui" />
|
|
147
147
|
|
|
148
148
|
<span v-if="isLeading || !!avatar || !!slots.leading" :class="ui.leading({ class: props.ui?.leading })">
|
|
149
|
-
<slot name="leading">
|
|
149
|
+
<slot name="leading" :ui="ui">
|
|
150
150
|
<UIcon v-if="isLeading && leadingIconName" :name="leadingIconName" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />
|
|
151
151
|
<UAvatar v-else-if="!!avatar" :size="props.ui?.leadingAvatarSize || ui.leadingAvatarSize()" v-bind="avatar" :class="ui.leadingAvatar({ class: props.ui?.leadingAvatar })" />
|
|
152
152
|
</slot>
|
|
153
153
|
</span>
|
|
154
154
|
|
|
155
155
|
<span v-if="isTrailing || !!slots.trailing" :class="ui.trailing({ class: props.ui?.trailing })">
|
|
156
|
-
<slot name="trailing">
|
|
156
|
+
<slot name="trailing" :ui="ui">
|
|
157
157
|
<UIcon v-if="trailingIconName" :name="trailingIconName" :class="ui.trailingIcon({ class: props.ui?.trailingIcon })" />
|
|
158
158
|
</slot>
|
|
159
159
|
</span>
|
|
@@ -49,11 +49,18 @@ export interface InputTagsEmits<T extends InputTagItem> extends TagsInputRootEmi
|
|
|
49
49
|
type SlotProps<T extends InputTagItem> = (props: {
|
|
50
50
|
item: T;
|
|
51
51
|
index: number;
|
|
52
|
+
ui: InputTags['ui'];
|
|
52
53
|
}) => any;
|
|
53
54
|
export interface InputTagsSlots<T extends InputTagItem = InputTagItem> {
|
|
54
|
-
'leading'(props
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
'leading'(props: {
|
|
56
|
+
ui: InputTags['ui'];
|
|
57
|
+
}): any;
|
|
58
|
+
'default'(props: {
|
|
59
|
+
ui: InputTags['ui'];
|
|
60
|
+
}): any;
|
|
61
|
+
'trailing'(props: {
|
|
62
|
+
ui: InputTags['ui'];
|
|
63
|
+
}): any;
|
|
57
64
|
'item-text': SlotProps<T>;
|
|
58
65
|
'item-delete': SlotProps<T>;
|
|
59
66
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export interface MainProps {
|
|
2
2
|
/**
|
|
3
3
|
* The element or component this component should render as.
|
|
4
|
-
* @defaultValue '
|
|
4
|
+
* @defaultValue 'div'
|
|
5
5
|
*/
|
|
6
6
|
as?: any;
|
|
7
7
|
class?: any;
|
|
@@ -9,9 +9,7 @@ export interface MainProps {
|
|
|
9
9
|
export interface MainSlots {
|
|
10
10
|
default(props?: {}): any;
|
|
11
11
|
}
|
|
12
|
-
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<MainProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MainProps> & Readonly<{}>, {
|
|
13
|
-
as: any;
|
|
14
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, MainSlots>;
|
|
12
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<MainProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MainProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, MainSlots>;
|
|
15
13
|
declare const _default: typeof __VLS_export;
|
|
16
14
|
export default _default;
|
|
17
15
|
type __VLS_WithSlots<T, S> = T & {
|
|
@@ -8,7 +8,7 @@ import { Primitive } from "reka-ui";
|
|
|
8
8
|
import { useAppConfig } from "#imports";
|
|
9
9
|
import { tv } from "../utils/tv";
|
|
10
10
|
const props = defineProps({
|
|
11
|
-
as: { type: null, required: false
|
|
11
|
+
as: { type: null, required: false },
|
|
12
12
|
class: { type: null, required: false }
|
|
13
13
|
});
|
|
14
14
|
defineSlots();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export interface MainProps {
|
|
2
2
|
/**
|
|
3
3
|
* The element or component this component should render as.
|
|
4
|
-
* @defaultValue '
|
|
4
|
+
* @defaultValue 'div'
|
|
5
5
|
*/
|
|
6
6
|
as?: any;
|
|
7
7
|
class?: any;
|
|
@@ -9,9 +9,7 @@ export interface MainProps {
|
|
|
9
9
|
export interface MainSlots {
|
|
10
10
|
default(props?: {}): any;
|
|
11
11
|
}
|
|
12
|
-
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<MainProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MainProps> & Readonly<{}>, {
|
|
13
|
-
as: any;
|
|
14
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, MainSlots>;
|
|
12
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<MainProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MainProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, MainSlots>;
|
|
15
13
|
declare const _default: typeof __VLS_export;
|
|
16
14
|
export default _default;
|
|
17
15
|
type __VLS_WithSlots<T, S> = T & {
|
|
@@ -69,10 +69,7 @@ export interface ModalSlots {
|
|
|
69
69
|
description(props?: {}): any;
|
|
70
70
|
actions(props?: {}): any;
|
|
71
71
|
close(props: {
|
|
72
|
-
|
|
73
|
-
ui: {
|
|
74
|
-
[K in keyof Required<Modal['slots']>]: (props?: Record<string, any>) => string;
|
|
75
|
-
};
|
|
72
|
+
ui: Modal['ui'];
|
|
76
73
|
}): any;
|
|
77
74
|
body(props: {
|
|
78
75
|
close: () => void;
|
|
@@ -36,9 +36,6 @@ const rootProps = useForwardPropsEmits(reactivePick(props, "open", "defaultOpen"
|
|
|
36
36
|
const portalProps = usePortal(toRef(() => props.portal));
|
|
37
37
|
const contentProps = toRef(() => props.content);
|
|
38
38
|
const contentEvents = computed(() => {
|
|
39
|
-
const defaultEvents = {
|
|
40
|
-
closeAutoFocus: (e) => e.preventDefault()
|
|
41
|
-
};
|
|
42
39
|
if (!props.dismissible) {
|
|
43
40
|
const events = ["pointerDownOutside", "interactOutside", "escapeKeyDown"];
|
|
44
41
|
return events.reduce((acc, curr) => {
|
|
@@ -47,9 +44,9 @@ const contentEvents = computed(() => {
|
|
|
47
44
|
emits("close:prevent");
|
|
48
45
|
};
|
|
49
46
|
return acc;
|
|
50
|
-
},
|
|
47
|
+
}, {});
|
|
51
48
|
}
|
|
52
|
-
return
|
|
49
|
+
return {};
|
|
53
50
|
});
|
|
54
51
|
const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.modal || {} })({
|
|
55
52
|
transition: props.transition,
|
|
@@ -101,7 +98,7 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.modal || {} }
|
|
|
101
98
|
<slot name="actions" />
|
|
102
99
|
|
|
103
100
|
<DialogClose v-if="props.close || !!slots.close" as-child>
|
|
104
|
-
<slot name="close" :
|
|
101
|
+
<slot name="close" :ui="ui">
|
|
105
102
|
<UButton
|
|
106
103
|
v-if="props.close"
|
|
107
104
|
:icon="closeIcon || appConfig.ui.icons.close"
|