8
8
:class =" displayContainerClass"
9
9
>
10
10
<div :class =" displayInputControlClasses" >
11
- <div class =" v-inline-fields--display-wrapper" >
12
- <div
13
- class =" d-inline-flex"
14
- :class =" displayValueClass"
15
- :style =" displayValueStyle"
16
- @click =" toggleField"
17
- >
18
- {{ displayValue }}
19
- </div >
20
- </div >
11
+ <DisplayedValue
12
+ v-bind =" bindingDisplay"
13
+ @toggleField =" toggleField"
14
+ />
21
15
</div >
22
16
</div >
23
17
30
24
v-model =" modelValue"
31
25
:autofocus =" !settings.fieldOnly || settings.autofocus"
32
26
:clear-icon =" theClearIcon"
33
- :color =" settings.color"
34
- :density =" settings.density"
35
27
:disabled =" loadingProp"
36
28
:error =" error"
37
29
:error-messages =" internalErrorMessages"
38
- :hide-details =" settings.hideDetails"
39
30
:label =" settings.label"
40
31
:loading =" loadingProp"
41
- :variant =" settings.variant"
42
32
width =" 100%"
43
33
@keyup.enter =" saveValue"
44
34
@keyup.esc =" closeField"
@@ -95,9 +85,9 @@ import {
95
85
TimeOpened ,
96
86
VInlineTextFieldProps ,
97
87
} from ' @/types' ;
98
- import { IconOptions , useTheme } from ' vuetify' ;
88
+ import { IconOptions } from ' vuetify' ;
99
89
import { textFieldProps } from ' ./utils/props' ;
100
- import { SaveFieldButtons } from ' ./components/index' ;
90
+ import { DisplayedValue , SaveFieldButtons } from ' ./components/index' ;
101
91
import {
102
92
useCheckForErrors ,
103
93
useToggleField ,
@@ -106,15 +96,12 @@ import {
106
96
import {
107
97
useDisplayContainerClass ,
108
98
useDisplayInputControlClasses ,
109
- useDisplayValueClass ,
110
99
useFieldContainerClass ,
111
100
useInlineFieldsContainerClass ,
112
101
} from ' ./composables/classes' ;
113
- import {
114
- useDisplayValueStyles ,
115
- useInlineFieldsContainerStyle ,
116
- } from ' ./composables/styles' ;
102
+ import { useInlineFieldsContainerStyle } from ' ./composables/styles' ;
117
103
import inlineEmits from ' ./utils/emits' ;
104
+ import { useBindingSettings } from ' ./composables/bindings' ;
118
105
import { useGetIcon } from ' ./composables/icons' ;
119
106
120
107
@@ -125,7 +112,6 @@ const slots = useSlots();
125
112
const emit = defineEmits ([... inlineEmits ]);
126
113
127
114
const iconOptions = inject <IconOptions >(Symbol .for (' vuetify:icons' ));
128
- const theme = useTheme ();
129
115
130
116
const props = withDefaults (defineProps <VInlineTextFieldProps >(), { ... textFieldProps });
131
117
let settings = reactive ({ ... attrs , ... props });
@@ -138,10 +124,6 @@ const timeOpened = ref<TimeOpened>(null);
138
124
let originalValue = modelValue .value ;
139
125
140
126
141
- // ------------------------------------------------ Binding Events & Props //
142
- const bindingSettings = computed (() => settings );
143
-
144
-
145
127
// ------------------------------------------------ Loading //
146
128
watch (() => loadingProp .value , (newVal , oldVal ) => {
147
129
if (! newVal && oldVal && showField .value ) {
@@ -151,7 +133,7 @@ watch(() => loadingProp.value, (newVal, oldVal) => {
151
133
152
134
153
135
// ------------------------------------------------ Icons //
154
- const theClearIcon = computed (() => {
136
+ const theClearIcon = computed < string > (() => {
155
137
return useGetIcon ({
156
138
icon: props .clearIcon ,
157
139
iconOptions ,
@@ -181,6 +163,37 @@ const displayValue = computed(() => {
181
163
});
182
164
183
165
166
+ // ------------------------------------------------ Binding Events & Props //
167
+ const bindingSettings = computed (() => useBindingSettings (settings ));
168
+
169
+ const bindingDisplay = computed (() => {
170
+ return {
171
+ color: settings .color ,
172
+ displayAppendIcon: props .displayAppendIcon ,
173
+ displayAppendIconColor: props .displayAppendIconColor ,
174
+ displayAppendIconSize: props .displayAppendIconSize ,
175
+ displayAppendInnerIcon: props .displayAppendInnerIcon ,
176
+ displayAppendInnerIconColor: props .displayAppendInnerIconColor ,
177
+ displayAppendInnerIconSize: props .displayAppendInnerIconSize ,
178
+ displayPrependIcon: props .displayPrependIcon ,
179
+ displayPrependIconColor: props .displayPrependIconColor ,
180
+ displayPrependIconSize: props .displayPrependIconSize ,
181
+ displayPrependInnerIcon: props .displayPrependInnerIcon ,
182
+ displayPrependInnerIconColor: props .displayPrependInnerIconColor ,
183
+ displayPrependInnerIconSize: props .displayPrependInnerIconSize ,
184
+ displayValue: displayValue .value ,
185
+ empty ,
186
+ error ,
187
+ field: ' v-text-field' ,
188
+ underlineColor: settings .underlineColor ,
189
+ underlineStyle: settings .underlineStyle ,
190
+ underlineWidth: settings .underlineWidth ,
191
+ underlined: settings .underlined ,
192
+ valueColor: settings .valueColor ,
193
+ };
194
+ });
195
+
196
+
184
197
// ------------------------------------------------ Class & Styles //
185
198
const inlineFieldsContainerClass = computed (() => useInlineFieldsContainerClass ({
186
199
density: settings .density ,
@@ -190,6 +203,7 @@ const inlineFieldsContainerClass = computed(() => useInlineFieldsContainerClass(
190
203
loading: loadingProp .value ,
191
204
loadingWait: settings .loadingWait ,
192
205
tableField: settings .tableField ,
206
+ variant: settings .variant ,
193
207
}));
194
208
195
209
const displayContainerClass = computed (() => useDisplayContainerClass ({
@@ -207,29 +221,10 @@ const fieldContainerClass = computed(() => useFieldContainerClass({
207
221
name: ' text-field' ,
208
222
}));
209
223
210
- const displayValueClass = computed (() => useDisplayValueClass (
211
- ' text-field' ,
212
- settings .valueColor ,
213
- {
214
- empty ,
215
- error ,
216
- }
217
- ));
218
-
219
224
const inlineFieldsContainerStyle = computed (() => useInlineFieldsContainerStyle ({
220
225
alignItems: settings .alignItems ,
221
226
}));
222
227
223
- const displayValueStyle = computed (() => useDisplayValueStyles ({
224
- color: settings .color ,
225
- error ,
226
- theme ,
227
- underlineColor: settings .underlineColor ,
228
- underlineStyle: settings .underlineStyle ,
229
- underlineWidth: settings .underlineWidth ,
230
- underlined: settings .underlined ,
231
- }));
232
-
233
228
234
229
// ------------------------------------------------ Key event to cancel/close field //
235
230
function closeField() {
0 commit comments