{"version":3,"file":"fundamental-ngx-core-time-picker.mjs","sources":["../../../../libs/core/time-picker/errors.ts","../../../../libs/core/time-picker/time-picker.component.ts","../../../../libs/core/time-picker/time-picker.component.html","../../../../libs/core/time-picker/time-picker.module.ts","../../../../libs/core/time-picker/fundamental-ngx-core-time-picker.ts"],"sourcesContent":["/** Creates an error to be thrown when attempting to use an invalid date implementation. */\nexport function createMissingDateImplementationError(provider: string): Error {\n    return Error(\n        `FdTime: No provider found for ${provider}. You must import one of the following ` +\n            `modules at your application root: FdDatetimeModule, or provide a ` +\n            `custom implementation.`\n    );\n}\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    DestroyRef,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    inject,\n    Inject,\n    input,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Optional,\n    Output,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport {\n    DATE_TIME_FORMATS,\n    DatetimeAdapter,\n    DateTimeFormats,\n    TranslateDayPeriodPipe\n} from '@fundamental-ngx/core/datetime';\nimport {\n    FormItemControl,\n    FormMessageComponent,\n    PopoverFormMessageService,\n    registerFormItemControl\n} from '@fundamental-ngx/core/form';\nimport { InputGroupComponent, InputGroupInputDirective } from '@fundamental-ngx/core/input-group';\nimport {\n    PopoverBodyComponent,\n    PopoverComponent,\n    PopoverControlComponent,\n    PopoverService\n} from '@fundamental-ngx/core/popover';\nimport { Placement } from '@fundamental-ngx/core/shared';\nimport { TimeComponent } from '@fundamental-ngx/core/time';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { createMissingDateImplementationError } from './errors';\n\nlet timePickerCounter = 0;\n\n@Component({\n    selector: 'fd-time-picker',\n    templateUrl: './time-picker.component.html',\n    host: {\n        '(focusout)': '_focusOut($event)',\n        '(blur)': 'onTouched()',\n        class: 'fd-time-picker fd-timepicker-custom'\n    },\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => TimePickerComponent),\n            multi: true\n        },\n        {\n            provide: NG_VALIDATORS,\n            useExisting: forwardRef(() => TimePickerComponent),\n            multi: true\n        },\n        PopoverFormMessageService,\n        PopoverService,\n        registerFormItemControl(TimePickerComponent)\n    ],\n    styleUrl: './time-picker.component.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        PopoverComponent,\n        PopoverControlComponent,\n        InputGroupComponent,\n        InputGroupInputDirective,\n        PopoverBodyComponent,\n        NgTemplateOutlet,\n        FormMessageComponent,\n        TimeComponent,\n        FormsModule,\n        FdTranslatePipe,\n        TranslateDayPeriodPipe\n    ]\n})\nexport class TimePickerComponent<D>\n    implements ControlValueAccessor, OnInit, AfterViewInit, OnChanges, OnDestroy, Validator, FormItemControl\n{\n    /**\n     * Date time object representation\n     */\n    @Input()\n    time: Nullable<D>;\n\n    /** Id attribute for input element inside TimePicker component */\n    @Input()\n    inputId: string;\n\n    /** Disables the component. */\n    @Input()\n    disabled: boolean;\n\n    /** If it is mandatory field */\n    @Input()\n    required = false;\n\n    /** Whether to show spinner buttons */\n    @Input()\n    spinnerButtons = true;\n\n    /**\n     * When set to false, uses the 24 hour clock (hours ranging from 0 to 23).\n     * Default value based on the current locale format option\n     */\n    @Input()\n    meridian: boolean;\n\n    /**\n     * When set to false, hides the input for seconds.\n     * Default value based on the current locale format option\n     * */\n    @Input()\n    displaySeconds: boolean;\n\n    /**\n     * When set to false, hides the input for minutes.\n     * Default value based on the current locale format option\n     * */\n    @Input()\n    displayMinutes: boolean;\n\n    /**\n     * When set to false, hides the input for hours.\n     * Default value based on the current locale format option\n     * */\n    @Input()\n    displayHours: boolean;\n\n    /**\n     * Default time picker placeholder which is set dependant on the hours, minutes and seconds.\n     * Otherwise It can be set to a default value\n     */\n    @Input()\n    placeholder: string;\n\n    /** Aria label for the time picker input. */\n    @Input()\n    timePickerInputLabel: string;\n\n    /** Aria label for the time picker toggle button. */\n    @Input()\n    timePickerButtonLabel: string;\n\n    /** Aria-labelledby for the time picker toggle button. */\n    @Input()\n    ariaLabelledBy: Nullable<string>;\n\n    /** Whether a null input is considered valid(success). */\n    @Input()\n    allowNull = true;\n\n    /** Defines if time component should be used with tablet mode */\n    @Input()\n    tablet = false;\n\n    /** Text displayed in message */\n    @Input()\n    set message(message: string) {\n        this._message = message;\n    }\n\n    /** Type of the message. Can be 'success' | 'error' | 'warning' | 'information' */\n    @Input()\n    set messageType(messageType: FormStates) {\n        this._messageType = messageType;\n    }\n\n    /**\n     * The trigger events that will open/close the message box.\n     * Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp).\n     */\n    @Input()\n    set messageTriggers(triggers: string[]) {\n        this._messageTriggers = triggers;\n        this._popoverFormMessage.triggers = triggers;\n    }\n\n    /**\n     *  The placement of the popover. It can be one of: top, top-start, top-end, bottom,\n     *  bottom-start, bottom-end, right, right-start, right-end, left, left-start, left-end.\n     */\n    @Input()\n    placement: Placement = 'bottom-start';\n\n    /** Whether to validate the time picker input. */\n    @Input()\n    useValidation = true;\n\n    /**\n     *  The state of the form control - applies css classes.\n     *  Also this is applied to message.\n     *  Can be `success`, `error`, `warning`, `information` or blank for default.\n     */\n    @Input()\n    set state(state: FormStates) {\n        this._state = state;\n    }\n\n    get state(): FormStates {\n        if (this._state == null && this.useValidation && this._isInvalidTimeInput) {\n            return 'error';\n        }\n        return this._state ?? 'default';\n    }\n\n    /**\n     * Whether AddOn Button should be focusable\n     * @default true\n     */\n    @Input()\n    buttonFocusable = true;\n\n    /**\n     * When set to true, time inputs won't allow to have 1 digit\n     * for example 9 will become 09\n     * but 12 will be kept as 12.\n     */\n    @Input()\n    keepTwoDigitsTime = false;\n\n    /**\n     * Display format option to customize time format in input control.\n     * Must be a format option that is understandable by DatetimeAdapter.\n     */\n    @Input()\n    displayFormat: unknown;\n\n    /**\n     * Parse format option to customize time format in input control.\n     * Must be a format option that is understandable by DatetimeAdapter.\n     */\n    @Input()\n    parseFormat: unknown;\n\n    /** Event emitted when the state of the isOpen property changes. */\n    @Output()\n    isOpenChange = new EventEmitter<boolean>();\n\n    /** @hidden */\n    @ViewChild(TimeComponent)\n    child: TimeComponent<D>;\n\n    /** @hidden */\n    @ViewChild('inputGroupComponent', { read: ElementRef })\n    _inputGroupElement: ElementRef;\n\n    /** @hidden */\n    @ViewChild(InputGroupInputDirective, { read: ElementRef })\n    _inputElement: ElementRef;\n\n    /** @hidden */\n    @ViewChild('formMessageTemplate')\n    private readonly _formMessageTemplate: TemplateRef<any>;\n\n    /**\n     * The interval between selectable minutes (e.g., 1 for every minute, 5 for 5-minute intervals, 15 for 15-minute intervals).\n     * Defaults to 1 (every minute).\n     */\n    readonly minuteStep = input<number>(1);\n\n    /** @hidden */\n    _message: string | null = null;\n\n    /** @hidden */\n    _messageType: FormStates | null = null;\n\n    /** @hidden */\n    _messageTriggers: string[] = ['focusin', 'focusout'];\n\n    /**\n     * @hidden\n     * Whether the input time is valid(success). Internal use.\n     */\n    _isInvalidTimeInput = false;\n\n    /**\n     * @hidden\n     * Indicates when popover is opened\n     */\n    isOpen: boolean;\n\n    /** @hidden */\n    _meridian: boolean;\n\n    /** @hidden */\n    _displaySeconds: boolean;\n\n    /** @hidden */\n    _displayMinutes: boolean;\n\n    /** @hidden */\n    _displayHours: boolean;\n\n    /**\n     * @hidden\n     * Input field value\n     */\n    _inputTimeValue = '';\n\n    /** @hidden */\n    _formValueStateMessageId = `fd-time-picker-form-message-${timePickerCounter++}`;\n\n    /** @hidden */\n    private _state: FormStates | null = null;\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    private _subscriptions = new Subscription();\n\n    /** @hidden */\n    get _placeholder(): string {\n        return this.placeholder || this._getPlaceholder();\n    }\n\n    /** @hidden */\n    constructor(\n        private _changeDetectorRef: ChangeDetectorRef,\n        private _elementRef: ElementRef,\n        // Use @Optional to avoid angular injection error message and throw our own which is more precise one\n        @Optional() private _dateTimeAdapter: DatetimeAdapter<D>,\n        @Optional() @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats,\n        private _popoverFormMessage: PopoverFormMessageService\n    ) {\n        if (!this._dateTimeAdapter) {\n            throw createMissingDateImplementationError('DateTimeAdapter');\n        }\n        if (!this._dateTimeFormats) {\n            throw createMissingDateImplementationError('DATE_TIME_FORMATS');\n        }\n    }\n\n    /** @hidden */\n    onChange: (_: Nullable<D>) => void = () => {};\n    /** @hidden */\n    onTouched: () => void = () => {};\n\n    /** @hidden */\n    ngOnInit(): void {\n        this._calculateTimeOptions();\n        this._formatTimeInputField();\n\n        this._dateTimeAdapter.localeChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n            this._calculateTimeOptions();\n            this._formatTimeInputField();\n            this._changeDetectorRef.detectChanges();\n        });\n    }\n\n    /** @hidden */\n    ngOnChanges(changes: SimpleChanges): void {\n        if (\n            ['displayHours', 'displayMinutes', 'displaySeconds', 'meridian', 'displayFormat'].some(\n                (change) => change in changes\n            )\n        ) {\n            this._calculateTimeOptions();\n        }\n        if (changes.displayFormat) {\n            this._formatTimeInputField();\n        }\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._subscriptions.unsubscribe();\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this.initialiseVariablesInMessageService();\n    }\n\n    /**\n     * @hidden\n     * Function that implements Validator Interface, adds validation support for forms\n     */\n    validate(): { [key: string]: any } | null {\n        if (this._isInvalidTimeInput) {\n            return {\n                timeValidation: {\n                    valid: false\n                }\n            };\n        }\n\n        return null;\n    }\n\n    /**\n     * Returns the current value of the time input.\n     */\n    getTime(): Nullable<D> {\n        return this.time;\n    }\n\n    /**\n     * Returns format options to be used during time formatting.\n     */\n    getDisplayFormat(): unknown {\n        return this.displayFormat || this._dateTimeFormats.display.timeInput;\n    }\n\n    /**\n     * Returns format options to be used during time parsing.\n     */\n    getParseFormat(): unknown {\n        return this.parseFormat || this._dateTimeFormats.parse.timeInput;\n    }\n\n    /** @hidden */\n    _getFormattedTime(time = this.time): string {\n        let formattedTime = '';\n\n        try {\n            if (this.allowNull && time === null) {\n                return '';\n            }\n            formattedTime = this._dateTimeAdapter.format(time!, this.getDisplayFormat());\n        } catch {}\n\n        return formattedTime;\n    }\n\n    /**\n     *  @hidden\n     *  When the open state is changed, there should be at least one active item, which by default is hour.\n     */\n    _setIsOpen(isOpen: boolean): void {\n        this.isOpen = isOpen;\n        this._onOpenStateChanged(isOpen);\n    }\n\n    /**\n     * @hidden\n     * Time input field changes handler\n     */\n    _timeInputChanged(inputValue: string): void {\n        inputValue = inputValue.trim();\n\n        // check if value has been changed\n        if (this._inputTimeValue === inputValue) {\n            return;\n        }\n\n        this._inputTimeValue = inputValue;\n\n        if (inputValue === '') {\n            this.time = null;\n            this._isInvalidTimeInput = !this.allowNull;\n        }\n\n        if (inputValue !== '') {\n            // Regex to detect and rearrange day period in the time string\n            const dayPeriodPattern = /\\b(night|morning|afternoon|evening)\\b/g;\n            inputValue = inputValue.replace(dayPeriodPattern, '').trim();\n\n            this.time = this._dateTimeAdapter.parse(inputValue, this.getParseFormat());\n            this._isInvalidTimeInput = !this._dateTimeAdapter.isValid(this.time!);\n        }\n\n        this.onChange(this.time);\n\n        this._changeDetectorRef.detectChanges();\n    }\n\n    /** @hidden */\n    _inputGroupClicked($event: MouseEvent): void {\n        if (!this.isOpen && !this.disabled) {\n            $event.stopPropagation();\n            this._setIsOpen(true);\n        }\n    }\n\n    /** @hidden */\n    _addOnButtonClicked(): void {\n        if (!this.disabled) {\n            this._setIsOpen(!this.isOpen);\n        }\n    }\n\n    /** @hidden */\n    _popoverClosed(): void {\n        this._setIsOpen(false);\n    }\n\n    /** @hidden */\n    _getPlaceholder(): string {\n        let retVal = '';\n\n        if (this._displayHours) {\n            retVal = retVal + 'hh';\n        }\n        if (this._displayMinutes) {\n            retVal = retVal + ':mm';\n        }\n        if (this._displaySeconds) {\n            retVal = retVal + ':ss';\n        }\n        if (this._meridian) {\n            retVal = retVal + ' am/pm';\n        }\n\n        return retVal;\n    }\n\n    /** @hidden */\n    _timeComponentValueChanged(time: D): void {\n        if (this._dateTimeAdapter.dateTimesEqual(time, this.time!)) {\n            return;\n        }\n        this._inputTimeValue = this._getFormattedTime(time);\n        this.time = time;\n        this._isInvalidTimeInput = !this._dateTimeAdapter.isValid(time);\n        this.onChange(time);\n        this._changeDetectorRef.detectChanges();\n    }\n\n    // #region ControlValueAccessor\n\n    /** @hidden */\n    registerOnChange(fn: (time: Nullable<D>) => void): void {\n        this.onChange = fn;\n    }\n\n    /** @hidden */\n    registerOnTouched(fn: any): void {\n        this.onTouched = fn;\n    }\n\n    /** @hidden */\n    setDisabledState(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n        this._changeDetectorRef.detectChanges();\n    }\n\n    /** @hidden */\n    writeValue(time: D): void {\n        if (!time) {\n            this.time = null;\n            this._inputTimeValue = '';\n            this._isInvalidTimeInput = !this.allowNull;\n        } else {\n            this.time = this._dateTimeAdapter.parse(time, this.getParseFormat());\n            this._inputTimeValue = this._getFormattedTime(time);\n            this._isInvalidTimeInput = !this._dateTimeAdapter.isValid(time);\n        }\n        this._changeDetectorRef.markForCheck();\n    }\n\n    // #endregion ControlValueAccessor\n\n    /** @hidden */\n    _formatTimeInputField(time = this.time): string {\n        return (this._inputTimeValue = this._getFormattedTime(time));\n    }\n\n    /** @hidden */\n    _changeMessageVisibility(): void {\n        if (this.isOpen) {\n            this._popoverFormMessage.hide();\n        } else {\n            this._popoverFormMessage.show();\n        }\n    }\n\n    /** @hidden */\n    _onOpenStateChanged(isOpen: boolean): void {\n        this.isOpenChange.emit(isOpen);\n        this._changeMessageVisibility();\n        if (isOpen) {\n            this._changeDetectorRef.detectChanges();\n            this.child.focusActiveColumn();\n        }\n        // focus input control every time popup is closed\n        if (!isOpen && this._inputElement) {\n            this._inputElement.nativeElement.focus();\n        }\n    }\n\n    /** @hidden */\n    protected _focusOut(event: FocusEvent): void {\n        if (!this._elementRef.nativeElement.contains(event.relatedTarget)) {\n            this.onTouched();\n        }\n    }\n\n    /** @hidden */\n    private _calculateTimeOptions(): void {\n        const format = this.getDisplayFormat();\n\n        // default meridian option based on format option\n        this._meridian =\n            this.meridian != null ? this.meridian : this._dateTimeAdapter.isTimeFormatIncludesDayPeriod(format);\n\n        // default seconds option based on format option\n        this._displaySeconds =\n            this.displaySeconds != null\n                ? this.displaySeconds\n                : this._dateTimeAdapter.isTimeFormatIncludesSeconds(format);\n\n        // default minutes option based on format option\n        this._displayMinutes =\n            this.displayMinutes != null\n                ? this.displayMinutes\n                : this._dateTimeAdapter.isTimeFormatIncludesMinutes(format);\n\n        // default hours option based on format option\n        this._displayHours =\n            this.displayHours != null ? this.displayHours : this._dateTimeAdapter.isTimeFormatIncludesHours(format);\n    }\n\n    /** @hidden */\n    private initialiseVariablesInMessageService(): void {\n        this._popoverFormMessage.init(this._inputGroupElement);\n        this._popoverFormMessage.message = this._formMessageTemplate;\n        this._popoverFormMessage.triggers = this._messageTriggers;\n    }\n}\n","<fd-popover\n    [(isOpen)]=\"isOpen\"\n    (isOpenChange)=\"_onOpenStateChanged($event)\"\n    [triggers]=\"[]\"\n    [disabled]=\"disabled\"\n    [placement]=\"placement\"\n    [closeOnEscapeKey]=\"true\"\n    [focusAutoCapture]=\"false\"\n    [focusTrapped]=\"true\"\n>\n    <fd-popover-control>\n        <fd-input-group\n            #inputGroupComponent\n            (addOnButtonClicked)=\"_addOnButtonClicked()\"\n            [button]=\"true\"\n            [state]=\"state\"\n            [disabled]=\"disabled\"\n            [buttonFocusable]=\"buttonFocusable\"\n            [isControl]=\"true\"\n            [isExpanded]=\"isOpen\"\n            [glyphAriaLabel]=\"timePickerButtonLabel || ('coreTimePicker.timePickerButtonLabel' | fdTranslate)()\"\n            glyph=\"fob-watch\"\n        >\n            <input\n                type=\"text\"\n                class=\"fd-input\"\n                fd-input-group-input\n                [value]=\"_inputTimeValue | translateDayPeriod\"\n                (focusout)=\"_timeInputChanged($any($event.currentTarget).value)\"\n                (keyup.enter)=\"_timeInputChanged($any($event.currentTarget).value)\"\n                [disabled]=\"disabled\"\n                [attr.id]=\"inputId\"\n                [placeholder]=\"_placeholder\"\n                [attr.aria-labelledby]=\"ariaLabelledBy\"\n                [attr.aria-label]=\"timePickerInputLabel || ('coreTimePicker.timePickerInputLabel' | fdTranslate)()\"\n                [attr.aria-describedby]=\"_formValueStateMessageId\"\n                [attr.aria-required]=\"required\"\n            />\n        </fd-input-group>\n    </fd-popover-control>\n    <fd-popover-body>\n        <ng-template [ngTemplateOutlet]=\"formMessageTemplate\"></ng-template>\n        <ng-content></ng-content>\n        @if (isOpen) {\n            <fd-time\n                [tablet]=\"tablet\"\n                [disabled]=\"disabled\"\n                [keepTwoDigits]=\"keepTwoDigitsTime\"\n                [ngModel]=\"time\"\n                (ngModelChange)=\"_timeComponentValueChanged($event)\"\n                [meridian]=\"_meridian\"\n                [displayHours]=\"_displayHours\"\n                [displayMinutes]=\"_displayMinutes\"\n                [displaySeconds]=\"_displaySeconds\"\n                [minuteStep]=\"minuteStep()\"\n                [spinnerButtons]=\"spinnerButtons\"\n            ></fd-time>\n        }\n    </fd-popover-body>\n</fd-popover>\n<div [style.display]=\"'none'\" aria-hidden=\"true\">\n    <div [attr.id]=\"_formValueStateMessageId\" aria-atomic=\"true\" aria-live=\"assertive\">\n        @switch (state) {\n            @case ('success') {\n                {{ ('coreTimePicker.valueStateSuccessMessage' | fdTranslate)() }}\n            }\n            @case ('information') {\n                {{ ('coreTimePicker.valueStateInformationMessage' | fdTranslate)() }}\n            }\n            @case ('warning') {\n                {{ ('coreTimePicker.valueStateWarningMessage' | fdTranslate)() }}\n            }\n            @case ('error') {\n                {{ ('coreTimePicker.valueStateErrorMessage' | fdTranslate)() }}\n            }\n        }\n        {{ _message }}\n    </div>\n</div>\n<ng-template #formMessageTemplate>\n    @if (_message) {\n        <fd-form-message [embedded]=\"true\" [type]=\"state\">\n            {{ _message }}\n        </fd-form-message>\n    }\n</ng-template>\n","import { NgModule } from '@angular/core';\n\nimport { TimePickerComponent } from './time-picker.component';\n\n/**\n * @deprecated\n * Use direct import of `TimePickerComponent`\n */\n@NgModule({\n    imports: [TimePickerComponent],\n    exports: [TimePickerComponent]\n})\nexport class TimePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}