q2-tecton-elements 1.21.2 → 1.22.1

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 (152) hide show
  1. package/dist/cjs/installCanvasRenderer-b4d10c92.js +38433 -0
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/q2-badge_2.cjs.entry.js +5 -3
  4. package/dist/cjs/q2-calendar.cjs.entry.js +75 -55
  5. package/dist/cjs/q2-carousel.cjs.entry.js +3 -3
  6. package/dist/cjs/q2-chart-bar.cjs.entry.js +4679 -0
  7. package/dist/cjs/q2-chart-donut.cjs.entry.js +357 -35592
  8. package/dist/cjs/q2-checkbox.cjs.entry.js +1 -1
  9. package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
  10. package/dist/cjs/q2-radio.cjs.entry.js +1 -1
  11. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  12. package/dist/collection/collection-manifest.json +1 -0
  13. package/dist/collection/components/q2-calendar/index.js +43 -2
  14. package/dist/collection/components/q2-chart-bar/index.js +466 -0
  15. package/dist/collection/components/q2-chart-bar/styles.css +85 -0
  16. package/dist/collection/components/q2-chart-donut/index.js +3 -3
  17. package/dist/collection/components/q2-checkbox/styles.css +5 -1
  18. package/dist/collection/components/q2-editable-field/styles.css +1 -1
  19. package/dist/collection/components/q2-input/formatting/phone.js +2 -2
  20. package/dist/collection/components/q2-input/index.js +21 -0
  21. package/dist/collection/components/q2-input/styles.css +2 -2
  22. package/dist/collection/components/q2-radio/styles.css +1 -1
  23. package/dist/collection/utils/charting.js +182 -0
  24. package/dist/components/click-elsewhere.d.ts +11 -0
  25. package/dist/components/click-elsewhere.js +6 -0
  26. package/dist/components/index.d.ts +62 -0
  27. package/dist/components/index.js +42 -0
  28. package/dist/components/index10.js +84 -0
  29. package/dist/components/index11.js +383 -0
  30. package/dist/components/index12.js +125 -0
  31. package/dist/components/index13.js +602 -0
  32. package/dist/components/index2.js +100 -0
  33. package/dist/components/index3.js +90 -0
  34. package/dist/components/index4.js +62 -0
  35. package/dist/components/index5.js +146 -0
  36. package/dist/components/index6.js +145 -0
  37. package/dist/components/index7.js +2960 -0
  38. package/dist/components/index8.js +3356 -0
  39. package/dist/components/index9.js +101 -0
  40. package/dist/components/installCanvasRenderer.js +38282 -0
  41. package/dist/components/q2-avatar.d.ts +11 -0
  42. package/dist/components/q2-avatar.js +6 -0
  43. package/dist/components/q2-badge.d.ts +11 -0
  44. package/dist/components/q2-badge.js +6 -0
  45. package/dist/components/q2-btn.d.ts +11 -0
  46. package/dist/components/q2-btn.js +6 -0
  47. package/dist/components/q2-calendar.d.ts +11 -0
  48. package/dist/components/q2-calendar.js +3755 -0
  49. package/dist/components/q2-card.d.ts +11 -0
  50. package/dist/components/q2-card.js +187 -0
  51. package/dist/components/q2-carousel-pane.d.ts +11 -0
  52. package/dist/components/q2-carousel-pane.js +97 -0
  53. package/dist/components/q2-carousel.d.ts +11 -0
  54. package/dist/components/q2-carousel.js +5379 -0
  55. package/dist/components/q2-chart-bar.d.ts +11 -0
  56. package/dist/components/q2-chart-bar.js +4710 -0
  57. package/dist/components/q2-chart-donut.d.ts +11 -0
  58. package/dist/components/q2-chart-donut.js +4887 -0
  59. package/dist/components/q2-checkbox-group.d.ts +11 -0
  60. package/dist/components/q2-checkbox-group.js +114 -0
  61. package/dist/components/q2-checkbox.d.ts +11 -0
  62. package/dist/components/q2-checkbox.js +138 -0
  63. package/dist/components/q2-dropdown-item.d.ts +11 -0
  64. package/dist/components/q2-dropdown-item.js +6 -0
  65. package/dist/components/q2-dropdown.d.ts +11 -0
  66. package/dist/components/q2-dropdown.js +345 -0
  67. package/dist/components/q2-editable-field.d.ts +11 -0
  68. package/dist/components/q2-editable-field.js +220 -0
  69. package/dist/components/q2-icon.d.ts +11 -0
  70. package/dist/components/q2-icon.js +6 -0
  71. package/dist/components/q2-input.d.ts +11 -0
  72. package/dist/components/q2-input.js +6 -0
  73. package/dist/components/q2-loading-element.d.ts +11 -0
  74. package/dist/components/q2-loading-element.js +52 -0
  75. package/dist/components/q2-loading.d.ts +11 -0
  76. package/dist/components/q2-loading.js +6 -0
  77. package/dist/components/q2-loc.d.ts +11 -0
  78. package/dist/components/q2-loc.js +40 -0
  79. package/dist/components/q2-message.d.ts +11 -0
  80. package/dist/components/q2-message.js +6 -0
  81. package/dist/components/q2-month-picker.d.ts +11 -0
  82. package/dist/components/q2-month-picker.js +189 -0
  83. package/dist/components/q2-optgroup.d.ts +11 -0
  84. package/dist/components/q2-optgroup.js +75 -0
  85. package/dist/components/q2-option-list.d.ts +11 -0
  86. package/dist/components/q2-option-list.js +6 -0
  87. package/dist/components/q2-option.d.ts +11 -0
  88. package/dist/components/q2-option.js +81 -0
  89. package/dist/components/q2-pagination.d.ts +11 -0
  90. package/dist/components/q2-pagination.js +184 -0
  91. package/dist/components/q2-pill.d.ts +11 -0
  92. package/dist/components/q2-pill.js +216 -0
  93. package/dist/components/q2-popover.d.ts +11 -0
  94. package/dist/components/q2-popover.js +6 -0
  95. package/dist/components/q2-radio-group.d.ts +11 -0
  96. package/dist/components/q2-radio-group.js +191 -0
  97. package/dist/components/q2-radio.d.ts +11 -0
  98. package/dist/components/q2-radio.js +105 -0
  99. package/dist/components/q2-section.d.ts +11 -0
  100. package/dist/components/q2-section.js +218 -0
  101. package/dist/components/q2-select.d.ts +11 -0
  102. package/dist/components/q2-select.js +817 -0
  103. package/dist/components/q2-stepper-pane.d.ts +11 -0
  104. package/dist/components/q2-stepper-pane.js +92 -0
  105. package/dist/components/q2-stepper-vertical.d.ts +11 -0
  106. package/dist/components/q2-stepper-vertical.js +311 -0
  107. package/dist/components/q2-stepper.d.ts +11 -0
  108. package/dist/components/q2-stepper.js +252 -0
  109. package/dist/components/q2-tab-container.d.ts +11 -0
  110. package/dist/components/q2-tab-container.js +288 -0
  111. package/dist/components/q2-tab-pane.d.ts +11 -0
  112. package/dist/components/q2-tab-pane.js +58 -0
  113. package/dist/components/q2-tag.d.ts +11 -0
  114. package/dist/components/q2-tag.js +156 -0
  115. package/dist/components/q2-textarea.d.ts +11 -0
  116. package/dist/components/q2-textarea.js +265 -0
  117. package/dist/components/q2-tooltip.d.ts +11 -0
  118. package/dist/components/q2-tooltip.js +112 -0
  119. package/dist/components/shapes.js +91 -0
  120. package/dist/components/tecton-tab-pane.d.ts +11 -0
  121. package/dist/components/tecton-tab-pane.js +111 -0
  122. package/dist/esm/installCanvasRenderer-0143b52d.js +38282 -0
  123. package/dist/esm/loader.js +1 -1
  124. package/dist/esm/q2-badge_2.entry.js +5 -3
  125. package/dist/esm/q2-calendar.entry.js +75 -55
  126. package/dist/esm/q2-carousel.entry.js +3 -3
  127. package/dist/esm/q2-chart-bar.entry.js +4675 -0
  128. package/dist/esm/q2-chart-donut.entry.js +171 -35406
  129. package/dist/esm/q2-checkbox.entry.js +1 -1
  130. package/dist/esm/q2-editable-field.entry.js +1 -1
  131. package/dist/esm/q2-radio.entry.js +1 -1
  132. package/dist/esm/q2-tecton-elements.js +1 -1
  133. package/dist/q2-tecton-elements/p-1f85cced.js +39 -0
  134. package/dist/q2-tecton-elements/{p-89608314.entry.js → p-4625184b.entry.js} +1 -1
  135. package/dist/q2-tecton-elements/{p-9772b15f.entry.js → p-520c40f6.entry.js} +1 -1
  136. package/dist/q2-tecton-elements/p-6b52a262.entry.js +1 -0
  137. package/dist/q2-tecton-elements/p-c4640b55.entry.js +1 -0
  138. package/dist/q2-tecton-elements/{p-7e8f43d1.entry.js → p-cf41970f.entry.js} +1 -1
  139. package/dist/q2-tecton-elements/p-e4dc9ac0.entry.js +1 -0
  140. package/dist/q2-tecton-elements/p-f35bf6a3.entry.js +1 -0
  141. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  142. package/dist/types/components/q2-calendar/index.d.ts +3 -0
  143. package/dist/types/components/q2-chart-bar/index.d.ts +40 -0
  144. package/dist/types/components/q2-chart-donut/index.d.ts +7 -10
  145. package/dist/types/components/q2-input/index.d.ts +1 -0
  146. package/dist/types/components.d.ts +50 -3
  147. package/dist/types/utils/charting.d.ts +14 -0
  148. package/package.json +6 -3
  149. package/dist/q2-tecton-elements/p-0766a694.entry.js +0 -1
  150. package/dist/q2-tecton-elements/p-5f064e1e.entry.js +0 -39
  151. package/dist/q2-tecton-elements/p-8d25ec52.entry.js +0 -1
  152. /package/dist/types/workspace/workspace/{tecton-production_release_1.21.x → tecton-production_release_1.22.x}/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +0 -0
