q2-tecton-elements 1.25.1 → 1.25.2

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.
@@ -1,7 +1,7 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
2
2
  import { r as resizeIframe, w as waitForNextPaint } from './index15.js';
3
3
 
4
- const stylesCss = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #33b4ff #06C)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch: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;width:100%}:host([align=right]){display:block;position:absolute;right:0;text-align:end;left:unset}.container{display:none;overflow:hidden;opacity:0;height:0;position:absolute;top:var(--tct-popover-top, var(--t-popover-top, initial));visibility:hidden;background-color:var(--tct-popover-background-color, var(--t-popover-background-color, var(--app-white, #ffffff)));color:var(--tct-popover-text-color, var(--t-popover-text-color, var(--t-text, #4d4d4d)));z-index:var(--tct-popover-z-index, var(--t-popover-z-index, 100));width:max-content;min-width:var(--tct-popover-min-width, var(--t-popover-min-width, 135px));box-shadow:var(--tct-popover-box-shadow, var(--t-popover-box-shadow, var(--app-shadow-1, 0 2px 4px rgba(0, 0, 0, 0.3))));text-align:start;left:0;transition:opacity var(--app-tween-1, 0.2s ease);border-radius:var(--tct-popover-border-radius, var(--t-popover-border-radius, 0));max-height:var(--comp-pop-max-height);--comp-scrollbar-size:var(--tct-scrollbar-size, var(--t-scrollbar-size, var(--app-scale-1x, 5px)));--comp-scrollbar-border-radius:var(--tct-scrollbar-border-radius, var(--t-scrollbar-border-radius, var(--app-border-radius-1, 3px)));--comp-scrollbar-color:var(--tct-scrollbar-color, var(--t-scrollbar-color, var(--t-a11y-gray-color, #747474)));scrollbar-width:thin;scrollbar-color:var(--comp-scrollbar-color) transparent}.container::-webkit-scrollbar{width:var(--comp-scrollbar-size);height:var(--comp-scrollbar-size);margin:5px}.container::-webkit-scrollbar-thumb{background:var(--comp-scrollbar-color);border-radius:var(--comp-scrollbar-border-radius)}.container::-webkit-scrollbar-track{background:transparent;border-radius:var(--comp-scrollbar-border-radius)}:host([block]) .container{left:unset;right:unset;width:100%;min-width:unset}:host([align=right]) .container{right:0;text-align:end;left:unset}.container :host([open]){display:block}:host([open]) .container.show{height:auto;overflow:auto;opacity:1;visibility:visible}.container.up{bottom:var(--comp-pop-offset)}click-elsewhere{position:relative;display:block}.content{height:auto}";
4
+ const stylesCss = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #33b4ff #06C)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch: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;width:100%}:host([align=right]){display:block;position:absolute;right:0;text-align:end;left:unset}.container{display:none;overflow:hidden;opacity:0;height:0;position:absolute;top:var(--tct-popover-top, var(--t-popover-top, initial));visibility:hidden;background-color:var(--tct-popover-background-color, var(--t-popover-background-color, var(--app-white, #ffffff)));color:var(--tct-popover-text-color, var(--t-popover-text-color, var(--t-text, #4d4d4d)));z-index:var(--tct-popover-z-index, var(--t-popover-z-index, 100));width:max-content;min-width:var(--tct-popover-min-width, var(--t-popover-min-width, 135px));box-shadow:var(--tct-popover-box-shadow, var(--t-popover-box-shadow, var(--app-shadow-1, 0 2px 4px rgba(0, 0, 0, 0.3))));text-align:start;left:0;transition:opacity var(--app-tween-1, 0.2s ease), max-height var(--app-tween-1, 0.2s ease);border-radius:var(--tct-popover-border-radius, var(--t-popover-border-radius, 0));max-height:var(--comp-pop-max-height);--comp-scrollbar-size:var(--tct-scrollbar-size, var(--t-scrollbar-size, var(--app-scale-1x, 5px)));--comp-scrollbar-border-radius:var(--tct-scrollbar-border-radius, var(--t-scrollbar-border-radius, var(--app-border-radius-1, 3px)));--comp-scrollbar-color:var(--tct-scrollbar-color, var(--t-scrollbar-color, var(--t-a11y-gray-color, #747474)));scrollbar-width:thin;scrollbar-color:var(--comp-scrollbar-color) transparent}.container::-webkit-scrollbar{width:var(--comp-scrollbar-size);height:var(--comp-scrollbar-size);margin:5px}.container::-webkit-scrollbar-thumb{background:var(--comp-scrollbar-color);border-radius:var(--comp-scrollbar-border-radius)}.container::-webkit-scrollbar-track{background:transparent;border-radius:var(--comp-scrollbar-border-radius)}:host([block]) .container{left:unset;right:unset;width:100%;min-width:unset}:host([align=right]) .container{right:0;text-align:end;left:unset}.container :host([open]){display:block}:host([open]) .container.show{height:auto;overflow:auto;opacity:1;visibility:visible}.container.up{bottom:var(--comp-pop-offset)}click-elsewhere{position:relative;display:block}.content{height:auto}";
5
5
 
6
6
  const Q2Popover = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
7
7
  constructor() {
@@ -10,13 +10,19 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
10
10
  this.__attachShadow();
11
11
  this.popoverStateChanged = createEvent(this, "popoverStateChanged", 7);
12
12
  this.scheduledAfterRender = [];
13
+ /// Helpers ///
14
+ this.viewPortChanged = () => {
15
+ if (!this.open)
16
+ return;
17
+ this.determinePopDirection();
18
+ };
13
19
  this.direction = undefined;
14
20
  this.align = undefined;
15
21
  this.open = undefined;
16
22
  this.block = undefined;
17
23
  this.minHeight = undefined;
18
24
  this.controlElement = undefined;
19
- this.privateDirection = 'down';
25
+ this.currentDirection = undefined;
20
26
  this.show = false;
21
27
  }
22
28
  /// Lifecycle hooks ///
@@ -30,6 +36,9 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
30
36
  this.scheduledAfterRender = [];
31
37
  }, 25);
32
38
  }
39
+ disconnectedCallback() {
40
+ this.removeViewportListeners();
41
+ }
33
42
  /// Methods ///
34
43
  async toggle() {
35
44
  this.open = !this.open;
@@ -39,9 +48,18 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
39
48
  this.popoverStateChanged.emit({ open });
40
49
  this.scheduledAfterRender.push(resizeIframe);
41
50
  if (open) {
51
+ this.addViewportListeners();
42
52
  this.determinePopDirection();
43
53
  }
44
54
  else {
55
+ this.removeViewportListeners();
56
+ // Reset currentDirection after close transition completes
57
+ this.containerElement.addEventListener('transitionend', () => {
58
+ if (this.open)
59
+ return;
60
+ this.currentDirection = undefined;
61
+ this.containerElement.style.removeProperty('--comp-pop-max-height');
62
+ }, { once: true });
45
63
  this.show = false;
46
64
  }
47
65
  }
@@ -53,17 +71,24 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
53
71
  this.open = open;
54
72
  event.stopPropagation();
55
73
  }
74
+ addViewportListeners() {
75
+ // window.visualViewport.addEventListener('scroll', this.viewPortChanged);
76
+ window.visualViewport.addEventListener('resize', this.viewPortChanged);
77
+ }
78
+ removeViewportListeners() {
79
+ // window.visualViewport.removeEventListener('scroll', this.viewPortChanged);
80
+ window.visualViewport.removeEventListener('resize', this.viewPortChanged);
81
+ }
56
82
  async setDirectionAndShow(direction) {
57
83
  if (direction === 'up') {
58
84
  this.determinePopOffset();
59
85
  }
60
- this.privateDirection = direction;
86
+ this.currentDirection = direction;
61
87
  this.show = true;
62
88
  }
63
- /// Helpers ///
64
89
  async determinePopDirection() {
65
- var _a, _b, _c, _d, _e;
66
- const { containerElement, contentElement, direction, controlElement } = this;
90
+ var _a, _b, _c, _d, _e, _f, _g;
91
+ const { containerElement, contentElement, direction, controlElement, currentDirection } = this;
67
92
  if (containerElement)
68
93
  containerElement.style.maxHeight = null;
69
94
  // If direction defined, use it
@@ -78,32 +103,46 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
78
103
  height: 0,
79
104
  };
80
105
  const contentHeight = contentElement.clientHeight;
