summaryrefslogtreecommitdiffstats
path: root/js/vendor/angular-ui/modules/directives/showhide
diff options
context:
space:
mode:
Diffstat (limited to 'js/vendor/angular-ui/modules/directives/showhide')
-rw-r--r--js/vendor/angular-ui/modules/directives/showhide/showhide.js60
-rw-r--r--js/vendor/angular-ui/modules/directives/showhide/test/showhideSpec.js104
2 files changed, 164 insertions, 0 deletions
diff --git a/js/vendor/angular-ui/modules/directives/showhide/showhide.js b/js/vendor/angular-ui/modules/directives/showhide/showhide.js
new file mode 100644
index 000000000..eec5c395d
--- /dev/null
+++ b/js/vendor/angular-ui/modules/directives/showhide/showhide.js
@@ -0,0 +1,60 @@
+/**
+ * uiShow Directive
+ *
+ * Adds a 'ui-show' class to the element instead of display:block
+ * Created to allow tighter control of CSS without bulkier directives
+ *
+ * @param expression {boolean} evaluated expression to determine if the class should be added
+ */
+angular.module('ui.directives').directive('uiShow', [function () {
+ return function (scope, elm, attrs) {
+ scope.$watch(attrs.uiShow, function (newVal, oldVal) {
+ if (newVal) {
+ elm.addClass('ui-show');
+ } else {
+ elm.removeClass('ui-show');
+ }
+ });
+ };
+}])
+
+/**
+ * uiHide Directive
+ *
+ * Adds a 'ui-hide' class to the element instead of display:block
+ * Created to allow tighter control of CSS without bulkier directives
+ *
+ * @param expression {boolean} evaluated expression to determine if the class should be added
+ */
+ .directive('uiHide', [function () {
+ return function (scope, elm, attrs) {
+ scope.$watch(attrs.uiHide, function (newVal, oldVal) {
+ if (newVal) {
+ elm.addClass('ui-hide');
+ } else {
+ elm.removeClass('ui-hide');
+ }
+ });
+ };
+}])
+
+/**
+ * uiToggle Directive
+ *
+ * Adds a class 'ui-show' if true, and a 'ui-hide' if false to the element instead of display:block/display:none
+ * Created to allow tighter control of CSS without bulkier directives. This also allows you to override the
+ * default visibility of the element using either class.
+ *
+ * @param expression {boolean} evaluated expression to determine if the class should be added
+ */
+ .directive('uiToggle', [function () {
+ return function (scope, elm, attrs) {
+ scope.$watch(attrs.uiToggle, function (newVal, oldVal) {
+ if (newVal) {
+ elm.removeClass('ui-hide').addClass('ui-show');
+ } else {
+ elm.removeClass('ui-show').addClass('ui-hide');
+ }
+ });
+ };
+}]);
diff --git a/js/vendor/angular-ui/modules/directives/showhide/test/showhideSpec.js b/js/vendor/angular-ui/modules/directives/showhide/test/showhideSpec.js
new file mode 100644
index 000000000..6f9959911
--- /dev/null
+++ b/js/vendor/angular-ui/modules/directives/showhide/test/showhideSpec.js
@@ -0,0 +1,104 @@
+/*global beforeEach, describe, it, inject, expect, module, spyOn*/
+
+(function () {
+ 'use strict';
+
+ describe('uiShow', function () {
+
+ var scope, $compile;
+ beforeEach(module('ui.directives'));
+ beforeEach(inject(function (_$rootScope_, _$compile_) {
+ scope = _$rootScope_.$new();
+ $compile = _$compile_;
+ }));
+
+ describe('linking the directive', function () {
+ it('should call scope.$watch', function () {
+ spyOn(scope, '$watch');
+ $compile('<div ui-show="foo"></div>')(scope);
+ expect(scope.$watch).toHaveBeenCalled();
+ });
+ });
+
+ describe('executing the watcher', function () {
+ it('should add the ui-show class if true', function () {
+ var element = $compile('<div ui-show="foo"></div>')(scope);
+ scope.foo = true;
+ scope.$apply();
+ expect(element.hasClass('ui-show')).toBe(true);
+ });
+ it('should remove the ui-show class if false', function () {
+ var element = $compile('<div ui-show="foo"></div>')(scope);
+ scope.foo = false;
+ scope.$apply();
+ expect(element.hasClass('ui-show')).toBe(false);
+ });
+ });
+ });
+
+ describe('uiHide', function () {
+
+ var scope, $compile;
+ beforeEach(module('ui.directives'));
+ beforeEach(inject(function (_$rootScope_, _$compile_) {
+ scope = _$rootScope_.$new();
+ $compile = _$compile_;
+ }));
+
+ describe('when the directive is linked', function () {
+ it('should call scope.$watch', function () {
+ spyOn(scope, '$watch');
+ $compile('<div ui-hide="foo"></div>')(scope);
+ expect(scope.$watch).toHaveBeenCalled();
+ });
+ });
+
+ describe('executing the watcher', function () {
+ it('should add the ui-hide class if true', function () {
+ var element = $compile('<div ui-hide="foo"></div>')(scope);
+ scope.foo = true;
+ scope.$apply();
+ expect(element.hasClass('ui-hide')).toBe(true);
+ });
+ it('should remove the ui-hide class if false', function () {
+ var element = $compile('<div ui-hide="foo"></div>')(scope);
+ scope.foo = false;
+ scope.$apply();
+ expect(element.hasClass('ui-hide')).toBe(false);
+ });
+ });
+ });
+
+ describe('uiToggle', function () {
+
+ var scope, $compile;
+ beforeEach(module('ui.directives'));
+ beforeEach(inject(function (_$rootScope_, _$compile_) {
+ scope = _$rootScope_.$new();
+ $compile = _$compile_;
+ }));
+
+ describe('when the directive is linked', function () {
+ it('should call scope.$watch', function () {
+ spyOn(scope, '$watch');
+ $compile('<div ui-toggle="foo"></div>')(scope);
+ expect(scope.$watch).toHaveBeenCalled();
+ });
+ });
+
+ describe('executing the watcher', function () {
+ it('should remove the ui-hide class and add the ui-show class if true', function () {
+ var element = $compile('<div ui-toggle="foo"></div>')(scope);
+ scope.foo = true;
+ scope.$apply();
+ expect(element.hasClass('ui-show') && !element.hasClass('ui-hide')).toBe(true);
+ });
+ it('should remove the ui-hide class and add the ui-show class if false', function () {
+ var element = $compile('<div ui-toggle="foo"></div>')(scope);
+ scope.foo = false;
+ scope.$apply();
+ expect(!element.hasClass('ui-show') && element.hasClass('ui-hide')).toBe(true);
+ });
+ });
+ });
+})();