UNPKG

tdesign-mobile-vue

Version:
1 lines 10.9 kB
{"version":3,"file":"picker-item.mjs","sources":["../../src/picker/picker-item.tsx"],"sourcesContent":["import { ref, computed, onMounted, onBeforeUnmount, defineComponent, PropType, watch, inject } 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, PickerWheelConfig, TdPickerProps } from './type';\nimport { usePrefixClass } from '../hooks/useClass';\nimport { DEFAULT_WHEEL_CONFIG } from './constants';\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 wheelConfig: {\n type: Object as PropType<Required<PickerWheelConfig>>,\n default: () => DEFAULT_WHEEL_CONFIG,\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 updatePickerIndex = (index: number) => {\n if (picker) {\n picker.updateItems();\n picker.updateIndex(index, { isChange: false });\n }\n };\n\n const setIndex = (index: number) => {\n updatePickerIndex(index);\n };\n\n const setValue = (value: number | string | undefined) => {\n const index = getIndexByValue(value);\n updatePickerIndex(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 wheelConfig: props.wheelConfig,\n });\n }\n });\n\n onBeforeUnmount(() => {\n // 销毁 picker 实例,清理 ResizeObserver 等资源\n picker?.destroy();\n picker = null;\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 <>\n {props.renderLabel\n ? props.renderLabel(option, index)\n : lodashGet(option, keys.value?.label ?? 'label')}\n </>\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","wheelConfig","Object","DEFAULT_WHEEL_CONFIG","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","updatePickerIndex","index","updateItems","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","onBeforeUnmount","_picker3","destroy","watch","_picker4","_picker5","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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"}