69 lines
2.6 KiB
JavaScript
69 lines
2.6 KiB
JavaScript
|
/**
|
||
|
* 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);
|