@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.
@@ -3558,9 +3558,9 @@ var notice_content_component = normalizeComponent(
3558
3558
  )
3559
3559
 
3560
3560
  /* harmony default export */ const notice_content = (notice_content_component.exports);
3561
- ;// 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&
3562
- 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)}
3563
- var notice_actionvue_type_template_id_80f1eb74_staticRenderFns = []
3561
+ ;// 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&
3562
+ 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)}
3563
+ var notice_actionvue_type_template_id_6ccb8af0_staticRenderFns = []
3564
3564
 
3565
3565
 
3566
3566
  ;// 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&
@@ -4191,17 +4191,6 @@ var sr_only_close_button_component = normalizeComponent(
4191
4191
  }
4192
4192
 
4193
4193
  },
4194
- watch: {
4195
- $props: {
4196
- immediate: true,
4197
- deep: true,
4198
-
4199
- handler() {
4200
- this.validateProps();
4201
- }
4202
-
4203
- }
4204
- },
4205
4194
 
4206
4195
  created() {
4207
4196
  if (!this.hideClose && !this.closeButtonProps.ariaLabel) {
@@ -4224,12 +4213,6 @@ var sr_only_close_button_component = normalizeComponent(
4224
4213
  methods: {
4225
4214
  close() {
4226
4215
  this.$emit('close');
4227
- },
4228
-
4229
- validateProps() {
4230
- if (this.hideClose && !this.visuallyHiddenClose) {
4231
- console.error('If hideClose prop is true, visuallyHiddenClose and visuallyHiddenCloseLabel props ' + 'need to be set so the component always includes a close button');
4232
- }
4233
4216
  }
4234
4217
 
4235
4218
  }
@@ -4246,8 +4229,8 @@ var sr_only_close_button_component = normalizeComponent(
4246
4229
  ;
4247
4230
  var notice_action_component = normalizeComponent(
4248
4231
  notice_notice_actionvue_type_script_lang_js_,
4249
- notice_actionvue_type_template_id_80f1eb74_render,
4250
- notice_actionvue_type_template_id_80f1eb74_staticRenderFns,
4232
+ notice_actionvue_type_template_id_6ccb8af0_render,
4233
+ notice_actionvue_type_template_id_6ccb8af0_staticRenderFns,
4251
4234
  false,
4252
4235
  null,
4253
4236
  null,
@@ -4279,17 +4262,25 @@ const focusableElementsList = `button,[href],input,select,textarea,details,[tabi
4279
4262
  /* harmony default export */ const modal = ({
4280
4263
  methods: {
4281
4264
  /**
4282
- * set focus to the first focusable element in your component, includes tabindex="-1".
4265
+ * get the first focusable element in your component, includes tabindex="-1".
4283
4266
  * @param {object} el - optional - ref of dom element to trap focus on.
4284
4267
  * will default to the root node of the vue component
4285
4268
  */
4286
- async focusFirstElement(el) {
4269
+ async getFirstFocusableElement(el) {
4287
4270
  await this.$nextTick();
4288
4271
 
4289
4272
  const focusableElements = this._getFocusableElements(el, true);
4290
4273
 
4291
- const elToFocus = this._getFirstFocusElement(focusableElements);
4274
+ return this._getFirstFocusElement(focusableElements);
4275
+ },
4292
4276
 
4277
+ /**
4278
+ * set focus to the first focusable element in your component, includes tabindex="-1".
4279
+ * @param {object} el - optional - ref of dom element to trap focus on.
4280
+ * will default to the root node of the vue component
4281
+ */
4282
+ async focusFirstElement(el) {
4283
+ const elToFocus = this.getFirstFocusableElement(el);
4293
4284
  elToFocus === null || elToFocus === void 0 ? void 0 : elToFocus.focus({
4294
4285
  preventScroll: true
4295
4286
  });
@@ -8000,13 +7991,13 @@ var collapsible_component = normalizeComponent(
8000
7991
  /* harmony default export */ const collapsible = (collapsible_component.exports);
8001
7992
  ;// CONCATENATED MODULE: ./components/collapsible/index.js
8002
7993
 
8003
- ;// 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&
8004
- 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){
7994
+ ;// 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&
7995
+ 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){
8005
7996
  var attrs = ref.attrs;
8006
7997
  return [_vm._t("anchor",null,null,attrs)]}},{key:"content",fn:function(ref){
8007
7998
  var close = ref.close;
8008
7999
  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))}
8009
- var dropdownvue_type_template_id_70cb2bdc_staticRenderFns = []
8000
+ var dropdownvue_type_template_id_5944f754_staticRenderFns = []
8010
8001
 
8011
8002
 
8012
8003
  ;// 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&
@@ -14006,14 +13997,14 @@ const DROPDOWN_PADDING_CLASSES = {
14006
13997
  switch (eventCode) {
14007
13998
  case EVENT_KEYNAMES.up:
14008
13999
  case EVENT_KEYNAMES.arrowup:
14009
- this.onKeyValidation(event, 'onUpKeyPress');
14000
+ this.onUpKeyPress(event);
14010
14001
  event.stopPropagation();
14011
14002
  event.preventDefault();
14012
14003
  break;
14013
14004
 
14014
14005
  case EVENT_KEYNAMES.down:
14015
14006
  case EVENT_KEYNAMES.arrowdown:
14016
- this.onKeyValidation(event, 'onDownKeyPress');
14007
+ this.onDownKeyPress(event);
14017
14008
  event.stopPropagation();
14018
14009
  event.preventDefault();
14019
14010
  break;
@@ -14028,19 +14019,19 @@ const DROPDOWN_PADDING_CLASSES = {
14028
14019
  break;
14029
14020
 
14030
14021
  case EVENT_KEYNAMES.home:
14031
- this.onKeyValidation(event, 'onHomeKeyPress');
14022
+ this.onHomeKeyPress(event);
14032
14023
  event.stopPropagation();
14033
14024
  event.preventDefault();
14034
14025
  break;
14035
14026
 
14036
14027
  case EVENT_KEYNAMES.end:
14037
- this.onKeyValidation(event, 'onEndKeyPress');
14028
+ this.onEndKeyPress(event);
14038
14029
  event.stopPropagation();
14039
14030
  event.preventDefault();
14040
14031
  break;
14041
14032
 
14042
14033
  default:
14043
- this.onKeyValidation(event, 'onKeyPress');
14034
+ this.onKeyPress(event);
14044
14035
  break;
14045
14036
  }
14046
14037
 
@@ -14069,6 +14060,10 @@ const DROPDOWN_PADDING_CLASSES = {
14069
14060
  return ['d-ps-relative', 'd-stack2', 'd-m4', 'd-px0', DROPDOWN_PADDING_CLASSES[this.padding], this.listClass, {
14070
14061
  'd-context-menu-list': this.openOnContext
14071
14062
  }];
14063
+ },
14064
+
14065
+ shouldOpenWithArrowKeys() {
14066
+ return !this.openOnContext;
14072
14067
  }
14073
14068
 
14074
14069
  },
@@ -14172,14 +14167,6 @@ const DROPDOWN_PADDING_CLASSES = {
14172
14167
  e.stopPropagation();
14173
14168
  e.preventDefault();
14174
14169
  return this.onNavigationKey(e.key);
14175
- },
14176
-
14177
- onKeyValidation(e, eventHandler) {
14178
- if (this.open !== null && !this.openOnContext) {
14179
- return;
14180
- }
14181
-
14182
- this[eventHandler](e);
14183
14170
  }
14184
14171
 
14185
14172
  }
@@ -14201,8 +14188,8 @@ var dropdownvue_type_style_index_0_lang_less_ = __webpack_require__(774);
14201
14188
 
14202
14189
  var dropdown_component = normalizeComponent(
14203
14190
  dropdown_dropdownvue_type_script_lang_js_,
14204
- dropdownvue_type_template_id_70cb2bdc_render,
14205
- dropdownvue_type_template_id_70cb2bdc_staticRenderFns,
14191
+ dropdownvue_type_template_id_5944f754_render,
14192
+ dropdownvue_type_template_id_5944f754_staticRenderFns,
14206
14193
  false,
14207
14194
  null,
14208
14195
  null,
@@ -15811,14 +15798,15 @@ var input_group_component = normalizeComponent(
15811
15798
  /* harmony default export */ const input_group_input_group = (input_group_component.exports);
15812
15799
  ;// CONCATENATED MODULE: ./components/input_group/index.js
15813
15800
 
15814
- ;// 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&
15815
- 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:[
15801
+ ;// 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&
15802
+ 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:[
15816
15803
  'd-modal',
15817
15804
  _vm.MODAL_KIND_MODIFIERS[_vm.kind],
15818
15805
  _vm.MODAL_SIZE_MODIFIERS[_vm.size],
15819
15806
  _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:[
15820
15807
  'd-modal__banner',
15821
- _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:[
15808
+ _vm.bannerClass,
15809
+ _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:[
15822
15810
  'd-modal__dialog',
15823
15811
  { 'd-modal__dialog--scrollable': _vm.fixedHeaderFooter },
15824
15812
  _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:[
@@ -15826,7 +15814,7 @@ var modalvue_type_template_id_e9bf0878_render = function () {var _vm=this;var _h
15826
15814
  _vm.contentClass ],attrs:{"data-qa":"dt-modal-copy"}},[_vm._t("default")],2):_c('p',{class:[
15827
15815
  'd-modal__content',
15828
15816
  _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)}
15829
- var modalvue_type_template_id_e9bf0878_staticRenderFns = []
15817
+ var modalvue_type_template_id_a8730b96_staticRenderFns = []
15830
15818
 
15831
15819
 
15832
15820
  ;// CONCATENATED MODULE: ./components/modal/modal_constants.js
@@ -15840,6 +15828,208 @@ const MODAL_SIZE_MODIFIERS = {
15840
15828
  default: '',
15841
15829
  full: 'd-modal--full'
15842
15830
  };
15831
+ const MODAL_BANNER_KINDS = {
15832
+ error: 'd-modal__banner--critical',
15833
+ info: 'd-modal__banner--info',
15834
+ success: 'd-modal__banner--success',
15835
+ warning: 'd-modal__banner--warning',
15836
+ base: 'd-modal__banner--general'
15837
+ };
15838
+ ;// 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&
15839
+ 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)}
15840
+ var noticevue_type_template_id_bdb2f588_staticRenderFns = []
15841
+
15842
+
15843
+ ;// 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/notice/notice.vue?vue&type=script&lang=js&
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
+ //
15880
+ //
15881
+ //
15882
+ //
15883
+
15884
+
15885
+
15886
+
15887
+
15888
+ /**
15889
+ * A notice is an informational and assistive message that appears inline with content.
15890
+ * @see https://dialpad.design/components/notice.html
15891
+ */
15892
+
15893
+ /* harmony default export */ const noticevue_type_script_lang_js_ = ({
15894
+ name: 'DtNotice',
15895
+ components: {
15896
+ DtNoticeIcon: notice_icon,
15897
+ DtNoticeContent: notice_content,
15898
+ DtNoticeAction: notice_action
15899
+ },
15900
+ mixins: [sr_only_close_button],
15901
+ props: {
15902
+ /**
15903
+ * Sets an ID on the title element of the component. Useful for aria-describedby
15904
+ * or aria-labelledby or any other reason you may need an id to refer to the title.
15905
+ */
15906
+ titleId: {
15907
+ type: String,
15908
+ default: undefined
15909
+ },
15910
+
15911
+ /**
15912
+ * Sets an ID on the content element of the component. Useful for aria-describedby
15913
+ * or aria-labelledby or any other reason you may need an id to refer to the content.
15914
+ */
15915
+ contentId: {
15916
+ type: String,
15917
+ default: undefined
15918
+ },
15919
+
15920
+ /**
15921
+ * Title header of the notice. This can be left blank to remove the title from the notice entirely.
15922
+ */
15923
+ title: {
15924
+ type: String,
15925
+ default: ''
15926
+ },
15927
+
15928
+ /**
15929
+ * Provides a role for the notice. 'status' is used to communicate a message. 'alert' is used to communicate an
15930
+ * important message that does not contain any interactive elements. 'alertdialog' is used to communicate an
15931
+ * important message that does contain interactive elements.
15932
+ * @values alert, alertdialog, status
15933
+ */
15934
+ role: {
15935
+ type: String,
15936
+ default: 'status',
15937
+
15938
+ validate(role) {
15939
+ return NOTICE_ROLES.includes(role);
15940
+ }
15941
+
15942
+ },
15943
+
15944
+ /**
15945
+ * Used in scenarios where the message needs to visually dominate the screen.
15946
+ * This will also change the aria role from status to alert.
15947
+ * @values true, false
15948
+ */
15949
+ important: {
15950
+ type: Boolean,
15951
+ default: false
15952
+ },
15953
+
15954
+ /**
15955
+ * Severity level of the notice, sets the icon and background
15956
+ * @values base, error, info, success, warning
15957
+ */
15958
+ kind: {
15959
+ type: String,
15960
+ default: 'base',
15961
+
15962
+ validate(kind) {
15963
+ return NOTICE_KINDS.includes(kind);
15964
+ }
15965
+
15966
+ },
15967
+
15968
+ /**
15969
+ * Props for the notice close button.
15970
+ */
15971
+ closeButtonProps: {
15972
+ type: Object,
15973
+ default: () => ({})
15974
+ },
15975
+
15976
+ /**
15977
+ * Hides the close button from the notice
15978
+ * @values true, false
15979
+ */
15980
+ hideClose: {
15981
+ type: Boolean,
15982
+ default: false
15983
+ }
15984
+ },
15985
+ emits: [
15986
+ /**
15987
+ * Close button click event
15988
+ *
15989
+ * @event close
15990
+ */
15991
+ 'close'],
15992
+ computed: {
15993
+ noticeClass() {
15994
+ const noticeKinds = {
15995
+ error: 'd-notice--error',
15996
+ info: 'd-notice--info',
15997
+ success: 'd-notice--success',
15998
+ warning: 'd-notice--warning',
15999
+ base: 'd-notice--base'
16000
+ };
16001
+ return ['d-notice', noticeKinds[this.kind], {
16002
+ 'd-notice--important': this.important
16003
+ }];
16004
+ }
16005
+
16006
+ }
16007
+ });
16008
+ ;// CONCATENATED MODULE: ./components/notice/notice.vue?vue&type=script&lang=js&
16009
+ /* harmony default export */ const notice_noticevue_type_script_lang_js_ = (noticevue_type_script_lang_js_);
16010
+ ;// CONCATENATED MODULE: ./components/notice/notice.vue
16011
+
16012
+
16013
+
16014
+
16015
+
16016
+ /* normalize component */
16017
+ ;
16018
+ var notice_component = normalizeComponent(
16019
+ notice_noticevue_type_script_lang_js_,
16020
+ noticevue_type_template_id_bdb2f588_render,
16021
+ noticevue_type_template_id_bdb2f588_staticRenderFns,
16022
+ false,
16023
+ null,
16024
+ null,
16025
+ null
16026
+
16027
+ )
16028
+
16029
+ /* harmony default export */ const notice = (notice_component.exports);
16030
+ ;// CONCATENATED MODULE: ./components/notice/index.js
16031
+
16032
+
15843
16033
  ;// 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/modal/modal.vue?vue&type=script&lang=js&
15844
16034
  //
15845
16035
  //
@@ -15956,6 +16146,8 @@ const MODAL_SIZE_MODIFIERS = {
15956
16146
  //
15957
16147
  //
15958
16148
  //
16149
+ //
16150
+
15959
16151
 
15960
16152
 
15961
16153
 
@@ -16097,6 +16289,20 @@ const MODAL_SIZE_MODIFIERS = {
16097
16289
  default: ''
16098
16290
  },
16099
16291
 
16292
+ /**
16293
+ * Sets the color of the banner.
16294
+ * @values base, error, info, success, warning
16295
+ */
16296
+ bannerKind: {
16297
+ type: String,
16298
+ default: 'warning',
16299
+
16300
+ validate(kind) {
16301
+ return NOTICE_KINDS.includes(kind);
16302
+ }
16303
+
16304
+ },
16305
+
16100
16306
  /**
16101
16307
  * Additional class name for the banner element within the modal.
16102
16308
  * Can accept String, Object, and Array, i.e. has the
@@ -16139,6 +16345,7 @@ const MODAL_SIZE_MODIFIERS = {
16139
16345
  return {
16140
16346
  MODAL_KIND_MODIFIERS: MODAL_KIND_MODIFIERS,
16141
16347
  MODAL_SIZE_MODIFIERS: MODAL_SIZE_MODIFIERS,
16348
+ MODAL_BANNER_KINDS: MODAL_BANNER_KINDS,
16142
16349
  EVENT_KEYNAMES: EVENT_KEYNAMES
16143
16350
  };
16144
16351
  },
@@ -16176,6 +16383,10 @@ const MODAL_SIZE_MODIFIERS = {
16176
16383
 
16177
16384
  hasFooterSlot() {
16178
16385
  return !!this.$slots.footer;
16386
+ },
16387
+
16388
+ bannerKindClass() {
16389
+ return MODAL_BANNER_KINDS[this.bannerKind];
16179
16390
  }
16180
16391
 
16181
16392
  },
@@ -16243,8 +16454,8 @@ const MODAL_SIZE_MODIFIERS = {
16243
16454
  ;
16244
16455
  var modal_component = normalizeComponent(
16245
16456
  modal_modalvue_type_script_lang_js_,
16246
- modalvue_type_template_id_e9bf0878_render,
16247
- modalvue_type_template_id_e9bf0878_staticRenderFns,
16457
+ modalvue_type_template_id_a8730b96_render,
16458
+ modalvue_type_template_id_a8730b96_staticRenderFns,
16248
16459
  false,
16249
16460
  null,
16250
16461
  null,
@@ -16542,201 +16753,6 @@ var list_item_group_component = normalizeComponent(
16542
16753
  ;// CONCATENATED MODULE: ./components/list_item_group/index.js
16543
16754
 
16544
16755
 
16545
- ;// 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&
16546
- 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)}
16547
- var noticevue_type_template_id_bdb2f588_staticRenderFns = []
16548
-
16549
-
16550
- ;// 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/notice/notice.vue?vue&type=script&lang=js&
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
- //
16587
- //
16588
- //
16589
- //
16590
-
16591
-
16592
-
16593
-
16594
-
16595
- /**
16596
- * A notice is an informational and assistive message that appears inline with content.
16597
- * @see https://dialpad.design/components/notice.html
16598
- */
16599
-
16600
- /* harmony default export */ const noticevue_type_script_lang_js_ = ({
16601
- name: 'DtNotice',
16602
- components: {
16603
- DtNoticeIcon: notice_icon,
16604
- DtNoticeContent: notice_content,
16605
- DtNoticeAction: notice_action
16606
- },
16607
- mixins: [sr_only_close_button],
16608
- props: {
16609
- /**
16610
- * Sets an ID on the title element of the component. Useful for aria-describedby
16611
- * or aria-labelledby or any other reason you may need an id to refer to the title.
16612
- */
16613
- titleId: {
16614
- type: String,
16615
- default: undefined
16616
- },
16617
-
16618
- /**
16619
- * Sets an ID on the content element of the component. Useful for aria-describedby
16620
- * or aria-labelledby or any other reason you may need an id to refer to the content.
16621
- */
16622
- contentId: {
16623
- type: String,
16624
- default: undefined
16625
- },
16626
-
16627
- /**
16628
- * Title header of the notice. This can be left blank to remove the title from the notice entirely.
16629
- */
16630
- title: {
16631
- type: String,
16632
- default: ''
16633
- },
16634
-
16635
- /**
16636
- * Provides a role for the notice. 'status' is used to communicate a message. 'alert' is used to communicate an
16637
- * important message that does not contain any interactive elements. 'alertdialog' is used to communicate an
16638
- * important message that does contain interactive elements.
16639
- * @values alert, alertdialog, status
16640
- */
16641
- role: {
16642
- type: String,
16643
- default: 'status',
16644
-
16645
- validate(role) {
16646
- return NOTICE_ROLES.includes(role);
16647
- }
16648
-
16649
- },
16650
-
16651
- /**
16652
- * Used in scenarios where the message needs to visually dominate the screen.
16653
- * This will also change the aria role from status to alert.
16654
- * @values true, false
16655
- */
16656
- important: {
16657
- type: Boolean,
16658
- default: false
16659
- },
16660
-
16661
- /**
16662
- * Severity level of the notice, sets the icon and background
16663
- * @values base, error, info, success, warning
16664
- */
16665
- kind: {
16666
- type: String,
16667
- default: 'base',
16668
-
16669
- validate(kind) {
16670
- return NOTICE_KINDS.includes(kind);
16671
- }
16672
-
16673
- },
16674
-
16675
- /**
16676
- * Props for the notice close button.
16677
- */
16678
- closeButtonProps: {
16679
- type: Object,
16680
- default: () => ({})
16681
- },
16682
-
16683
- /**
16684
- * Hides the close button from the notice
16685
- * @values true, false
16686
- */
16687
- hideClose: {
16688
- type: Boolean,
16689
- default: false
16690
- }
16691
- },
16692
- emits: [
16693
- /**
16694
- * Close button click event
16695
- *
16696
- * @event close
16697
- */
16698
- 'close'],
16699
- computed: {
16700
- noticeClass() {
16701
- const noticeKinds = {
16702
- error: 'd-notice--error',
16703
- info: 'd-notice--info',
16704
- success: 'd-notice--success',
16705
- warning: 'd-notice--warning',
16706
- base: 'd-notice--base'
16707
- };
16708
- return ['d-notice', noticeKinds[this.kind], {
16709
- 'd-notice--important': this.important
16710
- }];
16711
- }
16712
-
16713
- }
16714
- });
16715
- ;// CONCATENATED MODULE: ./components/notice/notice.vue?vue&type=script&lang=js&
16716
- /* harmony default export */ const notice_noticevue_type_script_lang_js_ = (noticevue_type_script_lang_js_);
16717
- ;// CONCATENATED MODULE: ./components/notice/notice.vue
16718
-
16719
-
16720
-
16721
-
16722
-
16723
- /* normalize component */
16724
- ;
16725
- var notice_component = normalizeComponent(
16726
- notice_noticevue_type_script_lang_js_,
16727
- noticevue_type_template_id_bdb2f588_render,
16728
- noticevue_type_template_id_bdb2f588_staticRenderFns,
16729
- false,
16730
- null,
16731
- null,
16732
- null
16733
-
16734
- )
16735
-
16736
- /* harmony default export */ const notice = (notice_component.exports);
16737
- ;// CONCATENATED MODULE: ./components/notice/index.js
16738
-
16739
-
16740
16756
  ;// 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&
16741
16757
  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)}
16742
16758
  var paginationvue_type_template_id_8a1dbe50_staticRenderFns = []
@@ -17803,13 +17819,13 @@ var tab_component = normalizeComponent(
17803
17819
  )
17804
17820
 
17805
17821
  /* harmony default export */ const tab = (tab_component.exports);
17806
- ;// 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&
17807
- 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:[
17822
+ ;// 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&
17823
+ 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:[
17808
17824
  {
17809
17825
  'd-d-none': _vm.hidePanel,
17810
17826
  },
17811
- _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)}
17812
- var tab_panelvue_type_template_id_78c45854_staticRenderFns = []
17827
+ _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)}
17828
+ var tab_panelvue_type_template_id_660b90ba_staticRenderFns = []
17813
17829
 
17814
17830
 
17815
17831
  ;// 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/tabs/tab_panel.vue?vue&type=script&lang=js&
@@ -17838,8 +17854,10 @@ var tab_panelvue_type_template_id_78c45854_staticRenderFns = []
17838
17854
  * Tabs allow users to navigation between grouped content in different views while within the same page context.
17839
17855
  * @see https://dialpad.design/components/tabs.html
17840
17856
  */
17857
+
17841
17858
  /* harmony default export */ const tab_panelvue_type_script_lang_js_ = ({
17842
17859
  name: 'DtTabPanel',
17860
+ mixins: [modal],
17843
17861
  inject: ['groupContext'],
17844
17862
  props: {
17845
17863
  /**
@@ -17875,12 +17893,24 @@ var tab_panelvue_type_template_id_78c45854_staticRenderFns = []
17875
17893
  default: ''
17876
17894
  }
17877
17895
  },
17896
+
17897
+ data() {
17898
+ return {
17899
+ isFirstElementFocusable: false
17900
+ };
17901
+ },
17902
+
17878
17903
  computed: {
17879
17904
  hidePanel() {
17880
17905
  return this.groupContext.selected !== this.id || this.hidden;
17881
17906
  }
17882
17907
 
17908
+ },
17909
+
17910
+ async mounted() {
17911
+ this.isFirstElementFocusable = !!(await this.getFirstFocusableElement(this.$el));
17883
17912
  }
17913
+
17884
17914
  });
17885
17915
  ;// CONCATENATED MODULE: ./components/tabs/tab_panel.vue?vue&type=script&lang=js&
17886
17916
  /* harmony default export */ const tabs_tab_panelvue_type_script_lang_js_ = (tab_panelvue_type_script_lang_js_);
@@ -17894,8 +17924,8 @@ var tab_panelvue_type_template_id_78c45854_staticRenderFns = []
17894
17924
  ;
17895
17925
  var tab_panel_component = normalizeComponent(
17896
17926
  tabs_tab_panelvue_type_script_lang_js_,
17897
- tab_panelvue_type_template_id_78c45854_render,
17898
- tab_panelvue_type_template_id_78c45854_staticRenderFns,
17927
+ tab_panelvue_type_template_id_660b90ba_render,
17928
+ tab_panelvue_type_template_id_660b90ba_staticRenderFns,
17899
17929
  false,
17900
17930
  null,
17901
17931
  null,
@@ -20916,11 +20946,11 @@ var combobox_with_popover_component = normalizeComponent(
20916
20946
  /* harmony default export */ const combobox_with_popover = (combobox_with_popover_component.exports);
20917
20947
  ;// CONCATENATED MODULE: ./recipes/comboboxes/combobox_with_popover/index.js
20918
20948
 
20919
- ;// 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&
20920
- 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){
20949
+ ;// 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&
20950
+ 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){
20921
20951
  var onInput = ref.onInput;
20922
- 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)})}
20923
- var combobox_multi_selectvue_type_template_id_97461302_staticRenderFns = []
20952
+ 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)})}
20953
+ var combobox_multi_selectvue_type_template_id_1ad6269f_staticRenderFns = []
20924
20954
 
20925
20955
 
20926
20956
  ;// CONCATENATED MODULE: ./recipes/comboboxes/combobox_multi_select/combobox_multi_select_story_constants.js
@@ -21020,6 +21050,16 @@ const MULTI_SELECT_SIZES = {
21020
21050
  SMALL: 'sm',
21021
21051
  DEFAULT: 'md'
21022
21052
  };
21053
+ const CHIP_SIZES = {
21054
+ xs: 'xs',
21055
+ sm: 'xs',
21056
+ md: 'sm'
21057
+ };
21058
+ const CHIP_BOTTOM_POSITION = {
21059
+ xs: 4,
21060
+ sm: 5,
21061
+ md: 5
21062
+ };
21023
21063
  ;// 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_multi_select/combobox_multi_select.vue?vue&type=script&lang=js&
21024
21064
  //
21025
21065
  //
@@ -21320,7 +21360,9 @@ const MULTI_SELECT_SIZES = {
21320
21360
  popoverOffset: [0, 4],
21321
21361
  showValidationMessages: false,
21322
21362
  initialInputPadding: {},
21323
- resizeWindowObserver: null
21363
+ resizeWindowObserver: null,
21364
+ originalInputSize: null,
21365
+ CHIP_SIZES: CHIP_SIZES
21324
21366
  };
21325
21367
  },
21326
21368
 
@@ -21369,6 +21411,7 @@ const MULTI_SELECT_SIZES = {
21369
21411
  async handler() {
21370
21412
  await this.$nextTick();
21371
21413
  this.setInputPadding();
21414
+ this.setChipsPosition();
21372
21415
  this.setInputMinWidth();
21373
21416
  this.checkMaxSelected();
21374
21417
  }
@@ -21378,24 +21421,36 @@ const MULTI_SELECT_SIZES = {
21378
21421
  async label() {
21379
21422
  await this.$nextTick(); // Adjust the chips position if label changed
21380
21423
 
21381
- this.setChipsTopPosition();
21424
+ this.setChipsPosition();
21382
21425
  },
21383
21426
 
21384
21427
  async description() {
21385
21428
  await this.$nextTick(); // Adjust the chips position if description changed
21386
21429
 
21387
- this.setChipsTopPosition();
21388
- }
21430
+ this.setChipsPosition();
21431
+ },
21432
+
21433
+ size: {
21434
+ async handler() {
21435
+ await this.$nextTick();
21436
+ const input = this.getInput();
21437
+ this.revertInputPadding(input);
21438
+ this.originalInputSize = input.getBoundingClientRect().height;
21439
+ this.setInputPadding();
21440
+ },
21389
21441
 
21442
+ immediate: true
21443
+ }
21390
21444
  },
21391
21445
 
21392
21446
  mounted() {
21393
- this.setChipsTopPosition(); // Recalculate chip position and input padding when resizing window
21447
+ this.setChipsPosition(); // Recalculate chip position and input padding when resizing window
21394
21448
 
21395
21449
  this.resizeWindowObserver = new ResizeObserver(() => {
21396
- this.setChipsTopPosition();
21450
+ this.setChipsPosition();
21397
21451
  this.setInputPadding();
21398
- }).observe(document.body);
21452
+ });
21453
+ this.resizeWindowObserver.observe(document.body);
21399
21454
  },
21400
21455
 
21401
21456
  beforeDestroy() {
@@ -21514,48 +21569,31 @@ const MULTI_SELECT_SIZES = {
21514
21569
  this.closeComboboxList();
21515
21570
  },
21516
21571
 
21517
- setChipsTopPosition() {
21518
- // To place the chips in the input box
21519
- // The chip "top" position should be the same line as the input box
21520
- if (!this.$refs.input) {
21521
- return;
21522
- }
21523
-
21524
- const input = this.getInput();
21525
- if (!input) return;
21526
- const inputSlotWrapper = this.$refs.inputSlotWrapper;
21527
- const top = input.getBoundingClientRect().top - inputSlotWrapper.getBoundingClientRect().top;
21572
+ setChipsPosition() {
21528
21573
  const chipsWrapper = this.$refs.chipsWrapper;
21529
- chipsWrapper.style.top = top + 'px';
21574
+ chipsWrapper.style.bottom = `${CHIP_BOTTOM_POSITION[this.size]}px`;
21530
21575
  },
21531
21576
 
21532
21577
  setInputPadding() {
21533
21578
  const lastChip = this.getLastChip();
21534
21579
  const input = this.getInput();
21580
+ const chipsWrapper = this.$refs.chipsWrapper;
21535
21581
  if (!input) return;
21536
-
21537
- if (!lastChip) {
21538
- // Revert padding if no chip
21539
- this.revertInputPadding(input);
21540
- return;
21541
- } // Get the position of the last chip
21582
+ this.revertInputPadding(input);
21583
+ this.popoverOffset = [0, 4];
21584
+ if (!lastChip) return; // Get the position of the last chip
21542
21585
  // The input cursor should be the same "top" as that chip and next besides it
21543
21586
 
21544
-
21545
21587
  const left = lastChip.offsetLeft + this.getFullWidth(lastChip);
21546
- input.style.paddingLeft = left + 'px'; // Chip has vertical margin. We add buffer to top center the input text
21588
+ input.style.paddingLeft = left + 'px'; // Get the chip size minus the 4px padding
21547
21589
 
21548
- const top = lastChip.offsetTop + 3;
21549
- input.style.paddingTop = top + 'px'; // TODO: refresh the tippy.js instance in the popover
21550
- // If the new chip goes to the next line and the input box expands,
21551
- // move the popover down to the next line. Same when chips are removed
21590
+ const chipsSize = chipsWrapper.getBoundingClientRect().height - 4; // Get lastChip offsetTop plus 2px of the input padding.
21552
21591
 
21553
- this.popoverOffset = [0, 4];
21554
- },
21592
+ const top = lastChip.offsetTop + 2; // Add padding to Top only if the chips need more space
21555
21593
 
21556
- getFullWidth(el) {
21557
- const styles = window.getComputedStyle(el);
21558
- return el.offsetWidth + parseInt(styles.marginLeft) + parseInt(styles.marginRight);
21594
+ if (chipsSize > this.originalInputSize) {
21595
+ input.style.paddingTop = `${top}px`;
21596
+ }
21559
21597
  },
21560
21598
 
21561
21599
  revertInputPadding(input) {
@@ -21564,6 +21602,11 @@ const MULTI_SELECT_SIZES = {
21564
21602
  input.style.paddingBottom = '';
21565
21603
  },
21566
21604
 
21605
+ getFullWidth(el) {
21606
+ const styles = window.getComputedStyle(el);
21607
+ return el.offsetWidth + parseInt(styles.marginLeft) + parseInt(styles.marginRight);
21608
+ },
21609
+
21567
21610
  setInputMinWidth() {
21568
21611
  // Ensure the width of the input is "slightly bigger" than the width of a single chip
21569
21612
  const firstChip = this.getFirstChip();
@@ -21603,8 +21646,8 @@ const MULTI_SELECT_SIZES = {
21603
21646
  ;
21604
21647
  var combobox_multi_select_component = normalizeComponent(
21605
21648
  combobox_multi_select_combobox_multi_selectvue_type_script_lang_js_,
21606
- combobox_multi_selectvue_type_template_id_97461302_render,
21607
- combobox_multi_selectvue_type_template_id_97461302_staticRenderFns,
21649
+ combobox_multi_selectvue_type_template_id_1ad6269f_render,
21650
+ combobox_multi_selectvue_type_template_id_1ad6269f_staticRenderFns,
21608
21651
  false,
21609
21652
  null,
21610
21653
  null,