import Utils from '../utils/utils'; import Mixins from '../utils/mixins'; /* phenome-dts-imports import { Messages as MessagesNamespace } from 'framework7/components/messages/messages'; */ /* phenome-dts-instance f7Messages: MessagesNamespace.Messages */ export default { name: 'f7-messages', props: { id: [String, Number], className: String, // phenome-react-line style: Object, // phenome-react-line autoLayout: { type: Boolean, default: false, }, messages: { type: Array, default() { return []; }, }, newMessagesFirst: { type: Boolean, default: false, }, scrollMessages: { type: Boolean, default: true, }, scrollMessagesOnEdge: { type: Boolean, default: true, }, firstMessageRule: Function, lastMessageRule: Function, tailMessageRule: Function, sameNameMessageRule: Function, sameHeaderMessageRule: Function, sameFooterMessageRule: Function, sameAvatarMessageRule: Function, customClassMessageRule: Function, renderMessage: Function, init: { type: Boolean, default: true, }, ...Mixins.colorProps, }, render() { const self = this; const props = self.props; const { id, style, className, } = props; const classes = Utils.classNames( className, 'messages', Mixins.colorClasses(props), ); return (
); }, componentWillUpdate() { const self = this; if (!self.props.init) return; const el = self.refs.el; if (!el) return; const children = el.children; if (!children) return; for (let i = 0; i < children.length; i += 1) { children[i].classList.add('message-appeared'); } }, componentDidUpdate() { const self = this; const { init, autoLayout, scrollMessages, } = self.props; if (!init) return; const el = self.refs.el; if (!el) return; const children = el.children; if (!children) return; for (let i = 0; i < children.length; i += 1) { if (!children[i].classList.contains('message-appeared')) { children[i].classList.add('message-appear-from-bottom'); } } if (self.f7Messages && self.f7Messages.layout && autoLayout) { self.f7Messages.layout(); } if (self.f7Messages && self.f7Messages.scroll && scrollMessages) { self.f7Messages.scroll(); } }, componentDidMount() { const self = this; const { init, autoLayout, messages, newMessagesFirst, scrollMessages, scrollMessagesOnEdge, firstMessageRule, lastMessageRule, tailMessageRule, sameNameMessageRule, sameHeaderMessageRule, sameFooterMessageRule, sameAvatarMessageRule, customClassMessageRule, renderMessage, } = self.props; if (!init) return; self.$f7ready((f7) => { self.f7Messages = f7.messages.create(Utils.noUndefinedProps({ el: self.refs.el, autoLayout, messages, newMessagesFirst, scrollMessages, scrollMessagesOnEdge, firstMessageRule, lastMessageRule, tailMessageRule, sameNameMessageRule, sameHeaderMessageRule, sameFooterMessageRule, sameAvatarMessageRule, customClassMessageRule, renderMessage, })); }); }, componentWillUnmount() { if (this.f7Messages && this.f7Messages.destroy) this.f7Messages.destroy(); }, methods: { renderMessages(messagesToRender, method) { if (!this.f7Messages) return undefined; return this.f7Messages.renderMessages(messagesToRender, method); }, layout() { if (!this.f7Messages) return undefined; return this.f7Messages.layout(); }, scroll(duration, scrollTop) { if (!this.f7Messages) return undefined; return this.f7Messages.scroll(duration, scrollTop); }, clear() { if (!this.f7Messages) return undefined; return this.f7Messages.clear(); }, removeMessage(messageToRemove, layout) { if (!this.f7Messages) return undefined; return this.f7Messages.removeMessage(messageToRemove, layout); }, removeMessages(messagesToRemove, layout) { if (!this.f7Messages) return undefined; return this.f7Messages.removeMessages(messagesToRemove, layout); }, addMessage(...args) { if (!this.f7Messages) return undefined; return this.f7Messages.addMessage(...args); }, addMessages(...args) { if (!this.f7Messages) return undefined; return this.f7Messages.addMessages(...args); }, showTyping(message) { if (!this.f7Messages) return undefined; return this.f7Messages.showTyping(message); }, hideTyping() { if (!this.f7Messages) return undefined; return this.f7Messages.hideTyping(); }, destroy() { if (!this.f7Messages) return undefined; return this.f7Messages.destroy(); }, }, };