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

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 +228 -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 +177 -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 +206 -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,111 @@
1
+ <script setup>
2
+ const props = defineProps({
3
+ tabs: {
4
+ type: Array,
5
+ required: true,
6
+ },
7
+ align: { type: String, default: 'justify' },
8
+ })
9
+
10
+ const selectedTab = defineModel({
11
+ required: true,
12
+ type: [Boolean, String, Number],
13
+ })
14
+ </script>
15
+
16
+ <template>
17
+ <q-tabs
18
+ v-model="selectedTab"
19
+ :dense="true"
20
+ active-color="primary"
21
+ indicator-color="primary"
22
+ outside-arrows
23
+ inline-label
24
+ mobile-arrows
25
+ :align="align"
26
+ no-caps
27
+ class="u-tabs-std text-caption-md"
28
+ >
29
+ <template v-for="tab in tabs" :key="tab.name">
30
+ <q-tab
31
+ :aria-label="tab.label"
32
+ v-if="!tab.route"
33
+ :name="tab.name"
34
+ :ripple="false"
35
+ :disable="tab.disable"
36
+ >
37
+ <template v-slot:default>
38
+ <q-icon
39
+ :aria-label="tab.label"
40
+ :alt="tab.label"
41
+ v-if="tab.leftIcon"
42
+ :class="`left-icon ${tab.leftIcon}`"
43
+ />
44
+ <p class="q-ma-none">{{ tab.label }}</p>
45
+ <q-icon
46
+ :aria-label="tab.label"
47
+ :alt="tab.label"
48
+ v-if="tab.rightIcon"
49
+ :class="`right-icon ${tab.rightIcon}`"
50
+ />
51
+ </template>
52
+ </q-tab>
53
+ <q-route-tab
54
+ v-else
55
+ :name="tab.name"
56
+ :ripple="false"
57
+ :to="`${tab.route}`"
58
+ exact
59
+ :aria-label="tab.label"
60
+ :disable="tab.disable"
61
+ >
62
+ <template v-slot:default>
63
+ <q-icon
64
+ :aria-label="tab.label"
65
+ :alt="tab.label"
66
+ v-if="tab.leftIcon"
67
+ :class="`left-icon ${tab.leftIcon}`"
68
+ />
69
+ <p class="q-ma-none">{{ tab.label }}</p>
70
+ <q-icon
71
+ :aria-label="tab.label"
72
+ :alt="tab.label"
73
+ v-if="tab.rightIcon"
74
+ :class="`right-icon ${tab.rightIcon}`"
75
+ />
76
+ </template>
77
+ </q-route-tab>
78
+ </template>
79
+ </q-tabs>
80
+ </template>
81
+
82
+ <style lang="sass">
83
+ .u-tabs-std
84
+ color: $dark
85
+ font-weight: 500
86
+
87
+ & .q-tab__content
88
+ & .q-icon
89
+ width: $ms
90
+ height: $ms
91
+ font-size: $ms
92
+
93
+ & .left-icon
94
+ margin-right: 0.45rem
95
+
96
+ .right-icon
97
+ width: $ms
98
+ height: $ms
99
+ font-size: $ms
100
+ margin-left: 0.45rem
101
+
102
+ .q-tab--inactive, .q-tab--active
103
+ min-width: 5.5rem
104
+
105
+ .q-tab--inactive
106
+ border-bottom: 2px solid $neutral-3
107
+ opacity: 1
108
+
109
+ .q-tab--inactive:hover
110
+ color: $primary
111
+ </style>
@@ -0,0 +1,159 @@
1
+ <script setup>
2
+ import { onMounted, watch } from 'vue'
3
+
4
+ const props = defineProps({
5
+ name: {
6
+ type: String,
7
+ default: 'toggle',
8
+ },
9
+ disabled: {
10
+ type: Boolean,
11
+ default: false,
12
+ },
13
+ label: {
14
+ type: String,
15
+ default: '',
16
+ },
17
+ id: {
18
+ type: [String, Number],
19
+ default: 'u-toggle',
20
+ required: true, // it is required for to match accessibility crieteria
21
+ },
22
+ checkedIcon: {
23
+ type: String,
24
+ default: '',
25
+ },
26
+ unCheckedIcon: {
27
+ type: String,
28
+ default: '',
29
+ },
30
+ })
31
+
32
+ const toggle = defineModel({ default: false, type: Boolean })
33
+
34
+ /**
35
+ * adding icons as a child of toggle thumb to keep icons in center
36
+ */
37
+ const updateIconPosition = () => {
38
+ setTimeout(() => {
39
+ const thumbElement = document.getElementsByClassName('q-toggle__thumb')
40
+ const leftIconElement = document.getElementById(
41
+ `u-toggle-left-icon-${props.name}`
42
+ )
43
+ const rightIconElement = document.getElementById(
44
+ `u-toggle-right-icon-${props.name}`
45
+ )
46
+ if (thumbElement.length > 0) {
47
+ Array.from(thumbElement).forEach((element) => {
48
+ if (leftIconElement && element.id === props.id) {
49
+ leftIconElement.style.display = 'block'
50
+ element.appendChild(leftIconElement)
51
+ }
52
+ if (rightIconElement && element.id === props.id) {
53
+ rightIconElement.style.display = 'block'
54
+ element.appendChild(rightIconElement)
55
+ }
56
+ })
57
+ }
58
+ }, 100)
59
+ }
60
+
61
+ /**
62
+ * adding the label to corresponding toggle input to match the accessibility
63
+ */
64
+ onMounted(() => {
65
+ const toggleElement = document.getElementById(`u-toggle-${props.id}`)
66
+ if (toggleElement) {
67
+ const inputElement = toggleElement.querySelector('input')
68
+ const thumbElement = toggleElement.getElementsByClassName('q-toggle__thumb')
69
+ thumbElement[0].id = `${props.id}`
70
+ if (inputElement) {
71
+ inputElement.id = `u-toggle-${props.id}`
72
+ }
73
+ }
74
+ updateIconPosition()
75
+ })
76
+
77
+ watch(toggle, () => {
78
+ updateIconPosition()
79
+ })
80
+ </script>
81
+
82
+ <template>
83
+ <label class="hidden" :for="`u-toggle-${id}`">{{ label }}</label>
84
+ <q-toggle
85
+ :id="`u-toggle-${id}`"
86
+ v-model="toggle"
87
+ :name="name"
88
+ color="primary"
89
+ class="u-toggle"
90
+ :disable="disabled"
91
+ v-bind="$attrs"
92
+ >
93
+ <template v-slot:default>
94
+ <q-icon
95
+ v-if="checkedIcon && toggle"
96
+ :id="`u-toggle-right-icon-${name}`"
97
+ :class="`${checkedIcon} u-checked-icon`"
98
+ :aria-label="`${name ? name : ''} checked toggle icon`"
99
+ >
100
+ </q-icon>
101
+ <q-icon
102
+ v-if="unCheckedIcon && !toggle"
103
+ :id="`u-toggle-left-icon-${name}`"
104
+ :class="`${unCheckedIcon} u-unchecked-icon`"
105
+ :aria-label="`${name ? name : ''} unchecked toggle icon`"
106
+ >
107
+ </q-icon>
108
+ </template>
109
+ </q-toggle>
110
+ </template>
111
+
112
+ <style lang="sass">
113
+ .u-toggle
114
+ .q-toggle__inner
115
+ padding: 0
116
+
117
+ .q-toggle__label
118
+ q-label
119
+ position: absolute
120
+ bottom: 1.8rem
121
+ left: 4.8rem
122
+
123
+ .u-checked-icon
124
+ color: $primary !important
125
+ font-size: 1rem
126
+ display: none
127
+
128
+ .u-unchecked-icon
129
+ font-size: 1rem
130
+ color: $description !important
131
+ display: none
132
+
133
+ .q-toggle__inner--truthy
134
+ .q-toggle__track
135
+ background: $primary
136
+ opacity: 1
137
+
138
+ .q-toggle__thumb:after
139
+ background: $neutral-1
140
+
141
+ .q-toggle__track
142
+ height: $md
143
+ border-radius: 1.175em
144
+ width: 3.5rem
145
+ padding: $xxs
146
+ background: $neutral-4
147
+
148
+ .q-toggle__thumb
149
+ top: 0.26rem
150
+ left: 0.27rem
151
+ width: $ms
152
+ height: $ms
153
+
154
+ .q-toggle__inner--truthy
155
+ .q-toggle__thumb
156
+ left: 1.72rem
157
+ width: $ms
158
+ height: $ms
159
+ </style>
@@ -0,0 +1,71 @@
1
+ <script setup>
2
+ import { computed } from 'vue'
3
+
4
+ const props = defineProps({
5
+ icon: {
6
+ type: String,
7
+ },
8
+ description: {
9
+ type: String,
10
+ required: true,
11
+ },
12
+ anchor: {
13
+ type: String,
14
+ },
15
+ self: {
16
+ type: String,
17
+ },
18
+ offset: {
19
+ type: Array,
20
+ },
21
+ target: {
22
+ type: String,
23
+ default: '',
24
+ },
25
+ })
26
+
27
+ /**
28
+ * checking if string contains only white spaces
29
+ */
30
+ const getTooltipText = computed(() => {
31
+ if (!props.description.replace(/\s/g, '')) {
32
+ return null
33
+ } else {
34
+ return props.description
35
+ }
36
+ })
37
+ </script>
38
+
39
+ <template>
40
+ <q-tooltip
41
+ class="u-tooltip shadow-2 bg-dark row"
42
+ v-bind="$attrs"
43
+ :anchor="anchor"
44
+ :self="self"
45
+ :offset="offset"
46
+ :target="target"
47
+ v-if="getTooltipText"
48
+ >
49
+ <div class="row no-wrap tooltip-content">
50
+ <div class="flex items-center" v-if="icon">
51
+ <q-icon :class="icon" size="1rem"></q-icon>
52
+ </div>
53
+ <div class="text-body-xs tooltip-text">{{ getTooltipText }}</div>
54
+ <slot name="item" />
55
+ </div>
56
+ </q-tooltip>
57
+ </template>
58
+
59
+ <style lang="sass">
60
+ .u-tooltip
61
+ border-radius: $xs
62
+ padding: $xs $sm
63
+ max-width: 22.5rem !important
64
+
65
+ .tooltip-text
66
+ color: $neutral-1
67
+ word-wrap: break-word
68
+
69
+ .tooltip-content
70
+ gap: $xxs
71
+ </style>
@@ -0,0 +1,66 @@
1
+ // import BtnStd from "./BtnStd.vue";
2
+ import UCheckboxStd from './core/UCheckboxStd.vue'
3
+ import UBtnStd from './core/UBtnStd.vue'
4
+ import UBtnToggle from './core/UBtnToggle.vue'
5
+ import URadioStd from './core/URadioStd.vue'
6
+ import UTabsStd from './core/UTabsStd.vue'
7
+ import UTabBtnStd from './core/UTabBtnStd.vue'
8
+ import UMultiSelectStd from './core/UMultiSelectStd.vue'
9
+ import UTooltip from './core/UTooltip.vue'
10
+ import UBannerStd from './core/UBannerStd.vue'
11
+ import UToggleStd from './core/UToggleStd.vue'
12
+ import USelectStd from './core/USelectStd.vue'
13
+ import UTableStd from './core/UTableStd.vue'
14
+ import UAvatar from './core/UAvatar.vue'
15
+ import UAvatarGroup from './core/UAvatarGroup.vue'
16
+ import UBadgeStd from './core/UBadgeStd.vue'
17
+ import UBtnIcon from './core/UBtnIcon.vue'
18
+ import UChip from './core/UChip.vue'
19
+ import UInputAddressLookup from './core/UInputAddressLookup.vue'
20
+ import UInputPhoneStd from './core/UInputPhoneStd.vue'
21
+ import UInputTextStd from './core/UInputTextStd.vue'
22
+ import UDialogStd from './core/UDialogStd.vue'
23
+ import URadioBtn from './core/URadioBtn.vue'
24
+ import UInnerLoader from './core/UInnerLoader.vue'
25
+ import UMenuItem from './core/UMenuItem.vue'
26
+ import UDrawer from './core/UDrawer.vue'
27
+ import UMenuDropdown from './core/UMenuDropdown.vue'
28
+ import UMenuButtonStd from './core/UMenuButtonStd.vue'
29
+ import UBreadCrumbs from './core/UBreadCrumbs.vue'
30
+ import UMenuDropdownAdvancedSearch from './core/UMenuDropdownAdvancedSearch.vue'
31
+ import { useNotify } from '../composables/useNotify.js'
32
+ import { useOverlayLoader } from '../composables/useOverlayLoader.js'
33
+
34
+ export {
35
+ useOverlayLoader,
36
+ useNotify,
37
+ UAvatar,
38
+ UAvatarGroup,
39
+ UBadgeStd,
40
+ UBannerStd,
41
+ UBreadCrumbs,
42
+ UBtnIcon,
43
+ UBtnStd,
44
+ UBtnToggle,
45
+ UCheckboxStd,
46
+ UChip,
47
+ UDialogStd,
48
+ UDrawer,
49
+ UInnerLoader,
50
+ UInputAddressLookup,
51
+ UInputPhoneStd,
52
+ UInputTextStd,
53
+ UMenuButtonStd,
54
+ UMenuDropdown,
55
+ UMenuItem,
56
+ UMultiSelectStd,
57
+ URadioBtn,
58
+ URadioStd,
59
+ USelectStd,
60
+ UTabBtnStd,
61
+ UTableStd,
62
+ UTabsStd,
63
+ UToggleStd,
64
+ UTooltip,
65
+ UMenuDropdownAdvancedSearch,
66
+ }
@@ -0,0 +1,79 @@
1
+ import { useQuasar } from 'quasar'
2
+
3
+ export const useNotify = () => {
4
+ const $q = useQuasar()
5
+
6
+ const handleGetActions = (data) => {
7
+ if (data.actionLabel) {
8
+ return [
9
+ {
10
+ label: data.actionLabel,
11
+ color: 'white',
12
+ noCaps: true,
13
+ unelevated: true,
14
+ class: 'u-notify-action-button',
15
+ handler: data.handler,
16
+ },
17
+ ]
18
+ } else {
19
+ return [
20
+ {
21
+ round: true,
22
+ color: 'white',
23
+ flat: true,
24
+ class: `u-notify-action-icon u-action-icon-${data.type}`,
25
+ icon: 'close',
26
+ handler: data.handler,
27
+ },
28
+ ]
29
+ }
30
+ }
31
+ /**
32
+ * it is chaing the custom icon with font awesome custom class
33
+ * @param {*} icon
34
+ */
35
+
36
+ // Adding class to Notification element to make it customizable
37
+ const handleGetCustomIcon = (icon, randomId) => {
38
+ setTimeout(() => {
39
+ let getNotificationElement = document.querySelector(
40
+ `.q-notification-elem-${randomId}`
41
+ )
42
+ if (getNotificationElement) {
43
+ let childElement = getNotificationElement.querySelector(
44
+ `.q-notification__wrapper .q-notification__content`
45
+ )
46
+ if (childElement.childNodes.length == 1) {
47
+ const iconEleHTML = `<i class='${icon}' aria-label='Custom Icon' style='height:24px; width:24px; font-size: 24px; margin-right: 8px' alt='Custom Icon Alt'></i>`
48
+ childElement.insertAdjacentHTML('afterbegin', iconEleHTML)
49
+ }
50
+ }
51
+ }, 100)
52
+ }
53
+
54
+ const notify = (props) => {
55
+ if (props.label && props.type) {
56
+ let randomId = Math.floor(100000 + Math.random() * 900000)
57
+ let notifyProps = {
58
+ type: props.type === 'accent' ? 'negative' : props.type,
59
+ message: props.label,
60
+ caption: props.message,
61
+ color: props.type,
62
+ timeout: props.timeout,
63
+ classes: `u-notify u-type-${props.type} q-notification-elem-${randomId}`,
64
+ position: props.position,
65
+ progress: props.progress,
66
+ icon: props.icon ? handleGetCustomIcon(props.icon, randomId) : null,
67
+ actions: handleGetActions(props),
68
+ }
69
+
70
+ $q.notify(notifyProps)
71
+ } else {
72
+ console.error(
73
+ 'Error: Failed prop types: The props `label` and `type` are marked as required in Notify, but its values are `undefined'
74
+ )
75
+ }
76
+ }
77
+
78
+ return { notify }
79
+ }
@@ -0,0 +1,23 @@
1
+ import { Loading, QSpinnerGears } from 'quasar'
2
+
3
+ export const useOverlayLoader = () => {
4
+
5
+ const showLoader = (props) => {
6
+
7
+ Loading.show({
8
+ backgroundColor: props?.backgroundColor,
9
+ customClass: props.customClass ? props.customClass : '',
10
+ message: props?.message,
11
+ messageColor: props.messageColor ? props.messageColor: 'dark',
12
+ spinner: props.spinner ? props.spinner : QSpinnerGears,
13
+ spinnerSize: props.spinnerSize ? props.spinnerSize : '6rem',
14
+ spinnerColor: props?.spinnerColor
15
+ })
16
+ }
17
+
18
+ const hideLoader = () =>{
19
+ Loading.hide()
20
+ }
21
+
22
+ return { showLoader, hideLoader }
23
+ }
@@ -0,0 +1,159 @@
1
+ @import './vars/colors.variables'
2
+ @import './colors'
3
+ @import './typography'
4
+ @import 'flag-icons/css/flag-icons.min'
5
+
6
+ // @import './media'
7
+
8
+ *
9
+ font-family: 'neue-haas-grotesk-text', 'Helvetica Neue', 'Helvetica', 'Arial', 'sans-serif'
10
+
11
+ //FOCUS CLASSES
12
+
13
+ .focus-primary
14
+ &:focus
15
+ box-shadow: 0 0 0 2px rgba(35, 75, 169, .20)
16
+
17
+ .focus-positive
18
+ &:focus
19
+ box-shadow: 0 0 0 2px rgba(36, 133, 96, .20)
20
+
21
+ .focus-warning
22
+ &:focus
23
+ box-shadow: 0 0 0 2px rgba(254, 78, 17, .20)
24
+
25
+ .focus-accent
26
+ &:focus
27
+ box-shadow: 0 0 0 2px rgba(203, 42, 61, .20)
28
+
29
+ .focus-info
30
+ &:focus
31
+ box-shadow: 0 0 0 2px rgba(92, 74, 184, .20)
32
+
33
+ .focus-neutral
34
+ &:focus
35
+ box-shadow: 0 0 0 2px rgba(220, 225, 233, .20)
36
+
37
+ //Shadow CLASSES
38
+
39
+ .shadow-1
40
+ box-shadow: 0px 0px 4px 0px rgba(16, 17, 20, 0.08)
41
+
42
+ .shadow-2
43
+ box-shadow: 0px 0px 8px 0px rgba(16, 17, 20, 0.12)
44
+
45
+ .shadow-3
46
+ box-shadow: 0px 12px 12px 0px rgba(16, 17, 20, 0.16)
47
+
48
+ .shadow-4
49
+ box-shadow: 0px 0px 16px 0px rgba(16, 17, 20, 0.20)
50
+
51
+ .shadow-down-1
52
+ box-shadow: 0px 2px 2px 0px rgba(16, 17, 20, 0.04)
53
+
54
+ .shadow-down-2
55
+ box-shadow: 0px 4px 4px 0px rgba(16, 17, 20, 0.08)
56
+
57
+ .shadow-down-3
58
+ box-shadow: 0px 8px 8px 0px rgba(16, 17, 20, 0.12)
59
+
60
+ .shadow-down-4
61
+ box-shadow: 0px 12px 12px 0px rgba(16, 17, 20, 0.16)
62
+
63
+ .shadow-up-1
64
+ box-shadow: 0px -2px 2px 0px rgba(16, 17, 20, 0.04)
65
+
66
+ .shadow-up-2
67
+ box-shadow: 0px -4px 4px 0px rgba(16, 17, 20, 0.08)
68
+
69
+ .shadow-up-3
70
+ box-shadow: 0px -8px 8px 0px rgba(16, 17, 20, 0.12)
71
+
72
+ .shadow-up-4
73
+ box-shadow: 0px -12px 12px 0px rgba(16, 17, 20, 0.16)
74
+
75
+
76
+ // NOTIFY Custom CLASSES
77
+
78
+ .u-notify
79
+ width: 25.25rem
80
+ min-height: $xxl
81
+ border-radius: $xs
82
+ padding: $sm $sm $xs $sm
83
+ box-shadow: 0px 0px 8px 0px rgba(16, 17, 20, 0.12)
84
+
85
+ .q-notification__actions
86
+ padding: 0rem 0.5rem
87
+
88
+ .q-notification__progress
89
+ width: 25.25rem
90
+ bottom: -0.5rem
91
+ border-radius: 0rem 0.25rem
92
+ height: 0.25rem
93
+
94
+ .q-notification__content
95
+ .q-icon
96
+ margin-right: $xs
97
+
98
+ .q-notification__message
99
+ padding: 0rem
100
+ > div:first-child
101
+ font-size: 0.875rem
102
+ font-weight: 500
103
+ line-height: 1.25rem
104
+ letter-spacing: 0.03333rem
105
+
106
+ .q-notification__caption
107
+ font-size: 0.75rem
108
+ font-weight: 400
109
+ line-height: 1.25rem
110
+ letter-spacing: 0.01786rem
111
+
112
+ .u-notify-action-button
113
+ height: $lg
114
+ min-width: 5.5rem
115
+ padding: 0rem $ba
116
+ border-radius: $xs
117
+
118
+ .u-notify-action-icon
119
+ background: transparent !important
120
+
121
+ .u-action-icon-positive
122
+ .q-icon
123
+ color: $positive
124
+ .u-action-icon-info
125
+ .q-icon
126
+ color: $info
127
+ .u-action-icon-warning
128
+ .q-icon
129
+ color: $warning
130
+ .u-action-icon-accent
131
+ .q-icon
132
+ color: $accent
133
+
134
+ .u-type-positive
135
+ background: $green-2 !important
136
+ color: $green-7 !important
137
+ .q-btn
138
+ background: $positive
139
+
140
+ .u-type-info
141
+ background: $purple-1 !important
142
+ color: $purple-7 !important
143
+ .q-btn
144
+ background: $info
145
+
146
+ .u-type-warning
147
+ background: $orange-1 !important
148
+ color: $orange-7 !important
149
+ .q-btn
150
+ background: $warning
151
+
152
+ .u-type-accent
153
+ background: $red-1 !important
154
+ color: $red-7 !important
155
+ .q-btn
156
+ background: $accent
157
+
158
+ .icon-secondary-opacity
159
+ --fa-secondary-opacity: 0.20