@dative-gpi/foundation-shared-components 1.0.140 → 1.0.142
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/FSCalendarTwin.vue +1 -5
- package/components/FSInstantPicker.vue +2 -2
- package/components/fields/FSDateTimeRangeDialog.vue +160 -0
- package/components/fields/FSDateTimeRangeField.vue +17 -110
- package/components/fields/FSTermField.vue +44 -35
- package/components/lists/FSDataTableUI.vue +6 -6
- package/components/lists/FSSimpleList.vue +2 -0
- package/components/lists/FSSimpleListItem.vue +0 -1
- package/components/tiles/FSTile.vue +1 -1
- package/package.json +4 -4
- package/styles/components/fs_calendar.scss +1 -0
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<FSCol
|
|
3
|
-
width="hug"
|
|
4
|
-
>
|
|
2
|
+
<FSCol>
|
|
5
3
|
<FSRow>
|
|
6
4
|
<FSSelectField
|
|
7
5
|
:hideHeader="true"
|
|
@@ -22,8 +20,6 @@
|
|
|
22
20
|
<FSRow
|
|
23
21
|
class="fs-calendar-twin"
|
|
24
22
|
align="top-center"
|
|
25
|
-
width="hug"
|
|
26
|
-
:height="['380px', '375px']"
|
|
27
23
|
:style="style"
|
|
28
24
|
>
|
|
29
25
|
<FSCol
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
<script lang="ts">
|
|
89
89
|
import { computed, defineComponent, ref, watch } from "vue";
|
|
90
90
|
|
|
91
|
-
import { useDateFormat,
|
|
91
|
+
import { useDateFormat, useDateExpression } from "@dative-gpi/foundation-shared-services/composables";
|
|
92
92
|
|
|
93
93
|
import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
|
|
94
94
|
import { useBreakpoints, useColors } from '@dative-gpi/foundation-shared-components/composables';
|
|
@@ -169,7 +169,7 @@ export default defineComponent({
|
|
|
169
169
|
emits: ['update:modelValue', 'update:startDate', 'update:endDate'],
|
|
170
170
|
setup(props, { emit }) {
|
|
171
171
|
const { epochToShortTimeOnlyFormat, epochToShortDateFormat, epochToDayMonthShortOnly, epochToISO, epochToMonthShortTimeFormat } = useDateFormat();
|
|
172
|
-
const { convert : convertTermToEpoch } =
|
|
172
|
+
const { convert : convertTermToEpoch } = useDateExpression();
|
|
173
173
|
const { isMobileSized, isExtraSmall } = useBreakpoints();
|
|
174
174
|
const { getColors } = useColors();
|
|
175
175
|
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<FSDialogSubmit
|
|
3
|
+
:title="$props.label"
|
|
4
|
+
:submitButtonColor="$props.color"
|
|
5
|
+
:modelValue="$props.dialog"
|
|
6
|
+
:disabled="!valid"
|
|
7
|
+
@update:modelValue="$emit('cancel')"
|
|
8
|
+
@click:submitButton="onSubmit"
|
|
9
|
+
>
|
|
10
|
+
<template
|
|
11
|
+
#body
|
|
12
|
+
>
|
|
13
|
+
<FSCol>
|
|
14
|
+
<FSCalendarTwin
|
|
15
|
+
:color="$props.color"
|
|
16
|
+
v-model="innerDateRange"
|
|
17
|
+
/>
|
|
18
|
+
<FSRow>
|
|
19
|
+
<FSCol>
|
|
20
|
+
<FSClock
|
|
21
|
+
:color="$props.color"
|
|
22
|
+
:date="innerDateLeft"
|
|
23
|
+
v-model="innerTimeLeft"
|
|
24
|
+
/>
|
|
25
|
+
</FSCol>
|
|
26
|
+
<FSCol>
|
|
27
|
+
<FSClock
|
|
28
|
+
:color="$props.color"
|
|
29
|
+
:date="innerDateRight"
|
|
30
|
+
v-model="innerTimeRight"
|
|
31
|
+
/>
|
|
32
|
+
</FSCol>
|
|
33
|
+
</FSRow>
|
|
34
|
+
</FSCol>
|
|
35
|
+
</template>
|
|
36
|
+
</FSDialogSubmit>
|
|
37
|
+
</template>
|
|
38
|
+
|
|
39
|
+
<script lang="ts">
|
|
40
|
+
import { computed, defineComponent, type PropType, ref, watch } from "vue";
|
|
41
|
+
|
|
42
|
+
import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
|
|
43
|
+
import { useAppTimeZone } from "@dative-gpi/foundation-shared-services/composables";
|
|
44
|
+
|
|
45
|
+
import FSDialogSubmit from "../FSDialogSubmit.vue";
|
|
46
|
+
import FSCalendarTwin from "../FSCalendarTwin.vue";
|
|
47
|
+
import FSClock from "../FSClock.vue";
|
|
48
|
+
import FSCol from "../FSCol.vue";
|
|
49
|
+
import FSRow from "../FSRow.vue";
|
|
50
|
+
|
|
51
|
+
export default defineComponent({
|
|
52
|
+
name: "FSDateTimeRangeDialog",
|
|
53
|
+
components: {
|
|
54
|
+
FSDialogSubmit,
|
|
55
|
+
FSCalendarTwin,
|
|
56
|
+
FSClock,
|
|
57
|
+
FSCol,
|
|
58
|
+
FSRow
|
|
59
|
+
},
|
|
60
|
+
props: {
|
|
61
|
+
label: {
|
|
62
|
+
type: String as PropType<string | null>,
|
|
63
|
+
required: false,
|
|
64
|
+
default: null
|
|
65
|
+
},
|
|
66
|
+
modelValue: {
|
|
67
|
+
type: Array as PropType<number[] | null>,
|
|
68
|
+
required: false,
|
|
69
|
+
default: () => null
|
|
70
|
+
},
|
|
71
|
+
color: {
|
|
72
|
+
type: String as PropType<ColorBase>,
|
|
73
|
+
required: false,
|
|
74
|
+
default: ColorEnum.Primary
|
|
75
|
+
},
|
|
76
|
+
dialog: {
|
|
77
|
+
type: Boolean,
|
|
78
|
+
required: false,
|
|
79
|
+
default: false
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
emits: ["update:modelValue", "cancel"],
|
|
83
|
+
setup(props, { emit }) {
|
|
84
|
+
const { getUserOffset } = useAppTimeZone();
|
|
85
|
+
|
|
86
|
+
const innerDateRange = ref<number[] | null>(null);
|
|
87
|
+
const innerTimeRight = ref(0);
|
|
88
|
+
const innerTimeLeft = ref(0);
|
|
89
|
+
|
|
90
|
+
const innerDateLeft = computed((): number | null => {
|
|
91
|
+
if (innerDateRange.value && Array.isArray(innerDateRange.value) && innerDateRange.value.length) {
|
|
92
|
+
return innerDateRange.value[0];
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
const innerDateRight= computed((): number | null => {
|
|
98
|
+
if (innerDateRange.value && Array.isArray(innerDateRange.value) && innerDateRange.value.length > 1) {
|
|
99
|
+
return innerDateRange.value[1];
|
|
100
|
+
}
|
|
101
|
+
return null;
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
const valid = computed((): boolean => {
|
|
105
|
+
return !!innerDateRange.value && Array.isArray(innerDateRange.value) && innerDateRange.value.length > 1 &&
|
|
106
|
+
innerDateRange.value[0] + innerTimeLeft.value < innerDateRange.value[1] + innerTimeRight.value;
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
const reset = (): void => {
|
|
110
|
+
if (props.modelValue && Array.isArray(props.modelValue)) {
|
|
111
|
+
// FSClock just gives two numbers without consideration for the time zone
|
|
112
|
+
// We must adjust the time to the user's time zone
|
|
113
|
+
switch (props.modelValue.length) {
|
|
114
|
+
case 0: {
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
case 1: {
|
|
118
|
+
innerTimeLeft.value = Math.floor((props.modelValue[0] + getUserOffset(props.modelValue[0])) % (24 * 60 * 60 * 1000));
|
|
119
|
+
innerDateRange.value = [props.modelValue[0] - innerTimeLeft.value];
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
default: {
|
|
123
|
+
innerTimeLeft.value = Math.floor((props.modelValue[0] + getUserOffset(props.modelValue[0])) % (24 * 60 * 60 * 1000));
|
|
124
|
+
innerTimeRight.value = Math.floor((props.modelValue[1] + getUserOffset(props.modelValue[1])) % (24 * 60 * 60 * 1000));
|
|
125
|
+
innerDateRange.value = [props.modelValue[0] - innerTimeLeft.value, props.modelValue[1] - innerTimeRight.value];
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
innerDateRange.value = null;
|
|
132
|
+
innerTimeLeft.value = 0;
|
|
133
|
+
innerTimeRight.value = 0;
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
watch(() => props.modelValue, () => {
|
|
138
|
+
reset();
|
|
139
|
+
}, { immediate: true });
|
|
140
|
+
|
|
141
|
+
const onSubmit = (): void => {
|
|
142
|
+
if (valid.value) {
|
|
143
|
+
emit("update:modelValue", [innerDateRange.value![0] + innerTimeLeft.value, innerDateRange.value![1] + innerTimeRight.value]);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
return {
|
|
149
|
+
valid,
|
|
150
|
+
innerDateLeft,
|
|
151
|
+
innerTimeLeft,
|
|
152
|
+
innerDateRight,
|
|
153
|
+
innerTimeRight,
|
|
154
|
+
innerDateRange,
|
|
155
|
+
ColorEnum,
|
|
156
|
+
onSubmit
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
</script>
|
|
@@ -41,66 +41,34 @@
|
|
|
41
41
|
/>
|
|
42
42
|
</template>
|
|
43
43
|
</FSTextField>
|
|
44
|
-
<
|
|
44
|
+
<FSDateTimeRangeDialog
|
|
45
45
|
:title="$props.label"
|
|
46
46
|
:submitButtonColor="$props.color"
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
<FSCol>
|
|
54
|
-
<FSCalendarTwin
|
|
55
|
-
:color="$props.color"
|
|
56
|
-
v-model="innerDateRange"
|
|
57
|
-
/>
|
|
58
|
-
<FSRow>
|
|
59
|
-
<FSCol>
|
|
60
|
-
<FSClock
|
|
61
|
-
:color="$props.color"
|
|
62
|
-
:date="innerDateLeft"
|
|
63
|
-
v-model="innerTimeLeft"
|
|
64
|
-
/>
|
|
65
|
-
</FSCol>
|
|
66
|
-
<FSCol>
|
|
67
|
-
<FSClock
|
|
68
|
-
:color="$props.color"
|
|
69
|
-
:date="innerDateRight"
|
|
70
|
-
v-model="innerTimeRight"
|
|
71
|
-
/>
|
|
72
|
-
</FSCol>
|
|
73
|
-
</FSRow>
|
|
74
|
-
</FSCol>
|
|
75
|
-
</template>
|
|
76
|
-
</FSDialogSubmit>
|
|
47
|
+
:dialog="dialog"
|
|
48
|
+
:modelValue="$props.modelValue"
|
|
49
|
+
:color="$props.color"
|
|
50
|
+
@cancel="dialog = false"
|
|
51
|
+
@update:modelValue="onSubmit($event)"
|
|
52
|
+
/>
|
|
77
53
|
</template>
|
|
78
54
|
|
|
79
55
|
<script lang="ts">
|
|
80
|
-
import { computed, defineComponent, type PropType, ref
|
|
56
|
+
import { computed, defineComponent, type PropType, ref } from "vue";
|
|
81
57
|
|
|
82
58
|
import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
|
|
83
|
-
import {
|
|
59
|
+
import { useDateFormat } from "@dative-gpi/foundation-shared-services/composables";
|
|
84
60
|
import { useRules } from "@dative-gpi/foundation-shared-components/composables";
|
|
85
61
|
|
|
86
|
-
import
|
|
87
|
-
import FSCalendarTwin from "../FSCalendarTwin.vue";
|
|
62
|
+
import FSDateTimeRangeDialog from "./FSDateTimeRangeDialog.vue";
|
|
88
63
|
import FSTextField from "./FSTextField.vue";
|
|
89
64
|
import FSButton from "../FSButton.vue";
|
|
90
|
-
import FSClock from "../FSClock.vue";
|
|
91
|
-
import FSCol from "../FSCol.vue";
|
|
92
|
-
import FSRow from "../FSRow.vue";
|
|
93
65
|
|
|
94
66
|
export default defineComponent({
|
|
95
67
|
name: "FSDateTimeRangeField",
|
|
96
68
|
components: {
|
|
97
|
-
|
|
98
|
-
FSCalendarTwin,
|
|
69
|
+
FSDateTimeRangeDialog,
|
|
99
70
|
FSTextField,
|
|
100
|
-
FSButton
|
|
101
|
-
FSClock,
|
|
102
|
-
FSCol,
|
|
103
|
-
FSRow
|
|
71
|
+
FSButton
|
|
104
72
|
},
|
|
105
73
|
props: {
|
|
106
74
|
label: {
|
|
@@ -146,16 +114,11 @@ export default defineComponent({
|
|
|
146
114
|
},
|
|
147
115
|
emits: ["update:modelValue"],
|
|
148
116
|
setup(props, { emit }) {
|
|
149
|
-
const { getUserOffset } = useAppTimeZone();
|
|
150
117
|
const { epochToShortTimeFormat } = useDateFormat();
|
|
151
118
|
const { validateOn, getMessages } = useRules();
|
|
152
119
|
|
|
153
120
|
const dialog = ref(false);
|
|
154
121
|
|
|
155
|
-
const innerDateRange = ref<number[] | null>(null);
|
|
156
|
-
const innerTimeRight = ref(0);
|
|
157
|
-
const innerTimeLeft = ref(0);
|
|
158
|
-
|
|
159
122
|
const toShortTimeFormat = computed((): string => {
|
|
160
123
|
if (!props.modelValue || !Array.isArray(props.modelValue) || !props.modelValue.length) {
|
|
161
124
|
return "";
|
|
@@ -163,20 +126,6 @@ export default defineComponent({
|
|
|
163
126
|
return props.modelValue.map((epoch) => epochToShortTimeFormat(epoch)).join(" - ");
|
|
164
127
|
});
|
|
165
128
|
|
|
166
|
-
const innerDateLeft = computed((): number | null => {
|
|
167
|
-
if (innerDateRange.value && Array.isArray(innerDateRange.value) && innerDateRange.value.length) {
|
|
168
|
-
return innerDateRange.value[0];
|
|
169
|
-
}
|
|
170
|
-
return null;
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
const innerDateRight= computed((): number | null => {
|
|
174
|
-
if (innerDateRange.value && Array.isArray(innerDateRange.value) && innerDateRange.value.length > 1) {
|
|
175
|
-
return innerDateRange.value[1];
|
|
176
|
-
}
|
|
177
|
-
return null;
|
|
178
|
-
});
|
|
179
|
-
|
|
180
129
|
const messages = computed((): string[] => getMessages(props.modelValue, props.rules, true));
|
|
181
130
|
|
|
182
131
|
const onClick = (): void => {
|
|
@@ -185,66 +134,24 @@ export default defineComponent({
|
|
|
185
134
|
}
|
|
186
135
|
};
|
|
187
136
|
|
|
188
|
-
const
|
|
189
|
-
emit("update:modelValue",
|
|
190
|
-
innerTimeLeft.value = 0;
|
|
191
|
-
innerTimeRight.value = 0;
|
|
192
|
-
innerDateRange.value = null;
|
|
193
|
-
};
|
|
194
|
-
|
|
195
|
-
const onSubmit = (): void => {
|
|
196
|
-
if (innerDateRange.value && Array.isArray(innerDateRange.value) && innerDateRange.value.length > 1) {
|
|
197
|
-
emit("update:modelValue", [innerDateRange.value[0] + innerTimeLeft.value, innerDateRange.value[1] + innerTimeRight.value]);
|
|
198
|
-
}
|
|
137
|
+
const onSubmit = (value: number[]): void => {
|
|
138
|
+
emit("update:modelValue", value);
|
|
199
139
|
dialog.value = false;
|
|
200
140
|
};
|
|
201
141
|
|
|
202
|
-
const
|
|
203
|
-
|
|
204
|
-
// FSClock just gives two numbers without consideration for the time zone
|
|
205
|
-
// We must adjust the time to the user's time zone
|
|
206
|
-
switch (props.modelValue.length) {
|
|
207
|
-
case 0: {
|
|
208
|
-
break;
|
|
209
|
-
}
|
|
210
|
-
case 1: {
|
|
211
|
-
innerTimeLeft.value = Math.floor((props.modelValue[0] + getUserOffset(props.modelValue[0])) % (24 * 60 * 60 * 1000));
|
|
212
|
-
innerDateRange.value = [props.modelValue[0] - innerTimeLeft.value];
|
|
213
|
-
break;
|
|
214
|
-
}
|
|
215
|
-
default: {
|
|
216
|
-
innerTimeLeft.value = Math.floor((props.modelValue[0] + getUserOffset(props.modelValue[0])) % (24 * 60 * 60 * 1000));
|
|
217
|
-
innerTimeRight.value = Math.floor((props.modelValue[1] + getUserOffset(props.modelValue[1])) % (24 * 60 * 60 * 1000));
|
|
218
|
-
innerDateRange.value = [props.modelValue[0] - innerTimeLeft.value, props.modelValue[1] - innerTimeRight.value];
|
|
219
|
-
break;
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
innerDateRange.value = null;
|
|
225
|
-
innerTimeLeft.value = 0;
|
|
226
|
-
innerTimeRight.value = 0;
|
|
227
|
-
}
|
|
142
|
+
const onClear = (): void => {
|
|
143
|
+
emit("update:modelValue", null);
|
|
228
144
|
};
|
|
229
145
|
|
|
230
|
-
watch(() => props.modelValue, () => {
|
|
231
|
-
reset();
|
|
232
|
-
}, { immediate: true });
|
|
233
|
-
|
|
234
146
|
return {
|
|
235
147
|
toShortTimeFormat,
|
|
236
|
-
innerDateLeft,
|
|
237
|
-
innerTimeLeft,
|
|
238
|
-
innerDateRight,
|
|
239
|
-
innerTimeRight,
|
|
240
|
-
innerDateRange,
|
|
241
148
|
validateOn,
|
|
242
149
|
ColorEnum,
|
|
243
150
|
messages,
|
|
244
151
|
dialog,
|
|
245
152
|
onSubmit,
|
|
246
153
|
onClear,
|
|
247
|
-
onClick
|
|
154
|
+
onClick,
|
|
248
155
|
};
|
|
249
156
|
}
|
|
250
157
|
});
|
|
@@ -68,16 +68,23 @@
|
|
|
68
68
|
/>
|
|
69
69
|
</FSRow>
|
|
70
70
|
</template>
|
|
71
|
-
<
|
|
71
|
+
<template
|
|
72
72
|
v-else-if="innerDateSetting === DateSetting.Pick"
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
73
|
+
>
|
|
74
|
+
<FSDateTimeRangeField
|
|
75
|
+
:width="['350px', '310px']"
|
|
76
|
+
:disabled="$props.disabled"
|
|
77
|
+
:hideHeader="true"
|
|
78
|
+
:clearable="false"
|
|
79
|
+
:modelValue="actualValue"
|
|
80
|
+
@update:modelValue="onPickDates"
|
|
81
|
+
/>
|
|
82
|
+
<FSDateTimeRangeDialog
|
|
83
|
+
:dialog="dateTimeRangeDialog"
|
|
84
|
+
@cancel="onCancelPickDates"
|
|
85
|
+
@update:modelValue="onPickDates"
|
|
86
|
+
/>
|
|
87
|
+
</template>
|
|
81
88
|
</FSRow>
|
|
82
89
|
</FSForm>
|
|
83
90
|
</FSBaseField>
|
|
@@ -93,6 +100,7 @@ import { useRules } from "@dative-gpi/foundation-shared-components/composables";
|
|
|
93
100
|
import { DateSetting } from "@dative-gpi/foundation-shared-domain/enums";
|
|
94
101
|
|
|
95
102
|
import FSSelectDateSetting from "../selects/FSSelectDateSetting.vue";
|
|
103
|
+
import FSDateTimeRangeDialog from './FSDateTimeRangeDialog.vue';
|
|
96
104
|
import FSDateTimeRangeField from "./FSDateTimeRangeField.vue";
|
|
97
105
|
import FSNumberField from "./FSNumberField.vue";
|
|
98
106
|
import FSBaseField from "./FSBaseField.vue";
|
|
@@ -104,6 +112,7 @@ import FSRow from "../FSRow.vue";
|
|
|
104
112
|
export default defineComponent({
|
|
105
113
|
name: "FSTermField",
|
|
106
114
|
components: {
|
|
115
|
+
FSDateTimeRangeDialog,
|
|
107
116
|
FSDateTimeRangeField,
|
|
108
117
|
FSSelectDateSetting,
|
|
109
118
|
FSNumberField,
|
|
@@ -170,13 +179,14 @@ export default defineComponent({
|
|
|
170
179
|
},
|
|
171
180
|
emits: ["update", "update:startDate", "update:endDate"],
|
|
172
181
|
setup(props, { emit }) {
|
|
173
|
-
const { parseForPicker, epochToISO
|
|
182
|
+
const { parseForPicker, epochToISO } = useDateFormat();
|
|
174
183
|
const { getMessages } = useRules();
|
|
175
184
|
|
|
176
185
|
const innerDateSetting = ref<DateSetting>(DateSetting.PastDays);
|
|
177
186
|
const innerDateValue = ref<number>(1);
|
|
178
187
|
const innerStartDate = ref<string>("now - 1d");
|
|
179
188
|
const innerEndDate = ref<string>("now");
|
|
189
|
+
const dateTimeRangeDialog = ref(false);
|
|
180
190
|
|
|
181
191
|
const valid = ref<boolean>(false);
|
|
182
192
|
|
|
@@ -353,9 +363,8 @@ export default defineComponent({
|
|
|
353
363
|
}
|
|
354
364
|
break;
|
|
355
365
|
case DateSetting.Pick:
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
break;
|
|
366
|
+
dateTimeRangeDialog.value = true;
|
|
367
|
+
return;
|
|
359
368
|
}
|
|
360
369
|
emit("update:startDate", innerStartDate.value);
|
|
361
370
|
emit("update:endDate", innerEndDate.value);
|
|
@@ -426,34 +435,32 @@ export default defineComponent({
|
|
|
426
435
|
emit("update", { startDate: innerStartDate.value, endDate: innerEndDate.value });
|
|
427
436
|
};
|
|
428
437
|
|
|
429
|
-
const onPickDates = (value: number[]
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
emit("update:startDate", innerStartDate.value);
|
|
435
|
-
emit("update:endDate", innerEndDate.value);
|
|
436
|
-
emit("update", { startDate: innerStartDate.value, endDate: innerEndDate.value });
|
|
437
|
-
}
|
|
438
|
+
const onPickDates = (value: number[]) => {
|
|
439
|
+
dateTimeRangeDialog.value = false;
|
|
440
|
+
|
|
441
|
+
if(value.length < 2) {
|
|
442
|
+
return;
|
|
438
443
|
}
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
444
|
+
|
|
445
|
+
innerStartDate.value = epochToISO(value[0]);
|
|
446
|
+
innerEndDate.value = epochToISO(value[1]);
|
|
447
|
+
|
|
448
|
+
if (valid.value !== false) {
|
|
449
|
+
if(props.startDate !== innerStartDate.value) {
|
|
450
|
+
emit("update:startDate", innerStartDate.value);
|
|
446
451
|
}
|
|
447
|
-
if (
|
|
448
|
-
innerEndDate.value
|
|
449
|
-
if (valid.value) {
|
|
450
|
-
emit("update:endDate", innerEndDate.value);
|
|
451
|
-
emit("update", { startDate: props.startDate, endDate: innerEndDate.value });
|
|
452
|
-
}
|
|
452
|
+
if (props.endDate !== innerEndDate.value) {
|
|
453
|
+
emit("update:endDate", innerEndDate.value);
|
|
453
454
|
}
|
|
455
|
+
emit("update", { startDate: innerStartDate.value, endDate: innerEndDate.value });
|
|
454
456
|
}
|
|
455
457
|
};
|
|
456
458
|
|
|
459
|
+
const onCancelPickDates = () => {
|
|
460
|
+
dateTimeRangeDialog.value = false;
|
|
461
|
+
reset();
|
|
462
|
+
};
|
|
463
|
+
|
|
457
464
|
const reset = (): void => {
|
|
458
465
|
innerStartDate.value = props.startDate;
|
|
459
466
|
innerEndDate.value = props.endDate;
|
|
@@ -663,6 +670,7 @@ export default defineComponent({
|
|
|
663
670
|
});
|
|
664
671
|
|
|
665
672
|
return {
|
|
673
|
+
dateTimeRangeDialog,
|
|
666
674
|
innerDateSetting,
|
|
667
675
|
innerDateValue,
|
|
668
676
|
innerStartDate,
|
|
@@ -679,6 +687,7 @@ export default defineComponent({
|
|
|
679
687
|
innerDateValueChange,
|
|
680
688
|
innerStartDateChange,
|
|
681
689
|
innerEndDateChange,
|
|
690
|
+
onCancelPickDates,
|
|
682
691
|
parseForPicker,
|
|
683
692
|
onPickDates
|
|
684
693
|
};
|
|
@@ -135,7 +135,7 @@
|
|
|
135
135
|
:headers="extraHeaders.concat(innerHeaders)"
|
|
136
136
|
:sortBy="innerSortBy ? [innerSortBy] : []"
|
|
137
137
|
:itemsPerPage="innerRowsPerPage"
|
|
138
|
-
:
|
|
138
|
+
:selectable="$props.selectable"
|
|
139
139
|
:hover="!$props.sortDraggable"
|
|
140
140
|
:itemValue="$props.itemValue"
|
|
141
141
|
:loading="$props.loading"
|
|
@@ -258,7 +258,7 @@
|
|
|
258
258
|
width="hug"
|
|
259
259
|
>
|
|
260
260
|
<FSCheckbox
|
|
261
|
-
v-if="$props.
|
|
261
|
+
v-if="$props.selectable"
|
|
262
262
|
:modelValue="props.item.items.every((item) => $props.modelValue.includes(item.key))"
|
|
263
263
|
:indeterminate="$props.modelValue.some((id) => props.item.items.some((item) => item.key === id)) && !props.item.items.every((item) => $props.modelValue.includes(item.key))"
|
|
264
264
|
@update:modelValue="toggleSelectGroup(props.item)"
|
|
@@ -480,7 +480,7 @@
|
|
|
480
480
|
v-if="item.type === 'item'"
|
|
481
481
|
:leftColor="$props.rowColor ? $props.rowColor(item.raw) : null"
|
|
482
482
|
:headers="innerHeaders.filter(h => !$props.sneakyHeaders.includes(h.value))"
|
|
483
|
-
:selectable="$props.
|
|
483
|
+
:selectable="$props.selectable"
|
|
484
484
|
:singleSelect="$props.singleSelect"
|
|
485
485
|
:to="$props.itemTo"
|
|
486
486
|
:bottomColor="$props.color"
|
|
@@ -653,7 +653,7 @@
|
|
|
653
653
|
<FSDataIteratorItem
|
|
654
654
|
:leftColor="$props.rowColor ? $props.rowColor(item.raw) : null"
|
|
655
655
|
:headers="innerHeaders.filter(h => !$props.sneakyHeaders.includes(h.value))"
|
|
656
|
-
:selectable="$props.
|
|
656
|
+
:selectable="$props.selectable"
|
|
657
657
|
:singleSelect="$props.singleSelect"
|
|
658
658
|
:to="$props.itemTo"
|
|
659
659
|
:bottomColor="$props.color"
|
|
@@ -833,7 +833,7 @@ export default defineComponent({
|
|
|
833
833
|
required: false,
|
|
834
834
|
default: ColorEnum.Primary
|
|
835
835
|
},
|
|
836
|
-
|
|
836
|
+
selectable: {
|
|
837
837
|
type: Boolean,
|
|
838
838
|
required: false,
|
|
839
839
|
default: true
|
|
@@ -1035,7 +1035,7 @@ export default defineComponent({
|
|
|
1035
1035
|
width: "0%"
|
|
1036
1036
|
});
|
|
1037
1037
|
}
|
|
1038
|
-
if (props.
|
|
1038
|
+
if (props.selectable) {
|
|
1039
1039
|
extra.push({
|
|
1040
1040
|
key: "data-table-select",
|
|
1041
1041
|
width: "0%"
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dative-gpi/foundation-shared-components",
|
|
3
3
|
"sideEffects": false,
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.142",
|
|
5
5
|
"description": "",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
"author": "",
|
|
11
11
|
"license": "ISC",
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@dative-gpi/foundation-shared-domain": "1.0.
|
|
14
|
-
"@dative-gpi/foundation-shared-services": "1.0.
|
|
13
|
+
"@dative-gpi/foundation-shared-domain": "1.0.142",
|
|
14
|
+
"@dative-gpi/foundation-shared-services": "1.0.142"
|
|
15
15
|
},
|
|
16
16
|
"peerDependencies": {
|
|
17
17
|
"@dative-gpi/bones-ui": "^1.0.0",
|
|
@@ -35,5 +35,5 @@
|
|
|
35
35
|
"sass": "1.71.1",
|
|
36
36
|
"sass-loader": "13.3.2"
|
|
37
37
|
},
|
|
38
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "36eca468f78075f88bb6638dbfdee9bdecf270ce"
|
|
39
39
|
}
|