@dative-gpi/foundation-shared-components 1.0.66 → 1.0.67-map-carousel
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/assets/images/map/snow.png +0 -0
- package/components/FSAccordionPanel.vue +40 -21
- package/components/FSBreadcrumbs.vue +21 -12
- package/components/FSButton.vue +11 -9
- package/components/FSCalendar.vue +50 -12
- package/components/FSCalendarTwin.vue +95 -43
- package/components/FSCard.vue +61 -9
- package/components/FSCardPlaceholder.vue +8 -5
- package/components/FSCheckbox.vue +5 -4
- package/components/FSChip.vue +73 -45
- package/components/FSChipGroup.vue +69 -0
- package/components/FSClickable.vue +11 -9
- package/components/FSClock.vue +30 -12
- package/components/FSCol.vue +11 -5
- package/components/FSDialog.vue +2 -1
- package/components/FSDialogContent.vue +12 -11
- package/components/FSDialogForm.vue +22 -2
- package/components/FSDialogFormBody.vue +50 -31
- package/components/FSDialogMenu.vue +17 -8
- package/components/FSDialogMultiFormBody.vue +23 -13
- package/components/FSDialogRemove.vue +7 -8
- package/components/FSDialogSubmit.vue +20 -11
- package/components/FSEditImageUI.vue +13 -5
- package/components/FSFadeOut.vue +53 -21
- package/components/FSForm.vue +10 -8
- package/components/FSGrid.vue +0 -1
- package/components/FSIcon.vue +2 -2
- package/components/FSIconCard.vue +68 -12
- package/components/FSInformationsMenu.vue +142 -0
- package/components/FSInstantPicker.vue +268 -0
- package/components/FSLink.vue +25 -9
- package/components/FSLoader.vue +28 -10
- package/components/FSMenu.vue +47 -0
- package/components/FSOptionGroup.vue +8 -8
- package/components/FSOptionItem.vue +4 -4
- package/components/FSOptionsMenu.vue +165 -0
- package/components/FSPagination.vue +1 -1
- package/components/FSPlayButtons.vue +72 -0
- package/components/FSProgressBar.vue +94 -0
- package/components/FSRadio.vue +5 -4
- package/components/FSRadioGroup.vue +3 -3
- package/components/FSRangePicker.vue +275 -0
- package/components/FSRangeSlider.vue +84 -0
- package/components/FSRouterLink.vue +42 -0
- package/components/FSSlideGroup.vue +19 -5
- package/components/FSSlider.vue +44 -79
- package/components/FSSpan.vue +12 -7
- package/components/FSSwitch.vue +44 -48
- package/components/FSTab.vue +15 -13
- package/components/FSTabs.vue +32 -7
- package/components/FSTag.vue +3 -3
- package/components/FSTagGroup.vue +6 -4
- package/components/FSText.vue +11 -7
- package/components/FSToggleSet.vue +7 -7
- package/components/FSTreeView.vue +107 -0
- package/components/FSWindow.vue +122 -5
- package/components/FSWrapGroup.vue +13 -1
- package/components/agenda/FSAgenda.vue +26 -7
- package/components/agenda/FSAgendaDialogCalendar.vue +2 -2
- package/components/agenda/FSAgendaHeader.vue +35 -10
- package/components/agenda/FSAgendaHorizontalEvent.vue +18 -6
- package/components/agenda/FSAgendaHoursRow.vue +48 -8
- package/components/agenda/FSAgendaVerticalEvent.vue +1 -1
- package/components/agenda/FSDayAgenda.vue +0 -1
- package/components/agenda/FSMonthAgenda.vue +1 -6
- package/components/agenda/FSSelectAgendaMode.vue +2 -2
- package/components/agenda/FSWeekAgenda.vue +5 -10
- package/components/autocompletes/FSAutoCompleteAddress.vue +25 -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/FSButtonCheckbox.vue +4 -4
- package/components/buttons/FSButtonCopy.vue +1 -1
- package/components/buttons/FSButtonCopyLabel.vue +1 -1
- 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/carousels/FSCarousel.vue +23 -0
- package/components/carousels/FSCarouselItem.vue +14 -0
- package/components/deviceOrganisations/FSConnectivity.vue +5 -3
- package/components/deviceOrganisations/FSStatus.vue +5 -3
- package/components/deviceOrganisations/FSStatusCard.vue +7 -9
- package/components/deviceOrganisations/FSStatusRichCard.vue +171 -0
- package/components/deviceOrganisations/FSWorstAlert.vue +24 -36
- package/components/deviceOrganisations/FSWorstAlertCard.vue +8 -47
- package/components/fields/FSAutocompleteField.vue +85 -82
- package/components/fields/FSAutocompleteTag.vue +1 -1
- package/components/fields/FSBaseField.vue +42 -25
- package/components/fields/FSClosableSearchField.vue +83 -0
- package/components/fields/FSColorField.vue +12 -10
- package/components/fields/FSCommentField.vue +28 -16
- package/components/fields/FSDateField.vue +13 -10
- package/components/fields/FSDateRangeField.vue +6 -5
- package/components/fields/FSDateTimeField.vue +14 -11
- package/components/fields/FSDateTimeRangeDialog.vue +160 -0
- package/components/fields/FSDateTimeRangeField.vue +23 -115
- package/components/fields/FSEntityFieldUI.vue +19 -16
- package/components/fields/FSGradientField.vue +5 -5
- package/components/fields/FSIconField.vue +16 -9
- package/components/fields/FSMagicConfigField.vue +15 -7
- package/components/fields/FSMagicField.vue +7 -2
- package/components/fields/FSMapAddressField.vue +187 -0
- package/components/fields/FSNumberField.vue +8 -4
- package/components/fields/FSPasswordField.vue +7 -7
- package/components/fields/FSRichTextField.vue +78 -58
- package/components/fields/FSSearchField.vue +9 -115
- package/components/fields/FSSelectField.vue +69 -71
- package/components/fields/FSTagField.vue +9 -9
- package/components/fields/FSTermField.vue +69 -46
- package/components/fields/FSTextArea.vue +17 -11
- package/components/fields/FSTextField.vue +15 -10
- package/components/fields/FSTimeField.vue +14 -10
- package/components/fields/FSTimeRangeField.vue +310 -0
- package/components/fields/FSTimeStepField.vue +5 -5
- package/components/fields/FSTranslateField.vue +10 -10
- package/components/fields/FSTranslateRichTextField.vue +41 -20
- package/components/fields/FSTranslateTextArea.vue +10 -10
- package/components/fields/FSTreeViewField.vue +21 -19
- package/components/fields/periodicField/FSPeriodicDailyField.vue +7 -7
- package/components/fields/periodicField/FSPeriodicField.vue +15 -15
- package/components/fields/periodicField/FSPeriodicMonthlyField.vue +16 -16
- package/components/fields/periodicField/FSPeriodicWeeklyField.vue +28 -18
- package/components/fields/periodicField/FSPeriodicYearlyField.vue +12 -12
- package/components/lists/FSDataIteratorItem.vue +23 -67
- package/components/lists/FSDataTableUI.vue +198 -123
- package/components/lists/FSDraggable.vue +2 -2
- package/components/lists/FSFilterButton.vue +14 -16
- package/components/lists/FSHeaderButton.vue +11 -9
- package/components/lists/FSHiddenButton.vue +9 -9
- package/components/lists/FSLoadDataTable.vue +10 -7
- package/components/lists/FSSimpleList.vue +95 -88
- package/components/lists/FSSimpleListItem.vue +131 -0
- package/components/map/FSMap.vue +144 -158
- package/components/map/FSMapFeatureGroup.vue +7 -1
- package/components/map/FSMapLayerButton.vue +4 -3
- package/components/map/FSMapMarker.vue +103 -42
- package/components/map/FSMapMarkerClusterGroup.vue +32 -7
- package/components/map/FSMapOverlay.vue +44 -24
- package/components/map/FSMapPolygon.vue +16 -4
- package/components/map/FSMapTileLayer.vue +26 -9
- package/components/map/layers.ts +0 -0
- package/components/selects/FSSelectAutoRefresh.vue +8 -8
- package/components/selects/FSSelectDashboardVariableType.vue +4 -3
- package/components/selects/FSSelectDateSetting.vue +2 -2
- package/components/selects/FSSelectDays.vue +8 -8
- package/components/selects/FSSelectListMode.vue +2 -2
- package/components/selects/FSSelectMapLayer.vue +68 -0
- package/components/selects/FSSelectMonths.vue +13 -13
- 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 +61 -52
- package/components/tiles/FSCommentTileUI.vue +38 -13
- package/components/tiles/FSDashboardOrganisationTypeTileUI.vue +14 -2
- package/components/tiles/FSDashboardShallowTileUI.vue +14 -2
- package/components/tiles/FSDeviceOrganisationTileUI.vue +0 -6
- package/components/tiles/FSEntityCountBadge.vue +72 -0
- package/components/tiles/FSFolderTileUI.vue +38 -4
- package/components/tiles/FSGroupTileUI.vue +32 -136
- package/components/tiles/FSLoadTile.vue +16 -10
- package/components/tiles/FSLocationTileUI.vue +45 -63
- package/components/tiles/FSServiceAccountOrganisationTileUI.vue +0 -6
- package/components/tiles/FSSimpleTileUI.vue +30 -24
- package/components/tiles/FSTile.vue +46 -39
- package/components/tiles/FSUserOrganisationTileUI.vue +1 -7
- package/components/tiles/FSUserTileUI.vue +119 -0
- package/components/toggleSets/FSToggleSetPosition.vue +1 -1
- package/components/views/FSBaseView.vue +64 -0
- package/components/views/FSEntityView.vue +12 -146
- 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 +211 -0
- package/components/views/mobile/FSBaseDefaultMobileView.vue +133 -0
- package/components/views/mobile/FSBaseEntityMobileView.vue +206 -0
- package/components/views/mobile/FSBaseMobileView.vue +53 -0
- package/composables/index.ts +1 -0
- package/composables/useAddress.ts +40 -8
- package/composables/useBreakpoints.ts +40 -4
- package/composables/useColors.ts +16 -7
- package/composables/useMagicFieldProvider.ts +1 -0
- package/composables/useMapLayers.ts +69 -0
- package/composables/useSlots.ts +2 -1
- package/models/colors.ts +2 -1
- package/models/deviceAlerts.ts +1 -0
- package/models/magicFields.ts +1 -0
- package/models/map.ts +12 -10
- package/models/rules.ts +5 -2
- package/models/tables.ts +2 -1
- package/models/variableNode.ts +8 -5
- package/package.json +5 -5
- package/styles/components/fs_agenda.scss +4 -0
- package/styles/components/fs_agenda_event.scss +1 -1
- package/styles/components/fs_agenda_hours_row.scss +0 -8
- 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_calendar.scss +1 -0
- package/styles/components/fs_card.scss +9 -0
- package/styles/components/fs_chip.scss +13 -7
- package/styles/components/fs_clickable.scss +16 -23
- package/styles/components/fs_clock.scss +0 -10
- package/styles/components/fs_col.scss +1 -1
- package/styles/components/fs_color_field.scss +0 -4
- package/styles/components/fs_data_table.scss +6 -9
- package/styles/components/fs_dialog.scss +4 -10
- package/styles/components/fs_dialog_menu.scss +4 -2
- package/styles/components/fs_draggable.scss +0 -5
- package/styles/components/fs_fade_out.scss +10 -2
- package/styles/components/fs_filter_button.scss +1 -1
- 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 +57 -17
- package/styles/components/fs_meta_field.scss +3 -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 -10
- package/styles/components/fs_select_field.scss +4 -13
- package/styles/components/fs_slide_group.scss +7 -0
- package/styles/components/fs_slider.scss +0 -40
- package/styles/components/fs_span.scss +13 -5
- package/styles/components/fs_status_rich_card.scss +6 -0
- package/styles/components/fs_tabs.scss +18 -37
- package/styles/components/fs_tag.scss +8 -22
- package/styles/components/fs_text_area.scss +2 -21
- package/styles/components/fs_tile.scss +0 -19
- package/styles/components/fs_window.scss +3 -1
- package/styles/components/fs_wrap_group.scss +7 -0
- package/styles/components/index.scss +2 -6
- package/styles/globals/index.scss +1 -5
- package/styles/globals/overrides.scss +26 -54
- package/styles/globals/scrollbars.scss +8 -0
- package/styles/globals/text_fonts.scss +18 -66
- package/styles/globals/touchscreen.scss +2 -2
- package/tools/alertsTools.ts +94 -18
- package/tools/chartsTools.ts +155 -16
- package/tools/index.ts +3 -1
- package/tools/reportsTools.ts +38 -0
- package/tools/timeRangeTools.ts +125 -0
- package/utils/badge.ts +9 -5
- package/utils/filter.ts +4 -1
- package/utils/index.ts +2 -0
- package/utils/leafletMarkers.ts +4 -4
- package/utils/operations.ts +108 -0
- package/utils/picker.ts +40 -0
- package/utils/sort.ts +2 -2
- package/utils/time.ts +13 -13
- package/components/fields/FSTimeSlotField.vue +0 -250
- package/components/views/FSEntityHeader.vue +0 -343
- 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_data_iterator_item.scss +0 -33
- package/styles/components/fs_icon_field.scss +0 -12
- package/styles/components/fs_search_field.scss +0 -3
- 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,66 +1,90 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<FSCol
|
|
3
3
|
gap="16px"
|
|
4
|
+
style="position: relative;"
|
|
4
5
|
>
|
|
5
6
|
<FSRow
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
v-if="$props.showSearch || (!isMobileSized && ($slots['prepend-toolbar'] || $slots['toolbar'] || $slots['append-toolbar'])) || (!$props.disableTable && !$props.disableIterator)"
|
|
8
|
+
align="top-left"
|
|
9
|
+
:wrap="isMobileSized ? false : true"
|
|
8
10
|
width="fill"
|
|
9
11
|
>
|
|
10
12
|
<slot
|
|
11
|
-
v-if="!
|
|
13
|
+
v-if="!isMobileSized"
|
|
12
14
|
name="prepend-toolbar"
|
|
13
15
|
/>
|
|
14
|
-
<
|
|
15
|
-
|
|
16
|
+
<FSRow
|
|
17
|
+
align="top-left"
|
|
16
18
|
>
|
|
17
|
-
<
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
19
|
+
<FSRow
|
|
20
|
+
v-if="$props.showSearch || $slots['toolbar']"
|
|
21
|
+
align="bottom-left"
|
|
22
|
+
>
|
|
23
|
+
<template
|
|
24
|
+
v-if="$props.showSearch"
|
|
25
|
+
>
|
|
26
|
+
<FSSearchField
|
|
27
|
+
v-if="$props.showSearch"
|
|
28
|
+
:hideHeader="true"
|
|
29
|
+
v-model="innerSearch"
|
|
30
|
+
/>
|
|
31
|
+
<FSButton
|
|
32
|
+
v-if="filterableHeaders.length > 0"
|
|
33
|
+
prependIcon="mdi-filter-variant"
|
|
34
|
+
:variant="innerShowFilters ? 'full' : 'standard'"
|
|
35
|
+
@click="innerShowFilters = !innerShowFilters"
|
|
36
|
+
/>
|
|
37
|
+
</template>
|
|
38
|
+
<slot
|
|
39
|
+
v-if="!isMobileSized"
|
|
40
|
+
name="toolbar"
|
|
41
|
+
/>
|
|
42
|
+
</FSRow>
|
|
43
|
+
<slot
|
|
44
|
+
v-if="!isMobileSized"
|
|
45
|
+
name="append-toolbar"
|
|
27
46
|
/>
|
|
28
|
-
</
|
|
29
|
-
<slot
|
|
30
|
-
v-if="!isExtraSmall"
|
|
31
|
-
name="toolbar"
|
|
32
|
-
/>
|
|
47
|
+
</FSRow>
|
|
33
48
|
<template
|
|
34
|
-
v-if="!$props.disableTable && !$props.disableIterator"
|
|
49
|
+
v-if="(!$props.disableTable && !$props.disableIterator)"
|
|
35
50
|
>
|
|
36
|
-
<v-spacer />
|
|
37
51
|
<FSRow
|
|
38
|
-
align="
|
|
52
|
+
align="top-right"
|
|
53
|
+
width="hug"
|
|
54
|
+
:wrap="false"
|
|
39
55
|
>
|
|
40
56
|
<FSOptionGroup
|
|
57
|
+
v-if="!$props.disableTable && !$props.disableIterator"
|
|
41
58
|
:values="modeOptions"
|
|
42
59
|
:singleColor="true"
|
|
43
60
|
:required="true"
|
|
61
|
+
variant="slide"
|
|
44
62
|
v-model="innerMode"
|
|
45
63
|
/>
|
|
46
64
|
</FSRow>
|
|
47
65
|
</template>
|
|
48
66
|
</FSRow>
|
|
49
67
|
<FSRow
|
|
50
|
-
v-if="
|
|
68
|
+
v-if="isMobileSized && ($slots['prepend-toolbar'] || $slots['toolbar'] || $slots['append-toolbar'])"
|
|
51
69
|
>
|
|
52
|
-
<
|
|
70
|
+
<FSSlideGroup>
|
|
71
|
+
<slot
|
|
72
|
+
name="prepend-toolbar"
|
|
73
|
+
/>
|
|
53
74
|
<slot
|
|
54
75
|
name="toolbar"
|
|
55
76
|
/>
|
|
56
|
-
|
|
77
|
+
<slot
|
|
78
|
+
name="append-toolbar"
|
|
79
|
+
/>
|
|
80
|
+
</FSSlideGroup>
|
|
57
81
|
</FSRow>
|
|
58
82
|
<FSRow
|
|
59
83
|
v-if="showFiltersRow"
|
|
60
84
|
gap="16px"
|
|
61
85
|
>
|
|
62
86
|
<FSCol
|
|
63
|
-
v-if="
|
|
87
|
+
v-if="innerShowFilters && hasVisibleFilters"
|
|
64
88
|
width="hug"
|
|
65
89
|
>
|
|
66
90
|
<FSRow
|
|
@@ -94,12 +118,12 @@
|
|
|
94
118
|
gap="8px"
|
|
95
119
|
>
|
|
96
120
|
<FSChip
|
|
97
|
-
v-if="
|
|
121
|
+
v-if="innerShowFilters && resetable"
|
|
98
122
|
variant="standard"
|
|
99
|
-
:label="$tr('
|
|
123
|
+
:label="$tr('data-table.reset-filters', 'Reset')"
|
|
100
124
|
:height="['30px', '24px']"
|
|
101
125
|
:color="ColorEnum.Error"
|
|
102
|
-
:
|
|
126
|
+
:clickable="true"
|
|
103
127
|
@click="resetFilter"
|
|
104
128
|
/>
|
|
105
129
|
<FSHiddenButton
|
|
@@ -122,7 +146,7 @@
|
|
|
122
146
|
:headers="extraHeaders.concat(innerHeaders)"
|
|
123
147
|
:sortBy="innerSortBy ? [innerSortBy] : []"
|
|
124
148
|
:itemsPerPage="innerRowsPerPage"
|
|
125
|
-
:
|
|
149
|
+
:selectable="$props.selectable"
|
|
126
150
|
:hover="!$props.sortDraggable"
|
|
127
151
|
:itemValue="$props.itemValue"
|
|
128
152
|
:loading="$props.loading"
|
|
@@ -148,7 +172,7 @@
|
|
|
148
172
|
<FSText
|
|
149
173
|
font="text-overline"
|
|
150
174
|
>
|
|
151
|
-
{{ $tr("ui.data
|
|
175
|
+
{{ $tr("ui.common.no-data", "No data") }}
|
|
152
176
|
</FSText>
|
|
153
177
|
</template>
|
|
154
178
|
<template
|
|
@@ -245,7 +269,7 @@
|
|
|
245
269
|
width="hug"
|
|
246
270
|
>
|
|
247
271
|
<FSCheckbox
|
|
248
|
-
v-if="$props.
|
|
272
|
+
v-if="$props.selectable"
|
|
249
273
|
:modelValue="props.item.items.every((item) => $props.modelValue.includes(item.key))"
|
|
250
274
|
:indeterminate="$props.modelValue.some((id) => props.item.items.some((item) => item.key === id)) && !props.item.items.every((item) => $props.modelValue.includes(item.key))"
|
|
251
275
|
@update:modelValue="toggleSelectGroup(props.item)"
|
|
@@ -290,25 +314,29 @@
|
|
|
290
314
|
<slot
|
|
291
315
|
:name="`${header.slotName}-append`"
|
|
292
316
|
/>
|
|
293
|
-
<
|
|
294
|
-
|
|
295
|
-
:
|
|
317
|
+
<FSRow
|
|
318
|
+
align="center-right"
|
|
319
|
+
:wrap="false"
|
|
296
320
|
>
|
|
297
|
-
<
|
|
298
|
-
:
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
321
|
+
<slot
|
|
322
|
+
:name="`${header.slotName}-configuration`"
|
|
323
|
+
>
|
|
324
|
+
<FSHeaderButton
|
|
325
|
+
:first="index === 0"
|
|
326
|
+
:last="index === headersSlots.length - 1"
|
|
327
|
+
@update:hide="updateHeader(header, 'hidden', !header.hidden)"
|
|
328
|
+
@update:left="updateHeader(header, 'index', -1)"
|
|
329
|
+
@update:right="updateHeader(header, 'index', 1)"
|
|
330
|
+
/>
|
|
331
|
+
<FSButton
|
|
332
|
+
v-if="header.sortable"
|
|
333
|
+
variant="icon"
|
|
334
|
+
:color="sortColor(header, props)"
|
|
335
|
+
:icon="sortIcon(header, props)"
|
|
336
|
+
@click="toggleSort(header)"
|
|
337
|
+
/>
|
|
338
|
+
</slot>
|
|
339
|
+
</FSRow>
|
|
312
340
|
</FSRow>
|
|
313
341
|
</slot>
|
|
314
342
|
</template>
|
|
@@ -356,22 +384,23 @@
|
|
|
356
384
|
<FSText
|
|
357
385
|
font="text-button"
|
|
358
386
|
>
|
|
359
|
-
{{ $tr("
|
|
387
|
+
{{ $tr("data-table.all-selected-bold", "Warning:") }}
|
|
360
388
|
</FSText>
|
|
361
389
|
<FSText>
|
|
362
|
-
{{ $tr("
|
|
390
|
+
{{ $tr("data-table.all-selected-regular", "All elements selected") }}
|
|
363
391
|
</FSText>
|
|
364
392
|
</FSRow>
|
|
365
393
|
</template>
|
|
366
394
|
<template
|
|
367
395
|
v-else
|
|
368
396
|
>
|
|
369
|
-
<
|
|
370
|
-
|
|
371
|
-
|
|
397
|
+
<FSRow>
|
|
398
|
+
<FSText>
|
|
399
|
+
{{ $tr("data-table.some-selected", "{0} element(s) selected", $props.modelValue.length.toString()) }}
|
|
400
|
+
</FSText>
|
|
401
|
+
</FSRow>
|
|
372
402
|
</template>
|
|
373
403
|
</template>
|
|
374
|
-
<v-spacer />
|
|
375
404
|
<FSRow
|
|
376
405
|
align="center-right"
|
|
377
406
|
width="hug"
|
|
@@ -380,7 +409,7 @@
|
|
|
380
409
|
<FSText
|
|
381
410
|
font="text-overline"
|
|
382
411
|
>
|
|
383
|
-
{{ $tr("
|
|
412
|
+
{{ $tr("data-table.rows-per-page", "Rows per page") }}
|
|
384
413
|
</FSText>
|
|
385
414
|
<FSSelectField
|
|
386
415
|
class="fs-data-table-rows-per-page fs-small-input"
|
|
@@ -432,7 +461,7 @@
|
|
|
432
461
|
<FSText
|
|
433
462
|
font="text-overline"
|
|
434
463
|
>
|
|
435
|
-
{{ $tr("ui.data
|
|
464
|
+
{{ $tr("ui.common.no-data", "No data") }}
|
|
436
465
|
</FSText>
|
|
437
466
|
</template>
|
|
438
467
|
<template
|
|
@@ -446,7 +475,7 @@
|
|
|
446
475
|
v-for="(item, index) in items"
|
|
447
476
|
elementSelector=".fs-draggable-item"
|
|
448
477
|
:disabled="draggableDisabled"
|
|
449
|
-
:item="item"
|
|
478
|
+
:item="{ ...item, index }"
|
|
450
479
|
:key="index"
|
|
451
480
|
@update:dragend="(event, dragged) => onDragEnd(event, dragged, '.fs-data-iterator-container')"
|
|
452
481
|
@dragover="(event) => onDragOver(event, '.fs-draggable-item', '.fs-data-iterator-container')"
|
|
@@ -460,18 +489,20 @@
|
|
|
460
489
|
>
|
|
461
490
|
<FSDataIteratorItem
|
|
462
491
|
v-if="item.type === 'item'"
|
|
463
|
-
:
|
|
492
|
+
:leftColor="$props.rowColor ? $props.rowColor(item.raw) : null"
|
|
464
493
|
:headers="innerHeaders.filter(h => !$props.sneakyHeaders.includes(h.value))"
|
|
465
|
-
:
|
|
466
|
-
:
|
|
467
|
-
:
|
|
468
|
-
:
|
|
494
|
+
:selectable="$props.selectable"
|
|
495
|
+
:singleSelect="$props.singleSelect"
|
|
496
|
+
:to="$props.itemTo"
|
|
497
|
+
:bottomColor="$props.color"
|
|
469
498
|
:item="item.raw"
|
|
470
499
|
:key="index"
|
|
471
|
-
:modelValue="$props.modelValue
|
|
472
|
-
@update:modelValue="toggleSelect"
|
|
473
|
-
|
|
474
|
-
|
|
500
|
+
:modelValue="$props.modelValue?.includes(item.raw[$props.itemValue])"
|
|
501
|
+
@update:modelValue="toggleSelect(item.raw)"
|
|
502
|
+
v-bind="onClickLibrary.clickable ? {
|
|
503
|
+
onClick: (event) => onClickLibrary.mobile(event, item),
|
|
504
|
+
onAuxclick: (event) => onClickLibrary.mobile(event, item)
|
|
505
|
+
} : {}"
|
|
475
506
|
>
|
|
476
507
|
<template
|
|
477
508
|
#item.top="props"
|
|
@@ -530,22 +561,23 @@
|
|
|
530
561
|
<FSText
|
|
531
562
|
font="text-button"
|
|
532
563
|
>
|
|
533
|
-
{{ $tr("
|
|
564
|
+
{{ $tr("data-table.all-selected-bold", "Warning:") }}
|
|
534
565
|
</FSText>
|
|
535
566
|
<FSText>
|
|
536
|
-
{{ $tr("
|
|
567
|
+
{{ $tr("data-table.all-selected-regular", "All elements selected") }}
|
|
537
568
|
</FSText>
|
|
538
569
|
</FSRow>
|
|
539
570
|
</template>
|
|
540
571
|
<template
|
|
541
572
|
v-else
|
|
542
573
|
>
|
|
543
|
-
<
|
|
544
|
-
|
|
545
|
-
|
|
574
|
+
<FSRow>
|
|
575
|
+
<FSText>
|
|
576
|
+
{{ $tr("data-table.some-selected", "{0} element(s) selected", $props.modelValue.length.toString()) }}
|
|
577
|
+
</FSText>
|
|
578
|
+
</FSRow>
|
|
546
579
|
</template>
|
|
547
580
|
</template>
|
|
548
|
-
<v-spacer />
|
|
549
581
|
<FSRow
|
|
550
582
|
align="center-right"
|
|
551
583
|
:wrap="false"
|
|
@@ -553,7 +585,7 @@
|
|
|
553
585
|
<FSText
|
|
554
586
|
font="text-overline"
|
|
555
587
|
>
|
|
556
|
-
{{ $tr("
|
|
588
|
+
{{ $tr("data-table.rows-per-page", "Rows per page") }}
|
|
557
589
|
</FSText>
|
|
558
590
|
<FSRow
|
|
559
591
|
width="120px"
|
|
@@ -602,7 +634,7 @@
|
|
|
602
634
|
<FSText
|
|
603
635
|
font="text-overline"
|
|
604
636
|
>
|
|
605
|
-
{{ $tr("ui.data
|
|
637
|
+
{{ $tr("ui.common.no-data", "No data") }}
|
|
606
638
|
</FSText>
|
|
607
639
|
</template>
|
|
608
640
|
<template
|
|
@@ -617,7 +649,7 @@
|
|
|
617
649
|
v-for="(item, index) in items.filter((item) => item.type === 'item')"
|
|
618
650
|
elementSelector=".fs-draggable-item"
|
|
619
651
|
:disabled="draggableDisabled"
|
|
620
|
-
:item="item"
|
|
652
|
+
:item="{ ...item, index }"
|
|
621
653
|
:key="index"
|
|
622
654
|
@update:dragend="(event, dragged) => onDragEnd(event, dragged, '.fs-data-iterator-container')"
|
|
623
655
|
@dragover="(event) => onDragOver(event, '.fs-draggable-item', '.fs-data-iterator-container')"
|
|
@@ -630,18 +662,20 @@
|
|
|
630
662
|
v-bind="{ index, item: item.raw, toggleSelect }"
|
|
631
663
|
>
|
|
632
664
|
<FSDataIteratorItem
|
|
633
|
-
:
|
|
665
|
+
:leftColor="$props.rowColor ? $props.rowColor(item.raw) : null"
|
|
634
666
|
:headers="innerHeaders.filter(h => !$props.sneakyHeaders.includes(h.value))"
|
|
635
|
-
:
|
|
636
|
-
:
|
|
637
|
-
:
|
|
638
|
-
:
|
|
667
|
+
:selectable="$props.selectable"
|
|
668
|
+
:singleSelect="$props.singleSelect"
|
|
669
|
+
:to="$props.itemTo"
|
|
670
|
+
:bottomColor="$props.color"
|
|
639
671
|
:item="item.raw"
|
|
640
672
|
:key="index"
|
|
641
|
-
:modelValue="$props.modelValue
|
|
642
|
-
@update:modelValue="toggleSelect"
|
|
643
|
-
|
|
644
|
-
|
|
673
|
+
:modelValue="$props.modelValue?.includes(item.raw[$props.itemValue])"
|
|
674
|
+
@update:modelValue="toggleSelect(item.raw)"
|
|
675
|
+
v-bind="onClickLibrary.clickable ? {
|
|
676
|
+
onClick: (event) => onClickLibrary.mobile(event, item),
|
|
677
|
+
onAuxclick: (event) => onClickLibrary.mobile(event, item)
|
|
678
|
+
} : {}"
|
|
645
679
|
>
|
|
646
680
|
<template
|
|
647
681
|
#item.top="props"
|
|
@@ -684,7 +718,7 @@
|
|
|
684
718
|
<div
|
|
685
719
|
class="fs-data-table-intersection"
|
|
686
720
|
:id="elementId"
|
|
687
|
-
/>
|
|
721
|
+
/>
|
|
688
722
|
</FSCol>
|
|
689
723
|
</template>
|
|
690
724
|
|
|
@@ -695,6 +729,7 @@ import { useRouter } from "vue-router";
|
|
|
695
729
|
import { ColorEnum, type FSDataTableColumn, type FSDataTableFilter, type FSDataTableOrder, type FSToggle } from "@dative-gpi/foundation-shared-components/models";
|
|
696
730
|
import { useBreakpoints, useColors, useSlots } from "@dative-gpi/foundation-shared-components/composables";
|
|
697
731
|
import { useTranslations as useTranslationsProvider } from "@dative-gpi/bones-ui/composables";
|
|
732
|
+
import { useRouting } from "@dative-gpi/foundation-shared-services/composables";
|
|
698
733
|
import { uuidv4 } from "@dative-gpi/bones-ui/tools/uuid"
|
|
699
734
|
|
|
700
735
|
import { alphanumericSort, containsSearchTerm, sizeToVar } from "../../utils";
|
|
@@ -745,6 +780,11 @@ export default defineComponent({
|
|
|
745
780
|
type: Array as PropType<FSDataTableColumn[]>,
|
|
746
781
|
required: true
|
|
747
782
|
},
|
|
783
|
+
showFilters: {
|
|
784
|
+
type: Boolean,
|
|
785
|
+
required: false,
|
|
786
|
+
default: false
|
|
787
|
+
},
|
|
748
788
|
filters: {
|
|
749
789
|
type: Object as PropType<{ [key: string]: FSDataTableFilter[] }>,
|
|
750
790
|
required: false,
|
|
@@ -804,7 +844,7 @@ export default defineComponent({
|
|
|
804
844
|
required: false,
|
|
805
845
|
default: ColorEnum.Primary
|
|
806
846
|
},
|
|
807
|
-
|
|
847
|
+
selectable: {
|
|
808
848
|
type: Boolean,
|
|
809
849
|
required: false,
|
|
810
850
|
default: true
|
|
@@ -814,6 +854,11 @@ export default defineComponent({
|
|
|
814
854
|
required: false,
|
|
815
855
|
default: true
|
|
816
856
|
},
|
|
857
|
+
noSearch: {
|
|
858
|
+
type: Boolean,
|
|
859
|
+
required: false,
|
|
860
|
+
default: false
|
|
861
|
+
},
|
|
817
862
|
singleSelect: {
|
|
818
863
|
type: Boolean,
|
|
819
864
|
required: false,
|
|
@@ -832,7 +877,7 @@ export default defineComponent({
|
|
|
832
877
|
mode: {
|
|
833
878
|
type: String as PropType<"table" | "iterator">,
|
|
834
879
|
required: false,
|
|
835
|
-
default: "
|
|
880
|
+
default: "table"
|
|
836
881
|
},
|
|
837
882
|
disableTable: {
|
|
838
883
|
type: Boolean,
|
|
@@ -880,9 +925,10 @@ export default defineComponent({
|
|
|
880
925
|
default: "12px"
|
|
881
926
|
},
|
|
882
927
|
},
|
|
883
|
-
emits: ["update:modelValue", "update:headers", "update:filters", "update:mode", "update:sortBy", "update:rowsPerPage", "update:page", "update:include", "update:items", "click:row"],
|
|
928
|
+
emits: ["update:modelValue", "update:headers", "update:search", "update:showFilters", "update:filters", "update:mode", "update:sortBy", "update:rowsPerPage", "update:page", "update:include", "update:items", "click:row"],
|
|
884
929
|
setup(props, { emit }) {
|
|
885
|
-
const { isExtraSmall } = useBreakpoints();
|
|
930
|
+
const { isExtraSmall, isMobileSized } = useBreakpoints();
|
|
931
|
+
const { handleRoutingEvent } = useRouting();
|
|
886
932
|
const { $tr } = useTranslationsProvider();
|
|
887
933
|
const { getColors } = useColors();
|
|
888
934
|
const router = useRouter();
|
|
@@ -894,9 +940,9 @@ export default defineComponent({
|
|
|
894
940
|
const innerSearch: Ref<string | null> = ref(null);
|
|
895
941
|
const innerRowsPerPage = ref(props.rowsPerPage);
|
|
896
942
|
const innerSortBy = ref(props.sortBy);
|
|
897
|
-
const innerMode = ref(props.mode);
|
|
943
|
+
const innerMode = ref(props.disableTable ? "iterator" : props.disableIterator ? "table" : props.mode);
|
|
898
944
|
const innerPage = ref(props.page);
|
|
899
|
-
const
|
|
945
|
+
const innerShowFilters = ref(props.showFilters);
|
|
900
946
|
const resetable = ref(false);
|
|
901
947
|
|
|
902
948
|
const intersectionObserver = ref<IntersectionObserver | null>(null);
|
|
@@ -913,11 +959,18 @@ export default defineComponent({
|
|
|
913
959
|
{ id: 5, label: "5" },
|
|
914
960
|
{ id: 10, label: "10" },
|
|
915
961
|
{ id: 30, label: "30" },
|
|
916
|
-
{ id: -1, label: $tr("ui.
|
|
962
|
+
{ id: -1, label: $tr("ui.common.all", "All") }
|
|
917
963
|
];
|
|
918
964
|
|
|
919
965
|
const showFiltersRow = computed((): boolean => {
|
|
920
|
-
|
|
966
|
+
switch (innerMode.value) {
|
|
967
|
+
case "iterator": {
|
|
968
|
+
return (props.showSearch && innerShowFilters.value && filterableHeaders.value.length > 0);
|
|
969
|
+
}
|
|
970
|
+
case "table": {
|
|
971
|
+
return (props.showSearch && innerShowFilters.value && filterableHeaders.value.length > 0) || hiddenHeaders.value.length > 0;
|
|
972
|
+
}
|
|
973
|
+
}
|
|
921
974
|
});
|
|
922
975
|
|
|
923
976
|
const hasVisibleFilters = computed((): boolean => {
|
|
@@ -925,11 +978,15 @@ export default defineComponent({
|
|
|
925
978
|
});
|
|
926
979
|
|
|
927
980
|
const showFiltersDivider = computed((): boolean => {
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
981
|
+
switch (innerMode.value) {
|
|
982
|
+
case "iterator": {
|
|
983
|
+
return resetable.value;
|
|
984
|
+
}
|
|
985
|
+
case "table": {
|
|
986
|
+
return resetable.value || (hiddenHeaders.value.length > 0 && hasVisibleFilters.value);
|
|
987
|
+
}
|
|
988
|
+
}
|
|
989
|
+
|
|
933
990
|
});
|
|
934
991
|
|
|
935
992
|
const innerSlots = computed((): { [label: string]: Slot<any> } => {
|
|
@@ -989,7 +1046,7 @@ export default defineComponent({
|
|
|
989
1046
|
width: "0%"
|
|
990
1047
|
});
|
|
991
1048
|
}
|
|
992
|
-
if (props.
|
|
1049
|
+
if (props.selectable) {
|
|
993
1050
|
extra.push({
|
|
994
1051
|
key: "data-table-select",
|
|
995
1052
|
width: "0%"
|
|
@@ -1020,20 +1077,27 @@ export default defineComponent({
|
|
|
1020
1077
|
});
|
|
1021
1078
|
|
|
1022
1079
|
const innerItems = computed((): any[] => {
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1080
|
+
// Select only the filters where a value is hidden, for others, accept all values
|
|
1081
|
+
const activeFilters: { [key: string]: FSDataTableFilter[] } = Object.keys(filters.value).reduce((acc, key) => {
|
|
1082
|
+
if (filters.value[key].some((filter) => filter.hidden)) {
|
|
1083
|
+
acc[key] = filters.value[key].filter((filter) => !filter.hidden);
|
|
1084
|
+
}
|
|
1085
|
+
return acc;
|
|
1086
|
+
}, {} as { [key: string]: FSDataTableFilter[] });
|
|
1087
|
+
|
|
1026
1088
|
if (props.items && props.items.length) {
|
|
1027
1089
|
const innerSearchFormatted = innerSearch.value ? innerSearch.value.toLowerCase() : null;
|
|
1028
1090
|
return props.items.filter((item) => {
|
|
1029
1091
|
if (props.selectedOnly && !props.modelValue.includes(item[props.itemValue])) {
|
|
1030
1092
|
return false;
|
|
1031
1093
|
}
|
|
1032
|
-
|
|
1033
|
-
|
|
1094
|
+
for (const property in activeFilters) {
|
|
1095
|
+
if (!activeFilters[property].some((filter) => filter.filter && filter.filter(filter.value, item[property], item))) {
|
|
1096
|
+
return false;
|
|
1097
|
+
}
|
|
1034
1098
|
}
|
|
1035
|
-
if (
|
|
1036
|
-
return
|
|
1099
|
+
if (!props.noSearch && innerSearchFormatted) {
|
|
1100
|
+
return containsSearchTerm(item, innerSearchFormatted);
|
|
1037
1101
|
}
|
|
1038
1102
|
return true;
|
|
1039
1103
|
});
|
|
@@ -1077,17 +1141,13 @@ export default defineComponent({
|
|
|
1077
1141
|
});
|
|
1078
1142
|
|
|
1079
1143
|
const onClickLibrary = computed((): { [key: string]: Function | boolean } => {
|
|
1144
|
+
console.log(props["onClick:row"]);
|
|
1080
1145
|
if (props["onClick:row"] || props.itemTo) {
|
|
1081
1146
|
return {
|
|
1082
1147
|
clickable: true,
|
|
1083
1148
|
row: (event: PointerEvent, row: any) => {
|
|
1084
1149
|
if (props.itemTo && router) {
|
|
1085
|
-
|
|
1086
|
-
window.open(router.resolve(props.itemTo(row.item)).href, "_blank");
|
|
1087
|
-
}
|
|
1088
|
-
else {
|
|
1089
|
-
router.push(props.itemTo(row.item));
|
|
1090
|
-
}
|
|
1150
|
+
handleRoutingEvent(event, props.itemTo(row.item), true);
|
|
1091
1151
|
}
|
|
1092
1152
|
else {
|
|
1093
1153
|
emit("click:row", row.item);
|
|
@@ -1220,13 +1280,13 @@ export default defineComponent({
|
|
|
1220
1280
|
value = header.fixedFilters.map((ff): FSDataTableFilter => ({
|
|
1221
1281
|
hidden: currentFilters?.find((cf) => cf.value == (ff.value || null))?.hidden ?? false,
|
|
1222
1282
|
text: ff.text?.toString() ?? "—",
|
|
1223
|
-
value: ff.value
|
|
1283
|
+
value: ff.value ?? null,
|
|
1224
1284
|
filter: header.methodFilter ?? ((_, property, item) => {
|
|
1225
1285
|
if (header.methodFilterRaw) {
|
|
1226
1286
|
return header.methodFilterRaw(ff.value, item);
|
|
1227
1287
|
}
|
|
1228
1288
|
const flat = property = [property].flat();
|
|
1229
|
-
return
|
|
1289
|
+
return (!ff.value && flat.length == 0) || flat.some(f => f == ff.value);
|
|
1230
1290
|
})
|
|
1231
1291
|
}));
|
|
1232
1292
|
filterDictionary[key] = value;
|
|
@@ -1249,7 +1309,7 @@ export default defineComponent({
|
|
|
1249
1309
|
return header.methodFilterRaw(dv, item);
|
|
1250
1310
|
}
|
|
1251
1311
|
const flat = [property].flat().map(mapToInnerValue);
|
|
1252
|
-
return
|
|
1312
|
+
return (!dv && flat.length == 0) || flat.some(f => f == dv);
|
|
1253
1313
|
})
|
|
1254
1314
|
}
|
|
1255
1315
|
});
|
|
@@ -1324,6 +1384,7 @@ export default defineComponent({
|
|
|
1324
1384
|
}, { threshold: [0.9] });
|
|
1325
1385
|
}
|
|
1326
1386
|
if (document.querySelector(`#${elementId}`)) {
|
|
1387
|
+
intersectionObserver.value.unobserve(document.querySelector(`#${elementId}`)!);
|
|
1327
1388
|
intersectionObserver.value.observe(document.querySelector(`#${elementId}`)!);
|
|
1328
1389
|
}
|
|
1329
1390
|
return;
|
|
@@ -1360,10 +1421,10 @@ export default defineComponent({
|
|
|
1360
1421
|
};
|
|
1361
1422
|
|
|
1362
1423
|
const resetRowIndex = (initialIndex: number, currentIndex: number, draggedElement: HTMLElement, tbodyElement: HTMLElement) => {
|
|
1363
|
-
if (initialIndex > currentIndex) {
|
|
1424
|
+
if (initialIndex > currentIndex && tbodyElement.children[initialIndex]) {
|
|
1364
1425
|
tbodyElement.children[initialIndex].insertAdjacentElement("afterend", draggedElement);
|
|
1365
1426
|
}
|
|
1366
|
-
else {
|
|
1427
|
+
else if(tbodyElement.children[initialIndex]) {
|
|
1367
1428
|
tbodyElement.children[initialIndex].insertAdjacentElement("beforebegin", draggedElement);
|
|
1368
1429
|
}
|
|
1369
1430
|
};
|
|
@@ -1479,8 +1540,17 @@ export default defineComponent({
|
|
|
1479
1540
|
}
|
|
1480
1541
|
});
|
|
1481
1542
|
|
|
1543
|
+
watch(() => props.showFilters, () => {
|
|
1544
|
+
innerShowFilters.value = props.showFilters;
|
|
1545
|
+
});
|
|
1546
|
+
|
|
1482
1547
|
watch(innerSearch, () => {
|
|
1483
1548
|
innerPage.value = 1;
|
|
1549
|
+
emit("update:search", innerSearch.value);
|
|
1550
|
+
});
|
|
1551
|
+
|
|
1552
|
+
watch(innerShowFilters, () => {
|
|
1553
|
+
emit("update:showFilters", innerShowFilters.value);
|
|
1484
1554
|
});
|
|
1485
1555
|
|
|
1486
1556
|
watch(filters, () => {
|
|
@@ -1488,6 +1558,10 @@ export default defineComponent({
|
|
|
1488
1558
|
.some((key) => filters.value[key].some((filter) => filter.hidden));
|
|
1489
1559
|
}, { deep: true });
|
|
1490
1560
|
|
|
1561
|
+
watch(size, () => {
|
|
1562
|
+
observeIntersection();
|
|
1563
|
+
});
|
|
1564
|
+
|
|
1491
1565
|
watch(innerMode, () => {
|
|
1492
1566
|
emit("update:mode", innerMode.value);
|
|
1493
1567
|
size.value = props.sizeIterator;
|
|
@@ -1512,13 +1586,14 @@ export default defineComponent({
|
|
|
1512
1586
|
|
|
1513
1587
|
watch(() => props.items, async () => {
|
|
1514
1588
|
computeFilters();
|
|
1589
|
+
observeIntersection();
|
|
1515
1590
|
if (innerPage.value !== 1) {
|
|
1516
1591
|
const formerPage = innerPage.value;
|
|
1517
1592
|
innerPage.value = 1;
|
|
1518
1593
|
await nextTick();
|
|
1519
1594
|
innerPage.value = formerPage;
|
|
1520
1595
|
}
|
|
1521
|
-
});
|
|
1596
|
+
}, { deep: true });
|
|
1522
1597
|
|
|
1523
1598
|
return {
|
|
1524
1599
|
ColorEnum,
|
|
@@ -1529,9 +1604,8 @@ export default defineComponent({
|
|
|
1529
1604
|
innerMode,
|
|
1530
1605
|
modeOptions,
|
|
1531
1606
|
innerPage,
|
|
1532
|
-
hasToolbar,
|
|
1533
1607
|
pageOptions,
|
|
1534
|
-
|
|
1608
|
+
innerShowFilters,
|
|
1535
1609
|
showFiltersRow,
|
|
1536
1610
|
showFiltersDivider,
|
|
1537
1611
|
hasVisibleFilters,
|
|
@@ -1548,6 +1622,7 @@ export default defineComponent({
|
|
|
1548
1622
|
classes,
|
|
1549
1623
|
style,
|
|
1550
1624
|
size,
|
|
1625
|
+
isMobileSized,
|
|
1551
1626
|
isExtraSmall,
|
|
1552
1627
|
draggableDisabled,
|
|
1553
1628
|
elementId,
|