import { JSXInterface } from '../jsx'; import { CSSResultGroup, ElementSize, PropertyValues, ResponsiveElement, TemplateResult } from '@refinitiv-ui/core'; import '@refinitiv-ui/phrasebook/locale/en/clock.js'; import { TranslatePromise } from '@refinitiv-ui/translate'; /** * Display hours, minutes and seconds as clock interface * @fires value-changed - Fired when `value` property changes while ticking. * @fires offset-changed - Fired when the user offsets the clock in `interactive` mode. The event is not triggered if `offset` property is changed programmatically. */ export declare class Clock extends ResponsiveElement { /** * Element version number * @returns version number */ static get version(): string; /** * A `CSSResultGroup` that will be used * to style the host, slotted children * and the internal template of the element. * @return CSS template */ static get styles(): CSSResultGroup; /** * Shared internal function, * used for handling notifications from tick manager. * @returns {void} */ private onTick; /** * Current time in seconds */ private get currentTime(); /** * Base value to use when calculating current time. * This value is updated whenever the value property is set. */ private baseTime; /** * Current amount of ticks in session. */ private sessionTicks; /** * Timestamp of when the tick property was last updated. * Used for accurately ticking time. */ private tickTimestamp; /** * Current active segment for interactive mode */ private activeSegment; /** * Clock internal translation strings */ protected tPromise: TranslatePromise; /** * Get time value in format `hh:mm:ss` * @default 00:00:00 * @returns value */ get value(): string; /** * Time to display in hh:mm/h:mm:ss format. * @param value new time value * @returns {void} */ set value(value: string); private _offset; /** * number of seconds that the display time should be offset from the original value * @default 0 * @returns offset */ get offset(): number; /** * Shifts displayed time by seconds without changing the original value * @param offset new offset value * @returns {void} */ set offset(offset: number); private _tick; /** * Toggles clock ticking function. * @default false */ get tick(): boolean; set tick(value: boolean); /** * Display the digital clock in 12hr format. */ amPm: boolean; /** * Display the seconds segment. */ showSeconds: boolean; /** * Display clock in analogue style. */ analogue: boolean; /** * Enable interactive mode. Allowing the user to offset the value. */ interactive: boolean; /** * Getter for hours part. */ private hoursPart; /** * Getter for minutes part. */ private minutesPart; /** * Getter for seconds part. */ private secondsPart; /** * Size of the clock. */ private size; /** * Get the display time in seconds. * This value includes any offsets applied. * @returns display time */ private get displayTime(); /** * Get hours portion of value * @returns hours value */ private get hours(); /** * Get minutes portion of value * @returns minutes value */ private get minutes(); /** * Get seconds portion of value * @returns seconds value */ private get seconds(); /** * Get display hours in 24hr format * @returns display hours */ private get displayHours24(); /** * Get display hours in 12hr format * @returns display hours */ private get displayHours12(); /** * Get display hours * @returns display hours */ private get displayHours(); /** * Get display minutes * @returns display minutes */ private get displayMinutes(); /** * Get display seconds * @returns display seconds */ private get displaySeconds(); /** * Get display value * @returns display value */ private get displayValue(); /** * Get display AM or PM depending on time * @returns `AM` or `PM` */ private get displayAmPm(); /** * Returns `true` or `false` depending on whether the hours are before, or, after noon. * @returns Result */ private get isAM(); /** * Returns `true` if display minutes has changed * @returns Result */ private get isDisplayMinutesChange(); /** * Configures the tick manager to either start or stop ticking, * depending on the state of the element. * @param [forceTick=false] forces a tick update * @returns {void} */ private configureTickManager; /** * Synchronises the tick session to the base value * and then resets the session. * @returns {void} */ private synchronise; /** * Shift the offset by a direction and amount. * @param direction direction to shift * @param amount value to shift * @returns {void} */ private shift; /** * Returns any shift amount assigned to a segment. * @param segment Segment. * @returns {void} */ private getShiftAmountFromSegment; /** * Returns `true` or `false` depends on the offset value's effect on giving segment * * @param segment segment * @returns Result */ private isSegmentShifted; /** * Handles any keydown events * Used for control keys * @param event Event Object * @returns {void} */ private onKeydown; /** * Handles any tap events * Used for increment/decrement buttons * @param event Event Object * @returns {void} */ private onTapStart; /** * Handle valid control keys and execute their corresponding commands * Will stop when readonly is set * @param event Event Object * @returns {void} */ private manageControlKeys; /** * Handles UP key press * @returns {void} */ private handleUpKey; /** * Handle DOWN key press * @returns {void} */ private handleDownKey; /** * Set aria-valuenow to display value and aria-valuetext to translated format * @param updateAriaValueText condition to update aria-valueText * @returns {void} */ private updateAriaValue; /** * Get template of segment * @param segment segment * @param value segment's value * @returns {TemplateResult} template */ private generateSegmentTemplate; /** * Template of divider * @returns {TemplateResult} template */ private get dividerTemplate(); /** * Template of amPm segment * @returns {TemplateResult} template */ private get amPmTemplate(); /** * Template of hours segment * @returns {TemplateResult} template */ private get hoursSegmentTemplate(); /** * Template of minutes segment * @returns {TemplateResult} template */ private get minutesSegmentTemplate(); /** * Template of seconds segment * @returns {TemplateResult} template */ private get secondsSegmentTemplate(); /** * Called when the element's dimension have changed * @param size Element size * @ignore * @returns {void} */ resizedCallback(size: ElementSize): void; /** * Called when the element has been appended to the DOM * @returns {void} */ connectedCallback(): void; /** * Called when the element has been disconnected from the DOM * @returns {void} */ disconnectedCallback(): void; /** * Called once after the component is first rendered * @param changedProperties map of changed properties with old values * @returns {void} */ protected firstUpdated(changedProperties: PropertyValues): void; /** * Handles interactive by update role, tabindex, and aria attribute * @returns {void} */ private interactiveChanged; /** * Called before update() to compute values needed during the update. * @param changedProperties Properties that has changed * @returns {void} */ protected willUpdate(changedProperties: PropertyValues): void; /** * Template for digital clock * @returns {TemplateResult} template */ protected get digitalClockTemplate(): TemplateResult; /** * Template for analogue clock * @returns {TemplateResult} template */ protected get analogueClockTemplate(): TemplateResult; /** * A `TemplateResult` that will be used * to render the updated internal template. * @returns {TemplateResult} Render template */ protected render(): TemplateResult; } declare global { interface HTMLElementTagNameMap { 'ef-clock': Clock; } } declare global { interface HTMLElementTagNameMap { 'ef-clock': Clock; } namespace JSX { interface IntrinsicElements { 'ef-clock': Partial | JSXInterface.HTMLAttributes; } } } export {};