Errores solucionados

This commit is contained in:
Juan Ferrer Toribio 2017-02-01 10:05:15 +01:00
parent 75437754ee
commit 9435e6f1e6
3 changed files with 78 additions and 75 deletions

View File

@ -15,82 +15,84 @@ export function directive(popover) {
}
module.directive('vnPopover', directive);
factory.$inject = ['$document', '$compile'];
function factory($document, $compile) {
return {
show: function(childElement, parent) {
let popover = $document[0].createElement('div');
popover.className = 'vn-popover';
popover.addEventListener('mousedown',
this.onPopoverMouseDown.bind(this));
popover.appendChild (childElement);
this.popover = popover;
export class Popover {
constructor($document, $compile) {
this.document = $document[0];
this.$compile = $compile;
}
show(childElement, parent) {
let popover = this.document.createElement('div');
popover.className = 'vn-popover';
popover.addEventListener('mousedown',
(event) => this.onPopoverMouseDown(event));
popover.appendChild(childElement);
this.popover = popover;
let style = popover.style;
let style = popover.style;
let spacing = 0;
let screenMargin = 20;
let dblMargin = screenMargin * 2;
let spacing = 0;
let screenMargin = 20;
let dblMargin = screenMargin * 2;
let width = popover.offsetWidth;
let height = popover.offsetHeight;
let innerWidth = window.innerWidth;
let innerHeight = window.innerHeight;
let width = popover.offsetWidth;
let height = popover.offsetHeight;
let innerWidth = window.innerWidth;
let innerHeight = window.innerHeight;
if(width + dblMargin > innerWidth) {
width = innerWidth - dblMargin;
style.width = width +'px';
}
if(height + dblMargin > innerHeight) {
height = innerHeight - dblMargin;
style.height = height +'px';
}
if(parent) {
let parentNode = parent;
let rect = parentNode.getBoundingClientRect();
let left = rect.left;
let top = rect.top + spacing + parentNode.offsetHeight;
if(left + width > innerWidth)
left -= (left + width) - innerWidth + margin;
if(top + height > innerHeight)
top -= height + parentNode.offsetHeight + spacing * 2;
if(left < 0)
left = screenMargin;
if(top < 0)
top = screenMargin;
style.top = (top) +'px';
style.left = (left) +'px';
style.minWidth = (rect.width) +'px';
}
$document[0].body.appendChild (popover);
this.docMouseDownHandler = this.onDocMouseDown.bind(this);
$document.on('mousedown', this.docMouseDownHandler);
},
showComponent: function(childComponent, $scope, parent) {
let childElement = $document[0].createElement(childComponent);
$compile(childElement)($scope);
this.show(childElement, parent);
},
hide: function() {
if(!this.popover) return;
$document.off('mousedown', this.docMouseDownHandler);
$document[0].body.removeChild (this.popover);
this.popover = null;
this.lastEvent = null;
this.docMouseDownHandler = null;
},
onDocMouseDown: function(event) {
if (event != this.lastEvent)
this.hide();
},
onPopoverMouseDown: function(event) {
this.lastEvent = event;
if(width + dblMargin > innerWidth) {
width = innerWidth - dblMargin;
style.width = width +'px';
}
};
if(height + dblMargin > innerHeight) {
height = innerHeight - dblMargin;
style.height = height +'px';
}
if(parent) {
let parentNode = parent;
let rect = parentNode.getBoundingClientRect();
let left = rect.left;
let top = rect.top + spacing + parentNode.offsetHeight;
if(left + width > innerWidth)
left -= (left + width) - innerWidth + margin;
if(top + height > innerHeight)
top -= height + parentNode.offsetHeight + spacing * 2;
if(left < 0)
left = screenMargin;
if(top < 0)
top = screenMargin;
style.top = (top) +'px';
style.left = (left) +'px';
style.minWidth = (rect.width) +'px';
}
this.document.body.appendChild(popover);
this.docMouseDownHandler = (event) => this.onDocMouseDown(event);
this.document.addEventListener('mousedown', this.docMouseDownHandler);
}
showComponent(childComponent, $scope, parent) {
let childElement = this.document.createElement(childComponent);
this.$compile(childElement)($scope);
this.show(childElement, parent);
}
hide() {
if(!this.popover) return;
this.document.removeEventListener('mousedown', this.docMouseDownHandler);
this.document.body.removeChild(this.popover);
this.popover = null;
this.lastEvent = null;
this.docMouseDownHandler = null;
}
onDocMouseDown(event) {
if (event != this.lastEvent)
this.hide();
}
onPopoverMouseDown(event) {
this.lastEvent = event;
}
}
module.factory('vnPopover', factory);
Popover.$inject = ['$document', '$compile'];
module.service('vnPopover', Popover);

View File

@ -50,13 +50,13 @@ export function directive(interpolate, compile, validationRules, validatorjs) {
}
}
function createMessage(form, input, key) {
var template = "<div ng-show='{{form}}.$dirty && {{form}}.{{input}}.$error.{{key}}'></div>";
var template = '<div ng-show="{{form}}.$dirty && {{form}}.{{input}}.$error.{{key}}"></div>';
var span = interpolate(template)({ form: form, input: input, key: key });
var element = angular.element(span);
return element;
}
function createMessages(form, input) {
var template = "<div text-light tooltip-message ng-show='{{form}}.$dirty && {{form}}.{{input}}.$invalid'></div>";
var template = '<div text-light tooltip-message ng-show="{{form}}.$dirty && {{form}}.{{input}}.$invalid"></div>';
return interpolate(template)({ form: form, input: input });
}

View File

@ -14,6 +14,7 @@
"angular-translate": "^2.13.1",
"angular-translate-loader-partial": "^2.13.1",
"angular-ui-router": "^1.0.0-beta.3",
"loopback-datasource-juggler": "^3.2.0",
"material-design-lite": "^1.3.0",
"oclazyload": "^0.6.3"
},