mis-crystal-design-system 4.0.44 → 4.0.46-test-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/bundles/mis-crystal-design-system-input.umd.js +3 -1
  2. package/bundles/mis-crystal-design-system-input.umd.js.map +1 -1
  3. package/bundles/mis-crystal-design-system-input.umd.min.js +1 -1
  4. package/bundles/mis-crystal-design-system-input.umd.min.js.map +1 -1
  5. package/bundles/mis-crystal-design-system-phone-input.umd.js +48 -7
  6. package/bundles/mis-crystal-design-system-phone-input.umd.js.map +1 -1
  7. package/bundles/mis-crystal-design-system-phone-input.umd.min.js +1 -1
  8. package/bundles/mis-crystal-design-system-phone-input.umd.min.js.map +1 -1
  9. package/bundles/mis-crystal-design-system-timerangepicker.umd.js +6 -1
  10. package/bundles/mis-crystal-design-system-timerangepicker.umd.js.map +1 -1
  11. package/bundles/mis-crystal-design-system-timerangepicker.umd.min.js +1 -1
  12. package/bundles/mis-crystal-design-system-timerangepicker.umd.min.js.map +1 -1
  13. package/esm2015/input/mis-input.component.js +4 -2
  14. package/esm2015/phone-input/phone-input.component.js +45 -4
  15. package/esm2015/timerangepicker/timerangepicker.component.js +7 -2
  16. package/fesm2015/mis-crystal-design-system-input.js +3 -1
  17. package/fesm2015/mis-crystal-design-system-input.js.map +1 -1
  18. package/fesm2015/mis-crystal-design-system-phone-input.js +44 -3
  19. package/fesm2015/mis-crystal-design-system-phone-input.js.map +1 -1
  20. package/fesm2015/mis-crystal-design-system-timerangepicker.js +6 -1
  21. package/fesm2015/mis-crystal-design-system-timerangepicker.js.map +1 -1
  22. package/input/mis-crystal-design-system-input.metadata.json +1 -1
  23. package/input/mis-input.component.d.ts +1 -0
  24. package/package.json +1 -1
  25. package/phone-input/mis-crystal-design-system-phone-input.metadata.json +1 -1
  26. package/phone-input/phone-input.component.d.ts +12 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../projects/mis-components/timerangepicker/timerangepicker.component.ts","../../../projects/mis-components/timerangepicker/timerangepicker.module.ts"],"names":["TimeRangePickerComponent","cdr","this","inputWidth","height","timezone","startDateEpoch","moment","tz","valueOf","endDateEpoch","clockFormat","interval","showTooltip","direction","gap","timeRangeEmitter","EventEmitter","firstIntervalForStartPicker","firstIntervalForEndPicker","rangeValidity","triggerChange","prototype","ngOnInit","ngOnChanges","timeFormat","moment.tz","setDefault","startDate","format","endDate","currDate","setFirstIntervals","minutes","offset","currentTime","endOf","subtract","add","startOf","givenStartTime","givenEndTime","startTime","valid","time","epoch","endTime","emitTimeRange","data","emit","startPickerHandler","validity","checkTimeValidity","trim","rangeValidation","startEpoch","endEpoch","endPickerHandler","date","RE","timeMoment","match","diff","startMoment","endMoment","detectChanges","Component","args","selector","template","ChangeDetectorRef","Input","Output","TimeRangePickerModule","forRoot","ngModule","providers","NgModule","declarations","imports","CommonModule","FormsModule","TimePickerModule","exports"],"mappings":"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","sourcesContent":["import { Component, Input, ChangeDetectorRef, Output, EventEmitter } from \"@angular/core\";\nimport * as moment from \"moment-timezone\";\nimport { ITimeRange, ITime, TDirection } from \"./timerange.namespace\";\n\n@Component({\n selector: \"mis-timerangepicker\",\n templateUrl: \"./timerangepicker.component.html\",\n styleUrls: [\"./timerangepicker.component.scss\"]\n})\nexport class TimeRangePickerComponent {\n @Input() inputWidth: string = \"100px\";\n @Input() dropdownWidth?: string;\n @Input() height: string = \"46px\";\n @Input() timezone: string = \"Asia/Kolkata\";\n @Input() startDateEpoch: number = moment().tz(this.timezone).valueOf();\n @Input() endDateEpoch: number = moment().tz(this.timezone).valueOf();\n @Input() givenStartTime: number;\n @Input() givenEndTime: number;\n @Input() clockFormat: number = 12;\n @Input() interval: number = 15;\n @Input() showTooltip: boolean = true;\n @Input() direction: TDirection = 'row';\n @Input() gap: string = '1rem';\n\n @Output() timeRangeEmitter = new EventEmitter<ITimeRange>();\n\n startDate!: string;\n endDate!: string;\n currDate!: string;\n timeFormat!: string;\n firstIntervalForStartPicker: number = moment().valueOf();\n firstIntervalForEndPicker: number = moment().valueOf();\n startTime!: ITime;\n endTime!: ITime;\n rangeValidity: boolean = true;\n triggerChange: boolean = true;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit() {}\n\n ngOnChanges() {\n this.timeFormat = this.clockFormat === 12 ? \"hh:mm a\" : \"HH:mm\";\n moment.tz.setDefault(this.timezone);\n this.startDate = moment(this.startDateEpoch).format(\"DD-MM-YYYY\");\n this.endDate = moment(this.endDateEpoch).format(\"DD-MM-YYYY\");\n this.currDate = moment().format(\"DD-MM-YYYY\");\n this.setFirstIntervals();\n }\n\n // calculate the first interval of the picker\n setFirstIntervals(): void {\n const minutes = moment().minutes();\n const offset = this.interval - (minutes % this.interval);\n\n // start date, 22 MAY === current date, 22 MAY\n if( this.startDate === this.currDate ){\n const currentTime = moment(this.startDateEpoch).valueOf();\n\n // start date, 22 MAY === current date, 22 MAY === end date, 22 MAY\n if(this.startDate === this.endDate){\n\n // current time is in last interval\n if( currentTime >= moment(this.startDateEpoch).endOf(\"d\").subtract(this.interval,\"m\").valueOf()){\n this.firstIntervalForStartPicker = currentTime;\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).endOf(\"d\").valueOf();\n }\n // current time isn't in last interval\n else {\n this.firstIntervalForStartPicker = moment().add(offset, \"m\").valueOf();\n this.firstIntervalForEndPicker = moment().add(offset, \"m\").add(this.interval, \"m\").valueOf();\n }\n } \n // start date, 22 MAY === current date, 22 MAY !== end date, 30 MAY\n else {\n // current time is in last interval\n if( currentTime >= moment(this.startDateEpoch).endOf(\"d\").subtract(this.interval,\"m\").valueOf()){\n this.firstIntervalForStartPicker = currentTime;\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).endOf(\"d\").valueOf();\n }\n // current time isn't in last interval\n else {\n this.firstIntervalForStartPicker = moment().add(offset, \"m\").valueOf();\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).valueOf();\n }\n }\n }\n // start date, 30 MAY !== current date, 22 MAY\n else {\n // start date === end Date\n if( this.startDate === this.endDate){\n this.firstIntervalForStartPicker = moment(this.startDateEpoch).startOf(\"d\").valueOf();\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).add(this.interval, \"m\").valueOf();\n } \n // start date !== end date\n else {\n this.firstIntervalForStartPicker = moment(this.startDateEpoch).startOf(\"d\").valueOf();\n this.firstIntervalForEndPicker = moment(this.startDateEpoch).startOf(\"d\").valueOf();\n }\n\n }\n\n if(this.givenStartTime)\n this.firstIntervalForStartPicker = this.givenStartTime;\n \n if(this.givenEndTime)\n this.firstIntervalForEndPicker = this.givenEndTime;\n \n this.startTime = {\n valid: true,\n time: moment(this.firstIntervalForStartPicker).format(this.timeFormat),\n epoch: moment(this.firstIntervalForStartPicker).valueOf()\n };\n\n this.endTime = {\n valid: true,\n time: moment(this.firstIntervalForEndPicker).format(this.timeFormat),\n epoch: moment(this.firstIntervalForEndPicker).valueOf()\n };\n }\n\n emitTimeRange(data: ITimeRange): void {\n this.timeRangeEmitter.emit(data);\n }\n\n //handlers catch the emitted values and run validation\n startPickerHandler(time: ITime): void {\n this.startTime = time;\n this.rangeValidity = true;\n // if the start time changes and the start date is the same as the end date\n // and the start time >= end time\n // update the first interval of end picker according to the time set in start picker\n if (this.startDate === this.endDate) {\n let minutes = moment(this.startTime.time, this.timeFormat).minutes();\n let offset = this.interval - (minutes % this.interval);\n this.firstIntervalForEndPicker = moment(`${this.startDate} ${this.startTime.time}`, `'DD-MM-YYYY' ${this.timeFormat}`)\n .add(offset, \"m\")\n .valueOf();\n\n // if the first interval == 12:00am, set it as 11:59pm\n const intervalAsString = moment(this.firstIntervalForEndPicker).format(this.timeFormat);\n const endOfDayAsString = moment(moment(`${this.startDate}`, `DD-MM-YYYY ${this.timeFormat}`).endOf(\"d\").add(1, \"m\")).format(this.timeFormat);\n if (intervalAsString === endOfDayAsString) {\n this.firstIntervalForEndPicker = moment(`${this.startDate} ${this.startTime.time}`, `'DD-MM-YYYY' ${this.timeFormat}`).endOf(\"d\").valueOf();\n }\n\n } else {\n const validity =\n this.checkTimeValidity(this.startTime.time.trim(), this.startDateEpoch) &&\n this.checkTimeValidity(this.endTime.time.trim(), this.endDateEpoch);\n\n this.rangeValidation(validity);\n this.emitTimeRange({\n valid: validity && this.rangeValidity,\n startTime: this.startTime.time,\n endTime: this.endTime.time,\n startEpoch: moment(`${this.startDate} ${this.startTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf(),\n endEpoch: moment(`${this.endDate} ${this.endTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf()\n });\n }\n\n this.triggerChange = !this.triggerChange;\n }\n\n endPickerHandler(time: ITime): void {\n this.endTime = time;\n\n const validity =\n this.checkTimeValidity(this.startTime.time.trim(), this.startDateEpoch) && this.checkTimeValidity(this.endTime.time.trim(), this.endDateEpoch);\n\n this.rangeValidation(validity);\n this.emitTimeRange({\n valid: validity && this.rangeValidity,\n startTime: this.startTime.time,\n endTime: this.endTime.time,\n startEpoch: moment(`${this.startDate} ${this.startTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf(),\n endEpoch: moment(`${this.endDate} ${this.endTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf()\n });\n }\n\n checkTimeValidity(time: string, date: number): boolean {\n const RE12 = /^(([0][1-9]|1[0-2]):([0-5][0-9])( )?(am|pm|AM|PM))$/i;\n const RE24 = /^([01][0-9]|2[0-3]):[0-5][0-9]$/;\n const RE = this.clockFormat === 12 ? RE12 : RE24;\n\n const timeMoment = moment(`${moment(date).format(\"DD-MM-YYYY\")} ${time}`, `'DD-MM-YYYY' ${this.timeFormat}`);\n let flag: boolean = false;\n\n // if the first interval is set to the start of the day\n // then we don't check its validity against the current time\n if ((this.givenStartTime && this.givenEndTime) || (this.startDate !== this.endDate && this.startDate !== this.currDate)) {\n flag = time.match(RE) ? true : false;\n } else {\n flag = time.match(RE) && timeMoment.diff(moment(), \"m\") >= 0 ? true : false;\n }\n\n return flag;\n }\n\n // validates end picker's input according to the start picker's input\n rangeValidation(validity: boolean) {\n if (validity && this.startDate === this.endDate) {\n const startMoment = moment(this.startTime.time, this.timeFormat);\n const endMoment = moment(this.endTime.time, this.timeFormat);\n this.rangeValidity = endMoment.diff(startMoment, \"m\") >= 1 ? true : false;\n this.cdr.detectChanges();\n }\n }\n}\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TimeRangePickerComponent } from \"./timerangepicker.component\";\nimport { TimePickerModule } from \"mis-crystal-design-system/timepicker\";\n\n@NgModule({\n declarations: [TimeRangePickerComponent],\n imports: [CommonModule, FormsModule, TimePickerModule],\n exports: [TimeRangePickerComponent]\n})\nexport class TimeRangePickerModule {\n static forRoot(): ModuleWithProviders<TimeRangePickerModule> {\n return { ngModule: TimeRangePickerModule, providers: [] };\n }\n}"]}
1
+ {"version":3,"sources":["../../../projects/mis-components/timerangepicker/timerangepicker.component.ts","../../../projects/mis-components/timerangepicker/timerangepicker.module.ts"],"names":["TimeRangePickerComponent","cdr","this","inputWidth","height","timezone","startDateEpoch","moment","tz","valueOf","endDateEpoch","clockFormat","interval","showTooltip","direction","gap","timeRangeEmitter","EventEmitter","firstIntervalForStartPicker","firstIntervalForEndPicker","rangeValidity","triggerChange","prototype","ngOnInit","ngOnChanges","timeFormat","moment.tz","setDefault","startDate","format","endDate","currDate","setFirstIntervals","minutes","offset","console","log","currentTime","endOf","subtract","add","startOf","givenStartTime","givenEndTime","startTime","valid","time","epoch","endTime","emitTimeRange","data","emit","startPickerHandler","validity","checkTimeValidity","trim","rangeValidation","startEpoch","endEpoch","endPickerHandler","date","RE","timeMoment","match","diff","startMoment","endMoment","detectChanges","Component","args","selector","template","ChangeDetectorRef","Input","Output","TimeRangePickerModule","forRoot","ngModule","providers","NgModule","declarations","imports","CommonModule","FormsModule","TimePickerModule","exports"],"mappings":"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","sourcesContent":["import { Component, Input, ChangeDetectorRef, Output, EventEmitter } from \"@angular/core\";\nimport * as moment from \"moment-timezone\";\nimport { ITimeRange, ITime, TDirection } from \"./timerange.namespace\";\n\n@Component({\n selector: \"mis-timerangepicker\",\n templateUrl: \"./timerangepicker.component.html\",\n styleUrls: [\"./timerangepicker.component.scss\"]\n})\nexport class TimeRangePickerComponent {\n @Input() inputWidth: string = \"100px\";\n @Input() dropdownWidth?: string;\n @Input() height: string = \"46px\";\n @Input() timezone: string = \"Asia/Kolkata\";\n @Input() startDateEpoch: number = moment().tz(this.timezone).valueOf();\n @Input() endDateEpoch: number = moment().tz(this.timezone).valueOf();\n @Input() givenStartTime: number;\n @Input() givenEndTime: number;\n @Input() clockFormat: number = 12;\n @Input() interval: number = 15;\n @Input() showTooltip: boolean = true;\n @Input() direction: TDirection = 'row';\n @Input() gap: string = '1rem';\n\n @Output() timeRangeEmitter = new EventEmitter<ITimeRange>();\n\n startDate!: string;\n endDate!: string;\n currDate!: string;\n timeFormat!: string;\n firstIntervalForStartPicker: number = moment().valueOf();\n firstIntervalForEndPicker: number = moment().valueOf();\n startTime!: ITime;\n endTime!: ITime;\n rangeValidity: boolean = true;\n triggerChange: boolean = true;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit() {}\n\n ngOnChanges() {\n this.timeFormat = this.clockFormat === 12 ? \"hh:mm a\" : \"HH:mm\";\n moment.tz.setDefault(this.timezone);\n this.startDate = moment(this.startDateEpoch).format(\"DD-MM-YYYY\");\n this.endDate = moment(this.endDateEpoch).format(\"DD-MM-YYYY\");\n this.currDate = moment().format(\"DD-MM-YYYY\");\n this.setFirstIntervals();\n }\n\n // calculate the first interval of the picker\n setFirstIntervals(): void {\n const minutes = moment().minutes();\n const offset = this.interval - (minutes % this.interval);\n\n // start date, 22 MAY === current date, 22 MAY\n if( this.startDate === this.currDate ){\n console.log(\"start date epoch:\",this.startDateEpoch);\n const currentTime = moment().valueOf();\n\n // start date, 22 MAY === current date, 22 MAY === end date, 22 MAY\n if(this.startDate === this.endDate){\n console.log(\"Current time:\",currentTime);\n console.log(\"end-interval:\",moment(this.startDateEpoch).endOf(\"d\").subtract(this.interval,\"m\").valueOf());\n // current time is in last interval\n if( currentTime >= moment(this.startDateEpoch).endOf(\"d\").subtract(this.interval,\"m\").valueOf()){\n this.firstIntervalForStartPicker = currentTime;\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).endOf(\"d\").valueOf();\n console.log(\"firstIntervalForStartPicker\",this.firstIntervalForStartPicker);\n console.log(\"firstIntervalForEndPicker\",this.firstIntervalForEndPicker);\n }\n // current time isn't in last interval\n else {\n this.firstIntervalForStartPicker = moment().add(offset, \"m\").valueOf();\n this.firstIntervalForEndPicker = moment().add(offset, \"m\").add(this.interval, \"m\").valueOf();\n }\n } \n // start date, 22 MAY === current date, 22 MAY !== end date, 30 MAY\n else {\n // current time is in last interval\n if( currentTime >= moment(this.startDateEpoch).endOf(\"d\").subtract(this.interval,\"m\").valueOf()){\n this.firstIntervalForStartPicker = currentTime;\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).endOf(\"d\").valueOf();\n }\n // current time isn't in last interval\n else {\n this.firstIntervalForStartPicker = moment().add(offset, \"m\").valueOf();\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).valueOf();\n }\n }\n }\n // start date, 30 MAY !== current date, 22 MAY\n else {\n // start date === end Date\n if( this.startDate === this.endDate){\n this.firstIntervalForStartPicker = moment(this.startDateEpoch).startOf(\"d\").valueOf();\n this.firstIntervalForEndPicker = moment(this.endDateEpoch).add(this.interval, \"m\").valueOf();\n } \n // start date !== end date\n else {\n this.firstIntervalForStartPicker = moment(this.startDateEpoch).startOf(\"d\").valueOf();\n this.firstIntervalForEndPicker = moment(this.startDateEpoch).startOf(\"d\").valueOf();\n }\n\n }\n\n if(this.givenStartTime)\n this.firstIntervalForStartPicker = this.givenStartTime;\n \n if(this.givenEndTime)\n this.firstIntervalForEndPicker = this.givenEndTime;\n \n this.startTime = {\n valid: true,\n time: moment(this.firstIntervalForStartPicker).format(this.timeFormat),\n epoch: moment(this.firstIntervalForStartPicker).valueOf()\n };\n\n this.endTime = {\n valid: true,\n time: moment(this.firstIntervalForEndPicker).format(this.timeFormat),\n epoch: moment(this.firstIntervalForEndPicker).valueOf()\n };\n }\n\n emitTimeRange(data: ITimeRange): void {\n this.timeRangeEmitter.emit(data);\n }\n\n //handlers catch the emitted values and run validation\n startPickerHandler(time: ITime): void {\n this.startTime = time;\n this.rangeValidity = true;\n // if the start time changes and the start date is the same as the end date\n // and the start time >= end time\n // update the first interval of end picker according to the time set in start picker\n if (this.startDate === this.endDate) {\n let minutes = moment(this.startTime.time, this.timeFormat).minutes();\n let offset = this.interval - (minutes % this.interval);\n this.firstIntervalForEndPicker = moment(`${this.startDate} ${this.startTime.time}`, `'DD-MM-YYYY' ${this.timeFormat}`)\n .add(offset, \"m\")\n .valueOf();\n\n // if the first interval == 12:00am, set it as 11:59pm\n const intervalAsString = moment(this.firstIntervalForEndPicker).format(this.timeFormat);\n const endOfDayAsString = moment(moment(`${this.startDate}`, `DD-MM-YYYY ${this.timeFormat}`).endOf(\"d\").add(1, \"m\")).format(this.timeFormat);\n if (intervalAsString === endOfDayAsString) {\n this.firstIntervalForEndPicker = moment(`${this.startDate} ${this.startTime.time}`, `'DD-MM-YYYY' ${this.timeFormat}`).endOf(\"d\").valueOf();\n }\n\n } else {\n const validity =\n this.checkTimeValidity(this.startTime.time.trim(), this.startDateEpoch) &&\n this.checkTimeValidity(this.endTime.time.trim(), this.endDateEpoch);\n\n this.rangeValidation(validity);\n this.emitTimeRange({\n valid: validity && this.rangeValidity,\n startTime: this.startTime.time,\n endTime: this.endTime.time,\n startEpoch: moment(`${this.startDate} ${this.startTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf(),\n endEpoch: moment(`${this.endDate} ${this.endTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf()\n });\n }\n\n this.triggerChange = !this.triggerChange;\n }\n\n endPickerHandler(time: ITime): void {\n this.endTime = time;\n\n const validity =\n this.checkTimeValidity(this.startTime.time.trim(), this.startDateEpoch) && this.checkTimeValidity(this.endTime.time.trim(), this.endDateEpoch);\n\n this.rangeValidation(validity);\n this.emitTimeRange({\n valid: validity && this.rangeValidity,\n startTime: this.startTime.time,\n endTime: this.endTime.time,\n startEpoch: moment(`${this.startDate} ${this.startTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf(),\n endEpoch: moment(`${this.endDate} ${this.endTime.time}`, `DD-MM-YYYY ${this.timeFormat}`).valueOf()\n });\n }\n\n checkTimeValidity(time: string, date: number): boolean {\n const RE12 = /^(([0][1-9]|1[0-2]):([0-5][0-9])( )?(am|pm|AM|PM))$/i;\n const RE24 = /^([01][0-9]|2[0-3]):[0-5][0-9]$/;\n const RE = this.clockFormat === 12 ? RE12 : RE24;\n\n const timeMoment = moment(`${moment(date).format(\"DD-MM-YYYY\")} ${time}`, `'DD-MM-YYYY' ${this.timeFormat}`);\n let flag: boolean = false;\n\n // if the first interval is set to the start of the day\n // then we don't check its validity against the current time\n if ((this.givenStartTime && this.givenEndTime) || (this.startDate !== this.endDate && this.startDate !== this.currDate)) {\n flag = time.match(RE) ? true : false;\n } else {\n flag = time.match(RE) && timeMoment.diff(moment(), \"m\") >= 0 ? true : false;\n }\n\n return flag;\n }\n\n // validates end picker's input according to the start picker's input\n rangeValidation(validity: boolean) {\n if (validity && this.startDate === this.endDate) {\n const startMoment = moment(this.startTime.time, this.timeFormat);\n const endMoment = moment(this.endTime.time, this.timeFormat);\n this.rangeValidity = endMoment.diff(startMoment, \"m\") >= 1 ? true : false;\n this.cdr.detectChanges();\n }\n }\n}\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TimeRangePickerComponent } from \"./timerangepicker.component\";\nimport { TimePickerModule } from \"mis-crystal-design-system/timepicker\";\n\n@NgModule({\n declarations: [TimeRangePickerComponent],\n imports: [CommonModule, FormsModule, TimePickerModule],\n exports: [TimeRangePickerComponent]\n})\nexport class TimeRangePickerModule {\n static forRoot(): ModuleWithProviders<TimeRangePickerModule> {\n return { ngModule: TimeRangePickerModule, providers: [] };\n }\n}"]}
@@ -6,6 +6,7 @@ export class MisInputComponent {
6
6
  this.size = "sm";
7
7
  this.noHints = false;
8
8
  this.hasError = false; // show input in error state
9
+ this.isMandatory = false; // show input as mandatory
9
10
  this.inputValidity = true;
10
11
  }
