diff options
Diffstat (limited to 'dist/js/bootstrap-strength-meter.js')
-rw-r--r-- | dist/js/bootstrap-strength-meter.js | 408 |
1 files changed, 193 insertions, 215 deletions
diff --git a/dist/js/bootstrap-strength-meter.js b/dist/js/bootstrap-strength-meter.js index e975ffc..e7ec1c8 100644 --- a/dist/js/bootstrap-strength-meter.js +++ b/dist/js/bootstrap-strength-meter.js @@ -9,125 +9,92 @@ "use strict";// jshint ;_; var StrengthMeter = { - core: { - /** - * Get options for score. - */ - getScoreOptions: function(settings) { - var options = []; - - for (var i = 0; i < settings.dictionaries.length; i++) { - options[options.length] = { - type: 'dictionary', - dictionary: settings.dictionaries[i] - }; - - options[options.length] = { - type: 'leet', - dictionary: settings.dictionaries[i] - }; - } - - for (var i = 0; i < settings.keyboards.length; i++) { - options[options.length] = { - type: 'keyboard', - dictionary: settings.keyboards[i] - }; - } - - options[options.length] = { - type: 'repitition' - }; - - options[options.length] = { - type: 'sequences' - }; - - options[options.length] = { - type: 'dates' - }; - - return options; - } - }, progressBar: function(input, options) { var defaults = { container: input.parent(), - base: 120, + base: 80, hierarchy: { '0': 'progress-bar-danger', - '40': 'progress-bar-warning', - '60': 'progress-bar-success' + '25': 'progress-bar-warning', + '50': 'progress-bar-success' }, - dictionaries: [ - - ], - keyboards: [ - - ] - }, - - settings = $.extend({}, defaults, options), - - template = '<div class="progress"><div class="progress-bar" role="progressbar" aria-valuemax="100" aria-valuemin="0" aria-valuenow="0"></div></div>', - - progress, - - progressBar, - - core = { - - /** - * Initialize the plugin. - */ - init: function() { - progress = settings.container.append($(template)); - progressBar = $('.progress-bar', progress); - input.on('keyup', core.keyup) - .keyup(); - }, - - /** - * Update progress abr accordning - */ - update: function(value) { - var width = Math.floor(value/settings.base*100); - - if (width > 100) { - width = 100; - } - - progressBar - .attr('area-valuenow', width) - .css('width', width + '%'); - - for (var value in settings.hierarchy) { - if (width > value) { - progressBar - .removeClass() - .addClass('progress-bar') - .addClass(settings.hierarchy[value]); - } - } - }, + passwordScore: { + options: [], + append: true + } + }; - /** - * Binding on keydown for updateing the progrssbar. - */ - keyup: function(event) { - var password = $(event.target).val() - var value = 0; + var settings = $.extend(true, {}, defaults, options); + + if (typeof options === 'object' && 'hierarchy' in options) { + settings.hierarchy = options.hierarchy; + } + + var template = '<div class="progress"><div class="progress-bar" role="progressbar"></div></div>'; + var progress; + var progressBar; + + var core = { + + /** + * Initialize the plugin. + */ + init: function() { + progress = settings.container.append($(template)); + progressBar = $('.progress-bar', progress); + + progressBar.attr('aria-valuemin', 0) + .attr('aria-valuemay', 100); + + input.on('keyup', core.keyup) + .keyup(); + }, - if (password.length > 0) { - var score = new Score(password); - value = score.calculateEntropyScore(StrengthMeter.core.getScoreOptions(settings)); + /** + * Update progress bar. + * + * @param {string} value + */ + update: function(value) { + var width = Math.floor((value/settings.base)*100); + + if (width > 100) { + width = 100; + } + + progressBar + .attr('area-valuenow', width) + .css('width', width + '%'); + + for (var value in settings.hierarchy) { + if (width > value) { + progressBar + .removeClass() + .addClass('progress-bar') + .addClass(settings.hierarchy[value]); } + } + }, - core.update(value); - }, - }; + /** + * Event binding on password input. + * + * @param {Object} event + */ + keyup: function(event) { + var password = $(event.target).val(); + var value = 0; + + if (password.length > 0) { + var score = new Score(password); + value = score.calculateEntropyScore(settings.passwordScore.options, settings.passwordScore.append); + } + + core.update(value); + } + }; core.init(); }, @@ -139,62 +106,68 @@ hierarchy: { '0': ['text-danger', 'ridiculus'], '10': ['text-danger', 'very weak'], - '30': ['text-warning', 'weak'], - '50': ['text-warning', 'good'], - '70': ['text-success', 'strong'], - '100': ['text-success', 'very strong'], + '20': ['text-warning', 'weak'], + '30': ['text-warning', 'good'], + '40': ['text-success', 'strong'], + '50': ['text-success', 'very strong'] }, - dictionaries: [ - - ], - keyboards: [ - - ] - }, - - settings = $.extend({}, defaults, options), + passwordScore: { + options: [], + append: true + } + }; - core = { + var settings = $.extend(true, {}, defaults, options); + + if (typeof options === 'object' && 'hierarchy' in options) { + settings.hierarchy = options.hierarchy; + } - /** - * Initialize the plugin. - */ - init: function() { - input.on('keyup', core.keyup) - .keyup(); - }, + var core = { - /** - * Update progress abr accordning - */ - update: function(value) { - for (var border in settings.hierarchy) { - if (value >= border) { - var text = settings.hierarchy[border][1]; - var color = settings.hierarchy[border][0]; - - settings.container.text(text) - .removeClass() - .addClass(color); - } - } - }, - - /** - * Binding on keydown for updateing the progrssbar. - */ - keyup: function(event) { - var password = $(event.target).val() - var value = 0; + /** + * Initialize the plugin. + */ + init: function() { + input.on('keyup', core.keyup) + .keyup(); + }, - if (password.length > 0) { - var score = new Score(password); - value = score.calculateEntropyScore(StrengthMeter.core.getScoreOptions(settings)); - } + /** + * Update text element. + * + * @param {string} value + */ + update: function(value) { + for (var border in settings.hierarchy) { + if (value >= border) { + var text = settings.hierarchy[border][1]; + var color = settings.hierarchy[border][0]; + + settings.container.text(text) + .removeClass() + .addClass(color); + } + } + }, - core.update(value); - }, - }; + /** + * Event binding on input element. + * + * @param {Object} event + */ + keyup: function(event) { + var password = $(event.target).val(); + var value = 0; + + if (password.length > 0) { + var score = new Score(password); + value = score.calculateEntropyScore(settings.passwordScore.options, settings.passwordScore.append); + } + + core.update(value); + } + }; core.init(); }, @@ -205,80 +178,85 @@ hierarchy: { '0': 'ridiculus', '10': 'very weak', - '30': 'weak', - '50': 'good', - '70': 'string', - '100': 'very strong', + '20': 'weak', + '30': 'good', + '40': 'string', + '50': 'very strong' }, - dictionaries: [ - - ], - keyboards: [ - - ] - }, - - settings = $.extend({}, defaults, options), + tooltip: { + placement: 'right' + }, + passwordScore: { + options: [], + append: true + } + }; - core = { + var settings = $.extend(true, {}, defaults, options); + + if (typeof options === 'object' && 'hierarchy' in options) { + settings.hierarchy = options.hierarchy; + } - /** - * Initialize the plugin. - */ - init: function() { - input.tooltip({ - title: '' - }); - - input.on('keyup', core.keyup) - .keyup(); - }, + var core = { - /** - * Update progress abr accordning - */ - update: function(value) { - for (var border in settings.hierarchy) { - if (value >= border) { - var text = settings.hierarchy[border]; - - input.attr('data-original-title', text) - .tooltip('show'); - } - } - }, + /** + * Initialize the plugin. + */ + init: function() { + input.tooltip(settings.tooltip); - /** - * Binding on keydown for updateing the progrssbar. - */ - keyup: function(event) { - var password = $(event.target).val() - var value = 0; + input.on('keyup', core.keyup) + .keyup(); + }, - if (password.length > 0) { - var score = new Score(password); - value = score.calculateEntropyScore(StrengthMeter.core.getScoreOptions(settings)); - } + /** + * Update tooltip. + * + * @param {string} value + */ + update: function(value) { + for (var border in settings.hierarchy) { + if (value >= border) { + var text = settings.hierarchy[border]; + + input.attr('data-original-title', text) + .tooltip('show'); + } + } + }, - core.update(value); - }, - }; + /** + * Event binding on input element. + * + * @param {Object} event + */ + keyup: function(event) { + var password = $(event.target).val(); + var value = 0; + + if (password.length > 0) { + var score = new Score(password); + value = score.calculateEntropyScore(settings.passwordScore.options, settings.passwordScore.append); + } + + core.update(value); + } + }; core.init(); - }, - } + } + }; $.fn.strengthMeter = function(type, options) { - if (type === undefined) { - return; - } + type = (type === undefined) ? 'tooltip' : type; if (!type in StrengthMeter) { return; } - var instance = this.data('strengthMeter'), - elem = this; + var instance = this.data('strengthMeter'); + var elem = this; return elem.each(function() { var strengthMeter; |