From b9c34a354ac297ed302d9c7f47d046b8030d0398 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Bitard?= <bitard.michael@gmail.com> Date: Tue, 30 Apr 2024 11:18:20 +0200 Subject: [PATCH] refactor(ui): supprime vuex (#1126) --- package-lock.json | 15 +- packages/common/src/typescript-tools.ts | 28 --- packages/ui/README.md | 1 - packages/ui/package.json | 3 +- packages/ui/src/app.tsx | 9 - .../src/components/_common/storybook.spec.ts | 2 - .../_ui/functional-popup.stories.tsx | 26 ++- ...nctional-popup.stories_snapshots_Main.html | 12 +- ...onal-popup.stories_snapshots_NotValid.html | 12 +- ...nal-popup.stories_snapshots_SaveError.html | 33 ++++ .../src/components/_ui/functional-popup.tsx | 71 ++++--- packages/ui/src/components/_ui/messages.tsx | 8 +- .../ui/src/components/_ui/storybook.spec.ts | 2 - ...stories_snapshots_DocumentObligatoire.html | 12 +- ...p.stories_snapshots_DocumentOptionnel.html | 12 +- ...epose-popup.stories_snapshots_Default.html | 12 +- ...etape-popup.stories_snapshots_Default.html | 12 +- ...etape-popup.stories_snapshots_Default.html | 12 +- packages/ui/src/components/entreprise.tsx | 36 +--- ...ument-popup.stories_snapshots_Default.html | 12 +- ...ies_snapshots_TypeDeDocumentVerouille.html | 12 +- .../add-popup.stories_snapshots_Super.html | 12 +- .../edit-popup.stories_snapshots_Ok.html | 12 +- .../edit-popup.stories_snapshots_Super.html | 12 +- ...ument-popup.stories_snapshots_Default.html | 12 +- packages/ui/src/components/entreprises.tsx | 16 +- ...apshots_DocumentInitialDejaSauvegarde.html | 12 +- ...s_snapshots_DocumentInitialTemporaire.html | 12 +- ...stories_snapshots_SansDocumentInitial.html | 12 +- ...apshots_DocumentInitialDejaSauvegarde.html | 12 +- ...s_snapshots_DocumentInitialTemporaire.html | 12 +- ...stories_snapshots_SansDocumentInitial.html | 12 +- ...ument-popup.stories_snapshots_Default.html | 12 +- ...pup.stories_snapshots_DocumentInitial.html | 12 +- ...nt-popup.stories_snapshots_Entreprise.html | 12 +- ...ries_snapshots_UnSeulDocumentPossible.html | 12 +- ...mport-popup.stories_snapshots_Default.html | 12 +- ...mport-popup.stories_snapshots_Default.html | 12 +- ...mport-popup.stories_snapshots_Default.html | 12 +- packages/ui/src/components/meta-activite.tsx | 12 -- packages/ui/src/components/meta-demarche.tsx | 40 ---- packages/ui/src/components/meta-etape.tsx | 57 ------ packages/ui/src/components/meta-titre.tsx | 45 ----- packages/ui/src/components/meta.tsx | 42 +++-- .../metas.stories_snapshots_Super.html | 12 -- packages/ui/src/components/metas.tsx | 4 +- .../src/components/metas/definition-edit.tsx | 178 ------------------ .../components/metas/meta-page-template.tsx | 29 --- packages/ui/src/components/titre.stories.tsx | 2 +- packages/ui/src/components/titre.tsx | 24 +-- ...e-edit-popup.stories_snapshots_Create.html | 12 +- ...che-edit-popup.stories_snapshots_Edit.html | 12 +- ...e-remove-popup.stories_snapshots_Main.html | 12 +- ....stories_snapshots_DefaultNoReference.html | 12 +- ...-popup.stories_snapshots_OneReference.html | 12 +- ...emove-popup.stories_snapshots_Default.html | 12 +- .../ui/src/components/utilisateur.stories.tsx | 4 +- packages/ui/src/components/utilisateur.tsx | 39 +--- ...emove-popup.stories_snapshots_Default.html | 12 +- packages/ui/src/index.ts | 2 - .../ui/src/{store => }/metas-definitions.ts | 20 -- packages/ui/src/router/index.ts | 56 ------ packages/ui/src/store/index.js | 43 ----- packages/ui/src/store/index.test.js | 90 --------- packages/ui/src/store/meta.js | 71 ------- packages/ui/src/storybook.spec.ts | 2 - packages/ui/src/typings/global.d.ts | 11 ++ packages/ui/src/typings/vuex.d.ts | 26 --- 68 files changed, 429 insertions(+), 1026 deletions(-) create mode 100644 packages/ui/src/components/_ui/functional-popup.stories_snapshots_SaveError.html delete mode 100644 packages/ui/src/components/meta-activite.tsx delete mode 100644 packages/ui/src/components/meta-demarche.tsx delete mode 100644 packages/ui/src/components/meta-etape.tsx delete mode 100644 packages/ui/src/components/meta-titre.tsx delete mode 100644 packages/ui/src/components/metas/definition-edit.tsx delete mode 100644 packages/ui/src/components/metas/meta-page-template.tsx rename packages/ui/src/{store => }/metas-definitions.ts (97%) delete mode 100644 packages/ui/src/store/index.js delete mode 100644 packages/ui/src/store/index.test.js delete mode 100644 packages/ui/src/store/meta.js create mode 100644 packages/ui/src/typings/global.d.ts delete mode 100644 packages/ui/src/typings/vuex.d.ts diff --git a/package-lock.json b/package-lock.json index 2b475013f..e9de75bc3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26544,18 +26544,6 @@ "he": "^1.2.0" } }, - "node_modules/vuex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz", - "integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==", - "dev": true, - "dependencies": { - "@vue/devtools-api": "^6.0.0-beta.11" - }, - "peerDependencies": { - "vue": "^3.2.0" - } - }, "node_modules/w3c-xmlserializer": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", @@ -27414,8 +27402,7 @@ "vite": "^5.2.10", "vitest": "^1.5.2", "vue": "^3.4.26", - "vue-router": "^4.3.2", - "vuex": "^4.1.0" + "vue-router": "^4.3.2" } }, "stub/types__react": { diff --git a/packages/common/src/typescript-tools.ts b/packages/common/src/typescript-tools.ts index bb8bbbb69..4e715dca8 100644 --- a/packages/common/src/typescript-tools.ts +++ b/packages/common/src/typescript-tools.ts @@ -104,34 +104,6 @@ export type DeepReadonly<T> = T extends Builtin } : Readonly<T> -type Mutable<T> = { - -readonly [P in keyof T]: T[P] -} - -export type DeepMutable<T> = T extends Builtin - ? T - : T extends Map<infer K, infer V> - ? Map<DeepMutable<K>, DeepMutable<V>> - : T extends ReadonlyMap<infer K, infer V> - ? Map<DeepMutable<K>, DeepMutable<V>> - : T extends WeakMap<infer K, infer V> - ? WeakMap<DeepMutable<K>, DeepMutable<V>> - : T extends Set<infer U> - ? Set<DeepMutable<U>> - : T extends ReadonlySet<infer U> - ? Set<DeepMutable<U>> - : T extends WeakSet<infer U> - ? WeakSet<DeepMutable<U>> - : T extends Promise<infer U> - ? Promise<DeepMutable<U>> - : T extends Ref<infer U> - ? Mutable<Ref<DeepMutable<U>>> - : T extends {} - ? { - -readonly [K in keyof T]: DeepMutable<T[K]> - } - : Mutable<T> - export const exhaustiveCheck = (param: never): never => { throw new Error(`Unreachable case: ${JSON.stringify(param)}`) } diff --git a/packages/ui/README.md b/packages/ui/README.md index 53f1e37bb..b35c8cd92 100644 --- a/packages/ui/README.md +++ b/packages/ui/README.md @@ -9,7 +9,6 @@ ## Technologies - [Vue.js](https://v3.vuejs.org/) -- [Vuex](https://vuex.vuejs.org/) - [Leaflet.js](https://leafletjs.com/) - [graphql-react](https://github.com/jaydenseric/graphql-react) - [vite](https://vitejs.dev/) diff --git a/packages/ui/package.json b/packages/ui/package.json index adc0e839f..f05a848a5 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -88,8 +88,7 @@ "vite": "^5.2.10", "vitest": "^1.5.2", "vue": "^3.4.26", - "vue-router": "^4.3.2", - "vuex": "^4.1.0" + "vue-router": "^4.3.2" }, "eslintConfig": { "root": true, diff --git a/packages/ui/src/app.tsx b/packages/ui/src/app.tsx index cfb3f492d..edd96dd18 100644 --- a/packages/ui/src/app.tsx +++ b/packages/ui/src/app.tsx @@ -3,24 +3,19 @@ import '@gouvfr/dsfr/dist/component/navigation/navigation.module' import '@gouvfr/dsfr/dist/component/tab/tab.module' import { defineComponent, computed, ref, onMounted, inject } from 'vue' -import { Messages } from './components/_ui/messages' import { Header } from './components/page/header' import { Footer } from './components/page/footer' import { MapPattern } from './components/_map/pattern' import { IconSprite } from './components/_ui/iconSprite' -import { useStore } from 'vuex' import { RouterView, useRoute } from 'vue-router' import { isNullOrUndefined } from 'camino-common/src/typescript-tools' import { userKey } from './moi' export const App = defineComponent(() => { - const store = useStore() const route = useRoute() const loaded = ref<boolean>(false) - const messages = computed<{ type: 'error' | 'success'; value: string }[]>(() => store.state.messages) - const currentMenuSection = computed(() => route.meta?.menuSection) const user = inject(userKey) @@ -51,10 +46,6 @@ export const App = defineComponent(() => { </main> <Footer displayNewsletter={displayNewsletter.value} version={version.value} /> - - <div class="messages"> - <Messages messages={messages.value} /> - </div> </div> ) }) diff --git a/packages/ui/src/components/_common/storybook.spec.ts b/packages/ui/src/components/_common/storybook.spec.ts index e8b125a86..d3df08b80 100644 --- a/packages/ui/src/components/_common/storybook.spec.ts +++ b/packages/ui/src/components/_common/storybook.spec.ts @@ -24,8 +24,6 @@ vi.mock('vue-router', () => ({ })), })) -vi.mock('vuex', () => ({ useStore: vi.fn() })) - const compose = (entry: StoryFile): ReturnType<typeof composeStories<StoryFile>> => { try { return composeStories(entry) diff --git a/packages/ui/src/components/_ui/functional-popup.stories.tsx b/packages/ui/src/components/_ui/functional-popup.stories.tsx index 65174a640..029c234d4 100644 --- a/packages/ui/src/components/_ui/functional-popup.stories.tsx +++ b/packages/ui/src/components/_ui/functional-popup.stories.tsx @@ -4,6 +4,7 @@ import { action } from '@storybook/addon-actions' const meta: Meta = { title: 'Components/UI/Popup', + // @ts-ignore component: FunctionalPopup, } export default meta @@ -21,7 +22,30 @@ export const Main: StoryFn = () => ( action: () => { doStuff() - return Promise.resolve() + return new Promise<void>(resolve => setTimeout(() => resolve(), 5000)) + }, + }} + content={() => ( + <div> + <div class="bg-warning color-bg p-s mb-l"> + <span class="bold"> Attention </span>: cette opération est définitive et ne peut pas être annulée. + </div> + </div> + )} + /> +) + +export const SaveError: StoryFn = () => ( + <FunctionalPopup + id="mainId" + close={close} + title="Titre de la popup" + canValidate={true} + validate={{ + action: () => { + doStuff() + + return Promise.reject(new Error('erreur')) }, }} content={() => ( diff --git a/packages/ui/src/components/_ui/functional-popup.stories_snapshots_Main.html b/packages/ui/src/components/_ui/functional-popup.stories_snapshots_Main.html index 5aeaf85d0..b23e68309 100644 --- a/packages/ui/src/components/_ui/functional-popup.stories_snapshots_Main.html +++ b/packages/ui/src/components/_ui/functional-popup.stories_snapshots_Main.html @@ -12,13 +12,17 @@ <div> <div class="bg-warning color-bg p-s mb-l"><span class="bold"> Attention </span>: cette opération est définitive et ne peut pas être annulée.</div> </div> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Enregistrer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="mainId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Enregistrer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="mainId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/_ui/functional-popup.stories_snapshots_NotValid.html b/packages/ui/src/components/_ui/functional-popup.stories_snapshots_NotValid.html index 46b58a463..82768c916 100644 --- a/packages/ui/src/components/_ui/functional-popup.stories_snapshots_NotValid.html +++ b/packages/ui/src/components/_ui/functional-popup.stories_snapshots_NotValid.html @@ -12,13 +12,17 @@ <div> <div class="bg-warning color-bg p-s mb-l"><span class="bold"> Attention </span>: cette opération est définitive et ne peut pas être annulée.</div> </div> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Enregistrer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="mainId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Enregistrer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="mainId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/_ui/functional-popup.stories_snapshots_SaveError.html b/packages/ui/src/components/_ui/functional-popup.stories_snapshots_SaveError.html new file mode 100644 index 000000000..b23e68309 --- /dev/null +++ b/packages/ui/src/components/_ui/functional-popup.stories_snapshots_SaveError.html @@ -0,0 +1,33 @@ +<!--teleport start--> +<div class="dsfr"> + <dialog id="mainId" class="fr-modal fr-modal--opened" open="" aria-modal="true" role="dialog" aria-labelledby="mainId-title" style="z-index: 1000001;"> + <div class="fr-container fr-container--fluid fr-container-md"> + <div class="fr-grid-row fr-grid-row--center"> + <div class="fr-col-12 fr-col-md-8 fr-col-lg-6"> + <div class="fr-modal__body"> + <div class="fr-modal__header"><button class="fr-btn--close fr-btn" aria-controls="mainId" title="Fermer">Fermer</button></div> + <div class="fr-modal__content"> + <h1 id="mainId-title" class="fr-modal__title"><span class="fr-icon-arrow-right-line fr-icon--lg" aria-hidden="true"></span>Titre de la popup</h1> + <div class="fr-container"> + <div> + <div class="bg-warning color-bg p-s mb-l"><span class="bold"> Attention </span>: cette opération est définitive et ne peut pas être annulée.</div> + </div> + <!----> + </div> + </div> + <div class="fr-modal__footer"> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Enregistrer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="mainId">Annuler</button></li> + </ul> + </div> + </div> + </div> + </div> + </div> + </div> + </dialog> +</div> +<!--teleport end--> \ No newline at end of file diff --git a/packages/ui/src/components/_ui/functional-popup.tsx b/packages/ui/src/components/_ui/functional-popup.tsx index 38c1db596..632e4e472 100644 --- a/packages/ui/src/components/_ui/functional-popup.tsx +++ b/packages/ui/src/components/_ui/functional-popup.tsx @@ -1,8 +1,9 @@ import { AsyncData } from '@/api/client-rest' -import { caminoDefineComponent } from '@/utils/vue-tsx-utils' -import { Teleport, computed, onBeforeUnmount, onMounted, ref } from 'vue' +import { Teleport, computed, defineComponent, onBeforeUnmount, onMounted, ref } from 'vue' import { LoadingElement } from './functional-loader' import type { JSX } from 'vue/jsx-runtime' +import { Alert } from './alert' + interface Props { id?: string title: string @@ -15,7 +16,7 @@ interface Props { canValidate: boolean } -export const FunctionalPopup = caminoDefineComponent<Props>(['id', 'title', 'content', 'close', 'validate', 'canValidate'], (props: Props) => { +export const FunctionalPopup = defineComponent<Props>((props: Props) => { const canValidate = computed<boolean>(() => { return props.canValidate }) @@ -87,35 +88,42 @@ export const FunctionalPopup = caminoDefineComponent<Props>(['id', 'title', 'con <span class="fr-icon-arrow-right-line fr-icon--lg" aria-hidden="true"></span> {props.title} </h1> - <div class="fr-container">{props.content()}</div> + <div class="fr-container"> + {props.content()} + {validateProcess.value.status === 'ERROR' ? <Alert small={true} type="error" title={validateProcess.value.message} /> : null} + </div> </div> - <LoadingElement - data={validateProcess.value} - renderItem={() => ( - <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li> - <button - class={['fr-btn', 'fr-icon-check-line', 'fr-btn--icon-left', !canValidate.value ? 'disabled' : '']} - disabled={!canValidate.value} - onClick={e => { - e.stopPropagation() - return validate() - }} - > - {text} - </button> - </li> - <li> - <button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls={id} onClick={props.close}> - Annuler - </button> - </li> - </ul> - </div> - )} - /> + <div class="fr-modal__footer"> + <div style={{ display: 'flex', width: '100%', justifyContent: 'end', alignItems: 'center', gap: '1rem' }}> + {validateProcess.value.status !== 'ERROR' ? <LoadingElement data={validateProcess.value} renderItem={() => null} /> : null} + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style={{ width: 'auto' }}> + <li> + <button + class={['fr-btn', 'fr-icon-check-line', 'fr-btn--icon-left', !canValidate.value ? 'disabled' : '']} + disabled={!canValidate.value || validateProcess.value.status === 'LOADING'} + onClick={e => { + e.stopPropagation() + + return validate() + }} + > + {text} + </button> + </li> + <li> + <button + class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" + disabled={validateProcess.value.status === 'LOADING'} + aria-controls={id} + onClick={props.close} + > + Annuler + </button> + </li> + </ul> + </div> + </div> </div> </div> </div> @@ -125,3 +133,6 @@ export const FunctionalPopup = caminoDefineComponent<Props>(['id', 'title', 'con </Teleport> ) }) + +// @ts-ignore waiting for https://github.com/vuejs/core/issues/7833 +FunctionalPopup.props = ['id', 'title', 'content', 'close', 'validate', 'canValidate'] diff --git a/packages/ui/src/components/_ui/messages.tsx b/packages/ui/src/components/_ui/messages.tsx index d834d6f8b..7d77fde97 100644 --- a/packages/ui/src/components/_ui/messages.tsx +++ b/packages/ui/src/components/_ui/messages.tsx @@ -1,10 +1,9 @@ -import { caminoDefineComponent } from '@/utils/vue-tsx-utils' -import { TransitionGroup } from 'vue' +import { TransitionGroup, defineComponent } from 'vue' interface Props { messages: { type: 'error' | 'success'; value: string | Error }[] } -export const Messages = caminoDefineComponent<Props>(['messages'], props => { +export const Messages = defineComponent<Props>(props => { return () => ( <TransitionGroup name="slide-bottom" tag="div"> {props.messages.map((message, index) => ( @@ -15,3 +14,6 @@ export const Messages = caminoDefineComponent<Props>(['messages'], props => { </TransitionGroup> ) }) + +// @ts-ignore waiting for https://github.com/vuejs/core/issues/7833 +Messages.props = ['messages'] diff --git a/packages/ui/src/components/_ui/storybook.spec.ts b/packages/ui/src/components/_ui/storybook.spec.ts index 9ea05b2f6..01d7716cd 100644 --- a/packages/ui/src/components/_ui/storybook.spec.ts +++ b/packages/ui/src/components/_ui/storybook.spec.ts @@ -24,8 +24,6 @@ vi.mock('vue-router', () => ({ })), })) -vi.mock('vuex', () => ({ useStore: vi.fn() })) - const compose = (entry: StoryFile): ReturnType<typeof composeStories<StoryFile>> => { try { return composeStories(entry) diff --git a/packages/ui/src/components/activite/add-activite-document-popup.stories_snapshots_DocumentObligatoire.html b/packages/ui/src/components/activite/add-activite-document-popup.stories_snapshots_DocumentObligatoire.html index 54f66f8c7..01cd58f1f 100644 --- a/packages/ui/src/components/activite/add-activite-document-popup.stories_snapshots_DocumentObligatoire.html +++ b/packages/ui/src/components/activite/add-activite-document-popup.stories_snapshots_DocumentObligatoire.html @@ -25,13 +25,17 @@ </div> </fieldset> </form> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Enregistrer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Enregistrer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/activite/add-activite-document-popup.stories_snapshots_DocumentOptionnel.html b/packages/ui/src/components/activite/add-activite-document-popup.stories_snapshots_DocumentOptionnel.html index ea0be91df..d901fcf9e 100644 --- a/packages/ui/src/components/activite/add-activite-document-popup.stories_snapshots_DocumentOptionnel.html +++ b/packages/ui/src/components/activite/add-activite-document-popup.stories_snapshots_DocumentOptionnel.html @@ -25,13 +25,17 @@ </div> </fieldset> </form> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Enregistrer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Enregistrer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/activite/depose-popup.stories_snapshots_Default.html b/packages/ui/src/components/activite/depose-popup.stories_snapshots_Default.html index e70f5656a..48de9eefc 100644 --- a/packages/ui/src/components/activite/depose-popup.stories_snapshots_Default.html +++ b/packages/ui/src/components/activite/depose-popup.stories_snapshots_Default.html @@ -12,13 +12,17 @@ <div class="fr-alert fr-alert--warning"> <h3 class="fr-alert__title">Attention : cette opération est définitive et ne peut pas être annulée.</h3> Souhaitez-vous déposer ce <span class="fr-text--bold"> rapport d'exploitation (permis et concessions M)</span> du titre<span class="fr-text--bold"> Titre 1</span> ? </div> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Déposer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Déposer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/demarche/depose-etape-popup.stories_snapshots_Default.html b/packages/ui/src/components/demarche/depose-etape-popup.stories_snapshots_Default.html index 425b2d280..8202add2b 100644 --- a/packages/ui/src/components/demarche/depose-etape-popup.stories_snapshots_Default.html +++ b/packages/ui/src/components/demarche/depose-etape-popup.stories_snapshots_Default.html @@ -12,13 +12,17 @@ <div class="fr-alert fr-alert--warning"> <h3 class="fr-alert__title">Attention : cette opération est définitive et ne peut pas être annulée.</h3>Souhaitez vous effectuer le dépôt ? </div> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Déposer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Déposer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/demarche/remove-etape-popup.stories_snapshots_Default.html b/packages/ui/src/components/demarche/remove-etape-popup.stories_snapshots_Default.html index 415a0f382..5be4af7c9 100644 --- a/packages/ui/src/components/demarche/remove-etape-popup.stories_snapshots_Default.html +++ b/packages/ui/src/components/demarche/remove-etape-popup.stories_snapshots_Default.html @@ -12,13 +12,17 @@ <div class="fr-alert fr-alert--warning"> <h3 class="fr-alert__title">Attention : cette opération est définitive et ne peut pas être annulée.</h3>Souhaitez vous supprimer l'étape <span class="fr-text--bold">demande</span> de la démarche <span class="fr-text--bold">octroi</span> du titre <span class="fr-text--bold">Nouvelle espérance (autorisation de recherches)</span> ? </div> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Supprimer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Supprimer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/entreprise.tsx b/packages/ui/src/components/entreprise.tsx index 5f291b646..d4944300b 100644 --- a/packages/ui/src/components/entreprise.tsx +++ b/packages/ui/src/components/entreprise.tsx @@ -9,7 +9,6 @@ import { utilisateursColonnes, utilisateursLignesBuild } from './utilisateurs/ta import { fiscaliteVisible as fiscaliteVisibleFunc } from 'camino-common/src/fiscalite' import { User } from 'camino-common/src/roles' import { computed, onMounted, watch, defineComponent, ref, inject } from 'vue' -import { useStore } from 'vuex' import { useRoute } from 'vue-router' import { canEditEntreprise, canSeeEntrepriseDocuments } from 'camino-common/src/permissions/entreprises' import { caminoDefineComponent } from '@/utils/vue-tsx-utils' @@ -25,7 +24,6 @@ import { userKey } from '@/moi' export const Entreprise = defineComponent({ setup() { - const store = useStore() const vueRoute = useRoute() const entrepriseId = ref<EntrepriseId | undefined>(newEntrepriseId(vueRoute.params.id.toString())) const user = inject(userKey) @@ -43,42 +41,10 @@ export const Entreprise = defineComponent({ ) const anneeCourante = getCurrentAnnee() - const apiClientRef = ref< - Pick< - ApiClient, - 'getEntreprise' | 'deleteEntrepriseDocument' | 'getEntrepriseDocuments' | 'getFiscaliteEntreprise' | 'modifierEntreprise' | 'creerEntreprise' | 'creerEntrepriseDocument' | 'uploadTempDocument' - > - >({ - ...apiClient, - modifierEntreprise: async entreprise => { - try { - await apiClient.modifierEntreprise(entreprise) - store.dispatch( - 'messageAdd', - { - value: `l'entreprise a été modifiée`, - type: 'success', - }, - { root: true } - ) - } catch (e) { - console.error(e) - store.dispatch( - 'messageAdd', - { - value: `Erreur lors de la modification de l'entreprise`, - type: 'error', - }, - { root: true } - ) - } - }, - }) - return () => ( <> {entrepriseId.value ? ( - <PureEntreprise currentYear={anneeCourante} entrepriseId={entrepriseId.value} apiClient={apiClientRef.value} user={user} /> + <PureEntreprise currentYear={anneeCourante} entrepriseId={entrepriseId.value} apiClient={apiClient} user={user} /> ) : ( <CaminoError couleur="error" message="Impossible d’afficher une entreprise sans identifiant" /> )} diff --git a/packages/ui/src/components/entreprise/add-entreprise-document-popup.stories_snapshots_Default.html b/packages/ui/src/components/entreprise/add-entreprise-document-popup.stories_snapshots_Default.html index 4a811c6bd..2aa99df59 100644 --- a/packages/ui/src/components/entreprise/add-entreprise-document-popup.stories_snapshots_Default.html +++ b/packages/ui/src/components/entreprise/add-entreprise-document-popup.stories_snapshots_Default.html @@ -52,13 +52,17 @@ </div> </fieldset> </form> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Enregistrer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Enregistrer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/entreprise/add-entreprise-document-popup.stories_snapshots_TypeDeDocumentVerouille.html b/packages/ui/src/components/entreprise/add-entreprise-document-popup.stories_snapshots_TypeDeDocumentVerouille.html index 455d24c91..7af2cd039 100644 --- a/packages/ui/src/components/entreprise/add-entreprise-document-popup.stories_snapshots_TypeDeDocumentVerouille.html +++ b/packages/ui/src/components/entreprise/add-entreprise-document-popup.stories_snapshots_TypeDeDocumentVerouille.html @@ -33,13 +33,17 @@ </div> </fieldset> </form> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Enregistrer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Enregistrer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/entreprise/add-popup.stories_snapshots_Super.html b/packages/ui/src/components/entreprise/add-popup.stories_snapshots_Super.html index 5992b4b42..ad54946d4 100644 --- a/packages/ui/src/components/entreprise/add-popup.stories_snapshots_Super.html +++ b/packages/ui/src/components/entreprise/add-popup.stories_snapshots_Super.html @@ -23,13 +23,17 @@ <!----> </div> </form> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Enregistrer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Enregistrer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/entreprise/edit-popup.stories_snapshots_Ok.html b/packages/ui/src/components/entreprise/edit-popup.stories_snapshots_Ok.html index c4476f13b..c2ce47cd8 100644 --- a/packages/ui/src/components/entreprise/edit-popup.stories_snapshots_Ok.html +++ b/packages/ui/src/components/entreprise/edit-popup.stories_snapshots_Ok.html @@ -30,13 +30,17 @@ </div> <!----> </form> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Enregistrer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Enregistrer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/entreprise/edit-popup.stories_snapshots_Super.html b/packages/ui/src/components/entreprise/edit-popup.stories_snapshots_Super.html index c5c8b9a8f..667bff31b 100644 --- a/packages/ui/src/components/entreprise/edit-popup.stories_snapshots_Super.html +++ b/packages/ui/src/components/entreprise/edit-popup.stories_snapshots_Super.html @@ -32,13 +32,17 @@ <!----> </label></div> </form> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Enregistrer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Enregistrer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/entreprise/remove-entreprise-document-popup.stories_snapshots_Default.html b/packages/ui/src/components/entreprise/remove-entreprise-document-popup.stories_snapshots_Default.html index fe9347d5b..dc606f4c1 100644 --- a/packages/ui/src/components/entreprise/remove-entreprise-document-popup.stories_snapshots_Default.html +++ b/packages/ui/src/components/entreprise/remove-entreprise-document-popup.stories_snapshots_Default.html @@ -12,13 +12,17 @@ <div class="fr-alert fr-alert--warning"> <h3 class="fr-alert__title">Attention : cette opération est définitive et ne peut pas être annulée.</h3>Souhaitez vous supprimer le document <span class="fr-text--bold">Nom du document</span> ? </div> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Supprimer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Supprimer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/entreprises.tsx b/packages/ui/src/components/entreprises.tsx index 38a7d5389..5c0156fda 100644 --- a/packages/ui/src/components/entreprises.tsx +++ b/packages/ui/src/components/entreprises.tsx @@ -3,7 +3,6 @@ import { Liste, Params } from './_common/liste' import { RouteLocationNormalizedLoaded, Router, useRouter } from 'vue-router' import { canCreateEntreprise } from 'camino-common/src/permissions/utilisateurs' import { User } from 'camino-common/src/roles' -import { useStore } from 'vuex' import { EntrepriseAddPopup } from './entreprise/add-popup' import { entrepriseApiClient } from './entreprise/entreprise-api-client' import { Entreprise, Siren } from 'camino-common/src/entreprise' @@ -109,7 +108,6 @@ PureEntreprises.props = ['currentRoute', 'updateUrlQuery', 'apiClient', 'user', export const Entreprises = defineComponent(() => { const router = useRouter() - const store = useStore() const user = inject(userKey) const entreprises = inject(entreprisesKey, ref([])) @@ -117,16 +115,10 @@ export const Entreprises = defineComponent(() => { return { ...apiClient, creerEntreprise: async (siren: Siren) => { - try { - await entrepriseApiClient.creerEntreprise(siren) - const newEntreprises = await getWithJson('/rest/entreprises', {}) - entreprises.value = newEntreprises - - store.dispatch('messageAdd', { value: `l'entreprise a été créée`, type: 'success' }, { root: true }) - router.push({ name: 'entreprise', params: { id: `fr-${siren}` } }) - } catch (e) { - store.dispatch('messageAdd', { value: `erreur lors de la création de l'entreprise`, type: 'error' }, { root: true }) - } + await entrepriseApiClient.creerEntreprise(siren) + const newEntreprises = await getWithJson('/rest/entreprises', {}) + entreprises.value = newEntreprises + router.push({ name: 'entreprise', params: { id: `fr-${siren}` } }) }, } } diff --git a/packages/ui/src/components/etape/add-etape-asl-document-popup.stories_snapshots_DocumentInitialDejaSauvegarde.html b/packages/ui/src/components/etape/add-etape-asl-document-popup.stories_snapshots_DocumentInitialDejaSauvegarde.html index fc5b10cf6..0ed4ec1c0 100644 --- a/packages/ui/src/components/etape/add-etape-asl-document-popup.stories_snapshots_DocumentInitialDejaSauvegarde.html +++ b/packages/ui/src/components/etape/add-etape-asl-document-popup.stories_snapshots_DocumentInitialDejaSauvegarde.html @@ -42,13 +42,17 @@ </div> </fieldset> </form> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Enregistrer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Enregistrer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/etape/add-etape-asl-document-popup.stories_snapshots_DocumentInitialTemporaire.html b/packages/ui/src/components/etape/add-etape-asl-document-popup.stories_snapshots_DocumentInitialTemporaire.html index fc5b10cf6..0ed4ec1c0 100644 --- a/packages/ui/src/components/etape/add-etape-asl-document-popup.stories_snapshots_DocumentInitialTemporaire.html +++ b/packages/ui/src/components/etape/add-etape-asl-document-popup.stories_snapshots_DocumentInitialTemporaire.html @@ -42,13 +42,17 @@ </div> </fieldset> </form> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Enregistrer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Enregistrer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/etape/add-etape-asl-document-popup.stories_snapshots_SansDocumentInitial.html b/packages/ui/src/components/etape/add-etape-asl-document-popup.stories_snapshots_SansDocumentInitial.html index 4e17e617f..3f6a1f25a 100644 --- a/packages/ui/src/components/etape/add-etape-asl-document-popup.stories_snapshots_SansDocumentInitial.html +++ b/packages/ui/src/components/etape/add-etape-asl-document-popup.stories_snapshots_SansDocumentInitial.html @@ -42,13 +42,17 @@ </div> </fieldset> </form> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Enregistrer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Enregistrer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/etape/add-etape-dae-document-popup.stories_snapshots_DocumentInitialDejaSauvegarde.html b/packages/ui/src/components/etape/add-etape-dae-document-popup.stories_snapshots_DocumentInitialDejaSauvegarde.html index 696816d3c..af7a3c959 100644 --- a/packages/ui/src/components/etape/add-etape-dae-document-popup.stories_snapshots_DocumentInitialDejaSauvegarde.html +++ b/packages/ui/src/components/etape/add-etape-dae-document-popup.stories_snapshots_DocumentInitialDejaSauvegarde.html @@ -49,13 +49,17 @@ </div> </fieldset> </form> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Enregistrer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Enregistrer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/etape/add-etape-dae-document-popup.stories_snapshots_DocumentInitialTemporaire.html b/packages/ui/src/components/etape/add-etape-dae-document-popup.stories_snapshots_DocumentInitialTemporaire.html index 696816d3c..af7a3c959 100644 --- a/packages/ui/src/components/etape/add-etape-dae-document-popup.stories_snapshots_DocumentInitialTemporaire.html +++ b/packages/ui/src/components/etape/add-etape-dae-document-popup.stories_snapshots_DocumentInitialTemporaire.html @@ -49,13 +49,17 @@ </div> </fieldset> </form> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Enregistrer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Enregistrer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/etape/add-etape-dae-document-popup.stories_snapshots_SansDocumentInitial.html b/packages/ui/src/components/etape/add-etape-dae-document-popup.stories_snapshots_SansDocumentInitial.html index 6c2febfa4..4c8fb80d7 100644 --- a/packages/ui/src/components/etape/add-etape-dae-document-popup.stories_snapshots_SansDocumentInitial.html +++ b/packages/ui/src/components/etape/add-etape-dae-document-popup.stories_snapshots_SansDocumentInitial.html @@ -49,13 +49,17 @@ </div> </fieldset> </form> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Enregistrer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Enregistrer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/etape/add-etape-document-popup.stories_snapshots_Default.html b/packages/ui/src/components/etape/add-etape-document-popup.stories_snapshots_Default.html index 02b2c6ccc..eebeb7ad0 100644 --- a/packages/ui/src/components/etape/add-etape-document-popup.stories_snapshots_Default.html +++ b/packages/ui/src/components/etape/add-etape-document-popup.stories_snapshots_Default.html @@ -56,13 +56,17 @@ </div> </fieldset> </form> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Enregistrer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Enregistrer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/etape/add-etape-document-popup.stories_snapshots_DocumentInitial.html b/packages/ui/src/components/etape/add-etape-document-popup.stories_snapshots_DocumentInitial.html index d46abac68..0cccaba1a 100644 --- a/packages/ui/src/components/etape/add-etape-document-popup.stories_snapshots_DocumentInitial.html +++ b/packages/ui/src/components/etape/add-etape-document-popup.stories_snapshots_DocumentInitial.html @@ -47,13 +47,17 @@ </div> </fieldset> </form> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Enregistrer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Enregistrer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/etape/add-etape-document-popup.stories_snapshots_Entreprise.html b/packages/ui/src/components/etape/add-etape-document-popup.stories_snapshots_Entreprise.html index 0b81c6c1e..37292a41c 100644 --- a/packages/ui/src/components/etape/add-etape-document-popup.stories_snapshots_Entreprise.html +++ b/packages/ui/src/components/etape/add-etape-document-popup.stories_snapshots_Entreprise.html @@ -51,13 +51,17 @@ </div> </fieldset> </form> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Enregistrer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Enregistrer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/etape/add-etape-document-popup.stories_snapshots_UnSeulDocumentPossible.html b/packages/ui/src/components/etape/add-etape-document-popup.stories_snapshots_UnSeulDocumentPossible.html index 2cc57e938..fd3fb0803 100644 --- a/packages/ui/src/components/etape/add-etape-document-popup.stories_snapshots_UnSeulDocumentPossible.html +++ b/packages/ui/src/components/etape/add-etape-document-popup.stories_snapshots_UnSeulDocumentPossible.html @@ -42,13 +42,17 @@ </div> </fieldset> </form> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Enregistrer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Enregistrer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/etape/forages-import-popup.stories_snapshots_Default.html b/packages/ui/src/components/etape/forages-import-popup.stories_snapshots_Default.html index 313a2c1f0..f7d31b60f 100644 --- a/packages/ui/src/components/etape/forages-import-popup.stories_snapshots_Default.html +++ b/packages/ui/src/components/etape/forages-import-popup.stories_snapshots_Default.html @@ -42,13 +42,17 @@ </fieldset> <!----> </form> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Importer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Importer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/etape/perimetre-import-popup.stories_snapshots_Default.html b/packages/ui/src/components/etape/perimetre-import-popup.stories_snapshots_Default.html index 41fa16e6c..b4ab24336 100644 --- a/packages/ui/src/components/etape/perimetre-import-popup.stories_snapshots_Default.html +++ b/packages/ui/src/components/etape/perimetre-import-popup.stories_snapshots_Default.html @@ -44,13 +44,17 @@ <!----> <!----> </form> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Importer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Importer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/etape/points-import-popup.stories_snapshots_Default.html b/packages/ui/src/components/etape/points-import-popup.stories_snapshots_Default.html index a472fca7f..e48c1c6b6 100644 --- a/packages/ui/src/components/etape/points-import-popup.stories_snapshots_Default.html +++ b/packages/ui/src/components/etape/points-import-popup.stories_snapshots_Default.html @@ -29,13 +29,17 @@ </div> </fieldset> </form> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Importer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Importer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/meta-activite.tsx b/packages/ui/src/components/meta-activite.tsx deleted file mode 100644 index 054327d1e..000000000 --- a/packages/ui/src/components/meta-activite.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { FunctionalComponent } from 'vue' -import { MetaPageTemplate } from './metas/meta-page-template' -import { DefinitionTree } from './metas/definition-edit' - -const definitionsTree = { - id: 'activites-types', - foreignKey: 'activiteTypeId', -} as const satisfies DefinitionTree -export const MetaActivite: FunctionalComponent = () => <MetaPageTemplate title="Activité" definitionsTree={definitionsTree} /> - -// Demandé par le router car utilisé dans un import asynchrone /shrug -MetaActivite.displayName = 'MetaActivite' diff --git a/packages/ui/src/components/meta-demarche.tsx b/packages/ui/src/components/meta-demarche.tsx deleted file mode 100644 index d51009789..000000000 --- a/packages/ui/src/components/meta-demarche.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import { FunctionalComponent } from 'vue' -import { MetaPageTemplate } from './metas/meta-page-template' -import { DefinitionTree } from './metas/definition-edit' - -const definitionsTree = { - id: 'demarches-types', - foreignKey: 'demarcheTypeId', - definitions: [ - { - id: 'titres-types', - foreignKey: 'titreTypeId', - joinTable: 'titres-types--demarches-types', - definitions: [ - { - id: 'etapes-types', - foreignKey: 'etapeTypeId', - joinTable: 'titres-types--demarches-types--etapes-types', - definitions: [ - { - id: 'documents-types', - foreignKey: 'documentTypeId', - joinTable: 'titres-types--demarches-types--etapes-types--documents-types', - definitions: [], - }, - { - id: 'documents-types', - foreignKey: 'documentTypeId', - joinTable: 'titres-types--demarches-types--etapes-types--justificatifs-types', - definitions: [], - }, - ], - }, - ], - }, - ], -} as const satisfies DefinitionTree -export const MetaDemarche: FunctionalComponent = () => <MetaPageTemplate title="Démarche" definitionsTree={definitionsTree} /> - -// Demandé par le router car utilisé dans un import asynchrone /shrug -MetaDemarche.displayName = 'MetaDemarche' diff --git a/packages/ui/src/components/meta-etape.tsx b/packages/ui/src/components/meta-etape.tsx deleted file mode 100644 index 6c973cadc..000000000 --- a/packages/ui/src/components/meta-etape.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import { FunctionalComponent } from 'vue' -import { MetaPageTemplate } from './metas/meta-page-template' -import { DefinitionTree } from './metas/definition-edit' - -const definitionsTree = { - id: 'etapes-types', - foreignKey: 'etapeTypeId', - definitions: [ - { - id: 'etapes-statuts', - foreignKey: 'etapeStatutId', - joinTable: 'etapes-types--etapes-statuts', - definitions: [], - }, - { - id: 'documents-types', - foreignKey: 'documentTypeId', - joinTable: 'etapes-types--documents-types', - definitions: [], - }, - { - id: 'documents-types', - foreignKey: 'documentTypeId', - joinTable: 'etapes-types--justificatifs-types', - definitions: [], - }, - { - id: 'titres-types', - foreignKey: 'titreTypeId', - definitions: [ - { - id: 'demarches-types', - foreignKey: 'demarcheTypeId', - joinTable: 'titres-types--demarches-types--etapes-types', - definitions: [ - { - id: 'documents-types', - foreignKey: 'documentTypeId', - joinTable: 'titres-types--demarches-types--etapes-types--documents-types', - definitions: [], - }, - { - id: 'documents-types', - foreignKey: 'documentTypeId', - joinTable: 'titres-types--demarches-types--etapes-types--justificatifs-types', - definitions: [], - }, - ], - }, - ], - }, - ], -} as const satisfies DefinitionTree -export const MetaEtape: FunctionalComponent = () => <MetaPageTemplate title="Étape" definitionsTree={definitionsTree} /> - -// Demandé par le router car utilisé dans un import asynchrone /shrug -MetaEtape.displayName = 'MetaEtape' diff --git a/packages/ui/src/components/meta-titre.tsx b/packages/ui/src/components/meta-titre.tsx deleted file mode 100644 index 112c42a6f..000000000 --- a/packages/ui/src/components/meta-titre.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { FunctionalComponent } from 'vue' -import { MetaPageTemplate } from './metas/meta-page-template' -import { DefinitionTree } from './metas/definition-edit' - -const definitionsTree = { - id: 'titres-types', - foreignKey: 'titreTypeId', - definitions: [ - { - id: 'titres-statuts', - foreignKey: 'titreStatutId', - joinTable: 'titre-types--titres-statuts', - }, - { - id: 'demarches-types', - foreignKey: 'demarcheTypeId', - joinTable: 'titres-types--demarches-types', - definitions: [ - { - id: 'etapes-types', - foreignKey: 'etapeTypeId', - joinTable: 'titres-types--demarches-types--etapes-types', - definitions: [ - { - id: 'documents-types', - foreignKey: 'documentTypeId', - joinTable: 'titres-types--demarches-types--etapes-types--documents-types', - definitions: [], - }, - { - id: 'documents-types', - foreignKey: 'documentTypeId', - joinTable: 'titres-types--demarches-types--etapes-types--justificatifs-types', - definitions: [], - }, - ], - }, - ], - }, - ], -} as const satisfies DefinitionTree -export const MetaTitre: FunctionalComponent = () => <MetaPageTemplate title="Titre" definitionsTree={definitionsTree} /> - -// Demandé par le router car utilisé dans un import asynchrone /shrug -MetaTitre.displayName = 'MetaTitre' diff --git a/packages/ui/src/components/meta.tsx b/packages/ui/src/components/meta.tsx index cbd131a36..3ed5d31b7 100644 --- a/packages/ui/src/components/meta.tsx +++ b/packages/ui/src/components/meta.tsx @@ -1,16 +1,16 @@ -import { computed, defineComponent, inject, onBeforeUnmount, onMounted, watch } from 'vue' -import { MetaIndexTable, metasIndex } from '../store/metas-definitions' +import { computed, defineComponent, inject, onMounted, ref, watch } from 'vue' +import { MetaIndexTable, metasIndex } from '../metas-definitions' import { canReadMetas } from 'camino-common/src/permissions/metas' -import { useStore } from 'vuex' import { useRoute } from 'vue-router' import { capitalize } from 'camino-common/src/strings' import { userKey } from '@/moi' -import { isNotNullNorUndefined } from 'camino-common/src/typescript-tools' +import { isNotNullNorUndefined, isNullOrUndefined } from 'camino-common/src/typescript-tools' export const Meta = defineComponent(() => { - const store = useStore() const route = useRoute() const user = inject(userKey) + const values = ref<{ [key in MetaIndexTable]?: unknown[] }>({}) + const id = computed<MetaIndexTable>(() => { return route.params.id as unknown as MetaIndexTable }) @@ -22,15 +22,35 @@ export const Meta = defineComponent(() => { onMounted(async () => { await get() }) - onBeforeUnmount(() => { - store.commit('meta/reset') - }) + const definition = computed(() => { return metasIndex[id.value] }) + const getDef = async (id: MetaIndexTable) => { + try { + if (isNotNullNorUndefined(metasIndex[id])) { + const definition = metasIndex[id] + if ('get' in definition) { + const elements = await definition.get() + values.value = { ...values.value, [id]: elements } + } + if ('colonnes' in definition) { + for (const colonne of definition.colonnes) { + if ('type' in colonne && colonne.type === 'entities' && isNotNullNorUndefined(colonne.entities) && isNullOrUndefined(values.value[colonne.entities])) { + const entities = await metasIndex[colonne.entities].get() + + values.value = { ...values.value, [colonne.entities]: entities } + } + } + } + } + } catch (e) { + console.error(e) + } + } const elements = computed(() => { - return store.getters['meta/elements'](id.value) + return values.value[id.value] }) const get = async () => { @@ -38,7 +58,7 @@ export const Meta = defineComponent(() => { // TODO 2024-04-16 afficher une jolie alerte dans la page console.error('impossible d’accéder à cette page') } else { - await store.dispatch('meta/get', id.value) + await getDef(id.value) } } @@ -86,7 +106,7 @@ export const Meta = defineComponent(() => { ) : null} </tr> - {elements.value.map((element: any) => ( + {elements.value?.map((element: any) => ( <tr key={elementKeyFind(element)}> {'colonnes' in definition.value ? ( <> diff --git a/packages/ui/src/components/metas.stories_snapshots_Super.html b/packages/ui/src/components/metas.stories_snapshots_Super.html index 9e8ec27ed..6304d008f 100644 --- a/packages/ui/src/components/metas.stories_snapshots_Super.html +++ b/packages/ui/src/components/metas.stories_snapshots_Super.html @@ -75,18 +75,6 @@ <tr> <td><a class="fr-link" to="{name:meta,params:{id:activites-statuts}}" type="primary"><span class="">Statuts des activités</span></a></td> </tr> - <tr> - <td><a class="fr-link" to="{name:meta-titre}" type="primary"><span class="">Titre</span></a></td> - </tr> - <tr> - <td><a class="fr-link" to="{name:meta-demarche}" type="primary"><span class="">Démarche</span></a></td> - </tr> - <tr> - <td><a class="fr-link" to="{name:meta-etape}" type="primary"><span class="">Étape</span></a></td> - </tr> - <tr> - <td><a class="fr-link" to="{name:meta-activite}" type="primary"><span class="">Activité</span></a></td> - </tr> </tbody> </table> </div> diff --git a/packages/ui/src/components/metas.tsx b/packages/ui/src/components/metas.tsx index 326ea3724..d4acbe0ad 100644 --- a/packages/ui/src/components/metas.tsx +++ b/packages/ui/src/components/metas.tsx @@ -5,7 +5,7 @@ import { canReadMetas } from 'camino-common/src/permissions/metas' import { CaminoAccessError } from './error' import { User } from 'camino-common/src/roles' import { Column, TableRow } from './_ui/table' -import { metasIndex } from '@/store/metas-definitions' +import { metasIndex } from '@/metas-definitions' import { userKey } from '@/moi' const metasColonnes = [ { @@ -21,7 +21,7 @@ const metasLignesBuild = (): Promise<{ values: TableRow[]; total: number }> => { nom: { value: element.nom }, } - const link = 'linkName' in element ? { name: element.linkName } : { name: 'meta', params: { id } } + const link = { name: 'meta', params: { id } } return { id, diff --git a/packages/ui/src/components/metas/definition-edit.tsx b/packages/ui/src/components/metas/definition-edit.tsx deleted file mode 100644 index b67937e96..000000000 --- a/packages/ui/src/components/metas/definition-edit.tsx +++ /dev/null @@ -1,178 +0,0 @@ -/* eslint-disable @typescript-eslint/strict-boolean-expressions */ - -import { computed, defineComponent, onMounted, onUnmounted, ref } from 'vue' -import { MetaIndexTable, metasIndex } from '@/store/metas-definitions' -import { useStore } from 'vuex' -import { AsyncData } from '@/api/client-rest' -import { LoadingElement } from '../_ui/functional-loader' - -export type DefinitionTree = { - joinTable?: MetaIndexTable - id: MetaIndexTable - // TOOD 2023-09-19 better type foreignKey - foreignKey?: string - definitions?: readonly DefinitionTree[] -} - -interface Props { - definitionsTree: DefinitionTree - foreignKeys?: Record<string, string> - rootComponent?: boolean -} -export const DefinitionEdit = defineComponent<Props>(props => { - const store = useStore() - - const data = ref<AsyncData<true>>({ status: 'LOADING' }) - onMounted(async () => { - const promises = [] - promises.push(store.dispatch('meta/get', props.definitionsTree.id)) - if (props.definitionsTree.joinTable) { - promises.push(store.dispatch('meta/get', props.definitionsTree.joinTable)) - } - await Promise.all(promises) - data.value = { status: 'LOADED', value: true } - }) - - onUnmounted(async () => { - await elementSelect(null) - }) - - const rootComponent = computed<boolean>(() => { - return props.rootComponent ?? true - }) - - const title = computed(() => { - if ('colonnes' in definition.value) { - const colonnes = [...definition.value.colonnes] - - return colonnes.find(colonne => colonne.id === props.definitionsTree.foreignKey)?.nom - } else { - return definition.value.nom - } - }) - const elementSelected = computed(() => { - return store.getters['meta/elementSelected'](props.definitionsTree.joinTable || props.definitionsTree.id) - }) - const definition = computed(() => { - return metasIndex[props.definitionsTree.joinTable ? props.definitionsTree.joinTable : props.definitionsTree.id] - }) - const elements = computed<{ id: string; nom: string }[]>(() => { - if (!props.definitionsTree.joinTable) { - // si pas de table de jointure on peut directement charger les éléments - return store.getters['meta/elements'](props.definitionsTree.id) ?? [] - } - // via une table de jointure - const elementIdsFiltered = store.getters['meta/elements'](props.definitionsTree.joinTable) - // on garde les lignes en fonction des éléments déjà sélectionnés - .filter((joinRow: any) => Object.keys(props.foreignKeys ?? {}).every(foreignKey => joinRow[foreignKey] === (props.foreignKeys ?? {})[foreignKey])) - .map((joinRow: any) => joinRow[props.definitionsTree.foreignKey as string]) - - return store.getters['meta/elements']?.(props.definitionsTree.id)?.filter(({ id }: any) => elementIdsFiltered.includes(id)) || [] - }) - - const colonnesToEdit = computed(() => { - if ('colonnes' in definition.value) { - const colonnes = [...definition.value.colonnes] - - return colonnes.filter((colonne: any) => colonne.id !== 'id').filter(colonne => !('type' in colonne) || colonne.type !== 'entities') - } - - return [] - }) - - const elementToEdit = computed(() => { - if (!props.definitionsTree.joinTable) { - return elementSelected.value - } - - return store.getters['meta/elements'](props.definitionsTree.joinTable).find((joinRow: any) => - Object.keys(foreignKeysNew.value).every(foreignKey => joinRow[foreignKey] === foreignKeysNew.value[foreignKey]) - ) - }) - - const foreignKeysNew = computed<Record<string, string>>(() => { - if (props.definitionsTree.foreignKey) { - return { - ...props.foreignKeys, - [props.definitionsTree.foreignKey]: elementSelected.value?.id, - } - } - - return { ...props.foreignKeys } - }) - - const selectChange = async (event: any) => { - const elementId = event.target.value - const element = elements.value.find(({ id }: { id: string }) => id === elementId) - await elementSelect(element) - } - const labelGet = (element: { id: string; nom: string } | undefined): string => { - const meta = metasIndex[props.definitionsTree.id] - if ('labelGet' in meta) { - return meta.labelGet(element) - } - - return '' - } - const elementSelect = async (element: any) => { - await store.dispatch('meta/elementSelect', { - id: props.definitionsTree.joinTable || props.definitionsTree.id, - element, - }) - } - - return () => ( - <LoadingElement - data={data.value} - renderItem={_ => ( - <div> - <div class="tablet-blobs"> - <div class="tablet-blob-1-3 tablet-pt-s pb-s"> - <h4>{title.value}</h4> - </div> - <div class="mb tablet-blob-2-3"> - <select value={elementSelected.value?.id} class="p-s" onChange={selectChange}> - {elements.value.map(element => { - return ( - <option key={element.id} value={element.id}> - {labelGet(element) ?? element.nom} - </option> - ) - })} - </select> - </div> - </div> - {elementSelected.value ? ( - <div class="mb-xl"> - {rootComponent.value || props.definitionsTree.joinTable ? ( - <div class="rnd-s border p-m"> - <div class="tablet-blobs"> - {colonnesToEdit.value.map(colonne => ( - <div key={colonne.id} class="tablet-blob-1-2"> - <div class="tablet-blobs mb-s"> - <div class="tablet-blob-1-3 tablet-pt-s pb-s"> - <h5>{colonne.nom}</h5> - </div> - <div class="tablet-blob-2-3">{elementToEdit.value[colonne.id] || ''}</div> - </div> - </div> - ))} - </div> - </div> - ) : null} - - {props.definitionsTree.definitions?.map(definitionChild => ( - <div key={definitionChild.joinTable} class="pl-l"> - <span class="separator" /> - <DefinitionEdit definitionsTree={definitionChild} foreignKeys={foreignKeysNew.value} rootComponent={false} /> - </div> - ))} - </div> - ) : null} - </div> - )} - /> - ) -}) -// @ts-ignore waiting for https://github.com/vuejs/core/issues/7833 -DefinitionEdit.props = ['definitionsTree', 'foreignKeys', 'rootComponent'] diff --git a/packages/ui/src/components/metas/meta-page-template.tsx b/packages/ui/src/components/metas/meta-page-template.tsx deleted file mode 100644 index 4dafb2ee7..000000000 --- a/packages/ui/src/components/metas/meta-page-template.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { FunctionalComponent } from 'vue' -import { DefinitionEdit, DefinitionTree } from '@/components/metas/definition-edit' - -interface Props { - title: string - definitionsTree: DefinitionTree -} -export const MetaPageTemplate: FunctionalComponent<Props> = props => { - return ( - <div> - <div class="desktop-blobs"> - <div class="desktop-blob-2-3"> - <router-link to={{ name: 'metas' }}> - <h5>Métas</h5> - </router-link> - <h1> - <span class="cap-first">{props.title}</span> - </h1> - </div> - </div> - - <div class="line-neutral width-full mb-m" /> - - <div class="mb-xxl"> - <DefinitionEdit definitionsTree={props.definitionsTree} /> - </div> - </div> - ) -} diff --git a/packages/ui/src/components/titre.stories.tsx b/packages/ui/src/components/titre.stories.tsx index ee960407f..b8ca9324a 100644 --- a/packages/ui/src/components/titre.stories.tsx +++ b/packages/ui/src/components/titre.stories.tsx @@ -312,7 +312,7 @@ const apiClient: PropsApiClient = { deleteEtape: etapeId => { deleteEtapeAction(etapeId) - return Promise.resolve() + return Promise.reject(new Error('Nope')) }, deposeEtape: etapeId => { diff --git a/packages/ui/src/components/titre.tsx b/packages/ui/src/components/titre.tsx index 71d84379a..9a1f17c45 100644 --- a/packages/ui/src/components/titre.tsx +++ b/packages/ui/src/components/titre.tsx @@ -3,7 +3,6 @@ import { Router, useRouter } from 'vue-router' import { LoadingElement } from './_ui/functional-loader' import { DemarcheEtapeFondamentale, DemarcheSlug, demarcheSlugValidator } from 'camino-common/src/demarche' import { AsyncData } from '@/api/client-rest' -import { useStore } from 'vuex' import { User, isAdministration, isEntrepriseOrBureauDEtude, isSuper } from 'camino-common/src/roles' import { capitalize } from 'camino-common/src/strings' import { TitresTypes } from 'camino-common/src/static/titresTypes' @@ -39,7 +38,6 @@ import { getGestionnairesByTitreTypeId } from 'camino-common/src/static/administ import { DemarcheEditPopup } from './titre/demarche-edit-popup' import { PhaseWithAlterations, phaseWithAlterations } from './titre/phase' import { SecteursMaritimes } from 'camino-common/src/static/facades' -import { EtapeId } from 'camino-common/src/etape' import { userKey } from '@/moi' const activitesSort: TableSortEvent = { @@ -49,7 +47,6 @@ const activitesSort: TableSortEvent = { export const Titre = defineComponent(() => { const router = useRouter() - const store = useStore() const user = inject(userKey) @@ -70,26 +67,7 @@ export const Titre = defineComponent(() => { return demarcheSlugValidator.optional().parse(Array.isArray(demarcheId) ? demarcheId[0] : demarcheId) ?? null }) - const overriddenApiClient: ApiClient = { - ...apiClient, - deleteEtape: async (titreEtapeId: EtapeId) => { - try { - await apiClient.deleteEtape(titreEtapeId) - } catch (e) { - store.dispatch( - 'messageAdd', - { - value: `Impossible de supprimer cette étape`, - type: 'error', - }, - { root: true } - ) - throw e - } - }, - } - - return () => <PureTitre user={user} titreIdOrSlug={titreIdOrSlug.value} currentDemarcheSlug={currentDemarcheSlug.value} apiClient={overriddenApiClient} router={router} currentDate={getCurrent()} /> + return () => <PureTitre user={user} titreIdOrSlug={titreIdOrSlug.value} currentDemarcheSlug={currentDemarcheSlug.value} apiClient={apiClient} router={router} currentDate={getCurrent()} /> }) interface Props { diff --git a/packages/ui/src/components/titre/demarche-edit-popup.stories_snapshots_Create.html b/packages/ui/src/components/titre/demarche-edit-popup.stories_snapshots_Create.html index 9ed7ca749..4c856d2cb 100644 --- a/packages/ui/src/components/titre/demarche-edit-popup.stories_snapshots_Create.html +++ b/packages/ui/src/components/titre/demarche-edit-popup.stories_snapshots_Create.html @@ -23,13 +23,17 @@ <!----> </div> </form> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Enregistrer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left disabled" disabled="">Enregistrer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/titre/demarche-edit-popup.stories_snapshots_Edit.html b/packages/ui/src/components/titre/demarche-edit-popup.stories_snapshots_Edit.html index 7f5b453c7..e64957764 100644 --- a/packages/ui/src/components/titre/demarche-edit-popup.stories_snapshots_Edit.html +++ b/packages/ui/src/components/titre/demarche-edit-popup.stories_snapshots_Edit.html @@ -23,13 +23,17 @@ <!----> </div> </form> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Enregistrer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Enregistrer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/titre/demarche-remove-popup.stories_snapshots_Main.html b/packages/ui/src/components/titre/demarche-remove-popup.stories_snapshots_Main.html index 3ac0b659d..bfa4d94c6 100644 --- a/packages/ui/src/components/titre/demarche-remove-popup.stories_snapshots_Main.html +++ b/packages/ui/src/components/titre/demarche-remove-popup.stories_snapshots_Main.html @@ -12,13 +12,17 @@ <div class="fr-alert fr-alert--warning"> <h3 class="fr-alert__title">Attention : cette opération est définitive et ne peut pas être annulée.</h3>Souhaitez-vous supprimer la démarche <span class="fr-text--bold"> octroi</span> du titre<span class="fr-text--bold"> Nom du titre (autorisation de prospections préalables)</span> ? </div> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Supprimer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Supprimer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/titre/edit-popup.stories_snapshots_DefaultNoReference.html b/packages/ui/src/components/titre/edit-popup.stories_snapshots_DefaultNoReference.html index 5441abbd7..b58abaf9f 100644 --- a/packages/ui/src/components/titre/edit-popup.stories_snapshots_DefaultNoReference.html +++ b/packages/ui/src/components/titre/edit-popup.stories_snapshots_DefaultNoReference.html @@ -17,13 +17,17 @@ </div> <div class="fr-input-group fr-mb-0 fr-mt-3w"><label class="fr-label fr-mb-1w" for="references">Références</label><button class="fr-btn fr-btn--icon-right fr-icon-add-line fr-btn--tertiary fr-btn--md" title="Ajouter une référence" aria-label="Ajouter une référence" type="button">Ajouter une référence</button></div> </form> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Enregistrer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Enregistrer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/titre/edit-popup.stories_snapshots_OneReference.html b/packages/ui/src/components/titre/edit-popup.stories_snapshots_OneReference.html index 1ed94e480..edc4f3ba6 100644 --- a/packages/ui/src/components/titre/edit-popup.stories_snapshots_OneReference.html +++ b/packages/ui/src/components/titre/edit-popup.stories_snapshots_OneReference.html @@ -41,13 +41,17 @@ </div><button class="fr-btn fr-btn--icon-right fr-icon-add-line fr-btn--tertiary fr-btn--md" title="Ajouter une référence" aria-label="Ajouter une référence" type="button">Ajouter une référence</button> </div> </form> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Enregistrer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Enregistrer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/titre/remove-popup.stories_snapshots_Default.html b/packages/ui/src/components/titre/remove-popup.stories_snapshots_Default.html index 2669c42bf..6a8da410f 100644 --- a/packages/ui/src/components/titre/remove-popup.stories_snapshots_Default.html +++ b/packages/ui/src/components/titre/remove-popup.stories_snapshots_Default.html @@ -12,13 +12,17 @@ <div class="fr-alert fr-alert--warning"> <h3 class="fr-alert__title">Attention : cette opération est définitive et ne peut pas être annulée.</h3>Souhaitez-vous supprimer le titre <span class="fr-text--bold">Nom du titre autorisation de recherches</span>) ? </div> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Supprimer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Supprimer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/components/utilisateur.stories.tsx b/packages/ui/src/components/utilisateur.stories.tsx index 4770dba4e..feaeeef02 100644 --- a/packages/ui/src/components/utilisateur.stories.tsx +++ b/packages/ui/src/components/utilisateur.stories.tsx @@ -5,10 +5,10 @@ import { testBlankUser } from 'camino-common/src/tests-utils' import { PureUtilisateur, Props } from './utilisateur' import { toUtilisateurId } from 'camino-common/src/roles' -const meta: Meta = { +const meta: Meta<typeof PureUtilisateur> = { title: 'Components/Utilisateur', + // @ts-ignore component: PureUtilisateur, - argTypes: {}, } export default meta diff --git a/packages/ui/src/components/utilisateur.tsx b/packages/ui/src/components/utilisateur.tsx index e086c9354..f36f2d397 100644 --- a/packages/ui/src/components/utilisateur.tsx +++ b/packages/ui/src/components/utilisateur.tsx @@ -3,13 +3,12 @@ import { Card } from './_ui/card' import { User } from 'camino-common/src/roles' import { QGisToken } from './utilisateur/qgis-token' import { AsyncData } from '@/api/client-rest' -import { useStore } from 'vuex' import { useRoute, useRouter } from 'vue-router' import { UtilisateurApiClient, utilisateurApiClient } from './utilisateur/utilisateur-api-client' import { LoadingElement } from './_ui/functional-loader' import { RemovePopup } from './utilisateur/remove-popup' import { canDeleteUtilisateur } from 'camino-common/src/permissions/utilisateurs' -import { caminoDefineComponent, isEventWithTarget } from '../utils/vue-tsx-utils' +import { isEventWithTarget } from '../utils/vue-tsx-utils' import { PermissionDisplay } from './utilisateur/permission-edit' import { UtilisateurToEdit } from 'camino-common/src/utilisateur' import { Utilisateur as ApiUser, Entreprise } from 'camino-common/src/entreprise' @@ -20,7 +19,6 @@ import { entreprisesKey, userKey } from '@/moi' export const Utilisateur = defineComponent({ setup() { - const store = useStore() const route = useRoute() const router = useRouter() @@ -34,39 +32,11 @@ export const Utilisateur = defineComponent({ window.location.replace(`/apiUrl/rest/utilisateurs/${userId}/delete`) } else { await utilisateurApiClient.removeUtilisateur(userId) - store.dispatch( - 'messageAdd', - { - value: `l'utilisateur a été supprimé`, - type: 'success', - }, - { root: true } - ) router.push({ name: 'utilisateurs' }) } } const updateUtilisateur = async (utilisateur: UtilisateurToEdit) => { - try { - await utilisateurApiClient.updateUtilisateur(utilisateur) - - store.dispatch( - 'messageAdd', - { - value: `le rôle a bien été modifié`, - type: 'success', - }, - { root: true } - ) - } catch (e) { - store.dispatch( - 'messageAdd', - { - value: `Erreur lors de la modification du rôle de l'utilisateur`, - type: 'error', - }, - { root: true } - ) - } + await utilisateurApiClient.updateUtilisateur(utilisateur) } const passwordUpdate = () => { window.location.replace('/apiUrl/changerMotDePasse') @@ -98,7 +68,7 @@ export interface Props { passwordUpdate: () => void } -export const PureUtilisateur = caminoDefineComponent<Props>(['user', 'utilisateurId', 'apiClient', 'passwordUpdate', 'entreprises'], props => { +export const PureUtilisateur = defineComponent<Props>(props => { watch( () => props.utilisateurId, _newId => { @@ -290,3 +260,6 @@ export const PureUtilisateur = caminoDefineComponent<Props>(['user', 'utilisateu </div> ) }) + +// @ts-ignore waiting for https://github.com/vuejs/core/issues/7833 +PureUtilisateur.props = ['user', 'utilisateurId', 'apiClient', 'passwordUpdate', 'entreprises'] diff --git a/packages/ui/src/components/utilisateur/remove-popup.stories_snapshots_Default.html b/packages/ui/src/components/utilisateur/remove-popup.stories_snapshots_Default.html index 0f67bbd38..96394c266 100644 --- a/packages/ui/src/components/utilisateur/remove-popup.stories_snapshots_Default.html +++ b/packages/ui/src/components/utilisateur/remove-popup.stories_snapshots_Default.html @@ -12,13 +12,17 @@ <div class="fr-alert fr-alert--warning"> <h3 class="fr-alert__title">Attention : cette opération est définitive et ne peut pas être annulée.</h3>Souhaitez vous supprimer le compte de <span class="fr-text--bold">Prénom Nom</span> ? </div> + <!----> </div> </div> <div class="fr-modal__footer"> - <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left"> - <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Supprimer</button></li> - <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> - </ul> + <div style="display: flex; width: 100%; justify-content: end; align-items: center; gap: 1rem;"> + <!----> + <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left" style="width: auto;"> + <li><button class="fr-btn fr-icon-check-line fr-btn--icon-left">Supprimer</button></li> + <li><button class="fr-btn fr-icon-arrow-go-back-fill fr-btn--icon-left fr-btn--secondary" aria-controls="monId">Annuler</button></li> + </ul> + </div> </div> </div> </div> diff --git a/packages/ui/src/index.ts b/packages/ui/src/index.ts index 502814c6c..52344d80d 100644 --- a/packages/ui/src/index.ts +++ b/packages/ui/src/index.ts @@ -6,7 +6,6 @@ import { BrowserTracing } from '@sentry/browser' import { App } from './app' import router from './router' -import store from './store' import { CaminoConfig } from 'camino-common/src/static/config' import { getWithJson } from './api/client-rest' import { initMatomo } from './stats/matomo' @@ -97,6 +96,5 @@ Promise.resolve().then(async (): Promise<void> => { } } app.use(router) - app.use(store) app.mount('app-root') }) diff --git a/packages/ui/src/store/metas-definitions.ts b/packages/ui/src/metas-definitions.ts similarity index 97% rename from packages/ui/src/store/metas-definitions.ts rename to packages/ui/src/metas-definitions.ts index 95530e7cf..84bf0016a 100644 --- a/packages/ui/src/store/metas-definitions.ts +++ b/packages/ui/src/metas-definitions.ts @@ -392,26 +392,6 @@ export const metasIndex = { }, ], }, - - titre: { - nom: 'Titre', - linkName: 'meta-titre', - }, - - demarche: { - nom: 'Démarche', - linkName: 'meta-demarche', - }, - - etape: { - nom: 'Étape', - linkName: 'meta-etape', - }, - - activite: { - nom: 'Activité', - linkName: 'meta-activite', - }, } as const export type MetaIndexTable = keyof typeof metasIndex diff --git a/packages/ui/src/router/index.ts b/packages/ui/src/router/index.ts index e7347694d..6e16f7388 100644 --- a/packages/ui/src/router/index.ts +++ b/packages/ui/src/router/index.ts @@ -85,26 +85,6 @@ const Meta = async () => { return Meta } -const MetaTitre = async () => { - const { MetaTitre } = await import('../components/meta-titre') - - return MetaTitre -} -const MetaDemarche = async () => { - const { MetaDemarche } = await import('../components/meta-demarche') - - return MetaDemarche -} -const MetaEtape = async () => { - const { MetaEtape } = await import('../components/meta-etape') - - return MetaEtape -} -const MetaActivite = async () => { - const { MetaActivite } = await import('../components/meta-activite') - - return MetaActivite -} const Metas = async () => { const { Metas } = await import('../components/metas') @@ -318,42 +298,6 @@ const routes = [ menuSection: 'metas', }, }, - { - path: '/metas/titre', - name: 'meta-titre', - component: MetaTitre, - meta: { - title: 'Métas des titres', - menuSection: 'metas', - }, - }, - { - path: '/metas/demarche', - name: 'meta-demarche', - component: MetaDemarche, - meta: { - title: 'Métas des démarches', - menuSection: 'metas', - }, - }, - { - path: '/metas/etape', - name: 'meta-etape', - component: MetaEtape, - meta: { - title: 'Métas des étapes', - menuSection: 'metas', - }, - }, - { - path: '/metas/activite', - name: 'meta-activite', - component: MetaActivite, - meta: { - title: 'Métas des activités', - menuSection: 'metas', - }, - }, { path: '/metas/:id', name: 'meta', diff --git a/packages/ui/src/store/index.js b/packages/ui/src/store/index.js deleted file mode 100644 index 70b13e378..000000000 --- a/packages/ui/src/store/index.js +++ /dev/null @@ -1,43 +0,0 @@ -import { createStore } from 'vuex' -import meta from './meta' - -const modules = { - meta, -} - -const state = { - messages: [], -} - -const actions = { - messageAdd({ commit }, message) { - const id = Date.now() - message.id = id - - commit('messageAdd', message) - - setTimeout(() => { - commit('messageRemove', id) - }, 4500) - }, -} - -const mutations = { - messageAdd(state, message) { - state.messages.push(message) - }, - - messageRemove(state, id) { - const index = state.messages.findIndex(m => m.id === id) - state.messages.splice(index, 1) - }, -} - -export { actions, mutations } - -export default createStore({ - state, - actions, - mutations, - modules, -}) diff --git a/packages/ui/src/store/index.test.js b/packages/ui/src/store/index.test.js deleted file mode 100644 index 127118ed7..000000000 --- a/packages/ui/src/store/index.test.js +++ /dev/null @@ -1,90 +0,0 @@ -import { actions, mutations } from './index' -import { createApp } from 'vue' -import { createStore } from 'vuex' -import { vi, describe, expect, beforeEach, test } from 'vitest' - -vi.mock('./meta', () => ({ default: { meta: vi.fn() } })) - -console.info = vi.fn() -console.error = vi.fn() - -describe("état général de l'application", () => { - let state - let store - let modules - - beforeEach(() => { - vi.resetAllMocks() - modules = { - titre: { - namespaced: true, - state: { element: null }, - actions: { - get: vi.fn(), - }, - }, - } - - state = { - messages: [], - } - - store = createStore({ - modules, - state, - actions, - mutations, - }) - - const app = createApp({}) - app.use(store) - - localStorage.clear() - }) - - test('ajoute un message', () => { - const message = { id: 42, message: 'message très important' } - store.commit('messageAdd', message) - - expect(state.messages).toEqual([message]) - }) - - test('supprime un message', () => { - const message = { id: 42, message: 'message très important' } - store.commit('messageAdd', message) - store.commit('messageRemove', 42) - - expect(state.messages).toEqual([]) - }) -}) - -describe("état général de l'application", () => { - let state - let store - - beforeEach(() => { - state = { - messages: [], - } - - localStorage.clear() - }) - - test('supprime un message', async () => { - vi.useFakeTimers() - vi.setSystemTime('2022-01-01') - const messageRemoveMock = vi.fn() - mutations.messageRemove = messageRemoveMock - store = createStore({ actions, state, mutations }) - const message = { id: 14, message: 'message important' } - await store.dispatch('messageAdd', message) - - const res = state.messages.pop() - expect(res.message).toEqual('message important') - expect(res.id).toBeLessThanOrEqual(Date.now()) - vi.advanceTimersByTime(4500) - // expect(setTimeout).toHaveBeenCalled() - // expect(setTimeout).toHaveBeenCalledWith(expect.any(Function), 4500) - expect(messageRemoveMock).toHaveBeenCalled() - }) -}) diff --git a/packages/ui/src/store/meta.js b/packages/ui/src/store/meta.js deleted file mode 100644 index 758387738..000000000 --- a/packages/ui/src/store/meta.js +++ /dev/null @@ -1,71 +0,0 @@ -/* eslint-disable @typescript-eslint/strict-boolean-expressions */ - -import { metasIndex } from './metas-definitions' -import { nextTick } from 'vue' - -const state = { - elementsIndex: {}, - elementsSelectedIndex: {}, -} - -const getters = { - elements: state => id => state.elementsIndex[id], - elementSelected: state => id => state.elementsSelectedIndex[id], -} - -const actions = { - async get({ _dispatch, commit, state }, id) { - try { - if (metasIndex[id]) { - const definition = metasIndex[id] - const elements = await definition.get() - commit('set', { id, elements }) - - for (const colonne of definition.colonnes) { - if (colonne.type === 'entities' && colonne.entities && !state.elementsIndex[colonne.entities]) { - const entities = await metasIndex[colonne.entities].get() - - commit('set', { id: colonne.entities, elements: entities }) - } - } - } - } catch (e) { - console.error(e) - } - }, - - elementSelect({ commit }, { id, element }) { - commit('elementSelectedSet', { id, element: null }) - if (element) { - nextTick(() => { - commit('elementSelectedSet', { id, element }) - }) - } - }, -} - -const mutations = { - reset(state) { - state.elementsIndex = {} - state.elementsSelectedIndex = {} - }, - - set(state, { id, elements }) { - state.elementsIndex = { ...state.elementsIndex, [id]: elements } - }, - - elementSelectedSet(state, { id, element }) { - state.elementsSelectedIndex = { - ...state.elementsSelectedIndex, - [id]: element, - } - }, -} - -export default { - namespaced: true, - state, - actions, - mutations, - getters, -} diff --git a/packages/ui/src/storybook.spec.ts b/packages/ui/src/storybook.spec.ts index d619e0038..1f188b6fe 100644 --- a/packages/ui/src/storybook.spec.ts +++ b/packages/ui/src/storybook.spec.ts @@ -24,8 +24,6 @@ vi.mock('vue-router', () => ({ })), })) -vi.mock('vuex', () => ({ useStore: vi.fn() })) - const compose = (entry: StoryFile): ReturnType<typeof composeStories<StoryFile>> => { try { return composeStories(entry) diff --git a/packages/ui/src/typings/global.d.ts b/packages/ui/src/typings/global.d.ts new file mode 100644 index 000000000..3d09ce57e --- /dev/null +++ b/packages/ui/src/typings/global.d.ts @@ -0,0 +1,11 @@ +/* eslint-disable no-unused-vars */ + +declare global { + interface ReadonlyArray<T> { + includes<U>(_x: U & (T & U extends never ? never : unknown)): boolean + } + + interface Array<T> { + includes<U>(_x: U & (T & U extends never ? never : unknown)): boolean + } +} diff --git a/packages/ui/src/typings/vuex.d.ts b/packages/ui/src/typings/vuex.d.ts deleted file mode 100644 index 6ab7fb3fa..000000000 --- a/packages/ui/src/typings/vuex.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { DeepMutable } from 'camino-common/src/typescript-tools' -import { Store } from 'vuex' - -/* eslint-disable no-unused-vars */ - -declare module '@vue/runtime-core' { - interface State { - count: number - } - - interface ComponentCustomProperties { - $store: Store<any> - } -} - -declare global { - interface ReadonlyArray<T> { - includes<U>(_x: U & (T & U extends never ? never : unknown)): boolean - } - - interface Array<T> { - includes<U>(_x: U & (T & U extends never ? never : unknown)): boolean - } - - declare function structuredClone<T>(value: T, transfer?: { transfer: ReadonlyArray<import('worker_threads').TransferListItem> }): DeepMutable<T> -} -- GitLab