novo-elements 10.9.0 → 10.10.0-next.2

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 (28) hide show
  1. package/elements/date-picker/DatePicker.d.ts +2 -1
  2. package/elements/date-picker/DatePickerInput.d.ts +5 -1
  3. package/elements/query-builder/condition-builder/condition-builder.component.d.ts +10 -0
  4. package/esm2022/elements/data-table/cell-headers/data-table-header-cell.component.mjs +1 -1
  5. package/esm2022/elements/date-picker/DatePicker.mjs +8 -3
  6. package/esm2022/elements/date-picker/DatePickerInput.mjs +7 -3
  7. package/esm2022/elements/date-picker/DateRangeInput.mjs +1 -1
  8. package/esm2022/elements/date-picker/MultiDateInput.mjs +1 -1
  9. package/esm2022/elements/date-time-picker/DateTimePicker.mjs +2 -2
  10. package/esm2022/elements/date-time-picker/DateTimePickerInput.mjs +1 -1
  11. package/esm2022/elements/form/ControlTemplates.mjs +1 -1
  12. package/esm2022/elements/query-builder/condition-builder/condition-builder.component.mjs +16 -1
  13. package/esm2022/elements/query-builder/condition-definitions/date-condition.definition.mjs +1 -1
  14. package/esm2022/elements/query-builder/condition-definitions/date-time-condition.definition.mjs +1 -1
  15. package/esm2022/elements/simple-table/cell-header.mjs +2 -2
  16. package/fesm2022/novo-elements-elements-data-table.mjs +1 -1
  17. package/fesm2022/novo-elements-elements-data-table.mjs.map +1 -1
  18. package/fesm2022/novo-elements-elements-date-picker.mjs +15 -6
  19. package/fesm2022/novo-elements-elements-date-picker.mjs.map +1 -1
  20. package/fesm2022/novo-elements-elements-date-time-picker.mjs +2 -2
  21. package/fesm2022/novo-elements-elements-date-time-picker.mjs.map +1 -1
  22. package/fesm2022/novo-elements-elements-form.mjs +1 -1
  23. package/fesm2022/novo-elements-elements-form.mjs.map +1 -1
  24. package/fesm2022/novo-elements-elements-query-builder.mjs +17 -2
  25. package/fesm2022/novo-elements-elements-query-builder.mjs.map +1 -1
  26. package/fesm2022/novo-elements-elements-simple-table.mjs +1 -1
  27. package/fesm2022/novo-elements-elements-simple-table.mjs.map +1 -1
  28. package/package.json +1 -1
@@ -132,7 +132,10 @@ class NovoDatePickerElement {
132
132
  if (this.model) {
133
133
  this.modelToSelection(this.model);
134
134
  }
135
- if (this.selection && this.selection.length) {
135
+ if (this.dateForInitialView) {
136
+ this.updateView(this.dateForInitialView);
137
+ }
138
+ else if (this.selection && this.selection.length) {
136
139
  this.updateView(this.selection[0]);
137
140
  }
138
141
  }
@@ -279,7 +282,7 @@ class NovoDatePickerElement {
279
282
  this._onTouched = fn;
280
283
  }
281
284
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NovoDatePickerElement, deps: [{ token: i1.NovoLabelService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
282
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NovoDatePickerElement, selector: "novo-date-picker", inputs: { minYear: "minYear", maxYear: "maxYear", start: "start", end: "end", inline: "inline", weekStart: "weekStart", preselected: "preselected", hideOverflowDays: "hideOverflowDays", hideFooter: "hideFooter", disabledDateMessage: "disabledDateMessage", numberOfMonths: "numberOfMonths", mode: "mode", range: "range", weekRangeSelect: "weekRangeSelect" }, outputs: { onSelect: "onSelect" }, host: { properties: { "class.hide-overflow-days": "this.hideOverflowDays" } }, providers: [DATE_PICKER_VALUE_ACCESSOR], ngImport: i0, template: `
285
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NovoDatePickerElement, selector: "novo-date-picker", inputs: { minYear: "minYear", maxYear: "maxYear", start: "start", end: "end", inline: "inline", weekStart: "weekStart", preselected: "preselected", hideOverflowDays: "hideOverflowDays", hideFooter: "hideFooter", disabledDateMessage: "disabledDateMessage", dateForInitialView: "dateForInitialView", numberOfMonths: "numberOfMonths", mode: "mode", range: "range", weekRangeSelect: "weekRangeSelect" }, outputs: { onSelect: "onSelect" }, host: { properties: { "class.hide-overflow-days": "this.hideOverflowDays" } }, providers: [DATE_PICKER_VALUE_ACCESSOR], ngImport: i0, template: `
283
286
  <div class="date-picker-container">
284
287
  <div class="date-range-tabs" *ngIf="range" [class.week-select-mode]="weekRangeSelect">
285
288
  <span
@@ -447,6 +450,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
447
450
  type: Input
448
451
  }], disabledDateMessage: [{
449
452
  type: Input
453
+ }], dateForInitialView: [{
454
+ type: Input
450
455
  }], onSelect: [{
451
456
  type: Output
452
457
  }], numberOfMonths: [{
@@ -730,7 +735,7 @@ class NovoDatePickerInputElement {
730
735
  return !Helpers.isEmpty(this.value);
731
736
  }
732
737
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NovoDatePickerInputElement, deps: [{ token: i0.ElementRef }, { token: i1.NovoLabelService }, { token: i0.ChangeDetectorRef }, { token: i1.DateFormatService }], target: i0.ɵɵFactoryTarget.Component }); }
733
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NovoDatePickerInputElement, selector: "novo-date-picker-input", inputs: { name: "name", start: "start", end: "end", placeholder: "placeholder", maskOptions: "maskOptions", format: "format", textMaskEnabled: "textMaskEnabled", allowInvalidDate: "allowInvalidDate", overlayOnElement: "overlayOnElement", hideFooter: "hideFooter", disabled: "disabled", disabledDateMessage: "disabledDateMessage", weekStart: "weekStart" }, outputs: { blurEvent: "blurEvent", focusEvent: "focusEvent", changeEvent: "changeEvent" }, host: { properties: { "class.disabled": "this.disabled" } }, providers: [DATE_VALUE_ACCESSOR$1], viewQueries: [{ propertyName: "overlay", first: true, predicate: NovoOverlayTemplateComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
738
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NovoDatePickerInputElement, selector: "novo-date-picker-input", inputs: { name: "name", start: "start", end: "end", placeholder: "placeholder", maskOptions: "maskOptions", format: "format", textMaskEnabled: "textMaskEnabled", allowInvalidDate: "allowInvalidDate", overlayOnElement: "overlayOnElement", hideFooter: "hideFooter", disabled: "disabled", disabledDateMessage: "disabledDateMessage", dateForInitialView: "dateForInitialView", weekStart: "weekStart" }, outputs: { blurEvent: "blurEvent", focusEvent: "focusEvent", changeEvent: "changeEvent" }, host: { properties: { "class.disabled": "this.disabled" } }, providers: [DATE_VALUE_ACCESSOR$1], viewQueries: [{ propertyName: "overlay", first: true, predicate: NovoOverlayTemplateComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
734
739
  <input
735
740
  type="text"
736
741
  [name]="name"
@@ -759,9 +764,10 @@ class NovoDatePickerInputElement {
759
764
  [ngModel]="value"
760
765
  [weekStart]="weekStart"
761
766
  [hideFooter]="hideFooter"
767
+ [dateForInitialView]="dateForInitialView"
762
768
  ></novo-date-picker>
763
769
  </novo-overlay-template>
764
- `, 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:0;font-size:1.2rem}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$1.NovoOverlayTemplateComponent, selector: "novo-overlay-template", inputs: ["position", "scrollStrategy", "width", "minWidth", "height", "closeOnSelect", "hasBackdrop", "parent"], outputs: ["select", "opening", "closing", "backDropClicked"] }, { kind: "directive", type: i5$1.IMaskDirective, selector: "[imask]", inputs: ["imask", "unmask", "imaskElement"], outputs: ["accept", "complete"], exportAs: ["imask"] }, { kind: "component", type: NovoDatePickerElement, selector: "novo-date-picker", inputs: ["minYear", "maxYear", "start", "end", "inline", "weekStart", "preselected", "hideOverflowDays", "hideFooter", "disabledDateMessage", "numberOfMonths", "mode", "range", "weekRangeSelect"], outputs: ["onSelect"] }] }); }
770
+ `, 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:0;font-size:1.2rem}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$1.NovoOverlayTemplateComponent, selector: "novo-overlay-template", inputs: ["position", "scrollStrategy", "width", "minWidth", "height", "closeOnSelect", "hasBackdrop", "parent"], outputs: ["select", "opening", "closing", "backDropClicked"] }, { kind: "directive", type: i5$1.IMaskDirective, selector: "[imask]", inputs: ["imask", "unmask", "imaskElement"], outputs: ["accept", "complete"], exportAs: ["imask"] }, { kind: "component", type: NovoDatePickerElement, selector: "novo-date-picker", inputs: ["minYear", "maxYear", "start", "end", "inline", "weekStart", "preselected", "hideOverflowDays", "hideFooter", "disabledDateMessage", "dateForInitialView", "numberOfMonths", "mode", "range", "weekRangeSelect"], outputs: ["onSelect"] }] }); }
765
771
  }
