@ptsecurity/mosaic 14.3.1 → 14.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/_theming.scss +13 -4
  2. package/_visual.scss +8 -3
  3. package/core/formatters/date/formatter.pipe.d.ts +79 -66
  4. package/core/formatters/number/formatter.d.ts +13 -3
  5. package/design-tokens/legacy-2017/tokens/components/datepicker.json5 +15 -6
  6. package/design-tokens/legacy-2017/tokens/components/popup.json5 +1 -1
  7. package/design-tokens/legacy-2017/tokens.d.ts +9 -3
  8. package/design-tokens/pt-2022/tokens/components/datepicker.json5 +13 -4
  9. package/design-tokens/pt-2022/tokens/components/popup.json5 +1 -1
  10. package/design-tokens/pt-2022/tokens/components/sidepanel.json5 +1 -2
  11. package/design-tokens/pt-2022/tokens.d.ts +8 -3
  12. package/esm2020/core/formatters/date/formatter.pipe.mjs +87 -54
  13. package/esm2020/core/formatters/number/formatter.mjs +26 -10
  14. package/esm2020/core/select/constants.mjs +1 -1
  15. package/esm2020/core/version.mjs +2 -2
  16. package/esm2020/datepicker/calendar-body.component.mjs +2 -2
  17. package/esm2020/datepicker/datepicker.component.mjs +3 -3
  18. package/esm2020/design-tokens/legacy-2017/tokens.mjs +10 -4
  19. package/esm2020/design-tokens/pt-2022/tokens.mjs +9 -4
  20. package/esm2020/form-field/form-field.mjs +50 -9
  21. package/esm2020/form-field/form-field.module.mjs +10 -6
  22. package/esm2020/form-field/password-hint.mjs +4 -4
  23. package/esm2020/input/input.mjs +10 -21
  24. package/esm2020/sidepanel/sidepanel-container.component.mjs +3 -3
  25. package/esm2020/sidepanel/sidepanel-directives.mjs +16 -11
  26. package/esm2020/tags/tag-input.mjs +19 -7
  27. package/esm2020/toast/toast.service.mjs +5 -4
  28. package/fesm2015/ptsecurity-mosaic-core.mjs +110 -60
  29. package/fesm2015/ptsecurity-mosaic-core.mjs.map +1 -1
  30. package/fesm2015/ptsecurity-mosaic-datepicker.mjs +4 -4
  31. package/fesm2015/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  32. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs +26 -9
  33. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs.map +1 -1
  34. package/fesm2015/ptsecurity-mosaic-form-field.mjs +62 -15
  35. package/fesm2015/ptsecurity-mosaic-form-field.mjs.map +1 -1
  36. package/fesm2015/ptsecurity-mosaic-input.mjs +10 -20
  37. package/fesm2015/ptsecurity-mosaic-input.mjs.map +1 -1
  38. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs +18 -13
  39. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
  40. package/fesm2015/ptsecurity-mosaic-tags.mjs +19 -8
  41. package/fesm2015/ptsecurity-mosaic-tags.mjs.map +1 -1
  42. package/fesm2015/ptsecurity-mosaic-toast.mjs +4 -3
  43. package/fesm2015/ptsecurity-mosaic-toast.mjs.map +1 -1
  44. package/fesm2020/ptsecurity-mosaic-core.mjs +110 -63
  45. package/fesm2020/ptsecurity-mosaic-core.mjs.map +1 -1
  46. package/fesm2020/ptsecurity-mosaic-datepicker.mjs +4 -4
  47. package/fesm2020/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  48. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs +26 -9
  49. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs.map +1 -1
  50. package/fesm2020/ptsecurity-mosaic-form-field.mjs +60 -17
  51. package/fesm2020/ptsecurity-mosaic-form-field.mjs.map +1 -1
  52. package/fesm2020/ptsecurity-mosaic-input.mjs +9 -20
  53. package/fesm2020/ptsecurity-mosaic-input.mjs.map +1 -1
  54. package/fesm2020/ptsecurity-mosaic-sidepanel.mjs +18 -13
  55. package/fesm2020/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
  56. package/fesm2020/ptsecurity-mosaic-tags.mjs +16 -5
  57. package/fesm2020/ptsecurity-mosaic-tags.mjs.map +1 -1
  58. package/fesm2020/ptsecurity-mosaic-toast.mjs +4 -3
  59. package/fesm2020/ptsecurity-mosaic-toast.mjs.map +1 -1
  60. package/form-field/form-field.d.ts +12 -2
  61. package/form-field/form-field.module.d.ts +1 -1
  62. package/input/input.d.ts +1 -2
  63. package/package.json +4 -4
  64. package/prebuilt-themes/dark-theme.css +1 -1
  65. package/prebuilt-themes/default-theme.css +1 -1
  66. package/tags/tag-input.d.ts +5 -2
@@ -1,10 +1,11 @@
1
1
  import * as i1$1 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Component, Directive, Input, ChangeDetectionStrategy, Inject, EventEmitter, Output, InjectionToken, ViewEncapsulation, ContentChild, ContentChildren, ViewChild, forwardRef, Optional, Self, NgModule } from '@angular/core';
4
+ import { Component, Directive, Input, forwardRef, ChangeDetectionStrategy, Inject, EventEmitter, Output, InjectionToken, ViewEncapsulation, ContentChild, ContentChildren, ViewChild, Attribute, Optional, Self, NgModule } from '@angular/core';
5
5
  import * as i1 from '@ptsecurity/mosaic/icon';
6
6
  import { McIconModule } from '@ptsecurity/mosaic/icon';
7
7
  import { ThemePalette, mixinColor, MC_VALIDATION } from '@ptsecurity/mosaic/core';
8
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
8
9
  import { F8, ESCAPE } from '@ptsecurity/cdk/keycodes';
9
10
  import { Subject, EMPTY, merge } from 'rxjs';
10
11
  import { startWith, takeUntil } from 'rxjs/operators';
@@ -164,7 +165,7 @@ class McPasswordHint {
164
165
  return this.lastControlValue !== this.formField.control.value;
165
166
  }
166
167
  }
