@dative-gpi/foundation-shared-components 1.0.57 → 1.0.58-groupings

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 (297) hide show
  1. package/assets/images/map/snow.png +0 -0
  2. package/components/FSAccordionPanel.vue +40 -21
  3. package/components/FSBreadcrumbs.vue +21 -12
  4. package/components/FSButton.vue +16 -16
  5. package/components/FSCalendar.vue +50 -12
  6. package/components/FSCalendarTwin.vue +95 -43
  7. package/components/FSCard.vue +61 -9
  8. package/components/FSCardPlaceholder.vue +8 -5
  9. package/components/FSCheckbox.vue +5 -4
  10. package/components/FSChip.vue +73 -45
  11. package/components/FSChipGroup.vue +69 -0
  12. package/components/FSClickable.vue +11 -9
  13. package/components/FSClock.vue +30 -12
  14. package/components/FSCol.vue +11 -5
  15. package/components/FSColorIcon.vue +23 -5
  16. package/components/FSDialog.vue +2 -1
  17. package/components/FSDialogContent.vue +12 -11
  18. package/components/FSDialogForm.vue +22 -2
  19. package/components/FSDialogFormBody.vue +50 -31
  20. package/components/FSDialogMenu.vue +17 -8
  21. package/components/FSDialogMultiFormBody.vue +23 -13
  22. package/components/FSDialogRemove.vue +7 -8
  23. package/components/FSDialogSubmit.vue +20 -11
  24. package/components/FSEditImage.vue +1 -1
  25. package/components/FSEditImageUI.vue +20 -10
  26. package/components/FSFadeOut.vue +53 -21
  27. package/components/FSForm.vue +10 -8
  28. package/components/FSGrid.vue +1 -1
  29. package/components/FSIcon.vue +4 -3
  30. package/components/FSIconCard.vue +68 -12
  31. package/components/FSImage.vue +9 -2
  32. package/components/FSImageUI.vue +8 -15
  33. package/components/FSInformationsMenu.vue +142 -0
  34. package/components/FSInstantPicker.vue +269 -0
  35. package/components/FSLink.vue +25 -9
  36. package/components/FSLoader.vue +28 -10
  37. package/components/FSMenu.vue +47 -0
  38. package/components/FSOptionGroup.vue +57 -9
  39. package/components/FSOptionItem.vue +4 -4
  40. package/components/FSPagination.vue +1 -1
  41. package/components/FSPlayButtons.vue +72 -0
  42. package/components/FSProgressBar.vue +94 -0
  43. package/components/FSRadio.vue +5 -4
  44. package/components/FSRadioGroup.vue +3 -3
  45. package/components/FSRouterLink.vue +42 -0
  46. package/components/FSSlideGroup.vue +19 -5
  47. package/components/FSSlider.vue +6 -5
  48. package/components/FSSpan.vue +12 -7
  49. package/components/FSSwitch.vue +47 -21
  50. package/components/FSTab.vue +15 -13
  51. package/components/FSTabs.vue +32 -7
  52. package/components/FSTag.vue +16 -5
  53. package/components/FSTagGroup.vue +4 -4
  54. package/components/FSText.vue +11 -7
  55. package/components/FSToggleSet.vue +7 -7
  56. package/components/FSWindow.vue +122 -5
  57. package/components/FSWrapGroup.vue +13 -1
  58. package/components/agenda/FSAgenda.vue +26 -7
  59. package/components/agenda/FSAgendaDialogCalendar.vue +2 -2
  60. package/components/agenda/FSAgendaHeader.vue +35 -10
  61. package/components/agenda/FSAgendaHorizontalEvent.vue +18 -6
  62. package/components/agenda/FSAgendaHoursRow.vue +48 -8
  63. package/components/agenda/FSAgendaVerticalEvent.vue +1 -1
  64. package/components/agenda/FSDayAgenda.vue +1 -2
  65. package/components/agenda/FSMonthAgenda.vue +3 -9
  66. package/components/agenda/FSSelectAgendaMode.vue +2 -2
  67. package/components/agenda/FSWeekAgenda.vue +7 -13
  68. package/components/autocompletes/FSAutoCompleteAddress.vue +25 -20
  69. package/components/autocompletes/FSAutocompleteLanguage.vue +7 -1
  70. package/components/autocompletes/FSAutocompleteTimeZone.vue +7 -1
  71. package/components/buttons/FSButtonAdd.vue +1 -1
  72. package/components/buttons/FSButtonAddLabel.vue +1 -1
  73. package/components/buttons/FSButtonCancel.vue +1 -1
  74. package/components/buttons/FSButtonCancelLabel.vue +1 -1
  75. package/components/buttons/FSButtonCheckbox.vue +4 -4
  76. package/components/buttons/FSButtonCopy.vue +1 -1
  77. package/components/buttons/FSButtonCopyLabel.vue +1 -1
  78. package/components/buttons/FSButtonDuplicate.vue +1 -1
  79. package/components/buttons/FSButtonDuplicateLabel.vue +1 -1
  80. package/components/buttons/FSButtonEdit.vue +1 -1
  81. package/components/buttons/FSButtonEditLabel.vue +1 -1
  82. package/components/buttons/FSButtonFile.vue +1 -1
  83. package/components/buttons/FSButtonFileLabel.vue +1 -1
  84. package/components/buttons/FSButtonNext.vue +1 -1
  85. package/components/buttons/FSButtonNextLabel.vue +1 -1
  86. package/components/buttons/FSButtonPrevious.vue +1 -1
  87. package/components/buttons/FSButtonPreviousLabel.vue +1 -1
  88. package/components/buttons/FSButtonRedo.vue +1 -1
  89. package/components/buttons/FSButtonRedoLabel.vue +1 -1
  90. package/components/buttons/FSButtonRemove.vue +1 -1
  91. package/components/buttons/FSButtonRemoveLabel.vue +1 -1
  92. package/components/buttons/FSButtonSave.vue +1 -1
  93. package/components/buttons/FSButtonSaveLabel.vue +1 -1
  94. package/components/buttons/FSButtonSearch.vue +1 -1
  95. package/components/buttons/FSButtonSearchLabel.vue +1 -1
  96. package/components/buttons/FSButtonUndo.vue +1 -1
  97. package/components/buttons/FSButtonUndoLabel.vue +1 -1
  98. package/components/buttons/FSButtonUpdate.vue +1 -1
  99. package/components/buttons/FSButtonUpdateLabel.vue +1 -1
  100. package/components/buttons/FSButtonValidate.vue +1 -1
  101. package/components/buttons/FSButtonValidateLabel.vue +1 -1
  102. package/components/calendar/FSSimpleCalendar.vue +145 -0
  103. package/components/calendar/FSSimpleCalendarHeader.vue +60 -0
  104. package/components/calendar/FSSimpleMonthSelector.vue +138 -0
  105. package/components/deviceOrganisations/FSConnectivity.vue +16 -4
  106. package/components/deviceOrganisations/FSConnectivityCard.vue +17 -45
  107. package/components/deviceOrganisations/FSStatus.vue +16 -4
  108. package/components/deviceOrganisations/FSStatusCard.vue +33 -59
  109. package/components/deviceOrganisations/FSStatusRichCard.vue +171 -0
  110. package/components/deviceOrganisations/FSStatusesCarousel.vue +1 -0
  111. package/components/deviceOrganisations/FSStatusesRow.vue +8 -2
  112. package/components/deviceOrganisations/FSWorstAlert.vue +37 -42
  113. package/components/deviceOrganisations/FSWorstAlertCard.vue +35 -84
  114. package/components/fields/FSAutocompleteField.vue +85 -82
  115. package/components/fields/FSAutocompleteTag.vue +1 -1
  116. package/components/fields/FSBaseField.vue +54 -30
  117. package/components/fields/FSClosableSearchField.vue +83 -0
  118. package/components/fields/FSColorField.vue +48 -44
  119. package/components/fields/FSCommentField.vue +28 -16
  120. package/components/fields/FSDateField.vue +13 -10
  121. package/components/fields/FSDateRangeField.vue +6 -5
  122. package/components/fields/FSDateTimeField.vue +14 -11
  123. package/components/fields/FSDateTimeRangeDialog.vue +160 -0
  124. package/components/fields/FSDateTimeRangeField.vue +23 -115
  125. package/components/fields/FSEntityFieldUI.vue +36 -19
  126. package/components/fields/FSGradientField.vue +5 -5
  127. package/components/fields/FSIconField.vue +16 -9
  128. package/components/fields/FSMagicConfigField.vue +15 -7
  129. package/components/fields/FSMagicField.vue +7 -2
  130. package/components/fields/FSNumberField.vue +9 -4
  131. package/components/fields/FSPasswordField.vue +7 -7
  132. package/components/fields/FSRichTextField.vue +78 -58
  133. package/components/fields/FSSearchField.vue +9 -115
  134. package/components/fields/FSSelectField.vue +69 -71
  135. package/components/fields/FSTagField.vue +10 -10
  136. package/components/fields/FSTermField.vue +72 -47
  137. package/components/fields/FSTextArea.vue +17 -11
  138. package/components/fields/FSTextField.vue +15 -10
  139. package/components/fields/FSTimeField.vue +14 -10
  140. package/components/fields/FSTimeRangeField.vue +310 -0
  141. package/components/fields/FSTimeStepField.vue +5 -5
  142. package/components/fields/FSTranslateField.vue +10 -10
  143. package/components/fields/FSTranslateRichTextField.vue +41 -20
  144. package/components/fields/FSTranslateTextArea.vue +10 -10
  145. package/components/fields/FSTreeViewField.vue +15 -13
  146. package/components/fields/periodicField/FSPeriodicDailyField.vue +7 -7
  147. package/components/fields/periodicField/FSPeriodicField.vue +15 -15
  148. package/components/fields/periodicField/FSPeriodicMonthlyField.vue +16 -16
  149. package/components/fields/periodicField/FSPeriodicWeeklyField.vue +28 -18
  150. package/components/fields/periodicField/FSPeriodicYearlyField.vue +12 -12
  151. package/components/lists/FSDataIteratorItem.vue +23 -67
  152. package/components/lists/FSDataTableUI.vue +220 -137
  153. package/components/lists/FSDraggable.vue +2 -2
  154. package/components/lists/FSFilterButton.vue +14 -16
  155. package/components/lists/FSHeaderButton.vue +11 -9
  156. package/components/lists/FSHiddenButton.vue +9 -9
  157. package/components/lists/FSLoadDataTable.vue +10 -7
  158. package/components/lists/FSSimpleList.vue +95 -82
  159. package/components/lists/FSSimpleListItem.vue +131 -0
  160. package/components/map/FSMap.vue +146 -158
  161. package/components/map/FSMapFeatureGroup.vue +7 -1
  162. package/components/map/FSMapLayerButton.vue +4 -3
  163. package/components/map/FSMapMarker.vue +70 -48
  164. package/components/map/FSMapMarkerClusterGroup.vue +32 -7
  165. package/components/map/FSMapOverlay.vue +44 -24
  166. package/components/map/FSMapPolygon.vue +16 -4
  167. package/components/map/FSMapTileLayer.vue +26 -9
  168. package/components/map/layers.ts +0 -0
  169. package/components/selects/FSSelectAutoRefresh.vue +8 -8
  170. package/components/selects/FSSelectDashboardVariableType.vue +4 -3
  171. package/components/selects/FSSelectDateSetting.vue +2 -2
  172. package/components/selects/FSSelectDays.vue +8 -8
  173. package/components/selects/FSSelectListMode.vue +2 -2
  174. package/components/selects/FSSelectMapLayer.vue +68 -0
  175. package/components/selects/FSSelectMonths.vue +13 -13
  176. package/components/selects/chartSelectors/FSAggregationSelector.vue +52 -0
  177. package/components/selects/chartSelectors/FSAxisTypeSelector.vue +49 -0
  178. package/components/selects/chartSelectors/FSDisplayAsSelector.vue +53 -0
  179. package/components/selects/chartSelectors/FSFilterTypeSelector.vue +54 -0
  180. package/components/selects/chartSelectors/FSHeatmapRuleSelector.vue +54 -0
  181. package/components/selects/chartSelectors/FSOperationOnSelector.vue +53 -0
  182. package/components/selects/chartSelectors/FSPlanningTypeSelector.vue +53 -0
  183. package/components/selects/chartSelectors/FSPlotPerSelector.vue +52 -0
  184. package/components/selects/chartSelectors/FSSelectEntityType.vue +59 -0
  185. package/components/selects/chartSelectors/FSSerieTypeSelector.vue +53 -0
  186. package/components/tiles/FSAlertTileUI.vue +90 -0
  187. package/components/tiles/FSChartTileUI.vue +61 -52
  188. package/components/tiles/FSCommentTileUI.vue +38 -13
  189. package/components/tiles/FSDashboardOrganisationTypeTileUI.vue +14 -2
  190. package/components/tiles/FSDashboardShallowTileUI.vue +14 -2
  191. package/components/tiles/FSDeviceOrganisationTileUI.vue +6 -6
  192. package/components/tiles/FSGroupTileUI.vue +58 -110
  193. package/components/tiles/FSGroupingTileUI.vue +115 -0
  194. package/components/tiles/FSLoadTile.vue +16 -10
  195. package/components/tiles/FSLocationTileUI.vue +63 -55
  196. package/components/tiles/FSModelTileUI.vue +5 -46
  197. package/components/tiles/FSServiceAccountOrganisationTileUI.vue +0 -6
  198. package/components/tiles/FSSimpleTileUI.vue +34 -29
  199. package/components/tiles/FSTile.vue +46 -39
  200. package/components/tiles/FSUserOrganisationTileUI.vue +1 -7
  201. package/components/toggleSets/FSToggleSetPosition.vue +1 -1
  202. package/components/views/FSBaseView.vue +64 -0
  203. package/components/views/FSEntityView.vue +12 -140
  204. package/components/views/FSSimpleView.vue +29 -0
  205. package/components/views/desktop/FSBaseDefaultDesktopView.vue +135 -0
  206. package/components/views/desktop/FSBaseDesktopView.vue +53 -0
  207. package/components/views/desktop/FSBaseEntityDesktopView.vue +211 -0
  208. package/components/views/mobile/FSBaseDefaultMobileView.vue +133 -0
  209. package/components/views/mobile/FSBaseEntityMobileView.vue +206 -0
  210. package/components/views/mobile/FSBaseMobileView.vue +53 -0
  211. package/composables/index.ts +1 -0
  212. package/composables/useAddress.ts +40 -8
  213. package/composables/useBreakpoints.ts +40 -4
  214. package/composables/useColors.ts +16 -7
  215. package/composables/useMagicFieldProvider.ts +1 -0
  216. package/composables/useMapLayers.ts +62 -0
  217. package/composables/useSlots.ts +2 -1
  218. package/models/colors.ts +2 -1
  219. package/models/deviceAlerts.ts +1 -0
  220. package/models/magicFields.ts +1 -0
  221. package/models/map.ts +12 -10
  222. package/models/rules.ts +6 -3
  223. package/models/tables.ts +5 -2
  224. package/models/variableNode.ts +8 -5
  225. package/package.json +5 -5
  226. package/styles/components/fs_agenda.scss +4 -0
  227. package/styles/components/fs_agenda_event.scss +1 -1
  228. package/styles/components/fs_agenda_hours_row.scss +0 -8
  229. package/styles/components/fs_autocomplete_field.scss +0 -13
  230. package/styles/components/fs_breadcrumbs.scss +18 -36
  231. package/styles/components/fs_button.scss +7 -5
  232. package/styles/components/fs_calendar.scss +1 -0
  233. package/styles/components/fs_card.scss +9 -0
  234. package/styles/components/fs_chip.scss +13 -7
  235. package/styles/components/fs_clickable.scss +16 -23
  236. package/styles/components/fs_clock.scss +0 -10
  237. package/styles/components/fs_col.scss +1 -1
  238. package/styles/components/fs_color_field.scss +1 -4
  239. package/styles/components/fs_data_table.scss +6 -9
  240. package/styles/components/fs_dialog.scss +4 -10
  241. package/styles/components/fs_dialog_menu.scss +4 -2
  242. package/styles/components/fs_draggable.scss +0 -5
  243. package/styles/components/fs_edit_image.scss +8 -0
  244. package/styles/components/fs_fade_out.scss +10 -2
  245. package/styles/components/fs_filter_button.scss +1 -6
  246. package/styles/components/fs_hidden_button.scss +2 -7
  247. package/styles/components/fs_image_card.scss +6 -4
  248. package/styles/components/fs_magic_config_field.scss +1 -2
  249. package/styles/components/fs_map.scss +57 -17
  250. package/styles/components/fs_meta_field.scss +3 -5
  251. package/styles/components/fs_option_group.scss +15 -5
  252. package/styles/components/fs_password_field.scss +4 -2
  253. package/styles/components/fs_progress_bar.scss +14 -0
  254. package/styles/components/fs_radio.scss +0 -11
  255. package/styles/components/fs_rich_text_field.scss +1 -10
  256. package/styles/components/fs_select_field.scss +4 -13
  257. package/styles/components/fs_slide_group.scss +7 -0
  258. package/styles/components/fs_span.scss +13 -5
  259. package/styles/components/fs_status_rich_card.scss +6 -0
  260. package/styles/components/fs_switch.scss +1 -0
  261. package/styles/components/fs_tabs.scss +19 -34
  262. package/styles/components/fs_tag.scss +8 -22
  263. package/styles/components/fs_text_area.scss +2 -21
  264. package/styles/components/fs_tile.scss +0 -19
  265. package/styles/components/fs_window.scss +3 -1
  266. package/styles/components/fs_wrap_group.scss +7 -0
  267. package/styles/components/index.scss +2 -6
  268. package/styles/globals/index.scss +1 -5
  269. package/styles/globals/overrides.scss +28 -61
  270. package/styles/globals/scrollbars.scss +8 -0
  271. package/styles/globals/text_fonts.scss +18 -66
  272. package/styles/globals/touchscreen.scss +2 -2
  273. package/tools/alertsTools.ts +87 -12
  274. package/tools/chartsTools.ts +143 -16
  275. package/tools/index.ts +3 -1
  276. package/tools/reportsTools.ts +38 -0
  277. package/tools/timeRangeTools.ts +125 -0
  278. package/utils/badge.ts +9 -5
  279. package/utils/filter.ts +7 -4
  280. package/utils/index.ts +1 -0
  281. package/utils/leafletMarkers.ts +4 -4
  282. package/utils/operations.ts +108 -0
  283. package/utils/sort.ts +2 -2
  284. package/utils/time.ts +16 -16
  285. package/components/fields/FSTimeSlotField.vue +0 -250
  286. package/components/views/FSEntityHeader.vue +0 -350
  287. package/components/views/FSListHeader.vue +0 -83
  288. package/components/views/FSListView.vue +0 -83
  289. package/components/views/FSSkeletonView.vue +0 -100
  290. package/styles/components/fs_data_iterator_item.scss +0 -33
  291. package/styles/components/fs_icon_field.scss +0 -12
  292. package/styles/components/fs_search_field.scss +0 -3
  293. package/styles/components/fs_tag_field.scss +0 -8
  294. package/styles/components/fs_time_field.scss +0 -12
  295. package/styles/components/fs_timeslot_field.scss +0 -12
  296. package/styles/globals/breakpoints.scss +0 -20
  297. package/styles/globals/fixes.scss +0 -5