@@ -0,0 +1,345 @@
1
+ import { proxyCustomElement, HTMLElement, h, Fragment } from '@stencil/core/internal/client';
2
+ import { s as setPopProperties, h as handleAriaLabel, i as isEventFromElement, o as overrideFocus, l as loc } from './index13.js';
3
+ import { d as defineCustomElement$6 } from './index2.js';
4
+ import { d as defineCustomElement$5 } from './index5.js';
5
+ import { d as defineCustomElement$4 } from './index6.js';
6
+ import { d as defineCustomElement$3 } from './index7.js';
7
+ import { d as defineCustomElement$2 } from './index9.js';
8
+
9
+ 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}.q2-element-dropdown{display:none;position:absolute;background-color:var(--app-white, #ffffff);color:var(--t-text, #4d4d4d);left:0;width:100%;z-index:100;margin-top:1px;box-shadow:var(--app-shadow-1, 0 2px 4px rgba(0, 0, 0, 0.3));height:0;overflow:hidden;opacity:0;visibility:hidden;transition:opacity var(--app-tween-1, 0.2s ease);border-radius:var(--tct-dropdown-border-radius, --t-dropdown-border-radius, 0);--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}.q2-element-dropdown::-webkit-scrollbar{width:var(--comp-scrollbar-size);height:var(--comp-scrollbar-size);margin:5px}.q2-element-dropdown::-webkit-scrollbar-thumb{background:var(--comp-scrollbar-color);border-radius:var(--comp-scrollbar-border-radius)}.q2-element-dropdown::-webkit-scrollbar-track{background:transparent;border-radius:var(--comp-scrollbar-border-radius)}.q2-element-dropdown.sizable{display:block;height:auto}.dropdown-open .q2-element-dropdown{display:block;height:auto;overflow:auto;opacity:1;visibility:visible}:host([alignment=right]) .q2-element-dropdown{left:auto;right:0}:host([block]) q2-btn,:host([block]){display:block}:host{display:inline-flex}.dropdown-container{position:relative;display:block}.dropdown-button-content{display:flex;align-items:center}.dropdown-button.unstyled .dropdown-button-content{padding:var(--tct-scale-2, var(--app-scale-2x, 10px)) var(--tct-scale-1, var(--app-scale-1x, 5px))}.q2-element-dropdown{width:var(--tct-dropdown-width, var(--t-dropdown-width, 175px))}.q2-element-dropdown.dropup{bottom:var(--tct-btn-icon-height, var(--t-btn-icon-height, 44px))}q2-btn[color=primary]~.q2-element-dropdown.dropup,q2-btn[intent=workflow-primary]~.q2-element-dropdown.dropup{bottom:calc(var(--tct-btn-icon-height, var(--t-btn-icon-height, 44px)) + var(--tct-btn-primary-border-width, var(--t-btn-primary-border-width, 0)))}q2-btn[color=secondary]~.q2-element-dropdown.dropup,q2-btn[intent=workflow-secondary]~.q2-element-dropdown.dropup{bottom:calc(var(--tct-btn-icon-height, var(--t-btn-icon-height, 44px)) + var(--tct-btn-secondary-border-width, var(--t-btn-secondary-border-width, 0)))}q2-btn[intent=neutral]~.q2-element-dropdown.dropup{bottom:calc(var(--tct-btn-icon-height, var(--t-btn-icon-height, 44px)) + var(--tct-btn-neutral-border-width, var(--t-btn-neutral-border-width, 0)))}";
10
+
11
+ const Q2Dropdown$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
12
+ constructor() {
13
+ super();
14
+ this.__registerHost();
15
+ this.__attachShadow();
16
+ this.scheduledAfterRender = [];
17
+ this.dropdownItemSelector = 'q2-dropdown-item:not([disabled]):not([separator])';
18
+ ///// Actions ////////
19
+ this.focusToggle = () => {
20
+ const toggleBtn = this.hostElement.shadowRoot.querySelector('.dropdown-button');
21
+ toggleBtn && toggleBtn.dispatchEvent(new FocusEvent('focus'));
22
+ };
23
+ this.openDropdown = () => {
24
+ setPopProperties(this);
25
+ if (!this.dropdownOpen) {
26
+ this.dropdownOpen = true;
27
+ this.scheduledAfterRender.push(this.resizeIframe);
28
+ }
29
+ };
30
+ this.closeDropdown = () => {
31
+ if (this.dropdownOpen) {
32
+ this.dropdownOpen = false;
33
+ this.scheduledAfterRender.push(() => {
34
+ this.resizeIframe();
35
+ });
36
+ }
37
+ };
38
+ this.onClickElsewhere = (event) => {
39
+ const target = event.target;
40
+ if (target.localName === 'click-elsewhere') {
41
+ event.stopPropagation();
42
+ this.closeDropdown();
43
+ }
44
+ };
45
+ this.onToggleClick = () => {
46
+ if (this.dropdownOpen) {
47
+ this.focusToggle();
48
+ this.closeDropdown();
49
+ return;
50
+ }
51
+ this.focusToggle();
52
+ this.openDropdown();
53
+ };
54
+ this.onToggleKeydown = (event) => {
55
+ if (['ArrowUp', 'Up'].includes(event.key)) {
56
+ event.preventDefault();
57
+ this.openDropdown();
58
+ this.focusLastItem();
59
+ return;
60
+ }
61
+ if (['ArrowDown', 'Down'].includes(event.key)) {
62
+ event.preventDefault();
63
+ this.openDropdown();
64
+ this.focusFirstItem();
65
+ return;
66
+ }
67
+ if (['Escape', 'Esc'].includes(event.key)) {
68
+ event.preventDefault();
69
+ this.focusToggle();
70
+ this.closeDropdown();
71
+ return;
72
+ }
73
+ };
74
+ this.onDropdownMenuClick = (event) => {
75
+ if (event.target.localName !== 'q2-dropdown-item') {
76
+ return;
77
+ }
78
+ const item = event.target;
79
+ if (!item.disabled && !item.separator) {
80
+ this.focusToggle();
81
+ this.closeDropdown();
82
+ }
83
+ };
84
+ this.onDropdownMenuKeydown = (event) => {
85
+ if (['Escape', 'Esc'].includes(event.key)) {
86
+ this.closeDropdown();
87
+ this.focusToggle();
88
+ return;
89
+ }
90
+ if (event.target.localName !== 'q2-dropdown-item') {
91
+ return;
92
+ }
93
+ const item = event.target;
94
+ if (['ArrowUp', 'Up'].includes(event.key)) {
95
+ event.preventDefault();
96
+ this.focusAdjacentItem(item, 'prev');
97
+ return;
98
+ }
99
+ if (['ArrowDown', 'Down'].includes(event.key)) {
100
+ event.preventDefault();
101
+ this.focusAdjacentItem(item, 'next');
102
+ return;
103
+ }
104
+ };
105
+ this.type = 'icon';
106
+ this.icon = undefined;
107
+ this.label = undefined;
108
+ this.hideLabel = undefined;
109
+ this.ariaLabel = undefined;
110
+ this.disabled = undefined;
111
+ this.popDirection = undefined;
112
+ this.name = undefined;
113
+ this.context = undefined;
114
+ this.contextValue = undefined;
115
+ this.resolvedType = undefined;
116
+ this.block = undefined;
117
+ this.dropdownOpen = false;
118
+ }
119
+ resizeIframe() {
120
+ return window.TectonElements && window.TectonElements.resizeIframe && window.TectonElements.resizeIframe();
121
+ }
122
+ resolveMenu() {
123
+ return (this.name &&
124
+ window.TectonElements &&
125
+ window.TectonElements.resolveMenu(this.name, this.contextValue, this.resolvedType));
126
+ }
127
+ orchestrateResolvedMenuItems() {
128
+ if (!this.name || !this.context) {
129
+ // this is only for contextual menu outlets
130
+ this.removeResolvedElements();
131
+ return;
132
+ }
133
+ this.resolveMenuItemElements()
134
+ .then(data => {
135
+ this.removeResolvedElements();
136
+ data.forEach(element => {
137
+ this.hostElement.appendChild(element);
138
+ });
139
+ })
140
+ .catch(err => {
141
+ this.removeResolvedElements();
142
+ throw err;
143
+ });
144
+ }
145
+ removeResolvedElements() {
146
+ const resolvedElements = this.hostElement.querySelectorAll('q2-dropdown-item.resolved-menu-item');
147
+ resolvedElements.forEach(element => this.hostElement.removeChild(element));
148
+ }
149
+ resolveMenuItemElements() {
150
+ return this.resolveMenu().then(datas => {
151
+ return datas.map(menuItemData => {
152
+ let onClickFn;
153
+ let queryParams;
154
+ if (menuItemData['tct-ctxid']) {
155
+ queryParams = {};
156
+ queryParams[menuItemData.contextIdParamName] = menuItemData['tct-ctxid'];
157
+ }
158
+ switch (menuItemData.action) {
159
+ case 'navigateTo':
160
+ onClickFn = () => this.navigateTo(menuItemData.featureName, menuItemData.moduleName, queryParams);
161
+ break;
162
+ case 'showOverpanel':
163
+ onClickFn = () => this.showOverpanel(`${menuItemData.featureName}.${menuItemData.moduleName}`, queryParams);
164
+ break;
165
+ }
166
+ const newDropdownItem = document.createElement('q2-dropdown-item');
167
+ newDropdownItem.setAttribute('value', menuItemData.itemLabel);
168
+ newDropdownItem.classList.add('resolved-menu-item');
169
+ newDropdownItem.innerHTML = menuItemData.itemLabel;
170
+ newDropdownItem.onclick = onClickFn;
171
+ return newDropdownItem;
172
+ });
173
+ });
174
+ }
175
+ navigateTo(featureName, moduleName, queryParams) {
176
+ return window.TectonElements && window.TectonElements.navigateTo(featureName, moduleName, queryParams);
177
+ }
178
+ showOverpanel(overpanelPath, params) {
179
+ return window.TectonElements && window.TectonElements.showOverpanel(overpanelPath, params, undefined, true);
180
+ }
181
+ get hasCustomButton() {
182
+ return !!this.hostElement.querySelector('[slot=custom-dropdown-button]');
183
+ }
184
+ get toggleButtonProps() {
185
+ const allowedIntents = ['primary', 'secondary', 'neutral'];
186
+ const allowedTypes = ['icon', 'fab', 'custom', ...allowedIntents];
187
+ const type = allowedTypes.includes(this.type) ? this.type : '';
188
+ const icon = type === 'icon';
189
+ const fab = type === 'fab';
190
+ const custom = type === 'custom';
191
+ let intent;
192
+ if (allowedIntents.includes(type)) {
193
+ intent = type === 'neutral' ? type : `workflow-${type}`;
194
+ }
195
+ const active = this.dropdownOpen;
196
+ const disabled = !!this.disabled;
197
+ const ariaExpanded = this.dropdownOpen;
198
+ const className = `dropdown-button${!icon && !fab && !intent ? ' unstyled' : ''}`;
199
+ return {
200
+ icon,
201
+ fab,
202
+ intent,
203
+ active,
204
+ disabled,
205
+ ariaExpanded,
206
+ className,
207
+ custom,
208
+ };
209
+ }
210
+ //////// Observers //////////
211
+ ariaLabelObserver() {
212
+ handleAriaLabel(this);
213
+ }
214
+ nameHandler() {
215
+ this.orchestrateResolvedMenuItems();
216
+ }
217
+ contextHandler() {
218
+ this.orchestrateResolvedMenuItems();
219
+ }
220
+ contextValueHandler() {
221
+ this.orchestrateResolvedMenuItems();
222
+ }
223
+ resolvedTypeHandler() {
224
+ this.orchestrateResolvedMenuItems();
225
+ }
226
+ delegateFocus(event) {
227
+ if (!isEventFromElement(event, this.hostElement))
228
+ return;
229
+ this.controlElement.shadowRoot.querySelector('button').focus();
230
+ }
231
+ ///// Lifecycle Hooks ////////
232
+ componentWillLoad() {
233
+ handleAriaLabel(this);
234
+ }
235
+ componentDidLoad() {
236
+ this.orchestrateResolvedMenuItems();
237
+ overrideFocus(this.hostElement);
238
+ }
239
+ componentDidRender() {
240
+ setTimeout(() => {
241
+ this.scheduledAfterRender.forEach(fn => fn());
242
+ this.scheduledAfterRender = [];
243
+ }, 25);
244
+ }
245
+ focusFirstItem() {
246
+ const firstItem = this.hostElement.querySelector(`${this.dropdownItemSelector}:first-child`);
247
+ firstItem && firstItem.dispatchEvent(new FocusEvent('focus'));
248
+ }
249
+ focusLastItem() {
250
+ const lastItem = this.hostElement.querySelector(`${this.dropdownItemSelector}:last-child`);
251
+ lastItem && lastItem.dispatchEvent(new FocusEvent('focus'));
252
+ }
253
+ focusAdjacentItem(activeItem, direction) {
254
+ const dropdownItems = Array.from(this.hostElement.querySelectorAll(this.dropdownItemSelector));
255
+ const activeIndex = dropdownItems.indexOf(activeItem);
256
+ if (activeIndex === -1) {
257
+ return;
258
+ }
259
+ let targetIndex = 0;
260
+ if (direction === 'next') {
261
+ targetIndex = activeIndex < dropdownItems.length - 1 ? activeIndex + 1 : 0;
262
+ }
263
+ else if (direction === 'prev') {
264
+ if (activeIndex > 0) {
265
+ targetIndex = activeIndex - 1;
266
+ }
267
+ else {
268
+ targetIndex = dropdownItems.length - 1;
269
+ }
270
+ }
271
+ const targetItem = dropdownItems[targetIndex];
272
+ targetItem && targetItem.dispatchEvent(new Event('focus'));
273
+ }
274
+ render() {
275
+ const btnProps = this.toggleButtonProps;
276
+ return (h("click-elsewhere", { class: `dropdown-container${this.dropdownOpen ? ' dropdown-open' : ''}`, onChange: this.onClickElsewhere }, h("q2-btn", { ref: el => (this.controlElement = el), class: btnProps.className, onClick: this.onToggleClick, onKeyDown: this.onToggleKeydown, fab: btnProps.fab, intent: btnProps.intent, active: btnProps.active, disabled: btnProps.disabled, ariaExpanded: `${!!btnProps.ariaExpanded}`, label: this.hideLabel && this.label ? loc(this.label) : undefined, hideLabel: this.hideLabel, ariaHasPopup: "menu", "test-id": "dropdownButton", block: this.block }, this.hasCustomButton ? (h("div", { "test-id": "dropdownCustom", class: btnProps.custom ? '' : 'hidden' }, h("slot", { name: "custom-dropdown-button" }))) : (h(Fragment, null, this.icon ? h("q2-icon", { type: this.icon }) : ' ', this.label && !this.hideLabel && (h("span", { class: "dropdown-button-text" }, loc(this.label)))))), h("div", { ref: el => (this.dropdownContainer = el), class: `q2-element-dropdown ${this.privatePopDirection === 'up' ? 'dropup' : ''}`, role: "menu", onClick: this.onDropdownMenuClick, onKeyDown: this.onDropdownMenuKeydown }, h("div", null, h("slot", null), this.dropdownOpen && (h("q2-btn", { class: "sr close-dropdown", onFocus: this.closeDropdown }))))));
277
+ }
278
+ get hostElement() { return this; }
279
+ static get watchers() { return {
280
+ "ariaLabel": ["ariaLabelObserver"],
281
+ "name": ["nameHandler"],
282
+ "context": ["contextHandler"],
283
+ "contextValue": ["contextValueHandler"],
284
+ "resolvedType": ["resolvedTypeHandler"]
285
+ }; }
286
+ static get style() { return stylesCss; }
287
+ }, [1, "q2-dropdown", {
288
+ "type": [513],
289
+ "icon": [513],
290
+ "label": [513],
291
+ "hideLabel": [516, "hide-label"],
292
+ "ariaLabel": [513, "aria-label"],
293
+ "disabled": [516],
294
+ "popDirection": [513, "pop-direction"],
295
+ "name": [513],
296
+ "context": [513],
297
+ "contextValue": [513, "context-value"],
298
+ "resolvedType": [513, "resolved-type"],
299
+ "block": [516],
300
+ "dropdownOpen": [32]
301
+ }, [[0, "focus", "delegateFocus"]]]);
302
+ function defineCustomElement$1() {
303
+ if (typeof customElements === "undefined") {
304
+ return;
305
+ }
306
+ const components = ["q2-dropdown", "click-elsewhere", "q2-btn", "q2-dropdown-item", "q2-icon", "q2-loading"];
307
+ components.forEach(tagName => { switch (tagName) {
308
+ case "q2-dropdown":
309
+ if (!customElements.get(tagName)) {
310
+ customElements.define(tagName, Q2Dropdown$1);
311
+ }
312
+ break;
313
+ case "click-elsewhere":
314
+ if (!customElements.get(tagName)) {
315
+ defineCustomElement$6();
316
+ }
317
+ break;
318
+ case "q2-btn":
319
+ if (!customElements.get(tagName)) {
320
+ defineCustomElement$5();
321
+ }
322
+ break;
323
+ case "q2-dropdown-item":
324
+ if (!customElements.get(tagName)) {
325
+ defineCustomElement$4();
326
+ }
327
+ break;
328
+ case "q2-icon":
329
+ if (!customElements.get(tagName)) {
330
+ defineCustomElement$3();
331
+ }
332
+ break;
333
+ case "q2-loading":
334
+ if (!customElements.get(tagName)) {
335
+ defineCustomElement$2();
336
+ }
337
+ break;
338
+ } });
339
+ }
340
+ defineCustomElement$1();
341
+
342
+ const Q2Dropdown = Q2Dropdown$1;
343
+ const defineCustomElement = defineCustomElement$1;
344
+
345
+ export { Q2Dropdown, defineCustomElement };
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface Q2EditableField extends Components.Q2EditableField, HTMLElement {}
4
+ export const Q2EditableField: {
5
+ prototype: Q2EditableField;
6
+ new (): Q2EditableField;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,220 @@
1
+ import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
2
+ import { l as loc, h as handleAriaLabel, o as overrideFocus, i as isEventFromElement } from './index13.js';
3
+ import { d as defineCustomElement$6 } from './index4.js';
4
+ import { d as defineCustomElement$5 } from './index5.js';
5
+ import { d as defineCustomElement$4 } from './index7.js';
6
+ import { d as defineCustomElement$3 } from './index8.js';
7
+ import { d as defineCustomElement$2 } from './index9.js';
8
+
9
+ 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:inline-block;max-width:100%}.q2-editable-field-wrapper:not([hidden]){display:flex}.q2-editable-field-wrapper.editing{align-items:flex-end}q2-input,.text-wrapper{margin:0 var(--tct-scale-2, var(--app-scale-2x, 10px)) 0 0}q2-input{flex:1 1 auto;min-width:170px}.text-wrapper{flex:0 auto;align-self:center;display:inline-block}:host([truncated]) .text-wrapper{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}q2-btn{flex:0 0 44px}dl{margin:var(--tct-scale-0, var(--app-scale-0x, 0))}dt{font-weight:600}dd{margin-left:var(--tct-scale-0, var(--app-scale-0x, 0));display:flex;align-items:center}";
10
+
11
+ const Q2EditableField$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
12
+ constructor() {
13
+ super();
14
+ this.__registerHost();
15
+ this.__attachShadow();
16
+ this.input = createEvent(this, "input", 7);
17
+ this.change = createEvent(this, "change", 7);
18
+ this.scheduledAfterRender = [];
19
+ this.defaultValue = this.value;
20
+ //////// ACTIONS /////////
21
+ this.inputInput = (e) => {
22
+ e.stopPropagation();
23
+ this.input.emit(e.detail);
24
+ this.formattedValue = e.detail.formattedValue;
25
+ this.innerValue = e.detail.value;
26
+ };
27
+ this.inputChange = (e) => {
28
+ e.stopPropagation();
29
+ };
30
+ this.inputKeyDown = (e) => {
31
+ if (e.key === 'Escape' || e.key === 'Esc') {
32
+ e.preventDefault();
33
+ this.cancelClick();
34
+ return;
35
+ }
36
+ if (e.key === 'Enter') {
37
+ e.preventDefault();
38
+ this.saveClick();
39
+ return;
40
+ }
41
+ };
42
+ this.inputClick = (event) => {
43
+ event.stopPropagation();
44
+ };
45
+ this.saveClick = (event) => {
46
+ event && event.stopPropagation();
47
+ const valueFromInputProp = this.hostElement.shadowRoot.querySelector('q2-input').value;
48
+ this.defaultValue = valueFromInputProp;
49
+ this.change.emit({
50
+ editing: false,
51
+ name: 'save',
52
+ value: this.innerValue || valueFromInputProp,
53
+ formattedValue: this.formattedValue || valueFromInputProp,
54
+ });
55
+ setTimeout(() => {
56
+ const { errors = [] } = this;
57
+ if (!errors.length)
58
+ return;
59
+ this.hostElement.focus();
60
+ }, 1);
61
+ };
62
+ this.editClick = (event) => {
63
+ event === null || event === void 0 ? void 0 : event.stopPropagation();
64
+ this.change.emit({ editing: true, name: 'edit' });
65
+ };
66
+ this.cancelClick = (event) => {
67
+ event === null || event === void 0 ? void 0 : event.stopPropagation();
68
+ this.change.emit({ editing: false, name: 'cancel' });
69
+ this.hostElement.shadowRoot.querySelector('q2-input').value = this.defaultValue;
70
+ };
71
+ this.value = '';
72
+ this.editing = false;
73
+ this.label = '';
74
+ this.hideLabel = undefined;
75
+ this.ariaLabel = undefined;
76
+ this.type = undefined;
77
+ this.formatModifier = undefined;
78
+ this.truncated = undefined;
79
+ this.maxlength = undefined;
80
+ this.persistentLabel = undefined;
81
+ this.disabled = undefined;
82
+ this.hints = undefined;
83
+ this.errors = undefined;
84
+ }
85
+ get locLabel() {
86
+ return (this.label && loc(this.label)) || '';
87
+ }
88
+ /////// LIFECYCLE HOOKS //////
89
+ componentWillLoad() {
90
+ handleAriaLabel(this);
91
+ }
92
+ componentDidRender() {
93
+ this.scheduledAfterRender.forEach(fn => fn());
94
+ this.scheduledAfterRender = [];
95
+ }
96
+ componentDidLoad() {
97
+ overrideFocus(this.hostElement);
98
+ }
99
+ //////// OBSERVERS //////////
100
+ errorsObserver() {
101
+ var _a;
102
+ const { editing, errors = [] } = this;
103
+ const focusedElement = this.hostElement.shadowRoot.activeElement;
104
+ const isInputFocused = (_a = (focusedElement === null || focusedElement === void 0 ? void 0 : focusedElement.tagName) === 'Q2-INPUT') !== null && _a !== void 0 ? _a : false;
105
+ const hasErrors = errors.length;
106
+ if (isInputFocused || !focusedElement || !editing || !hasErrors)
107
+ return;
108
+ this.q2InputElement.focus();
109
+ }
110
+ ariaLabelObserver() {
111
+ handleAriaLabel(this);
112
+ }
113
+ observesEditing(newValue, oldValue) {
114
+ if (newValue === oldValue)
115
+ return;
116
+ this.scheduledAfterRender.push(this.hostElement.focus);
117
+ }
118
+ get wrapperClass() {
119
+ return `q2-editable-field-wrapper ${this.editing ? 'editing' : ''}`;
120
+ }
121
+ ///////// HOST ELEMENT EVENTS //////
122
+ onHostElementChange(event) {
123
+ if (!isEventFromElement(event, this.hostElement) || this.hostElement.onchange)
124
+ return;
125
+ switch (event.detail.name) {
126
+ case 'save':
127
+ this.value = event.detail.value;
128
+ break;
129
+ case 'cancel':
130
+ this.q2InputElement.value = this.value;
131
+ break;
132
+ }
133
+ this.editing = event.detail.editing;
134
+ }
135
+ delegateFocus(event) {
136
+ if (!isEventFromElement(event, this.hostElement))
137
+ return;
138
+ this.hostElement.shadowRoot.querySelector(this.editing ? 'q2-input' : 'q2-btn.begin-edit').focus();
139
+ }
140
+ render() {
141
+ return (h("div", null, this.generateEditStateDOM(), this.generateReadStateDOM()));
142
+ }
143
+ generateEditStateDOM() {
144
+ return (h("div", { class: this.wrapperClass, hidden: !this.editing }, h("q2-input", { ref: el => (this.q2InputElement = el), label: this.locLabel, hideLabel: this.hideLabel, value: this.value, hints: (Array.isArray(this.hints) && this.hints.map(str => loc(str))) || undefined, errors: (Array.isArray(this.errors) && this.errors.map(str => loc(str))) || undefined, type: this.type, disabled: this.disabled, formatModifier: this.formatModifier, maxlength: this.maxlength, "test-id": "editableInput", onInput: this.inputInput, onChange: this.inputChange, onKeyDown: this.inputKeyDown, onClick: this.inputClick }), h("q2-btn", { class: "cancel-edit", label: `${loc('tecton.element.editableField.cancel')} ${this.locLabel}`, "hide-label": true, "test-id": "cancelButton", onClick: this.cancelClick }, h("q2-icon", { type: "close" })), h("q2-btn", { class: "save-edit", label: `${loc('tecton.element.editableField.save')} ${this.locLabel}`, "hide-label": true, "test-id": "saveButton", onClick: this.saveClick }, h("q2-icon", { type: "checkmark" }))));
145
+ }
146
+ generateReadStateDOM() {
147
+ if (this.persistentLabel && this.locLabel) {
148
+ return (h("div", { class: this.wrapperClass, hidden: this.editing }, h("dl", null, h("dt", { class: "read-state-label" }, this.locLabel), h("dd", null, h("span", { class: "text-wrapper" }, this.value), this.generateEditBtn()))));
149
+ }
150
+ return (h("div", { class: this.wrapperClass, hidden: this.editing }, h("div", { class: "text-wrapper" }, this.value), this.generateEditBtn()));
151
+ }
152
+ generateEditBtn() {
153
+ return (h("q2-btn", { ref: el => (this.q2EditBtnElement = el), class: "begin-edit", label: `${loc('tecton.element.editableField.edit')} ${this.locLabel}`, "hide-label": true, disabled: this.disabled, "test-id": "editButton", onClick: this.editClick }, h("q2-icon", { type: "edit" })));
154
+ }
155
+ get hostElement() { return this; }
156
+ static get watchers() { return {
157
+ "errors": ["errorsObserver"],
158
+ "ariaLabel": ["ariaLabelObserver"],
159
+ "editing": ["observesEditing"]
160
+ }; }
161
+ static get style() { return stylesCss; }
162
+ }, [1, "q2-editable-field", {
163
+ "value": [1537],
164
+ "editing": [1540],
165
+ "label": [1537],
166
+ "hideLabel": [1540, "hide-label"],
167
+ "ariaLabel": [1537, "aria-label"],
168
+ "type": [513],
169
+ "formatModifier": [513, "format-modifier"],
170
+ "truncated": [513],
171
+ "maxlength": [514],
172
+ "persistentLabel": [516, "persistent-label"],
173
+ "disabled": [516],
174
+ "hints": [16],
175
+ "errors": [16]
176
+ }, [[0, "change", "onHostElementChange"], [0, "focus", "delegateFocus"]]]);
177
+ function defineCustomElement$1() {
178
+ if (typeof customElements === "undefined") {
179
+ return;
180
+ }
181
+ const components = ["q2-editable-field", "q2-badge", "q2-btn", "q2-icon", "q2-input", "q2-loading"];
182
+ components.forEach(tagName => { switch (tagName) {
183
+ case "q2-editable-field":
184
+ if (!customElements.get(tagName)) {
185
+ customElements.define(tagName, Q2EditableField$1);
186
+ }
187
+ break;
188
+ case "q2-badge":
189
+ if (!customElements.get(tagName)) {
190
+ defineCustomElement$6();
191
+ }
192
+ break;
193
+ case "q2-btn":
194
+ if (!customElements.get(tagName)) {
195
+ defineCustomElement$5();
196
+ }
197
+ break;
198
+ case "q2-icon":
199
+ if (!customElements.get(tagName)) {
200
+ defineCustomElement$4();
201
+ }
202
+ break;
203
+ case "q2-input":
204
+ if (!customElements.get(tagName)) {
205
+ defineCustomElement$3();
206
+ }
207
+ break;
208
+ case "q2-loading":
209
+ if (!customElements.get(tagName)) {
210
+ defineCustomElement$2();
211
+ }
212
+ break;
213
+ } });
214
+ }
215
+ defineCustomElement$1();
216
+
217
+ const Q2EditableField = Q2EditableField$1;
218
+ const defineCustomElement = defineCustomElement$1;
219
+
220
+ export { Q2EditableField, defineCustomElement };
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface Q2Icon extends Components.Q2Icon, HTMLElement {}
4
+ export const Q2Icon: {
5
+ prototype: Q2Icon;
6
+ new (): Q2Icon;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,6 @@
1
+ import { Q as Q2Icon$1, d as defineCustomElement$1 } from './index7.js';
2
+
3
+ const Q2Icon = Q2Icon$1;
4
+ const defineCustomElement = defineCustomElement$1;
5
+
6
+ export { Q2Icon, defineCustomElement };
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface Q2Input extends Components.Q2Input, HTMLElement {}
4
+ export const Q2Input: {
5
+ prototype: Q2Input;
6
+ new (): Q2Input;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,6 @@
1
+ import { Q as Q2Input$1, d as defineCustomElement$1 } from './index8.js';
2
+
3
+ const Q2Input = Q2Input$1;
4
+ const defineCustomElement = defineCustomElement$1;
5
+
6
+ export { Q2Input, defineCustomElement };
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface Q2LoadingElement extends Components.Q2LoadingElement, HTMLElement {}
4
+ export const Q2LoadingElement: {
5
+ prototype: Q2LoadingElement;
6
+ new (): Q2LoadingElement;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;