@usssa/component-library 1.0.0-alpha.27 → 1.0.0-alpha.271

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.
Files changed (105) hide show
  1. package/README.md +8 -5
  2. package/package.json +30 -8
  3. package/src/assets/VS.svg +5 -0
  4. package/src/assets/fonts/CorneroRegular.woff +0 -0
  5. package/src/assets/fonts/CorneroRegular.woff2 +0 -0
  6. package/src/assets/logo.svg +19 -0
  7. package/src/assets/no-result.svg +25 -0
  8. package/src/assets/upload-illustration.svg +48 -0
  9. package/src/components/core/UAccordionSelect.vue +237 -0
  10. package/src/components/core/UAvatar.vue +90 -26
  11. package/src/components/core/UAvatarGroup.vue +62 -52
  12. package/src/components/core/UBadgeStd.vue +6 -1
  13. package/src/components/core/UBannerStd.vue +100 -31
  14. package/src/components/core/UBracket.vue +2181 -0
  15. package/src/components/core/UBreadCrumbs.vue +171 -0
  16. package/src/components/core/UBtnIcon.vue +106 -53
  17. package/src/components/core/UBtnStd.vue +38 -31
  18. package/src/components/core/UBtnToggle.vue +11 -6
  19. package/src/components/core/UCheckboxStd.vue +26 -20
  20. package/src/components/core/UChip.vue +107 -58
  21. package/src/components/core/UDate.vue +627 -0
  22. package/src/components/core/UDialogStd.vue +456 -58
  23. package/src/components/core/UDrawer/UDrawer.vue +479 -0
  24. package/src/components/core/UDrawer/UDrawerMenuItem.vue +130 -0
  25. package/src/components/core/UEventCard.vue +463 -0
  26. package/src/components/core/UExpansionStd.vue +380 -0
  27. package/src/components/core/UExpansionTableStd.vue +311 -0
  28. package/src/components/core/UFilter.vue +99 -0
  29. package/src/components/core/UGameObject.vue +478 -0
  30. package/src/components/core/UInnerLoader.vue +69 -0
  31. package/src/components/core/UInputAddressLookup.vue +535 -0
  32. package/src/components/core/UInputPhoneStd.vue +74 -67
  33. package/src/components/core/UInputTextStd.vue +99 -64
  34. package/src/components/core/UInputTypeahead.vue +44 -0
  35. package/src/components/core/UInputTypeaheadAdvanceSearch.vue +134 -0
  36. package/src/components/core/UMatchup.vue +404 -0
  37. package/src/components/core/UMenuButtonStd.vue +280 -0
  38. package/src/components/core/UMenuDropdown.vue +38 -33
  39. package/src/components/core/UMenuDropdownAdvancedSearch.vue +306 -0
  40. package/src/components/core/UMenuItem.vue +226 -0
  41. package/src/components/core/UMenuSearch.vue +73 -0
  42. package/src/components/core/UModal.vue +660 -0
  43. package/src/components/core/UMultiSelectStd.vue +521 -63
  44. package/src/components/core/UPagination.vue +76 -24
  45. package/src/components/core/URadioBtn.vue +66 -43
  46. package/src/components/core/URadioStd.vue +23 -14
  47. package/src/components/core/USelectStd.vue +441 -84
  48. package/src/components/core/USheet.vue +349 -0
  49. package/src/components/core/UStepper/UProgress.vue +157 -0
  50. package/src/components/core/UStepper/UStepper.vue +214 -0
  51. package/src/components/core/UTabBtnStd.vue +36 -22
  52. package/src/components/core/UTable/UTable.vue +2269 -57
  53. package/src/components/core/UTableStd.vue +1436 -286
  54. package/src/components/core/UTabsStd.vue +53 -23
  55. package/src/components/core/UToggleStd.vue +18 -13
  56. package/src/components/core/UToolbar/UCustomMenuIcon.vue +58 -0
  57. package/src/components/core/UToolbar/UToolbar.vue +226 -0
  58. package/src/components/core/UTooltip.vue +32 -10
  59. package/src/components/core/UTypeahead.vue +890 -0
  60. package/src/components/core/UUploader.vue +757 -0
  61. package/src/components/core/UVenueCard.vue +221 -0
  62. package/src/components/index.js +83 -30
  63. package/src/composables/useNotify.js +16 -16
  64. package/src/composables/useOverlayLoader.js +23 -0
  65. package/src/composables/useScreenType.js +30 -0
  66. package/src/css/app.sass +69 -36
  67. package/src/css/colors.sass +2 -0
  68. package/src/css/quasar.variables.sass +102 -70
  69. package/src/css/vars/colors.variables.sass +28 -41
  70. package/src/utils/bracket.json +1538 -0
  71. package/src/utils/data.ts +179 -0
  72. package/src/App.vue +0 -9
  73. package/src/boot/.gitkeep +0 -0
  74. package/src/components/core/UMenutem.vue +0 -130
  75. package/src/layouts/MainLayout.vue +0 -145
  76. package/src/pages/Avatar.vue +0 -77
  77. package/src/pages/AvatarGroup.vue +0 -139
  78. package/src/pages/BadgeStd.vue +0 -83
  79. package/src/pages/BannerPage.vue +0 -76
  80. package/src/pages/BtnIcon.vue +0 -120
  81. package/src/pages/BtnStd.vue +0 -126
  82. package/src/pages/BtnToggle.vue +0 -131
  83. package/src/pages/CheckBox.vue +0 -62
  84. package/src/pages/Chip.vue +0 -108
  85. package/src/pages/ComponentBase.vue +0 -54
  86. package/src/pages/Dialog.vue +0 -206
  87. package/src/pages/ErrorNotFound.vue +0 -11
  88. package/src/pages/IndexPage.vue +0 -11
  89. package/src/pages/InputPhone.vue +0 -152
  90. package/src/pages/InputText.vue +0 -140
  91. package/src/pages/MenuDropdown.vue +0 -79
  92. package/src/pages/MenuItem.vue +0 -68
  93. package/src/pages/MultiSelectStd.vue +0 -174
  94. package/src/pages/NotifyPage.vue +0 -109
  95. package/src/pages/Pagination.vue +0 -71
  96. package/src/pages/Radio.vue +0 -80
  97. package/src/pages/RadioBtn.vue +0 -104
  98. package/src/pages/SelectStd.vue +0 -160
  99. package/src/pages/TabButtonPage.vue +0 -126
  100. package/src/pages/TablePage.vue +0 -375
  101. package/src/pages/TabsPage.vue +0 -261
  102. package/src/pages/TogglePage.vue +0 -58
  103. package/src/pages/TooltipPage.vue +0 -125
  104. package/src/router/index.js +0 -34
  105. package/src/router/routes.js +0 -121