@@ -0,0 +1,83 @@
1
+ <template>
2
+ <FSSearchField
3
+ :modelValue="$props.modelValue"
4
+ :appendInnerIcon="$props.closable ? $props.appendInnerIcon : null"
5
+ :clearable="false"
6
+ @click:appendInner="onCloseClicked"
7
+ @update:modelValue="$emit('update:modelValue', $event)"
8
+ v-bind="$attrs"
9
+ >
10
+ <template
11
+ v-for="(_, name) in $slots"
12
+ v-slot:[name]="slotData"
13
+ >
14
+ <slot
15
+ :name="name"
16
+ v-bind="slotData"
17
+ />
18
+ </template>
19
+ </FSSearchField>
20
+ </template>
21
+
22
+ <script lang="ts">
23
+ import { defineComponent, type PropType } from "vue";
24
+
25
+ import FSSearchField from "./FSSearchField.vue";
26
+
27
+ export default defineComponent({
28
+ name: "FSClosableSearchField",
29
+ components: {
30
+ FSSearchField
31
+ },
32
+ props: {
33
+ closable: {
34
+ type: Boolean as PropType<boolean>,
35
+ required: false,
36
+ default: true
37
+ },
38
+ unfocusOnClose: {
39
+ type: Boolean as PropType<boolean>,
40
+ required: false,
41
+ default: true
42
+ },
43
+ clearOnClose: {
44
+ type: Boolean as PropType<boolean>,
45
+ required: false,
46
+ default: true
47
+ },
48
+ modelValue: {
49
+ type: String as PropType<string | null>,
50
+ required: false,
51
+ default: null
52
+ },
53
+ appendInnerIcon: {
54
+ type: String as PropType<string | undefined>,
55
+ required: false,
56
+ default: 'mdi-close'
57
+ }
58
+ },
59
+ emits: ["update:modelValue", "close"],
60
+ setup(props, { emit }) {
61
+ const onCloseClicked = ($event: MouseEvent) => {
62
+ if(!props.closable) {
63
+ return;
64
+ }
65
+
66
+ if (props.unfocusOnClose) {
67
+ $event.preventDefault();
68
+ $event.stopPropagation();
69
+ (document.activeElement as HTMLElement)?.blur();
70
+ }
71
+ if (props.clearOnClose) {
72
+ emit('update:modelValue', null);
73
+ }
74
+
75
+ emit('close');
76
+ };
77
+
78
+ return {
79
+ onCloseClicked
80
+ };
81
+ }
82
+ });
83
+ </script>
@@ -1,47 +1,46 @@
1
1
  <template>
