303 lines
14 KiB
JavaScript
303 lines
14 KiB
JavaScript
/// <reference types="../../node_modules/.vue-global-types/vue_3.5_0_0_0.d.ts" />
|
|
import { onMounted, reactive, ref } from 'vue';
|
|
import { useTasksStore } from '@/stores/tasks';
|
|
const store = useTasksStore();
|
|
const showForm = ref(false);
|
|
const form = reactive({ titre: '', priorite: 'normale', statut: 'a_faire', echeance: '' });
|
|
const groupes = [
|
|
['a_faire', 'À faire'],
|
|
['en_cours', 'En cours'],
|
|
['fait', 'Terminé'],
|
|
];
|
|
const byStatut = (s) => store.tasks.filter(t => t.statut === s);
|
|
onMounted(() => store.fetchAll());
|
|
async function submit() {
|
|
await store.create({ ...form });
|
|
showForm.value = false;
|
|
Object.assign(form, { titre: '', priorite: 'normale', statut: 'a_faire', echeance: '' });
|
|
}
|
|
debugger; /* PartiallyEnd: #3632/scriptSetup.vue */
|
|
const __VLS_ctx = {};
|
|
let __VLS_components;
|
|
let __VLS_directives;
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
|
...{ class: "p-4 max-w-2xl mx-auto" },
|
|
});
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
|
...{ class: "flex items-center justify-between mb-6" },
|
|
});
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.h1, __VLS_intrinsicElements.h1)({
|
|
...{ class: "text-2xl font-bold text-green" },
|
|
});
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
|
...{ onClick: (...[$event]) => {
|
|
__VLS_ctx.showForm = !__VLS_ctx.showForm;
|
|
} },
|
|
...{ class: "bg-green text-bg px-4 py-2 rounded-lg text-sm font-semibold hover:opacity-90" },
|
|
});
|
|
if (__VLS_ctx.showForm) {
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.form, __VLS_intrinsicElements.form)({
|
|
...{ onSubmit: (__VLS_ctx.submit) },
|
|
...{ class: "bg-bg-soft rounded-lg p-4 mb-6 border border-green/30" },
|
|
});
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
|
...{ class: "grid gap-3" },
|
|
});
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({});
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.label, __VLS_intrinsicElements.label)({
|
|
...{ class: "text-text-muted text-xs block mb-1" },
|
|
});
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.input)({
|
|
required: true,
|
|
...{ class: "w-full bg-bg border border-bg-hard rounded px-3 py-2 text-text text-sm focus:border-green outline-none" },
|
|
});
|
|
(__VLS_ctx.form.titre);
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
|
...{ class: "grid grid-cols-2 gap-3" },
|
|
});
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({});
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.label, __VLS_intrinsicElements.label)({
|
|
...{ class: "text-text-muted text-xs block mb-1" },
|
|
});
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.select, __VLS_intrinsicElements.select)({
|
|
value: (__VLS_ctx.form.priorite),
|
|
...{ class: "w-full bg-bg border border-bg-hard rounded px-3 py-2 text-text text-sm" },
|
|
});
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.option, __VLS_intrinsicElements.option)({
|
|
value: "basse",
|
|
});
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.option, __VLS_intrinsicElements.option)({
|
|
value: "normale",
|
|
});
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.option, __VLS_intrinsicElements.option)({
|
|
value: "haute",
|
|
});
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({});
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.label, __VLS_intrinsicElements.label)({
|
|
...{ class: "text-text-muted text-xs block mb-1" },
|
|
});
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.input)({
|
|
type: "date",
|
|
...{ class: "w-full bg-bg border border-bg-hard rounded px-3 py-2 text-text text-sm focus:border-green outline-none" },
|
|
});
|
|
(__VLS_ctx.form.echeance);
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
|
...{ class: "flex gap-2 mt-4" },
|
|
});
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
|
type: "submit",
|
|
...{ class: "bg-green text-bg px-4 py-2 rounded text-sm font-semibold" },
|
|
});
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
|
...{ onClick: (...[$event]) => {
|
|
if (!(__VLS_ctx.showForm))
|
|
return;
|
|
__VLS_ctx.showForm = false;
|
|
} },
|
|
type: "button",
|
|
...{ class: "text-text-muted text-sm px-4 py-2 hover:text-text" },
|
|
});
|
|
}
|
|
for (const [[groupe, label]] of __VLS_getVForSourceType((__VLS_ctx.groupes))) {
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
|
key: (groupe),
|
|
...{ class: "mb-6" },
|
|
});
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.h2, __VLS_intrinsicElements.h2)({
|
|
...{ class: "text-text-muted text-xs uppercase tracking-widest mb-2" },
|
|
});
|
|
(label);
|
|
if (!__VLS_ctx.byStatut(groupe).length) {
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
|
...{ class: "text-text-muted text-xs pl-2 mb-2" },
|
|
});
|
|
}
|
|
for (const [t] of __VLS_getVForSourceType((__VLS_ctx.byStatut(groupe)))) {
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
|
key: (t.id),
|
|
...{ class: "bg-bg-soft rounded-lg p-3 mb-2 flex items-center gap-3 border border-bg-hard" },
|
|
});
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
|
...{ class: ({
|
|
'text-red': t.priorite === 'haute',
|
|
'text-yellow': t.priorite === 'normale',
|
|
'text-text-muted': t.priorite === 'basse'
|
|
}) },
|
|
});
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.span, __VLS_intrinsicElements.span)({
|
|
...{ class: "text-text text-sm flex-1" },
|
|
});
|
|
(t.titre);
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.div, __VLS_intrinsicElements.div)({
|
|
...{ class: "flex gap-1 items-center" },
|
|
});
|
|
if (t.statut === 'a_faire') {
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
|
...{ onClick: (...[$event]) => {
|
|
if (!(t.statut === 'a_faire'))
|
|
return;
|
|
__VLS_ctx.store.updateStatut(t.id, 'en_cours');
|
|
} },
|
|
...{ class: "text-xs text-blue hover:underline" },
|
|
});
|
|
}
|
|
if (t.statut === 'en_cours') {
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
|
...{ onClick: (...[$event]) => {
|
|
if (!(t.statut === 'en_cours'))
|
|
return;
|
|
__VLS_ctx.store.updateStatut(t.id, 'fait');
|
|
} },
|
|
...{ class: "text-xs text-green hover:underline" },
|
|
});
|
|
}
|
|
__VLS_asFunctionalElement(__VLS_intrinsicElements.button, __VLS_intrinsicElements.button)({
|
|
...{ onClick: (...[$event]) => {
|
|
__VLS_ctx.store.remove(t.id);
|
|
} },
|
|
...{ class: "text-xs text-text-muted hover:text-red ml-2" },
|
|
});
|
|
}
|
|
}
|
|
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['max-w-2xl']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['mx-auto']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['justify-between']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['mb-6']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-2xl']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['font-bold']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['bg-green']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-bg']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['px-4']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['font-semibold']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['hover:opacity-90']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['bg-bg-soft']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['p-4']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['mb-6']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['border-green/30']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['grid']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['gap-3']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['block']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['mb-1']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['bg-bg']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['rounded']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['px-3']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['focus:border-green']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['outline-none']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['grid']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['grid-cols-2']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['gap-3']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['block']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['mb-1']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['bg-bg']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['rounded']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['px-3']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['block']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['mb-1']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['w-full']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['bg-bg']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['rounded']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['px-3']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['focus:border-green']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['outline-none']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['mt-4']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['bg-green']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-bg']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['px-4']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['rounded']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['font-semibold']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['px-4']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['hover:text-text']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['mb-6']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['uppercase']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['tracking-widest']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['mb-2']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['pl-2']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['mb-2']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['bg-bg-soft']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['rounded-lg']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['p-3']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['mb-2']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['gap-3']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['border']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['border-bg-hard']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-text']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['flex-1']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['gap-1']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['items-center']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-blue']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['hover:underline']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-green']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['hover:underline']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['text-text-muted']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['hover:text-red']} */ ;
|
|
/** @type {__VLS_StyleScopedClasses['ml-2']} */ ;
|
|
var __VLS_dollars;
|
|
const __VLS_self = (await import('vue')).defineComponent({
|
|
setup() {
|
|
return {
|
|
store: store,
|
|
showForm: showForm,
|
|
form: form,
|
|
groupes: groupes,
|
|
byStatut: byStatut,
|
|
submit: submit,
|
|
};
|
|
},
|
|
});
|
|
export default (await import('vue')).defineComponent({
|
|
setup() {
|
|
return {};
|
|
},
|
|
});
|
|
; /* PartiallyEnd: #4569/main.vue */
|