@simsustech/quasar-components 0.11.10 → 0.11.12

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 (69) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/LocaleSelect.vue_vue_type_script_setup_true_lang-Du4fNbTV.js +573 -0
  3. package/dist/authentication.js +152 -66
  4. package/dist/form.js +155 -300
  5. package/dist/general.js +44 -195
  6. package/dist/md3.js +459 -0
  7. package/dist/{nl-BTgHOvpQ.js → nl-BJwNz421.js} +70 -0
  8. package/dist/{nl-jHKPHlmh.js → nl-CneFq5NZ.js} +4 -0
  9. package/dist/nl-NLgZUAKl.js +6 -0
  10. package/dist/types/ui/authentication/EmailChangeForm.vue.d.ts +2 -2
  11. package/dist/types/ui/authentication/LoginButton.vue.d.ts +1 -1
  12. package/dist/types/ui/authentication/LoginForm.vue.d.ts +2 -2
  13. package/dist/types/ui/authentication/LogoutButton.vue.d.ts +12 -0
  14. package/dist/types/ui/authentication/LogoutForm.vue.d.ts +18 -0
  15. package/dist/types/ui/authentication/PasswordChangeForm.vue.d.ts +2 -2
  16. package/dist/types/ui/authentication/RegisterForm.vue.d.ts +2 -2
  17. package/dist/types/ui/authentication/RequestOtpForm.vue.d.ts +2 -2
  18. package/dist/types/ui/authentication/UserMenuButton.vue.d.ts +1 -1
  19. package/dist/types/ui/authentication/index.d.ts +2 -0
  20. package/dist/types/ui/authentication/lang/index.d.ts +12 -0
  21. package/dist/types/ui/form/DateInput.vue.d.ts +11 -1
  22. package/dist/types/ui/form/FormInput.vue.d.ts +2 -15
  23. package/dist/types/ui/form/FormItem.vue.d.ts +2 -19
  24. package/dist/types/ui/form/LocaleSelect.vue.d.ts +6 -4
  25. package/dist/types/ui/form/lang/index.d.ts +1131 -0
  26. package/dist/types/ui/general/QDrawerList.vue.d.ts +2 -7
  27. package/dist/types/ui/general/QLanguageSelect.vue.d.ts +7 -4
  28. package/dist/types/ui/general/QStyledCard.vue.d.ts +9 -5
  29. package/dist/types/ui/general/QStyledLayout.vue.d.ts +1 -1
  30. package/dist/types/ui/general/QSubmitButton.vue.d.ts +1 -1
  31. package/dist/types/ui/general/ResourcePage.vue.d.ts +9 -5
  32. package/dist/types/ui/general/ResponsiveDialog.vue.d.ts +3 -2
  33. package/dist/types/ui/general/index.d.ts +0 -1
  34. package/dist/types/ui/md3/Md3Layout.vue.d.ts +31 -0
  35. package/dist/types/ui/md3/NavigationRailFabs.vue.d.ts +15 -0
  36. package/dist/types/ui/md3/index.d.ts +3 -0
  37. package/dist/types/ui/md3/lang/en-US.d.ts +3 -0
  38. package/dist/types/ui/md3/lang/index.d.ts +12 -0
  39. package/dist/types/ui/md3/lang/nl.d.ts +3 -0
  40. package/package.json +21 -14
  41. package/src/ui/authentication/LogoutButton.vue +31 -0
  42. package/src/ui/authentication/LogoutForm.vue +49 -0
  43. package/src/ui/authentication/UserMenuButton.vue +1 -1
  44. package/src/ui/authentication/index.ts +2 -0
  45. package/src/ui/authentication/lang/en-US.ts +4 -0
  46. package/src/ui/authentication/lang/index.ts +4 -0
  47. package/src/ui/authentication/lang/nl.ts +4 -0
  48. package/src/ui/form/DateInput.vue +42 -23
  49. package/src/ui/form/LocaleSelect.vue +29 -43
  50. package/src/ui/form/lang/en-US.ts +377 -0
  51. package/src/ui/form/lang/index.ts +377 -0
  52. package/src/ui/form/lang/nl.ts +377 -0
  53. package/src/ui/general/QLanguageSelect.vue +30 -106
  54. package/src/ui/general/{QLanguageSelectBtn.vue → QLanguageSelectBtn.vue.bak} +1 -1
  55. package/src/ui/general/QStyledCard.vue +2 -2
  56. package/src/ui/general/ResponsiveDialog.vue +14 -4
  57. package/src/ui/general/index.ts +1 -1
  58. package/src/ui/md3/Md3Layout.vue +142 -0
  59. package/src/ui/md3/NavigationRailFabs.vue +89 -0
  60. package/src/ui/md3/index.ts +3 -0
  61. package/src/ui/md3/lang/en-US.ts +7 -0
  62. package/src/ui/md3/lang/index.ts +41 -0
  63. package/src/ui/md3/lang/nl.ts +7 -0
  64. package/vite.config.ts +4 -3
  65. package/dist/flags.js +0 -255
  66. package/dist/icons.js +0 -25
  67. package/dist/index-DnmJt2wP.js +0 -7921
  68. package/dist/nl-BL9hHEHL.js +0 -76
  69. package/dist/types/ui/general/QLanguageSelectBtn.vue.d.ts +0 -11
