@dialpad/dialtone-vue 2.53.1 → 2.54.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.
@@ -3548,9 +3548,9 @@ var notice_content_component = normalizeComponent(
3548
3548
  )
3549
3549
 
3550
3550
  /* harmony default export */ const notice_content = (notice_content_component.exports);
3551
- ;// 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/notice/notice_action.vue?vue&type=template&id=80f1eb74&
3552
- var notice_actionvue_type_template_id_80f1eb74_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"d-notice__actions",attrs:{"data-qa":"notice-content-actions"}},[_vm._t("default"),(!_vm.hideClose)?_c('dt-button',_vm._g(_vm._b({ref:"closeButton",attrs:{"data-qa":"dt-notice-action-close-button","size":"sm","importance":"clear","circle":"","aria-label":_vm.closeButtonProps.ariaLabel ? _vm.closeButtonProps.ariaLabel : 'Close'},scopedSlots:_vm._u([{key:"icon",fn:function(){return [_c('dt-icon',{attrs:{"name":"close","size":"200"}})]},proxy:true}],null,false,1154370889)},'dt-button',_vm.closeButtonProps,false),_vm.noticeActionListeners)):_vm._e(),(_vm.showVisuallyHiddenClose)?_c('sr-only-close-button',{attrs:{"visually-hidden-close-label":_vm.visuallyHiddenCloseLabel},on:{"close":_vm.close}}):_vm._e()],2)}
3553
- var notice_actionvue_type_template_id_80f1eb74_staticRenderFns = []
3551
+ ;// 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/notice/notice_action.vue?vue&type=template&id=6ccb8af0&
3552
+ var notice_actionvue_type_template_id_6ccb8af0_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"d-notice__actions",attrs:{"data-qa":"notice-content-actions"}},[_vm._t("default"),(!_vm.hideClose)?_c('dt-button',_vm._g(_vm._b({ref:"closeButton",attrs:{"data-qa":"dt-notice-action-close-button","size":"sm","importance":"clear","circle":"","aria-label":_vm.closeButtonProps.ariaLabel ? _vm.closeButtonProps.ariaLabel : 'Close'},scopedSlots:_vm._u([{key:"icon",fn:function(){return [_c('dt-icon',{attrs:{"name":"close","size":"200"}})]},proxy:true}],null,false,1154370889)},'dt-button',_vm.closeButtonProps,false),_vm.noticeActionListeners)):_vm._e(),(_vm.showVisuallyHiddenClose)?_c('sr-only-close-button',{attrs:{"visually-hidden-close-label":_vm.visuallyHiddenCloseLabel},on:{"close":_vm.close}}):_vm._e()],2)}
3553
+ var notice_actionvue_type_template_id_6ccb8af0_staticRenderFns = []
3554
3554
 
3555
3555
 
3556
3556
  ;// 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/button/button.vue?vue&type=template&id=4c8880f0&
@@ -4181,17 +4181,6 @@ var sr_only_close_button_component = normalizeComponent(
4181
4181
  }
4182
4182
 
4183
4183
  },
4184
- watch: {
4185
- $props: {
4186
- immediate: true,
4187
- deep: true,
4188
-
4189
- handler() {
4190
- this.validateProps();
4191
- }
4192
-
4193
- }
4194
- },
4195
4184
 
