// Utils import { createNamespace } from '../utils'; // Components import Button from '../button'; import RadioGroup from '../radio-group'; import AddressItem from './Item'; const [createComponent, bem, t] = createNamespace('address-list'); export default createComponent({ props: { list: Array, modelValue: [Number, String], disabledList: Array, disabledText: String, addButtonText: String, defaultTagText: String, switchable: { type: Boolean, default: true, }, }, emits: [ 'add', 'edit', 'select', 'click-item', 'edit-disabled', 'select-disabled', 'update:modelValue', ], setup(props, { slots, emit }) { const renderItem = (item, index, disabled) => { const onEdit = () => { const name = disabled ? 'edit-disabled' : 'edit'; emit(name, item, index); }; const onClick = () => { emit('click-item', item, index); }; const onSelect = () => { const name = disabled ? 'select-disabled' : 'select'; emit(name, item, index); if (!disabled) { emit('update:modelValue', item.id); } }; return ( ); }; const renderList = (list, disabled) => { if (list) { return list.map((item, index) => renderItem(item, index, disabled)); } }; const renderBottom = () => { const onClick = () => { emit('add'); }; return (
); }; return () => { const List = renderList(props.list); const DisabledList = renderList(props.disabledList, true); const DisabledText = props.disabledText && (
{props.disabledText}
); return (
{slots.top?.()} {List} {DisabledText} {DisabledList} {slots.default?.()} {renderBottom()}
); }; }, });