81
- const scrollY = ((_c = (_b = window.Tecton) === null || _b === void 0 ? void 0 : _b.platformDimensions) === null || _c === void 0 ? void 0 : _c.scrollY) || 0;
82
- const innerHeight = ((_e = (_d = window.Tecton) === null || _d === void 0 ? void 0 : _d.platformDimensions) === null || _e === void 0 ? void 0 : _e.innerHeight) || window.innerHeight;
106
+ const scrollY = ((_c = (_b = window.Tecton) === null || _b === void 0 ? void 0 : _b.platformDimensions) === null || _c === void 0 ? void 0 : _c.scrollY) ||
107
+ ((_d = window.visualViewport) === null || _d === void 0 ? void 0 : _d.offsetTop) || // Only Android Chrome provides this which we need when scrolled
108
+ 0;
109
+ const innerHeight = ((_f = (_e = window.Tecton) === null || _e === void 0 ? void 0 : _e.platformDimensions) === null || _f === void 0 ? void 0 : _f.innerHeight) || ((_g = window.visualViewport) === null || _g === void 0 ? void 0 : _g.height) || window.innerHeight;
83
110
  const bottomOffset = scrollY + innerHeight - topOffset - height;
84
111
  const canShowFullSizeBelow = bottomOffset > contentHeight;
85
- const canShowFullSizeAbove = contentHeight <= topOffset || !this.minHeight;
112
+ const canShowFullSizeAbove = contentHeight <= topOffset;
86
113
  let determinedDirection;
87
114
  // Show the full-size popover below or above if it will fit
88
- if (canShowFullSizeBelow)
115
+ if (currentDirection === 'down' && canShowFullSizeBelow)
116
+ return this.setDirectionAndShow('down');
117
+ else if (currentDirection === 'up' && canShowFullSizeAbove)
118
+ return this.setDirectionAndShow('up');
119
+ else if (currentDirection === undefined && canShowFullSizeBelow)
89
120
  determinedDirection = 'down';
90
- else if (canShowFullSizeAbove)
121
+ else if (currentDirection === undefined && canShowFullSizeAbove)
91
122
  determinedDirection = 'up';
92
123
  if (determinedDirection)
93
124
  return this.setDirectionAndShow(determinedDirection);
94
- // If full size will not fit and minHeight is set, then make as tall as possible
125
+ // If full size will not fit then make it as tall as possible
95
126
  const { minHeight = 150 } = this;
96
127
  const displayBuffer = 5;
97
- const canShowSmallBelow = bottomOffset >= minHeight + displayBuffer;
128
+ const canShowMinHeightBelow = bottomOffset >= minHeight + displayBuffer;
98
129
  let maxHeight;
99
- if (canShowSmallBelow) {
130
+ if (currentDirection === 'down') {
100
131
  maxHeight = Math.max(bottomOffset - displayBuffer, minHeight);
101
132
  determinedDirection = 'down';
102
133
  }
103
- else {
134
+ else if (currentDirection === 'up') {
104
135
  maxHeight = Math.max(topOffset - displayBuffer, minHeight);
105
136
  determinedDirection = 'up';
106
137
  }
138
+ else if (canShowMinHeightBelow) {
139
+ maxHeight = Math.max(bottomOffset - displayBuffer, minHeight);
140
+ determinedDirection = 'down';
141
+ }
142
+ else {
143
+ maxHeight = Math.max(topOffset - scrollY - displayBuffer, minHeight);
144
+ determinedDirection = 'up';
145
+ }
107
146
  containerElement.style.setProperty('--comp-pop-max-height', `${maxHeight}px`);
108
147
  return this.setDirectionAndShow(determinedDirection);
109
148
  }
@@ -115,7 +154,7 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
115
154
  }
116
155
  /// DOM ///
117
156
  render() {
118
- const containerClasses = ['container', this.privateDirection];
157
+ const containerClasses = ['container', this.currentDirection];
119
158
  if (this.show)
120
159
  containerClasses.push('show');
121
160
  return (h("div", { ref: el => (this.containerElement = el), class: containerClasses.join(' '), role: "menu" }, h("div", { ref: el => (this.contentElement = el), class: "content" }, h("slot", null))));
@@ -132,7 +171,7 @@ const Q2Popover = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
132
171
  "block": [516],
133
172
  "minHeight": [2, "min-height"],
134
173
  "controlElement": [16],
135
- "privateDirection": [32],
174
+ "currentDirection": [32],
136
175
  "show": [32],
137
176
  "toggle": [64]
138
177
  }, [[0, "popoverState", "popoverStateHandler"]]]);
@@ -3232,7 +3232,7 @@ const Q2Input = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
3232
3232
  }
3233
3233
  /* tslint:disable:cyclomatic-complexity */
3234
3234
  inputContainerDOM() {
3235
- return (h("div", { class: "input-container" }, h("div", { class: "input-icons-container-left" }, this.formattedValueObject.prefix && (h("span", { class: "input-prefix" }, this.formattedValueObject.prefix)), this.computedIconLeft && (h("q2-icon", { type: this.computedIconLeft, class: this.computedClassForIconLeft })), this.showIconSeparator && h("div", { class: "vertical-separator" }), this.hasError && this.type === 'currency' && (h("q2-icon", { type: "error", class: "icon-error" }))), this.pseudo ? this.pseudoInputDOM() : this.standardInputDOM(), h("div", { class: "input-icons-container-right" }, this.canClear && (h("q2-btn", { class: "btn-clear", ariaLabel: loc('tecton.element.input.clear', [this.label]), "test-id": "clearButton", onClick: this.onClearInput }, h("q2-icon", { type: "close", class: "icon-clear" }))), ['password', 'text', 'ssn'].includes(this.type) && this.showVisibilityToggle && (h("q2-btn", { class: "btn-visibility-toggle", "test-id": "toggleVisibilityButton", onClick: this.onToggleVisibility }, this.visibilityToggleText)), this.formattedValueObject.suffix && (h("span", { class: "input-suffix" }, this.formattedValueObject.suffix)), this.badgeValue && (h("q2-badge", { size: "large", theme: this.badgeTheme }, this.badgeValue)), this.iconRight && !this.formattedValueObject.suffix && (h("q2-icon", { type: this.iconRight, class: "icon-right" })), this.hasError && this.type !== 'currency' && (h("q2-icon", { type: "error", class: "icon-error" })))));
3235
+ return (h("div", { class: "input-container", tabindex: -1 }, h("div", { class: "input-icons-container-left" }, this.formattedValueObject.prefix && (h("span", { class: "input-prefix" }, this.formattedValueObject.prefix)), this.computedIconLeft && (h("q2-icon", { type: this.computedIconLeft, class: this.computedClassForIconLeft })), this.showIconSeparator && h("div", { class: "vertical-separator" }), this.hasError && this.type === 'currency' && (h("q2-icon", { type: "error", class: "icon-error" }))), this.pseudo ? this.pseudoInputDOM() : this.standardInputDOM(), h("div", { class: "input-icons-container-right" }, this.canClear && (h("q2-btn", { class: "btn-clear", ariaLabel: loc('tecton.element.input.clear', [this.label]), "test-id": "clearButton", onClick: this.onClearInput }, h("q2-icon", { type: "close", class: "icon-clear" }))), ['password', 'text', 'ssn'].includes(this.type) && this.showVisibilityToggle && (h("q2-btn", { class: "btn-visibility-toggle", "test-id": "toggleVisibilityButton", onClick: this.onToggleVisibility }, this.visibilityToggleText)), this.formattedValueObject.suffix && (h("span", { class: "input-suffix" }, this.formattedValueObject.suffix)), this.badgeValue && (h("q2-badge", { size: "large", theme: this.badgeTheme }, this.badgeValue)), this.iconRight && !this.formattedValueObject.suffix && (h("q2-icon", { type: this.iconRight, class: "icon-right" })), this.hasError && this.type !== 'currency' && (h("q2-icon", { type: "error", class: "icon-error" })))));
3236
3236
  }
3237
3237
  /* tslint:enable:cyclomatic-complexity */
3238
3238
  /* tslint:disable:cyclomatic-complexity */
@@ -203,7 +203,10 @@ const Q2Select$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
203
203
  get popoverMinHeight() {
204
204
  const { minRows } = this;
205
205
  const firstOption = this.hostElement.querySelector('q2-option:not([hidden])');
206
- const minHeight = firstOption ? window.getComputedStyle(firstOption).minHeight : '44px';
206
+ let minHeight = firstOption && window.getComputedStyle(firstOption).minHeight;
207
+ // Safari doesn't return a min-height for non-visible items
208
+ if (!minHeight || minHeight === '0px')
209
+ minHeight = '44px';
207
210
  return minRows * parseInt(minHeight);
208
211
  }
