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;
@@ -508,18 +507,16 @@ class NovoDatePickerInputElement {
508
507
  this._initFormatOptions();
509
508
  }
510
509
  }
510
+ ngAfterViewInit() {
511
+ this.overlay.panelClosingActions.subscribe(this._handleOverlayClickout.bind(this));
512
+ }
511
513
  _initFormatOptions() {
512
514
  this.userDefinedFormat = this.format ? !this.format.match(/^(DD\/MM\/YYYY|MM\/DD\/YYYY)$/g) : false;
513
515
  if (!this.userDefinedFormat && this.textMaskEnabled && !this.allowInvalidDate) {
514
- this.maskOptions = this.maskOptions || {
515
- mask: this.dateFormatService.getDateMask(),
516
- pipe: createAutoCorrectedDatePipe((this.format || this.labels.dateFormatString()).toLowerCase()),
517
- keepCharPositions: false,
518
- guide: true,
519
- };
516
+ this.maskOptions = this.maskOptions || this.dateFormatService.getDateMask(this.format);
520
517
  }
521
518
  else {
522
- this.maskOptions = { mask: false };
519
+ this.maskOptions = undefined;
523
520
  }
524
521
  this.setupInvalidDateErrorMessage();
525
522
  }
@@ -533,32 +530,40 @@ class NovoDatePickerInputElement {
533
530
  this.overlay.closePanel();
534
531
  }
535
532
  get panelOpen() {
536
- return this.overlay && this.overlay.panelOpen;
533
+ var _a;
534
+ return (_a = this.overlay) === null || _a === void 0 ? void 0 : _a.panelOpen;
537
535
  }
538
536
  /** END: Convenient Panel Methods. */
539
537
  _handleKeydown(event) {
540
538
  if ((event.key === "Escape" /* Escape */ || event.key === "Enter" /* Enter */ || event.key === "Tab" /* Tab */) && this.panelOpen) {
541
- this._handleEvent(event, true);
539
+ this._handleValueUpdate(event.target.value, true);
542
540
  this.closePanel();
543
541
  event.stopPropagation();
544
542
  }
545
543
  }
