@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 CHANGED
@@ -1,4 +1,4 @@
1
- # Component Library v1.0.0-alpha.141
1
+ # Component Library v1.0.0-alpha.144
2
2
 
3
3
  **This library provides custom UI components for USSSA applications.**
4
4
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usssa/component-library",
3
- "version": "1.0.0-alpha.142",
3
+ "version": "1.0.0-alpha.144",
4
4
  "description": "A Quasar component library project",
5
5
  "productName": "Quasar component library App",
6
6
  "author": "Troy Moreland <troy.moreland@usssa.com>",
@@ -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 dialogMaxHeight = ref(MAX_HEIGHT)
47
- const currentDialogHeight = ref(dialogMaxHeight.value)
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.value.hide() // if user is dragging then it should close from here
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
- smallDevices,
162
- (newData) => {
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
- (newData) => {
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="`col items-center q-pa-none heading-section ${headerClass}${
221
- isMobile ? ' no-heading-section' : ''
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="`full-height main-content-dialog scroll q-px-ba${
277
- isMobile ? ' scrollable-content' : ''
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': `${scrollableMarginHeight + (isMobile ? 16 : 0)}px`,
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() && hasAllActionSlots() ? 144 : 88)) +
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 && hasAllActionSlots() ? ' tablet-full-btn-actions' : ''}`"
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) && hasAllActionSlots()) || hasSlots()
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="`action-buttons${
315
- isMobile || isTablet ? ' full-width-actions' : ''
316
- }${
317
- !isDesktop
318
- ? isMobile && !isSmallWidthDevices
319
- ? ' justify-center mobile-btn-actions'
320
- : !!$slots['action_secondary_one'] ||
321
- !!$slots['action_secondary_two']
322
- ? ' justify-start small-device-class'
323
- : ' justify-end'
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="`action-buttons${
337
- isMobile || isTablet ? ' full-width-actions' : ''
338
- }${
339
- !isDesktop
340
- ? isMobile && !isSmallWidthDevices
341
- ? ' justify-center mobile-btn-actions'
342
- : !!$slots['action_primary_one'] ||
343
- !!$slots['action_primary_two']
344
- ? ' justify-start small-device-class'
345
- : ' justify-end'
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
- padding: $ms $ms
406
- padding-bottom: 0
407
- margin-bottom: $ms !important
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
- padding: $ba $ms !important
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, .tablet-full-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
- width: 100%
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 $sm !important
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
- width: 9.5rem
536
- overflow: hidden
537
- text-overflow: ellipsis
538
- </style>
609
+ </style>
@@ -158,7 +158,7 @@ const handleRightIconClick = () => {
158
158
  <div class="row items-center text-neutral-9 no-wrap">
159
159
  <q-icon
160
160
  v-if="hintIcon"
161
- :class="hintIcon"
161
+ :class="`${hintIcon} icon-secondary-opacity`"
162
162
  :aria-label="hintText"
163
163
  size="1rem"
164
164
  />
@@ -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">{{ description }}</div>
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: 2px solid $neutral-4
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: 2px solid $primary
131
+ border: 0.125rem solid $primary
133
132
 
134
133
  .u-radio-btn:hover
135
- border: 2px solid $primary
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
- height: `${rowCardHeight}rem`,
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="md"
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="md"
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="md"
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 Actions
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 Actions"
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
- updatedRows.length / pagination.rowsPerPage > 10
834
- ? grid
835
- ? 3
836
- : 6
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.313rem !important
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.5rem !important
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.313rem
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
- left: 1.304rem !important
1169
+ right: 1.304rem !important
1152
1170
 
1153
1171
  .mobile-tail-bottom
1154
- left: 1.304rem !important
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
- ></q-uploader-add-trigger>
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.5rem, letter-spacing: .01786rem, weight: 400) !default
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.875rem, letter-spacing: .00714rem, weight: 700) !default
75
- $heading-sm: (size: 1.25rem, line-height: 2rem, letter-spacing: 0rem, weight: 700) !default
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