{"version":3,"sources":["validate-group.js"],"names":["$","hideValidationSummary","onLoad","arguments","length","undefined","document","querySelectorAll","forEach","form","addEventListener","e","_e$detail","detail","trigger","closest","validateGroup","group","$form","ignore","isValid","validate","settings","replace","valid","i","el","data","concat","target"],"mappings":"OAAAA,MAAA,eACA,yBACAC,qBAAA,KAAA,WAMA,SAAAC,UAAA,EAAAC,UAAAC,QAAAC,KAAAA,IAAAF,UAAA,GAAAA,UAAA,GAAAG,UACAC,iBAAA,MAAA,EAAAC,QAAA,SAAAC,GACAA,EAAAC,iBAAA,UAAA,SAAAC,GAAA,IAAAC,EAGA,OAAAA,EAAAD,EAAAE,SAAAD,EAAAE,SAAA,YAAA,OAAAH,EAAAE,OAAAC,QAAAC,SAAAJ,EAAAE,OAAAC,QAAAC,QAAA,kBAAA,GACAd,sBAAAQ,EAAA,KAAA,mBAAA,CACA,CAAA,CACA,CAAA,CACA,gBAEA,SAAAO,cAAAP,EAAAQ,GAEA,IAGAC,EAGAC,EAMAC,EAZA,GAAAX,EAyBA,OAnBAU,GAHAD,EAAAlB,EAAAS,CAAA,GAGAY,SAAA,EAAAC,SAAAH,OAGAD,EAAAG,SAAA,EAAAC,SAAAH,OAAAA,EAAAI,QAAA,qBAAA,yBAAAN,EAAA,2BAAAA,EAAA,uBAAA,GAGAG,EAAAF,EAAAM,MAAA,GAQAvB,sBAAAQ,CAAA,EAHAR,sBAAAQ,EAAA,SAAAgB,EAAAC,GAAA,MAAA,CAAA1B,EAAA0B,CAAA,EAAAX,QAAA,kBAAA,EAAAX,QAAAJ,EAAA0B,CAAA,EAAAX,QAAA,kBAAA,EAAAY,KAAA,WAAA,GAAAV,CAAA,CAAA,EASAC,EAAAG,SAAA,EAAAC,SAAAH,OAAAA,EADAC,EAxBA,KAAA,yBAAAQ,OAAAX,EAAA,yBAAA,CAyBA,CAzCAX,OAAAA,EAAAA,SAAAI,iBAAA,oBAAA,SAAAC,GAAA,OAAAT,OAAAS,EAAAkB,MAAA,CAAA,CAAA,SAEA3B,MAuCA","file":"validate-group.js","sourcesContent":["import $ from 'jquery';\r\nimport 'jquery.validate';\r\nimport { hideValidationSummary } from 'ui-utils';\r\n\r\nonLoad();\r\n\r\ndocument.addEventListener('DOMContentUpdated', e => onLoad(e.target));\r\n\r\nexport function onLoad(context = document) {\r\n context.querySelectorAll('form').forEach(form => {\r\n form.addEventListener('invalid', e => {\r\n // If the trigger that submitted the form was not within a group then hide all validation summaries that are in a group.\r\n // Note: When the trigger is the window it doesn't contain a closest function.\r\n if (!e.detail?.trigger || typeof e.detail.trigger.closest !== 'function' || !e.detail.trigger.closest('[data-val-group]'))\r\n hideValidationSummary(form, null, '[data-val-group] ');\r\n });\r\n });\r\n}\r\n\r\nexport default function validateGroup(form, group) {\r\n // Make sure the form exists.\r\n if (!form)\r\n throw `The validation group \"${group}\" is not within a form.`;\r\n\r\n const $form = $(form);\r\n\r\n // Set the original ignore expression.\r\n const ignore = $form.validate().settings.ignore;\r\n\r\n // Set the jQuery validator to ignore all fields apart from the ones with our group (ignore nested groups).\r\n $form.validate().settings.ignore = ignore.replace('[data-val-group] *', ':not([data-val-group=\"' + group + '\"] *), [data-val-group=\"' + group + '\"] [data-val-group] *');\r\n\r\n // Validate the form.\r\n const isValid = $form.valid();\r\n\r\n // If the form is not valid.\r\n if (!isValid)\r\n // Hide all validation summaries that are not in a group or doesn't match the group.\r\n hideValidationSummary(form, (i, el) => !$(el).closest('[data-val-group]').length || $(el).closest('[data-val-group]').data('val-group') != group);\r\n else\r\n // Hide all validation summaries.\r\n hideValidationSummary(form);\r\n\r\n // Set the jQuery validation ignored fields back to the default.\r\n $form.validate().settings.ignore = ignore;\r\n\r\n return isValid;\r\n}"]}