@usssa/component-library 1.0.0-alpha.4 → 1.0.0-alpha.41

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 (161) hide show
  1. package/README.md +4 -1
  2. package/package.json +6 -4
  3. package/src/App.vue +9 -0
  4. package/src/assets/quasar-logo-vertical.svg +15 -0
  5. package/src/boot/.gitkeep +0 -0
  6. package/src/boot/google-maps.js +11 -0
  7. package/src/components/ComponentLink.vue +26 -0
  8. package/src/components/core/UAvatar.vue +161 -0
  9. package/src/components/core/UAvatarGroup.vue +119 -0
  10. package/src/components/core/UBadgeStd.vue +91 -0
  11. package/src/components/core/UBannerStd.vue +115 -0
  12. package/src/components/core/UBreadCrumbs.vue +67 -0
  13. package/src/components/core/UBtnIcon.vue +159 -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 +242 -0
  19. package/src/components/core/UDrawer.vue +211 -0
  20. package/src/components/core/UInnerLoader.vue +58 -0
  21. package/src/components/core/UInputAddressLookup.vue +466 -0
  22. package/src/components/core/UInputPhoneStd.vue +295 -0
  23. package/src/components/core/UInputTextStd.vue +293 -0
  24. package/src/components/core/UMenuButtonStd.vue +274 -0
  25. package/src/components/core/UMenuDropdown.vue +77 -0
  26. package/src/components/core/UMenuDropdownAdvancedSearch.vue +262 -0
  27. package/src/components/core/UMenuItem.vue +132 -0
  28. package/src/components/core/UMultiSelectStd.vue +259 -0
  29. package/src/components/core/UPagination.vue +104 -0
  30. package/src/components/core/URadioBtn.vue +116 -0
  31. package/src/components/core/URadioStd.vue +62 -0
  32. package/src/components/core/USelectStd.vue +233 -0
  33. package/src/components/core/UTabBtnStd.vue +167 -0
  34. package/src/components/core/UTable/UTable.vue +93 -0
  35. package/src/components/core/UTable/UTd.vue +63 -0
  36. package/src/components/core/UTable/UTh.vue +48 -0
  37. package/src/components/core/UTable/UTr.vue +20 -0
  38. package/src/components/core/UTableStd.vue +636 -0
  39. package/src/components/core/UTabsStd.vue +111 -0
  40. package/src/components/core/UToggleStd.vue +159 -0
  41. package/src/components/core/UTooltip.vue +71 -0
  42. package/src/components/index.js +66 -0
  43. package/src/composables/useNotify.js +79 -0
  44. package/src/composables/useOverlayLoader.js +23 -0
  45. package/src/css/app.sass +159 -0
  46. package/src/css/colors.sass +101 -0
  47. package/src/css/media.sass +1 -0
  48. package/src/css/quasar.variables.sass +119 -0
  49. package/src/css/typography.sass +0 -0
  50. package/src/css/vars/colors.variables.sass +126 -0
  51. package/src/layouts/MainLayout.vue +173 -0
  52. package/src/pages/AdvancedSearch.vue +512 -0
  53. package/src/pages/Avatar.vue +77 -0
  54. package/src/pages/AvatarGroup.vue +139 -0
  55. package/src/pages/BadgeStd.vue +83 -0
  56. package/src/pages/BannerPage.vue +76 -0
  57. package/src/pages/BreadCrumbs.vue +100 -0
  58. package/src/pages/BtnIcon.vue +120 -0
  59. package/src/pages/BtnStd.vue +138 -0
  60. package/src/pages/BtnToggle.vue +131 -0
  61. package/src/pages/CheckBox.vue +62 -0
  62. package/src/pages/Chip.vue +108 -0
  63. package/src/pages/ComponentBase.vue +54 -0
  64. package/src/pages/Dialog.vue +221 -0
  65. package/src/pages/Drawer.vue +128 -0
  66. package/src/pages/ErrorNotFound.vue +11 -0
  67. package/src/pages/IndexPage.vue +11 -0
  68. package/src/pages/InnerLoader.vue +81 -0
  69. package/src/pages/InputAddressLookup.vue +258 -0
  70. package/src/pages/InputPhone.vue +152 -0
  71. package/src/pages/InputText.vue +140 -0
  72. package/src/pages/MenuButton.vue +194 -0
  73. package/src/pages/MenuDropdown.vue +79 -0
  74. package/src/pages/MenuItem.vue +68 -0
  75. package/src/pages/MultiSelectStd.vue +174 -0
  76. package/src/pages/NotifyPage.vue +109 -0
  77. package/src/pages/OverlayLoader.vue +128 -0
  78. package/src/pages/Pagination.vue +71 -0
  79. package/src/pages/Radio.vue +80 -0
  80. package/src/pages/RadioBtn.vue +104 -0
  81. package/src/pages/SelectStd.vue +160 -0
  82. package/src/pages/TabButtonPage.vue +126 -0
  83. package/src/pages/TablePage.vue +375 -0
  84. package/src/pages/TabsPage.vue +261 -0
  85. package/src/pages/TogglePage.vue +58 -0
  86. package/src/pages/TooltipPage.vue +125 -0
  87. package/src/router/index.js +34 -0
  88. package/src/router/routes.js +149 -0
  89. package/dist/spa/assets/Avatar.45667392.js +0 -9
  90. package/dist/spa/assets/AvatarGroup.99557443.js +0 -9
  91. package/dist/spa/assets/AvatarGroup.bb4cd03a.css +0 -1
  92. package/dist/spa/assets/BadgeStd.ee4129c5.js +0 -6
  93. package/dist/spa/assets/BannerPage.6c6a98c4.js +0 -10
  94. package/dist/spa/assets/BannerPage.d195fcac.css +0 -1
  95. package/dist/spa/assets/BtnIcon.89e50d2e.css +0 -1
  96. package/dist/spa/assets/BtnIcon.934f8c5b.js +0 -10
  97. package/dist/spa/assets/BtnStd.95fc4510.js +0 -11
  98. package/dist/spa/assets/CheckBox.3c204a4b.css +0 -1
  99. package/dist/spa/assets/CheckBox.fbc0bd1a.js +0 -7
  100. package/dist/spa/assets/Chip.49ffc857.js +0 -11
  101. package/dist/spa/assets/Chip.74acaa33.css +0 -1
  102. package/dist/spa/assets/ComponentBase.1ae19b7e.js +0 -1
  103. package/dist/spa/assets/ErrorNotFound.6cccfaee.js +0 -1
  104. package/dist/spa/assets/IndexPage.17d09b76.js +0 -1
  105. package/dist/spa/assets/InputText.19c0d7d1.css +0 -1
  106. package/dist/spa/assets/InputText.3fcd97a4.js +0 -20
  107. package/dist/spa/assets/KFOkCnqEu92Fr1MmgVxIIzQ.34e9582c.woff +0 -0
  108. package/dist/spa/assets/KFOlCnqEu92Fr1MmEU9fBBc-.9ce7f3ac.woff +0 -0
  109. package/dist/spa/assets/KFOlCnqEu92Fr1MmSU5fBBc-.bf14c7d7.woff +0 -0
  110. package/dist/spa/assets/KFOlCnqEu92Fr1MmWUlfBBc-.e0fd57c0.woff +0 -0
  111. package/dist/spa/assets/KFOlCnqEu92Fr1MmYUtfBBc-.f6537e32.woff +0 -0
  112. package/dist/spa/assets/KFOmCnqEu92Fr1Mu4mxM.f2abf7fb.woff +0 -0
  113. package/dist/spa/assets/MainLayout.912bb0f8.js +0 -1
  114. package/dist/spa/assets/MultiSelectStd.644b108c.js +0 -17
  115. package/dist/spa/assets/MultiSelectStd.c7af49eb.css +0 -1
  116. package/dist/spa/assets/QAvatar.5940a79e.js +0 -1
  117. package/dist/spa/assets/QCheckbox.48b43f7d.js +0 -1
  118. package/dist/spa/assets/QPage.ca395ec4.js +0 -1
  119. package/dist/spa/assets/QRadio.0a7f5e2c.js +0 -1
  120. package/dist/spa/assets/QResizeObserver.30c3566c.js +0 -1
  121. package/dist/spa/assets/QSelect.a40eb786.js +0 -1
  122. package/dist/spa/assets/QTabs.72f2507e.js +0 -1
  123. package/dist/spa/assets/QToggle.376c48be.js +0 -1
  124. package/dist/spa/assets/QTooltip.5aa8e325.js +0 -1
  125. package/dist/spa/assets/Radio.0ac35288.js +0 -7
  126. package/dist/spa/assets/Radio.aca54a89.css +0 -1
  127. package/dist/spa/assets/SelectStd.5c6891db.css +0 -1
  128. package/dist/spa/assets/SelectStd.daf1def9.js +0 -16
  129. package/dist/spa/assets/TabButtonPage.20e871dd.js +0 -7
  130. package/dist/spa/assets/TabButtonPage.36ce9f9c.css +0 -1
  131. package/dist/spa/assets/TabsPage.9b94ff39.css +0 -1
  132. package/dist/spa/assets/TabsPage.b92cccee.js +0 -9
  133. package/dist/spa/assets/TogglePage.8129b631.css +0 -1
  134. package/dist/spa/assets/TogglePage.ba6e325c.js +0 -9
  135. package/dist/spa/assets/UAvatar.dda7e478.js +0 -1
  136. package/dist/spa/assets/UAvatar.ea8daa38.css +0 -1
  137. package/dist/spa/assets/UBadgeStd.3965db9a.css +0 -1
  138. package/dist/spa/assets/UBadgeStd.e165ee05.js +0 -1
  139. package/dist/spa/assets/UBtnStd.979ec4e8.js +0 -1
  140. package/dist/spa/assets/UBtnStd.bdd4f5e5.css +0 -1
  141. package/dist/spa/assets/UTooltip.d2e04d0c.js +0 -1
  142. package/dist/spa/assets/UTooltip.efa029a7.css +0 -1
  143. package/dist/spa/assets/dom.e9d4ad51.js +0 -1
  144. package/dist/spa/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.fd84f88b.woff +0 -0
  145. package/dist/spa/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.4a4dbc62.woff2 +0 -0
  146. package/dist/spa/assets/format.41663636.js +0 -1
  147. package/dist/spa/assets/index.43c62a18.js +0 -21
  148. package/dist/spa/assets/index.4fbd73cf.css +0 -5
  149. package/dist/spa/assets/option-sizes.10cc02d3.js +0 -1
  150. package/dist/spa/assets/render.e67ff27a.js +0 -1
  151. package/dist/spa/assets/tooltip.7c0d0774.js +0 -8
  152. package/dist/spa/assets/touch.9135741d.js +0 -1
  153. package/dist/spa/assets/use-checkbox.44a623c0.js +0 -1
  154. package/dist/spa/favicon.ico +0 -0
  155. package/dist/spa/icons/caret-down.svg +0 -5
  156. package/dist/spa/icons/circle-xmark.svg +0 -6
  157. package/dist/spa/icons/favicon-128x128.png +0 -0
  158. package/dist/spa/icons/favicon-16x16.png +0 -0
  159. package/dist/spa/icons/favicon-32x32.png +0 -0
  160. package/dist/spa/icons/favicon-96x96.png +0 -0
  161. package/dist/spa/index.html +0 -3
