From 8875d8e9b742116a7dd0c2d8bf54a936b8339327 Mon Sep 17 00:00:00 2001 From: Tobias Kohr Date: Mon, 6 Nov 2023 10:31:53 +0100 Subject: [PATCH] fix(record-preview): remove unnecessary whitespace from abstract since it can break line-clamp behaviour --- .../record-preview/record-preview.component.ts | 8 ++++++-- libs/util/shared/src/lib/utils/index.ts | 1 + .../src/lib/utils/remove-whitespace.spec.ts | 16 ++++++++++++++++ .../shared/src/lib/utils/remove-whitespace.ts | 3 +++ 4 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 libs/util/shared/src/lib/utils/remove-whitespace.spec.ts create mode 100644 libs/util/shared/src/lib/utils/remove-whitespace.ts diff --git a/libs/ui/search/src/lib/record-preview/record-preview.component.ts b/libs/ui/search/src/lib/record-preview/record-preview.component.ts index 5992187b2c..93de822d70 100644 --- a/libs/ui/search/src/lib/record-preview/record-preview.component.ts +++ b/libs/ui/search/src/lib/record-preview/record-preview.component.ts @@ -8,7 +8,11 @@ import { Output, TemplateRef, } from '@angular/core' -import { propagateToDocumentOnly, stripHtml } from '@geonetwork-ui/util/shared' +import { + propagateToDocumentOnly, + stripHtml, + removeWhitespace, +} from '@geonetwork-ui/util/shared' import { MetadataQualityDisplay } from '@geonetwork-ui/ui/elements' import { fromEvent, Subscription } from 'rxjs' import { @@ -54,7 +58,7 @@ export class RecordPreviewComponent implements OnInit, OnDestroy { constructor(protected elementRef: ElementRef) {} ngOnInit(): void { - this.abstract = stripHtml(this.record?.abstract) + this.abstract = removeWhitespace(stripHtml(this.record?.abstract)) this.subscription.add( fromEvent(this.elementRef.nativeElement, 'click').subscribe( (event: Event) => { diff --git a/libs/util/shared/src/lib/utils/index.ts b/libs/util/shared/src/lib/utils/index.ts index 3430c7a73c..6ac06290f9 100644 --- a/libs/util/shared/src/lib/utils/index.ts +++ b/libs/util/shared/src/lib/utils/index.ts @@ -1,5 +1,6 @@ export * from './parse' export * from './strip-html' +export * from './remove-whitespace' export * from './geojson' export * from './sort-by' export * from './url' diff --git a/libs/util/shared/src/lib/utils/remove-whitespace.spec.ts b/libs/util/shared/src/lib/utils/remove-whitespace.spec.ts new file mode 100644 index 0000000000..20b5459045 --- /dev/null +++ b/libs/util/shared/src/lib/utils/remove-whitespace.spec.ts @@ -0,0 +1,16 @@ +import { removeWhitespace } from './remove-whitespace' + +describe('#removeWhitespace', () => { + it('removes superfluent whitespace for a single word', () => { + const html = ' hello ' + expect(removeWhitespace(html)).toBe('hello') + }) + it('removes superfluent whitespace for a paragraph', () => { + const html = `Service WFS pour les concentrations moyennes journalières des principaux polluants. + + Concentrations moyennes journalières issues du réseau fixe des principaux polluants réglementés dans l’air sur la région Hauts-de-France : dioxyde de soufre SO2, monoxyde d’azote NO et dioxyde d’azote NO2, particules en suspension PM10, particules en suspension PM2.5, ozone O3, benzène C6H6, monoxyde de carbone CO. Toutes les données fournies sont en μg/m³ (microgramme par mètre cube) sauf CO (mg/m³). Généalogie au sens Inspire : Mesures de terrain automatiques. Les concentrations moyennes ont été calculées conformément au guide méthodologique pour le calcul des statistiques relative à la qualité de l’air (LCSQA 2016) à partir des données mesurées selon` + expect(removeWhitespace(html)).toBe( + `Service WFS pour les concentrations moyennes journalières des principaux polluants. Concentrations moyennes journalières issues du réseau fixe des principaux polluants réglementés dans l’air sur la région Hauts-de-France : dioxyde de soufre SO2, monoxyde d’azote NO et dioxyde d’azote NO2, particules en suspension PM10, particules en suspension PM2.5, ozone O3, benzène C6H6, monoxyde de carbone CO. Toutes les données fournies sont en μg/m³ (microgramme par mètre cube) sauf CO (mg/m³). Généalogie au sens Inspire : Mesures de terrain automatiques. Les concentrations moyennes ont été calculées conformément au guide méthodologique pour le calcul des statistiques relative à la qualité de l’air (LCSQA 2016) à partir des données mesurées selon` + ) + }) +}) diff --git a/libs/util/shared/src/lib/utils/remove-whitespace.ts b/libs/util/shared/src/lib/utils/remove-whitespace.ts new file mode 100644 index 0000000000..c9dffa3aa5 --- /dev/null +++ b/libs/util/shared/src/lib/utils/remove-whitespace.ts @@ -0,0 +1,3 @@ +export const removeWhitespace = function (str: string): string { + return str.replace(/\s+/g, ' ').trim() +}