11 lines
No EOL
28 KiB
JavaScript
11 lines
No EOL
28 KiB
JavaScript
/*
|
|
* # Fomantic UI - 2.9.3
|
|
* https://github.com/fomantic/Fomantic-UI
|
|
* https://fomantic-ui.com/
|
|
*
|
|
* Copyright 2023 Contributors
|
|
* Released under the MIT license
|
|
* https://opensource.org/licenses/MIT
|
|
*
|
|
*/
|
|
!function(j,z,$){"use strict";function I(e){return"function"==typeof e&&"number"!=typeof e.nodeType}z=void 0!==z&&z.Math===Math?z:globalThis,j.fn.form=function(V){var A,D=j(this),F=j(z),R=Date.now(),S=[],T=V,L="string"==typeof T,O=[].slice.call(arguments,1);return D.each(function(){var i,f,e,t,m,c,g,p,h,n,u,r,a,l,o,s,d,v=j(this),b=this,y=[],x=!1,k=!1,E=!1,C=["clean","clean"],w={initialize:function(){w.get.settings(),v.addClass(h.initial),L?(void 0===d&&w.instantiate(),w.invoke(T)):(void 0!==d&&(d.invoke("destroy"),w.refresh()),w.verbose("Initializing form validation",v,m),w.bindEvents(),w.set.defaults(),m.autoCheckRequired&&w.set.autoCheck(),w.instantiate())},instantiate:function(){w.verbose("Storing instance of module",w),d=w,v.data(a,w)},destroy:function(){w.verbose("Destroying previous module",d),w.removeEvents(),v.removeData(a)},refresh:function(){w.verbose("Refreshing selector cache"),i=v.find(p.field),f=v.find(p.group),e=v.find(p.message),v.find(p.prompt),t=v.find(p.submit),v.find(p.clear),v.find(p.reset)},refreshEvents:function(){w.removeEvents(),w.bindEvents()},submit:function(e){w.verbose("Submitting form",v),k=!0,v.trigger("submit"),e&&e.preventDefault()},attachEvents:function(e,t){t=t||"submit",j(e).on("click"+l,function(e){w[t](),e.preventDefault()}),o=e,s=t},bindEvents:function(){w.verbose("Attaching form events"),v.on("submit"+l,w.validate.form).on("blur"+l,p.field,w.event.field.blur).on("click"+l,p.submit,w.submit).on("click"+l,p.reset,w.reset).on("click"+l,p.clear,w.clear),i.on("invalid"+l,w.event.field.invalid),m.keyboardShortcuts&&v.on("keydown"+l,p.field,w.event.field.keydown),i.each(function(e,t){var t=j(t),n=t.prop("type"),n=w.get.changeEvent(n,t);t.on(n+l,w.event.field.change)}),m.preventLeaving&&F.on("beforeunload"+l,w.event.beforeUnload),i.on("change"+l+" click"+l+" keyup"+l+" keydown"+l+" blur"+l,function(e){w.determine.isDirty()}),v.on("dirty"+l,function(e){m.onDirty.call()}),v.on("clean"+l,function(e){m.onClean.call()}),o&&w.attachEvents(o,s)},clear:function(){i.each(function(e,t){var t=j(t),n=t.parent(),r=t.closest(f),i=r.find(p.prompt),a=t.closest(p.uiCalendar),o=t.data(g.defaultValue)||"",l=t.is(p.checkbox),s=n.is(p.uiDropdown)&&w.can.useElement("dropdown"),u=0<a.length&&w.can.useElement("calendar");r.hasClass(h.error)&&(w.verbose("Resetting error on field",r),r.removeClass(h.error),i.remove()),s?(w.verbose("Resetting dropdown value",n,o),n.dropdown("clear",!0)):l?t.prop("checked",!1):u?a.calendar("clear"):(w.verbose("Resetting field value",t,o),t.val(""))}),w.remove.states()},reset:function(){i.each(function(e,t){var t=j(t),n=t.parent(),r=t.closest(f),i=t.closest(p.uiCalendar),a=r.find(p.prompt),o=t.data(g.defaultValue),l=t.is(p.checkbox),s=n.is(p.uiDropdown)&&w.can.useElement("dropdown"),u=0<i.length&&w.can.useElement("calendar"),c=t.is(p.file),d=r.hasClass(h.error);void 0!==o&&(d&&(w.verbose("Resetting error on field",r),r.removeClass(h.error),a.remove()),s?(w.verbose("Resetting dropdown value",n,o),n.dropdown("restore defaults",!0)):l?(w.verbose("Resetting checkbox value",t,o),t.prop("checked",o)):u?i.calendar("set date",o):(w.verbose("Resetting field value",t,o),t.val(c?"":o)))}),w.remove.states()},determine:{isValid:function(){var r=!0;return i.each(function(e,t){var t=j(t),n=w.get.validation(t)||{},t=w.get.identifier(n,t);w.validate.field(n,t,!0)||(r=!1)}),r},isDirty:function(e){var r=!1;i.each(function(e,t){var t=j(t),n=0<t.filter(p.checkbox).length?w.is.checkboxDirty(t):w.is.fieldDirty(t);t.data(m.metadata.isDirty,n),r=r||n}),r?w.set.dirty():w.set.clean()}},is:{bracketedRule:function(e){return e.type&&e.type.match(m.regExp.bracket)},shorthandRules:function(e){return"string"==typeof e||Array.isArray(e)},empty:function(e){return!e||0===e.length||(e.is(p.checkbox)?!e.is(":checked"):w.is.blank(e))},blank:function(e){return""===String(e.val()).trim()},valid:function(e,n){var r=!0;return e?(w.verbose("Checking if field is valid",e),w.validate.field(c[e],e,!!n)):(w.verbose("Checking if form is valid"),j.each(c,function(e,t){w.is.valid(e,n)||(r=!1)}),r)},dirty:function(){return E},clean:function(){return!E},fieldDirty:function(e){var t=e.data(g.defaultValue),e=(null==t?t="":Array.isArray(t)&&(t=t.toString()),e.val()),n=(null==e?e="":Array.isArray(e)&&(e=e.toString()),/^(true|false)$/i);return n.test(t)&&n.test(e)?!new RegExp("^"+t+"$","i").test(e):e!==t},checkboxDirty:function(e){return e.data(g.defaultValue)!==e.is(":checked")},justDirty:function(){return"dirty"===C[0]},justClean:function(){return"clean"===C[0]}},removeEvents:function(){v.off(l),i.off(l),t.off(l),m.preventLeaving&&F.off(l),o&&(j(o).off(l),o=void 0)},event:{field:{keydown:function(e){var t=j(this),n=e.which,r=t.is(p.input),i=t.is(p.checkbox),a=0<t.closest(p.uiDropdown).length,o=13;n===27&&(w.verbose("Escape key pressed blurring field"),t[0].blur()),e.ctrlKey||n!==o||!r||a||i||(x||(t.one("keyup"+l,w.event.field.keyup),w.submit(e),w.debug("Enter pressed on input submitting form")),x=!0)},keyup:function(){x=!1},invalid:function(e){e.preventDefault()},blur:function(e){var t=j(this),n=w.get.validation(t)||{},r=w.get.identifier(n,t);("blur"===m.on||!v.hasClass(h.initial)&&m.revalidate)&&(w.debug("Revalidating field",t,n),w.validate.field(n,r),m.inline||w.validate.form(!1,!0))},change:function(e){var t=j(this),n=w.get.validation(t)||{},r=w.get.identifier(n,t);("change"===m.on||!v.hasClass(h.initial)&&m.revalidate)&&(clearTimeout(w.timer),w.timer=setTimeout(function(){w.debug("Revalidating field",t,n),w.validate.field(n,r),m.inline||w.validate.form(!1,!0)},m.delay))}},beforeUnload:function(e){if(w.is.dirty()&&!k)return(e=e||z.event)&&(e.returnValue=m.text.leavingMessage),m.text.leavingMessage}},get:{ancillaryValue:function(e){return!(!e.type||!e.value&&!w.is.bracketedRule(e))&&(void 0!==e.value?e.value:e.type.match(m.regExp.bracket)[1]+"")},ruleName:function(e){return w.is.bracketedRule(e)?e.type.replace(e.type.match(m.regExp.bracket)[0],""):e.type},changeEvent:function(e,t){return 0<=["file","checkbox","radio","hidden"].indexOf(e)||t.is("select")?"change":"input"},fieldsFromShorthand:function(e){var r={};return j.each(e,function(n,e){Array.isArray(e)||"object"!=typeof e?("string"==typeof e&&(e=[e]),r[n]={rules:[]},j.each(e,function(e,t){r[n].rules.push({type:t})})):r[n]=e}),r},identifier:function(e,t){return e.identifier||t.attr("id")||t.attr("name")||t.data(g.validate)},prompt:function(e,t){var n,r=w.get.ruleName(e),i=w.get.ancillaryValue(e),a=w.get.field(t.identifier),o=a.val(),o=I(e.prompt)?e.prompt(o):e.prompt||m.prompt[r]||m.text.unspecifiedRule,l=-1!==o.search("{value}"),s=-1!==o.search("{name}");return i&&0<=["integer","decimal","number","size"].indexOf(r)&&0<=i.indexOf("..")&&(n=i.split("..",2),e.prompt||"size"===r||(o+=(""===n[0]?m.prompt.maxValue.replace(/{ruleValue}/g,"{max}"):""===n[1]?m.prompt.minValue.replace(/{ruleValue}/g,"{min}"):m.prompt.range).replace(/{name}/g," "+m.text.and)),o=(o=o.replace(/{min}/g,n[0])).replace(/{max}/g,n[1])),i&&0<=["match","different"].indexOf(r)&&(o=o.replace(/{ruleValue}/g,w.get.fieldLabel(i,!0))),l&&(o=o.replace(/{value}/g,a.val())),o=(o=(o=s?o.replace(/{name}/g,w.get.fieldLabel(a)):o).replace(/{identifier}/g,t.identifier)).replace(/{ruleValue}/g,i),e.prompt||w.verbose("Using default validation prompt for type",o,r),o},settings:function(){j.isPlainObject(V)?(V.fields&&(V.fields=w.get.fieldsFromShorthand(V.fields)),m=j.extend(!0,{},j.fn.form.settings,V),c=j.extend(!0,{},j.fn.form.settings.defaults,m.fields),w.verbose("Extending settings",c,m)):(m=j.extend(!0,{},j.fn.form.settings),c=j.extend(!0,{},j.fn.form.settings.defaults),w.verbose("Using default form validation",c,m)),r=m.namespace,g=m.metadata,p=m.selector,h=m.className,n=m.regExp,u=m.error,a="module-"+r,l="."+r,((d=v.data(a))||w).refresh()},field:function(e,t){var n;return w.verbose("Finding field with identifier",e),e=w.escape.string(e),0<(n=i.filter("#"+e)).length||0<(n=i.filter('[name="'+e+'"]')).length||0<(n=i.filter('[name="'+e+'[]"]')).length||0<(n=i.filter("[data-"+g.validate+'="'+e+'"]')).length?n:(w.error(u.noField.replace("{identifier}",e)),t?j():j("<input/>"))},fields:function(e,n){var r=j();return j.each(e,function(e,t){r=r.add(w.get.field(t,n))}),r},fieldLabel:function(e,t){var n="string"==typeof e?w.get.field(e):e,r=n.closest(p.group).find("label:not(:empty)").eq(0);return 1===r.length?r.text():n.prop("placeholder")||(t?e:m.text.unspecifiedField)},validation:function(r){var i,a;return!!c&&(j.each(c,function(e,n){a=n.identifier||e,j.each(w.get.field(a),function(e,t){if(t==r[0])return n.identifier=a,i=n,!1})}),i||!1)},value:function(e,t){var n=[];return n.push(e),e=w.get.values.call(b,n,t),0<(n=Object.keys(e)).length?e[n[0]]:void 0},values:function(e,t){var e=Array.isArray(e)&&0<e.length?w.get.fields(e,t):i,d={};return e.each(function(e,t){var t=j(t),n=t.closest(p.uiCalendar),r=t.prop("name"),i=t.val(),a=t.is(p.checkbox),o=t.is(p.radio),l=-1!==r.indexOf("[]"),s=0<n.length&&w.can.useElement("calendar"),t=!!a&&t.is(":checked");if(r)if(l)r=r.replace("[]",""),d[r]||(d[r]=[]),a?t?d[r].push(i||!0):d[r].push(!1):d[r].push(i);else if(o)void 0!==d[r]&&!1!==d[r]||(d[r]=!!t&&(i||!0));else if(a)d[r]=!!t&&(i||!0);else if(s){var u=n.calendar("get date");if(null!==u)switch(m.dateHandling){case"date":d[r]=u;break;case"input":d[r]=n.calendar("get input date");break;case"formatter":var c=n.calendar("setting","type");switch(c){case"date":d[r]=m.formatter.date(u);break;case"datetime":d[r]=m.formatter.datetime(u);break;case"time":d[r]=m.formatter.time(u);break;case"month":d[r]=m.formatter.month(u);break;case"year":d[r]=m.formatter.year(u);break;default:w.debug("Wrong calendar mode",n,c),d[r]=""}}else d[r]=""}else d[r]=i}),d},dirtyFields:function(){return i.filter(function(e,t){return j(t).data(g.isDirty)})}},has:{field:function(e){return w.verbose("Checking for existence of a field with identifier",e),0<w.get.field(e,!0).length}},can:{useElement:function(e){return void 0!==j.fn[e]||(w.error(u.noElement.replace("{element}",e)),!1)}},escape:{string:function(e){return(e=String(e)).replace(n.escape,"\\$&")}},checkErrors:function(e,t){return e&&0!==e.length?!t&&"string"==typeof e?[e]:e:(t||w.error(m.error.noErrorMessage),!1)},add:{rule:function(e,t){w.add.field(e,t)},field:function(n,e){void 0!==c[n]&&void 0!==c[n].rules||(c[n]={rules:[]});var r={rules:[]};w.is.shorthandRules(e)?(e=Array.isArray(e)?e:[e],j.each(e,function(e,t){r.rules.push({type:t})})):r.rules=e.rules,j.each(r.rules,function(e,t){0===j.grep(c[n].rules,function(e){return e.type===t.type}).length&&c[n].rules.push(t)}),w.debug("Adding rules",r.rules,c),w.refreshEvents()},fields:function(e){c=j.extend(!0,{},c,w.get.fieldsFromShorthand(e)),w.refreshEvents()},prompt:function(e,t,n){var r,i,a,o;!1!==(t=w.checkErrors(t))&&(a=0<(i=(r=w.get.field(e).closest(f)).children(p.prompt)).length,o=m.transition&&w.can.useElement("transition"),w.verbose("Adding field error state",e),n||r.addClass(h.error),m.inline?(a&&(o?i.transition("is animating")&&i.transition("stop all"):i.is(":animated")&&i.stop(!0,!0),a=0<(i=r.children(p.prompt)).length),a||(i=j("<div/>").addClass(h.label),o||i.css("display","none"),i.appendTo(r)),i.html(m.templates.prompt(t)),a||(o?(w.verbose("Displaying error with css transition",m.transition),i.transition(m.transition+" in",m.duration)):(w.verbose("Displaying error with fallback javascript animation"),i.fadeIn(m.duration)))):w.verbose("Inline errors are disabled, no inline error added",e))},errors:function(t){var r,i;!1!==(t=w.checkErrors(t))&&(w.debug("Adding form error messages",t),w.set.error(),r=[],j.isPlainObject(t)?j.each(Object.keys(t),function(e,n){!1!==w.checkErrors(t[n],!0)&&(m.inline?w.add.prompt(n,t[n]):!1!==(i=w.checkErrors(t[n]))&&j.each(i,function(e,t){r.push(m.prompt.addErrors.replace(/{name}/g,w.get.fieldLabel(n)).replace(/{error}/g,t))}))}):r=t,0<r.length&&e.html(m.templates.error(r)))}},remove:{errors:function(){w.debug("Removing form error messages"),e.empty()},states:function(){v.removeClass(h.error).removeClass(h.success).addClass(h.initial),m.inline||w.remove.errors(),w.determine.isDirty()},rule:function(n,e){var r=Array.isArray(e)?e:[e];if(void 0!==c[n]&&Array.isArray(c[n].rules))return void 0===e?(w.debug("Removed all rules"),void(w.has.field(n)?c[n].rules=[]:delete c[n])):void j.each(c[n].rules,function(e,t){t&&-1!==r.indexOf(t.type)&&(w.debug("Removed rule",t.type),c[n].rules.splice(e,1))})},field:function(e){e=Array.isArray(e)?e:[e];j.each(e,function(e,t){w.remove.rule(t)}),w.refreshEvents()},rules:function(e,n){Array.isArray(e)?j.each(e,function(e,t){w.remove.rule(t,n)}):w.remove.rule(e,n)},fields:function(e){w.remove.field(e)},prompt:function(e){var t=w.get.field(e).closest(f),n=t.children(p.prompt);t.removeClass(h.error),m.inline&&n.is(":visible")&&(w.verbose("Removing prompt for field",e),m.transition&&w.can.useElement("transition")?n.transition(m.transition+" out",m.duration,function(){n.remove()}):n.fadeOut(m.duration,function(){n.remove()}))}},set:{success:function(){v.removeClass(h.error).addClass(h.success)},defaults:function(){i.each(function(e,t){var t=j(t),n=t.parent(),r=0<t.filter(p.checkbox).length,i=(n.is(p.uiDropdown)||t.is(p.uiDropdown))&&w.can.useElement("dropdown"),a=t.closest(p.uiCalendar),o=0<a.length&&w.can.useElement("calendar"),r=r?t.is(":checked"):t.val();i?(n.is(p.uiDropdown)?n:t).dropdown("save defaults"):o&&a.calendar("refresh"),t.data(g.defaultValue,r),t.data(g.isDirty,!1)})},error:function(){v.removeClass(h.success).addClass(h.error)},value:function(e,t){var n={};return n[e]=t,w.set.values.call(b,n)},values:function(e){j.isEmptyObject(e)||j.each(e,function(e,t){var n,r=w.get.field(e),i=r.parent(),e=r.closest(p.uiCalendar),a=r.is(p.file),o=Array.isArray(t),l=i.is(p.uiCheckbox)&&w.can.useElement("checkbox"),s=i.is(p.uiDropdown)&&w.can.useElement("dropdown"),u=r.is(p.radio)&&l,c=0<e.length&&w.can.useElement("calendar");0<r.length&&(o&&l?(w.verbose("Selecting multiple",t,r),i.checkbox("uncheck"),j.each(t,function(e,t){n=r.filter('[value="'+t+'"]'),i=n.parent(),0<n.length&&i.checkbox("check")})):u?(w.verbose("Selecting radio value",t,r),r.filter('[value="'+t+'"]').parent(p.uiCheckbox).checkbox("check")):l?(w.verbose("Setting checkbox value",t,i),!0===t||1===t||"on"===t?i.checkbox("check"):i.checkbox("uncheck"),"string"==typeof t&&r.val(t)):s?(w.verbose("Setting dropdown value",t,i),i.dropdown("set selected",t)):c?e.calendar("set date",t):(w.verbose("Setting field value",t,r),r.val(a?"":t)))})},dirty:function(){w.verbose("Setting state dirty"),E=!0,C[0]=C[1],C[1]="dirty",w.is.justClean()&&v.trigger("dirty")},clean:function(){w.verbose("Setting state clean"),E=!1,C[0]=C[1],C[1]="clean",w.is.justDirty()&&v.trigger("clean")},asClean:function(){w.set.defaults(),w.set.clean()},asDirty:function(){w.set.defaults(),w.set.dirty()},autoCheck:function(){w.debug("Enabling auto check on required fields"),c&&j.each(c,function(e){w.has.field(e)||(w.verbose("Field not found, removing from validation",e),w.remove.field(e))}),i.each(function(e,t){var t=j(t),n=t.closest(f),r=0<t.filter(p.checkbox).length,i=t.prop("required")||n.hasClass(h.required)||n.parent().hasClass(h.required),n=t.is(":disabled")||n.hasClass(h.disabled)||n.parent().hasClass(h.disabled),a=w.get.validation(t),o=!!a&&0!==j.grep(a.rules,function(e){return"empty"===e.type}),a=w.get.identifier(a,t);!i||n||o||void 0===a||(r?(w.verbose("Adding 'checked' rule on field",a),w.add.rule(a,"checked")):(w.verbose("Adding 'empty' rule on field",a),w.add.rule(a,"empty")))})},optional:function(n,r){r=!1!==r,j.each(c,function(e,t){n!==e&&n!==t.identifier||(t.optional=r)})}},validate:{form:function(e,t){var n,r=w.get.values();if(x)return!1;if(v.removeClass(h.initial),y=[],w.determine.isValid()){if(w.debug("Form has no validation errors, submitting"),w.set.success(),m.inline||w.remove.errors(),!0!==t)return m.onSuccess.call(b,e,r)}else if(w.debug("Form has errors"),k=!1,w.set.error(),m.inline||w.add.errors(y),e&&void 0!==v.data("moduleApi")&&e.stopImmediatePropagation(),m.errorFocus&&!0!==t&&(e=!0,"string"==typeof m.errorFocus?(e=(n=j($).find(m.errorFocus)).is("[tabindex]"))||n.attr("tabindex",-1):n=f.filter("."+h.error).first().find(p.field),n.trigger("focus"),e||n.removeAttr("tabindex")),!0!==t)return m.onFailure.call(b,y,r)},field:function(r,e,i){if(i=void 0===i||i,"string"==typeof r&&(w.verbose("Validating field",r),r=c[e=r]),!r)return w.debug("Unable to find field validation. Skipping",e),!0;var a,o=r.identifier||e,e=w.get.field(o),t=!!r.depends&&w.get.field(r.depends),l=!0,s=[],n=0===e.filter(":not(:disabled)").length,u=e[0].validationMessage;return r.identifier||(w.debug("Using field name as identifier",o),r.identifier=o),u?(w.debug("Field is natively invalid",o),s.push(u),l=!1,i&&e.closest(f).addClass(h.error)):i&&e.closest(f).removeClass(h.error),n?w.debug("Field is disabled. Skipping",o):r.optional&&w.is.blank(e)?w.debug("Field is optional and blank. Skipping",o):r.depends&&w.is.empty(t)?w.debug("Field depends on another value that is not present or empty. Skipping",t):void 0!==r.rules&&(a=r.errorLimit||m.errorLimit,j.each(r.rules,function(e,t){var n;w.has.field(o)&&(!a||s.length<a)&&0<(n=w.validate.rule(r,t,!0)||[]).length&&(w.debug("Field is invalid",o,t.type),s.push(w.get.prompt(t,r)),l=!1,i&&j(n).closest(f).addClass(h.error))})),l?(i&&(w.remove.prompt(o),m.onValid.call(e)),!0):(i&&(y=y.concat(s),w.add.prompt(o,s,!0),m.onInvalid.call(e,s)),!1)},rule:function(e,n,t){function r(e){var t=void 0===(t=(s?j(e).filter(":checked"):j(e)).val())||""===t||null===t?"":m.shouldTrim&&!1!==n.shouldTrim||n.shouldTrim?String(t+"").trim():String(t+"");return o.call(e,t,i,w)}var e=w.get.field(e.identifier),i=w.get.ancillaryValue(n),a=w.get.ruleName(n),o=m.rules[a],l=[],s=e.is(p.checkbox);if(I(o))return s?r(e)||(l=e):j.each(e,function(e,t){r(t)||l.push(t)}),t?l:0===l.length;w.error(u.noRule,a)}},setting:function(e,t){if(j.isPlainObject(e))j.extend(!0,m,e);else{if(void 0===t)return m[e];m[e]=t}},internal:function(e,t){if(j.isPlainObject(e))j.extend(!0,w,e);else{if(void 0===t)return w[e];w[e]=t}},debug:function(){!m.silent&&m.debug&&(m.performance?w.performance.log(arguments):(w.debug=Function.prototype.bind.call(console.info,console,m.name+":"),w.debug.apply(console,arguments)))},verbose:function(){!m.silent&&m.verbose&&m.debug&&(m.performance?w.performance.log(arguments):(w.verbose=Function.prototype.bind.call(console.info,console,m.name+":"),w.verbose.apply(console,arguments)))},error:function(){m.silent||(w.error=Function.prototype.bind.call(console.error,console,m.name+":"),w.error.apply(console,arguments))},performance:{log:function(e){var t,n;m.performance&&(n=(t=Date.now())-(R||t),R=t,S.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:b,"Execution Time":n})),clearTimeout(w.performance.timer),w.performance.timer=setTimeout(function(){w.performance.display()},500)},display:function(){var e=m.name+":",n=0;R=!1,clearTimeout(w.performance.timer),j.each(S,function(e,t){n+=t["Execution Time"]}),e+=" "+n+"ms",1<D.length&&(e+=" ("+D.length+")"),0<S.length&&(console.groupCollapsed(e),console.table?console.table(S):j.each(S,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),S=[]}},invoke:function(r,e,t){var i,a,n,o=d;return e=e||O,t=t||b,"string"==typeof r&&void 0!==o&&(r=r.split(/[ .]/),i=r.length-1,j.each(r,function(e,t){var n=e!==i?t+r[e+1].charAt(0).toUpperCase()+r[e+1].slice(1):r;if(j.isPlainObject(o[n])&&e!==i)o=o[n];else{if(void 0!==o[n])return a=o[n],!1;{if(!j.isPlainObject(o[t])||e===i)return void 0!==o[t]?a=o[t]:w.error(u.method,r),!1;o=o[t]}}})),I(a)?n=a.apply(t,e):void 0!==a&&(n=a),Array.isArray(A)?A.push(n):void 0!==A?A=[A,n]:void 0!==n&&(A=n),a}};w.initialize()}),void 0!==A?A:this},j.fn.form.settings={name:"Form",namespace:"form",debug:!1,verbose:!1,performance:!0,fields:!1,keyboardShortcuts:!0,on:"submit",inline:!1,delay:200,revalidate:!0,shouldTrim:!0,transition:"scale",duration:200,autoCheckRequired:!1,preventLeaving:!1,errorFocus:!0,dateHandling:"date",errorLimit:0,onValid:function(){},onInvalid:function(){},onSuccess:function(){return!0},onFailure:function(){return!1},onDirty:function(){},onClean:function(){},metadata:{defaultValue:"default",validate:"validate",isDirty:"isDirty"},regExp:{htmlID:/^[A-Za-z][\w.:-]*$/g,bracket:/\[(.*)]/i,decimal:/^\d+\.?\d*$/,email:/^[\w!#$%&'*+./=?^`{|}~-]+@[\da-z]([\da-z-]*[\da-z])?(\.[\da-z]([\da-z-]*[\da-z])?)*$/i,escape:/[$()*+,./:=?@[\\\]^{|}-]/g,flags:/^\/(.*)\/(.*)?/,integer:/^-?\d+$/,number:/^-?\d*(\.\d+)?$/,url:/(https?:\/\/(?:www\.|(?!www))[^\s.]+\.\S{2,}|www\.\S+\.\S{2,})/i},text:{and:"and",unspecifiedRule:"Please enter a valid value",unspecifiedField:"This field",leavingMessage:"There are unsaved changes on this page which will be discarded if you continue."},prompt:{range:"{name} must be in a range from {min} to {max}",maxValue:"{name} must have a maximum value of {ruleValue}",minValue:"{name} must have a minimum value of {ruleValue}",empty:"{name} must have a value",checked:"{name} must be checked",email:"{name} must be a valid e-mail",url:"{name} must be a valid url",regExp:"{name} is not formatted correctly",integer:"{name} must be an integer",decimal:"{name} must be a decimal number",number:"{name} must be set to a number",is:'{name} must be "{ruleValue}"',isExactly:'{name} must be exactly "{ruleValue}"',not:'{name} cannot be set to "{ruleValue}"',notExactly:'{name} cannot be set to exactly "{ruleValue}"',contains:'{name} must contain "{ruleValue}"',containsExactly:'{name} must contain exactly "{ruleValue}"',doesntContain:'{name} cannot contain "{ruleValue}"',doesntContainExactly:'{name} cannot contain exactly "{ruleValue}"',minLength:"{name} must be at least {ruleValue} characters",exactLength:"{name} must be exactly {ruleValue} characters",maxLength:"{name} cannot be longer than {ruleValue} characters",size:"{name} must have a length between {min} and {max} characters",match:"{name} must match {ruleValue} field",different:"{name} must have a different value than {ruleValue} field",creditCard:"{name} must be a valid credit card number",minCount:"{name} must have at least {ruleValue} choices",exactCount:"{name} must have exactly {ruleValue} choices",maxCount:"{name} must have {ruleValue} or less choices",addErrors:"{name}: {error}"},selector:{checkbox:'input[type="checkbox"], input[type="radio"]',clear:".clear",field:'input:not(.search):not([type="reset"]):not([type="button"]):not([type="submit"]), textarea, select',file:'input[type="file"]',group:".field",input:"input",message:".error.message",prompt:".prompt.label",radio:'input[type="radio"]',reset:'.reset:not([type="reset"])',submit:'.submit:not([type="submit"])',uiCheckbox:".ui.checkbox",uiDropdown:".ui.dropdown",uiCalendar:".ui.calendar"},className:{initial:"initial",error:"error",label:"ui basic red pointing prompt label",pressed:"down",success:"success",required:"required",disabled:"disabled"},error:{method:"The method you called is not defined.",noRule:"There is no rule matching the one you specified",noField:"Field identifier {identifier} not found",noElement:"This module requires ui {element}",noErrorMessage:"No error message provided"},templates:{error:function(e){var n='<ul class="list">';return j.each(e,function(e,t){n+="<li>"+t+"</li>"}),n+="</ul>"},prompt:function(e){if(1===e.length)return e[0];var n='<ul class="ui list">';return j.each(e,function(e,t){n+="<li>"+t+"</li>"}),n+="</ul>"}},formatter:{date:function(e){return Intl.DateTimeFormat("en-GB").format(e)},datetime:function(e){return Intl.DateTimeFormat("en-GB",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(e)},time:function(e){return Intl.DateTimeFormat("en-GB",{hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(e)},month:function(e){return Intl.DateTimeFormat("en-GB",{month:"2-digit",year:"numeric"}).format(e)},year:function(e){return Intl.DateTimeFormat("en-GB",{year:"numeric"}).format(e)}},rules:{empty:function(e){return!(void 0===e||""===e||Array.isArray(e)&&0===e.length)},checked:function(){return 0<j(this).filter(":checked").length},email:function(e){return j.fn.form.settings.regExp.email.test(e)},url:function(e){return j.fn.form.settings.regExp.url.test(e)},regExp:function(e,t){if(t instanceof RegExp)return e.match(t);var n,r=t.match(j.fn.form.settings.regExp.flags);return r&&(t=2<=r.length?r[1]:t,n=3<=r.length?r[2]:""),e.match(new RegExp(t,n))},minValue:function(e,t){return j.fn.form.settings.rules.range(e,t+"..","number")},maxValue:function(e,t){return j.fn.form.settings.rules.range(e,".."+t,"number")},integer:function(e,t){return j.fn.form.settings.rules.range(e,t,"integer")},range:function(e,t,n,r){var i,a;return(n="string"==typeof n?j.fn.form.settings.regExp[n]:n)instanceof RegExp||(n=j.fn.form.settings.regExp.integer),t&&-1===["",".."].indexOf(t)&&(-1===t.indexOf("..")?n.test(t)&&(a=i=+t):(t=t.split("..",2),n.test(t[0])&&(i=+t[0]),n.test(t[1])&&(a=+t[1]))),r&&(e=e.length),n.test(e)&&(void 0===i||i<=e)&&(void 0===a||e<=a)},decimal:function(e,t){return j.fn.form.settings.rules.range(e,t,"decimal")},number:function(e,t){return j.fn.form.settings.rules.range(e,t,"number")},is:function(e,t){return t="string"==typeof t?t.toLowerCase():t,(e="string"==typeof e?e.toLowerCase():e)==t},isExactly:function(e,t){return e==t},not:function(e,t){return(e="string"==typeof e?e.toLowerCase():e)!=(t="string"==typeof t?t.toLowerCase():t)},notExactly:function(e,t){return e!=t},contains:function(e,t){return t=t.replace(j.fn.form.settings.regExp.escape,"\\$&"),-1!==e.search(new RegExp(t,"i"))},containsExactly:function(e,t){return t=t.replace(j.fn.form.settings.regExp.escape,"\\$&"),-1!==e.search(new RegExp(t))},doesntContain:function(e,t){return t=t.replace(j.fn.form.settings.regExp.escape,"\\$&"),-1===e.search(new RegExp(t,"i"))},doesntContainExactly:function(e,t){return t=t.replace(j.fn.form.settings.regExp.escape,"\\$&"),-1===e.search(new RegExp(t))},minLength:function(e,t){return j.fn.form.settings.rules.range(e,t+"..","integer",!0)},exactLength:function(e,t){return j.fn.form.settings.rules.range(e,t+".."+t,"integer",!0)},maxLength:function(e,t){return j.fn.form.settings.rules.range(e,".."+t,"integer",!0)},size:function(e,t){return j.fn.form.settings.rules.range(e,t,"integer",!0)},match:function(e,t,n){n=n.get.value(t,!0);return void 0!==n&&e.toString()===n.toString()},different:function(e,t,n){n=n.get.value(t,!0);return void 0!==n&&e.toString()!==n.toString()},creditCard:function(n,e){var r,i={visa:{pattern:/^4/,length:[16]},amex:{pattern:/^3[47]/,length:[15]},mastercard:{pattern:/^5[1-5]/,length:[16]},discover:{pattern:/^(6011|622(12[6-9]|1[3-9]\d|[2-8]\d{2}|9[01]\d|92[0-5]|64[4-9])|65)/,length:[16]},unionPay:{pattern:/^(62|88)/,length:[16,17,18,19]},jcb:{pattern:/^35(2[89]|[3-8]\d)/,length:[16]},maestro:{pattern:/^(5018|5020|5038|6304|6759|676[1-3])/,length:[12,13,14,15,16,17,18,19]},dinersClub:{pattern:/^(30[0-5]|^36)/,length:[14]},laser:{pattern:/^(6304|670[69]|6771)/,length:[16,17,18,19]},visaElectron:{pattern:/^(4026|417500|4508|4844|491(3|7))/,length:[16]}},a=!1,e="string"==typeof e&&e.split(",");if("string"==typeof n&&0!==n.length){if(n=n.replace(/[\s-]/g,""),e&&(j.each(e,function(e,t){(r=i[t])&&0<(r={length:-1!==j.inArray(n.length,r.length),pattern:-1!==n.search(r.pattern)}).length&&r.pattern&&(a=!0)}),!a))return!1;if((e={number:-1!==j.inArray(n.length,i.unionPay.length),pattern:-1!==n.search(i.unionPay.pattern)}).number&&e.pattern)return!0;for(var t=n.length,o=0,l=[[0,1,2,3,4,5,6,7,8,9],[0,2,4,6,8,1,3,5,7,9]],s=0;t--;)s+=l[o][parseInt(n.charAt(t),10)],o^=1;return s%10==0&&0<s}},minCount:function(e,t){return 0===(t=Number(t))||(1===t?""!==e:e.split(",").length>=t)},exactCount:function(e,t){return 0===(t=Number(t))?""===e:1===t?""!==e&&-1===e.search(","):e.split(",").length===t},maxCount:function(e,t){return 0!==(t=Number(t))&&(1===t?-1===e.search(","):e.split(",").length<=t)}}}}(jQuery,window,document); |