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

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 (128) hide show
  1. package/README.md +18 -37
  2. package/package.json +17 -6
  3. package/src/assets/files.png +0 -0
  4. package/src/assets/logo.svg +19 -0
  5. package/src/assets/no-result.png +0 -0
  6. package/src/assets/quasar-logo-vertical.svg +15 -0
  7. package/src/components/ComponentLink.vue +26 -0
  8. package/src/components/core/UAvatar.vue +179 -0
  9. package/src/components/core/UAvatarGroup.vue +120 -0
  10. package/src/components/core/UBadgeStd.vue +91 -0
  11. package/src/components/core/UBannerStd.vue +142 -0
  12. package/src/components/core/UBreadCrumbs.vue +67 -0
  13. package/src/components/core/UBtnIcon.vue +158 -0
  14. package/src/components/core/UBtnStd.vue +129 -0
  15. package/src/components/core/UBtnToggle.vue +68 -0
  16. package/src/components/core/UCheckboxStd.vue +95 -0
  17. package/src/components/core/UChip.vue +251 -0
  18. package/src/components/core/UDialogStd.vue +244 -0
  19. package/src/components/core/UDrawer.vue +235 -0
  20. package/src/components/core/UInnerLoader.vue +58 -0
  21. package/src/components/core/UInputAddressLookup.vue +470 -0
  22. package/src/components/core/UInputPhoneStd.vue +299 -0
  23. package/src/components/core/UInputTextStd.vue +299 -0
  24. package/src/components/core/UInputTypeaheadAdvanceSearch.vue +59 -0
  25. package/src/components/core/UMenuButtonStd.vue +274 -0
  26. package/src/components/core/UMenuDropdown.vue +72 -0
  27. package/src/components/core/UMenuDropdownAdvancedSearch.vue +301 -0
  28. package/src/components/core/UMenuItem.vue +134 -0
  29. package/src/components/core/UMenuSearch.vue +752 -0
  30. package/src/components/core/UMultiSelectStd.vue +274 -0
  31. package/src/components/core/UPagination.vue +104 -0
  32. package/src/components/core/URadioBtn.vue +116 -0
  33. package/src/components/core/URadioStd.vue +62 -0
  34. package/src/components/core/USelectStd.vue +250 -0
  35. package/src/components/core/UTabBtnStd.vue +176 -0
  36. package/src/components/core/UTable/UTable.vue +93 -0
  37. package/src/components/core/UTable/UTd.vue +63 -0
  38. package/src/components/core/UTable/UTh.vue +48 -0
  39. package/src/components/core/UTable/UTr.vue +20 -0
  40. package/src/components/core/UTableStd.vue +1003 -0
  41. package/src/components/core/UTabsStd.vue +111 -0
  42. package/src/components/core/UToggleStd.vue +159 -0
  43. package/src/components/core/UToolbar.vue +94 -0
  44. package/src/components/core/UTooltip.vue +73 -0
  45. package/src/components/core/UUploader.vue +497 -0
  46. package/src/components/index.js +75 -0
  47. package/src/composables/useNotify.js +79 -0
  48. package/src/composables/useOverlayLoader.js +23 -0
  49. package/src/css/app.sass +159 -0
  50. package/src/css/colors.sass +101 -0
  51. package/src/css/media.sass +1 -0
  52. package/src/css/quasar.variables.sass +121 -0
  53. package/src/css/typography.sass +0 -0
  54. package/src/css/vars/colors.variables.sass +126 -0
  55. package/src/utils/data.ts +146 -0
  56. package/dist/spa/assets/Avatar.45667392.js +0 -9
  57. package/dist/spa/assets/AvatarGroup.99557443.js +0 -9
  58. package/dist/spa/assets/AvatarGroup.bb4cd03a.css +0 -1
  59. package/dist/spa/assets/BadgeStd.ee4129c5.js +0 -6
  60. package/dist/spa/assets/BannerPage.6c6a98c4.js +0 -10
  61. package/dist/spa/assets/BannerPage.d195fcac.css +0 -1
  62. package/dist/spa/assets/BtnIcon.89e50d2e.css +0 -1
  63. package/dist/spa/assets/BtnIcon.934f8c5b.js +0 -10
  64. package/dist/spa/assets/BtnStd.95fc4510.js +0 -11
  65. package/dist/spa/assets/CheckBox.3c204a4b.css +0 -1
  66. package/dist/spa/assets/CheckBox.fbc0bd1a.js +0 -7
  67. package/dist/spa/assets/Chip.49ffc857.js +0 -11
  68. package/dist/spa/assets/Chip.74acaa33.css +0 -1
  69. package/dist/spa/assets/ComponentBase.1ae19b7e.js +0 -1
  70. package/dist/spa/assets/ErrorNotFound.6cccfaee.js +0 -1
  71. package/dist/spa/assets/IndexPage.17d09b76.js +0 -1
  72. package/dist/spa/assets/InputText.19c0d7d1.css +0 -1
  73. package/dist/spa/assets/InputText.3fcd97a4.js +0 -20
  74. package/dist/spa/assets/KFOkCnqEu92Fr1MmgVxIIzQ.34e9582c.woff +0 -0
  75. package/dist/spa/assets/KFOlCnqEu92Fr1MmEU9fBBc-.9ce7f3ac.woff +0 -0
  76. package/dist/spa/assets/KFOlCnqEu92Fr1MmSU5fBBc-.bf14c7d7.woff +0 -0
  77. package/dist/spa/assets/KFOlCnqEu92Fr1MmWUlfBBc-.e0fd57c0.woff +0 -0
  78. package/dist/spa/assets/KFOlCnqEu92Fr1MmYUtfBBc-.f6537e32.woff +0 -0
  79. package/dist/spa/assets/KFOmCnqEu92Fr1Mu4mxM.f2abf7fb.woff +0 -0
  80. package/dist/spa/assets/MainLayout.912bb0f8.js +0 -1
  81. package/dist/spa/assets/MultiSelectStd.644b108c.js +0 -17
  82. package/dist/spa/assets/MultiSelectStd.c7af49eb.css +0 -1
  83. package/dist/spa/assets/QAvatar.5940a79e.js +0 -1
  84. package/dist/spa/assets/QCheckbox.48b43f7d.js +0 -1
  85. package/dist/spa/assets/QPage.ca395ec4.js +0 -1
  86. package/dist/spa/assets/QRadio.0a7f5e2c.js +0 -1
  87. package/dist/spa/assets/QResizeObserver.30c3566c.js +0 -1
  88. package/dist/spa/assets/QSelect.a40eb786.js +0 -1
  89. package/dist/spa/assets/QTabs.72f2507e.js +0 -1
  90. package/dist/spa/assets/QToggle.376c48be.js +0 -1
  91. package/dist/spa/assets/QTooltip.5aa8e325.js +0 -1
  92. package/dist/spa/assets/Radio.0ac35288.js +0 -7
  93. package/dist/spa/assets/Radio.aca54a89.css +0 -1
  94. package/dist/spa/assets/SelectStd.5c6891db.css +0 -1
  95. package/dist/spa/assets/SelectStd.daf1def9.js +0 -16
  96. package/dist/spa/assets/TabButtonPage.20e871dd.js +0 -7
  97. package/dist/spa/assets/TabButtonPage.36ce9f9c.css +0 -1
  98. package/dist/spa/assets/TabsPage.9b94ff39.css +0 -1
  99. package/dist/spa/assets/TabsPage.b92cccee.js +0 -9
  100. package/dist/spa/assets/TogglePage.8129b631.css +0 -1
  101. package/dist/spa/assets/TogglePage.ba6e325c.js +0 -9
  102. package/dist/spa/assets/UAvatar.dda7e478.js +0 -1
  103. package/dist/spa/assets/UAvatar.ea8daa38.css +0 -1
  104. package/dist/spa/assets/UBadgeStd.3965db9a.css +0 -1
  105. package/dist/spa/assets/UBadgeStd.e165ee05.js +0 -1
  106. package/dist/spa/assets/UBtnStd.979ec4e8.js +0 -1
  107. package/dist/spa/assets/UBtnStd.bdd4f5e5.css +0 -1
  108. package/dist/spa/assets/UTooltip.d2e04d0c.js +0 -1
  109. package/dist/spa/assets/UTooltip.efa029a7.css +0 -1
  110. package/dist/spa/assets/dom.e9d4ad51.js +0 -1
  111. package/dist/spa/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.fd84f88b.woff +0 -0
  112. package/dist/spa/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.4a4dbc62.woff2 +0 -0
  113. package/dist/spa/assets/format.41663636.js +0 -1
  114. package/dist/spa/assets/index.43c62a18.js +0 -21
  115. package/dist/spa/assets/index.4fbd73cf.css +0 -5
  116. package/dist/spa/assets/option-sizes.10cc02d3.js +0 -1
  117. package/dist/spa/assets/render.e67ff27a.js +0 -1
  118. package/dist/spa/assets/tooltip.7c0d0774.js +0 -8
  119. package/dist/spa/assets/touch.9135741d.js +0 -1
  120. package/dist/spa/assets/use-checkbox.44a623c0.js +0 -1
  121. package/dist/spa/favicon.ico +0 -0
  122. package/dist/spa/icons/caret-down.svg +0 -5
  123. package/dist/spa/icons/circle-xmark.svg +0 -6
  124. package/dist/spa/icons/favicon-128x128.png +0 -0
  125. package/dist/spa/icons/favicon-16x16.png +0 -0
  126. package/dist/spa/icons/favicon-32x32.png +0 -0
  127. package/dist/spa/icons/favicon-96x96.png +0 -0
  128. package/dist/spa/index.html +0 -3
