UNPKG

@dialpad/dialtone

Version:

Dialpad's Dialtone design system monorepo

224 lines (223 loc) 5.33 kB
import e, { addClassStyleAttrs as t, removeClassStyleAttrs as n, returnFirstEl as r, warnIfUnmounted as i } from "../../common/utils/index.js"; import { t as a } from "../../_plugin-vue_export-helper-BTgDAbhb.js"; import { DialtoneLocalization as o } from "../../localization/index.js"; import s from "../button/button.js"; import c from "../dropdown/dropdown.js"; import { CALLBAR_BUTTON_VALID_WIDTH_SIZE as l } from "../callbar-button/callbar-button-constants.js"; import u from "../callbar-button/callbar-button.js"; import { createBlock as d, createCommentVNode as f, createElementBlock as p, createVNode as m, mergeProps as h, normalizeClass as g, openBlock as _, renderSlot as v, resolveComponent as y, withCtx as b } from "vue"; import { DtIconChevronUp as x } from "@dialpad/dialtone-icons/vue3"; //#region recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue var S = { name: "DtRecipeCallbarButtonWithDropdown", components: { DtRecipeCallbarButton: u, DtDropdown: c, DtButton: s, DtIconChevronUp: x }, inheritAttrs: !1, props: { id: { type: String, default() { return e.getUniqueString(); } }, ariaLabel: { type: String, default: null, validator: (e) => e || (void 0).$slots.default }, placement: { type: String, default: "top" }, fallbackPlacements: { type: Array, default: () => ["auto"] }, disabled: { type: Boolean, default: !1 }, forceShowArrow: { type: Boolean, default: !1 }, active: { type: Boolean, default: !1 }, danger: { type: Boolean, default: !1 }, onClick: { type: Function, default: null }, buttonClass: { type: [ String, Array, Object ], default: "" }, textClass: { type: [ String, Array, Object ], default: "" }, buttonWidthSize: { type: String, default: "xl", validator: (e) => l.includes(e) }, invertedTooltip: { type: Boolean, default: !1 }, showTooltip: { type: Boolean, default: null }, tooltipText: { type: String, default: void 0 }, tooltipDelay: { type: Boolean, default: void 0 } }, emits: [ "arrow-click", "click", "opened" ], data() { return { open: !1, i18n: new o() }; }, computed: { showArrowButton() { return this.forceShowArrow || !this.disabled; }, isCompactMode() { return this.buttonWidthSize === "sm" || this.buttonWidthSize === "md"; }, arrowButtonLabel() { return this.i18n.$t("DIALTONE_CALLBAR_BUTTON_WITH_DROPDOWN_ARROW_BUTTON_ARIA_LABEL"); } }, mounted() { i(r(this.$el), this.$options.name); }, methods: { removeClassStyleAttrs: n, addClassStyleAttrs: t, arrowClick(e) { return this.$emit("arrow-click", e), this.toggleOpen(); }, toggleOpen() { return this.open = !this.open; }, syncOpenState() { this.open = this.openDropdown; }, buttonClick(e) { this.$props.onClick ? this.$emit("click", e) : this.arrowClick(e); }, onModalIsOpened(e) { this.open = e, this.$emit("opened", e); } } }; function C(e, t, n, r, i, a) { let o = y("dt-recipe-callbar-button"), s = y("dt-icon-chevron-up"), c = y("dt-button"), l = y("dt-dropdown"); return _(), p("div", h({ class: "dt-recipe--callbar-button-with-dropdown" }, a.addClassStyleAttrs(e.$attrs)), [m(o, { active: n.active, "aria-label": n.ariaLabel, "button-class": n.buttonClass, "button-width-size": n.buttonWidthSize, danger: n.danger, disabled: n.disabled, "inverted-tooltip": n.invertedTooltip, "show-tooltip": n.showTooltip, "text-class": n.textClass, "tooltip-delay": n.tooltipDelay, "tooltip-text": n.tooltipText, class: "dt-recipe--callbar-button-with-dropdown--main-button", onClick: a.buttonClick }, { icon: b(() => [v(e.$slots, "icon")]), tooltip: b(() => [v(e.$slots, "tooltip")]), default: b(() => [v(e.$slots, "default")]), _: 3 }, 8, [ "active", "aria-label", "button-class", "button-width-size", "danger", "disabled", "inverted-tooltip", "show-tooltip", "text-class", "tooltip-delay", "tooltip-text", "onClick" ]), a.showArrowButton ? (_(), d(l, h({ key: 0, id: n.id, "fallback-placements": n.fallbackPlacements, open: i.open, modal: !1, placement: n.placement, class: "dt-recipe--callbar-button-with-dropdown--dropdown-wrapper", padding: "none" }, a.removeClassStyleAttrs(e.$attrs), { onOpened: a.onModalIsOpened }), { anchor: b(() => [m(c, { active: i.open, class: g(["dt-recipe--callbar-button-with-dropdown--arrow", { "dt-recipe--callbar-button-with-dropdown--arrow--large": !a.isCompactMode }]), circle: !0, importance: "clear", size: "lg", "aria-label": a.arrowButtonLabel, title: a.arrowButtonLabel, width: "2rem", onClick: a.arrowClick }, { icon: b(() => [m(s, { class: "dt-recipe--callbar-button-with-dropdown--arrow__icon", size: "200" })]), _: 1 }, 8, [ "active", "class", "aria-label", "title", "onClick" ])]), list: b(({ close: t }) => [v(e.$slots, "list", { close: t })]), _: 3 }, 16, [ "id", "fallback-placements", "open", "placement", "onOpened" ])) : f("", !0)], 16); } var w = /* @__PURE__ */ a(S, [["render", C]]); //#endregion export { w as default }; //# sourceMappingURL=callbar-button-with-dropdown.js.map