@@ -0,0 +1,261 @@
1
+ <script setup>
2
+ import { UTabsStd } from 'src/components'
3
+ import ComponentBase from './ComponentBase.vue'
4
+ import { computed, ref } from 'vue'
5
+
6
+ defineOptions({
7
+ name: 'TabsPage',
8
+ })
9
+
10
+ const align = ref('Justify')
11
+ const isShowLeftIcon = ref(false)
12
+ const isShowRightIcon = ref(false)
13
+ const isShowOnlyIcon = ref(false)
14
+ const behaviour = ref(true)
15
+ const alignment = computed(() => {
16
+ return align.value.toLocaleLowerCase()
17
+ })
18
+
19
+ const htmlContent = `<UTabsStd
20
+ v-model="selectedTab"
21
+ :tabs="tabsOptions"
22
+ :align="align"
23
+ />`
24
+
25
+ const contentInfo = `// The 'tabOptions' property allows you to configure tabs for both routing and basic use.
26
+ To enable routing, include a 'route' property in each tab configuration, which links the tab to specific routes.
27
+ For basic tabs, omit the 'route' property. Additionally, the component supports keyboard navigation,
28
+ enabling users to switch between tabs using the left and right arrow keys, ensuring improved accessibility.
29
+ [{name: 'home', label: 'Home', leftIcon: 'home', rightIcon: 'home', route:'home'}]`
30
+
31
+ const alignmentOptions = ['Justify', 'Left', 'Right']
32
+ const defaultTabs = ref([
33
+ {
34
+ name: 'home',
35
+ label: 'Home',
36
+ leftIcon: 'fa-kit-duotone fa-home',
37
+ rightIcon: 'fa-kit-duotone fa-home',
38
+ route: 'home',
39
+ disable: false,
40
+ },
41
+ {
42
+ name: 'cart',
43
+ label: 'Cart',
44
+ leftIcon: 'fa-kit-duotone fa-cart-shopping',
45
+ rightIcon: 'fa-kit-duotone fa-cart-shopping',
46
+ route: 'cart',
47
+ disable: false,
48
+ },
49
+ {
50
+ name: 'info',
51
+ label: 'Information',
52
+ leftIcon: 'fa-kit-duotone fa-circle-exclamation',
53
+ rightIcon: 'fa-kit-duotone fa-circle-exclamation',
54
+ route: 'info',
55
+ disable: true,
56
+ },
57
+ {
58
+ name: 'mail',
59
+ label: 'Mails',
60
+ leftIcon: 'fa-kit-duotone fa-envelope',
61
+ rightIcon: 'fa-kit-duotone fa-envelope',
62
+ route: 'mail',
63
+ disable: false,
64
+ },
65
+ ])
66
+ const tabs = computed(() => {
67
+ return defaultTabs.value.map((tab) => {
68
+ if (!behaviour.value) {
69
+ return { ...tab, route: undefined }
70
+ }
71
+ return tab
72
+ })
73
+ })
74
+
75
+ const isShowBothIcon = computed(() => {
76
+ return isShowLeftIcon.value && isShowRightIcon.value
77
+ })
78
+
79
+ const tabsOptions = computed(() => {
80
+ return tabs.value.map((tab) => {
81
+ if (isShowOnlyIcon.value) {
82
+ // Only show the left icon , hide right icon
83
+ return { ...tab, rightIcon: undefined, label: undefined }
84
+ }
85
+
86
+ if (!isShowLeftIcon.value && !isShowRightIcon.value) {
87
+ // Show only the label
88
+ return { ...tab, leftIcon: undefined, rightIcon: undefined }
89
+ }
90
+
91
+ if (!isShowLeftIcon.value) {
92
+ // Show right icon with label
93
+ return { ...tab, leftIcon: undefined }
94
+ }
95
+
96
+ if (!isShowRightIcon.value) {
97
+ // Show left icon with label
98
+ return { ...tab, rightIcon: undefined }
99
+ }
100
+
101
+ // Show both icons with label
102
+ return tab
103
+ })
104
+ })
105
+
106
+ const handleOnlyIconChange = (value, evt) => {
107
+ if (value) {
108
+ isShowLeftIcon.value = true // when it is true only one icon should visible
109
+ isShowRightIcon.value = false
110
+ }
111
+ isShowOnlyIcon.value = value
112
+ }
113
+
114
+ const handleBothIconChange = (value, evt) => {
115
+ isShowLeftIcon.value = value
116
+ isShowRightIcon.value = value
117
+ }
118
+
119
+ const handleBehaviourChange = (value) => {
120
+ behaviour.value = value
121
+ }
122
+
123
+ const updateItem = (index, key, value) => {
124
+ tabs.value[index][key] = value
125
+ }
126
+
127
+ const selectedTab = ref('home') // if user don't want to use tabs as route tab then it should be use like this
128
+ </script>
129
+
130
+ <template>
131
+ <q-page class="flex flex-center">
132
+ <ComponentBase
133
+ figmaUrl="https://www.figma.com/design/2FoTrjVL4ZrTdsvB4DcSao/Components?node-id=4-28&t=K9pIC6Ve5iom3wvc-0"
134
+ cardWidth="70%"
135
+ >
136
+ <template v-slot:component>
137
+ <UTabsStd
138
+ v-model="selectedTab"
139
+ :tabs="tabsOptions"
140
+ :align="alignment"
141
+ />
142
+
143
+ <q-tab-panels
144
+ class="bg-transparent"
145
+ v-model="selectedTab"
146
+ keep-alive
147
+ animated
148
+ transition-prev="scale"
149
+ transition-next="scale"
150
+ >
151
+ <q-tab-panel class="text-center" name="home">
152
+ <q-card class="q-pa-sm">
153
+ <div class="text-h6">Home</div>
154
+ This is a example q-tab-panels with animation - Home
155
+ </q-card>
156
+ </q-tab-panel>
157
+ <q-tab-panel class="text-center" name="cart">
158
+ <q-card class="q-pa-sm">
159
+ <div class="text-h6">Cart</div>
160
+ This is a example q-tab-panels with animation - Cart
161
+ </q-card>
162
+ </q-tab-panel>
163
+ <q-tab-panel class="text-center" name="info">
164
+ <q-card class="q-pa-sm">
165
+ <div class="text-h6">Info</div>
166
+ This is a example q-tab-panels with animation - Info
167
+ </q-card>
168
+ </q-tab-panel>
169
+ <q-tab-panel class="text-center" name="mail">
170
+ <q-card class="q-pa-sm">
171
+ <div class="text-h6">Mail</div>
172
+ This is a example q-tab-panels with animation - Mail
173
+ </q-card>
174
+ </q-tab-panel>
175
+ </q-tab-panels>
176
+ </template>
177
+ <template v-slot:properties>
178
+ <div class="column q-gutter-y-lg" style="position: relative">
179
+ <q-toggle
180
+ color="primary"
181
+ label="Route Tabs"
182
+ v-model="behaviour"
183
+ @update:modelValue="handleBehaviourChange"
184
+ style="position: absolute; right: 0.5rem; top: -35px"
185
+ />
186
+ <q-select
187
+ v-model="align"
188
+ :options="alignmentOptions"
189
+ label="Alignment"
190
+ />
191
+ <div class="q-mb-sm">
192
+ <q-checkbox
193
+ class="q-mr-sm"
194
+ size="xs"
195
+ v-model="isShowOnlyIcon"
196
+ @update:modelValue="handleOnlyIconChange"
197
+ label="Only Icon"
198
+ />
199
+ <q-checkbox
200
+ class="q-mr-sm"
201
+ size="xs"
202
+ v-model="isShowLeftIcon"
203
+ label="Left Icon"
204
+ :disable="isShowOnlyIcon"
205
+ />
206
+ <q-checkbox
207
+ class="q-mr-sm"
208
+ size="xs"
209
+ v-model="isShowRightIcon"
210
+ label="Right Icon"
211
+ :disable="isShowOnlyIcon"
212
+ />
213
+ <q-checkbox
214
+ class="q-mr-sm"
215
+ size="xs"
216
+ :model-value="isShowBothIcon"
217
+ @update:modelValue="handleBothIconChange"
218
+ label="Left-Right Icon"
219
+ :disable="isShowOnlyIcon"
220
+ />
221
+ </div>
222
+ <div v-for="(tab, index) in tabs" :key="tab.name" class="row">
223
+ <div class="col-12 col-md-2 flex justify-start items-center">
224
+ <q-checkbox
225
+ size="xs"
226
+ @input="updateItem(index, 'disable', tab.disable)"
227
+ v-model="tab.disable"
228
+ label="Disable tab"
229
+ />
230
+ </div>
231
+
232
+ <q-input
233
+ class="col-12 col-md-3"
234
+ placeholder="Label"
235
+ v-model="tab.label"
236
+ @input="updateItem(index, 'label', tab.label)"
237
+ ></q-input>
238
+ <q-input
239
+ placeholder="Left Icon"
240
+ class="col-12 col-md-3"
241
+ v-model="tab.leftIcon"
242
+ @input="updateItem(index, 'leftIcon', tab.leftIcon)"
243
+ ></q-input>
244
+ <q-input
245
+ placeholder="Right Icon"
246
+ class="col-12 col-md-4"
247
+ v-model="tab.rightIcon"
248
+ @input="updateItem(index, 'rightIcon', tab.rightIcon)"
249
+ ></q-input>
250
+ </div>
251
+ </div>
252
+ </template>
253
+ <template v-slot:code>
254
+ <pre>{{ htmlContent }}</pre>
255
+ <pre class="text-neutral-6" style="font-size: 12px; font-weight: 600">{{
256
+ contentInfo
257
+ }}</pre>
258
+ </template>
259
+ </ComponentBase>
260
+ </q-page>
261
+ </template>
@@ -0,0 +1,58 @@
1
+ <script setup>
2
+ import { ref } from 'vue'
3
+ import ComponentBase from './ComponentBase.vue'
4
+ import { UToggleStd } from 'src/components'
5
+
6
+ defineOptions({
7
+ name: 'TogglePage',
8
+ })
9
+
10
+ const htmlContent = `<UToggleStd
11
+ v-model="toggle"
12
+ id="playground-1"
13
+ name="toggle-1"
14
+ :disabled="disabled"
15
+ :label="label"
16
+ :checkedIcon="checkedIcon"
17
+ :unCheckedIcon="unCheckedIcon"
18
+ />`
19
+
20
+ const toggle = ref(false)
21
+ const disabled = ref(false)
22
+ const label = ref('Dark Mode')
23
+ const checkedIcon = ref('fa-kit-duotone fa-moon')
24
+ const unCheckedIcon = ref('fa-kit-duotone fa-sun')
25
+ </script>
26
+
27
+ <template>
28
+ <q-page class="flex flex-center">
29
+ <ComponentBase
30
+ figmaUrl="https://www.figma.com/design/2FoTrjVL4ZrTdsvB4DcSao/Components?node-id=4-23&t=HegwRwdR5yoKKzMy-0"
31
+ >
32
+ <template v-slot:component>
33
+ <UToggleStd
34
+ v-model="toggle"
35
+ :id="`playground-1`"
36
+ :name="`toggle-1`"
37
+ :disabled="disabled"
38
+ :label="label"
39
+ :checkedIcon="checkedIcon"
40
+ :unCheckedIcon="unCheckedIcon"
41
+ />
42
+ </template>
43
+ <template v-slot:properties>
44
+ <div class="column q-gutter-y-lg">
45
+ <q-input label="Checked Icon" v-model="checkedIcon" />
46
+ <q-input label="Unchecked Icon" v-model="unCheckedIcon" />
47
+ <q-input label="Label" v-model="label" />
48
+ <q-checkbox size="xs" v-model="disabled" label="Disable" />
49
+ </div>
50
+ </template>
51
+ <template v-slot:code>
52
+ <pre><code>{{ htmlContent }}</code></pre>
53
+ </template>
54
+ </ComponentBase>
55
+ </q-page>
56
+ </template>
57
+
58
+ <style></style>
@@ -0,0 +1,125 @@
1
+ <script setup>
2
+ import { computed, ref } from 'vue'
3
+ import ComponentBase from './ComponentBase.vue'
4
+ import { UTooltip } from 'src/components'
5
+
6
+ const description = ref('This is a tooltip')
7
+ const icon = ref('fa-kit-duotone fa-circle-info')
8
+ const anchor = ref('top middle')
9
+ const self = ref('bottom middle')
10
+ const show = ref(true)
11
+ const offsetX = ref(14)
12
+ const offsetY = ref(14)
13
+
14
+ const offset = computed(() => {
15
+ console.log(offsetX, offsetY)
16
+ return [parseInt(offsetX.value), parseInt(offsetY.value)]
17
+ })
18
+
19
+ const anchorOptions = [
20
+ 'top left',
21
+ 'top middle',
22
+ 'top right',
23
+ 'top start',
24
+ 'top end',
25
+ 'center left',
26
+ 'center middle',
27
+ 'center right',
28
+ 'center start',
29
+ 'center end',
30
+ 'bottom left',
31
+ 'bottom middle',
32
+ 'bottom right',
33
+ 'bottom start',
34
+ 'bottom end',
35
+ ]
36
+ const selfOptions = [
37
+ 'top left',
38
+ 'top middle',
39
+ 'top right',
40
+ 'top start',
41
+ 'top end',
42
+ 'center left',
43
+ 'center middle',
44
+ 'center right',
45
+ 'center start',
46
+ 'center end',
47
+ 'bottom left',
48
+ 'bottom middle',
49
+ 'bottom right',
50
+ 'bottom start',
51
+ 'bottom end',
52
+ ]
53
+
54
+ const htmlContent = `<UTooltip
55
+ :description="description"
56
+ :icon="icon"
57
+ :anchor="anchor"
58
+ :self="self"
59
+ :offset="offset"
60
+ />
61
+ `
62
+
63
+ defineOptions({
64
+ name: 'ToolTip',
65
+ })
66
+ </script>
67
+
68
+ <template>
69
+ <q-page class="flex flex-center">
70
+ <ComponentBase
71
+ figmaUrl="https://www.figma.com/design/2FoTrjVL4ZrTdsvB4DcSao/Components?node-id=3594-360443&t=gcNLQiqLoeen326d-0"
72
+ >
73
+ <template v-slot:component>
74
+ <q-btn label="Hover">
75
+ <UTooltip
76
+ :description="description"
77
+ :icon="icon"
78
+ :anchor="anchor"
79
+ :self="self"
80
+ :offset="offset"
81
+ />
82
+ </q-btn>
83
+ <UTooltip
84
+ :description="description"
85
+ :icon="icon"
86
+ anchor="center middle"
87
+ self="center middle"
88
+ :no-parent-event="true"
89
+ v-model="show"
90
+ />
91
+ </template>
92
+
93
+ <template v-slot:properties>
94
+ <div class="column q-gutter-y-lg">
95
+ <q-input label="Description" v-model="description" />
96
+ <q-input label="Icon" v-model="icon" />
97
+ </div>
98
+ <div class="column">
99
+ <span class="text-grey-8 text-caption-sm q-mt-md">
100
+ Tooltip Position
101
+ </span>
102
+ <div>
103
+ <q-select
104
+ v-model="anchor"
105
+ :options="anchorOptions"
106
+ label="Anchor Origin"
107
+ />
108
+ <q-select
109
+ v-model="self"
110
+ :options="selfOptions"
111
+ label="Self Origin"
112
+ />
113
+ <q-input label="Offset X" v-model="offsetX" type="number" />
114
+ <q-input label="Offset Y" v-model="offsetY" type="number" />
115
+ </div>
116
+ </div>
117
+ </template>
118
+
119
+ <template v-slot:code>
120
+ <pre><code>{{ htmlContent }}</code></pre>
121
+ <p>Offset will be an array i.e [14, 14]</p>
122
+ </template>
123
+ </ComponentBase>
124
+ </q-page>
125
+ </template>
@@ -0,0 +1,34 @@
1
+ import {
2
+ route
3
+ } from 'quasar/wrappers'
4
+ import {
5
+ createRouter,
6
+ createWebHistory,
7
+ } from 'vue-router'
8
+ import routes from './routes'
9
+
10
+ /*
11
+ * If not building with SSR mode, you can
12
+ * directly export the Router instantiation;
13
+ *
14
+ * The function below can be async too; either use
15
+ * async/await or return a Promise which resolves
16
+ * with the Router instance.
17
+ */
18
+
19
+ export default route(function ( /* { store, ssrContext } */ ) {
20
+ const Router = createRouter({
21
+ scrollBehavior: () => ({
22
+ left: 0,
23
+ top: 0
24
+ }),
25
+ routes,
26
+
27
+ // Leave this as is and make changes in quasar.conf.js instead!
28
+ // quasar.conf.js -> build -> vueRouterMode
29
+ // quasar.conf.js -> build -> publicPath
30
+ history: createWebHistory(process.env.VUE_ROUTER_BASE)
31
+ })
32
+
33
+ return Router
34
+ })
@@ -0,0 +1,149 @@
1
+ const routes = [
2
+ {
3
+ path: '/',
4
+ component: () => import('layouts/MainLayout.vue'),
5
+ children: [
6
+ {
7
+ path: '',
8
+ component: () => import('pages/IndexPage.vue'),
9
+ },
10
+ {
11
+ path: 'address-lookup',
12
+ component: () => import('pages/InputAddressLookup.vue'),
13
+ },
14
+ {
15
+ path: 'advanced-search',
16
+ component: () => import('src/pages/AdvancedSearch.vue'),
17
+ },
18
+ {
19
+ path: 'avatar',
20
+ component: () => import('pages/Avatar.vue'),
21
+ },
22
+ {
23
+ path: 'avatar-group',
24
+ component: () => import('pages/AvatarGroup.vue'),
25
+ },
26
+ {
27
+ path: 'badge',
28
+ component: () => import('pages/BadgeStd.vue'),
29
+ },
30
+ {
31
+ path: 'button-standard',
32
+ component: () => import('pages/BtnStd.vue'),
33
+ },
34
+ {
35
+ path: 'button-icon',
36
+ component: () => import('pages/BtnIcon.vue'),
37
+ },
38
+ {
39
+ path: 'radio-btn',
40
+ component: () => import('pages/RadioBtn.vue'),
41
+ },
42
+ {
43
+ path: 'check-box',
44
+ component: () => import('pages/CheckBox.vue'),
45
+ },
46
+ {
47
+ path: 'input-text',
48
+ component: () => import('pages/InputText.vue'),
49
+ },
50
+ {
51
+ path: 'input-phone',
52
+ component: () => import('pages/InputPhone.vue'),
53
+ },
54
+ {
55
+ path: 'chip',
56
+ component: () => import('pages/Chip.vue'),
57
+ },
58
+ {
59
+ path: 'multiselect-standard',
60
+ component: () => import('pages/MultiSelectStd.vue'),
61
+ },
62
+ {
63
+ path: 'radio',
64
+ component: () => import('src/pages/Radio.vue'),
65
+ },
66
+ {
67
+ path: 'tabs/:tab',
68
+ component: () => import('pages/TabsPage.vue'),
69
+ },
70
+ {
71
+ path: 'tab-button',
72
+ component: () => import('pages/TabButtonPage.vue'),
73
+ },
74
+ {
75
+ path: 'tooltip',
76
+ component: () => import('src/pages/TooltipPage.vue'),
77
+ },
78
+ {
79
+ path: 'notify',
80
+ component: () => import('pages/NotifyPage.vue'),
81
+ },
82
+ {
83
+ path: 'banner',
84
+ component: () => import('pages/BannerPage.vue'),
85
+ },
86
+ {
87
+ path: 'toggle',
88
+ component: () => import('pages/TogglePage.vue'),
89
+ },
90
+ {
91
+ path: 'select',
92
+ component: () => import('pages/SelectStd.vue'),
93
+ },
94
+ {
95
+ path: 'table',
96
+ component: () => import('pages/TablePage.vue'),
97
+ },
98
+ {
99
+ path: 'dialog',
100
+ component: () => import('pages/Dialog.vue'),
101
+ },
102
+ {
103
+ path: 'pagination',
104
+ component: () => import('src/pages/Pagination.vue'),
105
+ },
106
+ {
107
+ path: 'button-toggle',
108
+ component: () => import('pages/BtnToggle.vue'),
109
+ },
110
+ {
111
+ path: 'Drawer',
112
+ component: () => import('pages/Drawer.vue'),
113
+ },
114
+ {
115
+ path: 'menu-item',
116
+ component: () => import('src/pages/MenuItem.vue'),
117
+ },
118
+ {
119
+ path: 'inner-loader',
120
+ component: () => import('src/pages/InnerLoader.vue'),
121
+ },
122
+ {
123
+ path: 'menu-dropdown',
124
+ component: () => import('src/pages/MenuDropdown.vue'),
125
+ },
126
+ {
127
+ path: 'menu-button',
128
+ component: () => import('src/pages/MenuButton.vue'),
129
+ },
130
+ {
131
+ path: 'bread-crumbs',
132
+ component: () => import('src/pages/BreadCrumbs.vue'),
133
+ },
134
+ {
135
+ path: 'overlay-loader',
136
+ component: () => import('src/pages/OverlayLoader.vue'),
137
+ },
138
+ ],
139
+ },
140
+
141
+ // Always leave this as last one,
142
+ // but you can also remove it
143
+ {
144
+ path: '/:catchAll(.*)*',
145
+ component: () => import('pages/ErrorNotFound.vue'),
146
+ },
147
+ ]
148
+
149
+ export default routes
@@ -1,9 +0,0 @@
1
- import{Q as p,_ as g}from"./ComponentBase.1ae19b7e.js";import{Q as c}from"./QSelect.a40eb786.js";import{Q as v}from"./QCheckbox.48b43f7d.js";import{Q as w}from"./QPage.ca395ec4.js";import{_ as x}from"./UAvatar.dda7e478.js";import{r as l,F as C,G as I,H as n,I as a,U as t,N as U}from"./index.43c62a18.js";import"./dom.e9d4ad51.js";import"./render.e67ff27a.js";import"./format.41663636.js";import"./use-checkbox.44a623c0.js";import"./option-sizes.10cc02d3.js";import"./QAvatar.5940a79e.js";import"./UBadgeStd.e165ee05.js";const _={class:"column q-gutter-y-lg"},b={class:"column"},z=t("span",{class:"text-grey-8 text-caption-sm"},"Show Indicator",-1),Q=`<UAvatar
2
- ref="avatar"
3
- :name="name"
4
- :size="size"
5
- :showIndicator="showIndicator"
6
- :indicatorColor="indicatorColor"
7
- :round="round"
8
- :image="image"
9
- />`,H=Object.assign({name:"UAvatar"},{__name:"Avatar",setup(S){l("label");const r=l(!0),s=l("A"),i=l(""),m=l(""),u=l("sm"),V=["primary","accent","positive","neutral"],f=["sm","md","lg","xl"],d=l(!0);return(y,e)=>(C(),I(w,{class:"flex flex-center"},{default:n(()=>[a(g,{figmaUrl:"https://www.figma.com/design/2FoTrjVL4ZrTdsvB4DcSao/Components?node-id=2246-39909"},{component:n(()=>[a(x,{ref:"avatar",name:s.value,size:u.value,showIndicator:d.value,indicatorColor:i.value,round:r.value,image:m.value},null,8,["name","size","showIndicator","indicatorColor","round","image"])]),properties:n(()=>[t("div",_,[a(p,{label:"Name",modelValue:s.value,"onUpdate:modelValue":e[0]||(e[0]=o=>s.value=o)},null,8,["modelValue"]),a(p,{label:"image",modelValue:m.value,"onUpdate:modelValue":e[1]||(e[1]=o=>m.value=o)},null,8,["modelValue"]),a(c,{modelValue:u.value,"onUpdate:modelValue":e[2]||(e[2]=o=>u.value=o),options:f,label:"Size"},null,8,["modelValue"]),t("div",b,[z,a(v,{size:"xs",modelValue:d.value,"onUpdate:modelValue":e[3]||(e[3]=o=>d.value=o),val:!0,label:"Show Indicator"},null,8,["modelValue"])]),t("div",null,[a(v,{size:"xs",modelValue:r.value,"onUpdate:modelValue":e[4]||(e[4]=o=>r.value=o),val:!0,label:"Round"},null,8,["modelValue"])]),a(c,{modelValue:i.value,"onUpdate:modelValue":e[5]||(e[5]=o=>i.value=o),options:V,label:"Indicator Color"},null,8,["modelValue"])])]),code:n(()=>[t("pre",null,U(Q))]),_:1})]),_:1}))}});export{H as default};
@@ -1,9 +0,0 @@
1
- import{f as b,Q as w,_ as S}from"./ComponentBase.1ae19b7e.js";import{Q as U}from"./QSelect.a40eb786.js";import{Q as q}from"./QCheckbox.48b43f7d.js";import{Q as j}from"./QPage.ca395ec4.js";import{_ as L}from"./UTooltip.d2e04d0c.js";import{_ as Q}from"./UAvatar.dda7e478.js";import{a as A,F as r,K as d,M as _,L as z,G as k,H as c,I as a,U as t,J as B,N as I,aa as G,a9 as $,r as m}from"./index.43c62a18.js";import"./dom.e9d4ad51.js";import"./render.e67ff27a.js";import"./format.41663636.js";import"./use-checkbox.44a623c0.js";import"./option-sizes.10cc02d3.js";import"./QTooltip.5aa8e325.js";import"./QAvatar.5940a79e.js";import"./UBadgeStd.e165ee05.js";const F={class:"text-body-xs tooltip-text"},N=t("br",null,null,-1),x={__name:"UAvatarGroup",props:{color:{type:String,default:"primary"},icon:{type:String},size:{type:String},image:{type:String},images:{type:Array},indicatorColor:{type:String,default:"neutral-4"},name:{type:String,required:!0},showIndicator:{type:Boolean,default:!1},round:{type:Boolean,default:!0},avatarLimit:{type:Number,default:4}},emits:["onClick"],setup(o,{emit:C}){const n=o,p=C,v=()=>p("onClick"),V=A(()=>n.images.slice(0,n.avatarLimit)),g=A(()=>n.images.slice(n.avatarLimit));return(f,h)=>(r(),d(_,null,[(r(!0),d(_,null,z(V.value,(u,e)=>(r(),k(Q,{class:"avatarGroup",name:u.name,size:o.size,showIndicator:o.showIndicator,indicatorColor:o.indicatorColor,round:o.round,image:u.image,key:e,onClick:v},null,8,["name","size","showIndicator","indicatorColor","round","image"]))),128)),g.value.length?(r(),k(b,{key:0,class:G(`avatarGroup additonalUsersAvatar size-${o.size} fa-duotone fa-solid fa-circle-plus`),color:"primary","aria-label":"See more Avatar"},{default:c(()=>[a(L,{anchor:"bottom middle",description:"",self:"top middle",offset:[4,4]},{item:c(()=>[t("div",F,[(r(!0),d(_,null,z(g.value,(u,e)=>(r(),d("span",{key:e},[B(I(u.name),1),N]))),128))])]),_:1})]),_:1},8,["class"])):$("",!0)],64))}},D={class:"column q-gutter-y-lg"},O={class:"text-grey-8 text-caption-sm"},T={class:"full-width row justify-end q-mt-xs",style:{cursor:"pointer"}},E={class:"full-width row justify-end q-mt-sm"},H={class:"column q-gutter-y-lg"},J={class:"column q-gutter-y-lg"},K={class:"column"},M=t("span",{class:"text-grey-8 text-caption-sm"},"Show Indicator",-1),P={data(){return{users:[{name:"Alice",image:"https://cdn.quasar.dev/img/avatar1.jpg"},{name:"Bob",image:"https://cdn.quasar.dev/img/avatar2.jpg"},{name:"Charlie",image:"https://cdn.quasar.dev/img/avatar3.jpg"},{name:"Diana",image:"https://cdn.quasar.dev/img/avatar4.jpg"},{name:"Edward",image:"https://cdn.quasar.dev/img/avatar5.jpg"},{name:"Alex",image:"https://cdn.quasar.dev/img/avatar6.jpg"}]}},methods:{addField(){this.users.push({name:"",image:""})},removeField(o){this.users.splice(o,1)}}},me=Object.assign(P,{name:"UAvatarGroup"},{__name:"AvatarGroup",setup(o){const C=m(!0),n=m("A"),p=m(""),v=m("xl"),V=["primary","accent","positive","neutral"],g=["sm","md","lg","xl"],f=m(!0),h=m(4),u=`<UAvatarGroup
2
- ref="avatar"
3
- :label="label"
4
- :size="size"
5
- :showIndicator="showIndicator"
6
- :indicatorColor="indicatorColor"
7
- :round="round"
8
- :images="users"
9
- />`;return(e,s)=>(r(),k(j,{class:"flex flex-center"},{default:c(()=>[a(S,{figmaUrl:"https://www.figma.com/design/2FoTrjVL4ZrTdsvB4DcSao/Components?node-id=2246-39909"},{component:c(()=>[a(x,{ref:"avatar",label:n.value,size:v.value,showIndicator:f.value,indicatorColor:p.value,round:C.value,images:e.users,avatarLimit:h.value},null,8,["label","size","showIndicator","indicatorColor","round","images","avatarLimit"])]),properties:c(()=>[t("div",D,[(r(!0),d(_,null,z(e.users,(l,i)=>(r(),d("div",{key:i},[t("span",O,"User "+I(i+1),1),a(w,{modelValue:e.users[i].name,"onUpdate:modelValue":y=>e.users[i].name=y,val:e.users[i].name,label:"Name"},null,8,["modelValue","onUpdate:modelValue","val"]),a(w,{modelValue:e.users[i].image,"onUpdate:modelValue":y=>e.users[i].image=y,val:l.image,label:"Image"},null,8,["modelValue","onUpdate:modelValue","val"]),t("div",T,[a(b,{onClick:y=>e.removeField(i),class:"fa-duotone fa-solid fa-circle-minus",size:"sm",color:"primary"},null,8,["onClick"])])]))),128)),t("div",E,[a(b,{onClick:e.addField,style:{cursor:"pointer"},class:"fa-duotone fa-solid fa-circle-plus",size:"xl",color:"primary"},null,8,["onClick"])])]),t("div",H,[a(w,{modelValue:h.value,"onUpdate:modelValue":s[0]||(s[0]=l=>h.value=l),label:"Avatar Limit"},null,8,["modelValue"])]),t("div",J,[a(U,{modelValue:v.value,"onUpdate:modelValue":s[1]||(s[1]=l=>v.value=l),options:g,label:"Size"},null,8,["modelValue"])]),t("div",K,[M,a(q,{size:"xs",modelValue:f.value,"onUpdate:modelValue":s[2]||(s[2]=l=>f.value=l),val:!0,label:"Show Indicator"},null,8,["modelValue"])]),a(U,{modelValue:p.value,"onUpdate:modelValue":s[3]||(s[3]=l=>p.value=l),options:V,label:"Indicator Color"},null,8,["modelValue"])]),code:c(()=>[t("pre",null,I(u))]),_:1})]),_:1}))}});export{me as default};
@@ -1 +0,0 @@
1
- .additonalUsersAvatar:after{background-color:#e1e9f9;border-radius:50%}.additonalUsersAvatar{cursor:pointer}.additonalUsersAvatar.size-sm{font-size:1rem!important}.additonalUsersAvatar.size-md{font-size:1.5rem!important}.additonalUsersAvatar.size-lg{font-size:2rem!important}.additonalUsersAvatar.size-xl{font-size:2.5rem!important}.avatarGroup{margin:-.125rem}.avatarGroup:not(:nth-child(1)) .q-avatar__content{border:1.5px solid #FFFFFF;background:lightgray 0px -.033px/100% 150.273% no-repeat}
@@ -1,6 +0,0 @@
1
- import{Q as g,_ as b}from"./ComponentBase.1ae19b7e.js";import{Q as p}from"./QSelect.a40eb786.js";import{Q as c}from"./QRadio.0a7f5e2c.js";import{Q as x}from"./QPage.ca395ec4.js";import{_ as y}from"./UBadgeStd.e165ee05.js";import{r,w as B,a as Q,E as S,F as U,G as q,H as t,I as o,U as s,J as v,N as w}from"./index.43c62a18.js";import"./dom.e9d4ad51.js";import"./render.e67ff27a.js";import"./format.41663636.js";import"./option-sizes.10cc02d3.js";const z={class:"column q-gutter-y-lg"},C={class:"container column"},T={class:"q-gutter-sm"},D={class:"q-mt-md"},N=`<UBadgeStd
2
- :label="label"
3
- :color="color"
4
- :size="size"
5
- :type="type"
6
- />`,G=Object.assign({name:"BtnStd"},{__name:"BadgeStd",setup(O){const i=r("primary"),f=["primary","accent","warning","positive","neutral"],n=r("md"),a=r("basic"),V=["xxs","xs","sm","md","lg"];B(a,()=>{n.value=a.value==="indicator"?"xxs":"md"});const _=Q(()=>a.value==="indicator"?V.filter(m=>m!=="md"&&m!=="lg"):["md","lg"]),d=r("01");return(m,e)=>{const u=S("q-label");return U(),q(x,{class:"flex flex-center"},{default:t(()=>[o(b,{figmaUrl:"https://www.figma.com/design/2FoTrjVL4ZrTdsvB4DcSao/Components?node-id=508-19370&t=DR7gF8DTYY1JvngY-0"},{component:t(()=>[o(y,{label:d.value,color:i.value,size:n.value,type:a.value},null,8,["label","color","size","type"])]),properties:t(()=>[s("div",z,[s("div",C,[s("div",T,[s("div",D,[o(u,null,{default:t(()=>[v("Label")]),_:1}),o(g,{modelValue:d.value,"onUpdate:modelValue":e[0]||(e[0]=l=>d.value=l)},null,8,["modelValue"])]),o(p,{modelValue:i.value,"onUpdate:modelValue":e[1]||(e[1]=l=>i.value=l),options:f,label:"Color"},null,8,["modelValue"]),o(p,{modelValue:n.value,"onUpdate:modelValue":e[2]||(e[2]=l=>n.value=l),options:_.value,label:"Size"},null,8,["modelValue","options"]),s("div",null,[o(u,{class:"q-mr-sm"},{default:t(()=>[v("Type")]),_:1}),o(c,{dense:"",modelValue:a.value,"onUpdate:modelValue":e[3]||(e[3]=l=>a.value=l),val:"basic",label:"Basic",class:"q-pr-sm"},null,8,["modelValue"]),o(c,{dense:"",modelValue:a.value,"onUpdate:modelValue":e[4]||(e[4]=l=>a.value=l),val:"indicator",label:"Indicator"},null,8,["modelValue"])])])])])]),code:t(()=>[s("pre",null,w(N))]),_:1})]),_:1})}}});export{G as default};