quasar-ui-danx 0.0.9 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. package/package.json +3 -2
  2. package/src/components/ActionTable/ActionTable.vue +135 -0
  3. package/src/components/ActionTable/BatchActionMenu.vue +60 -0
  4. package/src/components/ActionTable/EmptyTableState.vue +33 -0
  5. package/src/components/ActionTable/Filters/CollapsableFiltersSidebar.vue +36 -0
  6. package/src/components/ActionTable/Filters/FilterGroupItem.vue +28 -0
  7. package/src/components/ActionTable/Filters/FilterGroupList.vue +76 -0
  8. package/src/components/ActionTable/Filters/FilterListToggle.vue +50 -0
  9. package/src/components/ActionTable/Filters/FilterableField.vue +141 -0
  10. package/src/components/ActionTable/Form/Fields/BooleanField.vue +37 -0
  11. package/src/components/ActionTable/Form/Fields/ConfirmPasswordField.vue +46 -0
  12. package/src/components/ActionTable/Form/Fields/DateField.vue +59 -0
  13. package/src/components/ActionTable/Form/Fields/DateRangeField.vue +110 -0
  14. package/src/components/ActionTable/Form/Fields/DateTimeField.vue +50 -0
  15. package/src/components/ActionTable/Form/Fields/DateTimePicker.vue +59 -0
  16. package/src/components/ActionTable/Form/Fields/EditableDiv.vue +39 -0
  17. package/src/components/ActionTable/Form/Fields/FieldLabel.vue +32 -0
  18. package/src/components/ActionTable/Form/Fields/FileUploadButton.vue +78 -0
  19. package/src/components/ActionTable/Form/Fields/InlineDateTimeField.vue +44 -0
  20. package/src/components/ActionTable/Form/Fields/IntegerField.vue +26 -0
  21. package/src/components/ActionTable/Form/Fields/LabeledInput.vue +63 -0
  22. package/src/components/ActionTable/Form/Fields/MultiFileField.vue +91 -0
  23. package/src/components/ActionTable/Form/Fields/MultiKeywordField.vue +57 -0
  24. package/src/components/ActionTable/Form/Fields/NewPasswordField.vue +39 -0
  25. package/src/components/ActionTable/Form/Fields/NumberField.vue +94 -0
  26. package/src/components/ActionTable/Form/Fields/NumberRangeField.vue +140 -0
  27. package/src/components/ActionTable/Form/Fields/SelectDrawer.vue +136 -0
  28. package/src/components/ActionTable/Form/Fields/SelectField.vue +318 -0
  29. package/src/components/ActionTable/Form/Fields/SelectWithChildrenField.vue +81 -0
  30. package/src/components/ActionTable/Form/Fields/SingleFileField.vue +78 -0
  31. package/src/components/ActionTable/Form/Fields/TextField.vue +82 -0
  32. package/src/components/ActionTable/Form/Fields/WysiwygField.vue +46 -0
  33. package/src/components/ActionTable/Form/Fields/index.ts +23 -0
  34. package/src/components/ActionTable/Form/RenderedForm.vue +74 -0
  35. package/src/components/ActionTable/RenderComponentColumn.vue +22 -0
  36. package/src/components/ActionTable/TableSummaryRow.vue +95 -0
  37. package/src/components/ActionTable/index.ts +15 -0
  38. package/src/components/ActionTable/listActions.ts +361 -0
  39. package/src/components/ActionTable/tableColumns.ts +72 -0
  40. package/src/components/ActionTable/tableHelpers.ts +83 -0
  41. package/src/components/DragAndDrop/listDragAndDrop.ts +210 -210
  42. package/src/components/Utility/CollapsableSidebar.vue +119 -0
  43. package/src/components/Utility/ContentDrawer.vue +70 -0
  44. package/src/components/Utility/Dialogs/ConfirmDialog.vue +132 -0
  45. package/src/components/Utility/Dialogs/FullScreenDialog.vue +46 -0
  46. package/src/components/Utility/Dialogs/InfoDialog.vue +92 -0
  47. package/src/components/Utility/Dialogs/InputDialog.vue +35 -0
  48. package/src/components/Utility/SvgImg.vue +10 -5
  49. package/src/components/Utility/Transitions/ListTransition.vue +50 -0
  50. package/src/components/Utility/Transitions/SlideTransition.vue +63 -0
  51. package/src/components/Utility/Transitions/StaggeredListTransition.vue +97 -0
  52. package/src/components/Utility/index.ts +9 -0
  53. package/src/components/index.ts +3 -0
  54. package/src/helpers/FileUpload.ts +294 -0
  55. package/src/helpers/FlashMessages.ts +79 -0
  56. package/src/helpers/array.ts +37 -0
  57. package/src/helpers/compatibility.ts +64 -0
  58. package/src/helpers/date.ts +5 -0
  59. package/src/helpers/download.ts +192 -0
  60. package/src/helpers/downloadPdf.ts +92 -0
  61. package/src/helpers/files.ts +52 -0
  62. package/src/helpers/formats.ts +183 -0
  63. package/src/helpers/http.ts +62 -0
  64. package/src/helpers/index.ts +10 -1
  65. package/src/helpers/multiFileUpload.ts +68 -0
  66. package/src/helpers/singleFileUpload.ts +54 -0
  67. package/src/helpers/storage.ts +8 -0