@@ -0,0 +1,660 @@
1
+ <script setup>
2
+ import { computed, onMounted, onUnmounted, ref, useSlots, watch } from 'vue'
3
+ import { useQuasar } from 'quasar'
4
+ import UBtnStd from './UBtnStd.vue'
5
+ import { useScreenType } from '../../composables/useScreenType'
6
+
7
+ const emit = defineEmits(['onBackIconClick', 'hideDialog'])
8
+ const model = defineModel()
9
+ const props = defineProps({
10
+ class: {
11
+ type: String,
12
+ default: 'filter-dialog-modal',
13
+ },
14
+ closeIcon: String,
15
+ closeIconLabel: String,
16
+ customSize: {
17
+ type: String,
18
+ },
19
+ dataTestId: {
20
+ type: String,
21
+ default: 'modal',
22
+ },
23
+ dataTestIdCloseIcon: {
24
+ type: String,
25
+ default: 'modal-close',
26
+ },
27
+ divider: Boolean,
28
+ heading: {
29
+ type: String,
30
+ required: true,
31
+ },
32
+ headingCaption: String,
33
+ leftIcon: String,
34
+ leftIconLabel: String,
35
+ position: String,
36
+ showActionButtons: Boolean,
37
+ showSecondaryButtons: Boolean,
38
+ size: {
39
+ type: String,
40
+ default: 'default',
41
+ },
42
+ })
43
+
44
+ // constants
45
+ const MIN_HEIGHT = 120
46
+ let isDragging = false
47
+ let startHeight = 0
48
+ let startY = 0
49
+
50
+ const $screen = useScreenType()
51
+ const $slots = useSlots()
52
+ const $q = useQuasar()
53
+
54
+ const currentDialogHeight = ref(null)
55
+ const dialogMaxHeight = ref(null)
56
+ const dialogRef = ref(true)
57
+ const scrollableMarginHeight = ref(null)
58
+
59
+ const className = computed(() => {
60
+ return props.class ? props.class : 'filter-dialog-modal'
61
+ })
62
+ const dialogStyle = computed(() => ({
63
+ '--customSize': props.customSize,
64
+ }))
65
+ const headerClass = computed(() => {
66
+ return props.divider ? 'divider' : ''
67
+ })
68
+ const isDesktop = computed(() => $screen.value.isDesktop)
69
+ const isMobile = computed(() => $screen.value.isMobile)
70
+ const isSmallWidthDevices = computed(() => $q.screen.width < 400)
71
+ const isTablet = computed(() => $screen.value.isTablet)
72
+ const isWidthChanging = computed(() => {
73
+ return {
74
+ width: $q.screen.width,
75
+ }
76
+ })
77
+ const slotsLength = computed(
78
+ () =>
79
+ Object.keys($slots).filter(
80
+ (slot) => !['content', 'secondary_row'].includes(slot)
81
+ ).length
82
+ )
83
+
84
+ const smallDevices = computed(() => {
85
+ return {
86
+ sm: $q.screen.height < 800 && $q.screen.height > 700,
87
+ xs: $q.screen.height < 700,
88
+ }
89
+ })
90
+
91
+ const getActionsWrapperFlex = () => {
92
+ if (isMobile.value) {
93
+ if (slotsLength.value >= 3) {
94
+ return 'wrap'
95
+ } else {
96
+ return 'nowrap'
97
+ }
98
+ }
99
+ if (isTablet.value) {
100
+ if (slotsLength.value >= 2) {
101
+ return 'nowrap'
102
+ } else {
103
+ return 'wrap'
104
+ }
105
+ }
106
+ }
107
+
108
+ const getContentBottomSpace = () => {
109
+ if (isMobile.value) {
110
+ if (slotsLength.value >= 3) {
111
+ return 7.5
112
+ } else {
113
+ return 4.5
114
+ }
115
+ } else {
116
+ return 0
117
+ }
118
+ }
119
+
120
+ const getDialogHeaderheight = () => {
121
+ currentDialogHeight.value =
122
+ props.showActionButtons && props.showSecondaryButtons
123
+ ? $q.screen.height - 80
124
+ : props.showActionButtons || props.showSecondaryButtons
125
+ ? !isTablet.value
126
+ ? $q.screen.height - 50 + 'px !important'
127
+ : $q.screen.height / 2 - 50 + 'px !important'
128
+ : $q.screen.height - 10
129
+
130
+ setTimeout(() => {
131
+ const headingWrapper =
132
+ document.getElementsByClassName('no-heading-section')[0]
133
+ if (headingWrapper) {
134
+ scrollableMarginHeight.value = headingWrapper.clientHeight
135
+ }
136
+ },50)
137
+
138
+ setTimeout(() => {
139
+ dialogMaxHeight.value =
140
+ props.showActionButtons && props.showSecondaryButtons
141
+ ? $q.screen.height - 80
142
+ : props.showActionButtons || props.showSecondaryButtons
143
+ ? $q.screen.height - 50
144
+ : $q.screen.height - 10
145
+ }, 100)
146
+ }
147
+
148
+ const handleBackClick = () => {
149
+ return emit('onBackIconClick')
150
+ }
151
+
152
+ const hasSlots = () => {
153
+ return (!!$slots['action_secondary_one'] ||
154
+ !!$slots['action_secondary_two']) &&
155
+ (!!$slots['action_primary_one'] || !!$slots['action_primary_two'])
156
+ ? '0.5rem'
157
+ : null
158
+ }
159
+
160
+ const onDragEnd = () => {
161
+ isDragging = false
162
+ window.removeEventListener('mousemove', onDragMove)
163
+ window.removeEventListener('mouseup', onDragEnd)
164
+ window.removeEventListener('touchmove', onDragMove)
165
+ window.removeEventListener('touchend', onDragEnd)
166
+ }
167
+
168
+ const onDragMove = (event) => {
169
+ if (!isDragging) return
170
+ // event.preventDefault()
171
+ const currentY = event.touches ? event.touches[0].clientY : event.clientY
172
+ const deltaY = startY - currentY
173
+ const newHeight = startHeight + deltaY
174
+ // limiting dialog height to MAX HEIGHT
175
+ currentDialogHeight.value = Math.min(
176
+ Math.max(MIN_HEIGHT, newHeight),
177
+ dialogMaxHeight.value
178
+ )
179
+ if (
180
+ Math.min(Math.max(MIN_HEIGHT, newHeight), dialogMaxHeight.value) <=
181
+ MIN_HEIGHT
182
+ ) {
183
+ setTimeout(() => {
184
+ dialogRef?.value?.hide() // if user is dragging then it should close from here
185
+ }, 200)
186
+ }
187
+ // currentDialogHeight.value = Math.max(MIN_HEIGHT, startHeight + deltaY) // if limiting not required
188
+ }
189
+
190
+ const onMouseDown = (event) => {
191
+ isDragging = true
192
+ event.preventDefault()
193
+ startY = event.clientY
194
+ startHeight = currentDialogHeight.value
195
+ window.addEventListener('mousemove', (e) => onDragMove(e))
196
+ window.addEventListener('mouseup', onDragEnd)
197
+ }
198
+
199
+ const onTouchStart = (event) => {
200
+ isDragging = true
201
+ if (event.cancelable) event.preventDefault()
202
+ startY = event.touches[0].clientY
203
+ startHeight = currentDialogHeight.value
204
+ window.addEventListener('touchmove', (e) => onDragMove(e))
205
+ window.addEventListener('touchend', onDragEnd)
206
+ }
207
+
208
+ onUnmounted(() => {
209
+ window.removeEventListener('mousemove', onDragMove)
210
+ window.removeEventListener('mouseup', onDragEnd)
211
+ window.removeEventListener('touchmove', onDragMove)
212
+ window.removeEventListener('touchend', onDragEnd)
213
+ })
214
+
215
+ onMounted(() => {
216
+ getDialogHeaderheight()
217
+ })
218
+
219
+ watch(
220
+ isWidthChanging,
221
+ () => {
222
+ getDialogHeaderheight()
223
+ },
224
+ { immediate: true }
225
+ )
226
+
227
+ watch(
228
+ model,
229
+ () => {
230
+ getDialogHeaderheight()
231
+ },
232
+ { immediate: true }
233
+ )
234
+
235
+ watch(
236
+ smallDevices,
237
+ () => {
238
+ getDialogHeaderheight()
239
+ },
240
+ { immediate: true }
241
+ )
242
+ </script>
243
+
244
+ <template>
245
+ <q-dialog
246
+ v-bind="$attrs"
247
+ v-model="model"
248
+ :class="`filter-dialog-${
249
+ isMobile ? 'full' : isTablet ? 'tab' : size
250
+ } filter-dialog ${className}`"
251
+ :dataTestId="dataTestId"
252
+ full-width
253
+ no-backdrop-dismiss
254
+ :position="isMobile ? 'bottom' : position"
255
+ ref="dialogRef"
256
+ :style="dialogStyle"
257
+ >
258
+ <q-card
259
+ :class="`dialog-wrapper`"
260
+ :style="{
261
+ display: 'flex',
262
+ flexDirection: 'column',
263
+ maxHeight: currentDialogHeight + 'px !important',
264
+ overflow: 'hidden',
265
+ }"
266
+ >
267
+ <div
268
+ v-if="isMobile"
269
+ class="drag-handle-wrapper"
270
+ @mousedown="onMouseDown($event)"
271
+ @touchstart="onTouchStart($event)"
272
+ >
273
+ <div class="drag-handle" />
274
+ </div>
275
+ <q-card-section
276
+ :class="[
277
+ `col items-center q-pa-none heading-section ${headerClass}${
278
+ isMobile ? ' no-heading-section' : ''
279
+ }`,
280
+ { mobile: isMobile, desktop: isDesktop || isTablet },
281
+ ]"
282
+ >
283
+ <div class="heading-wrapper row items-center">
284
+ <div class="flex items-center dialog-heading-container">
285
+ <div v-if="leftIcon">
286
+ <UBtnStd
287
+ class="dialog-action-icons"
288
+ :aria-label="leftIconLabel"
289
+ :flat="true"
290
+ tabindex="0"
291
+ @click="handleBackClick()"
292
+ >
293
+ <q-icon
294
+ :class="`icon-back ${leftIcon}`"
295
+ size="1.5rem"
296
+ tabindex="-1"
297
+ />
298
+ </UBtnStd>
299
+ </div>
300
+ <div class="col">
301
+ <div>
302
+ <span
303
+ :class="`${
304
+ isMobile ? 'text-heading-xs' : 'text-heading-sm'
305
+ } dialog-heading`"
306
+ >
307
+ {{ heading }}
308
+ </span>
309
+ </div>
310
+ <div>
311
+ <span v-if="headingCaption" class="text-body-xs dialog-caption">
312
+ {{ headingCaption }}
313
+ </span>
314
+ </div>
315
+ </div>
316
+ </div>
317
+
318
+ <UBtnStd
319
+ class="dialog-action-icons"
320
+ :aria-label="closeIconLabel"
321
+ :data-test-id="dataTestIdCloseIcon"
322
+ :flat="true"
323
+ tabindex="0"
324
+ @click="dialogRef.hide()"
325
+ >
326
+ <q-icon
327
+ v-if="closeIcon"
328
+ :class="`icon-close ${closeIcon} icon-secondary-opacity`"
329
+ size="1.5rem"
330
+ tabindex="-1"
331
+ />
332
+ </UBtnStd>
333
+ </div>
334
+ <div class="row">
335
+ <slot name="secondary_row" />
336
+ </div>
337
+ </q-card-section>
338
+
339
+ <q-card-section
340
+ :class="[
341
+ ` main-content-dialog scroll q-px-ba${
342
+ isMobile ? ' scrollable-content' : ''
343
+ } `,
344
+ { mobile: isMobile, desktop: isDesktop, tablet: isTablet },
345
+ ]"
346
+ :style="{
347
+ 'margin-top': `${
348
+ isMobile ? scrollableMarginHeight + (isMobile ? 16 : 0) : 0
349
+ }px`,
350
+ 'margin-bottom': `${getContentBottomSpace()}rem !important`,
351
+ flex: isMobile ? 'none' : 1,
352
+ overflowY: 'auto',
353
+ ...(isMobile && {
354
+ height:
355
+ currentDialogHeight -
356
+ (scrollableMarginHeight +
357
+ (hasSlots() && slotsLength >= 3 ? 144 : 88)) +
358
+ 'px',
359
+ })
360
+
361
+ }"
362
+ tabindex="-1"
363
+ >
364
+ <slot name="content" />
365
+ </q-card-section>
366
+
367
+ <div
368
+ v-if="showActionButtons || showSecondaryButtons"
369
+ :class="`action-wrapper${isMobile ? ' fixed-action-wrapper' : ''}${
370
+ isTablet && slotsLength >= 3 ? ' tablet-full-btn-actions' : ''
371
+ }`"
372
+ id="dialog-action-wrapper"
373
+ :style="{
374
+ gap: hasSlots(),
375
+ flexWrap: getActionsWrapperFlex(),
376
+ justifyContent:
377
+ ((isMobile || !isTablet) && slotsLength >= 3) || hasSlots()
378
+ ? 'space-between'
379
+ : 'flex-end',
380
+ }"
381
+ >
382
+ <q-card-actions
383
+ v-if="
384
+ showSecondaryButtons &&
385
+ (!!$slots['action_secondary_one'] ||
386
+ !!$slots['action_secondary_two'])
387
+ "
388
+ :class="[
389
+ `${isMobile || isTablet ? ' full-width-actions' : ''}${
390
+ !isDesktop
391
+ ? isMobile && !isSmallWidthDevices
392
+ ? ' justify-center mobile-btn-actions'
393
+ : !!$slots['action_secondary_one'] ||
394
+ !!$slots['action_secondary_two']
395
+ ? !isTablet
396
+ ? ' justify-start small-device-class'
397
+ : ''
398
+ : ' justify-end'
399
+ : ''
400
+ }`,
401
+ { 'mobile action-buttons': isMobile },
402
+ { 'desktop action-buttons': !isMobile },
403
+ ]"
404
+ align="left"
405
+ >
406
+ <div v-if="showSecondaryButtons" class="col">
407
+ <slot name="action_secondary_one" />
408
+ <slot name="action_secondary_two" />
409
+ </div>
410
+ </q-card-actions>
411
+
412
+ <q-card-actions
413
+ v-if="
414
+ showActionButtons &&
415
+ (!!$slots['action_primary_one'] || !!$slots['action_primary_two'])
416
+ "
417
+ :class="[
418
+ `${isMobile || isTablet ? ' full-width-actions' : ''}${
419
+ !isDesktop
420
+ ? isMobile && !isSmallWidthDevices
421
+ ? ' justify-center mobile-btn-actions'
422
+ : !!$slots['action_primary_one'] ||
423
+ !!$slots['action_primary_two']
424
+ ? !isTablet
425
+ ? ' justify-start small-device-class'
426
+ : ''
427
+ : ' justify-end'
428
+ : ''
429
+ }`,
430
+ { 'mobile action-buttons': isMobile },
431
+ { 'desktop action-buttons': !isMobile },
432
+ 'q-ml-auto',
433
+ ]"
434
+ align="right"
435
+ >
436
+ <slot name="action_primary_one" />
437
+ <slot name="action_primary_two" />
438
+ </q-card-actions>
439
+ </div>
440
+ </q-card>
441
+ </q-dialog>
442
+ </template>
443
+
444
+ <style lang="sass">
445
+ .filter-dialog-default, .filter-dialog-half, .filter-dialog-tab
446
+ .q-dialog__inner--left, .q-dialog__inner--right
447
+ .dialog-wrapper
448
+ max-height: 100vh !important
449
+ .q-dialog__inner
450
+ &.q-dialog__inner--right
451
+ padding-right: $ba !important
452
+ &.q-dialog__inner--left
453
+ padding-left: $ba !important
454
+
455
+ .filter-dialog-half
456
+ .q-dialog__inner
457
+ padding: $ba 0
458
+ margin: auto
459
+ width: 50% !important
460
+
461
+ .filter-dialog-tab
462
+ .q-dialog__inner
463
+ padding: $ba 0
464
+ margin: auto
465
+ width: 75% !important
466
+
467
+ .filter-dialog-custom
468
+ .q-dialog__inner
469
+ padding: $ba 0
470
+ margin: auto
471
+ width: var(--customSize) !important
472
+
473
+ .filter-dialog-default
474
+ .q-dialog__inner
475
+ padding: $ba 0
476
+ margin: auto
477
+ width: 35.25rem !important
478
+
479
+ .filter-dialog-full
480
+ .q-dialog__inner
481
+ padding: 0 0
482
+ width: 100% !important
483
+ .dialog-wrapper
484
+ max-height: calc(100vh - 1rem)
485
+ border-radius: $xs $xs 0 0 !important
486
+ &.action-wrapper
487
+ border-radius: 0 !important
488
+ .main-content-dialog
489
+ &.mobile
490
+ padding: 0 $ba $xs $ba
491
+ &.desktop
492
+ padding: $ms $ms
493
+ padding-bottom: 0
494
+ margin-bottom: $ms !important
495
+ .heading-section
496
+ &.mobile
497
+ padding: $ba $ba $xs $ba !important
498
+ &.desktop
499
+ padding: $ba $ms !important
500
+ .action-wrapper
501
+ padding: $ba $ms
502
+
503
+ .filter-dialog-full .no-heading-section
504
+ padding-top: 0px !important
505
+ padding-left: $ba !important
506
+ padding-right: $ba !important
507
+ position: fixed
508
+ width: 100%
509
+ z-index: 99
510
+ background: white
511
+ margin-top: 0.89rem
512
+
513
+ .dialog-full .scrollable-content
514
+ height: auto !important
515
+ padding-left: $ba !important
516
+ padding-right: $ba !important
517
+
518
+ .filter-dialog
519
+ .dialog-heading-container
520
+ gap: $xs
521
+
522
+ .dialog-caption
523
+ color: $neutral-9
524
+ .dialog-heading
525
+ color: $dark
526
+
527
+ .heading-section
528
+ padding: $ba $ms
529
+ flex-grow: 0 !important
530
+
531
+ .dialog-wrapper
532
+ border-radius: $xs !important
533
+ .divider
534
+ border-bottom: 1.5px solid $neutral-4
535
+ .action-wrapper
536
+ display: flex
537
+ justify-content: space-between
538
+ border-radius: 0 0 $xs $xs !important
539
+ .q-card__actions
540
+ padding: 0
541
+
542
+ .heading-wrapper
543
+ justify-content: space-between
544
+ align-items: flex-start
545
+ flex-wrap: nowrap
546
+ margin-bottom: $ba
547
+
548
+ .icon-close
549
+ color: $neutral-9
550
+ cursor: pointer
551
+ align-self: flex-start
552
+
553
+ .icon-back
554
+ cursor: pointer
555
+ color: $neutral-9
556
+
557
+ .main-content-dialog
558
+ padding: 0 $ms 0 $ms
559
+ .heading-section
560
+ padding: $ba $ms
561
+ .action-wrapper
562
+ padding: $ba $ms
563
+
564
+ .full-height
565
+ height: 100vh
566
+ display: flex
567
+ flex-direction: column
568
+
569
+ .action-buttons
570
+ display: flex
571
+ align-items: center
572
+ flex-wrap: nowrap
573
+ .q-btn
574
+ margin: 0 !important
575
+ &.desktop
576
+ gap: $xs
577
+ padding: $ba $ms $ms $ms
578
+ align-self: stretch
579
+ &.mobile
580
+ gap: $xs
581
+
582
+ .q-btn.dialog-action-icons
583
+ padding: 0px 0px !important
584
+ min-width: 1.5rem !important
585
+ min-height: 0px !important
586
+ height: fit-content !important
587
+ border-radius: 0px
588
+
589
+ &:focus
590
+ outline: auto !important
591
+
592
+ .q-focus-helper
593
+ background: transparent !important
594
+
595
+ #closeIconLabelRef
596
+ display: none
597
+
598
+ #leftIconLabelRef
599
+ display: none
600
+
601
+ .drag-handle-wrapper
602
+ width: 100%
603
+ height: 1rem
604
+ z-index: 9
605
+ display: flex
606
+ align-items: center
607
+ justify-content: center
608
+ background: #FFFFFF
609
+ position: fixed
610
+
611
+ .drag-handle
612
+ width: 2rem
613
+ height: 0.25rem
614
+ cursor: ns-resize
615
+ background: $neutral-5
616
+ border-radius: $xxl !important
617
+
618
+ .full-width-actions
619
+ width: 100%
620
+ flex-wrap: nowrap
621
+
622
+ .mobile-btn-actions
623
+ .q-btn
624
+ width: 100%
625
+ min-width: auto !important
626
+ .button-label
627
+ white-space: nowrap
628
+
629
+ .tablet-full-btn-actions
630
+ .q-btn
631
+ min-width: auto !important
632
+ .button-label
633
+ white-space: nowrap
634
+
635
+ .sheet-card-wrapper
636
+ position: relative
637
+ width: 100%
638
+ overflow: hidden
639
+ transition: height 0.02s ease-in-out
640
+ background: $neutral-1
641
+ border-radius: $sm $sm 0 0 !important
642
+ box-shadow: none !important
643
+ touch-action: none
644
+
645
+ .fixed-action-wrapper
646
+ position: fixed
647
+ bottom: 0
648
+ width: 100%
649
+ padding: $ba $ba $ba $ba !important
650
+
651
+ .scrollable::-webkit-scrollbar
652
+ z-index: 9999
653
+
654
+ .small-device-class
655
+ justify-content: center
656
+ .q-btn
657
+ width: 100%
658
+ .button-label
659
+ white-space: nowrap
660
+ </style>