UNPKG

@esri/calcite-components

Version:

Web Components for Esri's Calcite Design System.

78 lines (77 loc) 2.57 kB
import { LocalizedComponent } from "./locale"; export type MessageBundle = Record<string, string>; export declare const componentLangToMessageBundleCache: Record<string, Promise<MessageBundle>>; /** * This utility sets up the messages used by the component. It should be awaited in the `componentWillLoad` lifecycle hook. * * @param component */ export declare function setUpMessages(component: T9nComponent): Promise<void>; /** * This utility must be set up for the component to update its default message bundle if the locale changes. * * It can be set up in **either** of the following ways: * * 1. called from `LocalizedComponent`'s `onLocaleChange` method or * 2. called from a watcher configured to watch `LocalizedComponent`'s `effectiveLocale` prop * * @param component * @param lang */ export declare function updateMessages(component: T9nComponent, lang: string): Promise<void>; /** * This utility sets up internals for messages support. * * It needs to be called in `connectedCallback` * * **Note**: this must be called after `LocalizedComponent`'s `connectLocalized` method. * * @param component */ export declare function connectMessages(component: T9nComponent): void; /** * This utility tears down internals for messages support. * * It needs to be called in `disconnectedCallback` * * @param component */ export declare function disconnectMessages(component: T9nComponent): void; /** * This interface enables components to support built-in translation strings. * * **Notes**: * * This requires `LocalizedComponent` to be implemented. * To avoid unnecessary lookups, composite components should set `lang` on internal t9n components. */ export interface T9nComponent extends LocalizedComponent { el: HTMLElement; /** * This property holds all messages used by the component's rendering. * * This prop should use the `@Prop` decorator. It uses `@Prop` decorator for testing purpose only. */ messages: MessageBundle; /** * This property holds the component's default messages. */ defaultMessages: MessageBundle; /** * This property holds all user message overrides. * * This prop should use the `@Prop` decorator. */ messageOverrides: Partial<MessageBundle>; /** * This private method ensures messages are kept in sync. * * This method should be empty and configured to watch for changes on `messageOverrides` property. * * @Watch("messageOverrides") * onMessagesChange(): void { * \/* wired up by t9n util *\/ * } */ onMessagesChange(): void; }