UNPKG

framework7

Version:

Full featured mobile HTML framework for building iOS & Android apps

134 lines (121 loc) 6.74 kB
import { Dom7Instance } from 'dom7'; import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class'; export namespace Messages { interface Messages extends Framework7EventsClass<Events> { /** Object with passed initialization parameters */ params : Parameters /** Messages container HTML element (<div class="messages">) */ el : HTMLElement /** Dom7 element with messages HTML element */ $el : Dom7Instance /** Array with messages */ messages : Message[] /** Show typing message indicator */ showTyping(message : Message) : void /** Hide typing message indicator */ hideTyping() : void /** Add new message to the end or to the beginning depending on method parameter */ addMessage(message : Message, method : 'append' | 'prepend', animate?: boolean) : Messages /** Add multiple messages per once. */ addMessages(messages : Message[], method : 'append' | 'prepend', animate?: boolean) : Messages /** Remove message */ removeMessage(message : Message) : Messages /** Remove multiple messages */ removeMessages(messages : Message[]) : Messages /** Scroll messages to top/bottom depending on newMessagesFirst parameter */ scroll(durationMS : number, position : number) : Messages /** Render messages HTML depending on messages array */ renderMessages() : Messages /** Force messages auto layout */ layout() : Messages /** Clear/remove all the messages */ clear() : Messages /** Destroy messages instance */ destroy() : void } interface Message { /** Message text. */ text: string /** Single message header. */ header: string /** Single message footer. */ footer: string /** Sender name. */ name: string /** Sender avatar URL string. */ avatar: string /** Message type - sent or received. (default sent) */ type?: string /** Message text header. */ textHeader: string /** Message text footer. */ textFooter: string /** Message image HTML string, e.g. <img src="path/to/image">. Can be used instead of imageSrc parameter. */ image: string /** Message image URL string. Can be used instead of image parameter. */ imageSrc: string /** Defines whether it should be rendered as a message or as a messages title. */ isTitle: boolean } interface Parameters { /** Enable Auto Layout to add all required additional classes automatically based on passed conditions. (default true) */ autoLayout?: boolean /** Enable if you want to use new messages on top, instead of having them on bottom. (default false) */ newMessagesFirst?: boolean /** Enable/disable messages autoscrolling when adding new message. (default true) */ scrollMessages?: boolean /** If enabled then messages autoscrolling will happen only when user is on top/bottom of the messages view. (default true) */ scrollMessagesOnEdge?: boolean /** Array with initial messages. Each message in array should be presented as an object with single message parameters. */ messages?: Message[] /** Object with events handlers.. */ on?: { [event in keyof Events]? : Events[event] } /** Function to render single message. Must return full message HTML string. */ renderMessage?: (message : Message) => string /** Function that must return boolean true or false based on required condition depending on previous and next messages. In case of match then message-first class will be added to message. */ firstMessageRule?: (message : Message, previousMessage : Message, nextMessage : Message) => boolean /** Function that must return boolean true or false based on required condition depending on previous and next messages. In case of match then message-last class will be added to message. */ lastMessageRule?: (message : Message, previousMessage : Message, nextMessage : Message) => boolean /** Function that must return boolean true or false based on required condition depending on previous and next messages. In case of match then message-tail class will be added to message. */ tailMessageRule?: (message : Message, previousMessage : Message, nextMessage : Message) => boolean /** Function that must return boolean true or false based on required condition depending on previous and next messages. In case of match then message-same-name class will be added to message. */ sameNameMessageRule?: (message : Message, previousMessage : Message, nextMessage : Message) => boolean /** Function that must return boolean true or false based on required condition depending on previous and next messages. In case of match then message-same-header class will be added to message. */ sameHeaderMessageRule?: (message : Message, previousMessage : Message, nextMessage : Message) => boolean /** Function that must return boolean true or false based on required condition depending on previous and next messages. In case of match then message-same-footer class will be added to message. */ sameFooterMessageRule?: (message : Message, previousMessage : Message, nextMessage : Message) => boolean /** Function that must return boolean true or false based on required condition depending on previous and next messages. In case of match then message-same-avatar class will be added to message. */ sameAvatarMessageRule?: (message : Message, previousMessage : Message, nextMessage : Message) => boolean /** Function that must return additional message classes as string, based on required condition depending on previous and next messages.. */ customClassMessageRule?: (message : Message, previousMessage : Message, nextMessage : Message) => string } interface Events { /** Event will be triggered right before Messages instance will be destroyed */ beforeDestroy(messages : Messages) : void } interface DomEvents { /** Event will be triggered right before Messages instance will be destroyed */ 'messages:beforedestroy': void } interface AppMethods { messages: { /** create Messages instance */ create(parameters : Parameters) : Messages /** destroy Messages instance */ destroy(el : HTMLElement | CSSSelector | Messages) : void /** get Messages instance by HTML element */ get(el : HTMLElement | CSSSelector) : Messages } } interface AppParams { messages?: Parameters | undefined } interface AppEvents { /** Event will be triggered right before Messages instance will be destroyed */ messagesBeforeDestroy(messages : Messages) : void } } declare const MessagesComponent: Framework7Plugin; export default MessagesComponent;