use the bootstrap dropdown library instead of trying to put it together myself

This commit is contained in:
Egor Philippov 2015-10-09 13:42:52 -07:00
parent c19419da2b
commit 4c1a091f70
5 changed files with 25 additions and 49 deletions

View file

@ -1,8 +1,8 @@
import Em from 'ember'; import Em from 'ember';
export default Em.Component.extend({ export default Em.Component.extend({
classNameBindings: ['groupControlDisplayed:on'], classNames: ['dropdown-menu'],
elementId: 'groupControls', elementId: 'groupList',
tagName: null, tagName: null,

View file

@ -13,8 +13,6 @@ export default Em.Component.extend({
lightsData: null, lightsData: null,
activeLights: [], activeLights: [],
groupControlDisplayed: false,
appSettingsDisplayed: false,
actions: { actions: {
changeTab(tabName){ changeTab(tabName){
@ -22,21 +20,11 @@ export default Em.Component.extend({
this.set('selectedTab', index); this.set('selectedTab', index);
localStorage.setItem('huegasm.selectedTab', index); localStorage.setItem('huegasm.selectedTab', index);
}, },
toggleGroupControl(){
this.toggleProperty('groupControlDisplayed');
},
toggleAppSettings(){
this.toggleProperty('appSettingsDisplayed');
},
clearBridge() { clearBridge() {
delete localStorage['huegasm.bridgeUsername']; delete localStorage['huegasm.bridgeUsername'];
delete localStorage['huegasm.bridgeIp']; delete localStorage['huegasm.bridgeIp'];
location.reload(); location.reload();
}, },
clearAllSettings() { clearAllSettings() {
localStorage.clear(); localStorage.clear();
location.reload(); location.reload();
@ -62,17 +50,6 @@ export default Em.Component.extend({
}); });
observer.observe(Em.$('#hueControls')[0], {childList: true, subtree: true}); observer.observe(Em.$('#hueControls')[0], {childList: true, subtree: true});
// automatically close the group menu when the user clicks somewhere else
Em.$(document).click(function() {
if(self.get('groupControlDisplayed') && !event.target.classList.contains('group') && !Em.$(event.target).closest('#groupControls, #modal-overlays, .ember-modal-overlay').length) {
self.toggleProperty('groupControlDisplayed');
}
if(self.get('appSettingsDisplayed') && !event.target.classList.contains('settings') && !Em.$(event.target).closest('#appSetting').length) {
self.toggleProperty('appSettingsDisplayed');
}
});
}, },
init() { init() {

View file

@ -7,21 +7,27 @@
</div> </div>
<div id="settings" class="col-xs-3"> <div id="settings" class="col-xs-3">
<span id="groupMenu" class="settingsItem groupMenu {{if groupControlDisplayed 'on'}}"> <span id="groupMenu" class="settingsItem">
<span class="bootstrapTooltip" data-toggle="tooltip" data-placement="bottom auto" data-title="Light Groups" {{action "toggleGroupControl"}}>{{paper-icon icon="group"}}</span> <span data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span data-toggle="tooltip" data-placement="bottom auto" class="bootstrapTooltip" data-title="Light Groups">
{{paper-icon icon="group"}}
</span>
</span>
{{groups-list lightsData=lightsData groupsData=groupsData activeLights=activeLights apiURL=apiURL updateGroupsData=updateGroupsData groupControlDisplayed=groupControlDisplayed}} {{groups-list lightsData=lightsData groupsData=groupsData activeLights=activeLights apiURL=apiURL updateGroupsData=updateGroupsData groupControlDisplayed=groupControlDisplayed}}
</span> </span>
<span id="appSettingsMenu" class="settingsItem {{if appSettingsDisplayed 'on'}}"> <span id="appSettingsMenu" class="settingsItem">
<span class="bootstrapTooltip" data-toggle="tooltip" data-placement="bottom auto" data-title="Application Settings" {{action "toggleAppSettings"}}>{{paper-icon icon="settings"}}</span> <span data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span data-toggle="tooltip" data-placement="bottom auto" class="bootstrapTooltip" data-title="Application Settings">
{{paper-icon icon="settings"}}
</span>
</span>
{{#if appSettingsDisplayed}} <ul id="appSettings" class="dropdown-menu">
<div id="appSettings"> <li class="appSettingsItem" {{action "clearBridge"}}>Switch bridge</li>
<div class="appSettingsItem" {{action "clearBridge"}}>Switch bridge</div> <li class="warn appSettingsItem" {{action "clearAllSettings"}}>Clear application settings</li>
<div class="warn appSettingsItem" {{action "clearAllSettings"}}>Clear application settings</div> </ul>
</div>
{{/if}}
</span> </span>
</div> </div>
</div> </div>

View file

@ -65,11 +65,6 @@ md-switch[disabled=disabled], md-switch[disabled=disabled] .md-container, md-sli
background: darken(white, 20%); background: darken(white, 20%);
} }
.settingsItem.on md-icon.md-default-theme.group,
.settingsItem.on md-icon.md-default-theme.settings {
color: $secondaryThemeColor !important;
}
.settingsItem:hover md-icon.group, .settingsItem:hover md-icon.group,
.settingsItem:hover md-icon.settings { .settingsItem:hover md-icon.settings {
color: black !important; color: black !important;
@ -142,9 +137,11 @@ md-progress-linear {
#appSettings { #appSettings {
position: absolute; position: absolute;
background: white; background: white;
box-shadow: 5px 10px 15px 5px rgba(0, 0, 0, .3); box-shadow: 5px 10px 15px 5px rgba(0, 0, 0, 0.3);
width: 200px; width: 210px;
right: 0; left: -182px;
top: 25px;
padding: 0;
} }
.bootstrapTooltip md-icon { .bootstrapTooltip md-icon {
@ -230,8 +227,7 @@ md-slider.md-default-theme .md-thumb:after {
overflow: visible; overflow: visible;
} }
#groupControls { #groupList {
display: none;
box-shadow: 5px 10px 15px 5px rgba(0, 0, 0, .3); box-shadow: 5px 10px 15px 5px rgba(0, 0, 0, .3);
border-radius: 0 0 5px 5px; border-radius: 0 0 5px 5px;
width: 300px; width: 300px;
@ -244,10 +240,6 @@ md-slider.md-default-theme .md-thumb:after {
text-align: left; text-align: left;
} }
#groupControls.on {
display: block;
}
.lightGroup { .lightGroup {
margin: 0 auto 0 auto; margin: 0 auto 0 auto;
.tooltip.top { .tooltip.top {

View file

@ -10,6 +10,7 @@ module.exports = function(defaults) {
app.import('vendor/dancer.js'); app.import('vendor/dancer.js');
app.import('bower_components/bootstrap-sass/assets/javascripts/bootstrap/tooltip.js'); app.import('bower_components/bootstrap-sass/assets/javascripts/bootstrap/tooltip.js');
app.import('bower_components/bootstrap-sass/assets/javascripts/bootstrap/dropdown.js');
app.import('bower_components/JavaScript-ID3-Reader/dist/id3-minimized.js'); app.import('bower_components/JavaScript-ID3-Reader/dist/id3-minimized.js');
app.import('bower_components/jquery-mousewheel/jquery.mousewheel.js'); app.import('bower_components/jquery-mousewheel/jquery.mousewheel.js');
app.import('bower_components/three.js/three.js'); app.import('bower_components/three.js/three.js');