novo-elements 8.3.0 → 8.4.0-next.1

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 (205) hide show
  1. package/addons/ace-editor/AceEditor.d.ts +4 -2
  2. package/addons/code-editor/CodeEditor.d.ts +31 -0
  3. package/addons/code-editor/CodeEditor.module.d.ts +9 -0
  4. package/addons/code-editor/CodeEditor.scss +5 -0
  5. package/addons/code-editor/index.d.ts +2 -0
  6. package/addons/code-editor/novo-elements-addons-code-editor.d.ts +5 -0
  7. package/addons/code-editor/package.json +10 -0
  8. package/addons/index.d.ts +1 -0
  9. package/elements/aside/aside.component.scss +1 -1
  10. package/elements/calendar/Calendar.module.d.ts +2 -3
  11. package/elements/checkbox/CheckList.scss +1 -1
  12. package/elements/checkbox/Checkbox.scss +1 -1
  13. package/elements/common/overlay/Overlay.d.ts +1 -0
  14. package/elements/date-picker/DatePicker.module.d.ts +2 -2
  15. package/elements/date-picker/DatePickerInput.d.ts +8 -5
  16. package/elements/date-picker/MultiDateInput.d.ts +0 -1
  17. package/elements/date-time-picker/DateTimePicker.module.d.ts +2 -3
  18. package/elements/drag-drop/drag-drop-box.d.ts +45 -0
  19. package/elements/drag-drop/drag-drop.module.d.ts +7 -0
  20. package/elements/drag-drop/index.d.ts +2 -0
  21. package/elements/drag-drop/novo-elements-elements-drag-drop.d.ts +5 -0
  22. package/elements/drag-drop/package.json +10 -0
  23. package/elements/dropdown/Dropdown.d.ts +7 -1
  24. package/elements/field/formats/date-time-format.d.ts +2 -2
  25. package/elements/form/Control.d.ts +9 -6
  26. package/elements/form/ControlTemplates.d.ts +1 -1
  27. package/elements/form/Form.module.d.ts +6 -6
  28. package/elements/form/controls/code-editor/CodeEditorControl.d.ts +5 -0
  29. package/elements/form/controls/code-editor/index.d.ts +1 -0
  30. package/elements/form/controls/index.d.ts +2 -1
  31. package/elements/form/extras/FormExtras.module.d.ts +4 -4
  32. package/elements/form/extras/file/FileInput.d.ts +15 -16
  33. package/elements/form/extras/file/FileInput.scss +58 -30
  34. package/elements/index.d.ts +1 -0
  35. package/elements/query-builder/condition-builder/condition-builder.component.scss +1 -1
  36. package/elements/query-builder/condition-definitions/address-condition.definition.d.ts +1 -1
  37. package/elements/select-search/select-search.component.scss +1 -1
  38. package/elements/table/Table.module.d.ts +5 -6
  39. package/elements/time-picker/TimePicker.d.ts +2 -3
  40. package/elements/time-picker/TimePicker.module.d.ts +3 -4
  41. package/elements/time-picker/TimePickerInput.d.ts +0 -1
  42. package/esm2020/addons/ace-editor/AceEditor.mjs +8 -4
  43. package/esm2020/addons/ckeditor/CKEditor.mjs +8 -1
  44. package/esm2020/addons/code-editor/CodeEditor.mjs +129 -0
  45. package/esm2020/addons/code-editor/CodeEditor.module.mjs +19 -0
  46. package/esm2020/addons/code-editor/index.mjs +3 -0
  47. package/esm2020/addons/code-editor/novo-elements-addons-code-editor.mjs +5 -0
  48. package/esm2020/addons/index.mjs +2 -1
  49. package/esm2020/elements/breadcrumbs/breadcrumb-item/BreadcrumbItem.mjs +1 -1
  50. package/esm2020/elements/calendar/Calendar.module.mjs +5 -7
  51. package/esm2020/elements/calendar/calendar.component.mjs +3 -3
  52. package/esm2020/elements/calendar/month-select/month-select.component.mjs +3 -3
  53. package/esm2020/elements/calendar/month-view/month-view.component.mjs +3 -3
  54. package/esm2020/elements/calendar/year-select/year-select.component.mjs +3 -3
  55. package/esm2020/elements/common/overlay/Overlay.mjs +11 -5
  56. package/esm2020/elements/data-table/cell-headers/data-table-header-cell.component.mjs +1 -1
  57. package/esm2020/elements/data-table/data-table-clear-button.component.mjs +1 -1
  58. package/esm2020/elements/data-table/data-table.component.mjs +2 -2
  59. package/esm2020/elements/date-picker/DatePicker.module.mjs +6 -6
  60. package/esm2020/elements/date-picker/DatePickerInput.mjs +50 -29
  61. package/esm2020/elements/date-picker/DateRangeInput.mjs +10 -16
  62. package/esm2020/elements/date-picker/MultiDateInput.mjs +1 -17
  63. package/esm2020/elements/date-time-picker/DateTimePicker.module.mjs +4 -5
  64. package/esm2020/elements/drag-drop/drag-drop-box.mjs +224 -0
  65. package/esm2020/elements/drag-drop/drag-drop.module.mjs +16 -0
  66. package/esm2020/elements/drag-drop/index.mjs +3 -0
  67. package/esm2020/elements/drag-drop/novo-elements-elements-drag-drop.mjs +5 -0
  68. package/esm2020/elements/dropdown/Dropdown.mjs +29 -4
  69. package/esm2020/elements/field/formats/date-format.mjs +5 -5
  70. package/esm2020/elements/field/formats/date-range-format.mjs +5 -5
  71. package/esm2020/elements/field/formats/date-time-format.mjs +12 -12
  72. package/esm2020/elements/field/formats/time-format.mjs +6 -6
  73. package/esm2020/elements/form/Control.mjs +20 -8
  74. package/esm2020/elements/form/ControlTemplates.mjs +54 -27
  75. package/esm2020/elements/form/Form.module.mjs +12 -13
  76. package/esm2020/elements/form/NovoFormControl.mjs +1 -2
  77. package/esm2020/elements/form/controls/code-editor/CodeEditorControl.mjs +9 -0
  78. package/esm2020/elements/form/controls/code-editor/index.mjs +2 -0
  79. package/esm2020/elements/form/controls/index.mjs +3 -2
  80. package/esm2020/elements/form/controls/timezone/TimezoneControl.mjs +2 -2
  81. package/esm2020/elements/form/extras/FormExtras.module.mjs +8 -9
  82. package/esm2020/elements/form/extras/file/FileInput.mjs +38 -261
  83. package/esm2020/elements/index.mjs +2 -1
  84. package/esm2020/elements/query-builder/condition-definitions/address-condition.definition.mjs +2 -2
  85. package/esm2020/elements/query-builder/condition-group/condition-group.component.mjs +1 -1
  86. package/esm2020/elements/simple-table/cell-header.mjs +2 -2
  87. package/esm2020/elements/simple-table/cell.mjs +1 -1
  88. package/esm2020/elements/tabbed-group-picker/TabbedGroupPicker.mjs +1 -1
  89. package/esm2020/elements/table/Table.mjs +1 -1
  90. package/esm2020/elements/table/Table.module.mjs +1 -6
  91. package/esm2020/elements/table/extras/dropdown-cell/DropdownCell.mjs +1 -1
  92. package/esm2020/elements/time-picker/TimePicker.mjs +5 -6
  93. package/esm2020/elements/time-picker/TimePicker.module.mjs +4 -5
  94. package/esm2020/elements/time-picker/TimePickerInput.mjs +3 -65
  95. package/esm2020/index.mjs +1 -1
  96. package/esm2020/novo-elements.module.mjs +9 -3
  97. package/esm2020/novo-elements.providers.mjs +2 -2
  98. package/esm2020/services/date-format/DateFormat.mjs +153 -47
  99. package/esm2020/services/global/global.service.mjs +7 -1
  100. package/esm2020/utils/date/Date.mjs +1 -1
  101. package/esm2020/utils/date/index.mjs +3 -2
  102. package/esm2020/utils/date/timezone-support.mjs +87 -0
  103. package/fesm2015/novo-elements-addons-ace-editor.mjs +7 -3
  104. package/fesm2015/novo-elements-addons-ace-editor.mjs.map +1 -1
  105. package/fesm2015/novo-elements-addons-ckeditor.mjs +7 -0
  106. package/fesm2015/novo-elements-addons-ckeditor.mjs.map +1 -1
  107. package/fesm2015/novo-elements-addons-code-editor.mjs +150 -0
  108. package/fesm2015/novo-elements-addons-code-editor.mjs.map +1 -0
  109. package/fesm2015/novo-elements-addons.mjs +155 -5
  110. package/fesm2015/novo-elements-addons.mjs.map +1 -1
  111. package/fesm2015/novo-elements-elements-breadcrumbs.mjs +1 -1
  112. package/fesm2015/novo-elements-elements-breadcrumbs.mjs.map +1 -1
  113. package/fesm2015/novo-elements-elements-calendar.mjs +12 -13
  114. package/fesm2015/novo-elements-elements-calendar.mjs.map +1 -1
  115. package/fesm2015/novo-elements-elements-common.mjs +10 -2
  116. package/fesm2015/novo-elements-elements-common.mjs.map +1 -1
  117. package/fesm2015/novo-elements-elements-data-table.mjs +3 -3
  118. package/fesm2015/novo-elements-elements-data-table.mjs.map +1 -1
  119. package/fesm2015/novo-elements-elements-date-picker.mjs +64 -62
  120. package/fesm2015/novo-elements-elements-date-picker.mjs.map +1 -1
  121. package/fesm2015/novo-elements-elements-date-time-picker.mjs +3 -4
  122. package/fesm2015/novo-elements-elements-date-time-picker.mjs.map +1 -1
  123. package/fesm2015/novo-elements-elements-drag-drop.mjs +245 -0
  124. package/fesm2015/novo-elements-elements-drag-drop.mjs.map +1 -0
  125. package/fesm2015/novo-elements-elements-dropdown.mjs +28 -3
  126. package/fesm2015/novo-elements-elements-dropdown.mjs.map +1 -1
  127. package/fesm2015/novo-elements-elements-field.mjs +19 -19
  128. package/fesm2015/novo-elements-elements-field.mjs.map +1 -1
  129. package/fesm2015/novo-elements-elements-form.mjs +124 -300
  130. package/fesm2015/novo-elements-elements-form.mjs.map +1 -1
  131. package/fesm2015/novo-elements-elements-query-builder.mjs +1 -1
  132. package/fesm2015/novo-elements-elements-query-builder.mjs.map +1 -1
  133. package/fesm2015/novo-elements-elements-simple-table.mjs +2 -2
  134. package/fesm2015/novo-elements-elements-simple-table.mjs.map +1 -1
  135. package/fesm2015/novo-elements-elements-tabbed-group-picker.mjs +1 -1
  136. package/fesm2015/novo-elements-elements-tabbed-group-picker.mjs.map +1 -1
  137. package/fesm2015/novo-elements-elements-table.mjs +2 -6
  138. package/fesm2015/novo-elements-elements-table.mjs.map +1 -1
  139. package/fesm2015/novo-elements-elements-time-picker.mjs +7 -71
  140. package/fesm2015/novo-elements-elements-time-picker.mjs.map +1 -1
  141. package/fesm2015/novo-elements-elements.mjs +1 -0
  142. package/fesm2015/novo-elements-elements.mjs.map +1 -1
  143. package/fesm2015/novo-elements-services.mjs +158 -46
  144. package/fesm2015/novo-elements-services.mjs.map +1 -1
  145. package/fesm2015/novo-elements-utils.mjs +88 -1
  146. package/fesm2015/novo-elements-utils.mjs.map +1 -1
  147. package/fesm2015/novo-elements.mjs +8 -2
  148. package/fesm2015/novo-elements.mjs.map +1 -1
  149. package/fesm2020/novo-elements-addons-ace-editor.mjs +7 -3
  150. package/fesm2020/novo-elements-addons-ace-editor.mjs.map +1 -1
  151. package/fesm2020/novo-elements-addons-ckeditor.mjs +7 -0
  152. package/fesm2020/novo-elements-addons-ckeditor.mjs.map +1 -1
  153. package/fesm2020/novo-elements-addons-code-editor.mjs +150 -0
  154. package/fesm2020/novo-elements-addons-code-editor.mjs.map +1 -0
  155. package/fesm2020/novo-elements-addons.mjs +155 -5
  156. package/fesm2020/novo-elements-addons.mjs.map +1 -1
  157. package/fesm2020/novo-elements-elements-breadcrumbs.mjs +1 -1
  158. package/fesm2020/novo-elements-elements-breadcrumbs.mjs.map +1 -1
  159. package/fesm2020/novo-elements-elements-calendar.mjs +12 -13
  160. package/fesm2020/novo-elements-elements-calendar.mjs.map +1 -1
  161. package/fesm2020/novo-elements-elements-common.mjs +8 -2
  162. package/fesm2020/novo-elements-elements-common.mjs.map +1 -1
  163. package/fesm2020/novo-elements-elements-data-table.mjs +3 -3
  164. package/fesm2020/novo-elements-elements-data-table.mjs.map +1 -1
  165. package/fesm2020/novo-elements-elements-date-picker.mjs +62 -62
  166. package/fesm2020/novo-elements-elements-date-picker.mjs.map +1 -1
  167. package/fesm2020/novo-elements-elements-date-time-picker.mjs +3 -4
  168. package/fesm2020/novo-elements-elements-date-time-picker.mjs.map +1 -1
  169. package/fesm2020/novo-elements-elements-drag-drop.mjs +244 -0
  170. package/fesm2020/novo-elements-elements-drag-drop.mjs.map +1 -0
  171. package/fesm2020/novo-elements-elements-dropdown.mjs +28 -3
  172. package/fesm2020/novo-elements-elements-dropdown.mjs.map +1 -1
  173. package/fesm2020/novo-elements-elements-field.mjs +19 -19
  174. package/fesm2020/novo-elements-elements-field.mjs.map +1 -1
  175. package/fesm2020/novo-elements-elements-form.mjs +125 -302
  176. package/fesm2020/novo-elements-elements-form.mjs.map +1 -1
  177. package/fesm2020/novo-elements-elements-query-builder.mjs +1 -1
  178. package/fesm2020/novo-elements-elements-query-builder.mjs.map +1 -1
  179. package/fesm2020/novo-elements-elements-simple-table.mjs +2 -2
  180. package/fesm2020/novo-elements-elements-simple-table.mjs.map +1 -1
  181. package/fesm2020/novo-elements-elements-tabbed-group-picker.mjs +1 -1
  182. package/fesm2020/novo-elements-elements-tabbed-group-picker.mjs.map +1 -1
  183. package/fesm2020/novo-elements-elements-table.mjs +2 -6
  184. package/fesm2020/novo-elements-elements-table.mjs.map +1 -1
  185. package/fesm2020/novo-elements-elements-time-picker.mjs +7 -71
  186. package/fesm2020/novo-elements-elements-time-picker.mjs.map +1 -1
  187. package/fesm2020/novo-elements-elements.mjs +1 -0
  188. package/fesm2020/novo-elements-elements.mjs.map +1 -1
  189. package/fesm2020/novo-elements-services.mjs +158 -46
  190. package/fesm2020/novo-elements-services.mjs.map +1 -1
  191. package/fesm2020/novo-elements-utils.mjs +88 -1
  192. package/fesm2020/novo-elements-utils.mjs.map +1 -1
  193. package/fesm2020/novo-elements.mjs +8 -2
  194. package/fesm2020/novo-elements.mjs.map +1 -1
  195. package/novo-elements.module.d.ts +1 -1
  196. package/novo-elements.scss +1 -1
  197. package/package.json +23 -4
  198. package/services/date-format/DateFormat.d.ts +62 -3
  199. package/services/global/global.service.d.ts +3 -0
  200. package/styles/content/root.scss +1 -1
  201. package/styles/themes/light-test.scss +1 -1
  202. package/styles/themes/light.scss +1 -1
  203. package/styles/variables.scss +1 -1
  204. package/utils/date/index.d.ts +2 -1
  205. package/utils/date/timezone-support.d.ts +5 -0
