From 31a8d606966bd6d0da9d06f90f5fd4f333f95927 Mon Sep 17 00:00:00 2001 From: alfredo-dotcms <37185433+alfredo-dotcms@users.noreply.github.com> Date: Fri, 3 Jun 2022 15:26:34 -0600 Subject: [PATCH] feedback and fix to make input grow as you type to show content (#22330) --- .../content-types-layout.component.html | 3 +-- .../content-types-layout.component.spec.ts | 5 ++-- .../layout/content-types-layout.component.ts | 24 ++++++++++++++++--- .../dot-content-types-edit.component.spec.ts | 6 ++--- .../dot-content-types-edit.component.ts | 7 +++--- 5 files changed, 30 insertions(+), 15 deletions(-) diff --git a/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/layout/content-types-layout.component.html b/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/layout/content-types-layout.component.html index 848db4459283..caf7d65eafc2 100644 --- a/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/layout/content-types-layout.component.html +++ b/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/layout/content-types-layout.component.html @@ -12,8 +12,7 @@

{{ contentType.name }}

#contentTypeNameInput type="text" [value]="contentType.name" - (keydown.enter)="fireChangeName()" - (keydown.escape)="dotEditInline.hideContent()" + (keyup)="inputValueHandler($event)" pInputText dotAutofocus /> diff --git a/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/layout/content-types-layout.component.spec.ts b/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/layout/content-types-layout.component.spec.ts index d68f9e056533..aa2484c60316 100644 --- a/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/layout/content-types-layout.component.spec.ts +++ b/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/layout/content-types-layout.component.spec.ts @@ -243,9 +243,10 @@ describe('ContentTypesLayoutComponent', () => { de.query(By.css('.main-toolbar-left header p-inplace input')).nativeElement.value = 'changedName'; de.query(By.css('.main-toolbar-left header p-inplace input')).triggerEventHandler( - 'keydown.enter', + 'keyup', { - stopPropagation: jasmine.createSpy('stopPropagation') + stopPropagation: jasmine.createSpy('stopPropagation'), + key: 'Enter' } ); expect(de.componentInstance.changeContentTypeName.emit).toHaveBeenCalledWith( diff --git a/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/layout/content-types-layout.component.ts b/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/layout/content-types-layout.component.ts index b495f68b4a72..8d1240ea0353 100644 --- a/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/layout/content-types-layout.component.ts +++ b/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/layout/content-types-layout.component.ts @@ -34,7 +34,7 @@ export class ContentTypesLayoutComponent implements OnChanges, OnInit { permissionURL: string; pushHistoryURL: string; relationshipURL: string; - contentTypeNameInputSize: string; + contentTypeNameInputSize: number; showPermissionsTab: Observable; actions: MenuItem[]; @@ -91,10 +91,28 @@ export class ContentTypesLayoutComponent implements OnChanges, OnInit { /** * Sets the size of the H4 display to set it in the content textbox to eliminate UI jumps * + * @param {MouseEvent} event * @memberof ContentTypesLayoutComponent */ - editInlineActivate(event): void { - this.contentTypeNameInputSize = event.target.offsetWidth; + editInlineActivate(event: MouseEvent): void { + this.contentTypeNameInputSize = event.target['offsetWidth']; + } + + /** + * Based on keyboard input executes an action to Change Name/Hide Input/Change Input's size + * + * @param {KeyboardEvent} event + * @memberof ContentTypesLayoutComponent + */ + inputValueHandler(event: KeyboardEvent): void { + if (event.key === 'Enter') { + this.fireChangeName(); + } else if (event.key === 'Escape') { + this.dotEditInline.hideContent(); + } else { + const newInputSize = event.target['value'].length * 8 + 22; + this.contentTypeNameInputSize = newInputSize > 485 ? 485 : newInputSize; + } } private loadActions(): void { diff --git a/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/dot-content-types-edit.component.spec.ts b/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/dot-content-types-edit.component.spec.ts index 0e9c1892a617..c328e74b0c11 100644 --- a/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/dot-content-types-edit.component.spec.ts +++ b/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/dot-content-types-edit.component.spec.ts @@ -763,16 +763,14 @@ describe('DotContentTypesEditComponent', () => { const contentTypeLayout = de.query(By.css('dot-content-type-layout')); contentTypeLayout.triggerEventHandler('changeContentTypeName', 'CT changed'); - const replacedWorkflowsPropContentType = { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { layout, fields, workflows, ...replacedWorkflowsPropContentType } = { ...responseContentType }; replacedWorkflowsPropContentType['workflow'] = fakeContentType.workflows.map( (workflow) => workflow.id ); - delete replacedWorkflowsPropContentType.workflows; - delete replacedWorkflowsPropContentType.fields; - delete replacedWorkflowsPropContentType.layout; expect(crudService.putData).toHaveBeenCalledWith( 'v1/contenttype/id/1234567890', diff --git a/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/dot-content-types-edit.component.ts b/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/dot-content-types-edit.component.ts index 68356cb0fcbc..e4937fabb7bd 100644 --- a/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/dot-content-types-edit.component.ts +++ b/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/dot-content-types-edit.component.ts @@ -131,11 +131,10 @@ export class DotContentTypesEditComponent implements OnInit, OnDestroy { * @memberof DotContentTypesEditComponent */ editContentTypeName(name: string): void { - const updatedContentType = { ...this.data, name }; - delete updatedContentType.layout; - delete updatedContentType.fields; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { layout, fields, ...updatedContentType } = { ...this.data, name }; - this.updateContentType(updatedContentType); + this.updateContentType(updatedContentType as DotCMSContentType); } /**