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/).

193 lines (192 loc) 7.7 kB
import '../mt-text-editor-toolbar-button-link.css'; "use strict"; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } }); const vue = require("vue"); const MtModalRoot = require("./MtModalRoot.js"); const MtModal = require("./MtModal.js"); const MtButton = require("./MtButton.js"); const MtTextField = require("./MtTextField.js"); const mtSwitch_vue_vue_type_style_index_0_lang = require("../mt-switch.vue_vue_type_style_index_0_lang-fb6defc7.js"); const MtTextEditorToolbarButton = require("./MtTextEditorToolbarButton.js"); const mtModalClose_vue_vue_type_script_setup_true_lang = require("../mt-modal-close.vue_vue_type_script_setup_true_lang-1e877a45.js"); const vueI18n = require("vue-i18n"); const _pluginVue_exportHelper = require("../_plugin-vue_export-helper-9c783a34.js"); require("../useModalContext-e62d6d51.js"); require("../mt-icon.vue_vue_type_style_index_0_lang-0a28c7b6.js"); require("./MtText.js"); require("../id-8e80f112.js"); require("../focus-trap.esm-8d514d11.js"); require("../useIsInsideTooltip-f4674e27.js"); require("./MtLoader.js"); require("../mt-base-field-6a3a56a0.js"); require("./MtInheritanceSwitch.js"); require("./MtTooltip.js"); require("../floating-ui.vue-48d5c774.js"); require("../floating-ui.dom-fe395b67.js"); require("../index-ab705c2a.js"); require("./MtFieldCopyable.js"); require("../tooltip.directive-7b51326d.js"); require("./MtHelpText.js"); require("../useFutureFlags-35232480.js"); require("./MtFieldError.js"); require("./MtFieldLabel.js"); const _hoisted_1 = { class: "mt-text-editor__link-modal" }; const _hoisted_2 = { class: "mt-text-editor__link-modal-footer" }; const linkButton = { name: "link", label: "mt-text-editor-toolbar-button-link.label", icon: "regular-link-xs", position: 12e3, contextualButtons: (editor) => { if (!editor.isActive("link")) { return []; } return [ { name: "remove-link", label: "mt-text-editor-toolbar-button-link.removeLink", icon: "regular-times-xs", action: (currentEditor) => { currentEditor.chain().focus().extendMarkRange("link").unsetLink().run(); } } ]; } }; const _sfc_main = /* @__PURE__ */ vue.defineComponent({ __name: "mt-text-editor-toolbar-button-link", props: { editor: { type: Object, required: true }, button: { type: Object, required: true }, disabled: { type: Boolean, default: false } }, setup(__props) { const { t } = vueI18n.useI18n({ useScope: "global", messages: { en: { "mt-text-editor-toolbar-button-link": { modalTitle: "Insert/Edit Link", cancel: "Cancel", applyLink: "Apply link", removeLink: "Remove link", openInNewTab: "Open in new tab", linkUrl: "Link URL", label: "Link" } }, de: { "mt-text-editor-toolbar-button-link": { modalTitle: "Link einfügen/bearbeiten", cancel: "Abbrechen", applyLink: "Link anwenden", removeLink: "Link entfernen", openInNewTab: "In neuem Tab öffnen", linkUrl: "Link URL", label: "Link" } } } }); const props = __props; const showLinkModal = vue.ref(false); const linkHref = vue.ref(""); const linkTarget = vue.ref(""); const openLinkModal = () => { linkHref.value = props.editor.getAttributes("link").href ?? ""; linkTarget.value = props.editor.getAttributes("link").target ?? ""; showLinkModal.value = true; }; return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [ vue.createVNode(MtTextEditorToolbarButton, { button: __props.button, editor: props.editor, disabled: __props.disabled, onClick: openLinkModal }, null, 8, ["button", "editor", "disabled"]), vue.createVNode(MtModalRoot, { "is-open": showLinkModal.value, onChange: _cache[3] || (_cache[3] = ($event) => showLinkModal.value = $event) }, { default: vue.withCtx(() => [ vue.createVNode(MtModal, { width: "s", title: vue.unref(t)("mt-text-editor-toolbar-button-link.modalTitle") }, { default: vue.withCtx(() => [ vue.createElementVNode("div", _hoisted_1, [ vue.createVNode(MtTextField, { modelValue: linkHref.value, "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => linkHref.value = $event), label: vue.unref(t)("mt-text-editor-toolbar-button-link.linkUrl"), placeholder: "https://example.com", required: "" }, null, 8, ["modelValue", "label"]), vue.createVNode(mtSwitch_vue_vue_type_style_index_0_lang._sfc_main, { label: vue.unref(t)("mt-text-editor-toolbar-button-link.openInNewTab"), checked: linkTarget.value === "_blank", "aria-label": vue.unref(t)("mt-text-editor-toolbar-button-link.openInNewTab"), onChange: _cache[1] || (_cache[1] = (checked) => { linkTarget.value = checked ? "_blank" : ""; }) }, null, 8, ["label", "checked", "aria-label"]) ]) ]), footer: vue.withCtx(() => [ vue.createElementVNode("div", _hoisted_2, [ vue.createVNode(mtModalClose_vue_vue_type_script_setup_true_lang._sfc_main, { as: MtButton, variant: "secondary" }, { default: vue.withCtx(() => [ vue.createTextVNode(vue.toDisplayString(vue.unref(t)("mt-text-editor-toolbar-button-link.cancel")), 1) ]), _: 1 }), vue.createVNode(MtButton, { variant: "primary", onClick: _cache[2] || (_cache[2] = () => { const linkAttributes = { href: linkHref.value }; if (linkTarget.value && linkTarget.value.trim() !== "") { linkAttributes.target = linkTarget.value; if (linkTarget.value === "_blank") { linkAttributes.rel = "noopener noreferrer nofollow"; } } __props.editor.chain().focus().extendMarkRange("link").setLink(linkAttributes).run(); showLinkModal.value = false; }) }, { default: vue.withCtx(() => [ vue.createTextVNode(vue.toDisplayString(vue.unref(t)("mt-text-editor-toolbar-button-link.applyLink")), 1) ]), _: 1 }) ]) ]), _: 1 }, 8, ["title"]) ]), _: 1 }, 8, ["is-open"]) ], 64); }; } }); const mtTextEditorToolbarButtonLink_vue_vue_type_style_index_0_scoped_91cdcb41_lang = ""; const mtTextEditorToolbarButtonLink = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main, [["__scopeId", "data-v-91cdcb41"]]); exports.default = mtTextEditorToolbarButtonLink; exports.linkButton = linkButton; //# sourceMappingURL=MtTextEditorToolbarButtonLink.js.map