tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 10.4 kB
Source Map (JSON)
{"version":3,"file":"picker-item.mjs","sources":["../../src/picker/picker-item.tsx"],"sourcesContent":["import { ref, computed, onMounted, defineComponent, PropType, watch, inject, nextTick } from 'vue';\nimport { get as lodashGet } from 'lodash-es';\nimport config from '../config';\nimport Picker from './picker.class';\nimport { KeysType } from '../common';\nimport { PickerColumnItem, PickerValue, TdPickerProps } 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 swipeDuration: {\n type: [String, Number],\n default: 300,\n },\n },\n emits: ['pick'],\n setup(props, context) {\n const pickerItemClass = usePrefixClass('picker-item');\n\n const pickerProps: TdPickerProps = inject('picker', undefined);\n\n const keys = computed(() => pickerProps && (pickerProps.keys?.value as KeysType));\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) => lodashGet(item, keys.value?.value ?? 'value') === val);\n }\n return defaultIndex < 0 ? 0 : defaultIndex;\n };\n\n const className = computed(() => `${pickerItemClass.value}`);\n\n const updatePickerWithNextTick = (index: number) => {\n if (picker) {\n picker.updateItems();\n nextTick(() => {\n picker.updateIndex(index, { isChange: false });\n });\n }\n };\n\n const setIndex = (index: number) => {\n updatePickerWithNextTick(index);\n };\n\n const setValue = (value: number | string | undefined) => {\n const index = getIndexByValue(value);\n updatePickerWithNextTick(index);\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 keys: keys.value,\n defaultPickerColumns: props.options,\n onChange: (index: number) => {\n const curItem = props.options[index];\n const changeValue = { value: lodashGet(curItem, keys.value?.value ?? 'value'), index };\n props.onPick?.(changeValue);\n },\n swipeDuration: props.swipeDuration,\n });\n }\n });\n\n watch(\n () => props.options,\n () => {\n picker?.updateOptions(props.options);\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\n key={index}\n class={[\n `${pickerItemClass.value}__item`,\n {\n [`${pickerItemClass.value}__item--disabled`]: lodashGet(option, keys.value?.disabled ?? 'disabled'),\n },\n ]}\n >\n {context.slots.option ? (\n context.slots.option(option, index)\n ) : (\n <>{props.renderLabel ? props.renderLabel(option) : lodashGet(option, keys.value?.label ?? '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","swipeDuration","emits","setup","context","pickerItemClass","usePrefixClass","pickerProps","inject","keys","computed","_pickerProps$keys","picker","root","ref","getIndexByValue","val","defaultIndex","_props$options","findIndex","item","_keys$value$value","_keys$value","lodashGet","className","concat","updatePickerWithNextTick","index","updateItems","nextTick","updateIndex","isChange","setIndex","setValue","setOptions","_picker","update","setUpdateItems","_picker2","expose","onMounted","Picker","el","defaultPickerColumns","onChange","_keys$value$value2","_keys$value2","_props$onPick","curItem","changeValue","call","watch","_picker3","_picker4","updateOptions","flush","deep","_createVNode","map","option","_keys$value$disabled","_keys$value3","_keys$value$label","_keys$value4","_defineProperty","disabled","slots","_Fragment","label"],"mappings":"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"}