@ptsecurity/mosaic 11.6.1 → 11.6.2

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 (47) hide show
  1. package/_theming.scss +10 -5
  2. package/bundles/ptsecurity-mosaic-dropdown.umd.js +18 -3
  3. package/bundles/ptsecurity-mosaic-dropdown.umd.js.map +1 -1
  4. package/bundles/ptsecurity-mosaic-dropdown.umd.min.js +1 -1
  5. package/bundles/ptsecurity-mosaic-dropdown.umd.min.js.map +1 -1
  6. package/bundles/ptsecurity-mosaic-modal.umd.js +13 -6
  7. package/bundles/ptsecurity-mosaic-modal.umd.js.map +1 -1
  8. package/bundles/ptsecurity-mosaic-modal.umd.min.js +1 -1
  9. package/bundles/ptsecurity-mosaic-modal.umd.min.js.map +1 -1
  10. package/bundles/ptsecurity-mosaic-splitter.umd.js +12 -0
  11. package/bundles/ptsecurity-mosaic-splitter.umd.js.map +1 -1
  12. package/bundles/ptsecurity-mosaic-splitter.umd.min.js +1 -1
  13. package/bundles/ptsecurity-mosaic-splitter.umd.min.js.map +1 -1
  14. package/bundles/ptsecurity-mosaic-tags.umd.js +2 -1
  15. package/bundles/ptsecurity-mosaic-tags.umd.js.map +1 -1
  16. package/bundles/ptsecurity-mosaic-tags.umd.min.js +1 -1
  17. package/bundles/ptsecurity-mosaic-tags.umd.min.js.map +1 -1
  18. package/bundles/ptsecurity-mosaic-timepicker.umd.js +2 -1
  19. package/bundles/ptsecurity-mosaic-timepicker.umd.js.map +1 -1
  20. package/bundles/ptsecurity-mosaic-timepicker.umd.min.js +1 -1
  21. package/bundles/ptsecurity-mosaic-timepicker.umd.min.js.map +1 -1
  22. package/dropdown/dropdown-item.component.d.ts +1 -0
  23. package/dropdown/ptsecurity-mosaic-dropdown.metadata.json +1 -1
  24. package/esm2015/dropdown/dropdown-item.component.js +10 -3
  25. package/esm2015/dropdown/dropdown-trigger.directive.js +10 -2
  26. package/esm2015/modal/modal.component.js +2 -2
  27. package/esm2015/modal/modal.service.js +13 -6
  28. package/esm2015/splitter/splitter.component.js +13 -2
  29. package/esm2015/tags/tag.component.js +3 -2
  30. package/esm2015/timepicker/timepicker.directive.js +3 -2
  31. package/fesm2015/ptsecurity-mosaic-dropdown.js +18 -3
  32. package/fesm2015/ptsecurity-mosaic-dropdown.js.map +1 -1
  33. package/fesm2015/ptsecurity-mosaic-modal.js +13 -6
  34. package/fesm2015/ptsecurity-mosaic-modal.js.map +1 -1
  35. package/fesm2015/ptsecurity-mosaic-splitter.js +12 -1
  36. package/fesm2015/ptsecurity-mosaic-splitter.js.map +1 -1
  37. package/fesm2015/ptsecurity-mosaic-tags.js +2 -1
  38. package/fesm2015/ptsecurity-mosaic-tags.js.map +1 -1
  39. package/fesm2015/ptsecurity-mosaic-timepicker.js +2 -1
  40. package/fesm2015/ptsecurity-mosaic-timepicker.js.map +1 -1
  41. package/modal/ptsecurity-mosaic-modal.metadata.json +1 -1
  42. package/package.json +4 -4
  43. package/prebuilt-themes/dark-theme.css +1 -1
  44. package/prebuilt-themes/default-theme.css +1 -1
  45. package/splitter/ptsecurity-mosaic-splitter.metadata.json +1 -1
  46. package/splitter/splitter.component.d.ts +4 -1
  47. package/tags/ptsecurity-mosaic-tags.metadata.json +1 -1
@@ -655,7 +655,8 @@
655
655
  return null;
656
656
  }
657
657
  // tslint:enable
658
- var resultDate = this.dateAdapter.createDateTime(this.dateAdapter.getYear(this.value), this.dateAdapter.getMonth(this.value), this.dateAdapter.getDate(this.value), hours, minutes || 0, seconds || 0, this.dateAdapter.getMilliseconds(this.value));
658
+ var date = this.value || this.dateAdapter.today();
659
+ var resultDate = this.dateAdapter.createDateTime(this.dateAdapter.getYear(date), this.dateAdapter.getMonth(date), this.dateAdapter.getDate(date), hours, minutes || 0, seconds || 0, this.dateAdapter.getMilliseconds(date));
659
660
  return this.getValidDateOrNull(resultDate);
660
661
  };
