Skip to content
This repository has been archived by the owner on Sep 5, 2024. It is now read-only.

fix(fabSpeedDial): fix many visual issues #3468

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/components/fabSpeedDial/demoBasicUsage/index.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<div ng-controller="AppCtrl" layout="column">
<div ng-controller="DemoCtrl as demo" layout="column">
<md-content class="md-padding" layout="column">
<p>
You may supply a direction of <code>left</code>, <code>up</code>, <code>down</code>, or
Expand All @@ -21,7 +21,7 @@
<md-button aria-label="facebook" class="md-fab md-raised md-mini">
<md-icon md-svg-src="img/icons/facebook.svg"></md-icon>
</md-button>
<md-button aria-label="Google hangout" class="md-fab md-raised md-mini">
<md-button aria-label="Google Hangout" class="md-fab md-raised md-mini">
<md-icon md-svg-src="img/icons/hangout.svg"></md-icon>
</md-button>
</md-fab-actions>
Expand Down
18 changes: 8 additions & 10 deletions src/components/fabSpeedDial/demoBasicUsage/script.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,16 @@
'use strict';

angular.module('fabSpeedDialBasicUsageDemo', ['ngMaterial'])
.controller('AppCtrl', function($scope) {
$scope.demo = {
topDirections: ['left', 'up'],
bottomDirections: ['down', 'right'],
.controller('DemoCtrl', function() {
this.topDirections = ['left', 'up'];
this.bottomDirections = ['down', 'right'];

isOpen: false,
this.isOpen = false;

availableModes: ['md-fling', 'md-scale'],
selectedMode: 'md-fling',
this.availableModes = ['md-fling', 'md-scale'];
this.selectedMode = 'md-fling';

availableDirections: ['up', 'down', 'left', 'right'],
selectedDirection: 'up'
};
this.availableDirections = ['up', 'down', 'left', 'right'];
this.selectedDirection = 'up';
});
})();
42 changes: 42 additions & 0 deletions src/components/fabSpeedDial/demoModal/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<div ng-controller="DemoCtrl as demo" layout="column">
<md-content class="md-padding" layout="column">
<p>
You can also use the buttons to open a dialog.
</p>

<div class="lock-size" layout="row" layout-align="center center">
<md-fab-speed-dial md-direction="down" class="md-fling">
<md-fab-trigger>
<md-button aria-label="Menu" class="md-fab md-warn demo-fab trigger-fab">
<md-tooltip md-direction="top">Menu</md-tooltip>
<md-icon md-svg-src="img/icons/menu.svg"></md-icon>
</md-button>
</md-fab-trigger>

<md-fab-actions>
<md-button aria-label="Open dialog" class="md-fab md-raised md-mini demo-fab action-fab"
ng-click="demo.openDialog($event)">
<md-tooltip md-direction="left">Open dialog</md-tooltip>
<md-icon md-svg-src="img/icons/launch.svg"></md-icon>
</md-button>
</md-fab-actions>
</md-fab-speed-dial>
</div>
</md-content>

<script type="text/ng-template" id="dialog.html">
<md-dialog>
<md-dialog-content>Hello User!!!</md-dialog-content>

<div class="md-actions">
<md-button aria-label="Close dialog" ng-click="dialog.close()" class="md-primary">
Close Greeting
</md-button>

<md-button aria-label="Submit dialog" ng-click="dialog.submit()" class="md-primary">
Submit
</md-button>
</div>
</md-dialog>
</script>
</div>
23 changes: 23 additions & 0 deletions src/components/fabSpeedDial/demoModal/script.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
(function() {
'use strict';

angular.module('fabSpeedDialModalDemo', ['ngMaterial'])
.controller('DemoCtrl', function($mdDialog) {
this.openDialog = function($event) {
$mdDialog.show({
clickOutsideToClose: true,
controller: function($mdDialog) {
this.close = function() {
$mdDialog.cancel();
};
this.submit = function() {
$mdDialog.hide();
};
},
controllerAs: 'dialog',
templateUrl: 'dialog.html',
targetEvent: $event
});
}
});
})();
18 changes: 18 additions & 0 deletions src/components/fabSpeedDial/demoModal/style.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
.md-fab.demo-fab.trigger-fab, .md-fab.demo-fab.action-fab {
&:hover, &.md-focused {
background-color: #333;
}
}

.md-fab.demo-fab.action-fab {
background-color: #aaa;
}

.lock-size {
min-width: 300px;
min-height: 300px;
width: 300px;
height: 300px;
margin-left: auto;
margin-right: auto;
}
35 changes: 35 additions & 0 deletions src/components/fabSpeedDial/demoTooltips/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<div layout="column">
<md-content class="md-padding" layout="column">
<p>
You may add tooltips to both the trigger and actions.
</p>

<div class="lock-size" layout="row" layout-align="center center">
<md-fab-speed-dial md-direction="down" class="md-fling">
<md-fab-trigger>
<md-button aria-label="menu" class="md-fab md-warn">
<md-tooltip md-direction="top">Menu</md-tooltip>
<md-icon md-svg-src="img/icons/menu.svg"></md-icon>
</md-button>
</md-fab-trigger>

