q2-tecton-elements 1.10.2 → 1.10.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/dist/cjs/click-elsewhere.cjs.entry.js +1 -1
  2. package/dist/cjs/{icons-fa5f4367.js → icons-4595ee47.js} +311 -2
  3. package/dist/cjs/{index-6b2c271e.js → index-c2e53804.js} +19 -0
  4. package/dist/cjs/{index-14348270.js → index-f4153f5a.js} +18 -4
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/q2-avatar.cjs.entry.js +3 -3
  7. package/dist/cjs/q2-btn_2.cjs.entry.js +3 -3
  8. package/dist/cjs/q2-calendar.cjs.entry.js +7 -3
  9. package/dist/cjs/q2-carousel-pane.cjs.entry.js +2 -2
  10. package/dist/cjs/q2-carousel.cjs.entry.js +2 -2
  11. package/dist/cjs/q2-checkbox-group.cjs.entry.js +2 -2
  12. package/dist/cjs/q2-checkbox.cjs.entry.js +2 -2
  13. package/dist/cjs/q2-dropdown-item.cjs.entry.js +2 -2
  14. package/dist/cjs/q2-dropdown.cjs.entry.js +2 -2
  15. package/dist/cjs/q2-editable-field.cjs.entry.js +2 -2
  16. package/dist/cjs/q2-icon.cjs.entry.js +3 -3
  17. package/dist/cjs/q2-input.cjs.entry.js +3 -3
  18. package/dist/cjs/q2-loading-element.cjs.entry.js +2 -2
  19. package/dist/cjs/q2-loc.cjs.entry.js +2 -2
  20. package/dist/cjs/q2-message.cjs.entry.js +21 -3
  21. package/dist/cjs/q2-optgroup.cjs.entry.js +2 -2
  22. package/dist/cjs/q2-option.cjs.entry.js +1 -1
  23. package/dist/cjs/q2-radio-group.cjs.entry.js +8 -4
  24. package/dist/cjs/q2-radio.cjs.entry.js +2 -2
  25. package/dist/cjs/q2-section.cjs.entry.js +3 -9
  26. package/dist/cjs/q2-select.cjs.entry.js +2 -2
  27. package/dist/cjs/q2-stepper-pane.cjs.entry.js +2 -2
  28. package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
  29. package/dist/cjs/q2-tab-container.cjs.entry.js +85 -115
  30. package/dist/cjs/q2-tab-pane.cjs.entry.js +1 -1
  31. package/dist/cjs/q2-tecton-elements.cjs.js +2 -2
  32. package/dist/cjs/q2-textarea.cjs.entry.js +2 -2
  33. package/dist/cjs/{shapes-a7595d72.js → shapes-086c0365.js} +1 -1
  34. package/dist/cjs/tecton-tab-pane.cjs.entry.js +12 -1
  35. package/dist/collection/components/q2-avatar/index.js +2 -2
  36. package/dist/collection/components/q2-calendar/index.js +5 -1
  37. package/dist/collection/components/q2-icon/icons.js +310 -1
  38. package/dist/collection/components/q2-input/styles.css +5 -4
  39. package/dist/collection/components/q2-message/index.js +48 -8
  40. package/dist/collection/components/q2-message/styles.css +68 -75
  41. package/dist/collection/components/q2-radio-group/index.js +7 -3
  42. package/dist/collection/components/q2-radio-group/styles.css +3 -0
  43. package/dist/collection/components/q2-section/index.js +1 -7
  44. package/dist/collection/components/q2-tab-container/index.js +97 -125
  45. package/dist/collection/components/q2-tab-container/styles.css +118 -98
  46. package/dist/collection/components/tecton-tab-pane/index.js +11 -0
  47. package/dist/collection/utils/index.js +9 -3
  48. package/dist/esm/click-elsewhere.entry.js +1 -1
  49. package/dist/esm/{icons-17612675.js → icons-3ee662ea.js} +311 -2
  50. package/dist/esm/{index-da24669a.js → index-476b86cc.js} +17 -5
  51. package/dist/esm/{index-5fa3e016.js → index-be8376c0.js} +19 -0
  52. package/dist/esm/loader.js +2 -2
  53. package/dist/esm/q2-avatar.entry.js +3 -3
  54. package/dist/esm/q2-btn_2.entry.js +3 -3
  55. package/dist/esm/q2-calendar.entry.js +7 -3
  56. package/dist/esm/q2-carousel-pane.entry.js +2 -2
  57. package/dist/esm/q2-carousel.entry.js +2 -2
  58. package/dist/esm/q2-checkbox-group.entry.js +2 -2
  59. package/dist/esm/q2-checkbox.entry.js +2 -2
  60. package/dist/esm/q2-dropdown-item.entry.js +2 -2
  61. package/dist/esm/q2-dropdown.entry.js +2 -2
  62. package/dist/esm/q2-editable-field.entry.js +2 -2
  63. package/dist/esm/q2-icon.entry.js +3 -3
  64. package/dist/esm/q2-input.entry.js +3 -3
  65. package/dist/esm/q2-loading-element.entry.js +2 -2
  66. package/dist/esm/q2-loc.entry.js +2 -2
  67. package/dist/esm/q2-message.entry.js +21 -3
  68. package/dist/esm/q2-optgroup.entry.js +2 -2
  69. package/dist/esm/q2-option.entry.js +1 -1
  70. package/dist/esm/q2-radio-group.entry.js +8 -4
  71. package/dist/esm/q2-radio.entry.js +2 -2
  72. package/dist/esm/q2-section.entry.js +3 -9
  73. package/dist/esm/q2-select.entry.js +2 -2
  74. package/dist/esm/q2-stepper-pane.entry.js +2 -2
  75. package/dist/esm/q2-stepper.entry.js +2 -2
  76. package/dist/esm/q2-tab-container.entry.js +85 -115
  77. package/dist/esm/q2-tab-pane.entry.js +1 -1
  78. package/dist/esm/q2-tecton-elements.js +2 -2
  79. package/dist/esm/q2-textarea.entry.js +2 -2
  80. package/dist/esm/{shapes-073c5aad.js → shapes-81c11dfe.js} +1 -1
  81. package/dist/esm/tecton-tab-pane.entry.js +12 -1
  82. package/dist/q2-tecton-elements/{p-c92e3bc2.entry.js → p-01e00610.entry.js} +1 -1
  83. package/dist/q2-tecton-elements/p-080839ed.js +1 -0
  84. package/dist/q2-tecton-elements/{p-576509e6.entry.js → p-1fc4e6f6.entry.js} +1 -1
  85. package/dist/q2-tecton-elements/{p-6f570344.js → p-25a5f691.js} +1 -1
  86. package/dist/q2-tecton-elements/p-27353237.entry.js +1 -0
  87. package/dist/q2-tecton-elements/{p-2c2a5d58.entry.js → p-3e100450.entry.js} +1 -1
  88. package/dist/q2-tecton-elements/{p-7520656d.entry.js → p-428d15fd.entry.js} +1 -1
  89. package/dist/q2-tecton-elements/{p-3f2590c0.entry.js → p-4830affe.entry.js} +1 -1
  90. package/dist/q2-tecton-elements/{p-64eef8d1.entry.js → p-48fc317d.entry.js} +1 -1
  91. package/dist/q2-tecton-elements/{p-aaa55918.js → p-4cd00f1a.js} +1 -1
  92. package/dist/q2-tecton-elements/{p-3b80823a.entry.js → p-5222b792.entry.js} +1 -1
  93. package/dist/q2-tecton-elements/p-5469c1e9.entry.js +1 -0
  94. package/dist/q2-tecton-elements/{p-82b24667.entry.js → p-61c0e5fd.entry.js} +1 -1
  95. package/dist/q2-tecton-elements/{p-37d281b7.entry.js → p-74c1a311.entry.js} +1 -1
  96. package/dist/q2-tecton-elements/{p-65894494.entry.js → p-784af485.entry.js} +1 -1
  97. package/dist/q2-tecton-elements/{p-e3a27b97.entry.js → p-7c99a58b.entry.js} +1 -1
  98. package/dist/q2-tecton-elements/p-7f74b629.entry.js +1 -0
  99. package/dist/q2-tecton-elements/{p-ebee91e2.entry.js → p-831a461f.entry.js} +1 -1
  100. package/dist/q2-tecton-elements/{p-905a22d5.entry.js → p-84c05db6.entry.js} +1 -1
  101. package/dist/q2-tecton-elements/{p-2f2bbed9.entry.js → p-84c52d3b.entry.js} +2 -2
  102. package/dist/q2-tecton-elements/{p-dd33b297.entry.js → p-9024859f.entry.js} +1 -1
  103. package/dist/q2-tecton-elements/{p-c14e0622.entry.js → p-997e4c7e.entry.js} +1 -1
  104. package/dist/q2-tecton-elements/{p-7c06467f.entry.js → p-a166b9a6.entry.js} +1 -1
  105. package/dist/q2-tecton-elements/p-a224bc9c.entry.js +1 -0
  106. package/dist/q2-tecton-elements/{p-891ca6f8.entry.js → p-a9bdd814.entry.js} +1 -1
  107. package/dist/q2-tecton-elements/{p-fa6e46e2.js → p-c90a6016.js} +1 -1
  108. package/dist/q2-tecton-elements/{p-86116f5c.entry.js → p-d1d040ef.entry.js} +1 -1
  109. package/dist/q2-tecton-elements/{p-8b4f6d3f.entry.js → p-d893fcf2.entry.js} +1 -1
  110. package/dist/q2-tecton-elements/{p-4d283b84.entry.js → p-da7cca07.entry.js} +1 -1
  111. package/dist/q2-tecton-elements/p-df182f61.entry.js +1 -0
  112. package/dist/q2-tecton-elements/p-f17761da.entry.js +1 -0
  113. package/dist/q2-tecton-elements/{p-5289f040.entry.js → p-f5e074f8.entry.js} +1 -1
  114. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  115. package/dist/types/components/q2-calendar/index.d.ts +1 -1
  116. package/dist/types/components/q2-message/index.d.ts +6 -2
  117. package/dist/types/components/q2-radio-group/index.d.ts +1 -1
  118. package/dist/types/components/q2-section/index.d.ts +0 -1
  119. package/dist/types/components/q2-tab-container/index.d.ts +11 -16
  120. package/dist/types/components/tecton-tab-pane/index.d.ts +1 -0
  121. package/dist/types/components.d.ts +7 -6
  122. package/dist/types/utils/index.d.ts +2 -0
  123. package/package.json +2 -2
  124. package/dist/q2-tecton-elements/p-076b95fd.entry.js +0 -1
  125. package/dist/q2-tecton-elements/p-2a28baa9.entry.js +0 -1
  126. package/dist/q2-tecton-elements/p-6ed006a7.entry.js +0 -1
  127. package/dist/q2-tecton-elements/p-8e863fbc.js +0 -1
  128. package/dist/q2-tecton-elements/p-98bb1355.entry.js +0 -1
  129. package/dist/q2-tecton-elements/p-9b420e22.entry.js +0 -1
  130. package/dist/q2-tecton-elements/p-d0d605dc.entry.js +0 -1
