q2-tecton-elements 1.27.0 → 1.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/dist/cjs/click-elsewhere_2.cjs.entry.js +258 -0
  2. package/dist/cjs/{index-ffd19146.js → index-7a73e106.js} +12 -52
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/q2-action-sheet.cjs.entry.js +1 -1
  5. package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
  6. package/dist/cjs/q2-badge_2.cjs.entry.js +1 -1
  7. package/dist/cjs/q2-btn_2.cjs.entry.js +1 -1
  8. package/dist/cjs/q2-calendar.cjs.entry.js +128 -83
  9. package/dist/cjs/q2-card.cjs.entry.js +1 -1
  10. package/dist/cjs/q2-carousel-pane.cjs.entry.js +1 -1
  11. package/dist/cjs/q2-carousel.cjs.entry.js +1 -1
  12. package/dist/cjs/q2-chart-area.cjs.entry.js +1 -1
  13. package/dist/cjs/q2-chart-bar.cjs.entry.js +1 -1
  14. package/dist/cjs/q2-chart-donut.cjs.entry.js +1 -1
  15. package/dist/cjs/q2-checkbox-group.cjs.entry.js +1 -1
  16. package/dist/cjs/q2-checkbox.cjs.entry.js +1 -1
  17. package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
  18. package/dist/cjs/q2-dropdown.cjs.entry.js +45 -45
  19. package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
  20. package/dist/cjs/q2-icon.cjs.entry.js +1 -1
  21. package/dist/cjs/q2-loc.cjs.entry.js +1 -1
  22. package/dist/cjs/q2-message.cjs.entry.js +1 -1
  23. package/dist/cjs/q2-month-picker.cjs.entry.js +1 -1
  24. package/dist/cjs/q2-optgroup_2.cjs.entry.js +1 -1
  25. package/dist/cjs/{q2-option-list_2.cjs.entry.js → q2-option-list.cjs.entry.js} +3 -167
  26. package/dist/cjs/q2-pagination.cjs.entry.js +1 -1
  27. package/dist/cjs/q2-pill.cjs.entry.js +1 -1
  28. package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
  29. package/dist/cjs/q2-radio.cjs.entry.js +1 -1
  30. package/dist/cjs/q2-section.cjs.entry.js +1 -1
  31. package/dist/cjs/q2-select.cjs.entry.js +11 -6
  32. package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
  33. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +1 -1
  34. package/dist/cjs/q2-stepper.cjs.entry.js +1 -1
  35. package/dist/cjs/q2-tab-container.cjs.entry.js +1 -1
  36. package/dist/cjs/q2-tag.cjs.entry.js +1 -1
  37. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  38. package/dist/cjs/q2-textarea.cjs.entry.js +1 -1
  39. package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
  40. package/dist/collection/components/q2-avatar/styles.css +4 -12
  41. package/dist/collection/components/q2-calendar/helpers.js +37 -11
  42. package/dist/collection/components/q2-calendar/index.js +174 -91
  43. package/dist/collection/components/q2-calendar/styles.css +5 -68
  44. package/dist/collection/components/q2-dropdown/index.js +130 -54
  45. package/dist/collection/components/q2-dropdown/styles.css +3 -89
  46. package/dist/collection/components/q2-select/index.js +10 -5
  47. package/dist/collection/utils/index.js +11 -51
  48. package/dist/components/index11.js +1 -1
  49. package/dist/components/index15.js +12 -52
  50. package/dist/components/index3.js +1 -1
  51. package/dist/components/index7.js +1 -1
  52. package/dist/components/index8.js +1 -1
  53. package/dist/components/q2-calendar.js +154 -101
  54. package/dist/components/q2-card.js +1 -1
  55. package/dist/components/q2-carousel.js +1 -1
  56. package/dist/components/q2-checkbox-group.js +1 -1
  57. package/dist/components/q2-checkbox.js +1 -1
  58. package/dist/components/q2-dropdown.js +68 -59
  59. package/dist/components/q2-radio-group.js +1 -1
  60. package/dist/components/q2-radio.js +1 -1
  61. package/dist/components/q2-select.js +11 -6
  62. package/dist/components/q2-stepper-pane.js +1 -1
  63. package/dist/components/q2-stepper-vertical.js +1 -1
  64. package/dist/components/q2-stepper.js +1 -1
  65. package/dist/components/q2-tab-container.js +1 -1
  66. package/dist/components/q2-textarea.js +1 -1
  67. package/dist/docs.json +166 -4
  68. package/dist/esm/click-elsewhere_2.entry.js +253 -0
  69. package/dist/esm/{index-a0cc60e3.js → index-576f618c.js} +12 -52
  70. package/dist/esm/loader.js +1 -1
  71. package/dist/esm/q2-action-sheet.entry.js +1 -1
  72. package/dist/esm/q2-avatar.entry.js +1 -1
  73. package/dist/esm/q2-badge_2.entry.js +1 -1
  74. package/dist/esm/q2-btn_2.entry.js +1 -1
  75. package/dist/esm/q2-calendar.entry.js +128 -83
  76. package/dist/esm/q2-card.entry.js +1 -1
  77. package/dist/esm/q2-carousel-pane.entry.js +1 -1
  78. package/dist/esm/q2-carousel.entry.js +1 -1
  79. package/dist/esm/q2-chart-area.entry.js +1 -1
  80. package/dist/esm/q2-chart-bar.entry.js +1 -1
  81. package/dist/esm/q2-chart-donut.entry.js +1 -1
  82. package/dist/esm/q2-checkbox-group.entry.js +1 -1
  83. package/dist/esm/q2-checkbox.entry.js +1 -1
  84. package/dist/esm/q2-dropdown-item.entry.js +1 -1
  85. package/dist/esm/q2-dropdown.entry.js +45 -45
  86. package/dist/esm/q2-editable-field.entry.js +1 -1
  87. package/dist/esm/q2-icon.entry.js +1 -1
  88. package/dist/esm/q2-loc.entry.js +1 -1
  89. package/dist/esm/q2-message.entry.js +1 -1
  90. package/dist/esm/q2-month-picker.entry.js +1 -1
  91. package/dist/esm/q2-optgroup_2.entry.js +1 -1
  92. package/dist/esm/{q2-option-list_2.entry.js → q2-option-list.entry.js} +4 -167
  93. package/dist/esm/q2-pagination.entry.js +1 -1
  94. package/dist/esm/q2-pill.entry.js +1 -1
  95. package/dist/esm/q2-radio-group.entry.js +1 -1
  96. package/dist/esm/q2-radio.entry.js +1 -1
  97. package/dist/esm/q2-section.entry.js +1 -1
  98. package/dist/esm/q2-select.entry.js +11 -6
  99. package/dist/esm/q2-stepper-pane.entry.js +1 -1
  100. package/dist/esm/q2-stepper-vertical.entry.js +1 -1
  101. package/dist/esm/q2-stepper.entry.js +1 -1
  102. package/dist/esm/q2-tab-container.entry.js +1 -1
  103. package/dist/esm/q2-tag.entry.js +1 -1
  104. package/dist/esm/q2-tecton-elements.js +1 -1
  105. package/dist/esm/q2-textarea.entry.js +1 -1
  106. package/dist/esm/q2-tooltip.entry.js +1 -1
  107. package/dist/q2-tecton-elements/p-0b7003c4.entry.js +1 -0
  108. package/dist/q2-tecton-elements/{p-0b8943da.entry.js → p-0d92ab4a.entry.js} +1 -1
  109. package/dist/q2-tecton-elements/p-138db98d.entry.js +1 -0
  110. package/dist/q2-tecton-elements/{p-a298cbfb.entry.js → p-1b9e07b4.entry.js} +1 -1
  111. package/dist/q2-tecton-elements/{p-bafb5e70.entry.js → p-1e57a843.entry.js} +1 -1
  112. package/dist/q2-tecton-elements/{p-ac6dd5b1.entry.js → p-2423b9a9.entry.js} +1 -1
  113. package/dist/q2-tecton-elements/{p-396fd275.entry.js → p-2bb447c3.entry.js} +1 -1
  114. package/dist/q2-tecton-elements/{p-414ca427.entry.js → p-31b655b6.entry.js} +1 -1
  115. package/dist/q2-tecton-elements/{p-85e780b2.entry.js → p-3422207a.entry.js} +1 -1
  116. package/dist/q2-tecton-elements/{p-edcf49fd.entry.js → p-39989362.entry.js} +1 -1
  117. package/dist/q2-tecton-elements/{p-3dca7465.entry.js → p-3aad6a45.entry.js} +1 -1
  118. package/dist/q2-tecton-elements/{p-ef657f8f.entry.js → p-4d2b7f2e.entry.js} +1 -1
  119. package/dist/q2-tecton-elements/{p-869e899c.entry.js → p-4ffde81a.entry.js} +1 -1
  120. package/dist/q2-tecton-elements/{p-d06d752f.entry.js → p-55bdd480.entry.js} +1 -1
  121. package/dist/q2-tecton-elements/p-590adc15.entry.js +1 -0
  122. package/dist/q2-tecton-elements/{p-949fa312.entry.js → p-5cd51157.entry.js} +1 -1
  123. package/dist/q2-tecton-elements/p-5e14a790.entry.js +1 -0
  124. package/dist/q2-tecton-elements/{p-12e65423.entry.js → p-6524d5f3.entry.js} +1 -1
  125. package/dist/q2-tecton-elements/{p-521c9085.entry.js → p-68908be9.entry.js} +1 -1
  126. package/dist/q2-tecton-elements/{p-9367dc29.entry.js → p-6975e5e4.entry.js} +1 -1
  127. package/dist/q2-tecton-elements/p-6bb3789b.entry.js +1 -0
  128. package/dist/q2-tecton-elements/{p-5a670d93.entry.js → p-6db208c7.entry.js} +1 -1
  129. package/dist/q2-tecton-elements/{p-2b8a8981.entry.js → p-7a702d92.entry.js} +1 -1
  130. package/dist/q2-tecton-elements/{p-fb768d19.entry.js → p-7e1a14ea.entry.js} +1 -1
  131. package/dist/q2-tecton-elements/p-921ea070.js +1 -0
  132. package/dist/q2-tecton-elements/{p-04b9a7ee.entry.js → p-a63e64f0.entry.js} +1 -1
  133. package/dist/q2-tecton-elements/p-b9bbfaf7.entry.js +1 -0
  134. package/dist/q2-tecton-elements/{p-d69cb7d1.entry.js → p-bbd2c530.entry.js} +1 -1
  135. package/dist/q2-tecton-elements/{p-05bdc0aa.entry.js → p-c19e143e.entry.js} +1 -1
  136. package/dist/q2-tecton-elements/{p-256e5161.entry.js → p-c8525f80.entry.js} +1 -1
  137. package/dist/q2-tecton-elements/{p-fcad1609.entry.js → p-c93341d5.entry.js} +1 -1
  138. package/dist/q2-tecton-elements/{p-8545c3cb.entry.js → p-d6824ce5.entry.js} +1 -1
  139. package/dist/q2-tecton-elements/{p-f3e4bb52.entry.js → p-ddfb393a.entry.js} +1 -1
  140. package/dist/q2-tecton-elements/{p-9292bd80.entry.js → p-df3fb1e7.entry.js} +1 -1
  141. package/dist/q2-tecton-elements/{p-fe3625ad.entry.js → p-ed77f0c2.entry.js} +1 -1
  142. package/dist/q2-tecton-elements/{p-25ea01d3.entry.js → p-ed91f837.entry.js} +1 -1
  143. package/dist/q2-tecton-elements/{p-1d28c600.entry.js → p-fa0e471c.entry.js} +1 -1
  144. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  145. package/dist/test/helpers.js +19 -0
  146. package/dist/types/components/q2-calendar/helpers.d.ts +1 -0
  147. package/dist/types/components/q2-calendar/index.d.ts +22 -12
  148. package/dist/types/components/q2-dropdown/index.d.ts +13 -8
  149. package/dist/types/components.d.ts +26 -0
  150. package/dist/types/utils/index.d.ts +4 -9
  151. package/dist/types/workspace/workspace/Tecton_tecton-production_master/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +1 -0
  152. package/package.json +3 -3
  153. package/dist/cjs/click-elsewhere.cjs.entry.js +0 -93
  154. package/dist/esm/click-elsewhere.entry.js +0 -89
  155. package/dist/q2-tecton-elements/p-2453cd92.js +0 -1
  156. package/dist/q2-tecton-elements/p-72374b8e.entry.js +0 -1
  157. package/dist/q2-tecton-elements/p-8e652d59.entry.js +0 -1
  158. package/dist/q2-tecton-elements/p-aae8b9fc.entry.js +0 -1
  159. package/dist/q2-tecton-elements/p-be0d3bfe.entry.js +0 -1
  160. package/dist/q2-tecton-elements/p-ce67d77a.entry.js +0 -1
  161. package/dist/q2-tecton-elements/p-ee1f3114.entry.js +0 -1