@@ -0,0 +1,142 @@
1
+ <template>
2
+ <q-layout view="lHh Lpr lFf">
3
+ <div v-show="ready">
4
+ <q-header>
5
+ <q-toolbar>
6
+ <q-btn
7
+ v-if="!miniState"
8
+ flat
9
+ dense
10
+ round
11
+ aria-label="Menu"
12
+ icon="i-mdi-menu"
13
+ @click="toggleLeftDrawer()"
14
+ >
15
+ </q-btn>
16
+ <slot name="header-toolbar" />
17
+ </q-toolbar>
18
+ </q-header>
19
+
20
+ <q-drawer
21
+ ref="drawerRef"
22
+ :model-value="leftDrawerOpen"
23
+ :width="360"
24
+ :mini-width="80"
25
+ :mini="miniState"
26
+ show-if-above
27
+ bordered
28
+ @hide="onDrawerHide"
29
+ @update:model-value="toggleLeftDrawer"
30
+ @mouseleave="debouncedToggleMiniState(true)"
31
+ >
32
+ <template #mini>
33
+ <div
34
+ :class="{
35
+ column: true,
36
+ 'items-center': miniState,
37
+ 'pr-0': true
38
+ }"
39
+ >
40
+ <q-btn
41
+ flat
42
+ dense
43
+ round
44
+ aria-label="Menu"
45
+ icon="i-mdi-menu"
46
+ class="q-mb-md"
47
+ @click="toggleLeftDrawer()"
48
+ >
49
+ </q-btn>
50
+ <div id="fabs" class="q-mb-md">
51
+ <slot name="fabs" :show-sticky="false" />
52
+ </div>
53
+
54
+ <div id="spacing" class="gt-md min-h-32px" />
55
+
56
+ <slot name="drawer-mini-navigation" />
57
+ </div>
58
+ </template>
59
+ <slot name="drawer" />
60
+ </q-drawer>
61
+
62
+ <q-footer class="h-80px lt-md">
63
+ <slot name="footer" />
64
+ </q-footer>
65
+
66
+ <q-page-container>
67
+ <router-view />
68
+ <slot name="fabs" :show-sticky="true" />
69
+ </q-page-container>
70
+ </div>
71
+ </q-layout>
72
+ </template>
73
+
74
+ <script setup lang="ts">
75
+ import { ref, onMounted, watch } from 'vue'
76
+ import { debounce, useQuasar } from 'quasar'
77
+
78
+ import { QDrawer } from 'quasar'
79
+ import { onClickOutside } from '@vueuse/core'
80
+
81
+ interface Props {
82
+ ready?: boolean
83
+ }
84
+
85
+ withDefaults(defineProps<Props>(), {
86
+ ready: true
87
+ })
88
+
89
+ const $q = useQuasar()
90
+ const drawerRef = ref<QDrawer>()
91
+ const leftDrawerOpen = ref(false)
92
+ const miniState = ref(false)
93
+
94
+ // Small screen: toggle leftDrawerOpen, large screen: toggle miniState
95
+ // Prevent unresponsiveness with screen changes and drawer opened
96
+ watch(
97
+ () => $q.screen.height,
98
+ () => {
99
+ toggleLeftDrawer(false)
100
+ if (!import.meta.env.SSR && $q.screen.gt.sm) {
101
+ miniState.value = true
102
+ } else {
103
+ miniState.value = false
104
+ }
105
+ }
106
+ )
107
+
108
+ const toggleLeftDrawer = (val?: boolean) => {
109
+ leftDrawerOpen.value = val ?? $q.screen.gt.sm
110
+ if (!import.meta.env.SSR && $q.screen.gt.sm) {
111
+ leftDrawerOpen.value = val ?? $q.screen.gt.sm
112
+ miniState.value = !miniState.value
113
+ } else {
114
+ leftDrawerOpen.value = val ?? !leftDrawerOpen.value
115
+ miniState.value = false
116
+ }
117
+ }
118
+
119
+ const toggleMiniState = (val?: boolean) => {
120
+ if ($q.screen.gt.sm) {
121
+ leftDrawerOpen.value = true
122
+ miniState.value = val ?? !miniState.value
123
+ }
124
+ }
125
+
126
+ const onDrawerHide = () => {
127
+ if (!import.meta.env.SSR && $q.screen.gt.sm) {
128
+ miniState.value = true
129
+ leftDrawerOpen.value = true
130
+ }
131
+ }
132
+ const debouncedToggleMiniState = debounce(toggleMiniState, 500)
133
+
134
+ onClickOutside(drawerRef, () => toggleMiniState(true))
135
+
136
+ onMounted(() => {
137
+ console.log($q.screen)
138
+ if ($q.screen.gt.sm) {
139
+ toggleMiniState(true)
140
+ }
141
+ })
142
+ </script>
@@ -0,0 +1,89 @@
1
+ <template>
2
+ <div v-if="!showSticky">
3
+ <q-btn
4
+ v-if="busEmits.add && type === 'add'"
5
+ id="fabAdd"
6
+ :class="{
7
+ 'gt-sm': true,
8
+ animated: !!seekAttention,
9
+ 'animated-tada': !!seekAttention,
10
+ 'animated-infinite': !!seekAttention
11
+ }"
12
+ fab
13
+ :icon="addIcon"
14
+ @click="bus.emit(busEmits.add)"
15
+ />
16
+ <q-btn
17
+ v-if="busEmits.edit && type === 'edit'"
18
+ id="fabEdit"
19
+ :class="{
20
+ 'gt-sm': true,
21
+ animated: !!seekAttention,
22
+ 'animated-tada': !!seekAttention,
23
+ 'animated-infinite': !!seekAttention
24
+ }"
25
+ fab
26
+ :icon="editIcon"
27
+ @click="bus.emit(busEmits.edit)"
28
+ />
29
+ </div>
30
+ <q-page-sticky v-if="showSticky" position="bottom-right" :offset="[18, 18]">
31
+ <q-btn
32
+ v-if="busEmits.add && type === 'add'"
33
+ :class="{
34
+ 'lt-md': true,
35
+ animated: !!seekAttention,
36
+ 'animated-tada': !!seekAttention,
37
+ 'animated-infinite': !!seekAttention
38
+ }"
39
+ fab
40
+ :icon="addIcon"
41
+ @click="bus.emit(busEmits.add)"
42
+ />
43
+ <q-btn
44
+ v-if="busEmits.edit && type === 'edit'"
45
+ :class="{
46
+ 'lt-md': true,
47
+ animated: !!seekAttention,
48
+ 'animated-tada': !!seekAttention,
49
+ 'animated-infinite': !!seekAttention
50
+ }"
51
+ fab
52
+ :icon="editIcon"
53
+ @click="bus.emit(busEmits.edit)"
54
+ />
55
+ </q-page-sticky>
56
+ </template>
57
+
58
+ <script lang="ts" setup>
59
+ import { EventBus } from 'quasar'
60
+ import { inject, toRefs } from 'vue'
61
+
62
+ interface Props {
63
+ type?: 'add' | 'edit'
64
+ showSticky?: boolean
65
+ seekAttention?: boolean
66
+ busEmits: {
67
+ add?: string
68
+ edit?: string
69
+ }
70
+ icons?: {
71
+ add: string
72
+ edit: string
73
+ }
74
+ }
75
+ const props = defineProps<Props>()
76
+
77
+ const { type, icons } = toRefs(props)
78
+
79
+ if (!type.value) type.value = 'add'
80
+
81
+ const bus = inject<EventBus>('bus')
82
+ if (!bus)
83
+ throw new Error(
84
+ 'Event bus not initialized (https://quasar.dev/quasar-utils/event-bus-util)'
85
+ )
86
+
87
+ const addIcon = icons.value?.add ?? 'add'
88
+ const editIcon = icons.value?.edit ?? 'edit'
89
+ </script>
@@ -0,0 +1,3 @@
1
+ export { default as NavigationRailFabs } from './NavigationRailFabs.vue'
2
+ export { default as Md3Layout } from './Md3Layout.vue'
3
+ export { useLang, loadLang } from './lang/index.js'
@@ -0,0 +1,7 @@
1
+ import type { Language } from '../lang'
2
+
3
+ const lang: Language = {
4
+ isoName: 'en-US'
5
+ }
6
+
7
+ export default lang
@@ -0,0 +1,41 @@
1
+ export interface Language {
2
+ isoName: string
3
+ }
4
+
5
+ import type { Ref } from 'vue'
6
+ import { ref } from 'vue'
7
+ import en from './en-US'
8
+ export const lang = ref(en)
9
+
10
+ const locales = import.meta.glob<{ default: Language }>([
11
+ './*.ts',
12
+ '!./index.ts'
13
+ ])
14
+
15
+ export const defineLang = (lang: Language) => {
16
+ return lang
17
+ }
18
+
19
+ export const useLang = () => {
20
+ return lang as Ref<Language>
21
+ }
22
+
23
+ let loadingLanguage = false
24
+ export const loadLang = async (isoName: string) => {
25
+ if (!loadingLanguage) {
26
+ loadingLanguage = true
27
+ try {
28
+ const data = (await locales[`./${isoName}.ts`]()).default
29
+
30
+ if (data) {
31
+ lang.value = data
32
+ }
33
+ } catch (e) {
34
+ if (import.meta.env.DEBUG) console.error(e)
35
+ throw new Error(
36
+ `[quasar-components] Failed to load ${isoName} language file.`
37
+ )
38
+ }
39
+ loadingLanguage = false
40
+ }
41
+ }
@@ -0,0 +1,7 @@
1
+ import type { Language } from '../lang'
2
+
3
+ const lang: Language = {
4
+ isoName: 'nl'
5
+ }
6
+
7
+ export default lang
package/vite.config.ts CHANGED
@@ -52,9 +52,10 @@ export default defineConfig(async ({ command, mode }) => ({
52
52
  import.meta.url
53
53
  ).pathname,
54
54
  general: new URL('./src/ui/general/index.ts', import.meta.url).pathname,
55
- flags: new URL('./src/ui/flags/index.ts', import.meta.url).pathname,
56
- icons: new URL('./src/ui/icons/index.ts', import.meta.url).pathname,
57
- form: new URL('./src/ui/form/index.ts', import.meta.url).pathname
55
+ // flags: new URL('./src/ui/flags/index.ts', import.meta.url).pathname,
56
+ // icons: new URL('./src/ui/icons/index.ts', import.meta.url).pathname,
57
+ form: new URL('./src/ui/form/index.ts', import.meta.url).pathname,
58
+ md3: new URL('./src/ui/md3/index.ts', import.meta.url).pathname
58
59
  },
59
60
  output: {
60
61
  // entryFileNames: '[name].js',
package/dist/flags.js DELETED
@@ -1,255 +0,0 @@
1
- import { g, cR, a, k, i, b, m, h, j, l, c, p, o, n, d5, q, E, v, t, x, L, K, s, M, z, c5, A, J, C, D, H, r, B, G, F, w, y, P, X, $, S, _, cz, a7, a0, U, O, V, Y, a1, a3, Q, a4, W, a5, a6, av, a9, a8, aa, ab, d, ac, ah, ad, d1, e, ag, ct, aj, an, am, ak, bt, al, ao, as, cS, aA, au, ap, aE, aw, ax, az, at, aF, aB, af, ay, cr, aD, aC, aG, aH, aM, aJ, aL, a2, aI, aN, aQ, aP, aT, aV, aU, I, aS, aR, aO, aW, aZ, aX, a_, aY, b0, b5, N, b1, Z, c7, b2, b3, b4, R, a$, b6, b8, c8, bc, cu, d6, ba, b9, bd, be, b7, bb, bz, bv, bu, bx, c9, bh, bn, bg, bl, bB, bw, bf, bN, bo, bp, by, bm, bq, bk, bi, bs, bj, bA, bC, bG, bJ, bM, bK, bI, bF, bO, bE, bD, bL, bH, bP, bT, bW, aq, bU, bX, bQ, bZ, ca, bY, b$, bS, b_, bR, bV, c0, c4, c1, ch, c2, c3, cf, co, ci, cv, cy, ck, c6, cn, cx, cm, cj, cd, cg, cp, cw, cs, ce, ae, cl, cA, ai, cN, T, ar, cG, cE, cC, cH, cF, cM, cK, cI, cL, cJ, cO, cB, cD, cQ, cP, cU, cT, u, cV, cW, aK, cb, cY, c_, c$, cZ, cX, d0, cc, d2, br, cq, d3, d4 } from "./index-DnmJt2wP.js";
2
- export {
3
- g as ad,
4
- cR as ae,
5
- a as af,
6
- k as ag,
7
- i as ai,
8
- b as al,
9
- m as am,
10
- h as ao,
11
- j as aq,
12
- l as ar,
13
- c as as,
14
- p as at,
15
- o as au,
16
- n as aw,
17
- d5 as ax,
18
- q as az,
19
- E as ba,
20
- v as bb,
21
- t as bd,
22
- x as be,
23
- L as bf,
24
- K as bg,
25
- s as bh,
26
- M as bi,
27
- z as bj,
28
- c5 as bl,
29
- A as bm,
30
- J as bn,
31
- C as bo,
32
- D as bq,
33
- H as br,
34
- r as bs,
35
- B as bt,
36
- G as bv,
37
- F as bw,
38
- w as by,
39
- y as bz,
40
- P as ca,
41
- X as cc,
42
- $ as cd,
43
- S as cf,
44
- _ as cg,
45
- cz as ch,
46
- a7 as ci,
47
- a0 as ck,
48
- U as cl,
49
- O as cm,
50
- V as cn,
51
- Y as co,
52
- a1 as cr,
53
- a3 as cu,
54
- Q as cv,
55
- a4 as cw,
56
- W as cx,
57
- a5 as cy,
58
- a6 as cz,
59
- av as de,
60
- a9 as dj,
61
- a8 as dk,
62
- aa as dm,
63
- ab as dom,
64
- d as dz,
65
- ac as ec,
66
- ah as ee,
67
- ad as eg,
68
- d1 as eh,
69
- e as enUs,
70
- ag as er,
71
- ct as es,
72
- aj as et,
73
- an as fi,
74
- am as fj,
75
- ak as fk,
76
- bt as fm,
77
- al as fo,
78
- ao as fr,
79
- as as ga,
80
- cS as gb,
81
- aA as gd,
82
- au as ge,
83
- ap as gf,
84
- aE as gg,
85
- aw as gh,
86
- ax as gi,
87
- az as gl,
88
- at as gm,
89
- aF as gn,
90
- aB as gp,
91
- af as gq,
92
- ay as gr,
93
- cr as gs,
94
- aD as gt,
95
- aC as gu,
96
- aG as gw,
97
- aH as gy,
98
- aM as hk,
99
- aJ as hm,
100
- aL as hn,
101
- a2 as hr,
102
- aI as ht,
103
- aN as hu,
104
- aQ as id,
105
- aP as idn,
106
- aT as ie,
107
- aV as il,
108
- aU as im,
109
- I as io,
110
- aS as iq,
111
- aR as ir,
112
- aO as is,
113
- aW as it,
114
- aZ as je,
115
- aX as jm,
116
- a_ as jo,
117
- aY as jp,
118
- b0 as ke,
119
- b5 as kg,
120
- N as kh,
121
- b1 as ki,
122
- Z as km,
123
- c7 as kn,
124
- b2 as kp,
125
- b3 as kr,
126
- b4 as kw,
127
- R as ky,
128
- a$ as kz,
129
- b6 as la,
130
- b8 as lb,
131
- c8 as lc,
132
- bc as li,
133
- cu as lk,
134
- d6 as loadLang,
135
- ba as lr,
136
- b9 as ls,
137
- bd as lt,
138
- be as lu,
139
- b7 as lv,
140
- bb as ly,
141
- bz as ma,
142
- bv as mc,
143
- bu as md,
144
- bx as me,
145
- c9 as mf,
146
- bh as mg,
147
- bn as mh,
148
- bg as mk,
149
- bl as ml,
150
- bB as mm,
151
- bw as mn,
152
- bf as mo,
153
- bN as mp,
154
- bo as mq,
155
- bp as mr,
156
- by as ms,
157
- bm as mt,
158
- bq as mu,
159
- bk as mv,
160
- bi as mw,
161
- bs as mx,
162
- bj as my,
163
- bA as mz,
164
- bC as na,
165
- bG as nc,
166
- bJ as ne,
167
- bM as nf,
168
- bK as ng,
169
- bI as ni,
170
- bF as nl,
171
- bO as no,
172
- bE as np,
173
- bD as nr,
174
- bL as nu,
175
- bH as nz,
176
- bP as om,
177
- bT as pa,
178
- bW as pe,
179
- aq as pf,
180
- bU as pg,
181
- bX as ph,
182
- bQ as pk,
183
- bZ as pl,
184
- ca as pm,
185
- bY as pn,
186
- b$ as pr,
187
- bS as ps,
188
- b_ as pt,
189
- bR as pw,
190
- bV as py,
191
- c0 as qa,
192
- c4 as re,
193
- c1 as ro,
194
- ch as rs,
195
- c2 as ru,
196
- c3 as rw,
197
- cf as sa,
198
- co as sb,
199
- ci as sc,
200
- cv as sd,
201
- cy as se,
202
- ck as sg,
203
- c6 as sh,
204
- cn as si,
205
- cx as sj,
206
- cm as sk,
207
- cj as sl,
208
- cd as sm,
209
- cg as sn,
210
- cp as so,
211
- cw as sr,
212
- cs as ss,
213
- ce as st,
214
- ae as sv,
215
- cl as sx,
216
- cA as sy,
217
- ai as sz,
218
- cN as tc,
219
- T as td,
220
- ar as tf,
221
- cG as tg,
222
- cE as th,
223
- cC as tj,
224
- cH as tk,
225
- cF as tl,
226
- cM as tm,
227
- cK as tn,
228
- cI as to,
229
- cL as tr,
230
- cJ as tt,
231
- cO as tv,
232
- cB as tw,
233
- cD as tz,
234
- cQ as ua,
235
- cP as ug,
236
- cU as um,
237
- cT as us,
238
- u as useLang,
239
- cV as uy,
240
- cW as uz,
241
- aK as va,
242
- cb as vc,
243
- cY as ve,
244
- c_ as vg,
245
- c$ as vi,
246
- cZ as vn,
247
- cX as vu,
248
- d0 as wf,
249
- cc as ws,
250
- d2 as ye,
251
- br as yt,
252
- cq as za,
253
- d3 as zm,
254
- d4 as zw
255
- };
package/dist/icons.js DELETED
@@ -1,25 +0,0 @@
1
- import { ref, h } from "vue";
2
- import { useQuasar, QIcon } from "quasar";
3
- const icon = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20aria-label='Microsoft'%20role='img'%20viewBox='0%200%20512%20512'%3e%3crect%20width='512'%20height='512'%20rx='15%25'%20fill='%23fff'/%3e%3cpath%20d='M75%2075v171h171v-171z'%20fill='%23f25022'/%3e%3cpath%20d='M266%2075v171h171v-171z'%20fill='%237fba00'/%3e%3cpath%20d='M75%20266v171h171v-171z'%20fill='%2300a4ef'/%3e%3cpath%20d='M266%20266v171h171v-171z'%20fill='%23ffb900'/%3e%3c/svg%3e";
4
- const labels = {
5
- microsoft: {
6
- name: "Microsoft"
7
- }
8
- };
9
- const microsoft = {
10
- setup(props, context) {
11
- useQuasar();
12
- const variables = ref(labels["microsoft"]);
13
- const functions = ref({
14
- // submit
15
- });
16
- context.expose({
17
- variables,
18
- functions
19
- });
20
- return () => h(QIcon, { name: `img:${icon}` });
21
- }
22
- };
23
- export {
24
- microsoft
25
- };