forked from verdnatura/salix-front
refactor: refs #8304 improving attrs handling and simplify logic in VnNotes, VnSubToolbar, and WorkerCalendar
This commit is contained in:
parent
559bf0db02
commit
fceb5dd5fd
|
@ -1,6 +1,6 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import { ref, reactive } from 'vue';
|
import { ref, reactive, useAttrs } from 'vue';
|
||||||
import { onBeforeRouteLeave } from 'vue-router';
|
import { onBeforeRouteLeave } from 'vue-router';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
import { useQuasar } from 'quasar';
|
import { useQuasar } from 'quasar';
|
||||||
|
@ -18,6 +18,8 @@ import VnInput from 'components/common/VnInput.vue';
|
||||||
|
|
||||||
const emit = defineEmits(['onFetch']);
|
const emit = defineEmits(['onFetch']);
|
||||||
|
|
||||||
|
const $attrs = useAttrs();
|
||||||
|
|
||||||
const $props = defineProps({
|
const $props = defineProps({
|
||||||
url: { type: String, default: null },
|
url: { type: String, default: null },
|
||||||
saveUrl: {type: String, default: null},
|
saveUrl: {type: String, default: null},
|
||||||
|
@ -26,7 +28,6 @@ const $props = defineProps({
|
||||||
addNote: { type: Boolean, default: false },
|
addNote: { type: Boolean, default: false },
|
||||||
selectType: { type: Boolean, default: false },
|
selectType: { type: Boolean, default: false },
|
||||||
justInput: { type: Boolean, default: false },
|
justInput: { type: Boolean, default: false },
|
||||||
required: { type: Boolean, default: false },
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
@ -64,7 +65,7 @@ function confirmAndUpdate() {
|
||||||
message: t('Are you sure remove this note?'),
|
message: t('Are you sure remove this note?'),
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.onOk(() => update())
|
.onOk(update)
|
||||||
.onCancel(() => {
|
.onCancel(() => {
|
||||||
newNote.text = originalText;
|
newNote.text = originalText;
|
||||||
});
|
});
|
||||||
|
@ -82,7 +83,7 @@ async function update() {
|
||||||
}
|
}
|
||||||
|
|
||||||
onBeforeRouteLeave((to, from, next) => {
|
onBeforeRouteLeave((to, from, next) => {
|
||||||
if ((newNote.text && !$props.justInput) || (newNote.text !== originalText) && $props.justInput )
|
if ((newNote.text && !$props.justInput) || (newNote.text !== originalText) && $props.justInput)
|
||||||
quasar.dialog({
|
quasar.dialog({
|
||||||
component: VnConfirm,
|
component: VnConfirm,
|
||||||
componentProps: {
|
componentProps: {
|
||||||
|
@ -93,6 +94,13 @@ onBeforeRouteLeave((to, from, next) => {
|
||||||
});
|
});
|
||||||
else next();
|
else next();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function fetchData([ data ]) {
|
||||||
|
newNote.text = data?.notes;
|
||||||
|
originalText = data?.notes;
|
||||||
|
emit('onFetch', data);
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<FetchData
|
<FetchData
|
||||||
|
@ -106,13 +114,13 @@ onBeforeRouteLeave((to, from, next) => {
|
||||||
v-if="justInput"
|
v-if="justInput"
|
||||||
:url="url"
|
:url="url"
|
||||||
:filter="filter"
|
:filter="filter"
|
||||||
@on-fetch="(data) => (newNote.text = data[0]?.notes, originalText = data[0]?.notes, emit('onFetch', data))"
|
@on-fetch="fetchData"
|
||||||
auto-load
|
auto-load
|
||||||
/>
|
/>
|
||||||
<QCard
|
<QCard
|
||||||
class="q-pa-xs q-mb-lg full-width"
|
class="q-pa-xs q-mb-lg full-width"
|
||||||
|
:class="{ 'just-input': $props.justInput }"
|
||||||
v-if="$props.addNote || $props.justInput"
|
v-if="$props.addNote || $props.justInput"
|
||||||
:style="$props.justInput ? 'padding-right: 18px; margin-bottom: 2px; box-shadow: none;' : ''"
|
|
||||||
>
|
>
|
||||||
<QCardSection horizontal v-if="!$props.justInput">
|
<QCardSection horizontal v-if="!$props.justInput">
|
||||||
{{ t('New note') }}
|
{{ t('New note') }}
|
||||||
|
@ -126,7 +134,7 @@ onBeforeRouteLeave((to, from, next) => {
|
||||||
v-model="newNote.observationTypeFk"
|
v-model="newNote.observationTypeFk"
|
||||||
option-label="description"
|
option-label="description"
|
||||||
style="flex: 0.15"
|
style="flex: 0.15"
|
||||||
:required="$props.required"
|
:required="$attrs.required"
|
||||||
@keyup.enter.stop="insert"
|
@keyup.enter.stop="insert"
|
||||||
/>
|
/>
|
||||||
<VnInput
|
<VnInput
|
||||||
|
@ -137,7 +145,7 @@ onBeforeRouteLeave((to, from, next) => {
|
||||||
size="lg"
|
size="lg"
|
||||||
autogrow
|
autogrow
|
||||||
@keyup.enter.stop="handleClick"
|
@keyup.enter.stop="handleClick"
|
||||||
:required="$props.required"
|
:required="$attrs.required"
|
||||||
clearable
|
clearable
|
||||||
>
|
>
|
||||||
<template #append>
|
<template #append>
|
||||||
|
@ -250,6 +258,11 @@ onBeforeRouteLeave((to, from, next) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.just-input {
|
||||||
|
padding-right: 18px;
|
||||||
|
margin-bottom: 2px;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<i18n>
|
<i18n>
|
||||||
es:
|
es:
|
||||||
|
|
|
@ -26,9 +26,7 @@ onMounted(() => {
|
||||||
if (data.value) observer.observe(data.value, opts);
|
if (data.value) observer.observe(data.value, opts);
|
||||||
});
|
});
|
||||||
|
|
||||||
const actionsChildCount = () => {
|
const actionsChildCount = computed(() => !!actions.value?.childNodes?.length);
|
||||||
return !!actions.value?.childNodes?.length;
|
|
||||||
};
|
|
||||||
|
|
||||||
onBeforeUnmount(() => stateStore.toggleSubToolbar() && hasSubToolbar);
|
onBeforeUnmount(() => stateStore.toggleSubToolbar() && hasSubToolbar);
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -23,6 +23,6 @@ const noteFilter = computed(() => {
|
||||||
:body="{ clientFk: route.params.id }"
|
:body="{ clientFk: route.params.id }"
|
||||||
style="overflow-y: auto"
|
style="overflow-y: auto"
|
||||||
:select-type="true"
|
:select-type="true"
|
||||||
:required="true"
|
required
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -205,7 +205,6 @@ watch([year, businessFk], () => refreshData());
|
||||||
}
|
}
|
||||||
"
|
"
|
||||||
:body="body"
|
:body="body"
|
||||||
:required="false"
|
|
||||||
/>
|
/>
|
||||||
</Teleport>
|
</Teleport>
|
||||||
<QPage class="column items-center">
|
<QPage class="column items-center">
|
||||||
|
|
|
@ -221,7 +221,7 @@ const yearList = ref(generateYears());
|
||||||
>
|
>
|
||||||
{{ type.name }}
|
{{ type.name }}
|
||||||
</WorkerEventLabel>
|
</WorkerEventLabel>
|
||||||
</QItem>
|
</QItem>
|
||||||
</QList>
|
</QList>
|
||||||
<QSeparator />
|
<QSeparator />
|
||||||
<QList dense class="list q-my-md no-pointer-events">
|
<QList dense class="list q-my-md no-pointer-events">
|
||||||
|
|
Loading…
Reference in New Issue