ux-datagrid-focusManager.min.js |
|
! ux-angularjs-datagrid v.1.4.11 (c) 2016, Obogo https://github.com/obogo/ux-angularjs-datagrid License: MIT. |
(function (exports, global) {
if (typeof define === "function" && define.amd) {
define(exports);
} else if (typeof module !== "undefined" && module.exports) {
module.exports = exports;
} else {
global.ux = exports;
}
!function(a,b){"function"==typeof define&&define.amd?define(a):"undefined"!=typeof module&&module.exports?module.exports=a:b.ux=a,a.visibility=function(){function a(d,e,f){var g=d.parentNode;return c(d)?9===g.nodeType?!0:f||"0"!==b(d,"opacity")?"none"===b(d,"display")||"hidden"===b(d,"visibility")?!1:g&&g!==e?a(g,e,f):!0:!1:!1}function b(a,b){return window.getComputedStyle?document.defaultView.getComputedStyle(a,null)[b]:a.currentStyle?a.currentStyle[b]:void 0}function c(a){for(;a=a.parentNode;)if(a==document)return!0;return!1}return{getStyle:b,isVisible:a}}(),a.selector=function(){function b(a,b){b=b||z.config.doc.body;var c,d,e=/:eq\((\d+)\)$/,f=a.match(e);return f&&f.length&&(a=a.replace(e,""),d=f[1]),c=b.querySelectorAll(a),c&&void 0!==d?c[d]:c}function c(c,d){if(e(c)){for(var g,i,k,l=j(d),m=z.config.doc.body,n=h(c,m,l,null,!0);n.count>n.totalCount;)n=n.parent;if(n=n.parent||n,k=n.str||q(n),n.str)for(var o=n.child;o;)k+=" "+o.str,o=o.child;return(n.count>1||n.child&&n.child.count)&&(g=a.util.array.toArray(b(k,m)),i=g.indexOf(c),k+=":eq("+i+")"),k+=f()}return""}function d(a,b,c){if(e(a)){var d=j(c),g=h(a,b,d);return q(g)+f()}return""}function e(b){return b?(b&&b.length&&void 0===b.nodeType&&a.datagrid.throwError("selector can only build a selection to a single DOMElement. A list was passed."),!0):""}function f(){return z.config.addVisible?":visible":""}function g(a,b){return"string"!=typeof b||b!==a&&!A.test(a)?"object"==typeof b&&a.match(b)?!0:!1:!0}function h(a,b,c,d,e){var f;return a?(b=b||z.config.doc,f={element:a,ignoreClass:c,maxParent:b,classes:k(a,c),attributes:l(a,d),type:a.nodeName&&a.nodeName.toLowerCase()||"",child:d},(!f.attributes.$unique||d)&&(e?(f.str=q(f,0,null,!0),f.count=b.querySelectorAll(f.str).length,f.count>1&&(f.parent=s(a,b,c,f,e))):f.parent=s(a,b,c,f,e)),f):""}function i(a){return"number"!=typeof a}function j(a){return a=a||[],"function"==typeof a?a:function(b){if(a instanceof Array)for(var c=0,d=a.length;d>c;){if(g(b,a[c]))return!1;c+=1}else if(g(b,a))return!1;return!0}}function k(a,b){var c=ux.filter(a.classList,i);return c=ux.filter(c,y),ux.filter(c,b)}function l(a,b){var c,d=0,e=a.attributes?a.attributes.length:0,f=[],g=n(a.attributes);if(g&&("id"===g.name&&z.config.allowId?f.push("#"+g.value):"id"!==g.name&&f.push(m(g)),f.length))return f.$unique=!0,f;if(z.config.allowAttributes)for(;e>d;)c=a.attributes[d],v[c.name]||w[c.name]||f.push(m(c)),d+=1;return f}function m(a){return"["+o(a.name)+"='"+p(a.value)+"']"}function n(a){for(var b,c,d=0,e=a?a.length:0;e>d;){if(b=a[d],c=o(b.name),w[c])return b;d+=1}return null}function o(a){var b,c,d=1;if(a.indexOf("-")){for(b=a.split("-"),c=b.length;c>d;)b[d]=b[d].charAt(0).toUpperCase()+b[d].substr(1),d+=1;a=b.join("")}return a}function p(a){return a.replace(/"/g,""").replace(/'/g,"'")}function q(a,b,c,d){var e,f,g;return b=b||0,f=a&&!a.attributes.$unique?q(a.parent,b+1):"",a&&(f+=(f.length?" ":"")+r(a)),b||d||(g=c||a.maxParent,e=g.querySelectorAll&&g.querySelectorAll(f)||[],e.length>1&&(f+=":eq("+t(e,a.element)+")")),f}function r(a){return a.attributes.$unique?a.attributes[0]:a.type+a.attributes.join("")+(a.classes.length?"."+a.classes.join("."):"")}function s(a,b,c,d,e){var f=a.parentNode;return f&&f!==b?h(a.parentNode,b,c,d,e):null}function t(a,b){var c,d=a.length;for(c=0;d>c;c+=1)if(b===a[c])return c;return-1}function u(b){var c,d=[];for(c in b)a.util.apply(Object.prototype.hasOwnProperty,b,[c])&&d.push(b[c]);return d}var v,w,x,y,z,A=/^ng-\w+/;return z={config:{doc:window.document,allowId:!0,allowAttributes:!0,addVisible:!1},addOmitAttrs:function(b){return a.each(arguments,function(a){v[a]=!0}),this},removeOmitAttrs:function(b){return a.each(arguments,function(a){delete v[a]}),this},getOmitAttrs:function(){return u(v)},resetOmitAttrs:function(){v={"class":!0,style:!0}},addUniqueAttrs:function(b){return a.each(arguments,function(a){w[a]=!0}),this},removeUniqueAttrs:function(b){return a.each(arguments,function(a){delete w[a]}),this},getUniqueAttrs:function(){return u(w)},resetUniqueAttrs:function(){w={id:!0,uid:!0}},addClassOmitFilters:function(){return a.each(arguments,function(a){x.push(a)}),y=j(x),this},removeClassOmitFilters:function(){return a.each(arguments,function(a){var b=x.indexOf(a);-1!==b&&x.splice(b,1)}),y=j(x),this},getClassOmitFilters:function(){return x.slice(0)},resetClassOmitFilters:function(){x=[],y=j(x)},get:c,getCleanSelector:c,quickSelector:d,reset:function(){z.resetOmitAttrs(),z.resetUniqueAttrs(),z.resetClassOmitFilters()}},z.reset(),z}(),a.datagrid.events.FOCUS_TO_PREV_ELEMENT_OF_SAME="ux-datagrid:focusToPrevElementOfSame",a.datagrid.events.FOCUS_TO_NEXT_ELEMENT_OF_SAME="ux-datagrid:focusToNextElementOfSame",a.datagrid.events.FOCUS_TO_PREV_ELEMENT_OF_SAME_FAILURE="ux-datagrid:focusToPrevElementOfSameFailure",a.datagrid.events.FOCUS_TO_NEXT_ELEMENT_OF_SAME_FAILURE="ux-datagrid:focusToNextElementOfSameFailure",a.datagrid.events.ON_SCROLL_TO_TOP_ENTER="ux-datagrid:onScrollToTopEnter",a.datagrid.events.ON_SCROLL_TO_BOTTOM_ENTER="ux-datagrid:onScrollToBottomEnter",angular.module("ux").factory("gridFocusManager",function(){return["inst",function(b){function c(a){return void 0===a.length&&(a=angular.element(a)),a}function d(){G.log("addListeners"),f(n)}function e(){G.log("removeListeners"),f(o)}function f(a){if(!(isNaN(b.values.activeRange.max)||b.values.activeRange.max<0)){G.log(" applyTo: %s - %s",b.values.activeRange.min,b.values.activeRange.max);for(var c,d=b.values.activeRange.min;d<=b.values.activeRange.max;)c=b.getRowElm(d),a(c),d+=1}}function g(a){if(a&&a[0]){var b=[].slice.call(a[0].querySelectorAll("input,a,select"));return ux.filter(b,h)}return[]}function h(a){return ux.visibility.isVisible(a,b.getContent()[0],!0)}function i(a,b){for(var c=b.split(":"),d=c.shift(),e=[].slice.call((a[0]||a).querySelectorAll(d));c.length;)e=j(c.shift(),e);return angular.element(e)}function j(a,b){return"eq("===a.substr(0,3)?k(a,b):"visible"===a.substr(0,7)?ux.filter(b,h):b}function k(a,b){var c=a.match(/\d+/)[0];return b[c]?[b[c]]:[]}function l(a){return!(!a||"ng-"!==a.substr(0,3))}function m(a){var c=a?!1:!0;return!c&&b.options.gridFocusManager&&b.options.gridFocusManager.filterClasses&&(c=-1!==b.options.gridFocusManager.filterClasses.indexOf(a)),c||(c=l(a)),!c}function n(b){var c=g(angular.element(b));c.length&&(c=a.util.matchAll(c,{nodeName:"INPUT"})).length?(G.log(" addListenersToRow"),c=angular.element(c),c.bind("keydown",p)):G.log(" no focusable elements found in row")}function o(b){var c=g(angular.element(b));c.length&&(c=a.util.matchAll(c,{nodeName:"INPUT"})).length?(G.log(" removeListenersToRow"),c=angular.element(c),c.unbind("keydown",p)):G.log(" no focusable elements found in row")}function p(c){var d,e,f=angular.element(c.currentTarget),g=!1,h=!1;G.log("FM: onKeyDown"),c.keyCode===I.ENTER&&c.currentTarget.nodeName.match(/A/)||(c.shiftKey&&c.keyCode===I.ENTER||c.keyCode===I.UP?(g=!q(f),g&&(d=b.getRowIndexFromElement(f),e=b.getRowItem(d),b.dispatch(a.datagrid.events.ON_SCROLL_TO_TOP_ENTER,d,e))):(c.keyCode===I.ENTER||c.keyCode===I.DOWN)&&(h=!r(f),h&&(d=b.getRowIndexFromElement(f),e=b.getRowItem(d),b.dispatch(a.datagrid.events.ON_SCROLL_TO_BOTTOM_ENTER,d,e))))}function q(a){var b=v(a,-1);return s(b,a)?!1:z(b)}function r(a){var b=w(a);return s(b,a)?!1:z(b)}function s(a,b){return(a[0]||a)===(b[0]||b)}function t(a){var b=v(a);return!(!b||!b.length||b[0]===a)}function u(a){var b=w(a);return!(!b||!b.length||b[0]===a)}function v(a){return x(a,-1)}function w(a){return G.log(" FM: getNextRowFocusElement"),x(a,1)}function x(a,d){if(G.log(" focusToRowElement"),a=c(a),b.element[0].contains(a[0])){var e,f,g=b.getRowIndexFromElement(a),h=g+d;return 0>h||h>=b.rowsLength?a:(f=y(a,g),G.log(" selector: %s",f),e=A(h,d,f),e&&e.length?e:a)}}function y(a,c){if(a=a[0]||a){c=c||b.getRowIndexFromElement(a);var d=b.getRowElm(c);return ux.selector.quickSelector(a,d[0],m)}return""}function z(a){G.log(" performFocus %o",a[0]);var c=!1;return a[0]&&(b.scrollModel.scrollIntoView(b.getRowIndexFromElement(a),!0),a[0].select&&a[0].select(),a[0].focus(),c=!0),c}function A(c,d,e){if(G.log(" findNextRowWithSelection"),b.options.gridFocusManager&&b.options.gridFocusManager.filterNextPattern)for(;c>0&&c<b.rowsLength-1&&!a.util.isMatch(b.data[c],b.options.gridFocusManager.filterNextPattern);)c+=d;var f,g=b.getRowElm(c);g[0].classList.contains("uncompiled")?(g[0].classList.remove("uncompiled"),f=i(g[0],e),g[0].classList.add("uncompiled")):f=i(g[0],e);for(var h=b.getContent();!f[0]&&(d>0&&c<b.rowsLength-1||0>d&&c>0);){if(c+=d,g=b.getRowElm(c),g[0]===h)return;f=i(g[0],e)}return f}function B(a){var c;document.activeElement!==b.element[0]&&b.element[0].contains(document.activeElement)&&(c=b.getRowIndexFromElement(document.activeElement),b.scrollModel.scrollIntoView(c))}function C(a){if(b.options.gridFocusManager&&b.options.gridFocusManager.throttleNextPrev){if(J)return;J=setTimeout(function(){clearTimeout(),J=0},b.options.gridFocusManager.throttleNextPrev)}b.creepRenderModel.stop(),b.flow.add(a,[document.activeElement],0)}function D(c,d){b.element[0].contains(document.activeElement)&&C(function(c){var e=!1;d?(F(c,d,-1),e=!0):e=F(c,d,-1),e||b.scope.$emit(a.datagrid.events.FOCUS_TO_PREV_ELEMENT_OF_SAME_FAILURE)})}function E(c,d){b.element[0].contains(document.activeElement)&&C(function(c){var e=!1;d?(F(c,d,1),e=!0):e=r(c),e||b.scope.$emit(a.datagrid.events.FOCUS_TO_NEXT_ELEMENT_OF_SAME_FAILURE)})}function F(c,d,e){function f(){k();var c=b.getRowElm(h),d=i(c,n);d?z(d):0>e?b.scope.$emit(a.datagrid.events.FOCUS_TO_PREV_ELEMENT_OF_SAME_FAILURE):b.scope.$emit(a.datagrid.events.FOCUS_TO_NEXT_ELEMENT_OF_SAME_FAILURE)}function g(c){return d(m[c])?(h=c,k=b.scope.$on(a.datagrid.events.ON_AFTER_RENDER,f),b.scrollModel.scrollIntoView(c,!0)||f(),!0):!1}var h,j,k,l=b.getRowIndexFromElement(c)+e,m=b.getData(),n=y(c);if(0>e){for(j=l;j>=0;j-=1)if(g(j))return!0}else for(j=l;j<b.rowsLength;j+=1)if(g(j))return!0;return!1}var G=a.logWrapper("gridFocusManager",{},"redOrange",b),H=[],I={ENTER:13,UP:38,DOWN:40},J=0;return ux.selector.config.allowId=!1,ux.selector.config.allowAttributes=!1,ux.selector.config.addVisible=!0,G.hasPrevRowFocusElement=t,G.hasNextRowFocusElement=u,G.focusToPrevRowElement=q,G.focusToNextRowElement=r,G.query=i,G.destroy=function(){for(;H.length;)H.pop()();H=null,G=null},H.push(b.scope.$on(a.datagrid.events.ON_BEFORE_RESET,e)),H.push(b.scope.$on(a.datagrid.events.ON_BEFORE_RENDER,e)),H.push(b.scope.$on(a.datagrid.events.ON_AFTER_RENDER,d)),H.push(b.scope.$on(a.datagrid.events.FOCUS_TO_PREV_ELEMENT_OF_SAME,D)),H.push(b.scope.$on(a.datagrid.events.FOCUS_TO_NEXT_ELEMENT_OF_SAME,E)),H.push(b.scope.$on(a.datagrid.events.ON_AFTER_HEIGHTS_UPDATED_RENDER,B)),b.gridFocusManager=G,b}]})}(this.ux=this.ux||{},function(){return this}());
|
¶ sourceMappingURL=ux-datagrid-focusManager.min.js.map |
}(this.ux = this.ux || {}, function() {return this;}()));
|