@mythpe/quasar-ui-qui 0.0.26-dev → 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 (54) hide show
  1. package/index.d.ts +0 -4
  2. package/package.json +2 -1
  3. package/src/components/datatable/MDatatable.vue +2305 -0
  4. package/src/components/datatable/MDtAvatar.vue +49 -0
  5. package/src/components/datatable/MDtBtn.vue +153 -0
  6. package/src/components/datatable/MDtContextmenuItems.vue +54 -0
  7. package/src/components/datatable/index.ts +6 -0
  8. package/src/components/form/MAvatarViewer.vue +6 -3
  9. package/src/components/form/MAxios.vue +7 -4
  10. package/src/components/form/MCheckbox.vue +33 -9
  11. package/src/components/form/MDate.vue +4 -1
  12. package/src/components/form/MEmail.vue +4 -1
  13. package/src/components/form/MField.vue +4 -1
  14. package/src/components/form/MFile.vue +5 -2
  15. package/src/components/form/MForm.vue +4 -1
  16. package/src/components/form/MHiddenInput.vue +4 -1
  17. package/src/components/form/MInput.vue +1 -1
  18. package/src/components/form/MInputLabel.vue +4 -1
  19. package/src/components/form/MMobile.vue +4 -1
  20. package/src/components/form/MOptions.vue +255 -0
  21. package/src/components/form/MOtp.vue +292 -0
  22. package/src/components/form/MRadio.vue +5 -2
  23. package/src/components/form/MSelect.vue +4 -1
  24. package/src/components/form/MTime.vue +4 -1
  25. package/src/components/form/MToggle.vue +211 -0
  26. package/src/components/form/MUploader.vue +511 -0
  27. package/src/components/form/index.ts +9 -1
  28. package/src/components/grid/MColumn.vue +4 -1
  29. package/src/components/grid/MHelpRow.vue +5 -1
  30. package/src/components/index.ts +3 -0
  31. package/src/components/modal/MDialog.vue +58 -0
  32. package/src/components/modal/MModalMenu.vue +62 -0
  33. package/src/components/modal/MTooltip.vue +39 -0
  34. package/src/components/modal/index.ts +5 -0
  35. package/src/components/parials/UploaderItem.vue +298 -0
  36. package/src/components/parials/index.ts +3 -0
  37. package/src/components/transition/MTransition.vue +4 -1
  38. package/src/composable/useBindInput.ts +1 -1
  39. package/src/composable/useMyth.ts +20 -11
  40. package/src/index.sass +2 -1
  41. package/src/style/main.sass +104 -0
  42. package/src/style/print.sass +14 -0
  43. package/src/style/transition.sass +40 -0
  44. package/src/types/api-helpers.d.ts +11 -72
  45. package/src/types/components.d.ts +411 -105
  46. package/src/types/index.d.ts +5 -139
  47. package/src/types/install-options.d.ts +19 -0
  48. package/src/types/m-datatable.d.ts +316 -0
  49. package/src/types/m-geolocation.d.ts +16 -0
  50. package/src/types/m-helpers.d.ts +97 -0
  51. package/src/types/plugin-props-option.d.ts +301 -0
  52. package/src/utils/myth.ts +15 -1
  53. package/src/utils/vue-plugin.ts +34 -2
  54. package/src/types/dt.d.ts +0 -144
@@ -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>