@usssa/component-library 1.0.0-alpha.142 → 1.0.0-alpha.144
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/README.md +1 -1
- package/package.json +1 -1
- package/src/components/core/UDialogStd.vue +153 -82
- package/src/components/core/UInputTextStd.vue +1 -1
- package/src/components/core/URadioBtn.vue +9 -13
- package/src/components/core/USelectStd.vue +22 -5
- package/src/components/core/UTable/UTable.vue +9 -6
- package/src/components/core/UTableStd.vue +41 -15
- package/src/components/core/UUploader.vue +9 -1
- package/src/css/quasar.variables.sass +3 -3
package/README.md
CHANGED
package/package.json
CHANGED
|
@@ -33,7 +33,6 @@ const props = defineProps({
|
|
|
33
33
|
})
|
|
34
34
|
|
|
35
35
|
// constants
|
|
36
|
-
const MAX_HEIGHT = 750
|
|
37
36
|
const MIN_HEIGHT = 120
|
|
38
37
|
let isDragging = false
|
|
39
38
|
let startHeight = 0
|
|
@@ -43,8 +42,8 @@ const $screen = useScreenType()
|
|
|
43
42
|
const $slots = useSlots()
|
|
44
43
|
const $q = useQuasar()
|
|
45
44
|
|
|
46
|
-
const
|
|
47
|
-
const
|
|
45
|
+
const currentDialogHeight = ref(null)
|
|
46
|
+
const dialogMaxHeight = ref(null)
|
|
48
47
|
const dialogRef = ref(true)
|
|
49
48
|
const scrollableMarginHeight = ref(null)
|
|
50
49
|
|
|
@@ -59,6 +58,11 @@ const headerClass = computed(() => {
|
|
|
59
58
|
const isDesktop = computed(() => $screen.value.isDesktop)
|
|
60
59
|
const isMobile = computed(() => $screen.value.isMobile)
|
|
61
60
|
const isSmallWidthDevices = computed(() => $q.screen.width < 400)
|
|
61
|
+
const isWidthChanging = computed(() => {
|
|
62
|
+
return {
|
|
63
|
+
width: $q.screen.width,
|
|
64
|
+
}
|
|
65
|
+
})
|
|
62
66
|
const smallDevices = computed(() => {
|
|
63
67
|
return {
|
|
64
68
|
sm: $q.screen.height < 800 && $q.screen.height > 700,
|
|
@@ -66,6 +70,41 @@ const smallDevices = computed(() => {
|
|
|
66
70
|
}
|
|
67
71
|
})
|
|
68
72
|
const isTablet = computed(() => $screen.value.isTablet)
|
|
73
|
+
const slotsLength = computed(
|
|
74
|
+
() =>
|
|
75
|
+
Object.keys($slots).filter(
|
|
76
|
+
(slot) => !['content', 'secondary_row'].includes(slot)
|
|
77
|
+
).length
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
const getActionsWrapperFlex = () => {
|
|
81
|
+
if (isMobile.value) {
|
|
82
|
+
if (slotsLength.value >= 3) {
|
|
83
|
+
return 'wrap'
|
|
84
|
+
} else {
|
|
85
|
+
return 'nowrap'
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (isTablet.value) {
|
|
89
|
+
if (slotsLength.value >= 3) {
|
|
90
|
+
return 'nowrap'
|
|
91
|
+
} else {
|
|
92
|
+
return 'wrap'
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const getContentBottomSpace = () => {
|
|
98
|
+
if (isMobile.value) {
|
|
99
|
+
if (slotsLength.value >= 3) {
|
|
100
|
+
return 7.5
|
|
101
|
+
} else {
|
|
102
|
+
return 4.5
|
|
103
|
+
}
|
|
104
|
+
} else {
|
|
105
|
+
return 0
|
|
106
|
+
}
|
|
107
|
+
}
|
|
69
108
|
|
|
70
109
|
const getDialogHeaderheight = () => {
|
|
71
110
|
setTimeout(() => {
|
|
@@ -75,21 +114,25 @@ const getDialogHeaderheight = () => {
|
|
|
75
114
|
scrollableMarginHeight.value = headingWrapper.clientHeight
|
|
76
115
|
}
|
|
77
116
|
}, 100)
|
|
117
|
+
setTimeout(() => {
|
|
118
|
+
// dynamically adding height by removing toolbar height of 50px
|
|
119
|
+
const dialogWrapper = document.getElementsByClassName('dialog-wrapper')[0]
|
|
120
|
+
if (dialogWrapper) {
|
|
121
|
+
dialogWrapper?.setAttribute(
|
|
122
|
+
'style',
|
|
123
|
+
`max-height: ${$q.screen.height - 50}px !important`
|
|
124
|
+
)
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
currentDialogHeight.value = $q.screen.height - 50
|
|
128
|
+
dialogMaxHeight.value = $q.screen.height - 50
|
|
129
|
+
}, 200)
|
|
78
130
|
}
|
|
79
131
|
|
|
80
132
|
const handleBackClick = () => {
|
|
81
133
|
return emit('onBackIconClick')
|
|
82
134
|
}
|
|
83
135
|
|
|
84
|
-
const hasAllActionSlots = () => {
|
|
85
|
-
return (
|
|
86
|
-
!!$slots['action_secondary_one'] &&
|
|
87
|
-
!!$slots['action_secondary_two'] &&
|
|
88
|
-
!!$slots['action_primary_one'] &&
|
|
89
|
-
!!$slots['action_primary_two']
|
|
90
|
-
)
|
|
91
|
-
}
|
|
92
|
-
|
|
93
136
|
const hasSlots = () => {
|
|
94
137
|
return (!!$slots['action_secondary_one'] ||
|
|
95
138
|
!!$slots['action_secondary_two']) &&
|
|
@@ -122,7 +165,7 @@ const onDragMove = (event) => {
|
|
|
122
165
|
MIN_HEIGHT
|
|
123
166
|
) {
|
|
124
167
|
setTimeout(() => {
|
|
125
|
-
dialogRef
|
|
168
|
+
dialogRef?.value?.hide() // if user is dragging then it should close from here
|
|
126
169
|
}, 200)
|
|
127
170
|
}
|
|
128
171
|
// currentDialogHeight.value = Math.max(MIN_HEIGHT, startHeight + deltaY) // if limiting not required
|
|
@@ -158,32 +201,25 @@ onMounted(() => {
|
|
|
158
201
|
})
|
|
159
202
|
|
|
160
203
|
watch(
|
|
161
|
-
|
|
162
|
-
(
|
|
204
|
+
isWidthChanging,
|
|
205
|
+
() => {
|
|
163
206
|
getDialogHeaderheight()
|
|
164
|
-
if (newData.xs || newData.sm) {
|
|
165
|
-
dialogMaxHeight.value = newData.xs ? 550 : 580
|
|
166
|
-
currentDialogHeight.value = newData.xs ? 550 : 580
|
|
167
|
-
} else {
|
|
168
|
-
dialogMaxHeight.value = MAX_HEIGHT
|
|
169
|
-
currentDialogHeight.value = MAX_HEIGHT
|
|
170
|
-
}
|
|
171
207
|
},
|
|
172
208
|
{ immediate: true }
|
|
173
209
|
)
|
|
174
210
|
|
|
175
211
|
watch(
|
|
176
212
|
model,
|
|
177
|
-
(
|
|
213
|
+
() => {
|
|
214
|
+
getDialogHeaderheight()
|
|
215
|
+
},
|
|
216
|
+
{ immediate: true }
|
|
217
|
+
)
|
|
218
|
+
|
|
219
|
+
watch(
|
|
220
|
+
smallDevices,
|
|
221
|
+
() => {
|
|
178
222
|
getDialogHeaderheight()
|
|
179
|
-
if (!newData) {
|
|
180
|
-
currentDialogHeight.value =
|
|
181
|
-
smallDevices.value.xs || smallDevices.value.sm
|
|
182
|
-
? smallDevices.value.xs
|
|
183
|
-
? 550
|
|
184
|
-
: 580
|
|
185
|
-
: 750
|
|
186
|
-
}
|
|
187
223
|
},
|
|
188
224
|
{ immediate: true }
|
|
189
225
|
)
|
|
@@ -217,11 +253,14 @@ watch(
|
|
|
217
253
|
<div class="drag-handle" />
|
|
218
254
|
</div>
|
|
219
255
|
<q-card-section
|
|
220
|
-
:class="
|
|
221
|
-
|
|
222
|
-
|
|
256
|
+
:class="[
|
|
257
|
+
`col items-center q-pa-none heading-section ${headerClass}${
|
|
258
|
+
isMobile ? ' no-heading-section' : ''
|
|
259
|
+
}`,
|
|
260
|
+
{ mobile: isMobile, desktop: isDesktop || isTablet },
|
|
261
|
+
]"
|
|
223
262
|
>
|
|
224
|
-
<div class="heading-wrapper row">
|
|
263
|
+
<div class="heading-wrapper row items-center">
|
|
225
264
|
<div class="flex items-center dialog-heading-container">
|
|
226
265
|
<div v-if="leftIcon">
|
|
227
266
|
<UBtnStd
|
|
@@ -261,7 +300,7 @@ watch(
|
|
|
261
300
|
>
|
|
262
301
|
<q-icon
|
|
263
302
|
v-if="closeIcon"
|
|
264
|
-
:class="`icon-close ${closeIcon}`"
|
|
303
|
+
:class="`icon-close ${closeIcon} icon-secondary-opacity`"
|
|
265
304
|
size="1.5rem"
|
|
266
305
|
tabindex="-1"
|
|
267
306
|
/>
|
|
@@ -273,17 +312,23 @@ watch(
|
|
|
273
312
|
</q-card-section>
|
|
274
313
|
|
|
275
314
|
<q-card-section
|
|
276
|
-
:class="
|
|
277
|
-
|
|
278
|
-
|
|
315
|
+
:class="[
|
|
316
|
+
`full-height main-content-dialog scroll q-px-ba${
|
|
317
|
+
isMobile ? ' scrollable-content' : ''
|
|
318
|
+
}`,
|
|
319
|
+
{ mobile: isMobile, desktop: isDesktop || isTablet },
|
|
320
|
+
]"
|
|
279
321
|
:style="{
|
|
280
|
-
'margin-top': `${
|
|
322
|
+
'margin-top': `${
|
|
323
|
+
isMobile ? scrollableMarginHeight + (isMobile ? 16 : 0) : 0
|
|
324
|
+
}px`,
|
|
325
|
+
'margin-bottom': `${getContentBottomSpace()}rem !important`,
|
|
281
326
|
height:
|
|
282
327
|
isTablet || isDesktop
|
|
283
328
|
? 'auto'
|
|
284
329
|
: currentDialogHeight -
|
|
285
330
|
(scrollableMarginHeight +
|
|
286
|
-
(hasSlots() &&
|
|
331
|
+
(hasSlots() && slotsLength >= 3 ? 144 : 88)) +
|
|
287
332
|
'px !important',
|
|
288
333
|
}"
|
|
289
334
|
tabindex="-1"
|
|
@@ -295,14 +340,13 @@ watch(
|
|
|
295
340
|
v-if="showActionButtons"
|
|
296
341
|
:class="`q-pa-ba action-wrapper${
|
|
297
342
|
isMobile ? ' fixed-action-wrapper' : ''
|
|
298
|
-
}${isTablet &&
|
|
343
|
+
}${isTablet && slotsLength >= 3 ? ' tablet-full-btn-actions' : ''}`"
|
|
299
344
|
id="dialog-action-wrapper"
|
|
300
345
|
:style="{
|
|
301
346
|
gap: hasSlots(),
|
|
302
|
-
flexWrap:
|
|
303
|
-
(isMobile || isTablet) && hasAllActionSlots() ? 'wrap' : 'no-wrap',
|
|
347
|
+
flexWrap: getActionsWrapperFlex(),
|
|
304
348
|
justifyContent:
|
|
305
|
-
((isMobile || !isTablet) &&
|
|
349
|
+
((isMobile || !isTablet) && slotsLength >= 3) || hasSlots()
|
|
306
350
|
? 'space-between'
|
|
307
351
|
: 'flex-end',
|
|
308
352
|
}"
|
|
@@ -311,18 +355,22 @@ watch(
|
|
|
311
355
|
v-if="
|
|
312
356
|
!!$slots['action_secondary_one'] || !!$slots['action_secondary_two']
|
|
313
357
|
"
|
|
314
|
-
:class="
|
|
315
|
-
isMobile || isTablet ? ' full-width-actions' : ''
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
358
|
+
:class="[
|
|
359
|
+
`${isMobile || isTablet ? ' full-width-actions' : ''}${
|
|
360
|
+
!isDesktop
|
|
361
|
+
? isMobile && !isSmallWidthDevices
|
|
362
|
+
? ' justify-center mobile-btn-actions'
|
|
363
|
+
: !!$slots['action_secondary_one'] ||
|
|
364
|
+
!!$slots['action_secondary_two']
|
|
365
|
+
? !isTablet
|
|
366
|
+
? ' justify-start small-device-class'
|
|
367
|
+
: ''
|
|
368
|
+
: ' justify-end'
|
|
369
|
+
: ''
|
|
370
|
+
}`,
|
|
371
|
+
{ 'mobile action-buttons': isMobile },
|
|
372
|
+
{ 'desktop action-buttons': !isMobile },
|
|
373
|
+
]"
|
|
326
374
|
align="left"
|
|
327
375
|
>
|
|
328
376
|
<slot name="action_secondary_one" />
|
|
@@ -333,18 +381,22 @@ watch(
|
|
|
333
381
|
v-if="
|
|
334
382
|
!!$slots['action_primary_one'] || !!$slots['action_primary_two']
|
|
335
383
|
"
|
|
336
|
-
:class="
|
|
337
|
-
isMobile || isTablet ? ' full-width-actions' : ''
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
384
|
+
:class="[
|
|
385
|
+
`${isMobile || isTablet ? ' full-width-actions' : ''}${
|
|
386
|
+
!isDesktop
|
|
387
|
+
? isMobile && !isSmallWidthDevices
|
|
388
|
+
? ' justify-center mobile-btn-actions'
|
|
389
|
+
: !!$slots['action_primary_one'] ||
|
|
390
|
+
!!$slots['action_primary_two']
|
|
391
|
+
? !isTablet
|
|
392
|
+
? ' justify-start small-device-class'
|
|
393
|
+
: ''
|
|
394
|
+
: ' justify-end'
|
|
395
|
+
: ''
|
|
396
|
+
}`,
|
|
397
|
+
{ 'mobile action-buttons': isMobile },
|
|
398
|
+
{ 'desktop action-buttons': !isMobile },
|
|
399
|
+
]"
|
|
348
400
|
align="right"
|
|
349
401
|
>
|
|
350
402
|
<slot name="action_primary_one" />
|
|
@@ -402,11 +454,17 @@ watch(
|
|
|
402
454
|
&.action-wrapper
|
|
403
455
|
border-radius: 0 !important
|
|
404
456
|
.main-content-dialog
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
457
|
+
&.mobile
|
|
458
|
+
padding: $ba
|
|
459
|
+
&.desktop
|
|
460
|
+
padding: $ms $ms
|
|
461
|
+
padding-bottom: 0
|
|
462
|
+
margin-bottom: $ms !important
|
|
408
463
|
.heading-section
|
|
409
|
-
|
|
464
|
+
&.mobile
|
|
465
|
+
padding: $ba $ba $xs $ba !important
|
|
466
|
+
&.desktop
|
|
467
|
+
padding: $ba $ms !important
|
|
410
468
|
.action-wrapper
|
|
411
469
|
padding: $ba $ms
|
|
412
470
|
|
|
@@ -422,6 +480,7 @@ watch(
|
|
|
422
480
|
|
|
423
481
|
.heading-wrapper
|
|
424
482
|
justify-content: space-between
|
|
483
|
+
align-items: flex-start
|
|
425
484
|
flex-wrap: nowrap
|
|
426
485
|
margin-bottom: $ba
|
|
427
486
|
|
|
@@ -446,10 +505,13 @@ watch(
|
|
|
446
505
|
.action-buttons
|
|
447
506
|
display: flex
|
|
448
507
|
align-items: center
|
|
449
|
-
gap: $xs
|
|
450
508
|
flex-wrap: nowrap
|
|
451
509
|
.q-btn
|
|
452
510
|
margin: 0 !important
|
|
511
|
+
&.desktop
|
|
512
|
+
gap: $xs
|
|
513
|
+
&.mobile
|
|
514
|
+
gap: $ba
|
|
453
515
|
|
|
454
516
|
.q-btn.dialog-action-icons
|
|
455
517
|
padding: 0px 0px !important
|
|
@@ -491,12 +553,23 @@ watch(
|
|
|
491
553
|
width: 100%
|
|
492
554
|
flex-wrap: nowrap
|
|
493
555
|
|
|
494
|
-
.mobile-btn-actions
|
|
556
|
+
.mobile-btn-actions
|
|
557
|
+
.q-btn
|
|
558
|
+
width: 100%
|
|
559
|
+
min-width: auto !important
|
|
560
|
+
.button-label
|
|
561
|
+
white-space: nowrap
|
|
562
|
+
|
|
563
|
+
.tablet-full-btn-actions
|
|
495
564
|
.q-btn
|
|
496
|
-
|
|
565
|
+
min-width: auto !important
|
|
566
|
+
.button-label
|
|
567
|
+
white-space: nowrap
|
|
497
568
|
|
|
498
569
|
.dialog-full .no-heading-section
|
|
499
570
|
padding-top: 0px !important
|
|
571
|
+
padding-left: $ba !important
|
|
572
|
+
padding-right: $ba !important
|
|
500
573
|
position: fixed
|
|
501
574
|
width: 100%
|
|
502
575
|
z-index: 99
|
|
@@ -517,11 +590,12 @@ watch(
|
|
|
517
590
|
position: fixed
|
|
518
591
|
bottom: 0
|
|
519
592
|
width: 100%
|
|
520
|
-
padding: $ba
|
|
593
|
+
padding: $ba !important
|
|
521
594
|
|
|
522
595
|
.dialog-full .scrollable-content
|
|
523
|
-
margin-bottom: 4.5rem !important
|
|
524
596
|
height: auto !important
|
|
597
|
+
padding-left: $ba !important
|
|
598
|
+
padding-right: $ba !important
|
|
525
599
|
|
|
526
600
|
.scrollable::-webkit-scrollbar
|
|
527
601
|
z-index: 9999
|
|
@@ -532,7 +606,4 @@ watch(
|
|
|
532
606
|
width: 100%
|
|
533
607
|
.button-label
|
|
534
608
|
white-space: nowrap
|
|
535
|
-
|
|
536
|
-
overflow: hidden
|
|
537
|
-
text-overflow: ellipsis
|
|
538
|
-
</style>
|
|
609
|
+
</style>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { computed } from 'vue'
|
|
3
|
-
import { useScreenType } from '../../composables/useScreenType'
|
|
4
3
|
import URadioStd from './URadioStd.vue'
|
|
4
|
+
import { useScreenType } from '../../composables/useScreenType'
|
|
5
5
|
|
|
6
6
|
const emit = defineEmits(['onClick', 'onButtonClick'])
|
|
7
7
|
const model = defineModel()
|
|
@@ -78,9 +78,11 @@ const handleChange = () => {
|
|
|
78
78
|
:id="id"
|
|
79
79
|
:value="value"
|
|
80
80
|
/>
|
|
81
|
-
<div class="button-text">
|
|
81
|
+
<div class="button-text q-ml-xs">
|
|
82
82
|
<div class="text-caption-lg">{{ label }}</div>
|
|
83
|
-
<div class="description-text text-body-sm">
|
|
83
|
+
<div class="description-text text-body-sm">
|
|
84
|
+
{{ description }}
|
|
85
|
+
</div>
|
|
84
86
|
</div>
|
|
85
87
|
</div>
|
|
86
88
|
|
|
@@ -108,36 +110,30 @@ const handleChange = () => {
|
|
|
108
110
|
<style lang="sass">
|
|
109
111
|
.u-radio-btn
|
|
110
112
|
padding: $xs $sm
|
|
111
|
-
border:
|
|
113
|
+
border: 0.125rem solid $neutral-4
|
|
112
114
|
border-radius: $xs
|
|
113
115
|
min-height: $lg
|
|
114
116
|
.q-radio__label
|
|
115
117
|
padding-left: 0 !important
|
|
116
118
|
|
|
117
|
-
.radio-btn-content
|
|
118
|
-
gap: $xs
|
|
119
|
-
|
|
120
119
|
.button-text
|
|
121
120
|
text-align: left !important
|
|
122
|
-
min-width: 6.063rem
|
|
123
121
|
|
|
124
122
|
.description-text
|
|
125
123
|
color: $description
|
|
124
|
+
white-space: nowrap
|
|
126
125
|
|
|
127
126
|
.radio-btn-img
|
|
128
127
|
width: $ms
|
|
129
128
|
height: $ms
|
|
130
129
|
|
|
131
130
|
.active
|
|
132
|
-
border:
|
|
131
|
+
border: 0.125rem solid $primary
|
|
133
132
|
|
|
134
133
|
.u-radio-btn:hover
|
|
135
|
-
border:
|
|
134
|
+
border: 0.125rem solid $primary
|
|
136
135
|
background-color: $primary-transparent
|
|
137
136
|
|
|
138
137
|
.q-radio .q-radio__inner
|
|
139
138
|
color: $primary !important
|
|
140
|
-
|
|
141
|
-
.radio-btn-text-wrapper
|
|
142
|
-
gap: $xs
|
|
143
139
|
</style>
|
|
@@ -76,7 +76,7 @@ const props = defineProps({
|
|
|
76
76
|
},
|
|
77
77
|
sheetLabel: {
|
|
78
78
|
type: String,
|
|
79
|
-
default: ''
|
|
79
|
+
default: '',
|
|
80
80
|
},
|
|
81
81
|
showErrorIcon: {
|
|
82
82
|
type: Boolean,
|
|
@@ -99,13 +99,13 @@ const props = defineProps({
|
|
|
99
99
|
const $screen = useScreenType()
|
|
100
100
|
|
|
101
101
|
const dialogs = ref([])
|
|
102
|
-
const initialOptions= ref([...props.options])
|
|
102
|
+
const initialOptions = ref([...props.options])
|
|
103
103
|
const placeholderText = ref(props?.placeholder)
|
|
104
104
|
const search = ref('')
|
|
105
105
|
const selectedItem = ref(props.modelValue)
|
|
106
106
|
|
|
107
|
-
const sheetHeading = computed(()=>{
|
|
108
|
-
if(props.sheetLabel){
|
|
107
|
+
const sheetHeading = computed(() => {
|
|
108
|
+
if (props.sheetLabel) {
|
|
109
109
|
return props.sheetLabel
|
|
110
110
|
}
|
|
111
111
|
return props.label
|
|
@@ -132,6 +132,7 @@ const handleApply = () => {
|
|
|
132
132
|
dialogs.value[0].open = false
|
|
133
133
|
model.value = selectedItem.value
|
|
134
134
|
}
|
|
135
|
+
|
|
135
136
|
// for opening the sheet in mobile screen
|
|
136
137
|
const handleClick = (event) => {
|
|
137
138
|
const isSelectElement = event.target.closest('.q-field__control')
|
|
@@ -154,6 +155,7 @@ const handleClick = (event) => {
|
|
|
154
155
|
}
|
|
155
156
|
}
|
|
156
157
|
}
|
|
158
|
+
|
|
157
159
|
// sheet closing action
|
|
158
160
|
const handleClose = () => {
|
|
159
161
|
dialogs.value[0].open = false
|
|
@@ -167,6 +169,15 @@ const handleClose = () => {
|
|
|
167
169
|
selectedItem.value = ''
|
|
168
170
|
}
|
|
169
171
|
}
|
|
172
|
+
|
|
173
|
+
const handleInput = (event) => {
|
|
174
|
+
if (event.type == 'input' && props.useInput && $screen.value.isMobile) {
|
|
175
|
+
let inputElement = document.querySelector('.q-field__input')
|
|
176
|
+
inputElement.value = ''
|
|
177
|
+
handleClick(event)
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
170
181
|
// adding scroll if highlighted menu is not visible to user
|
|
171
182
|
const handleKeydown = () => {
|
|
172
183
|
setTimeout(() => {
|
|
@@ -191,6 +202,11 @@ const handleKeydown = () => {
|
|
|
191
202
|
}
|
|
192
203
|
}, 100)
|
|
193
204
|
}
|
|
205
|
+
|
|
206
|
+
const handleKeydownEnter = (event) => {
|
|
207
|
+
handleClick(event)
|
|
208
|
+
}
|
|
209
|
+
|
|
194
210
|
// selecting sheet items
|
|
195
211
|
const handleSheetItemClick = (item, key) => {
|
|
196
212
|
selectedItem.value = item.value
|
|
@@ -265,7 +281,9 @@ watch(
|
|
|
265
281
|
:placeholder="placeholderText"
|
|
266
282
|
:use-input="useInput"
|
|
267
283
|
@filter="filterFn"
|
|
284
|
+
@input="handleInput"
|
|
268
285
|
@keydown="handleKeydown"
|
|
286
|
+
@keydown.enter="handleKeydownEnter"
|
|
269
287
|
@update:model-value="(val) => updateVal(val)"
|
|
270
288
|
>
|
|
271
289
|
<template v-slot:no-option>
|
|
@@ -440,7 +458,6 @@ watch(
|
|
|
440
458
|
&.field-md
|
|
441
459
|
.q-field__marginal
|
|
442
460
|
height: $lg
|
|
443
|
-
|
|
444
461
|
&.field-lg
|
|
445
462
|
.q-field__marginal
|
|
446
463
|
height: $xl
|
|
@@ -86,6 +86,7 @@ const moreActionsDialogs = ref({})
|
|
|
86
86
|
const tableDataChip = ref(true) // this is required to show chip
|
|
87
87
|
const tailClass = ref(null)
|
|
88
88
|
|
|
89
|
+
const isDesktop = computed(() => $screen.value.isDesktop)
|
|
89
90
|
const isMobile = computed(() => $screen.value.isMobile)
|
|
90
91
|
const isTablet = computed(() => $screen.value.isTablet)
|
|
91
92
|
|
|
@@ -209,6 +210,8 @@ watch(
|
|
|
209
210
|
showPagination && pagination.rowsPerPage < 50
|
|
210
211
|
? ' force-auto-height-table'
|
|
211
212
|
: ''
|
|
213
|
+
}${
|
|
214
|
+
!isDesktop ? (isMobile ? ' grid-card-mobile' : ' grid-card-tablet') : ''
|
|
212
215
|
}`"
|
|
213
216
|
:bordered="bordered"
|
|
214
217
|
:columns="columns"
|
|
@@ -244,7 +247,7 @@ watch(
|
|
|
244
247
|
dense
|
|
245
248
|
:style="{
|
|
246
249
|
'min-height': `${rowCardHeight}rem`,
|
|
247
|
-
|
|
250
|
+
overflowX: 'hidden',
|
|
248
251
|
}"
|
|
249
252
|
>
|
|
250
253
|
<template v-for="(col, __k) in props.cols" :key="__k">
|
|
@@ -309,7 +312,7 @@ watch(
|
|
|
309
312
|
<UAvatar
|
|
310
313
|
v-if="props.row[col.avatarKey]?.type === 'initials'"
|
|
311
314
|
:name="`${props.row[col.avatarKey]?.value}`"
|
|
312
|
-
size="
|
|
315
|
+
size="lg"
|
|
313
316
|
/>
|
|
314
317
|
<UAvatar
|
|
315
318
|
v-else-if="
|
|
@@ -320,14 +323,14 @@ watch(
|
|
|
320
323
|
props.row[col.avatarKey]?.name ??
|
|
321
324
|
props.row[col.avatarKey]?.value
|
|
322
325
|
"
|
|
323
|
-
size="
|
|
326
|
+
size="lg"
|
|
324
327
|
/>
|
|
325
328
|
</div>
|
|
326
329
|
<div v-else class="table-data-avatar">
|
|
327
330
|
<UAvatar
|
|
328
331
|
:image="`${props.row[col.avatarKey]}`"
|
|
329
332
|
:name="`${props.row[col.avatarKey]}`"
|
|
330
|
-
size="
|
|
333
|
+
size="lg"
|
|
331
334
|
/>
|
|
332
335
|
</div>
|
|
333
336
|
</div>
|
|
@@ -567,7 +570,7 @@ watch(
|
|
|
567
570
|
<div
|
|
568
571
|
class="q-pt-ba q-px-ba q-pb-none text-heading-xxs text-dark"
|
|
569
572
|
>
|
|
570
|
-
Select More
|
|
573
|
+
Select More Options
|
|
571
574
|
</div>
|
|
572
575
|
<q-list class="grid-more-action">
|
|
573
576
|
<template v-for="(action, __i) in col.actions">
|
|
@@ -757,7 +760,7 @@ watch(
|
|
|
757
760
|
<USheet
|
|
758
761
|
v-model:dialogs="moreActionsDialogs[props.row['id']]"
|
|
759
762
|
closeIconLabel="Close Icon"
|
|
760
|
-
heading="Select More
|
|
763
|
+
heading="Select More Options"
|
|
761
764
|
:is-left-icon="false"
|
|
762
765
|
:show-action-buttons="false"
|
|
763
766
|
>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
+
import { useQuasar } from 'quasar'
|
|
2
3
|
import { computed, ref, watch } from 'vue'
|
|
3
4
|
import { useScreenType } from '..'
|
|
4
5
|
import UAvatar from './UAvatar.vue'
|
|
@@ -108,6 +109,7 @@ const props = defineProps({
|
|
|
108
109
|
},
|
|
109
110
|
})
|
|
110
111
|
|
|
112
|
+
const $q = useQuasar()
|
|
111
113
|
const $screen = useScreenType()
|
|
112
114
|
|
|
113
115
|
const customLoading = ref(false)
|
|
@@ -138,6 +140,7 @@ const getRowsPerPageOptions = computed(() => {
|
|
|
138
140
|
const isMobileOrTablet = computed(
|
|
139
141
|
() => $screen.value.isMobile || $screen.value.isTablet
|
|
140
142
|
)
|
|
143
|
+
const isSmallDevices = computed(() => $q.screen.width < 390)
|
|
141
144
|
|
|
142
145
|
// chekcing the menu position after show
|
|
143
146
|
const checkMenuPosition = (id) => {
|
|
@@ -817,11 +820,12 @@ watch(
|
|
|
817
820
|
</template> -->
|
|
818
821
|
</UTable>
|
|
819
822
|
<!-- customized pagination with the vitual scroll functionality and rows per page selection -->
|
|
823
|
+
|
|
820
824
|
<div
|
|
821
825
|
v-if="showPagination"
|
|
822
826
|
:class="`row justify-end items-center pagination-wrapper${
|
|
823
827
|
grid ? ' grid-row-pagination' : ''
|
|
824
|
-
}`"
|
|
828
|
+
}${isSmallDevices ? ' small-device-pagination' : ''}`"
|
|
825
829
|
dataTestId="table-pagination"
|
|
826
830
|
>
|
|
827
831
|
<UPagination
|
|
@@ -829,13 +833,11 @@ watch(
|
|
|
829
833
|
v-model="pagination.page"
|
|
830
834
|
:maxPageLink="
|
|
831
835
|
Number(
|
|
832
|
-
Math.ceil(
|
|
833
|
-
|
|
834
|
-
?
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
: 3
|
|
838
|
-
)
|
|
836
|
+
Math.ceil(updatedRows.length / pagination.rowsPerPage) > 10
|
|
837
|
+
? grid
|
|
838
|
+
? 3
|
|
839
|
+
: 6
|
|
840
|
+
: 3
|
|
839
841
|
)
|
|
840
842
|
"
|
|
841
843
|
:maxPages="Number(Math.ceil(updatedRows.length / pagination.rowsPerPage))"
|
|
@@ -936,9 +938,25 @@ watch(
|
|
|
936
938
|
.u-virtualscroll-table
|
|
937
939
|
height: 50rem
|
|
938
940
|
|
|
941
|
+
.u-virtualscroll-grid-table.grid-card-mobile
|
|
942
|
+
.q-table__grid-content
|
|
943
|
+
.grid-style-transition
|
|
944
|
+
padding-left: 0px
|
|
945
|
+
padding-right: 0px
|
|
946
|
+
|
|
947
|
+
.u-virtualscroll-grid-table.grid-card-tablet
|
|
948
|
+
.q-table__grid-content
|
|
949
|
+
> :nth-child(odd)
|
|
950
|
+
padding-left: 0px
|
|
951
|
+
> :nth-child(even)
|
|
952
|
+
padding-right: 0px
|
|
953
|
+
|
|
939
954
|
.u-virtualscroll-grid-table
|
|
940
|
-
max-height: 50rem
|
|
941
|
-
overflow: auto
|
|
955
|
+
// max-height: 50rem
|
|
956
|
+
// overflow: auto
|
|
957
|
+
|
|
958
|
+
.q-item.q-item-type .q-item__section--main
|
|
959
|
+
padding-bottom: $xxs !important
|
|
942
960
|
|
|
943
961
|
.q-list
|
|
944
962
|
display: grid
|
|
@@ -954,7 +972,7 @@ watch(
|
|
|
954
972
|
color: $neutral-9
|
|
955
973
|
font-size: 0.875rem
|
|
956
974
|
font-weight: 500
|
|
957
|
-
line-height: 1.
|
|
975
|
+
line-height: 1.063rem !important
|
|
958
976
|
opacity: 1
|
|
959
977
|
word-break: break-word
|
|
960
978
|
|
|
@@ -962,7 +980,7 @@ watch(
|
|
|
962
980
|
color: $dark
|
|
963
981
|
font-size: $ba
|
|
964
982
|
font-weight: 400
|
|
965
|
-
line-height: 1.
|
|
983
|
+
line-height: 1.188rem !important
|
|
966
984
|
word-break: break-word
|
|
967
985
|
|
|
968
986
|
.q-table__grid-content
|
|
@@ -1004,7 +1022,7 @@ watch(
|
|
|
1004
1022
|
color: $dark
|
|
1005
1023
|
font-size: 1rem
|
|
1006
1024
|
font-weight: 500
|
|
1007
|
-
line-height: 1.
|
|
1025
|
+
line-height: 1.063rem
|
|
1008
1026
|
width: 12.5rem
|
|
1009
1027
|
|
|
1010
1028
|
.u-sticky-table-header
|
|
@@ -1148,14 +1166,22 @@ watch(
|
|
|
1148
1166
|
box-shadow: 3px 4px 5px -3px rgba(0, 0, 0, 0.2)
|
|
1149
1167
|
|
|
1150
1168
|
.mobile-tail-top
|
|
1151
|
-
|
|
1169
|
+
right: 1.304rem !important
|
|
1152
1170
|
|
|
1153
1171
|
.mobile-tail-bottom
|
|
1154
|
-
|
|
1172
|
+
right: 1.304rem !important
|
|
1155
1173
|
|
|
1156
1174
|
.grid-row-pagination
|
|
1157
1175
|
.u-pagination-container
|
|
1158
1176
|
flex-wrap: nowrap
|
|
1177
|
+
.q-pagination__middle
|
|
1178
|
+
flex-wrap: nowrap
|
|
1179
|
+
|
|
1180
|
+
.small-device-pagination
|
|
1181
|
+
.u-pagination-container
|
|
1182
|
+
flex-wrap: wrap
|
|
1183
|
+
gap: $xs
|
|
1184
|
+
justify-content: flex-end
|
|
1159
1185
|
|
|
1160
1186
|
.mobile-grid-more-action
|
|
1161
1187
|
padding: 0px !important
|
|
@@ -57,6 +57,10 @@ const props = defineProps({
|
|
|
57
57
|
type: String,
|
|
58
58
|
default: 'Remove File',
|
|
59
59
|
},
|
|
60
|
+
selectFileBtnDisable: {
|
|
61
|
+
type: Boolean,
|
|
62
|
+
default: false,
|
|
63
|
+
},
|
|
60
64
|
selectFileBtnLabel: {
|
|
61
65
|
type: String,
|
|
62
66
|
default: 'Choose File',
|
|
@@ -162,6 +166,7 @@ defineExpose({ upload })
|
|
|
162
166
|
class="q-mt-md"
|
|
163
167
|
color="primary"
|
|
164
168
|
dataTestId="select-file-btn"
|
|
169
|
+
:disable="selectFileBtnDisable"
|
|
165
170
|
:full-width="true"
|
|
166
171
|
:label="selectFileBtnLabel"
|
|
167
172
|
size="lg"
|
|
@@ -169,8 +174,9 @@ defineExpose({ upload })
|
|
|
169
174
|
>
|
|
170
175
|
{{ selectFileBtnLabel }}
|
|
171
176
|
<q-uploader-add-trigger
|
|
177
|
+
v-if="!selectFileBtnDisable"
|
|
172
178
|
:aria-label="selectFileBtnLabel"
|
|
173
|
-
|
|
179
|
+
/>
|
|
174
180
|
</UBtnStd>
|
|
175
181
|
<UBtnStd
|
|
176
182
|
v-if="scope.canUpload && showUploadBtn"
|
|
@@ -471,6 +477,8 @@ defineExpose({ upload })
|
|
|
471
477
|
.q-uploader
|
|
472
478
|
width: auto !important
|
|
473
479
|
max-height: unset !important
|
|
480
|
+
.q-uploader__list
|
|
481
|
+
background: $neutral-2
|
|
474
482
|
.uploader-list
|
|
475
483
|
background: $neutral-2
|
|
476
484
|
border-radius: $xs
|
|
@@ -57,7 +57,7 @@ $caption-xs: (size: 0.688rem, line-height: 1.25rem, letter-spacing: .03333rem,
|
|
|
57
57
|
|
|
58
58
|
$body-xl: (size: 1.25rem, line-height: 2.5rem, letter-spacing: .03215rem, weight: 400) !default
|
|
59
59
|
$body-lg: (size: 1.125rem, line-height: 1.75rem, letter-spacing: .03215rem, weight: 400) !default
|
|
60
|
-
$body-md: (size: 1.00rem, line-height: 1.
|
|
60
|
+
$body-md: (size: 1.00rem, line-height: 1.188rem, letter-spacing: .01786rem, weight: 400) !default
|
|
61
61
|
$body-sm: (size: 0.875rem, line-height: 1.5rem, letter-spacing: .01786rem, weight: 400) !default
|
|
62
62
|
$body-xs: (size: 0.75rem, line-height: 1.25rem, letter-spacing: .01786rem, weight: 400) !default
|
|
63
63
|
$body-xxs: (size: 0.688rem, line-height: 1.25rem, letter-spacing: .01786rem, weight: 400) !default
|
|
@@ -71,8 +71,8 @@ $heading-xxxl: (size: 3rem, line-height: 3.75rem, letter-spacing: -0.0156
|
|
|
71
71
|
$heading-xxl: (size: 2.5rem, line-height: 3.125rem, letter-spacing: 0rem, weight: 700) !default
|
|
72
72
|
$heading-xl: (size: 2.0rem, line-height: 2.5rem, letter-spacing: 0rem, weight: 700) !default
|
|
73
73
|
$heading-lg: (size: 1.75rem, line-height: 2.188rem, letter-spacing: .00714rem, weight: 700) !default
|
|
74
|
-
$heading-md: (size: 1.5rem, line-height: 1.
|
|
75
|
-
$heading-sm: (size: 1.25rem, line-height:
|
|
74
|
+
$heading-md: (size: 1.5rem, line-height: 1.5rem, letter-spacing: .00714rem, weight: 700) !default
|
|
75
|
+
$heading-sm: (size: 1.25rem, line-height: 1.5rem, letter-spacing: 0rem, weight: 700) !default
|
|
76
76
|
$heading-xs: (size: 1.125rem, line-height: 1.406rem, letter-spacing: .0125rem, weight: 700) !default
|
|
77
77
|
$heading-xxs: (size: 1.0rem, line-height: 1.5rem, letter-spacing: .0125rem, weight: 700) !default
|
|
78
78
|
|