quasar-ui-danx 0.2.15 → 0.2.17
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/danx.es.js +2 -2
- package/dist/danx.es.js.map +1 -1
- package/dist/danx.umd.js +1 -1
- package/dist/danx.umd.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/components/ActionTable/ActionMenu.vue +4 -4
- package/src/components/ActionTable/ActionTable.vue +12 -12
- package/src/components/ActionTable/ActionTableColumn.vue +11 -11
- package/src/components/ActionTable/Columns/ColumnListItem.vue +2 -2
- package/src/components/ActionTable/Columns/ColumnSettingsDialog.vue +8 -8
- package/src/components/ActionTable/Columns/TitleColumnFormat.vue +1 -1
- package/src/components/ActionTable/Columns/VisibleColumnsToggleButtons.vue +7 -7
- package/src/components/ActionTable/EmptyTableState.vue +4 -4
- package/src/components/ActionTable/Filters/CollapsableFiltersSidebar.vue +3 -3
- package/src/components/ActionTable/Filters/FilterFieldList.vue +6 -6
- package/src/components/ActionTable/Filters/FilterListToggle.vue +3 -3
- package/src/components/ActionTable/Filters/FilterToolbarLayout.vue +3 -3
- package/src/components/ActionTable/Filters/FilterableField.vue +6 -6
- package/src/components/ActionTable/Form/Fields/BooleanField.vue +4 -4
- package/src/components/ActionTable/Form/Fields/ConfirmPasswordField.vue +7 -7
- package/src/components/ActionTable/Form/Fields/DateField.vue +6 -6
- package/src/components/ActionTable/Form/Fields/DateRangeField.vue +13 -13
- package/src/components/ActionTable/Form/Fields/DateTimeField.vue +6 -6
- package/src/components/ActionTable/Form/Fields/DateTimePicker.vue +6 -6
- package/src/components/ActionTable/Form/Fields/EditableDiv.vue +3 -3
- package/src/components/ActionTable/Form/Fields/FieldLabel.vue +2 -2
- package/src/components/ActionTable/Form/Fields/FileUploadButton.vue +15 -15
- package/src/components/ActionTable/Form/Fields/InlineDateTimeField.vue +7 -7
- package/src/components/ActionTable/Form/Fields/IntegerField.vue +2 -2
- package/src/components/ActionTable/Form/Fields/LabeledInput.vue +2 -2
- package/src/components/ActionTable/Form/Fields/MultiFileField.vue +6 -6
- package/src/components/ActionTable/Form/Fields/MultiKeywordField.vue +8 -8
- package/src/components/ActionTable/Form/Fields/NewPasswordField.vue +6 -6
- package/src/components/ActionTable/Form/Fields/NumberField.vue +20 -20
- package/src/components/ActionTable/Form/Fields/NumberRangeField.vue +20 -20
- package/src/components/ActionTable/Form/Fields/SelectDrawer.vue +8 -8
- package/src/components/ActionTable/Form/Fields/SelectField.vue +36 -36
- package/src/components/ActionTable/Form/Fields/SelectWithChildrenField.vue +9 -9
- package/src/components/ActionTable/Form/Fields/SingleFileField.vue +6 -6
- package/src/components/ActionTable/Form/Fields/TextField.vue +15 -15
- package/src/components/ActionTable/Form/Fields/WysiwygField.vue +4 -4
- package/src/components/ActionTable/Form/RenderedForm.vue +5 -5
- package/src/components/ActionTable/TableSummaryRow.vue +8 -8
- package/src/components/ActionTable/listControls.ts +5 -5
- package/src/components/ActionTable/listHelpers.ts +1 -1
- package/src/components/ActionTable/tableColumns.ts +24 -1
- package/src/components/AuditHistory/AuditHistoryItem.vue +4 -4
- package/src/components/AuditHistory/AuditHistoryItemValue.vue +10 -10
- package/src/components/DragAndDrop/HandleDraggable.vue +8 -8
- package/src/components/DragAndDrop/ListItemDraggable.vue +8 -8
- package/src/components/DragAndDrop/dragAndDrop.ts +219 -219
- package/src/components/DragAndDrop/listDragAndDrop.ts +4 -4
- package/src/components/PanelsDrawer/PanelsDrawer.vue +8 -8
- package/src/components/PanelsDrawer/PanelsDrawerPanels.vue +1 -1
- package/src/components/PanelsDrawer/PanelsDrawerTabs.vue +4 -4
- package/src/components/Utility/Buttons/ExportButton.vue +4 -4
- package/src/components/Utility/Buttons/RefreshButton.vue +2 -2
- package/src/components/Utility/Controls/PreviousNextControls.vue +2 -2
- package/src/components/Utility/Dialogs/ConfirmDialog.vue +14 -14
- package/src/components/Utility/Dialogs/FullScreenDialog.vue +8 -8
- package/src/components/Utility/Dialogs/FullscreenCarouselDialog.vue +11 -11
- package/src/components/Utility/Dialogs/InfoDialog.vue +12 -12
- package/src/components/Utility/Dialogs/InputDialog.vue +5 -5
- package/src/components/Utility/Files/FilePreview.vue +10 -10
- package/src/components/Utility/Formats/GpsCoordinatesFormat.vue +4 -4
- package/src/components/Utility/Formats/IconWithTextFormat.vue +2 -2
- package/src/components/Utility/Formats/LabelValueFormat.vue +2 -2
- package/src/components/Utility/Layouts/CollapsableSidebar.vue +15 -15
- package/src/components/Utility/Layouts/ContentDrawer.vue +6 -6
- package/src/components/Utility/Popovers/InteractiveTooltip.vue +4 -4
- package/src/components/Utility/Popovers/PopoverMenu.vue +49 -49
- package/src/components/Utility/Tabs/BadgeTab.vue +1 -1
- package/src/components/Utility/Tabs/IndicatorTab.vue +3 -3
- package/src/components/Utility/Tools/ActionVnode.vue +3 -3
- package/src/components/Utility/Tools/RenderComponent.vue +3 -3
- package/src/components/Utility/Transitions/StaggeredListTransition.vue +3 -3
- package/src/helpers/array.ts +16 -16
- package/src/helpers/storage.ts +5 -5
- package/src/helpers/utils.ts +1 -1
- package/src/index.common.js +1 -2
- package/src/index.esm.js +1 -1
- package/src/index.umd.js +2 -2
- package/src/svg/CaretDownIcon.svg +1 -1
- package/src/svg/DragHandleDotsIcon.svg +3 -3
- package/src/svg/DragHandleIcon.svg +3 -3
- package/src/svg/FilterIcon.svg +5 -5
- package/src/svg/ImageIcon.svg +27 -27
- package/src/svg/PdfIcon.svg +5 -5
- package/src/svg/SkipNextIcon.svg +3 -3
- package/src/svg/SkipPreviousIcon.svg +3 -3
- package/src/svg/TrashIcon.svg +12 -12
- package/src/svg/WarningIcon.svg +3 -3
- package/src/svg/XIcon.svg +15 -15
- package/src/vue-plugin.js +5 -5
- package/vite.config.js +7 -0
@@ -21,7 +21,7 @@
|
|
21
21
|
</div>
|
22
22
|
<div class="flex-grow overflow-hidden h-full">
|
23
23
|
<div class="flex items-stretch flex-nowrap h-full">
|
24
|
-
<div class="border-r w-[13.
|
24
|
+
<div class="border-r w-[13.5rem] overflow-y-auto">
|
25
25
|
<PanelsDrawerTabs
|
26
26
|
v-model="activePanel"
|
27
27
|
:panels="panels"
|
@@ -38,13 +38,13 @@
|
|
38
38
|
</ContentDrawer>
|
39
39
|
</template>
|
40
40
|
<script setup>
|
41
|
-
import { ref, watch } from
|
42
|
-
import { XIcon as CloseIcon } from
|
43
|
-
import { ContentDrawer } from
|
44
|
-
import PanelsDrawerPanels from
|
45
|
-
import PanelsDrawerTabs from
|
41
|
+
import { ref, watch } from "vue";
|
42
|
+
import { XIcon as CloseIcon } from "../../svg";
|
43
|
+
import { ContentDrawer } from "../Utility";
|
44
|
+
import PanelsDrawerPanels from "./PanelsDrawerPanels";
|
45
|
+
import PanelsDrawerTabs from "./PanelsDrawerTabs";
|
46
46
|
|
47
|
-
defineEmits([
|
47
|
+
defineEmits(["update:model-value", "close"]);
|
48
48
|
const props = defineProps({
|
49
49
|
modelValue: {
|
50
50
|
type: String,
|
@@ -52,7 +52,7 @@ const props = defineProps({
|
|
52
52
|
},
|
53
53
|
panelsClass: {
|
54
54
|
type: [Object, String],
|
55
|
-
default:
|
55
|
+
default: "w-[35.5rem]"
|
56
56
|
},
|
57
57
|
panels: {
|
58
58
|
type: Array,
|
@@ -23,14 +23,14 @@
|
|
23
23
|
</QTabs>
|
24
24
|
</template>
|
25
25
|
<script setup>
|
26
|
-
import { QTab } from
|
27
|
-
import { RenderVnode } from
|
26
|
+
import { QTab } from "quasar";
|
27
|
+
import { RenderVnode } from "../Utility";
|
28
28
|
|
29
|
-
defineEmits([
|
29
|
+
defineEmits(["update:model-value"]);
|
30
30
|
defineProps({
|
31
31
|
modelValue: {
|
32
32
|
type: String,
|
33
|
-
default:
|
33
|
+
default: "general"
|
34
34
|
},
|
35
35
|
panels: {
|
36
36
|
type: Array,
|
@@ -4,9 +4,9 @@
|
|
4
4
|
</QBtn>
|
5
5
|
</template>
|
6
6
|
<script setup>
|
7
|
-
import { DownloadIcon as ExportIcon } from
|
8
|
-
import { ref } from
|
9
|
-
import { FlashMessages } from
|
7
|
+
import { DownloadIcon as ExportIcon } from "@heroicons/vue/solid";
|
8
|
+
import { ref } from "vue";
|
9
|
+
import { FlashMessages } from "../../../helpers";
|
10
10
|
|
11
11
|
const props = defineProps({
|
12
12
|
exporter: {
|
@@ -21,7 +21,7 @@ async function onExport() {
|
|
21
21
|
await props.exporter();
|
22
22
|
} catch (error) {
|
23
23
|
console.error(error);
|
24
|
-
FlashMessages.error(
|
24
|
+
FlashMessages.error("Failed to export data");
|
25
25
|
}
|
26
26
|
isExporting.value = false;
|
27
27
|
}
|
@@ -19,9 +19,9 @@
|
|
19
19
|
</div>
|
20
20
|
</template>
|
21
21
|
<script setup>
|
22
|
-
import { SkipNextIcon, SkipPreviousIcon } from
|
22
|
+
import { SkipNextIcon, SkipPreviousIcon } from "../../../svg";
|
23
23
|
|
24
|
-
defineEmits([
|
24
|
+
defineEmits(["next"]);
|
25
25
|
defineProps({
|
26
26
|
isLoading: Boolean
|
27
27
|
});
|
@@ -70,26 +70,26 @@
|
|
70
70
|
</template>
|
71
71
|
|
72
72
|
<script setup>
|
73
|
-
import { XIcon as CloseIcon } from
|
73
|
+
import { XIcon as CloseIcon } from "@heroicons/vue/outline";
|
74
74
|
|
75
|
-
const emit = defineEmits([
|
75
|
+
const emit = defineEmits(["update:model-value", "confirm", "close"]);
|
76
76
|
const props = defineProps({
|
77
77
|
modelValue: { type: [String, Boolean, Object], default: true },
|
78
78
|
title: {
|
79
79
|
type: String,
|
80
|
-
default:
|
80
|
+
default: ""
|
81
81
|
},
|
82
82
|
titleClass: {
|
83
83
|
type: String,
|
84
|
-
default:
|
84
|
+
default: ""
|
85
85
|
},
|
86
86
|
subtitle: {
|
87
87
|
type: String,
|
88
|
-
default:
|
88
|
+
default: ""
|
89
89
|
},
|
90
90
|
content: {
|
91
91
|
type: String,
|
92
|
-
default:
|
92
|
+
default: ""
|
93
93
|
},
|
94
94
|
backdropDismiss: Boolean,
|
95
95
|
maximized: Boolean,
|
@@ -101,32 +101,32 @@ const props = defineProps({
|
|
101
101
|
hideConfirm: Boolean,
|
102
102
|
confirmText: {
|
103
103
|
type: String,
|
104
|
-
default:
|
104
|
+
default: "Confirm"
|
105
105
|
},
|
106
106
|
cancelText: {
|
107
107
|
type: String,
|
108
|
-
default:
|
108
|
+
default: "Cancel"
|
109
109
|
},
|
110
110
|
confirmClass: {
|
111
111
|
type: String,
|
112
|
-
default:
|
112
|
+
default: "bg-blue-600 text-white"
|
113
113
|
},
|
114
114
|
contentClass: {
|
115
115
|
type: String,
|
116
|
-
default:
|
116
|
+
default: ""
|
117
117
|
}
|
118
118
|
});
|
119
119
|
|
120
120
|
function onConfirm() {
|
121
|
-
emit(
|
121
|
+
emit("confirm");
|
122
122
|
|
123
123
|
if (props.closeOnConfirm) {
|
124
|
-
emit(
|
124
|
+
emit("close");
|
125
125
|
}
|
126
126
|
}
|
127
127
|
|
128
128
|
function onClose() {
|
129
|
-
emit(
|
130
|
-
emit(
|
129
|
+
emit("update:model-value", false);
|
130
|
+
emit("close");
|
131
131
|
}
|
132
132
|
</script>
|
@@ -20,10 +20,10 @@
|
|
20
20
|
</template>
|
21
21
|
|
22
22
|
<script setup>
|
23
|
-
import { computed } from
|
24
|
-
import { XIcon } from
|
23
|
+
import { computed } from "vue";
|
24
|
+
import { XIcon } from "../../../svg";
|
25
25
|
|
26
|
-
const emit = defineEmits([
|
26
|
+
const emit = defineEmits(["update:model-value", "close"]);
|
27
27
|
const props = defineProps({
|
28
28
|
modelValue: Boolean,
|
29
29
|
center: Boolean,
|
@@ -33,14 +33,14 @@ const props = defineProps({
|
|
33
33
|
|
34
34
|
let computedClass = computed(() => {
|
35
35
|
return {
|
36
|
-
|
37
|
-
|
38
|
-
|
36
|
+
"bg-blue-600 text-white": props.blue,
|
37
|
+
"bg-white text-gray-base": !props.blue,
|
38
|
+
"items-center": props.center
|
39
39
|
};
|
40
40
|
});
|
41
41
|
|
42
42
|
function onClose() {
|
43
|
-
emit(
|
44
|
-
emit(
|
43
|
+
emit("update:model-value", false);
|
44
|
+
emit("close");
|
45
45
|
}
|
46
46
|
</script>
|
@@ -38,19 +38,19 @@
|
|
38
38
|
<img v-else :alt="file.filename" :src="file.url" />
|
39
39
|
</div>
|
40
40
|
</QCarouselSlide>
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
41
|
+
</QCarousel>
|
42
|
+
<CloseIcon
|
43
|
+
class="absolute top-4 right-4 cursor-pointer text-white w-8 h-8"
|
44
|
+
@click="$emit('close')"
|
45
|
+
/>
|
46
46
|
</div>
|
47
|
-
|
47
|
+
</QDialog>
|
48
48
|
</template>
|
49
49
|
<script setup>
|
50
|
-
import { ref } from
|
51
|
-
import { XIcon as CloseIcon } from
|
50
|
+
import { ref } from "vue";
|
51
|
+
import { XIcon as CloseIcon } from "../../../svg";
|
52
52
|
|
53
|
-
defineEmits([
|
53
|
+
defineEmits(["close"]);
|
54
54
|
const props = defineProps({
|
55
55
|
files: {
|
56
56
|
type: Array,
|
@@ -58,14 +58,14 @@ const props = defineProps({
|
|
58
58
|
},
|
59
59
|
defaultSlide: {
|
60
60
|
type: String,
|
61
|
-
default:
|
61
|
+
default: ""
|
62
62
|
}
|
63
63
|
});
|
64
64
|
|
65
65
|
const carousel = ref(null);
|
66
66
|
const currentSlide = ref(props.defaultSlide);
|
67
67
|
function isVideo(file) {
|
68
|
-
return file.mime?.startsWith(
|
68
|
+
return file.mime?.startsWith("video");
|
69
69
|
}
|
70
70
|
function getThumbUrl(file) {
|
71
71
|
if (file.thumb) {
|
@@ -40,7 +40,7 @@
|
|
40
40
|
@click="onClose"
|
41
41
|
>
|
42
42
|
<slot name="done-text" />
|
43
|
-
|
43
|
+
</QBtn>
|
44
44
|
</div>
|
45
45
|
</div>
|
46
46
|
<a
|
@@ -49,31 +49,31 @@
|
|
49
49
|
>
|
50
50
|
<CloseIcon class="w-5" />
|
51
51
|
</a>
|
52
|
-
|
53
|
-
|
52
|
+
</QCard>
|
53
|
+
</QDialog>
|
54
54
|
</template>
|
55
55
|
|
56
56
|
<script setup>
|
57
|
-
import { XIcon as CloseIcon } from
|
57
|
+
import { XIcon as CloseIcon } from "@heroicons/vue/outline";
|
58
58
|
|
59
|
-
const emit = defineEmits([
|
59
|
+
const emit = defineEmits(["update:model-value", "close"]);
|
60
60
|
defineProps({
|
61
61
|
modelValue: { type: [Boolean, Object], default: true },
|
62
62
|
title: {
|
63
63
|
type: String,
|
64
|
-
default:
|
64
|
+
default: ""
|
65
65
|
},
|
66
66
|
titleClass: {
|
67
67
|
type: String,
|
68
|
-
default:
|
68
|
+
default: ""
|
69
69
|
},
|
70
70
|
subtitle: {
|
71
71
|
type: String,
|
72
|
-
default:
|
72
|
+
default: ""
|
73
73
|
},
|
74
74
|
content: {
|
75
75
|
type: String,
|
76
|
-
default:
|
76
|
+
default: ""
|
77
77
|
},
|
78
78
|
backdropDismiss: Boolean,
|
79
79
|
maximized: Boolean,
|
@@ -81,12 +81,12 @@ defineProps({
|
|
81
81
|
fullHeight: Boolean,
|
82
82
|
doneText: {
|
83
83
|
type: String,
|
84
|
-
default:
|
84
|
+
default: "Done"
|
85
85
|
}
|
86
86
|
});
|
87
87
|
|
88
88
|
function onClose() {
|
89
|
-
emit(
|
90
|
-
emit(
|
89
|
+
emit("update:model-value", false);
|
90
|
+
emit("close");
|
91
91
|
}
|
92
92
|
</script>
|
@@ -15,19 +15,19 @@
|
|
15
15
|
</ConfirmDialog>
|
16
16
|
</template>
|
17
17
|
<script setup>
|
18
|
-
import { ref } from
|
19
|
-
import ConfirmDialog from
|
18
|
+
import { ref } from "vue";
|
19
|
+
import ConfirmDialog from "./ConfirmDialog";
|
20
20
|
|
21
|
-
defineEmits([
|
21
|
+
defineEmits(["confirm", "close", "update:input"]);
|
22
22
|
const props = defineProps({
|
23
23
|
...ConfirmDialog.props,
|
24
24
|
title: {
|
25
25
|
type: String,
|
26
|
-
default:
|
26
|
+
default: "Enter Value"
|
27
27
|
},
|
28
28
|
input: {
|
29
29
|
type: [Number, String],
|
30
|
-
default:
|
30
|
+
default: ""
|
31
31
|
}
|
32
32
|
});
|
33
33
|
|
@@ -98,17 +98,17 @@
|
|
98
98
|
</template>
|
99
99
|
|
100
100
|
<script setup>
|
101
|
-
import { DocumentTextIcon as TextFileIcon, DownloadIcon, PlayIcon } from
|
102
|
-
import { computed, ref } from
|
103
|
-
import { download } from
|
104
|
-
import { ImageIcon, PdfIcon, TrashIcon as RemoveIcon } from
|
105
|
-
import { FullScreenCarouselDialog } from
|
101
|
+
import { DocumentTextIcon as TextFileIcon, DownloadIcon, PlayIcon } from "@heroicons/vue/outline";
|
102
|
+
import { computed, ref } from "vue";
|
103
|
+
import { download } from "../../../helpers";
|
104
|
+
import { ImageIcon, PdfIcon, TrashIcon as RemoveIcon } from "../../../svg";
|
105
|
+
import { FullScreenCarouselDialog } from "../Dialogs";
|
106
106
|
|
107
|
-
const emit = defineEmits([
|
107
|
+
const emit = defineEmits(["remove"]);
|
108
108
|
const props = defineProps({
|
109
109
|
src: {
|
110
110
|
type: String,
|
111
|
-
default:
|
111
|
+
default: ""
|
112
112
|
},
|
113
113
|
image: {
|
114
114
|
type: Object,
|
@@ -124,7 +124,7 @@ const props = defineProps({
|
|
124
124
|
},
|
125
125
|
downloadButtonClass: {
|
126
126
|
type: String,
|
127
|
-
default:
|
127
|
+
default: "bg-blue-600 text-white"
|
128
128
|
},
|
129
129
|
downloadable: Boolean,
|
130
130
|
removable: Boolean,
|
@@ -140,7 +140,7 @@ const computedImage = computed(() => {
|
|
140
140
|
return {
|
141
141
|
id: props.src,
|
142
142
|
url: props.src,
|
143
|
-
type:
|
143
|
+
type: "image/" + props.src.split(".").pop().toLowerCase()
|
144
144
|
};
|
145
145
|
}
|
146
146
|
return null;
|
@@ -168,7 +168,7 @@ function onRemove() {
|
|
168
168
|
isConfirmingRemove.value = false;
|
169
169
|
}, 2000);
|
170
170
|
} else {
|
171
|
-
emit(
|
171
|
+
emit("remove");
|
172
172
|
}
|
173
173
|
}
|
174
174
|
</script>
|
@@ -14,15 +14,15 @@ import { LocationMarkerIcon as LocationIcon } from "@heroicons/vue/solid";
|
|
14
14
|
defineProps({
|
15
15
|
location: {
|
16
16
|
type: Object,
|
17
|
-
default: null
|
17
|
+
default: null
|
18
18
|
},
|
19
19
|
decimals: {
|
20
20
|
type: Number,
|
21
|
-
default: 6
|
21
|
+
default: 6
|
22
22
|
},
|
23
23
|
iconClass: {
|
24
24
|
type: String,
|
25
|
-
default: "w-7"
|
26
|
-
}
|
25
|
+
default: "w-7"
|
26
|
+
}
|
27
27
|
});
|
28
28
|
</script>
|
@@ -14,7 +14,7 @@ defineProps({
|
|
14
14
|
},
|
15
15
|
iconClass: {
|
16
16
|
type: String,
|
17
|
-
default:
|
17
|
+
default: "w-6"
|
18
18
|
},
|
19
19
|
text: {
|
20
20
|
type: String,
|
@@ -22,7 +22,7 @@ defineProps({
|
|
22
22
|
},
|
23
23
|
textClass: {
|
24
24
|
type: String,
|
25
|
-
default:
|
25
|
+
default: "ml-2"
|
26
26
|
}
|
27
27
|
});
|
28
28
|
</script>
|
@@ -5,7 +5,7 @@
|
|
5
5
|
<template v-if="loading">
|
6
6
|
<QSpinnerTail />
|
7
7
|
</template>
|
8
|
-
<slot v-else>{{ value ||
|
8
|
+
<slot v-else>{{ value || "-" }}</slot>
|
9
9
|
</div>
|
10
10
|
</div>
|
11
11
|
</template>
|
@@ -17,7 +17,7 @@ defineProps({
|
|
17
17
|
},
|
18
18
|
value: {
|
19
19
|
type: [String, Number],
|
20
|
-
default:
|
20
|
+
default: "-"
|
21
21
|
},
|
22
22
|
dense: Boolean,
|
23
23
|
nowrap: Boolean,
|
@@ -44,59 +44,59 @@
|
|
44
44
|
</div>
|
45
45
|
</template>
|
46
46
|
<script setup>
|
47
|
-
import { ChevronLeftIcon as ToggleIcon } from
|
48
|
-
import { computed, onMounted, ref, watch } from
|
47
|
+
import { ChevronLeftIcon as ToggleIcon } from "@heroicons/vue/outline";
|
48
|
+
import { computed, onMounted, ref, watch } from "vue";
|
49
49
|
|
50
|
-
const emit = defineEmits([
|
50
|
+
const emit = defineEmits(["collapse", "update:collapse"]);
|
51
51
|
const props = defineProps({
|
52
52
|
rightSide: Boolean,
|
53
53
|
displayClass: {
|
54
54
|
type: String,
|
55
|
-
default:
|
55
|
+
default: "flex flex-col"
|
56
56
|
},
|
57
57
|
maxWidth: {
|
58
58
|
type: String,
|
59
|
-
default:
|
59
|
+
default: "13.5rem"
|
60
60
|
},
|
61
61
|
minWidth: {
|
62
62
|
type: String,
|
63
|
-
default:
|
63
|
+
default: "5.5rem"
|
64
64
|
},
|
65
65
|
disabled: Boolean,
|
66
66
|
collapse: Boolean,
|
67
67
|
name: {
|
68
68
|
type: String,
|
69
|
-
default:
|
69
|
+
default: "sidebar"
|
70
70
|
},
|
71
71
|
toggleAtTop: Boolean,
|
72
72
|
toggleClass: {
|
73
73
|
type: String,
|
74
|
-
default:
|
74
|
+
default: ""
|
75
75
|
},
|
76
76
|
hideToggleOnCollapse: Boolean
|
77
77
|
});
|
78
78
|
|
79
79
|
const isCollapsed = ref(props.collapse);
|
80
80
|
|
81
|
-
const stored = localStorage.getItem(props.name +
|
81
|
+
const stored = localStorage.getItem(props.name + "-is-collapsed");
|
82
82
|
|
83
83
|
if (stored !== null) {
|
84
|
-
isCollapsed.value = stored ===
|
84
|
+
isCollapsed.value = stored === "1";
|
85
85
|
}
|
86
86
|
function toggleCollapse() {
|
87
87
|
setCollapse(!isCollapsed.value);
|
88
|
-
emit(
|
89
|
-
emit(
|
88
|
+
emit("collapse", isCollapsed.value);
|
89
|
+
emit("update:collapse", isCollapsed.value);
|
90
90
|
}
|
91
91
|
|
92
92
|
function setCollapse(state) {
|
93
93
|
isCollapsed.value = state;
|
94
|
-
localStorage.setItem(props.name +
|
94
|
+
localStorage.setItem(props.name + "-is-collapsed", isCollapsed.value ? "1" : "");
|
95
95
|
}
|
96
96
|
|
97
97
|
onMounted(() => {
|
98
|
-
emit(
|
99
|
-
emit(
|
98
|
+
emit("collapse", isCollapsed.value);
|
99
|
+
emit("update:collapse", isCollapsed.value);
|
100
100
|
});
|
101
101
|
const style = computed(() => {
|
102
102
|
return {
|
@@ -25,9 +25,9 @@
|
|
25
25
|
</template>
|
26
26
|
|
27
27
|
<script setup>
|
28
|
-
import { computed } from
|
28
|
+
import { computed } from "vue";
|
29
29
|
|
30
|
-
const emit = defineEmits([
|
30
|
+
const emit = defineEmits(["update:show"]);
|
31
31
|
|
32
32
|
const props = defineProps({
|
33
33
|
show: Boolean,
|
@@ -35,21 +35,21 @@ const props = defineProps({
|
|
35
35
|
overlay: Boolean,
|
36
36
|
position: {
|
37
37
|
type: String,
|
38
|
-
default:
|
38
|
+
default: "bottom"
|
39
39
|
},
|
40
40
|
contentClass: {
|
41
41
|
type: String,
|
42
|
-
default:
|
42
|
+
default: "py-8 px-12"
|
43
43
|
},
|
44
44
|
title: {
|
45
45
|
type: String,
|
46
|
-
default:
|
46
|
+
default: "Edit"
|
47
47
|
}
|
48
48
|
});
|
49
49
|
|
50
50
|
const isShowing = computed({
|
51
51
|
get: () => props.show,
|
52
|
-
set: (value) => emit(
|
52
|
+
set: (value) => emit("update:show", value)
|
53
53
|
});
|
54
54
|
</script>
|
55
55
|
|
@@ -12,17 +12,17 @@
|
|
12
12
|
</QTooltip>
|
13
13
|
</template>
|
14
14
|
<script setup>
|
15
|
-
import { onMounted, ref } from
|
15
|
+
import { onMounted, ref } from "vue";
|
16
16
|
|
17
|
-
defineProps({ tooltip: { type: String, default:
|
17
|
+
defineProps({ tooltip: { type: String, default: "" } });
|
18
18
|
const show = ref(false);
|
19
19
|
const tooltipBox = ref(null);
|
20
20
|
const isHovering = ref(false);
|
21
21
|
const isHoveringParent = ref(false);
|
22
22
|
let timeout = null;
|
23
23
|
onMounted(() => {
|
24
|
-
tooltipBox.value.$el.parentNode.addEventListener(
|
25
|
-
tooltipBox.value.$el.parentNode.addEventListener(
|
24
|
+
tooltipBox.value.$el.parentNode.addEventListener("mouseover", onEnterParent);
|
25
|
+
tooltipBox.value.$el.parentNode.addEventListener("mouseleave", onLeaveParent);
|
26
26
|
});
|
27
27
|
function onEnterParent() {
|
28
28
|
show.value = true;
|