@dialpad/dialtone-vue 2.14.0 → 2.17.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.
@@ -1099,6 +1099,7 @@ __webpack_require__.d(__webpack_exports__, {
1099
1099
  "DtCombobox": () => (/* reexport */ combobox),
1100
1100
  "DtDropdown": () => (/* reexport */ dropdown),
1101
1101
  "DtEmoji": () => (/* reexport */ emoji),
1102
+ "DtEmojiTextWrapper": () => (/* reexport */ emoji_text_wrapper),
1102
1103
  "DtGroupableInputMixin": () => (/* reexport */ GroupableMixin),
1103
1104
  "DtInput": () => (/* reexport */ input_input),
1104
1105
  "DtInputGroup": () => (/* reexport */ input_group_input_group),
@@ -1167,9 +1168,11 @@ __webpack_require__.d(__webpack_exports__, {
1167
1168
  "TOOLTIP_DIRECTIONS": () => (/* reexport */ TOOLTIP_DIRECTIONS),
1168
1169
  "TOOLTIP_HIDE_ON_CLICK_VARIANTS": () => (/* reexport */ TOOLTIP_HIDE_ON_CLICK_VARIANTS),
1169
1170
  "TOOLTIP_KIND_MODIFIERS": () => (/* reexport */ TOOLTIP_KIND_MODIFIERS),
1171
+ "TOOLTIP_STICKY_VALUES": () => (/* reexport */ TOOLTIP_STICKY_VALUES),
1170
1172
  "USER_STATUS_COLOR_MODIFIERS": () => (/* reexport */ USER_STATUS_COLOR_MODIFIERS),
1171
1173
  "VALIDATION_MESSAGE_TYPES": () => (/* reexport */ VALIDATION_MESSAGE_TYPES),
1172
1174
  "codeToEmojiData": () => (/* reexport */ codeToEmojiData),
1175
+ "customEmojiAssetUrl": () => (/* reexport */ customEmojiAssetUrl),
1173
1176
  "defaultEmojiAssetUrl": () => (/* reexport */ defaultEmojiAssetUrl),
1174
1177
  "emojiFileExtensionLarge": () => (/* reexport */ emojiFileExtensionLarge),
1175
1178
  "emojiFileExtensionSmall": () => (/* reexport */ emojiFileExtensionSmall),
@@ -1178,17 +1181,22 @@ __webpack_require__.d(__webpack_exports__, {
1178
1181
  "emojiJson": () => (/* reexport */ emojiJson),
1179
1182
  "emojiVersion": () => (/* reexport */ emojiVersion),
1180
1183
  "filterFormattedMessages": () => (/* reexport */ filterFormattedMessages),
1184
+ "filterValidShortCodes": () => (/* reexport */ filterValidShortCodes),
1181
1185
  "findEmojis": () => (/* reexport */ findEmojis),
1182
1186
  "findShortCodes": () => (/* reexport */ findShortCodes),
1183
1187
  "formatMessages": () => (/* reexport */ formatMessages),
1188
+ "getEmojiData": () => (/* reexport */ getEmojiData),
1184
1189
  "getEmojiJson": () => (/* reexport */ getEmojiJson),
1185
1190
  "getUniqueString": () => (/* reexport */ getUniqueString),
1186
1191
  "getValidationState": () => (/* reexport */ getValidationState),
1192
+ "setCustomEmojiJson": () => (/* reexport */ setCustomEmojiJson),
1193
+ "setCustomEmojiUrl": () => (/* reexport */ setCustomEmojiUrl),
1187
1194
  "setEmojiAssetUrlLarge": () => (/* reexport */ setEmojiAssetUrlLarge),
1188
1195
  "setEmojiAssetUrlSmall": () => (/* reexport */ setEmojiAssetUrlSmall),
1189
1196
  "shortcodeToEmojiData": () => (/* reexport */ shortcodeToEmojiData),
1190
1197
  "stringToUnicode": () => (/* reexport */ stringToUnicode),
1191
1198
  "unicodeToString": () => (/* reexport */ unicodeToString),
1199
+ "validateCustomEmojiJson": () => (/* reexport */ validateCustomEmojiJson),
1192
1200
  "validationMessageValidator": () => (/* reexport */ validationMessageValidator)
1193
1201
  });
1194
1202
 
@@ -3227,9 +3235,9 @@ var button_group_component = normalizeComponent(
3227
3235
  ;// CONCATENATED MODULE: ./components/button_group/index.js
3228
3236
 
3229
3237
 
3230
- ;// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/combobox/combobox.vue?vue&type=template&id=071e5acc&
3231
- var comboboxvue_type_template_id_071e5acc_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{on:{"keydown":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"esc",27,$event.key,["Esc","Escape"])){ return null; }$event.stopPropagation();return _vm.onKeyValidation($event, 'onEscapeKey')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.onKeyValidation($event, 'onEnterKey')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"up",38,$event.key,["Up","ArrowUp"])){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.onKeyValidation($event, 'onUpKey')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"down",40,$event.key,["Down","ArrowDown"])){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.onKeyValidation($event, 'onDownKey')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"home",undefined,$event.key,undefined)){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.onKeyValidation($event, 'onHomeKey')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"end",undefined,$event.key,undefined)){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.onKeyValidation($event, 'onEndKey')}]}},[_c('div',{attrs:{"data-qa":"dt-combobox-input-wrapper"}},[_vm._t("input",null,{"inputProps":_vm.inputProps})],2),(_vm.showList)?_c('div',{ref:"listWrapper",attrs:{"data-qa":"dt-combobox-list-wrapper"},on:{"mouseleave":_vm.clearHighlightIndex,"focusout":_vm.clearHighlightIndex,"!mousemove":function($event){return _vm.onMouseHighlight.apply(null, arguments)}}},[(_vm.loading)?_c('combobox-loading-list',_vm._b({},'combobox-loading-list',_vm.listProps,false)):_vm._t("list",null,{"listProps":_vm.listProps,"opened":_vm.onOpen,"clearHighlightIndex":_vm.clearHighlightIndex})],2):_vm._e()])}
3232
- var comboboxvue_type_template_id_071e5acc_staticRenderFns = []
3238
+ ;// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/combobox/combobox.vue?vue&type=template&id=7535857e&
3239
+ var comboboxvue_type_template_id_7535857e_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{on:{"keydown":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"esc",27,$event.key,["Esc","Escape"])){ return null; }$event.stopPropagation();return _vm.onKeyValidation($event, 'onEscapeKey')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.onKeyValidation($event, 'onEnterKey')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"up",38,$event.key,["Up","ArrowUp"])){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.onKeyValidation($event, 'onUpKey')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"down",40,$event.key,["Down","ArrowDown"])){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.onKeyValidation($event, 'onDownKey')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"home",undefined,$event.key,undefined)){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.onKeyValidation($event, 'onHomeKey')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"end",undefined,$event.key,undefined)){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.onKeyValidation($event, 'onEndKey')}]}},[_c('div',{attrs:{"data-qa":"dt-combobox-input-wrapper"}},[_vm._t("input",null,{"inputProps":_vm.inputProps})],2),(_vm.showList)?_c('div',{ref:"listWrapper",attrs:{"data-qa":"dt-combobox-list-wrapper"},on:{"mouseleave":_vm.clearHighlightIndex,"focusout":_vm.clearHighlightIndex,"!mousemove":function($event){return _vm.onMouseHighlight.apply(null, arguments)}}},[(_vm.isLoading && !_vm.listRenderedOutside)?_c('combobox-loading-list',_vm._b({},'combobox-loading-list',_vm.listProps,false)):(_vm.isListEmpty && !_vm.listRenderedOutside)?_c('combobox-empty-list',_vm._b({attrs:{"message":_vm.emptyStateMessage}},'combobox-empty-list',_vm.listProps,false)):_vm._t("list",null,{"listProps":_vm.listProps,"opened":_vm.onOpen,"clearHighlightIndex":_vm.clearHighlightIndex,"isLoading":_vm.isLoading,"isListEmpty":_vm.isListEmpty})],2):_vm._e()])}
3240
+ var comboboxvue_type_template_id_7535857e_staticRenderFns = []
3233
3241
 
3234
3242
 
3235
3243
  ;// CONCATENATED MODULE: ./common/mixins/dom.js
@@ -3529,22 +3537,20 @@ const ERROR_INVALID_LIST_ELEMENT = 'listElementKey is required or the referenced
3529
3537
  this.setHighlightIndex(this._itemsLength() - 1);
3530
3538
  },
3531
3539
 