2
- <v-menu
3
- :closeOnContentClick="false"
4
- :modelValue="menu && $props.editable"
5
- @update:modelValue="menu = $event"
2
+ <FSBaseField
3
+ class="fs-color-field"
4
+ :description="$props.description"
5
+ :hideHeader="$props.hideHeader"
6
+ :disabled="$props.disabled"
7
+ :required="$props.required"
8
+ :label="$props.label"
9
+ :width="$props.width"
10
+ :style="style"
11
+ :modelValue="innerColor"
12
+ v-bind="$attrs"
6
13
  >
7
- <template
8
- #activator="{ props }"
14
+ <FSCard
15
+ :id="activatorId"
16
+ padding="8px"
17
+ width="100%"
18
+ :class="{ 'fs-color-field-disabled': $props.disabled }"
9
19
  >
10
- <FSBaseField
11
- class="fs-color-field"
12
- :description="$props.description"
13
- :hideHeader="$props.hideHeader"
14
- :editable="$props.editable"
15
- :required="$props.required"
16
- :label="$props.label"
17
- :width="$props.width"
18
- :style="style"
19
- :modelValue="innerColor"
20
- v-bind="$attrs"
20
+ <FSRow
21
+ align="center-center"
21
22
  >
22
- <FSCard
23
- padding="8px"
24
- width="100%"
25
- :class="{ 'fs-color-field-disabled': !$props.editable }"
26
- v-bind="props"
23
+ <FSIcon
24
+ icon="mdi-circle-half"
25
+ size="20px"
26
+ :color="innerColor"
27
+ />
28
+ <FSText
29
+ font="text-overline"
27
30
  >
