diff --git a/ui/ui-frontend/projects/pastis/src/app/profile/edit-profile/file-tree-metadata/center-matmenu.directive.ts b/ui/ui-frontend/projects/pastis/src/app/profile/edit-profile/file-tree-metadata/center-matmenu.directive.ts deleted file mode 100644 index 0c63cb1f104..00000000000 --- a/ui/ui-frontend/projects/pastis/src/app/profile/edit-profile/file-tree-metadata/center-matmenu.directive.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { FlexibleConnectedPositionStrategy, OverlayConfig, OverlayRef } from '@angular/cdk/overlay'; -import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core'; -import { MatLegacyMenuPanel as MatMenuPanel, MatLegacyMenuTrigger as MatMenuTrigger } from '@angular/material/legacy-menu'; - -@Directive({ - // eslint-disable-next-line @angular-eslint/directive-selector - selector: '[center-mat-menu]', -}) -export class CenterMatmenuDirective { - overlayRef: OverlayRef; - overlayConf: OverlayConfig; - dropDown: HTMLElement; - overlayPositionBox: HTMLElement; - menu: MatMenuPanel; - button: HTMLElement; - buttonWidth: number; - buttonLeft: number; - buttonBottom: number; - arrowDiv: HTMLDivElement; - - @Input('center-mat-menu') private menuTrigger: MatMenuTrigger; - - constructor( - private _menuButton: ElementRef, - private _renderer: Renderer2, - ) {} - - @HostListener('click', ['$event']) - // @ts-ignore - onclick(e) { - console.log('cliquer ?'); - this._setVariables(); - // menu not opened by keyboard down arrow, have to set this so MatMenuTrigger knows the menu was opened with a mouse click - this.menuTrigger._openedBy = e.button === 0 ? 'mouse' : null; - - this._overrideMatMenu(); - - this.dropDown = this.overlayRef.overlayElement.children[0].children[0] as HTMLElement; - this.overlayPositionBox = this.overlayRef.hostElement; - - setTimeout(() => { - this._styleDropDown(this.dropDown); - this._setOverlayPosition(this.dropDown, this.overlayPositionBox); - this._openMenu(); - }); - } - - private _setVariables() { - const config = this.menuTrigger['_getOverlayConfig'](); - this.menuTrigger['_overlayRef'] = this.menuTrigger['_overlay'].create(config); - this.overlayRef = this.menuTrigger['_overlayRef']; - this.overlayConf = this.overlayRef.getConfig(); - this.overlayRef.keydownEvents().subscribe(); - this.menu = this.menuTrigger.menu; - this._setButtonVars(); - } - - private _setButtonVars() { - this.button = this._menuButton.nativeElement; - this.buttonWidth = this.button.getBoundingClientRect().width; - this.buttonLeft = this.button.getBoundingClientRect().left; - this.buttonBottom = this.button.getBoundingClientRect().bottom; - } - - private _overrideMatMenu() { - console.log(this.overlayConf); - const strat = this.overlayConf.positionStrategy as FlexibleConnectedPositionStrategy; - this.menuTrigger['_setPosition'](strat); - strat.positionChanges.subscribe(() => { - this._setButtonVars(); - this._setOverlayPosition(this.dropDown, this.overlayPositionBox); - }); - this.overlayConf.hasBackdrop = this.menu.hasBackdrop == null ? !this.menuTrigger.triggersSubmenu() : this.menu.hasBackdrop; - this.overlayRef.attach(this.menuTrigger['_getPortal']()); - - if (this.menu.lazyContent) { - this.menu.lazyContent.attach(); - } - - // @ts-ignore - this.menuTrigger['_closeSubscription'] = this.menuTrigger['_menuClosingActions']().subscribe(() => { - this.menuTrigger.closeMenu(); - setTimeout(() => { - this._renderer.removeChild(this.button, this.arrowDiv); - }, 75); - }); - this.menuTrigger['_initMenu'](); - } - - private _styleDropDown(dropDown: HTMLElement) { - this.arrowDiv = this._renderer.createElement('div'); - this._renderer.addClass(this.arrowDiv, 'dialog-arrow'); - this._renderer.appendChild(this.button, this.arrowDiv); - this._renderer.setStyle(this.arrowDiv, 'left', this.buttonWidth / 2 - 10 + 'px'); - this._renderer.setStyle(this._renderer.parentNode(dropDown), 'transform-origin', 'center top 0px'); - } - - private _setOverlayPosition(dropDown: HTMLElement, overlayPositionBox: HTMLElement) { - const dropDownleft = this.buttonWidth / 2 + this.buttonLeft - dropDown.offsetWidth / 2; - - this._renderer.setStyle(overlayPositionBox, 'top', this.buttonBottom + 1 + 'px'); - this._renderer.setStyle(overlayPositionBox, 'left', dropDownleft + 'px'); - this._renderer.setStyle(overlayPositionBox, 'height', '100%'); - } - - private _openMenu() { - // @ts-ignore - this.menuTrigger.menu['_startAnimation'](); - } -} diff --git a/ui/ui-frontend/projects/pastis/src/app/profile/edit-profile/file-tree-metadata/file-tree-metadata.component.html b/ui/ui-frontend/projects/pastis/src/app/profile/edit-profile/file-tree-metadata/file-tree-metadata.component.html index b8cfee46575..c1bd906295f 100644 --- a/ui/ui-frontend/projects/pastis/src/app/profile/edit-profile/file-tree-metadata/file-tree-metadata.component.html +++ b/ui/ui-frontend/projects/pastis/src/app/profile/edit-profile/file-tree-metadata/file-tree-metadata.component.html @@ -201,12 +201,12 @@
-
- - - - - - - - + + + + + + + + - - - - + + + + Autoriser la presence de
+ métadonnées non déclarées
- Autoriser la presence de
- métadonnées non déclarées
-
- -
-
+
+ +
+
- - - + + + - - - - + + + + - - - - -
-
+ + + + + diff --git a/ui/ui-frontend/projects/pastis/src/app/profile/edit-profile/file-tree-metadata/file-tree-metadata.component.scss b/ui/ui-frontend/projects/pastis/src/app/profile/edit-profile/file-tree-metadata/file-tree-metadata.component.scss index 2a3f327b3fa..a2c23a551b0 100644 --- a/ui/ui-frontend/projects/pastis/src/app/profile/edit-profile/file-tree-metadata/file-tree-metadata.component.scss +++ b/ui/ui-frontend/projects/pastis/src/app/profile/edit-profile/file-tree-metadata/file-tree-metadata.component.scss @@ -426,6 +426,11 @@ dp-day-calendar .dp-day-calendar-container { padding-bottom: 30px; } +.cdk-overlay-connected-position-bounding-box:has(.pastis-menu-item-vitam) { + width: fit-content !important; + transform: translateX(calc(-50% + 20px)); +} + .pastis-menu-item-vitam { @extend .vitamui-menu-panel; .mat-menu-item:hover:not([disabled]), diff --git a/ui/ui-frontend/projects/pastis/src/app/profile/edit-profile/file-tree-metadata/file-tree-metadata.component.ts b/ui/ui-frontend/projects/pastis/src/app/profile/edit-profile/file-tree-metadata/file-tree-metadata.component.ts index be895c3b6f9..257bb58c6af 100644 --- a/ui/ui-frontend/projects/pastis/src/app/profile/edit-profile/file-tree-metadata/file-tree-metadata.component.ts +++ b/ui/ui-frontend/projects/pastis/src/app/profile/edit-profile/file-tree-metadata/file-tree-metadata.component.ts @@ -29,7 +29,6 @@ import { CdkTextareaAutosize } from '@angular/cdk/text-field'; import { Component, EventEmitter, OnDestroy, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core'; import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms'; -import { MatLegacyCheckboxChange as MatCheckboxChange } from '@angular/material/legacy-checkbox'; import { MatLegacyTableDataSource as MatTableDataSource } from '@angular/material/legacy-table'; import { Router } from '@angular/router'; import { LangChangeEvent, TranslateService } from '@ngx-translate/core'; @@ -49,9 +48,9 @@ import { FileNode, FileNodeInsertAttributeParams, FileNodeInsertParams, + nodeNameToLabel, TypeConstants, ValueOrDataConstants, - nodeNameToLabel, } from '../../../models/file-node'; import { CardinalityValues, MetadataHeaders } from '../../../models/models'; import { ProfileType } from '../../../models/profile-type.enum'; @@ -221,6 +220,7 @@ export class FileTreeMetadataComponent implements OnInit, OnDestroy { commentaire: string; enumeration: string[]; additionalPropertiesMetadonnee: boolean; + buttonClickedId?: number; constructor( private fileService: FileService, @@ -748,18 +748,15 @@ export class FileTreeMetadataComponent implements OnInit, OnDestroy { onButtonClicked(elementId: number) { this.hoveredElementId = elementId; + this.buttonClickedId = elementId; } - isButtonClicked(elementId: number, data: MetadataHeaders) { - if (data) { - this.hoveredElementId = elementId; - this.buttonIsClicked = true; - return data.id === this.hoveredElementId; - } + isButtonClicked(elementId: number) { + return this.buttonClickedId === elementId; } isRowHovered(elementId: number) { - return this.hoveredElementId === elementId; + return this.hoveredElementId === elementId || this.buttonClickedId === elementId; } onMouseOver(row: MetadataHeaders) { @@ -1013,9 +1010,8 @@ export class FileTreeMetadataComponent implements OnInit, OnDestroy { return !(nomDuChamp === 'Content'); } - changeAutorisation($event: MatCheckboxChange, element: any) { - console.log($event.checked + 'test' + element.nomDuChamp); - this.additionalPropertiesMetadonnee = $event.checked; + toggleAutorisation(element: any) { + this.additionalPropertiesMetadonnee = !this.getNodeAdditionalProperties(element); this.setNodeAdditionalPropertiesChange(this.additionalPropertiesMetadonnee, element); } diff --git a/ui/ui-frontend/projects/pastis/src/app/shared/shared.module.ts b/ui/ui-frontend/projects/pastis/src/app/shared/shared.module.ts index df514b72b44..d90cf00fa60 100644 --- a/ui/ui-frontend/projects/pastis/src/app/shared/shared.module.ts +++ b/ui/ui-frontend/projects/pastis/src/app/shared/shared.module.ts @@ -44,7 +44,6 @@ import { MatLegacyTooltipModule as MatTooltipModule } from '@angular/material/le import { TranslateModule } from '@ngx-translate/core'; import { VitamUICommonModule } from 'vitamui-library'; import { PastisMaterialModule } from '../material.module'; -import { CenterMatmenuDirective } from '../profile/edit-profile/file-tree-metadata/center-matmenu.directive'; import { ModifyTextButtonComponent } from './modify-text-button/modify-text-button.component'; import { PastisBreadcrumbComponent } from './pastis-breadcrumb-components/pastis-breadcrumb/pastis-breadcrumb.component'; import { PastisTitleBreadcrumbComponent } from './pastis-breadcrumb-components/pastis-title-breadcrumb/pastis-title-breadcrumb.component'; @@ -57,7 +56,6 @@ import { PastisUnderConstructionComponent } from './pastis-under-construction/pa @NgModule({ declarations: [ PastisUnderConstructionComponent, - CenterMatmenuDirective, PastisPopupMetadataLanguageComponent, PastisDialogConfirmComponent, PastisBreadcrumbComponent, @@ -81,7 +79,6 @@ import { PastisUnderConstructionComponent } from './pastis-under-construction/pa MatTooltipModule, PastisMaterialModule, PastisDialogConfirmComponent, - CenterMatmenuDirective, PastisPopupMetadataLanguageComponent, PastisBreadcrumbComponent, PastisTitleBreadcrumbComponent,