Skip to content

Commit c5f5b9f

Browse files
Add prepend/append slots
1 parent de34bf3 commit c5f5b9f

File tree

7 files changed

+92
-14
lines changed

7 files changed

+92
-14
lines changed

src/plugin/VInlineCustomField.vue

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,19 @@
1212
<DisplayedValue
1313
v-bind="bindingDisplay"
1414
@toggleField="toggleField"
15-
/>
15+
>
16+
17+
<!-- Pass on all scoped slots -->
18+
<template
19+
v-for="(_, slot) in slots"
20+
#[slot]="scope"
21+
>
22+
<slot
23+
:name="slot"
24+
v-bind="{ ...scope }"
25+
/>
26+
</template>
27+
</DisplayedValue>
1628
</div>
1729
</div>
1830

@@ -108,6 +120,7 @@ import inlineEmits from './utils/emits';
108120
const modelValue = defineModel<FieldValue>();
109121
110122
const attrs = useAttrs();
123+
const slots = useSlots();
111124
const emit = defineEmits([...inlineEmits]);
112125
113126
const iconOptions = inject<IconOptions>(Symbol.for('vuetify:icons'));

src/plugin/VInlineSelect.vue

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,19 @@
1212
<DisplayedValue
1313
v-bind="bindingDisplay"
1414
@toggleField="toggleField"
15-
/>
15+
>
16+
17+
<!-- Pass on all scoped slots -->
18+
<template
19+
v-for="(_, slot) in slots"
20+
#[slot]="scope"
21+
>
22+
<slot
23+
:name="slot"
24+
v-bind="{ ...scope }"
25+
/>
26+
</template>
27+
</DisplayedValue>
1628
</div>
1729
</div>
1830

src/plugin/VInlineTextField.vue

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,19 @@
1212
<DisplayedValue
1313
v-bind="bindingDisplay"
1414
@toggleField="toggleField"
15-
/>
15+
>
16+
17+
<!-- Pass on all scoped slots -->
18+
<template
19+
v-for="(_, slot) in slots"
20+
#[slot]="scope"
21+
>
22+
<slot
23+
:name="slot"
24+
v-bind="{ ...scope }"
25+
/>
26+
</template>
27+
</DisplayedValue>
1628
</div>
1729
</div>
1830

src/plugin/VInlineTextarea.vue

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,19 @@
1212
<DisplayedValue
1313
v-bind="bindingDisplay"
1414
@toggleField="toggleField"
15-
/>
15+
>
16+
17+
<!-- Pass on all scoped slots -->
18+
<template
19+
v-for="(_, slot) in slots"
20+
#[slot]="scope"
21+
>
22+
<slot
23+
:name="slot"
24+
v-bind="{ ...scope }"
25+
/>
26+
</template>
27+
</DisplayedValue>
1628
</div>
1729
</div>
1830

src/plugin/components/DisplayedValue.vue

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,17 @@
33

44
<!-- Prepend Icon -->
55
<div
6-
v-if="displayPrependIcon"
6+
v-if="displayPrependIcon || slots['display.prepend']"
77
:class="prependAppendIconClasses('prepend')"
88
:style="prependAppendIconStyles"
99
>
10+
<slot
11+
v-if="slots['display.prepend']"
12+
v-bind="slotBindings"
13+
name="display.prepend"
14+
/>
1015
<v-icon
16+
v-else
1117
:color="displayPrependIconColor"
1218
:icon="displayPrependIcon"
1319
size="x-small"
@@ -21,10 +27,16 @@
2127
>
2228
<!-- Prepend Inner Icon -->
2329
<div
24-
v-if="displayPrependInnerIcon"
30+
v-if="displayPrependInnerIcon || slots['display.prependInner']"
2531
:class="prependAppendIconClasses('prepend', true)"
2632
>
33+
<slot
34+
v-if="slots['display.prependInner']"
35+
v-bind="slotBindings"
36+
name="display.prependInner"
37+
/>
2738
<v-icon
39+
v-else
2840
:color="displayPrependInnerIconColor"
2941
:icon="displayPrependInnerIcon"
3042
size="x-small"
@@ -35,10 +47,16 @@
3547

3648
<!-- Append Inner Icon -->
3749
<div
38-
v-if="displayAppendInnerIcon"
50+
v-if="displayAppendInnerIcon || slots['display.appendInner']"
3951
:class="prependAppendIconClasses('append', true)"
4052
>
53+
<slot
54+
v-if="slots['display.appendInner']"
55+
v-bind="slotBindings"
56+
name="display.appendInner"
57+
/>
4158
<v-icon
59+
v-else
4260
:color="displayAppendInnerIconColor"
4361
:icon="displayAppendInnerIcon"
4462
size="x-small"
@@ -48,11 +66,17 @@
4866

4967
<!-- Append Icon -->
5068
<div
51-
v-if="displayAppendIcon"
69+
v-if="displayAppendIcon || slots['display.append']"
5270
:class="prependAppendIconClasses('append')"
5371
:style="prependAppendIconStyles"
5472
>
73+
<slot
74+
v-if="slots['display.append']"
75+
v-bind="slotBindings"
76+
name="display.append"
77+
/>
5578
<v-icon
79+
v-else
5680
:color="displayAppendIconColor"
5781
:icon="displayAppendIcon"
5882
size="x-small"
@@ -77,8 +101,15 @@ import {
77101
78102
const emit = defineEmits(['toggleField']);
79103
const props = defineProps<DisplayValueProps>();
104+
const slots = useSlots();
80105
const theme = useTheme();
81106
107+
const slotBindings = {
108+
displayValue: props.displayValue,
109+
empty: props.empty,
110+
error: props.error,
111+
};
112+
82113
const displayValueClass = computed(() => useDisplayValueClass(
83114
props.field,
84115
props.valueColor,

src/plugin/composables/styles.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,6 @@ export const useCardContainerStyle: UseCardContainerStyle = (options) => {
5757
const { cardMinWidth, cardOffsetX, cardOffsetY, cardWidth, field, name = '' } = options;
5858
const coords = useGetFieldCoordinates({ cardOffsetX, cardOffsetY, field });
5959

60-
console.log({ coords });
61-
6260
let minWidth = cardMinWidth;
6361
let width = cardWidth;
6462

src/plugin/utils/props.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,16 @@ export const sharedProps = {
2121
density: 'compact' as const,
2222
disabled: false,
2323
displayAppendIcon: undefined,
24-
displayAppendIconColor: 'primary',
24+
displayAppendIconColor: undefined,
2525
displayAppendIconSize: 'x-small',
2626
displayAppendInnerIcon: undefined,
27-
displayAppendInnerIconColor: 'secondary',
27+
displayAppendInnerIconColor: undefined,
2828
displayAppendInnerIconSize: 'x-small',
2929
displayPrependIcon: undefined,
30-
displayPrependIconColor: 'danger',
30+
displayPrependIconColor: undefined,
3131
displayPrependIconSize: 'x-small',
3232
displayPrependInnerIcon: undefined,
33-
displayPrependInnerIconColor: 'success',
33+
displayPrependInnerIconColor: undefined,
3434
displayPrependInnerIconSize: 'x-small',
3535
emptyText: 'empty',
3636
fieldOnly: false,

0 commit comments

Comments
 (0)