@d-mok/quasar-app-extension-quasar-axe 3.0.1 → 3.1.2

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 (62) hide show
  1. package/.gitattributes +2 -2
  2. package/package.json +43 -46
  3. package/shims-vue.d.ts +5 -5
  4. package/src/index.js +41 -31
  5. package/src/install.js +6 -6
  6. package/src/prompts.js +3 -3
  7. package/src/templates/src/boot/axe/AutoReg.ts +18 -18
  8. package/src/templates/src/boot/axe/AutoRoute.ts +40 -40
  9. package/src/templates/src/boot/axe/Interceptor.ts +86 -86
  10. package/src/templates/src/boot/axe/LoadEnd.ts +8 -0
  11. package/src/templates/src/boot/axe/LoadStart.ts +8 -0
  12. package/src/templates/src/boot/axe/SetPrimaryColor.ts +10 -0
  13. package/src/templates/src/boot/axe/components/QxBtn.vue +26 -30
  14. package/src/templates/src/boot/axe/components/QxBtnIcon.vue +11 -11
  15. package/src/templates/src/boot/axe/components/QxBtnToggle.vue +26 -42
  16. package/src/templates/src/boot/axe/components/QxFloatBtn.vue +46 -46
  17. package/src/templates/src/boot/axe/components/QxImg.vue +22 -22
  18. package/src/templates/src/boot/axe/components/QxInputAutocomplete.vue +54 -51
  19. package/src/templates/src/boot/axe/components/QxLayout.vue +137 -123
  20. package/src/templates/src/boot/axe/components/QxMenuItem.vue +37 -36
  21. package/src/templates/src/boot/axe/components/QxPlate.vue +154 -151
  22. package/src/templates/src/boot/axe/components/QxRadio.vue +26 -42
  23. package/src/templates/src/boot/axe/components/QxSelect.vue +68 -57
  24. package/src/templates/src/boot/axe/components/QxSelectMultiple.vue +81 -0
  25. package/src/templates/src/boot/axe/components/QxSignoutBtn.vue +16 -16
  26. package/src/templates/src/boot/axe/components/QxText.vue +34 -37
  27. package/src/templates/src/boot/axe/components/QxTick.vue +14 -0
  28. package/src/templates/src/boot/axe/components/QxWidget.vue +49 -67
  29. package/src/templates/src/utils/csv.ts +16 -16
  30. package/src/templates/src/utils/dialog/advanced.ts +266 -213
  31. package/src/templates/src/utils/dialog/basic.ts +193 -164
  32. package/src/templates/src/utils/dialog/custom/dialogBtn.vue +49 -49
  33. package/src/templates/src/utils/dialog/custom/dialogFile.vue +54 -0
  34. package/src/templates/src/utils/dialog/custom/dialogForm.vue +139 -128
  35. package/src/templates/src/utils/dialog/custom/dialogTable.vue +155 -123
  36. package/src/templates/src/utils/dialog/custom/dialogTextarea.vue +54 -54
  37. package/src/templates/src/utils/dialog/custom/handson.vue +136 -133
  38. package/src/templates/src/utils/dialog/custom/schema.ts +100 -96
  39. package/src/templates/src/utils/dialog/index.ts +4 -4
  40. package/src/templates/src/utils/extension.ts +13 -0
  41. package/src/templates/src/utils/fetchJSON.ts +48 -0
  42. package/src/templates/src/utils/index.ts +25 -20
  43. package/src/templates/src/utils/notify.ts +46 -35
  44. package/src/templates/src/utils/puppets/ORM.ts +214 -0
  45. package/src/templates/src/utils/puppets/builder/index.ts +226 -226
  46. package/src/templates/src/utils/puppets/builder/ui.ts +31 -31
  47. package/src/templates/src/utils/puppets/core/db.ts +127 -157
  48. package/src/templates/src/utils/puppets/core/index.ts +44 -47
  49. package/src/templates/src/utils/puppets/index.ts +1 -2
  50. package/src/templates/src/utils/puppets/test.ts +80 -0
  51. package/src/templates/src/utils/puppets/type.ts +15 -13
  52. package/src/templates/src/utils/storage.ts +147 -0
  53. package/src/templates/src/utils/supabase.ts +125 -130
  54. package/src/templates/src/utils/{dialog/tool.ts → tool.ts} +11 -11
  55. package/src/templates/src/utils/zip.ts +43 -43
  56. package/src/uninstall.js +5 -5
  57. package/tsconfig.json +76 -76
  58. package/src/templates/src/boot/axe/components/QxSortable.vue +0 -65
  59. package/src/templates/src/utils/puppets/entity.ts +0 -45
  60. package/src/templates/src/utils/puppets/table.ts +0 -229
  61. package/src/templates/src/utils/settings.ts +0 -20
  62. package/src/templates/src/utils/supabase2.ts +0 -128
