@mythpe/quasar-ui-qui 0.0.9 → 0.0.10

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/.eslintrc.cjs CHANGED
@@ -30,8 +30,8 @@ module.exports = {
30
30
  // Uncomment any of the lines below to choose desired strictness,
31
31
  // but leave only one uncommented!
32
32
  // See https://eslint.vuejs.org/rules/#available-rules
33
- //'plugin:vue/vue3-essential', // Priority A: Essential (Error Prevention)
34
- 'plugin:vue/vue3-strongly-recommended', // Priority B: Strongly Recommended (Improving Readability)
33
+ // 'plugin:vue/vue3-essential', // Priority A: Essential (Error Prevention)
34
+ 'plugin:vue/vue3-strongly-recommended', // Priority B: Strongly Recommended (Improving Readability)
35
35
  // 'plugin:vue/vue3-recommended', // Priority C: Recommended (Minimizing Arbitrary Choices and Cognitive Overhead)
36
36
  'standard'
37
37
  ],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mythpe/quasar-ui-qui",
3
- "version": "0.0.9",
3
+ "version": "0.0.10",
4
4
  "description": "MyTh Quasar UI Kit App Extension",
5
5
  "author": "MyTh Ahmed Faiz <mythpe@gmail.com>",
6
6
  "email": "mythpe@gmail.com",
@@ -21,6 +21,8 @@
21
21
  "build:css": "node build/script.css.js"
22
22
  },
23
23
  "dependencies": {
24
+ "lodash": "^4.17.21",
25
+ "typed.js": "^2.1.0",
24
26
  "vee-validate": "^4.14.7",
25
27
  "vue-i18n": "^10.0.4"
26
28
  },
@@ -31,6 +33,7 @@
31
33
  "@rollup/plugin-json": "^4.0.0",
32
34
  "@rollup/plugin-node-resolve": "^11.2.1",
33
35
  "@rollup/plugin-replace": "^2.4.2",
36
+ "@types/lodash": "^4.17.13",
34
37
  "@types/node": "^20.5.9",
35
38
  "@typescript-eslint/eslint-plugin": "^7.16.0",
36
39
  "@typescript-eslint/parser": "^7.16.0",
@@ -17,7 +17,10 @@ const props = withDefaults(defineProps<Props>(), {
17
17
  })
18
18
  const block = computed(() => MythOptions.defaults.value.block ?? {})
19
19
  const options = computed<Props>(() => extend(!0, { ...props }, block.value))
20
- defineOptions({ name: 'MBlock', inheritAttrs: !1 })
20
+ defineOptions({
21
+ name: 'MBlock',
22
+ inheritAttrs: !1
23
+ })
21
24
  </script>
22
25
 
23
26
  <template>
