mirror of
https://github.com/wahyd4/cdnjs.git
synced 2026-08-17 16:56:08 +10:00
8 lines
11 KiB
JavaScript
8 lines
11 KiB
JavaScript
/**
|
|
* AngularStrap - Twitter Bootstrap directives for AngularJS
|
|
* @version v0.6.6 - 2013-02-13
|
|
* @link http://mgcrea.github.com/angular-strap
|
|
* @author Olivier Louvignes
|
|
* @license MIT License, http://www.opensource.org/licenses/MIT
|
|
*/
|
|
angular.module("$strap.config",[]).value("$strap.config",{}),angular.module("$strap.filters",["$strap.config"]),angular.module("$strap.directives",["$strap.config"]),angular.module("$strap",["$strap.filters","$strap.directives","$strap.config"]),angular.module("$strap.directives").directive("bsAlert",["$parse","$timeout","$compile",function(e,t,n){"use strict";return{restrict:"A",link:function(r,i,s){var o=e(s.bsAlert),u=o.assign,a=o(r);s.bsAlert?r.$watch(s.bsAlert,function(e,t){a=e,i.html((e.title?"<strong>"+e.title+"</strong> ":"")+e.content||""),!e.closed||i.hide(),n(i.contents())(r);if(e.type||t.type)t.type&&i.removeClass("alert-"+t.type),e.type&&i.addClass("alert-"+e.type);(angular.isUndefined(s.closeButton)||s.closeButton!=="0"&&s.closeButton!=="false")&&i.prepend('<button type="button" class="close" data-dismiss="alert">×</button>')},!0):(angular.isUndefined(s.closeButton)||s.closeButton!=="0"&&s.closeButton!=="false")&&i.prepend('<button type="button" class="close" data-dismiss="alert">×</button>'),i.addClass("alert").alert(),i.hasClass("fade")&&(i.removeClass("in"),setTimeout(function(){i.addClass("in")}));var f=s.ngRepeat&&s.ngRepeat.split(" in ").pop();i.on("close",function(e){console.warn("close!");var t;f?(e.preventDefault(),i.removeClass("in"),console.warn(r.$parent),t=function(){i.trigger("closed"),r.$parent&&r.$parent.$apply(function(){r.$parent[f].splice(r.$index,1)})},$.support.transition&&i.hasClass("fade")?i.on($.support.transition.end,t):t()):a&&(e.preventDefault(),i.removeClass("in"),t=function(){i.trigger("closed"),r.$apply(function(){a.closed=!0})},$.support.transition&&i.hasClass("fade")?i.on($.support.transition.end,t):t())})}}}]),angular.module("$strap.directives").directive("bsButton",["$parse","$timeout",function(e,t){"use strict";return{restrict:"A",require:"?ngModel",link:function(n,r,i,s){if(s){r.parent('[data-toggle="buttons-checkbox"], [data-toggle="buttons-radio"]').length||r.attr("data-toggle","button");var o=!!n.$eval(i.ngModel);o&&r.addClass("active"),n.$watch(i.ngModel,function(e,t){var n=!!e,i=!!t;n!==i?$.fn.button.Constructor.prototype.toggle.call(u):n&&!o&&r.addClass("active")})}r.hasClass("btn")||r.on("click.button.data-api",function(e){r.button("toggle")}),r.button();var u=r.data("button");u.toggle=function(){if(!s)return $.fn.button.Constructor.prototype.toggle.call(this);var t=r.parent('[data-toggle="buttons-radio"]');t.length?(r.siblings("[ng-model]").each(function(t,r){e($(r).attr("ng-model")).assign(n,!1)}),n.$digest(),s.$modelValue||(s.$setViewValue(!s.$modelValue),n.$digest())):n.$apply(function(){s.$setViewValue(!s.$modelValue)})}}}}]).directive("bsButtonsCheckbox",["$parse",function(e){"use strict";return{restrict:"A",require:"?ngModel",compile:function(t,n,r){t.attr("data-toggle","buttons-checkbox").find("a, button").each(function(e,t){$(t).attr("bs-button","")})}}}]).directive("bsButtonsRadio",["$parse",function(e){"use strict";return{restrict:"A",require:"?ngModel",compile:function(t,n,r){return t.attr("data-toggle","buttons-radio"),n.ngModel||t.find("a, button").each(function(e,t){$(t).attr("bs-button","")}),function(t,n,r,i){i&&(n.find("[value]").button().filter('[value="'+t.$eval(r.ngModel)+'"]').addClass("active"),n.on("click.button.data-api",function(e){t.$apply(function(){i.$setViewValue($(e.target).closest("button").attr("value"))})}),t.$watch(r.ngModel,function(e,i){if(e!==i){var s=n.find('[value="'+t.$eval(r.ngModel)+'"]');s.length&&$.fn.button.Constructor.prototype.toggle.call(s.data("button"))}}))}}}}]),angular.module("$strap.directives").directive("bsButtonSelect",["$parse","$timeout",function(e,t){"use strict";var n="ontouchstart"in window;return{restrict:"A",require:"?ngModel",link:function(r,i,s,o){var u=e(s.bsButtonSelect),a=u.assign;o&&(i.text(r.$eval(s.ngModel)),r.$watch(s.ngModel,function(e,t){i.text(e)}));var f,l,c,h;i.on(n?"touchstart.bsButtonSelect.data-api":"click.bsButtonSelect.data-api",function(e){f=u(r),l=o?r.$eval(s.ngModel):i.text(),c=f.indexOf(l),h=c>f.length-2?f[0]:f[c+1],r.$apply(function(){i.text(h),o&&o.$setViewValue(h)})})}}}]),angular.module("$strap.directives").directive("bsDatepicker",["$timeout",function(e){"use strict";var t="ontouchstart"in window&&!window.navigator.userAgent.match(/PhantomJS/i),n={"/":"[\\/]","-":"[-]",".":"[.]",dd:"(?:(?:[0-2]?[0-9]{1})|(?:[3][01]{1}))",d:"(?:(?:[0-2]?[0-9]{1})|(?:[3][01]{1}))",mm:"(?:[0]?[1-9]|[1][012])",m:"(?:[0]?[1-9]|[1][012])",yyyy:"(?:(?:[1]{1}[0-9]{1}[0-9]{1}[0-9]{1})|(?:[2]{1}[0-9]{3}))(?![[0-9]])",yy:"(?:(?:[0-9]{1}[0-9]{1}))(?![[0-9]])"};return{restrict:"A",require:"?ngModel",link:function(r,i,s,o){var u=function(e,t){t||(t={});var r=e,i=n;return angular.forEach(i,function(e,t){r=r.split(t).join(e)}),new RegExp("^"+r+"$",["i"])},a=t?"yyyy/mm/dd":u(s.dateFormat||"mm/dd/yyyy");o&&o.$parsers.unshift(function(e){return!e||a.test(e)?(o.$setValidity("date",!0),e):(o.$setValidity("date",!1),undefined)});var f=i.next('[data-toggle="datepicker"]');f.length&&f.on("click",function(){t?i.trigger("focus"):i.datepicker("show")});if(t&&i.prop("type")==="text")i.prop("type","date"),i.on("change",function(e){r.$apply(function(){o.$setViewValue(i.val())})});else{o&&i.on("changeDate",function(e){r.$apply(function(){o.$setViewValue(i.val())})});var l=i.closest(".popover");l&&l.on("hide",function(e){var t=i.data("datepicker");t&&(t.picker.remove(),i.data("datepicker",null))}),i.attr("data-toggle","datepicker"),i.datepicker({autoclose:!0,language:s.language||"en"})}}}}]),angular.module("$strap.directives").directive("bsDropdown",["$parse","$compile",function(e,t){"use strict";var n=Array.prototype.slice,r='<ul class="dropdown-menu" role="menu" aria-labelledby="drop1"><li ng-repeat="item in items" ng-class="{divider: !!item.divider, \'dropdown-submenu\': !!item.submenu && item.submenu.length}"><a ng-hide="!!item.divider" tabindex="-1" ng-href="{{item.href}}" ng-click="{{item.click}}" target="{{item.target}}" ng-bind-html-unsafe="item.text"></a></li></ul>',i=function(e,n,i){var o,u,a;for(var f=0,l=e.length;f<l;f++)if(o=e[f].submenu)a=i.$new(),a.items=o,u=t(r)(a),u=u.appendTo(n.children("li:nth-child("+(f+1)+")")),s(o,u,a)},s=function(){var e=n.call(arguments);setTimeout(function(){i.apply(null,e)})};return{restrict:"EA",scope:!0,link:function(i,o,u){var a=e(u.bsDropdown);i.items=a(i);var f=t(r)(i);s(i.items,f,i),f.insertAfter(o),o.addClass("dropdown-toggle").attr("data-toggle","dropdown")}}}]),angular.module("$strap.directives").directive("bsModal",["$parse","$compile","$http","$timeout","$q","$templateCache",function(e,t,n,r,i,s){"use strict";return{restrict:"A",scope:!0,link:function(u,a,f,l){var c=e(f.bsModal),h=c.assign,p=c(u);i.when(s.get(p)||n.get(p,{cache:!0})).then(function(n){angular.isObject(n)&&(n=n.data);var i=c(u).replace(".html","").replace(/\//g,"-").replace(/\./g,"-")+"-"+u.$id,s=$('<div class="modal hide" tabindex="-1"></div>').attr("id",i).attr("data-backdrop",f.backdrop||!0).attr("data-keyboard",f.keyboard||!0).addClass(f.modalClass?"fade "+f.modalClass:"fade").html(n);$("body").append(s),a.attr("href","#"+i).attr("data-toggle","modal"),r(function(){t(s)(u)}),u._modal=function(e){s.modal(e)},u.hide=function(){s.modal("hide")},u.show=function(){s.modal("show")},u.dismiss=u.hide})}}}]),angular.module("$strap.directives").directive("bsNavbar",["$location",function(e){"use strict";return{restrict:"A",link:function(n,r,i,s){n.$watch(function(){return e.path()},function(e,t){r.find("li[data-match-route]").each(function(t,n){var r=angular.element(n),i=r.attr("data-match-route"),s=new RegExp("^"+i+"$",["i"]);s.test(e)?r.addClass("active"):r.removeClass("active")})})}}}]),angular.module("$strap.directives").directive("bsPopover",["$parse","$compile","$http","$timeout","$q","$templateCache",function(e,t,n,r,i,s){"use strict";return $("body").on("keyup",function(e){e.keyCode===27&&$(".popover.in").each(function(){$(this).popover("hide")})}),{restrict:"A",scope:!0,link:function(o,u,a,f){var l=e(a.bsPopover),c=l.assign,h=l(o),p={};angular.isObject(h)&&(p=h),i.when(p.content||s.get(h)||n.get(h,{cache:!0})).then(function(n){angular.isObject(n)&&(n=n.data),!a.unique||u.on("show",function(e){$(".popover.in").each(function(){var e=$(this),t=e.data("popover");t&&!t.$element.is(u)&&e.popover("hide")})}),!a.hide||o.$watch(a.hide,function(e,t){e?r.hide():e!==t&&r.show()}),u.popover(angular.extend({},p,{content:n,html:!0}));var r=u.data("popover");r.hasContent=function(){return this.getTitle()||n},r.getPosition=function(){var e=$.fn.popover.Constructor.prototype.getPosition.apply(this,arguments);return t(this.$tip)(o),o.$digest(),this.$tip.data("popover",this),e},o._popover=function(e){u.popover(e)},o.hide=function(){u.popover("hide")},o.show=function(){u.popover("show")},o.dismiss=o.hide})}}}]),angular.module("$strap.directives").directive("bsTimepicker",["$timeout",function(e){"use strict";var t="((?:(?:[0-1][0-9])|(?:[2][0-3])|(?:[0-9])):(?:[0-5][0-9])(?::[0-5][0-9])?(?:\\s?(?:am|AM|pm|PM))?)";return{restrict:"A",require:"?ngModel",link:function(n,r,i,s){s&&r.on("change",function(e){n.$apply(function(){s.$setViewValue(r.val())})});var o=new RegExp("^"+t+"$",["i"]);s.$parsers.unshift(function(e){return!e||o.test(e)?(s.$setValidity("time",!0),e):(s.$setValidity("time",!1),undefined)});var u=r.closest(".popover");u&&u.on("hide",function(e){var t=r.data("timepicker");t&&(t.$widget.remove(),r.data("timepicker",null))}),r.attr("data-toggle","timepicker"),r.timepicker()}}}]),angular.module("$strap.directives").directive("bsTooltip",["$parse","$compile",function(e,t){"use strict";return{restrict:"A",scope:!0,link:function(n,r,i,s){var o=e(i.bsTooltip),u=o.assign,a=o(n);n.$watch(i.bsTooltip,function(e,t){e!==t&&(a=e)}),!i.unique||r.on("show",function(e){$(".tooltip.in").each(function(){var e=$(this),t=e.data("tooltip");t&&!t.$element.is(r)&&e.tooltip("hide")})}),r.tooltip({title:function(){return angular.isFunction(a)?a.apply(null,arguments):a},html:!0});var f=r.data("tooltip");f.show=function(){var e=$.Event("show");this.$element.trigger(e);if(e.isDefaultPrevented())return;var t=$.fn.tooltip.Constructor.prototype.show.apply(this,arguments);return this.tip().data("tooltip",this),t},f.hide=function(){var e=$.Event("hide");this.$element.trigger(e);if(e.isDefaultPrevented())return;return $.fn.tooltip.Constructor.prototype.hide.apply(this,arguments)},n._tooltip=function(e){r.tooltip(e)},n.hide=function(){r.tooltip("hide")},n.show=function(){r.tooltip("show")},n.dismiss=n.hide}}}]),angular.module("$strap.directives").directive("bsTypeahead",["$parse",function(e){"use strict";return{restrict:"A",require:"?ngModel",link:function(n,r,i,s){var o=e(i.bsTypeahead),u=o.assign,a=o(n);n.$watch(i.bsTypeahead,function(e,t){e!==t&&(a=e)}),r.attr("data-provide","typeahead"),r.typeahead({source:function(e){return angular.isFunction(a)?a.apply(null,arguments):a},minLength:i.minLength||1,items:i.items,updater:function(e){return s&&n.$apply(function(){s.$setViewValue(e)}),e}});var f=r.data("typeahead");f.lookup=function(e){var t;return this.query=this.$element.val()||"",this.query.length<this.options.minLength?this.shown?this.hide():this:(t=$.isFunction(this.source)?this.source(this.query,$.proxy(this.process,this)):this.source,t?this.process(t):this)},i.minLength==="0"&&setTimeout(function(){r.on("focus",function(){setTimeout(r.typeahead.bind(r,"lookup"),200)})})}}}]); |