@dative-gpi/foundation-shared-components 1.0.35 → 1.0.37-report-v1
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/FSBreadcrumbs.vue +21 -12
- package/components/FSButton.vue +10 -10
- package/components/FSCalendar.vue +52 -14
- package/components/FSCalendarTwin.vue +96 -40
- package/components/FSCard.vue +28 -7
- package/components/FSCardPlaceholder.vue +8 -5
- package/components/FSChip.vue +12 -2
- package/components/FSClickable.vue +12 -13
- package/components/FSClock.vue +16 -7
- package/components/FSColorIcon.vue +23 -5
- package/components/FSDialog.vue +2 -1
- package/components/FSDialogContent.vue +12 -11
- package/components/FSDialogForm.vue +22 -2
- package/components/FSDialogFormBody.vue +47 -28
- package/components/FSDialogMenu.vue +17 -8
- package/components/FSDialogMultiFormBody.vue +77 -54
- package/components/FSDialogRemove.vue +8 -8
- package/components/FSDialogSubmit.vue +17 -8
- package/components/FSEditImage.vue +1 -1
- package/components/FSEditImageUI.vue +20 -10
- package/components/FSFadeOut.vue +53 -21
- package/components/FSForm.vue +10 -8
- package/components/FSGrid.vue +1 -1
- package/components/FSIcon.vue +2 -1
- package/components/FSIconCard.vue +47 -7
- package/components/FSImage.vue +12 -4
- package/components/FSImageUI.vue +8 -15
- package/components/FSInstantPicker.vue +266 -0
- package/components/FSLink.vue +25 -9
- package/components/FSLoader.vue +28 -11
- package/components/FSOptionGroup.vue +51 -3
- package/components/FSPlayButtons.vue +72 -0
- package/components/FSProgressBar.vue +94 -0
- package/components/FSRouterLink.vue +42 -0
- package/components/FSSlideGroup.vue +19 -5
- package/components/FSSpan.vue +17 -7
- package/components/FSSwitch.vue +57 -27
- package/components/FSTab.vue +15 -13
- package/components/FSTabs.vue +32 -7
- package/components/FSTag.vue +14 -3
- package/components/FSTagGroup.vue +1 -1
- package/components/FSText.vue +11 -7
- package/components/FSWindow.vue +128 -4
- package/components/FSWrapGroup.vue +13 -1
- package/components/agenda/FSAgenda.vue +223 -0
- package/components/agenda/FSAgendaDialogCalendar.vue +76 -0
- package/components/agenda/FSAgendaHeader.vue +215 -0
- package/components/agenda/FSAgendaHorizontalEvent.vue +174 -0
- package/components/agenda/FSAgendaHorizontalTimeLineMarker.vue +46 -0
- package/components/agenda/FSAgendaHoursCol.vue +103 -0
- package/components/agenda/FSAgendaHoursRow.vue +164 -0
- package/components/agenda/FSAgendaVerticalEvent.vue +160 -0
- package/components/agenda/FSAgendaVerticalTimeLineMarker.vue +46 -0
- package/components/agenda/FSDayAgenda.vue +199 -0
- package/components/agenda/FSMonthAgenda.vue +252 -0
- package/components/agenda/FSSelectAgendaMode.vue +54 -0
- package/components/agenda/FSWeekAgenda.vue +323 -0
- package/components/autocompletes/FSAutoCompleteAddress.vue +22 -20
- package/components/autocompletes/FSAutocompleteLanguage.vue +7 -1
- package/components/autocompletes/FSAutocompleteTimeZone.vue +7 -1
- package/components/buttons/FSButtonAdd.vue +1 -1
- package/components/buttons/FSButtonAddLabel.vue +1 -1
- package/components/buttons/FSButtonCancel.vue +1 -1
- package/components/buttons/FSButtonCancelLabel.vue +1 -1
- package/components/buttons/FSButtonCopy.vue +1 -1
- package/components/buttons/FSButtonCopyLabel.vue +1 -1
- package/components/buttons/FSButtonDragIcon.vue +27 -0
- package/components/buttons/FSButtonDuplicate.vue +1 -1
- package/components/buttons/FSButtonDuplicateLabel.vue +1 -1
- package/components/buttons/FSButtonEdit.vue +1 -1
- package/components/buttons/FSButtonEditLabel.vue +1 -1
- package/components/buttons/FSButtonFile.vue +1 -1
- package/components/buttons/FSButtonFileLabel.vue +1 -1
- package/components/buttons/FSButtonNext.vue +1 -1
- package/components/buttons/FSButtonNextLabel.vue +1 -1
- package/components/buttons/FSButtonPrevious.vue +1 -1
- package/components/buttons/FSButtonPreviousLabel.vue +1 -1
- package/components/buttons/FSButtonRedo.vue +1 -1
- package/components/buttons/FSButtonRedoLabel.vue +1 -1
- package/components/buttons/FSButtonRemove.vue +1 -1
- package/components/buttons/FSButtonRemoveLabel.vue +1 -1
- package/components/buttons/FSButtonSave.vue +1 -1
- package/components/buttons/FSButtonSaveLabel.vue +1 -1
- package/components/buttons/FSButtonSearch.vue +1 -1
- package/components/buttons/FSButtonSearchLabel.vue +1 -1
- package/components/buttons/FSButtonUndo.vue +1 -1
- package/components/buttons/FSButtonUndoLabel.vue +1 -1
- package/components/buttons/FSButtonUpdate.vue +1 -1
- package/components/buttons/FSButtonUpdateLabel.vue +1 -1
- package/components/buttons/FSButtonValidate.vue +1 -1
- package/components/buttons/FSButtonValidateLabel.vue +1 -1
- package/components/calendar/FSSimpleCalendar.vue +145 -0
- package/components/calendar/FSSimpleCalendarHeader.vue +60 -0
- package/components/calendar/FSSimpleMonthSelector.vue +138 -0
- package/components/deviceOrganisations/FSConnectivity.vue +11 -1
- package/components/deviceOrganisations/FSConnectivityCard.vue +19 -47
- package/components/deviceOrganisations/FSStatus.vue +11 -1
- package/components/deviceOrganisations/FSStatusCard.vue +35 -61
- package/components/deviceOrganisations/FSStatusesCarousel.vue +1 -0
- package/components/deviceOrganisations/FSStatusesRow.vue +9 -3
- package/components/deviceOrganisations/FSWorstAlert.vue +30 -37
- package/components/deviceOrganisations/FSWorstAlertCard.vue +36 -85
- package/components/fields/FSAutocompleteField.vue +445 -463
- package/components/fields/FSAutocompleteTag.vue +1 -1
- package/components/fields/FSBaseField.vue +44 -27
- package/components/fields/FSColorField.vue +42 -39
- package/components/fields/FSCommentField.vue +105 -0
- package/components/fields/FSDateField.vue +3 -2
- package/components/fields/FSDateRangeField.vue +3 -2
- package/components/fields/FSDateTimeField.vue +4 -3
- package/components/fields/FSDateTimeRangeField.vue +8 -6
- package/components/fields/FSEntityFieldUI.vue +271 -0
- package/components/fields/FSGradientField.vue +27 -33
- package/components/fields/FSIconField.vue +0 -1
- package/components/fields/FSMagicConfigField.vue +10 -3
- package/components/fields/FSMagicField.vue +9 -4
- package/components/fields/FSNumberField.vue +6 -1
- package/components/fields/FSRichTextField.vue +102 -52
- package/components/fields/FSSearchField.vue +9 -115
- package/components/fields/FSSelectField.vue +477 -252
- package/components/fields/FSTagField.vue +1 -1
- package/components/fields/FSTermField.vue +42 -17
- package/components/fields/FSTextArea.vue +26 -7
- package/components/fields/FSTextField.vue +8 -3
- package/components/fields/FSTimeRangeField.vue +304 -0
- package/components/fields/FSTimeStepField.vue +3 -3
- package/components/fields/FSTranslateField.vue +4 -3
- package/components/fields/FSTranslateRichTextField.vue +32 -12
- package/components/fields/FSTranslateTextArea.vue +233 -0
- package/components/fields/periodicField/FSPeriodicDailyField.vue +2 -2
- package/components/fields/periodicField/FSPeriodicField.vue +8 -8
- package/components/fields/periodicField/FSPeriodicMonthlyField.vue +8 -8
- package/components/fields/periodicField/FSPeriodicWeeklyField.vue +23 -13
- package/components/fields/periodicField/FSPeriodicYearlyField.vue +6 -6
- package/components/lists/FSDataTableUI.vue +173 -103
- package/components/lists/FSDraggable.vue +2 -2
- package/components/lists/FSFilterButton.vue +7 -11
- package/components/lists/FSHeaderButton.vue +4 -4
- package/components/lists/FSHiddenButton.vue +3 -5
- package/components/lists/FSLoadDataTable.vue +10 -7
- package/components/lists/FSSimpleList.vue +234 -0
- package/components/lists/FSSimpleListItem.vue +132 -0
- package/components/map/FSMap.vue +83 -33
- package/components/map/FSMapFeatureGroup.vue +2 -2
- package/components/map/FSMapLayerButton.vue +3 -3
- package/components/map/FSMapMarker.vue +11 -7
- package/components/map/FSMapMarkerClusterGroup.vue +8 -3
- package/components/map/FSMapOverlay.vue +37 -20
- package/components/map/FSMapPolygon.vue +5 -5
- package/components/map/FSMapTileLayer.vue +2 -2
- package/components/map/keys.ts +3 -3
- package/components/selects/FSSelectAutoRefresh.vue +9 -9
- package/components/selects/FSSelectDashboardVariableType.vue +5 -4
- package/components/selects/FSSelectDateSetting.vue +3 -2
- package/components/selects/FSSelectDays.vue +9 -9
- package/components/selects/FSSelectListMode.vue +51 -0
- package/components/selects/FSSelectMonths.vue +14 -14
- package/components/selects/chartSelectors/FSAggregationSelector.vue +52 -0
- package/components/selects/chartSelectors/FSAxisTypeSelector.vue +49 -0
- package/components/selects/chartSelectors/FSDisplayAsSelector.vue +53 -0
- package/components/selects/chartSelectors/FSFilterTypeSelector.vue +54 -0
- package/components/selects/chartSelectors/FSHeatmapRuleSelector.vue +54 -0
- package/components/selects/chartSelectors/FSOperationOnSelector.vue +53 -0
- package/components/selects/chartSelectors/FSPlanningTypeSelector.vue +53 -0
- package/components/selects/chartSelectors/FSPlotPerSelector.vue +52 -0
- package/components/selects/chartSelectors/FSSelectEntityType.vue +59 -0
- package/components/selects/chartSelectors/FSSerieTypeSelector.vue +53 -0
- package/components/tiles/FSAlertTileUI.vue +90 -0
- package/components/tiles/FSChartTileUI.vue +111 -0
- package/components/tiles/FSCommentTileUI.vue +174 -0
- package/components/tiles/FSDeviceOrganisationTileUI.vue +6 -0
- package/components/tiles/FSGroupTileUI.vue +2 -2
- package/components/tiles/FSLoadTile.vue +2 -0
- package/components/tiles/FSLocationTileUI.vue +192 -0
- package/components/tiles/FSModelTileUI.vue +18 -0
- package/components/tiles/FSSimpleTileUI.vue +9 -4
- package/components/tiles/FSTile.vue +93 -74
- package/components/tiles/FSUserOrganisationTileUI.vue +1 -1
- package/components/toggleSets/FSToggleSetPosition.vue +2 -2
- package/components/views/FSBaseView.vue +64 -0
- package/components/views/FSEntityView.vue +12 -140
- package/components/views/FSSimpleView.vue +29 -0
- package/components/views/desktop/FSBaseDefaultDesktopView.vue +135 -0
- package/components/views/desktop/FSBaseDesktopView.vue +53 -0
- package/components/views/desktop/FSBaseEntityDesktopView.vue +209 -0
- package/components/views/mobile/FSBaseDefaultMobileView.vue +133 -0
- package/components/views/mobile/FSBaseEntityMobileView.vue +199 -0
- package/components/views/mobile/FSBaseMobileView.vue +53 -0
- package/composables/useBreakpoints.ts +39 -3
- package/composables/useColors.ts +3 -2
- package/composables/useMagicFieldProvider.ts +1 -0
- package/composables/useSlots.ts +2 -1
- package/models/agenda.ts +9 -0
- package/models/deviceAlerts.ts +1 -1
- package/models/deviceConnectivities.ts +1 -1
- package/models/index.ts +1 -0
- package/models/magicFields.ts +1 -0
- package/models/map.ts +2 -2
- package/models/rules.ts +8 -5
- package/models/tables.ts +5 -2
- package/models/variableNode.ts +8 -5
- package/package.json +5 -5
- package/styles/components/fs_agenda.scss +36 -0
- package/styles/components/fs_agenda_event.scss +41 -0
- package/styles/components/fs_agenda_hours_col.scss +4 -0
- package/styles/components/fs_agenda_hours_row.scss +5 -0
- package/styles/components/fs_agenda_time_line_marker.scss +19 -0
- package/styles/components/fs_autocomplete_field.scss +0 -13
- package/styles/components/fs_breadcrumbs.scss +18 -36
- package/styles/components/fs_button.scss +7 -5
- package/styles/components/fs_chip.scss +8 -6
- package/styles/components/fs_clickable.scss +18 -23
- package/styles/components/fs_clock.scss +0 -10
- package/styles/components/fs_color_field.scss +1 -4
- package/styles/components/fs_data_iterator_item.scss +12 -10
- package/styles/components/fs_data_table.scss +6 -9
- package/styles/components/fs_dialog.scss +7 -17
- package/styles/components/fs_dialog_menu.scss +4 -2
- package/styles/components/fs_edit_image.scss +8 -0
- package/styles/components/fs_fade_out.scss +10 -2
- package/styles/components/fs_filter_button.scss +1 -6
- package/styles/components/fs_gradient_field.scss +11 -11
- package/styles/components/fs_hidden_button.scss +2 -7
- package/styles/components/fs_image_card.scss +6 -4
- package/styles/components/fs_magic_config_field.scss +1 -2
- package/styles/components/fs_map.scss +11 -7
- package/styles/components/fs_meta_field.scss +3 -5
- package/styles/components/fs_option_group.scss +15 -5
- package/styles/components/fs_password_field.scss +4 -2
- package/styles/components/fs_progress_bar.scss +14 -0
- package/styles/components/fs_radio.scss +0 -11
- package/styles/components/fs_rich_text_field.scss +1 -9
- package/styles/components/fs_select_date_settings.scss +3 -0
- package/styles/components/fs_select_field.scss +4 -13
- package/styles/components/fs_slide_group.scss +7 -0
- package/styles/components/fs_span.scss +13 -4
- package/styles/components/fs_switch.scss +1 -0
- package/styles/components/fs_tabs.scss +19 -33
- package/styles/components/fs_tag.scss +8 -22
- package/styles/components/fs_text_area.scss +13 -17
- package/styles/components/fs_tile.scss +21 -15
- package/styles/components/fs_window.scss +7 -0
- package/styles/components/fs_wrap_group.scss +7 -0
- package/styles/components/index.scss +6 -4
- package/styles/globals/index.scss +1 -5
- package/styles/globals/overrides.scss +28 -61
- package/styles/globals/scrollbars.scss +10 -0
- package/styles/globals/text_fonts.scss +18 -66
- package/tools/alertsTools.ts +69 -0
- package/tools/chartsTools.ts +427 -0
- package/tools/index.ts +4 -0
- package/tools/reportsTools.ts +38 -0
- package/tools/timeRangeTools.ts +125 -0
- package/utils/filter.ts +18 -0
- package/utils/index.ts +2 -0
- package/utils/leafletMarkers.ts +4 -4
- package/utils/operations.ts +69 -0
- package/utils/sort.ts +2 -2
- package/utils/statuses.ts +1 -1
- package/utils/time.ts +17 -17
- package/components/fields/FSTimeSlotField.vue +0 -250
- package/components/views/FSEntityHeader.vue +0 -350
- package/components/views/FSListHeader.vue +0 -83
- package/components/views/FSListView.vue +0 -83
- package/components/views/FSSkeletonView.vue +0 -100
- package/styles/components/fs_icon_field.scss +0 -12
- package/styles/components/fs_tag_field.scss +0 -8
- package/styles/components/fs_time_field.scss +0 -12
- package/styles/components/fs_timeslot_field.scss +0 -12
- package/styles/globals/breakpoints.scss +0 -20
- package/styles/globals/fixes.scss +0 -5
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-breadcrumbs
|
|
3
|
-
|
|
3
|
+
class="fs-breadcrumbs"
|
|
4
|
+
:items="items"
|
|
4
5
|
:style="style"
|
|
5
6
|
v-bind="$attrs"
|
|
6
7
|
>
|
|
@@ -8,7 +9,7 @@
|
|
|
8
9
|
#title="{ item }"
|
|
9
10
|
>
|
|
10
11
|
<FSSpan
|
|
11
|
-
|
|
12
|
+
class="fs-breadcrumbs-label"
|
|
12
13
|
>
|
|
13
14
|
{{ item.title }}
|
|
14
15
|
</FSSpan>
|
|
@@ -30,7 +31,9 @@
|
|
|
30
31
|
import { computed, defineComponent, type PropType, type StyleValue } from "vue";
|
|
31
32
|
|
|
32
33
|
import { ColorEnum, type FSBreadcrumbItem } from "@dative-gpi/foundation-shared-components/models";
|
|
33
|
-
import { useColors } from "@dative-gpi/foundation-shared-components/composables";
|
|
34
|
+
import { useBreakpoints, useColors } from "@dative-gpi/foundation-shared-components/composables";
|
|
35
|
+
|
|
36
|
+
import { sizeToVar } from "../utils";
|
|
34
37
|
|
|
35
38
|
import FSSpan from "./FSSpan.vue";
|
|
36
39
|
import FSIcon from "./FSIcon.vue";
|
|
@@ -48,28 +51,34 @@ export default defineComponent({
|
|
|
48
51
|
default: () => []
|
|
49
52
|
}
|
|
50
53
|
},
|
|
51
|
-
setup() {
|
|
54
|
+
setup(props) {
|
|
55
|
+
const { isExtraSmall } = useBreakpoints();
|
|
52
56
|
const { getColors } = useColors();
|
|
53
57
|
|
|
54
58
|
const darks = getColors(ColorEnum.Dark);
|
|
55
59
|
|
|
56
60
|
const style = computed((): StyleValue => ({
|
|
61
|
+
"--fs-breadcrumbs-height" : sizeToVar(["20px", "16px"]),
|
|
57
62
|
"--fs-breadcrumbs-color" : darks.dark,
|
|
58
63
|
"--fs-breadcrumbs-active-color" : darks.base,
|
|
59
64
|
"--fs-breadcrumbs-disabled-color": darks.soft
|
|
60
65
|
}));
|
|
61
66
|
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
67
|
+
const items = computed((): FSBreadcrumbItem[] => {
|
|
68
|
+
if (isExtraSmall.value && props.items.length > 3) {
|
|
69
|
+
const mobileItems: FSBreadcrumbItem[] = [0, -2, -1].map((index) => props.items.at(index)!)
|
|
70
|
+
mobileItems.splice(1, 0, {
|
|
71
|
+
title : "...",
|
|
72
|
+
disabled : true
|
|
73
|
+
});
|
|
74
|
+
return mobileItems;
|
|
66
75
|
}
|
|
67
|
-
return
|
|
68
|
-
};
|
|
76
|
+
return props.items;
|
|
77
|
+
});
|
|
69
78
|
|
|
70
79
|
return {
|
|
71
|
-
|
|
72
|
-
|
|
80
|
+
items,
|
|
81
|
+
style
|
|
73
82
|
};
|
|
74
83
|
}
|
|
75
84
|
});
|
package/components/FSButton.vue
CHANGED
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
<template
|
|
130
130
|
v-else-if="$props.to"
|
|
131
131
|
>
|
|
132
|
-
<
|
|
132
|
+
<FSRouterLink
|
|
133
133
|
:to="$props.to"
|
|
134
134
|
>
|
|
135
135
|
<FSIcon
|
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
>
|
|
144
144
|
{{ $props.label }}
|
|
145
145
|
</FSSpan>
|
|
146
|
-
</
|
|
146
|
+
</FSRouterLink>
|
|
147
147
|
</template>
|
|
148
148
|
<template
|
|
149
149
|
v-else
|
|
@@ -170,6 +170,7 @@ import { type RouteLocation } from "vue-router";
|
|
|
170
170
|
import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
|
|
171
171
|
import { useColors } from "@dative-gpi/foundation-shared-components/composables";
|
|
172
172
|
|
|
173
|
+
import FSRouterLink from "./FSRouterLink.vue";
|
|
173
174
|
import FSClickable from "./FSClickable.vue";
|
|
174
175
|
import FSSpan from "./FSSpan.vue";
|
|
175
176
|
import FSIcon from "./FSIcon.vue";
|
|
@@ -185,6 +186,7 @@ const DEFAULT_PADDING = PADDING_ICON_LABEL;
|
|
|
185
186
|
export default defineComponent({
|
|
186
187
|
name: "FSButton",
|
|
187
188
|
components: {
|
|
189
|
+
FSRouterLink,
|
|
188
190
|
FSClickable,
|
|
189
191
|
FSSpan,
|
|
190
192
|
FSIcon,
|
|
@@ -198,7 +200,7 @@ export default defineComponent({
|
|
|
198
200
|
default: DEFAULT_PADDING
|
|
199
201
|
},
|
|
200
202
|
to: {
|
|
201
|
-
type:
|
|
203
|
+
type: Object as PropType<RouteLocation | null>,
|
|
202
204
|
required: false,
|
|
203
205
|
default: null
|
|
204
206
|
},
|
|
@@ -230,7 +232,7 @@ export default defineComponent({
|
|
|
230
232
|
iconSize: {
|
|
231
233
|
type: [Array, String, Number] as PropType<"s" | "m" | "l" | string[] | number[] | string | number | null>,
|
|
232
234
|
required: false,
|
|
233
|
-
default: () => ["
|
|
235
|
+
default: () => ["24px", "20px"]
|
|
234
236
|
},
|
|
235
237
|
variant: {
|
|
236
238
|
type: String as PropType<"standard" | "full" | "icon">,
|
|
@@ -310,7 +312,7 @@ export default defineComponent({
|
|
|
310
312
|
});
|
|
311
313
|
|
|
312
314
|
const padding = computed(() => {
|
|
313
|
-
if(props.padding !== DEFAULT_PADDING){
|
|
315
|
+
if (props.padding !== DEFAULT_PADDING) {
|
|
314
316
|
return props.padding;
|
|
315
317
|
}
|
|
316
318
|
|
|
@@ -319,16 +321,14 @@ export default defineComponent({
|
|
|
319
321
|
|
|
320
322
|
const hasLabel = props.label || !!slots.default;
|
|
321
323
|
|
|
322
|
-
if(!hasLabel && hasIcon){
|
|
324
|
+
if (!hasLabel && hasIcon) {
|
|
323
325
|
return PADDING_ICON_ONLY;
|
|
324
326
|
}
|
|
325
|
-
else if(hasLabel && !hasIcon)
|
|
326
|
-
{
|
|
327
|
+
else if (hasLabel && !hasIcon) {
|
|
327
328
|
return PADDING_LABEL_ONLY;
|
|
328
329
|
}
|
|
329
|
-
|
|
330
330
|
return DEFAULT_PADDING;
|
|
331
|
-
})
|
|
331
|
+
});
|
|
332
332
|
|
|
333
333
|
const onClick = (event: MouseEvent) => {
|
|
334
334
|
if (!props.to && !props.href && props.editable && !props.load) {
|
|
@@ -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.common.today', 'Today')"
|
|
17
|
+
@click="onClickToday"
|
|
18
|
+
/>
|
|
19
|
+
</FSRow>
|
|
13
20
|
</FSRow>
|
|
14
21
|
<FSCol
|
|
15
22
|
class="fs-calendar"
|
|
@@ -67,10 +74,11 @@
|
|
|
67
74
|
<script lang="ts">
|
|
68
75
|
import { computed, defineComponent, onMounted, type PropType, ref, type StyleValue } from "vue";
|
|
69
76
|
|
|
70
|
-
import {
|
|
77
|
+
import { useDateFormat, useAppLanguageCode } from "@dative-gpi/foundation-shared-services/composables";
|
|
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,
|
|
@@ -108,7 +112,7 @@ export default defineComponent({
|
|
|
108
112
|
},
|
|
109
113
|
emits: ["update:modelValue"],
|
|
110
114
|
setup(props, { emit }) {
|
|
111
|
-
const { epochToPicker, pickerToEpoch, todayToEpoch } =
|
|
115
|
+
const { epochToPicker, pickerToEpoch, todayToEpoch } = useDateFormat();
|
|
112
116
|
const { languageCode } = useAppLanguageCode();
|
|
113
117
|
const { getColors } = useColors();
|
|
114
118
|
|
|
@@ -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.common.today', 'Today')"
|
|
18
|
+
@click="onClickToday"
|
|
19
|
+
/>
|
|
20
|
+
</FSRow>
|
|
14
21
|
</FSRow>
|
|
15
22
|
<FSRow
|
|
16
23
|
class="fs-calendar-twin"
|
|
@@ -114,10 +121,11 @@
|
|
|
114
121
|
<script lang="ts">
|
|
115
122
|
import { computed, defineComponent, onMounted, type PropType, ref, type StyleValue } from "vue";
|
|
116
123
|
|
|
117
|
-
import {
|
|
124
|
+
import { useDateFormat, useAppLanguageCode } from "@dative-gpi/foundation-shared-services/composables";
|
|
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,
|
|
@@ -155,7 +159,7 @@ export default defineComponent({
|
|
|
155
159
|
},
|
|
156
160
|
emits: ["update:modelValue"],
|
|
157
161
|
setup(props, { emit }) {
|
|
158
|
-
const { epochToPicker, epochToPickerHeader, pickerToEpoch, todayToEpoch } =
|
|
162
|
+
const { epochToPicker, epochToPickerHeader, pickerToEpoch, todayToEpoch } = useDateFormat();
|
|
159
163
|
const { languageCode } = useAppLanguageCode();
|
|
160
164
|
const { getColors } = useColors();
|
|
161
165
|
|
|
@@ -165,17 +169,16 @@ export default defineComponent({
|
|
|
165
169
|
const innerRightMonth = ref(new Date().getMonth());
|
|
166
170
|
const innerRightYear = ref(new Date().getFullYear());
|
|
167
171
|
|
|
168
|
-
const toggle = ref((props.modelValue?.length ?? 0) % 2);
|
|
169
|
-
|
|
170
172
|
const colors = computed(() => getColors(props.color));
|
|
171
173
|
const backgrounds = getColors(ColorEnum.Background);
|
|
174
|
+
const lights = getColors(ColorEnum.Light);
|
|
172
175
|
const darks = getColors(ColorEnum.Dark);
|
|
173
176
|
|
|
174
177
|
const style = computed((): StyleValue => ({
|
|
175
178
|
"--fs-calendar-background-color" : backgrounds.base,
|
|
176
179
|
"--fs-calendar-hover-background-color" : colors.value.light,
|
|
177
180
|
"--fs-calendar-active-background-color": colors.value.base,
|
|
178
|
-
"--fs-calendar-border-color" :
|
|
181
|
+
"--fs-calendar-border-color" : lights.dark,
|
|
179
182
|
"--fs-calendar-hover-border-color" : colors.value.base,
|
|
180
183
|
"--fs-calendar-active-border-color" : colors.value.base,
|
|
181
184
|
"--fs-calendar-color" : darks.base,
|
|
@@ -261,6 +264,28 @@ export default defineComponent({
|
|
|
261
264
|
return classNames;
|
|
262
265
|
});
|
|
263
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
|
+
|
|
264
289
|
const compare = (operator: "before" | "during" | "after", side: "left" | "right", date: { d: number, m: number, y: number }): boolean => {
|
|
265
290
|
switch (operator) {
|
|
266
291
|
case "before":
|
|
@@ -323,45 +348,73 @@ export default defineComponent({
|
|
|
323
348
|
|
|
324
349
|
const onClickLeft = (value: unknown): void => {
|
|
325
350
|
const dates = value as Date[];
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
351
|
+
|
|
352
|
+
// Click on the same date while only one date is selected on the left calendar
|
|
353
|
+
if (dates.length === 0) {
|
|
354
|
+
if (props.modelValue && props.modelValue.length > 0) {
|
|
355
|
+
emit("update:modelValue", [props.modelValue[0], props.modelValue[0]]);
|
|
356
|
+
}
|
|
357
|
+
return;
|
|
329
358
|
}
|
|
330
|
-
|
|
359
|
+
|
|
360
|
+
const clicked = pickerToEpoch(dates[dates.length - 1]);
|
|
361
|
+
if (props.modelValue && props.modelValue[0] === props.modelValue[1]) {
|
|
331
362
|
emit("update:modelValue", [props.modelValue[0], clicked].sort());
|
|
332
363
|
}
|
|
333
364
|
else {
|
|
334
|
-
|
|
335
|
-
emit("update:modelValue", [clicked, props.modelValue[1]]);
|
|
336
|
-
}
|
|
337
|
-
else {
|
|
338
|
-
emit("update:modelValue", [clicked, props.modelValue[toggle.value]].sort());
|
|
339
|
-
toggle.value = (++toggle.value) % 2;
|
|
340
|
-
}
|
|
365
|
+
emit("update:modelValue", [clicked, clicked]);
|
|
341
366
|
}
|
|
342
367
|
};
|
|
343
368
|
|
|
344
369
|
const onClickRight = (value: unknown): void => {
|
|
345
370
|
const dates = value as Date[];
|
|
371
|
+
|
|
372
|
+
// Click on the same date while only one date is selected on the right calendar
|
|
373
|
+
if (dates.length === 0) {
|
|
374
|
+
if (props.modelValue && props.modelValue.length > 0) {
|
|
375
|
+
emit("update:modelValue", [props.modelValue[props.modelValue.length - 1], props.modelValue[props.modelValue.length - 1]]);
|
|
376
|
+
}
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
379
|
+
|
|
346
380
|
const clicked = pickerToEpoch(dates[dates.length - 1]);
|
|
347
|
-
if (
|
|
381
|
+
if (props.modelValue && props.modelValue[0] === props.modelValue[1]) {
|
|
382
|
+
emit("update:modelValue", [props.modelValue[0], clicked].sort());
|
|
383
|
+
}
|
|
384
|
+
else {
|
|
348
385
|
emit("update:modelValue", [clicked, clicked]);
|
|
349
386
|
}
|
|
350
|
-
|
|
351
|
-
|
|
387
|
+
};
|
|
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;
|
|
352
397
|
}
|
|
353
398
|
else {
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
}
|
|
357
|
-
else {
|
|
358
|
-
emit("update:modelValue", [clicked, props.modelValue[toggle.value]].sort());
|
|
359
|
-
toggle.value = (++toggle.value) % 2;
|
|
360
|
-
}
|
|
399
|
+
innerRightMonth.value = innerLeftMonth.value + 1;
|
|
400
|
+
innerRightYear.value = innerLeftYear.value;
|
|
361
401
|
}
|
|
362
|
-
|
|
402
|
+
|
|
403
|
+
today.setHours(0, 0, 0, 0);
|
|
404
|
+
emit("update:modelValue", [pickerToEpoch(today), pickerToEpoch(today)]);
|
|
363
405
|
};
|
|
364
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
|
+
|
|
365
418
|
const allowedDates = (value: unknown): boolean => {
|
|
366
419
|
if (!(value instanceof Date)) {
|
|
367
420
|
return false;
|
|
@@ -414,11 +467,14 @@ export default defineComponent({
|
|
|
414
467
|
innerRightMonth,
|
|
415
468
|
innerRightYear,
|
|
416
469
|
innerRightValue,
|
|
470
|
+
years,
|
|
417
471
|
epochToPicker,
|
|
418
472
|
onClickPrevious,
|
|
419
473
|
onClickNext,
|
|
420
474
|
onClickLeft,
|
|
421
475
|
onClickRight,
|
|
476
|
+
onClickToday,
|
|
477
|
+
onChangeYear,
|
|
422
478
|
allowedDates
|
|
423
479
|
};
|
|
424
480
|
}
|
package/components/FSCard.vue
CHANGED
|
@@ -105,7 +105,7 @@ export default defineComponent({
|
|
|
105
105
|
const { getColors, getGradients } = useColors();
|
|
106
106
|
|
|
107
107
|
const colors = computed(() => {
|
|
108
|
-
if(Array.isArray(props.color)) {
|
|
108
|
+
if (Array.isArray(props.color)) {
|
|
109
109
|
return getColors(props.color[0]);
|
|
110
110
|
}
|
|
111
111
|
return getColors(props.color);
|
|
@@ -115,6 +115,23 @@ export default defineComponent({
|
|
|
115
115
|
const lights = getColors(ColorEnum.Light);
|
|
116
116
|
const darks = getColors(ColorEnum.Dark);
|
|
117
117
|
|
|
118
|
+
const borderColor = computed((): ColorBase => {
|
|
119
|
+
switch (props.variant) {
|
|
120
|
+
case "background":
|
|
121
|
+
return lights.dark;
|
|
122
|
+
case "standard" :
|
|
123
|
+
if (Array.isArray(props.color)) {
|
|
124
|
+
return colors.value.lightContrast!;
|
|
125
|
+
}
|
|
126
|
+
if (([ColorEnum.Background, ColorEnum.Light, ColorEnum.Dark] as ColorBase[]).includes(props.color)) {
|
|
127
|
+
return lights.dark;
|
|
128
|
+
}
|
|
129
|
+
return colors.value.lightContrast!;
|
|
130
|
+
case "full" : return colors.value.base;
|
|
131
|
+
case "gradient" : return colors.value.lightContrast!;
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
|
|
118
135
|
const style = computed((): StyleValue => {
|
|
119
136
|
switch (props.variant) {
|
|
120
137
|
case "background": return {
|
|
@@ -125,7 +142,7 @@ export default defineComponent({
|
|
|
125
142
|
"--fs-card-height" : sizeToVar(props.height),
|
|
126
143
|
"--fs-card-width" : sizeToVar(props.width),
|
|
127
144
|
"--fs-card-background-color": backgrounds.base,
|
|
128
|
-
"--fs-card-border-color" :
|
|
145
|
+
"--fs-card-border-color" : borderColor.value,
|
|
129
146
|
"--fs-card-color" : darks.base
|
|
130
147
|
}
|
|
131
148
|
case "standard": return {
|
|
@@ -136,7 +153,7 @@ export default defineComponent({
|
|
|
136
153
|
"--fs-card-height" : sizeToVar(props.height),
|
|
137
154
|
"--fs-card-width" : sizeToVar(props.width),
|
|
138
155
|
"--fs-card-background-color": colors.value.light,
|
|
139
|
-
"--fs-card-border-color" :
|
|
156
|
+
"--fs-card-border-color" : borderColor.value,
|
|
140
157
|
"--fs-card-color" : colors.value.lightContrast!
|
|
141
158
|
}
|
|
142
159
|
case "full": return {
|
|
@@ -147,7 +164,7 @@ export default defineComponent({
|
|
|
147
164
|
"--fs-card-height" : sizeToVar(props.height),
|
|
148
165
|
"--fs-card-width" : sizeToVar(props.width),
|
|
149
166
|
"--fs-card-background-color": colors.value.base,
|
|
150
|
-
"--fs-card-border-color" :
|
|
167
|
+
"--fs-card-border-color" : borderColor.value,
|
|
151
168
|
"--fs-card-color" : colors.value.baseContrast!
|
|
152
169
|
}
|
|
153
170
|
case "gradient": return {
|
|
@@ -158,19 +175,23 @@ export default defineComponent({
|
|
|
158
175
|
"--fs-card-height" : sizeToVar(props.height),
|
|
159
176
|
"--fs-card-width" : sizeToVar(props.width),
|
|
160
177
|
"--fs-card-background-color": gradients.value.base,
|
|
161
|
-
"--fs-card-border-color" :
|
|
178
|
+
"--fs-card-border-color" : borderColor.value,
|
|
162
179
|
"--fs-card-color" : colors.value.lightContrast!
|
|
163
180
|
}
|
|
164
181
|
}
|
|
165
182
|
});
|
|
166
183
|
|
|
167
184
|
const classes = computed((): string[] => {
|
|
168
|
-
const classNames = ["fs-card"
|
|
185
|
+
const classNames = ["fs-card"];
|
|
169
186
|
switch(props.variant) {
|
|
170
187
|
case "gradient":
|
|
171
188
|
classNames.push("fs-card-gradient");
|
|
172
189
|
break;
|
|
173
|
-
|
|
190
|
+
case "background":
|
|
191
|
+
classNames.push("fs-card-background");
|
|
192
|
+
classNames.push("fs-card-clickable");
|
|
193
|
+
break;
|
|
194
|
+
default:
|
|
174
195
|
classNames.push("fs-card-background");
|
|
175
196
|
break;
|
|
176
197
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
2
|
+
<component
|
|
3
|
+
:is="$attrs.onClick ? FSClickable : FSCard"
|
|
3
4
|
borderStyle="dashed"
|
|
4
5
|
padding="24px"
|
|
5
6
|
:height="$props.height"
|
|
6
7
|
:width="$props.width"
|
|
7
8
|
:border="true"
|
|
8
|
-
@click="$emit('click')"
|
|
9
9
|
v-bind="$attrs"
|
|
10
10
|
>
|
|
11
11
|
<FSRow
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
{{ $props.label }}
|
|
27
27
|
</FSText>
|
|
28
28
|
</FSRow>
|
|
29
|
-
</
|
|
29
|
+
</component>
|
|
30
30
|
</template>
|
|
31
31
|
|
|
32
32
|
<script lang="ts">
|
|
@@ -35,6 +35,7 @@ import { defineComponent, type PropType } from "vue";
|
|
|
35
35
|
import { ColorEnum } from "../models";
|
|
36
36
|
|
|
37
37
|
import FSClickable from "./FSClickable.vue";
|
|
38
|
+
import FSCard from "./FSCard.vue";
|
|
38
39
|
import FSIcon from "./FSIcon.vue";
|
|
39
40
|
import FSText from "./FSText.vue";
|
|
40
41
|
import FSRow from "./FSRow.vue";
|
|
@@ -43,6 +44,7 @@ export default defineComponent({
|
|
|
43
44
|
name: "FSCardPlaceholder",
|
|
44
45
|
components: {
|
|
45
46
|
FSClickable,
|
|
47
|
+
FSCard,
|
|
46
48
|
FSIcon,
|
|
47
49
|
FSText,
|
|
48
50
|
FSRow
|
|
@@ -69,10 +71,11 @@ export default defineComponent({
|
|
|
69
71
|
default: null
|
|
70
72
|
}
|
|
71
73
|
},
|
|
72
|
-
emits: ["click"],
|
|
73
74
|
setup() {
|
|
74
75
|
return {
|
|
75
|
-
ColorEnum
|
|
76
|
+
ColorEnum,
|
|
77
|
+
FSClickable,
|
|
78
|
+
FSCard,
|
|
76
79
|
};
|
|
77
80
|
}
|
|
78
81
|
});
|