<script> import Align from '../index'; import BaseMixin from '../../_util/BaseMixin'; export default { mixins: [BaseMixin], data() { return { monitor: true, align: { points: ['tl', 'tc'], }, }; }, methods: { getTarget() { const ref = this.$refs.container; if (!ref) { // parent ref not attached return document.getElementById('container'); } return ref; }, toggleMonitor() { this.setState({ monitor: !this.$data.monitor, }); }, forceAlign() { this.$refs.align.forceAlign(); }, }, render() { return ( <div style={{ margin: '50px', }} > <p> <button onClick={this.forceAlign}>Force align</button> <label> <input type="checkbox" checked={this.monitor} onInput={this.toggleMonitor} /> Monitor window resize </label> </p> <div ref="container" id="container" style={{ width: '80%', height: '500px', border: '1px solid red', }} > <Align ref="align" target={this.getTarget} monitorWindowResize={this.$data.monitor} align={this.$data.align} > <div style={{ position: 'absolute', width: '50px', height: '50px', background: 'yellow', }} > source </div> </Align> </div> </div> ); }, }; </script>