167
- /** @nocollapse */ McPasswordHint.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: McPasswordHint, deps: [{ token: i0.ChangeDetectorRef }, { token: MC_FORM_FIELD }], target: i0.ɵɵFactoryTarget.Component });
168
+ /** @nocollapse */ McPasswordHint.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: McPasswordHint, deps: [{ token: i0.ChangeDetectorRef }, { token: forwardRef(() => MC_FORM_FIELD) }], target: i0.ɵɵFactoryTarget.Component });
168
169
  /** @nocollapse */ McPasswordHint.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: McPasswordHint, selector: "mc-password-hint", inputs: { id: "id", rule: "rule", min: "min", max: "max", regex: "regex" }, host: { properties: { "class.mc-password-hint_valid": "checked", "class.mc-password-hint_invalid": "hasError", "attr.id": "id" }, classAttribute: "mc-password-hint" }, ngImport: i0, template: `
169
170
  <i *ngIf="!checked" class="mc-password-hint__icon" mc-icon="mc-close-M_16"></i>
170
171
  <i *ngIf="checked" class="mc-password-hint__icon" mc-icon="mc-check_16"></i>
@@ -196,7 +197,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImpor
196
197
  }], ctorParameters: function () {
197
198
  return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
198
199
  type: Inject,
199
- args: [MC_FORM_FIELD]
200
+ args: [forwardRef(() => MC_FORM_FIELD)]
200
201
  }] }];
201
202
  }, propDecorators: { id: [{
202
203
  type: Input
@@ -300,10 +301,10 @@ class McFormFieldBase {
300
301
  // tslint:disable-next-line:naming-convention
301
302
  const McFormFieldMixinBase = mixinColor(McFormFieldBase);
302
303
  class McFormField extends McFormFieldMixinBase {
303
- constructor(elementRef, _changeDetectorRef, focusMonitor) {
304
+ constructor(elementRef, changeDetectorRef, focusMonitor) {
304
305
  super(elementRef);
305
306
  this.elementRef = elementRef;
306
- this._changeDetectorRef = _changeDetectorRef;
307
+ this.changeDetectorRef = changeDetectorRef;
307
308
  this.focusMonitor = focusMonitor;
308
309
  // Unique id for the internal form field label.
309
310
  this.labelId = `mc-form-field-label-${nextUniqueId++}`;
@@ -369,7 +370,7 @@ class McFormField extends McFormFieldMixinBase {
369
370
  if (!(state === null || state === void 0 ? void 0 : state.focused) && this.hasPasswordStrengthError) {
370
371
  (_b = (_a = this.control.ngControl) === null || _a === void 0 ? void 0 : _a.control) === null || _b === void 0 ? void 0 : _b.setErrors({ passwordStrength: true });
371
372
  }
372
- this._changeDetectorRef.markForCheck();
373
+ this.changeDetectorRef.markForCheck();
373
374
  });
374
375
  if (this.hasStepper) {
375
376
  this.stepper.connectTo(this.control.numberInput);
@@ -378,14 +379,14 @@ class McFormField extends McFormFieldMixinBase {
378
379
  const valueChanges = ((_a = this.control.ngControl) === null || _a === void 0 ? void 0 : _a.valueChanges) || EMPTY;
379
380
  merge(valueChanges)
380
381
  .pipe(takeUntil(this.$unsubscribe))
381
- .subscribe(() => this._changeDetectorRef.markForCheck());
382
+ .subscribe(() => this.changeDetectorRef.markForCheck());
382
383
  }
383
384
  ngAfterContentChecked() {
384
385
  this.validateControlChild();
385
386
  }
386
387
  ngAfterViewInit() {
387
388
  // Avoid animations on load.
388
- this._changeDetectorRef.detectChanges();
389
+ this.changeDetectorRef.detectChanges();
389
390
  }
390
391
  clearValue($event) {
391
392
  var _a, _b, _c;
@@ -413,7 +414,7 @@ class McFormField extends McFormFieldMixinBase {
413
414
  onHoverChanged(isHovered) {
414
415
  if (isHovered !== this.hovered) {
415
416
  this.hovered = isHovered;
416
- this._changeDetectorRef.markForCheck();
417
+ this.changeDetectorRef.markForCheck();
417
418
  }
418
419
  }
419
420
  /**
@@ -425,7 +426,8 @@ class McFormField extends McFormFieldMixinBase {
425
426
  }
426
427
  /** Determines whether a class from the NgControl should be forwarded to the host element. */
427
428
  shouldForward(prop) {
428
- const ngControl = this.control ? this.control.ngControl : null;
429
+ var _a;
430
+ const ngControl = (_a = this.control) === null || _a === void 0 ? void 0 : _a.ngControl;
429
431
  return ngControl && ngControl[prop];
430
432
  }
431
433
  ngOnDestroy() {
@@ -506,6 +508,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImpor
506
508
  host: { class: 'mc-form-field_without-borders' }
507
509
  }]
508
510
  }] });
511
+ class McTrim {
512
+ constructor(noTrim, ngControl) {
513
+ var _a;
514
+ this.noTrim = noTrim;
515
+ this.ngControl = ngControl;
516
+ this.registerOnChange = (fn) => {
517
+ return this.original.call(this.ngControl.valueAccessor, (value) => fn(this.trim(value)));
518
+ };
519
+ this.noTrim = coerceBooleanProperty(noTrim);
520
+ if (this.noTrim || !((_a = this.ngControl) === null || _a === void 0 ? void 0 : _a.valueAccessor)) {
521
+ return;
522
+ }
523
+ this.original = this.ngControl.valueAccessor.registerOnChange;
524
+ this.ngControl.valueAccessor.registerOnChange = this.registerOnChange;
525
+ }
526
+ trim(value) {
527
+ if (this.noTrim) {
528
+ return value;
529
+ }
530
+ return typeof value === 'string' ? value.trim() : value;
531
+ }
532
+ }
533
+ /** @nocollapse */ McTrim.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: McTrim, deps: [{ token: 'no-trim', attribute: true }, { token: i1$3.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });
534
+ /** @nocollapse */ McTrim.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.5", type: McTrim, selector: "[mcInput], [mcTextarea]", host: { classAttribute: "mc-trim" }, exportAs: ["McTrim"], ngImport: i0 });
535
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: McTrim, decorators: [{
536
+ type: Directive,
537
+ args: [{
538
+ selector: '[mcInput], [mcTextarea]',
539
+ exportAs: 'McTrim',
540
+ host: { class: 'mc-trim' }
541
+ }]
542
+ }], ctorParameters: function () {
543
+ return [{ type: undefined, decorators: [{
544
+ type: Attribute,
545
+ args: ['no-trim']
546
+ }] }, { type: i1$3.NgControl, decorators: [{
547
+ type: Optional
548
+ }, {
549
+ type: Self
550
+ }] }];
551
+ } });
509
552
 
510
553
  class McValidateDirective {
511
554
  constructor(formFieldControl, rawValidators, ngControl, parentForm, parentFormGroup, mcValidation, cdr) {
@@ -669,7 +712,8 @@ class McFormFieldModule {
669
712
  McSuffix,
670
713
  McCleaner,
671
714
  McStepper,
672
- McValidateDirective], imports: [CommonModule, McIconModule], exports: [McFormField,
715
+ McValidateDirective,
716
+ McTrim], imports: [CommonModule, McIconModule], exports: [McFormField,
673
717
  McFormFieldWithoutBorders,
674
718
  McHint,
675
719
  McPasswordHint,
@@ -677,7 +721,8 @@ class McFormFieldModule {
677
721
  McSuffix,
678
722
  McCleaner,
679
723
  McStepper,
680
- McValidateDirective] });
724
+ McValidateDirective,
725
+ McTrim] });
681
726
  /** @nocollapse */ McFormFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: McFormFieldModule, imports: [CommonModule, McIconModule] });
682
727
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: McFormFieldModule, decorators: [{
683
728
  type: NgModule,
@@ -691,7 +736,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImpor
691
736
  McSuffix,
692
737
  McCleaner,
693
738
  McStepper,
694
- McValidateDirective
739
+ McValidateDirective,
740
+ McTrim
695
741
  ],
696
742
  imports: [CommonModule, McIconModule],
697
743
  exports: [
@@ -703,7 +749,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImpor
703
749
  McSuffix,
704
750
  McCleaner,
705
751
  McStepper,
706
- McValidateDirective
752
+ McValidateDirective,
753
+ McTrim
707
754
  ]
708
755
  }]
709
756
  }] });
@@ -712,5 +759,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImpor
712
759
  * Generated bundle index. Do not edit.
713
760
  */
714
761
 
715
- export { MC_FORM_FIELD, McCleaner, McFormField, McFormFieldBase, McFormFieldControl, McFormFieldMixinBase, McFormFieldModule, McFormFieldWithoutBorders, McHint, McHintBase, McHintMixinBase, McPasswordHint, McPrefix, McStepper, McSuffix, McValidateDirective, PasswordRules, getMcFormFieldMissingControlError, getMcFormFieldYouCanNotUseCleanerInNumberInputError, regExpPasswordValidator };
762
+ export { MC_FORM_FIELD, McCleaner, McFormField, McFormFieldBase, McFormFieldControl, McFormFieldMixinBase, McFormFieldModule, McFormFieldWithoutBorders, McHint, McHintBase, McHintMixinBase, McPasswordHint, McPrefix, McStepper, McSuffix, McTrim, McValidateDirective, PasswordRules, getMcFormFieldMissingControlError, getMcFormFieldYouCanNotUseCleanerInNumberInputError, regExpPasswordValidator };
716
763
  //# sourceMappingURL=ptsecurity-mosaic-form-field.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ptsecurity-mosaic-form-field.mjs","sources":["../../../packages/mosaic/form-field/cleaner.ts","../../../packages/mosaic/form-field/form-field-control.ts","../../../packages/mosaic/form-field/form-field-errors.ts","../../../packages/mosaic/form-field/hint.ts","../../../packages/mosaic/form-field/password-hint.ts","../../../packages/mosaic/form-field/prefix.ts","../../../packages/mosaic/form-field/stepper.ts","../../../packages/mosaic/form-field/suffix.ts","../../../packages/mosaic/form-field/form-field.ts","../../../packages/mosaic/form-field/form-field.html","../../../packages/mosaic/form-field/validate.directive.ts","../../../packages/mosaic/form-field/form-field.module.ts","../../../packages/mosaic/form-field/ptsecurity-mosaic-form-field.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport { ThemePalette } from '@ptsecurity/mosaic/core';\n\n\n@Component({\n selector: 'mc-cleaner',\n exportAs: 'mcCleaner',\n template: `<i class=\"mc-icon_light\" mc-icon=\"mc-close-circle_16\" [color]=\"themePalette.Second\"></i>`,\n host: {\n class: 'mc-cleaner'\n }\n})\nexport class McCleaner {\n themePalette = ThemePalette;\n}\n","import { NgControl } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\n\n/** An interface which allows a control to work inside of a `MсFormField`. */\n// tslint:disable-next-line:naming-convention\nexport abstract class McFormFieldControl<T> {\n /** The value of the control. */\n value: T | null;\n\n /**\n * Stream that emits whenever the state of the control changes such that the parent `MсFormField`\n * needs to run change detection.\n */\n readonly stateChanges: Observable<void>;\n\n /** The element ID for this control. */\n readonly id: string;\n\n /** The placeholder for this control. */\n readonly placeholder: string;\n\n /** Gets the NgControl for this control. */\n readonly ngControl: NgControl | null;\n\n /** Whether the control is focused. */\n readonly focused: boolean;\n\n /** Whether the control is empty. */\n readonly empty: boolean;\n\n /** Whether the control is required. */\n readonly required: boolean;\n\n /** Whether the control is disabled. */\n readonly disabled: boolean;\n\n /** Whether the control is in an error state. */\n readonly errorState: boolean;\n\n /**\n * An optional name for the control type that can be used to distinguish `mc-form-field` elements\n * based on their control type. The form field will add a class,\n * `mc-form-field-type-{{controlType}}` to its root element.\n */\n readonly controlType?: string;\n\n /** Handles a click on the control's container. */\n abstract onContainerClick(event: MouseEvent): void;\n\n abstract focus(): void;\n}\n","export function getMcFormFieldMissingControlError(): Error {\n return Error('mc-form-field must contain a McFormFieldControl.');\n}\n\nexport function getMcFormFieldYouCanNotUseCleanerInNumberInputError(): Error {\n return Error(`You can't use mc-cleaner with input that have type=\"number\"`);\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { CanColorCtor, mixinColor } from '@ptsecurity/mosaic/core';\n\n\nlet nextHintUniqueId = 0;\n\nexport class McHintBase {\n constructor(public elementRef: ElementRef) {}\n}\n\n// tslint:disable-next-line:naming-convention\nexport const McHintMixinBase: CanColorCtor &\n typeof McHintBase = mixinColor(McHintBase);\n\n@Directive({\n selector: 'mc-hint',\n inputs: ['color'],\n host: {\n class: 'mc-hint',\n '[attr.id]': 'id'\n }\n})\nexport class McHint extends McHintMixinBase {\n @Input() id: string = `mc-hint-${nextHintUniqueId++}`;\n\n constructor(elementRef: ElementRef) {\n super(elementRef);\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n Input\n} from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { MC_FORM_FIELD } from './form-field';\n\n\nlet nextPasswordHintUniqueId = 0;\n\nexport enum PasswordRules {\n Length,\n UpperLatin,\n LowerLatin,\n Digit,\n LatinAndSpecialSymbols,\n Custom\n}\n\nexport const regExpPasswordValidator = {\n [PasswordRules.LowerLatin]: RegExp(/^(?=.*?[a-z])/),\n [PasswordRules.UpperLatin]: RegExp(/^(?=.*?[A-Z])/),\n [PasswordRules.Digit]: RegExp(/^(?=.*?[0-9])/),\n [PasswordRules.LatinAndSpecialSymbols]: RegExp(/[^ !`\"'#№$%&()*+,-./\\\\:;<=>?@[\\]^_{|}~A-Za-z0-9]/)\n};\n\n\n@Component({\n selector: 'mc-password-hint',\n template: `\n <i *ngIf=\"!checked\" class=\"mc-password-hint__icon\" mc-icon=\"mc-close-M_16\"></i>\n <i *ngIf=\"checked\" class=\"mc-password-hint__icon\" mc-icon=\"mc-check_16\"></i>\n\n <span class=\"mc-password-hint__text\">\n <ng-content></ng-content>\n </span>\n `,\n host: {\n class: 'mc-password-hint',\n '[class.mc-password-hint_valid]': 'checked',\n '[class.mc-password-hint_invalid]': 'hasError',\n '[attr.id]': 'id'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McPasswordHint implements AfterContentInit {\n @Input() id: string = `mc-hint-${nextPasswordHintUniqueId++}`;\n\n @Input() rule: PasswordRules | any;\n\n @Input() min: number;\n @Input() max: number;\n @Input() regex: RegExp | null;\n\n hasError: boolean = false;\n checked: boolean = false;\n\n private checkRule: (value: string) => boolean;\n\n private get control() {\n return this.formField.control;\n }\n\n private lastControlValue: string;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n @Inject(MC_FORM_FIELD) private formField: any\n ) {}\n\n ngAfterContentInit(): void {\n if (this.rule === null) {\n throw Error('You should set [rule] name');\n }\n\n if (this.rule === PasswordRules.Custom && this.regex === undefined) {\n throw Error('You should set [regex] for PasswordRules.Custom');\n }\n\n if (this.rule === PasswordRules.Length && (this.min || this.max) === null) {\n throw Error('For [rule] \"Length\" need set [min] and [max]');\n }\n\n if (this.rule === PasswordRules.Length) {\n this.checkRule = this.checkLengthRule;\n } else if ([PasswordRules.UpperLatin, PasswordRules.LowerLatin, PasswordRules.Digit].includes(this.rule)) {\n this.regex = regExpPasswordValidator[this.rule];\n this.checkRule = this.checkRegexRule;\n } else if (this.rule === PasswordRules.LatinAndSpecialSymbols) {\n this.regex = regExpPasswordValidator[this.rule];\n this.checkRule = this.checkSpecialSymbolsRegexRule;\n } else if (this.rule === PasswordRules.Custom) {\n this.checkRule = this.checkRegexRule;\n } else {\n throw Error(`Unknown [rule]=${this.rule}`);\n }\n\n this.formField.control.stateChanges\n .subscribe(this.checkValue);\n\n (this.formField.control as unknown as { checkRule: Subject<any> }).checkRule\n .subscribe(() => {\n this.checked = this.checkRule(this.control.value);\n this.hasError = !this.checkRule(this.control.value);\n });\n }\n\n private checkValue = () => {\n if (this.control.focused && this.isValueChanged()) {\n this.hasError = false;\n\n this.checked = this.checkRule(this.control.value);\n } else if (!this.control.focused && !this.isValueChanged()) {\n this.hasError = !this.checkRule(this.control.value);\n }\n\n if (!this.control.required && !this.control.value) {\n this.checked = this.hasError = false;\n }\n\n this.lastControlValue = this.control.value;\n this.changeDetectorRef.markForCheck();\n }\n\n private checkLengthRule(value: string): boolean {\n return value.length >= this.min && value.length <= this.max;\n }\n\n private checkRegexRule(value: string): boolean {\n return !!this.regex?.test(value);\n }\n\n private checkSpecialSymbolsRegexRule(value: string): boolean {\n return !!value && !this.regex?.test(value);\n }\n\n private isValueChanged(): boolean {\n return this.lastControlValue !== this.formField.control.value;\n }\n}\n","import { Directive } from '@angular/core';\n\n\n@Directive({\n selector: '[mcPrefix]'\n})\nexport class McPrefix {}\n","import { Component, EventEmitter, Output } from '@angular/core';\n\n\n@Component({\n selector: 'mc-stepper',\n template: `\n <i class=\"mc mc-icon mc-icon_light mc-second mc-stepper-step-up mc-angle-down-L_16\"\n (mousedown)=\"onStepUp($event)\">\n </i>\n <i class=\"mc mc-icon mc-icon_light mc-second mc-stepper-step-down mc-angle-down-L_16\"\n (mousedown)=\"onStepDown($event)\">\n </i>\n `\n})\nexport class McStepper {\n @Output()\n readonly stepUp: EventEmitter<void> = new EventEmitter<void>();\n @Output()\n readonly stepDown: EventEmitter<void> = new EventEmitter<void>();\n\n connectTo(numberInput: any) {\n if (!numberInput) { return; }\n\n this.stepUp.subscribe(() => {\n numberInput.stepUp(numberInput.step);\n });\n\n this.stepDown.subscribe(() => {\n numberInput.stepDown(numberInput.step);\n });\n }\n\n onStepUp($event: MouseEvent) {\n this.stepUp.emit();\n $event.preventDefault();\n }\n\n onStepDown($event: MouseEvent) {\n this.stepDown.emit();\n $event.preventDefault();\n }\n}\n","import { Directive } from '@angular/core';\n\n\n@Directive({\n selector: '[mcSuffix]'\n})\nexport class McSuffix {}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n AfterContentChecked,\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n ElementRef,\n InjectionToken,\n OnDestroy,\n QueryList,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { ESCAPE, F8 } from '@ptsecurity/cdk/keycodes';\nimport { CanColor, CanColorCtor, mixinColor } from '@ptsecurity/mosaic/core';\nimport { EMPTY, merge, Subject } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\n\nimport { McCleaner } from './cleaner';\nimport { McFormFieldControl } from './form-field-control';\nimport {\n getMcFormFieldMissingControlError,\n getMcFormFieldYouCanNotUseCleanerInNumberInputError\n} from './form-field-errors';\nimport { McHint } from './hint';\nimport { McPasswordHint } from './password-hint';\nimport { McPrefix } from './prefix';\nimport { McStepper } from './stepper';\nimport { McSuffix } from './suffix';\n\n\nlet nextUniqueId = 0;\n\n/**\n * Injection token that can be used to inject an instances of `MatFormField`. It serves\n * as alternative token to the actual `MatFormField` class which would cause unnecessary\n * retention of the `MatFormField` class and its component metadata.\n */\nexport const MC_FORM_FIELD = new InjectionToken<McFormField>('McFormField');\n\nexport class McFormFieldBase {\n constructor(public elementRef: ElementRef) {}\n}\n\n// tslint:disable-next-line:naming-convention\nexport const McFormFieldMixinBase: CanColorCtor & typeof McFormFieldBase = mixinColor(McFormFieldBase);\n\n@Component({\n selector: 'mc-form-field',\n exportAs: 'mcFormField',\n templateUrl: 'form-field.html',\n // McInput is a directive and can't have styles, so we need to include its styles here.\n // The McInput styles are fairly minimal so it shouldn't be a big deal for people who\n // aren't using McInput.\n styleUrls: [\n 'form-field.scss',\n '../input/input.scss',\n '../timepicker/timepicker.scss',\n '../datepicker/datepicker-input.scss',\n '../textarea/textarea.scss'\n ],\n host: {\n class: 'mc-form-field',\n '[class.mc-form-field_invalid]': 'control.errorState',\n '[class.mc-form-field_has-prefix]': 'hasPrefix',\n '[class.mc-form-field_has-suffix]': 'hasSuffix',\n '[class.mc-form-field_has-cleaner]': 'canShowCleaner',\n '[class.mc-form-field_has-stepper]': 'canShowStepper',\n\n '[class.mc-disabled]': 'control.disabled',\n\n '[class.ng-untouched]': 'shouldForward(\"untouched\")',\n '[class.ng-touched]': 'shouldForward(\"touched\")',\n '[class.ng-pristine]': 'shouldForward(\"pristine\")',\n '[class.ng-dirty]': 'shouldForward(\"dirty\")',\n '[class.ng-valid]': 'shouldForward(\"valid\")',\n '[class.ng-invalid]': 'shouldForward(\"invalid\")',\n '[class.ng-pending]': 'shouldForward(\"pending\")',\n\n '(keydown)': 'onKeyDown($event)',\n '(mouseenter)': 'onHoverChanged(true)',\n '(mouseleave)': 'onHoverChanged(false)'\n },\n inputs: ['color'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: MC_FORM_FIELD, useExisting: McFormField }]\n})\nexport class McFormField extends McFormFieldMixinBase implements\n AfterContentInit, AfterContentChecked, AfterViewInit, CanColor, OnDestroy {\n\n @ContentChild(McFormFieldControl, { static: false }) control: McFormFieldControl<any>;\n @ContentChild(McStepper, { static: false }) stepper: McStepper;\n @ContentChild(McCleaner, { static: false }) cleaner: McCleaner | null;\n\n @ContentChildren(McHint) hint: QueryList<McHint>;\n @ContentChildren(McPasswordHint) passwordHints: QueryList<McPasswordHint>;\n @ContentChildren(McSuffix) suffix: QueryList<McSuffix>;\n @ContentChildren(McPrefix) prefix: QueryList<McPrefix>;\n\n @ViewChild('connectionContainer', { static: true }) connectionContainerRef: ElementRef;\n\n // Unique id for the internal form field label.\n labelId = `mc-form-field-label-${nextUniqueId++}`;\n\n hovered: boolean = false;\n\n canCleanerClearByEsc: boolean = true;\n\n private $unsubscribe = new Subject<void>();\n\n get hasHint(): boolean {\n return this.hint?.length > 0;\n }\n\n get hasPasswordStrengthError(): boolean {\n return this.passwordHints?.some((hint) => hint.hasError);\n }\n\n get hasSuffix(): boolean {\n return this.suffix?.length > 0;\n }\n\n get hasPrefix(): boolean {\n return this.prefix?.length > 0;\n }\n\n get hasCleaner(): boolean {\n return !!this.cleaner;\n }\n\n get hasStepper(): boolean {\n return !!this.stepper;\n }\n\n get canShowCleaner(): boolean {\n return this.hasCleaner &&\n this.control?.ngControl\n ? this.control.ngControl.value && !this.control.disabled\n : false;\n }\n\n get disabled(): boolean {\n return this.control?.disabled;\n }\n\n get canShowStepper(): boolean {\n return this.hasStepper &&\n !this.disabled &&\n (this.control?.focused || this.hovered);\n }\n\n constructor(\n public elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n private focusMonitor: FocusMonitor\n ) {\n super(elementRef);\n\n this.runFocusMonitor();\n }\n\n ngAfterContentInit() {\n if ((this.control as any).numberInput && this.hasCleaner) {\n this.cleaner = null;\n throw getMcFormFieldYouCanNotUseCleanerInNumberInputError();\n }\n\n this.validateControlChild();\n\n if (this.control.controlType) {\n this.elementRef.nativeElement.classList.add(`mc-form-field-type-${this.control.controlType}`);\n }\n\n // Subscribe to changes in the child control state in order to update the form field UI.\n this.control.stateChanges\n .pipe(startWith())\n .subscribe((state: any) => {\n if (!state?.focused && this.hasPasswordStrengthError) {\n this.control.ngControl?.control?.setErrors({ passwordStrength: true });\n }\n\n this._changeDetectorRef.markForCheck();\n });\n\n if (this.hasStepper) {\n this.stepper.connectTo((this.control as any).numberInput);\n }\n\n // Run change detection if the value changes.\n const valueChanges = this.control.ngControl?.valueChanges || EMPTY;\n\n merge(valueChanges)\n .pipe(takeUntil(this.$unsubscribe))\n .subscribe(() => this._changeDetectorRef.markForCheck());\n }\n\n ngAfterContentChecked() {\n this.validateControlChild();\n }\n\n ngAfterViewInit() {\n // Avoid animations on load.\n this._changeDetectorRef.detectChanges();\n }\n\n clearValue($event) {\n $event.stopPropagation();\n\n this.control?.ngControl?.reset();\n this.control?.focus();\n }\n\n onContainerClick($event) {\n if (this.control.onContainerClick) {\n this.control.onContainerClick($event);\n }\n }\n\n onKeyDown(event: KeyboardEvent): void {\n // tslint:disable-next-line:deprecation\n if (this.control.controlType === 'input-password' && event.altKey && event.keyCode === F8) {\n (this.control as unknown as { toggleType(): void }).toggleType();\n }\n // tslint:disable-next-line:deprecation\n if (this.canCleanerClearByEsc && event.keyCode === ESCAPE && this.control.focused && this.hasCleaner) {\n this.control?.ngControl?.reset();\n\n event.preventDefault();\n }\n }\n\n onHoverChanged(isHovered: boolean) {\n if (isHovered !== this.hovered) {\n this.hovered = isHovered;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Gets an ElementRef for the element that a overlay attached to the form-field should be\n * positioned relative to.\n */\n getConnectedOverlayOrigin(): ElementRef {\n return this.connectionContainerRef || this.elementRef;\n }\n\n /** Determines whether a class from the NgControl should be forwarded to the host element. */\n shouldForward(prop: keyof NgControl): boolean {\n const ngControl = this.control ? this.control.ngControl : null;\n\n return ngControl && ngControl[prop];\n }\n\n ngOnDestroy(): void {\n this.$unsubscribe.next();\n this.$unsubscribe.complete();\n\n this.stopFocusMonitor();\n }\n\n runFocusMonitor() {\n this.focusMonitor.monitor(this.elementRef.nativeElement, true);\n }\n\n stopFocusMonitor() {\n this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);\n }\n\n /** Throws an error if the form field's control is missing. */\n protected validateControlChild() {\n if (!this.control) {\n throw getMcFormFieldMissingControlError();\n }\n }\n}\n\n@Directive({\n selector: 'mc-form-field[mcFormFieldWithoutBorders]',\n exportAs: 'mcFormFieldWithoutBorders',\n host: { class: 'mc-form-field_without-borders' }\n})\nexport class McFormFieldWithoutBorders {}\n","<div class=\"mc-form-field__container\" (click)=\"onContainerClick($event)\">\n\n <div class=\"mc-form-field__prefix\" *ngIf=\"hasPrefix\">\n <ng-content select=\"[mcPrefix]\"></ng-content>\n </div>\n\n <div class=\"mc-form-field__infix\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"mc-form-field__suffix\" *ngIf=\"hasSuffix\">\n <ng-content select=\"[mcSuffix]\"></ng-content>\n </div>\n\n <div class=\"mc-form-field__cleaner\"\n *ngIf=\"canShowCleaner && !hasSuffix\"\n (click)=\"clearValue($event)\">\n <ng-content select=\"mc-cleaner\"></ng-content>\n </div>\n\n <ng-content select=\"mc-password-toggle\"></ng-content>\n\n <ng-content *ngIf=\"canShowStepper\" select=\"mc-stepper\"></ng-content>\n</div>\n\n<div class=\"mc-form-field__hint\">\n <ng-content select=\"mc-hint, mc-password-hint\"></ng-content>\n</div>\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n Directive,\n forwardRef,\n Inject,\n Optional,\n Self\n} from '@angular/core';\nimport {\n AbstractControl,\n FormControlName,\n FormGroupDirective,\n NG_VALIDATORS,\n NgControl,\n NgForm,\n NgModel,\n RequiredValidator,\n ValidationErrors,\n Validator,\n ValidatorFn\n} from '@angular/forms';\nimport {\n McValidationOptions,\n MC_VALIDATION\n} from '@ptsecurity/mosaic/core';\n\n\nimport { McFormFieldControl } from './form-field-control';\n\n\n@Directive({\n selector: `\n input[mcInput],\n input[mcInputPassword],\n input[mcTimepicker],\n input[mcDatepicker],\n mc-select,\n mc-tag-list,\n textarea[mcTextarea],\n mc-tree-select\n `,\n exportAs: 'McValidate'\n})\nexport class McValidateDirective implements AfterContentInit {\n get isNgModel(): boolean {\n return this.ngControl instanceof NgModel;\n }\n\n get isFormControl(): boolean {\n return this.ngControl instanceof FormControlName;\n }\n\n get validationControl() {\n const ngControl: any = (this.formFieldControl.ngControl || this.formFieldControl);\n\n return ngControl.control || ngControl;\n }\n\n get parent() {\n return this.parentForm || this.parentFormGroup;\n }\n\n get hasNotSubmittedParent(): boolean {\n return this.parent && !this.parent.submitted;\n }\n\n constructor(\n @Inject(forwardRef(() => McFormFieldControl)) private formFieldControl: McFormFieldControl<any>,\n @Optional() @Self() @Inject(NG_VALIDATORS) public rawValidators: Validator[],\n @Optional() @Self() private ngControl: NgControl,\n @Optional() private parentForm: NgForm,\n @Optional() private parentFormGroup: FormGroupDirective,\n @Optional() @Inject(MC_VALIDATION) private mcValidation: McValidationOptions,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngAfterContentInit() {\n if (this.mcValidation.useValidation) {\n this.setMosaicValidation();\n }\n }\n\n setValidState(control: AbstractControl, validator: ValidatorFn): void {\n if (!control) { return; }\n\n control.clearValidators();\n control.updateValueAndValidity({ emitEvent: false });\n control.setValidators(validator);\n }\n\n /** This function do next:\n * - run validation on submitting parent form\n * - prevent validation in required validator if form doesn't submitted\n * - if control has focus validation will be prevented\n */\n setMosaicValidation(): void {\n if (!this.validationControl) { return; }\n\n this.parent?.ngSubmit\n .subscribe(() => this.validationControl!.updateValueAndValidity({ emitEvent: false }));\n\n if (this.isNgModel) {\n this.setMosaicValidationForModelControl();\n } else if (this.isFormControl) {\n this.setMosaicValidationForFormControl();\n }\n }\n\n setMosaicValidationForModelControl() {\n if (!this.rawValidators) { return; }\n\n this.rawValidators.forEach((validator: Validator) => {\n // tslint:disable-next-line: no-unbound-method\n const originalValidate = validator.validate;\n\n if (validator instanceof RequiredValidator) {\n // changed required validation logic\n validator.validate = (control: AbstractControl): ValidationErrors | null => {\n if (this.hasNotSubmittedParent) { return null; }\n\n return originalValidate.call(validator, control);\n };\n } else {\n // changed all other validation logic\n validator.validate = (control: AbstractControl): ValidationErrors | null => {\n if (this.formFieldControl.focused) { return null; }\n\n return originalValidate.call(validator, control);\n };\n }\n });\n }\n\n setMosaicValidationForFormControl() {\n const originalValidator = this.validationControl.validator;\n\n // changed required validation logic after initialization\n if (this.validationControl.invalid && this.validationControl.errors!.required) {\n Promise.resolve().then(() => {\n this.setValidState(this.validationControl, originalValidator!);\n this.cdr.markForCheck();\n });\n }\n\n // check dynamic updates\n this.validationControl.statusChanges!\n .subscribe(() => {\n // changed required validation logic\n if (this.validationControl.invalid && (this.hasNotSubmittedParent) && this.validationControl.errors!.required) {\n this.setValidState(this.validationControl, originalValidator!);\n }\n\n // changed all other validation logic\n if (this.validationControl.invalid && this.formFieldControl.focused) {\n this.setValidState(this.validationControl, originalValidator!);\n }\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { McIconModule } from '@ptsecurity/mosaic/icon';\n\nimport { McCleaner } from './cleaner';\nimport { McFormField, McFormFieldWithoutBorders } from './form-field';\nimport { McHint } from './hint';\nimport { McPasswordHint } from './password-hint';\nimport { McPrefix } from './prefix';\nimport { McStepper } from './stepper';\nimport { McSuffix } from './suffix';\nimport { McValidateDirective } from './validate.directive';\n\n\n@NgModule({\n declarations: [\n McFormField,\n McFormFieldWithoutBorders,\n McHint,\n McPasswordHint,\n McPrefix,\n McSuffix,\n McCleaner,\n McStepper,\n McValidateDirective\n ],\n imports: [CommonModule, McIconModule],\n exports: [\n McFormField,\n McFormFieldWithoutBorders,\n McHint,\n McPasswordHint,\n McPrefix,\n McSuffix,\n McCleaner,\n McStepper,\n McValidateDirective\n ]\n})\nexport class McFormFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"ptsecurity-mosaic-form-field.mjs","sources":["../../../packages/mosaic/form-field/cleaner.ts","../../../packages/mosaic/form-field/form-field-control.ts","../../../packages/mosaic/form-field/form-field-errors.ts","../../../packages/mosaic/form-field/hint.ts","../../../packages/mosaic/form-field/password-hint.ts","../../../packages/mosaic/form-field/prefix.ts","../../../packages/mosaic/form-field/stepper.ts","../../../packages/mosaic/form-field/suffix.ts","../../../packages/mosaic/form-field/form-field.ts","../../../packages/mosaic/form-field/form-field.html","../../../packages/mosaic/form-field/validate.directive.ts","../../../packages/mosaic/form-field/form-field.module.ts","../../../packages/mosaic/form-field/ptsecurity-mosaic-form-field.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport { ThemePalette } from '@ptsecurity/mosaic/core';\n\n\n@Component({\n selector: 'mc-cleaner',\n exportAs: 'mcCleaner',\n template: `<i class=\"mc-icon_light\" mc-icon=\"mc-close-circle_16\" [color]=\"themePalette.Second\"></i>`,\n host: {\n class: 'mc-cleaner'\n }\n})\nexport class McCleaner {\n themePalette = ThemePalette;\n}\n","import { NgControl } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\n\n/** An interface which allows a control to work inside of a `MсFormField`. */\n// tslint:disable-next-line:naming-convention\nexport abstract class McFormFieldControl<T> {\n /** The value of the control. */\n value: T | null;\n\n /**\n * Stream that emits whenever the state of the control changes such that the parent `MсFormField`\n * needs to run change detection.\n */\n readonly stateChanges: Observable<void>;\n\n /** The element ID for this control. */\n readonly id: string;\n\n /** The placeholder for this control. */\n readonly placeholder: string;\n\n /** Gets the NgControl for this control. */\n readonly ngControl: NgControl | null;\n\n /** Whether the control is focused. */\n readonly focused: boolean;\n\n /** Whether the control is empty. */\n readonly empty: boolean;\n\n /** Whether the control is required. */\n readonly required: boolean;\n\n /** Whether the control is disabled. */\n readonly disabled: boolean;\n\n /** Whether the control is in an error state. */\n readonly errorState: boolean;\n\n /**\n * An optional name for the control type that can be used to distinguish `mc-form-field` elements\n * based on their control type. The form field will add a class,\n * `mc-form-field-type-{{controlType}}` to its root element.\n */\n readonly controlType?: string;\n\n /** Handles a click on the control's container. */\n abstract onContainerClick(event: MouseEvent): void;\n\n abstract focus(): void;\n}\n","export function getMcFormFieldMissingControlError(): Error {\n return Error('mc-form-field must contain a McFormFieldControl.');\n}\n\nexport function getMcFormFieldYouCanNotUseCleanerInNumberInputError(): Error {\n return Error(`You can't use mc-cleaner with input that have type=\"number\"`);\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { CanColorCtor, mixinColor } from '@ptsecurity/mosaic/core';\n\n\nlet nextHintUniqueId = 0;\n\nexport class McHintBase {\n constructor(public elementRef: ElementRef) {}\n}\n\n// tslint:disable-next-line:naming-convention\nexport const McHintMixinBase: CanColorCtor &\n typeof McHintBase = mixinColor(McHintBase);\n\n@Directive({\n selector: 'mc-hint',\n inputs: ['color'],\n host: {\n class: 'mc-hint',\n '[attr.id]': 'id'\n }\n})\nexport class McHint extends McHintMixinBase {\n @Input() id: string = `mc-hint-${nextHintUniqueId++}`;\n\n constructor(elementRef: ElementRef) {\n super(elementRef);\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n Inject,\n Input\n} from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { MC_FORM_FIELD } from './form-field';\n\n\nlet nextPasswordHintUniqueId = 0;\n\nexport enum PasswordRules {\n Length,\n UpperLatin,\n LowerLatin,\n Digit,\n LatinAndSpecialSymbols,\n Custom\n}\n\nexport const regExpPasswordValidator = {\n [PasswordRules.LowerLatin]: RegExp(/^(?=.*?[a-z])/),\n [PasswordRules.UpperLatin]: RegExp(/^(?=.*?[A-Z])/),\n [PasswordRules.Digit]: RegExp(/^(?=.*?[0-9])/),\n [PasswordRules.LatinAndSpecialSymbols]: RegExp(/[^ !`\"'#№$%&()*+,-./\\\\:;<=>?@[\\]^_{|}~A-Za-z0-9]/)\n};\n\n\n@Component({\n selector: 'mc-password-hint',\n template: `\n <i *ngIf=\"!checked\" class=\"mc-password-hint__icon\" mc-icon=\"mc-close-M_16\"></i>\n <i *ngIf=\"checked\" class=\"mc-password-hint__icon\" mc-icon=\"mc-check_16\"></i>\n\n <span class=\"mc-password-hint__text\">\n <ng-content></ng-content>\n </span>\n `,\n host: {\n class: 'mc-password-hint',\n '[class.mc-password-hint_valid]': 'checked',\n '[class.mc-password-hint_invalid]': 'hasError',\n '[attr.id]': 'id'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McPasswordHint implements AfterContentInit {\n @Input() id: string = `mc-hint-${nextPasswordHintUniqueId++}`;\n\n @Input() rule: PasswordRules | any;\n\n @Input() min: number;\n @Input() max: number;\n @Input() regex: RegExp | null;\n\n hasError: boolean = false;\n checked: boolean = false;\n\n private checkRule: (value: string) => boolean;\n\n private get control() {\n return this.formField.control;\n }\n\n private lastControlValue: string;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n @Inject(forwardRef(() => MC_FORM_FIELD)) private formField: any\n ) {}\n\n ngAfterContentInit(): void {\n if (this.rule === null) {\n throw Error('You should set [rule] name');\n }\n\n if (this.rule === PasswordRules.Custom && this.regex === undefined) {\n throw Error('You should set [regex] for PasswordRules.Custom');\n }\n\n if (this.rule === PasswordRules.Length && (this.min || this.max) === null) {\n throw Error('For [rule] \"Length\" need set [min] and [max]');\n }\n\n if (this.rule === PasswordRules.Length) {\n this.checkRule = this.checkLengthRule;\n } else if ([PasswordRules.UpperLatin, PasswordRules.LowerLatin, PasswordRules.Digit].includes(this.rule)) {\n this.regex = regExpPasswordValidator[this.rule];\n this.checkRule = this.checkRegexRule;\n } else if (this.rule === PasswordRules.LatinAndSpecialSymbols) {\n this.regex = regExpPasswordValidator[this.rule];\n this.checkRule = this.checkSpecialSymbolsRegexRule;\n } else if (this.rule === PasswordRules.Custom) {\n this.checkRule = this.checkRegexRule;\n } else {\n throw Error(`Unknown [rule]=${this.rule}`);\n }\n\n this.formField.control.stateChanges\n .subscribe(this.checkValue);\n\n (this.formField.control as unknown as { checkRule: Subject<any> }).checkRule\n .subscribe(() => {\n this.checked = this.checkRule(this.control.value);\n this.hasError = !this.checkRule(this.control.value);\n });\n }\n\n private checkValue = () => {\n if (this.control.focused && this.isValueChanged()) {\n this.hasError = false;\n\n this.checked = this.checkRule(this.control.value);\n } else if (!this.control.focused && !this.isValueChanged()) {\n this.hasError = !this.checkRule(this.control.value);\n }\n\n if (!this.control.required && !this.control.value) {\n this.checked = this.hasError = false;\n }\n\n this.lastControlValue = this.control.value;\n this.changeDetectorRef.markForCheck();\n }\n\n private checkLengthRule(value: string): boolean {\n return value.length >= this.min && value.length <= this.max;\n }\n\n private checkRegexRule(value: string): boolean {\n return !!this.regex?.test(value);\n }\n\n private checkSpecialSymbolsRegexRule(value: string): boolean {\n return !!value && !this.regex?.test(value);\n }\n\n private isValueChanged(): boolean {\n return this.lastControlValue !== this.formField.control.value;\n }\n}\n","import { Directive } from '@angular/core';\n\n\n@Directive({\n selector: '[mcPrefix]'\n})\nexport class McPrefix {}\n","import { Component, EventEmitter, Output } from '@angular/core';\n\n\n@Component({\n selector: 'mc-stepper',\n template: `\n <i class=\"mc mc-icon mc-icon_light mc-second mc-stepper-step-up mc-angle-down-L_16\"\n (mousedown)=\"onStepUp($event)\">\n </i>\n <i class=\"mc mc-icon mc-icon_light mc-second mc-stepper-step-down mc-angle-down-L_16\"\n (mousedown)=\"onStepDown($event)\">\n </i>\n `\n})\nexport class McStepper {\n @Output()\n readonly stepUp: EventEmitter<void> = new EventEmitter<void>();\n @Output()\n readonly stepDown: EventEmitter<void> = new EventEmitter<void>();\n\n connectTo(numberInput: any) {\n if (!numberInput) { return; }\n\n this.stepUp.subscribe(() => {\n numberInput.stepUp(numberInput.step);\n });\n\n this.stepDown.subscribe(() => {\n numberInput.stepDown(numberInput.step);\n });\n }\n\n onStepUp($event: MouseEvent) {\n this.stepUp.emit();\n $event.preventDefault();\n }\n\n onStepDown($event: MouseEvent) {\n this.stepDown.emit();\n $event.preventDefault();\n }\n}\n","import { Directive } from '@angular/core';\n\n\n@Directive({\n selector: '[mcSuffix]'\n})\nexport class McSuffix {}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterContentChecked,\n AfterContentInit,\n AfterViewInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n ElementRef,\n InjectionToken,\n OnDestroy,\n Optional,\n QueryList,\n Self,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { ESCAPE, F8 } from '@ptsecurity/cdk/keycodes';\nimport { CanColor, CanColorCtor, mixinColor } from '@ptsecurity/mosaic/core';\nimport { EMPTY, merge, Subject } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\n\nimport { McCleaner } from './cleaner';\nimport { McFormFieldControl } from './form-field-control';\nimport {\n getMcFormFieldMissingControlError,\n getMcFormFieldYouCanNotUseCleanerInNumberInputError\n} from './form-field-errors';\nimport { McHint } from './hint';\nimport { McPasswordHint } from './password-hint';\nimport { McPrefix } from './prefix';\nimport { McStepper } from './stepper';\nimport { McSuffix } from './suffix';\n\n\nlet nextUniqueId = 0;\n\n/**\n * Injection token that can be used to inject an instances of `MatFormField`. It serves\n * as alternative token to the actual `MatFormField` class which would cause unnecessary\n * retention of the `MatFormField` class and its component metadata.\n */\nexport const MC_FORM_FIELD = new InjectionToken<McFormField>('McFormField');\n\nexport class McFormFieldBase {\n constructor(public elementRef: ElementRef) {}\n}\n\n// tslint:disable-next-line:naming-convention\nexport const McFormFieldMixinBase: CanColorCtor & typeof McFormFieldBase = mixinColor(McFormFieldBase);\n\n@Component({\n selector: 'mc-form-field',\n exportAs: 'mcFormField',\n templateUrl: 'form-field.html',\n // McInput is a directive and can't have styles, so we need to include its styles here.\n // The McInput styles are fairly minimal so it shouldn't be a big deal for people who\n // aren't using McInput.\n styleUrls: [\n 'form-field.scss',\n '../input/input.scss',\n '../timepicker/timepicker.scss',\n '../datepicker/datepicker-input.scss',\n '../textarea/textarea.scss'\n ],\n host: {\n class: 'mc-form-field',\n '[class.mc-form-field_invalid]': 'control.errorState',\n '[class.mc-form-field_has-prefix]': 'hasPrefix',\n '[class.mc-form-field_has-suffix]': 'hasSuffix',\n '[class.mc-form-field_has-cleaner]': 'canShowCleaner',\n '[class.mc-form-field_has-stepper]': 'canShowStepper',\n\n '[class.mc-disabled]': 'control.disabled',\n\n '[class.ng-untouched]': 'shouldForward(\"untouched\")',\n '[class.ng-touched]': 'shouldForward(\"touched\")',\n '[class.ng-pristine]': 'shouldForward(\"pristine\")',\n '[class.ng-dirty]': 'shouldForward(\"dirty\")',\n '[class.ng-valid]': 'shouldForward(\"valid\")',\n '[class.ng-invalid]': 'shouldForward(\"invalid\")',\n '[class.ng-pending]': 'shouldForward(\"pending\")',\n\n '(keydown)': 'onKeyDown($event)',\n '(mouseenter)': 'onHoverChanged(true)',\n '(mouseleave)': 'onHoverChanged(false)'\n },\n inputs: ['color'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: MC_FORM_FIELD, useExisting: McFormField }]\n})\nexport class McFormField extends McFormFieldMixinBase implements\n AfterContentInit, AfterContentChecked, AfterViewInit, CanColor, OnDestroy {\n\n @ContentChild(McFormFieldControl, { static: false }) control: McFormFieldControl<any>;\n @ContentChild(McStepper, { static: false }) stepper: McStepper;\n @ContentChild(McCleaner, { static: false }) cleaner: McCleaner | null;\n\n @ContentChildren(McHint) hint: QueryList<McHint>;\n @ContentChildren(McPasswordHint) passwordHints: QueryList<McPasswordHint>;\n @ContentChildren(McSuffix) suffix: QueryList<McSuffix>;\n @ContentChildren(McPrefix) prefix: QueryList<McPrefix>;\n\n @ViewChild('connectionContainer', { static: true }) connectionContainerRef: ElementRef;\n\n // Unique id for the internal form field label.\n labelId = `mc-form-field-label-${nextUniqueId++}`;\n\n hovered: boolean = false;\n\n canCleanerClearByEsc: boolean = true;\n\n private $unsubscribe = new Subject<void>();\n\n get hasHint(): boolean {\n return this.hint?.length > 0;\n }\n\n get hasPasswordStrengthError(): boolean {\n return this.passwordHints?.some((hint) => hint.hasError);\n }\n\n get hasSuffix(): boolean {\n return this.suffix?.length > 0;\n }\n\n get hasPrefix(): boolean {\n return this.prefix?.length > 0;\n }\n\n get hasCleaner(): boolean {\n return !!this.cleaner;\n }\n\n get hasStepper(): boolean {\n return !!this.stepper;\n }\n\n get canShowCleaner(): boolean {\n return this.hasCleaner &&\n this.control?.ngControl\n ? this.control.ngControl.value && !this.control.disabled\n : false;\n }\n\n get disabled(): boolean {\n return this.control?.disabled;\n }\n\n get canShowStepper(): boolean {\n return this.hasStepper &&\n !this.disabled &&\n (this.control?.focused || this.hovered);\n }\n\n constructor(\n public elementRef: ElementRef,\n private changeDetectorRef: ChangeDetectorRef,\n private focusMonitor: FocusMonitor\n ) {\n super(elementRef);\n\n this.runFocusMonitor();\n }\n\n ngAfterContentInit() {\n if ((this.control as any).numberInput && this.hasCleaner) {\n this.cleaner = null;\n throw getMcFormFieldYouCanNotUseCleanerInNumberInputError();\n }\n\n this.validateControlChild();\n\n if (this.control.controlType) {\n this.elementRef.nativeElement.classList.add(`mc-form-field-type-${this.control.controlType}`);\n }\n\n // Subscribe to changes in the child control state in order to update the form field UI.\n this.control.stateChanges\n .pipe(startWith())\n .subscribe((state: any) => {\n if (!state?.focused && this.hasPasswordStrengthError) {\n this.control.ngControl?.control?.setErrors({ passwordStrength: true });\n }\n\n this.changeDetectorRef.markForCheck();\n });\n\n if (this.hasStepper) {\n this.stepper.connectTo((this.control as any).numberInput);\n }\n\n // Run change detection if the value changes.\n const valueChanges = this.control.ngControl?.valueChanges || EMPTY;\n\n merge(valueChanges)\n .pipe(takeUntil(this.$unsubscribe))\n .subscribe(() => this.changeDetectorRef.markForCheck());\n }\n\n ngAfterContentChecked() {\n this.validateControlChild();\n }\n\n ngAfterViewInit() {\n // Avoid animations on load.\n this.changeDetectorRef.detectChanges();\n }\n\n clearValue($event) {\n $event.stopPropagation();\n\n this.control?.ngControl?.reset();\n this.control?.focus();\n }\n\n onContainerClick($event) {\n if (this.control.onContainerClick) {\n this.control.onContainerClick($event);\n }\n }\n\n onKeyDown(event: KeyboardEvent): void {\n // tslint:disable-next-line:deprecation\n if (this.control.controlType === 'input-password' && event.altKey && event.keyCode === F8) {\n (this.control as unknown as { toggleType(): void }).toggleType();\n }\n // tslint:disable-next-line:deprecation\n if (this.canCleanerClearByEsc && event.keyCode === ESCAPE && this.control.focused && this.hasCleaner) {\n this.control?.ngControl?.reset();\n\n event.preventDefault();\n }\n }\n\n onHoverChanged(isHovered: boolean) {\n if (isHovered !== this.hovered) {\n this.hovered = isHovered;\n this.changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Gets an ElementRef for the element that a overlay attached to the form-field should be\n * positioned relative to.\n */\n getConnectedOverlayOrigin(): ElementRef {\n return this.connectionContainerRef || this.elementRef;\n }\n\n /** Determines whether a class from the NgControl should be forwarded to the host element. */\n shouldForward(prop: keyof NgControl): boolean {\n const ngControl = this.control?.ngControl;\n\n return ngControl && ngControl[prop];\n }\n\n ngOnDestroy(): void {\n this.$unsubscribe.next();\n this.$unsubscribe.complete();\n\n this.stopFocusMonitor();\n }\n\n runFocusMonitor() {\n this.focusMonitor.monitor(this.elementRef.nativeElement, true);\n }\n\n stopFocusMonitor() {\n this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);\n }\n\n /** Throws an error if the form field's control is missing. */\n protected validateControlChild() {\n if (!this.control) {\n throw getMcFormFieldMissingControlError();\n }\n }\n}\n\n@Directive({\n selector: 'mc-form-field[mcFormFieldWithoutBorders]',\n exportAs: 'mcFormFieldWithoutBorders',\n host: { class: 'mc-form-field_without-borders' }\n})\nexport class McFormFieldWithoutBorders {}\n\n\n@Directive({\n selector: '[mcInput], [mcTextarea]',\n exportAs: 'McTrim',\n host: { class: 'mc-trim' }\n})\nexport class McTrim {\n private original: (fn: any) => void;\n\n constructor(\n @Attribute('no-trim') private readonly noTrim: boolean,\n @Optional() @Self() private ngControl: NgControl\n ) {\n this.noTrim = coerceBooleanProperty(noTrim);\n\n if (this.noTrim || !this.ngControl?.valueAccessor) { return; }\n\n this.original = this.ngControl.valueAccessor.registerOnChange;\n\n this.ngControl.valueAccessor.registerOnChange = this.registerOnChange;\n }\n\n trim(value) {\n if (this.noTrim) { return value; }\n\n return typeof value === 'string' ? value.trim() : value;\n }\n\n private registerOnChange = (fn) => {\n return this.original.call(this.ngControl.valueAccessor, (value) => fn(this.trim(value)));\n }\n}\n","<div class=\"mc-form-field__container\" (click)=\"onContainerClick($event)\">\n\n <div class=\"mc-form-field__prefix\" *ngIf=\"hasPrefix\">\n <ng-content select=\"[mcPrefix]\"></ng-content>\n </div>\n\n <div class=\"mc-form-field__infix\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"mc-form-field__suffix\" *ngIf=\"hasSuffix\">\n <ng-content select=\"[mcSuffix]\"></ng-content>\n </div>\n\n <div class=\"mc-form-field__cleaner\"\n *ngIf=\"canShowCleaner && !hasSuffix\"\n (click)=\"clearValue($event)\">\n <ng-content select=\"mc-cleaner\"></ng-content>\n </div>\n\n <ng-content select=\"mc-password-toggle\"></ng-content>\n\n <ng-content *ngIf=\"canShowStepper\" select=\"mc-stepper\"></ng-content>\n</div>\n\n<div class=\"mc-form-field__hint\">\n <ng-content select=\"mc-hint, mc-password-hint\"></ng-content>\n</div>\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n Directive,\n forwardRef,\n Inject,\n Optional,\n Self\n} from '@angular/core';\nimport {\n AbstractControl,\n FormControlName,\n FormGroupDirective,\n NG_VALIDATORS,\n NgControl,\n NgForm,\n NgModel,\n RequiredValidator,\n ValidationErrors,\n Validator,\n ValidatorFn\n} from '@angular/forms';\nimport {\n McValidationOptions,\n MC_VALIDATION\n} from '@ptsecurity/mosaic/core';\n\n\nimport { McFormFieldControl } from './form-field-control';\n\n\n@Directive({\n selector: `\n input[mcInput],\n input[mcInputPassword],\n input[mcTimepicker],\n input[mcDatepicker],\n mc-select,\n mc-tag-list,\n textarea[mcTextarea],\n mc-tree-select\n `,\n exportAs: 'McValidate'\n})\nexport class McValidateDirective implements AfterContentInit {\n get isNgModel(): boolean {\n return this.ngControl instanceof NgModel;\n }\n\n get isFormControl(): boolean {\n return this.ngControl instanceof FormControlName;\n }\n\n get validationControl() {\n const ngControl: any = (this.formFieldControl.ngControl || this.formFieldControl);\n\n return ngControl.control || ngControl;\n }\n\n get parent() {\n return this.parentForm || this.parentFormGroup;\n }\n\n get hasNotSubmittedParent(): boolean {\n return this.parent && !this.parent.submitted;\n }\n\n constructor(\n @Inject(forwardRef(() => McFormFieldControl)) private formFieldControl: McFormFieldControl<any>,\n @Optional() @Self() @Inject(NG_VALIDATORS) public rawValidators: Validator[],\n @Optional() @Self() private ngControl: NgControl,\n @Optional() private parentForm: NgForm,\n @Optional() private parentFormGroup: FormGroupDirective,\n @Optional() @Inject(MC_VALIDATION) private mcValidation: McValidationOptions,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngAfterContentInit() {\n if (this.mcValidation.useValidation) {\n this.setMosaicValidation();\n }\n }\n\n setValidState(control: AbstractControl, validator: ValidatorFn): void {\n if (!control) { return; }\n\n control.clearValidators();\n control.updateValueAndValidity({ emitEvent: false });\n control.setValidators(validator);\n }\n\n /** This function do next:\n * - run validation on submitting parent form\n * - prevent validation in required validator if form doesn't submitted\n * - if control has focus validation will be prevented\n */\n setMosaicValidation(): void {\n if (!this.validationControl) { return; }\n\n this.parent?.ngSubmit\n .subscribe(() => this.validationControl!.updateValueAndValidity({ emitEvent: false }));\n\n if (this.isNgModel) {\n this.setMosaicValidationForModelControl();\n } else if (this.isFormControl) {\n this.setMosaicValidationForFormControl();\n }\n }\n\n setMosaicValidationForModelControl() {\n if (!this.rawValidators) { return; }\n\n this.rawValidators.forEach((validator: Validator) => {\n // tslint:disable-next-line: no-unbound-method\n const originalValidate = validator.validate;\n\n if (validator instanceof RequiredValidator) {\n // changed required validation logic\n validator.validate = (control: AbstractControl): ValidationErrors | null => {\n if (this.hasNotSubmittedParent) { return null; }\n\n return originalValidate.call(validator, control);\n };\n } else {\n // changed all other validation logic\n validator.validate = (control: AbstractControl): ValidationErrors | null => {\n if (this.formFieldControl.focused) { return null; }\n\n return originalValidate.call(validator, control);\n };\n }\n });\n }\n\n setMosaicValidationForFormControl() {\n const originalValidator = this.validationControl.validator;\n\n // changed required validation logic after initialization\n if (this.validationControl.invalid && this.validationControl.errors!.required) {\n Promise.resolve().then(() => {\n this.setValidState(this.validationControl, originalValidator!);\n this.cdr.markForCheck();\n });\n }\n\n // check dynamic updates\n this.validationControl.statusChanges!\n .subscribe(() => {\n // changed required validation logic\n if (this.validationControl.invalid && (this.hasNotSubmittedParent) && this.validationControl.errors!.required) {\n this.setValidState(this.validationControl, originalValidator!);\n }\n\n // changed all other validation logic\n if (this.validationControl.invalid && this.formFieldControl.focused) {\n this.setValidState(this.validationControl, originalValidator!);\n }\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { McIconModule } from '@ptsecurity/mosaic/icon';\n\nimport { McCleaner } from './cleaner';\nimport { McFormField, McFormFieldWithoutBorders, McTrim } from './form-field';\nimport { McHint } from './hint';\nimport { McPasswordHint } from './password-hint';\nimport { McPrefix } from './prefix';\nimport { McStepper } from './stepper';\nimport { McSuffix } from './suffix';\nimport { McValidateDirective } from './validate.directive';\n\n\n@NgModule({\n declarations: [\n McFormField,\n McFormFieldWithoutBorders,\n McHint,\n McPasswordHint,\n McPrefix,\n McSuffix,\n McCleaner,\n McStepper,\n McValidateDirective,\n McTrim\n ],\n imports: [CommonModule, McIconModule],\n exports: [\n McFormField,\n McFormFieldWithoutBorders,\n McHint,\n McPasswordHint,\n McPrefix,\n McSuffix,\n McCleaner,\n McStepper,\n McValidateDirective,\n McTrim\n ]\n})\nexport class McFormFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3"],"mappings":"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"}
