quasar-ui-danx 0.3.10 → 0.3.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. package/dist/danx.es.js +599 -593
  2. package/dist/danx.es.js.map +1 -1
  3. package/dist/danx.umd.js +5 -5
  4. package/dist/danx.umd.js.map +1 -1
  5. package/dist/style.css +1 -1
  6. package/package.json +1 -1
  7. package/src/components/ActionTable/ActionMenu.vue +7 -7
  8. package/src/components/ActionTable/ActionTable.vue +33 -29
  9. package/src/components/ActionTable/ActionTableColumn.vue +37 -15
  10. package/src/components/ActionTable/ActionTableHeaderColumn.vue +9 -9
  11. package/src/components/ActionTable/Columns/ColumnListItem.vue +33 -10
  12. package/src/components/ActionTable/Columns/ColumnSettingsDialog.vue +23 -19
  13. package/src/components/ActionTable/Columns/TitleColumnFormat.vue +5 -3
  14. package/src/components/ActionTable/Columns/VisibleColumnsToggleButtons.vue +24 -22
  15. package/src/components/ActionTable/EmptyTableState.vue +4 -2
  16. package/src/components/ActionTable/Filters/CollapsableFiltersSidebar.vue +9 -9
  17. package/src/components/ActionTable/Filters/FilterFieldItem.vue +7 -5
  18. package/src/components/ActionTable/Filters/FilterFieldList.vue +21 -21
  19. package/src/components/ActionTable/Filters/FilterListToggle.vue +13 -10
  20. package/src/components/ActionTable/Filters/FilterToolbarLayout.vue +14 -7
  21. package/src/components/ActionTable/Filters/FilterableField.vue +75 -70
  22. package/src/components/ActionTable/Form/Fields/BooleanField.vue +9 -9
  23. package/src/components/ActionTable/Form/Fields/ConfirmPasswordField.vue +7 -7
  24. package/src/components/ActionTable/Form/Fields/DateField.vue +4 -4
  25. package/src/components/ActionTable/Form/Fields/DateRangeField.vue +9 -9
  26. package/src/components/ActionTable/Form/Fields/DateTimeField.vue +13 -10
  27. package/src/components/ActionTable/Form/Fields/DateTimePicker.vue +36 -14
  28. package/src/components/ActionTable/Form/Fields/EditableDiv.vue +3 -3
  29. package/src/components/ActionTable/Form/Fields/FieldLabel.vue +2 -2
  30. package/src/components/ActionTable/Form/Fields/FileUploadButton.vue +23 -20
  31. package/src/components/ActionTable/Form/Fields/InlineDateTimeField.vue +10 -10
  32. package/src/components/ActionTable/Form/Fields/IntegerField.vue +6 -6
  33. package/src/components/ActionTable/Form/Fields/LabeledInput.vue +20 -17
  34. package/src/components/ActionTable/Form/Fields/MultiFileField.vue +35 -35
  35. package/src/components/ActionTable/Form/Fields/MultiKeywordField.vue +15 -15
  36. package/src/components/ActionTable/Form/Fields/NewPasswordField.vue +4 -4
  37. package/src/components/ActionTable/Form/Fields/NumberField.vue +11 -11
  38. package/src/components/ActionTable/Form/Fields/NumberRangeField.vue +11 -11
  39. package/src/components/ActionTable/Form/Fields/SelectDrawer.vue +38 -33
  40. package/src/components/ActionTable/Form/Fields/SelectField.vue +37 -35
  41. package/src/components/ActionTable/Form/Fields/SelectWithChildrenField.vue +19 -15
  42. package/src/components/ActionTable/Form/Fields/SingleFileField.vue +29 -28
  43. package/src/components/ActionTable/Form/Fields/TextField.vue +22 -22
  44. package/src/components/ActionTable/Form/Fields/WysiwygField.vue +13 -13
  45. package/src/components/ActionTable/Form/RenderedForm.vue +5 -1
  46. package/src/components/ActionTable/TableSummaryRow.vue +15 -15
  47. package/src/components/AuditHistory/AuditHistoryItem.vue +12 -6
  48. package/src/components/AuditHistory/AuditHistoryItemValue.vue +6 -6
  49. package/src/components/DragAndDrop/HandleDraggable.vue +21 -21
  50. package/src/components/DragAndDrop/ListItemDraggable.vue +19 -15
  51. package/src/components/PanelsDrawer/PanelsDrawer.vue +18 -11
  52. package/src/components/PanelsDrawer/PanelsDrawerPanels.vue +9 -5
  53. package/src/components/PanelsDrawer/PanelsDrawerTabs.vue +18 -13
  54. package/src/components/Utility/Buttons/ExportButton.vue +5 -1
  55. package/src/components/Utility/Buttons/RefreshButton.vue +2 -2
  56. package/src/components/Utility/Controls/PreviousNextControls.vue +8 -8
  57. package/src/components/Utility/Dialogs/ConfirmDialog.vue +32 -29
  58. package/src/components/Utility/Dialogs/FullScreenDialog.vue +12 -9
  59. package/src/components/Utility/Dialogs/FullscreenCarouselDialog.vue +30 -26
  60. package/src/components/Utility/Dialogs/InfoDialog.vue +25 -22
  61. package/src/components/Utility/Dialogs/InputDialog.vue +7 -7
  62. package/src/components/Utility/Files/FilePreview.vue +64 -47
  63. package/src/components/Utility/Files/SvgImg.vue +7 -4
  64. package/src/components/Utility/Formats/GpsCoordinatesFormat.vue +11 -3
  65. package/src/components/Utility/Layouts/CollapsableSidebar.vue +15 -15
  66. package/src/components/Utility/Layouts/ContentDrawer.vue +8 -8
  67. package/src/components/Utility/Popovers/InteractiveTooltip.vue +7 -7
  68. package/src/components/Utility/Popovers/PopoverMenu.vue +21 -21
  69. package/src/components/Utility/Tabs/BadgeTab.vue +9 -7
  70. package/src/components/Utility/Tools/ActionVnode.vue +5 -5
  71. package/src/components/Utility/Tools/RenderComponent.vue +11 -9
  72. package/src/components/Utility/Transitions/StaggeredListTransition.vue +7 -7
  73. package/src/config/index.ts +7 -4
  74. package/src/helpers/FileUpload.ts +1 -1
  75. package/src/helpers/FlashMessages.ts +5 -5
  76. package/src/vendor/tinymce-config.ts +0 -1
