@dialpad/dialtone 9.120.0 → 9.122.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/dist/css/dialtone-default-theme.css +4 -0
  2. package/dist/css/dialtone-default-theme.min.css +1 -1
  3. package/dist/css/dialtone.css +4 -0
  4. package/dist/css/dialtone.min.css +1 -1
  5. package/dist/tokens/doc.json +35258 -35258
  6. package/dist/vue2/component-documentation.json +1 -1
  7. package/dist/vue2/lib/emoji-picker/emoji-picker-constants.cjs +1 -1
  8. package/dist/vue2/lib/emoji-picker/emoji-picker-constants.cjs.map +1 -1
  9. package/dist/vue2/lib/emoji-picker/emoji-picker-constants.js +10 -9
  10. package/dist/vue2/lib/emoji-picker/emoji-picker-constants.js.map +1 -1
  11. package/dist/vue2/lib/emoji-picker/emoji-picker.cjs +1 -1
  12. package/dist/vue2/lib/emoji-picker/emoji-picker.cjs.map +1 -1
  13. package/dist/vue2/lib/emoji-picker/emoji-picker.js +123 -65
  14. package/dist/vue2/lib/emoji-picker/emoji-picker.js.map +1 -1
  15. package/dist/vue2/types/components/emoji_picker/emoji_picker.vue.d.ts.map +1 -1
  16. package/dist/vue2/types/components/emoji_picker/emoji_picker_constants.d.ts +1 -0
  17. package/dist/vue2/types/components/emoji_picker/modules/emoji_description.vue.d.ts +3 -1
  18. package/dist/vue2/types/components/emoji_picker/modules/emoji_description.vue.d.ts.map +1 -1
  19. package/dist/vue2/types/components/emoji_picker/modules/emoji_selector.vue.d.ts +11 -1
  20. package/dist/vue3/component-documentation.json +1 -1
  21. package/dist/vue3/lib/toggle/toggle.cjs +1 -1
  22. package/dist/vue3/lib/toggle/toggle.cjs.map +1 -1
  23. package/dist/vue3/lib/toggle/toggle.js +27 -18
  24. package/dist/vue3/lib/toggle/toggle.js.map +1 -1
  25. package/dist/vue3/types/components/toggle/toggle.vue.d.ts +9 -0
  26. package/dist/vue3/types/components/toggle/toggle.vue.d.ts.map +1 -1
  27. package/dist/vue3/types/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.d.ts +1 -1
  28. package/package.json +3 -3
@@ -1,17 +1,17 @@
1
1
  import { EMOJI_PICKER_CATEGORIES as c, CDN_URL as d, EMOJIS_PER_ROW as a, EMOJI_PICKER_SKIN_TONE_MODIFIERS as h } from "./emoji-picker-constants.js";
2
- import { DtIconClock as p, DtIconSatisfied as b, DtIconLivingThing as k, DtIconFood as _, DtIconObject as j, DtIconTransportation as y, DtIconLightbulb as g, DtIconHeart as R, DtIconFlag as S, DtIconSearch as E, DtIconClose as $ } from "@dialpad/dialtone-icons/vue2";
2
+ import { DtIconClock as b, DtIconSatisfied as j, DtIconLivingThing as k, DtIconFood as _, DtIconObject as y, DtIconTransportation as g, DtIconLightbulb as S, DtIconHeart as R, DtIconFlag as E, DtIconTiktok as $, DtIconSearch as T, DtIconClose as v } from "@dialpad/dialtone-icons/vue2";
3
3
  import { n as u } from "../../_plugin-vue2_normalizer-DSLOjnn3.js";
4
- import T from "../tab/tab-group.js";
5
- import v from "../tab/tab.js";
6
- import L from "../input/input.js";
7
- import w from "../button/button.js";
8
- import { emojisGrouped as I } from "@dialpad/dialtone-emojis";
4
+ import L from "../tab/tab-group.js";
5
+ import w from "../tab/tab.js";
6
+ import I from "../input/input.js";
7
+ import p from "../button/button.js";
8
+ import { emojisGrouped as C } from "@dialpad/dialtone-emojis";
9
9
  import D from "../tooltip/tooltip.js";