<md-fab-actions>
<md-button aria-label="twitter" class="md-fab md-raised md-mini">
<md-tooltip md-direction="left">Twitter</md-tooltip>
<md-icon md-svg-src="img/icons/twitter.svg"></md-icon>
</md-button>

<md-button aria-label="facebook" class="md-fab md-raised md-mini">
<md-tooltip md-direction="right">Facebook</md-tooltip>
<md-icon md-svg-src="img/icons/facebook.svg"></md-icon>
</md-button>

<md-button aria-label="Google Hangout" class="md-fab md-raised md-mini">
<md-tooltip md-direction="left">Google Hangout</md-tooltip>
<md-icon md-svg-src="img/icons/hangout.svg"></md-icon>
</md-button>
</md-fab-actions>
</md-fab-speed-dial>
</div>
</md-content>
</div>
Empty file.
20 changes: 20 additions & 0 deletions src/components/fabSpeedDial/demoTooltips/style.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
.text-capitalize {
text-transform: capitalize;
}

.md-fab:hover, .md-fab.md-focused {
background-color: #000 !important;
}

p.note {
font-size: 1.2rem;
}

.lock-size {
min-width: 300px;
min-height: 300px;
width: 300px;
height: 300px;
margin-left: auto;
margin-right: auto;
}
32 changes: 24 additions & 8 deletions src/components/fabSpeedDial/fabSpeedDial.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,11 +79,24 @@
// Define our open/close functions
// Note: Used by fabTrigger and fabActions directives
vm.open = function() {
$scope.$apply('vm.isOpen = true');
// Async eval to avoid conflicts with existing digest loops
$scope.$evalAsync("vm.isOpen = true");
};

vm.close = function() {
$scope.$apply('vm.isOpen = false');
// Async eval to avoid conflicts with existing digest loops
// Only close if we do not currently have mouse focus (since child elements can call this)
!vm.moused && $scope.$evalAsync("vm.isOpen = false");
};

vm.mouseenter = function() {
vm.moused = true;
vm.open();
};

vm.mouseleave = function() {
vm.moused = false;
vm.close();
};

setupDefaults();
Expand All @@ -101,8 +114,8 @@

// Setup our event listeners
function setupListeners() {
$element.on('mouseenter', vm.open);
$element.on('mouseleave', vm.close);
$element.on('mouseenter', vm.mouseenter);
$element.on('mouseleave', vm.mouseleave);
}

// Setup our watchers
Expand Down Expand Up @@ -142,18 +155,19 @@
angular.forEach(items, function(item, index) {
var styles = item.style;

styles.transform = '';
styles.transform = styles.webkitTransform = '';
styles.transitionDelay = '';
styles.opacity = 1;

// Make the items closest to the trigger have the highest z-index
item.style.zIndex = (items.length - index) + startZIndex;
styles.zIndex = (items.length - index) + startZIndex;
});

// If the control is closed, hide the items behind the trigger
if (!ctrl.isOpen) {
angular.forEach(items, function(item, index) {
var newPosition, axis;
var styles = item.style;

switch (ctrl.direction) {
case 'up':
Expand All @@ -174,7 +188,9 @@
break;
}

item.style.transform = 'translate' + axis + '(' + newPosition + 'px)';
var newTranslate = 'translate' + axis + '(' + newPosition + 'px)';

styles.transform = styles.webkitTransform = newTranslate;
});
}
}
Expand Down Expand Up @@ -205,7 +221,7 @@
offsetDelay = index * delay;

styles.opacity = ctrl.isOpen ? 1 : 0;
styles.transform = ctrl.isOpen ? 'scale(1)' : 'scale(0)';
styles.transform = styles.webkitTransform = ctrl.isOpen ? 'scale(1)' : 'scale(0)';
styles.transitionDelay = (ctrl.isOpen ? offsetDelay : (items.length - offsetDelay)) + 'ms';
});
}
Expand Down
2 changes: 1 addition & 1 deletion src/components/fabSpeedDial/fabSpeedDial.scss
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ md-fab-speed-dial {
display: flex;

// Set the height so that the z-index in the JS animation works
height: 100%;
height: initial;

.md-fab-action-item {
visibility: hidden;
Expand Down
4 changes: 4 additions & 0 deletions src/components/fabSpeedDial/fabSpeedDial.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ describe('<md-fab-speed-dial> directive', function() {
);

element.find('button').triggerHandler('focus');
pageScope.$digest();
expect(controller.isOpen).toBe(true);
}));

Expand All @@ -47,6 +48,7 @@ describe('<md-fab-speed-dial> directive', function() {
);

element.find('button').triggerHandler('focus');
pageScope.$digest();
expect(controller.isOpen).toBe(true);
}));

Expand All @@ -56,9 +58,11 @@ describe('<md-fab-speed-dial> directive', function() {
);

element.find('button').triggerHandler('focus');
pageScope.$digest();
expect(controller.isOpen).toBe(true);

element.find('button').triggerHandler('blur');
pageScope.$digest();
expect(controller.isOpen).toBe(false);
}));

Expand Down