@@ -2,10 +2,10 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index$1 = require('./index-6b2c271e.js');
6
- const index = require('./index-14348270.js');
5
+ const index$1 = require('./index-c2e53804.js');
6
+ const index = require('./index-f4153f5a.js');
7
7
 
8
- const stylesCss = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-global-focus)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}.tab-container{position:relative;display:flex;flex-direction:column}.tab-list{padding:0;display:flex;margin:0;list-style:none;border-bottom:1px solid\n var(--tct-tab-container-border-color, var(--tct-gray-11, var(--t-gray-11, var(--tct-gray-l1, var(--app-gray-l1, #cccccc)))));white-space:nowrap;overflow-x:hidden;align-items:center}.tab-list li.nav{position:absolute;height:44px;width:46px}.tab-list li.nav-left{left:-15px;background:linear-gradient(to right, var(--tct-section-bg, var(--t-section-bg, #ffffff)) 60%, rgba(255,255,255,0))}.tab-list li.nav-right{right:-15px;background:linear-gradient(to left, var(--tct-section-bg, var(--t-section-bg, #ffffff)) 60%, rgba(255,255,255,0))}.tab-list li.nav .arrow-container{display:flex;justify-content:center;align-items:center;height:inherit;width:inherit;cursor:pointer}.tab-list li.nav .arrow-container a{padding:0;margin:0;height:inherit;width:inherit;border-bottom:0;display:flex;align-items:center;justify-content:center}.tab-list li.nav .arrow-container a q2-icon{width:19px;height:19px}.tab-list a{width:var(--tct-tab-hover-width, var(--t-tab-hover-width, 100%));text-align:center;text-decoration:none;padding:var(--tct-scale-2, var(--app-scale-2, 10px));margin:var(--tct-scale-1, var(--app-scale-1, 5px)) var(--tct-scale-1, var(--app-scale-1, 5px))\n 0;color:var(--tct-tab-inactive-color, var(--t-tab-inactive, inherit));font-size:var(--tct-tab-font-size, var(--t-tab-font-size, 17px));border-bottom:3px solid transparent;display:block;transition:color var(--tct-tween-2, var(--app-tween-2, 0.4s ease)),\n border-color var(--tct-tween-1, var(--app-tween-1, 0.2s ease))}:host([type='section']) .tab-list a{font-size:inherit;padding:var(--tct-scale-2, var(--app-scale-2, 10px))\n var(--tct-scale-1, var(--app-scale-1, 5px))}@media screen and (max-width: 767px){.tab-list a{font-size:inherit;padding:var(--tct-scale-2, var(--app-scale-2, 10px))\n var(--tct-scale-1, var(--app-scale-1, 5px))}}@media print{.tab-list.no-print{display:none}}.tab-list a:hover{color:var(--tct-tab-active-color, var(--t-tab-active, #2e2e2e));background-color:var(--tct-tab-hover-bg-color, var(--t-tab-hover-bg-color, inherit));width:var(--tct-tab-hover-width, var(--t-tab-hover-width, 100%))}.tab-list a[aria-selected='true']{color:var(--tct-tab-active-color, var(--t-tab-active, #2e2e2e));border-color:currentColor;width:var(--tct-tab-active-width, var(--t-tab-active-width, 100%));background-color:var(--tct-tab-active-bg-color, var(--t-tab-active-bg-color, inherit))}:host([color='alt']) .tab-list a{color:var(--tct-tab-alt-inactive-color, var(--t-tab-alt-inactive, inherit))}:host([color='alt']) .tab-list a:hover,:host([color='alt']) .tab-list a[aria-selected='true']{color:var(--tct-tab-alt-active-color, var(--t-tab-alt-active, inherit))}.tab-content{padding:var(--tct-scale-2, var(--app-scale-2, 10px)) 0}.tab-content:focus{outline:none;box-shadow:none}";
8
+ const stylesCss = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-global-focus)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}:host{display:block;position:relative}button{cursor:pointer;margin:0}.tab-container{position:relative}ul{--comp-container-padding:var(--tct-scale-1, var(--app-scale-1, 5px)) var(--tct-scale-1, var(--app-scale-1, 5px)) 0;padding:var(--tct-tab-container-padding, var(--t-tab-container-padding, var(--comp-container-padding)));display:flex;gap:var(--tct-tab-gap, var(--t-tab-gap, var(--tct-scale-1, var(--app-scale-1, 5px))));list-style:none;border-bottom:1px solid var(--tct-tab-container-border-color, var(--t-tab-container-border-color, var(--tct-gray-11, var(--t-gray-11, var(--tct-gray-l1, var(--app-gray-l1, #cccccc))))));overflow-x:auto;align-items:center;scrollbar-width:none;scrollbar-color:transparent}ul::-webkit-scrollbar{width:0;height:0}ul::-webkit-scrollbar-thumb{background:transparent}ul::-webkit-scrollbar-track{background:transparent}@media print{ul.no-print{display:none}}li{flex:0 0 auto}li button{background:var(--tct-tab-inactive-bg-color, var(--t-tab-inactive-bg-color, transparent));border-width:var(--tct-tab-inactive-border-width, var(--t-tab-inactive-border-width, 0 0 3px 0));border-color:var(--tct-tab-inactive-border-color, var(--t-tab-inactive-border-color, transparent));border-style:var(--tct-tab-inactive-border-style, var(--t-tab-inactive-border-style, solid));border-radius:var(--tct-tab-border-radius, var(--t-tab-border-radius, 0));width:var(--tct-tab-width, var(--t-tab-width, 100%));text-align:var(--tct-tab-text-align, var(--t-tab-text-align, center));text-decoration:var(--tct-tab-text-decoration, var(--t-tab-text-decoration, none));padding:var(--tct-tab-padding, var(--t-tab-padding, var(--tct-scale-2, var(--app-scale-2, 10px))));color:var(--tct-tab-inactive-color, var(--t-tab-inactive-color, inherit));font-size:var(--tct-tab-font-size, var(--t-tab-font-size, 17px));display:block;transition:color var(--tct-tween-2, var(--app-tween-2, 0.4s ease)), border-color var(--tct-tween-1, var(--app-tween-1, 0.2s ease))}:host([type=section]) li button{--comp-tab-section-padding:var(--tct-scale-2, var(--app-scale-2, 10px)) var(--tct-scale-1, var(--app-scale-1, 5px));font-size:inherit;padding:var(--tct-tab-section-padding, var(--t-tab-section-padding, var(--comp-tab-section-padding)))}li button:hover{color:var(--tct-tab-hover-color, var(--t-tab-hover-color, var(--tct-tab-active-color, var(--t-tab-active-color, #2e2e2e))));background-color:var(--tct-tab-hover-bg-color, var(--t-tab-hover-bg-color, inherit));width:var(--tct-tab-hover-width, var(--t-tab-hover-width, 100%))}li button[aria-selected=true]{color:var(--tct-tab-active-color, var(--t-tab-active-color, #2e2e2e));border-color:var(--tct-tab-active-border-color, var(--t-tab-active-border-color, currentColor));border-style:var(--tct-tab-active-border-style, var(--t-tab-active-border-style, solid));width:var(--tct-tab-active-width, var(--t-tab-active-width, 100%));background-color:var(--tct-tab-active-bg-color, var(--t-tab-active-bg-color, inherit))}:host([color=alt]) li button{color:var(--tct-tab-alt-inactive-color, var(--t-tab-alt-inactive-color, inherit))}:host([color=alt]) li button:hover,:host([color=alt]) li button[aria-selected=true]{color:var(--tct-tab-alt-active-color, var(--t-tab-alt-active-color, inherit))}@media screen and (max-width: 767px){li button{--comp-tab-padding:var(--tct-scale-2, var(--app-scale-2, 10px)) var(--tct-scale-1, var(--app-scale-1, 5px));font-size:inherit;padding:var(--tct-tab-padding, var(--t-tab-padding, var(--comp-tab-padding)))}}.tab-content{--comp-tab-content-padding:var(--tct-scale-2, var(--app-scale-2, 10px)) 0;padding:var(--tct-tab-content-padding, var(--t-tab-content-padding, var(--comp-tab-content-padding)))}.tab-content:focus{outline:none;box-shadow:none}.gradient-left,.gradient-right{z-index:1;position:absolute;top:0;height:100%;width:44px}.gradient-left{background-image:linear-gradient(to right, var(--t-base), var(--t-base-a0));left:0}.gradient-right{background-image:linear-gradient(to right, var(--t-base-a0), var(--t-base));right:0}.btn-left,.btn-right{--tct-icon-size:18px;--tct-btn-icon-hover-bg:transparent;--tct-btn-icon-width:22px;--tct-icon-stroke-primary:var(--tct-stepper-scroll-arrow-color, var(--t-stepper-scroll-arrow-color, var(--t-text, #4d4d4d)));position:absolute;top:calc(50% - 22px);z-index:2}.btn-left{left:0}.btn-right{right:0}";
9
9
 
10
10
  index.addSmoothScrollPolyfill();
11
11
  const userAgent = navigator.userAgent.toLowerCase();
@@ -21,6 +21,9 @@ const Q2TabContainer = class {
21
21
  this.lastScrolled = new Date(null).getTime();
22
22
  this.hasLeft = false;
23
23
  this.hasRight = false;
24
+ this.scrollEnabled = false;
25
+ this.showScrollLeft = false;
26
+ this.showScrollRight = false;
24
27
  ///////// Actions /////////
25
28
  this.updateTabData = () => {
26
29
  this.updateTabPaneProps();
@@ -34,131 +37,97 @@ const Q2TabContainer = class {
34
37
  });
35
38
  };
36
39
  this.setTabs = () => {
37
- this.tabs = this.tabPanes.map(({ label, value }) => {
38
- return {
39
- label: (label && index.loc(label)) || '',
40
- value
41
- };
42
- });
40
+ this.tabs = this.tabPanes.map(({ label, value }) => ({
41
+ label: (label && index.loc(label)) || '',
42
+ value
43
+ }));
43
44
  };
44
45
  this.onTabClick = (event) => {
46
+ const isAlreadySelected = this.value === event.target.dataset.value;
47
+ if (isAlreadySelected)
48
+ return;
45
49
  this.change.emit({
46
50
  value: event.target.dataset.value
47
51
  });
48
52
  };
49
53
  this.onTabKeyDown = (event) => {
50
54
  const value = event.target.dataset.value;
51
- if (event.key === 'ArrowRight' || event.key === 'Right') {
52
- this.moveToAdjacentTab(value, 'next');
53
- return;
54
- }
55
- if (event.key === 'ArrowLeft' || event.key === 'Left') {
56
- this.moveToAdjacentTab(value, 'prev');
57
- return;
58
- }
59
- if (event.code === 'Space' || event.code === 'Enter') {
60
- // to prevent triggering scroll when press the space key
61
- event.preventDefault();
62
- this.change.emit({ value });
63
- return;
55
+ switch (event.key) {
56
+ case 'ArrowRight':
57
+ event.preventDefault();
58
+ this.moveToAdjacentTab(value, 'next');
59
+ break;
60
+ case 'ArrowLeft':
61
+ event.preventDefault();
62
+ this.moveToAdjacentTab(value, 'prev');
63
+ break;
64
+ case 'Home':
65
+ event.preventDefault();
66
+ this.moveToAdjacentTab(value, 'first');
67
+ break;
68
+ case 'End':
69
+ event.preventDefault();
70
+ this.moveToAdjacentTab(value, 'last');
71
+ break;
72
+ case 'Space':
73
+ case 'Enter':
74
+ event.preventDefault();
75
+ this.change.emit({ value });
76
+ break;
64
77
  }
65
78
  };
66
79
  this.moveToAdjacentTab = (value, direction) => {
67
80
  let index = this.tabs.map(({ value }) => value).indexOf(value);
68
- let newIndex = direction === 'next'
69
- ? Math.min(index + 1, this.tabs.length - 1)
70
- : Math.max(index - 1, 0);
71
- if (index !== newIndex) {
72
- const focusedTab = this.moveFocus(newIndex);
73
- // Scroll only if it overflows
74
- if (this.tabList.scrollWidth > this.tabList.clientWidth) {
75
- // Scroll only if it's first or last tab
76
- if (newIndex !== 0 && newIndex !== this.tabs.length - 1) {
77
- this.scrollByKeyboard(direction, focusedTab);
78
- }
79
- else {
80
- // first or last element: just show or hide nav arrow
81
- this.onTabScroll(direction);
82
- }
83
- }
81
+ let newIndex;
82
+ switch (direction) {
83
+ case 'next':
84
+ newIndex = Math.min(index + 1, this.tabs.length - 1);
85
+ break;
86
+ case 'prev':
87
+ newIndex = Math.max(index - 1, 0);
88
+ break;
89
+ case 'first':
90
+ newIndex = 0;
91
+ break;
92
+ case 'last':
93
+ newIndex = this.tabs.length - 1;
94
+ break;
84
95
  }
96
+ if (index === newIndex)
97
+ return;
98
+ this.moveFocus(newIndex, false);
85
99
  };
86
100
  this.moveFocus = (index, preventScroll = true) => {
87
101
  const focusedValue = this.tabs[index].value;
88
- const focusedTab = this.hostElement.shadowRoot.querySelector(`.tab-list a[data-value="${focusedValue}"]`);
102
+ const focusedTab = this.listElement.querySelector(`[data-value="${focusedValue}"]`);
89
103
  focusedTab.focus({ preventScroll });
104
+ const left = focusedTab.offsetLeft - this.listElement.clientWidth / 2;
105
+ this.listElement.scrollTo({
106
+ left,
107
+ behavior: 'smooth'
108
+ });
90
109
  return focusedTab;
91
110
  };
92
- this.calculateKeyboardScroll = (direction, focusedTab) => {
93
- const { left: tabListLeft } = this.tabList.getBoundingClientRect();
94
- const { left: focusedTabLeft } = focusedTab.getBoundingClientRect();
95
- const arrowWidth = 46;
96
- let scrollAmount = 0;
97
- // check how much focused tab overflows
98
- if (direction === 'next' &&
99
- focusedTabLeft + focusedTab.clientWidth >
100
- tabListLeft + this.tabList.clientWidth + arrowWidth) {
101
- scrollAmount =
102
- this.tabList.scrollLeft +
103
- arrowWidth +
104
- (focusedTabLeft + focusedTab.clientWidth) -
105
- (tabListLeft + this.tabList.clientWidth);
106
- }
107
- else if (direction === 'prev' && focusedTabLeft + arrowWidth < tabListLeft) {
108
- scrollAmount = this.tabList.scrollLeft - arrowWidth + (focusedTabLeft - tabListLeft);
109
- }
110
- return scrollAmount;
111
- };
112
- this.scrollByKeyboard = (direction, focusedTab) => {
113
- const scrollAmount = this.calculateKeyboardScroll(direction, focusedTab);
114
- if (scrollAmount !== 0) {
115
- this.tabList.scroll({ left: scrollAmount, behavior: 'smooth' });
116
- // wait to finish scroll then show or hide nav arrow
117
- setTimeout(() => this.onTabScroll(), 100);
118
- }
111
+ this.checkScrollState = () => {
112
+ const { scrollLeft, scrollWidth, clientWidth } = this.listElement;
113
+ this.scrollEnabled = scrollWidth > clientWidth;
114
+ this.showScrollLeft = !!scrollLeft;
115
+ this.showScrollRight = scrollWidth !== scrollLeft + clientWidth;
119
116
  };
120
- this.calculateTabScroll = ({ direction, scrollWidth, clientWidth, scrollLeft }) => {
121
- const directions = { prev: -1, next: 1 };
122
- // step 0 means no scroll needed, re-render or resize can trigger this
123
- const step = directions[direction] || 0;
124
- const scrollRate = 0.5; // half of visual width
125
- const delta = Math.round(clientWidth * scrollRate);
126
- const newScrollLeft = scrollLeft + step * delta;
127
- const scrolled = clientWidth + newScrollLeft;
128
- const hasLeft = newScrollLeft > 0;
129
- const hasRight = scrollWidth > scrolled;
130
- return {
131
- newScrollLeft,
132
- hasLeft,
133
- hasRight
134
- };
135
- };
136
- this.onTabScroll = (direction) => {
137
- // throttle under 50ms due to re-rendering & resizing
138
- const now = new Date().getTime();
139
- if (now - this.lastScrolled < 50)
140
- return;
141
- this.lastScrolled = now;
142
- if (!this.tabList)
143
- return;
144
- let { scrollWidth, clientWidth, scrollLeft } = this.tabList;
145
- const { newScrollLeft, hasLeft, hasRight } = this.calculateTabScroll({
146
- direction,
147
- scrollWidth,
148
- clientWidth,
149
- scrollLeft
117
+ this.onScrollBtnClick = (direction) => {
118
+ const scrollAmount = Math.floor(this.listElement.clientWidth / 2);
119
+ this.listElement.scrollBy({
120
+ left: direction === 'left' ? -scrollAmount : scrollAmount,
121
+ behavior: 'smooth'
150
122
  });
151
- this.hasLeft = hasLeft;
152
- this.hasRight = hasRight;
153
- if (direction) {
154
- this.tabList.scroll({ left: newScrollLeft, behavior: 'smooth' });
155
- }
123
+ };
124
+ this.onSlotChange = () => {
125
+ this.checkScrollState();
156
126
  };
157
127
  }
158
128
  resizeIframe() {
159
- return (window.TectonElements &&
160
- window.TectonElements.resizeIframe &&
161
- window.TectonElements.resizeIframe());
129
+ var _a, _b;
130
+ return (_b = (_a = window.TectonElements) === null || _a === void 0 ? void 0 : _a.resizeIframe) === null || _b === void 0 ? void 0 : _b.call(_a);
162
131
  }
163
132
  get tabPanes() {
164
133
  const tabPanes = this.hostElement.querySelectorAll('q2-tab-pane, tecton-tab-pane');
@@ -180,7 +149,7 @@ const Q2TabContainer = class {
180
149
  }
181
150
  }
182
151
  onResize() {
183
- this.onTabScroll();
152
+ this.checkScrollState();
184
153
  }
185
154
  onFocus() {
186
155
  // firefox receives focus on overflowed element even if it's not interactive element
@@ -194,25 +163,26 @@ const Q2TabContainer = class {
194
163
  const observer = new MutationObserver(this.updateTabData);
195
164
  observer.observe(this.hostElement, { childList: true, attributes: true });
196
165
  this.mutationObserver = observer;
166
+ this.resizeObserver = new ResizeObserver(() => this.checkScrollState());
197
167
  this.updateTabData();
198
168
  }
199
169
  componentDidRender() {
200
170
  this.scheduledAfterRender.forEach(fn => fn());
201
171
  this.scheduledAfterRender = [];
202
172
  this.settled.emit();
203
- this.onTabScroll();
204
173
  }
205
174
  componentDidLoad() {
175
+ this.resizeObserver.observe(this.listElement);
176
+ this.checkScrollState();
206
177
  const index = this.tabs.findIndex(el => el.value === this.value);
207
- // move focus if the value is valid and not the first tab's value
208
- if (index > 0) {
209
- this.scheduledAfterRender.push(() => {
210
- const tab = this.moveFocus(index, false);
211
- tab.blur();
212
- });
213
- }
178
+ this.scheduledAfterRender.push(() => {
179
+ const tab = this.moveFocus(Math.max(index, 0), false);
180
+ this.value = tab.dataset.value;
181
+ tab.blur();
182
+ });
214
183
  }
215
184
  disconnectedCallback() {
185
+ this.resizeObserver.disconnect();
216
186
  this.mutationObserver.disconnect();
217
187
  this.mutationObserver = null;
218
188
  }
@@ -230,12 +200,12 @@ const Q2TabContainer = class {
230
200
  }
231
201
  ///////// View Methods /////////
232
202
  render() {
233
- return (index$1.h("div", { class: "tab-container" }, index$1.h("ul", { class: `tab-list ${this.noPrint ? 'no-print' : ''}`, role: "tablist" }, this.hasLeft && (index$1.h("li", { role: "presentation", class: "nav nav-left", onClick: () => this.onTabScroll('prev') }, index$1.h("div", { class: "arrow-container" }, index$1.h("a", null, index$1.h("q2-icon", { type: "chevron-left" }))))), this.tabs.map((tab, index) => this.generateTab(tab, index)), this.hasRight && (index$1.h("li", { role: "presentation", class: "nav nav-right", onClick: () => this.onTabScroll('next') }, index$1.h("div", { class: "arrow-container" }, index$1.h("a", null, index$1.h("q2-icon", { type: "chevron-right" })))))), index$1.h("div", { class: "tab-content" }, index$1.h("slot", null))));
203
+ return (index$1.h(index$1.Fragment, null, index$1.h("div", { class: "tab-container" }, this.scrollEnabled && (index$1.h(index$1.Fragment, null, index$1.h("div", { class: "gradient-left", hidden: !this.showScrollLeft }), index$1.h("div", { class: "gradient-right", hidden: !this.showScrollRight }), index$1.h("q2-btn", { class: "btn-left", hidden: !this.showScrollLeft, onClick: () => this.onScrollBtnClick('left') }, index$1.h("q2-icon", { type: "chevron-left" })), index$1.h("q2-btn", { class: "btn-right", hidden: !this.showScrollRight, onClick: () => this.onScrollBtnClick('right') }, index$1.h("q2-icon", { type: "chevron-right" })))), index$1.h("ul", { onScroll: this.checkScrollState, ref: el => (this.listElement = el), class: this.noPrint ? 'no-print' : null, role: "tablist" }, this.tabs.map((tab, index) => this.generateTab(tab, index)))), index$1.h("div", { class: "tab-content" }, index$1.h("slot", { onSlotchange: () => this.onSlotChange() }))));
234
204
  }
235
205
  generateTab(tab, index) {
236
206
  const { label, value } = tab;
237
207
  const isSelected = this.selectedTabValue === value;
238
- return (index$1.h("li", { role: "presentation" }, index$1.h("a", { id: `tab-${this.guid}-${index}`, href: "javascript://", "data-value": value, "test-id": "tabLink", tabIndex: isSelected ? 0 : -1, role: "tab", "aria-selected": `${isSelected}`, "aria-controls": `tab-pane-${this.guid}-${index}`, onClick: this.onTabClick, onKeyDown: this.onTabKeyDown }, label)));
208
+ return (index$1.h("li", { role: "presentation" }, index$1.h("button", { id: `tab-${this.guid}-${index}`, "data-value": value, "test-id": "tabLink", tabIndex: isSelected ? 0 : -1, role: "tab", "aria-selected": isSelected ? 'true' : undefined, "aria-controls": `tab-pane-${this.guid}-${index}`, onClick: this.onTabClick, onKeyDown: this.onTabKeyDown }, label)));
239
209
  }
240
210
  get hostElement() { return index$1.getElement(this); }
241
211
  static get watchers() { return {
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-6b2c271e.js');
5
+ const index = require('./index-c2e53804.js');
6
6
 
7
7
  const stylesCss = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-global-focus)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}.tab-pane[aria-hidden='true']{display:none}.tab-pane:focus{outline:none;box-shadow:none}";
8
8
 
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const index = require('./index-6b2c271e.js');
3
+ const index = require('./index-c2e53804.js');
4
4
 
5
5
  /*
6
6
  Stencil Client Patch Browser v2.8.0 | MIT Licensed | https://stenciljs.com
@@ -15,5 +15,5 @@ const patchBrowser = () => {
15
15
  };
16
16
 
17
17
  patchBrowser().then(options => {
18
- return index.bootstrapLazy([["q2-icon.cjs",[[1,"q2-icon",{"type":[513],"label":[513]}]]],["q2-calendar.cjs",[[1,"q2-calendar",{"value":[1537],"label":[513],"hideLabel":[516,"hide-label"],"ariaLabel":[513,"aria-label"],"optional":[516],"disabled":[516],"invalid":[1540],"typeable":[516],"placeholder":[513],"buttonLabel":[513,"button-label"],"disabledMsg":[513,"disabled-msg"],"calendarLabel":[513,"calendar-label"],"disclaimer":[513],"displayFormat":[513,"display-format"],"startDate":[513,"start-date"],"endDate":[513,"end-date"],"cutoffTime":[513,"cutoff-time"],"daysOfWeekChecksum":[514,"days-of-week-checksum"],"popDirection":[513,"pop-direction"],"errors":[1040],"invalidDates":[16],"validDates":[16],"onsuccess":[16],"dropdownOpen":[32],"keyboardSelection":[32],"typedValue":[32],"dateList":[32],"hintMessage":[32],"hintMessageType":[32]},[[0,"change","defaultChangeHandler"],[0,"error","defaultErrorHandler"],[0,"success","defaultSuccessHandler"]]]]],["q2-dropdown.cjs",[[1,"q2-dropdown",{"type":[513],"icon":[513],"label":[513],"hideLabel":[516,"hide-label"],"ariaLabel":[513,"aria-label"],"disabled":[516],"popDirection":[513,"pop-direction"],"name":[513],"context":[513],"contextValue":[513,"context-value"],"resolvedType":[513,"resolved-type"],"dropdownOpen":[32]}]]],["q2-select.cjs",[[1,"q2-select",{"label":[513],"hideLabel":[516,"hide-label"],"value":[1025],"ariaLabel":[513,"aria-label"],"selectedOptions":[1032,"selected-options"],"disabled":[516],"invalid":[516],"errors":[16],"multiple":[516],"minRows":[2,"min-rows"],"popDirection":[513,"pop-direction"],"searchable":[516],"multilineOptions":[516,"multiline-options"],"optional":[516],"dropdownOpen":[32],"onlyShowingSelected":[32],"activeOptionId":[32],"searchText":[32],"hasCustomDisplay":[32],"inputFocused":[32],"statusMessage":[32]},[[0,"change","onHostElementChange"],[0,"input","onHostElementInput"],[0,"click","clickHandler"],[0,"keydown","keydownHandler"]]]]],["q2-editable-field.cjs",[[1,"q2-editable-field",{"value":[1537],"editing":[1540],"label":[513],"hideLabel":[516,"hide-label"],"ariaLabel":[513,"aria-label"],"type":[513],"formatModifier":[513,"format-modifier"],"truncated":[513],"maxlength":[514],"persistentLabel":[516,"persistent-label"],"hints":[16],"errors":[16]},[[0,"change","onHostElementChange"]]]]],["q2-section.cjs",[[1,"q2-section",{"label":[513],"collapsible":[516],"noCollapseIcon":[516,"no-collapse-icon"],"expanded":[1540],"contentHeight":[32],"hasYieldedHeader":[32]},[[0,"change","defaultChangeHandler"]]]]],["q2-stepper.cjs",[[1,"q2-stepper",{"currentStep":[1538,"current-step"],"stepCount":[1026,"step-count"],"lastEnabledStep":[1026,"last-enabled-step"],"scrollEnabled":[32],"showScrollLeft":[32],"showScrollRight":[32]},[[0,"change","defaultChangeHandler"]]]]],["q2-avatar.cjs",[[1,"q2-avatar",{"name":[513],"initials":[513],"src":[513],"icon":[1],"badSrc":[32]}]]],["q2-carousel.cjs",[[4,"q2-carousel",{"autoPlay":[516,"auto-play"],"fullWidthPanes":[516,"full-width-panes"],"hidePagination":[516,"hide-pagination"],"showNavigationArrows":[516,"show-navigation-arrows"],"ariaLabel":[513,"aria-label"],"label":[513],"index":[1538],"universalCarouselOptions":[32],"fullWidthDisplayOptions":[32],"activePaneIndex":[32],"applyFocus":[32],"compactMode":[32],"autoPlayInProgress":[32],"carouselWrapperWidth":[32],"tabIndex":[32]},[[0,"change","onHostElementChange"]]]]],["q2-checkbox.cjs",[[1,"q2-checkbox",{"checked":[1540],"type":[513],"label":[513],"hideLabel":[516,"hide-label"],"ariaLabel":[513,"aria-label"],"indeterminate":[516],"disabled":[516],"value":[513],"name":[513],"hasError":[516,"has-error"],"groupDisabled":[516,"group-disabled"],"alignment":[513]},[[0,"change","defaultChangeHandler"]]]]],["q2-checkbox-group.cjs",[[1,"q2-checkbox-group",{"label":[513],"value":[1040],"disabled":[516],"optional":[516],"hasError":[516,"has-error"]},[[0,"change","onHostElementChange"]]]]],["q2-option.cjs",[[1,"q2-option",{"role":[513],"tabindex":[513],"display":[513],"value":[513],"disabled":[516],"optionId":[513,"option-id"],"disabledGroup":[516,"disabled-group"],"selected":[516],"hidden":[516],"multiline":[516],"active":[516],"_multiSelectHidden":[516,"_multiselecthidden"]}]]],["q2-radio-group.cjs",[[1,"q2-radio-group",{"label":[513],"value":[1025],"disabled":[516],"name":[513],"optional":[516],"tilelayout":[516],"tileAlignment":[513,"tile-alignment"],"hasError":[516,"has-error"]},[[0,"change","onHostElementChange"]]]]],["q2-tab-container.cjs",[[1,"q2-tab-container",{"value":[1537],"type":[513],"name":[513],"color":[513],"noPrint":[516,"no-print"],"hasLeft":[32],"hasRight":[32],"tabs":[32]},[[0,"change","defaultChangeHandler"],[9,"resize","onResize"],[0,"focus","onFocus"]]]]],["q2-textarea.cjs",[[1,"q2-textarea",{"value":[1025],"label":[513],"hideLabel":[516,"hide-label"],"hideMessages":[516,"hide-messages"],"optional":[516],"placeholder":[513],"disabled":[516],"readonly":[516],"spellcheck":[516],"maxlength":[1538],"rows":[514],"cols":[514],"resize":[513],"errors":[16],"hints":[16],"hasFocus":[32],"downParams":[32]},[[0,"focus","onHostElementFocus"],[0,"change","onHostElementChange"]]]]],["q2-carousel-pane.cjs",[[4,"q2-carousel-pane",{"index":[2],"siblingCount":[2,"sibling-count"],"hideFromScreenReader":[516,"hide-from-screen-reader"],"isActivePane":[516,"is-active-pane"],"label":[513]}]]],["q2-loading-element.cjs",[[0,"q2-loading-element",{"shape":[513],"width":[513],"height":[513],"borderRadius":[513,"border-radius"]}]]],["q2-loc.cjs",[[1,"q2-loc",{"value":[513],"substitutions":[16]}]]],["q2-optgroup.cjs",[[1,"q2-optgroup",{"disabled":[516],"label":[513],"hidden":[32]}]]],["q2-radio.cjs",[[4,"q2-radio",{"label":[513],"hideLabel":[516,"hide-label"],"value":[513],"disabled":[516],"checked":[516],"name":[513],"ariaLabel":[513,"aria-label"],"groupDisabled":[4,"group-disabled"],"groupTileLayout":[4,"group-tile-layout"]},[[0,"click","onHostClick"]]]]],["q2-stepper-pane.cjs",[[1,"q2-stepper-pane",{"label":[513],"description":[513],"isActive":[516,"is-active"]}]]],["q2-tab-pane.cjs",[[1,"q2-tab-pane",{"value":[513],"label":[513],"name":[513],"selected":[516],"index":[2],"guid":[2]}]]],["tecton-tab-pane.cjs",[[1,"tecton-tab-pane",{"value":[513],"label":[513],"name":[513],"selected":[516],"index":[2],"guid":[2],"provided":[516],"url":[513],"moduleId":[513,"module-id"],"minHeight":[513,"min-height"],"authPayload":[16],"showForm":[4,"show-form"],"_showForm":[32]}]]],["q2-dropdown-item.cjs",[[1,"q2-dropdown-item",{"disabled":[516],"removable":[516],"separator":[516],"label":[513],"ariaLabel":[513,"aria-label"],"value":[513]},[[0,"focus","onHostElementFocus"]]]]],["q2-message.cjs",[[1,"q2-message",{"type":[513],"appearance":[513],"description":[516]}]]],["q2-input.cjs",[[1,"q2-input",{"value":[1025],"label":[513],"hideLabel":[516,"hide-label"],"type":[513],"placeholder":[513],"disabled":[516],"autocomplete":[513],"autocorrect":[513],"autocapitalize":[513],"hideMessages":[516,"hide-messages"],"iconLeft":[513,"icon-left"],"iconRight":[513,"icon-right"],"readonly":[516],"clearable":[516],"optional":[516],"formatModifier":[513,"format-modifier"],"maxlength":[1538],"pseudo":[516],"showVisibilityToggle":[516,"show-visibility-toggle"],"textHidden":[1540,"text-hidden"],"ariaControls":[1,"aria-controls"],"role":[1],"ariaOwns":[1,"aria-owns"],"ariaLabel":[513,"aria-label"],"ariaHaspopup":[1,"aria-haspopup"],"ariaExpanded":[4,"aria-expanded"],"ariaActivedescendant":[8,"aria-activedescendant"],"errors":[16],"hints":[16],"formattedValueObject":[32],"hasFocus":[32]},[[0,"focus","onHostElementFocus"],[0,"change","onHostElementChange"]]]]],["click-elsewhere.cjs",[[0,"click-elsewhere"]]],["q2-btn_2.cjs",[[1,"q2-btn",{"ariaExpanded":[4,"aria-expanded"],"ariaHasPopup":[8,"aria-has-popup"],"ariaControls":[1,"aria-controls"],"ariaSelected":[4,"aria-selected"],"label":[513],"hideLabel":[516,"hide-label"],"ariaLabel":[513,"aria-label"],"tabIndex":[2,"tab-index"],"intent":[513],"disabled":[516],"type":[513],"loading":[516],"badge":[516],"active":[516],"fab":[516],"iconPosition":[32]},[[2,"click","disable"],[0,"focus","delegateFocus"]]],[1,"q2-loading",{"type":[513],"shape":[513],"modifiers":[513],"counts":[513],"label":[513],"ariaLabel":[513,"aria-label"],"inline":[516]}]]]], options);
18
+ return index.bootstrapLazy([["q2-icon.cjs",[[1,"q2-icon",{"type":[513],"label":[513]}]]],["q2-calendar.cjs",[[1,"q2-calendar",{"value":[1537],"label":[513],"hideLabel":[516,"hide-label"],"ariaLabel":[513,"aria-label"],"optional":[516],"disabled":[516],"invalid":[1540],"typeable":[516],"placeholder":[513],"buttonLabel":[513,"button-label"],"disabledMsg":[513,"disabled-msg"],"calendarLabel":[513,"calendar-label"],"disclaimer":[513],"displayFormat":[513,"display-format"],"startDate":[513,"start-date"],"endDate":[513,"end-date"],"cutoffTime":[513,"cutoff-time"],"daysOfWeekChecksum":[514,"days-of-week-checksum"],"popDirection":[513,"pop-direction"],"errors":[1040],"invalidDates":[16],"validDates":[16],"onsuccess":[16],"dropdownOpen":[32],"keyboardSelection":[32],"typedValue":[32],"dateList":[32],"hintMessage":[32],"hintMessageType":[32]},[[0,"change","defaultChangeHandler"],[0,"error","defaultErrorHandler"],[0,"success","defaultSuccessHandler"]]]]],["q2-dropdown.cjs",[[1,"q2-dropdown",{"type":[513],"icon":[513],"label":[513],"hideLabel":[516,"hide-label"],"ariaLabel":[513,"aria-label"],"disabled":[516],"popDirection":[513,"pop-direction"],"name":[513],"context":[513],"contextValue":[513,"context-value"],"resolvedType":[513,"resolved-type"],"dropdownOpen":[32]}]]],["q2-select.cjs",[[1,"q2-select",{"label":[513],"hideLabel":[516,"hide-label"],"value":[1025],"ariaLabel":[513,"aria-label"],"selectedOptions":[1032,"selected-options"],"disabled":[516],"invalid":[516],"errors":[16],"multiple":[516],"minRows":[2,"min-rows"],"popDirection":[513,"pop-direction"],"searchable":[516],"multilineOptions":[516,"multiline-options"],"optional":[516],"dropdownOpen":[32],"onlyShowingSelected":[32],"activeOptionId":[32],"searchText":[32],"hasCustomDisplay":[32],"inputFocused":[32],"statusMessage":[32]},[[0,"change","onHostElementChange"],[0,"input","onHostElementInput"],[0,"click","clickHandler"],[0,"keydown","keydownHandler"]]]]],["q2-editable-field.cjs",[[1,"q2-editable-field",{"value":[1537],"editing":[1540],"label":[513],"hideLabel":[516,"hide-label"],"ariaLabel":[513,"aria-label"],"type":[513],"formatModifier":[513,"format-modifier"],"truncated":[513],"maxlength":[514],"persistentLabel":[516,"persistent-label"],"hints":[16],"errors":[16]},[[0,"change","onHostElementChange"]]]]],["q2-section.cjs",[[1,"q2-section",{"label":[513],"collapsible":[516],"noCollapseIcon":[516,"no-collapse-icon"],"expanded":[1540],"contentHeight":[32],"hasYieldedHeader":[32]},[[0,"change","defaultChangeHandler"]]]]],["q2-stepper.cjs",[[1,"q2-stepper",{"currentStep":[1538,"current-step"],"stepCount":[1026,"step-count"],"lastEnabledStep":[1026,"last-enabled-step"],"scrollEnabled":[32],"showScrollLeft":[32],"showScrollRight":[32]},[[0,"change","defaultChangeHandler"]]]]],["q2-tab-container.cjs",[[1,"q2-tab-container",{"value":[1537],"type":[513],"name":[513],"color":[513],"noPrint":[516,"no-print"],"hasLeft":[32],"hasRight":[32],"scrollEnabled":[32],"showScrollLeft":[32],"showScrollRight":[32],"tabs":[32]},[[0,"change","defaultChangeHandler"],[9,"resize","onResize"],[0,"focus","onFocus"]]]]],["q2-avatar.cjs",[[1,"q2-avatar",{"name":[513],"initials":[513],"src":[513],"icon":[1],"badSrc":[32]}]]],["q2-carousel.cjs",[[4,"q2-carousel",{"autoPlay":[516,"auto-play"],"fullWidthPanes":[516,"full-width-panes"],"hidePagination":[516,"hide-pagination"],"showNavigationArrows":[516,"show-navigation-arrows"],"ariaLabel":[513,"aria-label"],"label":[513],"index":[1538],"universalCarouselOptions":[32],"fullWidthDisplayOptions":[32],"activePaneIndex":[32],"applyFocus":[32],"compactMode":[32],"autoPlayInProgress":[32],"carouselWrapperWidth":[32],"tabIndex":[32]},[[0,"change","onHostElementChange"]]]]],["q2-checkbox.cjs",[[1,"q2-checkbox",{"checked":[1540],"type":[513],"label":[513],"hideLabel":[516,"hide-label"],"ariaLabel":[513,"aria-label"],"indeterminate":[516],"disabled":[516],"value":[513],"name":[513],"hasError":[516,"has-error"],"groupDisabled":[516,"group-disabled"],"alignment":[513]},[[0,"change","defaultChangeHandler"]]]]],["q2-checkbox-group.cjs",[[1,"q2-checkbox-group",{"label":[513],"value":[1040],"disabled":[516],"optional":[516],"hasError":[516,"has-error"]},[[0,"change","onHostElementChange"]]]]],["q2-option.cjs",[[1,"q2-option",{"role":[513],"tabindex":[513],"display":[513],"value":[513],"disabled":[516],"optionId":[513,"option-id"],"disabledGroup":[516,"disabled-group"],"selected":[516],"hidden":[516],"multiline":[516],"active":[516],"_multiSelectHidden":[516,"_multiselecthidden"]}]]],["q2-radio-group.cjs",[[1,"q2-radio-group",{"label":[513],"value":[1025],"disabled":[516],"name":[513],"optional":[516],"tilelayout":[516],"tileAlignment":[513,"tile-alignment"],"hasError":[516,"has-error"]},[[0,"change","onHostElementChange"]]]]],["q2-textarea.cjs",[[1,"q2-textarea",{"value":[1025],"label":[513],"hideLabel":[516,"hide-label"],"hideMessages":[516,"hide-messages"],"optional":[516],"placeholder":[513],"disabled":[516],"readonly":[516],"spellcheck":[516],"maxlength":[1538],"rows":[514],"cols":[514],"resize":[513],"errors":[16],"hints":[16],"hasFocus":[32],"downParams":[32]},[[0,"focus","onHostElementFocus"],[0,"change","onHostElementChange"]]]]],["q2-carousel-pane.cjs",[[4,"q2-carousel-pane",{"index":[2],"siblingCount":[2,"sibling-count"],"hideFromScreenReader":[516,"hide-from-screen-reader"],"isActivePane":[516,"is-active-pane"],"label":[513]}]]],["q2-loading-element.cjs",[[0,"q2-loading-element",{"shape":[513],"width":[513],"height":[513],"borderRadius":[513,"border-radius"]}]]],["q2-loc.cjs",[[1,"q2-loc",{"value":[513],"substitutions":[16]}]]],["q2-optgroup.cjs",[[1,"q2-optgroup",{"disabled":[516],"label":[513],"hidden":[32]}]]],["q2-radio.cjs",[[4,"q2-radio",{"label":[513],"hideLabel":[516,"hide-label"],"value":[513],"disabled":[516],"checked":[516],"name":[513],"ariaLabel":[513,"aria-label"],"groupDisabled":[4,"group-disabled"],"groupTileLayout":[4,"group-tile-layout"]},[[0,"click","onHostClick"]]]]],["q2-stepper-pane.cjs",[[1,"q2-stepper-pane",{"label":[513],"description":[513],"isActive":[516,"is-active"]}]]],["q2-tab-pane.cjs",[[1,"q2-tab-pane",{"value":[513],"label":[513],"name":[513],"selected":[516],"index":[2],"guid":[2]}]]],["tecton-tab-pane.cjs",[[1,"tecton-tab-pane",{"value":[513],"label":[513],"name":[513],"selected":[516],"index":[2],"guid":[2],"provided":[516],"url":[513],"moduleId":[513,"module-id"],"minHeight":[513,"min-height"],"authPayload":[16],"showForm":[4,"show-form"],"_showForm":[32]}]]],["q2-dropdown-item.cjs",[[1,"q2-dropdown-item",{"disabled":[516],"removable":[516],"separator":[516],"label":[513],"ariaLabel":[513,"aria-label"],"value":[513]},[[0,"focus","onHostElementFocus"]]]]],["q2-message.cjs",[[1,"q2-message",{"type":[513],"appearance":[513],"description":[516],"presentToggle":[32],"present":[64]}]]],["q2-input.cjs",[[1,"q2-input",{"value":[1025],"label":[513],"hideLabel":[516,"hide-label"],"type":[513],"placeholder":[513],"disabled":[516],"autocomplete":[513],"autocorrect":[513],"autocapitalize":[513],"hideMessages":[516,"hide-messages"],"iconLeft":[513,"icon-left"],"iconRight":[513,"icon-right"],"readonly":[516],"clearable":[516],"optional":[516],"formatModifier":[513,"format-modifier"],"maxlength":[1538],"pseudo":[516],"showVisibilityToggle":[516,"show-visibility-toggle"],"textHidden":[1540,"text-hidden"],"ariaControls":[1,"aria-controls"],"role":[1],"ariaOwns":[1,"aria-owns"],"ariaLabel":[513,"aria-label"],"ariaHaspopup":[1,"aria-haspopup"],"ariaExpanded":[4,"aria-expanded"],"ariaActivedescendant":[8,"aria-activedescendant"],"errors":[16],"hints":[16],"formattedValueObject":[32],"hasFocus":[32]},[[0,"focus","onHostElementFocus"],[0,"change","onHostElementChange"]]]]],["click-elsewhere.cjs",[[0,"click-elsewhere"]]],["q2-btn_2.cjs",[[1,"q2-btn",{"ariaExpanded":[4,"aria-expanded"],"ariaHasPopup":[8,"aria-has-popup"],"ariaControls":[1,"aria-controls"],"ariaSelected":[4,"aria-selected"],"label":[513],"hideLabel":[516,"hide-label"],"ariaLabel":[513,"aria-label"],"tabIndex":[2,"tab-index"],"intent":[513],"disabled":[516],"type":[513],"loading":[516],"badge":[516],"active":[516],"fab":[516],"iconPosition":[32]},[[2,"click","disable"],[0,"focus","delegateFocus"]]],[1,"q2-loading",{"type":[513],"shape":[513],"modifiers":[513],"counts":[513],"label":[513],"ariaLabel":[513,"aria-label"],"inline":[516]}]]]], options);
19
19
  });
@@ -2,8 +2,8 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-6b2c271e.js');
6
- const index$1 = require('./index-14348270.js');
5
+ const index = require('./index-c2e53804.js');
6
+ const index$1 = require('./index-f4153f5a.js');
7
7
 
8
8
  const stylesCss = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-global-focus)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}:host{display:block;margin-top:var(--tct-textarea-margin-top, var(--app-scale-6x, 30px));margin-bottom:var(--tct-textarea-margin-bottom, var(--app-scale-6x, 30px));font-size:var(--tct-textarea-font-size, var(--app-font-size, inherit))}:host([hidden]){display:none}label{display:block;padding-left:var(--tct-textarea-label-padding-left, 0);padding-right:var(--tct-textarea-label-padding-right, 0);margin-top:var(--tct-textarea-label-margin-top, 0);margin-bottom:var(\n --tct-textarea-label-margin-bottom,\n var(--tct-scale-1x, var(--app-scale-1x, 5px))\n );color:var(--tct-textarea-label-font-color, inherit);font-size:var(--tct-textarea-label-font-size, inherit);font-weight:var(--tct-textarea-label-font-weight, 600);text-transform:var(--tct-textarea-label-text-transform, none);letter-spacing:var(--tct-textarea-label-letter-spacing, normal);transition:color var(--tct-textarea-tween, var(--tct-tween-2, var(--app-tween-2, 0.4s ease)))}.optional-tag{margin-left:var(\n --tct-textarea-label-optional-margin-left,\n var(--tct-scale-1x, var(--app-scale-1x, 5px))\n );color:var(\n --tct-textarea-label-optional-font-color,\n var(--tct-a11y-color, var(--t-a11y-gray-color, #767676))\n );font-size:var(--tct-textarea-label-optional-font-size, 12px);font-weight:var(--tct-textarea-label-optional-font-weight, 400)}.input-container{min-height:var(--comp-textarea-min-height, var(--tct-textarea-min-height));height:100%;--comp-textarea-border-top-left-radius:var(\n --tct-textarea-border-top-left-radius,\n var(--tct-border-radius-1, var(--app-border-radius-1, 3px))\n );--comp-textarea-border-top-right-radius:var(\n --tct-textarea-border-top-right-radius,\n var(--tct-border-radius-1, var(--app-border-radius-1, 3px))\n );--comp-textarea-border-bottom-right-radius:var(\n --tct-textarea-border-bottom-right-radius,\n var(--tct-border-radius-1, var(--app-border-radius-1, 3px))\n );--comp-textarea-border-bottom-left-radius:var(\n --tct-textarea-border-bottom-left-radius,\n var(--tct-border-radius-1, var(--app-border-radius-1, 3px))\n );--comp-textarea-border-radius:var(--comp-textarea-border-top-left-radius)\n var(--comp-textarea-border-top-right-radius) var(--comp-textarea-border-bottom-right-radius)\n var(--comp-textarea-border-bottom-left-radius);--comp-textarea-border-width:var(--tct-textarea-border-top-width, 1px)\n var(--tct-textarea-border-right-width, 1px) var(--tct-textarea-border-bottom-width, 1px)\n var(--tct-textarea-border-left-width, 1px);--comp-textarea-focus-border-width:var(--tct-textarea-focus-border-top-width, 1px)\n var(--tct-textarea-focus-border-right-width, 1px)\n var(--tct-textarea-focus-border-bottom-width, 1px)\n var(--tct-textarea-focus-border-left-width, 1px);--comp-textarea-icon-clearance:34px}.content-container{--comp-textarea-min-height:44px;--comp-textarea-min-width:150px;position:relative;display:inline-block;min-height:var(--comp-textarea-min-height, var(--tct-textarea-min-height, 44px));min-width:var(--comp-textarea-min-width, var(--tct-textarea-min-width, 150px))}:host(:not([cols])) .content-container{width:100%}textarea{resize:none;height:100%;-webkit-appearance:none;appearance:none;display:block;box-sizing:border-box;min-height:var(--comp-textarea-min-height, var(--tct-textarea-min-height));padding:var(--tct-textarea-vertical-padding, var(--tct-scale-2x, var(--app-scale-2x, 10px)))\n var(--tct-textarea-horizontal-padding, var(--tct-scale-2x, var(--app-scale-2x, 10px)));background-color:var(\n --tct-textarea-bg,\n var(--t-input-bg, var(--tct-gray-14, var(--app-gray-14, #f2f2f2)))\n );color:var(--tct-textarea-font-color, var(--t-input-font-color, inherit));border-width:var(--comp-textarea-border-width);border-style:solid;border-color:var(\n --tct-textarea-border-color,\n var(--t-input-border, var(--tct-gray-11, var(--app-gray-11, #cccccc)))\n );border-radius:var(--comp-textarea-border-radius);box-shadow:var(--tct-textarea-box-shadow, none);scrollbar-width:thin;scrollbar-color:var(--t-a11y-gray-color) transparent;transition:border-width\n var(--tct-textarea-tween, var(--tct-tween-2, var(--app-tween-2, 0.4s ease))),\n border-color var(--tct-textarea-tween, var(--tct-tween-2, var(--app-tween-2, 0.4s ease))),\n box-shadow var(--tct-textarea-tween, var(--tct-tween-2, var(--app-tween-2, 0.4s ease)))}textarea::-webkit-scrollbar{width:var(--app-scale-1x);height:var(--app-scale-1x);margin:var(--app-scale-1x)}textarea::-webkit-scrollbar-thumb{background:var(--t-a11y-gray-color);border-radius:2px}textarea::-webkit-scrollbar-track{background:transparent}textarea:not([cols]){width:100%}textarea:focus{border-width:var(--comp-textarea-focus-border-width, 1px);border-color:var(\n --tct-textarea-focus-border-color,\n var(--t-input-focus, var(--tct-gray-9, var(--app-gray-9, #999999)))\n );box-shadow:var(--tct-global-focus, var(--const-global-focus, 0 0 0 2px #33b4ff)),\n var(--tct-textarea-focus-box-shadow, 0 0 transparent)}textarea::placeholder{color:var(\n --tct-textarea-placeholder-font-color,\n var(\n --t-input-placeholder-font-color,\n var(--tct-gray-7, var(--app-gray-7, var(--tct-gray-d1, var(--app-gray-d1, #666666))))\n )\n )}q2-icon{margin-top:calc(var(--tct-textarea-border-top-width, 1px) / 2);margin-bottom:calc(var(--tct-textarea-border-bottom-width, 1px) / 2);pointer-events:none;position:absolute;top:var(--tct-textarea-vertical-padding, var(--tct-scale-2x, var(--app-scale-2x, 10px)));color:var(\n --tct-textarea-icon-stroke-primary,\n var(--app-gray-9, var(--tct-gray, var(--app-gray, #999999)))\n );right:0;margin-right:var(--tct-scale-2x, var(--app-scale-2x, 10px));--tct-icon-stroke-primary:var(\n --tct-textarea-icon-stroke-primary,\n var(--tct-gray-9, var(--app-gray-9, var(--tct-gray, var(--app-gray, #999999))))\n );--t-icon-stroke-primary:var(\n --tct-textarea-icon-stroke-primary,\n var(--tct-gray-9, var(--app-gray-9, var(--tct-gray, var(--app-gray, #999999))))\n )}.icon-error{color:var(--tct-stoplight-error, var(--const-stoplight-alert, #c30000));--tct-icon-stroke-primary:var(--tct-stoplight-error, var(--const-stoplight-alert, #c30000));--t-icon-stroke-primary:var(--tct-stoplight-error, var(--const-stoplight-alert, #c30000))}.messages-container{height:0px;overflow:hidden;background-color:var(\n --tct-message-bg,\n var(--tct-gray-14, var(--app-gray-14, var(--tct-gray-l3, var(--app-gray-l3, #f2f2f2))))\n );box-shadow:var(\n --tct-textarea-message-box-shadow,\n var(--tct-box-shadow-1, var(--app-shadow-1, 0 2px 4px rgba(0, 0, 0, 0.3)))\n );transition:height\n var(--tct-textarea-messages-tween, var(--tct-tween-1, var(--app-tween-1, 0.2s ease)));margin-top:2px;z-index:1;position:absolute;width:100%;color:var(--tct-textarea-messages-font-color, inherit)}:host([disabled]) .input-container{cursor:not-allowed;opacity:var(\n --tct-textarea-disabled-opacity,\n var(--tct-disabled-opacity, var(--app-disabled-opacity, 0.4))\n )}textarea[disabled]{cursor:not-allowed}.has-error textarea{padding-right:var(--comp-textarea-icon-clearance)}.has-error label{color:var(\n --tct-textarea-error-label-font-color,\n var(--tct-textarea-label-font-color, inherit)\n )}.has-error textarea:not(:focus){border-color:var(--tct-textarea-error-border-color, var(--const-stoplight-alert, #c30000))}.max-length{color:var(--tct-textarea-max-length-color, var(--t-textA, rgba(77, 77, 77, 0.77)));font-size:var(\n --tct-textarea-max-length-font-size,\n var(--tct-font-size-small, var(--app-font-size-small, 12px))\n );position:absolute;right:0}.btn-resize{--tct-textarea-resize-icon-padding:calc(\n calc(\n var(--tct-textarea-resize-btn-width, var(--tct-btn-icon-width, 44px)) -\n var(--tct-textarea-resize-icon-size, 12px)\n ) / 2\n );width:var(--tct-textarea-resize-btn-width, var(--tct-btn-icon-width, 44px));height:var(--tct-textarea-resize-btn-height, var(--tct-btn-icon-height, 44px));background:var(--tct-textarea-resize-btn-background, transparent);stroke:var(--tct-textarea-resize-color, var(--t-textA, rgba(77, 77, 77, 0.77)));border:0;position:absolute;right:calc(var(--tct-textarea-resize-icon-padding) * -1 + 2px);bottom:calc(var(--tct-textarea-resize-icon-padding) * -1 + 2px);display:block;padding:var(--tct-textarea-resize-icon-padding);font-size:0}.btn-resize:focus{outline:none;box-shadow:none}:host([resize='both']) .btn-resize{cursor:se-resize}:host([resize='vertical']) .btn-resize{cursor:s-resize}:host([resize='horizontal']) .btn-resize{cursor:e-resize}";
9
9
 
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const index = require('./index-6b2c271e.js');
3
+ const index = require('./index-c2e53804.js');
4
4
 
5
5
  const atoms = {
6
6
  circle: ({ width, additionalClasses }) => (index.h("div", { class: `skeleton-shape circle ${additionalClasses || ''}`, style: { width, height: width } })),
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-6b2c271e.js');
5
+ const index = require('./index-c2e53804.js');
6
6
 
7
7
  const stylesCss = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-global-focus)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}.tab-pane[aria-hidden='true']{display:none}.tab-pane:focus{outline:none;box-shadow:none}.loading-wrapper{height:44px;width:100%;align-items:center;justify-content:center}.loading-wrapper:not([hidden]){display:flex}iframe{width:100%;height:auto;overflow-y:hidden;border:none}iframe:not([hidden]){display:inline-block}.slot-wrapper:focus{outline:none;box-shadow:var(--const-global-focus)}";
8
8
 
@@ -22,6 +22,13 @@ const TectonTabPane = class {
22
22
  .slice(-2)
23
23
  .join('-');
24
24
  }
25
+ componentWillRender() {
26
+ const loadingWrapper = this.hostElement.shadowRoot.querySelector('.loading-wrapper');
27
+ if (loadingWrapper) {
28
+ loadingWrapper.style.minHeight = this.minHeight;
29
+ loadingWrapper.hidden = !this.selected;
30
+ }
31
+ }
25
32
  componentWillLoad() {
26
33
  this._showForm = this.showForm;
27
34
  }
@@ -34,7 +41,11 @@ const TectonTabPane = class {
34
41
  }
35
42
  ///////// Observers /////////
36
43
  selectedObserver() {
44
+ const loader = this.hostElement.shadowRoot.querySelector('div[slot="loading-wrapper"]');
37
45
  this._showForm = this.showForm; // reset state
46
+ if (loader) {
47
+ loader.hidden = !this.selected;
48
+ }
38
49
  }
39
50
  ///////// View Methods /////////
40
51
  render() {
@@ -39,8 +39,8 @@ export class Q2Avatar {
39
39
  const showInitials = (this.name || this.initials) && (!this.src || this.badSrc);
40
40
  const showFallback = !this.name && !this.initials && (!this.src || this.badSrc);
41
41
  return (h("div", null,
42
- showImg && (h("img", { class: "avatar-img", "test-id": "userImage", src: this.src, onError: this.onError })),
43
- showInitials && (h("svg", { viewBox: "0 0 100 100", preserveAspectRatio: "xMidYMid meet", "test-id": "userInitials", class: `avatar-initials size-${computedInitials.length}` },
42
+ showImg && (h("img", { class: "avatar-img", "test-id": "userImage", src: this.src, onError: this.onError, alt: this.name || '' })),
43
+ showInitials && (h("svg", { viewBox: "0 0 100 100", preserveAspectRatio: "xMidYMid meet", "test-id": "userInitials", class: `avatar-initials size-${computedInitials.length}`, "aria-label": this.name, "aria-hidden": !this.name && 'true' },
44
44
  h("text", { x: "50", y: "50", "dominant-baseline": "central", "text-anchor": "middle", "aria-hidden": "true" }, computedInitials))),
45
45
  showFallback && (h("div", { "test-id": "fallbackIcon", class: "fallback" },
46
46
  h("q2-icon", { type: this.icon })))));
@@ -315,8 +315,12 @@ export class Q2Calendar {
315
315
  return stringToMoment(this.typedValue);
316
316
  }
317
317
  else {
318
- const { value } = this;
318
+ let { value } = this;
319
319
  const isMoment = value && typeof value !== 'string' && 'toDate' in value;
320
+ // stringified moment value assigned in html template e.g.) handlebar
321
+ if (!isMoment && typeof value === 'string') {
322
+ value = formatDateISO(value);
323
+ }
320
324
  return isMoment ? value : stringToMoment(value);
321
325
  }
322
326
  }