jobsys-mpower
Version:
Enhanced component based on Taro & NutUI
51 lines (44 loc) • 1.16 kB
JSX
import { defineComponent, ref, watch } from "vue"
import { defaultFieldProps } from "../utils"
import MpField from "./MpField.jsx"
import { pick } from "lodash-es"
import MpUploader from "../uploader/MpUploader.jsx"
/**
* MpFieldUploader Uploader in form
* @version 1.0.0
*/
export default defineComponent({
name: "MpFieldUploader",
props: {
...defaultFieldProps,
modelValue: { type: [Array, Object], default: () => [] },
},
emits: ["update:modelValue"],
setup(props, { emit, slots }) {
const componentValue = ref(props.modelValue)
watch(
() => props.modelValue,
() => (componentValue.value = props.modelValue),
)
const onChange = (value) => {
emit("update:modelValue", value)
}
const fieldProps = pick(props, Object.keys(defaultFieldProps))
return () => (
<MpField {...fieldProps}>
{{
...slots,
input: () => (
<MpUploader
v-model={componentValue.value}
disabled={props.disabled}
readonly={props.readonly}
{...props.defaultProps}
onChange={onChange}
></MpUploader>
),
}}
</MpField>
)
},
})