Skip to content

Commit c1a6538

Browse files
authored
Merge pull request #23 from optiflows/develop
Input error message
2 parents 471a558 + 03d3ba4 commit c1a6538

8 files changed

+36
-389
lines changed

bower.json

+4-3
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,10 @@
2424
"dependencies": {
2525
"angular-schema-form": ">=0.8.13",
2626
"angular": "1.5.5",
27-
"angular-material": "1.0.7",
28-
"angular-animate": "1.4",
29-
"angular-sanitize": "1.4"
27+
"angular-material": "1.0.9",
28+
"angular-animate": "1.5.5",
29+
"angular-sanitize": "1.5.5",
30+
"angular-messages": "1.5.5"
3031
},
3132
"devDependencies": {
3233
"angular-ui-ace": "~0.2.3",

examples/material-example.html

+2-1
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ <h3>Schema</h3>
165165
<script src="../bower_components/angular-aria/angular-aria.js"></script>
166166
<script src="../bower_components/angular-animate/angular-animate.js"></script>
167167
<script src="../bower_components/angular-material/angular-material.js"></script>
168+
<script src="../bower_components/angular-messages/angular-messages.js"></script>
168169
<script type="text/javascript" src="../bower_components/angular-sanitize/angular-sanitize.min.js"></script>
169170
<!-- <script type="text/javascript" src="../bower_components/angular-ui-sortable/sortable.js"></script>
170171
-->
@@ -175,7 +176,7 @@ <h3>Schema</h3>
175176

176177
<script type="text/javascript">
177178
// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat
178-
var app = angular.module('test', ['schemaForm', 'ngMaterial', 'ui.ace'])
179+
var app = angular.module('test', ['schemaForm', 'ngMaterial', 'ui.ace','ngMessages'])
179180

180181
app.config(function($mdThemingProvider, $mdDateLocaleProvider) {
181182
$mdThemingProvider.setDefaultTheme('default');

material-decorator.js

-380
This file was deleted.

material-decorator.min.js

-1
This file was deleted.

src/checkbox.html

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
sf-changed="form"
66
ng-disabled="form.readonly"
77
schema-validate="form"
8+
sf-material-class="md-checked"
89
class="{{::form.fieldHtmlClass}}"
910
name="{{::form.key|sfCamelKey}}"
1011
aria-label="{{::form.title}}">

src/default.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<md-input-container class="schema-form-{{::form.type}} {{::form.htmlClass}}"
2-
ng-class="{'md-input-has-value': model['{{form.key.join('\'][\'')}}'], 'has-error': hasError(), 'has-success': hasSuccess(), 'has-feedback': form.feedback !== false}"
3-
sf-messages sf-layout>
2+
ng-class="{'has-error': hasError(), 'has-success': hasSuccess(), 'has-feedback': form.feedback !== false}"
3+
sf-messages sf-layout sf-material-class="md-input-has-value">
44
<label ng-show="showTitle()" for="{{::form.key|sfCamelKey}}">{{::form.title}}</label>
55
<input sf-field-model
66
ng-show="::form.key"

src/material-class.js

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
angular.module('schemaForm').directive('sfMaterialClass', function($compile, $timeout) {
2+
return {
3+
restrict : 'A',
4+
scope : false,
5+
link : function(scope, element, attrs, ngModel) {
6+
function reduceHelper(obj, i) {return obj[i]}
7+
8+
var modelValue;
9+
try {
10+
modelValue = scope.form.key.reduce(reduceHelper, scope.model);
11+
} catch (e) {
12+
modelValue = undefined;
13+
}
14+
15+
// Element class is not set in DOM if executed immediately.
16+
// I don't understand exactly why but it's probably related to other directive job.
17+
$timeout(function() {
18+
if (modelValue !== null && typeof modelValue !== 'undefined' && modelValue !== false) {
19+
element.addClass(attrs.sfMaterialClass);
20+
}
21+
}, 0);
22+
}
23+
};
24+
});

src/material-decorator.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@
7373
};
7474

7575
function sfMessagesNodeHandler() {
76-
var html = '<div ng-if="ngModel.$invalid" ng-messages="ngModel.$error"><div sf-message ng-message></div></div>';
76+
var html = '<div ng-if="ngModel.$invalid" ng-messages="{dummy: true}" class="ng-active">' +
77+
'<div ng-message="dummy" class="md-input-message-animation" sf-message="form.description"></div></div>';
7778
var div = document.createElement('div');
7879
div.innerHTML = html;
7980
return div.firstChild;
@@ -82,7 +83,7 @@
8283
function sfMessagesBuilder(args) {
8384
var messagesDiv = args.fieldFrag.querySelector('[sf-messages]');
8485
if (messagesDiv && sfMessagesNode) {
85-
var child = sfMessagesNode.cloneNode();
86+
var child = sfMessagesNode.cloneNode(true);
8687
messagesDiv.appendChild(child);
8788
}
8889
};

0 commit comments

Comments
 (0)