3532
- async setHighlightIndex(num) {
3540
+ setHighlightIndex(num) {
3533
3541
  this[indexKey] = num;
3534
3542
  this[idKey] = this._getItemId(num);
3535
3543
 
3536
3544
  if (this._itemsLength() && afterHighlightMethod) {
3537
- await this.$nextTick();
3538
3545
  this[afterHighlightMethod](num);
3539
3546
  }
3540
3547
  },
3541
3548
 
3542
- async setHighlightId(id) {
3549
+ setHighlightId(id) {
3543
3550
  this[idKey] = id;
3544
3551
  this[indexKey] = this._getItemIndex(id);
3545
3552
 
3546
3553
  if (this._itemsLength() && afterHighlightMethod) {
3547
- await this.$nextTick();
3548
3554
  this[afterHighlightMethod](this._getItemIndex(id));
3549
3555
  }
3550
3556
  },
@@ -3603,9 +3609,9 @@ const ERROR_INVALID_LIST_ELEMENT = 'listElementKey is required or the referenced
3603
3609
  }
3604
3610
  };
3605
3611
  });
3606
- ;// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/combobox/combobox_loading-list.vue?vue&type=template&id=49c938eb&
3607
- var combobox_loading_listvue_type_template_id_49c938eb_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._l((7),function(index){return _c('dt-list-item',{key:index,attrs:{"role":"option","navigation-type":"none"}},[_c('dt-skeleton',{attrs:{"text-option":{ type: 'body' },"offset":0}})],1)}),1)}
3608
- var combobox_loading_listvue_type_template_id_49c938eb_staticRenderFns = []
3612
+ ;// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/combobox/combobox_loading-list.vue?vue&type=template&id=07d9971d&
3613
+ var combobox_loading_listvue_type_template_id_07d9971d_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ol',{staticClass:"d-p0 d-mt8 d-hmx332 d-of-y-auto",attrs:{"aria-busy":"true"}},_vm._l((7),function(index){return _c('dt-list-item',{key:index,attrs:{"role":"option","navigation-type":"none"}},[_c('dt-skeleton',{attrs:{"text-option":{ type: 'body' },"offset":0}})],1)}),1)}
3614
+ var combobox_loading_listvue_type_template_id_07d9971d_staticRenderFns = []
3609
3615
 
3610
3616
 
3611
3617
  ;// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/list_item/list_item.vue?vue&type=template&id=5367188c&
