@mythpe/quasar-ui-qui 0.2.15 → 0.2.17
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.
- package/package.json +1 -1
- package/src/components/form/MEditor.vue +2 -2
- package/src/components/form/MOtp.vue +4 -4
- package/src/components/form/MUploader.vue +2 -2
- package/src/components/transition/MTransition.vue +13 -19
- package/src/components/transition/MTransitionGroup.vue +38 -0
- package/src/components/transition/index.ts +2 -3
- package/src/components/transition/useTransition.ts +50 -0
- package/src/plugin/defineAsyncComponents.ts +1 -2
- package/src/types/api/MTransition.d.ts +130 -6
- package/src/types/components.d.ts +4 -4
- package/src/types/theme.d.ts +122 -50
- package/src/utils/createMyth.ts +3 -1
- package/src/components/transition/MFadeTransition.vue +0 -27
- package/src/components/transition/MFadeXTransition.vue +0 -26
package/package.json
CHANGED
|
@@ -259,13 +259,13 @@ defineOptions({
|
|
|
259
259
|
name="bottom-input"
|
|
260
260
|
v-bind="inputScope"
|
|
261
261
|
/>
|
|
262
|
-
<
|
|
262
|
+
<MTransition>
|
|
263
263
|
<p
|
|
264
264
|
v-if="!!errorMessage"
|
|
265
265
|
class="text-body2 text-negative"
|
|
266
266
|
>
|
|
267
267
|
{{ errorMessage }}
|
|
268
268
|
</p>
|
|
269
|
-
</
|
|
269
|
+
</MTransition>
|
|
270
270
|
</MCol>
|
|
271
271
|
</template>
|
|
@@ -269,7 +269,7 @@ defineOptions({
|
|
|
269
269
|
{{ otpErrors[0] }}
|
|
270
270
|
</div>
|
|
271
271
|
<slot name="after-input" />
|
|
272
|
-
<
|
|
272
|
+
<MTransition>
|
|
273
273
|
<div
|
|
274
274
|
v-if="!noTiming"
|
|
275
275
|
class="q-mt-sm"
|
|
@@ -277,8 +277,8 @@ defineOptions({
|
|
|
277
277
|
<span>{{ __('myth.otp.expire_line') }}: </span>
|
|
278
278
|
<span>{{ getTime }}</span>
|
|
279
279
|
</div>
|
|
280
|
-
</
|
|
281
|
-
<
|
|
280
|
+
</MTransition>
|
|
281
|
+
<MTransition>
|
|
282
282
|
<div
|
|
283
283
|
v-if="!noSendAgain"
|
|
284
284
|
class="q-mt-sm"
|
|
@@ -289,7 +289,7 @@ defineOptions({
|
|
|
289
289
|
@click="onResend()"
|
|
290
290
|
>{{ __('myth.otp.send_again_btn') }}</span>
|
|
291
291
|
</div>
|
|
292
|
-
</
|
|
292
|
+
</MTransition>
|
|
293
293
|
<slot name="after-all" />
|
|
294
294
|
</MCol>
|
|
295
295
|
</template>
|
|
@@ -313,7 +313,7 @@ defineOptions({
|
|
|
313
313
|
:sm="sm"
|
|
314
314
|
:xs="xs"
|
|
315
315
|
>
|
|
316
|
-
<
|
|
316
|
+
<MTransition>
|
|
317
317
|
<div
|
|
318
318
|
v-if="!!error"
|
|
319
319
|
class="row items-center q-pa-sm bg-negative text-white q-mb-xs rounded-borders"
|
|
@@ -324,7 +324,7 @@ defineOptions({
|
|
|
324
324
|
/>
|
|
325
325
|
{{ error }}
|
|
326
326
|
</div>
|
|
327
|
-
</
|
|
327
|
+
</MTransition>
|
|
328
328
|
<q-uploader
|
|
329
329
|
ref="uploader"
|
|
330
330
|
:accept="accepts.join(',')"
|
|
@@ -11,20 +11,11 @@
|
|
|
11
11
|
setup
|
|
12
12
|
>
|
|
13
13
|
import type { MTransitionProps as Props } from '../../types'
|
|
14
|
+
import { useTransition } from './useTransition'
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
enterOut?: Props['enterOut'];
|
|
18
|
-
slowIn?: Props['slowIn'];
|
|
19
|
-
slowOut?: Props['slowIn'];
|
|
20
|
-
}
|
|
16
|
+
const props = defineProps<Props>()
|
|
17
|
+
const { getClasses } = useTransition(props)
|
|
21
18
|
|
|
22
|
-
withDefaults(defineProps<P>(), {
|
|
23
|
-
enterIn: () => 'fadeIn',
|
|
24
|
-
enterOut: () => 'fadeOut',
|
|
25
|
-
slowIn: () => !1,
|
|
26
|
-
slowOut: () => !1
|
|
27
|
-
})
|
|
28
19
|
defineOptions({
|
|
29
20
|
name: 'MTransition',
|
|
30
21
|
inheritAttrs: !1
|
|
@@ -32,13 +23,16 @@ defineOptions({
|
|
|
32
23
|
</script>
|
|
33
24
|
|
|
34
25
|
<template>
|
|
35
|
-
<
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
26
|
+
<transition
|
|
27
|
+
v-bind="{
|
|
28
|
+
...$props,
|
|
29
|
+
...$attrs,
|
|
30
|
+
enterActiveClass: getClasses('in'),
|
|
31
|
+
leaveActiveClass: getClasses('out'),
|
|
32
|
+
appear: !noAppear,
|
|
33
|
+
css: !noCss
|
|
34
|
+
}"
|
|
41
35
|
>
|
|
42
36
|
<slot />
|
|
43
|
-
</
|
|
37
|
+
</transition>
|
|
44
38
|
</template>
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
- MyTh Ahmed Faiz Copyright © 2016-2024 All rights reserved.
|
|
3
|
+
- Email: mythpe@gmail.com
|
|
4
|
+
- Mobile: +966590470092
|
|
5
|
+
- Website: https://www.4myth.com
|
|
6
|
+
- Github: https://github.com/mythpe
|
|
7
|
+
-->
|
|
8
|
+
|
|
9
|
+
<script
|
|
10
|
+
lang="ts"
|
|
11
|
+
setup
|
|
12
|
+
>
|
|
13
|
+
import type { MTransitionGroupProps as Props } from '../../types'
|
|
14
|
+
import { useTransition } from './useTransition'
|
|
15
|
+
|
|
16
|
+
const props = defineProps<Props>()
|
|
17
|
+
const { getClasses } = useTransition(props)
|
|
18
|
+
|
|
19
|
+
defineOptions({
|
|
20
|
+
name: 'MTransitionGroup',
|
|
21
|
+
inheritAttrs: !1
|
|
22
|
+
})
|
|
23
|
+
</script>
|
|
24
|
+
|
|
25
|
+
<template>
|
|
26
|
+
<transition-group
|
|
27
|
+
v-bind="{
|
|
28
|
+
...$props,
|
|
29
|
+
...$attrs,
|
|
30
|
+
enterActiveClass: getClasses('in'),
|
|
31
|
+
leaveActiveClass: getClasses('out'),
|
|
32
|
+
appear: !noAppear,
|
|
33
|
+
css: !noCss
|
|
34
|
+
}"
|
|
35
|
+
>
|
|
36
|
+
<slot />
|
|
37
|
+
</transition-group>
|
|
38
|
+
</template>
|
|
@@ -6,10 +6,9 @@
|
|
|
6
6
|
* Github: https://github.com/mythpe
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import MFadeTransition from './MFadeTransition.vue'
|
|
10
|
-
import MFadeXTransition from './MFadeXTransition.vue'
|
|
11
9
|
import MTransition from './MTransition.vue'
|
|
10
|
+
import MTransitionGroup from './MTransitionGroup.vue'
|
|
12
11
|
|
|
13
|
-
export {
|
|
12
|
+
export { MTransitionGroup, MTransition }
|
|
14
13
|
|
|
15
14
|
export default {}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* MyTh Ahmed Faiz Copyright © 2016-2025 All rights reserved.
|
|
3
|
+
* Email: mythpe@gmail.com
|
|
4
|
+
* Mobile: +966590470092
|
|
5
|
+
* Website: https://www.4myth.com
|
|
6
|
+
* Github: https://github.com/mythpe
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { useMyth } from '../../composable'
|
|
10
|
+
|
|
11
|
+
export function useTransition (props: any) {
|
|
12
|
+
const { theme } = useMyth()
|
|
13
|
+
const getClasses = (mode: 'in' | 'out') => {
|
|
14
|
+
const classes: string[] = ['animated']
|
|
15
|
+
const defMode = mode === 'in' ? theme.value.inTransition : theme.value.outTransition
|
|
16
|
+
const activeClass = mode === 'in' ? props.enterActiveClass : props.leaveActiveClass
|
|
17
|
+
classes.push(activeClass || defMode)
|
|
18
|
+
const keys = [
|
|
19
|
+
`${mode}Slower`,
|
|
20
|
+
`${mode}Slow`,
|
|
21
|
+
`${mode}Fast`,
|
|
22
|
+
`${mode}Faster`
|
|
23
|
+
]
|
|
24
|
+
for (const k of keys) {
|
|
25
|
+
if (props[k]) {
|
|
26
|
+
classes.push(k.replace(mode, '').toLowerCase())
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const delay = props[`${mode}Delay`] || false
|
|
30
|
+
if (delay) {
|
|
31
|
+
if (delay === !0) {
|
|
32
|
+
classes.push('delay-1s')
|
|
33
|
+
}
|
|
34
|
+
if (typeof delay === 'number' || typeof delay === 'string') {
|
|
35
|
+
classes.push(`delay-${delay}s`)
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const repeat = props[`${mode}Repeat`] || false
|
|
39
|
+
if (repeat) {
|
|
40
|
+
if (repeat === !0) {
|
|
41
|
+
classes.push('repeat')
|
|
42
|
+
}
|
|
43
|
+
if (typeof repeat === 'number' || typeof repeat === 'string') {
|
|
44
|
+
classes.push(`repeat-${repeat}`)
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return classes.join(' ')
|
|
48
|
+
}
|
|
49
|
+
return { getClasses }
|
|
50
|
+
}
|
|
@@ -44,8 +44,7 @@ export const defineAsyncComponents = function (app: App) {
|
|
|
44
44
|
|
|
45
45
|
// Transitions.
|
|
46
46
|
app.component('MTransition', defineAsyncComponent(() => import('../components/transition/MTransition.vue')))
|
|
47
|
-
app.component('
|
|
48
|
-
app.component('MFadeXTransition', defineAsyncComponent(() => import('../components/transition/MFadeXTransition.vue')))
|
|
47
|
+
app.component('MTransitionGroup', defineAsyncComponent(() => import('../components/transition/MTransitionGroup.vue')))
|
|
49
48
|
|
|
50
49
|
// Modals.
|
|
51
50
|
app.component('MDialog', defineAsyncComponent(() => import('../components/modal/MDialog.vue')))
|
|
@@ -1,12 +1,136 @@
|
|
|
1
|
-
import type { TransitionGroupProps, VNode } from 'vue'
|
|
1
|
+
import type { TransitionGroupProps, TransitionProps, VNode } from 'vue'
|
|
2
2
|
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
export type GeneralTransitionClasses =
|
|
4
|
+
'bounce' |
|
|
5
|
+
'flash' |
|
|
6
|
+
'flip' |
|
|
7
|
+
'headShake' |
|
|
8
|
+
'heartBeat' |
|
|
9
|
+
'hinge' |
|
|
10
|
+
'jello' |
|
|
11
|
+
'pulse' |
|
|
12
|
+
'rubberBand' |
|
|
13
|
+
'shake' |
|
|
14
|
+
'shakeX' |
|
|
15
|
+
'shakeY' |
|
|
16
|
+
'swing' |
|
|
17
|
+
'tada' |
|
|
18
|
+
'wobble';
|
|
19
|
+
|
|
20
|
+
export type InTransitionClasses =
|
|
21
|
+
'backInDown' |
|
|
22
|
+
'backInLeft' |
|
|
23
|
+
'backInRight' |
|
|
24
|
+
'backInUp' |
|
|
25
|
+
'bounceIn' |
|
|
26
|
+
'bounceInDown' |
|
|
27
|
+
'bounceInLeft' |
|
|
28
|
+
'bounceInRight' |
|
|
29
|
+
'bounceInUp' |
|
|
30
|
+
'fadeIn' |
|
|
31
|
+
'fadeInBottomLeft' |
|
|
32
|
+
'fadeInBottomRight' |
|
|
33
|
+
'fadeInDown' |
|
|
34
|
+
'fadeInDownBig' |
|
|
35
|
+
'fadeInLeft' |
|
|
36
|
+
'fadeInLeftBig' |
|
|
37
|
+
'fadeInRight' |
|
|
38
|
+
'fadeInRightBig' |
|
|
39
|
+
'fadeInTopLeft' |
|
|
40
|
+
'fadeInTopRight' |
|
|
41
|
+
'fadeInUp' |
|
|
42
|
+
'fadeInUpBig' |
|
|
43
|
+
'flipInX' |
|
|
44
|
+
'flipInY' |
|
|
45
|
+
'jackInTheBox' |
|
|
46
|
+
'lightSpeedInLeft' |
|
|
47
|
+
'lightSpeedInRight' |
|
|
48
|
+
'rollIn' |
|
|
49
|
+
'rotateIn' |
|
|
50
|
+
'rotateInDownLeft' |
|
|
51
|
+
'rotateInDownRight' |
|
|
52
|
+
'rotateInUpLeft' |
|
|
53
|
+
'rotateInUpRight' |
|
|
54
|
+
'slideInDown' |
|
|
55
|
+
'slideInLeft' |
|
|
56
|
+
'slideInRight' |
|
|
57
|
+
'slideInUp' |
|
|
58
|
+
'zoomIn' |
|
|
59
|
+
'zoomInDown' |
|
|
60
|
+
'zoomInLeft' |
|
|
61
|
+
'zoomInRight' |
|
|
62
|
+
'zoomInUp';
|
|
63
|
+
type OutTransitionClasses =
|
|
64
|
+
'backOutDown' |
|
|
65
|
+
'backOutLeft' |
|
|
66
|
+
'backOutRight' |
|
|
67
|
+
'backOutUp' |
|
|
68
|
+
'bounceOut' |
|
|
69
|
+
'bounceOutDown' |
|
|
70
|
+
'bounceOutLeft' |
|
|
71
|
+
'bounceOutRight' |
|
|
72
|
+
'bounceOutUp' |
|
|
73
|
+
'fadeOut' |
|
|
74
|
+
'fadeOutBottomLeft' |
|
|
75
|
+
'fadeOutBottomRight' |
|
|
76
|
+
'fadeOutDown' |
|
|
77
|
+
'fadeOutDownBig' |
|
|
78
|
+
'fadeOutLeft' |
|
|
79
|
+
'fadeOutLeftBig' |
|
|
80
|
+
'fadeOutRight' |
|
|
81
|
+
'fadeOutRightBig' |
|
|
82
|
+
'fadeOutTopLeft' |
|
|
83
|
+
'fadeOutTopRight' |
|
|
84
|
+
'fadeOutUp' |
|
|
85
|
+
'fadeOutUpBig' |
|
|
86
|
+
'flipOutX' |
|
|
87
|
+
'flipOutY' |
|
|
88
|
+
'lightSpeedOutLeft' |
|
|
89
|
+
'lightSpeedOutRight' |
|
|
90
|
+
'rollOut' |
|
|
91
|
+
'rotateOut' |
|
|
92
|
+
'rotateOutDownLeft' |
|
|
93
|
+
'rotateOutDownRight' |
|
|
94
|
+
'rotateOutUpLeft' |
|
|
95
|
+
'rotateOutUpRight' |
|
|
96
|
+
'slideOutDown' |
|
|
97
|
+
'slideOutLeft' |
|
|
98
|
+
'slideOutRight' |
|
|
99
|
+
'slideOutUp' |
|
|
100
|
+
'zoomOut' |
|
|
101
|
+
'zoomOutDown' |
|
|
102
|
+
'zoomOutLeft' |
|
|
103
|
+
'zoomOutRight' |
|
|
104
|
+
'zoomOutUp';
|
|
105
|
+
|
|
106
|
+
export type TransitionClass = GeneralTransitionClasses | InTransitionClasses | OutTransitionClasses;
|
|
107
|
+
|
|
108
|
+
export type TransitionDelay = boolean | string | number;
|
|
109
|
+
export type TransitionRepeat = boolean | string | number;
|
|
110
|
+
|
|
111
|
+
interface BaseTransitionProps {
|
|
112
|
+
in?: TransitionClass;
|
|
113
|
+
inSlower?: boolean;
|
|
114
|
+
inSlow?: boolean;
|
|
115
|
+
inFast?: boolean;
|
|
116
|
+
inFaster?: boolean;
|
|
117
|
+
inDelay?: TransitionDelay;
|
|
118
|
+
inRepeat?: TransitionRepeat;
|
|
119
|
+
out?: TransitionClass;
|
|
120
|
+
outSlower?: boolean;
|
|
121
|
+
outSlow?: boolean;
|
|
122
|
+
outFast?: boolean;
|
|
123
|
+
outFaster?: boolean;
|
|
124
|
+
outDelay?: TransitionDelay;
|
|
125
|
+
outRepeat?: TransitionRepeat;
|
|
126
|
+
noAppear?: boolean;
|
|
127
|
+
noCss?: boolean;
|
|
8
128
|
}
|
|
9
129
|
|
|
130
|
+
export type MTransitionGroupProps = BaseTransitionProps & Omit<TransitionGroupProps, 'appear'>;
|
|
131
|
+
|
|
132
|
+
export type MTransitionProps = BaseTransitionProps & Omit<TransitionProps, 'appear'>;
|
|
133
|
+
|
|
10
134
|
export interface MTransitionsSlots {
|
|
11
135
|
default: () => VNode[];
|
|
12
136
|
}
|
|
@@ -33,7 +33,7 @@ import type {
|
|
|
33
33
|
QUploaderProps,
|
|
34
34
|
QUploaderSlots
|
|
35
35
|
} from 'quasar'
|
|
36
|
-
import type { MaybeRefOrGetter,
|
|
36
|
+
import type { MaybeRefOrGetter, UnwrapNestedRefs, VNode } from 'vue'
|
|
37
37
|
import type { TypedOptions } from 'typed.js'
|
|
38
38
|
import type { FieldContext, FieldOptions, FormContext, FormOptions, FormState } from 'vee-validate'
|
|
39
39
|
import type { ThemeShadow, ThemeSize } from './theme'
|
|
@@ -41,7 +41,7 @@ import type { ApiInterface, HelpersStubSchema } from './api-helpers'
|
|
|
41
41
|
import type { MDatatableProps, MDatatableSlots, MDtAvatarProps, MDtAvatarSlots, MDtBtnProps, MDtBtnSlots, MDtContextmenuItemsProps, MDtContextmenuItemsSlots } from './m-datatable'
|
|
42
42
|
import type { EditorConfig } from 'ckeditor5'
|
|
43
43
|
import type { MAvatarViewerProps, MAvatarViewerSlots } from './api/MAvatarViewer'
|
|
44
|
-
import type { MTransitionProps, MTransitionsSlots } from './api/MTransition'
|
|
44
|
+
import type { MTransitionGroupProps, MTransitionProps, MTransitionsSlots } from './api/MTransition'
|
|
45
45
|
import type { MAxiosProps, MAxiosSlots } from './api/MAxios'
|
|
46
46
|
import type { MSelectProps, MSelectSlots } from './api/MSelect'
|
|
47
47
|
import type { MSignaturePadProps, MSignaturePadSlots } from './api/MSignaturePad'
|
|
@@ -1046,8 +1046,8 @@ declare module '@vue/runtime-core' {
|
|
|
1046
1046
|
|
|
1047
1047
|
// Transitions.
|
|
1048
1048
|
MTransition: GlobalComponentConstructor<MTransitionProps, MTransitionsSlots>;
|
|
1049
|
-
|
|
1050
|
-
|
|
1049
|
+
MTransitionGroup: GlobalComponentConstructor<MTransitionGroupProps, MTransitionsSlots>;
|
|
1050
|
+
|
|
1051
1051
|
// Modals.
|
|
1052
1052
|
MDialog: GlobalComponentConstructor<MDialogProps, MDialogSlots>;
|
|
1053
1053
|
MModalMenu: GlobalComponentConstructor<MModalMenuProps, MModalMenuSlots>;
|
package/src/types/theme.d.ts
CHANGED
|
@@ -1,11 +1,33 @@
|
|
|
1
1
|
import type { NamedColor, QBtnProps, QInputProps } from 'quasar'
|
|
2
|
+
import type { TransitionClass } from './api/MTransition'
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export type
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Standard size options with string extension capability
|
|
6
|
+
*/
|
|
7
|
+
export type ThemeSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'none' | string
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Shadow configuration options
|
|
11
|
+
*/
|
|
12
|
+
export type ThemeShadow = string | number | 'transition' | 'none'
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Rounded corners configuration
|
|
16
|
+
*/
|
|
17
|
+
export type ThemeRounded = boolean
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Fluid layout behavior
|
|
21
|
+
*/
|
|
22
|
+
export type ThemeFluid = boolean
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Input styling properties based on QInput with additional topLabel option
|
|
26
|
+
*/
|
|
27
|
+
export type ThemeInput = Partial<
|
|
28
|
+
Pick<
|
|
29
|
+
QInputProps,
|
|
30
|
+
| 'standout'
|
|
9
31
|
| 'dense'
|
|
10
32
|
| 'filled'
|
|
11
33
|
| 'outlined'
|
|
@@ -21,68 +43,118 @@ export type ThemeInput =
|
|
|
21
43
|
| 'stackLabel'
|
|
22
44
|
| 'color'
|
|
23
45
|
| 'textColor'
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
46
|
+
>
|
|
47
|
+
> & {
|
|
48
|
+
/** Displays label above the input field */
|
|
49
|
+
topLabel?: boolean
|
|
27
50
|
}
|
|
28
|
-
export type ThemeBtn = Partial<Pick<QBtnProps, 'flat'
|
|
29
|
-
| 'outline'
|
|
30
|
-
| 'push'
|
|
31
|
-
| 'unelevated'
|
|
32
|
-
| 'noCaps'
|
|
33
|
-
| 'rounded'
|
|
34
|
-
| 'glossy'
|
|
35
|
-
| 'square'
|
|
36
|
-
| 'padding'
|
|
37
|
-
| 'ripple'
|
|
38
|
-
| 'dense'
|
|
39
|
-
| 'color'
|
|
40
|
-
| 'textColor'
|
|
41
|
-
>>
|
|
42
|
-
|
|
43
|
-
export type Theme = {
|
|
44
|
-
size: ThemeSize;
|
|
45
|
-
rounded: ThemeRounded;
|
|
46
|
-
shadow: ThemeShadow;
|
|
47
|
-
fluid: ThemeFluid;
|
|
48
|
-
button: ThemeBtn;
|
|
49
|
-
input: ThemeInput;
|
|
50
|
-
};
|
|
51
51
|
|
|
52
|
+
/**
|
|
53
|
+
* Button styling properties based on QBtn
|
|
54
|
+
*/
|
|
55
|
+
export type ThemeBtn = Partial<
|
|
56
|
+
Pick<
|
|
57
|
+
QBtnProps,
|
|
58
|
+
| 'flat'
|
|
59
|
+
| 'outline'
|
|
60
|
+
| 'push'
|
|
61
|
+
| 'unelevated'
|
|
62
|
+
| 'noCaps'
|
|
63
|
+
| 'rounded'
|
|
64
|
+
| 'glossy'
|
|
65
|
+
| 'square'
|
|
66
|
+
| 'padding'
|
|
67
|
+
| 'ripple'
|
|
68
|
+
| 'dense'
|
|
69
|
+
| 'color'
|
|
70
|
+
| 'textColor'
|
|
71
|
+
>
|
|
72
|
+
>
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Loading animation configuration for buttons
|
|
76
|
+
*/
|
|
52
77
|
export type ButtonLoadingOptions = {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
78
|
+
/** Type of loading indicator */
|
|
79
|
+
type:
|
|
80
|
+
| 'audio' | 'ball' | 'bars' | 'box'
|
|
81
|
+
| 'clock' | 'comment' | 'cube' | 'dots'
|
|
82
|
+
| 'facebook' | 'gears' | 'grid' | 'hearts'
|
|
83
|
+
| 'hourglass' | 'infinity' | 'ios' | 'orbit'
|
|
84
|
+
| 'oval' | 'pie' | 'puff' | 'radio'
|
|
85
|
+
| 'rings' | 'tail' | 'spinner'
|
|
86
|
+
/** Color of the loading indicator */
|
|
87
|
+
color?: NamedColor | undefined
|
|
88
|
+
/** Size of the loading indicator */
|
|
89
|
+
size?: string | undefined
|
|
90
|
+
/** Whether to show loading text */
|
|
91
|
+
label?: boolean
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Complete theme configuration
|
|
96
|
+
*/
|
|
97
|
+
export interface Theme {
|
|
98
|
+
/** Base size for components */
|
|
99
|
+
size: ThemeSize
|
|
100
|
+
/** Rounded corners setting */
|
|
101
|
+
rounded: ThemeRounded
|
|
102
|
+
/** Shadow configuration */
|
|
103
|
+
shadow: ThemeShadow
|
|
104
|
+
/** Fluid layout behavior */
|
|
105
|
+
fluid: ThemeFluid
|
|
106
|
+
/** Default button styles */
|
|
107
|
+
button: ThemeBtn
|
|
108
|
+
/** Default input styles */
|
|
109
|
+
input: ThemeInput
|
|
57
110
|
}
|
|
58
111
|
|
|
112
|
+
/**
|
|
113
|
+
* Theme context with default values
|
|
114
|
+
*/
|
|
59
115
|
export interface ThemeContext {
|
|
60
116
|
/**
|
|
61
|
-
* Default
|
|
117
|
+
* Default transition for "in" state
|
|
62
118
|
*/
|
|
63
|
-
|
|
119
|
+
inTransition: TransitionClass
|
|
64
120
|
/**
|
|
65
|
-
*
|
|
121
|
+
* Default transition for "out" state
|
|
66
122
|
*/
|
|
67
|
-
|
|
123
|
+
outTransition: TransitionClass
|
|
124
|
+
|
|
68
125
|
/**
|
|
69
|
-
*
|
|
126
|
+
* Base size for all components
|
|
70
127
|
*/
|
|
71
|
-
|
|
128
|
+
size: ThemeSize
|
|
129
|
+
|
|
72
130
|
/**
|
|
73
|
-
*
|
|
131
|
+
* Global rounded corners setting
|
|
74
132
|
*/
|
|
75
|
-
|
|
133
|
+
rounded: ThemeRounded
|
|
134
|
+
|
|
76
135
|
/**
|
|
77
|
-
*
|
|
136
|
+
* Global shadow setting
|
|
78
137
|
*/
|
|
79
|
-
|
|
138
|
+
shadow: ThemeShadow
|
|
139
|
+
|
|
80
140
|
/**
|
|
81
|
-
*
|
|
141
|
+
* Fluid layout behavior
|
|
82
142
|
*/
|
|
83
|
-
|
|
143
|
+
fluid: ThemeFluid
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Default button styles
|
|
147
|
+
*/
|
|
148
|
+
buttons: ThemeBtn
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Default input styles
|
|
152
|
+
*/
|
|
153
|
+
inputs: ThemeInput
|
|
154
|
+
|
|
84
155
|
/**
|
|
85
|
-
* Default
|
|
156
|
+
* Default loading configuration for buttons
|
|
157
|
+
* Set to false to disable
|
|
86
158
|
*/
|
|
87
|
-
buttonLoading: ButtonLoadingOptions | false
|
|
159
|
+
buttonLoading: ButtonLoadingOptions | false
|
|
88
160
|
}
|
package/src/utils/createMyth.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type { AxiosInstance } from 'axios'
|
|
|
4
4
|
import { extend } from 'quasar'
|
|
5
5
|
|
|
6
6
|
export const createMyth = (options: InstallOptions) => {
|
|
7
|
-
const defaultOptions
|
|
7
|
+
const defaultOptions = {
|
|
8
8
|
asyncComponents: !1,
|
|
9
9
|
api: {
|
|
10
10
|
url: '',
|
|
@@ -12,6 +12,8 @@ export const createMyth = (options: InstallOptions) => {
|
|
|
12
12
|
axios: {} as AxiosInstance
|
|
13
13
|
},
|
|
14
14
|
theme: {
|
|
15
|
+
inTransition: 'fadeIn',
|
|
16
|
+
outTransition: 'fadeOut',
|
|
15
17
|
size: 'md',
|
|
16
18
|
rounded: !0,
|
|
17
19
|
shadow: 2,
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
- MyTh Ahmed Faiz Copyright © 2016-2024 All rights reserved.
|
|
3
|
-
- Email: mythpe@gmail.com
|
|
4
|
-
- Mobile: +966590470092
|
|
5
|
-
- Website: https://www.4myth.com
|
|
6
|
-
- Github: https://github.com/mythpe
|
|
7
|
-
-->
|
|
8
|
-
|
|
9
|
-
<script
|
|
10
|
-
lang="ts"
|
|
11
|
-
setup
|
|
12
|
-
>
|
|
13
|
-
defineOptions({
|
|
14
|
-
name: 'MFadeTransition',
|
|
15
|
-
inheritAttrs: !1
|
|
16
|
-
})
|
|
17
|
-
</script>
|
|
18
|
-
|
|
19
|
-
<template>
|
|
20
|
-
<Transition
|
|
21
|
-
appear
|
|
22
|
-
name="myth-transition__fade"
|
|
23
|
-
v-bind="$attrs"
|
|
24
|
-
>
|
|
25
|
-
<slot />
|
|
26
|
-
</Transition>
|
|
27
|
-
</template>
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
- MyTh Ahmed Faiz Copyright © 2016-2024 All rights reserved.
|
|
3
|
-
- Email: mythpe@gmail.com
|
|
4
|
-
- Mobile: +966590470092
|
|
5
|
-
- Website: https://www.4myth.com
|
|
6
|
-
- Github: https://github.com/mythpe
|
|
7
|
-
-->
|
|
8
|
-
<script
|
|
9
|
-
lang="ts"
|
|
10
|
-
setup
|
|
11
|
-
>
|
|
12
|
-
defineOptions({
|
|
13
|
-
name: 'MFadeXTransition',
|
|
14
|
-
inheritAttrs: !1
|
|
15
|
-
})
|
|
16
|
-
</script>
|
|
17
|
-
|
|
18
|
-
<template>
|
|
19
|
-
<Transition
|
|
20
|
-
appear
|
|
21
|
-
name="myth-transition__fade-x"
|
|
22
|
-
v-bind="$attrs"
|
|
23
|
-
>
|
|
24
|
-
<slot />
|
|
25
|
-
</Transition>
|
|
26
|
-
</template>
|