{"version":3,"file":"TextInput-1tiHRv4V.js","sources":["../../../components/planner/app/javascript/mixins/computedStyle.js","../../../app/javascript/components/shared/TextInput.vue"],"sourcesContent":["export default {\n computed: {\n computedStyle() {\n return (theme, element) => {\n if (theme[element].reference && theme.textPresets) {\n return theme.textPresets.find(\n preset => preset.id === theme[element].reference\n );\n }\n return theme[element];\n };\n }\n }\n};\n","<template>\n <div\n :class=\"{ 'has-errors': hasErrors }\"\n class=\"form-input text-input\">\n <label\n v-if=\"label.length\"\n :for=\"inputId\"\n :class=\"theme ? null : labelClass\"\n class=\"mb-2 control-label flex items-baseline\"\n data-element=\"labelStyles\"\n :style=\"labelStyles\">\n <span v-html=\"label\"></span>\n <span\n v-if=\"required\"\n class=\"text-red\">\n *\n </span>\n <a\n v-if=\"type === 'password'\"\n class=\"underline typeset-8 cursor-pointer space-between ml-auto\"\n @click=\"showHidePassword\">\n {{\n showingPassword\n ? t(\"login-modal.form.hide-password\")\n : t(\"login-modal.form.show-password\")\n }}\n </a>\n </label>\n <div class=\"flex relative\">\n <input\n :id=\"inputId\"\n ref=\"input\"\n data-element=\"textInput\"\n :data-cy=\"inputId\"\n :style=\"textInputTheme\"\n :value=\"modelValue\"\n :placeholder=\"placeholder\"\n :type=\"dynamicFieldType\"\n :min=\"minimumAttr\"\n :max=\"maximumAttr\"\n :maxlength=\"maxLength\"\n :class=\"[\n theme ? 'themed-text-input' : 'form-control',\n { uppercase, bordered }\n ]\"\n :inputmode=\"inputmode\"\n :autocorrect=\"autocorrect\"\n :autocomplete=\"autocomplete\"\n :autocapitalize=\"autocapitalize\"\n :step=\"step\"\n @keypress=\"onlyNumber\"\n @blur=\"$emit('blur')\"\n @paste=\"checkPreventPaste\"\n @input=\"handleInput($event.target.value)\" />\n <fade-transition>\n <div\n v-if=\"status === 'success'\"\n class=\"absolute right-3 top-3\">\n <svg-icon\n class=\"text-green\"\n width=\"16px\"\n height=\"16px\"\n name=\"tick\" />\n </div>\n <div\n v-else-if=\"status === 'error'\"\n class=\"absolute right-3 top-3\">\n <svg-icon\n class=\"text-red\"\n width=\"16px\"\n height=\"16px\"\n name=\"cross\" />\n </div>\n <div\n v-else-if=\"status === 'loading'\"\n class=\"loading\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n class=\"absolute right-3 top-3\"\n width=\"20px\"\n height=\"20px\"\n viewBox=\"0 0 10 10\"\n preserveAspectRatio=\"xMidYMid\">\n <circle\n cx=\"5\"\n cy=\"5\"\n fill=\"none\"\n stroke=\"#1e2525\"\n stroke-width=\"1\"\n r=\"3\"\n stroke-dasharray=\"14.137166941154069 6.71238898038469\">\n <animateTransform\n attributeName=\"transform\"\n type=\"rotate\"\n repeatCount=\"indefinite\"\n dur=\"1s\"\n values=\"0 5 5;360 5 5\"\n keyTimes=\"0;1\" />\n </circle>\n </svg>\n </div>\n </fade-transition>\n </div>\n <div\n v-if=\"hasErrors && !hideErrorMessage\"\n data-cy=\"input-error-message\"\n class=\"error-box mt-2\">\n {{ inputErrors.join(\", \") }}\n </div>\n <slide-transition>\n <p\n v-if=\"explanation.length\"\n class=\"typeset-8 my-3\">\n {{ explanation }}\n </p>\n </slide-transition>\n </div>\n</template>\n\n<script>\nimport SlideTransition from \"@/app/javascript/components/transitions/SlideTransition.vue\";\nimport FadeTransition from \"@/app/javascript/components/transitions/FadeTransition.vue\";\nimport SvgIcon from \"@/app/javascript/components/shared/SvgIcon.vue\";\nimport computedStyle from \"@/components/planner/app/javascript/mixins/computedStyle\";\n\nexport default {\n name: \"TextInput\",\n components: {\n SlideTransition,\n FadeTransition,\n SvgIcon\n },\n mixins: [computedStyle],\n props: {\n theme: {\n type: Object,\n default: () => {}\n },\n modelValue: {\n type: [String, Number],\n default: \"\"\n },\n label: {\n type: String,\n default: \"\"\n },\n required: {\n type: Boolean,\n default: false\n },\n placeholder: {\n type: String,\n default: \"\"\n },\n type: {\n type: String,\n default: \"text\"\n },\n min: {\n type: [String, Number],\n default: \"2014-01-01\",\n required: false\n },\n max: {\n type: [String, Number],\n default: new Date().toISOString().slice(0, 10),\n required: false\n },\n inputId: {\n type: String,\n required: true,\n default: \"\"\n },\n errors: {\n type: Array,\n default: () => []\n },\n explanation: {\n type: String,\n default: \"\"\n },\n labelClass: {\n type: String,\n required: false,\n default: \"typeset-6\"\n },\n maxLength: {\n type: Number,\n required: false,\n default: null\n },\n pattern: {\n type: RegExp,\n required: false,\n default: null\n },\n preventPaste: {\n type: Boolean,\n required: false,\n default: false\n },\n inputmode: {\n type: String,\n default: null\n },\n status: {\n type: String,\n default: null,\n validator: value => [\"error\", \"success\", \"loading\", null].includes(value)\n },\n loading: {\n type: Boolean,\n default: false\n },\n success: {\n type: Boolean,\n default: false\n },\n autocapitalize: {\n type: String,\n default: null,\n required: false\n },\n autocorrect: {\n type: String,\n default: null,\n required: false\n },\n autocomplete: {\n type: String,\n default: null,\n required: false\n },\n step: {\n type: Number,\n default: 1,\n required: false\n },\n uppercase: {\n type: Boolean,\n default: false\n },\n bordered: {\n type: Boolean,\n default: false\n },\n numberOnlyInput: {\n type: Boolean,\n default: false\n },\n hideErrorMessage: {\n type: Boolean,\n default: false\n }\n },\n emits: [\"update:modelValue\", \"errored-pattern\", \"blur\"],\n data() {\n return {\n showingPassword: false\n };\n },\n computed: {\n dynamicFieldType() {\n if (this.type === \"password\") {\n return this.showingPassword ? \"text\" : \"password\";\n }\n return this.type;\n },\n textInputTheme() {\n if (this.theme) {\n return {\n borderRadius: this.theme.textInput.borderRadius,\n borderWidth: this.theme.textInput.borderWidth,\n fontFamily: this.theme.textInput.fontFamily,\n outline: this.theme.textInput.outline,\n letterSpacing: this.theme.textInput.letterSpacing,\n \"--text-input-color\": this.theme.textInput.color,\n \"--text-input-hover-color\": this.theme.textInput.hover.color,\n \"--text-input-focus-color\": this.theme.textInput.focus.color,\n \"--text-input-background-color\": this.theme.textInput.backgroundColor,\n \"--text-input-hover-background-color\":\n this.theme.textInput.hover.backgroundColor,\n \"--text-input-focus-background-color\":\n this.theme.textInput.focus.backgroundColor,\n \"--text-input-border-color\": this.theme.textInput.borderColor,\n \"--text-input-hover-border-color\":\n this.theme.textInput.hover.borderColor,\n \"--text-input-focus-border-color\":\n this.theme.textInput.focus.borderColor,\n \"--text-input-box-shadow\": this.theme.textInput.boxShadow,\n \"--text-input-hover-box-shadow\": this.theme.textInput.hover.boxShadow,\n \"--text-input-focus-box-shadow\": this.theme.textInput.focus.boxShadow,\n \"--text-input-placeholder-color\":\n this.theme.textInput.placeholder.color\n };\n }\n return null;\n },\n labelStyles() {\n if (this.theme) {\n return this.computedStyle(this.theme, \"labelStyles\");\n }\n return null;\n },\n inputErrors() {\n return this.errors || [];\n },\n hasErrors() {\n return this.inputErrors.length > 0;\n },\n minimumAttr() {\n if (this.type === \"date\" || this.type === \"number\") {\n return this.min;\n }\n\n return \"\";\n },\n maximumAttr() {\n if (this.type === \"date\" || this.type === \"number\") {\n return this.max;\n }\n\n return \"\";\n }\n },\n methods: {\n onlyNumber(event) {\n if (!this.numberOnlyInput) return;\n const char = String.fromCharCode(event.keyCode);\n if (!/[0-9]/.test(char)) {\n event.preventDefault();\n }\n },\n handleInput(value) {\n if (value.length && this.pattern && !this.pattern.test(value)) {\n if (this.pattern.test(value.toUpperCase())) {\n this.$refs.input.value = value.toUpperCase();\n this.$emit(\"update:modelValue\", value.toUpperCase());\n } else {\n this.$emit(\"errored-pattern\");\n }\n } else if (this.type === \"number\") {\n this.$emit(\"update:modelValue\", parseFloat(value));\n } else {\n this.$emit(\"update:modelValue\", value);\n }\n },\n checkPreventPaste(e) {\n if (this.preventPaste) {\n e.preventDefault();\n }\n },\n focus() {\n this.$refs.input.focus();\n },\n showHidePassword() {\n this.showingPassword = !this.showingPassword;\n return this.showingPassword;\n }\n }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.themed-text-input {\n // Set some defaults, in case these aren't set in the custom theme.\n --text-input-color: #343434;\n --text-input-hover-color: #343434;\n --text-input-focus-color: #343434;\n --text-input-background-color: #efefef;\n --text-input-border-color: #efefef;\n --text-input-hover-background-color: #ffffff;\n --text-input-hover-border-color: #121212;\n --text-input-font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\",\n Roboto, Arial, sans-serif;\n --text-input-box-shadow: inset 0 2px 4px 0 rgba(0, 37, 84, 0.08);\n\n color: var(--text-input-color);\n background-color: var(--text-input-background-color);\n border-color: var(--text-input-border-color);\n box-shadow: var(--text-input-box-shadow);\n\n // Interaction styles (hover/focus) must use css variables\n &:hover {\n color: var(--text-input-hover-color);\n background-color: var(--text-input-hover-background-color);\n border-color: var(--text-input-hover-border-color);\n box-shadow: var(--text-input-hover-box-shadow);\n }\n\n &:focus {\n color: var(--text-input-focus-color);\n background-color: var(--text-input-focus-background-color);\n border-color: var(--text-input-focus-border-color);\n box-shadow: var(--text-input-focus-box-shadow);\n }\n\n &::placeholder {\n color: var(--text-input-placeholder-color);\n }\n}\n</style>\n"],"names":["computedStyle","theme","element","preset","_sfc_main","SlideTransition","FadeTransition","SvgIcon","value","event","char","e","_hoisted_1","_hoisted_2","_hoisted_4","_hoisted_5","_createElementBlock","_normalizeClass","$options","$props","_normalizeStyle","_createElementVNode","_hoisted_3","_createCommentVNode","args","$data","_ctx","$event","_createVNode","_component_fade_transition","_withCtx","_openBlock","_hoisted_6","_component_svg_icon","_hoisted_7","_hoisted_8","_cache","_hoisted_9","_toDisplayString","_component_slide_transition","_hoisted_10"],"mappings":"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"}