From 0b950073aa2d0cc404611dc1f5ee2c1363743329 Mon Sep 17 00:00:00 2001 From: Jalinson Diaz Date: Mon, 11 Dec 2023 11:49:14 -0300 Subject: [PATCH] feat(edit-ema): Add copy url and api link buttons (#26905) #26846 * dev (dot-ema): add language selector to toolbar * dev (edit ema language selector): small styles tweaks * Update edit-ema-toolbar.component.scss * test (dot ema toolbar): add missing test cases * dev (dot ema language selector): add iso to language * dev (overlay panel): fix shadow * fix format for languages that doesn't have country code * dev (dot ema): refactor to change the approach of changing languages * fix broken test * dev (dot-ema): solve feedback * dev (dot-ema): add const * Update edit-ema-language-selector.component.ts * dev (general): move dot avatar and use it in new persona selector * dev (dot-ema): add basic flow for changing personas * dev (dot-ema): add flow for persona change and save * dev (dot-ema): get persona tag from nextJS * just styling dummy buttons * dev (dot-ema): Refactor to have a better handling in persona selection * dev (persona selector): selected item is just used for autocomplete in multiple mode * dev (persona-selector): add tests cases * update mocked buttons * Update core-web/libs/portlets/dot-ema/src/lib/components/edit-ema-persona-selector/edit-ema-persona-selector.component.spec.ts Co-authored-by: Freddy Montes <751424+fmontes@users.noreply.github.com> * Update core-web/libs/portlets/dot-ema/src/lib/components/edit-ema-persona-selector/edit-ema-persona-selector.component.spec.ts Co-authored-by: Freddy Montes <751424+fmontes@users.noreply.github.com> * Update core-web/libs/portlets/dot-ema/src/lib/components/edit-ema-persona-selector/edit-ema-persona-selector.component.spec.ts Co-authored-by: Freddy Montes <751424+fmontes@users.noreply.github.com> * Update core-web/libs/portlets/dot-ema/src/lib/components/edit-ema-persona-selector/edit-ema-persona-selector.component.ts Co-authored-by: Freddy Montes <751424+fmontes@users.noreply.github.com> * Update core-web/libs/portlets/dot-ema/src/lib/components/edit-ema-persona-selector/edit-ema-persona-selector.component.ts Co-authored-by: Freddy Montes <751424+fmontes@users.noreply.github.com> * Update core-web/libs/portlets/dot-ema/src/lib/services/dot-page-api.service.ts Co-authored-by: Freddy Montes <751424+fmontes@users.noreply.github.com> * solve feedback * make vm$ null unless we have data to prevent bad requests * solve feedback * dev (persona selector): cleaning * dev (persona selector): reset the value when rejecting * remove todos from scoped PR * Update toolbar styles and button size * Update persona selector * Imported necessary modules and fixed imports * Update tests * Fix tests * Fix cd in listbox * fix avatar bug on persona selector * fix avatar bug on persona selector * language selector now works as persona selector * last cleanup * dev (dot-ema): Add button to copy page url and to go to api response * fix race condition on personalization * solve feedback --------- Co-authored-by: Freddy Montes <751424+fmontes@users.noreply.github.com> --- .../edit-ema-language-selector.component.ts | 4 +- .../edit-ema-persona-selector.component.ts | 4 +- .../src/lib/feature/dot-ema.component.html | 42 +++++++--- .../src/lib/feature/dot-ema.component.scss | 6 ++ .../src/lib/feature/dot-ema.component.spec.ts | 78 ++++++++++++++++--- .../src/lib/feature/dot-ema.component.ts | 31 ++++++-- .../lib/feature/store/dot-ema.store.spec.ts | 50 ++++++++++-- .../src/lib/feature/store/dot-ema.store.ts | 66 +++++++++------- .../src/lib/services/dot-page-api.service.ts | 11 ++- .../portlets/dot-ema/src/lib/shared/consts.ts | 2 + 10 files changed, 221 insertions(+), 73 deletions(-) diff --git a/core-web/libs/portlets/dot-ema/src/lib/components/edit-ema-language-selector/edit-ema-language-selector.component.ts b/core-web/libs/portlets/dot-ema/src/lib/components/edit-ema-language-selector/edit-ema-language-selector.component.ts index 1c0cf2674837..03c6eb843111 100644 --- a/core-web/libs/portlets/dot-ema/src/lib/components/edit-ema-language-selector/edit-ema-language-selector.component.ts +++ b/core-web/libs/portlets/dot-ema/src/lib/components/edit-ema-language-selector/edit-ema-language-selector.component.ts @@ -1,6 +1,7 @@ import { CommonModule } from '@angular/common'; import { AfterViewInit, + ChangeDetectionStrategy, Component, EventEmitter, Input, @@ -27,7 +28,8 @@ interface DotLanguageWithLabel extends DotLanguage { standalone: true, imports: [CommonModule, OverlayPanelModule, ListboxModule, ButtonModule], templateUrl: './edit-ema-language-selector.component.html', - styleUrls: ['./edit-ema-language-selector.component.scss'] + styleUrls: ['./edit-ema-language-selector.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush }) export class EmaLanguageSelectorComponent implements AfterViewInit { @ViewChild('listbox') listbox: Listbox; diff --git a/core-web/libs/portlets/dot-ema/src/lib/components/edit-ema-persona-selector/edit-ema-persona-selector.component.ts b/core-web/libs/portlets/dot-ema/src/lib/components/edit-ema-persona-selector/edit-ema-persona-selector.component.ts index 9a150a1e5a43..19b4066c9408 100644 --- a/core-web/libs/portlets/dot-ema/src/lib/components/edit-ema-persona-selector/edit-ema-persona-selector.component.ts +++ b/core-web/libs/portlets/dot-ema/src/lib/components/edit-ema-persona-selector/edit-ema-persona-selector.component.ts @@ -3,6 +3,7 @@ import { Observable, of } from 'rxjs'; import { CommonModule } from '@angular/common'; import { AfterViewInit, + ChangeDetectionStrategy, Component, EventEmitter, Input, @@ -41,7 +42,8 @@ import { DotPageApiService } from '../../services/dot-page-api.service'; FormsModule ], templateUrl: './edit-ema-persona-selector.component.html', - styleUrls: ['./edit-ema-persona-selector.component.scss'] + styleUrls: ['./edit-ema-persona-selector.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush }) export class EditEmaPersonaSelectorComponent implements OnInit, AfterViewInit { @ViewChild('listbox') listbox: Listbox; diff --git a/core-web/libs/portlets/dot-ema/src/lib/feature/dot-ema.component.html b/core-web/libs/portlets/dot-ema/src/lib/feature/dot-ema.component.html index 6d66b6f39c35..e3765f64b4d5 100644 --- a/core-web/libs/portlets/dot-ema/src/lib/feature/dot-ema.component.html +++ b/core-web/libs/portlets/dot-ema/src/lib/feature/dot-ema.component.html @@ -1,20 +1,35 @@ - + - - + + + @@ -23,18 +38,20 @@
+
+ - + + diff --git a/core-web/libs/portlets/dot-ema/src/lib/feature/dot-ema.component.scss b/core-web/libs/portlets/dot-ema/src/lib/feature/dot-ema.component.scss index a4a92cb9042f..4945c0f28a74 100644 --- a/core-web/libs/portlets/dot-ema/src/lib/feature/dot-ema.component.scss +++ b/core-web/libs/portlets/dot-ema/src/lib/feature/dot-ema.component.scss @@ -11,6 +11,12 @@ padding-top: $spacing-3; } + a, + a:focus, + a:active { + text-decoration: none; + } + ::ng-deep { .p-dialog { .p-dialog-content { diff --git a/core-web/libs/portlets/dot-ema/src/lib/feature/dot-ema.component.spec.ts b/core-web/libs/portlets/dot-ema/src/lib/feature/dot-ema.component.spec.ts index 91ec86a79a21..aa558c863f59 100644 --- a/core-web/libs/portlets/dot-ema/src/lib/feature/dot-ema.component.spec.ts +++ b/core-web/libs/portlets/dot-ema/src/lib/feature/dot-ema.component.spec.ts @@ -8,7 +8,7 @@ import { By } from '@angular/platform-browser'; import { Router } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; -import { ConfirmationService } from 'primeng/api'; +import { ConfirmationService, MessageService } from 'primeng/api'; import { DotLanguagesService, DotMessageService, DotPersonalizeService } from '@dotcms/data-access'; import { @@ -23,7 +23,7 @@ import { EditEmaStore } from './store/dot-ema.store'; import { EmaLanguageSelectorComponent } from '../components/edit-ema-language-selector/edit-ema-language-selector.component'; import { EditEmaPersonaSelectorComponent } from '../components/edit-ema-persona-selector/edit-ema-persona-selector.component'; import { DotPageApiService } from '../services/dot-page-api.service'; -import { DEFAULT_PERSONA, WINDOW } from '../shared/consts'; +import { DEFAULT_PERSONA, HOST, WINDOW } from '../shared/consts'; import { NG_CUSTOM_EVENTS } from '../shared/enums'; import { AddContentletPayload } from '../shared/models'; @@ -45,6 +45,7 @@ describe('DotEmaComponent', () => { imports: [RouterTestingModule, HttpClientTestingModule], detectChanges: false, componentProviders: [ + MessageService, EditEmaStore, ConfirmationService, { provide: DotLanguagesService, useValue: new DotLanguagesServiceMock() }, @@ -141,6 +142,58 @@ describe('DotEmaComponent', () => { expect(store.load).toHaveBeenCalledWith(mockQueryParams); }); + describe('toast', () => { + it('should trigger messageService when clicking on ema-copy-url', () => { + spectator.detectChanges(); + + const messageService = spectator.inject(MessageService, true); + const messageServiceSpy = jest.spyOn(messageService, 'add'); + spectator.detectChanges(); + + const button = spectator.debugElement.query(By.css('[data-testId="ema-copy-url"]')); + + spectator.triggerEventHandler(button, 'cdkCopyToClipboardCopied', {}); + + expect(messageServiceSpy).toHaveBeenCalledWith({ + severity: 'success', + summary: 'Copied', + life: 3000 + }); + }); + + it("should open a toast when messageService's add is called", () => { + spectator.detectChanges(); + + const button = spectator.debugElement.query(By.css('[data-testId="ema-copy-url"]')); + + spectator.triggerEventHandler(button, 'cdkCopyToClipboardCopied', {}); + + const toastItem = spectator.query('p-toastitem'); + + expect(toastItem).not.toBeNull(); + }); + }); + + describe('API URL', () => { + it('should have the url setted with the current language and persona', () => { + spectator.detectChanges(); + + const button = spectator.debugElement.query(By.css('[data-testId="ema-api-link"]')); + + expect(button.nativeElement.href).toBe( + 'http://localhost/api/v1/page/json/page-one?language_id=1&com.dotmarketing.persona.id=modes.persona.no.persona' + ); + }); + + it('should open a new tab', () => { + spectator.detectChanges(); + + const button = spectator.debugElement.query(By.css('[data-testId="ema-api-link"]')); + + expect(button.nativeElement.target).toBe('_blank'); + }); + }); + describe('language selector', () => { it('should have a language selector', () => { spectator.detectChanges(); @@ -223,7 +276,8 @@ describe('DotEmaComponent', () => { }); expect(iframe.nativeElement.src).toBe( - 'http://localhost:3000/my-awesome-route?language_id=2&com.dotmarketing.persona.id=modes.persona.no.persona' + HOST + + '/my-awesome-route?language_id=2&com.dotmarketing.persona.id=modes.persona.no.persona' ); }); @@ -238,7 +292,7 @@ describe('DotEmaComponent', () => { window.dispatchEvent( new MessageEvent('message', { - origin: 'http://localhost:3000', + origin: HOST, data: { action: 'delete-contentlet', payload: { @@ -292,7 +346,7 @@ describe('DotEmaComponent', () => { window.dispatchEvent( new MessageEvent('message', { - origin: 'http://localhost:3000', + origin: HOST, data: { action: 'add-contentlet', payload: { @@ -361,7 +415,7 @@ describe('DotEmaComponent', () => { window.dispatchEvent( new MessageEvent('message', { - origin: 'http://localhost:3000', + origin: HOST, data: { action: 'edit-contentlet', payload: { @@ -434,7 +488,7 @@ describe('DotEmaComponent', () => { window.dispatchEvent( new MessageEvent('message', { - origin: 'http://localhost:3000', + origin: HOST, data: { action: 'edit-contentlet', payload: { @@ -481,7 +535,7 @@ describe('DotEmaComponent', () => { window.dispatchEvent( new MessageEvent('message', { - origin: 'http://localhost:3000', + origin: HOST, data: { action: 'edit-contentlet', payload: { @@ -502,7 +556,7 @@ describe('DotEmaComponent', () => { window.dispatchEvent( new MessageEvent('message', { - origin: 'http://localhost:3000', + origin: HOST, data: { action: 'edit-contentlet', payload: { @@ -536,7 +590,7 @@ describe('DotEmaComponent', () => { window.dispatchEvent( new MessageEvent('message', { - origin: 'http://localhost:3000', + origin: HOST, data: { action: 'edit-contentlet', payload: { @@ -587,7 +641,7 @@ describe('DotEmaComponent', () => { window.dispatchEvent( new MessageEvent('message', { - origin: 'http://localhost:3000', + origin: HOST, data: { action: 'set-url', payload: { @@ -608,7 +662,7 @@ describe('DotEmaComponent', () => { window.dispatchEvent( new MessageEvent('message', { - origin: 'http://localhost:3000', + origin: HOST, data: { action: 'edit-contentlet', payload: { diff --git a/core-web/libs/portlets/dot-ema/src/lib/feature/dot-ema.component.ts b/core-web/libs/portlets/dot-ema/src/lib/feature/dot-ema.component.ts index 7e4907e75cd9..a0064ee6d674 100644 --- a/core-web/libs/portlets/dot-ema/src/lib/feature/dot-ema.component.ts +++ b/core-web/libs/portlets/dot-ema/src/lib/feature/dot-ema.component.ts @@ -1,5 +1,6 @@ import { Subject, fromEvent } from 'rxjs'; +import { ClipboardModule } from '@angular/cdk/clipboard'; import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, @@ -14,15 +15,16 @@ import { import { FormsModule } from '@angular/forms'; import { ActivatedRoute, Params, Router } from '@angular/router'; -import { ConfirmationService } from 'primeng/api'; +import { ConfirmationService, MessageService } from 'primeng/api'; import { ConfirmDialogModule } from 'primeng/confirmdialog'; import { DialogModule } from 'primeng/dialog'; +import { ToastModule } from 'primeng/toast'; import { takeUntil } from 'rxjs/operators'; import { DotLanguagesService, DotMessageService, DotPersonalizeService } from '@dotcms/data-access'; import { DotCMSContentlet, DotPersona } from '@dotcms/dotcms-models'; -import { DotSpinnerModule, SafeUrlPipe } from '@dotcms/ui'; +import { DotMessagePipe, DotSpinnerModule, SafeUrlPipe } from '@dotcms/ui'; import { EditEmaStore } from './store/dot-ema.store'; @@ -30,7 +32,7 @@ import { EmaLanguageSelectorComponent } from '../components/edit-ema-language-se import { EditEmaPersonaSelectorComponent } from '../components/edit-ema-persona-selector/edit-ema-persona-selector.component'; import { EditEmaToolbarComponent } from '../components/edit-ema-toolbar/edit-ema-toolbar.component'; import { DotPageApiService } from '../services/dot-page-api.service'; -import { DEFAULT_LANGUAGE_ID, DEFAULT_PERSONA, DEFAULT_URL, WINDOW } from '../shared/consts'; +import { DEFAULT_LANGUAGE_ID, DEFAULT_PERSONA, DEFAULT_URL, HOST, WINDOW } from '../shared/consts'; import { CUSTOMER_ACTIONS, NG_CUSTOM_EVENTS, NOTIFY_CUSTOMER } from '../shared/enums'; import { AddContentletPayload, DeleteContentletPayload, SetUrlPayload } from '../shared/models'; import { deleteContentletFromContainer, insertContentletInContainer } from '../utils'; @@ -47,7 +49,10 @@ import { deleteContentletFromContainer, insertContentletInContainer } from '../u ConfirmDialogModule, EditEmaToolbarComponent, EmaLanguageSelectorComponent, - EditEmaPersonaSelectorComponent + EditEmaPersonaSelectorComponent, + ClipboardModule, + ToastModule, + DotMessagePipe ], providers: [ EditEmaStore, @@ -55,6 +60,7 @@ import { deleteContentletFromContainer, insertContentletInContainer } from '../u ConfirmationService, DotLanguagesService, DotPersonalizeService, + MessageService, { provide: WINDOW, useValue: window @@ -77,11 +83,14 @@ export class DotEmaComponent implements OnInit, OnDestroy { private readonly dotMessageService = inject(DotMessageService); private readonly confirmationService = inject(ConfirmationService); private readonly personalizeService = inject(DotPersonalizeService); + private readonly messageService = inject(MessageService); - private savePayload: AddContentletPayload; + readonly dialogState$ = this.store.dialogState$; + readonly editorState$ = this.store.editorState$; + + readonly host = HOST; - readonly host = 'http://localhost:3000'; - readonly vm$ = this.store.vm$; + private savePayload: AddContentletPayload; constructor(@Inject(WINDOW) private window: Window) {} @@ -191,6 +200,14 @@ export class DotEmaComponent implements OnInit, OnDestroy { } } + triggerCopyToast() { + this.messageService.add({ + severity: 'success', + summary: this.dotMessageService.get('Copied'), + life: 3000 + }); + } + /** * Handle the custom events from the iframe * diff --git a/core-web/libs/portlets/dot-ema/src/lib/feature/store/dot-ema.store.spec.ts b/core-web/libs/portlets/dot-ema/src/lib/feature/store/dot-ema.store.spec.ts index 2553d5f25164..fef721ea4b33 100644 --- a/core-web/libs/portlets/dot-ema/src/lib/feature/store/dot-ema.store.spec.ts +++ b/core-web/libs/portlets/dot-ema/src/lib/feature/store/dot-ema.store.spec.ts @@ -4,7 +4,7 @@ import { of } from 'rxjs'; import { EditEmaStore } from './dot-ema.store'; import { DotPageApiService } from '../../services/dot-page-api.service'; -import { EDIT_CONTENTLET_URL } from '../../shared/consts'; +import { DEFAULT_PERSONA, EDIT_CONTENTLET_URL } from '../../shared/consts'; describe('EditEmaStore', () => { let spectator: SpectatorService; @@ -16,11 +16,12 @@ describe('EditEmaStore', () => { beforeEach(() => (spectator = createService())); describe('selectors', () => { - it('should return iframe url', (done) => { + it('should return editorState', (done) => { const dotPageApiService = spectator.inject(DotPageApiService); const mockResponse = { page: { - title: 'Test Page' + title: 'Test Page', + identifier: '123' }, viewAs: { language: { @@ -31,7 +32,7 @@ describe('EditEmaStore', () => { country: '' }, persona: { - identifier: '123' + ...DEFAULT_PERSONA } } }; @@ -39,13 +40,46 @@ describe('EditEmaStore', () => { spectator.service.load({ language_id: '1', url: 'test-url', persona_id: '123' }); - spectator.service.iframeUrl$.subscribe((url) => { - expect(url).toEqual( - 'http://localhost:3000/test-url?language_id=1&com.dotmarketing.persona.id=123' - ); + spectator.service.editorState$.subscribe((state) => { + expect(state as unknown).toEqual({ + apiURL: 'http://localhost/api/v1/page/json/test-url?language_id=1&com.dotmarketing.persona.id=modes.persona.no.persona', + editor: { + page: { identifier: '123', title: 'Test Page' }, + viewAs: { + language: { + country: '', + countryCode: '', + id: 1, + language: '', + languageCode: '' + }, + persona: { + ...DEFAULT_PERSONA + } + } + }, + iframeURL: + 'http://localhost:3000/test-url?language_id=1&com.dotmarketing.persona.id=modes.persona.no.persona' + }); done(); }); }); + + it('should return the dialogState', () => { + spectator.service.setDialogIframeURL('test-url'); + spectator.service.setDialogVisible(true); + spectator.service.setDialogHeader('test'); + spectator.service.setDialogIframeLoading(true); + + spectator.service.dialogState$.subscribe((state) => { + expect(state).toEqual({ + dialogIframeURL: 'test-url', + dialogVisible: true, + dialogHeader: 'test', + dialogIframeLoading: true + }); + }); + }); }); describe('updaters', () => { diff --git a/core-web/libs/portlets/dot-ema/src/lib/feature/store/dot-ema.store.ts b/core-web/libs/portlets/dot-ema/src/lib/feature/store/dot-ema.store.ts index 64a7264286dd..dde5eca230c6 100644 --- a/core-web/libs/portlets/dot-ema/src/lib/feature/store/dot-ema.store.ts +++ b/core-web/libs/portlets/dot-ema/src/lib/feature/store/dot-ema.store.ts @@ -10,7 +10,12 @@ import { DotPageApiResponse, DotPageApiService } from '../../services/dot-page-api.service'; -import { ADD_CONTENTLET_URL, DEFAULT_PERSONA, EDIT_CONTENTLET_URL } from '../../shared/consts'; +import { + ADD_CONTENTLET_URL, + DEFAULT_PERSONA, + EDIT_CONTENTLET_URL, + HOST +} from '../../shared/consts'; import { SavePagePayload } from '../../shared/models'; export interface EditEmaState { @@ -49,41 +54,40 @@ export class EditEmaStore extends ComponentStore { }); } - readonly iframeUrl$: Observable = this.select( - ({ url, editor }) => - `http://localhost:3000/${url}?language_id=${ - editor.viewAs.language.id - }&com.dotmarketing.persona.id=${ - editor.viewAs.persona?.identifier ?? DEFAULT_PERSONA.identifier - }` - ); - readonly language_id$: Observable = this.select( - (state) => state.editor.viewAs.language.id - ); - readonly url$: Observable = this.select((state) => state.url); - readonly pageTitle$: Observable = this.select((state) => state.editor.page.title); - readonly editIframeURL$: Observable = this.select((state) => state.dialogIframeURL); - readonly editor$: Observable = this.select((state) => state.editor); + readonly editorState$ = this.select((state) => { + const pageURL = this.createPageURL({ + url: state.url, + language_id: state.editor.viewAs.language.id.toString(), + persona_id: state.editor.viewAs.persona?.identifier ?? DEFAULT_PERSONA.identifier + }); - readonly vm$ = this.select((state) => { return state.editor.page.identifier ? { - iframeUrl: `http://localhost:3000/${state.url}?language_id=${ - state.editor.viewAs.language.id - }&com.dotmarketing.persona.id=${ - state.editor.viewAs.persona?.identifier ?? DEFAULT_PERSONA.identifier - }`, - pageTitle: state.editor.page.title, - dialogIframeURL: state.dialogIframeURL, - dialogVisible: state.dialogVisible, - dialogHeader: state.dialogHeader, - dialogIframeLoading: state.dialogIframeLoading, - editor: state.editor, - selectedPersona: state.editor.viewAs.persona ?? DEFAULT_PERSONA + apiURL: `${window.location.origin}/api/v1/page/json/${pageURL}`, + iframeURL: `${HOST}/${pageURL}`, + editor: { + ...state.editor, + viewAs: { + ...state.editor.viewAs, + persona: state.editor.viewAs.persona ?? DEFAULT_PERSONA + } + } } : null; // Don't return anything unless we have page data }); + readonly dialogState$ = this.select( + (state) => + state.editor.page.identifier + ? { + dialogIframeURL: state.dialogIframeURL, + dialogVisible: state.dialogVisible, + dialogHeader: state.dialogHeader, + dialogIframeLoading: state.dialogIframeLoading + } + : null // Don't return anything unless we have page data + ); + /** * Load the page editor * @@ -226,4 +230,8 @@ export class EditEmaStore extends ComponentStore { acceptTypes ); } + + private createPageURL({ url, language_id, persona_id }: DotPageApiParams): string { + return `${url}?language_id=${language_id}&com.dotmarketing.persona.id=${persona_id}`; + } } diff --git a/core-web/libs/portlets/dot-ema/src/lib/services/dot-page-api.service.ts b/core-web/libs/portlets/dot-ema/src/lib/services/dot-page-api.service.ts index 6f7d4b44f2f5..f2984f74d591 100644 --- a/core-web/libs/portlets/dot-ema/src/lib/services/dot-page-api.service.ts +++ b/core-web/libs/portlets/dot-ema/src/lib/services/dot-page-api.service.ts @@ -85,8 +85,13 @@ export class DotPageApiService { * @return {*} {Observable} * @memberof DotPageApiService */ - getPersonas(personaParams: GetPersonasParams): Observable { - const url = this.getPersonasURL(personaParams); + getPersonas({ + pageID, + filter, + page, + perPage = 10 + }: GetPersonasParams): Observable { + const url = this.getPersonasURL({ pageID, filter, page, perPage }); return this.http.get<{ entity: DotPersona[]; pagination: PaginationData }>(url).pipe( map((res: { entity: DotPersona[]; pagination: PaginationData }) => ({ @@ -96,7 +101,7 @@ export class DotPageApiService { ); } - private getPersonasURL({ pageID, filter, page, perPage = 10 }: GetPersonasParams): string { + private getPersonasURL({ pageID, filter, page, perPage }: GetPersonasParams): string { const apiUrl = `/api/v1/page/${pageID}/personas?`; const queryParams = new URLSearchParams({ diff --git a/core-web/libs/portlets/dot-ema/src/lib/shared/consts.ts b/core-web/libs/portlets/dot-ema/src/lib/shared/consts.ts index 5e20f66e02eb..95fb2d7ed526 100644 --- a/core-web/libs/portlets/dot-ema/src/lib/shared/consts.ts +++ b/core-web/libs/portlets/dot-ema/src/lib/shared/consts.ts @@ -7,6 +7,8 @@ export const EDIT_CONTENTLET_URL = export const ADD_CONTENTLET_URL = `/html/ng-contentlet-selector.jsp?ng=true&container_id=*CONTAINER_ID*&add=*BASE_TYPES*`; +export const HOST = 'http://localhost:3000'; + export const WINDOW = new InjectionToken('WindowToken'); export const DEFAULT_LANGUAGE_ID = 1;