@dative-gpi/foundation-shared-components 1.0.21 → 1.0.23

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.
@@ -40,7 +40,7 @@
40
40
  <script lang="ts">
41
41
  import { computed, defineComponent, type PropType } from "vue";
42
42
 
43
- import { DateRules, IconRules, NumberRules, TextRules, TimeRules } from "../../models";
43
+ import { DateRules, IconRules, NumberRules, TextRules, TimeRules, TimeStepRules } from "../../models";
44
44
  import { useMagicFieldProvider } from "../../composables";
45
45
  import { MagicFieldType } from "../../models/magicFields";
46
46
 
@@ -100,6 +100,8 @@ export default defineComponent({
100
100
  return [IconRules.required()];
101
101
  case MagicFieldType.TimeField:
102
102
  return [TimeRules.required()];
103
+ case MagicFieldType.TimeStepField:
104
+ return [TimeStepRules.required()];
103
105
  }
104
106
  return [];
105
107
  });
@@ -66,7 +66,7 @@ import { useAppTimeZone } from "@dative-gpi/foundation-shared-services/composabl
66
66
 
67
67
  import { useMagicFieldProvider } from "../../composables";
68
68
  import { MagicFieldType } from "../../models/magicFields";
69
- import { getTimeBestString } from "../../utils";
69
+ import { getTimeBestString, timeStepToString } from "../../utils";
70
70
 
71
71
  import FSSelectField from "./FSSelectField.vue";
72
72
  import FSIcon from "../FSIcon.vue";
