bootstrap-italia 2.9.2 → 2.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/css/bootstrap-italia.min.css +1 -1
- package/dist/css/bootstrap-italia.min.css.map +1 -1
- package/dist/js/bootstrap-italia.bundle.min.js +6 -10
- package/dist/js/bootstrap-italia.min.js +5 -9
- package/dist/plugins/input-password.js +205 -117
- package/dist/plugins/input-password.js.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +2 -2
- package/src/js/plugins/input-password.js +204 -117
- package/src/js/version.js +1 -1
- package/src/scss/custom/_form-password.scss +1 -1
- package/src/scss/custom/_version.scss +1 -1
|
@@ -10,38 +10,45 @@ const EVENT_KEY = `.${DATA_KEY}`;
|
|
|
10
10
|
const DATA_API_KEY = '.data-api';
|
|
11
11
|
|
|
12
12
|
const Default = {
|
|
13
|
-
shortPass: 'Password
|
|
14
|
-
badPass: 'Password debole',
|
|
15
|
-
goodPass: 'Password sicura',
|
|
16
|
-
strongPass: 'Password
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
shortPass: 'Password troppo breve',
|
|
14
|
+
badPass: 'Password debole.',
|
|
15
|
+
goodPass: 'Password abbastanza sicura.',
|
|
16
|
+
strongPass: 'Password sicura.',
|
|
17
|
+
minimumLength: 8,
|
|
18
|
+
suggestionsLabel: 'Suggerimenti per una buona password:',
|
|
19
|
+
suggestionFollowed: 'suggerimenti seguito',
|
|
20
|
+
suggestionFollowedPlural: 'suggerimenti seguiti',
|
|
21
|
+
suggestionOf: 'di',
|
|
22
|
+
suggestionMetLabel: 'Soddisfatto: ',
|
|
23
|
+
suggestionMetIconPath: `
|
|
24
|
+
M9.6 16.9 4 11.4l.8-.7 4.8 4.8 8.5-8.4.7.7-9.2 9.1z
|
|
25
|
+
`,
|
|
26
|
+
suggestionLength: 'Almeno {minLength} caratteri.',
|
|
27
|
+
suggestionUppercase: 'Una o più maiuscole.',
|
|
28
|
+
suggestionLowercase: 'Una o più minuscole.',
|
|
29
|
+
suggestionNumber: 'Uno o più numeri.',
|
|
30
|
+
suggestionSpecial: 'Uno o più caratteri speciali.',
|
|
21
31
|
};
|
|
22
32
|
|
|
23
33
|
const EVENT_CLICK = `click${EVENT_KEY}`;
|
|
24
34
|
const EVENT_KEYUP = `keyup${EVENT_KEY}`;
|
|
25
|
-
const EVENT_KEYDOWN = `keydown${EVENT_KEY}`;
|
|
26
|
-
const EVENT_KEYPRESS = `keypress${EVENT_KEY}`;
|
|
27
35
|
const EVENT_SCORE = `score${EVENT_KEY}`;
|
|
28
36
|
const EVENT_TEXT = `text${EVENT_KEY}`;
|
|
37
|
+
const EVENT_SUGGS = `suggs${EVENT_KEY}`;
|
|
29
38
|
|
|
30
39
|
const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
|
|
31
40
|
const EVENT_MOUSEDOWN_DATA_API = `mousedown${EVENT_KEY}${DATA_API_KEY}`;
|
|
32
41
|
const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`;
|
|
33
42
|
|
|
34
43
|
const CLASS_NAME_PASSWORD = 'input-password';
|
|
35
|
-
//const CLASS_NAME_METER = 'input-password-strength-meter'
|
|
36
|
-
const CLASS_NAME_SHOW = 'show';
|
|
37
44
|
|
|
38
45
|
const SELECTOR_PASSWORD = 'input[data-bs-input][type="password"]';
|
|
39
46
|
const SELECTOR_BTN_SHOW_PWD = '.password-icon';
|
|
40
47
|
const SELECTOR_METER = '.password-strength-meter';
|
|
41
48
|
const SELECTOR_METER_GRAYBAR = '.password-meter';
|
|
42
49
|
const SELECTOR_METER_COLBAR = '.progress-bar';
|
|
43
|
-
const
|
|
44
|
-
const
|
|
50
|
+
const SELECTOR_METER_TEXT = '.strength-meter-info';
|
|
51
|
+
const SELECTOR_METER_SUGGS = '.strenght-meter-suggestions';
|
|
45
52
|
|
|
46
53
|
class InputPassword extends BaseComponent {
|
|
47
54
|
constructor(element, config) {
|
|
@@ -50,31 +57,54 @@ class InputPassword extends BaseComponent {
|
|
|
50
57
|
this._config = this._getConfig(config);
|
|
51
58
|
this._isCustom = this._element.classList.contains(CLASS_NAME_PASSWORD);
|
|
52
59
|
this._meter = this._element.parentNode.querySelector(SELECTOR_METER);
|
|
53
|
-
this._isShiftPressed = false;
|
|
54
|
-
this._isCapsOn = false;
|
|
55
60
|
|
|
56
61
|
this._grayBarElement = null;
|
|
57
62
|
this._colorBarElement = null;
|
|
58
63
|
this._textElement = null;
|
|
59
|
-
this.
|
|
64
|
+
this._suggsElement = null;
|
|
60
65
|
this._showPwdElement = null;
|
|
61
66
|
|
|
62
67
|
this._text = {};
|
|
63
68
|
|
|
64
69
|
this._label = new InputLabel(element);
|
|
65
70
|
|
|
71
|
+
this._suggestions = [
|
|
72
|
+
{
|
|
73
|
+
key: 'length',
|
|
74
|
+
text: (config) => config.suggestionLength.replace('{minLength}', config.minimumLength.toString()),
|
|
75
|
+
test: (password, config) => password.length >= config.minimumLength,
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
key: 'uppercase',
|
|
79
|
+
text: (config) => config.suggestionUppercase,
|
|
80
|
+
test: (password) => /[A-Z]/.test(password),
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
key: 'lowercase',
|
|
84
|
+
text: (config) => config.suggestionLowercase,
|
|
85
|
+
test: (password) => /[a-z]/.test(password),
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
key: 'number',
|
|
89
|
+
text: (config) => config.suggestionNumber,
|
|
90
|
+
test: (password) => /[0-9]/.test(password),
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
key: 'special',
|
|
94
|
+
text: (config) => config.suggestionSpecial,
|
|
95
|
+
test: (password) => /[^A-Za-z0-9]/.test(password),
|
|
96
|
+
},
|
|
97
|
+
];
|
|
98
|
+
|
|
66
99
|
this._init();
|
|
67
100
|
this._bindEvents();
|
|
68
101
|
}
|
|
69
102
|
|
|
70
103
|
// Getters
|
|
71
|
-
|
|
72
104
|
static get NAME() {
|
|
73
105
|
return NAME
|
|
74
106
|
}
|
|
75
107
|
|
|
76
|
-
// Public
|
|
77
|
-
|
|
78
108
|
// Private
|
|
79
109
|
_getConfig(config) {
|
|
80
110
|
config = {
|
|
@@ -86,118 +116,174 @@ class InputPassword extends BaseComponent {
|
|
|
86
116
|
}
|
|
87
117
|
|
|
88
118
|
_init() {
|
|
89
|
-
if (this._meter) {
|
|
90
|
-
this._grayBarElement = this._meter.querySelector(SELECTOR_METER_GRAYBAR);
|
|
91
|
-
this._colorBarElement = this._meter.querySelector(SELECTOR_METER_COLBAR);
|
|
92
|
-
this._textElement = this._meter.querySelector(SELECTOR_TEXT);
|
|
93
|
-
|
|
94
|
-
if (this._textElement) {
|
|
95
|
-
this._config = Object.assign({}, this._config, { ...Manipulator.getDataAttributes(this._textElement) }, { enterPass: this._textElement.innerText });
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
119
|
if (this._isCustom) {
|
|
99
|
-
this.
|
|
120
|
+
this._handleAutofill();
|
|
121
|
+
this._showPwdElement = SelectorEngine.findOne(SELECTOR_BTN_SHOW_PWD, this._element.parentNode);
|
|
122
|
+
if (this._meter) {
|
|
123
|
+
this._grayBarElement = this._meter.querySelector(SELECTOR_METER_GRAYBAR);
|
|
124
|
+
this._colorBarElement = this._meter.querySelector(SELECTOR_METER_COLBAR);
|
|
125
|
+
this._textElement = this._meter.querySelector(SELECTOR_METER_TEXT);
|
|
126
|
+
this._suggsElement = this._meter.querySelector(SELECTOR_METER_SUGGS);
|
|
127
|
+
if (this._textElement) {
|
|
128
|
+
this._config = Object.assign({}, this._config, { ...Manipulator.getDataAttributes(this._textElement) });
|
|
129
|
+
}
|
|
130
|
+
if (this._suggsElement) {
|
|
131
|
+
this._createsuggestionsList();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
100
134
|
}
|
|
101
|
-
|
|
102
|
-
this._showPwdElement = SelectorEngine.findOne(SELECTOR_BTN_SHOW_PWD, this._element.parentNode);
|
|
103
135
|
}
|
|
104
136
|
|
|
105
137
|
_bindEvents() {
|
|
106
|
-
if (this._meter) {
|
|
107
|
-
EventHandler.on(this._element, EVENT_KEYUP, () => this._checkPassword());
|
|
108
|
-
}
|
|
109
|
-
|
|
110
138
|
if (this._isCustom) {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
this._isShiftPressed = false;
|
|
119
|
-
}
|
|
120
|
-
if (evt.key === 'CapsLock') {
|
|
121
|
-
this._isCapsOn = !this._isCapsOn;
|
|
122
|
-
if (this._isCapsOn) {
|
|
123
|
-
this._showCapsMsg();
|
|
124
|
-
} else {
|
|
125
|
-
this._hideCapsMsg();
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
});
|
|
129
|
-
EventHandler.on(this._element, EVENT_KEYPRESS, (evt) => {
|
|
130
|
-
const matches = evt.key.match(/[A-Z]$/) || [];
|
|
131
|
-
if (matches.length > 0 && !this._isShiftPressed) {
|
|
132
|
-
this._isCapsOn = true;
|
|
133
|
-
this._showCapsMsg();
|
|
134
|
-
} else if (this._isCapsOn) {
|
|
135
|
-
this._isCapsOn = false;
|
|
136
|
-
this._hideCapsMsg();
|
|
137
|
-
}
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
if (this._showPwdElement) {
|
|
142
|
-
EventHandler.on(this._showPwdElement, EVENT_CLICK, () => this._toggleShowPassword());
|
|
139
|
+
if (this._showPwdElement) {
|
|
140
|
+
EventHandler.on(this._showPwdElement, EVENT_CLICK, () => this._toggleShowPassword());
|
|
141
|
+
}
|
|
142
|
+
if (this._meter) {
|
|
143
|
+
EventHandler.on(this._element, EVENT_KEYUP, () => this._checkPassword());
|
|
144
|
+
EventHandler.on(this._element, 'input', () => this._checkPassword());
|
|
145
|
+
}
|
|
143
146
|
}
|
|
144
147
|
}
|
|
145
148
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
this.
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
149
|
+
_handleAutofill() {
|
|
150
|
+
const checkAndActivate = () => {
|
|
151
|
+
if (this._element.value !== '') {
|
|
152
|
+
this._label._labelOut();
|
|
153
|
+
this._checkPassword();
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
checkAndActivate();
|
|
157
|
+
setTimeout(checkAndActivate, 100);
|
|
158
|
+
EventHandler.on(this._element, 'animationstart', (event) => {
|
|
159
|
+
if (event.animationName === 'onAutoFillStart') {
|
|
160
|
+
checkAndActivate();
|
|
161
|
+
}
|
|
162
|
+
});
|
|
155
163
|
}
|
|
156
164
|
|
|
157
165
|
_toggleShowPassword() {
|
|
158
166
|
const toShow = this._element.getAttribute('type') === 'password';
|
|
159
167
|
SelectorEngine.find('[class^="password-icon"]', this._showPwdElement).forEach((icon) => icon.classList.toggle('d-none'));
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
} else {
|
|
163
|
-
this._element.setAttribute('type', 'password');
|
|
164
|
-
}
|
|
168
|
+
this._element.setAttribute('type', toShow ? 'text' : 'password');
|
|
169
|
+
this._showPwdElement.setAttribute('aria-checked', toShow.toString());
|
|
165
170
|
}
|
|
166
171
|
|
|
167
172
|
_checkPassword() {
|
|
168
|
-
const
|
|
169
|
-
const
|
|
170
|
-
|
|
171
|
-
this.
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
}
|
|
175
|
-
});
|
|
176
|
-
this._colorBarElement.classList.add('bg-' + this._scoreColor(score));
|
|
177
|
-
this._colorBarElement.style.width = perc + '%';
|
|
178
|
-
this._colorBarElement.setAttribute('aria-valuenow', perc);
|
|
173
|
+
const password = this._element.value;
|
|
174
|
+
const score = this._calculateScore(password);
|
|
175
|
+
this._updateMeter(score);
|
|
176
|
+
this._updateText(score, password);
|
|
177
|
+
this._updateSuggestions(password);
|
|
178
|
+
}
|
|
179
179
|
|
|
180
|
+
_updateMeter(score) {
|
|
181
|
+
const perc = score < 0 ? 0 : score;
|
|
182
|
+
if (this._colorBarElement) {
|
|
183
|
+
this._colorBarElement.classList.forEach((className) => {
|
|
184
|
+
if (className.match(/(^|\s)bg-\S+/g)) {
|
|
185
|
+
this._colorBarElement.classList.remove(className);
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
this._colorBarElement.classList.add(`bg-${this._scoreColor(score)}`);
|
|
189
|
+
this._colorBarElement.style.width = `${perc}%`;
|
|
190
|
+
this._colorBarElement.setAttribute('aria-valuenow', perc);
|
|
191
|
+
}
|
|
180
192
|
EventHandler.trigger(this._element, EVENT_SCORE);
|
|
193
|
+
}
|
|
181
194
|
|
|
195
|
+
_updateText(score, password) {
|
|
182
196
|
if (this._textElement) {
|
|
183
197
|
let text = this._scoreText(score);
|
|
184
|
-
if (this.
|
|
185
|
-
|
|
198
|
+
if (this._suggsElement) {
|
|
199
|
+
const { completedCount, totalCount } = this._getCompletedSuggestions(password);
|
|
200
|
+
const suggestionText = completedCount === 1 ? this._config.suggestionFollowed : this._config.suggestionFollowedPlural;
|
|
201
|
+
text += ` ${completedCount} ${this._config.suggestionOf} ${totalCount} ${suggestionText}.`;
|
|
186
202
|
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
this._textElement.innerHTML = text;
|
|
203
|
+
if (this._textElement.textContent !== text) {
|
|
204
|
+
this._textElement.textContent = text;
|
|
190
205
|
this._textElement.classList.forEach((className) => {
|
|
191
206
|
if (className.match(/(^|\s)text-\S+/g)) {
|
|
192
207
|
this._textElement.classList.remove(className);
|
|
193
208
|
}
|
|
194
209
|
});
|
|
195
|
-
this._textElement.classList.add(
|
|
210
|
+
this._textElement.classList.add(`text-${this._scoreColor(score)}`);
|
|
196
211
|
EventHandler.trigger(this._element, EVENT_TEXT);
|
|
197
212
|
}
|
|
198
213
|
}
|
|
199
214
|
}
|
|
200
215
|
|
|
216
|
+
_updateSuggestions(password) {
|
|
217
|
+
if (this._suggsElement) {
|
|
218
|
+
this._updateSuggestionsList(password);
|
|
219
|
+
EventHandler.trigger(this._element, EVENT_SUGGS);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
_getCompletedSuggestions(password) {
|
|
224
|
+
let completedCount = 0;
|
|
225
|
+
const totalCount = this._suggestions.length;
|
|
226
|
+
this._suggestions.forEach((sugg) => {
|
|
227
|
+
if (sugg.test(password, this._config)) completedCount++;
|
|
228
|
+
});
|
|
229
|
+
return { completedCount, totalCount }
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
_createsuggestionsList() {
|
|
233
|
+
if (this._suggsElement.querySelector('.password-suggestions')) {
|
|
234
|
+
return
|
|
235
|
+
}
|
|
236
|
+
const suggLabel = document.createElement('label');
|
|
237
|
+
suggLabel.className = 'visually-hidden';
|
|
238
|
+
suggLabel.htmlFor = 'suggestions';
|
|
239
|
+
suggLabel.textContent = Default.suggestionsLabel;
|
|
240
|
+
const suggContainer = document.createElement('div');
|
|
241
|
+
suggContainer.id = 'suggestions';
|
|
242
|
+
suggContainer.className = 'password-suggestions';
|
|
243
|
+
|
|
244
|
+
this._suggestions.forEach((sugg) => {
|
|
245
|
+
const suggElement = document.createElement('div');
|
|
246
|
+
suggElement.className = 'suggestion';
|
|
247
|
+
suggElement.dataset.suggestion = sugg.key;
|
|
248
|
+
const checkIcon = this._createIconCheck();
|
|
249
|
+
const textSpan = document.createElement('span');
|
|
250
|
+
textSpan.textContent = sugg.text(this._config);
|
|
251
|
+
suggElement.appendChild(checkIcon);
|
|
252
|
+
suggElement.appendChild(textSpan);
|
|
253
|
+
suggContainer.appendChild(suggElement);
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
this._suggsElement.appendChild(suggLabel);
|
|
257
|
+
this._suggsElement.appendChild(suggContainer);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
_createIconCheck() {
|
|
261
|
+
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
|
262
|
+
svg.setAttribute('class', `icon icon-xs me-1 d-none`);
|
|
263
|
+
svg.setAttribute('aria-label', this._config.suggestionMetLabel);
|
|
264
|
+
svg.setAttribute('viewBox', '0 0 24 24');
|
|
265
|
+
svg.style.width = '1em';
|
|
266
|
+
svg.style.height = '1em';
|
|
267
|
+
const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
|
|
268
|
+
path.setAttribute('d', this._config.suggestionMetIconPath.trim());
|
|
269
|
+
svg.appendChild(path);
|
|
270
|
+
return svg
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
_updateSuggestionsList(password) {
|
|
274
|
+
if (!this._suggsElement) return
|
|
275
|
+
this._suggestions.forEach((sugg) => {
|
|
276
|
+
const suggElement = this._suggsElement.querySelector(`[data-suggestion="${sugg.key}"]`);
|
|
277
|
+
if (suggElement) {
|
|
278
|
+
const isMet = sugg.test(password, this._config);
|
|
279
|
+
const checkIcon = suggElement.querySelector('.icon');
|
|
280
|
+
if (checkIcon) {
|
|
281
|
+
checkIcon.classList.toggle('d-none', !isMet);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
|
|
201
287
|
/**
|
|
202
288
|
* Returns strings based on the score given.
|
|
203
289
|
*
|
|
@@ -209,10 +295,14 @@ class InputPassword extends BaseComponent {
|
|
|
209
295
|
return this._config.shortPass
|
|
210
296
|
}
|
|
211
297
|
|
|
298
|
+
if (score === -2) {
|
|
299
|
+
return ''
|
|
300
|
+
}
|
|
301
|
+
|
|
212
302
|
score = score < 0 ? 0 : score;
|
|
213
303
|
|
|
214
304
|
if (score < 26) {
|
|
215
|
-
return this._config.
|
|
305
|
+
return this._config.badPass
|
|
216
306
|
}
|
|
217
307
|
if (score < 51) {
|
|
218
308
|
return this._config.badPass
|
|
@@ -225,16 +315,7 @@ class InputPassword extends BaseComponent {
|
|
|
225
315
|
}
|
|
226
316
|
|
|
227
317
|
_scoreColor(score) {
|
|
228
|
-
if (score === -1) {
|
|
229
|
-
return 'danger'
|
|
230
|
-
}
|
|
231
|
-
if (score === -2) {
|
|
232
|
-
return 'muted'
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
score = score < 0 ? 0 : score;
|
|
236
|
-
|
|
237
|
-
if (score < 26) {
|
|
318
|
+
if (score === -1 || score === -2 || score < 26) {
|
|
238
319
|
return 'danger'
|
|
239
320
|
}
|
|
240
321
|
if (score < 51) {
|
|
@@ -243,7 +324,6 @@ class InputPassword extends BaseComponent {
|
|
|
243
324
|
if (score < 76) {
|
|
244
325
|
return 'success'
|
|
245
326
|
}
|
|
246
|
-
|
|
247
327
|
return 'success'
|
|
248
328
|
}
|
|
249
329
|
|
|
@@ -279,7 +359,7 @@ class InputPassword extends BaseComponent {
|
|
|
279
359
|
score += 5;
|
|
280
360
|
}
|
|
281
361
|
|
|
282
|
-
// password has at least 2
|
|
362
|
+
// password has at least 2 symbols
|
|
283
363
|
var symbols = '.*[!,@,#,$,%,^,&,*,?,_,~]';
|
|
284
364
|
symbols = new RegExp('(' + symbols + symbols + ')');
|
|
285
365
|
if (password.match(symbols)) {
|
|
@@ -358,11 +438,6 @@ class InputPassword extends BaseComponent {
|
|
|
358
438
|
* ------------------------------------------------------------------------
|
|
359
439
|
*/
|
|
360
440
|
|
|
361
|
-
/*const inputs = SelectorEngine.find(SELECTOR_PASSWORD)
|
|
362
|
-
inputs.forEach((input) => {
|
|
363
|
-
InputPassword.getOrCreateInstance(input)
|
|
364
|
-
})*/
|
|
365
|
-
|
|
366
441
|
const createInput = (element) => {
|
|
367
442
|
if (element && element.matches(SELECTOR_PASSWORD)) {
|
|
368
443
|
return InputPassword.getOrCreateInstance(element)
|
|
@@ -370,6 +445,19 @@ const createInput = (element) => {
|
|
|
370
445
|
return null
|
|
371
446
|
};
|
|
372
447
|
|
|
448
|
+
const initInputPassword = () => {
|
|
449
|
+
const element = SelectorEngine.findOne(SELECTOR_PASSWORD);
|
|
450
|
+
if (element) {
|
|
451
|
+
InputPassword.getOrCreateInstance(element);
|
|
452
|
+
}
|
|
453
|
+
};
|
|
454
|
+
|
|
455
|
+
if (document.readyState !== 'loading') {
|
|
456
|
+
initInputPassword();
|
|
457
|
+
} else {
|
|
458
|
+
document.addEventListener('DOMContentLoaded', initInputPassword);
|
|
459
|
+
}
|
|
460
|
+
|
|
373
461
|
EventHandler.on(document, EVENT_MOUSEDOWN_DATA_API, SELECTOR_PASSWORD + ', label', function () {
|
|
374
462
|
const target = InputLabel.getInputFromLabel(this) || this;
|
|
375
463
|
createInput(target);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-password.js","sources":["../../src/js/plugins/input-password.js"],"sourcesContent":["import BaseComponent from 'bootstrap/js/src/base-component'\nimport EventHandler from 'bootstrap/js/src/dom/event-handler'\nimport SelectorEngine from 'bootstrap/js/src/dom/selector-engine'\nimport Manipulator from 'bootstrap/js/src/dom/manipulator'\n\n//import Input from './input'\nimport InputLabel from './input-label'\n\nconst NAME = 'inputpassword'\nconst DATA_KEY = 'bs.inputpassword'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n shortPass: 'Password molto debole',\n badPass: 'Password debole',\n goodPass: 'Password sicura',\n strongPass: 'Password molto sicura',\n enterPass: 'Inserisci almeno 8 caratteri e una lettera maiuscola',\n alertCaps: 'CAPS LOCK inserito',\n showText: true,\n minimumLength: 4,\n}\n\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_KEYUP = `keyup${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_KEYPRESS = `keypress${EVENT_KEY}`\nconst EVENT_SCORE = `score${EVENT_KEY}`\nconst EVENT_TEXT = `text${EVENT_KEY}`\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_MOUSEDOWN_DATA_API = `mousedown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_PASSWORD = 'input-password'\n//const CLASS_NAME_METER = 'input-password-strength-meter'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_PASSWORD = 'input[data-bs-input][type=\"password\"]'\nconst SELECTOR_BTN_SHOW_PWD = '.password-icon'\nconst SELECTOR_METER = '.password-strength-meter'\nconst SELECTOR_METER_GRAYBAR = '.password-meter'\nconst SELECTOR_METER_COLBAR = '.progress-bar'\nconst SELECTOR_CAPS = '.password-caps'\nconst SELECTOR_TEXT = '.form-text'\n\nclass InputPassword extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._isCustom = this._element.classList.contains(CLASS_NAME_PASSWORD)\n this._meter = this._element.parentNode.querySelector(SELECTOR_METER)\n this._isShiftPressed = false\n this._isCapsOn = false\n\n this._grayBarElement = null\n this._colorBarElement = null\n this._textElement = null\n this._capsElement = null\n this._showPwdElement = null\n\n this._text = {}\n\n this._label = new InputLabel(element)\n\n this._init()\n this._bindEvents()\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n // Private\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {}),\n }\n return config\n }\n\n _init() {\n if (this._meter) {\n this._grayBarElement = this._meter.querySelector(SELECTOR_METER_GRAYBAR)\n this._colorBarElement = this._meter.querySelector(SELECTOR_METER_COLBAR)\n this._textElement = this._meter.querySelector(SELECTOR_TEXT)\n\n if (this._textElement) {\n this._config = Object.assign({}, this._config, { ...Manipulator.getDataAttributes(this._textElement) }, { enterPass: this._textElement.innerText })\n }\n }\n if (this._isCustom) {\n this._capsElement = this._element.parentNode.querySelector(SELECTOR_CAPS)\n }\n\n this._showPwdElement = SelectorEngine.findOne(SELECTOR_BTN_SHOW_PWD, this._element.parentNode)\n }\n\n _bindEvents() {\n if (this._meter) {\n EventHandler.on(this._element, EVENT_KEYUP, () => this._checkPassword())\n }\n\n if (this._isCustom) {\n EventHandler.on(this._element, EVENT_KEYDOWN, (evt) => {\n if (evt.key === 'Shift') {\n this._isShiftPressed = true\n }\n })\n EventHandler.on(this._element, EVENT_KEYUP, (evt) => {\n if (evt.key === 'Shift') {\n this._isShiftPressed = false\n }\n if (evt.key === 'CapsLock') {\n this._isCapsOn = !this._isCapsOn\n if (this._isCapsOn) {\n this._showCapsMsg()\n } else {\n this._hideCapsMsg()\n }\n }\n })\n EventHandler.on(this._element, EVENT_KEYPRESS, (evt) => {\n const matches = evt.key.match(/[A-Z]$/) || []\n if (matches.length > 0 && !this._isShiftPressed) {\n this._isCapsOn = true\n this._showCapsMsg()\n } else if (this._isCapsOn) {\n this._isCapsOn = false\n this._hideCapsMsg()\n }\n })\n }\n\n if (this._showPwdElement) {\n EventHandler.on(this._showPwdElement, EVENT_CLICK, () => this._toggleShowPassword())\n }\n }\n\n _showCapsMsg() {\n if (this._capsElement) {\n this._capsElement.classList.add(CLASS_NAME_SHOW)\n }\n }\n _hideCapsMsg() {\n if (this._capsElement) {\n this._capsElement.classList.remove(CLASS_NAME_SHOW)\n }\n }\n\n _toggleShowPassword() {\n const toShow = this._element.getAttribute('type') === 'password'\n SelectorEngine.find('[class^=\"password-icon\"]', this._showPwdElement).forEach((icon) => icon.classList.toggle('d-none'))\n if (toShow) {\n this._element.setAttribute('type', 'text')\n } else {\n this._element.setAttribute('type', 'password')\n }\n }\n\n _checkPassword() {\n const score = this._calculateScore(this._element.value)\n const perc = score < 0 ? 0 : score\n\n this._colorBarElement.classList.forEach((className) => {\n if (className.match(/(^|\\s)bg-\\S+/g)) {\n this._colorBarElement.classList.remove(className)\n }\n })\n this._colorBarElement.classList.add('bg-' + this._scoreColor(score))\n this._colorBarElement.style.width = perc + '%'\n this._colorBarElement.setAttribute('aria-valuenow', perc)\n\n EventHandler.trigger(this._element, EVENT_SCORE)\n\n if (this._textElement) {\n let text = this._scoreText(score)\n if (this._element.value.length === 0 && score <= 0) {\n text = this._config.enterPass\n }\n\n if (this._textElement.innerHTML.search(text) === -1) {\n this._textElement.innerHTML = text\n this._textElement.classList.forEach((className) => {\n if (className.match(/(^|\\s)text-\\S+/g)) {\n this._textElement.classList.remove(className)\n }\n })\n this._textElement.classList.add('text-' + this._scoreColor(score))\n EventHandler.trigger(this._element, EVENT_TEXT)\n }\n }\n }\n\n /**\n * Returns strings based on the score given.\n *\n * @param int score Score base.\n * @return string\n */\n _scoreText(score) {\n if (score === -1) {\n return this._config.shortPass\n }\n\n score = score < 0 ? 0 : score\n\n if (score < 26) {\n return this._config.shortPass\n }\n if (score < 51) {\n return this._config.badPass\n }\n if (score < 76) {\n return this._config.goodPass\n }\n\n return this._config.strongPass\n }\n\n _scoreColor(score) {\n if (score === -1) {\n return 'danger'\n }\n if (score === -2) {\n return 'muted'\n }\n\n score = score < 0 ? 0 : score\n\n if (score < 26) {\n return 'danger'\n }\n if (score < 51) {\n return 'warning'\n }\n if (score < 76) {\n return 'success'\n }\n\n return 'success'\n }\n\n /**\n * Returns a value between -1 and 100 to score\n * the user's password.\n *\n * @param string password The password to be checked.\n * @return int\n */\n _calculateScore(password) {\n var score = 0\n\n // empty password\n if (password.trim().length === 0) {\n return -2\n }\n\n // password < this._config.minimumLength\n if (password.length < this._config.minimumLength) {\n return -1\n }\n\n // password length\n score += password.length * 4\n score += this._checkRepetition(1, password).length - password.length\n score += this._checkRepetition(2, password).length - password.length\n score += this._checkRepetition(3, password).length - password.length\n score += this._checkRepetition(4, password).length - password.length\n\n // password has 3 numbers\n if (password.match(/(.*[0-9].*[0-9].*[0-9])/)) {\n score += 5\n }\n\n // password has at least 2 sybols\n var symbols = '.*[!,@,#,$,%,^,&,*,?,_,~]'\n symbols = new RegExp('(' + symbols + symbols + ')')\n if (password.match(symbols)) {\n score += 5\n }\n\n // password has Upper and Lower chars\n if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)) {\n score += 10\n }\n\n // password has number and chars\n if (password.match(/([a-zA-Z])/) && password.match(/([0-9])/)) {\n score += 15\n }\n\n // password has number and symbol\n if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([0-9])/)) {\n score += 15\n }\n\n // password has char and symbol\n if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([a-zA-Z])/)) {\n score += 15\n }\n\n // password is just numbers or chars\n if (password.match(/^\\w+$/) || password.match(/^\\d+$/)) {\n score -= 10\n }\n\n if (score > 100) {\n score = 100\n }\n\n if (score < 0) {\n score = 0\n }\n\n return score\n }\n\n /**\n * Checks for repetition of characters in\n * a string\n *\n * @param int rLen Repetition length.\n * @param string str The string to be checked.\n * @return string\n */\n _checkRepetition(rLen, str) {\n var res = '',\n repeated = false\n for (var i = 0; i < str.length; i++) {\n repeated = true\n for (var j = 0; j < rLen && j + i + rLen < str.length; j++) {\n repeated = repeated && str.charAt(j + i) === str.charAt(j + i + rLen)\n }\n if (j < rLen) {\n repeated = false\n }\n if (repeated) {\n i += rLen - 1\n repeated = false\n } else {\n res += str.charAt(i)\n }\n }\n return res\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n/*const inputs = SelectorEngine.find(SELECTOR_PASSWORD)\ninputs.forEach((input) => {\n InputPassword.getOrCreateInstance(input)\n})*/\n\nconst createInput = (element) => {\n if (element && element.matches(SELECTOR_PASSWORD)) {\n return InputPassword.getOrCreateInstance(element)\n }\n return null\n}\n\nEventHandler.on(document, EVENT_MOUSEDOWN_DATA_API, SELECTOR_PASSWORD + ', label', function () {\n const target = InputLabel.getInputFromLabel(this) || this\n createInput(target)\n})\nEventHandler.on(document, EVENT_KEYUP_DATA_API, SELECTOR_PASSWORD + ', label', function () {\n const target = InputLabel.getInputFromLabel(this) || this\n const element = createInput(target)\n if (element && element._label) {\n element._label._labelOut()\n }\n})\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_BTN_SHOW_PWD, function () {\n const target = this.parentNode && this.parentNode.querySelector(SELECTOR_PASSWORD)\n if (target) {\n InputPassword.getOrCreateInstance(target)\n }\n})\n\nexport default InputPassword\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"input-password.js","sources":["../../src/js/plugins/input-password.js"],"sourcesContent":["import BaseComponent from 'bootstrap/js/src/base-component'\nimport EventHandler from 'bootstrap/js/src/dom/event-handler'\nimport SelectorEngine from 'bootstrap/js/src/dom/selector-engine'\nimport Manipulator from 'bootstrap/js/src/dom/manipulator'\n\nimport InputLabel from './input-label'\n\nconst NAME = 'inputpassword'\nconst DATA_KEY = 'bs.inputpassword'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n shortPass: 'Password troppo breve',\n badPass: 'Password debole.',\n goodPass: 'Password abbastanza sicura.',\n strongPass: 'Password sicura.',\n minimumLength: 8,\n suggestionsLabel: 'Suggerimenti per una buona password:',\n suggestionFollowed: 'suggerimenti seguito',\n suggestionFollowedPlural: 'suggerimenti seguiti',\n suggestionOf: 'di',\n suggestionMetLabel: 'Soddisfatto: ',\n suggestionMetIconPath: `\n M9.6 16.9 4 11.4l.8-.7 4.8 4.8 8.5-8.4.7.7-9.2 9.1z\n `,\n suggestionLength: 'Almeno {minLength} caratteri.',\n suggestionUppercase: 'Una o più maiuscole.',\n suggestionLowercase: 'Una o più minuscole.',\n suggestionNumber: 'Uno o più numeri.',\n suggestionSpecial: 'Uno o più caratteri speciali.',\n}\n\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_KEYUP = `keyup${EVENT_KEY}`\nconst EVENT_SCORE = `score${EVENT_KEY}`\nconst EVENT_TEXT = `text${EVENT_KEY}`\nconst EVENT_SUGGS = `suggs${EVENT_KEY}`\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_MOUSEDOWN_DATA_API = `mousedown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_PASSWORD = 'input-password'\n\nconst SELECTOR_PASSWORD = 'input[data-bs-input][type=\"password\"]'\nconst SELECTOR_BTN_SHOW_PWD = '.password-icon'\nconst SELECTOR_METER = '.password-strength-meter'\nconst SELECTOR_METER_GRAYBAR = '.password-meter'\nconst SELECTOR_METER_COLBAR = '.progress-bar'\nconst SELECTOR_METER_TEXT = '.strength-meter-info'\nconst SELECTOR_METER_SUGGS = '.strenght-meter-suggestions'\n\nclass InputPassword extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._isCustom = this._element.classList.contains(CLASS_NAME_PASSWORD)\n this._meter = this._element.parentNode.querySelector(SELECTOR_METER)\n\n this._grayBarElement = null\n this._colorBarElement = null\n this._textElement = null\n this._suggsElement = null\n this._showPwdElement = null\n\n this._text = {}\n\n this._label = new InputLabel(element)\n\n this._suggestions = [\n {\n key: 'length',\n text: (config) => config.suggestionLength.replace('{minLength}', config.minimumLength.toString()),\n test: (password, config) => password.length >= config.minimumLength,\n },\n {\n key: 'uppercase',\n text: (config) => config.suggestionUppercase,\n test: (password) => /[A-Z]/.test(password),\n },\n {\n key: 'lowercase',\n text: (config) => config.suggestionLowercase,\n test: (password) => /[a-z]/.test(password),\n },\n {\n key: 'number',\n text: (config) => config.suggestionNumber,\n test: (password) => /[0-9]/.test(password),\n },\n {\n key: 'special',\n text: (config) => config.suggestionSpecial,\n test: (password) => /[^A-Za-z0-9]/.test(password),\n },\n ]\n\n this._init()\n this._bindEvents()\n }\n\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Private\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {}),\n }\n return config\n }\n\n _init() {\n if (this._isCustom) {\n this._handleAutofill()\n this._showPwdElement = SelectorEngine.findOne(SELECTOR_BTN_SHOW_PWD, this._element.parentNode)\n if (this._meter) {\n this._grayBarElement = this._meter.querySelector(SELECTOR_METER_GRAYBAR)\n this._colorBarElement = this._meter.querySelector(SELECTOR_METER_COLBAR)\n this._textElement = this._meter.querySelector(SELECTOR_METER_TEXT)\n this._suggsElement = this._meter.querySelector(SELECTOR_METER_SUGGS)\n if (this._textElement) {\n this._config = Object.assign({}, this._config, { ...Manipulator.getDataAttributes(this._textElement) })\n }\n if (this._suggsElement) {\n this._createsuggestionsList()\n }\n }\n }\n }\n\n _bindEvents() {\n if (this._isCustom) {\n if (this._showPwdElement) {\n EventHandler.on(this._showPwdElement, EVENT_CLICK, () => this._toggleShowPassword())\n }\n if (this._meter) {\n EventHandler.on(this._element, EVENT_KEYUP, () => this._checkPassword())\n EventHandler.on(this._element, 'input', () => this._checkPassword())\n }\n }\n }\n\n _handleAutofill() {\n const checkAndActivate = () => {\n if (this._element.value !== '') {\n this._label._labelOut()\n this._checkPassword()\n }\n }\n checkAndActivate()\n setTimeout(checkAndActivate, 100)\n EventHandler.on(this._element, 'animationstart', (event) => {\n if (event.animationName === 'onAutoFillStart') {\n checkAndActivate()\n }\n })\n }\n\n _toggleShowPassword() {\n const toShow = this._element.getAttribute('type') === 'password'\n SelectorEngine.find('[class^=\"password-icon\"]', this._showPwdElement).forEach((icon) => icon.classList.toggle('d-none'))\n this._element.setAttribute('type', toShow ? 'text' : 'password')\n this._showPwdElement.setAttribute('aria-checked', toShow.toString())\n }\n\n _checkPassword() {\n const password = this._element.value\n const score = this._calculateScore(password)\n this._updateMeter(score)\n this._updateText(score, password)\n this._updateSuggestions(password)\n }\n\n _updateMeter(score) {\n const perc = score < 0 ? 0 : score\n if (this._colorBarElement) {\n this._colorBarElement.classList.forEach((className) => {\n if (className.match(/(^|\\s)bg-\\S+/g)) {\n this._colorBarElement.classList.remove(className)\n }\n })\n this._colorBarElement.classList.add(`bg-${this._scoreColor(score)}`)\n this._colorBarElement.style.width = `${perc}%`\n this._colorBarElement.setAttribute('aria-valuenow', perc)\n }\n EventHandler.trigger(this._element, EVENT_SCORE)\n }\n\n _updateText(score, password) {\n if (this._textElement) {\n let text = this._scoreText(score)\n if (this._suggsElement) {\n const { completedCount, totalCount } = this._getCompletedSuggestions(password)\n const suggestionText = completedCount === 1 ? this._config.suggestionFollowed : this._config.suggestionFollowedPlural\n text += ` ${completedCount} ${this._config.suggestionOf} ${totalCount} ${suggestionText}.`\n }\n if (this._textElement.textContent !== text) {\n this._textElement.textContent = text\n this._textElement.classList.forEach((className) => {\n if (className.match(/(^|\\s)text-\\S+/g)) {\n this._textElement.classList.remove(className)\n }\n })\n this._textElement.classList.add(`text-${this._scoreColor(score)}`)\n EventHandler.trigger(this._element, EVENT_TEXT)\n }\n }\n }\n\n _updateSuggestions(password) {\n if (this._suggsElement) {\n this._updateSuggestionsList(password)\n EventHandler.trigger(this._element, EVENT_SUGGS)\n }\n }\n\n _getCompletedSuggestions(password) {\n let completedCount = 0\n const totalCount = this._suggestions.length\n this._suggestions.forEach((sugg) => {\n if (sugg.test(password, this._config)) completedCount++\n })\n return { completedCount, totalCount }\n }\n\n _createsuggestionsList() {\n if (this._suggsElement.querySelector('.password-suggestions')) {\n return\n }\n const suggLabel = document.createElement('label')\n suggLabel.className = 'visually-hidden'\n suggLabel.htmlFor = 'suggestions'\n suggLabel.textContent = Default.suggestionsLabel\n const suggContainer = document.createElement('div')\n suggContainer.id = 'suggestions'\n suggContainer.className = 'password-suggestions'\n\n this._suggestions.forEach((sugg) => {\n const suggElement = document.createElement('div')\n suggElement.className = 'suggestion'\n suggElement.dataset.suggestion = sugg.key\n const checkIcon = this._createIconCheck()\n const textSpan = document.createElement('span')\n textSpan.textContent = sugg.text(this._config)\n suggElement.appendChild(checkIcon)\n suggElement.appendChild(textSpan)\n suggContainer.appendChild(suggElement)\n })\n\n this._suggsElement.appendChild(suggLabel)\n this._suggsElement.appendChild(suggContainer)\n }\n\n _createIconCheck() {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg')\n svg.setAttribute('class', `icon icon-xs me-1 d-none`)\n svg.setAttribute('aria-label', this._config.suggestionMetLabel)\n svg.setAttribute('viewBox', '0 0 24 24')\n svg.style.width = '1em'\n svg.style.height = '1em'\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path')\n path.setAttribute('d', this._config.suggestionMetIconPath.trim())\n svg.appendChild(path)\n return svg\n }\n\n _updateSuggestionsList(password) {\n if (!this._suggsElement) return\n this._suggestions.forEach((sugg) => {\n const suggElement = this._suggsElement.querySelector(`[data-suggestion=\"${sugg.key}\"]`)\n if (suggElement) {\n const isMet = sugg.test(password, this._config)\n const checkIcon = suggElement.querySelector('.icon')\n if (checkIcon) {\n checkIcon.classList.toggle('d-none', !isMet)\n }\n }\n })\n }\n\n /**\n * Returns strings based on the score given.\n *\n * @param int score Score base.\n * @return string\n */\n _scoreText(score) {\n if (score === -1) {\n return this._config.shortPass\n }\n\n if (score === -2) {\n return ''\n }\n\n score = score < 0 ? 0 : score\n\n if (score < 26) {\n return this._config.badPass\n }\n if (score < 51) {\n return this._config.badPass\n }\n if (score < 76) {\n return this._config.goodPass\n }\n\n return this._config.strongPass\n }\n\n _scoreColor(score) {\n if (score === -1 || score === -2 || score < 26) {\n return 'danger'\n }\n if (score < 51) {\n return 'warning'\n }\n if (score < 76) {\n return 'success'\n }\n return 'success'\n }\n\n /**\n * Returns a value between -1 and 100 to score\n * the user's password.\n *\n * @param string password The password to be checked.\n * @return int\n */\n _calculateScore(password) {\n var score = 0\n\n // empty password\n if (password.trim().length === 0) {\n return -2\n }\n\n // password < this._config.minimumLength\n if (password.length < this._config.minimumLength) {\n return -1\n }\n\n // password length\n score += password.length * 4\n score += this._checkRepetition(1, password).length - password.length\n score += this._checkRepetition(2, password).length - password.length\n score += this._checkRepetition(3, password).length - password.length\n score += this._checkRepetition(4, password).length - password.length\n\n // password has 3 numbers\n if (password.match(/(.*[0-9].*[0-9].*[0-9])/)) {\n score += 5\n }\n\n // password has at least 2 symbols\n var symbols = '.*[!,@,#,$,%,^,&,*,?,_,~]'\n symbols = new RegExp('(' + symbols + symbols + ')')\n if (password.match(symbols)) {\n score += 5\n }\n\n // password has Upper and Lower chars\n if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)) {\n score += 10\n }\n\n // password has number and chars\n if (password.match(/([a-zA-Z])/) && password.match(/([0-9])/)) {\n score += 15\n }\n\n // password has number and symbol\n if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([0-9])/)) {\n score += 15\n }\n\n // password has char and symbol\n if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([a-zA-Z])/)) {\n score += 15\n }\n\n // password is just numbers or chars\n if (password.match(/^\\w+$/) || password.match(/^\\d+$/)) {\n score -= 10\n }\n\n if (score > 100) {\n score = 100\n }\n\n if (score < 0) {\n score = 0\n }\n\n return score\n }\n\n /**\n * Checks for repetition of characters in\n * a string\n *\n * @param int rLen Repetition length.\n * @param string str The string to be checked.\n * @return string\n */\n _checkRepetition(rLen, str) {\n var res = '',\n repeated = false\n for (var i = 0; i < str.length; i++) {\n repeated = true\n for (var j = 0; j < rLen && j + i + rLen < str.length; j++) {\n repeated = repeated && str.charAt(j + i) === str.charAt(j + i + rLen)\n }\n if (j < rLen) {\n repeated = false\n }\n if (repeated) {\n i += rLen - 1\n repeated = false\n } else {\n res += str.charAt(i)\n }\n }\n return res\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nconst createInput = (element) => {\n if (element && element.matches(SELECTOR_PASSWORD)) {\n return InputPassword.getOrCreateInstance(element)\n }\n return null\n}\n\nconst initInputPassword = () => {\n const element = SelectorEngine.findOne(SELECTOR_PASSWORD)\n if (element) {\n InputPassword.getOrCreateInstance(element)\n }\n}\n\nif (document.readyState !== 'loading') {\n initInputPassword()\n} else {\n document.addEventListener('DOMContentLoaded', initInputPassword)\n}\n\nEventHandler.on(document, EVENT_MOUSEDOWN_DATA_API, SELECTOR_PASSWORD + ', label', function () {\n const target = InputLabel.getInputFromLabel(this) || this\n createInput(target)\n})\nEventHandler.on(document, EVENT_KEYUP_DATA_API, SELECTOR_PASSWORD + ', label', function () {\n const target = InputLabel.getInputFromLabel(this) || this\n const element = createInput(target)\n if (element && element._label) {\n element._label._labelOut()\n }\n})\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_BTN_SHOW_PWD, function () {\n const target = this.parentNode && this.parentNode.querySelector(SELECTOR_PASSWORD)\n if (target) {\n InputPassword.getOrCreateInstance(target)\n }\n})\n\nexport default InputPassword\n"],"names":[],"mappings":"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"}
|
package/dist/version.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// bootstrap italia version variable
|
|
2
2
|
// useful to check for the current version
|
|
3
3
|
// eslint-disable-next-line no-unused-vars
|
|
4
|
-
const BOOTSTRAP_ITALIA_VERSION = '2.
|
|
4
|
+
const BOOTSTRAP_ITALIA_VERSION = '2.10.0';
|
|
5
5
|
|
|
6
6
|
export { BOOTSTRAP_ITALIA_VERSION as default };
|
|
7
7
|
//# sourceMappingURL=version.js.map
|
package/dist/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sources":["../src/js/version.js"],"sourcesContent":["// bootstrap italia version variable\n// useful to check for the current version\n// eslint-disable-next-line no-unused-vars\nconst BOOTSTRAP_ITALIA_VERSION = '2.
|
|
1
|
+
{"version":3,"file":"version.js","sources":["../src/js/version.js"],"sourcesContent":["// bootstrap italia version variable\n// useful to check for the current version\n// eslint-disable-next-line no-unused-vars\nconst BOOTSTRAP_ITALIA_VERSION = '2.10.0'\nexport default BOOTSTRAP_ITALIA_VERSION\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACK,MAAC,wBAAwB,GAAG;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bootstrap-italia",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.10.0",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"css",
|
|
6
6
|
"sass",
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"pa11y-ci": "^3.0.1",
|
|
76
76
|
"prettier": "^2.5.1",
|
|
77
77
|
"replace-in-file": "^6.3.2",
|
|
78
|
-
"rollup": "^2.
|
|
78
|
+
"rollup": "^2.79.2",
|
|
79
79
|
"rollup-plugin-commonjs": "^10.1.0",
|
|
80
80
|
"rollup-plugin-copy": "^3.4.0",
|
|
81
81
|
"rollup-plugin-inject-process-env": "^1.3.1",
|