@@ -13,17 +13,16 @@ import * as i4 from 'novo-elements/elements/button';
13
13
  import { NovoButtonModule } from 'novo-elements/elements/button';
14
14
  import * as i6 from '@angular/common';
15
15
  import { CommonModule } from '@angular/common';
16
- import * as i5 from 'angular2-text-mask';
17
- import { TextMaskModule } from 'angular2-text-mask';
16
+ import * as i5 from 'angular-imask';
17
+ import { IMaskDirectiveModule } from 'angular-imask';
18
18
  import * as i8 from 'novo-elements/pipes';
19
19
  import { NovoPipesModule } from 'novo-elements/pipes';
20
+ import * as i2$3 from 'novo-elements/elements/chips';
21
+ import { NovoChipsModule } from 'novo-elements/elements/chips';
20
22
  import * as i2$1 from 'novo-elements/elements/common';
21
23
  import { NovoOverlayTemplateComponent, NovoOverlayModule } from 'novo-elements/elements/common';
22
24
  import * as i2$2 from 'novo-elements/elements/icon';
23
25
  import { NovoIconModule } from 'novo-elements/elements/icon';
24
- import * as i2$3 from 'novo-elements/elements/chips';
25
- import { NovoChipsModule } from 'novo-elements/elements/chips';
26
- import { createAutoCorrectedDatePipe } from 'text-mask-addons';
27
26
 
