From a2131de8398f82f78741192ee9150993618c108d Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Tue, 14 May 2019 17:02:30 +0200 Subject: [PATCH] Fix for inline editing. --- .../pages/users/users-page.component.html | 4 +-- .../apps/pages/apps-page.component.html | 14 +++++----- .../apps/pages/apps-page.component.ts | 4 --- .../shared/content-item.component.html | 20 +++++++------- .../content/shared/content-item.component.ts | 14 +++------- .../pages/rules/rule-element.component.html | 2 +- .../framework/angular/forms/forms-helper.ts | 8 ++++++ .../framework/angular/stop-click.directive.ts | 26 +++++++++++++++++++ src/Squidex/app/framework/declarations.ts | 1 + src/Squidex/app/framework/module.ts | 3 +++ .../shared/components/asset.component.html | 4 +-- .../app/shared/state/contents.state.ts | 2 +- 12 files changed, 64 insertions(+), 38 deletions(-) create mode 100644 src/Squidex/app/framework/angular/stop-click.directive.ts diff --git a/src/Squidex/app/features/administration/pages/users/users-page.component.html b/src/Squidex/app/features/administration/pages/users/users-page.component.html index 68c42465a..223f584bf 100644 --- a/src/Squidex/app/features/administration/pages/users/users-page.component.html +++ b/src/Squidex/app/features/administration/pages/users/users-page.component.html @@ -61,10 +61,10 @@ - - diff --git a/src/Squidex/app/features/apps/pages/apps-page.component.html b/src/Squidex/app/features/apps/pages/apps-page.component.html index abd6252d9..38eb2d9d3 100644 --- a/src/Squidex/app/features/apps/pages/apps-page.component.html +++ b/src/Squidex/app/features/apps/pages/apps-page.component.html @@ -19,13 +19,13 @@

{{app.name}}

- Edit + Edit  | - Content · - Assets · - Settings + Content · + Assets · + Settings
@@ -59,7 +59,7 @@
Start with our ready to use blog.
- Sample Code: C# + Sample Code: C#
@@ -76,7 +76,7 @@
Create your profile page.
- Sample Code: C# + Sample Code: C#
@@ -93,7 +93,7 @@
Create app for Squidex Identity.
- Project + Project
diff --git a/src/Squidex/app/features/apps/pages/apps-page.component.ts b/src/Squidex/app/features/apps/pages/apps-page.component.ts index 631592433..845d48924 100644 --- a/src/Squidex/app/features/apps/pages/apps-page.component.ts +++ b/src/Squidex/app/features/apps/pages/apps-page.component.ts @@ -75,10 +75,6 @@ export class AppsPageComponent implements OnInit { this.addAppDialog.show(); } - public stop(event: Event) { - event.stopPropagation(); - } - public trackByApp(index: number, app: AppDto) { return app.id; } diff --git a/src/Squidex/app/features/content/shared/content-item.component.html b/src/Squidex/app/features/content/shared/content-item.component.html index 46fa010eb..94912845c 100644 --- a/src/Squidex/app/features/content/shared/content-item.component.html +++ b/src/Squidex/app/features/content/shared/content-item.component.html @@ -1,4 +1,4 @@ - + - + @@ -21,7 +21,7 @@ - + {{content.lastModified | sqxFromNow}} - + - - - - - + - +
diff --git a/src/Squidex/app/framework/angular/forms/forms-helper.ts b/src/Squidex/app/framework/angular/forms/forms-helper.ts index 0f4b23d27..abe08ed2a 100644 --- a/src/Squidex/app/framework/angular/forms/forms-helper.ts +++ b/src/Squidex/app/framework/angular/forms/forms-helper.ts @@ -25,6 +25,14 @@ export function invalid$(form: AbstractControl): Observable { return form.statusChanges.pipe(map(() => form.invalid), startWith(form.invalid)); } +export function pristine$(form: AbstractControl): Observable { + return form.statusChanges.pipe(map(() => form.pristine), startWith(form.pristine)); +} + +export function dirty$(form: AbstractControl): Observable { + return form.statusChanges.pipe(map(() => form.dirty), startWith(form.dirty)); +} + export function value$(form: AbstractControl): Observable { return form.valueChanges.pipe(startWith(form.value)); } diff --git a/src/Squidex/app/framework/angular/stop-click.directive.ts b/src/Squidex/app/framework/angular/stop-click.directive.ts new file mode 100644 index 000000000..33e128edb --- /dev/null +++ b/src/Squidex/app/framework/angular/stop-click.directive.ts @@ -0,0 +1,26 @@ +/* + * Squidex Headless CMS + * + * @license + * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. + */ + +import { Directive, HostListener, Input } from '@angular/core'; + +@Directive({ + selector: '[sqxStopClick]' +}) +export class StopClickDirective { + @Input('sqxStopClick') + public shouldStop = true; + + @HostListener('click', ['$event']) + public onClick(event: Event) { + const shouldStop: any = this.shouldStop; + + if (shouldStop || shouldStop === '') { + event.stopPropagation(); + event.stopImmediatePropagation(); + } + } +} \ No newline at end of file diff --git a/src/Squidex/app/framework/declarations.ts b/src/Squidex/app/framework/declarations.ts index 6c7ac2aff..d439504f6 100644 --- a/src/Squidex/app/framework/declarations.ts +++ b/src/Squidex/app/framework/declarations.ts @@ -62,6 +62,7 @@ export * from './angular/safe-html.pipe'; export * from './angular/scroll-active.directive'; export * from './angular/shortcut.component'; export * from './angular/sorted.directive'; +export * from './angular/stop-click.directive'; export * from './angular/template-wrapper.directive'; export * from './angular/title.component'; diff --git a/src/Squidex/app/framework/module.ts b/src/Squidex/app/framework/module.ts index 54ea7050f..4b122488b 100644 --- a/src/Squidex/app/framework/module.ts +++ b/src/Squidex/app/framework/module.ts @@ -77,6 +77,7 @@ import { ShortTimePipe, SortedDirective, StarsComponent, + StopClickDirective, TagEditorComponent, TemplateWrapperDirective, TitleComponent, @@ -147,6 +148,7 @@ import { ShortTimePipe, SortedDirective, StarsComponent, + StopClickDirective, TagEditorComponent, TemplateWrapperDirective, TitleComponent, @@ -211,6 +213,7 @@ import { ShortTimePipe, SortedDirective, StarsComponent, + StopClickDirective, TagEditorComponent, TemplateWrapperDirective, TitleComponent, diff --git a/src/Squidex/app/shared/components/asset.component.html b/src/Squidex/app/shared/components/asset.component.html index 8aa751b69..580e992d4 100644 --- a/src/Squidex/app/shared/components/asset.component.html +++ b/src/Squidex/app/shared/components/asset.component.html @@ -20,7 +20,7 @@ - + @@ -98,7 +98,7 @@ - + diff --git a/src/Squidex/app/shared/state/contents.state.ts b/src/Squidex/app/shared/state/contents.state.ts index 85b8b4ba4..090fbe09b 100644 --- a/src/Squidex/app/shared/state/contents.state.ts +++ b/src/Squidex/app/shared/state/contents.state.ts @@ -288,7 +288,7 @@ export abstract class ContentsStateBase extends State { } private replaceContent(content: ContentDto, oldVersion?: Version) { - if (!oldVersion || oldVersion.eq(content.version)) { + if (!oldVersion || !oldVersion.eq(content.version)) { return this.next(s => { const contents = s.contents.replaceBy('id', content); const selectedContent = s.selectedContent && s.selectedContent.id === content.id ? content : s.selectedContent;