{"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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"}