import { defineComponent, ref, watch } from "vue"
import { defaultFieldProps } from "../utils"
import { Rate } from "vant"
import MpField from "./MpField.jsx"
import { pick } from "lodash-es"

/**
 * MpRate 评分
 * @version 1.0.0
 */
export default defineComponent({
	name: "MpRate",
	props: {
		...defaultFieldProps,

		modelValue: { type: Number, default: 2 },
	},
	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", Number(value))
		}

		const fieldProps = pick(props, Object.keys(defaultFieldProps))

		return () => (
			<MpField {...fieldProps}>
				{{
					...slots,
					input: () => (
						<Rate
							v-model={componentValue.value}
							readonly={props.readonly}
							disabled={props.disabled}
							clearable={true}
							onChange={onChange}
							{...props.defaultProps}
						></Rate>
					),
				}}
			</MpField>
		)
	},
})
