@dative-gpi/foundation-shared-components 0.0.50 → 0.0.51

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.
Files changed (82) hide show
  1. package/components/FSAccordion.vue +3 -3
  2. package/components/FSAccordionPanel.vue +5 -5
  3. package/components/FSBadge.vue +1 -1
  4. package/components/FSBreadcrumbs.vue +1 -1
  5. package/components/FSButton.vue +5 -5
  6. package/components/FSCalendar.vue +19 -9
  7. package/components/FSCalendarTwin.vue +13 -9
  8. package/components/FSCard.vue +11 -2
  9. package/components/FSCarousel.vue +1 -1
  10. package/components/FSCheckbox.vue +4 -4
  11. package/components/FSChip.vue +4 -4
  12. package/components/FSClickable.vue +1 -1
  13. package/components/FSClock.vue +38 -46
  14. package/components/FSCol.vue +1 -1
  15. package/components/FSColor.vue +9 -7
  16. package/components/FSColorIcon.vue +1 -1
  17. package/components/FSDivider.vue +2 -2
  18. package/components/FSEditImage.vue +6 -3
  19. package/components/FSErrorToast.vue +1 -1
  20. package/components/FSFadeOut.vue +1 -1
  21. package/components/FSForm.vue +4 -4
  22. package/components/FSGrid.vue +1 -1
  23. package/components/FSImage.vue +13 -14
  24. package/components/FSLabel.vue +1 -1
  25. package/components/FSLink.vue +1 -1
  26. package/components/FSLoader.vue +1 -1
  27. package/components/FSOptionGroup.vue +3 -3
  28. package/components/FSOptionItem.vue +4 -4
  29. package/components/FSPagination.vue +1 -1
  30. package/components/FSRadio.vue +4 -4
  31. package/components/FSRadioGroup.vue +3 -3
  32. package/components/FSRow.vue +1 -1
  33. package/components/FSSlideGroup.vue +11 -11
  34. package/components/FSSlider.vue +4 -4
  35. package/components/FSSpan.vue +1 -1
  36. package/components/FSSubmitDialog.vue +8 -8
  37. package/components/FSSwitch.vue +4 -4
  38. package/components/FSTab.vue +4 -4
  39. package/components/FSTabs.vue +2 -2
  40. package/components/FSTag.vue +2 -2
  41. package/components/FSText.vue +1 -1
  42. package/components/FSToggleSet.vue +4 -4
  43. package/components/FSWindow.vue +1 -1
  44. package/components/FSWrapGroup.vue +2 -2
  45. package/components/buttons/FSButtonFile.vue +11 -4
  46. package/components/buttons/FSButtonFileIcon.vue +11 -4
  47. package/components/buttons/FSButtonFileLabel.vue +12 -5
  48. package/components/buttons/FSButtonFileMini.vue +12 -5
  49. package/components/deviceOrganisations/FSStatusesCarousel.vue +2 -3
  50. package/components/deviceOrganisations/FSStatusesRow.vue +2 -3
  51. package/components/fields/FSAutocompleteField.vue +5 -5
  52. package/components/fields/FSColorField.vue +3 -3
  53. package/components/fields/FSDateField.vue +8 -7
  54. package/components/fields/FSDateRangeField.vue +6 -6
  55. package/components/fields/FSDateTimeField.vue +14 -12
  56. package/components/fields/FSDateTimeRangeField.vue +10 -12
  57. package/components/fields/FSIconField.vue +10 -10
  58. package/components/fields/FSNumberField.vue +2 -2
  59. package/components/fields/FSPasswordField.vue +4 -4
  60. package/components/fields/FSRichTextField.vue +82 -92
  61. package/components/fields/FSSearchField.vue +8 -8
  62. package/components/fields/FSSelectField.vue +6 -6
  63. package/components/fields/FSTagField.vue +4 -4
  64. package/components/fields/FSTextArea.vue +5 -5
  65. package/components/fields/FSTextField.vue +5 -5
  66. package/components/fields/FSTimeField.vue +15 -9
  67. package/components/fields/FSTimeSlotField.vue +49 -21
  68. package/components/lists/FSDataTableUI.vue +1 -1
  69. package/components/lists/FSDraggable.vue +12 -6
  70. package/components/lists/FSFilterButton.vue +11 -8
  71. package/components/lists/FSLoadDataTable.vue +1 -1
  72. package/components/selects/FSSelectTimeZone.vue +2 -2
  73. package/components/tiles/FSDeviceOrganisationTileUI.vue +3 -3
  74. package/components/tiles/FSGroupTileUI.vue +3 -3
  75. package/components/tiles/FSLoadTile.vue +1 -1
  76. package/components/tiles/FSTile.vue +1 -1
  77. package/composables/useRules.ts +1 -1
  78. package/models/colors.ts +1 -1
  79. package/models/deviceStatuses.ts +1 -1
  80. package/package.json +4 -4
  81. package/styles/components/fs_clock.scss +3 -2
  82. package/styles/globals/overrides.scss +1 -1
