@dative-gpi/foundation-shared-components 1.0.109 → 1.0.110
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.
|
@@ -3,13 +3,20 @@
|
|
|
3
3
|
width="hug"
|
|
4
4
|
>
|
|
5
5
|
<FSRow>
|
|
6
|
-
<
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
<FSSelectField
|
|
7
|
+
:hideHeader="true"
|
|
8
|
+
:clearable="false"
|
|
9
|
+
:items="years"
|
|
10
|
+
v-model="innerYear"
|
|
11
|
+
/>
|
|
12
|
+
<FSRow
|
|
13
|
+
align="center-right"
|
|
10
14
|
>
|
|
11
|
-
|
|
12
|
-
|
|
15
|
+
<FSButton
|
|
16
|
+
:label="$tr('ui.calendar.today', 'Today')"
|
|
17
|
+
@click="onClickToday"
|
|
18
|
+
/>
|
|
19
|
+
</FSRow>
|
|
13
20
|
</FSRow>
|
|
14
21
|
<FSCol
|
|
15
22
|
class="fs-calendar"
|
|
@@ -71,6 +78,7 @@ import { useDateFormat, useAppLanguageCode } from "@dative-gpi/foundation-shared
|
|
|
71
78
|
import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
|
|
72
79
|
import { useColors } from "@dative-gpi/foundation-shared-components/composables";
|
|
73
80
|
|
|
81
|
+
import FSSelectField from "./fields/FSSelectField.vue";
|
|
74
82
|
import FSButton from "./FSButton.vue";
|
|
75
83
|
import FSSpan from "./FSSpan.vue";
|
|
76
84
|
import FSCol from "./FSCol.vue";
|
|
@@ -79,17 +87,13 @@ import FSRow from "./FSRow.vue";
|
|
|
79
87
|
export default defineComponent({
|
|
80
88
|
name: "FSCalendar",
|
|
81
89
|
components: {
|
|
90
|
+
FSSelectField,
|
|
82
91
|
FSButton,
|
|
83
92
|
FSSpan,
|
|
84
93
|
FSCol,
|
|
85
94
|
FSRow
|
|
86
95
|
},
|
|
87
96
|
props: {
|
|
88
|
-
label: {
|
|
89
|
-
type: String as PropType<string | null>,
|
|
90
|
-
required: false,
|
|
91
|
-
default: null
|
|
92
|
-
},
|
|
93
97
|
modelValue: {
|
|
94
98
|
type: Number as PropType<number | null>,
|
|
95
99
|
required: false,
|
|
@@ -117,13 +121,14 @@ export default defineComponent({
|
|
|
117
121
|
|
|
118
122
|
const colors = computed(() => getColors(props.color));
|
|
119
123
|
const backgrounds = getColors(ColorEnum.Background);
|
|
124
|
+
const lights = getColors(ColorEnum.Light);
|
|
120
125
|
const darks = getColors(ColorEnum.Dark);
|
|
121
126
|
|
|
122
127
|
const style = computed((): StyleValue => ({
|
|
123
128
|
"--fs-calendar-background-color" : backgrounds.base,
|
|
124
129
|
"--fs-calendar-hover-background-color" : colors.value.light,
|
|
125
130
|
"--fs-calendar-active-background-color": colors.value.base,
|
|
126
|
-
"--fs-calendar-border-color" :
|
|
131
|
+
"--fs-calendar-border-color" : lights.dark,
|
|
127
132
|
"--fs-calendar-hover-border-color" : colors.value.base,
|
|
128
133
|
"--fs-calendar-active-border-color" : colors.value.base,
|
|
129
134
|
"--fs-calendar-color" : darks.base,
|
|
@@ -138,6 +143,28 @@ export default defineComponent({
|
|
|
138
143
|
return new Intl.DateTimeFormat(languageCode.value, { month: "long", year: "numeric" }).format(date);
|
|
139
144
|
});
|
|
140
145
|
|
|
146
|
+
const years = computed((): any[] => {
|
|
147
|
+
const years = [];
|
|
148
|
+
switch (props.limit) {
|
|
149
|
+
case "past":
|
|
150
|
+
for (let i = 1900; i < new Date().getFullYear(); i++) {
|
|
151
|
+
years.push({ label: i.toString(), id: i });
|
|
152
|
+
}
|
|
153
|
+
break;
|
|
154
|
+
case "future":
|
|
155
|
+
for (let i = new Date().getFullYear(); i < 2100; i++) {
|
|
156
|
+
years.push({ label: i.toString(), id: i });
|
|
157
|
+
}
|
|
158
|
+
break;
|
|
159
|
+
default:
|
|
160
|
+
for (let i = 1900; i < 2100; i++) {
|
|
161
|
+
years.push({ label: i.toString(), id: i });
|
|
162
|
+
}
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
return years;
|
|
166
|
+
});
|
|
167
|
+
|
|
141
168
|
const onClickPrevious = (): void => {
|
|
142
169
|
if (innerMonth.value > 0) {
|
|
143
170
|
innerMonth.value--;
|
|
@@ -165,6 +192,15 @@ export default defineComponent({
|
|
|
165
192
|
emit("update:modelValue", pickerToEpoch(value[0]));
|
|
166
193
|
};
|
|
167
194
|
|
|
195
|
+
const onClickToday = (): void => {
|
|
196
|
+
const today = new Date();
|
|
197
|
+
innerMonth.value = today.getMonth();
|
|
198
|
+
innerYear.value = today.getFullYear();
|
|
199
|
+
|
|
200
|
+
today.setHours(0, 0, 0, 0);
|
|
201
|
+
emit("update:modelValue", pickerToEpoch(today));
|
|
202
|
+
};
|
|
203
|
+
|
|
168
204
|
const allowedDates = (value: unknown): boolean => {
|
|
169
205
|
if (!(value instanceof Date)) {
|
|
170
206
|
return false;
|
|
@@ -190,11 +226,13 @@ export default defineComponent({
|
|
|
190
226
|
text,
|
|
191
227
|
innerMonth,
|
|
192
228
|
innerYear,
|
|
229
|
+
years,
|
|
193
230
|
epochToPicker,
|
|
194
231
|
pickerToEpoch,
|
|
195
232
|
onClickPrevious,
|
|
196
233
|
onClickNext,
|
|
197
234
|
onClickDate,
|
|
235
|
+
onClickToday,
|
|
198
236
|
allowedDates
|
|
199
237
|
};
|
|
200
238
|
}
|
|
@@ -2,15 +2,22 @@
|
|
|
2
2
|
<FSCol
|
|
3
3
|
width="hug"
|
|
4
4
|
>
|
|
5
|
-
<FSRow
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
<FSRow>
|
|
6
|
+
<FSSelectField
|
|
7
|
+
:hideHeader="true"
|
|
8
|
+
:clearable="false"
|
|
9
|
+
:items="years"
|
|
10
|
+
:modelValue="innerLeftYear"
|
|
11
|
+
@update:modelValue="onChangeYear"
|
|
12
|
+
/>
|
|
13
|
+
<FSRow
|
|
14
|
+
align="center-right"
|
|
11
15
|
>
|
|
12
|
-
|
|
13
|
-
|
|
16
|
+
<FSButton
|
|
17
|
+
:label="$tr('ui.calendar.today', 'Today')"
|
|
18
|
+
@click="onClickToday"
|
|
19
|
+
/>
|
|
20
|
+
</FSRow>
|
|
14
21
|
</FSRow>
|
|
15
22
|
<FSRow
|
|
16
23
|
class="fs-calendar-twin"
|
|
@@ -118,6 +125,7 @@ import { useDateFormat, useAppLanguageCode } from "@dative-gpi/foundation-shared
|
|
|
118
125
|
import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
|
|
119
126
|
import { useColors } from "@dative-gpi/foundation-shared-components/composables";
|
|
120
127
|
|
|
128
|
+
import FSSelectField from "./fields/FSSelectField.vue";
|
|
121
129
|
import FSButton from "./FSButton.vue";
|
|
122
130
|
import FSSpan from "./FSSpan.vue";
|
|
123
131
|
import FSCol from "./FSCol.vue";
|
|
@@ -126,17 +134,13 @@ import FSRow from "./FSRow.vue";
|
|
|
126
134
|
export default defineComponent({
|
|
127
135
|
name: "FSCalendarTwin",
|
|
128
136
|
components: {
|
|
137
|
+
FSSelectField,
|
|
129
138
|
FSButton,
|
|
130
139
|
FSSpan,
|
|
131
140
|
FSCol,
|
|
132
141
|
FSRow
|
|
133
142
|
},
|
|
134
143
|
props: {
|
|
135
|
-
label: {
|
|
136
|
-
type: String as PropType<string | null>,
|
|
137
|
-
required: false,
|
|
138
|
-
default: null
|
|
139
|
-
},
|
|
140
144
|
modelValue: {
|
|
141
145
|
type: Array as PropType<number[] | null>,
|
|
142
146
|
required: false,
|
|
@@ -167,13 +171,14 @@ export default defineComponent({
|
|
|
167
171
|
|
|
168
172
|
const colors = computed(() => getColors(props.color));
|
|
169
173
|
const backgrounds = getColors(ColorEnum.Background);
|
|
174
|
+
const lights = getColors(ColorEnum.Light);
|
|
170
175
|
const darks = getColors(ColorEnum.Dark);
|
|
171
176
|
|
|
172
177
|
const style = computed((): StyleValue => ({
|
|
173
178
|
"--fs-calendar-background-color" : backgrounds.base,
|
|
174
179
|
"--fs-calendar-hover-background-color" : colors.value.light,
|
|
175
180
|
"--fs-calendar-active-background-color": colors.value.base,
|
|
176
|
-
"--fs-calendar-border-color" :
|
|
181
|
+
"--fs-calendar-border-color" : lights.dark,
|
|
177
182
|
"--fs-calendar-hover-border-color" : colors.value.base,
|
|
178
183
|
"--fs-calendar-active-border-color" : colors.value.base,
|
|
179
184
|
"--fs-calendar-color" : darks.base,
|
|
@@ -259,6 +264,28 @@ export default defineComponent({
|
|
|
259
264
|
return classNames;
|
|
260
265
|
});
|
|
261
266
|
|
|
267
|
+
const years = computed((): any[] => {
|
|
268
|
+
const years = [];
|
|
269
|
+
switch (props.limit) {
|
|
270
|
+
case "past":
|
|
271
|
+
for (let i = 1900; i < new Date().getFullYear(); i++) {
|
|
272
|
+
years.push({ label: i.toString(), id: i });
|
|
273
|
+
}
|
|
274
|
+
break;
|
|
275
|
+
case "future":
|
|
276
|
+
for (let i = new Date().getFullYear(); i < 2100; i++) {
|
|
277
|
+
years.push({ label: i.toString(), id: i });
|
|
278
|
+
}
|
|
279
|
+
break;
|
|
280
|
+
default:
|
|
281
|
+
for (let i = 1900; i < 2100; i++) {
|
|
282
|
+
years.push({ label: i.toString(), id: i });
|
|
283
|
+
}
|
|
284
|
+
break;
|
|
285
|
+
}
|
|
286
|
+
return years;
|
|
287
|
+
});
|
|
288
|
+
|
|
262
289
|
const compare = (operator: "before" | "during" | "after", side: "left" | "right", date: { d: number, m: number, y: number }): boolean => {
|
|
263
290
|
switch (operator) {
|
|
264
291
|
case "before":
|
|
@@ -359,6 +386,35 @@ export default defineComponent({
|
|
|
359
386
|
}
|
|
360
387
|
};
|
|
361
388
|
|
|
389
|
+
const onClickToday = (): void => {
|
|
390
|
+
const today = new Date();
|
|
391
|
+
innerLeftMonth.value = today.getMonth();
|
|
392
|
+
innerLeftYear.value = today.getFullYear();
|
|
393
|
+
|
|
394
|
+
if (innerLeftMonth.value === 11) {
|
|
395
|
+
innerRightMonth.value = 0;
|
|
396
|
+
innerRightYear.value = innerLeftYear.value + 1;
|
|
397
|
+
}
|
|
398
|
+
else {
|
|
399
|
+
innerRightMonth.value = innerLeftMonth.value + 1;
|
|
400
|
+
innerRightYear.value = innerLeftYear.value;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
today.setHours(0, 0, 0, 0);
|
|
404
|
+
emit("update:modelValue", [pickerToEpoch(today), pickerToEpoch(today)]);
|
|
405
|
+
};
|
|
406
|
+
|
|
407
|
+
const onChangeYear = (value: number): void => {
|
|
408
|
+
if (innerRightYear.value !== innerLeftYear.value) {
|
|
409
|
+
innerLeftYear.value = value;
|
|
410
|
+
innerRightYear.value = value + 1;
|
|
411
|
+
}
|
|
412
|
+
else {
|
|
413
|
+
innerLeftYear.value = value;
|
|
414
|
+
innerRightYear.value = value;
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
|
|
362
418
|
const allowedDates = (value: unknown): boolean => {
|
|
363
419
|
if (!(value instanceof Date)) {
|
|
364
420
|
return false;
|
|
@@ -411,11 +467,14 @@ export default defineComponent({
|
|
|
411
467
|
innerRightMonth,
|
|
412
468
|
innerRightYear,
|
|
413
469
|
innerRightValue,
|
|
470
|
+
years,
|
|
414
471
|
epochToPicker,
|
|
415
472
|
onClickPrevious,
|
|
416
473
|
onClickNext,
|
|
417
474
|
onClickLeft,
|
|
418
475
|
onClickRight,
|
|
476
|
+
onClickToday,
|
|
477
|
+
onChangeYear,
|
|
419
478
|
allowedDates
|
|
420
479
|
};
|
|
421
480
|
}
|
|
@@ -127,6 +127,8 @@ export default defineComponent({
|
|
|
127
127
|
return props.modelValue === "true";
|
|
128
128
|
case MagicFieldType.TimeStepField:
|
|
129
129
|
return JSON.parse(props.modelValue);
|
|
130
|
+
case MagicFieldType.PlotPerField:
|
|
131
|
+
return parseInt(props.modelValue);
|
|
130
132
|
default:
|
|
131
133
|
return props.modelValue;
|
|
132
134
|
}
|
|
@@ -147,6 +149,9 @@ export default defineComponent({
|
|
|
147
149
|
case MagicFieldType.TimeStepField:
|
|
148
150
|
emit("update:modelValue", JSON.stringify(value));
|
|
149
151
|
break;
|
|
152
|
+
case MagicFieldType.PlotPerField:
|
|
153
|
+
emit("update:modelValue", value.toString());
|
|
154
|
+
break;
|
|
150
155
|
default:
|
|
151
156
|
emit("update:modelValue", value);
|
|
152
157
|
break;
|
|
@@ -131,6 +131,8 @@ export default defineComponent({
|
|
|
131
131
|
return props.modelValue === "true";
|
|
132
132
|
case MagicFieldType.TimeStepField:
|
|
133
133
|
return JSON.parse(props.modelValue);
|
|
134
|
+
case MagicFieldType.PlotPerField:
|
|
135
|
+
return parseInt(props.modelValue);
|
|
134
136
|
default:
|
|
135
137
|
return props.modelValue;
|
|
136
138
|
}
|
|
@@ -175,6 +177,9 @@ export default defineComponent({
|
|
|
175
177
|
case MagicFieldType.TimeStepField:
|
|
176
178
|
emit("update:modelValue", JSON.stringify(value));
|
|
177
179
|
break;
|
|
180
|
+
case MagicFieldType.PlotPerField:
|
|
181
|
+
emit("update:modelValue", value.toString());
|
|
182
|
+
break;
|
|
178
183
|
default:
|
|
179
184
|
emit("update:modelValue", value);
|
|
180
185
|
break;
|
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.110",
|
|
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.110",
|
|
14
|
+
"@dative-gpi/foundation-shared-services": "1.0.110"
|
|
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": "ce27d3542d6a82946127e9004d82ff2f401d7242"
|
|
39
39
|
}
|