@dialpad/dialtone
Version:
Dialpad's Dialtone design system monorepo
174 lines (173 loc) • 4.15 kB
JavaScript
import { getUniqueString as e, hasSlotContent as t } from "../../common/utils/index.js";
import { t as n } from "../../_plugin-vue_export-helper-BTgDAbhb.js";
import { DialtoneLocalization as r } from "../../localization/index.js";
import i from "../button/button.js";
import { CHIP_CLOSE_BUTTON_SIZE_MODIFIERS as a, CHIP_ICON_SIZES as o, CHIP_SIZE_MODIFIERS as s } from "./chip-constants.js";
import { createBlock as c, createCommentVNode as l, createElementBlock as u, createVNode as d, mergeProps as f, normalizeClass as p, openBlock as m, renderSlot as h, resolveComponent as g, resolveDynamicComponent as _, toHandlers as v, withCtx as y } from "vue";
import { DtIconClose as b } from "@dialpad/dialtone-icons/vue3";
//#region components/chip/chip.vue
var x = {
compatConfig: { MODE: 3 },
name: "DtChip",
components: {
DtButton: i,
DtIconClose: b
},
props: {
disabled: {
type: Boolean,
default: !1
},
hideClose: {
type: Boolean,
default: !1
},
size: {
type: String,
default: "md",
validator: (e) => Object.keys(s).includes(e)
},
interactive: {
type: Boolean,
default: !0
},
id: {
type: String,
default: function() {
return e();
}
},
ariaLabel: {
type: String,
default: ""
},
contentClass: {
type: [
String,
Array,
Object
],
default: ""
},
labelClass: {
type: [
String,
Array,
Object
],
default: ""
}
},
emits: [
"click",
"close",
"keyup",
"keydown"
],
data() {
return {
isActive: !1,
hasSlotContent: t,
i18n: new r()
};
},
computed: {
chipListeners() {
return {
click: (e) => {
this.interactive && this.$emit("click", e);
},
keydown: (e) => {
e.code?.toLowerCase() === "delete" ? this.onClose() : this.$emit("keydown", e);
},
keyup: (e) => {
this.$emit("keyup", e);
}
};
},
closeButtonIconSize() {
return o[this.size];
},
closeButtonTitle() {
return this.i18n.$t("DIALTONE_CLOSE_BUTTON");
}
},
methods: {
chipClasses() {
return [
this.$attrs["grouped-chip"] ? "d-chip" : "d-chip__label",
s[this.size],
this.labelClass,
this.disabled && "d-chip--disabled"
];
},
chipCloseButtonClasses() {
return [
"d-chip__close",
a[this.size],
this.disabled && "d-chip__close--disabled"
];
},
onClose() {
this.hideClose || this.$emit("close");
}
}
}, S = { class: "d-chip" }, C = {
key: 0,
class: "d-chip__icon",
"data-qa": "dt-chip-icon"
}, w = {
key: 1,
"data-qa": "dt-chip-avatar"
}, T = ["id"];
function E(e, t, n, r, i, a) {
let o = g("dt-icon-close"), s = g("dt-button");
return m(), u("span", S, [(m(), c(_(n.interactive ? "button" : "span"), f({
id: n.id,
"aria-label": n.ariaLabel,
"aria-labelledby": n.ariaLabel ? void 0 : `${n.id}-content`,
"aria-disabled": n.disabled,
class: a.chipClasses(),
type: n.interactive && "button",
"data-qa": "dt-chip",
tabindex: n.disabled ? -1 : null
}, v(a.chipListeners)), {
default: y(() => [i.hasSlotContent(e.$slots.icon) ? (m(), u("span", C, [h(e.$slots, "icon")])) : i.hasSlotContent(e.$slots.avatar) ? (m(), u("span", w, [h(e.$slots, "avatar")])) : l("", !0), i.hasSlotContent(e.$slots.default) ? (m(), u("span", {
key: 2,
id: `${n.id}-content`,
class: p(["d-chip__text", n.contentClass]),
"data-qa": "dt-chip-label"
}, [h(e.$slots, "default")], 10, T)) : l("", !0)]),
_: 3
}, 16, [
"id",
"aria-label",
"aria-labelledby",
"aria-disabled",
"class",
"type",
"tabindex"
])), n.hideClose ? l("", !0) : (m(), c(s, {
key: 0,
class: p(a.chipCloseButtonClasses()),
"data-qa": "dt-chip-close",
"aria-label": a.closeButtonTitle,
"aria-disabled": n.disabled,
title: a.closeButtonTitle,
tabindex: n.disabled ? -1 : null,
onClick: t[0] || (t[0] = (t) => e.$emit("close"))
}, {
icon: y(() => [d(o, { size: a.closeButtonIconSize }, null, 8, ["size"])]),
_: 1
}, 8, [
"class",
"aria-label",
"aria-disabled",
"title",
"tabindex"
]))]);
}
var D = /* @__PURE__ */ n(x, [["render", E]]);
//#endregion
export { D as default };
//# sourceMappingURL=chip.js.map