28
- <FSRow
29
- align="center-center"
30
- >
31
- <FSIcon
32
- icon="mdi-circle-half"
33
- size="20px"
34
- :color="innerColor"
35
- />
36
- <FSText
37
- font="text-overline"
38
- >
39
- {{ innerColor }}
40
- </FSText>
41
- </FSRow>
42
- </FSCard>
43
- </FSBaseField>
44
- </template>
31
+ {{ innerColor }}
32
+ </FSText>
33
+ </FSRow>
34
+ </FSCard>
35
+ </FSBaseField>
36
+ <FSMenu
37
+ origin="top left"
38
+ min-width="300px"
39
+ :activator="`#${activatorId}`"
40
+ :closeOnContentClick="false"
41
+ :modelValue="menu && !$props.disabled"
42
+ @update:modelValue="menu = $event"
43
+ >
45
44
  <FSCard
46
45
  :elevation="true"
47
46
  :border="false"
@@ -73,7 +72,7 @@
73
72
  />
74
73
  </FSCol>
75
74
  </FSCard>
76
- </v-menu>
75
+ </FSMenu>
77
76
  </template>
78
77
 
79
78
  <script lang="ts">
@@ -87,6 +86,7 @@ import FSBaseField from "./FSBaseField.vue";
87
86
  import FSCard from "../FSCard.vue";