661
662
  McTimepicker.prototype.compareTime = function (first, second) {
@@ -1 +1 @@
1
- {"version":3,"file":"ptsecurity-mosaic-timepicker.umd.js","sources":["../../../packages/mosaic/timepicker/timepicker.constants.ts","../../../packages/mosaic/timepicker/timepicker.directive.ts","../../../packages/mosaic/timepicker/timepicker.module.ts","../../../packages/mosaic/timepicker/ptsecurity-mosaic-timepicker.ts"],"sourcesContent":["// tslint:disable:naming-convention\nexport enum TimeParts {\n hours,\n minutes,\n seconds\n}\n\nexport enum TimeFormats {\n HHmmss = 'HH:mm:ss',\n HHmm = 'HH:mm'\n}\n\nexport const TIMEFORMAT_PLACEHOLDERS: { [timeFormat: string]: string } = {\n [TimeFormats.HHmmss]: 'чч:мм:сс',\n [TimeFormats.HHmm]: 'чч:мм'\n};\n\nexport const DEFAULT_TIME_FORMAT: TimeFormats = TimeFormats.HHmm;\n\nexport const HOURS_MINUTES_SECONDS_REGEXP = /^([0-1][0-9]|2[0-3]):?([0-5][0-9]):?([0-5][0-9])?$/;\nexport const HOURS_MINUTES_REGEXP = /^([0-1][0-9]|2[0-3]):?([0-5][0-9])?$/;\nexport const HOURS_ONLY_REGEXP = /^([0-1][0-9]|2[0-3]):?$/;\nexport const AM_PM_FORMAT_REGEXP = /^([0-1]?[0-9]):([0-5]?[0-9]) ([ap][m]?$)/i;\n\nexport const SECONDS_PER_MINUTE: number = 59;\nexport const MINUTES_PER_HOUR: number = 59;\nexport const HOURS_PER_DAY: number = 23;\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n Optional,\n Output,\n Renderer2\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport { DateAdapter } from '@ptsecurity/cdk/datetime';\nimport {\n DOWN_ARROW,\n UP_ARROW,\n HOME,\n END,\n LEFT_ARROW,\n RIGHT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n SPACE,\n DELETE,\n BACKSPACE,\n hasModifierKey,\n isLetterKey,\n isVerticalMovement,\n isHorizontalMovement,\n TAB\n} from '@ptsecurity/cdk/keycodes';\nimport { validationTooltipHideDelay, validationTooltipShowDelay } from '@ptsecurity/mosaic/core';\nimport { McFormFieldControl } from '@ptsecurity/mosaic/form-field';\nimport { McTooltip } from '@ptsecurity/mosaic/tooltip';\nimport { noop, Subject } from 'rxjs';\n\nimport {\n DEFAULT_TIME_FORMAT,\n HOURS_PER_DAY,\n HOURS_MINUTES_REGEXP,\n HOURS_MINUTES_SECONDS_REGEXP,\n HOURS_ONLY_REGEXP,\n MINUTES_PER_HOUR,\n SECONDS_PER_MINUTE,\n TIMEFORMAT_PLACEHOLDERS,\n TimeFormats,\n TimeParts,\n AM_PM_FORMAT_REGEXP\n} from './timepicker.constants';\n\n\n/** @docs-private */\nexport const MC_TIMEPICKER_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => McTimepicker),\n multi: true\n};\n\n/** @docs-private */\nexport const MC_TIMEPICKER_VALIDATORS: any = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => McTimepicker),\n multi: true\n};\n\n\nlet uniqueComponentIdSuffix: number = 0;\n\nconst shortFormatSize: number = 5;\nconst fullFormatSize: number = 8;\n\n\n@Directive({\n selector: 'input[mcTimepicker]',\n exportAs: 'mcTimepicker',\n host: {\n class: 'mc-input mc-timepicker',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n '[attr.placeholder]': 'placeholder',\n '[attr.disabled]': 'disabled || null',\n '[attr.required]': 'required',\n '[attr.size]': 'getSize()',\n '[attr.autocomplete]': '\"off\"',\n\n '(blur)': 'onBlur()',\n '(focus)': 'focusChanged(true)',\n\n '(paste)': 'onPaste($event)',\n\n '(keydown)': 'onKeyDown($event)'\n },\n providers: [\n MC_TIMEPICKER_VALIDATORS,\n MC_TIMEPICKER_VALUE_ACCESSOR,\n { provide: McFormFieldControl, useExisting: McTimepicker }\n ]\n})\nexport class McTimepicker<D> implements McFormFieldControl<D>, ControlValueAccessor, Validator, OnDestroy {\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n readonly errorState: boolean;\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n focused: boolean = false;\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n controlType: string = 'timepicker';\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n\n set placeholder(value: string) {\n this._placeholder = value;\n\n this.defaultPlaceholder = false;\n }\n\n private _placeholder = TIMEFORMAT_PLACEHOLDERS[DEFAULT_TIME_FORMAT];\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n }\n\n this.stateChanges.next();\n }\n\n private _disabled: boolean;\n\n @Input()\n get id(): string {\n return this._id;\n }\n\n set id(value: string) {\n this._id = value || this.uid;\n }\n\n private _id: string;\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n private _required: boolean;\n\n @Input()\n get format(): TimeFormats {\n return this._format;\n }\n\n set format(formatValue: TimeFormats) {\n this._format = Object\n .keys(TimeFormats)\n .map((timeFormatKey) => TimeFormats[timeFormatKey])\n .indexOf(formatValue) > -1 ? formatValue : DEFAULT_TIME_FORMAT;\n\n if (this.defaultPlaceholder) {\n this._placeholder = TIMEFORMAT_PLACEHOLDERS[this._format];\n }\n\n if (this.value) {\n this.updateView();\n }\n }\n\n private _format: TimeFormats = DEFAULT_TIME_FORMAT;\n\n @Input()\n get min(): D | null {\n return this._min;\n }\n\n set min(value: D | null) {\n this._min = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n this.validatorOnChange();\n }\n\n private _min: D | null = null;\n\n @Input()\n get max(): D | null {\n return this._max;\n }\n\n set max(value: D | null) {\n this._max = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n this.validatorOnChange();\n }\n\n private _max: D | null = null;\n\n @Input()\n get value(): D | null {\n return this._value;\n }\n\n set value(value: D | null) {\n const newValue = this.dateAdapter.deserialize(value);\n\n this.lastValueValid = !newValue || this.dateAdapter.isValid(newValue);\n\n this._value = this.getValidDateOrNull(newValue);\n\n this.updateView();\n }\n\n private _value: D | null;\n\n @Input()\n set mcValidationTooltip(tooltip: McTooltip) {\n if (!tooltip) { return; }\n\n tooltip.mcMouseEnterDelay = validationTooltipShowDelay;\n tooltip.mcTrigger = 'manual';\n tooltip.mcTooltipClass = 'mc-tooltip_warning';\n\n tooltip.initElementRefListeners();\n\n this.incorrectInput.subscribe(() => {\n if (tooltip.isTooltipOpen) { return; }\n\n tooltip.show();\n\n setTimeout(() => tooltip.hide(), validationTooltipHideDelay);\n });\n }\n\n @Output() incorrectInput = new EventEmitter<void>();\n\n get hasSelection(): boolean {\n return this.selectionStart !== this.selectionEnd;\n }\n\n get isFullFormat(): boolean {\n return this.format === TimeFormats.HHmmss;\n }\n\n get isShortFormat(): boolean {\n return this.format === TimeFormats.HHmm;\n }\n\n get viewValue(): string {\n return this.elementRef.nativeElement.value;\n }\n\n get ngControl(): any {\n return this.control;\n }\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n get empty(): boolean {\n return !this.viewValue && !this.isBadInput();\n }\n\n get selectionStart(): number | null {\n return this.elementRef.nativeElement.selectionStart;\n }\n\n set selectionStart(value: number | null) {\n this.elementRef.nativeElement.selectionStart = value;\n }\n\n get selectionEnd(): number | null {\n return this.elementRef.nativeElement.selectionEnd;\n }\n\n set selectionEnd(value: number | null) {\n this.elementRef.nativeElement.selectionEnd = value;\n }\n\n private readonly uid = `mc-timepicker-${uniqueComponentIdSuffix++}`;\n\n private readonly validator: ValidatorFn | null;\n\n private lastValueValid = false;\n\n private control: AbstractControl;\n\n private defaultPlaceholder = true;\n\n private onChange: (value: any) => void;\n private onTouched: () => void;\n\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n @Optional() private dateAdapter: DateAdapter<any>\n ) {\n if (!this.dateAdapter) {\n throw Error(`McTimepicker: No provider found for DateAdapter. You must import one of the existing ` +\n `modules at your application root or provide a custom implementation or use exists ones.`);\n }\n\n this.validator = Validators.compose([this.parseValidator, this.minValidator, this.maxValidator]);\n\n this.onChange = noop;\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n }\n\n ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n getSize(): number {\n return this.isFullFormat ? fullFormatSize : shortFormatSize;\n }\n\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n focusChanged(isFocused: boolean): void {\n if (isFocused !== this.focused) {\n this.focused = isFocused;\n this.onTouched();\n this.stateChanges.next();\n }\n }\n\n onBlur() {\n this.focusChanged(false);\n\n this.onInput();\n }\n\n onPaste($event) {\n $event.preventDefault();\n\n const value = this.formatUserPaste($event.clipboardData.getData('text'));\n\n const newTimeObj = this.getDateFromTimeString(value);\n\n if (!newTimeObj) { return; }\n\n this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.format));\n\n this.value = newTimeObj;\n this.onChange(newTimeObj);\n this.stateChanges.next();\n }\n\n onInput = () => {\n const formattedValue = this.formatUserInput(this.viewValue);\n\n const newTimeObj = this.getDateFromTimeString(formattedValue);\n this.lastValueValid = !!newTimeObj;\n\n if (!newTimeObj) {\n this.onChange(null);\n\n return;\n }\n\n const selectionStart = this.selectionStart;\n const selectionEnd = this.selectionEnd;\n\n this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.format));\n\n this.selectionStart = selectionStart;\n this.selectionEnd = selectionEnd;\n\n this.createSelectionOfTimeComponentInInput((selectionStart as number) + 1);\n\n this.value = newTimeObj;\n this.onChange(newTimeObj);\n this.stateChanges.next();\n }\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n }\n\n onKeyDown(event: KeyboardEvent): void {\n // tslint:disable-next-line: deprecation\n const keyCode = event.keyCode;\n\n if (isLetterKey(event) && !event.ctrlKey && !event.metaKey) {\n event.preventDefault();\n\n this.incorrectInput.emit();\n } else if (\n (hasModifierKey(event) && (isVerticalMovement(keyCode) || isHorizontalMovement(keyCode))) ||\n event.ctrlKey || event.metaKey ||\n [DELETE, BACKSPACE, TAB].includes(keyCode)\n ) {\n noop();\n } else if (keyCode === SPACE) {\n this.spaceKeyHandler(event);\n } else if ([HOME, PAGE_UP].includes(keyCode)) {\n this.createSelectionOfTimeComponentInInput(0);\n } else if ([END, PAGE_DOWN].includes(keyCode)) {\n this.createSelectionOfTimeComponentInInput(this.viewValue.length);\n } else if ([UP_ARROW, DOWN_ARROW].includes(keyCode)) {\n event.preventDefault();\n\n this.verticalArrowKeyHandler(keyCode);\n } else if ([LEFT_ARROW, RIGHT_ARROW].includes(keyCode)) {\n this.horizontalArrowKeyHandler(keyCode);\n } else if (/^\\D$/.test(event.key)) {\n event.preventDefault();\n\n const newValue = this.getNewValue(event.key, this.selectionStart as number);\n const formattedValue = this.replaceSymbols(newValue);\n\n if (newValue !== formattedValue) {\n this.setViewValue(formattedValue);\n\n setTimeout(this.onInput);\n } else {\n this.incorrectInput.emit();\n }\n } else {\n setTimeout(this.onInput);\n }\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n this.setControl(control);\n\n return this.validator ? this.validator(control) : null;\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this.validatorOnChange = fn;\n }\n\n writeValue(value: D | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: (value: D) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n private formatUserPaste(value: string) {\n if (value.match(AM_PM_FORMAT_REGEXP)) { return value; }\n\n const match: RegExpMatchArray | null = value.match(\n /^(\\D+)?(?<hours>\\d+)?(\\D+)?(\\D+)?(?<minutes>\\d+)?(\\D+)?(\\D+)?(?<seconds>\\d+)?(\\D+)?$/\n );\n\n if (!match?.groups?.hours) {\n this.setViewValue(value);\n\n return value;\n }\n\n return this.replaceNumbers(Object.values(match.groups)\n // tslint:disable-next-line:no-magic-numbers\n .map((group) => (group || '').padStart(2, '0'))\n .join(':')\n );\n }\n\n private formatUserInput(value: string): string {\n return this.replaceNumbers(this.replaceSymbols(value));\n }\n\n private replaceSymbols(value: string): string {\n let formattedValue: string = value;\n\n const match: RegExpMatchArray | null = value.match(/^(\\d\\d:){0,2}(?<number>[0-9])(?<symbol>\\W)(:\\d\\d){0,2}$/);\n\n if (match?.groups) {\n const { number, symbol } = match.groups;\n\n formattedValue = value.replace(number + symbol, `0${number}`);\n }\n\n return formattedValue;\n }\n\n private replaceNumbers(value: string): string {\n let formattedValue: string = value;\n\n const match: RegExpMatchArray | null = value.match(/^(?<hours>\\d{0,4}):?(?<minutes>\\d{0,4}):?(?<seconds>\\d{0,4})$/);\n\n if (match?.groups) {\n const { hours, minutes, seconds } = match.groups;\n\n if (hours.length && parseInt(hours) > HOURS_PER_DAY) {\n formattedValue = formattedValue.replace(hours, HOURS_PER_DAY.toString());\n }\n\n if (minutes.length && parseInt(minutes) > MINUTES_PER_HOUR) {\n formattedValue = formattedValue.replace(minutes, MINUTES_PER_HOUR.toString());\n }\n\n if (seconds.length && parseInt(seconds) > SECONDS_PER_MINUTE) {\n formattedValue = formattedValue.replace(seconds, SECONDS_PER_MINUTE.toString());\n }\n }\n\n return formattedValue;\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n private isBadInput(): boolean {\n const validity = (<HTMLInputElement> this.elementRef.nativeElement).validity;\n\n return validity && validity.badInput;\n }\n\n private spaceKeyHandler(event: KeyboardEvent) {\n event.preventDefault();\n\n if (this.selectionStart === this.selectionEnd) {\n const value = this.getNewValue(event.key, this.selectionStart as number);\n const formattedValue = this.replaceSymbols(value);\n\n if (value !== formattedValue) {\n this.setViewValue(formattedValue);\n\n setTimeout(this.onInput);\n }\n } else if (this.selectionStart !== this.selectionEnd) {\n\n let cursorPos = this.selectionStart as number;\n\n const nextDividerPos: number = this.viewValue.indexOf(':', cursorPos);\n\n cursorPos = nextDividerPos ? nextDividerPos + 1 : 0;\n\n this.createSelectionOfTimeComponentInInput(cursorPos);\n }\n }\n\n private getNewValue(key: string, position: number) {\n return [this.viewValue.slice(0, position), key, this.viewValue.slice(position)].join('');\n }\n\n private verticalArrowKeyHandler(keyCode: number): void {\n if (!this.value) { return; }\n\n let changedTime;\n\n const newEditParams = this.getTimeEditMetrics(this.selectionStart as number);\n\n if (keyCode === UP_ARROW) {\n changedTime = this.incrementTime(this.value, newEditParams.modifiedTimePart);\n }\n\n if (keyCode === DOWN_ARROW) {\n changedTime = this.decrementTime(this.value, newEditParams.modifiedTimePart);\n }\n\n this.value = changedTime;\n\n this.selectionStart = newEditParams.cursorStartPosition;\n this.selectionEnd = newEditParams.cursorEndPosition;\n\n this.onChange(changedTime);\n this.stateChanges.next();\n }\n\n private horizontalArrowKeyHandler(keyCode: number): void {\n if (!this.value) { return; }\n\n let cursorPos = this.selectionStart as number;\n\n if (keyCode === LEFT_ARROW) {\n cursorPos = cursorPos === 0 ? this.viewValue.length : cursorPos - 1;\n } else if (keyCode === RIGHT_ARROW) {\n const nextDividerPos: number = this.viewValue.indexOf(':', cursorPos);\n\n cursorPos = nextDividerPos ? nextDividerPos + 1 : 0;\n }\n\n this.createSelectionOfTimeComponentInInput(cursorPos);\n }\n\n private createSelectionOfTimeComponentInInput(cursorPos: number): void {\n setTimeout(() => {\n const newEditParams = this.getTimeEditMetrics(cursorPos);\n\n this.selectionStart = newEditParams.cursorStartPosition;\n this.selectionEnd = newEditParams.cursorEndPosition;\n });\n }\n\n private incrementTime(dateVal: D, whatToIncrement: TimeParts = TimeParts.seconds): D {\n let hours = this.dateAdapter.getHours(dateVal);\n let minutes = this.dateAdapter.getMinutes(dateVal);\n let seconds = this.dateAdapter.getSeconds(dateVal);\n\n switch (whatToIncrement) {\n case TimeParts.hours:\n hours++;\n break;\n case TimeParts.minutes:\n minutes++;\n break;\n case TimeParts.seconds:\n seconds++;\n break;\n default:\n }\n\n if (seconds > SECONDS_PER_MINUTE) { seconds = 0; }\n\n if (minutes > MINUTES_PER_HOUR) { minutes = 0; }\n\n if (hours > HOURS_PER_DAY) { hours = 0; }\n\n return this.dateAdapter.createDateTime(\n this.dateAdapter.getYear(this.value),\n this.dateAdapter.getMonth(this.value),\n this.dateAdapter.getDate(this.value),\n hours,\n minutes,\n seconds,\n this.dateAdapter.getMilliseconds(this.value)\n );\n }\n\n private decrementTime(dateVal: D, whatToDecrement: TimeParts = TimeParts.seconds): D {\n let hours = this.dateAdapter.getHours(dateVal);\n let minutes = this.dateAdapter.getMinutes(dateVal);\n let seconds = this.dateAdapter.getSeconds(dateVal);\n\n switch (whatToDecrement) {\n case TimeParts.hours:\n hours--;\n break;\n case TimeParts.minutes:\n minutes--;\n break;\n case TimeParts.seconds:\n seconds--;\n break;\n default:\n }\n\n if (seconds < 0) { seconds = SECONDS_PER_MINUTE; }\n\n if (minutes < 0) { minutes = MINUTES_PER_HOUR; }\n\n if (hours < 0) { hours = HOURS_PER_DAY; }\n\n return this.dateAdapter.createDateTime(\n this.dateAdapter.getYear(this.value),\n this.dateAdapter.getMonth(this.value),\n this.dateAdapter.getDate(this.value),\n hours,\n minutes,\n seconds,\n this.dateAdapter.getMilliseconds(this.value)\n );\n }\n\n /**\n * @description Get params for arrow-keys (up/down) time valie edit.\n * @param cursorPosition Current cursor position in timeString\n */\n private getTimeEditMetrics(cursorPosition: number): {\n modifiedTimePart: TimeParts;\n cursorStartPosition: number;\n cursorEndPosition: number;\n } {\n const timeString: string = this.viewValue;\n let modifiedTimePart: TimeParts;\n let cursorStartPosition: number;\n let cursorEndPosition: number;\n\n const hoursIndex = 0;\n const minutesIndex = timeString.indexOf(':', hoursIndex + 1);\n const secondsIndex = minutesIndex !== -1 ? timeString.indexOf(':', minutesIndex + 1) : -1;\n\n if (secondsIndex !== -1 && cursorPosition > secondsIndex) {\n modifiedTimePart = TimeParts.seconds;\n cursorStartPosition = secondsIndex + 1;\n cursorEndPosition = timeString.length;\n } else if (minutesIndex !== -1 && cursorPosition > minutesIndex) {\n modifiedTimePart = TimeParts.minutes;\n cursorStartPosition = minutesIndex + 1;\n cursorEndPosition = secondsIndex > -1 ? secondsIndex : timeString.length;\n } else {\n modifiedTimePart = TimeParts.hours;\n cursorStartPosition = hoursIndex;\n cursorEndPosition = minutesIndex !== -1 ? minutesIndex : timeString.length;\n }\n\n return { modifiedTimePart, cursorStartPosition, cursorEndPosition };\n }\n\n /**\n * @description Create time string for displaying inside input element of UI\n */\n private getTimeStringFromDate(value: D | null, timeFormat: TimeFormats): string {\n if (!value || !this.dateAdapter.isValid(value)) { return ''; }\n\n return this.dateAdapter.format(value, timeFormat);\n }\n\n private getDateFromTimeString(timeString: string): D | null {\n if (!timeString) { return null; }\n\n const HMS = timeString.match(HOURS_MINUTES_SECONDS_REGEXP);\n const HM = timeString.match(HOURS_MINUTES_REGEXP);\n const H = timeString.match(HOURS_ONLY_REGEXP);\n const amPm = timeString.match(AM_PM_FORMAT_REGEXP);\n\n let hours: number = 0;\n let minutes: number = 0;\n let seconds: number = 0;\n\n // tslint:disable:no-magic-numbers\n if (amPm) {\n hours = Number(amPm[1]);\n minutes = Number(amPm[2]);\n\n if (/[p]/i.test(amPm[3]) || (/[a]/i.test(amPm[3]) && hours === 12)) {\n hours += 12;\n }\n } else if (HMS) {\n hours = Number(HMS[1]);\n minutes = Number(HMS[2]);\n seconds = Number(HMS[3]);\n } else if (HM) {\n hours = Number(HM[1]);\n minutes = Number(HM[2]);\n } else if (H) {\n hours = Number(H[1]);\n } else {\n return null;\n }\n // tslint:enable\n\n const resultDate = this.dateAdapter.createDateTime(\n this.dateAdapter.getYear(this.value),\n this.dateAdapter.getMonth(this.value),\n this.dateAdapter.getDate(this.value),\n hours,\n minutes || 0,\n seconds || 0,\n this.dateAdapter.getMilliseconds(this.value)\n );\n\n return this.getValidDateOrNull(resultDate);\n }\n\n private parseValidator: ValidatorFn = (): ValidationErrors | null => {\n return this.focused ||\n this.empty ||\n this.lastValueValid ? null : { mcTimepickerParse: { text: this.viewValue } };\n }\n\n private minValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const controlValue = this.getValidDateOrNull(this.dateAdapter.deserialize(control.value));\n\n return (!this.min || !controlValue || this.compareTime(this.min, controlValue) <= 0) ?\n null :\n { mcTimepickerLowerThenMin: { min: this.min, actual: controlValue } };\n }\n\n private maxValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const controlValue = this.getValidDateOrNull(this.dateAdapter.deserialize(control.value));\n\n return (!this.max || !controlValue || this.compareTime(this.max, controlValue) >= 0) ?\n null :\n { mcTimepickerHigherThenMax: { max: this.max, actual: controlValue } };\n }\n\n private compareTime(first: D, second: D): number {\n const result = this.dateAdapter.getHours(first) - this.dateAdapter.getHours(second) ||\n this.dateAdapter.getMinutes(first) - this.dateAdapter.getMinutes(second);\n\n if (TimeFormats.HHmm === this.format) {\n return result;\n } else if (TimeFormats.HHmmss === this.format) {\n return result || this.dateAdapter.getSeconds(first) - this.dateAdapter.getSeconds(second);\n } else {\n throw Error(`Unknown format: ${this.format}`);\n }\n }\n\n private getValidDateOrNull(obj: any): D | null {\n return (this.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\n }\n\n private setViewValue(value: string) {\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', value);\n }\n\n private updateView() {\n const formattedValue = this.getTimeStringFromDate(this.value, this.format);\n\n this.setViewValue(formattedValue);\n }\n\n private setControl(control: AbstractControl) {\n if (!this.control) {\n this.control = control;\n }\n }\n\n // tslint:disable-next-line:no-empty\n private validatorOnChange = () => {};\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { McTimepicker } from './timepicker.directive';\n\n\n@NgModule({\n imports: [\n CommonModule,\n A11yModule,\n PlatformModule,\n FormsModule\n ],\n declarations: [McTimepicker],\n exports: [McTimepicker]\n})\nexport class McTimepickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["TimeParts","TimeFormats","NG_VALUE_ACCESSOR","forwardRef","NG_VALIDATORS","Subject","EventEmitter","Validators","noop","coerceBooleanProperty","validationTooltipShowDelay","validationTooltipHideDelay","isLetterKey","hasModifierKey","isVerticalMovement","isHorizontalMovement","DELETE","BACKSPACE","TAB","SPACE","HOME","PAGE_UP","END","PAGE_DOWN","UP_ARROW","DOWN_ARROW","LEFT_ARROW","RIGHT_ARROW","Directive","McFormFieldControl","ElementRef","Renderer2","DateAdapter","Optional","Input","Output","NgModule","CommonModule","A11yModule","PlatformModule","FormsModule"],"mappings":"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"}
1
+ {"version":3,"file":"ptsecurity-mosaic-timepicker.umd.js","sources":["../../../packages/mosaic/timepicker/timepicker.constants.ts","../../../packages/mosaic/timepicker/timepicker.directive.ts","../../../packages/mosaic/timepicker/timepicker.module.ts","../../../packages/mosaic/timepicker/ptsecurity-mosaic-timepicker.ts"],"sourcesContent":["// tslint:disable:naming-convention\nexport enum TimeParts {\n hours,\n minutes,\n seconds\n}\n\nexport enum TimeFormats {\n HHmmss = 'HH:mm:ss',\n HHmm = 'HH:mm'\n}\n\nexport const TIMEFORMAT_PLACEHOLDERS: { [timeFormat: string]: string } = {\n [TimeFormats.HHmmss]: 'чч:мм:сс',\n [TimeFormats.HHmm]: 'чч:мм'\n};\n\nexport const DEFAULT_TIME_FORMAT: TimeFormats = TimeFormats.HHmm;\n\nexport const HOURS_MINUTES_SECONDS_REGEXP = /^([0-1][0-9]|2[0-3]):?([0-5][0-9]):?([0-5][0-9])?$/;\nexport const HOURS_MINUTES_REGEXP = /^([0-1][0-9]|2[0-3]):?([0-5][0-9])?$/;\nexport const HOURS_ONLY_REGEXP = /^([0-1][0-9]|2[0-3]):?$/;\nexport const AM_PM_FORMAT_REGEXP = /^([0-1]?[0-9]):([0-5]?[0-9]) ([ap][m]?$)/i;\n\nexport const SECONDS_PER_MINUTE: number = 59;\nexport const MINUTES_PER_HOUR: number = 59;\nexport const HOURS_PER_DAY: number = 23;\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n Optional,\n Output,\n Renderer2\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport { DateAdapter } from '@ptsecurity/cdk/datetime';\nimport {\n DOWN_ARROW,\n UP_ARROW,\n HOME,\n END,\n LEFT_ARROW,\n RIGHT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n SPACE,\n DELETE,\n BACKSPACE,\n hasModifierKey,\n isLetterKey,\n isVerticalMovement,\n isHorizontalMovement,\n TAB\n} from '@ptsecurity/cdk/keycodes';\nimport { validationTooltipHideDelay, validationTooltipShowDelay } from '@ptsecurity/mosaic/core';\nimport { McFormFieldControl } from '@ptsecurity/mosaic/form-field';\nimport { McTooltip } from '@ptsecurity/mosaic/tooltip';\nimport { noop, Subject } from 'rxjs';\n\nimport {\n DEFAULT_TIME_FORMAT,\n HOURS_PER_DAY,\n HOURS_MINUTES_REGEXP,\n HOURS_MINUTES_SECONDS_REGEXP,\n HOURS_ONLY_REGEXP,\n MINUTES_PER_HOUR,\n SECONDS_PER_MINUTE,\n TIMEFORMAT_PLACEHOLDERS,\n TimeFormats,\n TimeParts,\n AM_PM_FORMAT_REGEXP\n} from './timepicker.constants';\n\n\n/** @docs-private */\nexport const MC_TIMEPICKER_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => McTimepicker),\n multi: true\n};\n\n/** @docs-private */\nexport const MC_TIMEPICKER_VALIDATORS: any = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => McTimepicker),\n multi: true\n};\n\n\nlet uniqueComponentIdSuffix: number = 0;\n\nconst shortFormatSize: number = 5;\nconst fullFormatSize: number = 8;\n\n\n@Directive({\n selector: 'input[mcTimepicker]',\n exportAs: 'mcTimepicker',\n host: {\n class: 'mc-input mc-timepicker',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n '[attr.placeholder]': 'placeholder',\n '[attr.disabled]': 'disabled || null',\n '[attr.required]': 'required',\n '[attr.size]': 'getSize()',\n '[attr.autocomplete]': '\"off\"',\n\n '(blur)': 'onBlur()',\n '(focus)': 'focusChanged(true)',\n\n '(paste)': 'onPaste($event)',\n\n '(keydown)': 'onKeyDown($event)'\n },\n providers: [\n MC_TIMEPICKER_VALIDATORS,\n MC_TIMEPICKER_VALUE_ACCESSOR,\n { provide: McFormFieldControl, useExisting: McTimepicker }\n ]\n})\nexport class McTimepicker<D> implements McFormFieldControl<D>, ControlValueAccessor, Validator, OnDestroy {\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n readonly errorState: boolean;\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n focused: boolean = false;\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n controlType: string = 'timepicker';\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n\n set placeholder(value: string) {\n this._placeholder = value;\n\n this.defaultPlaceholder = false;\n }\n\n private _placeholder = TIMEFORMAT_PLACEHOLDERS[DEFAULT_TIME_FORMAT];\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n }\n\n this.stateChanges.next();\n }\n\n private _disabled: boolean;\n\n @Input()\n get id(): string {\n return this._id;\n }\n\n set id(value: string) {\n this._id = value || this.uid;\n }\n\n private _id: string;\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n private _required: boolean;\n\n @Input()\n get format(): TimeFormats {\n return this._format;\n }\n\n set format(formatValue: TimeFormats) {\n this._format = Object\n .keys(TimeFormats)\n .map((timeFormatKey) => TimeFormats[timeFormatKey])\n .indexOf(formatValue) > -1 ? formatValue : DEFAULT_TIME_FORMAT;\n\n if (this.defaultPlaceholder) {\n this._placeholder = TIMEFORMAT_PLACEHOLDERS[this._format];\n }\n\n if (this.value) {\n this.updateView();\n }\n }\n\n private _format: TimeFormats = DEFAULT_TIME_FORMAT;\n\n @Input()\n get min(): D | null {\n return this._min;\n }\n\n set min(value: D | null) {\n this._min = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n this.validatorOnChange();\n }\n\n private _min: D | null = null;\n\n @Input()\n get max(): D | null {\n return this._max;\n }\n\n set max(value: D | null) {\n this._max = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n this.validatorOnChange();\n }\n\n private _max: D | null = null;\n\n @Input()\n get value(): D | null {\n return this._value;\n }\n\n set value(value: D | null) {\n const newValue = this.dateAdapter.deserialize(value);\n\n this.lastValueValid = !newValue || this.dateAdapter.isValid(newValue);\n\n this._value = this.getValidDateOrNull(newValue);\n\n this.updateView();\n }\n\n private _value: D | null;\n\n @Input()\n set mcValidationTooltip(tooltip: McTooltip) {\n if (!tooltip) { return; }\n\n tooltip.mcMouseEnterDelay = validationTooltipShowDelay;\n tooltip.mcTrigger = 'manual';\n tooltip.mcTooltipClass = 'mc-tooltip_warning';\n\n tooltip.initElementRefListeners();\n\n this.incorrectInput.subscribe(() => {\n if (tooltip.isTooltipOpen) { return; }\n\n tooltip.show();\n\n setTimeout(() => tooltip.hide(), validationTooltipHideDelay);\n });\n }\n\n @Output() incorrectInput = new EventEmitter<void>();\n\n get hasSelection(): boolean {\n return this.selectionStart !== this.selectionEnd;\n }\n\n get isFullFormat(): boolean {\n return this.format === TimeFormats.HHmmss;\n }\n\n get isShortFormat(): boolean {\n return this.format === TimeFormats.HHmm;\n }\n\n get viewValue(): string {\n return this.elementRef.nativeElement.value;\n }\n\n get ngControl(): any {\n return this.control;\n }\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n get empty(): boolean {\n return !this.viewValue && !this.isBadInput();\n }\n\n get selectionStart(): number | null {\n return this.elementRef.nativeElement.selectionStart;\n }\n\n set selectionStart(value: number | null) {\n this.elementRef.nativeElement.selectionStart = value;\n }\n\n get selectionEnd(): number | null {\n return this.elementRef.nativeElement.selectionEnd;\n }\n\n set selectionEnd(value: number | null) {\n this.elementRef.nativeElement.selectionEnd = value;\n }\n\n private readonly uid = `mc-timepicker-${uniqueComponentIdSuffix++}`;\n\n private readonly validator: ValidatorFn | null;\n\n private lastValueValid = false;\n\n private control: AbstractControl;\n\n private defaultPlaceholder = true;\n\n private onChange: (value: any) => void;\n private onTouched: () => void;\n\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n @Optional() private dateAdapter: DateAdapter<any>\n ) {\n if (!this.dateAdapter) {\n throw Error(`McTimepicker: No provider found for DateAdapter. You must import one of the existing ` +\n `modules at your application root or provide a custom implementation or use exists ones.`);\n }\n\n this.validator = Validators.compose([this.parseValidator, this.minValidator, this.maxValidator]);\n\n this.onChange = noop;\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n }\n\n ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n getSize(): number {\n return this.isFullFormat ? fullFormatSize : shortFormatSize;\n }\n\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n focusChanged(isFocused: boolean): void {\n if (isFocused !== this.focused) {\n this.focused = isFocused;\n this.onTouched();\n this.stateChanges.next();\n }\n }\n\n onBlur() {\n this.focusChanged(false);\n\n this.onInput();\n }\n\n onPaste($event) {\n $event.preventDefault();\n\n const value = this.formatUserPaste($event.clipboardData.getData('text'));\n\n const newTimeObj = this.getDateFromTimeString(value);\n\n if (!newTimeObj) { return; }\n\n this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.format));\n\n this.value = newTimeObj;\n this.onChange(newTimeObj);\n this.stateChanges.next();\n }\n\n onInput = () => {\n const formattedValue = this.formatUserInput(this.viewValue);\n\n const newTimeObj = this.getDateFromTimeString(formattedValue);\n this.lastValueValid = !!newTimeObj;\n\n if (!newTimeObj) {\n this.onChange(null);\n\n return;\n }\n\n const selectionStart = this.selectionStart;\n const selectionEnd = this.selectionEnd;\n\n this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.format));\n\n this.selectionStart = selectionStart;\n this.selectionEnd = selectionEnd;\n\n this.createSelectionOfTimeComponentInInput((selectionStart as number) + 1);\n\n this.value = newTimeObj;\n this.onChange(newTimeObj);\n this.stateChanges.next();\n }\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n }\n\n onKeyDown(event: KeyboardEvent): void {\n // tslint:disable-next-line: deprecation\n const keyCode = event.keyCode;\n\n if (isLetterKey(event) && !event.ctrlKey && !event.metaKey) {\n event.preventDefault();\n\n this.incorrectInput.emit();\n } else if (\n (hasModifierKey(event) && (isVerticalMovement(keyCode) || isHorizontalMovement(keyCode))) ||\n event.ctrlKey || event.metaKey ||\n [DELETE, BACKSPACE, TAB].includes(keyCode)\n ) {\n noop();\n } else if (keyCode === SPACE) {\n this.spaceKeyHandler(event);\n } else if ([HOME, PAGE_UP].includes(keyCode)) {\n this.createSelectionOfTimeComponentInInput(0);\n } else if ([END, PAGE_DOWN].includes(keyCode)) {\n this.createSelectionOfTimeComponentInInput(this.viewValue.length);\n } else if ([UP_ARROW, DOWN_ARROW].includes(keyCode)) {\n event.preventDefault();\n\n this.verticalArrowKeyHandler(keyCode);\n } else if ([LEFT_ARROW, RIGHT_ARROW].includes(keyCode)) {\n this.horizontalArrowKeyHandler(keyCode);\n } else if (/^\\D$/.test(event.key)) {\n event.preventDefault();\n\n const newValue = this.getNewValue(event.key, this.selectionStart as number);\n const formattedValue = this.replaceSymbols(newValue);\n\n if (newValue !== formattedValue) {\n this.setViewValue(formattedValue);\n\n setTimeout(this.onInput);\n } else {\n this.incorrectInput.emit();\n }\n } else {\n setTimeout(this.onInput);\n }\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n this.setControl(control);\n\n return this.validator ? this.validator(control) : null;\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this.validatorOnChange = fn;\n }\n\n writeValue(value: D | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: (value: D) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n private formatUserPaste(value: string) {\n if (value.match(AM_PM_FORMAT_REGEXP)) { return value; }\n\n const match: RegExpMatchArray | null = value.match(\n /^(\\D+)?(?<hours>\\d+)?(\\D+)?(\\D+)?(?<minutes>\\d+)?(\\D+)?(\\D+)?(?<seconds>\\d+)?(\\D+)?$/\n );\n\n if (!match?.groups?.hours) {\n this.setViewValue(value);\n\n return value;\n }\n\n return this.replaceNumbers(Object.values(match.groups)\n // tslint:disable-next-line:no-magic-numbers\n .map((group) => (group || '').padStart(2, '0'))\n .join(':')\n );\n }\n\n private formatUserInput(value: string): string {\n return this.replaceNumbers(this.replaceSymbols(value));\n }\n\n private replaceSymbols(value: string): string {\n let formattedValue: string = value;\n\n const match: RegExpMatchArray | null = value.match(/^(\\d\\d:){0,2}(?<number>[0-9])(?<symbol>\\W)(:\\d\\d){0,2}$/);\n\n if (match?.groups) {\n const { number, symbol } = match.groups;\n\n formattedValue = value.replace(number + symbol, `0${number}`);\n }\n\n return formattedValue;\n }\n\n private replaceNumbers(value: string): string {\n let formattedValue: string = value;\n\n const match: RegExpMatchArray | null = value.match(/^(?<hours>\\d{0,4}):?(?<minutes>\\d{0,4}):?(?<seconds>\\d{0,4})$/);\n\n if (match?.groups) {\n const { hours, minutes, seconds } = match.groups;\n\n if (hours.length && parseInt(hours) > HOURS_PER_DAY) {\n formattedValue = formattedValue.replace(hours, HOURS_PER_DAY.toString());\n }\n\n if (minutes.length && parseInt(minutes) > MINUTES_PER_HOUR) {\n formattedValue = formattedValue.replace(minutes, MINUTES_PER_HOUR.toString());\n }\n\n if (seconds.length && parseInt(seconds) > SECONDS_PER_MINUTE) {\n formattedValue = formattedValue.replace(seconds, SECONDS_PER_MINUTE.toString());\n }\n }\n\n return formattedValue;\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n private isBadInput(): boolean {\n const validity = (<HTMLInputElement> this.elementRef.nativeElement).validity;\n\n return validity && validity.badInput;\n }\n\n private spaceKeyHandler(event: KeyboardEvent) {\n event.preventDefault();\n\n if (this.selectionStart === this.selectionEnd) {\n const value = this.getNewValue(event.key, this.selectionStart as number);\n const formattedValue = this.replaceSymbols(value);\n\n if (value !== formattedValue) {\n this.setViewValue(formattedValue);\n\n setTimeout(this.onInput);\n }\n } else if (this.selectionStart !== this.selectionEnd) {\n\n let cursorPos = this.selectionStart as number;\n\n const nextDividerPos: number = this.viewValue.indexOf(':', cursorPos);\n\n cursorPos = nextDividerPos ? nextDividerPos + 1 : 0;\n\n this.createSelectionOfTimeComponentInInput(cursorPos);\n }\n }\n\n private getNewValue(key: string, position: number) {\n return [this.viewValue.slice(0, position), key, this.viewValue.slice(position)].join('');\n }\n\n private verticalArrowKeyHandler(keyCode: number): void {\n if (!this.value) { return; }\n\n let changedTime;\n\n const newEditParams = this.getTimeEditMetrics(this.selectionStart as number);\n\n if (keyCode === UP_ARROW) {\n changedTime = this.incrementTime(this.value, newEditParams.modifiedTimePart);\n }\n\n if (keyCode === DOWN_ARROW) {\n changedTime = this.decrementTime(this.value, newEditParams.modifiedTimePart);\n }\n\n this.value = changedTime;\n\n this.selectionStart = newEditParams.cursorStartPosition;\n this.selectionEnd = newEditParams.cursorEndPosition;\n\n this.onChange(changedTime);\n this.stateChanges.next();\n }\n\n private horizontalArrowKeyHandler(keyCode: number): void {\n if (!this.value) { return; }\n\n let cursorPos = this.selectionStart as number;\n\n if (keyCode === LEFT_ARROW) {\n cursorPos = cursorPos === 0 ? this.viewValue.length : cursorPos - 1;\n } else if (keyCode === RIGHT_ARROW) {\n const nextDividerPos: number = this.viewValue.indexOf(':', cursorPos);\n\n cursorPos = nextDividerPos ? nextDividerPos + 1 : 0;\n }\n\n this.createSelectionOfTimeComponentInInput(cursorPos);\n }\n\n private createSelectionOfTimeComponentInInput(cursorPos: number): void {\n setTimeout(() => {\n const newEditParams = this.getTimeEditMetrics(cursorPos);\n\n this.selectionStart = newEditParams.cursorStartPosition;\n this.selectionEnd = newEditParams.cursorEndPosition;\n });\n }\n\n private incrementTime(dateVal: D, whatToIncrement: TimeParts = TimeParts.seconds): D {\n let hours = this.dateAdapter.getHours(dateVal);\n let minutes = this.dateAdapter.getMinutes(dateVal);\n let seconds = this.dateAdapter.getSeconds(dateVal);\n\n switch (whatToIncrement) {\n case TimeParts.hours:\n hours++;\n break;\n case TimeParts.minutes:\n minutes++;\n break;\n case TimeParts.seconds:\n seconds++;\n break;\n default:\n }\n\n if (seconds > SECONDS_PER_MINUTE) { seconds = 0; }\n\n if (minutes > MINUTES_PER_HOUR) { minutes = 0; }\n\n if (hours > HOURS_PER_DAY) { hours = 0; }\n\n return this.dateAdapter.createDateTime(\n this.dateAdapter.getYear(this.value),\n this.dateAdapter.getMonth(this.value),\n this.dateAdapter.getDate(this.value),\n hours,\n minutes,\n seconds,\n this.dateAdapter.getMilliseconds(this.value)\n );\n }\n\n private decrementTime(dateVal: D, whatToDecrement: TimeParts = TimeParts.seconds): D {\n let hours = this.dateAdapter.getHours(dateVal);\n let minutes = this.dateAdapter.getMinutes(dateVal);\n let seconds = this.dateAdapter.getSeconds(dateVal);\n\n switch (whatToDecrement) {\n case TimeParts.hours:\n hours--;\n break;\n case TimeParts.minutes:\n minutes--;\n break;\n case TimeParts.seconds:\n seconds--;\n break;\n default:\n }\n\n if (seconds < 0) { seconds = SECONDS_PER_MINUTE; }\n\n if (minutes < 0) { minutes = MINUTES_PER_HOUR; }\n\n if (hours < 0) { hours = HOURS_PER_DAY; }\n\n return this.dateAdapter.createDateTime(\n this.dateAdapter.getYear(this.value),\n this.dateAdapter.getMonth(this.value),\n this.dateAdapter.getDate(this.value),\n hours,\n minutes,\n seconds,\n this.dateAdapter.getMilliseconds(this.value)\n );\n }\n\n /**\n * @description Get params for arrow-keys (up/down) time valie edit.\n * @param cursorPosition Current cursor position in timeString\n */\n private getTimeEditMetrics(cursorPosition: number): {\n modifiedTimePart: TimeParts;\n cursorStartPosition: number;\n cursorEndPosition: number;\n } {\n const timeString: string = this.viewValue;\n let modifiedTimePart: TimeParts;\n let cursorStartPosition: number;\n let cursorEndPosition: number;\n\n const hoursIndex = 0;\n const minutesIndex = timeString.indexOf(':', hoursIndex + 1);\n const secondsIndex = minutesIndex !== -1 ? timeString.indexOf(':', minutesIndex + 1) : -1;\n\n if (secondsIndex !== -1 && cursorPosition > secondsIndex) {\n modifiedTimePart = TimeParts.seconds;\n cursorStartPosition = secondsIndex + 1;\n cursorEndPosition = timeString.length;\n } else if (minutesIndex !== -1 && cursorPosition > minutesIndex) {\n modifiedTimePart = TimeParts.minutes;\n cursorStartPosition = minutesIndex + 1;\n cursorEndPosition = secondsIndex > -1 ? secondsIndex : timeString.length;\n } else {\n modifiedTimePart = TimeParts.hours;\n cursorStartPosition = hoursIndex;\n cursorEndPosition = minutesIndex !== -1 ? minutesIndex : timeString.length;\n }\n\n return { modifiedTimePart, cursorStartPosition, cursorEndPosition };\n }\n\n /**\n * @description Create time string for displaying inside input element of UI\n */\n private getTimeStringFromDate(value: D | null, timeFormat: TimeFormats): string {\n if (!value || !this.dateAdapter.isValid(value)) { return ''; }\n\n return this.dateAdapter.format(value, timeFormat);\n }\n\n private getDateFromTimeString(timeString: string): D | null {\n if (!timeString) { return null; }\n\n const HMS = timeString.match(HOURS_MINUTES_SECONDS_REGEXP);\n const HM = timeString.match(HOURS_MINUTES_REGEXP);\n const H = timeString.match(HOURS_ONLY_REGEXP);\n const amPm = timeString.match(AM_PM_FORMAT_REGEXP);\n\n let hours: number = 0;\n let minutes: number = 0;\n let seconds: number = 0;\n\n // tslint:disable:no-magic-numbers\n if (amPm) {\n hours = Number(amPm[1]);\n minutes = Number(amPm[2]);\n\n if (/[p]/i.test(amPm[3]) || (/[a]/i.test(amPm[3]) && hours === 12)) {\n hours += 12;\n }\n } else if (HMS) {\n hours = Number(HMS[1]);\n minutes = Number(HMS[2]);\n seconds = Number(HMS[3]);\n } else if (HM) {\n hours = Number(HM[1]);\n minutes = Number(HM[2]);\n } else if (H) {\n hours = Number(H[1]);\n } else {\n return null;\n }\n // tslint:enable\n const date = this.value || this.dateAdapter.today();\n\n const resultDate = this.dateAdapter.createDateTime(\n this.dateAdapter.getYear(date),\n this.dateAdapter.getMonth(date),\n this.dateAdapter.getDate(date),\n hours,\n minutes || 0,\n seconds || 0,\n this.dateAdapter.getMilliseconds(date)\n );\n\n return this.getValidDateOrNull(resultDate);\n }\n\n private parseValidator: ValidatorFn = (): ValidationErrors | null => {\n return this.focused ||\n this.empty ||\n this.lastValueValid ? null : { mcTimepickerParse: { text: this.viewValue } };\n }\n\n private minValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const controlValue = this.getValidDateOrNull(this.dateAdapter.deserialize(control.value));\n\n return (!this.min || !controlValue || this.compareTime(this.min, controlValue) <= 0) ?\n null :\n { mcTimepickerLowerThenMin: { min: this.min, actual: controlValue } };\n }\n\n private maxValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const controlValue = this.getValidDateOrNull(this.dateAdapter.deserialize(control.value));\n\n return (!this.max || !controlValue || this.compareTime(this.max, controlValue) >= 0) ?\n null :\n { mcTimepickerHigherThenMax: { max: this.max, actual: controlValue } };\n }\n\n private compareTime(first: D, second: D): number {\n const result = this.dateAdapter.getHours(first) - this.dateAdapter.getHours(second) ||\n this.dateAdapter.getMinutes(first) - this.dateAdapter.getMinutes(second);\n\n if (TimeFormats.HHmm === this.format) {\n return result;\n } else if (TimeFormats.HHmmss === this.format) {\n return result || this.dateAdapter.getSeconds(first) - this.dateAdapter.getSeconds(second);\n } else {\n throw Error(`Unknown format: ${this.format}`);\n }\n }\n\n private getValidDateOrNull(obj: any): D | null {\n return (this.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\n }\n\n private setViewValue(value: string) {\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', value);\n }\n\n private updateView() {\n const formattedValue = this.getTimeStringFromDate(this.value, this.format);\n\n this.setViewValue(formattedValue);\n }\n\n private setControl(control: AbstractControl) {\n if (!this.control) {\n this.control = control;\n }\n }\n\n // tslint:disable-next-line:no-empty\n private validatorOnChange = () => {};\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { McTimepicker } from './timepicker.directive';\n\n\n@NgModule({\n imports: [\n CommonModule,\n A11yModule,\n PlatformModule,\n FormsModule\n ],\n declarations: [McTimepicker],\n exports: [McTimepicker]\n})\nexport class McTimepickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["TimeParts","TimeFormats","NG_VALUE_ACCESSOR","forwardRef","NG_VALIDATORS","Subject","EventEmitter","Validators","noop","coerceBooleanProperty","validationTooltipShowDelay","validationTooltipHideDelay","isLetterKey","hasModifierKey","isVerticalMovement","isHorizontalMovement","DELETE","BACKSPACE","TAB","SPACE","HOME","PAGE_UP","END","PAGE_DOWN","UP_ARROW","DOWN_ARROW","LEFT_ARROW","RIGHT_ARROW","Directive","McFormFieldControl","ElementRef","Renderer2","DateAdapter","Optional","Input","Output","NgModule","CommonModule","A11yModule","PlatformModule","FormsModule"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/cdk/a11y"),require("@angular/cdk/platform"),require("@angular/common"),require("@angular/core"),require("@angular/forms"),require("@angular/cdk/coercion"),require("@ptsecurity/cdk/datetime"),require("@ptsecurity/cdk/keycodes"),require("@ptsecurity/mosaic/core"),require("@ptsecurity/mosaic/form-field"),require("rxjs")):"function"==typeof define&&define.amd?define("@ptsecurity/mosaic/timepicker",["exports","@angular/cdk/a11y","@angular/cdk/platform","@angular/common","@angular/core","@angular/forms","@angular/cdk/coercion","@ptsecurity/cdk/datetime","@ptsecurity/cdk/keycodes","@ptsecurity/mosaic/core","@ptsecurity/mosaic/form-field","rxjs"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).ptsecurity=e.ptsecurity||{},e.ptsecurity.mosaic=e.ptsecurity.mosaic||{},e.ptsecurity.mosaic.timepicker={}),e.ng.cdk.a11y,e.ng.cdk.platform,e.ng.common,e.ng.core,e.ng.forms,e.ng.cdk.coercion,e.mc.cdk.datetime,e.mc.cdk.keycodes,e.ptsecurity.mosaic.core,e.ptsecurity.mosaic["form-field"],e.rxjs)}(this,(function(e,t,i,r,n,o,a,s,u,l,c,d){"use strict";var p,m,h;e.TimeParts=void 0,(m=e.TimeParts||(e.TimeParts={}))[m.hours=0]="hours",m[m.minutes=1]="minutes",m[m.seconds=2]="seconds",e.TimeFormats=void 0,(h=e.TimeFormats||(e.TimeFormats={})).HHmmss="HH:mm:ss",h.HHmm="HH:mm";var f=((p={})[e.TimeFormats.HHmmss]="чч:мм:сс",p[e.TimeFormats.HHmm]="чч:мм",p),g=e.TimeFormats.HHmm,y=/^([0-1][0-9]|2[0-3]):?([0-5][0-9]):?([0-5][0-9])?$/,v=/^([0-1][0-9]|2[0-3]):?([0-5][0-9])?$/,T=/^([0-1][0-9]|2[0-3]):?$/,b=/^([0-1]?[0-9]):([0-5]?[0-9]) ([ap][m]?$)/i,O={provide:o.NG_VALUE_ACCESSOR,useExisting:n.forwardRef((function(){return P})),multi:!0},A={provide:o.NG_VALIDATORS,useExisting:n.forwardRef((function(){return P})),multi:!0},E=0,P=function(){function t(e,t,i){var r=this;if(this.elementRef=e,this.renderer=t,this.dateAdapter=i,this.stateChanges=new d.Subject,this.focused=!1,this.controlType="timepicker",this._placeholder=f[g],this._format=g,this._min=null,this._max=null,this.incorrectInput=new n.EventEmitter,this.uid="mc-timepicker-"+E++,this.lastValueValid=!1,this.defaultPlaceholder=!0,this.onInput=function(){var e=r.formatUserInput(r.viewValue),t=r.getDateFromTimeString(e);if(r.lastValueValid=!!t,t){var i=r.selectionStart,n=r.selectionEnd;r.setViewValue(r.getTimeStringFromDate(t,r.format)),r.selectionStart=i,r.selectionEnd=n,r.createSelectionOfTimeComponentInInput(i+1),r.value=t,r.onChange(t),r.stateChanges.next()}else r.onChange(null)},this.parseValidator=function(){return r.focused||r.empty||r.lastValueValid?null:{mcTimepickerParse:{text:r.viewValue}}},this.minValidator=function(e){var t=r.getValidDateOrNull(r.dateAdapter.deserialize(e.value));return!r.min||!t||r.compareTime(r.min,t)<=0?null:{mcTimepickerLowerThenMin:{min:r.min,actual:t}}},this.maxValidator=function(e){var t=r.getValidDateOrNull(r.dateAdapter.deserialize(e.value));return!r.max||!t||r.compareTime(r.max,t)>=0?null:{mcTimepickerHigherThenMax:{max:r.max,actual:t}}},this.validatorOnChange=function(){},!this.dateAdapter)throw Error("McTimepicker: No provider found for DateAdapter. You must import one of the existing modules at your application root or provide a custom implementation or use exists ones.");this.validator=o.Validators.compose([this.parseValidator,this.minValidator,this.maxValidator]),this.onChange=d.noop,this.id=this.id}return Object.defineProperty(t.prototype,"placeholder",{get:function(){return this._placeholder},set:function(e){this._placeholder=e,this.defaultPlaceholder=!1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"disabled",{get:function(){return this._disabled},set:function(e){this._disabled=a.coerceBooleanProperty(e),this.focused&&(this.focused=!1),this.stateChanges.next()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"id",{get:function(){return this._id},set:function(e){this._id=e||this.uid},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"required",{get:function(){return this._required},set:function(e){this._required=a.coerceBooleanProperty(e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"format",{get:function(){return this._format},set:function(t){this._format=Object.keys(e.TimeFormats).map((function(t){return e.TimeFormats[t]})).indexOf(t)>-1?t:g,this.defaultPlaceholder&&(this._placeholder=f[this._format]),this.value&&this.updateView()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"min",{get:function(){return this._min},set:function(e){this._min=this.getValidDateOrNull(this.dateAdapter.deserialize(e)),this.validatorOnChange()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"max",{get:function(){return this._max},set:function(e){this._max=this.getValidDateOrNull(this.dateAdapter.deserialize(e)),this.validatorOnChange()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"value",{get:function(){return this._value},set:function(e){var t=this.dateAdapter.deserialize(e);this.lastValueValid=!t||this.dateAdapter.isValid(t),this._value=this.getValidDateOrNull(t),this.updateView()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"mcValidationTooltip",{set:function(e){e&&(e.mcMouseEnterDelay=l.validationTooltipShowDelay,e.mcTrigger="manual",e.mcTooltipClass="mc-tooltip_warning",e.initElementRefListeners(),this.incorrectInput.subscribe((function(){e.isTooltipOpen||(e.show(),setTimeout((function(){return e.hide()}),l.validationTooltipHideDelay))})))},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hasSelection",{get:function(){return this.selectionStart!==this.selectionEnd},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isFullFormat",{get:function(){return this.format===e.TimeFormats.HHmmss},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isShortFormat",{get:function(){return this.format===e.TimeFormats.HHmm},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"viewValue",{get:function(){return this.elementRef.nativeElement.value},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"ngControl",{get:function(){return this.control},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"empty",{get:function(){return!this.viewValue&&!this.isBadInput()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"selectionStart",{get:function(){return this.elementRef.nativeElement.selectionStart},set:function(e){this.elementRef.nativeElement.selectionStart=e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"selectionEnd",{get:function(){return this.elementRef.nativeElement.selectionEnd},set:function(e){this.elementRef.nativeElement.selectionEnd=e},enumerable:!1,configurable:!0}),t.prototype.ngOnDestroy=function(){this.stateChanges.complete()},t.prototype.getSize=function(){return this.isFullFormat?8:5},t.prototype.focus=function(){this.elementRef.nativeElement.focus()},t.prototype.focusChanged=function(e){e!==this.focused&&(this.focused=e,this.onTouched(),this.stateChanges.next())},t.prototype.onBlur=function(){this.focusChanged(!1),this.onInput()},t.prototype.onPaste=function(e){e.preventDefault();var t=this.formatUserPaste(e.clipboardData.getData("text")),i=this.getDateFromTimeString(t);i&&(this.setViewValue(this.getTimeStringFromDate(i,this.format)),this.value=i,this.onChange(i),this.stateChanges.next())},t.prototype.onContainerClick=function(){this.focus()},t.prototype.onKeyDown=function(e){var t=e.keyCode;if(!u.isLetterKey(e)||e.ctrlKey||e.metaKey)if(u.hasModifierKey(e)&&(u.isVerticalMovement(t)||u.isHorizontalMovement(t))||e.ctrlKey||e.metaKey||[u.DELETE,u.BACKSPACE,u.TAB].includes(t))d.noop();else if(t===u.SPACE)this.spaceKeyHandler(e);else if([u.HOME,u.PAGE_UP].includes(t))this.createSelectionOfTimeComponentInInput(0);else if([u.END,u.PAGE_DOWN].includes(t))this.createSelectionOfTimeComponentInInput(this.viewValue.length);else if([u.UP_ARROW,u.DOWN_ARROW].includes(t))e.preventDefault(),this.verticalArrowKeyHandler(t);else if([u.LEFT_ARROW,u.RIGHT_ARROW].includes(t))this.horizontalArrowKeyHandler(t);else if(/^\D$/.test(e.key)){e.preventDefault();var i=this.getNewValue(e.key,this.selectionStart),r=this.replaceSymbols(i);i!==r?(this.setViewValue(r),setTimeout(this.onInput)):this.incorrectInput.emit()}else setTimeout(this.onInput);else e.preventDefault(),this.incorrectInput.emit()},t.prototype.validate=function(e){return this.setControl(e),this.validator?this.validator(e):null},t.prototype.registerOnValidatorChange=function(e){this.validatorOnChange=e},t.prototype.writeValue=function(e){this.value=e},t.prototype.registerOnChange=function(e){this.onChange=e},t.prototype.registerOnTouched=function(e){this.onTouched=e},t.prototype.setDisabledState=function(e){this.disabled=e},t.prototype.formatUserPaste=function(e){var t;if(e.match(b))return e;var i=e.match(/^(\D+)?(?<hours>\d+)?(\D+)?(\D+)?(?<minutes>\d+)?(\D+)?(\D+)?(?<seconds>\d+)?(\D+)?$/);return(null===(t=null==i?void 0:i.groups)||void 0===t?void 0:t.hours)?this.replaceNumbers(Object.values(i.groups).map((function(e){return(e||"").padStart(2,"0")})).join(":")):(this.setViewValue(e),e)},t.prototype.formatUserInput=function(e){return this.replaceNumbers(this.replaceSymbols(e))},t.prototype.replaceSymbols=function(e){var t=e,i=e.match(/^(\d\d:){0,2}(?<number>[0-9])(?<symbol>\W)(:\d\d){0,2}$/);if(null==i?void 0:i.groups){var r=i.groups,n=r.number,o=r.symbol;t=e.replace(n+o,"0"+n)}return t},t.prototype.replaceNumbers=function(e){var t=e,i=e.match(/^(?<hours>\d{0,4}):?(?<minutes>\d{0,4}):?(?<seconds>\d{0,4})$/);if(null==i?void 0:i.groups){var r=i.groups,n=r.hours,o=r.minutes,a=r.seconds;n.length&&parseInt(n)>23&&(t=t.replace(n,23..toString())),o.length&&parseInt(o)>59&&(t=t.replace(o,59..toString())),a.length&&parseInt(a)>59&&(t=t.replace(a,59..toString()))}return t},t.prototype.isBadInput=function(){var e=this.elementRef.nativeElement.validity;return e&&e.badInput},t.prototype.spaceKeyHandler=function(e){if(e.preventDefault(),this.selectionStart===this.selectionEnd){var t=this.getNewValue(e.key,this.selectionStart),i=this.replaceSymbols(t);t!==i&&(this.setViewValue(i),setTimeout(this.onInput))}else if(this.selectionStart!==this.selectionEnd){var r=this.selectionStart,n=this.viewValue.indexOf(":",r);r=n?n+1:0,this.createSelectionOfTimeComponentInInput(r)}},t.prototype.getNewValue=function(e,t){return[this.viewValue.slice(0,t),e,this.viewValue.slice(t)].join("")},t.prototype.verticalArrowKeyHandler=function(e){if(this.value){var t,i=this.getTimeEditMetrics(this.selectionStart);e===u.UP_ARROW&&(t=this.incrementTime(this.value,i.modifiedTimePart)),e===u.DOWN_ARROW&&(t=this.decrementTime(this.value,i.modifiedTimePart)),this.value=t,this.selectionStart=i.cursorStartPosition,this.selectionEnd=i.cursorEndPosition,this.onChange(t),this.stateChanges.next()}},t.prototype.horizontalArrowKeyHandler=function(e){if(this.value){var t=this.selectionStart;if(e===u.LEFT_ARROW)t=0===t?this.viewValue.length:t-1;else if(e===u.RIGHT_ARROW){var i=this.viewValue.indexOf(":",t);t=i?i+1:0}this.createSelectionOfTimeComponentInInput(t)}},t.prototype.createSelectionOfTimeComponentInInput=function(e){var t=this;setTimeout((function(){var i=t.getTimeEditMetrics(e);t.selectionStart=i.cursorStartPosition,t.selectionEnd=i.cursorEndPosition}))},t.prototype.incrementTime=function(t,i){void 0===i&&(i=e.TimeParts.seconds);var r=this.dateAdapter.getHours(t),n=this.dateAdapter.getMinutes(t),o=this.dateAdapter.getSeconds(t);switch(i){case e.TimeParts.hours:r++;break;case e.TimeParts.minutes:n++;break;case e.TimeParts.seconds:o++}return o>59&&(o=0),n>59&&(n=0),r>23&&(r=0),this.dateAdapter.createDateTime(this.dateAdapter.getYear(this.value),this.dateAdapter.getMonth(this.value),this.dateAdapter.getDate(this.value),r,n,o,this.dateAdapter.getMilliseconds(this.value))},t.prototype.decrementTime=function(t,i){void 0===i&&(i=e.TimeParts.seconds);var r=this.dateAdapter.getHours(t),n=this.dateAdapter.getMinutes(t),o=this.dateAdapter.getSeconds(t);switch(i){case e.TimeParts.hours:r--;break;case e.TimeParts.minutes:n--;break;case e.TimeParts.seconds:o--}return o<0&&(o=59),n<0&&(n=59),r<0&&(r=23),this.dateAdapter.createDateTime(this.dateAdapter.getYear(this.value),this.dateAdapter.getMonth(this.value),this.dateAdapter.getDate(this.value),r,n,o,this.dateAdapter.getMilliseconds(this.value))},t.prototype.getTimeEditMetrics=function(t){var i,r,n,o=this.viewValue,a=o.indexOf(":",1),s=-1!==a?o.indexOf(":",a+1):-1;return-1!==s&&t>s?(i=e.TimeParts.seconds,r=s+1,n=o.length):-1!==a&&t>a?(i=e.TimeParts.minutes,r=a+1,n=s>-1?s:o.length):(i=e.TimeParts.hours,r=0,n=-1!==a?a:o.length),{modifiedTimePart:i,cursorStartPosition:r,cursorEndPosition:n}},t.prototype.getTimeStringFromDate=function(e,t){return e&&this.dateAdapter.isValid(e)?this.dateAdapter.format(e,t):""},t.prototype.getDateFromTimeString=function(e){if(!e)return null;var t=e.match(y),i=e.match(v),r=e.match(T),n=e.match(b),o=0,a=0,s=0;if(n)o=Number(n[1]),a=Number(n[2]),(/[p]/i.test(n[3])||/[a]/i.test(n[3])&&12===o)&&(o+=12);else if(t)o=Number(t[1]),a=Number(t[2]),s=Number(t[3]);else if(i)o=Number(i[1]),a=Number(i[2]);else{if(!r)return null;o=Number(r[1])}var u=this.dateAdapter.createDateTime(this.dateAdapter.getYear(this.value),this.dateAdapter.getMonth(this.value),this.dateAdapter.getDate(this.value),o,a||0,s||0,this.dateAdapter.getMilliseconds(this.value));return this.getValidDateOrNull(u)},t.prototype.compareTime=function(t,i){var r=this.dateAdapter.getHours(t)-this.dateAdapter.getHours(i)||this.dateAdapter.getMinutes(t)-this.dateAdapter.getMinutes(i);if(e.TimeFormats.HHmm===this.format)return r;if(e.TimeFormats.HHmmss===this.format)return r||this.dateAdapter.getSeconds(t)-this.dateAdapter.getSeconds(i);throw Error("Unknown format: "+this.format)},t.prototype.getValidDateOrNull=function(e){return this.dateAdapter.isDateInstance(e)&&this.dateAdapter.isValid(e)?e:null},t.prototype.setViewValue=function(e){this.renderer.setProperty(this.elementRef.nativeElement,"value",e)},t.prototype.updateView=function(){var e=this.getTimeStringFromDate(this.value,this.format);this.setViewValue(e)},t.prototype.setControl=function(e){this.control||(this.control=e)},t}();P.decorators=[{type:n.Directive,args:[{selector:"input[mcTimepicker]",exportAs:"mcTimepicker",host:{class:"mc-input mc-timepicker","[attr.id]":"id","[attr.placeholder]":"placeholder","[attr.disabled]":"disabled || null","[attr.required]":"required","[attr.size]":"getSize()","[attr.autocomplete]":'"off"',"(blur)":"onBlur()","(focus)":"focusChanged(true)","(paste)":"onPaste($event)","(keydown)":"onKeyDown($event)"},providers:[A,O,{provide:c.McFormFieldControl,useExisting:P}]}]}],P.ctorParameters=function(){return[{type:n.ElementRef},{type:n.Renderer2},{type:s.DateAdapter,decorators:[{type:n.Optional}]}]},P.propDecorators={placeholder:[{type:n.Input}],disabled:[{type:n.Input}],id:[{type:n.Input}],required:[{type:n.Input}],format:[{type:n.Input}],min:[{type:n.Input}],max:[{type:n.Input}],value:[{type:n.Input}],mcValidationTooltip:[{type:n.Input}],incorrectInput:[{type:n.Output}]};var S=function(){};S.decorators=[{type:n.NgModule,args:[{imports:[r.CommonModule,t.A11yModule,i.PlatformModule,o.FormsModule],declarations:[P],exports:[P]}]}],e.AM_PM_FORMAT_REGEXP=b,e.DEFAULT_TIME_FORMAT=g,e.HOURS_MINUTES_REGEXP=v,e.HOURS_MINUTES_SECONDS_REGEXP=y,e.HOURS_ONLY_REGEXP=T,e.HOURS_PER_DAY=23,e.MC_TIMEPICKER_VALIDATORS=A,e.MC_TIMEPICKER_VALUE_ACCESSOR=O,e.MINUTES_PER_HOUR=59,e.McTimepicker=P,e.McTimepickerModule=S,e.SECONDS_PER_MINUTE=59,e.TIMEFORMAT_PLACEHOLDERS=f,Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/cdk/a11y"),require("@angular/cdk/platform"),require("@angular/common"),require("@angular/core"),require("@angular/forms"),require("@angular/cdk/coercion"),require("@ptsecurity/cdk/datetime"),require("@ptsecurity/cdk/keycodes"),require("@ptsecurity/mosaic/core"),require("@ptsecurity/mosaic/form-field"),require("rxjs")):"function"==typeof define&&define.amd?define("@ptsecurity/mosaic/timepicker",["exports","@angular/cdk/a11y","@angular/cdk/platform","@angular/common","@angular/core","@angular/forms","@angular/cdk/coercion","@ptsecurity/cdk/datetime","@ptsecurity/cdk/keycodes","@ptsecurity/mosaic/core","@ptsecurity/mosaic/form-field","rxjs"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).ptsecurity=e.ptsecurity||{},e.ptsecurity.mosaic=e.ptsecurity.mosaic||{},e.ptsecurity.mosaic.timepicker={}),e.ng.cdk.a11y,e.ng.cdk.platform,e.ng.common,e.ng.core,e.ng.forms,e.ng.cdk.coercion,e.mc.cdk.datetime,e.mc.cdk.keycodes,e.ptsecurity.mosaic.core,e.ptsecurity.mosaic["form-field"],e.rxjs)}(this,(function(e,t,i,r,n,o,a,s,u,l,c,d){"use strict";var p,m,h;e.TimeParts=void 0,(m=e.TimeParts||(e.TimeParts={}))[m.hours=0]="hours",m[m.minutes=1]="minutes",m[m.seconds=2]="seconds",e.TimeFormats=void 0,(h=e.TimeFormats||(e.TimeFormats={})).HHmmss="HH:mm:ss",h.HHmm="HH:mm";var f=((p={})[e.TimeFormats.HHmmss]="чч:мм:сс",p[e.TimeFormats.HHmm]="чч:мм",p),g=e.TimeFormats.HHmm,y=/^([0-1][0-9]|2[0-3]):?([0-5][0-9]):?([0-5][0-9])?$/,v=/^([0-1][0-9]|2[0-3]):?([0-5][0-9])?$/,T=/^([0-1][0-9]|2[0-3]):?$/,b=/^([0-1]?[0-9]):([0-5]?[0-9]) ([ap][m]?$)/i,A={provide:o.NG_VALUE_ACCESSOR,useExisting:n.forwardRef((function(){return P})),multi:!0},O={provide:o.NG_VALIDATORS,useExisting:n.forwardRef((function(){return P})),multi:!0},E=0,P=function(){function t(e,t,i){var r=this;if(this.elementRef=e,this.renderer=t,this.dateAdapter=i,this.stateChanges=new d.Subject,this.focused=!1,this.controlType="timepicker",this._placeholder=f[g],this._format=g,this._min=null,this._max=null,this.incorrectInput=new n.EventEmitter,this.uid="mc-timepicker-"+E++,this.lastValueValid=!1,this.defaultPlaceholder=!0,this.onInput=function(){var e=r.formatUserInput(r.viewValue),t=r.getDateFromTimeString(e);if(r.lastValueValid=!!t,t){var i=r.selectionStart,n=r.selectionEnd;r.setViewValue(r.getTimeStringFromDate(t,r.format)),r.selectionStart=i,r.selectionEnd=n,r.createSelectionOfTimeComponentInInput(i+1),r.value=t,r.onChange(t),r.stateChanges.next()}else r.onChange(null)},this.parseValidator=function(){return r.focused||r.empty||r.lastValueValid?null:{mcTimepickerParse:{text:r.viewValue}}},this.minValidator=function(e){var t=r.getValidDateOrNull(r.dateAdapter.deserialize(e.value));return!r.min||!t||r.compareTime(r.min,t)<=0?null:{mcTimepickerLowerThenMin:{min:r.min,actual:t}}},this.maxValidator=function(e){var t=r.getValidDateOrNull(r.dateAdapter.deserialize(e.value));return!r.max||!t||r.compareTime(r.max,t)>=0?null:{mcTimepickerHigherThenMax:{max:r.max,actual:t}}},this.validatorOnChange=function(){},!this.dateAdapter)throw Error("McTimepicker: No provider found for DateAdapter. You must import one of the existing modules at your application root or provide a custom implementation or use exists ones.");this.validator=o.Validators.compose([this.parseValidator,this.minValidator,this.maxValidator]),this.onChange=d.noop,this.id=this.id}return Object.defineProperty(t.prototype,"placeholder",{get:function(){return this._placeholder},set:function(e){this._placeholder=e,this.defaultPlaceholder=!1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"disabled",{get:function(){return this._disabled},set:function(e){this._disabled=a.coerceBooleanProperty(e),this.focused&&(this.focused=!1),this.stateChanges.next()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"id",{get:function(){return this._id},set:function(e){this._id=e||this.uid},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"required",{get:function(){return this._required},set:function(e){this._required=a.coerceBooleanProperty(e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"format",{get:function(){return this._format},set:function(t){this._format=Object.keys(e.TimeFormats).map((function(t){return e.TimeFormats[t]})).indexOf(t)>-1?t:g,this.defaultPlaceholder&&(this._placeholder=f[this._format]),this.value&&this.updateView()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"min",{get:function(){return this._min},set:function(e){this._min=this.getValidDateOrNull(this.dateAdapter.deserialize(e)),this.validatorOnChange()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"max",{get:function(){return this._max},set:function(e){this._max=this.getValidDateOrNull(this.dateAdapter.deserialize(e)),this.validatorOnChange()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"value",{get:function(){return this._value},set:function(e){var t=this.dateAdapter.deserialize(e);this.lastValueValid=!t||this.dateAdapter.isValid(t),this._value=this.getValidDateOrNull(t),this.updateView()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"mcValidationTooltip",{set:function(e){e&&(e.mcMouseEnterDelay=l.validationTooltipShowDelay,e.mcTrigger="manual",e.mcTooltipClass="mc-tooltip_warning",e.initElementRefListeners(),this.incorrectInput.subscribe((function(){e.isTooltipOpen||(e.show(),setTimeout((function(){return e.hide()}),l.validationTooltipHideDelay))})))},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hasSelection",{get:function(){return this.selectionStart!==this.selectionEnd},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isFullFormat",{get:function(){return this.format===e.TimeFormats.HHmmss},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isShortFormat",{get:function(){return this.format===e.TimeFormats.HHmm},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"viewValue",{get:function(){return this.elementRef.nativeElement.value},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"ngControl",{get:function(){return this.control},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"empty",{get:function(){return!this.viewValue&&!this.isBadInput()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"selectionStart",{get:function(){return this.elementRef.nativeElement.selectionStart},set:function(e){this.elementRef.nativeElement.selectionStart=e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"selectionEnd",{get:function(){return this.elementRef.nativeElement.selectionEnd},set:function(e){this.elementRef.nativeElement.selectionEnd=e},enumerable:!1,configurable:!0}),t.prototype.ngOnDestroy=function(){this.stateChanges.complete()},t.prototype.getSize=function(){return this.isFullFormat?8:5},t.prototype.focus=function(){this.elementRef.nativeElement.focus()},t.prototype.focusChanged=function(e){e!==this.focused&&(this.focused=e,this.onTouched(),this.stateChanges.next())},t.prototype.onBlur=function(){this.focusChanged(!1),this.onInput()},t.prototype.onPaste=function(e){e.preventDefault();var t=this.formatUserPaste(e.clipboardData.getData("text")),i=this.getDateFromTimeString(t);i&&(this.setViewValue(this.getTimeStringFromDate(i,this.format)),this.value=i,this.onChange(i),this.stateChanges.next())},t.prototype.onContainerClick=function(){this.focus()},t.prototype.onKeyDown=function(e){var t=e.keyCode;if(!u.isLetterKey(e)||e.ctrlKey||e.metaKey)if(u.hasModifierKey(e)&&(u.isVerticalMovement(t)||u.isHorizontalMovement(t))||e.ctrlKey||e.metaKey||[u.DELETE,u.BACKSPACE,u.TAB].includes(t))d.noop();else if(t===u.SPACE)this.spaceKeyHandler(e);else if([u.HOME,u.PAGE_UP].includes(t))this.createSelectionOfTimeComponentInInput(0);else if([u.END,u.PAGE_DOWN].includes(t))this.createSelectionOfTimeComponentInInput(this.viewValue.length);else if([u.UP_ARROW,u.DOWN_ARROW].includes(t))e.preventDefault(),this.verticalArrowKeyHandler(t);else if([u.LEFT_ARROW,u.RIGHT_ARROW].includes(t))this.horizontalArrowKeyHandler(t);else if(/^\D$/.test(e.key)){e.preventDefault();var i=this.getNewValue(e.key,this.selectionStart),r=this.replaceSymbols(i);i!==r?(this.setViewValue(r),setTimeout(this.onInput)):this.incorrectInput.emit()}else setTimeout(this.onInput);else e.preventDefault(),this.incorrectInput.emit()},t.prototype.validate=function(e){return this.setControl(e),this.validator?this.validator(e):null},t.prototype.registerOnValidatorChange=function(e){this.validatorOnChange=e},t.prototype.writeValue=function(e){this.value=e},t.prototype.registerOnChange=function(e){this.onChange=e},t.prototype.registerOnTouched=function(e){this.onTouched=e},t.prototype.setDisabledState=function(e){this.disabled=e},t.prototype.formatUserPaste=function(e){var t;if(e.match(b))return e;var i=e.match(/^(\D+)?(?<hours>\d+)?(\D+)?(\D+)?(?<minutes>\d+)?(\D+)?(\D+)?(?<seconds>\d+)?(\D+)?$/);return(null===(t=null==i?void 0:i.groups)||void 0===t?void 0:t.hours)?this.replaceNumbers(Object.values(i.groups).map((function(e){return(e||"").padStart(2,"0")})).join(":")):(this.setViewValue(e),e)},t.prototype.formatUserInput=function(e){return this.replaceNumbers(this.replaceSymbols(e))},t.prototype.replaceSymbols=function(e){var t=e,i=e.match(/^(\d\d:){0,2}(?<number>[0-9])(?<symbol>\W)(:\d\d){0,2}$/);if(null==i?void 0:i.groups){var r=i.groups,n=r.number,o=r.symbol;t=e.replace(n+o,"0"+n)}return t},t.prototype.replaceNumbers=function(e){var t=e,i=e.match(/^(?<hours>\d{0,4}):?(?<minutes>\d{0,4}):?(?<seconds>\d{0,4})$/);if(null==i?void 0:i.groups){var r=i.groups,n=r.hours,o=r.minutes,a=r.seconds;n.length&&parseInt(n)>23&&(t=t.replace(n,23..toString())),o.length&&parseInt(o)>59&&(t=t.replace(o,59..toString())),a.length&&parseInt(a)>59&&(t=t.replace(a,59..toString()))}return t},t.prototype.isBadInput=function(){var e=this.elementRef.nativeElement.validity;return e&&e.badInput},t.prototype.spaceKeyHandler=function(e){if(e.preventDefault(),this.selectionStart===this.selectionEnd){var t=this.getNewValue(e.key,this.selectionStart),i=this.replaceSymbols(t);t!==i&&(this.setViewValue(i),setTimeout(this.onInput))}else if(this.selectionStart!==this.selectionEnd){var r=this.selectionStart,n=this.viewValue.indexOf(":",r);r=n?n+1:0,this.createSelectionOfTimeComponentInInput(r)}},t.prototype.getNewValue=function(e,t){return[this.viewValue.slice(0,t),e,this.viewValue.slice(t)].join("")},t.prototype.verticalArrowKeyHandler=function(e){if(this.value){var t,i=this.getTimeEditMetrics(this.selectionStart);e===u.UP_ARROW&&(t=this.incrementTime(this.value,i.modifiedTimePart)),e===u.DOWN_ARROW&&(t=this.decrementTime(this.value,i.modifiedTimePart)),this.value=t,this.selectionStart=i.cursorStartPosition,this.selectionEnd=i.cursorEndPosition,this.onChange(t),this.stateChanges.next()}},t.prototype.horizontalArrowKeyHandler=function(e){if(this.value){var t=this.selectionStart;if(e===u.LEFT_ARROW)t=0===t?this.viewValue.length:t-1;else if(e===u.RIGHT_ARROW){var i=this.viewValue.indexOf(":",t);t=i?i+1:0}this.createSelectionOfTimeComponentInInput(t)}},t.prototype.createSelectionOfTimeComponentInInput=function(e){var t=this;setTimeout((function(){var i=t.getTimeEditMetrics(e);t.selectionStart=i.cursorStartPosition,t.selectionEnd=i.cursorEndPosition}))},t.prototype.incrementTime=function(t,i){void 0===i&&(i=e.TimeParts.seconds);var r=this.dateAdapter.getHours(t),n=this.dateAdapter.getMinutes(t),o=this.dateAdapter.getSeconds(t);switch(i){case e.TimeParts.hours:r++;break;case e.TimeParts.minutes:n++;break;case e.TimeParts.seconds:o++}return o>59&&(o=0),n>59&&(n=0),r>23&&(r=0),this.dateAdapter.createDateTime(this.dateAdapter.getYear(this.value),this.dateAdapter.getMonth(this.value),this.dateAdapter.getDate(this.value),r,n,o,this.dateAdapter.getMilliseconds(this.value))},t.prototype.decrementTime=function(t,i){void 0===i&&(i=e.TimeParts.seconds);var r=this.dateAdapter.getHours(t),n=this.dateAdapter.getMinutes(t),o=this.dateAdapter.getSeconds(t);switch(i){case e.TimeParts.hours:r--;break;case e.TimeParts.minutes:n--;break;case e.TimeParts.seconds:o--}return o<0&&(o=59),n<0&&(n=59),r<0&&(r=23),this.dateAdapter.createDateTime(this.dateAdapter.getYear(this.value),this.dateAdapter.getMonth(this.value),this.dateAdapter.getDate(this.value),r,n,o,this.dateAdapter.getMilliseconds(this.value))},t.prototype.getTimeEditMetrics=function(t){var i,r,n,o=this.viewValue,a=o.indexOf(":",1),s=-1!==a?o.indexOf(":",a+1):-1;return-1!==s&&t>s?(i=e.TimeParts.seconds,r=s+1,n=o.length):-1!==a&&t>a?(i=e.TimeParts.minutes,r=a+1,n=s>-1?s:o.length):(i=e.TimeParts.hours,r=0,n=-1!==a?a:o.length),{modifiedTimePart:i,cursorStartPosition:r,cursorEndPosition:n}},t.prototype.getTimeStringFromDate=function(e,t){return e&&this.dateAdapter.isValid(e)?this.dateAdapter.format(e,t):""},t.prototype.getDateFromTimeString=function(e){if(!e)return null;var t=e.match(y),i=e.match(v),r=e.match(T),n=e.match(b),o=0,a=0,s=0;if(n)o=Number(n[1]),a=Number(n[2]),(/[p]/i.test(n[3])||/[a]/i.test(n[3])&&12===o)&&(o+=12);else if(t)o=Number(t[1]),a=Number(t[2]),s=Number(t[3]);else if(i)o=Number(i[1]),a=Number(i[2]);else{if(!r)return null;o=Number(r[1])}var u=this.value||this.dateAdapter.today(),l=this.dateAdapter.createDateTime(this.dateAdapter.getYear(u),this.dateAdapter.getMonth(u),this.dateAdapter.getDate(u),o,a||0,s||0,this.dateAdapter.getMilliseconds(u));return this.getValidDateOrNull(l)},t.prototype.compareTime=function(t,i){var r=this.dateAdapter.getHours(t)-this.dateAdapter.getHours(i)||this.dateAdapter.getMinutes(t)-this.dateAdapter.getMinutes(i);if(e.TimeFormats.HHmm===this.format)return r;if(e.TimeFormats.HHmmss===this.format)return r||this.dateAdapter.getSeconds(t)-this.dateAdapter.getSeconds(i);throw Error("Unknown format: "+this.format)},t.prototype.getValidDateOrNull=function(e){return this.dateAdapter.isDateInstance(e)&&this.dateAdapter.isValid(e)?e:null},t.prototype.setViewValue=function(e){this.renderer.setProperty(this.elementRef.nativeElement,"value",e)},t.prototype.updateView=function(){var e=this.getTimeStringFromDate(this.value,this.format);this.setViewValue(e)},t.prototype.setControl=function(e){this.control||(this.control=e)},t}();P.decorators=[{type:n.Directive,args:[{selector:"input[mcTimepicker]",exportAs:"mcTimepicker",host:{class:"mc-input mc-timepicker","[attr.id]":"id","[attr.placeholder]":"placeholder","[attr.disabled]":"disabled || null","[attr.required]":"required","[attr.size]":"getSize()","[attr.autocomplete]":'"off"',"(blur)":"onBlur()","(focus)":"focusChanged(true)","(paste)":"onPaste($event)","(keydown)":"onKeyDown($event)"},providers:[O,A,{provide:c.McFormFieldControl,useExisting:P}]}]}],P.ctorParameters=function(){return[{type:n.ElementRef},{type:n.Renderer2},{type:s.DateAdapter,decorators:[{type:n.Optional}]}]},P.propDecorators={placeholder:[{type:n.Input}],disabled:[{type:n.Input}],id:[{type:n.Input}],required:[{type:n.Input}],format:[{type:n.Input}],min:[{type:n.Input}],max:[{type:n.Input}],value:[{type:n.Input}],mcValidationTooltip:[{type:n.Input}],incorrectInput:[{type:n.Output}]};var S=function(){};S.decorators=[{type:n.NgModule,args:[{imports:[r.CommonModule,t.A11yModule,i.PlatformModule,o.FormsModule],declarations:[P],exports:[P]}]}],e.AM_PM_FORMAT_REGEXP=b,e.DEFAULT_TIME_FORMAT=g,e.HOURS_MINUTES_REGEXP=v,e.HOURS_MINUTES_SECONDS_REGEXP=y,e.HOURS_ONLY_REGEXP=T,e.HOURS_PER_DAY=23,e.MC_TIMEPICKER_VALIDATORS=O,e.MC_TIMEPICKER_VALUE_ACCESSOR=A,e.MINUTES_PER_HOUR=59,e.McTimepicker=P,e.McTimepickerModule=S,e.SECONDS_PER_MINUTE=59,e.TIMEFORMAT_PLACEHOLDERS=f,Object.defineProperty(e,"__esModule",{value:!0})}));
2
2
  //# sourceMappingURL=ptsecurity-mosaic-timepicker.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../packages/mosaic/timepicker/timepicker.constants.ts","../../../packages/mosaic/timepicker/timepicker.directive.ts","../../../packages/mosaic/timepicker/timepicker.module.ts"],"names":["TimeParts","TimeFormats","TIMEFORMAT_PLACEHOLDERS","_a","HHmmss","HHmm","DEFAULT_TIME_FORMAT","HOURS_MINUTES_SECONDS_REGEXP","HOURS_MINUTES_REGEXP","HOURS_ONLY_REGEXP","AM_PM_FORMAT_REGEXP","MC_TIMEPICKER_VALUE_ACCESSOR","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","McTimepicker","multi","MC_TIMEPICKER_VALIDATORS","NG_VALIDATORS","uniqueComponentIdSuffix","elementRef","renderer","dateAdapter","_this","this","stateChanges","Subject","focused","controlType","_placeholder","_format","_min","_max","incorrectInput","EventEmitter","uid","lastValueValid","defaultPlaceholder","onInput","formattedValue","formatUserInput","viewValue","newTimeObj","getDateFromTimeString","selectionStart","selectionEnd","setViewValue","getTimeStringFromDate","format","createSelectionOfTimeComponentInInput","value","onChange","next","parseValidator","empty","mcTimepickerParse","text","minValidator","control","controlValue","getValidDateOrNull","deserialize","min","compareTime","mcTimepickerLowerThenMin","actual","maxValidator","max","mcTimepickerHigherThenMax","validatorOnChange","Error","validator","Validators","compose","noop","id","Object","defineProperty","prototype","_disabled","coerceBooleanProperty","_id","_required","formatValue","keys","map","timeFormatKey","indexOf","updateView","_value","newValue","isValid","tooltip","mcMouseEnterDelay","validationTooltipShowDelay","mcTrigger","mcTooltipClass","initElementRefListeners","subscribe","isTooltipOpen","show","setTimeout","hide","validationTooltipHideDelay","nativeElement","isBadInput","ngOnDestroy","complete","getSize","isFullFormat","focus","focusChanged","isFocused","onTouched","onBlur","onPaste","$event","preventDefault","formatUserPaste","clipboardData","getData","onContainerClick","onKeyDown","event","keyCode","isLetterKey","ctrlKey","metaKey","hasModifierKey","isVerticalMovement","isHorizontalMovement","DELETE","BACKSPACE","TAB","includes","SPACE","spaceKeyHandler","HOME","PAGE_UP","END","PAGE_DOWN","length","UP_ARROW","DOWN_ARROW","verticalArrowKeyHandler","LEFT_ARROW","RIGHT_ARROW","horizontalArrowKeyHandler","test","key","getNewValue","replaceSymbols","emit","validate","setControl","registerOnValidatorChange","fn","writeValue","registerOnChange","registerOnTouched","setDisabledState","isDisabled","disabled","match","groups","hours","replaceNumbers","values","group","padStart","join","_b","number","symbol","replace","minutes","seconds","parseInt","toString","validity","badInput","cursorPos","nextDividerPos","position","slice","changedTime","newEditParams","getTimeEditMetrics","incrementTime","modifiedTimePart","decrementTime","cursorStartPosition","cursorEndPosition","dateVal","whatToIncrement","getHours","getMinutes","getSeconds","createDateTime","getYear","getMonth","getDate","getMilliseconds","whatToDecrement","cursorPosition","timeString","minutesIndex","hoursIndex","secondsIndex","timeFormat","HMS","HM","H","amPm","Number","resultDate","first","second","result","obj","isDateInstance","setProperty","Directive","args","selector","exportAs","host","class","[attr.id]","[attr.placeholder]","[attr.disabled]","[attr.required]","[attr.size]","[attr.autocomplete]","(blur)","(focus)","(paste)","(keydown)","providers","McFormFieldControl","ElementRef","Renderer2","DateAdapter","decorators","type","Optional","Input","Output","NgModule","imports","CommonModule","A11yModule","PlatformModule","FormsModule","declarations","exports"],"mappings":"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","sourcesContent":["// tslint:disable:naming-convention\nexport enum TimeParts {\n hours,\n minutes,\n seconds\n}\n\nexport enum TimeFormats {\n HHmmss = 'HH:mm:ss',\n HHmm = 'HH:mm'\n}\n\nexport const TIMEFORMAT_PLACEHOLDERS: { [timeFormat: string]: string } = {\n [TimeFormats.HHmmss]: 'чч:мм:сс',\n [TimeFormats.HHmm]: 'чч:мм'\n};\n\nexport const DEFAULT_TIME_FORMAT: TimeFormats = TimeFormats.HHmm;\n\nexport const HOURS_MINUTES_SECONDS_REGEXP = /^([0-1][0-9]|2[0-3]):?([0-5][0-9]):?([0-5][0-9])?$/;\nexport const HOURS_MINUTES_REGEXP = /^([0-1][0-9]|2[0-3]):?([0-5][0-9])?$/;\nexport const HOURS_ONLY_REGEXP = /^([0-1][0-9]|2[0-3]):?$/;\nexport const AM_PM_FORMAT_REGEXP = /^([0-1]?[0-9]):([0-5]?[0-9]) ([ap][m]?$)/i;\n\nexport const SECONDS_PER_MINUTE: number = 59;\nexport const MINUTES_PER_HOUR: number = 59;\nexport const HOURS_PER_DAY: number = 23;\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n Optional,\n Output,\n Renderer2\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport { DateAdapter } from '@ptsecurity/cdk/datetime';\nimport {\n DOWN_ARROW,\n UP_ARROW,\n HOME,\n END,\n LEFT_ARROW,\n RIGHT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n SPACE,\n DELETE,\n BACKSPACE,\n hasModifierKey,\n isLetterKey,\n isVerticalMovement,\n isHorizontalMovement,\n TAB\n} from '@ptsecurity/cdk/keycodes';\nimport { validationTooltipHideDelay, validationTooltipShowDelay } from '@ptsecurity/mosaic/core';\nimport { McFormFieldControl } from '@ptsecurity/mosaic/form-field';\nimport { McTooltip } from '@ptsecurity/mosaic/tooltip';\nimport { noop, Subject } from 'rxjs';\n\nimport {\n DEFAULT_TIME_FORMAT,\n HOURS_PER_DAY,\n HOURS_MINUTES_REGEXP,\n HOURS_MINUTES_SECONDS_REGEXP,\n HOURS_ONLY_REGEXP,\n MINUTES_PER_HOUR,\n SECONDS_PER_MINUTE,\n TIMEFORMAT_PLACEHOLDERS,\n TimeFormats,\n TimeParts,\n AM_PM_FORMAT_REGEXP\n} from './timepicker.constants';\n\n\n/** @docs-private */\nexport const MC_TIMEPICKER_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => McTimepicker),\n multi: true\n};\n\n/** @docs-private */\nexport const MC_TIMEPICKER_VALIDATORS: any = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => McTimepicker),\n multi: true\n};\n\n\nlet uniqueComponentIdSuffix: number = 0;\n\nconst shortFormatSize: number = 5;\nconst fullFormatSize: number = 8;\n\n\n@Directive({\n selector: 'input[mcTimepicker]',\n exportAs: 'mcTimepicker',\n host: {\n class: 'mc-input mc-timepicker',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n '[attr.placeholder]': 'placeholder',\n '[attr.disabled]': 'disabled || null',\n '[attr.required]': 'required',\n '[attr.size]': 'getSize()',\n '[attr.autocomplete]': '\"off\"',\n\n '(blur)': 'onBlur()',\n '(focus)': 'focusChanged(true)',\n\n '(paste)': 'onPaste($event)',\n\n '(keydown)': 'onKeyDown($event)'\n },\n providers: [\n MC_TIMEPICKER_VALIDATORS,\n MC_TIMEPICKER_VALUE_ACCESSOR,\n { provide: McFormFieldControl, useExisting: McTimepicker }\n ]\n})\nexport class McTimepicker<D> implements McFormFieldControl<D>, ControlValueAccessor, Validator, OnDestroy {\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n readonly errorState: boolean;\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n focused: boolean = false;\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n controlType: string = 'timepicker';\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n\n set placeholder(value: string) {\n this._placeholder = value;\n\n this.defaultPlaceholder = false;\n }\n\n private _placeholder = TIMEFORMAT_PLACEHOLDERS[DEFAULT_TIME_FORMAT];\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n }\n\n this.stateChanges.next();\n }\n\n private _disabled: boolean;\n\n @Input()\n get id(): string {\n return this._id;\n }\n\n set id(value: string) {\n this._id = value || this.uid;\n }\n\n private _id: string;\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n private _required: boolean;\n\n @Input()\n get format(): TimeFormats {\n return this._format;\n }\n\n set format(formatValue: TimeFormats) {\n this._format = Object\n .keys(TimeFormats)\n .map((timeFormatKey) => TimeFormats[timeFormatKey])\n .indexOf(formatValue) > -1 ? formatValue : DEFAULT_TIME_FORMAT;\n\n if (this.defaultPlaceholder) {\n this._placeholder = TIMEFORMAT_PLACEHOLDERS[this._format];\n }\n\n if (this.value) {\n this.updateView();\n }\n }\n\n private _format: TimeFormats = DEFAULT_TIME_FORMAT;\n\n @Input()\n get min(): D | null {\n return this._min;\n }\n\n set min(value: D | null) {\n this._min = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n this.validatorOnChange();\n }\n\n private _min: D | null = null;\n\n @Input()\n get max(): D | null {\n return this._max;\n }\n\n set max(value: D | null) {\n this._max = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n this.validatorOnChange();\n }\n\n private _max: D | null = null;\n\n @Input()\n get value(): D | null {\n return this._value;\n }\n\n set value(value: D | null) {\n const newValue = this.dateAdapter.deserialize(value);\n\n this.lastValueValid = !newValue || this.dateAdapter.isValid(newValue);\n\n this._value = this.getValidDateOrNull(newValue);\n\n this.updateView();\n }\n\n private _value: D | null;\n\n @Input()\n set mcValidationTooltip(tooltip: McTooltip) {\n if (!tooltip) { return; }\n\n tooltip.mcMouseEnterDelay = validationTooltipShowDelay;\n tooltip.mcTrigger = 'manual';\n tooltip.mcTooltipClass = 'mc-tooltip_warning';\n\n tooltip.initElementRefListeners();\n\n this.incorrectInput.subscribe(() => {\n if (tooltip.isTooltipOpen) { return; }\n\n tooltip.show();\n\n setTimeout(() => tooltip.hide(), validationTooltipHideDelay);\n });\n }\n\n @Output() incorrectInput = new EventEmitter<void>();\n\n get hasSelection(): boolean {\n return this.selectionStart !== this.selectionEnd;\n }\n\n get isFullFormat(): boolean {\n return this.format === TimeFormats.HHmmss;\n }\n\n get isShortFormat(): boolean {\n return this.format === TimeFormats.HHmm;\n }\n\n get viewValue(): string {\n return this.elementRef.nativeElement.value;\n }\n\n get ngControl(): any {\n return this.control;\n }\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n get empty(): boolean {\n return !this.viewValue && !this.isBadInput();\n }\n\n get selectionStart(): number | null {\n return this.elementRef.nativeElement.selectionStart;\n }\n\n set selectionStart(value: number | null) {\n this.elementRef.nativeElement.selectionStart = value;\n }\n\n get selectionEnd(): number | null {\n return this.elementRef.nativeElement.selectionEnd;\n }\n\n set selectionEnd(value: number | null) {\n this.elementRef.nativeElement.selectionEnd = value;\n }\n\n private readonly uid = `mc-timepicker-${uniqueComponentIdSuffix++}`;\n\n private readonly validator: ValidatorFn | null;\n\n private lastValueValid = false;\n\n private control: AbstractControl;\n\n private defaultPlaceholder = true;\n\n private onChange: (value: any) => void;\n private onTouched: () => void;\n\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n @Optional() private dateAdapter: DateAdapter<any>\n ) {\n if (!this.dateAdapter) {\n throw Error(`McTimepicker: No provider found for DateAdapter. You must import one of the existing ` +\n `modules at your application root or provide a custom implementation or use exists ones.`);\n }\n\n this.validator = Validators.compose([this.parseValidator, this.minValidator, this.maxValidator]);\n\n this.onChange = noop;\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n }\n\n ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n getSize(): number {\n return this.isFullFormat ? fullFormatSize : shortFormatSize;\n }\n\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n focusChanged(isFocused: boolean): void {\n if (isFocused !== this.focused) {\n this.focused = isFocused;\n this.onTouched();\n this.stateChanges.next();\n }\n }\n\n onBlur() {\n this.focusChanged(false);\n\n this.onInput();\n }\n\n onPaste($event) {\n $event.preventDefault();\n\n const value = this.formatUserPaste($event.clipboardData.getData('text'));\n\n const newTimeObj = this.getDateFromTimeString(value);\n\n if (!newTimeObj) { return; }\n\n this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.format));\n\n this.value = newTimeObj;\n this.onChange(newTimeObj);\n this.stateChanges.next();\n }\n\n onInput = () => {\n const formattedValue = this.formatUserInput(this.viewValue);\n\n const newTimeObj = this.getDateFromTimeString(formattedValue);\n this.lastValueValid = !!newTimeObj;\n\n if (!newTimeObj) {\n this.onChange(null);\n\n return;\n }\n\n const selectionStart = this.selectionStart;\n const selectionEnd = this.selectionEnd;\n\n this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.format));\n\n this.selectionStart = selectionStart;\n this.selectionEnd = selectionEnd;\n\n this.createSelectionOfTimeComponentInInput((selectionStart as number) + 1);\n\n this.value = newTimeObj;\n this.onChange(newTimeObj);\n this.stateChanges.next();\n }\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n }\n\n onKeyDown(event: KeyboardEvent): void {\n // tslint:disable-next-line: deprecation\n const keyCode = event.keyCode;\n\n if (isLetterKey(event) && !event.ctrlKey && !event.metaKey) {\n event.preventDefault();\n\n this.incorrectInput.emit();\n } else if (\n (hasModifierKey(event) && (isVerticalMovement(keyCode) || isHorizontalMovement(keyCode))) ||\n event.ctrlKey || event.metaKey ||\n [DELETE, BACKSPACE, TAB].includes(keyCode)\n ) {\n noop();\n } else if (keyCode === SPACE) {\n this.spaceKeyHandler(event);\n } else if ([HOME, PAGE_UP].includes(keyCode)) {\n this.createSelectionOfTimeComponentInInput(0);\n } else if ([END, PAGE_DOWN].includes(keyCode)) {\n this.createSelectionOfTimeComponentInInput(this.viewValue.length);\n } else if ([UP_ARROW, DOWN_ARROW].includes(keyCode)) {\n event.preventDefault();\n\n this.verticalArrowKeyHandler(keyCode);\n } else if ([LEFT_ARROW, RIGHT_ARROW].includes(keyCode)) {\n this.horizontalArrowKeyHandler(keyCode);\n } else if (/^\\D$/.test(event.key)) {\n event.preventDefault();\n\n const newValue = this.getNewValue(event.key, this.selectionStart as number);\n const formattedValue = this.replaceSymbols(newValue);\n\n if (newValue !== formattedValue) {\n this.setViewValue(formattedValue);\n\n setTimeout(this.onInput);\n } else {\n this.incorrectInput.emit();\n }\n } else {\n setTimeout(this.onInput);\n }\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n this.setControl(control);\n\n return this.validator ? this.validator(control) : null;\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this.validatorOnChange = fn;\n }\n\n writeValue(value: D | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: (value: D) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n private formatUserPaste(value: string) {\n if (value.match(AM_PM_FORMAT_REGEXP)) { return value; }\n\n const match: RegExpMatchArray | null = value.match(\n /^(\\D+)?(?<hours>\\d+)?(\\D+)?(\\D+)?(?<minutes>\\d+)?(\\D+)?(\\D+)?(?<seconds>\\d+)?(\\D+)?$/\n );\n\n if (!match?.groups?.hours) {\n this.setViewValue(value);\n\n return value;\n }\n\n return this.replaceNumbers(Object.values(match.groups)\n // tslint:disable-next-line:no-magic-numbers\n .map((group) => (group || '').padStart(2, '0'))\n .join(':')\n );\n }\n\n private formatUserInput(value: string): string {\n return this.replaceNumbers(this.replaceSymbols(value));\n }\n\n private replaceSymbols(value: string): string {\n let formattedValue: string = value;\n\n const match: RegExpMatchArray | null = value.match(/^(\\d\\d:){0,2}(?<number>[0-9])(?<symbol>\\W)(:\\d\\d){0,2}$/);\n\n if (match?.groups) {\n const { number, symbol } = match.groups;\n\n formattedValue = value.replace(number + symbol, `0${number}`);\n }\n\n return formattedValue;\n }\n\n private replaceNumbers(value: string): string {\n let formattedValue: string = value;\n\n const match: RegExpMatchArray | null = value.match(/^(?<hours>\\d{0,4}):?(?<minutes>\\d{0,4}):?(?<seconds>\\d{0,4})$/);\n\n if (match?.groups) {\n const { hours, minutes, seconds } = match.groups;\n\n if (hours.length && parseInt(hours) > HOURS_PER_DAY) {\n formattedValue = formattedValue.replace(hours, HOURS_PER_DAY.toString());\n }\n\n if (minutes.length && parseInt(minutes) > MINUTES_PER_HOUR) {\n formattedValue = formattedValue.replace(minutes, MINUTES_PER_HOUR.toString());\n }\n\n if (seconds.length && parseInt(seconds) > SECONDS_PER_MINUTE) {\n formattedValue = formattedValue.replace(seconds, SECONDS_PER_MINUTE.toString());\n }\n }\n\n return formattedValue;\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n private isBadInput(): boolean {\n const validity = (<HTMLInputElement> this.elementRef.nativeElement).validity;\n\n return validity && validity.badInput;\n }\n\n private spaceKeyHandler(event: KeyboardEvent) {\n event.preventDefault();\n\n if (this.selectionStart === this.selectionEnd) {\n const value = this.getNewValue(event.key, this.selectionStart as number);\n const formattedValue = this.replaceSymbols(value);\n\n if (value !== formattedValue) {\n this.setViewValue(formattedValue);\n\n setTimeout(this.onInput);\n }\n } else if (this.selectionStart !== this.selectionEnd) {\n\n let cursorPos = this.selectionStart as number;\n\n const nextDividerPos: number = this.viewValue.indexOf(':', cursorPos);\n\n cursorPos = nextDividerPos ? nextDividerPos + 1 : 0;\n\n this.createSelectionOfTimeComponentInInput(cursorPos);\n }\n }\n\n private getNewValue(key: string, position: number) {\n return [this.viewValue.slice(0, position), key, this.viewValue.slice(position)].join('');\n }\n\n private verticalArrowKeyHandler(keyCode: number): void {\n if (!this.value) { return; }\n\n let changedTime;\n\n const newEditParams = this.getTimeEditMetrics(this.selectionStart as number);\n\n if (keyCode === UP_ARROW) {\n changedTime = this.incrementTime(this.value, newEditParams.modifiedTimePart);\n }\n\n if (keyCode === DOWN_ARROW) {\n changedTime = this.decrementTime(this.value, newEditParams.modifiedTimePart);\n }\n\n this.value = changedTime;\n\n this.selectionStart = newEditParams.cursorStartPosition;\n this.selectionEnd = newEditParams.cursorEndPosition;\n\n this.onChange(changedTime);\n this.stateChanges.next();\n }\n\n private horizontalArrowKeyHandler(keyCode: number): void {\n if (!this.value) { return; }\n\n let cursorPos = this.selectionStart as number;\n\n if (keyCode === LEFT_ARROW) {\n cursorPos = cursorPos === 0 ? this.viewValue.length : cursorPos - 1;\n } else if (keyCode === RIGHT_ARROW) {\n const nextDividerPos: number = this.viewValue.indexOf(':', cursorPos);\n\n cursorPos = nextDividerPos ? nextDividerPos + 1 : 0;\n }\n\n this.createSelectionOfTimeComponentInInput(cursorPos);\n }\n\n private createSelectionOfTimeComponentInInput(cursorPos: number): void {\n setTimeout(() => {\n const newEditParams = this.getTimeEditMetrics(cursorPos);\n\n this.selectionStart = newEditParams.cursorStartPosition;\n this.selectionEnd = newEditParams.cursorEndPosition;\n });\n }\n\n private incrementTime(dateVal: D, whatToIncrement: TimeParts = TimeParts.seconds): D {\n let hours = this.dateAdapter.getHours(dateVal);\n let minutes = this.dateAdapter.getMinutes(dateVal);\n let seconds = this.dateAdapter.getSeconds(dateVal);\n\n switch (whatToIncrement) {\n case TimeParts.hours:\n hours++;\n break;\n case TimeParts.minutes:\n minutes++;\n break;\n case TimeParts.seconds:\n seconds++;\n break;\n default:\n }\n\n if (seconds > SECONDS_PER_MINUTE) { seconds = 0; }\n\n if (minutes > MINUTES_PER_HOUR) { minutes = 0; }\n\n if (hours > HOURS_PER_DAY) { hours = 0; }\n\n return this.dateAdapter.createDateTime(\n this.dateAdapter.getYear(this.value),\n this.dateAdapter.getMonth(this.value),\n this.dateAdapter.getDate(this.value),\n hours,\n minutes,\n seconds,\n this.dateAdapter.getMilliseconds(this.value)\n );\n }\n\n private decrementTime(dateVal: D, whatToDecrement: TimeParts = TimeParts.seconds): D {\n let hours = this.dateAdapter.getHours(dateVal);\n let minutes = this.dateAdapter.getMinutes(dateVal);\n let seconds = this.dateAdapter.getSeconds(dateVal);\n\n switch (whatToDecrement) {\n case TimeParts.hours:\n hours--;\n break;\n case TimeParts.minutes:\n minutes--;\n break;\n case TimeParts.seconds:\n seconds--;\n break;\n default:\n }\n\n if (seconds < 0) { seconds = SECONDS_PER_MINUTE; }\n\n if (minutes < 0) { minutes = MINUTES_PER_HOUR; }\n\n if (hours < 0) { hours = HOURS_PER_DAY; }\n\n return this.dateAdapter.createDateTime(\n this.dateAdapter.getYear(this.value),\n this.dateAdapter.getMonth(this.value),\n this.dateAdapter.getDate(this.value),\n hours,\n minutes,\n seconds,\n this.dateAdapter.getMilliseconds(this.value)\n );\n }\n\n /**\n * @description Get params for arrow-keys (up/down) time valie edit.\n * @param cursorPosition Current cursor position in timeString\n */\n private getTimeEditMetrics(cursorPosition: number): {\n modifiedTimePart: TimeParts;\n cursorStartPosition: number;\n cursorEndPosition: number;\n } {\n const timeString: string = this.viewValue;\n let modifiedTimePart: TimeParts;\n let cursorStartPosition: number;\n let cursorEndPosition: number;\n\n const hoursIndex = 0;\n const minutesIndex = timeString.indexOf(':', hoursIndex + 1);\n const secondsIndex = minutesIndex !== -1 ? timeString.indexOf(':', minutesIndex + 1) : -1;\n\n if (secondsIndex !== -1 && cursorPosition > secondsIndex) {\n modifiedTimePart = TimeParts.seconds;\n cursorStartPosition = secondsIndex + 1;\n cursorEndPosition = timeString.length;\n } else if (minutesIndex !== -1 && cursorPosition > minutesIndex) {\n modifiedTimePart = TimeParts.minutes;\n cursorStartPosition = minutesIndex + 1;\n cursorEndPosition = secondsIndex > -1 ? secondsIndex : timeString.length;\n } else {\n modifiedTimePart = TimeParts.hours;\n cursorStartPosition = hoursIndex;\n cursorEndPosition = minutesIndex !== -1 ? minutesIndex : timeString.length;\n }\n\n return { modifiedTimePart, cursorStartPosition, cursorEndPosition };\n }\n\n /**\n * @description Create time string for displaying inside input element of UI\n */\n private getTimeStringFromDate(value: D | null, timeFormat: TimeFormats): string {\n if (!value || !this.dateAdapter.isValid(value)) { return ''; }\n\n return this.dateAdapter.format(value, timeFormat);\n }\n\n private getDateFromTimeString(timeString: string): D | null {\n if (!timeString) { return null; }\n\n const HMS = timeString.match(HOURS_MINUTES_SECONDS_REGEXP);\n const HM = timeString.match(HOURS_MINUTES_REGEXP);\n const H = timeString.match(HOURS_ONLY_REGEXP);\n const amPm = timeString.match(AM_PM_FORMAT_REGEXP);\n\n let hours: number = 0;\n let minutes: number = 0;\n let seconds: number = 0;\n\n // tslint:disable:no-magic-numbers\n if (amPm) {\n hours = Number(amPm[1]);\n minutes = Number(amPm[2]);\n\n if (/[p]/i.test(amPm[3]) || (/[a]/i.test(amPm[3]) && hours === 12)) {\n hours += 12;\n }\n } else if (HMS) {\n hours = Number(HMS[1]);\n minutes = Number(HMS[2]);\n seconds = Number(HMS[3]);\n } else if (HM) {\n hours = Number(HM[1]);\n minutes = Number(HM[2]);\n } else if (H) {\n hours = Number(H[1]);\n } else {\n return null;\n }\n // tslint:enable\n\n const resultDate = this.dateAdapter.createDateTime(\n this.dateAdapter.getYear(this.value),\n this.dateAdapter.getMonth(this.value),\n this.dateAdapter.getDate(this.value),\n hours,\n minutes || 0,\n seconds || 0,\n this.dateAdapter.getMilliseconds(this.value)\n );\n\n return this.getValidDateOrNull(resultDate);\n }\n\n private parseValidator: ValidatorFn = (): ValidationErrors | null => {\n return this.focused ||\n this.empty ||\n this.lastValueValid ? null : { mcTimepickerParse: { text: this.viewValue } };\n }\n\n private minValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const controlValue = this.getValidDateOrNull(this.dateAdapter.deserialize(control.value));\n\n return (!this.min || !controlValue || this.compareTime(this.min, controlValue) <= 0) ?\n null :\n { mcTimepickerLowerThenMin: { min: this.min, actual: controlValue } };\n }\n\n private maxValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const controlValue = this.getValidDateOrNull(this.dateAdapter.deserialize(control.value));\n\n return (!this.max || !controlValue || this.compareTime(this.max, controlValue) >= 0) ?\n null :\n { mcTimepickerHigherThenMax: { max: this.max, actual: controlValue } };\n }\n\n private compareTime(first: D, second: D): number {\n const result = this.dateAdapter.getHours(first) - this.dateAdapter.getHours(second) ||\n this.dateAdapter.getMinutes(first) - this.dateAdapter.getMinutes(second);\n\n if (TimeFormats.HHmm === this.format) {\n return result;\n } else if (TimeFormats.HHmmss === this.format) {\n return result || this.dateAdapter.getSeconds(first) - this.dateAdapter.getSeconds(second);\n } else {\n throw Error(`Unknown format: ${this.format}`);\n }\n }\n\n private getValidDateOrNull(obj: any): D | null {\n return (this.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\n }\n\n private setViewValue(value: string) {\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', value);\n }\n\n private updateView() {\n const formattedValue = this.getTimeStringFromDate(this.value, this.format);\n\n this.setViewValue(formattedValue);\n }\n\n private setControl(control: AbstractControl) {\n if (!this.control) {\n this.control = control;\n }\n }\n\n // tslint:disable-next-line:no-empty\n private validatorOnChange = () => {};\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { McTimepicker } from './timepicker.directive';\n\n\n@NgModule({\n imports: [\n CommonModule,\n A11yModule,\n PlatformModule,\n FormsModule\n ],\n declarations: [McTimepicker],\n exports: [McTimepicker]\n})\nexport class McTimepickerModule {}\n"]}
1
+ {"version":3,"sources":["../../../packages/mosaic/timepicker/timepicker.constants.ts","../../../packages/mosaic/timepicker/timepicker.directive.ts","../../../packages/mosaic/timepicker/timepicker.module.ts"],"names":["TimeParts","TimeFormats","TIMEFORMAT_PLACEHOLDERS","_a","HHmmss","HHmm","DEFAULT_TIME_FORMAT","HOURS_MINUTES_SECONDS_REGEXP","HOURS_MINUTES_REGEXP","HOURS_ONLY_REGEXP","AM_PM_FORMAT_REGEXP","MC_TIMEPICKER_VALUE_ACCESSOR","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","McTimepicker","multi","MC_TIMEPICKER_VALIDATORS","NG_VALIDATORS","uniqueComponentIdSuffix","elementRef","renderer","dateAdapter","_this","this","stateChanges","Subject","focused","controlType","_placeholder","_format","_min","_max","incorrectInput","EventEmitter","uid","lastValueValid","defaultPlaceholder","onInput","formattedValue","formatUserInput","viewValue","newTimeObj","getDateFromTimeString","selectionStart","selectionEnd","setViewValue","getTimeStringFromDate","format","createSelectionOfTimeComponentInInput","value","onChange","next","parseValidator","empty","mcTimepickerParse","text","minValidator","control","controlValue","getValidDateOrNull","deserialize","min","compareTime","mcTimepickerLowerThenMin","actual","maxValidator","max","mcTimepickerHigherThenMax","validatorOnChange","Error","validator","Validators","compose","noop","id","Object","defineProperty","prototype","_disabled","coerceBooleanProperty","_id","_required","formatValue","keys","map","timeFormatKey","indexOf","updateView","_value","newValue","isValid","tooltip","mcMouseEnterDelay","validationTooltipShowDelay","mcTrigger","mcTooltipClass","initElementRefListeners","subscribe","isTooltipOpen","show","setTimeout","hide","validationTooltipHideDelay","nativeElement","isBadInput","ngOnDestroy","complete","getSize","isFullFormat","focus","focusChanged","isFocused","onTouched","onBlur","onPaste","$event","preventDefault","formatUserPaste","clipboardData","getData","onContainerClick","onKeyDown","event","keyCode","isLetterKey","ctrlKey","metaKey","hasModifierKey","isVerticalMovement","isHorizontalMovement","DELETE","BACKSPACE","TAB","includes","SPACE","spaceKeyHandler","HOME","PAGE_UP","END","PAGE_DOWN","length","UP_ARROW","DOWN_ARROW","verticalArrowKeyHandler","LEFT_ARROW","RIGHT_ARROW","horizontalArrowKeyHandler","test","key","getNewValue","replaceSymbols","emit","validate","setControl","registerOnValidatorChange","fn","writeValue","registerOnChange","registerOnTouched","setDisabledState","isDisabled","disabled","match","groups","hours","replaceNumbers","values","group","padStart","join","_b","number","symbol","replace","minutes","seconds","parseInt","toString","validity","badInput","cursorPos","nextDividerPos","position","slice","changedTime","newEditParams","getTimeEditMetrics","incrementTime","modifiedTimePart","decrementTime","cursorStartPosition","cursorEndPosition","dateVal","whatToIncrement","getHours","getMinutes","getSeconds","createDateTime","getYear","getMonth","getDate","getMilliseconds","whatToDecrement","cursorPosition","timeString","minutesIndex","hoursIndex","secondsIndex","timeFormat","HMS","HM","H","amPm","Number","date","today","resultDate","first","second","result","obj","isDateInstance","setProperty","Directive","args","selector","exportAs","host","class","[attr.id]","[attr.placeholder]","[attr.disabled]","[attr.required]","[attr.size]","[attr.autocomplete]","(blur)","(focus)","(paste)","(keydown)","providers","McFormFieldControl","ElementRef","Renderer2","DateAdapter","decorators","type","Optional","Input","Output","NgModule","imports","CommonModule","A11yModule","PlatformModule","FormsModule","declarations","exports"],"mappings":"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","sourcesContent":["// tslint:disable:naming-convention\nexport enum TimeParts {\n hours,\n minutes,\n seconds\n}\n\nexport enum TimeFormats {\n HHmmss = 'HH:mm:ss',\n HHmm = 'HH:mm'\n}\n\nexport const TIMEFORMAT_PLACEHOLDERS: { [timeFormat: string]: string } = {\n [TimeFormats.HHmmss]: 'чч:мм:сс',\n [TimeFormats.HHmm]: 'чч:мм'\n};\n\nexport const DEFAULT_TIME_FORMAT: TimeFormats = TimeFormats.HHmm;\n\nexport const HOURS_MINUTES_SECONDS_REGEXP = /^([0-1][0-9]|2[0-3]):?([0-5][0-9]):?([0-5][0-9])?$/;\nexport const HOURS_MINUTES_REGEXP = /^([0-1][0-9]|2[0-3]):?([0-5][0-9])?$/;\nexport const HOURS_ONLY_REGEXP = /^([0-1][0-9]|2[0-3]):?$/;\nexport const AM_PM_FORMAT_REGEXP = /^([0-1]?[0-9]):([0-5]?[0-9]) ([ap][m]?$)/i;\n\nexport const SECONDS_PER_MINUTE: number = 59;\nexport const MINUTES_PER_HOUR: number = 59;\nexport const HOURS_PER_DAY: number = 23;\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n Optional,\n Output,\n Renderer2\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport { DateAdapter } from '@ptsecurity/cdk/datetime';\nimport {\n DOWN_ARROW,\n UP_ARROW,\n HOME,\n END,\n LEFT_ARROW,\n RIGHT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n SPACE,\n DELETE,\n BACKSPACE,\n hasModifierKey,\n isLetterKey,\n isVerticalMovement,\n isHorizontalMovement,\n TAB\n} from '@ptsecurity/cdk/keycodes';\nimport { validationTooltipHideDelay, validationTooltipShowDelay } from '@ptsecurity/mosaic/core';\nimport { McFormFieldControl } from '@ptsecurity/mosaic/form-field';\nimport { McTooltip } from '@ptsecurity/mosaic/tooltip';\nimport { noop, Subject } from 'rxjs';\n\nimport {\n DEFAULT_TIME_FORMAT,\n HOURS_PER_DAY,\n HOURS_MINUTES_REGEXP,\n HOURS_MINUTES_SECONDS_REGEXP,\n HOURS_ONLY_REGEXP,\n MINUTES_PER_HOUR,\n SECONDS_PER_MINUTE,\n TIMEFORMAT_PLACEHOLDERS,\n TimeFormats,\n TimeParts,\n AM_PM_FORMAT_REGEXP\n} from './timepicker.constants';\n\n\n/** @docs-private */\nexport const MC_TIMEPICKER_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => McTimepicker),\n multi: true\n};\n\n/** @docs-private */\nexport const MC_TIMEPICKER_VALIDATORS: any = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => McTimepicker),\n multi: true\n};\n\n\nlet uniqueComponentIdSuffix: number = 0;\n\nconst shortFormatSize: number = 5;\nconst fullFormatSize: number = 8;\n\n\n@Directive({\n selector: 'input[mcTimepicker]',\n exportAs: 'mcTimepicker',\n host: {\n class: 'mc-input mc-timepicker',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n '[attr.placeholder]': 'placeholder',\n '[attr.disabled]': 'disabled || null',\n '[attr.required]': 'required',\n '[attr.size]': 'getSize()',\n '[attr.autocomplete]': '\"off\"',\n\n '(blur)': 'onBlur()',\n '(focus)': 'focusChanged(true)',\n\n '(paste)': 'onPaste($event)',\n\n '(keydown)': 'onKeyDown($event)'\n },\n providers: [\n MC_TIMEPICKER_VALIDATORS,\n MC_TIMEPICKER_VALUE_ACCESSOR,\n { provide: McFormFieldControl, useExisting: McTimepicker }\n ]\n})\nexport class McTimepicker<D> implements McFormFieldControl<D>, ControlValueAccessor, Validator, OnDestroy {\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n readonly errorState: boolean;\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n focused: boolean = false;\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n controlType: string = 'timepicker';\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n\n set placeholder(value: string) {\n this._placeholder = value;\n\n this.defaultPlaceholder = false;\n }\n\n private _placeholder = TIMEFORMAT_PLACEHOLDERS[DEFAULT_TIME_FORMAT];\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n }\n\n this.stateChanges.next();\n }\n\n private _disabled: boolean;\n\n @Input()\n get id(): string {\n return this._id;\n }\n\n set id(value: string) {\n this._id = value || this.uid;\n }\n\n private _id: string;\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n private _required: boolean;\n\n @Input()\n get format(): TimeFormats {\n return this._format;\n }\n\n set format(formatValue: TimeFormats) {\n this._format = Object\n .keys(TimeFormats)\n .map((timeFormatKey) => TimeFormats[timeFormatKey])\n .indexOf(formatValue) > -1 ? formatValue : DEFAULT_TIME_FORMAT;\n\n if (this.defaultPlaceholder) {\n this._placeholder = TIMEFORMAT_PLACEHOLDERS[this._format];\n }\n\n if (this.value) {\n this.updateView();\n }\n }\n\n private _format: TimeFormats = DEFAULT_TIME_FORMAT;\n\n @Input()\n get min(): D | null {\n return this._min;\n }\n\n set min(value: D | null) {\n this._min = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n this.validatorOnChange();\n }\n\n private _min: D | null = null;\n\n @Input()\n get max(): D | null {\n return this._max;\n }\n\n set max(value: D | null) {\n this._max = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n this.validatorOnChange();\n }\n\n private _max: D | null = null;\n\n @Input()\n get value(): D | null {\n return this._value;\n }\n\n set value(value: D | null) {\n const newValue = this.dateAdapter.deserialize(value);\n\n this.lastValueValid = !newValue || this.dateAdapter.isValid(newValue);\n\n this._value = this.getValidDateOrNull(newValue);\n\n this.updateView();\n }\n\n private _value: D | null;\n\n @Input()\n set mcValidationTooltip(tooltip: McTooltip) {\n if (!tooltip) { return; }\n\n tooltip.mcMouseEnterDelay = validationTooltipShowDelay;\n tooltip.mcTrigger = 'manual';\n tooltip.mcTooltipClass = 'mc-tooltip_warning';\n\n tooltip.initElementRefListeners();\n\n this.incorrectInput.subscribe(() => {\n if (tooltip.isTooltipOpen) { return; }\n\n tooltip.show();\n\n setTimeout(() => tooltip.hide(), validationTooltipHideDelay);\n });\n }\n\n @Output() incorrectInput = new EventEmitter<void>();\n\n get hasSelection(): boolean {\n return this.selectionStart !== this.selectionEnd;\n }\n\n get isFullFormat(): boolean {\n return this.format === TimeFormats.HHmmss;\n }\n\n get isShortFormat(): boolean {\n return this.format === TimeFormats.HHmm;\n }\n\n get viewValue(): string {\n return this.elementRef.nativeElement.value;\n }\n\n get ngControl(): any {\n return this.control;\n }\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n get empty(): boolean {\n return !this.viewValue && !this.isBadInput();\n }\n\n get selectionStart(): number | null {\n return this.elementRef.nativeElement.selectionStart;\n }\n\n set selectionStart(value: number | null) {\n this.elementRef.nativeElement.selectionStart = value;\n }\n\n get selectionEnd(): number | null {\n return this.elementRef.nativeElement.selectionEnd;\n }\n\n set selectionEnd(value: number | null) {\n this.elementRef.nativeElement.selectionEnd = value;\n }\n\n private readonly uid = `mc-timepicker-${uniqueComponentIdSuffix++}`;\n\n private readonly validator: ValidatorFn | null;\n\n private lastValueValid = false;\n\n private control: AbstractControl;\n\n private defaultPlaceholder = true;\n\n private onChange: (value: any) => void;\n private onTouched: () => void;\n\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n @Optional() private dateAdapter: DateAdapter<any>\n ) {\n if (!this.dateAdapter) {\n throw Error(`McTimepicker: No provider found for DateAdapter. You must import one of the existing ` +\n `modules at your application root or provide a custom implementation or use exists ones.`);\n }\n\n this.validator = Validators.compose([this.parseValidator, this.minValidator, this.maxValidator]);\n\n this.onChange = noop;\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n }\n\n ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n getSize(): number {\n return this.isFullFormat ? fullFormatSize : shortFormatSize;\n }\n\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n focusChanged(isFocused: boolean): void {\n if (isFocused !== this.focused) {\n this.focused = isFocused;\n this.onTouched();\n this.stateChanges.next();\n }\n }\n\n onBlur() {\n this.focusChanged(false);\n\n this.onInput();\n }\n\n onPaste($event) {\n $event.preventDefault();\n\n const value = this.formatUserPaste($event.clipboardData.getData('text'));\n\n const newTimeObj = this.getDateFromTimeString(value);\n\n if (!newTimeObj) { return; }\n\n this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.format));\n\n this.value = newTimeObj;\n this.onChange(newTimeObj);\n this.stateChanges.next();\n }\n\n onInput = () => {\n const formattedValue = this.formatUserInput(this.viewValue);\n\n const newTimeObj = this.getDateFromTimeString(formattedValue);\n this.lastValueValid = !!newTimeObj;\n\n if (!newTimeObj) {\n this.onChange(null);\n\n return;\n }\n\n const selectionStart = this.selectionStart;\n const selectionEnd = this.selectionEnd;\n\n this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.format));\n\n this.selectionStart = selectionStart;\n this.selectionEnd = selectionEnd;\n\n this.createSelectionOfTimeComponentInInput((selectionStart as number) + 1);\n\n this.value = newTimeObj;\n this.onChange(newTimeObj);\n this.stateChanges.next();\n }\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n }\n\n onKeyDown(event: KeyboardEvent): void {\n // tslint:disable-next-line: deprecation\n const keyCode = event.keyCode;\n\n if (isLetterKey(event) && !event.ctrlKey && !event.metaKey) {\n event.preventDefault();\n\n this.incorrectInput.emit();\n } else if (\n (hasModifierKey(event) && (isVerticalMovement(keyCode) || isHorizontalMovement(keyCode))) ||\n event.ctrlKey || event.metaKey ||\n [DELETE, BACKSPACE, TAB].includes(keyCode)\n ) {\n noop();\n } else if (keyCode === SPACE) {\n this.spaceKeyHandler(event);\n } else if ([HOME, PAGE_UP].includes(keyCode)) {\n this.createSelectionOfTimeComponentInInput(0);\n } else if ([END, PAGE_DOWN].includes(keyCode)) {\n this.createSelectionOfTimeComponentInInput(this.viewValue.length);\n } else if ([UP_ARROW, DOWN_ARROW].includes(keyCode)) {\n event.preventDefault();\n\n this.verticalArrowKeyHandler(keyCode);\n } else if ([LEFT_ARROW, RIGHT_ARROW].includes(keyCode)) {\n this.horizontalArrowKeyHandler(keyCode);\n } else if (/^\\D$/.test(event.key)) {\n event.preventDefault();\n\n const newValue = this.getNewValue(event.key, this.selectionStart as number);\n const formattedValue = this.replaceSymbols(newValue);\n\n if (newValue !== formattedValue) {\n this.setViewValue(formattedValue);\n\n setTimeout(this.onInput);\n } else {\n this.incorrectInput.emit();\n }\n } else {\n setTimeout(this.onInput);\n }\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n this.setControl(control);\n\n return this.validator ? this.validator(control) : null;\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this.validatorOnChange = fn;\n }\n\n writeValue(value: D | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: (value: D) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n private formatUserPaste(value: string) {\n if (value.match(AM_PM_FORMAT_REGEXP)) { return value; }\n\n const match: RegExpMatchArray | null = value.match(\n /^(\\D+)?(?<hours>\\d+)?(\\D+)?(\\D+)?(?<minutes>\\d+)?(\\D+)?(\\D+)?(?<seconds>\\d+)?(\\D+)?$/\n );\n\n if (!match?.groups?.hours) {\n this.setViewValue(value);\n\n return value;\n }\n\n return this.replaceNumbers(Object.values(match.groups)\n // tslint:disable-next-line:no-magic-numbers\n .map((group) => (group || '').padStart(2, '0'))\n .join(':')\n );\n }\n\n private formatUserInput(value: string): string {\n return this.replaceNumbers(this.replaceSymbols(value));\n }\n\n private replaceSymbols(value: string): string {\n let formattedValue: string = value;\n\n const match: RegExpMatchArray | null = value.match(/^(\\d\\d:){0,2}(?<number>[0-9])(?<symbol>\\W)(:\\d\\d){0,2}$/);\n\n if (match?.groups) {\n const { number, symbol } = match.groups;\n\n formattedValue = value.replace(number + symbol, `0${number}`);\n }\n\n return formattedValue;\n }\n\n private replaceNumbers(value: string): string {\n let formattedValue: string = value;\n\n const match: RegExpMatchArray | null = value.match(/^(?<hours>\\d{0,4}):?(?<minutes>\\d{0,4}):?(?<seconds>\\d{0,4})$/);\n\n if (match?.groups) {\n const { hours, minutes, seconds } = match.groups;\n\n if (hours.length && parseInt(hours) > HOURS_PER_DAY) {\n formattedValue = formattedValue.replace(hours, HOURS_PER_DAY.toString());\n }\n\n if (minutes.length && parseInt(minutes) > MINUTES_PER_HOUR) {\n formattedValue = formattedValue.replace(minutes, MINUTES_PER_HOUR.toString());\n }\n\n if (seconds.length && parseInt(seconds) > SECONDS_PER_MINUTE) {\n formattedValue = formattedValue.replace(seconds, SECONDS_PER_MINUTE.toString());\n }\n }\n\n return formattedValue;\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n private isBadInput(): boolean {\n const validity = (<HTMLInputElement> this.elementRef.nativeElement).validity;\n\n return validity && validity.badInput;\n }\n\n private spaceKeyHandler(event: KeyboardEvent) {\n event.preventDefault();\n\n if (this.selectionStart === this.selectionEnd) {\n const value = this.getNewValue(event.key, this.selectionStart as number);\n const formattedValue = this.replaceSymbols(value);\n\n if (value !== formattedValue) {\n this.setViewValue(formattedValue);\n\n setTimeout(this.onInput);\n }\n } else if (this.selectionStart !== this.selectionEnd) {\n\n let cursorPos = this.selectionStart as number;\n\n const nextDividerPos: number = this.viewValue.indexOf(':', cursorPos);\n\n cursorPos = nextDividerPos ? nextDividerPos + 1 : 0;\n\n this.createSelectionOfTimeComponentInInput(cursorPos);\n }\n }\n\n private getNewValue(key: string, position: number) {\n return [this.viewValue.slice(0, position), key, this.viewValue.slice(position)].join('');\n }\n\n private verticalArrowKeyHandler(keyCode: number): void {\n if (!this.value) { return; }\n\n let changedTime;\n\n const newEditParams = this.getTimeEditMetrics(this.selectionStart as number);\n\n if (keyCode === UP_ARROW) {\n changedTime = this.incrementTime(this.value, newEditParams.modifiedTimePart);\n }\n\n if (keyCode === DOWN_ARROW) {\n changedTime = this.decrementTime(this.value, newEditParams.modifiedTimePart);\n }\n\n this.value = changedTime;\n\n this.selectionStart = newEditParams.cursorStartPosition;\n this.selectionEnd = newEditParams.cursorEndPosition;\n\n this.onChange(changedTime);\n this.stateChanges.next();\n }\n\n private horizontalArrowKeyHandler(keyCode: number): void {\n if (!this.value) { return; }\n\n let cursorPos = this.selectionStart as number;\n\n if (keyCode === LEFT_ARROW) {\n cursorPos = cursorPos === 0 ? this.viewValue.length : cursorPos - 1;\n } else if (keyCode === RIGHT_ARROW) {\n const nextDividerPos: number = this.viewValue.indexOf(':', cursorPos);\n\n cursorPos = nextDividerPos ? nextDividerPos + 1 : 0;\n }\n\n this.createSelectionOfTimeComponentInInput(cursorPos);\n }\n\n private createSelectionOfTimeComponentInInput(cursorPos: number): void {\n setTimeout(() => {\n const newEditParams = this.getTimeEditMetrics(cursorPos);\n\n this.selectionStart = newEditParams.cursorStartPosition;\n this.selectionEnd = newEditParams.cursorEndPosition;\n });\n }\n\n private incrementTime(dateVal: D, whatToIncrement: TimeParts = TimeParts.seconds): D {\n let hours = this.dateAdapter.getHours(dateVal);\n let minutes = this.dateAdapter.getMinutes(dateVal);\n let seconds = this.dateAdapter.getSeconds(dateVal);\n\n switch (whatToIncrement) {\n case TimeParts.hours:\n hours++;\n break;\n case TimeParts.minutes:\n minutes++;\n break;\n case TimeParts.seconds:\n seconds++;\n break;\n default:\n }\n\n if (seconds > SECONDS_PER_MINUTE) { seconds = 0; }\n\n if (minutes > MINUTES_PER_HOUR) { minutes = 0; }\n\n if (hours > HOURS_PER_DAY) { hours = 0; }\n\n return this.dateAdapter.createDateTime(\n this.dateAdapter.getYear(this.value),\n this.dateAdapter.getMonth(this.value),\n this.dateAdapter.getDate(this.value),\n hours,\n minutes,\n seconds,\n this.dateAdapter.getMilliseconds(this.value)\n );\n }\n\n private decrementTime(dateVal: D, whatToDecrement: TimeParts = TimeParts.seconds): D {\n let hours = this.dateAdapter.getHours(dateVal);\n let minutes = this.dateAdapter.getMinutes(dateVal);\n let seconds = this.dateAdapter.getSeconds(dateVal);\n\n switch (whatToDecrement) {\n case TimeParts.hours:\n hours--;\n break;\n case TimeParts.minutes:\n minutes--;\n break;\n case TimeParts.seconds:\n seconds--;\n break;\n default:\n }\n\n if (seconds < 0) { seconds = SECONDS_PER_MINUTE; }\n\n if (minutes < 0) { minutes = MINUTES_PER_HOUR; }\n\n if (hours < 0) { hours = HOURS_PER_DAY; }\n\n return this.dateAdapter.createDateTime(\n this.dateAdapter.getYear(this.value),\n this.dateAdapter.getMonth(this.value),\n this.dateAdapter.getDate(this.value),\n hours,\n minutes,\n seconds,\n this.dateAdapter.getMilliseconds(this.value)\n );\n }\n\n /**\n * @description Get params for arrow-keys (up/down) time valie edit.\n * @param cursorPosition Current cursor position in timeString\n */\n private getTimeEditMetrics(cursorPosition: number): {\n modifiedTimePart: TimeParts;\n cursorStartPosition: number;\n cursorEndPosition: number;\n } {\n const timeString: string = this.viewValue;\n let modifiedTimePart: TimeParts;\n let cursorStartPosition: number;\n let cursorEndPosition: number;\n\n const hoursIndex = 0;\n const minutesIndex = timeString.indexOf(':', hoursIndex + 1);\n const secondsIndex = minutesIndex !== -1 ? timeString.indexOf(':', minutesIndex + 1) : -1;\n\n if (secondsIndex !== -1 && cursorPosition > secondsIndex) {\n modifiedTimePart = TimeParts.seconds;\n cursorStartPosition = secondsIndex + 1;\n cursorEndPosition = timeString.length;\n } else if (minutesIndex !== -1 && cursorPosition > minutesIndex) {\n modifiedTimePart = TimeParts.minutes;\n cursorStartPosition = minutesIndex + 1;\n cursorEndPosition = secondsIndex > -1 ? secondsIndex : timeString.length;\n } else {\n modifiedTimePart = TimeParts.hours;\n cursorStartPosition = hoursIndex;\n cursorEndPosition = minutesIndex !== -1 ? minutesIndex : timeString.length;\n }\n\n return { modifiedTimePart, cursorStartPosition, cursorEndPosition };\n }\n\n /**\n * @description Create time string for displaying inside input element of UI\n */\n private getTimeStringFromDate(value: D | null, timeFormat: TimeFormats): string {\n if (!value || !this.dateAdapter.isValid(value)) { return ''; }\n\n return this.dateAdapter.format(value, timeFormat);\n }\n\n private getDateFromTimeString(timeString: string): D | null {\n if (!timeString) { return null; }\n\n const HMS = timeString.match(HOURS_MINUTES_SECONDS_REGEXP);\n const HM = timeString.match(HOURS_MINUTES_REGEXP);\n const H = timeString.match(HOURS_ONLY_REGEXP);\n const amPm = timeString.match(AM_PM_FORMAT_REGEXP);\n\n let hours: number = 0;\n let minutes: number = 0;\n let seconds: number = 0;\n\n // tslint:disable:no-magic-numbers\n if (amPm) {\n hours = Number(amPm[1]);\n minutes = Number(amPm[2]);\n\n if (/[p]/i.test(amPm[3]) || (/[a]/i.test(amPm[3]) && hours === 12)) {\n hours += 12;\n }\n } else if (HMS) {\n hours = Number(HMS[1]);\n minutes = Number(HMS[2]);\n seconds = Number(HMS[3]);\n } else if (HM) {\n hours = Number(HM[1]);\n minutes = Number(HM[2]);\n } else if (H) {\n hours = Number(H[1]);\n } else {\n return null;\n }\n // tslint:enable\n const date = this.value || this.dateAdapter.today();\n\n const resultDate = this.dateAdapter.createDateTime(\n this.dateAdapter.getYear(date),\n this.dateAdapter.getMonth(date),\n this.dateAdapter.getDate(date),\n hours,\n minutes || 0,\n seconds || 0,\n this.dateAdapter.getMilliseconds(date)\n );\n\n return this.getValidDateOrNull(resultDate);\n }\n\n private parseValidator: ValidatorFn = (): ValidationErrors | null => {\n return this.focused ||\n this.empty ||\n this.lastValueValid ? null : { mcTimepickerParse: { text: this.viewValue } };\n }\n\n private minValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const controlValue = this.getValidDateOrNull(this.dateAdapter.deserialize(control.value));\n\n return (!this.min || !controlValue || this.compareTime(this.min, controlValue) <= 0) ?\n null :\n { mcTimepickerLowerThenMin: { min: this.min, actual: controlValue } };\n }\n\n private maxValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const controlValue = this.getValidDateOrNull(this.dateAdapter.deserialize(control.value));\n\n return (!this.max || !controlValue || this.compareTime(this.max, controlValue) >= 0) ?\n null :\n { mcTimepickerHigherThenMax: { max: this.max, actual: controlValue } };\n }\n\n private compareTime(first: D, second: D): number {\n const result = this.dateAdapter.getHours(first) - this.dateAdapter.getHours(second) ||\n this.dateAdapter.getMinutes(first) - this.dateAdapter.getMinutes(second);\n\n if (TimeFormats.HHmm === this.format) {\n return result;\n } else if (TimeFormats.HHmmss === this.format) {\n return result || this.dateAdapter.getSeconds(first) - this.dateAdapter.getSeconds(second);\n } else {\n throw Error(`Unknown format: ${this.format}`);\n }\n }\n\n private getValidDateOrNull(obj: any): D | null {\n return (this.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\n }\n\n private setViewValue(value: string) {\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', value);\n }\n\n private updateView() {\n const formattedValue = this.getTimeStringFromDate(this.value, this.format);\n\n this.setViewValue(formattedValue);\n }\n\n private setControl(control: AbstractControl) {\n if (!this.control) {\n this.control = control;\n }\n }\n\n // tslint:disable-next-line:no-empty\n private validatorOnChange = () => {};\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { McTimepicker } from './timepicker.directive';\n\n\n@NgModule({\n imports: [\n CommonModule,\n A11yModule,\n PlatformModule,\n FormsModule\n ],\n declarations: [McTimepicker],\n exports: [McTimepicker]\n})\nexport class McTimepickerModule {}\n"]}
@@ -42,5 +42,6 @@ export declare class McDropdownItem extends McDropdownItemMixinBase implements I
42
42
  handleMouseEnter(): void;
43
43
  /** Gets the label to be used when determining whether the option should be focused. */
44
44
  getLabel(): string;
45
+ haltDisabledEvents(event: Event): void;
45
46
  }
46
47
  export {};