@esri/calcite-components
Version:
Web Components for Esri's Calcite Design System.
78 lines (77 loc) • 2.57 kB
TypeScript
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;
}