1(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[1,330,398,422,460,837],{ 2 3/***/ 518: 4/***/ (function(module, __webpack_exports__, __webpack_require__) { 5 6"use strict"; 7 8// EXPORTS 9__webpack_require__.d(__webpack_exports__, "c", function() { return /* binding */ validateModel; }); 10__webpack_require__.d(__webpack_exports__, "a", function() { return /* binding */ createField; }); 11 12// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js + 3 modules 13var defineProperty = __webpack_require__(3); 14 15// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.includes.js 16var es_array_includes = __webpack_require__(20); 17 18// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.iterator.js 19var es_array_iterator = __webpack_require__(8); 20 21// EXTERNAL MODULE: ./node_modules/core-js/modules/es.parse-int.js 22var es_parse_int = __webpack_require__(158); 23 24// EXTERNAL MODULE: ./node_modules/core-js/modules/es.promise.js 25var es_promise = __webpack_require__(16); 26 27// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.exec.js 28var es_regexp_exec = __webpack_require__(14); 29 30// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.to-string.js 31var es_regexp_to_string = __webpack_require__(44); 32 33// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.includes.js 34var es_string_includes = __webpack_require__(34); 35 36// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.replace.js 37var es_string_replace = __webpack_require__(23); 38 39// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.iterator.js 40var web_dom_collections_iterator = __webpack_require__(9); 41 42// EXTERNAL MODULE: ./services/api.js 43var services_api = __webpack_require__(63); 44 45// CONCATENATED MODULE: ./services/validators/accepted.js 46 47 48/** 49 * Validate accepted 50 */ 51/* harmony default export */ var accepted = ({ 52 /** 53 * Check the validation 54 * @param {string|number|boolean|null} value 55 */ 56 check(value) { 57 return value; 58 }, 59 /** 60 * Return an error message 61 * @param {object} vm 62 * @param {string} fieldName 63 * @param {object} validation 64 */ 65 message(vm, fieldName, validation) { 66 return validation.message.replace('%fieldName', fieldName); 67 } 68}); 69// EXTERNAL MODULE: ./node_modules/validator/lib/matches.js 70var matches = __webpack_require__(536); 71var matches_default = /*#__PURE__*/__webpack_require__.n(matches); 72 73// CONCATENATED MODULE: ./services/validators/currency.js 74 75 76/** 77 * Validate a currency pattern 78 */ 79/* harmony default export */ var currency = ({ 80 /** 81 * Check the validation 82 * @param {string|number|null} value 83 * @param {object} form 84 */ 85 check(value) { 86 var regex = /(^(\d+(?:\.\d{2})?)$)/; 87 return matches_default()("".concat(value), regex); 88 }, 89 /** 90 * Return an error message 91 * @param {object} vm 92 * @param {string} fieldName 93 * @param {object} validation 94 */ 95 message(vm, fieldName, validation) { 96 return validation.message; 97 } 98}); 99// EXTERNAL MODULE: ./node_modules/validator/lib/isEmail.js 100var isEmail = __webpack_require__(542); 101var isEmail_default = /*#__PURE__*/__webpack_require__.n(isEmail); 102 103// CONCATENATED MODULE: ./services/validators/email.js 104 105 106/** 107 * Validate an email 108 */ 109/* harmony default export */ var email = ({ 110 /** 111 * Check the validation 112 * @param {string|null} value 113 */ 114 check(value) { 115 return isEmail_default()("".concat(value)); 116 }, 117 /** 118 * Return an error message 119 * @param {object} vm 120 * @param {string} fieldName 121 * @param {object} validation 122 */ 123 message(vm, fieldName, validation) { 124 return validation.message; 125 } 126}); 127// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.match.js 128var es_string_match = __webpack_require__(89); 129 130// CONCATENATED MODULE: ./services/validators/match.js 131 132 133/** 134 * Validate that 2 fields match 135 */ 136/* harmony default export */ var match = ({ 137 /** 138 * Check the validation 139 * @param {string|number|null} value 140 * @param {object} form 141 * @param {object} validation 142 */ 143 check(value, form, validation) { 144 return value === form[validation.match].$model; 145 }, 146 /** 147 * Return an error message 148 * @param {object} vm 149 * @param {string} fieldName 150 * @param {object} validation 151 */ 152 message(vm, fieldName, validation) { 153 return validation.message; 154 } 155}); 156// EXTERNAL MODULE: ./node_modules/validator/lib/isLength.js 157var isLength = __webpack_require__(523); 158var isLength_default = /*#__PURE__*/__webpack_require__.n(isLength); 159 160// CONCATENATED MODULE: ./services/validators/max.js 161 162 163 164 165/** 166 * Validate a maximum number of characters 167 */ 168/* harmony default export */ var max = ({ 169 /** 170 * Check the validation 171 * @param {string|number|null} value 172 * @param {object} form 173 * @param {object} validation 174 */ 175 check(value, form, validation) { 176 return value ? isLength_default()("".concat(value), { 177 max: validation.length 178 }) : true; 179 }, 180 /** 181 * Return an error message 182 * @param {object} vm 183 * @param {string} fieldName 184 * @param {object} validation 185 */ 186 message(vm, fieldName, validation) { 187 return validation.message.replace('%num', validation.length); 188 } 189}); 190// CONCATENATED MODULE: ./services/validators/min.js 191 192 193 194 195/** 196 * Validate a minimum number of characters 197 */ 198/* harmony default export */ var min = ({ 199 /** 200 * Check the validation 201 * @param {string|number|null} value 202 * @param {object} form 203 * @param {object} validation 204 */ 205 check(value, form, validation) { 206 return value ? isLength_default()("".concat(value), { 207 min: validation.min 208 }) : true; 209 }, 210 /** 211 * Return an error message 212 * @param {object} vm 213 * @param {string} fieldName 214 * @param {object} validation 215 */ 216 message(vm, fieldName, validation) { 217 return validation.message.replace('%num', validation.min); 218 } 219}); 220// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.trim.js 221var es_string_trim = __webpack_require__(286); 222 223// CONCATENATED MODULE: ./services/validators/minWords.js 224 225 226 227/** 228 * Validate a minimum number of words 229 */ 230/* harmony default export */ var minWords = ({ 231 /** 232 * Check the validation 233 * @param {string|null} value 234 * @param {object} form 235 * @param {object} validation 236 */ 237 check(value, form, validation) { 238 return "".concat(value).trim().replace(/\s+/gi, ' ').split(' ').length >= validation.minWords; 239 }, 240 /** 241 * Return an error message 242 * @param {object} vm 243 * @param {string} fieldName 244 * @param {object} validation 245 */ 246 message(vm, fieldName, validation) { 247 return validation.message; 248 } 249}); 250// CONCATENATED MODULE: ./services/validators/pattern.js 251 252 253/** 254 * Validate a pattern 255 */ 256/* harmony default export */ var pattern = ({ 257 /** 258 * Check the validation 259 * @param {string|number|null} value 260 * @param {object} form 261 * @param {object} validation 262 */ 263 check(value, form, validation) {
264 return matches_default()("".concat(value), validation.pattern); 265 }, 266 /** 267 * Return an error message 268 * @param {object} vm 269 * @param {string} fieldName 270 * @param {object} validation 271 */ 272 message(vm, fieldName, validation) { 273 return validation.message; 274 } 275}); 276// CONCATENATED MODULE: ./services/validators/required.js 277 278 279 280 281/** 282 * Validate a required value 283 */ 284/* harmony default export */ var required = ({ 285 /** 286 * Check the validation 287 * @param {string|number|null} value 288 */ 289 check(value) { 290 return typeof value !== 'undefined' && value !== null ? isLength_default()("".concat(value), 1) : false; 291 }, 292 /** 293 * Return an error message 294 * @param {object} vm 295 * @param {string} fieldName 296 * @param {object} validation 297 */ 298 message(vm, fieldName, validation) { 299 return validation.message.replace('%fieldName', fieldName); 300 } 301}); 302// CONCATENATED MODULE: ./services/validators/index.js 303 304 305 306 307 308 309 310 311 312// EXTERNAL MODULE: ./services/devLog.js 313var devLog = __webpack_require__(522); 314 315// EXTERNAL MODULE: ./components/form/FormErrors.vue + 4 modules 316var FormErrors = __webpack_require__(561); 317 318// EXTERNAL MODULE: ./components/form/SiteButton.vue + 4 modules 319var SiteButton = __webpack_require__(62); 320 321// EXTERNAL MODULE: ./components/form/SiteInput.vue + 5 modules 322var SiteInput = __webpack_require__(519); 323 324// CONCATENATED MODULE: ./mixins/form.js 325 326function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } 327function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { Object(defineProperty["a" /* default */])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343var validators = { 344 accepted: accepted, 345 email: email, 346 max: max, 347 min: min, 348 required: required 349}; 350 351/* eslint no-underscore-dangle: 0 */ 352var _cachedVue = null; 353function getVue(rootVm) { 354 if (_cachedVue) return _cachedVue; 355 var Vue = rootVm.constructor; 356 while (Vue.super) Vue = Vue.super; 357 _cachedVue = Vue; 358 return Vue; 359} 360var _cachedComponent = null; 361var getComponent = Vue => { 362 if (_cachedComponent) { 363 return _cachedComponent; 364 } 365 var VBase = Vue.extend({}); 366 _cachedComponent = { 367 VBase 368 }; 369 return _cachedComponent; 370}; 371 372/** 373 * Validate a specific field 374 * 375 * @param {object} form 376 * @param {object} field 377 * @param {object} vm 378 * @param {boolean} skipSubmittedCheck 379 */ 380var validateField = function validateField(form, field, vm) { 381 var skipSubmittedCheck = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; 382 if (!form.$submitted && !skipSubmittedCheck || field.$disabled) { 383 return false; 384 } 385 field.$hasError = null; 386 field.$errorMessage = ''; 387 var hasError = false; 388 field.$params.forEach(validation => { 389 if (!hasError) { 390 if (typeof validation.validator === 'string') { 391 return; 392 } 393 if (validation.validator) { 394 hasError = !validation.validator.check(field.$model, form, validation); 395 if (hasError) { 396 field.$errorMessage = validation.validator.message(vm, field.name, validation, vm.$store.state.gt.validations); 397 } 398 } else { 399 hasError = !validation.check(field.$model, form, validation); 400 if (hasError) { 401 field.$errorMessage = validation.message(vm, field.name, {}, vm.$store.state.gt.validations); 402 } 403 } 404 } 405 }); 406 field.$hasError = hasError; 407 return field.$hasError; 408}; 409 410/** 411 * Check for errors on fields and update form.$hasErrors property 412 * 413 * @param {object} form 414 */ 415var checkForFormErrors = form => { 416 var formErrors = false; 417 form.fieldKeys.forEach(fieldKey => { 418 if (form[fieldKey].$hasError) { 419 formErrors = true; 420 } 421 }); 422 form.$hasError = formErrors; 423}; 424 425/** 426 * Scroll an error into view 427 * 428 * @param {object} form 429 */ 430var scrollErrorIntoView = form => { 431 if (form.$hasError) { 432 var highestPosition = 9999999; 433 form.fieldKeys.forEach(fieldKey => { 434 var field = form[fieldKey]; 435 if (field.$hasError) { 436 var $field = document.querySelector("[name=".concat(field.name, "]")); 437 if ($field) { 438 var box = $field.getBoundingClientRect(); 439 var checkPosition = box.top + window.pageYOffset - 75; 440 if (checkPosition < highestPosition) {
441 highestPosition = checkPosition; 442 } 443 } 444 } 445 }); 446 if (highestPosition !== 9999999) { 447 if ('scrollBehavior' in document.documentElement.style) { 448 window.scrollTo({ 449 top: highestPosition, 450 left: 0, 451 behavior: 'smooth' 452 }); 453 } else { 454 window.scrollTo(0, highestPosition); 455 } 456 } 457 } 458}; 459 460/** 461 * Validate all fields 462 * 463 * @param {object} form 464 * @param {object} vm 465 * @param {boolean} skipSubmittedCheck 466 */ 467var validate = (form, vm, skipSubmittedCheck) => { 468 if (!form.$submitted && !skipSubmittedCheck) { 469 return false; 470 } 471 form.fieldKeys.forEach(fieldKey => { 472 validateField(form, form[fieldKey], vm, skipSubmittedCheck); 473 }); 474 checkForFormErrors(form); 475 scrollErrorIntoView(form); 476 return !form.$hasError; 477}; 478 479/** 480 * Replace string validator names with validator functions 481 * 482 * @param {array} validations 483 */ 484var prepareValidations = function prepareValidations() { 485 var validations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; 486 validations.forEach(validation => { 487 if (validation.validator && typeof validation.validator === 'string' && validators[validation.validator]) { 488 validation.type = validation.validator; 489 if (true) validation.validator = validators[validation.validator]; 490 } 491 }); 492 return validations; 493}; 494 495/** 496 * Setup props on a field 497 * 498 * @param {object} form 499 * @param {object} fieldName 500 * @param {object} fields 501 * @param {object} vm 502 */ 503var setFieldProps = (form, fieldName, fields, vm) => { 504 var _vm$_setupState$clean; 505 var Vue = getVue(vm); 506 var cleanFieldName = fieldName.replace(/_([a-z])/g, _ref => { 507 var [, letter] = _ref; 508 return letter.toUpperCase(); 509 }); 510 Vue.set(form, fieldName, _objectSpread(_objectSpread(_objectSpread(_objectSpread({ 511 $disabled: form.disabled.includes(fieldName), 512 $errorMessage: null, 513 _model: (vm._setupState ? (_vm$_setupState$clean = vm._setupState[cleanFieldName]) === null || _vm$_setupState$clean === void 0 ? void 0 : _vm$_setupState$clean.value : vm[fieldName]) || '', 514 label: fields[fieldName].label, 515 name: fieldName, 516 inputmode: fields[fieldName].inputmode || fields[fieldName].type || 'text', 517 placeholder: fields[fieldName].placeholder, 518 type: fields[fieldName].type || 'text' 519 }, fields[fieldName].helpText && { 520 helpText: fields[fieldName].helpText 521 }), fields[fieldName].min && { 522 min: fields[fieldName].min 523 }), fields[fieldName].options && { 524 options: fields[fieldName].options 525 }), {}, { 526 $hasError: null, 527 $params: form[fieldName] && form[fieldName].$params.length ? form[fieldName].$params : prepareValidations(fields[fieldName].validations) 528 })); 529 Object.defineProperty(form[fieldName], '$model', { 530 get() { 531 return this._model; 532 }, 533 set() { 534 var _vm$_setupState$clean2; 535 var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ((_vm$_setupState$clean2 = vm._setupState[cleanFieldName]) === null || _vm$_setupState$clean2 === void 0 ? void 0 : _vm$_setupState$clean2.value) || vm[fieldName]; 536 this._model = value; 537 if (vm._setupState) { 538 vm._setupState[cleanFieldName].value = value; 539 } else { 540 vm[fieldName] = value; 541 } 542 form.$errorMessage = null; 543 if (validateField(form, form[fieldName], vm)) { 544 if (form.$submitted) { 545 checkForFormErrors(form); 546 } 547 } else { 548 checkForFormErrors(form); 549 } 550 } 551 }); 552}; 553 554/** 555 * Add server errors onto each form field 556 * 557 * @param {object} form 558 * @param {object} errors 559 */ 560var addServerErrors = (form, errors) => { 561 if (!errors) { 562 return; 563 } 564 Object.entries(errors).forEach(_ref2 => { 565 var [key, messages] = _ref2; 566 // Remap arrayed keys 567 var field = key.replace(/\.(\d)\.([a-z])/, (all, number, letter) => (parseInt(number, 10) + 1).toString() + letter.toUpperCase()); 568 if (!form[field]) return; 569 form[field].$hasError = true; 570 /* eslint prefer-destructuring: 0 */ 571 // TODO: simplify once we dont need to handle legacy 572 // Errors from new API 573 if (messages.length) { 574 form[field].$errorMessage = messages[0]; 575 } else { 576 // Errors from legacy API 577 var types = Object.keys(messages); 578 form[field].$errorMessage = messages[types[0]]; 579 } 580 }); 581 form.$hasError = true; 582}; 583 584/** 585 * Submit the form 586 * 587 * @param {object} form 588 * @params {string} url 589 * @param {object} data 590 * @param {object} vm 591 * @param {boolean} canThrow - can the form throw errors 592 */ 593var form_submitNewApi = function submitNewApi(form, url, _ref3, vm) { 594 var { 595 body, 596 method, 597 params 598 } = _ref3; 599 var canThrow = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
600 form.$submitted = true; 601 return new Promise((resolve, reject) => { 602 if (form.validate()) { 603 form.$submitting = true; 604 vm.$nuxt.$loading.start(); 605 var api = new services_api["a" /* default */](vm.$axios); 606 api.request(url, { 607 body, 608 method, 609 params 610 }).then(response => { 611 resolve(response); 612 form.$submitting = false; 613 vm.$nuxt.$loading.finish(); 614 }).catch(error => { 615 var _error$response; 616 var response = error.data || ((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.data); 617 if (response) { 618 var { 619 errors, 620 message 621 } = response; 622 if (typeof errors === 'string' || typeof errors === 'undefined' && typeof message === 'string') { 623 form.$errorMessage = (errors || message).replace('message:', ''); 624 form.$hasError = true; 625 } else { 626 addServerErrors(form, errors); 627 } 628 } 629 form.$submitting = false; 630 vm.$nuxt.$loading.finish(); 631 if (canThrow) { 632 reject(error); 633 } 634 }); 635 } 636 }); 637}; 638 639/** 640 * Submit the form 641 * 642 * @param {object} form 643 * @params {object} api 644 * @param {string} method 645 * @param {string} resourceId 646 * @param {object} data 647 * @param {object} vm 648 * @param {boolean} canThrow - can the form throw errors 649 * @param {string} subResourceId 650 */ 651var form_submit = function submit(form, api, method, resourceId, data, vm) { 652 var canThrow = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false; 653 var subResourceId = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : ''; 654 form.$submitted = true; 655 return new Promise((resolve, reject) => { 656 if (form.validate()) { 657 form.$submitting = true; 658 vm.$nuxt.$loading.start(); 659 var request; 660 if (subResourceId) { 661 request = api[method](resourceId, subResourceId, data); 662 } else if (resourceId !== 'false') { 663 // TODO: refactor once all on v2 664 request = api[method](resourceId, data); 665 } else { 666 request = api[method](data); 667 } 668 request.then(response => { 669 resolve(response); 670 form.$submitting = false; 671 vm.$nuxt.$loading.finish(); 672 }).catch(error => { 673 var _error$response2; 674 var response = error.data || ((_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : _error$response2.data); 675 if (response) { 676 var { 677 errors, 678 message 679 } = response; 680 if (typeof errors === 'string' || typeof errors === 'undefined' && typeof message === 'string') { 681 form.$errorMessage = (errors || message).replace('message:', ''); 682 form.$hasError = true; 683 } else { 684 // TODO: Remove || message when we dont need to handle legacy 685 addServerErrors(form, errors || message); 686 } 687 } 688 form.$submitting = false; 689 vm.$nuxt.$loading.finish(); 690 if (canThrow) { 691 reject(error); 692 } 693 }); 694 } 695 }); 696}; 697var form_reset = form => { 698 form.$errorMessage = null; 699 form.$hasError = false; 700 form.$submitted = false; 701 form.$submitting = false; 702 form.fieldKeys.forEach(fieldKey => { 703 form[fieldKey].$errorMessage = null; 704 form[fieldKey].$hasError = null; 705 }); 706}; 707 708/** 709 * Enable or disable validation for fields 710 * 711 * @param {object} form 712 * @param {array} enable 713 * @param {array} disable 714 */ 715var updateFields = function updateFields(form) { 716 var enable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; 717 var disable = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; 718 enable.forEach(field => { 719 delete form.disabled[form.disabled.indexOf(field)]; 720 form[field].$disabled = false; 721 }); 722 disable.forEach(field => { 723 form.disabled.push(field); 724 form[field].$disabled = true; 725 }); 726}; 727 728/** 729 * Manually add an error message to a field 730 * 731 * @param {object} form 732 * @param {string} field 733 * @param {string} message 734 */ 735var addManualError = (form, field, message) => { 736 if (form[field]) { 737 form[field].$hasError = true; 738 form[field].$errorMessage = message; 739 } 740}; 741 742/** 743 * Add select options 744 * 745 * @param {object} vm 746 * @param {object} form 747 * @param {string} field 748 * @param {array} options 749 */ 750var addOptions = (vm, form, field, options) => { 751 if (form[field]) { 752 var _vm$pageData, _vm$pageData$forms, _vm$pageData$forms$vm; 753 form[field].options = options; 754 var fields = (_vm$pageData = vm.pageData) !== null && _vm$pageData !== void 0 && (_vm$pageData$forms = _vm$pageData.forms) !== null && _vm$pageData$forms !== void 0 && (_vm$pageData$forms$vm = _vm$pageData$forms[vm.formKey]) !== null && _vm$pageData$forms$vm !== void 0 && _vm$pageData$forms$vm.fields ? vm.pageData.forms[vm.formKey].fields : vm.fields; 755 fields[field].options = options; 756 } 757}; 758 759/** 760 * Create a reactive model to hold the form 761 * 762 * @param {object} vm 763 * @param {object} fields 764 */ 765function validateModel(vm, fields) { 766 var Vue = getVue(vm); 767 var { 768 VBase 769 } = getComponent(Vue); 770 var root = new VBase({ 771 data() { 772 return { 773 form: { 774 disabled: [], 775 fieldKeys: [], 776 $errorMessage: null, 777 $hasError: false, 778 $submitted: false, 779 $submitting: false 780 } 781 }; 782 }, 783 computed: { 784 /** 785 * Returns the object that becomes $form 786 */ 787 formComp() { 788 var _this = this; 789 if (fields) { 790 this.form.fieldKeys = Object.keys(fields); 791 this.form.fieldKeys.forEach(field => { 792 setFieldProps(this.form, field, fields, vm); 793 }); 794 Vue.set(this.form, 'replaceValidations', moreValidations => {
795 fields = moreValidations; 796 this.form.fieldKeys = Object.keys(fields); 797 this.form.fieldKeys.forEach(field => { 798 setFieldProps(this.form, field, moreValidations, vm); 799 }); 800 }); 801 Vue.set(this.form, 'addError', (field, message) => addManualError(this.form, field, message)); 802 Vue.set(this.form, 'addOptions', (field, options) => addOptions(vm, this.form, field, options)); 803 Vue.set(this.form, 'updateFields', (enable, disable) => updateFields(this.form, enable, disable)); 804 Vue.set(this.form, 'validate', () => validate(this.form, vm, true)); 805 Vue.set(this.form, 'request', (url, _ref4, canThrow) => { 806 var { 807 body, 808 method, 809 params 810 } = _ref4; 811 return form_submitNewApi(this.formComp, url, { 812 body, 813 method, 814 params 815 }, vm, canThrow); 816 }); 817 Vue.set(this.form, 'create', function (api) { 818 var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 819 var resourceId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'false'; 820 var method = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'post'; 821 var canThrow = arguments.length > 4 ? arguments[4] : undefined; 822 var subResourceId = arguments.length > 5 ? arguments[5] : undefined; 823 return form_submit(_this.formComp, api, method, resourceId, data, vm, canThrow, subResourceId); 824 }); 825 Vue.set(this.form, 'createSub', function (api, resourceId) { 826 var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; 827 var canThrow = arguments.length > 3 ? arguments[3] : undefined; 828 return form_submit(_this.formComp, api, 'post', resourceId, data, vm, canThrow); 829 }); 830 Vue.set(this.form, 'update', function (api, resourceId) { 831 var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; 832 var canThrow = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; 833 var method = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'put'; 834 return form_submit(_this.formComp, api, method, resourceId, data, vm, canThrow); 835 }); 836 Vue.set(this.form, 'updateSub', function (api, resourceId, subResourceId) { 837 var data = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; 838 var canThrow = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; 839 var method = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 'put'; 840 return form_submit(_this.formComp, api, method, resourceId, data, vm, canThrow, subResourceId); 841 }); 842 Vue.set(this.form, 'reset', () => form_reset(this.form)); 843 } 844 return this.form; 845 } 846 } 847 }); 848 return root; 849} 850; 851 852/** 853 * Creates a field object without validation 854 * 855 * @param String label 856 * @param String value 857 * @param String helpText 858 * @param String type 859 * @param Array options 860 * @returns Object 861 */ 862function createField(label) { 863 var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; 864 var helpText = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; 865 var type = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'text'; 866 var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null; 867 return { 868 $model: value, 869 helpText, 870 label, 871 $params: [], 872 type, 873 options 874 }; 875} 876 877/** 878 * A mixin containing the $form computed 879 */ 880/* harmony default export */ var mixins_form = __webpack_exports__["b"] = ({ 881 components: { 882 FormErrors: FormErrors["default"], 883 SiteButton: SiteButton["default"], 884 SiteInput: SiteInput["default"] 885 }, 886 computed: { 887 $form() { 888 var _this$pageData, _this$pageData$forms, _this$pageData$forms$; 889 var fields = (_this$pageData = this.pageData) !== null && _this$pageData !== void 0 && (_this$pageData$forms = _this$pageData.forms) !== null && _this$pageData$forms !== void 0 && (_this$pageData$forms$ = _this$pageData$forms[this.formKey]) !== null && _this$pageData$forms$ !== void 0 && _this$pageData$forms$.fields ? this.pageData.forms[this.formKey].fields : this.fields; 890 if (!fields) { 891 var _this$pageData2; 892 if ((_this$pageData2 = this.pageData) !== null && _this$pageData2 !== void 0 && _this$pageData2.forms) { 893 Object(devLog["a" /* default */])('No fields specified for form'); 894 if (!this.formKey) { 895 Object(devLog["a" /* default */])('Please specify a formKey'); 896 } 897 } 898 return {}; 899 } 900 if (!this._form) { 901 this._form = validateModel(this, fields); 902 } 903 return this._form ? this._form.formComp : null; 904 } 905 }, 906 beforeDestroy() { 907 if (this._form) { 908 this._form.$destroy(); 909 this._form = null; 910 } 911 } 912}); 913 914/***/ }), 915 916/***/ 519: 917/***/ (function(module, __webpack_exports__, __webpack_require__) { 918 919"use strict";
920// ESM COMPAT FLAG 921__webpack_require__.r(__webpack_exports__); 922 923// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.trim.js 924var es_string_trim = __webpack_require__(286); 925 926// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--3-0!./node_modules/babel-loader/lib??ref--3-1!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/@nuxt/components/dist/loader.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./components/form/SiteInput.vue?vue&type=template&id=736785a8&scoped=true 927 928var render = function render() { 929 var _vm = this, 930 _c = _vm._self._c; 931 return _c('div', { 932 class: { 933 'has-error': _vm.field.$hasError, 934 'w-full md:w-auto': _vm.inline, 935 'top-label': _vm.labelAtTop, 936 'secondary-styling': _vm.secondaryStyling 937 } 938 }, [_c('div', { 939 class: [_vm.customClass, 'site-input relative flex-grow', { 940 'has-label': _vm.field.label, 941 'has-icon-right': _vm.buttonAddon, 942 'pt-6': !_vm.inlineLabel, 943 'inline-label': _vm.inlineLabel 944 }] 945 }, [_vm.field.type === 'textbox' ? _c('SiteInputTextBox', _vm._g({ 946 ref: "field", 947 attrs: { 948 "compact": _vm.compact, 949 "external-images": _vm.externalImages, 950 "grey-bg": _vm.greyBg, 951 "height": _vm.height, 952 "max-media": _vm.maxMedia, 953 "placeholder": _vm.placeholder, 954 "secondary-styling": _vm.secondaryStyling, 955 "show-upload": _vm.showUpload, 956 "field": _vm.field 957 }, 958 on: { 959 "input": value => { 960 _vm.$emit('input', value); 961 } 962 } 963 }, _vm.$listeners)) : _vm.field.type === 'textarea' ? _c('textarea', { 964 directives: [{ 965 name: "model", 966 rawName: "v-model.trim", 967 value: _vm.field.$model, 968 expression: "field.$model", 969 modifiers: { 970 "trim": true 971 } 972 }], 973 ref: "field", 974 staticClass: "input block bg-color text-color", 975 class: [_vm.customClass, { 976 'has-value': _vm.field.$model 977 }], 978 attrs: { 979 "id": _vm.id, 980 "name": _vm.field.name, 981 "placeholder": _vm.focused ? _vm.field.placeholder || _vm.placeholder : '', 982 "rows": _vm.rows 983 }, 984 domProps: { 985 "value": _vm.field.$model 986 }, 987 on: { 988 "input": [function ($event) { 989 if ($event.target.composing) return; 990 _vm.$set(_vm.field, "$model", $event.target.value.trim()); 991 }, function ($event) { 992 return _vm.$emit('input', $event.target.value); 993 }], 994 "blur": [function ($event) { 995 _vm.focused = false; 996 }, function ($event) { 997 return _vm.$forceUpdate(); 998 }], 999 "focus": () => { 1000 _vm.focused = true; 1001 _vm.$emit('focus'); 1002 } 1003 } 1004 }) : _vm.field.type === 'select' ? _c('select', { 1005 directives: [{ 1006 name: "model", 1007 rawName: "v-model", 1008 value: _vm.field.$model, 1009 expression: "field.$model" 1010 }], 1011 staticClass: "input h-12 appearance-none bg-color text-color", 1012 class: { 1013 'has-value': typeof _vm.field.$model !== 'undefined' && (_vm.field.$model !== '' || _vm.allowEmpty && _vm.field.$model === '') 1014 }, 1015 attrs: { 1016 "id": _vm.id, 1017 "name": _vm.field.name 1018 }, 1019 on: { 1020 "change": [function ($event) { 1021 var $$selectedVal = Array.prototype.filter.call($event.target.options, function (o) { 1022 return o.selected; 1023 }).map(function (o) { 1024 var val = "_value" in o ? o._value : o.value; 1025 return val; 1026 }); 1027 _vm.$set(_vm.field, "$model", $event.target.multiple ? $$selectedVal : $$selectedVal[0]); 1028 }, function ($event) { 1029 return _vm.$emit('input', $event.target.value); 1030 }] 1031 } 1032 }, _vm._l(_vm.field.options, function (option) { 1033 return _c('option', { 1034 key: option[_vm.optionType], 1035 attrs: { 1036 "disabled": _vm.disabledOptions.indexOf(option[_vm.optionType]) !== -1 1037 }, 1038 domProps: { 1039 "value": option[_vm.optionType] 1040 } 1041 }, [_vm._v("\n " + _vm._s(option.text) + "\n ")]); 1042 }), 0) : _vm.field.type === 'fake' ? _c('div', { 1043 ref: "field", 1044 staticClass: "input bg-color px-3 text-color", 1045 class: { 1046 focused: _vm.focused, 1047 'has-value': _vm.field.$model, 1048 'shadow-outline': _vm.focused, 1049 'h-12': !_vm.compact, 1050 'h-10': _vm.compact 1051 }, 1052 attrs: { 1053 "id": _vm.id 1054 } 1055 }) : _vm.field.type === 'custom' ? _vm._t("custom", null, { 1056 "id": _vm.id 1057 }) : _c('input', _vm._g({ 1058 directives: [{ 1059 name: "model", 1060 rawName: "v-model.trim", 1061 value: _vm.field.$model, 1062 expression: "field.$model", 1063 modifiers: { 1064 "trim": true 1065 } 1066 }], 1067 ref: "field", 1068 staticClass: "input bg-color text-color", 1069 class: [_vm.customClass, { 1070 'has-value': _vm.field.$model || _vm.labelAtTop, 1071 'h-12': !_vm.compact, 1072 'h-10': _vm.compact 1073 }], 1074 attrs: { 1075 "id": _vm.id, 1076 "inputmode": _vm.field.inputmode, 1077 "type": _vm.field.type === 'url' ? 'text' : _vm.field.type, 1078 "max": _vm.field.max, 1079 "maxlength": _vm.maxlength, 1080 "min": _vm.field.min,
1081 "name": _vm.field.name, 1082 "autocomplete": _vm.autocomplete, 1083 "placeholder": _vm.field.placeholder || _vm.placeholder, 1084 "disabled": _vm.disabled 1085 }, 1086 domProps: { 1087 "value": _vm.field.$model 1088 }, 1089 on: { 1090 "input": function input($event) { 1091 if ($event.target.composing) return; 1092 _vm.$set(_vm.field, "$model", $event.target.value.trim()); 1093 }, 1094 "blur": function blur($event) { 1095 return _vm.$forceUpdate(); 1096 } 1097 } 1098 }, _vm.$listeners)), _vm._v(" "), _vm.field.type !== 'textbox' ? _c('label', { 1099 staticClass: "absolute overflow-hidden whitespace-nowrap text-left font-sans text-base font-medium", 1100 class: { 1101 'pointer-events-none cursor-text rounded bg-color px-1 pb-2 text-color': _vm.inlineLabel, 1102 'top-3': _vm.inlineLabel && !_vm.labelAtTop, 1103 'label-at-top': _vm.labelAtTop, 1104 'left-0 top-0': !_vm.inlineLabel, 1105 'compact !top-2 !pb-0 !pr-0': _vm.compact && _vm.inlineLabel 1106 }, 1107 attrs: { 1108 "for": _vm.id 1109 } 1110 }, [_vm._v("\n " + _vm._s(_vm.label || _vm.field.label) + "\n ")]) : _vm._e(), _vm._v(" "), _vm.field.$hasError ? _c('IconExclamationTriangle', { 1111 staticClass: "absolute right-0 mx-3 h-12 text-error", 1112 class: { 1113 'top-0': _vm.inlineLabel, 1114 'top-5': !_vm.inlineLabel 1115 } 1116 }) : _vm._e(), _vm._v(" "), !_vm.field.$hasError && _vm.field.$model === '' && _vm.required && !_vm.compact ? _c('IconAsterisk', { 1117 staticClass: "absolute right-0 p-1 text-error", 1118 class: { 1119 'top-0': _vm.inlineLabel, 1120 'top-6': !_vm.inlineLabel 1121 }, 1122 attrs: { 1123 "title": "Required" 1124 } 1125 }) : _vm._e(), _vm._v(" "), !_vm.field.$hasError ? _vm._t("icon") : _vm._e(), _vm._v(" "), (_vm.field.type === 'select' || _vm.field.type === 'custom') && !_vm.field.$hasError ? _c('IconChevronDown', { 1126 staticClass: "pointer-events-none absolute bottom-0 right-0 top-0 m-1 mt-4 p-1 text-lg", 1127 class: { 1128 'hidden hover:!block': !_vm.searchFocused && _vm.field.type === 'custom' || _vm.hideChevron, 1129 block: _vm.field.type === 'custom' 1130 } 1131 }) : _vm._e()], 2), _vm._v(" "), _vm.field.helpText && !_vm.field.$hasError && _vm.showHelpText ? _c('div', { 1132 staticClass: "ml-2 mt-1 text-sm text-color-light" 1133 }, [_vm._v("\n " + _vm._s(_vm.field.helpText) + "\n ")]) : _vm._e(), _vm._v(" "), _c('div', { 1134 staticClass: "flex" 1135 }, [_vm.field.$hasError ? _c('span', { 1136 staticClass: "ml-2 mt-1 text-sm text-error" 1137 }, [_vm._v("\n " + _vm._s(_vm.field.$errorMessage) + "\n ")]) : _vm._e(), _vm._v(" "), _vm._t("default")], 2)]); 1138}; 1139var staticRenderFns = []; 1140 1141// CONCATENATED MODULE: ./components/form/SiteInput.vue?vue&type=template&id=736785a8&scoped=true 1142 1143// EXTERNAL MODULE: ./mixins/inputRequired.js 1144var inputRequired = __webpack_require__(548); 1145 1146// CONCATENATED MODULE: ./mixins/uniqueId.js 1147var uuid = 0; 1148/* harmony default export */ var uniqueId = ({ 1149 data() { 1150 return { 1151 id: 0 1152 }; 1153 }, 1154 mounted() { 1155 this.id = "".concat(this.$options.name, "-").concat(uuid); 1156 uuid += 1; 1157 } 1158}); 1159// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--3-0!./node_modules/babel-loader/lib??ref--3-1!./node_modules/@nuxt/components/dist/loader.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./components/form/SiteInput.vue?vue&type=script&lang=js 1160/* eslint vue/no-mutating-props: 0 */ 1161 1162 1163/* harmony default export */ var SiteInputvue_type_script_lang_js = ({ 1164 name: 'SiteInput', 1165 mixins: [inputRequired["a" /* default */], uniqueId], 1166 props: { 1167 /** 1168 * Allow empty values in select 1169 */ 1170 allowEmpty: { 1171 type: Boolean, 1172 default: false 1173 }, 1174 /** 1175 * Autocomplete attribute - see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete 1176 */ 1177 autocomplete: { 1178 type: String, 1179 default: '' 1180 }, 1181 /** 1182 * Does the field have a button at the end, the button should be passed in the slot 1183 */ 1184 buttonAddon: { 1185 type: Boolean, 1186 default: false 1187 }, 1188 /** 1189 * Use the compact layout for a textbox 1190 */ 1191 compact: { 1192 type: Boolean, 1193 default: false 1194 }, 1195 /** 1196 * Custom class to apply to input field 1197 */ 1198 customClass: { 1199 type: String, 1200 default: '' 1201 }, 1202 /** 1203 * Do we want to set this input as disabled 1204 */ 1205 disabled: { 1206 type: Boolean, 1207 default: false 1208 }, 1209 /** 1210 * An array of disabled select options 1211 */ 1212 disabledOptions: { 1213 type: Array, 1214 default: () => [] 1215 }, 1216 /** 1217 * Should we allow external images in the media picker 1218 */ 1219 externalImages: { 1220 type: Boolean, 1221 default: false 1222 }, 1223 /** 1224 * A form object field 1225 */ 1226 field: { 1227 type: Object, 1228 required: true, 1229 default: () => ({}) 1230 }, 1231 greyBg: { 1232 type: Boolean, 1233 default: false 1234 }, 1235 /** 1236 * Only applies when type is set to textbox 1237 */ 1238 height: { 1239 type: String, 1240 default: null 1241 }, 1242 hideChevron: { 1243 default: false, 1244 type: Boolean 1245 }, 1246 /** 1247 * Hide the required indicator 1248 */ 1249 hideRequiredIndicator: { 1250 type: Boolean, 1251 default: false 1252 }, 1253 /** 1254 * Is the form inline? 1255 */ 1256 inline: { 1257 type: Boolean, 1258 default: false 1259 }, 1260 /** 1261 * Is the label inline? 1262 */ 1263 inlineLabel: { 1264 type: Boolean, 1265 default: true 1266 }, 1267 /** 1268 * Override the field label 1269 */ 1270 label: { 1271 type: String, 1272 default: '' 1273 }, 1274 /** 1275 * Label at top for empty fields 1276 */ 1277 labelAtTop: { 1278 type: Boolean, 1279 default: false 1280 }, 1281 /** 1282 * Max length of input 1283 */ 1284 maxlength: { 1285 type: Number, 1286 default: null 1287 }, 1288 /** 1289 * Max number of media items on textbox 1290 */ 1291 maxMedia: { 1292 type: Number, 1293 default: 6 1294 }, 1295 /** 1296 * Attribute to use for option value 1297 */ 1298 optionType: { 1299 type: String, 1300 default: 'value' 1301 }, 1302 /** 1303 * Placeholder for field 1304 */ 1305 placeholder: { 1306 type: String, 1307 default: '' 1308 }, 1309 /** 1310 * Number of rows, only applies when type is set to textarea 1311 */ 1312 rows: { 1313 type: Number, 1314 default: 5 1315 }, 1316 /** 1317 * See if element has been focused 1318 */ 1319 searchFocused: { 1320 type: Boolean, 1321 default: false 1322 }, 1323 /** 1324 * Use secondary colour 1325 */ 1326 secondaryStyling: { 1327 type: Boolean, 1328 default: false 1329 }, 1330 showHelpText: { 1331 default: true, 1332 type: Boolean 1333 }, 1334 /** 1335 * Show upload on media picker 1336 */ 1337 showUpload: { 1338 type: Boolean, 1339 default: false 1340 } 1341 }, 1342 data() { 1343 return { 1344 focused: false 1345 }; 1346 }, 1347 methods: { 1348 blur() { 1349 if (this.field.type === 'fake') { 1350 this.focused = false;
1351 } else { 1352 this.$refs.field.blur(); 1353 } 1354 }, 1355 focus() { 1356 if (this.field.type === 'fake') { 1357 this.focused = true; 1358 } else { 1359 this.$refs.field.focus(); 1360 } 1361 } 1362 } 1363}); 1364// CONCATENATED MODULE: ./components/form/SiteInput.vue?vue&type=script&lang=js 1365 /* harmony default export */ var form_SiteInputvue_type_script_lang_js = (SiteInputvue_type_script_lang_js); 1366// EXTERNAL MODULE: ./components/form/SiteInput.vue?vue&type=style&index=0&id=736785a8&prod&scoped=true&lang=css 1367var SiteInputvue_type_style_index_0_id_736785a8_prod_scoped_true_lang_css = __webpack_require__(572); 1368 1369// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js 1370var componentNormalizer = __webpack_require__(2); 1371 1372// CONCATENATED MODULE: ./components/form/SiteInput.vue 1373 1374 1375 1376 1377 1378 1379/* normalize component */ 1380 1381var component = Object(componentNormalizer["a" /* default */])( 1382 form_SiteInputvue_type_script_lang_js, 1383 render, 1384 staticRenderFns, 1385 false, 1386 null, 1387 "736785a8", 1388 null 1389 1390) 1391 1392/* harmony default export */ var SiteInput = __webpack_exports__["default"] = (component.exports); 1393 1394/* nuxt-component-imports */ 1395installComponents(component, {SiteInputTextBox: __webpack_require__(598).default,IconExclamationTriangle: __webpack_require__(562).default,IconAsterisk: __webpack_require__(547).default,IconChevronDown: __webpack_require__(537).default}) 1396 1397 1398/***/ }), 1399 1400/***/ 537: 1401/***/ (function(module, __webpack_exports__, __webpack_require__) { 1402 1403"use strict";
1404// ESM COMPAT FLAG 1405__webpack_require__.r(__webpack_exports__); 1406 1407// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--3-0!./node_modules/babel-loader/lib??ref--3-1!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/@nuxt/components/dist/loader.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./components/icons/IconChevronDown.vue?vue&type=template&id=76381db4 1408var render = function render() { 1409 var _vm = this, 1410 _c = _vm._self._c; 1411 return _c('svg', { 1412 staticClass: "inline-block fill-current", 1413 attrs: { 1414 "aria-hidden": "true", 1415 "viewBox": "0 0 512 512", 1416 "focusable": "false" 1417 } 1418 }, [_c('path', { 1419 attrs: { 1420 "d": "M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z" 1421 } 1422 })]); 1423}; 1424var staticRenderFns = []; 1425 1426// CONCATENATED MODULE: ./components/icons/IconChevronDown.vue?vue&type=template&id=76381db4 1427 1428// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js 1429var componentNormalizer = __webpack_require__(2); 1430 1431// CONCATENATED MODULE: ./components/icons/IconChevronDown.vue 1432 1433var script = {} 1434 1435 1436/* normalize component */ 1437 1438var component = Object(componentNormalizer["a" /* default */])( 1439 script, 1440 render, 1441 staticRenderFns, 1442 false, 1443 null, 1444 null, 1445 null 1446 1447) 1448 1449/* harmony default export */ var IconChevronDown = __webpack_exports__["default"] = (component.exports); 1450 1451/***/ }), 1452 1453/***/ 544: 1454/***/ (function(module, exports, __webpack_require__) { 1455 1456// style-loader: Adds some css to the DOM by adding a <style> tag 1457 1458// load the styles 1459var content = __webpack_require__(573); 1460if(content.__esModule) content = content.default; 1461if(typeof content === 'string') content = [[module.i, content, '']]; 1462if(content.locals) module.exports = content.locals; 1463// add the styles to the DOM 1464var add = __webpack_require__(30).default 1465var update = add("9bf89c80", content, true, {"sourceMap":false}); 1466 1467/***/ }), 1468 1469/***/ 547: 1470/***/ (function(module, __webpack_exports__, __webpack_require__) { 1471 1472"use strict";
1473// ESM COMPAT FLAG 1474__webpack_require__.r(__webpack_exports__); 1475 1476// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--3-0!./node_modules/babel-loader/lib??ref--3-1!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/@nuxt/components/dist/loader.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./components/icons/IconAsterisk.vue?vue&type=template&id=15ab7d83 1477var render = function render() { 1478 var _vm = this, 1479 _c = _vm._self._c; 1480 return _c('svg', { 1481 staticClass: "inline-block fill-current", 1482 attrs: { 1483 "aria-hidden": "true", 1484 "focusable": "false", 1485 "role": "img", 1486 "xmlns": "http://www.w3.org/2000/svg", 1487 "viewBox": "0 0 512 512" 1488 } 1489 }, [_c('path', { 1490 attrs: { 1491 "d": "M478.2 334.1c11.8 6.5 16 21.4 9.2 33l-19.5 33.7c-6.7 11.7-21.7 15.5-33.2 8.5l-138.7-84.1 3.5 162.2c0.3 13.5-10.5 24.5-24 24.5h-39c-13.5 0-24.3-11.1-24-24.5l3.5-162.2-138.7 84.1c-11.5 7-26.5 3.1-33.2-8.5l-19.5-33.7c-6.7-11.7-2.6-26.6 9.2-33l142.2-78.1-142.2-78.1c-11.8-6.5-16-21.4-9.2-33l19.5-33.7c6.7-11.7 21.7-15.5 33.2-8.5l138.7 84.1-3.5-162.2c-0.3-13.5 10.5-24.5 24-24.5h39c13.5 0 24.3 11.1 24 24.5l-3.5 162.2 138.7-84.1c11.5-7 26.5-3.1 33.2 8.5l19.5 33.7c6.7 11.7 2.6 26.6-9.2 33l-142.2 78.1z" 1492 } 1493 })]); 1494}; 1495var staticRenderFns = []; 1496 1497// CONCATENATED MODULE: ./components/icons/IconAsterisk.vue?vue&type=template&id=15ab7d83 1498 1499// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js 1500var componentNormalizer = __webpack_require__(2); 1501 1502// CONCATENATED MODULE: ./components/icons/IconAsterisk.vue 1503 1504var script = {} 1505 1506 1507/* normalize component */ 1508 1509var component = Object(componentNormalizer["a" /* default */])( 1510 script, 1511 render, 1512 staticRenderFns, 1513 false, 1514 null, 1515 null, 1516 null 1517 1518) 1519 1520/* harmony default export */ var IconAsterisk = __webpack_exports__["default"] = (component.exports); 1521 1522/***/ }), 1523 1524/***/ 548: 1525/***/ (function(module, __webpack_exports__, __webpack_require__) { 1526 1527"use strict"; 1528/* harmony default export */ __webpack_exports__["a"] = ({ 1529 computed: { 1530 required() { 1531 var isRequired = false; 1532 if (this.field.$params.length && !this.hideRequiredIndicator) { 1533 this.field.$params.forEach(param => { 1534 if (param.type === 'required') { 1535 isRequired = true; 1536 } 1537 }); 1538 } 1539 return isRequired; 1540 } 1541 } 1542}); 1543 1544/***/ }), 1545 1546/***/ 561: 1547/***/ (function(module, __webpack_exports__, __webpack_require__) { 1548 1549"use strict";
1550// ESM COMPAT FLAG 1551__webpack_require__.r(__webpack_exports__); 1552 1553// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--3-0!./node_modules/babel-loader/lib??ref--3-1!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/@nuxt/components/dist/loader.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./components/form/FormErrors.vue?vue&type=template&id=35986bb0 1554var render = function render() { 1555 var _vm = this, 1556 _c = _vm._self._c; 1557 return _vm.form.$errorMessage ? _c('div', { 1558 staticClass: "text-error" 1559 }, [_vm._v("\n " + _vm._s(_vm.form.$errorMessage) + "\n")]) : _vm._e(); 1560}; 1561var staticRenderFns = []; 1562 1563// CONCATENATED MODULE: ./components/form/FormErrors.vue?vue&type=template&id=35986bb0 1564 1565// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--3-0!./node_modules/babel-loader/lib??ref--3-1!./node_modules/@nuxt/components/dist/loader.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./components/form/FormErrors.vue?vue&type=script&lang=js 1566/* harmony default export */ var FormErrorsvue_type_script_lang_js = ({ 1567 props: { 1568 /** 1569 * A form object 1570 */ 1571 form: { 1572 type: Object, 1573 default: () => ({}) 1574 } 1575 }, 1576 watch: { 1577 'form.$hasError': function watchFormError(newVal) { 1578 if (newVal === true) { 1579 this.scrollToView(); 1580 } 1581 } 1582 }, 1583 methods: { 1584 scrollToView() { 1585 var error = document.querySelectorAll('.form-input-hint'); 1586 if (error && error[0]) { 1587 error[0].scrollIntoView({ 1588 behavior: 'smooth', 1589 block: 'center' 1590 }); 1591 } 1592 } 1593 } 1594}); 1595// CONCATENATED MODULE: ./components/form/FormErrors.vue?vue&type=script&lang=js 1596 /* harmony default export */ var form_FormErrorsvue_type_script_lang_js = (FormErrorsvue_type_script_lang_js); 1597// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js 1598var componentNormalizer = __webpack_require__(2); 1599 1600// CONCATENATED MODULE: ./components/form/FormErrors.vue 1601 1602 1603 1604 1605 1606/* normalize component */ 1607 1608var component = Object(componentNormalizer["a" /* default */])( 1609 form_FormErrorsvue_type_script_lang_js, 1610 render, 1611 staticRenderFns, 1612 false, 1613 null, 1614 null, 1615 null 1616 1617) 1618 1619/* harmony default export */ var FormErrors = __webpack_exports__["default"] = (component.exports); 1620 1621/***/ }), 1622 1623/***/ 562: 1624/***/ (function(module, __webpack_exports__, __webpack_require__) { 1625 1626"use strict";
1627// ESM COMPAT FLAG 1628__webpack_require__.r(__webpack_exports__); 1629 1630// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--3-0!./node_modules/babel-loader/lib??ref--3-1!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/@nuxt/components/dist/loader.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./components/icons/IconExclamationTriangle.vue?vue&type=template&id=7e8f5124 1631var render = function render() { 1632 var _vm = this, 1633 _c = _vm._self._c; 1634 return _c('svg', { 1635 staticClass: "inline-block fill-current", 1636 attrs: { 1637 "aria-hidden": "true", 1638 "focusable": "false", 1639 "role": "img", 1640 "xmlns": "http://www.w3.org/2000/svg", 1641 "viewBox": "0 0 576 512" 1642 } 1643 }, [_c('path', { 1644 attrs: { 1645 "d": "M569.5 440c18.5 32-4.7 72-41.6 72h-479.9c-36.9 0-60-40.1-41.6-72l239.9-416c18.5-32 64.7-32 83.2 0zM288 354c-25.4 0-46 20.6-46 46s20.6 46 46 46 46-20.6 46-46-20.6-46-46-46zM244.3 188.7l7.4 136c0.3 6.4 5.6 11.3 12 11.3h48.5c6.4 0 11.6-5 12-11.3l7.4-136c0.4-6.9-5.1-12.7-12-12.7h-63.4c-6.9 0-12.4 5.8-12 12.7z" 1646 } 1647 })]); 1648}; 1649var staticRenderFns = []; 1650 1651// CONCATENATED MODULE: ./components/icons/IconExclamationTriangle.vue?vue&type=template&id=7e8f5124 1652 1653// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js 1654var componentNormalizer = __webpack_require__(2); 1655 1656// CONCATENATED MODULE: ./components/icons/IconExclamationTriangle.vue 1657 1658var script = {} 1659 1660 1661/* normalize component */ 1662 1663var component = Object(componentNormalizer["a" /* default */])( 1664 script, 1665 render, 1666 staticRenderFns, 1667 false, 1668 null, 1669 null, 1670 null 1671 1672) 1673 1674/* harmony default export */ var IconExclamationTriangle = __webpack_exports__["default"] = (component.exports); 1675 1676/***/ }), 1677 1678/***/ 572: 1679/***/ (function(module, __webpack_exports__, __webpack_require__) { 1680 1681"use strict"; 1682/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_4_oneOf_1_0_node_modules_vue_style_loader_index_js_ref_4_oneOf_1_1_node_modules_css_loader_dist_cjs_js_ref_4_oneOf_1_2_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_4_oneOf_1_3_node_modules_nuxt_components_dist_loader_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SiteInput_vue_vue_type_style_index_0_id_736785a8_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(544); 1683/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_4_oneOf_1_0_node_modules_vue_style_loader_index_js_ref_4_oneOf_1_1_node_modules_css_loader_dist_cjs_js_ref_4_oneOf_1_2_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_4_oneOf_1_3_node_modules_nuxt_components_dist_loader_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SiteInput_vue_vue_type_style_index_0_id_736785a8_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_4_oneOf_1_0_node_modules_vue_style_loader_index_js_ref_4_oneOf_1_1_node_modules_css_loader_dist_cjs_js_ref_4_oneOf_1_2_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_4_oneOf_1_3_node_modules_nuxt_components_dist_loader_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SiteInput_vue_vue_type_style_index_0_id_736785a8_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__); 1684/* unused harmony reexport * */ 1685 1686 1687/***/ }), 1688 1689/***/ 573: 1690/***/ (function(module, exports, __webpack_require__) { 1691 1692// Imports 1693var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(19); 1694var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false); 1695// Module 1696___CSS_LOADER_EXPORT___.push([module.i, "input[data-v-736785a8],select[data-v-736785a8],textarea[data-v-736785a8]{border-radius:.25rem;border-width:1px;padding:.25rem .75rem;width:100%}.inline-label.has-label input[data-v-736785a8],.inline-label.has-label select[data-v-736785a8],.inline-label.has-label textarea[data-v-736785a8]{padding-top:1rem}div.input[data-v-736785a8]{border-radius:.25rem;border-width:1px;width:100%}select[data-v-736785a8]{padding-right:1rem}.inline-label label[data-v-736785a8]{left:10px;text-shadow:none;transform-origin:left top;transition:transform .15s cubic-bezier(.4,0,.2,1),color .15s cubic-bezier(.4,0,.2,1),width .15s;width:calc(100% - 20px)}.has-error label[data-v-736785a8]{--tw-text-opacity:1;color:#e22828;
1696color:hsla(0,76%,52%,var(--tw-text-opacity))}.has-error input[data-v-736785a8]{padding-right:2rem}input[data-v-736785a8]::-webkit-datetime-edit{color:transparent}input.has-value[data-v-736785a8]::-webkit-datetime-edit,input[data-v-736785a8]:focus::-webkit-datetime-edit{color:#333}.inline-label .input.focused~label[data-v-736785a8],.inline-label .input.has-value~label[data-v-736785a8],.inline-label .input:focus~label[data-v-736785a8],.inline-label span.has-value~label[data-v-736785a8]{padding-bottom:0;transform:translateY(-35%) scale(.75);width:auto}.inline-label .input.focused~label[data-v-736785a8]:not(.label-at-top),.inline-label .input.has-value~label[data-v-736785a8]:not(.label-at-top),.inline-label .input:focus~label[data-v-736785a8]:not(.label-at-top),.inline-label span.has-value~label[data-v-736785a8]:not(.label-at-top){top:12px!important}.inline-label .input.focused~label.compact[data-v-736785a8],.inline-label .input.has-value~label.compact[data-v-736785a8],.inline-label .input:focus~label.compact[data-v-736785a8],.inline-label span.has-value~label.compact[data-v-736785a8]{top:10px!important}.input[data-v-736785a8]{transition:border-color .1s ease-in-out}.input[data-v-736785a8]::-moz-placeholder{--tw-text-opacity:1;color:#b9b9b9;color:rgba(185,185,185,var(--tw-text-opacity))}.input[data-v-736785a8]::placeholder{--tw-text-opacity:1;color:#b9b9b9;color:rgba(185,185,185,var(--tw-text-opacity))}.dark .input[data-v-736785a8]::-moz-placeholder{--tw-text-opacity:1;color:#777;color:rgba(119,119,119,var(--tw-text-opacity))}.dark .input[data-v-736785a8]::placeholder{--tw-text-opacity:1;color:#777;color:rgba(119,119,119,var(--tw-text-opacity))}.inline-label .input[disabled]~label[data-v-736785a8]{background:transparent}.inline-label .input:-webkit-autofill~label[data-v-736785a8]{background:transparent;transform:translateY(-35%) scale(.75)}.input.focused[data-v-736785a8],.input[data-v-736785a8]:focus{outline-style:none}.has-error .input[data-v-736785a8]{--tw-border-opacity:1;border-color:#e22828;border-color:hsla(0,76%,52%,var(--tw-border-opacity))}.site-input .input[data-v-736785a8]:focus,.site-input:hover .btn[data-v-736785a8],.site-input:hover .input[data-v-736785a8]{--tw-border-opacity:1;border-color:hsl(var(--header-color)/var(--tw-border-opacity))}.site-input .input:focus~svg[data-v-736785a8]{--tw-text-opacity:1;color:hsl(var(--header-color)/1);color:hsl(var(--header-color)/var(--tw-text-opacity))}.secondary-styling .site-input .input[data-v-736785a8]:focus,.secondary-styling .site-input:hover .btn[data-v-736785a8],.secondary-styling .site-input:hover .input[data-v-736785a8]{--tw-border-opacity:1;border-color:hsl(var(--secondary-color-500)/var(--tw-border-opacity))}.secondary-styling .site-input .input:focus~svg[data-v-736785a8]{--tw-text-opacity:1;color:hsl(var(--secondary-header-color)/1);color:hsl(var(--secondary-header-color)/var(--tw-text-opacity))}.dark .input:-webkit-autofill~label[data-v-736785a8]{color:#333}.top-label label[data-v-736785a8]{font-size:1.25rem;line-height:1.75rem;min-width:-moz-max-content;min-width:max-content;padding-left:1rem;padding-right:1rem;top:.125rem}.top-label .input[disabled]~label[data-v-736785a8],.top-label label[data-v-736785a8]{--tw-bg-opacity:1;background-color:rgb(var(--bg-color)/1);background-color:rgb(var(--bg-color)/var(--tw-bg-opacity))}.top-label .input[data-v-736785a8]{font-weight:300;height:3.5rem;padding-left:1.25rem;padding-top:.375rem}", ""]); 1697// Exports 1698module.exports = ___CSS_LOADER_EXPORT___; 1699 1700 1701/***/ }) 1702 1703}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.