@@ -1,47 +1,51 @@
1
1
  <template>
2
2
  <QDialog
3
- :model-value="true"
4
- maximized
5
- @update:model-value="$emit('close')"
6
- @keyup.left="carousel.previous()"
7
- @keyup.right="carousel.next()"
3
+ :model-value="true"
4
+ maximized
5
+ @update:model-value="$emit('close')"
6
+ @keyup.left="carousel.previous()"
7
+ @keyup.right="carousel.next()"
8
8
  >
9
9
  <div class="absolute top-0 left-0 w-full h-full">
10
10
  <QCarousel
11
- ref="carousel"
12
- v-model="currentSlide"
13
- height="100%"
14
- swipeable
15
- animated
16
- :thumbnails="files.length > 1"
17
- infinite
18
- :class="cls['carousel']"
11
+ ref="carousel"
12
+ v-model="currentSlide"
13
+ height="100%"
14
+ swipeable
15
+ animated
16
+ :thumbnails="files.length > 1"
17
+ infinite
18
+ :class="cls['carousel']"
19
19
  >
20
20
  <QCarouselSlide
21
- v-for="file in files"
22
- :key="'file-' + file.id"
23
- :name="file.id"
24
- :img-src="getThumbUrl(file)"
21
+ v-for="file in files"
22
+ :key="'file-' + file.id"
23
+ :name="file.id"
24
+ :img-src="getThumbUrl(file)"
25
25
  >
26
26
  <div :class="cls['slide-image']">
27
27
  <template v-if="isVideo(file)">
28
28
  <video
29
- class="max-h-full w-full"
30
- controls
29
+ class="max-h-full w-full"
30
+ controls
31
31
  >
32
32
  <source
33
- :src="file.url + '#t=0.1'"
34
- :type="file.mime"
35
- />
33
+ :src="file.url + '#t=0.1'"
34
+ :type="file.mime"
35
+ >
36
36
  </video>
37
37
  </template>
38
- <img v-else :alt="file.filename" :src="file.url" />
38
+ <img
39
+ v-else
40
+ :alt="file.filename"
41
+ :src="file.url"
42
+ >
39
43
  </div>
