tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 7.69 kB
Source Map (JSON)
{"version":3,"file":"picker-item.mjs","sources":["../../src/picker/picker-item.tsx"],"sourcesContent":["import { ref, computed, onMounted, defineComponent, PropType, watch } from 'vue';\nimport config from '../config';\nimport Picker from './picker.class';\nimport { PickerColumnItem, PickerValue } from './type';\nimport { usePrefixClass } from '../hooks/useClass';\n\nconst { prefix } = config;\n\nexport default defineComponent({\n name: `${prefix}-picker-item`,\n props: {\n options: {\n type: Array as PropType<PickerColumnItem[]>,\n },\n value: {\n type: [String, Number] as PropType<PickerValue>,\n default: undefined,\n },\n renderLabel: {\n type: Function,\n default: undefined,\n },\n onPick: {\n type: Function,\n default: undefined,\n },\n },\n emits: ['pick'],\n setup(props, context) {\n const pickerItemClass = usePrefixClass('picker-item');\n\n let picker: Picker | null = null;\n const root = ref();\n const getIndexByValue = (val: number | string | undefined) => {\n let defaultIndex = 0;\n if (val !== undefined) {\n defaultIndex = props.options?.findIndex((item: any) => item?.value === val);\n }\n return defaultIndex < 0 ? 0 : defaultIndex;\n };\n\n const className = computed(() => `${pickerItemClass.value}`);\n const itemClassName = computed(() => [`${pickerItemClass.value}__item`]);\n const setIndex = (index: number) => {\n if (picker) {\n picker.updateItems();\n picker.updateIndex(index, {\n isChange: false,\n });\n }\n };\n const setValue = (value: number | string | undefined) => {\n if (picker) {\n picker.updateItems();\n picker.updateIndex(getIndexByValue(value), {\n isChange: false,\n });\n }\n };\n const setOptions = () => {\n picker?.update();\n };\n const setUpdateItems = () => {\n picker?.updateItems();\n };\n context.expose({\n setIndex,\n setValue,\n setOptions,\n setUpdateItems,\n });\n\n onMounted(() => {\n if (root.value) {\n picker = new Picker({\n el: root.value,\n defaultIndex: getIndexByValue(props.value) || 0,\n onChange: (index: number) => {\n const curItem = props.options[index];\n const changeValue = { value: curItem.value, index };\n props.onPick?.(changeValue);\n },\n });\n }\n });\n\n watch(\n () => props.options,\n () => {\n picker?.updateItems();\n },\n { flush: 'post', deep: true },\n );\n\n return () => {\n return (\n <ul ref={root} class={className.value}>\n {(props.options || []).map((option, index) => (\n <li key={index} class={itemClassName.value}>\n {context.slots.option ? (\n context.slots.option(option, index)\n ) : (\n <>{props.renderLabel ? props.renderLabel(option) : option?.label}</>\n )}\n </li>\n ))}\n </ul>\n );\n };\n },\n});\n"],"names":["prefix","config","defineComponent","name","props","options","type","Array","value","String","Number","default","renderLabel","Function","onPick","emits","setup","context","pickerItemClass","usePrefixClass","picker","root","ref","getIndexByValue","val","defaultIndex","_props$options","findIndex","item","className","computed","concat","itemClassName","setIndex","index","updateItems","updateIndex","isChange","setValue","setOptions","_picker","update","setUpdateItems","_picker2","expose","onMounted","Picker","el","onChange","_props$onPick","curItem","changeValue","call","watch","_picker3","flush","deep","_createVNode","map","option","slots","_Fragment","label"],"mappings":"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"}