@@ -7,231 +7,231 @@ import { DragAndDrop } from "./dragAndDrop";
7
7
  * @class
8
8
  */
9
9
  export class ListDragAndDrop extends DragAndDrop {
10
- listPosition = 0;
11
- cursorPosition = 0;
12
- initialPosition = 0;
13
- onPositionChangeCb = null;
14
- onDragPositionChangeCb = null;
15
- placeholder = null;
16
-
17
- constructor(options = {}) {
18
- super({
19
- showPlaceholder: true,
20
- ...options,
21
- });
22
- }
23
-
24
- /**
25
- * Callback that fires after dragging has ended and the list position has changed from the original
26
- * @param cb
27
- * @returns {ListDragAndDrop}
28
- */
29
- onPositionChange(cb) {
30
- this.onPositionChangeCb = cb;
31
- return this;
32
- }
33
-
34
- /**
35
- * Callback that fires while dragging the element when the cursor's position has changed in the list
36
- * @param cb
37
- * @returns {ListDragAndDrop}
38
- */
39
- onDragPositionChange(cb) {
40
- this.onDragPositionChangeCb = cb;
41
- return this;
42
- }
43
-
44
- /**
45
- * Start listening for drag events and prepare an element for drag/drop
46
- * @param e
47
- * @param data
48
- */
49
- dragStart(e, data) {
50
- super.dragStart(e, data);
51
-
52
- if (this.currentDropZone) {
53
- this.listPosition = this.getListPosition(e.target);
54
- this.initialPosition = this.listPosition;
55
- this.updateScrollPosition();
10
+ listPosition = 0;
11
+ cursorPosition = 0;
12
+ initialPosition = 0;
13
+ onPositionChangeCb = null;
14
+ onDragPositionChangeCb = null;
15
+ placeholder = null;
16
+
17
+ constructor(options = {}) {
18
+ super({
19
+ showPlaceholder: true,
20
+ ...options,
21
+ });
56
22
  }
57
- }
58
-
59
- /**
60
- * When dragging has ended, check for list position changes and fire the onPositionChange callback if it has
61
- */
62
- dragEnd(e) {
63
- const draggableData = this.draggableData;
64
- this.placeholder.remove();
65
- super.dragEnd(e);
66
-
67
- // If our list position has changed, trigger the drop callback
68
- if (this.listPosition !== this.initialPosition) {
69
- this.onPositionChangeCb &&
70
- this.onPositionChangeCb(this.listPosition, this.initialPosition, draggableData);
23
+
24
+ /**
25
+ * Callback that fires after dragging has ended and the list position has changed from the original
26
+ * @param cb
27
+ * @returns {ListDragAndDrop}
28
+ */
29
+ onPositionChange(cb) {
30
+ this.onPositionChangeCb = cb;
31
+ return this;
71
32
  }
72
- }
73
-
74
- /**
75
- * The dragging element is moving
76
- * @param e
77
- */
78
- dragOver(e) {
79
- super.dragOver(e);
80
- this.updateListPosition(e);
81
- }
82
-
83
- /**
84
- * Notify if the targeted position of the cursor is different from the current position
85
- * @param e
86
- */
87
- updateListPosition(e) {
88
- const prevPosition = this.listPosition;
89
- const newPosition = this.getListPositionOfPoint({
90
- x: e.clientX,
91
- y: e.clientY,
92
- });
93
-
94
- // If the cursor position has changed, we should update the rendering and see if our actual list position has
95
- // changed
96
- if (this.cursorPosition !== newPosition) {
97
- this.cursorPosition = newPosition;
98
- this.listPosition =
99
- this.initialPosition < this.cursorPosition
100
- ? this.cursorPosition - 1
101
- : this.cursorPosition;
102
- if (this.options.showPlaceholder) {
103
- this.renderPlaceholder();
104
- }
105
-
106
- // The position has changed, trigger the callback
107
- if (this.listPosition !== prevPosition) {
108
- this.onDragPositionChangeCb &&
109
- this.onDragPositionChangeCb(this.listPosition, this.draggableData);
110
- }
33
+
34
+ /**
35
+ * Callback that fires while dragging the element when the cursor's position has changed in the list
36
+ * @param cb
37
+ * @returns {ListDragAndDrop}
38
+ */
39
+ onDragPositionChange(cb) {
40
+ this.onDragPositionChangeCb = cb;
41
+ return this;
111
42
  }
112
- }
113
-
114
- /**
115
- * Find the numeric position of the element in the children of the list
116
- * @returns {Number|null}
117
- * @param item
118
- */
119
- getListPosition(item) {
120
- let index = 0;
121
- for (const child of this.getChildren()) {
122
- if (child === item) {
123
- return index;
124
- }
125
- index++;
43
+
44
+ /**
45
+ * Start listening for drag events and prepare an element for drag/drop
46
+ * @param e
47
+ * @param data
48
+ */
49
+ dragStart(e, data) {
50
+ super.dragStart(e, data);
51
+
52
+ if (this.currentDropZone) {
53
+ this.listPosition = this.getListPosition(e.target);
54
+ this.initialPosition = this.listPosition;
55
+ this.updateScrollPosition();
56
+ }
126
57
  }
127
58
 
128
- return null;
129
- }
130
-
131
- /**
132
- * Get all the children of the current drop zone, excluding the placeholder
133
- * @returns {*}
134
- */
135
- getChildren() {
136
- return [...this.currentDropZone.children].filter(
137
- (c) => c.className.match(/drag-placeholder/) === null
138
- );
139
- }
140
-
141
- /**
142
- * Find the element at the current cursor position in the given drop zone
143
- * @param point
144
- * @returns {null}
145
- */
146
- getListPositionOfPoint(point) {
147
- let index = 0;
148
- const children = this.getChildren();
149
-
150
- while (index < children.length) {
151
- const rect = children[index].getBoundingClientRect();
152
- if (this.isVertical()) {
153
- if (point.y < rect.top + rect.height / 2) {
154
- break;
59
+ /**
60
+ * When dragging has ended, check for list position changes and fire the onPositionChange callback if it has
61
+ */
62
+ dragEnd(e) {
63
+ const draggableData = this.draggableData;
64
+ this.placeholder?.remove();
65
+ super.dragEnd(e);
66
+
67
+ // If our list position has changed, trigger the drop callback
68
+ if (this.listPosition !== this.initialPosition) {
69
+ this.onPositionChangeCb &&
70
+ this.onPositionChangeCb(this.listPosition, this.initialPosition, draggableData);
155
71
  }
156
- } else {
157
- if (point.x < rect.left + rect.width / 2) {
158
- break;
72
+ }
73
+
74
+ /**
75
+ * The dragging element is moving
76
+ * @param e
77
+ */
78
+ dragOver(e) {
79
+ super.dragOver(e);
80
+ this.updateListPosition(e);
81
+ }
82
+
83
+ /**
84
+ * Notify if the targeted position of the cursor is different from the current position
85
+ * @param e
86
+ */
87
+ updateListPosition(e) {
88
+ const prevPosition = this.listPosition;
89
+ const newPosition = this.getListPositionOfPoint({
90
+ x: e.clientX,
91
+ y: e.clientY,
92
+ });
93
+
94
+ // If the cursor position has changed, we should update the rendering and see if our actual list position has
95
+ // changed
96
+ if (this.cursorPosition !== newPosition) {
97
+ this.cursorPosition = newPosition;
98
+ this.listPosition =
99
+ this.initialPosition < this.cursorPosition
100
+ ? this.cursorPosition - 1
101
+ : this.cursorPosition;
102
+ if (this.options.showPlaceholder) {
103
+ this.renderPlaceholder();
104
+ }
105
+
106
+ // The position has changed, trigger the callback
107
+ if (this.listPosition !== prevPosition) {
108
+ this.onDragPositionChangeCb &&
109
+ this.onDragPositionChangeCb(this.listPosition, this.draggableData);
110
+ }
159
111
  }
160
- }
161
- index++;
162
112
  }
163
113
 
164
- return index;
165
- }
166
-
167
- /**
168
- * Updates the scroll position while dragging an element so a user can navigate a longer list while dragging
169
- */
170
- updateScrollPosition() {
171
- if (this.currentDropZone) {
172
- const rect = this.currentDropZone.getBoundingClientRect();
173
- const threshold = 100;
174
- let velocity = 0;
175
- const velocityFn = (x) => x * 5;
176
- const cursorPos = this.isVertical() ? this.cursorY : this.cursorX;
177
- const rectStart = this.isVertical() ? rect.top : rect.left;
178
- const rectEnd = this.isVertical() ? rect.bottom : rect.right;
179
- const beforeDiff = rectStart + threshold - cursorPos;
180
- const afterDiff = cursorPos - (rectEnd - threshold);
181
-
182
- if (beforeDiff > 0) {
183
- velocity = -velocityFn(beforeDiff);
184
- } else if (afterDiff > 0) {
185
- velocity = velocityFn(afterDiff);
186
- }
187
-
188
- if (velocity) {
189
- if (this.isVertical()) {
190
- this.currentDropZone.scrollTo({
191
- top: this.currentDropZone.scrollTop + velocity,
192
- behavior: "smooth",
193
- });
194
- } else {
195
- this.currentDropZone.scrollTo({
196
- left: this.currentDropZone.scrollLeft + velocity,
197
- behavior: "smooth",
198
- });
114
+ /**
115
+ * Find the numeric position of the element in the children of the list
116
+ * @returns {Number|null}
117
+ * @param item
118
+ */
119
+ getListPosition(item) {
120
+ let index = 0;
121
+ for (const child of this.getChildren()) {
122
+ if (child === item) {
123
+ return index;
124
+ }
125
+ index++;
199
126
  }
200
- }
201
127
 
202
- setTimeout(() => this.updateScrollPosition(), 500);
128
+ return null;
129
+ }
130
+
131
+ /**
132
+ * Get all the children of the current drop zone, excluding the placeholder
133
+ * @returns {*}
134
+ */
135
+ getChildren() {
136
+ return [...this.currentDropZone.children].filter(
137
+ (c) => c.className.match(/drag-placeholder/) === null
138
+ );
203
139
  }
204
- }
205
-
206
- /**
207
- * Render a placeholder element at the given position (in between the elements)
208
- */
209
- renderPlaceholder() {
210
- if (!this.placeholder) {
211
- this.placeholder = document.createElement("div");
212
- this.placeholder.classList.add("drag-placeholder");
140
+
141
+ /**
142
+ * Find the element at the current cursor position in the given drop zone
143
+ * @param point
144
+ * @returns {null}
145
+ */
146
+ getListPositionOfPoint(point) {
147
+ let index = 0;
148
+ const children = this.getChildren();
149
+
150
+ while (index < children.length) {
151
+ const rect = children[index].getBoundingClientRect();
152
+ if (this.isVertical()) {
153
+ if (point.y < rect.top + rect.height / 2) {
154
+ break;
155
+ }
156
+ } else {
157
+ if (point.x < rect.left + rect.width / 2) {
158
+ break;
159
+ }
160
+ }
161
+ index++;
162
+ }
163
+
164
+ return index;
213
165
  }
214
166
 
215
- // Make sure the placeholder is oriented correctly
216
- if (this.isVertical()) {
217
- this.placeholder.classList.add("direction-vertical");
218
- this.placeholder.classList.remove("direction-horizontal");
219
- this.placeholder.style.height = undefined;
220
- } else {
221
- this.placeholder.classList.add("direction-horizontal");
222
- this.placeholder.classList.remove("direction-vertical");
223
- this.placeholder.style.height =
224
- this.currentDropZone.getBoundingClientRect().height + "px";
167
+ /**
168
+ * Updates the scroll position while dragging an element so a user can navigate a longer list while dragging
169
+ */
170
+ updateScrollPosition() {
171
+ if (this.currentDropZone) {
172
+ const rect = this.currentDropZone.getBoundingClientRect();
173
+ const threshold = 100;
174
+ let velocity = 0;
175
+ const velocityFn = (x) => x * 5;
176
+ const cursorPos = this.isVertical() ? this.cursorY : this.cursorX;
177
+ const rectStart = this.isVertical() ? rect.top : rect.left;
178
+ const rectEnd = this.isVertical() ? rect.bottom : rect.right;
179
+ const beforeDiff = rectStart + threshold - cursorPos;
180
+ const afterDiff = cursorPos - (rectEnd - threshold);
181
+
182
+ if (beforeDiff > 0) {
183
+ velocity = -velocityFn(beforeDiff);
184
+ } else if (afterDiff > 0) {
185
+ velocity = velocityFn(afterDiff);
186
+ }
187
+
188
+ if (velocity) {
189
+ if (this.isVertical()) {
190
+ this.currentDropZone.scrollTo({
191
+ top: this.currentDropZone.scrollTop + velocity,
192
+ behavior: "smooth",
193
+ });
194
+ } else {
195
+ this.currentDropZone.scrollTo({
196
+ left: this.currentDropZone.scrollLeft + velocity,
197
+ behavior: "smooth",
198
+ });
199
+ }
200
+ }
201
+
202
+ setTimeout(() => this.updateScrollPosition(), 500);
203
+ }
225
204
  }
226
205
 
227
- const children = this.getChildren();
228
- if (this.cursorPosition < children.length) {
229
- this.currentDropZone.insertBefore(
230
- this.placeholder,
231
- children[this.cursorPosition]
232
- );
233
- } else {
234
- this.currentDropZone.appendChild(this.placeholder);
206
+ /**
207
+ * Render a placeholder element at the given position (in between the elements)
208
+ */
209
+ renderPlaceholder() {
210
+ if (!this.placeholder) {
211
+ this.placeholder = document.createElement("div");
212
+ this.placeholder.classList.add("drag-placeholder");
213
+ }
214
+
215
+ // Make sure the placeholder is oriented correctly
216
+ if (this.isVertical()) {
217
+ this.placeholder.classList.add("direction-vertical");
218
+ this.placeholder.classList.remove("direction-horizontal");
219
+ this.placeholder.style.height = undefined;
220
+ } else {
221
+ this.placeholder.classList.add("direction-horizontal");
222
+ this.placeholder.classList.remove("direction-vertical");
223
+ this.placeholder.style.height =
224
+ this.currentDropZone.getBoundingClientRect().height + "px";
225
+ }
226
+
227
+ const children = this.getChildren();
228
+ if (this.cursorPosition < children.length) {
229
+ this.currentDropZone.insertBefore(
230
+ this.placeholder,
231
+ children[this.cursorPosition]
232
+ );
233
+ } else {
234
+ this.currentDropZone.appendChild(this.placeholder);
235
+ }
235
236
  }
236
- }
237
237
  }
@@ -0,0 +1,119 @@
1
+ <template>
2
+ <div
3
+ class="collapsable-sidebar overflow-x-hidden overflow-y-scroll relative"
4
+ :class="{
5
+ 'is-collapsed': isCollapsed,
6
+ 'is-right-side': rightSide,
7
+ [displayClass]: true,
8
+ }"
9
+ :style="style"
10
+ >
11
+ <div class="flex-grow max-w-full">
12
+ <slot :is-collapsed="isCollapsed" />
13
+ </div>
14
+ <template v-if="!disabled && (!hideToggleOnCollapse || !isCollapsed)">
15
+ <div
16
+ v-if="!toggleAtTop"
17
+ class="flex w-full p-4"
18
+ :class="rightSide ? 'justify-start' : 'justify-end'"
19
+ >
20
+ <slot name="toggle">
21
+ <QBtn
22
+ class="btn-white-gray"
23
+ @click="toggleCollapse"
24
+ >
25
+ <ToggleIcon
26
+ class="w-5 transition-all"
27
+ :class="{ 'rotate-180': rightSide ? !isCollapsed : isCollapsed }"
28
+ />
29
+ </QBtn>
30
+ </slot>
31
+ </div>
32
+ <div
33
+ v-else
34
+ class="absolute top-0 right-0 cursor-pointer p-2"
35
+ :class="toggleClass"
36
+ @click="toggleCollapse"
37
+ >
38
+ <ToggleIcon
39
+ class="w-5 transition-all"
40
+ :class="{ 'rotate-180': rightSide ? !isCollapsed : isCollapsed }"
41
+ />
42
+ </div>
43
+ </template>
44
+ </div>
45
+ </template>
46
+ <script setup>
47
+ import { ChevronLeftIcon as ToggleIcon } from "@heroicons/vue/outline";
48
+ import { computed, onMounted, ref, watch } from "vue";
49
+
50
+ const emit = defineEmits(["collapse", "update:collapse"]);
51
+ const props = defineProps({
52
+ rightSide: Boolean,
53
+ displayClass: {
54
+ type: String,
55
+ default: "flex flex-col"
56
+ },
57
+ maxWidth: {
58
+ type: String,
59
+ default: "13.5rem"
60
+ },
61
+ minWidth: {
62
+ type: String,
63
+ default: "5.5rem"
64
+ },
65
+ disabled: Boolean,
66
+ collapse: Boolean,
67
+ name: {
68
+ type: String,
69
+ default: "sidebar"
70
+ },
71
+ toggleAtTop: Boolean,
72
+ toggleClass: {
73
+ type: String,
74
+ default: ""
75
+ },
76
+ hideToggleOnCollapse: Boolean
77
+ });
78
+
79
+ const isCollapsed = ref(props.collapse);
80
+
81
+ const stored = localStorage.getItem(props.name + "-is-collapsed");
82
+
83
+ if (stored !== null) {
84
+ isCollapsed.value = stored === "1";
85
+ }
86
+ function toggleCollapse() {
87
+ setCollapse(!isCollapsed.value);
88
+ emit("collapse", isCollapsed.value);
89
+ emit("update:collapse", isCollapsed.value);
90
+ }
91
+
92
+ function setCollapse(state) {
93
+ isCollapsed.value = state;
94
+ localStorage.setItem(props.name + "-is-collapsed", isCollapsed.value ? "1" : "");
95
+ }
96
+
97
+ onMounted(() => {
98
+ emit("collapse", isCollapsed.value);
99
+ emit("update:collapse", isCollapsed.value);
100
+ });
101
+ const style = computed(() => {
102
+ return {
103
+ width: isCollapsed.value ? props.minWidth : props.maxWidth
104
+ };
105
+ });
106
+
107
+ watch(() => props.collapse, () => {
108
+ setCollapse(props.collapse);
109
+ });
110
+ </script>
111
+
112
+ <style
113
+ scoped
114
+ lang="scss"
115
+ >
116
+ .collapsable-sidebar {
117
+ @apply overflow-y-auto scroll-smooth flex-shrink-0 border-r border-neutral-plus-5 transition-all;
118
+ }
119
+ </style>
@@ -0,0 +1,70 @@
1
+ <template>
2
+ <QDialog
3
+ v-model="isShowing"
4
+ maximized
5
+ :position="position"
6
+ :seamless="seamless"
7
+ :class="{'hide-backdrop': !overlay}"
8
+ >
9
+ <div>
10
+ <div
11
+ v-if="title"
12
+ class="dialog-title"
13
+ @click.stop.prevent
14
+ >
15
+ {{ title }}
16
+ </div>
17
+ <div
18
+ class="dialog-content bg-white"
19
+ :class="{ [contentClass]: true }"
20
+ >
21
+ <slot />
22
+ </div>
23
+ </div>
24
+ </QDialog>
25
+ </template>
26
+
27
+ <script setup>
28
+ import { computed } from "vue";
29
+
30
+ const emit = defineEmits(["update:show"]);
31
+
32
+ const props = defineProps({
33
+ show: Boolean,
34
+ seamless: Boolean,
35
+ overlay: Boolean,
36
+ position: {
37
+ type: String,
38
+ default: "bottom"
39
+ },
40
+ contentClass: {
41
+ type: String,
42
+ default: "py-8 px-12"
43
+ },
44
+ title: {
45
+ type: String,
46
+ default: "Edit"
47
+ }
48
+ });
49
+
50
+ const isShowing = computed({
51
+ get: () => props.show,
52
+ set: (value) => emit("update:show", value)
53
+ });
54
+ </script>
55
+
56
+ <style
57
+ lang="scss"
58
+ scoped
59
+ >
60
+ .dialog-title {
61
+ @apply bg-gray-very-light text-gray-default font-medium uppercase text-xs px-6 py-3 border-b border-neutral-plus-5 rounded-t-md;
62
+ font-family: "Roboto", sans-serif;
63
+ letter-spacing: 0.05em;
64
+ box-shadow: 0px -4px 12px rgba(0, 0, 0, 0.25);
65
+ }
66
+
67
+ .dialog-content {
68
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.06);
69
+ }
70
+ </style>