10
- const C = {
10
+ const A = {
11
11
  name: "EmojiTabset",
12
12
  components: {
13
- DtTabGroup: T,
14
- DtTab: v
13
+ DtTabGroup: L,
14
+ DtTab: w
15
15
  },
16
16
  props: {
17
17
  /**
@@ -23,6 +23,10 @@ const C = {
23
23
  type: Boolean,
24
24
  default: !1
25
25
  },
26
+ showCustomEmojisTab: {
27
+ type: Boolean,
28
+ default: !1
29
+ },
26
30
  scrollIntoTab: {
27
31
  type: Number,
28
32
  required: !0
@@ -46,21 +50,22 @@ const C = {
46
50
  selectedTab: "1",
47
51
  tabsetRef: [],
48
52
  TABS_DATA: [
49
- { label: c.MOST_RECENTLY_USED, icon: p },
50
- { label: c.SMILEYS_AND_PEOPLE, icon: b },
53
+ { label: c.MOST_RECENTLY_USED, icon: b },
54
+ { label: c.SMILEYS_AND_PEOPLE, icon: j },
51
55
  { label: c.NATURE, icon: k },
52
56
  { label: c.FOOD, icon: _ },
53
- { label: c.ACTIVITY, icon: j },
54
- { label: c.TRAVEL, icon: y },
55
- { label: c.OBJECTS, icon: g },
57
+ { label: c.ACTIVITY, icon: y },
58
+ { label: c.TRAVEL, icon: g },
59
+ { label: c.OBJECTS, icon: S },
56
60
  { label: c.SYMBOLS, icon: R },
57
- { label: c.FLAGS, icon: S }
61
+ { label: c.FLAGS, icon: E }
58
62
  ]
59
63
  };
60
64
  },
61
65
  computed: {
62
66
  tabs() {
63
- return (this.showRecentlyUsedTab ? this.TABS_DATA : this.TABS_DATA.slice(1)).map((e, i) => ({
67
+ const t = this.showRecentlyUsedTab ? this.TABS_DATA : this.TABS_DATA.slice(1);
68
+ return this.showCustomEmojisTab && t.push({ label: c.CUSTOM, icon: $ }), t.map((e, i) => ({
64
69
  ...e,
65
70
  label: this.tabSetLabels[i],
66
71
  // IDs on dt-tab component need to be on string
@@ -105,7 +110,7 @@ const C = {
105
110
  }
106
111
  }
107
112
  };
108
- var A = function() {
113
+ var F = function() {
109
114
  var e = this, i = e._self._c;
110
115
  return i("div", { staticClass: "d-emoji-picker__tabset" }, [i("dt-tab-group", { attrs: { size: "sm", "tab-list-class": "d-emoji-picker__tabset-list", selected: e.selectedTab }, scopedSlots: e._u([{ key: "tabs", fn: function() {
111
116
  return e._l(e.tabs, function(s, o) {
@@ -116,18 +121,18 @@ var A = function() {
116
121
  } } }, [i(s.icon, { tag: "component", attrs: { size: "400" } })], 1);
117
122
  });
118
123
  }, proxy: !0 }]) })], 1);
119
- }, F = [], O = /* @__PURE__ */ u(
120
- C,
124
+ }, O = [], U = /* @__PURE__ */ u(
121
125
  A,
122
- F
126
+ F,
127
+ O
123
128
  );
124
- const N = O.exports, U = {
129
+ const N = U.exports, K = {
125
130
  name: "EmojiSearch",
126
131
  components: {
127
- DtInput: L,
128
- DtIconSearch: E,
129
- DtIconClose: $,
130
- DtButton: w
132
+ DtInput: I,
133
+ DtIconSearch: T,
134
+ DtIconClose: v,
135
+ DtButton: p
131
136
  },
132
137
  props: {
133
138
  searchPlaceholderLabel: {
@@ -163,7 +168,7 @@ const N = O.exports, U = {
163
168
  }
164
169
  }
165
170
  };
166
- var K = function() {
171
+ var B = function() {
167
172
  var e = this, i = e._self._c;
168
173
  return i("div", { staticClass: "d-emoji-picker__search d-emoji-picker__alignment" }, [i("dt-input", { ref: "searchInputRef", attrs: { id: "searchInput", placeholder: e.searchPlaceholderLabel, value: e.modelValue }, on: { input: e.updateModelValue, keydown: [function(s) {
169
174
  return !s.type.indexOf("key") && e._k(s.keyCode, "up", 38, s.key, ["Up", "ArrowUp"]) ? null : e.focusTabset.apply(null, arguments);
@@ -178,12 +183,12 @@ var K = function() {
178
183
  return [i("dt-icon-close", { attrs: { size: "200" } })];
179
184
  }, proxy: !0 }], null, !1, 4156074325) })];
180
185
  }, proxy: !0 } : null], null, !0) })], 1);