@@ -4652,6 +4658,9 @@ var skeleton_component = normalizeComponent(
4652
4658
  //
4653
4659
  //
4654
4660
  //
4661
+ //
4662
+ //
4663
+ //
4655
4664
 
4656
4665
 
4657
4666
  /* harmony default export */ const combobox_loading_listvue_type_script_lang_js_ = ({
@@ -4673,8 +4682,8 @@ var skeleton_component = normalizeComponent(
4673
4682
  ;
4674
4683
  var combobox_loading_list_component = normalizeComponent(
4675
4684
  combobox_combobox_loading_listvue_type_script_lang_js_,
4676
- combobox_loading_listvue_type_template_id_49c938eb_render,
4677
- combobox_loading_listvue_type_template_id_49c938eb_staticRenderFns,
4685
+ combobox_loading_listvue_type_template_id_07d9971d_render,
4686
+ combobox_loading_listvue_type_template_id_07d9971d_staticRenderFns,
4678
4687
  false,
4679
4688
  null,
4680
4689
  null,
@@ -4683,6 +4692,62 @@ var combobox_loading_list_component = normalizeComponent(
4683
4692
  )
4684
4693
 
4685
4694
  /* harmony default export */ const combobox_loading_list = (combobox_loading_list_component.exports);
4695
+ ;// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/combobox/combobox_empty-list.vue?vue&type=template&id=85c21112&
4696
+ var combobox_empty_listvue_type_template_id_85c21112_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ol',{staticClass:"d-p0",attrs:{"data-qa":"dt-combobox-empty-list"}},[_c('dt-list-item',{staticClass:"d-d-flex d-jc-center",attrs:{"role":"option","navigation-type":"arrow-keys"}},[_c('span',[_vm._v(_vm._s(_vm.message))])])],1)}
4697
+ var combobox_empty_listvue_type_template_id_85c21112_staticRenderFns = []
4698
+
4699
+
4700
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/combobox/combobox_empty-list.vue?vue&type=script&lang=js&
4701
+ //
4702
+ //
4703
+ //
4704
+ //
4705
+ //
4706
+ //
4707
+ //
4708
+ //
4709
+ //
4710
+ //
4711
+ //
4712
+ //
4713
+ //
4714
+ //
4715
+ //
4716
+
4717
+ /* harmony default export */ const combobox_empty_listvue_type_script_lang_js_ = ({
4718
+ name: 'ComboboxEmptyList',
4719
+ components: {
4720
+ DtListItem: list_item
4721
+ },
4722
+ props: {
4723
+ message: {
4724
+ type: String,
4725
+ required: true
4726
+ }
4727
+ }
4728
+ });
4729
+ ;// CONCATENATED MODULE: ./components/combobox/combobox_empty-list.vue?vue&type=script&lang=js&
4730
+ /* harmony default export */ const combobox_combobox_empty_listvue_type_script_lang_js_ = (combobox_empty_listvue_type_script_lang_js_);
4731
+ ;// CONCATENATED MODULE: ./components/combobox/combobox_empty-list.vue
4732
+
4733
+
4734
+
4735
+
4736
+
4737
+ /* normalize component */
4738
+ ;
4739
+ var combobox_empty_list_component = normalizeComponent(
4740
+ combobox_combobox_empty_listvue_type_script_lang_js_,
4741
+ combobox_empty_listvue_type_template_id_85c21112_render,
4742
+ combobox_empty_listvue_type_template_id_85c21112_staticRenderFns,
4743
+ false,
4744
+ null,
4745
+ null,
4746
+ null
4747
+
4748
+ )
4749
+
4750
+ /* harmony default export */ const combobox_empty_list = (combobox_empty_list_component.exports);
4686
4751
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/combobox/combobox.vue?vue&type=script&lang=js&
4687
4752
  //
4688
4753
  //
@@ -4724,13 +4789,22 @@ var combobox_loading_list_component = normalizeComponent(
4724
4789
  //
4725
4790
  //
4726
4791
  //
4792
+ //
4793
+ //
4794
+ //
4795
+ //
4796
+ //
4797
+ //
4798
+ //
4799
+
4727
4800
 
4728
4801
 
4729
4802
 
4730
4803
  /* harmony default export */ const comboboxvue_type_script_lang_js_ = ({
4731
4804
  name: 'DtCombobox',
4732
4805
  components: {
4733
- ComboboxLoadingList: combobox_loading_list
4806
+ ComboboxLoadingList: combobox_loading_list,
4807
+ ComboboxEmptyList: combobox_empty_list
4734
4808
  },
4735
4809
  mixins: [keyboard_list_navigation({
4736
4810
  indexKey: 'highlightIndex',
@@ -4801,6 +4875,14 @@ var combobox_loading_list_component = normalizeComponent(
4801
4875
  loading: {
4802
4876
  type: Boolean,
4803
4877
  default: false
4878
+ },
4879
+
4880
+ /**
4881
+ * Message to show when the list is empty
4882
+ */
4883
+ emptyStateMessage: {
4884
+ type: String,
4885
+ default: 'No matches found.'
4804
4886
  }
4805
4887
  },
4806
4888
  emits: ['select', 'escape', 'highlight', 'opened'],
@@ -4810,7 +4892,9 @@ var combobox_loading_list_component = normalizeComponent(
4810
4892
  // If the list is rendered at the root, rather than as a child
4811
4893
  // of this component, this is the ref to that dom element. Set
4812
4894
  // by the onOpen method.
4813
- outsideRenderedListRef: null
4895
+ outsideRenderedListRef: null,
4896
+ isListEmpty: undefined,
4897
+ isLoading: undefined
4814
4898
  };
4815
4899
  },
4816
4900
 
@@ -4861,22 +4945,38 @@ var combobox_loading_list_component = normalizeComponent(
4861
4945
  watch: {
4862
4946
  showList(showList) {
4863
4947
  // When the list's visibility changes reset the highlight index.
4864
- this.$nextTick(function () {
4865
- if (!this.listRenderedOutside) {
4866
- this.setInitialHighlightIndex();
4867
- this.$emit('opened', showList);
4868
- }
4869
- });
4948
+ if (!this.listRenderedOutside) {
4949
+ this.setInitialHighlightIndex();
4950
+ this.$emit('opened', showList);
4951
+ }
4870
4952
 
4871
4953
  if (!showList && this.outsideRenderedListRef) {
4872
4954
  this.outsideRenderedListRef.removeEventListener('mousemove', this.onMouseHighlight);
4873
4955
  this.outsideRenderedListRef = null;
4956
+ this.isListEmpty = undefined;
4874
4957
  }
4958
+ },
4959
+
4960
+ loading(isLoading) {
4961
+ this.isListEmpty = undefined;
4962
+ this.isLoading = isLoading;
4963
+ this.$nextTick(() => {
4964
+ this.isListEmpty = this.checkItemsLength();
4965
+ this.setInitialHighlightIndex();
4966
+ });
4875
4967
  }
4876
4968
 
4877
4969
  },
4970
+
4971
+ async mounted() {
4972
+ this.isLoading = this.loading;
4973
+ await this.$nextTick();
4974
+ this.isListEmpty = this.checkItemsLength();
4975
+ },
4976
+
4878
4977
  methods: {
4879
4978
  onMouseHighlight(e) {
4979
+ if (this.loading) return;
4880
4980
  const liElement = e.target.closest('li');
4881
4981
 
4882
4982
  if (liElement && this.highlightId !== liElement.id) {
@@ -4885,9 +4985,9 @@ var combobox_loading_list_component = normalizeComponent(
4885
4985
  },
4886
4986
 
4887
4987
  getListElement() {
4888
- var _this$outsideRendered;
4988
+ var _this$outsideRendered, _this$$refs$listWrapp;
4889
4989
 
4890
- return (_this$outsideRendered = this.outsideRenderedListRef) !== null && _this$outsideRendered !== void 0 ? _this$outsideRendered : this.$refs.listWrapper.querySelector("#".concat(this.listId));
4990
+ return (_this$outsideRendered = this.outsideRenderedListRef) !== null && _this$outsideRendered !== void 0 ? _this$outsideRendered : (_this$$refs$listWrapp = this.$refs.listWrapper) === null || _this$$refs$listWrapp === void 0 ? void 0 : _this$$refs$listWrapp.querySelector("#".concat(this.listId));
4891
4991
  },
4892
4992
 
4893
4993
  clearHighlightIndex() {
@@ -4897,10 +4997,13 @@ var combobox_loading_list_component = normalizeComponent(
4897
4997
  },
4898
4998
 
4899
4999
  afterHighlight() {
5000
+ if (this.loading) return;
4900
5001
  this.$emit('highlight', this.highlightIndex);
4901
5002
  },
4902
5003
 
4903
5004
  onEnterKey() {
5005
+ if (this.loading || this.isListEmpty) return;
5006
+
4904
5007
  if (this.highlightIndex >= 0) {
4905
5008
  this.$emit('select', this.highlightIndex);
4906
5009
  }
@@ -4918,24 +5021,30 @@ var combobox_loading_list_component = normalizeComponent(
4918
5021
  this.$emit('opened', open);
4919
5022
 
4920
5023
  if (open) {
5024
+ this.isListEmpty = this.checkItemsLength();
4921
5025
  this.setInitialHighlightIndex();
4922
5026
  }
4923
5027
  },
4924
5028
 
4925
5029
  onKeyValidation(e, eventHandler) {
4926
- if (!this.showList || !this.getListElement() || this.loading) {
4927
- return;
4928
- }
4929
-
5030
+ if (!this.showList || !this.getListElement()) return;
4930
5031
  this[eventHandler](e);
4931
5032
  },
4932
5033
 
4933
5034
  setInitialHighlightIndex() {
4934
- if (this.showList) {
5035
+ if (!this.showList) return;
5036
+ this.$nextTick(() => {
4935
5037
  // When the list's is shown, reset the highlight index.
4936
- // If the list is in loading state, set to -1
5038
+ // If the list is loading, set to -1
4937
5039
  this.setHighlightIndex(this.loading ? -1 : 0);
4938
- }
5040
+ });
5041
+ },
5042
+
5043
+ checkItemsLength() {
5044
+ if (!this.showList) return undefined;
5045
+ const list = this.getListElement();
5046
+ const options = list === null || list === void 0 ? void 0 : list.querySelectorAll("[role=\"option\"]");
5047
+ return (options === null || options === void 0 ? void 0 : options.length) === 0;
4939
5048
  }
4940
5049
 
4941
5050
  }
@@ -4952,8 +5061,8 @@ var combobox_loading_list_component = normalizeComponent(
4952
5061
  ;
4953
5062
  var combobox_component = normalizeComponent(
4954
5063
  combobox_comboboxvue_type_script_lang_js_,
4955
- comboboxvue_type_template_id_071e5acc_render,
4956
- comboboxvue_type_template_id_071e5acc_staticRenderFns,
5064
+ comboboxvue_type_template_id_7535857e_render,
5065
+ comboboxvue_type_template_id_7535857e_staticRenderFns,
4957
5066
  false,
4958
5067
  null,
4959
5068
  null,
@@ -4973,8 +5082,8 @@ return [_c('ul',{ref:"listWrapper",class:['d-ps-relative', 'd-px0', _vm.DROPDOWN
4973
5082
  var dropdownvue_type_template_id_02d3f006_staticRenderFns = []
4974
5083
 
4975
5084
 
4976
- ;// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/popover/popover.vue?vue&type=template&id=97535496&
4977
- var popovervue_type_template_id_97535496_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.modal && _vm.isOpen)?_c('portal',[_c('div',{staticClass:"d-modal--transparent",attrs:{"aria-hidden":_vm.modal && _vm.isOpen ? 'false' : 'true'},on:{"click":function($event){$event.preventDefault();$event.stopPropagation();}}})]):_vm._e(),_c(_vm.elementType,_vm._g({ref:"popover",tag:"component",class:['d-popover', { 'd-popover__anchor--modal-opened': _vm.modal && _vm.isOpen }],attrs:{"data-qa":"dt-popover-container"}},_vm.$listeners),[_c('div',{ref:"anchor",attrs:{"id":!_vm.ariaLabelledby && _vm.labelledBy,"data-qa":"dt-popover-anchor"},on:{"!click":function($event){return _vm.defaultToggleOpen.apply(null, arguments)},"keydown":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"up",38,$event.key,["Up","ArrowUp"])){ return null; }$event.preventDefault();return _vm.onArrowKeyPress.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"down",40,$event.key,["Down","ArrowDown"])){ return null; }$event.preventDefault();return _vm.onArrowKeyPress.apply(null, arguments)}],"wheel":function (e) { return (_vm.isOpen && _vm.modal) && e.preventDefault(); },"!keydown":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"escape",undefined,$event.key,undefined)){ return null; }return _vm.closePopover.apply(null, arguments)}}},[_vm._t("anchor",null,{"attrs":{
5085
+ ;// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/popover/popover.vue?vue&type=template&id=9802b6fc&
5086
+ var popovervue_type_template_id_9802b6fc_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.modal && _vm.isOpen)?_c('portal',[_c('div',{staticClass:"d-modal--transparent",attrs:{"aria-hidden":_vm.modal && _vm.isOpen ? 'false' : 'true'},on:{"click":function($event){$event.preventDefault();$event.stopPropagation();}}})]):_vm._e(),_c(_vm.elementType,_vm._g({ref:"popover",tag:"component",class:['d-popover', { 'd-popover__anchor--modal-opened': _vm.modal && _vm.isOpen }],attrs:{"data-qa":"dt-popover-container"}},_vm.$listeners),[_c('div',{ref:"anchor",attrs:{"id":!_vm.ariaLabelledby && _vm.labelledBy,"data-qa":"dt-popover-anchor"},on:{"!click":function($event){return _vm.defaultToggleOpen.apply(null, arguments)},"keydown":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"up",38,$event.key,["Up","ArrowUp"])){ return null; }$event.preventDefault();return _vm.onArrowKeyPress.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"down",40,$event.key,["Down","ArrowDown"])){ return null; }$event.preventDefault();return _vm.onArrowKeyPress.apply(null, arguments)}],"wheel":function (e) { return (_vm.isOpen && _vm.modal) && e.preventDefault(); },"!keydown":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"escape",undefined,$event.key,undefined)){ return null; }return _vm.closePopover.apply(null, arguments)}}},[_vm._t("anchor",null,{"attrs":{
4978
5087
  'aria-expanded': _vm.isOpen.toString(),
4979
5088
  'aria-controls': _vm.id,
4980
5089
  'aria-haspopup': _vm.role,
@@ -4985,7 +5094,7 @@ var popovervue_type_template_id_97535496_render = function () {var _vm=this;var
4985
5094
  'd-popover__content',
4986
5095
  _vm.POPOVER_PADDING_CLASSES[_vm.padding],
4987
5096
  _vm.contentClass ],attrs:{"data-qa":"dt-popover-content"}},[_vm._t("content",null,{"close":_vm.closePopover})],2),(_vm.$slots.footerContent)?_c('popover-header-footer',{ref:"popover__footer",class:_vm.POPOVER_HEADER_FOOTER_PADDING_CLASSES[_vm.padding],attrs:{"type":"footer","content-class":_vm.footerClass},scopedSlots:_vm._u([{key:"content",fn:function(){return [_vm._t("footerContent",null,{"close":_vm.closePopover})]},proxy:true}],null,true)}):_vm._e()],1)],1)],1)}
4988
- var popovervue_type_template_id_97535496_staticRenderFns = []
5097
+ var popovervue_type_template_id_9802b6fc_staticRenderFns = []
4989
5098
 
4990
5099
 
4991
5100
  ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js
@@ -9388,6 +9497,7 @@ const getArrowDetected = fn => ({
9388
9497
 
9389
9498
 
9390
9499
  const BASE_TIPPY_DIRECTIONS = ['bottom', 'bottom-start', 'bottom-end', 'right', 'right-start', 'right-end', 'left', 'left-start', 'left-end', 'top', 'top-start', 'top-end'];
9500
+ const TIPPY_STICKY_VALUES = [true, false, 'reference', 'popper'];
9391
9501
  const tippy_utils_createTippy = (anchorElement, options) => {
9392
9502
  const {
9393
9503
  contentElement
@@ -9395,6 +9505,7 @@ const tippy_utils_createTippy = (anchorElement, options) => {
9395
9505
  };
9396
9506
  delete options.contentElement;
9397
9507
  return tippy_esm(anchorElement, { ...options,
9508
+ plugins: [sticky],
9398
9509
  render: () => getContentWrapper(contentElement)
9399
9510
  });
9400
9511
  };
@@ -9409,7 +9520,7 @@ const getPopperOptions = function () {
9409
9520
  modifiers: [{
9410
9521
  name: 'flip',
9411
9522
  options: {
9412
- fallbackPlacements: fallbackPlacements,
9523
+ fallbackPlacements,
9413
9524
  boundary
9414
9525
  }
9415
9526
  }, {
@@ -9470,6 +9581,7 @@ const POPOVER_HEADER_FOOTER_PADDING_CLASSES = {
9470
9581
  const POPOVER_ROLES = ['dialog', 'menu', 'listbox', 'tree', 'grid'];
9471
9582
  const POPOVER_CONTENT_WIDTHS = [null, 'anchor'];
9472
9583
  const POPOVER_INITIAL_FOCUS_STRINGS = ['none', 'dialog', 'first'];
9584
+ const POPOVER_STICKY_VALUES = [...TIPPY_STICKY_VALUES];
9473
9585
  const POPOVER_DIRECTIONS = [...BASE_TIPPY_DIRECTIONS];
9474
9586
  ;// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/lazy_show/lazy_show.vue?vue&type=template&id=9ffa4e8c&
9475
9587
  var lazy_showvue_type_template_id_9ffa4e8c_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',_vm._g({attrs:{"name":_vm.transition,"appear":_vm.appear}},_vm.$listeners),[_c('div',_vm._g({directives:[{name:"show",rawName:"v-show",value:(_vm.show),expression:"show"}]},_vm.$listeners),[(_vm.initialized)?_vm._t("default"):_vm._e()],2)])}
@@ -10189,6 +10301,21 @@ var popover_header_footer_component = normalizeComponent(
10189
10301
  default: 'bottom-end'
10190
10302
  },
10191
10303
 
10304
+ /**
10305
+ * If the popover sticks to the anchor. This is usually not needed, but can be needed
10306
+ * if the reference element's position is animating, or to automatically update the popover
10307
+ * position in those cases the DOM layout changes the reference element's position.
10308
+ * `true` enables it, `reference` only checks the "reference" rect for changes and `popper` only
10309
+ * checks the "popper" rect for changes.
10310
+ */
10311
+ sticky: {
10312
+ type: [Boolean, String],
10313
+ default: false,
10314
+ validator: sticky => {
10315
+ return POPOVER_STICKY_VALUES.includes(sticky);
10316
+ }
10317
+ },
10318
+
10192
10319
  /**
10193
10320
  * Determines maximum height for the popover before overflow.
10194
10321
  * Possible units rem|px|em
@@ -10302,14 +10429,20 @@ var popover_header_footer_component = normalizeComponent(
10302
10429
 
10303
10430
  offset(offset) {
10304
10431
  this.tip.setProps({
10305
- offset: offset
10432
+ offset
10433
+ });
10434
+ },
10435
+
10436
+ sticky(sticky) {
10437
+ this.tip.setProps({
10438
+ sticky
10306
10439
  });
10307
10440
  },
10308
10441
 
10309
10442
  fallbackPlacements(fallbackPlacements) {
10310
10443
  this.tip.setProps({
10311
10444
  popperOptions: getPopperOptions({
10312
- fallbackPlacements: fallbackPlacements,
10445
+ fallbackPlacements,
10313
10446
  hasHideModifierEnabled: true
10314
10447
  })
10315
10448
  });
@@ -10362,6 +10495,7 @@ var popover_header_footer_component = normalizeComponent(
10362
10495
  contentElement: this.popoverContentEl,
10363
10496
  placement: this.placement,
10364
10497
  offset: this.offset,
10498
+ sticky: this.sticky,
10365
10499
  appendTo: document.body,
10366
10500
  interactive: true,
10367
10501
  trigger: 'manual',
@@ -10583,8 +10717,8 @@ var popovervue_type_style_index_0_lang_less_ = __webpack_require__(230);
10583
10717
 
10584
10718
  var popover_component = normalizeComponent(
10585
10719
  popover_popovervue_type_script_lang_js_,
10586
- popovervue_type_template_id_97535496_render,
10587
- popovervue_type_template_id_97535496_staticRenderFns,
10720
+ popovervue_type_template_id_9802b6fc_render,
10721
+ popovervue_type_template_id_9802b6fc_staticRenderFns,
10588
10722
  false,
10589
10723
  null,
10590
10724
  null,
@@ -10963,9 +11097,9 @@ var dropdown_component = normalizeComponent(
10963
11097
  /* harmony default export */ const dropdown = (dropdown_component.exports);
10964
11098
  ;// CONCATENATED MODULE: ./components/dropdown/index.js
10965
11099
 
10966
- ;// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/emoji/emoji.vue?vue&type=template&id=010f8b36&
10967
- var emojivue_type_template_id_010f8b36_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{class:_vm.skeletonSizeClass},[_c('dt-skeleton',{directives:[{name:"show",rawName:"v-show",value:(_vm.emojiDataLoading || _vm.imgLoading),expression:"emojiDataLoading || imgLoading"}],class:_vm.skeletonSizeClass,attrs:{"offset":0,"shape-option":{ shape: 'square', contentClass: _vm.skeletonSizeClass, size: 'auto' }}}),(!_vm.emojiDataLoading)?_c('img',{directives:[{name:"show",rawName:"v-show",value:(!_vm.imgLoading),expression:"!imgLoading"}],ref:"emojiImg",class:[_vm.size, _vm.imgClass],attrs:{"aria-label":_vm.emojiLabel,"alt":_vm.emojiAlt,"title":_vm.emojiLabel,"src":_vm.emojiSrc},on:{"load":_vm.imageLoaded,"error":_vm.imageErrored}}):_vm._e()],1)}
10968
- var emojivue_type_template_id_010f8b36_staticRenderFns = []
11100
+ ;// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/emoji/emoji.vue?vue&type=template&id=85307cb0&
11101
+ var emojivue_type_template_id_85307cb0_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{class:_vm.skeletonSizeClass},[_c('dt-skeleton',{directives:[{name:"show",rawName:"v-show",value:(_vm.emojiDataLoading || _vm.imgLoading),expression:"emojiDataLoading || imgLoading"}],class:_vm.skeletonSizeClass,attrs:{"offset":0,"shape-option":{ shape: 'square', contentClass: _vm.skeletonSizeClass, size: 'auto' }}}),(!_vm.emojiDataLoading)?_c('img',{directives:[{name:"show",rawName:"v-show",value:(!_vm.imgLoading),expression:"!imgLoading"}],ref:"emojiImg",class:[_vm.size, _vm.imgClass],attrs:{"aria-label":_vm.emojiLabel,"alt":_vm.emojiAlt,"title":_vm.emojiLabel,"src":_vm.emojiSrc},on:{"load":_vm.imageLoaded,"error":_vm.imageErrored}}):_vm._e()],1)}
11102
+ var emojivue_type_template_id_85307cb0_staticRenderFns = []
10969
11103
 
10970
11104
 
10971
11105
  ;// CONCATENATED MODULE: ./components/emoji/emoji_constants.js
@@ -10989,7 +11123,8 @@ var emoji_regex_default = /*#__PURE__*/__webpack_require__.n(emoji_regex);
10989
11123
  ;// CONCATENATED MODULE: ./common/emoji.js
10990
11124
 
10991
11125
  const emojiVersion = '6.6';
10992
- const defaultEmojiAssetUrl = 'https://cdn.jsdelivr.net/joypixels/assets/' + emojiVersion + '/png/unicode/32/'; // Used for emoji 16px and smaller
11126
+ const defaultEmojiAssetUrl = 'https://cdn.jsdelivr.net/joypixels/assets/' + emojiVersion + '/png/unicode/32/';
11127
+ let customEmojiAssetUrl = null; // Used for emoji 16px and smaller
10993
11128
 
10994
11129
  let emojiImageUrlSmall = defaultEmojiAssetUrl;
10995
11130
  let emojiFileExtensionSmall = '.png'; // Used for emoji larger than 16px
@@ -11001,6 +11136,9 @@ async function getEmojiJson() {
11001
11136
  if (emojiJson) return;
11002
11137
  emojiJson = await __webpack_require__.e(/* import() */ 370).then(__webpack_require__.t.bind(__webpack_require__, 370, 19));
11003
11138
  }
11139
+ function getEmojiData() {
11140
+ return emojiJson;
11141
+ }
11004
11142
  function setEmojiAssetUrlSmall(url) {
11005
11143
  let fileExtension = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '.png';
11006
11144
 
@@ -11020,6 +11158,69 @@ function setEmojiAssetUrlLarge(url) {
11020
11158
 
11021
11159
  emojiImageUrlLarge = url;
11022
11160
  emojiFileExtensionLarge = fileExtension;
11161
+ }
11162
+ function setCustomEmojiUrl(url) {
11163
+ customEmojiAssetUrl = url;
11164
+ }
11165
+ function setCustomEmojiJson(json) {
11166
+ validateCustomEmojiJson(json);
11167
+ }
11168
+ /**
11169
+ * Validate custom emoji json
11170
+ */
11171
+
11172
+ async function validateCustomEmojiJson(json) {
11173
+ await getEmojiJson();
11174
+ const customEmojiProps = ['extension', 'custom'];
11175
+ const customEmojiRequiredProps = ['name', 'category', 'shortname', 'extension', 'custom'];
11176
+ /**
11177
+ * Update single emoji properties.
11178
+ * If the property exists in emojiData, it'll add the values if the property is an array, otherwise will overwrite.
11179
+ * If not exists, will add the property to the emojiData object.
11180
+ */
11181
+
11182
+ const _updateNativeEmojiData = (emojiData, propName, propValue) => {
11183
+ if (emojiData[propName] === undefined) {
11184
+ if (!customEmojiProps.includes(propName)) {
11185
+ return;
11186
+ } // new property to add
11187
+
11188
+
11189
+ emojiData[propName] = propValue;
11190
+ } else {
11191
+ if (Array.isArray(emojiData[propName])) {
11192
+ emojiData[propName] = emojiData[propName].concat(propValue);
11193
+ } else {
11194
+ emojiData[propName] = propValue;
11195
+ }
11196
+ }
11197
+ };
11198
+
11199
+ Object.entries(json).forEach(item => {
11200
+ const [customEmojiKey, customEmojiValue] = item;
11201
+
11202
+ if (customEmojiKey in emojiJson) {
11203
+ // custom emoji exists in emoji json which means to update some data in the native emoji
11204
+ const emojiData = emojiJson[customEmojiKey];
11205
+
11206
+ for (const customEmojiPropertyName in customEmojiValue) {
11207
+ const customEmojiPropertyValue = customEmojiValue[customEmojiPropertyName];
11208
+
11209
+ _updateNativeEmojiData(emojiData, customEmojiPropertyName, customEmojiPropertyValue);
11210
+ }
11211
+ } else {
11212
+ // new custom emoji
11213
+ const _validateRequiredProps = () => customEmojiRequiredProps.every(val => {
11214
+ return customEmojiValue[val] !== undefined;
11215
+ });
11216
+
11217
+ if (_validateRequiredProps()) {
11218
+ emojiJson[customEmojiKey] = customEmojiValue;
11219
+ } else {
11220
+ console.error('The following custom emoji doesn\'t contain the required properties:', customEmojiValue);
11221
+ }
11222
+ }
11223
+ });
11023
11224
  } // recursively searches the emoji data object containing data for all emojis
11024
11225
  // and returns the object with the specified shortcode.
11025
11226
 
@@ -11044,7 +11245,7 @@ function shortcodeToEmojiData(shortcode) {
11044
11245
  }
11045
11246
 
11046
11247
  let reference;
11047
- f(emojiJson, null);
11248
+ f(getEmojiData(), null);
11048
11249
  return reference;
11049
11250
  } // Takes in an emoji unicode character(s) and converts it to an emoji string in the format the emoji data object expects
11050
11251
  // as a key. There can be multiple unicode characters in an emoji to denote the emoji itself, skin tone, gender
@@ -11094,8 +11295,11 @@ async function codeToEmojiData(code) {
11094
11295
  // @returns {string[]}
11095
11296
 
11096
11297
  function findShortCodes(textContent) {
11097
- const shortCodes = textContent.match(/:\w+:/g);
11098
- const filtered = shortCodes ? shortCodes.filter(code => shortcodeToEmojiData(code)) : [];
11298
+ const shortcodes = textContent.match(/:\w+:/g);
11299
+ return filterValidShortCodes(shortcodes);
11300
+ }
11301
+ function filterValidShortCodes(shortcodes) {
11302
+ const filtered = shortcodes ? shortcodes.filter(code => shortcodeToEmojiData(code)) : [];
11099
11303
  return new Set(filtered);
11100
11304
  } // Finds every emoji in slot text
11101
11305
  // removes duplicates
@@ -11141,7 +11345,8 @@ function findEmojis(textContent) {
11141
11345
  props: {
11142
11346
  /**
11143
11347
  * Supports shortcode ex: :smile: or unicode ex: 😄. Will display the resulting emoji.
11144
- * See https://emojipedia.org/joypixels/ for all supported shortcode/unicode.
11348
+ * See https://emojipedia.org/joypixels/ for all supported shortcode/unicode or the docs
11349
+ * for setting up custom emojis.
11145
11350
  */
11146
11351
  code: {
11147
11352
  type: String,
@@ -11194,8 +11399,15 @@ function findEmojis(textContent) {
11194
11399
  },
11195
11400
 
11196
11401
  emojiSrc() {
11402
+ var _this$emojiData;
11403
+
11197
11404
  if (!this.emojiDataValid) {
11198
11405
  return 'invalid';
11406
+ } // custom emoji
11407
+
11408
+
11409
+ if ((_this$emojiData = this.emojiData) !== null && _this$emojiData !== void 0 && _this$emojiData.custom) {
11410
+ return customEmojiAssetUrl + this.emojiData.key + this.emojiData.extension;
11199
11411
  }
11200
11412
 
11201
11413
  if (['d-svg--size14', 'd-svg--size16'].includes(this.size)) {
@@ -11210,7 +11422,7 @@ function findEmojis(textContent) {
11210
11422
  return undefined;
11211
11423
  }
11212
11424
 
11213
- return stringToUnicode(this.emojiData.unicode_output);
11425
+ return this.emojiData.unicode_output ? stringToUnicode(this.emojiData.unicode_output) : this.emojiData.name;
11214
11426
  },
11215
11427
 
11216
11428
  emojiLabel() {
@@ -11268,8 +11480,8 @@ function findEmojis(textContent) {
11268
11480
  ;
11269
11481
  var emoji_component = normalizeComponent(
11270
11482
  emoji_emojivue_type_script_lang_js_,
11271
- emojivue_type_template_id_010f8b36_render,
11272
- emojivue_type_template_id_010f8b36_staticRenderFns,
11483
+ emojivue_type_template_id_85307cb0_render,
11484
+ emojivue_type_template_id_85307cb0_staticRenderFns,
11273
11485
  false,
11274
11486
  null,
11275
11487
  null,
@@ -11281,6 +11493,125 @@ var emoji_component = normalizeComponent(
11281
11493
  ;// CONCATENATED MODULE: ./components/emoji/index.js
11282
11494
 
11283
11495
 
11496
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/emoji_text_wrapper/emoji_text_wrapper.vue?vue&type=script&lang=js&
11497
+
11498
+
11499
+ /* harmony default export */ const emoji_text_wrappervue_type_script_lang_js_ = ({
11500
+ name: 'DtEmojiTextWrapper',
11501
+ components: {
11502
+ DtEmoji: emoji
11503
+ },
11504
+ inheritAttrs: false,
11505
+ props: {
11506
+ /**
11507
+ * The type of element to use for the wrapper.
11508
+ */
11509
+ elementType: {
11510
+ type: String,
11511
+ default: 'div'
11512
+ }
11513
+ },
11514
+
11515
+ data() {
11516
+ return {
11517
+ loadingEmojiJson: true
11518
+ };
11519
+ },
11520
+
11521
+ async created() {
11522
+ await getEmojiJson();
11523
+ this.loadingEmojiJson = false;
11524
+ },
11525
+
11526
+ methods: {
11527
+ /**
11528
+ * Replaces the valid codes from the text content with a DtEmoji component.
11529
+ * @returns {Array<VNode|string>}
11530
+ */
11531
+ replaceDtEmojis(replaceList, textContent) {
11532
+ const regexp = new RegExp("(".concat(replaceList.join('|'), ")"), 'g');
11533
+ const split = textContent.split(regexp);
11534
+ return split.map(item => {
11535
+ if (replaceList.includes(item)) {
11536
+ return this.$createElement(emoji, {
11537
+ attrs: {
11538
+ class: 'd-mx4 d-d-inline-block'
11539
+ },
11540
+ props: {
11541
+ code: item,
11542
+ ...this.$attrs
11543
+ }
11544
+ });
11545
+ }
11546
+
11547
+ return item;
11548
+ });
11549
+ },
11550
+
11551
+ /**
11552
+ * Recursively search the Vue virtual DOM to find text
11553
+ * @param VNode
11554
+ * @returns {VNode|*}
11555
+ */
11556
+ searchVNodes(VNode) {
11557
+ // If VNode has no tag, it is a text node
11558
+ if (!VNode.tag && VNode.text) {
11559
+ return this.searchCodes(VNode.text);
11560
+ }
11561
+
11562
+ const children = VNode.children ? VNode.children.map(VNodeChild => this.searchVNodes(VNodeChild)) : [];
11563
+ return this.$createElement(VNode.tag, VNode.data, children);
11564
+ },
11565
+
11566
+ // TODO: Find a way to crawl vue components
11567
+ replaceVueComponentVNodeContent(VNode) {//
11568
+ },
11569
+
11570
+ /**
11571
+ * Find codes in text.
11572
+ * @param textContent string
11573
+ * @returns {Array<VNode|string>|string}
11574
+ */
11575
+ searchCodes(textContent) {
11576
+ const shortcodes = findShortCodes(textContent);
11577
+ const emojis = findEmojis(textContent);
11578
+ const replaceList = [...shortcodes, ...emojis];
11579
+ if (replaceList.length === 0) return textContent;
11580
+ return this.replaceDtEmojis(replaceList, textContent);
11581
+ }
11582
+
11583
+ },
11584
+
11585
+ render(h) {
11586
+ const defaultSlotContent = this.$slots.default || [];
11587
+ return h(this.elementType, this.loadingEmojiJson ? defaultSlotContent : defaultSlotContent.map(VNode => this.searchVNodes(VNode)));
11588
+ }
11589
+
11590
+ });
11591
+ ;// CONCATENATED MODULE: ./components/emoji_text_wrapper/emoji_text_wrapper.vue?vue&type=script&lang=js&
11592
+ /* harmony default export */ const emoji_text_wrapper_emoji_text_wrappervue_type_script_lang_js_ = (emoji_text_wrappervue_type_script_lang_js_);
11593
+ ;// CONCATENATED MODULE: ./components/emoji_text_wrapper/emoji_text_wrapper.vue
11594
+ var emoji_text_wrapper_render, emoji_text_wrapper_staticRenderFns
11595
+ ;
11596
+
11597
+
11598
+
11599
+ /* normalize component */
11600
+ ;
11601
+ var emoji_text_wrapper_component = normalizeComponent(
11602
+ emoji_text_wrapper_emoji_text_wrappervue_type_script_lang_js_,
11603
+ emoji_text_wrapper_render,
11604
+ emoji_text_wrapper_staticRenderFns,
11605
+ false,
11606
+ null,
11607
+ null,
11608
+ null
11609
+
11610
+ )
11611
+
11612
+ /* harmony default export */ const emoji_text_wrapper = (emoji_text_wrapper_component.exports);
11613
+ ;// CONCATENATED MODULE: ./components/emoji_text_wrapper/index.js
11614
+
11284
11615
  ;// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/input/input.vue?vue&type=template&id=39fb0468&
11285
11616
  var inputvue_type_template_id_39fb0468_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:"container",staticClass:"base-input",attrs:{"data-qa":"dt-input"}},[_c('label',{staticClass:"base-input__label",attrs:{"aria-details":_vm.$slots.description || _vm.description ? _vm.descriptionKey : undefined,"data-qa":"dt-input-label-wrapper"}},[_vm._t("labelSlot",function(){return [(_vm.label)?_c('div',{ref:"label",class:[
11286
11617
  'base-input__label-text',
@@ -15515,15 +15846,15 @@ var toggle_component = normalizeComponent(
15515
15846
  /* harmony default export */ const toggle = (toggle_component.exports);
15516
15847
  ;// CONCATENATED MODULE: ./components/toggle/index.js
15517
15848
 
15518
- ;// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/tooltip/tooltip.vue?vue&type=template&id=06e65b4f&
15519
- var tooltipvue_type_template_id_06e65b4f_render = function () {
15849
+ ;// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/tooltip/tooltip.vue?vue&type=template&id=662e4cf7&
15850
+ var tooltipvue_type_template_id_662e4cf7_render = function () {
15520
15851
  var _obj;
15521
15852
  var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{"data-qa":"dt-tooltip-container"}},[_c('div',{ref:"anchor",attrs:{"data-qa":"dt-tooltip-anchor"},on:{"focusin":_vm.onEnterAnchor,"focusout":_vm.onLeaveAnchor,"mouseenter":_vm.onEnterAnchor,"mouseleave":_vm.onLeaveAnchor,"keydown":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"esc",27,$event.key,["Esc","Escape"])){ return null; }return _vm.onLeaveAnchor.apply(null, arguments)}}},[_vm._t("anchor")],2),_c('dt-lazy-show',{ref:"content",class:[
15522
15853
  'd-tooltip',
15523
15854
  ("d-tooltip__arrow-tippy--" + _vm.currentPlacement),
15524
15855
  ( _obj = {}, _obj[ _vm.TOOLTIP_KIND_MODIFIERS.inverted ] = _vm.inverted, _obj ),
15525
15856
  _vm.contentClass ],attrs:{"id":_vm.id,"show":_vm.isShown && (!!_vm.message.trim() || !!_vm.$slots.default),"role":"tooltip","aria-hidden":"false","data-qa":"dt-tooltip","appear":"","transition":_vm.transition},on:{"after-leave":_vm.onLeaveTransitionComplete,"after-enter":_vm.onEnterTransitionComplete}},[_vm._t("default",function(){return [_vm._v(" "+_vm._s(_vm.message)+" ")]})],2)],1)}
15526
- var tooltipvue_type_template_id_06e65b4f_staticRenderFns = []
15857
+ var tooltipvue_type_template_id_662e4cf7_staticRenderFns = []
15527
15858
 
15528
15859
 
15529
15860
  ;// CONCATENATED MODULE: ./components/tooltip/tooltip_constants.js
@@ -15538,6 +15869,7 @@ const TOOLTIP_KIND_MODIFIERS = {
15538
15869
  inverted: "d-tooltip--inverted",
15539
15870
  hide: "d-tooltip--hide"
15540
15871
  };
15872
+ const TOOLTIP_STICKY_VALUES = [...TIPPY_STICKY_VALUES];
15541
15873
  const TOOLTIP_HIDE_ON_CLICK_VARIANTS = [true, false, 'toggle'];
15542
15874
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/tooltip/tooltip.vue?vue&type=script&lang=js&
15543
15875
  //
@@ -15647,6 +15979,21 @@ const TOOLTIP_HIDE_ON_CLICK_VARIANTS = [true, false, 'toggle'];
15647
15979
 
15648
15980
  },
15649
15981
 
15982
+ /**
15983
+ * If the tooltip sticks to the anchor. This is usually not needed, but can be needed
15984
+ * if the reference element's position is animating, or to automatically update the popover
15985
+ * position in those cases the DOM layout changes the reference element's position.
15986
+ * `true` enables it, `reference` only checks the "reference" rect for changes and `popper` only
15987
+ * checks the "popper" rect for changes.
15988
+ */
15989
+ sticky: {
15990
+ type: [Boolean, String],
15991
+ default: false,
15992
+ validator: sticky => {
15993
+ return TOOLTIP_STICKY_VALUES.includes(sticky);
15994
+ }
15995
+ },
15996
+
15650
15997
  /**
15651
15998
  * Additional css classes for the tooltip content element.
15652
15999
  * Can accept all of String, Object, and Array, i.e. has the
@@ -15708,6 +16055,7 @@ const TOOLTIP_HIDE_ON_CLICK_VARIANTS = [true, false, 'toggle'];
15708
16055
  interactive: false,
15709
16056
  trigger: 'manual',
15710
16057
  placement: this.placement,
16058
+ sticky: this.sticky,
15711
16059
  popperOptions: getPopperOptions({
15712
16060
  fallbackPlacements: this.fallbackPlacements,
15713
16061
  hasHideModifierEnabled: true,
@@ -15738,6 +16086,12 @@ const TOOLTIP_HIDE_ON_CLICK_VARIANTS = [true, false, 'toggle'];
15738
16086
  } else {
15739
16087
  this.tip.hide();
15740
16088
  }
16089
+ },
16090
+
16091
+ sticky(sticky) {
16092
+ this.tip.setProps({
16093
+ sticky
16094
+ });
15741
16095
  }
15742
16096
 
15743
16097
  },
@@ -15858,8 +16212,8 @@ var tooltipvue_type_style_index_0_lang_less_ = __webpack_require__(213);
15858
16212
 
15859
16213
  var tooltip_component = normalizeComponent(
15860
16214
  tooltip_tooltipvue_type_script_lang_js_,
15861
- tooltipvue_type_template_id_06e65b4f_render,
15862
- tooltipvue_type_template_id_06e65b4f_staticRenderFns,
16215
+ tooltipvue_type_template_id_662e4cf7_render,
16216
+ tooltipvue_type_template_id_662e4cf7_staticRenderFns,
15863
16217
  false,
15864
16218
  null,
15865
16219
  null,
@@ -16494,15 +16848,17 @@ var root_layout_component = normalizeComponent(
16494
16848
  ;// CONCATENATED MODULE: ./components/root_layout/index.js
16495
16849
 
16496
16850
 
16497
- ;// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue?vue&type=template&id=6f7d8b3c&
16498
- var combobox_with_popovervue_type_template_id_6f7d8b3c_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('dt-combobox',_vm._g({ref:"combobox",attrs:{"show-list":_vm.isListShown,"on-beginning-of-list":_vm.onBeginningOfList,"on-end-of-list":_vm.onEndOfList,"list-aria-label":_vm.listAriaLabel,"list-rendered-outside":true,"list-id":_vm.listId,"data-qa":"dt-combobox"},scopedSlots:_vm._u([{key:"input",fn:function(ref){
16851
+ ;// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue?vue&type=template&id=65a49163&
16852
+ var combobox_with_popovervue_type_template_id_65a49163_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('dt-combobox',_vm._g({ref:"combobox",attrs:{"loading":_vm.loading,"show-list":_vm.isListShown,"on-beginning-of-list":_vm.onBeginningOfList,"on-end-of-list":_vm.onEndOfList,"list-aria-label":_vm.listAriaLabel,"list-rendered-outside":true,"list-id":_vm.listId,"data-qa":"dt-combobox"},scopedSlots:_vm._u([{key:"input",fn:function(ref){
16499
16853
  var inputProps = ref.inputProps;
16500
16854
  return [_c('div',{ref:"input",attrs:{"id":_vm.externalAnchor},on:{"focusin":_vm.onFocusIn,"focusout":_vm.onFocusOut,"keydown":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"up",38,$event.key,["Up","ArrowUp"])){ return null; }return _vm.openOnArrowKeyPress($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"down",40,$event.key,["Down","ArrowDown"])){ return null; }return _vm.openOnArrowKeyPress($event)}]}},[_vm._t("input",null,{"inputProps":inputProps,"onInput":_vm.handleDisplayList})],2)]}},{key:"list",fn:function(ref){
16501
16855
  var opened = ref.opened;
16502
16856
  var listProps = ref.listProps;
16503
16857
  var clearHighlightIndex = ref.clearHighlightIndex;
16504
- return [_c('dt-popover',{ref:"popover",attrs:{"open":_vm.isListShown,"hide-on-click":true,"max-height":_vm.maxHeight,"max-width":_vm.maxWidth,"offset":_vm.popoverOffset,"placement":"bottom-start","padding":"none","role":"listbox","external-anchor":_vm.externalAnchor,"content-width":_vm.contentWidth,"content-tabindex":null,"modal":false,"auto-focus":false},on:{"update:open":function($event){_vm.isListShown=$event},"opened":function($event){return opened($event, arguments[1]);}},scopedSlots:_vm._u([{key:"headerContent",fn:function(){return [(_vm.$slots.header)?_c('div',{ref:"header",on:{"focusout":_vm.onFocusOut}},[_vm._t("header")],2):_vm._e()]},proxy:true},{key:"content",fn:function(){return [(_vm.loading)?_c('combobox-loading-list',_vm._b({class:[_vm.DROPDOWN_PADDING_CLASSES[_vm.padding], _vm.listClass]},'combobox-loading-list',listProps,false)):_c('div',{ref:"listWrapper",class:[_vm.DROPDOWN_PADDING_CLASSES[_vm.padding], _vm.listClass],on:{"mouseleave":clearHighlightIndex,"focusout":function($event){clearHighlightIndex; _vm.onFocusOut;}}},[_vm._t("list",null,{"listProps":listProps})],2)]},proxy:true},{key:"footerContent",fn:function(){return [(_vm.$slots.footer)?_c('div',{ref:"footer",on:{"focusout":_vm.onFocusOut}},[_vm._t("footer")],2):_vm._e()]},proxy:true}],null,true)})]}}],null,true)},_vm.comboboxListeners))}
16505
- var combobox_with_popovervue_type_template_id_6f7d8b3c_staticRenderFns = []
16858
+ var isLoading = ref.isLoading;
16859
+ var isListEmpty = ref.isListEmpty;
16860
+ return [_c('dt-popover',{ref:"popover",attrs:{"open":_vm.isListShown,"hide-on-click":_vm.showList === null,"max-height":_vm.maxHeight,"max-width":_vm.maxWidth,"offset":_vm.popoverOffset,"sticky":_vm.popoverSticky,"placement":"bottom-start","padding":"none","role":"listbox","external-anchor":_vm.externalAnchor,"content-width":_vm.contentWidth,"content-tabindex":null,"modal":false,"auto-focus":false},on:{"update:open":function($event){_vm.isListShown=$event},"opened":function($event){return opened($event, arguments[1]);}},scopedSlots:_vm._u([{key:"headerContent",fn:function(){return [(_vm.$slots.header)?_c('div',{ref:"header",on:{"focusout":_vm.onFocusOut}},[_vm._t("header")],2):_vm._e()]},proxy:true},{key:"content",fn:function(){return [_c('div',{ref:"listWrapper",class:[_vm.DROPDOWN_PADDING_CLASSES[_vm.padding], _vm.listClass],on:{"mouseleave":clearHighlightIndex,"focusout":function($event){clearHighlightIndex; _vm.onFocusOut;}}},[(isListEmpty)?_c('combobox-empty-list',_vm._b({attrs:{"message":_vm.emptyStateMessage}},'combobox-empty-list',listProps,false)):(isLoading)?_c('combobox-loading-list',_vm._b({},'combobox-loading-list',listProps,false)):_vm._t("list",null,{"listProps":listProps})],2)]},proxy:true},{key:"footerContent",fn:function(){return [(_vm.$slots.footer)?_c('div',{ref:"footer",on:{"focusout":_vm.onFocusOut}},[_vm._t("footer")],2):_vm._e()]},proxy:true}],null,true)})]}}],null,true)},_vm.comboboxListeners))}
16861
+ var combobox_with_popovervue_type_template_id_65a49163_staticRenderFns = []
16506
16862
 
16507
16863
 
16508
16864
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue?vue&type=script&lang=js&
@@ -16598,6 +16954,13 @@ var combobox_with_popovervue_type_template_id_6f7d8b3c_staticRenderFns = []
16598
16954
  //
16599
16955
  //
16600
16956
  //
16957
+ //
16958
+ //
16959
+ //
16960
+ //
16961
+ //
16962
+ //
16963
+
16601
16964
 
16602
16965
 
16603
16966
 
@@ -16607,7 +16970,8 @@ var combobox_with_popovervue_type_template_id_6f7d8b3c_staticRenderFns = []
16607
16970
  components: {
16608
16971
  DtCombobox: combobox,
16609
16972
  DtPopover: popover,
16610
- ComboboxLoadingList: combobox_loading_list
16973
+ ComboboxLoadingList: combobox_loading_list,
16974
+ ComboboxEmptyList: combobox_empty_list
16611
16975
  },
16612
16976
  props: {
16613
16977
  /**
@@ -16723,6 +17087,14 @@ var combobox_with_popovervue_type_template_id_6f7d8b3c_staticRenderFns = []
16723
17087
  default: () => [0, 4]
16724
17088
  },
16725
17089
 
17090
+ /**
17091
+ * If the popover sticks to the input.
17092
+ */
17093
+ popoverSticky: {
17094
+ type: [Boolean, String],
17095
+ default: false
17096
+ },
17097
+
16726
17098
  /**
16727
17099
  * Displays the list when the combobox is focused, before the user has typed anything.
16728
17100
  * When this is enabled the list will not close after selection.
@@ -16738,6 +17110,14 @@ var combobox_with_popovervue_type_template_id_6f7d8b3c_staticRenderFns = []
16738
17110
  loading: {
16739
17111
  type: Boolean,
16740
17112
  default: false
17113
+ },
17114
+
17115
+ /**
17116
+ * Message to show when the list is empty
17117
+ */
17118
+ emptyStateMessage: {
17119
+ type: String,
17120
+ default: 'No matches found.'
16741
17121
  }
16742
17122
  },
16743
17123
  emits: ['select', 'escape', 'highlight', 'opened'],
@@ -16778,13 +17158,7 @@ var combobox_with_popovervue_type_template_id_6f7d8b3c_staticRenderFns = []
16778
17158
 
16779
17159
  },
16780
17160
  methods: {
16781
- async handleDisplayList(value) {
16782
- if (this.isListShown) {
16783
- // After the list is updated, hightlight the first item
16784
- await this.$nextTick();
16785
- this.$refs.combobox.setInitialHighlightIndex();
16786
- }
16787
-
17161
+ handleDisplayList(value) {
16788
17162
  if (!this.hasSuggestionList) {
16789
17163
  if (value) {
16790
17164
  // Displays the list after the user has typed anything
@@ -16878,8 +17252,8 @@ var combobox_with_popovervue_type_template_id_6f7d8b3c_staticRenderFns = []
16878
17252
  ;
16879
17253
  var combobox_with_popover_component = normalizeComponent(
16880
17254
  combobox_with_popover_combobox_with_popovervue_type_script_lang_js_,
16881
- combobox_with_popovervue_type_template_id_6f7d8b3c_render,
16882
- combobox_with_popovervue_type_template_id_6f7d8b3c_staticRenderFns,
17255
+ combobox_with_popovervue_type_template_id_65a49163_render,
17256
+ combobox_with_popovervue_type_template_id_65a49163_staticRenderFns,
16883
17257
  false,
16884
17258
  null,
16885
17259
  null,
@@ -16890,11 +17264,11 @@ var combobox_with_popover_component = normalizeComponent(
16890
17264
  /* harmony default export */ const combobox_with_popover = (combobox_with_popover_component.exports);
16891
17265
  ;// CONCATENATED MODULE: ./recipes/comboboxes/combobox_with_popover/index.js
16892
17266
 
16893
- ;// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue?vue&type=template&id=1ff44929&
16894
- var combobox_multi_selectvue_type_template_id_1ff44929_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('dt-recipe-combobox-with-popover',{ref:"comboboxWithPopover",attrs:{"list-aria-label":"listAriaLabel","show-list":_vm.showList,"max-height":_vm.listMaxHeight,"popover-offset":_vm.popoverOffset,"has-suggestion-list":_vm.hasSuggestionList,"content-width":"anchor"},on:{"select":_vm.onComboboxSelect},scopedSlots:_vm._u([{key:"input",fn:function(ref){
17267
+ ;// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue?vue&type=template&id=907d2f60&
17268
+ var combobox_multi_selectvue_type_template_id_907d2f60_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('dt-recipe-combobox-with-popover',{ref:"comboboxWithPopover",attrs:{"list-aria-label":"listAriaLabel","show-list":_vm.showList,"max-height":_vm.listMaxHeight,"popover-offset":_vm.popoverOffset,"has-suggestion-list":_vm.hasSuggestionList,"content-width":"anchor"},on:{"select":_vm.onComboboxSelect},scopedSlots:_vm._u([{key:"input",fn:function(ref){
16895
17269
  var onInput = ref.onInput;
16896
17270
  return [_c('span',{ref:"inputSlotWrapper",staticClass:"d-ps-relative"},[_c('span',{ref:"chipsWrapper",staticClass:"d-ps-absolute d-mx2"},_vm._l((_vm.selectedItems),function(item){return _c('dt-chip',_vm._g({key:item.id,ref:"chips",refInFor:true,staticClass:"d-mt4 d-mx2 d-zi-base1",attrs:{"close-button-props":{ ariaLabel: 'close' },"size":_vm.size},on:{"keyup":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"backspace",undefined,$event.key,undefined)){ return null; }return _vm.onChipRemove(item)},"close":function($event){return _vm.onChipRemove(item)}}},_vm.chipListeners),[_vm._v(" "+_vm._s(item)+" ")])}),1),_c('dt-input',_vm._g({ref:"input",staticClass:"d-fl-grow1 d-mb4",attrs:{"label":_vm.label,"description":_vm.description,"placeholder":_vm.inputPlaceHolder,"show-messages":_vm.showInputMessages,"messages":_vm.inputMessages,"size":_vm.size},on:{"input":onInput},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:"value"}},_vm.inputListeners)),_c('dt-validation-messages',{attrs:{"validation-messages":_vm.maxSelectedMessage,"show-messages":_vm.showValidationMessages}})],1)]}},{key:"header",fn:function(){return [(_vm.$slots.header)?_c('div',{ref:"header"},[_vm._t("header")],2):_vm._e()]},proxy:true},{key:"list",fn:function(){return [_c('div',{ref:"list"},[(!_vm.loading)?_vm._t("list"):_c('div',{staticClass:"d-ta-center d-py16"},[_vm._v(" "+_vm._s(_vm.loadingMessage)+" ")])],2)]},proxy:true},{key:"footer",fn:function(){return [(_vm.$slots.footer)?_c('div',{ref:"footer"},[_vm._t("footer")],2):_vm._e()]},proxy:true}],null,true)})}
16897
- var combobox_multi_selectvue_type_template_id_1ff44929_staticRenderFns = []
17271
+ var combobox_multi_selectvue_type_template_id_907d2f60_staticRenderFns = []
16898
17272
 
16899
17273
 
16900
17274
  ;// CONCATENATED MODULE: ./recipes/comboboxes/combobox_multi_select/combobox_multi_select_story_constants.js
@@ -17211,7 +17585,7 @@ const MULTI_SELECT_SIZES = {
17211
17585
  },
17212
17586
 
17213
17587
  /**
17214
- * Max select message when the max selections has been reached with the structure:
17588
+ * Max select message when the max selections is exceeded with the structure:
17215
17589
  * `[{"message": string, "type": VALIDATION_MESSAGE_TYPES }]`
17216
17590
  */
17217
17591
  maxSelectedMessage: {
@@ -17271,10 +17645,19 @@ const MULTI_SELECT_SIZES = {
17271
17645
  return { ...this.$listeners,
17272
17646
  input: event => {
17273
17647
  this.$emit('input', event);
17648
+
17649
+ if (this.hasSuggestionList) {
17650
+ this.showComboboxList();
17651
+ }
17274
17652
  },
17275
17653
  keyup: event => {
17276
17654
  this.onInputKeyup(event);
17277
17655
  this.$emit('keyup', event);
17656
+ },
17657
+ click: event => {
17658
+ if (this.hasSuggestionList) {
17659
+ this.showComboboxList();
17660
+ }
17278
17661
  }
17279
17662
  };
17280
17663
  }
@@ -17334,6 +17717,22 @@ const MULTI_SELECT_SIZES = {
17334
17717
  this.$emit('select', i);
17335
17718
  },
17336
17719
 
17720
+ showComboboxList() {
17721
+ if (this.showList != null) {
17722
+ return;
17723
+ }
17724
+
17725
+ this.$refs.comboboxWithPopover.showComboboxList();
17726
+ },
17727
+
17728
+ closeComboboxList() {
17729
+ if (this.showList != null) {
17730
+ return;
17731
+ }
17732
+
17733
+ this.$refs.comboboxWithPopover.closeComboboxList();
17734
+ },
17735
+
17337
17736
  getChipButtons() {
17338
17737
  return this.$refs.chips && this.$refs.chips.map(chip => chip.$el.querySelector('button'));
17339
17738
  },
@@ -17395,13 +17794,13 @@ const MULTI_SELECT_SIZES = {
17395
17794
  moveFromInputToChip() {
17396
17795
  this.getLastChipButton().focus();
17397
17796
  this.$refs.input.blur();
17398
- this.$refs.comboboxWithPopover.closeComboboxList();
17797
+ this.closeComboboxList();
17399
17798
  },
17400
17799
 
17401
17800
  moveFromChipToInput() {
17402
17801
  this.getLastChipButton().blur();
17403
17802
  this.$refs.input.focus();
17404
- this.$refs.comboboxWithPopover.showComboboxList();
17803
+ this.showComboboxList();
17405
17804
  },
17406
17805
 
17407
17806
  navigateBetweenChips(target, toLeft) {
@@ -17414,7 +17813,7 @@ const MULTI_SELECT_SIZES = {
17414
17813
 
17415
17814
  this.getChipButtons()[from].blur();
17416
17815
  this.getChipButtons()[to].focus();
17417
- this.$refs.comboboxWithPopover.closeComboboxList();
17816
+ this.closeComboboxList();
17418
17817
  },
17419
17818
 
17420
17819
  setChipsTopPosition() {
@@ -17484,7 +17883,7 @@ const MULTI_SELECT_SIZES = {
17484
17883
  checkMaxSelected() {
17485
17884
  if (this.maxSelected === 0) return;
17486
17885
 
17487
- if (this.selectedItems.length >= this.maxSelected) {
17886
+ if (this.selectedItems.length > this.maxSelected) {
17488
17887
  this.showValidationMessages = true;
17489
17888
  this.$emit('max-selected');
17490
17889
  } else {
@@ -17506,8 +17905,8 @@ const MULTI_SELECT_SIZES = {
17506
17905
  ;
17507
17906
  var combobox_multi_select_component = normalizeComponent(
17508
17907
  combobox_multi_select_combobox_multi_selectvue_type_script_lang_js_,
17509
- combobox_multi_selectvue_type_template_id_1ff44929_render,
17510
- combobox_multi_selectvue_type_template_id_1ff44929_staticRenderFns,
17908
+ combobox_multi_selectvue_type_template_id_907d2f60_render,
17909
+ combobox_multi_selectvue_type_template_id_907d2f60_staticRenderFns,
17511
17910
  false,
17512
17911
  null,
17513
17912
  null,
@@ -17864,6 +18263,7 @@ var top_banner_info_component = normalizeComponent(
17864
18263
 
17865
18264
 
17866
18265
 
18266
+
17867
18267
 
17868
18268
 
17869
18269
  /// Recipes