UNPKG

microsoft-adaptivecards

Version:

Adaptive Card typescript/javascript library for Html Clients

776 lines (768 loc) 26.3 kB
declare module 'adaptive-cards/enums' { export type Size = "auto" | "stretch" | "small" | "medium" | "large"; export type TextSize = "small" | "normal" | "medium" | "large" | "extraLarge"; export type TextWeight = "lighter" | "normal" | "bolder"; export type TextColor = "dark" | "light" | "accent" | "good" | "warning" | "attention"; export type HorizontalAlignment = "left" | "center" | "right"; export type ActionAlignment = "left" | "center" | "right" | "stretch"; export type ActionStyle = "button" | "link"; export type ContainerStyle = "normal" | "emphasis"; export type ImageStyle = "normal" | "person"; export type Separation = "none" | "default" | "strong"; export type ShowCardActionMode = "inline" | "inlineEdgeToEdge" | "popup"; export type Orientation = "horizontal" | "vertical"; export enum ValidationError { ActionTypeNotAllowed = 0, CollectionCantBeEmpty = 1, ElementTypeNotAllowed = 2, InteractivityNotAllowed = 3, InvalidPropertyValue = 4, MissingCardType = 5, PropertyCantBeNull = 6, TooManyActions = 7, UnknownActionType = 8, UnknownElementType = 9, UnsupportedCardVersion = 10, } } declare module 'adaptive-cards/host-config' { import * as Enums from 'adaptive-cards/enums'; export interface ISpacingDefinition { left: number; top: number; right: number; bottom: number; } export interface IColorDefinition { normal: string; subtle: string; } export interface ISeparationDefinition { spacing: number; lineThickness?: number; lineColor?: string; } export interface IAdaptiveCardConfig { backgroundColor: string; padding: ISpacingDefinition; } export interface ITextBlockConfig { color: Enums.TextColor; separations: { small: ISeparationDefinition; normal: ISeparationDefinition; medium: ISeparationDefinition; large: ISeparationDefinition; extraLarge: ISeparationDefinition; }; } export interface IContainerStyleDefinition { backgroundColor?: string; padding?: ISpacingDefinition; borderColor?: string; borderThickness?: ISpacingDefinition; } export interface IContainerConfig { separation: ISeparationDefinition; normal: IContainerStyleDefinition; emphasis: IContainerStyleDefinition; } export interface IImageConfig { separation: ISeparationDefinition; size: Enums.Size; } export interface IImageSetConfig { separation: ISeparationDefinition; imageSize: Enums.Size; } export interface IFactTextDefinition { size: Enums.TextSize; color: Enums.TextColor; isSubtle: boolean; weight: Enums.TextWeight; wrap: boolean; } export interface IFactTitleDefinition extends IFactTextDefinition { maxWidth?: number; } export interface IFactSetConfig { separation: ISeparationDefinition; title: IFactTitleDefinition; value: IFactTextDefinition; spacing: number; } export interface IColumnSetConfig { separation: ISeparationDefinition; } export interface IColumnConfig { separation: ISeparationDefinition; } export interface IShowCardActionConfig { actionMode: Enums.ShowCardActionMode; inlineTopMargin: number; backgroundColor: string; padding: ISpacingDefinition; } export interface IActionsConfig { maxActions: number; separation: ISeparationDefinition; buttonSpacing: number; showCard: IShowCardActionConfig; preExpandSingleShowCardAction?: boolean; actionsOrientation: Enums.Orientation; actionAlignment: Enums.ActionAlignment; } export interface IInputConfig { separation: ISeparationDefinition; } export interface IHostConfig { supportsInteractivity: boolean; fontFamily?: string; fontSizes: { small: number; normal: number; medium: number; large: number; extraLarge: number; }; fontWeights: { lighter: number; normal: number; bolder: number; }; imageSizes: { small: number; medium: number; large: number; }; colors: { dark: IColorDefinition; light: IColorDefinition; accent: IColorDefinition; good: IColorDefinition; warning: IColorDefinition; attention: IColorDefinition; }; strongSeparation: ISeparationDefinition; actions: IActionsConfig; adaptiveCard: IAdaptiveCardConfig; container: IContainerConfig; textBlock: ITextBlockConfig; image: IImageConfig; imageSet: IImageSetConfig; factSet: IFactSetConfig; column: IColumnConfig; columnSet: IColumnSetConfig; input: IInputConfig; } export function parseHostConfig(serializedConfiguration: string): IHostConfig; } declare module 'adaptive-cards/utils' { import * as Enums from 'adaptive-cards/enums'; import * as HostConfig from 'adaptive-cards/host-config'; export function processMarkdown(text: string): any; export function getValueOrDefault<T>(obj: any, defaultValue: T): T; export function isNullOrEmpty(value: string): boolean; export function appendChild(node: Node, child: Node): void; export function renderSeparation(separationDefinition: HostConfig.ISeparationDefinition, orientation: Enums.Orientation): HTMLElement; export function stringToCssColor(color: string): string; export interface IInput { id: string; value: string; } export class StringWithSubstitutions { private _isProcessed; private _original; private _processed; substituteInputValues(inputs: Array<IInput>): void; get(): string; set(value: string): void; } } declare module 'adaptive-cards/text-formatters' { export function formatText(text: string): string; } declare module 'adaptive-cards/card-elements' { import * as Enums from 'adaptive-cards/enums'; import * as Utils from 'adaptive-cards/utils'; import * as HostConfig from 'adaptive-cards/host-config'; export interface IValidationError { error: Enums.ValidationError; message: string; } export abstract class CardElement { private _parent; private internalGetNonZeroPadding(element, padding); protected showBottomSpacer(requestingElement: CardElement): void; protected hideBottomSpacer(requestingElement: CardElement): void; protected setParent(value: CardElement): void; protected readonly useDefaultSizing: boolean; protected readonly padding: HostConfig.ISpacingDefinition; protected abstract internalRender(): HTMLElement; speak: string; horizontalAlignment: Enums.HorizontalAlignment; separation: Enums.Separation; abstract getJsonTypeName(): string; abstract getDefaultSeparationDefinition(): HostConfig.ISeparationDefinition; abstract renderSpeech(): string; getNonZeroPadding(): HostConfig.ISpacingDefinition; getForbiddenElementTypes(): Array<string>; getForbiddenActionTypes(): Array<any>; parse(json: any): void; validate(): Array<IValidationError>; render(): HTMLElement; isLastItem(item: CardElement): boolean; getRootElement(): CardElement; getAllInputs(): Array<Input>; readonly isInteractive: boolean; readonly isStandalone: boolean; readonly parent: CardElement; } export class TextBlock extends CardElement { size: Enums.TextSize; weight: Enums.TextWeight; color?: Enums.TextColor; text: string; isSubtle: boolean; wrap: boolean; maxLines: number; protected internalRender(): HTMLElement; parse(json: any): void; getJsonTypeName(): string; getDefaultSeparationDefinition(): HostConfig.ISeparationDefinition; renderSpeech(): string; } export class Fact { name: string; value: string; speak: string; renderSpeech(): string; } export class FactSet extends CardElement { protected readonly useDefaultSizing: boolean; protected internalRender(): HTMLElement; facts: Array<Fact>; getJsonTypeName(): string; getDefaultSeparationDefinition(): HostConfig.ISeparationDefinition; parse(json: any): void; renderSpeech(): string; } export class Image extends CardElement { protected readonly useDefaultSizing: boolean; protected internalRender(): HTMLElement; style: Enums.ImageStyle; url: string; size: Enums.Size; selectAction: ExternalAction; getJsonTypeName(): string; getDefaultSeparationDefinition(): HostConfig.ISeparationDefinition; parse(json: any): void; renderSpeech(): string; } export class ImageSet extends CardElement { private _images; protected internalRender(): HTMLElement; imageSize: Enums.Size; getJsonTypeName(): string; getDefaultSeparationDefinition(): HostConfig.ISeparationDefinition; parse(json: any): void; addImage(image: Image): void; renderSpeech(): string; } export abstract class Input extends CardElement implements Utils.IInput { id: string; title: string; defaultValue: string; readonly abstract value: string; getDefaultSeparationDefinition(): HostConfig.ISeparationDefinition; validate(): Array<IValidationError>; parse(json: any): void; renderSpeech(): string; getAllInputs(): Array<Input>; readonly isInteractive: boolean; } export class TextInput extends Input { private _textareaElement; private _inputElement; protected internalRender(): HTMLElement; maxLength: number; isMultiline: boolean; placeholder: string; getJsonTypeName(): string; parse(json: any): void; readonly value: string; } export class ToggleInput extends Input { private _checkboxInputElement; protected internalRender(): HTMLElement; title: string; valueOn: string; valueOff: string; getJsonTypeName(): string; parse(json: any): void; readonly value: string; } export class Choice { title: string; value: string; } export class ChoiceSetInput extends Input { private _selectElement; private _toggleInputs; protected internalRender(): HTMLElement; choices: Array<Choice>; isCompact: boolean; isMultiSelect: boolean; placeholder: string; getJsonTypeName(): string; validate(): Array<IValidationError>; parse(json: any): void; readonly value: string; } export class NumberInput extends Input { private _numberInputElement; protected internalRender(): HTMLElement; min: string; max: string; getJsonTypeName(): string; parse(json: any): void; readonly value: string; } export class DateInput extends Input { private _dateInputElement; protected internalRender(): HTMLElement; getJsonTypeName(): string; readonly value: string; } export class TimeInput extends Input { private _timeInputElement; protected internalRender(): HTMLElement; getJsonTypeName(): string; readonly value: string; } export abstract class Action { static createAction(json: any): Action; private _parent; protected setParent(value: CardElement): void; abstract getJsonTypeName(): string; abstract execute(): any; validate(): Array<IValidationError>; prepare(inputs: Array<Input>): void; parse(json: any): void; getAllInputs(): Array<Input>; title: string; readonly parent: CardElement; } export abstract class ExternalAction extends Action { execute(): void; } export class SubmitAction extends ExternalAction { private _isPrepared; private _originalData; private _processedData; getJsonTypeName(): string; prepare(inputs: Array<Input>): void; parse(json: any): void; data: Object; } export class OpenUrlAction extends ExternalAction { url: string; getJsonTypeName(): string; validate(): Array<IValidationError>; parse(json: any): void; } export class HttpHeader { private _value; name: string; prepare(inputs: Array<Input>): void; value: string; } export class HttpAction extends ExternalAction { private _url; private _body; private _headers; method: string; getJsonTypeName(): string; validate(): Array<IValidationError>; prepare(inputs: Array<Input>): void; parse(json: any): void; url: string; body: string; readonly headers: Array<HttpHeader>; } export class ShowCardAction extends Action { protected setParent(value: CardElement): void; readonly card: AdaptiveCard; title: string; execute(): void; getJsonTypeName(): string; validate(): Array<IValidationError>; parse(json: any): void; getAllInputs(): Array<Input>; } export class ActionSet extends CardElement { private _actionCollection; protected internalRender(): HTMLElement; actionStyle: Enums.ActionStyle; constructor(); getJsonTypeName(): string; getDefaultSeparationDefinition(): HostConfig.ISeparationDefinition; validate(): Array<IValidationError>; parse(json: any, itemsCollectionPropertyName?: string): void; addAction(action: Action): void; getAllInputs(): Array<Input>; renderSpeech(): string; readonly isInteractive: boolean; } export abstract class ContainerBase extends CardElement { private _items; protected showBottomSpacer(requestingElement: CardElement): void; protected hideBottomSpacer(requestingElement: CardElement): void; protected internalRender(): HTMLElement; protected getBackgroundColor(): string; protected _element: HTMLDivElement; protected readonly padding: HostConfig.ISpacingDefinition; selectAction: ExternalAction; backgroundImage: string; isLastItem(item: CardElement): boolean; getDefaultSeparationDefinition(): HostConfig.ISeparationDefinition; validate(): Array<IValidationError>; parse(json: any, itemsCollectionPropertyName?: string): void; addItem(item: CardElement): void; clear(): void; getAllInputs(): Array<Input>; renderSpeech(): string; } export class Container extends ContainerBase { protected getBackgroundColor(): string; protected internalRender(): HTMLElement; protected readonly padding: HostConfig.ISpacingDefinition; style: Enums.ContainerStyle; getJsonTypeName(): string; parse(json: any): void; } export class Column extends Container { private _computedWeight; protected readonly padding: HostConfig.ISpacingDefinition; protected internalRender(): HTMLElement; size: number | "auto" | "stretch"; getJsonTypeName(): string; getDefaultSeparationDefinition(): HostConfig.ISeparationDefinition; parse(json: any): void; readonly isStandalone: boolean; } export class ColumnSet extends CardElement { private _columns; protected internalRender(): HTMLElement; getJsonTypeName(): string; getDefaultSeparationDefinition(): HostConfig.ISeparationDefinition; parse(json: any): void; addColumn(column: Column): void; getAllInputs(): Array<Input>; renderSpeech(): string; } export interface IVersion { major: number; minor: number; } export class TypeRegistry<T> { private _items; private findTypeRegistration(typeName); clear(): void; registerType(typeName: string, createInstance: () => T): void; unregisterType(typeName: string): void; createInstance(typeName: string): T; } export abstract class ContainerWithActions extends ContainerBase { private _actionCollection; protected internalRender(): HTMLElement; actionStyle: Enums.ActionStyle; constructor(); parse(json: any, itemsCollectionPropertyName?: string): void; isLastItem(item: CardElement): boolean; addAction(action: Action): void; clear(): void; getAllInputs(): Array<Input>; readonly isStandalone: boolean; } export class AdaptiveCard extends ContainerWithActions { private static currentVersion; static elementTypeRegistry: TypeRegistry<CardElement>; static actionTypeRegistry: TypeRegistry<Action>; static onExecuteAction: (action: ExternalAction) => void; static onShowPopupCard: (action: ShowCardAction) => void; static onInlineCardExpanded: (action: ShowCardAction, isExpanded: boolean) => void; static onParseError: (error: IValidationError) => void; static initialize(): void; private isVersionSupported(); private _cardTypeName; protected getBackgroundColor(): string; protected readonly padding: HostConfig.ISpacingDefinition; minVersion: IVersion; fallbackText: string; getJsonTypeName(): string; validate(): Array<IValidationError>; parse(json: any): void; render(): HTMLElement; } export function setHostConfig(configuration: HostConfig.IHostConfig): void; export function resetHostConfig(): void; } declare module 'adaptive-cards/adaptive-cards' { export * from 'adaptive-cards/card-elements'; export * from 'adaptive-cards/enums'; export * from 'adaptive-cards/host-config'; } declare module 'adaptive-cards/schema' { export interface IActionBase extends ITypedElement { speak?: string; title: string; } export interface IActionHttp extends IActionBase { body?: string; headers?: any; method?: string; url: string; } export interface IActionOpenUrl extends IActionBase { url: string; } export interface IActionShowCard extends IActionBase { card: ICard; } export interface IActionSubmit extends IActionBase { data?: any; } export interface ICard extends ITypedElement { actions?: (IActionHttp | IActionOpenUrl | IActionShowCard | IActionSubmit)[]; backgroundImage?: string; body?: (ITextBlock | IImage | IImageSet | IFactSet | IContainer | IColumnSet | IInputDate | IInputNumber | IInputText | IInputTime | IInputToggle)[]; speak?: string; title?: string; } export interface ICardElement extends ITypedElement { speak?: string; horizontalAlignment?: HorizontalAlignment; separation?: Separation; } export interface IColumn extends IContainer { size?: string; } export interface IColumnSet extends ICardElement { columns: IColumn[]; } export interface IContainerBase extends ICardElement { actions?: (IActionHttp | IActionOpenUrl | IActionShowCard | IActionSubmit)[]; items?: (ITextBlock | IImage | IImageSet | IFactSet | IContainer | IColumnSet | IInputDate | IInputNumber | IInputText | IInputTime | IInputToggle)[]; selectAction?: (IActionHttp | IActionOpenUrl | IActionShowCard | IActionSubmit); startGroup?: boolean; } export interface IContainer extends IContainerBase { } export interface IFact { title: string; speak?: string; value: string; } export interface IFactSet extends ICardElement { facts: IFact[]; } export interface IImage extends ICardElement { altText?: string; selectAction?: IActionBase; size?: ImageSize; style?: ImageStyle; url: string; } export interface IImageSet extends ICardElement { images: IImage[]; size?: ImageSize; } export interface IInput extends ICardElement { id: string; } export interface IInputDate extends IInput { max?: string; min?: string; placeholder?: string; value?: string; } export interface IInputNumber extends IInput { max?: string; min?: string; placeholder?: string; value?: string; } export interface IInputText extends IInput { isMultiline?: boolean; maxLength?: number; style?: TextInputStyle; placeholder?: string; value?: string; } export interface IInputTime extends IInput { max?: string; min?: string; placeholder?: string; value?: string; } export interface IInputToggle extends IInput { title: string; value?: string; valueOn?: string; valueOff?: string; } export interface ITextBlock extends ICardElement { color?: TextColor; isSubtle?: boolean; maxLines?: number; size?: TextSize; text: string; weight?: TextWeight; wrap?: boolean; } export interface ITypedElement { type: string; } export type HorizontalAlignment = "left" | "center" | "right"; export type ImageSize = "auto" | "stretch" | "small" | "medium" | "large"; export type ImageStyle = "normal" | "person"; export type TextColor = "default" | "dark" | "light" | "accent" | "good" | "warning" | "attention"; export type TextInputStyle = "text" | "tel" | "url" | "email"; export type TextSize = "small" | "normal" | "medium" | "large" | "extraLarge"; export type TextWeight = "lighter" | "normal" | "bolder"; export type Separation = "none" | "default" | "strong"; export class TypedElement implements ITypedElement { constructor(type: string); type: string; } export class Card extends TypedElement implements ICard { constructor(init?: Partial<ICard>); actions?: (IActionHttp | IActionOpenUrl | IActionShowCard | IActionSubmit)[]; backgroundImage?: string; body?: (ITextBlock | IImage | IImageSet | IFactSet | IContainer | IColumnSet | IInputDate | IInputNumber | IInputText | IInputTime | IInputToggle)[]; speak?: string; title?: string; } export class ActionBase extends TypedElement implements IActionBase { constructor(type: string, init?: Partial<IActionBase>); speak?: string; title: string; } export class ActionHttp extends ActionBase implements IActionHttp { constructor(init?: Partial<IActionHttp>); body?: string; headers?: any; method?: string; url: string; } export class ActionOpenUrl extends ActionBase implements IActionOpenUrl { constructor(init?: Partial<IActionOpenUrl>); url: string; } export class ActionShowCard extends ActionBase implements IActionShowCard { constructor(init?: Partial<IActionShowCard>); card: ICard; } export class ActionSubmit extends ActionBase implements IActionSubmit { constructor(init?: Partial<IActionSubmit>); data?: any; } export class CardElement extends TypedElement implements ICardElement { constructor(type: string, init?: Partial<ICardElement>); speak?: string; } export class ColumnSet extends CardElement implements IColumnSet { constructor(init?: Partial<IColumnSet>); columns: IColumn[]; } export class ContainerBase extends CardElement implements IContainerBase { constructor(type: string, init?: Partial<IContainerBase>); actions?: (IActionHttp | IActionOpenUrl | IActionShowCard | IActionSubmit)[]; items?: (ITextBlock | IImage | IImageSet | IFactSet | IContainer | IColumnSet | IInputDate | IInputNumber | IInputText | IInputTime | IInputToggle)[]; selectAction?: (IActionHttp | IActionOpenUrl | IActionShowCard | IActionSubmit); startGroup?: boolean; } export class Container extends ContainerBase implements IContainer { constructor(init?: Partial<IContainer>); } export class Column extends ContainerBase implements IColumn { constructor(init?: Partial<IColumn>); size?: string; } export class Fact implements IFact { constructor(init?: Partial<IFact>); title: string; speak?: string; value: string; } export class FactSet extends CardElement implements IFactSet { constructor(init?: Partial<IFactSet>); facts: IFact[]; } export class Image extends CardElement implements IImage { constructor(init?: Partial<IImage>); altText?: string; horizontalAlignment?: HorizontalAlignment; selectAction?: IActionBase; size?: ImageSize; style?: ImageStyle; url: string; } export class ImageSet extends CardElement implements IImageSet { constructor(init?: Partial<IImageSet>); images: IImage[]; size?: ImageSize; } export class Input extends CardElement implements IInput { constructor(type: string, init?: Partial<IInput>); id: string; } export class InputDate extends Input implements IInputDate { constructor(init?: Partial<IInputDate>); max?: string; min?: string; placeholder?: string; value?: string; } export class InputNumber extends Input implements IInputNumber { constructor(init?: Partial<IInputNumber>); max?: string; min?: string; placeholder?: string; value?: string; } export class InputText extends Input implements IInputText { constructor(init?: Partial<IInputText>); isMultiline?: boolean; maxLength?: number; style?: TextInputStyle; placeholder?: string; value?: string; } export class InputTime extends Input implements IInputTime { constructor(init?: Partial<IInputTime>); max?: string; min?: string; placeholder?: string; value?: string; } export class InputToggle extends Input implements IInputToggle { constructor(init?: Partial<IInputToggle>); title: string; value?: string; valueOn?: string; valueOff?: string; } export class TextBlock extends TypedElement implements ITextBlock { constructor(init?: Partial<ITextBlock>); color?: TextColor; horizontalAlignment?: HorizontalAlignment; isSubtle?: boolean; maxLines?: number; size?: TextSize; text: string; weight?: TextWeight; wrap?: boolean; } }