@mythpe/quasar-ui-qui 0.0.26 → 0.0.27-dev

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 (92) hide show
  1. package/index.d.ts +13 -0
  2. package/package.json +15 -8
  3. package/src/boot/register.ts +14 -0
  4. package/src/components/datatable/MDatatable.vue +2305 -0
  5. package/src/components/datatable/MDtAvatar.vue +49 -0
  6. package/src/components/datatable/MDtBtn.vue +153 -0
  7. package/src/components/datatable/MDtContextmenuItems.vue +54 -0
  8. package/src/components/datatable/index.ts +6 -0
  9. package/src/components/form/MAvatarViewer.vue +327 -0
  10. package/src/components/form/MAxios.vue +144 -0
  11. package/src/components/form/MBtn.vue +271 -93
  12. package/src/components/form/MCheckbox.vue +150 -0
  13. package/src/components/form/MColor.vue +122 -0
  14. package/src/components/form/MDate.vue +50 -0
  15. package/src/components/form/MEditor.vue +285 -0
  16. package/src/components/form/MEmail.vue +43 -0
  17. package/src/components/form/MField.vue +148 -0
  18. package/src/components/form/MFile.vue +215 -0
  19. package/src/components/form/MForm.vue +89 -0
  20. package/src/components/form/MHidden.vue +86 -0
  21. package/src/components/form/MHiddenInput.vue +58 -0
  22. package/src/components/form/MInput.vue +178 -0
  23. package/src/components/form/MInputFieldControl.vue +27 -0
  24. package/src/components/form/MInputLabel.vue +38 -0
  25. package/src/components/form/MMobile.vue +43 -0
  26. package/src/components/form/MOptions.vue +255 -0
  27. package/src/components/form/MOtp.vue +292 -0
  28. package/src/components/form/MPassword.vue +73 -0
  29. package/src/components/form/MPicker.vue +313 -0
  30. package/src/components/form/MRadio.vue +181 -0
  31. package/src/components/form/MSelect.vue +352 -0
  32. package/src/components/form/MTime.vue +48 -0
  33. package/src/components/form/MToggle.vue +211 -0
  34. package/src/components/form/MUploader.vue +511 -0
  35. package/src/components/form/index.ts +63 -0
  36. package/src/components/grid/MBlock.vue +39 -18
  37. package/src/components/grid/MCol.vue +11 -15
  38. package/src/components/grid/MColumn.vue +12 -1
  39. package/src/components/grid/MContainer.vue +22 -13
  40. package/src/components/grid/MHelpRow.vue +13 -12
  41. package/src/components/grid/MRow.vue +31 -10
  42. package/src/components/grid/index.ts +16 -0
  43. package/src/components/index.ts +15 -0
  44. package/src/components/modal/MDialog.vue +58 -0
  45. package/src/components/modal/MModalMenu.vue +62 -0
  46. package/src/components/modal/MTooltip.vue +39 -0
  47. package/src/components/modal/index.ts +5 -0
  48. package/src/components/parials/UploaderItem.vue +298 -0
  49. package/src/components/parials/index.ts +3 -0
  50. package/src/components/transition/MFadeTransition.vue +27 -0
  51. package/src/components/transition/MFadeXTransition.vue +26 -0
  52. package/src/components/transition/MTransition.vue +44 -0
  53. package/src/components/transition/index.ts +13 -0
  54. package/src/components/typography/MTypingString.vue +8 -0
  55. package/src/components/typography/index.ts +11 -0
  56. package/src/composable/index.ts +12 -0
  57. package/src/composable/useBindInput.ts +209 -0
  58. package/src/composable/useError.ts +11 -0
  59. package/src/composable/useMyth.ts +311 -0
  60. package/src/composable/useValue.ts +12 -0
  61. package/src/index.common.js +19 -1
  62. package/src/index.esm.js +18 -3
  63. package/src/index.js +19 -0
  64. package/src/index.sass +9 -26
  65. package/src/index.ts +18 -4
  66. package/src/index.umd.js +17 -2
  67. package/src/style/m-container.sass +13 -0
  68. package/src/style/main.sass +146 -0
  69. package/src/style/print.sass +14 -0
  70. package/src/style/transition.sass +40 -0
  71. package/src/types/api-helpers.d.ts +62 -0
  72. package/src/types/components.d.ts +1075 -27
  73. package/src/types/index.d.ts +21 -1
  74. package/src/types/install-options.d.ts +19 -0
  75. package/src/types/lodash.d.ts +26 -0
  76. package/src/types/m-datatable.d.ts +316 -0
  77. package/src/types/m-geolocation.d.ts +16 -0
  78. package/src/types/m-helpers.d.ts +97 -0
  79. package/src/types/plugin-props-option.d.ts +301 -0
  80. package/src/types/quasar-helpers.d.ts +7 -0
  81. package/src/types/theme.d.ts +12 -0
  82. package/src/utils/Helpers.ts +293 -0
  83. package/src/utils/Str.ts +211 -0
  84. package/src/utils/index.ts +13 -0
  85. package/src/utils/myth.ts +109 -0
  86. package/src/utils/vee-rules.ts +32 -0
  87. package/src/utils/vue-plugin.ts +161 -0
  88. package/tsconfig.json +9 -13
  89. package/src/myth.ts +0 -30
  90. package/src/types/myth.ts +0 -42
  91. package/src/vue-plugin.ts +0 -41
  92. package/types.d.ts +0 -1
