Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a25ddac466 | |||
| df8e44fcfa |
+1
-1
@@ -1,2 +1,2 @@
|
|||||||
parameters:
|
parameters:
|
||||||
app.version: '0.1.56'
|
app.version: '0.1.57'
|
||||||
|
|||||||
@@ -24,10 +24,10 @@
|
|||||||
<div class="h-full flex-1 flex flex-col min-h-0 min-w-0">
|
<div class="h-full flex-1 flex flex-col min-h-0 min-w-0">
|
||||||
<SiteSelector v-if="showSiteSelector"/>
|
<SiteSelector v-if="showSiteSelector"/>
|
||||||
<main
|
<main
|
||||||
class="flex flex-1 flex-col overflow-y-auto overflow-x-hidden bg-white px-4 pb-10 sm:px-6 lg:px-12 xl:px-[170px]">
|
class="flex flex-1 flex-col overflow-y-auto overflow-x-hidden bg-white px-4 pb-10 sm:px-6 lg:px-12 xl:px-11">
|
||||||
<div
|
<div
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
class="pointer-events-none sticky top-0 z-30 h-[47px] flex-shrink-0 bg-white"/>
|
class="pointer-events-none sticky top-0 z-30 h-11 flex-shrink-0 bg-white"/>
|
||||||
<slot/>
|
<slot/>
|
||||||
</main>
|
</main>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
</h2>
|
</h2>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<form class="flex flex-col gap-4 py-4" @submit.prevent="handleSave">
|
<form class="flex flex-col py-4 gap-2" @submit.prevent="handleSave">
|
||||||
<!-- Nom (RG-1.02 obligatoire / RG-1.04 longueur 2-120 apres trim).
|
<!-- Nom (RG-1.02 obligatoire / RG-1.04 longueur 2-120 apres trim).
|
||||||
Erreur miroir client + erreurs server-side (422) mappees sur ce champ. -->
|
Erreur miroir client + erreurs server-side (422) mappees sur ce champ. -->
|
||||||
<MalioInputText
|
<MalioInputText
|
||||||
@@ -52,21 +52,21 @@
|
|||||||
variant="danger"
|
variant="danger"
|
||||||
icon-name="mdi:delete-outline"
|
icon-name="mdi:delete-outline"
|
||||||
icon-position="left"
|
icon-position="left"
|
||||||
button-class="w-[150px]"
|
button-class="w-m-btn-action"
|
||||||
@click="emit('delete')"
|
@click="emit('delete')"
|
||||||
/>
|
/>
|
||||||
<MalioButton
|
<MalioButton
|
||||||
v-else
|
v-else
|
||||||
:label="t('common.cancel')"
|
:label="t('common.cancel')"
|
||||||
variant="tertiary"
|
variant="tertiary"
|
||||||
button-class="w-[150px]"
|
button-class="w-m-btn-action"
|
||||||
@click="emit('update:modelValue', false)"
|
@click="emit('update:modelValue', false)"
|
||||||
/>
|
/>
|
||||||
<MalioButton
|
<MalioButton
|
||||||
v-if="canShowSave"
|
v-if="canShowSave"
|
||||||
:label="t('common.save')"
|
:label="t('common.save')"
|
||||||
variant="primary"
|
variant="primary"
|
||||||
button-class="w-[150px]"
|
button-class="w-m-btn-action"
|
||||||
:disabled="form.submitting.value || loadingTypes"
|
:disabled="form.submitting.value || loadingTypes"
|
||||||
@click="handleSave"
|
@click="handleSave"
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
:title="`${group.module} (${selectedCountFor(group)}/${group.permissions.length})`"
|
:title="`${group.module} (${selectedCountFor(group)}/${group.permissions.length})`"
|
||||||
header-class="capitalize"
|
header-class="capitalize"
|
||||||
>
|
>
|
||||||
<div class="flex flex-col gap-3">
|
<div class="flex flex-col">
|
||||||
<!-- Tout selectionner pour ce module -->
|
<!-- Tout selectionner pour ce module -->
|
||||||
<MalioCheckbox
|
<MalioCheckbox
|
||||||
:id="`${idPrefix}-group-${group.module}`"
|
:id="`${idPrefix}-group-${group.module}`"
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
label-class="font-semibold text-sm text-neutral-700"
|
label-class="font-semibold text-sm text-neutral-700"
|
||||||
@update:model-value="(val: boolean) => emit('toggle-all', group.module, val)"
|
@update:model-value="(val: boolean) => emit('toggle-all', group.module, val)"
|
||||||
/>
|
/>
|
||||||
<div class="flex flex-col gap-2">
|
<div class="flex flex-col">
|
||||||
<MalioCheckbox
|
<MalioCheckbox
|
||||||
v-for="perm in group.permissions"
|
v-for="perm in group.permissions"
|
||||||
:id="`${idPrefix}-perm-${perm.id}`"
|
:id="`${idPrefix}-perm-${perm.id}`"
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
{{ isEditMode ? t('admin.roles.editRole') : t('admin.roles.createRole') }}
|
{{ isEditMode ? t('admin.roles.editRole') : t('admin.roles.createRole') }}
|
||||||
</h2>
|
</h2>
|
||||||
</template>
|
</template>
|
||||||
<form class="flex flex-col gap-4 py-4" @submit.prevent="handleSave">
|
<form class="flex flex-col py-4 gap-2" @submit.prevent="handleSave">
|
||||||
<!-- Champs du role -->
|
<!-- Champs du role -->
|
||||||
<MalioInputText
|
<MalioInputText
|
||||||
v-model="form.label"
|
v-model="form.label"
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
variant="danger"
|
variant="danger"
|
||||||
icon-name="mdi:delete-outline"
|
icon-name="mdi:delete-outline"
|
||||||
icon-position="left"
|
icon-position="left"
|
||||||
button-class="w-[150px]"
|
button-class="w-m-btn-action"
|
||||||
:disabled="role?.isSystem"
|
:disabled="role?.isSystem"
|
||||||
@click="emit('delete')"
|
@click="emit('delete')"
|
||||||
/>
|
/>
|
||||||
@@ -79,13 +79,13 @@
|
|||||||
v-else
|
v-else
|
||||||
:label="t('common.cancel')"
|
:label="t('common.cancel')"
|
||||||
variant="tertiary"
|
variant="tertiary"
|
||||||
button-class="w-[150px]"
|
button-class="w-m-btn-action"
|
||||||
@click="emit('update:modelValue', false)"
|
@click="emit('update:modelValue', false)"
|
||||||
/>
|
/>
|
||||||
<MalioButton
|
<MalioButton
|
||||||
:label="t('common.save')"
|
:label="t('common.save')"
|
||||||
variant="primary"
|
variant="primary"
|
||||||
button-class="w-[150px]"
|
button-class="w-m-btn-action"
|
||||||
:disabled="saving || permissionsLoadFailed"
|
:disabled="saving || permissionsLoadFailed"
|
||||||
@click="handleSave"
|
@click="handleSave"
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
{{ t('admin.users.drawer.title', { username: user?.username ?? '' }) }}
|
{{ t('admin.users.drawer.title', { username: user?.username ?? '' }) }}
|
||||||
</h2>
|
</h2>
|
||||||
</template>
|
</template>
|
||||||
<div class="flex flex-col gap-4 py-4">
|
<div class="flex flex-col space-y-4 py-4">
|
||||||
<!-- Etat d'erreur de chargement des referentiels : bloque la
|
<!-- Etat d'erreur de chargement des referentiels : bloque la
|
||||||
sauvegarde pour empecher un ecrasement silencieux des droits. -->
|
sauvegarde pour empecher un ecrasement silencieux des droits. -->
|
||||||
<div
|
<div
|
||||||
@@ -41,11 +41,13 @@
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- Section Roles -->
|
<!-- Section Roles -->
|
||||||
<div>
|
<!-- !mt-0 : la MalioCheckbox au-dessus expose son slot message (16px),
|
||||||
|
qui couvre deja l'ecart attendu — pas besoin du space-y-4 ici. -->
|
||||||
|
<div class="!mt-0">
|
||||||
<h4 class="mb-3 text-sm font-semibold text-neutral-700">
|
<h4 class="mb-3 text-sm font-semibold text-neutral-700">
|
||||||
{{ t('admin.users.drawer.rolesSection') }}
|
{{ t('admin.users.drawer.rolesSection') }}
|
||||||
</h4>
|
</h4>
|
||||||
<div class="flex flex-col gap-2">
|
<div class="flex flex-col">
|
||||||
<MalioCheckbox
|
<MalioCheckbox
|
||||||
v-for="role in allRoles"
|
v-for="role in allRoles"
|
||||||
:key="role.id"
|
:key="role.id"
|
||||||
@@ -84,7 +86,7 @@
|
|||||||
<div v-if="allSites.length === 0" class="text-sm text-neutral-400">
|
<div v-if="allSites.length === 0" class="text-sm text-neutral-400">
|
||||||
{{ t('admin.sites.noSites') }}
|
{{ t('admin.sites.noSites') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-col gap-2">
|
<div class="flex flex-col">
|
||||||
<MalioCheckbox
|
<MalioCheckbox
|
||||||
v-for="site in allSites"
|
v-for="site in allSites"
|
||||||
:id="`site-${site.id}`"
|
:id="`site-${site.id}`"
|
||||||
@@ -113,13 +115,13 @@
|
|||||||
<MalioButton
|
<MalioButton
|
||||||
:label="t('common.cancel')"
|
:label="t('common.cancel')"
|
||||||
variant="tertiary"
|
variant="tertiary"
|
||||||
button-class="w-[150px]"
|
button-class="w-m-btn-action"
|
||||||
@click="emit('update:modelValue', false)"
|
@click="emit('update:modelValue', false)"
|
||||||
/>
|
/>
|
||||||
<MalioButton
|
<MalioButton
|
||||||
:label="t('common.save')"
|
:label="t('common.save')"
|
||||||
variant="primary"
|
variant="primary"
|
||||||
button-class="w-[150px]"
|
button-class="w-m-btn-action"
|
||||||
:disabled="saving || loadFailed"
|
:disabled="saving || loadFailed"
|
||||||
@click="handleSave"
|
@click="handleSave"
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -66,15 +66,18 @@
|
|||||||
<MalioAccordion>
|
<MalioAccordion>
|
||||||
<!-- Dates : deux champs date+heure Du / Au (champs datetime a l'origine) -->
|
<!-- Dates : deux champs date+heure Du / Au (champs datetime a l'origine) -->
|
||||||
<MalioAccordionItem :title="t('audit.filters.date_range')" value="dates">
|
<MalioAccordionItem :title="t('audit.filters.date_range')" value="dates">
|
||||||
<div class="grid grid-cols-[auto_1fr] items-center gap-x-3 gap-y-4">
|
<!-- pb-4 sur les labels Du/Au : simule le slot message
|
||||||
<span>{{ t('audit.filters.date_from') }}</span>
|
du MalioDateTime voisin pour qu'items-center recentre
|
||||||
|
le label sur le centre visible du champ. -->
|
||||||
|
<div class="grid grid-cols-[auto_1fr] items-center gap-x-3">
|
||||||
|
<span class="pb-4">{{ t('audit.filters.date_from') }}</span>
|
||||||
<!-- Borne le picker "Du" par la valeur "Au" pour interdire une plage
|
<!-- Borne le picker "Du" par la valeur "Au" pour interdire une plage
|
||||||
inversee a la saisie (le backend renverrait silencieusement 0 ligne). -->
|
inversee a la saisie (le backend renverrait silencieusement 0 ligne). -->
|
||||||
<MalioDateTime
|
<MalioDateTime
|
||||||
v-model="draftDateFrom"
|
v-model="draftDateFrom"
|
||||||
:max="draftDateTo ?? undefined"
|
:max="draftDateTo ?? undefined"
|
||||||
/>
|
/>
|
||||||
<span>{{ t('audit.filters.date_to') }}</span>
|
<span class="pb-4">{{ t('audit.filters.date_to') }}</span>
|
||||||
<MalioDateTime
|
<MalioDateTime
|
||||||
v-model="draftDateTo"
|
v-model="draftDateTo"
|
||||||
:min="draftDateFrom ?? undefined"
|
:min="draftDateFrom ?? undefined"
|
||||||
@@ -84,7 +87,7 @@
|
|||||||
|
|
||||||
<!-- Type d'entite : cases a cocher (multi-selection) -->
|
<!-- Type d'entite : cases a cocher (multi-selection) -->
|
||||||
<MalioAccordionItem :title="t('audit.filters.entity_type')" value="entity">
|
<MalioAccordionItem :title="t('audit.filters.entity_type')" value="entity">
|
||||||
<div class="flex flex-col gap-4">
|
<div class="flex flex-col">
|
||||||
<MalioCheckbox
|
<MalioCheckbox
|
||||||
v-for="opt in entityTypeOptions"
|
v-for="opt in entityTypeOptions"
|
||||||
:id="`filter-entity-${opt.value}`"
|
:id="`filter-entity-${opt.value}`"
|
||||||
@@ -105,6 +108,7 @@
|
|||||||
name="audit-action"
|
name="audit-action"
|
||||||
:value="opt.value"
|
:value="opt.value"
|
||||||
:label="opt.label"
|
:label="opt.label"
|
||||||
|
group-class="mt-0"
|
||||||
/>
|
/>
|
||||||
</MalioAccordionItem>
|
</MalioAccordionItem>
|
||||||
|
|
||||||
@@ -121,7 +125,7 @@
|
|||||||
<MalioButton
|
<MalioButton
|
||||||
variant="tertiary"
|
variant="tertiary"
|
||||||
:label="t('audit.filters.reset')"
|
:label="t('audit.filters.reset')"
|
||||||
button-class="w-[150px]"
|
button-class="w-m-btn-action"
|
||||||
@click="resetFilters"
|
@click="resetFilters"
|
||||||
/>
|
/>
|
||||||
<MalioButton
|
<MalioButton
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<img src="/LOGO_MALIO.png" alt="Logo" class="w-[150px]"/>
|
<img src="/LOGO_MALIO.png" alt="Logo" class="w-[150px]"/>
|
||||||
</span>
|
</span>
|
||||||
<form
|
<form
|
||||||
class="mt-8 space-y-6 rounded-lg border border-neutral-200 bg-white p-6 shadow-sm"
|
class="mt-8 rounded-lg border border-neutral-200 bg-white p-6 shadow-sm"
|
||||||
@submit.prevent="handleSubmit"
|
@submit.prevent="handleSubmit"
|
||||||
>
|
>
|
||||||
<MalioInputText
|
<MalioInputText
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
type="submit"
|
type="submit"
|
||||||
:disabled="isSubmitting"
|
:disabled="isSubmitting"
|
||||||
/>
|
/>
|
||||||
<p class="font-bold">v{{ version }}</p>
|
<p class="mt-6 font-bold">v{{ version }}</p>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
{{ isEditMode ? t('admin.sites.editSite') : t('admin.sites.createSite') }}
|
{{ isEditMode ? t('admin.sites.editSite') : t('admin.sites.createSite') }}
|
||||||
</h2>
|
</h2>
|
||||||
</template>
|
</template>
|
||||||
<form class="flex flex-col gap-4 py-4" @submit.prevent="handleSave">
|
<form class="flex flex-col py-4 gap-2" @submit.prevent="handleSave">
|
||||||
<MalioInputText
|
<MalioInputText
|
||||||
v-model="form.name"
|
v-model="form.name"
|
||||||
:label="t('admin.sites.form.name')"
|
:label="t('admin.sites.form.name')"
|
||||||
@@ -65,12 +65,17 @@
|
|||||||
input-class="w-full font-mono"
|
input-class="w-full font-mono"
|
||||||
required
|
required
|
||||||
/>
|
/>
|
||||||
|
<!-- pb-4 sur le wrapper : simule le slot message du
|
||||||
|
MalioInputText voisin pour qu'items-center recentre
|
||||||
|
la puce sur le centre visible de l'input. -->
|
||||||
|
<div class="shrink-0 pb-4">
|
||||||
<span
|
<span
|
||||||
:style="{ backgroundColor: isValidHex ? form.color : 'transparent' }"
|
:style="{ backgroundColor: isValidHex ? form.color : 'transparent' }"
|
||||||
class="inline-block size-10 shrink-0 rounded-lg border border-neutral-200"
|
class="inline-block size-10 rounded-lg border border-neutral-200"
|
||||||
:class="{ 'border-dashed': !isValidHex }"
|
:class="{ 'border-dashed': !isValidHex }"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
<p v-if="form.color && !isValidHex" class="mt-1 text-xs text-red-600">
|
<p v-if="form.color && !isValidHex" class="mt-1 text-xs text-red-600">
|
||||||
{{ t('admin.sites.form.colorInvalid') }}
|
{{ t('admin.sites.form.colorInvalid') }}
|
||||||
</p>
|
</p>
|
||||||
@@ -87,20 +92,20 @@
|
|||||||
variant="danger"
|
variant="danger"
|
||||||
icon-name="mdi:delete-outline"
|
icon-name="mdi:delete-outline"
|
||||||
icon-position="left"
|
icon-position="left"
|
||||||
button-class="w-[150px]"
|
button-class="w-m-btn-action"
|
||||||
@click="emit('delete')"
|
@click="emit('delete')"
|
||||||
/>
|
/>
|
||||||
<MalioButton
|
<MalioButton
|
||||||
v-else
|
v-else
|
||||||
:label="t('common.cancel')"
|
:label="t('common.cancel')"
|
||||||
variant="tertiary"
|
variant="tertiary"
|
||||||
button-class="w-[150px]"
|
button-class="w-m-btn-action"
|
||||||
@click="emit('update:modelValue', false)"
|
@click="emit('update:modelValue', false)"
|
||||||
/>
|
/>
|
||||||
<MalioButton
|
<MalioButton
|
||||||
:label="t('common.save')"
|
:label="t('common.save')"
|
||||||
variant="primary"
|
variant="primary"
|
||||||
button-class="w-[150px]"
|
button-class="w-m-btn-action"
|
||||||
:disabled="saving || !isValidHex"
|
:disabled="saving || !isValidHex"
|
||||||
@click="handleSave"
|
@click="handleSave"
|
||||||
/>
|
/>
|
||||||
|
|||||||
Generated
+4
-4
@@ -7,7 +7,7 @@
|
|||||||
"name": "starseed-frontend",
|
"name": "starseed-frontend",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@malio/layer-ui": "^1.7.1",
|
"@malio/layer-ui": "^1.7.3",
|
||||||
"@nuxt/icon": "^2.2.1",
|
"@nuxt/icon": "^2.2.1",
|
||||||
"@nuxtjs/i18n": "^10.2.3",
|
"@nuxtjs/i18n": "^10.2.3",
|
||||||
"@nuxtjs/tailwindcss": "^6.14.0",
|
"@nuxtjs/tailwindcss": "^6.14.0",
|
||||||
@@ -1866,9 +1866,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@malio/layer-ui": {
|
"node_modules/@malio/layer-ui": {
|
||||||
"version": "1.7.1",
|
"version": "1.7.3",
|
||||||
"resolved": "https://gitea.malio.fr/api/packages/MALIO-DEV/npm/%40malio%2Flayer-ui/-/1.7.1/layer-ui-1.7.1.tgz",
|
"resolved": "https://gitea.malio.fr/api/packages/MALIO-DEV/npm/%40malio%2Flayer-ui/-/1.7.3/layer-ui-1.7.3.tgz",
|
||||||
"integrity": "sha512-RYMMappWt/fgjD+BM7//h2O6kxD6WH9Fui8hoC29xtKySRQsqD61XKTdR7BRRkpktbxKmV39q/hblyAFBqV5yw==",
|
"integrity": "sha512-jw3ka0Az6Jf0F9ifsooknkwXph8TNgoe6H3CjF8tbBxl8oND8HLHjlZ04ooUCoOUEIlsQ1Mm2hFFlQRCB04qdA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@nuxt/icon": "^2.2.1",
|
"@nuxt/icon": "^2.2.1",
|
||||||
"@nuxtjs/tailwindcss": "^6.14.0",
|
"@nuxtjs/tailwindcss": "^6.14.0",
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
"test:e2e:ui": "playwright test --ui"
|
"test:e2e:ui": "playwright test --ui"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@malio/layer-ui": "^1.7.1",
|
"@malio/layer-ui": "^1.7.3",
|
||||||
"@nuxt/icon": "^2.2.1",
|
"@nuxt/icon": "^2.2.1",
|
||||||
"@nuxtjs/i18n": "^10.2.3",
|
"@nuxtjs/i18n": "^10.2.3",
|
||||||
"@nuxtjs/tailwindcss": "^6.14.0",
|
"@nuxtjs/tailwindcss": "^6.14.0",
|
||||||
|
|||||||
Reference in New Issue
Block a user