319 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			319 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * BotUI options
							 | 
						||
| 
								 | 
							
								 * 
							 | 
						||
| 
								 | 
							
								 * @interface BotUIOptions
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								interface BotUIOptions {
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Set this to true if you want to debug the underlaying Vue instance
							 | 
						||
| 
								 | 
							
								     * 
							 | 
						||
| 
								 | 
							
								     * @type {boolean}
							 | 
						||
| 
								 | 
							
								     * @memberof BotUIOptions
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    debug?: boolean;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Set this to false if you already have FontAwesome in your project and don't want it to be loaded again by BotUI.
							 | 
						||
| 
								 | 
							
								     * 
							 | 
						||
| 
								 | 
							
								     * @type {boolean}
							 | 
						||
| 
								 | 
							
								     * @memberof BotUIOptions
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    fontawesome?: boolean;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Set this to vue constructor when you use module loaded system e.g CMD or AMD.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    vue?: any;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Message method options
							 | 
						||
| 
								 | 
							
								 * 
							 | 
						||
| 
								 | 
							
								 * @interface MessageOption
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								interface MessageOption {
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Set to true if you want to show a loading state '3 animated dots'. 
							 | 
						||
| 
								 | 
							
								     * Available in version >= 0.3.1
							 | 
						||
| 
								 | 
							
								     * 
							 | 
						||
| 
								 | 
							
								     * @type {boolean}
							 | 
						||
| 
								 | 
							
								     * @memberof MessageOption
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    loading?: boolean;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Wait before showing the message. in milliseconds.
							 | 
						||
| 
								 | 
							
								     * 
							 | 
						||
| 
								 | 
							
								     * @type {number}
							 | 
						||
| 
								 | 
							
								     * @memberof MessageOption
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    delay?: number;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Either 'text' or 'embed'.
							 | 
						||
| 
								 | 
							
								     * If you set this to 'embed', BotUI will create an `iframe` element and set `content` as its `src`.
							 | 
						||
| 
								 | 
							
								     * 
							 | 
						||
| 
								 | 
							
								     * @type {('text' | 'embed')}
							 | 
						||
| 
								 | 
							
								     * @memberof MessageOption
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    type: 'text' | 'embed';
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Should be a URL if type is 'embed', text otherwise.
							 | 
						||
| 
								 | 
							
								     * 
							 | 
						||
| 
								 | 
							
								     * @type {string}
							 | 
						||
| 
								 | 
							
								     * @memberof MessageOption
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    content: string;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Should be shown aligned to right side.
							 | 
						||
| 
								 | 
							
								     * 
							 | 
						||
| 
								 | 
							
								     * @type {false}
							 | 
						||
| 
								 | 
							
								     * @memberof MessageOption
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    human?: false;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * A string or array of custom CSS classes you want to be added.
							 | 
						||
| 
								 | 
							
								     * 
							 | 
						||
| 
								 | 
							
								     * @type {string|string[]}
							 | 
						||
| 
								 | 
							
								     * @memberof MessageOption
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    cssClass?: string | string[];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Actions method option
							 | 
						||
| 
								 | 
							
								 * 
							 | 
						||
| 
								 | 
							
								 * @interface ActionsOption
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								interface BaseActionsOption {
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Either 'text' or 'button'.
							 | 
						||
| 
								 | 
							
								     * 
							 | 
						||
| 
								 | 
							
								     * @type {('text' | 'button')}
							 | 
						||
| 
								 | 
							
								     * @memberof ActionsOption
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    type: 'text' | 'button';
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Array of 'ButtonObject' if type is 'button'. Object of 'TextObject' otherwise.
							 | 
						||
| 
								 | 
							
								     * 
							 | 
						||
| 
								 | 
							
								     * @type {ButtonObject[]|TextObject}
							 | 
						||
| 
								 | 
							
								     * @memberof ActionsOption
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    action: ButtonObject[] | TextObject;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * A string or array of custom CSS classes you want to be added.
							 | 
						||
| 
								 | 
							
								     * 
							 | 
						||
| 
								 | 
							
								     * @type {string|string[]}
							 | 
						||
| 
								 | 
							
								     * @memberof ActionsOption
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    cssClass?: string | string[];
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Should the actions sections be hidden when submitted.
							 | 
						||
| 
								 | 
							
								     * 
							 | 
						||
| 
								 | 
							
								     * @type {boolean}
							 | 
						||
| 
								 | 
							
								     * @memberof ActionsOption
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    autoHide?: boolean;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Text from action is added as a message in UI from human side.
							 | 
						||
| 
								 | 
							
								     * 
							 | 
						||
| 
								 | 
							
								     * @type {boolean}
							 | 
						||
| 
								 | 
							
								     * @memberof ActionsOption
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    addMessage?: boolean;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Text action option.
							 | 
						||
| 
								 | 
							
								 * 
							 | 
						||
| 
								 | 
							
								 * @interface TextObject
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								interface TextObject {
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Size of the input to show. Relies on HTML size attribute for input elements.
							 | 
						||
| 
								 | 
							
								     * 
							 | 
						||
| 
								 | 
							
								     * @type {number}
							 | 
						||
| 
								 | 
							
								     * @memberof TextObject
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    size?: number;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Could be any of the valid types for HTML input elements. e.g.: number, tel, time, date, email, etc.
							 | 
						||
| 
								 | 
							
								     * 
							 | 
						||
| 
								 | 
							
								     * @type {string}
							 | 
						||
| 
								 | 
							
								     * @memberof TextObject
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    sub_type?: string;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Pre-populates the text field. Only for 'text' type.
							 | 
						||
| 
								 | 
							
								     * 
							 | 
						||
| 
								 | 
							
								     * @type {string}
							 | 
						||
| 
								 | 
							
								     * @memberof TextObject
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    value: string;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Sets the placeholder text for the input element.
							 | 
						||
| 
								 | 
							
								     * 
							 | 
						||
| 
								 | 
							
								     * @type {string}
							 | 
						||
| 
								 | 
							
								     * @memberof TextObject
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    placeholder?: string;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Button object
							 | 
						||
| 
								 | 
							
								 * 
							 | 
						||
| 
								 | 
							
								 * @interface ButtonObject
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								interface ButtonObject {
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Icon to show in button.
							 | 
						||
| 
								 | 
							
								     * 
							 | 
						||
| 
								 | 
							
								     * @type {string}
							 | 
						||
| 
								 | 
							
								     * @memberof ButtonObject
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    icon?: string;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Text to show in the button. be creative!
							 | 
						||
| 
								 | 
							
								     * 
							 | 
						||
| 
								 | 
							
								     * @type {string}
							 | 
						||
| 
								 | 
							
								     * @memberof ButtonObject
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    text: string;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * This is how you will identify the button when result is returned.
							 | 
						||
| 
								 | 
							
								     * 
							 | 
						||
| 
								 | 
							
								     * @type {string}
							 | 
						||
| 
								 | 
							
								     * @memberof ButtonObject
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    value: string;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * A string or array of custom CSS classes you want to be added.
							 | 
						||
| 
								 | 
							
								     * 
							 | 
						||
| 
								 | 
							
								     * @type {string|string[]}
							 | 
						||
| 
								 | 
							
								     * @memberof ButtonObject
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    cssClass?: string | string[];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								interface TextActionOption extends BaseActionsOption {
							 | 
						||
| 
								 | 
							
								    action: TextObject;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								interface ButtonActionOption extends BaseActionsOption {
							 | 
						||
| 
								 | 
							
								    action: ButtonObject[];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Result object.
							 | 
						||
| 
								 | 
							
								 * 
							 | 
						||
| 
								 | 
							
								 * @interface ResultObject
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								interface ResultObject {
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 'Text' or 'Button' Type of the action it was returned from.
							 | 
						||
| 
								 | 
							
								     * 
							 | 
						||
| 
								 | 
							
								     * @type {('Text' | 'Button')}
							 | 
						||
| 
								 | 
							
								     * @memberof ResultObject
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    type: 'Text' | 'Button';
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Text in the input in case type is 'text'. If type is 'button' then its the same as 'value' in button object.
							 | 
						||
| 
								 | 
							
								     * 
							 | 
						||
| 
								 | 
							
								     * @type {string}
							 | 
						||
| 
								 | 
							
								     * @memberof ResultObject
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    value: string;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Only present if type of message is 'button'. same as the 'text' in button object.
							 | 
						||
| 
								 | 
							
								     * 
							 | 
						||
| 
								 | 
							
								     * @type {string}
							 | 
						||
| 
								 | 
							
								     * @memberof ResultObject
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    text: string;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								declare class BotUI {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    constructor(id: string, opts?: BotUIOptions);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    message: {
							 | 
						||
| 
								 | 
							
								        /**
							 | 
						||
| 
								 | 
							
								         * Appends a message to UI.
							 | 
						||
| 
								 | 
							
								         * 
							 | 
						||
| 
								 | 
							
								         * @param {(MessageOption | string)} message 
							 | 
						||
| 
								 | 
							
								         * @returns {Promise<number>} 
							 | 
						||
| 
								 | 
							
								         */
							 | 
						||
| 
								 | 
							
								        add(message: MessageOption | string): Promise<number>;
							 | 
						||
| 
								 | 
							
								        /**
							 | 
						||
| 
								 | 
							
								         * Appends a message to UI. Just a shorthand to `message.add`.
							 | 
						||
| 
								 | 
							
								         * 
							 | 
						||
| 
								 | 
							
								         * @param {(MessageOption | string)} message 
							 | 
						||
| 
								 | 
							
								         * @returns {Promise<number>} 
							 | 
						||
| 
								 | 
							
								         */
							 | 
						||
| 
								 | 
							
								        bot(message: MessageOption | string): Promise<number>;
							 | 
						||
| 
								 | 
							
								        /**
							 | 
						||
| 
								 | 
							
								         * Appends a message to UI and sets the `human` to `true`.
							 | 
						||
| 
								 | 
							
								         * 
							 | 
						||
| 
								 | 
							
								         * @param {(MessageOption | string)} message 
							 | 
						||
| 
								 | 
							
								         * @returns {Promise<number>} 
							 | 
						||
| 
								 | 
							
								         */
							 | 
						||
| 
								 | 
							
								        human(message: MessageOption | string): Promise<number>;
							 | 
						||
| 
								 | 
							
								        /**
							 | 
						||
| 
								 | 
							
								         * Accepts an index of message.
							 | 
						||
| 
								 | 
							
								         * 
							 | 
						||
| 
								 | 
							
								         * @param {number} index                
							 | 
						||
| 
								 | 
							
								         * @returns {Promise<MessageOption>} 
							 | 
						||
| 
								 | 
							
								         */
							 | 
						||
| 
								 | 
							
								        get(index: number): Promise<MessageOption>;
							 | 
						||
| 
								 | 
							
								        /**
							 | 
						||
| 
								 | 
							
								         * Updates a message in UI.
							 | 
						||
| 
								 | 
							
								         * "Only content and loading property of message can updated. type of a message cannot be changed."
							 | 
						||
| 
								 | 
							
								         * 
							 | 
						||
| 
								 | 
							
								         * @param {number} index 
							 | 
						||
| 
								 | 
							
								         * @param {MessageOption} message 
							 | 
						||
| 
								 | 
							
								         * @returns {Promise<number>} 
							 | 
						||
| 
								 | 
							
								         */
							 | 
						||
| 
								 | 
							
								        update(index: number, message: MessageOption): Promise<string>;
							 | 
						||
| 
								 | 
							
								        /**
							 | 
						||
| 
								 | 
							
								         * Removes a message from UI.
							 | 
						||
| 
								 | 
							
								         * 
							 | 
						||
| 
								 | 
							
								         * @param {number} index 
							 | 
						||
| 
								 | 
							
								         * @returns {Promise<void>} 
							 | 
						||
| 
								 | 
							
								         */
							 | 
						||
| 
								 | 
							
								        remove(index: number): Promise<void>;
							 | 
						||
| 
								 | 
							
								        /**
							 | 
						||
| 
								 | 
							
								         * Removes all the messages from UI.
							 | 
						||
| 
								 | 
							
								         * 
							 | 
						||
| 
								 | 
							
								         * @param {number} index 
							 | 
						||
| 
								 | 
							
								         * @returns {Promise<void>} 
							 | 
						||
| 
								 | 
							
								         */
							 | 
						||
| 
								 | 
							
								        removeAll(index: number): Promise<void>;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    action: {
							 | 
						||
| 
								 | 
							
								        /**
							 | 
						||
| 
								 | 
							
								         * Shows the action section.
							 | 
						||
| 
								 | 
							
								         * 
							 | 
						||
| 
								 | 
							
								         * @returns {Promise<ResultObject>} 
							 | 
						||
| 
								 | 
							
								         */
							 | 
						||
| 
								 | 
							
								        show(action: BaseActionsOption): Promise<ResultObject>;
							 | 
						||
| 
								 | 
							
								        /**
							 | 
						||
| 
								 | 
							
								         * Hides the action section.
							 | 
						||
| 
								 | 
							
								         * 
							 | 
						||
| 
								 | 
							
								         * @returns {Promise<void>} 
							 | 
						||
| 
								 | 
							
								         */
							 | 
						||
| 
								 | 
							
								        hide(): Promise<void>;
							 | 
						||
| 
								 | 
							
								        /**
							 | 
						||
| 
								 | 
							
								         * Shows the action section and sets the action type to text. Its a shorthand to show.
							 | 
						||
| 
								 | 
							
								         * 
							 | 
						||
| 
								 | 
							
								         * @param {ActionsOption} action 
							 | 
						||
| 
								 | 
							
								         * @returns {Promise<ResultObject>} 
							 | 
						||
| 
								 | 
							
								         */
							 | 
						||
| 
								 | 
							
								        text(action: TextActionOption): Promise<ResultObject>;
							 | 
						||
| 
								 | 
							
								        /**
							 | 
						||
| 
								 | 
							
								         * Shows the action section and sets the action type to button. Its a shorthand to show.
							 | 
						||
| 
								 | 
							
								         * 
							 | 
						||
| 
								 | 
							
								         * @param {ActionsOption} action 
							 | 
						||
| 
								 | 
							
								         * @returns {Promise<ResultObject>} 
							 | 
						||
| 
								 | 
							
								         */
							 | 
						||
| 
								 | 
							
								        button(action: ButtonActionOption): Promise<ResultObject>;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |