@dative-gpi/foundation-shared-components 0.1.120 → 1.0.0
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/imagery.png +0 -0
- package/assets/images/map/map.png +0 -0
- package/components/FSAccordion.vue +2 -1
- package/components/FSAccordionPanel.vue +20 -1
- package/components/FSBadge.vue +7 -3
- package/components/FSBreadcrumbs.vue +4 -2
- package/components/FSButton.vue +15 -8
- package/components/FSCalendar.vue +5 -2
- package/components/FSCalendarTwin.vue +6 -3
- package/components/FSCard.vue +4 -2
- package/components/FSCardPlaceholder.vue +80 -0
- package/components/FSCheckbox.vue +10 -7
- package/components/FSChip.vue +4 -2
- package/components/FSClickable.vue +5 -3
- package/components/FSClock.vue +18 -4
- package/components/FSCol.vue +12 -5
- package/components/FSColor.vue +4 -2
- package/components/FSColorIcon.vue +5 -3
- package/components/FSDialog.vue +28 -87
- package/components/FSDialogContent.vue +133 -0
- package/components/FSDialogForm.vue +25 -236
- package/components/FSDialogFormBody.vue +273 -0
- package/components/FSDialogMenu.vue +5 -2
- package/components/FSDialogMultiForm.vue +21 -197
- package/components/FSDialogMultiFormBody.vue +231 -0
- package/components/FSDialogSubmit.vue +4 -2
- package/components/FSDivider.vue +6 -4
- package/components/FSEditImage.vue +16 -9
- package/components/FSErrorToast.vue +2 -1
- package/components/FSFadeOut.vue +1 -1
- package/components/FSForm.vue +7 -7
- package/components/FSGrid.vue +4 -2
- package/components/FSGridMosaic.vue +3 -2
- package/components/FSIcon.vue +3 -2
- package/components/FSIconCard.vue +10 -3
- package/components/FSIconCheck.vue +2 -1
- package/components/FSIconFlag.vue +2 -1
- package/components/FSImage.vue +2 -1
- package/components/FSImageCard.vue +72 -0
- package/components/FSLabel.vue +4 -2
- package/components/FSLink.vue +5 -3
- package/components/FSLoader.vue +2 -1
- package/components/FSOptionGroup.vue +28 -20
- package/components/FSOptionItem.vue +8 -18
- package/components/FSPagination.vue +4 -2
- package/components/FSRadio.vue +23 -11
- package/components/FSRadioGroup.vue +23 -10
- package/components/FSRow.vue +8 -1
- package/components/FSSlideGroup.vue +27 -6
- package/components/FSSlider.vue +4 -2
- package/components/FSSpan.vue +2 -1
- package/components/FSSwitch.vue +13 -10
- package/components/FSTab.vue +4 -2
- package/components/FSTabs.vue +5 -14
- package/components/FSTag.vue +11 -4
- package/components/FSTagGroup.vue +4 -2
- package/components/FSText.vue +4 -2
- package/components/FSToggleSet.vue +30 -17
- package/components/FSTooltip.vue +15 -4
- package/components/FSWindow.vue +2 -2
- package/components/FSWrapGroup.vue +2 -1
- package/components/autocompletes/FSAutoCompleteAddress.vue +104 -0
- package/components/autocompletes/FSAutocompleteLanguage.vue +18 -26
- package/components/autocompletes/FSAutocompleteTag.vue +138 -0
- package/components/autocompletes/FSAutocompleteTimeZone.vue +19 -30
- package/components/buttons/FSButtonAdd.vue +28 -0
- package/components/buttons/FSButtonAddIcon.vue +28 -0
- package/components/buttons/FSButtonAddLabel.vue +27 -0
- package/components/buttons/FSButtonAddMini.vue +27 -0
- package/components/buttons/FSButtonFile.vue +4 -4
- package/components/buttons/FSButtonFileIcon.vue +4 -4
- package/components/buttons/FSButtonFileLabel.vue +4 -4
- package/components/buttons/FSButtonFileMini.vue +4 -4
- package/components/deviceOrganisations/FSConnectivity.vue +3 -2
- package/components/deviceOrganisations/FSConnectivityCard.vue +3 -2
- package/components/deviceOrganisations/FSStatus.vue +3 -2
- package/components/deviceOrganisations/FSStatusCard.vue +3 -2
- package/components/deviceOrganisations/FSStatusesCarousel.vue +3 -2
- package/components/deviceOrganisations/FSStatusesRow.vue +3 -2
- package/components/deviceOrganisations/FSWorstAlert.vue +5 -4
- package/components/deviceOrganisations/FSWorstAlertCard.vue +4 -2
- package/components/fields/FSAutocompleteField.vue +210 -97
- package/components/fields/FSBaseField.vue +2 -1
- package/components/fields/FSColorField.vue +65 -94
- package/components/fields/FSDateField.vue +12 -25
- package/components/fields/FSDateRangeField.vue +15 -27
- package/components/fields/FSDateTimeField.vue +22 -32
- package/components/fields/FSDateTimeRangeField.vue +43 -51
- package/components/fields/FSGradientField.vue +143 -0
- package/components/fields/FSIconField.vue +9 -6
- package/components/fields/FSMagicConfigField.vue +154 -0
- package/components/fields/FSMagicField.vue +185 -0
- package/components/fields/FSNumberField.vue +3 -1
- package/components/fields/FSPasswordField.vue +10 -10
- package/components/fields/FSRichTextField.vue +136 -50
- package/components/fields/FSSearchField.vue +41 -62
- package/components/fields/FSSelectField.vue +148 -53
- package/components/fields/FSTagField.vue +19 -16
- package/components/fields/FSTermField.vue +192 -186
- package/components/fields/FSTextArea.vue +4 -4
- package/components/fields/FSTextField.vue +29 -6
- package/components/fields/FSTimeField.vue +55 -20
- package/components/fields/FSTimeSlotField.vue +6 -5
- package/components/fields/FSTranslateField.vue +234 -0
- package/components/fields/FSTranslateRichTextField.vue +185 -0
- package/components/fields/FSTreeViewField.vue +520 -0
- package/components/lists/FSDataIteratorItem.vue +18 -3
- package/components/lists/FSDataTableUI.vue +138 -51
- package/components/lists/FSFilterButton.vue +4 -2
- package/components/lists/FSHiddenButton.vue +4 -2
- package/components/map/FSMap.vue +598 -0
- package/components/map/FSMapEditPointAddressOverlay.vue +164 -0
- package/components/map/FSMapLayerButton.vue +77 -0
- package/components/map/FSMapOverlay.vue +150 -0
- package/components/selects/FSSelectAutoRefresh.vue +62 -0
- package/components/selects/FSSelectDashboardVariableType.vue +47 -0
- package/components/selects/FSSelectDateSetting.vue +39 -37
- package/components/selects/FSSelectDays.vue +62 -0
- package/components/tiles/FSDashboardOrganisationTileUI.vue +7 -5
- package/components/tiles/FSDashboardOrganisationTypeTileUI.vue +7 -5
- package/components/tiles/FSDashboardShallowTileUI.vue +7 -5
- package/components/tiles/FSDeviceOrganisationTileUI.vue +11 -12
- package/components/tiles/FSFolderTileUI.vue +8 -6
- package/components/tiles/FSGroupTileUI.vue +13 -15
- package/components/tiles/{FSSimpleIconTileUI.vue → FSSimpleTileUI.vue} +29 -15
- package/components/tiles/FSTile.vue +5 -11
- package/components/tiles/FSUserOrganisationTileUI.vue +2 -1
- package/components/toggleSets/FSToggleSetPosition.vue +61 -0
- package/composables/index.ts +5 -1
- package/composables/useAddress.ts +158 -0
- package/composables/useAutocomplete.ts +4 -3
- package/composables/useColors.ts +8 -25
- package/composables/useDebounce.ts +2 -1
- package/composables/useMagicFieldProvider.ts +22 -0
- package/composables/useRules.ts +4 -12
- package/composables/useSlots.ts +46 -26
- package/composables/useTables.ts +29 -0
- package/composables/useTreeView.ts +48 -0
- package/elements/FSFormElement.ts +2 -1
- package/icons/flags/France.vue +21 -5
- package/icons/flags/Germany.vue +16 -4
- package/icons/flags/GreatBritain.vue +25 -6
- package/icons/flags/Italy.vue +21 -5
- package/icons/flags/Portugal.vue +225 -51
- package/icons/flags/Spain.vue +2781 -543
- package/icons/flags/UnitedStates.vue +31 -7
- package/icons/widgetTemplates/DevicesWidget.vue +189 -189
- package/icons/widgetTemplates/ProfileWidget.vue +9 -9
- package/icons/widgetTemplates/TextWidget.vue +6 -6
- package/models/breadcrumbs.ts +1 -1
- package/models/deviceAlerts.ts +1 -1
- package/models/deviceConnectivities.ts +1 -1
- package/models/index.ts +2 -0
- package/models/magicFields.ts +9 -0
- package/models/map.ts +18 -0
- package/models/richTextVariable.ts +5 -0
- package/models/rules.ts +11 -2
- package/models/tables.ts +30 -21
- package/models/variableNode.ts +104 -0
- package/package.json +21 -18
- package/plugins/colorPlugin.ts +2 -2
- package/plugins/index.ts +2 -1
- package/plugins/mapsPlugin.ts +37 -0
- package/shims-plugin.d.ts +2 -2
- package/shims-window.d.ts +3 -0
- package/styles/components/fs_button.scss +5 -0
- package/styles/components/fs_card.scss +0 -1
- package/styles/components/fs_col.scss +1 -0
- package/styles/components/fs_color_field.scss +12 -2
- package/styles/components/fs_data_iterator_item.scss +19 -6
- package/styles/components/fs_dialog.scss +12 -22
- package/styles/components/fs_gradient_field.scss +16 -0
- package/styles/components/fs_image_card.scss +18 -0
- package/styles/components/fs_magic_config_field.scss +13 -0
- package/styles/components/fs_map.scss +129 -0
- package/styles/components/fs_map_overlay.scss +38 -0
- package/styles/components/fs_meta_field.scss +6 -0
- package/styles/components/fs_option_group.scss +1 -0
- package/styles/components/fs_radio.scss +1 -1
- package/styles/components/fs_rich_text_field.scss +17 -5
- package/styles/components/fs_row.scss +1 -1
- package/styles/components/fs_select_field.scss +9 -14
- package/styles/components/fs_text.scss +1 -1
- package/styles/components/fs_time_field.scss +0 -4
- package/styles/components/fs_translate_field.scss +3 -0
- package/styles/components/fs_tree_view_field.scss +53 -0
- package/styles/components/index.scss +8 -1
- package/styles/globals/overrides.scss +54 -8
- package/styles/globals/scrollbars.scss +2 -2
- package/themes/default.ts +1 -1
- package/utils/gradient.ts +1601 -0
- package/utils/index.ts +3 -1
- package/utils/leafletMarkers.ts +23 -0
- package/utils/lexical.ts +3 -1
- package/components/selects/FSSelectTimeZone.vue +0 -67
- package/styles/components/fs_date_field.scss +0 -8
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
width="100%"
|
|
6
6
|
:color="$props.itemColor"
|
|
7
7
|
:variant="variant"
|
|
8
|
+
:style="style"
|
|
8
9
|
>
|
|
9
10
|
<FSCol>
|
|
10
11
|
<slot
|
|
@@ -66,9 +67,11 @@
|
|
|
66
67
|
</template>
|
|
67
68
|
|
|
68
69
|
<script lang="ts">
|
|
69
|
-
import {
|
|
70
|
+
import type { PropType } from "vue";
|
|
71
|
+
import { computed, defineComponent } from "vue";
|
|
70
72
|
|
|
71
|
-
import {
|
|
73
|
+
import type { FSDataTableColumn } from "@dative-gpi/foundation-shared-components/models";
|
|
74
|
+
import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
|
|
72
75
|
|
|
73
76
|
import FSCheckbox from "../FSCheckbox.vue";
|
|
74
77
|
import FSCard from "../FSCard.vue";
|
|
@@ -112,6 +115,11 @@ export default defineComponent({
|
|
|
112
115
|
required: false,
|
|
113
116
|
default: ColorEnum.Primary
|
|
114
117
|
},
|
|
118
|
+
clickable: {
|
|
119
|
+
type: Boolean,
|
|
120
|
+
required: false,
|
|
121
|
+
default: false
|
|
122
|
+
},
|
|
115
123
|
showSelect: {
|
|
116
124
|
type: Boolean,
|
|
117
125
|
required: false,
|
|
@@ -127,8 +135,15 @@ export default defineComponent({
|
|
|
127
135
|
}
|
|
128
136
|
});
|
|
129
137
|
|
|
138
|
+
const style = computed((): { [key: string]: string | null | undefined } => {
|
|
139
|
+
return {
|
|
140
|
+
"--fs-data-iterator-item-cursor": props.clickable ? "pointer" : "default"
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
|
|
130
144
|
return {
|
|
131
|
-
variant
|
|
145
|
+
variant,
|
|
146
|
+
style
|
|
132
147
|
};
|
|
133
148
|
}
|
|
134
149
|
});
|
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
:wrap="isExtraSmall ? false : true"
|
|
8
8
|
width="fill"
|
|
9
9
|
>
|
|
10
|
+
<slot
|
|
11
|
+
v-if="!isExtraSmall"
|
|
12
|
+
name="prepend-toolbar"
|
|
13
|
+
/>
|
|
10
14
|
<template
|
|
11
15
|
v-if="$props.showSearch"
|
|
12
16
|
>
|
|
@@ -26,18 +30,21 @@
|
|
|
26
30
|
v-if="!isExtraSmall"
|
|
27
31
|
name="toolbar"
|
|
28
32
|
/>
|
|
29
|
-
<
|
|
30
|
-
<FSRow
|
|
33
|
+
<template
|
|
31
34
|
v-if="!$props.disableTable && !$props.disableIterator"
|
|
32
|
-
align="center-right"
|
|
33
35
|
>
|
|
34
|
-
<
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
<v-spacer />
|
|
37
|
+
<FSRow
|
|
38
|
+
align="center-right"
|
|
39
|
+
>
|
|
40
|
+
<FSOptionGroup
|
|
41
|
+
:values="modeOptions"
|
|
42
|
+
:singleColor="true"
|
|
43
|
+
:required="true"
|
|
44
|
+
v-model="innerMode"
|
|
45
|
+
/>
|
|
46
|
+
</FSRow>
|
|
47
|
+
</template>
|
|
41
48
|
</FSRow>
|
|
42
49
|
<FSRow
|
|
43
50
|
v-if="isExtraSmall && hasToolbar"
|
|
@@ -109,24 +116,26 @@
|
|
|
109
116
|
>
|
|
110
117
|
<v-data-table
|
|
111
118
|
v-if="!isExtraSmall"
|
|
119
|
+
loadingText=""
|
|
112
120
|
:selectStrategy="$props.singleSelect ? 'single' : 'all'"
|
|
113
|
-
:itemValue="$props.itemValue"
|
|
114
|
-
:showSelect="$props.showSelect"
|
|
115
|
-
:headers="extraHeaders.concat(innerHeaders)"
|
|
116
121
|
:groupBy="$props.groupBy ? [$props.groupBy] : []"
|
|
122
|
+
:headers="extraHeaders.concat(innerHeaders)"
|
|
117
123
|
:sortBy="innerSortBy ? [innerSortBy] : []"
|
|
118
|
-
:
|
|
124
|
+
:itemsPerPage="innerRowsPerPage"
|
|
125
|
+
:showSelect="$props.showSelect"
|
|
126
|
+
:hover="!$props.sortDraggable"
|
|
127
|
+
:itemValue="$props.itemValue"
|
|
128
|
+
:loading="$props.loading"
|
|
129
|
+
:rowProps="rowProps"
|
|
119
130
|
:fixedHeader="true"
|
|
131
|
+
:items="innerItems"
|
|
120
132
|
:multiSort="false"
|
|
121
|
-
:hover="!$props.sortDraggable"
|
|
122
|
-
:style="style"
|
|
123
|
-
:row-props="rowProps"
|
|
124
|
-
:class="classes"
|
|
125
133
|
:page="innerPage"
|
|
126
|
-
:
|
|
134
|
+
:class="classes"
|
|
135
|
+
:style="style"
|
|
127
136
|
:modelValue="$props.modelValue"
|
|
128
|
-
@auxclick:row="
|
|
129
|
-
@click:row="
|
|
137
|
+
@auxclick:row="onClickLibrary.row"
|
|
138
|
+
@click:row="onClickLibrary.row"
|
|
130
139
|
@update:sortBy="innerSortBy = $event ? $event[0] : null"
|
|
131
140
|
@dragover.prevent
|
|
132
141
|
@drop:row="(event, row) => onDrop(event, row, 'tr.v-data-table__tr')"
|
|
@@ -404,10 +413,28 @@
|
|
|
404
413
|
<v-data-iterator
|
|
405
414
|
v-else
|
|
406
415
|
class="fs-data-table-iterator"
|
|
416
|
+
:itemsPerPage="innerRowsPerPage"
|
|
417
|
+
:loading="$props.loading"
|
|
407
418
|
:items="innerItems"
|
|
408
419
|
:page="innerPage"
|
|
409
|
-
:itemsPerPage="innerRowsPerPage"
|
|
410
420
|
>
|
|
421
|
+
<template
|
|
422
|
+
#loader
|
|
423
|
+
>
|
|
424
|
+
<v-progress-linear
|
|
425
|
+
height="2"
|
|
426
|
+
:indeterminate="true"
|
|
427
|
+
/>
|
|
428
|
+
</template>
|
|
429
|
+
<template
|
|
430
|
+
#no-data
|
|
431
|
+
>
|
|
432
|
+
<FSText
|
|
433
|
+
font="text-overline"
|
|
434
|
+
>
|
|
435
|
+
{{ $tr("ui.data-table.empty", "No data") }}
|
|
436
|
+
</FSText>
|
|
437
|
+
</template>
|
|
411
438
|
<template
|
|
412
439
|
#default="{ items }"
|
|
413
440
|
>
|
|
@@ -435,6 +462,7 @@
|
|
|
435
462
|
v-if="item.type === 'item'"
|
|
436
463
|
:itemColor="$props.rowColor ? $props.rowColor(item.raw) : ColorEnum.Background"
|
|
437
464
|
:headers="innerHeaders.filter(h => !$props.sneakyHeaders.includes(h.value))"
|
|
465
|
+
:clickable="onClickLibrary.clickable"
|
|
438
466
|
:showSelect="$props.showSelect"
|
|
439
467
|
:itemTo="$props.itemTo"
|
|
440
468
|
:color="$props.color"
|
|
@@ -442,6 +470,8 @@
|
|
|
442
470
|
:key="index"
|
|
443
471
|
:modelValue="$props.modelValue.includes(item.raw[$props.itemValue])"
|
|
444
472
|
@update:modelValue="toggleSelect"
|
|
473
|
+
@auxclick="() => onClickLibrary.mobile($event, item)"
|
|
474
|
+
@click="() => onClickLibrary.mobile($event, item)"
|
|
445
475
|
>
|
|
446
476
|
<template
|
|
447
477
|
#item.top="props"
|
|
@@ -554,9 +584,27 @@
|
|
|
554
584
|
>
|
|
555
585
|
<v-data-iterator
|
|
556
586
|
class="fs-data-table-iterator"
|
|
557
|
-
:
|
|
587
|
+
:loading="$props.loading"
|
|
558
588
|
:itemsPerPage="size"
|
|
589
|
+
:items="innerItems"
|
|
559
590
|
>
|
|
591
|
+
<template
|
|
592
|
+
#loader
|
|
593
|
+
>
|
|
594
|
+
<v-progress-linear
|
|
595
|
+
height="2"
|
|
596
|
+
:indeterminate="true"
|
|
597
|
+
/>
|
|
598
|
+
</template>
|
|
599
|
+
<template
|
|
600
|
+
#no-data
|
|
601
|
+
>
|
|
602
|
+
<FSText
|
|
603
|
+
font="text-overline"
|
|
604
|
+
>
|
|
605
|
+
{{ $tr("ui.data-table.empty", "No data") }}
|
|
606
|
+
</FSText>
|
|
607
|
+
</template>
|
|
560
608
|
<template
|
|
561
609
|
#default="{ items }"
|
|
562
610
|
>
|
|
@@ -584,6 +632,7 @@
|
|
|
584
632
|
<FSDataIteratorItem
|
|
585
633
|
:itemColor="$props.rowColor ? $props.rowColor(item.raw) : ColorEnum.Background"
|
|
586
634
|
:headers="innerHeaders.filter(h => !$props.sneakyHeaders.includes(h.value))"
|
|
635
|
+
:clickable="onClickLibrary.clickable"
|
|
587
636
|
:showSelect="$props.showSelect"
|
|
588
637
|
:itemTo="$props.itemTo"
|
|
589
638
|
:color="$props.color"
|
|
@@ -591,6 +640,8 @@
|
|
|
591
640
|
:key="index"
|
|
592
641
|
:modelValue="$props.modelValue.includes(item.raw[$props.itemValue])"
|
|
593
642
|
@update:modelValue="toggleSelect"
|
|
643
|
+
@auxclick="() => onClickLibrary.mobile($event, item)"
|
|
644
|
+
@click="() => onClickLibrary.mobile($event, item)"
|
|
594
645
|
>
|
|
595
646
|
<template
|
|
596
647
|
#item.top="props"
|
|
@@ -638,10 +689,12 @@
|
|
|
638
689
|
</template>
|
|
639
690
|
|
|
640
691
|
<script lang="ts">
|
|
641
|
-
import {
|
|
692
|
+
import type { PropType, Ref, Slot} from "vue";
|
|
693
|
+
import { computed, defineComponent, nextTick, onMounted, onUnmounted, ref, watch } from "vue";
|
|
642
694
|
import { useRouter } from "vue-router";
|
|
643
695
|
|
|
644
|
-
import {
|
|
696
|
+
import type { FSDataTableColumn, FSDataTableFilter, FSDataTableOrder, FSToggle } from "@dative-gpi/foundation-shared-components/models";
|
|
697
|
+
import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
|
|
645
698
|
import { useBreakpoints, useColors, useSlots } from "@dative-gpi/foundation-shared-components/composables";
|
|
646
699
|
import { useTranslations as useTranslationsProvider } from "@dative-gpi/bones-ui/composables";
|
|
647
700
|
import { uuidv4 } from "@dative-gpi/bones-ui/tools/uuid"
|
|
@@ -718,6 +771,11 @@ export default defineComponent({
|
|
|
718
771
|
required: false,
|
|
719
772
|
default: null
|
|
720
773
|
},
|
|
774
|
+
["onClick:row"]: {
|
|
775
|
+
type: Function,
|
|
776
|
+
required: false,
|
|
777
|
+
default: null
|
|
778
|
+
},
|
|
721
779
|
rowsPerPage: {
|
|
722
780
|
type: Number,
|
|
723
781
|
required: false,
|
|
@@ -768,6 +826,11 @@ export default defineComponent({
|
|
|
768
826
|
required: false,
|
|
769
827
|
default: false
|
|
770
828
|
},
|
|
829
|
+
loading: {
|
|
830
|
+
type: Boolean,
|
|
831
|
+
required: false,
|
|
832
|
+
default: false
|
|
833
|
+
},
|
|
771
834
|
mode: {
|
|
772
835
|
type: String as PropType<"table" | "iterator">,
|
|
773
836
|
required: false,
|
|
@@ -1018,25 +1081,38 @@ export default defineComponent({
|
|
|
1018
1081
|
}
|
|
1019
1082
|
});
|
|
1020
1083
|
|
|
1021
|
-
const
|
|
1022
|
-
if (
|
|
1023
|
-
return
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1084
|
+
const onClickLibrary = computed((): { [key: string]: Function | boolean } => {
|
|
1085
|
+
if (props["onClick:row"] || props.itemTo) {
|
|
1086
|
+
return {
|
|
1087
|
+
clickable: true,
|
|
1088
|
+
row: (event: PointerEvent, row: any) => {
|
|
1089
|
+
if (props.itemTo && router) {
|
|
1090
|
+
if (event.metaKey || event.ctrlKey || event.button === 1) {
|
|
1091
|
+
window.open(router.resolve(props.itemTo(row.item)).href, "_blank");
|
|
1092
|
+
}
|
|
1093
|
+
else {
|
|
1094
|
+
router.push(props.itemTo(row.item));
|
|
1095
|
+
}
|
|
1027
1096
|
}
|
|
1028
1097
|
else {
|
|
1029
|
-
|
|
1098
|
+
emit("click:row", row.item);
|
|
1099
|
+
}
|
|
1100
|
+
},
|
|
1101
|
+
mobile: (event: any, item: any) => {
|
|
1102
|
+
if (props.itemTo && router) {
|
|
1103
|
+
router.push(props.itemTo(item));
|
|
1104
|
+
}
|
|
1105
|
+
else {
|
|
1106
|
+
emit("click:row", item);
|
|
1030
1107
|
}
|
|
1031
1108
|
}
|
|
1032
|
-
|
|
1033
|
-
emit("click:row", row.item);
|
|
1034
|
-
}
|
|
1035
|
-
};
|
|
1036
|
-
}
|
|
1037
|
-
else {
|
|
1038
|
-
return null;
|
|
1109
|
+
}
|
|
1039
1110
|
}
|
|
1111
|
+
return {
|
|
1112
|
+
clickable: false,
|
|
1113
|
+
row: null,
|
|
1114
|
+
mobile: () => null
|
|
1115
|
+
};
|
|
1040
1116
|
});
|
|
1041
1117
|
|
|
1042
1118
|
const draggableDisabled = computed(() => {
|
|
@@ -1081,9 +1157,6 @@ export default defineComponent({
|
|
|
1081
1157
|
const toggleFilter = (header: string, value: FSDataTableFilter[]): void => {
|
|
1082
1158
|
filters.value[header] = value;
|
|
1083
1159
|
emit("update:filters", filters.value);
|
|
1084
|
-
// If a filter is hidden, the associated filter is reseted
|
|
1085
|
-
resetable.value = Object.keys(filters.value)
|
|
1086
|
-
.some((key) => filters.value[key].some((filter) => filter.hidden));
|
|
1087
1160
|
};
|
|
1088
1161
|
|
|
1089
1162
|
const resetFilter = (): void => {
|
|
@@ -1091,7 +1164,6 @@ export default defineComponent({
|
|
|
1091
1164
|
filters.value[key] = filters.value[key].map((filter) => ({ ...filter, hidden: false }));
|
|
1092
1165
|
}
|
|
1093
1166
|
emit("update:filters", filters.value);
|
|
1094
|
-
resetable.value = false;
|
|
1095
1167
|
};
|
|
1096
1168
|
|
|
1097
1169
|
const filterSlot = (header: FSDataTableColumn): string => {
|
|
@@ -1105,10 +1177,8 @@ export default defineComponent({
|
|
|
1105
1177
|
switch (property) {
|
|
1106
1178
|
case "hidden":
|
|
1107
1179
|
innerColumn.hidden = value as boolean;
|
|
1108
|
-
if (value) {
|
|
1180
|
+
if (value && filters.value[header.value!]) {
|
|
1109
1181
|
filters.value[header.value!] = filters.value[header.value!].map((filter) => ({ ...filter, hidden: false }));
|
|
1110
|
-
resetable.value = Object.keys(filters.value)
|
|
1111
|
-
.some((key) => filters.value[key].some((filter) => filter.hidden));
|
|
1112
1182
|
emit("update:filters", filters.value);
|
|
1113
1183
|
}
|
|
1114
1184
|
break;
|
|
@@ -1314,10 +1384,12 @@ export default defineComponent({
|
|
|
1314
1384
|
target.insertAdjacentElement("beforebegin", dragged);
|
|
1315
1385
|
target.classList.remove("fs-dropzone-include");
|
|
1316
1386
|
}
|
|
1317
|
-
else if (dragged
|
|
1387
|
+
else if (dragged!.getAttribute("data-initial-index") !== null) {
|
|
1318
1388
|
target.classList.add("fs-dropzone-include");
|
|
1319
|
-
const tbodyElement = (event.target as HTMLElement)?.closest(elementContainerSelector) as HTMLElement;
|
|
1320
|
-
|
|
1389
|
+
const tbodyElement = (event.target as HTMLElement)?.closest(elementContainerSelector) as HTMLElement ?? null;
|
|
1390
|
+
if (tbodyElement !== null) {
|
|
1391
|
+
resetRowIndex(+dragged!.getAttribute('data-initial-index')!, Array.from(tbodyElement.children).indexOf(dragged), dragged, tbodyElement);
|
|
1392
|
+
}
|
|
1321
1393
|
}
|
|
1322
1394
|
}
|
|
1323
1395
|
}
|
|
@@ -1403,6 +1475,11 @@ export default defineComponent({
|
|
|
1403
1475
|
innerPage.value = 1;
|
|
1404
1476
|
});
|
|
1405
1477
|
|
|
1478
|
+
watch(filters, () => {
|
|
1479
|
+
resetable.value = Object.keys(filters.value)
|
|
1480
|
+
.some((key) => filters.value[key].some((filter) => filter.hidden));
|
|
1481
|
+
}, { deep: true });
|
|
1482
|
+
|
|
1406
1483
|
watch(innerMode, () => {
|
|
1407
1484
|
emit("update:mode", innerMode.value);
|
|
1408
1485
|
size.value = props.sizeIterator;
|
|
@@ -1421,10 +1498,20 @@ export default defineComponent({
|
|
|
1421
1498
|
emit("update:rowsPerPage", innerRowsPerPage.value);
|
|
1422
1499
|
});
|
|
1423
1500
|
|
|
1424
|
-
watch(
|
|
1501
|
+
watch(() => props.headers, () => {
|
|
1425
1502
|
computeFilters();
|
|
1426
1503
|
});
|
|
1427
1504
|
|
|
1505
|
+
watch(() => props.items, async () => {
|
|
1506
|
+
computeFilters();
|
|
1507
|
+
if (innerPage.value !== 1) {
|
|
1508
|
+
const formerPage = innerPage.value;
|
|
1509
|
+
innerPage.value = 1;
|
|
1510
|
+
await nextTick();
|
|
1511
|
+
innerPage.value = formerPage;
|
|
1512
|
+
}
|
|
1513
|
+
});
|
|
1514
|
+
|
|
1428
1515
|
return {
|
|
1429
1516
|
ColorEnum,
|
|
1430
1517
|
innerSlots,
|
|
@@ -1453,10 +1540,10 @@ export default defineComponent({
|
|
|
1453
1540
|
classes,
|
|
1454
1541
|
style,
|
|
1455
1542
|
size,
|
|
1456
|
-
onClickRow,
|
|
1457
1543
|
isExtraSmall,
|
|
1458
1544
|
draggableDisabled,
|
|
1459
1545
|
elementId,
|
|
1546
|
+
onClickLibrary,
|
|
1460
1547
|
toggleSelectAll,
|
|
1461
1548
|
toggleSelectGroup,
|
|
1462
1549
|
toggleSelect,
|
|
@@ -87,9 +87,11 @@
|
|
|
87
87
|
</template>
|
|
88
88
|
|
|
89
89
|
<script lang="ts">
|
|
90
|
-
import {
|
|
90
|
+
import type { PropType} from "vue";
|
|
91
|
+
import { computed, defineComponent, ref } from "vue";
|
|
91
92
|
|
|
92
|
-
import { ColorBase,
|
|
93
|
+
import type { ColorBase, FSDataTableColumn, FSDataTableFilter } from "@dative-gpi/foundation-shared-components/models";
|
|
94
|
+
import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
|
|
93
95
|
import { useTranslations as useTranslationsProvider } from "@dative-gpi/bones-ui/composables";
|
|
94
96
|
|
|
95
97
|
import FSSearchField from "../fields/FSSearchField.vue";
|
|
@@ -61,9 +61,11 @@
|
|
|
61
61
|
</template>
|
|
62
62
|
|
|
63
63
|
<script lang="ts">
|
|
64
|
-
import {
|
|
64
|
+
import type { PropType} from "vue";
|
|
65
|
+
import { defineComponent, ref } from "vue";
|
|
65
66
|
|
|
66
|
-
import { ColorBase,
|
|
67
|
+
import type { ColorBase, FSDataTableColumn } from "@dative-gpi/foundation-shared-components/models";
|
|
68
|
+
import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
|
|
67
69
|
|
|
68
70
|
import FSCard from "../FSCard.vue";
|
|
69
71
|
import FSChip from "../FSChip.vue";
|