@provoly/dashboard 0.21.3 → 0.21.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/svgs/layers.svg +3 -2
- package/assets/svgs/legend.svg +14 -3
- package/dataset/style/_o-pry-dataset.scss +6 -9
- package/esm2022/dataset/components/dataset.component.mjs +3 -3
- package/esm2022/dataset/style/css.component.mjs +2 -2
- package/esm2022/lib/core/auth/geoAuth.service.mjs +29 -5
- package/esm2022/lib/core/components/select/select.component.mjs +13 -3
- package/esm2022/lib/core/components/share/group-share/group-share.component.mjs +14 -6
- package/esm2022/lib/core/components/snackbar/snackbar.service.mjs +8 -3
- package/esm2022/lib/core/i18n/en.translations.mjs +9 -2
- package/esm2022/lib/core/i18n/fr.translations.mjs +9 -3
- package/esm2022/lib/core/model/display-options.interface.mjs +24 -7
- package/esm2022/lib/core/model/manifest.interface.mjs +1 -1
- package/esm2022/lib/core/store/field/field.interface.mjs +2 -1
- package/esm2022/lib/core/store/item/item.effects.mjs +2 -2
- package/esm2022/lib/core/store/search/search.reducer.mjs +2 -2
- package/esm2022/lib/dashboard/components/dashboard.component.mjs +3 -3
- package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.mjs +12 -3
- package/esm2022/lib/dashboard/dashboard.module.mjs +5 -4
- package/esm2022/lib/dashboard/store/dashboard.actions.mjs +1 -1
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +14 -6
- package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +8 -2
- package/esm2022/lib/dashboard/store/manifest.service.mjs +4 -3
- package/esm2022/notification/components/notification/content/notification-content.component.mjs +12 -8
- package/esm2022/notification/components/notification/notification.component.mjs +2 -1
- package/esm2022/notification/style/css.component.mjs +2 -2
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +3 -3
- package/esm2022/presentation/components/presentation.component.mjs +17 -9
- package/esm2022/presentation/i18n/en.translations.mjs +2 -1
- package/esm2022/presentation/i18n/fr.translations.mjs +3 -2
- package/esm2022/presentation/style/css.component.mjs +2 -2
- package/esm2022/restitution/components/restitution/restitution.component.mjs +5 -5
- package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +3 -3
- package/esm2022/restitution/style/css.component.mjs +2 -2
- package/esm2022/toolbox/components/delete/delete.component.mjs +29 -0
- package/esm2022/toolbox/components/save-view/save-view.component.mjs +12 -6
- package/esm2022/toolbox/components/share/share.component.mjs +72 -0
- package/esm2022/toolbox/components/switch-to-edit-content/switch-to-edit-content.component.mjs +26 -0
- package/esm2022/toolbox/components/toolbox.component.mjs +3 -3
- package/esm2022/toolbox/public-api.mjs +4 -1
- package/esm2022/toolbox/toolbox.model.mjs +22 -2
- package/esm2022/toolbox/toolbox.module.mjs +16 -4
- package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +2 -2
- package/esm2022/widgets/widget-map/component/widget-map-layer.service.mjs +27 -13
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +61 -22
- package/esm2022/widgets/widget-map/i18n/en.translations.mjs +5 -2
- package/esm2022/widgets/widget-map/i18n/fr.translations.mjs +5 -2
- package/esm2022/widgets/widget-map/interaction/interaction-manager.class.mjs +3 -2
- package/esm2022/widgets/widget-map/style/css.component.mjs +2 -2
- package/esm2022/widgets/widget-map/utils/cql-utils.class.mjs +16 -7
- package/esm2022/widgets/widget-map/utils/widget-map.utils.mjs +3 -2
- package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +2 -2
- package/fesm2022/provoly-dashboard-dataset.mjs +4 -4
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-notification.mjs +14 -9
- package/fesm2022/provoly-dashboard-notification.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +23 -13
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +8 -8
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +145 -12
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +114 -47
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +138 -39
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/lib/core/auth/geoAuth.service.d.ts +5 -1
- package/lib/core/components/select/select.component.d.ts +2 -0
- package/lib/core/components/share/group-share/group-share.component.d.ts +2 -2
- package/lib/core/components/snackbar/snackbar.service.d.ts +2 -1
- package/lib/core/i18n/en.translations.d.ts +7 -0
- package/lib/core/i18n/fr.translations.d.ts +7 -1
- package/lib/core/model/display-options.interface.d.ts +3 -0
- package/lib/core/model/manifest.interface.d.ts +3 -1
- package/lib/core/store/field/field.interface.d.ts +1 -0
- package/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.d.ts +1 -0
- package/lib/dashboard/store/dashboard.actions.d.ts +3 -0
- package/lib/dashboard/store/dashboard.effects.d.ts +1 -1
- package/lib/dashboard/store/manifest.service.d.ts +2 -1
- package/notification/components/notification/content/notification-content.component.d.ts +4 -2
- package/notification/style/_m-notifications.scss +6 -7
- package/package.json +7 -7
- package/presentation/components/presentation.component.d.ts +4 -1
- package/presentation/i18n/en.translations.d.ts +1 -0
- package/presentation/i18n/fr.translations.d.ts +1 -0
- package/presentation/style/_o-pry-presentation.scss +0 -16
- package/restitution/components/restitution/restitution.component.d.ts +1 -1
- package/restitution/style/_o-restitution.scss +12 -42
- package/styles/components/_a-page-loader.scss +1 -1
- package/styles/components/_o-draggable-menu.scss +8 -0
- package/styles/components/_o-pry-stepper.scss +9 -10
- package/styles/components/_o-widget.scss +7 -3
- package/styles/layout/_o-manifest-layout.scss +20 -0
- package/styles-theme/components-theme/_o-widget.theme.scss +1 -1
- package/toolbox/components/delete/delete.component.d.ts +19 -0
- package/toolbox/components/save-view/save-view.component.d.ts +3 -2
- package/toolbox/components/share/share.component.d.ts +26 -0
- package/toolbox/components/switch-to-edit-content/switch-to-edit-content.component.d.ts +15 -0
- package/toolbox/public-api.d.ts +3 -0
- package/toolbox/toolbox.module.d.ts +12 -9
- package/widgets/widget-chart/component/widget-chart.component.d.ts +1 -1
- package/widgets/widget-map/component/widget-map-layer.service.d.ts +4 -3
- package/widgets/widget-map/component/widget-map.component.d.ts +8 -6
- package/widgets/widget-map/i18n/en.translations.d.ts +3 -0
- package/widgets/widget-map/i18n/fr.translations.d.ts +3 -0
- package/widgets/widget-map/style/_o-layer-legend.scss +43 -54
- package/widgets/widget-map/utils/cql-utils.class.d.ts +2 -2
- package/widgets/widget-map/utils/widget-map.utils.d.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provoly-dashboard-notification.mjs","sources":["../../../../projects/provoly/dashboard/notification/store/notification.actions.ts","../../../../projects/provoly/dashboard/notification/store/notification.selectors.ts","../../../../projects/provoly/dashboard/notification/components/notification/content/notification-content.component.ts","../../../../projects/provoly/dashboard/notification/components/notification/content/notification-content.component.html","../../../../projects/provoly/dashboard/notification/style/css.component.ts","../../../../projects/provoly/dashboard/notification/components/notification/notification.component.ts","../../../../projects/provoly/dashboard/notification/components/notification/notification.component.html","../../../../projects/provoly/dashboard/notification/i18n/en.translations.ts","../../../../projects/provoly/dashboard/notification/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/notification/store/notification.service.ts","../../../../projects/provoly/dashboard/notification/store/notification.effects.ts","../../../../projects/provoly/dashboard/notification/store/notification.reducer.ts","../../../../projects/provoly/dashboard/notification/notification.module.ts","../../../../projects/provoly/dashboard/notification/provoly-dashboard-notification.ts"],"sourcesContent":["import { createAction, props } from '@ngrx/store';\nimport { PryNotification } from '@provoly/dashboard';\n\nexport const NotificationActions = {\n add: createAction('[Notification] received', props<{ notification: PryNotification }>()),\n delete: createAction('[Notification] delete', props<{ id: string }>()),\n deleteSuccess: createAction('[Notification] delete success', props<{ id: string }>()),\n deleteAll: createAction('[Notification] delete all'),\n deleteAllSuccess: createAction('[Notification] delete all success')\n};\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { notificationFeatureKey } from '@provoly/dashboard';\nimport * as fromNotification from './notification.reducer';\n\nconst feature = createFeatureSelector<fromNotification.NotificationState>(notificationFeatureKey);\n\nconst list = createSelector(feature, (state) => state.list);\n\nexport const NotificationSelectors = {\n feature,\n list\n};\n","import {\n AfterViewInit,\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n HostListener,\n Output,\n ViewChild\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { PryNotification } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { NotificationActions } from '../../../store/notification.actions';\nimport { NotificationSelectors } from '../../../store/notification.selectors';\n\n@Component({\n selector: 'pry-notification-content',\n templateUrl: './notification-content.component.html'\n})\nexport class PryNotificationContentComponent implements DoCheck, AfterViewInit {\n open: boolean = false;\n notifications$: Observable<PryNotification[]>;\n @Output() closed = new EventEmitter<boolean>();\n @ViewChild('caret') caret!: ElementRef;\n @ViewChild('button') button!: ElementRef<HTMLButtonElement>;\n left: number = 0;\n\n constructor(protected store: Store, private router: Router) {\n this.notifications$ = this.store\n .select(NotificationSelectors.list)\n .pipe(\n map((notifications: PryNotification[]) =>\n [...notifications].sort((a, b) => (a.creationDate < b.creationDate ? 1 : -1))\n )\n );\n }\n\n ngAfterViewInit() {\n if (!this.open) {\n this.button.nativeElement.focus();\n }\n }\n\n @HostListener('window:resize')\n ngDoCheck() {\n if (this.caret) {\n this.left = this.caret.nativeElement.offsetWidth - 48;\n }\n }\n\n delete(notification: PryNotification) {\n this.store.dispatch(NotificationActions.delete({ id: notification.id }));\n }\n\n deleteAll() {\n this.store.dispatch(NotificationActions.deleteAll());\n }\n\n goTo(notification: PryNotification) {\n this.router.navigateByUrl(notification.link ?? '');\n this.closed.next(true);\n }\n\n closeToEscape() {\n this.closed.next(true);\n }\n}\n","<div\n class=\"m-notifications-list\"\n id=\"notifications_list\"\n aria-labelledby=\"read_notifications\"\n aria-hidden=\"false\"\n #caret\n (keydown.escape)=\"closeToEscape()\"\n>\n <span class=\"caret-top\" [style.left.px]=\"left\"></span>\n <div class=\"m-notifications-list__header\">\n <h2 class=\"a-h2\">{{ '@pry.notif.label' | i18n }}</h2>\n <p class=\"a-p none\" *ngIf=\"(notifications$ | async)?.length === 0; else notification\">\n {{ '@pry.notif.noNotifications' | i18n }}\n </p>\n <ng-template #notification>\n <div class=\"m-btn-group\">\n <button type=\"button\" #button class=\"a-btn a-btn--primary\" (click)=\"deleteAll()\">\n {{ '@pry.notif.deleteAll' | i18n: { count: (notifications$ | async)?.length } }}\n </button>\n </div>\n </ng-template>\n </div>\n <div class=\"m-notifications-list__content\">\n <ul class=\"m-notifications-list__items\">\n <li class=\"m-notifications-list__items__li\" *ngFor=\"let notification of notifications$ | async; let last = last\">\n <div\n class=\"m-notifications-list__items__li__txt\"\n *ngIf=\"\n ('@pry.notif.title.' + notification.text.code | i18n) !== '@pry.notif.title.' + notification.text.code;\n else noTranslation\n \"\n >\n <h3 class=\"a-h3\">{{ '@pry.notif.title.' + notification.text.code | i18n }}</h3>\n <p class=\"a-p date\">{{ notification.creationDate | date: \"dd/MM/yyyy, H'h'mm\" }}</p>\n <p class=\"a-p desc\">{{ '@pry.notif.message.' + notification.text.code | i18n: notification.text.param }}</p>\n <a *ngIf=\"!!notification.link\" (click)=\"goTo(notification)\">\n {{ '@pry.notif.link' | i18n }}\n </a>\n </div>\n <ng-template #noTranslation>\n <div class=\"m-notifications-list__items__li__txt\">\n <h3 class=\"a-h3\">{{ notification.text.title }}</h3>\n <p class=\"a-p date\">{{ notification.creationDate | date: \"dd/MM/yyyy, H'h'mm\" }}</p>\n <p class=\"a-p desc\">{{ notification.text.code }}</p>\n <a *ngIf=\"!!notification.link\" (click)=\"goTo(notification)\">\n {{ '@pry.notif.link' | i18n }}\n </a>\n </div>\n </ng-template>\n <button\n class=\"a-btn a-btn--deletenotification\"\n (click)=\"delete(notification)\"\n (keydown.tab)=\"last ? closeToEscape() : null\"\n title=\"{{ '@pry.notif.delete' | i18n }}\"\n >\n <pry-icon iconSvg=\"close\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.notif.delete' | i18n }}</span>\n </button>\n </li>\n </ul>\n </div>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-notification-css',\n template: '',\n styleUrls: ['./_m-notifications.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryNotificationCssComponent {}\n","import { Overlay, OverlayConfig } from '@angular/cdk/overlay';\nimport { Component, ElementRef, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { PryDialogRef, PryDialogService, PryNotification, SubscriptionnerDirective } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { NotificationSelectors } from '../../store/notification.selectors';\nimport { PryNotificationContentComponent } from './content/notification-content.component';\n\n@Component({\n selector: 'pry-notification',\n templateUrl: './notification.component.html'\n})\nexport class PryNotificationComponent extends SubscriptionnerDirective {\n @ViewChild('ref') ref!: ElementRef<HTMLButtonElement>;\n notifications$: Observable<PryNotification[]>;\n isOpened: boolean = false;\n dialogRef?: PryDialogRef<PryNotificationContentComponent>;\n\n constructor(\n private dialog: PryDialogService,\n private overlay: Overlay,\n protected store: Store<any>\n ) {\n super();\n this.notifications$ = this.store.select(NotificationSelectors.list);\n }\n\n toggle() {\n this.isOpened = true;\n this.dialogRef = this.dialog.open(\n PryNotificationContentComponent,\n {\n overlayConfig: new OverlayConfig({\n hasBackdrop: true,\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.ref)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n }\n ])\n })\n },\n () => {\n this.isOpened = false;\n }\n );\n this.subscriptions.add(\n this.dialogRef?.component?.closed.subscribe((isClosed) => {\n if (isClosed) {\n this.dialogRef?.close();\n this.ref.nativeElement.focus();\n }\n })\n );\n }\n}\n","<pry-notification-css></pry-notification-css>\n<div\n class=\"m-notifications\"\n *ngIf=\"notifications$ | async as notifications\"\n [class.has-unread]=\"notifications.length > 0\"\n>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-controls=\"notifications_list\"\n [attr.aria-expanded]=\"isOpened\"\n aria-haspopup=\"true\"\n id=\"read_notifications\"\n #ref\n (click)=\"toggle()\"\n [title]=\"notifications.length <= 1 ? ('@pry.notif.notification' | i18n: {count : notifications.length} ) : ('@pry.notif.notifications' | i18n : {count : notifications.length})\"\n >\n <pry-icon iconSvg=\"notifications\"></pry-icon>\n <span *ngIf=\"notifications.length > 0\" class=\"a-pastille -unread\"\n >{{ notifications.length }} <span class=\"u-visually-hidden\">{{ '@pry.notif.label' | i18n | lowercase }}</span>\n </span>\n </button>\n</div>\n","export const enTranslations = {\n '@pry': {\n notif: {\n label: 'Notifications',\n link: 'See',\n notifications: 'You have {{count}} notifications',\n notification: 'You have {{count}} notification',\n deleteAll: 'Delete all ({{count}})',\n delete: 'Delete notification',\n noNotifications: 'No notification',\n title: {\n DASHBOARD_PRIVATE: 'Presentation',\n DASHBOARD_PUBLIC: 'Presentation',\n DASHBOARD_DELETED: 'Presentation'\n },\n message: {\n DASHBOARD_PRIVATE: 'Access to presentation <{{name}}> has been restrained',\n DASHBOARD_PUBLIC: 'Presentation <{{name}}> is available',\n DASHBOARD_DELETED: 'Presentation <{{name}}> has been removed'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n notif: {\n label: 'Notifications',\n link: 'Voir',\n notifications: 'Vous avez {{count}} notifications',\n notification:'Vous avez {{count}} notification',\n deleteAll: 'Tout supprimer ({{count}})',\n delete: 'Supprimer la notification',\n noNotifications: 'Aucune notification actuellement',\n title: {\n DASHBOARD_PRIVATE: 'Présentation',\n DASHBOARD_PUBLIC: 'Présentation',\n DASHBOARD_DELETED: 'Présentation'\n },\n message: {\n DASHBOARD_PRIVATE: \"L'accès à la présentation <{{name}}> a été restreint\",\n DASHBOARD_PUBLIC: 'La présentation <{{name}}> est disponible',\n DASHBOARD_DELETED: 'La présentation <{{name}}> a été supprimée'\n }\n }\n }\n};\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ConfigSelectors } from '@provoly/dashboard';\nimport { mergeMap } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NotificationService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n deleteNotification(id: string) {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.delete(encodeURI(`${url}/notification/me/id/${id}`))));\n }\n\n deleteAllNotifications() {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.delete(encodeURI(`${url}/notification/me`))));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { WebsocketService, wsMessage } from '@provoly/dashboard';\nimport { map, mergeMap } from 'rxjs';\nimport { NotificationActions } from './notification.actions';\nimport { NotificationService } from './notification.service';\n\n@Injectable()\nexport class NotificationEffects {\n constructor(\n private actions$: Actions,\n private wsService: WebsocketService,\n private store: Store,\n private notificationService: NotificationService\n ) {\n wsService.messages$('notification').subscribe((msg: wsMessage) => {\n setTimeout(\n () =>\n this.store.dispatch(\n NotificationActions.add({\n notification: {\n text: msg.payload.text,\n link: msg.payload.link,\n creationDate: msg.payload.creationDate,\n id: msg.id\n }\n })\n ),\n 1\n );\n });\n }\n\n deleteNotification$ = createEffect(() =>\n this.actions$.pipe(\n ofType(NotificationActions.delete),\n mergeMap((action) =>\n this.notificationService\n .deleteNotification(action.id)\n .pipe(map(() => NotificationActions.deleteSuccess({ id: action.id })))\n )\n )\n );\n\n deleteAllNotifications$ = createEffect(() =>\n this.actions$.pipe(\n ofType(NotificationActions.deleteAll),\n mergeMap((action) =>\n this.notificationService.deleteAllNotifications().pipe(map(() => NotificationActions.deleteAllSuccess()))\n )\n )\n );\n}\n","import { createReducer, on } from '@ngrx/store';\nimport { PryNotification } from '@provoly/dashboard';\nimport { NotificationActions } from './notification.actions';\n\nexport interface NotificationState {\n list: PryNotification[];\n}\n\nexport const initialNotificationState: NotificationState = {\n list: []\n};\n\nexport const notificationReducer = createReducer(\n initialNotificationState,\n on(NotificationActions.add, (state, action) => {\n const allNotifications = [...state.list, { ...action.notification }];\n const uniqueIds = [...new Set(allNotifications.map((notif) => notif.id))];\n return {\n ...state,\n list: uniqueIds.map((id) => allNotifications.find((notif) => notif.id === id)) as PryNotification[]\n };\n }),\n on(NotificationActions.deleteSuccess, (state, action) => ({\n ...state,\n list: state.list.filter((notification: PryNotification) => notification.id !== action.id)\n })),\n on(NotificationActions.deleteAllSuccess, (state, action) => ({\n ...state,\n list: []\n }))\n);\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport {\n notificationFeatureKey,\n PryCoreModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule\n} from '@provoly/dashboard';\nimport { PrySearchModule } from '@provoly/dashboard/search';\nimport { PryNotificationContentComponent } from './components/notification/content/notification-content.component';\nimport { PryNotificationComponent } from './components/notification/notification.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { NotificationEffects } from './store/notification.effects';\nimport { notificationReducer } from './store/notification.reducer';\nimport { PryNotificationCssComponent } from './style/css.component';\n\n@NgModule({\n imports: [\n CommonModule,\n PryCoreModule,\n StoreModule.forFeature(notificationFeatureKey, notificationReducer),\n EffectsModule.forFeature([NotificationEffects]),\n PryIconModule,\n PrySearchModule,\n PryI18nModule\n ],\n declarations: [PryNotificationComponent, PryNotificationContentComponent, PryNotificationCssComponent],\n exports: [PryNotificationComponent, PryNotificationContentComponent]\n})\nexport class PryNotificationModule {\n constructor(private pryTranslateService: PryI18nService) {\n this.pryTranslateService.addLangObject('fr', 'notification', frTranslations);\n this.pryTranslateService.addLangObject('en', 'notification', enTranslations);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i4","i2","i5.PryNotificationCssComponent","map","i4.NotificationService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provoly-dashboard-notification.mjs","sources":["../../../../projects/provoly/dashboard/notification/store/notification.actions.ts","../../../../projects/provoly/dashboard/notification/store/notification.selectors.ts","../../../../projects/provoly/dashboard/notification/components/notification/content/notification-content.component.ts","../../../../projects/provoly/dashboard/notification/components/notification/content/notification-content.component.html","../../../../projects/provoly/dashboard/notification/style/css.component.ts","../../../../projects/provoly/dashboard/notification/components/notification/notification.component.ts","../../../../projects/provoly/dashboard/notification/components/notification/notification.component.html","../../../../projects/provoly/dashboard/notification/i18n/en.translations.ts","../../../../projects/provoly/dashboard/notification/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/notification/store/notification.service.ts","../../../../projects/provoly/dashboard/notification/store/notification.effects.ts","../../../../projects/provoly/dashboard/notification/store/notification.reducer.ts","../../../../projects/provoly/dashboard/notification/notification.module.ts","../../../../projects/provoly/dashboard/notification/provoly-dashboard-notification.ts"],"sourcesContent":["import { createAction, props } from '@ngrx/store';\nimport { PryNotification } from '@provoly/dashboard';\n\nexport const NotificationActions = {\n add: createAction('[Notification] received', props<{ notification: PryNotification }>()),\n delete: createAction('[Notification] delete', props<{ id: string }>()),\n deleteSuccess: createAction('[Notification] delete success', props<{ id: string }>()),\n deleteAll: createAction('[Notification] delete all'),\n deleteAllSuccess: createAction('[Notification] delete all success')\n};\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { notificationFeatureKey } from '@provoly/dashboard';\nimport * as fromNotification from './notification.reducer';\n\nconst feature = createFeatureSelector<fromNotification.NotificationState>(notificationFeatureKey);\n\nconst list = createSelector(feature, (state) => state.list);\n\nexport const NotificationSelectors = {\n feature,\n list\n};\n","import {\n AfterViewInit,\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n HostListener,\n Output,\n ViewChild\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { PryI18nService, PryNotification } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { NotificationActions } from '../../../store/notification.actions';\nimport { NotificationSelectors } from '../../../store/notification.selectors';\n\n@Component({\n selector: 'pry-notification-content',\n templateUrl: './notification-content.component.html'\n})\nexport class PryNotificationContentComponent implements DoCheck, AfterViewInit {\n open: boolean = false;\n notifications$: Observable<PryNotification[]>;\n @Output() closed = new EventEmitter<boolean>();\n @ViewChild('caret') caret!: ElementRef;\n @ViewChild('button') button!: ElementRef<HTMLButtonElement>;\n left: number = 0;\n\n constructor(protected store: Store, private router: Router, private i18nService: PryI18nService) {\n this.notifications$ = this.store\n .select(NotificationSelectors.list)\n .pipe(\n map((notifications: PryNotification[]) =>\n [...notifications].sort((a, b) => (a.creationDate < b.creationDate ? 1 : -1))\n )\n );\n }\n\n ngAfterViewInit() {\n if (!this.open) {\n this.button.nativeElement.focus();\n }\n }\n\n @HostListener('window:resize')\n ngDoCheck() {\n if (this.caret) {\n this.left = this.caret.nativeElement.offsetWidth - 48;\n }\n }\n\n delete(notification: PryNotification) {\n this.store.dispatch(NotificationActions.delete({ id: notification.id }));\n }\n\n deleteAll() {\n this.store.dispatch(NotificationActions.deleteAll());\n }\n\n goTo(notification: PryNotification) {\n this.router.navigateByUrl(notification.link ?? '');\n this.closed.next(true);\n }\n\n closeToEscape() {\n this.closed.next(true);\n }\n\n hasTranslation(title: string, translationBase: string) {\n return this.i18nService.instant(translationBase + title) !== translationBase + title;\n }\n}\n","<div\n class=\"m-notifications-list\"\n id=\"notifications_list\"\n aria-labelledby=\"read_notifications\"\n aria-hidden=\"false\"\n #caret\n (keydown.escape)=\"closeToEscape()\"\n>\n <span class=\"caret-top\" [style.left.px]=\"left\"></span>\n <div class=\"m-notifications-list__header\">\n <h2 class=\"a-h2\">{{ '@pry.notif.label' | i18n }}</h2>\n <p class=\"a-p none\" *ngIf=\"(notifications$ | async)?.length === 0; else notification\">\n {{ '@pry.notif.noNotifications' | i18n }}\n </p>\n <ng-template #notification>\n <div class=\"m-btn-group\">\n <button type=\"button\" #button class=\"a-btn a-btn--primary\" (click)=\"deleteAll()\">\n {{ '@pry.notif.deleteAll' | i18n : { count: (notifications$ | async)?.length } }}\n </button>\n </div>\n </ng-template>\n </div>\n <div class=\"m-notifications-list__content\">\n <ul class=\"m-notifications-list__items\">\n <li class=\"m-notifications-list__items__li\" *ngFor=\"let notification of notifications$ | async; let last = last\">\n <div class=\"m-notifications-list__items__li__txt\">\n <h3 class=\"a-h3\">\n {{\n hasTranslation(notification.text.code, '@pry.notif.title.')\n ? ('@pry.notif.title.' + notification.text.code | i18n)\n : notification.text.title\n }}\n <span>{{ notification.creationDate | date : \"dd/MM' 'H':'mm\" }}</span>\n </h3>\n <p class=\"a-p desc\">\n {{\n hasTranslation(notification.text.code, '@pry.notif.title.')\n ? ('@pry.notif.message.' + notification.text.code | i18n : notification.text.param)\n : notification.text.code\n }}\n </p>\n <a *ngIf=\"!!notification.link\" (click)=\"goTo(notification)\">\n {{ '@pry.notif.link' | i18n }}\n </a>\n </div>\n <button\n class=\"a-btn a-btn--delete\"\n (click)=\"delete(notification)\"\n (keydown.tab)=\"last ? closeToEscape() : null\"\n title=\"{{ '@pry.notif.delete' | i18n }}\"\n >\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"close\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.notif.delete' | i18n }}</span>\n </button>\n </li>\n </ul>\n </div>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-notification-css',\n template: '',\n styleUrls: ['./_m-notifications.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryNotificationCssComponent {}\n","import { Overlay, OverlayConfig } from '@angular/cdk/overlay';\nimport { Component, ElementRef, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { PryDialogRef, PryDialogService, PryNotification, SubscriptionnerDirective } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { NotificationSelectors } from '../../store/notification.selectors';\nimport { PryNotificationContentComponent } from './content/notification-content.component';\n\n@Component({\n selector: 'pry-notification',\n templateUrl: './notification.component.html'\n})\nexport class PryNotificationComponent extends SubscriptionnerDirective {\n @ViewChild('ref') ref!: ElementRef<HTMLButtonElement>;\n notifications$: Observable<PryNotification[]>;\n isOpened: boolean = false;\n dialogRef?: PryDialogRef<PryNotificationContentComponent>;\n\n constructor(private dialog: PryDialogService, private overlay: Overlay, protected store: Store<any>) {\n super();\n this.notifications$ = this.store.select(NotificationSelectors.list);\n }\n\n toggle() {\n this.isOpened = true;\n this.dialogRef = this.dialog.open(\n PryNotificationContentComponent,\n {\n overlayConfig: new OverlayConfig({\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.ref)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n }\n ])\n })\n },\n () => {\n this.isOpened = false;\n }\n );\n this.subscriptions.add(\n this.dialogRef?.component?.closed.subscribe((isClosed) => {\n if (isClosed) {\n this.dialogRef?.close();\n this.ref.nativeElement.focus();\n }\n })\n );\n }\n}\n","<pry-notification-css></pry-notification-css>\n<div\n class=\"m-notifications\"\n *ngIf=\"notifications$ | async as notifications\"\n [class.has-unread]=\"notifications.length > 0\"\n>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-controls=\"notifications_list\"\n [attr.aria-expanded]=\"isOpened\"\n aria-haspopup=\"true\"\n id=\"read_notifications\"\n #ref\n (click)=\"toggle()\"\n [title]=\"notifications.length <= 1 ? ('@pry.notif.notification' | i18n: {count : notifications.length} ) : ('@pry.notif.notifications' | i18n : {count : notifications.length})\"\n >\n <pry-icon iconSvg=\"notifications\"></pry-icon>\n <span *ngIf=\"notifications.length > 0\" class=\"a-pastille -unread\"\n >{{ notifications.length }} <span class=\"u-visually-hidden\">{{ '@pry.notif.label' | i18n | lowercase }}</span>\n </span>\n </button>\n</div>\n","export const enTranslations = {\n '@pry': {\n notif: {\n label: 'Notifications',\n link: 'See',\n notifications: 'You have {{count}} notifications',\n notification: 'You have {{count}} notification',\n deleteAll: 'Delete all ({{count}})',\n delete: 'Delete notification',\n noNotifications: 'No notification',\n title: {\n DASHBOARD_PRIVATE: 'Presentation',\n DASHBOARD_PUBLIC: 'Presentation',\n DASHBOARD_DELETED: 'Presentation'\n },\n message: {\n DASHBOARD_PRIVATE: 'Access to presentation <{{name}}> has been restrained',\n DASHBOARD_PUBLIC: 'Presentation <{{name}}> is available',\n DASHBOARD_DELETED: 'Presentation <{{name}}> has been removed'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n notif: {\n label: 'Notifications',\n link: 'Voir',\n notifications: 'Vous avez {{count}} notifications',\n notification:'Vous avez {{count}} notification',\n deleteAll: 'Tout supprimer ({{count}})',\n delete: 'Supprimer la notification',\n noNotifications: 'Aucune notification actuellement',\n title: {\n DASHBOARD_PRIVATE: 'Présentation',\n DASHBOARD_PUBLIC: 'Présentation',\n DASHBOARD_DELETED: 'Présentation'\n },\n message: {\n DASHBOARD_PRIVATE: \"L'accès à la présentation <{{name}}> a été restreint\",\n DASHBOARD_PUBLIC: 'La présentation <{{name}}> est disponible',\n DASHBOARD_DELETED: 'La présentation <{{name}}> a été supprimée'\n }\n }\n }\n};\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ConfigSelectors } from '@provoly/dashboard';\nimport { mergeMap } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NotificationService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n deleteNotification(id: string) {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.delete(encodeURI(`${url}/notification/me/id/${id}`))));\n }\n\n deleteAllNotifications() {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.delete(encodeURI(`${url}/notification/me`))));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { WebsocketService, wsMessage } from '@provoly/dashboard';\nimport { map, mergeMap } from 'rxjs';\nimport { NotificationActions } from './notification.actions';\nimport { NotificationService } from './notification.service';\n\n@Injectable()\nexport class NotificationEffects {\n constructor(\n private actions$: Actions,\n private wsService: WebsocketService,\n private store: Store,\n private notificationService: NotificationService\n ) {\n wsService.messages$('notification').subscribe((msg: wsMessage) => {\n setTimeout(\n () =>\n this.store.dispatch(\n NotificationActions.add({\n notification: {\n text: msg.payload.text,\n link: msg.payload.link,\n creationDate: msg.payload.creationDate,\n id: msg.id\n }\n })\n ),\n 1\n );\n });\n }\n\n deleteNotification$ = createEffect(() =>\n this.actions$.pipe(\n ofType(NotificationActions.delete),\n mergeMap((action) =>\n this.notificationService\n .deleteNotification(action.id)\n .pipe(map(() => NotificationActions.deleteSuccess({ id: action.id })))\n )\n )\n );\n\n deleteAllNotifications$ = createEffect(() =>\n this.actions$.pipe(\n ofType(NotificationActions.deleteAll),\n mergeMap((action) =>\n this.notificationService.deleteAllNotifications().pipe(map(() => NotificationActions.deleteAllSuccess()))\n )\n )\n );\n}\n","import { createReducer, on } from '@ngrx/store';\nimport { PryNotification } from '@provoly/dashboard';\nimport { NotificationActions } from './notification.actions';\n\nexport interface NotificationState {\n list: PryNotification[];\n}\n\nexport const initialNotificationState: NotificationState = {\n list: []\n};\n\nexport const notificationReducer = createReducer(\n initialNotificationState,\n on(NotificationActions.add, (state, action) => {\n const allNotifications = [...state.list, { ...action.notification }];\n const uniqueIds = [...new Set(allNotifications.map((notif) => notif.id))];\n return {\n ...state,\n list: uniqueIds.map((id) => allNotifications.find((notif) => notif.id === id)) as PryNotification[]\n };\n }),\n on(NotificationActions.deleteSuccess, (state, action) => ({\n ...state,\n list: state.list.filter((notification: PryNotification) => notification.id !== action.id)\n })),\n on(NotificationActions.deleteAllSuccess, (state, action) => ({\n ...state,\n list: []\n }))\n);\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport {\n notificationFeatureKey,\n PryCoreModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule\n} from '@provoly/dashboard';\nimport { PrySearchModule } from '@provoly/dashboard/search';\nimport { PryNotificationContentComponent } from './components/notification/content/notification-content.component';\nimport { PryNotificationComponent } from './components/notification/notification.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { NotificationEffects } from './store/notification.effects';\nimport { notificationReducer } from './store/notification.reducer';\nimport { PryNotificationCssComponent } from './style/css.component';\n\n@NgModule({\n imports: [\n CommonModule,\n PryCoreModule,\n StoreModule.forFeature(notificationFeatureKey, notificationReducer),\n EffectsModule.forFeature([NotificationEffects]),\n PryIconModule,\n PrySearchModule,\n PryI18nModule\n ],\n declarations: [PryNotificationComponent, PryNotificationContentComponent, PryNotificationCssComponent],\n exports: [PryNotificationComponent, PryNotificationContentComponent]\n})\nexport class PryNotificationModule {\n constructor(private pryTranslateService: PryI18nService) {\n this.pryTranslateService.addLangObject('fr', 'notification', frTranslations);\n this.pryTranslateService.addLangObject('en', 'notification', enTranslations);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i2","i5.PryNotificationCssComponent","map","i4.NotificationService"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { EventEmitter, Component, Optional, Input, Output, ViewEncapsulation, Te
|
|
|
5
5
|
import * as i4$1 from '@angular/forms';
|
|
6
6
|
import { FormGroup, FormControl, Validators, ReactiveFormsModule, FormsModule } from '@angular/forms';
|
|
7
7
|
import * as i4 from '@provoly/dashboard';
|
|
8
|
-
import { SubscriptionnerDirective, DEFAULT_RESTITUTION_ICON_URL, LibraryTypes, DashboardGridLayout, DashboardSelectors, DashboardActions, ViewMode, PryIconModule, PryCoreModule, PryDashboardModule, PrySelectModule, PryShareModule, PryOverlayModule, PryI18nModule } from '@provoly/dashboard';
|
|
8
|
+
import { SubscriptionnerDirective, DEFAULT_RESTITUTION_ICON_URL, LibraryTypes, DashboardGridLayout, DashboardSelectors, DashboardActions, ViewMode, PryVisibilityType, PryIconModule, PryCoreModule, PryDashboardModule, PrySelectModule, PryShareModule, PryOverlayModule, PryI18nModule } from '@provoly/dashboard';
|
|
9
9
|
import * as i6 from '@provoly/dashboard/components/checkbox';
|
|
10
10
|
import { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';
|
|
11
11
|
import * as i9 from '@provoly/dashboard/components/sinceDate';
|
|
@@ -173,11 +173,11 @@ class PryAddEditPresentationComponent extends SubscriptionnerDirective {
|
|
|
173
173
|
: this.selectedPresentation$.value?.metadata ?? [];
|
|
174
174
|
}
|
|
175
175
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryAddEditPresentationComponent, deps: [{ token: i1.Store }, { token: i3.Router, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
176
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PryAddEditPresentationComponent, selector: "pry-add-edit-presentation", inputs: { edition: "edition", editionStartUrl: "editionStartUrl", selectedPresentation: "selectedPresentation", mode: "mode" }, outputs: { goBack: "goBack" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-manifest-layout\">\n <div class=\"o-manifest-layout__toolbox\">\n <button class=\"a-btn a-btn--secondary\" type=\"button\" (click)=\"close()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" type=\"button\" (click)=\"save()\" [disabled]=\"form.invalid\">\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content--presentation\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.add' + '.pageTitle' | i18n }}</h1>\n <div class=\"o-presentation-form-wrapper\">\n <form [formGroup]=\"form\" class=\"o-presentation-form\">\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_name\">{{ '@pry.presentation.form.name' | i18n }}</label>\n <input\n type=\"text\"\n id=\"presentation_name\"\n formControlName=\"name\"\n placeholder=\"{{ '@pry.presentation.form.name' | i18n }}\"\n class=\"a-form-field\"\n maxlength=\"50\"\n required\n />\n <label\n for=\"presentation_name\"\n *ngIf=\"form.get('name')?.touched && form.get('name')?.hasError('required')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.presentation.required' | i18n }}\n </label>\n <label\n for=\"presentation_name\"\n *ngIf=\"form.get('name')?.hasError('maxlength')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.presentation.maxLength' | i18n : { len: '50' } }}\n </label>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_description\">{{\n '@pry.presentation.form.description' | i18n\n }}</label>\n <textarea\n formControlName=\"description\"\n id=\"presentation_description\"\n name=\"description\"\n cols=\"30\"\n rows=\"5\"\n maxlength=\"200\"\n placeholder=\"{{ '@pry.presentation.form.description' | i18n }}\"\n class=\"a-form-field\"\n ></textarea>\n <label\n for=\"presentation_description\"\n *ngIf=\"form.get('description')?.hasError('maxlength')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.presentation.maxLength' | i18n : { len: '200' } }}\n </label>\n </div>\n <div class=\"m-form-label-field -width-full\" *ngIf=\"mode === 'theme'\">\n <label class=\"a-label\" for=\"presentation_theme\">{{ '@pry.presentation.form.theme' | i18n }}</label>\n <pry-select\n id=\"presentation_theme\"\n [items]=\"possibleThemes\"\n formControlName=\"theme\"\n [clearable]=\"true\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.presentation.form.image' | i18n }}</label>\n <div class=\"o-file-input\">\n <pry-select-image\n id=\"presentation_image\"\n (changed)=\"image = $event\"\n [iconUrl]=\"image\"\n [mode]=\"type\"\n ></pry-select-image>\n <pry-checkbox formControlName=\"cover\" name=\"cover\" ngDefaultControl>\n {{ '@pry.presentation.form.cover' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n <div class=\"m-form-label-field -width-full m-form-label-field--inline\">\n <label class=\"a-label\">{{ '@pry.presentation.form.grid' | i18n }}</label>\n <span class=\"a-label\">{{ '@pry.toolbox.layout.' + this.chosenLayout | i18n }}</span>\n <pry-select-grid-layout *ngIf=\"!edition\"></pry-select-grid-layout>\n </div>\n </form>\n <ng-container *ngIf=\"mode === 'meta'\">\n <div class=\"o-presentation__metadata-editor\" *ngIf=\"selectedPresentation$ | async as selectedPresentation\">\n <pry-metadata-editor\n [targetId]=\"selectedPresentation.id\"\n [isModification]=\"true\"\n [metadata]=\"selectedPresentation.metadata\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addMetadata($event)\"\n [type]=\"'meta'\"\n ></pry-metadata-editor>\n </div>\n </ng-container>\n </div>\n <button\n class=\"a-btn a-btn--primary\"\n (click)=\"configureDashboard(selectedPresentation$.value!)\"\n [disabled]=\"form.invalid\"\n >\n {{ '@pry.presentation.configuration' | i18n }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i4.PrySelectImageComponent, selector: "pry-select-image", inputs: ["iconUrl", "size", "mode"], outputs: ["toggled", "changed"] }, { kind: "directive", type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "loading", "elementRef"], outputs: ["searched", "cleared"] }, { kind: "component", type: i5.SelectGridLayoutComponent, selector: "pry-select-grid-layout" }, { kind: "component", type: i6.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "directive", type: i6$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.PryMetadataEditorComponent, selector: "pry-metadata-editor", inputs: ["isModification", "targetId", "type", "metadata"], outputs: ["addMeta", "removeMeta"] }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i6$1.AsyncPipe, name: "async" }] }); }
|
|
176
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PryAddEditPresentationComponent, selector: "pry-add-edit-presentation", inputs: { edition: "edition", editionStartUrl: "editionStartUrl", selectedPresentation: "selectedPresentation", mode: "mode" }, outputs: { goBack: "goBack" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-manifest-layout\">\n <div class=\"o-manifest-layout__toolbox\">\n <button class=\"a-btn a-btn--secondary\" type=\"button\" (click)=\"close()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" type=\"button\" (click)=\"save()\" [disabled]=\"form.invalid\">\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content--presentation\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.add' + '.pageTitle' | i18n }}</h1>\n <div class=\"o-presentation-form-wrapper\">\n <form [formGroup]=\"form\" class=\"o-presentation-form\">\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_name\">{{ '@pry.presentation.form.name' | i18n }}</label>\n <input\n type=\"text\"\n id=\"presentation_name\"\n formControlName=\"name\"\n placeholder=\"{{ '@pry.presentation.form.name' | i18n }}\"\n class=\"a-form-field\"\n maxlength=\"50\"\n required\n />\n <label\n for=\"presentation_name\"\n *ngIf=\"form.get('name')?.touched && form.get('name')?.hasError('required')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.presentation.required' | i18n }}\n </label>\n <label\n for=\"presentation_name\"\n *ngIf=\"form.get('name')?.hasError('maxlength')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.presentation.maxLength' | i18n : { len: '50' } }}\n </label>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_description\">{{\n '@pry.presentation.form.description' | i18n\n }}</label>\n <textarea\n formControlName=\"description\"\n id=\"presentation_description\"\n name=\"description\"\n cols=\"30\"\n rows=\"5\"\n maxlength=\"200\"\n placeholder=\"{{ '@pry.presentation.form.description' | i18n }}\"\n class=\"a-form-field\"\n ></textarea>\n <label\n for=\"presentation_description\"\n *ngIf=\"form.get('description')?.hasError('maxlength')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.presentation.maxLength' | i18n : { len: '200' } }}\n </label>\n </div>\n <div class=\"m-form-label-field -width-full\" *ngIf=\"mode === 'theme'\">\n <label class=\"a-label\" for=\"presentation_theme\">{{ '@pry.presentation.form.theme' | i18n }}</label>\n <pry-select\n id=\"presentation_theme\"\n [items]=\"possibleThemes\"\n formControlName=\"theme\"\n [clearable]=\"true\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.presentation.form.image' | i18n }}</label>\n <div class=\"o-file-input\">\n <pry-select-image\n id=\"presentation_image\"\n (changed)=\"image = $event\"\n [iconUrl]=\"image\"\n [mode]=\"type\"\n ></pry-select-image>\n <pry-checkbox formControlName=\"cover\" name=\"cover\" ngDefaultControl>\n {{ '@pry.presentation.form.cover' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n <div class=\"m-form-label-field -width-full m-form-label-field--inline\">\n <label class=\"a-label\">{{ '@pry.presentation.form.grid' | i18n }}</label>\n <span class=\"a-label\">{{ '@pry.toolbox.layout.' + this.chosenLayout | i18n }}</span>\n <pry-select-grid-layout *ngIf=\"!edition\"></pry-select-grid-layout>\n </div>\n </form>\n <ng-container *ngIf=\"mode === 'meta'\">\n <div class=\"o-presentation__metadata-editor\" *ngIf=\"selectedPresentation$ | async as selectedPresentation\">\n <pry-metadata-editor\n [targetId]=\"selectedPresentation.id\"\n [isModification]=\"true\"\n [metadata]=\"selectedPresentation.metadata ?? []\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addMetadata($event)\"\n [type]=\"'meta'\"\n ></pry-metadata-editor>\n </div>\n </ng-container>\n </div>\n <button\n class=\"a-btn a-btn--primary\"\n (click)=\"configureDashboard(selectedPresentation$.value!)\"\n [disabled]=\"form.invalid\"\n >\n {{ '@pry.presentation.configuration' | i18n }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i4.PrySelectImageComponent, selector: "pry-select-image", inputs: ["iconUrl", "size", "mode"], outputs: ["toggled", "changed"] }, { kind: "directive", type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "loading", "elementRef"], outputs: ["searched", "cleared"] }, { kind: "component", type: i5.SelectGridLayoutComponent, selector: "pry-select-grid-layout" }, { kind: "component", type: i6.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "directive", type: i6$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.PryMetadataEditorComponent, selector: "pry-metadata-editor", inputs: ["isModification", "targetId", "type", "metadata"], outputs: ["addMeta", "removeMeta"] }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i6$1.AsyncPipe, name: "async" }] }); }
|
|
177
177
|
}
|
|
178
178
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryAddEditPresentationComponent, decorators: [{
|
|
179
179
|
type: Component,
|
|
180
|
-
args: [{ selector: 'pry-add-edit-presentation', template: "<div class=\"o-manifest-layout\">\n <div class=\"o-manifest-layout__toolbox\">\n <button class=\"a-btn a-btn--secondary\" type=\"button\" (click)=\"close()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" type=\"button\" (click)=\"save()\" [disabled]=\"form.invalid\">\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content--presentation\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.add' + '.pageTitle' | i18n }}</h1>\n <div class=\"o-presentation-form-wrapper\">\n <form [formGroup]=\"form\" class=\"o-presentation-form\">\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_name\">{{ '@pry.presentation.form.name' | i18n }}</label>\n <input\n type=\"text\"\n id=\"presentation_name\"\n formControlName=\"name\"\n placeholder=\"{{ '@pry.presentation.form.name' | i18n }}\"\n class=\"a-form-field\"\n maxlength=\"50\"\n required\n />\n <label\n for=\"presentation_name\"\n *ngIf=\"form.get('name')?.touched && form.get('name')?.hasError('required')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.presentation.required' | i18n }}\n </label>\n <label\n for=\"presentation_name\"\n *ngIf=\"form.get('name')?.hasError('maxlength')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.presentation.maxLength' | i18n : { len: '50' } }}\n </label>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_description\">{{\n '@pry.presentation.form.description' | i18n\n }}</label>\n <textarea\n formControlName=\"description\"\n id=\"presentation_description\"\n name=\"description\"\n cols=\"30\"\n rows=\"5\"\n maxlength=\"200\"\n placeholder=\"{{ '@pry.presentation.form.description' | i18n }}\"\n class=\"a-form-field\"\n ></textarea>\n <label\n for=\"presentation_description\"\n *ngIf=\"form.get('description')?.hasError('maxlength')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.presentation.maxLength' | i18n : { len: '200' } }}\n </label>\n </div>\n <div class=\"m-form-label-field -width-full\" *ngIf=\"mode === 'theme'\">\n <label class=\"a-label\" for=\"presentation_theme\">{{ '@pry.presentation.form.theme' | i18n }}</label>\n <pry-select\n id=\"presentation_theme\"\n [items]=\"possibleThemes\"\n formControlName=\"theme\"\n [clearable]=\"true\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.presentation.form.image' | i18n }}</label>\n <div class=\"o-file-input\">\n <pry-select-image\n id=\"presentation_image\"\n (changed)=\"image = $event\"\n [iconUrl]=\"image\"\n [mode]=\"type\"\n ></pry-select-image>\n <pry-checkbox formControlName=\"cover\" name=\"cover\" ngDefaultControl>\n {{ '@pry.presentation.form.cover' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n <div class=\"m-form-label-field -width-full m-form-label-field--inline\">\n <label class=\"a-label\">{{ '@pry.presentation.form.grid' | i18n }}</label>\n <span class=\"a-label\">{{ '@pry.toolbox.layout.' + this.chosenLayout | i18n }}</span>\n <pry-select-grid-layout *ngIf=\"!edition\"></pry-select-grid-layout>\n </div>\n </form>\n <ng-container *ngIf=\"mode === 'meta'\">\n <div class=\"o-presentation__metadata-editor\" *ngIf=\"selectedPresentation$ | async as selectedPresentation\">\n <pry-metadata-editor\n [targetId]=\"selectedPresentation.id\"\n [isModification]=\"true\"\n [metadata]=\"selectedPresentation.metadata\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addMetadata($event)\"\n [type]=\"'meta'\"\n ></pry-metadata-editor>\n </div>\n </ng-container>\n </div>\n <button\n class=\"a-btn a-btn--primary\"\n (click)=\"configureDashboard(selectedPresentation$.value!)\"\n [disabled]=\"form.invalid\"\n >\n {{ '@pry.presentation.configuration' | i18n }}\n </button>\n </div>\n</div>\n" }]
|
|
180
|
+
args: [{ selector: 'pry-add-edit-presentation', template: "<div class=\"o-manifest-layout\">\n <div class=\"o-manifest-layout__toolbox\">\n <button class=\"a-btn a-btn--secondary\" type=\"button\" (click)=\"close()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" type=\"button\" (click)=\"save()\" [disabled]=\"form.invalid\">\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content--presentation\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.add' + '.pageTitle' | i18n }}</h1>\n <div class=\"o-presentation-form-wrapper\">\n <form [formGroup]=\"form\" class=\"o-presentation-form\">\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_name\">{{ '@pry.presentation.form.name' | i18n }}</label>\n <input\n type=\"text\"\n id=\"presentation_name\"\n formControlName=\"name\"\n placeholder=\"{{ '@pry.presentation.form.name' | i18n }}\"\n class=\"a-form-field\"\n maxlength=\"50\"\n required\n />\n <label\n for=\"presentation_name\"\n *ngIf=\"form.get('name')?.touched && form.get('name')?.hasError('required')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.presentation.required' | i18n }}\n </label>\n <label\n for=\"presentation_name\"\n *ngIf=\"form.get('name')?.hasError('maxlength')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.presentation.maxLength' | i18n : { len: '50' } }}\n </label>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_description\">{{\n '@pry.presentation.form.description' | i18n\n }}</label>\n <textarea\n formControlName=\"description\"\n id=\"presentation_description\"\n name=\"description\"\n cols=\"30\"\n rows=\"5\"\n maxlength=\"200\"\n placeholder=\"{{ '@pry.presentation.form.description' | i18n }}\"\n class=\"a-form-field\"\n ></textarea>\n <label\n for=\"presentation_description\"\n *ngIf=\"form.get('description')?.hasError('maxlength')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.presentation.maxLength' | i18n : { len: '200' } }}\n </label>\n </div>\n <div class=\"m-form-label-field -width-full\" *ngIf=\"mode === 'theme'\">\n <label class=\"a-label\" for=\"presentation_theme\">{{ '@pry.presentation.form.theme' | i18n }}</label>\n <pry-select\n id=\"presentation_theme\"\n [items]=\"possibleThemes\"\n formControlName=\"theme\"\n [clearable]=\"true\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.presentation.form.image' | i18n }}</label>\n <div class=\"o-file-input\">\n <pry-select-image\n id=\"presentation_image\"\n (changed)=\"image = $event\"\n [iconUrl]=\"image\"\n [mode]=\"type\"\n ></pry-select-image>\n <pry-checkbox formControlName=\"cover\" name=\"cover\" ngDefaultControl>\n {{ '@pry.presentation.form.cover' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n <div class=\"m-form-label-field -width-full m-form-label-field--inline\">\n <label class=\"a-label\">{{ '@pry.presentation.form.grid' | i18n }}</label>\n <span class=\"a-label\">{{ '@pry.toolbox.layout.' + this.chosenLayout | i18n }}</span>\n <pry-select-grid-layout *ngIf=\"!edition\"></pry-select-grid-layout>\n </div>\n </form>\n <ng-container *ngIf=\"mode === 'meta'\">\n <div class=\"o-presentation__metadata-editor\" *ngIf=\"selectedPresentation$ | async as selectedPresentation\">\n <pry-metadata-editor\n [targetId]=\"selectedPresentation.id\"\n [isModification]=\"true\"\n [metadata]=\"selectedPresentation.metadata ?? []\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addMetadata($event)\"\n [type]=\"'meta'\"\n ></pry-metadata-editor>\n </div>\n </ng-container>\n </div>\n <button\n class=\"a-btn a-btn--primary\"\n (click)=\"configureDashboard(selectedPresentation$.value!)\"\n [disabled]=\"form.invalid\"\n >\n {{ '@pry.presentation.configuration' | i18n }}\n </button>\n </div>\n</div>\n" }]
|
|
181
181
|
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i3.Router, decorators: [{
|
|
182
182
|
type: Optional
|
|
183
183
|
}] }]; }, propDecorators: { edition: [{
|
|
@@ -209,11 +209,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
209
209
|
|
|
210
210
|
class PryPresentationCssComponent {
|
|
211
211
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryPresentationCssComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
212
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PryPresentationCssComponent, selector: "pry-presentation-css", ngImport: i0, template: '', isInline: true, styles: ["pry-add-edit-presentation{height:100%}.o-manifest-layout__content--presentation{width:100%;display:flex;flex-direction:column;padding:20px;text-align:left}.o-manifest-layout__content--presentation .a-h1{line-height:38px;font-size:28px;text-align:left}.o-manifest-layout__content--presentation .a-btn{margin:0 auto}.o-manifest-layout__toolbox{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:.9375rem}.o-manifest-layout__toolbox .a-btn{border-radius:22px}.o-presentation-form-wrapper{display:flex;padding-bottom:.3125rem;gap:3rem}.o-presentation__metadata-editor{flex:1 50%}.o-presentation-form{display:flex;flex-direction:column;align-items:center;flex:1 50%}.o-presentation-form .a-presentation-form-input{padding:.25rem .75rem;margin-bottom:.75rem}.o-presentation-form .o-file-input{border:1px dashed black;display:flex;flex-direction:column;align-items:center;width:100%;padding:2.5rem 0;gap:15px}.o-presentation-form pry-select{width:100%}.o-presentation-form .a-btn[type=submit]{margin-top:20px}.a-presentation-title{padding:10px}\n", ".o-presentation{margin:0;padding:0}.o-presentation li{list-style:none}.o-manifest-layout__toolbox div:first-child{margin-left:auto}.o-manifest-layout__toolbox.-u-hidden{display:none}.o-manifest-
|
|
212
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PryPresentationCssComponent, selector: "pry-presentation-css", ngImport: i0, template: '', isInline: true, styles: ["pry-add-edit-presentation{height:100%}.o-manifest-layout__content--presentation{width:100%;display:flex;flex-direction:column;padding:20px;text-align:left}.o-manifest-layout__content--presentation .a-h1{line-height:38px;font-size:28px;text-align:left}.o-manifest-layout__content--presentation .a-btn{margin:0 auto}.o-manifest-layout__toolbox{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:.9375rem}.o-manifest-layout__toolbox .a-btn{border-radius:22px}.o-presentation-form-wrapper{display:flex;padding-bottom:.3125rem;gap:3rem}.o-presentation__metadata-editor{flex:1 50%}.o-presentation-form{display:flex;flex-direction:column;align-items:center;flex:1 50%}.o-presentation-form .a-presentation-form-input{padding:.25rem .75rem;margin-bottom:.75rem}.o-presentation-form .o-file-input{border:1px dashed black;display:flex;flex-direction:column;align-items:center;width:100%;padding:2.5rem 0;gap:15px}.o-presentation-form pry-select{width:100%}.o-presentation-form .a-btn[type=submit]{margin-top:20px}.a-presentation-title{padding:10px}\n", ".o-presentation{margin:0;padding:0}.o-presentation li{list-style:none}.o-manifest-layout__toolbox div:first-child{margin-left:auto}.o-manifest-layout__toolbox.-u-hidden{display:none}.o-manifest-layout__content{height:100%;overflow:auto}.o-manifest-layout__content .pointer{cursor:pointer}.pry-viewingpresentation{display:flex;overflow-y:scroll}.pry-viewingpresentation .o-manifest-layout__content,.pry-viewingpresentation .o-dashboard-widget{flex:100% 1 1}.o-presentation{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:1.875rem;padding:.25rem .25rem 1.25rem;overflow-y:visible}.o-presentation .a-h3{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.o-presentation__item{display:flex;flex-direction:column;align-items:stretch}.o-presentation__item:hover{cursor:pointer}.o-presentation__item:hover .o-presentation__item__footer pry-icon{visibility:visible;opacity:1}.o-presentation__item__image{cursor:pointer;overflow:hidden;height:6.875rem;display:flex;align-items:center;justify-content:center}.o-presentation__item__image img{width:100px}.o-presentation__item__image .is-full-width{width:100%;height:100%;object-fit:cover}.o-presentation__item__header{position:relative;display:flex;align-items:flex-start;justify-content:center;height:6.875rem}.o-presentation__item__header pry-icon.is-private{position:absolute;top:.625rem;left:.625rem}.o-presentation__item__header .a-tooltip{width:100%}.o-presentation__item__txt{flex-grow:1;padding:.625rem .9375rem;display:flex;flex-direction:column;justify-content:space-between}.o-presentation__item__txt .a-h3{font-size:.875rem}.o-presentation__item__txt .a-p{font-size:.8125rem}.o-presentation__item__txt .a-p.-date{margin-bottom:0}.o-presentation__item__title-container.a-tooltip[data-tooltip]:after{top:calc(100% - 15px)}.o-presentation__item__description-container{position:relative;width:100%;display:flex;align-content:center;min-height:1.25rem}.o-presentation__item__description-container.a-tooltip[data-tooltip]:after{width:100%}.o-presentation__item__description{width:100%;max-height:2.5rem}.o-presentation__item__footer{display:flex;align-content:center;justify-content:center;font-size:.875rem;line-height:1.125rem;padding:.1875rem 0;max-height:2.3125rem}.o-presentation__item__footer .a-btn{margin-left:1.25rem}.o-presentation__item__footer pry-icon{visibility:hidden;opacity:0;transition:visibility .1s linear,opacity .1s linear;margin-left:.1875rem}.o-presentation-consult{width:100%;padding:.9375rem}.more-button{position:absolute;top:.375rem;right:.625rem}.more-button .a-btn{padding:.125rem 0;border-radius:50%}.m-context-menu{position:absolute}\n"], encapsulation: i0.ViewEncapsulation.None }); }
|
|
213
213
|
}
|
|
214
214
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryPresentationCssComponent, decorators: [{
|
|
215
215
|
type: Component,
|
|
216
|
-
args: [{ selector: 'pry-presentation-css', template: '', encapsulation: ViewEncapsulation.None, styles: ["pry-add-edit-presentation{height:100%}.o-manifest-layout__content--presentation{width:100%;display:flex;flex-direction:column;padding:20px;text-align:left}.o-manifest-layout__content--presentation .a-h1{line-height:38px;font-size:28px;text-align:left}.o-manifest-layout__content--presentation .a-btn{margin:0 auto}.o-manifest-layout__toolbox{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:.9375rem}.o-manifest-layout__toolbox .a-btn{border-radius:22px}.o-presentation-form-wrapper{display:flex;padding-bottom:.3125rem;gap:3rem}.o-presentation__metadata-editor{flex:1 50%}.o-presentation-form{display:flex;flex-direction:column;align-items:center;flex:1 50%}.o-presentation-form .a-presentation-form-input{padding:.25rem .75rem;margin-bottom:.75rem}.o-presentation-form .o-file-input{border:1px dashed black;display:flex;flex-direction:column;align-items:center;width:100%;padding:2.5rem 0;gap:15px}.o-presentation-form pry-select{width:100%}.o-presentation-form .a-btn[type=submit]{margin-top:20px}.a-presentation-title{padding:10px}\n", ".o-presentation{margin:0;padding:0}.o-presentation li{list-style:none}.o-manifest-layout__toolbox div:first-child{margin-left:auto}.o-manifest-layout__toolbox.-u-hidden{display:none}.o-manifest-
|
|
216
|
+
args: [{ selector: 'pry-presentation-css', template: '', encapsulation: ViewEncapsulation.None, styles: ["pry-add-edit-presentation{height:100%}.o-manifest-layout__content--presentation{width:100%;display:flex;flex-direction:column;padding:20px;text-align:left}.o-manifest-layout__content--presentation .a-h1{line-height:38px;font-size:28px;text-align:left}.o-manifest-layout__content--presentation .a-btn{margin:0 auto}.o-manifest-layout__toolbox{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:.9375rem}.o-manifest-layout__toolbox .a-btn{border-radius:22px}.o-presentation-form-wrapper{display:flex;padding-bottom:.3125rem;gap:3rem}.o-presentation__metadata-editor{flex:1 50%}.o-presentation-form{display:flex;flex-direction:column;align-items:center;flex:1 50%}.o-presentation-form .a-presentation-form-input{padding:.25rem .75rem;margin-bottom:.75rem}.o-presentation-form .o-file-input{border:1px dashed black;display:flex;flex-direction:column;align-items:center;width:100%;padding:2.5rem 0;gap:15px}.o-presentation-form pry-select{width:100%}.o-presentation-form .a-btn[type=submit]{margin-top:20px}.a-presentation-title{padding:10px}\n", ".o-presentation{margin:0;padding:0}.o-presentation li{list-style:none}.o-manifest-layout__toolbox div:first-child{margin-left:auto}.o-manifest-layout__toolbox.-u-hidden{display:none}.o-manifest-layout__content{height:100%;overflow:auto}.o-manifest-layout__content .pointer{cursor:pointer}.pry-viewingpresentation{display:flex;overflow-y:scroll}.pry-viewingpresentation .o-manifest-layout__content,.pry-viewingpresentation .o-dashboard-widget{flex:100% 1 1}.o-presentation{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:1.875rem;padding:.25rem .25rem 1.25rem;overflow-y:visible}.o-presentation .a-h3{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.o-presentation__item{display:flex;flex-direction:column;align-items:stretch}.o-presentation__item:hover{cursor:pointer}.o-presentation__item:hover .o-presentation__item__footer pry-icon{visibility:visible;opacity:1}.o-presentation__item__image{cursor:pointer;overflow:hidden;height:6.875rem;display:flex;align-items:center;justify-content:center}.o-presentation__item__image img{width:100px}.o-presentation__item__image .is-full-width{width:100%;height:100%;object-fit:cover}.o-presentation__item__header{position:relative;display:flex;align-items:flex-start;justify-content:center;height:6.875rem}.o-presentation__item__header pry-icon.is-private{position:absolute;top:.625rem;left:.625rem}.o-presentation__item__header .a-tooltip{width:100%}.o-presentation__item__txt{flex-grow:1;padding:.625rem .9375rem;display:flex;flex-direction:column;justify-content:space-between}.o-presentation__item__txt .a-h3{font-size:.875rem}.o-presentation__item__txt .a-p{font-size:.8125rem}.o-presentation__item__txt .a-p.-date{margin-bottom:0}.o-presentation__item__title-container.a-tooltip[data-tooltip]:after{top:calc(100% - 15px)}.o-presentation__item__description-container{position:relative;width:100%;display:flex;align-content:center;min-height:1.25rem}.o-presentation__item__description-container.a-tooltip[data-tooltip]:after{width:100%}.o-presentation__item__description{width:100%;max-height:2.5rem}.o-presentation__item__footer{display:flex;align-content:center;justify-content:center;font-size:.875rem;line-height:1.125rem;padding:.1875rem 0;max-height:2.3125rem}.o-presentation__item__footer .a-btn{margin-left:1.25rem}.o-presentation__item__footer pry-icon{visibility:hidden;opacity:0;transition:visibility .1s linear,opacity .1s linear;margin-left:.1875rem}.o-presentation-consult{width:100%;padding:.9375rem}.more-button{position:absolute;top:.375rem;right:.625rem}.more-button .a-btn{padding:.125rem 0;border-radius:50%}.m-context-menu{position:absolute}\n"] }]
|
|
217
217
|
}] });
|
|
218
218
|
|
|
219
219
|
class PryPresentationComponent extends SubscriptionnerDirective {
|
|
@@ -235,6 +235,8 @@ class PryPresentationComponent extends SubscriptionnerDirective {
|
|
|
235
235
|
this.selectedPresentation$ = new BehaviorSubject(null);
|
|
236
236
|
this.selectedMode = ViewMode.CATALOG;
|
|
237
237
|
this.modalOpened = false;
|
|
238
|
+
this.visibility = { type: PryVisibilityType.PRIVATE };
|
|
239
|
+
this.PryVisibilityType = PryVisibilityType;
|
|
238
240
|
this.accessGroups = [];
|
|
239
241
|
this.editionStartUrl = '/';
|
|
240
242
|
this.consultStartUrl = '/';
|
|
@@ -255,7 +257,7 @@ class PryPresentationComponent extends SubscriptionnerDirective {
|
|
|
255
257
|
.select(DashboardSelectors.manifestsList)
|
|
256
258
|
.pipe(map((manifestList) => [...manifestList].sort((a, b) => a.modificationDate ? b.modificationDate.localeCompare(a.modificationDate) : 1))),
|
|
257
259
|
this.listOfManifests$
|
|
258
|
-
]).pipe(map(([dynamics, statics]) =>
|
|
260
|
+
]).pipe(map(([dynamics, statics]) => statics ?? dynamics));
|
|
259
261
|
this.staticManifest$ = this.store
|
|
260
262
|
.select(DashboardSelectors.staticManifest)
|
|
261
263
|
.pipe(map((staticM) => staticM.windows[0]));
|
|
@@ -273,9 +275,7 @@ class PryPresentationComponent extends SubscriptionnerDirective {
|
|
|
273
275
|
})));
|
|
274
276
|
this.subscriptions.add(this.store.select(DashboardSelectors.presentation).subscribe((presentation) => {
|
|
275
277
|
this.selectedMode = presentation?.viewMode ?? this.ViewMode.CATALOG;
|
|
276
|
-
|
|
277
|
-
this.selectedPresentation$.next(presentation.current ?? null);
|
|
278
|
-
}
|
|
278
|
+
this.selectedPresentation$.next(presentation.current ?? null);
|
|
279
279
|
}));
|
|
280
280
|
this.titleService.changeTitle('@pry.presentation.title');
|
|
281
281
|
}
|
|
@@ -298,6 +298,7 @@ class PryPresentationComponent extends SubscriptionnerDirective {
|
|
|
298
298
|
id: v4(),
|
|
299
299
|
name: '',
|
|
300
300
|
description: '',
|
|
301
|
+
visibility: { type: PryVisibilityType.PRIVATE },
|
|
301
302
|
groups: [],
|
|
302
303
|
owner: true
|
|
303
304
|
},
|
|
@@ -380,7 +381,8 @@ class PryPresentationComponent extends SubscriptionnerDirective {
|
|
|
380
381
|
name: presentation.name ?? '',
|
|
381
382
|
description: presentation.description ?? '',
|
|
382
383
|
image: presentation.image ?? '',
|
|
383
|
-
groups: this.accessGroups
|
|
384
|
+
groups: this.accessGroups,
|
|
385
|
+
visibility: this.visibility
|
|
384
386
|
}));
|
|
385
387
|
}
|
|
386
388
|
this.toggleModal(presentation);
|
|
@@ -397,12 +399,18 @@ class PryPresentationComponent extends SubscriptionnerDirective {
|
|
|
397
399
|
}
|
|
398
400
|
this.submit.nativeElement.focus();
|
|
399
401
|
}
|
|
402
|
+
editContent(selectedPresentation) {
|
|
403
|
+
this.store.dispatch(DashboardActions.loadPresentation({ presentation: selectedPresentation, viewMode: ViewMode.EDITION }));
|
|
404
|
+
this.ngZone.run(() => {
|
|
405
|
+
this.router?.navigateByUrl(this.consultStartUrl);
|
|
406
|
+
});
|
|
407
|
+
}
|
|
400
408
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryPresentationComponent, deps: [{ token: i1.Store }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i3.Router }, { token: i4.PryTitleService }, { token: i3.ActivatedRoute }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
401
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PryPresentationComponent, selector: "pry-presentation", inputs: { editionStartUrl: "editionStartUrl", consultStartUrl: "consultStartUrl", meAsOwner: "meAsOwner", mode: "mode", listOfManifests: "listOfManifests", hideToolbox: "hideToolbox", search: "search" }, viewQueries: [{ propertyName: "templateModalActions", first: true, predicate: ["modalActions"], descendants: true, read: TemplateRef }, { propertyName: "template", first: true, predicate: ["modal"], descendants: true, read: TemplateRef }, { propertyName: "openModal", first: true, predicate: ["openModal"], descendants: true }, { propertyName: "confirm", first: true, predicate: ["confirm"], descendants: true }, { propertyName: "submit", first: true, predicate: ["submit"], descendants: true }, { propertyName: "cross", first: true, predicate: ["cross"], descendants: true }, { propertyName: "crossVisibility", first: true, predicate: ["crossVisibility"], descendants: true }, { propertyName: "visibilityModal", first: true, predicate: ["visibilityModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\" [ngSwitch]=\"selectedMode\">\n <ng-container *ngSwitchDefault>\n <div class=\"o-manifest-layout__toolbox\" [class.-u-hidden]=\"hideToolbox\">\n <button\n class=\"a-btn a-btn--primary a-btn--icon-text a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.presentation.create' | i18n\"\n data-tooltip-position=\"bottom\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n {{ '@pry.context.create' | i18n }}\n </button>\n <div>\n <div class=\"o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon class=\"search-icon\" iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <ul class=\"o-presentation\">\n <li\n class=\"o-presentation__item\"\n *ngFor=\"let presentation of filteredPresentations$ | async; let index = index\"\n >\n <div class=\"o-presentation__item__header\">\n <ng-container *ngIf=\"presentation.groups.length === 0\">\n <pry-icon\n iconSvg=\"private\"\n class=\"is-private a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n </ng-container>\n <div\n class=\"a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <div class=\"o-presentation__item__image\">\n <img\n alt=\"\"\n [class.is-full-width]=\"presentation.cover\"\n [src]=\"presentation.image | getSecuredImage | async\"\n />\n </div>\n </div>\n <ng-container *ngIf=\"presentation.owner\">\n <div class=\"more-button\" *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip -tooltip-no-wrap\"\n [id]=\"'more-button-' + index\"\n [attr.data-tooltip]=\"'@pry.restitution.more' | i18n\"\n (click)=\"$event.stopPropagation(); toggleModalActions(presentation, button)\"\n #button\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n </ng-container>\n </div>\n <div class=\"o-presentation__item__txt\" (click)=\"fetch(presentation)\">\n <div class=\"o-presentation__item__title-container\" ellipsis textElementSelector=\".a-h3\">\n <h3 class=\"a-h3\">{{ presentation.name }}</h3>\n </div>\n <div class=\"o-presentation__item__description-container\" ellipsis textElementSelector=\".a-p\">\n <div class=\"o-presentation__item__description a-p\">\n {{ presentation.description }}\n </div>\n </div>\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n </div>\n <div\n class=\"o-presentation__item__footer a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <button class=\"a-btn\">\n {{ '@pry.presentation.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n </li>\n </ul>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.CREATION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n [mode]=\"mode\"\n ></pry-add-edit-presentation>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.EDITION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n [mode]=\"mode\"\n ></pry-add-edit-presentation>\n </ng-container>\n</div>\n\n<ng-template #modal>\n <div\n class=\"o-modal\"\n #visibilityModal\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog change visibility\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.toolbox.share' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #crossVisibility\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggleModal()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <pry-group-share [ngModel]=\"selectedPresentation.groups\" (ngModelChange)=\"accessGroups = $event\"></pry-group-share>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"toggleModal()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n #submit\n (keydown.tab)=\"focusCrossElement()\"\n (click)=\"changeVisibility(selectedPresentation)\"\n >\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n<ng-template #modalActions>\n <div class=\"m-context-menu\">\n <ul\n class=\"m-context-menu__list\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog presentation options\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.edition' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn -link-like\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n {{ '@pry.presentation.share' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n {{ '@pry.presentation.delete' | i18n }}\n </button>\n </li>\n </ul>\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "directive", type: i4.EllipsisDirective, selector: "[ellipsis]", inputs: ["textElementSelector"] }, { kind: "directive", type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i4.PryGroupShareComponent, selector: "pry-group-share" }, { kind: "directive", type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i6$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i6$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: PryAddEditPresentationComponent, selector: "pry-add-edit-presentation", inputs: ["edition", "editionStartUrl", "selectedPresentation", "mode"], outputs: ["goBack"] }, { kind: "component", type: PryPresentationCssComponent, selector: "pry-presentation-css" }, { kind: "pipe", type: i4.GetSecuredImagePipe, name: "getSecuredImage" }, { kind: "pipe", type: i9.PrySinceDatePipe, name: "sinceDate" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i6$1.AsyncPipe, name: "async" }] }); }
|
|
409
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PryPresentationComponent, selector: "pry-presentation", inputs: { editionStartUrl: "editionStartUrl", consultStartUrl: "consultStartUrl", meAsOwner: "meAsOwner", mode: "mode", listOfManifests: "listOfManifests", hideToolbox: "hideToolbox", search: "search" }, viewQueries: [{ propertyName: "templateModalActions", first: true, predicate: ["modalActions"], descendants: true, read: TemplateRef }, { propertyName: "template", first: true, predicate: ["modal"], descendants: true, read: TemplateRef }, { propertyName: "openModal", first: true, predicate: ["openModal"], descendants: true }, { propertyName: "confirm", first: true, predicate: ["confirm"], descendants: true }, { propertyName: "submit", first: true, predicate: ["submit"], descendants: true }, { propertyName: "cross", first: true, predicate: ["cross"], descendants: true }, { propertyName: "crossVisibility", first: true, predicate: ["crossVisibility"], descendants: true }, { propertyName: "visibilityModal", first: true, predicate: ["visibilityModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\" [ngSwitch]=\"selectedMode\">\n <ng-container *ngSwitchDefault>\n <div class=\"o-manifest-layout__toolbox\" [class.-u-hidden]=\"hideToolbox\">\n <button\n class=\"a-btn a-btn--primary a-btn--icon-text a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.presentation.create' | i18n\"\n data-tooltip-position=\"bottom\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n {{ '@pry.context.create' | i18n }}\n </button>\n <div>\n <div class=\"o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon class=\"search-icon\" iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <ul class=\"o-presentation\">\n <li\n class=\"o-presentation__item\"\n *ngFor=\"let presentation of filteredPresentations$ | async; let index = index\"\n >\n <div class=\"o-presentation__item__header\">\n <ng-container\n *ngIf=\"presentation.visibility ? presentation.visibility?.type === PryVisibilityType.PRIVATE : true\"\n >\n <pry-icon\n iconSvg=\"private\"\n class=\"is-private a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n </ng-container>\n <div\n class=\"a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <div class=\"o-presentation__item__image\">\n <img\n alt=\"\"\n [class.is-full-width]=\"presentation.cover\"\n [src]=\"presentation.image | getSecuredImage | async\"\n />\n </div>\n </div>\n <ng-container *ngIf=\"presentation.owner\">\n <div class=\"more-button\" *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip -tooltip-no-wrap\"\n [id]=\"'more-button-' + index\"\n [attr.data-tooltip]=\"'@pry.restitution.more' | i18n\"\n (click)=\"$event.stopPropagation(); toggleModalActions(presentation, button)\"\n #button\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n </ng-container>\n </div>\n <div class=\"o-presentation__item__txt\" (click)=\"fetch(presentation)\">\n <div class=\"o-presentation__item__title-container\" ellipsis textElementSelector=\".a-h3\">\n <h3 class=\"a-h3\">{{ presentation.name }}</h3>\n </div>\n <div class=\"o-presentation__item__description-container\" ellipsis textElementSelector=\".a-p\">\n <div class=\"o-presentation__item__description a-p\">\n {{ presentation.description }}\n </div>\n </div>\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n </div>\n <div\n class=\"o-presentation__item__footer a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <button class=\"a-btn\">\n {{ '@pry.presentation.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n </li>\n </ul>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.CREATION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n [mode]=\"mode\"\n ></pry-add-edit-presentation>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.EDITION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n [mode]=\"mode\"\n ></pry-add-edit-presentation>\n </ng-container>\n</div>\n\n<ng-template #modal>\n <div\n class=\"o-modal\"\n #visibilityModal\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog change visibility\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.toolbox.share' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #crossVisibility\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggleModal()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <pry-share [ngModel]=\"selectedPresentation.visibility\" (ngModelChange)=\"visibility = $event\"></pry-share>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"toggleModal()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n #submit\n (keydown.tab)=\"focusCrossElement()\"\n (click)=\"changeVisibility(selectedPresentation)\"\n >\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n<ng-template #modalActions>\n <div class=\"m-context-menu\">\n <ul\n class=\"m-context-menu__list\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog presentation options\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.edition' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"editContent(selectedPresentation)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.editionContent' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn -link-like\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n {{ '@pry.presentation.share' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n {{ '@pry.presentation.delete' | i18n }}\n </button>\n </li>\n </ul>\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "directive", type: i4.EllipsisDirective, selector: "[ellipsis]", inputs: ["textElementSelector"] }, { kind: "directive", type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i4.PryShareComponent, selector: "pry-share", inputs: ["value", "labelProperty", "valueProperty", "users$"] }, { kind: "directive", type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i6$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i6$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: PryAddEditPresentationComponent, selector: "pry-add-edit-presentation", inputs: ["edition", "editionStartUrl", "selectedPresentation", "mode"], outputs: ["goBack"] }, { kind: "component", type: PryPresentationCssComponent, selector: "pry-presentation-css" }, { kind: "pipe", type: i4.GetSecuredImagePipe, name: "getSecuredImage" }, { kind: "pipe", type: i9.PrySinceDatePipe, name: "sinceDate" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i6$1.AsyncPipe, name: "async" }] }); }
|
|
402
410
|
}
|
|
403
411
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryPresentationComponent, decorators: [{
|
|
404
412
|
type: Component,
|
|
405
|
-
args: [{ selector: 'pry-presentation', template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\" [ngSwitch]=\"selectedMode\">\n <ng-container *ngSwitchDefault>\n <div class=\"o-manifest-layout__toolbox\" [class.-u-hidden]=\"hideToolbox\">\n <button\n class=\"a-btn a-btn--primary a-btn--icon-text a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.presentation.create' | i18n\"\n data-tooltip-position=\"bottom\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n {{ '@pry.context.create' | i18n }}\n </button>\n <div>\n <div class=\"o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon class=\"search-icon\" iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <ul class=\"o-presentation\">\n <li\n class=\"o-presentation__item\"\n *ngFor=\"let presentation of filteredPresentations$ | async; let index = index\"\n >\n <div class=\"o-presentation__item__header\">\n <ng-container
|
|
413
|
+
args: [{ selector: 'pry-presentation', template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\" [ngSwitch]=\"selectedMode\">\n <ng-container *ngSwitchDefault>\n <div class=\"o-manifest-layout__toolbox\" [class.-u-hidden]=\"hideToolbox\">\n <button\n class=\"a-btn a-btn--primary a-btn--icon-text a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.presentation.create' | i18n\"\n data-tooltip-position=\"bottom\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n {{ '@pry.context.create' | i18n }}\n </button>\n <div>\n <div class=\"o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon class=\"search-icon\" iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <ul class=\"o-presentation\">\n <li\n class=\"o-presentation__item\"\n *ngFor=\"let presentation of filteredPresentations$ | async; let index = index\"\n >\n <div class=\"o-presentation__item__header\">\n <ng-container\n *ngIf=\"presentation.visibility ? presentation.visibility?.type === PryVisibilityType.PRIVATE : true\"\n >\n <pry-icon\n iconSvg=\"private\"\n class=\"is-private a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n </ng-container>\n <div\n class=\"a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <div class=\"o-presentation__item__image\">\n <img\n alt=\"\"\n [class.is-full-width]=\"presentation.cover\"\n [src]=\"presentation.image | getSecuredImage | async\"\n />\n </div>\n </div>\n <ng-container *ngIf=\"presentation.owner\">\n <div class=\"more-button\" *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip -tooltip-no-wrap\"\n [id]=\"'more-button-' + index\"\n [attr.data-tooltip]=\"'@pry.restitution.more' | i18n\"\n (click)=\"$event.stopPropagation(); toggleModalActions(presentation, button)\"\n #button\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n </ng-container>\n </div>\n <div class=\"o-presentation__item__txt\" (click)=\"fetch(presentation)\">\n <div class=\"o-presentation__item__title-container\" ellipsis textElementSelector=\".a-h3\">\n <h3 class=\"a-h3\">{{ presentation.name }}</h3>\n </div>\n <div class=\"o-presentation__item__description-container\" ellipsis textElementSelector=\".a-p\">\n <div class=\"o-presentation__item__description a-p\">\n {{ presentation.description }}\n </div>\n </div>\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n </div>\n <div\n class=\"o-presentation__item__footer a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <button class=\"a-btn\">\n {{ '@pry.presentation.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n </li>\n </ul>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.CREATION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n [mode]=\"mode\"\n ></pry-add-edit-presentation>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.EDITION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n [mode]=\"mode\"\n ></pry-add-edit-presentation>\n </ng-container>\n</div>\n\n<ng-template #modal>\n <div\n class=\"o-modal\"\n #visibilityModal\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog change visibility\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.toolbox.share' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #crossVisibility\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggleModal()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <pry-share [ngModel]=\"selectedPresentation.visibility\" (ngModelChange)=\"visibility = $event\"></pry-share>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"toggleModal()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n #submit\n (keydown.tab)=\"focusCrossElement()\"\n (click)=\"changeVisibility(selectedPresentation)\"\n >\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n<ng-template #modalActions>\n <div class=\"m-context-menu\">\n <ul\n class=\"m-context-menu__list\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog presentation options\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.edition' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"editContent(selectedPresentation)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.editionContent' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn -link-like\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n {{ '@pry.presentation.share' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n {{ '@pry.presentation.delete' | i18n }}\n </button>\n </li>\n </ul>\n </div>\n</ng-template>\n" }]
|
|
406
414
|
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Overlay }, { type: i0.ViewContainerRef }, { type: i3.Router }, { type: i4.PryTitleService }, { type: i3.ActivatedRoute }, { type: i0.NgZone }]; }, propDecorators: { templateModalActions: [{
|
|
407
415
|
type: ViewChild,
|
|
408
416
|
args: ['modalActions', { read: TemplateRef }]
|
|
@@ -479,6 +487,7 @@ const enTranslations = {
|
|
|
479
487
|
required: 'This field is required',
|
|
480
488
|
maxLength: 'Allowed length : {{len}}',
|
|
481
489
|
edition: 'Edit',
|
|
490
|
+
editionContent: 'Edit content',
|
|
482
491
|
delete: 'Delete',
|
|
483
492
|
backToCatalog: 'Back to catalog',
|
|
484
493
|
search: 'Search',
|
|
@@ -523,7 +532,8 @@ const frTranslations = {
|
|
|
523
532
|
configuration: 'Construire le tableau de bord',
|
|
524
533
|
required: 'Ce champ est requis',
|
|
525
534
|
maxLength: 'Nombre de caractères autorisés : {{len}}',
|
|
526
|
-
edition: '
|
|
535
|
+
edition: 'Modifier',
|
|
536
|
+
editionContent: 'Modifier la composition',
|
|
527
537
|
delete: 'Supprimer',
|
|
528
538
|
backToCatalog: 'Revenir au catalogue',
|
|
529
539
|
search: 'Rechercher',
|