uix_validations 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/assets/javascripts/uix_validations.js +106 -0
- data/assets/stylesheets/uix_validations.scss +23 -0
- metadata +95 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 15824261a4c36c4df25da78eb1df0ffc2c570def6c9039b0e90888e8eea8b7dd
|
4
|
+
data.tar.gz: 76b77a37b13e33ef76b6fd074f017b38d847a20e08bb9a41e61d7d0b6358cd3d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: eafaf2c7a7a73e6a0d6705963ca9dde233b3c9de7b066103e675cde3dce238167ded6e7edf7d4a89d37440173620707aff90aa65b11e09fdd5af5bde3c0ec05f
|
7
|
+
data.tar.gz: 24b035c648e9f9b5fa402c646d1053b21c2a34e4130e0a4690958dffd7534dbe953a63e141047e269c665752adc67fb1f1583fa034d6f918d11bf84b5b11f848
|
@@ -0,0 +1,106 @@
|
|
1
|
+
// Regex list
|
2
|
+
var numberPattern = /^[0-9]*$/;
|
3
|
+
var characterPattern = /^[a-zA-Z]*$/;
|
4
|
+
var nonDigitPattern = /^[^0-9]*$/;
|
5
|
+
|
6
|
+
// From https://stackoverflow.com/questions/46155/how-to-validate-an-email-address-in-javascript
|
7
|
+
var emailPattern = /\S+@\S+\.\S+/;
|
8
|
+
|
9
|
+
// From https://stackoverflow.com/questions/14850553/javascript-regex-for-password-containing-at-least-8-characters-1-number-1-uppe
|
10
|
+
var strongPasswordPattern = /^(?=.*\d)[0-9a-zA-Z]{8,}$/;
|
11
|
+
|
12
|
+
var veryStrongPasswordPattern = /^(?=.*[A-Z])(?=.*[!@#$&*.,_-])(?=.*[0-9])(?=.*[a-z]).{8,}$/
|
13
|
+
|
14
|
+
// Flow
|
15
|
+
// onClick -> set default
|
16
|
+
// checkinputValue->
|
17
|
+
// if (while is typing value is valid) { SET VALID }
|
18
|
+
// else { SET default }
|
19
|
+
// checkinputout->
|
20
|
+
// if (onFocusOut is valid) { SET VALID }
|
21
|
+
// else { SET INVALID }
|
22
|
+
|
23
|
+
// Generic functions
|
24
|
+
function validatePattern(fieldId, validId, regex) {
|
25
|
+
var field = document.querySelector(fieldId);
|
26
|
+
field.addEventListener("click", () => {
|
27
|
+
var valid = document.querySelector(validId);
|
28
|
+
setDefaultClass(valid);
|
29
|
+
checkInputValue(field, valid, regex)
|
30
|
+
checkInputOut(field, valid, regex);
|
31
|
+
});
|
32
|
+
}
|
33
|
+
function checkInputValue(field, valid, regex) {
|
34
|
+
field.addEventListener("keyup", () => {
|
35
|
+
switchClasses(field, valid, regex, ['uix-defaulf', 'uix-valid']);
|
36
|
+
// find way to get class type
|
37
|
+
});
|
38
|
+
}
|
39
|
+
function checkInputOut(field, valid, regex) {
|
40
|
+
field.addEventListener("focusout", () => {
|
41
|
+
switchClasses(field, valid, regex);
|
42
|
+
// find way to get class type
|
43
|
+
});
|
44
|
+
}
|
45
|
+
function setClasses(element, classIn) {
|
46
|
+
element.className = 'uix-validation ' + classIn;
|
47
|
+
}
|
48
|
+
function setDefaultClass(element) {
|
49
|
+
element.className = 'uix-validation uix-default';
|
50
|
+
element.style.visibility = 'inherit';
|
51
|
+
}
|
52
|
+
function switchClasses(field, valid, regex, classes = ['uix-invalid', 'uix-valid']) {
|
53
|
+
if(regex.test(field.value) && field.value != '') {
|
54
|
+
setClasses(valid, classes[1]);
|
55
|
+
}
|
56
|
+
else {
|
57
|
+
setClasses(valid, classes[0]);
|
58
|
+
}
|
59
|
+
}
|
60
|
+
|
61
|
+
// Specific functions
|
62
|
+
// Number
|
63
|
+
function validateNumber(fieldId, validId) {
|
64
|
+
validatePattern(fieldId, validId, numberPattern);
|
65
|
+
}
|
66
|
+
function validateNumberRange(fieldId, validId, range=[0,10]) {
|
67
|
+
var numberRangePattern = new RegExp(`^\\d{`+range[0]+`,`+range[1]+`}$`);
|
68
|
+
validatePattern(fieldId, validId, numberRangePattern);
|
69
|
+
}
|
70
|
+
// Character
|
71
|
+
function validateCharacter(fieldId, validId) {
|
72
|
+
validatePattern(fieldId, validId, characterPattern);
|
73
|
+
}
|
74
|
+
function validateCharacterLength(fieldId, validId, range=[0,10]) {
|
75
|
+
var characterRangePattern = new RegExp(`^\[a-zA-Z]{`+range[0]+`,`+range[1]+`}$`);
|
76
|
+
validatePattern(fieldId, validId, characterRangePattern);
|
77
|
+
}
|
78
|
+
// Non digit
|
79
|
+
function validateNonDigit(fieldId, validId) {
|
80
|
+
validatePattern(fieldId, validId, nonDigitPattern);
|
81
|
+
}
|
82
|
+
function validateNonDigitLength(fieldId, validId, range=[0,10]) {
|
83
|
+
var nonDigitRangePattern = new RegExp(`^\\D{`+range[0]+`,`+range[1]+`}$`);
|
84
|
+
validatePattern(fieldId, validId, nonDigitRangePattern);
|
85
|
+
}
|
86
|
+
// Email
|
87
|
+
function validateEmail(fieldId, validId) {
|
88
|
+
validatePattern(fieldId, validId, emailPattern);
|
89
|
+
}
|
90
|
+
// Range
|
91
|
+
function validateJustLength(fieldId, validId, range=[0,10]) {
|
92
|
+
var rangePattern = new RegExp(`^\\S{`+range[0]+`,`+range[1]+`}$`);
|
93
|
+
validatePattern(fieldId, validId, rangePattern);
|
94
|
+
}
|
95
|
+
// Any regex
|
96
|
+
function validateRegex(fieldId, validId, regex) {
|
97
|
+
validatePattern(fieldId, validId, regex);
|
98
|
+
}
|
99
|
+
// Strong Password
|
100
|
+
function validateStrongPassword(fieldId, validId) {
|
101
|
+
validatePattern(fieldId, validId, strongPasswordPattern);
|
102
|
+
}
|
103
|
+
// Very Strong Password
|
104
|
+
function validateVeryStrongPassword(fieldId, validId) {
|
105
|
+
validatePattern(fieldId, validId, veryStrongPasswordPattern);
|
106
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
.uix-validation {
|
2
|
+
padding: 1%;
|
3
|
+
font-size: 90%;
|
4
|
+
color: #232323;
|
5
|
+
width: 100%;
|
6
|
+
visibility: hidden;
|
7
|
+
}
|
8
|
+
.uix-default {
|
9
|
+
background: #ffffff;
|
10
|
+
}
|
11
|
+
.uix-valid {
|
12
|
+
color: #04a100;
|
13
|
+
font-weight: 400;
|
14
|
+
// background: #64e066;
|
15
|
+
|
16
|
+
}
|
17
|
+
.uix-invalid {
|
18
|
+
color: #cf0a0a;
|
19
|
+
font-weight: 400;
|
20
|
+
// background: #ff8484;
|
21
|
+
}
|
22
|
+
|
23
|
+
// old #5bff5e
|
metadata
ADDED
@@ -0,0 +1,95 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: uix_validations
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Lucas Andrade
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-09-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.16'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.16'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: autoprefixer-rails
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '9.1'
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 9.1.0
|
51
|
+
type: :runtime
|
52
|
+
prerelease: false
|
53
|
+
version_requirements: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - "~>"
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '9.1'
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 9.1.0
|
61
|
+
description: This gem provides real time validations for forms. All validations follow
|
62
|
+
the best principles of UI and UX
|
63
|
+
email:
|
64
|
+
- lucasandrad@yandex.com
|
65
|
+
executables: []
|
66
|
+
extensions: []
|
67
|
+
extra_rdoc_files: []
|
68
|
+
files:
|
69
|
+
- assets/javascripts/uix_validations.js
|
70
|
+
- assets/stylesheets/uix_validations.scss
|
71
|
+
homepage: https://github.com/LucasAndrad
|
72
|
+
licenses:
|
73
|
+
- MIT
|
74
|
+
metadata: {}
|
75
|
+
post_install_message:
|
76
|
+
rdoc_options: []
|
77
|
+
require_paths:
|
78
|
+
- lib
|
79
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
89
|
+
requirements: []
|
90
|
+
rubyforge_project:
|
91
|
+
rubygems_version: 2.7.6
|
92
|
+
signing_key:
|
93
|
+
specification_version: 4
|
94
|
+
summary: This gem provides real time validations for forms
|
95
|
+
test_files: []
|