mis-crystal-design-system 18.1.3 → 18.1.4-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.
- package/async-search-dropdown/async-dropdown.component.d.ts +5 -3
- package/esm2022/async-search-dropdown/async-dropdown.component.mjs +62 -36
- package/esm2022/input/mis-input.component.mjs +2 -2
- package/esm2022/table/sort-icons.directive.mjs +13 -2
- package/esm2022/table/table.component.mjs +21 -17
- package/esm2022/timepicker/timepicker.component.mjs +26 -5
- package/esm2022/timerangepicker/timerangepicker.component.mjs +22 -16
- package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +61 -35
- package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-input.mjs +2 -2
- package/fesm2022/mis-crystal-design-system-input.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-table.mjs +31 -16
- package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-timepicker.mjs +25 -4
- package/fesm2022/mis-crystal-design-system-timepicker.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-timerangepicker.mjs +21 -15
- package/fesm2022/mis-crystal-design-system-timerangepicker.mjs.map +1 -1
- package/input/mis-input.component.scss +2 -3
- package/package.json +7 -7
- package/styles/mis-old-icon-styles.scss +0 -498
- package/table/table.component.d.ts +1 -0
|
@@ -166,11 +166,14 @@ class TimePickerComponent {
|
|
|
166
166
|
this._isInitializing = false;
|
|
167
167
|
// Signal-based output with backward compatibility
|
|
168
168
|
this.timeEmitter = output();
|
|
169
|
-
// Effect to handle triggerChange from parent
|
|
169
|
+
// Effect to handle triggerChange toggles (explicit reset requests from parent)
|
|
170
|
+
// This effect ONLY resets chosenTime when triggerChange is toggled
|
|
171
|
+
// It does NOT watch firstInterval to avoid resetting time when dropdown intervals are updated
|
|
170
172
|
effect(() => {
|
|
171
173
|
const triggerValue = this.triggerChange();
|
|
172
|
-
const firstIntervalValue = this.firstInterval();
|
|
173
|
-
// Only
|
|
174
|
+
const firstIntervalValue = untracked(() => this.firstInterval()); // Use untracked to not create dependency
|
|
175
|
+
// Only reset when triggerChange is toggled AND firstInterval is provided
|
|
176
|
+
// This handles cases where parent explicitly wants to reset the time (e.g., conflict resolution)
|
|
174
177
|
if (!untracked(() => this.userInputFlag()) && firstIntervalValue && !this._isInitializing) {
|
|
175
178
|
const newTime = dayjs.tz(firstIntervalValue, untracked(() => this.timezone())).format(this.timeFormat);
|
|
176
179
|
// Only update if the time actually changed
|
|
@@ -179,7 +182,7 @@ class TimePickerComponent {
|
|
|
179
182
|
setTimeout(() => {
|
|
180
183
|
this.chosenTime.set(newTime);
|
|
181
184
|
this.isInvalid.set(!this.checkTimeValidity(newTime.trim()));
|
|
182
|
-
//
|
|
185
|
+
// Repopulate dropdown when time is reset
|
|
183
186
|
this.populateDropdown();
|
|
184
187
|
// Recalculate closest interval
|
|
185
188
|
this.calculateClosestInterval(newTime);
|
|
@@ -194,6 +197,24 @@ class TimePickerComponent {
|
|
|
194
197
|
}
|
|
195
198
|
}
|
|
196
199
|
});
|
|
200
|
+
// Separate effect to handle firstInterval changes (only update dropdown, NOT chosenTime)
|
|
201
|
+
// This allows updating dropdown intervals without resetting the selected time
|
|
202
|
+
effect(() => {
|
|
203
|
+
const firstIntervalValue = this.firstInterval();
|
|
204
|
+
// Only update dropdown when firstInterval changes, don't reset chosenTime
|
|
205
|
+
// This is crucial: when timerangepicker updates firstInterval to fix dropdown options,
|
|
206
|
+
// we don't want to reset the user's selected time
|
|
207
|
+
if (!untracked(() => this.userInputFlag()) && firstIntervalValue && !this._isInitializing) {
|
|
208
|
+
// Just repopulate dropdown with new intervals, preserve current chosenTime
|
|
209
|
+
setTimeout(() => {
|
|
210
|
+
this.populateDropdown();
|
|
211
|
+
// Recalculate closest interval for current chosenTime (preserve it)
|
|
212
|
+
if (untracked(() => this.chosenTime())) {
|
|
213
|
+
this.calculateClosestInterval(untracked(() => this.chosenTime()));
|
|
214
|
+
}
|
|
215
|
+
}, 0);
|
|
216
|
+
}
|
|
217
|
+
});
|
|
197
218
|
}
|
|
198
219
|
ngOnInit() {
|
|
199
220
|
this._isInitializing = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mis-crystal-design-system-timepicker.mjs","sources":["../../../projects/mis-components/timepicker/timepicker.directive.ts","../../../projects/mis-components/timepicker/timepicker.component.html","../../../projects/mis-components/timepicker/timepicker.component.ts","../../../projects/mis-components/timepicker/timepicker.module.ts","../../../projects/mis-components/timepicker/mis-crystal-design-system-timepicker.ts"],"sourcesContent":["import { Directive, Output, TemplateRef } from '@angular/core';\nimport { EventEmitter, Input, ViewContainerRef } from \"@angular/core\";\nimport { ConnectionPositionPair, Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { TemplatePortal } from \"@angular/cdk/portal\";\n\n@Directive({\n selector: '[libTimepicker]'\n})\nexport class TimepickerDirective {\n private openStatus: boolean = false;\n @Input('originEl') originEl : any;\n @Output() statusEmitter = new EventEmitter<boolean>(); \n\n @Input('openStatus') set createOverlayOnInput(openStatus){\n this.openStatus = openStatus;\n if(this.originEl && this.openStatus) {\n this.createOverlay(this.originEl);\n }\n }; \n private overlayRef!: OverlayRef;\n constructor(private templateRef: TemplateRef<Element>, private overlay: Overlay, private viewContainerRef: ViewContainerRef) {}\n\n createOverlay(origin: any): void {\n const positions = [\n new ConnectionPositionPair({ originX: \"start\", originY: \"bottom\" }, { overlayX: \"start\", overlayY: \"top\" }, 0, 4),\n new ConnectionPositionPair({ originX: \"end\", originY: \"bottom\" }, { overlayX: \"end\", overlayY: \"top\" }, 0, 4)\n ];\n\n const overlayConfig = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: \"cdk-overlay-transparent-backdrop\",\n positionStrategy: this.overlay\n .position()\n //connecting the dropdown overlay to the input element\n .flexibleConnectedTo(origin)\n .withPositions([...positions])\n .withPush(true)\n });\n\n this.overlayRef = this.overlay.create(overlayConfig);\n const dropdownPortal = new TemplatePortal(this.templateRef, this.viewContainerRef);\n this.overlayRef.attach(dropdownPortal);\n this.overlayRef.backdropClick().subscribe(resp => {\n this.openStatus = false;\n this.statusEmitter.emit(false);\n if(this.overlay){\n this.overlayRef.detach();\n }\n });\n }\n\n destroyOverlay(){\n if(this.overlay){\n this.overlayRef.detach();\n }\n }\n \n}\n","<div class=\"timepicker-container\" [ngStyle]=\"{ height: height() }\" [ngClass]=\"{'disable': disable()}\">\n <input\n type=\"text\"\n [ngModel]=\"chosenTime()\"\n (ngModelChange)=\"onTimeChange($event)\"\n [ngClass]=\"{ invalid: isInvalid() || !rangeValidity() }\"\n [ngStyle]=\"{ width: inputWidth() }\"\n (click)=\"openDropdown()\"\n misToolTip\n [showToolTip]=\"showTooltip() && (isInvalid() || !rangeValidity()) && dispayToolTip\"\n [text]=\"'Invalid Time'\"\n [position]=\"'top'\"\n [showOnHover]=\"false\"\n #input\n cdkOverlayOrigin\n class=\"h7\"\n />\n\n <ng-template #dropdownContainer libTimepicker [originEl]=\"input\" [openStatus]=\"openStatus()\" (statusEmitter)=\"closeDropdown()\">\n <div *ngIf=\"openStatus()\" class=\"timepicker-dropdown\" [ngStyle]=\"{ width: dropdownWidth() || inputWidth() }\">\n <ul #dropdown>\n <li #timeInterval (click)=\"onTimeSelect(interval)\" *ngFor=\"let interval of timeIntervals(); index as i\" [ngClass]=\"{ highlight: i === isHighlighted() }\">\n {{ interval }}\n <div class=\"ic-ui-check-24 selected-icon\" *ngIf=\"interval === chosenTime()\"></div>\n </li>\n </ul>\n </div>\n </ng-template>\n</div>\n","import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild, ViewChildren, input, output, signal, computed, effect, untracked } from \"@angular/core\";\nimport { ITime } from \"./time.namespace\";\nimport { TimepickerDirective } from \"./timepicker.directive\";\nimport { ToolTipDirective } from \"mis-crystal-design-system/tooltip\";\n\nimport dayjs from 'dayjs';\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(customParseFormat);\n\n\n@Component({\n selector: \"mis-timepicker\",\n templateUrl: \"./timepicker.component.html\",\n styleUrls: [\"./timepicker.component.scss\"]\n})\nexport class TimePickerComponent implements OnInit, OnDestroy {\n // Convert to signals for better performance and change detection\n currTime = signal<string>('');\n chosenTime = signal<string>('');\n openStatus = signal<boolean>(false);\n isHighlighted = signal<number>(0);\n isInvalid = signal<boolean>(false);\n timeIntervals = signal<string[]>([]);\n shouldScroll = signal<boolean>(false);\n userInputFlag = signal<boolean>(false);\n givenTimeFlag = signal<boolean>(true);\n // Signal-based inputs with backward compatibility\n clockFormat = input<number>(12);\n timeFormat!: string;\n \n timezone = input<string>(\"Asia/Kolkata\");\n height = input<string>(\"max-content\");\n inputWidth = input<string>(\"100px\");\n dropdownWidth = input<string | undefined>(undefined);\n interval = input<number>(15);\n dateAsEpoch = input<number>(dayjs.tz(dayjs(), \"Asia/Kolkata\").valueOf());\n firstInterval = input<number>();\n rangeValidity = input<boolean>(true);\n showTooltip = input<boolean>(true);\n dispayToolTip: boolean = this.showTooltip();\n givenTime = input<number>();\n minTime = input<number | undefined>(undefined);\n triggerChange = input<boolean>(true);\n disable = input<boolean>(false);\n \n // Internal state for computed first interval\n private computedFirstInterval: number | null = null;\n private _isInitializing = false;\n \n // Signal-based output with backward compatibility\n timeEmitter = output<ITime>();\n @ViewChild(\"input\", { static: true }) input: ElementRef;\n @ViewChild(TimepickerDirective) timepickerDirective: TimepickerDirective;\n @ViewChild(ToolTipDirective) tooltipDirective: ToolTipDirective;\n\n // gets all the li elements from the dropdown and scrolls to the highlighted element\n @ViewChildren(\"timeInterval\") set timeIntervalRefs(intervals) {\n intervals.forEach(interval => {\n if (interval.nativeElement.classList[0] === \"highlight\") {\n const highlighted = interval.nativeElement;\n setTimeout(() => highlighted.scrollIntoView({ block: \"center\" }));\n }\n });\n }\n\n constructor(){\n // Effect to handle triggerChange from parent component (timerangepicker)\n effect(() => {\n const triggerValue = this.triggerChange();\n const firstIntervalValue = this.firstInterval();\n \n // Only update if not during user input and firstInterval is provided\n if (!untracked(() => this.userInputFlag()) && firstIntervalValue && !this._isInitializing) {\n const newTime = dayjs.tz(firstIntervalValue, untracked(() => this.timezone())).format(this.timeFormat);\n \n // Only update if the time actually changed\n if (untracked(() => this.chosenTime()) !== newTime) {\n // Use setTimeout to defer signal writes and avoid circular dependencies\n setTimeout(() => {\n this.chosenTime.set(newTime);\n this.isInvalid.set(!this.checkTimeValidity(newTime.trim()));\n \n // CRITICAL FIX: Repopulate dropdown when firstInterval changes\n this.populateDropdown();\n \n // Recalculate closest interval\n this.calculateClosestInterval(newTime);\n \n // Emit the updated time\n const timedayjs = this.getdayjs(newTime);\n this.emitTime({\n valid: !this.isInvalid(),\n time: newTime,\n epoch: timedayjs.valueOf()\n });\n }, 0);\n }\n }\n });\n }\n \n ngOnInit(): void {\n this._isInitializing = true;\n // Ensure timeFormat is set before initialization\n this.timeFormat = this.clockFormat() === 12 ? \"hh:mm a\" : \"HH:mm\";\n \n // Initialize chosenTime - use firstInterval from parent if available, otherwise calculate\n if (!this.givenTime() && !this.minTime()) {\n let initialTime;\n \n // If firstInterval is provided by parent (timerangepicker), use it\n if (this.firstInterval()) {\n initialTime = dayjs.tz(this.firstInterval(), this.timezone()).format(this.timeFormat);\n } else {\n // Get current time and round to nearest interval using original logic\n const now = dayjs.tz(dayjs(), this.timezone());\n const interval = this.interval();\n const minutes = now.minute();\n const offset = interval - (minutes % interval);\n \n // Round to next interval if we're past halfway point\n const roundedTime = offset >= interval / 2 \n ? now.add(offset, \"m\").second(0).millisecond(0)\n : now.subtract(interval - offset, \"m\").second(0).millisecond(0);\n \n initialTime = roundedTime.format(this.timeFormat);\n }\n \n this.chosenTime.set(initialTime);\n \n // Set userInputFlag to false to avoid validation issues during initialization\n this.userInputFlag.set(false);\n \n // Populate dropdown first to compute the first interval\n this.populateDropdown();\n \n // Now validate with the computed first interval\n this.isInvalid.set(!this.checkTimeValidity(this.chosenTime().trim()));\n \n let chosenTimedayjs = this.getdayjs(this.chosenTime());\n // Defer emission to avoid ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => {\n this.emitTime({\n valid: !this.isInvalid(),\n time: this.chosenTime(),\n epoch: chosenTimedayjs.valueOf()\n });\n }, 0);\n \n // Calculate closest interval\n this.calculateClosestInterval(this.chosenTime());\n \n this._isInitializing = false;\n } else if (this.givenTime()) {\n // When givenTime is present, use the given time as the initial value\n // but the dropdown will start from 12:00 AM\n this.chosenTime.set(dayjs.tz(this.givenTime(), this.timezone()).format(this.timeFormat));\n this.userInputFlag.set(false);\n \n // Populate dropdown first to compute the first interval\n this.populateDropdown();\n \n // Now validate with the computed first interval\n this.isInvalid.set(!this.checkTimeValidity(this.chosenTime().trim()));\n \n let chosenTimedayjs = this.getdayjs(this.chosenTime());\n // Defer emission to avoid ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => {\n this.emitTime({\n valid: !this.isInvalid(),\n time: this.chosenTime(),\n epoch: chosenTimedayjs.valueOf()\n });\n }, 0);\n \n // Calculate closest interval\n this.calculateClosestInterval(this.chosenTime());\n \n this._isInitializing = false;\n } else if (this.minTime()) {\n // Use min time directly - this matches original behavior\n this.chosenTime.set(dayjs.tz(this.minTime(), this.timezone()).format(this.timeFormat));\n this.userInputFlag.set(false);\n \n // Populate dropdown first to compute the first interval\n this.populateDropdown();\n \n // For minTime, validation should only check format, not time comparison\n // This matches the original logic where minTime bypasses time validation\n this.isInvalid.set(!this.checkTimeValidity(this.chosenTime().trim()));\n \n let chosenTimedayjs = this.getdayjs(this.chosenTime());\n // Defer emission to avoid ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => {\n this.emitTime({\n valid: !this.isInvalid(),\n time: this.chosenTime(),\n epoch: chosenTimedayjs.valueOf()\n });\n }, 0);\n \n // Calculate closest interval\n this.calculateClosestInterval(this.chosenTime());\n \n this._isInitializing = false;\n }\n }\n\n\n emitTime(data: ITime): void {\n this.timeEmitter.emit(data);\n }\n\n // function to get dayjs object when time is given in string\n getdayjs(time: string = '00:00'){\n if(!time || typeof time !== 'string') {\n throw new Error('Time must be a string');\n }\n\n let hours: number;\n let minutes: number;\n\n if(this.clockFormat() === 24) {\n hours = parseInt(time.split(':')[0]);\n minutes = parseInt(time.split(':')[1]);\n } else {\n const timeParts = time.split(' ');\n const AM_PM = timeParts?.[1];\n hours = parseInt(timeParts?.[0]?.split(':')?.[0]);\n minutes = parseInt(timeParts?.[0]?.split(':')?.[1]);\n\n if(AM_PM?.toUpperCase() === 'PM' && hours !== 12) {\n hours += 12;\n } else if(AM_PM?.toUpperCase() === 'AM' && hours === 12) {\n hours = 0;\n }\n }\n\n // Use the date from dateAsEpoch but set the time to the parsed hours and minutes\n const baseDate = dayjs.tz(this.dateAsEpoch(), this.timezone());\n const result = baseDate.hour(hours).minute(minutes).second(0).millisecond(0);\n return result;\n }\n\n closeDropdown() {\n this.dispayToolTip = false;\n this.userInputFlag.set(false);\n this.openStatus.set(false);\n if (this.timepickerDirective) this.timepickerDirective.destroyOverlay();\n }\n\n // toggle timepicker dropdown\n openDropdown(): void {\n this.dispayToolTip = true;\n this.openStatus.set(true);\n }\n\n checkTimeValidity(time: string): 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 // Check if the time format is valid first\n if (!time.match(RE)) {\n return false;\n }\n\n // Restore proper validation logic\n const timedayjs = this.getdayjs(time);\n let flag: boolean = false;\n\n // Original logic: if minTime, givenTime, or firstInterval is start of day, only check format\n if (\n this.minTime() || \n this.givenTime() ||\n (this.firstInterval() &&\n dayjs.tz(this.firstInterval(), this.timezone()).format(this.timeFormat).valueOf() === dayjs.tz(dayjs(), this.timezone()).startOf(\"day\").format(this.timeFormat).valueOf()) \n ) {\n // Only check format validation, not time comparison\n flag = time.match(RE) ? true : false;\n } else {\n // Check against current time for normal cases\n const currentTime = dayjs.tz(dayjs(), this.timezone());\n const timeDiff = timedayjs.diff(currentTime, \"m\");\n flag = timeDiff >= 0;\n }\n\n return flag;\n }\n\n // update chosen time as soon as the user clicks on an interval\n onTimeSelect(time: string): void {\n this.isInvalid.set(!this.checkTimeValidity(time.trim()));\n if (!this.isInvalid()) {\n this.chosenTime.set(time);\n this.calculateClosestInterval(this.chosenTime());\n }\n\n const timedayjs = this.getdayjs(time);\n this.emitTime({\n valid: !this.isInvalid(),\n time: time,\n epoch: timedayjs.valueOf() \n });\n this.openStatus.set(false);\n if (this.timepickerDirective) this.timepickerDirective.destroyOverlay();\n }\n\n // checks validity of time on input change and calculates the closest interval\n onTimeChange(time: string): void {\n // Set user input flag to prevent effects from overriding\n this.userInputFlag.set(true);\n \n // Update the chosenTime signal\n this.chosenTime.set(time);\n const isValid = this.checkTimeValidity(time.trim());\n this.isInvalid.set(!isValid);\n\n // Clear user input flag after a delay to allow effects to work again\n setTimeout(() => {\n this.userInputFlag.set(false);\n }, 1000); // 1 second delay\n\n if (!this.isInvalid()) {\n this.openStatus.set(false);\n if (this.timepickerDirective) this.timepickerDirective.destroyOverlay();\n this.calculateClosestInterval(time);\n }\n const timedayjs = this.getdayjs(time);\n this.emitTime({\n valid: !this.isInvalid(),\n time: time,\n epoch: timedayjs.valueOf() \n });\n }\n\n calculateClosestInterval(time: string): void {\n let roundedEpoch: number;\n // Converting time and date to a dayjs object \n const chosenDate = dayjs.tz(this.dateAsEpoch(), this.timezone()).format(\"DD-MM-YYYY\"); // 05-01-2024\n const parsedTimeWithDate = dayjs.tz(`${chosenDate} ${time}`, `DD-MM-YYYY ${this.timeFormat}`, this.timezone());\n // Converting dayjs object to epoch\n const chosenTimeEpoch = parsedTimeWithDate.valueOf();\n const offset = this.interval() - (dayjs.tz(chosenTimeEpoch, this.timezone()).minute() % this.interval());\n\n if (this.minTime() && !this.givenTime()) {\n this.isHighlighted.set(0);\n return;\n }\n roundedEpoch = offset >= this.interval() / 2 ? (dayjs.tz(chosenTimeEpoch, this.timezone()).subtract(this.interval() - offset, \"m\")).valueOf() : (dayjs.tz(chosenTimeEpoch, this.timezone()).add( offset, \"m\")).valueOf();\n\n // finding the index of element that needs to be highlighted\n if ( chosenTimeEpoch > dayjs.tz(this.dateAsEpoch(), this.timezone()).endOf(\"day\").subtract(this.interval(), \"m\").valueOf()) {\n this.isHighlighted.set(this.timeIntervals().length - 1);\n } else {\n const roundedEpochdayjs = dayjs.tz(roundedEpoch, this.timezone());\n this.isHighlighted.set(this.timeIntervals().findIndex(interval => {\n const intervalObj = dayjs.tz(`${chosenDate} ${interval}`, `DD-MM-YYYY ${this.timeFormat}`, this.timezone());\n return intervalObj.isSame(roundedEpochdayjs);\n }));\n }\n }\n\n\n // populates the dropdown according to the first interval received\n populateDropdown(): void {\n this.timeIntervals.set([]);\n\n // Compute the effective first interval\n let effectiveFirstInterval = this.firstInterval();\n\n // if picker is used as an individual component\n if (!effectiveFirstInterval) {\n // firstInterval is initialised according to the current time\n // if the date is same as the current date\n if (dayjs.tz(this.dateAsEpoch(), this.timezone()).format(\"DD-MM-YYYY\") === dayjs.tz(dayjs(), this.timezone()).format(\"DD-MM-YYYY\") && !this.minTime()) {\n const offset = this.interval() - (dayjs.tz(dayjs(), this.timezone()).minute() % this.interval());\n effectiveFirstInterval = dayjs.tz(dayjs(), this.timezone()).add(offset, \"m\").valueOf();\n }\n // if minimum time to show is provided\n else if(this.minTime()){\n const minTimeDayjs = dayjs.tz(this.minTime(), this.timezone());\n const offset = this.interval() - (minTimeDayjs.minute() % this.interval());\n effectiveFirstInterval = minTimeDayjs.add(offset, \"m\").valueOf();\n }\n // else the firstInterval is initialised as start of day\n else {\n effectiveFirstInterval = dayjs.tz(dayjs(), this.timezone()).startOf(\"day\").valueOf();\n }\n }\n\n if(this.givenTime()){\n // When givenTime is present, always start from 12:00 AM (start of day)\n // regardless of whether the time has passed or not\n effectiveFirstInterval = dayjs.tz(this.dateAsEpoch(), this.timezone()).startOf('day').valueOf();\n this.givenTimeFlag.set(false);\n }\n\n // Store the computed first interval for later use\n this.computedFirstInterval = effectiveFirstInterval;\n\n const dateAsString = dayjs.tz(this.dateAsEpoch(), this.timezone()).format('DD-MM-YYYY');\n const intervalAsString = dayjs.tz(effectiveFirstInterval, this.timezone()).format(this.timeFormat);\n let start = dayjs.tz(`${dateAsString} ${intervalAsString}`, `DD-MM-YYYY ${this.timeFormat}`, this.timezone());\n const end = dayjs.tz(this.dateAsEpoch(), this.timezone()).endOf('d');\n \n while (start.valueOf() < end.valueOf()) {\n this.timeIntervals.update(intervals => [...intervals, start.format(this.timeFormat)]);\n start = start.add(this.interval(), \"m\");\n }\n\n // NEW: Handle end-of-day case - if firstInterval is at or very close to end of day\n // and we're on the same date, show only 11:59 PM\n const endOfDay = dayjs.tz(this.dateAsEpoch(), this.timezone()).endOf(\"d\");\n const firstIntervalDayjs = dayjs.tz(effectiveFirstInterval, this.timezone());\n \n // Check if firstInterval is at or very close to end of day (within 1 minute)\n const isAtEndOfDay = firstIntervalDayjs.isSame(endOfDay, 'day') && \n firstIntervalDayjs.diff(endOfDay, 'minute') >= -1;\n \n if (isAtEndOfDay || this.timeIntervals().length === 0) {\n // Clear existing intervals and add only 11:59 PM\n this.timeIntervals.set([]);\n this.timeIntervals.update(intervals => [...intervals, endOfDay.format(this.timeFormat)]);\n }\n }\n\n ngOnDestroy() {\n if (this.tooltipDirective) this.tooltipDirective.hideToolTip();\n }\n}\n\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TimePickerComponent } from \"./timepicker.component\";\nimport { ToolTipModule } from \"mis-crystal-design-system/tooltip\";\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { TimepickerDirective } from './timepicker.directive';\n\n@NgModule({\n declarations: [TimePickerComponent, TimepickerDirective],\n imports: [CommonModule, FormsModule, ToolTipModule, OverlayModule],\n exports: [TimePickerComponent]\n})\nexport class TimePickerModule {\n static forRoot(): ModuleWithProviders<TimePickerModule> {\n return { ngModule: TimePickerModule, providers: [] };\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mis-crystal-design-system-timepicker.mjs","sources":["../../../projects/mis-components/timepicker/timepicker.directive.ts","../../../projects/mis-components/timepicker/timepicker.component.html","../../../projects/mis-components/timepicker/timepicker.component.ts","../../../projects/mis-components/timepicker/timepicker.module.ts","../../../projects/mis-components/timepicker/mis-crystal-design-system-timepicker.ts"],"sourcesContent":["import { Directive, Output, TemplateRef } from '@angular/core';\nimport { EventEmitter, Input, ViewContainerRef } from \"@angular/core\";\nimport { ConnectionPositionPair, Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { TemplatePortal } from \"@angular/cdk/portal\";\n\n@Directive({\n selector: '[libTimepicker]'\n})\nexport class TimepickerDirective {\n private openStatus: boolean = false;\n @Input('originEl') originEl : any;\n @Output() statusEmitter = new EventEmitter<boolean>(); \n\n @Input('openStatus') set createOverlayOnInput(openStatus){\n this.openStatus = openStatus;\n if(this.originEl && this.openStatus) {\n this.createOverlay(this.originEl);\n }\n }; \n private overlayRef!: OverlayRef;\n constructor(private templateRef: TemplateRef<Element>, private overlay: Overlay, private viewContainerRef: ViewContainerRef) {}\n\n createOverlay(origin: any): void {\n const positions = [\n new ConnectionPositionPair({ originX: \"start\", originY: \"bottom\" }, { overlayX: \"start\", overlayY: \"top\" }, 0, 4),\n new ConnectionPositionPair({ originX: \"end\", originY: \"bottom\" }, { overlayX: \"end\", overlayY: \"top\" }, 0, 4)\n ];\n\n const overlayConfig = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: \"cdk-overlay-transparent-backdrop\",\n positionStrategy: this.overlay\n .position()\n //connecting the dropdown overlay to the input element\n .flexibleConnectedTo(origin)\n .withPositions([...positions])\n .withPush(true)\n });\n\n this.overlayRef = this.overlay.create(overlayConfig);\n const dropdownPortal = new TemplatePortal(this.templateRef, this.viewContainerRef);\n this.overlayRef.attach(dropdownPortal);\n this.overlayRef.backdropClick().subscribe(resp => {\n this.openStatus = false;\n this.statusEmitter.emit(false);\n if(this.overlay){\n this.overlayRef.detach();\n }\n });\n }\n\n destroyOverlay(){\n if(this.overlay){\n this.overlayRef.detach();\n }\n }\n \n}\n","<div class=\"timepicker-container\" [ngStyle]=\"{ height: height() }\" [ngClass]=\"{'disable': disable()}\">\n <input\n type=\"text\"\n [ngModel]=\"chosenTime()\"\n (ngModelChange)=\"onTimeChange($event)\"\n [ngClass]=\"{ invalid: isInvalid() || !rangeValidity() }\"\n [ngStyle]=\"{ width: inputWidth() }\"\n (click)=\"openDropdown()\"\n misToolTip\n [showToolTip]=\"showTooltip() && (isInvalid() || !rangeValidity()) && dispayToolTip\"\n [text]=\"'Invalid Time'\"\n [position]=\"'top'\"\n [showOnHover]=\"false\"\n #input\n cdkOverlayOrigin\n class=\"h7\"\n />\n\n <ng-template #dropdownContainer libTimepicker [originEl]=\"input\" [openStatus]=\"openStatus()\" (statusEmitter)=\"closeDropdown()\">\n <div *ngIf=\"openStatus()\" class=\"timepicker-dropdown\" [ngStyle]=\"{ width: dropdownWidth() || inputWidth() }\">\n <ul #dropdown>\n <li #timeInterval (click)=\"onTimeSelect(interval)\" *ngFor=\"let interval of timeIntervals(); index as i\" [ngClass]=\"{ highlight: i === isHighlighted() }\">\n {{ interval }}\n <div class=\"ic-ui-check-24 selected-icon\" *ngIf=\"interval === chosenTime()\"></div>\n </li>\n </ul>\n </div>\n </ng-template>\n</div>\n","import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild, ViewChildren, input, output, signal, computed, effect, untracked } from \"@angular/core\";\nimport { ITime } from \"./time.namespace\";\nimport { TimepickerDirective } from \"./timepicker.directive\";\nimport { ToolTipDirective } from \"mis-crystal-design-system/tooltip\";\n\nimport dayjs from 'dayjs';\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(customParseFormat);\n\n\n@Component({\n selector: \"mis-timepicker\",\n templateUrl: \"./timepicker.component.html\",\n styleUrls: [\"./timepicker.component.scss\"]\n})\nexport class TimePickerComponent implements OnInit, OnDestroy {\n // Convert to signals for better performance and change detection\n currTime = signal<string>('');\n chosenTime = signal<string>('');\n openStatus = signal<boolean>(false);\n isHighlighted = signal<number>(0);\n isInvalid = signal<boolean>(false);\n timeIntervals = signal<string[]>([]);\n shouldScroll = signal<boolean>(false);\n userInputFlag = signal<boolean>(false);\n givenTimeFlag = signal<boolean>(true);\n // Signal-based inputs with backward compatibility\n clockFormat = input<number>(12);\n timeFormat!: string;\n \n timezone = input<string>(\"Asia/Kolkata\");\n height = input<string>(\"max-content\");\n inputWidth = input<string>(\"100px\");\n dropdownWidth = input<string | undefined>(undefined);\n interval = input<number>(15);\n dateAsEpoch = input<number>(dayjs.tz(dayjs(), \"Asia/Kolkata\").valueOf());\n firstInterval = input<number>();\n rangeValidity = input<boolean>(true);\n showTooltip = input<boolean>(true);\n dispayToolTip: boolean = this.showTooltip();\n givenTime = input<number>();\n minTime = input<number | undefined>(undefined);\n triggerChange = input<boolean>(true);\n disable = input<boolean>(false);\n \n // Internal state for computed first interval\n private computedFirstInterval: number | null = null;\n private _isInitializing = false;\n \n // Signal-based output with backward compatibility\n timeEmitter = output<ITime>();\n @ViewChild(\"input\", { static: true }) input: ElementRef;\n @ViewChild(TimepickerDirective) timepickerDirective: TimepickerDirective;\n @ViewChild(ToolTipDirective) tooltipDirective: ToolTipDirective;\n\n // gets all the li elements from the dropdown and scrolls to the highlighted element\n @ViewChildren(\"timeInterval\") set timeIntervalRefs(intervals) {\n intervals.forEach(interval => {\n if (interval.nativeElement.classList[0] === \"highlight\") {\n const highlighted = interval.nativeElement;\n setTimeout(() => highlighted.scrollIntoView({ block: \"center\" }));\n }\n });\n }\n\n constructor(){\n // Effect to handle triggerChange toggles (explicit reset requests from parent)\n // This effect ONLY resets chosenTime when triggerChange is toggled\n // It does NOT watch firstInterval to avoid resetting time when dropdown intervals are updated\n effect(() => {\n const triggerValue = this.triggerChange();\n const firstIntervalValue = untracked(() => this.firstInterval()); // Use untracked to not create dependency\n \n // Only reset when triggerChange is toggled AND firstInterval is provided\n // This handles cases where parent explicitly wants to reset the time (e.g., conflict resolution)\n if (!untracked(() => this.userInputFlag()) && firstIntervalValue && !this._isInitializing) {\n const newTime = dayjs.tz(firstIntervalValue, untracked(() => this.timezone())).format(this.timeFormat);\n \n // Only update if the time actually changed\n if (untracked(() => this.chosenTime()) !== newTime) {\n // Use setTimeout to defer signal writes and avoid circular dependencies\n setTimeout(() => {\n this.chosenTime.set(newTime);\n this.isInvalid.set(!this.checkTimeValidity(newTime.trim()));\n \n // Repopulate dropdown when time is reset\n this.populateDropdown();\n \n // Recalculate closest interval\n this.calculateClosestInterval(newTime);\n \n // Emit the updated time\n const timedayjs = this.getdayjs(newTime);\n this.emitTime({\n valid: !this.isInvalid(),\n time: newTime,\n epoch: timedayjs.valueOf()\n });\n }, 0);\n }\n }\n });\n \n // Separate effect to handle firstInterval changes (only update dropdown, NOT chosenTime)\n // This allows updating dropdown intervals without resetting the selected time\n effect(() => {\n const firstIntervalValue = this.firstInterval();\n \n // Only update dropdown when firstInterval changes, don't reset chosenTime\n // This is crucial: when timerangepicker updates firstInterval to fix dropdown options,\n // we don't want to reset the user's selected time\n if (!untracked(() => this.userInputFlag()) && firstIntervalValue && !this._isInitializing) {\n // Just repopulate dropdown with new intervals, preserve current chosenTime\n setTimeout(() => {\n this.populateDropdown();\n // Recalculate closest interval for current chosenTime (preserve it)\n if (untracked(() => this.chosenTime())) {\n this.calculateClosestInterval(untracked(() => this.chosenTime()));\n }\n }, 0);\n }\n });\n }\n \n ngOnInit(): void {\n this._isInitializing = true;\n // Ensure timeFormat is set before initialization\n this.timeFormat = this.clockFormat() === 12 ? \"hh:mm a\" : \"HH:mm\";\n \n // Initialize chosenTime - use firstInterval from parent if available, otherwise calculate\n if (!this.givenTime() && !this.minTime()) {\n let initialTime;\n \n // If firstInterval is provided by parent (timerangepicker), use it\n if (this.firstInterval()) {\n initialTime = dayjs.tz(this.firstInterval(), this.timezone()).format(this.timeFormat);\n } else {\n // Get current time and round to nearest interval using original logic\n const now = dayjs.tz(dayjs(), this.timezone());\n const interval = this.interval();\n const minutes = now.minute();\n const offset = interval - (minutes % interval);\n \n // Round to next interval if we're past halfway point\n const roundedTime = offset >= interval / 2 \n ? now.add(offset, \"m\").second(0).millisecond(0)\n : now.subtract(interval - offset, \"m\").second(0).millisecond(0);\n \n initialTime = roundedTime.format(this.timeFormat);\n }\n \n this.chosenTime.set(initialTime);\n \n // Set userInputFlag to false to avoid validation issues during initialization\n this.userInputFlag.set(false);\n \n // Populate dropdown first to compute the first interval\n this.populateDropdown();\n \n // Now validate with the computed first interval\n this.isInvalid.set(!this.checkTimeValidity(this.chosenTime().trim()));\n \n let chosenTimedayjs = this.getdayjs(this.chosenTime());\n // Defer emission to avoid ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => {\n this.emitTime({\n valid: !this.isInvalid(),\n time: this.chosenTime(),\n epoch: chosenTimedayjs.valueOf()\n });\n }, 0);\n \n // Calculate closest interval\n this.calculateClosestInterval(this.chosenTime());\n \n this._isInitializing = false;\n } else if (this.givenTime()) {\n // When givenTime is present, use the given time as the initial value\n // but the dropdown will start from 12:00 AM\n this.chosenTime.set(dayjs.tz(this.givenTime(), this.timezone()).format(this.timeFormat));\n this.userInputFlag.set(false);\n \n // Populate dropdown first to compute the first interval\n this.populateDropdown();\n \n // Now validate with the computed first interval\n this.isInvalid.set(!this.checkTimeValidity(this.chosenTime().trim()));\n \n let chosenTimedayjs = this.getdayjs(this.chosenTime());\n // Defer emission to avoid ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => {\n this.emitTime({\n valid: !this.isInvalid(),\n time: this.chosenTime(),\n epoch: chosenTimedayjs.valueOf()\n });\n }, 0);\n \n // Calculate closest interval\n this.calculateClosestInterval(this.chosenTime());\n \n this._isInitializing = false;\n } else if (this.minTime()) {\n // Use min time directly - this matches original behavior\n this.chosenTime.set(dayjs.tz(this.minTime(), this.timezone()).format(this.timeFormat));\n this.userInputFlag.set(false);\n \n // Populate dropdown first to compute the first interval\n this.populateDropdown();\n \n // For minTime, validation should only check format, not time comparison\n // This matches the original logic where minTime bypasses time validation\n this.isInvalid.set(!this.checkTimeValidity(this.chosenTime().trim()));\n \n let chosenTimedayjs = this.getdayjs(this.chosenTime());\n // Defer emission to avoid ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => {\n this.emitTime({\n valid: !this.isInvalid(),\n time: this.chosenTime(),\n epoch: chosenTimedayjs.valueOf()\n });\n }, 0);\n \n // Calculate closest interval\n this.calculateClosestInterval(this.chosenTime());\n \n this._isInitializing = false;\n }\n }\n\n\n emitTime(data: ITime): void {\n this.timeEmitter.emit(data);\n }\n\n // function to get dayjs object when time is given in string\n getdayjs(time: string = '00:00'){\n if(!time || typeof time !== 'string') {\n throw new Error('Time must be a string');\n }\n\n let hours: number;\n let minutes: number;\n\n if(this.clockFormat() === 24) {\n hours = parseInt(time.split(':')[0]);\n minutes = parseInt(time.split(':')[1]);\n } else {\n const timeParts = time.split(' ');\n const AM_PM = timeParts?.[1];\n hours = parseInt(timeParts?.[0]?.split(':')?.[0]);\n minutes = parseInt(timeParts?.[0]?.split(':')?.[1]);\n\n if(AM_PM?.toUpperCase() === 'PM' && hours !== 12) {\n hours += 12;\n } else if(AM_PM?.toUpperCase() === 'AM' && hours === 12) {\n hours = 0;\n }\n }\n\n // Use the date from dateAsEpoch but set the time to the parsed hours and minutes\n const baseDate = dayjs.tz(this.dateAsEpoch(), this.timezone());\n const result = baseDate.hour(hours).minute(minutes).second(0).millisecond(0);\n return result;\n }\n\n closeDropdown() {\n this.dispayToolTip = false;\n this.userInputFlag.set(false);\n this.openStatus.set(false);\n if (this.timepickerDirective) this.timepickerDirective.destroyOverlay();\n }\n\n // toggle timepicker dropdown\n openDropdown(): void {\n this.dispayToolTip = true;\n this.openStatus.set(true);\n }\n\n checkTimeValidity(time: string): 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 // Check if the time format is valid first\n if (!time.match(RE)) {\n return false;\n }\n\n // Restore proper validation logic\n const timedayjs = this.getdayjs(time);\n let flag: boolean = false;\n\n // Original logic: if minTime, givenTime, or firstInterval is start of day, only check format\n if (\n this.minTime() || \n this.givenTime() ||\n (this.firstInterval() &&\n dayjs.tz(this.firstInterval(), this.timezone()).format(this.timeFormat).valueOf() === dayjs.tz(dayjs(), this.timezone()).startOf(\"day\").format(this.timeFormat).valueOf()) \n ) {\n // Only check format validation, not time comparison\n flag = time.match(RE) ? true : false;\n } else {\n // Check against current time for normal cases\n const currentTime = dayjs.tz(dayjs(), this.timezone());\n const timeDiff = timedayjs.diff(currentTime, \"m\");\n flag = timeDiff >= 0;\n }\n\n return flag;\n }\n\n // update chosen time as soon as the user clicks on an interval\n onTimeSelect(time: string): void {\n this.isInvalid.set(!this.checkTimeValidity(time.trim()));\n if (!this.isInvalid()) {\n this.chosenTime.set(time);\n this.calculateClosestInterval(this.chosenTime());\n }\n\n const timedayjs = this.getdayjs(time);\n this.emitTime({\n valid: !this.isInvalid(),\n time: time,\n epoch: timedayjs.valueOf() \n });\n this.openStatus.set(false);\n if (this.timepickerDirective) this.timepickerDirective.destroyOverlay();\n }\n\n // checks validity of time on input change and calculates the closest interval\n onTimeChange(time: string): void {\n // Set user input flag to prevent effects from overriding\n this.userInputFlag.set(true);\n \n // Update the chosenTime signal\n this.chosenTime.set(time);\n const isValid = this.checkTimeValidity(time.trim());\n this.isInvalid.set(!isValid);\n\n // Clear user input flag after a delay to allow effects to work again\n setTimeout(() => {\n this.userInputFlag.set(false);\n }, 1000); // 1 second delay\n\n if (!this.isInvalid()) {\n this.openStatus.set(false);\n if (this.timepickerDirective) this.timepickerDirective.destroyOverlay();\n this.calculateClosestInterval(time);\n }\n const timedayjs = this.getdayjs(time);\n this.emitTime({\n valid: !this.isInvalid(),\n time: time,\n epoch: timedayjs.valueOf() \n });\n }\n\n calculateClosestInterval(time: string): void {\n let roundedEpoch: number;\n // Converting time and date to a dayjs object \n const chosenDate = dayjs.tz(this.dateAsEpoch(), this.timezone()).format(\"DD-MM-YYYY\"); // 05-01-2024\n const parsedTimeWithDate = dayjs.tz(`${chosenDate} ${time}`, `DD-MM-YYYY ${this.timeFormat}`, this.timezone());\n // Converting dayjs object to epoch\n const chosenTimeEpoch = parsedTimeWithDate.valueOf();\n const offset = this.interval() - (dayjs.tz(chosenTimeEpoch, this.timezone()).minute() % this.interval());\n\n if (this.minTime() && !this.givenTime()) {\n this.isHighlighted.set(0);\n return;\n }\n roundedEpoch = offset >= this.interval() / 2 ? (dayjs.tz(chosenTimeEpoch, this.timezone()).subtract(this.interval() - offset, \"m\")).valueOf() : (dayjs.tz(chosenTimeEpoch, this.timezone()).add( offset, \"m\")).valueOf();\n\n // finding the index of element that needs to be highlighted\n if ( chosenTimeEpoch > dayjs.tz(this.dateAsEpoch(), this.timezone()).endOf(\"day\").subtract(this.interval(), \"m\").valueOf()) {\n this.isHighlighted.set(this.timeIntervals().length - 1);\n } else {\n const roundedEpochdayjs = dayjs.tz(roundedEpoch, this.timezone());\n this.isHighlighted.set(this.timeIntervals().findIndex(interval => {\n const intervalObj = dayjs.tz(`${chosenDate} ${interval}`, `DD-MM-YYYY ${this.timeFormat}`, this.timezone());\n return intervalObj.isSame(roundedEpochdayjs);\n }));\n }\n }\n\n\n // populates the dropdown according to the first interval received\n populateDropdown(): void {\n this.timeIntervals.set([]);\n\n // Compute the effective first interval\n let effectiveFirstInterval = this.firstInterval();\n\n // if picker is used as an individual component\n if (!effectiveFirstInterval) {\n // firstInterval is initialised according to the current time\n // if the date is same as the current date\n if (dayjs.tz(this.dateAsEpoch(), this.timezone()).format(\"DD-MM-YYYY\") === dayjs.tz(dayjs(), this.timezone()).format(\"DD-MM-YYYY\") && !this.minTime()) {\n const offset = this.interval() - (dayjs.tz(dayjs(), this.timezone()).minute() % this.interval());\n effectiveFirstInterval = dayjs.tz(dayjs(), this.timezone()).add(offset, \"m\").valueOf();\n }\n // if minimum time to show is provided\n else if(this.minTime()){\n const minTimeDayjs = dayjs.tz(this.minTime(), this.timezone());\n const offset = this.interval() - (minTimeDayjs.minute() % this.interval());\n effectiveFirstInterval = minTimeDayjs.add(offset, \"m\").valueOf();\n }\n // else the firstInterval is initialised as start of day\n else {\n effectiveFirstInterval = dayjs.tz(dayjs(), this.timezone()).startOf(\"day\").valueOf();\n }\n }\n\n if(this.givenTime()){\n // When givenTime is present, always start from 12:00 AM (start of day)\n // regardless of whether the time has passed or not\n effectiveFirstInterval = dayjs.tz(this.dateAsEpoch(), this.timezone()).startOf('day').valueOf();\n this.givenTimeFlag.set(false);\n }\n\n // Store the computed first interval for later use\n this.computedFirstInterval = effectiveFirstInterval;\n\n const dateAsString = dayjs.tz(this.dateAsEpoch(), this.timezone()).format('DD-MM-YYYY');\n const intervalAsString = dayjs.tz(effectiveFirstInterval, this.timezone()).format(this.timeFormat);\n let start = dayjs.tz(`${dateAsString} ${intervalAsString}`, `DD-MM-YYYY ${this.timeFormat}`, this.timezone());\n const end = dayjs.tz(this.dateAsEpoch(), this.timezone()).endOf('d');\n \n while (start.valueOf() < end.valueOf()) {\n this.timeIntervals.update(intervals => [...intervals, start.format(this.timeFormat)]);\n start = start.add(this.interval(), \"m\");\n }\n\n // NEW: Handle end-of-day case - if firstInterval is at or very close to end of day\n // and we're on the same date, show only 11:59 PM\n const endOfDay = dayjs.tz(this.dateAsEpoch(), this.timezone()).endOf(\"d\");\n const firstIntervalDayjs = dayjs.tz(effectiveFirstInterval, this.timezone());\n \n // Check if firstInterval is at or very close to end of day (within 1 minute)\n const isAtEndOfDay = firstIntervalDayjs.isSame(endOfDay, 'day') && \n firstIntervalDayjs.diff(endOfDay, 'minute') >= -1;\n \n if (isAtEndOfDay || this.timeIntervals().length === 0) {\n // Clear existing intervals and add only 11:59 PM\n this.timeIntervals.set([]);\n this.timeIntervals.update(intervals => [...intervals, endOfDay.format(this.timeFormat)]);\n }\n }\n\n ngOnDestroy() {\n if (this.tooltipDirective) this.tooltipDirective.hideToolTip();\n }\n}\n\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TimePickerComponent } from \"./timepicker.component\";\nimport { ToolTipModule } from \"mis-crystal-design-system/tooltip\";\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { TimepickerDirective } from './timepicker.directive';\n\n@NgModule({\n declarations: [TimePickerComponent, TimepickerDirective],\n imports: [CommonModule, FormsModule, ToolTipModule, OverlayModule],\n exports: [TimePickerComponent]\n})\nexport class TimePickerModule {\n static forRoot(): ModuleWithProviders<TimePickerModule> {\n return { ngModule: TimePickerModule, providers: [] };\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -155,15 +155,16 @@ class TimeRangePickerComponent {
|
|
|
155
155
|
// Calculate start time epoch for comparison
|
|
156
156
|
const startTimeEpoch = dayjs.tz(`${this.getStartDate()} ${this.startTime().time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();
|
|
157
157
|
const endTimeEpoch = dayjs.tz(`${this.getEndDate()} ${this.endTime().time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();
|
|
158
|
-
// Auto-adjust end time if start time
|
|
159
|
-
|
|
158
|
+
// Auto-adjust end time if start time > end time (for both same and different dates)
|
|
159
|
+
// This ensures end time is always after start time
|
|
160
|
+
if (startTimeEpoch > endTimeEpoch) {
|
|
160
161
|
// Calculate new end time as start time + interval
|
|
161
162
|
let newEndTimeEpoch = dayjs.tz(startTimeEpoch, this.timezone()).add(this.interval(), "m").valueOf();
|
|
162
163
|
// If same date, check if the new end time would go beyond end of day
|
|
163
164
|
if (this.getStartDate() === this.getEndDate()) {
|
|
164
165
|
const endOfDay = dayjs.tz(this.startDateEpoch(), this.timezone()).endOf("d").valueOf();
|
|
165
166
|
if (newEndTimeEpoch > endOfDay) {
|
|
166
|
-
//
|
|
167
|
+
// Set end time to 11:59 PM (end of day) when start time is last interval
|
|
167
168
|
newEndTimeEpoch = endOfDay;
|
|
168
169
|
}
|
|
169
170
|
}
|
|
@@ -178,26 +179,37 @@ class TimeRangePickerComponent {
|
|
|
178
179
|
start: this._firstIntervals().start,
|
|
179
180
|
end: newEndTimeEpoch
|
|
180
181
|
});
|
|
182
|
+
// Trigger change to force end timepicker to update its display with the new end time
|
|
183
|
+
// This is necessary when we reset the end time due to conflict
|
|
184
|
+
this.triggerChange.update(value => !value);
|
|
181
185
|
}
|
|
182
|
-
//
|
|
183
|
-
//
|
|
186
|
+
// Update end timepicker's firstInterval when both timepickers are on the same day
|
|
187
|
+
// ALWAYS update to ensure dropdown starts from next interval after start time
|
|
188
|
+
// This fixes the bug where selecting an earlier start time doesn't update end picker intervals
|
|
189
|
+
// NOTE: We only update firstInterval (dropdown options), NOT the selected end time value
|
|
190
|
+
// The timepicker component now handles firstInterval changes separately and won't reset chosenTime
|
|
184
191
|
if (this.getStartDate() === this.getEndDate()) {
|
|
185
|
-
// Only update firstInterval if there
|
|
186
|
-
|
|
192
|
+
// Only update firstInterval if there's no conflict (start < end)
|
|
193
|
+
// If there's a conflict, it's already handled above and firstInterval was updated there
|
|
194
|
+
if (startTimeEpoch < endTimeEpoch) {
|
|
187
195
|
// Calculate the next interval after the selected start time
|
|
188
196
|
let nextIntervalAfterStart = dayjs.tz(startTimeEpoch, this.timezone()).add(this.interval(), "m").valueOf();
|
|
189
|
-
//
|
|
197
|
+
// If next interval would go beyond end of day, use end of day instead
|
|
190
198
|
const endOfDay = dayjs.tz(this.startDateEpoch(), this.timezone()).endOf("d").valueOf();
|
|
191
199
|
if (nextIntervalAfterStart > endOfDay) {
|
|
192
200
|
nextIntervalAfterStart = endOfDay;
|
|
193
201
|
}
|
|
194
202
|
// Update the firstIntervals to make end timepicker dropdown start from next interval after start time
|
|
203
|
+
// This ensures users can always select times between the new start time and the current end time
|
|
204
|
+
// The timepicker component will update the dropdown but preserve the selected end time value
|
|
195
205
|
this._firstIntervals.set({
|
|
196
206
|
start: this._firstIntervals().start,
|
|
197
207
|
end: nextIntervalAfterStart
|
|
198
208
|
});
|
|
209
|
+
// NOTE: We don't call triggerChange here because we only want to update the dropdown,
|
|
210
|
+
// not reset the selected end time. The timepicker's separate effect for firstInterval
|
|
211
|
+
// will handle updating the dropdown without resetting chosenTime.
|
|
199
212
|
}
|
|
200
|
-
// If start < end, don't update firstIntervals - let the end timepicker keep its current dropdown
|
|
201
213
|
}
|
|
202
214
|
// Always validate and emit the time range
|
|
203
215
|
const validity = this.checkTimeValidity(this.startTime().time.trim(), this.startDateEpoch()) &&
|
|
@@ -210,12 +222,6 @@ class TimeRangePickerComponent {
|
|
|
210
222
|
startEpoch: dayjs.tz(`${this.getStartDate()} ${this.startTime().time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf(),
|
|
211
223
|
endEpoch: dayjs.tz(`${this.getEndDate()} ${this.endTime().time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf()
|
|
212
224
|
});
|
|
213
|
-
// FIXED: Only trigger change when there was a conflict (start >= end) that required end time update
|
|
214
|
-
const currentStartTimeEpoch = dayjs.tz(`${this.getStartDate()} ${this.startTime().time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();
|
|
215
|
-
const currentEndTimeEpoch = dayjs.tz(`${this.getEndDate()} ${this.endTime().time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();
|
|
216
|
-
if (currentStartTimeEpoch >= currentEndTimeEpoch) {
|
|
217
|
-
this.triggerChange.update(value => !value);
|
|
218
|
-
}
|
|
219
225
|
}
|
|
220
226
|
endPickerHandler(time) {
|
|
221
227
|
this.endTime.set(time);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mis-crystal-design-system-timerangepicker.mjs","sources":["../../../projects/mis-components/timerangepicker/timerangepicker.component.html","../../../projects/mis-components/timerangepicker/timerangepicker.component.ts","../../../projects/mis-components/timerangepicker/timerangepicker.module.ts","../../../projects/mis-components/timerangepicker/mis-crystal-design-system-timerangepicker.ts"],"sourcesContent":["<div class=\"rangepicker-container\" [ngStyle]=\"{'flexDirection': direction(), 'gap': gap()}\">\n <mis-timepicker\n [clockFormat]=\"clockFormat()\"\n [interval]=\"interval()\"\n [dateAsEpoch]=\"startDateEpoch()\"\n [firstInterval]=\"firstIntervals().start\"\n (timeEmitter)=\"startPickerHandler($event)\"\n [timezone]=\"timezone()\"\n [height]=\"height()\"\n [inputWidth]=\"inputWidth()\"\n [dropdownWidth]=\"dropdownWidth()\"\n [showTooltip]=\"showTooltip()\"\n [givenTime]=\"givenStartTime()\"\n [disable]=\"disableStartTime()\"\n ></mis-timepicker>\n <p *ngIf=\"direction() === 'row'\">-</p>\n <mis-timepicker\n [clockFormat]=\"clockFormat()\"\n [interval]=\"interval()\"\n [dateAsEpoch]=\"endDateEpoch()\"\n [firstInterval]=\"firstIntervals().end\"\n (timeEmitter)=\"endPickerHandler($event)\"\n [rangeValidity]=\"rangeValidity()\"\n [timezone]=\"timezone()\"\n [height]=\"height()\"\n [inputWidth]=\"inputWidth()\"\n [dropdownWidth]=\"dropdownWidth()\"\n [showTooltip]=\"showTooltip()\"\n [givenTime]=\"givenEndTime()\"\n [triggerChange]=\"triggerChange()\"\n [disable]=\"disableEndTime()\"\n ></mis-timepicker>\n</div>\n\n","import { Component, input, output, signal, computed, effect, OnInit } from \"@angular/core\";\nimport { ITimeRange, ITime, TDirection } from \"./timerange.namespace\";\nimport dayjs from 'dayjs';\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\n@Component({\n selector: \"mis-timerangepicker\",\n templateUrl: \"./timerangepicker.component.html\", // Corrected file name\n styleUrls: [\"./timerangepicker.component.scss\"]\n})\nexport class TimeRangePickerComponent implements OnInit {\n // --- Input Signals (read-only) ---\n inputWidth = input<string>(\"100px\");\n dropdownWidth = input<string | undefined>(undefined);\n height = input<string>(\"46px\");\n timezone = input<string>(\"Asia/Kolkata\");\n startDateEpoch = input<number>(dayjs.tz(dayjs(), this.timezone()).valueOf());\n endDateEpoch = input<number>(dayjs.tz(dayjs(), this.timezone()).valueOf());\n givenStartTime = input<number | undefined>(undefined);\n givenEndTime = input<number | undefined>(undefined);\n clockFormat = input<number>(12);\n interval = input<number>(15);\n showTooltip = input<boolean>(true);\n direction = input<TDirection>('row');\n gap = input<string>('1rem');\n disableStartTime = input<boolean>(false);\n disableEndTime = input<boolean>(false);\n \n // --- Output Signal ---\n timeRangeEmitter = output<ITimeRange>();\n\n // --- Internal Writable Signals ---\n startTime = signal<ITime | null>(null);\n endTime = signal<ITime | null>(null);\n rangeValidity = signal<boolean>(true);\n triggerChange = signal<boolean>(true);\n private _firstIntervals = signal<{ start: number, end: number }>({ start: 0, end: 0 });\n private _isInitializing = false;\n\n // --- Computed Signals (Derived State) ---\n firstIntervals = computed(() => this._firstIntervals()); // A public computed signal to access the writable one\n \n // Helper methods instead of computed signals to avoid signal write conflicts\n private getTimeFormat(): string {\n return this.clockFormat() === 12 ? \"hh:mm a\" : \"HH:mm\";\n }\n \n private getStartDate(): string {\n return dayjs.tz(this.startDateEpoch(), this.timezone()).format(\"DD-MM-YYYY\");\n }\n \n private getEndDate(): string {\n return dayjs.tz(this.endDateEpoch(), this.timezone()).format(\"DD-MM-YYYY\");\n }\n \n private getCurrDate(): string {\n return dayjs.tz(dayjs(), this.timezone()).format(\"DD-MM-YYYY\");\n }\n \n constructor() {\n // Simple constructor - no effects here\n }\n\n ngOnInit(): void {\n // Initialize the component once\n this.initializeComponent();\n }\n\n private initializeComponent(): void {\n this._isInitializing = true;\n \n this.setFirstIntervals();\n const firstIntervals = this._firstIntervals();\n\n this.startTime.set({\n valid: true,\n time: dayjs.tz(firstIntervals.start, this.timezone()).format(this.getTimeFormat()),\n epoch: dayjs.tz(firstIntervals.start, this.timezone()).valueOf()\n });\n \n // Ensure end time is always after start time\n let endTimeEpoch = firstIntervals.end;\n const startTimeEpoch = firstIntervals.start;\n \n // If end time is same or before start time, add one interval to end time\n if (endTimeEpoch <= startTimeEpoch) {\n endTimeEpoch = dayjs.tz(startTimeEpoch, this.timezone()).add(this.interval(), 'm').valueOf();\n \n // Update the firstIntervals to reflect the adjusted end time\n this._firstIntervals.set({\n start: firstIntervals.start,\n end: endTimeEpoch\n });\n }\n \n this.endTime.set({\n valid: true,\n time: dayjs.tz(endTimeEpoch, this.timezone()).format(this.getTimeFormat()),\n epoch: endTimeEpoch\n });\n \n this._isInitializing = false;\n }\n\n // calculate the first interval of the picker\n private setFirstIntervals(): void {\n let firstIntervalForStartPicker: number;\n let firstIntervalForEndPicker: number;\n\n const minutes = dayjs.tz(dayjs(), this.timezone()).minute();\n const offset = this.interval() - (minutes % this.interval());\n const currentTime = dayjs.tz(dayjs(), this.timezone()).valueOf();\n\n if( this.getStartDate() === this.getCurrDate() ){\n if(this.getStartDate() === this.getEndDate()){\n if(currentTime >= dayjs.tz(this.startDateEpoch(), this.timezone()).endOf(\"d\").subtract(this.interval(),\"m\").valueOf()){\n firstIntervalForStartPicker = currentTime;\n firstIntervalForEndPicker = dayjs.tz(this.endDateEpoch(), this.timezone()).endOf(\"d\").valueOf();\n } else {\n firstIntervalForStartPicker = dayjs.tz(dayjs(), this.timezone()).add(offset, \"m\").valueOf();\n // For same date, end picker should start from beginning of day to avoid validation issues\n firstIntervalForEndPicker = dayjs.tz(this.endDateEpoch(), this.timezone()).startOf(\"d\").valueOf();\n }\n } else {\n if(currentTime >= dayjs.tz(this.startDateEpoch(), this.timezone()).endOf(\"d\").subtract(this.interval(),\"m\").valueOf()){\n firstIntervalForStartPicker = currentTime;\n firstIntervalForEndPicker = dayjs.tz(this.endDateEpoch(), this.timezone()).endOf(\"d\").valueOf();\n } else {\n firstIntervalForStartPicker = dayjs.tz(dayjs(), this.timezone()).add(offset, \"m\").valueOf();\n firstIntervalForEndPicker = dayjs.tz(this.endDateEpoch(), this.timezone()).startOf(\"d\").valueOf();\n }\n }\n } else {\n if(this.getStartDate() === this.getEndDate()){\n firstIntervalForStartPicker = dayjs.tz(this.startDateEpoch(), this.timezone()).startOf(\"d\").valueOf();\n firstIntervalForEndPicker = dayjs.tz(this.endDateEpoch(), this.timezone()).add(this.interval(), \"m\").valueOf();\n } else {\n firstIntervalForStartPicker = dayjs.tz(this.startDateEpoch(), this.timezone()).startOf(\"d\").valueOf();\n firstIntervalForEndPicker = dayjs.tz(this.endDateEpoch(), this.timezone()).startOf(\"d\").valueOf();\n }\n }\n\n if(this.givenStartTime()) {\n firstIntervalForStartPicker = this.givenStartTime()!;\n }\n \n if(this.givenEndTime()) {\n firstIntervalForEndPicker = this.givenEndTime()!;\n }\n \n this._firstIntervals.set({ start: firstIntervalForStartPicker, end: firstIntervalForEndPicker });\n }\n\n // --- Public Methods ---\n emitTimeRange(data: ITimeRange): void {\n this.timeRangeEmitter.emit(data);\n }\n\n startPickerHandler(time: ITime): void {\n this.startTime.set(time);\n this.rangeValidity.set(true);\n \n // Don't emit during initialization\n if (this._isInitializing) {\n return;\n }\n\n // Calculate start time epoch for comparison\n const startTimeEpoch = dayjs.tz(`${this.getStartDate()} ${this.startTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();\n const endTimeEpoch = dayjs.tz(`${this.getEndDate()} ${this.endTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();\n\n // Auto-adjust end time if start time >= end time (for both same and different dates)\n if (startTimeEpoch >= endTimeEpoch) {\n // Calculate new end time as start time + interval\n let newEndTimeEpoch = dayjs.tz(startTimeEpoch, this.timezone()).add(this.interval(), \"m\").valueOf();\n \n // If same date, check if the new end time would go beyond end of day\n if (this.getStartDate() === this.getEndDate()) {\n const endOfDay = dayjs.tz(this.startDateEpoch(), this.timezone()).endOf(\"d\").valueOf();\n if (newEndTimeEpoch > endOfDay) {\n // NEW: Set end time to 11:59 PM (end of day) when start time is last interval\n newEndTimeEpoch = endOfDay;\n }\n }\n \n // Update the end time signal\n this.endTime.set({\n valid: true,\n time: dayjs.tz(newEndTimeEpoch, this.timezone()).format(this.getTimeFormat()),\n epoch: newEndTimeEpoch\n });\n \n // Update the firstIntervals to reflect the new end time\n this._firstIntervals.set({ \n start: this._firstIntervals().start, \n end: newEndTimeEpoch \n });\n }\n\n // NEW: Update end timepicker's firstInterval when both timepickers are on the same day\n // BUT only if there was a conflict (start >= end) or if we need to adjust for end of day\n if (this.getStartDate() === this.getEndDate()) {\n // Only update firstInterval if there was a conflict or if we're at end of day\n if (startTimeEpoch >= endTimeEpoch) {\n // Calculate the next interval after the selected start time\n let nextIntervalAfterStart = dayjs.tz(startTimeEpoch, this.timezone()).add(this.interval(), \"m\").valueOf();\n \n // NEW: If next interval would go beyond end of day, use end of day instead\n const endOfDay = dayjs.tz(this.startDateEpoch(), this.timezone()).endOf(\"d\").valueOf();\n if (nextIntervalAfterStart > endOfDay) {\n nextIntervalAfterStart = endOfDay;\n }\n \n // Update the firstIntervals to make end timepicker dropdown start from next interval after start time\n this._firstIntervals.set({ \n start: this._firstIntervals().start, \n end: nextIntervalAfterStart \n });\n }\n // If start < end, don't update firstIntervals - let the end timepicker keep its current dropdown\n }\n\n // Always validate and emit the time range\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: dayjs.tz(`${this.getStartDate()} ${this.startTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf(),\n endEpoch: dayjs.tz(`${this.getEndDate()} ${this.endTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf()\n });\n\n // FIXED: Only trigger change when there was a conflict (start >= end) that required end time update\n const currentStartTimeEpoch = dayjs.tz(`${this.getStartDate()} ${this.startTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();\n const currentEndTimeEpoch = dayjs.tz(`${this.getEndDate()} ${this.endTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();\n \n if (currentStartTimeEpoch >= currentEndTimeEpoch) {\n this.triggerChange.update(value => !value);\n }\n }\n\n endPickerHandler(time: ITime): void {\n this.endTime.set(time);\n \n // Don't emit during initialization\n if (this._isInitializing) {\n return;\n }\n\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: dayjs.tz(`${this.getStartDate()} ${this.startTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf(),\n endEpoch: dayjs.tz(`${this.getEndDate()} ${this.endTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).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 timedayjs = dayjs.tz(`${dayjs.tz(date, this.timezone()).format(\"DD-MM-YYYY\")} ${time}`, `'DD-MM-YYYY' ${this.getTimeFormat()}`, this.timezone());\n let flag: boolean = false;\n\n if ((this.givenStartTime() && this.givenEndTime()) || (this.getStartDate() !== this.getEndDate() && this.getStartDate() !== this.getCurrDate())) {\n flag = time.match(RE) ? true : false;\n } else {\n flag = time.match(RE) && timedayjs.diff(dayjs.tz(dayjs(), this.timezone()), \"m\") >= 0 ? true : false;\n }\n return flag;\n }\n\n rangeValidation(validity: boolean) {\n if (validity && this.getStartDate() === this.getEndDate()) {\n const startdayjs = dayjs.tz(this.startTime()!.time, this.getTimeFormat(), this.timezone());\n const enddayjs = dayjs.tz(this.endTime()!.time, this.getTimeFormat(), this.timezone());\n this.rangeValidity.set(enddayjs.diff(startdayjs, \"m\") >= 1);\n }\n }\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}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mis-crystal-design-system-timerangepicker.mjs","sources":["../../../projects/mis-components/timerangepicker/timerangepicker.component.html","../../../projects/mis-components/timerangepicker/timerangepicker.component.ts","../../../projects/mis-components/timerangepicker/timerangepicker.module.ts","../../../projects/mis-components/timerangepicker/mis-crystal-design-system-timerangepicker.ts"],"sourcesContent":["<div class=\"rangepicker-container\" [ngStyle]=\"{'flexDirection': direction(), 'gap': gap()}\">\n <mis-timepicker\n [clockFormat]=\"clockFormat()\"\n [interval]=\"interval()\"\n [dateAsEpoch]=\"startDateEpoch()\"\n [firstInterval]=\"firstIntervals().start\"\n (timeEmitter)=\"startPickerHandler($event)\"\n [timezone]=\"timezone()\"\n [height]=\"height()\"\n [inputWidth]=\"inputWidth()\"\n [dropdownWidth]=\"dropdownWidth()\"\n [showTooltip]=\"showTooltip()\"\n [givenTime]=\"givenStartTime()\"\n [disable]=\"disableStartTime()\"\n ></mis-timepicker>\n <p *ngIf=\"direction() === 'row'\">-</p>\n <mis-timepicker\n [clockFormat]=\"clockFormat()\"\n [interval]=\"interval()\"\n [dateAsEpoch]=\"endDateEpoch()\"\n [firstInterval]=\"firstIntervals().end\"\n (timeEmitter)=\"endPickerHandler($event)\"\n [rangeValidity]=\"rangeValidity()\"\n [timezone]=\"timezone()\"\n [height]=\"height()\"\n [inputWidth]=\"inputWidth()\"\n [dropdownWidth]=\"dropdownWidth()\"\n [showTooltip]=\"showTooltip()\"\n [givenTime]=\"givenEndTime()\"\n [triggerChange]=\"triggerChange()\"\n [disable]=\"disableEndTime()\"\n ></mis-timepicker>\n</div>\n\n","import { Component, input, output, signal, computed, effect, OnInit } from \"@angular/core\";\nimport { ITimeRange, ITime, TDirection } from \"./timerange.namespace\";\nimport dayjs from 'dayjs';\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\n@Component({\n selector: \"mis-timerangepicker\",\n templateUrl: \"./timerangepicker.component.html\", // Corrected file name\n styleUrls: [\"./timerangepicker.component.scss\"]\n})\nexport class TimeRangePickerComponent implements OnInit {\n // --- Input Signals (read-only) ---\n inputWidth = input<string>(\"100px\");\n dropdownWidth = input<string | undefined>(undefined);\n height = input<string>(\"46px\");\n timezone = input<string>(\"Asia/Kolkata\");\n startDateEpoch = input<number>(dayjs.tz(dayjs(), this.timezone()).valueOf());\n endDateEpoch = input<number>(dayjs.tz(dayjs(), this.timezone()).valueOf());\n givenStartTime = input<number | undefined>(undefined);\n givenEndTime = input<number | undefined>(undefined);\n clockFormat = input<number>(12);\n interval = input<number>(15);\n showTooltip = input<boolean>(true);\n direction = input<TDirection>('row');\n gap = input<string>('1rem');\n disableStartTime = input<boolean>(false);\n disableEndTime = input<boolean>(false);\n \n // --- Output Signal ---\n timeRangeEmitter = output<ITimeRange>();\n\n // --- Internal Writable Signals ---\n startTime = signal<ITime | null>(null);\n endTime = signal<ITime | null>(null);\n rangeValidity = signal<boolean>(true);\n triggerChange = signal<boolean>(true);\n private _firstIntervals = signal<{ start: number, end: number }>({ start: 0, end: 0 });\n private _isInitializing = false;\n\n // --- Computed Signals (Derived State) ---\n firstIntervals = computed(() => this._firstIntervals()); // A public computed signal to access the writable one\n \n // Helper methods instead of computed signals to avoid signal write conflicts\n private getTimeFormat(): string {\n return this.clockFormat() === 12 ? \"hh:mm a\" : \"HH:mm\";\n }\n \n private getStartDate(): string {\n return dayjs.tz(this.startDateEpoch(), this.timezone()).format(\"DD-MM-YYYY\");\n }\n \n private getEndDate(): string {\n return dayjs.tz(this.endDateEpoch(), this.timezone()).format(\"DD-MM-YYYY\");\n }\n \n private getCurrDate(): string {\n return dayjs.tz(dayjs(), this.timezone()).format(\"DD-MM-YYYY\");\n }\n \n constructor() {\n // Simple constructor - no effects here\n }\n\n ngOnInit(): void {\n // Initialize the component once\n this.initializeComponent();\n }\n\n private initializeComponent(): void {\n this._isInitializing = true;\n \n this.setFirstIntervals();\n const firstIntervals = this._firstIntervals();\n\n this.startTime.set({\n valid: true,\n time: dayjs.tz(firstIntervals.start, this.timezone()).format(this.getTimeFormat()),\n epoch: dayjs.tz(firstIntervals.start, this.timezone()).valueOf()\n });\n \n // Ensure end time is always after start time\n let endTimeEpoch = firstIntervals.end;\n const startTimeEpoch = firstIntervals.start;\n \n // If end time is same or before start time, add one interval to end time\n if (endTimeEpoch <= startTimeEpoch) {\n endTimeEpoch = dayjs.tz(startTimeEpoch, this.timezone()).add(this.interval(), 'm').valueOf();\n \n // Update the firstIntervals to reflect the adjusted end time\n this._firstIntervals.set({\n start: firstIntervals.start,\n end: endTimeEpoch\n });\n }\n \n this.endTime.set({\n valid: true,\n time: dayjs.tz(endTimeEpoch, this.timezone()).format(this.getTimeFormat()),\n epoch: endTimeEpoch\n });\n \n this._isInitializing = false;\n }\n\n // calculate the first interval of the picker\n private setFirstIntervals(): void {\n let firstIntervalForStartPicker: number;\n let firstIntervalForEndPicker: number;\n\n const minutes = dayjs.tz(dayjs(), this.timezone()).minute();\n const offset = this.interval() - (minutes % this.interval());\n const currentTime = dayjs.tz(dayjs(), this.timezone()).valueOf();\n\n if( this.getStartDate() === this.getCurrDate() ){\n if(this.getStartDate() === this.getEndDate()){\n if(currentTime >= dayjs.tz(this.startDateEpoch(), this.timezone()).endOf(\"d\").subtract(this.interval(),\"m\").valueOf()){\n firstIntervalForStartPicker = currentTime;\n firstIntervalForEndPicker = dayjs.tz(this.endDateEpoch(), this.timezone()).endOf(\"d\").valueOf();\n } else {\n firstIntervalForStartPicker = dayjs.tz(dayjs(), this.timezone()).add(offset, \"m\").valueOf();\n // For same date, end picker should start from beginning of day to avoid validation issues\n firstIntervalForEndPicker = dayjs.tz(this.endDateEpoch(), this.timezone()).startOf(\"d\").valueOf();\n }\n } else {\n if(currentTime >= dayjs.tz(this.startDateEpoch(), this.timezone()).endOf(\"d\").subtract(this.interval(),\"m\").valueOf()){\n firstIntervalForStartPicker = currentTime;\n firstIntervalForEndPicker = dayjs.tz(this.endDateEpoch(), this.timezone()).endOf(\"d\").valueOf();\n } else {\n firstIntervalForStartPicker = dayjs.tz(dayjs(), this.timezone()).add(offset, \"m\").valueOf();\n firstIntervalForEndPicker = dayjs.tz(this.endDateEpoch(), this.timezone()).startOf(\"d\").valueOf();\n }\n }\n } else {\n if(this.getStartDate() === this.getEndDate()){\n firstIntervalForStartPicker = dayjs.tz(this.startDateEpoch(), this.timezone()).startOf(\"d\").valueOf();\n firstIntervalForEndPicker = dayjs.tz(this.endDateEpoch(), this.timezone()).add(this.interval(), \"m\").valueOf();\n } else {\n firstIntervalForStartPicker = dayjs.tz(this.startDateEpoch(), this.timezone()).startOf(\"d\").valueOf();\n firstIntervalForEndPicker = dayjs.tz(this.endDateEpoch(), this.timezone()).startOf(\"d\").valueOf();\n }\n }\n\n if(this.givenStartTime()) {\n firstIntervalForStartPicker = this.givenStartTime()!;\n }\n \n if(this.givenEndTime()) {\n firstIntervalForEndPicker = this.givenEndTime()!;\n }\n \n this._firstIntervals.set({ start: firstIntervalForStartPicker, end: firstIntervalForEndPicker });\n }\n\n // --- Public Methods ---\n emitTimeRange(data: ITimeRange): void {\n this.timeRangeEmitter.emit(data);\n }\n\n startPickerHandler(time: ITime): void {\n this.startTime.set(time);\n this.rangeValidity.set(true);\n \n // Don't emit during initialization\n if (this._isInitializing) {\n return;\n }\n\n // Calculate start time epoch for comparison\n const startTimeEpoch = dayjs.tz(`${this.getStartDate()} ${this.startTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();\n const endTimeEpoch = dayjs.tz(`${this.getEndDate()} ${this.endTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();\n\n // Auto-adjust end time if start time > end time (for both same and different dates)\n // This ensures end time is always after start time\n if (startTimeEpoch > endTimeEpoch) {\n // Calculate new end time as start time + interval\n let newEndTimeEpoch = dayjs.tz(startTimeEpoch, this.timezone()).add(this.interval(), \"m\").valueOf();\n \n // If same date, check if the new end time would go beyond end of day\n if (this.getStartDate() === this.getEndDate()) {\n const endOfDay = dayjs.tz(this.startDateEpoch(), this.timezone()).endOf(\"d\").valueOf();\n if (newEndTimeEpoch > endOfDay) {\n // Set end time to 11:59 PM (end of day) when start time is last interval\n newEndTimeEpoch = endOfDay;\n }\n }\n \n // Update the end time signal\n this.endTime.set({\n valid: true,\n time: dayjs.tz(newEndTimeEpoch, this.timezone()).format(this.getTimeFormat()),\n epoch: newEndTimeEpoch\n });\n \n // Update the firstIntervals to reflect the new end time\n this._firstIntervals.set({ \n start: this._firstIntervals().start, \n end: newEndTimeEpoch \n });\n \n // Trigger change to force end timepicker to update its display with the new end time\n // This is necessary when we reset the end time due to conflict\n this.triggerChange.update(value => !value);\n }\n\n // Update end timepicker's firstInterval when both timepickers are on the same day\n // ALWAYS update to ensure dropdown starts from next interval after start time\n // This fixes the bug where selecting an earlier start time doesn't update end picker intervals\n // NOTE: We only update firstInterval (dropdown options), NOT the selected end time value\n // The timepicker component now handles firstInterval changes separately and won't reset chosenTime\n if (this.getStartDate() === this.getEndDate()) {\n // Only update firstInterval if there's no conflict (start < end)\n // If there's a conflict, it's already handled above and firstInterval was updated there\n if (startTimeEpoch < endTimeEpoch) {\n // Calculate the next interval after the selected start time\n let nextIntervalAfterStart = dayjs.tz(startTimeEpoch, this.timezone()).add(this.interval(), \"m\").valueOf();\n \n // If next interval would go beyond end of day, use end of day instead\n const endOfDay = dayjs.tz(this.startDateEpoch(), this.timezone()).endOf(\"d\").valueOf();\n if (nextIntervalAfterStart > endOfDay) {\n nextIntervalAfterStart = endOfDay;\n }\n \n // Update the firstIntervals to make end timepicker dropdown start from next interval after start time\n // This ensures users can always select times between the new start time and the current end time\n // The timepicker component will update the dropdown but preserve the selected end time value\n this._firstIntervals.set({ \n start: this._firstIntervals().start, \n end: nextIntervalAfterStart \n });\n // NOTE: We don't call triggerChange here because we only want to update the dropdown,\n // not reset the selected end time. The timepicker's separate effect for firstInterval\n // will handle updating the dropdown without resetting chosenTime.\n }\n }\n\n // Always validate and emit the time range\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: dayjs.tz(`${this.getStartDate()} ${this.startTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf(),\n endEpoch: dayjs.tz(`${this.getEndDate()} ${this.endTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf()\n });\n }\n\n endPickerHandler(time: ITime): void {\n this.endTime.set(time);\n \n // Don't emit during initialization\n if (this._isInitializing) {\n return;\n }\n\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: dayjs.tz(`${this.getStartDate()} ${this.startTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf(),\n endEpoch: dayjs.tz(`${this.getEndDate()} ${this.endTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).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 timedayjs = dayjs.tz(`${dayjs.tz(date, this.timezone()).format(\"DD-MM-YYYY\")} ${time}`, `'DD-MM-YYYY' ${this.getTimeFormat()}`, this.timezone());\n let flag: boolean = false;\n\n if ((this.givenStartTime() && this.givenEndTime()) || (this.getStartDate() !== this.getEndDate() && this.getStartDate() !== this.getCurrDate())) {\n flag = time.match(RE) ? true : false;\n } else {\n flag = time.match(RE) && timedayjs.diff(dayjs.tz(dayjs(), this.timezone()), \"m\") >= 0 ? true : false;\n }\n return flag;\n }\n\n rangeValidation(validity: boolean) {\n if (validity && this.getStartDate() === this.getEndDate()) {\n const startdayjs = dayjs.tz(this.startTime()!.time, this.getTimeFormat(), this.timezone());\n const enddayjs = dayjs.tz(this.endTime()!.time, this.getTimeFormat(), this.timezone());\n this.rangeValidity.set(enddayjs.diff(startdayjs, \"m\") >= 1);\n }\n }\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}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -122,9 +122,8 @@
|
|
|
122
122
|
&:focus-within {
|
|
123
123
|
border: 1px solid var(--brand-primary, $pmry_500);
|
|
124
124
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
color: var(--text-secondary, $text_muted);
|
|
125
|
+
input:not(:placeholder-shown) + .mis-placeholder {
|
|
126
|
+
color: transparent !important;
|
|
128
127
|
}
|
|
129
128
|
.mis-placeholder {
|
|
130
129
|
margin-left: 16px;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mis-crystal-design-system",
|
|
3
|
-
"version": "18.1.
|
|
3
|
+
"version": "18.1.4-test-1",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "*",
|
|
6
6
|
"@angular/core": "*",
|
|
@@ -52,18 +52,18 @@
|
|
|
52
52
|
"esm": "./esm2022/button/mis-crystal-design-system-button.mjs",
|
|
53
53
|
"default": "./fesm2022/mis-crystal-design-system-button.mjs"
|
|
54
54
|
},
|
|
55
|
-
"./chip": {
|
|
56
|
-
"types": "./chip/index.d.ts",
|
|
57
|
-
"esm2022": "./esm2022/chip/mis-crystal-design-system-chip.mjs",
|
|
58
|
-
"esm": "./esm2022/chip/mis-crystal-design-system-chip.mjs",
|
|
59
|
-
"default": "./fesm2022/mis-crystal-design-system-chip.mjs"
|
|
60
|
-
},
|
|
61
55
|
"./datepicker_v2": {
|
|
62
56
|
"types": "./datepicker_v2/index.d.ts",
|
|
63
57
|
"esm2022": "./esm2022/datepicker_v2/mis-crystal-design-system-datepicker_v2.mjs",
|
|
64
58
|
"esm": "./esm2022/datepicker_v2/mis-crystal-design-system-datepicker_v2.mjs",
|
|
65
59
|
"default": "./fesm2022/mis-crystal-design-system-datepicker_v2.mjs"
|
|
66
60
|
},
|
|
61
|
+
"./chip": {
|
|
62
|
+
"types": "./chip/index.d.ts",
|
|
63
|
+
"esm2022": "./esm2022/chip/mis-crystal-design-system-chip.mjs",
|
|
64
|
+
"esm": "./esm2022/chip/mis-crystal-design-system-chip.mjs",
|
|
65
|
+
"default": "./fesm2022/mis-crystal-design-system-chip.mjs"
|
|
66
|
+
},
|
|
67
67
|
"./daterangepicker_v2": {
|
|
68
68
|
"types": "./daterangepicker_v2/index.d.ts",
|
|
69
69
|
"esm2022": "./esm2022/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.mjs",
|