mgCrud como modulo npm externo, vnFocus sobre botones

This commit is contained in:
Juan Ferrer Toribio 2017-02-08 17:28:23 +01:00
parent f4a5274a9a
commit efac73f4bc
5 changed files with 35 additions and 11 deletions

View File

@ -1,3 +1,9 @@
<!--
<mg-ajax path="/client/api/Clients" options="mgIndex as index"></mg-ajax>
<button ng-click="index.accept()"></button>
<span ng-repeat="client in index.model">{{client}}</span>
-->
<div margin-medium> <div margin-medium>
<div style="max-width: 40em; margin: 0 auto;"> <div style="max-width: 40em; margin: 0 auto;">
<vn-card> <vn-card>

View File

@ -1,16 +1,25 @@
import {module} from '../module'; import {module} from '../module';
// Sets the focus and selects the text on the input. /**
* Sets the focus and selects the text on the input.
*/
export function directive() { export function directive() {
return { return {
restrict: 'A', restrict: 'A',
link: function($scope, $element, $attrs) { link: function($scope, $element, $attrs) {
$scope.$watch($attrs.vnFocus, function(value) { $scope.$watch('', function() {
if ($element[0].getElementsByTagName("INPUT")[0]) let input = $element[0];
$element[0].getElementsByTagName("INPUT")[0].focus(); let selector = 'input, textarea, button, submit';
if ($element[0].getElementsByTagName("TEXTAREA")[0])
$element[0].getElementsByTagName("TEXTAREA")[0].focus(); if(!input.matches(selector))
input = input.querySelector(selector);
if(!input)
throw new Error(`vnFocus: Can't find a focusable element`);
input.focus();
if(input.select)
input.select();
}); });
} }
}; };

View File

@ -8,8 +8,17 @@ import {kebabToCamel} from '../lib/string';
export function directive() { export function directive() {
return { return {
restrict: 'A', restrict: 'A',
require: [],
link: function($scope, $element, $attrs) { link: function($scope, $element, $attrs) {
$scope[kebabToCamel($attrs.vnId)] = $element[0].$ctrl; let id = kebabToCamel($attrs.vnId);
let controller = $element[0].$ctrl;
if(!id)
throw new Error(`vnId: Attribute can't be null`);
if(!controller)
throw new Error(`vnId: Can't find controller for element '${id}'`);
$scope[id] = controller;
} }
}; };
}; };

View File

@ -1,8 +1,8 @@
export * from './angular'; export * from './angular';
export * from './oc-lazy-load';
export * from './ui-router'; export * from './ui-router';
export * from './mg-crud';
export * from './oc-lazy-load';
export * from './angular-translate'; export * from './angular-translate';
export * from './material-design-lite'; export * from './material-design-lite';
export * from './angular-paging'; export * from './angular-paging';
export * from './validator'; export * from './validator';
//export * from './mg-crud';

View File

@ -15,7 +15,7 @@
"angular-translate-loader-partial": "^2.13.1", "angular-translate-loader-partial": "^2.13.1",
"angular-ui-router": "^1.0.0-beta.3", "angular-ui-router": "^1.0.0-beta.3",
"material-design-lite": "^1.3.0", "material-design-lite": "^1.3.0",
"mg-crud": "^1.0.1", "mg-crud": "^1.1.2",
"oclazyload": "^0.6.3", "oclazyload": "^0.6.3",
"validator": "^6.2.1" "validator": "^6.2.1"
}, },