@usssa/component-library 1.0.0-alpha.1 → 1.0.0-alpha.10

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 (93) hide show
  1. package/README.md +15 -37
  2. package/package.json +3 -7
  3. package/src/components/ComponentLink.vue +26 -0
  4. package/src/components/core/UAvatar.vue +146 -0
  5. package/src/components/core/UAvatarGroup.vue +119 -0
  6. package/src/components/core/UBadgeStd.vue +91 -0
  7. package/src/components/core/UBannerStd.vue +113 -0
  8. package/src/components/core/UBtnIcon.vue +148 -0
  9. package/src/components/core/UBtnStd.vue +125 -0
  10. package/src/components/core/UCheckboxStd.vue +78 -0
  11. package/src/components/core/UChip.vue +225 -0
  12. package/src/components/core/UInputTextStd.vue +270 -0
  13. package/src/components/core/UMultiSelectStd.vue +268 -0
  14. package/src/components/core/URadioStd.vue +58 -0
  15. package/src/components/core/USelectStd.vue +235 -0
  16. package/src/components/core/UTabBtnStd.vue +153 -0
  17. package/src/components/core/UTabsStd.vue +99 -0
  18. package/src/components/core/UToggleStd.vue +149 -0
  19. package/src/components/core/UTooltip.vue +52 -0
  20. package/src/components/index.js +24 -0
  21. package/dist/spa/assets/Avatar.45667392.js +0 -9
  22. package/dist/spa/assets/AvatarGroup.99557443.js +0 -9
  23. package/dist/spa/assets/AvatarGroup.bb4cd03a.css +0 -1
  24. package/dist/spa/assets/BadgeStd.ee4129c5.js +0 -6
  25. package/dist/spa/assets/BannerPage.6c6a98c4.js +0 -10
  26. package/dist/spa/assets/BannerPage.d195fcac.css +0 -1
  27. package/dist/spa/assets/BtnIcon.89e50d2e.css +0 -1
  28. package/dist/spa/assets/BtnIcon.934f8c5b.js +0 -10
  29. package/dist/spa/assets/BtnStd.95fc4510.js +0 -11
  30. package/dist/spa/assets/CheckBox.3c204a4b.css +0 -1
  31. package/dist/spa/assets/CheckBox.fbc0bd1a.js +0 -7
  32. package/dist/spa/assets/Chip.49ffc857.js +0 -11
  33. package/dist/spa/assets/Chip.74acaa33.css +0 -1
  34. package/dist/spa/assets/ComponentBase.1ae19b7e.js +0 -1
  35. package/dist/spa/assets/ErrorNotFound.6cccfaee.js +0 -1
  36. package/dist/spa/assets/IndexPage.17d09b76.js +0 -1
  37. package/dist/spa/assets/InputText.19c0d7d1.css +0 -1
  38. package/dist/spa/assets/InputText.3fcd97a4.js +0 -20
  39. package/dist/spa/assets/KFOkCnqEu92Fr1MmgVxIIzQ.34e9582c.woff +0 -0
  40. package/dist/spa/assets/KFOlCnqEu92Fr1MmEU9fBBc-.9ce7f3ac.woff +0 -0
  41. package/dist/spa/assets/KFOlCnqEu92Fr1MmSU5fBBc-.bf14c7d7.woff +0 -0
  42. package/dist/spa/assets/KFOlCnqEu92Fr1MmWUlfBBc-.e0fd57c0.woff +0 -0
  43. package/dist/spa/assets/KFOlCnqEu92Fr1MmYUtfBBc-.f6537e32.woff +0 -0
  44. package/dist/spa/assets/KFOmCnqEu92Fr1Mu4mxM.f2abf7fb.woff +0 -0
  45. package/dist/spa/assets/MainLayout.912bb0f8.js +0 -1
  46. package/dist/spa/assets/MultiSelectStd.644b108c.js +0 -17
  47. package/dist/spa/assets/MultiSelectStd.c7af49eb.css +0 -1
  48. package/dist/spa/assets/QAvatar.5940a79e.js +0 -1
  49. package/dist/spa/assets/QCheckbox.48b43f7d.js +0 -1
  50. package/dist/spa/assets/QPage.ca395ec4.js +0 -1
  51. package/dist/spa/assets/QRadio.0a7f5e2c.js +0 -1
  52. package/dist/spa/assets/QResizeObserver.30c3566c.js +0 -1
  53. package/dist/spa/assets/QSelect.a40eb786.js +0 -1
  54. package/dist/spa/assets/QTabs.72f2507e.js +0 -1
  55. package/dist/spa/assets/QToggle.376c48be.js +0 -1
  56. package/dist/spa/assets/QTooltip.5aa8e325.js +0 -1
  57. package/dist/spa/assets/Radio.0ac35288.js +0 -7
  58. package/dist/spa/assets/Radio.aca54a89.css +0 -1
  59. package/dist/spa/assets/SelectStd.5c6891db.css +0 -1
  60. package/dist/spa/assets/SelectStd.daf1def9.js +0 -16
  61. package/dist/spa/assets/TabButtonPage.20e871dd.js +0 -7
  62. package/dist/spa/assets/TabButtonPage.36ce9f9c.css +0 -1
  63. package/dist/spa/assets/TabsPage.9b94ff39.css +0 -1
  64. package/dist/spa/assets/TabsPage.b92cccee.js +0 -9
  65. package/dist/spa/assets/TogglePage.8129b631.css +0 -1
  66. package/dist/spa/assets/TogglePage.ba6e325c.js +0 -9
  67. package/dist/spa/assets/UAvatar.dda7e478.js +0 -1
  68. package/dist/spa/assets/UAvatar.ea8daa38.css +0 -1
  69. package/dist/spa/assets/UBadgeStd.3965db9a.css +0 -1
  70. package/dist/spa/assets/UBadgeStd.e165ee05.js +0 -1
  71. package/dist/spa/assets/UBtnStd.979ec4e8.js +0 -1
  72. package/dist/spa/assets/UBtnStd.bdd4f5e5.css +0 -1
  73. package/dist/spa/assets/UTooltip.d2e04d0c.js +0 -1
  74. package/dist/spa/assets/UTooltip.efa029a7.css +0 -1
  75. package/dist/spa/assets/dom.e9d4ad51.js +0 -1
  76. package/dist/spa/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.fd84f88b.woff +0 -0
  77. package/dist/spa/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.4a4dbc62.woff2 +0 -0
  78. package/dist/spa/assets/format.41663636.js +0 -1
  79. package/dist/spa/assets/index.43c62a18.js +0 -21
  80. package/dist/spa/assets/index.4fbd73cf.css +0 -5
  81. package/dist/spa/assets/option-sizes.10cc02d3.js +0 -1
  82. package/dist/spa/assets/render.e67ff27a.js +0 -1
  83. package/dist/spa/assets/tooltip.7c0d0774.js +0 -8
  84. package/dist/spa/assets/touch.9135741d.js +0 -1
  85. package/dist/spa/assets/use-checkbox.44a623c0.js +0 -1
  86. package/dist/spa/favicon.ico +0 -0
  87. package/dist/spa/icons/caret-down.svg +0 -5
  88. package/dist/spa/icons/circle-xmark.svg +0 -6
  89. package/dist/spa/icons/favicon-128x128.png +0 -0
  90. package/dist/spa/icons/favicon-16x16.png +0 -0
  91. package/dist/spa/icons/favicon-32x32.png +0 -0
  92. package/dist/spa/icons/favicon-96x96.png +0 -0
  93. package/dist/spa/index.html +0 -3
