@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.
@@ -1117,6 +1117,7 @@ __webpack_require__.d(__webpack_exports__, {
1117
1117
  "DtCombobox": () => (/* reexport */ combobox),
1118
1118
  "DtDropdown": () => (/* reexport */ dropdown),
1119
1119
  "DtEmoji": () => (/* reexport */ emoji),
1120
+ "DtEmojiTextWrapper": () => (/* reexport */ emoji_text_wrapper),
1120
1121
  "DtGroupableInputMixin": () => (/* reexport */ GroupableMixin),
1121
1122
  "DtInput": () => (/* reexport */ input_input),
1122
1123
  "DtInputGroup": () => (/* reexport */ input_group_input_group),
@@ -1185,9 +1186,11 @@ __webpack_require__.d(__webpack_exports__, {
1185
1186
  "TOOLTIP_DIRECTIONS": () => (/* reexport */ TOOLTIP_DIRECTIONS),
1186
1187
  "TOOLTIP_HIDE_ON_CLICK_VARIANTS": () => (/* reexport */ TOOLTIP_HIDE_ON_CLICK_VARIANTS),
1187
1188
  "TOOLTIP_KIND_MODIFIERS": () => (/* reexport */ TOOLTIP_KIND_MODIFIERS),
1189
+ "TOOLTIP_STICKY_VALUES": () => (/* reexport */ TOOLTIP_STICKY_VALUES),
1188
1190
  "USER_STATUS_COLOR_MODIFIERS": () => (/* reexport */ USER_STATUS_COLOR_MODIFIERS),
1189
1191
  "VALIDATION_MESSAGE_TYPES": () => (/* reexport */ VALIDATION_MESSAGE_TYPES),
1190
1192
  "codeToEmojiData": () => (/* reexport */ codeToEmojiData),
1193
+ "customEmojiAssetUrl": () => (/* reexport */ customEmojiAssetUrl),
1191
1194
  "defaultEmojiAssetUrl": () => (/* reexport */ defaultEmojiAssetUrl),
1192
1195
  "emojiFileExtensionLarge": () => (/* reexport */ emojiFileExtensionLarge),
1193
1196
  "emojiFileExtensionSmall": () => (/* reexport */ emojiFileExtensionSmall),
@@ -1196,17 +1199,22 @@ __webpack_require__.d(__webpack_exports__, {
1196
1199
  "emojiJson": () => (/* reexport */ emojiJson),
1197
1200
  "emojiVersion": () => (/* reexport */ emojiVersion),
1198
1201
  "filterFormattedMessages": () => (/* reexport */ filterFormattedMessages),
1202
+ "filterValidShortCodes": () => (/* reexport */ filterValidShortCodes),
1199
1203
  "findEmojis": () => (/* reexport */ findEmojis),
1200
1204
  "findShortCodes": () => (/* reexport */ findShortCodes),
1201
1205
  "formatMessages": () => (/* reexport */ formatMessages),
1206
+ "getEmojiData": () => (/* reexport */ getEmojiData),
1202
1207
  "getEmojiJson": () => (/* reexport */ getEmojiJson),
1203
1208
  "getUniqueString": () => (/* reexport */ getUniqueString),
1204
1209
  "getValidationState": () => (/* reexport */ getValidationState),
1210
+ "setCustomEmojiJson": () => (/* reexport */ setCustomEmojiJson),
1211
+ "setCustomEmojiUrl": () => (/* reexport */ setCustomEmojiUrl),
1205
1212
  "setEmojiAssetUrlLarge": () => (/* reexport */ setEmojiAssetUrlLarge),
1206
1213
  "setEmojiAssetUrlSmall": () => (/* reexport */ setEmojiAssetUrlSmall),
1207
1214
  "shortcodeToEmojiData": () => (/* reexport */ shortcodeToEmojiData),
1208
1215
  "stringToUnicode": () => (/* reexport */ stringToUnicode),
1209
1216
  "unicodeToString": () => (/* reexport */ unicodeToString),
1217
+ "validateCustomEmojiJson": () => (/* reexport */ validateCustomEmojiJson),
1210
1218
  "validationMessageValidator": () => (/* reexport */ validationMessageValidator)
1211
1219
  });
1212
1220
 
@@ -3245,9 +3253,9 @@ var button_group_component = normalizeComponent(
3245
3253
  ;// CONCATENATED MODULE: ./components/button_group/index.js
3246
3254
 
3247
3255
 
3248
- ;// 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&
3249
- 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()])}
3250
- var comboboxvue_type_template_id_071e5acc_staticRenderFns = []
3256
+ ;// 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&
3257
+ 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()])}
3258
+ var comboboxvue_type_template_id_7535857e_staticRenderFns = []
3251
3259
 
3252
3260
 
3253
3261
  ;// CONCATENATED MODULE: ./common/mixins/dom.js
@@ -3547,22 +3555,20 @@ const ERROR_INVALID_LIST_ELEMENT = 'listElementKey is required or the referenced
3547
3555
  this.setHighlightIndex(this._itemsLength() - 1);
3548
3556
  },
3549
3557
 
3550
- async setHighlightIndex(num) {
3558
+ setHighlightIndex(num) {
3551
3559
  this[indexKey] = num;
3552
3560
  this[idKey] = this._getItemId(num);
3553
3561
 
3554
3562
  if (this._itemsLength() && afterHighlightMethod) {
3555
- await this.$nextTick();
3556
3563
  this[afterHighlightMethod](num);
3557
3564
  }
3558
3565
  },
3559
3566
 
3560
- async setHighlightId(id) {
3567
+ setHighlightId(id) {
3561
3568
  this[idKey] = id;
3562
3569
  this[indexKey] = this._getItemIndex(id);
3563
3570
 
3564
3571
  if (this._itemsLength() && afterHighlightMethod) {
3565
- await this.$nextTick();
3566
3572
  this[afterHighlightMethod](this._getItemIndex(id));
3567
3573
  }
3568
3574
  },
@@ -3621,9 +3627,9 @@ const ERROR_INVALID_LIST_ELEMENT = 'listElementKey is required or the referenced
3621
3627
  }
3622
3628
  };
3623
3629
  });
3624
- ;// 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&
3625
- 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)}
3626
- var combobox_loading_listvue_type_template_id_49c938eb_staticRenderFns = []
3630
+ ;// 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&
3631
+ 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)}
3632
+ var combobox_loading_listvue_type_template_id_07d9971d_staticRenderFns = []
3627
3633
 