@@ -29,7 +29,7 @@
29
29
  class="fs-rich-text-field-icon"
30
30
  :color="toolbarColors.undo"
31
31
  :style="style"
32
- @click="editor.dispatchCommand(UNDO_COMMAND)"
32
+ @click="editor.dispatchCommand(UNDO_COMMAND, undefined)"
33
33
  >
34
34
  mdi-undo-variant
35
35
  </FSIcon>
@@ -186,17 +186,17 @@ export default defineComponent({
186
186
  },
187
187
  props: {
188
188
  label: {
189
- type: String,
189
+ type: String as PropType<string | null>,
190
190
  required: false,
191
191
  default: null
192
192
  },
193
193
  description: {
194
- type: String,
194
+ type: String as PropType<string | null>,
195
195
  required: false,
196
196
  default: null
197
197
  },
198
198
  modelValue: {
199
- type: String,
199
+ type: String as PropType<string | null>,
200
200
  required: false,
201
201
  default: null
202
202
  },
@@ -284,7 +284,7 @@ export default defineComponent({
284
284
 
285
285
  if (props.modelValue != null) {
286
286
  editor.update((): void => {
287
- editor.setEditorState(editor.parseEditorState(props.modelValue));
287
+ editor.setEditorState(editor.parseEditorState(props.modelValue!));
288
288
  });
289
289
  }
290
290
  else {
@@ -298,7 +298,7 @@ export default defineComponent({
298
298
  return ["readonly"].includes(props.variant);
299
299
  });
300
300
 
301
- const style = computed((): {[code: string]: string} & Partial<CSSStyleDeclaration> => {
301
+ const style = computed((): { [key: string] : string | undefined } => {
302
302
  let minHeight: string | undefined = "auto";
303
303
  if (!readonly.value) {
304
304
  const base = isMobileSized.value ? 30 : 42;
@@ -440,106 +440,96 @@ export default defineComponent({
440
440
  const selection = $getSelection();
441
441
  $setSelection(null);
442
442
 
443
- const nodes = selection.extract();
443
+ if (selection != null) {
444
+ const nodes = selection.extract();
444
445
 
445
- if (linkUrl.value === null) {
446
- // Remove LinkNodes
447
- nodes.forEach((node) => {
448
- const parent = node.getParent();
449
-
450
- if ($isLinkNode(parent)) {
451
- const children = parent.getChildren();
452
-
453
- for (let i = 0; i < children.length; i++) {
454
- parent.insertBefore(children[i]);
455
- }
456
-
457
- parent.remove();
458
- }
459
- });
460
- }
461
- else {
462
- if (nodes.length === 1) {
463
- const firstNode = nodes[0];
464
- const linkNode = getAncestor(firstNode, $isLinkNode);
465
-
466
- if (linkNode !== null) {
467
- linkNode.setURL(linkUrl.value);
468
- if (target !== undefined) {
469
- linkNode.setTarget(target);
470
- }
471
- if (rel !== null) {
472
- linkNode.setRel(rel);
473
- }
474
- if (title !== undefined) {
475
- linkNode.setTitle(title);
446
+ if (linkUrl.value === null) {
447
+ // Remove LinkNodes
448
+ nodes.forEach((node) => {
449
+ const parent = node.getParent();
450
+ if ($isLinkNode(parent)) {
451
+ const children = parent.getChildren();
452
+ for (let i = 0; i < children.length; i++) {
453
+ parent.insertBefore(children[i]);
454
+ }
455
+ parent.remove();
476
456
  }
477
- return;
478
- }
457
+ });
479
458
  }
480
-
481
- let prevParent: ElementNode | LinkNode | null = null;
482
- let linkNode: LinkNode | null = null;
483
-
484
- nodes.forEach((node) => {
485
- const parent = node.getParent();
486
-
487
- if ( parent === linkNode || parent === null || ($isElementNode(node) && !node.isInline())) {
488
- return;
489
- }
490
-
491
- if ($isLinkNode(parent)) {
492
- linkNode = parent;
493
- parent.setURL(linkUrl.value);
494
- if (target !== undefined) {
495
- parent.setTarget(target);
496
- }
497
- if (rel !== null) {
498
- linkNode.setRel(rel);
499
- }
500
- if (title !== undefined) {
501
- linkNode.setTitle(title);
459
+ else {
460
+ if (nodes.length === 1) {
461
+ const firstNode = nodes[0];
462
+ const linkNode = getAncestor(firstNode, $isLinkNode);
463
+ if (linkNode !== null) {
464
+ linkNode.setURL(linkUrl.value);
465
+ if (target !== undefined) {
466
+ linkNode.setTarget(target);
467
+ }
468
+ if (rel !== null) {
469
+ linkNode.setRel(rel);
470
+ }
471
+ if (title !== undefined) {
472
+ linkNode.setTitle(title);
473
+ }
474
+ return;
502
475
  }
503
- return;
504
476
  }
505
-
506
- if (!parent.is(prevParent)) {
507
- prevParent = parent;
508
- linkNode = $createLinkNode(linkUrl.value, {rel, target, title});
509
-
477
+ let prevParent: ElementNode | LinkNode | null = null;
478
+ let linkNode: LinkNode | null = null;
479
+ nodes.forEach((node) => {
480
+ const parent = node.getParent();
481
+ if ( parent === linkNode || parent === null || ($isElementNode(node) && !node.isInline())) {
482
+ return;
483
+ }
510
484
  if ($isLinkNode(parent)) {
511
- if (node.getPreviousSibling() === null) {
512
- parent.insertBefore(linkNode);
485
+ linkNode = parent;
486
+ parent.setURL(linkUrl.value);
487
+ if (target !== undefined) {
488
+ parent.setTarget(target);
513
489
  }
514
- else {
515
- parent.insertAfter(linkNode);
490
+ if (rel !== null) {
491
+ linkNode.setRel(rel);
492
+ }
493
+ if (title !== undefined) {
494
+ linkNode.setTitle(title);
516
495
  }
496
+ return;
517
497
  }
518
- else {
519
- node.insertBefore(linkNode);
498
+ if (!parent.is(prevParent)) {
499
+ prevParent = parent;
500
+ linkNode = $createLinkNode(linkUrl.value, {rel, target, title});
501
+
502
+ if ($isLinkNode(parent)) {
503
+ if (node.getPreviousSibling() === null) {
504
+ parent.insertBefore(linkNode);
505
+ }
506
+ else {
507
+ parent.insertAfter(linkNode);
508
+ }
509
+ }
510
+ else {
511
+ node.insertBefore(linkNode);
512
+ }
520
513
  }
521
- }
514
+ if ($isLinkNode(node)) {
515
+ if (node.is(linkNode)) {
516
+ return;
517
+ }
518
+ if (linkNode !== null) {
519
+ const children = node.getChildren();
522
520
 
523
- if ($isLinkNode(node)) {
524
- if (node.is(linkNode)) {
521
+ for (let i = 0; i < children.length; i++) {
522
+ linkNode.append(children[i]);
523
+ }
524
+ }
525
+ node.remove();
525
526
  return;
526
527
  }
527
528
  if (linkNode !== null) {
528
- const children = node.getChildren();
529
-
530
- for (let i = 0; i < children.length; i++) {
531
- linkNode.append(children[i]);
532
- }
529
+ linkNode.append(node);
533
530
  }
534
-
535
- node.remove();
536
- return;
537
- }
538
-
539
- if (linkNode !== null) {
540
- linkNode.append(node);
541
- }
542
- });
531
+ });
532
+ }
543
533
  }
544
534
  });
545
535
  isLink.value = false;
@@ -549,7 +539,7 @@ export default defineComponent({
549
539
  if (JSON.stringify(editor.getEditorState().toJSON()) != props.modelValue) {
550
540
  if (props.modelValue != null) {
551
541
  editor.update(() => {
552
- editor.setEditorState(editor.parseEditorState(props.modelValue));
542
+ editor.setEditorState(editor.parseEditorState(props.modelValue!));
553
543
  });
554
544
  }
555
545
  else if (JSON.stringify(editor.getEditorState().toJSON()) !== emptyState) {
@@ -58,22 +58,22 @@ export default defineComponent({
58
58
  },
59
59
  props: {
60
60
  label: {
61
- type: String,
61
+ type: String as PropType<string | null>,
62
62
  required: false,
63
63
  default: null
64
64
  },
65
65
  description: {
66
- type: String,
66
+ type: String as PropType<string | null>,
67
67
  required: false,
68
68
  default: null
69
69
  },
70
70
  placeholder: {
71
- type: String,
71
+ type: String as PropType<string | null>,
72
72
  required: false,
73
73
  default: null
74
74
  },
75
75
  prependInnerIcon: {
76
- type: String,
76
+ type: String as PropType<string | null>,
77
77
  required: false,
78
78
  default: "mdi-magnify"
79
79
  },
@@ -83,17 +83,17 @@ export default defineComponent({
83
83
  default: "instant"
84
84
  },
85
85
  buttonPrependIcon: {
86
- type: String,
86
+ type: String as PropType<string | null>,
87
87
  required: false,
88
88
  default: null
89
89
  },
90
90
  buttonLabel: {
91
- type: String,
91
+ type: String as PropType<string | null>,
92
92
  required: false,
93
93
  default: null
94
94
  },
95
95
  buttonAppendIcon: {
96
- type: String,
96
+ type: String as PropType<string | null>,
97
97
  required: false,
98
98
  default: null
99
99
  },
@@ -103,7 +103,7 @@ export default defineComponent({
103
103
  default: "standard"
104
104
  },
105
105
  modelValue: {
106
- type: String,
106
+ type: String as PropType<string | null>,
107
107
  required: false,
108
108
  default: null
109
109
  },
@@ -42,7 +42,7 @@
42
42
  :itemTitle="$props.itemTitle"
43
43
  :itemValue="$props.itemValue"
44
44
  :readonly="!$props.editable"
45
- :clearable="$props.editable && $props.clearable"
45
+ :clearable="$props.editable && !!$props.modelValue"
46
46
  :returnObject="$props.returnObject"
47
47
  :rules="$props.rules"
48
48
  :validateOn="validateOn"
@@ -87,12 +87,12 @@ export default defineComponent({
87
87
  },
88
88
  props: {
89
89
  label: {
90
- type: String,
90
+ type: String as PropType<string | null>,
91
91
  required: false,
92
92
  default: null
93
93
  },
94
94
  description: {
95
- type: String,
95
+ type: String as PropType<string | null>,
96
96
  required: false,
97
97
  default: null
98
98
  },
@@ -111,7 +111,7 @@ export default defineComponent({
111
111
  default: "label"
112
112
  },
113
113
  modelValue: {
114
- type: [Array, String, Number] as PropType<(string | number)[] | string | number>,
114
+ type: [Array, String, Number] as PropType<(string | number)[] | string | number | null>,
115
115
  required: false,
116
116
  default: null
117
117
  },
@@ -131,7 +131,7 @@ export default defineComponent({
131
131
  default: false
132
132
  },
133
133
  rules: {
134
- type: Array as PropType<Function[]>,
134
+ type: Array as PropType<any[]>,
135
135
  required: false,
136
136
  default: () => []
137
137
  },
@@ -159,7 +159,7 @@ export default defineComponent({
159
159
  const lights = getColors(ColorEnum.Light);
160
160
  const darks = getColors(ColorEnum.Dark);
161
161
 
162
- const style = computed((): {[code: string]: string} & Partial<CSSStyleDeclaration> => {
162
+ const style = computed((): { [key: string] : string | undefined } => {
163
163
  if (!props.editable) {
164
164
  return {
165
165
  "--fs-select-field-cursor" : "default",
@@ -65,12 +65,12 @@ export default defineComponent({
65
65
  },
66
66
  props: {
67
67
  label: {
68
- type: String,
68
+ type: String as PropType<string | null>,
69
69
  required: false,
70
70
  default: null
71
71
  },
72
72
  description: {
73
- type: String,
73
+ type: String as PropType<string | null>,
74
74
  required: false,
75
75
  default: null
76
76
  },
@@ -100,7 +100,7 @@ export default defineComponent({
100
100
  default: false
101
101
  },
102
102
  rules: {
103
- type: Array as PropType<Function[]>,
103
+ type: Array as PropType<any[]>,
104
104
  required: false,
105
105
  default: () => []
106
106
  },
@@ -121,7 +121,7 @@ export default defineComponent({
121
121
 
122
122
  const innerValue = ref("");
123
123
 
124
- const style = computed((): {[code: string]: string} & Partial<CSSStyleDeclaration> => {
124
+ const style = computed((): { [key: string] : string | undefined } => {
125
125
  if (!props.editable) {
126
126
  return {
127
127
  "--fs-tag-field-color": lights.dark
@@ -87,17 +87,17 @@ export default defineComponent({
87
87
  },
88
88
  props: {
89
89
  label: {
90
- type: String,
90
+ type: String as PropType<string | null>,
91
91
  required: false,
92
92
  default: null
93
93
  },
94
94
  description: {
95
- type: String,
95
+ type: String as PropType<string | null>,
96
96
  required: false,
97
97
  default: null
98
98
  },
99
99
  modelValue: {
100
- type: String,
100
+ type: String as PropType<string | null>,
101
101
  required: false,
102
102
  default: null
103
103
  },
@@ -127,7 +127,7 @@ export default defineComponent({
127
127
  default: false
128
128
  },
129
129
  rules: {
130
- type: Array as PropType<Function[]>,
130
+ type: Array as PropType<any[]>,
131
131
  required: false,
132
132
  default: () => []
133
133
  },
@@ -152,7 +152,7 @@ export default defineComponent({
152
152
  const lights = getColors(ColorEnum.Light);
153
153
  const darks = getColors(ColorEnum.Dark);
154
154
 
155
- const style = computed((): {[code: string]: string} & Partial<CSSStyleDeclaration> => {
155
+ const style = computed((): { [key: string] : string | undefined } => {
156
156
  let height: string | undefined = undefined;
157
157
  let minHeight: string | undefined = undefined;
158
158
  if (!props.autoGrow) {
@@ -86,12 +86,12 @@ export default defineComponent({
86
86
  },
87
87
  props: {
88
88
  label: {
89
- type: String,
89
+ type: String as PropType<string | null>,
90
90
  required: false,
91
91
  default: null
92
92
  },
93
93
  description: {
94
- type: String,
94
+ type: String as PropType<string | null>,
95
95
  required: false,
96
96
  default: null
97
97
  },
@@ -101,7 +101,7 @@ export default defineComponent({
101
101
  default: "text"
102
102
  },
103
103
  modelValue: {
104
- type: String,
104
+ type: String as PropType<string | null>,
105
105
  required: false,
106
106
  default: null
107
107
  },
@@ -116,7 +116,7 @@ export default defineComponent({
116
116
  default: false
117
117
  },
118
118
  rules: {
119
- type: Array as PropType<Function[]>,
119
+ type: Array as PropType<any[]>,
120
120
  required: false,
121
121
  default: () => []
122
122
  },
@@ -144,7 +144,7 @@ export default defineComponent({
144
144
  const lights = getColors(ColorEnum.Light);
145
145
  const darks = getColors(ColorEnum.Dark);
146
146
 
147
- const style = computed((): {[code: string]: string} & Partial<CSSStyleDeclaration> => {
147
+ const style = computed((): { [key: string] : string | undefined } => {
148
148
  if (!props.editable) {
149
149
  return {
150
150
  "--fs-text-field-cursor" : "default",
@@ -94,17 +94,17 @@ export default defineComponent({
94
94
  },
95
95
  props: {
96
96
  label: {
97
- type: String,
97
+ type: String as PropType<string | null>,
98
98
  required: false,
99
99
  default: null
100
100
  },
101
101
  description: {
102
- type: String,
102
+ type: String as PropType<string | null>,
103
103
  required: false,
104
104
  default: null
105
105
  },
106
106
  modelValue: {
107
- type: Number,
107
+ type: Number as PropType<number | null>,
108
108
  required: false,
109
109
  default: null
110
110
  },
@@ -119,7 +119,7 @@ export default defineComponent({
119
119
  default: false
120
120
  },
121
121
  rules: {
122
- type: Array as PropType<Function[]>,
122
+ type: Array as PropType<any[]>,
123
123
  required: false,
124
124
  default: () => []
125
125
  },
@@ -147,15 +147,20 @@ export default defineComponent({
147
147
  const lights = getColors(ColorEnum.Light);
148
148
  const darks = getColors(ColorEnum.Dark);
149
149
 
150
- const innerTime = ref(props.modelValue);
150
+ const innerTime = ref(0);
151
151
  const selectedUnit = ref(timeScale[0]);
152
152
 
153
- if (getTimeScaleIndex(props.modelValue) !== 0) {
154
- selectedUnit.value = timeScale[getTimeScaleIndex(props.modelValue)];
155
- innerTime.value = props.modelValue / selectedUnit.value.id;
153
+ if (props.modelValue) {
154
+ if (getTimeScaleIndex(props.modelValue) !== 0) {
155
+ selectedUnit.value = timeScale[getTimeScaleIndex(props.modelValue)];
156
+ innerTime.value = props.modelValue / selectedUnit.value.id;
157
+ }
158
+ else {
159
+ innerTime.value = props.modelValue;
160
+ }
156
161
  }
157
162
 
158
- const style = computed((): {[code: string]: string} & Partial<CSSStyleDeclaration> => {
163
+ const style = computed((): { [key: string] : string | undefined } => {
159
164
  if (!props.editable) {
160
165
  return {
161
166
  "--fs-time-field-cursor" : "default",
@@ -193,6 +198,7 @@ export default defineComponent({
193
198
  timeScale,
194
199
  messages,
195
200
  blurred,
201
+ slots,
196
202
  style,
197
203
  onSubmitTimeScale,
198
204
  onSubmitValue
@@ -56,7 +56,6 @@
56
56
  class="fs-time-slot-field-number"
57
57
  :editable="$props.editable"
58
58
  :color="ColorEnum.Light"
59
- :reminder="false"
60
59
  :slider="false"
61
60
  :style="style"
62
61
  :modelValue="$props.modelValue[0][1]"
@@ -80,7 +79,6 @@
80
79
  class="fs-time-slot-field-number"
81
80
  :editable="$props.editable"
82
81
  :color="ColorEnum.Light"
83
- :reminder="false"
84
82
  :slider="false"
85
83
  :style="style"
86
84
  :modelValue="$props.modelValue[1][1]"
@@ -125,17 +123,17 @@ export default defineComponent({
125
123
  },
126
124
  props: {
127
125
  label: {
128
- type: String,
126
+ type: String as PropType<string | null>,
129
127
  required: false,
130
128
  default: null
131
129
  },
132
130
  description: {
133
- type: String,
131
+ type: String as PropType<string | null>,
134
132
  required: false,
135
133
  default: null
136
134
  },
137
135
  modelValue: {
138
- type: Array as PropType<number[][]>,
136
+ type: Array as PropType<number[][] | null>,
139
137
  required: true,
140
138
  default: null
141
139
  },
@@ -150,7 +148,7 @@ export default defineComponent({
150
148
  default: false
151
149
  },
152
150
  rules: {
153
- type: Array as PropType<Function[]>,
151
+ type: Array as PropType<any[]>,
154
152
  required: false,
155
153
  default: () => []
156
154
  },
@@ -179,16 +177,16 @@ export default defineComponent({
179
177
  const darks = getColors(ColorEnum.Dark);
180
178
 
181
179
  const daysObject: { id: number; label: string }[] = Object.keys(Days).reduce((acc, key) => {
182
- if(isNaN(Number(key))){
180
+ if (isNaN(Number(key))) {
183
181
  acc.push({
184
182
  id: Days[key],
185
183
  label: key
186
184
  });
187
185
  }
188
186
  return acc;
189
- }, []);
187
+ }, [] as { id: number, label: string }[]);
190
188
 
191
- const style = computed((): {[code: string]: string} & Partial<CSSStyleDeclaration> => {
189
+ const style = computed((): { [key: string] : string | undefined } => {
192
190
  if (!props.editable) {
193
191
  return {
194
192
  "--fs-time-slot-field-cursor" : "default",
@@ -208,45 +206,75 @@ export default defineComponent({
208
206
  });
209
207
 
210
208
  const dayStart = computed((): number => {
211
- return props.modelValue[1][0] === 7 ? 7 : props.modelValue[0][0];
209
+ if (props.modelValue) {
210
+ return props.modelValue[1][0] === 7 ? 7 : props.modelValue[0][0];
211
+ }
212
+ return 0;
212
213
  });
213
214
 
214
215
  const dayEnd = computed((): number => {
215
- return props.modelValue[0][0] === 7 ? 7 : props.modelValue[1][0];
216
+ if (props.modelValue) {
217
+ return props.modelValue[0][0] === 7 ? 7 : props.modelValue[1][0];
218
+ }
219
+ return 0;
216
220
  });
217
221
 
218
222
  const messages = computed((): string[] => props.messages ?? getMessages(props.modelValue, props.rules));
219
223
 
220
224
  const onChangeDayStart = (value: number) => {
221
225
  if (value === 7) {
222
- emit("update:modelValue", [[7, props.modelValue[0][1]], [7, props.modelValue[1][1]]]);
226
+ if (props.modelValue) {
227
+ emit("update:modelValue", [[7, props.modelValue[0][1]], [7, props.modelValue[1][1]]]);
228
+ return;
229
+ }
230
+ emit("update:modelValue", [[7, 0], [7, 0]]);
223
231
  return;
224
232
  }
225
- if (props.modelValue[1][0] === 7) {
226
- emit("update:modelValue", [[value, props.modelValue[0][1]], [value, props.modelValue[1][1]]]);
233
+ if (props.modelValue) {
234
+ if (props.modelValue[1][0] === 7) {
235
+ emit("update:modelValue", [[value, props.modelValue[0][1]], [value, props.modelValue[1][1]]]);
236
+ return;
237
+ }
238
+ emit("update:modelValue", [[value, props.modelValue[0][1]], props.modelValue[1]]);
227
239
  return;
228
240
  }
229
- emit("update:modelValue", [[value, props.modelValue[0][1]], props.modelValue[1]]);
241
+ emit("update:modelValue", [[value, 0], [value, 0]]);
230
242
  };
231
243
 
232
244
  const onChangeHourStart = (value: number) => {
233
- emit("update:modelValue", [[props.modelValue[0][0], value], props.modelValue[1]]);
245
+ if (props.modelValue) {
246
+ emit("update:modelValue", [[props.modelValue[0][0], value], props.modelValue[1]]);
247
+ return;
248
+ }
249
+ emit("update:modelValue", [[0, value], [0, 0]]);
234
250
  };
235
251
 
236
252
  const onChangeDayEnd = (value: number) => {
237
253
  if (value === 7) {
238
- emit("update:modelValue", [[7, props.modelValue[0][1]], [7, props.modelValue[1][1]]]);
254
+ if (props.modelValue) {
255
+ emit("update:modelValue", [[7, props.modelValue[0][1]], [7, props.modelValue[1][1]]]);
256
+ return;
257
+ }
258
+ emit("update:modelValue", [[7, 0], [7, 0]]);
239
259
  return;
240
260
  }
241
- if (props.modelValue[0][0] === 7) {
242
- emit("update:modelValue", [[value, props.modelValue[0][1]], [value, props.modelValue[1][1]]]);
261
+ if (props.modelValue) {
262
+ if (props.modelValue[0][0] === 7) {
263
+ emit("update:modelValue", [[value, props.modelValue[0][1]], [value, props.modelValue[1][1]]]);
264
+ return;
265
+ }
266
+ emit("update:modelValue", [props.modelValue[0], [value, props.modelValue[1][1]]]);
243
267
  return;
244
268
  }
245
- emit("update:modelValue", [props.modelValue[0], [value, props.modelValue[1][1]]]);
269
+ emit("update:modelValue", [[value, 0], [value, 0]]);
246
270
  };
247
271
 
248
272
  const onChangeHourEnd = (value: number) => {
249
- emit("update:modelValue", [props.modelValue[0], [props.modelValue[1][0], value]]);
273
+ if (props.modelValue) {
274
+ emit("update:modelValue", [props.modelValue[0], [props.modelValue[1][0], value]]);
275
+ return;
276
+ }
277
+ emit("update:modelValue", [[0, 0], [0, value]]);
250
278
  };
251
279
 
252
280
  return {