@redkhat/timepicker 1.1.0 → 1.2.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/README.md CHANGED
@@ -8,6 +8,16 @@ For features like time ranges or specific hour selection, Angular's official met
8
8
  ## Demo
9
9
  [RkTimepicker](https://redkhat.github.io/timepicker/)
10
10
 
11
+ ## Preview
12
+
13
+ ### Light Theme
14
+
15
+ ![Light Theme](https://github.com/redkhat/timepicker/blob/main/light-preview.png)
16
+
17
+ ## Dark Theme
18
+
19
+ ![Dark Theme](https://github.com/redkhat/timepicker/blob/main/dark-preview.png)
20
+
11
21
  ## Install components and dependencies
12
22
 
13
23
  First install the Angular Material.
@@ -97,6 +97,16 @@ rk-timepicker {
97
97
  width: 100%;
98
98
  text-align: center;
99
99
  }
100
+ input[type="number"]::-webkit-outer-spin-button,
101
+ input[type="number"]::-webkit-inner-spin-button {
102
+ -webkit-appearance: none;
103
+ margin: 0;
104
+ }
105
+
106
+ input[type="number"] {
107
+ -moz-appearance: textfield;
108
+ appearance: textfield;
109
+ }
100
110
  }
101
111
 
102
112
  .rk-time-selector-container {
@@ -418,7 +418,7 @@ class RkTimepickerDial {
418
418
  _currentDial = signal(1);
419
419
  _currentDegree = signal(0);
420
420
  _loading = signal(false);
421
- _motion = 400;
421
+ _motion = 250;
422
422
  _radius = 128;
423
423
  _labelSize = 48;
424
424
  constructor() {
@@ -497,6 +497,9 @@ class RkTimepickerDial {
497
497
  await this._rotateAnimation(this._currentDegree(), snapDegrees, this._motion / 2, 2);
498
498
  this._currentDegree.set(snapDegrees);
499
499
  this._loading.set(false);
500
+ if (this.selected() === 'hours') {
501
+ this.selectedTime.set('minutes');
502
+ }
500
503
  }
501
504
  _fillDial(dial, labels, withClean, inset = 2) {
502
505
  if (withClean) {
@@ -770,6 +773,17 @@ class RkTimepickerInputLabel {
770
773
  this.currentTime.set(newDate);
771
774
  }
772
775
  }
776
+ handleKeydown(event, selected) {
777
+ if (['Enter', 'Escape', 'Tab'].includes(event.code)) {
778
+ if (selected === 'hours') {
779
+ this.onHoursBlur();
780
+ this.selected.set('minutes');
781
+ }
782
+ else {
783
+ this.onMinutesBlur();
784
+ }
785
+ }
786
+ }
773
787
  selectedChange(selected) {
774
788
  if (this.selected() === selected) {
775
789
  return;
@@ -789,7 +803,7 @@ class RkTimepickerInputLabel {
789
803
  @if (!editable()) {
790
804
  {{value().hours.toString().padStart(2, '0')}}
791
805
  } @else {
792
- <input type="text" maxlength="2" #inputH [value]="hours()" (focus)="selectedChange('hours')" (input)="onHoursInput($event)" (blur)="onHoursBlur()" name="hours">
806
+ <input type="number" maxlength="2" #inputH [value]="hours()" (focus)="selectedChange('hours')" (input)="onHoursInput($event)" (keydown)="handleKeydown($event, 'hours')" (blur)="onHoursBlur()" name="hours">
793
807
  }
794
808
  </div>
795
809
  @if (editable()) {
@@ -802,7 +816,7 @@ class RkTimepickerInputLabel {
802
816
  @if (!editable()) {
803
817
  {{value().minutes.toString().padStart(2, '0')}}
804
818
  } @else {
805
- <input type="text" maxlength="2" #inputM [value]="minutes()" (focus)="selectedChange('minutes')" (input)="onMinutesInput($event)" (blur)="onMinutesBlur()" name="minutes">
819
+ <input type="number" maxlength="2" #inputM [value]="minutes()" (focus)="selectedChange('minutes')" (input)="onMinutesInput($event)" (keydown)="handleKeydown($event, 'minutes')" (blur)="onMinutesBlur()" name="minutes">
806
820
  }
807
821
  </div>
808
822
  @if (editable()) {
@@ -827,7 +841,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImpor
827
841
  @if (!editable()) {
828
842
  {{value().hours.toString().padStart(2, '0')}}
829
843
  } @else {
830
- <input type="text" maxlength="2" #inputH [value]="hours()" (focus)="selectedChange('hours')" (input)="onHoursInput($event)" (blur)="onHoursBlur()" name="hours">
844
+ <input type="number" maxlength="2" #inputH [value]="hours()" (focus)="selectedChange('hours')" (input)="onHoursInput($event)" (keydown)="handleKeydown($event, 'hours')" (blur)="onHoursBlur()" name="hours">
831
845
  }
832
846
  </div>
833
847
  @if (editable()) {
@@ -840,7 +854,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImpor
840
854
  @if (!editable()) {
841
855
  {{value().minutes.toString().padStart(2, '0')}}
842
856
  } @else {
843
- <input type="text" maxlength="2" #inputM [value]="minutes()" (focus)="selectedChange('minutes')" (input)="onMinutesInput($event)" (blur)="onMinutesBlur()" name="minutes">
857
+ <input type="number" maxlength="2" #inputM [value]="minutes()" (focus)="selectedChange('minutes')" (input)="onMinutesInput($event)" (keydown)="handleKeydown($event, 'minutes')" (blur)="onMinutesBlur()" name="minutes">
844
858
  }
845
859
  </div>
846
860
  @if (editable()) {
@@ -934,6 +948,7 @@ class RkTimepicker {
934
948
  }
935
949
  this._isOpen.set(false);
936
950
  this.closed.emit();
951
+ this.selected.set('hours');
937
952
  input.focus();
938
953
  });
939
954
  }
@@ -1 +1 @@
1
- {"version":3,"file":"redkhat-timepicker.mjs","sources":["../../../../src/timepicker/src/lib/utils/clock-iterable.ts","../../../../src/timepicker/src/lib/utils/time.ts","../../../../src/timepicker/src/lib/utils/animation.ts","../../../../src/timepicker/src/lib/utils/events.ts","../../../../src/timepicker/src/lib/utils/angle.ts","../../../../src/timepicker/src/lib/utils/constants.ts","../../../../src/timepicker/src/lib/timepicker-dial.ts","../../../../src/timepicker/src/lib/timepicker-input-label.ts","../../../../src/timepicker/src/lib/timepicker.ts","../../../../src/timepicker/src/lib/timepicker-input.ts","../../../../src/timepicker/src/lib/timepicker-toggle.ts","../../../../src/timepicker/src/lib/clock.ts","../../../../src/timepicker/src/public-api.ts","../../../../src/timepicker/src/redkhat-timepicker.ts"],"sourcesContent":["\n/**\n * A class that implements the `Iterable` interface to generate coordinates for clock labels.\n * \n * @template T - The type of the labels.\n */\nexport class ClockIterable<T> implements Iterable<[T, number, number]> {\n /**\n * The labels to be positioned around the clock.\n */\n private labels: T[];\n\n /**\n * The radius of the clock.\n */\n private radio: number;\n\n /**\n * The size of each label.\n */\n private labelSize: number;\n\n /**\n * The inset distance from the edge of the clock.\n */\n private inset: number;\n\n /**\n * The degrees between each label.\n */\n private readonly degreesByNumber = 30;\n\n /**\n * Creates an instance of ClockIterable.\n * \n * @param labels - An array of labels to be positioned around the clock [12, 1, 2, 3...].\n * @param labelSize - The size of each label.\n * @param diameter - The diameter of the clock.\n * @param inset - The inset distance from the edge of the clock (default is 0).\n */\n constructor(labels: T[], labelSize: number, diameter: number, inset: number = 0) {\n this.labels = labels;\n this.labelSize = labelSize / 2;\n this.radio = (diameter / 2) - inset;\n this.inset = inset;\n }\n\n /**\n * Returns an iterator that yields the label and its x, y coordinates.\n * \n * @returns An iterator that yields a tuple containing the label and its x, y coordinates.\n */\n *[Symbol.iterator](): Iterator<[T, number, number]> {\n for (let i = 0; i < this.labels.length; i++) {\n const x = this.radio + (this.radio - this.labelSize) * Math.sin(i * this.degreesByNumber * Math.PI / 180);\n const y = this.radio - (this.radio - this.labelSize) * Math.cos(i * this.degreesByNumber * Math.PI / 180);\n yield [this.labels[i], this.inset + x - this.labelSize, this.inset + y - this.labelSize];\n }\n }\n}\n","export function secondsToDate(seconds: number): Date {\n const initialDate = new Date(0, 0, 0, 0);\n const date = new Date(initialDate.getTime() + seconds * 1000);\n return date;\n}\n\nexport function detectTimeFormat(date: Date): string {\n const localTime = date.toLocaleTimeString();\n if (localTime.includes('AM') || localTime.includes('PM')) {\n return '12h';\n } else {\n return '24h';\n }\n}\n\nexport function splitDate(date: Date): SimpleTime {\n const hours = date.getHours();\n const minutes = date.getMinutes();\n return { hours, minutes };\n}\n\nexport function amPmTransform(isAm: string, date: Date) : Date {\n const newDate = new Date(date);\n const tempHours = newDate.getHours();\n if (isAm === 'AM' && tempHours >= 12) {\n newDate.setHours(tempHours - 12);\n } else if (isAm === 'PM' && tempHours < 12) {\n newDate.setHours(tempHours + 12);\n }\n return newDate;\n}\n\nexport function validateTimeValue(value: string, max: number): string {\n let numericValue = value.replace(/[^0-9]/g, '');\n\n if (numericValue.length > 2) {\n numericValue = numericValue.slice(0, 2);\n }\n\n if (numericValue === '') {\n return '';\n }\n const num = parseInt(numericValue, 10);\n return num > max ? max.toString() : numericValue;\n}\n\nexport function formatTimeValue(value: string, defaultValue: string, padLength: number = 2): string {\n if (value === '') {\n return defaultValue;\n }\n const num = parseInt(value, 10);\n if (num === 0) {\n return defaultValue;\n }\n return value.padStart(padLength, '0');\n}\n\nexport interface SimpleTime {\n hours: number;\n minutes: number;\n}\n\n\n/**\n * Converts a time string or number to the number of seconds since midnight.\n *\n * Supported formats include:\n * - Integers (e.g., \"10\", \"1030\", 10, 1030) in 24-hour format (up to 2359).\n * - Space-separated numbers (e.g., \"10 30\") as HH MM.\n * - Colon-separated numbers (e.g., \"10:30\" or \"10:30:00\") as HH:MM or HH:MM:SS.\n * - Formats with regional AM/PM markers either at the beginning or at the end\n * (e.g., \"10:30am\", \"am 10:30\", \"午後3:25:00\", \"10:30 du matin\").\n *\n * Additionally, this function normalizes Arabic digits (Unicode range \\u0660-\\u0669)\n * to their Western counterparts before processing.\n *\n * @param input The input to convert (can be a string or number).\n * @returns The number of seconds since midnight, or null if the input is invalid.\n */\nexport function timeToSecondsi18n(input: string | number): number | null {\n // Convert input to string and trim whitespace.\n let inputStr = typeof input === 'number' ? String(input) : input;\n inputStr = inputStr.trim();\n\n // Normalize Arabic digits to Western digits if found.\n if (/[\\u0660-\\u0669]/.test(inputStr)) {\n inputStr = inputStr.replace(/[\\u0660-\\u0669]/g, d => (d.charCodeAt(0) - 0x0660).toString());\n }\n // Extended list of AM and PM markers across various regions/languages.\n const AM_MARKERS = [\n 'am', 'a.m.', 'a.m', // English\n '午前', // Japanese\n '上午', // Chinese\n '오전', // Korean\n 'ص', 'صباح', 'صباحاً', // Arabic\n 'du matin', 'matin' // French\n ];\n const PM_MARKERS = [\n 'pm', 'p.m.', 'p.m', // English\n '午後', // Japanese\n '下午', // Chinese\n '오후', // Korean\n 'م', 'مساء', 'مساءً', // Arabic\n \"de l’après-midi\", \"de l'aprés-midi\", \"de l'après-midi\",\n 'après-midi', 'du soir', 'soir' // French\n ];\n\n let period: 'AM' | 'PM' | null = null;\n\n // Helper functions to compare prefix/suffix ignoring case.\n const startsWithIgnoreCase = (str: string, prefix: string) =>\n str.substring(0, prefix.length).toLowerCase() === prefix.toLowerCase();\n const endsWithIgnoreCase = (str: string, suffix: string) =>\n str.substring(str.length - suffix.length).toLowerCase() === suffix.toLowerCase();\n\n // Check if the period marker is at the beginning.\n for (const marker of AM_MARKERS) {\n if (startsWithIgnoreCase(inputStr, marker)) {\n period = 'AM';\n inputStr = inputStr.substring(marker.length).trim();\n break;\n }\n }\n if (!period) {\n for (const marker of PM_MARKERS) {\n if (startsWithIgnoreCase(inputStr, marker)) {\n period = 'PM';\n inputStr = inputStr.substring(marker.length).trim();\n break;\n }\n }\n }\n // If not found at the beginning, check at the end.\n if (!period) {\n for (const marker of AM_MARKERS) {\n if (endsWithIgnoreCase(inputStr, marker)) {\n period = 'AM';\n inputStr = inputStr.substring(0, inputStr.length - marker.length).trim();\n break;\n }\n }\n }\n if (!period) {\n for (const marker of PM_MARKERS) {\n if (endsWithIgnoreCase(inputStr, marker)) {\n period = 'PM';\n inputStr = inputStr.substring(0, inputStr.length - marker.length).trim();\n break;\n }\n }\n }\n\n // Split the numeric part of the time.\n let timeParts: number[] = [];\n\n if (inputStr.includes(':')) {\n // Colon-separated format. Accepts HH:MM or HH:MM:SS.\n const parts = inputStr.split(':');\n if (parts.length < 2 || parts.length > 3) return null;\n for (const part of parts) {\n const num = parseInt(part, 10);\n if (isNaN(num)) return null;\n timeParts.push(num);\n }\n } else if (inputStr.includes(' ')) {\n // Space-separated format (e.g., \"10 30\").\n const parts = inputStr.split(/\\s+/);\n if (parts.length > 3) return null;\n for (const part of parts) {\n const num = parseInt(part, 10);\n if (isNaN(num)) return null;\n timeParts.push(num);\n }\n } else if (/^\\d+$/.test(inputStr)) {\n // Numeric case without separators: \"10\", \"1030\".\n if (inputStr.length <= 2) {\n timeParts = [parseInt(inputStr, 10)];\n } else if (inputStr.length === 3) {\n timeParts = [\n parseInt(inputStr.substring(0, 1), 10),\n parseInt(inputStr.substring(1), 10),\n ];\n } else if (inputStr.length === 4) {\n timeParts = [\n parseInt(inputStr.substring(0, 2), 10),\n parseInt(inputStr.substring(2), 10),\n ];\n } else {\n // Unsupported numeric format with more than 4 digits.\n return null;\n }\n } else {\n // Unrecognized format.\n return null;\n }\n\n // Extract hour, minute, and second (defaulting to 0 if not provided).\n let hour = timeParts[0];\n let minute = timeParts.length >= 2 ? timeParts[1] : 0;\n let second = timeParts.length === 3 ? timeParts[2] : 0;\n\n // Validate minute and second ranges.\n if (minute < 0 || minute > 59) return null;\n if (second < 0 || second > 59) return null;\n\n // Adjust hour based on the AM/PM marker.\n if (period) {\n if (hour < 1 || hour > 12) return null;\n if (period === 'PM') {\n hour = hour === 12 ? 12 : hour + 12;\n } else {\n hour = hour === 12 ? 0 : hour;\n }\n } else {\n // Without a period, assume 24-hour format.\n if (hour < 0 || hour > 23) return null;\n }\n\n return hour * 3600 + minute * 60 + second;\n}\n","export function cubicBezier(p1x: number, p1y: number, p2x: number, p2y: number, t: number): number {\n const cx = 3.0 * p1x;\n const bx = 3.0 * (p2x - p1x) - cx;\n const ax = 1.0 - cx - bx;\n const cy = 3.0 * p1y;\n const by = 3.0 * (p2y - p1y) - cy;\n const ay = 1.0 - cy - by;\n\n let x = t;\n for (let i = 0; i < 4; i++) {\n const t_0 = x * x * x * ax + x * x * bx + x * cx;\n const t_1 = 3 * x * x * ax + 2 * x * bx + cx;\n x = x - (t_0 - t) / t_1;\n }\n return x * x * x * ay + x * x * by + x * cy;\n}\n","import { fromEvent, merge, Observable, tap } from \"rxjs\";\n\nexport interface MouseTouchEvent {\n clientX: number;\n clientY: number;\n pageX: number;\n pageY: number;\n screenX: number;\n screenY: number;\n target: EventTarget | null;\n}\n\n export function normalizeEvent(event: MouseEvent | TouchEvent | Touch): MouseTouchEvent {\n if (event instanceof MouseEvent) {\n return event;\n } else if (event instanceof TouchEvent) {\n return event.touches[0] || event.changedTouches[0];\n } else if (event instanceof Touch) {\n return {\n clientX: event.clientX,\n clientY: event.clientY,\n pageX: event.pageX,\n pageY: event.pageY,\n screenX: event.screenX,\n screenY: event.screenY,\n target: event.target\n };\n }\n return event;\n}\n\n export function createPointerEvents(element: HTMLElement | Element): {\n start$: Observable<PointerEvent>;\n move$: Observable<PointerEvent>;\n end$: Observable<PointerEvent>;\n } {\n const pointerDown$ = fromEvent<PointerEvent>(element, 'pointerdown');\n const pointerMove$ = fromEvent<PointerEvent>(document, 'pointermove');\n const pointerUp$ = fromEvent<PointerEvent>(document, 'pointerup');\n const pointerLeave$ = fromEvent<PointerEvent>(document, 'pointerleave');\n\n const start$ = pointerDown$;\n const move$ = pointerMove$;\n const end$ = merge(pointerUp$, pointerLeave$);\n\n return { start$, move$, end$ };\n}\n","export function snapAngle(angle: number, steps: number): number {\n // Calc the size of each step in the scale. 12 for hours, 60 for minutes\n const stepSize = 360 / steps;\n // Find the closest multiple of the step size. 12 for hours, 60 for minutes\n const closestStep = Math.round(angle / stepSize);\n // Calc the snapped angle\n const snappedAngle = closestStep * stepSize;\n\n return snappedAngle;\n}\n\nexport function hoursToAngle(hour: number): number {\n const angle = (hour - 3) * 30;\n return (angle + 360) % 360;\n}\n\nexport function minutesToAngle(minute: number): number {\n let angle = (minute - 15) * 6;\n angle = (angle + 360) % 360;\n\n return angle;\n}\n\nexport function hours24ToAngle(hour: number): number {\n let angle: number;\n\n if (hour >= 0 && hour <= 11) {\n angle = (hour - 3) * 30; // Dial 1: 0 to 11\n } else {\n angle = (hour - 15) * 30; // Dial 2: 12 to 23\n }\n\n angle = (angle + 360) % 360;\n\n return angle;\n}\n\nexport function angleToHours(angle: number): number {\n // Normalize the angle to be within 0-360 range\n angle = (angle + 360) % 360;\n // Correct mapping: 0 degrees -> 3, 270 degrees -> 12\n let hour = Math.floor((angle + 90) / 30) % 12;\n // Handle the 0 hour case (midnight)\n if (hour === 0) {\n hour = 12;\n }\n\n return hour;\n}\n\nexport function angleToMinutes(angle: number): number {\n // Normalize the angle\n angle = (angle + 360) % 360;\n\n let minute = (angle / 6) + 15;\n\n minute = (minute + 60) % 60; // Ensure positive value and wrap around 60\n\n return Math.floor(minute);\n}\n\nexport function angleToHours24(angle: number, dial: number): number {\n angle = (angle + 360) % 360;\n\n let hour: number = 0;\n const baseValue = angle / 30;\n\n if (dial === 1) { \n hour = (Math.floor(baseValue + 3) % 12 + 12) % 12;\n } else if (dial === 2) { \n hour = (Math.floor(baseValue + 3) % 12) + 12;\n }\n \n return hour;\n}","export const HOURS_LABEL = [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\nexport const HOURS_LABEL_24_P1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\nexport const HOURS_LABEL_24_P2 = [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23];\nexport const MINUTES_LABEL = [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55];\n","import { Component, ChangeDetectionStrategy, ViewEncapsulation, ModelSignal, model, viewChild, ElementRef, Renderer2, DestroyRef, inject, computed, afterNextRender, effect, Injector, WritableSignal, signal, untracked } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { switchMap, takeUntil, tap } from 'rxjs';\n\nimport { ClockIterable } from './utils/clock-iterable';\nimport { amPmTransform, detectTimeFormat, SimpleTime, splitDate } from './utils/time';\nimport { cubicBezier } from './utils/animation';\nimport { normalizeEvent, createPointerEvents, MouseTouchEvent } from './utils/events';\nimport { snapAngle, hoursToAngle, angleToHours, hours24ToAngle, minutesToAngle, angleToHours24, angleToMinutes } from './utils/angle';\nimport { HOURS_LABEL, HOURS_LABEL_24_P1, HOURS_LABEL_24_P2, MINUTES_LABEL } from './utils/constants';\n\n@Component({\n selector: 'rk-timepicker-dial',\n host: {\n 'class': 'rk-timepicker-dial',\n },\n imports: [],\n template: `\t\n <div class=\"rk-timepicker-dial-container\">\n <div #dial class=\"rk-label-container rk-dial-size\">\n </div>\n <div #dial2 class=\"rk-cliped-label rk-dial-size\">\n </div>\n <div #dialSelector class=\"rk-dial-selector\"></div>\n <div class=\"rk-pivot-point\"></div>\n </div>\n `,\n styles: [],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class RkTimepickerDial {\n currentTime: ModelSignal<Date | null> = model.required<Date | null>({alias: 'time'});\n timeFormat: ModelSignal<string | null> = model<string | null>('12h', {alias: 'format'});\n selectedTime: ModelSignal<string | null> = model<string | null>('hours', {alias: 'selected'});\n period: ModelSignal<string> = model<string>('AM');\n\n readonly value = computed(() => {\n const date = this.currentTime();\n return date ? splitDate(date) : { hours: 0, minutes: 0 };\n });\n readonly format = computed(() => {\n const fm = this.timeFormat();\n return (fm && (fm === '24h' || fm === '12h')) ? fm : detectTimeFormat(new Date());\n });\n readonly selected = computed(() => {\n const selected = this.selectedTime();\n return selected === 'hours' || selected === 'minutes' ? selected : 'hours';\n });\n\n private _dial = viewChild.required<ElementRef>('dial');\n private _clipedLabel = viewChild.required<ElementRef>('dial2');\n private _dialSelector = viewChild.required<ElementRef>('dialSelector');\n\n private _elRef: ElementRef = inject(ElementRef);\n private _renderer: Renderer2 = inject(Renderer2);\n private _destroyRef: DestroyRef = inject(DestroyRef);\n private _injector = inject(Injector);\n private _document = inject(DOCUMENT);\n\n private _currentDial = signal(1);\n private _currentDegree: WritableSignal<number> = signal(0);\n private _loading = signal(false);\n private readonly _motion = 400;\n private readonly _radius = 128;\n private readonly _labelSize = 48;\n \n constructor() {\n afterNextRender(() => {\n this._fillBySelected(this.selected(), this.format());\n\n effect(() => {\n const selected = this.selected();\n const format = this.format();\n this._fillBySelected(selected, format);\n untracked(() => {\n const value = this.value();\n this.period.set(this.value().hours < 12 ? 'AM' : 'PM');\n this._currentDial.set(format === '24h' && selected === 'hours' && value.hours >= 12 ? 2 : 1);\n this._handleInputsChange(value, format, selected);\n });\n\n }, { injector: this._injector});\n\n effect(() => {\n const value = this.value();\n untracked(() => {\n if(this._loading()) return;\n const format = this.format();\n const selected = this.selected();\n this.period.set(this.value().hours < 12 ? 'AM' : 'PM');\n this._currentDial.set(format === '24h' && selected === 'hours' && value.hours >= 12 ? 2 : 1);\n this._handleInputsChange(value, format, selected, true);\n })\n }, { injector: this._injector});\n\n effect(() => {\n const period = this.period();\n untracked(() => {\n const currentTime = this.currentTime();\n if(period === null || currentTime === null) return;\n this.currentTime.set(amPmTransform(period, currentTime));\n })\n }, { injector: this._injector});\n\n const { start$, move$, end$ } = createPointerEvents(this._elRef.nativeElement);\n start$.pipe(\n tap((event) => this._onPointerEventInit(normalizeEvent(event))),\n switchMap(() => {\n return move$.pipe(\n takeUntil(end$.pipe(tap((event) => this._onPointerEventStop(normalizeEvent(event)))))\n );\n }),\n takeUntilDestroyed(this._destroyRef)\n ).subscribe(event => {\n const normalized = normalizeEvent(event);\n this._onPointerEventInit(normalized);\n })\n });\n }\n\n private _handleInputsChange(value: SimpleTime, format: string, selected: string, animate = true) {\n if(selected === 'hours') {\n const angle = format === '24h' ? hours24ToAngle(value.hours) : hoursToAngle(value.hours);\n if(animate) {\n this._rotateAnimation(this._currentDegree(), angle, this._motion, 2);\n } else {\n this._moveByAngle(angle, 2);\n }\n this._currentDegree.set(angle);\n } else {\n const angle = minutesToAngle(value.minutes);\n if(animate) {\n this._rotateAnimation(this._currentDegree(), angle, this._motion, 2);\n } else {\n this._moveByAngle(angle, 2);\n }\n this._currentDegree.set(angle);\n }\n }\n\n private _onPointerEventInit(event: MouseTouchEvent) {\n this._loading.set(true);\n this._moveByTouchClick(event, this._dial().nativeElement);\n }\n\n private async _onPointerEventStop(event: MouseTouchEvent) {\n const currentDegree = this._currentDegree();\n const snapDegrees = this.selected() === 'hours' ? snapAngle(currentDegree, 12) : snapAngle(currentDegree, 60);\n\n await this._rotateAnimation(this._currentDegree(), snapDegrees, this._motion / 2, 2);\n this._currentDegree.set(snapDegrees);\n this._loading.set(false);\n }\n\n private _fillDial(dial: HTMLElement, labels: number[], withClean: boolean, inset: number = 2) {\n if (withClean) {\n dial.innerHTML = '';\n }\n const clockIterable = new ClockIterable(labels, this._labelSize, this._radius * 2, inset);\n for (const [label, x, y] of clockIterable) {\n const numero = this._document.createElement('div');\n numero.classList.add('rk-clock-dial-label')\n numero.textContent = this.selected() === 'hours' ? label.toString() : label.toString().padStart(2, '0');\n numero.style.position = 'absolute';\n numero.style.left = x + 'px';\n numero.style.top = y + 'px';\n this._renderer.appendChild(dial, numero);\n }\n }\n\n private _fillBySelected(selected: string, format: string) {\n switch (selected) {\n case 'hours':\n if (format === '12h') {\n this._fillDial(this._dial().nativeElement, HOURS_LABEL, true);\n this._fillDial(this._clipedLabel().nativeElement, HOURS_LABEL, true);\n } else if (format === '24h') {\n this._fillDial(this._dial().nativeElement, HOURS_LABEL_24_P1, true);\n this._fillDial(this._dial().nativeElement, HOURS_LABEL_24_P2, false, 38);\n this._fillDial(this._clipedLabel().nativeElement, HOURS_LABEL_24_P1, true);\n this._fillDial(this._clipedLabel().nativeElement, HOURS_LABEL_24_P2, false, 38);\n }\n break;\n case 'minutes':\n this._fillDial(this._dial().nativeElement, MINUTES_LABEL, true);\n this._fillDial(this._clipedLabel().nativeElement, MINUTES_LABEL, true);\n break;\n default:\n this._fillDial(this._dial().nativeElement, HOURS_LABEL, true);\n this._fillDial(this._clipedLabel().nativeElement, HOURS_LABEL, true);\n }\n }\n\n private _moveByTouchClick(event: MouseTouchEvent, dial: HTMLElement, inset: number = 2) {\n const rect = dial.getBoundingClientRect();\n // relative to the center of the clock\n const x = event.clientX - rect.left - this._radius;\n const y = event.clientY - rect.top - this._radius;\n\n // Calc angle in degrees\n let angle = Math.atan2(y, x) * (180 / Math.PI);\n if (angle < 0) {\n angle += 360; //make sure the angle is in the range [0, 360]\n }\n \n // Calc new position for the object (using radius as reference)\n let radius = this._radius - (this._labelSize / 2) - inset;\n\n//--------------------------------------------------------------------------------------------------------------//\n // logic when format is 24h and two dial exist\n const distanceFromCenter = Math.sqrt(x * x + y * y);\n const MAX_RAD = radius - 20;\n let selectorInset = 0;\n \n if (distanceFromCenter < MAX_RAD && this.selected() === 'hours' && this.format() === '24h') {\n radius -= 36;\n this._currentDial.set(2);\n selectorInset = 36;\n } else {\n this._currentDial.set(1);\n selectorInset = 0;\n }\n \n//----------------------------------------------------------------------------------------------------------------//\n\n const moveX = this._radius + radius * Math.cos(angle * (Math.PI / 180));\n const moveY = this._radius + radius * Math.sin(angle * (Math.PI / 180));\n // Call the provided functions with the calculated values\n this._moveTrack(moveX, moveY);\n this._moveSelector(angle, selectorInset);\n this._currentDegree.set(angle);\n\n //update time\n const snapDegrees = this.selected() === 'hours' ? snapAngle(angle, 12) : snapAngle(angle, 60);\n const currentDate = this.currentTime();\n const date = currentDate ? new Date(currentDate) : new Date();\n \n if(this.selected() === 'hours') {\n let hours = this.format() === '24h' ? angleToHours24(snapDegrees, this._currentDial()) : angleToHours(snapDegrees);\n if(this.format() === '24h') {\n this.period.set(hours < 12 ? 'AM' : 'PM');\n }\n if (this.format() !== '24h' && this.period() === 'PM') {\n hours = hours < 12 ? hours + 12 : hours; \n }\n if(this.period() === 'AM' && hours >= 12 && this.format() === '12h') {\n hours = hours - 12;\n }\n date.setHours(hours);\n } else {\n date.setMinutes(angleToMinutes(snapDegrees));\n }\n \n this.currentTime.set(date);\n }\n\n private _moveByAngle(angle: number, inset: number = 2) {\n // Ensure angle is within 0-360 range\n angle = angle % 360;\n if (angle < 0) {\n angle += 360;\n }\n // Calc new position for the object (using radius as reference)\n let radius = this._radius - (this._labelSize / 2) - inset;\n\n // logic when format is 24h and two dial exist\n let selectorInset = 0;\n if (this.selected() === 'hours' && this.format() === '24h' && this._currentDial() === 2) {\n radius -= 36;\n selectorInset = 36;\n }\n\n const moveX = this._radius + radius * Math.cos(angle * (Math.PI / 180));\n const moveY = this._radius + radius * Math.sin(angle * (Math.PI / 180));\n\n // Call the provided functions with the calculated values\n this._moveTrack(moveX, moveY);\n this._moveSelector(angle, selectorInset);\n }\n\n private _moveTrack(x: number, y: number) {\n this._renderer.setStyle(this._clipedLabel().nativeElement, 'clip-path', `circle(24px at ${x}px ${y}px)`);\n }\n\n private _moveSelector(degrees: number, inset: number = 0) {\n this._renderer.setStyle(this._dialSelector().nativeElement, 'width', 104 - inset + 'px');\n this._renderer.setStyle(this._dialSelector().nativeElement, 'transform', `rotate(${degrees}deg)`);\n }\n\n private async _rotateAnimation(currentDegree: number, degree: number, animationTime: number, inset: number = 2): Promise<void> {\n return new Promise<void>((resolve) => {\n // Calculate the shortest angle difference between the current and target degrees.\n let angleDiff = degree - currentDegree;\n\n // Adjust the angle difference to be within the range of -180 to 180 degrees.\n if (angleDiff > 180) {\n angleDiff -= 360;\n } else if (angleDiff < -180) {\n angleDiff += 360;\n }\n\n // Store the start time of the animation.\n let startTime: number | null = null;\n\n const animate = (timestamp: number) => {\n // Initialize the start time if it hasn't been set yet.\n if (!startTime) startTime = timestamp;\n\n // Calculate the progress of the animation (0 to 1).\n let progress = Math.min((timestamp - startTime) / animationTime, 1);\n\n // Apply a cubic Bezier easing function to the progress. This makes the animation smoother.\n const easedProgress = cubicBezier(0.05, 0.7, 0.1, 1.0, progress);\n\n // Calculate the current angle based on the eased progress.\n const currentAngle = currentDegree + angleDiff * easedProgress;\n\n // Update the position of the dial and selector based on the current angle.\n this._moveByAngle(currentAngle, inset);\n\n // Continue the animation if it's not finished.\n if (progress < 1) {\n requestAnimationFrame(animate);\n } else {\n resolve(); // Resolve the promise when the animation is complete.\n }\n };\n requestAnimationFrame(animate);\n });\n }\n}","import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, input, model, ModelSignal, signal, untracked, viewChild, ViewEncapsulation } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { MatRippleModule } from '@angular/material/core';\nimport { formatTimeValue, splitDate, validateTimeValue } from './utils';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'rk-timepicker-input-label',\n imports: [NgClass, MatRippleModule, FormsModule],\n host: {\n 'class': 'rk-time-input-field',\n },\n template: `\n <div class=\"rk-time-input-label-container\">\n <div class=\"rk-time-selector-container\" matRipple [ngClass]=\"{'rk-time-selector-container-selected': selected() === 'hours'}\" (click)=\"selectedChange('hours')\">\n @if (!editable()) {\n {{value().hours.toString().padStart(2, '0')}}\n } @else {\n <input type=\"text\" maxlength=\"2\" #inputH [value]=\"hours()\" (focus)=\"selectedChange('hours')\" (input)=\"onHoursInput($event)\" (blur)=\"onHoursBlur()\" name=\"hours\">\n }\n </div>\n @if (editable()) {\n <span class=\"rk-time-input-support-label\">{{inputSupportLabels()[0]}}</span>\n }\n </div>\n <div class=\"rk-time-divider\">:</div>\n <div class=\"rk-time-input-label-container\">\n <div class=\"rk-time-selector-container\" matRipple [ngClass]=\"{'rk-time-selector-container-selected': selected() === 'minutes'}\" (click)=\"selectedChange('minutes')\">\n @if (!editable()) {\n {{value().minutes.toString().padStart(2, '0')}}\n } @else {\n <input type=\"text\" maxlength=\"2\" #inputM [value]=\"minutes()\" (focus)=\"selectedChange('minutes')\" (input)=\"onMinutesInput($event)\" (blur)=\"onMinutesBlur()\" name=\"minutes\">\n }\n </div>\n @if (editable()) {\n <span class=\"rk-time-input-support-label\">{{inputSupportLabels()[1]}}</span>\n }\n </div>\n @if (format() === '12h') {\n <div class=\"rk-period-selector-container\">\n <div class=\"rk-period-selector\" matRipple [ngClass]=\"{'rk-period-selector-selected': period() === 'AM'}\" (click)=\"periodSelector('AM')\">AM</div>\n <div class=\"rk-period-selector\" matRipple [ngClass]=\"{'rk-period-selector-selected': period() === 'PM'}\" (click)=\"periodSelector('PM')\">PM</div>\n </div>\n }\n `,\n styles: ``,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class RkTimepickerInputLabel {\n currentTime: ModelSignal<Date | null> = model.required<Date | null>({alias: 'time'});\n selected = model('hours');\n period = model('AM');\n format = model('12h');\n editable = model(false);\n\n hours = signal<string>('');\n minutes = signal<string>('');\n\n inputSupportLabels = input<string[]>(['Hour', 'Minute'], {alias: 'inputLabels'});\n inputHours = viewChild<ElementRef<HTMLInputElement>>('inputH');\n inputMinutes = viewChild<ElementRef<HTMLInputElement>>('inputM');\n\n readonly value = computed(() => {\n const date = this.currentTime();\n const format = this.format();\n if (date) {\n const { hours, minutes } = splitDate(date);\n if (format === '12h') {\n return { hours: hours > 12 ? hours - 12 : hours === 0 ? 12 : hours, minutes };\n }\n return { hours, minutes };\n }\n return { hours: 0, minutes: 0 };\n });\n\n constructor() {\n effect(() => {\n const editable = this.editable();\n const selected = this.selected();\n if (editable) {\n if (selected=== 'hours') {\n this.inputHours()?.nativeElement.focus();\n } else if (selected === 'minutes') {\n this.inputMinutes()?.nativeElement.focus();\n }\n }\n });\n\n effect(() => {\n const value = this.value();\n untracked(() => {\n this.onHoursInput(value.hours.toString().padStart(2, '0'));\n this.onMinutesInput(value.minutes.toString().padStart(2, '0'));\n })\n })\n }\n\n onHoursInput(event: Event|string): void {\n const input = this.inputHours()?.nativeElement;\n const value = typeof event === 'string' ? event : (<HTMLInputElement>event.target)?.value;\n const max = this.format() === '24h' ? 23 : 12;\n const validatedValue = validateTimeValue(value, max);\n\n if (input &&input.value !== validatedValue) {\n input.value = validatedValue;\n }\n this.hours.set(validatedValue);\n\n }\n \n onMinutesInput(event: Event|string): void {\n const input = this.inputMinutes()?.nativeElement;\n const value = typeof event === 'string' ? event : (<HTMLInputElement>event.target)?.value;\n const validatedValue = validateTimeValue(value, 59);\n\n if (input &&input.value !== validatedValue) {\n input.value = validatedValue;\n }\n\n this.minutes.set(validatedValue);\n }\n\n onHoursBlur(): void {\n const defaultHour = this.format() === '24h' ? '00' : '01';\n const formattedValue = formatTimeValue(this.hours(), defaultHour);\n this.hours.set(formattedValue);\n this.updateModel();\n }\n\n onMinutesBlur(): void {\n const formattedValue = formatTimeValue(this.minutes(), '00');\n this.minutes.set(formattedValue);\n this.updateModel();\n }\n\n updateModel() {\n const tempDate = this.currentTime();\n if(tempDate) {\n const newDate = new Date(tempDate);\n let hoursN = Number(this.hours());\n const minutesN = Number(this.minutes());\n if (this.format() === '12h' && this.period() === 'PM') {\n hoursN = hoursN < 12 ? hoursN + 12 : hoursN;\n }\n newDate.setHours(hoursN);\n newDate.setMinutes(minutesN);\n this.currentTime.set(newDate);\n }\n }\n\n selectedChange(selected: string) {\n if (this.selected() === selected) {\n return;\n }\n this.selected.set(selected);\n }\n\n periodSelector(period: string) {\n if (this.period() === period) {\n return;\n }\n this.period.set(period);\n }\n}","import { Component, ChangeDetectionStrategy, ViewEncapsulation, model, input, computed, effect, signal, output, afterRender, InputSignal, viewChild, TemplateRef, OutputEmitterRef, inject, untracked, Signal } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { Dialog, DialogModule, DialogRef } from '@angular/cdk/dialog';\nimport { RkTimepickerDial } from './timepicker-dial';\nimport { RkTimepickerInputLabel } from './timepicker-input-label';\nimport { RkTimepickerInput } from './timepicker-input';\n\n@Component({\n selector: 'rk-timepicker',\n exportAs: 'rkTimepicker',\n imports: [RkTimepickerInputLabel, NgClass, DialogModule, RkTimepickerDial, MatButton, MatIconButton, MatIcon],\n host: {\n '[class.rk-timepicker-landscape]': 'isLandscape()',\n '[class.rk-timepicker-editable]': 'editable()',\n '(keydown)': '_handleKeydown($event)',\n },\n template: `\n <ng-template #panelTemplate>\n <div class=\"rk-timepicker rk-timepicker-panel\">\n <div class=\"rk-timepicker-container\" [ngClass]=\"{ 'rk-timepicker-container-hide': !load() }\">\n <span class=\"rk-timepicker-headline\">{{ headline() }}</span>\n <rk-timepicker-input-label [(time)]=\"currentTime\" [inputLabels]=\"_inputSupportLabels()\" [(editable)]=\"editable\" [(format)]=\"format\" [(period)]=\"period\" [(selected)]=\"selected\"></rk-timepicker-input-label>\n <rk-timepicker-dial [ngClass]=\"{ 'rk-dial-closed': editable(), 'rk-dial-animated': animated()}\" [(time)]=\"currentTime\" [(format)]=\"format\" [(period)]=\"period\" [(selected)]=\"selected\"></rk-timepicker-dial>\n <div class=\"rk-timepicker-footer\">\n <button class=\"rk-timepicker-mode-button\" (click)=\"changeMode()\" mat-icon-button>\n @if (editable()) {\n <mat-icon>schedule</mat-icon>\n } @else {\n <mat-icon>keyboard</mat-icon> \n }\n </button>\n <div class=\"rk-timepicker-actions\">\n <button mat-button (click)=\"onCancel()\">{{_actions()[0]}}</button>\n <button mat-button (click)=\"onConfirm()\">{{_actions()[1]}}</button>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n `,\n styles: ``,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class RkTimepicker {\n selected = model<string>('hours');\n format = model('12h');\n period = model<string>('AM');\n editable = model(false);\n orientation = model<string>('portrait');\n \n _inputSupportLabels = input<string[]>(['Hour', 'Minute'], {alias: 'inputLabels'});\n _headline = input<string[]>(['Enter time', 'Select time'], {alias: 'headline'});\n _actions = input<string[]>(['Cancel', 'OK'], {alias: 'actions'});\n /** Whether the timepicker is currently disabled. */\n readonly disabled: Signal<boolean> = computed(() => !!this._input()?.disabled());\n \n readonly defaultTime: InputSignal<Date | null> = input<Date | null>(null,{alias: 'time'});\n readonly load = signal(false);\n \n readonly isLandscape = computed(() => {\n return this.orientation() === 'landscape';\n });\n \n readonly headline = computed(() => {\n const editable = this.editable();\n const labels = this._headline();\n return editable ? labels[0] : labels[1];\n });\n \n \n protected _panelTemplate = viewChild.required<TemplateRef<unknown>>('panelTemplate');\n private _dialogRef = signal<DialogRef<Date | null> | null>(null);\n \n private _input = signal<RkTimepickerInput | null>(null);\n private _isOpen = signal(false);\n\n currentTime = signal<Date | null>(null);\n animated = signal(false);\n \n /** Emits when the timepicker is opened. */\n readonly opened: OutputEmitterRef<void> = output();\n /** Emits when the timepicker is closed. */\n readonly closed: OutputEmitterRef<void> = output();\n\n readonly selectedTime: OutputEmitterRef<Date> = output();\n \n private _dialog = inject(Dialog);\n\n constructor() {\n effect(() => {\n const value = this.defaultTime();\n if(!value) {\n this.currentTime.set(new Date());\n } else {\n this.currentTime.set(value);\n }\n });\n\n effect(() => {\n const editable = this.editable();\n untracked(() => {\n this.animated.set(true);\n })\n })\n\n afterRender(() => {\n this.load.set(true);\n });\n }\n\n /** Opens the timepicker. */\n open(): void {\n const input = this._input();\n\n if (!input) {\n return;\n }\n\n if (this._isOpen()) {\n return;\n }\n\n this.currentTime.set(input.value());\n this.animated.set(false);\n this._isOpen.set(true);\n this.opened.emit();\n \n const dialogRef = this._dialog.open<Date | null>(this._panelTemplate(), {\n width: '328px',\n });\n\n this._dialogRef.set(dialogRef);\n\n dialogRef.closed.subscribe(result => {\n if(result) {\n this._input()?.value.set(result);\n this.selectedTime.emit(result);\n input.simulateEnter();\n }\n this._isOpen.set(false);\n this.closed.emit();\n input.focus();\n });\n }\n\n /** Registers an input with the timepicker. */\n registerInput(input: RkTimepickerInput): void {\n const currentInput = this._input();\n\n if (currentInput && input !== currentInput ) {\n console.warn('RkTimepicker can only be registered with one input at a time');\n }\n\n this._input.set(input);\n }\n\n private _handleKeydown(event: KeyboardEvent): void {\n const keyCode = event.key;\n if (keyCode === 'Enter') {\n event.preventDefault();\n this.onConfirm();\n } else if (keyCode === 'Escape') {\n event.preventDefault();\n this.onCancel();\n }\n }\n\n\n changeMode() {\n this.editable.set(!this.editable());\n }\n\n \n onConfirm() {\n this._dialogRef()?.close(this.currentTime());\n }\n\n onCancel() {\n this._dialogRef()?.close();\n } \n}\n","import { booleanAttribute, computed, Directive, effect, ElementRef, inject, input, InputSignal, InputSignalWithTransform, model, ModelSignal, Renderer2, Signal, signal } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\nimport { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';\nimport { RkTimepicker } from './timepicker';\nimport { secondsToDate, timeToSecondsi18n as timeToSeconds } from './utils';\n\n@Directive({\n selector: 'input[rkTimepicker]',\n exportAs: 'rkTimepickerInput',\n host: {\n 'class': 'rk-timepicker-input',\n 'type': 'text',\n '(input)': '_handleInput($event.target.value)',\n '(blur)': '_handleBlur()',\n '(keydown)': '_handleKeydown($event)',\n '[disabled]': 'disabled()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: RkTimepickerInput,\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: RkTimepickerInput,\n multi: true,\n },\n {\n provide: MAT_INPUT_VALUE_ACCESSOR,\n useExisting: RkTimepickerInput,\n },\n ]\n})\nexport class RkTimepickerInput implements ControlValueAccessor, Validator {\n private _elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private _renderer = inject(Renderer2);\n \n /** Necessary for ControlValueAccessor implementation */\n private _onChange: ((value: any) => void) | undefined;\n private _onTouched: (() => void) | undefined;\n private _accessorDisabled = signal(false);\n private _validatorOnChange: (() => void) | undefined;\n\n /** Current value of the input. */\n readonly value: ModelSignal<Date | null> = model<Date | null>(null);\n private _tempDateSafe = signal<Date | null>(null);\n \n /** Timepicker that the input is associated with. */\n readonly timepicker: InputSignal<RkTimepicker> = input.required<RkTimepicker>({\n alias: 'rkTimepicker',\n });\n /** Whether the input is disabled. */\n readonly disabled: Signal<boolean> = computed(\n () => this.disabledInput() || this._accessorDisabled(),\n );\n /**\n * Whether the input should be disabled through the template.\n */\n readonly disabledInput: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n alias: 'disabled',\n });\n \n constructor() {\n this._registerTimepicker();\n }\n\n private _updateModelValue() {\n const value = this.value();\n if(!value) {\n this._validatorOnChange?.();\n return\n }\n this._onChange?.(value);\n }\n \n private _validateTimeOrNull(value: string | Date | null) {\n if (value === null || value instanceof Date) {\n this.value.set(value);\n return;\n }\n const validTime = timeToSeconds(value);\n const time = validTime ? secondsToDate(validTime) : null;\n if(!time) {\n this.value.set(null);\n } else {\n const newDate = new Date(this._tempDateSafe() ?? new Date());\n newDate.setHours(time.getHours(), time.getMinutes());\n this.value.set(newDate);\n }\n }\n \n private _updateInputValue() {\n if (this.value() !== null) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'value', this.value()?.toLocaleTimeString([],{ hour: \"2-digit\", minute: \"2-digit\" }));\n }\n }\n\n /** Handles the `input` event. */\n protected _handleInput(value: string) {\n this._validateTimeOrNull(value);\n this._validatorOnChange?.();\n }\n\n /** Handles the `keydown` event. */\n protected _handleKeydown(event: KeyboardEvent) {\n if (['Enter', 'Escape', 'Tab'].includes(event.code)) {\n this._updateModelValue();\n this._updateInputValue();\n }\n }\n\n simulateEnter() {\n this._handleKeydown({ code: 'Enter' } as KeyboardEvent);\n }\n\n /** Handles the `blur` event. */\n protected _handleBlur() {\n this._onTouched?.();\n this._updateModelValue();\n this._updateInputValue();\n }\n\n /** Focuses the input. */\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n\n /** Implemented as a part of ControlValueAccessor. */\n writeValue(value: any): void {\n if(value instanceof Date) {\n this._tempDateSafe.set(value);\n this.value.set(value);\n this._updateInputValue();\n } else {\n this._validateTimeOrNull(value);\n this._updateInputValue();\n }\n }\n /** Implemented as a part of ControlValueAccessor. */\n registerOnChange(fn: (value: any) => void): void {\n this._onChange = fn;\n }\n /** Implemented as a part of ControlValueAccessor. */\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n /** Implemented as a part of ControlValueAccessor. */\n setDisabledState(isDisabled: any): void {\n this._accessorDisabled.set(isDisabled);\n }\n\n // implemented as a part of Validator\n validate(control: AbstractControl): ValidationErrors | null {\n if (control.value == null || this.value() == null) {\n return { invalidTimeFormat: true };\n }\n return null;\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._validatorOnChange = fn;\n }\n\n /** Sets up the logic that registers the input with the timepicker. */\n private _registerTimepicker(): void {\n effect(() => {\n const timepicker = this.timepicker();\n timepicker.registerInput(this);\n timepicker.closed.subscribe(() => this._onTouched?.());\n });\n }\n}\n","import { booleanAttribute, Component, computed, input, InputSignal, InputSignalWithTransform } from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { RkTimepicker } from './timepicker';\n\n@Component({\n selector: 'rk-timepicker-toggle',\n imports: [MatIconButton],\n template: `\n <button mat-icon-button type=\"button\" [disabled]=\"_isDisabled()\" (click)=\"_open($event)\">\n <ng-content select=\"[rkTimepickerToggleIcon]\">\n <svg\n class=\"rk-timepicker-toggle-default-icon\"\n height=\"24px\"\n width=\"24px\"\n viewBox=\"0 -960 960 960\"\n fill=\"currentColor\"\n focusable=\"false\"\n aria-hidden=\"true\">\n <path d=\"m612-292 56-56-148-148v-184h-80v216l172 172ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-400Zm0 320q133 0 226.5-93.5T800-480q0-133-93.5-226.5T480-800q-133 0-226.5 93.5T160-480q0 133 93.5 226.5T480-160Z\"/>\n </svg>\n </ng-content>\n </button>\n `,\n styles: ``\n})\nexport class RkTimepickerToggle {\n readonly timepicker: InputSignal<RkTimepicker> = input.required<RkTimepicker>({\n alias: 'for',\n });\n\n /** Whether the toggle button is disabled. */\n readonly disabled: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n alias: 'disabled',\n });\n\n protected _isDisabled = computed(() => {\n const timepicker = this.timepicker();\n return this.disabled() || timepicker.disabled();\n });\n\n /** Opens the connected timepicker. */\n protected _open(event: Event): void {\n if (this.timepicker() && !this._isDisabled()) {\n this.timepicker().open();\n event.stopPropagation();\n }\n }\n}","import { Component, ChangeDetectionStrategy, ViewEncapsulation, model, input, computed, effect, signal, afterRender } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { RkTimepickerDial } from './timepicker-dial';\nimport { RkTimepickerInputLabel } from './timepicker-input-label';\n\n@Component({\n selector: 'rk-clock',\n exportAs: 'rkClock',\n imports: [RkTimepickerInputLabel, NgClass, RkTimepickerDial, MatButton, MatIconButton, MatIcon],\n host: {\n 'class': 'rk-timepicker',\n '[class.rk-timepicker-landscape]': 'isLandscape()',\n '[class.rk-timepicker-editable]': 'editable()',\n },\n template: `\n <div class=\"rk-timepicker-container\" [ngClass]=\"{ 'rk-timepicker-container-hide': !load() }\">\n <span class=\"rk-timepicker-headline\">{{ headline() }}</span>\n <rk-timepicker-input-label [(time)]=\"value\" [inputLabels]=\"inputSupportLabels()\" [(editable)]=\"editable\" [(format)]=\"format\" [(period)]=\"period\" [(selected)]=\"selected\"></rk-timepicker-input-label>\n <rk-timepicker-dial [ngClass]=\"{ 'rk-dial-closed': editable()}\" [(time)]=\"value\" [(format)]=\"format\" [(period)]=\"period\" [(selected)]=\"selected\"></rk-timepicker-dial>\n <div class=\"rk-timepicker-footer\">\n <button class=\"rk-timepicker-mode-button\" (click)=\"changeMode()\" mat-icon-button>\n @if (editable()) {\n <mat-icon>schedule</mat-icon>\n } @else {\n <mat-icon>keyboard</mat-icon> \n }\n </button>\n </div>\n </div>\n `,\n styles: ``,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class RkClock {\n value= model<Date | null>(null, {alias: 'time'});\n selected = model<string>('hours');\n format = model('24h');\n period = model<string>('AM');\n editable = model(false);\n orientation = model<string>('portrait');\n inputSupportLabels = input<string[]>(['Hour', 'Minute'], {alias: 'inputLabels'});\n _headline = input<string[]>(['Enter time', 'Select time'], {alias: 'headline'});\n\n readonly load = signal(false);\n\n readonly isLandscape = computed(() => {\n return this.orientation() === 'landscape';\n });\n\n readonly headline = computed(() => {\n const editable = this.editable();\n const labels = this._headline();\n return editable ? labels[0] : labels[1];\n });\n\n constructor() {\n effect(() => {\n const value = this.value();\n if(!value) {\n this.value.set(new Date());\n };\n });\n\n afterRender(() => {\n this.load.set(true);\n });\n }\n\n changeMode() {\n this.editable.set(!this.editable());\n }\n}\n","/*\n * Public API Surface of timepicker\n */\nexport * from './lib/timepicker';\nexport * from './lib/timepicker-input';\nexport * from './lib/timepicker-toggle';\nexport * from './lib/clock';\nexport * from './lib/utils/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["timeToSeconds"],"mappings":"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"}
1
+ {"version":3,"file":"redkhat-timepicker.mjs","sources":["../../../../src/timepicker/src/lib/utils/clock-iterable.ts","../../../../src/timepicker/src/lib/utils/time.ts","../../../../src/timepicker/src/lib/utils/animation.ts","../../../../src/timepicker/src/lib/utils/events.ts","../../../../src/timepicker/src/lib/utils/angle.ts","../../../../src/timepicker/src/lib/utils/constants.ts","../../../../src/timepicker/src/lib/timepicker-dial.ts","../../../../src/timepicker/src/lib/timepicker-input-label.ts","../../../../src/timepicker/src/lib/timepicker.ts","../../../../src/timepicker/src/lib/timepicker-input.ts","../../../../src/timepicker/src/lib/timepicker-toggle.ts","../../../../src/timepicker/src/lib/clock.ts","../../../../src/timepicker/src/public-api.ts","../../../../src/timepicker/src/redkhat-timepicker.ts"],"sourcesContent":["\n/**\n * A class that implements the `Iterable` interface to generate coordinates for clock labels.\n * \n * @template T - The type of the labels.\n */\nexport class ClockIterable<T> implements Iterable<[T, number, number]> {\n /**\n * The labels to be positioned around the clock.\n */\n private labels: T[];\n\n /**\n * The radius of the clock.\n */\n private radio: number;\n\n /**\n * The size of each label.\n */\n private labelSize: number;\n\n /**\n * The inset distance from the edge of the clock.\n */\n private inset: number;\n\n /**\n * The degrees between each label.\n */\n private readonly degreesByNumber = 30;\n\n /**\n * Creates an instance of ClockIterable.\n * \n * @param labels - An array of labels to be positioned around the clock [12, 1, 2, 3...].\n * @param labelSize - The size of each label.\n * @param diameter - The diameter of the clock.\n * @param inset - The inset distance from the edge of the clock (default is 0).\n */\n constructor(labels: T[], labelSize: number, diameter: number, inset: number = 0) {\n this.labels = labels;\n this.labelSize = labelSize / 2;\n this.radio = (diameter / 2) - inset;\n this.inset = inset;\n }\n\n /**\n * Returns an iterator that yields the label and its x, y coordinates.\n * \n * @returns An iterator that yields a tuple containing the label and its x, y coordinates.\n */\n *[Symbol.iterator](): Iterator<[T, number, number]> {\n for (let i = 0; i < this.labels.length; i++) {\n const x = this.radio + (this.radio - this.labelSize) * Math.sin(i * this.degreesByNumber * Math.PI / 180);\n const y = this.radio - (this.radio - this.labelSize) * Math.cos(i * this.degreesByNumber * Math.PI / 180);\n yield [this.labels[i], this.inset + x - this.labelSize, this.inset + y - this.labelSize];\n }\n }\n}\n","export function secondsToDate(seconds: number): Date {\n const initialDate = new Date(0, 0, 0, 0);\n const date = new Date(initialDate.getTime() + seconds * 1000);\n return date;\n}\n\nexport function detectTimeFormat(date: Date): string {\n const localTime = date.toLocaleTimeString();\n if (localTime.includes('AM') || localTime.includes('PM')) {\n return '12h';\n } else {\n return '24h';\n }\n}\n\nexport function splitDate(date: Date): SimpleTime {\n const hours = date.getHours();\n const minutes = date.getMinutes();\n return { hours, minutes };\n}\n\nexport function amPmTransform(isAm: string, date: Date) : Date {\n const newDate = new Date(date);\n const tempHours = newDate.getHours();\n if (isAm === 'AM' && tempHours >= 12) {\n newDate.setHours(tempHours - 12);\n } else if (isAm === 'PM' && tempHours < 12) {\n newDate.setHours(tempHours + 12);\n }\n return newDate;\n}\n\nexport function validateTimeValue(value: string, max: number): string {\n let numericValue = value.replace(/[^0-9]/g, '');\n\n if (numericValue.length > 2) {\n numericValue = numericValue.slice(0, 2);\n }\n\n if (numericValue === '') {\n return '';\n }\n const num = parseInt(numericValue, 10);\n return num > max ? max.toString() : numericValue;\n}\n\nexport function formatTimeValue(value: string, defaultValue: string, padLength: number = 2): string {\n if (value === '') {\n return defaultValue;\n }\n const num = parseInt(value, 10);\n if (num === 0) {\n return defaultValue;\n }\n return value.padStart(padLength, '0');\n}\n\nexport interface SimpleTime {\n hours: number;\n minutes: number;\n}\n\n\n/**\n * Converts a time string or number to the number of seconds since midnight.\n *\n * Supported formats include:\n * - Integers (e.g., \"10\", \"1030\", 10, 1030) in 24-hour format (up to 2359).\n * - Space-separated numbers (e.g., \"10 30\") as HH MM.\n * - Colon-separated numbers (e.g., \"10:30\" or \"10:30:00\") as HH:MM or HH:MM:SS.\n * - Formats with regional AM/PM markers either at the beginning or at the end\n * (e.g., \"10:30am\", \"am 10:30\", \"午後3:25:00\", \"10:30 du matin\").\n *\n * Additionally, this function normalizes Arabic digits (Unicode range \\u0660-\\u0669)\n * to their Western counterparts before processing.\n *\n * @param input The input to convert (can be a string or number).\n * @returns The number of seconds since midnight, or null if the input is invalid.\n */\nexport function timeToSecondsi18n(input: string | number): number | null {\n // Convert input to string and trim whitespace.\n let inputStr = typeof input === 'number' ? String(input) : input;\n inputStr = inputStr.trim();\n\n // Normalize Arabic digits to Western digits if found.\n if (/[\\u0660-\\u0669]/.test(inputStr)) {\n inputStr = inputStr.replace(/[\\u0660-\\u0669]/g, d => (d.charCodeAt(0) - 0x0660).toString());\n }\n // Extended list of AM and PM markers across various regions/languages.\n const AM_MARKERS = [\n 'am', 'a.m.', 'a.m', // English\n '午前', // Japanese\n '上午', // Chinese\n '오전', // Korean\n 'ص', 'صباح', 'صباحاً', // Arabic\n 'du matin', 'matin' // French\n ];\n const PM_MARKERS = [\n 'pm', 'p.m.', 'p.m', // English\n '午後', // Japanese\n '下午', // Chinese\n '오후', // Korean\n 'م', 'مساء', 'مساءً', // Arabic\n \"de l’après-midi\", \"de l'aprés-midi\", \"de l'après-midi\",\n 'après-midi', 'du soir', 'soir' // French\n ];\n\n let period: 'AM' | 'PM' | null = null;\n\n // Helper functions to compare prefix/suffix ignoring case.\n const startsWithIgnoreCase = (str: string, prefix: string) =>\n str.substring(0, prefix.length).toLowerCase() === prefix.toLowerCase();\n const endsWithIgnoreCase = (str: string, suffix: string) =>\n str.substring(str.length - suffix.length).toLowerCase() === suffix.toLowerCase();\n\n // Check if the period marker is at the beginning.\n for (const marker of AM_MARKERS) {\n if (startsWithIgnoreCase(inputStr, marker)) {\n period = 'AM';\n inputStr = inputStr.substring(marker.length).trim();\n break;\n }\n }\n if (!period) {\n for (const marker of PM_MARKERS) {\n if (startsWithIgnoreCase(inputStr, marker)) {\n period = 'PM';\n inputStr = inputStr.substring(marker.length).trim();\n break;\n }\n }\n }\n // If not found at the beginning, check at the end.\n if (!period) {\n for (const marker of AM_MARKERS) {\n if (endsWithIgnoreCase(inputStr, marker)) {\n period = 'AM';\n inputStr = inputStr.substring(0, inputStr.length - marker.length).trim();\n break;\n }\n }\n }\n if (!period) {\n for (const marker of PM_MARKERS) {\n if (endsWithIgnoreCase(inputStr, marker)) {\n period = 'PM';\n inputStr = inputStr.substring(0, inputStr.length - marker.length).trim();\n break;\n }\n }\n }\n\n // Split the numeric part of the time.\n let timeParts: number[] = [];\n\n if (inputStr.includes(':')) {\n // Colon-separated format. Accepts HH:MM or HH:MM:SS.\n const parts = inputStr.split(':');\n if (parts.length < 2 || parts.length > 3) return null;\n for (const part of parts) {\n const num = parseInt(part, 10);\n if (isNaN(num)) return null;\n timeParts.push(num);\n }\n } else if (inputStr.includes(' ')) {\n // Space-separated format (e.g., \"10 30\").\n const parts = inputStr.split(/\\s+/);\n if (parts.length > 3) return null;\n for (const part of parts) {\n const num = parseInt(part, 10);\n if (isNaN(num)) return null;\n timeParts.push(num);\n }\n } else if (/^\\d+$/.test(inputStr)) {\n // Numeric case without separators: \"10\", \"1030\".\n if (inputStr.length <= 2) {\n timeParts = [parseInt(inputStr, 10)];\n } else if (inputStr.length === 3) {\n timeParts = [\n parseInt(inputStr.substring(0, 1), 10),\n parseInt(inputStr.substring(1), 10),\n ];\n } else if (inputStr.length === 4) {\n timeParts = [\n parseInt(inputStr.substring(0, 2), 10),\n parseInt(inputStr.substring(2), 10),\n ];\n } else {\n // Unsupported numeric format with more than 4 digits.\n return null;\n }\n } else {\n // Unrecognized format.\n return null;\n }\n\n // Extract hour, minute, and second (defaulting to 0 if not provided).\n let hour = timeParts[0];\n let minute = timeParts.length >= 2 ? timeParts[1] : 0;\n let second = timeParts.length === 3 ? timeParts[2] : 0;\n\n // Validate minute and second ranges.\n if (minute < 0 || minute > 59) return null;\n if (second < 0 || second > 59) return null;\n\n // Adjust hour based on the AM/PM marker.\n if (period) {\n if (hour < 1 || hour > 12) return null;\n if (period === 'PM') {\n hour = hour === 12 ? 12 : hour + 12;\n } else {\n hour = hour === 12 ? 0 : hour;\n }\n } else {\n // Without a period, assume 24-hour format.\n if (hour < 0 || hour > 23) return null;\n }\n\n return hour * 3600 + minute * 60 + second;\n}\n","export function cubicBezier(p1x: number, p1y: number, p2x: number, p2y: number, t: number): number {\n const cx = 3.0 * p1x;\n const bx = 3.0 * (p2x - p1x) - cx;\n const ax = 1.0 - cx - bx;\n const cy = 3.0 * p1y;\n const by = 3.0 * (p2y - p1y) - cy;\n const ay = 1.0 - cy - by;\n\n let x = t;\n for (let i = 0; i < 4; i++) {\n const t_0 = x * x * x * ax + x * x * bx + x * cx;\n const t_1 = 3 * x * x * ax + 2 * x * bx + cx;\n x = x - (t_0 - t) / t_1;\n }\n return x * x * x * ay + x * x * by + x * cy;\n}\n","import { fromEvent, merge, Observable, tap } from \"rxjs\";\n\nexport interface MouseTouchEvent {\n clientX: number;\n clientY: number;\n pageX: number;\n pageY: number;\n screenX: number;\n screenY: number;\n target: EventTarget | null;\n}\n\n export function normalizeEvent(event: MouseEvent | TouchEvent | Touch): MouseTouchEvent {\n if (event instanceof MouseEvent) {\n return event;\n } else if (event instanceof TouchEvent) {\n return event.touches[0] || event.changedTouches[0];\n } else if (event instanceof Touch) {\n return {\n clientX: event.clientX,\n clientY: event.clientY,\n pageX: event.pageX,\n pageY: event.pageY,\n screenX: event.screenX,\n screenY: event.screenY,\n target: event.target\n };\n }\n return event;\n}\n\n export function createPointerEvents(element: HTMLElement | Element): {\n start$: Observable<PointerEvent>;\n move$: Observable<PointerEvent>;\n end$: Observable<PointerEvent>;\n } {\n const pointerDown$ = fromEvent<PointerEvent>(element, 'pointerdown');\n const pointerMove$ = fromEvent<PointerEvent>(document, 'pointermove');\n const pointerUp$ = fromEvent<PointerEvent>(document, 'pointerup');\n const pointerLeave$ = fromEvent<PointerEvent>(document, 'pointerleave');\n\n const start$ = pointerDown$;\n const move$ = pointerMove$;\n const end$ = merge(pointerUp$, pointerLeave$);\n\n return { start$, move$, end$ };\n}\n","export function snapAngle(angle: number, steps: number): number {\n // Calc the size of each step in the scale. 12 for hours, 60 for minutes\n const stepSize = 360 / steps;\n // Find the closest multiple of the step size. 12 for hours, 60 for minutes\n const closestStep = Math.round(angle / stepSize);\n // Calc the snapped angle\n const snappedAngle = closestStep * stepSize;\n\n return snappedAngle;\n}\n\nexport function hoursToAngle(hour: number): number {\n const angle = (hour - 3) * 30;\n return (angle + 360) % 360;\n}\n\nexport function minutesToAngle(minute: number): number {\n let angle = (minute - 15) * 6;\n angle = (angle + 360) % 360;\n\n return angle;\n}\n\nexport function hours24ToAngle(hour: number): number {\n let angle: number;\n\n if (hour >= 0 && hour <= 11) {\n angle = (hour - 3) * 30; // Dial 1: 0 to 11\n } else {\n angle = (hour - 15) * 30; // Dial 2: 12 to 23\n }\n\n angle = (angle + 360) % 360;\n\n return angle;\n}\n\nexport function angleToHours(angle: number): number {\n // Normalize the angle to be within 0-360 range\n angle = (angle + 360) % 360;\n // Correct mapping: 0 degrees -> 3, 270 degrees -> 12\n let hour = Math.floor((angle + 90) / 30) % 12;\n // Handle the 0 hour case (midnight)\n if (hour === 0) {\n hour = 12;\n }\n\n return hour;\n}\n\nexport function angleToMinutes(angle: number): number {\n // Normalize the angle\n angle = (angle + 360) % 360;\n\n let minute = (angle / 6) + 15;\n\n minute = (minute + 60) % 60; // Ensure positive value and wrap around 60\n\n return Math.floor(minute);\n}\n\nexport function angleToHours24(angle: number, dial: number): number {\n angle = (angle + 360) % 360;\n\n let hour: number = 0;\n const baseValue = angle / 30;\n\n if (dial === 1) { \n hour = (Math.floor(baseValue + 3) % 12 + 12) % 12;\n } else if (dial === 2) { \n hour = (Math.floor(baseValue + 3) % 12) + 12;\n }\n \n return hour;\n}","export const HOURS_LABEL = [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\nexport const HOURS_LABEL_24_P1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\nexport const HOURS_LABEL_24_P2 = [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23];\nexport const MINUTES_LABEL = [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55];\n","import { Component, ChangeDetectionStrategy, ViewEncapsulation, ModelSignal, model, viewChild, ElementRef, Renderer2, DestroyRef, inject, computed, afterNextRender, effect, Injector, WritableSignal, signal, untracked } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { switchMap, takeUntil, tap } from 'rxjs';\n\nimport { ClockIterable } from './utils/clock-iterable';\nimport { amPmTransform, detectTimeFormat, SimpleTime, splitDate } from './utils/time';\nimport { cubicBezier } from './utils/animation';\nimport { normalizeEvent, createPointerEvents, MouseTouchEvent } from './utils/events';\nimport { snapAngle, hoursToAngle, angleToHours, hours24ToAngle, minutesToAngle, angleToHours24, angleToMinutes } from './utils/angle';\nimport { HOURS_LABEL, HOURS_LABEL_24_P1, HOURS_LABEL_24_P2, MINUTES_LABEL } from './utils/constants';\n\n@Component({\n selector: 'rk-timepicker-dial',\n host: {\n 'class': 'rk-timepicker-dial',\n },\n imports: [],\n template: `\t\n <div class=\"rk-timepicker-dial-container\">\n <div #dial class=\"rk-label-container rk-dial-size\">\n </div>\n <div #dial2 class=\"rk-cliped-label rk-dial-size\">\n </div>\n <div #dialSelector class=\"rk-dial-selector\"></div>\n <div class=\"rk-pivot-point\"></div>\n </div>\n `,\n styles: [],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class RkTimepickerDial {\n currentTime: ModelSignal<Date | null> = model.required<Date | null>({alias: 'time'});\n timeFormat: ModelSignal<string | null> = model<string | null>('12h', {alias: 'format'});\n selectedTime: ModelSignal<string | null> = model<string | null>('hours', {alias: 'selected'});\n period: ModelSignal<string> = model<string>('AM');\n\n readonly value = computed(() => {\n const date = this.currentTime();\n return date ? splitDate(date) : { hours: 0, minutes: 0 };\n });\n readonly format = computed(() => {\n const fm = this.timeFormat();\n return (fm && (fm === '24h' || fm === '12h')) ? fm : detectTimeFormat(new Date());\n });\n readonly selected = computed(() => {\n const selected = this.selectedTime();\n return selected === 'hours' || selected === 'minutes' ? selected : 'hours';\n });\n\n private _dial = viewChild.required<ElementRef>('dial');\n private _clipedLabel = viewChild.required<ElementRef>('dial2');\n private _dialSelector = viewChild.required<ElementRef>('dialSelector');\n\n private _elRef: ElementRef = inject(ElementRef);\n private _renderer: Renderer2 = inject(Renderer2);\n private _destroyRef: DestroyRef = inject(DestroyRef);\n private _injector = inject(Injector);\n private _document = inject(DOCUMENT);\n\n private _currentDial = signal(1);\n private _currentDegree: WritableSignal<number> = signal(0);\n private _loading = signal(false);\n private readonly _motion = 250;\n private readonly _radius = 128;\n private readonly _labelSize = 48;\n \n constructor() {\n afterNextRender(() => {\n this._fillBySelected(this.selected(), this.format());\n\n effect(() => {\n const selected = this.selected();\n const format = this.format();\n this._fillBySelected(selected, format);\n untracked(() => {\n const value = this.value();\n this.period.set(this.value().hours < 12 ? 'AM' : 'PM');\n this._currentDial.set(format === '24h' && selected === 'hours' && value.hours >= 12 ? 2 : 1);\n this._handleInputsChange(value, format, selected);\n });\n\n }, { injector: this._injector});\n\n effect(() => {\n const value = this.value();\n untracked(() => {\n if(this._loading()) return;\n const format = this.format();\n const selected = this.selected();\n this.period.set(this.value().hours < 12 ? 'AM' : 'PM');\n this._currentDial.set(format === '24h' && selected === 'hours' && value.hours >= 12 ? 2 : 1);\n this._handleInputsChange(value, format, selected, true);\n })\n }, { injector: this._injector});\n\n effect(() => {\n const period = this.period();\n untracked(() => {\n const currentTime = this.currentTime();\n if(period === null || currentTime === null) return;\n this.currentTime.set(amPmTransform(period, currentTime));\n })\n }, { injector: this._injector});\n\n const { start$, move$, end$ } = createPointerEvents(this._elRef.nativeElement);\n start$.pipe(\n tap((event) => this._onPointerEventInit(normalizeEvent(event))),\n switchMap(() => {\n return move$.pipe(\n takeUntil(end$.pipe(tap((event) => this._onPointerEventStop(normalizeEvent(event)))))\n );\n }),\n takeUntilDestroyed(this._destroyRef)\n ).subscribe(event => {\n const normalized = normalizeEvent(event);\n this._onPointerEventInit(normalized);\n })\n });\n }\n\n private _handleInputsChange(value: SimpleTime, format: string, selected: string, animate = true) {\n if(selected === 'hours') {\n const angle = format === '24h' ? hours24ToAngle(value.hours) : hoursToAngle(value.hours);\n if(animate) {\n this._rotateAnimation(this._currentDegree(), angle, this._motion, 2);\n } else {\n this._moveByAngle(angle, 2);\n }\n this._currentDegree.set(angle);\n } else {\n const angle = minutesToAngle(value.minutes);\n if(animate) {\n this._rotateAnimation(this._currentDegree(), angle, this._motion, 2);\n } else {\n this._moveByAngle(angle, 2);\n }\n this._currentDegree.set(angle);\n }\n }\n\n private _onPointerEventInit(event: MouseTouchEvent) {\n this._loading.set(true);\n this._moveByTouchClick(event, this._dial().nativeElement);\n }\n\n private async _onPointerEventStop(event: MouseTouchEvent) {\n const currentDegree = this._currentDegree();\n const snapDegrees = this.selected() === 'hours' ? snapAngle(currentDegree, 12) : snapAngle(currentDegree, 60);\n\n await this._rotateAnimation(this._currentDegree(), snapDegrees, this._motion / 2, 2);\n this._currentDegree.set(snapDegrees);\n this._loading.set(false);\n if(this.selected() === 'hours') {\n this.selectedTime.set('minutes');\n }\n }\n\n private _fillDial(dial: HTMLElement, labels: number[], withClean: boolean, inset: number = 2) {\n if (withClean) {\n dial.innerHTML = '';\n }\n const clockIterable = new ClockIterable(labels, this._labelSize, this._radius * 2, inset);\n for (const [label, x, y] of clockIterable) {\n const numero = this._document.createElement('div');\n numero.classList.add('rk-clock-dial-label')\n numero.textContent = this.selected() === 'hours' ? label.toString() : label.toString().padStart(2, '0');\n numero.style.position = 'absolute';\n numero.style.left = x + 'px';\n numero.style.top = y + 'px';\n this._renderer.appendChild(dial, numero);\n }\n }\n\n private _fillBySelected(selected: string, format: string) {\n switch (selected) {\n case 'hours':\n if (format === '12h') {\n this._fillDial(this._dial().nativeElement, HOURS_LABEL, true);\n this._fillDial(this._clipedLabel().nativeElement, HOURS_LABEL, true);\n } else if (format === '24h') {\n this._fillDial(this._dial().nativeElement, HOURS_LABEL_24_P1, true);\n this._fillDial(this._dial().nativeElement, HOURS_LABEL_24_P2, false, 38);\n this._fillDial(this._clipedLabel().nativeElement, HOURS_LABEL_24_P1, true);\n this._fillDial(this._clipedLabel().nativeElement, HOURS_LABEL_24_P2, false, 38);\n }\n break;\n case 'minutes':\n this._fillDial(this._dial().nativeElement, MINUTES_LABEL, true);\n this._fillDial(this._clipedLabel().nativeElement, MINUTES_LABEL, true);\n break;\n default:\n this._fillDial(this._dial().nativeElement, HOURS_LABEL, true);\n this._fillDial(this._clipedLabel().nativeElement, HOURS_LABEL, true);\n }\n }\n\n private _moveByTouchClick(event: MouseTouchEvent, dial: HTMLElement, inset: number = 2) {\n const rect = dial.getBoundingClientRect();\n // relative to the center of the clock\n const x = event.clientX - rect.left - this._radius;\n const y = event.clientY - rect.top - this._radius;\n\n // Calc angle in degrees\n let angle = Math.atan2(y, x) * (180 / Math.PI);\n if (angle < 0) {\n angle += 360; //make sure the angle is in the range [0, 360]\n }\n \n // Calc new position for the object (using radius as reference)\n let radius = this._radius - (this._labelSize / 2) - inset;\n\n//--------------------------------------------------------------------------------------------------------------//\n // logic when format is 24h and two dial exist\n const distanceFromCenter = Math.sqrt(x * x + y * y);\n const MAX_RAD = radius - 20;\n let selectorInset = 0;\n \n if (distanceFromCenter < MAX_RAD && this.selected() === 'hours' && this.format() === '24h') {\n radius -= 36;\n this._currentDial.set(2);\n selectorInset = 36;\n } else {\n this._currentDial.set(1);\n selectorInset = 0;\n }\n \n//----------------------------------------------------------------------------------------------------------------//\n\n const moveX = this._radius + radius * Math.cos(angle * (Math.PI / 180));\n const moveY = this._radius + radius * Math.sin(angle * (Math.PI / 180));\n // Call the provided functions with the calculated values\n this._moveTrack(moveX, moveY);\n this._moveSelector(angle, selectorInset);\n this._currentDegree.set(angle);\n\n //update time\n const snapDegrees = this.selected() === 'hours' ? snapAngle(angle, 12) : snapAngle(angle, 60);\n const currentDate = this.currentTime();\n const date = currentDate ? new Date(currentDate) : new Date();\n \n if(this.selected() === 'hours') {\n let hours = this.format() === '24h' ? angleToHours24(snapDegrees, this._currentDial()) : angleToHours(snapDegrees);\n if(this.format() === '24h') {\n this.period.set(hours < 12 ? 'AM' : 'PM');\n }\n if (this.format() !== '24h' && this.period() === 'PM') {\n hours = hours < 12 ? hours + 12 : hours; \n }\n if(this.period() === 'AM' && hours >= 12 && this.format() === '12h') {\n hours = hours - 12;\n }\n date.setHours(hours);\n } else {\n date.setMinutes(angleToMinutes(snapDegrees));\n }\n \n this.currentTime.set(date);\n }\n\n private _moveByAngle(angle: number, inset: number = 2) {\n // Ensure angle is within 0-360 range\n angle = angle % 360;\n if (angle < 0) {\n angle += 360;\n }\n // Calc new position for the object (using radius as reference)\n let radius = this._radius - (this._labelSize / 2) - inset;\n\n // logic when format is 24h and two dial exist\n let selectorInset = 0;\n if (this.selected() === 'hours' && this.format() === '24h' && this._currentDial() === 2) {\n radius -= 36;\n selectorInset = 36;\n }\n\n const moveX = this._radius + radius * Math.cos(angle * (Math.PI / 180));\n const moveY = this._radius + radius * Math.sin(angle * (Math.PI / 180));\n\n // Call the provided functions with the calculated values\n this._moveTrack(moveX, moveY);\n this._moveSelector(angle, selectorInset);\n }\n\n private _moveTrack(x: number, y: number) {\n this._renderer.setStyle(this._clipedLabel().nativeElement, 'clip-path', `circle(24px at ${x}px ${y}px)`);\n }\n\n private _moveSelector(degrees: number, inset: number = 0) {\n this._renderer.setStyle(this._dialSelector().nativeElement, 'width', 104 - inset + 'px');\n this._renderer.setStyle(this._dialSelector().nativeElement, 'transform', `rotate(${degrees}deg)`);\n }\n\n private async _rotateAnimation(currentDegree: number, degree: number, animationTime: number, inset: number = 2): Promise<void> {\n return new Promise<void>((resolve) => {\n // Calculate the shortest angle difference between the current and target degrees.\n let angleDiff = degree - currentDegree;\n\n // Adjust the angle difference to be within the range of -180 to 180 degrees.\n if (angleDiff > 180) {\n angleDiff -= 360;\n } else if (angleDiff < -180) {\n angleDiff += 360;\n }\n\n // Store the start time of the animation.\n let startTime: number | null = null;\n\n const animate = (timestamp: number) => {\n // Initialize the start time if it hasn't been set yet.\n if (!startTime) startTime = timestamp;\n\n // Calculate the progress of the animation (0 to 1).\n let progress = Math.min((timestamp - startTime) / animationTime, 1);\n\n // Apply a cubic Bezier easing function to the progress. This makes the animation smoother.\n const easedProgress = cubicBezier(0.05, 0.7, 0.1, 1.0, progress);\n\n // Calculate the current angle based on the eased progress.\n const currentAngle = currentDegree + angleDiff * easedProgress;\n\n // Update the position of the dial and selector based on the current angle.\n this._moveByAngle(currentAngle, inset);\n\n // Continue the animation if it's not finished.\n if (progress < 1) {\n requestAnimationFrame(animate);\n } else {\n resolve(); // Resolve the promise when the animation is complete.\n }\n };\n requestAnimationFrame(animate);\n });\n }\n}","import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, input, model, ModelSignal, signal, untracked, viewChild, ViewEncapsulation } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { MatRippleModule } from '@angular/material/core';\nimport { formatTimeValue, splitDate, validateTimeValue } from './utils';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'rk-timepicker-input-label',\n imports: [NgClass, MatRippleModule, FormsModule],\n host: {\n 'class': 'rk-time-input-field',\n },\n template: `\n <div class=\"rk-time-input-label-container\">\n <div class=\"rk-time-selector-container\" matRipple [ngClass]=\"{'rk-time-selector-container-selected': selected() === 'hours'}\" (click)=\"selectedChange('hours')\">\n @if (!editable()) {\n {{value().hours.toString().padStart(2, '0')}}\n } @else {\n <input type=\"number\" maxlength=\"2\" #inputH [value]=\"hours()\" (focus)=\"selectedChange('hours')\" (input)=\"onHoursInput($event)\" (keydown)=\"handleKeydown($event, 'hours')\" (blur)=\"onHoursBlur()\" name=\"hours\">\n }\n </div>\n @if (editable()) {\n <span class=\"rk-time-input-support-label\">{{inputSupportLabels()[0]}}</span>\n }\n </div>\n <div class=\"rk-time-divider\">:</div>\n <div class=\"rk-time-input-label-container\">\n <div class=\"rk-time-selector-container\" matRipple [ngClass]=\"{'rk-time-selector-container-selected': selected() === 'minutes'}\" (click)=\"selectedChange('minutes')\">\n @if (!editable()) {\n {{value().minutes.toString().padStart(2, '0')}}\n } @else {\n <input type=\"number\" maxlength=\"2\" #inputM [value]=\"minutes()\" (focus)=\"selectedChange('minutes')\" (input)=\"onMinutesInput($event)\" (keydown)=\"handleKeydown($event, 'minutes')\" (blur)=\"onMinutesBlur()\" name=\"minutes\">\n }\n </div>\n @if (editable()) {\n <span class=\"rk-time-input-support-label\">{{inputSupportLabels()[1]}}</span>\n }\n </div>\n @if (format() === '12h') {\n <div class=\"rk-period-selector-container\">\n <div class=\"rk-period-selector\" matRipple [ngClass]=\"{'rk-period-selector-selected': period() === 'AM'}\" (click)=\"periodSelector('AM')\">AM</div>\n <div class=\"rk-period-selector\" matRipple [ngClass]=\"{'rk-period-selector-selected': period() === 'PM'}\" (click)=\"periodSelector('PM')\">PM</div>\n </div>\n }\n `,\n styles: ``,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class RkTimepickerInputLabel {\n currentTime: ModelSignal<Date | null> = model.required<Date | null>({alias: 'time'});\n selected = model('hours');\n period = model('AM');\n format = model('12h');\n editable = model(false);\n\n hours = signal<string>('');\n minutes = signal<string>('');\n\n inputSupportLabels = input<string[]>(['Hour', 'Minute'], {alias: 'inputLabels'});\n inputHours = viewChild<ElementRef<HTMLInputElement>>('inputH');\n inputMinutes = viewChild<ElementRef<HTMLInputElement>>('inputM');\n\n readonly value = computed(() => {\n const date = this.currentTime();\n const format = this.format();\n if (date) {\n const { hours, minutes } = splitDate(date);\n if (format === '12h') {\n return { hours: hours > 12 ? hours - 12 : hours === 0 ? 12 : hours, minutes };\n }\n return { hours, minutes };\n }\n return { hours: 0, minutes: 0 };\n });\n\n constructor() {\n effect(() => {\n const editable = this.editable();\n const selected = this.selected();\n if (editable) {\n if (selected=== 'hours') {\n this.inputHours()?.nativeElement.focus();\n } else if (selected === 'minutes') {\n this.inputMinutes()?.nativeElement.focus();\n }\n }\n });\n\n effect(() => {\n const value = this.value();\n untracked(() => {\n this.onHoursInput(value.hours.toString().padStart(2, '0'));\n this.onMinutesInput(value.minutes.toString().padStart(2, '0'));\n })\n })\n }\n\n onHoursInput(event: Event|string): void {\n const input = this.inputHours()?.nativeElement;\n const value = typeof event === 'string' ? event : (<HTMLInputElement>event.target)?.value;\n const max = this.format() === '24h' ? 23 : 12;\n const validatedValue = validateTimeValue(value, max);\n\n if (input &&input.value !== validatedValue) {\n input.value = validatedValue;\n }\n this.hours.set(validatedValue);\n\n }\n \n onMinutesInput(event: Event|string): void {\n const input = this.inputMinutes()?.nativeElement;\n const value = typeof event === 'string' ? event : (<HTMLInputElement>event.target)?.value;\n const validatedValue = validateTimeValue(value, 59);\n\n if (input &&input.value !== validatedValue) {\n input.value = validatedValue;\n }\n\n this.minutes.set(validatedValue);\n }\n\n onHoursBlur(): void {\n const defaultHour = this.format() === '24h' ? '00' : '01';\n const formattedValue = formatTimeValue(this.hours(), defaultHour);\n this.hours.set(formattedValue);\n this.updateModel();\n }\n\n onMinutesBlur(): void {\n const formattedValue = formatTimeValue(this.minutes(), '00');\n this.minutes.set(formattedValue);\n this.updateModel();\n }\n\n updateModel() {\n const tempDate = this.currentTime();\n if(tempDate) {\n const newDate = new Date(tempDate);\n let hoursN = Number(this.hours());\n const minutesN = Number(this.minutes());\n if (this.format() === '12h' && this.period() === 'PM') {\n hoursN = hoursN < 12 ? hoursN + 12 : hoursN;\n }\n newDate.setHours(hoursN);\n newDate.setMinutes(minutesN);\n this.currentTime.set(newDate);\n }\n }\n handleKeydown(event: KeyboardEvent, selected: string) {\n if (['Enter', 'Escape', 'Tab'].includes(event.code)) {\n if(selected === 'hours') {\n this.onHoursBlur();\n this.selected.set('minutes');\n } else {\n this.onMinutesBlur();\n }\n }\n }\n\n selectedChange(selected: string) {\n if (this.selected() === selected) {\n return;\n }\n this.selected.set(selected);\n }\n\n periodSelector(period: string) {\n if (this.period() === period) {\n return;\n }\n this.period.set(period);\n }\n}","import { Component, ChangeDetectionStrategy, ViewEncapsulation, model, input, computed, effect, signal, output, afterRender, InputSignal, viewChild, TemplateRef, OutputEmitterRef, inject, untracked, Signal } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { Dialog, DialogModule, DialogRef } from '@angular/cdk/dialog';\nimport { RkTimepickerDial } from './timepicker-dial';\nimport { RkTimepickerInputLabel } from './timepicker-input-label';\nimport { RkTimepickerInput } from './timepicker-input';\n\n@Component({\n selector: 'rk-timepicker',\n exportAs: 'rkTimepicker',\n imports: [RkTimepickerInputLabel, NgClass, DialogModule, RkTimepickerDial, MatButton, MatIconButton, MatIcon],\n host: {\n '[class.rk-timepicker-landscape]': 'isLandscape()',\n '[class.rk-timepicker-editable]': 'editable()',\n '(keydown)': '_handleKeydown($event)',\n },\n template: `\n <ng-template #panelTemplate>\n <div class=\"rk-timepicker rk-timepicker-panel\">\n <div class=\"rk-timepicker-container\" [ngClass]=\"{ 'rk-timepicker-container-hide': !load() }\">\n <span class=\"rk-timepicker-headline\">{{ headline() }}</span>\n <rk-timepicker-input-label [(time)]=\"currentTime\" [inputLabels]=\"_inputSupportLabels()\" [(editable)]=\"editable\" [(format)]=\"format\" [(period)]=\"period\" [(selected)]=\"selected\"></rk-timepicker-input-label>\n <rk-timepicker-dial [ngClass]=\"{ 'rk-dial-closed': editable(), 'rk-dial-animated': animated()}\" [(time)]=\"currentTime\" [(format)]=\"format\" [(period)]=\"period\" [(selected)]=\"selected\"></rk-timepicker-dial>\n <div class=\"rk-timepicker-footer\">\n <button class=\"rk-timepicker-mode-button\" (click)=\"changeMode()\" mat-icon-button>\n @if (editable()) {\n <mat-icon>schedule</mat-icon>\n } @else {\n <mat-icon>keyboard</mat-icon> \n }\n </button>\n <div class=\"rk-timepicker-actions\">\n <button mat-button (click)=\"onCancel()\">{{_actions()[0]}}</button>\n <button mat-button (click)=\"onConfirm()\">{{_actions()[1]}}</button>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n `,\n styles: ``,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class RkTimepicker {\n selected = model<string>('hours');\n format = model('12h');\n period = model<string>('AM');\n editable = model(false);\n orientation = model<string>('portrait');\n \n _inputSupportLabels = input<string[]>(['Hour', 'Minute'], {alias: 'inputLabels'});\n _headline = input<string[]>(['Enter time', 'Select time'], {alias: 'headline'});\n _actions = input<string[]>(['Cancel', 'OK'], {alias: 'actions'});\n /** Whether the timepicker is currently disabled. */\n readonly disabled: Signal<boolean> = computed(() => !!this._input()?.disabled());\n \n readonly defaultTime: InputSignal<Date | null> = input<Date | null>(null,{alias: 'time'});\n readonly load = signal(false);\n \n readonly isLandscape = computed(() => {\n return this.orientation() === 'landscape';\n });\n \n readonly headline = computed(() => {\n const editable = this.editable();\n const labels = this._headline();\n return editable ? labels[0] : labels[1];\n });\n \n \n protected _panelTemplate = viewChild.required<TemplateRef<unknown>>('panelTemplate');\n private _dialogRef = signal<DialogRef<Date | null> | null>(null);\n \n private _input = signal<RkTimepickerInput | null>(null);\n private _isOpen = signal(false);\n\n currentTime = signal<Date | null>(null);\n animated = signal(false);\n \n /** Emits when the timepicker is opened. */\n readonly opened: OutputEmitterRef<void> = output();\n /** Emits when the timepicker is closed. */\n readonly closed: OutputEmitterRef<void> = output();\n\n readonly selectedTime: OutputEmitterRef<Date> = output();\n \n private _dialog = inject(Dialog);\n\n constructor() {\n effect(() => {\n const value = this.defaultTime();\n if(!value) {\n this.currentTime.set(new Date());\n } else {\n this.currentTime.set(value);\n }\n });\n\n effect(() => {\n const editable = this.editable();\n untracked(() => {\n this.animated.set(true);\n })\n })\n\n afterRender(() => {\n this.load.set(true);\n });\n }\n\n /** Opens the timepicker. */\n open(): void {\n const input = this._input();\n\n if (!input) {\n return;\n }\n\n if (this._isOpen()) {\n return;\n }\n\n this.currentTime.set(input.value());\n this.animated.set(false);\n this._isOpen.set(true);\n this.opened.emit();\n \n const dialogRef = this._dialog.open<Date | null>(this._panelTemplate(), {\n width: '328px',\n });\n\n this._dialogRef.set(dialogRef);\n\n dialogRef.closed.subscribe(result => {\n if(result) {\n this._input()?.value.set(result);\n this.selectedTime.emit(result);\n input.simulateEnter();\n }\n this._isOpen.set(false);\n this.closed.emit();\n this.selected.set('hours');\n input.focus();\n });\n }\n\n /** Registers an input with the timepicker. */\n registerInput(input: RkTimepickerInput): void {\n const currentInput = this._input();\n\n if (currentInput && input !== currentInput ) {\n console.warn('RkTimepicker can only be registered with one input at a time');\n }\n\n this._input.set(input);\n }\n\n private _handleKeydown(event: KeyboardEvent): void {\n const keyCode = event.key;\n if (keyCode === 'Enter') {\n event.preventDefault();\n this.onConfirm();\n } else if (keyCode === 'Escape') {\n event.preventDefault();\n this.onCancel();\n }\n }\n\n\n changeMode() {\n this.editable.set(!this.editable());\n }\n\n \n onConfirm() {\n this._dialogRef()?.close(this.currentTime());\n }\n\n onCancel() {\n this._dialogRef()?.close();\n } \n}\n","import { booleanAttribute, computed, Directive, effect, ElementRef, inject, input, InputSignal, InputSignalWithTransform, model, ModelSignal, Renderer2, Signal, signal } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\nimport { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';\nimport { RkTimepicker } from './timepicker';\nimport { secondsToDate, timeToSecondsi18n as timeToSeconds } from './utils';\n\n@Directive({\n selector: 'input[rkTimepicker]',\n exportAs: 'rkTimepickerInput',\n host: {\n 'class': 'rk-timepicker-input',\n 'type': 'text',\n '(input)': '_handleInput($event.target.value)',\n '(blur)': '_handleBlur()',\n '(keydown)': '_handleKeydown($event)',\n '[disabled]': 'disabled()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: RkTimepickerInput,\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: RkTimepickerInput,\n multi: true,\n },\n {\n provide: MAT_INPUT_VALUE_ACCESSOR,\n useExisting: RkTimepickerInput,\n },\n ]\n})\nexport class RkTimepickerInput implements ControlValueAccessor, Validator {\n private _elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private _renderer = inject(Renderer2);\n \n /** Necessary for ControlValueAccessor implementation */\n private _onChange: ((value: any) => void) | undefined;\n private _onTouched: (() => void) | undefined;\n private _accessorDisabled = signal(false);\n private _validatorOnChange: (() => void) | undefined;\n\n /** Current value of the input. */\n readonly value: ModelSignal<Date | null> = model<Date | null>(null);\n private _tempDateSafe = signal<Date | null>(null);\n \n /** Timepicker that the input is associated with. */\n readonly timepicker: InputSignal<RkTimepicker> = input.required<RkTimepicker>({\n alias: 'rkTimepicker',\n });\n /** Whether the input is disabled. */\n readonly disabled: Signal<boolean> = computed(\n () => this.disabledInput() || this._accessorDisabled(),\n );\n /**\n * Whether the input should be disabled through the template.\n */\n readonly disabledInput: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n alias: 'disabled',\n });\n \n constructor() {\n this._registerTimepicker();\n }\n\n private _updateModelValue() {\n const value = this.value();\n if(!value) {\n this._validatorOnChange?.();\n return\n }\n this._onChange?.(value);\n }\n \n private _validateTimeOrNull(value: string | Date | null) {\n if (value === null || value instanceof Date) {\n this.value.set(value);\n return;\n }\n const validTime = timeToSeconds(value);\n const time = validTime ? secondsToDate(validTime) : null;\n if(!time) {\n this.value.set(null);\n } else {\n const newDate = new Date(this._tempDateSafe() ?? new Date());\n newDate.setHours(time.getHours(), time.getMinutes());\n this.value.set(newDate);\n }\n }\n \n private _updateInputValue() {\n if (this.value() !== null) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'value', this.value()?.toLocaleTimeString([],{ hour: \"2-digit\", minute: \"2-digit\" }));\n }\n }\n\n /** Handles the `input` event. */\n protected _handleInput(value: string) {\n this._validateTimeOrNull(value);\n this._validatorOnChange?.();\n }\n\n /** Handles the `keydown` event. */\n protected _handleKeydown(event: KeyboardEvent) {\n if (['Enter', 'Escape', 'Tab'].includes(event.code)) {\n this._updateModelValue();\n this._updateInputValue();\n }\n }\n\n simulateEnter() {\n this._handleKeydown({ code: 'Enter' } as KeyboardEvent);\n }\n\n /** Handles the `blur` event. */\n protected _handleBlur() {\n this._onTouched?.();\n this._updateModelValue();\n this._updateInputValue();\n }\n\n /** Focuses the input. */\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n\n /** Implemented as a part of ControlValueAccessor. */\n writeValue(value: any): void {\n if(value instanceof Date) {\n this._tempDateSafe.set(value);\n this.value.set(value);\n this._updateInputValue();\n } else {\n this._validateTimeOrNull(value);\n this._updateInputValue();\n }\n }\n /** Implemented as a part of ControlValueAccessor. */\n registerOnChange(fn: (value: any) => void): void {\n this._onChange = fn;\n }\n /** Implemented as a part of ControlValueAccessor. */\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n /** Implemented as a part of ControlValueAccessor. */\n setDisabledState(isDisabled: any): void {\n this._accessorDisabled.set(isDisabled);\n }\n\n // implemented as a part of Validator\n validate(control: AbstractControl): ValidationErrors | null {\n if (control.value == null || this.value() == null) {\n return { invalidTimeFormat: true };\n }\n return null;\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._validatorOnChange = fn;\n }\n\n /** Sets up the logic that registers the input with the timepicker. */\n private _registerTimepicker(): void {\n effect(() => {\n const timepicker = this.timepicker();\n timepicker.registerInput(this);\n timepicker.closed.subscribe(() => this._onTouched?.());\n });\n }\n}\n","import { booleanAttribute, Component, computed, input, InputSignal, InputSignalWithTransform } from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { RkTimepicker } from './timepicker';\n\n@Component({\n selector: 'rk-timepicker-toggle',\n imports: [MatIconButton],\n template: `\n <button mat-icon-button type=\"button\" [disabled]=\"_isDisabled()\" (click)=\"_open($event)\">\n <ng-content select=\"[rkTimepickerToggleIcon]\">\n <svg\n class=\"rk-timepicker-toggle-default-icon\"\n height=\"24px\"\n width=\"24px\"\n viewBox=\"0 -960 960 960\"\n fill=\"currentColor\"\n focusable=\"false\"\n aria-hidden=\"true\">\n <path d=\"m612-292 56-56-148-148v-184h-80v216l172 172ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-400Zm0 320q133 0 226.5-93.5T800-480q0-133-93.5-226.5T480-800q-133 0-226.5 93.5T160-480q0 133 93.5 226.5T480-160Z\"/>\n </svg>\n </ng-content>\n </button>\n `,\n styles: ``\n})\nexport class RkTimepickerToggle {\n readonly timepicker: InputSignal<RkTimepicker> = input.required<RkTimepicker>({\n alias: 'for',\n });\n\n /** Whether the toggle button is disabled. */\n readonly disabled: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n alias: 'disabled',\n });\n\n protected _isDisabled = computed(() => {\n const timepicker = this.timepicker();\n return this.disabled() || timepicker.disabled();\n });\n\n /** Opens the connected timepicker. */\n protected _open(event: Event): void {\n if (this.timepicker() && !this._isDisabled()) {\n this.timepicker().open();\n event.stopPropagation();\n }\n }\n}","import { Component, ChangeDetectionStrategy, ViewEncapsulation, model, input, computed, effect, signal, afterRender } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { RkTimepickerDial } from './timepicker-dial';\nimport { RkTimepickerInputLabel } from './timepicker-input-label';\n\n@Component({\n selector: 'rk-clock',\n exportAs: 'rkClock',\n imports: [RkTimepickerInputLabel, NgClass, RkTimepickerDial, MatButton, MatIconButton, MatIcon],\n host: {\n 'class': 'rk-timepicker',\n '[class.rk-timepicker-landscape]': 'isLandscape()',\n '[class.rk-timepicker-editable]': 'editable()',\n },\n template: `\n <div class=\"rk-timepicker-container\" [ngClass]=\"{ 'rk-timepicker-container-hide': !load() }\">\n <span class=\"rk-timepicker-headline\">{{ headline() }}</span>\n <rk-timepicker-input-label [(time)]=\"value\" [inputLabels]=\"inputSupportLabels()\" [(editable)]=\"editable\" [(format)]=\"format\" [(period)]=\"period\" [(selected)]=\"selected\"></rk-timepicker-input-label>\n <rk-timepicker-dial [ngClass]=\"{ 'rk-dial-closed': editable()}\" [(time)]=\"value\" [(format)]=\"format\" [(period)]=\"period\" [(selected)]=\"selected\"></rk-timepicker-dial>\n <div class=\"rk-timepicker-footer\">\n <button class=\"rk-timepicker-mode-button\" (click)=\"changeMode()\" mat-icon-button>\n @if (editable()) {\n <mat-icon>schedule</mat-icon>\n } @else {\n <mat-icon>keyboard</mat-icon> \n }\n </button>\n </div>\n </div>\n `,\n styles: ``,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class RkClock {\n value= model<Date | null>(null, {alias: 'time'});\n selected = model<string>('hours');\n format = model('24h');\n period = model<string>('AM');\n editable = model(false);\n orientation = model<string>('portrait');\n inputSupportLabels = input<string[]>(['Hour', 'Minute'], {alias: 'inputLabels'});\n _headline = input<string[]>(['Enter time', 'Select time'], {alias: 'headline'});\n\n readonly load = signal(false);\n\n readonly isLandscape = computed(() => {\n return this.orientation() === 'landscape';\n });\n\n readonly headline = computed(() => {\n const editable = this.editable();\n const labels = this._headline();\n return editable ? labels[0] : labels[1];\n });\n\n constructor() {\n effect(() => {\n const value = this.value();\n if(!value) {\n this.value.set(new Date());\n };\n });\n\n afterRender(() => {\n this.load.set(true);\n });\n }\n\n changeMode() {\n this.editable.set(!this.editable());\n }\n}\n","/*\n * Public API Surface of timepicker\n */\nexport * from './lib/timepicker';\nexport * from './lib/timepicker-input';\nexport * from './lib/timepicker-toggle';\nexport * from './lib/clock';\nexport * from './lib/utils/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["timeToSeconds"],"mappings":"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"}
@@ -21,6 +21,7 @@ export declare class RkTimepickerInputLabel {
21
21
  onHoursBlur(): void;
22
22
  onMinutesBlur(): void;
23
23
  updateModel(): void;
24
+ handleKeydown(event: KeyboardEvent, selected: string): void;
24
25
  selectedChange(selected: string): void;
25
26
  periodSelector(period: string): void;
26
27
  static ɵfac: i0.ɵɵFactoryDeclaration<RkTimepickerInputLabel, never>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redkhat/timepicker",
3
- "version": "1.1.0",
3
+ "version": "1.2.1",
4
4
  "keywords": [
5
5
  "angular",
6
6
  "material",