88
87
  import FSIcon from "../FSIcon.vue";
89
88
  import FSText from "../FSText.vue";
89
+ import FSMenu from "../FSMenu.vue";
90
90
  import FSRow from "../FSRow.vue";
91
91
  import FSCol from "../FSCol.vue";
92
92
 
@@ -94,6 +94,7 @@ export default defineComponent({
94
94
  name: "FSColorField",
95
95
  components: {
96
96
  FSBaseField,
97
+ FSMenu,
97
98
  FSText,
98
99
  FSCard,
99
100
  FSIcon,
@@ -131,10 +132,10 @@ export default defineComponent({
131
132
  required: false,
132
133
  default: false
133
134
  },
134
- editable: {
135
+ disabled: {
135
136
  type: Boolean,
136
137
  required: false,
137
- default: true
138
+ default: false
138
139
  },
139
140
  allowOpacity: {
140
141
  type: Boolean,
@@ -152,10 +153,11 @@ export default defineComponent({
152
153
  default: "fill"
153
154
  }
154
155
  },
155
- emits: ["update:modelValue", "update:opacity"],
156
+ emits: ["update", "update:modelValue", "update:opacity"],
156
157
  setup(props, { emit }) {
157
158
  const { getColors, getBasePaletteColors } = useColors();
158
159
  const { slots } = useSlots();
160
+ const activatorId = `activator-${Math.random().toString(36).substring(7)}`;
159
161
 
160
162
  delete slots.description;
161
163
 
@@ -169,7 +171,7 @@ export default defineComponent({
169
171
  const fullColor = ref("#00000000");
170
172
 
171
173
  const style = computed((): StyleValue => {
172
- if (!props.editable) {
174
+ if (props.disabled) {
173
175
  return {
174
176
  "--fs-color-field-cursor" : "default",
175
177
  "--fs-color-field-border-color" : lights.base,
@@ -191,6 +193,7 @@ export default defineComponent({
191
193
  fullColor.value = innerColor.value + innerOpacity.value;
192
194
  emit("update:modelValue", innerColor.value);
193
195
  emit("update:opacity", getPercentageFromHex(innerOpacity.value));
196
+ emit("update", { modelValue: innerColor.value, opacity: getPercentageFromHex(innerOpacity.value) });
194
197
  };
195
198
 
196
199
  const reset = (): void => {
@@ -214,6 +217,7 @@ export default defineComponent({
214
217
  getPercentageFromHex,
215
218
  getBasePaletteColors,
216
219
  innerOpacity,
220
+ activatorId,
217
221
  innerColor,
218
222
  fullColor,
219
223
  ColorEnum,
@@ -5,9 +5,10 @@
5
5
  >
6
6
  <FSImage
7
7
  :imageId="userImageId"
8
- :width="32"
9
- :height="32"
8
+ width="32px"
9
+ height="32px"
10
10
  rounded="circle"
11
+ :thumbnail="true"
11
12
  />
12
13
  <FSTextArea
13
14
  :rows="5"
@@ -17,18 +18,21 @@
17
18
  />
18
19
  </FSRow>
19
20
  <FSRow>
20
- <v-spacer></v-spacer>
21
- <FSButtonCancel
22
- v-if="showCancelButton"
23
- @click="$emit('cancel')"
24
- />
25
- <FSButton
26
- :color="ColorEnum.Primary"
27
- :loading="creating"
28
- prependIcon="mdi-send-outline"
29
- :label="buttonLabel ?? $tr('ui.common.publish','Publish')"
30
- @click="() => $emit('submit', innertext)"
31
- />
21
+ <FSRow
22
+ align="center-right"
23
+ >
24
+ <FSButtonCancel
25
+ v-if="showCancelButton"
26
+ @click="$emit('cancel')"
27
+ />
28
+ <FSButton
29
+ prependIcon="mdi-send-outline"
30
+ :color="ColorEnum.Primary"
31
+ :loading="creating"
32
+ :label="buttonLabel ?? $tr('ui.common.publish','Publish')"
33
+ @click="onSubmit"
34
+ />
35
+ </FSRow>
32
36
  </FSRow>
33
37
  </FSCol>
34
38
  </template>
@@ -80,13 +84,21 @@ export default defineComponent({
80
84
  },
81
85
  },
82
86
  emits: ["submit","cancel"],
83
- setup(props) {
87
+ setup(props, { emit }) {
84
88
 
85
89
  const innertext = ref<string | undefined>(props.text);
90
+
91
+ const onSubmit = () => {
92
+ if (innertext.value) {
93
+ emit('submit', innertext.value);
94
+ innertext.value = '';
95
+ }
96
+ };
86
97
 
87
98
  return {
88
99
  innertext,
89
- ColorEnum
100
+ ColorEnum,
101
+ onSubmit,
90
102
  };
91
103
  },
92
104
  })
@@ -10,7 +10,7 @@
10
10
  :color="$props.color"
11
11
  :hideHeader="$props.hideHeader"
12
12
  :required="$props.required"
13
- :editable="$props.editable"
13
+ :disabled="$props.disabled"
14
14
  :readonly="true"
15
15
  :rules="$props.rules"
16
16
  :messages="messages"
@@ -29,7 +29,7 @@
29
29
  <FSButton
30
30
  variant="icon"
31
31
  icon="mdi-calendar"
32
- :editable="$props.editable"
32
+ :disabled="$props.disabled"
33
33
  :color="ColorEnum.Dark"
34
34
  @click="openMobileOverlay"
35
35
  />
@@ -71,9 +71,10 @@
71
71
  <template
72
72
  v-else
73
73
  >
74
- <v-menu
74
+ <FSMenu
75
+ min-width="300px"
75
76
  :closeOnContentClick="false"
76
- :modelValue="menu && $props.editable"
77
+ :modelValue="menu && !$props.disabled"
77
78
  @update:modelValue="menu = $event"
78
79
  >
79
80
  <template
@@ -86,7 +87,7 @@
86
87
  :color="$props.color"
87
88
  :hideHeader="$props.hideHeader"
88
89
  :required="$props.required"
89
- :editable="$props.editable"
90
+ :disabled="$props.disabled"
90
91
  :readonly="true"
91
92
  :rules="$props.rules"
92
93
  :messages="messages"
@@ -105,7 +106,7 @@
105
106
  <FSButton
106
107
  variant="icon"
107
108
  icon="mdi-calendar"
108
- :editable="$props.editable"
109
+ :disabled="$props.disabled"
109
110
  :color="ColorEnum.Dark"
110
111
  />
111
112
  </slot>
@@ -141,7 +142,7 @@
141
142
  />
142
143
  </FSCol>
143
144
  </FSCard>
144
- </v-menu>
145
+ </FSMenu>
145
146
  </template>
146
147
  </FSCol>
147
148
  </template>
@@ -159,6 +160,7 @@ import FSTextField from "./FSTextField.vue";
159
160
  import FSCalendar from "../FSCalendar.vue";
160
161
  import FSButton from "../FSButton.vue";
161
162
  import FSCard from "../FSCard.vue";
163
+ import FSMenu from '../FSMenu.vue';
162
164
  import FSCol from "../FSCol.vue";
163
165
 
164
166
  export default defineComponent({
@@ -169,6 +171,7 @@ export default defineComponent({
169
171
  FSCalendar,
170
172
  FSButton,
171
173
  FSCard,
174
+ FSMenu,
172
175
  FSCol
173
176
  },
174
177
  props: {
@@ -207,10 +210,10 @@ export default defineComponent({
207
210
  required: false,
208
211
  default: () => []
209
212
  },
210
- editable: {
213
+ disabled: {
211
214
  type: Boolean,
212
215
  required: false,
213
- default: true
216
+ default: false
214
217
  }
215
218
  },
216
219
  emits: ["update:modelValue"],
@@ -227,7 +230,7 @@ export default defineComponent({
227
230
  const messages = computed((): string[] => getMessages(props.modelValue, props.rules));
228
231
 
229
232
  const openMobileOverlay = () => {
230
- if (!props.editable) {
233
+ if (props.disabled) {
231
234
  return;
232
235
  }
233
236
  dialog.value = true;
@@ -6,7 +6,7 @@
6
6
  :color="$props.color"
7
7
  :hideHeader="$props.hideHeader"
8
8
  :required="$props.required"
9
- :editable="$props.editable"
9
+ :disabled="$props.disabled"
10
10
  :readonly="true"
11
11
  :rules="$props.rules"
12
12
  :messages="messages"
@@ -15,6 +15,7 @@
15
15
  :modelValue="toShortDateFormat"
16
16
  @click="onClick"
17
17
  @update:modelValue="onClear"
18
+ v-bind="$attrs"
18
19
  >
19
20
  <template
20
21
  #prepend-inner
@@ -25,7 +26,7 @@
25
26
  <FSButton
26
27
  variant="icon"
27
28
  icon="mdi-calendar"
28
- :editable="$props.editable"
29
+ :disabled="$props.disabled"
29
30
  :color="ColorEnum.Dark"
30
31
  />
31
32
  </slot>
@@ -114,10 +115,10 @@ export default defineComponent({
114
115
  required: false,
115
116
  default: () => []
116
117
  },
117
- editable: {
118
+ disabled: {
118
119
  type: Boolean,
119
120
  required: false,
120
- default: true
121
+ default: false
121
122
  }
122
123
  },
123
124
  emits: ["update:modelValue"],
@@ -139,7 +140,7 @@ export default defineComponent({
139
140
  const messages = computed((): string[] => getMessages(props.modelValue, props.rules, true));
140
141
 
141
142
  const onClick = (): void => {
142
- if (props.editable) {
143
+ if (!props.disabled) {
143
144
  dialog.value = true;
144
145
  }
145
146
  };
@@ -10,7 +10,7 @@
10
10
  :color="$props.color"
11
11
  :hideHeader="$props.hideHeader"
12
12
  :required="$props.required"
13
- :editable="$props.editable"
13
+ :disabled="$props.disabled"
14
14
  :readonly="true"
15
15
  :rules="$props.rules"
16
16
  :messages="messages"
@@ -29,7 +29,7 @@
29
29
  <FSButton
30
30
  variant="icon"
31
31
  icon="mdi-calendar"
32
- :editable="$props.editable"
32
+ :disabled="$props.disabled"
33
33
  :color="ColorEnum.Dark"
34
34
  @click="openMobileOverlay"
35
35
  />
@@ -91,9 +91,10 @@
91
91
  <template
92
92
  v-else
93
93
  >
94
- <v-menu
94
+ <FSMenu
95
+ min-width="300px"
95
96
  :closeOnContentClick="false"
96
- :modelValue="menu && $props.editable"
97
+ :modelValue="menu && !$props.disabled"
97
98
  @update:modelValue="menu = $event"
98
99
  >
99
100
  <template
@@ -106,7 +107,7 @@
106
107
  :color="$props.color"
107
108
  :hideHeader="$props.hideHeader"
108
109
  :required="$props.required"
109
- :editable="$props.editable"
110
+ :disabled="$props.disabled"
110
111
  :readonly="true"
111
112
  :rules="$props.rules"
112
113
  :messages="messages"
@@ -125,7 +126,7 @@
125
126
  <FSButton
126
127
  variant="icon"
127
128
  icon="mdi-calendar"
128
- :editable="$props.editable"
129
+ :disabled="$props.disabled"
129
130
  :color="ColorEnum.Dark"
130
131
  />
131
132
  </slot>
@@ -187,7 +188,7 @@
187
188
  </FSCol>
188
189
  </FSCard>
189
190
  </FSWindow>
190
- </v-menu>
191
+ </FSMenu>
191
192
  </template>
192
193
  </FSCol>
193
194
  </template>
@@ -206,6 +207,7 @@ import FSWindow from "../FSWindow.vue";
206
207
  import FSButton from "../FSButton.vue";
207
208
  import FSClock from "../FSClock.vue";
208
209
  import FSCard from "../FSCard.vue";
210
+ import FSMenu from '../FSMenu.vue';
209
211
  import FSCol from "../FSCol.vue";
210
212
 
211
213
  export default defineComponent({
@@ -218,6 +220,7 @@ export default defineComponent({
218
220
  FSButton,
219
221
  FSClock,
220
222
  FSCard,
223
+ FSMenu,
221
224
  FSCol
222
225
  },
223
226
  props: {
@@ -256,10 +259,10 @@ export default defineComponent({
256
259
  required: false,
257
260
  default: () => []
258
261
  },
259
- editable: {
262
+ disabled: {
260
263
  type: Boolean,
261
264
  required: false,
262
- default: true
265
+ default: false
263
266
  }
264
267
  },
265
268
  emits: ["update:modelValue"],
@@ -279,7 +282,7 @@ export default defineComponent({
279
282
  const messages = computed((): string[] => getMessages(props.modelValue, props.rules));
280
283
 
281
284
  const openMobileOverlay = () => {
282
- if (!props.editable) {
285
+ if (props.disabled) {
283
286
  return;
284
287
  }
285
288
  dialog.value = true;
@@ -301,7 +304,7 @@ export default defineComponent({
301
304
  if (props.modelValue) {
302
305
  // FSClock just gives two numbers without consideration for the time zone
303
306
  // We must adjust the time to the user's time zone
304
- innerTime.value = Math.floor((props.modelValue + getUserOffset()) % (24 * 60 * 60 * 1000));
307
+ innerTime.value = Math.floor((props.modelValue + getUserOffset(props.modelValue)) % (24 * 60 * 60 * 1000));
305
308
  innerDate.value = props.modelValue - innerTime.value;
306
309
  }
307
310
  else {