@lucca-front/ng 21.0.0-rc.4 → 21.0.0-rc.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/app-layout/index.d.ts +1 -1
  2. package/box/index.d.ts +3 -3
  3. package/breadcrumbs/index.d.ts +3 -3
  4. package/button/index.d.ts +26 -21
  5. package/callout/index.d.ts +65 -57
  6. package/chip/index.d.ts +1 -1
  7. package/code/index.d.ts +1 -1
  8. package/comment/index.d.ts +11 -14
  9. package/core/index.d.ts +10 -7
  10. package/core-select/index.d.ts +6 -4
  11. package/core-select/user/index.d.ts +3 -2
  12. package/dialog/index.d.ts +21 -5
  13. package/empty-state/index.d.ts +23 -26
  14. package/fancy-box/index.d.ts +11 -10
  15. package/fesm2022/lucca-front-ng-app-layout.mjs.map +1 -1
  16. package/fesm2022/lucca-front-ng-box.mjs.map +1 -1
  17. package/fesm2022/lucca-front-ng-breadcrumbs.mjs.map +1 -1
  18. package/fesm2022/lucca-front-ng-button.mjs +59 -90
  19. package/fesm2022/lucca-front-ng-button.mjs.map +1 -1
  20. package/fesm2022/lucca-front-ng-callout.mjs +96 -130
  21. package/fesm2022/lucca-front-ng-callout.mjs.map +1 -1
  22. package/fesm2022/lucca-front-ng-chip.mjs.map +1 -1
  23. package/fesm2022/lucca-front-ng-code.mjs.map +1 -1
  24. package/fesm2022/lucca-front-ng-comment.mjs +14 -34
  25. package/fesm2022/lucca-front-ng-comment.mjs.map +1 -1
  26. package/fesm2022/lucca-front-ng-core-select-api.mjs +3 -3
  27. package/fesm2022/lucca-front-ng-core-select-api.mjs.map +1 -1
  28. package/fesm2022/lucca-front-ng-core-select-user.mjs +14 -11
  29. package/fesm2022/lucca-front-ng-core-select-user.mjs.map +1 -1
  30. package/fesm2022/lucca-front-ng-core-select.mjs +14 -20
  31. package/fesm2022/lucca-front-ng-core-select.mjs.map +1 -1
  32. package/fesm2022/lucca-front-ng-core.mjs +6 -4
  33. package/fesm2022/lucca-front-ng-core.mjs.map +1 -1
  34. package/fesm2022/lucca-front-ng-dialog.mjs +22 -25
  35. package/fesm2022/lucca-front-ng-dialog.mjs.map +1 -1
  36. package/fesm2022/lucca-front-ng-empty-state.mjs +27 -68
  37. package/fesm2022/lucca-front-ng-empty-state.mjs.map +1 -1
  38. package/fesm2022/lucca-front-ng-fancy-box.mjs +14 -28
  39. package/fesm2022/lucca-front-ng-fancy-box.mjs.map +1 -1
  40. package/fesm2022/lucca-front-ng-file-upload.mjs +1 -1
  41. package/fesm2022/lucca-front-ng-file-upload.mjs.map +1 -1
  42. package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs +15 -17
  43. package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs.map +1 -1
  44. package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs +2 -2
  45. package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs.map +1 -1
  46. package/fesm2022/lucca-front-ng-forms.mjs +99 -187
  47. package/fesm2022/lucca-front-ng-forms.mjs.map +1 -1
  48. package/fesm2022/lucca-front-ng-icon.mjs +14 -19
  49. package/fesm2022/lucca-front-ng-icon.mjs.map +1 -1
  50. package/fesm2022/lucca-front-ng-inline-message.mjs +15 -22
  51. package/fesm2022/lucca-front-ng-inline-message.mjs.map +1 -1
  52. package/fesm2022/lucca-front-ng-link.mjs +20 -28
  53. package/fesm2022/lucca-front-ng-link.mjs.map +1 -1
  54. package/fesm2022/lucca-front-ng-mobile-push.mjs +4 -8
  55. package/fesm2022/lucca-front-ng-mobile-push.mjs.map +1 -1
  56. package/fesm2022/lucca-front-ng-modal.mjs +1 -1
  57. package/fesm2022/lucca-front-ng-modal.mjs.map +1 -1
  58. package/fesm2022/lucca-front-ng-multi-select.mjs +1 -1
  59. package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
  60. package/fesm2022/lucca-front-ng-new-badge.mjs +7 -11
  61. package/fesm2022/lucca-front-ng-new-badge.mjs.map +1 -1
  62. package/fesm2022/lucca-front-ng-numeric-badge.mjs +40 -39
  63. package/fesm2022/lucca-front-ng-numeric-badge.mjs.map +1 -1
  64. package/fesm2022/lucca-front-ng-plg-push.mjs +8 -17
  65. package/fesm2022/lucca-front-ng-plg-push.mjs.map +1 -1
  66. package/fesm2022/lucca-front-ng-scroll.mjs +19 -29
  67. package/fesm2022/lucca-front-ng-scroll.mjs.map +1 -1
  68. package/fesm2022/lucca-front-ng-simple-select.mjs +1 -1
  69. package/fesm2022/lucca-front-ng-simple-select.mjs.map +1 -1
  70. package/fesm2022/lucca-front-ng-skeleton.mjs +24 -40
  71. package/fesm2022/lucca-front-ng-skeleton.mjs.map +1 -1
  72. package/fesm2022/lucca-front-ng-tag.mjs +31 -42
  73. package/fesm2022/lucca-front-ng-tag.mjs.map +1 -1
  74. package/fesm2022/lucca-front-ng-time.mjs +8 -18
  75. package/fesm2022/lucca-front-ng-time.mjs.map +1 -1
  76. package/fesm2022/lucca-front-ng-toast.mjs +55 -60
  77. package/fesm2022/lucca-front-ng-toast.mjs.map +1 -1
  78. package/fesm2022/lucca-front-ng-tooltip.mjs +86 -107
  79. package/fesm2022/lucca-front-ng-tooltip.mjs.map +1 -1
  80. package/fesm2022/lucca-front-ng-user.mjs +58 -96
  81. package/fesm2022/lucca-front-ng-user.mjs.map +1 -1
  82. package/fesm2022/lucca-front-ng-vertical-navigation.mjs +6 -6
  83. package/fesm2022/lucca-front-ng-vertical-navigation.mjs.map +1 -1
  84. package/forms/index.d.ts +54 -62
  85. package/forms/phone-number-input/index.d.ts +13 -13
  86. package/icon/index.d.ts +10 -10
  87. package/inline-message/index.d.ts +9 -11
  88. package/link/index.d.ts +11 -13
  89. package/mobile-push/index.d.ts +5 -6
  90. package/new-badge/index.d.ts +2 -3
  91. package/numeric-badge/index.d.ts +14 -11
  92. package/package.json +37 -37
  93. package/plg-push/index.d.ts +6 -8
  94. package/read-more/index.d.ts +1 -1
  95. package/scroll/index.d.ts +20 -22
  96. package/skeleton/index.d.ts +27 -32
  97. package/tag/index.d.ts +17 -15
  98. package/time/index.d.ts +5 -5
  99. package/toast/index.d.ts +23 -25
  100. package/tooltip/index.d.ts +35 -41
  101. package/user/index.d.ts +24 -32
  102. package/vertical-navigation/index.d.ts +16 -16
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-time.mjs","sources":["../../../packages/ng/time/core/base-picker.component.ts","../../../packages/ng/time/core/duration.utils.ts","../../../packages/ng/time/core/math.utils.ts","../../../packages/ng/time/core/repeat-on-hold.directive.ts","../../../packages/ng/time/core/time-picker-part.component.ts","../../../packages/ng/time/core/time-picker-part.component.html","../../../packages/ng/time/duration-picker/duration-picker.model.ts","../../../packages/ng/time/duration-picker/translations.ts","../../../packages/ng/time/duration-picker/duration-picker.translate.ts","../../../packages/ng/time/duration-picker/duration-picker.component.ts","../../../packages/ng/time/duration-picker/duration-picker.component.html","../../../packages/ng/time/core/date.utils.ts","../../../packages/ng/time/time-picker/time-picker.model.ts","../../../packages/ng/time/time-picker/translations.ts","../../../packages/ng/time/time-picker/time-picker.translate.ts","../../../packages/ng/time/time-picker/time-picker.component.ts","../../../packages/ng/time/time-picker/time-picker.component.html","../../../packages/ng/time/lucca-front-ng-time.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, input, model, viewChild } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { ISO8601Duration, ISO8601Time } from './date-primitives';\nimport { TimePickerPartComponent } from './time-picker-part.component';\n\n@Component({\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplate: '',\n})\nexport abstract class BasePickerComponent implements ControlValueAccessor {\n\tonChange: (value: ISO8601Time | ISO8601Duration) => void;\n\tonTouched: () => void;\n\n\tstep = input<ISO8601Duration>(null);\n\n\tdisabled = model(false);\n\n\tsize = input<'S' | 'M'>();\n\n\thoursPart = viewChild<TimePickerPartComponent>('hoursPart');\n\n\tminutesPart = viewChild<TimePickerPartComponent>('minutesPart');\n\n\tprotected hoursIncrement = computed(() => this.getHoursIncrement());\n\tprotected minutesIncrement = computed(() => this.getMinutesIncrement());\n\n\tregisterOnChange(fn: () => void): void {\n\t\tthis.onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: () => void): void {\n\t\tthis.onTouched = fn;\n\t}\n\n\tabstract writeValue(value: ISO8601Time | ISO8601Duration): void;\n\n\tabstract getHoursIncrement(): number;\n\n\tabstract getMinutesIncrement(): number;\n\n\tprotected focusPart(type: 'hours' | 'minutes') {\n\t\tthis.onTouched?.();\n\t\tif (type === 'hours') {\n\t\t\tif (this.hoursIncrement() === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.hoursPart()?.focus();\n\t\t}\n\t\tif (type === 'minutes') {\n\t\t\tif (this.minutesIncrement() === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.minutesPart()?.focus();\n\t\t}\n\t}\n}\n","import { isNotNil } from '@lucca-front/ng/core';\nimport { Duration } from 'date-fns';\nimport { ISO8601Duration } from './date-primitives';\n\nexport type NonNullableDateFnsDuration = {\n\tyears: number;\n\tmonths: number;\n\tdays: number;\n\thours: number;\n\tminutes: number;\n\tseconds: number;\n};\n\ntype DateFnsDuration = Duration;\n\nconst ISO8601DurationRegExp =\n\t/^(?<sign>-)?P(?:(?<years>-?\\d+)Y)?(?:(?<months>-?\\d+)M)?(?:(?<weeks>-?\\d+)W)?(?:(?<days>-?\\d+)D)?(?:T(?:(?<hours>-?\\d+)H)?(?:(?<minutes>-?\\d+)M)?(?:(?<seconds>-?\\d+(?:\\.\\d+)?)S)?)?$/;\n\n// TODO memoize\nexport const isoDurationToDateFnsDuration = (isoDuration: ISO8601Duration): NonNullableDateFnsDuration => {\n\tconst matches = ISO8601DurationRegExp.exec(isoDuration);\n\n\tconst groups = matches?.groups;\n\n\tif (!groups) {\n\t\tthrow new Error(`Invalid ISO 8601 duration: ${isoDuration}`);\n\t}\n\n\tconst withSign = groups['sign'] === '-' ? -1 : 1;\n\n\tconst result: NonNullableDateFnsDuration = {\n\t\tyears: groups['years'] ? Number(groups['years']) : 0,\n\t\tmonths: groups['months'] ? Number(groups['months']) : 0,\n\t\tdays: groups['days'] ? Number(groups['days']) : 0,\n\t\thours: groups['hours'] ? Number(groups['hours']) : 0,\n\t\tminutes: groups['minutes'] ? Number(groups['minutes']) : 0,\n\t\tseconds: groups['seconds'] ? Number(groups['seconds']) : 0,\n\t};\n\n\tresult.years *= withSign;\n\tresult.months *= withSign;\n\tresult.days *= withSign;\n\tresult.hours *= withSign;\n\tresult.minutes *= withSign;\n\tresult.seconds *= withSign;\n\n\treturn result;\n};\n\nexport function isISO8601Duration(value: string): value is ISO8601Duration {\n\treturn ISO8601DurationRegExp.test(value);\n}\n\nexport const dateFnsDurationToSeconds = (durationFns: DateFnsDuration): number => {\n\tconst { years, months } = durationFns;\n\tlet { days, hours, minutes, seconds } = durationFns;\n\n\tif ((isNotNil(years) && years !== 0) || (isNotNil(months) && months !== 0)) {\n\t\tthrow new Error('years and months are not supported');\n\t}\n\n\tdays = days || 0;\n\thours = hours || 0;\n\tminutes = minutes || 0;\n\tseconds = seconds || 0;\n\n\treturn days * 24 * 60 * 60 + hours * 60 * 60 + minutes * 60 + seconds;\n};\n\nexport const isoDurationToSeconds = (duration: ISO8601Duration): number => {\n\tconst durationFns = isoDurationToDateFnsDuration(duration);\n\n\treturn dateFnsDurationToSeconds(durationFns);\n};\n\nexport const getHoursPartFromDuration = (duration: ISO8601Duration): number => {\n\treturn Math.floor(isoDurationToSeconds(duration) / 3600);\n};\n\nexport const getMinutesPartFromDuration = (duration: ISO8601Duration): number => {\n\treturn Math.floor((isoDurationToSeconds(duration) % 3600) / 60);\n};\n\nexport const createDurationFromHoursAndMinutes = (hours: number, minutes: number): ISO8601Duration => {\n\treturn `PT${hours}H${minutes}M`;\n};\n","export const roundToNearest = (value: number, step: number) => Math.round(value / step) * step;\n\nexport const floorToNearest = (value: number, step: number) => Math.floor(value / step) * step;\n\nexport const ceilToNearest = (value: number, step: number) => Math.ceil(value / step) * step;\n\n/**\n * Returns the value of n circularized between 0 and max.\n * Given n = 0 and max = 10, returns 0.\n * Given n = 10 and max = 10, returns 10.\n * Given n = 11 and max = 10, returns 1.\n * Given n = -1 and max = 10, returns 9.\n */\nexport const circularize = (n: number, max: number) => {\n\tif (n % max === 0) {\n\t\treturn n === 0 ? 0 : max;\n\t}\n\treturn ((n % max) + max) % max;\n};\n","import { Directive, ElementRef, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\n\nconst INITIAL_INTERVAL = 500;\n\n@Directive({\n\tselector: '[luRepeatOnHold]',\n})\nexport class RepeatOnHoldDirective implements OnDestroy, OnInit {\n\t@Output() hold = new EventEmitter<void>();\n\n\tonMouseDown = () => {\n\t\tif (this.startTime !== undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.hold.emit();\n\t\tthis.animationFrameId = window.requestAnimationFrame(this.animationFrameHandler);\n\n\t\twindow.removeEventListener('mouseup', this.onWindowMouseUp);\n\t\twindow.addEventListener('mouseup', this.onWindowMouseUp);\n\t};\n\n\tonWindowMouseUp = () => {\n\t\tthis.cancelAnimationFrame();\n\t};\n\n\tconstructor(private elementRef: ElementRef<HTMLElement>) {}\n\n\tngOnInit(): void {\n\t\tthis.elementRef.nativeElement.addEventListener('mousedown', this.onMouseDown);\n\t}\n\n\tinterval = INITIAL_INTERVAL;\n\tstartTime: number | undefined = undefined;\n\tpreviousTime: number | undefined = undefined;\n\tanimationFrameId: number | undefined = undefined;\n\n\tprivate cancelAnimationFrame(): void {\n\t\tif (this.animationFrameId) {\n\t\t\tthis.previousTime = undefined;\n\t\t\tthis.interval = INITIAL_INTERVAL;\n\t\t\tthis.startTime = undefined;\n\t\t\twindow.cancelAnimationFrame(this.animationFrameId);\n\t\t\tthis.animationFrameId = undefined;\n\t\t}\n\t}\n\n\tprivate animationFrameHandler = (time: number): void => {\n\t\tif (this.startTime === undefined) {\n\t\t\tthis.startTime = time;\n\t\t}\n\n\t\tif (this.previousTime === undefined) {\n\t\t\tthis.previousTime = time;\n\t\t}\n\n\t\tif (time - this.previousTime > this.interval) {\n\t\t\tthis.hold.emit();\n\t\t\tthis.previousTime = time;\n\t\t}\n\n\t\tif (time - this.startTime > 1000) {\n\t\t\tthis.interval = 200;\n\t\t}\n\n\t\tif (time - this.startTime > 2000) {\n\t\t\tthis.interval = 50;\n\t\t}\n\n\t\tthis.animationFrameId = window.requestAnimationFrame(this.animationFrameHandler);\n\t};\n\n\tngOnDestroy(): void {\n\t\tthis.elementRef.nativeElement.removeEventListener('mousedown', this.onMouseDown);\n\t\twindow.removeEventListener('mouseup', this.onWindowMouseUp);\n\t\tthis.cancelAnimationFrame();\n\t}\n}\n","import { DecimalPipe, formatNumber } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tEventEmitter,\n\tInject,\n\tLOCALE_ID,\n\tModelSignal,\n\tOutput,\n\tViewChild,\n\tbooleanAttribute,\n\tcomputed,\n\tinput,\n\tmodel,\n\tnumberAttribute,\n} from '@angular/core';\nimport { InputDirective } from '@lucca-front/ng/form-field';\nimport { PickerControlDirection } from './misc.utils';\nimport { RepeatOnHoldDirective } from './repeat-on-hold.directive';\n\nlet nextId = 0;\n\n@Component({\n\tselector: 'lu-time-picker-part',\n\timports: [RepeatOnHoldDirective, DecimalPipe, InputDirective],\n\ttemplateUrl: './time-picker-part.component.html',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimePickerPartComponent {\n\tlabel = input('');\n\n\tdecimalConf = input('2.0-0');\n\n\tvalue: ModelSignal<number | '––'> = model('––');\n\n\tdisplay = input<number | '––'>();\n\n\tmax = input(0, {\n\t\ttransform: numberAttribute,\n\t});\n\n\tdisplayArrows = input(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\tisReadonly = input(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\thideValue = input(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\tdisabled = input(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\tfocused = input(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t@Output() prevRequest = new EventEmitter<void>();\n\t@Output() nextRequest = new EventEmitter<void>();\n\t@Output() inputControlClick = new EventEmitter<PickerControlDirection>();\n\t@Output() touched = new EventEmitter<void>();\n\n\t@ViewChild('timePickerInput') timePickerInput?: ElementRef<HTMLInputElement>;\n\n\tvalueLabel = computed(() => {\n\t\tif (this.hideValue()) {\n\t\t\treturn ' ';\n\t\t}\n\t\tif (this.display() !== undefined) {\n\t\t\treturn this.display();\n\t\t}\n\t\tconst value = this.value();\n\t\tif (value === '––') {\n\t\t\treturn value;\n\t\t}\n\t\treturn formatNumber(value, this.locale, this.decimalConf());\n\t});\n\n\tprotected inputId = `time-picker-part-${nextId++}`;\n\n\tconstructor(@Inject(LOCALE_ID) private locale: string) {}\n\n\tarrowKeyPressed(event: KeyboardEvent, isUpArrow: boolean): void {\n\t\tevent.preventDefault();\n\t\tthis.inputControlClick.emit(isUpArrow ? 'up' : 'down');\n\t}\n\n\tkeysInputHandler(event: Event): void {\n\t\tevent.preventDefault();\n\n\t\tif (!(event.target instanceof HTMLInputElement) || !(event instanceof InputEvent)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (event.data && /\\D+/.test(event.data)) {\n\t\t\tevent.target.value = String(this.value());\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = event.target.value;\n\n\t\tlet val = value.slice(-2) || '00';\n\n\t\tif (this.max() && Number(val) * 10 > this.max()) {\n\t\t\tthis.moveRequest(event, 'next');\n\t\t}\n\n\t\tif (this.max() && Number(val) > this.max()) {\n\t\t\tval = value.slice(-1);\n\t\t}\n\n\t\tevent.target.value = val;\n\t\tthis.value.set(Number(val));\n\t}\n\n\tclearField(event: Event): void {\n\t\tif (event instanceof KeyboardEvent) {\n\t\t\tevent.preventDefault();\n\t\t}\n\n\t\tthis.value.set(0);\n\t}\n\n\tclickHandler(event: MouseEvent) {\n\t\tevent.preventDefault();\n\t}\n\n\tup(): void {\n\t\tthis.inputControlClick.emit('up');\n\t}\n\n\tdown(): void {\n\t\tthis.inputControlClick.emit('down');\n\t}\n\n\tkeydownHandler(event: KeyboardEvent): void {\n\t\tswitch (event.key) {\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tthis.moveRequest(event, 'prev');\n\t\t\t\tbreak;\n\t\t\tcase 'H':\n\t\t\tcase 'h':\n\t\t\tcase ':':\n\t\t\tcase 'ArrowRight':\n\t\t\t\tthis.moveRequest(event, 'next');\n\t\t\t\tbreak;\n\t\t\tcase 'Delete':\n\t\t\tcase 'Backspace':\n\t\t\t\tthis.clearField(event);\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\t\tthis.arrowKeyPressed(event, true);\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowDown':\n\t\t\t\tthis.arrowKeyPressed(event, false);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tmoveRequest(event: Event, direction: 'prev' | 'next'): void {\n\t\tevent.preventDefault();\n\n\t\tif (direction === 'prev') {\n\t\t\tthis.prevRequest.emit();\n\t\t} else {\n\t\t\tthis.nextRequest.emit();\n\t\t}\n\t}\n\n\tfocus(): void {\n\t\tif (this.timePickerInput) {\n\t\t\tthis.timePickerInput.nativeElement.focus();\n\t\t}\n\t}\n}\n","<div class=\"timePicker-fieldset-group-textfield\">\n\t<label class=\"formLabel pr-u-mask\" [attr.id]=\"inputId + '-label'\" [attr.for]=\"inputId + '-input'\">{{ label() }}</label>\n\t<div class=\"timePicker-fieldset-group-textfield\">\n\t\t<input\n\t\t\t#timePickerInput\n\t\t\ttype=\"text\"\n\t\t\tluInput\n\t\t\tluInputStandalone\n\t\t\tinputmode=\"numeric\"\n\t\t\t[attr.id]=\"inputId + '-input'\"\n\t\t\tclass=\"timePicker-fieldset-group-textfield-input\"\n\t\t\t[attr.aria-labelledby]=\"inputId + '-label'\"\n\t\t\tautocomplete=\"off\"\n\t\t\t[value]=\"hideValue() ? null : value()\"\n\t\t\t(input)=\"keysInputHandler($event)\"\n\t\t\t(click)=\"clickHandler($event)\"\n\t\t\t(keydown)=\"keydownHandler($event)\"\n\t\t\t(blur)=\"touched.emit()\"\n\t\t\t(focus)=\"timePickerInput.select()\"\n\t\t/>\n\t\t<span aria-hidden=\"true\" class=\"timePicker-fieldset-group-textfield-display\">{{ valueLabel() }}</span>\n\t</div>\n\t@if (displayArrows()) {\n\t\t<button class=\"timePicker-fieldset-group-stepper\" type=\"button\" tabindex=\"-1\" aria-hidden=\"true\" luRepeatOnHold (hold)=\"up()\">\n\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-northArrow\"></span>\n\t\t</button>\n\t\t<button class=\"timePicker-fieldset-group-stepper\" type=\"button\" tabindex=\"-1\" aria-hidden=\"true\" luRepeatOnHold (hold)=\"down()\">\n\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-southArrow\"></span>\n\t\t</button>\n\t}\n</div>\n","import { ISO8601Duration } from '../core/date-primitives';\n\nexport type DurationChangeEvent = {\n\tpreviousValue: ISO8601Duration | null;\n\tvalue: ISO8601Duration;\n} & (\n\t| {\n\t\t\tsource: 'input' | 'paste';\n\t }\n\t| { source: 'control'; part: 'minutes' | 'hours'; direction: 'up' | 'down' }\n);\n\nexport const DEFAULT_TIME_DECIMAL_PIPE_FORMAT = '2.0-0';\n","export const Translations = {\n\tpt: {\n\t\ttimePickerHours: 'horas',\n\t\ttimePickerTimeSeparator: 'h',\n\t\ttimePickerMinutes: 'minutos',\n\t},\n\tes: {\n\t\ttimePickerHours: 'horas',\n\t\ttimePickerTimeSeparator: 'h',\n\t\ttimePickerMinutes: 'minutos',\n\t},\n\t'nl-BE': {\n\t\ttimePickerHours: 'uren',\n\t\ttimePickerTimeSeparator: 'h',\n\t\ttimePickerMinutes: 'minuten',\n\t},\n\tnl: {\n\t\ttimePickerHours: 'uren',\n\t\ttimePickerTimeSeparator: 'h',\n\t\ttimePickerMinutes: 'minuten',\n\t},\n\tit: {\n\t\ttimePickerHours: 'ore',\n\t\ttimePickerTimeSeparator: 'h',\n\t\ttimePickerMinutes: 'minuti',\n\t},\n\tde: {\n\t\ttimePickerHours: 'Stunden',\n\t\ttimePickerTimeSeparator: 'Std.',\n\t\ttimePickerMinutes: 'Minuten',\n\t},\n\tfr: {\n\t\ttimePickerHours: 'heures',\n\t\ttimePickerTimeSeparator: 'h',\n\t\ttimePickerMinutes: 'minutes',\n\t},\n\ten: {\n\t\ttimePickerHours: 'hours',\n\t\ttimePickerTimeSeparator: 'h',\n\t\ttimePickerMinutes: 'minutes',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_DURATION_PICKER_TRANSLATIONS = new InjectionToken('LuDurationPickerTranslations', {\n\tfactory: () => luDurationPickerTranslations,\n});\n\nexport type DurationPickerTranslations = {\n\ttimePickerHours: string;\n\ttimePickerTimeSeparator: string;\n\ttimePickerMinutes: string;\n};\n\nexport const luDurationPickerTranslations: LuTranslation<DurationPickerTranslations> = Translations;\n","import { NgClass } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, computed, forwardRef, input, model, output, ViewEncapsulation } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { getIntl, isNil, isNotNil } from '@lucca-front/ng/core';\nimport { BasePickerComponent } from '../core/base-picker.component';\nimport { ISO8601Duration } from '../core/date-primitives';\nimport { createDurationFromHoursAndMinutes, getHoursPartFromDuration, getMinutesPartFromDuration, isISO8601Duration, isoDurationToDateFnsDuration, isoDurationToSeconds } from '../core/duration.utils';\nimport { ceilToNearest, circularize, floorToNearest, roundToNearest } from '../core/math.utils';\n\nimport { PickerControlDirection } from '../core/misc.utils';\nimport { TimePickerPartComponent } from '../core/time-picker-part.component';\nimport { DEFAULT_TIME_DECIMAL_PIPE_FORMAT, DurationChangeEvent } from './duration-picker.model';\nimport { LU_DURATION_PICKER_TRANSLATIONS } from './duration-picker.translate';\n\n@Component({\n\tselector: 'lu-duration-picker',\n\timports: [TimePickerPartComponent, NgClass],\n\ttemplateUrl: './duration-picker.component.html',\n\tstyleUrl: './duration-picker.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => DurationPickerComponent),\n\t\t\tmulti: true,\n\t\t},\n\t],\n})\nexport class DurationPickerComponent extends BasePickerComponent {\n\tprotected intl = getIntl(LU_DURATION_PICKER_TRANSLATIONS);\n\n\tvalue = model<ISO8601Duration>('PT0S');\n\treadonly max = input<ISO8601Duration>('PT99H');\n\n\treadonly displayArrows = input(false, { transform: booleanAttribute });\n\n\treadonly label = input<string>();\n\n\treadonly hideZeroValue = input(false, { transform: booleanAttribute });\n\n\treadonly durationChange = output<DurationChangeEvent>();\n\n\tprotected readonly hours = computed(() => getHoursPartFromDuration(this.value()));\n\tprotected readonly minutes = computed(() => getMinutesPartFromDuration(this.value()));\n\tprotected readonly shouldHideValue = computed(() => this.hideZeroValue() && this.hours() === 0 && this.minutes() === 0);\n\n\tprotected readonly pickerClasses = computed(() => {\n\t\treturn {\n\t\t\ttimePicker: true,\n\t\t\t'mod-stepper': this.displayArrows(),\n\t\t\t'mod-stepperHover': this.displayArrows(),\n\t\t\t[`mod-${this.size()}`]: Boolean(this.size()),\n\t\t};\n\t});\n\tprotected readonly fieldsetSuffixClasses = computed(() => {\n\t\treturn {\n\t\t\t'timePicker-fieldset-groupSeparator': true,\n\t\t\t'pr-u-visibilityHidden': this.shouldHideValue(),\n\t\t};\n\t});\n\tprotected separator = this.intl.timePickerTimeSeparator;\n\n\tprotected hoursDecimalConf = DEFAULT_TIME_DECIMAL_PIPE_FORMAT;\n\n\twriteValue(value: ISO8601Duration): void {\n\t\tthis.value.set(value || 'PT0S');\n\t}\n\n\tsetDisabledState?(isDisabled: boolean): void {\n\t\tthis.disabled.set(isDisabled);\n\t}\n\n\tprotected hoursInputHandler(value: number | '––'): void {\n\t\tthis.setTime({\n\t\t\tpreviousValue: this.value(),\n\t\t\tvalue: createDurationFromHoursAndMinutes(+value, this.minutes()),\n\t\t\tsource: 'input',\n\t\t});\n\t}\n\n\tprotected minutesInputHandler(value: number | '––'): void {\n\t\tthis.setTime({\n\t\t\tpreviousValue: this.value(),\n\t\t\tvalue: createDurationFromHoursAndMinutes(this.hours(), +value),\n\t\t\tsource: 'input',\n\t\t});\n\t}\n\n\tprotected copyHandler(event: ClipboardEvent): void {\n\t\tevent.preventDefault();\n\t\t// write value to clipboard\n\t\tconst value = this.value();\n\t\tif (isNotNil(value)) {\n\t\t\tevent.clipboardData?.setData('text/plain', value);\n\t\t}\n\t}\n\n\tprotected pasteHandler(event: ClipboardEvent): void {\n\t\tevent.preventDefault();\n\t\tconst pastedValue = event.clipboardData?.getData('text/plain');\n\t\tif (isNotNil(pastedValue)) {\n\t\t\tlet value: ISO8601Duration;\n\t\t\t// If it's an iso duration, handle as-is\n\t\t\tif (isISO8601Duration(pastedValue)) {\n\t\t\t\tvalue = pastedValue;\n\t\t\t}\n\t\t\tif (/\\d?\\dh\\d\\d/.test(pastedValue)) {\n\t\t\t\tconst split = pastedValue.split('h');\n\t\t\t\tvalue = createDurationFromHoursAndMinutes(+split[0], +split[1]);\n\t\t\t}\n\t\t\tif (/\\d?\\d:\\d\\d/.test(pastedValue)) {\n\t\t\t\tconst split = pastedValue.split(':');\n\t\t\t\tvalue = createDurationFromHoursAndMinutes(+split[0], +split[1]);\n\t\t\t}\n\t\t\tif (value) {\n\t\t\t\tthis.durationChange.emit({\n\t\t\t\t\tpreviousValue: this.value(),\n\t\t\t\t\tsource: 'paste',\n\t\t\t\t\tvalue,\n\t\t\t\t});\n\t\t\t\tthis.value.set(value);\n\t\t\t\tthis.onChange?.(value);\n\t\t\t}\n\t\t}\n\t}\n\n\toverride getHoursIncrement(): number {\n\t\tconst step = this.step();\n\t\tif (isNil(step)) {\n\t\t\treturn 1;\n\t\t}\n\n\t\tconst { hours } = isoDurationToDateFnsDuration(step);\n\n\t\tif (hours === 0) {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 24 % hours === 0 ? hours : 1;\n\t}\n\n\toverride getMinutesIncrement(): number | null {\n\t\tconst step = this.step();\n\t\tif (isNil(step)) {\n\t\t\treturn 1;\n\t\t}\n\n\t\tconst { minutes } = isoDurationToDateFnsDuration(step);\n\n\t\tif (minutes === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn 60 % minutes === 0 ? minutes : 1;\n\t}\n\n\tprivate setTime(protoEvent: DurationChangeEvent): void {\n\t\tlet hoursPart = getHoursPartFromDuration(protoEvent.value);\n\t\tconst minutesPart = getMinutesPartFromDuration(protoEvent.value);\n\n\t\tif (hoursPart < 0) {\n\t\t\thoursPart = getHoursPartFromDuration(this.max());\n\t\t\tif (isoDurationToSeconds(createDurationFromHoursAndMinutes(hoursPart, minutesPart)) > isoDurationToSeconds(this.max())) {\n\t\t\t\t// If current value with minutes is > max, decrement hours again\n\t\t\t\thoursPart--;\n\t\t\t}\n\t\t} else if (hoursPart > getHoursPartFromDuration(this.max())) {\n\t\t\thoursPart = 0;\n\t\t}\n\n\t\tconst max = isoDurationToSeconds(this.max());\n\n\t\tconst candidateTimeAsSeconds = hoursPart * 3600 + minutesPart * 60;\n\n\t\tconst seconds = roundToNearest(circularize(candidateTimeAsSeconds, max), 60);\n\n\t\tconst hours = Math.floor(seconds / 3600);\n\t\tconst minutes = Math.floor((seconds % 3600) / 60);\n\n\t\tconst result = createDurationFromHoursAndMinutes(hours, minutes);\n\n\t\tthis.value.set(result);\n\t\tthis.onChange?.(result);\n\t\tthis.durationChange.emit({\n\t\t\t...protoEvent,\n\t\t\tvalue: result,\n\t\t});\n\t}\n\n\tprotected inputControlClickHandler(part: 'hours' | 'minutes', direction: PickerControlDirection): void {\n\t\tconst val = this.value() ?? 'PT0S';\n\t\tconst hoursPart = getHoursPartFromDuration(val);\n\t\tconst minutesPart = getMinutesPartFromDuration(val);\n\n\t\tconst selectedPart = part === 'hours' ? hoursPart : minutesPart;\n\t\tconst selectedIncrement = part === 'hours' ? this.hoursIncrement() : this.minutesIncrement();\n\t\tlet modifiedVal: number;\n\n\t\tif (selectedIncrement === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (direction === 'up') {\n\t\t\tmodifiedVal = floorToNearest(selectedPart + selectedIncrement, selectedIncrement);\n\t\t} else {\n\t\t\tmodifiedVal = ceilToNearest(selectedPart - selectedIncrement, selectedIncrement);\n\t\t}\n\n\t\tconst newTime = part === 'hours' ? createDurationFromHoursAndMinutes(modifiedVal, minutesPart) : createDurationFromHoursAndMinutes(hoursPart, modifiedVal);\n\n\t\tthis.setTime({\n\t\t\tsource: 'control',\n\t\t\tpreviousValue: this.value(),\n\t\t\tvalue: newTime,\n\t\t\tpart,\n\t\t\tdirection,\n\t\t});\n\t}\n\n\tpublic focus() {\n\t\tif (isNotNil(this.hoursPart)) {\n\t\t\tthis.focusPart('hours');\n\t\t}\n\t}\n}\n","<div [class]=\"pickerClasses()\" (copy)=\"copyHandler($event)\" (paste)=\"pasteHandler($event)\">\n\t<fieldset class=\"timePicker-fieldset\" [disabled]=\"disabled()\">\n\t\t<legend>\n\t\t\t<span class=\"pr-u-mask\">{{ label() }}</span>\n\t\t</legend>\n\t\t<lu-time-picker-part\n\t\t\t#hoursPart\n\t\t\tclass=\"timePicker-fieldset-group\"\n\t\t\t[disabled]=\"disabled()\"\n\t\t\t[label]=\"intl.timePickerHours\"\n\t\t\t[value]=\"hours()\"\n\t\t\t[decimalConf]=\"hoursDecimalConf\"\n\t\t\t[hideValue]=\"shouldHideValue()\"\n\t\t\t[displayArrows]=\"displayArrows()\"\n\t\t\t(valueChange)=\"hoursInputHandler($event)\"\n\t\t\t(nextRequest)=\"focusPart('minutes')\"\n\t\t\t(inputControlClick)=\"inputControlClickHandler('hours', $event)\"\n\t\t/>\n\t\t<div aria-hidden=\"true\" [class]=\"fieldsetSuffixClasses()\">{{ separator }}</div>\n\t\t<lu-time-picker-part\n\t\t\t#minutesPart\n\t\t\tclass=\"timePicker-fieldset-group\"\n\t\t\t[label]=\"intl.timePickerMinutes\"\n\t\t\t[value]=\"minutes()\"\n\t\t\t[max]=\"59\"\n\t\t\t[hideValue]=\"shouldHideValue()\"\n\t\t\t[displayArrows]=\"displayArrows()\"\n\t\t\t[disabled]=\"disabled() || !minutesIncrement()\"\n\t\t\t(valueChange)=\"minutesInputHandler($event)\"\n\t\t\t(prevRequest)=\"focusPart('hours')\"\n\t\t\t(inputControlClick)=\"inputControlClickHandler('minutes', $event)\"\n\t\t/>\n\t</fieldset>\n</div>\n","import { ISO8601Time } from './date-primitives';\n\nexport const castToIsoTime = (str: string) => str as ISO8601Time;\n\nexport const convertStringToIsoTime = (time: string): ISO8601Time => {\n\tif (/^\\d{1,2}:\\d{2}:\\d{2}$/.test(time)) {\n\t\treturn castToIsoTime(time);\n\t}\n\n\tif (/^\\d{1,2}:\\d{2}$/.test(time)) {\n\t\treturn castToIsoTime(`${time}:00`);\n\t}\n\n\tif (/^\\d{1,2}h\\d{2}$/.test(time)) {\n\t\treturn convertStringToIsoTime(time.replace('h', ':'));\n\t}\n\n\tthrow new Error(`Invalid time format: ${time}`);\n};\n\nexport const createIsoTimeFromHoursAndMinutes = (hours: number, minutes: number, seconds: number = 0): ISO8601Time => {\n\tconst hoursStr = hours.toString().padStart(2, '0');\n\tconst minutesStr = minutes.toString().padStart(2, '0');\n\tconst secondsStr = seconds.toString().padStart(2, '0');\n\n\treturn `${hoursStr}:${minutesStr}:${secondsStr}`;\n};\n\nexport const isoTimeToSeconds = (time: ISO8601Time): number => {\n\treturn getHoursPartFromIsoTime(time) * 3600 + getMinutesPartFromIsoTime(time) * 60 + getSecondsPartFromIsoTime(time);\n};\n\nexport const getHoursPartFromIsoTime = (time: ISO8601Time): number => Number(time.split(':')[0]) || 0;\n\nexport const getMinutesPartFromIsoTime = (time: ISO8601Time): number => Number(time.split(':')[1]) || 0;\nexport const getSecondsPartFromIsoTime = (time: ISO8601Time): number => Number(time.split(':')[2]) || 0;\n\nexport const getHoursDisplayPartFromIsoTime = (time: ISO8601Time, ampm = false): number | '––' => {\n\tconst hours = time.split(':')[0];\n\tif (hours === '––') {\n\t\treturn hours;\n\t}\n\tif (ampm) {\n\t\t// Most consistent impl is to create a date and ask date-fns\n\t\treturn formatAMPM(Number(hours)).hours;\n\t}\n\treturn Number(hours);\n};\n\nexport const formatAMPM = (inputHours: number): { hours: number; suffix: 'AM' | 'PM' } => {\n\tlet hours = inputHours;\n\tconst suffix = hours >= 12 ? 'PM' : 'AM';\n\thours = hours % 12;\n\thours = hours ? hours : 12; // 0 should be 12\n\treturn {\n\t\thours,\n\t\tsuffix,\n\t};\n};\n\nexport const getMinutesDisplayPartFromIsoTime = (time: ISO8601Time): number | '––' => {\n\tconst minutes = time.split(':')[1];\n\tif (minutes === '––') {\n\t\treturn minutes;\n\t}\n\treturn Number(minutes);\n};\n","import { ISO8601Time } from '../core/date-primitives';\n\nexport type TimeChangeEvent = {\n\tpreviousValue: ISO8601Time | null;\n\tvalue: ISO8601Time;\n} & (\n\t| {\n\t\t\tsource: 'input' | 'paste';\n\t }\n\t| { source: 'control'; part: 'minutes' | 'hours'; direction: 'up' | 'down' }\n);\nexport const DEFAULT_MIN_TIME: ISO8601Time = '--:--:--';\n\nexport const DEFAULT_TIME_DECIMAL_PIPE_FORMAT = '2.0-0';\n","export const Translations = {\n\tpt: {\n\t\ttimePickerHours: 'horas',\n\t\ttimePickerTimeSeparator: ':',\n\t\ttimePickerMinutes: 'minutos',\n\t},\n\tes: {\n\t\ttimePickerHours: 'horas',\n\t\ttimePickerTimeSeparator: ':',\n\t\ttimePickerMinutes: 'minutos',\n\t},\n\t'nl-BE': {\n\t\ttimePickerHours: 'uren',\n\t\ttimePickerTimeSeparator: ':',\n\t\ttimePickerMinutes: 'minuten',\n\t},\n\tnl: {\n\t\ttimePickerHours: 'uren',\n\t\ttimePickerTimeSeparator: ':',\n\t\ttimePickerMinutes: 'minuten',\n\t},\n\tit: {\n\t\ttimePickerHours: 'ore',\n\t\ttimePickerTimeSeparator: ':',\n\t\ttimePickerMinutes: 'minuti',\n\t},\n\tde: {\n\t\ttimePickerHours: 'Stunden',\n\t\ttimePickerTimeSeparator: ':',\n\t\ttimePickerMinutes: 'Minuten',\n\t},\n\tfr: {\n\t\ttimePickerHours: 'heures',\n\t\ttimePickerTimeSeparator: ':',\n\t\ttimePickerMinutes: 'minutes',\n\t},\n\ten: {\n\t\ttimePickerHours: 'hours',\n\t\ttimePickerTimeSeparator: ':',\n\t\ttimePickerMinutes: 'minutes',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_TIME_PICKER_TRANSLATIONS = new InjectionToken('LuTimePickerTranslations', {\n\tfactory: () => luTimePickerTranslations,\n});\n\nexport type TimePickerTranslations = {\n\ttimePickerHours: string;\n\ttimePickerTimeSeparator: string;\n\ttimePickerMinutes: string;\n};\n\nexport const luTimePickerTranslations: LuTranslation<TimePickerTranslations> = Translations;\n","import { NgClass } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, computed, ElementRef, forwardRef, inject, input, LOCALE_ID, model, output, viewChild, ViewEncapsulation } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { getIntl, isNil, isNotNil } from '@lucca-front/ng/core';\nimport { BasePickerComponent } from '../core/base-picker.component';\nimport { ISO8601Time } from '../core/date-primitives';\nimport {\n\tconvertStringToIsoTime,\n\tcreateIsoTimeFromHoursAndMinutes,\n\tformatAMPM,\n\tgetHoursDisplayPartFromIsoTime,\n\tgetHoursPartFromIsoTime,\n\tgetMinutesDisplayPartFromIsoTime,\n\tgetMinutesPartFromIsoTime,\n\tisoTimeToSeconds,\n} from '../core/date.utils';\nimport { isoDurationToDateFnsDuration } from '../core/duration.utils';\nimport { ceilToNearest, circularize, floorToNearest, roundToNearest } from '../core/math.utils';\nimport { PickerControlDirection } from '../core/misc.utils';\nimport { RepeatOnHoldDirective } from '../core/repeat-on-hold.directive';\nimport { TimePickerPartComponent } from '../core/time-picker-part.component';\nimport { DEFAULT_MIN_TIME, DEFAULT_TIME_DECIMAL_PIPE_FORMAT, TimeChangeEvent } from './time-picker.model';\nimport { LU_TIME_PICKER_TRANSLATIONS } from './time-picker.translate';\n\nconst MAX_TIME = '23:59:59';\nlet nextId = 0;\n\n@Component({\n\tselector: 'lu-time-picker',\n\timports: [TimePickerPartComponent, NgClass, FormsModule, RepeatOnHoldDirective],\n\ttemplateUrl: './time-picker.component.html',\n\tstyleUrl: './time-picker.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => TimePickerComponent),\n\t\t\tmulti: true,\n\t\t},\n\t],\n})\nexport class TimePickerComponent extends BasePickerComponent {\n\tprotected intl = getIntl(LU_TIME_PICKER_TRANSLATIONS);\n\tprotected localeId = inject(LOCALE_ID);\n\n\treadonly idSuffix = nextId++;\n\n\treadonly anteMeridiemRef = viewChild<ElementRef<HTMLInputElement>>('anteMeridiemRef');\n\n\treadonly postMeridiemRef = viewChild<ElementRef<HTMLInputElement>>('postMeridiemRef');\n\n\tvalue = model<ISO8601Time>('--:--:--');\n\treadonly max = input<ISO8601Time>(MAX_TIME);\n\n\treadonly displayArrows = input(false, { transform: booleanAttribute });\n\n\treadonly forceMeridiemDisplay = input<boolean | null>(null);\n\n\treadonly enableMeridiemDisplay = computed(() => {\n\t\tif (this.forceMeridiemDisplay() !== null) {\n\t\t\treturn this.forceMeridiemDisplay();\n\t\t}\n\t\t// We can't ask the API if time should include meridiem so the easiest was to just make it format a static date.\n\t\treturn Intl.DateTimeFormat(this.localeId, {\n\t\t\ttimeStyle: 'short',\n\t\t\tdateStyle: 'short',\n\t\t})\n\t\t\t.format(new Date('1/1/1 17:00:00'))\n\t\t\t.includes('PM');\n\t});\n\n\treadonly label = input<string>();\n\n\treadonly timeChange = output<TimeChangeEvent>();\n\n\tprotected readonly hoursDisplay = computed(() => getHoursDisplayPartFromIsoTime(this.value(), this.enableMeridiemDisplay()));\n\tprotected readonly minutesDisplay = computed(() => getMinutesDisplayPartFromIsoTime(this.value()));\n\n\tprotected readonly hours = computed(() => getHoursPartFromIsoTime(this.value()));\n\tprotected readonly minutes = computed(() => getMinutesPartFromIsoTime(this.value()));\n\tprotected readonly pickerClasses = computed(() => {\n\t\treturn {\n\t\t\ttimePicker: true,\n\t\t\t'mod-stepper': this.displayArrows(),\n\t\t\t'mod-stepperHover': this.displayArrows(),\n\t\t\t[`mod-${this.size()}`]: Boolean(this.size()),\n\t\t};\n\t});\n\tprotected separator = this.intl.timePickerTimeSeparator;\n\n\tprotected hoursDecimalConf = DEFAULT_TIME_DECIMAL_PIPE_FORMAT;\n\n\tprotected readonly maxHours = computed(() => {\n\t\tif (this.enableMeridiemDisplay()) {\n\t\t\treturn 12;\n\t\t}\n\t\treturn getHoursPartFromIsoTime(this.max() ?? '23:59:59');\n\t});\n\n\tprotected readonly ampmDisplay = computed(() => {\n\t\treturn formatAMPM(this.hours()).suffix;\n\t});\n\n\tprotected override focusPart(type: 'hours' | 'minutes' | 'meridiem') {\n\t\tif (type === 'meridiem') {\n\t\t\tconst elementToFocus = this.ampmDisplay() === 'AM' ? this.anteMeridiemRef()?.nativeElement : this.postMeridiemRef()?.nativeElement;\n\t\t\telementToFocus?.focus();\n\t\t} else {\n\t\t\tsuper.focusPart(type);\n\t\t}\n\t}\n\n\twriteValue(value: ISO8601Time): void {\n\t\tthis.value.set(value || '––:––:––');\n\t}\n\n\tsetDisabledState?(isDisabled: boolean): void {\n\t\tthis.disabled.set(isDisabled);\n\t}\n\n\tprotected hoursInputHandler(value: number | '––'): void {\n\t\tthis.setTime({\n\t\t\tpreviousValue: this.value(),\n\t\t\t// Mostly for compiler because we never set the time to –– with input handler\n\t\t\tvalue: createIsoTimeFromHoursAndMinutes(+value, this.minutes()),\n\t\t\tsource: 'input',\n\t\t});\n\t}\n\n\tprotected minutesInputHandler(value: number | '––'): void {\n\t\tthis.setTime({\n\t\t\tpreviousValue: this.value(),\n\t\t\t// Mostly for compiler because we never set the time to –– with input handler\n\t\t\tvalue: createIsoTimeFromHoursAndMinutes(this.hours(), +value),\n\t\t\tsource: 'input',\n\t\t});\n\t}\n\n\tprotected copyHandler(event: ClipboardEvent): void {\n\t\tevent.preventDefault();\n\t\t// write value to clipboard\n\t\tconst value = this.value();\n\t\tif (isNotNil(value)) {\n\t\t\tevent.clipboardData?.setData('text/plain', value);\n\t\t}\n\t}\n\n\tprotected pasteHandler(event: ClipboardEvent): void {\n\t\tevent.preventDefault();\n\t\tconst pastedValue = event.clipboardData?.getData('text/plain');\n\t\tif (isNotNil(pastedValue)) {\n\t\t\ttry {\n\t\t\t\tconst value = convertStringToIsoTime(pastedValue);\n\t\t\t\tthis.timeChange.emit({\n\t\t\t\t\tpreviousValue: this.value(),\n\t\t\t\t\tsource: 'paste',\n\t\t\t\t\tvalue,\n\t\t\t\t});\n\t\t\t\tthis.value.set(value);\n\t\t\t\tthis.onChange?.(value);\n\t\t\t} catch {\n\t\t\t\t// do nothing\n\t\t\t}\n\t\t}\n\t}\n\n\toverride getHoursIncrement(): number {\n\t\tconst step = this.step();\n\t\tif (isNil(step)) {\n\t\t\treturn 1;\n\t\t}\n\n\t\tconst { hours } = isoDurationToDateFnsDuration(step);\n\n\t\tif (hours === 0) {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 24 % hours === 0 ? hours : 1;\n\t}\n\n\toverride getMinutesIncrement(): number | null {\n\t\tconst step = this.step();\n\t\tif (isNil(step)) {\n\t\t\treturn 1;\n\t\t}\n\n\t\tconst { minutes } = isoDurationToDateFnsDuration(step);\n\n\t\tif (minutes === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn 60 % minutes === 0 ? minutes : 1;\n\t}\n\n\tprivate setTime(protoEvent: TimeChangeEvent): void {\n\t\tconst hoursPart = getHoursPartFromIsoTime(protoEvent.value);\n\t\tconst minutesPart = getMinutesPartFromIsoTime(protoEvent.value);\n\n\t\tconst max = isoTimeToSeconds(this.max());\n\n\t\tconst candidateTimeAsSeconds = hoursPart * 3600 + minutesPart * 60;\n\n\t\tconst seconds = roundToNearest(circularize(candidateTimeAsSeconds, max), 60);\n\n\t\tconst hours = Math.floor(seconds / 3600);\n\t\tconst minutes = Math.floor((seconds % 3600) / 60);\n\n\t\tconst result = createIsoTimeFromHoursAndMinutes(hours, minutes);\n\n\t\tthis.value.set(result);\n\t\tthis.onChange?.(result);\n\t\tthis.timeChange.emit({\n\t\t\t...protoEvent,\n\t\t\tvalue: result,\n\t\t});\n\t}\n\n\tprotected inputControlClickHandler(part: 'hours' | 'minutes', direction: PickerControlDirection): void {\n\t\tconst val = this.value() ?? DEFAULT_MIN_TIME;\n\t\tconst hoursPart = getHoursPartFromIsoTime(val);\n\t\tconst minutesPart = getMinutesPartFromIsoTime(val);\n\n\t\tconst selectedPart = part === 'hours' ? hoursPart : minutesPart;\n\t\tconst selectedIncrement = part === 'hours' ? this.hoursIncrement() : this.minutesIncrement();\n\t\tlet modifiedVal: number;\n\n\t\tif (selectedIncrement === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (direction === 'up') {\n\t\t\tmodifiedVal = floorToNearest(selectedPart + selectedIncrement, selectedIncrement);\n\t\t} else {\n\t\t\tmodifiedVal = ceilToNearest(selectedPart - selectedIncrement, selectedIncrement);\n\t\t}\n\n\t\tconst newTime = part === 'hours' ? createIsoTimeFromHoursAndMinutes(modifiedVal, minutesPart) : createIsoTimeFromHoursAndMinutes(hoursPart, modifiedVal);\n\n\t\tthis.setTime({\n\t\t\tsource: 'control',\n\t\t\tpreviousValue: this.value(),\n\t\t\tvalue: newTime,\n\t\t\tpart,\n\t\t\tdirection,\n\t\t});\n\t}\n\n\tpublic focus() {\n\t\tif (isNotNil(this.hoursPart)) {\n\t\t\tthis.focusPart('hours');\n\t\t}\n\t}\n\n\tswitchMeridiem(newValue: 'AM' | 'PM') {\n\t\tlet hours = getHoursPartFromIsoTime(this.value());\n\t\tconst minutes = getMinutesPartFromIsoTime(this.value());\n\t\tif (newValue === 'PM') {\n\t\t\thours = circularize(hours + 12, 23);\n\t\t} else {\n\t\t\thours = circularize(hours - 12, 23);\n\t\t}\n\t\tthis.setTime({\n\t\t\tsource: 'input',\n\t\t\tpreviousValue: this.value(),\n\t\t\tvalue: createIsoTimeFromHoursAndMinutes(hours, minutes),\n\t\t});\n\t}\n}\n","<div [class]=\"pickerClasses()\" (copy)=\"copyHandler($event)\" (paste)=\"pasteHandler($event)\">\n\t<fieldset class=\"timePicker-fieldset\" [disabled]=\"disabled()\">\n\t\t<legend>\n\t\t\t<span class=\"pr-u-mask\">{{ label() }}</span>\n\t\t</legend>\n\t\t<lu-time-picker-part\n\t\t\t#hoursPart\n\t\t\tclass=\"timePicker-fieldset-group\"\n\t\t\t[disabled]=\"disabled()\"\n\t\t\t[label]=\"intl.timePickerHours\"\n\t\t\t[value]=\"hours()\"\n\t\t\t[display]=\"hoursDisplay()\"\n\t\t\t[max]=\"maxHours()\"\n\t\t\t[decimalConf]=\"hoursDecimalConf\"\n\t\t\t[displayArrows]=\"displayArrows()\"\n\t\t\t(touched)=\"onTouched?.()\"\n\t\t\t(valueChange)=\"hoursInputHandler($event)\"\n\t\t\t(nextRequest)=\"focusPart('minutes')\"\n\t\t\t(inputControlClick)=\"inputControlClickHandler('hours', $event)\"\n\t\t/>\n\t\t<div aria-hidden=\"true\" class=\"timePicker-fieldset-groupSeparator\">{{ separator }}</div>\n\t\t<lu-time-picker-part\n\t\t\t#minutesPart\n\t\t\tclass=\"timePicker-fieldset-group\"\n\t\t\t[label]=\"intl.timePickerMinutes\"\n\t\t\t[value]=\"minutesDisplay()\"\n\t\t\t[max]=\"59\"\n\t\t\t[displayArrows]=\"displayArrows()\"\n\t\t\t(touched)=\"onTouched?.()\"\n\t\t\t[disabled]=\"disabled() || !minutesIncrement()\"\n\t\t\t(valueChange)=\"minutesInputHandler($event)\"\n\t\t\t(prevRequest)=\"focusPart('hours')\"\n\t\t\t(nextRequest)=\"focusPart('meridiem')\"\n\t\t\t(inputControlClick)=\"inputControlClickHandler('minutes', $event)\"\n\t\t/>\n\t\t@if (enableMeridiemDisplay()) {\n\t\t\t<div\n\t\t\t\tclass=\"timePicker-fieldset-meridiem\"\n\t\t\t\t(copy)=\"copyHandler($event)\"\n\t\t\t\t(paste)=\"pasteHandler($event)\"\n\t\t\t\t(keydown.A)=\"anteMeridiemRef.click()\"\n\t\t\t\t(keydown.P)=\"postMeridiemRef.click()\"\n\t\t\t\t(keydown.shift.A)=\"anteMeridiemRef.click()\"\n\t\t\t\t(keydown.shift.P)=\"postMeridiemRef.click()\"\n\t\t\t\t(click)=\"ampmDisplay() === 'AM' ? anteMeridiemRef.focus() : postMeridiemRef.focus()\"\n\t\t\t>\n\t\t\t\t<div class=\"timePicker-fieldset-meridiem-ante\">\n\t\t\t\t\t<label [attr.for]=\"'anteMeridiem-' + idSuffix\">AM</label>\n\t\t\t\t\t<input\n\t\t\t\t\t\t#anteMeridiemRef\n\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\t[attr.name]=\"'meridiem-' + idSuffix\"\n\t\t\t\t\t\t[name]=\"'meridiem-' + idSuffix\"\n\t\t\t\t\t\t[attr.id]=\"'anteMeridiem-' + idSuffix\"\n\t\t\t\t\t\tclass=\"timePicker-fieldset-meridiem-ante-input\"\n\t\t\t\t\t\tvalue=\"AM\"\n\t\t\t\t\t\t[ngModel]=\"ampmDisplay()\"\n\t\t\t\t\t\t(ngModelChange)=\"switchMeridiem($event)\"\n\t\t\t\t\t\t(click)=\"$event.stopPropagation()\"\n\t\t\t\t\t\t(keydown.arrowleft)=\"$event.preventDefault(); focusPart('minutes')\"\n\t\t\t\t\t\t(keydown.arrowright)=\"$event.preventDefault()\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"timePicker-fieldset-meridiem-post\">\n\t\t\t\t\t<label [attr.for]=\"'postMeridiem-' + idSuffix\">PM</label>\n\t\t\t\t\t<input\n\t\t\t\t\t\t#postMeridiemRef\n\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\t[attr.name]=\"'meridiem-' + idSuffix\"\n\t\t\t\t\t\t[name]=\"'meridiem-' + idSuffix\"\n\t\t\t\t\t\t[attr.id]=\"'postMeridiem-' + idSuffix\"\n\t\t\t\t\t\tclass=\"timePicker-fieldset-meridiem-post-input\"\n\t\t\t\t\t\tvalue=\"PM\"\n\t\t\t\t\t\t[ngModel]=\"ampmDisplay()\"\n\t\t\t\t\t\t(ngModelChange)=\"switchMeridiem($event)\"\n\t\t\t\t\t\t(click)=\"$event.stopPropagation()\"\n\t\t\t\t\t\t(keydown.arrowleft)=\"$event.preventDefault(); focusPart('minutes')\"\n\t\t\t\t\t\t(keydown.arrowright)=\"$event.preventDefault()\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t@if (displayArrows()) {\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"timePicker-fieldset-group-stepper\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t(click)=\"switchMeridiem(ampmDisplay() === 'AM' ? 'PM' : 'AM')\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-northArrow\"></span>\n\t\t\t\t\t</button>\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"timePicker-fieldset-group-stepper\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t(click)=\"switchMeridiem(ampmDisplay() === 'AM' ? 'PM' : 'AM')\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-southArrow\"></span>\n\t\t\t\t\t</button>\n\t\t\t\t}\n\t\t\t</div>\n\t\t}\n\t</fieldset>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextId","DEFAULT_TIME_DECIMAL_PIPE_FORMAT","Translations"],"mappings":"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"}
1
+ {"version":3,"file":"lucca-front-ng-time.mjs","sources":["../../../packages/ng/time/core/base-picker.component.ts","../../../packages/ng/time/core/duration.utils.ts","../../../packages/ng/time/core/math.utils.ts","../../../packages/ng/time/core/repeat-on-hold.directive.ts","../../../packages/ng/time/core/time-picker-part.component.ts","../../../packages/ng/time/core/time-picker-part.component.html","../../../packages/ng/time/duration-picker/duration-picker.model.ts","../../../packages/ng/time/duration-picker/translations.ts","../../../packages/ng/time/duration-picker/duration-picker.translate.ts","../../../packages/ng/time/duration-picker/duration-picker.component.ts","../../../packages/ng/time/duration-picker/duration-picker.component.html","../../../packages/ng/time/core/date.utils.ts","../../../packages/ng/time/time-picker/time-picker.model.ts","../../../packages/ng/time/time-picker/translations.ts","../../../packages/ng/time/time-picker/time-picker.translate.ts","../../../packages/ng/time/time-picker/time-picker.component.ts","../../../packages/ng/time/time-picker/time-picker.component.html","../../../packages/ng/time/lucca-front-ng-time.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, input, model, viewChild } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { ISO8601Duration, ISO8601Time } from './date-primitives';\nimport { TimePickerPartComponent } from './time-picker-part.component';\n\n@Component({\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplate: '',\n})\nexport abstract class BasePickerComponent implements ControlValueAccessor {\n\tonChange: (value: ISO8601Time | ISO8601Duration) => void;\n\tonTouched: () => void;\n\n\tstep = input<ISO8601Duration>(null);\n\n\tdisabled = model(false);\n\n\tsize = input<'S' | 'M'>();\n\n\thoursPart = viewChild<TimePickerPartComponent>('hoursPart');\n\n\tminutesPart = viewChild<TimePickerPartComponent>('minutesPart');\n\n\tprotected hoursIncrement = computed(() => this.getHoursIncrement());\n\tprotected minutesIncrement = computed(() => this.getMinutesIncrement());\n\n\tregisterOnChange(fn: () => void): void {\n\t\tthis.onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: () => void): void {\n\t\tthis.onTouched = fn;\n\t}\n\n\tabstract writeValue(value: ISO8601Time | ISO8601Duration): void;\n\n\tabstract getHoursIncrement(): number;\n\n\tabstract getMinutesIncrement(): number;\n\n\tprotected focusPart(type: 'hours' | 'minutes') {\n\t\tthis.onTouched?.();\n\t\tif (type === 'hours') {\n\t\t\tif (this.hoursIncrement() === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.hoursPart()?.focus();\n\t\t}\n\t\tif (type === 'minutes') {\n\t\t\tif (this.minutesIncrement() === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.minutesPart()?.focus();\n\t\t}\n\t}\n}\n","import { isNotNil } from '@lucca-front/ng/core';\nimport { Duration } from 'date-fns';\nimport { ISO8601Duration } from './date-primitives';\n\nexport type NonNullableDateFnsDuration = {\n\tyears: number;\n\tmonths: number;\n\tdays: number;\n\thours: number;\n\tminutes: number;\n\tseconds: number;\n};\n\ntype DateFnsDuration = Duration;\n\nconst ISO8601DurationRegExp =\n\t/^(?<sign>-)?P(?:(?<years>-?\\d+)Y)?(?:(?<months>-?\\d+)M)?(?:(?<weeks>-?\\d+)W)?(?:(?<days>-?\\d+)D)?(?:T(?:(?<hours>-?\\d+)H)?(?:(?<minutes>-?\\d+)M)?(?:(?<seconds>-?\\d+(?:\\.\\d+)?)S)?)?$/;\n\n// TODO memoize\nexport const isoDurationToDateFnsDuration = (isoDuration: ISO8601Duration): NonNullableDateFnsDuration => {\n\tconst matches = ISO8601DurationRegExp.exec(isoDuration);\n\n\tconst groups = matches?.groups;\n\n\tif (!groups) {\n\t\tthrow new Error(`Invalid ISO 8601 duration: ${isoDuration}`);\n\t}\n\n\tconst withSign = groups['sign'] === '-' ? -1 : 1;\n\n\tconst result: NonNullableDateFnsDuration = {\n\t\tyears: groups['years'] ? Number(groups['years']) : 0,\n\t\tmonths: groups['months'] ? Number(groups['months']) : 0,\n\t\tdays: groups['days'] ? Number(groups['days']) : 0,\n\t\thours: groups['hours'] ? Number(groups['hours']) : 0,\n\t\tminutes: groups['minutes'] ? Number(groups['minutes']) : 0,\n\t\tseconds: groups['seconds'] ? Number(groups['seconds']) : 0,\n\t};\n\n\tresult.years *= withSign;\n\tresult.months *= withSign;\n\tresult.days *= withSign;\n\tresult.hours *= withSign;\n\tresult.minutes *= withSign;\n\tresult.seconds *= withSign;\n\n\treturn result;\n};\n\nexport function isISO8601Duration(value: string): value is ISO8601Duration {\n\treturn ISO8601DurationRegExp.test(value);\n}\n\nexport const dateFnsDurationToSeconds = (durationFns: DateFnsDuration): number => {\n\tconst { years, months } = durationFns;\n\tlet { days, hours, minutes, seconds } = durationFns;\n\n\tif ((isNotNil(years) && years !== 0) || (isNotNil(months) && months !== 0)) {\n\t\tthrow new Error('years and months are not supported');\n\t}\n\n\tdays = days || 0;\n\thours = hours || 0;\n\tminutes = minutes || 0;\n\tseconds = seconds || 0;\n\n\treturn days * 24 * 60 * 60 + hours * 60 * 60 + minutes * 60 + seconds;\n};\n\nexport const isoDurationToSeconds = (duration: ISO8601Duration): number => {\n\tconst durationFns = isoDurationToDateFnsDuration(duration);\n\n\treturn dateFnsDurationToSeconds(durationFns);\n};\n\nexport const getHoursPartFromDuration = (duration: ISO8601Duration): number => {\n\treturn Math.floor(isoDurationToSeconds(duration) / 3600);\n};\n\nexport const getMinutesPartFromDuration = (duration: ISO8601Duration): number => {\n\treturn Math.floor((isoDurationToSeconds(duration) % 3600) / 60);\n};\n\nexport const createDurationFromHoursAndMinutes = (hours: number, minutes: number): ISO8601Duration => {\n\treturn `PT${hours}H${minutes}M`;\n};\n","export const roundToNearest = (value: number, step: number) => Math.round(value / step) * step;\n\nexport const floorToNearest = (value: number, step: number) => Math.floor(value / step) * step;\n\nexport const ceilToNearest = (value: number, step: number) => Math.ceil(value / step) * step;\n\n/**\n * Returns the value of n circularized between 0 and max.\n * Given n = 0 and max = 10, returns 0.\n * Given n = 10 and max = 10, returns 10.\n * Given n = 11 and max = 10, returns 1.\n * Given n = -1 and max = 10, returns 9.\n */\nexport const circularize = (n: number, max: number) => {\n\tif (n % max === 0) {\n\t\treturn n === 0 ? 0 : max;\n\t}\n\treturn ((n % max) + max) % max;\n};\n","import { Directive, ElementRef, OnDestroy, OnInit, output } from '@angular/core';\n\nconst INITIAL_INTERVAL = 500;\n\n@Directive({\n\tselector: '[luRepeatOnHold]',\n})\nexport class RepeatOnHoldDirective implements OnDestroy, OnInit {\n\thold = output<void>();\n\n\tonMouseDown = () => {\n\t\tif (this.startTime !== undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.hold.emit();\n\t\tthis.animationFrameId = window.requestAnimationFrame(this.animationFrameHandler);\n\n\t\twindow.removeEventListener('mouseup', this.onWindowMouseUp);\n\t\twindow.addEventListener('mouseup', this.onWindowMouseUp);\n\t};\n\n\tonWindowMouseUp = () => {\n\t\tthis.cancelAnimationFrame();\n\t};\n\n\tconstructor(private elementRef: ElementRef<HTMLElement>) {}\n\n\tngOnInit(): void {\n\t\tthis.elementRef.nativeElement.addEventListener('mousedown', this.onMouseDown);\n\t}\n\n\tinterval = INITIAL_INTERVAL;\n\tstartTime: number | undefined = undefined;\n\tpreviousTime: number | undefined = undefined;\n\tanimationFrameId: number | undefined = undefined;\n\n\tprivate cancelAnimationFrame(): void {\n\t\tif (this.animationFrameId) {\n\t\t\tthis.previousTime = undefined;\n\t\t\tthis.interval = INITIAL_INTERVAL;\n\t\t\tthis.startTime = undefined;\n\t\t\twindow.cancelAnimationFrame(this.animationFrameId);\n\t\t\tthis.animationFrameId = undefined;\n\t\t}\n\t}\n\n\tprivate animationFrameHandler = (time: number): void => {\n\t\tif (this.startTime === undefined) {\n\t\t\tthis.startTime = time;\n\t\t}\n\n\t\tif (this.previousTime === undefined) {\n\t\t\tthis.previousTime = time;\n\t\t}\n\n\t\tif (time - this.previousTime > this.interval) {\n\t\t\tthis.hold.emit();\n\t\t\tthis.previousTime = time;\n\t\t}\n\n\t\tif (time - this.startTime > 1000) {\n\t\t\tthis.interval = 200;\n\t\t}\n\n\t\tif (time - this.startTime > 2000) {\n\t\t\tthis.interval = 50;\n\t\t}\n\n\t\tthis.animationFrameId = window.requestAnimationFrame(this.animationFrameHandler);\n\t};\n\n\tngOnDestroy(): void {\n\t\tthis.elementRef.nativeElement.removeEventListener('mousedown', this.onMouseDown);\n\t\twindow.removeEventListener('mouseup', this.onWindowMouseUp);\n\t\tthis.cancelAnimationFrame();\n\t}\n}\n","import { DecimalPipe, formatNumber } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, Inject, LOCALE_ID, ModelSignal, ViewChild, booleanAttribute, computed, input, model, numberAttribute, output } from '@angular/core';\nimport { InputDirective } from '@lucca-front/ng/form-field';\nimport { PickerControlDirection } from './misc.utils';\nimport { RepeatOnHoldDirective } from './repeat-on-hold.directive';\n\nlet nextId = 0;\n\n@Component({\n\tselector: 'lu-time-picker-part',\n\timports: [RepeatOnHoldDirective, DecimalPipe, InputDirective],\n\ttemplateUrl: './time-picker-part.component.html',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimePickerPartComponent {\n\tlabel = input('');\n\n\tdecimalConf = input('2.0-0');\n\n\tvalue: ModelSignal<number | '––'> = model('––');\n\n\tdisplay = input<number | '––'>();\n\n\tmax = input(0, {\n\t\ttransform: numberAttribute,\n\t});\n\n\tdisplayArrows = input(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\tisReadonly = input(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\thideValue = input(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\tdisabled = input(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\tfocused = input(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\tprevRequest = output<void>();\n\tnextRequest = output<void>();\n\tinputControlClick = output<PickerControlDirection>();\n\ttouched = output<void>();\n\n\t@ViewChild('timePickerInput') timePickerInput?: ElementRef<HTMLInputElement>;\n\n\tvalueLabel = computed(() => {\n\t\tif (this.hideValue()) {\n\t\t\treturn ' ';\n\t\t}\n\t\tif (this.display() !== undefined) {\n\t\t\treturn this.display();\n\t\t}\n\t\tconst value = this.value();\n\t\tif (value === '––') {\n\t\t\treturn value;\n\t\t}\n\t\treturn formatNumber(value, this.locale, this.decimalConf());\n\t});\n\n\tprotected inputId = `time-picker-part-${nextId++}`;\n\n\tconstructor(@Inject(LOCALE_ID) private locale: string) {}\n\n\tarrowKeyPressed(event: KeyboardEvent, isUpArrow: boolean): void {\n\t\tevent.preventDefault();\n\t\tthis.inputControlClick.emit(isUpArrow ? 'up' : 'down');\n\t}\n\n\tkeysInputHandler(event: Event): void {\n\t\tevent.preventDefault();\n\n\t\tif (!(event.target instanceof HTMLInputElement) || !(event instanceof InputEvent)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (event.data && /\\D+/.test(event.data)) {\n\t\t\tevent.target.value = String(this.value());\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = event.target.value;\n\n\t\tlet val = value.slice(-2) || '00';\n\n\t\tif (this.max() && Number(val) * 10 > this.max()) {\n\t\t\tthis.moveRequest(event, 'next');\n\t\t}\n\n\t\tif (this.max() && Number(val) > this.max()) {\n\t\t\tval = value.slice(-1);\n\t\t}\n\n\t\tevent.target.value = val;\n\t\tthis.value.set(Number(val));\n\t}\n\n\tclearField(event: Event): void {\n\t\tif (event instanceof KeyboardEvent) {\n\t\t\tevent.preventDefault();\n\t\t}\n\n\t\tthis.value.set(0);\n\t}\n\n\tclickHandler(event: MouseEvent) {\n\t\tevent.preventDefault();\n\t}\n\n\tup(): void {\n\t\tthis.inputControlClick.emit('up');\n\t}\n\n\tdown(): void {\n\t\tthis.inputControlClick.emit('down');\n\t}\n\n\tkeydownHandler(event: KeyboardEvent): void {\n\t\tswitch (event.key) {\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tthis.moveRequest(event, 'prev');\n\t\t\t\tbreak;\n\t\t\tcase 'H':\n\t\t\tcase 'h':\n\t\t\tcase ':':\n\t\t\tcase 'ArrowRight':\n\t\t\t\tthis.moveRequest(event, 'next');\n\t\t\t\tbreak;\n\t\t\tcase 'Delete':\n\t\t\tcase 'Backspace':\n\t\t\t\tthis.clearField(event);\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\t\tthis.arrowKeyPressed(event, true);\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowDown':\n\t\t\t\tthis.arrowKeyPressed(event, false);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tmoveRequest(event: Event, direction: 'prev' | 'next'): void {\n\t\tevent.preventDefault();\n\n\t\tif (direction === 'prev') {\n\t\t\tthis.prevRequest.emit();\n\t\t} else {\n\t\t\tthis.nextRequest.emit();\n\t\t}\n\t}\n\n\tfocus(): void {\n\t\tif (this.timePickerInput) {\n\t\t\tthis.timePickerInput.nativeElement.focus();\n\t\t}\n\t}\n}\n","<div class=\"timePicker-fieldset-group-textfield\">\n\t<label class=\"formLabel pr-u-mask\" [attr.id]=\"inputId + '-label'\" [attr.for]=\"inputId + '-input'\">{{ label() }}</label>\n\t<div class=\"timePicker-fieldset-group-textfield\">\n\t\t<input\n\t\t\t#timePickerInput\n\t\t\ttype=\"text\"\n\t\t\tluInput\n\t\t\tluInputStandalone\n\t\t\tinputmode=\"numeric\"\n\t\t\t[attr.id]=\"inputId + '-input'\"\n\t\t\tclass=\"timePicker-fieldset-group-textfield-input\"\n\t\t\t[attr.aria-labelledby]=\"inputId + '-label'\"\n\t\t\tautocomplete=\"off\"\n\t\t\t[value]=\"hideValue() ? null : value()\"\n\t\t\t(input)=\"keysInputHandler($event)\"\n\t\t\t(click)=\"clickHandler($event)\"\n\t\t\t(keydown)=\"keydownHandler($event)\"\n\t\t\t(blur)=\"touched.emit()\"\n\t\t\t(focus)=\"timePickerInput.select()\"\n\t\t/>\n\t\t<span aria-hidden=\"true\" class=\"timePicker-fieldset-group-textfield-display\">{{ valueLabel() }}</span>\n\t</div>\n\t@if (displayArrows()) {\n\t\t<button class=\"timePicker-fieldset-group-stepper\" type=\"button\" tabindex=\"-1\" aria-hidden=\"true\" luRepeatOnHold (hold)=\"up()\">\n\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-northArrow\"></span>\n\t\t</button>\n\t\t<button class=\"timePicker-fieldset-group-stepper\" type=\"button\" tabindex=\"-1\" aria-hidden=\"true\" luRepeatOnHold (hold)=\"down()\">\n\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-southArrow\"></span>\n\t\t</button>\n\t}\n</div>\n","import { ISO8601Duration } from '../core/date-primitives';\n\nexport type DurationChangeEvent = {\n\tpreviousValue: ISO8601Duration | null;\n\tvalue: ISO8601Duration;\n} & (\n\t| {\n\t\t\tsource: 'input' | 'paste';\n\t }\n\t| { source: 'control'; part: 'minutes' | 'hours'; direction: 'up' | 'down' }\n);\n\nexport const DEFAULT_TIME_DECIMAL_PIPE_FORMAT = '2.0-0';\n","export const Translations = {\n\tpt: {\n\t\ttimePickerHours: 'horas',\n\t\ttimePickerTimeSeparator: 'h',\n\t\ttimePickerMinutes: 'minutos',\n\t},\n\tes: {\n\t\ttimePickerHours: 'horas',\n\t\ttimePickerTimeSeparator: 'h',\n\t\ttimePickerMinutes: 'minutos',\n\t},\n\t'nl-BE': {\n\t\ttimePickerHours: 'uren',\n\t\ttimePickerTimeSeparator: 'h',\n\t\ttimePickerMinutes: 'minuten',\n\t},\n\tnl: {\n\t\ttimePickerHours: 'uren',\n\t\ttimePickerTimeSeparator: 'h',\n\t\ttimePickerMinutes: 'minuten',\n\t},\n\tit: {\n\t\ttimePickerHours: 'ore',\n\t\ttimePickerTimeSeparator: 'h',\n\t\ttimePickerMinutes: 'minuti',\n\t},\n\tde: {\n\t\ttimePickerHours: 'Stunden',\n\t\ttimePickerTimeSeparator: 'Std.',\n\t\ttimePickerMinutes: 'Minuten',\n\t},\n\tfr: {\n\t\ttimePickerHours: 'heures',\n\t\ttimePickerTimeSeparator: 'h',\n\t\ttimePickerMinutes: 'minutes',\n\t},\n\ten: {\n\t\ttimePickerHours: 'hours',\n\t\ttimePickerTimeSeparator: 'h',\n\t\ttimePickerMinutes: 'minutes',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_DURATION_PICKER_TRANSLATIONS = new InjectionToken('LuDurationPickerTranslations', {\n\tfactory: () => luDurationPickerTranslations,\n});\n\nexport type DurationPickerTranslations = {\n\ttimePickerHours: string;\n\ttimePickerTimeSeparator: string;\n\ttimePickerMinutes: string;\n};\n\nexport const luDurationPickerTranslations: LuTranslation<DurationPickerTranslations> = Translations;\n","import { NgClass } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, computed, forwardRef, input, model, output, ViewEncapsulation } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { getIntl, isNil, isNotNil } from '@lucca-front/ng/core';\nimport { BasePickerComponent } from '../core/base-picker.component';\nimport { ISO8601Duration } from '../core/date-primitives';\nimport { createDurationFromHoursAndMinutes, getHoursPartFromDuration, getMinutesPartFromDuration, isISO8601Duration, isoDurationToDateFnsDuration, isoDurationToSeconds } from '../core/duration.utils';\nimport { ceilToNearest, circularize, floorToNearest, roundToNearest } from '../core/math.utils';\n\nimport { PickerControlDirection } from '../core/misc.utils';\nimport { TimePickerPartComponent } from '../core/time-picker-part.component';\nimport { DEFAULT_TIME_DECIMAL_PIPE_FORMAT, DurationChangeEvent } from './duration-picker.model';\nimport { LU_DURATION_PICKER_TRANSLATIONS } from './duration-picker.translate';\n\n@Component({\n\tselector: 'lu-duration-picker',\n\timports: [TimePickerPartComponent, NgClass],\n\ttemplateUrl: './duration-picker.component.html',\n\tstyleUrl: './duration-picker.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => DurationPickerComponent),\n\t\t\tmulti: true,\n\t\t},\n\t],\n})\nexport class DurationPickerComponent extends BasePickerComponent {\n\tprotected intl = getIntl(LU_DURATION_PICKER_TRANSLATIONS);\n\n\tvalue = model<ISO8601Duration>('PT0S');\n\treadonly max = input<ISO8601Duration>('PT99H');\n\n\treadonly displayArrows = input(false, { transform: booleanAttribute });\n\n\treadonly label = input<string>();\n\n\treadonly hideZeroValue = input(false, { transform: booleanAttribute });\n\n\treadonly durationChange = output<DurationChangeEvent>();\n\n\tprotected readonly hours = computed(() => getHoursPartFromDuration(this.value()));\n\tprotected readonly minutes = computed(() => getMinutesPartFromDuration(this.value()));\n\tprotected readonly shouldHideValue = computed(() => this.hideZeroValue() && this.hours() === 0 && this.minutes() === 0);\n\n\tprotected readonly pickerClasses = computed(() => {\n\t\treturn {\n\t\t\ttimePicker: true,\n\t\t\t'mod-stepper': this.displayArrows(),\n\t\t\t'mod-stepperHover': this.displayArrows(),\n\t\t\t[`mod-${this.size()}`]: Boolean(this.size()),\n\t\t};\n\t});\n\tprotected readonly fieldsetSuffixClasses = computed(() => {\n\t\treturn {\n\t\t\t'timePicker-fieldset-groupSeparator': true,\n\t\t\t'pr-u-visibilityHidden': this.shouldHideValue(),\n\t\t};\n\t});\n\tprotected separator = this.intl.timePickerTimeSeparator;\n\n\tprotected hoursDecimalConf = DEFAULT_TIME_DECIMAL_PIPE_FORMAT;\n\n\twriteValue(value: ISO8601Duration): void {\n\t\tthis.value.set(value || 'PT0S');\n\t}\n\n\tsetDisabledState?(isDisabled: boolean): void {\n\t\tthis.disabled.set(isDisabled);\n\t}\n\n\tprotected hoursInputHandler(value: number | '––'): void {\n\t\tthis.setTime({\n\t\t\tpreviousValue: this.value(),\n\t\t\tvalue: createDurationFromHoursAndMinutes(+value, this.minutes()),\n\t\t\tsource: 'input',\n\t\t});\n\t}\n\n\tprotected minutesInputHandler(value: number | '––'): void {\n\t\tthis.setTime({\n\t\t\tpreviousValue: this.value(),\n\t\t\tvalue: createDurationFromHoursAndMinutes(this.hours(), +value),\n\t\t\tsource: 'input',\n\t\t});\n\t}\n\n\tprotected copyHandler(event: ClipboardEvent): void {\n\t\tevent.preventDefault();\n\t\t// write value to clipboard\n\t\tconst value = this.value();\n\t\tif (isNotNil(value)) {\n\t\t\tevent.clipboardData?.setData('text/plain', value);\n\t\t}\n\t}\n\n\tprotected pasteHandler(event: ClipboardEvent): void {\n\t\tevent.preventDefault();\n\t\tconst pastedValue = event.clipboardData?.getData('text/plain');\n\t\tif (isNotNil(pastedValue)) {\n\t\t\tlet value: ISO8601Duration;\n\t\t\t// If it's an iso duration, handle as-is\n\t\t\tif (isISO8601Duration(pastedValue)) {\n\t\t\t\tvalue = pastedValue;\n\t\t\t}\n\t\t\tif (/\\d?\\dh\\d\\d/.test(pastedValue)) {\n\t\t\t\tconst split = pastedValue.split('h');\n\t\t\t\tvalue = createDurationFromHoursAndMinutes(+split[0], +split[1]);\n\t\t\t}\n\t\t\tif (/\\d?\\d:\\d\\d/.test(pastedValue)) {\n\t\t\t\tconst split = pastedValue.split(':');\n\t\t\t\tvalue = createDurationFromHoursAndMinutes(+split[0], +split[1]);\n\t\t\t}\n\t\t\tif (value) {\n\t\t\t\tthis.durationChange.emit({\n\t\t\t\t\tpreviousValue: this.value(),\n\t\t\t\t\tsource: 'paste',\n\t\t\t\t\tvalue,\n\t\t\t\t});\n\t\t\t\tthis.value.set(value);\n\t\t\t\tthis.onChange?.(value);\n\t\t\t}\n\t\t}\n\t}\n\n\toverride getHoursIncrement(): number {\n\t\tconst step = this.step();\n\t\tif (isNil(step)) {\n\t\t\treturn 1;\n\t\t}\n\n\t\tconst { hours } = isoDurationToDateFnsDuration(step);\n\n\t\tif (hours === 0) {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 24 % hours === 0 ? hours : 1;\n\t}\n\n\toverride getMinutesIncrement(): number | null {\n\t\tconst step = this.step();\n\t\tif (isNil(step)) {\n\t\t\treturn 1;\n\t\t}\n\n\t\tconst { minutes } = isoDurationToDateFnsDuration(step);\n\n\t\tif (minutes === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn 60 % minutes === 0 ? minutes : 1;\n\t}\n\n\tprivate setTime(protoEvent: DurationChangeEvent): void {\n\t\tlet hoursPart = getHoursPartFromDuration(protoEvent.value);\n\t\tconst minutesPart = getMinutesPartFromDuration(protoEvent.value);\n\n\t\tif (hoursPart < 0) {\n\t\t\thoursPart = getHoursPartFromDuration(this.max());\n\t\t\tif (isoDurationToSeconds(createDurationFromHoursAndMinutes(hoursPart, minutesPart)) > isoDurationToSeconds(this.max())) {\n\t\t\t\t// If current value with minutes is > max, decrement hours again\n\t\t\t\thoursPart--;\n\t\t\t}\n\t\t} else if (hoursPart > getHoursPartFromDuration(this.max())) {\n\t\t\thoursPart = 0;\n\t\t}\n\n\t\tconst max = isoDurationToSeconds(this.max());\n\n\t\tconst candidateTimeAsSeconds = hoursPart * 3600 + minutesPart * 60;\n\n\t\tconst seconds = roundToNearest(circularize(candidateTimeAsSeconds, max), 60);\n\n\t\tconst hours = Math.floor(seconds / 3600);\n\t\tconst minutes = Math.floor((seconds % 3600) / 60);\n\n\t\tconst result = createDurationFromHoursAndMinutes(hours, minutes);\n\n\t\tthis.value.set(result);\n\t\tthis.onChange?.(result);\n\t\tthis.durationChange.emit({\n\t\t\t...protoEvent,\n\t\t\tvalue: result,\n\t\t});\n\t}\n\n\tprotected inputControlClickHandler(part: 'hours' | 'minutes', direction: PickerControlDirection): void {\n\t\tconst val = this.value() ?? 'PT0S';\n\t\tconst hoursPart = getHoursPartFromDuration(val);\n\t\tconst minutesPart = getMinutesPartFromDuration(val);\n\n\t\tconst selectedPart = part === 'hours' ? hoursPart : minutesPart;\n\t\tconst selectedIncrement = part === 'hours' ? this.hoursIncrement() : this.minutesIncrement();\n\t\tlet modifiedVal: number;\n\n\t\tif (selectedIncrement === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (direction === 'up') {\n\t\t\tmodifiedVal = floorToNearest(selectedPart + selectedIncrement, selectedIncrement);\n\t\t} else {\n\t\t\tmodifiedVal = ceilToNearest(selectedPart - selectedIncrement, selectedIncrement);\n\t\t}\n\n\t\tconst newTime = part === 'hours' ? createDurationFromHoursAndMinutes(modifiedVal, minutesPart) : createDurationFromHoursAndMinutes(hoursPart, modifiedVal);\n\n\t\tthis.setTime({\n\t\t\tsource: 'control',\n\t\t\tpreviousValue: this.value(),\n\t\t\tvalue: newTime,\n\t\t\tpart,\n\t\t\tdirection,\n\t\t});\n\t}\n\n\tpublic focus() {\n\t\tif (isNotNil(this.hoursPart)) {\n\t\t\tthis.focusPart('hours');\n\t\t}\n\t}\n}\n","<div [class]=\"pickerClasses()\" (copy)=\"copyHandler($event)\" (paste)=\"pasteHandler($event)\">\n\t<fieldset class=\"timePicker-fieldset\" [disabled]=\"disabled()\">\n\t\t<legend>\n\t\t\t<span class=\"pr-u-mask\">{{ label() }}</span>\n\t\t</legend>\n\t\t<lu-time-picker-part\n\t\t\t#hoursPart\n\t\t\tclass=\"timePicker-fieldset-group\"\n\t\t\t[disabled]=\"disabled()\"\n\t\t\t[label]=\"intl.timePickerHours\"\n\t\t\t[value]=\"hours()\"\n\t\t\t[decimalConf]=\"hoursDecimalConf\"\n\t\t\t[hideValue]=\"shouldHideValue()\"\n\t\t\t[displayArrows]=\"displayArrows()\"\n\t\t\t(valueChange)=\"hoursInputHandler($event)\"\n\t\t\t(nextRequest)=\"focusPart('minutes')\"\n\t\t\t(inputControlClick)=\"inputControlClickHandler('hours', $event)\"\n\t\t/>\n\t\t<div aria-hidden=\"true\" [class]=\"fieldsetSuffixClasses()\">{{ separator }}</div>\n\t\t<lu-time-picker-part\n\t\t\t#minutesPart\n\t\t\tclass=\"timePicker-fieldset-group\"\n\t\t\t[label]=\"intl.timePickerMinutes\"\n\t\t\t[value]=\"minutes()\"\n\t\t\t[max]=\"59\"\n\t\t\t[hideValue]=\"shouldHideValue()\"\n\t\t\t[displayArrows]=\"displayArrows()\"\n\t\t\t[disabled]=\"disabled() || !minutesIncrement()\"\n\t\t\t(valueChange)=\"minutesInputHandler($event)\"\n\t\t\t(prevRequest)=\"focusPart('hours')\"\n\t\t\t(inputControlClick)=\"inputControlClickHandler('minutes', $event)\"\n\t\t/>\n\t</fieldset>\n</div>\n","import { ISO8601Time } from './date-primitives';\n\nexport const castToIsoTime = (str: string) => str as ISO8601Time;\n\nexport const convertStringToIsoTime = (time: string): ISO8601Time => {\n\tif (/^\\d{1,2}:\\d{2}:\\d{2}$/.test(time)) {\n\t\treturn castToIsoTime(time);\n\t}\n\n\tif (/^\\d{1,2}:\\d{2}$/.test(time)) {\n\t\treturn castToIsoTime(`${time}:00`);\n\t}\n\n\tif (/^\\d{1,2}h\\d{2}$/.test(time)) {\n\t\treturn convertStringToIsoTime(time.replace('h', ':'));\n\t}\n\n\tthrow new Error(`Invalid time format: ${time}`);\n};\n\nexport const createIsoTimeFromHoursAndMinutes = (hours: number, minutes: number, seconds: number = 0): ISO8601Time => {\n\tconst hoursStr = hours.toString().padStart(2, '0');\n\tconst minutesStr = minutes.toString().padStart(2, '0');\n\tconst secondsStr = seconds.toString().padStart(2, '0');\n\n\treturn `${hoursStr}:${minutesStr}:${secondsStr}`;\n};\n\nexport const isoTimeToSeconds = (time: ISO8601Time): number => {\n\treturn getHoursPartFromIsoTime(time) * 3600 + getMinutesPartFromIsoTime(time) * 60 + getSecondsPartFromIsoTime(time);\n};\n\nexport const getHoursPartFromIsoTime = (time: ISO8601Time): number => Number(time.split(':')[0]) || 0;\n\nexport const getMinutesPartFromIsoTime = (time: ISO8601Time): number => Number(time.split(':')[1]) || 0;\nexport const getSecondsPartFromIsoTime = (time: ISO8601Time): number => Number(time.split(':')[2]) || 0;\n\nexport const getHoursDisplayPartFromIsoTime = (time: ISO8601Time, ampm = false): number | '––' => {\n\tconst hours = time.split(':')[0];\n\tif (hours === '––') {\n\t\treturn hours;\n\t}\n\tif (ampm) {\n\t\t// Most consistent impl is to create a date and ask date-fns\n\t\treturn formatAMPM(Number(hours)).hours;\n\t}\n\treturn Number(hours);\n};\n\nexport const formatAMPM = (inputHours: number): { hours: number; suffix: 'AM' | 'PM' } => {\n\tlet hours = inputHours;\n\tconst suffix = hours >= 12 ? 'PM' : 'AM';\n\thours = hours % 12;\n\thours = hours ? hours : 12; // 0 should be 12\n\treturn {\n\t\thours,\n\t\tsuffix,\n\t};\n};\n\nexport const getMinutesDisplayPartFromIsoTime = (time: ISO8601Time): number | '––' => {\n\tconst minutes = time.split(':')[1];\n\tif (minutes === '––') {\n\t\treturn minutes;\n\t}\n\treturn Number(minutes);\n};\n","import { ISO8601Time } from '../core/date-primitives';\n\nexport type TimeChangeEvent = {\n\tpreviousValue: ISO8601Time | null;\n\tvalue: ISO8601Time;\n} & (\n\t| {\n\t\t\tsource: 'input' | 'paste';\n\t }\n\t| { source: 'control'; part: 'minutes' | 'hours'; direction: 'up' | 'down' }\n);\nexport const DEFAULT_MIN_TIME: ISO8601Time = '--:--:--';\n\nexport const DEFAULT_TIME_DECIMAL_PIPE_FORMAT = '2.0-0';\n","export const Translations = {\n\tpt: {\n\t\ttimePickerHours: 'horas',\n\t\ttimePickerTimeSeparator: ':',\n\t\ttimePickerMinutes: 'minutos',\n\t},\n\tes: {\n\t\ttimePickerHours: 'horas',\n\t\ttimePickerTimeSeparator: ':',\n\t\ttimePickerMinutes: 'minutos',\n\t},\n\t'nl-BE': {\n\t\ttimePickerHours: 'uren',\n\t\ttimePickerTimeSeparator: ':',\n\t\ttimePickerMinutes: 'minuten',\n\t},\n\tnl: {\n\t\ttimePickerHours: 'uren',\n\t\ttimePickerTimeSeparator: ':',\n\t\ttimePickerMinutes: 'minuten',\n\t},\n\tit: {\n\t\ttimePickerHours: 'ore',\n\t\ttimePickerTimeSeparator: ':',\n\t\ttimePickerMinutes: 'minuti',\n\t},\n\tde: {\n\t\ttimePickerHours: 'Stunden',\n\t\ttimePickerTimeSeparator: ':',\n\t\ttimePickerMinutes: 'Minuten',\n\t},\n\tfr: {\n\t\ttimePickerHours: 'heures',\n\t\ttimePickerTimeSeparator: ':',\n\t\ttimePickerMinutes: 'minutes',\n\t},\n\ten: {\n\t\ttimePickerHours: 'hours',\n\t\ttimePickerTimeSeparator: ':',\n\t\ttimePickerMinutes: 'minutes',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_TIME_PICKER_TRANSLATIONS = new InjectionToken('LuTimePickerTranslations', {\n\tfactory: () => luTimePickerTranslations,\n});\n\nexport type TimePickerTranslations = {\n\ttimePickerHours: string;\n\ttimePickerTimeSeparator: string;\n\ttimePickerMinutes: string;\n};\n\nexport const luTimePickerTranslations: LuTranslation<TimePickerTranslations> = Translations;\n","import { NgClass } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, computed, ElementRef, forwardRef, inject, input, LOCALE_ID, model, output, viewChild, ViewEncapsulation } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { getIntl, isNil, isNotNil } from '@lucca-front/ng/core';\nimport { BasePickerComponent } from '../core/base-picker.component';\nimport { ISO8601Time } from '../core/date-primitives';\nimport {\n\tconvertStringToIsoTime,\n\tcreateIsoTimeFromHoursAndMinutes,\n\tformatAMPM,\n\tgetHoursDisplayPartFromIsoTime,\n\tgetHoursPartFromIsoTime,\n\tgetMinutesDisplayPartFromIsoTime,\n\tgetMinutesPartFromIsoTime,\n\tisoTimeToSeconds,\n} from '../core/date.utils';\nimport { isoDurationToDateFnsDuration } from '../core/duration.utils';\nimport { ceilToNearest, circularize, floorToNearest, roundToNearest } from '../core/math.utils';\nimport { PickerControlDirection } from '../core/misc.utils';\nimport { RepeatOnHoldDirective } from '../core/repeat-on-hold.directive';\nimport { TimePickerPartComponent } from '../core/time-picker-part.component';\nimport { DEFAULT_MIN_TIME, DEFAULT_TIME_DECIMAL_PIPE_FORMAT, TimeChangeEvent } from './time-picker.model';\nimport { LU_TIME_PICKER_TRANSLATIONS } from './time-picker.translate';\n\nconst MAX_TIME = '23:59:59';\nlet nextId = 0;\n\n@Component({\n\tselector: 'lu-time-picker',\n\timports: [TimePickerPartComponent, NgClass, FormsModule, RepeatOnHoldDirective],\n\ttemplateUrl: './time-picker.component.html',\n\tstyleUrl: './time-picker.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => TimePickerComponent),\n\t\t\tmulti: true,\n\t\t},\n\t],\n})\nexport class TimePickerComponent extends BasePickerComponent {\n\tprotected intl = getIntl(LU_TIME_PICKER_TRANSLATIONS);\n\tprotected localeId = inject(LOCALE_ID);\n\n\treadonly idSuffix = nextId++;\n\n\treadonly anteMeridiemRef = viewChild<ElementRef<HTMLInputElement>>('anteMeridiemRef');\n\n\treadonly postMeridiemRef = viewChild<ElementRef<HTMLInputElement>>('postMeridiemRef');\n\n\tvalue = model<ISO8601Time>('--:--:--');\n\treadonly max = input<ISO8601Time>(MAX_TIME);\n\n\treadonly displayArrows = input(false, { transform: booleanAttribute });\n\n\treadonly forceMeridiemDisplay = input<boolean | null>(null);\n\n\treadonly enableMeridiemDisplay = computed(() => {\n\t\tif (this.forceMeridiemDisplay() !== null) {\n\t\t\treturn this.forceMeridiemDisplay();\n\t\t}\n\t\t// We can't ask the API if time should include meridiem so the easiest was to just make it format a static date.\n\t\treturn Intl.DateTimeFormat(this.localeId, {\n\t\t\ttimeStyle: 'short',\n\t\t\tdateStyle: 'short',\n\t\t})\n\t\t\t.format(new Date('1/1/1 17:00:00'))\n\t\t\t.includes('PM');\n\t});\n\n\treadonly label = input<string>();\n\n\treadonly timeChange = output<TimeChangeEvent>();\n\n\tprotected readonly hoursDisplay = computed(() => getHoursDisplayPartFromIsoTime(this.value(), this.enableMeridiemDisplay()));\n\tprotected readonly minutesDisplay = computed(() => getMinutesDisplayPartFromIsoTime(this.value()));\n\n\tprotected readonly hours = computed(() => getHoursPartFromIsoTime(this.value()));\n\tprotected readonly minutes = computed(() => getMinutesPartFromIsoTime(this.value()));\n\tprotected readonly pickerClasses = computed(() => {\n\t\treturn {\n\t\t\ttimePicker: true,\n\t\t\t'mod-stepper': this.displayArrows(),\n\t\t\t'mod-stepperHover': this.displayArrows(),\n\t\t\t[`mod-${this.size()}`]: Boolean(this.size()),\n\t\t};\n\t});\n\tprotected separator = this.intl.timePickerTimeSeparator;\n\n\tprotected hoursDecimalConf = DEFAULT_TIME_DECIMAL_PIPE_FORMAT;\n\n\tprotected readonly maxHours = computed(() => {\n\t\tif (this.enableMeridiemDisplay()) {\n\t\t\treturn 12;\n\t\t}\n\t\treturn getHoursPartFromIsoTime(this.max() ?? '23:59:59');\n\t});\n\n\tprotected readonly ampmDisplay = computed(() => {\n\t\treturn formatAMPM(this.hours()).suffix;\n\t});\n\n\tprotected override focusPart(type: 'hours' | 'minutes' | 'meridiem') {\n\t\tif (type === 'meridiem') {\n\t\t\tconst elementToFocus = this.ampmDisplay() === 'AM' ? this.anteMeridiemRef()?.nativeElement : this.postMeridiemRef()?.nativeElement;\n\t\t\telementToFocus?.focus();\n\t\t} else {\n\t\t\tsuper.focusPart(type);\n\t\t}\n\t}\n\n\twriteValue(value: ISO8601Time): void {\n\t\tthis.value.set(value || '––:––:––');\n\t}\n\n\tsetDisabledState?(isDisabled: boolean): void {\n\t\tthis.disabled.set(isDisabled);\n\t}\n\n\tprotected hoursInputHandler(value: number | '––'): void {\n\t\tthis.setTime({\n\t\t\tpreviousValue: this.value(),\n\t\t\t// Mostly for compiler because we never set the time to –– with input handler\n\t\t\tvalue: createIsoTimeFromHoursAndMinutes(+value, this.minutes()),\n\t\t\tsource: 'input',\n\t\t});\n\t}\n\n\tprotected minutesInputHandler(value: number | '––'): void {\n\t\tthis.setTime({\n\t\t\tpreviousValue: this.value(),\n\t\t\t// Mostly for compiler because we never set the time to –– with input handler\n\t\t\tvalue: createIsoTimeFromHoursAndMinutes(this.hours(), +value),\n\t\t\tsource: 'input',\n\t\t});\n\t}\n\n\tprotected copyHandler(event: ClipboardEvent): void {\n\t\tevent.preventDefault();\n\t\t// write value to clipboard\n\t\tconst value = this.value();\n\t\tif (isNotNil(value)) {\n\t\t\tevent.clipboardData?.setData('text/plain', value);\n\t\t}\n\t}\n\n\tprotected pasteHandler(event: ClipboardEvent): void {\n\t\tevent.preventDefault();\n\t\tconst pastedValue = event.clipboardData?.getData('text/plain');\n\t\tif (isNotNil(pastedValue)) {\n\t\t\ttry {\n\t\t\t\tconst value = convertStringToIsoTime(pastedValue);\n\t\t\t\tthis.timeChange.emit({\n\t\t\t\t\tpreviousValue: this.value(),\n\t\t\t\t\tsource: 'paste',\n\t\t\t\t\tvalue,\n\t\t\t\t});\n\t\t\t\tthis.value.set(value);\n\t\t\t\tthis.onChange?.(value);\n\t\t\t} catch {\n\t\t\t\t// do nothing\n\t\t\t}\n\t\t}\n\t}\n\n\toverride getHoursIncrement(): number {\n\t\tconst step = this.step();\n\t\tif (isNil(step)) {\n\t\t\treturn 1;\n\t\t}\n\n\t\tconst { hours } = isoDurationToDateFnsDuration(step);\n\n\t\tif (hours === 0) {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 24 % hours === 0 ? hours : 1;\n\t}\n\n\toverride getMinutesIncrement(): number | null {\n\t\tconst step = this.step();\n\t\tif (isNil(step)) {\n\t\t\treturn 1;\n\t\t}\n\n\t\tconst { minutes } = isoDurationToDateFnsDuration(step);\n\n\t\tif (minutes === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn 60 % minutes === 0 ? minutes : 1;\n\t}\n\n\tprivate setTime(protoEvent: TimeChangeEvent): void {\n\t\tconst hoursPart = getHoursPartFromIsoTime(protoEvent.value);\n\t\tconst minutesPart = getMinutesPartFromIsoTime(protoEvent.value);\n\n\t\tconst max = isoTimeToSeconds(this.max());\n\n\t\tconst candidateTimeAsSeconds = hoursPart * 3600 + minutesPart * 60;\n\n\t\tconst seconds = roundToNearest(circularize(candidateTimeAsSeconds, max), 60);\n\n\t\tconst hours = Math.floor(seconds / 3600);\n\t\tconst minutes = Math.floor((seconds % 3600) / 60);\n\n\t\tconst result = createIsoTimeFromHoursAndMinutes(hours, minutes);\n\n\t\tthis.value.set(result);\n\t\tthis.onChange?.(result);\n\t\tthis.timeChange.emit({\n\t\t\t...protoEvent,\n\t\t\tvalue: result,\n\t\t});\n\t}\n\n\tprotected inputControlClickHandler(part: 'hours' | 'minutes', direction: PickerControlDirection): void {\n\t\tconst val = this.value() ?? DEFAULT_MIN_TIME;\n\t\tconst hoursPart = getHoursPartFromIsoTime(val);\n\t\tconst minutesPart = getMinutesPartFromIsoTime(val);\n\n\t\tconst selectedPart = part === 'hours' ? hoursPart : minutesPart;\n\t\tconst selectedIncrement = part === 'hours' ? this.hoursIncrement() : this.minutesIncrement();\n\t\tlet modifiedVal: number;\n\n\t\tif (selectedIncrement === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (direction === 'up') {\n\t\t\tmodifiedVal = floorToNearest(selectedPart + selectedIncrement, selectedIncrement);\n\t\t} else {\n\t\t\tmodifiedVal = ceilToNearest(selectedPart - selectedIncrement, selectedIncrement);\n\t\t}\n\n\t\tconst newTime = part === 'hours' ? createIsoTimeFromHoursAndMinutes(modifiedVal, minutesPart) : createIsoTimeFromHoursAndMinutes(hoursPart, modifiedVal);\n\n\t\tthis.setTime({\n\t\t\tsource: 'control',\n\t\t\tpreviousValue: this.value(),\n\t\t\tvalue: newTime,\n\t\t\tpart,\n\t\t\tdirection,\n\t\t});\n\t}\n\n\tpublic focus() {\n\t\tif (isNotNil(this.hoursPart)) {\n\t\t\tthis.focusPart('hours');\n\t\t}\n\t}\n\n\tswitchMeridiem(newValue: 'AM' | 'PM') {\n\t\tlet hours = getHoursPartFromIsoTime(this.value());\n\t\tconst minutes = getMinutesPartFromIsoTime(this.value());\n\t\tif (newValue === 'PM') {\n\t\t\thours = circularize(hours + 12, 23);\n\t\t} else {\n\t\t\thours = circularize(hours - 12, 23);\n\t\t}\n\t\tthis.setTime({\n\t\t\tsource: 'input',\n\t\t\tpreviousValue: this.value(),\n\t\t\tvalue: createIsoTimeFromHoursAndMinutes(hours, minutes),\n\t\t});\n\t}\n}\n","<div [class]=\"pickerClasses()\" (copy)=\"copyHandler($event)\" (paste)=\"pasteHandler($event)\">\n\t<fieldset class=\"timePicker-fieldset\" [disabled]=\"disabled()\">\n\t\t<legend>\n\t\t\t<span class=\"pr-u-mask\">{{ label() }}</span>\n\t\t</legend>\n\t\t<lu-time-picker-part\n\t\t\t#hoursPart\n\t\t\tclass=\"timePicker-fieldset-group\"\n\t\t\t[disabled]=\"disabled()\"\n\t\t\t[label]=\"intl.timePickerHours\"\n\t\t\t[value]=\"hours()\"\n\t\t\t[display]=\"hoursDisplay()\"\n\t\t\t[max]=\"maxHours()\"\n\t\t\t[decimalConf]=\"hoursDecimalConf\"\n\t\t\t[displayArrows]=\"displayArrows()\"\n\t\t\t(touched)=\"onTouched?.()\"\n\t\t\t(valueChange)=\"hoursInputHandler($event)\"\n\t\t\t(nextRequest)=\"focusPart('minutes')\"\n\t\t\t(inputControlClick)=\"inputControlClickHandler('hours', $event)\"\n\t\t/>\n\t\t<div aria-hidden=\"true\" class=\"timePicker-fieldset-groupSeparator\">{{ separator }}</div>\n\t\t<lu-time-picker-part\n\t\t\t#minutesPart\n\t\t\tclass=\"timePicker-fieldset-group\"\n\t\t\t[label]=\"intl.timePickerMinutes\"\n\t\t\t[value]=\"minutesDisplay()\"\n\t\t\t[max]=\"59\"\n\t\t\t[displayArrows]=\"displayArrows()\"\n\t\t\t(touched)=\"onTouched?.()\"\n\t\t\t[disabled]=\"disabled() || !minutesIncrement()\"\n\t\t\t(valueChange)=\"minutesInputHandler($event)\"\n\t\t\t(prevRequest)=\"focusPart('hours')\"\n\t\t\t(nextRequest)=\"focusPart('meridiem')\"\n\t\t\t(inputControlClick)=\"inputControlClickHandler('minutes', $event)\"\n\t\t/>\n\t\t@if (enableMeridiemDisplay()) {\n\t\t\t<div\n\t\t\t\tclass=\"timePicker-fieldset-meridiem\"\n\t\t\t\t(copy)=\"copyHandler($event)\"\n\t\t\t\t(paste)=\"pasteHandler($event)\"\n\t\t\t\t(keydown.A)=\"anteMeridiemRef.click()\"\n\t\t\t\t(keydown.P)=\"postMeridiemRef.click()\"\n\t\t\t\t(keydown.shift.A)=\"anteMeridiemRef.click()\"\n\t\t\t\t(keydown.shift.P)=\"postMeridiemRef.click()\"\n\t\t\t\t(click)=\"ampmDisplay() === 'AM' ? anteMeridiemRef.focus() : postMeridiemRef.focus()\"\n\t\t\t>\n\t\t\t\t<div class=\"timePicker-fieldset-meridiem-ante\">\n\t\t\t\t\t<label [attr.for]=\"'anteMeridiem-' + idSuffix\">AM</label>\n\t\t\t\t\t<input\n\t\t\t\t\t\t#anteMeridiemRef\n\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\t[attr.name]=\"'meridiem-' + idSuffix\"\n\t\t\t\t\t\t[name]=\"'meridiem-' + idSuffix\"\n\t\t\t\t\t\t[attr.id]=\"'anteMeridiem-' + idSuffix\"\n\t\t\t\t\t\tclass=\"timePicker-fieldset-meridiem-ante-input\"\n\t\t\t\t\t\tvalue=\"AM\"\n\t\t\t\t\t\t[ngModel]=\"ampmDisplay()\"\n\t\t\t\t\t\t(ngModelChange)=\"switchMeridiem($event)\"\n\t\t\t\t\t\t(click)=\"$event.stopPropagation()\"\n\t\t\t\t\t\t(keydown.arrowleft)=\"$event.preventDefault(); focusPart('minutes')\"\n\t\t\t\t\t\t(keydown.arrowright)=\"$event.preventDefault()\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"timePicker-fieldset-meridiem-post\">\n\t\t\t\t\t<label [attr.for]=\"'postMeridiem-' + idSuffix\">PM</label>\n\t\t\t\t\t<input\n\t\t\t\t\t\t#postMeridiemRef\n\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\t[attr.name]=\"'meridiem-' + idSuffix\"\n\t\t\t\t\t\t[name]=\"'meridiem-' + idSuffix\"\n\t\t\t\t\t\t[attr.id]=\"'postMeridiem-' + idSuffix\"\n\t\t\t\t\t\tclass=\"timePicker-fieldset-meridiem-post-input\"\n\t\t\t\t\t\tvalue=\"PM\"\n\t\t\t\t\t\t[ngModel]=\"ampmDisplay()\"\n\t\t\t\t\t\t(ngModelChange)=\"switchMeridiem($event)\"\n\t\t\t\t\t\t(click)=\"$event.stopPropagation()\"\n\t\t\t\t\t\t(keydown.arrowleft)=\"$event.preventDefault(); focusPart('minutes')\"\n\t\t\t\t\t\t(keydown.arrowright)=\"$event.preventDefault()\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t@if (displayArrows()) {\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"timePicker-fieldset-group-stepper\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t(click)=\"switchMeridiem(ampmDisplay() === 'AM' ? 'PM' : 'AM')\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-northArrow\"></span>\n\t\t\t\t\t</button>\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"timePicker-fieldset-group-stepper\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t(click)=\"switchMeridiem(ampmDisplay() === 'AM' ? 'PM' : 'AM')\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-southArrow\"></span>\n\t\t\t\t\t</button>\n\t\t\t\t}\n\t\t\t</div>\n\t\t}\n\t</fieldset>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextId","DEFAULT_TIME_DECIMAL_PIPE_FORMAT","Translations"],"mappings":"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"}
@@ -1,41 +1,8 @@
1
1
  import { AsyncPipe } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { InjectionToken, Injectable, Input, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
4
- import { getIntl, PortalDirective } from '@lucca-front/ng/core';
5
- import { BehaviorSubject, merge, Subject } from 'rxjs';
6
- import { takeUntil } from 'rxjs/operators';
7
-
8
- const Translations = {
9
- pt: {
10
- close: 'Fechar',
11
- },
12
- 'nl-BE': {
13
- close: 'Sluiten',
14
- },
15
- nl: {
16
- close: 'Sluiten',
17
- },
18
- it: {
19
- close: 'Chiudere',
20
- },
21
- de: {
22
- close: 'Schließen',
23
- },
24
- fr: {
25
- close: 'Fermer',
26
- },
27
- es: {
28
- close: 'Cerrar',
29
- },
30
- en: {
31
- close: 'Close',
32
- },
33
- };
34
-
35
- const LU_TOAST_TRANSLATIONS = new InjectionToken('LuToastTranslations', {
36
- factory: () => luToastTranslations,
37
- });
38
- const luToastTranslations = Translations;
3
+ import { Injectable, InjectionToken, inject, input, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
4
+ import { getIntl, ɵeffectWithDeps as _effectWithDeps, isNotNil, PortalDirective } from '@lucca-front/ng/core';
5
+ import { BehaviorSubject, merge } from 'rxjs';
39
6
 
40
7
  const defaultToastDuration = 5000;
41
8
 
@@ -72,17 +39,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.2", ngImpor
72
39
  args: [{ providedIn: 'root' }]
73
40
  }] });
