zyfra / Prizm

Other
46 stars 16 forks source link

[BUG] @prizm-ui/components - Комбинация ngx-mask "separator" + директива prizmInput пропускает лишние нечисловые символы #1990

Open d-flasher opened 3 months ago

d-flasher commented 3 months ago

Библиотека

Выберите нужное отметив галочку [x]

Компонент

PrizmInputLayoutComponent PrizmInputTextComponent

Версия

Операционная ситема:

Windows 11

Браузер:

Google Chrome Версия 127.0.6533.120 (Официальная сборка), (64 бит)

NodeJS:

➜ node --version
v18.19.0

Dependencies:

➜ npm ls @prizm-ui/components

@prizm-ui/components: "4.3.1"
ngx-mask: "17.0.5"
➜ npm ls @angular/core

+-- @prizm-ui/components@4.3.1
| `-- @angular/core@17.3.9 deduped
+-- @angular/animations@17.3.9
| `-- @angular/core@17.3.9 deduped

Проект в котором используется Prizm

Воспроизведение проблемы

Описание проблемы

Есть проблема следующего характера: Есть форма с <input prizmInput> для которого указана маска ng-mask "separator.2" (такая маска должна разрешать ввод только цифр) Форма отправляет событие об изменении значения если вводится нечисловой символ (например буква).

p.s. При этом если использовать input БЕЗ prizmInput - все работает правильно.

Шаги воспроизведения:

  1. Создать простую форму:
    
    testForm = new FormGroup({
    field1: new FormControl(),
    });

// при вводе букв - сюда прилетит первая буква testForm.controls.field1.valueChanges.subscribe((value) => console.log(value));

```html
<prizm-input-layout label="Маска">
  <input prizmInput mask="separator.2" [formControl]="testForm.controls.field1" />
</prizm-input-layout>
  1. Подписаться на отслеживание изменений значений формы.
  2. Когда поле пустое - попробовать ввести буквенные символы
  3. В консоли браузера отобразится вводимая буква. При этом отобразится только первая введенная буква, сам инпут будет отображаться пустым. В инпуте появится кнопка "Очистить". Повторю - бага воспроизводится только с prizmInput.
AleksandrSibiakov commented 1 month ago

Похоже на дубликат https://github.com/zyfra/Prizm/issues/1190, но может быть все еще воспроизводится или снова воспроизводится