@dialpad/dialtone
Version:
Dialpad's Dialtone design system monorepo
114 lines (113 loc) • 4.63 kB
JavaScript
;
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
const emoji_row_constants = require("./emoji_row_constants.cjs");
const vue = require("vue");
const _pluginVue_exportHelper = require("../../../_virtual/_plugin-vue_export-helper.cjs");
const tooltip = require("../../../components/tooltip/tooltip.vue.cjs");
const button = require("../../../components/button/button.vue.cjs");
const emoji = require("../../../components/emoji/emoji.vue.cjs");
const emoji_text_wrapper = require("../../../components/emoji_text_wrapper/emoji_text_wrapper.vue.cjs");
const _sfc_main = {
compatConfig: { MODE: 3 },
name: "DtRecipeEmojiRow",
components: { DtTooltip: tooltip.default, DtButton: button.default, DtEmoji: emoji.default, DtEmojiTextWrapper: emoji_text_wrapper.default },
mixins: [],
props: {
/**
* Provide an array of reaction objects to be shown.
*/
reactions: {
type: Array,
default: () => [],
validator: (reactions) => {
for (const reaction of reactions) {
const validInput = emoji_row_constants.REACTIONS_ATTRIBUTES.every((attribute) => reaction[attribute] !== void 0);
if (!validInput) return false;
}
return true;
}
}
},
emits: [
"emoji-clicked",
"emoji-hovered"
],
methods: {
emojiClicked(reaction) {
this.$emit("emoji-clicked", reaction.emojiUnicodeOrShortname);
},
emojiHovered(reaction, state) {
this.$emit("emoji-hovered", {
reaction: reaction.emojiUnicodeOrShortname,
state
});
}
}
};
const _hoisted_1 = { class: "d-recipe-emoji-row" };
const _hoisted_2 = ["reaction"];
const _hoisted_3 = { "aria-hidden": "true" };
const _hoisted_4 = { class: "d-recipe-emoji-row__emoji" };
const _hoisted_5 = { class: "d-recipe-emoji-row__reaction-number" };
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_dt_emoji_text_wrapper = vue.resolveComponent("dt-emoji-text-wrapper");
const _component_dt_emoji = vue.resolveComponent("dt-emoji");
const _component_dt_button = vue.resolveComponent("dt-button");
const _component_dt_tooltip = vue.resolveComponent("dt-tooltip");
return vue.openBlock(), vue.createElementBlock("span", _hoisted_1, [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($props.reactions, (reaction) => {
return vue.openBlock(), vue.createElementBlock("span", {
key: reaction.unicodeOutput,
reaction
}, [
vue.createVNode(_component_dt_tooltip, {
class: "d-recipe-emoji-row__tooltip",
"content-class": "d-recipe-emoji-row__tooltip-content",
sticky: "popper",
onShown: (shown) => $options.emojiHovered(reaction, shown)
}, {
anchor: vue.withCtx(({ attrs }) => [
vue.createVNode(_component_dt_button, {
importance: "clear",
size: "sm",
"data-qa": "feed-item-reaction-button",
class: vue.normalizeClass([
"d-recipe-emoji-row__reaction",
reaction.isSelected ? "d-recipe-emoji-row__reaction--selected" : ""
]),
"aria-label": reaction.ariaLabel,
attrs,
onClick: ($event) => $options.emojiClicked(reaction)
}, {
default: vue.withCtx(() => [
vue.createElementVNode("span", _hoisted_4, [
vue.createVNode(_component_dt_emoji, {
size: "200",
code: reaction.emojiUnicodeOrShortname
}, null, 8, ["code"])
]),
vue.createElementVNode("span", _hoisted_5, vue.toDisplayString(reaction.num), 1)
]),
_: 2
}, 1032, ["class", "aria-label", "attrs", "onClick"])
]),
default: vue.withCtx(() => [
vue.createElementVNode("span", _hoisted_3, [
vue.createVNode(_component_dt_emoji_text_wrapper, { size: "200" }, {
default: vue.withCtx(() => [
vue.createTextVNode(vue.toDisplayString(reaction.tooltip), 1)
]),
_: 2
}, 1024)
])
]),
_: 2
}, 1032, ["onShown"])
], 8, _hoisted_2);
}), 128)),
vue.renderSlot(_ctx.$slots, "picker")
]);
}
const emoji_row = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["render", _sfc_render]]);
exports.default = emoji_row;
//# sourceMappingURL=emoji_row.vue.cjs.map