blob: 84eb91aeb5c8470f5b2095e8beb42ab69e303bb6 [file] [log] [blame]
Matteo Scandolo4ba4cf12016-04-20 16:36:17 -07001/**
2 * © OpenCORD
3 *
4 * Visit http://guide.xosproject.org/devguide/addview/ for more information
5 *
6 * Created by teone on 4/15/16.
7 */
8
9(function () {
10 'use strict';
11
12 angular.module('xos.uiComponents')
13
14 /**
15 * @ngdoc directive
16 * @name xos.uiComponents.directive:xosValidation
17 * @restrict E
18 * @description The xos-validation directive
19 * @param {Object} errors The error object
20 * @element ANY
21 * @scope
Matteo Scandoloebf4fad2016-04-22 12:05:37 -070022 * @example
23 <example module="sampleValidation">
24 <file name="index.html">
25 <div ng-controller="SampleCtrl as vm">
26 <div class="row">
27 <div class="col-xs-12">
28 <label>Set an error type:</label>
29 </div>
30 <div class="col-xs-2">
Matteo Scandolo88e18462016-04-25 14:24:18 -070031 <a class="btn"
32 ng-click="vm.errors.required = !vm.errors.required"
33 ng-class="{'btn-default': !vm.errors.required, 'btn-success': vm.errors.required}">
34 Required
35 </a>
36 </div>
37 <div class="col-xs-2">
38 <a class="btn"
39 ng-click="vm.errors.email = !vm.errors.email"
40 ng-class="{'btn-default': !vm.errors.email, 'btn-success': vm.errors.email}">
Matteo Scandoloebf4fad2016-04-22 12:05:37 -070041 Email
42 </a>
43 </div>
Matteo Scandolo88e18462016-04-25 14:24:18 -070044 <div class="col-xs-2">
45 <a class="btn"
46 ng-click="vm.errors.minlength = !vm.errors.minlength"
47 ng-class="{'btn-default': !vm.errors.minlength, 'btn-success': vm.errors.minlength}">
48 Min Length
49 </a>
50 </div>
51 <div class="col-xs-2">
52 <a class="btn"
53 ng-click="vm.errors.maxlength = !vm.errors.maxlength"
54 ng-class="{'btn-default': !vm.errors.maxlength, 'btn-success': vm.errors.maxlength}">
55 Max Length
56 </a>
57 </div>
Matteo Scandoloebf4fad2016-04-22 12:05:37 -070058 </div>
59 <xos-validation errors="vm.errors"></xos-validation>
60 </div>
61 </file>
62 <file name="script.js">
63 angular.module('sampleValidation', ['xos.uiComponents'])
64 .controller('SampleCtrl', function(){
65 this.errors = {
66 email: false
67 }
68 });
69 </file>
70 </example>
Matteo Scandolo4ba4cf12016-04-20 16:36:17 -070071 */
72
73 .directive('xosValidation', function(){
74 return {
75 restrict: 'E',
76 scope: {
77 errors: '='
78 },
79 template: `
Matteo Scandolo88e18462016-04-25 14:24:18 -070080 <div ng-cloak>
Matteo Scandolo199ec002016-04-22 10:53:49 -070081 <!-- <pre>{{vm.errors.email | json}}</pre> -->
Matteo Scandolob3d686f2016-04-22 14:14:03 -070082 <xos-alert config="vm.config" show="vm.errors.required !== undefined && vm.errors.required !== false">
83 Field required
84 </xos-alert>
Matteo Scandoloebf4fad2016-04-22 12:05:37 -070085 <xos-alert config="vm.config" show="vm.errors.email !== undefined && vm.errors.email !== false">
Matteo Scandolo4ba4cf12016-04-20 16:36:17 -070086 This is not a valid email
87 </xos-alert>
Matteo Scandoloebf4fad2016-04-22 12:05:37 -070088 <xos-alert config="vm.config" show="vm.errors.minlength !== undefined && vm.errors.minlength !== false">
89 Too short
90 </xos-alert>
91 <xos-alert config="vm.config" show="vm.errors.maxlength !== undefined && vm.errors.maxlength !== false">
92 Too long
93 </xos-alert>
94 <xos-alert config="vm.config" show="vm.errors.custom !== undefined && vm.errors.custom !== false">
95 Field invalid
96 </xos-alert>
Matteo Scandolo4ba4cf12016-04-20 16:36:17 -070097 </div>
98 `,
99 transclude: true,
100 bindToController: true,
101 controllerAs: 'vm',
102 controller: function(){
103 this.config = {
104 type: 'danger'
105 }
106 }
107 }
108 })
109})();