74
41
 
42
+ const Translations = {
43
+ pt: {
44
+ close: 'Fechar',
45
+ },
46
+ 'nl-BE': {
47
+ close: 'Sluiten',
48
+ },
49
+ nl: {
50
+ close: 'Sluiten',
51
+ },
52
+ it: {
53
+ close: 'Chiudere',
54
+ },
55
+ de: {
56
+ close: 'Schließen',
57
+ },
58
+ fr: {
59
+ close: 'Fermer',
60
+ },
61
+ es: {
62
+ close: 'Cerrar',
63
+ },
64
+ en: {
65
+ close: 'Close',
66
+ },
67
+ };
68
+
69
+ const LU_TOAST_TRANSLATIONS = new InjectionToken('LuToastTranslations', {
70
+ factory: () => luToastTranslations,
71
+ });
72
+ const luToastTranslations = Translations;
73
+
75
74
  class LuToastsComponent {
76
- set sources(sources) {
77
- merge(...sources)
78
- .pipe(takeUntil(this.destroy$))
79
- .subscribe((toast) => this.toastsService.addToast(toast));
80
- }
81
- constructor(toastsService) {
82
- this.toastsService = toastsService;
83
- this.bottom = false;
84
- this.toasts$ = this.toastsService.toasts$;
85
- this.destroy$ = new Subject();
75
+ #toastsService;
76
+ constructor() {
77
+ this.#toastsService = inject(LuToastsService);
78
+ this.bottom = input(false);
79
+ this.sources = input();
80
+ this.toasts$ = this.#toastsService.toasts$;
86
81
  this.intl = getIntl(LU_TOAST_TRANSLATIONS);
87
82
  this.iconClassByToastType = {
88
83
  Info: 'icon-signInfo',
@@ -96,31 +91,31 @@ class LuToastsComponent {
96
91
  Error: 'palette-error',
97
92
  Warning: 'palette-warning',
98
93
  };
99
- }
100
- ngOnDestroy() {
101
- this.destroy$.next();
102
- this.destroy$.complete();
94
+ _effectWithDeps([this.sources], (sources, onCleanup) => {
95
+ if (isNotNil(sources)) {
96
+ const sub = merge(...sources).subscribe((toast) => this.#toastsService.addToast(toast));
97
+ onCleanup(() => {
98
+ sub.unsubscribe();
99
+ });
100
+ }
101
+ });
103
102
  }
104
103
  isStringPortalContent(message) {
105
104
  return typeof message === 'string';
106
105
  }
107
106
  removeToast(toast) {
108
- this.toastsService.removeToast(toast);
107
+ this.#toastsService.removeToast(toast);
109
108
  }
110
109
  isOnlyDismissibleManually(toast) {
111
- return this.toastsService.isOnlyDismissibleManually(toast);
110
+ return this.#toastsService.isOnlyDismissibleManually(toast);
112
111
  }
113
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: LuToastsComponent, deps: [{ token: LuToastsService }], target: i0.ɵɵFactoryTarget.Component }); }
114
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.2", type: LuToastsComponent, isStandalone: true, selector: "lu-toasts", inputs: { bottom: "bottom", sources: "sources" }, ngImport: i0, template: "<div class=\"toasts\" aria-live=\"polite\" [class.mod-bottom]=\"bottom\">\n\t@for (toast of toasts$ | async; track toast.id) {\n\t\t<div class=\"toasts-item\" [class]=\"paletteClassByToastType[toast.type]\">\n\t\t\t@if (toast.type) {\n\t\t\t\t<span class=\"toast-item-icon lucca-icon\" aria-hidden=\"true\" [class]=\"iconClassByToastType[toast.type]\"></span>\n\t\t\t}\n\t\t\t<div class=\"toast-item-content\">\n\t\t\t\t@if (toast.title) {\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<strong>{{ toast.title }}</strong>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t@if (isStringPortalContent(toast.message)) {\n\t\t\t\t\t<p class=\"toast-item-content-description\" [innerHtml]=\"toast.message\"></p>\n\t\t\t\t} @else {\n\t\t\t\t\t<ng-container *luPortal=\"toast.message\" />\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclass=\"toasts-item-kill button\"\n\t\t\t\t(click)=\"removeToast(toast)\"\n\t\t\t\t(animationend)=\"!isOnlyDismissibleManually(toast) && toast.duration > 0 ? removeToast(toast) : null\"\n\t\t\t\t[style.animation-duration]=\"!isOnlyDismissibleManually(toast) && toast.duration > 0 ? toast.duration + 'ms' : null\"\n\t\t\t>\n\t\t\t\t<span class=\"lucca-icon icon-signClose\" aria-hidden=\"true\"></span>\n\t\t\t\t<span class=\"pr-u-mask\">{{ intl.close }}</span>\n\t\t\t</button>\n\t\t</div>\n\t}\n</div>\n", styles: ["@layer components{.toasts{--components-toasts-color: var(--pr-t-color-text-reverse);--components-toasts-top: var(--pr-t-spacings-300);--components-toasts-right: var(--pr-t-spacings-300);--components-toasts-left: var(--pr-t-spacings-300);--components-toasts-bottom: var(--pr-t-spacings-300);--components-toasts-margin-bottom: var(--pr-t-spacings-50);--components-toasts-maxwidth: 22.5rem;--components-toasts-inset: var(--components-toasts-top) var(--components-toasts-right) auto auto;--components-toasts-footerHeight: 4.5rem;--components-toasts-background: var(--palettes-neutral-800);--components-toasts-padding: var(--pr-t-spacings-100) var(--pr-t-spacings-200);max-inline-size:var(--components-toasts-maxwidth);display:flex;flex-direction:column;align-items:flex-end;position:fixed;z-index:9999;inset:var(--components-toasts-inset)}html:has(.main-content .footer.mod-sticky,.dialog.mod-drawer .dialog-inside-footer) .toasts{--components-toasts-bottom: calc(var(--components-toasts-footerHeight) + var(--pr-t-spacings-300))}.toasts-item{display:flex;gap:var(--pr-t-spacings-50);color:var(--components-toasts-color);padding:var(--pr-t-spacings-50);margin-block-end:var(--components-toasts-margin-bottom);background-color:var(--palettes-neutral-800);animation-name:toastsItem;animation-duration:var(--commons-animations-durations-standard);animation-iteration-count:1;border-radius:var(--pr-t-border-radius-structure);overflow:hidden;position:relative;transform-origin:top}@keyframes toastsItem{0%{transform:translateY(var(--pr-t-spacings-200));opacity:0}to{opacity:1}}.toasts-item:hover .toasts-item-kill,.toasts-item:focus-within .toasts-item-kill{animation-play-state:paused}.toast-item-icon{background:var(--palettes-700, var(--palettes-product-700));border-radius:var(--pr-t-border-radius-default);padding-block:var(--pr-t-spacings-100);padding-inline:var(--pr-t-spacings-50)}.toast-item-content{display:flex;flex-grow:1;flex-direction:column;gap:var(--pr-t-spacings-50);padding-block:var(--pr-t-spacings-100);padding-inline:var(--pr-t-spacings-100) 0}.toast-item-content-description{margin:0}.toasts-item-kill.button,.toasts-item-kill:not(.button){align-self:flex-start;border-radius:var(--pr-t-border-radius-default);animation-name:timer;--components-button-padding: var(--pr-t-spacings-100);--components-button-backgroundColor: transparent;--components-button-color: var(--palettes-700, var(--pr-t-color-text-subtle));--components-button-boxShadow: none;--components-button-color: var(--palettes-neutral-0)}.toasts-item-kill.button:hover,.toasts-item-kill.button:focus-visible,.toasts-item-kill:not(.button):hover,.toasts-item-kill:not(.button):focus-visible{--components-button-color: var(--palettes-700, var(--pr-t-color-text-subtle));--components-button-backgroundColor: var(--palettes-50, var(--palettes-neutral-50))}.toasts-item-kill.button:active,.toasts-item-kill:not(.button):active{--components-button-backgroundColor: var(--palettes-100, var(--palettes-neutral-100))}.toasts-item-kill.button:disabled,.toasts-item-kill:not(.button):disabled{--components-button-backgroundColor: transparent;--components-button-color: var(--pr-t-color-text-disabled)}.toasts-item-kill.button:hover,.toasts-item-kill.button:focus-visible,.toasts-item-kill:not(.button):hover,.toasts-item-kill:not(.button):focus-visible{--components-button-color: var(--palettes-neutral-0);--components-button-backgroundColor: var(--palettes-neutral-900)}.toasts-item-kill.button:active,.toasts-item-kill:not(.button):active{--components-button-backgroundColor: var(--palettes-neutral-700)}@keyframes timer{}}@layer mods{.toasts.mod-bottom{--components-toasts-inset: auto var(--components-toasts-right) var(--components-toasts-bottom) auto}}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: PortalDirective, selector: "[luPortal]", inputs: ["luPortal", "luPortalContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
112
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: LuToastsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
113
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.2", type: LuToastsComponent, isStandalone: true, selector: "lu-toasts", inputs: { bottom: { classPropertyName: "bottom", publicName: "bottom", isSignal: true, isRequired: false, transformFunction: null }, sources: { classPropertyName: "sources", publicName: "sources", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"toasts\" aria-live=\"polite\" [class.mod-bottom]=\"bottom()\">\n\t@for (toast of toasts$ | async; track toast.id) {\n\t\t<div class=\"toasts-item\" [class]=\"paletteClassByToastType[toast.type]\">\n\t\t\t@if (toast.type) {\n\t\t\t\t<span class=\"toast-item-icon lucca-icon\" aria-hidden=\"true\" [class]=\"iconClassByToastType[toast.type]\"></span>\n\t\t\t}\n\t\t\t<div class=\"toast-item-content\">\n\t\t\t\t@if (toast.title) {\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<strong>{{ toast.title }}</strong>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t@if (isStringPortalContent(toast.message)) {\n\t\t\t\t\t<p class=\"toast-item-content-description\" [innerHtml]=\"toast.message\"></p>\n\t\t\t\t} @else {\n\t\t\t\t\t<ng-container *luPortal=\"toast.message\" />\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclass=\"toasts-item-kill button\"\n\t\t\t\t(click)=\"removeToast(toast)\"\n\t\t\t\t(animationend)=\"!isOnlyDismissibleManually(toast) && toast.duration > 0 ? removeToast(toast) : null\"\n\t\t\t\t[style.animation-duration]=\"!isOnlyDismissibleManually(toast) && toast.duration > 0 ? toast.duration + 'ms' : null\"\n\t\t\t>\n\t\t\t\t<span class=\"lucca-icon icon-signClose\" aria-hidden=\"true\"></span>\n\t\t\t\t<span class=\"pr-u-mask\">{{ intl.close }}</span>\n\t\t\t</button>\n\t\t</div>\n\t}\n</div>\n", styles: ["@layer components{.toasts{--components-toasts-color: var(--pr-t-color-text-reverse);--components-toasts-top: var(--pr-t-spacings-300);--components-toasts-right: var(--pr-t-spacings-300);--components-toasts-left: var(--pr-t-spacings-300);--components-toasts-bottom: var(--pr-t-spacings-300);--components-toasts-margin-bottom: var(--pr-t-spacings-50);--components-toasts-maxwidth: 22.5rem;--components-toasts-inset: var(--components-toasts-top) var(--components-toasts-right) auto auto;--components-toasts-footerHeight: 4.5rem;--components-toasts-background: var(--palettes-neutral-800);--components-toasts-padding: var(--pr-t-spacings-100) var(--pr-t-spacings-200);max-inline-size:var(--components-toasts-maxwidth);display:flex;flex-direction:column;align-items:flex-end;position:fixed;z-index:9999;inset:var(--components-toasts-inset)}html:has(.main-content .footer.mod-sticky,.dialog.mod-drawer .dialog-inside-footer) .toasts{--components-toasts-bottom: calc(var(--components-toasts-footerHeight) + var(--pr-t-spacings-300))}.toasts-item{display:flex;gap:var(--pr-t-spacings-50);color:var(--components-toasts-color);padding:var(--pr-t-spacings-50);margin-block-end:var(--components-toasts-margin-bottom);background-color:var(--palettes-neutral-800);animation-name:toastsItem;animation-duration:var(--commons-animations-durations-standard);animation-iteration-count:1;border-radius:var(--pr-t-border-radius-structure);overflow:hidden;position:relative;transform-origin:top}@keyframes toastsItem{0%{transform:translateY(var(--pr-t-spacings-200));opacity:0}to{opacity:1}}.toasts-item:hover .toasts-item-kill,.toasts-item:focus-within .toasts-item-kill{animation-play-state:paused}.toast-item-icon{background:var(--palettes-700, var(--palettes-product-700));border-radius:var(--pr-t-border-radius-default);padding-block:var(--pr-t-spacings-100);padding-inline:var(--pr-t-spacings-50)}.toast-item-content{display:flex;flex-grow:1;flex-direction:column;gap:var(--pr-t-spacings-50);padding-block:var(--pr-t-spacings-100);padding-inline:var(--pr-t-spacings-100) 0}.toast-item-content-description{margin:0}.toasts-item-kill.button,.toasts-item-kill:not(.button){align-self:flex-start;border-radius:var(--pr-t-border-radius-default);animation-name:timer;--components-button-padding: var(--pr-t-spacings-100);--components-button-backgroundColor: transparent;--components-button-color: var(--palettes-700, var(--pr-t-color-text-subtle));--components-button-boxShadow: none;--components-button-color: var(--palettes-neutral-0)}.toasts-item-kill.button:hover,.toasts-item-kill.button:focus-visible,.toasts-item-kill:not(.button):hover,.toasts-item-kill:not(.button):focus-visible{--components-button-color: var(--palettes-700, var(--pr-t-color-text-subtle));--components-button-backgroundColor: var(--palettes-50, var(--palettes-neutral-50))}.toasts-item-kill.button:active,.toasts-item-kill:not(.button):active{--components-button-backgroundColor: var(--palettes-100, var(--palettes-neutral-100))}.toasts-item-kill.button:disabled,.toasts-item-kill:not(.button):disabled{--components-button-backgroundColor: transparent;--components-button-color: var(--pr-t-color-text-disabled)}.toasts-item-kill.button:hover,.toasts-item-kill.button:focus-visible,.toasts-item-kill:not(.button):hover,.toasts-item-kill:not(.button):focus-visible{--components-button-color: var(--palettes-neutral-0);--components-button-backgroundColor: var(--palettes-neutral-900)}.toasts-item-kill.button:active,.toasts-item-kill:not(.button):active{--components-button-backgroundColor: var(--palettes-neutral-700)}@keyframes timer{}}@layer mods{.toasts.mod-bottom{--components-toasts-inset: auto var(--components-toasts-right) var(--components-toasts-bottom) auto}}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: PortalDirective, selector: "[luPortal]", inputs: ["luPortal", "luPortalContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
115
114
  }
116
115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: LuToastsComponent, decorators: [{
117
116
  type: Component,
118
- args: [{ selector: 'lu-toasts', changeDetection: ChangeDetectionStrategy.OnPush, imports: [AsyncPipe, PortalDirective], template: "<div class=\"toasts\" aria-live=\"polite\" [class.mod-bottom]=\"bottom\">\n\t@for (toast of toasts$ | async; track toast.id) {\n\t\t<div class=\"toasts-item\" [class]=\"paletteClassByToastType[toast.type]\">\n\t\t\t@if (toast.type) {\n\t\t\t\t<span class=\"toast-item-icon lucca-icon\" aria-hidden=\"true\" [class]=\"iconClassByToastType[toast.type]\"></span>\n\t\t\t}\n\t\t\t<div class=\"toast-item-content\">\n\t\t\t\t@if (toast.title) {\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<strong>{{ toast.title }}</strong>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t@if (isStringPortalContent(toast.message)) {\n\t\t\t\t\t<p class=\"toast-item-content-description\" [innerHtml]=\"toast.message\"></p>\n\t\t\t\t} @else {\n\t\t\t\t\t<ng-container *luPortal=\"toast.message\" />\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclass=\"toasts-item-kill button\"\n\t\t\t\t(click)=\"removeToast(toast)\"\n\t\t\t\t(animationend)=\"!isOnlyDismissibleManually(toast) && toast.duration > 0 ? removeToast(toast) : null\"\n\t\t\t\t[style.animation-duration]=\"!isOnlyDismissibleManually(toast) && toast.duration > 0 ? toast.duration + 'ms' : null\"\n\t\t\t>\n\t\t\t\t<span class=\"lucca-icon icon-signClose\" aria-hidden=\"true\"></span>\n\t\t\t\t<span class=\"pr-u-mask\">{{ intl.close }}</span>\n\t\t\t</button>\n\t\t</div>\n\t}\n</div>\n", styles: ["@layer components{.toasts{--components-toasts-color: var(--pr-t-color-text-reverse);--components-toasts-top: var(--pr-t-spacings-300);--components-toasts-right: var(--pr-t-spacings-300);--components-toasts-left: var(--pr-t-spacings-300);--components-toasts-bottom: var(--pr-t-spacings-300);--components-toasts-margin-bottom: var(--pr-t-spacings-50);--components-toasts-maxwidth: 22.5rem;--components-toasts-inset: var(--components-toasts-top) var(--components-toasts-right) auto auto;--components-toasts-footerHeight: 4.5rem;--components-toasts-background: var(--palettes-neutral-800);--components-toasts-padding: var(--pr-t-spacings-100) var(--pr-t-spacings-200);max-inline-size:var(--components-toasts-maxwidth);display:flex;flex-direction:column;align-items:flex-end;position:fixed;z-index:9999;inset:var(--components-toasts-inset)}html:has(.main-content .footer.mod-sticky,.dialog.mod-drawer .dialog-inside-footer) .toasts{--components-toasts-bottom: calc(var(--components-toasts-footerHeight) + var(--pr-t-spacings-300))}.toasts-item{display:flex;gap:var(--pr-t-spacings-50);color:var(--components-toasts-color);padding:var(--pr-t-spacings-50);margin-block-end:var(--components-toasts-margin-bottom);background-color:var(--palettes-neutral-800);animation-name:toastsItem;animation-duration:var(--commons-animations-durations-standard);animation-iteration-count:1;border-radius:var(--pr-t-border-radius-structure);overflow:hidden;position:relative;transform-origin:top}@keyframes toastsItem{0%{transform:translateY(var(--pr-t-spacings-200));opacity:0}to{opacity:1}}.toasts-item:hover .toasts-item-kill,.toasts-item:focus-within .toasts-item-kill{animation-play-state:paused}.toast-item-icon{background:var(--palettes-700, var(--palettes-product-700));border-radius:var(--pr-t-border-radius-default);padding-block:var(--pr-t-spacings-100);padding-inline:var(--pr-t-spacings-50)}.toast-item-content{display:flex;flex-grow:1;flex-direction:column;gap:var(--pr-t-spacings-50);padding-block:var(--pr-t-spacings-100);padding-inline:var(--pr-t-spacings-100) 0}.toast-item-content-description{margin:0}.toasts-item-kill.button,.toasts-item-kill:not(.button){align-self:flex-start;border-radius:var(--pr-t-border-radius-default);animation-name:timer;--components-button-padding: var(--pr-t-spacings-100);--components-button-backgroundColor: transparent;--components-button-color: var(--palettes-700, var(--pr-t-color-text-subtle));--components-button-boxShadow: none;--components-button-color: var(--palettes-neutral-0)}.toasts-item-kill.button:hover,.toasts-item-kill.button:focus-visible,.toasts-item-kill:not(.button):hover,.toasts-item-kill:not(.button):focus-visible{--components-button-color: var(--palettes-700, var(--pr-t-color-text-subtle));--components-button-backgroundColor: var(--palettes-50, var(--palettes-neutral-50))}.toasts-item-kill.button:active,.toasts-item-kill:not(.button):active{--components-button-backgroundColor: var(--palettes-100, var(--palettes-neutral-100))}.toasts-item-kill.button:disabled,.toasts-item-kill:not(.button):disabled{--components-button-backgroundColor: transparent;--components-button-color: var(--pr-t-color-text-disabled)}.toasts-item-kill.button:hover,.toasts-item-kill.button:focus-visible,.toasts-item-kill:not(.button):hover,.toasts-item-kill:not(.button):focus-visible{--components-button-color: var(--palettes-neutral-0);--components-button-backgroundColor: var(--palettes-neutral-900)}.toasts-item-kill.button:active,.toasts-item-kill:not(.button):active{--components-button-backgroundColor: var(--palettes-neutral-700)}@keyframes timer{}}@layer mods{.toasts.mod-bottom{--components-toasts-inset: auto var(--components-toasts-right) var(--components-toasts-bottom) auto}}\n"] }]
119
- }], ctorParameters: () => [{ type: LuToastsService }], propDecorators: { bottom: [{
120
- type: Input
121
- }], sources: [{
122
- type: Input
123
- }] } });
117
+ args: [{ selector: 'lu-toasts', changeDetection: ChangeDetectionStrategy.OnPush, imports: [AsyncPipe, PortalDirective], template: "<div class=\"toasts\" aria-live=\"polite\" [class.mod-bottom]=\"bottom()\">\n\t@for (toast of toasts$ | async; track toast.id) {\n\t\t<div class=\"toasts-item\" [class]=\"paletteClassByToastType[toast.type]\">\n\t\t\t@if (toast.type) {\n\t\t\t\t<span class=\"toast-item-icon lucca-icon\" aria-hidden=\"true\" [class]=\"iconClassByToastType[toast.type]\"></span>\n\t\t\t}\n\t\t\t<div class=\"toast-item-content\">\n\t\t\t\t@if (toast.title) {\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<strong>{{ toast.title }}</strong>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t@if (isStringPortalContent(toast.message)) {\n\t\t\t\t\t<p class=\"toast-item-content-description\" [innerHtml]=\"toast.message\"></p>\n\t\t\t\t} @else {\n\t\t\t\t\t<ng-container *luPortal=\"toast.message\" />\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclass=\"toasts-item-kill button\"\n\t\t\t\t(click)=\"removeToast(toast)\"\n\t\t\t\t(animationend)=\"!isOnlyDismissibleManually(toast) && toast.duration > 0 ? removeToast(toast) : null\"\n\t\t\t\t[style.animation-duration]=\"!isOnlyDismissibleManually(toast) && toast.duration > 0 ? toast.duration + 'ms' : null\"\n\t\t\t>\n\t\t\t\t<span class=\"lucca-icon icon-signClose\" aria-hidden=\"true\"></span>\n\t\t\t\t<span class=\"pr-u-mask\">{{ intl.close }}</span>\n\t\t\t</button>\n\t\t</div>\n\t}\n</div>\n", styles: ["@layer components{.toasts{--components-toasts-color: var(--pr-t-color-text-reverse);--components-toasts-top: var(--pr-t-spacings-300);--components-toasts-right: var(--pr-t-spacings-300);--components-toasts-left: var(--pr-t-spacings-300);--components-toasts-bottom: var(--pr-t-spacings-300);--components-toasts-margin-bottom: var(--pr-t-spacings-50);--components-toasts-maxwidth: 22.5rem;--components-toasts-inset: var(--components-toasts-top) var(--components-toasts-right) auto auto;--components-toasts-footerHeight: 4.5rem;--components-toasts-background: var(--palettes-neutral-800);--components-toasts-padding: var(--pr-t-spacings-100) var(--pr-t-spacings-200);max-inline-size:var(--components-toasts-maxwidth);display:flex;flex-direction:column;align-items:flex-end;position:fixed;z-index:9999;inset:var(--components-toasts-inset)}html:has(.main-content .footer.mod-sticky,.dialog.mod-drawer .dialog-inside-footer) .toasts{--components-toasts-bottom: calc(var(--components-toasts-footerHeight) + var(--pr-t-spacings-300))}.toasts-item{display:flex;gap:var(--pr-t-spacings-50);color:var(--components-toasts-color);padding:var(--pr-t-spacings-50);margin-block-end:var(--components-toasts-margin-bottom);background-color:var(--palettes-neutral-800);animation-name:toastsItem;animation-duration:var(--commons-animations-durations-standard);animation-iteration-count:1;border-radius:var(--pr-t-border-radius-structure);overflow:hidden;position:relative;transform-origin:top}@keyframes toastsItem{0%{transform:translateY(var(--pr-t-spacings-200));opacity:0}to{opacity:1}}.toasts-item:hover .toasts-item-kill,.toasts-item:focus-within .toasts-item-kill{animation-play-state:paused}.toast-item-icon{background:var(--palettes-700, var(--palettes-product-700));border-radius:var(--pr-t-border-radius-default);padding-block:var(--pr-t-spacings-100);padding-inline:var(--pr-t-spacings-50)}.toast-item-content{display:flex;flex-grow:1;flex-direction:column;gap:var(--pr-t-spacings-50);padding-block:var(--pr-t-spacings-100);padding-inline:var(--pr-t-spacings-100) 0}.toast-item-content-description{margin:0}.toasts-item-kill.button,.toasts-item-kill:not(.button){align-self:flex-start;border-radius:var(--pr-t-border-radius-default);animation-name:timer;--components-button-padding: var(--pr-t-spacings-100);--components-button-backgroundColor: transparent;--components-button-color: var(--palettes-700, var(--pr-t-color-text-subtle));--components-button-boxShadow: none;--components-button-color: var(--palettes-neutral-0)}.toasts-item-kill.button:hover,.toasts-item-kill.button:focus-visible,.toasts-item-kill:not(.button):hover,.toasts-item-kill:not(.button):focus-visible{--components-button-color: var(--palettes-700, var(--pr-t-color-text-subtle));--components-button-backgroundColor: var(--palettes-50, var(--palettes-neutral-50))}.toasts-item-kill.button:active,.toasts-item-kill:not(.button):active{--components-button-backgroundColor: var(--palettes-100, var(--palettes-neutral-100))}.toasts-item-kill.button:disabled,.toasts-item-kill:not(.button):disabled{--components-button-backgroundColor: transparent;--components-button-color: var(--pr-t-color-text-disabled)}.toasts-item-kill.button:hover,.toasts-item-kill.button:focus-visible,.toasts-item-kill:not(.button):hover,.toasts-item-kill:not(.button):focus-visible{--components-button-color: var(--palettes-neutral-0);--components-button-backgroundColor: var(--palettes-neutral-900)}.toasts-item-kill.button:active,.toasts-item-kill:not(.button):active{--components-button-backgroundColor: var(--palettes-neutral-700)}@keyframes timer{}}@layer mods{.toasts.mod-bottom{--components-toasts-inset: auto var(--components-toasts-right) var(--components-toasts-bottom) auto}}\n"] }]
118
+ }], ctorParameters: () => [] });
124
119
 
125
120
  /**
126
121
  * @deprecated use `LuToastsComponent` instead