forked from framework7io/framework7
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmaterial-inputs.js
More file actions
66 lines (66 loc) · 3.05 KB
/
material-inputs.js
File metadata and controls
66 lines (66 loc) · 3.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/*======================================================
************ Material Text Inputs ************
======================================================*/
app.initPageMaterialInputs = function (pageContainer) {
pageContainer = $(pageContainer);
var textareas = pageContainer.find('textarea.resizable');
pageContainer.find('.item-input').each(function () {
var itemInput = $(this);
var notInputs = ['checkbox', 'button', 'submit', 'range', 'radio', 'image'];
itemInput.find('input, select, textarea').each(function () {
var input = $(this);
if (notInputs.indexOf(input.attr('type')) < 0) {
itemInput.addClass('item-input-field');
if (input.val().trim() !== '') {
input.parents('.item-input, .input-field').add(input.parents('.item-inner')).addClass('not-empty-state');
}
}
});
if (itemInput.parents('.input-item, .inputs-list').length > 0) return;
itemInput.parents('.list-block').eq(0).addClass('inputs-list');
});
};
/*======================================================
************ Material Focus Inputs ************
======================================================*/
app.initMaterialWatchInputs = function () {
var notInputs = ['checkbox', 'button', 'submit', 'range', 'radio', 'image'];
function addFocusState(e) {
/*jshint validthis:true*/
var i = $(this);
var type = i.attr('type');
if (notInputs.indexOf(type) >= 0) return;
var els = i.add(i.parents('.item-input, .input-field')).add(i.parents('.item-inner').eq(0));
els.addClass('focus-state');
}
function removeFocusState(e) {
/*jshint validthis:true*/
var i = $(this), value = i.val();
var type = i.attr('type');
if (notInputs.indexOf(type) >= 0) return;
var els = i.add(i.parents('.item-input, .input-field')).add(i.parents('.item-inner').eq(0));
els.removeClass('focus-state');
if (value && value.trim() !== '') {
els.addClass('not-empty-state');
}
else {
els.removeClass('not-empty-state');
}
}
function watchChangeState(e) {
/*jshint validthis:true*/
var i = $(this), value = i.val();
var type = i.attr('type');
if (notInputs.indexOf(type) >= 0) return;
var els = i.add(i.parents('.item-input, .input-field')).add(i.parents('.item-inner').eq(0));
if (value && value.trim() !== '') {
els.addClass('not-empty-state');
}
else {
els.removeClass('not-empty-state');
}
}
$(document).on('change', '.item-input input, .item-input select, .item-input textarea, input, textarea, select', watchChangeState, true);
$(document).on('focus', '.item-input input, .item-input select, .item-input textarea, input, textarea, select', addFocusState, true);
$(document).on('blur', '.item-input input, .item-input select, .item-input textarea, input, textarea, select', removeFocusState, true);
};