{"version":3,"names":["async","handleCustomValidationDelegate","component","errorMessage","customErrorMessage","hasError","length","customValidatorHasError","validate","validateRequiredValueDelegate","hasValue","value","isInvalid","required","currentLocalization","setCurrentLocalizationDelegate","requiredMessage","customRequiredMessage","validateDelegate","isRequiredValid","validateRequired","invalid"],"sources":["src/common/form-component.ts"],"sourcesContent":["import { EventEmitter } from \"@stencil/core\";\nimport { LocalizableComponent, DefaultLocalization, setCurrentLocalizationDelegate } from \"./localizable-component\";\n\nexport interface FormComponent extends LocalizableComponent {\n name: string;\n label: string;\n value: string;\n disabled: boolean;\n required: boolean;\n invalid: boolean;\n valueChanged: EventEmitter;\n errorMessage: string;\n customErrorMessage: string;\n customValidatorHasError: boolean;\n customRequiredMessage: string;\n validateRequired(): Promise;\n handleCustomValidation(errorMessage: string): Promise;\n validate(): Promise;\n}\n\n/**\n * Saves the given error message and assumes that the component is invalid if any error message is provided.\n * Define the calling wrapper function as @Method() in your component to be able to call it from outside.\n * @param component The FormComponent that should handle the custom validation.\n * @param errorMessage An error message of a custom validator. If none is supplied, the custom validation is considered to be valid.\n */\nexport async function handleCustomValidationDelegate(\n component: FormComponent,\n errorMessage: string\n): Promise {\n component.customErrorMessage = \"\";\n const hasError = errorMessage != null && errorMessage.length > 0;\n component.customErrorMessage = hasError ? errorMessage : component.errorMessage;\n component.customValidatorHasError = hasError;\n await component.validate();\n}\n\n/**\n * Validates that the component has a value if the required attribute is set.\n */\nexport async function validateRequiredValueDelegate(\n component: FormComponent\n): Promise {\n const hasValue = component.value != null && component.value.length > 0;\n const isInvalid = component.required && !hasValue;\n if (!component.currentLocalization) {\n setCurrentLocalizationDelegate(component);\n }\n const requiredMessage = component.customRequiredMessage\n ? component.customRequiredMessage\n : component.currentLocalization.required;\n if (isInvalid) component.errorMessage = requiredMessage;\n return !isInvalid;\n}\n\n/**\n * First validates that the component has a value if it is required, then runs custom validation.\n */\nexport async function validateDelegate(\n component: FormComponent\n): Promise {\n const isRequiredValid = await component.validateRequired();\n component.invalid = !isRequiredValid || component.customValidatorHasError;\n component.errorMessage = !isRequiredValid ? component.errorMessage : component.customErrorMessage;\n return !component.invalid;\n}\n"],"mappings":"oCA0BOA,eAAeC,EACpBC,EACAC,GAEAD,EAAUE,mBAAqB,GAC/B,MAAMC,EAAWF,GAAgB,MAAQA,EAAaG,OAAS,EAC/DJ,EAAUE,mBAAqBC,EAAWF,EAAeD,EAAUC,aACnED,EAAUK,wBAA0BF,QAC9BH,EAAUM,UAClB,CAKOR,eAAeS,EACpBP,GAEA,MAAMQ,EAAWR,EAAUS,OAAS,MAAQT,EAAUS,MAAML,OAAS,EACrE,MAAMM,EAAYV,EAAUW,WAAaH,EACzC,IAAKR,EAAUY,oBAAqB,CAClCC,EAA+Bb,E,CAEjC,MAAMc,EAAkBd,EAAUe,sBAC9Bf,EAAUe,sBACVf,EAAUY,oBAAoBD,SAClC,GAAID,EAAWV,EAAUC,aAAea,EACxC,OAAQJ,CACV,CAKOZ,eAAekB,EACpBhB,GAEA,MAAMiB,QAAwBjB,EAAUkB,mBACxClB,EAAUmB,SAAWF,GAAmBjB,EAAUK,wBAClDL,EAAUC,cAAgBgB,EAAkBjB,EAAUC,aAAeD,EAAUE,mBAC/E,OAAQF,EAAUmB,OACpB,Q"}