181
- }, B = [], P = /* @__PURE__ */ u(
182
- U,
186
+ }, P = [], q = /* @__PURE__ */ u(
183
187
  K,
184
- B
188
+ B,
189
+ P
185
190
  );
186
- const q = P.exports, z = {
191
+ const M = q.exports, z = {
187
192
  name: "EmojiSelector",
188
193
  props: {
189
194
  emojiFilter: {
@@ -213,6 +218,10 @@ const q = P.exports, z = {
213
218
  recentlyUsedEmojis: {
214
219
  type: Array,
215
220
  default: () => []
221
+ },
222
+ customEmojis: {
223
+ type: Array,
224
+ default: () => []
216
225
  }
217
226
  },
218
227
  data() {
@@ -224,7 +233,7 @@ const q = P.exports, z = {
224
233
  hoverFirstEmoji: !0,
225
234
  fixedLabel: "",
226
235
  filteredEmojis: [],
227
- TABS_DATA: ["Recently used", "People", "Nature", "Food", "Activity", "Travel", "Objects", "Symbols", "Flags"],
236
+ TABS_DATA: ["Recently used", "People", "Nature", "Food", "Activity", "Travel", "Objects", "Symbols", "Flags", "Custom"],
228
237
  tabLabelObserver: null
229
238
  };
230
239
  },
@@ -243,7 +252,7 @@ const q = P.exports, z = {
243
252
  ];
244
253
  },
245
254
  emojis() {
246
- return I;
255
+ return C;
247
256
  },
248
257
  CDN_URL() {
249
258
  return d;
@@ -268,6 +277,12 @@ const q = P.exports, z = {
268
277
  },
269
278
  immediate: !0
270
279
  },
280
+ customEmojis: {
281
+ handler(t) {
282
+ this.emojis.Custom = t;
283
+ },
284
+ immediate: !0
285
+ },
271
286
  emojiFilter: {
272
287
  handler(t) {
273
288
  this.resetScroll(), t ? this.isFiltering = !0 : (this.isFiltering = !1, this.$emit("highlighted-emoji", null)), this.debouncedSearch();
@@ -285,11 +300,11 @@ const q = P.exports, z = {
285
300
  },
286
301
  mounted() {
287
302
  this.$nextTick(() => {
288
- this.setupEmojiRefs(), this.setupFilteredRefs(), this.setupTabLabelRefs(), this.setTabLabelObserver();
303
+ this.setupEmojiRefs(), this.setupFilteredRefs(), this.setupTabLabelRefs(), this.setTabLabelObserver(), this.setBottomScrollListener();
289
304
  });
290
305
  },
291
306
  beforeDestroy() {
292
- this.tabLabelObserver && this.tabLabelObserver.disconnect();
307
+ this.tabLabelObserver && this.tabLabelObserver.disconnect(), this.$refs.listRef && this.handleScroll && this.$refs.listRef.removeEventListener("scroll", this.handleScroll);
293
308
  },
294
309
  methods: {
295
310
  setupTabLabelRefs() {
@@ -337,7 +352,7 @@ const q = P.exports, z = {
337
352
  };
338
353
  },
339
354
  getImgSrc: function(t) {
340
- return this.CDN_URL + t + ".png";
355
+ return t.date_added ? t.image : this.CDN_URL + t.unicode_character + ".png";
341
356
  },
342
357
  handleImageError: function(t) {
343
358
  t.target.parentNode.style.display = "none";
@@ -428,6 +443,12 @@ const q = P.exports, z = {
428
443
  }
429
444
  t.key === "ArrowLeft" && this.handleHorizontalNavigation("left", 0, e), t.key === "ArrowRight" && this.handleHorizontalNavigation("right", 0, e), t.key === "Tab" && this.$emit("focus-skin-selector"), t.key === "Enter" && this.handleEmojiSelection(i, t);
430
445
  },
446
+ setBottomScrollListener() {
447
+ this.handleScroll = () => {
448
+ const t = this.$refs.listRef;
449
+ t.scrollTop + t.clientHeight >= t.scrollHeight && this.$emit("scroll-bottom-reached");
450
+ }, this.$refs.listRef.addEventListener("scroll", this.handleScroll);
451
+ },
431
452
  setTabLabelObserver() {
432
453
  this.tabLabelObserver = new IntersectionObserver((t) => {
433
454
  t.forEach((e) => {
@@ -444,7 +465,7 @@ const q = P.exports, z = {
444
465
  }
445
466
  }
446
467
  };
447
- var M = function() {
468
+ var H = function() {
448
469
  var e = this, i = e._self._c;
449
470
  return i("div", { staticClass: "d-emoji-picker__selector" }, [i("div", { ref: "listRef", staticClass: "d-emoji-picker__list", attrs: { id: "d-emoji-picker-list" } }, [e.emojiFilter ? i("p", { staticClass: "d-emoji-picker__search-label d-emoji-picker__alignment" }, [e._v(" " + e._s(e.filteredEmojis.length > 0 ? e.searchResultsLabel : e.searchNoResultsLabel) + " ")]) : i("div", { ref: "tabCategoryRef", staticClass: "d-emoji-picker__category d-emoji-picker__alignment" }, [i("p", [e._v(" " + e._s(e.fixedLabel) + " ")])]), e._l(e.tabLabels, function(s, o) {
450
471
  return i("div", { directives: [{ name: "show", rawName: "v-show", value: !e.emojiFilter, expression: "!emojiFilter" }], key: o, ref: `tabLabelRef-${o}`, refInFor: !0, staticClass: "d-emoji-picker__alignment" }, [o ? i("p", [e._v(" " + e._s(s.label) + " ")]) : e._e(), i("div", { staticClass: "d-emoji-picker__tab" }, e._l(e.emojis[e.tabs[o] + e.skinTone] ? e.emojis[e.tabs[o] + e.skinTone] : e.emojis[e.tabs[o]], function(r, n) {
@@ -456,7 +477,7 @@ var M = function() {
456
477
  return e.$emit("highlighted-emoji", r);
457
478
  }, mouseleave: function(l) {
458
479
  return e.$emit("highlighted-emoji", null);
459
- }, keydown: (l) => e.handleKeyDown(l, o, n, r) } }, [i("img", { staticClass: "d-icon d-icon--size-500", attrs: { alt: r.name, "aria-label": r.name, title: r.name, src: e.getImgSrc(r.unicode_character) }, on: { error: e.handleImageError } })]);
480
+ }, keydown: (l) => e.handleKeyDown(l, o, n, r) } }, [i("img", { staticClass: "d-icon d-icon--size-500", attrs: { alt: r.name, "aria-label": r.name, title: r.name, src: e.getImgSrc(r) }, on: { error: e.handleImageError } })]);
460
481
  }), 0)]);
461
482
  }), e.emojiFilter ? i("div", { staticClass: "d-emoji-picker__alignment" }, [i("div", { staticClass: "d-emoji-picker__tab", attrs: { "data-qa": "filtered-emojis" } }, e._l(e.filteredEmojis, function(s, o) {
462
483
  return i("button", { key: s.shortname, ref: `filteredEmoji-${o}`, refInFor: !0, class: {
@@ -471,12 +492,12 @@ var M = function() {
471
492
  return e.hoverEmoji(null);
472
493
  }, keydown: (r) => e.handleKeyDownFilteredEmojis(r, o, s) } }, [i("img", { staticClass: "d-icon d-icon--size-500", attrs: { alt: s.name, "aria-label": s.name, title: s.name, src: `${e.CDN_URL + s.unicode_character}.png` } })]);
473
494
  }), 0)]) : e._e()], 2)]);
474
- }, H = [], Q = /* @__PURE__ */ u(
495
+ }, Q = [], V = /* @__PURE__ */ u(
475
496
  z,
476
- M,
477
- H
497
+ H,
498
+ Q
478
499
  );
479
- const V = Q.exports, G = {
500
+ const G = V.exports, J = {
480
501
  name: "EmojiDescription",
481
502
  props: {
482
503
  /**
@@ -493,18 +514,23 @@ const V = Q.exports, G = {
493
514
  return {
494
515
  CDN_URL: d
495
516
  };
517
+ },
518
+ methods: {
519
+ getImgSrc(t) {
520
+ return t.date_added ? t.image : `${d + t.unicode_character}.png`;
521
+ }
496
522
  }
497
523
  };
498
- var J = function() {
524
+ var Y = function() {
499
525
  var s;
500
526
  var e = this, i = e._self._c;
501
- return i("div", { staticClass: "d-emoji-picker__data" }, [e.emoji ? i("img", { staticClass: "d-icon d-icon--size-500", attrs: { alt: e.emoji.name, "aria-label": e.emoji.name, title: e.emoji.name, src: `${e.CDN_URL + e.emoji.unicode_character}.png` } }) : e._e(), i("div", [e._v(e._s((s = e.emoji) == null ? void 0 : s.name))])]);
502
- }, Y = [], W = /* @__PURE__ */ u(
503
- G,
527
+ return i("div", { staticClass: "d-emoji-picker__data" }, [e.emoji ? i("img", { staticClass: "d-icon d-icon--size-500", attrs: { alt: e.emoji.name, "aria-label": e.emoji.name, title: e.emoji.name, src: e.getImgSrc(e.emoji) } }) : e._e(), i("div", [e._v(e._s((s = e.emoji) == null ? void 0 : s.name))])]);
528
+ }, W = [], X = /* @__PURE__ */ u(
504
529
  J,
505
- Y
530
+ Y,
531
+ W
506
532
  );
507
- const X = W.exports, Z = {
533
+ const Z = X.exports, x = {
508
534
  name: "EmojiSkinSelector",
509
535
  components: {
510
536
  DtTooltip: D
@@ -615,7 +641,7 @@ const X = W.exports, Z = {
615
641
  }
616
642
  }
617
643
  };
618
- var x = function() {
644
+ var ee = function() {
619
645
  var e = this, i = e._self._c;
620
646
  return i("div", { attrs: { "data-qa": "skin-selector" } }, [i("div", { directives: [{ name: "show", rawName: "v-show", value: e.isOpen, expression: "isOpen" }], staticClass: "d-emoji-picker__skin-list" }, e._l(e.skinList, function(s, o) {
621
647
  var r;
@@ -628,19 +654,20 @@ var x = function() {
628
654
  var s, o, r, n;
629
655
  return [i("button", { ref: "skinSelectorRef", attrs: { "aria-label": e.skinSelectorButtonTooltipLabel, tabindex: "-1" }, on: { click: e.toggleSkinList, keydown: (l) => e.handleKeyDown(l) } }, [i("img", { staticClass: "d-icon d-icon--size-500", attrs: { alt: (s = e.skinSelected) == null ? void 0 : s.name, "aria-label": (o = e.skinSelected) == null ? void 0 : o.name, title: (r = e.skinSelected) == null ? void 0 : r.name, src: `${e.cdnUrl + ((n = e.skinSelected) == null ? void 0 : n.unicode_output)}.png` } })])];
630
656
  }, proxy: !0 }]) }, [e._v(" " + e._s(e.skinSelectorButtonTooltipLabel) + " ")])], 1)]);
631
- }, ee = [], te = /* @__PURE__ */ u(
632
- Z,
657
+ }, te = [], se = /* @__PURE__ */ u(
633
658
  x,
634
- ee
659
+ ee,
660
+ te
635
661
  );
636
- const se = te.exports, ie = {
662
+ const ie = se.exports, oe = {
637
663
  name: "DtEmojiPicker",
638
664
  components: {
639
665
  EmojiTabset: N,
640
- EmojiSearch: q,
641
- EmojiSelector: V,
642
- EmojiDescription: X,
643
- EmojiSkinSelector: se
666
+ EmojiSearch: M,
667
+ EmojiSelector: G,
668
+ EmojiDescription: Z,
669
+ EmojiSkinSelector: ie,
670
+ DtButton: p
644
671
  },
645
672
  props: {
646
673
  /**
@@ -655,6 +682,29 @@ const se = te.exports, ie = {
655
682
  recentlyUsedEmojis: {
656
683
  type: Array
657
684
  },
685
+ /**
686
+ * The array with custom emojis object
687
+ * This list is necessary to fill the custom tab
688
+ * @type {Array}
689
+ * @default []
690
+ * @example
691
+ * <dt-emoji-picker :customEmojis="[emojiObject, emojiObject]" />
692
+ */
693
+ customEmojis: {
694
+ type: Array
695
+ },
696
+ /**
697
+ * The label for the add emoji button
698
+ * required false because it is still experimental
699
+ * @type {String}
700
+ * @example
701
+ * <dt-emoji-picker :addEmojiLabel="'Add emoji'" />
702
+ */
703
+ addEmojiLabel: {
704
+ type: String,
705
+ required: !1,
706
+ default: "Add emoji"
707
+ },
658
708
  /**
659
709
  * The placeholder text for the search input
660
710
  * @type {String}
@@ -756,6 +806,10 @@ const se = te.exports, ie = {
756
806
  };
757
807
  },
758
808
  computed: {
809
+ showCustomEmojisTab() {
810
+ var t;
811
+ return ((t = this.customEmojis) == null ? void 0 : t.length) > 0;
812
+ },
759
813
  showRecentlyUsedTab() {
760
814
  var t;
761
815
  return ((t = this.recentlyUsedEmojis) == null ? void 0 : t.length) > 0;
@@ -778,9 +832,9 @@ const se = te.exports, ie = {
778
832
  }
779
833
  }
780
834
  };
781
- var oe = function() {
835
+ var re = function() {
782
836
  var e = this, i = e._self._c;
783
- return i("div", { staticClass: "d-emoji-picker" }, [i("div", { staticClass: "d-emoji-picker--header" }, [i("emoji-tabset", { ref: "tabsetRef", attrs: { "emoji-filter": e.internalSearchQuery, "show-recently-used-tab": e.showRecentlyUsedTab, "scroll-into-tab": e.scrollIntoTab, "tab-set-labels": e.tabSetLabels }, on: { "focus-skin-selector": function(s) {
837
+ return i("div", { staticClass: "d-emoji-picker" }, [i("div", { staticClass: "d-emoji-picker--header" }, [i("emoji-tabset", { ref: "tabsetRef", attrs: { "emoji-filter": e.internalSearchQuery, "show-custom-emojis-tab": e.showCustomEmojisTab, "show-recently-used-tab": e.showRecentlyUsedTab, "scroll-into-tab": e.scrollIntoTab, "tab-set-labels": e.tabSetLabels }, on: { "focus-skin-selector": function(s) {
784
838
  return e.$refs.skinSelectorRef.focusSkinSelector();
785
839
  }, "focus-search-input": function(s) {
786
840
  e.showSearch ? e.$refs.searchInputRef.focusSearchInput() : e.$refs.emojiSelectorRef.focusEmojiSelector();
@@ -794,15 +848,19 @@ var oe = function() {
794
848
  return e.$refs.emojiSelectorRef.focusEmojiSelector();
795
849
  } }, nativeOn: { keydown: function(s) {
796
850
  return !s.type.indexOf("key") && e._k(s.keyCode, "esc", 27, s.key, ["Esc", "Escape"]) ? null : e.$emit("close");
797
- } } }) : e._e(), i("emoji-selector", { ref: "emojiSelectorRef", attrs: { "emoji-filter": e.internalSearchQuery, "skin-tone": e.skinTone, "tab-set-labels": e.tabSetLabels, "search-results-label": e.searchResultsLabel, "search-no-results-label": e.searchNoResultsLabel, "recently-used-emojis": e.recentlyUsedEmojis, "selected-tabset": e.selectedTabset }, on: { "scroll-into-tab": e.updateScrollIntoTab, "highlighted-emoji": e.updateHighlightedEmoji, "selected-emoji": function(s) {
851
+ } } }) : e._e(), i("emoji-selector", { ref: "emojiSelectorRef", attrs: { "emoji-filter": e.internalSearchQuery, "skin-tone": e.skinTone, "tab-set-labels": e.tabSetLabels, "search-results-label": e.searchResultsLabel, "search-no-results-label": e.searchNoResultsLabel, "recently-used-emojis": e.recentlyUsedEmojis, "custom-emojis": e.customEmojis, "selected-tabset": e.selectedTabset }, on: { "scroll-into-tab": e.updateScrollIntoTab, "highlighted-emoji": e.updateHighlightedEmoji, "selected-emoji": function(s) {
798
852
  return e.$emit("selected-emoji", s);
799
853
  }, "focus-skin-selector": function(s) {
800
854
  return e.$refs.skinSelectorRef.focusSkinSelector();
801
855
  }, "focus-search-input": function(s) {
802
856
  e.showSearch ? e.$refs.searchInputRef.focusSearchInput() : e.$refs.tabsetRef.focusTabset();
857
+ }, "scroll-bottom-reached": function(s) {
858
+ return e.$emit("scroll-bottom-reached");
803
859
  } }, nativeOn: { keydown: function(s) {
804
860
  return !s.type.indexOf("key") && e._k(s.keyCode, "esc", 27, s.key, ["Esc", "Escape"]) ? null : e.$emit("close");
805
- } } })], 1), i("div", { staticClass: "d-emoji-picker--footer" }, [i("emoji-description", { attrs: { emoji: e.highlightedEmoji } }), i("emoji-skin-selector", { ref: "skinSelectorRef", attrs: { "is-hovering": !!e.highlightedEmoji, "skin-selector-button-tooltip-label": e.skinSelectorButtonTooltipLabel, "skin-tone": e.skinTone }, on: { "skin-tone": function(s) {
861
+ } } })], 1), i("div", { staticClass: "d-emoji-picker--footer" }, [e.showCustomEmojisTab && !e.highlightedEmoji ? i("dt-button", { staticClass: "d-emoji-picker__add-emoji", attrs: { importance: "outlined" }, on: { click: function(s) {
862
+ return e.$emit("add-emoji");
863
+ } } }, [e._v(" " + e._s(e.addEmojiLabel) + " ")]) : e._e(), i("emoji-description", { attrs: { emoji: e.highlightedEmoji } }), i("emoji-skin-selector", { ref: "skinSelectorRef", attrs: { "is-hovering": !!e.highlightedEmoji, "skin-selector-button-tooltip-label": e.skinSelectorButtonTooltipLabel, "skin-tone": e.skinTone }, on: { "skin-tone": function(s) {
806
864
  return e.$emit("skin-tone", s);
807
865
  }, "focus-tabset": function(s) {
808
866
  return e.$refs.tabsetRef.focusTabset();
@@ -811,13 +869,13 @@ var oe = function() {
811
869
  } }, nativeOn: { keydown: function(s) {
812
870
  return !s.type.indexOf("key") && e._k(s.keyCode, "esc", 27, s.key, ["Esc", "Escape"]) ? null : e.$emit("close");
813
871
  } } })], 1)]);
814
- }, re = [], ne = /* @__PURE__ */ u(
815
- ie,
872
+ }, ne = [], le = /* @__PURE__ */ u(
816
873
  oe,
817
- re
874
+ re,
875
+ ne
818
876
  );
819
- const be = ne.exports;
877
+ const je = le.exports;
820
878
  export {
821
- be as default
879
+ je as default
822
880
  };
823
881
  //# sourceMappingURL=emoji-picker.js.map