UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 38.5 kB
{"version":3,"file":"single-panel.mjs","sources":["../../../node_modules/lodash/_baseRange.js","../../../node_modules/lodash/_createRange.js","../../../node_modules/lodash/range.js","../../../node_modules/lodash/_baseRepeat.js","../../../node_modules/lodash/_asciiSize.js","../../../node_modules/lodash/_unicodeSize.js","../../../node_modules/lodash/_stringSize.js","../../../node_modules/lodash/_createPadding.js","../../../node_modules/lodash/padStart.js","../../../src/time-picker/panel/single-panel.tsx"],"sourcesContent":["/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nmodule.exports = baseRange;\n","var baseRange = require('./_baseRange'),\n isIterateeCall = require('./_isIterateeCall'),\n toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nmodule.exports = createRange;\n","var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor;\n\n/**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\nfunction baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n}\n\nmodule.exports = baseRepeat;\n","var baseProperty = require('./_baseProperty');\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nmodule.exports = asciiSize;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n}\n\nmodule.exports = unicodeSize;\n","var asciiSize = require('./_asciiSize'),\n hasUnicode = require('./_hasUnicode'),\n unicodeSize = require('./_unicodeSize');\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n}\n\nmodule.exports = stringSize;\n","var baseRepeat = require('./_baseRepeat'),\n baseToString = require('./_baseToString'),\n castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringSize = require('./_stringSize'),\n stringToArray = require('./_stringToArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil;\n\n/**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\nfunction createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n}\n\nmodule.exports = createPadding;\n","var createPadding = require('./_createPadding'),\n stringSize = require('./_stringSize'),\n toInteger = require('./toInteger'),\n toString = require('./toString');\n\n/**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\nfunction padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n}\n\nmodule.exports = padStart;\n","import { computed, defineComponent, ref, watch, toRefs, onMounted, reactive, nextTick } from 'vue';\nimport debounce from 'lodash/debounce';\nimport range from 'lodash/range';\nimport padStart from 'lodash/padStart';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\n\nimport { panelColProps } from './props';\nimport {\n EPickerCols,\n TWELVE_HOUR_FORMAT,\n TIME_FORMAT,\n AM,\n PM,\n MERIDIEM_LIST,\n} from '../../_common/js/time-picker/const';\nimport { closestLookup } from '../../_common/js/time-picker/utils';\nimport { useConfig } from '../../hooks/useConfig';\n\ndayjs.extend(customParseFormat);\n\nconst timeArr = [EPickerCols.hour, EPickerCols.minute, EPickerCols.second, EPickerCols.milliSecond];\n\nconst panelOffset = {\n top: 15,\n bottom: 21,\n};\n\nexport default defineComponent({\n name: 'XTimePickerPanelCol',\n props: {\n ...panelColProps(),\n position: String,\n triggerScroll: Boolean,\n onChange: Function,\n resetTriggerScroll: Function,\n isShowPanel: Boolean,\n },\n\n setup(props) {\n const { steps, value, format, position, triggerScroll } = toRefs(props);\n\n const { globalConfig } = useConfig('timePicker');\n\n const { classPrefix } = useConfig();\n\n const cols = ref<Array<EPickerCols>>([]);\n const bodyRef = ref();\n const maskRef = ref(null);\n // 每个滚动列的ref 顺序不定 所以只要有5列标识即可\n const colsRef = reactive({ 0: null, 1: null, 2: null, 3: null, 4: null, 5: null });\n\n const dayjsValue = computed(() => {\n const isStepsSet = !!steps.value.filter((v) => v > 1).length;\n\n if (value.value) return dayjs(value.value, format.value);\n\n if (isStepsSet) return dayjs().hour(0).minute(0).second(0);\n\n return dayjs();\n });\n\n const panelClassName = computed(() => `${classPrefix.value}-time-picker__panel`);\n\n // 面板打开时 触发滚动 初始化面板\n watch(\n () => dayjsValue.value,\n () => {\n if (dayjsValue.value && value.value) updateTimeScrollPos(true);\n },\n );\n\n // 时间通过外部触发时 同样触发滚动\n watch(\n () => triggerScroll.value,\n () => {\n if (triggerScroll.value) {\n updateTimeScrollPos(true);\n }\n },\n );\n\n onMounted(() => {\n const match = format.value.match(TIME_FORMAT);\n\n const [, startCol, hourCol, minuteCol, secondCol, milliSecondCol, endCol] = match;\n const { meridiem, hour, minute, second, milliSecond } = EPickerCols;\n\n const renderCol = [\n startCol && meridiem,\n hourCol && hour,\n minuteCol && minute,\n secondCol && second,\n milliSecondCol && milliSecond,\n endCol && meridiem,\n ].filter((v) => !!v);\n\n cols.value = renderCol;\n });\n\n // 获取每个时间的高度\n const getItemHeight = () => {\n const maskDom = maskRef.value?.querySelector('div');\n if (!maskDom) {\n return {\n offsetHeight: 0,\n margin: 0,\n };\n }\n return {\n offsetHeight: parseFloat(getComputedStyle(maskDom).height),\n margin: parseFloat(getComputedStyle(maskDom).marginTop),\n };\n };\n\n const timeItemCanUsed = (col: EPickerCols, el: string | number) => {\n const colIdx = timeArr.indexOf(col);\n if (colIdx !== -1) {\n const params: [number, number, number, number] = [\n dayjsValue.value.hour(),\n dayjsValue.value.minute(),\n dayjsValue.value.second(),\n dayjsValue.value.millisecond(),\n ];\n params[colIdx] = Number(el);\n return !props.disableTime?.(...params, { partial: position.value || 'start' })?.[col]?.includes(Number(el));\n }\n return true;\n };\n\n // 获取需要渲染的column\n const getColList = (col: EPickerCols) => {\n let count = 0;\n\n if (timeArr.includes(col)) {\n // hour、minute and second columns\n const colIdx = timeArr.indexOf(col);\n const colStep = steps.value[colIdx] || 1;\n\n if (col === EPickerCols.hour)\n count = TWELVE_HOUR_FORMAT.test(format.value) ? 11 : 23; // 小时最大为23 12小时制最大为11\n else if (col === EPickerCols.milliSecond) count = 999; // 毫秒最大为999\n else count = 59;\n\n const colList = range(0, count + 1, Number(colStep)).map((v) => padStart(String(v), 2, '0')) || [];\n return props.hideDisabledTime && !!props.disableTime\n ? colList.filter((t) => {\n const params: [number, number, number, number] = [\n dayjsValue.value.hour(),\n dayjsValue.value.minute(),\n dayjsValue.value.second(),\n dayjsValue.value.millisecond(),\n ];\n params[colIdx] = Number(t);\n return !props\n .disableTime?.(...params, { partial: position.value || 'start' })\n ?.[col]?.includes(Number(t));\n })\n : colList;\n }\n // meridiem column\n return MERIDIEM_LIST;\n };\n\n const getScrollDistance = (col: EPickerCols, time: number | string) => {\n if (col === EPickerCols.hour && /[h]{1}/.test(format.value))\n // eslint-disable-next-line no-param-reassign\n (time as number) %= 12; // 一定是数字,直接cast\n\n const itemIdx = getColList(col).indexOf(padStart(String(time), 2, '0'));\n const { offsetHeight, margin } = getItemHeight();\n const timeItemTotalHeight = offsetHeight + margin;\n const distance = Math.abs(Math.max(0, itemIdx) * timeItemTotalHeight);\n return distance;\n };\n\n const handleScroll = (col: EPickerCols, idx: number, e: MouseEvent) => {\n let val: number | string;\n let formattedVal: string;\n if (!props.isShowPanel) return;\n\n const scrollTop = (colsRef[idx]?.scrollTop || 0) + panelOffset.top;\n const { offsetHeight, margin } = getItemHeight();\n const timeItemTotalHeight = offsetHeight + margin;\n let colStep = Math.abs(Math.round(scrollTop / timeItemTotalHeight + 0.5));\n\n const meridiem = MERIDIEM_LIST[Math.min(colStep - 1, 1)].toLowerCase(); // 处理PM、AM与am、pm\n\n if (Number.isNaN(colStep)) colStep = 1;\n if (timeArr.includes(col)) {\n // hour、minute、 second and milliSecond\n let max = 59;\n if (col === EPickerCols.hour) max = /[h]{1}/.test(format.value) ? 11 : 23; // 小时最大为23 12小时制最大为11\n else if (col === EPickerCols.milliSecond) max = 999; // 毫秒最大为999\n\n const colIdx = timeArr.indexOf(col);\n const availableArr = range(0, max + 1, Number(steps.value[colIdx]) || 1);\n val = closestLookup(\n availableArr,\n Number(getColList(col)[Math.min(colStep - 1, max + 1, availableArr.length - 1)]),\n Number(steps.value[colIdx]) || 1,\n );\n if (Number.isNaN(val)) val = availableArr[availableArr.length - 1];\n if (col === EPickerCols.hour && cols.value.includes(EPickerCols.meridiem) && dayjsValue.value.hour() >= 12) {\n // 如果是十二小时制需要再判断\n val = Number(val) + 12;\n }\n }\n // meridiem columns\n else val = meridiem;\n\n const distance = getScrollDistance(col, val);\n if (!dayjs(dayjsValue.value).isValid() || (value.value && !dayjs(value.value, format.value, true).isValid()))\n return;\n\n if (timeArr.includes(col)) {\n if (timeItemCanUsed(col, val)) formattedVal = dayjsValue.value[col]?.(val).format(format.value);\n else formattedVal = dayjsValue.value.format(format.value);\n } else {\n const currentHour = dayjsValue.value.hour();\n if (meridiem === AM && currentHour >= 12) {\n formattedVal = dayjsValue.value.hour(currentHour - 12).format(format.value);\n } else if (meridiem === PM && currentHour < 12) {\n formattedVal = dayjsValue.value.hour(currentHour + 12).format(format.value);\n } else {\n formattedVal = dayjsValue.value.format(format.value);\n }\n }\n if (formattedVal !== value.value) props.onChange?.(formattedVal, e);\n\n if (distance !== scrollTop) {\n const scrollCtrl = colsRef[cols.value.indexOf(col)];\n\n if (!scrollCtrl || scrollCtrl.scrollTop === distance) return;\n\n scrollCtrl.scrollTo?.({\n top: distance,\n behavior: 'smooth',\n });\n }\n };\n\n const scrollToTime = (\n col: EPickerCols,\n time: number | string,\n idx: number,\n behavior: 'auto' | 'smooth' = 'auto',\n ) => {\n const distance = getScrollDistance(col, time);\n const scrollCtrl = colsRef[idx];\n if (!scrollCtrl || scrollCtrl.scrollTop === distance || !timeItemCanUsed(col, time)) return;\n\n scrollCtrl.scrollTo?.({\n top: distance,\n behavior,\n });\n };\n\n const handleTimeItemClick = (col: EPickerCols, el: string | number, idx: number, e: MouseEvent) => {\n if (!timeItemCanUsed(col, el)) return;\n if (timeArr.includes(col)) {\n if (\n col === EPickerCols.hour &&\n dayjsValue.value.format('a') === PM &&\n cols.value.includes(EPickerCols.meridiem)\n ) {\n // eslint-disable-next-line no-param-reassign\n el = Number(el) + 12;\n }\n scrollToTime(col, el, idx, 'smooth');\n } else {\n const currentHour = dayjsValue.value.hour();\n if (el === AM && currentHour >= 12) {\n props.onChange(dayjsValue.value.hour(currentHour - 12).format(format.value), e);\n } else if (el === PM && currentHour < 12) {\n props.onChange(dayjsValue.value.hour(currentHour + 12).format(format.value), e);\n }\n }\n };\n\n // update each columns scroll distance\n const updateTimeScrollPos = (isAutoScroll = false) => {\n const behavior = value.value && !isAutoScroll ? 'smooth' : 'auto';\n const isStepsSet = !!steps.value.filter((v) => v > 1).length;\n nextTick(() => {\n cols.value.forEach((col: EPickerCols, idx: number) => {\n if (!isStepsSet || (isStepsSet && value.value)) {\n // 如果没有设置大于1的steps或设置了大于1的step 正常处理滚动\n scrollToTime(\n col,\n timeArr.includes(col) ? dayjsValue.value[col]?.() : dayjsValue.value.format('a'),\n idx,\n behavior,\n );\n } else {\n // 否则初始化到每列第一个选项\n scrollToTime(col, getColList(col)?.[0], idx, behavior);\n }\n });\n });\n\n props.resetTriggerScroll();\n };\n\n const isCurrent = (col: EPickerCols, colItem: string | number) => {\n let colVal: number;\n if (col === EPickerCols.meridiem) {\n const currentMeridiem = dayjsValue.value.format('a');\n return currentMeridiem === colItem;\n }\n colVal = dayjsValue.value[col]?.();\n if (col === EPickerCols.hour && /[h]{1}/.test(format.value)) {\n colVal %= 12;\n }\n return colVal === Number(colItem);\n };\n\n return () => (\n <div class={`${panelClassName.value}-body`} ref={bodyRef}>\n <div class={`${panelClassName.value}-body-active-mask`} ref={maskRef}>\n {/* 渲染遮罩层 */}\n {cols.value.map?.((col, idx) => (\n <div key={`${col}_${idx}`} />\n ))}\n </div>\n {/* 渲染实际滚动列 */}\n {cols.value.map?.((col, idx) => (\n <ul\n key={`${col}_${idx}`}\n ref={(el) => (colsRef[idx] = el)}\n class={`${panelClassName.value}-body-scroll`}\n onScroll={debounce((e) => handleScroll(col, idx, e), 50)}\n >\n {getColList(col).map((el) => (\n <li\n key={el}\n class={[\n `${panelClassName.value}-body-scroll-item`,\n {\n [`${classPrefix.value}-is-disabled`]: !timeItemCanUsed(col, el),\n [`${classPrefix.value}-is-current`]: isCurrent(col, el),\n },\n ]}\n onClick={(e) => handleTimeItemClick(col, el, idx, e)}\n >\n {/* eslint-disable-next-line no-nested-ternary */}\n {timeArr.includes(col)\n ? TWELVE_HOUR_FORMAT.test(format.value) && col === EPickerCols.hour && el === '00'\n ? '12'\n : el\n : globalConfig.value[el === AM ? 'anteMeridiem' : 'postMeridiem']}\n </li>\n ))}\n </ul>\n ))}\n </div>\n );\n },\n});\n"],"names":["nativeCeil","Math","ceil","nativeMax","max","baseRange","start","end","step","fromRight","index","length","result","Array","_baseRange","require$$0","isIterateeCall","require$$1","toFinite","require$$2","createRange","undefined","_createRange","range","range_1","MAX_SAFE_INTEGER","nativeFloor","floor","baseRepeat","string","n","_baseRepeat","baseProperty","asciiSize","_asciiSize","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsVarRange","rsAstral","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","rsZWJ","reOptMod","rsOptVar","rsOptJoin","join","rsSeq","rsSymbol","reUnicode","RegExp","unicodeSize","lastIndex","test","_unicodeSize","hasUnicode","stringSize","_stringSize","baseToString","castSlice","require$$3","require$$4","stringToArray","require$$5","createPadding","chars","charsLength","slice","_createPadding","toInteger","toString","padStart","strLength","padStart_1","dayjs","top","bottom","name","props","position","triggerScroll","onChange","resetTriggerScroll","isShowPanel","watch","onMounted","startCol","hourCol","minuteCol","secondCol","milliSecondCol","endCol","offsetHeight","margin","params","partial","val","formattedVal","behavior","el","nextTick","scrollToTime","colVal","_createVNode"],"mappings":"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"}