209
212
  get selectedDisplay() {
package/dist/docs.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2023-04-24T16:03:40",
2
+ "timestamp": "2023-04-28T16:28:31",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "2.19.2",
@@ -10,7 +10,7 @@ const patchEsm = () => {
10
10
  const defineCustomElements = (win, options) => {
11
11
  if (typeof window === 'undefined') return Promise.resolve();
12
12
  return patchEsm().then(() => {
13
- return bootstrapLazy(JSON.parse("[[\"q2-icon\",[[1,\"q2-icon\",{\"type\":[513],\"label\":[513],\"inline\":[516]}]]],[\"q2-select\",[[1,\"q2-select\",{\"label\":[1537],\"hideLabel\":[1540,\"hide-label\"],\"value\":[1025],\"ariaLabel\":[1537,\"aria-label\"],\"selectedOptions\":[1040],\"disabled\":[516],\"readonly\":[516],\"invalid\":[516],\"errors\":[16],\"multiple\":[516],\"minRows\":[2,\"min-rows\"],\"popDirection\":[513,\"pop-direction\"],\"searchable\":[516],\"multilineOptions\":[516,\"multiline-options\"],\"optional\":[516],\"placeholder\":[513],\"hoist\":[4],\"open\":[32],\"showSelected\":[32],\"searchText\":[32],\"hasCustomDisplay\":[32],\"inputFocused\":[32],\"statusMessage\":[32],\"prioritizeSearch\":[32],\"structuredSelectedOptions\":[32]},[[0,\"keydown\",\"keydownHandler\"],[0,\"change\",\"onHostElementChange\"],[0,\"input\",\"onHostElementInput\"],[0,\"focus\",\"delegateFocus\"],[0,\"focusout\",\"handleFocusout\"]]]]],[\"q2-action-sheet\",[[1,\"q2-action-sheet\",{\"data\":[1040],\"hideClose\":[4,\"hide-close\"],\"isScrollable\":[32],\"renderStatus\":[32],\"hide\":[64],\"show\":[64]}]]],[\"q2-calendar\",[[1,\"q2-calendar\",{\"value\":[1537],\"label\":[513],\"hideLabel\":[516,\"hide-label\"],\"ariaLabel\":[513,\"aria-label\"],\"optional\":[516],\"disabled\":[516],\"readonly\":[516],\"invalid\":[1540],\"typeable\":[516],\"clearable\":[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\"],\"assume\":[513],\"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\"],[0,\"focus\",\"delegateFocus\"],[0,\"clear\",\"handleClear\"]]]]],[\"q2-dropdown\",[[1,\"q2-dropdown\",{\"type\":[513],\"icon\":[513],\"label\":[513],\"hideLabel\":[516,\"hide-label\"],\"ariaLabel\":[1537,\"aria-label\"],\"disabled\":[516],\"popDirection\":[513,\"pop-direction\"],\"name\":[513],\"context\":[513],\"contextValue\":[513,\"context-value\"],\"resolvedType\":[513,\"resolved-type\"],\"block\":[516],\"dropdownOpen\":[32]},[[0,\"focus\",\"delegateFocus\"]]]]],[\"q2-editable-field\",[[1,\"q2-editable-field\",{\"value\":[1537],\"editing\":[1540],\"label\":[1537],\"hideLabel\":[1540,\"hide-label\"],\"ariaLabel\":[1537,\"aria-label\"],\"type\":[513],\"formatModifier\":[513,\"format-modifier\"],\"truncated\":[513],\"maxlength\":[514],\"persistentLabel\":[516,\"persistent-label\"],\"disabled\":[516],\"hints\":[16],\"errors\":[16]},[[0,\"change\",\"onHostElementChange\"],[0,\"focus\",\"delegateFocus\"]]]]],[\"q2-pagination\",[[1,\"q2-pagination\",{\"recordType\":[1,\"record-type\"],\"perPage\":[2,\"per-page\"],\"total\":[514],\"page\":[1538],\"pages\":[1538],\"recordsOnly\":[1540,\"records-only\"],\"pagesOnly\":[1540,\"pages-only\"],\"isSmall\":[32]},[[0,\"focus\",\"onHostElementFocus\"]]]]],[\"q2-pill\",[[1,\"q2-pill\",{\"hoist\":[4],\"disabled\":[516],\"active\":[1540],\"open\":[1540],\"multiple\":[516],\"maxLength\":[514,\"max-length\"],\"label\":[513],\"value\":[513],\"theme\":[513],\"selectedOptions\":[1040],\"popoverMinHeight\":[2,\"popover-min-height\"],\"popoverDirection\":[1,\"popover-direction\"],\"hasOptions\":[32],\"selectedOptionElements\":[32]},[[0,\"focus\",\"delegateFocus\"],[0,\"popoverStateChanged\",\"popoverStateHandler\"]]]]],[\"q2-tab-container\",[[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\"],[0,\"badge\",\"onBadge\"]]]]],[\"q2-tag\",[[1,\"q2-tag\",{\"hoist\":[4],\"open\":[1540],\"label\":[513],\"theme\":[513],\"popoverMinHeight\":[2,\"popover-min-height\"],\"popoverDirection\":[1,\"popover-direction\"],\"hasOptions\":[32]},[[0,\"focus\",\"delegateFocus\"],[0,\"popoverStateChanged\",\"popoverStateHandler\"]]]]],[\"q2-carousel\",[[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],\"applyPaginationFocus\":[32],\"autoPlayInProgress\":[32],\"compactMode\":[32],\"carouselWrapperWidth\":[32]},[[0,\"change\",\"onHostElementChange\"],[0,\"clickCarouselPane\",\"carouselPaneClicked\"],[0,\"focus\",\"delegateFocus\"]]]]],[\"q2-month-picker\",[[1,\"q2-month-picker\",{\"year\":[1538],\"disabledMonths\":[16],\"today\":[1],\"selectedIndex\":[32],\"focusedIndex\":[32],\"showYearLayer\":[32]}]]],[\"q2-section\",[[1,\"q2-section\",{\"label\":[513],\"collapsible\":[516],\"noCollapseIcon\":[516,\"no-collapse-icon\"],\"expanded\":[1540],\"contentHeight\":[32],\"hideContent\":[32],\"hasYieldedHeader\":[32]},[[0,\"change\",\"defaultChangeHandler\"],[0,\"focus\",\"delegateFocus\"]]]]],[\"q2-stepper\",[[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\"],[0,\"focus\",\"delegateFocus\"],[0,\"statusChange\",\"statusChangeHandler\"]]]]],[\"q2-card\",[[1,\"q2-card\",{\"title\":[513],\"description\":[513],\"avatarName\":[513,\"avatar-name\"],\"avatarInitials\":[513,\"avatar-initials\"],\"avatarIcon\":[513,\"avatar-icon\"],\"avatarSrc\":[513,\"avatar-src\"],\"isSmall\":[516,\"is-small\"],\"bar\":[513],\"isStatic\":[516,\"is-static\"],\"isTouch\":[516,\"is-touch\"],\"url\":[513],\"target\":[513],\"isAutoTouch\":[32],\"isAutoSmall\":[32]},[[0,\"focus\",\"onHostElementFocus\"]]]]],[\"q2-chart-donut\",[[1,\"q2-chart-donut\",{\"chartName\":[513,\"chart-name\"],\"summaryIcon\":[513,\"summary-icon\"],\"summaryName\":[513,\"summary-name\"],\"innerRadius\":[1025,\"inner-radius\"],\"outerRadius\":[1025,\"outer-radius\"],\"minSliceSize\":[1,\"min-slice-size\"],\"selectedOffset\":[2,\"selected-offset\"],\"hoverScaleSize\":[2,\"hover-scale-size\"],\"format\":[513],\"isClickable\":[516,\"is-clickable\"],\"data\":[16],\"selectedId\":[32],\"hoveredId\":[32],\"selectById\":[64],\"selectByIndex\":[64],\"clearSelection\":[64]},[[0,\"focus\",\"delegateFocus\"]]]]],[\"q2-checkbox\",[[1,\"q2-checkbox\",{\"checked\":[1540],\"type\":[513],\"label\":[1537],\"hideLabel\":[1540,\"hide-label\"],\"ariaLabel\":[1537,\"aria-label\"],\"indeterminate\":[516],\"disabled\":[516],\"readonly\":[516],\"value\":[513],\"name\":[513],\"hasError\":[516,\"has-error\"],\"groupDisabled\":[516,\"group-disabled\"],\"alignment\":[513],\"description\":[513]},[[0,\"change\",\"defaultChangeHandler\"],[0,\"focus\",\"delegateFocus\"]]]]],[\"q2-checkbox-group\",[[1,\"q2-checkbox-group\",{\"label\":[513],\"value\":[1040],\"disabled\":[516],\"readonly\":[516],\"optional\":[516],\"hasError\":[516,\"has-error\"]},[[0,\"change\",\"onHostElementChange\"]]]]],[\"q2-radio-group\",[[1,\"q2-radio-group\",{\"label\":[513],\"value\":[1025],\"disabled\":[516],\"name\":[513],\"optional\":[516],\"readonly\":[516],\"tileLayout\":[516,\"tile-layout\"],\"tileAlignment\":[513,\"tile-alignment\"],\"hasError\":[516,\"has-error\"],\"tilelayout\":[516]},[[0,\"change\",\"onHostElementChange\"],[0,\"focus\",\"delegateFocus\"],[0,\"keydown\",\"keydownHandler\"]]]]],[\"q2-stepper-vertical\",[[1,\"q2-stepper-vertical\",{\"currentStepId\":[1537,\"current-step-id\"],\"structuredPanes\":[32]},[[0,\"change\",\"defaultChangeHandler\"],[0,\"focus\",\"delegateFocus\"],[0,\"statusChange\",\"statusChangeHandler\"]]]]],[\"q2-textarea\",[[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\",[[4,\"q2-carousel-pane\",{\"index\":[2],\"siblingCount\":[2,\"sibling-count\"],\"isActivePane\":[516,\"is-active-pane\"],\"label\":[513]}]]],[\"q2-chart-area\",[[1,\"q2-chart-area\",{\"data\":[16],\"alignChartName\":[513,\"align-chart-name\"],\"chartName\":[513,\"chart-name\"],\"lineColor\":[513,\"line-color\"],\"pointerLineColor\":[513,\"pointer-line-color\"],\"pointerLineStyle\":[513,\"pointer-line-style\"],\"areaColor\":[513,\"area-color\"],\"dataNamesOverflow\":[513,\"data-names-overflow\"],\"dataNamesWidth\":[514,\"data-names-width\"],\"format\":[513],\"formatModifier\":[513,\"format-modifier\"],\"hideNameAxisLabels\":[516,\"hide-name-axis-labels\"],\"hideValueAxisLabels\":[516,\"hide-value-axis-labels\"],\"offsetDataNames\":[516,\"offset-data-names\"],\"offsetDataValues\":[516,\"offset-data-values\"],\"showChartName\":[516,\"show-chart-name\"],\"showDatapointLabels\":[516,\"show-datapoint-labels\"],\"showGradient\":[516,\"show-gradient\"],\"gridLines\":[513,\"grid-lines\"]}]]],[\"q2-chart-bar\",[[1,\"q2-chart-bar\",{\"data\":[16],\"alignChartName\":[513,\"align-chart-name\"],\"chartName\":[513,\"chart-name\"],\"color\":[513],\"dataNamesOverflow\":[513,\"data-names-overflow\"],\"dataNamesWidth\":[514,\"data-names-width\"],\"format\":[513],\"formatModifier\":[513,\"format-modifier\"],\"hideBarLabels\":[516,\"hide-bar-labels\"],\"hideValueAxisLabels\":[516,\"hide-value-axis-labels\"],\"offsetDataNames\":[516,\"offset-data-names\"],\"offsetDataValues\":[516,\"offset-data-values\"],\"orientation\":[513],\"showChartName\":[516,\"show-chart-name\"],\"sort\":[516]}]]],[\"q2-loading-element\",[[0,\"q2-loading-element\",{\"shape\":[513],\"width\":[513],\"height\":[513],\"borderRadius\":[513,\"border-radius\"]}]]],[\"q2-loc\",[[1,\"q2-loc\",{\"value\":[513],\"substitutions\":[16]}]]],[\"q2-radio\",[[1,\"q2-radio\",{\"label\":[1537],\"hideLabel\":[516,\"hide-label\"],\"value\":[513],\"disabled\":[516],\"checked\":[516],\"name\":[513],\"ariaLabel\":[1537,\"aria-label\"],\"groupDisabled\":[4,\"group-disabled\"],\"groupReadonly\":[4,\"group-readonly\"],\"groupTileLayout\":[4,\"group-tile-layout\"]},[[0,\"click\",\"onHostClick\"],[0,\"focus\",\"delegateFocus\"]]]]],[\"q2-stepper-pane\",[[1,\"q2-stepper-pane\",{\"label\":[513],\"description\":[513],\"isActive\":[516,\"is-active\"],\"showWithChildren\":[516,\"show-with-children\"],\"status\":[513],\"isChildActive\":[32]},[[0,\"activeChange\",\"checkForActiveChildren\"]]]]],[\"q2-tab-pane\",[[1,\"q2-tab-pane\",{\"value\":[513],\"label\":[513],\"name\":[513],\"selected\":[516],\"badgeCount\":[514,\"badge-count\"],\"badgeDescription\":[513,\"badge-description\"],\"index\":[2],\"guid\":[2]}]]],[\"q2-tooltip\",[[1,\"q2-tooltip\",{\"label\":[513],\"block\":[516],\"multiline\":[516],\"persistent\":[516],\"immediate\":[516],\"position\":[513],\"focusClass\":[32]},[[0,\"keyup\",\"keyUpHandler\"],[2,\"focus\",\"focusHandler\"],[0,\"focusout\",\"focusOutHandler\"]]]]],[\"tecton-tab-pane\",[[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\"],\"badgeCount\":[514,\"badge-count\"],\"badgeDescription\":[513,\"badge-description\"],\"authPayload\":[16],\"showForm\":[4,\"show-form\"],\"_showForm\":[32]}]]],[\"q2-dropdown-item\",[[1,\"q2-dropdown-item\",{\"disabled\":[516],\"removable\":[516],\"separator\":[516],\"label\":[513],\"ariaLabel\":[513,\"aria-label\"],\"value\":[513]},[[0,\"focus\",\"onHostElementFocus\"]]]]],[\"q2-avatar\",[[1,\"q2-avatar\",{\"name\":[513],\"initials\":[513],\"src\":[513],\"icon\":[1],\"badSrc\":[32],\"isLoaded\":[32]}]]],[\"q2-optgroup_2\",[[1,\"q2-option\",{\"role\":[513],\"display\":[1025],\"value\":[513],\"disabled\":[516],\"disabledGroup\":[516,\"disabled-group\"],\"selected\":[516],\"hidden\":[516],\"multiline\":[516],\"active\":[516],\"_multiSelectHidden\":[516,\"_multiselecthidden\"]}],[1,\"q2-optgroup\",{\"disabled\":[516],\"label\":[513],\"hidden\":[32]}]]],[\"q2-message\",[[1,\"q2-message\",{\"type\":[513],\"appearance\":[513],\"description\":[516],\"presentToggle\":[32],\"present\":[64]},[[0,\"focus\",\"delegateFocus\"]]]]],[\"click-elsewhere\",[[0,\"click-elsewhere\"]]],[\"q2-option-list_2\",[[1,\"q2-popover\",{\"direction\":[513],\"align\":[513],\"open\":[1540],\"block\":[516],\"minHeight\":[2,\"min-height\"],\"controlElement\":[16],\"privateDirection\":[32],\"show\":[32],\"toggle\":[64]},[[0,\"popoverState\",\"popoverStateHandler\"]]],[1,\"q2-option-list\",{\"role\":[513],\"customSearch\":[516,\"custom-search\"],\"noSelect\":[516,\"no-select\"],\"align\":[513],\"selectedOptions\":[1040],\"multiple\":[516],\"disabled\":[516],\"showSelected\":[1540,\"show-selected\"],\"type\":[1],\"hasOptions\":[32],\"setDefaultActiveElement\":[64],\"setActiveElement\":[64],\"handleExternalKeydown\":[64],\"getContents\":[64],\"getOptions\":[64]},[[0,\"focus\",\"delegateFocus\"],[0,\"click\",\"handleClick\"]]]]],[\"q2-btn_2\",[[1,\"q2-btn\",{\"ariaExpanded\":[1,\"aria-expanded\"],\"ariaHasPopup\":[1,\"aria-has-popup\"],\"ariaControls\":[1,\"aria-controls\"],\"ariaSelected\":[1,\"aria-selected\"],\"label\":[1537],\"hideLabel\":[1540,\"hide-label\"],\"ariaLabel\":[1537,\"aria-label\"],\"tabIndex\":[2,\"tab-index\"],\"intent\":[513],\"color\":[513],\"disabled\":[516],\"type\":[513],\"loading\":[516],\"badge\":[516],\"active\":[516],\"fab\":[516],\"block\":[516],\"iconPosition\":[32]},[[2,\"click\",\"disable\"],[0,\"focus\",\"delegateFocus\"]]],[1,\"q2-loading\",{\"type\":[513],\"shape\":[513],\"modifiers\":[513],\"counts\":[513],\"label\":[1537],\"ariaLabel\":[513,\"aria-label\"],\"inline\":[516]}]]],[\"q2-badge_2\",[[1,\"q2-input\",{\"value\":[1025],\"label\":[1537],\"hideLabel\":[1540,\"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],\"min\":[514],\"max\":[514],\"step\":[514],\"formatModifier\":[513,\"format-modifier\"],\"maxlength\":[1538],\"pseudo\":[516],\"showVisibilityToggle\":[516,\"show-visibility-toggle\"],\"textHidden\":[1540,\"text-hidden\"],\"badgeValue\":[513,\"badge-value\"],\"badgeTheme\":[513,\"badge-theme\"],\"ariaControls\":[1,\"aria-controls\"],\"role\":[1],\"ariaOwns\":[1,\"aria-owns\"],\"ariaLabel\":[1537,\"aria-label\"],\"ariaHaspopup\":[1,\"aria-haspopup\"],\"ariaExpanded\":[1,\"aria-expanded\"],\"ariaActivedescendant\":[8,\"aria-activedescendant\"],\"current\":[1],\"errors\":[16],\"hints\":[16],\"formattedValueObject\":[32],\"hasFocus\":[32]},[[0,\"focus\",\"onHostElementFocus\"],[0,\"change\",\"onHostElementChange\"]]],[1,\"q2-badge\",{\"value\":[514],\"maxLength\":[514,\"max-length\"],\"position\":[513],\"size\":[513],\"theme\":[513],\"status\":[513]}]]]]"), options);
13
+ return bootstrapLazy(JSON.parse("[[\"q2-icon\",[[1,\"q2-icon\",{\"type\":[513],\"label\":[513],\"inline\":[516]}]]],[\"q2-select\",[[1,\"q2-select\",{\"label\":[1537],\"hideLabel\":[1540,\"hide-label\"],\"value\":[1025],\"ariaLabel\":[1537,\"aria-label\"],\"selectedOptions\":[1040],\"disabled\":[516],\"readonly\":[516],\"invalid\":[516],\"errors\":[16],\"multiple\":[516],\"minRows\":[2,\"min-rows\"],\"popDirection\":[513,\"pop-direction\"],\"searchable\":[516],\"multilineOptions\":[516,\"multiline-options\"],\"optional\":[516],\"placeholder\":[513],\"hoist\":[4],\"open\":[32],\"showSelected\":[32],\"searchText\":[32],\"hasCustomDisplay\":[32],\"inputFocused\":[32],\"statusMessage\":[32],\"prioritizeSearch\":[32],\"structuredSelectedOptions\":[32]},[[0,\"keydown\",\"keydownHandler\"],[0,\"change\",\"onHostElementChange\"],[0,\"input\",\"onHostElementInput\"],[0,\"focus\",\"delegateFocus\"],[0,\"focusout\",\"handleFocusout\"]]]]],[\"q2-action-sheet\",[[1,\"q2-action-sheet\",{\"data\":[1040],\"hideClose\":[4,\"hide-close\"],\"isScrollable\":[32],\"renderStatus\":[32],\"hide\":[64],\"show\":[64]}]]],[\"q2-calendar\",[[1,\"q2-calendar\",{\"value\":[1537],\"label\":[513],\"hideLabel\":[516,\"hide-label\"],\"ariaLabel\":[513,\"aria-label\"],\"optional\":[516],\"disabled\":[516],\"readonly\":[516],\"invalid\":[1540],\"typeable\":[516],\"clearable\":[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\"],\"assume\":[513],\"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\"],[0,\"focus\",\"delegateFocus\"],[0,\"clear\",\"handleClear\"]]]]],[\"q2-dropdown\",[[1,\"q2-dropdown\",{\"type\":[513],\"icon\":[513],\"label\":[513],\"hideLabel\":[516,\"hide-label\"],\"ariaLabel\":[1537,\"aria-label\"],\"disabled\":[516],\"popDirection\":[513,\"pop-direction\"],\"name\":[513],\"context\":[513],\"contextValue\":[513,\"context-value\"],\"resolvedType\":[513,\"resolved-type\"],\"block\":[516],\"dropdownOpen\":[32]},[[0,\"focus\",\"delegateFocus\"]]]]],[\"q2-editable-field\",[[1,\"q2-editable-field\",{\"value\":[1537],\"editing\":[1540],\"label\":[1537],\"hideLabel\":[1540,\"hide-label\"],\"ariaLabel\":[1537,\"aria-label\"],\"type\":[513],\"formatModifier\":[513,\"format-modifier\"],\"truncated\":[513],\"maxlength\":[514],\"persistentLabel\":[516,\"persistent-label\"],\"disabled\":[516],\"hints\":[16],\"errors\":[16]},[[0,\"change\",\"onHostElementChange\"],[0,\"focus\",\"delegateFocus\"]]]]],[\"q2-pagination\",[[1,\"q2-pagination\",{\"recordType\":[1,\"record-type\"],\"perPage\":[2,\"per-page\"],\"total\":[514],\"page\":[1538],\"pages\":[1538],\"recordsOnly\":[1540,\"records-only\"],\"pagesOnly\":[1540,\"pages-only\"],\"isSmall\":[32]},[[0,\"focus\",\"onHostElementFocus\"]]]]],[\"q2-pill\",[[1,\"q2-pill\",{\"hoist\":[4],\"disabled\":[516],\"active\":[1540],\"open\":[1540],\"multiple\":[516],\"maxLength\":[514,\"max-length\"],\"label\":[513],\"value\":[513],\"theme\":[513],\"selectedOptions\":[1040],\"popoverMinHeight\":[2,\"popover-min-height\"],\"popoverDirection\":[1,\"popover-direction\"],\"hasOptions\":[32],\"selectedOptionElements\":[32]},[[0,\"focus\",\"delegateFocus\"],[0,\"popoverStateChanged\",\"popoverStateHandler\"]]]]],[\"q2-tab-container\",[[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\"],[0,\"badge\",\"onBadge\"]]]]],[\"q2-tag\",[[1,\"q2-tag\",{\"hoist\":[4],\"open\":[1540],\"label\":[513],\"theme\":[513],\"popoverMinHeight\":[2,\"popover-min-height\"],\"popoverDirection\":[1,\"popover-direction\"],\"hasOptions\":[32]},[[0,\"focus\",\"delegateFocus\"],[0,\"popoverStateChanged\",\"popoverStateHandler\"]]]]],[\"q2-carousel\",[[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],\"applyPaginationFocus\":[32],\"autoPlayInProgress\":[32],\"compactMode\":[32],\"carouselWrapperWidth\":[32]},[[0,\"change\",\"onHostElementChange\"],[0,\"clickCarouselPane\",\"carouselPaneClicked\"],[0,\"focus\",\"delegateFocus\"]]]]],[\"q2-month-picker\",[[1,\"q2-month-picker\",{\"year\":[1538],\"disabledMonths\":[16],\"today\":[1],\"selectedIndex\":[32],\"focusedIndex\":[32],\"showYearLayer\":[32]}]]],[\"q2-section\",[[1,\"q2-section\",{\"label\":[513],\"collapsible\":[516],\"noCollapseIcon\":[516,\"no-collapse-icon\"],\"expanded\":[1540],\"contentHeight\":[32],\"hideContent\":[32],\"hasYieldedHeader\":[32]},[[0,\"change\",\"defaultChangeHandler\"],[0,\"focus\",\"delegateFocus\"]]]]],[\"q2-stepper\",[[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\"],[0,\"focus\",\"delegateFocus\"],[0,\"statusChange\",\"statusChangeHandler\"]]]]],[\"q2-card\",[[1,\"q2-card\",{\"title\":[513],\"description\":[513],\"avatarName\":[513,\"avatar-name\"],\"avatarInitials\":[513,\"avatar-initials\"],\"avatarIcon\":[513,\"avatar-icon\"],\"avatarSrc\":[513,\"avatar-src\"],\"isSmall\":[516,\"is-small\"],\"bar\":[513],\"isStatic\":[516,\"is-static\"],\"isTouch\":[516,\"is-touch\"],\"url\":[513],\"target\":[513],\"isAutoTouch\":[32],\"isAutoSmall\":[32]},[[0,\"focus\",\"onHostElementFocus\"]]]]],[\"q2-chart-donut\",[[1,\"q2-chart-donut\",{\"chartName\":[513,\"chart-name\"],\"summaryIcon\":[513,\"summary-icon\"],\"summaryName\":[513,\"summary-name\"],\"innerRadius\":[1025,\"inner-radius\"],\"outerRadius\":[1025,\"outer-radius\"],\"minSliceSize\":[1,\"min-slice-size\"],\"selectedOffset\":[2,\"selected-offset\"],\"hoverScaleSize\":[2,\"hover-scale-size\"],\"format\":[513],\"isClickable\":[516,\"is-clickable\"],\"data\":[16],\"selectedId\":[32],\"hoveredId\":[32],\"selectById\":[64],\"selectByIndex\":[64],\"clearSelection\":[64]},[[0,\"focus\",\"delegateFocus\"]]]]],[\"q2-checkbox\",[[1,\"q2-checkbox\",{\"checked\":[1540],\"type\":[513],\"label\":[1537],\"hideLabel\":[1540,\"hide-label\"],\"ariaLabel\":[1537,\"aria-label\"],\"indeterminate\":[516],\"disabled\":[516],\"readonly\":[516],\"value\":[513],\"name\":[513],\"hasError\":[516,\"has-error\"],\"groupDisabled\":[516,\"group-disabled\"],\"alignment\":[513],\"description\":[513]},[[0,\"change\",\"defaultChangeHandler\"],[0,\"focus\",\"delegateFocus\"]]]]],[\"q2-checkbox-group\",[[1,\"q2-checkbox-group\",{\"label\":[513],\"value\":[1040],\"disabled\":[516],\"readonly\":[516],\"optional\":[516],\"hasError\":[516,\"has-error\"]},[[0,\"change\",\"onHostElementChange\"]]]]],[\"q2-radio-group\",[[1,\"q2-radio-group\",{\"label\":[513],\"value\":[1025],\"disabled\":[516],\"name\":[513],\"optional\":[516],\"readonly\":[516],\"tileLayout\":[516,\"tile-layout\"],\"tileAlignment\":[513,\"tile-alignment\"],\"hasError\":[516,\"has-error\"],\"tilelayout\":[516]},[[0,\"change\",\"onHostElementChange\"],[0,\"focus\",\"delegateFocus\"],[0,\"keydown\",\"keydownHandler\"]]]]],[\"q2-stepper-vertical\",[[1,\"q2-stepper-vertical\",{\"currentStepId\":[1537,\"current-step-id\"],\"structuredPanes\":[32]},[[0,\"change\",\"defaultChangeHandler\"],[0,\"focus\",\"delegateFocus\"],[0,\"statusChange\",\"statusChangeHandler\"]]]]],[\"q2-textarea\",[[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\",[[4,\"q2-carousel-pane\",{\"index\":[2],\"siblingCount\":[2,\"sibling-count\"],\"isActivePane\":[516,\"is-active-pane\"],\"label\":[513]}]]],[\"q2-chart-area\",[[1,\"q2-chart-area\",{\"data\":[16],\"alignChartName\":[513,\"align-chart-name\"],\"chartName\":[513,\"chart-name\"],\"lineColor\":[513,\"line-color\"],\"pointerLineColor\":[513,\"pointer-line-color\"],\"pointerLineStyle\":[513,\"pointer-line-style\"],\"areaColor\":[513,\"area-color\"],\"dataNamesOverflow\":[513,\"data-names-overflow\"],\"dataNamesWidth\":[514,\"data-names-width\"],\"format\":[513],\"formatModifier\":[513,\"format-modifier\"],\"hideNameAxisLabels\":[516,\"hide-name-axis-labels\"],\"hideValueAxisLabels\":[516,\"hide-value-axis-labels\"],\"offsetDataNames\":[516,\"offset-data-names\"],\"offsetDataValues\":[516,\"offset-data-values\"],\"showChartName\":[516,\"show-chart-name\"],\"showDatapointLabels\":[516,\"show-datapoint-labels\"],\"showGradient\":[516,\"show-gradient\"],\"gridLines\":[513,\"grid-lines\"]}]]],[\"q2-chart-bar\",[[1,\"q2-chart-bar\",{\"data\":[16],\"alignChartName\":[513,\"align-chart-name\"],\"chartName\":[513,\"chart-name\"],\"color\":[513],\"dataNamesOverflow\":[513,\"data-names-overflow\"],\"dataNamesWidth\":[514,\"data-names-width\"],\"format\":[513],\"formatModifier\":[513,\"format-modifier\"],\"hideBarLabels\":[516,\"hide-bar-labels\"],\"hideValueAxisLabels\":[516,\"hide-value-axis-labels\"],\"offsetDataNames\":[516,\"offset-data-names\"],\"offsetDataValues\":[516,\"offset-data-values\"],\"orientation\":[513],\"showChartName\":[516,\"show-chart-name\"],\"sort\":[516]}]]],[\"q2-loading-element\",[[0,\"q2-loading-element\",{\"shape\":[513],\"width\":[513],\"height\":[513],\"borderRadius\":[513,\"border-radius\"]}]]],[\"q2-loc\",[[1,\"q2-loc\",{\"value\":[513],\"substitutions\":[16]}]]],[\"q2-radio\",[[1,\"q2-radio\",{\"label\":[1537],\"hideLabel\":[516,\"hide-label\"],\"value\":[513],\"disabled\":[516],\"checked\":[516],\"name\":[513],\"ariaLabel\":[1537,\"aria-label\"],\"groupDisabled\":[4,\"group-disabled\"],\"groupReadonly\":[4,\"group-readonly\"],\"groupTileLayout\":[4,\"group-tile-layout\"]},[[0,\"click\",\"onHostClick\"],[0,\"focus\",\"delegateFocus\"]]]]],[\"q2-stepper-pane\",[[1,\"q2-stepper-pane\",{\"label\":[513],\"description\":[513],\"isActive\":[516,\"is-active\"],\"showWithChildren\":[516,\"show-with-children\"],\"status\":[513],\"isChildActive\":[32]},[[0,\"activeChange\",\"checkForActiveChildren\"]]]]],[\"q2-tab-pane\",[[1,\"q2-tab-pane\",{\"value\":[513],\"label\":[513],\"name\":[513],\"selected\":[516],\"badgeCount\":[514,\"badge-count\"],\"badgeDescription\":[513,\"badge-description\"],\"index\":[2],\"guid\":[2]}]]],[\"q2-tooltip\",[[1,\"q2-tooltip\",{\"label\":[513],\"block\":[516],\"multiline\":[516],\"persistent\":[516],\"immediate\":[516],\"position\":[513],\"focusClass\":[32]},[[0,\"keyup\",\"keyUpHandler\"],[2,\"focus\",\"focusHandler\"],[0,\"focusout\",\"focusOutHandler\"]]]]],[\"tecton-tab-pane\",[[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\"],\"badgeCount\":[514,\"badge-count\"],\"badgeDescription\":[513,\"badge-description\"],\"authPayload\":[16],\"showForm\":[4,\"show-form\"],\"_showForm\":[32]}]]],[\"q2-dropdown-item\",[[1,\"q2-dropdown-item\",{\"disabled\":[516],\"removable\":[516],\"separator\":[516],\"label\":[513],\"ariaLabel\":[513,\"aria-label\"],\"value\":[513]},[[0,\"focus\",\"onHostElementFocus\"]]]]],[\"q2-avatar\",[[1,\"q2-avatar\",{\"name\":[513],\"initials\":[513],\"src\":[513],\"icon\":[1],\"badSrc\":[32],\"isLoaded\":[32]}]]],[\"q2-optgroup_2\",[[1,\"q2-option\",{\"role\":[513],\"display\":[1025],\"value\":[513],\"disabled\":[516],\"disabledGroup\":[516,\"disabled-group\"],\"selected\":[516],\"hidden\":[516],\"multiline\":[516],\"active\":[516],\"_multiSelectHidden\":[516,\"_multiselecthidden\"]}],[1,\"q2-optgroup\",{\"disabled\":[516],\"label\":[513],\"hidden\":[32]}]]],[\"q2-message\",[[1,\"q2-message\",{\"type\":[513],\"appearance\":[513],\"description\":[516],\"presentToggle\":[32],\"present\":[64]},[[0,\"focus\",\"delegateFocus\"]]]]],[\"click-elsewhere\",[[0,\"click-elsewhere\"]]],[\"q2-option-list_2\",[[1,\"q2-popover\",{\"direction\":[513],\"align\":[513],\"open\":[1540],\"block\":[516],\"minHeight\":[2,\"min-height\"],\"controlElement\":[16],\"currentDirection\":[32],\"show\":[32],\"toggle\":[64]},[[0,\"popoverState\",\"popoverStateHandler\"]]],[1,\"q2-option-list\",{\"role\":[513],\"customSearch\":[516,\"custom-search\"],\"noSelect\":[516,\"no-select\"],\"align\":[513],\"selectedOptions\":[1040],\"multiple\":[516],\"disabled\":[516],\"showSelected\":[1540,\"show-selected\"],\"type\":[1],\"hasOptions\":[32],\"setDefaultActiveElement\":[64],\"setActiveElement\":[64],\"handleExternalKeydown\":[64],\"getContents\":[64],\"getOptions\":[64]},[[0,\"focus\",\"delegateFocus\"],[0,\"click\",\"handleClick\"]]]]],[\"q2-btn_2\",[[1,\"q2-btn\",{\"ariaExpanded\":[1,\"aria-expanded\"],\"ariaHasPopup\":[1,\"aria-has-popup\"],\"ariaControls\":[1,\"aria-controls\"],\"ariaSelected\":[1,\"aria-selected\"],\"label\":[1537],\"hideLabel\":[1540,\"hide-label\"],\"ariaLabel\":[1537,\"aria-label\"],\"tabIndex\":[2,\"tab-index\"],\"intent\":[513],\"color\":[513],\"disabled\":[516],\"type\":[513],\"loading\":[516],\"badge\":[516],\"active\":[516],\"fab\":[516],\"block\":[516],\"iconPosition\":[32]},[[2,\"click\",\"disable\"],[0,\"focus\",\"delegateFocus\"]]],[1,\"q2-loading\",{\"type\":[513],\"shape\":[513],\"modifiers\":[513],\"counts\":[513],\"label\":[1537],\"ariaLabel\":[513,\"aria-label\"],\"inline\":[516]}]]],[\"q2-badge_2\",[[1,\"q2-input\",{\"value\":[1025],\"label\":[1537],\"hideLabel\":[1540,\"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],\"min\":[514],\"max\":[514],\"step\":[514],\"formatModifier\":[513,\"format-modifier\"],\"maxlength\":[1538],\"pseudo\":[516],\"showVisibilityToggle\":[516,\"show-visibility-toggle\"],\"textHidden\":[1540,\"text-hidden\"],\"badgeValue\":[513,\"badge-value\"],\"badgeTheme\":[513,\"badge-theme\"],\"ariaControls\":[1,\"aria-controls\"],\"role\":[1],\"ariaOwns\":[1,\"aria-owns\"],\"ariaLabel\":[1537,\"aria-label\"],\"ariaHaspopup\":[1,\"aria-haspopup\"],\"ariaExpanded\":[1,\"aria-expanded\"],\"ariaActivedescendant\":[8,\"aria-activedescendant\"],\"current\":[1],\"errors\":[16],\"hints\":[16],\"formattedValueObject\":[32],\"hasFocus\":[32]},[[0,\"focus\",\"onHostElementFocus\"],[0,\"change\",\"onHostElementChange\"]]],[1,\"q2-badge\",{\"value\":[514],\"maxLength\":[514,\"max-length\"],\"position\":[513],\"size\":[513],\"theme\":[513],\"status\":[513]}]]]]"), options);
14
14
  });
15
15
  };
16
16
 
@@ -3262,7 +3262,7 @@ const Q2Input = class {
3262
3262
  }
3263
3263
  /* tslint:disable:cyclomatic-complexity */
3264
3264
  inputContainerDOM() {
3265
- return (h("div", { class: "input-container" }, h("div", { class: "input-icons-container-left" }, this.formattedValueObject.prefix && (h("span", { class: "input-prefix" }, this.formattedValueObject.prefix)), this.computedIconLeft && (h("q2-icon", { type: this.computedIconLeft, class: this.computedClassForIconLeft })), this.showIconSeparator && h("div", { class: "vertical-separator" }), this.hasError && this.type === 'currency' && (h("q2-icon", { type: "error", class: "icon-error" }))), this.pseudo ? this.pseudoInputDOM() : this.standardInputDOM(), h("div", { class: "input-icons-container-right" }, this.canClear && (h("q2-btn", { class: "btn-clear", ariaLabel: loc('tecton.element.input.clear', [this.label]), "test-id": "clearButton", onClick: this.onClearInput }, h("q2-icon", { type: "close", class: "icon-clear" }))), ['password', 'text', 'ssn'].includes(this.type) && this.showVisibilityToggle && (h("q2-btn", { class: "btn-visibility-toggle", "test-id": "toggleVisibilityButton", onClick: this.onToggleVisibility }, this.visibilityToggleText)), this.formattedValueObject.suffix && (h("span", { class: "input-suffix" }, this.formattedValueObject.suffix)), this.badgeValue && (h("q2-badge", { size: "large", theme: this.badgeTheme }, this.badgeValue)), this.iconRight && !this.formattedValueObject.suffix && (h("q2-icon", { type: this.iconRight, class: "icon-right" })), this.hasError && this.type !== 'currency' && (h("q2-icon", { type: "error", class: "icon-error" })))));
3265
+ return (h("div", { class: "input-container", tabindex: -1 }, h("div", { class: "input-icons-container-left" }, this.formattedValueObject.prefix && (h("span", { class: "input-prefix" }, this.formattedValueObject.prefix)), this.computedIconLeft && (h("q2-icon", { type: this.computedIconLeft, class: this.computedClassForIconLeft })), this.showIconSeparator && h("div", { class: "vertical-separator" }), this.hasError && this.type === 'currency' && (h("q2-icon", { type: "error", class: "icon-error" }))), this.pseudo ? this.pseudoInputDOM() : this.standardInputDOM(), h("div", { class: "input-icons-container-right" }, this.canClear && (h("q2-btn", { class: "btn-clear", ariaLabel: loc('tecton.element.input.clear', [this.label]), "test-id": "clearButton", onClick: this.onClearInput }, h("q2-icon", { type: "close", class: "icon-clear" }))), ['password', 'text', 'ssn'].includes(this.type) && this.showVisibilityToggle && (h("q2-btn", { class: "btn-visibility-toggle", "test-id": "toggleVisibilityButton", onClick: this.onToggleVisibility }, this.visibilityToggleText)), this.formattedValueObject.suffix && (h("span", { class: "input-suffix" }, this.formattedValueObject.suffix)), this.badgeValue && (h("q2-badge", { size: "large", theme: this.badgeTheme }, this.badgeValue)), this.iconRight && !this.formattedValueObject.suffix && (h("q2-icon", { type: this.iconRight, class: "icon-right" })), this.hasError && this.type !== 'currency' && (h("q2-icon", { type: "error", class: "icon-error" })))));
3266
3266
  }
3267
3267
  /* tslint:enable:cyclomatic-complexity */
3268
3268
  /* tslint:disable:cyclomatic-complexity */
@@ -494,20 +494,26 @@ const Q2OptionList = class {
494
494
  };
495
495
  Q2OptionList.style = stylesCss$1;
496
496
 
497
- const stylesCss = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #33b4ff #06C)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch: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;width:100%}:host([align=right]){display:block;position:absolute;right:0;text-align:end;left:unset}.container{display:none;overflow:hidden;opacity:0;height:0;position:absolute;top:var(--tct-popover-top, var(--t-popover-top, initial));visibility:hidden;background-color:var(--tct-popover-background-color, var(--t-popover-background-color, var(--app-white, #ffffff)));color:var(--tct-popover-text-color, var(--t-popover-text-color, var(--t-text, #4d4d4d)));z-index:var(--tct-popover-z-index, var(--t-popover-z-index, 100));width:max-content;min-width:var(--tct-popover-min-width, var(--t-popover-min-width, 135px));box-shadow:var(--tct-popover-box-shadow, var(--t-popover-box-shadow, var(--app-shadow-1, 0 2px 4px rgba(0, 0, 0, 0.3))));text-align:start;left:0;transition:opacity var(--app-tween-1, 0.2s ease);border-radius:var(--tct-popover-border-radius, var(--t-popover-border-radius, 0));max-height:var(--comp-pop-max-height);--comp-scrollbar-size:var(--tct-scrollbar-size, var(--t-scrollbar-size, var(--app-scale-1x, 5px)));--comp-scrollbar-border-radius:var(--tct-scrollbar-border-radius, var(--t-scrollbar-border-radius, var(--app-border-radius-1, 3px)));--comp-scrollbar-color:var(--tct-scrollbar-color, var(--t-scrollbar-color, var(--t-a11y-gray-color, #747474)));scrollbar-width:thin;scrollbar-color:var(--comp-scrollbar-color) transparent}.container::-webkit-scrollbar{width:var(--comp-scrollbar-size);height:var(--comp-scrollbar-size);margin:5px}.container::-webkit-scrollbar-thumb{background:var(--comp-scrollbar-color);border-radius:var(--comp-scrollbar-border-radius)}.container::-webkit-scrollbar-track{background:transparent;border-radius:var(--comp-scrollbar-border-radius)}:host([block]) .container{left:unset;right:unset;width:100%;min-width:unset}:host([align=right]) .container{right:0;text-align:end;left:unset}.container :host([open]){display:block}:host([open]) .container.show{height:auto;overflow:auto;opacity:1;visibility:visible}.container.up{bottom:var(--comp-pop-offset)}click-elsewhere{position:relative;display:block}.content{height:auto}";
497
+ const stylesCss = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #33b4ff #06C)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch: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;width:100%}:host([align=right]){display:block;position:absolute;right:0;text-align:end;left:unset}.container{display:none;overflow:hidden;opacity:0;height:0;position:absolute;top:var(--tct-popover-top, var(--t-popover-top, initial));visibility:hidden;background-color:var(--tct-popover-background-color, var(--t-popover-background-color, var(--app-white, #ffffff)));color:var(--tct-popover-text-color, var(--t-popover-text-color, var(--t-text, #4d4d4d)));z-index:var(--tct-popover-z-index, var(--t-popover-z-index, 100));width:max-content;min-width:var(--tct-popover-min-width, var(--t-popover-min-width, 135px));box-shadow:var(--tct-popover-box-shadow, var(--t-popover-box-shadow, var(--app-shadow-1, 0 2px 4px rgba(0, 0, 0, 0.3))));text-align:start;left:0;transition:opacity var(--app-tween-1, 0.2s ease), max-height var(--app-tween-1, 0.2s ease);border-radius:var(--tct-popover-border-radius, var(--t-popover-border-radius, 0));max-height:var(--comp-pop-max-height);--comp-scrollbar-size:var(--tct-scrollbar-size, var(--t-scrollbar-size, var(--app-scale-1x, 5px)));--comp-scrollbar-border-radius:var(--tct-scrollbar-border-radius, var(--t-scrollbar-border-radius, var(--app-border-radius-1, 3px)));--comp-scrollbar-color:var(--tct-scrollbar-color, var(--t-scrollbar-color, var(--t-a11y-gray-color, #747474)));scrollbar-width:thin;scrollbar-color:var(--comp-scrollbar-color) transparent}.container::-webkit-scrollbar{width:var(--comp-scrollbar-size);height:var(--comp-scrollbar-size);margin:5px}.container::-webkit-scrollbar-thumb{background:var(--comp-scrollbar-color);border-radius:var(--comp-scrollbar-border-radius)}.container::-webkit-scrollbar-track{background:transparent;border-radius:var(--comp-scrollbar-border-radius)}:host([block]) .container{left:unset;right:unset;width:100%;min-width:unset}:host([align=right]) .container{right:0;text-align:end;left:unset}.container :host([open]){display:block}:host([open]) .container.show{height:auto;overflow:auto;opacity:1;visibility:visible}.container.up{bottom:var(--comp-pop-offset)}click-elsewhere{position:relative;display:block}.content{height:auto}";
498
498
 
499
499
  const Q2Popover = class {
500
500
  constructor(hostRef) {
501
501
  registerInstance(this, hostRef);
502
502
  this.popoverStateChanged = createEvent(this, "popoverStateChanged", 7);
503
503
  this.scheduledAfterRender = [];
504
+ /// Helpers ///
505
+ this.viewPortChanged = () => {
506
+ if (!this.open)
507
+ return;
508
+ this.determinePopDirection();
509
+ };
504
510
  this.direction = undefined;
505
511
  this.align = undefined;
506
512
  this.open = undefined;
507
513
  this.block = undefined;
508
514
  this.minHeight = undefined;
509
515
  this.controlElement = undefined;
510
- this.privateDirection = 'down';
516
+ this.currentDirection = undefined;
511
517
  this.show = false;
512
518
  }
513
519
  /// Lifecycle hooks ///
@@ -521,6 +527,9 @@ const Q2Popover = class {
521
527
  this.scheduledAfterRender = [];
522
528
  }, 25);
523
529
  }
530
+ disconnectedCallback() {
531
+ this.removeViewportListeners();
532
+ }
524
533
  /// Methods ///
525
534
  async toggle() {
526
535
  this.open = !this.open;
@@ -530,9 +539,18 @@ const Q2Popover = class {
530
539
  this.popoverStateChanged.emit({ open });
531
540
  this.scheduledAfterRender.push(resizeIframe);
532
541
  if (open) {
542
+ this.addViewportListeners();
533
543
  this.determinePopDirection();
534
544
  }
535
545
  else {
546
+ this.removeViewportListeners();
547
+ // Reset currentDirection after close transition completes
548
+ this.containerElement.addEventListener('transitionend', () => {
549
+ if (this.open)
550
+ return;
551
+ this.currentDirection = undefined;
552
+ this.containerElement.style.removeProperty('--comp-pop-max-height');
553
+ }, { once: true });
536
554
  this.show = false;
537
555
  }
538
556
  }
@@ -544,17 +562,24 @@ const Q2Popover = class {
544
562
  this.open = open;
545
563
  event.stopPropagation();
546
564
  }
565
+ addViewportListeners() {
566
+ // window.visualViewport.addEventListener('scroll', this.viewPortChanged);
567
+ window.visualViewport.addEventListener('resize', this.viewPortChanged);
568
+ }
569
+ removeViewportListeners() {
570
+ // window.visualViewport.removeEventListener('scroll', this.viewPortChanged);
571
+ window.visualViewport.removeEventListener('resize', this.viewPortChanged);
572
+ }
547
573
  async setDirectionAndShow(direction) {
548
574
  if (direction === 'up') {
549
575
  this.determinePopOffset();
550
576
  }
551
- this.privateDirection = direction;
577
+ this.currentDirection = direction;
552
578
  this.show = true;
553
579
  }
554
- /// Helpers ///
555
580
  async determinePopDirection() {
556
- var _a, _b, _c, _d, _e;
557
- const { containerElement, contentElement, direction, controlElement } = this;
581
+ var _a, _b, _c, _d, _e, _f, _g;
582
+ const { containerElement, contentElement, direction, controlElement, currentDirection } = this;
558
583
  if (containerElement)
559
584
  containerElement.style.maxHeight = null;
560
585
  // If direction defined, use it
@@ -569,32 +594,46 @@ const Q2Popover = class {
569
594
  height: 0,
570
595
  };
571
596
  const contentHeight = contentElement.clientHeight;
572
- const scrollY = ((_c = (_b = window.Tecton) === null || _b === void 0 ? void 0 : _b.platformDimensions) === null || _c === void 0 ? void 0 : _c.scrollY) || 0;
573
- const innerHeight = ((_e = (_d = window.Tecton) === null || _d === void 0 ? void 0 : _d.platformDimensions) === null || _e === void 0 ? void 0 : _e.innerHeight) || window.innerHeight;
597
+ const scrollY = ((_c = (_b = window.Tecton) === null || _b === void 0 ? void 0 : _b.platformDimensions) === null || _c === void 0 ? void 0 : _c.scrollY) ||
598
+ ((_d = window.visualViewport) === null || _d === void 0 ? void 0 : _d.offsetTop) || // Only Android Chrome provides this which we need when scrolled
599
+ 0;
600
+ const innerHeight = ((_f = (_e = window.Tecton) === null || _e === void 0 ? void 0 : _e.platformDimensions) === null || _f === void 0 ? void 0 : _f.innerHeight) || ((_g = window.visualViewport) === null || _g === void 0 ? void 0 : _g.height) || window.innerHeight;
574
601
  const bottomOffset = scrollY + innerHeight - topOffset - height;
575
602
  const canShowFullSizeBelow = bottomOffset > contentHeight;
576
- const canShowFullSizeAbove = contentHeight <= topOffset || !this.minHeight;
603
+ const canShowFullSizeAbove = contentHeight <= topOffset;
577
604
  let determinedDirection;
578
605
  // Show the full-size popover below or above if it will fit
579
- if (canShowFullSizeBelow)
606
+ if (currentDirection === 'down' && canShowFullSizeBelow)
607
+ return this.setDirectionAndShow('down');
608
+ else if (currentDirection === 'up' && canShowFullSizeAbove)
609
+ return this.setDirectionAndShow('up');
610
+ else if (currentDirection === undefined && canShowFullSizeBelow)
580
611
  determinedDirection = 'down';
581
- else if (canShowFullSizeAbove)
612
+ else if (currentDirection === undefined && canShowFullSizeAbove)
582
613
  determinedDirection = 'up';
583
614
  if (determinedDirection)
584
615
  return this.setDirectionAndShow(determinedDirection);
585
- // If full size will not fit and minHeight is set, then make as tall as possible
616
+ // If full size will not fit then make it as tall as possible
586
617
  const { minHeight = 150 } = this;
587
618
  const displayBuffer = 5;
588
- const canShowSmallBelow = bottomOffset >= minHeight + displayBuffer;
619
+ const canShowMinHeightBelow = bottomOffset >= minHeight + displayBuffer;
589
620
  let maxHeight;
590
- if (canShowSmallBelow) {
621
+ if (currentDirection === 'down') {
591
622
  maxHeight = Math.max(bottomOffset - displayBuffer, minHeight);
592
623
  determinedDirection = 'down';
593
624
  }
594
- else {
625
+ else if (currentDirection === 'up') {
595
626
  maxHeight = Math.max(topOffset - displayBuffer, minHeight);
596
627
  determinedDirection = 'up';
597
628
  }
629
+ else if (canShowMinHeightBelow) {
630
+ maxHeight = Math.max(bottomOffset - displayBuffer, minHeight);
631
+ determinedDirection = 'down';
632
+ }
633
+ else {
634
+ maxHeight = Math.max(topOffset - scrollY - displayBuffer, minHeight);
635
+ determinedDirection = 'up';
636
+ }
598
637
  containerElement.style.setProperty('--comp-pop-max-height', `${maxHeight}px`);
599
638
  return this.setDirectionAndShow(determinedDirection);
600
639
  }
@@ -606,7 +645,7 @@ const Q2Popover = class {
606
645
  }
607
646
  /// DOM ///
608
647
  render() {
609
- const containerClasses = ['container', this.privateDirection];
648
+ const containerClasses = ['container', this.currentDirection];
610
649
  if (this.show)
611
650
  containerClasses.push('show');
612
651
  return (h("div", { ref: el => (this.containerElement = el), class: containerClasses.join(' '), role: "menu" }, h("div", { ref: el => (this.contentElement = el), class: "content" }, h("slot", null))));
@@ -193,7 +193,10 @@ const Q2Select = class {
193
193
  get popoverMinHeight() {
194
194
  const { minRows } = this;
195
195
  const firstOption = this.hostElement.querySelector('q2-option:not([hidden])');
196
- const minHeight = firstOption ? window.getComputedStyle(firstOption).minHeight : '44px';
196
+ let minHeight = firstOption && window.getComputedStyle(firstOption).minHeight;
197
+ // Safari doesn't return a min-height for non-visible items
198
+ if (!minHeight || minHeight === '0px')
199
+ minHeight = '44px';
197
200
  return minRows * parseInt(minHeight);
198
201
  }
199
202
  get selectedDisplay() {