import { computed, defineComponent, type PropType } from 'vue'; import { DefaultComponentProps } from '../_default'; import { BCMSPropWrapper, BCMSPropWrapperArray, BCMSPropWrapperArrayItem, } from './_wrapper'; import { BCMSNumberInput } from '../input'; import type { BCMSArrayPropMoveEventData, BCMSPropValueExtended, } from '../../types'; type PropValueType = number[]; const component = defineComponent({ props: { ...DefaultComponentProps, prop: { type: Object as PropType, required: true, }, basePropPath: String, }, emits: { update: (_value: number, _propPath: string) => { return true; }, move: (_propPath: string, _data: BCMSArrayPropMoveEventData) => { return true; }, add: (_propPath: string) => { return true; }, remove: (_propPath: string) => { return true; }, }, setup(props, ctx) { const propsValue = computed(() => { return props.prop.data as PropValueType; }); return () => (
{props.prop.array ? ( { ctx.emit('add', props.basePropPath + '.data'); }} > {(props.prop.data as PropValueType).map((_, valueIndex) => { return ( { ctx.emit('move', props.basePropPath + '.data', data); }} onRemove={(index) => { ctx.emit('remove', props.basePropPath + '.data.' + index); }} > { ctx.emit( 'update', inputValue, props.basePropPath + '.data.' + valueIndex ); }} /> ); })} ) : ( { ctx.emit('update', value, props.basePropPath + '.data.0'); }} /> )}
); }, }); export default component;