@@ -149,6 +149,8 @@ export default defineComponent({
149
149
  return epochToShortTimeFormat(value);
150
150
  case MagicFieldType.TimeField:
151
151
  return getTimeBestString(value);
152
+ case MagicFieldType.TimeStepField:
153
+ return timeStepToString(value);
152
154
  default:
153
155
  return value;
154
156
  }
@@ -166,6 +168,7 @@ export default defineComponent({
166
168
  }
167
169
  emit("update:modelValue", value.toString());
168
170
  break;
171
+ case MagicFieldType.TimeStepField:
169
172
  default:
170
173
  emit("update:modelValue", value);
171
174
  break;
@@ -15,8 +15,8 @@
15
15
  :rules="$props.rules"
16
16
  :hideHeader="true"
17
17
  :messages="messages"
18
- :modelValue="$props.modelValue.value"
19
- @update:modelValue="$emit('update:modelValue', { value: $event, unit: $props.modelValue.unit })"
18
+ :modelValue="$props.modelValue && $props.modelValue.value || 0"
19
+ @update:modelValue="$emit('update:modelValue', { value: $event, unit: $props.modelValue && $props.modelValue.unit || units[0].id })"
20
20
  v-bind="$attrs"
21
21
  >
22
22
  <template
@@ -35,8 +35,8 @@
35
35
  :hideHeader="true"
36
36
  :clearable="false"
37
37
  :items="units"
38
- :modelValue="$props.modelValue.unit"
39
- @update:modelValue="$emit('update:modelValue', { value: $props.modelValue.value, unit: $event })"
38
+ :modelValue="$props.modelValue && $props.modelValue.unit || units[0].id"
39
+ @update:modelValue="$emit('update:modelValue', { value: $props.modelValue && $props.modelValue.value || 0, unit: $event })"
40
40
  >
41
41
  <template
42
42
  v-for="(_, name) in selectSlots"
@@ -85,7 +85,7 @@ export default defineComponent({
85
85
  default: null
86
86
  },
87
87
  modelValue: {
88
- type: Object as PropType<{ value: number, unit: TimeUnit }>,
88
+ type: Object as PropType<{ value: number, unit: TimeUnit } | null>,
89
89
  required: true
90
90
  },
91
91
  allowedUnits: {
@@ -1097,10 +1097,10 @@ export default defineComponent({
1097
1097
  },
1098
1098
  mobile: (event: any, item: any) => {
1099
1099
  if (props.itemTo && router) {
1100
- router.push(props.itemTo(item));
1100
+ router.push(props.itemTo(item.raw));
1101
1101
  }
1102
1102
  else {
1103
- emit("click:row", item);
1103
+ emit("click:row", item.raw);
1104
1104
  }
1105
1105
  }
1106
1106
  }
@@ -3,12 +3,13 @@ import { defineAsyncComponent } from "vue";
3
3
  import { MagicFieldType } from "../models/magicFields";
4
4
 
5
5
  const FIELDS = {
6
- [MagicFieldType.NumberField] : defineAsyncComponent(() => import("../components/fields/FSNumberField.vue")),
7
- [MagicFieldType.TextField] : defineAsyncComponent(() => import("../components/fields/FSTextField.vue")),
8
- [MagicFieldType.Switch] : defineAsyncComponent(() => import("../components/FSSwitch.vue")),
9
- [MagicFieldType.DateTimeField]: defineAsyncComponent(() => import("../components/fields/FSDateTimeField.vue")),
10
- [MagicFieldType.IconField] : defineAsyncComponent(() => import("../components/fields/FSIconField.vue")),
11
- [MagicFieldType.TimeField] : defineAsyncComponent(() => import("../components/fields/FSTimeField.vue")),
6
+ [MagicFieldType.NumberField] : defineAsyncComponent(() => import("../components/fields/FSNumberField.vue")),
7
+ [MagicFieldType.TextField] : defineAsyncComponent(() => import("../components/fields/FSTextField.vue")),
8
+ [MagicFieldType.Switch] : defineAsyncComponent(() => import("../components/FSSwitch.vue")),
9
+ [MagicFieldType.DateTimeField] : defineAsyncComponent(() => import("../components/fields/FSDateTimeField.vue")),
10
+ [MagicFieldType.IconField] : defineAsyncComponent(() => import("../components/fields/FSIconField.vue")),
11
+ [MagicFieldType.TimeField] : defineAsyncComponent(() => import("../components/fields/FSTimeField.vue")),
12
+ [MagicFieldType.TimeStepField] : defineAsyncComponent(() => import("../components/fields/FSTimeStepField.vue")),
12
13
  };
13
14
 
14
15
  export const useMagicFieldProvider = () => {
@@ -6,4 +6,5 @@ export enum MagicFieldType {
6
6
  DateTimeField = 4,
7
7
  IconField = 5,
8
8
  TimeField = 6,
9
+ TimeStepField = 7,
9
10
  }
package/models/rules.ts CHANGED
@@ -3,6 +3,7 @@ import { useAppTimeZone } from "@dative-gpi/foundation-shared-services/composabl
3
3
  import { validateExpression } from "@dative-gpi/foundation-shared-domain/tools";
4
4
 
5
5
  import { getTimeBestString } from "../utils";
6
+ import type { TimeUnit } from "@/shared/foundation-shared-domain";
6
7
 
7
8
  const { epochToLongDateFormat } = useAppTimeZone()!;
8
9
  const { $tr } = useTranslationsProvider();
@@ -65,6 +66,10 @@ export const TimeRules = {
65
66
  max: (max: number, message: string | undefined = undefined) => (value: number) => value <= max || (message ?? $tr("ui.rules.time-max", "Must be less than {0}", getTimeBestString(max)))
66
67
  };
67
68
 
69
+ export const TimeStepRules = {
70
+ required: (message: string | undefined = undefined) => (value: { value: number, unit: TimeUnit } | null) => (!!value && value.value !== 0) || (message ?? $tr("ui.rules.required", "Required")),
71
+ }
72
+
68
73
  export const ToggleRules = {
69
74
  required: (message: string | undefined = undefined) => (value: boolean) => value || (message ?? $tr("ui.rules.required", "Required"))
70
75
  };
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.21",
4
+ "version": "1.0.23",
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.21",
14
- "@dative-gpi/foundation-shared-services": "1.0.21"
13
+ "@dative-gpi/foundation-shared-domain": "1.0.23",
14
+ "@dative-gpi/foundation-shared-services": "1.0.23"
15
15
  },
16
16
  "peerDependencies": {
17
17
  "@dative-gpi/bones-ui": "^0.0.75",
@@ -35,5 +35,5 @@
35
35
  "sass": "1.71.1",
36
36
  "sass-loader": "13.3.2"
37
37
  },
38
- "gitHead": "fd3fc21e8eff1096d820f66cce0f2fe3556a2cd7"
38
+ "gitHead": "8e55646ddbc288420407b5a2f423a32699fb5459"
39
39
  }
package/utils/time.ts CHANGED
@@ -14,7 +14,18 @@ export const timeSteps = [
14
14
  { id: TimeUnit.Year, label: $tr("ui.time-step.year.singular", "Year"), plural: $tr("ui.time-step.year.plural", "Years") },
15
15
  ]
16
16
 
17
+ export const timeStepToString = (value: { value: number, unit: TimeUnit } | null): string => {
18
+ if (!value) {
19
+ return "";
20
+ }
17
21
 
22
+ const unit = timeSteps.find(step => step.id === value.unit);
23
+ if (!unit) {
24
+ return "";
25
+ }
26
+
27
+ return `${value.value} ${value.value === 1 ? unit.label.toLowerCase() : unit.plural.toLowerCase()}`;
28
+ }
18
29
 
19
30
  // TODO : remove everything below this line
20
31
  export const timeScale: any[] = [