| /** |
| * angular-ui-utils - Swiss-Army-Knife of AngularJS tools (with no external dependencies!) |
| * @version v0.1.1 - 2014-02-05 |
| * @link http://angular-ui.github.com |
| * @license MIT License, http://www.opensource.org/licenses/MIT |
| */ |
| // READ: http://docs-next.angularjs.org/guide/ie |
| // element tags are statically defined in order to accommodate lazy-loading whereby directives are also unknown |
| |
| // The ieshiv takes care of our ui.directives and AngularJS's ng-view, ng-include, ng-pluralize, ng-switch. |
| // However, IF you have custom directives that can be used as html tags (yours or someone else's) then |
| // add list of directives into <code>window.myCustomTags</code> |
| |
| // <!--[if lte IE 8]> |
| // <script> |
| // window.myCustomTags = [ 'yourCustomDirective', 'somebodyElsesDirective' ]; // optional |
| // </script> |
| // <script src="build/angular-ui-ieshiv.js"></script> |
| // <![endif]--> |
| |
| (function (window, document) { |
| "use strict"; |
| |
| var tags = [ "ngInclude", "ngPluralize", "ngView", "ngSwitch", "uiCurrency", "uiCodemirror", "uiDate", "uiEvent", |
| "uiKeypress", "uiKeyup", "uiKeydown", "uiMask", "uiMapInfoWindow", "uiMapMarker", "uiMapPolyline", |
| "uiMapPolygon", "uiMapRectangle", "uiMapCircle", "uiMapGroundOverlay", "uiModal", "uiReset", |
| "uiScrollfix", "uiSelect2", "uiShow", "uiHide", "uiToggle", "uiSortable", "uiTinymce" |
| ]; |
| |
| window.myCustomTags = window.myCustomTags || []; // externally defined by developer using angular-ui directives |
| tags.push.apply(tags, window.myCustomTags); |
| |
| var toCustomElements = function (str) { |
| var result = []; |
| var dashed = str.replace(/([A-Z])/g, function ($1) { |
| return " " + $1.toLowerCase(); |
| }); |
| var tokens = dashed.split(" "); |
| |
| // If a token is just a single name (i.e. no namespace) then we juse define the elements the name given |
| if (tokens.length === 1) { |
| var name = tokens[0]; |
| |
| result.push(name); |
| result.push("x-" + name); |
| result.push("data-" + name); |
| } else { |
| var ns = tokens[0]; |
| var dirname = tokens.slice(1).join("-"); |
| |
| // this is finite list and it seemed senseless to create a custom method |
| result.push(ns + ":" + dirname); |
| result.push(ns + "-" + dirname); |
| result.push("x-" + ns + "-" + dirname); |
| result.push("data-" + ns + "-" + dirname); |
| } |
| return result; |
| }; |
| |
| for (var i = 0, tlen = tags.length; i < tlen; i++) { |
| var customElements = toCustomElements(tags[i]); |
| for (var j = 0, clen = customElements.length; j < clen; j++) { |
| var customElement = customElements[j]; |
| document.createElement(customElement); |
| } |
| } |
| |
| })(window, document); |