ckgl/node_modules/vant/es/date-picker/utils.mjs
2024-12-21 13:52:42 +08:00

51 lines
1.3 KiB
JavaScript

import { extend, padZero, makeArrayProp, clamp } from "../utils/index.mjs";
import { pickerSharedProps } from "../picker/Picker.mjs";
const sharedProps = extend({}, pickerSharedProps, {
modelValue: makeArrayProp(),
filter: Function,
formatter: {
type: Function,
default: (type, option) => option
}
});
const pickerInheritKeys = Object.keys(pickerSharedProps);
function times(n, iteratee) {
if (n < 0) {
return [];
}
const result = Array(n);
let index = -1;
while (++index < n) {
result[index] = iteratee(index);
}
return result;
}
const getMonthEndDay = (year, month) => 32 - new Date(year, month - 1, 32).getDate();
const genOptions = (min, max, type, formatter, filter, values) => {
const options = times(max - min + 1, (index) => {
const value = padZero(min + index);
return formatter(type, {
text: value,
value
});
});
return filter ? filter(type, options, values) : options;
};
const formatValueRange = (values, columns) => values.map((value, index) => {
const column = columns[index];
if (column.length) {
const minValue = +column[0].value;
const maxValue = +column[column.length - 1].value;
return padZero(clamp(+value, minValue, maxValue));
}
return value;
});
export {
formatValueRange,
genOptions,
getMonthEndDay,
pickerInheritKeys,
sharedProps,
times
};