{"version":3,"file":"mt-base-field-7a978dcf.mjs","sources":["../src/composables/useEmptySlotCheck.ts","../src/services/validation.service.ts","../src/mixins/validation.mixin.ts","../src/mixins/form-field.mixin.ts","../src/components/form/_internal/mt-base-field/mt-base-field.vue"],"sourcesContent":["import { Comment, Text, type Slot, type VNode, Fragment } from \"vue\";\n\nfunction hasSlotContent(slot: Slot | undefined | null, props: any = {}) {\n  return !isSlotEmpty(slot, props);\n}\n\nfunction isSlotEmpty(slot: Slot | undefined | null, props: any = {}) {\n  return isVNodeEmpty(slot?.(props));\n}\n\nfunction isVNodeEmpty(vnode: VNode | VNode[] | undefined | null) {\n  return (\n    !vnode ||\n    asArray(vnode).every(\n      (vnode) =>\n        vnode.type === Comment ||\n        (vnode.type === Text && !vnode.children?.length) ||\n        (vnode.type === Fragment && !vnode.children?.length),\n    )\n  );\n}\n\nfunction asArray<T>(arg: T | T[] | null) {\n  return Array.isArray(arg) ? arg : arg !== null ? [arg] : [];\n}\n\nexport default function useEmptySlotCheck() {\n  return {\n    hasSlotContent,\n    isSlotEmpty,\n  };\n}\n","/**\n * Checks if a value is set based on its type.\n */\nexport function required(value: unknown): boolean {\n  if (typeof value === \"string\" && value.length <= 0) {\n    return false;\n  }\n\n  if (typeof value === \"boolean\") {\n    return value === true;\n  }\n\n  if (value instanceof Object) {\n    return Object.keys(value).length > 0;\n  }\n\n  return typeof value !== \"undefined\" && value !== null;\n}\n\n/**\n * Checks the value against the given regular expression.\n */\nexport function regex(value: string, expression: RegExp | string): boolean {\n  if (expression instanceof RegExp) {\n    return expression.test(value);\n  }\n\n  return new RegExp(expression).test(value);\n}\n\n/**\n * Checks if the value is a valid email address.\n */\nexport function email(value: string): boolean {\n  const emailValidation =\n    // eslint-disable-next-line no-useless-escape\n    /^(([^<>()\\[\\]\\\\.,;:\\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,}))$/;\n\n  return regex(value, emailValidation);\n}\n\nexport default {\n  required,\n  regex,\n  email,\n};\n","import { defineComponent } from \"vue\";\nimport validationService from \"../services/validation.service\";\n\nexport default defineComponent({\n  props: {\n    validation: {\n      type: [String, Array, Object, Boolean],\n      required: false,\n      default: null,\n    },\n  },\n\n  computed: {\n    isValid(): boolean {\n      // @ts-expect-error\n      const value = this.currentValue || this.value || this.selections;\n\n      return this.validate(value);\n    },\n  },\n\n  methods: {\n    validate(value: unknown): boolean {\n      let { validation } = this;\n      let valid = true;\n\n      if (typeof validation === \"boolean\") {\n        return validation;\n      }\n\n      if (typeof validation === \"string\") {\n        const validationList = validation.split(\",\");\n\n        if (validationList.length > 1) {\n          validation = validationList;\n        } else {\n          // @ts-expect-error\n          valid = this.validateRule(value, this.validation);\n        }\n      }\n\n      if (Array.isArray(validation)) {\n        valid = validation.every((validationRule) => {\n          if (typeof validationRule === \"boolean\") {\n            return validationRule;\n          }\n\n          return this.validateRule(value, validationRule.trim());\n        });\n      }\n\n      return valid;\n    },\n\n    validateRule(value: unknown, rule: string): boolean {\n      // @ts-expect-error\n      if (typeof validationService[rule] === \"undefined\") {\n        return false;\n      }\n\n      // @ts-expect-error\n      return validationService[rule](value);\n    },\n  },\n});\n","import { defineComponent } from \"vue\";\n\nexport default defineComponent({\n  props: {\n    mapInheritance: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n\n    name: {\n      type: String,\n      required: false,\n      default: null,\n    },\n  },\n\n  computed: {\n    formFieldName() {\n      if (this.$attrs.name) {\n        return this.$attrs.name as string;\n      }\n\n      if (this.name) {\n        return this.name;\n      }\n\n      return undefined;\n    },\n  },\n});\n","<template>\n  <div\n    class=\"mt-field\"\n    :class=\"[\n      {\n        'has--error': hasError,\n        'is--disabled': disabled,\n        'is--inherited': isInherited,\n        'has--focus': hasFocus,\n        'mt-field--future-remove-default-margin': future.removeDefaultMargin,\n      },\n      mtBlockSize,\n    ]\"\n  >\n    <div class=\"mt-field__label\">\n      <mt-inheritance-switch\n        v-if=\"isInheritanceField\"\n        :disabled=\"disableInheritanceToggle\"\n        class=\"mt-field__inheritance-icon\"\n        :is-inherited=\"isInherited\"\n        v-bind=\"{ ...$attrs, class: '' }\"\n      />\n\n      <label v-if=\"showLabel\" :for=\"identification\" :class=\"mtFieldLabelClasses\">\n        <slot name=\"label\" />\n      </label>\n\n      <mt-help-text\n        v-if=\"helpText\"\n        class=\"mt-field__help-text\"\n        :text=\"helpText\"\n        placement=\"right\"\n      />\n    </div>\n\n    <div class=\"mt-block-field__block\">\n      <div class=\"mt-field__addition is--prefix\">\n        <slot name=\"field-prefix\" v-bind=\"{ disabled, identification }\" />\n      </div>\n\n      <slot name=\"element\" v-bind=\"{ disabled, identification }\" />\n\n      <div v-if=\"copyable\" class=\"mt-field__addition\">\n        <mt-field-copyable\n          :display-name=\"identification\"\n          :copyable-text=\"copyableText\"\n          :tooltip=\"copyableTooltip\"\n        />\n      </div>\n\n      <div v-else class=\"mt-field__addition\">\n        <slot name=\"field-suffix\" v-bind=\"{ disabled, identification }\" />\n      </div>\n    </div>\n\n    <slot name=\"error\" />\n\n    <div class=\"mt-field__hint-wrapper\">\n      <div class=\"mt-field__hint\">\n        <slot name=\"field-hint\" />\n      </div>\n\n      <div class=\"mt-field__hint-right\">\n        <slot name=\"field-hint-right\" />\n      </div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport MtInheritanceSwitch from \"../mt-inheritance-switch/mt-inheritance-switch.vue\";\nimport MtFieldCopyable from \"../mt-field-copyable/mt-field-copyable.vue\";\nimport MtHelpText from \"../../mt-help-text/mt-help-text.vue\";\nimport useEmptySlotCheck from \"../../../../composables/useEmptySlotCheck\";\nimport MtValidationMixin from \"../../../../mixins/validation.mixin\";\nimport MtFormFieldMixin from \"../../../../mixins/form-field.mixin\";\nimport { createId } from \"../../../../utils/id\";\nimport { useFutureFlags } from \"@/composables/useFutureFlags\";\n\nexport default defineComponent({\n  name: \"MtBaseField\",\n\n  components: {\n    \"mt-inheritance-switch\": MtInheritanceSwitch,\n    \"mt-help-text\": MtHelpText,\n    \"mt-field-copyable\": MtFieldCopyable,\n  },\n\n  mixins: [MtFormFieldMixin, MtValidationMixin],\n\n  props: {\n    /**\n     * Determines if the field is disabled.\n     */\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n\n    /**\n     * Determines if the field is required.\n     */\n    required: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n\n    /**\n     * Toggles the inheritance visualization.\n     */\n    isInherited: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n\n    /**\n     * Determines if the field is inheritable.\n     */\n    isInheritanceField: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n\n    /**\n     * Determines the active state of the inheritance toggle.\n     */\n    disableInheritanceToggle: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n\n    /**\n     * Toggles the copy function of the text field.\n     */\n    copyable: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n\n    /**\n     * If set to true the tooltip will change on successful copy.\n     */\n    copyableTooltip: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n\n    hasFocus: {\n      type: Boolean,\n      required: true,\n    },\n\n    /**\n     * A text that helps the user to understand what this field does.\n     */\n    helpText: {\n      type: String,\n      required: false,\n      default: \"\",\n    },\n\n    copyableText: {\n      type: String,\n      required: false,\n      default: \"\",\n    },\n\n    /**\n     * The size of the text field.\n     *\n     * @values small, default\n     */\n    size: {\n      type: String,\n      required: false,\n      default: \"default\",\n      validator(value: string) {\n        return [\"small\", \"default\"].includes(value);\n      },\n    },\n\n    /**\n     * @ignore\n     */\n    name: {\n      type: String,\n      required: false,\n      default: null,\n    },\n  },\n\n  data(): { id: string | undefined } {\n    return {\n      id: undefined,\n    };\n  },\n\n  mounted() {\n    this.id = createId();\n  },\n\n  computed: {\n    identification(): string {\n      if (this.name) {\n        return this.name;\n      }\n\n      return `mt-field--${this.id}`;\n    },\n\n    showLabel(): boolean {\n      // @ts-expect-error - label exists on scopedSlots and if not we use optional chaining\n      return !!this.$slots.label || !!this.$slots.label?.();\n    },\n\n    mtFieldLabelClasses(): { \"is--required\": boolean } {\n      return {\n        \"is--required\": this.required,\n      };\n    },\n\n    mtBlockSize(): string {\n      return `mt-field--${this.size}`;\n    },\n\n    hasError(): boolean {\n      return this.hasSlotContent(this.$slots.error);\n    },\n  },\n\n  setup() {\n    const { hasSlotContent } = useEmptySlotCheck();\n    const future = useFutureFlags();\n\n    return {\n      hasSlotContent,\n      future,\n    };\n  },\n});\n</script>\n\n<style lang=\"css\">\n.mt-field {\n  width: 100%;\n  margin-bottom: var(--scale-size-32);\n}\n\n.mt-field .mt-field__help-text {\n  margin-left: var(--scale-size-4);\n  align-self: center;\n}\n\n.mt-field.has--error {\n  margin-bottom: var(--scale-size-12);\n}\n\n.mt-field.is--disabled {\n  cursor: not-allowed;\n}\n\n.mt-field__hint-wrapper {\n  display: flex;\n  justify-content: space-between;\n}\n\n.mt-field__hint,\n.mt-field__hint-right {\n  margin-top: var(--scale-size-4);\n  font-size: var(--font-size-xs);\n  line-height: var(--font-line-height-xs);\n  font-family: var(--font-family-body);\n  color: var(--color-text-secondary-default);\n  display: flex;\n  align-items: center;\n  gap: var(--scale-size-8);\n}\n\n.mt-field__hint:empty,\n.mt-field__hint-right:empty {\n  display: none;\n}\n\n.mt-field__hint-right {\n  justify-content: flex-end;\n}\n\n.mt-field input:-webkit-autofill {\n  -webkit-box-shadow: 0 0 0 1000px #fff inset;\n}\n\n.mt-field .mt-block-field__block {\n  display: flex;\n  min-height: var(--scale-size-48);\n  border: 1px solid var(--color-border-primary-default);\n  border-radius: var(--border-radius-xs);\n  overflow: hidden;\n}\n\n.mt-field input,\n.mt-field select,\n.mt-field textarea {\n  display: block;\n  width: 100%;\n  min-width: 0;\n  padding: 13px var(--scale-size-16);\n  border: none;\n  background: var(--color-background-primary-default);\n  font-size: var(--font-size-xs);\n  font-family: var(--font-size-body);\n  line-height: 1;\n  transition:\n    border-color 0.3s ease-out,\n    background 0.3s ease;\n  color: var(--color-text-primary-default);\n  outline: none;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n}\n\n.mt-field input:invalid,\n.mt-field input:-moz-submit-invalid,\n.mt-field input:-moz-ui-invalid,\n.mt-field select:invalid,\n.mt-field select:-moz-submit-invalid,\n.mt-field select:-moz-ui-invalid,\n.mt-field textarea:invalid,\n.mt-field textarea:-moz-submit-invalid,\n.mt-field textarea:-moz-ui-invalid {\n  box-shadow: none;\n}\n\n.mt-field input:disabled,\n.mt-field select:disabled,\n.mt-field textarea:disabled {\n  background: var(--color-background-tertiary-default);\n  border-color: #d1d9e0;\n  cursor: default !important;\n}\n\n.mt-field input::placeholder,\n.mt-field select::placeholder,\n.mt-field textarea::placeholder {\n  color: var(--color-text-secondary-default);\n}\n\n.mt-field.has--focus .mt-block-field__block {\n  outline: var(--scale-size-2) solid var(--color-border-brand-default);\n  outline-offset: var(--scale-size-2);\n}\n\n.mt-field.has--error label {\n  color: var(--color-text-critical-default);\n}\n\n.mt-field.has--error.mt-field input {\n  background-color: var(--color-background-critical-default);\n}\n\n.mt-field.has--error .mt-field__addition {\n  border-left: 1px solid var(--color-border-critical-default);\n}\n\n.mt-field.has--error .mt-field__addition.is--prefix {\n  border-right: 1px solid var(--color-border-critical-default);\n  border-left: none;\n}\n\n.mt-field.has--error .mt-block-field__block {\n  background: var(--color-background-critical-default);\n  border-color: var(--color-border-critical-default);\n}\n\n.mt-field .mt-field--select__options .mt-icon {\n  margin-bottom: 5px;\n}\n\n.mt-field.mt-field--small {\n  margin-bottom: 0;\n}\n\n.mt-field.mt-field--small .mt-block-field__block {\n  min-height: var(--scale-size-32);\n}\n\n.mt-field.mt-field--small input,\n.mt-field.mt-field--small textarea,\n.mt-field.mt-field--small select {\n  padding: var(--scale-size-4) var(--scale-size-16);\n}\n\n.mt-field .mt-field__addition {\n  display: flex;\n  flex-shrink: 0;\n  justify-content: center;\n  align-items: center;\n  min-width: 50px;\n  background: var(--color-background-tertiary-default);\n  border-left: 1px solid var(--color-border-primary-default);\n  border-right: none;\n  padding: var(--scale-size-12) 15px;\n  font-size: var(--font-size-xs);\n  line-height: var(--font-line-height-xs);\n  font-family: var(--font-family-body);\n  color: var(--color-text-primary-default);\n  transition:\n    border-color 0.3s ease-out,\n    background 0.3s ease;\n}\n\n.mt-field .mt-field__addition:empty {\n  display: none;\n}\n\n.mt-field .mt-field__addition:has(button) {\n  padding: 0;\n\n  & > button {\n    width: 100%;\n    height: 100%;\n    padding: var(--scale-size-12) 15px;\n  }\n}\n\n.mt-field .mt-field__addition.is--prefix {\n  border-right: 1px solid var(--color-border-primary-default);\n  border-left: none;\n}\n\n.mt-field .mt-field__addition.is--prefix:empty {\n  display: none;\n}\n\n.mt-field.mt-field--small .mt-field__addition {\n  padding: 5px var(--scale-size-16);\n}\n\n.mt-field .mt-field__inheritance-icon {\n  margin-left: var(--scale-size-4);\n  margin-right: var(--scale-size-4);\n}\n\n.mt-field .mt-field__button-restore {\n  color: #52667a;\n  padding: 0 var(--scale-size-8);\n  border: none;\n  background: none;\n  outline: none;\n  -moz-appearance: none;\n  -webkit-appearance: none;\n  cursor: pointer;\n}\n\n.mt-field .mt-field__label {\n  display: flex;\n  line-height: 16px;\n  font-size: 14px;\n  margin-bottom: var(--scale-size-8);\n  color: var(--color-text-primary-default);\n}\n\n.mt-field .mt-field__label label {\n  flex-grow: 1;\n}\n\n.mt-field .mt-field__label:empty,\n.mt-field .mt-field__label:has(label:only-child:empty) {\n  display: none;\n}\n\n.mt-field .mt-field__label .is--required::after {\n  content: \"*\";\n  color: var(--color-icon-brand-default);\n  margin-left: var(--scale-size-4);\n}\n\n.mt-field.is--inherited .mt-field__label {\n  color: var(--color-text-accent-default);\n}\n\n.mt-field.is--inherited .mt-field__label .sw-icon {\n  color: var(--color-icon-accent-default);\n}\n\n.mt-field--future-remove-default-margin {\n  margin-bottom: 0;\n}\n</style>\n"],"names":["vnode","hasSlotContent","_resolveComponent","hasError","isInherited","hasFocus","mtBlockSize","_createBlock","_mergeProps","$attrs","_createCommentVNode","_createElementBlock","_normalizeClass","_renderSlot","helpText","_createElementVNode","_normalizeProps","_guardReactiveProps","disabled","identification","copyable","_openBlock","_createVNode","copyableTooltip"],"mappings":"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"}