@@ -0,0 +1,73 @@
1
+ <script
2
+ lang="ts"
3
+ setup
4
+ >
5
+ import { computed } from 'vue'
6
+ import type { MColProps } from '../../types'
7
+ import lodash from 'lodash'
8
+
9
+ interface Props {
10
+ name?: MColProps['name']
11
+ auto?: MColProps['auto']
12
+ col?: MColProps['col']
13
+ xs?: MColProps['xs']
14
+ sm?: MColProps['sm']
15
+ md?: MColProps['md']
16
+ lg?: MColProps['lg']
17
+ xl?: MColProps['xl']
18
+ }
19
+
20
+ const props = withDefaults(defineProps<Props>(), {
21
+ name: undefined,
22
+ auto: undefined,
23
+ col: undefined,
24
+ xs: undefined,
25
+ sm: undefined,
26
+ md: undefined,
27
+ lg: undefined,
28
+ xl: undefined
29
+ })
30
+ const classes = computed(() => {
31
+ const list: string[] = ['m--col']
32
+ if (props.auto === !0) {
33
+ list.push('col-auto')
34
+ }
35
+ if (props.col === 'grow') {
36
+ list.push('col-grow')
37
+ } else if (props.col === 'shrink') {
38
+ list.push('col-shrink')
39
+ } else if (typeof props.col === 'string') {
40
+ if (props.col?.toString()?.trim()?.length > 0 && !list.includes(`col-${props.col}`)) {
41
+ list.push(`col-${props.col}`)
42
+ }
43
+ }
44
+
45
+ for (const k of (['xs', 'sm', 'md', 'lg', 'xl'] as (keyof Props)[])) {
46
+ if (props[k] && typeof props[k] !== 'boolean') {
47
+ if (!list.includes(`col-${k}-${props[k]}`)) {
48
+ list.push(`col-${k}-${props[k]}`)
49
+ }
50
+ }
51
+ }
52
+
53
+ if (list.length === 1 && props.col !== !1) {
54
+ list.push('col')
55
+ }
56
+
57
+ return lodash.uniq(list)
58
+ })
59
+ defineOptions({
60
+ name: 'MCol',
61
+ inheritAttrs: !1
62
+ })
63
+ </script>
64
+
65
+ <template>
66
+ <div
67
+ :class="classes"
68
+ :data-input-name="name??undefined"
69
+ v-bind="$attrs"
70
+ >
71
+ <slot />
72
+ </div>
73
+ </template>
@@ -0,0 +1,15 @@
1
+ <script lang="ts" setup>
2
+ defineOptions({
3
+ name: 'MColumn',
4
+ inheritAttrs: !1
5
+ })
6
+ </script>
7
+
8
+ <template>
9
+ <div
10
+ class="m--column column"
11
+ v-bind="$attrs"
12
+ >
13
+ <slot />
14
+ </div>
15
+ </template>
@@ -0,0 +1,46 @@
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 lang="ts" setup>
10
+ import type { MContainerProps } from '../../types'
11
+ import MythOptions from '../../utils'
12
+ import { computed } from 'vue'
13
+
14
+ interface Props {
15
+ size?: MContainerProps['size'];
16
+ fluid?: MContainerProps['fluid'];
17
+ dense?: MContainerProps['dense'];
18
+ }
19
+
20
+ const props = defineProps<Props>()
21
+ const styles = computed(() => MythOptions.defaults.value?.style ?? {})
22
+ const sizeProp = computed(() => {
23
+ if (props.size !== undefined) {
24
+ return props.size
25
+ }
26
+ return styles.value.gutters
27
+ })
28
+ defineOptions({
29
+ name: 'MContainer',
30
+ inheritAttrs: !1
31
+ })
32
+ </script>
33
+
34
+ <template>
35
+ <div
36
+ :class="{
37
+ 'm--container' : !0,
38
+ 'm--container__fluid' : (fluid !== !1 && fluid !== undefined) || (styles.fluid === !0 && (fluid !== !1 && fluid !== undefined)),
39
+ 'm--container__dense' : dense !== !1 && dense !== undefined,
40
+ [`q-pa-${sizeProp||''}`]: sizeProp && sizeProp !== 'none'
41
+ }"
42
+ v-bind="$attrs"
43
+ >
44
+ <slot />
45
+ </div>
46
+ </template>
@@ -0,0 +1,62 @@
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 { useI18n } from 'vue-i18n'
14
+
15
+ interface Props {
16
+ text?: string | undefined;
17
+ icon?: string | undefined;
18
+ tooltip?: boolean | undefined;
19
+ }
20
+
21
+ defineProps<Props>()
22
+ const { t, te } = useI18n({ useScope: 'global' })
23
+ const __ = (s: any) => !s ? '' : te(`attributes.${s}`) ? t(`attributes.${s}`) : te(s) ? t(s) : s
24
+ defineOptions({
25
+ name: 'MHelpRow',
26
+ inheritAttrs: !1
27
+ })
28
+ </script>
29
+
30
+ <template>
31
+ <div class="row">
32
+ <div class="col-auto">
33
+ <q-icon
34
+ :left="!!text && !tooltip"
35
+ class="cursor-pointer"
36
+ name="ion-ios-information-circle-outline"
37
+ size="19px"
38
+ >
39
+ <q-tooltip
40
+ v-if="!!tooltip"
41
+ anchor="center end"
42
+ class="bg-transparent text-black text-justify"
43
+ self="center start"
44
+ transition-hide="jump-right"
45
+ transition-show="jump-left"
46
+ >
47
+ <q-card style="max-width: 280px">
48
+ <q-card-section style="font-size: 13px">
49
+ {{ __(text) }}
50
+ </q-card-section>
51
+ </q-card>
52
+ </q-tooltip>
53
+ </q-icon>
54
+ </div>
55
+ <div
56
+ v-if="!tooltip && !!text"
57
+ class="col"
58
+ >
59
+ <div v-text="__(text)" />
60
+ </div>
61
+ </div>
62
+ </template>
@@ -0,0 +1,35 @@
1
+ <script
2
+ lang="ts"
3
+ setup
4
+ >
5
+ import type { MRowProps } from '../../types'
6
+ import { computed } from 'vue'
7
+ import MythOptions from '../../utils'
8
+
9
+ interface Props {
10
+ gutter?: MRowProps['gutter'];
11
+ col?: MRowProps['col'];
12
+ }
13
+
14
+ const props = defineProps<Props>()
15
+ const defSize = computed<string>(() => MythOptions.defaults.value.style?.gutters || '')
16
+ const gutterSize = computed<string>(() => props.gutter === !0 ? defSize.value : (props.gutter || defSize.value))
17
+ const colSize = computed<string>(() => props.gutter === !0 ? defSize.value : (props.gutter || defSize.value))
18
+ defineOptions({
19
+ name: 'MRow',
20
+ inheritAttrs: !1
21
+ })
22
+ </script>
23
+
24
+ <template>
25
+ <div
26
+ :class="{
27
+ 'm--row row': !0,
28
+ [`q-gutter-${gutterSize}`]: gutter !== !1 && gutter !== undefined,
29
+ [`q-col-gutter-${colSize}`]: col !== !1 && col !== undefined,
30
+ }"
31
+ v-bind="$attrs"
32
+ >
33
+ <slot />
34
+ </div>
35
+ </template>
@@ -0,0 +1,78 @@
1
+ <script
2
+ lang="ts"
3
+ setup
4
+ >
5
+
6
+ import Typed, { type TypedOptions } from 'typed.js'
7
+ import { computed, onBeforeUnmount, onMounted, watch } from 'vue'
8
+ import type { MTypingStringProps } from '../../types'
9
+
10
+ interface Props {
11
+ name: MTypingStringProps['name'];
12
+ tag?: MTypingStringProps['tag'];
13
+ string: MTypingStringProps['string'];
14
+ loop?: MTypingStringProps['loop'];
15
+ typeSpeed?: MTypingStringProps['typeSpeed'];
16
+ backDelay?: MTypingStringProps['backDelay'];
17
+ fadeOut?: MTypingStringProps['fadeOut'];
18
+ options?: MTypingStringProps['options'];
19
+ }
20
+
21
+ const props = defineProps<Props>()
22
+
23
+ const elmId = computed(() => `typed-content-${props.name}`)
24
+ const computedOptions = computed(() => ({
25
+ loop: props.loop === undefined ? !1 : props.loop,
26
+ typeSpeed: props.typeSpeed === undefined ? 300 : props.typeSpeed,
27
+ backDelay: props.backDelay,
28
+ fadeOut: props.fadeOut,
29
+ strings: typeof props.string === 'string' ? [props.string] : props.string,
30
+ ...props.options
31
+ } as TypedOptions))
32
+ let typed: Typed | undefined
33
+ const iniTyped = () => {
34
+ try {
35
+ typed = new Typed(`#${elmId.value}`, computedOptions.value)
36
+ } catch (e) {
37
+ console.log(e)
38
+ }
39
+ }
40
+ const destroy = () => {
41
+ if (typed) {
42
+ try {
43
+ typed.destroy()
44
+ } catch (e) {
45
+
46
+ }
47
+ }
48
+ }
49
+ watch(() => props.string, () => {
50
+ destroy()
51
+ iniTyped()
52
+ })
53
+ onMounted(() => {
54
+ if (props.string) {
55
+ try {
56
+ iniTyped()
57
+ } catch (e) {
58
+ console.log(e)
59
+ const a = document.getElementById(elmId.value)
60
+ a && (a.innerHTML = typeof props.string === 'string' ? props.string : props.string.join('<br />'))
61
+ }
62
+ }
63
+ })
64
+ onBeforeUnmount(() => destroy())
65
+ defineExpose({ typed })
66
+ defineOptions({
67
+ name: 'MTypingString',
68
+ inheritAttrs: !1
69
+ })
70
+ </script>
71
+
72
+ <template>
73
+ <component
74
+ :is="tag || 'span'"
75
+ :id="elmId"
76
+ v-bind="$attrs"
77
+ />
78
+ </template>
package/src/index.sass CHANGED
@@ -1,2 +1,27 @@
1
1
  @import 'quasar/src/css/variables.sass'