package/.gitattributes CHANGED
@@ -1,2 +1,2 @@
1
- # Auto detect text files and perform LF normalization
2
- * text=auto
1
+ # Auto detect text files and perform LF normalization
2
+ * text=auto
package/package.json CHANGED
@@ -1,46 +1,43 @@
1
- {
2
- "name": "@d-mok/quasar-app-extension-quasar-axe",
3
- "version": "3.0.1",
4
- "description": "A Quasar App Extension",
5
- "author": "d-mok <49301824+d-mok@users.noreply.github.com>",
6
- "license": "MIT",
7
- "main": "src/index.js",
8
- "scripts": {
9
- "publish-package": "npm version patch --no-git-tag-version && npm publish --access public"
10
- },
11
- "engines": {
12
- "node": ">= 8.9.0",
13
- "npm": ">= 5.6.0",
14
- "yarn": ">= 1.6.0"
15
- },
16
- "dependencies": {
17
- "@handsontable/vue3": "^12.1.0",
18
- "@supabase/supabase-js": "^2.24.0",
19
- "@types/lodash": "^4.14.182",
20
- "@types/papaparse": "^5.3.2",
21
- "@types/webpack-env": "^1.17.0",
22
- "@vueuse/core": "^9.1.0",
23
- "handsontable": "^12.1.0",
24
- "jszip": "^3.9.0",
25
- "lodash": "^4.17.21",
26
- "papaparse": "^5.3.2",
27
- "sapphire-js": "^2.0.4",
28
- "vuedraggable": "^4.1.0"
29
- },
30
- "devDependencies": {
31
- "@quasar/app": "^3.3.3",
32
- "@quasar/extras": "^1.14.2",
33
- "@types/node": "^17.0.45",
34
- "core-js": "^3.23.3",
35
- "quasar": "^2.7.3",
36
- "typescript": "^4.7.4",
37
- "vite": "^2.9.12"
38
- },
39
- "prettier": {
40
- "tabWidth": 4,
41
- "semi": false,
42
- "singleQuote": true,
43
- "arrowParens": "avoid",
44
- "singleAttributePerLine": true
45
- }
46
- }
1
+ {
2
+ "name": "@d-mok/quasar-app-extension-quasar-axe",
3
+ "version": "3.1.2",
4
+ "description": "A Quasar App Extension",
5
+ "main": "src/index.js",
6
+ "scripts": {
7
+ "publish-package": "npm version patch --no-git-tag-version && npm publish --access public"
8
+ },
9
+ "dependencies": {
10
+ "@handsontable/vue3": "^14.0.0",
11
+ "@supabase/supabase-js": "^2.39.1",
12
+ "@types/lodash": "^4.14.195",
13
+ "@types/papaparse": "^5.3.7",
14
+ "@types/webpack-env": "^1.18.1",
15
+ "@vueuse/core": "^10.7.0",
16
+ "@vueuse/integrations": "^10.7.0",
17
+ "@vueuse/router": "^10.7.0",
18
+ "handsontable": "^14.0.0",
19
+ "jszip": "^3.10.1",
20
+ "lodash": "^4.17.21",
21
+ "mime-types": "^2.1.35",
22
+ "papaparse": "^5.4.1",
23
+ "sapphire-js": "^2.1.21",
24
+ "sortablejs": "^1.15.0"
25
+ },
26
+ "devDependencies": {
27
+ "@quasar/app-vite": "^2.0.5",
28
+ "@quasar/extras": "^1.16.12 ",
29
+ "@types/mime-types": "^2.1.1",
30
+ "@types/node": "^20.2.5",
31
+ "core-js": "^3.38.1",
32
+ "quasar": "^2.17.1",
33
+ "typescript": "^5.6.3",
34
+ "vue": "^3.5.12"
35
+ },
36
+ "prettier": {
37
+ "tabWidth": 4,
38
+ "semi": false,
39
+ "singleQuote": true,
40
+ "arrowParens": "avoid",
41
+ "singleAttributePerLine": true
42
+ }
43
+ }
package/shims-vue.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- declare module '*.vue' {
2
- import { ComponentOptions } from 'vue'
3
- const component: ComponentOptions
4
- export default component
5
- }
1
+ declare module '*.vue' {
2
+ import { ComponentOptions } from 'vue'
3
+ const component: ComponentOptions
4
+ export default component
5
+ }
package/src/index.js CHANGED
@@ -1,31 +1,41 @@
1
- function extendQuasarConf(conf, prompts) {
2
- for (let b of ['AutoRoute', 'AutoReg', 'Interceptor'])
3
- conf.boot.unshift(`axe/${b}`)
4
- console.log('[QuasarAxe] Config pushed Boots')
5
-
6
- conf.framework.plugins.push(
7
- 'AppVisibility',
8
- 'Notify',
9
- 'Dialog',
10
- 'LoadingBar'
11
- )
12
- console.log('[QuasarAxe] Config pushed framework.plugins')
13
-
14
- conf.framework.config.loadingBar = {
15
- position: 'top',
16
- color: 'white',
17
- size: '5px',
18
- skipHijack: true,
19
- }
20
- conf.framework.config.notify = {}
21
- console.log('[QuasarAxe] Config pushed framework.config')
22
-
23
- conf.animations.push('fadeIn', 'fadeOut', 'zoomIn', 'zoomOut')
24
- console.log('[QuasarAxe] Config pushed animations')
25
- }
26
-
27
- module.exports = function (api) {
28
- api.compatibleWith('quasar', '^2.0.0')
29
- api.compatibleWith('@quasar/app-vite', '^1.0.0')
30
- api.extendQuasarConf(conf => extendQuasarConf(conf, api.prompts))
31
- }
1
+ function extendQuasarConf(conf, prompts) {
2
+ for (let b of ['AutoRoute', 'AutoReg', 'Interceptor', 'SetPrimaryColor'])
3
+ conf.boot.unshift(`axe/${b}`)
4
+ console.log('[QuasarAxe] Config pushed Boots')
5
+ conf.boot.unshift('axe/LoadStart')
6
+ conf.boot.push('axe/LoadEnd')
7
+
8
+ conf.framework.plugins.push(
9
+ 'AppVisibility',
10
+ 'Notify',
11
+ 'Dialog',
12
+ 'LoadingBar'
13
+ )
14
+ console.log('[QuasarAxe] Config pushed framework.plugins')
15
+
16
+ conf.framework.config.loadingBar = {
17
+ position: 'top',
18
+ color: 'white',
19
+ size: '5px',
20
+ skipHijack: true,
21
+ }
22
+ conf.framework.config.notify = {}
23
+ console.log('[QuasarAxe] Config pushed framework.config')
24
+
25
+ conf.animations.push('fadeIn', 'fadeOut', 'zoomIn', 'zoomOut')
26
+ console.log('[QuasarAxe] Config pushed animations')
27
+
28
+ conf.build.viteVuePluginOptions = {
29
+ script: {
30
+ defineModel: true,
31
+ propsDestructure: true,
32
+ },
33
+ }
34
+ console.log('[QuasarAxe] Config pushed viteVuePluginOptions')
35
+ }
36
+
37
+ module.exports = function (api) {
38
+ api.compatibleWith('quasar', '^2.0.0')
39
+ api.compatibleWith('@quasar/app-vite', '^1.0.0 || ^2.0.0')
40
+ api.extendQuasarConf(conf => extendQuasarConf(conf, api.prompts))
41
+ }
package/src/install.js CHANGED
@@ -1,6 +1,6 @@
1
- module.exports = function (api) {
2
- api.compatibleWith('quasar', '^2.0.0')
3
- api.compatibleWith('@quasar/app-vite', '^1.0.0')
4
- api.render('./templates')
5
- api.onExitLog('Thanks for installing quasar-axe!')
6
- }
1
+ module.exports = function (api) {
2
+ api.compatibleWith('quasar', '^2.0.0')
3
+ api.compatibleWith('@quasar/app-vite', '^1.0.0 || ^2.0.0')
4
+ api.render('./templates')
5
+ api.onExitLog('Thanks for installing quasar-axe!')
6
+ }
package/src/prompts.js CHANGED
@@ -1,3 +1,3 @@
1
- module.exports = function () {
2
- return [];
3
- };
1
+ module.exports = function () {
2
+ return [];
3
+ };
@@ -1,18 +1,18 @@
1
- import { boot } from 'quasar/wrappers'
2
-
3
- function pascal(s: string): string {
4
- return s
5
- .split('/')
6
- .pop()!
7
- .replace(/\.\w+$/, '')
8
- }
9
-
10
- console.log('[QuasarAxe] Run Boot AutoReg')
11
-
12
- const components = import.meta.globEager('src/**/*.vue')
13
-
14
- export default boot(({ app }) => {
15
- for (let path in components) {
16
- app.component(pascal(path), components[path].default)
17
- }
18
- })
1
+ import { boot } from 'quasar/wrappers'
2
+
3
+ function pascal(s: string): string {
4
+ return s
5
+ .split('/')
6
+ .pop()!
7
+ .replace(/\.\w+$/, '')
8
+ }
9
+
10
+ console.log('[QuasarAxe] Run Boot AutoReg')
11
+
12
+ const components = import.meta.glob<any>('src/**/*.vue', { eager: true })
13
+
14
+ export default boot(({ app }) => {
15
+ for (let path in components) {
16
+ app.component(pascal(path), components[path].default)
17
+ }
18
+ })
@@ -1,40 +1,40 @@
1
- import { boot } from 'quasar/wrappers'
2
-
3
- function pascal(s: string): string {
4
- return s
5
- .split('/')
6
- .pop()!
7
- .replace(/\.\w+$/, '')
8
- }
9
-
10
- if (!process.env.HOME_ROUTE) throw 'Missing HOME_ROUTE in process.env!'
11
-
12
- const HOME_ROUTE = process.env.HOME_ROUTE ?? '/'
13
-
14
- console.log('[QuasarAxe] Run Boot AutoRoute')
15
-
16
- const pages = import.meta.globEager('src/**/pages/**/*.vue')
17
-
18
- const routes = Object.keys(pages).map(path => ({
19
- path: pascal(path).toLowerCase(),
20
- component: pages[path].default,
21
- }))
22
-
23
- const _pages = import.meta.globEager('src/**/_*.vue')
24
-
25
- const _routes = Object.keys(_pages).map(path => ({
26
- path: pascal(path).toLowerCase().replace('_', ''),
27
- component: _pages[path].default,
28
- }))
29
-
30
- export default boot(({ app, router }) => {
31
- router.addRoute({
32
- path: '/',
33
- component: () => import('src/layouts/Layout.vue'),
34
- children: [...routes, ..._routes, { path: '/', redirect: HOME_ROUTE }],
35
- })
36
- router.addRoute({
37
- path: '/:catchAll(.*)*',
38
- redirect: HOME_ROUTE,
39
- })
40
- })
1
+ import { boot } from 'quasar/wrappers'
2
+
3
+ function pascal(s: string): string {
4
+ return s
5
+ .split('/')
6
+ .pop()!
7
+ .replace(/\.\w+$/, '')
8
+ }
9
+
10
+ if (!process.env.HOME_ROUTE) throw 'Missing HOME_ROUTE in process.env!'
11
+
12
+ const HOME_ROUTE = process.env.HOME_ROUTE ?? '/'
13
+
14
+ console.log('[QuasarAxe] Run Boot AutoRoute')
15
+
16
+ const pages = import.meta.glob<any>('src/**/pages/**/*.vue', { eager: true })
17
+
18
+ const routes = Object.keys(pages).map(path => ({
19
+ path: pascal(path).toLowerCase(),
20
+ component: pages[path].default,
21
+ }))
22
+
23
+ const _pages = import.meta.glob<any>('src/**/_*.vue', { eager: true })
24
+
25
+ const _routes = Object.keys(_pages).map(path => ({
26
+ path: pascal(path).toLowerCase().replace('_', ''),
27
+ component: _pages[path].default,
28
+ }))
29
+
30
+ export default boot(({ app, router }) => {
31
+ router.addRoute({
32
+ path: '/',
33
+ component: () => import('src/layouts/Layout.vue'),
34
+ children: [...routes, ..._routes, { path: '/', redirect: HOME_ROUTE }],
35
+ })
36
+ router.addRoute({
37
+ path: '/:catchAll(.*)*',
38
+ redirect: HOME_ROUTE,
39
+ })
40
+ })
@@ -1,86 +1,86 @@
1
- import { boot } from 'quasar/wrappers'
2
- import { LoadingBar } from 'quasar'
3
-
4
- console.log('[QuasarAxe] Run Boot Interceptor')
5
-
6
- declare global {
7
- interface XMLHttpRequest {
8
- _url: string
9
- }
10
- }
11
-
12
- export function setAjaxInterceptor(
13
- onStart: (_: XMLHttpRequest) => void,
14
- onEnd: (_: XMLHttpRequest) => void
15
- ) {
16
- var open = window.XMLHttpRequest.prototype.open
17
- var send = window.XMLHttpRequest.prototype.send
18
-
19
- window.XMLHttpRequest.prototype.open = function (...args: any) {
20
- this._url = args[1] ?? ''
21
- open.apply(this, args)
22
- }
23
-
24
- window.XMLHttpRequest.prototype.send = function (...args: any) {
25
- var request = this
26
- onStart(request)
27
-
28
- var intervalId = window.setInterval(function () {
29
- if (request.readyState != 4) return
30
- onEnd(request)
31
- clearInterval(intervalId)
32
- }, 10)
33
-
34
- return send.apply(this, args)
35
- }
36
- }
37
-
38
- export function setFetchInterceptor(
39
- onStart: (..._: Parameters<typeof window.fetch>) => void,
40
- onEnd: (..._: Parameters<typeof window.fetch>) => void
41
- ) {
42
- const oldFetch = window.fetch
43
-
44
- window.fetch = async (...args) => {
45
- onStart(...args)
46
-
47
- const response = await oldFetch(...args)
48
-
49
- onEnd(...args)
50
-
51
- // /* work with the cloned response in a separate promise
52
- // chain -- could use the same chain with `await`. */
53
- // response
54
- // .clone()
55
- // .json()
56
- // .then(body => console.log("intercepted response:", body))
57
- // .catch(err => console.error(err))
58
-
59
- /* the original response can be resolved unmodified: */
60
- return response
61
- }
62
- }
63
-
64
- function isLogRocket(request: XMLHttpRequest): boolean {
65
- return request._url.startsWith('https://r.lr-ingest.io')
66
- }
67
-
68
- setAjaxInterceptor(
69
- request => {
70
- if (!isLogRocket(request)) {
71
- LoadingBar.start()
72
- }
73
- },
74
- request => {
75
- if (!isLogRocket(request)) {
76
- LoadingBar.stop()
77
- }
78
- }
79
- )
80
-
81
- setFetchInterceptor(
82
- () => LoadingBar.start(),
83
- () => LoadingBar.stop()
84
- )
85
-
86
- export default boot(({ app, router }) => {})
1
+ import { boot } from 'quasar/wrappers'
2
+ import { LoadingBar } from 'quasar'
3
+
4
+ console.log('[QuasarAxe] Run Boot Interceptor')
5
+
6
+ declare global {
7
+ interface XMLHttpRequest {
8
+ _url: string
9
+ }
10
+ }
11
+
12
+ export function setAjaxInterceptor(
13
+ onStart: (_: XMLHttpRequest) => void,
14
+ onEnd: (_: XMLHttpRequest) => void
15
+ ) {
16
+ var open = window.XMLHttpRequest.prototype.open
17
+ var send = window.XMLHttpRequest.prototype.send
18
+
19
+ window.XMLHttpRequest.prototype.open = function (...args: any) {
20
+ this._url = args[1] ?? ''
21
+ open.apply(this, args)
22
+ }
23
+
24
+ window.XMLHttpRequest.prototype.send = function (...args: any) {
25
+ var request = this
26
+ onStart(request)
27
+
28
+ var intervalId = window.setInterval(function () {
29
+ if (request.readyState != 4) return
30
+ onEnd(request)
31
+ clearInterval(intervalId)
32
+ }, 10)
33
+
34
+ return send.apply(this, args)
35
+ }
36
+ }
37
+
38
+ export function setFetchInterceptor(
39
+ onStart: (..._: Parameters<typeof window.fetch>) => void,
40
+ onEnd: (..._: Parameters<typeof window.fetch>) => void
41
+ ) {
42
+ const oldFetch = window.fetch
43
+
44
+ window.fetch = async (...args) => {
45
+ onStart(...args)
46
+
47
+ const response = await oldFetch(...args)
48
+
49
+ onEnd(...args)
50
+
51
+ // /* work with the cloned response in a separate promise
52
+ // chain -- could use the same chain with `await`. */
53
+ // response
54
+ // .clone()
55
+ // .json()
56
+ // .then(body => console.log("intercepted response:", body))
57
+ // .catch(err => console.error(err))
58
+
59
+ /* the original response can be resolved unmodified: */
60
+ return response
61
+ }
62
+ }
63
+
64
+ function isLogRocket(request: XMLHttpRequest): boolean {
65
+ return request._url.startsWith('https://r.lr-ingest.io')
66
+ }
67
+
68
+ setAjaxInterceptor(
69
+ request => {
70
+ if (!isLogRocket(request)) {
71
+ LoadingBar.start()
72
+ }
73
+ },
74
+ request => {
75
+ if (!isLogRocket(request)) {
76
+ LoadingBar.stop()
77
+ }
78
+ }
79
+ )
80
+
81
+ setFetchInterceptor(
82
+ () => LoadingBar.start(),
83
+ () => LoadingBar.stop()
84
+ )
85
+
86
+ export default boot(({ app, router }) => {})
@@ -0,0 +1,8 @@
1
+ import { boot } from 'quasar/wrappers'
2
+ import { qNotify } from '../../utils'
3
+
4
+ console.log('[QuasarAxe] Run Boot LoadEnd')
5
+
6
+ export default boot(({ app }) => {
7
+ qNotify.unload()
8
+ })
@@ -0,0 +1,8 @@
1
+ import { boot } from 'quasar/wrappers'
2
+ import { qNotify } from '../../utils'
3
+
4
+ console.log('[QuasarAxe] Run Boot LoadStart')
5
+
6
+ export default boot(({ app }) => {
7
+ qNotify.load()
8
+ })
@@ -0,0 +1,10 @@
1
+ import { boot } from 'quasar/wrappers'
2
+ import { setCssVar } from 'quasar'
3
+
4
+ console.log('[QuasarAxe] Run Boot SetPrimaryColor')
5
+
6
+ export default boot(({ app }) => {
7
+ if (process.env.PRIMARY_COLOR) {
8
+ setCssVar('primary', process.env.PRIMARY_COLOR)
9
+ }
10
+ })
@@ -1,30 +1,26 @@
1
- <template>
2
- <q-btn v-bind="$attrs">
3
- <q-tooltip
4
- class="text-body1"
5
- v-if="tooltip"
6
- :delay="150"
7
- >{{ tooltip }}</q-tooltip
8
- >
9
- <q-badge
10
- v-if="badge !== undefined"
11
- floating
12
- rounded
13
- :color="badgeColor"
14
- >{{ badge }}</q-badge
15
- >
16
- </q-btn>
17
- </template>
18
-
19
- <script lang="ts" setup>
20
- const props = withDefaults(
21
- defineProps<{
22
- tooltip?: string
23
- badge?: string | number
24
- badgeColor?: string
25
- }>(),
26
- {
27
- badgeColor: 'red',
28
- }
29
- )
30
- </script>
1
+ <template>
2
+ <q-btn v-bind="$attrs">
3
+ <q-tooltip
4
+ class="text-body1"
5
+ style="white-space: break-spaces"
6
+ v-if="tooltip"
7
+ :delay="150"
8
+ >{{ tooltip }}</q-tooltip
9
+ >
10
+ <q-badge
11
+ v-if="badge !== undefined"
12
+ floating
13
+ rounded
14
+ :color="badgeColor ?? 'red'"
15
+ >{{ badge }}</q-badge
16
+ >
17
+ </q-btn>
18
+ </template>
19
+
20
+ <script lang="ts" setup>
21
+ defineProps<{
22
+ tooltip?: string
23
+ badge?: string | number
24
+ badgeColor?: string
25
+ }>()
26
+ </script>
@@ -1,11 +1,11 @@
1
- <template>
2
- <qx-btn
3
- v-bind="$attrs"
4
- flat
5
- dense
6
- />
7
- </template>
8
-
9
- <script lang="ts" setup>
10
- // this component follow qx-btn, with default flat and dense
11
- </script>
1
+ <template>
2
+ <qx-btn
3
+ v-bind="$attrs"
4
+ flat
5
+ dense
6
+ />
7
+ </template>
8
+
9
+ <script lang="ts" setup>
10
+ // this component follow qx-btn, with default flat and dense
11
+ </script>