@@ -0,0 +1,270 @@
1
+ <script setup>
2
+ import { computed } from 'vue'
3
+ import UTooltip from './UTooltip.vue'
4
+ const props = defineProps({
5
+ modelValue: {
6
+ type: [String, null],
7
+ required: true,
8
+ default: '',
9
+ },
10
+ hintText: {
11
+ type: String,
12
+ },
13
+ hintIcon: {
14
+ type: String,
15
+ default: 'fa-kit-duotone fa-circle-info',
16
+ },
17
+ isRequired: {
18
+ type: Boolean,
19
+ default: false,
20
+ },
21
+ label: {
22
+ type: String,
23
+ },
24
+ leftIcon: {
25
+ type: String,
26
+ },
27
+ rightIcon: {
28
+ type: String,
29
+ },
30
+ outlined: {
31
+ type: Boolean,
32
+ default: true,
33
+ },
34
+ borderless: {
35
+ type: Boolean,
36
+ default: false,
37
+ },
38
+ placeholder: {
39
+ type: String,
40
+ default: 'Input Text',
41
+ },
42
+ size: {
43
+ type: String,
44
+ default: 'md',
45
+ validator: (val) => ['sm', 'md', 'lg'].includes(val),
46
+ },
47
+ toolTipText: {
48
+ type: String,
49
+ },
50
+ validationRules: {
51
+ type: Array,
52
+ },
53
+ readonly: {
54
+ type: Boolean,
55
+ default: false,
56
+ },
57
+ disable: {
58
+ type: Boolean,
59
+ default: false,
60
+ },
61
+ error: {
62
+ type: Boolean,
63
+ },
64
+ errorMessage: {
65
+ type: String,
66
+ },
67
+ leftBorderRadius: {
68
+ type: Boolean,
69
+ default: false,
70
+ },
71
+ })
72
+
73
+ const leftBorderRadius = computed(() => {
74
+ if (props.leftBorderRadius === true) {
75
+ return 'leftBorderRadius'
76
+ }
77
+ return ''
78
+ })
79
+ </script>
80
+
81
+ <template>
82
+ <div class="q-gutter-xs q-pb-ms">
83
+ <div>
84
+ <label
85
+ v-if="label"
86
+ role="label"
87
+ for="input"
88
+ class="row items-center q-mb-xxs"
89
+ >
90
+ <div class="u-input-label text-body-sm">
91
+ {{ label }}
92
+ <span class="text-red-5 text-body-sm q-mx-xxs" v-if="isRequired">
93
+ *
94
+ </span>
95
+ </div>
96
+ <q-icon
97
+ class="q-ml-xxs fa-kit-duotone fa-circle-info cursor-pointer"
98
+ v-if="toolTipText"
99
+ size="1rem"
100
+ color="neutral-9"
101
+ :aria-label="toolTipText"
102
+ >
103
+ <UTooltip
104
+ :description="toolTipText"
105
+ anchor="top middle"
106
+ self="bottom middle"
107
+ :offset="[0, 0]"
108
+ />
109
+ </q-icon>
110
+ </label>
111
+ <q-input
112
+ id="input"
113
+ class="u-input"
114
+ :class="`field-${size} ${leftBorderRadius}`"
115
+ :modelValue="modelValue"
116
+ name="input"
117
+ :outlined="outlined"
118
+ :placeholder="placeholder"
119
+ :rules="validationRules"
120
+ :standout="!outlined"
121
+ type="text"
122
+ @update:modelValue="$emit('update:modelValue', $event)"
123
+ :bottom-slots="!!hintText"
124
+ hide-bottom-space
125
+ :readonly="readonly"
126
+ :disable="disable"
127
+ :borderless="borderless"
128
+ :error="error"
129
+ v-bind="$attrs"
130
+ >
131
+ <template #prepend v-if="leftIcon">
132
+ <q-icon :class="`slot-icon-size-${size} ${leftIcon}`" />
133
+ </template>
134
+ <template #hint v-if="hintText">
135
+ <div class="row items-center text-neutral-9 no-wrap">
136
+ <q-icon
137
+ :class="hintIcon"
138
+ v-if="hintIcon"
139
+ size="1rem"
140
+ :aria-label="hintText"
141
+ />
142
+ <div class="q-ml-xxs text-body-xs">{{ hintText }}</div>
143
+ </div>
144
+ </template>
145
+ <template #append v-if="rightIcon">
146
+ <q-icon :class="`slot-icon-size-${size} ${rightIcon}`" />
147
+ </template>
148
+
149
+ <template v-slot:error>
150
+ <div class="row items-center no-wrap">
151
+ <q-icon
152
+ class="fa-kit-duotone fa-warning-octagon"
153
+ size="1rem"
154
+ :aria-label="errorMessage"
155
+ />
156
+ <div class="q-ml-xxs text-body-xs" role="validation error">
157
+ {{ errorMessage }}
158
+ </div>
159
+ </div>
160
+ </template>
161
+ </q-input>
162
+ </div>
163
+ </div>
164
+ </template>
165
+
166
+ <style lang="sass">
167
+ .u-input
168
+ .q-field--with-bottom
169
+ padding-bottom: 0px
170
+ &.q-field--outlined.q-field--disabled .q-field__control
171
+ background: $neutral-3
172
+ &.leftBorderRadius
173
+ &.q-field--outlined .q-field__control
174
+ border-radius: 0px $xs $xs 0px
175
+ &.q-field--borderless
176
+ .q-field__control
177
+ border-radius: 0px $xs $xs 0px
178
+
179
+ .q-field__inner
180
+ border-radius: $xs
181
+
182
+ &.q-field--borderless
183
+ .q-field__control
184
+ padding: 0 $xs
185
+ background: $neutral-1
186
+ border-radius: $xs
187
+ &:hover
188
+ box-shadow : 0px 0px 0px 2px $primary-transparent
189
+
190
+ .q-field--standout .q-field__control
191
+ border-radius: $xs
192
+
193
+ .q-field__append.q-field__marginal.row.no-wrap.items-center.q-anchor--skip
194
+ display: none
195
+
196
+ .q-field__before,
197
+ .q-field__prepend
198
+ padding: 0 $xs
199
+ padding-left: 0
200
+
201
+ .q-field__after,
202
+ .q-field__append
203
+ padding-left: $xs
204
+
205
+ .q-icon
206
+ &.slot-icon-size-sm
207
+ font-size: $sm
208
+ &.slot-icon-size-md
209
+ font-size: $ba
210
+ &.slot-icon-size-lg
211
+ font-size: $ba
212
+
213
+ &.q-field--auto-height .q-field__control,
214
+ &.q-field--auto-height .q-field__native
215
+ min-height: $md
216
+
217
+ &.q-field--outlined .q-field__control
218
+ border-radius: $xs
219
+ padding: 0 $xs
220
+ background: $neutral-1
221
+
222
+ &::before
223
+ border:1.5px solid $neutral-4
224
+
225
+ &:hover::before
226
+ border:1.5px solid $primary
227
+
228
+ .q-field__control.relative-position.row.no-wrap.text-negative:focus-within
229
+ box-shadow: 0px 0px 0px 2px $accent-transparent
230
+
231
+ .q-field__control:focus-within
232
+ box-shadow : 0px 0px 0px 2px $primary-transparent
233
+
234
+ &.field-sm
235
+ .q-field__control,
236
+ .q-field__marginal
237
+ height: $md
238
+ &.q-field--outlined.q-field__control
239
+ padding: 0 $xs
240
+
241
+ &.q-field__prepend .q-field__marginal
242
+ padding: 0 $xs
243
+
244
+ &.field-md
245
+ .q-field__control,
246
+ .q-field__marginal
247
+ height: $lg
248
+ &.q-field--outlined.q-field__control
249
+ padding: 0 $xs
250
+
251
+ &.q-field__prepend.q-field__marginal
252
+ padding: 0 $xs
253
+ padding-left: 0
254
+
255
+ &.field-lg
256
+ .q-field__control,
257
+ .q-field__marginal
258
+ height: $xl
259
+ &.q-field--outlined .q-field__control
260
+ padding: 0 $sm
261
+ .q-field__prepend.q-field__marginal
262
+ padding-left: 0px
263
+
264
+ .q-field__bottom
265
+ padding: 0
266
+ align-items: center
267
+
268
+ .q-field__messages
269
+ margin-top: $xxs
270
+ </style>
@@ -0,0 +1,268 @@
1
+ <script setup>
2
+ const props = defineProps({
3
+ modelValue: {
4
+ type: [Array, String, null],
5
+ required: true,
6
+ },
7
+ color: {
8
+ type: String,
9
+ default: 'neutral-7',
10
+ },
11
+ hintText: {
12
+ type: String,
13
+ },
14
+ hintIcon: {
15
+ type: String,
16
+ default: 'fa-kit-duotone fa-triangle-exclamation',
17
+ },
18
+ isRequired: {
19
+ type: Boolean,
20
+ default: false,
21
+ },
22
+ label: {
23
+ type: String,
24
+ default: 'Label',
25
+ },
26
+ leftIcon: {
27
+ type: String,
28
+ },
29
+ options: {
30
+ type: Array,
31
+ required: true,
32
+ },
33
+ placeholder: {
34
+ type: String,
35
+ default: 'Select',
36
+ },
37
+ size: {
38
+ type: String,
39
+ default: 'md',
40
+ validator: (val) => ['sm', 'md', 'lg'].includes(val),
41
+ },
42
+ toolTipText: {
43
+ type: String,
44
+ },
45
+ updateFn: {
46
+ type: Function,
47
+ required: true,
48
+ },
49
+ filterFn: {
50
+ type: Function,
51
+ required: false,
52
+ },
53
+ useInput: {
54
+ type: Boolean,
55
+ required: false,
56
+ },
57
+ multiSelect: {
58
+ type: Boolean,
59
+ default: true,
60
+ },
61
+ noSearchText: {
62
+ type: String,
63
+ required: false,
64
+ },
65
+ optionValue: {
66
+ type: String,
67
+ default: 'value',
68
+ },
69
+ optionLabel: {
70
+ type: String,
71
+ default: 'label',
72
+ },
73
+ })
74
+ </script>
75
+
76
+ <template>
77
+ <div class="q-gutter-xs">
78
+ <label for="select" class="row items-center">
79
+ <div class="u-select-label text-body-sm">
80
+ {{ label }}
81
+ <span class="text-red-5 q-ml-xs" v-if="isRequired">*</span>
82
+ </div>
83
+
84
+ <q-icon
85
+ class="q-ml-xs fa-kit-duotone fa-circle-info cursor-pointer"
86
+ v-if="toolTipText"
87
+ size="1rem"
88
+ color="neutral-9"
89
+ aria-hidden="true"
90
+ >
91
+ <q-tooltip anchor="top right" self="top left" :offset="[0, 24]">
92
+ {{ toolTipText }}
93
+ </q-tooltip>
94
+ </q-icon>
95
+ </label>
96
+ <q-select
97
+ class="u-select"
98
+ id="select"
99
+ :class="`field-${size}`"
100
+ :modelValue="modelValue"
101
+ :color="color"
102
+ multiple
103
+ :options="options"
104
+ :use-input="useInput"
105
+ :option-label="optionLabel"
106
+ :option-value="optionValue"
107
+ :placeholder="placeholder"
108
+ dropdown-icon="img:icons/caret-down.svg"
109
+ bottom-slots
110
+ outlined
111
+ hide-bottom-space
112
+ use-chips
113
+ :menu-offset="[0, 5]"
114
+ options-selected-class="primary bg-blue-1"
115
+ popup-content-class="u-options-menu"
116
+ v-bind="$attrs"
117
+ @add="
118
+ (details) =>
119
+ updateFn({
120
+ ...details,
121
+ multiSelect,
122
+ })
123
+ "
124
+ @remove="
125
+ (details) =>
126
+ updateFn({
127
+ remove: true,
128
+ ...details,
129
+ })
130
+ "
131
+ @update:model-value="(val) => updateFn(val)"
132
+ @filter="filterFn"
133
+ >
134
+ <template v-slot:no-option>
135
+ <q-item>
136
+ <q-item-section class="text-grey">
137
+ {{ noSearchText }}
138
+ </q-item-section>
139
+ </q-item>
140
+ </template>
141
+
142
+ <template v-if="leftIcon" v-slot:prepend>
143
+ <q-icon :class="leftIcon" size="16px" />
144
+ </template>
145
+
146
+ <template v-if="hintText" v-slot:hint>
147
+ <div class="row no-wrap items-center">
148
+ <q-icon :class="hintIcon" size="1rem" />
149
+
150
+ <div class="q-mx-xxs text-body-xs">
151
+ {{ hintText }}
152
+ </div>
153
+ </div>
154
+ </template>
155
+
156
+ <template v-slot:option="scope">
157
+ <q-item class="items-center u-custom-option" v-bind="scope.itemProps">
158
+ <div class="q-pr-xs" v-if="scope.opt.icon">
159
+ <q-icon :class="scope.opt.icon" color="neutral-13" size="1rem" />
160
+ </div>
161
+
162
+ <q-item-section>
163
+ <q-item-label class="text-body-sm">
164
+ {{ scope.opt.label }}
165
+ </q-item-label>
166
+ <q-item-label caption v-if="scope.opt.description">
167
+ {{ scope.opt.description }}
168
+ </q-item-label>
169
+ </q-item-section>
170
+
171
+ <q-item-section v-if="scope.selected" side>
172
+ <q-icon
173
+ class="fa-kit-duotone fa-circle-check"
174
+ color="primary"
175
+ size="$ba"
176
+ />
177
+ </q-item-section>
178
+ </q-item>
179
+ </template>
180
+ <template v-slot:selected-item="scope">
181
+ <q-chip
182
+ removable
183
+ @remove="scope.removeAtIndex(scope.index)"
184
+ :tabindex="scope.tabindex"
185
+ color="neutral-3"
186
+ class="u-chip text-overline-sm text-uppercase"
187
+ icon-remove="img:icons/circle-xmark.svg"
188
+ >
189
+ {{ scope.opt.label }}
190
+ </q-chip>
191
+ </template>
192
+ </q-select>
193
+ </div>
194
+ </template>
195
+
196
+ <style lang="sass">
197
+ .u-select
198
+ &.q-field--auto-height .q-field__control,
199
+ &.q-field--auto-height .q-field__native
200
+ min-height: $md
201
+ align-items: center
202
+
203
+ &.q-field--outlined .q-field__control
204
+ border-radius: $xs
205
+ padding: 0 $xs
206
+
207
+ &::before
208
+ background: white
209
+ border: 1.5px solid $neutral-4
210
+
211
+ &.field-sm
212
+ .q-field__marginal
213
+ height: $md
214
+
215
+ &.field-md
216
+ .q-field__marginal
217
+ height: $lg
218
+
219
+ &.field-lg
220
+ .q-field__marginal
221
+ height: $xl
222
+
223
+ &:hover .q-field__control::before
224
+ border: 1.5px solid $primary
225
+
226
+ &.q-field--with-bottom
227
+ padding-bottom: 0
228
+
229
+ .q-field__control:focus-within
230
+ box-shadow : 0 0 0 2px rgba(35, 75, 169, .20)
231
+
232
+ .q-field__bottom
233
+ padding: 4px 0 0 0
234
+
235
+ .q-chip__content
236
+ color: $neutral-9
237
+
238
+ .q-field__prepend
239
+ padding-right: $xs
240
+
241
+ .u-options-menu
242
+ border-radius: $xs
243
+ box-shadow: 0px 0px 4px 0px rgba(16, 17, 20, 0.08)
244
+ max-height: 11.25rem !important
245
+ width: 18rem
246
+ overflow-y: auto
247
+ scrollbar-width: none
248
+
249
+ .no-option-menu
250
+ border-radius: $xs
251
+ box-shadow: 0px 0px 4px 0px rgba(16, 17, 20, 0.08)
252
+ height: 3.125rem
253
+
254
+ .u-custom-option
255
+ margin: $xxs
256
+ border-radius: $xxs
257
+ padding: $xs
258
+ min-height: $lg
259
+
260
+ .u-chip
261
+ min-height: $ms
262
+
263
+ .q-icon
264
+ font-size: 0.75rem
265
+
266
+ .q-chip__icon--remove
267
+ margin-left: $xs
268
+ </style>
@@ -0,0 +1,58 @@
1
+ <script setup>
2
+ import { onMounted } from 'vue'
3
+
4
+ const props = defineProps({
5
+ label: {
6
+ type: String,
7
+ default: 'Radio',
8
+ },
9
+ value: {
10
+ type: String,
11
+ },
12
+ disable: {
13
+ type: Boolean,
14
+ default: false,
15
+ },
16
+ id: {
17
+ type: [String, Number],
18
+ default: 'u-radio',
19
+ required: true, // it is required for to match accessibility crieteria
20
+ },
21
+ })
22
+ onMounted(() => {
23
+ const radioElement = document.getElementById(props.id)
24
+ if (radioElement) {
25
+ const inputElement = radioElement.querySelector('input')
26
+ inputElement.id = props.id
27
+ }
28
+ })
29
+
30
+ const radioValue = defineModel()
31
+ </script>
32
+
33
+ <template>
34
+ <label class="hidden" :for="id">Radio</label>
35
+ <q-radio
36
+ v-model="radioValue"
37
+ class="u-radio"
38
+ :val="value"
39
+ color="primary"
40
+ keep-color
41
+ dense
42
+ size="3rem"
43
+ :disable="disable"
44
+ :id="id"
45
+ >
46
+ <div class="text-center text-caption-lg radio-label">
47
+ {{ label }}
48
+ </div>
49
+ </q-radio>
50
+ </template>
51
+
52
+ <style lang="sass">
53
+ .u-radio
54
+ .q-radio__label
55
+ padding-left: $xs !important
56
+ .radio-label
57
+ color: $primary
58
+ </style>