28
27
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
29
28
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -502,18 +501,16 @@ class NovoDatePickerInputElement {
502
501
  this._initFormatOptions();
503
502
  }
504
503
  }
504
+ ngAfterViewInit() {
505
+ this.overlay.panelClosingActions.subscribe(this._handleOverlayClickout.bind(this));
506
+ }
505
507
  _initFormatOptions() {
506
508
  this.userDefinedFormat = this.format ? !this.format.match(/^(DD\/MM\/YYYY|MM\/DD\/YYYY)$/g) : false;
507
509
  if (!this.userDefinedFormat && this.textMaskEnabled && !this.allowInvalidDate) {
508
- this.maskOptions = this.maskOptions || {
509
- mask: this.dateFormatService.getDateMask(),
510
- pipe: createAutoCorrectedDatePipe((this.format || this.labels.dateFormatString()).toLowerCase()),
511
- keepCharPositions: false,
512
- guide: true,
513
- };
510
+ this.maskOptions = this.maskOptions || this.dateFormatService.getDateMask(this.format);
514
511
  }
515
512
  else {
516
- this.maskOptions = { mask: false };
513
+ this.maskOptions = undefined;
517
514
  }
518
515
  this.setupInvalidDateErrorMessage();
519
516
  }
@@ -527,32 +524,39 @@ class NovoDatePickerInputElement {
527
524
  this.overlay.closePanel();
528
525
  }
