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.
@@ -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 molto debole',
14
- badPass: 'Password debole',
15
- goodPass: 'Password sicura',
16
- strongPass: 'Password molto sicura',
17
- enterPass: 'Inserisci almeno 8 caratteri e una lettera maiuscola',
18
- alertCaps: 'CAPS LOCK inserito',
19
- showText: true,
20
- minimumLength: 4,
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 SELECTOR_CAPS = '.password-caps';
44
- const SELECTOR_TEXT = '.form-text';
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._capsElement = null;
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._capsElement = this._element.parentNode.querySelector(SELECTOR_CAPS);
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
- EventHandler.on(this._element, EVENT_KEYDOWN, (evt) => {
112
- if (evt.key === 'Shift') {
113
- this._isShiftPressed = true;
114
- }
115
- });
116
- EventHandler.on(this._element, EVENT_KEYUP, (evt) => {
117
- if (evt.key === 'Shift') {
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
- _showCapsMsg() {
147
- if (this._capsElement) {
148
- this._capsElement.classList.add(CLASS_NAME_SHOW);
149
- }
150
- }
151
- _hideCapsMsg() {
152
- if (this._capsElement) {
153
- this._capsElement.classList.remove(CLASS_NAME_SHOW);
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
- if (toShow) {
161
- this._element.setAttribute('type', 'text');
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 score = this._calculateScore(this._element.value);
169
- const perc = score < 0 ? 0 : score;
170
-
171
- this._colorBarElement.classList.forEach((className) => {
172
- if (className.match(/(^|\s)bg-\S+/g)) {
173
- this._colorBarElement.classList.remove(className);
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._element.value.length === 0 && score <= 0) {
185
- text = this._config.enterPass;
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
- if (this._textElement.innerHTML.search(text) === -1) {
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('text-' + this._scoreColor(score));
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.shortPass
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 sybols
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":";;;;;;AAQA,MAAM,IAAI,GAAG,gBAAe;AAC5B,MAAM,QAAQ,GAAG,mBAAkB;AACnC,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAC;AAChC,MAAM,YAAY,GAAG,YAAW;AAChC;AACA,MAAM,OAAO,GAAG;AAChB,EAAE,SAAS,EAAE,uBAAuB;AACpC,EAAE,OAAO,EAAE,iBAAiB;AAC5B,EAAE,QAAQ,EAAE,iBAAiB;AAC7B,EAAE,UAAU,EAAE,uBAAuB;AACrC,EAAE,SAAS,EAAE,sDAAsD;AACnE,EAAE,SAAS,EAAE,oBAAoB;AACjC,EAAE,QAAQ,EAAE,IAAI;AAChB,EAAE,aAAa,EAAE,CAAC;AAClB,EAAC;AACD;AACA,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,EAAC;AACvC,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,EAAC;AACvC,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,EAAC;AAC3C,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAC;AAC7C,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,EAAC;AACvC,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,EAAC;AACrC;AACA,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAC;AAC/D,MAAM,wBAAwB,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAC;AACvE,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAC;AAC/D;AACA,MAAM,mBAAmB,GAAG,iBAAgB;AAC5C;AACA,MAAM,eAAe,GAAG,OAAM;AAC9B;AACA,MAAM,iBAAiB,GAAG,wCAAuC;AACjE,MAAM,qBAAqB,GAAG,iBAAgB;AAC9C,MAAM,cAAc,GAAG,2BAA0B;AACjD,MAAM,sBAAsB,GAAG,kBAAiB;AAChD,MAAM,qBAAqB,GAAG,gBAAe;AAC7C,MAAM,aAAa,GAAG,iBAAgB;AACtC,MAAM,aAAa,GAAG,aAAY;AAClC;AACA,MAAM,aAAa,SAAS,aAAa,CAAC;AAC1C,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE;AAC/B,IAAI,KAAK,CAAC,OAAO,EAAC;AAClB;AACA,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAC;AAC1C,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAC;AAC1E,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,EAAC;AACxE,IAAI,IAAI,CAAC,eAAe,GAAG,MAAK;AAChC,IAAI,IAAI,CAAC,SAAS,GAAG,MAAK;AAC1B;AACA,IAAI,IAAI,CAAC,eAAe,GAAG,KAAI;AAC/B,IAAI,IAAI,CAAC,gBAAgB,GAAG,KAAI;AAChC,IAAI,IAAI,CAAC,YAAY,GAAG,KAAI;AAC5B,IAAI,IAAI,CAAC,YAAY,GAAG,KAAI;AAC5B,IAAI,IAAI,CAAC,eAAe,GAAG,KAAI;AAC/B;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,GAAE;AACnB;AACA,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,OAAO,EAAC;AACzC;AACA,IAAI,IAAI,CAAC,KAAK,GAAE;AAChB,IAAI,IAAI,CAAC,WAAW,GAAE;AACtB,GAAG;AACH;AACA;AACA;AACA,EAAE,WAAW,IAAI,GAAG;AACpB,IAAI,OAAO,IAAI;AACf,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE,UAAU,CAAC,MAAM,EAAE;AACrB,IAAI,MAAM,GAAG;AACb,MAAM,GAAG,OAAO;AAChB,MAAM,GAAG,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;AACrD,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG,EAAE,CAAC;AACnD,MAAK;AACL,IAAI,OAAO,MAAM;AACjB,GAAG;AACH;AACA,EAAE,KAAK,GAAG;AACV,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,sBAAsB,EAAC;AAC9E,MAAM,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,qBAAqB,EAAC;AAC9E,MAAM,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,EAAC;AAClE;AACA,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE;AAC7B,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,EAAC;AAC3J,OAAO;AACP,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,MAAM,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,EAAC;AAC/E,KAAK;AACL;AACA,IAAI,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAC;AAClG,GAAG;AACH;AACA,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE,EAAC;AAC9E,KAAK;AACL;AACA,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,MAAM,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,GAAG,KAAK;AAC7D,QAAQ,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,EAAE;AACjC,UAAU,IAAI,CAAC,eAAe,GAAG,KAAI;AACrC,SAAS;AACT,OAAO,EAAC;AACR,MAAM,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,GAAG,KAAK;AAC3D,QAAQ,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,EAAE;AACjC,UAAU,IAAI,CAAC,eAAe,GAAG,MAAK;AACtC,SAAS;AACT,QAAQ,IAAI,GAAG,CAAC,GAAG,KAAK,UAAU,EAAE;AACpC,UAAU,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,UAAS;AAC1C,UAAU,IAAI,IAAI,CAAC,SAAS,EAAE;AAC9B,YAAY,IAAI,CAAC,YAAY,GAAE;AAC/B,WAAW,MAAM;AACjB,YAAY,IAAI,CAAC,YAAY,GAAE;AAC/B,WAAW;AACX,SAAS;AACT,OAAO,EAAC;AACR,MAAM,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,GAAG,KAAK;AAC9D,QAAQ,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAE;AACrD,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACzD,UAAU,IAAI,CAAC,SAAS,GAAG,KAAI;AAC/B,UAAU,IAAI,CAAC,YAAY,GAAE;AAC7B,SAAS,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AACnC,UAAU,IAAI,CAAC,SAAS,GAAG,MAAK;AAChC,UAAU,IAAI,CAAC,YAAY,GAAE;AAC7B,SAAS;AACT,OAAO,EAAC;AACR,KAAK;AACL;AACA,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;AAC9B,MAAM,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC,mBAAmB,EAAE,EAAC;AAC1F,KAAK;AACL,GAAG;AACH;AACA,EAAE,YAAY,GAAG;AACjB,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAC3B,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,EAAC;AACtD,KAAK;AACL,GAAG;AACH,EAAE,YAAY,GAAG;AACjB,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAC3B,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,EAAC;AACzD,KAAK;AACL,GAAG;AACH;AACA,EAAE,mBAAmB,GAAG;AACxB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,WAAU;AACpE,IAAI,cAAc,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAC;AAC5H,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAC;AAChD,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,EAAC;AACpD,KAAK;AACL,GAAG;AACH;AACA,EAAE,cAAc,GAAG;AACnB,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAC;AAC3D,IAAI,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,MAAK;AACtC;AACA,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK;AAC3D,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE;AAC5C,QAAQ,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAC;AACzD,OAAO;AACP,KAAK,EAAC;AACN,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAC;AACxE,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,GAAG,IAAG;AAClD,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,EAAC;AAC7D;AACA,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAC;AACpD;AACA,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAC3B,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAC;AACvC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE;AAC1D,QAAQ,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAS;AACrC,OAAO;AACP;AACA,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AAC3D,QAAQ,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,KAAI;AAC1C,QAAQ,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK;AAC3D,UAAU,IAAI,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE;AAClD,YAAY,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAC;AACzD,WAAW;AACX,SAAS,EAAC;AACV,QAAQ,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAC;AAC1E,QAAQ,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAC;AACvD,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,CAAC,KAAK,EAAE;AACpB,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACtB,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS;AACnC,KAAK;AACL;AACA,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,MAAK;AACjC;AACA,IAAI,IAAI,KAAK,GAAG,EAAE,EAAE;AACpB,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS;AACnC,KAAK;AACL,IAAI,IAAI,KAAK,GAAG,EAAE,EAAE;AACpB,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO;AACjC,KAAK;AACL,IAAI,IAAI,KAAK,GAAG,EAAE,EAAE;AACpB,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ;AAClC,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU;AAClC,GAAG;AACH;AACA,EAAE,WAAW,CAAC,KAAK,EAAE;AACrB,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACtB,MAAM,OAAO,QAAQ;AACrB,KAAK;AACL,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACtB,MAAM,OAAO,OAAO;AACpB,KAAK;AACL;AACA,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,MAAK;AACjC;AACA,IAAI,IAAI,KAAK,GAAG,EAAE,EAAE;AACpB,MAAM,OAAO,QAAQ;AACrB,KAAK;AACL,IAAI,IAAI,KAAK,GAAG,EAAE,EAAE;AACpB,MAAM,OAAO,SAAS;AACtB,KAAK;AACL,IAAI,IAAI,KAAK,GAAG,EAAE,EAAE;AACpB,MAAM,OAAO,SAAS;AACtB,KAAK;AACL;AACA,IAAI,OAAO,SAAS;AACpB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,eAAe,CAAC,QAAQ,EAAE;AAC5B,IAAI,IAAI,KAAK,GAAG,EAAC;AACjB;AACA;AACA,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;AACtC,MAAM,OAAO,CAAC,CAAC;AACf,KAAK;AACL;AACA;AACA,IAAI,IAAI,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AACtD,MAAM,OAAO,CAAC,CAAC;AACf,KAAK;AACL;AACA;AACA,IAAI,KAAK,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAC;AAChC,IAAI,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,OAAM;AACxE,IAAI,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,OAAM;AACxE,IAAI,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,OAAM;AACxE,IAAI,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,OAAM;AACxE;AACA;AACA,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,yBAAyB,CAAC,EAAE;AACnD,MAAM,KAAK,IAAI,EAAC;AAChB,KAAK;AACL;AACA;AACA,IAAI,IAAI,OAAO,GAAG,4BAA2B;AAC7C,IAAI,OAAO,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,OAAO,GAAG,OAAO,GAAG,GAAG,EAAC;AACvD,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AACjC,MAAM,KAAK,IAAI,EAAC;AAChB,KAAK;AACL;AACA;AACA,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,+BAA+B,CAAC,EAAE;AACzD,MAAM,KAAK,IAAI,GAAE;AACjB,KAAK;AACL;AACA;AACA,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;AACnE,MAAM,KAAK,IAAI,GAAE;AACjB,KAAK;AACL;AACA;AACA,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,2BAA2B,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;AAClF,MAAM,KAAK,IAAI,GAAE;AACjB,KAAK;AACL;AACA;AACA,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,2BAA2B,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AACrF,MAAM,KAAK,IAAI,GAAE;AACjB,KAAK;AACL;AACA;AACA,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AAC5D,MAAM,KAAK,IAAI,GAAE;AACjB,KAAK;AACL;AACA,IAAI,IAAI,KAAK,GAAG,GAAG,EAAE;AACrB,MAAM,KAAK,GAAG,IAAG;AACjB,KAAK;AACL;AACA,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE;AACnB,MAAM,KAAK,GAAG,EAAC;AACf,KAAK;AACL;AACA,IAAI,OAAO,KAAK;AAChB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE;AAC9B,IAAI,IAAI,GAAG,GAAG,EAAE;AAChB,MAAM,QAAQ,GAAG,MAAK;AACtB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,MAAM,QAAQ,GAAG,KAAI;AACrB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAClE,QAAQ,QAAQ,GAAG,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAC;AAC7E,OAAO;AACP,MAAM,IAAI,CAAC,GAAG,IAAI,EAAE;AACpB,QAAQ,QAAQ,GAAG,MAAK;AACxB,OAAO;AACP,MAAM,IAAI,QAAQ,EAAE;AACpB,QAAQ,CAAC,IAAI,IAAI,GAAG,EAAC;AACrB,QAAQ,QAAQ,GAAG,MAAK;AACxB,OAAO,MAAM;AACb,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,EAAC;AAC5B,OAAO;AACP,KAAK;AACL,IAAI,OAAO,GAAG;AACd,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,CAAC,OAAO,KAAK;AACjC,EAAE,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;AACrD,IAAI,OAAO,aAAa,CAAC,mBAAmB,CAAC,OAAO,CAAC;AACrD,GAAG;AACH,EAAE,OAAO,IAAI;AACb,EAAC;AACD;AACA,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,wBAAwB,EAAE,iBAAiB,GAAG,SAAS,EAAE,YAAY;AAC/F,EAAE,MAAM,MAAM,GAAG,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,KAAI;AAC3D,EAAE,WAAW,CAAC,MAAM,EAAC;AACrB,CAAC,EAAC;AACF,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,EAAE,iBAAiB,GAAG,SAAS,EAAE,YAAY;AAC3F,EAAE,MAAM,MAAM,GAAG,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,KAAI;AAC3D,EAAE,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAC;AACrC,EAAE,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;AACjC,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,GAAE;AAC9B,GAAG;AACH,CAAC,EAAC;AACF,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,YAAY;AACnF,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,iBAAiB,EAAC;AACpF,EAAE,IAAI,MAAM,EAAE;AACd,IAAI,aAAa,CAAC,mBAAmB,CAAC,MAAM,EAAC;AAC7C,GAAG;AACH,CAAC;;;;"}
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.9.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
@@ -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.9.2'\nexport default BOOTSTRAP_ITALIA_VERSION\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACK,MAAC,wBAAwB,GAAG;;;;"}
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.9.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.68.0",
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",