From 5511ac084e58825ade7f29e9b3041692d3694620 Mon Sep 17 00:00:00 2001 From: Bello Babakolo Date: Tue, 28 Jan 2025 13:20:19 +0100 Subject: [PATCH] feat(app): display selected organization in the organization pane --- .../organization/organization.actions.ts | 4 ++++ .../organization/organization.facade.ts | 7 +++++++ .../organization/organization.reducer.ts | 9 +++++++++ .../organization/organization.selectors.ts | 15 ++++++++++++++- .../header/header-toolbar.component.html | 17 +++++++++++++---- .../header/header-toolbar.component.ts | 13 ++++++++++--- 6 files changed, 57 insertions(+), 8 deletions(-) diff --git a/packages/core/state/src/lib/+state/management/organization/organization.actions.ts b/packages/core/state/src/lib/+state/management/organization/organization.actions.ts index f85ce0d7..5755a32b 100644 --- a/packages/core/state/src/lib/+state/management/organization/organization.actions.ts +++ b/packages/core/state/src/lib/+state/management/organization/organization.actions.ts @@ -69,6 +69,10 @@ export const setPreviousSelectedGlobalOrganizationHistory = createAction( '[ORGANIZATION] Set previously selected global organization' ); +export const cancelSelection = createAction( + '[ORGANIZATION] Set the global selected leaf to null' +); + export const organizationCreateRequest = createAction( '[ORGANIZATION] Organization create request', props<{ payload: IIoRestorecommerceOrganizationOrganizationList }>() diff --git a/packages/core/state/src/lib/+state/management/organization/organization.facade.ts b/packages/core/state/src/lib/+state/management/organization/organization.facade.ts index cb662404..dccee8cd 100644 --- a/packages/core/state/src/lib/+state/management/organization/organization.facade.ts +++ b/packages/core/state/src/lib/+state/management/organization/organization.facade.ts @@ -65,6 +65,10 @@ export class OrganizationFacade { organizationSelectors.selectGlobalChildrenOrganizations ); + readonly globalOrganizationLeafId$ = this.store.select( + organizationSelectors.selectGlobalOrganizationLeafId + ); + readonly globalOrganizationLeaf$ = this.store.select( organizationSelectors.selectGlobalOrganizationLeaf ); @@ -104,6 +108,9 @@ export class OrganizationFacade { organizationActions.setPreviousSelectedGlobalOrganizationHistory() ); + cancelSelection = () => + this.store.dispatch(organizationActions.cancelSelection()); + create = (payload: IIoRestorecommerceOrganizationOrganizationList) => this.store.dispatch( organizationActions.organizationCreateRequest({ payload }) diff --git a/packages/core/state/src/lib/+state/management/organization/organization.reducer.ts b/packages/core/state/src/lib/+state/management/organization/organization.reducer.ts index 5f922e1e..01d4d185 100644 --- a/packages/core/state/src/lib/+state/management/organization/organization.reducer.ts +++ b/packages/core/state/src/lib/+state/management/organization/organization.reducer.ts @@ -160,6 +160,15 @@ const reducer = createReducer( state.selectedGlobalOrganizationHistory.slice(0, -1), }) ), + on( + organizationActions.cancelSelection, + (state): IOrganizationState => ({ + ...state, + setSelectedGlobalLeaf: null, + selectedGlobalOrganizationHistory: + state.selectedGlobalOrganizationHistory.slice(), + }) + ), on( organizationActions.organizationCreateRequest, (state): IOrganizationState => ({ diff --git a/packages/core/state/src/lib/+state/management/organization/organization.selectors.ts b/packages/core/state/src/lib/+state/management/organization/organization.selectors.ts index b46ded68..d77807de 100644 --- a/packages/core/state/src/lib/+state/management/organization/organization.selectors.ts +++ b/packages/core/state/src/lib/+state/management/organization/organization.selectors.ts @@ -164,7 +164,20 @@ export const selectGlobalChildrenOrganizations = createSelector( } ); -export const selectGlobalOrganizationLeaf = createSelector( +export const selectGlobalOrganizationLeafId = createSelector( selectOrganization, (state: IOrganizationState) => state.setSelectedGlobalLeaf ); + +export const selectGlobalOrganizationLeaf = createSelector( + selectOrganizationEntities, + selectGlobalOrganizationLeafId, + (entities, selectGlobalOrganizationLeafId) => { + return ( + selectGlobalOrganizationLeafId && + selectGlobalOrganizationLeafId in entities + ? entities[selectGlobalOrganizationLeafId] + : null + ) as IOrganization | null; + } +); diff --git a/packages/modules/ui/src/lib/components/organisms/header/header-toolbar.component.html b/packages/modules/ui/src/lib/components/organisms/header/header-toolbar.component.html index 4c647b7d..99851295 100644 --- a/packages/modules/ui/src/lib/components/organisms/header/header-toolbar.component.html +++ b/packages/modules/ui/src/lib/components/organisms/header/header-toolbar.component.html @@ -12,7 +12,7 @@ > - {{ vm.globalOrganization?.name }} + {{ vm.globalOrganization?.name || vm.selectedParent?.name }} @@ -44,7 +44,6 @@ [closeOnOffClick]="true" [positions]="rightOrientedPositions" > -
@@ -70,12 +69,22 @@ {{ vm.globalOrganization?.name }}
-
+
+ @if (vm.globalOrganization?.isLeaf) { + + } +