4196
4185
  created() {
4197
4186
  if (!this.hideClose && !this.closeButtonProps.ariaLabel) {
@@ -4214,12 +4203,6 @@ var sr_only_close_button_component = normalizeComponent(
4214
4203
  methods: {
4215
4204
  close() {
4216
4205
  this.$emit('close');
4217
- },
4218
-
4219
- validateProps() {
4220
- if (this.hideClose && !this.visuallyHiddenClose) {
4221
- console.error('If hideClose prop is true, visuallyHiddenClose and visuallyHiddenCloseLabel props ' + 'need to be set so the component always includes a close button');
4222
- }
4223
4206
  }
4224
4207
 
4225
4208
  }
@@ -4236,8 +4219,8 @@ var sr_only_close_button_component = normalizeComponent(
4236
4219
  ;
4237
4220
  var notice_action_component = normalizeComponent(
4238
4221
  notice_notice_actionvue_type_script_lang_js_,
4239
- notice_actionvue_type_template_id_80f1eb74_render,
4240
- notice_actionvue_type_template_id_80f1eb74_staticRenderFns,
4222
+ notice_actionvue_type_template_id_6ccb8af0_render,
4223
+ notice_actionvue_type_template_id_6ccb8af0_staticRenderFns,
4241
4224
  false,
4242
4225
  null,
4243
4226
  null,
@@ -4269,17 +4252,25 @@ const focusableElementsList = `button,[href],input,select,textarea,details,[tabi
4269
4252
  /* harmony default export */ const modal = ({
4270
4253
  methods: {
4271
4254
  /**
4272
- * set focus to the first focusable element in your component, includes tabindex="-1".
4255
+ * get the first focusable element in your component, includes tabindex="-1".
4273
4256
  * @param {object} el - optional - ref of dom element to trap focus on.
4274
4257
  * will default to the root node of the vue component
4275
4258
  */
4276
- async focusFirstElement(el) {
4259
+ async getFirstFocusableElement(el) {
4277
4260
  await this.$nextTick();
4278
4261
 
4279
4262
  const focusableElements = this._getFocusableElements(el, true);
4280
4263
 
4281
- const elToFocus = this._getFirstFocusElement(focusableElements);
4264
+ return this._getFirstFocusElement(focusableElements);
4265
+ },
4282
4266
 
4267
+ /**
4268
+ * set focus to the first focusable element in your component, includes tabindex="-1".
4269
+ * @param {object} el - optional - ref of dom element to trap focus on.
4270
+ * will default to the root node of the vue component
4271
+ */
4272
+ async focusFirstElement(el) {
4273
+ const elToFocus = this.getFirstFocusableElement(el);
4283
4274
  elToFocus === null || elToFocus === void 0 ? void 0 : elToFocus.focus({
4284
4275
  preventScroll: true
4285
4276
  });
@@ -7990,13 +7981,13 @@ var collapsible_component = normalizeComponent(
7990
7981
  /* harmony default export */ const collapsible = (collapsible_component.exports);
7991
7982
  ;// CONCATENATED MODULE: ./components/collapsible/index.js
7992
7983
 
7993
- ;// 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/dropdown/dropdown.vue?vue&type=template&id=70cb2bdc&
7994
- var dropdownvue_type_template_id_70cb2bdc_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('dt-popover',_vm._g({ref:"popover",attrs:{"content-width":_vm.contentWidth,"open":_vm.open,"placement":_vm.placement,"initial-focus-element":_vm.openedWithKeyboard ? 'first' : 'dialog',"fallback-placements":_vm.fallbackPlacements,"padding":"none","role":"menu","modal":_vm.modal,"max-height":_vm.maxHeight,"max-width":_vm.maxWidth,"open-with-arrow-keys":true,"open-on-context":_vm.openOnContext},scopedSlots:_vm._u([{key:"anchor",fn:function(ref){
7984
+ ;// 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/dropdown/dropdown.vue?vue&type=template&id=5944f754&
7985
+ var dropdownvue_type_template_id_5944f754_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('dt-popover',_vm._g({ref:"popover",attrs:{"content-width":_vm.contentWidth,"open":_vm.open,"placement":_vm.placement,"initial-focus-element":_vm.openedWithKeyboard ? 'first' : 'dialog',"fallback-placements":_vm.fallbackPlacements,"padding":"none","role":"menu","modal":_vm.modal,"max-height":_vm.maxHeight,"max-width":_vm.maxWidth,"open-with-arrow-keys":_vm.shouldOpenWithArrowKeys,"open-on-context":_vm.openOnContext},scopedSlots:_vm._u([{key:"anchor",fn:function(ref){
7995
7986
  var attrs = ref.attrs;
7996
7987
  return [_vm._t("anchor",null,null,attrs)]}},{key:"content",fn:function(ref){
7997
7988
  var close = ref.close;
7998
7989
  return [_c('ul',{ref:"listWrapper",class:_vm.listClasses,attrs:{"id":_vm.listId,"data-qa":"dt-dropdown-list-wrapper"},on:{"mouseleave":_vm.clearHighlightIndex,"!mousemove":function($event){return _vm.onMouseHighlight.apply(null, arguments)}}},[_vm._t("list",null,{"close":close}),(_vm.showVisuallyHiddenClose)?_c('sr-only-close-button',{attrs:{"visually-hidden-close-label":_vm.visuallyHiddenCloseLabel,"tabindex":_vm.isArrowKeyNav ? -1 : 0},on:{"close":close}}):_vm._e()],2)]}}],null,true)},_vm.dropdownListeners))}
7999
- var dropdownvue_type_template_id_70cb2bdc_staticRenderFns = []
7990
+ var dropdownvue_type_template_id_5944f754_staticRenderFns = []
8000
7991
 
8001
7992
 
8002
7993
  ;// 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=64e7122e&
@@ -13996,14 +13987,14 @@ const DROPDOWN_PADDING_CLASSES = {
13996
13987
  switch (eventCode) {
13997
13988
  case EVENT_KEYNAMES.up:
13998
13989
  case EVENT_KEYNAMES.arrowup:
13999
- this.onKeyValidation(event, 'onUpKeyPress');
13990
+ this.onUpKeyPress(event);
14000
13991
  event.stopPropagation();
14001
13992
  event.preventDefault();
14002
13993
  break;
14003
13994
 
14004
13995
  case EVENT_KEYNAMES.down:
14005
13996
  case EVENT_KEYNAMES.arrowdown:
14006
- this.onKeyValidation(event, 'onDownKeyPress');
13997
+ this.onDownKeyPress(event);
14007
13998
  event.stopPropagation();
14008
13999
  event.preventDefault();
14009
14000
  break;
@@ -14018,19 +14009,19 @@ const DROPDOWN_PADDING_CLASSES = {
14018
14009
  break;
14019
14010
 
14020
14011
  case EVENT_KEYNAMES.home:
14021
- this.onKeyValidation(event, 'onHomeKeyPress');
14012
+ this.onHomeKeyPress(event);
14022
14013
  event.stopPropagation();
14023
14014
  event.preventDefault();
14024
14015
  break;
14025
14016
 
14026
14017
  case EVENT_KEYNAMES.end:
14027
- this.onKeyValidation(event, 'onEndKeyPress');
14018
+ this.onEndKeyPress(event);
14028
14019
  event.stopPropagation();
14029
14020
  event.preventDefault();
14030
14021
  break;
14031
14022
 
14032
14023
  default:
14033
- this.onKeyValidation(event, 'onKeyPress');
14024
+ this.onKeyPress(event);
14034
14025
  break;
14035
14026
  }
14036
14027
 
@@ -14059,6 +14050,10 @@ const DROPDOWN_PADDING_CLASSES = {
14059
14050
  return ['d-ps-relative', 'd-stack2', 'd-m4', 'd-px0', DROPDOWN_PADDING_CLASSES[this.padding], this.listClass, {
14060
14051
  'd-context-menu-list': this.openOnContext
14061
14052
  }];
14053
+ },
14054
+
14055
+ shouldOpenWithArrowKeys() {
14056
+ return !this.openOnContext;
14062
14057
  }
14063
14058
 
14064
14059
  },
@@ -14162,14 +14157,6 @@ const DROPDOWN_PADDING_CLASSES = {
14162
14157
  e.stopPropagation();
14163
14158
  e.preventDefault();
14164
14159
  return this.onNavigationKey(e.key);
14165
- },
14166
-
14167
- onKeyValidation(e, eventHandler) {
14168
- if (this.open !== null && !this.openOnContext) {
14169
- return;
14170
- }
14171
-
14172
- this[eventHandler](e);
14173
14160
  }
14174
14161
 
14175
14162
  }
@@ -14191,8 +14178,8 @@ var dropdownvue_type_style_index_0_lang_less_ = __webpack_require__(782);
14191
14178
 
14192
14179
  var dropdown_component = normalizeComponent(
14193
14180
  dropdown_dropdownvue_type_script_lang_js_,
14194
- dropdownvue_type_template_id_70cb2bdc_render,
14195
- dropdownvue_type_template_id_70cb2bdc_staticRenderFns,
14181
+ dropdownvue_type_template_id_5944f754_render,
14182
+ dropdownvue_type_template_id_5944f754_staticRenderFns,
14196
14183
  false,
14197
14184
  null,
14198
14185
  null,
@@ -15801,14 +15788,15 @@ var input_group_component = normalizeComponent(
15801
15788
  /* harmony default export */ const input_group_input_group = (input_group_component.exports);
15802
15789
  ;// CONCATENATED MODULE: ./components/input_group/index.js
15803
15790
 
15804
- ;// 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/modal/modal.vue?vue&type=template&id=e9bf0878&
15805
- var modalvue_type_template_id_e9bf0878_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('dt-lazy-show',_vm._g({class:[
15791
+ ;// 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/modal/modal.vue?vue&type=template&id=a8730b96&
15792
+ var modalvue_type_template_id_a8730b96_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('dt-lazy-show',_vm._g({class:[
15806
15793
  'd-modal',
15807
15794
  _vm.MODAL_KIND_MODIFIERS[_vm.kind],
15808
15795
  _vm.MODAL_SIZE_MODIFIERS[_vm.size],
15809
15796
  _vm.modalClass ],attrs:{"transition":"d-zoom","show":_vm.show,"data-qa":"dt-modal","aria-hidden":_vm.open}},_vm.modalListeners),[(_vm.show && (_vm.$slots.banner || _vm.bannerTitle))?_c('div',{class:[
15810
15797
  'd-modal__banner',
15811
- _vm.bannerClass ],attrs:{"data-qa":"dt-modal-banner"}},[_vm._t("banner",function(){return [_vm._v(" "+_vm._s(_vm.bannerTitle)+" ")]})],2):_vm._e(),_c('transition',{attrs:{"appear":"","name":"d-modal__dialog"}},[_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.show),expression:"show"}],class:[
15798
+ _vm.bannerClass,
15799
+ _vm.bannerKindClass ],attrs:{"data-qa":"dt-modal-banner"}},[_vm._t("banner",function(){return [_vm._v(" "+_vm._s(_vm.bannerTitle)+" ")]})],2):_vm._e(),_c('transition',{attrs:{"appear":"","name":"d-modal__dialog"}},[_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.show),expression:"show"}],class:[
15812
15800
  'd-modal__dialog',
15813
15801
  { 'd-modal__dialog--scrollable': _vm.fixedHeaderFooter },
15814
15802
  _vm.dialogClass ],attrs:{"role":"dialog","aria-modal":"true","aria-describedby":_vm.describedById,"aria-labelledby":_vm.labelledById}},[(_vm.$slots.header)?_c('div',{staticClass:"d-modal__header",attrs:{"id":_vm.labelledById,"data-qa":"dt-modal-title"}},[_vm._t("header")],2):_c('h2',{staticClass:"d-modal__header",attrs:{"id":_vm.labelledById,"data-qa":"dt-modal-title"}},[_vm._v(" "+_vm._s(_vm.title)+" ")]),(_vm.$slots.default)?_c('div',{class:[
@@ -15816,7 +15804,7 @@ var modalvue_type_template_id_e9bf0878_render = function () {var _vm=this;var _h
15816
15804
  _vm.contentClass ],attrs:{"data-qa":"dt-modal-copy"}},[_vm._t("default")],2):_c('p',{class:[
15817
15805
  'd-modal__content',
15818
15806
  _vm.contentClass ],attrs:{"data-qa":"dt-modal-copy"}},[_vm._v(" "+_vm._s(_vm.copy)+" ")]),(_vm.hasFooterSlot)?_c('footer',{staticClass:"d-modal__footer"},[_vm._t("footer")],2):_vm._e(),(!_vm.hideClose)?_c('dt-button',_vm._b({staticClass:"d-modal__close",attrs:{"circle":"","size":"lg","importance":"clear","aria-label":_vm.closeButtonProps.ariaLabel},on:{"click":_vm.close},scopedSlots:_vm._u([{key:"icon",fn:function(){return [_c('dt-icon',{attrs:{"name":"close","size":"400"}})]},proxy:true}],null,false,1709155279)},'dt-button',_vm.closeButtonProps,false)):_vm._e(),(_vm.showVisuallyHiddenClose)?_c('sr-only-close-button',{attrs:{"visually-hidden-close-label":_vm.visuallyHiddenCloseLabel},on:{"close":_vm.close}}):_vm._e()],1)])],1)}
15819
- var modalvue_type_template_id_e9bf0878_staticRenderFns = []
15807
+ var modalvue_type_template_id_a8730b96_staticRenderFns = []
15820
15808
 
15821
15809
 
15822
15810
  ;// CONCATENATED MODULE: ./components/modal/modal_constants.js
@@ -15830,6 +15818,208 @@ const MODAL_SIZE_MODIFIERS = {
15830
15818
  default: '',
15831
15819
  full: 'd-modal--full'
15832
15820
  };
15821
+ const MODAL_BANNER_KINDS = {
15822
+ error: 'd-modal__banner--critical',
15823
+ info: 'd-modal__banner--info',
15824
+ success: 'd-modal__banner--success',
15825
+ warning: 'd-modal__banner--warning',
15826
+ base: 'd-modal__banner--general'
15827
+ };
15828
+ ;// 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/notice/notice.vue?vue&type=template&id=bdb2f588&
15829
+ var noticevue_type_template_id_bdb2f588_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('aside',{class:_vm.noticeClass,attrs:{"data-qa":"notice"}},[_c('dt-notice-icon',{attrs:{"kind":_vm.kind}},[_vm._t("icon")],2),_c('dt-notice-content',_vm._g({attrs:{"title-id":_vm.titleId,"content-id":_vm.contentId,"title":_vm.title,"role":_vm.role},scopedSlots:_vm._u([{key:"titleOverride",fn:function(){return [_vm._t("titleOverride")]},proxy:true}],null,true)},_vm.$listeners),[_vm._t("default")],2),_c('dt-notice-action',_vm._g({attrs:{"hide-close":_vm.hideClose,"close-button-props":_vm.closeButtonProps,"visually-hidden-close":_vm.visuallyHiddenClose,"visually-hidden-close-label":_vm.visuallyHiddenCloseLabel}},_vm.$listeners),[_vm._t("action")],2)],1)}
15830
+ var noticevue_type_template_id_bdb2f588_staticRenderFns = []
15831
+
15832
+
15833
+ ;// 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/notice/notice.vue?vue&type=script&lang=js&
15834
+ //
15835
+ //
15836
+ //
15837
+ //
15838
+ //
15839
+ //
15840
+ //
15841
+ //
15842
+ //
15843
+ //
15844
+ //
15845
+ //
15846
+ //
15847
+ //
15848
+ //
15849
+ //
15850
+ //
15851
+ //
15852
+ //
15853
+ //
15854
+ //
15855
+ //
15856
+ //
15857
+ //
15858
+ //
15859
+ //
15860
+ //
15861
+ //
15862
+ //
15863
+ //
15864
+ //
15865
+ //
15866
+ //
15867
+ //
15868
+ //
15869
+ //
15870
+ //
15871
+ //
15872
+ //
15873
+
15874
+
15875
+
15876
+
15877
+
15878
+ /**
15879
+ * A notice is an informational and assistive message that appears inline with content.
15880
+ * @see https://dialpad.design/components/notice.html
15881
+ */
15882
+
15883
+ /* harmony default export */ const noticevue_type_script_lang_js_ = ({
15884
+ name: 'DtNotice',
15885
+ components: {
15886
+ DtNoticeIcon: notice_icon,
15887
+ DtNoticeContent: notice_content,
15888
+ DtNoticeAction: notice_action
15889
+ },
15890
+ mixins: [sr_only_close_button],
15891
+ props: {
15892
+ /**
15893
+ * Sets an ID on the title element of the component. Useful for aria-describedby
15894
+ * or aria-labelledby or any other reason you may need an id to refer to the title.
15895
+ */
15896
+ titleId: {
15897
+ type: String,
15898
+ default: undefined
15899
+ },
15900
+
15901
+ /**
15902
+ * Sets an ID on the content element of the component. Useful for aria-describedby
15903
+ * or aria-labelledby or any other reason you may need an id to refer to the content.
15904
+ */
15905
+ contentId: {
15906
+ type: String,
15907
+ default: undefined
15908
+ },
15909
+
15910
+ /**
15911
+ * Title header of the notice. This can be left blank to remove the title from the notice entirely.
15912
+ */
15913
+ title: {
15914
+ type: String,
15915
+ default: ''
15916
+ },
15917
+
15918
+ /**
15919
+ * Provides a role for the notice. 'status' is used to communicate a message. 'alert' is used to communicate an
15920
+ * important message that does not contain any interactive elements. 'alertdialog' is used to communicate an
15921
+ * important message that does contain interactive elements.
15922
+ * @values alert, alertdialog, status
15923
+ */
15924
+ role: {
15925
+ type: String,
15926
+ default: 'status',
15927
+
15928
+ validate(role) {
15929
+ return NOTICE_ROLES.includes(role);
15930
+ }
15931
+
15932
+ },
15933
+
15934
+ /**
15935
+ * Used in scenarios where the message needs to visually dominate the screen.
15936
+ * This will also change the aria role from status to alert.
15937
+ * @values true, false
15938
+ */
15939
+ important: {
15940
+ type: Boolean,
15941
+ default: false
15942
+ },
15943
+
15944
+ /**
15945
+ * Severity level of the notice, sets the icon and background
15946
+ * @values base, error, info, success, warning
15947
+ */
15948
+ kind: {
15949
+ type: String,
15950
+ default: 'base',
15951
+
15952
+ validate(kind) {
15953
+ return NOTICE_KINDS.includes(kind);
15954
+ }
15955
+
15956
+ },
15957
+
15958
+ /**
15959
+ * Props for the notice close button.
15960
+ */
15961
+ closeButtonProps: {
15962
+ type: Object,
15963
+ default: () => ({})
15964
+ },
15965
+
15966
+ /**
15967
+ * Hides the close button from the notice
15968
+ * @values true, false
15969
+ */
15970
+ hideClose: {
15971
+ type: Boolean,
15972
+ default: false
15973
+ }
15974
+ },
15975
+ emits: [
15976
+ /**
15977
+ * Close button click event
15978
+ *
15979
+ * @event close
15980
+ */
15981
+ 'close'],
15982
+ computed: {
15983
+ noticeClass() {
15984
+ const noticeKinds = {
15985
+ error: 'd-notice--error',
15986
+ info: 'd-notice--info',
15987
+ success: 'd-notice--success',
15988
+ warning: 'd-notice--warning',
15989
+ base: 'd-notice--base'
15990
+ };
15991
+ return ['d-notice', noticeKinds[this.kind], {
15992
+ 'd-notice--important': this.important
15993
+ }];
15994
+ }
15995
+
15996
+ }
15997
+ });
15998
+ ;// CONCATENATED MODULE: ./components/notice/notice.vue?vue&type=script&lang=js&
15999
+ /* harmony default export */ const notice_noticevue_type_script_lang_js_ = (noticevue_type_script_lang_js_);
16000
+ ;// CONCATENATED MODULE: ./components/notice/notice.vue
16001
+
16002
+
16003
+
16004
+
16005
+
16006
+ /* normalize component */
16007
+ ;
16008
+ var notice_component = normalizeComponent(
16009
+ notice_noticevue_type_script_lang_js_,
16010
+ noticevue_type_template_id_bdb2f588_render,
16011
+ noticevue_type_template_id_bdb2f588_staticRenderFns,
16012
+ false,
16013
+ null,
16014
+ null,
16015
+ null
16016
+
16017
+ )
16018
+
16019
+ /* harmony default export */ const notice = (notice_component.exports);
16020
+ ;// CONCATENATED MODULE: ./components/notice/index.js
16021
+
16022
+
15833
16023
  ;// 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/modal/modal.vue?vue&type=script&lang=js&
15834
16024
  //
15835
16025
  //
@@ -15946,6 +16136,8 @@ const MODAL_SIZE_MODIFIERS = {
15946
16136
  //
15947
16137
  //
15948
16138
  //
16139
+ //
16140
+
15949
16141
 
15950
16142
 
15951
16143
 
@@ -16087,6 +16279,20 @@ const MODAL_SIZE_MODIFIERS = {
16087
16279
  default: ''
16088
16280
  },
16089
16281
 
16282
+ /**
16283
+ * Sets the color of the banner.
16284
+ * @values base, error, info, success, warning
16285
+ */
16286
+ bannerKind: {
16287
+ type: String,
16288
+ default: 'warning',
16289
+
16290
+ validate(kind) {
16291
+ return NOTICE_KINDS.includes(kind);
16292
+ }
16293
+
16294
+ },
16295
+
16090
16296
  /**
16091
16297
  * Additional class name for the banner element within the modal.
16092
16298
  * Can accept String, Object, and Array, i.e. has the
@@ -16129,6 +16335,7 @@ const MODAL_SIZE_MODIFIERS = {
16129
16335
  return {
16130
16336
  MODAL_KIND_MODIFIERS: MODAL_KIND_MODIFIERS,
16131
16337
  MODAL_SIZE_MODIFIERS: MODAL_SIZE_MODIFIERS,
16338
+ MODAL_BANNER_KINDS: MODAL_BANNER_KINDS,
16132
16339
  EVENT_KEYNAMES: EVENT_KEYNAMES
16133
16340
  };
16134
16341
  },
@@ -16166,6 +16373,10 @@ const MODAL_SIZE_MODIFIERS = {
16166
16373
 
16167
16374
  hasFooterSlot() {
16168
16375
  return !!this.$slots.footer;
16376
+ },
16377
+
16378
+ bannerKindClass() {
16379
+ return MODAL_BANNER_KINDS[this.bannerKind];
16169
16380
  }
16170
16381
 
16171
16382
  },
@@ -16233,8 +16444,8 @@ const MODAL_SIZE_MODIFIERS = {
16233
16444
  ;
16234
16445
  var modal_component = normalizeComponent(
16235
16446
  modal_modalvue_type_script_lang_js_,
16236
- modalvue_type_template_id_e9bf0878_render,
16237
- modalvue_type_template_id_e9bf0878_staticRenderFns,
16447
+ modalvue_type_template_id_a8730b96_render,
16448
+ modalvue_type_template_id_a8730b96_staticRenderFns,
16238
16449
  false,
16239
16450
  null,
16240
16451
  null,
@@ -16532,201 +16743,6 @@ var list_item_group_component = normalizeComponent(
16532
16743
  ;// CONCATENATED MODULE: ./components/list_item_group/index.js
16533
16744
 
16534
16745
 
16535
- ;// 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/notice/notice.vue?vue&type=template&id=bdb2f588&
16536
- var noticevue_type_template_id_bdb2f588_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('aside',{class:_vm.noticeClass,attrs:{"data-qa":"notice"}},[_c('dt-notice-icon',{attrs:{"kind":_vm.kind}},[_vm._t("icon")],2),_c('dt-notice-content',_vm._g({attrs:{"title-id":_vm.titleId,"content-id":_vm.contentId,"title":_vm.title,"role":_vm.role},scopedSlots:_vm._u([{key:"titleOverride",fn:function(){return [_vm._t("titleOverride")]},proxy:true}],null,true)},_vm.$listeners),[_vm._t("default")],2),_c('dt-notice-action',_vm._g({attrs:{"hide-close":_vm.hideClose,"close-button-props":_vm.closeButtonProps,"visually-hidden-close":_vm.visuallyHiddenClose,"visually-hidden-close-label":_vm.visuallyHiddenCloseLabel}},_vm.$listeners),[_vm._t("action")],2)],1)}
16537
- var noticevue_type_template_id_bdb2f588_staticRenderFns = []
16538
-
16539
-
16540
- ;// 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/notice/notice.vue?vue&type=script&lang=js&
16541
- //
16542
- //
16543
- //
16544
- //
16545
- //
16546
- //
16547
- //
16548
- //
16549
- //
16550
- //
16551
- //
16552
- //
16553
- //
16554
- //
16555
- //
16556
- //
16557
- //
16558
- //
16559
- //
16560
- //
16561
- //
16562
- //
16563
- //
16564
- //
16565
- //
16566
- //
16567
- //
16568
- //
16569
- //
16570
- //
16571
- //
16572
- //
16573
- //
16574
- //
16575
- //
16576
- //
16577
- //
16578
- //
16579
- //
16580
-
16581
-
16582
-
16583
-
16584
-
16585
- /**
16586
- * A notice is an informational and assistive message that appears inline with content.
16587
- * @see https://dialpad.design/components/notice.html
16588
- */
16589
-
16590
- /* harmony default export */ const noticevue_type_script_lang_js_ = ({
16591
- name: 'DtNotice',
16592
- components: {
16593
- DtNoticeIcon: notice_icon,
16594
- DtNoticeContent: notice_content,
16595
- DtNoticeAction: notice_action
16596
- },
16597
- mixins: [sr_only_close_button],
16598
- props: {
16599
- /**
16600
- * Sets an ID on the title element of the component. Useful for aria-describedby
16601
- * or aria-labelledby or any other reason you may need an id to refer to the title.
16602
- */
16603
- titleId: {
16604
- type: String,
16605
- default: undefined
16606
- },
16607
-
16608
- /**
16609
- * Sets an ID on the content element of the component. Useful for aria-describedby
16610
- * or aria-labelledby or any other reason you may need an id to refer to the content.
16611
- */
16612
- contentId: {
16613
- type: String,
16614
- default: undefined
16615
- },
16616
-
16617
- /**
16618
- * Title header of the notice. This can be left blank to remove the title from the notice entirely.
16619
- */
16620
- title: {
16621
- type: String,
16622
- default: ''
16623
- },
16624
-
16625
- /**
16626
- * Provides a role for the notice. 'status' is used to communicate a message. 'alert' is used to communicate an
16627
- * important message that does not contain any interactive elements. 'alertdialog' is used to communicate an
16628
- * important message that does contain interactive elements.
16629
- * @values alert, alertdialog, status
16630
- */
16631
- role: {
16632
- type: String,
16633
- default: 'status',
16634
-
16635
- validate(role) {
16636
- return NOTICE_ROLES.includes(role);
16637
- }
16638
-
16639
- },
16640
-
16641
- /**
16642
- * Used in scenarios where the message needs to visually dominate the screen.
16643
- * This will also change the aria role from status to alert.
16644
- * @values true, false
16645
- */
16646
- important: {
16647
- type: Boolean,
16648
- default: false
16649
- },
16650
-
16651
- /**
16652
- * Severity level of the notice, sets the icon and background
16653
- * @values base, error, info, success, warning
16654
- */
16655
- kind: {
16656
- type: String,
16657
- default: 'base',
16658
-
16659
- validate(kind) {
16660
- return NOTICE_KINDS.includes(kind);
16661
- }
16662
-
16663
- },
16664
-
16665
- /**
16666
- * Props for the notice close button.
16667
- */
16668
- closeButtonProps: {
16669
- type: Object,
16670
- default: () => ({})
16671
- },
16672
-
16673
- /**
16674
- * Hides the close button from the notice
16675
- * @values true, false
16676
- */
16677
- hideClose: {
16678
- type: Boolean,
16679
- default: false
16680
- }
16681
- },
16682
- emits: [
16683
- /**
16684
- * Close button click event
16685
- *
16686
- * @event close
16687
- */
16688
- 'close'],
16689
- computed: {
16690
- noticeClass() {
16691
- const noticeKinds = {
16692
- error: 'd-notice--error',
16693
- info: 'd-notice--info',
16694
- success: 'd-notice--success',
16695
- warning: 'd-notice--warning',
16696
- base: 'd-notice--base'
16697
- };
16698
- return ['d-notice', noticeKinds[this.kind], {
16699
- 'd-notice--important': this.important
16700
- }];
16701
- }
16702
-
16703
- }
16704
- });
16705
- ;// CONCATENATED MODULE: ./components/notice/notice.vue?vue&type=script&lang=js&
16706
- /* harmony default export */ const notice_noticevue_type_script_lang_js_ = (noticevue_type_script_lang_js_);
16707
- ;// CONCATENATED MODULE: ./components/notice/notice.vue
16708
-
16709
-
16710
-
16711
-
16712
-
16713
- /* normalize component */
16714
- ;
16715
- var notice_component = normalizeComponent(
16716
- notice_noticevue_type_script_lang_js_,
16717
- noticevue_type_template_id_bdb2f588_render,
16718
- noticevue_type_template_id_bdb2f588_staticRenderFns,
16719
- false,
16720
- null,
16721
- null,
16722
- null
16723
-
16724
- )
16725
-
16726
- /* harmony default export */ const notice = (notice_component.exports);
16727
- ;// CONCATENATED MODULE: ./components/notice/index.js
16728
-
16729
-
16730
16746
  ;// 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/pagination/pagination.vue?vue&type=template&id=8a1dbe50&
16731
16747
  var paginationvue_type_template_id_8a1dbe50_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('nav',{staticClass:"d-d-flex d-fd-row d-gg4 d-ai-center",attrs:{"aria-label":_vm.ariaLabel}},[_c('dt-button',{staticClass:"d-px8",class:_vm.isFirstPage ? 'd-fc-black-300 h:d-fc-black-300 d-bgc-transparent' : 'd-fc-tertiary',attrs:{"data-qa":"dt-pagination-prev","aria-label":_vm.prevAriaLabel,"kind":"muted","importance":_vm.isFirstPage ? 'primary' : 'clear',"disabled":_vm.isFirstPage},on:{"click":function($event){return _vm.changePage(_vm.currentPage - 1)}}},[_c('template',{slot:"icon"},[_c('dt-icon',{attrs:{"name":"chevron-left","size":"300"}})],1)],2),_vm._l((_vm.pages),function(page,index){return _c('div',{key:("page-" + page + "-" + index),class:{ 'd-as-flex-end': isNaN(Number(page)) }},[(isNaN(Number(page)))?_c('div',{staticClass:"d-fc-tertiary d-w24 d-ta-center",attrs:{"data-qa":"dt-pagination-separator"}},[_c('dt-icon',{attrs:{"name":"more-horizontal","size":"300"}})],1):_c('dt-button',{attrs:{"aria-label":_vm.pageNumberAriaLabel(page),"kind":_vm.currentPage === page ? 'default' : 'muted',"importance":_vm.currentPage === page ? 'primary' : 'clear',"label-class":""},on:{"click":function($event){return _vm.changePage(page)}}},[_vm._v(" "+_vm._s(page)+" ")])],1)}),_c('dt-button',{staticClass:"d-px8",class:_vm.isLastPage ? 'd-fc-black-300 h:d-fc-black-300 d-bgc-transparent' : 'd-fc-tertiary',attrs:{"data-qa":"dt-pagination-next","aria-label":_vm.nextAriaLabel,"disabled":_vm.isLastPage,"kind":"muted","importance":_vm.isLastPage ? 'primary' : 'clear'},on:{"click":function($event){return _vm.changePage(_vm.currentPage + 1)}}},[_c('template',{slot:"icon"},[_c('dt-icon',{attrs:{"name":"chevron-right","size":"300"}})],1)],2)],2)}
16732
16748
  var paginationvue_type_template_id_8a1dbe50_staticRenderFns = []
@@ -17793,13 +17809,13 @@ var tab_component = normalizeComponent(
17793
17809
  )
17794
17810
 
17795
17811
  /* harmony default export */ const tab = (tab_component.exports);
17796
- ;// 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/tabs/tab_panel.vue?vue&type=template&id=78c45854&
17797
- var tab_panelvue_type_template_id_78c45854_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
17812
+ ;// 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/tabs/tab_panel.vue?vue&type=template&id=660b90ba&
17813
+ var tab_panelvue_type_template_id_660b90ba_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
17798
17814
  {
17799
17815
  'd-d-none': _vm.hidePanel,
17800
17816
  },
17801
- _vm.tabPanelClass ],attrs:{"id":("dt-panel-" + _vm.id),"role":"tabpanel","tabindex":"0","aria-labelledby":("dt-tab-" + _vm.tabId),"aria-hidden":("" + _vm.hidePanel),"data-qa":"dt-tab-panel"}},[_vm._t("default")],2)}
17802
- var tab_panelvue_type_template_id_78c45854_staticRenderFns = []
17817
+ _vm.tabPanelClass ],attrs:{"id":("dt-panel-" + _vm.id),"role":"tabpanel","tabindex":_vm.isFirstElementFocusable ? -1 : 0,"aria-labelledby":("dt-tab-" + _vm.tabId),"aria-hidden":("" + _vm.hidePanel),"data-qa":"dt-tab-panel"}},[_vm._t("default")],2)}
17818
+ var tab_panelvue_type_template_id_660b90ba_staticRenderFns = []
17803
17819
 
17804
17820
 
17805
17821
  ;// 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/tabs/tab_panel.vue?vue&type=script&lang=js&
@@ -17828,8 +17844,10 @@ var tab_panelvue_type_template_id_78c45854_staticRenderFns = []
17828
17844
  * Tabs allow users to navigation between grouped content in different views while within the same page context.
17829
17845
  * @see https://dialpad.design/components/tabs.html
17830
17846
  */
17847
+
17831
17848
  /* harmony default export */ const tab_panelvue_type_script_lang_js_ = ({
17832
17849
  name: 'DtTabPanel',
17850
+ mixins: [modal],
17833
17851
  inject: ['groupContext'],
17834
17852
  props: {
17835
17853
  /**
@@ -17865,12 +17883,24 @@ var tab_panelvue_type_template_id_78c45854_staticRenderFns = []
17865
17883
  default: ''
17866
17884
  }
17867
17885
  },
17886
+
17887
+ data() {
17888
+ return {
17889
+ isFirstElementFocusable: false
17890
+ };
17891
+ },
17892
+
17868
17893
  computed: {
17869
17894
  hidePanel() {
17870
17895
  return this.groupContext.selected !== this.id || this.hidden;
17871
17896
  }
17872
17897
 
17898
+ },
17899
+
17900
+ async mounted() {
17901
+ this.isFirstElementFocusable = !!(await this.getFirstFocusableElement(this.$el));
17873
17902
  }
17903
+
17874
17904
  });
17875
17905
  ;// CONCATENATED MODULE: ./components/tabs/tab_panel.vue?vue&type=script&lang=js&
17876
17906
  /* harmony default export */ const tabs_tab_panelvue_type_script_lang_js_ = (tab_panelvue_type_script_lang_js_);
@@ -17884,8 +17914,8 @@ var tab_panelvue_type_template_id_78c45854_staticRenderFns = []
17884
17914
  ;
17885
17915
  var tab_panel_component = normalizeComponent(
17886
17916
  tabs_tab_panelvue_type_script_lang_js_,
17887
- tab_panelvue_type_template_id_78c45854_render,
17888
- tab_panelvue_type_template_id_78c45854_staticRenderFns,
17917
+ tab_panelvue_type_template_id_660b90ba_render,
17918
+ tab_panelvue_type_template_id_660b90ba_staticRenderFns,
17889
17919
  false,
17890
17920
  null,
17891
17921
  null,
@@ -20906,11 +20936,11 @@ var combobox_with_popover_component = normalizeComponent(
20906
20936
  /* harmony default export */ const combobox_with_popover = (combobox_with_popover_component.exports);
20907
20937
  ;// CONCATENATED MODULE: ./recipes/comboboxes/combobox_with_popover/index.js
20908
20938
 
20909
- ;// 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=97461302&
20910
- var combobox_multi_selectvue_type_template_id_97461302_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:{"label":_vm.label,"show-list":_vm.showList,"max-height":_vm.listMaxHeight,"popover-offset":_vm.popoverOffset,"has-suggestion-list":_vm.hasSuggestionList,"visually-hidden-close-label":_vm.visuallyHiddenCloseLabel,"visually-hidden-close":_vm.visuallyHiddenClose,"content-width":"anchor"},on:{"select":_vm.onComboboxSelect},scopedSlots:_vm._u([{key:"input",fn:function(ref){
20939
+ ;// 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=1ad6269f&
20940
+ var combobox_multi_selectvue_type_template_id_1ad6269f_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:{"label":_vm.label,"show-list":_vm.showList,"max-height":_vm.listMaxHeight,"popover-offset":_vm.popoverOffset,"has-suggestion-list":_vm.hasSuggestionList,"visually-hidden-close-label":_vm.visuallyHiddenCloseLabel,"visually-hidden-close":_vm.visuallyHiddenClose,"content-width":"anchor"},on:{"select":_vm.onComboboxSelect},scopedSlots:_vm._u([{key:"input",fn:function(ref){
20911
20941
  var onInput = ref.onInput;
20912
- return [_c('span',{ref:"inputSlotWrapper",staticClass:"d-ps-relative d-d-block"},[_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,class:['d-mt4', 'd-mx2', 'd-zi-base1'],attrs:{"label-class":['d-chip__label'],"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",attrs:{"aria-label":_vm.label,"label":_vm.labelVisible ? _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",on:{"mousedown":function($event){$event.preventDefault();}}},[(!_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)})}
20913
- var combobox_multi_selectvue_type_template_id_97461302_staticRenderFns = []
20942
+ return [_c('span',{ref:"inputSlotWrapper",staticClass:"d-ps-relative d-d-block"},[_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,class:['d-mt4', 'd-mx2', 'd-zi-base1'],attrs:{"label-class":['d-chip__label'],"close-button-props":{ ariaLabel: 'close' },"size":_vm.CHIP_SIZES[_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",attrs:{"aria-label":_vm.label,"label":_vm.labelVisible ? _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",on:{"mousedown":function($event){$event.preventDefault();}}},[(!_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)})}
20943
+ var combobox_multi_selectvue_type_template_id_1ad6269f_staticRenderFns = []
20914
20944
 
20915
20945
 
20916
20946
  ;// CONCATENATED MODULE: ./recipes/comboboxes/combobox_multi_select/combobox_multi_select_story_constants.js
@@ -21010,6 +21040,16 @@ const MULTI_SELECT_SIZES = {
21010
21040
  SMALL: 'sm',
21011
21041
  DEFAULT: 'md'
21012
21042
  };
21043
+ const CHIP_SIZES = {
21044
+ xs: 'xs',
21045
+ sm: 'xs',
21046
+ md: 'sm'
21047
+ };
21048
+ const CHIP_BOTTOM_POSITION = {
21049
+ xs: 4,
21050
+ sm: 5,
21051
+ md: 5
21052
+ };
21013
21053
  ;// 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_multi_select/combobox_multi_select.vue?vue&type=script&lang=js&
21014
21054
  //
21015
21055
  //
@@ -21310,7 +21350,9 @@ const MULTI_SELECT_SIZES = {
21310
21350
  popoverOffset: [0, 4],
21311
21351
  showValidationMessages: false,
21312
21352
  initialInputPadding: {},
21313
- resizeWindowObserver: null
21353
+ resizeWindowObserver: null,
21354
+ originalInputSize: null,
21355
+ CHIP_SIZES: CHIP_SIZES
21314
21356
  };
21315
21357
  },
21316
21358
 
@@ -21359,6 +21401,7 @@ const MULTI_SELECT_SIZES = {
21359
21401
  async handler() {
21360
21402
  await this.$nextTick();
21361
21403
  this.setInputPadding();
21404
+ this.setChipsPosition();
21362
21405
  this.setInputMinWidth();
21363
21406
  this.checkMaxSelected();
21364
21407
  }
@@ -21368,24 +21411,36 @@ const MULTI_SELECT_SIZES = {
21368
21411
  async label() {
21369
21412
  await this.$nextTick(); // Adjust the chips position if label changed
21370
21413
 
21371
- this.setChipsTopPosition();
21414
+ this.setChipsPosition();
21372
21415
  },
21373
21416
 
21374
21417
  async description() {
21375
21418
  await this.$nextTick(); // Adjust the chips position if description changed
21376
21419
 
21377
- this.setChipsTopPosition();
21378
- }
21420
+ this.setChipsPosition();
21421
+ },
21422
+
21423
+ size: {
21424
+ async handler() {
21425
+ await this.$nextTick();
21426
+ const input = this.getInput();
21427
+ this.revertInputPadding(input);
21428
+ this.originalInputSize = input.getBoundingClientRect().height;
21429
+ this.setInputPadding();
21430
+ },
21379
21431
 
21432
+ immediate: true
21433
+ }
21380
21434
  },
21381
21435
 
21382
21436
  mounted() {
21383
- this.setChipsTopPosition(); // Recalculate chip position and input padding when resizing window
21437
+ this.setChipsPosition(); // Recalculate chip position and input padding when resizing window
21384
21438
 
21385
21439
  this.resizeWindowObserver = new ResizeObserver(() => {
21386
- this.setChipsTopPosition();
21440
+ this.setChipsPosition();
21387
21441
  this.setInputPadding();
21388
- }).observe(document.body);
21442
+ });
21443
+ this.resizeWindowObserver.observe(document.body);
21389
21444
  },
21390
21445
 
21391
21446
  beforeDestroy() {
@@ -21504,48 +21559,31 @@ const MULTI_SELECT_SIZES = {
21504
21559
  this.closeComboboxList();
21505
21560
  },
21506
21561
 
21507
- setChipsTopPosition() {
21508
- // To place the chips in the input box
21509
- // The chip "top" position should be the same line as the input box
21510
- if (!this.$refs.input) {
21511
- return;
21512
- }
21513
-
21514
- const input = this.getInput();
21515
- if (!input) return;
21516
- const inputSlotWrapper = this.$refs.inputSlotWrapper;
21517
- const top = input.getBoundingClientRect().top - inputSlotWrapper.getBoundingClientRect().top;
21562
+ setChipsPosition() {
21518
21563
  const chipsWrapper = this.$refs.chipsWrapper;
21519
- chipsWrapper.style.top = top + 'px';
21564
+ chipsWrapper.style.bottom = `${CHIP_BOTTOM_POSITION[this.size]}px`;
21520
21565
  },
21521
21566
 
21522
21567
  setInputPadding() {
21523
21568
  const lastChip = this.getLastChip();
21524
21569
  const input = this.getInput();
21570
+ const chipsWrapper = this.$refs.chipsWrapper;
21525
21571
  if (!input) return;
21526
-
21527
- if (!lastChip) {
21528
- // Revert padding if no chip
21529
- this.revertInputPadding(input);
21530
- return;
21531
- } // Get the position of the last chip
21572
+ this.revertInputPadding(input);
21573
+ this.popoverOffset = [0, 4];
21574
+ if (!lastChip) return; // Get the position of the last chip
21532
21575
  // The input cursor should be the same "top" as that chip and next besides it
21533
21576
 
21534
-
21535
21577
  const left = lastChip.offsetLeft + this.getFullWidth(lastChip);
21536
- input.style.paddingLeft = left + 'px'; // Chip has vertical margin. We add buffer to top center the input text
21578
+ input.style.paddingLeft = left + 'px'; // Get the chip size minus the 4px padding
21537
21579
 
21538
- const top = lastChip.offsetTop + 3;
21539
- input.style.paddingTop = top + 'px'; // TODO: refresh the tippy.js instance in the popover
21540
- // If the new chip goes to the next line and the input box expands,
21541
- // move the popover down to the next line. Same when chips are removed
21580
+ const chipsSize = chipsWrapper.getBoundingClientRect().height - 4; // Get lastChip offsetTop plus 2px of the input padding.
21542
21581
 
21543
- this.popoverOffset = [0, 4];
21544
- },
21582
+ const top = lastChip.offsetTop + 2; // Add padding to Top only if the chips need more space
21545
21583
 
21546
- getFullWidth(el) {
21547
- const styles = window.getComputedStyle(el);
21548
- return el.offsetWidth + parseInt(styles.marginLeft) + parseInt(styles.marginRight);
21584
+ if (chipsSize > this.originalInputSize) {
21585
+ input.style.paddingTop = `${top}px`;
21586
+ }
21549
21587
  },
21550
21588
 
21551
21589
  revertInputPadding(input) {
@@ -21554,6 +21592,11 @@ const MULTI_SELECT_SIZES = {
21554
21592
  input.style.paddingBottom = '';
21555
21593
  },
21556
21594
 
21595
+ getFullWidth(el) {
21596
+ const styles = window.getComputedStyle(el);
21597
+ return el.offsetWidth + parseInt(styles.marginLeft) + parseInt(styles.marginRight);
21598
+ },
21599
+
21557
21600
  setInputMinWidth() {
21558
21601
  // Ensure the width of the input is "slightly bigger" than the width of a single chip
21559
21602
  const firstChip = this.getFirstChip();
@@ -21593,8 +21636,8 @@ const MULTI_SELECT_SIZES = {
21593
21636
  ;
21594
21637
  var combobox_multi_select_component = normalizeComponent(
21595
21638
  combobox_multi_select_combobox_multi_selectvue_type_script_lang_js_,
21596
- combobox_multi_selectvue_type_template_id_97461302_render,
21597
- combobox_multi_selectvue_type_template_id_97461302_staticRenderFns,
21639
+ combobox_multi_selectvue_type_template_id_1ad6269f_render,
21640
+ combobox_multi_selectvue_type_template_id_1ad6269f_staticRenderFns,
21598
21641
  false,
21599
21642
  null,
21600
21643
  null,