import ngModule from '../../module'; import Input from '../../lib/input'; import assignProps from '../../lib/assign-props'; import './style.scss'; export default class IconMenu extends Input { constructor($element, $scope, $transclude) { super($element, $scope); this.$transclude = $transclude; this.input = this.element.querySelector('.mdl-button'); } get model() { return this._model; } set model(value) { this.dropDownAssign({model: value}); } get data() { return this._data; } set data(value) { this.dropDownAssign({data: value}); } get url() { return this._url; } set url(value) { this.dropDownAssign({url: value}); } dropDownAssign(props) { for (let prop in props) this[`_${prop}`] = props[prop]; if (this.$.dropDown) Object.assign(this.$.dropDown, props); } onClick(event) { event.preventDefault(); this.emit('open'); this.showDropDown(); } onDropDownSelect(value) { this.field = value; this.emit('change', {value}); } showDropDown() { assignProps(this, this.$.dropDown, [ 'valueField', 'showField', 'showFilter', 'multiple', '$transclude', 'translateFields', 'model', 'data', 'url', 'fields', 'include', 'where', 'order', 'limit', 'searchFunction' ]); this.$.dropDown.show(this.input); } } IconMenu.$inject = ['$element', '$scope', '$transclude']; ngModule.component('vnIconMenu', { template: require('./icon-menu.html'), bindings: { label: '@', showField: '@?', selection: '