11
12
  set formInput(input) {
@@ -27,7 +28,7 @@ export class MisInputComponent {
27
28
  MisInputComponent.decorators = [
28
29
  { type: Component, args: [{
29
30
  selector: "mis-input",
30
- template: "<div\n [class]=\"'input-container ' + size\"\n [ngClass]=\"{\n rounded: type === 'rounded',\n floating: type === 'floating',\n 'has-error': !inputValidity || hasError,\n 'no-hint': noHints,\n 'mis-disabled': inputCtrl?.disabled\n }\"\n>\n <div class=\"input-wrapper\">\n <ng-content select=\"[mis-input-icon]\"></ng-content>\n <div class=\"mis-input\">\n <ng-content select=\"input\"></ng-content>\n <span class=\"mis-placeholder\">{{ placeholder }}</span>\n </div>\n <ng-content select=\"[mis-input-act]\"></ng-content>\n </div>\n <ng-content select=\"[mis-input-hint]\"></ng-content>\n <ng-content select=\"[mis-input-error]\"></ng-content>\n</div>\n",
31
+ template: "<div\n [class]=\"'input-container ' + size\"\n [ngClass]=\"{\n rounded: type === 'rounded',\n floating: type === 'floating',\n 'has-error': !inputValidity || hasError,\n 'no-hint': noHints,\n 'mis-disabled': inputCtrl?.disabled\n }\"\n>\n <div class=\"input-wrapper\">\n <ng-content select=\"[mis-input-icon]\"></ng-content>\n <div class=\"mis-input\">\n <ng-content select=\"input\"></ng-content>\n <span class=\"mis-placeholder\">{{ placeholder }}<span *ngIf=\"isMandatory\" style=\"color: red;\">*</span></span>\n </div>\n <ng-content select=\"[mis-input-act]\"></ng-content>\n </div>\n <ng-content select=\"[mis-input-hint]\"></ng-content>\n <ng-content select=\"[mis-input-error]\"></ng-content>\n</div>\n",
31
32
  styles: [":root{--pmry-200:#99baf7;--pmry-100:#cbddfb;--pmry-500:#0937b2;--pmry-400:#3c68d0;--pmry-600:#062a99;--pmry-700:#041f80;--pmry-300:#638fe7;--pmry-800:#021567;--pmry-900:#010f55;--sec-d-purple:#40447f;--sec-maroon:#6b034e;--sec-mud-red:#b23600;--sec-orange:#ed711c;--sec-purple:#815fd5;--sec-teal:#10adae;--sec-yellow:#d4900c;--sec-green:#547f40;--sec-bright-green:#27d22e;--sec-dark-teal:#035f6b;--sec-chocolate:#7c2f33;--sec-rube-pink:#c13d6d;--sec-cerulean:#0087b2;--sem-error:#b00020;--sem-info:#0091ff;--sem-warning:#ff9d00;--sem-success:#38af49;--grey-bg-1:#fafafa;--grey-bg:#f5f5f5;--grey-seperators:#e0e0e0;--grey-disabled:#c8cdd3;--grey-hover:#f5f7fc;--grey-pressed:#e6ebf7;--grey-row:#f5f7fc;--dec-light-yellow:#f4e7c3;--dec-light-purple:#dacff9;--dec-light-green:#e4f5e9;--dec-light-green2:#f1fff3;--dec-light-pink:#fae1ea;--dec-:#f4cbc1;--dec-lt-orange:#faefed;--dec-light-blue:#cfecf9;--dec-row-selection:#f1fdf8;--dec-row-selection2:#f2fbff;--dec-row-lines:#d3e1e9;--text-white:#fff;--text-disabled:#929dab;--text-muted:#6a737d;--text-black:#181f33;--MR-solid-blue2:#c8d5f6;--MR-solid-purple:#c9c3fb;--MR-solid-orange:#eeac9f;--MR-solid-green:#acdada;--MR-solid-brown:#e8c8af;--MR-solid-yellow:#ffefc7;--MR-solid-blue:#bbe6ff;--MR-solid-pink:#ffc6f2;--tr-hover:#f0f3fa;--tr-pressed:#dae1f3}.input-container{position:relative;padding-bottom:24px}.input-container.mis-disabled .input-wrapper{pointer-events:none!important}.input-container .input-wrapper{box-sizing:border-box;display:flex;align-items:center;flex-direction:row;flex-wrap:nowrap;transition:all 60ms ease-in;background-color:#fff;padding:3px 16px;gap:16px}.input-container .input-wrapper .mis-input{flex:1 1 auto;z-index:0;position:relative;display:flex;align-items:center}.input-container .input-wrapper input{flex:1 1 auto;border:none;outline:none;height:100%;padding:0;font-family:Lato;font-style:normal;font-weight:400;font-size:16px;height:24px;color:#181f33;background-color:transparent;width:100%;vertical-align:middle}.input-container .input-wrapper input::-moz-placeholder{-moz-transition:all .1s ease-in;transition:all .1s ease-in;opacity:0;transform-origin:left center;color:transparent}.input-container .input-wrapper input:-ms-input-placeholder{-ms-transition:all .1s ease-in;transition:all .1s ease-in;opacity:0;transform-origin:left center;color:transparent}.input-container .input-wrapper input::placeholder{transition:all .1s ease-in;opacity:0;transform-origin:left center;color:transparent}.input-container .input-wrapper .mis-placeholder{position:absolute;font-family:Lato;font-style:normal;font-weight:400;font-size:16px;line-height:24px;color:#6a737d;z-index:-1;transition:all .15s ease-in}.input-container .input-wrapper:focus-within{background-color:#f5f5f5}.input-container .input-wrapper:focus-within{border:1px solid #0937b2}.input-container .input-wrapper [mis-input-act],.input-container .input-wrapper [mis-input-icon]{width:18px;height:18px;color:#6a737d;font-size:24px;line-height:18px}.input-container .input-wrapper [mis-input-act]{cursor:pointer}.input-container.no-hint{padding-bottom:0}.input-container.rounded input{box-sizing:initial}.input-container.rounded.sm input{padding:3px 16px}.input-container.rounded.md input{padding:9px 16px}.input-container.rounded.lg input{padding:15px 16px}.input-container.rounded .input-wrapper{border-radius:4px;border:1px solid #e0e0e0;padding:0}.input-container.rounded .input-wrapper:hover{background-color:#f5f5f5}.input-container.rounded .input-wrapper:focus-within{border:1px solid #0937b2}.input-container.rounded .input-wrapper input:not(:-moz-placeholder-shown)+.mis-placeholder{color:transparent!important}.input-container.rounded .input-wrapper input:not(:-ms-input-placeholder)+.mis-placeholder{color:transparent!important}.input-container.rounded .input-wrapper input:not(:placeholder-shown)+.mis-placeholder{color:transparent!important}.input-container.rounded .input-wrapper .mis-placeholder{margin-left:16px;transition-duration:50ms}.input-container.rounded.has-error .input-wrapper{border:1px solid #b00020!important}.input-container.floating .input-wrapper{padding-top:24px;padding-bottom:7px;border-bottom:1px solid #e0e0e0}.input-container.floating .input-wrapper input:focus+.mis-placeholder{color:#0937b2!important}.input-container.floating .input-wrapper input:not(:-moz-placeholder-shown)+.mis-placeholder{transform:translateY(calc(-100% + 6px))!important;font-size:12px!important;letter-spacing:.2px!important}.input-container.floating .input-wrapper input:not(:-ms-input-placeholder)+.mis-placeholder{transform:translateY(calc(-100% + 6px))!important;font-size:12px!important;letter-spacing:.2px!important}.input-container.floating .input-wrapper input:focus+.mis-placeholder,.input-container.floating .input-wrapper input:not(:placeholder-shown)+.mis-placeholder{transform:translateY(calc(-100% + 6px))!important;font-size:12px!important;letter-spacing:.2px!important}.input-container.floating .input-wrapper:focus-within{border:none;border-bottom:1px solid #0937b2}.input-container.floating .input-wrapper:focus-within input::-moz-placeholder{color:#6a737d;opacity:1;font-size:16px}.input-container.floating .input-wrapper:focus-within input:-ms-input-placeholder{color:#6a737d;opacity:1;font-size:16px}.input-container.floating .input-wrapper:focus-within input::placeholder{color:#6a737d;opacity:1;font-size:16px}.input-container.floating.has-error .input-wrapper{border-bottom:1px solid #b00020!important}.input-container.floating.has-error .input-wrapper .mis-placeholder{color:#b00020!important}.input-container [mis-input-error],.input-container [mis-input-hint]{position:absolute;left:0;right:0;bottom:0;line-height:24px;height:24px;font-size:12px;color:#6a737d;letter-spacing:.2px}.input-container [mis-input-error]{color:#b00020}"]
32
33
  },] }
33
34
  ];
@@ -38,6 +39,7 @@ MisInputComponent.propDecorators = {
38
39
  placeholder: [{ type: Input }],
39
40
  noHints: [{ type: Input }],
40
41
  hasError: [{ type: Input }],
42
+ isMandatory: [{ type: Input }],
41
43
  formInput: [{ type: ContentChild, args: [MisInputDirective,] }]
42
44
  };
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2lucHV0L21pcy1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUF3QyxNQUFNLGVBQWUsQ0FBQztBQUdyRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQU92RSxNQUFNLE9BQU8saUJBQWlCO0lBa0I1QjtRQWpCUyxTQUFJLEdBQTJCLFVBQVUsQ0FBQztRQUMxQyxTQUFJLEdBQXVCLElBQUksQ0FBQztRQUVoQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyw0QkFBNEI7UUFZdkQsa0JBQWEsR0FBWSxJQUFJLENBQUM7SUFDZixDQUFDO0lBWmhCLElBQXFDLFNBQVMsQ0FBQyxLQUF3Qjs7UUFDckUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsS0FBSSxFQUFFLENBQUM7U0FDOUQ7UUFDRCxJQUFJLENBQUMsU0FBUyxTQUFHLEtBQUssQ0FBQyxPQUFPLDBDQUFFLE9BQU8sQ0FBQztRQUN4QyxNQUFBLElBQUksQ0FBQyxpQkFBaUIsMENBQUUsV0FBVyxHQUFHO1FBQ3RDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxXQUFXLElBQUksR0FBRyxDQUFDO0lBQzFCLENBQUM7SUFNRCxRQUFRLEtBQVUsQ0FBQztJQUNuQixXQUFXOztRQUNULE1BQUEsSUFBSSxDQUFDLGlCQUFpQiwwQ0FBRSxXQUFXLEdBQUc7SUFDeEMsQ0FBQzs7O1lBNUJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsV0FBVztnQkFDckIsb3NCQUF5Qzs7YUFFMUM7Ozs7bUJBRUUsS0FBSzttQkFDTCxLQUFLOzBCQUNMLEtBQUs7c0JBQ0wsS0FBSzt1QkFDTCxLQUFLO3dCQUNMLFlBQVksU0FBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBNaXNJbnB1dERpcmVjdGl2ZSB9IGZyb20gXCIuL2RpcmVjdGl2ZXMvaW5wdXQvaW5wdXQuZGlyZWN0aXZlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtaW5wdXRcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9taXMtaW5wdXQuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL21pcy1pbnB1dC5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBNaXNJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgdHlwZTogXCJyb3VuZGVkXCIgfCBcImZsb2F0aW5nXCIgPSBcImZsb2F0aW5nXCI7XG4gIEBJbnB1dCgpIHNpemU6IFwic21cIiB8IFwibWRcIiB8IFwibGdcIiA9IFwic21cIjtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZzsgLy8gZmxvYXRpbmcgcGxhY2Vob2xkZXIgdGV4dFxuICBASW5wdXQoKSBub0hpbnRzID0gZmFsc2U7XG4gIEBJbnB1dCgpIGhhc0Vycm9yID0gZmFsc2U7IC8vIHNob3cgaW5wdXQgaW4gZXJyb3Igc3RhdGVcbiAgQENvbnRlbnRDaGlsZChNaXNJbnB1dERpcmVjdGl2ZSkgc2V0IGZvcm1JbnB1dChpbnB1dDogTWlzSW5wdXREaXJlY3RpdmUpIHtcbiAgICBpZiAoIXRoaXMucGxhY2Vob2xkZXIpIHtcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBpbnB1dD8uZWwubmF0aXZlRWxlbWVudC5wbGFjZWhvbGRlciB8fCBcIlwiO1xuICAgIH1cbiAgICB0aGlzLmlucHV0Q3RybCA9IGlucHV0LmNvbnRyb2w/LmNvbnRyb2w7XG4gICAgdGhpcy5pbnB1dFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmlucHV0U3Vic2NyaXB0aW9uID0gaW5wdXQ/LnZhbGlkaXR5LnN1YnNjcmliZShyZXMgPT4gKHRoaXMuaW5wdXRWYWxpZGl0eSA9IHJlcykpO1xuICAgIHRoaXMucGxhY2Vob2xkZXIgKz0gXCIgXCI7XG4gIH1cbiAgaW5wdXRDdHJsOiBBYnN0cmFjdENvbnRyb2w7XG4gIGlucHV0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIGlucHV0VmFsaWRpdHk6IGJvb2xlYW4gPSB0cnVlO1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2lucHV0L21pcy1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUF3QyxNQUFNLGVBQWUsQ0FBQztBQUdyRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQU92RSxNQUFNLE9BQU8saUJBQWlCO0lBbUI1QjtRQWxCUyxTQUFJLEdBQTJCLFVBQVUsQ0FBQztRQUMxQyxTQUFJLEdBQXVCLElBQUksQ0FBQztRQUVoQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyw0QkFBNEI7UUFDOUMsZ0JBQVcsR0FBVyxLQUFLLENBQUMsQ0FBQywwQkFBMEI7UUFZaEUsa0JBQWEsR0FBWSxJQUFJLENBQUM7SUFDZixDQUFDO0lBWmhCLElBQXFDLFNBQVMsQ0FBQyxLQUF3Qjs7UUFDckUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsS0FBSSxFQUFFLENBQUM7U0FDOUQ7UUFDRCxJQUFJLENBQUMsU0FBUyxTQUFHLEtBQUssQ0FBQyxPQUFPLDBDQUFFLE9BQU8sQ0FBQztRQUN4QyxNQUFBLElBQUksQ0FBQyxpQkFBaUIsMENBQUUsV0FBVyxHQUFHO1FBQ3RDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxXQUFXLElBQUksR0FBRyxDQUFDO0lBQzFCLENBQUM7SUFNRCxRQUFRLEtBQVUsQ0FBQztJQUNuQixXQUFXOztRQUNULE1BQUEsSUFBSSxDQUFDLGlCQUFpQiwwQ0FBRSxXQUFXLEdBQUc7SUFDeEMsQ0FBQzs7O1lBN0JGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsV0FBVztnQkFDckIsOHZCQUF5Qzs7YUFFMUM7Ozs7bUJBRUUsS0FBSzttQkFDTCxLQUFLOzBCQUNMLEtBQUs7c0JBQ0wsS0FBSzt1QkFDTCxLQUFLOzBCQUNMLEtBQUs7d0JBQ0wsWUFBWSxTQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IE1pc0lucHV0RGlyZWN0aXZlIH0gZnJvbSBcIi4vZGlyZWN0aXZlcy9pbnB1dC9pbnB1dC5kaXJlY3RpdmVcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy1pbnB1dFwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL21pcy1pbnB1dC5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vbWlzLWlucHV0LmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIE1pc0lucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSB0eXBlOiBcInJvdW5kZWRcIiB8IFwiZmxvYXRpbmdcIiA9IFwiZmxvYXRpbmdcIjtcbiAgQElucHV0KCkgc2l6ZTogXCJzbVwiIHwgXCJtZFwiIHwgXCJsZ1wiID0gXCJzbVwiO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nOyAvLyBmbG9hdGluZyBwbGFjZWhvbGRlciB0ZXh0XG4gIEBJbnB1dCgpIG5vSGludHMgPSBmYWxzZTtcbiAgQElucHV0KCkgaGFzRXJyb3IgPSBmYWxzZTsgLy8gc2hvdyBpbnB1dCBpbiBlcnJvciBzdGF0ZVxuICBASW5wdXQoKSBpc01hbmRhdG9yeTpib29sZWFuID0gZmFsc2U7IC8vIHNob3cgaW5wdXQgYXMgbWFuZGF0b3J5XG4gIEBDb250ZW50Q2hpbGQoTWlzSW5wdXREaXJlY3RpdmUpIHNldCBmb3JtSW5wdXQoaW5wdXQ6IE1pc0lucHV0RGlyZWN0aXZlKSB7XG4gICAgaWYgKCF0aGlzLnBsYWNlaG9sZGVyKSB7XG4gICAgICB0aGlzLnBsYWNlaG9sZGVyID0gaW5wdXQ/LmVsLm5hdGl2ZUVsZW1lbnQucGxhY2Vob2xkZXIgfHwgXCJcIjtcbiAgICB9XG4gICAgdGhpcy5pbnB1dEN0cmwgPSBpbnB1dC5jb250cm9sPy5jb250cm9sO1xuICAgIHRoaXMuaW5wdXRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5pbnB1dFN1YnNjcmlwdGlvbiA9IGlucHV0Py52YWxpZGl0eS5zdWJzY3JpYmUocmVzID0+ICh0aGlzLmlucHV0VmFsaWRpdHkgPSByZXMpKTtcbiAgICB0aGlzLnBsYWNlaG9sZGVyICs9IFwiIFwiO1xuICB9XG4gIGlucHV0Q3RybDogQWJzdHJhY3RDb250cm9sO1xuICBpbnB1dFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBpbnB1dFZhbGlkaXR5OiBib29sZWFuID0gdHJ1ZTtcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge31cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
@@ -1,26 +1,64 @@
1
1
  import { Component, EventEmitter, Input, Output } from "@angular/core";
2
2
  import { FormControl } from "@angular/forms";
3
+ import { parsePhoneNumberFromString, getCountryCallingCode, getCountries } from 'libphonenumber-js';
3
4
  export class PhoneInputComponent {
4
5
  constructor() {
6
+ this.dropdownHeight = "";
7
+ this.dropdownWidth = "";
5
8
  this.dropdownData = [];
6
9
  this.dropdownSelectedItem = { value: "", label: "" };
10
+ this.defaultCountryCode = 'IN';
7
11
  this.inputPlaceholder = 'Enter';
8
12
  this.inputFormControl = new FormControl();
9
13
  this.onDropdownSelection = new EventEmitter();
10
- this.searchEnabled = false;
14
+ this.onInvalidPhoneNumber = new EventEmitter();
15
+ this.dropdownListWidth = "";
16
+ this.dropdownListHeight = "";
17
+ this.searchEnabled = true;
11
18
  this.inputType = "number";
12
19
  this.searchLabel = "Search Keyword";
20
+ this.phoneValidator = false;
21
+ this.countryCodes = [{ label: '', value: '' }];
22
+ this.selectedCountryName = '';
13
23
  }
14
24
  ngOnInit() {
25
+ if (this.phoneValidator) {
26
+ this.loadCountryCodes();
27
+ this.dropdownData = this.countryCodes;
28
+ this.selectedCountryName = this.dropdownSelectedItem.label;
29
+ }
30
+ if (this.defaultCountryCode) {
31
+ const selectedCountry = this.dropdownData.find(country => country.value.toUpperCase() === this.defaultCountryCode.toUpperCase());
32
+ if (selectedCountry) {
33
+ this.dropdownSelectedItem = selectedCountry;
34
+ this.selectedCountryName = selectedCountry.label;
35
+ }
36
+ }
15
37
  }
16
38
  handleDropdownSelection(item) {
39
+ this.dropdownSelectedItem = item;
17
40
  this.onDropdownSelection.emit(item);
41
+ this.selectedCountryName = item.label;
42
+ this.validatePhoneNumber(this.inputFormControl.value, this.dropdownSelectedItem.value);
43
+ }
44
+ loadCountryCodes() {
45
+ const countries = getCountries();
46
+ this.countryCodes = countries.map(countryCode => ({
47
+ value: countryCode,
48
+ label: `${countryCode} (+${getCountryCallingCode(countryCode)})`
49
+ }));
50
+ }
51
+ validatePhoneNumber(phoneNumber, countryCode) {
52
+ const parsedPhoneNumber = parsePhoneNumberFromString(phoneNumber, countryCode);
53
+ if (!parsedPhoneNumber || !parsedPhoneNumber.isValid()) {
54
+ this.onInvalidPhoneNumber.emit(`Phone number is invalid for ${this.selectedCountryName}`);
55
+ }
18
56
  }
19
57
  }
20
58
  PhoneInputComponent.decorators = [
21
59
  { type: Component, args: [{
22
60
  selector: "mis-phone-input",
23
- template: "<div class=\"main-container-phone\">\n <mis-dropdown [height]=\"dropdownHeight\" [dropdownListWidth]=\"dropdownListWidth\"[dropdownListHeight]=\"dropdownListHeight\" [width]=\"dropdownWidth\" [data]=\"dropdownData\" [selectedItem]=\"dropdownSelectedItem\" [label]=\"label\" [searchEnabled]=\"searchEnabled\" [multiLine]=\"false\" (onChange)=\"handleDropdownSelection($event)\" [searchLabel]=\"searchLabel\"></mis-dropdown>\n <div class=\"details-field\">\n <div class=\"input-box\">\n <input\n [ngStyle]=\"{'height': inputHeight }\"\n class=\"black-text\"\n [placeholder]=\"inputPlaceholder\"\n [formControl]=\"inputFormControl\" \n [type]=\"inputType\"\n />\n </div>\n </div>\n</div>\n",
61
+ template: "<div class=\"main-container-phone\">\n <mis-dropdown [height]=\"dropdownHeight\" [dropdownListWidth]=\"dropdownListWidth\"[dropdownListHeight]=\"dropdownListHeight\" [width]=\"dropdownWidth\" [data]=\"dropdownData\" [selectedItem]=\"dropdownSelectedItem\" [label]=\"label\" [searchEnabled]=\"searchEnabled\" [multiLine]=\"false\" (onChange)=\"handleDropdownSelection($event)\" [searchLabel]=\"searchLabel\"></mis-dropdown>\n <div class=\"details-field\">\n <div class=\"input-box\">\n <input\n [ngStyle]=\"{'height': inputHeight }\"\n class=\"black-text\" \n [placeholder]=\"inputPlaceholder\"\n [formControl]=\"inputFormControl\" \n [type]=\"inputType\"\n />\n </div>\n </div>\n</div>\n",
24
62
  styles: [".main-container-phone{display:flex;border:1px solid #e0e0e0;border-radius:6px}.details-field label{display:inline-block;min-width:224px;margin-right:24px}.details-field .input-box{width:100%}.details-field .input-box input{width:100%;height:32px}input{padding:10px 16px;border:none;outline:none;width:100%;height:auto;border-radius:6px}.black-text,input{color:#181f33;line-height:24px;font-size:16px}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.main-container-phone ::ng-deep .item{padding:8px!important}.main-container-phone ::ng-deep .dropdown{border:unset!important}"]
25
63
  },] }
26
64
  ];
@@ -31,14 +69,17 @@ PhoneInputComponent.propDecorators = {
31
69
  inputHeight: [{ type: Input }],
32
70
  dropdownData: [{ type: Input }],
33
71
  dropdownSelectedItem: [{ type: Input }],
72
+ defaultCountryCode: [{ type: Input }],
34
73
  label: [{ type: Input }],
35
74
  inputPlaceholder: [{ type: Input }],
36
75
  inputFormControl: [{ type: Input }],
37
76
  onDropdownSelection: [{ type: Output }],
77
+ onInvalidPhoneNumber: [{ type: Output }],
38
78
  dropdownListWidth: [{ type: Input }],
39
79
  dropdownListHeight: [{ type: Input }],
40
80
  searchEnabled: [{ type: Input }],
41
81
  inputType: [{ type: Input }],
42
- searchLabel: [{ type: Input }]
82
+ searchLabel: [{ type: Input }],
83
+ phoneValidator: [{ type: Input }]
43
84
  };
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvcGhvbmUtaW5wdXQvcGhvbmUtaW5wdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUcsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUTdDLE1BQU0sT0FBTyxtQkFBbUI7SUFrQjlCO1FBZFMsaUJBQVksR0FBbUIsRUFBRSxDQUFDO1FBQ2xDLHlCQUFvQixHQUFnQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFBO1FBRzVELHFCQUFnQixHQUFXLE9BQU8sQ0FBQztRQUNuQyxxQkFBZ0IsR0FBZ0IsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUVqRCx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRy9DLGtCQUFhLEdBQVMsS0FBSyxDQUFDO1FBQzVCLGNBQVMsR0FBVyxRQUFRLENBQUM7UUFDN0IsZ0JBQVcsR0FBVSxnQkFBZ0IsQ0FBQTtJQUUvQixDQUFDO0lBQ2hCLFFBQVE7SUFDUixDQUFDO0lBRUQsdUJBQXVCLENBQUMsSUFBa0I7UUFDeEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDOzs7WUE3QkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLDh1QkFBMkM7O2FBRTVDOzs7OzZCQUVFLEtBQUs7NEJBQ0wsS0FBSzswQkFDTCxLQUFLOzJCQUNMLEtBQUs7bUNBQ0wsS0FBSztvQkFDTCxLQUFLOytCQUVMLEtBQUs7K0JBQ0wsS0FBSztrQ0FFTCxNQUFNO2dDQUNOLEtBQUs7aUNBQ0wsS0FBSzs0QkFDTCxLQUFLO3dCQUNMLEtBQUs7MEJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBEcm9wZG93bkl0ZW0gfSBmcm9tIFwibWlzLWNyeXN0YWwtZGVzaWduLXN5c3RlbS9kcm9wZG93blwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLXBob25lLWlucHV0XCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vcGhvbmUtaW5wdXQuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL3Bob25lLWlucHV0LmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIFBob25lSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBkcm9wZG93bkhlaWdodD86IHN0cmluZztcbiAgQElucHV0KCkgZHJvcGRvd25XaWR0aD86IHN0cmluZztcbiAgQElucHV0KCkgaW5wdXRIZWlnaHQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRyb3Bkb3duRGF0YTogRHJvcGRvd25JdGVtW10gPSBbXTtcbiAgQElucHV0KCkgZHJvcGRvd25TZWxlY3RlZEl0ZW06RHJvcGRvd25JdGVtID0geyB2YWx1ZTogXCJcIiwgbGFiZWw6IFwiXCIgfSBcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcblxuICBASW5wdXQoKSBpbnB1dFBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnRW50ZXInO1xuICBASW5wdXQoKSBpbnB1dEZvcm1Db250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuXG4gIEBPdXRwdXQoKSBvbkRyb3Bkb3duU2VsZWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIGRyb3Bkb3duTGlzdFdpZHRoO1xuICBASW5wdXQoKSBkcm9wZG93bkxpc3RIZWlnaHQ7XG4gIEBJbnB1dCgpIHNlYXJjaEVuYWJsZWQ6Ym9vbGVhbj1mYWxzZTtcbiAgQElucHV0KCkgaW5wdXRUeXBlOiBzdHJpbmcgPSBcIm51bWJlclwiO1xuICBASW5wdXQoKSBzZWFyY2hMYWJlbDpzdHJpbmcgPSBcIlNlYXJjaCBLZXl3b3JkXCJcbiAgXG4gIGNvbnN0cnVjdG9yKCkge31cbiAgbmdPbkluaXQoKSB7XG4gIH1cblxuICBoYW5kbGVEcm9wZG93blNlbGVjdGlvbihpdGVtOiBEcm9wZG93bkl0ZW0pe1xuICAgIHRoaXMub25Ecm9wZG93blNlbGVjdGlvbi5lbWl0KGl0ZW0pO1xuICB9XG5cbn1cbiJdfQ==
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvcGhvbmUtaW5wdXQvcGhvbmUtaW5wdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxxQkFBcUIsRUFBZSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQVFqSCxNQUFNLE9BQU8sbUJBQW1CO0lBdUI5QjtRQXRCUyxtQkFBYyxHQUFZLEVBQUUsQ0FBQztRQUM3QixrQkFBYSxHQUFZLEVBQUUsQ0FBQztRQUU1QixpQkFBWSxHQUFtQixFQUFFLENBQUM7UUFDbEMseUJBQW9CLEdBQWlCLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDOUQsdUJBQWtCLEdBQVksSUFBSSxDQUFDO1FBRW5DLHFCQUFnQixHQUFXLE9BQU8sQ0FBQztRQUNuQyxxQkFBZ0IsR0FBZ0IsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNqRCx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzlDLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbkQsc0JBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUN4QixrQkFBYSxHQUFZLElBQUksQ0FBQztRQUM5QixjQUFTLEdBQVcsUUFBUSxDQUFDO1FBQzdCLGdCQUFXLEdBQVcsZ0JBQWdCLENBQUM7UUFDdkMsbUJBQWMsR0FBSSxLQUFLLENBQUM7UUFFakMsaUJBQVksR0FBbUIsQ0FBQyxFQUFDLEtBQUssRUFBQyxFQUFFLEVBQUMsS0FBSyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUM7UUFFckQsd0JBQW1CLEdBQVcsRUFBRSxDQUFDO0lBRWxCLENBQUM7SUFFaEIsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDdEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUM7U0FDNUQ7UUFFRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMzQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDNUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FDakYsQ0FBQztZQUNGLElBQUksZUFBZSxFQUFFO2dCQUNuQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsZUFBZSxDQUFDO2dCQUM1QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQzthQUNsRDtTQUNGO0lBQ0gsQ0FBQztJQUVELHVCQUF1QixDQUFDLElBQWtCO1FBQ3hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN0QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE1BQU0sU0FBUyxHQUFHLFlBQVksRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDaEQsS0FBSyxFQUFFLFdBQVc7WUFDbEIsS0FBSyxFQUFFLEdBQUcsV0FBVyxNQUFNLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxHQUFHO1NBQ2pFLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELG1CQUFtQixDQUFDLFdBQW1CLEVBQUUsV0FBbUI7UUFDMUQsTUFBTSxpQkFBaUIsR0FBRywwQkFBMEIsQ0FBQyxXQUFXLEVBQUUsV0FBMEIsQ0FBQyxDQUFDO1FBRTlGLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3RELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsK0JBQStCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7U0FDM0Y7SUFDSCxDQUFDOzs7WUFyRUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLGd2QkFBMkM7O2FBRTVDOzs7OzZCQUVFLEtBQUs7NEJBQ0wsS0FBSzswQkFDTCxLQUFLOzJCQUNMLEtBQUs7bUNBQ0wsS0FBSztpQ0FDTCxLQUFLO29CQUNMLEtBQUs7K0JBQ0wsS0FBSzsrQkFDTCxLQUFLO2tDQUNMLE1BQU07bUNBQ04sTUFBTTtnQ0FDTixLQUFLO2lDQUNMLEtBQUs7NEJBQ0wsS0FBSzt3QkFDTCxLQUFLOzBCQUNMLEtBQUs7NkJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IHBhcnNlUGhvbmVOdW1iZXJGcm9tU3RyaW5nLCBnZXRDb3VudHJ5Q2FsbGluZ0NvZGUsIENvdW50cnlDb2RlLCBnZXRDb3VudHJpZXMgfSBmcm9tICdsaWJwaG9uZW51bWJlci1qcyc7XG5pbXBvcnQgeyBEcm9wZG93bkl0ZW0gfSBmcm9tIFwibWlzLWNyeXN0YWwtZGVzaWduLXN5c3RlbS9kcm9wZG93blwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLXBob25lLWlucHV0XCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vcGhvbmUtaW5wdXQuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL3Bob25lLWlucHV0LmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIFBob25lSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBkcm9wZG93bkhlaWdodD86IHN0cmluZyA9IFwiXCI7XG4gIEBJbnB1dCgpIGRyb3Bkb3duV2lkdGg/OiBzdHJpbmcgPSBcIlwiO1xuICBASW5wdXQoKSBpbnB1dEhlaWdodD87XG4gIEBJbnB1dCgpIGRyb3Bkb3duRGF0YTogRHJvcGRvd25JdGVtW10gPSBbXTtcbiAgQElucHV0KCkgZHJvcGRvd25TZWxlY3RlZEl0ZW06IERyb3Bkb3duSXRlbSA9IHsgdmFsdWU6IFwiXCIsIGxhYmVsOiBcIlwiIH07XG4gIEBJbnB1dCgpIGRlZmF1bHRDb3VudHJ5Q29kZT86IHN0cmluZyA9ICdJTic7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlucHV0UGxhY2Vob2xkZXI6IHN0cmluZyA9ICdFbnRlcic7XG4gIEBJbnB1dCgpIGlucHV0Rm9ybUNvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gIEBPdXRwdXQoKSBvbkRyb3Bkb3duU2VsZWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvbkludmFsaWRQaG9uZU51bWJlciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBASW5wdXQoKSBkcm9wZG93bkxpc3RXaWR0aCA9IFwiXCI7XG4gIEBJbnB1dCgpIGRyb3Bkb3duTGlzdEhlaWdodCA9IFwiXCI7XG4gIEBJbnB1dCgpIHNlYXJjaEVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBpbnB1dFR5cGU6IHN0cmluZyA9IFwibnVtYmVyXCI7XG4gIEBJbnB1dCgpIHNlYXJjaExhYmVsOiBzdHJpbmcgPSBcIlNlYXJjaCBLZXl3b3JkXCI7ICBcbiAgQElucHV0KCkgcGhvbmVWYWxpZGF0b3I/ID0gZmFsc2U7XG4gIFxuICBjb3VudHJ5Q29kZXM6IERyb3Bkb3duSXRlbVtdID0gW3tsYWJlbDonJyx2YWx1ZTonJ31dO1xuICBjb3VudHJ5Q29kZTogQ291bnRyeUNvZGUgfCB1bmRlZmluZWQ7XG4gIHNlbGVjdGVkQ291bnRyeU5hbWU6IHN0cmluZyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5waG9uZVZhbGlkYXRvcikge1xuICAgICAgdGhpcy5sb2FkQ291bnRyeUNvZGVzKCk7XG4gICAgICB0aGlzLmRyb3Bkb3duRGF0YSA9IHRoaXMuY291bnRyeUNvZGVzO1xuICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnlOYW1lID0gdGhpcy5kcm9wZG93blNlbGVjdGVkSXRlbS5sYWJlbDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZWZhdWx0Q291bnRyeUNvZGUpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkQ291bnRyeSA9IHRoaXMuZHJvcGRvd25EYXRhLmZpbmQoXG4gICAgICAgIGNvdW50cnkgPT4gY291bnRyeS52YWx1ZS50b1VwcGVyQ2FzZSgpID09PSB0aGlzLmRlZmF1bHRDb3VudHJ5Q29kZS50b1VwcGVyQ2FzZSgpXG4gICAgICApO1xuICAgICAgaWYgKHNlbGVjdGVkQ291bnRyeSkge1xuICAgICAgICB0aGlzLmRyb3Bkb3duU2VsZWN0ZWRJdGVtID0gc2VsZWN0ZWRDb3VudHJ5O1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnRyeU5hbWUgPSBzZWxlY3RlZENvdW50cnkubGFiZWw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRHJvcGRvd25TZWxlY3Rpb24oaXRlbTogRHJvcGRvd25JdGVtKXtcbiAgICB0aGlzLmRyb3Bkb3duU2VsZWN0ZWRJdGVtID0gaXRlbTtcbiAgICB0aGlzLm9uRHJvcGRvd25TZWxlY3Rpb24uZW1pdChpdGVtKTtcbiAgICB0aGlzLnNlbGVjdGVkQ291bnRyeU5hbWUgPSBpdGVtLmxhYmVsO1xuICAgIHRoaXMudmFsaWRhdGVQaG9uZU51bWJlcih0aGlzLmlucHV0Rm9ybUNvbnRyb2wudmFsdWUsIHRoaXMuZHJvcGRvd25TZWxlY3RlZEl0ZW0udmFsdWUpO1xuICB9XG5cbiAgbG9hZENvdW50cnlDb2RlcygpIHtcbiAgICBjb25zdCBjb3VudHJpZXMgPSBnZXRDb3VudHJpZXMoKTtcbiAgICB0aGlzLmNvdW50cnlDb2RlcyA9IGNvdW50cmllcy5tYXAoY291bnRyeUNvZGUgPT4gKHtcbiAgICAgIHZhbHVlOiBjb3VudHJ5Q29kZSxcbiAgICAgIGxhYmVsOiBgJHtjb3VudHJ5Q29kZX0gKCske2dldENvdW50cnlDYWxsaW5nQ29kZShjb3VudHJ5Q29kZSl9KWBcbiAgICB9KSk7XG4gIH1cblxuICB2YWxpZGF0ZVBob25lTnVtYmVyKHBob25lTnVtYmVyOiBzdHJpbmcsIGNvdW50cnlDb2RlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXJzZWRQaG9uZU51bWJlciA9IHBhcnNlUGhvbmVOdW1iZXJGcm9tU3RyaW5nKHBob25lTnVtYmVyLCBjb3VudHJ5Q29kZSBhcyBDb3VudHJ5Q29kZSk7XG5cbiAgICBpZiAoIXBhcnNlZFBob25lTnVtYmVyIHx8ICFwYXJzZWRQaG9uZU51bWJlci5pc1ZhbGlkKCkpIHtcbiAgICAgIHRoaXMub25JbnZhbGlkUGhvbmVOdW1iZXIuZW1pdChgUGhvbmUgbnVtYmVyIGlzIGludmFsaWQgZm9yICR7dGhpcy5zZWxlY3RlZENvdW50cnlOYW1lfWApO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
@@ -34,13 +34,18 @@ export class TimeRangePickerComponent {
34
34
  const offset = this.interval - (minutes % this.interval);
35
35
  // start date, 22 MAY === current date, 22 MAY
36
36
  if (this.startDate === this.currDate) {
37
- const currentTime = moment(this.startDateEpoch).valueOf();
37
+ console.log("start date epoch:", this.startDateEpoch);
38
+ const currentTime = moment().valueOf();
38
39
  // start date, 22 MAY === current date, 22 MAY === end date, 22 MAY
39
40
  if (this.startDate === this.endDate) {
41
+ console.log("Current time:", currentTime);
42
+ console.log("end-interval:", moment(this.startDateEpoch).endOf("d").subtract(this.interval, "m").valueOf());
40
43
  // current time is in last interval
41
44
  if (currentTime >= moment(this.startDateEpoch).endOf("d").subtract(this.interval, "m").valueOf()) {
42
45
  this.firstIntervalForStartPicker = currentTime;
43
46
  this.firstIntervalForEndPicker = moment(this.endDateEpoch).endOf("d").valueOf();
47
+ console.log("firstIntervalForStartPicker", this.firstIntervalForStartPicker);
48
+ console.log("firstIntervalForEndPicker", this.firstIntervalForEndPicker);
44
49
  }
45
50
  // current time isn't in last interval
46
51
  else {
@@ -191,4 +196,4 @@ TimeRangePickerComponent.propDecorators = {
191
196
  gap: [{ type: Input }],
192
197
  timeRangeEmitter: [{ type: Output }]
193
198
  };
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXJhbmdlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RpbWVyYW5nZXBpY2tlci90aW1lcmFuZ2VwaWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQVExQyxNQUFNLE9BQU8sd0JBQXdCO0lBNEJuQyxZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQTNCakMsZUFBVSxHQUFXLE9BQU8sQ0FBQztRQUU3QixXQUFNLEdBQVcsTUFBTSxDQUFDO1FBQ3hCLGFBQVEsR0FBVyxjQUFjLENBQUM7UUFDbEMsbUJBQWMsR0FBVyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlELGlCQUFZLEdBQVcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUc1RCxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ3RCLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBQzVCLGNBQVMsR0FBZSxLQUFLLENBQUM7UUFDOUIsUUFBRyxHQUFXLE1BQU0sQ0FBQztRQUVwQixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBTTVELGdDQUEyQixHQUFXLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pELDhCQUF5QixHQUFXLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBR3ZELGtCQUFhLEdBQVks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QUFLOzBCQUNMLEtBQUs7dUJBQ0wsS0FBSzswQkFDTCxLQUFLO3dCQUNMLEtBQUs7a0JBQ0wsS0FBSzsrQkFFTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyBJVGltZVJhbmdlLCBJVGltZSwgVERpcmVjdGlvbiB9IGZyb20gXCIuL3RpbWVyYW5nZS5uYW1lc3BhY2VcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy10aW1lcmFuZ2VwaWNrZXJcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi90aW1lcmFuZ2VwaWNrZXIuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL3RpbWVyYW5nZXBpY2tlci5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lUmFuZ2VQaWNrZXJDb21wb25lbnQge1xuICBASW5wdXQoKSBpbnB1dFdpZHRoOiBzdHJpbmcgPSBcIjEwMHB4XCI7XG4gIEBJbnB1dCgpIGRyb3Bkb3duV2lkdGg/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGhlaWdodDogc3RyaW5nID0gXCI0NnB4XCI7XG4gIEBJbnB1dCgpIHRpbWV6b25lOiBzdHJpbmcgPSBcIkFzaWEvS29sa2F0YVwiO1xuICBASW5wdXQoKSBzdGFydERhdGVFcG9jaDogbnVtYmVyID0gbW9tZW50KCkudHoodGhpcy50aW1lem9uZSkudmFsdWVPZigpO1xuICBASW5wdXQoKSBlbmREYXRlRXBvY2g6IG51bWJlciA9IG1vbWVudCgpLnR6KHRoaXMudGltZXpvbmUpLnZhbHVlT2YoKTtcbiAgQElucHV0KCkgZ2l2ZW5TdGFydFRpbWU6IG51bWJlcjtcbiAgQElucHV0KCkgZ2l2ZW5FbmRUaW1lOiBudW1iZXI7XG4gIEBJbnB1dCgpIGNsb2NrRm9ybWF0OiBudW1iZXIgPSAxMjtcbiAgQElucHV0KCkgaW50ZXJ2YWw6IG51bWJlciA9IDE1O1xuICBASW5wdXQoKSBzaG93VG9vbHRpcDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGRpcmVjdGlvbjogVERpcmVjdGlvbiA9ICdyb3cnO1xuICBASW5wdXQoKSBnYXA6IHN0cmluZyA9ICcxcmVtJztcblxuICBAT3V0cHV0KCkgdGltZVJhbmdlRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8SVRpbWVSYW5nZT4oKTtcblxuICBzdGFydERhdGUhOiBzdHJpbmc7XG4gIGVuZERhdGUhOiBzdHJpbmc7XG4gIGN1cnJEYXRlITogc3RyaW5nO1xuICB0aW1lRm9ybWF0ITogc3RyaW5nO1xuICBmaXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXI6IG51bWJlciA9IG1vbWVudCgpLnZhbHVlT2YoKTtcbiAgZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlcjogbnVtYmVyID0gbW9tZW50KCkudmFsdWVPZigpO1xuICBzdGFydFRpbWUhOiBJVGltZTtcbiAgZW5kVGltZSE6IElUaW1lO1xuICByYW5nZVZhbGlkaXR5OiBib29sZWFuID0gdHJ1ZTtcbiAgdHJpZ2dlckNoYW5nZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25Jbml0KCkge31cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLnRpbWVGb3JtYXQgPSB0aGlzLmNsb2NrRm9ybWF0ID09PSAxMiA/IFwiaGg6bW0gYVwiIDogXCJISDptbVwiO1xuICAgIG1vbWVudC50ei5zZXREZWZhdWx0KHRoaXMudGltZXpvbmUpO1xuICAgIHRoaXMuc3RhcnREYXRlID0gbW9tZW50KHRoaXMuc3RhcnREYXRlRXBvY2gpLmZvcm1hdChcIkRELU1NLVlZWVlcIik7XG4gICAgdGhpcy5lbmREYXRlID0gbW9tZW50KHRoaXMuZW5kRGF0ZUVwb2NoKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpO1xuICAgIHRoaXMuY3VyckRhdGUgPSBtb21lbnQoKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpO1xuICAgIHRoaXMuc2V0Rmlyc3RJbnRlcnZhbHMoKTtcbiAgfVxuXG4gIC8vIGNhbGN1bGF0ZSB0aGUgZmlyc3QgaW50ZXJ2YWwgb2YgdGhlIHBpY2tlclxuICBzZXRGaXJzdEludGVydmFscygpOiB2b2lkIHtcbiAgICBjb25zdCBtaW51dGVzID0gbW9tZW50KCkubWludXRlcygpO1xuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuaW50ZXJ2YWwgLSAobWludXRlcyAlIHRoaXMuaW50ZXJ2YWwpO1xuXG4gICAgLy8gc3RhcnQgZGF0ZSwgMjIgTUFZID09PSAgY3VycmVudCBkYXRlLCAyMiBNQVlcbiAgICBpZiggdGhpcy5zdGFydERhdGUgPT09IHRoaXMuY3VyckRhdGUgKXtcbiAgICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbW9tZW50KHRoaXMuc3RhcnREYXRlRXBvY2gpLnZhbHVlT2YoKTtcblxuICAgICAgLy8gc3RhcnQgZGF0ZSwgMjIgTUFZICA9PT0gY3VycmVudCBkYXRlLCAyMiBNQVkgPT09IGVuZCBkYXRlLCAyMiBNQVlcbiAgICAgIGlmKHRoaXMuc3RhcnREYXRlID09PSB0aGlzLmVuZERhdGUpe1xuXG4gICAgICAgIC8vIGN1cnJlbnQgdGltZSBpcyBpbiBsYXN0IGludGVydmFsXG4gICAgICAgIGlmKCBjdXJyZW50VGltZSA+PSBtb21lbnQodGhpcy5zdGFydERhdGVFcG9jaCkuZW5kT2YoXCJkXCIpLnN1YnRyYWN0KHRoaXMuaW50ZXJ2YWwsXCJtXCIpLnZhbHVlT2YoKSl7XG4gICAgICAgICAgdGhpcy5maXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBjdXJyZW50VGltZTtcbiAgICAgICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSAgbW9tZW50KHRoaXMuZW5kRGF0ZUVwb2NoKS5lbmRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGN1cnJlbnQgdGltZSBpc24ndCBpbiBsYXN0IGludGVydmFsXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gbW9tZW50KCkuYWRkKG9mZnNldCwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSAgbW9tZW50KCkuYWRkKG9mZnNldCwgXCJtXCIpLmFkZCh0aGlzLmludGVydmFsLCBcIm1cIikudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgICB9IFxuICAgICAgLy8gc3RhcnQgZGF0ZSwgMjIgTUFZID09PSBjdXJyZW50IGRhdGUsIDIyIE1BWSAhPT0gZW5kIGRhdGUsIDMwIE1BWVxuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIGN1cnJlbnQgdGltZSBpcyBpbiBsYXN0IGludGVydmFsXG4gICAgICAgIGlmKCBjdXJyZW50VGltZSA+PSBtb21lbnQodGhpcy5zdGFydERhdGVFcG9jaCkuZW5kT2YoXCJkXCIpLnN1YnRyYWN0KHRoaXMuaW50ZXJ2YWwsXCJtXCIpLnZhbHVlT2YoKSl7XG4gICAgICAgICAgdGhpcy5maXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBjdXJyZW50VGltZTtcbiAgICAgICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSAgbW9tZW50KHRoaXMuZW5kRGF0ZUVwb2NoKS5lbmRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGN1cnJlbnQgdGltZSBpc24ndCBpbiBsYXN0IGludGVydmFsXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gbW9tZW50KCkuYWRkKG9mZnNldCwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSAgbW9tZW50KHRoaXMuZW5kRGF0ZUVwb2NoKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gc3RhcnQgZGF0ZSwgMzAgTUFZICE9PSBjdXJyZW50IGRhdGUsIDIyIE1BWVxuICAgIGVsc2Uge1xuICAgICAgLy8gc3RhcnQgZGF0ZSA9PT0gZW5kIERhdGVcbiAgICAgIGlmKCB0aGlzLnN0YXJ0RGF0ZSA9PT0gdGhpcy5lbmREYXRlKXtcbiAgICAgICAgdGhpcy5maXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBtb21lbnQodGhpcy5zdGFydERhdGVFcG9jaCkuc3RhcnRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSAgbW9tZW50KHRoaXMuZW5kRGF0ZUVwb2NoKS5hZGQodGhpcy5pbnRlcnZhbCwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgIH0gXG4gICAgICAvLyBzdGFydCBkYXRlICE9PSBlbmQgZGF0ZVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gbW9tZW50KHRoaXMuc3RhcnREYXRlRXBvY2gpLnN0YXJ0T2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgdGhpcy5maXJzdEludGVydmFsRm9yRW5kUGlja2VyID0gIG1vbWVudCh0aGlzLnN0YXJ0RGF0ZUVwb2NoKS5zdGFydE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICBpZih0aGlzLmdpdmVuU3RhcnRUaW1lKVxuICAgICAgdGhpcy5maXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSB0aGlzLmdpdmVuU3RhcnRUaW1lO1xuICAgXG4gICAgaWYodGhpcy5naXZlbkVuZFRpbWUpXG4gICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSB0aGlzLmdpdmVuRW5kVGltZTtcbiAgICAgIFxuICAgIHRoaXMuc3RhcnRUaW1lID0ge1xuICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICB0aW1lOiBtb21lbnQodGhpcy5maXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIpLmZvcm1hdCh0aGlzLnRpbWVGb3JtYXQpLFxuICAgICAgZXBvY2g6IG1vbWVudCh0aGlzLmZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlcikudmFsdWVPZigpXG4gICAgfTtcblxuICAgIHRoaXMuZW5kVGltZSA9IHtcbiAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgdGltZTogbW9tZW50KHRoaXMuZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlcikuZm9ybWF0KHRoaXMudGltZUZvcm1hdCksXG4gICAgICBlcG9jaDogbW9tZW50KHRoaXMuZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlcikudmFsdWVPZigpXG4gICAgfTtcbiAgfVxuXG4gIGVtaXRUaW1lUmFuZ2UoZGF0YTogSVRpbWVSYW5nZSk6IHZvaWQge1xuICAgIHRoaXMudGltZVJhbmdlRW1pdHRlci5lbWl0KGRhdGEpO1xuICB9XG5cbiAgLy9oYW5kbGVycyBjYXRjaCB0aGUgZW1pdHRlZCB2YWx1ZXMgYW5kIHJ1biB2YWxpZGF0aW9uXG4gIHN0YXJ0UGlja2VySGFuZGxlcih0aW1lOiBJVGltZSk6IHZvaWQge1xuICAgIHRoaXMuc3RhcnRUaW1lID0gdGltZTtcbiAgICB0aGlzLnJhbmdlVmFsaWRpdHkgPSB0cnVlO1xuICAgIC8vIGlmIHRoZSBzdGFydCB0aW1lIGNoYW5nZXMgYW5kIHRoZSBzdGFydCBkYXRlIGlzIHRoZSBzYW1lIGFzIHRoZSBlbmQgZGF0ZVxuICAgIC8vIGFuZCB0aGUgc3RhcnQgdGltZSA+PSAgZW5kIHRpbWVcbiAgICAvLyB1cGRhdGUgdGhlIGZpcnN0IGludGVydmFsIG9mIGVuZCBwaWNrZXIgYWNjb3JkaW5nIHRvIHRoZSB0aW1lIHNldCBpbiBzdGFydCBwaWNrZXJcbiAgICBpZiAodGhpcy5zdGFydERhdGUgPT09IHRoaXMuZW5kRGF0ZSkge1xuICAgICAgbGV0IG1pbnV0ZXMgPSBtb21lbnQodGhpcy5zdGFydFRpbWUudGltZSwgdGhpcy50aW1lRm9ybWF0KS5taW51dGVzKCk7XG4gICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5pbnRlcnZhbCAtIChtaW51dGVzICUgdGhpcy5pbnRlcnZhbCk7XG4gICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSBtb21lbnQoYCR7dGhpcy5zdGFydERhdGV9ICR7dGhpcy5zdGFydFRpbWUudGltZX1gLCBgJ0RELU1NLVlZWVknICR7dGhpcy50aW1lRm9ybWF0fWApXG4gICAgICAgIC5hZGQob2Zmc2V0LCBcIm1cIilcbiAgICAgICAgLnZhbHVlT2YoKTtcblxuICAgICAgLy8gaWYgdGhlIGZpcnN0IGludGVydmFsID09IDEyOjAwYW0sIHNldCBpdCBhcyAxMTo1OXBtXG4gICAgICBjb25zdCBpbnRlcnZhbEFzU3RyaW5nID0gbW9tZW50KHRoaXMuZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlcikuZm9ybWF0KHRoaXMudGltZUZvcm1hdCk7XG4gICAgICBjb25zdCBlbmRPZkRheUFzU3RyaW5nID0gbW9tZW50KG1vbWVudChgJHt0aGlzLnN0YXJ0RGF0ZX1gLCBgREQtTU0tWVlZWSAke3RoaXMudGltZUZvcm1hdH1gKS5lbmRPZihcImRcIikuYWRkKDEsIFwibVwiKSkuZm9ybWF0KHRoaXMudGltZUZvcm1hdCk7XG4gICAgICBpZiAoaW50ZXJ2YWxBc1N0cmluZyA9PT0gZW5kT2ZEYXlBc1N0cmluZykge1xuICAgICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSBtb21lbnQoYCR7dGhpcy5zdGFydERhdGV9ICR7dGhpcy5zdGFydFRpbWUudGltZX1gLCBgJ0RELU1NLVlZWVknICR7dGhpcy50aW1lRm9ybWF0fWApLmVuZE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB2YWxpZGl0eSA9XG4gICAgICAgIHRoaXMuY2hlY2tUaW1lVmFsaWRpdHkodGhpcy5zdGFydFRpbWUudGltZS50cmltKCksIHRoaXMuc3RhcnREYXRlRXBvY2gpICYmXG4gICAgICAgIHRoaXMuY2hlY2tUaW1lVmFsaWRpdHkodGhpcy5lbmRUaW1lLnRpbWUudHJpbSgpLCB0aGlzLmVuZERhdGVFcG9jaCk7XG5cbiAgICAgICAgdGhpcy5yYW5nZVZhbGlkYXRpb24odmFsaWRpdHkpO1xuICAgICAgICB0aGlzLmVtaXRUaW1lUmFuZ2Uoe1xuICAgICAgICAgIHZhbGlkOiB2YWxpZGl0eSAmJiB0aGlzLnJhbmdlVmFsaWRpdHksXG4gICAgICAgICAgc3RhcnRUaW1lOiB0aGlzLnN0YXJ0VGltZS50aW1lLFxuICAgICAgICAgIGVuZFRpbWU6IHRoaXMuZW5kVGltZS50aW1lLFxuICAgICAgICAgIHN0YXJ0RXBvY2g6IG1vbWVudChgJHt0aGlzLnN0YXJ0RGF0ZX0gJHt0aGlzLnN0YXJ0VGltZS50aW1lfWAsIGBERC1NTS1ZWVlZICR7dGhpcy50aW1lRm9ybWF0fWApLnZhbHVlT2YoKSxcbiAgICAgICAgICBlbmRFcG9jaDogbW9tZW50KGAke3RoaXMuZW5kRGF0ZX0gJHt0aGlzLmVuZFRpbWUudGltZX1gLCBgREQtTU0tWVlZWSAke3RoaXMudGltZUZvcm1hdH1gKS52YWx1ZU9mKClcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy50cmlnZ2VyQ2hhbmdlID0gIXRoaXMudHJpZ2dlckNoYW5nZTtcbiAgfVxuXG4gIGVuZFBpY2tlckhhbmRsZXIodGltZTogSVRpbWUpOiB2b2lkIHtcbiAgICB0aGlzLmVuZFRpbWUgPSB0aW1lO1xuXG4gICAgY29uc3QgdmFsaWRpdHkgPVxuICAgICAgdGhpcy5jaGVja1RpbWVWYWxpZGl0eSh0aGlzLnN0YXJ0VGltZS50aW1lLnRyaW0oKSwgdGhpcy5zdGFydERhdGVFcG9jaCkgJiYgdGhpcy5jaGVja1RpbWVWYWxpZGl0eSh0aGlzLmVuZFRpbWUudGltZS50cmltKCksIHRoaXMuZW5kRGF0ZUVwb2NoKTtcblxuICAgIHRoaXMucmFuZ2VWYWxpZGF0aW9uKHZhbGlkaXR5KTtcbiAgICB0aGlzLmVtaXRUaW1lUmFuZ2Uoe1xuICAgICAgdmFsaWQ6IHZhbGlkaXR5ICYmIHRoaXMucmFuZ2VWYWxpZGl0eSxcbiAgICAgIHN0YXJ0VGltZTogdGhpcy5zdGFydFRpbWUudGltZSxcbiAgICAgIGVuZFRpbWU6IHRoaXMuZW5kVGltZS50aW1lLFxuICAgICAgc3RhcnRFcG9jaDogbW9tZW50KGAke3RoaXMuc3RhcnREYXRlfSAke3RoaXMuc3RhcnRUaW1lLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLnRpbWVGb3JtYXR9YCkudmFsdWVPZigpLFxuICAgICAgZW5kRXBvY2g6IG1vbWVudChgJHt0aGlzLmVuZERhdGV9ICR7dGhpcy5lbmRUaW1lLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLnRpbWVGb3JtYXR9YCkudmFsdWVPZigpXG4gICAgfSk7XG4gIH1cblxuICBjaGVja1RpbWVWYWxpZGl0eSh0aW1lOiBzdHJpbmcsIGRhdGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IFJFMTIgPSAvXigoWzBdWzEtOV18MVswLTJdKTooWzAtNV1bMC05XSkoICk/KGFtfHBtfEFNfFBNKSkkL2k7XG4gICAgY29uc3QgUkUyNCA9IC9eKFswMV1bMC05XXwyWzAtM10pOlswLTVdWzAtOV0kLztcbiAgICBjb25zdCBSRSA9IHRoaXMuY2xvY2tGb3JtYXQgPT09IDEyID8gUkUxMiA6IFJFMjQ7XG5cbiAgICBjb25zdCB0aW1lTW9tZW50ID0gbW9tZW50KGAke21vbWVudChkYXRlKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpfSAke3RpbWV9YCwgYCdERC1NTS1ZWVlZJyAke3RoaXMudGltZUZvcm1hdH1gKTtcbiAgICBsZXQgZmxhZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gaWYgdGhlIGZpcnN0IGludGVydmFsIGlzIHNldCB0byB0aGUgc3RhcnQgb2YgdGhlIGRheVxuICAgIC8vIHRoZW4gd2UgZG9uJ3QgY2hlY2sgaXRzIHZhbGlkaXR5IGFnYWluc3QgdGhlIGN1cnJlbnQgdGltZVxuICAgIGlmICgodGhpcy5naXZlblN0YXJ0VGltZSAmJiB0aGlzLmdpdmVuRW5kVGltZSkgfHwgKHRoaXMuc3RhcnREYXRlICE9PSB0aGlzLmVuZERhdGUgJiYgdGhpcy5zdGFydERhdGUgIT09IHRoaXMuY3VyckRhdGUpKSB7XG4gICAgICBmbGFnID0gdGltZS5tYXRjaChSRSkgPyB0cnVlIDogZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZsYWcgPSB0aW1lLm1hdGNoKFJFKSAmJiB0aW1lTW9tZW50LmRpZmYobW9tZW50KCksIFwibVwiKSA+PSAwID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBmbGFnO1xuICB9XG5cbiAgLy8gdmFsaWRhdGVzIGVuZCBwaWNrZXIncyBpbnB1dCBhY2NvcmRpbmcgdG8gdGhlIHN0YXJ0IHBpY2tlcidzIGlucHV0XG4gIHJhbmdlVmFsaWRhdGlvbih2YWxpZGl0eTogYm9vbGVhbikge1xuICAgIGlmICh2YWxpZGl0eSAmJiB0aGlzLnN0YXJ0RGF0ZSA9PT0gdGhpcy5lbmREYXRlKSB7XG4gICAgICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudCh0aGlzLnN0YXJ0VGltZS50aW1lLCB0aGlzLnRpbWVGb3JtYXQpO1xuICAgICAgY29uc3QgZW5kTW9tZW50ID0gbW9tZW50KHRoaXMuZW5kVGltZS50aW1lLCB0aGlzLnRpbWVGb3JtYXQpO1xuICAgICAgdGhpcy5yYW5nZVZhbGlkaXR5ID0gZW5kTW9tZW50LmRpZmYoc3RhcnRNb21lbnQsIFwibVwiKSA+PSAxID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxufVxuIl19
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXJhbmdlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RpbWVyYW5nZXBpY2tlci90aW1lcmFuZ2VwaWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQVExQyxNQUFNLE9BQU8sd0JBQXdCO0lBNEJuQyxZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQTNCakMsZUFBVSxHQUFXLE9BQU8sQ0FBQztRQUU3QixXQUFNLEdBQVcsTUFBTSxDQUFDO1FBQ3hCLGFBQVEsR0FBVyxjQUFjLENBQUM7UUFDbEMsbUJBQWMsR0FBVyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlELGlCQUFZLEdBQVcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUc1RCxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ3RCLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBQzVCLGNBQVMsR0FBZSxLQUFLLENBQUM7UUFDOUIsUUFBRyxHQUFXLE1BQU0sQ0FBQztRQUVwQixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBTTVELGdDQUEyQixHQUFXLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pELDhCQUF5QixHQUFXLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBR3ZELGtCQUFhLEdBQVks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LE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUMxRSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQzs7O1lBL01GLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQix3bENBQStDOzthQUVoRDs7O1lBUjBCLGlCQUFpQjs7O3lCQVV6QyxLQUFLOzRCQUNMLEtBQUs7cUJBQ0wsS0FBSzt1QkFDTCxLQUFLOzZCQUNMLEtBQUs7MkJBQ0wsS0FBSzs2QkFDTCxLQUFLOzJCQUNMLEtBQUs7MEJBQ0wsS0FBSzt1QkFDTCxLQUFLOzBCQUNMLEtBQUs7d0JBQ0wsS0FBSztrQkFDTCxLQUFLOytCQUVMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IElUaW1lUmFuZ2UsIElUaW1lLCBURGlyZWN0aW9uIH0gZnJvbSBcIi4vdGltZXJhbmdlLm5hbWVzcGFjZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLXRpbWVyYW5nZXBpY2tlclwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3RpbWVyYW5nZXBpY2tlci5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vdGltZXJhbmdlcGlja2VyLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVSYW5nZVBpY2tlckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGlucHV0V2lkdGg6IHN0cmluZyA9IFwiMTAwcHhcIjtcbiAgQElucHV0KCkgZHJvcGRvd25XaWR0aD86IHN0cmluZztcbiAgQElucHV0KCkgaGVpZ2h0OiBzdHJpbmcgPSBcIjQ2cHhcIjtcbiAgQElucHV0KCkgdGltZXpvbmU6IHN0cmluZyA9IFwiQXNpYS9Lb2xrYXRhXCI7XG4gIEBJbnB1dCgpIHN0YXJ0RGF0ZUVwb2NoOiBudW1iZXIgPSBtb21lbnQoKS50eih0aGlzLnRpbWV6b25lKS52YWx1ZU9mKCk7XG4gIEBJbnB1dCgpIGVuZERhdGVFcG9jaDogbnVtYmVyID0gbW9tZW50KCkudHoodGhpcy50aW1lem9uZSkudmFsdWVPZigpO1xuICBASW5wdXQoKSBnaXZlblN0YXJ0VGltZTogbnVtYmVyO1xuICBASW5wdXQoKSBnaXZlbkVuZFRpbWU6IG51bWJlcjtcbiAgQElucHV0KCkgY2xvY2tGb3JtYXQ6IG51bWJlciA9IDEyO1xuICBASW5wdXQoKSBpbnRlcnZhbDogbnVtYmVyID0gMTU7XG4gIEBJbnB1dCgpIHNob3dUb29sdGlwOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgZGlyZWN0aW9uOiBURGlyZWN0aW9uID0gJ3Jvdyc7XG4gIEBJbnB1dCgpIGdhcDogc3RyaW5nID0gJzFyZW0nO1xuXG4gIEBPdXRwdXQoKSB0aW1lUmFuZ2VFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxJVGltZVJhbmdlPigpO1xuXG4gIHN0YXJ0RGF0ZSE6IHN0cmluZztcbiAgZW5kRGF0ZSE6IHN0cmluZztcbiAgY3VyckRhdGUhOiBzdHJpbmc7XG4gIHRpbWVGb3JtYXQhOiBzdHJpbmc7XG4gIGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlcjogbnVtYmVyID0gbW9tZW50KCkudmFsdWVPZigpO1xuICBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyOiBudW1iZXIgPSBtb21lbnQoKS52YWx1ZU9mKCk7XG4gIHN0YXJ0VGltZSE6IElUaW1lO1xuICBlbmRUaW1lITogSVRpbWU7XG4gIHJhbmdlVmFsaWRpdHk6IGJvb2xlYW4gPSB0cnVlO1xuICB0cmlnZ2VyQ2hhbmdlOiBib29sZWFuID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdPbkluaXQoKSB7fVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMudGltZUZvcm1hdCA9IHRoaXMuY2xvY2tGb3JtYXQgPT09IDEyID8gXCJoaDptbSBhXCIgOiBcIkhIOm1tXCI7XG4gICAgbW9tZW50LnR6LnNldERlZmF1bHQodGhpcy50aW1lem9uZSk7XG4gICAgdGhpcy5zdGFydERhdGUgPSBtb21lbnQodGhpcy5zdGFydERhdGVFcG9jaCkuZm9ybWF0KFwiREQtTU0tWVlZWVwiKTtcbiAgICB0aGlzLmVuZERhdGUgPSBtb21lbnQodGhpcy5lbmREYXRlRXBvY2gpLmZvcm1hdChcIkRELU1NLVlZWVlcIik7XG4gICAgdGhpcy5jdXJyRGF0ZSA9IG1vbWVudCgpLmZvcm1hdChcIkRELU1NLVlZWVlcIik7XG4gICAgdGhpcy5zZXRGaXJzdEludGVydmFscygpO1xuICB9XG5cbiAgLy8gY2FsY3VsYXRlIHRoZSBmaXJzdCBpbnRlcnZhbCBvZiB0aGUgcGlja2VyXG4gIHNldEZpcnN0SW50ZXJ2YWxzKCk6IHZvaWQge1xuICAgIGNvbnN0IG1pbnV0ZXMgPSBtb21lbnQoKS5taW51dGVzKCk7XG4gICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5pbnRlcnZhbCAtIChtaW51dGVzICUgdGhpcy5pbnRlcnZhbCk7XG5cbiAgICAvLyBzdGFydCBkYXRlLCAyMiBNQVkgPT09ICBjdXJyZW50IGRhdGUsIDIyIE1BWVxuICAgIGlmKCB0aGlzLnN0YXJ0RGF0ZSA9PT0gdGhpcy5jdXJyRGF0ZSApe1xuICAgICAgY29uc29sZS5sb2coXCJzdGFydCBkYXRlIGVwb2NoOlwiLHRoaXMuc3RhcnREYXRlRXBvY2gpO1xuICAgICAgY29uc3QgY3VycmVudFRpbWUgPSBtb21lbnQoKS52YWx1ZU9mKCk7XG5cbiAgICAgIC8vIHN0YXJ0IGRhdGUsIDIyIE1BWSAgPT09IGN1cnJlbnQgZGF0ZSwgMjIgTUFZID09PSBlbmQgZGF0ZSwgMjIgTUFZXG4gICAgICBpZih0aGlzLnN0YXJ0RGF0ZSA9PT0gdGhpcy5lbmREYXRlKXtcbiAgICAgICAgY29uc29sZS5sb2coXCJDdXJyZW50IHRpbWU6XCIsY3VycmVudFRpbWUpO1xuICAgICAgICBjb25zb2xlLmxvZyhcImVuZC1pbnRlcnZhbDpcIixtb21lbnQodGhpcy5zdGFydERhdGVFcG9jaCkuZW5kT2YoXCJkXCIpLnN1YnRyYWN0KHRoaXMuaW50ZXJ2YWwsXCJtXCIpLnZhbHVlT2YoKSk7XG4gICAgICAgIC8vIGN1cnJlbnQgdGltZSBpcyBpbiBsYXN0IGludGVydmFsXG4gICAgICAgIGlmKCBjdXJyZW50VGltZSA+PSBtb21lbnQodGhpcy5zdGFydERhdGVFcG9jaCkuZW5kT2YoXCJkXCIpLnN1YnRyYWN0KHRoaXMuaW50ZXJ2YWwsXCJtXCIpLnZhbHVlT2YoKSl7XG4gICAgICAgICAgdGhpcy5maXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBjdXJyZW50VGltZTtcbiAgICAgICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSAgbW9tZW50KHRoaXMuZW5kRGF0ZUVwb2NoKS5lbmRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKFwiZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyXCIsdGhpcy5maXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKFwiZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlclwiLHRoaXMuZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlcik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY3VycmVudCB0aW1lIGlzbid0IGluIGxhc3QgaW50ZXJ2YWxcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdGhpcy5maXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBtb21lbnQoKS5hZGQob2Zmc2V0LCBcIm1cIikudmFsdWVPZigpO1xuICAgICAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9ICBtb21lbnQoKS5hZGQob2Zmc2V0LCBcIm1cIikuYWRkKHRoaXMuaW50ZXJ2YWwsIFwibVwiKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICAgIH0gXG4gICAgICAvLyBzdGFydCBkYXRlLCAyMiBNQVkgPT09IGN1cnJlbnQgZGF0ZSwgMjIgTUFZICE9PSBlbmQgZGF0ZSwgMzAgTUFZXG4gICAgICBlbHNlIHtcbiAgICAgICAgLy8gY3VycmVudCB0aW1lIGlzIGluIGxhc3QgaW50ZXJ2YWxcbiAgICAgICAgaWYoIGN1cnJlbnRUaW1lID49IG1vbWVudCh0aGlzLnN0YXJ0RGF0ZUVwb2NoKS5lbmRPZihcImRcIikuc3VidHJhY3QodGhpcy5pbnRlcnZhbCxcIm1cIikudmFsdWVPZigpKXtcbiAgICAgICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IGN1cnJlbnRUaW1lO1xuICAgICAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9ICBtb21lbnQodGhpcy5lbmREYXRlRXBvY2gpLmVuZE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY3VycmVudCB0aW1lIGlzbid0IGluIGxhc3QgaW50ZXJ2YWxcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdGhpcy5maXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBtb21lbnQoKS5hZGQob2Zmc2V0LCBcIm1cIikudmFsdWVPZigpO1xuICAgICAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9ICBtb21lbnQodGhpcy5lbmREYXRlRXBvY2gpLnZhbHVlT2YoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBzdGFydCBkYXRlLCAzMCBNQVkgIT09IGN1cnJlbnQgZGF0ZSwgMjIgTUFZXG4gICAgZWxzZSB7XG4gICAgICAvLyBzdGFydCBkYXRlID09PSBlbmQgRGF0ZVxuICAgICAgaWYoIHRoaXMuc3RhcnREYXRlID09PSB0aGlzLmVuZERhdGUpe1xuICAgICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IG1vbWVudCh0aGlzLnN0YXJ0RGF0ZUVwb2NoKS5zdGFydE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9ICBtb21lbnQodGhpcy5lbmREYXRlRXBvY2gpLmFkZCh0aGlzLmludGVydmFsLCBcIm1cIikudmFsdWVPZigpO1xuICAgICAgfSBcbiAgICAgIC8vIHN0YXJ0IGRhdGUgIT09IGVuZCBkYXRlXG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5maXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBtb21lbnQodGhpcy5zdGFydERhdGVFcG9jaCkuc3RhcnRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSAgbW9tZW50KHRoaXMuc3RhcnREYXRlRXBvY2gpLnN0YXJ0T2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIGlmKHRoaXMuZ2l2ZW5TdGFydFRpbWUpXG4gICAgICB0aGlzLmZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IHRoaXMuZ2l2ZW5TdGFydFRpbWU7XG4gICBcbiAgICBpZih0aGlzLmdpdmVuRW5kVGltZSlcbiAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IHRoaXMuZ2l2ZW5FbmRUaW1lO1xuICAgICAgXG4gICAgdGhpcy5zdGFydFRpbWUgPSB7XG4gICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgIHRpbWU6IG1vbWVudCh0aGlzLmZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlcikuZm9ybWF0KHRoaXMudGltZUZvcm1hdCksXG4gICAgICBlcG9jaDogbW9tZW50KHRoaXMuZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyKS52YWx1ZU9mKClcbiAgICB9O1xuXG4gICAgdGhpcy5lbmRUaW1lID0ge1xuICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICB0aW1lOiBtb21lbnQodGhpcy5maXJzdEludGVydmFsRm9yRW5kUGlja2VyKS5mb3JtYXQodGhpcy50aW1lRm9ybWF0KSxcbiAgICAgIGVwb2NoOiBtb21lbnQodGhpcy5maXJzdEludGVydmFsRm9yRW5kUGlja2VyKS52YWx1ZU9mKClcbiAgICB9O1xuICB9XG5cbiAgZW1pdFRpbWVSYW5nZShkYXRhOiBJVGltZVJhbmdlKTogdm9pZCB7XG4gICAgdGhpcy50aW1lUmFuZ2VFbWl0dGVyLmVtaXQoZGF0YSk7XG4gIH1cblxuICAvL2hhbmRsZXJzIGNhdGNoIHRoZSBlbWl0dGVkIHZhbHVlcyBhbmQgcnVuIHZhbGlkYXRpb25cbiAgc3RhcnRQaWNrZXJIYW5kbGVyKHRpbWU6IElUaW1lKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydFRpbWUgPSB0aW1lO1xuICAgIHRoaXMucmFuZ2VWYWxpZGl0eSA9IHRydWU7XG4gICAgLy8gaWYgdGhlIHN0YXJ0IHRpbWUgY2hhbmdlcyBhbmQgdGhlIHN0YXJ0IGRhdGUgaXMgdGhlIHNhbWUgYXMgdGhlIGVuZCBkYXRlXG4gICAgLy8gYW5kIHRoZSBzdGFydCB0aW1lID49ICBlbmQgdGltZVxuICAgIC8vIHVwZGF0ZSB0aGUgZmlyc3QgaW50ZXJ2YWwgb2YgZW5kIHBpY2tlciBhY2NvcmRpbmcgdG8gdGhlIHRpbWUgc2V0IGluIHN0YXJ0IHBpY2tlclxuICAgIGlmICh0aGlzLnN0YXJ0RGF0ZSA9PT0gdGhpcy5lbmREYXRlKSB7XG4gICAgICBsZXQgbWludXRlcyA9IG1vbWVudCh0aGlzLnN0YXJ0VGltZS50aW1lLCB0aGlzLnRpbWVGb3JtYXQpLm1pbnV0ZXMoKTtcbiAgICAgIGxldCBvZmZzZXQgPSB0aGlzLmludGVydmFsIC0gKG1pbnV0ZXMgJSB0aGlzLmludGVydmFsKTtcbiAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IG1vbWVudChgJHt0aGlzLnN0YXJ0RGF0ZX0gJHt0aGlzLnN0YXJ0VGltZS50aW1lfWAsIGAnREQtTU0tWVlZWScgJHt0aGlzLnRpbWVGb3JtYXR9YClcbiAgICAgICAgLmFkZChvZmZzZXQsIFwibVwiKVxuICAgICAgICAudmFsdWVPZigpO1xuXG4gICAgICAvLyBpZiB0aGUgZmlyc3QgaW50ZXJ2YWwgPT0gMTI6MDBhbSwgc2V0IGl0IGFzIDExOjU5cG1cbiAgICAgIGNvbnN0IGludGVydmFsQXNTdHJpbmcgPSBtb21lbnQodGhpcy5maXJzdEludGVydmFsRm9yRW5kUGlja2VyKS5mb3JtYXQodGhpcy50aW1lRm9ybWF0KTtcbiAgICAgIGNvbnN0IGVuZE9mRGF5QXNTdHJpbmcgPSBtb21lbnQobW9tZW50KGAke3RoaXMuc3RhcnREYXRlfWAsIGBERC1NTS1ZWVlZICR7dGhpcy50aW1lRm9ybWF0fWApLmVuZE9mKFwiZFwiKS5hZGQoMSwgXCJtXCIpKS5mb3JtYXQodGhpcy50aW1lRm9ybWF0KTtcbiAgICAgIGlmIChpbnRlcnZhbEFzU3RyaW5nID09PSBlbmRPZkRheUFzU3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IG1vbWVudChgJHt0aGlzLnN0YXJ0RGF0ZX0gJHt0aGlzLnN0YXJ0VGltZS50aW1lfWAsIGAnREQtTU0tWVlZWScgJHt0aGlzLnRpbWVGb3JtYXR9YCkuZW5kT2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZhbGlkaXR5ID1cbiAgICAgICAgdGhpcy5jaGVja1RpbWVWYWxpZGl0eSh0aGlzLnN0YXJ0VGltZS50aW1lLnRyaW0oKSwgdGhpcy5zdGFydERhdGVFcG9jaCkgJiZcbiAgICAgICAgdGhpcy5jaGVja1RpbWVWYWxpZGl0eSh0aGlzLmVuZFRpbWUudGltZS50cmltKCksIHRoaXMuZW5kRGF0ZUVwb2NoKTtcblxuICAgICAgICB0aGlzLnJhbmdlVmFsaWRhdGlvbih2YWxpZGl0eSk7XG4gICAgICAgIHRoaXMuZW1pdFRpbWVSYW5nZSh7XG4gICAgICAgICAgdmFsaWQ6IHZhbGlkaXR5ICYmIHRoaXMucmFuZ2VWYWxpZGl0eSxcbiAgICAgICAgICBzdGFydFRpbWU6IHRoaXMuc3RhcnRUaW1lLnRpbWUsXG4gICAgICAgICAgZW5kVGltZTogdGhpcy5lbmRUaW1lLnRpbWUsXG4gICAgICAgICAgc3RhcnRFcG9jaDogbW9tZW50KGAke3RoaXMuc3RhcnREYXRlfSAke3RoaXMuc3RhcnRUaW1lLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLnRpbWVGb3JtYXR9YCkudmFsdWVPZigpLFxuICAgICAgICAgIGVuZEVwb2NoOiBtb21lbnQoYCR7dGhpcy5lbmREYXRlfSAke3RoaXMuZW5kVGltZS50aW1lfWAsIGBERC1NTS1ZWVlZICR7dGhpcy50aW1lRm9ybWF0fWApLnZhbHVlT2YoKVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnRyaWdnZXJDaGFuZ2UgPSAhdGhpcy50cmlnZ2VyQ2hhbmdlO1xuICB9XG5cbiAgZW5kUGlja2VySGFuZGxlcih0aW1lOiBJVGltZSk6IHZvaWQge1xuICAgIHRoaXMuZW5kVGltZSA9IHRpbWU7XG5cbiAgICBjb25zdCB2YWxpZGl0eSA9XG4gICAgICB0aGlzLmNoZWNrVGltZVZhbGlkaXR5KHRoaXMuc3RhcnRUaW1lLnRpbWUudHJpbSgpLCB0aGlzLnN0YXJ0RGF0ZUVwb2NoKSAmJiB0aGlzLmNoZWNrVGltZVZhbGlkaXR5KHRoaXMuZW5kVGltZS50aW1lLnRyaW0oKSwgdGhpcy5lbmREYXRlRXBvY2gpO1xuXG4gICAgdGhpcy5yYW5nZVZhbGlkYXRpb24odmFsaWRpdHkpO1xuICAgIHRoaXMuZW1pdFRpbWVSYW5nZSh7XG4gICAgICB2YWxpZDogdmFsaWRpdHkgJiYgdGhpcy5yYW5nZVZhbGlkaXR5LFxuICAgICAgc3RhcnRUaW1lOiB0aGlzLnN0YXJ0VGltZS50aW1lLFxuICAgICAgZW5kVGltZTogdGhpcy5lbmRUaW1lLnRpbWUsXG4gICAgICBzdGFydEVwb2NoOiBtb21lbnQoYCR7dGhpcy5zdGFydERhdGV9ICR7dGhpcy5zdGFydFRpbWUudGltZX1gLCBgREQtTU0tWVlZWSAke3RoaXMudGltZUZvcm1hdH1gKS52YWx1ZU9mKCksXG4gICAgICBlbmRFcG9jaDogbW9tZW50KGAke3RoaXMuZW5kRGF0ZX0gJHt0aGlzLmVuZFRpbWUudGltZX1gLCBgREQtTU0tWVlZWSAke3RoaXMudGltZUZvcm1hdH1gKS52YWx1ZU9mKClcbiAgICB9KTtcbiAgfVxuXG4gIGNoZWNrVGltZVZhbGlkaXR5KHRpbWU6IHN0cmluZywgZGF0ZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgUkUxMiA9IC9eKChbMF1bMS05XXwxWzAtMl0pOihbMC01XVswLTldKSggKT8oYW18cG18QU18UE0pKSQvaTtcbiAgICBjb25zdCBSRTI0ID0gL14oWzAxXVswLTldfDJbMC0zXSk6WzAtNV1bMC05XSQvO1xuICAgIGNvbnN0IFJFID0gdGhpcy5jbG9ja0Zvcm1hdCA9PT0gMTIgPyBSRTEyIDogUkUyNDtcblxuICAgIGNvbnN0IHRpbWVNb21lbnQgPSBtb21lbnQoYCR7bW9tZW50KGRhdGUpLmZvcm1hdChcIkRELU1NLVlZWVlcIil9ICR7dGltZX1gLCBgJ0RELU1NLVlZWVknICR7dGhpcy50aW1lRm9ybWF0fWApO1xuICAgIGxldCBmbGFnOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBpZiB0aGUgZmlyc3QgaW50ZXJ2YWwgaXMgc2V0IHRvIHRoZSBzdGFydCBvZiB0aGUgZGF5XG4gICAgLy8gdGhlbiB3ZSBkb24ndCBjaGVjayBpdHMgdmFsaWRpdHkgYWdhaW5zdCB0aGUgY3VycmVudCB0aW1lXG4gICAgaWYgKCh0aGlzLmdpdmVuU3RhcnRUaW1lICYmIHRoaXMuZ2l2ZW5FbmRUaW1lKSB8fCAodGhpcy5zdGFydERhdGUgIT09IHRoaXMuZW5kRGF0ZSAmJiB0aGlzLnN0YXJ0RGF0ZSAhPT0gdGhpcy5jdXJyRGF0ZSkpIHtcbiAgICAgIGZsYWcgPSB0aW1lLm1hdGNoKFJFKSA/IHRydWUgOiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmxhZyA9IHRpbWUubWF0Y2goUkUpICYmIHRpbWVNb21lbnQuZGlmZihtb21lbnQoKSwgXCJtXCIpID49IDAgPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZsYWc7XG4gIH1cblxuICAvLyB2YWxpZGF0ZXMgZW5kIHBpY2tlcidzIGlucHV0IGFjY29yZGluZyB0byB0aGUgc3RhcnQgcGlja2VyJ3MgaW5wdXRcbiAgcmFuZ2VWYWxpZGF0aW9uKHZhbGlkaXR5OiBib29sZWFuKSB7XG4gICAgaWYgKHZhbGlkaXR5ICYmIHRoaXMuc3RhcnREYXRlID09PSB0aGlzLmVuZERhdGUpIHtcbiAgICAgIGNvbnN0IHN0YXJ0TW9tZW50ID0gbW9tZW50KHRoaXMuc3RhcnRUaW1lLnRpbWUsIHRoaXMudGltZUZvcm1hdCk7XG4gICAgICBjb25zdCBlbmRNb21lbnQgPSBtb21lbnQodGhpcy5lbmRUaW1lLnRpbWUsIHRoaXMudGltZUZvcm1hdCk7XG4gICAgICB0aGlzLnJhbmdlVmFsaWRpdHkgPSBlbmRNb21lbnQuZGlmZihzdGFydE1vbWVudCwgXCJtXCIpID49IDEgPyB0cnVlIDogZmFsc2U7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -44,6 +44,7 @@ class MisInputComponent {
44
44
  this.size = "sm";
45
45
  this.noHints = false;
46
46
  this.hasError = false; // show input in error state
47
+ this.isMandatory = false; // show input as mandatory
47
48
  this.inputValidity = true;
48
49
  }
49
50
  set formInput(input) {
@@ -65,7 +66,7 @@ class MisInputComponent {
65
66
  MisInputComponent.decorators = [
66
67
  { type: Component, args: [{
67
68
  selector: "mis-input",
68
- template: "<div\n [class]=\"'input-container ' + size\"\n [ngClass]=\"{\n rounded: type === 'rounded',\n floating: type === 'floating',\n 'has-error': !inputValidity || hasError,\n 'no-hint': noHints,\n 'mis-disabled': inputCtrl?.disabled\n }\"\n>\n <div class=\"input-wrapper\">\n <ng-content select=\"[mis-input-icon]\"></ng-content>\n <div class=\"mis-input\">\n <ng-content select=\"input\"></ng-content>\n <span class=\"mis-placeholder\">{{ placeholder }}</span>\n </div>\n <ng-content select=\"[mis-input-act]\"></ng-content>\n </div>\n <ng-content select=\"[mis-input-hint]\"></ng-content>\n <ng-content select=\"[mis-input-error]\"></ng-content>\n</div>\n",
69
+ template: "<div\n [class]=\"'input-container ' + size\"\n [ngClass]=\"{\n rounded: type === 'rounded',\n floating: type === 'floating',\n 'has-error': !inputValidity || hasError,\n 'no-hint': noHints,\n 'mis-disabled': inputCtrl?.disabled\n }\"\n>\n <div class=\"input-wrapper\">\n <ng-content select=\"[mis-input-icon]\"></ng-content>\n <div class=\"mis-input\">\n <ng-content select=\"input\"></ng-content>\n <span class=\"mis-placeholder\">{{ placeholder }}<span *ngIf=\"isMandatory\" style=\"color: red;\">*</span></span>\n </div>\n <ng-content select=\"[mis-input-act]\"></ng-content>\n </div>\n <ng-content select=\"[mis-input-hint]\"></ng-content>\n <ng-content select=\"[mis-input-error]\"></ng-content>\n</div>\n",
69
70
  styles: [":root{--pmry-200:#99baf7;--pmry-100:#cbddfb;--pmry-500:#0937b2;--pmry-400:#3c68d0;--pmry-600:#062a99;--pmry-700:#041f80;--pmry-300:#638fe7;--pmry-800:#021567;--pmry-900:#010f55;--sec-d-purple:#40447f;--sec-maroon:#6b034e;--sec-mud-red:#b23600;--sec-orange:#ed711c;--sec-purple:#815fd5;--sec-teal:#10adae;--sec-yellow:#d4900c;--sec-green:#547f40;--sec-bright-green:#27d22e;--sec-dark-teal:#035f6b;--sec-chocolate:#7c2f33;--sec-rube-pink:#c13d6d;--sec-cerulean:#0087b2;--sem-error:#b00020;--sem-info:#0091ff;--sem-warning:#ff9d00;--sem-success:#38af49;--grey-bg-1:#fafafa;--grey-bg:#f5f5f5;--grey-seperators:#e0e0e0;--grey-disabled:#c8cdd3;--grey-hover:#f5f7fc;--grey-pressed:#e6ebf7;--grey-row:#f5f7fc;--dec-light-yellow:#f4e7c3;--dec-light-purple:#dacff9;--dec-light-green:#e4f5e9;--dec-light-green2:#f1fff3;--dec-light-pink:#fae1ea;--dec-:#f4cbc1;--dec-lt-orange:#faefed;--dec-light-blue:#cfecf9;--dec-row-selection:#f1fdf8;--dec-row-selection2:#f2fbff;--dec-row-lines:#d3e1e9;--text-white:#fff;--text-disabled:#929dab;--text-muted:#6a737d;--text-black:#181f33;--MR-solid-blue2:#c8d5f6;--MR-solid-purple:#c9c3fb;--MR-solid-orange:#eeac9f;--MR-solid-green:#acdada;--MR-solid-brown:#e8c8af;--MR-solid-yellow:#ffefc7;--MR-solid-blue:#bbe6ff;--MR-solid-pink:#ffc6f2;--tr-hover:#f0f3fa;--tr-pressed:#dae1f3}.input-container{position:relative;padding-bottom:24px}.input-container.mis-disabled .input-wrapper{pointer-events:none!important}.input-container .input-wrapper{box-sizing:border-box;display:flex;align-items:center;flex-direction:row;flex-wrap:nowrap;transition:all 60ms ease-in;background-color:#fff;padding:3px 16px;gap:16px}.input-container .input-wrapper .mis-input{flex:1 1 auto;z-index:0;position:relative;display:flex;align-items:center}.input-container .input-wrapper input{flex:1 1 auto;border:none;outline:none;height:100%;padding:0;font-family:Lato;font-style:normal;font-weight:400;font-size:16px;height:24px;color:#181f33;background-color:transparent;width:100%;vertical-align:middle}.input-container .input-wrapper input::-moz-placeholder{-moz-transition:all .1s ease-in;transition:all .1s ease-in;opacity:0;transform-origin:left center;color:transparent}.input-container .input-wrapper input:-ms-input-placeholder{-ms-transition:all .1s ease-in;transition:all .1s ease-in;opacity:0;transform-origin:left center;color:transparent}.input-container .input-wrapper input::placeholder{transition:all .1s ease-in;opacity:0;transform-origin:left center;color:transparent}.input-container .input-wrapper .mis-placeholder{position:absolute;font-family:Lato;font-style:normal;font-weight:400;font-size:16px;line-height:24px;color:#6a737d;z-index:-1;transition:all .15s ease-in}.input-container .input-wrapper:focus-within{background-color:#f5f5f5}.input-container .input-wrapper:focus-within{border:1px solid #0937b2}.input-container .input-wrapper [mis-input-act],.input-container .input-wrapper [mis-input-icon]{width:18px;height:18px;color:#6a737d;font-size:24px;line-height:18px}.input-container .input-wrapper [mis-input-act]{cursor:pointer}.input-container.no-hint{padding-bottom:0}.input-container.rounded input{box-sizing:initial}.input-container.rounded.sm input{padding:3px 16px}.input-container.rounded.md input{padding:9px 16px}.input-container.rounded.lg input{padding:15px 16px}.input-container.rounded .input-wrapper{border-radius:4px;border:1px solid #e0e0e0;padding:0}.input-container.rounded .input-wrapper:hover{background-color:#f5f5f5}.input-container.rounded .input-wrapper:focus-within{border:1px solid #0937b2}.input-container.rounded .input-wrapper input:not(:-moz-placeholder-shown)+.mis-placeholder{color:transparent!important}.input-container.rounded .input-wrapper input:not(:-ms-input-placeholder)+.mis-placeholder{color:transparent!important}.input-container.rounded .input-wrapper input:not(:placeholder-shown)+.mis-placeholder{color:transparent!important}.input-container.rounded .input-wrapper .mis-placeholder{margin-left:16px;transition-duration:50ms}.input-container.rounded.has-error .input-wrapper{border:1px solid #b00020!important}.input-container.floating .input-wrapper{padding-top:24px;padding-bottom:7px;border-bottom:1px solid #e0e0e0}.input-container.floating .input-wrapper input:focus+.mis-placeholder{color:#0937b2!important}.input-container.floating .input-wrapper input:not(:-moz-placeholder-shown)+.mis-placeholder{transform:translateY(calc(-100% + 6px))!important;font-size:12px!important;letter-spacing:.2px!important}.input-container.floating .input-wrapper input:not(:-ms-input-placeholder)+.mis-placeholder{transform:translateY(calc(-100% + 6px))!important;font-size:12px!important;letter-spacing:.2px!important}.input-container.floating .input-wrapper input:focus+.mis-placeholder,.input-container.floating .input-wrapper input:not(:placeholder-shown)+.mis-placeholder{transform:translateY(calc(-100% + 6px))!important;font-size:12px!important;letter-spacing:.2px!important}.input-container.floating .input-wrapper:focus-within{border:none;border-bottom:1px solid #0937b2}.input-container.floating .input-wrapper:focus-within input::-moz-placeholder{color:#6a737d;opacity:1;font-size:16px}.input-container.floating .input-wrapper:focus-within input:-ms-input-placeholder{color:#6a737d;opacity:1;font-size:16px}.input-container.floating .input-wrapper:focus-within input::placeholder{color:#6a737d;opacity:1;font-size:16px}.input-container.floating.has-error .input-wrapper{border-bottom:1px solid #b00020!important}.input-container.floating.has-error .input-wrapper .mis-placeholder{color:#b00020!important}.input-container [mis-input-error],.input-container [mis-input-hint]{position:absolute;left:0;right:0;bottom:0;line-height:24px;height:24px;font-size:12px;color:#6a737d;letter-spacing:.2px}.input-container [mis-input-error]{color:#b00020}"]
70
71
  },] }
71
72
  ];
@@ -76,6 +77,7 @@ MisInputComponent.propDecorators = {
76
77
  placeholder: [{ type: Input }],
77
78
  noHints: [{ type: Input }],
78
79
  hasError: [{ type: Input }],
80
+ isMandatory: [{ type: Input }],
79
81
  formInput: [{ type: ContentChild, args: [MisInputDirective,] }]
80
82
  };
81
83
 
@@ -1 +1 @@
1
- {"version":3,"file":"mis-crystal-design-system-input.js","sources":["../../../projects/mis-components/input/directives/input/input.directive.ts","../../../projects/mis-components/input/mis-input.component.ts","../../../projects/mis-components/input/mis-input.module.ts","../../../projects/mis-components/input/mis-crystal-design-system-input.ts"],"sourcesContent":["import { Directive, ElementRef, OnDestroy, OnInit, Optional, Self } from \"@angular/core\";\nimport { NgControl } from \"@angular/forms\";\nimport { ReplaySubject, Subject, Subscription } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\n@Directive({\n // tslint:disable-next-line\n selector: \"input[misInput]\"\n})\nexport class MisInputDirective implements OnInit, OnDestroy {\n constructor(public el: ElementRef, @Self() @Optional() public control: NgControl) {}\n private validityChange: ReplaySubject<boolean> = new ReplaySubject(1);\n validity = this.validityChange.asObservable();\n endObs: Subject<void> = new Subject();\n focus = false;\n hasValue = false;\n\n ngOnInit(): void {\n this.control?.control?.valueChanges.pipe(takeUntil(this.endObs)).subscribe(() => {\n this.validityChange.next(!this.control.control?.invalid);\n });\n this.el.nativeElement.placeholder += \" \";\n }\n ngOnDestroy(): void {\n this.endObs.next();\n this.endObs.complete();\n }\n}\n","import { Component, ContentChild, Input, OnDestroy, OnInit, ViewEncapsulation } from \"@angular/core\";\nimport { AbstractControl } from \"@angular/forms\";\nimport { Subscription } from \"rxjs\";\nimport { MisInputDirective } from \"./directives/input/input.directive\";\n\n@Component({\n selector: \"mis-input\",\n templateUrl: \"./mis-input.component.html\",\n styleUrls: [\"./mis-input.component.scss\"]\n})\nexport class MisInputComponent implements OnInit, OnDestroy {\n @Input() type: \"rounded\" | \"floating\" = \"floating\";\n @Input() size: \"sm\" | \"md\" | \"lg\" = \"sm\";\n @Input() placeholder: string; // floating placeholder text\n @Input() noHints = false;\n @Input() hasError = false; // show input in error state\n @ContentChild(MisInputDirective) set formInput(input: MisInputDirective) {\n if (!this.placeholder) {\n this.placeholder = input?.el.nativeElement.placeholder || \"\";\n }\n this.inputCtrl = input.control?.control;\n this.inputSubscription?.unsubscribe();\n this.inputSubscription = input?.validity.subscribe(res => (this.inputValidity = res));\n this.placeholder += \" \";\n }\n inputCtrl: AbstractControl;\n inputSubscription: Subscription | undefined;\n inputValidity: boolean = true;\n constructor() {}\n\n ngOnInit(): void {}\n ngOnDestroy(): void {\n this.inputSubscription?.unsubscribe();\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { MisInputDirective } from \"./directives/input/input.directive\";\nimport { MisInputComponent } from \"./mis-input.component\";\n\n@NgModule({\n declarations: [MisInputComponent, MisInputDirective],\n imports: [CommonModule, FormsModule],\n exports: [MisInputComponent, MisInputDirective]\n})\nexport class MisInputModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MASa,iBAAiB;IAC5B,YAAmB,EAAc,EAA6B,OAAkB;QAA7D,OAAE,GAAF,EAAE,CAAY;QAA6B,YAAO,GAAP,OAAO,CAAW;QACxE,mBAAc,GAA2B,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;QACtE,aAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;QAC9C,WAAM,GAAkB,IAAI,OAAO,EAAE,CAAC;QACtC,UAAK,GAAG,KAAK,CAAC;QACd,aAAQ,GAAG,KAAK,CAAC;KALmE;IAOpF,QAAQ;;QACN,YAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,0CAAE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;;YACzE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAC,IAAI,CAAC,OAAO,CAAC,OAAO,0CAAE,OAAO,CAAA,CAAC,CAAC;SAC1D,EAAE;QACH,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,IAAI,GAAG,CAAC;KAC1C;IACD,WAAW;QACT,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KACxB;;;YArBF,SAAS,SAAC;;gBAET,QAAQ,EAAE,iBAAiB;aAC5B;;;YARmB,UAAU;YACrB,SAAS,uBASoB,IAAI,YAAI,QAAQ;;;MCAzC,iBAAiB;IAkB5B;QAjBS,SAAI,GAA2B,UAAU,CAAC;QAC1C,SAAI,GAAuB,IAAI,CAAC;QAEhC,YAAO,GAAG,KAAK,CAAC;QAChB,aAAQ,GAAG,KAAK,CAAC;QAY1B,kBAAa,GAAY,IAAI,CAAC;KACd;IAZhB,IAAqC,SAAS,CAAC,KAAwB;;QACrE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,WAAW,GAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,EAAE,CAAC,aAAa,CAAC,WAAW,KAAI,EAAE,CAAC;SAC9D;QACD,IAAI,CAAC,SAAS,SAAG,KAAK,CAAC,OAAO,0CAAE,OAAO,CAAC;QACxC,MAAA,IAAI,CAAC,iBAAiB,0CAAE,WAAW,GAAG;QACtC,IAAI,CAAC,iBAAiB,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,KAAK,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC;KACzB;IAMD,QAAQ,MAAW;IACnB,WAAW;;QACT,MAAA,IAAI,CAAC,iBAAiB,0CAAE,WAAW,GAAG;KACvC;;;YA5BF,SAAS,SAAC;gBACT,QAAQ,EAAE,WAAW;gBACrB,osBAAyC;;aAE1C;;;;mBAEE,KAAK;mBACL,KAAK;0BACL,KAAK;sBACL,KAAK;uBACL,KAAK;wBACL,YAAY,SAAC,iBAAiB;;;MCLpB,cAAc;;;YAL1B,QAAQ,SAAC;gBACR,YAAY,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;gBACpD,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;gBACpC,OAAO,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;aAChD;;;ACVD;;;;;;"}
1
+ {"version":3,"file":"mis-crystal-design-system-input.js","sources":["../../../projects/mis-components/input/directives/input/input.directive.ts","../../../projects/mis-components/input/mis-input.component.ts","../../../projects/mis-components/input/mis-input.module.ts","../../../projects/mis-components/input/mis-crystal-design-system-input.ts"],"sourcesContent":["import { Directive, ElementRef, OnDestroy, OnInit, Optional, Self } from \"@angular/core\";\nimport { NgControl } from \"@angular/forms\";\nimport { ReplaySubject, Subject, Subscription } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\n@Directive({\n // tslint:disable-next-line\n selector: \"input[misInput]\"\n})\nexport class MisInputDirective implements OnInit, OnDestroy {\n constructor(public el: ElementRef, @Self() @Optional() public control: NgControl) {}\n private validityChange: ReplaySubject<boolean> = new ReplaySubject(1);\n validity = this.validityChange.asObservable();\n endObs: Subject<void> = new Subject();\n focus = false;\n hasValue = false;\n\n ngOnInit(): void {\n this.control?.control?.valueChanges.pipe(takeUntil(this.endObs)).subscribe(() => {\n this.validityChange.next(!this.control.control?.invalid);\n });\n this.el.nativeElement.placeholder += \" \";\n }\n ngOnDestroy(): void {\n this.endObs.next();\n this.endObs.complete();\n }\n}\n","import { Component, ContentChild, Input, OnDestroy, OnInit, ViewEncapsulation } from \"@angular/core\";\nimport { AbstractControl } from \"@angular/forms\";\nimport { Subscription } from \"rxjs\";\nimport { MisInputDirective } from \"./directives/input/input.directive\";\n\n@Component({\n selector: \"mis-input\",\n templateUrl: \"./mis-input.component.html\",\n styleUrls: [\"./mis-input.component.scss\"]\n})\nexport class MisInputComponent implements OnInit, OnDestroy {\n @Input() type: \"rounded\" | \"floating\" = \"floating\";\n @Input() size: \"sm\" | \"md\" | \"lg\" = \"sm\";\n @Input() placeholder: string; // floating placeholder text\n @Input() noHints = false;\n @Input() hasError = false; // show input in error state\n @Input() isMandatory:boolean = false; // show input as mandatory\n @ContentChild(MisInputDirective) set formInput(input: MisInputDirective) {\n if (!this.placeholder) {\n this.placeholder = input?.el.nativeElement.placeholder || \"\";\n }\n this.inputCtrl = input.control?.control;\n this.inputSubscription?.unsubscribe();\n this.inputSubscription = input?.validity.subscribe(res => (this.inputValidity = res));\n this.placeholder += \" \";\n }\n inputCtrl: AbstractControl;\n inputSubscription: Subscription | undefined;\n inputValidity: boolean = true;\n constructor() {}\n\n ngOnInit(): void {}\n ngOnDestroy(): void {\n this.inputSubscription?.unsubscribe();\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { MisInputDirective } from \"./directives/input/input.directive\";\nimport { MisInputComponent } from \"./mis-input.component\";\n\n@NgModule({\n declarations: [MisInputComponent, MisInputDirective],\n imports: [CommonModule, FormsModule],\n exports: [MisInputComponent, MisInputDirective]\n})\nexport class MisInputModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MASa,iBAAiB;IAC5B,YAAmB,EAAc,EAA6B,OAAkB;QAA7D,OAAE,GAAF,EAAE,CAAY;QAA6B,YAAO,GAAP,OAAO,CAAW;QACxE,mBAAc,GAA2B,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;QACtE,aAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;QAC9C,WAAM,GAAkB,IAAI,OAAO,EAAE,CAAC;QACtC,UAAK,GAAG,KAAK,CAAC;QACd,aAAQ,GAAG,KAAK,CAAC;KALmE;IAOpF,QAAQ;;QACN,YAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,0CAAE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;;YACzE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAC,IAAI,CAAC,OAAO,CAAC,OAAO,0CAAE,OAAO,CAAA,CAAC,CAAC;SAC1D,EAAE;QACH,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,IAAI,GAAG,CAAC;KAC1C;IACD,WAAW;QACT,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KACxB;;;YArBF,SAAS,SAAC;;gBAET,QAAQ,EAAE,iBAAiB;aAC5B;;;YARmB,UAAU;YACrB,SAAS,uBASoB,IAAI,YAAI,QAAQ;;;MCAzC,iBAAiB;IAmB5B;QAlBS,SAAI,GAA2B,UAAU,CAAC;QAC1C,SAAI,GAAuB,IAAI,CAAC;QAEhC,YAAO,GAAG,KAAK,CAAC;QAChB,aAAQ,GAAG,KAAK,CAAC;QACjB,gBAAW,GAAW,KAAK,CAAC;QAYrC,kBAAa,GAAY,IAAI,CAAC;KACd;IAZhB,IAAqC,SAAS,CAAC,KAAwB;;QACrE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,WAAW,GAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,EAAE,CAAC,aAAa,CAAC,WAAW,KAAI,EAAE,CAAC;SAC9D;QACD,IAAI,CAAC,SAAS,SAAG,KAAK,CAAC,OAAO,0CAAE,OAAO,CAAC;QACxC,MAAA,IAAI,CAAC,iBAAiB,0CAAE,WAAW,GAAG;QACtC,IAAI,CAAC,iBAAiB,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,KAAK,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC;KACzB;IAMD,QAAQ,MAAW;IACnB,WAAW;;QACT,MAAA,IAAI,CAAC,iBAAiB,0CAAE,WAAW,GAAG;KACvC;;;YA7BF,SAAS,SAAC;gBACT,QAAQ,EAAE,WAAW;gBACrB,8vBAAyC;;aAE1C;;;;mBAEE,KAAK;mBACL,KAAK;0BACL,KAAK;sBACL,KAAK;uBACL,KAAK;0BACL,KAAK;wBACL,YAAY,SAAC,iBAAiB;;;MCNpB,cAAc;;;YAL1B,QAAQ,SAAC;gBACR,YAAY,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;gBACpD,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;gBACpC,OAAO,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;aAChD;;;ACVD;;;;;;"}
@@ -1,5 +1,6 @@
1
1
  import { EventEmitter, Component, Input, Output, NgModule } from '@angular/core';
2
2
  import { FormControl, ReactiveFormsModule, FormsModule } from '@angular/forms';
3
+ import { getCountries, getCountryCallingCode, parsePhoneNumberFromString } from 'libphonenumber-js';
3
4
  import { CommonModule } from '@angular/common';
4
5
  import { OverlayModule } from '@angular/cdk/overlay';
5
6
  import { ScrollingModule } from '@angular/cdk-experimental/scrolling';
@@ -7,25 +8,62 @@ import { DropdownModule } from 'mis-crystal-design-system/dropdown';
7
8
 
8
9
  class PhoneInputComponent {
9
10
  constructor() {
11
+ this.dropdownHeight = "";
12
+ this.dropdownWidth = "";
10
13
  this.dropdownData = [];
11
14
  this.dropdownSelectedItem = { value: "", label: "" };
15
+ this.defaultCountryCode = 'IN';
12
16
  this.inputPlaceholder = 'Enter';
13
17
  this.inputFormControl = new FormControl();
14
18
  this.onDropdownSelection = new EventEmitter();
15
- this.searchEnabled = false;
19
+ this.onInvalidPhoneNumber = new EventEmitter();
20
+ this.dropdownListWidth = "";
21
+ this.dropdownListHeight = "";
22
+ this.searchEnabled = true;
16
23
  this.inputType = "number";
17
24
  this.searchLabel = "Search Keyword";
25
+ this.phoneValidator = false;
26
+ this.countryCodes = [{ label: '', value: '' }];
27
+ this.selectedCountryName = '';
18
28
  }
19
29
  ngOnInit() {
30
+ if (this.phoneValidator) {
31
+ this.loadCountryCodes();
32
+ this.dropdownData = this.countryCodes;
33
+ this.selectedCountryName = this.dropdownSelectedItem.label;
34
+ }
35
+ if (this.defaultCountryCode) {
36
+ const selectedCountry = this.dropdownData.find(country => country.value.toUpperCase() === this.defaultCountryCode.toUpperCase());
37
+ if (selectedCountry) {
38
+ this.dropdownSelectedItem = selectedCountry;
39
+ this.selectedCountryName = selectedCountry.label;
40
+ }
41
+ }
20
42
  }
21
43
  handleDropdownSelection(item) {
44
+ this.dropdownSelectedItem = item;
22
45
  this.onDropdownSelection.emit(item);
46
+ this.selectedCountryName = item.label;
47
+ this.validatePhoneNumber(this.inputFormControl.value, this.dropdownSelectedItem.value);
48
+ }
49
+ loadCountryCodes() {
50
+ const countries = getCountries();
51
+ this.countryCodes = countries.map(countryCode => ({
52
+ value: countryCode,
53
+ label: `${countryCode} (+${getCountryCallingCode(countryCode)})`
54
+ }));
55
+ }
56
+ validatePhoneNumber(phoneNumber, countryCode) {
57
+ const parsedPhoneNumber = parsePhoneNumberFromString(phoneNumber, countryCode);
58
+ if (!parsedPhoneNumber || !parsedPhoneNumber.isValid()) {
59
+ this.onInvalidPhoneNumber.emit(`Phone number is invalid for ${this.selectedCountryName}`);
60
+ }
23
61
  }
24
62
  }
25
63
  PhoneInputComponent.decorators = [
26
64
  { type: Component, args: [{
27
65
  selector: "mis-phone-input",
28
- template: "<div class=\"main-container-phone\">\n <mis-dropdown [height]=\"dropdownHeight\" [dropdownListWidth]=\"dropdownListWidth\"[dropdownListHeight]=\"dropdownListHeight\" [width]=\"dropdownWidth\" [data]=\"dropdownData\" [selectedItem]=\"dropdownSelectedItem\" [label]=\"label\" [searchEnabled]=\"searchEnabled\" [multiLine]=\"false\" (onChange)=\"handleDropdownSelection($event)\" [searchLabel]=\"searchLabel\"></mis-dropdown>\n <div class=\"details-field\">\n <div class=\"input-box\">\n <input\n [ngStyle]=\"{'height': inputHeight }\"\n class=\"black-text\"\n [placeholder]=\"inputPlaceholder\"\n [formControl]=\"inputFormControl\" \n [type]=\"inputType\"\n />\n </div>\n </div>\n</div>\n",
66
+ template: "<div class=\"main-container-phone\">\n <mis-dropdown [height]=\"dropdownHeight\" [dropdownListWidth]=\"dropdownListWidth\"[dropdownListHeight]=\"dropdownListHeight\" [width]=\"dropdownWidth\" [data]=\"dropdownData\" [selectedItem]=\"dropdownSelectedItem\" [label]=\"label\" [searchEnabled]=\"searchEnabled\" [multiLine]=\"false\" (onChange)=\"handleDropdownSelection($event)\" [searchLabel]=\"searchLabel\"></mis-dropdown>\n <div class=\"details-field\">\n <div class=\"input-box\">\n <input\n [ngStyle]=\"{'height': inputHeight }\"\n class=\"black-text\" \n [placeholder]=\"inputPlaceholder\"\n [formControl]=\"inputFormControl\" \n [type]=\"inputType\"\n />\n </div>\n </div>\n</div>\n",
29
67
  styles: [".main-container-phone{display:flex;border:1px solid #e0e0e0;border-radius:6px}.details-field label{display:inline-block;min-width:224px;margin-right:24px}.details-field .input-box{width:100%}.details-field .input-box input{width:100%;height:32px}input{padding:10px 16px;border:none;outline:none;width:100%;height:auto;border-radius:6px}.black-text,input{color:#181f33;line-height:24px;font-size:16px}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.main-container-phone ::ng-deep .item{padding:8px!important}.main-container-phone ::ng-deep .dropdown{border:unset!important}"]
30
68
  },] }
31
69
  ];
@@ -36,15 +74,18 @@ PhoneInputComponent.propDecorators = {
36
74
  inputHeight: [{ type: Input }],
37
75
  dropdownData: [{ type: Input }],
38
76
  dropdownSelectedItem: [{ type: Input }],
77
+ defaultCountryCode: [{ type: Input }],
39
78
  label: [{ type: Input }],
40
79
  inputPlaceholder: [{ type: Input }],
41
80
  inputFormControl: [{ type: Input }],
42
81
  onDropdownSelection: [{ type: Output }],
82
+ onInvalidPhoneNumber: [{ type: Output }],
43
83
  dropdownListWidth: [{ type: Input }],
44
84
  dropdownListHeight: [{ type: Input }],
45
85
  searchEnabled: [{ type: Input }],
46
86
  inputType: [{ type: Input }],
47
- searchLabel: [{ type: Input }]
87
+ searchLabel: [{ type: Input }],
88
+ phoneValidator: [{ type: Input }]
48
89
  };
49
90
 
50
91
  class PhoneInputModule {
@@ -1 +1 @@
1
- {"version":3,"file":"mis-crystal-design-system-phone-input.js","sources":["../../../projects/mis-components/phone-input/phone-input.component.ts","../../../projects/mis-components/phone-input/phone-input.module.ts","../../../projects/mis-components/phone-input/mis-crystal-design-system-phone-input.ts"],"sourcesContent":["import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\nimport { FormControl } from \"@angular/forms\";\nimport { DropdownItem } from \"mis-crystal-design-system/dropdown\";\n\n@Component({\n selector: \"mis-phone-input\",\n templateUrl: \"./phone-input.component.html\",\n styleUrls: [\"./phone-input.component.scss\"]\n})\nexport class PhoneInputComponent implements OnInit {\n @Input() dropdownHeight?: string;\n @Input() dropdownWidth?: string;\n @Input() inputHeight?: string;\n @Input() dropdownData: DropdownItem[] = [];\n @Input() dropdownSelectedItem:DropdownItem = { value: \"\", label: \"\" } \n @Input() label: string;\n\n @Input() inputPlaceholder: string = 'Enter';\n @Input() inputFormControl: FormControl = new FormControl();\n\n @Output() onDropdownSelection = new EventEmitter<any>();\n @Input() dropdownListWidth;\n @Input() dropdownListHeight;\n @Input() searchEnabled:boolean=false;\n @Input() inputType: string = \"number\";\n @Input() searchLabel:string = \"Search Keyword\"\n \n constructor() {}\n ngOnInit() {\n }\n\n handleDropdownSelection(item: DropdownItem){\n this.onDropdownSelection.emit(item);\n }\n\n}\n","import { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { PhoneInputComponent } from \"./phone-input.component\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { ScrollingModule } from \"@angular/cdk-experimental/scrolling\";\nimport { DropdownModule } from \"mis-crystal-design-system/dropdown\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\n\n\n@NgModule({\n declarations: [PhoneInputComponent],\n imports: [CommonModule,ReactiveFormsModule, FormsModule, OverlayModule, ScrollingModule, DropdownModule],\n exports: [PhoneInputComponent]\n})\nexport class PhoneInputModule {\n static forRoot(): ModuleWithProviders<PhoneInputModule> {\n return { ngModule: PhoneInputModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MASa,mBAAmB;IAkB9B;QAdS,iBAAY,GAAmB,EAAE,CAAC;QAClC,yBAAoB,GAAgB,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;QAG5D,qBAAgB,GAAW,OAAO,CAAC;QACnC,qBAAgB,GAAgB,IAAI,WAAW,EAAE,CAAC;QAEjD,wBAAmB,GAAG,IAAI,YAAY,EAAO,CAAC;QAG/C,kBAAa,GAAS,KAAK,CAAC;QAC5B,cAAS,GAAW,QAAQ,CAAC;QAC7B,gBAAW,GAAU,gBAAgB,CAAA;KAE9B;IAChB,QAAQ;KACP;IAED,uBAAuB,CAAC,IAAkB;QACxC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACrC;;;YA7BF,SAAS,SAAC;gBACT,QAAQ,EAAE,iBAAiB;gBAC3B,8uBAA2C;;aAE5C;;;;6BAEE,KAAK;4BACL,KAAK;0BACL,KAAK;2BACL,KAAK;mCACL,KAAK;oBACL,KAAK;+BAEL,KAAK;+BACL,KAAK;kCAEL,MAAM;gCACN,KAAK;iCACL,KAAK;4BACL,KAAK;wBACL,KAAK;0BACL,KAAK;;;MCVK,gBAAgB;IAC3B,OAAO,OAAO;QACZ,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;KACtD;;;YARF,QAAQ,SAAC;gBACR,YAAY,EAAE,CAAC,mBAAmB,CAAC;gBACnC,OAAO,EAAE,CAAC,YAAY,EAAC,mBAAmB,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,CAAC;gBACxG,OAAO,EAAE,CAAC,mBAAmB,CAAC;aAC/B;;;ACdD;;;;;;"}
1
+ {"version":3,"file":"mis-crystal-design-system-phone-input.js","sources":["../../../projects/mis-components/phone-input/phone-input.component.ts","../../../projects/mis-components/phone-input/phone-input.module.ts","../../../projects/mis-components/phone-input/mis-crystal-design-system-phone-input.ts"],"sourcesContent":["import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\nimport { FormControl } from \"@angular/forms\";\nimport { parsePhoneNumberFromString, getCountryCallingCode, CountryCode, getCountries } from 'libphonenumber-js';\nimport { DropdownItem } from \"mis-crystal-design-system/dropdown\";\n\n@Component({\n selector: \"mis-phone-input\",\n templateUrl: \"./phone-input.component.html\",\n styleUrls: [\"./phone-input.component.scss\"]\n})\nexport class PhoneInputComponent implements OnInit {\n @Input() dropdownHeight?: string = \"\";\n @Input() dropdownWidth?: string = \"\";\n @Input() inputHeight?;\n @Input() dropdownData: DropdownItem[] = [];\n @Input() dropdownSelectedItem: DropdownItem = { value: \"\", label: \"\" };\n @Input() defaultCountryCode?: string = 'IN';\n @Input() label: string;\n @Input() inputPlaceholder: string = 'Enter';\n @Input() inputFormControl: FormControl = new FormControl();\n @Output() onDropdownSelection = new EventEmitter<any>();\n @Output() onInvalidPhoneNumber = new EventEmitter<string>();\n @Input() dropdownListWidth = \"\";\n @Input() dropdownListHeight = \"\";\n @Input() searchEnabled: boolean = true;\n @Input() inputType: string = \"number\";\n @Input() searchLabel: string = \"Search Keyword\"; \n @Input() phoneValidator? = false;\n \n countryCodes: DropdownItem[] = [{label:'',value:''}];\n countryCode: CountryCode | undefined;\n selectedCountryName: string = '';\n\n constructor() {}\n\n ngOnInit() {\n if (this.phoneValidator) {\n this.loadCountryCodes();\n this.dropdownData = this.countryCodes;\n this.selectedCountryName = this.dropdownSelectedItem.label;\n }\n\n if (this.defaultCountryCode) {\n const selectedCountry = this.dropdownData.find(\n country => country.value.toUpperCase() === this.defaultCountryCode.toUpperCase()\n );\n if (selectedCountry) {\n this.dropdownSelectedItem = selectedCountry;\n this.selectedCountryName = selectedCountry.label;\n }\n }\n }\n\n handleDropdownSelection(item: DropdownItem){\n this.dropdownSelectedItem = item;\n this.onDropdownSelection.emit(item);\n this.selectedCountryName = item.label;\n this.validatePhoneNumber(this.inputFormControl.value, this.dropdownSelectedItem.value);\n }\n\n loadCountryCodes() {\n const countries = getCountries();\n this.countryCodes = countries.map(countryCode => ({\n value: countryCode,\n label: `${countryCode} (+${getCountryCallingCode(countryCode)})`\n }));\n }\n\n validatePhoneNumber(phoneNumber: string, countryCode: string) {\n const parsedPhoneNumber = parsePhoneNumberFromString(phoneNumber, countryCode as CountryCode);\n\n if (!parsedPhoneNumber || !parsedPhoneNumber.isValid()) {\n this.onInvalidPhoneNumber.emit(`Phone number is invalid for ${this.selectedCountryName}`);\n }\n }\n\n}\n","import { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { PhoneInputComponent } from \"./phone-input.component\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { ScrollingModule } from \"@angular/cdk-experimental/scrolling\";\nimport { DropdownModule } from \"mis-crystal-design-system/dropdown\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\n\n\n@NgModule({\n declarations: [PhoneInputComponent],\n imports: [CommonModule,ReactiveFormsModule, FormsModule, OverlayModule, ScrollingModule, DropdownModule],\n exports: [PhoneInputComponent]\n})\nexport class PhoneInputModule {\n static forRoot(): ModuleWithProviders<PhoneInputModule> {\n return { ngModule: PhoneInputModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -39,13 +39,18 @@ class TimeRangePickerComponent {
39
39
  const offset = this.interval - (minutes % this.interval);
40
40
  // start date, 22 MAY === current date, 22 MAY
41
41
  if (this.startDate === this.currDate) {
42
- const currentTime = moment(this.startDateEpoch).valueOf();
42
+ console.log("start date epoch:", this.startDateEpoch);
43
+ const currentTime = moment().valueOf();
43
44
  // start date, 22 MAY === current date, 22 MAY === end date, 22 MAY
44
45
  if (this.startDate === this.endDate) {
46
+ console.log("Current time:", currentTime);
47
+ console.log("end-interval:", moment(this.startDateEpoch).endOf("d").subtract(this.interval, "m").valueOf());
45
48
  // current time is in last interval
46
49
  if (currentTime >= moment(this.startDateEpoch).endOf("d").subtract(this.interval, "m").valueOf()) {
47
50
  this.firstIntervalForStartPicker = currentTime;
48
51
  this.firstIntervalForEndPicker = moment(this.endDateEpoch).endOf("d").valueOf();
52
+ console.log("firstIntervalForStartPicker", this.firstIntervalForStartPicker);
53
+ console.log("firstIntervalForEndPicker", this.firstIntervalForEndPicker);
49
54
  }
50
55
  // current time isn't in last interval
51
56
  else {