UNPKG

@dialpad/dialtone

Version:

Dialpad's Dialtone design system monorepo

114 lines (113 loc) 3.49 kB
import { DtIconClose } from "@dialpad/dialtone-icons/vue3"; import { hasSlotContent, returnFirstEl } from "../../common/utils.js"; import { resolveComponent, openBlock, createElementBlock, normalizeClass, renderSlot, createCommentVNode, createBlock, mergeProps, withCtx, createVNode } from "vue"; import _export_sfc from "../../_virtual/_plugin-vue_export-helper.js"; import DtButton from "../button/button.vue.js"; const _sfc_main = { compatConfig: { MODE: 3 }, name: "PopoverHeaderFooter", components: { DtButton, DtIconClose }, props: { // eslint-disable-next-line vue/require-default-prop type: { type: String, validator: function(value) { return ["header", "footer"].includes(value); } }, /** * Additional class name for the content wrapper element. */ contentClass: { type: [String, Array, Object], default: "" }, /** * Determines visibility for close button * @values true, false */ showCloseButton: { type: Boolean, default: false }, /** * A set of props to be passed into the popover's header close button. * Requires an 'ariaLabel' property. */ closeButtonProps: { type: Object, default: () => { } } }, emits: [ /** * Emitted when popover is closed * * @event close * @type { Boolean } */ "close" ], data() { return { hasSlotContent }; }, methods: { focusCloseButton() { var _a; const closeButton = returnFirstEl((_a = this.$refs["popover__close-button"]) == null ? void 0 : _a.$el); closeButton == null ? void 0 : closeButton.focus(); } } }; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { const _component_dt_icon_close = resolveComponent("dt-icon-close"); const _component_dt_button = resolveComponent("dt-button"); return openBlock(), createElementBlock("div", { "data-qa": "dt-popover-header-footer", class: normalizeClass({ "d-popover__header": $props.type === "header", "d-popover__footer": $props.type === "footer" }) }, [ $data.hasSlotContent(_ctx.$slots.content) ? (openBlock(), createElementBlock("div", { key: 0, "data-qa": "dt-popover-header-footer-content", class: normalizeClass([{ "d-popover__header__content": $props.type === "header", "d-popover__footer__content": $props.type === "footer" }, $props.contentClass]) }, [ renderSlot(_ctx.$slots, "content") ], 2)) : createCommentVNode("", true), $props.showCloseButton ? (openBlock(), createBlock(_component_dt_button, mergeProps({ key: 1, ref: "popover__close-button", "data-qa": "dt-popover-close", class: { "d-popover__header__close-button": $props.type === "header", "d-popover__footer__close-button": $props.type === "footer" }, importance: "outlined", kind: "muted", circle: "" }, $props.closeButtonProps, { onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("close")) }), { icon: withCtx(() => [ createVNode(_component_dt_icon_close, { size: "300" }) ]), _: 1 }, 16, ["class"])) : createCommentVNode("", true) ], 2); } const PopoverHeaderFooter = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]); export { PopoverHeaderFooter as default }; //# sourceMappingURL=popover_header_footer.vue.js.map