diff --git a/public/external/fomantic-ui/dist/semantic.css b/public/external/fomantic-ui/dist/semantic.css index 35fe9a612d..e948108912 100644 --- a/public/external/fomantic-ui/dist/semantic.css +++ b/public/external/fomantic-ui/dist/semantic.css @@ -1,5 +1,5 @@ /* - * # Fomantic UI - 2.10.0-beta.4+fcf090f + * # Fomantic UI - 2.10.0-beta.9+45ac3fe * https://github.com/fomantic/Fomantic-UI * https://fomantic-ui.com/ * @@ -46613,13 +46613,15 @@ select.ui.dropdown { box-shadow: none; } - .ui.ui.selection.dropdown:not(.inverted):has(> input:focus) > i.icon { + .ui.ui.selection.dropdown:focus > i.icon:not(.remove), + .ui.ui.selection.dropdown:has(> input:focus) > i.icon:not(.remove) { opacity: 1; } -} -.ui.ui.selection.dropdown:focus > i.icon { - opacity: 1; + .ui.ui.selection.dropdown:focus > i.icon.remove:not(:hover), + .ui.ui.selection.dropdown:has(> input:focus) > i.icon.remove:not(:hover) { + opacity: 0.68; + } } /* Visible */ diff --git a/public/external/fomantic-ui/dist/semantic.js b/public/external/fomantic-ui/dist/semantic.js index cf09b267ae..b33a5d82fc 100644 --- a/public/external/fomantic-ui/dist/semantic.js +++ b/public/external/fomantic-ui/dist/semantic.js @@ -1,5 +1,5 @@ /* - * # Fomantic UI - 2.10.0-beta.4+fcf090f + * # Fomantic UI - 2.10.0-beta.9+45ac3fe * https://github.com/fomantic/Fomantic-UI * https://fomantic-ui.com/ * @@ -21,31 +21,29 @@ : globalThis; $.fn.site = function (parameters) { - var - time = Date.now(), - performance = [], + let time = Date.now(); + let performance = []; - query = arguments[0], - methodInvoked = typeof query === 'string', - queryArguments = [].slice.call(arguments, 1), + let query = arguments[0]; + let methodInvoked = typeof query === 'string'; + let queryArguments = [].slice.call(arguments, 1); - settings = $.isPlainObject(parameters) - ? $.extend(true, {}, $.site.settings, parameters) - : $.extend({}, $.site.settings), + let settings = $.isPlainObject(parameters) + ? $.extend(true, {}, $.site.settings, parameters) + : $.extend({}, $.site.settings); - namespace = settings.namespace, - error = settings.error, + let namespace = settings.namespace; + let error = settings.error; - moduleNamespace = 'module-' + namespace, + let moduleNamespace = 'module-' + namespace; - $document = $(document), - $module = $document, - element = this, - instance = $module.data(moduleNamespace), + let $document = $(document); + let $module = $document; + let element = this; + let instance = $module.data(moduleNamespace); - module, - returnedValue - ; + let module; + let returnedValue; module = { initialize: function () { @@ -56,8 +54,7 @@ module.verbose('Storing instance of site', module); instance = module; $module - .data(moduleNamespace, module) - ; + .data(moduleNamespace, module); }, normalize: function () { @@ -79,9 +76,7 @@ enabled: { modules: function (modules) { - var - enabledModules = [] - ; + let enabledModules = []; modules = modules || settings.modules; $.each(modules, function (index, name) { if (module.moduleExists(name)) { @@ -95,9 +90,7 @@ disabled: { modules: function (modules) { - var - disabledModules = [] - ; + let disabledModules = []; modules = modules || settings.modules; $.each(modules, function (index, name) { if (!module.moduleExists(name)) { @@ -120,12 +113,10 @@ ? modifyExisting : true; $.each(modules, function (index, name) { - var - namespace = module.moduleExists(name) - ? $.fn[name].settings.namespace || false - : true, - $existingModules - ; + let namespace = module.moduleExists(name) + ? $.fn[name].settings.namespace || false + : true; + let $existingModules; if (module.moduleExists(name)) { module.verbose('Changing default setting', setting, value, name); $.fn[name].settings[setting] = value; @@ -147,9 +138,7 @@ ? modifyExisting : true; $.each(modules, function (index, name) { - var - $existingModules - ; + let $existingModules; if (module.moduleExists(name)) { module.verbose('Changing default setting', newSettings, name); $.extend(true, $.fn[name].settings, newSettings); @@ -225,8 +214,7 @@ destroy: function () { module.verbose('Destroying previous site for', $module); $module - .removeData(moduleNamespace) - ; + .removeData(moduleNamespace); }, cache: {}, @@ -275,11 +263,9 @@ }, performance: { log: function (message) { - var - currentTime, - executionTime, - previousTime - ; + let currentTime; + let executionTime; + let previousTime; if (settings.performance) { currentTime = Date.now(); previousTime = time || currentTime; @@ -298,10 +284,8 @@ }, 500); }, display: function () { - var - title = settings.name + ':', - totalTime = 0 - ; + let title = settings.name + ':'; + let totalTime = 0; time = false; clearTimeout(module.performance.timer); $.each(performance, function (index, data) { @@ -323,22 +307,19 @@ }, }, invoke: function (query, passedArguments, context) { - var - object = instance, - maxDepth, - found, - response - ; + let object = instance; + let maxDepth; + let found; + let response; passedArguments = passedArguments || queryArguments; context = context || element; if (typeof query === 'string' && object !== undefined) { query = query.split(/[ .]/); maxDepth = query.length - 1; $.each(query, function (depth, value) { - var camelCaseValue = depth !== maxDepth + let camelCaseValue = depth !== maxDepth ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) - : query - ; + : query; if ($.isPlainObject(object[camelCaseValue]) && (depth !== maxDepth)) { object = object[camelCaseValue]; } else if (object[camelCaseValue] !== undefined) { @@ -468,58 +449,54 @@ : globalThis; $.fn.form = function (parameters) { - var - $allModules = $(this), - $window = $(window), - - time = Date.now(), - performance = [], - - query = arguments[0], - methodInvoked = typeof query === 'string', - queryArguments = [].slice.call(arguments, 1), - returnedValue - ; + let $allModules = $(this); + let $window = $(window); + + let time = Date.now(); + let performance = []; + + let query = arguments[0]; + let methodInvoked = typeof query === 'string'; + let queryArguments = [].slice.call(arguments, 1); + let returnedValue; $allModules.each(function () { - var - $module = $(this), - element = this, - - formErrors = [], - formErrorsTracker = {}, - keyHeldDown = false, - - // set at run-time - $field, - $group, - $message, - $prompt, - $submit, - $clear, - $reset, - - settings, - validation, - - metadata, - selector, - className, - regExp, - error, - - namespace, - moduleNamespace, - eventNamespace, - attachEventsSelector, - attachEventsAction, - - submitting = false, - dirty = false, - history = ['clean', 'clean'], - - instance, - module - ; + let $module = $(this); + let element = this; + + let formErrors = []; + let formErrorsTracker = {}; + let keyHeldDown = false; + + // set at run-time + let $field; + let $group; + let $message; + let $prompt; + let $submit; + let $clear; + let $reset; + + let settings; + let validation; + + let metadata; + let selector; + let className; + let regExp; + let error; + + let namespace; + let moduleNamespace; + let eventNamespace; + let attachEventsSelector; + let attachEventsAction; + + let submitting = false; + let dirty = false; + let history = ['clean', 'clean']; + + let instance; + let module; module = { @@ -551,16 +528,14 @@ module.verbose('Storing instance of module', module); instance = module; $module - .data(moduleNamespace, module) - ; + .data(moduleNamespace, module); }, destroy: function () { module.verbose('Destroying previous module', instance); module.removeEvents(); $module - .removeData(moduleNamespace) - ; + .removeData(moduleNamespace); }, refresh: function () { @@ -610,18 +585,15 @@ .on('blur' + eventNamespace, selector.field, module.event.field.blur) .on('click' + eventNamespace, selector.submit, module.submit) .on('click' + eventNamespace, selector.reset, module.reset) - .on('click' + eventNamespace, selector.clear, module.clear) - ; + .on('click' + eventNamespace, selector.clear, module.clear); $field.on('invalid' + eventNamespace, module.event.field.invalid); if (settings.keyboardShortcuts) { $module.on('keydown' + eventNamespace, selector.field, module.event.field.keydown); } $field.each(function (index, el) { - var - $input = $(el), - type = $input.prop('type'), - inputEvent = module.get.changeEvent(type, $input) - ; + let $input = $(el); + let type = $input.prop('type'); + let inputEvent = module.get.changeEvent(type, $input); $input.on(inputEvent + eventNamespace, module.event.field.change); }); @@ -652,18 +624,16 @@ clear: function () { $field.each(function (index, el) { - var - $field = $(el), - $element = $field.parent(), - $fieldGroup = $field.closest($group), - $prompt = $fieldGroup.find(selector.prompt), - $calendar = $field.closest(selector.uiCalendar), - defaultValue = $field.data(metadata.defaultValue) || '', - isCheckbox = $field.is(selector.checkbox), - isDropdown = $element.is(selector.uiDropdown) && module.can.useElement('dropdown'), - isCalendar = $calendar.length > 0 && module.can.useElement('calendar'), - isErrored = $fieldGroup.hasClass(className.error) - ; + let $field = $(el); + let $element = $field.parent(); + let $fieldGroup = $field.closest($group); + let $prompt = $fieldGroup.find(selector.prompt); + let $calendar = $field.closest(selector.uiCalendar); + let defaultValue = $field.data(metadata.defaultValue) || ''; + let isCheckbox = $field.is(selector.checkbox); + let isDropdown = $element.is(selector.uiDropdown) && module.can.useElement('dropdown'); + let isCalendar = $calendar.length > 0 && module.can.useElement('calendar'); + let isErrored = $fieldGroup.hasClass(className.error); if (isErrored) { module.verbose('Resetting error on field', $fieldGroup); $fieldGroup.removeClass(className.error); @@ -686,19 +656,17 @@ reset: function () { $field.each(function (index, el) { - var - $field = $(el), - $element = $field.parent(), - $fieldGroup = $field.closest($group), - $calendar = $field.closest(selector.uiCalendar), - $prompt = $fieldGroup.find(selector.prompt), - defaultValue = $field.data(metadata.defaultValue), - isCheckbox = $field.is(selector.checkbox), - isDropdown = $element.is(selector.uiDropdown) && module.can.useElement('dropdown'), - isCalendar = $calendar.length > 0 && module.can.useElement('calendar'), - isFile = $field.is(selector.file), - isErrored = $fieldGroup.hasClass(className.error) - ; + let $field = $(el); + let $element = $field.parent(); + let $fieldGroup = $field.closest($group); + let $calendar = $field.closest(selector.uiCalendar); + let $prompt = $fieldGroup.find(selector.prompt); + let defaultValue = $field.data(metadata.defaultValue); + let isCheckbox = $field.is(selector.checkbox); + let isDropdown = $element.is(selector.uiDropdown) && module.can.useElement('dropdown'); + let isCalendar = $calendar.length > 0 && module.can.useElement('calendar'); + let isFile = $field.is(selector.file); + let isErrored = $fieldGroup.hasClass(className.error); if (defaultValue === undefined) { return; } @@ -725,14 +693,11 @@ determine: { isValid: function () { - var - allValid = true - ; + let allValid = true; $field.each(function (index, el) { - var $el = $(el), - validation = module.get.validation($el) || {}, - identifier = module.get.identifier(validation, $el) - ; + let $el = $(el); + let validation = module.get.validation($el) || {}; + let identifier = module.get.identifier(validation, $el); if (!module.validate.field(validation, identifier, true)) { allValid = false; } @@ -741,14 +706,12 @@ return allValid; }, isDirty: function (e) { - var formIsDirty = false; + let formIsDirty = false; $field.each(function (index, el) { - var - $el = $(el), - isCheckbox = $el.filter(selector.checkbox).length > 0, - isDirty - ; + let $el = $(el); + let isCheckbox = $el.filter(selector.checkbox).length > 0; + let isDirty; isDirty = isCheckbox ? module.is.checkboxDirty($el) @@ -789,9 +752,7 @@ return String($field.val()).trim() === ''; }, valid: function (field, showErrors) { - var - allValid = true - ; + let allValid = true; if (field) { module.verbose('Checking if field is valid', field); @@ -814,14 +775,14 @@ return !dirty; }, fieldDirty: function ($el) { - var initialValue = $el.data(metadata.defaultValue); + let initialValue = $el.data(metadata.defaultValue); // Explicitly check for undefined/null here as value may be `false`, so ($el.data(dataInitialValue) || '') would not work if (initialValue === undefined || initialValue === null) { initialValue = ''; } else if (Array.isArray(initialValue)) { initialValue = initialValue.toString(); } - var currentValue = $el.val(); + let currentValue = $el.val(); if (currentValue === undefined || currentValue === null) { currentValue = ''; } else if (Array.isArray(currentValue)) { @@ -829,10 +790,10 @@ currentValue = currentValue.toString(); } // Boolean values can be encoded as "true/false" or "True/False" depending on underlying frameworks, so we need a case-insensitive comparison - var boolRegex = /^(true|false)$/i; - var isBoolValue = boolRegex.test(initialValue) && boolRegex.test(currentValue); + let boolRegex = /^(true|false)$/i; + let isBoolValue = boolRegex.test(initialValue) && boolRegex.test(currentValue); if (isBoolValue) { - var regex = new RegExp('^' + initialValue + '$', 'i'); + let regex = new RegExp('^' + initialValue + '$', 'i'); return !regex.test(currentValue); } @@ -840,8 +801,8 @@ return currentValue !== initialValue; }, checkboxDirty: function ($el) { - var initialValue = $el.data(metadata.defaultValue); - var currentValue = $el.is(':checked'); + let initialValue = $el.data(metadata.defaultValue); + let currentValue = $el.is(':checked'); return initialValue !== currentValue; }, @@ -869,22 +830,19 @@ event: { field: { keydown: function (event) { - var - $field = $(this), - key = event.which, - isInput = $field.is(selector.input), - isCheckbox = $field.is(selector.checkbox), - isInDropdown = $field.closest(selector.uiDropdown).length > 0, - keyCode = { - enter: 13, - escape: 27, - } - ; + let $field = $(this); + let key = event.which; + let isInput = $field.is(selector.input); + let isCheckbox = $field.is(selector.checkbox); + let isInDropdown = $field.closest(selector.uiDropdown).length > 0; + let keyCode = { + enter: 13, + escape: 27, + }; if (key === keyCode.escape) { module.verbose('Escape key pressed blurring field'); $field[0] - .blur() - ; + .blur(); } if (!event.ctrlKey && key === keyCode.enter && isInput && !isInDropdown && !isCheckbox) { if (!keyHeldDown) { @@ -902,11 +860,9 @@ event.preventDefault(); }, blur: function (event) { - var - $field = $(this), - validationRules = module.get.validation($field) || {}, - identifier = module.get.identifier(validationRules, $field) - ; + let $field = $(this); + let validationRules = module.get.validation($field) || {}; + let identifier = module.get.identifier(validationRules, $field); if (settings.on === 'blur' || (!$module.hasClass(className.initial) && settings.revalidate)) { module.debug('Revalidating field', $field, validationRules); module.validate.field(validationRules, identifier); @@ -916,11 +872,9 @@ } }, change: function (event) { - var - $field = $(this), - validationRules = module.get.validation($field) || {}, - identifier = module.get.identifier(validationRules, $field) - ; + let $field = $(this); + let validationRules = module.get.validation($field) || {}; + let identifier = module.get.identifier(validationRules, $field); if (settings.on === 'change' || (!$module.hasClass(className.initial) && settings.revalidate)) { clearTimeout(module.timer); module.timer = setTimeout(function () { @@ -970,9 +924,7 @@ return ['file', 'checkbox', 'radio', 'hidden'].indexOf(type) >= 0 || $input.is('select') ? 'change' : 'input'; }, fieldsFromShorthand: function (fields) { - var - fullFields = {} - ; + let fullFields = {}; $.each(fields, function (name, rules) { if (!Array.isArray(rules) && typeof rules === 'object') { fullFields[name] = rules; @@ -989,7 +941,7 @@ } $.each(fullFields[name].rules, function (index, rule) { - var ruleName = module.get.ruleName(rule); + let ruleName = module.get.ruleName(rule); if (ruleName === 'empty') { module.warn('*** DEPRECATED *** : Rule "empty" for field "' + name + '" will be removed in a future version. -> Use "notEmpty" rule instead.'); } @@ -1002,20 +954,18 @@ return validation.identifier || $el.attr('id') || $el.attr('name') || $el.data(metadata.validate); }, prompt: function (rule, field) { - var - ruleName = module.get.ruleName(rule), - ancillary = module.get.ancillaryValue(rule), - $field = module.get.field(field.identifier), - value = $field.val(), - promptCheck = rule.prompt || settings.prompt[ruleName] || settings.text.unspecifiedRule, - prompt = String(isFunction(promptCheck) - ? promptCheck.call($field[0], value) - : promptCheck), - requiresValue = prompt.search('{value}') !== -1, - requiresName = prompt.search('{name}') !== -1, - parts, - suffixPrompt - ; + let ruleName = module.get.ruleName(rule); + let ancillary = module.get.ancillaryValue(rule); + let $field = module.get.field(field.identifier); + let value = $field.val(); + let promptCheck = rule.prompt || settings.prompt[ruleName] || settings.text.unspecifiedRule; + let prompt = String(isFunction(promptCheck) + ? promptCheck.call($field[0], value) + : promptCheck); + let requiresValue = prompt.search('{value}') !== -1; + let requiresName = prompt.search('{name}') !== -1; + let parts; + let suffixPrompt; if (ancillary && ['integer', 'decimal', 'number', 'size'].indexOf(ruleName) >= 0 && ancillary.indexOf('..') >= 0) { parts = ancillary.split('..', 2); if (!rule.prompt && ruleName !== 'size') { @@ -1078,21 +1028,20 @@ }, field: function (identifier, strict, ignoreMissing) { module.verbose('Finding field with identifier', identifier); - identifier = module.escape.string(identifier); - var t; - t = $field.filter('#' + identifier); + let t; + t = $field.filter('#' + CSS.escape(identifier)); if (t.length > 0) { return t; } - t = $field.filter('[name="' + identifier + '"]'); + t = $field.filter('[name="' + CSS.escape(identifier) + '"]'); if (t.length > 0) { return t; } - t = $field.filter('[name="' + identifier + '[]"]'); + t = $field.filter('[name="' + CSS.escape(identifier) + '[]"]'); if (t.length > 0) { return t; } - t = $field.filter('[data-' + metadata.validate + '="' + identifier + '"]'); + t = $field.filter('[data-' + metadata.validate + '="' + CSS.escape(identifier) + '"]'); if (t.length > 0) { return t; } @@ -1103,9 +1052,7 @@ return strict ? $() : $(''); }, fields: function (fields, strict) { - var - $fields = $() - ; + let $fields = $(); $.each(fields, function (index, name) { $fields = $fields.add(module.get.field(name, strict)); }); @@ -1113,21 +1060,18 @@ return $fields; }, fieldLabel: function (identifier, useIdAsFallback) { - var $field = typeof identifier === 'string' - ? module.get.field(identifier) - : identifier, - $label = $field.closest(selector.group).find('label:not(:empty)').eq(0) - ; + let $field = typeof identifier === 'string' + ? module.get.field(identifier) + : identifier; + let $label = $field.closest(selector.group).find('label:not(:empty)').eq(0); return $label.length === 1 ? $label.text() : $field.prop('placeholder') || (useIdAsFallback ? identifier : settings.text.unspecifiedField); }, validation: function ($field) { - var - fieldValidation, - identifier - ; + let fieldValidation; + let identifier; if (!validation) { return false; } @@ -1146,11 +1090,9 @@ return fieldValidation || false; }, value: function (field, strict) { - var - fields = [], - results, - resultKeys - ; + let fields = []; + let results; + let resultKeys; fields.push(field); results = module.get.values.call(element, fields, strict); resultKeys = Object.keys(results); @@ -1158,26 +1100,22 @@ return resultKeys.length > 0 ? results[resultKeys[0]] : undefined; }, values: function (fields, strict) { - var - $fields = Array.isArray(fields) && fields.length > 0 - ? module.get.fields(fields, strict) - : $field, - values = {} - ; + let $fields = Array.isArray(fields) && fields.length > 0 + ? module.get.fields(fields, strict) + : $field; + let values = {}; $fields.each(function (index, field) { - var - $field = $(field), - $calendar = $field.closest(selector.uiCalendar), - name = $field.prop('name') || $field.prop('id'), - value = $field.val(), - isCheckbox = $field.is(selector.checkbox), - isRadio = $field.is(selector.radio), - isMultiple = name.indexOf('[]') !== -1, - isCalendar = $calendar.length > 0 && module.can.useElement('calendar'), - isChecked = isCheckbox - ? $field.is(':checked') - : false - ; + let $field = $(field); + let $calendar = $field.closest(selector.uiCalendar); + let name = $field.prop('name') || $field.prop('id'); + let value = $field.val(); + let isCheckbox = $field.is(selector.checkbox); + let isRadio = $field.is(selector.radio); + let isMultiple = name.indexOf('[]') !== -1; + let isCalendar = $calendar.length > 0 && module.can.useElement('calendar'); + let isChecked = isCheckbox + ? $field.is(':checked') + : false; if (name) { if (isMultiple) { name = name.replace('[]', ''); @@ -1203,7 +1141,7 @@ } else if (isCheckbox) { values[name] = isChecked ? value || true : false; } else if (isCalendar) { - var date = $calendar.calendar('get date'); + let date = $calendar.calendar('get date'); if (date !== null) { switch (settings.dateHandling) { @@ -1218,7 +1156,7 @@ break; } case 'formatter': { - var type = $calendar.calendar('setting', 'type'); + let type = $calendar.calendar('setting', 'type'); switch (type) { case 'date': { @@ -1295,14 +1233,6 @@ }, }, - escape: { - string: function (text) { - text = String(text); - - return text.replace(regExp.escape, '\\$&'); - }, - }, - checkErrors: function (errors, internal) { if (!errors || errors.length === 0) { if (!internal) { @@ -1331,11 +1261,9 @@ rules: [], }; } - var - newValidation = { - rules: [], - } - ; + let newValidation = { + rules: [], + }; if (module.is.shorthandRules(rules)) { rules = Array.isArray(rules) ? rules @@ -1366,18 +1294,15 @@ if (errors === false) { return; } - var - $field = module.get.field(identifier), - $fieldGroup = $field.closest($group), - $prompt = $fieldGroup.children(selector.prompt), - promptExists = $prompt.length > 0, - canTransition = settings.transition && module.can.useElement('transition') - ; + let $field = module.get.field(identifier); + let $fieldGroup = $field.closest($group); + let $prompt = $fieldGroup.children(selector.prompt); + let promptExists = $prompt.length > 0; + let canTransition = settings.transition && module.can.useElement('transition'); module.verbose('Adding field error state', identifier); if (!internal) { $fieldGroup - .addClass(className.error) - ; + .addClass(className.error); } if (settings.inline) { if (promptExists) { @@ -1397,12 +1322,10 @@ $prompt.css('display', 'none'); } $prompt - .appendTo($fieldGroup.filter('.' + className.error)) - ; + .appendTo($fieldGroup.filter('.' + className.error)); } $prompt - .html(settings.templates.prompt(errors)) - ; + .html(settings.templates.prompt(errors)); if (!promptExists) { if (canTransition) { module.verbose('Displaying error with css transition', settings.transition); @@ -1410,8 +1333,7 @@ } else { module.verbose('Displaying error with fallback javascript animation'); $prompt - .fadeIn(settings.duration) - ; + .fadeIn(settings.duration); } } } else { @@ -1425,9 +1347,8 @@ } module.debug('Adding form error messages', errors); module.set.error(); - var customErrors = [], - tempErrors - ; + let customErrors = []; + let tempErrors; if ($.isPlainObject(errors)) { $.each(Object.keys(errors), function (i, id) { if (module.checkErrors(errors[id], true) !== false) { @@ -1450,8 +1371,7 @@ } if (customErrors.length > 0) { $message - .html(settings.templates.error(customErrors)) - ; + .html(settings.templates.error(customErrors)); } }, }, @@ -1469,11 +1389,9 @@ module.determine.isDirty(); }, rule: function (field, rule) { - var - rules = Array.isArray(rule) - ? rule - : [rule] - ; + let rules = Array.isArray(rule) + ? rule + : [rule]; if (validation[field] === undefined || !Array.isArray(validation[field].rules)) { return; } @@ -1495,11 +1413,9 @@ }); }, field: function (field) { - var - fields = Array.isArray(field) - ? field - : [field] - ; + let fields = Array.isArray(field) + ? field + : [field]; $.each(fields, function (index, field) { module.remove.rule(field); }); @@ -1519,14 +1435,11 @@ module.remove.field(fields); }, prompt: function (identifier) { - var - $field = module.get.field(identifier), - $fieldGroup = $field.closest($group), - $prompt = $fieldGroup.children(selector.prompt) - ; + let $field = module.get.field(identifier); + let $fieldGroup = $field.closest($group); + let $prompt = $fieldGroup.children(selector.prompt); $fieldGroup - .removeClass(className.error) - ; + .removeClass(className.error); if (settings.inline && $prompt.is(':visible')) { module.verbose('Removing prompt for field', identifier); if (settings.transition && module.can.useElement('transition')) { @@ -1537,8 +1450,7 @@ $prompt .fadeOut(settings.duration, function () { $prompt.remove(); - }) - ; + }); } } }, @@ -1548,22 +1460,19 @@ success: function () { $module .removeClass(className.error) - .addClass(className.success) - ; + .addClass(className.success); }, defaults: function () { $field.each(function (index, el) { - var - $el = $(el), - $parent = $el.parent(), - isCheckbox = $el.filter(selector.checkbox).length > 0, - isDropdown = ($parent.is(selector.uiDropdown) || $el.is(selector.uiDropdown)) && module.can.useElement('dropdown'), - $calendar = $el.closest(selector.uiCalendar), - isCalendar = $calendar.length > 0 && module.can.useElement('calendar'), - value = isCheckbox - ? $el.is(':checked') - : $el.val() - ; + let $el = $(el); + let $parent = $el.parent(); + let isCheckbox = $el.filter(selector.checkbox).length > 0; + let isDropdown = ($parent.is(selector.uiDropdown) || $el.is(selector.uiDropdown)) && module.can.useElement('dropdown'); + let $calendar = $el.closest(selector.uiCalendar); + let isCalendar = $calendar.length > 0 && module.can.useElement('calendar'); + let value = isCheckbox + ? $el.is(':checked') + : $el.val(); if (isDropdown) { if ($parent.is(selector.uiDropdown)) { $parent.dropdown('save defaults'); @@ -1580,13 +1489,10 @@ error: function () { $module .removeClass(className.success) - .addClass(className.error) - ; + .addClass(className.error); }, value: function (field, value) { - var - fields = {} - ; + let fields = {}; fields[field] = value; return module.set.values.call(element, fields); @@ -1596,25 +1502,23 @@ return; } $.each(fields, function (key, value) { - var - $field = module.get.field(key), - $element = $field.parent(), - $calendar = $field.closest(selector.uiCalendar), - isFile = $field.is(selector.file), - isMultiple = Array.isArray(value), - isCheckbox = $element.is(selector.uiCheckbox) && module.can.useElement('checkbox'), - isDropdown = $element.is(selector.uiDropdown) && module.can.useElement('dropdown'), - isRadio = $field.is(selector.radio) && isCheckbox, - isCalendar = $calendar.length > 0 && module.can.useElement('calendar'), - fieldExists = $field.length > 0, - $multipleField - ; + let $field = module.get.field(key); + let $element = $field.parent(); + let $calendar = $field.closest(selector.uiCalendar); + let isFile = $field.is(selector.file); + let isMultiple = Array.isArray(value); + let isCheckbox = $element.is(selector.uiCheckbox) && module.can.useElement('checkbox'); + let isDropdown = $element.is(selector.uiDropdown) && module.can.useElement('dropdown'); + let isRadio = $field.is(selector.radio) && isCheckbox; + let isCalendar = $calendar.length > 0 && module.can.useElement('calendar'); + let fieldExists = $field.length > 0; + let $multipleField; if (fieldExists) { if (isMultiple && isCheckbox) { module.verbose('Selecting multiple', value, $field); $element.checkbox('uncheck'); $.each(value, function (index, value) { - $multipleField = $field.filter('[value="' + value + '"]'); + $multipleField = $field.filter('[value="' + CSS.escape(value) + '"]'); $element = $multipleField.parent(); if ($multipleField.length > 0) { $element.checkbox('check'); @@ -1622,10 +1526,9 @@ }); } else if (isRadio) { module.verbose('Selecting radio value', value, $field); - $field.filter('[value="' + value + '"]') + $field.filter('[value="' + CSS.escape(value) + '"]') .parent(selector.uiCheckbox) - .checkbox('check') - ; + .checkbox('check'); } else if (isCheckbox) { module.verbose('Setting checkbox value', value, $element); if (value === true || value === 1 || value === 'on') { @@ -1687,20 +1590,18 @@ }); } $field.each(function (_index, el) { - var - $el = $(el), - $elGroup = $el.closest($group), - isCheckbox = $el.filter(selector.checkbox).length > 0, - isRequired = $el.prop('required') || $elGroup.hasClass(className.required) || $elGroup.parent().hasClass(className.required), - isDisabled = $el.is(':disabled') || $elGroup.hasClass(className.disabled) || $elGroup.parent().hasClass(className.disabled), - validation = module.get.validation($el), - hasNotEmptyRule = validation - ? $.grep(validation.rules, function (rule) { - return ['notEmpty', 'checked', 'empty'].indexOf(rule.type) >= 0; - }).length > 0 - : false, - identifier = module.get.identifier(validation, $el) - ; + let $el = $(el); + let $elGroup = $el.closest($group); + let isCheckbox = $el.filter(selector.checkbox).length > 0; + let isRequired = $el.prop('required') || $elGroup.hasClass(className.required) || $elGroup.parent().hasClass(className.required); + let isDisabled = $el.is(':disabled') || $elGroup.hasClass(className.disabled) || $elGroup.parent().hasClass(className.disabled); + let validation = module.get.validation($el); + let hasNotEmptyRule = validation + ? $.grep(validation.rules, function (rule) { + return ['notEmpty', 'checked', 'empty'].indexOf(rule.type) >= 0; + }).length > 0 + : false; + let identifier = module.get.identifier(validation, $el); if (isRequired && !isDisabled && !hasNotEmptyRule && identifier !== undefined) { if (isCheckbox) { module.verbose("Adding 'checked' rule on field", identifier); @@ -1725,7 +1626,7 @@ validate: { form: function (event, ignoreCallbacks) { - var values = module.get.values(); + let values = module.get.values(); // input keydown event will fire submit repeatedly by browser default if (keyHeldDown) { @@ -1756,10 +1657,8 @@ event.stopImmediatePropagation(); } if (settings.errorFocus && ignoreCallbacks !== true) { - var - $focusElement, - hasTabIndex = true - ; + let $focusElement; + let hasTabIndex = true; if (typeof settings.errorFocus === 'string') { $focusElement = $(document).find(settings.errorFocus); hasTabIndex = $focusElement.is('[tabindex]'); @@ -1797,20 +1696,18 @@ return true; } - var - identifier = field.identifier || fieldName, - $field = module.get.field(identifier), - $fieldGroup = $field.closest($group), - $dependsField = field.depends - ? module.get.field(field.depends) - : false, - fieldValid = true, - fieldErrors = [], - isDisabled = $field.filter(':not(:disabled)').length === 0 || $fieldGroup.hasClass(className.disabled) || $fieldGroup.parent().hasClass(className.disabled), - validationMessage = $field[0].validationMessage, - noNativeValidation = field.noNativeValidation || settings.noNativeValidation || $field.filter('[formnovalidate],[novalidate]').length > 0 || $module.filter('[novalidate]').length > 0, - errorLimit - ; + let identifier = field.identifier || fieldName; + let $field = module.get.field(identifier); + let $fieldGroup = $field.closest($group); + let $dependsField = field.depends + ? module.get.field(field.depends) + : false; + let fieldValid = true; + let fieldErrors = []; + let isDisabled = $field.filter(':not(:disabled)').length === 0 || $fieldGroup.hasClass(className.disabled) || $fieldGroup.parent().hasClass(className.disabled); + let validationMessage = $field[0].validationMessage; + let noNativeValidation = field.noNativeValidation || settings.noNativeValidation || $field.filter('[formnovalidate],[novalidate]').length > 0 || $module.filter('[novalidate]').length > 0; + let errorLimit; if (!field.identifier) { module.debug('Using field name as identifier', identifier); field.identifier = identifier; @@ -1835,10 +1732,10 @@ errorLimit = field.errorLimit || settings.errorLimit; $.each(field.rules, function (index, rule) { if (module.has.field(identifier) && (!errorLimit || fieldErrors.length < errorLimit)) { - var invalidFields = module.validate.rule(field, rule, true) || []; + let invalidFields = module.validate.rule(field, rule, true) || []; if (invalidFields.length > 0) { module.debug('Field is invalid', identifier, rule.type); - var fieldError = module.get.prompt(rule, field); + let fieldError = module.get.prompt(rule, field); if (!settings.inline) { if ( // Always allow the first error prompt for new field identifiers @@ -1882,25 +1779,23 @@ // takes validation rule and returns whether field passes rule rule: function (field, rule, internal) { - var - $field = module.get.field(field.identifier), - ancillary = module.get.ancillaryValue(rule), - ruleName = module.get.ruleName(rule), - ruleFunction = settings.rules[ruleName], - invalidFields = [], - isCheckbox = $field.is(selector.checkbox), - isValid = function (field) { - var value = isCheckbox ? $(field).filter(':checked').val() : $(field).val(); - // cast to string avoiding encoding special values - value = value === undefined || value === '' || value === null - ? '' - : ((settings.shouldTrim && rule.shouldTrim !== false) || rule.shouldTrim - ? String(value + '').trim() - : String(value + '')); - - return ruleFunction.call(field, value, ancillary, module); - } - ; + let $field = module.get.field(field.identifier); + let ancillary = module.get.ancillaryValue(rule); + let ruleName = module.get.ruleName(rule); + let ruleFunction = settings.rules[ruleName]; + let invalidFields = []; + let isCheckbox = $field.is(selector.checkbox); + let isValid = function (field) { + let value = isCheckbox ? $(field).filter(':checked').val() : $(field).val(); + // cast to string avoiding encoding special values + value = value === undefined || value === '' || value === null + ? '' + : ((settings.shouldTrim && rule.shouldTrim !== false) || rule.shouldTrim + ? String(value + '').trim() + : String(value + '')); + + return ruleFunction.call(field, value, ancillary, module); + }; if (!isFunction(ruleFunction)) { module.error(error.noRule, ruleName); @@ -1974,11 +1869,9 @@ }, performance: { log: function (message) { - var - currentTime, - executionTime, - previousTime - ; + let currentTime; + let executionTime; + let previousTime; if (settings.performance) { currentTime = Date.now(); previousTime = time || currentTime; @@ -1997,10 +1890,8 @@ }, 500); }, display: function () { - var - title = settings.name + ':', - totalTime = 0 - ; + let title = settings.name + ':'; + let totalTime = 0; time = false; clearTimeout(module.performance.timer); $.each(performance, function (index, data) { @@ -2025,19 +1916,17 @@ }, }, invoke: function (query, passedArguments, context) { - var - object = instance, - maxDepth, - found, - response - ; + let object = instance; + let maxDepth; + let found; + let response; passedArguments = passedArguments || queryArguments; context = context || element; if (typeof query === 'string' && object !== undefined) { query = query.split(/[ .]/); maxDepth = query.length - 1; $.each(query, function (depth, value) { - var camelCaseValue = depth !== maxDepth + let camelCaseValue = depth !== maxDepth ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) : query; if ($.isPlainObject(object[camelCaseValue]) && (depth !== maxDepth)) { @@ -2222,9 +2111,7 @@ // template that produces error message error: function (errors) { - var - html = '