@mythpe/quasar-ui-qui 0.2.0 → 0.2.1

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mythpe/quasar-ui-qui",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "MyTh Quasar UI Kit App Extension",
5
5
  "author": {
6
6
  "name": "MyTh Ahmed Faiz",
@@ -222,9 +222,11 @@ const {
222
222
  fetchDatatableItems,
223
223
  exportData,
224
224
  openDialogTimeout,
225
+ beforeCloseFilterDialog,
225
226
  openFilterDialog,
226
227
  saveFilterDialog,
227
228
  closeFilterDialog,
229
+ filterDialogModel,
228
230
  onRemoveFilter,
229
231
  updateFilterOptions,
230
232
  openShowDialogNoIndex,
@@ -351,7 +353,7 @@ const onSuccess: SubmissionHandler = async (form) => {
351
353
  } catch (e: any) {
352
354
  const { _message, _errors } = e || {}
353
355
  dialogErrors.value = _errors || {}
354
- scrollToElementFromErrors(_errors, undefined, '.m--datatable__dialog-form-container')
356
+ await scrollToElementFromErrors(_errors, undefined, '.m--datatable__dialog-form-container')
355
357
  _message && alertError(_message)
356
358
  if (_errors) {
357
359
  useFormContext.setErrors(_errors)
@@ -854,13 +856,14 @@ defineExpose({
854
856
  label="myth.datatable.hints.filter"
855
857
  tooltip="myth.datatable.hints.filter"
856
858
  v-bind="{...defaultTopBtnProps,...pluginOptions.dt?.buttons?.filter as any}"
857
- @click="openFilterDialog()"
858
859
  >
859
860
  <MModalMenu
861
+ v-model="filterDialogModel"
860
862
  no-close-btn
861
863
  persistent
862
864
  position="top"
863
865
  v-bind="pluginOptions.dt?.filterDialogProps as any"
866
+ @before-show="beforeCloseFilterDialog"
864
867
  >
865
868
  <q-card
866
869
  :style="$q.screen.gt.sm?`width: ${Math.ceil($q.screen.width/2)}px` : undefined"
@@ -1059,9 +1062,9 @@ defineExpose({
1059
1062
  <span>
1060
1063
  {{ getHeaders.find(e => e.name === filterKey)?.label || __(`attributes.${filterKey}`) }}
1061
1064
  </span>
1062
- <span v-if="typeof filterValue === 'boolean'">: {{
1063
- __(`labels.${filterValue ? 'yes' : 'no'}`)
1064
- }}</span>
1065
+ <span v-if="typeof filterValue === 'boolean'">
1066
+ : {{ __(`labels.${filterValue ? 'yes' : 'no'}`) }}
1067
+ </span>
1065
1068
  <span v-else-if="typeof filterValue === 'string'">: {{ filterValue }}</span>
1066
1069
  <span
1067
1070
  v-else-if="Array.isArray(filterValue) && !quasarHelpers.object(filterValue[0])"
@@ -1072,6 +1075,7 @@ defineExpose({
1072
1075
  <span
1073
1076
  v-else-if="quasarHelpers.object(filterValue) && filterValue.label"
1074
1077
  >: {{ filterValue.label }}</span>
1078
+ <span v-else-if="typeof filterValue === 'object'">:&nbsp;{{ Object.values(filterValue).join(' - ') }}</span>
1075
1079
  </q-chip>
1076
1080
  </MCol>
1077
1081
  </template>
@@ -18,7 +18,17 @@ interface Props {
18
18
  position?: MModalMenuProps['position'];
19
19
  }
20
20
 
21
+ const modelValue = defineModel<boolean>({ required: !1, default: undefined })
21
22
  const { props: pluginOptions, __ } = useMyth()
23
+
24
+ type Emits = {
25
+ (e: 'beforeShow', evt?: Event): void;
26
+ (e: 'show', evt?: Event): void;
27
+ (e: 'beforeHide', evt?: Event): void;
28
+ (e: 'hide', evt?: Event): void;
29
+ }
30
+ const emit = defineEmits<Emits>()
31
+
22
32
  withDefaults(defineProps<Props>(), {
23
33
  noCloseBtn: () => !1,
24
34
  position: () => 'bottom'
@@ -31,6 +41,7 @@ defineOptions({
31
41
 
32
42
  <template>
33
43
  <q-popup-proxy
44
+ v-model="modelValue"
34
45
  :position="position"
35
46
  allow-focus-outside
36
47
  class="m--modal_menu"
@@ -39,6 +50,10 @@ defineOptions({
39
50
  no-shake
40
51
  persistent
41
52
  v-bind="{...pluginOptions.modalMenu,...$attrs}"
53
+ @hide="emit('hide', $event)"
54
+ @show="emit('show', $event)"
55
+ @before-show="emit('beforeShow',$event)"
56
+ @before-hide="emit('beforeHide',$event)"
42
57
  >
43
58
  <q-card v-bind="pluginOptions.modalMenuOptions?.card">
44
59
  <slot />
@@ -431,20 +431,30 @@ export const useDtHelpers = (options: MaybeRefOrGetter<MDatatableProps>) => {
431
431
  resetDialogForm({ values: init || {} }, { force: !0 })
432
432
  attrs && setValues(attrs, !1)
433
433
  }
434
- const openFilterDialog = () => {
434
+ const beforeShowFilterDialog = async () => {
435
435
  resetDialogForm({ values: {}, errors: {} }, { force: !0 })
436
- nextTick(() => {
436
+ await nextTick(() => {
437
437
  tempFilterForm.value = { ...filterForm.value }
438
+ })
439
+ }
440
+ const beforeCloseFilterDialog = async () => {
441
+ tempFilterForm.value = { ...filterForm.value }
442
+ }
443
+ const openFilterDialog = async () => {
444
+ await beforeShowFilterDialog()
445
+ await nextTick(() => {
438
446
  filterDialogModel.value = !0
439
447
  })
440
448
  }
441
- const saveFilterDialog = () => {
449
+ const saveFilterDialog = async () => {
442
450
  filterDialogModel.value = !1
443
- nextTick(() => (filterForm.value = { ...tempFilterForm.value }))
451
+ await nextTick(() => (filterForm.value = { ...tempFilterForm.value }))
444
452
  }
445
- const closeFilterDialog = () => {
453
+ const closeFilterDialog = async () => {
446
454
  filterDialogModel.value = !1
447
- tempFilterForm.value = { ...filterForm.value }
455
+ await nextTick(() => {
456
+ beforeCloseFilterDialog()
457
+ })
448
458
  }
449
459
  const onRemoveFilter = (key: string | number) => {
450
460
  const filter = filterForm.value
@@ -926,6 +936,7 @@ export const useDtHelpers = (options: MaybeRefOrGetter<MDatatableProps>) => {
926
936
  fetchDatatableItems,
927
937
  exportData,
928
938
  openDialogTimeout,
939
+ beforeCloseFilterDialog,
929
940
  openFilterDialog,
930
941
  saveFilterDialog,
931
942
  closeFilterDialog,