529
526
  get panelOpen() {
530
- return this.overlay && this.overlay.panelOpen;
527
+ return this.overlay?.panelOpen;
531
528
  }
532
529
  /** END: Convenient Panel Methods. */
533
530
  _handleKeydown(event) {
534
531
  if ((event.key === "Escape" /* Escape */ || event.key === "Enter" /* Enter */ || event.key === "Tab" /* Tab */) && this.panelOpen) {
535
- this._handleEvent(event, true);
532
+ this._handleValueUpdate(event.target.value, true);
536
533
  this.closePanel();
537
534
  event.stopPropagation();
538
535
  }
539
536
  }
540
537
  _handleInput(event) {
541
- if (document.activeElement === event.target) {
542
- this._handleEvent(event, false);
538
+ // if maskOptions is enabled, then we do not want to process inputs until the mask has accepted them - so those events will be
539
+ // handled by the (accept) event.
540
+ if (document.activeElement === event.target && !this.maskOptions) {
541
+ this._handleValueUpdate(event.target.value, false);
543
542
  }
544
543
  }
545
544
  _handleBlur(event) {
546
- this.handleInvalidDate();
547
- this.blurEvent.emit(event);
545
+ if (!this.overlay.isBlurRecipient(event)) {
546
+ this.handleInvalidDate();
547
+ this.blurEvent.emit(event);
548
+ }
549
+ }
550
+ _handleOverlayClickout() {
551
+ this.handleInvalidDate(/*fromPanelClose:*/ true);
552
+ this.blurEvent.emit();
548
553
  }
549
554
  _handleFocus(event) {
550
555
  this.showInvalidDateError = false;
551
556
  this.openPanel();
552
557
  this.focusEvent.emit(event);
553
558
  }
554
- _handleEvent(event, blur) {
555
- const value = event.target.value;
559
+ _handleValueUpdate(value, blur) {
556
560
  if (value === '') {
557
561
  this.clearValue();
558
562
  this.closePanel();
@@ -562,15 +566,27 @@ class NovoDatePickerInputElement {
562
566
  this.openPanel();
563
567
  }
564
568
  }
569
+ handleMaskAccept(maskValue) {
570
+ this._handleValueUpdate(maskValue, false);
571
+ }
565
572
  formatDate(value, blur) {
566
573
  try {
567
- const [dateTimeValue, formatted, isInvalidDate] = this.dateFormatService.parseString(value, false, 'date');
574
+ let dateTimeValue;
575
+ let isInvalidDate;
576
+ if (this.format) {
577
+ [dateTimeValue, , isInvalidDate] = this.dateFormatService.parseCustomDateString(value, this.format);
578
+ }
579
+ else {
580
+ [dateTimeValue, , isInvalidDate] = this.dateFormatService.parseString(value, false, 'date');
581
+ }
568
582
  this.isInvalidDate = isInvalidDate;
569
- if (!isNaN(dateTimeValue.getUTCDate())) {
583
+ // if we have a full date - set the dateTimeValue
584
+ if (dateTimeValue?.getFullYear()?.toString().length === 4) {
570
585
  const dt = new Date(dateTimeValue);
571
586
  this.dispatchOnChange(dt, blur);
587
+ // if we only have a partial date - set the value to null
572
588
  }
573
- else {
589
+ else if (isNaN(dateTimeValue?.getUTCDate())) {
574
590
  this.dispatchOnChange(null, blur);
575
591
  }
576
592
  }
@@ -588,11 +604,13 @@ class NovoDatePickerInputElement {
588
604
  setDisabledState(disabled) {
589
605
  this.disabled = disabled;
590
606
  }
591
- handleInvalidDate() {
592
- if (this.isInvalidDate && this.value) {
607
+ handleInvalidDate(fromPanelClose = false) {
608
+ if (this.isInvalidDate) { //} && this.value) {
593
609
  this.showInvalidDateError = true;
594
610
  this.clearValue();
595
- this.closePanel();
611
+ if (!fromPanelClose) {
612
+ this.closePanel();
613
+ }
596
614
  }
597
615
  }
598
616
  setupInvalidDateErrorMessage() {
@@ -647,7 +665,8 @@ class NovoDatePickerInputElement {
647
665
  * stemmed from the user.
648
666
  */
649
667
  setValueAndClose(event) {
650
- if (event && event.date) {
668
+ if (event?.date) {
669
+ this.showInvalidDateError = false;
651
670
  this.dispatchOnChange(event.date, true);
652
671
  }
653
672
  this.closePanel();
@@ -696,12 +715,13 @@ NovoDatePickerInputElement.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
696
715
  type="text"
697
716
  [name]="name"
698
717
  [(ngModel)]="formattedValue"
699
- [textMask]="maskOptions"
718
+ [imask]="maskOptions"
700
719
  [placeholder]="placeholder"
701
720
  (focus)="_handleFocus($event)"
702
721
  (keydown)="_handleKeydown($event)"
703
722
  (input)="_handleInput($event)"
704
723
  (blur)="_handleBlur($event)"
724
+ (accept)="handleMaskAccept($event)"
705
725
  #input
706
726
  data-automation-id="date-input"
707
727
  [disabled]="disabled"
@@ -720,7 +740,7 @@ NovoDatePickerInputElement.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
720
740
  [weekStart]="weekStart"
721
741
  ></novo-date-picker>
722
742
  </novo-overlay-template>
723
- `, isInline: true, styles: [":host{flex:1;position:relative;display:block!important}:host.disabled{pointer-events:none;opacity:1}:host input{font-size:1em;border:none;border-bottom:1px solid #dbdbdb;background:transparent!important;border-radius:0;outline:none;height:2rem;width:100%;margin:0;padding:0;box-shadow:none;box-sizing:content-box;transition:all .3s;color:#3d464d}:host input:focus{border-bottom:1px solid #4a89dc}:host span.error-text{color:#da4453;padding-top:10px;flex:1;display:flex}:host>i.bhi-clock,:host>i.bhi-search,:host>i.bhi-times,:host>i.bhi-calendar{position:absolute;right:0;top:0px;font-size:1.2rem}\n"], components: [{ type: i2$1.NovoOverlayTemplateComponent, selector: "novo-overlay-template", inputs: ["position", "scrollStrategy", "width", "height", "closeOnSelect", "hasBackdrop", "parent"], outputs: ["select", "opening", "closing"] }, { type: NovoDatePickerElement, selector: "novo-date-picker", inputs: ["minYear", "maxYear", "start", "end", "inline", "weekStart", "preselected", "hideOverflowDays", "hideFooter", "disabledDateMessage", "numberOfMonths", "mode", "range", "weekRangeSelect"], outputs: ["onSelect"] }], directives: [{ type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.MaskedInputDirective, selector: "[textMask]", inputs: ["textMask"], exportAs: ["textMask"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
743
+ `, isInline: true, styles: [":host{flex:1;position:relative;display:block!important}:host.disabled{pointer-events:none;opacity:1}:host input{font-size:1em;border:none;border-bottom:1px solid #dbdbdb;background:transparent!important;border-radius:0;outline:none;height:2rem;width:100%;margin:0;padding:0;box-shadow:none;box-sizing:content-box;transition:all .3s;color:#3d464d}:host input:focus{border-bottom:1px solid #4a89dc}:host span.error-text{color:#da4453;padding-top:10px;flex:1;display:flex}:host>i.bhi-clock,:host>i.bhi-search,:host>i.bhi-times,:host>i.bhi-calendar{position:absolute;right:0;top:0px;font-size:1.2rem}\n"], components: [{ type: i2$1.NovoOverlayTemplateComponent, selector: "novo-overlay-template", inputs: ["position", "scrollStrategy", "width", "height", "closeOnSelect", "hasBackdrop", "parent"], outputs: ["select", "opening", "closing"] }, { type: NovoDatePickerElement, selector: "novo-date-picker", inputs: ["minYear", "maxYear", "start", "end", "inline", "weekStart", "preselected", "hideOverflowDays", "hideFooter", "disabledDateMessage", "numberOfMonths", "mode", "range", "weekRangeSelect"], outputs: ["onSelect"] }], directives: [{ type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.IMaskDirective, selector: "[imask]", inputs: ["imaskElement", "imask", "unmask"], outputs: ["accept", "complete"], exportAs: ["imask"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
724
744
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDatePickerInputElement, decorators: [{
725
745
  type: Component,
726
746
  args: [{ selector: 'novo-date-picker-input', providers: [DATE_VALUE_ACCESSOR$1], template: `
@@ -728,12 +748,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
728
748
  type="text"
729
749
  [name]="name"
730
750
  [(ngModel)]="formattedValue"
731
- [textMask]="maskOptions"
751
+ [imask]="maskOptions"
732
752
  [placeholder]="placeholder"
733
753
  (focus)="_handleFocus($event)"
734
754
  (keydown)="_handleKeydown($event)"
735
755
  (input)="_handleInput($event)"
736
756
  (blur)="_handleBlur($event)"
757
+ (accept)="handleMaskAccept($event)"
737
758
  #input
738
759
  data-automation-id="date-input"
739
760
  [disabled]="disabled"
@@ -852,15 +873,10 @@ class NovoDateRangeInputElement {
852
873
  _initFormatOptions() {
853
874
  this.userDefinedFormat = this.format ? !this.format.match(/^(DD\/MM\/YYYY|MM\/DD\/YYYY)$/g) : false;
854
875
  if (!this.userDefinedFormat && this.textMaskEnabled && !this.allowInvalidDate) {
855
- this.maskOptions = this.maskOptions || {
856
- mask: this.dateFormatService.getDateMask(),
857
- pipe: createAutoCorrectedDatePipe((this.format || this.labels.dateFormatString()).toLowerCase()),
858
- keepCharPositions: false,
859
- guide: true,
860
- };
876
+ this.maskOptions = this.maskOptions || this.dateFormatService.getDateMask(this.format);
861
877
  }
862
878
  else {
863
- this.maskOptions = { mask: false };
879
+ this.maskOptions = undefined;
864
880
  }
865
881
  }
866
882
  /** BEGIN: Convenient Panel Methods. */
@@ -892,7 +908,7 @@ class NovoDateRangeInputElement {
892
908
  formatDate(value) {
893
909
  try {
894
910
  const [dateTimeValue] = this.dateFormatService.parseString(value, false, 'date');
895
- return new Date(dateTimeValue);
911
+ return dateTimeValue ? new Date(dateTimeValue) : null;
896
912
  }
897
913
  catch (err) {
898
914
  return null;
@@ -1013,7 +1029,7 @@ NovoDateRangeInputElement.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
1013
1029
  type="text"
1014
1030
  [name]="name"
1015
1031
  [(ngModel)]="formattedStartDate"
1016
- [textMask]="maskOptions"
1032
+ [imask]="maskOptions"
1017
1033
  [placeholder]="placeholder"
1018
1034
  (keydown)="_onStartInputChange($event)"
1019
1035
  (input)="_onStartInputChange($event)"
@@ -1032,7 +1048,7 @@ NovoDateRangeInputElement.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
1032
1048
  type="text"
1033
1049
  [name]="name"
1034
1050
  [(ngModel)]="formattedEndDate"
1035
- [textMask]="maskOptions"
1051
+ [imask]="maskOptions"
1036
1052
  [placeholder]="placeholder"
1037
1053
  (keydown)="_onEndInputChange($event)"
1038
1054
  (input)="_onEndInputChange($event)"
@@ -1057,7 +1073,7 @@ NovoDateRangeInputElement.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
1057
1073
  [weekStart]="weekStart"
1058
1074
  ></novo-date-picker>
1059
1075
  </novo-overlay-template>
1060
- `, isInline: true, styles: [":host{flex:1;position:relative;display:flex;flex-flow:row nowrap;height:-webkit-min-content;height:-moz-min-content;height:min-content}:host.disabled{pointer-events:none;opacity:1}:host .date-range-input-container{position:relative;height:-webkit-min-content;height:-moz-min-content;height:min-content}:host .date-range-input-divider{font-weight:800;margin:0 .5em;align-self:center;height:-webkit-min-content;height:-moz-min-content;height:min-content}:host input{font-size:1em;border:none;border-bottom:1px solid var(--border);background:transparent!important;border-radius:0;outline:none;height:2rem;width:9em;margin:0;padding:0;box-shadow:none;box-sizing:content-box;transition:all .3s;color:var(--text-main)}:host input:focus{border-bottom:1px solid #4a89dc}:host novo-icon{position:absolute;right:0;top:0;font-size:1em}:host novo-icon[size=small]{top:calc(50% - .75em);font-size:.5em}\n"], components: [{ type: i2$2.NovoIconComponent, selector: "novo-icon", inputs: ["raised", "theme", "shape", "color", "size", "smaller", "larger", "alt", "name"] }, { type: i2$1.NovoOverlayTemplateComponent, selector: "novo-overlay-template", inputs: ["position", "scrollStrategy", "width", "height", "closeOnSelect", "hasBackdrop", "parent"], outputs: ["select", "opening", "closing"] }, { type: NovoDatePickerElement, selector: "novo-date-picker", inputs: ["minYear", "maxYear", "start", "end", "inline", "weekStart", "preselected", "hideOverflowDays", "hideFooter", "disabledDateMessage", "numberOfMonths", "mode", "range", "weekRangeSelect"], outputs: ["onSelect"] }], directives: [{ type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.MaskedInputDirective, selector: "[textMask]", inputs: ["textMask"], exportAs: ["textMask"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1076
+ `, isInline: true, styles: [":host{flex:1;position:relative;display:flex;flex-flow:row nowrap;height:-webkit-min-content;height:-moz-min-content;height:min-content}:host.disabled{pointer-events:none;opacity:1}:host .date-range-input-container{position:relative;height:-webkit-min-content;height:-moz-min-content;height:min-content}:host .date-range-input-divider{font-weight:800;margin:0 .5em;align-self:center;height:-webkit-min-content;height:-moz-min-content;height:min-content}:host input{font-size:1em;border:none;border-bottom:1px solid var(--border);background:transparent!important;border-radius:0;outline:none;height:2rem;width:9em;margin:0;padding:0;box-shadow:none;box-sizing:content-box;transition:all .3s;color:var(--text-main)}:host input:focus{border-bottom:1px solid #4a89dc}:host novo-icon{position:absolute;right:0;top:0;font-size:1em}:host novo-icon[size=small]{top:calc(50% - .75em);font-size:.5em}\n"], components: [{ type: i2$2.NovoIconComponent, selector: "novo-icon", inputs: ["raised", "theme", "shape", "color", "size", "smaller", "larger", "alt", "name"] }, { type: i2$1.NovoOverlayTemplateComponent, selector: "novo-overlay-template", inputs: ["position", "scrollStrategy", "width", "height", "closeOnSelect", "hasBackdrop", "parent"], outputs: ["select", "opening", "closing"] }, { type: NovoDatePickerElement, selector: "novo-date-picker", inputs: ["minYear", "maxYear", "start", "end", "inline", "weekStart", "preselected", "hideOverflowDays", "hideFooter", "disabledDateMessage", "numberOfMonths", "mode", "range", "weekRangeSelect"], outputs: ["onSelect"] }], directives: [{ type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.IMaskDirective, selector: "[imask]", inputs: ["imaskElement", "imask", "unmask"], outputs: ["accept", "complete"], exportAs: ["imask"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1061
1077
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDateRangeInputElement, decorators: [{
1062
1078
  type: Component,
1063
1079
  args: [{ selector: 'novo-date-range-input', providers: [DATE_VALUE_ACCESSOR], template: `
@@ -1066,7 +1082,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
1066
1082
  type="text"
1067
1083
  [name]="name"
1068
1084
  [(ngModel)]="formattedStartDate"
1069
- [textMask]="maskOptions"
1085
+ [imask]="maskOptions"
1070
1086
  [placeholder]="placeholder"
1071
1087
  (keydown)="_onStartInputChange($event)"
1072
1088
  (input)="_onStartInputChange($event)"
@@ -1085,7 +1101,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
1085
1101
  type="text"
1086
1102
  [name]="name"
1087
1103
  [(ngModel)]="formattedEndDate"
1088
- [textMask]="maskOptions"
1104
+ [imask]="maskOptions"
1089
1105
  [placeholder]="placeholder"
1090
1106
  (keydown)="_onEndInputChange($event)"
1091
1107
  (input)="_onEndInputChange($event)"
@@ -1196,7 +1212,6 @@ class NovoMultiDateInputElement {
1196
1212
  set value(value) {
1197
1213
  if (this.value !== value) {
1198
1214
  this._value = value;
1199
- this._setFormValue(value);
1200
1215
  this.onChangeCallback(this._value);
1201
1216
  }
1202
1217
  }
@@ -1209,16 +1224,6 @@ class NovoMultiDateInputElement {
1209
1224
  }
1210
1225
  ngOnInit() {
1211
1226
  this.userDefinedFormat = this.format ? !this.format.match(/^(DD\/MM\/YYYY|MM\/DD\/YYYY)$/g) : false;
1212
- // if (!this.userDefinedFormat && this.textMaskEnabled && !this.allowInvalidDate) {
1213
- // this.maskOptions = this.maskOptions || {
1214
- // mask: this.dateFormatService.getDateMask(),
1215
- // pipe: createAutoCorrectedDatePipe(this.format || this.labels.dateFormatString().toLowerCase()),
1216
- // keepCharPositions: false,
1217
- // guide: true,
1218
- // };
1219
- // } else {
1220
- // this.maskOptions = { mask: false };
1221
- // }
1222
1227
  }
1223
1228
  formatter(value) {
1224
1229
  const [dateTimeValue, formatted] = this.dateFormatService.parseString(value, false, 'date');
@@ -1270,11 +1275,6 @@ class NovoMultiDateInputElement {
1270
1275
  registerOnTouched(fn) {
1271
1276
  this.onTouchedCallback = fn;
1272
1277
  }
1273
- _setFormValue(value) {
1274
- if (this.value) {
1275
- // this.formattedStartDate = this.formatDateValue(this.value.startDate);
1276
- }
1277
- }
1278
1278
  /**
1279
1279
  * This method closes the panel, and if a value is specified, also sets the associated
1280
1280
  * control to that value. It will also mark the control as dirty if this interaction
@@ -1406,7 +1406,7 @@ NovoDatePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", ve
1406
1406
  NovoButtonModule,
1407
1407
  NovoPipesModule,
1408
1408
  NovoOverlayModule,
1409
- TextMaskModule,
1409
+ IMaskDirectiveModule,
1410
1410
  NovoIconModule,
1411
1411
  NovoChipsModule,
1412
1412
  NovoCalendarModule], exports: [NovoDatePickerElement, NovoDatePickerInputElement, NovoDateRangeInputElement, NovoMultiDateInputElement] });
@@ -1416,7 +1416,7 @@ NovoDatePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", ve
1416
1416
  NovoButtonModule,
1417
1417
  NovoPipesModule,
1418
1418
  NovoOverlayModule,
1419
- TextMaskModule,
1419
+ IMaskDirectiveModule,
1420
1420
  NovoIconModule,
1421
1421
  NovoChipsModule,
1422
1422
  NovoCalendarModule,
@@ -1430,7 +1430,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
1430
1430
  NovoButtonModule,
1431
1431
  NovoPipesModule,
1432
1432
  NovoOverlayModule,
1433
- TextMaskModule,
1433
+ IMaskDirectiveModule,
1434
1434
  NovoIconModule,
1435
1435
  NovoChipsModule,
1436
1436
  NovoCalendarModule,