From 8e2cb6d416276951a55b99c575443fddf9b81fe8 Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Sun, 22 May 2022 08:59:43 -0700 Subject: [PATCH] Strip some characters from pasted date input --- .../common/input/date/date.component.html | 2 +- .../components/common/input/date/date.component.ts | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src-ui/src/app/components/common/input/date/date.component.html b/src-ui/src/app/components/common/input/date/date.component.html index ca6ec0b26..e742ead9b 100644 --- a/src-ui/src/app/components/common/input/date/date.component.html +++ b/src-ui/src/app/components/common/input/date/date.component.html @@ -2,7 +2,7 @@ <label class="form-label" [for]="inputId">{{title}}</label> <div class="input-group" [class.is-invalid]="error"> <input class="form-control" [class.is-invalid]="error" [placeholder]="placeholder" [id]="inputId" maxlength="10" - (dateSelect)="onChange(value)" (change)="onChange(value)" (keypress)="onKeyPress($event)" + (dateSelect)="onChange(value)" (change)="onChange(value)" (keypress)="onKeyPress($event)" (paste)="onPaste($event)" name="dp" [(ngModel)]="value" ngbDatepicker #datePicker="ngbDatepicker" #datePickerContent="ngModel"> <button class="btn btn-outline-secondary calendar" (click)="datePicker.toggle()" type="button"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar" viewBox="0 0 16 16"> diff --git a/src-ui/src/app/components/common/input/date/date.component.ts b/src-ui/src/app/components/common/input/date/date.component.ts index a6d39321b..47efeb744 100644 --- a/src-ui/src/app/components/common/input/date/date.component.ts +++ b/src-ui/src/app/components/common/input/date/date.component.ts @@ -30,7 +30,18 @@ export class DateComponent placeholder: string - // prevent chars other than numbers and separators + onPaste(event: ClipboardEvent) { + let clipboardData: DataTransfer = + event.clipboardData || window['clipboardData'] + if (clipboardData) { + let pastedText = clipboardData.getData('text') + pastedText = pastedText.replace(/[\sa-z#!$%\^&\*;:{}=\-_`~()]+/g, '') + event.preventDefault() + this.value = pastedText + this.onChange(pastedText) + } + } + onKeyPress(event: KeyboardEvent) { if ('Enter' !== event.key && !/[0-9,\.\/-]+/.test(event.key)) { event.preventDefault()