This is the default confirm dialog content. Replace me through the options
', // html for confirm message\n\t\tconfirm_callback: function() {},\n\t\tconfirm_cancel_callback: function() {},\n\n\n\t\t//Gallery Modal\n\t\tgallery_active_class: 'gallery_active_item',\n\t\touter_controls:\tfalse,\n\t\tbefore_image_change: function( current_item, incoming_item ) {},\n\t\tafter_image_change: function( current_item ) {},\n\n\t\t//Ajax Modal\n\t\tloading_content: modaal_loading_spinner,\n\t\tloading_class: 'is_loading',\n\t\tajax_error_class: 'modaal-error',\n\t\tajax_success: function(){},\n\n\t\t//Instagram\n\t\tinstagram_id: null\n\t};\n\n\t// Check and Set Inline Options\n\t// ------------------------------------------------------------\n\tfunction modaal_inline_options(self) {\n\n\t\t// new empty options\n\t\tvar options = {};\n\t\tvar inline_options = false;\n\n\t\t// option: type\n\t\tif ( self.attr('data-modaal-type') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.type = self.attr('data-modaal-type');\n\t\t}\n\n\t\t// option: type\n\t\tif ( self.attr('data-modaal-content-source') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.content_source = self.attr('data-modaal-content-source');\n\t\t}\n\n\t\t// option: animation\n\t\tif ( self.attr('data-modaal-animation') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.animation = self.attr('data-modaal-animation');\n\t\t}\n\n\t\t// option: animation_speed\n\t\tif ( self.attr('data-modaal-animation-speed') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.animation_speed = self.attr('data-modaal-animation-speed');\n\t\t}\n\n\t\t// option: after_callback_delay\n\t\tif ( self.attr('data-modaal-after-callback-delay') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.after_callback_delay = self.attr('data-modaal-after-callback-delay');\n\t\t}\n\n\t\t// option: is_locked\n\t\tif ( self.attr('data-modaal-is-locked') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.is_locked = (self.attr('data-modaal-is-locked') === 'true' ? true : false);\n\t\t}\n\n\t\t// option: hide_close\n\t\tif ( self.attr('data-modaal-hide-close') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.hide_close = (self.attr('data-modaal-hide-close') === 'true' ? true : false);\n\t\t}\n\n\t\t// option: background\n\t\tif ( self.attr('data-modaal-background') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.background = self.attr('data-modaal-background');\n\t\t}\n\n\t\t// option: overlay_opacity\n\t\tif ( self.attr('data-modaal-overlay-opacity') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.overlay_opacity = self.attr('data-modaal-overlay-opacity');\n\t\t}\n\n\t\t// option: overlay_close\n\t\tif ( self.attr('data-modaal-overlay-close') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.overlay_close = (self.attr('data-modaal-overlay-close') === 'false' ? false : true);\n\t\t}\n\n\t\t// option: accessible_title\n\t\tif ( self.attr('data-modaal-accessible-title') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.accessible_title = self.attr('data-modaal-accessible-title');\n\t\t}\n\n\t\t// option: start_open\n\t\tif ( self.attr('data-modaal-start-open') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.start_open = (self.attr('data-modaal-start-open') === 'true' ? true : false);\n\t\t}\n\n\t\t// option: fullscreen\n\t\tif ( self.attr('data-modaal-fullscreen') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.fullscreen = (self.attr('data-modaal-fullscreen') === 'true' ? true : false);\n\t\t}\n\n\t\t// option: custom_class\n\t\tif ( self.attr('data-modaal-custom-class') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.custom_class = self.attr('data-modaal-custom-class');\n\t\t}\n\n\t\t// option: close_text\n\t\tif ( self.attr('data-modaal-close-text') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.close_text = self.attr('data-modaal-close-text');\n\t\t}\n\n\t\t// option: close_aria_label\n\t\tif ( self.attr('data-modaal-close-aria-label') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.close_aria_label = self.attr('data-modaal-close-aria-label');\n\t\t}\n\n\t\t// option: background_scroll\n\t\tif ( self.attr('data-modaal-background-scroll') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.background_scroll = (self.attr('data-modaal-background-scroll') === 'true' ? true : false);\n\t\t}\n\n\t\t// option: width\n\t\tif ( self.attr('data-modaal-width') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.width = parseInt( self.attr('data-modaal-width') );\n\t\t}\n\n\t\t// option: height\n\t\tif ( self.attr('data-modaal-height') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.height = parseInt( self.attr('data-modaal-height') );\n\t\t}\n\n\t\t// option: confirm_button_text\n\t\tif ( self.attr('data-modaal-confirm-button-text') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.confirm_button_text = self.attr('data-modaal-confirm-button-text');\n\t\t}\n\n\t\t// option: confirm_cancel_button_text\n\t\tif ( self.attr('data-modaal-confirm-cancel-button-text') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.confirm_cancel_button_text = self.attr('data-modaal-confirm-cancel-button-text');\n\t\t}\n\n\t\t// option: confirm_title\n\t\tif ( self.attr('data-modaal-confirm-title') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.confirm_title = self.attr('data-modaal-confirm-title');\n\t\t}\n\n\t\t// option: confirm_content\n\t\tif ( self.attr('data-modaal-confirm-content') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.confirm_content = self.attr('data-modaal-confirm-content');\n\t\t}\n\n\t\t// option: gallery_active_class\n\t\tif ( self.attr('data-modaal-gallery-active-class') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.gallery_active_class = self.attr('data-modaal-gallery-active-class');\n\t\t}\n\n\t\t// option: loading_content\n\t\tif ( self.attr('data-modaal-loading-content') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.loading_content = self.attr('data-modaal-loading-content');\n\t\t}\n\n\t\t// option: loading_class\n\t\tif ( self.attr('data-modaal-loading-class') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.loading_class = self.attr('data-modaal-loading-class');\n\t\t}\n\n\t\t// option: ajax_error_class\n\t\tif ( self.attr('data-modaal-ajax-error-class') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.ajax_error_class = self.attr('data-modaal-ajax-error-class');\n\t\t}\n\n\t\t// option: start_open\n\t\tif ( self.attr('data-modaal-instagram-id') ) {\n\t\t\tinline_options = true;\n\t\t\toptions.instagram_id = self.attr('data-modaal-instagram-id');\n\t\t}\n\n\t\t// now set it up for the trigger, but only if inline_options is true\n\t\tif ( inline_options ) {\n\t\t\tself.modaal(options);\n\t\t}\n\t};\n\n\t// On body load (or now, if already loaded), init any modaals defined inline\n\t// Ensure this is done after $.fn.modaal and default options are declared\n\t// ----------------------------------------------------------------\n\t$(function(){\n\n\t\tvar single_modaal = $('.modaal');\n\n\t\t// Check for existing modaal elements\n\t\tif ( single_modaal.length ) {\n\t\t\tsingle_modaal.each(function() {\n\t\t\t\tvar self = $(this);\n\t\t\t\tmodaal_inline_options(self);\n\t\t\t});\n\t\t}\n\n\t\t// Obvserve DOM mutations for newly added triggers\n\t\tvar modaal_dom_observer = new MutationObserver(function(mutations) {\n\t\t\tmutations.forEach(function(mutation) {\n\t\t\t\tif (mutation.addedNodes && mutation.addedNodes.length > 0) {\n\t\t\t\t\t// element added to DOM\n\t\t\t\t\tvar findElement = [].some.call(mutation.addedNodes, function(el) {\n\t\t\t\t\t\tvar elm = $(el);\n\t\t\t\t\t\tif ( elm.is('a') || elm.is('button') ) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif ( elm.hasClass('modaal') ) {\n\t\t\t\t\t\t\t\t// is inline Modaal, initialise options\n\t\t\t\t\t\t\t\tmodaal_inline_options(elm);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// is not inline modaal. Check for existing selector\n\t\t\t\t\t\t\t\tmodaal_existing_selectors.forEach(function(modaalSelector) {\n\t\t\t\t\t\t\t\t\tif ( modaalSelector.element == elm.attr('class') ) {\n\t\t\t\t\t\t\t\t\t\t$(elm).modaal( modaalSelector.options );\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tvar observer_config = {\n\t\t\tsubtree: true,\n\t\t\tattributes: true,\n\t\t\tchildList: true,\n\t\t\tcharacterData: true\n\t\t};\n\n\t\t// pass in the target node, as well as the observer options\n\t\tsetTimeout(function() {\n\t\t\tmodaal_dom_observer.observe(document.body, observer_config);\n\t\t}, 500);\n\n\t});\n\n} ( jQuery, window, document ) );","import $ from 'jquery';\r\nimport * as CONST from '../utils/constants';\r\n\r\nclass Accordion {\r\n constructor() {\r\n }\r\n\r\n init() {\r\n this.bindEvents();\r\n }\r\n\r\n bindEvents() {\r\n // Title click\r\n $(document).on('click', '.js-accordion-title', e => {\r\n const accordion = $(e.currentTarget);\r\n\r\n // Toggle active class\r\n $(accordion).toggleClass('active');\r\n\r\n // Toggle content visibility\r\n $(accordion).next('.js-accordion-content')\r\n .stop()\r\n .toggleClass('active');\r\n });\r\n\r\n $(document).on('keypress', '.js-accordion-title', e => {\r\n if (e.which === 13) {\r\n const accordion = $(e.currentTarget);\r\n\r\n // Toggle active class\r\n $(accordion).toggleClass('active');\r\n \r\n // Toggle content visibility\r\n $(accordion).next('.js-accordion-content')\r\n .stop()\r\n .toggleClass('active');\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default Accordion;\r\n\r\n$(() => {\r\n\tconst accordion = new Accordion();\r\n\taccordion.init();\r\n});","import $ from 'jquery';\r\n\r\nfunction displayError(el, type) {\r\n\t$(el).siblings(`.error.${type}`).removeClass('hidden');\r\n\t$(el).addClass('error-input');\r\n}\r\n\r\nfunction displaySuccess(el) {\r\n $(el).siblings('.error').addClass('hidden');\r\n $(el).siblings('.field-validation-error').addClass('hidden');\r\n\t$(el).removeClass('error-input');\r\n}\r\n\r\nfunction isEmpty(el) {\r\n if ($(el).val() === '') {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\nfunction isValidUSZip(sZip) {\r\n return /^\\d{5}(-\\d{4})?$/.test(sZip);\r\n}\r\n\r\nfunction isValidEmail(email) {\r\n const re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return re.test(String(email).toLowerCase());\r\n}\r\n\r\nfunction isValidPhone(phone) {\r\n const re = /^(?:(?:\\+?1\\s*(?:[.-]\\s*)?)?(?:\\(\\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\\s*\\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\\s*(?:[.-]\\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\\s*(?:[.-]\\s*)?([0-9]{4})(?:\\s*(?:#|x\\.?|ext\\.?|extension)\\s*(\\d+))?$/;\r\n return re.test(String(phone));\r\n}\r\n\r\nconst textValidate = (el) => {\r\n if (isEmpty(el)) {\r\n displayError(el, 'empty');\r\n return 0;\r\n } else {\r\n displaySuccess(el);\r\n }\r\n return 1;\r\n};\r\n\r\nconst zipValidate = (el) => {\r\n if (isEmpty(el) || !isValidUSZip($(el).val())) {\r\n displayError(el, 'zipcode');\r\n return 0;\r\n } else {\r\n displaySuccess(el);\r\n }\r\n return 1;\r\n};\r\n\r\nconst emailValidate = (el) => {\r\n if (isEmpty(el) || !isValidEmail($(el).val())) {\r\n displayError(el, 'email');\r\n return 0;\r\n } else {\r\n displaySuccess(el);\r\n }\r\n return 1;\r\n};\r\n\r\n\r\nconst phoneValidate = (el) => {\r\n if (isEmpty(el) || !isValidPhone($(el).val())) {\r\n displayError(el, 'phone');\r\n return 0;\r\n } else {\r\n displaySuccess(el);\r\n }\r\n return 1;\r\n};\r\n\r\nconst selectValidate = (el) => {\r\n if (isEmpty(el)) {\r\n let customParent = $(el).parent('.bootstrap-select');\r\n if (customParent.length > 0) {\r\n displayError(customParent, 'empty');\r\n } else {\r\n displayError(el, 'empty');\r\n }\r\n return 0;\r\n }\r\n return 1;\r\n};\r\n\r\nconst checkboxValidate = (el) => {\r\n let name = $(el).attr('name');\r\n let checked = $(`input[name='${name}']:checked`);\r\n if (checked.length === 0) {\r\n let parent = $(el).closest('.checkbox-list');\r\n displayError(parent, 'empty');\r\n return 0;\r\n }\r\n return 1;\r\n};\r\n\r\n\r\nconst radioValidate = (el) => {\r\n let name = $(el).attr('name');\r\n let checked = $(`input[name='${name}']:checked`);\r\n if (checked.length === 0) {\r\n let parent = $(el).closest('.radio-container');\r\n displayError(parent, 'empty');\r\n return 0;\r\n }\r\n return 1;\r\n};\r\n\r\nexport default { \r\n textValidate,\r\n zipValidate,\r\n emailValidate,\r\n phoneValidate,\r\n selectValidate,\r\n checkboxValidate,\r\n radioValidate\r\n};","import $ from 'jquery';\r\nimport 'bootstrap';\r\nimport 'bootstrap-select';\r\nimport Jodit from 'jodit';\r\n\r\nimport WysiwygConfig from './wysiwygConfig';\r\nimport youtubeParser from './youtubeparser';\r\nimport validationRules from './validation';\r\nimport * as CONST from './constants';\r\nimport Util from './ui';\r\n\r\n\r\nclass FormTools {\r\n wysiwyg(el) {\r\n const id = $(el).attr('id');\r\n const toolset = WysiwygConfig($(el).data('toolset'));\r\n const j = new Jodit(`#${id}`, toolset);\r\n }\r\n\r\n setDynamic(el) {\r\n if ($(el).hasClass('zipcode')) {\r\n this.zipcodeSetup(el);\r\n } else if ($(el).hasClass('email')) {\r\n this.emailSetup(el);\r\n } else if ($(el).hasClass('phone')) {\r\n this.phoneSetup(el);\r\n } else if ($(el).hasClass('required')) {\r\n $(el).blur(() => {\r\n validationRules.textValidate(el);\r\n });\r\n }\r\n }\r\n\r\n setTooltip(el, v) {\r\n const parent = $(el).closest('.form-field');\r\n const label = $(parent).find('label');\r\n const span = $('');\r\n $(span).html(`?