@@ -0,0 +1,211 @@
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 { computed, reactive, toValue, useTemplateRef } from 'vue'
14
+ import { useField } from 'vee-validate'
15
+ import type { MToggleProps as Props } from '../../types'
16
+ import { useBindInput, useMyth } from '../../composable'
17
+ import { QToggle } from 'quasar'
18
+ import { myth } from '../../utils'
19
+
20
+ interface P {
21
+ auto?: Props['auto'];
22
+ col?: Props['col'];
23
+ xs?: Props['xs'];
24
+ sm?: Props['sm'];
25
+ md?: Props['md'];
26
+ lg?: Props['lg'];
27
+ xl?: Props['xl'];
28
+ val?: Props['val'];
29
+ name: Props['name'];
30
+ label?: Props['label'];
31
+ caption?: Props['caption'];
32
+ hint?: Props['hint'];
33
+ help?: Props['help'];
34
+ activeLabel?: Props['activeLabel'];
35
+ inactiveLabel?: Props['inactiveLabel'];
36
+ trueValue?: Props['trueValue'];
37
+ falseValue?: Props['falseValue'];
38
+ indeterminateValue?: Props['indeterminateValue'];
39
+ color?: Props['color'];
40
+ checkedIcon?: Props['checkedIcon'];
41
+ indeterminateIcon?: Props['indeterminateIcon'];
42
+ uncheckedIcon?: Props['uncheckedIcon'];
43
+ status?: Props['status'];
44
+ rules?: Props['rules'];
45
+ dense?: Props['dense'];
46
+ keepColor?: Props['keepColor'];
47
+ required?: Props['required'];
48
+ rowProps?: Props['rowProps'];
49
+ colProps?: Props['colProps'];
50
+ viewMode?: Props['viewMode'];
51
+ fieldOptions?: Props['fieldOptions'];
52
+ }
53
+
54
+ const props = withDefaults(defineProps<P>(), {
55
+ auto: undefined,
56
+ col: undefined,
57
+ xs: undefined,
58
+ sm: undefined,
59
+ md: undefined,
60
+ lg: undefined,
61
+ xl: undefined,
62
+ val: undefined,
63
+ name: () => '',
64
+ label: undefined,
65
+ caption: undefined,
66
+ hint: undefined,
67
+ help: undefined,
68
+ trueValue: !0,
69
+ falseValue: !1,
70
+ indeterminateValue: null,
71
+ color: () => 'primary',
72
+ checkedIcon: () => 'ion-checkmark',
73
+ uncheckedIcon: () => 'ion-close',
74
+ indeterminateIcon: () => 'ion-ios-code-working',
75
+ activeLabel: () => 'yes',
76
+ inactiveLabel: () => 'no',
77
+ status: () => !1,
78
+ rules: undefined,
79
+ dense: undefined,
80
+ keepColor: undefined,
81
+ required: undefined,
82
+ rowProps: undefined,
83
+ colProps: undefined,
84
+ viewMode: () => !1,
85
+ fieldOptions: undefined
86
+ })
87
+ defineModel<Props['modelValue']>({ required: !1, default: undefined })
88
+ const helper = useBindInput<P>(() => props, 'toggle', () => ({ choose: !0 }))
89
+ const { getLabel: toggleLabel, inputRules, getProp } = helper
90
+ const inputScope = useField<Props['modelValue']>(() => props.name, inputRules, {
91
+ syncVModel: !0,
92
+ label: toggleLabel,
93
+ ...toValue<any>(props.fieldOptions)
94
+ })
95
+ const { value, errorMessage, handleChange } = inputScope
96
+
97
+ const listeners = {
98
+ 'update:modelValue': (v: Props['modelValue']) => handleChange(v, !!errorMessage.value)
99
+ }
100
+
101
+ const { __ } = useMyth()
102
+ const { props: pluginOptions, themeInput } = myth
103
+ const getLabel = computed<string | undefined>(() => {
104
+ const def = undefined
105
+ const v = value.value
106
+ if (v === props.trueValue) {
107
+ return __(props.status ? 'active' : props.activeLabel) as string || def
108
+ }
109
+ if (v === props.falseValue) {
110
+ return __(props.status ? 'inactive' : props.inactiveLabel) as string || def
111
+ }
112
+ return __('none') as string || def
113
+ })
114
+
115
+ const input = useTemplateRef<InstanceType<typeof QToggle>>('input')
116
+ const scopes = reactive(inputScope)
117
+ defineExpose({ input, ...scopes })
118
+ defineOptions({
119
+ name: 'MToggle',
120
+ inheritAttrs: !1
121
+ })
122
+ </script>
123
+
124
+ <template>
125
+ <MCol
126
+ :auto="auto"
127
+ :class="[$attrs.class,{'m--input__required':inputRules?.required!==undefined,'m--input__error':!!errorMessage,'m--input__view':viewMode}]"
128
+ :col="col"
129
+ :lg="lg"
130
+ :md="md"
131
+ :name="name"
132
+ :sm="sm"
133
+ :xs="xs"
134
+ >
135
+ <slot
136
+ name="top-input"
137
+ v-bind="scopes"
138
+ />
139
+ <slot name="top-label">
140
+ <MInputLabel
141
+ :field="scopes"
142
+ class="no-margin"
143
+ >
144
+ <MHelpRow
145
+ v-if="!!help"
146
+ :text="help"
147
+ tooltip
148
+ />
149
+ </MInputLabel>
150
+ </slot>
151
+ <slot name="caption">
152
+ <div
153
+ v-if="!!caption"
154
+ class="m--input__caption text-caption"
155
+ >
156
+ {{ __(caption) }}
157
+ </div>
158
+ </slot>
159
+ <MRow v-bind="rowProps">
160
+ <slot
161
+ name="before"
162
+ v-bind="scopes"
163
+ />
164
+ <MCol v-bind="colProps">
165
+ <q-field
166
+ :error="!!errorMessage"
167
+ :error-message="errorMessage"
168
+ :hint="__(hint)"
169
+ v-bind="{
170
+ ...pluginOptions.input as any,
171
+ ...pluginOptions.field,
172
+ ...$attrs,
173
+ borderless: !0,
174
+ outlined: !1,
175
+ dense: themeInput.dense !== undefined ? themeInput.dense : getProp('dense')
176
+ }"
177
+ >
178
+ <q-toggle
179
+ :disable="viewMode"
180
+ :false-value="falseValue"
181
+ :indeterminate-value="indeterminateValue"
182
+ :label="getLabel"
183
+ :model-value="value"
184
+ :true-value="trueValue"
185
+ v-bind="{
186
+ ...pluginOptions.toggle,
187
+ ...$attrs,
188
+ dense: themeInput.dense !== undefined ? themeInput.dense : getProp('dense'),
189
+ checkedIcon: getProp('checkedIcon'),
190
+ uncheckedIcon: getProp('uncheckedIcon'),
191
+ color: !!errorMessage ? 'negative' : getProp('color'),
192
+ indeterminateIcon: getProp('indeterminateIcon'),
193
+ keepColor: getProp('keepColor'),
194
+ }"
195
+ v-on="listeners"
196
+ >
197
+ <slot v-bind="scopes" />
198
+ </q-toggle>
199
+ </q-field>
200
+ </MCol>
201
+ <slot
202
+ name="after"
203
+ v-bind="scopes"
204
+ />
205
+ </MRow>
206
+ <slot
207
+ name="bottom-input"
208
+ v-bind="scopes"
209
+ />
210
+ </MCol>
211
+ </template>