import Utils from '../utils/utils'; import Mixins from '../utils/mixins'; /* phenome-dts-imports import { Tooltip as TooltipNamespace } from 'framework7/components/tooltip/tooltip'; */ /* phenome-dts-instance f7Tooltip: TooltipNamespace.Tooltip */ export default { name: 'f7-fab-button', props: { id: [String, Number], className: String, // phenome-react-line style: Object, // phenome-react-line fabClose: Boolean, label: String, target: String, tooltip: String, ...Mixins.colorProps, }, render() { const props = this.props; const { className, id, style, fabClose, label, target, } = props; const classes = Utils.classNames( className, { 'fab-close': fabClose, 'fab-label-button': label, }, Mixins.colorClasses(props), ); let labelEl; if (label) { labelEl = ( {label} ); } return ( {labelEl} ); }, methods: { onClick(event) { this.dispatchEvent('click', event); }, }, watch: { 'props.tooltip': function watchTooltip(newText) { const self = this; if (!newText || !self.f7Tooltip) return; self.f7Tooltip.setText(newText); }, }, componentDidCreate() { this.onClick = this.onClick.bind(this); }, componentDidMount() { const self = this; self.refs.el.addEventListener('click', self.onClick); const { tooltip } = self.props; if (!tooltip) return; self.$f7ready((f7) => { self.f7Tooltip = f7.tooltip.create({ targetEl: self.refs.el, text: tooltip, }); }); }, componentWillUnmount() { const self = this; self.refs.el.removeEventListener('click', self.onClick); if (self.f7Tooltip && self.f7Tooltip.destroy) { self.f7Tooltip.destroy(); self.f7Tooltip = null; delete self.f7Tooltip; } }, };