2
+ $m--container-padding: $space-base !default
3
+ $m--container-fluid-width: 1440px !default
4
+ $m--row-margin-top: $m--container-padding !default
2
5
 
6
+ .flex-break
7
+ flex: 1 0 100% !important
8
+
9
+ .row
10
+ .flex-break
11
+ height: 0 !important
12
+
13
+ .column
14
+ .flex-break
15
+ width: 0 !important
16
+
17
+ .m--container
18
+ &__dense
19
+ padding: 0 !important
20
+
21
+ &__fluid
22
+ max-width: $m--container-fluid-width
23
+ margin-left: auto
24
+ margin-right: auto
25
+
26
+ .m--row + .m--row
27
+ margin-top: $m--row-margin-top
@@ -1,9 +1,24 @@
1
1
  import type { QBtnProps } from 'quasar'
2
2
  import type { Ref } from 'vue'
3
- import { MBlockProps } from './components'
3
+ import type { MBlockProps, StyleSize } from './components'
4
4
 
5
5
  export interface UiOptions {
6
- style?: Record<string, any>;
6
+ /**
7
+ * Style of the components.
8
+ */
9
+ style?: {
10
+ /**
11
+ * Apply Padding on all sides of components.
12
+ */
13
+ gutters?: StyleSize | undefined;
14
+ /**
15
+ * Apply Fluid on all sides of containers.
16
+ */
17
+ fluid?: boolean | undefined;
18
+ };
19
+ /**
20
+ * MBtn component.
21
+ */
7
22
  btn?: {
8
23
  props?: Partial<QBtnProps>;
9
24
  loading?: {
@@ -13,6 +28,9 @@ export interface UiOptions {
13
28
  label?: boolean | undefined;
14
29
  }
15
30
  };
31
+ /**
32
+ * MBlock component.
33
+ */
16
34
  block?: Partial<MBlockProps>;
17
35
  }
18
36
 
@@ -1,5 +1,8 @@
1
- import type { GlobalComponentConstructor, QBtnProps, QBtnSlots } from 'quasar'
1
+ import type { GlobalComponentConstructor, QBtnProps, QBtnSlots, QItemProps } from 'quasar'
2
2
  import type { VNode } from 'vue'
3
+ import { TypedOptions } from 'typed.js'
4
+
5
+ export type StyleSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'none';
3
6
 
4
7
  export interface MBtnProps extends QBtnProps {
5
8
  //
@@ -21,7 +24,7 @@ export interface MBlockProps {
21
24
  * Size of the padding block.
22
25
  * Default: 'md'
23
26
  */
24
- readonly size?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | undefined;
27
+ readonly size?: StyleSize | undefined;
25
28
  /**
26
29
  * Rounded block
27
30
  */
@@ -33,12 +36,128 @@ export interface MBlockProps {
33
36
  }
34
37
 
35
38
  export interface MBlockSlots {
36
- default?: () => VNode[];
39
+ default: () => VNode[];
40
+ }
41
+
42
+ export type ColStyleType =
43
+ boolean
44
+ | undefined
45
+ | string
46
+ | number
47
+ | 'auto'
48
+ | 'grow'
49
+ | 'shrink'
50
+ | '1'
51
+ | '2'
52
+ | '3'
53
+ | '4'
54
+ | '5'
55
+ | '6'
56
+ | '7'
57
+ | '8'
58
+ | '9'
59
+ | '10'
60
+ | '11'
61
+ | '12'
62
+ | 1
63
+ | 2
64
+ | 3
65
+ | 4
66
+ | 5
67
+ | 6
68
+ | 7
69
+ | 8
70
+ | 9
71
+ | 10
72
+ | 11
73
+ | 12
74
+
75
+ export interface MColProps {
76
+ readonly auto?: boolean | undefined;
77
+ readonly col?: ColStyleType;
78
+ readonly xs?: ColStyleType;
79
+ readonly sm?: ColStyleType;
80
+ readonly md?: ColStyleType;
81
+ readonly lg?: ColStyleType;
82
+ readonly xl?: ColStyleType;
83
+ readonly name?: string;
84
+ }
85
+
86
+ export interface MColSlots {
87
+ default: () => VNode[];
88
+ }
89
+
90
+ export interface MColumnProps {
91
+ [key: string]: any;
92
+ }
93
+
94
+ export interface MColumnSlots {
95
+ default: () => VNode[];
96
+ }
97
+
98
+ export interface MContainerProps {
99
+ readonly size?: StyleSize | string | undefined;
100
+ readonly dense?: boolean | undefined;
101
+ readonly fluid?: boolean | undefined;
102
+ }
103
+
104
+ export interface MContainerSlots {
105
+ default: () => VNode[];
106
+ }
107
+
108
+ export interface MRowProps {
109
+ /**
110
+ * Default: false.
111
+ */
112
+ gutter?: boolean | StyleSize | undefined;
113
+ /**
114
+ * Default: false.
115
+ */
116
+ col?: boolean | StyleSize | undefined;
117
+ }
118
+
119
+ export interface MRowSlots {
120
+ default: () => VNode[];
121
+ }
122
+
123
+ export interface MHelpRowProps extends Partial<QItemProps> {
124
+ text?: string | undefined;
125
+ icon?: string | undefined;
126
+ tooltip?: boolean | undefined;
127
+ }
128
+
129
+ export interface MHelpRowSlots {
130
+ default: () => VNode[];
131
+ }
132
+
133
+ export interface MTypingStringProps {
134
+ name: number | string;
135
+ tag?: string;
136
+ string: string | string[];
137
+ loop?: TypedOptions['loop'];
138
+ typeSpeed?: TypedOptions['typeSpeed'];
139
+ backDelay?: TypedOptions['backDelay'];
140
+ fadeOut?: TypedOptions['fadeOut'];
141
+ options?: Omit<TypedOptions, 'loop' | 'typeSpeed' | 'backDelay' | 'fadeOut'>;
142
+ }
143
+
144
+ export interface MTypingStringSlots {
145
+ default: () => VNode[];
37
146
  }
38
147
 
39
148
  declare module '@vue/runtime-core' {
40
149
  interface GlobalComponents {
150
+ // Form.
41
151
  MBtn: GlobalComponentConstructor<MBtnProps, MBtnSlots>;
152
+
153
+ // Grid.
42
154
  MBlock: GlobalComponentConstructor<MBlockProps, MBlockSlots>;
155
+ MCol: GlobalComponentConstructor<MColProps, MColSlots>;
156
+ MColumn: GlobalComponentConstructor<MColumnProps, MColumnSlots>;
157
+ MContainer: GlobalComponentConstructor<MContainerProps, MContainerSlots>;
158
+ MHelpRow: GlobalComponentConstructor<MHelpRowProps, MHelpRowSlots>;
159
+ MRow: GlobalComponentConstructor<MRowProps, MRowSlots>;
160
+ // Typography.
161
+ MTypingString: GlobalComponentConstructor<MTypingStringProps, MTypingStringSlots>;
43
162
  }
44
163
  }
package/src/utils.ts CHANGED
@@ -1,15 +1,22 @@
1
1
  import { ref } from 'vue'
2
- import type { UiOptions } from './types'
3
2
  import type { QBtnProps } from 'quasar'
3
+ import { extend } from 'quasar'
4
+ import type { UiOptions } from './types'
4
5
 
5
- const cmDefaults = ref<UiOptions>({})
6
+ const defGutters = 'md'
7
+ const defaultOptions: UiOptions = {
8
+ style: {
9
+ gutters: defGutters
10
+ }
11
+ }
12
+ const cmDefaults = ref<UiOptions>({ ...defaultOptions })
6
13
  const MythOptions = {
7
14
  defaults: cmDefaults,
8
15
  setDefaults (values: Partial<UiOptions>) {
9
- cmDefaults.value = { ...values }
16
+ cmDefaults.value = extend(!0, defaultOptions, values)
10
17
  },
11
18
  withDefaults (values: Partial<UiOptions>) {
12
- cmDefaults.value = { ...cmDefaults.value, ...values }
19
+ cmDefaults.value = extend(!0, defaultOptions, cmDefaults.value, values)
13
20
  },
14
21
  withBtnDefaults (values: Partial<QBtnProps>) {
15
22
  cmDefaults.value = {
package/src/vue-plugin.js CHANGED
@@ -1,22 +1,38 @@
1
- import MBtn from './components/form/MBtn.vue'
2
1
  import js from '../package.json'
3
2
  import { MythOptions } from './utils'
3
+ import MBtn from './components/form/MBtn.vue'
4
4
  import MBlock from './components/grid/MBlock.vue'
5
+ import MCol from './components/grid/MCol.vue'
6
+ import MColumn from './components/grid/MColumn.vue'
7
+ import MContainer from './components/grid/MContainer.vue'
8
+ import MHelpRow from './components/grid/MHelpRow.vue'
9
+ import MRow from './components/grid/MRow.vue'
10
+ import MTypingString from './components/typography/MTypingString.vue'
5
11
 
6
12
  const name = js.name
7
13
  const version = js.version
8
14
 
9
15
  function install (app, options = {}) {
10
16
  MythOptions.withDefaults(options)
17
+ // Form.
11
18
  app.component('MBtn', MBtn)
19
+
20
+ // Grid.
12
21
  app.component('MBlock', MBlock)
22
+ app.component('MCol', MCol)
23
+ app.component('MColumn', MColumn)
24
+ app.component('MContainer', MContainer)
25
+ app.component('MHelpRow', MHelpRow)
26
+ app.component('MRow', MRow)
27
+
28
+ // Typography.
29
+ app.component('MTypingString', MTypingString)
13
30
  }
14
31
 
15
32
  export {
16
33
  name,
17
34
  version,
18
- install,
19
- MythOptions
35
+ install
20
36
  }
21
37
 
22
38
  export default {
package/tsconfig.json CHANGED
@@ -1,10 +1,28 @@
1
1
  {
2
2
  "compilerOptions": {
3
- "target": "ESNext",
4
- "module": "Preserve",
5
3
  "esModuleInterop": true,
6
- "forceConsistentCasingInFileNames": true,
4
+ "skipLibCheck": true,
5
+ "target": "esnext",
6
+ "allowJs": true,
7
+ "resolveJsonModule": true,
8
+ "moduleDetection": "force",
9
+ "isolatedModules": true,
10
+ "verbatimModuleSyntax": true,
11
+ "module": "preserve",
12
+ "noEmit": true,
13
+ "lib": [
14
+ "esnext",
15
+ "dom",
16
+ "dom.iterable"
17
+ ],
7
18
  "strict": true,
8
- "skipLibCheck": true
9
- }
19
+ "allowUnreachableCode": false,
20
+ "allowUnusedLabels": false,
21
+ "noImplicitOverride": true,
22
+ "exactOptionalPropertyTypes": true,
23
+ "noUncheckedIndexedAccess": true,
24
+ },
25
+ "exclude": [
26
+ "./build"
27
+ ]
10
28
  }
package/src/utils.js DELETED
@@ -1,22 +0,0 @@
1
- import { ref } from 'vue';
2
- const cmDefaults = ref({});
3
- const MythOptions = {
4
- defaults: cmDefaults,
5
- setDefaults(values) {
6
- cmDefaults.value = { ...values };
7
- },
8
- withDefaults(values) {
9
- cmDefaults.value = { ...cmDefaults.value, ...values };
10
- },
11
- withBtnDefaults(values) {
12
- cmDefaults.value = {
13
- ...cmDefaults.value,
14
- btn: {
15
- ...cmDefaults.value.btn,
16
- props: { ...values }
17
- }
18
- };
19
- }
20
- };
21
- export default MythOptions;
22
- export { MythOptions };