51 lines
1.3 KiB
JavaScript
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
|
|
};
|