UNPKG

@shopware-ag/meteor-component-library

Version:

The meteor component library is a Vue component library developed by Shopware. It is based on the [Meteor Design System](https://shopware.design/).

1 lines 22.2 kB
{"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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"}