766
772
  __decorate([
767
773
  BooleanInput(),
@@ -798,6 +804,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
798
804
  [ngModel]="value"
799
805
  [weekStart]="weekStart"
800
806
  [hideFooter]="hideFooter"
807
+ [dateForInitialView]="dateForInitialView"
801
808
  ></novo-date-picker>
802
809
  </novo-overlay-template>
803
810
  `, 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:0;font-size:1.2rem}\n"] }]
@@ -828,6 +835,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
828
835
  type: Input
829
836
  }], disabledDateMessage: [{
830
837
  type: Input
838
+ }], dateForInitialView: [{
839
+ type: Input
831
840
  }], weekStart: [{
832
841
  type: Input
833
842
  }], blurEvent: [{
@@ -1103,7 +1112,7 @@ class NovoDateRangeInputElement {
1103
1112
  [weekStart]="weekStart"
1104
1113
  ></novo-date-picker>
1105
1114
  </novo-overlay-template>
1106
- `, isInline: true, styles: [":host{flex:1;position:relative;display:flex;flex-flow:row nowrap;height:min-content}:host.disabled{pointer-events:none;opacity:1}:host .date-range-input-container{position:relative;height:min-content}:host .date-range-input-divider{font-weight:800;margin:0 .5em;align-self:center;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"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$1.NovoOverlayTemplateComponent, selector: "novo-overlay-template", inputs: ["position", "scrollStrategy", "width", "minWidth", "height", "closeOnSelect", "hasBackdrop", "parent"], outputs: ["select", "opening", "closing", "backDropClicked"] }, { kind: "directive", type: i5$1.IMaskDirective, selector: "[imask]", inputs: ["imask", "unmask", "imaskElement"], outputs: ["accept", "complete"], exportAs: ["imask"] }, { kind: "component", type: i6.NovoIconComponent, selector: "novo-icon", inputs: ["raised", "theme", "shape", "color", "size", "smaller", "larger", "alt", "name"] }, { kind: "component", type: NovoDatePickerElement, selector: "novo-date-picker", inputs: ["minYear", "maxYear", "start", "end", "inline", "weekStart", "preselected", "hideOverflowDays", "hideFooter", "disabledDateMessage", "numberOfMonths", "mode", "range", "weekRangeSelect"], outputs: ["onSelect"] }] }); }
1115
+ `, isInline: true, styles: [":host{flex:1;position:relative;display:flex;flex-flow:row nowrap;height:min-content}:host.disabled{pointer-events:none;opacity:1}:host .date-range-input-container{position:relative;height:min-content}:host .date-range-input-divider{font-weight:800;margin:0 .5em;align-self:center;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"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$1.NovoOverlayTemplateComponent, selector: "novo-overlay-template", inputs: ["position", "scrollStrategy", "width", "minWidth", "height", "closeOnSelect", "hasBackdrop", "parent"], outputs: ["select", "opening", "closing", "backDropClicked"] }, { kind: "directive", type: i5$1.IMaskDirective, selector: "[imask]", inputs: ["imask", "unmask", "imaskElement"], outputs: ["accept", "complete"], exportAs: ["imask"] }, { kind: "component", type: i6.NovoIconComponent, selector: "novo-icon", inputs: ["raised", "theme", "shape", "color", "size", "smaller", "larger", "alt", "name"] }, { kind: "component", type: NovoDatePickerElement, selector: "novo-date-picker", inputs: ["minYear", "maxYear", "start", "end", "inline", "weekStart", "preselected", "hideOverflowDays", "hideFooter", "disabledDateMessage", "dateForInitialView", "numberOfMonths", "mode", "range", "weekRangeSelect"], outputs: ["onSelect"] }] }); }
1107
1116
  }
1108
1117
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NovoDateRangeInputElement, decorators: [{
1109
1118
  type: Component,
@@ -1357,7 +1366,7 @@ class NovoMultiDateInputElement {
1357
1366
  [weekStart]="weekStart"
1358
1367
  ></novo-date-picker>
1359
1368
  </novo-overlay-template>
1360
- `, isInline: true, styles: [":host .chip-input-container{padding-top:10px}:host .chip-input-container .placeholder{color:var(--form-placeholder)}:host .panel-toggle{padding:.2em}:host .panel-toggle i{margin:0}:host .panel-toggle.selected{background:#dbdbdb;border-radius:50%}:host ul.summary{display:inline;list-style:none;color:#868686;padding:0 10px}:host ul.summary li{display:inline;padding:0 3px}:host ul.summary li:after{content:\", \"}:host ul.summary li:last-child:after{content:\" \"}:host chip span{text-transform:capitalize}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$1.NovoOverlayTemplateComponent, selector: "novo-overlay-template", inputs: ["position", "scrollStrategy", "width", "minWidth", "height", "closeOnSelect", "hasBackdrop", "parent"], outputs: ["select", "opening", "closing", "backDropClicked"] }, { kind: "component", type: i6.NovoIconComponent, selector: "novo-icon", inputs: ["raised", "theme", "shape", "color", "size", "smaller", "larger", "alt", "name"] }, { kind: "component", type: i6$1.NovoChipElement, selector: "novo-chip, [novo-chip]", inputs: ["color", "tabIndex", "size", "type", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"] }, { kind: "directive", type: i6$1.NovoChipRemove, selector: "[novoChipRemove]" }, { kind: "component", type: i6$1.NovoChipList, selector: "novo-chip-list", inputs: ["errorStateMatcher", "multiple", "stacked", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["novoChipList"] }, { kind: "component", type: NovoDatePickerElement, selector: "novo-date-picker", inputs: ["minYear", "maxYear", "start", "end", "inline", "weekStart", "preselected", "hideOverflowDays", "hideFooter", "disabledDateMessage", "numberOfMonths", "mode", "range", "weekRangeSelect"], outputs: ["onSelect"] }, { kind: "pipe", type: i2$1.DatePipe, name: "date" }, { kind: "pipe", type: i8.DefaultPipe, name: "default" }] }); }
1369
+ `, isInline: true, styles: [":host .chip-input-container{padding-top:10px}:host .chip-input-container .placeholder{color:var(--form-placeholder)}:host .panel-toggle{padding:.2em}:host .panel-toggle i{margin:0}:host .panel-toggle.selected{background:#dbdbdb;border-radius:50%}:host ul.summary{display:inline;list-style:none;color:#868686;padding:0 10px}:host ul.summary li{display:inline;padding:0 3px}:host ul.summary li:after{content:\", \"}:host ul.summary li:last-child:after{content:\" \"}:host chip span{text-transform:capitalize}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$1.NovoOverlayTemplateComponent, selector: "novo-overlay-template", inputs: ["position", "scrollStrategy", "width", "minWidth", "height", "closeOnSelect", "hasBackdrop", "parent"], outputs: ["select", "opening", "closing", "backDropClicked"] }, { kind: "component", type: i6.NovoIconComponent, selector: "novo-icon", inputs: ["raised", "theme", "shape", "color", "size", "smaller", "larger", "alt", "name"] }, { kind: "component", type: i6$1.NovoChipElement, selector: "novo-chip, [novo-chip]", inputs: ["color", "tabIndex", "size", "type", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"] }, { kind: "directive", type: i6$1.NovoChipRemove, selector: "[novoChipRemove]" }, { kind: "component", type: i6$1.NovoChipList, selector: "novo-chip-list", inputs: ["errorStateMatcher", "multiple", "stacked", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["novoChipList"] }, { kind: "component", type: NovoDatePickerElement, selector: "novo-date-picker", inputs: ["minYear", "maxYear", "start", "end", "inline", "weekStart", "preselected", "hideOverflowDays", "hideFooter", "disabledDateMessage", "dateForInitialView", "numberOfMonths", "mode", "range", "weekRangeSelect"], outputs: ["onSelect"] }, { kind: "pipe", type: i2$1.DatePipe, name: "date" }, { kind: "pipe", type: i8.DefaultPipe, name: "default" }] }); }
1361
1370
  }
1362
1371
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NovoMultiDateInputElement, decorators: [{
1363
1372
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"novo-elements-elements-date-picker.mjs","sources":["../../../projects/novo-elements/src/elements/date-picker/DatePicker.ts","../../../projects/novo-elements/src/elements/date-picker/DatePickerInput.ts","../../../projects/novo-elements/src/elements/date-picker/DateRangeInput.ts","../../../projects/novo-elements/src/elements/date-picker/MultiDateInput.ts","../../../projects/novo-elements/src/elements/date-picker/DatePicker.module.ts","../../../projects/novo-elements/src/elements/date-picker/novo-elements-elements-date-picker.ts"],"sourcesContent":["// NG2\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, HostBinding, Input, OnInit, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DomSanitizer } from '@angular/platform-browser';\n// Vendor\nimport { isDate, isValid, subDays } from 'date-fns';\n// APP\nimport { NovoLabelService } from 'novo-elements/services';\nimport { BooleanInput, DataTableRangeModel, DatePickerSelectModes, DateUtil, Helpers, modelTypes, RangeModel, rangeSelectModes } from 'novo-elements/utils';\n\n// Value accessor for the component (supports ngModel)\nconst DATE_PICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NovoDatePickerElement),\n multi: true,\n};\n\n@Component({\n selector: 'novo-date-picker',\n providers: [DATE_PICKER_VALUE_ACCESSOR],\n animations: [\n trigger('startDateTextState', [\n state(\n 'startDate',\n style({\n opacity: '1.0',\n }),\n ),\n state(\n 'endDate',\n style({\n opacity: '0.6',\n }),\n ),\n transition('startDate <=> endDate', animate('200ms ease-in')),\n ]),\n trigger('endDateTextState', [\n state(\n 'startDate',\n style({\n opacity: '0.6',\n }),\n ),\n state(\n 'endDate',\n style({\n opacity: '1.0',\n }),\n ),\n transition('startDate <=> endDate', animate('200ms ease-in')),\n ]),\n trigger('indicatorState', [\n state(\n 'startDate',\n style({\n transform: 'translateX(0%)',\n }),\n ),\n state(\n 'endDate',\n style({\n transform: 'translateX(100%)',\n }),\n ),\n transition('startDate <=> endDate', animate('200ms ease-in')),\n ]),\n ],\n template: `\n <div class=\"date-picker-container\">\n <div class=\"date-range-tabs\" *ngIf=\"range\" [class.week-select-mode]=\"weekRangeSelect\">\n <span\n class=\"range-tab\"\n (click)=\"toggleRangeSelect('startDate')\"\n [@startDateTextState]=\"rangeSelectMode\"\n data-automation-id=\"calendar-start-date\"\n >{{ startDateLabel }}</span\n >\n <span\n class=\"range-tab\"\n (click)=\"toggleRangeSelect('endDate')\"\n [@endDateTextState]=\"rangeSelectMode\"\n data-automation-id=\"calendar-end-date\"\n >{{ endDateLabel }}</span\n >\n <i class=\"indicator\" [@indicatorState]=\"rangeSelectMode\"></i>\n </div>\n\n <novo-calendar\n [activeDate]=\"activeDate\"\n [(selected)]=\"selection\"\n (selectedChange)=\"updateSelection($event)\"\n [mode]=\"mode\"\n [numberOfMonths]=\"numberOfMonths\"\n [weekStartsOn]=\"weekStart\"\n [disabledDateMessage]=\"disabledDateMessage\"\n [minDate]=\"start\"\n [maxDate]=\"end\"\n ></novo-calendar>\n\n <div class=\"calendar-footer\" [hidden]=\"hideFooter\">\n <novo-button (click)=\"setToday()\" class=\"today\" size=\"small\" data-automation-id=\"calendar-today\">{{ labels.today }}</novo-button>\n </div>\n </div>\n `,\n styleUrls: ['./DatePicker.scss'],\n})\nexport class NovoDatePickerElement implements ControlValueAccessor, OnInit {\n /**\n * The minimum year to allow selected in year select view\n **/\n @Input()\n minYear: string | number;\n /**\n * The maximum year to allow selected in year select view\n **/\n @Input()\n maxYear: string | number;\n /**\n * The minimum date that can be selected.\n **/\n @Input()\n start: Date;\n /**\n * The maximum date that can be selected.\n **/\n @Input()\n end: Date;\n /**\n * **Deprecated** Whether the date-picker is used outside of an overlay.\n **/\n @Input()\n @BooleanInput()\n inline: boolean;\n /**\n * Day of the week the calendar should display first, Sunday=0...Saturday=6\n **/\n @Input()\n weekStart: Day = 0;\n /**\n * Certain dates that are already selected.\n **/\n @Input()\n preselected: Date[] = [];\n /**\n * Whether the days for the previous and next month should be hidden.\n **/\n @Input()\n @BooleanInput()\n @HostBinding('class.hide-overflow-days')\n public hideOverflowDays: boolean = false;\n /**\n * Whether the footer which contains `today` button should be hidden.\n **/\n @Input()\n @BooleanInput()\n public hideFooter: boolean = false;\n\n @Input()\n disabledDateMessage: string;\n\n // Select callback for output\n @Output()\n onSelect: EventEmitter<any> = new EventEmitter(false);\n\n _mode: DatePickerSelectModes = 'single';\n _range: boolean;\n _weekRangeSelect: boolean;\n _numberOfMonths: number[] = [0];\n\n /**\n * Number of months to display at once.\n * @default 1\n **/\n @Input()\n get numberOfMonths(): number {\n return this._numberOfMonths.length;\n }\n set numberOfMonths(value) {\n this._numberOfMonths = Array.from(Array(Number(value)).keys());\n }\n\n /**\n * How the date selection should work.\n * @default single\n **/\n @Input()\n get mode(): DatePickerSelectModes {\n return this._mode;\n }\n set mode(value) {\n if (this._mode !== value) {\n this._mode = value;\n }\n }\n /**\n * **deprecated** please use `mode=\"range\"`.\n **/\n @Input()\n get range(): boolean {\n return ['range', 'week'].includes(this.mode) || this._range;\n }\n set range(value) {\n console.warn(`'range' property is deprecated, please use 'mode=\"range\"'.`);\n if (this._range !== value) {\n this._range = value;\n this.mode = 'range';\n }\n }\n /**\n * **deprecated** please use `mode=\"week\"`.\n **/\n @Input()\n get weekRangeSelect(): boolean {\n return this._mode === 'week' || this._weekRangeSelect;\n }\n set weekRangeSelect(value) {\n console.warn(`'weekRangeSelect' property is deprecated, please use 'mode=\"week\"'.`);\n if (this._weekRangeSelect !== value) {\n this._weekRangeSelect = value;\n this.mode = 'week';\n }\n }\n\n // @HostBinding('style.width')\n // get hb_width() {\n // return this._sanitizer.bypassSecurityTrustStyle(`${this.numberOfMonths * 228}px`);\n // }\n\n model: modelTypes;\n activeDate: Date;\n\n _selection: Date[] = [];\n preview: Date[] = [];\n startDateLabel: string;\n endDateLabel: string;\n\n rangeSelectMode: rangeSelectModes = 'startDate';\n _onChange: Function = () => {};\n _onTouched: Function = () => {};\n\n get selection(): Date[] {\n return this._selection;\n }\n set selection(value) {\n this._selection = value ? value.filter(isDate).map((d) => DateUtil.startOfDay(d)) : [];\n }\n\n constructor(\n public labels: NovoLabelService,\n private element: ElementRef,\n private cdr: ChangeDetectorRef,\n private _sanitizer: DomSanitizer,\n ) {}\n\n ngOnInit() {\n // Determine the year array\n const now = new Date();\n // Set labels\n if (this.model) {\n this.modelToSelection(this.model);\n }\n if (this.selection && this.selection.length) {\n this.updateView(this.selection[0]);\n }\n }\n\n updateView(date) {\n const value: any = date ? new Date(date) : new Date();\n this.activeDate = new Date(value);\n }\n\n updateSelection(selected: Date[], fireEvents = true) {\n // Helpers.swallowEvent(event);\n this.selection = selected;\n\n this.startDateLabel = this.labels.formatDateWithFormat(this.selection[0], {\n month: 'short',\n day: '2-digit',\n year: 'numeric',\n });\n\n this.endDateLabel = this.labels.formatDateWithFormat(this.selection[1], {\n month: 'short',\n day: '2-digit',\n year: 'numeric',\n });\n\n if (fireEvents) {\n switch (this.mode) {\n case 'multiple':\n this.fireSelect();\n // Also, update the ngModel\n this._onChange(this.selection);\n this.model = this.selection;\n break;\n case 'range':\n case 'week':\n if (this.selection.filter(Boolean).length === 2) {\n this.fireRangeSelect();\n // Also, update the ngModel\n const model = {\n startDate: this.selection[0],\n endDate: this.selection[1],\n };\n this._onChange(model);\n this.model = model;\n }\n break;\n case 'single':\n default:\n this.fireSelect();\n // Also, update the ngModel\n this._onChange(this.selection[0]);\n this.model = this.selection[0];\n break;\n }\n }\n\n this.cdr.markForCheck();\n }\n\n eventData(date: Date) {\n return {\n year: date.getFullYear(),\n month: this.labels.formatDateWithFormat(date, { month: 'long' }),\n day: this.labels.formatDateWithFormat(date, { weekday: 'long' }),\n date,\n };\n }\n\n fireSelect() {\n if (this.mode === 'multiple') {\n this.onSelect.next(this.selection);\n } else {\n this.onSelect.next(this.eventData(this.selection[0]));\n }\n }\n\n fireRangeSelect() {\n // Make sure the start date is before the end date\n if (this.selection.filter(Boolean).length === 2) {\n const [start, end] = this.selection;\n this.onSelect.next({\n startDate: this.eventData(start),\n endDate: this.eventData(end),\n });\n }\n }\n\n setToday() {\n const tmp = new Date();\n this.updateView(tmp);\n this.updateSelection(Array.of(tmp));\n }\n\n toggleRangeSelect(range: rangeSelectModes): void {\n this.rangeSelectMode = range;\n if (range === 'startDate' && this.selection.length) {\n this.updateView(this.selection[0]);\n }\n if (range === 'endDate' && this.selection.length === 2) {\n this.updateView(this.selection[1]);\n }\n }\n\n modelToSelection(model: modelTypes) {\n switch (this.mode) {\n case 'multiple':\n this.selection = model as Date[];\n break;\n case 'range':\n case 'week':\n this.setRangeSelection();\n case 'single':\n default:\n this.selection = [model as Date];\n break;\n }\n }\n\n // ValueAccessor Functions\n writeValue(model: modelTypes): void {\n this.model = model;\n if (this.mode === 'multiple') {\n this.selection = this.model as Date[];\n }\n if (this.mode === 'range') {\n this.setRangeSelection();\n }\n if (Helpers.isDate(model)) {\n this.updateView(model);\n this.modelToSelection(model);\n } else if (Helpers.isString(model)) {\n const date = DateUtil.parse(model as any);\n if (isValid(date)) {\n this.updateView(date);\n this.modelToSelection(date);\n }\n }\n }\n\n setRangeSelection() {\n if (this.model?.hasOwnProperty('startDate')) {\n // coming from standalone date picker\n const range = this.model as RangeModel;\n this.selection = [range.startDate, range.endDate].filter(Boolean);\n } else if (this.model?.hasOwnProperty('min')) {\n // coming from data-table filter where model end date is the beginning of the next day\n const range = this.model as DataTableRangeModel;\n this.selection = [range.min, subDays(range.max, 1)].filter(Boolean);\n }\n }\n\n registerOnChange(fn: Function): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this._onTouched = fn;\n }\n}\n","// NG\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n// Vendor\nimport { isValid } from 'date-fns';\n// App\nimport { NovoOverlayTemplateComponent } from 'novo-elements/elements/common';\nimport { DateFormatService, NovoLabelService } from 'novo-elements/services';\nimport { BooleanInput, DateUtil, Helpers, Key } from 'novo-elements/utils';\n\n// Value accessor for the component (supports ngModel)\nconst DATE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NovoDatePickerInputElement),\n multi: true,\n};\n\n@Component({\n selector: 'novo-date-picker-input',\n providers: [DATE_VALUE_ACCESSOR],\n template: `\n <input\n type=\"text\"\n [name]=\"name\"\n [(ngModel)]=\"formattedValue\"\n [imask]=\"maskOptions\"\n [placeholder]=\"placeholder\"\n (focus)=\"_handleFocus($event)\"\n (keydown)=\"_handleKeydown($event)\"\n (input)=\"_handleInput($event)\"\n (blur)=\"_handleBlur($event)\"\n (accept)=\"handleMaskAccept($event)\"\n #input\n data-automation-id=\"date-input\"\n [disabled]=\"disabled\"\n />\n <span class=\"error-text\" *ngIf=\"showInvalidDateError\">{{ invalidDateErrorMessage }}</span>\n <i *ngIf=\"!hasValue\" (click)=\"openPanel()\" class=\"bhi-calendar\"></i>\n <i *ngIf=\"hasValue\" (click)=\"clearValue()\" class=\"bhi-times\"></i>\n <novo-overlay-template [parent]=\"overlayElement\" position=\"above-below\">\n <novo-date-picker\n [start]=\"start\"\n [end]=\"end\"\n inline=\"true\"\n (onSelect)=\"setValueAndClose($event)\"\n [disabledDateMessage]=\"disabledDateMessage\"\n [ngModel]=\"value\"\n [weekStart]=\"weekStart\"\n [hideFooter]=\"hideFooter\"\n ></novo-date-picker>\n </novo-overlay-template>\n `,\n styleUrls: ['./DatePickerInput.scss'],\n})\nexport class NovoDatePickerInputElement implements OnInit, OnChanges, AfterViewInit, ControlValueAccessor {\n public value: any;\n public formattedValue: string = '';\n public showInvalidDateError: boolean;\n public invalidDateErrorMessage: string = '';\n private userDefinedFormat: boolean;\n private isInvalidDate: boolean;\n\n /** View -> model callback called when value changes */\n _onChange: (value: any) => void = () => {};\n\n /** View -> model callback called when autocomplete has been touched */\n _onTouched = () => {};\n\n /**\n * The name of the form field, get passed to the native `input` element\n **/\n @Input()\n name: string;\n /**\n * The minimum date that can be selected.\n **/\n @Input()\n start: Date;\n /**\n * The maximum date that can be selected.\n **/\n @Input()\n end: Date;\n /**\n * Placeholder text to display in the input when it is empty.\n **/\n @Input()\n placeholder: string;\n /**\n * MaskOptions to pass to the angular-imask plugin\n **/\n @Input()\n maskOptions: any;\n /**\n * The format to use to parse and render dates: DD/MM/YYYY or MM/DD/YYYY\n **/\n @Input()\n format: string;\n /**\n * Whether to apply a text mask to the date (see `maskOptions`). Only enabled if allowInvalidDate is false.\n */\n @Input()\n textMaskEnabled: boolean = true;\n /**\n * Whether the input should emit values when the field does not yet constitute a valid date\n */\n @Input()\n allowInvalidDate: boolean = false;\n /**\n * The element to use as the parent for the date picker's overlay (to determine bounds sizing). By default,\n * this refers to the input element itself, but may be a container if it has a padded border.\n */\n @Input()\n overlayOnElement: ElementRef;\n /**\n * Whether the footer in the date picker which contains `today` button should be hidden.\n **/\n @Input()\n @BooleanInput()\n public hideFooter: boolean = false;\n /**\n * Sets the field as to appear disabled, users will not be able to interact with the text field.\n **/\n @HostBinding('class.disabled')\n @Input()\n disabled: boolean = false;\n /**\n * A message to display in the picker overlay when a given date is disabled through minimum/maximum\n */\n @Input()\n disabledDateMessage: string;\n /**\n * Day of the week the calendar should display first, Sunday=0...Saturday=6\n **/\n @Input()\n weekStart: Day = 0;\n @Output()\n blurEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n @Output()\n focusEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n @Output()\n changeEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n /** Element for the panel containing the autocomplete options. */\n @ViewChild(NovoOverlayTemplateComponent)\n overlay: NovoOverlayTemplateComponent;\n\n constructor(\n public element: ElementRef,\n public labels: NovoLabelService,\n private _changeDetectorRef: ChangeDetectorRef,\n public dateFormatService: DateFormatService,\n ) {\n this.placeholder = this.labels.localizedDatePlaceholder();\n }\n\n ngOnInit() {\n this._initFormatOptions();\n }\n ngOnChanges(changes: SimpleChanges): void {\n if (Object.keys(changes).some((key) => ['format'].includes(key))) {\n this._initFormatOptions();\n }\n }\n\n ngAfterViewInit(): void {\n this.overlay.panelClosingActions.subscribe(this._handleOverlayClickout.bind(this));\n }\n\n _initFormatOptions() {\n this.userDefinedFormat = this.format ? !this.format.match(/^(DD\\/MM\\/YYYY|MM\\/DD\\/YYYY)$/g) : false;\n if (!this.userDefinedFormat && this.textMaskEnabled && !this.allowInvalidDate) {\n this.maskOptions = this.maskOptions || this.dateFormatService.getDateMask();\n } else {\n this.maskOptions = undefined;\n }\n this.setupInvalidDateErrorMessage();\n }\n\n /** BEGIN: Convenient Panel Methods. */\n openPanel(): void {\n if (!this.disabled) {\n this.overlay.openPanel();\n }\n }\n closePanel(): void {\n this.overlay.closePanel();\n }\n get panelOpen(): boolean {\n return this.overlay?.panelOpen;\n }\n\n get overlayElement(): ElementRef {\n return this.overlayOnElement || this.element;\n }\n /** END: Convenient Panel Methods. */\n\n _handleKeydown(event: KeyboardEvent): void {\n if ((event.key === Key.Escape || event.key === Key.Enter || event.key === Key.Tab) && this.panelOpen) {\n this._handleValueUpdate((event.target as HTMLInputElement).value, true);\n this.closePanel();\n event.stopPropagation();\n }\n }\n\n _handleInput(event: KeyboardEvent): void {\n // if maskOptions is enabled, then we do not want to process inputs until the mask has accepted them - so those events will be\n // handled by the (accept) event.\n if (document.activeElement === event.target && !this.maskOptions) {\n this._handleValueUpdate((event.target as HTMLInputElement).value, false);\n }\n }\n\n _handleBlur(event: FocusEvent): void {\n if (!this.overlay.isBlurRecipient(event)) {\n this.handleInvalidDate();\n this.blurEvent.emit(event);\n }\n }\n\n _handleOverlayClickout(): void {\n this.handleInvalidDate(/*fromPanelClose:*/true);\n this.blurEvent.emit();\n }\n\n _handleFocus(event: FocusEvent): void {\n this.showInvalidDateError = false;\n this.openPanel();\n this.focusEvent.emit(event);\n }\n\n _handleValueUpdate(value: string, blur: boolean): void {\n if (value === '') {\n this.clearValue();\n this.closePanel();\n } else {\n this.formatDate(value, blur);\n this.openPanel();\n }\n }\n\n handleMaskAccept(maskValue: string): void {\n this._handleValueUpdate(maskValue, false);\n }\n\n protected formatDate(value: string, blur: boolean) {\n try {\n let dateTimeValue: Date;\n let isInvalidDate: boolean;\n if (this.format) {\n [dateTimeValue, , isInvalidDate] = this.dateFormatService.parseCustomDateString(value, this.format);\n } else {\n [dateTimeValue, , isInvalidDate] = this.dateFormatService.parseString(value, false, 'date');\n }\n this.isInvalidDate = isInvalidDate;\n // if we have a full date - set the dateTimeValue\n if (dateTimeValue?.getFullYear()?.toString().length === 4) {\n const dt = new Date(dateTimeValue);\n this.dispatchOnChange(dt, blur);\n // if we only have a partial date - set the value to null\n } else if (isNaN(dateTimeValue?.getUTCDate())) {\n this.dispatchOnChange(null, blur);\n }\n } catch (err) {}\n }\n\n writeValue(value: any): void {\n Promise.resolve(null).then(() => this._setTriggerValue(value));\n }\n\n registerOnChange(fn: (value: any) => {}): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => {}) {\n this._onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n handleInvalidDate(fromPanelClose = false): void {\n if (this.isInvalidDate) { //} && this.value) {\n this.showInvalidDateError = true;\n this.clearValue();\n if (!fromPanelClose) {\n this.closePanel();\n }\n }\n }\n\n setupInvalidDateErrorMessage(): void {\n let dateFormat: string = this.labels.dateFormatString();\n if (Helpers.isEmpty(dateFormat)) {\n // Default to mm/dd/yyyy\n dateFormat = 'mm/dd/yyyy';\n } else {\n dateFormat = dateFormat.toLowerCase();\n }\n this.invalidDateErrorMessage = `Invalid date field entered. Date format of ${dateFormat} is required.`;\n }\n\n public dispatchOnChange(newValue?: any, blur: boolean = false, skip: boolean = false) {\n if (newValue !== this.value) {\n this._onChange(newValue);\n this.changeEvent.emit(newValue);\n if (blur) {\n !skip && this.writeValue(newValue);\n } else {\n !skip && this._setCalendarValue(newValue);\n }\n }\n }\n\n private _setTriggerValue(value: any): void {\n this._setCalendarValue(value);\n this._setFormValue(value);\n this._changeDetectorRef.markForCheck();\n }\n\n private _setCalendarValue(value: any): void {\n if (value instanceof Date && this.value instanceof Date) {\n let newDate = new Date(value);\n newDate.setHours(0, 0, 0, 0);\n this.value = newDate;\n return;\n }\n this.value = value;\n }\n\n private _setFormValue(value: any): void {\n if (value) {\n const test = this.formatDateValue(value);\n this.formattedValue = test;\n } else {\n this.formattedValue = '';\n }\n }\n\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n public setValueAndClose(event: any | null): void {\n if (event?.date) {\n this.showInvalidDateError = false;\n this.dispatchOnChange(event.date, true);\n }\n this.closePanel();\n }\n\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n public clearValue() {\n this.formattedValue = '';\n this.dispatchOnChange(null);\n }\n\n public formatDateValue(value) {\n const originalValue = value;\n try {\n if (!value) {\n return '';\n }\n if (this.userDefinedFormat && isValid(value)) {\n return DateUtil.format(value, this.format);\n }\n if (!(value instanceof Date)) {\n value = new Date(value);\n }\n if (!(isNaN(value.valueOf()) && this.allowInvalidDate)) {\n return this.labels.formatDateWithFormat(value, {\n month: '2-digit',\n day: '2-digit',\n year: 'numeric',\n });\n } else {\n return originalValue;\n }\n } catch (err) {\n return err;\n }\n }\n\n public get hasValue() {\n return !Helpers.isEmpty(this.value);\n }\n}\n","// NG\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n// Vendor\nimport { isValid } from 'date-fns';\n// App\nimport { NovoOverlayTemplateComponent } from 'novo-elements/elements/common';\nimport { DateFormatService, NovoLabelService } from 'novo-elements/services';\nimport { DateUtil, Helpers, Key, RangeModel } from 'novo-elements/utils';\n\n// Value accessor for the component (supports ngModel)\nconst DATE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NovoDateRangeInputElement),\n multi: true,\n};\n\n@Component({\n selector: 'novo-date-range-input',\n providers: [DATE_VALUE_ACCESSOR],\n template: `\n <div class=\"date-range-input-container\">\n <input\n type=\"text\"\n [name]=\"name\"\n [(ngModel)]=\"formattedStartDate\"\n [imask]=\"maskOptions\"\n [placeholder]=\"placeholder\"\n (keydown)=\"_onStartInputChange($event)\"\n (input)=\"_onStartInputChange($event)\"\n (focus)=\"_handleFocus($event)\"\n (blur)=\"_handleBlur($event)\"\n #startDate\n data-automation-id=\"date-range-input-start\"\n [disabled]=\"disabled\"\n />\n <novo-icon *ngIf=\"!hasStartValue\" (click)=\"openPanel()\">calendar</novo-icon>\n <novo-icon *ngIf=\"hasStartValue\" (click)=\"clearStartValue()\">x</novo-icon>\n </div>\n <div class=\"date-range-input-divider\">-</div>\n <div class=\"date-range-input-container\">\n <input\n type=\"text\"\n [name]=\"name\"\n [(ngModel)]=\"formattedEndDate\"\n [imask]=\"maskOptions\"\n [placeholder]=\"placeholder\"\n (keydown)=\"_onEndInputChange($event)\"\n (input)=\"_onEndInputChange($event)\"\n (focus)=\"_handleFocus($event)\"\n (blur)=\"_handleBlur($event)\"\n #endDate\n data-automation-id=\"date-range-input-end\"\n [disabled]=\"disabled\"\n />\n <novo-icon *ngIf=\"!hasEndValue\" (click)=\"openPanel()\">calendar</novo-icon>\n <novo-icon *ngIf=\"hasEndValue\" (click)=\"clearEndValue()\">x</novo-icon>\n </div>\n <novo-overlay-template [parent]=\"element\" position=\"above-below\">\n <novo-date-picker\n [start]=\"start\"\n [end]=\"end\"\n [mode]=\"mode\"\n range=\"true\"\n inline=\"true\"\n (onSelect)=\"setValueAndClose($event)\"\n [ngModel]=\"value\"\n [weekStart]=\"weekStart\"\n ></novo-date-picker>\n </novo-overlay-template>\n `,\n styleUrls: ['./DateRangeInput.scss'],\n})\nexport class NovoDateRangeInputElement implements OnInit, OnChanges, ControlValueAccessor {\n public formattedStartDate: string = '';\n public formattedEndDate: string = '';\n private userDefinedFormat: boolean;\n\n @Input()\n name: string;\n @Input()\n start: Date;\n @Input()\n end: Date;\n @Input()\n weekRangeSelect: boolean = false;\n @Input()\n mode: string = 'range';\n @Input()\n placeholder: string;\n @Input()\n maskOptions: any;\n @Input()\n format: string;\n @Input()\n textMaskEnabled: boolean = true;\n @Input()\n allowInvalidDate: boolean = false;\n @Input()\n weekStart: number = 0;\n @Output()\n blurEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n @Output()\n focusEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n\n /** Element for the panel containing the autocomplete options. */\n @ViewChild(NovoOverlayTemplateComponent)\n overlay: NovoOverlayTemplateComponent;\n\n @Output() change = new EventEmitter();\n @Output() blur = new EventEmitter();\n @Output() focus = new EventEmitter();\n\n private _value: RangeModel = { startDate: null, endDate: null };\n private _disabled: boolean = false;\n\n @Input() get value(): RangeModel {\n return this._value;\n }\n set value(value) {\n if (this.value !== value) {\n this._value = value;\n this._setFormValue(value);\n this.onChangeCallback(this._value);\n }\n }\n\n // Disabled State\n @Input()\n @HostBinding('class.disabled')\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = !!value;\n }\n\n constructor(\n public element: ElementRef,\n public labels: NovoLabelService,\n private cdr: ChangeDetectorRef,\n public dateFormatService: DateFormatService,\n ) {\n this.placeholder = this.labels.dateFormatString().toUpperCase() || this.labels.dateFormatPlaceholder;\n }\n\n ngOnInit() {\n this._initFormatOptions();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (Object.keys(changes).some((key) => ['format'].includes(key))) {\n this._initFormatOptions();\n }\n }\n\n _initFormatOptions() {\n this.userDefinedFormat = this.format ? !this.format.match(/^(DD\\/MM\\/YYYY|MM\\/DD\\/YYYY)$/g) : false;\n if (!this.userDefinedFormat && this.textMaskEnabled && !this.allowInvalidDate) {\n this.maskOptions = this.maskOptions || this.dateFormatService.getDateMask();\n } else {\n this.maskOptions = undefined;\n }\n }\n\n /** BEGIN: Convenient Panel Methods. */\n openPanel(): void {\n if (!this.disabled) {\n this.overlay.openPanel();\n }\n }\n\n closePanel(): void {\n this.overlay && this.overlay.closePanel();\n }\n\n get panelOpen(): boolean {\n return this.overlay && this.overlay.panelOpen;\n }\n /** END: Convenient Panel Methods. */\n\n _handleKeydown(event: KeyboardEvent): void {\n if ((event.key === Key.Escape || event.key === Key.Enter || event.key === Key.Tab) && this.panelOpen) {\n this.closePanel();\n event.stopPropagation();\n }\n }\n\n _handleBlur(event: FocusEvent): void {\n this.blurEvent.emit(event);\n }\n\n _handleFocus(event: FocusEvent): void {\n this.openPanel();\n this.focusEvent.emit(event);\n }\n\n protected formatDate(value: string) {\n try {\n const [dateTimeValue] = this.dateFormatService.parseString(value, false, 'date');\n return dateTimeValue ? new Date(dateTimeValue) : null;\n } catch (err) {\n return null;\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n private onChangeCallback = (_: any) => {\n // placeholder\n };\n\n private onTouchedCallback = () => {\n // placeholder\n };\n\n _onStartInputChange(event: KeyboardEvent) {\n this._handleKeydown(event);\n if (document.activeElement === event.target) {\n event.stopPropagation();\n const startDate = this.formatDate((event.target as HTMLInputElement).value);\n if (startDate) {\n this.value = {\n ...this.value,\n startDate,\n };\n this.change.emit(this.value);\n }\n }\n }\n\n _onEndInputChange(event: KeyboardEvent) {\n this._handleKeydown(event);\n if (document.activeElement === event.target) {\n event.stopPropagation();\n const endDate = this.formatDate((event.target as HTMLInputElement).value);\n if (endDate) {\n this.value = {\n ...this.value,\n endDate,\n };\n this.change.emit(this.value);\n }\n }\n }\n\n private _setFormValue(value: RangeModel): void {\n if (this.value) {\n this.formattedStartDate = this.formatDateValue(this.value.startDate);\n this.formattedEndDate = this.formatDateValue(this.value.endDate);\n }\n }\n\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n public setValueAndClose(event: any | null): void {\n if (event && event.startDate && event.endDate) {\n const startDate = event.startDate.date;\n const endDate = event.endDate.date;\n this.value = { startDate, endDate };\n this.change.emit(this.value);\n }\n this.closePanel();\n }\n\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n public clearStartValue() {\n this.formattedStartDate = '';\n this.value = { ...this.value, startDate: null };\n this.change.emit(this.value);\n }\n public clearEndValue() {\n this.formattedEndDate = '';\n this.value = { ...this.value, endDate: null };\n this.change.emit(this.value);\n }\n\n public formatDateValue(value) {\n const originalValue = value;\n try {\n if (!value) {\n return '';\n }\n if (this.userDefinedFormat && isValid(value)) {\n return DateUtil.format(value, this.format);\n }\n if (!(value instanceof Date)) {\n value = new Date(value);\n }\n if (!(isNaN(value.valueOf()) && this.allowInvalidDate)) {\n return this.labels.formatDateWithFormat(value, {\n month: '2-digit',\n day: '2-digit',\n year: 'numeric',\n });\n } else {\n return originalValue;\n }\n } catch (err) {\n return '';\n }\n }\n\n public get hasStartValue() {\n return !Helpers.isEmpty(this.value?.startDate);\n }\n public get hasEndValue() {\n return !Helpers.isEmpty(this.value?.endDate);\n }\n}\n","// NG\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n// App\nimport { NovoOverlayTemplateComponent } from 'novo-elements/elements/common';\nimport { DateFormatService, NovoLabelService } from 'novo-elements/services';\nimport { Helpers, Key } from 'novo-elements/utils';\n\n// Value accessor for the component (supports ngModel)\nconst MULTI_DATE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NovoMultiDateInputElement),\n multi: true,\n};\n\n@Component({\n selector: 'novo-multi-date-input',\n providers: [MULTI_DATE_VALUE_ACCESSOR],\n template: `\n <novo-chip-list>\n <novo-chip *ngFor=\"let date of value | default: []\" (removed)=\"remove($event, date)\">\n {{ date | date: format }}\n <novo-icon novoChipRemove>close</novo-icon>\n </novo-chip>\n </novo-chip-list>\n <!-- <div *ngIf=\"value.length > chipsCount\">\n <ul class=\"summary\">\n <li *ngFor=\"let type of notShown\">+ {{ type.count }} {{ labels.more }} {{ type.type }}</li>\n </ul>\n </div> -->\n <div class=\"chip-input-container\" (click)=\"_handleFocus($event)\">\n <span class=\"placeholder\" *ngIf=\"!value.length\" data-automation-id=\"multi-date-input\">{{ placeholder }}</span>\n </div>\n <novo-icon class=\"panel-toggle\" [class.selected]=\"panelOpen\" (click)=\"openPanel()\">calendar</novo-icon>\n <label class=\"clear-all\" *ngIf=\"value.length\" (click)=\"clearValue()\">{{ labels.clearAll }} <i class=\"bhi-times\"></i></label>\n <novo-overlay-template [parent]=\"element\" position=\"above-below\">\n <novo-date-picker\n [start]=\"start\"\n [end]=\"end\"\n inline=\"true\"\n mode=\"multiple\"\n (onSelect)=\"setValueAndClose($event)\"\n [(ngModel)]=\"value\"\n [weekStart]=\"weekStart\"\n ></novo-date-picker>\n </novo-overlay-template>\n `,\n styleUrls: ['./MultiDateInput.scss'],\n})\nexport class NovoMultiDateInputElement implements OnInit, ControlValueAccessor {\n public formattedStartDate: string = '';\n public formattedEndDate: string = '';\n private userDefinedFormat: boolean;\n\n @Input()\n name: string;\n @Input()\n start: Date;\n @Input()\n end: Date;\n @Input()\n placeholder: string;\n @Input()\n format: string = 'shortDate';\n @Input()\n allowInvalidDate: boolean = false;\n @Input()\n weekStart: number = 0;\n @Input()\n chipsCount: number = 5;\n @Output()\n blurEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n @Output()\n focusEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n\n /** Element for the panel containing the autocomplete options. */\n @ViewChild(NovoOverlayTemplateComponent)\n overlay: NovoOverlayTemplateComponent;\n\n @Output() change = new EventEmitter();\n @Output() blur = new EventEmitter();\n @Output() focus = new EventEmitter();\n\n private _value: Date[] = [];\n private _disabled: boolean = false;\n private notShown: any = {};\n\n @Input() get value(): Date[] {\n return this._value;\n }\n set value(value) {\n if (this.value !== value) {\n this._value = value;\n this.onChangeCallback(this._value);\n }\n }\n\n // Disabled State\n @Input()\n @HostBinding('class.disabled')\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = !!value;\n }\n\n constructor(\n public element: ElementRef,\n public labels: NovoLabelService,\n private cdr: ChangeDetectorRef,\n public dateFormatService: DateFormatService,\n ) {\n this.placeholder = this.labels.dateFormatString().toUpperCase() || this.labels.dateFormatPlaceholder;\n }\n\n ngOnInit() {\n this.userDefinedFormat = this.format ? !this.format.match(/^(DD\\/MM\\/YYYY|MM\\/DD\\/YYYY)$/g) : false;\n }\n\n formatter(value) {\n const [dateTimeValue, formatted] = this.dateFormatService.parseString(value, false, 'date');\n return formatted;\n }\n\n /** BEGIN: Convenient Panel Methods. */\n openPanel(): void {\n if (!this.disabled) {\n this.panelOpen ? this.overlay.closePanel() : this.overlay.openPanel();\n }\n }\n\n closePanel(): void {\n this.overlay && this.overlay.closePanel();\n }\n\n get panelOpen(): boolean {\n return this.overlay && this.overlay.panelOpen;\n }\n /** END: Convenient Panel Methods. */\n\n _handleKeydown(event: KeyboardEvent): void {\n if ((event.key === Key.Escape || event.key === Key.Enter || event.key === Key.Tab) && this.panelOpen) {\n this.closePanel();\n event.stopPropagation();\n }\n }\n\n _handleBlur(event: FocusEvent): void {\n this.blurEvent.emit(event);\n }\n\n _handleFocus(event: FocusEvent): void {\n this.openPanel();\n this.focusEvent.emit(event);\n }\n\n remove(event: any, date: Date) {\n const current = new Set(this.value);\n if (current.has(date)) {\n current.delete(date);\n }\n this.value = [...current];\n }\n\n writeValue(value: any): void {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n private onChangeCallback = (_: any) => {\n // placeholder\n };\n\n private onTouchedCallback = () => {\n // placeholder\n };\n\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n public setValueAndClose(event: Date[] = []): void {\n if (event) {\n this.value = event;\n this.change.emit(this.value);\n }\n // this.closePanel();\n }\n\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n public clearValue() {\n this.value = [];\n this.change.emit(this.value);\n }\n\n public get hasValue() {\n return !Helpers.isEmpty(this.value);\n }\n}\n","// NG2\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n// Vendor\nimport { IMaskModule } from 'angular-imask';\nimport { NovoPipesModule } from 'novo-elements/pipes';\n// APP\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoCalendarModule } from 'novo-elements/elements/calendar';\nimport { NovoChipsModule } from 'novo-elements/elements/chips';\nimport { NovoOverlayModule } from 'novo-elements/elements/common';\nimport { NovoIconModule } from 'novo-elements/elements/icon';\nimport { NovoDatePickerElement } from './DatePicker';\nimport { NovoDatePickerInputElement } from './DatePickerInput';\nimport { NovoDateRangeInputElement } from './DateRangeInput';\nimport { NovoMultiDateInputElement } from './MultiDateInput';\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n NovoButtonModule,\n NovoPipesModule,\n NovoOverlayModule,\n IMaskModule,\n NovoIconModule,\n NovoChipsModule,\n NovoCalendarModule,\n ],\n declarations: [NovoDatePickerElement, NovoDatePickerInputElement, NovoDateRangeInputElement, NovoMultiDateInputElement],\n exports: [NovoDatePickerElement, NovoDatePickerInputElement, NovoDateRangeInputElement, NovoMultiDateInputElement],\n})\nexport class NovoDatePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","__decorate","DATE_VALUE_ACCESSOR","i2","i4","i5","i6.NovoDatePickerElement","i7.NovoDatePickerElement","i6"],"mappings":"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"}
1
+ {"version":3,"file":"novo-elements-elements-date-picker.mjs","sources":["../../../projects/novo-elements/src/elements/date-picker/DatePicker.ts","../../../projects/novo-elements/src/elements/date-picker/DatePickerInput.ts","../../../projects/novo-elements/src/elements/date-picker/DateRangeInput.ts","../../../projects/novo-elements/src/elements/date-picker/MultiDateInput.ts","../../../projects/novo-elements/src/elements/date-picker/DatePicker.module.ts","../../../projects/novo-elements/src/elements/date-picker/novo-elements-elements-date-picker.ts"],"sourcesContent":["// NG2\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, HostBinding, Input, OnInit, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DomSanitizer } from '@angular/platform-browser';\n// Vendor\nimport { isDate, isValid, subDays } from 'date-fns';\n// APP\nimport { NovoLabelService } from 'novo-elements/services';\nimport { BooleanInput, DataTableRangeModel, DatePickerSelectModes, DateUtil, Helpers, modelTypes, RangeModel, rangeSelectModes } from 'novo-elements/utils';\n\n// Value accessor for the component (supports ngModel)\nconst DATE_PICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NovoDatePickerElement),\n multi: true,\n};\n\n@Component({\n selector: 'novo-date-picker',\n providers: [DATE_PICKER_VALUE_ACCESSOR],\n animations: [\n trigger('startDateTextState', [\n state(\n 'startDate',\n style({\n opacity: '1.0',\n }),\n ),\n state(\n 'endDate',\n style({\n opacity: '0.6',\n }),\n ),\n transition('startDate <=> endDate', animate('200ms ease-in')),\n ]),\n trigger('endDateTextState', [\n state(\n 'startDate',\n style({\n opacity: '0.6',\n }),\n ),\n state(\n 'endDate',\n style({\n opacity: '1.0',\n }),\n ),\n transition('startDate <=> endDate', animate('200ms ease-in')),\n ]),\n trigger('indicatorState', [\n state(\n 'startDate',\n style({\n transform: 'translateX(0%)',\n }),\n ),\n state(\n 'endDate',\n style({\n transform: 'translateX(100%)',\n }),\n ),\n transition('startDate <=> endDate', animate('200ms ease-in')),\n ]),\n ],\n template: `\n <div class=\"date-picker-container\">\n <div class=\"date-range-tabs\" *ngIf=\"range\" [class.week-select-mode]=\"weekRangeSelect\">\n <span\n class=\"range-tab\"\n (click)=\"toggleRangeSelect('startDate')\"\n [@startDateTextState]=\"rangeSelectMode\"\n data-automation-id=\"calendar-start-date\"\n >{{ startDateLabel }}</span\n >\n <span\n class=\"range-tab\"\n (click)=\"toggleRangeSelect('endDate')\"\n [@endDateTextState]=\"rangeSelectMode\"\n data-automation-id=\"calendar-end-date\"\n >{{ endDateLabel }}</span\n >\n <i class=\"indicator\" [@indicatorState]=\"rangeSelectMode\"></i>\n </div>\n\n <novo-calendar\n [activeDate]=\"activeDate\"\n [(selected)]=\"selection\"\n (selectedChange)=\"updateSelection($event)\"\n [mode]=\"mode\"\n [numberOfMonths]=\"numberOfMonths\"\n [weekStartsOn]=\"weekStart\"\n [disabledDateMessage]=\"disabledDateMessage\"\n [minDate]=\"start\"\n [maxDate]=\"end\"\n ></novo-calendar>\n\n <div class=\"calendar-footer\" [hidden]=\"hideFooter\">\n <novo-button (click)=\"setToday()\" class=\"today\" size=\"small\" data-automation-id=\"calendar-today\">{{ labels.today }}</novo-button>\n </div>\n </div>\n `,\n styleUrls: ['./DatePicker.scss'],\n})\nexport class NovoDatePickerElement implements ControlValueAccessor, OnInit {\n /**\n * The minimum year to allow selected in year select view\n **/\n @Input()\n minYear: string | number;\n /**\n * The maximum year to allow selected in year select view\n **/\n @Input()\n maxYear: string | number;\n /**\n * The minimum date that can be selected.\n **/\n @Input()\n start: Date;\n /**\n * The maximum date that can be selected.\n **/\n @Input()\n end: Date;\n /**\n * **Deprecated** Whether the date-picker is used outside of an overlay.\n **/\n @Input()\n @BooleanInput()\n inline: boolean;\n /**\n * Day of the week the calendar should display first, Sunday=0...Saturday=6\n **/\n @Input()\n weekStart: Day = 0;\n /**\n * Certain dates that are already selected.\n **/\n @Input()\n preselected: Date[] = [];\n /**\n * Whether the days for the previous and next month should be hidden.\n **/\n @Input()\n @BooleanInput()\n @HostBinding('class.hide-overflow-days')\n public hideOverflowDays: boolean = false;\n /**\n * Whether the footer which contains `today` button should be hidden.\n **/\n @Input()\n @BooleanInput()\n public hideFooter: boolean = false;\n\n @Input()\n disabledDateMessage: string;\n\n @Input()\n dateForInitialView?: Date;\n\n // Select callback for output\n @Output()\n onSelect: EventEmitter<any> = new EventEmitter(false);\n\n _mode: DatePickerSelectModes = 'single';\n _range: boolean;\n _weekRangeSelect: boolean;\n _numberOfMonths: number[] = [0];\n\n /**\n * Number of months to display at once.\n * @default 1\n **/\n @Input()\n get numberOfMonths(): number {\n return this._numberOfMonths.length;\n }\n set numberOfMonths(value) {\n this._numberOfMonths = Array.from(Array(Number(value)).keys());\n }\n\n /**\n * How the date selection should work.\n * @default single\n **/\n @Input()\n get mode(): DatePickerSelectModes {\n return this._mode;\n }\n set mode(value) {\n if (this._mode !== value) {\n this._mode = value;\n }\n }\n /**\n * **deprecated** please use `mode=\"range\"`.\n **/\n @Input()\n get range(): boolean {\n return ['range', 'week'].includes(this.mode) || this._range;\n }\n set range(value) {\n console.warn(`'range' property is deprecated, please use 'mode=\"range\"'.`);\n if (this._range !== value) {\n this._range = value;\n this.mode = 'range';\n }\n }\n /**\n * **deprecated** please use `mode=\"week\"`.\n **/\n @Input()\n get weekRangeSelect(): boolean {\n return this._mode === 'week' || this._weekRangeSelect;\n }\n set weekRangeSelect(value) {\n console.warn(`'weekRangeSelect' property is deprecated, please use 'mode=\"week\"'.`);\n if (this._weekRangeSelect !== value) {\n this._weekRangeSelect = value;\n this.mode = 'week';\n }\n }\n\n // @HostBinding('style.width')\n // get hb_width() {\n // return this._sanitizer.bypassSecurityTrustStyle(`${this.numberOfMonths * 228}px`);\n // }\n\n model: modelTypes;\n activeDate: Date;\n\n _selection: Date[] = [];\n preview: Date[] = [];\n startDateLabel: string;\n endDateLabel: string;\n\n rangeSelectMode: rangeSelectModes = 'startDate';\n _onChange: Function = () => {};\n _onTouched: Function = () => {};\n\n get selection(): Date[] {\n return this._selection;\n }\n set selection(value) {\n this._selection = value ? value.filter(isDate).map((d) => DateUtil.startOfDay(d)) : [];\n }\n\n constructor(\n public labels: NovoLabelService,\n private element: ElementRef,\n private cdr: ChangeDetectorRef,\n private _sanitizer: DomSanitizer,\n ) {}\n\n ngOnInit() {\n // Determine the year array\n const now = new Date();\n // Set labels\n if (this.model) {\n this.modelToSelection(this.model);\n }\n if (this.dateForInitialView) {\n this.updateView(this.dateForInitialView);\n } else if (this.selection && this.selection.length) {\n this.updateView(this.selection[0]);\n }\n }\n\n updateView(date) {\n const value: any = date ? new Date(date) : new Date();\n this.activeDate = new Date(value);\n }\n\n updateSelection(selected: Date[], fireEvents = true) {\n // Helpers.swallowEvent(event);\n this.selection = selected;\n\n this.startDateLabel = this.labels.formatDateWithFormat(this.selection[0], {\n month: 'short',\n day: '2-digit',\n year: 'numeric',\n });\n\n this.endDateLabel = this.labels.formatDateWithFormat(this.selection[1], {\n month: 'short',\n day: '2-digit',\n year: 'numeric',\n });\n\n if (fireEvents) {\n switch (this.mode) {\n case 'multiple':\n this.fireSelect();\n // Also, update the ngModel\n this._onChange(this.selection);\n this.model = this.selection;\n break;\n case 'range':\n case 'week':\n if (this.selection.filter(Boolean).length === 2) {\n this.fireRangeSelect();\n // Also, update the ngModel\n const model = {\n startDate: this.selection[0],\n endDate: this.selection[1],\n };\n this._onChange(model);\n this.model = model;\n }\n break;\n case 'single':\n default:\n this.fireSelect();\n // Also, update the ngModel\n this._onChange(this.selection[0]);\n this.model = this.selection[0];\n break;\n }\n }\n\n this.cdr.markForCheck();\n }\n\n eventData(date: Date) {\n return {\n year: date.getFullYear(),\n month: this.labels.formatDateWithFormat(date, { month: 'long' }),\n day: this.labels.formatDateWithFormat(date, { weekday: 'long' }),\n date,\n };\n }\n\n fireSelect() {\n if (this.mode === 'multiple') {\n this.onSelect.next(this.selection);\n } else {\n this.onSelect.next(this.eventData(this.selection[0]));\n }\n }\n\n fireRangeSelect() {\n // Make sure the start date is before the end date\n if (this.selection.filter(Boolean).length === 2) {\n const [start, end] = this.selection;\n this.onSelect.next({\n startDate: this.eventData(start),\n endDate: this.eventData(end),\n });\n }\n }\n\n setToday() {\n const tmp = new Date();\n this.updateView(tmp);\n this.updateSelection(Array.of(tmp));\n }\n\n toggleRangeSelect(range: rangeSelectModes): void {\n this.rangeSelectMode = range;\n if (range === 'startDate' && this.selection.length) {\n this.updateView(this.selection[0]);\n }\n if (range === 'endDate' && this.selection.length === 2) {\n this.updateView(this.selection[1]);\n }\n }\n\n modelToSelection(model: modelTypes) {\n switch (this.mode) {\n case 'multiple':\n this.selection = model as Date[];\n break;\n case 'range':\n case 'week':\n this.setRangeSelection();\n case 'single':\n default:\n this.selection = [model as Date];\n break;\n }\n }\n\n // ValueAccessor Functions\n writeValue(model: modelTypes): void {\n this.model = model;\n if (this.mode === 'multiple') {\n this.selection = this.model as Date[];\n }\n if (this.mode === 'range') {\n this.setRangeSelection();\n }\n if (Helpers.isDate(model)) {\n this.updateView(model);\n this.modelToSelection(model);\n } else if (Helpers.isString(model)) {\n const date = DateUtil.parse(model as any);\n if (isValid(date)) {\n this.updateView(date);\n this.modelToSelection(date);\n }\n }\n }\n\n setRangeSelection() {\n if (this.model?.hasOwnProperty('startDate')) {\n // coming from standalone date picker\n const range = this.model as RangeModel;\n this.selection = [range.startDate, range.endDate].filter(Boolean);\n } else if (this.model?.hasOwnProperty('min')) {\n // coming from data-table filter where model end date is the beginning of the next day\n const range = this.model as DataTableRangeModel;\n this.selection = [range.min, subDays(range.max, 1)].filter(Boolean);\n }\n }\n\n registerOnChange(fn: Function): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this._onTouched = fn;\n }\n}\n","// NG\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n// Vendor\nimport { isValid } from 'date-fns';\n// App\nimport { NovoOverlayTemplateComponent } from 'novo-elements/elements/common';\nimport { DateFormatService, NovoLabelService } from 'novo-elements/services';\nimport { BooleanInput, DateUtil, Helpers, Key } from 'novo-elements/utils';\n\n// Value accessor for the component (supports ngModel)\nconst DATE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NovoDatePickerInputElement),\n multi: true,\n};\n\n@Component({\n selector: 'novo-date-picker-input',\n providers: [DATE_VALUE_ACCESSOR],\n template: `\n <input\n type=\"text\"\n [name]=\"name\"\n [(ngModel)]=\"formattedValue\"\n [imask]=\"maskOptions\"\n [placeholder]=\"placeholder\"\n (focus)=\"_handleFocus($event)\"\n (keydown)=\"_handleKeydown($event)\"\n (input)=\"_handleInput($event)\"\n (blur)=\"_handleBlur($event)\"\n (accept)=\"handleMaskAccept($event)\"\n #input\n data-automation-id=\"date-input\"\n [disabled]=\"disabled\"\n />\n <span class=\"error-text\" *ngIf=\"showInvalidDateError\">{{ invalidDateErrorMessage }}</span>\n <i *ngIf=\"!hasValue\" (click)=\"openPanel()\" class=\"bhi-calendar\"></i>\n <i *ngIf=\"hasValue\" (click)=\"clearValue()\" class=\"bhi-times\"></i>\n <novo-overlay-template [parent]=\"overlayElement\" position=\"above-below\">\n <novo-date-picker\n [start]=\"start\"\n [end]=\"end\"\n inline=\"true\"\n (onSelect)=\"setValueAndClose($event)\"\n [disabledDateMessage]=\"disabledDateMessage\"\n [ngModel]=\"value\"\n [weekStart]=\"weekStart\"\n [hideFooter]=\"hideFooter\"\n [dateForInitialView]=\"dateForInitialView\"\n ></novo-date-picker>\n </novo-overlay-template>\n `,\n styleUrls: ['./DatePickerInput.scss'],\n})\nexport class NovoDatePickerInputElement implements OnInit, OnChanges, AfterViewInit, ControlValueAccessor {\n public value: any;\n public formattedValue: string = '';\n public showInvalidDateError: boolean;\n public invalidDateErrorMessage: string = '';\n private userDefinedFormat: boolean;\n private isInvalidDate: boolean;\n\n /** View -> model callback called when value changes */\n _onChange: (value: any) => void = () => {};\n\n /** View -> model callback called when autocomplete has been touched */\n _onTouched = () => {};\n\n /**\n * The name of the form field, get passed to the native `input` element\n **/\n @Input()\n name: string;\n /**\n * The minimum date that can be selected.\n **/\n @Input()\n start: Date;\n /**\n * The maximum date that can be selected.\n **/\n @Input()\n end: Date;\n /**\n * Placeholder text to display in the input when it is empty.\n **/\n @Input()\n placeholder: string;\n /**\n * MaskOptions to pass to the angular-imask plugin\n **/\n @Input()\n maskOptions: any;\n /**\n * The format to use to parse and render dates: DD/MM/YYYY or MM/DD/YYYY\n **/\n @Input()\n format: string;\n /**\n * Whether to apply a text mask to the date (see `maskOptions`). Only enabled if allowInvalidDate is false.\n */\n @Input()\n textMaskEnabled: boolean = true;\n /**\n * Whether the input should emit values when the field does not yet constitute a valid date\n */\n @Input()\n allowInvalidDate: boolean = false;\n /**\n * The element to use as the parent for the date picker's overlay (to determine bounds sizing). By default,\n * this refers to the input element itself, but may be a container if it has a padded border.\n */\n @Input()\n overlayOnElement: ElementRef;\n /**\n * Whether the footer in the date picker which contains `today` button should be hidden.\n **/\n @Input()\n @BooleanInput()\n public hideFooter: boolean = false;\n /**\n * Sets the field as to appear disabled, users will not be able to interact with the text field.\n **/\n @HostBinding('class.disabled')\n @Input()\n disabled: boolean = false;\n /**\n * A message to display in the picker overlay when a given date is disabled through minimum/maximum\n */\n @Input()\n disabledDateMessage: string;\n /**\n * An optional date/month to show in the DatePicker initially besides the current date/month\n */\n @Input()\n dateForInitialView?: Date;\n /**\n * Day of the week the calendar should display first, Sunday=0...Saturday=6\n **/\n @Input()\n weekStart: Day = 0;\n @Output()\n blurEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n @Output()\n focusEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n @Output()\n changeEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n /** Element for the panel containing the autocomplete options. */\n @ViewChild(NovoOverlayTemplateComponent)\n overlay: NovoOverlayTemplateComponent;\n\n constructor(\n public element: ElementRef,\n public labels: NovoLabelService,\n private _changeDetectorRef: ChangeDetectorRef,\n public dateFormatService: DateFormatService,\n ) {\n this.placeholder = this.labels.localizedDatePlaceholder();\n }\n\n ngOnInit() {\n this._initFormatOptions();\n }\n ngOnChanges(changes: SimpleChanges): void {\n if (Object.keys(changes).some((key) => ['format'].includes(key))) {\n this._initFormatOptions();\n }\n }\n\n ngAfterViewInit(): void {\n this.overlay.panelClosingActions.subscribe(this._handleOverlayClickout.bind(this));\n }\n\n _initFormatOptions() {\n this.userDefinedFormat = this.format ? !this.format.match(/^(DD\\/MM\\/YYYY|MM\\/DD\\/YYYY)$/g) : false;\n if (!this.userDefinedFormat && this.textMaskEnabled && !this.allowInvalidDate) {\n this.maskOptions = this.maskOptions || this.dateFormatService.getDateMask();\n } else {\n this.maskOptions = undefined;\n }\n this.setupInvalidDateErrorMessage();\n }\n\n /** BEGIN: Convenient Panel Methods. */\n openPanel(): void {\n if (!this.disabled) {\n this.overlay.openPanel();\n }\n }\n closePanel(): void {\n this.overlay.closePanel();\n }\n get panelOpen(): boolean {\n return this.overlay?.panelOpen;\n }\n\n get overlayElement(): ElementRef {\n return this.overlayOnElement || this.element;\n }\n /** END: Convenient Panel Methods. */\n\n _handleKeydown(event: KeyboardEvent): void {\n if ((event.key === Key.Escape || event.key === Key.Enter || event.key === Key.Tab) && this.panelOpen) {\n this._handleValueUpdate((event.target as HTMLInputElement).value, true);\n this.closePanel();\n event.stopPropagation();\n }\n }\n\n _handleInput(event: KeyboardEvent): void {\n // if maskOptions is enabled, then we do not want to process inputs until the mask has accepted them - so those events will be\n // handled by the (accept) event.\n if (document.activeElement === event.target && !this.maskOptions) {\n this._handleValueUpdate((event.target as HTMLInputElement).value, false);\n }\n }\n\n _handleBlur(event: FocusEvent): void {\n if (!this.overlay.isBlurRecipient(event)) {\n this.handleInvalidDate();\n this.blurEvent.emit(event);\n }\n }\n\n _handleOverlayClickout(): void {\n this.handleInvalidDate(/*fromPanelClose:*/true);\n this.blurEvent.emit();\n }\n\n _handleFocus(event: FocusEvent): void {\n this.showInvalidDateError = false;\n this.openPanel();\n this.focusEvent.emit(event);\n }\n\n _handleValueUpdate(value: string, blur: boolean): void {\n if (value === '') {\n this.clearValue();\n this.closePanel();\n } else {\n this.formatDate(value, blur);\n this.openPanel();\n }\n }\n\n handleMaskAccept(maskValue: string): void {\n this._handleValueUpdate(maskValue, false);\n }\n\n protected formatDate(value: string, blur: boolean) {\n try {\n let dateTimeValue: Date;\n let isInvalidDate: boolean;\n if (this.format) {\n [dateTimeValue, , isInvalidDate] = this.dateFormatService.parseCustomDateString(value, this.format);\n } else {\n [dateTimeValue, , isInvalidDate] = this.dateFormatService.parseString(value, false, 'date');\n }\n this.isInvalidDate = isInvalidDate;\n // if we have a full date - set the dateTimeValue\n if (dateTimeValue?.getFullYear()?.toString().length === 4) {\n const dt = new Date(dateTimeValue);\n this.dispatchOnChange(dt, blur);\n // if we only have a partial date - set the value to null\n } else if (isNaN(dateTimeValue?.getUTCDate())) {\n this.dispatchOnChange(null, blur);\n }\n } catch (err) {}\n }\n\n writeValue(value: any): void {\n Promise.resolve(null).then(() => this._setTriggerValue(value));\n }\n\n registerOnChange(fn: (value: any) => {}): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => {}) {\n this._onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n handleInvalidDate(fromPanelClose = false): void {\n if (this.isInvalidDate) { //} && this.value) {\n this.showInvalidDateError = true;\n this.clearValue();\n if (!fromPanelClose) {\n this.closePanel();\n }\n }\n }\n\n setupInvalidDateErrorMessage(): void {\n let dateFormat: string = this.labels.dateFormatString();\n if (Helpers.isEmpty(dateFormat)) {\n // Default to mm/dd/yyyy\n dateFormat = 'mm/dd/yyyy';\n } else {\n dateFormat = dateFormat.toLowerCase();\n }\n this.invalidDateErrorMessage = `Invalid date field entered. Date format of ${dateFormat} is required.`;\n }\n\n public dispatchOnChange(newValue?: any, blur: boolean = false, skip: boolean = false) {\n if (newValue !== this.value) {\n this._onChange(newValue);\n this.changeEvent.emit(newValue);\n if (blur) {\n !skip && this.writeValue(newValue);\n } else {\n !skip && this._setCalendarValue(newValue);\n }\n }\n }\n\n private _setTriggerValue(value: any): void {\n this._setCalendarValue(value);\n this._setFormValue(value);\n this._changeDetectorRef.markForCheck();\n }\n\n private _setCalendarValue(value: any): void {\n if (value instanceof Date && this.value instanceof Date) {\n let newDate = new Date(value);\n newDate.setHours(0, 0, 0, 0);\n this.value = newDate;\n return;\n }\n this.value = value;\n }\n\n private _setFormValue(value: any): void {\n if (value) {\n const test = this.formatDateValue(value);\n this.formattedValue = test;\n } else {\n this.formattedValue = '';\n }\n }\n\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n public setValueAndClose(event: any | null): void {\n if (event?.date) {\n this.showInvalidDateError = false;\n this.dispatchOnChange(event.date, true);\n }\n this.closePanel();\n }\n\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n public clearValue() {\n this.formattedValue = '';\n this.dispatchOnChange(null);\n }\n\n public formatDateValue(value) {\n const originalValue = value;\n try {\n if (!value) {\n return '';\n }\n if (this.userDefinedFormat && isValid(value)) {\n return DateUtil.format(value, this.format);\n }\n if (!(value instanceof Date)) {\n value = new Date(value);\n }\n if (!(isNaN(value.valueOf()) && this.allowInvalidDate)) {\n return this.labels.formatDateWithFormat(value, {\n month: '2-digit',\n day: '2-digit',\n year: 'numeric',\n });\n } else {\n return originalValue;\n }\n } catch (err) {\n return err;\n }\n }\n\n public get hasValue() {\n return !Helpers.isEmpty(this.value);\n }\n}\n","// NG\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n// Vendor\nimport { isValid } from 'date-fns';\n// App\nimport { NovoOverlayTemplateComponent } from 'novo-elements/elements/common';\nimport { DateFormatService, NovoLabelService } from 'novo-elements/services';\nimport { DateUtil, Helpers, Key, RangeModel } from 'novo-elements/utils';\n\n// Value accessor for the component (supports ngModel)\nconst DATE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NovoDateRangeInputElement),\n multi: true,\n};\n\n@Component({\n selector: 'novo-date-range-input',\n providers: [DATE_VALUE_ACCESSOR],\n template: `\n <div class=\"date-range-input-container\">\n <input\n type=\"text\"\n [name]=\"name\"\n [(ngModel)]=\"formattedStartDate\"\n [imask]=\"maskOptions\"\n [placeholder]=\"placeholder\"\n (keydown)=\"_onStartInputChange($event)\"\n (input)=\"_onStartInputChange($event)\"\n (focus)=\"_handleFocus($event)\"\n (blur)=\"_handleBlur($event)\"\n #startDate\n data-automation-id=\"date-range-input-start\"\n [disabled]=\"disabled\"\n />\n <novo-icon *ngIf=\"!hasStartValue\" (click)=\"openPanel()\">calendar</novo-icon>\n <novo-icon *ngIf=\"hasStartValue\" (click)=\"clearStartValue()\">x</novo-icon>\n </div>\n <div class=\"date-range-input-divider\">-</div>\n <div class=\"date-range-input-container\">\n <input\n type=\"text\"\n [name]=\"name\"\n [(ngModel)]=\"formattedEndDate\"\n [imask]=\"maskOptions\"\n [placeholder]=\"placeholder\"\n (keydown)=\"_onEndInputChange($event)\"\n (input)=\"_onEndInputChange($event)\"\n (focus)=\"_handleFocus($event)\"\n (blur)=\"_handleBlur($event)\"\n #endDate\n data-automation-id=\"date-range-input-end\"\n [disabled]=\"disabled\"\n />\n <novo-icon *ngIf=\"!hasEndValue\" (click)=\"openPanel()\">calendar</novo-icon>\n <novo-icon *ngIf=\"hasEndValue\" (click)=\"clearEndValue()\">x</novo-icon>\n </div>\n <novo-overlay-template [parent]=\"element\" position=\"above-below\">\n <novo-date-picker\n [start]=\"start\"\n [end]=\"end\"\n [mode]=\"mode\"\n range=\"true\"\n inline=\"true\"\n (onSelect)=\"setValueAndClose($event)\"\n [ngModel]=\"value\"\n [weekStart]=\"weekStart\"\n ></novo-date-picker>\n </novo-overlay-template>\n `,\n styleUrls: ['./DateRangeInput.scss'],\n})\nexport class NovoDateRangeInputElement implements OnInit, OnChanges, ControlValueAccessor {\n public formattedStartDate: string = '';\n public formattedEndDate: string = '';\n private userDefinedFormat: boolean;\n\n @Input()\n name: string;\n @Input()\n start: Date;\n @Input()\n end: Date;\n @Input()\n weekRangeSelect: boolean = false;\n @Input()\n mode: string = 'range';\n @Input()\n placeholder: string;\n @Input()\n maskOptions: any;\n @Input()\n format: string;\n @Input()\n textMaskEnabled: boolean = true;\n @Input()\n allowInvalidDate: boolean = false;\n @Input()\n weekStart: number = 0;\n @Output()\n blurEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n @Output()\n focusEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n\n /** Element for the panel containing the autocomplete options. */\n @ViewChild(NovoOverlayTemplateComponent)\n overlay: NovoOverlayTemplateComponent;\n\n @Output() change = new EventEmitter();\n @Output() blur = new EventEmitter();\n @Output() focus = new EventEmitter();\n\n private _value: RangeModel = { startDate: null, endDate: null };\n private _disabled: boolean = false;\n\n @Input() get value(): RangeModel {\n return this._value;\n }\n set value(value) {\n if (this.value !== value) {\n this._value = value;\n this._setFormValue(value);\n this.onChangeCallback(this._value);\n }\n }\n\n // Disabled State\n @Input()\n @HostBinding('class.disabled')\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = !!value;\n }\n\n constructor(\n public element: ElementRef,\n public labels: NovoLabelService,\n private cdr: ChangeDetectorRef,\n public dateFormatService: DateFormatService,\n ) {\n this.placeholder = this.labels.dateFormatString().toUpperCase() || this.labels.dateFormatPlaceholder;\n }\n\n ngOnInit() {\n this._initFormatOptions();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (Object.keys(changes).some((key) => ['format'].includes(key))) {\n this._initFormatOptions();\n }\n }\n\n _initFormatOptions() {\n this.userDefinedFormat = this.format ? !this.format.match(/^(DD\\/MM\\/YYYY|MM\\/DD\\/YYYY)$/g) : false;\n if (!this.userDefinedFormat && this.textMaskEnabled && !this.allowInvalidDate) {\n this.maskOptions = this.maskOptions || this.dateFormatService.getDateMask();\n } else {\n this.maskOptions = undefined;\n }\n }\n\n /** BEGIN: Convenient Panel Methods. */\n openPanel(): void {\n if (!this.disabled) {\n this.overlay.openPanel();\n }\n }\n\n closePanel(): void {\n this.overlay && this.overlay.closePanel();\n }\n\n get panelOpen(): boolean {\n return this.overlay && this.overlay.panelOpen;\n }\n /** END: Convenient Panel Methods. */\n\n _handleKeydown(event: KeyboardEvent): void {\n if ((event.key === Key.Escape || event.key === Key.Enter || event.key === Key.Tab) && this.panelOpen) {\n this.closePanel();\n event.stopPropagation();\n }\n }\n\n _handleBlur(event: FocusEvent): void {\n this.blurEvent.emit(event);\n }\n\n _handleFocus(event: FocusEvent): void {\n this.openPanel();\n this.focusEvent.emit(event);\n }\n\n protected formatDate(value: string) {\n try {\n const [dateTimeValue] = this.dateFormatService.parseString(value, false, 'date');\n return dateTimeValue ? new Date(dateTimeValue) : null;\n } catch (err) {\n return null;\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n private onChangeCallback = (_: any) => {\n // placeholder\n };\n\n private onTouchedCallback = () => {\n // placeholder\n };\n\n _onStartInputChange(event: KeyboardEvent) {\n this._handleKeydown(event);\n if (document.activeElement === event.target) {\n event.stopPropagation();\n const startDate = this.formatDate((event.target as HTMLInputElement).value);\n if (startDate) {\n this.value = {\n ...this.value,\n startDate,\n };\n this.change.emit(this.value);\n }\n }\n }\n\n _onEndInputChange(event: KeyboardEvent) {\n this._handleKeydown(event);\n if (document.activeElement === event.target) {\n event.stopPropagation();\n const endDate = this.formatDate((event.target as HTMLInputElement).value);\n if (endDate) {\n this.value = {\n ...this.value,\n endDate,\n };\n this.change.emit(this.value);\n }\n }\n }\n\n private _setFormValue(value: RangeModel): void {\n if (this.value) {\n this.formattedStartDate = this.formatDateValue(this.value.startDate);\n this.formattedEndDate = this.formatDateValue(this.value.endDate);\n }\n }\n\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n public setValueAndClose(event: any | null): void {\n if (event && event.startDate && event.endDate) {\n const startDate = event.startDate.date;\n const endDate = event.endDate.date;\n this.value = { startDate, endDate };\n this.change.emit(this.value);\n }\n this.closePanel();\n }\n\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n public clearStartValue() {\n this.formattedStartDate = '';\n this.value = { ...this.value, startDate: null };\n this.change.emit(this.value);\n }\n public clearEndValue() {\n this.formattedEndDate = '';\n this.value = { ...this.value, endDate: null };\n this.change.emit(this.value);\n }\n\n public formatDateValue(value) {\n const originalValue = value;\n try {\n if (!value) {\n return '';\n }\n if (this.userDefinedFormat && isValid(value)) {\n return DateUtil.format(value, this.format);\n }\n if (!(value instanceof Date)) {\n value = new Date(value);\n }\n if (!(isNaN(value.valueOf()) && this.allowInvalidDate)) {\n return this.labels.formatDateWithFormat(value, {\n month: '2-digit',\n day: '2-digit',\n year: 'numeric',\n });\n } else {\n return originalValue;\n }\n } catch (err) {\n return '';\n }\n }\n\n public get hasStartValue() {\n return !Helpers.isEmpty(this.value?.startDate);\n }\n public get hasEndValue() {\n return !Helpers.isEmpty(this.value?.endDate);\n }\n}\n","// NG\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n// App\nimport { NovoOverlayTemplateComponent } from 'novo-elements/elements/common';\nimport { DateFormatService, NovoLabelService } from 'novo-elements/services';\nimport { Helpers, Key } from 'novo-elements/utils';\n\n// Value accessor for the component (supports ngModel)\nconst MULTI_DATE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NovoMultiDateInputElement),\n multi: true,\n};\n\n@Component({\n selector: 'novo-multi-date-input',\n providers: [MULTI_DATE_VALUE_ACCESSOR],\n template: `\n <novo-chip-list>\n <novo-chip *ngFor=\"let date of value | default: []\" (removed)=\"remove($event, date)\">\n {{ date | date: format }}\n <novo-icon novoChipRemove>close</novo-icon>\n </novo-chip>\n </novo-chip-list>\n <!-- <div *ngIf=\"value.length > chipsCount\">\n <ul class=\"summary\">\n <li *ngFor=\"let type of notShown\">+ {{ type.count }} {{ labels.more }} {{ type.type }}</li>\n </ul>\n </div> -->\n <div class=\"chip-input-container\" (click)=\"_handleFocus($event)\">\n <span class=\"placeholder\" *ngIf=\"!value.length\" data-automation-id=\"multi-date-input\">{{ placeholder }}</span>\n </div>\n <novo-icon class=\"panel-toggle\" [class.selected]=\"panelOpen\" (click)=\"openPanel()\">calendar</novo-icon>\n <label class=\"clear-all\" *ngIf=\"value.length\" (click)=\"clearValue()\">{{ labels.clearAll }} <i class=\"bhi-times\"></i></label>\n <novo-overlay-template [parent]=\"element\" position=\"above-below\">\n <novo-date-picker\n [start]=\"start\"\n [end]=\"end\"\n inline=\"true\"\n mode=\"multiple\"\n (onSelect)=\"setValueAndClose($event)\"\n [(ngModel)]=\"value\"\n [weekStart]=\"weekStart\"\n ></novo-date-picker>\n </novo-overlay-template>\n `,\n styleUrls: ['./MultiDateInput.scss'],\n})\nexport class NovoMultiDateInputElement implements OnInit, ControlValueAccessor {\n public formattedStartDate: string = '';\n public formattedEndDate: string = '';\n private userDefinedFormat: boolean;\n\n @Input()\n name: string;\n @Input()\n start: Date;\n @Input()\n end: Date;\n @Input()\n placeholder: string;\n @Input()\n format: string = 'shortDate';\n @Input()\n allowInvalidDate: boolean = false;\n @Input()\n weekStart: number = 0;\n @Input()\n chipsCount: number = 5;\n @Output()\n blurEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n @Output()\n focusEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n\n /** Element for the panel containing the autocomplete options. */\n @ViewChild(NovoOverlayTemplateComponent)\n overlay: NovoOverlayTemplateComponent;\n\n @Output() change = new EventEmitter();\n @Output() blur = new EventEmitter();\n @Output() focus = new EventEmitter();\n\n private _value: Date[] = [];\n private _disabled: boolean = false;\n private notShown: any = {};\n\n @Input() get value(): Date[] {\n return this._value;\n }\n set value(value) {\n if (this.value !== value) {\n this._value = value;\n this.onChangeCallback(this._value);\n }\n }\n\n // Disabled State\n @Input()\n @HostBinding('class.disabled')\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = !!value;\n }\n\n constructor(\n public element: ElementRef,\n public labels: NovoLabelService,\n private cdr: ChangeDetectorRef,\n public dateFormatService: DateFormatService,\n ) {\n this.placeholder = this.labels.dateFormatString().toUpperCase() || this.labels.dateFormatPlaceholder;\n }\n\n ngOnInit() {\n this.userDefinedFormat = this.format ? !this.format.match(/^(DD\\/MM\\/YYYY|MM\\/DD\\/YYYY)$/g) : false;\n }\n\n formatter(value) {\n const [dateTimeValue, formatted] = this.dateFormatService.parseString(value, false, 'date');\n return formatted;\n }\n\n /** BEGIN: Convenient Panel Methods. */\n openPanel(): void {\n if (!this.disabled) {\n this.panelOpen ? this.overlay.closePanel() : this.overlay.openPanel();\n }\n }\n\n closePanel(): void {\n this.overlay && this.overlay.closePanel();\n }\n\n get panelOpen(): boolean {\n return this.overlay && this.overlay.panelOpen;\n }\n /** END: Convenient Panel Methods. */\n\n _handleKeydown(event: KeyboardEvent): void {\n if ((event.key === Key.Escape || event.key === Key.Enter || event.key === Key.Tab) && this.panelOpen) {\n this.closePanel();\n event.stopPropagation();\n }\n }\n\n _handleBlur(event: FocusEvent): void {\n this.blurEvent.emit(event);\n }\n\n _handleFocus(event: FocusEvent): void {\n this.openPanel();\n this.focusEvent.emit(event);\n }\n\n remove(event: any, date: Date) {\n const current = new Set(this.value);\n if (current.has(date)) {\n current.delete(date);\n }\n this.value = [...current];\n }\n\n writeValue(value: any): void {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n private onChangeCallback = (_: any) => {\n // placeholder\n };\n\n private onTouchedCallback = () => {\n // placeholder\n };\n\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n public setValueAndClose(event: Date[] = []): void {\n if (event) {\n this.value = event;\n this.change.emit(this.value);\n }\n // this.closePanel();\n }\n\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n public clearValue() {\n this.value = [];\n this.change.emit(this.value);\n }\n\n public get hasValue() {\n return !Helpers.isEmpty(this.value);\n }\n}\n","// NG2\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n// Vendor\nimport { IMaskModule } from 'angular-imask';\nimport { NovoPipesModule } from 'novo-elements/pipes';\n// APP\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoCalendarModule } from 'novo-elements/elements/calendar';\nimport { NovoChipsModule } from 'novo-elements/elements/chips';\nimport { NovoOverlayModule } from 'novo-elements/elements/common';\nimport { NovoIconModule } from 'novo-elements/elements/icon';\nimport { NovoDatePickerElement } from './DatePicker';\nimport { NovoDatePickerInputElement } from './DatePickerInput';\nimport { NovoDateRangeInputElement } from './DateRangeInput';\nimport { NovoMultiDateInputElement } from './MultiDateInput';\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n NovoButtonModule,\n NovoPipesModule,\n NovoOverlayModule,\n IMaskModule,\n NovoIconModule,\n NovoChipsModule,\n NovoCalendarModule,\n ],\n declarations: [NovoDatePickerElement, NovoDatePickerInputElement, NovoDateRangeInputElement, NovoMultiDateInputElement],\n exports: [NovoDatePickerElement, NovoDatePickerInputElement, NovoDateRangeInputElement, NovoMultiDateInputElement],\n})\nexport class NovoDatePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","__decorate","DATE_VALUE_ACCESSOR","i2","i4","i5","i6.NovoDatePickerElement","i7.NovoDatePickerElement","i6"],"mappings":"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"}
@@ -153,7 +153,7 @@ class NovoDateTimePickerElement {
153
153
  </div>
154
154
  </div>
155
155
  </div>
156
- `, isInline: true, styles: [":host{display:block;width:min-content;overflow:hidden;border-radius:4px;background-color:#fff;box-shadow:0 1px 3px #00000026,0 2px 7px #0000001a;z-index:9001}:host .date-time-container{position:relative}:host .date-time-container .view-container{position:relative}:host .date-time-container ::ng-deep .time-picker{position:absolute;height:100%;width:100%;background:#fff;transform:translate(100%);transition:transform .2s ease-in-out;z-index:10;top:0}:host .date-time-container ::ng-deep .time-picker novo-time-picker{width:inherit;border-radius:0}:host .date-time-container ::ng-deep .time-picker .increments{width:unset}:host .date-time-container ::ng-deep .time-picker .increments novo-list-item{width:auto}:host .date-time-container .date-time-tabs{border-bottom:1px solid #e0e0e0;display:flex;align-items:center;justify-content:space-between;position:relative;height:45px}:host .date-time-container .date-time-tabs>span{color:#4a89dc;text-align:center;flex:1;cursor:pointer;transition:opacity .2s ease-in-out;opacity:.6}:host .date-time-container .date-time-tabs>span:hover{opacity:1!important}:host .date-time-container .date-time-tabs>span .meridian{text-transform:uppercase}:host .date-time-container .date-time-tabs .date-time-indicator{position:absolute;width:50%;height:2px;bottom:0;left:0;background:#4a89dc;transition:transform .2s ease-in-out}:host .calendar{box-shadow:none;background:transparent}:host .digital{height:45px}:host novo-time-picker{box-shadow:none}:host novo-time-picker .analog{margin:0}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.NovoDatePickerElement, selector: "novo-date-picker", inputs: ["minYear", "maxYear", "start", "end", "inline", "weekStart", "preselected", "hideOverflowDays", "hideFooter", "disabledDateMessage", "numberOfMonths", "mode", "range", "weekRangeSelect"], outputs: ["onSelect"] }, { kind: "component", type: i5.NovoTimePickerElement, selector: "novo-time-picker", inputs: ["military", "analog", "inline", "step", "hasButtons", "saveDisabled"], outputs: ["onSelect", "onSave", "onCancel"] }], animations: [
156
+ `, isInline: true, styles: [":host{display:block;width:min-content;overflow:hidden;border-radius:4px;background-color:#fff;box-shadow:0 1px 3px #00000026,0 2px 7px #0000001a;z-index:9001}:host .date-time-container{position:relative}:host .date-time-container .view-container{position:relative}:host .date-time-container ::ng-deep .time-picker{position:absolute;height:100%;width:100%;background:#fff;transform:translate(100%);transition:transform .2s ease-in-out;z-index:10;top:0}:host .date-time-container ::ng-deep .time-picker novo-time-picker{width:inherit;border-radius:0}:host .date-time-container ::ng-deep .time-picker .increments{width:unset}:host .date-time-container ::ng-deep .time-picker .increments novo-list-item{width:auto}:host .date-time-container .date-time-tabs{border-bottom:1px solid #e0e0e0;display:flex;align-items:center;justify-content:space-between;position:relative;height:45px}:host .date-time-container .date-time-tabs>span{color:#4a89dc;text-align:center;flex:1;cursor:pointer;transition:opacity .2s ease-in-out;opacity:.6}:host .date-time-container .date-time-tabs>span:hover{opacity:1!important}:host .date-time-container .date-time-tabs>span .meridian{text-transform:uppercase}:host .date-time-container .date-time-tabs .date-time-indicator{position:absolute;width:50%;height:2px;bottom:0;left:0;background:#4a89dc;transition:transform .2s ease-in-out}:host .calendar{box-shadow:none;background:transparent}:host .digital{height:45px}:host novo-time-picker{box-shadow:none}:host novo-time-picker .analog{margin:0}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.NovoDatePickerElement, selector: "novo-date-picker", inputs: ["minYear", "maxYear", "start", "end", "inline", "weekStart", "preselected", "hideOverflowDays", "hideFooter", "disabledDateMessage", "dateForInitialView", "numberOfMonths", "mode", "range", "weekRangeSelect"], outputs: ["onSelect"] }, { kind: "component", type: i5.NovoTimePickerElement, selector: "novo-time-picker", inputs: ["military", "analog", "inline", "step", "hasButtons", "saveDisabled"], outputs: ["onSelect", "onSave", "onCancel"] }], animations: [
157
157
  trigger('dateTextState', [
158
158
  state('date', style({
159
159
  opacity: '1.0',
@@ -412,7 +412,7 @@ class NovoDateTimePickerInputElement {
412
412
  (focusEvent)="handleFocus($event)"
413
413
  [disabled]="disabled"
414
414
  ></novo-time-picker-input>
415
- `, isInline: true, styles: [":host{flex:1;position:relative;display:flex;flex-flow:row nowrap;max-width:340px}:host novo-date-picker-input{margin-right:20px}:host novo-time-picker-input{max-width:130px}\n"], dependencies: [{ kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.NovoDatePickerInputElement, selector: "novo-date-picker-input", inputs: ["name", "start", "end", "placeholder", "maskOptions", "format", "textMaskEnabled", "allowInvalidDate", "overlayOnElement", "hideFooter", "disabled", "disabledDateMessage", "weekStart"], outputs: ["blurEvent", "focusEvent", "changeEvent"] }, { kind: "component", type: i5.NovoTimePickerInputElement, selector: "novo-time-picker-input", inputs: ["name", "placeholder", "military", "maskOptions", "disabled", "hasButtons", "saveDisabled", "overlayOnElement", "analog"], outputs: ["blurEvent", "focusEvent", "changeEvent", "onSave", "onCancel"] }] }); }
415
+ `, isInline: true, styles: [":host{flex:1;position:relative;display:flex;flex-flow:row nowrap;max-width:340px}:host novo-date-picker-input{margin-right:20px}:host novo-time-picker-input{max-width:130px}\n"], dependencies: [{ kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.NovoDatePickerInputElement, selector: "novo-date-picker-input", inputs: ["name", "start", "end", "placeholder", "maskOptions", "format", "textMaskEnabled", "allowInvalidDate", "overlayOnElement", "hideFooter", "disabled", "disabledDateMessage", "dateForInitialView", "weekStart"], outputs: ["blurEvent", "focusEvent", "changeEvent"] }, { kind: "component", type: i5.NovoTimePickerInputElement, selector: "novo-time-picker-input", inputs: ["name", "placeholder", "military", "maskOptions", "disabled", "hasButtons", "saveDisabled", "overlayOnElement", "analog"], outputs: ["blurEvent", "focusEvent", "changeEvent", "onSave", "onCancel"] }] }); }
416
416
  }
417
417
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NovoDateTimePickerInputElement, decorators: [{
418
418
  type: Component,