2024-10-18 14:50:18 +00:00
|
|
|
<script>
|
|
|
|
import { isNotEmpty } from '@primeuix/utils';
|
|
|
|
import BaseComponent from '@primevue/core/basecomponent';
|
|
|
|
|
|
|
|
export default {
|
|
|
|
name: 'BaseEditableHolder',
|
|
|
|
extends: BaseComponent,
|
|
|
|
emits: ['update:modelValue', 'value-change'],
|
|
|
|
props: {
|
|
|
|
modelValue: {
|
|
|
|
type: null,
|
|
|
|
default: undefined
|
|
|
|
},
|
|
|
|
defaultValue: {
|
|
|
|
type: null,
|
|
|
|
default: undefined
|
|
|
|
},
|
|
|
|
name: {
|
|
|
|
type: String,
|
|
|
|
default: undefined
|
|
|
|
},
|
|
|
|
invalid: {
|
|
|
|
type: Boolean,
|
2024-10-18 16:29:47 +00:00
|
|
|
default: undefined
|
2024-10-18 14:50:18 +00:00
|
|
|
},
|
|
|
|
disabled: {
|
|
|
|
type: Boolean,
|
|
|
|
default: false
|
|
|
|
},
|
|
|
|
formControl: {
|
|
|
|
type: Object,
|
|
|
|
default: undefined
|
|
|
|
}
|
|
|
|
},
|
|
|
|
inject: {
|
|
|
|
$parentInstance: {
|
|
|
|
default: undefined
|
|
|
|
},
|
|
|
|
$pcForm: {
|
|
|
|
default: undefined
|
|
|
|
}
|
|
|
|
},
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
d_value: this.defaultValue || this.modelValue
|
|
|
|
};
|
|
|
|
},
|
|
|
|
watch: {
|
|
|
|
modelValue(newValue) {
|
|
|
|
this.d_value = newValue;
|
|
|
|
},
|
2024-10-22 09:40:03 +00:00
|
|
|
defaultValue(newValue) {
|
|
|
|
this.d_value = newValue;
|
|
|
|
},
|
2024-10-18 14:50:18 +00:00
|
|
|
formControl: {
|
|
|
|
immediate: true,
|
|
|
|
handler(newValue) {
|
|
|
|
this.formField = this.$pcForm?.register?.(this.$formName, newValue) || {};
|
|
|
|
}
|
|
|
|
},
|
|
|
|
$formName: {
|
|
|
|
immediate: true,
|
|
|
|
handler(newValue) {
|
|
|
|
this.formField = this.$pcForm?.register?.(newValue, this.formControl) || {};
|
|
|
|
}
|
2024-10-22 10:26:56 +00:00
|
|
|
},
|
|
|
|
$formDefaultValue: {
|
|
|
|
immediate: true,
|
|
|
|
handler(newValue) {
|
|
|
|
this.d_value !== newValue && (this.d_value = newValue);
|
|
|
|
}
|
2024-10-18 14:50:18 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
formField: {},
|
|
|
|
methods: {
|
2024-10-23 13:04:38 +00:00
|
|
|
writeValue(value, event) {
|
2024-10-23 04:06:32 +00:00
|
|
|
if (this.controlled) {
|
2024-10-22 09:40:03 +00:00
|
|
|
this.d_value = value;
|
|
|
|
this.$emit('update:modelValue', value);
|
|
|
|
}
|
2024-10-18 14:50:18 +00:00
|
|
|
|
2024-10-23 04:06:32 +00:00
|
|
|
this.$emit('value-change', value);
|
|
|
|
|
2024-10-18 14:50:18 +00:00
|
|
|
this.formField.onChange?.({ originalEvent: event, value });
|
|
|
|
}
|
|
|
|
},
|
|
|
|
computed: {
|
|
|
|
$filled() {
|
|
|
|
return isNotEmpty(this.d_value);
|
|
|
|
},
|
|
|
|
$invalid() {
|
2024-10-18 16:29:47 +00:00
|
|
|
return this.invalid ?? this.$pcForm?.states?.[this.$formName]?.invalid;
|
2024-10-18 14:50:18 +00:00
|
|
|
},
|
|
|
|
$formName() {
|
2024-10-20 23:35:26 +00:00
|
|
|
return this.formControl?.name || this.name;
|
2024-10-18 14:50:18 +00:00
|
|
|
},
|
2024-10-22 10:26:56 +00:00
|
|
|
$formDefaultValue() {
|
|
|
|
return this.d_value ?? this.$pcForm?.initialValues?.[this.$formName];
|
|
|
|
},
|
2024-10-23 04:06:32 +00:00
|
|
|
controlled() {
|
2024-10-24 13:55:53 +00:00
|
|
|
return this.$inProps.hasOwnProperty('modelValue') || (!this.$inProps.hasOwnProperty('modelValue') && !this.$inProps.hasOwnProperty('defaultValue'));
|
2024-10-22 09:40:03 +00:00
|
|
|
},
|
2024-10-18 14:50:18 +00:00
|
|
|
// @deprecated use $filled instead
|
|
|
|
filled() {
|
|
|
|
return this.$filled;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
</script>
|