3628
3634
 
3629
3635
  ;// 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&
@@ -4670,6 +4676,9 @@ var skeleton_component = normalizeComponent(
4670
4676
  //
4671
4677
  //
4672
4678
  //
4679
+ //
4680
+ //
4681
+ //
4673
4682
 
4674
4683
 
4675
4684
  /* harmony default export */ const combobox_loading_listvue_type_script_lang_js_ = ({
@@ -4691,8 +4700,8 @@ var skeleton_component = normalizeComponent(
4691
4700
  ;
4692
4701
  var combobox_loading_list_component = normalizeComponent(
4693
4702
  combobox_combobox_loading_listvue_type_script_lang_js_,
4694
- combobox_loading_listvue_type_template_id_49c938eb_render,
4695
- combobox_loading_listvue_type_template_id_49c938eb_staticRenderFns,
4703
+ combobox_loading_listvue_type_template_id_07d9971d_render,
4704
+ combobox_loading_listvue_type_template_id_07d9971d_staticRenderFns,
4696
4705
  false,
4697
4706
  null,
4698
4707
  null,
@@ -4701,6 +4710,62 @@ var combobox_loading_list_component = normalizeComponent(
4701
4710
  )
4702
4711
 
4703
4712
  /* harmony default export */ const combobox_loading_list = (combobox_loading_list_component.exports);
4713
+ ;// 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&
4714
+ 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)}
4715
+ var combobox_empty_listvue_type_template_id_85c21112_staticRenderFns = []
4716
+
4717
+
4718
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-80[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&
4719
+ //
4720
+ //
4721
+ //
4722
+ //
4723
+ //
4724
+ //
4725
+ //
4726
+ //
4727
+ //
4728
+ //
4729
+ //
4730
+ //
4731
+ //
4732
+ //
4733
+ //
4734
+
4735
+ /* harmony default export */ const combobox_empty_listvue_type_script_lang_js_ = ({
4736
+ name: 'ComboboxEmptyList',
4737
+ components: {
4738
+ DtListItem: list_item
4739
+ },
4740
+ props: {
4741
+ message: {
4742
+ type: String,
4743
+ required: true
4744
+ }
4745
+ }
4746
+ });
4747
+ ;// CONCATENATED MODULE: ./components/combobox/combobox_empty-list.vue?vue&type=script&lang=js&
4748
+ /* harmony default export */ const combobox_combobox_empty_listvue_type_script_lang_js_ = (combobox_empty_listvue_type_script_lang_js_);
4749
+ ;// CONCATENATED MODULE: ./components/combobox/combobox_empty-list.vue
4750
+
4751
+
4752
+
4753
+
4754
+
4755
+ /* normalize component */
4756
+ ;
4757
+ var combobox_empty_list_component = normalizeComponent(
4758
+ combobox_combobox_empty_listvue_type_script_lang_js_,
4759
+ combobox_empty_listvue_type_template_id_85c21112_render,
4760
+ combobox_empty_listvue_type_template_id_85c21112_staticRenderFns,
4761
+ false,
4762
+ null,
4763
+ null,
4764
+ null
4765
+
4766
+ )
4767
+
4768
+ /* harmony default export */ const combobox_empty_list = (combobox_empty_list_component.exports);
4704
4769
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-80[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&
4705
4770
  //
4706
4771
  //
@@ -4742,13 +4807,22 @@ var combobox_loading_list_component = normalizeComponent(
4742
4807
  //
4743
4808
  //
4744
4809
  //
4810
+ //
4811
+ //
4812
+ //
4813
+ //
4814
+ //
4815
+ //
4816
+ //
4817
+
4745
4818
 
4746
4819
 
4747
4820
 
4748
4821
  /* harmony default export */ const comboboxvue_type_script_lang_js_ = ({
4749
4822
  name: 'DtCombobox',
4750
4823
  components: {
4751
- ComboboxLoadingList: combobox_loading_list
4824
+ ComboboxLoadingList: combobox_loading_list,
4825
+ ComboboxEmptyList: combobox_empty_list
4752
4826
  },
4753
4827
  mixins: [keyboard_list_navigation({
4754
4828
  indexKey: 'highlightIndex',
@@ -4819,6 +4893,14 @@ var combobox_loading_list_component = normalizeComponent(
4819
4893
  loading: {
4820
4894
  type: Boolean,
4821
4895
  default: false
4896
+ },
4897
+
4898
+ /**
4899
+ * Message to show when the list is empty
4900
+ */
4901
+ emptyStateMessage: {
4902
+ type: String,
4903
+ default: 'No matches found.'
4822
4904
  }
4823
4905
  },
4824
4906
  emits: ['select', 'escape', 'highlight', 'opened'],
@@ -4828,7 +4910,9 @@ var combobox_loading_list_component = normalizeComponent(
4828
4910
  // If the list is rendered at the root, rather than as a child
4829
4911
  // of this component, this is the ref to that dom element. Set
4830
4912
  // by the onOpen method.
4831
- outsideRenderedListRef: null
4913
+ outsideRenderedListRef: null,
4914
+ isListEmpty: undefined,
4915
+ isLoading: undefined
4832
4916
  };
4833
4917
  },
4834
4918
 
@@ -4879,22 +4963,38 @@ var combobox_loading_list_component = normalizeComponent(
4879
4963
  watch: {
4880
4964
  showList(showList) {
4881
4965
  // When the list's visibility changes reset the highlight index.
4882
- this.$nextTick(function () {
4883
- if (!this.listRenderedOutside) {
4884
- this.setInitialHighlightIndex();
4885
- this.$emit('opened', showList);
4886
- }
4887
- });
4966
+ if (!this.listRenderedOutside) {
4967
+ this.setInitialHighlightIndex();
4968
+ this.$emit('opened', showList);
4969
+ }
4888
4970
 
4889
4971
  if (!showList && this.outsideRenderedListRef) {
4890
4972
  this.outsideRenderedListRef.removeEventListener('mousemove', this.onMouseHighlight);
4891
4973
  this.outsideRenderedListRef = null;
4974
+ this.isListEmpty = undefined;
4892
4975
  }
4976
+ },
4977
+
4978
+ loading(isLoading) {
4979
+ this.isListEmpty = undefined;
4980
+ this.isLoading = isLoading;
4981
+ this.$nextTick(() => {
4982
+ this.isListEmpty = this.checkItemsLength();
4983
+ this.setInitialHighlightIndex();
4984
+ });
4893
4985
  }
4894
4986
 
4895
4987
  },
4988
+
4989
+ async mounted() {
4990
+ this.isLoading = this.loading;
4991
+ await this.$nextTick();
4992
+ this.isListEmpty = this.checkItemsLength();
4993
+ },
4994
+
4896
4995
  methods: {
4897
4996
  onMouseHighlight(e) {
4997
+ if (this.loading) return;
4898
4998
  const liElement = e.target.closest('li');
4899
4999
 
4900
5000
  if (liElement && this.highlightId !== liElement.id) {
@@ -4903,9 +5003,9 @@ var combobox_loading_list_component = normalizeComponent(
4903
5003
  },
4904
5004
 
4905
5005
  getListElement() {
4906
- var _this$outsideRendered;
5006
+ var _this$outsideRendered, _this$$refs$listWrapp;
4907
5007
 
4908
- return (_this$outsideRendered = this.outsideRenderedListRef) !== null && _this$outsideRendered !== void 0 ? _this$outsideRendered : this.$refs.listWrapper.querySelector("#".concat(this.listId));
5008
+ 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));
4909
5009
  },
4910
5010
 
4911
5011
  clearHighlightIndex() {
@@ -4915,10 +5015,13 @@ var combobox_loading_list_component = normalizeComponent(
4915
5015
  },
4916
5016
 
4917
5017
  afterHighlight() {
5018
+ if (this.loading) return;
4918
5019
  this.$emit('highlight', this.highlightIndex);
4919
5020
  },
4920
5021
 
4921
5022
  onEnterKey() {
5023
+ if (this.loading || this.isListEmpty) return;
5024
+
4922
5025
  if (this.highlightIndex >= 0) {
4923
5026
  this.$emit('select', this.highlightIndex);
4924
5027
  }
@@ -4936,24 +5039,30 @@ var combobox_loading_list_component = normalizeComponent(
4936
5039
  this.$emit('opened', open);
4937
5040
 
4938
5041
  if (open) {
5042
+ this.isListEmpty = this.checkItemsLength();
4939
5043
  this.setInitialHighlightIndex();
4940
5044
  }
4941
5045
  },
4942
5046
 
4943
5047
  onKeyValidation(e, eventHandler) {
4944
- if (!this.showList || !this.getListElement() || this.loading) {
4945
- return;
4946
- }
4947
-
5048
+ if (!this.showList || !this.getListElement()) return;
4948
5049
  this[eventHandler](e);
4949
5050
  },
4950
5051
 
4951
5052
  setInitialHighlightIndex() {
4952
- if (this.showList) {
5053
+ if (!this.showList) return;
5054
+ this.$nextTick(() => {
4953
5055
  // When the list's is shown, reset the highlight index.
4954
- // If the list is in loading state, set to -1
5056
+ // If the list is loading, set to -1
4955
5057
  this.setHighlightIndex(this.loading ? -1 : 0);
4956
- }
5058
+ });
5059
+ },
5060
+
5061
+ checkItemsLength() {
5062
+ if (!this.showList) return undefined;
5063
+ const list = this.getListElement();
5064
+ const options = list === null || list === void 0 ? void 0 : list.querySelectorAll("[role=\"option\"]");
5065
+ return (options === null || options === void 0 ? void 0 : options.length) === 0;
4957
5066
  }
4958
5067
 
4959
5068
  }
@@ -4970,8 +5079,8 @@ var combobox_loading_list_component = normalizeComponent(
4970
5079
  ;
4971
5080
  var combobox_component = normalizeComponent(
4972
5081
  combobox_comboboxvue_type_script_lang_js_,
4973
- comboboxvue_type_template_id_071e5acc_render,
4974
- comboboxvue_type_template_id_071e5acc_staticRenderFns,
5082
+ comboboxvue_type_template_id_7535857e_render,
5083
+ comboboxvue_type_template_id_7535857e_staticRenderFns,
4975
5084
  false,
4976
5085
  null,
4977
5086
  null,
@@ -4991,8 +5100,8 @@ return [_c('ul',{ref:"listWrapper",class:['d-ps-relative', 'd-px0', _vm.DROPDOWN
4991
5100
  var dropdownvue_type_template_id_02d3f006_staticRenderFns = []
4992
5101
 
4993
5102
 
4994
- ;// 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&
4995
- 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":{
5103
+ ;// 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&
5104
+ 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":{
4996
5105
  'aria-expanded': _vm.isOpen.toString(),
4997
5106
  'aria-controls': _vm.id,
4998
5107
  'aria-haspopup': _vm.role,
@@ -5003,7 +5112,7 @@ var popovervue_type_template_id_97535496_render = function () {var _vm=this;var
5003
5112
  'd-popover__content',
5004
5113
  _vm.POPOVER_PADDING_CLASSES[_vm.padding],
5005
5114
  _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)}
5006
- var popovervue_type_template_id_97535496_staticRenderFns = []
5115
+ var popovervue_type_template_id_9802b6fc_staticRenderFns = []
5007
5116
 
5008
5117
 
5009
5118
  ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js
@@ -9406,6 +9515,7 @@ const getArrowDetected = fn => ({
9406
9515
 
9407
9516
 
9408
9517
  const BASE_TIPPY_DIRECTIONS = ['bottom', 'bottom-start', 'bottom-end', 'right', 'right-start', 'right-end', 'left', 'left-start', 'left-end', 'top', 'top-start', 'top-end'];
9518
+ const TIPPY_STICKY_VALUES = [true, false, 'reference', 'popper'];
9409
9519
  const tippy_utils_createTippy = (anchorElement, options) => {
9410
9520
  const {
9411
9521
  contentElement
@@ -9413,6 +9523,7 @@ const tippy_utils_createTippy = (anchorElement, options) => {
9413
9523
  };
9414
9524
  delete options.contentElement;
9415
9525
  return tippy_esm(anchorElement, { ...options,
9526
+ plugins: [sticky],
9416
9527
  render: () => getContentWrapper(contentElement)
9417
9528
  });
9418
9529
  };
@@ -9427,7 +9538,7 @@ const getPopperOptions = function () {
9427
9538
  modifiers: [{
9428
9539
  name: 'flip',
9429
9540
  options: {
9430
- fallbackPlacements: fallbackPlacements,
9541
+ fallbackPlacements,
9431
9542
  boundary
9432
9543
  }
9433
9544
  }, {
@@ -9488,6 +9599,7 @@ const POPOVER_HEADER_FOOTER_PADDING_CLASSES = {
9488
9599
  const POPOVER_ROLES = ['dialog', 'menu', 'listbox', 'tree', 'grid'];
9489
9600
  const POPOVER_CONTENT_WIDTHS = [null, 'anchor'];
9490
9601
  const POPOVER_INITIAL_FOCUS_STRINGS = ['none', 'dialog', 'first'];
9602
+ const POPOVER_STICKY_VALUES = [...TIPPY_STICKY_VALUES];
9491
9603
  const POPOVER_DIRECTIONS = [...BASE_TIPPY_DIRECTIONS];
9492
9604
  ;// 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&
9493
9605
  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)])}
@@ -10207,6 +10319,21 @@ var popover_header_footer_component = normalizeComponent(
10207
10319
  default: 'bottom-end'
10208
10320
  },
10209
10321
 
10322
+ /**
10323
+ * If the popover sticks to the anchor. This is usually not needed, but can be needed
10324
+ * if the reference element's position is animating, or to automatically update the popover
10325
+ * position in those cases the DOM layout changes the reference element's position.
10326
+ * `true` enables it, `reference` only checks the "reference" rect for changes and `popper` only
10327
+ * checks the "popper" rect for changes.
10328
+ */
10329
+ sticky: {
10330
+ type: [Boolean, String],
10331
+ default: false,
10332
+ validator: sticky => {
10333
+ return POPOVER_STICKY_VALUES.includes(sticky);
10334
+ }
10335
+ },
10336
+
10210
10337
  /**
10211
10338
  * Determines maximum height for the popover before overflow.
10212
10339
  * Possible units rem|px|em
@@ -10320,14 +10447,20 @@ var popover_header_footer_component = normalizeComponent(
10320
10447
 
10321
10448
  offset(offset) {
10322
10449
  this.tip.setProps({
10323
- offset: offset
10450
+ offset
10451
+ });
10452
+ },
10453
+
10454
+ sticky(sticky) {
10455
+ this.tip.setProps({
10456
+ sticky
10324
10457
  });
10325
10458
  },
10326
10459
 
10327
10460
  fallbackPlacements(fallbackPlacements) {
10328
10461
  this.tip.setProps({
10329
10462
  popperOptions: getPopperOptions({
10330
- fallbackPlacements: fallbackPlacements,
10463
+ fallbackPlacements,
10331
10464
  hasHideModifierEnabled: true
10332
10465
  })
10333
10466
  });
@@ -10380,6 +10513,7 @@ var popover_header_footer_component = normalizeComponent(
10380
10513
  contentElement: this.popoverContentEl,
10381
10514
  placement: this.placement,
10382
10515
  offset: this.offset,
10516
+ sticky: this.sticky,
10383
10517
  appendTo: document.body,
10384
10518
  interactive: true,
10385
10519
  trigger: 'manual',
@@ -10601,8 +10735,8 @@ var popovervue_type_style_index_0_lang_less_ = __webpack_require__(532);
10601
10735
 
10602
10736
  var popover_component = normalizeComponent(
10603
10737
  popover_popovervue_type_script_lang_js_,
10604
- popovervue_type_template_id_97535496_render,
10605
- popovervue_type_template_id_97535496_staticRenderFns,
10738
+ popovervue_type_template_id_9802b6fc_render,
10739
+ popovervue_type_template_id_9802b6fc_staticRenderFns,
10606
10740
  false,
10607
10741
  null,
10608
10742
  null,
@@ -10981,9 +11115,9 @@ var dropdown_component = normalizeComponent(
10981
11115
  /* harmony default export */ const dropdown = (dropdown_component.exports);
10982
11116
  ;// CONCATENATED MODULE: ./components/dropdown/index.js
10983
11117
 
10984
- ;// 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&
10985
- 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)}
10986
- var emojivue_type_template_id_010f8b36_staticRenderFns = []
11118
+ ;// 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&
11119
+ 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)}
11120
+ var emojivue_type_template_id_85307cb0_staticRenderFns = []
10987
11121
 
10988
11122
 
10989
11123
  ;// CONCATENATED MODULE: ./components/emoji/emoji_constants.js
@@ -11007,7 +11141,8 @@ var emoji_regex_default = /*#__PURE__*/__webpack_require__.n(emoji_regex);
11007
11141
  ;// CONCATENATED MODULE: ./common/emoji.js
11008
11142
 
11009
11143
  const emojiVersion = '6.6';
11010
- const defaultEmojiAssetUrl = 'https://cdn.jsdelivr.net/joypixels/assets/' + emojiVersion + '/png/unicode/32/'; // Used for emoji 16px and smaller
11144
+ const defaultEmojiAssetUrl = 'https://cdn.jsdelivr.net/joypixels/assets/' + emojiVersion + '/png/unicode/32/';
11145
+ let customEmojiAssetUrl = null; // Used for emoji 16px and smaller
11011
11146
 
11012
11147
  let emojiImageUrlSmall = defaultEmojiAssetUrl;
11013
11148
  let emojiFileExtensionSmall = '.png'; // Used for emoji larger than 16px
@@ -11019,6 +11154,9 @@ async function getEmojiJson() {
11019
11154
  if (emojiJson) return;
11020
11155
  emojiJson = await __webpack_require__.e(/* import() */ 370).then(__webpack_require__.t.bind(__webpack_require__, 370, 19));
11021
11156
  }
11157
+ function getEmojiData() {
11158
+ return emojiJson;
11159
+ }
11022
11160
  function setEmojiAssetUrlSmall(url) {
11023
11161
  let fileExtension = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '.png';
11024
11162
 
@@ -11038,6 +11176,69 @@ function setEmojiAssetUrlLarge(url) {
11038
11176
 
11039
11177
  emojiImageUrlLarge = url;
11040
11178
  emojiFileExtensionLarge = fileExtension;
11179
+ }
11180
+ function setCustomEmojiUrl(url) {
11181
+ customEmojiAssetUrl = url;
11182
+ }
11183
+ function setCustomEmojiJson(json) {
11184
+ validateCustomEmojiJson(json);
11185
+ }
11186
+ /**
11187
+ * Validate custom emoji json
11188
+ */
11189
+
11190
+ async function validateCustomEmojiJson(json) {
11191
+ await getEmojiJson();
11192
+ const customEmojiProps = ['extension', 'custom'];
11193
+ const customEmojiRequiredProps = ['name', 'category', 'shortname', 'extension', 'custom'];
11194
+ /**
11195
+ * Update single emoji properties.
11196
+ * If the property exists in emojiData, it'll add the values if the property is an array, otherwise will overwrite.
11197
+ * If not exists, will add the property to the emojiData object.
11198
+ */
11199
+
11200
+ const _updateNativeEmojiData = (emojiData, propName, propValue) => {
11201
+ if (emojiData[propName] === undefined) {
11202
+ if (!customEmojiProps.includes(propName)) {
11203
+ return;
11204
+ } // new property to add
11205
+
11206
+
11207
+ emojiData[propName] = propValue;
11208
+ } else {
11209
+ if (Array.isArray(emojiData[propName])) {
11210
+ emojiData[propName] = emojiData[propName].concat(propValue);
11211
+ } else {
11212
+ emojiData[propName] = propValue;
11213
+ }
11214
+ }
11215
+ };
11216
+
11217
+ Object.entries(json).forEach(item => {
11218
+ const [customEmojiKey, customEmojiValue] = item;
11219
+
11220
+ if (customEmojiKey in emojiJson) {
11221
+ // custom emoji exists in emoji json which means to update some data in the native emoji
11222
+ const emojiData = emojiJson[customEmojiKey];
11223
+
11224
+ for (const customEmojiPropertyName in customEmojiValue) {
11225
+ const customEmojiPropertyValue = customEmojiValue[customEmojiPropertyName];
11226
+
11227
+ _updateNativeEmojiData(emojiData, customEmojiPropertyName, customEmojiPropertyValue);
11228
+ }
11229
+ } else {
11230
+ // new custom emoji
11231
+ const _validateRequiredProps = () => customEmojiRequiredProps.every(val => {
11232
+ return customEmojiValue[val] !== undefined;
11233
+ });
11234
+
11235
+ if (_validateRequiredProps()) {
11236
+ emojiJson[customEmojiKey] = customEmojiValue;
11237
+ } else {
11238
+ console.error('The following custom emoji doesn\'t contain the required properties:', customEmojiValue);
11239
+ }
11240
+ }
11241
+ });
11041
11242
  } // recursively searches the emoji data object containing data for all emojis
11042
11243
  // and returns the object with the specified shortcode.
11043
11244
 
@@ -11062,7 +11263,7 @@ function shortcodeToEmojiData(shortcode) {
11062
11263
  }
11063
11264
 
11064
11265
  let reference;
11065
- f(emojiJson, null);
11266
+ f(getEmojiData(), null);
11066
11267
  return reference;
11067
11268
  } // Takes in an emoji unicode character(s) and converts it to an emoji string in the format the emoji data object expects
11068
11269
  // as a key. There can be multiple unicode characters in an emoji to denote the emoji itself, skin tone, gender
@@ -11112,8 +11313,11 @@ async function codeToEmojiData(code) {
11112
11313
  // @returns {string[]}
11113
11314
 
11114
11315
  function findShortCodes(textContent) {
11115
- const shortCodes = textContent.match(/:\w+:/g);
11116
- const filtered = shortCodes ? shortCodes.filter(code => shortcodeToEmojiData(code)) : [];
11316
+ const shortcodes = textContent.match(/:\w+:/g);
11317
+ return filterValidShortCodes(shortcodes);
11318
+ }
11319
+ function filterValidShortCodes(shortcodes) {
11320
+ const filtered = shortcodes ? shortcodes.filter(code => shortcodeToEmojiData(code)) : [];
11117
11321
  return new Set(filtered);
11118
11322
  } // Finds every emoji in slot text
11119
11323
  // removes duplicates
@@ -11159,7 +11363,8 @@ function findEmojis(textContent) {
11159
11363
  props: {
11160
11364
  /**
11161
11365
  * Supports shortcode ex: :smile: or unicode ex: 😄. Will display the resulting emoji.
11162
- * See https://emojipedia.org/joypixels/ for all supported shortcode/unicode.
11366
+ * See https://emojipedia.org/joypixels/ for all supported shortcode/unicode or the docs
11367
+ * for setting up custom emojis.
11163
11368
  */
11164
11369
  code: {
11165
11370
  type: String,
@@ -11212,8 +11417,15 @@ function findEmojis(textContent) {
11212
11417
  },
11213
11418
 
11214
11419
  emojiSrc() {
11420
+ var _this$emojiData;
11421
+
11215
11422
  if (!this.emojiDataValid) {
11216
11423
  return 'invalid';
11424
+ } // custom emoji
11425
+
11426
+
11427
+ if ((_this$emojiData = this.emojiData) !== null && _this$emojiData !== void 0 && _this$emojiData.custom) {
11428
+ return customEmojiAssetUrl + this.emojiData.key + this.emojiData.extension;
11217
11429
  }
11218
11430
 
11219
11431
  if (['d-svg--size14', 'd-svg--size16'].includes(this.size)) {
@@ -11228,7 +11440,7 @@ function findEmojis(textContent) {
11228
11440
  return undefined;
11229
11441
  }
11230
11442
 
11231
- return stringToUnicode(this.emojiData.unicode_output);
11443
+ return this.emojiData.unicode_output ? stringToUnicode(this.emojiData.unicode_output) : this.emojiData.name;
11232
11444
  },
11233
11445
 
11234
11446
  emojiLabel() {
@@ -11286,8 +11498,8 @@ function findEmojis(textContent) {
11286
11498
  ;
11287
11499
  var emoji_component = normalizeComponent(
11288
11500
  emoji_emojivue_type_script_lang_js_,
11289
- emojivue_type_template_id_010f8b36_render,
11290
- emojivue_type_template_id_010f8b36_staticRenderFns,
11501
+ emojivue_type_template_id_85307cb0_render,
11502
+ emojivue_type_template_id_85307cb0_staticRenderFns,
11291
11503
  false,
11292
11504
  null,
11293
11505
  null,
@@ -11299,6 +11511,125 @@ var emoji_component = normalizeComponent(
11299
11511
  ;// CONCATENATED MODULE: ./components/emoji/index.js
11300
11512
 
11301
11513
 
11514
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-80[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&
11515
+
11516
+
11517
+ /* harmony default export */ const emoji_text_wrappervue_type_script_lang_js_ = ({
11518
+ name: 'DtEmojiTextWrapper',
11519
+ components: {
11520
+ DtEmoji: emoji
11521
+ },
11522
+ inheritAttrs: false,
11523
+ props: {
11524
+ /**
11525
+ * The type of element to use for the wrapper.
11526
+ */
11527
+ elementType: {
11528
+ type: String,
11529
+ default: 'div'
11530
+ }
11531
+ },
11532
+
11533
+ data() {
11534
+ return {
11535
+ loadingEmojiJson: true
11536
+ };
11537
+ },
11538
+
11539
+ async created() {
11540
+ await getEmojiJson();
11541
+ this.loadingEmojiJson = false;
11542
+ },
11543
+
11544
+ methods: {
11545
+ /**
11546
+ * Replaces the valid codes from the text content with a DtEmoji component.
11547
+ * @returns {Array<VNode|string>}
11548
+ */
11549
+ replaceDtEmojis(replaceList, textContent) {
11550
+ const regexp = new RegExp("(".concat(replaceList.join('|'), ")"), 'g');
11551
+ const split = textContent.split(regexp);
11552
+ return split.map(item => {
11553
+ if (replaceList.includes(item)) {
11554
+ return this.$createElement(emoji, {
11555
+ attrs: {
11556
+ class: 'd-mx4 d-d-inline-block'
11557
+ },
11558
+ props: {
11559
+ code: item,
11560
+ ...this.$attrs
11561
+ }
11562
+ });
11563
+ }
11564
+
11565
+ return item;
11566
+ });
11567
+ },
11568
+
11569
+ /**
11570
+ * Recursively search the Vue virtual DOM to find text
11571
+ * @param VNode
11572
+ * @returns {VNode|*}
11573
+ */
11574
+ searchVNodes(VNode) {
11575
+ // If VNode has no tag, it is a text node
11576
+ if (!VNode.tag && VNode.text) {
11577
+ return this.searchCodes(VNode.text);
11578
+ }
11579
+
11580
+ const children = VNode.children ? VNode.children.map(VNodeChild => this.searchVNodes(VNodeChild)) : [];
11581
+ return this.$createElement(VNode.tag, VNode.data, children);
11582
+ },
11583
+
11584
+ // TODO: Find a way to crawl vue components
11585
+ replaceVueComponentVNodeContent(VNode) {//
11586
+ },
11587
+
11588
+ /**
11589
+ * Find codes in text.
11590
+ * @param textContent string
11591
+ * @returns {Array<VNode|string>|string}
11592
+ */
11593
+ searchCodes(textContent) {
11594
+ const shortcodes = findShortCodes(textContent);
11595
+ const emojis = findEmojis(textContent);
11596
+ const replaceList = [...shortcodes, ...emojis];
11597
+ if (replaceList.length === 0) return textContent;
11598
+ return this.replaceDtEmojis(replaceList, textContent);
11599
+ }
11600
+
11601
+ },
11602
+
11603
+ render(h) {
11604
+ const defaultSlotContent = this.$slots.default || [];
11605
+ return h(this.elementType, this.loadingEmojiJson ? defaultSlotContent : defaultSlotContent.map(VNode => this.searchVNodes(VNode)));
11606
+ }
11607
+
11608
+ });
11609
+ ;// CONCATENATED MODULE: ./components/emoji_text_wrapper/emoji_text_wrapper.vue?vue&type=script&lang=js&
11610
+ /* harmony default export */ const emoji_text_wrapper_emoji_text_wrappervue_type_script_lang_js_ = (emoji_text_wrappervue_type_script_lang_js_);
11611
+ ;// CONCATENATED MODULE: ./components/emoji_text_wrapper/emoji_text_wrapper.vue
11612
+ var emoji_text_wrapper_render, emoji_text_wrapper_staticRenderFns
11613
+ ;
11614
+
11615
+
11616
+
11617
+ /* normalize component */
11618
+ ;
11619
+ var emoji_text_wrapper_component = normalizeComponent(
11620
+ emoji_text_wrapper_emoji_text_wrappervue_type_script_lang_js_,
11621
+ emoji_text_wrapper_render,
11622
+ emoji_text_wrapper_staticRenderFns,
11623
+ false,
11624
+ null,
11625
+ null,
11626
+ null
11627
+
11628
+ )
11629
+
11630
+ /* harmony default export */ const emoji_text_wrapper = (emoji_text_wrapper_component.exports);
11631
+ ;// CONCATENATED MODULE: ./components/emoji_text_wrapper/index.js
11632
+
11302
11633
  ;// 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&
11303
11634
  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:[
11304
11635
  'base-input__label-text',
@@ -15533,15 +15864,15 @@ var toggle_component = normalizeComponent(
15533
15864
  /* harmony default export */ const toggle = (toggle_component.exports);
15534
15865
  ;// CONCATENATED MODULE: ./components/toggle/index.js
15535
15866
 
15536
- ;// 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&
15537
- var tooltipvue_type_template_id_06e65b4f_render = function () {
15867
+ ;// 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&
15868
+ var tooltipvue_type_template_id_662e4cf7_render = function () {
15538
15869
  var _obj;
15539
15870
  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:[
15540
15871
  'd-tooltip',
15541
15872
  ("d-tooltip__arrow-tippy--" + _vm.currentPlacement),
15542
15873
  ( _obj = {}, _obj[ _vm.TOOLTIP_KIND_MODIFIERS.inverted ] = _vm.inverted, _obj ),
15543
15874
  _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)}
15544
- var tooltipvue_type_template_id_06e65b4f_staticRenderFns = []
15875
+ var tooltipvue_type_template_id_662e4cf7_staticRenderFns = []
15545
15876
 
15546
15877
 
15547
15878
  ;// CONCATENATED MODULE: ./components/tooltip/tooltip_constants.js
@@ -15556,6 +15887,7 @@ const TOOLTIP_KIND_MODIFIERS = {
15556
15887
  inverted: "d-tooltip--inverted",
15557
15888
  hide: "d-tooltip--hide"
15558
15889
  };
15890
+ const TOOLTIP_STICKY_VALUES = [...TIPPY_STICKY_VALUES];
15559
15891
  const TOOLTIP_HIDE_ON_CLICK_VARIANTS = [true, false, 'toggle'];
15560
15892
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-80[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&
15561
15893
  //
@@ -15665,6 +15997,21 @@ const TOOLTIP_HIDE_ON_CLICK_VARIANTS = [true, false, 'toggle'];
15665
15997
 
15666
15998
  },
15667
15999
 
16000
+ /**
16001
+ * If the tooltip sticks to the anchor. This is usually not needed, but can be needed
16002
+ * if the reference element's position is animating, or to automatically update the popover
16003
+ * position in those cases the DOM layout changes the reference element's position.
16004
+ * `true` enables it, `reference` only checks the "reference" rect for changes and `popper` only
16005
+ * checks the "popper" rect for changes.
16006
+ */
16007
+ sticky: {
16008
+ type: [Boolean, String],
16009
+ default: false,
16010
+ validator: sticky => {
16011
+ return TOOLTIP_STICKY_VALUES.includes(sticky);
16012
+ }
16013
+ },
16014
+
15668
16015
  /**
15669
16016
  * Additional css classes for the tooltip content element.
15670
16017
  * Can accept all of String, Object, and Array, i.e. has the
@@ -15726,6 +16073,7 @@ const TOOLTIP_HIDE_ON_CLICK_VARIANTS = [true, false, 'toggle'];
15726
16073
  interactive: false,
15727
16074
  trigger: 'manual',
15728
16075
  placement: this.placement,
16076
+ sticky: this.sticky,
15729
16077
  popperOptions: getPopperOptions({
15730
16078
  fallbackPlacements: this.fallbackPlacements,
15731
16079
  hasHideModifierEnabled: true,
@@ -15756,6 +16104,12 @@ const TOOLTIP_HIDE_ON_CLICK_VARIANTS = [true, false, 'toggle'];
15756
16104
  } else {
15757
16105
  this.tip.hide();
15758
16106
  }
16107
+ },
16108
+
16109
+ sticky(sticky) {
16110
+ this.tip.setProps({
16111
+ sticky
16112
+ });
15759
16113
  }
15760
16114
 
15761
16115
  },
@@ -15876,8 +16230,8 @@ var tooltipvue_type_style_index_0_lang_less_ = __webpack_require__(228);
15876
16230
 
15877
16231
  var tooltip_component = normalizeComponent(
15878
16232
  tooltip_tooltipvue_type_script_lang_js_,
15879
- tooltipvue_type_template_id_06e65b4f_render,
15880
- tooltipvue_type_template_id_06e65b4f_staticRenderFns,
16233
+ tooltipvue_type_template_id_662e4cf7_render,
16234
+ tooltipvue_type_template_id_662e4cf7_staticRenderFns,
15881
16235
  false,
15882
16236
  null,
15883
16237
  null,
@@ -16512,15 +16866,17 @@ var root_layout_component = normalizeComponent(
16512
16866
  ;// CONCATENATED MODULE: ./components/root_layout/index.js
16513
16867
 
16514
16868
 
16515
- ;// 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&
16516
- 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){
16869
+ ;// 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&
16870
+ 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){
16517
16871
  var inputProps = ref.inputProps;
16518
16872
  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){
16519
16873
  var opened = ref.opened;
16520
16874
  var listProps = ref.listProps;
16521
16875
  var clearHighlightIndex = ref.clearHighlightIndex;
16522
- 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))}
16523
- var combobox_with_popovervue_type_template_id_6f7d8b3c_staticRenderFns = []
16876
+ var isLoading = ref.isLoading;
16877
+ var isListEmpty = ref.isListEmpty;
16878
+ 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))}
16879
+ var combobox_with_popovervue_type_template_id_65a49163_staticRenderFns = []
16524
16880
 
16525
16881
 
16526
16882
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-80[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&
@@ -16616,6 +16972,13 @@ var combobox_with_popovervue_type_template_id_6f7d8b3c_staticRenderFns = []
16616
16972
  //
16617
16973
  //
16618
16974
  //
16975
+ //
16976
+ //
16977
+ //
16978
+ //
16979
+ //
16980
+ //
16981
+
16619
16982
 
16620
16983
 
16621
16984
 
@@ -16625,7 +16988,8 @@ var combobox_with_popovervue_type_template_id_6f7d8b3c_staticRenderFns = []
16625
16988
  components: {
16626
16989
  DtCombobox: combobox,
16627
16990
  DtPopover: popover,
16628
- ComboboxLoadingList: combobox_loading_list
16991
+ ComboboxLoadingList: combobox_loading_list,
16992
+ ComboboxEmptyList: combobox_empty_list
16629
16993
  },
16630
16994
  props: {
16631
16995
  /**
@@ -16741,6 +17105,14 @@ var combobox_with_popovervue_type_template_id_6f7d8b3c_staticRenderFns = []
16741
17105
  default: () => [0, 4]
16742
17106
  },
16743
17107
 
17108
+ /**
17109
+ * If the popover sticks to the input.
17110
+ */
17111
+ popoverSticky: {
17112
+ type: [Boolean, String],
17113
+ default: false
17114
+ },
17115
+
16744
17116
  /**
16745
17117
  * Displays the list when the combobox is focused, before the user has typed anything.
16746
17118
  * When this is enabled the list will not close after selection.
@@ -16756,6 +17128,14 @@ var combobox_with_popovervue_type_template_id_6f7d8b3c_staticRenderFns = []
16756
17128
  loading: {
16757
17129
  type: Boolean,
16758
17130
  default: false
17131
+ },
17132
+
17133
+ /**
17134
+ * Message to show when the list is empty
17135
+ */
17136
+ emptyStateMessage: {
17137
+ type: String,
17138
+ default: 'No matches found.'
16759
17139
  }
16760
17140
  },
16761
17141
  emits: ['select', 'escape', 'highlight', 'opened'],
@@ -16796,13 +17176,7 @@ var combobox_with_popovervue_type_template_id_6f7d8b3c_staticRenderFns = []
16796
17176
 
16797
17177
  },
16798
17178
  methods: {
16799
- async handleDisplayList(value) {
16800
- if (this.isListShown) {
16801
- // After the list is updated, hightlight the first item
16802
- await this.$nextTick();
16803
- this.$refs.combobox.setInitialHighlightIndex();
16804
- }
16805
-
17179
+ handleDisplayList(value) {
16806
17180
  if (!this.hasSuggestionList) {
16807
17181
  if (value) {
16808
17182
  // Displays the list after the user has typed anything
@@ -16896,8 +17270,8 @@ var combobox_with_popovervue_type_template_id_6f7d8b3c_staticRenderFns = []
16896
17270
  ;
16897
17271
  var combobox_with_popover_component = normalizeComponent(
16898
17272
  combobox_with_popover_combobox_with_popovervue_type_script_lang_js_,
16899
- combobox_with_popovervue_type_template_id_6f7d8b3c_render,
16900
- combobox_with_popovervue_type_template_id_6f7d8b3c_staticRenderFns,
17273
+ combobox_with_popovervue_type_template_id_65a49163_render,
17274
+ combobox_with_popovervue_type_template_id_65a49163_staticRenderFns,
16901
17275
  false,
16902
17276
  null,
16903
17277
  null,
@@ -16908,11 +17282,11 @@ var combobox_with_popover_component = normalizeComponent(
16908
17282
  /* harmony default export */ const combobox_with_popover = (combobox_with_popover_component.exports);
16909
17283
  ;// CONCATENATED MODULE: ./recipes/comboboxes/combobox_with_popover/index.js
16910
17284
 
16911
- ;// 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&
16912
- 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){
17285
+ ;// 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&
17286
+ 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){
16913
17287
  var onInput = ref.onInput;
16914
17288
  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)})}
16915
- var combobox_multi_selectvue_type_template_id_1ff44929_staticRenderFns = []
17289
+ var combobox_multi_selectvue_type_template_id_907d2f60_staticRenderFns = []
16916
17290
 
16917
17291
 
16918
17292
  ;// CONCATENATED MODULE: ./recipes/comboboxes/combobox_multi_select/combobox_multi_select_story_constants.js
@@ -17229,7 +17603,7 @@ const MULTI_SELECT_SIZES = {
17229
17603
  },
17230
17604
 
17231
17605
  /**
17232
- * Max select message when the max selections has been reached with the structure:
17606
+ * Max select message when the max selections is exceeded with the structure:
17233
17607
  * `[{"message": string, "type": VALIDATION_MESSAGE_TYPES }]`
17234
17608
  */
17235
17609
  maxSelectedMessage: {
@@ -17289,10 +17663,19 @@ const MULTI_SELECT_SIZES = {
17289
17663
  return { ...this.$listeners,
17290
17664
  input: event => {
17291
17665
  this.$emit('input', event);
17666
+
17667
+ if (this.hasSuggestionList) {
17668
+ this.showComboboxList();
17669
+ }
17292
17670
  },
17293
17671
  keyup: event => {
17294
17672
  this.onInputKeyup(event);
17295
17673
  this.$emit('keyup', event);
17674
+ },
17675
+ click: event => {
17676
+ if (this.hasSuggestionList) {
17677
+ this.showComboboxList();
17678
+ }
17296
17679
  }
17297
17680
  };
17298
17681
  }
@@ -17352,6 +17735,22 @@ const MULTI_SELECT_SIZES = {
17352
17735
  this.$emit('select', i);
17353
17736
  },
17354
17737
 
17738
+ showComboboxList() {
17739
+ if (this.showList != null) {
17740
+ return;
17741
+ }
17742
+
17743
+ this.$refs.comboboxWithPopover.showComboboxList();
17744
+ },
17745
+
17746
+ closeComboboxList() {
17747
+ if (this.showList != null) {
17748
+ return;
17749
+ }
17750
+
17751
+ this.$refs.comboboxWithPopover.closeComboboxList();
17752
+ },
17753
+
17355
17754
  getChipButtons() {
17356
17755
  return this.$refs.chips && this.$refs.chips.map(chip => chip.$el.querySelector('button'));
17357
17756
  },
@@ -17413,13 +17812,13 @@ const MULTI_SELECT_SIZES = {
17413
17812
  moveFromInputToChip() {
17414
17813
  this.getLastChipButton().focus();
17415
17814
  this.$refs.input.blur();
17416
- this.$refs.comboboxWithPopover.closeComboboxList();
17815
+ this.closeComboboxList();
17417
17816
  },
17418
17817
 
17419
17818
  moveFromChipToInput() {
17420
17819
  this.getLastChipButton().blur();
17421
17820
  this.$refs.input.focus();
17422
- this.$refs.comboboxWithPopover.showComboboxList();
17821
+ this.showComboboxList();
17423
17822
  },
17424
17823
 
17425
17824
  navigateBetweenChips(target, toLeft) {
@@ -17432,7 +17831,7 @@ const MULTI_SELECT_SIZES = {
17432
17831
 
17433
17832
  this.getChipButtons()[from].blur();
17434
17833
  this.getChipButtons()[to].focus();
17435
- this.$refs.comboboxWithPopover.closeComboboxList();
17834
+ this.closeComboboxList();
17436
17835
  },
17437
17836
 
17438
17837
  setChipsTopPosition() {
@@ -17502,7 +17901,7 @@ const MULTI_SELECT_SIZES = {
17502
17901
  checkMaxSelected() {
17503
17902
  if (this.maxSelected === 0) return;
17504
17903
 
17505
- if (this.selectedItems.length >= this.maxSelected) {
17904
+ if (this.selectedItems.length > this.maxSelected) {
17506
17905
  this.showValidationMessages = true;
17507
17906
  this.$emit('max-selected');
17508
17907
  } else {
@@ -17524,8 +17923,8 @@ const MULTI_SELECT_SIZES = {
17524
17923
  ;
17525
17924
  var combobox_multi_select_component = normalizeComponent(
17526
17925
  combobox_multi_select_combobox_multi_selectvue_type_script_lang_js_,
17527
- combobox_multi_selectvue_type_template_id_1ff44929_render,
17528
- combobox_multi_selectvue_type_template_id_1ff44929_staticRenderFns,
17926
+ combobox_multi_selectvue_type_template_id_907d2f60_render,
17927
+ combobox_multi_selectvue_type_template_id_907d2f60_staticRenderFns,
17529
17928
  false,
17530
17929
  null,
17531
17930
  null,
@@ -17882,6 +18281,7 @@ var top_banner_info_component = normalizeComponent(
17882
18281
 
17883
18282
 
17884
18283
 
18284
+
17885
18285
 
17886
18286
 
17887
18287
  /// Recipes