1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| import type { VbenFormSchema } from '#/adapter/form';
|
| import { markRaw } from 'vue';
|
| import NumberRangeInput from './number-range-input.vue';
|
| export { default as NumberRangeInput } from './number-range-input.vue';
|
| export type NumberRangeValue = [number | undefined, number | undefined];
|
| function splitNumberRange(minFieldName: string, maxFieldName: string) {
| return (
| value: NumberRangeValue | undefined,
| setValue: (fieldName: string, value: number | undefined) => void,
| ) => {
| setValue(minFieldName, value?.[0]);
| setValue(maxFieldName, value?.[1]);
| return undefined;
| };
| }
|
| export function buildNumberRangeSchema(
| label: string,
| fieldName: string,
| minFieldName: string,
| maxFieldName: string,
| precision: number,
| ): VbenFormSchema {
| return {
| component: markRaw(NumberRangeInput),
| componentProps: {
| min: 0,
| precision,
| },
| fieldName,
| label,
| valueFormat: splitNumberRange(minFieldName, maxFieldName),
| };
| }
|
|