@@ -244,9 +244,8 @@ class McInput extends McInputMixinBase {
244
244
  this._required = false;
245
245
  // tslint:enable no-reserved-keywords
246
246
  this._type = 'text';
247
- // If no input value accessor was explicitly specified, use the element as the input value
248
- // accessor.
249
- this._inputValueAccessor = inputValueAccessor || this.elementRef.nativeElement;
247
+ // If no input value accessor was explicitly specified, use the element as the input value accessor.
248
+ this.inputValueAccessor = inputValueAccessor || this.elementRef.nativeElement;
250
249
  this.previousNativeValue = this.value;
251
250
  // Force setter to be called in case id was not specified.
252
251
  this.id = this.id;
@@ -310,11 +309,11 @@ class McInput extends McInputMixinBase {
310
309
  * @docs-private
311
310
  */
312
311
  get value() {
313
- return this._inputValueAccessor.value;
312
+ return this.inputValueAccessor.value;
314
313
  }
315
314
  set value(value) {
316
315
  if (value !== this.value) {
317
- this._inputValueAccessor.value = value;
316
+ this.inputValueAccessor.value = value;
318
317
  this.stateChanges.next();
319
318
  }
320
319
  }
@@ -341,8 +340,9 @@ class McInput extends McInputMixinBase {
341
340
  this.elementRef.nativeElement.focus();
342
341
  }
343
342
  onBlur() {
343
+ var _a;
344
344
  this.focusChanged(false);
345
- if (this.ngControl && this.ngControl.control) {
345
+ if ((_a = this.ngControl) === null || _a === void 0 ? void 0 : _a.control) {
346
346
  const control = this.ngControl.control;
347
347
  control.updateValueAndValidity({ emitEvent: false });
348
348
  control.statusChanges.emit(control.status);
@@ -350,20 +350,11 @@ class McInput extends McInputMixinBase {
350
350
  }
351
351
  /** Callback for the cases where the focused state of the input changes. */
352
352
  focusChanged(isFocused) {
353
- if (isFocused !== this.focused) {
353
+ if (this.focused !== isFocused) {
354
354
  this.focused = isFocused;
355
355
  this.stateChanges.next();
356
356
  }
357
357
  }
358
- onInput() {
359
- // This is a noop function and is used to let Angular know whenever the value changes.
360
- // Angular will run a new change detection each time the `input` event has been dispatched.
361
- // It's necessary that Angular recognizes the value change, because when floatingLabel
362
- // is set to false and Angular forms aren't used, the placeholder won't recognize the
363
- // value changes and will not disappear.
364
- // Listening to the input event wouldn't be necessary when the input is using the
365
- // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.
366
- }
367
358
  /**
368
359
  * Implemented as part of McFormFieldControl.
369
360
  * @docs-private
@@ -400,11 +391,11 @@ class McInput extends McInputMixinBase {
400
391
  isBadInput() {
401
392
  // The `validity` property won't be present on platform-server.
402
393
  const validity = this.elementRef.nativeElement.validity;
403
- return validity && validity.badInput;
394
+ return validity === null || validity === void 0 ? void 0 : validity.badInput;
404
395
  }
405
396
  }
406
397
  /** @nocollapse */ McInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: McInput, deps: [{ token: i0.ElementRef }, { token: i1.NgControl, optional: true, self: true }, { token: McNumberInput, optional: true, self: true }, { token: i1.NgForm, optional: true }, { token: i1.FormGroupDirective, optional: true }, { token: i3.ErrorStateMatcher }, { token: MC_INPUT_VALUE_ACCESSOR, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });
407
- /** @nocollapse */ McInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.5", type: McInput, selector: "input[mcInput]", inputs: { errorStateMatcher: "errorStateMatcher", placeholder: "placeholder", disabled: "disabled", id: "id", required: "required", type: "type", value: "value" }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)", "input": "onInput()" }, properties: { "attr.id": "id", "attr.placeholder": "placeholder", "attr.disabled": "disabled || null", "required": "required" }, classAttribute: "mc-input" }, providers: [{
398
+ /** @nocollapse */ McInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.5", type: McInput, selector: "input[mcInput]", inputs: { errorStateMatcher: "errorStateMatcher", placeholder: "placeholder", disabled: "disabled", id: "id", required: "required", type: "type", value: "value" }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)" }, properties: { "attr.id": "id", "attr.placeholder": "placeholder", "attr.disabled": "disabled || null", "required": "required" }, classAttribute: "mc-input" }, providers: [{
408
399
  provide: McFormFieldControl, useExisting: McInput
409
400
  }], exportAs: ["mcInput"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
410
401
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: McInput, decorators: [{
@@ -421,8 +412,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImpor
421
412
  '[attr.disabled]': 'disabled || null',
422
413
  '[required]': 'required',
423
414
  '(blur)': 'onBlur()',
424
- '(focus)': 'focusChanged(true)',
425
- '(input)': 'onInput()'
415
+ '(focus)': 'focusChanged(true)'
426
416
  },
427
417
  providers: [{
428
418
  provide: McFormFieldControl, useExisting: McInput