40
44
  </QCarouselSlide>
41
45
  </QCarousel>
42
46
  <CloseIcon
43
- class="absolute top-4 right-4 cursor-pointer text-white w-8 h-8"
44
- @click="$emit('close')"
47
+ class="absolute top-4 right-4 cursor-pointer text-white w-8 h-8"
48
+ @click="$emit('close')"
45
49
  />
46
50
  </div>
47
51
  </QDialog>
@@ -73,7 +77,7 @@ function getThumbUrl(file) {
73
77
  } else if (isVideo(file)) {
74
78
  // Base64 encode a PlayIcon for the placeholder image
75
79
  return `data:image/svg+xml;base64,${btoa(
76
- `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path d="M0 0h24v24H0z" fill="none"/><path d="M8 5v14l11-7z"/></svg>`
80
+ `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path d="M0 0h24v24H0z" fill="none"/><path d="M8 5v14l11-7z"/></svg>`
77
81
  )}`;
78
82
  } else {
79
83
  return file.url;
@@ -1,51 +1,54 @@
1
1
  <template>
2
2
  <QDialog
3
- :full-height="fullHeight"
4
- :full-width="fullWidth"
5
- :model-value="!!modelValue"
6
- :no-backdrop-dismiss="!backdropDismiss"
7
- :maximized="maximized"
8
- @update:model-value="onClose"
3
+ :full-height="fullHeight"
4
+ :full-width="fullWidth"
5
+ :model-value="!!modelValue"
6
+ :no-backdrop-dismiss="!backdropDismiss"
7
+ :maximized="maximized"
8
+ @update:model-value="onClose"
9
9
  >
10
10
  <QCard class="flex flex-col flex-nowrap">
11
11
  <QCardSection
12
- v-if="title || $slots.title"
13
- class="pl-6 pr-10 border-b border-gray-300"
12
+ v-if="title || $slots.title"
13
+ class="pl-6 pr-10 border-b border-gray-300"
14
14
  >
15
15
  <h3
16
- class="font-normal flex items-center"
17
- :class="titleClass"
16
+ class="font-normal flex items-center"
17
+ :class="titleClass"
18
18
  >
19
- <slot name="title">{{ title }}</slot>
19
+ <slot name="title">
20
+ {{ title }}
21
+ </slot>
20
22
  </h3>
21
23
  <div
22
- v-if="subtitle"
23
- class="mt-1 text-sm"
24
- >{{ subtitle }}
24
+ v-if="subtitle"
25
+ class="mt-1 text-sm"
26
+ >
27
+ {{ subtitle }}
25
28
  </div>
26
29
  </QCardSection>
27
30
  <QCardSection
28
- v-if="content || $slots.default"
29
- class="px-6 bg-gray-100 flex-grow max-h-full overflow-y-auto"
31
+ v-if="content || $slots.default"
32
+ class="px-6 bg-gray-100 flex-grow max-h-full overflow-y-auto"
30
33
  >
31
34
  <slot>{{ content }}</slot>
32
35
  </QCardSection>
33
36
  <div
34
- class="flex items-center justify-center px-6 py-4 border-t border-gray-300"
37
+ class="flex items-center justify-center px-6 py-4 border-t border-gray-300"
35
38
  >
36
39
  <div class="flex-grow text-right">
37
40
  <QBtn
38
- :label="doneText"
39
- class="action-btn btn-white-gray"
40
- @click="onClose"
41
+ :label="doneText"
42
+ class="action-btn btn-white-gray"
43
+ @click="onClose"
41
44
  >
42
45
  <slot name="done-text" />
43
46
  </QBtn>
44
47
  </div>
45
48
  </div>
46
49
  <a
47
- class="absolute top-0 right-0 p-4 text-black"
48
- @click="onClose"
50
+ class="absolute top-0 right-0 p-4 text-black"
51
+ @click="onClose"
49
52
  >
50
53
  <CloseIcon class="w-5" />
51
54
  </a>
@@ -1,15 +1,15 @@
1
1
  <template>
2
2
  <ConfirmDialog
3
- v-bind="$props"
4
- @confirm="$emit('confirm', newInput)"
5
- @close="$emit('close', $event)"
3
+ v-bind="$props"
4
+ @confirm="$emit('confirm', newInput)"
5
+ @close="$emit('close', $event)"
6
6
  >
7
7
  <slot>
8
8
  <QInput
9
- v-model="newInput"
10
- type="number"
11
- class="w-full"
12
- @input="$emit('update:input', $event)"
9
+ v-model="newInput"
10
+ type="number"
11
+ class="w-full"
12
+ @input="$emit('update:input', $event)"
13
13
  />
14
14
  </slot>
15
15
  </ConfirmDialog>
@@ -1,97 +1,114 @@
1
1
  <template>
2
- <div class="relative flex justify-center bg-gray-100 overflow-hidden" :class="{'rounded-2xl': !square}">
2
+ <div
3
+ class="relative flex justify-center bg-gray-100 overflow-hidden"
4
+ :class="{'rounded-2xl': !square}"
5
+ >
3
6
  <template v-if="computedImage">
4
7
  <div
5
- class="grow h-full"
6
- @click="showPreview = true"
8
+ class="grow h-full"
9
+ @click="showPreview = true"
7
10
  >
8
11
  <div
9
- v-if="isVideo"
10
- class="relative max-h-full max-w-full w-full flex justify-center"
12
+ v-if="isVideo"
13
+ class="relative max-h-full max-w-full w-full flex justify-center"
11
14
  >
12
15
  <video
13
- class="max-h-full"
14
- preload="auto"
16
+ class="max-h-full"
17
+ preload="auto"
15
18
  >
16
19
  <source
17
- :src="previewUrl + '#t=0.1'"
18
- :type="mimeType"
19
- />
20
+ :src="previewUrl + '#t=0.1'"
21
+ :type="mimeType"
22
+ >
20
23
  </video>
21
24
  <button :class="cls['play-button']">
22
25
  <PlayIcon class="w-16" />
23
26
  </button>
24
27
  </div>
25
28
  <QImg
26
- v-if="thumbUrl || isPreviewable"
27
- fit="scale-down"
28
- class="non-selectable max-h-full max-w-full h-full"
29
- :src="(thumbUrl || previewUrl) + '#t=0.1'"
30
- preload="auto"
31
- data-testid="previewed-image"
29
+ v-if="thumbUrl || isPreviewable"
30
+ fit="scale-down"
31
+ class="non-selectable max-h-full max-w-full h-full"
32
+ :src="(thumbUrl || previewUrl) + '#t=0.1'"
33
+ preload="auto"
34
+ data-testid="previewed-image"
32
35
  />
33
36
  <div
34
- v-else
35
- class="flex items-center justify-center h-full"
37
+ v-else
38
+ class="flex items-center justify-center h-full"
36
39
  >
37
- <PdfIcon v-if="isPdf" class="w-24" />
38
- <TextFileIcon v-else class="w-24" />
40
+ <PdfIcon
41
+ v-if="isPdf"
42
+ class="w-24"
43
+ />
44
+ <TextFileIcon
45
+ v-else
46
+ class="w-24"
47
+ />
39
48
  </div>
40
49
  </div>
41
50
  <div
42
- v-if="$slots['action-button']"
43
- :class="cls['action-button']"
51
+ v-if="$slots['action-button']"
52
+ :class="cls['action-button']"
44
53
  >
45
54
  <slot name="action-button" />
46
55
  </div>
47
56
  <div
48
- v-if="image && image.progress !== undefined"
49
- class="absolute-bottom w-full"
57
+ v-if="image && image.progress !== undefined"
58
+ class="absolute-bottom w-full"
50
59
  >
51
60
  <QLinearProgress
52
- :value="image.progress"
53
- size="15px"
54
- color="green-600"
55
- stripe
61
+ :value="image.progress"
62
+ size="15px"
63
+ color="green-600"
64
+ stripe
56
65
  />
57
66
  </div>
58
67
  </template>
59
68
  <template v-else>
60
69
  <slot name="missing">
61
70
  <component
62
- :is="missingIcon"
63
- class="w-full h-full p-2 text-gray-300"
71
+ :is="missingIcon"
72
+ class="w-full h-full p-2 text-gray-300"
64
73
  />
65
74
  </slot>
66
75
  </template>
67
76
 
68
77
  <div class="absolute top-1 right-1 flex items-center justify-between space-x-1">
69
78
  <QBtn
70
- v-if="downloadable && computedImage?.url"
71
- size="sm"
72
- class="!p-1 opacity-70 hover:opacity-100"
73
- :class="downloadButtonClass"
74
- @click.stop="download(computedImage.url)"
79
+ v-if="downloadable && computedImage?.url"
80
+ size="sm"
81
+ class="!p-1 opacity-70 hover:opacity-100"
82
+ :class="downloadButtonClass"
83
+ @click.stop="download(computedImage.url)"
75
84
  >
76
85
  <DownloadIcon class="w-4 h-5" />
77
86
  </QBtn>
78
87
 
79
88
  <QBtn
80
- v-if="removable"
81
- size="sm"
82
- class="bg-red-900 text-white !p-1 opacity-50 hover:opacity-100"
83
- @click.stop="onRemove"
89
+ v-if="removable"
90
+ size="sm"
91
+ class="bg-red-900 text-white !p-1 opacity-50 hover:opacity-100"
92
+ @click.stop="onRemove"
84
93
  >
85
- <div v-if="isConfirmingRemove" class="font-bold text-[1rem] leading-[1.2rem]">?</div>
86
- <RemoveIcon v-else class="w-3" />
94
+ <div
95
+ v-if="isConfirmingRemove"
96
+ class="font-bold text-[1rem] leading-[1.2rem]"
97
+ >
98
+ ?
99
+ </div>
100
+ <RemoveIcon
101
+ v-else
102
+ class="w-3"
103
+ />
87
104
  </QBtn>
88
105
  </div>
89
106
 
90
107
  <FullScreenCarouselDialog
91
- v-if="showPreview && !disabled"
92
- :files="relatedFiles || [computedImage]"
93
- :default-slide="computedImage.id"
94
- @close="showPreview = false"
108
+ v-if="showPreview && !disabled"
109
+ :files="relatedFiles || [computedImage]"
110
+ :default-slide="computedImage.id"
111
+ @close="showPreview = false"
95
112
  />
96
113
  </div>
97
114
  </template>
@@ -145,13 +162,13 @@ const computedImage = computed(() => {
145
162
  return null;
146
163
  });
147
164
  const mimeType = computed(
148
- () => computedImage.value.type || computedImage.value.mime
165
+ () => computedImage.value.type || computedImage.value.mime
149
166
  );
150
167
  const isImage = computed(() => mimeType.value.match(/^image\//));
151
168
  const isVideo = computed(() => mimeType.value.match(/^video\//));
152
169
  const isPdf = computed(() => mimeType.value.match(/^application\/pdf/));
153
170
  const previewUrl = computed(
154
- () => computedImage.value.transcodes?.compress?.url || computedImage.value.blobUrl || computedImage.value.url
171
+ () => computedImage.value.transcodes?.compress?.url || computedImage.value.blobUrl || computedImage.value.url
155
172
  );
156
173
  const thumbUrl = computed(() => {
157
174
  return computedImage.value.transcodes?.thumb?.url;
@@ -1,10 +1,13 @@
1
1
  <template>
2
2
  <img
3
- v-if="isString"
4
- :src="resolvedSvg"
5
- :alt="alt"
3
+ v-if="isString"
4
+ :src="resolvedSvg"
5
+ :alt="alt"
6
+ >
7
+ <component
8
+ :is="resolvedSvg"
9
+ v-else
6
10
  />
7
- <component :is="resolvedSvg" v-else />
8
11
  </template>
9
12
  <script setup>
10
13
  import { computed } from "vue";
@@ -1,11 +1,19 @@
1
1
  <template>
2
2
  <div class="flex flex-nowrap items-center">
3
- <LocationIcon class="mr-1 ml-[-.2em]" :class="iconClass" />
4
- <div v-if="location?.latitude" class="whitespace-nowrap">
3
+ <LocationIcon
4
+ class="mr-1 ml-[-.2em]"
5
+ :class="iconClass"
6
+ />
7
+ <div
8
+ v-if="location?.latitude"
9
+ class="whitespace-nowrap"
10
+ >
5
11
  {{ location.latitude.toFixed(decimals) }},
6
12
  {{ location.longitude.toFixed(decimals) }}
7
13
  </div>
8
- <template v-else>Unknown</template>
14
+ <template v-else>
15
+ Unknown
16
+ </template>
9
17
  </div>
10
18
  </template>
11
19
  <script setup>
@@ -1,43 +1,43 @@
1
1
  <template>
2
2
  <div
3
- :class="{
3
+ :class="{
4
4
  [cls['collapsable-sidebar']]: true,
5
5
  'is-collapsed': isCollapsed,
6
6
  'is-right-side': rightSide,
7
7
  [displayClass]: true,
8
8
  }"
9
- :style="style"
9
+ :style="style"
10
10
  >
11
11
  <div class="flex-grow max-w-full">
12
12
  <slot :is-collapsed="isCollapsed" />
13
13
  </div>
14
14
  <template v-if="!disabled && (!hideToggleOnCollapse || !isCollapsed)">
15
15
  <div
16
- v-if="!toggleAtTop"
17
- class="flex w-full p-4"
18
- :class="rightSide ? 'justify-start' : 'justify-end'"
16
+ v-if="!toggleAtTop"
17
+ class="flex w-full p-4"
18
+ :class="rightSide ? 'justify-start' : 'justify-end'"
19
19
  >
20
20
  <slot name="toggle">
21
21
  <QBtn
22
- class="btn-secondary"
23
- @click="toggleCollapse"
22
+ class="btn-secondary"
23
+ @click="toggleCollapse"
24
24
  >
25
25
  <ToggleIcon
26
- class="w-5 transition-all"
27
- :class="{ 'rotate-180': rightSide ? !isCollapsed : isCollapsed }"
26
+ class="w-5 transition-all"
27
+ :class="{ 'rotate-180': rightSide ? !isCollapsed : isCollapsed }"
28
28
  />
29
29
  </QBtn>
30
30
  </slot>
31
31
  </div>
32
32
  <div
33
- v-else
34
- class="absolute top-0 right-0 cursor-pointer p-2"
35
- :class="toggleClass"
36
- @click="toggleCollapse"
33
+ v-else
34
+ class="absolute top-0 right-0 cursor-pointer p-2"
35
+ :class="toggleClass"
36
+ @click="toggleCollapse"
37
37
  >
38
38
  <ToggleIcon
39
- class="w-5 transition-all"
40
- :class="{ 'rotate-180': rightSide ? !isCollapsed : isCollapsed }"
39
+ class="w-5 transition-all"
40
+ :class="{ 'rotate-180': rightSide ? !isCollapsed : isCollapsed }"
41
41
  />
42
42
  </div>
43
43
  </template>
@@ -1,16 +1,16 @@
1
1
  <template>
2
2
  <QDialog
3
- v-model="isShowing"
4
- maximized
5
- :position="position"
6
- :seamless="seamless"
7
- :class="{'hide-backdrop': !overlay}"
3
+ v-model="isShowing"
4
+ maximized
5
+ :position="position"
6
+ :seamless="seamless"
7
+ :class="{'hide-backdrop': !overlay}"
8
8
  >
9
9
  <div>
10
10
  <div
11
- v-if="title"
12
- :class="cls['dialog-title']"
13
- @click.stop.prevent
11
+ v-if="title"
12
+ :class="cls['dialog-title']"
13
+ @click.stop.prevent
14
14
  >
15
15
  {{ title }}
16
16
  </div>
@@ -1,12 +1,12 @@
1
1
  <template>
2
2
  <QTooltip
3
- class="interactive-tooltip"
4
- ref="tooltipBox"
5
- v-model="show"
6
- no-parent-event
7
- @mouseenter="onEnterTooltip"
8
- @mouseleave="onLeaveTooltip"
9
- :transition-duration="200"
3
+ ref="tooltipBox"
4
+ v-model="show"
5
+ class="interactive-tooltip"
6
+ no-parent-event
7
+ :transition-duration="200"
8
+ @mouseenter="onEnterTooltip"
9
+ @mouseleave="onLeaveTooltip"
10
10
  >
11
11
  <slot>{{ tooltip }}</slot>
12
12
  </QTooltip>
@@ -1,46 +1,46 @@
1
1
  <template>
2
2
  <a
3
- class="p-3 actionable"
4
- :class="{'opacity-50 cursor-not-allowed': disabled}"
3
+ class="p-3 actionable"
4
+ :class="{'opacity-50 cursor-not-allowed': disabled}"
5
5
  >
6
6
  <QTooltip v-if="$slots.tooltip || tooltip">
7
7
  <slot name="tooltip">{{ tooltip }}</slot>
8
8
  </QTooltip>
9
9
  <Transition
10
- mode="out-in"
11
- :duration="150"
10
+ mode="out-in"
11
+ :duration="150"
12
12
  >
13
13
  <RenderComponent
14
- v-if="loading"
15
- :component="loadingComponent"
14
+ v-if="loading"
15
+ :component="loadingComponent"
16
16
  />
17
17
  <MenuIcon
18
- v-else
19
- class="w-4 text-black"
18
+ v-else
19
+ class="w-4 text-black"
20
20
  />
21
21
  </Transition>
22
22
  <QMenu
23
- v-if="!disabled"
24
- auto-close
23
+ v-if="!disabled"
24
+ auto-close
25
25
  >
26
26
  <QList>
27
27
  <template v-for="item in items">
28
28
  <a
29
- v-if="item.url"
30
- :key="item.url"
31
- class="q-item"
32
- target="_blank"
33
- :href="item.url"
34
- :class="item.class"
29
+ v-if="item.url"
30
+ :key="item.url"
31
+ class="q-item"
32
+ target="_blank"
33
+ :href="item.url"
34
+ :class="item.class"
35
35
  >
36
36
  {{ item.label }}
37
37
  </a>
38
38
  <QItem
39
- v-else
40
- :key="item.name || item.action"
41
- clickable
42
- :class="item.class"
43
- @click="onAction(item)"
39
+ v-else
40
+ :key="item.name || item.action"
41
+ clickable
42
+ :class="item.class"
43
+ @click="onAction(item)"
44
44
  >
45
45
  {{ item.label }}
46
46
  </QItem>
@@ -1,15 +1,17 @@
1
1
  <template>
2
2
  <QTab
3
- :name="name"
4
- class="w-full"
5
- content-class="w-full"
3
+ :name="name"
4
+ class="w-full"
5
+ content-class="w-full"
6
6
  >
7
7
  <div class="flex items-center w-full">
8
- <div class="flex-grow text-sm">{{ label }}</div>
8
+ <div class="flex-grow text-sm">
9
+ {{ label }}
10
+ </div>
9
11
  <QBadge
10
- class="bg-gray-400"
11
- :label="count"
12
- rounded
12
+ class="bg-gray-400"
13
+ :label="count"
14
+ rounded
13
15
  />
14
16
  </div>
15
17
  </QTab>
@@ -1,11 +1,11 @@
1
1
  <template>
2
2
  <div>
3
3
  <RenderVnode
4
- v-if="activeActionVnode"
5
- :vnode="activeActionVnode.vnode"
6
- :is-saving="isSaving"
7
- @confirm="onConfirm"
8
- @close="activeActionVnode.cancel"
4
+ v-if="activeActionVnode"
5
+ :vnode="activeActionVnode.vnode"
6
+ :is-saving="isSaving"
7
+ @confirm="onConfirm"
8
+ @close="activeActionVnode.cancel"
9
9
  />
10
10
  </div>
11
11
  </template>
@@ -1,15 +1,17 @@
1
1
  <template>
2
2
  <Component
3
- v-if="content"
4
- :is="resolvedComponent.is"
5
- v-bind="{...resolvedComponent.props, ...overrideProps}"
6
- @action="$emit('action', $event)"
7
- >{{ content }}</Component>
3
+ :is="resolvedComponent.is"
4
+ v-if="content"
5
+ v-bind="{...resolvedComponent.props, ...overrideProps}"
6
+ @action="$emit('action', $event)"
7
+ >
8
+ {{ content }}
9
+ </Component>
8
10
  <Component
9
- v-else
10
- :is="resolvedComponent.is"
11
- v-bind="{...resolvedComponent.props, ...overrideProps}"
12
- @action="$emit('action', $event)"
11
+ :is="resolvedComponent.is"
12
+ v-else
13
+ v-bind="{...resolvedComponent.props, ...overrideProps}"
14
+ @action="$emit('action', $event)"
13
15
  />
14
16
  </template>
15
17
  <script setup>