John Cowen 6589cbbd0d
ui: Move to Workspaced Structure (#8994)
* ui: Add the most basic workspace root in /ui

* We already have a LICENSE file in the repository root

* Change directory path in build scripts ui-v2 -> ui

* Make yarn install flags configurable from elsewhere

* Minimal workspace root makefile

* Call the new docker specific target

* Update yarn in the docker build image

* Reconfigure the netlify target and move to the higher makefile

* Move ui-v2 -> ui/packages/consul-ui

* Change repo root to refleect new folder structure

* Temporarily don't hoist consul-api-double

* Fixup CI configuration

* Fixup lint errors

* Fixup Netlify target
2020-10-21 15:23:16 +01:00

45 lines
1.2 KiB
JavaScript

import Component from '@ember/component';
import { setProperties, set } from '@ember/object';
import { inject as service } from '@ember/service';
import { schedule } from '@ember/runloop';
const ENTER = 13;
const SELECTED = 'li.selected';
export default Component.extend({
name: 'tab',
tagName: '',
dom: service('dom'),
isAnimatable: false,
init: function() {
this._super(...arguments);
this.guid = this.dom.guid(this);
},
didInsertElement: function() {
this._super(...arguments);
this.$nav = this.dom.element(`#${this.guid}`);
this.select(this.dom.element(SELECTED, this.$nav));
set(this, 'isAnimatable', true);
},
didUpdateAttrs: function() {
schedule('afterRender', () => this.select(this.dom.element(SELECTED, this.$nav)));
},
select: function($el) {
if (!$el) {
return;
}
setProperties(this, {
selectedWidth: $el.offsetWidth,
selectedLeft: $el.offsetLeft,
selectedHeight: $el.offsetHeight,
selectedTop: $el.offsetTop,
});
},
actions: {
keydown: function(e) {
if (e.keyCode === ENTER) {
e.target.dispatchEvent(new MouseEvent('click'));
}
},
},
});