zyfra / Prizm

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

d-flasher opened this issue · comments

Библиотека

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

  • @prizm-ui/components

Компонент

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

  • ZMEB

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

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

Есть проблема следующего характера:
Есть форма с <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));
<prizm-input-layout label="Маска">
  <input prizmInput mask="separator.2" [formControl]="testForm.controls.field1" />
</prizm-input-layout>
  1. Подписаться на отслеживание изменений значений формы.
  2. Когда поле пустое - попробовать ввести буквенные символы
  3. В консоли браузера отобразится вводимая буква. При этом отобразится только первая введенная буква, сам инпут будет отображаться пустым. В инпуте появится кнопка "Очистить".
    Повторю - бага воспроизводится только с prizmInput.