acdr-ui/dist/dev/mp-weixin/node-modules/wot-design-uni/components/wd-col-picker/wd-col-picker.js.map

1 line
24 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"file":"wd-col-picker.js","sources":["../../../../../../../node_modules/wot-design-uni/components/wd-col-picker/wd-col-picker.vue","../../../../../../../uniComponent:/RDovQXBwL1dvcmsvYWRkci9hY2RyLXVpL25vZGVfbW9kdWxlcy93b3QtZGVzaWduLXVuaS9jb21wb25lbnRzL3dkLWNvbC1waWNrZXIvd2QtY29sLXBpY2tlci52dWU"],"sourcesContent":["<template>\n <view :class=\"`wd-col-picker ${cell.border.value ? 'is-border' : ''} ${customClass}`\" :style=\"customStyle\">\n <view class=\"wd-col-picker__field\" @click=\"showPicker\">\n <slot v-if=\"useDefaultSlot\"></slot>\n <view\n v-else\n :class=\"`wd-col-picker__cell ${disabled && 'is-disabled'} ${readonly && 'is-readonly'} ${alignRight && 'is-align-right'} ${\n error && 'is-error'\n } ${size && 'is-' + size}`\"\n >\n <view\n v-if=\"label || useLabelSlot\"\n :class=\"`wd-col-picker__label ${isRequired && 'is-required'} ${customLabelClass}`\"\n :style=\"labelWidth ? 'min-width:' + labelWidth + ';max-width:' + labelWidth + ';' : ''\"\n >\n <template v-if=\"label\">{{ label }}</template>\n <slot v-else name=\"label\"></slot>\n </view>\n <view class=\"wd-col-picker__body\">\n <view class=\"wd-col-picker__value-wraper\">\n <view\n :class=\"`wd-col-picker__value ${ellipsis && 'is-ellipsis'} ${customValueClass} ${showValue ? '' : 'wd-col-picker__value--placeholder'}`\"\n >\n {{ showValue || placeholder || translate('placeholder') }}\n </view>\n <wd-icon v-if=\"!disabled && !readonly\" custom-class=\"wd-col-picker__arrow\" name=\"arrow-right\" />\n </view>\n <view v-if=\"errorMessage\" class=\"wd-col-picker__error-message\">{{ errorMessage }}</view>\n </view>\n </view>\n </view>\n <wd-action-sheet\n v-model=\"pickerShow\"\n :duration=\"250\"\n :title=\"title || translate('title')\"\n :close-on-click-modal=\"closeOnClickModal\"\n :z-index=\"zIndex\"\n :safe-area-inset-bottom=\"safeAreaInsetBottom\"\n @open=\"handlePickerOpend\"\n @close=\"handlePickerClose\"\n >\n <view class=\"wd-col-picker__selected\">\n <scroll-view :scroll-x=\"true\" scroll-with-animation :scroll-left=\"scrollLeft\">\n <view class=\"wd-col-picker__selected-container\">\n <view\n v-for=\"(select, colIndex) in selectList\"\n :key=\"colIndex\"\n :class=\"`wd-col-picker__selected-item ${colIndex === currentCol && 'is-selected'}`\"\n @click=\"handleColClick(colIndex)\"\n >\n {{ selectShowList[colIndex] || translate('select') }}\n </view>\n <view class=\"wd-col-picker__selected-line\" :style=\"lineStyle\"></view>\n </view>\n </scroll-view>\n </view>\n <view class=\"wd-col-picker__list-container\">\n <view\n v-for=\"(col, colIndex) in selectList\"\n :key=\"colIndex\"\n class=\"wd-col-picker__list\"\n :style=\"colIndex === currentCol ? 'display: block;' : 'display: none;'\"\n >\n <view\n v-for=\"(item, index) in col\"\n :key=\"index\"\n :class=\"`wd-col-picker__list-item ${pickerColSelected[colIndex] && item[valueKey] === pickerColSelected[colIndex] && 'is-selected'} ${\n item.disabled && 'is-disabled'\n }`\"\n @click=\"chooseItem(colIndex, index)\"\n >\n <view>\n <view class=\"wd-col-picker__list-item-label\">{{ item[labelKey] }}</view>\n <view v-if=\"item[tipKey]\" class=\"wd-col-picker__list-item-tip\">{{ item[tipKey] }}</view>\n </view>\n <wd-icon custom-class=\"wd-col-picker__checked\" name=\"check\"></wd-icon>\n </view>\n <view v-if=\"loading\" class=\"wd-col-picker__loading\">\n <wd-loading :color=\"loadingColor\" />\n </view>\n </view>\n </view>\n </wd-action-sheet>\n </view>\n</template>\n<script lang=\"ts\">\nexport default {\n name: 'wd-col-picker',\n options: {\n addGlobalClass: true,\n virtualHost: true,\n styleIsolation: 'shared'\n }\n}\n</script>\n\n<script lang=\"ts\" setup>\nimport { computed, getCurrentInstance, onMounted, ref, watch } from 'vue'\nimport { debounce, getRect, isArray, isBoolean, isFunction } from '../common/util'\nimport { useCell } from '../composables/useCell'\nimport { FORM_KEY, type FormItemRule } from '../wd-form/types'\nimport { useParent } from '../composables/useParent'\nimport { useTranslate } from '../composables/useTranslate'\nimport { colPickerProps, type ColPickerExpose } from './types'\n\nconst { translate } = useTranslate('col-picker')\n\nconst $container = '.wd-col-picker__selected-container'\nconst $item = '.wd-col-picker__selected-item'\n\nconst props = defineProps(colPickerProps)\nconst emit = defineEmits(['close', 'update:modelValue', 'confirm'])\n\nconst pickerShow = ref<boolean>(false)\nconst currentCol = ref<number>(0)\nconst selectList = ref<Record<string, any>[][]>([])\nconst pickerColSelected = ref<(string | number)[]>([])\nconst selectShowList = ref<Record<string, any>[]>([])\nconst loading = ref<boolean>(false)\nconst isChange = ref<boolean>(false)\nconst lastSelectList = ref<Record<string, any>[][]>([])\nconst lastPickerColSelected = ref<(string | number)[]>([])\nconst lineStyle = ref<string>('')\nconst scrollLeft = ref<number>(0)\nconst inited = ref<boolean>(false)\nconst isCompleting = ref<boolean>(false)\nconst { proxy } = getCurrentInstance() as any\n\nconst cell = useCell()\n\nconst updateLineAndScroll = debounce(function (animation = true) {\n setLineStyle(animation)\n lineScrollIntoView()\n}, 50)\n\nconst showValue = computed(() => {\n const selectedItems = (props.modelValue || []).map((item, colIndex) => {\n return getSelectedItem(item, colIndex, selectList.value)\n })\n\n if (props.displayFormat) {\n return props.displayFormat(selectedItems)\n } else {\n return selectedItems\n .map((item) => {\n return item[props.labelKey]\n })\n .join('')\n }\n})\n\nwatch(\n () => props.modelValue,\n (newValue) => {\n if (newValue === pickerColSelected.value) return\n pickerColSelected.value = newValue\n newValue.map((item, colIndex) => {\n return getSelectedItem(item, colIndex, selectList.value)[props.labelKey]\n })\n handleAutoComplete()\n },\n {\n deep: true,\n immediate: true\n }\n)\n\nwatch(\n () => props.columns,\n (newValue, oldValue) => {\n if (newValue.length && !isArray(newValue[0])) {\n console.error('[wot design] error(wd-col-picker): the columns props of wd-col-picker should be a two-dimensional array')\n return\n }\n if (newValue.length === 0 && !oldValue) return\n\n const newSelectedList = newValue.slice(0)\n\n selectList.value = newSelectedList\n\n selectShowList.value = pickerColSelected.value.map((item, colIndex) => {\n return getSelectedItem(item, colIndex, newSelectedList)[props.labelKey]\n })\n lastSelectList.value = newSelectedList\n\n if (newSelectedList.length > 0) {\n currentCol.value = newSelectedList.length - 1\n }\n },\n {\n deep: true,\n immediate: true\n }\n)\n\nwatch(\n () => props.columnChange,\n (fn) => {\n if (fn && !isFunction(fn)) {\n console.error('The type of columnChange must be Function')\n }\n },\n {\n deep: true,\n immediate: true\n }\n)\n\nwatch(\n () => props.displayFormat,\n (fn) => {\n if (fn && !isFunction(fn)) {\n console.error('The type of displayFormat must be Function')\n }\n },\n {\n deep: true,\n immediate: true\n }\n)\n\nwatch(\n () => props.beforeConfirm,\n (fn) => {\n if (fn && !isFunction(fn)) {\n console.error('The type of beforeConfirm must be Function')\n }\n },\n {\n deep: true,\n immediate: true\n }\n)\n\nconst { parent: form } = useParent(FORM_KEY)\n\n// 表单校验错误信息\nconst errorMessage = computed(() => {\n if (form && props.prop && form.errorMessages && form.errorMessages[props.prop]) {\n return form.errorMessages[props.prop]\n } else {\n return ''\n }\n})\n\n// 是否展示必填\nconst isRequired = computed(() => {\n let formRequired = false\n if (form && form.props.rules) {\n const rules = form.props.rules\n for (const key in rules) {\n if (Object.prototype.hasOwnProperty.call(rules, key) && key === props.prop && Array.isArray(rules[key])) {\n formRequired = rules[key].some((rule: FormItemRule) => rule.required)\n }\n }\n }\n return props.required || props.rules.some((rule) => rule.required) || formRequired\n})\n\nonMounted(() => {\n inited.value = true\n})\n\n// 打开弹框\nfunction open() {\n showPicker()\n}\n// 关闭弹框\nfunction close() {\n handlePickerClose()\n}\nfunction handlePickerOpend() {\n updateLineAndScroll(false)\n}\n\nfunction handlePickerClose() {\n pickerShow.value = false\n // 如果目前用户正在选择需要在popup关闭时将数据重置回上次数据popup 关闭时间 250\n if (isChange.value) {\n setTimeout(() => {\n selectList.value = lastSelectList.value.slice(0)\n pickerColSelected.value = lastPickerColSelected.value.slice(0)\n selectShowList.value = lastPickerColSelected.value.map((item, colIndex) => {\n return getSelectedItem(item, colIndex, lastSelectList.value)[props.labelKey]\n })\n currentCol.value = lastSelectList.value.length - 1\n isChange.value = false\n }, 250)\n }\n emit('close')\n}\nfunction showPicker() {\n const { disabled, readonly } = props\n\n if (disabled || readonly) return\n pickerShow.value = true\n lastPickerColSelected.value = pickerColSelected.value.slice(0)\n lastSelectList.value = selectList.value.slice(0)\n}\n\nfunction getSelectedItem(value: string | number, colIndex: number, selectList: Record<string, any>[][]) {\n const { valueKey, labelKey } = props\n if (selectList[colIndex]) {\n const selecteds = selectList[colIndex].filter((item) => {\n return item[valueKey] === value\n })\n\n if (selecteds.length > 0) {\n return selecteds[0]\n }\n }\n\n return {\n [valueKey]: value,\n [labelKey]: ''\n }\n}\n\nfunction chooseItem(colIndex: number, index: number) {\n const item = selectList.value[colIndex][index]\n if (item.disabled) return\n\n const newPickerColSelected = pickerColSelected.value.slice(0, colIndex)\n newPickerColSelected.push(item[props.valueKey])\n isChange.value = true\n pickerColSelected.value = newPickerColSelected\n selectList.value = selectList.value.slice(0, colIndex + 1)\n selectShowList.value = newPickerColSelected.map((item, colIndex) => {\n return getSelectedItem(item, colIndex, selectList.value)[props.labelKey]\n })\n handleColChange(colIndex, item, index)\n}\nfunction handleColChange(colIndex: number, item: Record<string, any>, index: number, callback?: () => void) {\n loading.value = true\n const { columnChange, beforeConfirm } = props\n columnChange &&\n columnChange({\n selectedItem: item,\n index: colIndex,\n rowIndex: index,\n resolve: (nextColumn: Record<string, any>[]) => {\n if (!isArray(nextColumn)) {\n console.error('[wot design] error(wd-col-picker): the data of each column of wd-col-picker should be an array')\n return\n }\n\n const newSelectList = selectList.value.slice(0)\n newSelectList[colIndex + 1] = nextColumn\n\n selectList.value = newSelectList\n loading.value = false\n currentCol.value = colIndex + 1\n\n updateLineAndScroll(true)\n if (typeof callback === 'function') {\n isCompleting.value = false\n selectShowList.value = pickerColSelected.value.map((item, colIndex) => {\n return getSelectedItem(item, colIndex, selectList.value)[props.labelKey]\n })\n callback()\n }\n },\n finish: (isOk?: boolean) => {\n // 每设置展示数据回显\n if (typeof callback === 'function') {\n loading.value = false\n isCompleting.value = false\n return\n }\n if (isBoolean(isOk) && !isOk) {\n loading.value = false\n return\n }\n\n if (beforeConfirm) {\n beforeConfirm(\n pickerColSelected.value,\n pickerColSelected.value.map((item, colIndex) => {\n return getSelectedItem(item, colIndex, selectList.value)\n }),\n (isPass: boolean) => {\n if (isPass) {\n onConfirm()\n } else {\n loading.value = false\n }\n }\n )\n } else {\n onConfirm()\n }\n }\n })\n}\nfunction onConfirm() {\n isChange.value = false\n loading.value = false\n pickerShow.value = false\n\n emit('update:modelValue', pickerColSelected.value)\n emit('confirm', {\n value: pickerColSelected.value,\n selectedItems: pickerColSelected.value.map((item, colIndex) => {\n return getSelectedItem(item, colIndex, selectList.value)\n })\n })\n}\nfunction handleColClick(index: number) {\n isChange.value = true\n currentCol.value = index\n updateLineAndScroll(true)\n}\n/**\n * @description 更新navBar underline的偏移量\n * @param {Boolean} animation 是否伴随动画\n */\nfunction setLineStyle(animation = true) {\n if (!inited.value) return\n getRect($item, true, proxy).then((rects) => {\n const rect = rects[currentCol.value]\n // const width = lineWidth || (slidableNum < items.length ? rect.width : (rect.width - 14))\n const width = 16\n let left = rects.slice(0, currentCol.value).reduce((prev: any, curr: any) => prev + curr.width, 0)\n left += (Number(rect.width) - width) / 2\n const transition = animation ? 'transition: width 300ms ease, transform 300ms ease;' : ''\n\n const lineStyleTemp = `\n transform: translateX(${left}px);\n ${transition}\n `\n // 防止重复绘制\n if (lineStyle.value !== lineStyleTemp) {\n lineStyle.value = lineStyleTemp\n }\n })\n}\n/**\n * @description scroll-view滑动到active的tab_nav\n */\nfunction lineScrollIntoView() {\n if (!inited.value) return\n Promise.all([getRect($item, true, proxy), getRect($container, false, proxy)]).then(([navItemsRects, navRect]) => {\n if (!isArray(navItemsRects) || navItemsRects.length === 0) return\n // 选中元素\n const selectItem = navItemsRects[currentCol.value]\n // 选中元素之前的节点的宽度总和\n const offsetLeft = navItemsRects.slice(0, currentCol.value).reduce((prev, curr) => prev + Number(curr.width), 0)\n // scroll-view滑动到selectItem的偏移量\n scrollLeft.value = offsetLeft - ((navRect as any).width - Number(selectItem.width)) / 2\n })\n}\n\n// 递归列数据补齐\nfunction diffColumns(colIndex: number) {\n // colIndex 为 -1 时item 为空对象,>=0 时则具有 value 属性\n const item = colIndex === -1 ? {} : { [props.valueKey]: props.modelValue[colIndex] }\n handleColChange(colIndex, item, -1, () => {\n // 如果 columns 长度还小于 value 长度colIndex + 1继续递归补齐\n if (selectList.value.length < props.modelValue.length) {\n diffColumns(colIndex + 1)\n }\n })\n}\nfunction handleAutoComplete() {\n if (props.autoComplete) {\n // 如果 columns 数组长度为空,或者长度小于 value 的长度,自动触发 columnChange 来补齐数据\n if (selectList.value.length < props.modelValue.length || selectList.value.length === 0) {\n // isCompleting 是否在自动补全,锁操作\n if (!isCompleting.value) {\n // 如果 columns 长度为空,则传入的 colIndex 为 -1\n const colIndex = selectList.value.length === 0 ? -1 : selectList.value.length - 1\n diffColumns(colIndex)\n }\n isCompleting.value = true\n }\n }\n}\n\ndefineExpose<ColPickerExpose>({\n close,\n open\n})\n</script>\n\n<style lang=\"scss\" scoped>\n@import './index.scss';\n</style>\n","import Component from 'D:/App/Work/addr/acdr-ui/node_modules/wot-design-uni/components/wd-col-picker/wd-col-picker.vue'\nwx.createComponent(Component)"],"names":["useTranslate","ref","getCurrentInstance","useCell","debounce","computed","watch","isArray","isFunction","useParent","FORM_KEY","onMounted","selectList","item","colIndex","isBoolean","getRect"],"mappings":"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","x_google_ignoreList":[0]}