@@ -0,0 +1,299 @@
1
+ <script setup>
2
+ import UInputTextStd from './UInputTextStd.vue'
3
+
4
+ const props = defineProps({
5
+ ariaLabel:{
6
+ type: String,
7
+ required: true
8
+ },
9
+ hintText: {
10
+ type: String,
11
+ },
12
+ hintIcon: {
13
+ type: String,
14
+ default: 'fa-kit-duotone fa-circle-info',
15
+ },
16
+ isRequired: {
17
+ type: Boolean,
18
+ default: false,
19
+ },
20
+ label: {
21
+ type: String,
22
+ },
23
+ rightIcon: {
24
+ type: String,
25
+ },
26
+ outlined: {
27
+ type: Boolean,
28
+ default: true,
29
+ },
30
+ borderless: {
31
+ type: Boolean,
32
+ default: false,
33
+ },
34
+ placeholder: {
35
+ type: String,
36
+ default: 'Input Text',
37
+ },
38
+ size: {
39
+ type: String,
40
+ default: 'md',
41
+ validator: (val) => ['sm', 'md', 'lg'].includes(val),
42
+ },
43
+ toolTipText: {
44
+ type: String,
45
+ },
46
+ validationRules: {
47
+ type: Array,
48
+ default: () => [(val) => val.length === 10],
49
+ },
50
+ readonly: {
51
+ type: Boolean,
52
+ default: false,
53
+ },
54
+ disable: {
55
+ type: Boolean,
56
+ default: false,
57
+ },
58
+ error: {
59
+ type: Boolean,
60
+ },
61
+ errorMessage: {
62
+ type: String,
63
+ },
64
+ options: {
65
+ type: Array,
66
+ },
67
+ selectedCountry: {
68
+ type: Object,
69
+ },
70
+ mask: {
71
+ type: String,
72
+ default: '##########',
73
+ },
74
+ })
75
+
76
+ const emit = defineEmits(['update-country'])
77
+ const modelValue = defineModel()
78
+
79
+ const selectCountry = (country) => {
80
+ emit('update-country', country)
81
+ }
82
+
83
+ const toLowerCase = (str) => str.toLowerCase()
84
+ </script>
85
+
86
+ <template>
87
+ <UInputTextStd
88
+ v-model="modelValue"
89
+ :borderless="borderless"
90
+ class="phone-input"
91
+ :disable="disable"
92
+ :error="error"
93
+ :error-message="errorMessage"
94
+ :hintText="hintText"
95
+ :hintIcon="hintIcon"
96
+ :label="label"
97
+ :isRequired="isRequired"
98
+ leftIcon="true"
99
+ :mask="mask"
100
+ :outlined="outlined"
101
+ :placeholder="placeholder"
102
+ :readonly="readonly"
103
+ :rightIcon="rightIcon"
104
+ :size="size"
105
+ :toolTipText="toolTipText"
106
+ :validationRules="validationRules"
107
+ >
108
+ <template v-slot:prepend>
109
+ <q-btn-dropdown
110
+ :aria-label="ariaLabel"
111
+ :disable="readonly"
112
+ :class="`btn-field-${size}`"
113
+ class="u-phone-dropdown text-body-sm"
114
+ content-class="u-dropdown-list"
115
+ flat
116
+ menu-anchor="top right"
117
+ menu-self="bottom middle"
118
+ :menu-offset="[30, 5]"
119
+ rounded
120
+ >
121
+ <template #label>
122
+ <q-icon
123
+ :aria-label="selectedCountry.name"
124
+ :class="`fi fi-${toLowerCase(
125
+ selectedCountry.flag
126
+ )} flag-icon q-mr-xs`"
127
+ left
128
+ />
129
+ <label class="selected-code">{{ selectedCountry.code }}</label>
130
+ </template>
131
+
132
+ <q-list class="u-list">
133
+ <q-item
134
+ v-for="country in options"
135
+ class="q-my-xxs"
136
+ clickable
137
+ :key="country.code"
138
+ v-close-popup
139
+ v-ripple
140
+ @click="selectCountry(country)"
141
+ >
142
+ <q-item-section class="flag-section">
143
+ <q-icon
144
+ :aria-label="country.name"
145
+ :class="`fi fi-${toLowerCase(country.flag)} flag-icon q-mr-xs`"
146
+ left
147
+ size="1.25rem"
148
+ />
149
+ </q-item-section>
150
+ <q-item-section>
151
+ <q-item-label class="text-body-sm">
152
+ {{ country.name }}
153
+ </q-item-label>
154
+ </q-item-section>
155
+ </q-item>
156
+ </q-list>
157
+ </q-btn-dropdown>
158
+ </template>
159
+ </UInputTextStd>
160
+ </template>
161
+
162
+ <style lang="sass">
163
+ .selected-code
164
+ width: 1.5rem
165
+ color: $dark
166
+ .u-dropdown-list
167
+ .q-item__section--main
168
+ margin-left: 0px
169
+
170
+ .flag-icon
171
+ width: 1rem
172
+ height: 0.65rem
173
+ .phone-input
174
+ .q-field__control
175
+ &:hover
176
+ .q-btn-dropdown.u-phone-dropdown
177
+ border-right: 1.5px solid $primary
178
+ &.q-field--outlined .q-field__control:before
179
+ transition: none
180
+ .u-phone-dropdown
181
+ background: #6f7d9812
182
+
183
+ &.q-field--error .q-field__control
184
+ &:hover
185
+ .u-phone-dropdown
186
+ border-right: 2px solid $accent
187
+ &.q-field--outlined.q-field--readonly .q-field__control:focus-within::before
188
+ border: 1.5px solid $primary
189
+
190
+ &.q-field--error
191
+ &:hover
192
+ .u-phone-dropdown
193
+ border-right: 2px solid $accent
194
+ .u-phone-dropdown
195
+ border-right: 2px solid $accent
196
+
197
+ &.q-field--borderless
198
+ .q-field__control.relative-position.row.no-wrap.text-negative:focus-within
199
+ .q-btn-dropdown.u-phone-dropdown
200
+ border-right: 2px solid $accent-transparent
201
+ &.field-lg
202
+ &.q-field--outlined .q-field__control
203
+ padding: 0 $sm 0 0
204
+
205
+ .u-list
206
+ width: 15rem
207
+ padding: $xxs
208
+ .q-item
209
+ height: $md
210
+ padding: 0px $xs
211
+ .q-item__section--main
212
+ flex: none
213
+ .u-phone-dropdown
214
+ border-radius: $xs 0px 0px $xs
215
+ border-right: 1.5px solid $neutral-4
216
+ &:hover::before
217
+ border: 0px solid $primary
218
+
219
+ &.q-btn
220
+ height: 2rem
221
+ min-height: 2rem
222
+ padding: 0px $xs
223
+
224
+ &.btn-field-sm
225
+ height: $md
226
+ &.btn-field-md
227
+ height: $lg
228
+ &.btn-field-lg
229
+ height: $xl
230
+
231
+ .q-btn-dropdown__arrow
232
+ width: 1rem
233
+ height: 1rem
234
+
235
+ .phone-input
236
+ .q-field__inner
237
+ border-radius: $xs
238
+ &.q-field--borderless
239
+ .q-field__control
240
+ padding: 0 $xs 0 0
241
+ background: $neutral-1
242
+ border-radius: $xs
243
+ &:hover
244
+ box-shadow : 0px 0px 0px 2px $primary-transparent
245
+ .q-btn-dropdown.u-phone-dropdown
246
+ border-right: 2px solid $neutral-4
247
+ .q-btn-dropdown.u-phone-dropdown
248
+ border-right: none
249
+ &:focus-within
250
+ .q-btn-dropdown.u-phone-dropdown
251
+ border-right: 2px solid $neutral-4
252
+ .q-btn-dropdown.u-phone-dropdown
253
+ border-right: 2px solid transparent
254
+
255
+ .q-field--standout .q-field__control
256
+ border-radius: $xs
257
+
258
+ .q-field__append.q-field__marginal.row.no-wrap.items-center.q-anchor--skip
259
+ display: none
260
+
261
+ .q-field__before,
262
+ .q-field__prepend
263
+ padding: 0 $xs
264
+ padding-left: 0
265
+
266
+ .q-field__after,
267
+ .q-field__append
268
+ padding-left: 0px
269
+
270
+ .q-icon
271
+ &.slot-icon-size-sm
272
+ font-size: $sm
273
+ &.slot-icon-size-md
274
+ font-size: $ba
275
+ &.slot-icon-size-lg
276
+ font-size: $ba
277
+
278
+ &.q-field--auto-height .q-field__control,
279
+ &.q-field--auto-height .q-field__native
280
+ min-height: 2rem
281
+
282
+ &.q-field--outlined .q-field__control
283
+ border-radius: $xs
284
+ padding: 0 $xs 0 0
285
+ background: $neutral-1
286
+ &::before
287
+ border:1.5px solid $neutral-4
288
+ &:hover::before
289
+ border:1.5px solid $primary
290
+
291
+ .q-field__control.relative-position.row.no-wrap.text-negative:focus-within
292
+ box-shadow: 0px 0px 0px 2px $accent-transparent
293
+ .q-btn-dropdown.u-phone-dropdown
294
+ border-right: 2px solid $accent
295
+ .q-field__control:focus-within
296
+ box-shadow : 0px 0px 0px 2px $primary-transparent
297
+ .q-btn-dropdown.u-phone-dropdown
298
+ border-right: 2px solid $primary
299
+ </style>
@@ -0,0 +1,299 @@
1
+ <script setup>
2
+ import { computed } from 'vue'
3
+ import UTooltip from './UTooltip.vue'
4
+
5
+ const emit = defineEmits(['onRightIconClick'])
6
+
7
+ const modelValue = defineModel()
8
+
9
+ defineOptions({
10
+ inheritAttrs: false,
11
+ })
12
+
13
+ const props = defineProps({
14
+ hintText: {
15
+ type: String,
16
+ },
17
+ hintIcon: {
18
+ type: String,
19
+ },
20
+ isRequired: {
21
+ type: Boolean,
22
+ default: false,
23
+ },
24
+ label: {
25
+ type: String,
26
+ },
27
+ leftIcon: {
28
+ type: String,
29
+ },
30
+ rightIcon: {
31
+ type: String,
32
+ },
33
+ outlined: {
34
+ type: Boolean,
35
+ default: true,
36
+ },
37
+ borderless: {
38
+ type: Boolean,
39
+ default: false,
40
+ },
41
+ placeholder: {
42
+ type: String,
43
+ },
44
+ rightIconAriaLabel: {
45
+ type: String,
46
+ },
47
+ size: {
48
+ type: String,
49
+ default: 'md',
50
+ validator: (val) => ['sm', 'md', 'lg'].includes(val),
51
+ },
52
+ toolTipText: {
53
+ type: String,
54
+ },
55
+ validationRules: {
56
+ type: Array,
57
+ },
58
+ readonly: {
59
+ type: Boolean,
60
+ default: false,
61
+ },
62
+ disable: {
63
+ type: Boolean,
64
+ default: false,
65
+ },
66
+ error: {
67
+ type: Boolean,
68
+ },
69
+ errorMessage: {
70
+ type: String,
71
+ },
72
+ leftBorderRadius: {
73
+ type: Boolean,
74
+ default: false,
75
+ },
76
+ parentClass: {
77
+ type: String,
78
+ },
79
+ loading: {
80
+ type: Boolean,
81
+ },
82
+ })
83
+
84
+ const leftBorderRadius = computed(() => {
85
+ if (props.leftBorderRadius === true) {
86
+ return 'leftBorderRadius'
87
+ }
88
+ return ''
89
+ })
90
+
91
+ const handleRightIconClick = () => {
92
+ emit('onRightIconClick')
93
+ }
94
+ </script>
95
+
96
+ <template>
97
+ <div class="q-gutter-xs" :class="parentClass">
98
+ <label
99
+ v-if="label"
100
+ class="row items-center q-mb-xxs"
101
+ for="input"
102
+ role="label"
103
+ >
104
+ <div class="u-input-label text-body-sm">
105
+ <span>{{ label }}</span>
106
+ <span v-if="isRequired" class="text-red-5 text-body-sm q-mx-xs">
107
+ {{ '*' }}
108
+ </span>
109
+ </div>
110
+ <q-icon
111
+ v-if="toolTipText"
112
+ class="fa-kit-duotone fa-circle-info cursor-pointer"
113
+ :aria-label="toolTipText"
114
+ color="neutral-9"
115
+ size="1rem"
116
+ >
117
+ <UTooltip
118
+ anchor="top middle"
119
+ :description="toolTipText"
120
+ :offset="[0, 0]"
121
+ self="bottom middle"
122
+ />
123
+ </q-icon>
124
+ </label>
125
+ <q-input
126
+ v-bind="$attrs"
127
+ v-model="modelValue"
128
+ class="u-input"
129
+ :class="`field-${size} ${leftBorderRadius}`"
130
+ :borderless="borderless"
131
+ :bottom-slots="!!hintText"
132
+ :disable="disable"
133
+ :error="error"
134
+ hide-bottom-space
135
+ id="input"
136
+ name="input"
137
+ :outlined="outlined"
138
+ :placeholder="placeholder"
139
+ :readonly="readonly"
140
+ :rules="validationRules"
141
+ :standout="!outlined"
142
+ type="text"
143
+ >
144
+ <!--Added below line to resolve "Missing form label" accessibility issue -->
145
+ <template class="hidden">{{ label }}</template>
146
+ <template v-if="leftIcon" #prepend>
147
+ <slot name="prepend"></slot>
148
+ <q-icon
149
+ v-if="!$slots.prepend"
150
+ :class="`slot-icon-size-${size} ${leftIcon}`"
151
+ />
152
+ </template>
153
+ <template v-if="hintText" #hint>
154
+ <div class="row items-center text-neutral-9 no-wrap">
155
+ <q-icon
156
+ v-if="hintIcon"
157
+ :class="hintIcon"
158
+ :aria-label="hintText"
159
+ size="1rem"
160
+ />
161
+ <div class="q-ml-xxs text-body-xs">{{ hintText }}</div>
162
+ </div>
163
+ </template>
164
+ <template #append>
165
+ <slot name="append">
166
+ <q-spinner v-if="loading" size="1rem" />
167
+ <q-icon
168
+ v-if="rightIcon"
169
+ :class="`slot-icon-size-${size} ${rightIcon}`"
170
+ :aria-label="
171
+ rightIcon && rightIconAriaLabel
172
+ ? rightIconAriaLabel
173
+ : 'right input icon '
174
+ "
175
+ :tabindex="0"
176
+ @click="handleRightIconClick"
177
+ />
178
+ </slot>
179
+ </template>
180
+ <template v-slot:error>
181
+ <div v-if="errorMessage" class="row items-center no-wrap">
182
+ <q-icon
183
+ class="fa-kit-duotone fa-warning-octagon"
184
+ :aria-label="errorMessage"
185
+ size="1rem"
186
+ />
187
+ <div class="q-ml-xxs text-body-xs" role="validation error">
188
+ {{ errorMessage }}
189
+ </div>
190
+ </div>
191
+ </template>
192
+ </q-input>
193
+ </div>
194
+ </template>
195
+ <style lang="sass">
196
+ .u-input
197
+ .q-field--with-bottom
198
+ padding-bottom: 0px
199
+ &.q-field--outlined.q-field--disabled .q-field__control
200
+ background: $neutral-3
201
+ &.leftBorderRadius
202
+ &.q-field--outlined .q-field__control
203
+ border-radius: 0px $xs $xs 0px
204
+ &.q-field--borderless
205
+ .q-field__control
206
+ border-radius: 0px $xs $xs 0px
207
+
208
+ .q-field__inner
209
+ border-radius: $xs
210
+
211
+ &.q-field--borderless
212
+ .q-field__control
213
+ padding: 0 $xs
214
+ background: $neutral-1
215
+ border-radius: $xs
216
+ &:hover
217
+ box-shadow : 0px 0px 0px 2px $primary-transparent
218
+
219
+ .q-field--standout .q-field__control
220
+ border-radius: $xs
221
+
222
+ .q-field__append.q-field__marginal.row.no-wrap.items-center.q-anchor--skip
223
+ display: none
224
+
225
+ .q-field__before,
226
+ .q-field__prepend
227
+ padding: 0 $xs
228
+ padding-left: 0
229
+
230
+ .q-field__after,
231
+ .q-field__append
232
+ padding-left: $xs
233
+
234
+ .q-icon
235
+ &.slot-icon-size-sm
236
+ font-size: $sm
237
+ &.slot-icon-size-md
238
+ font-size: $ba
239
+ &.slot-icon-size-lg
240
+ font-size: $ba
241
+
242
+ &.q-field--auto-height .q-field__control,
243
+ &.q-field--auto-height .q-field__native
244
+ min-height: $md
245
+
246
+ &.q-field--outlined .q-field__control
247
+ border-radius: $xs
248
+ padding: 0 $xs
249
+ background: $neutral-1
250
+
251
+ &::before
252
+ border:1.5px solid $neutral-4
253
+
254
+ &:hover::before
255
+ border:1.5px solid $primary
256
+
257
+ .q-field__control.relative-position.row.no-wrap.text-negative:focus-within
258
+ box-shadow: 0px 0px 0px 2px $accent-transparent
259
+
260
+ .q-field__control:focus-within
261
+ box-shadow : 0px 0px 0px 2px $primary-transparent
262
+
263
+ &.field-sm
264
+ .q-field__control,
265
+ .q-field__marginal
266
+ height: $md
267
+ &.q-field--outlined.q-field__control
268
+ padding: 0 $xs
269
+
270
+ &.q-field__prepend .q-field__marginal
271
+ padding: 0 $xs
272
+
273
+ &.field-md
274
+ .q-field__control,
275
+ .q-field__marginal
276
+ height: $lg
277
+ &.q-field--outlined.q-field__control
278
+ padding: 0 $xs
279
+
280
+ &.q-field__prepend.q-field__marginal
281
+ padding: 0 $xs
282
+ padding-left: 0
283
+
284
+ &.field-lg
285
+ .q-field__control,
286
+ .q-field__marginal
287
+ height: $xl
288
+ &.q-field--outlined .q-field__control
289
+ padding: 0 $sm
290
+ .q-field__prepend.q-field__marginal
291
+ padding-left: 0px
292
+
293
+ .q-field__bottom
294
+ padding: 0
295
+ align-items: center
296
+
297
+ .q-field__messages
298
+ margin-top: $xxs
299
+ </style>
@@ -0,0 +1,59 @@
1
+ <script setup>
2
+ import { ref } from 'vue'
3
+ import UInputTextStd from './UInputTextStd.vue'
4
+
5
+ const props = defineProps({
6
+ label: {
7
+ type: String,
8
+ },
9
+ searchText: {
10
+ type: String,
11
+ },
12
+ size: {
13
+ type: String,
14
+ default: 'md',
15
+ },
16
+ loading: {
17
+ type: Boolean,
18
+ },
19
+ })
20
+
21
+ const emit = defineEmits(['updateInputVal'])
22
+
23
+ const searchInputRef = ref(null)
24
+
25
+ const updateInputVal = (event) => {
26
+ emit('updateInputVal', event)
27
+ }
28
+ </script>
29
+
30
+ <template>
31
+ <div :class="`input-search size-${size}`">
32
+ <UInputTextStd
33
+ v-bind="$attrs"
34
+ autocorrect="off"
35
+ autocapitalize="off"
36
+ autocomplete="off"
37
+ :aria-label="label"
38
+ :debounce="500"
39
+ :label="label"
40
+ :loading="loading"
41
+ :modelValue="searchText"
42
+ ref="searchInputRef"
43
+ spellcheck="false"
44
+ @update:modelValue="updateInputVal($event)"
45
+ />
46
+
47
+ <slot name="menu"></slot>
48
+ </div>
49
+ </template>
50
+
51
+ <style lang="sass">
52
+ .input-search
53
+ display: flex
54
+ flex-direction: column
55
+ &.size-sm
56
+ width: 24.5625rem
57
+ &.size-md
58
+ width: 26.5rem
59
+ </style>