LP1995623 DateTime picker gets min/max date support
authorBill Erickson <berickxx@gmail.com>
Thu, 3 Nov 2022 16:34:54 +0000 (12:34 -0400)
committerBill Erickson <berickxx@gmail.com>
Thu, 3 Nov 2022 16:34:54 +0000 (12:34 -0400)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/src/eg2/src/app/share/datetime-select/datetime-select.component.html
Open-ILS/src/eg2/src/app/share/datetime-select/datetime-select.component.ts

index f25e29a..48f10cb 100644 (file)
         role="alert"
         class="alert alert-danger">
         <span class="material-icons">error</span>
-       {{firstError(controlDir.control.errors)}}
+        {{firstError(controlDir.control.errors)}}
       </div>
       <ngb-datepicker #datePicker
+        [minDate]="minDate"
+        [maxDate]="maxDate"
         formControlName="date"
         [footerTemplate]="time"
         (touch)="onTouched()">
index ed20e84..d9564a3 100644 (file)
@@ -4,6 +4,7 @@ import {AbstractControl, ControlValueAccessor, FormControl, FormGroup, NgControl
 import {NgbDatepicker, NgbTimeStruct, NgbDateStruct} from '@ng-bootstrap/ng-bootstrap';
 import {DatetimeValidator} from '@eg/share/validators/datetime_validator.directive';
 import * as moment from 'moment-timezone';
+import {DateUtil} from '@eg/share/util/date';
 
 @Component({
     selector: 'eg-datetime-select',
@@ -18,6 +19,10 @@ export class DateTimeSelectComponent implements OnInit, ControlValueAccessor {
     @Input() showTZ = true;
     @Input() timezone: string = this.format.wsOrgTimezone;
     @Input() readOnly = false;
+    @Input() noPast = false;
+    @Input() noFuture = false;
+    @Input() minDate: any;
+    @Input() maxDate: any;
     @Output() onChangeAsIso: EventEmitter<string>;
 
     dateTimeForm: FormGroup;
@@ -53,6 +58,12 @@ export class DateTimeSelectComponent implements OnInit, ControlValueAccessor {
     }
 
     ngOnInit() {
+        if (this.noPast) {
+            this.minDate = DateUtil.localYmdPartsFromDate();
+        }
+        if (this.noFuture) {
+            this.maxDate = DateUtil.localYmdPartsFromDate();
+        }
         if (!this.timezone) {
             this.timezone = this.format.wsOrgTimezone;
         }