546
544
  _handleInput(event) {
547
- if (document.activeElement === event.target) {
548
- this._handleEvent(event, false);
545
+ // if maskOptions is enabled, then we do not want to process inputs until the mask has accepted them - so those events will be
546
+ // handled by the (accept) event.
547
+ if (document.activeElement === event.target && !this.maskOptions) {
548
+ this._handleValueUpdate(event.target.value, false);
549
549
  }
550
550
  }
551
551
  _handleBlur(event) {
552
- this.handleInvalidDate();
553
- this.blurEvent.emit(event);
552
+ if (!this.overlay.isBlurRecipient(event)) {
553
+ this.handleInvalidDate();
554
+ this.blurEvent.emit(event);
555
+ }
556
+ }
557
+ _handleOverlayClickout() {
558
+ this.handleInvalidDate(/*fromPanelClose:*/ true);
559
+ this.blurEvent.emit();
554
560
  }
555
561
  _handleFocus(event) {
556
562
  this.showInvalidDateError = false;
557
563
  this.openPanel();
558
564
  this.focusEvent.emit(event);
559
565
  }
560
- _handleEvent(event, blur) {
561
- const value = event.target.value;
566
+ _handleValueUpdate(value, blur) {
562
567
  if (value === '') {
563
568
  this.clearValue();
564
569
  this.closePanel();
@@ -568,15 +573,28 @@ class NovoDatePickerInputElement {
568
573
  this.openPanel();
569
574
  }
570
575
  }
576
+ handleMaskAccept(maskValue) {
577
+ this._handleValueUpdate(maskValue, false);
578
+ }
571
579
  formatDate(value, blur) {
580
+ var _a;
572
581
  try {
573
- const [dateTimeValue, formatted, isInvalidDate] = this.dateFormatService.parseString(value, false, 'date');
582
+ let dateTimeValue;
583
+ let isInvalidDate;
584
+ if (this.format) {
585
+ [dateTimeValue, , isInvalidDate] = this.dateFormatService.parseCustomDateString(value, this.format);
586
+ }
587
+ else {
588
+ [dateTimeValue, , isInvalidDate] = this.dateFormatService.parseString(value, false, 'date');
589
+ }
574
590
  this.isInvalidDate = isInvalidDate;
575
- if (!isNaN(dateTimeValue.getUTCDate())) {
591
+ // if we have a full date - set the dateTimeValue
592
+ if (((_a = dateTimeValue === null || dateTimeValue === void 0 ? void 0 : dateTimeValue.getFullYear()) === null || _a === void 0 ? void 0 : _a.toString().length) === 4) {
576
593
  const dt = new Date(dateTimeValue);
577
594
  this.dispatchOnChange(dt, blur);
595
+ // if we only have a partial date - set the value to null
578
596
  }
579
- else {
597
+ else if (isNaN(dateTimeValue === null || dateTimeValue === void 0 ? void 0 : dateTimeValue.getUTCDate())) {
580
598
  this.dispatchOnChange(null, blur);
581
599
  }
582
600
  }
@@ -594,11 +612,13 @@ class NovoDatePickerInputElement {
594
612
  setDisabledState(disabled) {
595
613
  this.disabled = disabled;
596
614
  }
597
- handleInvalidDate() {
598
- if (this.isInvalidDate && this.value) {
615
+ handleInvalidDate(fromPanelClose = false) {
616
+ if (this.isInvalidDate) { //} && this.value) {
599
617
  this.showInvalidDateError = true;
600
618
  this.clearValue();
601
- this.closePanel();
619
+ if (!fromPanelClose) {
620
+ this.closePanel();
621
+ }
602
622
  }
603
623
  }
604
624
  setupInvalidDateErrorMessage() {
@@ -653,7 +673,8 @@ class NovoDatePickerInputElement {
653
673
  * stemmed from the user.
654
674
  */
655
675
  setValueAndClose(event) {
656
- if (event && event.date) {
676
+ if (event === null || event === void 0 ? void 0 : event.date) {
677
+ this.showInvalidDateError = false;
657
678
  this.dispatchOnChange(event.date, true);
658
679
  }
659
680
  this.closePanel();
@@ -702,12 +723,13 @@ NovoDatePickerInputElement.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
702
723
  type="text"
703
724
  [name]="name"
704
725
  [(ngModel)]="formattedValue"
705
- [textMask]="maskOptions"
726
+ [imask]="maskOptions"
706
727
  [placeholder]="placeholder"
707
728
  (focus)="_handleFocus($event)"
708
729
  (keydown)="_handleKeydown($event)"
709
730
  (input)="_handleInput($event)"
710
731
  (blur)="_handleBlur($event)"
732
+ (accept)="handleMaskAccept($event)"
711
733
  #input
712
734
  data-automation-id="date-input"
713
735
  [disabled]="disabled"
@@ -726,7 +748,7 @@ NovoDatePickerInputElement.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
726
748
  [weekStart]="weekStart"
727
749
  ></novo-date-picker>
728
750
  </novo-overlay-template>
729
- `, 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"] }] });
751
+ `, 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"] }] });
730
752
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDatePickerInputElement, decorators: [{
731
753
  type: Component,
732
754
  args: [{ selector: 'novo-date-picker-input', providers: [DATE_VALUE_ACCESSOR$1], template: `
@@ -734,12 +756,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
734
756
  type="text"
735
757
  [name]="name"
736
758
  [(ngModel)]="formattedValue"
737
- [textMask]="maskOptions"
759
+ [imask]="maskOptions"
738
760
  [placeholder]="placeholder"
739
761
  (focus)="_handleFocus($event)"
740
762
  (keydown)="_handleKeydown($event)"
741
763
  (input)="_handleInput($event)"
742
764
  (blur)="_handleBlur($event)"
765
+ (accept)="handleMaskAccept($event)"
743
766
  #input
744
767
  data-automation-id="date-input"
745
768
  [disabled]="disabled"
@@ -858,15 +881,10 @@ class NovoDateRangeInputElement {
858
881
  _initFormatOptions() {
859
882
  this.userDefinedFormat = this.format ? !this.format.match(/^(DD\/MM\/YYYY|MM\/DD\/YYYY)$/g) : false;
860
883
  if (!this.userDefinedFormat && this.textMaskEnabled && !this.allowInvalidDate) {
861
- this.maskOptions = this.maskOptions || {
862
- mask: this.dateFormatService.getDateMask(),
863
- pipe: createAutoCorrectedDatePipe((this.format || this.labels.dateFormatString()).toLowerCase()),
864
- keepCharPositions: false,
865
- guide: true,
866
- };
884
+ this.maskOptions = this.maskOptions || this.dateFormatService.getDateMask(this.format);
867
885
  }
868
886
  else {
869
- this.maskOptions = { mask: false };
887
+ this.maskOptions = undefined;
870
888
  }
871
889
  }
872
890
  /** BEGIN: Convenient Panel Methods. */
@@ -898,7 +916,7 @@ class NovoDateRangeInputElement {
898
916
  formatDate(value) {
899
917
  try {
900
918
  const [dateTimeValue] = this.dateFormatService.parseString(value, false, 'date');
901
- return new Date(dateTimeValue);
919
+ return dateTimeValue ? new Date(dateTimeValue) : null;
902
920
  }
903
921
  catch (err) {
904
922
  return null;
@@ -1015,7 +1033,7 @@ NovoDateRangeInputElement.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
1015
1033
  type="text"
1016
1034
  [name]="name"
1017
1035
  [(ngModel)]="formattedStartDate"
1018
- [textMask]="maskOptions"
1036
+ [imask]="maskOptions"
1019
1037
  [placeholder]="placeholder"
1020
1038
  (keydown)="_onStartInputChange($event)"
1021
1039
  (input)="_onStartInputChange($event)"
@@ -1034,7 +1052,7 @@ NovoDateRangeInputElement.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
1034
1052
  type="text"
1035
1053
  [name]="name"
1036
1054
  [(ngModel)]="formattedEndDate"
1037
- [textMask]="maskOptions"
1055
+ [imask]="maskOptions"
1038
1056
  [placeholder]="placeholder"
1039
1057
  (keydown)="_onEndInputChange($event)"
1040
1058
  (input)="_onEndInputChange($event)"
@@ -1059,7 +1077,7 @@ NovoDateRangeInputElement.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
1059
1077
  [weekStart]="weekStart"
1060
1078
  ></novo-date-picker>
1061
1079
  </novo-overlay-template>
1062
- `, 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"] }] });
1080
+ `, 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"] }] });
1063
1081
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDateRangeInputElement, decorators: [{
1064
1082
  type: Component,
1065
1083
  args: [{ selector: 'novo-date-range-input', providers: [DATE_VALUE_ACCESSOR], template: `
@@ -1068,7 +1086,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
1068
1086
  type="text"
1069
1087
  [name]="name"
1070
1088
  [(ngModel)]="formattedStartDate"
1071
- [textMask]="maskOptions"
1089
+ [imask]="maskOptions"
1072
1090
  [placeholder]="placeholder"
1073
1091
  (keydown)="_onStartInputChange($event)"
1074
1092
  (input)="_onStartInputChange($event)"
@@ -1087,7 +1105,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
1087
1105
  type="text"
1088
1106
  [name]="name"
1089
1107
  [(ngModel)]="formattedEndDate"
1090
- [textMask]="maskOptions"
1108
+ [imask]="maskOptions"
1091
1109
  [placeholder]="placeholder"
1092
1110
  (keydown)="_onEndInputChange($event)"
1093
1111
  (input)="_onEndInputChange($event)"
@@ -1198,7 +1216,6 @@ class NovoMultiDateInputElement {
1198
1216
  set value(value) {
1199
1217
  if (this.value !== value) {
1200
1218
  this._value = value;
1201
- this._setFormValue(value);
1202
1219
  this.onChangeCallback(this._value);
1203
1220
  }
1204
1221
  }
@@ -1211,16 +1228,6 @@ class NovoMultiDateInputElement {
1211
1228
  }
1212
1229
  ngOnInit() {
1213
1230
  this.userDefinedFormat = this.format ? !this.format.match(/^(DD\/MM\/YYYY|MM\/DD\/YYYY)$/g) : false;
1214
- // if (!this.userDefinedFormat && this.textMaskEnabled && !this.allowInvalidDate) {
1215
- // this.maskOptions = this.maskOptions || {
1216
- // mask: this.dateFormatService.getDateMask(),
1217
- // pipe: createAutoCorrectedDatePipe(this.format || this.labels.dateFormatString().toLowerCase()),
1218
- // keepCharPositions: false,
1219
- // guide: true,
1220
- // };
1221
- // } else {
1222
- // this.maskOptions = { mask: false };
1223
- // }
1224
1231
  }
1225
1232
  formatter(value) {
1226
1233
  const [dateTimeValue, formatted] = this.dateFormatService.parseString(value, false, 'date');
@@ -1272,11 +1279,6 @@ class NovoMultiDateInputElement {
1272
1279
  registerOnTouched(fn) {
1273
1280
  this.onTouchedCallback = fn;
1274
1281
  }
1275
- _setFormValue(value) {
1276
- if (this.value) {
1277
- // this.formattedStartDate = this.formatDateValue(this.value.startDate);
1278
- }
1279
- }
1280
1282
  /**
1281
1283
  * This method closes the panel, and if a value is specified, also sets the associated
1282
1284
  * control to that value. It will also mark the control as dirty if this interaction
@@ -1408,7 +1410,7 @@ NovoDatePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", ve
1408
1410
  NovoButtonModule,
1409
1411
  NovoPipesModule,
1410
1412
  NovoOverlayModule,
1411
- TextMaskModule,
1413
+ IMaskDirectiveModule,
1412
1414
  NovoIconModule,
1413
1415
  NovoChipsModule,
1414
1416
  NovoCalendarModule], exports: [NovoDatePickerElement, NovoDatePickerInputElement, NovoDateRangeInputElement, NovoMultiDateInputElement] });
@@ -1418,7 +1420,7 @@ NovoDatePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", ve
1418
1420
  NovoButtonModule,
1419
1421
  NovoPipesModule,
1420
1422
  NovoOverlayModule,
1421
- TextMaskModule,
1423
+ IMaskDirectiveModule,
1422
1424
  NovoIconModule,
1423
1425
  NovoChipsModule,
1424
1426
  NovoCalendarModule,
@@ -1432,7 +1434,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
1432
1434
  NovoButtonModule,
1433
1435
  NovoPipesModule,
1434
1436
  NovoOverlayModule,
1435
- TextMaskModule,
1437
+ IMaskDirectiveModule,
1436
1438
  NovoIconModule,
1437
1439
  NovoChipsModule,
1438
1440
  NovoCalendarModule,