package/dist/docs.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2023-06-14T19:28:04",
2
+ "timestamp": "2023-07-12T16:45:28",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "2.19.2",
@@ -855,7 +855,7 @@
855
855
  {
856
856
  "name": "ariaLabel",
857
857
  "type": "string",
858
- "mutable": false,
858
+ "mutable": true,
859
859
  "attr": "aria-label",
860
860
  "reflectToAttr": true,
861
861
  "docs": "",
@@ -1162,6 +1162,22 @@
1162
1162
  "optional": false,
1163
1163
  "required": false
1164
1164
  },
1165
+ {
1166
+ "name": "open",
1167
+ "type": "boolean",
1168
+ "mutable": true,
1169
+ "attr": "open",
1170
+ "reflectToAttr": true,
1171
+ "docs": "",
1172
+ "docsTags": [],
1173
+ "values": [
1174
+ {
1175
+ "type": "boolean"
1176
+ }
1177
+ ],
1178
+ "optional": false,
1179
+ "required": false
1180
+ },
1165
1181
  {
1166
1182
  "name": "optional",
1167
1183
  "type": "boolean",
@@ -1201,6 +1217,32 @@
1201
1217
  "attr": "pop-direction",
1202
1218
  "reflectToAttr": true,
1203
1219
  "docs": "",
1220
+ "docsTags": [
1221
+ {
1222
+ "name": "deprecated"
1223
+ }
1224
+ ],
1225
+ "deprecation": "",
1226
+ "values": [
1227
+ {
1228
+ "value": "down",
1229
+ "type": "string"
1230
+ },
1231
+ {
1232
+ "value": "up",
1233
+ "type": "string"
1234
+ }
1235
+ ],
1236
+ "optional": false,
1237
+ "required": false
1238
+ },
1239
+ {
1240
+ "name": "popoverDirection",
1241
+ "type": "\"down\" | \"up\"",
1242
+ "mutable": true,
1243
+ "attr": "popover-direction",
1244
+ "reflectToAttr": false,
1245
+ "docs": "",
1204
1246
  "docsTags": [],
1205
1247
  "values": [
1206
1248
  {
@@ -1215,6 +1257,23 @@
1215
1257
  "optional": false,
1216
1258
  "required": false
1217
1259
  },
1260
+ {
1261
+ "name": "popoverMinHeight",
1262
+ "type": "number",
1263
+ "mutable": false,
1264
+ "attr": "popover-min-height",
1265
+ "reflectToAttr": false,
1266
+ "docs": "",
1267
+ "docsTags": [],
1268
+ "default": "355",
1269
+ "values": [
1270
+ {
1271
+ "type": "number"
1272
+ }
1273
+ ],
1274
+ "optional": false,
1275
+ "required": false
1276
+ },
1218
1277
  {
1219
1278
  "name": "readonly",
1220
1279
  "type": "boolean",
@@ -1353,6 +1412,11 @@
1353
1412
  "event": "clear",
1354
1413
  "capture": false,
1355
1414
  "passive": false
1415
+ },
1416
+ {
1417
+ "event": "popoverStateChanged",
1418
+ "capture": false,
1419
+ "passive": false
1356
1420
  }
1357
1421
  ],
1358
1422
  "styles": [],
@@ -1361,6 +1425,7 @@
1361
1425
  "dependents": [],
1362
1426
  "dependencies": [
1363
1427
  "click-elsewhere",
1428
+ "q2-popover",
1364
1429
  "q2-message",
1365
1430
  "q2-input",
1366
1431
  "q2-btn",
@@ -1369,6 +1434,7 @@
1369
1434
  "dependencyGraph": {
1370
1435
  "q2-calendar": [
1371
1436
  "click-elsewhere",
1437
+ "q2-popover",
1372
1438
  "q2-message",
1373
1439
  "q2-input",
1374
1440
  "q2-btn",
@@ -3291,6 +3357,28 @@
3291
3357
  "docsTags": [],
3292
3358
  "usage": {},
3293
3359
  "props": [
3360
+ {
3361
+ "name": "alignment",
3362
+ "type": "\"left\" | \"right\"",
3363
+ "mutable": false,
3364
+ "attr": "alignment",
3365
+ "reflectToAttr": true,
3366
+ "docs": "",
3367
+ "docsTags": [],
3368
+ "default": "'left'",
3369
+ "values": [
3370
+ {
3371
+ "value": "left",
3372
+ "type": "string"
3373
+ },
3374
+ {
3375
+ "value": "right",
3376
+ "type": "string"
3377
+ }
3378
+ ],
3379
+ "optional": false,
3380
+ "required": false
3381
+ },
3294
3382
  {
3295
3383
  "name": "ariaLabel",
3296
3384
  "type": "string",
@@ -3440,6 +3528,22 @@
3440
3528
  "optional": false,
3441
3529
  "required": false
3442
3530
  },
3531
+ {
3532
+ "name": "open",
3533
+ "type": "boolean",
3534
+ "mutable": true,
3535
+ "attr": "open",
3536
+ "reflectToAttr": true,
3537
+ "docs": "",
3538
+ "docsTags": [],
3539
+ "values": [
3540
+ {
3541
+ "type": "boolean"
3542
+ }
3543
+ ],
3544
+ "optional": false,
3545
+ "required": false
3546
+ },
3443
3547
  {
3444
3548
  "name": "popDirection",
3445
3549
  "type": "\"down\" | \"up\"",
@@ -3447,6 +3551,32 @@
3447
3551
  "attr": "pop-direction",
3448
3552
  "reflectToAttr": true,
3449
3553
  "docs": "",
3554
+ "docsTags": [
3555
+ {
3556
+ "name": "deprecated"
3557
+ }
3558
+ ],
3559
+ "deprecation": "",
3560
+ "values": [
3561
+ {
3562
+ "value": "down",
3563
+ "type": "string"
3564
+ },
3565
+ {
3566
+ "value": "up",
3567
+ "type": "string"
3568
+ }
3569
+ ],
3570
+ "optional": false,
3571
+ "required": false
3572
+ },
3573
+ {
3574
+ "name": "popoverDirection",
3575
+ "type": "\"down\" | \"up\"",
3576
+ "mutable": true,
3577
+ "attr": "popover-direction",
3578
+ "reflectToAttr": false,
3579
+ "docs": "",
3450
3580
  "docsTags": [],
3451
3581
  "values": [
3452
3582
  {
@@ -3461,6 +3591,23 @@
3461
3591
  "optional": false,
3462
3592
  "required": false
3463
3593
  },
3594
+ {
3595
+ "name": "popoverMinHeight",
3596
+ "type": "number",
3597
+ "mutable": false,
3598
+ "attr": "popover-min-height",
3599
+ "reflectToAttr": false,
3600
+ "docs": "",
3601
+ "docsTags": [],
3602
+ "default": "150",
3603
+ "values": [
3604
+ {
3605
+ "type": "number"
3606
+ }
3607
+ ],
3608
+ "optional": false,
3609
+ "required": false
3610
+ },
3464
3611
  {
3465
3612
  "name": "resolvedType",
3466
3613
  "type": "string",
@@ -3523,6 +3670,11 @@
3523
3670
  "event": "focus",
3524
3671
  "capture": false,
3525
3672
  "passive": false
3673
+ },
3674
+ {
3675
+ "event": "popoverStateChanged",
3676
+ "capture": false,
3677
+ "passive": false
3526
3678
  }
3527
3679
  ],
3528
3680
  "styles": [],
@@ -3533,14 +3685,16 @@
3533
3685
  "q2-dropdown-item",
3534
3686
  "click-elsewhere",
3535
3687
  "q2-btn",
3536
- "q2-icon"
3688
+ "q2-icon",
3689
+ "q2-popover"
3537
3690
  ],
3538
3691
  "dependencyGraph": {
3539
3692
  "q2-dropdown": [
3540
3693
  "q2-dropdown-item",
3541
3694
  "click-elsewhere",
3542
3695
  "q2-btn",
3543
- "q2-icon"
3696
+ "q2-icon",
3697
+ "q2-popover"
3544
3698
  ],
3545
3699
  "q2-dropdown-item": [
3546
3700
  "q2-btn",
@@ -6601,12 +6755,20 @@
6601
6755
  "slots": [],
6602
6756
  "parts": [],
6603
6757
  "dependents": [
6758
+ "q2-calendar",
6759
+ "q2-dropdown",
6604
6760
  "q2-pill",
6605
6761
  "q2-select",
6606
6762
  "q2-tag"
6607
6763
  ],
6608
6764
  "dependencies": [],
6609
6765
  "dependencyGraph": {
6766
+ "q2-calendar": [
6767
+ "q2-popover"
6768
+ ],
6769
+ "q2-dropdown": [
6770
+ "q2-popover"
6771
+ ],
6610
6772
  "q2-pill": [
6611
6773
  "q2-popover"
6612
6774
  ],
@@ -0,0 +1,253 @@
1
+ import { r as registerInstance, c as createEvent, g as getElement, h } from './index-bb1c8c7f.js';
2
+ import { r as resizeIframe, w as waitForNextPaint } from './index-576f618c.js';
3
+
4
+ const ClickElsewhere = class {
5
+ constructor(hostRef) {
6
+ registerInstance(this, hostRef);
7
+ this.change = createEvent(this, "change", 7);
8
+ /**
9
+ * Listens for mouse and window events that happen outside this click-elsewhere element so we can close popovers when users click outside them
10
+ */
11
+ this.mouseEventList = ['mousedown', 'dragstart', 'touchstart'];
12
+ this.isCurrentlyFocused = false;
13
+ this.mouseHandler = (event) => {
14
+ const isCurrentlyFocused = this.shadowContains(this.findActiveElement());
15
+ const aboutToBeFocused = this.shadowContains(this.shadowEventTarget(event)) || this.originatesInSlots(event.target);
16
+ if (!aboutToBeFocused && (this.isCurrentlyFocused || isCurrentlyFocused)) {
17
+ this.isCurrentlyFocused = false;
18
+ this.change.emit();
19
+ return;
20
+ }
21
+ this.isCurrentlyFocused = aboutToBeFocused || isCurrentlyFocused;
22
+ };
23
+ this.windowBlurHandler = () => {
24
+ const activeElement = this.findActiveElement();
25
+ if (activeElement === document.body && this.isCurrentlyFocused) {
26
+ this.isCurrentlyFocused = false;
27
+ this.change.emit();
28
+ return;
29
+ }
30
+ };
31
+ }
32
+ /* TODO: Stencil/Rollup is having issues compiling without this here. Will try to remove in future Stencil upgrade. */
33
+ /* tslint:disable:no-empty */
34
+ componentWillLoad() { }
35
+ /* tslint:enable:no-empty */
36
+ connectedCallback() {
37
+ this.mouseEventList.forEach((eventName) => {
38
+ document.addEventListener(eventName, this.mouseHandler);
39
+ });
40
+ window.addEventListener('blur', this.windowBlurHandler);
41
+ }
42
+ disconnectedCallback() {
43
+ this.mouseEventList.forEach((eventName) => {
44
+ document.removeEventListener(eventName, this.mouseHandler);
45
+ });
46
+ window.removeEventListener('blur', this.windowBlurHandler);
47
+ }
48
+ findActiveElement() {
49
+ let workingElement = document.activeElement;
50
+ while (true) {
51
+ if (!workingElement || !workingElement.shadowRoot) {
52
+ return workingElement;
53
+ }
54
+ workingElement = workingElement.shadowRoot.activeElement;
55
+ }
56
+ }
57
+ shadowEventTarget(event) {
58
+ return event.composedPath()[0] || event.target;
59
+ }
60
+ shadowContains(child) {
61
+ /**
62
+ * shadow-dom enabled version of Node.contains()
63
+ */
64
+ while (true) {
65
+ if (child === this.hostElement) {
66
+ return true;
67
+ }
68
+ if (!child) {
69
+ return false;
70
+ }
71
+ child = child.parentNode || child.host;
72
+ }
73
+ }
74
+ originatesInSlots(target) {
75
+ const slots = this.hostElement.querySelectorAll('slot');
76
+ for (const currentSlot of Array.from(slots)) {
77
+ const lightNodes = (currentSlot && currentSlot.assignedNodes && currentSlot.assignedNodes()) ||
78
+ this.hostElement.childNodes;
79
+ for (const currentNode of Array.from(lightNodes)) {
80
+ if (currentNode.contains(target)) {
81
+ return true;
82
+ }
83
+ }
84
+ }
85
+ return false;
86
+ }
87
+ get hostElement() { return getElement(this); }
88
+ };
89
+
90
+ 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}";
91
+
92
+ const Q2Popover = class {
93
+ constructor(hostRef) {
94
+ registerInstance(this, hostRef);
95
+ this.popoverStateChanged = createEvent(this, "popoverStateChanged", 7);
96
+ this.scheduledAfterRender = [];
97
+ /// Helpers ///
98
+ this.viewPortChanged = () => {
99
+ if (!this.open)
100
+ return;
101
+ this.determinePopDirection();
102
+ };
103
+ this.direction = undefined;
104
+ this.align = undefined;
105
+ this.open = undefined;
106
+ this.block = undefined;
107
+ this.minHeight = undefined;
108
+ this.controlElement = undefined;
109
+ this.currentDirection = undefined;
110
+ this.show = false;
111
+ }
112
+ /// Lifecycle hooks ///
113
+ componentDidLoad() {
114
+ if (this.open)
115
+ this.determinePopDirection();
116
+ }
117
+ componentDidRender() {
118
+ setTimeout(() => {
119
+ this.scheduledAfterRender.forEach(fn => fn());
120
+ this.scheduledAfterRender = [];
121
+ }, 25);
122
+ }
123
+ disconnectedCallback() {
124
+ this.removeViewportListeners();
125
+ }
126
+ /// Methods ///
127
+ async toggle() {
128
+ this.open = !this.open;
129
+ }
130
+ /// Watchers ///
131
+ openChanged(open) {
132
+ this.popoverStateChanged.emit({ open });
133
+ this.scheduledAfterRender.push(resizeIframe);
134
+ if (open) {
135
+ this.addViewportListeners();
136
+ this.determinePopDirection();
137
+ }
138
+ else {
139
+ this.removeViewportListeners();
140
+ // Reset currentDirection after close transition completes
141
+ this.containerElement.addEventListener('transitionend', () => {
142
+ if (this.open)
143
+ return;
144
+ this.currentDirection = undefined;
145
+ this.containerElement.style.removeProperty('display');
146
+ this.containerElement.style.removeProperty('--comp-pop-max-height');
147
+ }, { once: true });
148
+ this.show = false;
149
+ }
150
+ }
151
+ /// Listeners ///
152
+ popoverStateHandler(event) {
153
+ const { detail: { open }, } = event;
154
+ if (open === this.open)
155
+ return;
156
+ this.open = open;
157
+ event.stopPropagation();
158
+ }
159
+ addViewportListeners() {
160
+ // window.visualViewport.addEventListener('scroll', this.viewPortChanged);
161
+ window.visualViewport.addEventListener('resize', this.viewPortChanged);
162
+ }
163
+ removeViewportListeners() {
164
+ // window.visualViewport.removeEventListener('scroll', this.viewPortChanged);
165
+ window.visualViewport.removeEventListener('resize', this.viewPortChanged);
166
+ }
167
+ async setDirectionAndShow(direction) {
168
+ if (direction === 'up') {
169
+ this.determinePopOffset();
170
+ }
171
+ this.currentDirection = direction;
172
+ this.show = true;
173
+ }
174
+ async determinePopDirection() {
175
+ var _a, _b, _c, _d, _e, _f, _g;
176
+ const { containerElement, contentElement, direction, controlElement, currentDirection } = this;
177
+ if (containerElement)
178
+ containerElement.style.maxHeight = null;
179
+ // If the direction is already set then use it, otherwise use the current direction
180
+ const currentOrStatedDirection = direction !== null && direction !== void 0 ? direction : currentDirection;
181
+ // Set the container to block so we can get the height
182
+ containerElement.style.setProperty('display', 'block');
183
+ await waitForNextPaint();
184
+ // Determine the dimensions of the control element
185
+ const { top: topOffset, height } = (_a = controlElement === null || controlElement === void 0 ? void 0 : controlElement.getBoundingClientRect()) !== null && _a !== void 0 ? _a : {
186
+ top: 0,
187
+ height: 0,
188
+ };
189
+ const contentHeight = contentElement.clientHeight;
190
+ const scrollY = ((_c = (_b = window.Tecton) === null || _b === void 0 ? void 0 : _b.platformDimensions) === null || _c === void 0 ? void 0 : _c.scrollY) ||
191
+ ((_d = window.visualViewport) === null || _d === void 0 ? void 0 : _d.offsetTop) || // Only Android Chrome provides this which we need when scrolled
192
+ 0;
193
+ 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;
194
+ const bottomOffset = scrollY + innerHeight - topOffset - height;
195
+ const canShowFullSizeBelow = bottomOffset > contentHeight;
196
+ const canShowFullSizeAbove = contentHeight <= topOffset;
197
+ let determinedDirection;
198
+ // Show the full-size popover below or above if it will fit
199
+ if (currentOrStatedDirection === 'down' && canShowFullSizeBelow)
200
+ return this.setDirectionAndShow('down');
201
+ else if (currentOrStatedDirection === 'up' && canShowFullSizeAbove)
202
+ return this.setDirectionAndShow('up');
203
+ else if (currentOrStatedDirection === undefined && canShowFullSizeBelow)
204
+ determinedDirection = 'down';
205
+ else if (currentOrStatedDirection === undefined && canShowFullSizeAbove)
206
+ determinedDirection = 'up';
207
+ if (determinedDirection)
208
+ return this.setDirectionAndShow(determinedDirection);
209
+ // If full size will not fit then make it as tall as possible
210
+ const { minHeight = 150 } = this;
211
+ const displayBuffer = 5;
212
+ const canShowMinHeightBelow = bottomOffset >= minHeight + displayBuffer;
213
+ let maxHeight;
214
+ if (currentOrStatedDirection === 'down') {
215
+ maxHeight = Math.max(bottomOffset - displayBuffer, minHeight);
216
+ determinedDirection = 'down';
217
+ }
218
+ else if (currentOrStatedDirection === 'up') {
219
+ maxHeight = Math.max(topOffset - displayBuffer, minHeight);
220
+ determinedDirection = 'up';
221
+ }
222
+ else if (canShowMinHeightBelow) {
223
+ maxHeight = Math.max(bottomOffset - displayBuffer, minHeight);
224
+ determinedDirection = 'down';
225
+ }
226
+ else {
227
+ maxHeight = Math.max(topOffset - scrollY - displayBuffer, minHeight);
228
+ determinedDirection = 'up';
229
+ }
230
+ containerElement.style.setProperty('--comp-pop-max-height', `${maxHeight}px`);
231
+ return this.setDirectionAndShow(determinedDirection);
232
+ }
233
+ determinePopOffset() {
234
+ var _a;
235
+ const { controlElement, containerElement } = this;
236
+ const dropdownHeight = (_a = controlElement === null || controlElement === void 0 ? void 0 : controlElement.getBoundingClientRect().height) !== null && _a !== void 0 ? _a : 0;
237
+ containerElement.style.setProperty('--comp-pop-offset', `${dropdownHeight}px`);
238
+ }
239
+ /// DOM ///
240
+ render() {
241
+ const containerClasses = ['container', this.currentDirection];
242
+ if (this.show)
243
+ containerClasses.push('show');
244
+ return (h("div", { ref: el => (this.containerElement = el), class: containerClasses.join(' '), "test-id": "outerContainer" }, h("div", { ref: el => (this.contentElement = el), class: "content" }, h("slot", null))));
245
+ }
246
+ get hostElement() { return getElement(this); }
247
+ static get watchers() { return {
248
+ "open": ["openChanged"]
249
+ }; }
250
+ };
251
+ Q2Popover.style = stylesCss;
252
+
253
+ export { ClickElsewhere as click_elsewhere, Q2Popover as q2_popover };
@@ -540,6 +540,17 @@ function handleAriaLabel(target) {
540
540
  target.label = loc(ariaLabel);
541
541
  target.ariaLabel = undefined;
542
542
  }
543
+ /**
544
+ * Handles when a prop has been renamed on a component without introducing a breaking change.
545
+ */
546
+ function handleRenamedProp(target, oldProp, newProp, removeOldProp) {
547
+ if (typeof target[oldProp] === 'undefined')
548
+ return;
549
+ target[newProp] = target[oldProp];
550
+ if (removeOldProp) {
551
+ delete target[oldProp];
552
+ }
553
+ }
543
554
  function messagesDOM(target) {
544
555
  const type = target.hasError ? 'danger' : 'info';
545
556
  return (h("div", { class: "messages-container" },
@@ -563,57 +574,6 @@ function setMessageHeight(target) {
563
574
  }
564
575
  });
565
576
  }
566
- function setPopProperties(target) {
567
- var _a, _b, _c, _d;
568
- const { dropdownContainer, popDirection } = target;
569
- if (dropdownContainer) {
570
- dropdownContainer.style.maxHeight = null;
571
- }
572
- if (popDirection) {
573
- return (target.privatePopDirection = popDirection);
574
- }
575
- const controlElement = target.inputField || target.controlElement;
576
- const minPopHeight = target.minPopHeight || null;
577
- // Add sizable so that we can capture the height
578
- dropdownContainer.classList.add('sizable');
579
- const dropdownHeight = dropdownContainer.getBoundingClientRect().height;
580
- dropdownContainer.classList.remove('sizable');
581
- const { top: topOffset, height } = controlElement.getBoundingClientRect();
582
- const scrollY = ((_b = (_a = window.Tecton) === null || _a === void 0 ? void 0 : _a.platformDimensions) === null || _b === void 0 ? void 0 : _b.scrollY) || 0;
583
- const innerHeight = ((_d = (_c = window.Tecton) === null || _c === void 0 ? void 0 : _c.platformDimensions) === null || _d === void 0 ? void 0 : _d.innerHeight) || window.innerHeight;
584
- const bottomOffset = scrollY + innerHeight - topOffset - height;
585
- const canShowFullSizeBelow = bottomOffset > dropdownHeight;
586
- const canShowFullSizeAbove = dropdownHeight <= topOffset;
587
- // Prefer full size above or below
588
- if (canShowFullSizeBelow) {
589
- return (target.privatePopDirection = 'down');
590
- }
591
- else if (canShowFullSizeAbove || !minPopHeight) {
592
- determinePopOffset(target);
593
- return (target.privatePopDirection = 'up');
594
- }
595
- // If full size will not fit and minHeight is set, then make as tall as possible
596
- const displayBuffer = 5;
597
- const canShowSmallBelow = bottomOffset >= minPopHeight + displayBuffer;
598
- if (canShowSmallBelow) {
599
- const maxBelowHeight = Math.max(bottomOffset - displayBuffer, minPopHeight);
600
- dropdownContainer.style.maxHeight = `${maxBelowHeight}px`;
601
- return (target.privatePopDirection = 'down');
602
- }
603
- else {
604
- const maxAboveHeight = Math.max(topOffset, minPopHeight);
605
- dropdownContainer.style.maxHeight = `${maxAboveHeight}px`;
606
- determinePopOffset(target);
607
- return (target.privatePopDirection = 'up');
608
- }
609
- }
610
- const determinePopOffset = ({ dropdownContainer, inputField }) => {
611
- var _a, _b;
612
- if (!inputField)
613
- return;
614
- const inputFieldHeight = (_b = (_a = inputField.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.input-field')) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect().height;
615
- dropdownContainer.style.setProperty('--comp-dropup-offset', `${inputFieldHeight}px`);
616
- };
617
577
  const resizeIframe = () => {
618
578
  var _a, _b;
619
579
  return (_b = (_a = window.TectonElements) === null || _a === void 0 ? void 0 : _a.resizeIframe) === null || _b === void 0 ? void 0 : _b.call(_a);
@@ -626,4 +586,4 @@ const handleColor = (target) => {
626
586
  }
627
587
  };
628
588
 
629
- export { isEventFromElement as a, isTouchDevice as b, createGuid as c, isRelatedTargetWithinHost as d, isHostLosingFocus as e, addSmoothScrollPolyfill as f, setMessageHeight as g, handleAriaLabel as h, isMobile as i, labelDOM as j, isFirefox as k, loc as l, messagesDOM as m, nextPaint as n, overrideFocus as o, handleColor as p, resizeIframe as r, setPopProperties as s, waitForNextPaint as w };
589
+ export { isEventFromElement as a, handleRenamedProp as b, isTouchDevice as c, createGuid as d, isRelatedTargetWithinHost as e, isHostLosingFocus as f, addSmoothScrollPolyfill as g, handleAriaLabel as h, isMobile as i, labelDOM as j, isFirefox as k, loc as l, messagesDOM as m, nextPaint as n, overrideFocus as o, handleColor as p, resizeIframe as r, setMessageHeight as s, waitForNextPaint as w };