mirror of
https://github.com/discourse/discourse.git
synced 2025-05-24 03:36:18 +08:00
UX: Adjust menu panels when the browser is resized
This commit is contained in:
@ -3,7 +3,6 @@ import { default as computed, on, observes } from 'ember-addons/ember-computed-d
|
|||||||
export default Ember.Component.extend({
|
export default Ember.Component.extend({
|
||||||
classNameBindings: [':menu-panel', 'visible::hidden', 'viewMode'],
|
classNameBindings: [':menu-panel', 'visible::hidden', 'viewMode'],
|
||||||
attributeBindings: ['style'],
|
attributeBindings: ['style'],
|
||||||
viewMode: 'dropDown',
|
|
||||||
|
|
||||||
showClose: Ember.computed.equal('viewMode', 'slide-in'),
|
showClose: Ember.computed.equal('viewMode', 'slide-in'),
|
||||||
|
|
||||||
@ -34,17 +33,16 @@ export default Ember.Component.extend({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@observes('visible')
|
@computed('force')
|
||||||
_visibleChanged() {
|
viewMode() {
|
||||||
const force = this.get('force');
|
const force = this.get('force');
|
||||||
if (force) {
|
if (force) { return force; }
|
||||||
this.set('viewMode', force);
|
|
||||||
} else if ($(window).width() < 1024) {
|
|
||||||
this.set('viewMode', 'slide-in');
|
|
||||||
} else {
|
|
||||||
this.set('viewMode', 'drop-down');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
return ($(window).width() < 1024) ? 'slide-in' : 'drop-down';
|
||||||
|
},
|
||||||
|
|
||||||
|
@observes('viewMode', 'visible')
|
||||||
|
_visibleChanged() {
|
||||||
const isDropdown = (this.get('viewMode') === 'drop-down');
|
const isDropdown = (this.get('viewMode') === 'drop-down');
|
||||||
const markActive = this.get('markActive');
|
const markActive = this.get('markActive');
|
||||||
|
|
||||||
@ -102,6 +100,11 @@ export default Ember.Component.extend({
|
|||||||
this.hide();
|
this.hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Recompute styles on resize
|
||||||
|
$(window).on('resize.discourse-menu-panel', () => {
|
||||||
|
this.propertyDidChange('viewMode');
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
@on('willDestroyElement')
|
@on('willDestroyElement')
|
||||||
@ -110,6 +113,7 @@ export default Ember.Component.extend({
|
|||||||
this.$().off('click.discourse-menu-panel');
|
this.$().off('click.discourse-menu-panel');
|
||||||
$('body').off('keydown.discourse-menu-panel');
|
$('body').off('keydown.discourse-menu-panel');
|
||||||
$('html').off('click.close-menu-panel');
|
$('html').off('click.close-menu-panel');
|
||||||
|
$(window).off('resize.discourse-menu-panel');
|
||||||
},
|
},
|
||||||
|
|
||||||
hide() {
|
hide() {
|
||||||
|
Reference in New Issue
Block a user