{"version":3,"file":"ClassicInputText-B7EAwP2N.mjs","names":[],"sources":["../src/components/form/ClassicInputText.vue","../src/components/form/ClassicInputText.vue"],"sourcesContent":["<template>\n  <div\n    class=\"d-flex flex-column classic-input-text\"\n    :class=\"{ 'form-margin': displayLabel }\"\n  >\n    <div class=\"d-flex align-items-center\">\n      <slot name=\"complementLabel\" />\n      <component\n        :is=\"isWysiwyg? 'div': 'label'\"\n        :class=\"[classLabel, displayLabel ? '' : 'd-none']\"\n        :for=\"isWysiwyg ? '': computedInputId\"\n      >\n        {{ label }}\n        <AsteriskIcon\n          v-if=\"displayRequired\"\n          :size=\"10\"\n          class=\"ms-1 mb-2\"\n          :title=\"t('Mandatory input')\"\n        />\n      </component>\n      <slot name=\"afterTitle\" />\n      <template v-if=\"popover\">\n        <button\n          :id=\"'popover' + computedInputId\"\n          :title=\"t('Help')\"\n          class=\"btn-transparent\"\n        >\n          <HelpCircleIcon :size=\"30\" />\n        </button>\n\n        <ClassicPopover\n          :target=\"'popover' + computedInputId\"\n          popover-class=\"popover-z-index\"\n          :relative-class=\"popoverRelativeClass\"\n        >\n          <!-- eslint-disable vue/no-v-html -->\n          <div v-html=\"popover\" />\n          <!-- eslint-enable -->\n        </ClassicPopover>\n      </template>\n      <slot name=\"afterHelp\" />\n    </div>\n    <slot name=\"betweenTitleInput\" />\n    <input\n      v-if=\"!isWysiwyg && !isTextarea\"\n      v-show=\"showField\"\n      :id=\"computedInputId\"\n      ref=\"focusElement\"\n      v-model=\"textValue\"\n      :type=\"typeInput\"\n      class=\"form-input\"\n      :placeholder=\"placeholder\"\n      :data-selenium=\"dataSelenium\"\n      :data-value=\"textValue\"\n      :maxlength=\"inputMaxLengthField\"\n      :readonly=\"readonly ? 'readonly' : undefined\"\n      :class=\"{\n        'border border-danger':\n          forceError || (isError && (undefined !== textValue || canBeNull)),\n      }\"\n      :disabled=\"isDisable || disabled\"\n      :required=\"!canBeNull\"\n      :aria-required=\"!canBeNull\"\n      :autocomplete=\"autocompleteType\"\n      @blur=\"emit('blur')\"\n    >\n    <textarea\n      v-else-if=\"isTextarea\"\n      v-show=\"showField\"\n      :id=\"computedInputId\"\n      ref=\"focusElement\"\n      v-model=\"textValue\"\n      :data-selenium=\"dataSelenium\"\n      :placeholder=\"placeholder\"\n      :readonly=\"readonly ? 'readonly' : undefined\"\n      class=\"form-input\"\n      :class=\"{\n        'border border-danger':\n          forceError || (isError && (undefined !== textValue || canBeNull)),\n      }\"\n      :disabled=\"isDisable || disabled\"\n      :required=\"!canBeNull\"\n    />\n    <ClassicWysiwyg\n      v-else\n      v-show=\"showField\"\n      v-model:content=\"textValue\"\n      :error-description=\"\n        forceError || (isError && (undefined !== textValue || canBeNull))\n      \"\n      :is-disabled=\"isDisable || disabled\"\n    />\n    <div class=\"d-flex\">\n      <ClassicEmojiPicker\n        v-if=\"isEmojiPicker\"\n        :popover-relative-class=\"popoverRelativeClass\"\n        :is-top-position=\"true\"\n        @emoji-selected=\"addEmojiSelected\"\n      />\n      <div\n        v-if=\"isWysiwyg\"\n        class=\"h6\"\n      >\n        {{ t(\"Characters number calculated over HTML code\") }}\n      </div>\n      <div\n        v-else-if=\"'' !== indicText\"\n        class=\"text-indic\"\n      >\n        {{ indicText }}\n      </div>\n      <div\n        v-else-if=\"\n          forceError || (isError && (undefined !== textValue || canBeNull))\n        \"\n        class=\"text-danger\"\n      >\n        {{ errorText }}\n      </div>\n      <p\n        v-if=\"0 !== maxLength && showField\"\n        class=\"counter-align-right\"\n        :class=\"{ 'text-danger': !valueLengthValid }\"\n      >\n        {{ countValue + \" / \" + maxLength }}\n      </p>\n    </div>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport AsteriskIcon from \"vue-material-design-icons/Asterisk.vue\";\nimport HelpCircleIcon from \"vue-material-design-icons/HelpCircle.vue\";\nimport { computed, defineAsyncComponent, onMounted, onUnmounted, Ref, ref, useTemplateRef, watch, getCurrentInstance } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nconst ClassicPopover = defineAsyncComponent(\n  () => import(\"../misc/ClassicPopover.vue\"),\n);\nconst ClassicWysiwyg = defineAsyncComponent(\n  () => import(\"./ClassicWysiwyg.vue\"),\n);\nconst ClassicEmojiPicker = defineAsyncComponent(\n  () => import(\"./ClassicEmojiPicker.vue\"),\n);\n\n//Props \nconst props = defineProps({\n  inputId: { default: \"\", type: String },\n  label: { default: \"\", type: String },\n  /** The input's value */\n  textInit: { default: undefined, type: String },\n  maxLength: { default: 0, type: Number },\n  errorText: { default: \"\", type: String },\n  isTextarea: { default: false, type: Boolean },\n  isWysiwyg: { default: false, type: Boolean },\n  /** A regex checked against the input, if the input doesn't match mark it with error */\n  regex: { default: undefined, type: RegExp },\n  canBeNull: { default: false, type: Boolean },\n  inputMaxLengthField: { default: undefined, type: Number },\n  errorVariable: { default: true, type: Boolean },\n  /**\n   * Disable the text input\n   * @deprecated Use `disabled` instead\n   */\n  isDisable: { default: false, type: Boolean },\n  /**\n   * Disable the text input\n   */\n  disabled: { default: false, type: Boolean },\n  indicText: { default: \"\", type: String },\n  dataSelenium: { default: \"\", type: String },\n  placeholder: { default: \"\", type: String },\n  popover: { default: undefined, type: String },\n  /**\n   * Display content but do not allow changes\n   */\n  readonly: { default: false, type: Boolean },\n  forceError: { default: false, type: Boolean },\n  displayLabel: { default: true, type: Boolean },\n  focus: { default: false, type: Boolean },\n  isEmojiPicker: { default: false, type: Boolean },\n  popoverRelativeClass: { default: undefined, type: String },\n  forceReload: { default: false, type: Boolean },\n  typeInput: { default: \"text\", type: String },\n  displayRequired: { default: false, type: Boolean },\n  classLabel: { default: \"form-label\", type: String },\n  showField: { default: true, type: Boolean },\n  autocompleteType: { default: \"off\", type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"update:textInit\", \"update:errorVariable\", \"blur\"]);\n\n//Data \nconst textValue : Ref<string | undefined>= ref(undefined);\nconst focusElementRef = useTemplateRef('focusElement');\n\n//Composables \nconst { t } = useI18n();\n\n//Computed\nconst computedInputId = computed(() => props.inputId || 'input-' + getCurrentInstance()?.uid);\nconst isError = computed(() => !valueTrimValid.value || !valueLengthValid.value || !valueRegexValid.value);\nconst countValue = computed(() => {\n  if (textValue.value) {\n    return textValue.value.length;\n  }\n  return 0;\n});\nconst valueTrimValid = computed(() => {\n  if (!props.canBeNull) {\n    if (!textValue.value) {\n      return false;\n    }\n    return 0 !== textValue.value.trim().length;\n  }\n  return true;\n});\nconst valueLengthValid = computed(() => {\n  if (0 === props.maxLength) {\n    return true;\n  }\n  return props.maxLength >= countValue.value;\n});\nconst valueRegexValid = computed(() => {\n  if (props.regex === undefined) {\n    return true;\n  }\n  if (!textValue.value || \"\" === textValue.value) {\n    return props.canBeNull;\n  }\n  return textValue.value.match(props.regex) !== null;\n});\n  \n//Watch\nwatch(()=>props.forceReload, () => {\n  if (props.textInit !== textValue.value) {\n    textValue.value = props.textInit;\n  }\n});\nwatch(isError, () => {\n  emit(\"update:errorVariable\", isError.value);\n});\nwatch(textValue, () => {\n  if (props.textInit !== textValue.value) {\n    emit(\"update:textInit\", textValue.value);\n  }\n});\nwatch(()=>props.textInit, () => {\n  if (props.textInit !== textValue.value) {\n    textValue.value = props.textInit;\n  }\n});\n\n\nonMounted(()=>{\n  if (props.focus) {\n    (focusElementRef?.value as HTMLElement)?.focus();\n  }\n  textValue.value = props.textInit;\n  if (props.errorVariable !== isError.value) {\n    emit(\"update:errorVariable\", isError.value);\n  }\n\n  if (props.isTextarea) {\n    // Delay a scroll back to the top of the text area\n    scrollTimer = setTimeout(() => {\n      const textArea = document.getElementById(computedInputId.value);\n      if (textArea) {\n        textArea.scrollTop = 0;\n      }\n    }, 100);\n  }\n});\n\nlet scrollTimer: ReturnType<typeof setTimeout> | undefined;\nonUnmounted(() => {\n  clearTimeout(scrollTimer);\n});\n \n//Methods\nfunction addEmojiSelected(emoji: string) {\n  textValue.value = (textValue.value ?? \"\") + emoji;\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app .classic-input-text {\n  .text-indic {\n    font-style: italic;\n    font-size: 0.7rem;\n    color: var(--octopus-gray-text);\n  }\n\n  textarea {\n    height: auto;\n    min-height: 120px;\n  }\n}\n</style>\n","<template>\n  <div\n    class=\"d-flex flex-column classic-input-text\"\n    :class=\"{ 'form-margin': displayLabel }\"\n  >\n    <div class=\"d-flex align-items-center\">\n      <slot name=\"complementLabel\" />\n      <component\n        :is=\"isWysiwyg? 'div': 'label'\"\n        :class=\"[classLabel, displayLabel ? '' : 'd-none']\"\n        :for=\"isWysiwyg ? '': computedInputId\"\n      >\n        {{ label }}\n        <AsteriskIcon\n          v-if=\"displayRequired\"\n          :size=\"10\"\n          class=\"ms-1 mb-2\"\n          :title=\"t('Mandatory input')\"\n        />\n      </component>\n      <slot name=\"afterTitle\" />\n      <template v-if=\"popover\">\n        <button\n          :id=\"'popover' + computedInputId\"\n          :title=\"t('Help')\"\n          class=\"btn-transparent\"\n        >\n          <HelpCircleIcon :size=\"30\" />\n        </button>\n\n        <ClassicPopover\n          :target=\"'popover' + computedInputId\"\n          popover-class=\"popover-z-index\"\n          :relative-class=\"popoverRelativeClass\"\n        >\n          <!-- eslint-disable vue/no-v-html -->\n          <div v-html=\"popover\" />\n          <!-- eslint-enable -->\n        </ClassicPopover>\n      </template>\n      <slot name=\"afterHelp\" />\n    </div>\n    <slot name=\"betweenTitleInput\" />\n    <input\n      v-if=\"!isWysiwyg && !isTextarea\"\n      v-show=\"showField\"\n      :id=\"computedInputId\"\n      ref=\"focusElement\"\n      v-model=\"textValue\"\n      :type=\"typeInput\"\n      class=\"form-input\"\n      :placeholder=\"placeholder\"\n      :data-selenium=\"dataSelenium\"\n      :data-value=\"textValue\"\n      :maxlength=\"inputMaxLengthField\"\n      :readonly=\"readonly ? 'readonly' : undefined\"\n      :class=\"{\n        'border border-danger':\n          forceError || (isError && (undefined !== textValue || canBeNull)),\n      }\"\n      :disabled=\"isDisable || disabled\"\n      :required=\"!canBeNull\"\n      :aria-required=\"!canBeNull\"\n      :autocomplete=\"autocompleteType\"\n      @blur=\"emit('blur')\"\n    >\n    <textarea\n      v-else-if=\"isTextarea\"\n      v-show=\"showField\"\n      :id=\"computedInputId\"\n      ref=\"focusElement\"\n      v-model=\"textValue\"\n      :data-selenium=\"dataSelenium\"\n      :placeholder=\"placeholder\"\n      :readonly=\"readonly ? 'readonly' : undefined\"\n      class=\"form-input\"\n      :class=\"{\n        'border border-danger':\n          forceError || (isError && (undefined !== textValue || canBeNull)),\n      }\"\n      :disabled=\"isDisable || disabled\"\n      :required=\"!canBeNull\"\n    />\n    <ClassicWysiwyg\n      v-else\n      v-show=\"showField\"\n      v-model:content=\"textValue\"\n      :error-description=\"\n        forceError || (isError && (undefined !== textValue || canBeNull))\n      \"\n      :is-disabled=\"isDisable || disabled\"\n    />\n    <div class=\"d-flex\">\n      <ClassicEmojiPicker\n        v-if=\"isEmojiPicker\"\n        :popover-relative-class=\"popoverRelativeClass\"\n        :is-top-position=\"true\"\n        @emoji-selected=\"addEmojiSelected\"\n      />\n      <div\n        v-if=\"isWysiwyg\"\n        class=\"h6\"\n      >\n        {{ t(\"Characters number calculated over HTML code\") }}\n      </div>\n      <div\n        v-else-if=\"'' !== indicText\"\n        class=\"text-indic\"\n      >\n        {{ indicText }}\n      </div>\n      <div\n        v-else-if=\"\n          forceError || (isError && (undefined !== textValue || canBeNull))\n        \"\n        class=\"text-danger\"\n      >\n        {{ errorText }}\n      </div>\n      <p\n        v-if=\"0 !== maxLength && showField\"\n        class=\"counter-align-right\"\n        :class=\"{ 'text-danger': !valueLengthValid }\"\n      >\n        {{ countValue + \" / \" + maxLength }}\n      </p>\n    </div>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport AsteriskIcon from \"vue-material-design-icons/Asterisk.vue\";\nimport HelpCircleIcon from \"vue-material-design-icons/HelpCircle.vue\";\nimport { computed, defineAsyncComponent, onMounted, onUnmounted, Ref, ref, useTemplateRef, watch, getCurrentInstance } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nconst ClassicPopover = defineAsyncComponent(\n  () => import(\"../misc/ClassicPopover.vue\"),\n);\nconst ClassicWysiwyg = defineAsyncComponent(\n  () => import(\"./ClassicWysiwyg.vue\"),\n);\nconst ClassicEmojiPicker = defineAsyncComponent(\n  () => import(\"./ClassicEmojiPicker.vue\"),\n);\n\n//Props \nconst props = defineProps({\n  inputId: { default: \"\", type: String },\n  label: { default: \"\", type: String },\n  /** The input's value */\n  textInit: { default: undefined, type: String },\n  maxLength: { default: 0, type: Number },\n  errorText: { default: \"\", type: String },\n  isTextarea: { default: false, type: Boolean },\n  isWysiwyg: { default: false, type: Boolean },\n  /** A regex checked against the input, if the input doesn't match mark it with error */\n  regex: { default: undefined, type: RegExp },\n  canBeNull: { default: false, type: Boolean },\n  inputMaxLengthField: { default: undefined, type: Number },\n  errorVariable: { default: true, type: Boolean },\n  /**\n   * Disable the text input\n   * @deprecated Use `disabled` instead\n   */\n  isDisable: { default: false, type: Boolean },\n  /**\n   * Disable the text input\n   */\n  disabled: { default: false, type: Boolean },\n  indicText: { default: \"\", type: String },\n  dataSelenium: { default: \"\", type: String },\n  placeholder: { default: \"\", type: String },\n  popover: { default: undefined, type: String },\n  /**\n   * Display content but do not allow changes\n   */\n  readonly: { default: false, type: Boolean },\n  forceError: { default: false, type: Boolean },\n  displayLabel: { default: true, type: Boolean },\n  focus: { default: false, type: Boolean },\n  isEmojiPicker: { default: false, type: Boolean },\n  popoverRelativeClass: { default: undefined, type: String },\n  forceReload: { default: false, type: Boolean },\n  typeInput: { default: \"text\", type: String },\n  displayRequired: { default: false, type: Boolean },\n  classLabel: { default: \"form-label\", type: String },\n  showField: { default: true, type: Boolean },\n  autocompleteType: { default: \"off\", type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"update:textInit\", \"update:errorVariable\", \"blur\"]);\n\n//Data \nconst textValue : Ref<string | undefined>= ref(undefined);\nconst focusElementRef = useTemplateRef('focusElement');\n\n//Composables \nconst { t } = useI18n();\n\n//Computed\nconst computedInputId = computed(() => props.inputId || 'input-' + getCurrentInstance()?.uid);\nconst isError = computed(() => !valueTrimValid.value || !valueLengthValid.value || !valueRegexValid.value);\nconst countValue = computed(() => {\n  if (textValue.value) {\n    return textValue.value.length;\n  }\n  return 0;\n});\nconst valueTrimValid = computed(() => {\n  if (!props.canBeNull) {\n    if (!textValue.value) {\n      return false;\n    }\n    return 0 !== textValue.value.trim().length;\n  }\n  return true;\n});\nconst valueLengthValid = computed(() => {\n  if (0 === props.maxLength) {\n    return true;\n  }\n  return props.maxLength >= countValue.value;\n});\nconst valueRegexValid = computed(() => {\n  if (props.regex === undefined) {\n    return true;\n  }\n  if (!textValue.value || \"\" === textValue.value) {\n    return props.canBeNull;\n  }\n  return textValue.value.match(props.regex) !== null;\n});\n  \n//Watch\nwatch(()=>props.forceReload, () => {\n  if (props.textInit !== textValue.value) {\n    textValue.value = props.textInit;\n  }\n});\nwatch(isError, () => {\n  emit(\"update:errorVariable\", isError.value);\n});\nwatch(textValue, () => {\n  if (props.textInit !== textValue.value) {\n    emit(\"update:textInit\", textValue.value);\n  }\n});\nwatch(()=>props.textInit, () => {\n  if (props.textInit !== textValue.value) {\n    textValue.value = props.textInit;\n  }\n});\n\n\nonMounted(()=>{\n  if (props.focus) {\n    (focusElementRef?.value as HTMLElement)?.focus();\n  }\n  textValue.value = props.textInit;\n  if (props.errorVariable !== isError.value) {\n    emit(\"update:errorVariable\", isError.value);\n  }\n\n  if (props.isTextarea) {\n    // Delay a scroll back to the top of the text area\n    scrollTimer = setTimeout(() => {\n      const textArea = document.getElementById(computedInputId.value);\n      if (textArea) {\n        textArea.scrollTop = 0;\n      }\n    }, 100);\n  }\n});\n\nlet scrollTimer: ReturnType<typeof setTimeout> | undefined;\nonUnmounted(() => {\n  clearTimeout(scrollTimer);\n});\n \n//Methods\nfunction addEmojiSelected(emoji: string) {\n  textValue.value = (textValue.value ?? \"\") + emoji;\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app .classic-input-text {\n  .text-indic {\n    font-style: italic;\n    font-size: 0.7rem;\n    color: var(--octopus-gray-text);\n  }\n\n  textarea {\n    height: auto;\n    min-height: 120px;\n  }\n}\n</style>\n"],"mappings":"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"}