@esri/solutions-components 0.6.6 → 0.6.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (943) hide show
  1. package/dist/cjs/{ExpandToggle-e6a0d66e.js → ExpandToggle-70890ae0.js} +4 -4
  2. package/dist/cjs/{FloatingArrow-0119ec6e.js → FloatingArrow-4ca06439.js} +1 -1
  3. package/dist/cjs/{Heading-521f39ac.js → Heading-c5c71fc5.js} +1 -1
  4. package/dist/cjs/{app-globals-72576a1c.js → app-globals-a34c0991.js} +20 -25
  5. package/dist/cjs/{ar-1718ae57.js → ar-fa16156d.js} +15 -15
  6. package/dist/cjs/{bg-190a176c.js → bg-b39e773e.js} +15 -15
  7. package/dist/cjs/{bs-919e0de8.js → bs-4579ea2a.js} +15 -15
  8. package/dist/cjs/buffer-tools_4.cjs.entry.js +1437 -1437
  9. package/dist/cjs/{ca-94918e06.js → ca-f3f64686.js} +15 -15
  10. package/dist/cjs/calcite-accordion-item.cjs.entry.js +140 -140
  11. package/dist/cjs/calcite-accordion.cjs.entry.js +75 -75
  12. package/dist/cjs/calcite-action-bar.cjs.entry.js +216 -216
  13. package/dist/cjs/calcite-action-group_2.cjs.entry.js +365 -365
  14. package/dist/cjs/calcite-action-pad.cjs.entry.js +135 -135
  15. package/dist/cjs/calcite-action_2.cjs.entry.js +445 -445
  16. package/dist/cjs/calcite-alert.cjs.entry.js +247 -247
  17. package/dist/cjs/calcite-avatar.cjs.entry.js +73 -73
  18. package/dist/cjs/calcite-block-section.cjs.entry.js +122 -122
  19. package/dist/cjs/calcite-block.cjs.entry.js +131 -131
  20. package/dist/cjs/calcite-button.cjs.entry.js +182 -182
  21. package/dist/cjs/calcite-card.cjs.entry.js +99 -99
  22. package/dist/cjs/calcite-checkbox.cjs.entry.js +125 -125
  23. package/dist/cjs/calcite-chip-group.cjs.entry.js +164 -164
  24. package/dist/cjs/calcite-chip.cjs.entry.js +213 -213
  25. package/dist/cjs/calcite-color-picker-hex-input_2.cjs.entry.js +303 -303
  26. package/dist/cjs/calcite-color-picker.cjs.entry.js +886 -886
  27. package/dist/cjs/calcite-combobox-item-group.cjs.entry.js +35 -35
  28. package/dist/cjs/calcite-combobox_6.cjs.entry.js +1786 -1786
  29. package/dist/cjs/calcite-date-picker-day_3.cjs.entry.js +589 -589
  30. package/dist/cjs/calcite-date-picker.cjs.entry.js +434 -434
  31. package/dist/cjs/calcite-fab.cjs.entry.js +66 -66
  32. package/dist/cjs/calcite-filter_5.cjs.entry.js +1131 -1131
  33. package/dist/cjs/calcite-flow-item.cjs.entry.js +146 -146
  34. package/dist/cjs/calcite-flow.cjs.entry.js +117 -117
  35. package/dist/cjs/calcite-graph.cjs.entry.js +66 -66
  36. package/dist/cjs/calcite-icon.cjs.entry.js +80 -80
  37. package/dist/cjs/calcite-inline-editable.cjs.entry.js +225 -225
  38. package/dist/cjs/calcite-input-date-picker.cjs.entry.js +632 -632
  39. package/dist/cjs/calcite-input-number_2.cjs.entry.js +846 -846
  40. package/dist/cjs/{calcite-input-time-picker-b99baf7b.js → calcite-input-time-picker-6f38ef8c.js} +534 -534
  41. package/dist/cjs/calcite-input-time-picker.cjs.entry.js +15 -15
  42. package/dist/cjs/calcite-input-time-zone.cjs.entry.js +150 -150
  43. package/dist/cjs/calcite-input_2.cjs.entry.js +645 -645
  44. package/dist/cjs/calcite-label.cjs.entry.js +40 -40
  45. package/dist/cjs/calcite-link.cjs.entry.js +96 -96
  46. package/dist/cjs/calcite-list-item-group.cjs.entry.js +46 -46
  47. package/dist/cjs/calcite-loader.cjs.entry.js +65 -65
  48. package/dist/cjs/calcite-menu-item.cjs.entry.js +246 -246
  49. package/dist/cjs/calcite-menu.cjs.entry.js +161 -161
  50. package/dist/cjs/calcite-modal.cjs.entry.js +282 -282
  51. package/dist/cjs/calcite-navigation-logo.cjs.entry.js +52 -52
  52. package/dist/cjs/calcite-navigation-user.cjs.entry.js +45 -45
  53. package/dist/cjs/calcite-navigation.cjs.entry.js +126 -126
  54. package/dist/cjs/calcite-notice.cjs.entry.js +105 -105
  55. package/dist/cjs/calcite-option-group.cjs.entry.js +24 -24
  56. package/dist/cjs/calcite-option_2.cjs.entry.js +271 -271
  57. package/dist/cjs/calcite-pagination.cjs.entry.js +191 -191
  58. package/dist/cjs/calcite-panel_2.cjs.entry.js +346 -346
  59. package/dist/cjs/calcite-pick-list-group.cjs.entry.js +46 -46
  60. package/dist/cjs/calcite-pick-list-item.cjs.entry.js +181 -181
  61. package/dist/cjs/calcite-pick-list.cjs.entry.js +130 -130
  62. package/dist/cjs/calcite-radio-button-group.cjs.entry.js +118 -118
  63. package/dist/cjs/calcite-radio-button.cjs.entry.js +292 -292
  64. package/dist/cjs/calcite-rating.cjs.entry.js +245 -245
  65. package/dist/cjs/calcite-scrim.cjs.entry.js +93 -93
  66. package/dist/cjs/calcite-segmented-control_2.cjs.entry.js +225 -225
  67. package/dist/cjs/calcite-shell-center-row.cjs.entry.js +42 -42
  68. package/dist/cjs/calcite-shell-panel_14.cjs.entry.js +2604 -2604
  69. package/dist/cjs/calcite-sortable-list.cjs.entry.js +134 -134
  70. package/dist/cjs/calcite-split-button.cjs.entry.js +92 -92
  71. package/dist/cjs/calcite-stepper-item.cjs.entry.js +197 -197
  72. package/dist/cjs/calcite-stepper.cjs.entry.js +187 -187
  73. package/dist/cjs/calcite-switch.cjs.entry.js +100 -100
  74. package/dist/cjs/calcite-text-area.cjs.entry.js +235 -235
  75. package/dist/cjs/calcite-tile-select-group.cjs.entry.js +27 -27
  76. package/dist/cjs/calcite-tile-select.cjs.entry.js +180 -180
  77. package/dist/cjs/calcite-tile.cjs.entry.js +58 -58
  78. package/dist/cjs/calcite-time-picker.cjs.entry.js +619 -619
  79. package/dist/cjs/calcite-tip-group.cjs.entry.js +10 -10
  80. package/dist/cjs/calcite-tip-manager.cjs.entry.js +185 -185
  81. package/dist/cjs/calcite-tip.cjs.entry.js +94 -94
  82. package/dist/cjs/calcite-tooltip.cjs.entry.js +185 -185
  83. package/dist/cjs/calcite-tree_3.cjs.entry.js +821 -821
  84. package/dist/cjs/card-manager_4.cjs.entry.js +652 -652
  85. package/dist/cjs/{conditionalSlot-85b3a6b3.js → conditionalSlot-a51326e7.js} +2 -2
  86. package/dist/cjs/crowdsource-manager.cjs.entry.js +256 -256
  87. package/dist/cjs/crowdsource-reporter.cjs.entry.js +60 -60
  88. package/dist/cjs/{cs-fe27e732.js → cs-1bcd5b46.js} +15 -15
  89. package/dist/cjs/{da-1b7f3440.js → da-30ee21db.js} +15 -15
  90. package/dist/cjs/{date-cec32b0e.js → date-f6611a19.js} +1 -1
  91. package/dist/cjs/{de-0dc1effa.js → de-42aae5ad.js} +15 -15
  92. package/dist/cjs/{de-at-acdc4d01.js → de-at-a3a6f020.js} +15 -15
  93. package/dist/cjs/{de-ch-778a0d99.js → de-ch-36c13310.js} +15 -15
  94. package/dist/cjs/deduct-calculator.cjs.entry.js +90 -90
  95. package/dist/cjs/{dom-c1807fc1.js → dom-d529bae8.js} +2 -2
  96. package/dist/cjs/{downloadUtils-a8c530f7.js → downloadUtils-6eb59363.js} +660 -660
  97. package/dist/cjs/edit-card_2.cjs.entry.js +345 -345
  98. package/dist/cjs/{el-fdbc9bc1.js → el-90d066ae.js} +15 -15
  99. package/dist/cjs/{en-au-0ff50cdf.js → en-au-685b882b.js} +15 -15
  100. package/dist/cjs/{en-ca-284e9368.js → en-ca-ff4bc403.js} +15 -15
  101. package/dist/cjs/{en-gb-0fcae8ae.js → en-gb-2f5587ad.js} +15 -15
  102. package/dist/cjs/{es-cd54acba.js → es-e9183ca0.js} +15 -15
  103. package/dist/cjs/{es-mx-2078d50f.js → es-mx-dcc9afb2.js} +15 -15
  104. package/dist/cjs/{et-17f323f6.js → et-a18949ea.js} +15 -15
  105. package/dist/cjs/{fi-82f27397.js → fi-1ce00d38.js} +15 -15
  106. package/dist/cjs/{filter-bda212b4.js → filter-494bf35e.js} +1 -1
  107. package/dist/cjs/{floating-ui-8d10af88.js → floating-ui-7d6e57d3.js} +2 -2
  108. package/dist/cjs/{focusTrapComponent-a22fc6a8.js → focusTrapComponent-0c4d7671.js} +1 -1
  109. package/dist/cjs/{form-9d8ebf06.js → form-bcf49eae.js} +2 -2
  110. package/dist/cjs/{fr-af7e1192.js → fr-a9435a19.js} +15 -15
  111. package/dist/cjs/{fr-ch-5e1f2c28.js → fr-ch-51efa9bf.js} +15 -15
  112. package/dist/cjs/{he-ea851800.js → he-c5dccfa2.js} +15 -15
  113. package/dist/cjs/{hi-5212a21d.js → hi-0898e7f2.js} +15 -15
  114. package/dist/cjs/{hr-4eecb2ed.js → hr-68f7d8da.js} +15 -15
  115. package/dist/cjs/{hu-6b527d8e.js → hu-e494037d.js} +15 -15
  116. package/dist/cjs/{id-d78f12ec.js → id-bef40c1c.js} +15 -15
  117. package/dist/cjs/{index-0e50040c.js → index-6654298b.js} +38 -180
  118. package/dist/cjs/{index-2b60e135.js → index-e1b1954f.js} +1 -1
  119. package/dist/cjs/{index.es-4542630e.js → index.es-d9b5d3a5.js} +6 -6
  120. package/dist/cjs/{interfaces-d539e30c.js → interfaces-ad03ec39.js} +77 -77
  121. package/dist/cjs/{it-15242935.js → it-1144ca67.js} +15 -15
  122. package/dist/cjs/{it-ch-9dc21944.js → it-ch-2c14dca7.js} +15 -15
  123. package/dist/cjs/{ja-f702cfc2.js → ja-caad9809.js} +15 -15
  124. package/dist/cjs/{ko-aa9bde2c.js → ko-ddec9054.js} +15 -15
  125. package/dist/cjs/{label-6e33e971.js → label-215c4af3.js} +1 -1
  126. package/dist/cjs/list-item.cjs.entry.js +60 -60
  127. package/dist/cjs/{loadModules-31cab7ac.js → loadModules-ae7715f2.js} +19 -19
  128. package/dist/cjs/{loadable-bac9cdd6.js → loadable-6da743c6.js} +1 -1
  129. package/dist/cjs/loader.cjs.js +13 -4
  130. package/dist/cjs/{locale-c63a1b57.js → locale-477d8d51.js} +3 -3
  131. package/dist/cjs/{locale-d15cd743.js → locale-b113c6b2.js} +107 -107
  132. package/dist/cjs/{lt-e741ff2f.js → lt-205a1aa6.js} +15 -15
  133. package/dist/cjs/{lv-92d6768e.js → lv-3ba82f9b.js} +15 -15
  134. package/dist/cjs/map-picker_2.cjs.entry.js +243 -243
  135. package/dist/cjs/map-select-tools_3.cjs.entry.js +1285 -1285
  136. package/dist/cjs/{mapViewUtils-9da2dddd.js → mapViewUtils-77a1ff88.js} +384 -384
  137. package/dist/cjs/{mk-b209ac0d.js → mk-069ea86a.js} +15 -15
  138. package/dist/cjs/{nb-db13e666.js → nb-9e9c934f.js} +15 -15
  139. package/dist/cjs/{nl-fcd9e0c5.js → nl-5dd0116f.js} +15 -15
  140. package/dist/cjs/{openCloseComponent-5d70fcd8.js → openCloseComponent-3fa18210.js} +1 -1
  141. package/dist/cjs/pci-calculator.cjs.entry.js +102 -102
  142. package/dist/cjs/{pciUtils-e0ddeb7c.js → pciUtils-423cfc68.js} +836 -836
  143. package/dist/cjs/{pl-87c83322.js → pl-74e70b37.js} +15 -15
  144. package/dist/cjs/{pt-br-03333e90.js → pt-br-0f76e430.js} +15 -15
  145. package/dist/cjs/{pt-b0b5f472.js → pt-cc737fcc.js} +15 -15
  146. package/dist/cjs/public-notification.cjs.entry.js +844 -844
  147. package/dist/cjs/{publicNotificationStore-55edd658.js → publicNotificationStore-ec1bdd2d.js} +40 -40
  148. package/dist/cjs/{ro-c3661b73.js → ro-5e396753.js} +15 -15
  149. package/dist/cjs/{ru-8dd3fd58.js → ru-f7371aca.js} +15 -15
  150. package/dist/cjs/{shared-list-render-c0adb192.js → shared-list-render-76c5dc25.js} +6 -6
  151. package/dist/cjs/{sk-151d9acf.js → sk-ec02498f.js} +15 -15
  152. package/dist/cjs/{sl-9b45a152.js → sl-8363f4d7.js} +15 -15
  153. package/dist/cjs/solution-configuration.cjs.entry.js +888 -888
  154. package/dist/cjs/solution-contents_3.cjs.entry.js +21506 -21506
  155. package/dist/cjs/{solution-store-0004e4e6.js → solution-store-bd956f06.js} +577 -577
  156. package/dist/cjs/solutions-components.cjs.js +4 -4
  157. package/dist/cjs/{sortableComponent-58679f07.js → sortableComponent-8135ea87.js} +1 -1
  158. package/dist/cjs/{sr-186bf15c.js → sr-b0f92cb1.js} +15 -15
  159. package/dist/cjs/store-manager.cjs.entry.js +52 -52
  160. package/dist/cjs/{sv-a93fee0c.js → sv-e2c27fff.js} +15 -15
  161. package/dist/cjs/{t9n-1d032c30.js → t9n-8be30efb.js} +2 -2
  162. package/dist/cjs/{th-41680352.js → th-8a6dc2cc.js} +15 -15
  163. package/dist/cjs/{throttle-aeeb1b4d.js → throttle-8ee74c77.js} +1 -1
  164. package/dist/cjs/{time-5e450ec8.js → time-9004df7e.js} +1 -1
  165. package/dist/cjs/{tr-0bd886d6.js → tr-09137435.js} +15 -15
  166. package/dist/cjs/{uk-4fade133.js → uk-c30401f4.js} +15 -15
  167. package/dist/cjs/{utils-ae9bdd59.js → utils-ed4e5028.js} +1 -1
  168. package/dist/cjs/{utils-acfeed9d.js → utils-fb81c6b3.js} +3 -3
  169. package/dist/cjs/{vi-1c9fe343.js → vi-e069c9e4.js} +15 -15
  170. package/dist/cjs/{zh-cn-28fa1fe1.js → zh-cn-50f223a8.js} +15 -15
  171. package/dist/cjs/{zh-hk-5abf8eb5.js → zh-hk-5498073d.js} +15 -15
  172. package/dist/cjs/{zh-tw-07500357.js → zh-tw-dfdb0ae8.js} +15 -15
  173. package/dist/collection/collection-manifest.json +35 -35
  174. package/dist/collection/components/buffer-tools/buffer-tools.js +476 -481
  175. package/dist/collection/components/card-manager/card-manager.js +197 -199
  176. package/dist/collection/components/crowdsource-manager/crowdsource-manager.js +406 -407
  177. package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.js +89 -89
  178. package/dist/collection/components/deduct-calculator/deduct-calculator.js +143 -143
  179. package/dist/collection/components/edit-card/edit-card.js +300 -302
  180. package/dist/collection/components/info-card/info-card.js +357 -361
  181. package/dist/collection/components/json-editor/json-editor.js +614 -618
  182. package/dist/collection/components/layer-table/layer-table.js +548 -551
  183. package/dist/collection/components/layout-manager/layout-manager.js +135 -136
  184. package/dist/collection/components/list-item/list-item.js +89 -89
  185. package/dist/collection/components/map-card/map-card.js +203 -206
  186. package/dist/collection/components/map-draw-tools/map-draw-tools.js +683 -692
  187. package/dist/collection/components/map-layer-picker/map-layer-picker.js +423 -424
  188. package/dist/collection/components/map-picker/map-picker.js +224 -226
  189. package/dist/collection/components/map-select-tools/map-select-tools.js +1229 -1242
  190. package/dist/collection/components/map-tools/map-tools.js +210 -212
  191. package/dist/collection/components/pci-calculator/pci-calculator.js +143 -143
  192. package/dist/collection/components/pdf-download/pdf-download.js +333 -338
  193. package/dist/collection/components/public-notification/public-notification.js +1287 -1295
  194. package/dist/collection/components/refine-selection/refine-selection.js +601 -608
  195. package/dist/collection/components/solution-configuration/solution-configuration.js +735 -739
  196. package/dist/collection/components/solution-contents/solution-contents.js +162 -163
  197. package/dist/collection/components/solution-item/solution-item.js +202 -203
  198. package/dist/collection/components/solution-item-details/solution-item-details.js +248 -248
  199. package/dist/collection/components/solution-item-icon/solution-item-icon.js +398 -398
  200. package/dist/collection/components/solution-item-sharing/solution-item-sharing.js +199 -200
  201. package/dist/collection/components/solution-organization-variables/solution-organization-variables.js +156 -156
  202. package/dist/collection/components/solution-resource-item/solution-resource-item.js +347 -348
  203. package/dist/collection/components/solution-spatial-ref/solution-spatial-ref.js +510 -515
  204. package/dist/collection/components/solution-spatial-ref/spatialreferences.js +21046 -21046
  205. package/dist/collection/components/solution-template-data/solution-template-data.js +230 -230
  206. package/dist/collection/components/solution-variables/solution-variables.js +168 -168
  207. package/dist/collection/components/store-manager/store-manager.js +127 -128
  208. package/dist/collection/index.js +1 -1
  209. package/dist/collection/utils/common.js +296 -296
  210. package/dist/collection/utils/csvDownload.js +41 -41
  211. package/dist/collection/utils/csvUtils.js +37 -37
  212. package/dist/collection/utils/downloadUtils.js +530 -530
  213. package/dist/collection/utils/interfaces.js +83 -83
  214. package/dist/collection/utils/languageUtil.js +90 -90
  215. package/dist/collection/utils/loadModules.js +25 -25
  216. package/dist/collection/utils/locale.js +61 -61
  217. package/dist/collection/utils/mapViewUtils.js +240 -240
  218. package/dist/collection/utils/pciUtils.js +842 -842
  219. package/dist/collection/utils/pdfUtils.js +87 -87
  220. package/dist/collection/utils/publicNotificationStore.js +47 -47
  221. package/dist/collection/utils/queryUtils.js +200 -200
  222. package/dist/collection/utils/solution-store.js +584 -584
  223. package/dist/collection/utils/templates.js +346 -346
  224. package/dist/collection/utils/test/mocks/jsApi.js +79 -79
  225. package/dist/collection/utils/test/testUtils.js +123 -123
  226. package/dist/collection/utils/types.js +1 -1
  227. package/dist/components/ExpandToggle.js +1 -1
  228. package/dist/components/action-bar.js +263 -262
  229. package/dist/components/action-group.js +145 -144
  230. package/dist/components/action-menu.js +311 -310
  231. package/dist/components/action.js +186 -185
  232. package/dist/components/alert.js +287 -286
  233. package/dist/components/avatar.js +100 -99
  234. package/dist/components/buffer-tools2.js +264 -263
  235. package/dist/components/button.js +226 -225
  236. package/dist/components/calcite-accordion-item.js +168 -168
  237. package/dist/components/calcite-accordion.js +96 -95
  238. package/dist/components/calcite-action-pad.js +181 -180
  239. package/dist/components/calcite-block-section.js +151 -150
  240. package/dist/components/calcite-block.js +187 -186
  241. package/dist/components/calcite-card.js +133 -132
  242. package/dist/components/calcite-chip-group.js +182 -181
  243. package/dist/components/calcite-color-picker.js +980 -979
  244. package/dist/components/calcite-combobox-item-group.js +53 -52
  245. package/dist/components/calcite-fab.js +105 -104
  246. package/dist/components/calcite-filter.js +1 -1
  247. package/dist/components/calcite-flow-item.js +205 -204
  248. package/dist/components/calcite-flow.js +137 -136
  249. package/dist/components/calcite-inline-editable.js +260 -259
  250. package/dist/components/calcite-input-date-picker.js +704 -703
  251. package/dist/components/calcite-input-time-picker.js +596 -595
  252. package/dist/components/calcite-input-time-zone.js +190 -189
  253. package/dist/components/calcite-label.js +1 -1
  254. package/dist/components/calcite-list-item-group.js +65 -64
  255. package/dist/components/calcite-menu-item.js +297 -297
  256. package/dist/components/calcite-modal.js +329 -328
  257. package/dist/components/calcite-navigation-logo.js +77 -76
  258. package/dist/components/calcite-navigation-user.js +79 -78
  259. package/dist/components/calcite-navigation.js +167 -166
  260. package/dist/components/calcite-option-group.js +43 -42
  261. package/dist/components/calcite-pagination.js +218 -217
  262. package/dist/components/calcite-pick-list-group.js +60 -59
  263. package/dist/components/calcite-pick-list.js +151 -150
  264. package/dist/components/calcite-radio-button-group.js +142 -141
  265. package/dist/components/calcite-radio-button.js +317 -316
  266. package/dist/components/calcite-rating.js +280 -279
  267. package/dist/components/calcite-shell-center-row.js +58 -57
  268. package/dist/components/calcite-sortable-list.js +154 -153
  269. package/dist/components/calcite-split-button.js +143 -142
  270. package/dist/components/calcite-stack.js +1 -1
  271. package/dist/components/calcite-stepper-item.js +226 -225
  272. package/dist/components/calcite-stepper.js +213 -212
  273. package/dist/components/calcite-text-area.js +267 -266
  274. package/dist/components/calcite-tile-select-group.js +45 -44
  275. package/dist/components/calcite-tile-select.js +224 -223
  276. package/dist/components/calcite-tip-group.js +28 -27
  277. package/dist/components/calcite-tip-manager.js +223 -222
  278. package/dist/components/calcite-tip.js +127 -126
  279. package/dist/components/card-manager2.js +156 -155
  280. package/dist/components/checkbox.js +147 -146
  281. package/dist/components/chip.js +246 -245
  282. package/dist/components/color-picker-hex-input.js +288 -287
  283. package/dist/components/color-picker-swatch.js +80 -79
  284. package/dist/components/combobox-item.js +136 -135
  285. package/dist/components/combobox.js +922 -921
  286. package/dist/components/crowdsource-manager.js +476 -475
  287. package/dist/components/crowdsource-reporter.js +76 -75
  288. package/dist/components/date-picker-day.js +110 -110
  289. package/dist/components/date-picker-month-header.js +198 -197
  290. package/dist/components/date-picker-month.js +373 -372
  291. package/dist/components/date-picker.js +493 -492
  292. package/dist/components/date.js +1 -1
  293. package/dist/components/deduct-calculator2.js +982 -981
  294. package/dist/components/dom.js +23 -2
  295. package/dist/components/downloadUtils.js +655 -655
  296. package/dist/components/dropdown-group.js +73 -72
  297. package/dist/components/dropdown-item.js +196 -195
  298. package/dist/components/dropdown.js +421 -420
  299. package/dist/components/edit-card2.js +192 -191
  300. package/dist/components/filter.js +202 -751
  301. package/dist/components/filter2.js +740 -190
  302. package/dist/components/floating-ui.js +2 -2
  303. package/dist/components/focusTrapComponent.js +1 -1
  304. package/dist/components/graph.js +87 -86
  305. package/dist/components/handle.js +166 -165
  306. package/dist/components/icon.js +100 -99
  307. package/dist/components/index.d.ts +36 -0
  308. package/dist/components/index.js +153 -25
  309. package/dist/components/info-card2.js +252 -251
  310. package/dist/components/input-message.js +67 -66
  311. package/dist/components/input-number.js +600 -600
  312. package/dist/components/input-text.js +368 -368
  313. package/dist/components/input.js +687 -687
  314. package/dist/components/interfaces.js +78 -78
  315. package/dist/components/json-editor2.js +426 -425
  316. package/dist/components/label.js +65 -117
  317. package/dist/components/label2.js +110 -57
  318. package/dist/components/layer-table2.js +548 -547
  319. package/dist/components/layout-manager2.js +119 -118
  320. package/dist/components/link.js +123 -123
  321. package/dist/components/list-item.js +76 -75
  322. package/dist/components/list-item2.js +432 -431
  323. package/dist/components/list.js +511 -510
  324. package/dist/components/loadModules.js +18 -18
  325. package/dist/components/loader.js +87 -86
  326. package/dist/components/locale.js +106 -106
  327. package/dist/components/locale2.js +2 -2
  328. package/dist/components/map-card2.js +201 -200
  329. package/dist/components/map-draw-tools2.js +384 -383
  330. package/dist/components/map-layer-picker2.js +292 -291
  331. package/dist/components/map-picker2.js +236 -235
  332. package/dist/components/map-select-tools2.js +917 -916
  333. package/dist/components/map-tools2.js +170 -169
  334. package/dist/components/mapViewUtils.js +235 -235
  335. package/dist/components/menu.js +179 -178
  336. package/dist/components/notice.js +131 -130
  337. package/dist/components/option.js +92 -91
  338. package/dist/components/panel.js +308 -307
  339. package/dist/components/pci-calculator.js +170 -169
  340. package/dist/components/pdf-download2.js +174 -173
  341. package/dist/components/pick-list-item.js +220 -219
  342. package/dist/components/popover.js +350 -349
  343. package/dist/components/progress.js +46 -46
  344. package/dist/components/public-notification.js +1102 -1101
  345. package/dist/components/publicNotificationStore.js +39 -39
  346. package/dist/components/queryUtils.js +152 -152
  347. package/dist/components/refine-selection2.js +547 -546
  348. package/dist/components/resources.js +9 -17
  349. package/dist/components/resources2.js +13 -9
  350. package/dist/components/resources3.js +5 -9
  351. package/dist/components/scrim.js +116 -115
  352. package/dist/components/segmented-control-item.js +63 -62
  353. package/dist/components/segmented-control.js +214 -213
  354. package/dist/components/select.js +227 -226
  355. package/dist/components/shared-list-render.js +3 -3
  356. package/dist/components/shell-panel.js +398 -398
  357. package/dist/components/shell.js +120 -119
  358. package/dist/components/slider.js +899 -898
  359. package/dist/components/solution-configuration.js +1096 -1095
  360. package/dist/components/solution-contents2.js +112 -111
  361. package/dist/components/solution-item-details2.js +218 -217
  362. package/dist/components/solution-item-icon2.js +331 -330
  363. package/dist/components/solution-item-sharing2.js +152 -151
  364. package/dist/components/solution-item2.js +270 -269
  365. package/dist/components/solution-organization-variables2.js +116 -115
  366. package/dist/components/solution-resource-item2.js +332 -331
  367. package/dist/components/solution-spatial-ref2.js +21421 -21420
  368. package/dist/components/solution-store.js +575 -575
  369. package/dist/components/solution-template-data2.js +203 -202
  370. package/dist/components/solution-variables2.js +133 -132
  371. package/dist/components/sortableComponent.js +1 -1
  372. package/dist/components/stack.js +79 -78
  373. package/dist/components/store-manager.js +71 -70
  374. package/dist/components/switch.js +119 -118
  375. package/dist/components/tab-nav.js +255 -254
  376. package/dist/components/tab-title.js +301 -300
  377. package/dist/components/tab.js +112 -111
  378. package/dist/components/tabs.js +131 -130
  379. package/dist/components/tile.js +90 -89
  380. package/dist/components/time-picker.js +655 -654
  381. package/dist/components/tooltip.js +208 -207
  382. package/dist/components/tree-item.js +288 -288
  383. package/dist/components/tree.js +282 -281
  384. package/dist/components/utils.js +1 -1
  385. package/dist/components/utils2.js +2 -2
  386. package/dist/components/utils3.js +1 -1
  387. package/dist/components/value-list-item.js +170 -169
  388. package/dist/components/value-list.js +276 -275
  389. package/dist/esm/{ExpandToggle-3d10bd1e.js → ExpandToggle-3420fa39.js} +4 -4
  390. package/dist/esm/{FloatingArrow-29db6da6.js → FloatingArrow-cd8eafa4.js} +1 -1
  391. package/dist/esm/{Heading-cb79e5b2.js → Heading-1763134e.js} +1 -1
  392. package/dist/esm/{app-globals-5cbac6b0.js → app-globals-580889bd.js} +20 -25
  393. package/dist/esm/{ar-4b751ba8.js → ar-ceb1b389.js} +15 -15
  394. package/dist/esm/{bg-5d8bf5ea.js → bg-a8824832.js} +15 -15
  395. package/dist/esm/{bs-ff510e71.js → bs-5c2ca44f.js} +15 -15
  396. package/dist/esm/buffer-tools_4.entry.js +1437 -1437
  397. package/dist/esm/{ca-b9a5e51a.js → ca-47f86073.js} +15 -15
  398. package/dist/esm/calcite-accordion-item.entry.js +140 -140
  399. package/dist/esm/calcite-accordion.entry.js +75 -75
  400. package/dist/esm/calcite-action-bar.entry.js +216 -216
  401. package/dist/esm/calcite-action-group_2.entry.js +365 -365
  402. package/dist/esm/calcite-action-pad.entry.js +135 -135
  403. package/dist/esm/calcite-action_2.entry.js +445 -445
  404. package/dist/esm/calcite-alert.entry.js +247 -247
  405. package/dist/esm/calcite-avatar.entry.js +73 -73
  406. package/dist/esm/calcite-block-section.entry.js +122 -122
  407. package/dist/esm/calcite-block.entry.js +131 -131
  408. package/dist/esm/calcite-button.entry.js +182 -182
  409. package/dist/esm/calcite-card.entry.js +99 -99
  410. package/dist/esm/calcite-checkbox.entry.js +125 -125
  411. package/dist/esm/calcite-chip-group.entry.js +164 -164
  412. package/dist/esm/calcite-chip.entry.js +213 -213
  413. package/dist/esm/calcite-color-picker-hex-input_2.entry.js +303 -303
  414. package/dist/esm/calcite-color-picker.entry.js +886 -886
  415. package/dist/esm/calcite-combobox-item-group.entry.js +35 -35
  416. package/dist/esm/calcite-combobox_6.entry.js +1786 -1786
  417. package/dist/esm/calcite-date-picker-day_3.entry.js +589 -589
  418. package/dist/esm/calcite-date-picker.entry.js +434 -434
  419. package/dist/esm/calcite-fab.entry.js +66 -66
  420. package/dist/esm/calcite-filter_5.entry.js +1131 -1131
  421. package/dist/esm/calcite-flow-item.entry.js +146 -146
  422. package/dist/esm/calcite-flow.entry.js +117 -117
  423. package/dist/esm/calcite-graph.entry.js +66 -66
  424. package/dist/esm/calcite-icon.entry.js +80 -80
  425. package/dist/esm/calcite-inline-editable.entry.js +225 -225
  426. package/dist/esm/calcite-input-date-picker.entry.js +632 -632
  427. package/dist/esm/calcite-input-number_2.entry.js +846 -846
  428. package/dist/esm/{calcite-input-time-picker-13448515.js → calcite-input-time-picker-59a3ed66.js} +534 -534
  429. package/dist/esm/calcite-input-time-picker.entry.js +15 -15
  430. package/dist/esm/calcite-input-time-zone.entry.js +150 -150
  431. package/dist/esm/calcite-input_2.entry.js +645 -645
  432. package/dist/esm/calcite-label.entry.js +40 -40
  433. package/dist/esm/calcite-link.entry.js +96 -96
  434. package/dist/esm/calcite-list-item-group.entry.js +46 -46
  435. package/dist/esm/calcite-loader.entry.js +65 -65
  436. package/dist/esm/calcite-menu-item.entry.js +246 -246
  437. package/dist/esm/calcite-menu.entry.js +161 -161
  438. package/dist/esm/calcite-modal.entry.js +282 -282
  439. package/dist/esm/calcite-navigation-logo.entry.js +52 -52
  440. package/dist/esm/calcite-navigation-user.entry.js +45 -45
  441. package/dist/esm/calcite-navigation.entry.js +126 -126
  442. package/dist/esm/calcite-notice.entry.js +105 -105
  443. package/dist/esm/calcite-option-group.entry.js +24 -24
  444. package/dist/esm/calcite-option_2.entry.js +271 -271
  445. package/dist/esm/calcite-pagination.entry.js +191 -191
  446. package/dist/esm/calcite-panel_2.entry.js +346 -346
  447. package/dist/esm/calcite-pick-list-group.entry.js +46 -46
  448. package/dist/esm/calcite-pick-list-item.entry.js +181 -181
  449. package/dist/esm/calcite-pick-list.entry.js +130 -130
  450. package/dist/esm/calcite-radio-button-group.entry.js +118 -118
  451. package/dist/esm/calcite-radio-button.entry.js +292 -292
  452. package/dist/esm/calcite-rating.entry.js +245 -245
  453. package/dist/esm/calcite-scrim.entry.js +93 -93
  454. package/dist/esm/calcite-segmented-control_2.entry.js +225 -225
  455. package/dist/esm/calcite-shell-center-row.entry.js +42 -42
  456. package/dist/esm/calcite-shell-panel_14.entry.js +2604 -2604
  457. package/dist/esm/calcite-sortable-list.entry.js +134 -134
  458. package/dist/esm/calcite-split-button.entry.js +92 -92
  459. package/dist/esm/calcite-stepper-item.entry.js +197 -197
  460. package/dist/esm/calcite-stepper.entry.js +187 -187
  461. package/dist/esm/calcite-switch.entry.js +100 -100
  462. package/dist/esm/calcite-text-area.entry.js +235 -235
  463. package/dist/esm/calcite-tile-select-group.entry.js +27 -27
  464. package/dist/esm/calcite-tile-select.entry.js +180 -180
  465. package/dist/esm/calcite-tile.entry.js +58 -58
  466. package/dist/esm/calcite-time-picker.entry.js +619 -619
  467. package/dist/esm/calcite-tip-group.entry.js +10 -10
  468. package/dist/esm/calcite-tip-manager.entry.js +185 -185
  469. package/dist/esm/calcite-tip.entry.js +94 -94
  470. package/dist/esm/calcite-tooltip.entry.js +185 -185
  471. package/dist/esm/calcite-tree_3.entry.js +821 -821
  472. package/dist/esm/card-manager_4.entry.js +652 -652
  473. package/dist/esm/{conditionalSlot-27a0fce0.js → conditionalSlot-91396dd5.js} +2 -2
  474. package/dist/esm/crowdsource-manager.entry.js +256 -256
  475. package/dist/esm/crowdsource-reporter.entry.js +60 -60
  476. package/dist/esm/{cs-f21a0628.js → cs-f651c3cd.js} +15 -15
  477. package/dist/esm/{da-dc48fc4c.js → da-e32ccc0a.js} +15 -15
  478. package/dist/esm/{date-0ed48e97.js → date-51fa981b.js} +1 -1
  479. package/dist/esm/{de-59290071.js → de-9b417aed.js} +15 -15
  480. package/dist/esm/{de-at-cd6e6ab7.js → de-at-f73447e2.js} +15 -15
  481. package/dist/esm/{de-ch-27c44e34.js → de-ch-7ec8c31e.js} +15 -15
  482. package/dist/esm/deduct-calculator.entry.js +90 -90
  483. package/dist/esm/{dom-843e3afd.js → dom-8a9e4ee8.js} +2 -2
  484. package/dist/esm/{downloadUtils-63661805.js → downloadUtils-43b53f5a.js} +660 -660
  485. package/dist/esm/edit-card_2.entry.js +345 -345
  486. package/dist/esm/{el-f09fdec6.js → el-9a3189a2.js} +15 -15
  487. package/dist/esm/{en-au-90087aa5.js → en-au-5aea3b73.js} +15 -15
  488. package/dist/esm/{en-ca-10751695.js → en-ca-fe3e706b.js} +15 -15
  489. package/dist/esm/{en-gb-0f8547bd.js → en-gb-a4278000.js} +15 -15
  490. package/dist/esm/{es-b0997cf1.js → es-383f9c9e.js} +15 -15
  491. package/dist/esm/{es-mx-226f5028.js → es-mx-7845b382.js} +15 -15
  492. package/dist/esm/{et-dc96c453.js → et-d8f8df06.js} +15 -15
  493. package/dist/esm/{fi-0941704d.js → fi-14894338.js} +15 -15
  494. package/dist/esm/{filter-1cac3edf.js → filter-bf34614b.js} +1 -1
  495. package/dist/esm/{floating-ui-d28d0fd6.js → floating-ui-9870f74c.js} +2 -2
  496. package/dist/esm/{focusTrapComponent-ff3a9f28.js → focusTrapComponent-34010d00.js} +1 -1
  497. package/dist/esm/{form-11c6a015.js → form-6669a774.js} +2 -2
  498. package/dist/esm/{fr-8da3458d.js → fr-6f570086.js} +15 -15
  499. package/dist/esm/{fr-ch-739ceddf.js → fr-ch-b9f89159.js} +15 -15
  500. package/dist/esm/{he-8b662dfa.js → he-174aca6e.js} +15 -15
  501. package/dist/esm/{hi-10996f89.js → hi-7e469aab.js} +15 -15
  502. package/dist/esm/{hr-42c2024d.js → hr-a4ac455a.js} +15 -15
  503. package/dist/esm/{hu-4768b3ff.js → hu-207da291.js} +15 -15
  504. package/dist/esm/{id-24a08170.js → id-8e4d57bf.js} +15 -15
  505. package/dist/esm/{index-b91c174c.js → index-4c4a4f3d.js} +1 -1
  506. package/dist/esm/{index-b5d9d795.js → index-d298aca9.js} +38 -180
  507. package/dist/esm/{index.es-3a3aa8e3.js → index.es-a185f2b1.js} +6 -6
  508. package/dist/esm/{interfaces-5a2fe8b4.js → interfaces-bf20e69c.js} +77 -77
  509. package/dist/esm/{it-ad09649f.js → it-7ade952c.js} +15 -15
  510. package/dist/esm/{it-ch-b05fc10d.js → it-ch-181d76ab.js} +15 -15
  511. package/dist/esm/{ja-ab839b73.js → ja-42013dd3.js} +15 -15
  512. package/dist/esm/{ko-c778539e.js → ko-8de07550.js} +15 -15
  513. package/dist/esm/{label-6a1caf64.js → label-661d8e10.js} +1 -1
  514. package/dist/esm/list-item.entry.js +60 -60
  515. package/dist/esm/{loadModules-2ecd1e44.js → loadModules-cd3569de.js} +19 -19
  516. package/dist/esm/{loadable-6bca96ad.js → loadable-08376d90.js} +1 -1
  517. package/dist/esm/loader.js +14 -5
  518. package/dist/esm/{locale-aa3de591.js → locale-54cac39a.js} +107 -107
  519. package/dist/esm/{locale-d8561d54.js → locale-73d0926a.js} +3 -3
  520. package/dist/esm/{lt-447d9aa9.js → lt-1ef29b5b.js} +15 -15
  521. package/dist/esm/{lv-4d715e11.js → lv-263a2f78.js} +15 -15
  522. package/dist/esm/map-picker_2.entry.js +243 -243
  523. package/dist/esm/map-select-tools_3.entry.js +1285 -1285
  524. package/dist/esm/{mapViewUtils-f0c04325.js → mapViewUtils-1e68cede.js} +384 -384
  525. package/dist/esm/{mk-b3d7401a.js → mk-d8bae136.js} +15 -15
  526. package/dist/esm/{nb-2b4a8366.js → nb-494542b3.js} +15 -15
  527. package/dist/esm/{nl-c0db1da2.js → nl-cd882d7f.js} +15 -15
  528. package/dist/esm/{openCloseComponent-2b5c6bed.js → openCloseComponent-a40fd6fd.js} +1 -1
  529. package/dist/esm/pci-calculator.entry.js +102 -102
  530. package/dist/esm/{pciUtils-59c29b42.js → pciUtils-ecda46e5.js} +836 -836
  531. package/dist/esm/{pl-0d322bb4.js → pl-b79095d5.js} +15 -15
  532. package/dist/esm/polyfills/core-js.js +11 -0
  533. package/dist/esm/polyfills/css-shim.js +1 -0
  534. package/dist/esm/polyfills/dom.js +79 -0
  535. package/dist/esm/polyfills/es5-html-element.js +1 -0
  536. package/dist/esm/polyfills/index.js +34 -0
  537. package/dist/esm/polyfills/system.js +6 -0
  538. package/dist/esm/{pt-5997598c.js → pt-5ca0b751.js} +15 -15
  539. package/dist/esm/{pt-br-6b77e7db.js → pt-br-e1a1ce60.js} +15 -15
  540. package/dist/esm/public-notification.entry.js +844 -844
  541. package/dist/esm/{publicNotificationStore-ade82148.js → publicNotificationStore-6ef555f3.js} +40 -40
  542. package/dist/esm/{ro-ac3724e0.js → ro-5cbc0f2a.js} +15 -15
  543. package/dist/esm/{ru-4e75151f.js → ru-e66f5b84.js} +15 -15
  544. package/dist/esm/{shared-list-render-abd19c8d.js → shared-list-render-5b788e63.js} +6 -6
  545. package/dist/esm/{sk-bbfa22a3.js → sk-be2b5cec.js} +15 -15
  546. package/dist/esm/{sl-867cecfc.js → sl-74600272.js} +15 -15
  547. package/dist/esm/solution-configuration.entry.js +888 -888
  548. package/dist/esm/solution-contents_3.entry.js +21506 -21506
  549. package/dist/esm/{solution-store-46bc46a5.js → solution-store-c107ca4d.js} +577 -577
  550. package/dist/esm/solutions-components.js +5 -5
  551. package/dist/esm/{sortableComponent-db502e97.js → sortableComponent-1dd8a4ae.js} +1 -1
  552. package/dist/esm/{sr-198b5c00.js → sr-58280ce5.js} +15 -15
  553. package/dist/esm/store-manager.entry.js +52 -52
  554. package/dist/esm/{sv-02d64370.js → sv-f0e2171a.js} +15 -15
  555. package/dist/esm/{t9n-76168237.js → t9n-745553e0.js} +2 -2
  556. package/dist/esm/{th-1616e303.js → th-6c3eac31.js} +15 -15
  557. package/dist/esm/{throttle-9ab70933.js → throttle-26fa347b.js} +1 -1
  558. package/dist/esm/{time-6721a4c2.js → time-7e3ba7c6.js} +1 -1
  559. package/dist/esm/{tr-f4619f64.js → tr-092713ca.js} +15 -15
  560. package/dist/esm/{uk-df7df34a.js → uk-95df0f95.js} +15 -15
  561. package/dist/esm/{utils-ccfd94a7.js → utils-4f695ec2.js} +1 -1
  562. package/dist/esm/{utils-f54411df.js → utils-ddff4ef3.js} +3 -3
  563. package/dist/esm/{vi-176ca9f7.js → vi-70a9857c.js} +15 -15
  564. package/dist/esm/{zh-cn-e13d83d1.js → zh-cn-e024ef2d.js} +15 -15
  565. package/dist/esm/{zh-hk-d97365d8.js → zh-hk-36ff9e8f.js} +15 -15
  566. package/dist/esm/{zh-tw-a2b6f0b7.js → zh-tw-96ddb74c.js} +15 -15
  567. package/dist/loader/index.d.ts +2 -2
  568. package/dist/solutions-components/{p-15ef7894.js → p-0056655c.js} +1 -1
  569. package/dist/solutions-components/{p-955a956a.entry.js → p-017265ef.entry.js} +1 -1
  570. package/dist/solutions-components/{p-844ee452.entry.js → p-017543d5.entry.js} +1 -1
  571. package/dist/solutions-components/{p-b2e6c578.js → p-0209ed2e.js} +1 -1
  572. package/dist/solutions-components/{p-5e59219b.entry.js → p-0245bb56.entry.js} +1 -1
  573. package/dist/solutions-components/{p-916f90ec.entry.js → p-043ead99.entry.js} +1 -1
  574. package/dist/solutions-components/p-048a2a6d.js +6 -0
  575. package/dist/solutions-components/{p-e02fcfa9.entry.js → p-050e12eb.entry.js} +1 -1
  576. package/dist/solutions-components/{p-b0c4138f.entry.js → p-06916de9.entry.js} +1 -1
  577. package/dist/solutions-components/{p-67ce3c0c.entry.js → p-08320fb9.entry.js} +2 -2
  578. package/dist/solutions-components/{p-21f00df6.js → p-08e12eb0.js} +1 -1
  579. package/dist/solutions-components/p-0a2c02fd.js +6 -0
  580. package/dist/solutions-components/{p-de58bd49.js → p-0a4bc416.js} +1 -1
  581. package/dist/solutions-components/{p-ef96894d.entry.js → p-0afa17dc.entry.js} +1 -1
  582. package/dist/solutions-components/{p-4bc7b875.entry.js → p-0b4eb6e4.entry.js} +1 -1
  583. package/dist/solutions-components/{p-7b9adfff.js → p-0d900572.js} +1 -1
  584. package/dist/solutions-components/{p-0fbc27fd.entry.js → p-0f4d3009.entry.js} +1 -1
  585. package/dist/solutions-components/{p-b921aa1a.entry.js → p-10181f33.entry.js} +1 -1
  586. package/dist/solutions-components/{p-804e4751.entry.js → p-105ef63c.entry.js} +1 -1
  587. package/dist/solutions-components/{p-35123c90.js → p-11983a08.js} +1 -1
  588. package/dist/solutions-components/p-1260db08.js +61 -0
  589. package/dist/solutions-components/{p-a0edbb27.js → p-129fcd0a.js} +1 -1
  590. package/dist/solutions-components/{p-c1ee0d69.js → p-13f7e487.js} +1 -1
  591. package/dist/solutions-components/p-14769a01.js +11 -0
  592. package/dist/solutions-components/{p-c6d83122.entry.js → p-14a4ad77.entry.js} +2 -2
  593. package/dist/solutions-components/{p-e07b8a72.entry.js → p-15e67907.entry.js} +1 -1
  594. package/dist/solutions-components/{p-32ef065d.entry.js → p-17799448.entry.js} +1 -1
  595. package/dist/solutions-components/{p-8a758303.js → p-185a82e0.js} +1 -1
  596. package/dist/solutions-components/p-191c59e9.js +6 -0
  597. package/dist/solutions-components/{p-7601988d.entry.js → p-1b63bec9.entry.js} +1 -1
  598. package/dist/solutions-components/{p-28d2670f.entry.js → p-1c810f4c.entry.js} +1 -1
  599. package/dist/solutions-components/{p-9603c3ff.entry.js → p-1d28ff09.entry.js} +1 -1
  600. package/dist/solutions-components/{p-4b95d05e.entry.js → p-1e30069a.entry.js} +1 -1
  601. package/dist/solutions-components/p-1e63db11.entry.js +6 -0
  602. package/dist/solutions-components/{p-a08bd8c1.entry.js → p-20274226.entry.js} +1 -1
  603. package/dist/solutions-components/{p-a843af2a.js → p-2411f1f6.js} +1 -1
  604. package/dist/solutions-components/{p-ad4d6d02.entry.js → p-2509b65f.entry.js} +2 -2
  605. package/dist/solutions-components/{p-216801d5.js → p-25faeab6.js} +1 -1
  606. package/dist/solutions-components/{p-f8dd2784.js → p-27f5bb4f.js} +2 -2
  607. package/dist/solutions-components/{p-b948ecd2.entry.js → p-2a0d8a46.entry.js} +1 -1
  608. package/dist/solutions-components/{p-27a1ac1f.entry.js → p-2dea68b6.entry.js} +2 -2
  609. package/dist/solutions-components/{p-de59d2f5.js → p-2ecd5cb7.js} +1 -1
  610. package/dist/solutions-components/{p-7aa949a3.entry.js → p-30dbc43d.entry.js} +2 -2
  611. package/dist/solutions-components/{p-46d5970b.entry.js → p-32d821d1.entry.js} +1 -1
  612. package/dist/solutions-components/{p-82199b7b.entry.js → p-3479d873.entry.js} +1 -1
  613. package/dist/solutions-components/{p-9fb16c72.entry.js → p-36d09c0c.entry.js} +1 -1
  614. package/dist/solutions-components/{p-75f26870.js → p-375f0b74.js} +6 -6
  615. package/dist/solutions-components/{p-cf1af08f.entry.js → p-38b4873b.entry.js} +1 -1
  616. package/dist/solutions-components/p-38d61356.js +18 -0
  617. package/dist/solutions-components/{p-a2748b38.entry.js → p-3a7156b8.entry.js} +1 -1
  618. package/dist/solutions-components/{p-022a9b7a.js → p-3b041268.js} +1 -1
  619. package/dist/solutions-components/{p-6a820c4d.js → p-3ca9bb95.js} +1 -1
  620. package/dist/solutions-components/{p-326fa270.js → p-3e5c8b2f.js} +1 -1
  621. package/dist/solutions-components/{p-1ede2e18.js → p-3ee6af74.js} +2 -2
  622. package/dist/solutions-components/{p-97c47bbd.entry.js → p-3eecbcf0.entry.js} +1 -1
  623. package/dist/solutions-components/{p-5c097e25.entry.js → p-40432de5.entry.js} +1 -1
  624. package/dist/solutions-components/{p-c9858d8f.entry.js → p-4058733e.entry.js} +1 -1
  625. package/dist/solutions-components/{p-9e727488.js → p-4152fae0.js} +1 -1
  626. package/dist/solutions-components/{p-12a4fa84.js → p-4321edfc.js} +1 -1
  627. package/dist/solutions-components/{p-761a033a.entry.js → p-4344b6ca.entry.js} +1 -1
  628. package/dist/solutions-components/{p-aeebdb15.js → p-44e26e37.js} +1 -1
  629. package/dist/solutions-components/{p-3445a8c6.js → p-477ae127.js} +1 -1
  630. package/dist/solutions-components/{p-9cb94ea0.js → p-4c8b1179.js} +1 -1
  631. package/dist/solutions-components/p-4e32bf8c.js +6 -0
  632. package/dist/solutions-components/{p-4c43820f.entry.js → p-4e93132b.entry.js} +1 -1
  633. package/dist/solutions-components/{p-1add4e39.entry.js → p-4ea79dc4.entry.js} +2 -2
  634. package/dist/solutions-components/{p-05db4340.js → p-4f51db32.js} +1 -1
  635. package/dist/solutions-components/{p-4d17943f.js → p-4f64d786.js} +1 -1
  636. package/dist/solutions-components/{p-2c0dc7b1.js → p-4ff653eb.js} +1 -1
  637. package/dist/solutions-components/{p-b1f84ae5.js → p-53347add.js} +1 -1
  638. package/dist/solutions-components/p-54fce798.js +11 -0
  639. package/dist/solutions-components/{p-abda8ca2.entry.js → p-573d282b.entry.js} +1 -1
  640. package/dist/solutions-components/{p-a258f5e7.js → p-58340eba.js} +1 -1
  641. package/dist/solutions-components/p-5930cd6d.entry.js +6 -0
  642. package/dist/solutions-components/p-5fc99541.js +257 -0
  643. package/dist/solutions-components/{p-ffac6f88.entry.js → p-6071078a.entry.js} +1 -1
  644. package/dist/solutions-components/{p-dc9dad31.entry.js → p-69863a28.entry.js} +1 -1
  645. package/dist/solutions-components/{p-a6900100.entry.js → p-699031c9.entry.js} +2 -2
  646. package/dist/solutions-components/{p-ab8f5c6b.entry.js → p-6998e886.entry.js} +1 -1
  647. package/dist/solutions-components/{p-bbb0d957.entry.js → p-6a813a31.entry.js} +1 -1
  648. package/dist/solutions-components/{p-ad72a379.entry.js → p-6b12b5eb.entry.js} +1 -1
  649. package/dist/solutions-components/{p-639cca97.js → p-6e89e9dd.js} +1 -1
  650. package/dist/solutions-components/{p-5adf37ea.entry.js → p-705b7f81.entry.js} +1 -1
  651. package/dist/solutions-components/p-75578ebf.entry.js +6 -0
  652. package/dist/solutions-components/{p-5383607a.js → p-7c72df3c.js} +3 -3
  653. package/dist/solutions-components/{p-03fccde6.entry.js → p-7ca47589.entry.js} +2 -2
  654. package/dist/solutions-components/{p-a040efff.js → p-7cb8a4db.js} +1 -1
  655. package/dist/solutions-components/p-7cc13b24.js +8 -0
  656. package/dist/solutions-components/{p-e4253e1b.entry.js → p-8008b2fe.entry.js} +1 -1
  657. package/dist/solutions-components/{p-22d580b0.entry.js → p-81531fbe.entry.js} +1 -1
  658. package/dist/solutions-components/{p-e10a62f4.entry.js → p-81627211.entry.js} +1 -1
  659. package/dist/solutions-components/{p-2d70d3fd.js → p-8aa806fe.js} +1 -1
  660. package/dist/solutions-components/{p-052ff2c7.js → p-8ae8b789.js} +1 -1
  661. package/dist/solutions-components/{p-4daae757.js → p-8b1236bf.js} +1 -1
  662. package/dist/solutions-components/{p-ee066c67.js → p-8b14f9aa.js} +3 -3
  663. package/dist/solutions-components/{p-56300653.js → p-8b4e79fd.js} +1 -1
  664. package/dist/solutions-components/{p-bba3fa4e.entry.js → p-8bc91d5b.entry.js} +2 -2
  665. package/dist/solutions-components/{p-cad5587c.entry.js → p-8df0c98c.entry.js} +1 -1
  666. package/dist/solutions-components/p-953cf07a.entry.js +6 -0
  667. package/dist/solutions-components/{p-5b9b1cbb.entry.js → p-95cf8aa0.entry.js} +1 -1
  668. package/dist/solutions-components/{p-29d41c7e.js → p-99ece5e1.js} +2 -2
  669. package/dist/solutions-components/{p-b4157e6a.js → p-9a2a551d.js} +1 -1
  670. package/dist/solutions-components/{p-541697d0.js → p-9b43b4cf.js} +1 -1
  671. package/dist/solutions-components/{p-647a4130.js → p-9f922d49.js} +2 -7
  672. package/dist/solutions-components/p-9fb09c2c.js +11 -0
  673. package/dist/solutions-components/{p-e645edf2.entry.js → p-a0e50ea6.entry.js} +1 -1
  674. package/dist/solutions-components/{p-31316d61.entry.js → p-a1154bb5.entry.js} +2 -2
  675. package/dist/solutions-components/{p-d62784a4.js → p-a709a84a.js} +1 -1
  676. package/dist/solutions-components/p-a99832c1.js +27 -0
  677. package/dist/solutions-components/{p-0f8440bb.entry.js → p-ad41cd27.entry.js} +1 -1
  678. package/dist/solutions-components/{p-bd3a3afe.js → p-ad962e25.js} +1 -1
  679. package/dist/solutions-components/{p-2b252afd.entry.js → p-ae1459ed.entry.js} +1 -1
  680. package/dist/solutions-components/{p-90bbf223.entry.js → p-af9510a4.entry.js} +1 -1
  681. package/dist/solutions-components/{p-4f0c3fc1.js → p-afc462f0.js} +1 -1
  682. package/dist/solutions-components/{p-6431fd69.js → p-b02a2b2f.js} +2 -2
  683. package/dist/solutions-components/{p-421d5e7c.js → p-b0eb13a1.js} +1 -1
  684. package/dist/solutions-components/{p-2656168f.entry.js → p-b1228e6c.entry.js} +1 -1
  685. package/dist/solutions-components/{p-0e7914e6.entry.js → p-b1ff9f2e.entry.js} +1 -1
  686. package/dist/solutions-components/p-b20bf7b7.entry.js +6 -0
  687. package/dist/solutions-components/{p-7920b5a2.entry.js → p-b361af64.entry.js} +1 -1
  688. package/dist/solutions-components/{p-a777b18c.js → p-b4a6abe2.js} +2 -2
  689. package/dist/solutions-components/{p-4e4b55b9.entry.js → p-b68b17b6.entry.js} +3 -3
  690. package/dist/solutions-components/{p-f41105c8.js → p-b73e9c4d.js} +1 -1
  691. package/dist/solutions-components/{p-19fe7725.js → p-b9111e12.js} +1 -1
  692. package/dist/solutions-components/{p-3cbe5ef3.js → p-b9653a1e.js} +1 -1
  693. package/dist/solutions-components/{p-5f5c371e.js → p-b9fa9ca9.js} +1 -1
  694. package/dist/solutions-components/{p-c07af9c2.entry.js → p-ba9bb2ba.entry.js} +2 -2
  695. package/dist/solutions-components/{p-b49bdc72.entry.js → p-bc35e445.entry.js} +1 -1
  696. package/dist/solutions-components/{p-c3f8b670.js → p-bccc74a8.js} +1 -1
  697. package/dist/solutions-components/{p-1990d9c8.entry.js → p-bd213033.entry.js} +1 -1
  698. package/dist/solutions-components/{p-a775ba2f.entry.js → p-c0dc792a.entry.js} +1 -1
  699. package/dist/solutions-components/{p-606ca126.js → p-c16e540d.js} +1 -1
  700. package/dist/solutions-components/{p-42c7a5fa.entry.js → p-c35b219b.entry.js} +1 -1
  701. package/dist/solutions-components/{p-b86b4512.entry.js → p-c38c0612.entry.js} +2 -2
  702. package/dist/solutions-components/{p-6b2f2b85.js → p-c8c3554b.js} +3 -3
  703. package/dist/solutions-components/{p-634e1240.js → p-cbebdffa.js} +1 -1
  704. package/dist/solutions-components/{p-91caf655.entry.js → p-cbf52aa2.entry.js} +2 -2
  705. package/dist/solutions-components/{p-825bac0e.js → p-ce21ee76.js} +1 -1
  706. package/dist/solutions-components/{p-57c08531.entry.js → p-ce3e73ae.entry.js} +1 -1
  707. package/dist/solutions-components/{p-d3a22725.js → p-cf14e2f3.js} +1 -1
  708. package/dist/solutions-components/{p-f28d69ac.entry.js → p-cfebc45c.entry.js} +1 -1
  709. package/dist/solutions-components/{p-6a524392.entry.js → p-d15a4f36.entry.js} +1 -1
  710. package/dist/solutions-components/{p-754e2df2.js → p-d3550542.js} +1 -1
  711. package/dist/solutions-components/{p-b5d67495.entry.js → p-d3dceabd.entry.js} +1 -1
  712. package/dist/solutions-components/{p-07bc4f07.entry.js → p-d43c1fc8.entry.js} +2 -2
  713. package/dist/solutions-components/{p-6de98c51.js → p-d7ddd3a2.js} +1 -1
  714. package/dist/solutions-components/{p-3e139360.js → p-d841cb8b.js} +1 -1
  715. package/dist/solutions-components/{p-2ae17fa2.js → p-d9868bac.js} +1 -1
  716. package/dist/solutions-components/{p-32f9c709.js → p-dc94bec2.js} +1 -1
  717. package/dist/solutions-components/{p-e6bee82f.js → p-dd0f8875.js} +1 -1
  718. package/dist/solutions-components/p-dec7b660.js +11 -0
  719. package/dist/solutions-components/{p-3f0193e9.js → p-deca8a07.js} +1 -1
  720. package/dist/solutions-components/{p-31ff3452.entry.js → p-df5ec082.entry.js} +1 -1
  721. package/dist/solutions-components/{p-ea282908.js → p-e046f728.js} +1 -1
  722. package/dist/solutions-components/{p-cf43278c.entry.js → p-e27ce6d2.entry.js} +1 -1
  723. package/dist/solutions-components/p-e2abc969.js +6 -0
  724. package/dist/solutions-components/{p-c5e294e4.js → p-e3f9e213.js} +1 -1
  725. package/dist/solutions-components/{p-2b96e551.entry.js → p-e43839a8.entry.js} +2 -2
  726. package/dist/solutions-components/{p-418d0b60.entry.js → p-e4d5188b.entry.js} +1 -1
  727. package/dist/solutions-components/{p-7b90c18e.entry.js → p-e666c0d6.entry.js} +1 -1
  728. package/dist/solutions-components/{p-39ff5ee5.js → p-e6c20791.js} +1 -1
  729. package/dist/solutions-components/{p-2005280f.js → p-ec4c8dc3.js} +1 -1
  730. package/dist/solutions-components/{p-93074bd4.entry.js → p-ef34c9e2.entry.js} +1 -1
  731. package/dist/solutions-components/{p-361f1fe1.js → p-f346f8ab.js} +2 -2
  732. package/dist/solutions-components/{p-680d193d.entry.js → p-f780ecc1.entry.js} +2 -2
  733. package/dist/solutions-components/p-f8be5d5f.js +7 -0
  734. package/dist/solutions-components/{p-c70392c4.entry.js → p-f9a56d6b.entry.js} +1 -1
  735. package/dist/solutions-components/{p-0ece6df1.entry.js → p-f9b9b211.entry.js} +1 -1
  736. package/dist/solutions-components/{p-a0a2c53d.js → p-fc2277fe.js} +1 -1
  737. package/dist/solutions-components/{p-40bde8b2.entry.js → p-fd65b14d.entry.js} +1 -1
  738. package/dist/solutions-components/{p-ef48bd77.entry.js → p-fe0e8542.entry.js} +1 -1
  739. package/dist/solutions-components/solutions-components.esm.js +1 -1
  740. package/dist/types/components/buffer-tools/buffer-tools.d.ts +170 -170
  741. package/dist/types/components/card-manager/card-manager.d.ts +70 -70
  742. package/dist/types/components/crowdsource-manager/crowdsource-manager.d.ts +174 -174
  743. package/dist/types/components/crowdsource-reporter/crowdsource-reporter.d.ts +26 -26
  744. package/dist/types/components/deduct-calculator/deduct-calculator.d.ts +90 -90
  745. package/dist/types/components/edit-card/edit-card.d.ts +140 -140
  746. package/dist/types/components/info-card/info-card.d.ts +143 -143
  747. package/dist/types/components/json-editor/json-editor.d.ts +229 -229
  748. package/dist/types/components/layer-table/layer-table.d.ts +276 -276
  749. package/dist/types/components/layout-manager/layout-manager.d.ts +69 -69
  750. package/dist/types/components/list-item/list-item.d.ts +26 -26
  751. package/dist/types/components/map-card/map-card.d.ts +83 -83
  752. package/dist/types/components/map-draw-tools/map-draw-tools.d.ts +231 -231
  753. package/dist/types/components/map-layer-picker/map-layer-picker.d.ts +160 -160
  754. package/dist/types/components/map-picker/map-picker.d.ts +109 -109
  755. package/dist/types/components/map-select-tools/map-select-tools.d.ts +469 -469
  756. package/dist/types/components/map-tools/map-tools.d.ts +104 -104
  757. package/dist/types/components/pci-calculator/pci-calculator.d.ts +71 -71
  758. package/dist/types/components/pdf-download/pdf-download.d.ts +101 -101
  759. package/dist/types/components/public-notification/public-notification.d.ts +610 -610
  760. package/dist/types/components/refine-selection/refine-selection.d.ts +234 -234
  761. package/dist/types/components/solution-configuration/solution-configuration.d.ts +205 -205
  762. package/dist/types/components/solution-contents/solution-contents.d.ts +46 -46
  763. package/dist/types/components/solution-item/solution-item.d.ts +71 -71
  764. package/dist/types/components/solution-item-details/solution-item-details.d.ts +100 -100
  765. package/dist/types/components/solution-item-icon/solution-item-icon.d.ts +44 -44
  766. package/dist/types/components/solution-item-sharing/solution-item-sharing.d.ts +62 -62
  767. package/dist/types/components/solution-organization-variables/solution-organization-variables.d.ts +63 -63
  768. package/dist/types/components/solution-resource-item/solution-resource-item.d.ts +144 -144
  769. package/dist/types/components/solution-spatial-ref/solution-spatial-ref.d.ts +180 -180
  770. package/dist/types/components/solution-spatial-ref/spatialreferences.d.ts +17 -17
  771. package/dist/types/components/solution-template-data/solution-template-data.d.ts +72 -72
  772. package/dist/types/components/solution-variables/solution-variables.d.ts +69 -69
  773. package/dist/types/components/store-manager/store-manager.d.ts +55 -55
  774. package/dist/types/components.d.ts +0 -2
  775. package/dist/types/index.d.ts +16 -16
  776. package/dist/types/stencil-public-runtime.d.ts +14 -27
  777. package/dist/types/utils/common.d.ts +49 -49
  778. package/dist/types/utils/csvDownload.d.ts +24 -24
  779. package/dist/types/utils/csvUtils.d.ts +22 -22
  780. package/dist/types/utils/downloadUtils.d.ts +118 -118
  781. package/dist/types/utils/interfaces.d.ts +398 -398
  782. package/dist/types/utils/languageUtil.d.ts +11 -11
  783. package/dist/types/utils/loadModules.d.ts +17 -17
  784. package/dist/types/utils/locale.d.ts +22 -22
  785. package/dist/types/utils/mapViewUtils.d.ts +124 -124
  786. package/dist/types/utils/pciUtils.d.ts +97 -97
  787. package/dist/types/utils/pdfUtils.d.ts +27 -27
  788. package/dist/types/utils/publicNotificationStore.d.ts +24 -24
  789. package/dist/types/utils/queryUtils.d.ts +95 -95
  790. package/dist/types/utils/solution-store.d.ts +234 -234
  791. package/dist/types/utils/templates.d.ts +50 -50
  792. package/dist/types/utils/test/mocks/jsApi.d.ts +59 -59
  793. package/dist/types/utils/test/testUtils.d.ts +36 -36
  794. package/dist/types/utils/types.d.ts +1 -1
  795. package/package.json +2 -2
  796. package/dist/collection/components/buffer-tools/test/buffer-tools.e2e.js +0 -29
  797. package/dist/collection/components/buffer-tools/test/buffer-tools.spec.js +0 -160
  798. package/dist/collection/components/card-manager/test/card-manager.e2e.js +0 -29
  799. package/dist/collection/components/card-manager/test/card-manager.spec.js +0 -37
  800. package/dist/collection/components/crowdsource-manager/test/crowdsource-manager.e2e.js +0 -29
  801. package/dist/collection/components/crowdsource-manager/test/crowdsource-manager.spec.js +0 -37
  802. package/dist/collection/components/crowdsource-reporter/test/crowdsource-reporter.e2e.js +0 -29
  803. package/dist/collection/components/crowdsource-reporter/test/crowdsource-reporter.spec.js +0 -37
  804. package/dist/collection/components/deduct-calculator/test/deduct-calculator.e2e.js +0 -29
  805. package/dist/collection/components/deduct-calculator/test/deduct-calculator.spec.js +0 -37
  806. package/dist/collection/components/edit-card/test/edit-card.e2e.js +0 -14
  807. package/dist/collection/components/edit-card/test/edit-card.spec.js +0 -22
  808. package/dist/collection/components/info-card/test/info-card.e2e.js +0 -29
  809. package/dist/collection/components/info-card/test/info-card.spec.js +0 -37
  810. package/dist/collection/components/json-editor/test/json-editor.e2e.js +0 -36
  811. package/dist/collection/components/json-editor/test/json-editor.spec.js +0 -65
  812. package/dist/collection/components/layer-table/test/layer-table.e2e.js +0 -29
  813. package/dist/collection/components/layer-table/test/layer-table.spec.js +0 -37
  814. package/dist/collection/components/layout-manager/test/layout-manager.e2e.js +0 -29
  815. package/dist/collection/components/layout-manager/test/layout-manager.spec.js +0 -37
  816. package/dist/collection/components/list-item/test/list-item.e2e.js +0 -29
  817. package/dist/collection/components/list-item/test/list-item.spec.js +0 -37
  818. package/dist/collection/components/map-card/test/map-card.e2e.js +0 -29
  819. package/dist/collection/components/map-card/test/map-card.spec.js +0 -37
  820. package/dist/collection/components/map-draw-tools/test/map-draw-tools.e2e.js +0 -29
  821. package/dist/collection/components/map-draw-tools/test/map-draw-tools.spec.js +0 -37
  822. package/dist/collection/components/map-layer-picker/test/map-layer-picker.e2e.js +0 -29
  823. package/dist/collection/components/map-layer-picker/test/map-layer-picker.spec.js +0 -114
  824. package/dist/collection/components/map-picker/test/map-picker.e2e.js +0 -29
  825. package/dist/collection/components/map-picker/test/map-picker.spec.js +0 -37
  826. package/dist/collection/components/map-select-tools/test/map-select-tools.e2e.js +0 -29
  827. package/dist/collection/components/map-select-tools/test/map-select-tools.spec.js +0 -366
  828. package/dist/collection/components/map-tools/test/map-tools.e2e.js +0 -29
  829. package/dist/collection/components/map-tools/test/map-tools.spec.js +0 -37
  830. package/dist/collection/components/pci-calculator/test/pci-calculator.e2e.js +0 -29
  831. package/dist/collection/components/pci-calculator/test/pci-calculator.spec.js +0 -37
  832. package/dist/collection/components/pdf-download/test/pdf-download.e2e.js +0 -76
  833. package/dist/collection/components/pdf-download/test/pdf-download.spec.js +0 -107
  834. package/dist/collection/components/public-notification/test/public-notification.spec.js +0 -161
  835. package/dist/collection/components/refine-selection/test/refine-selection.e2e.js +0 -14
  836. package/dist/collection/components/refine-selection/test/refine-selection.spec.js +0 -22
  837. package/dist/collection/components/solution-configuration/test/solution-configuration.e2e.js +0 -36
  838. package/dist/collection/components/solution-configuration/test/solution-configuration.spec.js +0 -119
  839. package/dist/collection/components/solution-contents/test/solution-contents.e2e.js +0 -94
  840. package/dist/collection/components/solution-contents/test/solution-contents.spec.js +0 -143
  841. package/dist/collection/components/solution-item/test/solution-item.e2e.js +0 -36
  842. package/dist/collection/components/solution-item/test/solution-item.spec.js +0 -77
  843. package/dist/collection/components/solution-item-details/test/solution-item-details.e2e.js +0 -36
  844. package/dist/collection/components/solution-item-details/test/solution-item-details.spec.js +0 -142
  845. package/dist/collection/components/solution-item-icon/test/solution-item-icon.e2e.js +0 -29
  846. package/dist/collection/components/solution-item-icon/test/solution-item-icon.spec.js +0 -39
  847. package/dist/collection/components/solution-item-sharing/test/solution-item-sharing.e2e.js +0 -36
  848. package/dist/collection/components/solution-item-sharing/test/solution-item-sharing.spec.js +0 -54
  849. package/dist/collection/components/solution-organization-variables/test/solution-organization-variables.e2e.js +0 -36
  850. package/dist/collection/components/solution-organization-variables/test/solution-organization-variables.spec.js +0 -65
  851. package/dist/collection/components/solution-resource-item/test/solution-resource-item.e2e.js +0 -36
  852. package/dist/collection/components/solution-resource-item/test/solution-resource-item.spec.js +0 -55
  853. package/dist/collection/components/solution-spatial-ref/test/solution-spatial-ref.e2e.js +0 -36
  854. package/dist/collection/components/solution-spatial-ref/test/solution-spatial-ref.spec.js +0 -175
  855. package/dist/collection/components/solution-template-data/test/solution-template-data.e2e.js +0 -36
  856. package/dist/collection/components/solution-template-data/test/solution-template-data.spec.js +0 -60
  857. package/dist/collection/components/solution-variables/test/solution-variables.e2e.js +0 -36
  858. package/dist/collection/components/solution-variables/test/solution-variables.spec.js +0 -131
  859. package/dist/collection/utils/templates.e2e.js +0 -30
  860. package/dist/collection/utils/test/csvUtils.spec.js +0 -51
  861. package/dist/collection/utils/test/downloadUtils.spec.js +0 -357
  862. package/dist/collection/utils/test/pciUtils.spec.js +0 -302
  863. package/dist/collection/utils/test/solution-store.spec.js +0 -444
  864. package/dist/esm/resources-40d8e06f.js +0 -20
  865. package/dist/solutions-components/p-0cc32f06.js +0 -6
  866. package/dist/solutions-components/p-10248e04.js +0 -11
  867. package/dist/solutions-components/p-108fbf59.entry.js +0 -6
  868. package/dist/solutions-components/p-13290851.js +0 -259
  869. package/dist/solutions-components/p-164be8ef.entry.js +0 -6
  870. package/dist/solutions-components/p-1ea1dcac.js +0 -61
  871. package/dist/solutions-components/p-3aba40e8.js +0 -18
  872. package/dist/solutions-components/p-3bd99fc9.js +0 -11
  873. package/dist/solutions-components/p-3cce003d.js +0 -27
  874. package/dist/solutions-components/p-525f1188.js +0 -11
  875. package/dist/solutions-components/p-6665fa1f.js +0 -6
  876. package/dist/solutions-components/p-7c33e500.entry.js +0 -6
  877. package/dist/solutions-components/p-9310b882.js +0 -7
  878. package/dist/solutions-components/p-9bbc05ff.js +0 -11
  879. package/dist/solutions-components/p-a82f35c9.js +0 -6
  880. package/dist/solutions-components/p-b6578a32.js +0 -6
  881. package/dist/solutions-components/p-b684bbc7.entry.js +0 -6
  882. package/dist/solutions-components/p-baccfd70.entry.js +0 -6
  883. package/dist/solutions-components/p-bf9e18d4.js +0 -8
  884. package/dist/solutions-components/p-d6322e4b.js +0 -6
  885. /package/dist/cjs/{array-46bb7df1.js → array-51e7da8f.js} +0 -0
  886. /package/dist/cjs/{debounce-30afab47.js → debounce-69c3bada.js} +0 -0
  887. /package/dist/cjs/{guid-3abe3cc6.js → guid-ca85ade0.js} +0 -0
  888. /package/dist/cjs/{html2canvas-34208bbf.js → html2canvas-770c1171.js} +0 -0
  889. /package/dist/cjs/{interactive-2fe0f43a.js → interactive-4e212b36.js} +0 -0
  890. /package/dist/cjs/{key-b8b55ea3.js → key-b32a6438.js} +0 -0
  891. /package/dist/cjs/{math-5132d9bd.js → math-ef14a84a.js} +0 -0
  892. /package/dist/cjs/{observers-f5fa975b.js → observers-20fe6f01.js} +0 -0
  893. /package/dist/cjs/{purify-f8c3e427.js → purify-5389d8d6.js} +0 -0
  894. /package/dist/cjs/{resources-2901b608.js → resources-1d2258a1.js} +0 -0
  895. /package/dist/cjs/{resources-60c27547.js → resources-7c9bff85.js} +0 -0
  896. /package/dist/cjs/{resources-9f2b33ee.js → resources-9dcbf30f.js} +0 -0
  897. /package/dist/cjs/{resources-4da89742.js → resources-a7e3371d.js} +0 -0
  898. /package/dist/cjs/{resources-8233a151.js → resources-b176fc52.js} +0 -0
  899. /package/dist/cjs/{resources-77713c2e.js → resources-b4b4b4fe.js} +0 -0
  900. /package/dist/cjs/{resources-e1258e8a.js → resources-c6f066a4.js} +0 -0
  901. /package/dist/cjs/{resources-91409a5d.js → resources-f13e2605.js} +0 -0
  902. /package/dist/cjs/{resources-c913200c.js → resources-f3e30b7b.js} +0 -0
  903. /package/dist/cjs/{utils-bae432a9.js → utils-662561ad.js} +0 -0
  904. /package/dist/cjs/{utils-cd14113f.js → utils-8a0f3e68.js} +0 -0
  905. /package/dist/esm/{array-751a2b87.js → array-4a653f59.js} +0 -0
  906. /package/dist/esm/{debounce-229b1a22.js → debounce-4c884e5c.js} +0 -0
  907. /package/dist/esm/{guid-2bbb8cd1.js → guid-1608fd71.js} +0 -0
  908. /package/dist/esm/{html2canvas-a0a4df55.js → html2canvas-12c862c8.js} +0 -0
  909. /package/dist/esm/{interactive-eaf4be29.js → interactive-0733ee76.js} +0 -0
  910. /package/dist/esm/{key-7a525416.js → key-97b504af.js} +0 -0
  911. /package/dist/esm/{math-5f92f517.js → math-e006358c.js} +0 -0
  912. /package/dist/esm/{observers-9d66685a.js → observers-67bdf9e5.js} +0 -0
  913. /package/dist/esm/{purify-c99d2ace.js → purify-75c61cf7.js} +0 -0
  914. /package/dist/esm/{resources-d6a4d343.js → resources-01034dfa.js} +0 -0
  915. /package/dist/esm/{resources-c253772f.js → resources-34b761fa.js} +0 -0
  916. /package/dist/esm/{resources-a9b2d33c.js → resources-43d63050.js} +0 -0
  917. /package/dist/esm/{resources-dca3d475.js → resources-5490ccf4.js} +0 -0
  918. /package/dist/esm/{resources-c65f5654.js → resources-6b7800e6.js} +0 -0
  919. /package/dist/esm/{resources-5bce3953.js → resources-6be20fcc.js} +0 -0
  920. /package/dist/esm/{resources-58d30a0f.js → resources-913009ae.js} +0 -0
  921. /package/dist/{components/resources4.js → esm/resources-b5267429.js} +0 -0
  922. /package/dist/esm/{resources-94c47e64.js → resources-f97db74e.js} +0 -0
  923. /package/dist/esm/{utils-2c91c963.js → utils-649c76ab.js} +0 -0
  924. /package/dist/esm/{utils-18db6b1d.js → utils-dcd05f69.js} +0 -0
  925. /package/dist/solutions-components/{p-f055a840.js → p-0506e06f.js} +0 -0
  926. /package/dist/solutions-components/{p-283e3a2d.js → p-0630e686.js} +0 -0
  927. /package/dist/solutions-components/{p-fb7e0054.js → p-08ab045a.js} +0 -0
  928. /package/dist/solutions-components/{p-2291b598.js → p-0b32d4fe.js} +0 -0
  929. /package/dist/solutions-components/{p-5961c4e0.js → p-203b16df.js} +0 -0
  930. /package/dist/solutions-components/{p-3fc17d72.js → p-3adf63ca.js} +0 -0
  931. /package/dist/solutions-components/{p-d4c103a8.js → p-3b72043f.js} +0 -0
  932. /package/dist/solutions-components/{p-18f1772b.js → p-43ebe36a.js} +0 -0
  933. /package/dist/solutions-components/{p-58ce5639.js → p-5242a652.js} +0 -0
  934. /package/dist/solutions-components/{p-18869c0f.js → p-5d25ba99.js} +0 -0
  935. /package/dist/solutions-components/{p-1f468797.js → p-76b83a13.js} +0 -0
  936. /package/dist/solutions-components/{p-d554507d.js → p-7ac7b1a1.js} +0 -0
  937. /package/dist/solutions-components/{p-868df4a0.js → p-9ab03591.js} +0 -0
  938. /package/dist/solutions-components/{p-38ef0684.js → p-a963dd48.js} +0 -0
  939. /package/dist/solutions-components/{p-63a0e9bf.js → p-cc815aca.js} +0 -0
  940. /package/dist/solutions-components/{p-6f2edf5b.js → p-d556b5c4.js} +0 -0
  941. /package/dist/solutions-components/{p-215d3505.js → p-f93e6931.js} +0 -0
  942. /package/dist/solutions-components/{p-4805ff13.js → p-fb3ba11a.js} +0 -0
  943. /package/dist/solutions-components/{p-b9749e09.js → p-ff4afb7d.js} +0 -0
@@ -3,28 +3,28 @@
3
3
  * Licensed under the Apache License, Version 2.0
4
4
  * http://www.apache.org/licenses/LICENSE-2.0
5
5
  */
6
- import { h, r as registerInstance, c as createEvent, H as Host, g as getElement } from './index-b5d9d795.js';
7
- import { f as filter } from './filter-1cac3edf.js';
8
- import { i as isPrimaryPointerButton, t as toAriaBoolean, e as getElementProp, g as getSlotted, d as focusElementInGroup, h as focusElement } from './dom-843e3afd.js';
9
- import { d as defaultMenuPlacement, f as filterComputedPlacements, c as connectFloatingUI, r as reposition, a as disconnectFloatingUI, F as FloatingCSS } from './floating-ui-d28d0fd6.js';
10
- import { s as submitForm, c as connectForm, a as afterConnectDefaultValueSet, d as disconnectForm, H as HiddenFormInputSlot } from './form-11c6a015.js';
11
- import { g as guid } from './guid-2bbb8cd1.js';
12
- import { c as connectInteractive, u as updateHostInteraction, d as disconnectInteractive } from './interactive-eaf4be29.js';
13
- import { c as connectLabel, d as disconnectLabel, g as getLabelText } from './label-6a1caf64.js';
14
- import { c as componentFocusable, s as setUpLoadableComponent, a as setComponentLoaded } from './loadable-6bca96ad.js';
15
- import { c as connectLocalized, d as disconnectLocalized } from './locale-d8561d54.js';
16
- import { c as createObserver } from './observers-9d66685a.js';
17
- import { o as onToggleOpenCloseComponent } from './openCloseComponent-2b5c6bed.js';
18
- import { c as connectMessages, s as setUpMessages, d as disconnectMessages, u as updateMessages } from './t9n-76168237.js';
19
- import { C as ComboboxChildSelector, b as getItemAncestors, c as getItemChildren, h as hasActiveChildren, d as ComboboxItem$1, e as ComboboxItemGroup, f as CSS$4, g as getAncestors, a as getDepth } from './utils-ccfd94a7.js';
20
- import { d as debounce } from './debounce-229b1a22.js';
21
- import { c as connectConditionalSlotComponent, d as disconnectConditionalSlotComponent } from './conditionalSlot-27a0fce0.js';
22
- import { i as isActivationKey } from './key-7a525416.js';
23
- import { b as getMapLayerIds, l as getMapTableIds, m as getMapLayerHash, n as getMapTableHash } from './mapViewUtils-f0c04325.js';
24
- import { s as state } from './publicNotificationStore-ade82148.js';
25
- import './resources-94c47e64.js';
26
- import './interfaces-5a2fe8b4.js';
27
- import './index-b91c174c.js';
6
+ import { h, r as registerInstance, c as createEvent, H as Host, g as getElement } from './index-d298aca9.js';
7
+ import { f as filter } from './filter-bf34614b.js';
8
+ import { i as isPrimaryPointerButton, t as toAriaBoolean, e as getElementProp, g as getSlotted, d as focusElementInGroup, h as focusElement } from './dom-8a9e4ee8.js';
9
+ import { d as defaultMenuPlacement, f as filterComputedPlacements, c as connectFloatingUI, r as reposition, a as disconnectFloatingUI, F as FloatingCSS } from './floating-ui-9870f74c.js';
10
+ import { s as submitForm, c as connectForm, a as afterConnectDefaultValueSet, d as disconnectForm, H as HiddenFormInputSlot } from './form-6669a774.js';
11
+ import { g as guid } from './guid-1608fd71.js';
12
+ import { c as connectInteractive, u as updateHostInteraction, d as disconnectInteractive } from './interactive-0733ee76.js';
13
+ import { c as connectLabel, d as disconnectLabel, g as getLabelText } from './label-661d8e10.js';
14
+ import { c as componentFocusable, s as setUpLoadableComponent, a as setComponentLoaded } from './loadable-08376d90.js';
15
+ import { c as connectLocalized, d as disconnectLocalized } from './locale-73d0926a.js';
16
+ import { c as createObserver } from './observers-67bdf9e5.js';
17
+ import { o as onToggleOpenCloseComponent } from './openCloseComponent-a40fd6fd.js';
18
+ import { c as connectMessages, s as setUpMessages, d as disconnectMessages, u as updateMessages } from './t9n-745553e0.js';
19
+ import { C as ComboboxChildSelector, b as getItemAncestors, c as getItemChildren, h as hasActiveChildren, d as ComboboxItem$1, e as ComboboxItemGroup, f as CSS$4, g as getAncestors, a as getDepth } from './utils-4f695ec2.js';
20
+ import { d as debounce } from './debounce-4c884e5c.js';
21
+ import { c as connectConditionalSlotComponent, d as disconnectConditionalSlotComponent } from './conditionalSlot-91396dd5.js';
22
+ import { i as isActivationKey } from './key-97b504af.js';
23
+ import { b as getMapLayerIds, l as getMapTableIds, m as getMapLayerHash, n as getMapTableHash } from './mapViewUtils-1e68cede.js';
24
+ import { s as state } from './publicNotificationStore-6ef555f3.js';
25
+ import './resources-f97db74e.js';
26
+ import './interfaces-bf20e69c.js';
27
+ import './index-4c4a4f3d.js';
28
28
 
29
29
  /*!
30
30
  * All material copyright ESRI, All Rights Reserved, unless otherwise specified.
@@ -42,864 +42,864 @@ function XButton({ disabled, key, label, onClick, ref, scale, }) {
42
42
 
43
43
  const comboboxCss = ":host([disabled]){cursor:default;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:var(--calcite-ui-opacity-disabled)}:host([disabled]) *,:host([disabled]) ::slotted(*){pointer-events:none}:host{position:relative;display:block}:host([disabled]) ::slotted([calcite-hydrated][disabled]),:host([disabled]) [calcite-hydrated][disabled]{opacity:1}:host([scale=s]) .x-button{inline-size:1rem;block-size:1rem}:host([scale=m]) .x-button{inline-size:1.5rem;block-size:1.5rem}:host([scale=l]) .x-button{inline-size:2rem;block-size:2rem}.x-button{margin:0px;display:flex;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;align-content:center;align-items:center;justify-content:center;align-self:center;border-width:2px;background-color:transparent;color:var(--calcite-ui-text-3);outline-color:transparent;transition:all var(--calcite-animation-timing) ease-in-out 0s, outline 0s, outline-offset 0s;border-radius:50%;border-color:transparent;background-color:var(--calcite-ui-foreground-2)}.x-button:active,.x-button:hover{color:var(--calcite-ui-text-1);background-color:var(--calcite-ui-foreground-3)}.x-button:active{border-style:solid;border-color:var(--calcite-ui-brand)}.x-button calcite-icon{color:inherit}:host([scale=s]){font-size:var(--calcite-font-size--2);--calcite-combobox-item-spacing-unit-l:0.5rem;--calcite-combobox-item-spacing-unit-s:0.25rem;--calcite-combobox-input-height:1.5rem}:host([scale=s]) .x-button{margin-inline-end:0.5rem}:host([scale=m]){font-size:var(--calcite-font-size--1);--calcite-combobox-item-spacing-unit-l:0.75rem;--calcite-combobox-item-spacing-unit-s:0.5rem;--calcite-combobox-input-height:2rem}:host([scale=m]) .x-button{margin-inline-end:0.75rem}:host([scale=l]){font-size:var(--calcite-font-size-0);--calcite-combobox-item-spacing-unit-l:1rem;--calcite-combobox-item-spacing-unit-s:0.75rem;--calcite-combobox-input-height:2.75rem}:host([scale=l]) .x-button{margin-inline-end:1rem}.wrapper{display:flex;border-width:1px;border-style:solid;border-color:var(--calcite-ui-border-input);background-color:var(--calcite-ui-foreground-1);color:var(--calcite-ui-text-1);outline-color:transparent;padding-block:calc(var(--calcite-combobox-item-spacing-unit-s) / 4);padding-inline:var(--calcite-combobox-item-spacing-unit-l)}:host(:focus-within) .wrapper,.wrapper--active{outline:2px solid var(--calcite-ui-focus-color, var(--calcite-ui-brand));outline-offset:calc(\n -2px *\n calc(\n 1 -\n 2 * clamp(\n 0,\n var(--calcite-ui-focus-offset-invert),\n 1\n )\n )\n )}.wrapper--single{padding-block:0;padding-inline:var(--calcite-combobox-item-spacing-unit-l);cursor:pointer;flex-wrap:nowrap}.grid-input{display:flex;flex-grow:1;flex-wrap:wrap;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0px}.input{flex-grow:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-style:none;background-color:transparent;padding:0px;font-family:inherit;color:var(--calcite-ui-text-1);font-size:inherit;block-size:var(--calcite-combobox-input-height);line-height:var(--calcite-combobox-input-height);min-inline-size:120px;margin-block-end:var(--calcite-combobox-item-spacing-unit-s)}.input:focus{outline:2px solid transparent;outline-offset:2px}.input--transparent{opacity:0}.input--single{margin-block:0px;padding:0px}.wrapper--active .input-single{cursor:text}.input--hidden{pointer-events:none;inline-size:0px;min-inline-size:0px;opacity:0}.input--icon{padding-block:0;padding-inline:var(--calcite-combobox-item-spacing-unit-l)}.input-wrap{display:flex;flex-grow:1}.input-wrap--single{flex:1 1 0%;overflow:hidden}.label{pointer-events:none;display:flex;max-inline-size:100%;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0px;font-weight:var(--calcite-font-weight-normal);block-size:var(--calcite-combobox-input-height);line-height:var(--calcite-combobox-input-height)}.label--icon{padding-inline:var(--calcite-combobox-item-spacing-unit-l)}.icon-end,.icon-start{display:flex;inline-size:1rem;cursor:pointer;align-items:center}.icon-end{flex:none}.floating-ui-container{--calcite-floating-ui-z-index:var(--calcite-app-z-index-dropdown);display:block;position:absolute;z-index:var(--calcite-floating-ui-z-index);visibility:hidden}.floating-ui-container .calcite-floating-ui-anim{position:relative;transition:var(--calcite-floating-ui-transition);transition-property:transform, visibility, opacity;opacity:0;box-shadow:0 0 16px 0 rgba(0, 0, 0, 0.16);z-index:var(--calcite-app-z-index);border-radius:0.25rem}.floating-ui-container[data-placement^=bottom] .calcite-floating-ui-anim{transform:translateY(-5px)}.floating-ui-container[data-placement^=top] .calcite-floating-ui-anim{transform:translateY(5px)}.floating-ui-container[data-placement^=left] .calcite-floating-ui-anim{transform:translateX(5px)}.floating-ui-container[data-placement^=right] .calcite-floating-ui-anim{transform:translateX(-5px)}.floating-ui-container[data-placement] .calcite-floating-ui-anim--active{opacity:1;transform:translate(0)}.floating-ui-container--active{visibility:visible}@media (forced-colors: active){.wrapper,.floating-ui-container--active{border:1px solid canvasText}}.screen-readers-only{position:absolute;inline-size:1px;block-size:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.list-container{max-block-size:45vh;overflow-y:auto;background-color:var(--calcite-ui-foreground-1);inline-size:var(--calcite-dropdown-width)}.list{margin:0px;display:block;padding:0px}.list--hide{block-size:0px;overflow:hidden}.chip{margin-block:calc(var(--calcite-combobox-item-spacing-unit-s) / 4);margin-inline:0 var(--calcite-combobox-item-spacing-unit-s);max-inline-size:100%}.chip--active{background-color:var(--calcite-ui-foreground-3)}.item{display:block}::slotted(input[slot=hidden-form-input]){margin:0 !important;opacity:0 !important;outline:none !important;padding:0 !important;position:absolute !important;inset:0 !important;transform:none !important;-webkit-appearance:none !important;z-index:-1 !important}:host([hidden]){display:none}[hidden]{display:none}::slotted(calcite-combobox-item-group:not(:first-child)){padding-block-start:var(--calcite-combobox-item-spacing-unit-l)}";
44
44
 
45
- const isGroup = (el) => el.tagName === ComboboxItemGroup;
46
- const itemUidPrefix = "combobox-item-";
47
- const chipUidPrefix = "combobox-chip-";
48
- const labelUidPrefix = "combobox-label-";
49
- const listboxUidPrefix = "combobox-listbox-";
50
- const inputUidPrefix = "combobox-input-";
51
- const Combobox = class {
52
- constructor(hostRef) {
53
- registerInstance(this, hostRef);
54
- this.calciteComboboxChange = createEvent(this, "calciteComboboxChange", 6);
55
- this.calciteComboboxFilterChange = createEvent(this, "calciteComboboxFilterChange", 6);
56
- this.calciteComboboxChipClose = createEvent(this, "calciteComboboxChipClose", 6);
57
- this.calciteComboboxBeforeClose = createEvent(this, "calciteComboboxBeforeClose", 6);
58
- this.calciteComboboxClose = createEvent(this, "calciteComboboxClose", 6);
59
- this.calciteComboboxBeforeOpen = createEvent(this, "calciteComboboxBeforeOpen", 6);
60
- this.calciteComboboxOpen = createEvent(this, "calciteComboboxOpen", 6);
61
- //--------------------------------------------------------------------------
62
- //
63
- // Private State/Props
64
- //
65
- //--------------------------------------------------------------------------
66
- this.placement = defaultMenuPlacement;
67
- this.internalValueChangeFlag = false;
68
- this.textInput = null;
69
- this.mutationObserver = createObserver("mutation", () => this.updateItems());
70
- this.resizeObserver = createObserver("resize", () => this.setMaxScrollerHeight());
71
- this.guid = guid();
72
- this.inputHeight = 0;
73
- this.ignoreSelectedEventsFlag = false;
74
- this.openTransitionProp = "opacity";
75
- this.setFilteredPlacements = () => {
76
- const { el, flipPlacements } = this;
77
- this.filteredFlipPlacements = flipPlacements
78
- ? filterComputedPlacements(flipPlacements, el)
79
- : null;
80
- };
81
- this.getValue = () => {
82
- const items = this.selectedItems.map((item) => { var _a; return (_a = item === null || item === void 0 ? void 0 : item.value) === null || _a === void 0 ? void 0 : _a.toString(); });
83
- return (items === null || items === void 0 ? void 0 : items.length) ? (items.length > 1 ? items : items[0]) : "";
84
- };
85
- this.onLabelClick = () => {
86
- this.setFocus();
87
- };
88
- this.keyDownHandler = (event) => {
89
- const { key } = event;
90
- switch (key) {
91
- case "Tab":
92
- this.activeChipIndex = -1;
93
- this.activeItemIndex = -1;
94
- if (this.allowCustomValues && this.text) {
95
- this.addCustomChip(this.text, true);
96
- event.preventDefault();
97
- }
98
- else if (this.open) {
99
- this.open = false;
100
- event.preventDefault();
101
- }
102
- break;
103
- case "ArrowLeft":
104
- this.previousChip();
105
- event.preventDefault();
106
- break;
107
- case "ArrowRight":
108
- this.nextChip();
109
- event.preventDefault();
110
- break;
111
- case "ArrowUp":
112
- event.preventDefault();
113
- if (this.open) {
114
- this.shiftActiveItemIndex(-1);
115
- }
116
- if (!this.comboboxInViewport()) {
117
- this.el.scrollIntoView();
118
- }
119
- break;
120
- case "ArrowDown":
121
- event.preventDefault();
122
- if (this.open) {
123
- this.shiftActiveItemIndex(1);
124
- }
125
- else {
126
- this.open = true;
127
- this.ensureRecentSelectedItemIsActive();
128
- }
129
- if (!this.comboboxInViewport()) {
130
- this.el.scrollIntoView();
131
- }
132
- break;
133
- case " ":
134
- if (!this.textInput.value) {
135
- if (!this.open) {
136
- this.open = true;
137
- this.shiftActiveItemIndex(1);
138
- }
139
- event.preventDefault();
140
- }
141
- break;
142
- case "Home":
143
- if (!this.open) {
144
- return;
145
- }
146
- event.preventDefault();
147
- this.updateActiveItemIndex(0);
148
- this.scrollToActiveItem();
149
- if (!this.comboboxInViewport()) {
150
- this.el.scrollIntoView();
151
- }
152
- break;
153
- case "End":
154
- if (!this.open) {
155
- return;
156
- }
157
- event.preventDefault();
158
- this.updateActiveItemIndex(this.filteredItems.length - 1);
159
- this.scrollToActiveItem();
160
- if (!this.comboboxInViewport()) {
161
- this.el.scrollIntoView();
162
- }
163
- break;
164
- case "Escape":
165
- if (!this.clearDisabled && !this.open) {
166
- this.clearValue();
167
- }
168
- this.open = false;
169
- event.preventDefault();
170
- break;
171
- case "Enter":
172
- if (this.activeItemIndex > -1) {
173
- this.toggleSelection(this.filteredItems[this.activeItemIndex]);
174
- event.preventDefault();
175
- }
176
- else if (this.activeChipIndex > -1) {
177
- this.removeActiveChip();
178
- event.preventDefault();
179
- }
180
- else if (this.allowCustomValues && this.text) {
181
- this.addCustomChip(this.text, true);
182
- event.preventDefault();
183
- }
184
- else if (!event.defaultPrevented) {
185
- if (submitForm(this)) {
186
- event.preventDefault();
187
- }
188
- }
189
- break;
190
- case "Delete":
191
- case "Backspace":
192
- if (this.activeChipIndex > -1) {
193
- event.preventDefault();
194
- this.removeActiveChip();
195
- }
196
- else if (!this.text && this.isMulti()) {
197
- event.preventDefault();
198
- this.removeLastChip();
199
- }
200
- break;
201
- }
202
- };
203
- this.toggleCloseEnd = () => {
204
- this.open = false;
205
- this.el.removeEventListener("calciteComboboxClose", this.toggleCloseEnd);
206
- };
207
- this.toggleOpenEnd = () => {
208
- this.open = false;
209
- this.el.removeEventListener("calciteComboboxOpen", this.toggleOpenEnd);
210
- };
211
- this.setMaxScrollerHeight = async () => {
212
- const { listContainerEl, open, referenceEl } = this;
213
- if (!listContainerEl || !open) {
214
- return;
215
- }
216
- await this.reposition(true);
217
- const maxScrollerHeight = this.getMaxScrollerHeight();
218
- listContainerEl.style.maxHeight = maxScrollerHeight > 0 ? `${maxScrollerHeight}px` : "";
219
- listContainerEl.style.minWidth = `${referenceEl.clientWidth}px`;
220
- await this.reposition(true);
221
- };
222
- this.calciteChipCloseHandler = (comboboxItem) => {
223
- this.open = false;
224
- const selection = this.items.find((item) => item === comboboxItem);
225
- if (selection) {
226
- this.toggleSelection(selection, false);
227
- }
228
- this.calciteComboboxChipClose.emit();
229
- };
230
- this.clickHandler = (event) => {
231
- const composedPath = event.composedPath();
232
- if (composedPath.some((node) => node.tagName === "CALCITE-CHIP")) {
233
- this.open = false;
234
- event.preventDefault();
235
- return;
236
- }
237
- if (composedPath.some((node) => { var _a; return (_a = node.classList) === null || _a === void 0 ? void 0 : _a.contains(CSS$3.button); })) {
238
- this.clearValue();
239
- event.preventDefault();
240
- return;
241
- }
242
- this.open = !this.open;
243
- this.ensureRecentSelectedItemIsActive();
244
- };
245
- this.setInactiveIfNotContained = (event) => {
246
- const composedPath = event.composedPath();
247
- if (!this.open || composedPath.includes(this.el) || composedPath.includes(this.referenceEl)) {
248
- return;
249
- }
250
- if (this.allowCustomValues && this.text.trim().length) {
251
- this.addCustomChip(this.text);
252
- }
253
- if (this.selectionMode === "single") {
254
- if (this.textInput) {
255
- this.textInput.value = "";
256
- }
257
- this.text = "";
258
- this.filterItems("");
259
- this.updateActiveItemIndex(-1);
260
- }
261
- this.open = false;
262
- };
263
- this.setFloatingEl = (el) => {
264
- this.floatingEl = el;
265
- connectFloatingUI(this, this.referenceEl, this.floatingEl);
266
- };
267
- this.setContainerEl = (el) => {
268
- this.resizeObserver.observe(el);
269
- this.listContainerEl = el;
270
- this.transitionEl = el;
271
- };
272
- this.setReferenceEl = (el) => {
273
- this.referenceEl = el;
274
- connectFloatingUI(this, this.referenceEl, this.floatingEl);
275
- };
276
- this.inputHandler = (event) => {
277
- const value = event.target.value;
278
- this.text = value;
279
- this.filterItems(value);
280
- if (value) {
281
- this.activeChipIndex = -1;
282
- }
283
- };
284
- this.filterItems = (() => {
285
- const find = (item, filteredData) => item &&
286
- filteredData.some(({ label, value }) => {
287
- if (isGroup(item)) {
288
- return value === item.label;
289
- }
290
- return (value === item.textLabel ||
291
- value === item.value ||
292
- label === item.textLabel ||
293
- label === item.value);
294
- });
295
- return debounce((text) => {
296
- const filteredData = filter(this.data, text);
297
- const items = this.getCombinedItems();
298
- items.forEach((item) => {
299
- const hidden = !find(item, filteredData);
300
- item.hidden = hidden;
301
- const [parent, grandparent] = item.ancestors;
302
- if (find(parent, filteredData) || find(grandparent, filteredData)) {
303
- item.hidden = false;
304
- }
305
- if (!hidden) {
306
- item.ancestors.forEach((ancestor) => (ancestor.hidden = false));
307
- }
308
- });
309
- this.filteredItems = this.getFilteredItems();
310
- this.calciteComboboxFilterChange.emit();
311
- }, 100);
312
- })();
313
- this.internalComboboxChangeEvent = () => {
314
- this.calciteComboboxChange.emit();
315
- };
316
- this.emitComboboxChange = debounce(this.internalComboboxChangeEvent, 0);
317
- this.updateItems = () => {
318
- this.items = this.getItems();
319
- this.groupItems = this.getGroupItems();
320
- this.data = this.getData();
321
- this.selectedItems = this.getSelectedItems();
322
- this.filteredItems = this.getFilteredItems();
323
- this.needsIcon = this.getNeedsIcon();
324
- if (!this.allowCustomValues) {
325
- this.setMaxScrollerHeight();
326
- }
327
- this.groupItems.forEach((groupItem, index, items) => {
328
- if (index === 0) {
329
- groupItem.afterEmptyGroup = false;
330
- }
331
- const nextGroupItem = items[index + 1];
332
- if (nextGroupItem) {
333
- nextGroupItem.afterEmptyGroup = groupItem.children.length === 0;
334
- }
335
- });
336
- };
337
- this.scrollToActiveItem = () => {
338
- const activeItem = this.filteredItems[this.activeItemIndex];
339
- if (!activeItem) {
340
- return;
341
- }
342
- const height = this.calculateSingleItemHeight(activeItem);
343
- const { offsetHeight, scrollTop } = this.listContainerEl;
344
- if (offsetHeight + scrollTop < activeItem.offsetTop + height) {
345
- this.listContainerEl.scrollTop = activeItem.offsetTop - offsetHeight + height;
346
- }
347
- else if (activeItem.offsetTop < scrollTop) {
348
- this.listContainerEl.scrollTop = activeItem.offsetTop;
349
- }
350
- };
351
- this.comboboxFocusHandler = () => {
352
- var _a;
353
- if (this.disabled) {
354
- return;
355
- }
356
- (_a = this.textInput) === null || _a === void 0 ? void 0 : _a.focus();
357
- };
358
- this.comboboxBlurHandler = (event) => {
359
- this.setInactiveIfNotContained(event);
360
- };
361
- this.clearDisabled = false;
362
- this.open = false;
363
- this.disabled = false;
364
- this.form = undefined;
365
- this.label = undefined;
366
- this.placeholder = undefined;
367
- this.placeholderIcon = undefined;
368
- this.placeholderIconFlipRtl = false;
369
- this.maxItems = 0;
370
- this.name = undefined;
371
- this.allowCustomValues = undefined;
372
- this.overlayPositioning = "absolute";
373
- this.required = false;
374
- this.selectionMode = "multiple";
375
- this.scale = "m";
376
- this.value = null;
377
- this.flipPlacements = undefined;
378
- this.messages = undefined;
379
- this.messageOverrides = undefined;
380
- this.selectedItems = [];
381
- this.filteredItems = [];
382
- this.items = [];
383
- this.groupItems = [];
384
- this.needsIcon = undefined;
385
- this.activeItemIndex = -1;
386
- this.activeChipIndex = -1;
387
- this.activeDescendant = "";
388
- this.text = "";
389
- this.effectiveLocale = undefined;
390
- this.defaultMessages = undefined;
391
- }
392
- openHandler() {
393
- onToggleOpenCloseComponent(this);
394
- if (this.disabled) {
395
- this.open = false;
396
- return;
397
- }
398
- this.setMaxScrollerHeight();
399
- }
400
- handleDisabledChange(value) {
401
- if (!value) {
402
- this.open = false;
403
- }
404
- }
405
- maxItemsHandler() {
406
- this.setMaxScrollerHeight();
407
- }
408
- overlayPositioningHandler() {
409
- this.reposition(true);
410
- }
411
- valueHandler(value) {
412
- if (!this.internalValueChangeFlag) {
413
- const items = this.getItems();
414
- if (Array.isArray(value)) {
415
- items.forEach((item) => (item.selected = value.includes(item.value)));
416
- }
417
- else if (value) {
418
- items.forEach((item) => (item.selected = value === item.value));
419
- }
420
- else {
421
- items.forEach((item) => (item.selected = false));
422
- }
423
- this.updateItems();
424
- }
425
- }
426
- onMessagesChange() {
427
- /* wired up by t9n util */
428
- }
429
- flipPlacementsHandler() {
430
- this.setFilteredPlacements();
431
- this.reposition(true);
432
- }
433
- selectedItemsHandler() {
434
- this.internalValueChangeFlag = true;
435
- this.value = this.getValue();
436
- this.internalValueChangeFlag = false;
437
- }
438
- //--------------------------------------------------------------------------
439
- //
440
- // Event Listeners
441
- //
442
- //--------------------------------------------------------------------------
443
- documentClickHandler(event) {
444
- if (this.disabled || !isPrimaryPointerButton(event)) {
445
- return;
446
- }
447
- this.setInactiveIfNotContained(event);
448
- }
449
- calciteComboboxItemChangeHandler(event) {
450
- if (this.ignoreSelectedEventsFlag) {
451
- return;
452
- }
453
- const target = event.target;
454
- const newIndex = this.filteredItems.indexOf(target);
455
- this.updateActiveItemIndex(newIndex);
456
- this.toggleSelection(target, target.selected);
457
- }
458
- //--------------------------------------------------------------------------
459
- //
460
- // Public Methods
461
- //
462
- //--------------------------------------------------------------------------
463
- /**
464
- * Updates the position of the component.
465
- *
466
- * @param delayed
467
- */
468
- async reposition(delayed = false) {
469
- const { floatingEl, referenceEl, placement, overlayPositioning, filteredFlipPlacements } = this;
470
- return reposition(this, {
471
- floatingEl,
472
- referenceEl,
473
- overlayPositioning,
474
- placement,
475
- flipPlacements: filteredFlipPlacements,
476
- type: "menu",
477
- }, delayed);
478
- }
479
- /** Sets focus on the component. */
480
- async setFocus() {
481
- var _a;
482
- await componentFocusable(this);
483
- (_a = this.textInput) === null || _a === void 0 ? void 0 : _a.focus();
484
- this.activeChipIndex = -1;
485
- this.activeItemIndex = -1;
486
- }
487
- // --------------------------------------------------------------------------
488
- //
489
- // Lifecycle
490
- //
491
- // --------------------------------------------------------------------------
492
- connectedCallback() {
493
- var _a;
494
- connectInteractive(this);
495
- connectLocalized(this);
496
- connectMessages(this);
497
- this.internalValueChangeFlag = true;
498
- this.value = this.getValue();
499
- this.internalValueChangeFlag = false;
500
- (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.observe(this.el, { childList: true, subtree: true });
501
- connectLabel(this);
502
- connectForm(this);
503
- this.setFilteredPlacements();
504
- this.reposition(true);
505
- if (this.open) {
506
- this.openHandler();
507
- onToggleOpenCloseComponent(this);
508
- }
509
- }
510
- async componentWillLoad() {
511
- setUpLoadableComponent(this);
512
- this.updateItems();
513
- await setUpMessages(this);
514
- }
515
- componentDidLoad() {
516
- afterConnectDefaultValueSet(this, this.getValue());
517
- this.reposition(true);
518
- setComponentLoaded(this);
519
- }
520
- componentDidRender() {
521
- if (this.el.offsetHeight !== this.inputHeight) {
522
- this.reposition(true);
523
- this.inputHeight = this.el.offsetHeight;
524
- }
525
- updateHostInteraction(this);
526
- }
527
- disconnectedCallback() {
528
- var _a, _b;
529
- (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
530
- (_b = this.resizeObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
531
- disconnectInteractive(this);
532
- disconnectLabel(this);
533
- disconnectForm(this);
534
- disconnectFloatingUI(this, this.referenceEl, this.floatingEl);
535
- disconnectLocalized(this);
536
- disconnectMessages(this);
537
- }
538
- /** when search text is cleared, reset active to */
539
- textHandler() {
540
- this.updateActiveItemIndex(-1);
541
- }
542
- effectiveLocaleChange() {
543
- updateMessages(this, this.effectiveLocale);
544
- }
545
- // --------------------------------------------------------------------------
546
- //
547
- // Private Methods
548
- //
549
- // --------------------------------------------------------------------------
550
- clearValue() {
551
- this.ignoreSelectedEventsFlag = true;
552
- this.items.forEach((el) => (el.selected = false));
553
- this.ignoreSelectedEventsFlag = false;
554
- this.selectedItems = [];
555
- this.emitComboboxChange();
556
- this.open = false;
557
- this.updateActiveItemIndex(-1);
558
- this.resetText();
559
- this.filterItems("");
560
- this.setFocus();
561
- }
562
- comboboxInViewport() {
563
- const bounding = this.el.getBoundingClientRect();
564
- return (bounding.top >= 0 &&
565
- bounding.left >= 0 &&
566
- bounding.right <= (window.innerWidth || document.documentElement.clientWidth) &&
567
- bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight));
568
- }
569
- onBeforeOpen() {
570
- this.scrollToActiveItem();
571
- this.calciteComboboxBeforeOpen.emit();
572
- }
573
- onOpen() {
574
- this.calciteComboboxOpen.emit();
575
- }
576
- onBeforeClose() {
577
- this.calciteComboboxBeforeClose.emit();
578
- }
579
- onClose() {
580
- this.calciteComboboxClose.emit();
581
- }
582
- ensureRecentSelectedItemIsActive() {
583
- const { selectedItems } = this;
584
- const targetIndex = selectedItems.length === 0 ? 0 : this.items.indexOf(selectedItems[selectedItems.length - 1]);
585
- this.updateActiveItemIndex(targetIndex);
586
- }
587
- getMaxScrollerHeight() {
588
- const items = this.getCombinedItems().filter((item) => !item.hidden);
589
- const { maxItems } = this;
590
- let itemsToProcess = 0;
591
- let maxScrollerHeight = 0;
592
- if (items.length > maxItems) {
593
- items.forEach((item) => {
594
- if (itemsToProcess < maxItems && maxItems > 0) {
595
- const height = this.calculateSingleItemHeight(item);
596
- if (height > 0) {
597
- maxScrollerHeight += height;
598
- itemsToProcess++;
599
- }
600
- }
601
- });
602
- }
603
- return maxScrollerHeight;
604
- }
605
- calculateSingleItemHeight(item) {
606
- if (!item) {
607
- return;
608
- }
609
- let height = item.offsetHeight;
610
- // if item has children items, don't count their height twice
611
- const children = Array.from(item.querySelectorAll(ComboboxChildSelector));
612
- children
613
- .map((child) => child === null || child === void 0 ? void 0 : child.offsetHeight)
614
- .forEach((offsetHeight) => {
615
- height -= offsetHeight;
616
- });
617
- return height;
618
- }
619
- getCombinedItems() {
620
- return [...this.groupItems, ...this.items];
621
- }
622
- toggleSelection(item, value = !item.selected) {
623
- if (!item) {
624
- return;
625
- }
626
- if (this.isMulti()) {
627
- item.selected = value;
628
- this.updateAncestors(item);
629
- this.selectedItems = this.getSelectedItems();
630
- this.emitComboboxChange();
631
- this.resetText();
632
- this.filterItems("");
633
- }
634
- else {
635
- this.ignoreSelectedEventsFlag = true;
636
- this.items.forEach((el) => (el.selected = el === item ? value : false));
637
- this.ignoreSelectedEventsFlag = false;
638
- this.selectedItems = this.getSelectedItems();
639
- this.emitComboboxChange();
640
- if (this.textInput) {
641
- this.textInput.value = item.textLabel;
642
- }
643
- this.open = false;
644
- this.updateActiveItemIndex(-1);
645
- this.resetText();
646
- this.filterItems("");
647
- }
648
- }
649
- updateAncestors(item) {
650
- if (this.selectionMode !== "ancestors") {
651
- return;
652
- }
653
- const ancestors = getItemAncestors(item);
654
- const children = getItemChildren(item);
655
- if (item.selected) {
656
- ancestors.forEach((el) => {
657
- el.selected = true;
658
- });
659
- }
660
- else {
661
- children.forEach((el) => (el.selected = false));
662
- [...ancestors].forEach((el) => {
663
- if (!hasActiveChildren(el)) {
664
- el.selected = false;
665
- }
666
- });
667
- }
668
- }
669
- getFilteredItems() {
670
- return this.items.filter((item) => !item.hidden);
671
- }
672
- getSelectedItems() {
673
- if (!this.isMulti()) {
674
- const match = this.items.find(({ selected }) => selected);
675
- return match ? [match] : [];
676
- }
677
- return (this.items
678
- .filter((item) => item.selected && (this.selectionMode !== "ancestors" || !hasActiveChildren(item)))
679
- /** Preserve order of entered tags */
680
- .sort((a, b) => {
681
- const aIdx = this.selectedItems.indexOf(a);
682
- const bIdx = this.selectedItems.indexOf(b);
683
- if (aIdx > -1 && bIdx > -1) {
684
- return aIdx - bIdx;
685
- }
686
- return bIdx - aIdx;
687
- }));
688
- }
689
- getData() {
690
- return this.items.map((item) => ({
691
- filterDisabled: item.filterDisabled,
692
- value: item.value,
693
- label: item.textLabel,
694
- }));
695
- }
696
- getNeedsIcon() {
697
- return this.selectionMode === "single" && this.items.some((item) => item.icon);
698
- }
699
- resetText() {
700
- if (this.textInput) {
701
- this.textInput.value = "";
702
- }
703
- this.text = "";
704
- }
705
- getItems() {
706
- const items = Array.from(this.el.querySelectorAll(ComboboxItem$1));
707
- return items.filter((item) => !item.disabled);
708
- }
709
- getGroupItems() {
710
- return Array.from(this.el.querySelectorAll(ComboboxItemGroup));
711
- }
712
- addCustomChip(value, focus) {
713
- const existingItem = this.items.find((el) => el.textLabel === value);
714
- if (existingItem) {
715
- this.toggleSelection(existingItem, true);
716
- }
717
- else {
718
- if (!this.isMulti()) {
719
- this.toggleSelection(this.selectedItems[this.selectedItems.length - 1], false);
720
- }
721
- const item = document.createElement(ComboboxItem$1);
722
- item.value = value;
723
- item.textLabel = value;
724
- item.selected = true;
725
- this.el.appendChild(item);
726
- this.resetText();
727
- if (focus) {
728
- this.setFocus();
729
- }
730
- this.updateItems();
731
- this.filterItems("");
732
- this.emitComboboxChange();
733
- }
734
- }
735
- removeActiveChip() {
736
- this.toggleSelection(this.selectedItems[this.activeChipIndex], false);
737
- this.setFocus();
738
- }
739
- removeLastChip() {
740
- this.toggleSelection(this.selectedItems[this.selectedItems.length - 1], false);
741
- this.setFocus();
742
- }
743
- previousChip() {
744
- if (this.text) {
745
- return;
746
- }
747
- const length = this.selectedItems.length - 1;
748
- const active = this.activeChipIndex;
749
- this.activeChipIndex = active === -1 ? length : Math.max(active - 1, 0);
750
- this.updateActiveItemIndex(-1);
751
- this.focusChip();
752
- }
753
- nextChip() {
754
- if (this.text || this.activeChipIndex === -1) {
755
- return;
756
- }
757
- const last = this.selectedItems.length - 1;
758
- const newIndex = this.activeChipIndex + 1;
759
- if (newIndex > last) {
760
- this.activeChipIndex = -1;
761
- this.setFocus();
762
- }
763
- else {
764
- this.activeChipIndex = newIndex;
765
- this.focusChip();
766
- }
767
- this.updateActiveItemIndex(-1);
768
- }
769
- focusChip() {
770
- var _a;
771
- const guid = (_a = this.selectedItems[this.activeChipIndex]) === null || _a === void 0 ? void 0 : _a.guid;
772
- const chip = guid
773
- ? this.referenceEl.querySelector(`#${chipUidPrefix}${guid}`)
774
- : null;
775
- chip === null || chip === void 0 ? void 0 : chip.setFocus();
776
- }
777
- shiftActiveItemIndex(delta) {
778
- const { length } = this.filteredItems;
779
- const newIndex = (this.activeItemIndex + length + delta) % length;
780
- this.updateActiveItemIndex(newIndex);
781
- this.scrollToActiveItem();
782
- }
783
- updateActiveItemIndex(index) {
784
- this.activeItemIndex = index;
785
- let activeDescendant = null;
786
- this.filteredItems.forEach((el, i) => {
787
- if (i === index) {
788
- el.active = true;
789
- activeDescendant = `${itemUidPrefix}${el.guid}`;
790
- }
791
- else {
792
- el.active = false;
793
- }
794
- });
795
- this.activeDescendant = activeDescendant;
796
- if (this.activeItemIndex > -1) {
797
- this.activeChipIndex = -1;
798
- }
799
- }
800
- isMulti() {
801
- return this.selectionMode !== "single";
802
- }
803
- //--------------------------------------------------------------------------
804
- //
805
- // Render Methods
806
- //
807
- //--------------------------------------------------------------------------
808
- renderChips() {
809
- const { activeChipIndex, scale, selectionMode, messages } = this;
810
- return this.selectedItems.map((item, i) => {
811
- const chipClasses = {
812
- chip: true,
813
- "chip--active": activeChipIndex === i,
814
- };
815
- const ancestors = [...getItemAncestors(item)].reverse();
816
- const pathLabel = [...ancestors, item].map((el) => el.textLabel);
817
- const label = selectionMode !== "ancestors" ? item.textLabel : pathLabel.join(" / ");
818
- return (h("calcite-chip", { class: chipClasses, closable: true, icon: item.icon, iconFlipRtl: item.iconFlipRtl, id: item.guid ? `${chipUidPrefix}${item.guid}` : null, key: item.textLabel, messageOverrides: { dismissLabel: messages.removeTag }, onCalciteChipClose: () => this.calciteChipCloseHandler(item), scale: scale, title: label, value: item.value }, label));
819
- });
820
- }
821
- renderInput() {
822
- const { guid, disabled, placeholder, selectionMode, selectedItems, open } = this;
823
- const single = selectionMode === "single";
824
- const selectedItem = selectedItems[0];
825
- const showLabel = !open && single && !!selectedItem;
826
- return (h("span", { class: {
827
- "input-wrap": true,
828
- "input-wrap--single": single,
829
- } }, showLabel && (h("span", { class: {
830
- label: true,
831
- "label--icon": !!(selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.icon),
832
- }, key: "label" }, selectedItem.textLabel)), h("input", { "aria-activedescendant": this.activeDescendant, "aria-autocomplete": "list", "aria-controls": `${listboxUidPrefix}${guid}`, "aria-label": getLabelText(this), class: {
833
- input: true,
834
- "input--single": true,
835
- "input--transparent": this.activeChipIndex > -1,
836
- "input--hidden": showLabel,
837
- "input--icon": !!this.placeholderIcon,
838
- }, disabled: disabled, id: `${inputUidPrefix}${guid}`, key: "input", onBlur: this.comboboxBlurHandler, onFocus: this.comboboxFocusHandler, onInput: this.inputHandler, placeholder: placeholder, type: "text",
839
- // eslint-disable-next-line react/jsx-sort-props
840
- ref: (el) => (this.textInput = el) })));
841
- }
842
- renderListBoxOptions() {
843
- return this.filteredItems.map((item) => (h("li", { "aria-selected": toAriaBoolean(item.selected), id: item.guid ? `${itemUidPrefix}${item.guid}` : null, role: "option", tabindex: "-1" }, item.textLabel)));
844
- }
845
- renderFloatingUIContainer() {
846
- const { setFloatingEl, setContainerEl, open } = this;
847
- const classes = {
848
- [CSS$4.listContainer]: true,
849
- [FloatingCSS.animation]: true,
850
- [FloatingCSS.animationActive]: open,
851
- };
852
- return (h("div", { "aria-hidden": "true", class: {
853
- "floating-ui-container": true,
854
- "floating-ui-container--active": open,
855
- },
856
- // eslint-disable-next-line react/jsx-sort-props
857
- ref: setFloatingEl }, h("div", { class: classes,
858
- // eslint-disable-next-line react/jsx-sort-props
859
- ref: setContainerEl }, h("ul", { class: { list: true, "list--hide": !open } }, h("slot", null)))));
860
- }
861
- renderIconStart() {
862
- const { selectedItems, placeholderIcon, selectionMode, placeholderIconFlipRtl } = this;
863
- const selectedItem = selectedItems[0];
864
- const selectedIcon = selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.icon;
865
- const singleSelectionMode = selectionMode === "single";
866
- const iconAtStart = !this.open && selectedItem
867
- ? !!selectedIcon && singleSelectionMode
868
- : !!this.placeholderIcon && (!selectedItem || singleSelectionMode);
869
- return (iconAtStart && (h("span", { class: "icon-start" }, h("calcite-icon", { class: "selected-icon", flipRtl: this.open && selectedItem ? selectedItem.iconFlipRtl : placeholderIconFlipRtl, icon: !this.open && selectedItem ? selectedIcon : placeholderIcon, scale: "s" }))));
870
- }
871
- renderIconEnd() {
872
- const { open } = this;
873
- return (h("span", { class: "icon-end" }, h("calcite-icon", { icon: open ? "chevron-up" : "chevron-down", scale: "s" })));
874
- }
875
- render() {
876
- var _a;
877
- const { guid, label, open } = this;
878
- const single = this.selectionMode === "single";
879
- const isClearable = !this.clearDisabled && ((_a = this.value) === null || _a === void 0 ? void 0 : _a.length) > 0;
880
- return (h(Host, { onClick: this.comboboxFocusHandler }, h("div", { "aria-autocomplete": "list", "aria-controls": `${listboxUidPrefix}${guid}`, "aria-expanded": toAriaBoolean(open), "aria-haspopup": "listbox", "aria-label": getLabelText(this), "aria-live": "polite", "aria-owns": `${listboxUidPrefix}${guid}`, class: {
881
- wrapper: true,
882
- "wrapper--single": single || !this.selectedItems.length,
883
- "wrapper--active": open,
884
- }, onClick: this.clickHandler, onKeyDown: this.keyDownHandler, role: "combobox",
885
- // eslint-disable-next-line react/jsx-sort-props
886
- ref: this.setReferenceEl }, h("div", { class: "grid-input" }, this.renderIconStart(), !single && this.renderChips(), h("label", { class: "screen-readers-only", htmlFor: `${inputUidPrefix}${guid}`, id: `${labelUidPrefix}${guid}` }, label), this.renderInput()), isClearable ? (h(XButton, { disabled: this.disabled, key: "close-button", label: this.messages.clear, scale: this.scale })) : null, this.renderIconEnd()), h("ul", { "aria-labelledby": `${labelUidPrefix}${guid}`, "aria-multiselectable": "true", class: "screen-readers-only", id: `${listboxUidPrefix}${guid}`, role: "listbox", tabIndex: -1 }, this.renderListBoxOptions()), this.renderFloatingUIContainer(), h(HiddenFormInputSlot, { component: this })));
887
- }
888
- static get assetsDirs() { return ["assets"]; }
889
- get el() { return getElement(this); }
890
- static get watchers() { return {
891
- "open": ["openHandler"],
892
- "disabled": ["handleDisabledChange"],
893
- "maxItems": ["maxItemsHandler"],
894
- "overlayPositioning": ["overlayPositioningHandler"],
895
- "value": ["valueHandler"],
896
- "messageOverrides": ["onMessagesChange"],
897
- "flipPlacements": ["flipPlacementsHandler"],
898
- "selectedItems": ["selectedItemsHandler"],
899
- "text": ["textHandler"],
900
- "effectiveLocale": ["effectiveLocaleChange"]
901
- }; }
902
- };
45
+ const isGroup = (el) => el.tagName === ComboboxItemGroup;
46
+ const itemUidPrefix = "combobox-item-";
47
+ const chipUidPrefix = "combobox-chip-";
48
+ const labelUidPrefix = "combobox-label-";
49
+ const listboxUidPrefix = "combobox-listbox-";
50
+ const inputUidPrefix = "combobox-input-";
51
+ const Combobox = class {
52
+ constructor(hostRef) {
53
+ registerInstance(this, hostRef);
54
+ this.calciteComboboxChange = createEvent(this, "calciteComboboxChange", 6);
55
+ this.calciteComboboxFilterChange = createEvent(this, "calciteComboboxFilterChange", 6);
56
+ this.calciteComboboxChipClose = createEvent(this, "calciteComboboxChipClose", 6);
57
+ this.calciteComboboxBeforeClose = createEvent(this, "calciteComboboxBeforeClose", 6);
58
+ this.calciteComboboxClose = createEvent(this, "calciteComboboxClose", 6);
59
+ this.calciteComboboxBeforeOpen = createEvent(this, "calciteComboboxBeforeOpen", 6);
60
+ this.calciteComboboxOpen = createEvent(this, "calciteComboboxOpen", 6);
61
+ //--------------------------------------------------------------------------
62
+ //
63
+ // Private State/Props
64
+ //
65
+ //--------------------------------------------------------------------------
66
+ this.placement = defaultMenuPlacement;
67
+ this.internalValueChangeFlag = false;
68
+ this.textInput = null;
69
+ this.mutationObserver = createObserver("mutation", () => this.updateItems());
70
+ this.resizeObserver = createObserver("resize", () => this.setMaxScrollerHeight());
71
+ this.guid = guid();
72
+ this.inputHeight = 0;
73
+ this.ignoreSelectedEventsFlag = false;
74
+ this.openTransitionProp = "opacity";
75
+ this.setFilteredPlacements = () => {
76
+ const { el, flipPlacements } = this;
77
+ this.filteredFlipPlacements = flipPlacements
78
+ ? filterComputedPlacements(flipPlacements, el)
79
+ : null;
80
+ };
81
+ this.getValue = () => {
82
+ const items = this.selectedItems.map((item) => { var _a; return (_a = item === null || item === void 0 ? void 0 : item.value) === null || _a === void 0 ? void 0 : _a.toString(); });
83
+ return (items === null || items === void 0 ? void 0 : items.length) ? (items.length > 1 ? items : items[0]) : "";
84
+ };
85
+ this.onLabelClick = () => {
86
+ this.setFocus();
87
+ };
88
+ this.keyDownHandler = (event) => {
89
+ const { key } = event;
90
+ switch (key) {
91
+ case "Tab":
92
+ this.activeChipIndex = -1;
93
+ this.activeItemIndex = -1;
94
+ if (this.allowCustomValues && this.text) {
95
+ this.addCustomChip(this.text, true);
96
+ event.preventDefault();
97
+ }
98
+ else if (this.open) {
99
+ this.open = false;
100
+ event.preventDefault();
101
+ }
102
+ break;
103
+ case "ArrowLeft":
104
+ this.previousChip();
105
+ event.preventDefault();
106
+ break;
107
+ case "ArrowRight":
108
+ this.nextChip();
109
+ event.preventDefault();
110
+ break;
111
+ case "ArrowUp":
112
+ event.preventDefault();
113
+ if (this.open) {
114
+ this.shiftActiveItemIndex(-1);
115
+ }
116
+ if (!this.comboboxInViewport()) {
117
+ this.el.scrollIntoView();
118
+ }
119
+ break;
120
+ case "ArrowDown":
121
+ event.preventDefault();
122
+ if (this.open) {
123
+ this.shiftActiveItemIndex(1);
124
+ }
125
+ else {
126
+ this.open = true;
127
+ this.ensureRecentSelectedItemIsActive();
128
+ }
129
+ if (!this.comboboxInViewport()) {
130
+ this.el.scrollIntoView();
131
+ }
132
+ break;
133
+ case " ":
134
+ if (!this.textInput.value) {
135
+ if (!this.open) {
136
+ this.open = true;
137
+ this.shiftActiveItemIndex(1);
138
+ }
139
+ event.preventDefault();
140
+ }
141
+ break;
142
+ case "Home":
143
+ if (!this.open) {
144
+ return;
145
+ }
146
+ event.preventDefault();
147
+ this.updateActiveItemIndex(0);
148
+ this.scrollToActiveItem();
149
+ if (!this.comboboxInViewport()) {
150
+ this.el.scrollIntoView();
151
+ }
152
+ break;
153
+ case "End":
154
+ if (!this.open) {
155
+ return;
156
+ }
157
+ event.preventDefault();
158
+ this.updateActiveItemIndex(this.filteredItems.length - 1);
159
+ this.scrollToActiveItem();
160
+ if (!this.comboboxInViewport()) {
161
+ this.el.scrollIntoView();
162
+ }
163
+ break;
164
+ case "Escape":
165
+ if (!this.clearDisabled && !this.open) {
166
+ this.clearValue();
167
+ }
168
+ this.open = false;
169
+ event.preventDefault();
170
+ break;
171
+ case "Enter":
172
+ if (this.activeItemIndex > -1) {
173
+ this.toggleSelection(this.filteredItems[this.activeItemIndex]);
174
+ event.preventDefault();
175
+ }
176
+ else if (this.activeChipIndex > -1) {
177
+ this.removeActiveChip();
178
+ event.preventDefault();
179
+ }
180
+ else if (this.allowCustomValues && this.text) {
181
+ this.addCustomChip(this.text, true);
182
+ event.preventDefault();
183
+ }
184
+ else if (!event.defaultPrevented) {
185
+ if (submitForm(this)) {
186
+ event.preventDefault();
187
+ }
188
+ }
189
+ break;
190
+ case "Delete":
191
+ case "Backspace":
192
+ if (this.activeChipIndex > -1) {
193
+ event.preventDefault();
194
+ this.removeActiveChip();
195
+ }
196
+ else if (!this.text && this.isMulti()) {
197
+ event.preventDefault();
198
+ this.removeLastChip();
199
+ }
200
+ break;
201
+ }
202
+ };
203
+ this.toggleCloseEnd = () => {
204
+ this.open = false;
205
+ this.el.removeEventListener("calciteComboboxClose", this.toggleCloseEnd);
206
+ };
207
+ this.toggleOpenEnd = () => {
208
+ this.open = false;
209
+ this.el.removeEventListener("calciteComboboxOpen", this.toggleOpenEnd);
210
+ };
211
+ this.setMaxScrollerHeight = async () => {
212
+ const { listContainerEl, open, referenceEl } = this;
213
+ if (!listContainerEl || !open) {
214
+ return;
215
+ }
216
+ await this.reposition(true);
217
+ const maxScrollerHeight = this.getMaxScrollerHeight();
218
+ listContainerEl.style.maxHeight = maxScrollerHeight > 0 ? `${maxScrollerHeight}px` : "";
219
+ listContainerEl.style.minWidth = `${referenceEl.clientWidth}px`;
220
+ await this.reposition(true);
221
+ };
222
+ this.calciteChipCloseHandler = (comboboxItem) => {
223
+ this.open = false;
224
+ const selection = this.items.find((item) => item === comboboxItem);
225
+ if (selection) {
226
+ this.toggleSelection(selection, false);
227
+ }
228
+ this.calciteComboboxChipClose.emit();
229
+ };
230
+ this.clickHandler = (event) => {
231
+ const composedPath = event.composedPath();
232
+ if (composedPath.some((node) => node.tagName === "CALCITE-CHIP")) {
233
+ this.open = false;
234
+ event.preventDefault();
235
+ return;
236
+ }
237
+ if (composedPath.some((node) => { var _a; return (_a = node.classList) === null || _a === void 0 ? void 0 : _a.contains(CSS$3.button); })) {
238
+ this.clearValue();
239
+ event.preventDefault();
240
+ return;
241
+ }
242
+ this.open = !this.open;
243
+ this.ensureRecentSelectedItemIsActive();
244
+ };
245
+ this.setInactiveIfNotContained = (event) => {
246
+ const composedPath = event.composedPath();
247
+ if (!this.open || composedPath.includes(this.el) || composedPath.includes(this.referenceEl)) {
248
+ return;
249
+ }
250
+ if (this.allowCustomValues && this.text.trim().length) {
251
+ this.addCustomChip(this.text);
252
+ }
253
+ if (this.selectionMode === "single") {
254
+ if (this.textInput) {
255
+ this.textInput.value = "";
256
+ }
257
+ this.text = "";
258
+ this.filterItems("");
259
+ this.updateActiveItemIndex(-1);
260
+ }
261
+ this.open = false;
262
+ };
263
+ this.setFloatingEl = (el) => {
264
+ this.floatingEl = el;
265
+ connectFloatingUI(this, this.referenceEl, this.floatingEl);
266
+ };
267
+ this.setContainerEl = (el) => {
268
+ this.resizeObserver.observe(el);
269
+ this.listContainerEl = el;
270
+ this.transitionEl = el;
271
+ };
272
+ this.setReferenceEl = (el) => {
273
+ this.referenceEl = el;
274
+ connectFloatingUI(this, this.referenceEl, this.floatingEl);
275
+ };
276
+ this.inputHandler = (event) => {
277
+ const value = event.target.value;
278
+ this.text = value;
279
+ this.filterItems(value);
280
+ if (value) {
281
+ this.activeChipIndex = -1;
282
+ }
283
+ };
284
+ this.filterItems = (() => {
285
+ const find = (item, filteredData) => item &&
286
+ filteredData.some(({ label, value }) => {
287
+ if (isGroup(item)) {
288
+ return value === item.label;
289
+ }
290
+ return (value === item.textLabel ||
291
+ value === item.value ||
292
+ label === item.textLabel ||
293
+ label === item.value);
294
+ });
295
+ return debounce((text) => {
296
+ const filteredData = filter(this.data, text);
297
+ const items = this.getCombinedItems();
298
+ items.forEach((item) => {
299
+ const hidden = !find(item, filteredData);
300
+ item.hidden = hidden;
301
+ const [parent, grandparent] = item.ancestors;
302
+ if (find(parent, filteredData) || find(grandparent, filteredData)) {
303
+ item.hidden = false;
304
+ }
305
+ if (!hidden) {
306
+ item.ancestors.forEach((ancestor) => (ancestor.hidden = false));
307
+ }
308
+ });
309
+ this.filteredItems = this.getFilteredItems();
310
+ this.calciteComboboxFilterChange.emit();
311
+ }, 100);
312
+ })();
313
+ this.internalComboboxChangeEvent = () => {
314
+ this.calciteComboboxChange.emit();
315
+ };
316
+ this.emitComboboxChange = debounce(this.internalComboboxChangeEvent, 0);
317
+ this.updateItems = () => {
318
+ this.items = this.getItems();
319
+ this.groupItems = this.getGroupItems();
320
+ this.data = this.getData();
321
+ this.selectedItems = this.getSelectedItems();
322
+ this.filteredItems = this.getFilteredItems();
323
+ this.needsIcon = this.getNeedsIcon();
324
+ if (!this.allowCustomValues) {
325
+ this.setMaxScrollerHeight();
326
+ }
327
+ this.groupItems.forEach((groupItem, index, items) => {
328
+ if (index === 0) {
329
+ groupItem.afterEmptyGroup = false;
330
+ }
331
+ const nextGroupItem = items[index + 1];
332
+ if (nextGroupItem) {
333
+ nextGroupItem.afterEmptyGroup = groupItem.children.length === 0;
334
+ }
335
+ });
336
+ };
337
+ this.scrollToActiveItem = () => {
338
+ const activeItem = this.filteredItems[this.activeItemIndex];
339
+ if (!activeItem) {
340
+ return;
341
+ }
342
+ const height = this.calculateSingleItemHeight(activeItem);
343
+ const { offsetHeight, scrollTop } = this.listContainerEl;
344
+ if (offsetHeight + scrollTop < activeItem.offsetTop + height) {
345
+ this.listContainerEl.scrollTop = activeItem.offsetTop - offsetHeight + height;
346
+ }
347
+ else if (activeItem.offsetTop < scrollTop) {
348
+ this.listContainerEl.scrollTop = activeItem.offsetTop;
349
+ }
350
+ };
351
+ this.comboboxFocusHandler = () => {
352
+ var _a;
353
+ if (this.disabled) {
354
+ return;
355
+ }
356
+ (_a = this.textInput) === null || _a === void 0 ? void 0 : _a.focus();
357
+ };
358
+ this.comboboxBlurHandler = (event) => {
359
+ this.setInactiveIfNotContained(event);
360
+ };
361
+ this.clearDisabled = false;
362
+ this.open = false;
363
+ this.disabled = false;
364
+ this.form = undefined;
365
+ this.label = undefined;
366
+ this.placeholder = undefined;
367
+ this.placeholderIcon = undefined;
368
+ this.placeholderIconFlipRtl = false;
369
+ this.maxItems = 0;
370
+ this.name = undefined;
371
+ this.allowCustomValues = undefined;
372
+ this.overlayPositioning = "absolute";
373
+ this.required = false;
374
+ this.selectionMode = "multiple";
375
+ this.scale = "m";
376
+ this.value = null;
377
+ this.flipPlacements = undefined;
378
+ this.messages = undefined;
379
+ this.messageOverrides = undefined;
380
+ this.selectedItems = [];
381
+ this.filteredItems = [];
382
+ this.items = [];
383
+ this.groupItems = [];
384
+ this.needsIcon = undefined;
385
+ this.activeItemIndex = -1;
386
+ this.activeChipIndex = -1;
387
+ this.activeDescendant = "";
388
+ this.text = "";
389
+ this.effectiveLocale = undefined;
390
+ this.defaultMessages = undefined;
391
+ }
392
+ openHandler() {
393
+ onToggleOpenCloseComponent(this);
394
+ if (this.disabled) {
395
+ this.open = false;
396
+ return;
397
+ }
398
+ this.setMaxScrollerHeight();
399
+ }
400
+ handleDisabledChange(value) {
401
+ if (!value) {
402
+ this.open = false;
403
+ }
404
+ }
405
+ maxItemsHandler() {
406
+ this.setMaxScrollerHeight();
407
+ }
408
+ overlayPositioningHandler() {
409
+ this.reposition(true);
410
+ }
411
+ valueHandler(value) {
412
+ if (!this.internalValueChangeFlag) {
413
+ const items = this.getItems();
414
+ if (Array.isArray(value)) {
415
+ items.forEach((item) => (item.selected = value.includes(item.value)));
416
+ }
417
+ else if (value) {
418
+ items.forEach((item) => (item.selected = value === item.value));
419
+ }
420
+ else {
421
+ items.forEach((item) => (item.selected = false));
422
+ }
423
+ this.updateItems();
424
+ }
425
+ }
426
+ onMessagesChange() {
427
+ /* wired up by t9n util */
428
+ }
429
+ flipPlacementsHandler() {
430
+ this.setFilteredPlacements();
431
+ this.reposition(true);
432
+ }
433
+ selectedItemsHandler() {
434
+ this.internalValueChangeFlag = true;
435
+ this.value = this.getValue();
436
+ this.internalValueChangeFlag = false;
437
+ }
438
+ //--------------------------------------------------------------------------
439
+ //
440
+ // Event Listeners
441
+ //
442
+ //--------------------------------------------------------------------------
443
+ documentClickHandler(event) {
444
+ if (this.disabled || !isPrimaryPointerButton(event)) {
445
+ return;
446
+ }
447
+ this.setInactiveIfNotContained(event);
448
+ }
449
+ calciteComboboxItemChangeHandler(event) {
450
+ if (this.ignoreSelectedEventsFlag) {
451
+ return;
452
+ }
453
+ const target = event.target;
454
+ const newIndex = this.filteredItems.indexOf(target);
455
+ this.updateActiveItemIndex(newIndex);
456
+ this.toggleSelection(target, target.selected);
457
+ }
458
+ //--------------------------------------------------------------------------
459
+ //
460
+ // Public Methods
461
+ //
462
+ //--------------------------------------------------------------------------
463
+ /**
464
+ * Updates the position of the component.
465
+ *
466
+ * @param delayed
467
+ */
468
+ async reposition(delayed = false) {
469
+ const { floatingEl, referenceEl, placement, overlayPositioning, filteredFlipPlacements } = this;
470
+ return reposition(this, {
471
+ floatingEl,
472
+ referenceEl,
473
+ overlayPositioning,
474
+ placement,
475
+ flipPlacements: filteredFlipPlacements,
476
+ type: "menu",
477
+ }, delayed);
478
+ }
479
+ /** Sets focus on the component. */
480
+ async setFocus() {
481
+ var _a;
482
+ await componentFocusable(this);
483
+ (_a = this.textInput) === null || _a === void 0 ? void 0 : _a.focus();
484
+ this.activeChipIndex = -1;
485
+ this.activeItemIndex = -1;
486
+ }
487
+ // --------------------------------------------------------------------------
488
+ //
489
+ // Lifecycle
490
+ //
491
+ // --------------------------------------------------------------------------
492
+ connectedCallback() {
493
+ var _a;
494
+ connectInteractive(this);
495
+ connectLocalized(this);
496
+ connectMessages(this);
497
+ this.internalValueChangeFlag = true;
498
+ this.value = this.getValue();
499
+ this.internalValueChangeFlag = false;
500
+ (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.observe(this.el, { childList: true, subtree: true });
501
+ connectLabel(this);
502
+ connectForm(this);
503
+ this.setFilteredPlacements();
504
+ this.reposition(true);
505
+ if (this.open) {
506
+ this.openHandler();
507
+ onToggleOpenCloseComponent(this);
508
+ }
509
+ }
510
+ async componentWillLoad() {
511
+ setUpLoadableComponent(this);
512
+ this.updateItems();
513
+ await setUpMessages(this);
514
+ }
515
+ componentDidLoad() {
516
+ afterConnectDefaultValueSet(this, this.getValue());
517
+ this.reposition(true);
518
+ setComponentLoaded(this);
519
+ }
520
+ componentDidRender() {
521
+ if (this.el.offsetHeight !== this.inputHeight) {
522
+ this.reposition(true);
523
+ this.inputHeight = this.el.offsetHeight;
524
+ }
525
+ updateHostInteraction(this);
526
+ }
527
+ disconnectedCallback() {
528
+ var _a, _b;
529
+ (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
530
+ (_b = this.resizeObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
531
+ disconnectInteractive(this);
532
+ disconnectLabel(this);
533
+ disconnectForm(this);
534
+ disconnectFloatingUI(this, this.referenceEl, this.floatingEl);
535
+ disconnectLocalized(this);
536
+ disconnectMessages(this);
537
+ }
538
+ /** when search text is cleared, reset active to */
539
+ textHandler() {
540
+ this.updateActiveItemIndex(-1);
541
+ }
542
+ effectiveLocaleChange() {
543
+ updateMessages(this, this.effectiveLocale);
544
+ }
545
+ // --------------------------------------------------------------------------
546
+ //
547
+ // Private Methods
548
+ //
549
+ // --------------------------------------------------------------------------
550
+ clearValue() {
551
+ this.ignoreSelectedEventsFlag = true;
552
+ this.items.forEach((el) => (el.selected = false));
553
+ this.ignoreSelectedEventsFlag = false;
554
+ this.selectedItems = [];
555
+ this.emitComboboxChange();
556
+ this.open = false;
557
+ this.updateActiveItemIndex(-1);
558
+ this.resetText();
559
+ this.filterItems("");
560
+ this.setFocus();
561
+ }
562
+ comboboxInViewport() {
563
+ const bounding = this.el.getBoundingClientRect();
564
+ return (bounding.top >= 0 &&
565
+ bounding.left >= 0 &&
566
+ bounding.right <= (window.innerWidth || document.documentElement.clientWidth) &&
567
+ bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight));
568
+ }
569
+ onBeforeOpen() {
570
+ this.scrollToActiveItem();
571
+ this.calciteComboboxBeforeOpen.emit();
572
+ }
573
+ onOpen() {
574
+ this.calciteComboboxOpen.emit();
575
+ }
576
+ onBeforeClose() {
577
+ this.calciteComboboxBeforeClose.emit();
578
+ }
579
+ onClose() {
580
+ this.calciteComboboxClose.emit();
581
+ }
582
+ ensureRecentSelectedItemIsActive() {
583
+ const { selectedItems } = this;
584
+ const targetIndex = selectedItems.length === 0 ? 0 : this.items.indexOf(selectedItems[selectedItems.length - 1]);
585
+ this.updateActiveItemIndex(targetIndex);
586
+ }
587
+ getMaxScrollerHeight() {
588
+ const items = this.getCombinedItems().filter((item) => !item.hidden);
589
+ const { maxItems } = this;
590
+ let itemsToProcess = 0;
591
+ let maxScrollerHeight = 0;
592
+ if (items.length > maxItems) {
593
+ items.forEach((item) => {
594
+ if (itemsToProcess < maxItems && maxItems > 0) {
595
+ const height = this.calculateSingleItemHeight(item);
596
+ if (height > 0) {
597
+ maxScrollerHeight += height;
598
+ itemsToProcess++;
599
+ }
600
+ }
601
+ });
602
+ }
603
+ return maxScrollerHeight;
604
+ }
605
+ calculateSingleItemHeight(item) {
606
+ if (!item) {
607
+ return;
608
+ }
609
+ let height = item.offsetHeight;
610
+ // if item has children items, don't count their height twice
611
+ const children = Array.from(item.querySelectorAll(ComboboxChildSelector));
612
+ children
613
+ .map((child) => child === null || child === void 0 ? void 0 : child.offsetHeight)
614
+ .forEach((offsetHeight) => {
615
+ height -= offsetHeight;
616
+ });
617
+ return height;
618
+ }
619
+ getCombinedItems() {
620
+ return [...this.groupItems, ...this.items];
621
+ }
622
+ toggleSelection(item, value = !item.selected) {
623
+ if (!item) {
624
+ return;
625
+ }
626
+ if (this.isMulti()) {
627
+ item.selected = value;
628
+ this.updateAncestors(item);
629
+ this.selectedItems = this.getSelectedItems();
630
+ this.emitComboboxChange();
631
+ this.resetText();
632
+ this.filterItems("");
633
+ }
634
+ else {
635
+ this.ignoreSelectedEventsFlag = true;
636
+ this.items.forEach((el) => (el.selected = el === item ? value : false));
637
+ this.ignoreSelectedEventsFlag = false;
638
+ this.selectedItems = this.getSelectedItems();
639
+ this.emitComboboxChange();
640
+ if (this.textInput) {
641
+ this.textInput.value = item.textLabel;
642
+ }
643
+ this.open = false;
644
+ this.updateActiveItemIndex(-1);
645
+ this.resetText();
646
+ this.filterItems("");
647
+ }
648
+ }
649
+ updateAncestors(item) {
650
+ if (this.selectionMode !== "ancestors") {
651
+ return;
652
+ }
653
+ const ancestors = getItemAncestors(item);
654
+ const children = getItemChildren(item);
655
+ if (item.selected) {
656
+ ancestors.forEach((el) => {
657
+ el.selected = true;
658
+ });
659
+ }
660
+ else {
661
+ children.forEach((el) => (el.selected = false));
662
+ [...ancestors].forEach((el) => {
663
+ if (!hasActiveChildren(el)) {
664
+ el.selected = false;
665
+ }
666
+ });
667
+ }
668
+ }
669
+ getFilteredItems() {
670
+ return this.items.filter((item) => !item.hidden);
671
+ }
672
+ getSelectedItems() {
673
+ if (!this.isMulti()) {
674
+ const match = this.items.find(({ selected }) => selected);
675
+ return match ? [match] : [];
676
+ }
677
+ return (this.items
678
+ .filter((item) => item.selected && (this.selectionMode !== "ancestors" || !hasActiveChildren(item)))
679
+ /** Preserve order of entered tags */
680
+ .sort((a, b) => {
681
+ const aIdx = this.selectedItems.indexOf(a);
682
+ const bIdx = this.selectedItems.indexOf(b);
683
+ if (aIdx > -1 && bIdx > -1) {
684
+ return aIdx - bIdx;
685
+ }
686
+ return bIdx - aIdx;
687
+ }));
688
+ }
689
+ getData() {
690
+ return this.items.map((item) => ({
691
+ filterDisabled: item.filterDisabled,
692
+ value: item.value,
693
+ label: item.textLabel,
694
+ }));
695
+ }
696
+ getNeedsIcon() {
697
+ return this.selectionMode === "single" && this.items.some((item) => item.icon);
698
+ }
699
+ resetText() {
700
+ if (this.textInput) {
701
+ this.textInput.value = "";
702
+ }
703
+ this.text = "";
704
+ }
705
+ getItems() {
706
+ const items = Array.from(this.el.querySelectorAll(ComboboxItem$1));
707
+ return items.filter((item) => !item.disabled);
708
+ }
709
+ getGroupItems() {
710
+ return Array.from(this.el.querySelectorAll(ComboboxItemGroup));
711
+ }
712
+ addCustomChip(value, focus) {
713
+ const existingItem = this.items.find((el) => el.textLabel === value);
714
+ if (existingItem) {
715
+ this.toggleSelection(existingItem, true);
716
+ }
717
+ else {
718
+ if (!this.isMulti()) {
719
+ this.toggleSelection(this.selectedItems[this.selectedItems.length - 1], false);
720
+ }
721
+ const item = document.createElement(ComboboxItem$1);
722
+ item.value = value;
723
+ item.textLabel = value;
724
+ item.selected = true;
725
+ this.el.appendChild(item);
726
+ this.resetText();
727
+ if (focus) {
728
+ this.setFocus();
729
+ }
730
+ this.updateItems();
731
+ this.filterItems("");
732
+ this.emitComboboxChange();
733
+ }
734
+ }
735
+ removeActiveChip() {
736
+ this.toggleSelection(this.selectedItems[this.activeChipIndex], false);
737
+ this.setFocus();
738
+ }
739
+ removeLastChip() {
740
+ this.toggleSelection(this.selectedItems[this.selectedItems.length - 1], false);
741
+ this.setFocus();
742
+ }
743
+ previousChip() {
744
+ if (this.text) {
745
+ return;
746
+ }
747
+ const length = this.selectedItems.length - 1;
748
+ const active = this.activeChipIndex;
749
+ this.activeChipIndex = active === -1 ? length : Math.max(active - 1, 0);
750
+ this.updateActiveItemIndex(-1);
751
+ this.focusChip();
752
+ }
753
+ nextChip() {
754
+ if (this.text || this.activeChipIndex === -1) {
755
+ return;
756
+ }
757
+ const last = this.selectedItems.length - 1;
758
+ const newIndex = this.activeChipIndex + 1;
759
+ if (newIndex > last) {
760
+ this.activeChipIndex = -1;
761
+ this.setFocus();
762
+ }
763
+ else {
764
+ this.activeChipIndex = newIndex;
765
+ this.focusChip();
766
+ }
767
+ this.updateActiveItemIndex(-1);
768
+ }
769
+ focusChip() {
770
+ var _a;
771
+ const guid = (_a = this.selectedItems[this.activeChipIndex]) === null || _a === void 0 ? void 0 : _a.guid;
772
+ const chip = guid
773
+ ? this.referenceEl.querySelector(`#${chipUidPrefix}${guid}`)
774
+ : null;
775
+ chip === null || chip === void 0 ? void 0 : chip.setFocus();
776
+ }
777
+ shiftActiveItemIndex(delta) {
778
+ const { length } = this.filteredItems;
779
+ const newIndex = (this.activeItemIndex + length + delta) % length;
780
+ this.updateActiveItemIndex(newIndex);
781
+ this.scrollToActiveItem();
782
+ }
783
+ updateActiveItemIndex(index) {
784
+ this.activeItemIndex = index;
785
+ let activeDescendant = null;
786
+ this.filteredItems.forEach((el, i) => {
787
+ if (i === index) {
788
+ el.active = true;
789
+ activeDescendant = `${itemUidPrefix}${el.guid}`;
790
+ }
791
+ else {
792
+ el.active = false;
793
+ }
794
+ });
795
+ this.activeDescendant = activeDescendant;
796
+ if (this.activeItemIndex > -1) {
797
+ this.activeChipIndex = -1;
798
+ }
799
+ }
800
+ isMulti() {
801
+ return this.selectionMode !== "single";
802
+ }
803
+ //--------------------------------------------------------------------------
804
+ //
805
+ // Render Methods
806
+ //
807
+ //--------------------------------------------------------------------------
808
+ renderChips() {
809
+ const { activeChipIndex, scale, selectionMode, messages } = this;
810
+ return this.selectedItems.map((item, i) => {
811
+ const chipClasses = {
812
+ chip: true,
813
+ "chip--active": activeChipIndex === i,
814
+ };
815
+ const ancestors = [...getItemAncestors(item)].reverse();
816
+ const pathLabel = [...ancestors, item].map((el) => el.textLabel);
817
+ const label = selectionMode !== "ancestors" ? item.textLabel : pathLabel.join(" / ");
818
+ return (h("calcite-chip", { class: chipClasses, closable: true, icon: item.icon, iconFlipRtl: item.iconFlipRtl, id: item.guid ? `${chipUidPrefix}${item.guid}` : null, key: item.textLabel, messageOverrides: { dismissLabel: messages.removeTag }, onCalciteChipClose: () => this.calciteChipCloseHandler(item), scale: scale, title: label, value: item.value }, label));
819
+ });
820
+ }
821
+ renderInput() {
822
+ const { guid, disabled, placeholder, selectionMode, selectedItems, open } = this;
823
+ const single = selectionMode === "single";
824
+ const selectedItem = selectedItems[0];
825
+ const showLabel = !open && single && !!selectedItem;
826
+ return (h("span", { class: {
827
+ "input-wrap": true,
828
+ "input-wrap--single": single,
829
+ } }, showLabel && (h("span", { class: {
830
+ label: true,
831
+ "label--icon": !!(selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.icon),
832
+ }, key: "label" }, selectedItem.textLabel)), h("input", { "aria-activedescendant": this.activeDescendant, "aria-autocomplete": "list", "aria-controls": `${listboxUidPrefix}${guid}`, "aria-label": getLabelText(this), class: {
833
+ input: true,
834
+ "input--single": true,
835
+ "input--transparent": this.activeChipIndex > -1,
836
+ "input--hidden": showLabel,
837
+ "input--icon": !!this.placeholderIcon,
838
+ }, disabled: disabled, id: `${inputUidPrefix}${guid}`, key: "input", onBlur: this.comboboxBlurHandler, onFocus: this.comboboxFocusHandler, onInput: this.inputHandler, placeholder: placeholder, type: "text",
839
+ // eslint-disable-next-line react/jsx-sort-props
840
+ ref: (el) => (this.textInput = el) })));
841
+ }
842
+ renderListBoxOptions() {
843
+ return this.filteredItems.map((item) => (h("li", { "aria-selected": toAriaBoolean(item.selected), id: item.guid ? `${itemUidPrefix}${item.guid}` : null, role: "option", tabindex: "-1" }, item.textLabel)));
844
+ }
845
+ renderFloatingUIContainer() {
846
+ const { setFloatingEl, setContainerEl, open } = this;
847
+ const classes = {
848
+ [CSS$4.listContainer]: true,
849
+ [FloatingCSS.animation]: true,
850
+ [FloatingCSS.animationActive]: open,
851
+ };
852
+ return (h("div", { "aria-hidden": "true", class: {
853
+ "floating-ui-container": true,
854
+ "floating-ui-container--active": open,
855
+ },
856
+ // eslint-disable-next-line react/jsx-sort-props
857
+ ref: setFloatingEl }, h("div", { class: classes,
858
+ // eslint-disable-next-line react/jsx-sort-props
859
+ ref: setContainerEl }, h("ul", { class: { list: true, "list--hide": !open } }, h("slot", null)))));
860
+ }
861
+ renderIconStart() {
862
+ const { selectedItems, placeholderIcon, selectionMode, placeholderIconFlipRtl } = this;
863
+ const selectedItem = selectedItems[0];
864
+ const selectedIcon = selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.icon;
865
+ const singleSelectionMode = selectionMode === "single";
866
+ const iconAtStart = !this.open && selectedItem
867
+ ? !!selectedIcon && singleSelectionMode
868
+ : !!this.placeholderIcon && (!selectedItem || singleSelectionMode);
869
+ return (iconAtStart && (h("span", { class: "icon-start" }, h("calcite-icon", { class: "selected-icon", flipRtl: this.open && selectedItem ? selectedItem.iconFlipRtl : placeholderIconFlipRtl, icon: !this.open && selectedItem ? selectedIcon : placeholderIcon, scale: "s" }))));
870
+ }
871
+ renderIconEnd() {
872
+ const { open } = this;
873
+ return (h("span", { class: "icon-end" }, h("calcite-icon", { icon: open ? "chevron-up" : "chevron-down", scale: "s" })));
874
+ }
875
+ render() {
876
+ var _a;
877
+ const { guid, label, open } = this;
878
+ const single = this.selectionMode === "single";
879
+ const isClearable = !this.clearDisabled && ((_a = this.value) === null || _a === void 0 ? void 0 : _a.length) > 0;
880
+ return (h(Host, { onClick: this.comboboxFocusHandler }, h("div", { "aria-autocomplete": "list", "aria-controls": `${listboxUidPrefix}${guid}`, "aria-expanded": toAriaBoolean(open), "aria-haspopup": "listbox", "aria-label": getLabelText(this), "aria-live": "polite", "aria-owns": `${listboxUidPrefix}${guid}`, class: {
881
+ wrapper: true,
882
+ "wrapper--single": single || !this.selectedItems.length,
883
+ "wrapper--active": open,
884
+ }, onClick: this.clickHandler, onKeyDown: this.keyDownHandler, role: "combobox",
885
+ // eslint-disable-next-line react/jsx-sort-props
886
+ ref: this.setReferenceEl }, h("div", { class: "grid-input" }, this.renderIconStart(), !single && this.renderChips(), h("label", { class: "screen-readers-only", htmlFor: `${inputUidPrefix}${guid}`, id: `${labelUidPrefix}${guid}` }, label), this.renderInput()), isClearable ? (h(XButton, { disabled: this.disabled, key: "close-button", label: this.messages.clear, scale: this.scale })) : null, this.renderIconEnd()), h("ul", { "aria-labelledby": `${labelUidPrefix}${guid}`, "aria-multiselectable": "true", class: "screen-readers-only", id: `${listboxUidPrefix}${guid}`, role: "listbox", tabIndex: -1 }, this.renderListBoxOptions()), this.renderFloatingUIContainer(), h(HiddenFormInputSlot, { component: this })));
887
+ }
888
+ static get assetsDirs() { return ["assets"]; }
889
+ get el() { return getElement(this); }
890
+ static get watchers() { return {
891
+ "open": ["openHandler"],
892
+ "disabled": ["handleDisabledChange"],
893
+ "maxItems": ["maxItemsHandler"],
894
+ "overlayPositioning": ["overlayPositioningHandler"],
895
+ "value": ["valueHandler"],
896
+ "messageOverrides": ["onMessagesChange"],
897
+ "flipPlacements": ["flipPlacementsHandler"],
898
+ "selectedItems": ["selectedItemsHandler"],
899
+ "text": ["textHandler"],
900
+ "effectiveLocale": ["effectiveLocaleChange"]
901
+ }; }
902
+ };
903
903
  Combobox.style = comboboxCss;
904
904
 
905
905
  /*!
@@ -923,107 +923,107 @@ const CSS$2 = {
923
923
 
924
924
  const comboboxItemCss = "@charset \"UTF-8\";:host([disabled]){cursor:default;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:var(--calcite-ui-opacity-disabled)}:host([disabled]) *,:host([disabled]) ::slotted(*){pointer-events:none}:host([hidden]){display:none}[hidden]{display:none}.scale--s{font-size:var(--calcite-font-size--2);line-height:1rem;--calcite-combobox-item-spacing-unit-l:0.5rem;--calcite-combobox-item-spacing-unit-s:0.25rem;--calcite-combobox-item-spacing-indent:0.5rem;--calcite-combobox-item-selector-icon-size:1rem}.scale--m{font-size:var(--calcite-font-size--1);line-height:1rem;--calcite-combobox-item-spacing-unit-l:0.75rem;--calcite-combobox-item-spacing-unit-s:0.5rem;--calcite-combobox-item-spacing-indent:0.75rem;--calcite-combobox-item-selector-icon-size:1rem}.scale--l{font-size:var(--calcite-font-size-0);line-height:1.25rem;--calcite-combobox-item-spacing-unit-l:1rem;--calcite-combobox-item-spacing-unit-s:0.625rem;--calcite-combobox-item-spacing-indent:1rem;--calcite-combobox-item-selector-icon-size:1.5rem}.container{--calcite-combobox-item-indent-value:calc(\n var(--calcite-combobox-item-spacing-indent) * var(--calcite-combobox-item-spacing-indent-multiplier)\n )}:host(:focus){--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}:host([disabled]) ::slotted([calcite-hydrated][disabled]),:host([disabled]) [calcite-hydrated][disabled]{opacity:1}:host,ul{margin:0px;display:flex;flex-direction:column;padding:0px}:host(:focus),ul:focus{outline:2px solid transparent;outline-offset:2px}.label{position:relative;box-sizing:border-box;display:flex;inline-size:100%;min-inline-size:100%;cursor:pointer;align-items:center;color:var(--calcite-ui-text-3);-webkit-text-decoration-line:none;text-decoration-line:none;transition-duration:150ms;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);outline-color:transparent;word-wrap:break-word;word-break:break-word;padding-block:var(--calcite-combobox-item-spacing-unit-s);padding-inline:var(--calcite-combobox-item-spacing-unit-l)}:host([disabled]) .label{cursor:default}.label--selected{font-weight:var(--calcite-font-weight-medium);color:var(--calcite-ui-text-1)}.label--active{outline:2px solid var(--calcite-ui-focus-color, var(--calcite-ui-brand));outline-offset:calc(\n -2px *\n calc(\n 1 -\n 2 * clamp(\n 0,\n var(--calcite-ui-focus-offset-invert),\n 1\n )\n )\n )}.label:hover,.label:active{background-color:var(--calcite-ui-foreground-2);color:var(--calcite-ui-text-1);-webkit-text-decoration-line:none;text-decoration-line:none;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.title{padding-block:0;padding-inline:var(--calcite-combobox-item-spacing-unit-l)}.icon{display:inline-flex;opacity:0;transition-duration:150ms;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);color:var(--calcite-ui-border-1)}.icon--indent{padding-inline-start:var(--calcite-combobox-item-indent-value)}.icon--custom{margin-block-start:-1px;padding-inline-start:var(--calcite-combobox-item-spacing-unit-l);color:var(--calcite-ui-text-3)}.icon--active{color:var(--calcite-ui-text-1)}.icon--dot{display:flex;justify-content:center;min-inline-size:var(--calcite-combobox-item-selector-icon-size)}.icon--dot:before{text-align:start;content:\"•\"}.label--active .icon{opacity:1}.label--selected .icon{opacity:1;color:var(--calcite-ui-brand)}:host(:hover[disabled]) .icon{opacity:1}";
925
925
 
926
- const ComboboxItem = class {
927
- constructor(hostRef) {
928
- registerInstance(this, hostRef);
929
- this.calciteComboboxItemChange = createEvent(this, "calciteComboboxItemChange", 6);
930
- /** Specifies the scale of the combobox-item controlled by parent, defaults to m */
931
- this.scale = "m";
932
- this.itemClickHandler = (event) => {
933
- event.preventDefault();
934
- this.toggleSelected();
935
- };
936
- this.disabled = false;
937
- this.selected = false;
938
- this.active = false;
939
- this.ancestors = undefined;
940
- this.guid = guid();
941
- this.icon = undefined;
942
- this.iconFlipRtl = false;
943
- this.textLabel = undefined;
944
- this.value = undefined;
945
- this.filterDisabled = undefined;
946
- }
947
- selectedWatchHandler() {
948
- this.calciteComboboxItemChange.emit();
949
- }
950
- // --------------------------------------------------------------------------
951
- //
952
- // Lifecycle
953
- //
954
- // --------------------------------------------------------------------------
955
- connectedCallback() {
956
- this.ancestors = getAncestors(this.el);
957
- this.scale = getElementProp(this.el, "scale", this.scale);
958
- connectConditionalSlotComponent(this);
959
- connectInteractive(this);
960
- }
961
- disconnectedCallback() {
962
- disconnectConditionalSlotComponent(this);
963
- disconnectInteractive(this);
964
- }
965
- componentDidRender() {
966
- updateHostInteraction(this);
967
- }
968
- // --------------------------------------------------------------------------
969
- //
970
- // Private Methods
971
- //
972
- // --------------------------------------------------------------------------
973
- toggleSelected() {
974
- if (this.disabled) {
975
- return;
976
- }
977
- this.selected = !this.selected;
978
- }
979
- // --------------------------------------------------------------------------
980
- //
981
- // Render Methods
982
- //
983
- // --------------------------------------------------------------------------
984
- renderIcon(iconPath) {
985
- return this.icon ? (h("calcite-icon", { class: {
986
- [CSS$2.custom]: !!this.icon,
987
- [CSS$2.iconActive]: this.icon && this.selected,
988
- [CSS$2.iconIndent]: true,
989
- }, flipRtl: this.iconFlipRtl, icon: this.icon || iconPath, key: "icon", scale: this.scale === "l" ? "m" : "s" })) : null;
990
- }
991
- renderSelectIndicator(showDot, iconPath) {
992
- return showDot ? (h("span", { class: {
993
- [CSS$2.icon]: true,
994
- [CSS$2.dot]: true,
995
- [CSS$2.iconIndent]: true,
996
- } })) : (h("calcite-icon", { class: {
997
- [CSS$2.icon]: true,
998
- [CSS$2.iconActive]: this.selected,
999
- [CSS$2.iconIndent]: true,
1000
- }, flipRtl: this.iconFlipRtl, icon: iconPath, key: "indicator", scale: this.scale === "l" ? "m" : "s" }));
1001
- }
1002
- renderChildren() {
1003
- if (getSlotted(this.el)) {
1004
- return (h("ul", { key: "default-slot-container" }, h("slot", null)));
1005
- }
1006
- return null;
1007
- }
1008
- render() {
1009
- const isSingleSelect = getElementProp(this.el, "selection-mode", "multiple") === "single";
1010
- const showDot = isSingleSelect && !this.disabled;
1011
- const defaultIcon = isSingleSelect ? "dot" : "check";
1012
- const iconPath = this.disabled ? "circle-disallowed" : defaultIcon;
1013
- const classes = {
1014
- [CSS$2.label]: true,
1015
- [CSS$2.selected]: this.selected,
1016
- [CSS$2.active]: this.active,
1017
- [CSS$2.single]: isSingleSelect,
1018
- };
1019
- const depth = getDepth(this.el);
1020
- return (h(Host, { "aria-hidden": "true" }, h("div", { class: `container scale--${this.scale}`, style: { "--calcite-combobox-item-spacing-indent-multiplier": `${depth}` } }, h("li", { class: classes, id: this.guid, onClick: this.itemClickHandler }, this.renderSelectIndicator(showDot, iconPath), this.renderIcon(iconPath), h("span", { class: "title" }, this.textLabel)), this.renderChildren())));
1021
- }
1022
- get el() { return getElement(this); }
1023
- static get watchers() { return {
1024
- "selected": ["selectedWatchHandler"]
1025
- }; }
1026
- };
926
+ const ComboboxItem = class {
927
+ constructor(hostRef) {
928
+ registerInstance(this, hostRef);
929
+ this.calciteComboboxItemChange = createEvent(this, "calciteComboboxItemChange", 6);
930
+ /** Specifies the scale of the combobox-item controlled by parent, defaults to m */
931
+ this.scale = "m";
932
+ this.itemClickHandler = (event) => {
933
+ event.preventDefault();
934
+ this.toggleSelected();
935
+ };
936
+ this.disabled = false;
937
+ this.selected = false;
938
+ this.active = false;
939
+ this.ancestors = undefined;
940
+ this.guid = guid();
941
+ this.icon = undefined;
942
+ this.iconFlipRtl = false;
943
+ this.textLabel = undefined;
944
+ this.value = undefined;
945
+ this.filterDisabled = undefined;
946
+ }
947
+ selectedWatchHandler() {
948
+ this.calciteComboboxItemChange.emit();
949
+ }
950
+ // --------------------------------------------------------------------------
951
+ //
952
+ // Lifecycle
953
+ //
954
+ // --------------------------------------------------------------------------
955
+ connectedCallback() {
956
+ this.ancestors = getAncestors(this.el);
957
+ this.scale = getElementProp(this.el, "scale", this.scale);
958
+ connectConditionalSlotComponent(this);
959
+ connectInteractive(this);
960
+ }
961
+ disconnectedCallback() {
962
+ disconnectConditionalSlotComponent(this);
963
+ disconnectInteractive(this);
964
+ }
965
+ componentDidRender() {
966
+ updateHostInteraction(this);
967
+ }
968
+ // --------------------------------------------------------------------------
969
+ //
970
+ // Private Methods
971
+ //
972
+ // --------------------------------------------------------------------------
973
+ toggleSelected() {
974
+ if (this.disabled) {
975
+ return;
976
+ }
977
+ this.selected = !this.selected;
978
+ }
979
+ // --------------------------------------------------------------------------
980
+ //
981
+ // Render Methods
982
+ //
983
+ // --------------------------------------------------------------------------
984
+ renderIcon(iconPath) {
985
+ return this.icon ? (h("calcite-icon", { class: {
986
+ [CSS$2.custom]: !!this.icon,
987
+ [CSS$2.iconActive]: this.icon && this.selected,
988
+ [CSS$2.iconIndent]: true,
989
+ }, flipRtl: this.iconFlipRtl, icon: this.icon || iconPath, key: "icon", scale: this.scale === "l" ? "m" : "s" })) : null;
990
+ }
991
+ renderSelectIndicator(showDot, iconPath) {
992
+ return showDot ? (h("span", { class: {
993
+ [CSS$2.icon]: true,
994
+ [CSS$2.dot]: true,
995
+ [CSS$2.iconIndent]: true,
996
+ } })) : (h("calcite-icon", { class: {
997
+ [CSS$2.icon]: true,
998
+ [CSS$2.iconActive]: this.selected,
999
+ [CSS$2.iconIndent]: true,
1000
+ }, flipRtl: this.iconFlipRtl, icon: iconPath, key: "indicator", scale: this.scale === "l" ? "m" : "s" }));
1001
+ }
1002
+ renderChildren() {
1003
+ if (getSlotted(this.el)) {
1004
+ return (h("ul", { key: "default-slot-container" }, h("slot", null)));
1005
+ }
1006
+ return null;
1007
+ }
1008
+ render() {
1009
+ const isSingleSelect = getElementProp(this.el, "selection-mode", "multiple") === "single";
1010
+ const showDot = isSingleSelect && !this.disabled;
1011
+ const defaultIcon = isSingleSelect ? "dot" : "check";
1012
+ const iconPath = this.disabled ? "circle-disallowed" : defaultIcon;
1013
+ const classes = {
1014
+ [CSS$2.label]: true,
1015
+ [CSS$2.selected]: this.selected,
1016
+ [CSS$2.active]: this.active,
1017
+ [CSS$2.single]: isSingleSelect,
1018
+ };
1019
+ const depth = getDepth(this.el);
1020
+ return (h(Host, { "aria-hidden": "true" }, h("div", { class: `container scale--${this.scale}`, style: { "--calcite-combobox-item-spacing-indent-multiplier": `${depth}` } }, h("li", { class: classes, id: this.guid, onClick: this.itemClickHandler }, this.renderSelectIndicator(showDot, iconPath), this.renderIcon(iconPath), h("span", { class: "title" }, this.textLabel)), this.renderChildren())));
1021
+ }
1022
+ get el() { return getElement(this); }
1023
+ static get watchers() { return {
1024
+ "selected": ["selectedWatchHandler"]
1025
+ }; }
1026
+ };
1027
1027
  ComboboxItem.style = comboboxItemCss;
1028
1028
 
1029
1029
  /*!
@@ -1037,394 +1037,394 @@ const SLOTS = {
1037
1037
 
1038
1038
  const dropdownCss = ":host([disabled]){cursor:default;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:var(--calcite-ui-opacity-disabled)}:host([disabled]) *,:host([disabled]) ::slotted(*){pointer-events:none}:host{display:inline-flex;flex:0 1 auto}:host([disabled]) ::slotted([calcite-hydrated][disabled]),:host([disabled]) [calcite-hydrated][disabled]{opacity:1}:host .calcite-dropdown-wrapper{--calcite-floating-ui-z-index:var(--calcite-app-z-index-dropdown);display:block;position:absolute;z-index:var(--calcite-floating-ui-z-index);visibility:hidden}.calcite-dropdown-wrapper .calcite-floating-ui-anim{position:relative;transition:var(--calcite-floating-ui-transition);transition-property:transform, visibility, opacity;opacity:0;box-shadow:0 0 16px 0 rgba(0, 0, 0, 0.16);z-index:var(--calcite-app-z-index);border-radius:0.25rem}.calcite-dropdown-wrapper[data-placement^=bottom] .calcite-floating-ui-anim{transform:translateY(-5px)}.calcite-dropdown-wrapper[data-placement^=top] .calcite-floating-ui-anim{transform:translateY(5px)}.calcite-dropdown-wrapper[data-placement^=left] .calcite-floating-ui-anim{transform:translateX(5px)}.calcite-dropdown-wrapper[data-placement^=right] .calcite-floating-ui-anim{transform:translateX(-5px)}.calcite-dropdown-wrapper[data-placement] .calcite-floating-ui-anim--active{opacity:1;transform:translate(0)}:host([open]) .calcite-dropdown-wrapper{visibility:visible}:host .calcite-dropdown-content{max-block-size:45vh;inline-size:auto;overflow-y:auto;overflow-x:hidden;background-color:var(--calcite-ui-foreground-1);inline-size:var(--calcite-dropdown-width)}.calcite-trigger-container{position:relative;display:flex;flex:1 1 auto;word-wrap:break-word;word-break:break-word}@media (forced-colors: active){:host([open]) .calcite-dropdown-wrapper{border:1px solid canvasText}}:host([width=s]){--calcite-dropdown-width:12rem}:host([width=m]){--calcite-dropdown-width:14rem}:host([width=l]){--calcite-dropdown-width:16rem}:host([hidden]){display:none}[hidden]{display:none}";
1039
1039
 
1040
- const Dropdown = class {
1041
- constructor(hostRef) {
1042
- registerInstance(this, hostRef);
1043
- this.calciteDropdownSelect = createEvent(this, "calciteDropdownSelect", 6);
1044
- this.calciteDropdownBeforeClose = createEvent(this, "calciteDropdownBeforeClose", 6);
1045
- this.calciteDropdownClose = createEvent(this, "calciteDropdownClose", 6);
1046
- this.calciteDropdownBeforeOpen = createEvent(this, "calciteDropdownBeforeOpen", 6);
1047
- this.calciteDropdownOpen = createEvent(this, "calciteDropdownOpen", 6);
1048
- this.items = [];
1049
- this.groups = [];
1050
- this.mutationObserver = createObserver("mutation", () => this.updateItems());
1051
- this.resizeObserver = createObserver("resize", (entries) => this.resizeObserverCallback(entries));
1052
- this.openTransitionProp = "opacity";
1053
- this.guid = `calcite-dropdown-${guid()}`;
1054
- this.defaultAssignedElements = [];
1055
- //--------------------------------------------------------------------------
1056
- //
1057
- // Private Methods
1058
- //
1059
- //--------------------------------------------------------------------------
1060
- this.slotChangeHandler = (event) => {
1061
- this.defaultAssignedElements = event.target.assignedElements({
1062
- flatten: true,
1063
- });
1064
- this.updateItems();
1065
- };
1066
- this.setFilteredPlacements = () => {
1067
- const { el, flipPlacements } = this;
1068
- this.filteredFlipPlacements = flipPlacements
1069
- ? filterComputedPlacements(flipPlacements, el)
1070
- : null;
1071
- };
1072
- this.updateTriggers = (event) => {
1073
- this.triggers = event.target.assignedElements({
1074
- flatten: true,
1075
- });
1076
- this.reposition(true);
1077
- };
1078
- this.updateItems = () => {
1079
- this.items = this.groups
1080
- .map((group) => Array.from(group === null || group === void 0 ? void 0 : group.querySelectorAll("calcite-dropdown-item")))
1081
- .reduce((previousValue, currentValue) => [...previousValue, ...currentValue], []);
1082
- this.updateSelectedItems();
1083
- this.reposition(true);
1084
- };
1085
- this.updateGroups = (event) => {
1086
- const groups = event.target
1087
- .assignedElements({ flatten: true })
1088
- .filter((el) => el === null || el === void 0 ? void 0 : el.matches("calcite-dropdown-group"));
1089
- this.groups = groups;
1090
- this.updateItems();
1091
- };
1092
- this.resizeObserverCallback = (entries) => {
1093
- entries.forEach((entry) => {
1094
- const { target } = entry;
1095
- if (target === this.referenceEl) {
1096
- this.setDropdownWidth();
1097
- }
1098
- else if (target === this.scrollerEl) {
1099
- this.setMaxScrollerHeight();
1100
- }
1101
- });
1102
- };
1103
- this.setDropdownWidth = () => {
1104
- const { referenceEl, scrollerEl } = this;
1105
- const referenceElWidth = referenceEl === null || referenceEl === void 0 ? void 0 : referenceEl.clientWidth;
1106
- if (!referenceElWidth || !scrollerEl) {
1107
- return;
1108
- }
1109
- scrollerEl.style.minWidth = `${referenceElWidth}px`;
1110
- };
1111
- this.setMaxScrollerHeight = () => {
1112
- const { scrollerEl } = this;
1113
- if (!scrollerEl) {
1114
- return;
1115
- }
1116
- this.reposition(true);
1117
- const maxScrollerHeight = this.getMaxScrollerHeight();
1118
- scrollerEl.style.maxHeight = maxScrollerHeight > 0 ? `${maxScrollerHeight}px` : "";
1119
- this.reposition(true);
1120
- };
1121
- this.setScrollerAndTransitionEl = (el) => {
1122
- this.resizeObserver.observe(el);
1123
- this.scrollerEl = el;
1124
- this.transitionEl = el;
1125
- };
1126
- this.setReferenceEl = (el) => {
1127
- this.referenceEl = el;
1128
- connectFloatingUI(this, this.referenceEl, this.floatingEl);
1129
- this.resizeObserver.observe(el);
1130
- };
1131
- this.setFloatingEl = (el) => {
1132
- this.floatingEl = el;
1133
- connectFloatingUI(this, this.referenceEl, this.floatingEl);
1134
- };
1135
- this.keyDownHandler = (event) => {
1136
- const target = event.target;
1137
- if (target !== this.referenceEl) {
1138
- return;
1139
- }
1140
- const { defaultPrevented, key } = event;
1141
- if (defaultPrevented) {
1142
- return;
1143
- }
1144
- if (this.open) {
1145
- if (key === "Escape") {
1146
- this.closeCalciteDropdown();
1147
- event.preventDefault();
1148
- return;
1149
- }
1150
- else if (event.shiftKey && key === "Tab") {
1151
- this.closeCalciteDropdown();
1152
- event.preventDefault();
1153
- return;
1154
- }
1155
- }
1156
- if (isActivationKey(key)) {
1157
- this.openCalciteDropdown();
1158
- event.preventDefault();
1159
- }
1160
- else if (key === "Escape") {
1161
- this.closeCalciteDropdown();
1162
- event.preventDefault();
1163
- }
1164
- };
1165
- this.focusOnFirstActiveOrFirstItem = () => {
1166
- this.getFocusableElement(this.items.find((item) => item.selected) || this.items[0]);
1167
- };
1168
- this.toggleOpenEnd = () => {
1169
- this.focusOnFirstActiveOrFirstItem();
1170
- this.el.removeEventListener("calciteDropdownOpen", this.toggleOpenEnd);
1171
- };
1172
- this.openCalciteDropdown = () => {
1173
- this.open = !this.open;
1174
- if (this.open) {
1175
- this.el.addEventListener("calciteDropdownOpen", this.toggleOpenEnd);
1176
- }
1177
- };
1178
- this.open = false;
1179
- this.closeOnSelectDisabled = false;
1180
- this.disabled = false;
1181
- this.flipPlacements = undefined;
1182
- this.maxItems = 0;
1183
- this.overlayPositioning = "absolute";
1184
- this.placement = defaultMenuPlacement;
1185
- this.scale = "m";
1186
- this.selectedItems = [];
1187
- this.type = "click";
1188
- this.width = undefined;
1189
- }
1190
- openHandler(value) {
1191
- if (!this.disabled) {
1192
- if (value) {
1193
- this.reposition(true);
1194
- }
1195
- onToggleOpenCloseComponent(this);
1196
- return;
1197
- }
1198
- this.open = false;
1199
- }
1200
- handleDisabledChange(value) {
1201
- if (!value) {
1202
- this.open = false;
1203
- }
1204
- }
1205
- flipPlacementsHandler() {
1206
- this.setFilteredPlacements();
1207
- this.reposition(true);
1208
- }
1209
- maxItemsHandler() {
1210
- this.setMaxScrollerHeight();
1211
- }
1212
- overlayPositioningHandler() {
1213
- this.reposition(true);
1214
- }
1215
- placementHandler() {
1216
- this.reposition(true);
1217
- }
1218
- //--------------------------------------------------------------------------
1219
- //
1220
- // Public Methods
1221
- //
1222
- //--------------------------------------------------------------------------
1223
- /** Sets focus on the component's first focusable element. */
1224
- async setFocus() {
1225
- await componentFocusable(this);
1226
- this.el.focus();
1227
- }
1228
- //--------------------------------------------------------------------------
1229
- //
1230
- // Lifecycle
1231
- //
1232
- //--------------------------------------------------------------------------
1233
- connectedCallback() {
1234
- var _a;
1235
- (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.observe(this.el, { childList: true, subtree: true });
1236
- this.setFilteredPlacements();
1237
- this.reposition(true);
1238
- if (this.open) {
1239
- this.openHandler(this.open);
1240
- onToggleOpenCloseComponent(this);
1241
- }
1242
- connectInteractive(this);
1243
- }
1244
- componentWillLoad() {
1245
- setUpLoadableComponent(this);
1246
- }
1247
- componentDidLoad() {
1248
- setComponentLoaded(this);
1249
- this.reposition(true);
1250
- }
1251
- componentDidRender() {
1252
- updateHostInteraction(this);
1253
- }
1254
- disconnectedCallback() {
1255
- var _a, _b;
1256
- (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
1257
- (_b = this.resizeObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
1258
- disconnectInteractive(this);
1259
- disconnectFloatingUI(this, this.referenceEl, this.floatingEl);
1260
- }
1261
- render() {
1262
- const { open, guid } = this;
1263
- return (h(Host, null, h("div", { class: "calcite-trigger-container", id: `${guid}-menubutton`, onClick: this.openCalciteDropdown, onKeyDown: this.keyDownHandler,
1264
- // eslint-disable-next-line react/jsx-sort-props
1265
- ref: this.setReferenceEl }, h("slot", { "aria-controls": `${guid}-menu`, "aria-expanded": toAriaBoolean(open), "aria-haspopup": "menu", name: SLOTS.dropdownTrigger, onSlotchange: this.updateTriggers })), h("div", { "aria-hidden": toAriaBoolean(!open), class: "calcite-dropdown-wrapper",
1266
- // eslint-disable-next-line react/jsx-sort-props
1267
- ref: this.setFloatingEl }, h("div", { "aria-labelledby": `${guid}-menubutton`, class: {
1268
- ["calcite-dropdown-content"]: true,
1269
- [FloatingCSS.animation]: true,
1270
- [FloatingCSS.animationActive]: open,
1271
- }, id: `${guid}-menu`, role: "menu",
1272
- // eslint-disable-next-line react/jsx-sort-props
1273
- ref: this.setScrollerAndTransitionEl }, h("slot", { onSlotchange: this.updateGroups })))));
1274
- }
1275
- //--------------------------------------------------------------------------
1276
- //
1277
- // Public Methods
1278
- //
1279
- //--------------------------------------------------------------------------
1280
- /**
1281
- * Updates the position of the component.
1282
- *
1283
- * @param delayed
1284
- */
1285
- async reposition(delayed = false) {
1286
- const { floatingEl, referenceEl, placement, overlayPositioning, filteredFlipPlacements } = this;
1287
- return reposition(this, {
1288
- floatingEl,
1289
- referenceEl,
1290
- overlayPositioning,
1291
- placement,
1292
- flipPlacements: filteredFlipPlacements,
1293
- type: "menu",
1294
- }, delayed);
1295
- }
1296
- closeCalciteDropdownOnClick(event) {
1297
- if (this.disabled ||
1298
- !isPrimaryPointerButton(event) ||
1299
- !this.open ||
1300
- event.composedPath().includes(this.el)) {
1301
- return;
1302
- }
1303
- this.closeCalciteDropdown(false);
1304
- }
1305
- closeCalciteDropdownOnEvent(event) {
1306
- this.closeCalciteDropdown();
1307
- event.stopPropagation();
1308
- }
1309
- closeCalciteDropdownOnOpenEvent(event) {
1310
- if (event.composedPath().includes(this.el)) {
1311
- return;
1312
- }
1313
- this.open = false;
1314
- }
1315
- pointerEnterHandler() {
1316
- if (this.disabled || this.type !== "hover") {
1317
- return;
1318
- }
1319
- this.openCalciteDropdown();
1320
- }
1321
- pointerLeaveHandler() {
1322
- if (this.disabled || this.type !== "hover") {
1323
- return;
1324
- }
1325
- this.closeCalciteDropdown();
1326
- }
1327
- calciteInternalDropdownItemKeyEvent(event) {
1328
- const { keyboardEvent } = event.detail;
1329
- const target = keyboardEvent.target;
1330
- switch (keyboardEvent.key) {
1331
- case "Tab":
1332
- if (this.items.indexOf(target) === this.items.length - 1 && !keyboardEvent.shiftKey) {
1333
- this.closeCalciteDropdown();
1334
- }
1335
- else if (this.items.indexOf(target) === 0 && keyboardEvent.shiftKey) {
1336
- this.closeCalciteDropdown();
1337
- }
1338
- break;
1339
- case "ArrowDown":
1340
- focusElementInGroup(this.items, target, "next");
1341
- break;
1342
- case "ArrowUp":
1343
- focusElementInGroup(this.items, target, "previous");
1344
- break;
1345
- case "Home":
1346
- focusElementInGroup(this.items, target, "first");
1347
- break;
1348
- case "End":
1349
- focusElementInGroup(this.items, target, "last");
1350
- break;
1351
- }
1352
- event.stopPropagation();
1353
- }
1354
- handleItemSelect(event) {
1355
- this.updateSelectedItems();
1356
- event.stopPropagation();
1357
- this.calciteDropdownSelect.emit();
1358
- if (!this.closeOnSelectDisabled ||
1359
- event.detail.requestedDropdownGroup.selectionMode === "none") {
1360
- this.closeCalciteDropdown();
1361
- }
1362
- event.stopPropagation();
1363
- }
1364
- onBeforeOpen() {
1365
- this.calciteDropdownBeforeOpen.emit();
1366
- }
1367
- onOpen() {
1368
- this.calciteDropdownOpen.emit();
1369
- }
1370
- onBeforeClose() {
1371
- this.calciteDropdownBeforeClose.emit();
1372
- }
1373
- onClose() {
1374
- this.calciteDropdownClose.emit();
1375
- }
1376
- updateSelectedItems() {
1377
- this.selectedItems = this.items.filter((item) => item.selected);
1378
- }
1379
- getMaxScrollerHeight() {
1380
- const { maxItems, items } = this;
1381
- let itemsToProcess = 0;
1382
- let maxScrollerHeight = 0;
1383
- let groupHeaderHeight;
1384
- this.groups.forEach((group) => {
1385
- if (maxItems > 0 && itemsToProcess < maxItems) {
1386
- Array.from(group.children).forEach((item, index) => {
1387
- if (index === 0) {
1388
- if (isNaN(groupHeaderHeight)) {
1389
- groupHeaderHeight = item.offsetTop;
1390
- }
1391
- maxScrollerHeight += groupHeaderHeight;
1392
- }
1393
- if (itemsToProcess < maxItems) {
1394
- maxScrollerHeight += item.offsetHeight;
1395
- itemsToProcess += 1;
1396
- }
1397
- });
1398
- }
1399
- });
1400
- return items.length > maxItems ? maxScrollerHeight : 0;
1401
- }
1402
- closeCalciteDropdown(focusTrigger = true) {
1403
- this.open = false;
1404
- if (focusTrigger) {
1405
- focusElement(this.triggers[0]);
1406
- }
1407
- }
1408
- getFocusableElement(item) {
1409
- if (!item) {
1410
- return;
1411
- }
1412
- const target = item.attributes.isLink
1413
- ? item.shadowRoot.querySelector("a")
1414
- : item;
1415
- focusElement(target);
1416
- }
1417
- static get delegatesFocus() { return true; }
1418
- get el() { return getElement(this); }
1419
- static get watchers() { return {
1420
- "open": ["openHandler"],
1421
- "disabled": ["handleDisabledChange"],
1422
- "flipPlacements": ["flipPlacementsHandler"],
1423
- "maxItems": ["maxItemsHandler"],
1424
- "overlayPositioning": ["overlayPositioningHandler"],
1425
- "placement": ["placementHandler"]
1426
- }; }
1427
- };
1040
+ const Dropdown = class {
1041
+ constructor(hostRef) {
1042
+ registerInstance(this, hostRef);
1043
+ this.calciteDropdownSelect = createEvent(this, "calciteDropdownSelect", 6);
1044
+ this.calciteDropdownBeforeClose = createEvent(this, "calciteDropdownBeforeClose", 6);
1045
+ this.calciteDropdownClose = createEvent(this, "calciteDropdownClose", 6);
1046
+ this.calciteDropdownBeforeOpen = createEvent(this, "calciteDropdownBeforeOpen", 6);
1047
+ this.calciteDropdownOpen = createEvent(this, "calciteDropdownOpen", 6);
1048
+ this.items = [];
1049
+ this.groups = [];
1050
+ this.mutationObserver = createObserver("mutation", () => this.updateItems());
1051
+ this.resizeObserver = createObserver("resize", (entries) => this.resizeObserverCallback(entries));
1052
+ this.openTransitionProp = "opacity";
1053
+ this.guid = `calcite-dropdown-${guid()}`;
1054
+ this.defaultAssignedElements = [];
1055
+ //--------------------------------------------------------------------------
1056
+ //
1057
+ // Private Methods
1058
+ //
1059
+ //--------------------------------------------------------------------------
1060
+ this.slotChangeHandler = (event) => {
1061
+ this.defaultAssignedElements = event.target.assignedElements({
1062
+ flatten: true,
1063
+ });
1064
+ this.updateItems();
1065
+ };
1066
+ this.setFilteredPlacements = () => {
1067
+ const { el, flipPlacements } = this;
1068
+ this.filteredFlipPlacements = flipPlacements
1069
+ ? filterComputedPlacements(flipPlacements, el)
1070
+ : null;
1071
+ };
1072
+ this.updateTriggers = (event) => {
1073
+ this.triggers = event.target.assignedElements({
1074
+ flatten: true,
1075
+ });
1076
+ this.reposition(true);
1077
+ };
1078
+ this.updateItems = () => {
1079
+ this.items = this.groups
1080
+ .map((group) => Array.from(group === null || group === void 0 ? void 0 : group.querySelectorAll("calcite-dropdown-item")))
1081
+ .reduce((previousValue, currentValue) => [...previousValue, ...currentValue], []);
1082
+ this.updateSelectedItems();
1083
+ this.reposition(true);
1084
+ };
1085
+ this.updateGroups = (event) => {
1086
+ const groups = event.target
1087
+ .assignedElements({ flatten: true })
1088
+ .filter((el) => el === null || el === void 0 ? void 0 : el.matches("calcite-dropdown-group"));
1089
+ this.groups = groups;
1090
+ this.updateItems();
1091
+ };
1092
+ this.resizeObserverCallback = (entries) => {
1093
+ entries.forEach((entry) => {
1094
+ const { target } = entry;
1095
+ if (target === this.referenceEl) {
1096
+ this.setDropdownWidth();
1097
+ }
1098
+ else if (target === this.scrollerEl) {
1099
+ this.setMaxScrollerHeight();
1100
+ }
1101
+ });
1102
+ };
1103
+ this.setDropdownWidth = () => {
1104
+ const { referenceEl, scrollerEl } = this;
1105
+ const referenceElWidth = referenceEl === null || referenceEl === void 0 ? void 0 : referenceEl.clientWidth;
1106
+ if (!referenceElWidth || !scrollerEl) {
1107
+ return;
1108
+ }
1109
+ scrollerEl.style.minWidth = `${referenceElWidth}px`;
1110
+ };
1111
+ this.setMaxScrollerHeight = () => {
1112
+ const { scrollerEl } = this;
1113
+ if (!scrollerEl) {
1114
+ return;
1115
+ }
1116
+ this.reposition(true);
1117
+ const maxScrollerHeight = this.getMaxScrollerHeight();
1118
+ scrollerEl.style.maxHeight = maxScrollerHeight > 0 ? `${maxScrollerHeight}px` : "";
1119
+ this.reposition(true);
1120
+ };
1121
+ this.setScrollerAndTransitionEl = (el) => {
1122
+ this.resizeObserver.observe(el);
1123
+ this.scrollerEl = el;
1124
+ this.transitionEl = el;
1125
+ };
1126
+ this.setReferenceEl = (el) => {
1127
+ this.referenceEl = el;
1128
+ connectFloatingUI(this, this.referenceEl, this.floatingEl);
1129
+ this.resizeObserver.observe(el);
1130
+ };
1131
+ this.setFloatingEl = (el) => {
1132
+ this.floatingEl = el;
1133
+ connectFloatingUI(this, this.referenceEl, this.floatingEl);
1134
+ };
1135
+ this.keyDownHandler = (event) => {
1136
+ const target = event.target;
1137
+ if (target !== this.referenceEl) {
1138
+ return;
1139
+ }
1140
+ const { defaultPrevented, key } = event;
1141
+ if (defaultPrevented) {
1142
+ return;
1143
+ }
1144
+ if (this.open) {
1145
+ if (key === "Escape") {
1146
+ this.closeCalciteDropdown();
1147
+ event.preventDefault();
1148
+ return;
1149
+ }
1150
+ else if (event.shiftKey && key === "Tab") {
1151
+ this.closeCalciteDropdown();
1152
+ event.preventDefault();
1153
+ return;
1154
+ }
1155
+ }
1156
+ if (isActivationKey(key)) {
1157
+ this.openCalciteDropdown();
1158
+ event.preventDefault();
1159
+ }
1160
+ else if (key === "Escape") {
1161
+ this.closeCalciteDropdown();
1162
+ event.preventDefault();
1163
+ }
1164
+ };
1165
+ this.focusOnFirstActiveOrFirstItem = () => {
1166
+ this.getFocusableElement(this.items.find((item) => item.selected) || this.items[0]);
1167
+ };
1168
+ this.toggleOpenEnd = () => {
1169
+ this.focusOnFirstActiveOrFirstItem();
1170
+ this.el.removeEventListener("calciteDropdownOpen", this.toggleOpenEnd);
1171
+ };
1172
+ this.openCalciteDropdown = () => {
1173
+ this.open = !this.open;
1174
+ if (this.open) {
1175
+ this.el.addEventListener("calciteDropdownOpen", this.toggleOpenEnd);
1176
+ }
1177
+ };
1178
+ this.open = false;
1179
+ this.closeOnSelectDisabled = false;
1180
+ this.disabled = false;
1181
+ this.flipPlacements = undefined;
1182
+ this.maxItems = 0;
1183
+ this.overlayPositioning = "absolute";
1184
+ this.placement = defaultMenuPlacement;
1185
+ this.scale = "m";
1186
+ this.selectedItems = [];
1187
+ this.type = "click";
1188
+ this.width = undefined;
1189
+ }
1190
+ openHandler(value) {
1191
+ if (!this.disabled) {
1192
+ if (value) {
1193
+ this.reposition(true);
1194
+ }
1195
+ onToggleOpenCloseComponent(this);
1196
+ return;
1197
+ }
1198
+ this.open = false;
1199
+ }
1200
+ handleDisabledChange(value) {
1201
+ if (!value) {
1202
+ this.open = false;
1203
+ }
1204
+ }
1205
+ flipPlacementsHandler() {
1206
+ this.setFilteredPlacements();
1207
+ this.reposition(true);
1208
+ }
1209
+ maxItemsHandler() {
1210
+ this.setMaxScrollerHeight();
1211
+ }
1212
+ overlayPositioningHandler() {
1213
+ this.reposition(true);
1214
+ }
1215
+ placementHandler() {
1216
+ this.reposition(true);
1217
+ }
1218
+ //--------------------------------------------------------------------------
1219
+ //
1220
+ // Public Methods
1221
+ //
1222
+ //--------------------------------------------------------------------------
1223
+ /** Sets focus on the component's first focusable element. */
1224
+ async setFocus() {
1225
+ await componentFocusable(this);
1226
+ this.el.focus();
1227
+ }
1228
+ //--------------------------------------------------------------------------
1229
+ //
1230
+ // Lifecycle
1231
+ //
1232
+ //--------------------------------------------------------------------------
1233
+ connectedCallback() {
1234
+ var _a;
1235
+ (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.observe(this.el, { childList: true, subtree: true });
1236
+ this.setFilteredPlacements();
1237
+ this.reposition(true);
1238
+ if (this.open) {
1239
+ this.openHandler(this.open);
1240
+ onToggleOpenCloseComponent(this);
1241
+ }
1242
+ connectInteractive(this);
1243
+ }
1244
+ componentWillLoad() {
1245
+ setUpLoadableComponent(this);
1246
+ }
1247
+ componentDidLoad() {
1248
+ setComponentLoaded(this);
1249
+ this.reposition(true);
1250
+ }
1251
+ componentDidRender() {
1252
+ updateHostInteraction(this);
1253
+ }
1254
+ disconnectedCallback() {
1255
+ var _a, _b;
1256
+ (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
1257
+ (_b = this.resizeObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
1258
+ disconnectInteractive(this);
1259
+ disconnectFloatingUI(this, this.referenceEl, this.floatingEl);
1260
+ }
1261
+ render() {
1262
+ const { open, guid } = this;
1263
+ return (h(Host, null, h("div", { class: "calcite-trigger-container", id: `${guid}-menubutton`, onClick: this.openCalciteDropdown, onKeyDown: this.keyDownHandler,
1264
+ // eslint-disable-next-line react/jsx-sort-props
1265
+ ref: this.setReferenceEl }, h("slot", { "aria-controls": `${guid}-menu`, "aria-expanded": toAriaBoolean(open), "aria-haspopup": "menu", name: SLOTS.dropdownTrigger, onSlotchange: this.updateTriggers })), h("div", { "aria-hidden": toAriaBoolean(!open), class: "calcite-dropdown-wrapper",
1266
+ // eslint-disable-next-line react/jsx-sort-props
1267
+ ref: this.setFloatingEl }, h("div", { "aria-labelledby": `${guid}-menubutton`, class: {
1268
+ ["calcite-dropdown-content"]: true,
1269
+ [FloatingCSS.animation]: true,
1270
+ [FloatingCSS.animationActive]: open,
1271
+ }, id: `${guid}-menu`, role: "menu",
1272
+ // eslint-disable-next-line react/jsx-sort-props
1273
+ ref: this.setScrollerAndTransitionEl }, h("slot", { onSlotchange: this.updateGroups })))));
1274
+ }
1275
+ //--------------------------------------------------------------------------
1276
+ //
1277
+ // Public Methods
1278
+ //
1279
+ //--------------------------------------------------------------------------
1280
+ /**
1281
+ * Updates the position of the component.
1282
+ *
1283
+ * @param delayed
1284
+ */
1285
+ async reposition(delayed = false) {
1286
+ const { floatingEl, referenceEl, placement, overlayPositioning, filteredFlipPlacements } = this;
1287
+ return reposition(this, {
1288
+ floatingEl,
1289
+ referenceEl,
1290
+ overlayPositioning,
1291
+ placement,
1292
+ flipPlacements: filteredFlipPlacements,
1293
+ type: "menu",
1294
+ }, delayed);
1295
+ }
1296
+ closeCalciteDropdownOnClick(event) {
1297
+ if (this.disabled ||
1298
+ !isPrimaryPointerButton(event) ||
1299
+ !this.open ||
1300
+ event.composedPath().includes(this.el)) {
1301
+ return;
1302
+ }
1303
+ this.closeCalciteDropdown(false);
1304
+ }
1305
+ closeCalciteDropdownOnEvent(event) {
1306
+ this.closeCalciteDropdown();
1307
+ event.stopPropagation();
1308
+ }
1309
+ closeCalciteDropdownOnOpenEvent(event) {
1310
+ if (event.composedPath().includes(this.el)) {
1311
+ return;
1312
+ }
1313
+ this.open = false;
1314
+ }
1315
+ pointerEnterHandler() {
1316
+ if (this.disabled || this.type !== "hover") {
1317
+ return;
1318
+ }
1319
+ this.openCalciteDropdown();
1320
+ }
1321
+ pointerLeaveHandler() {
1322
+ if (this.disabled || this.type !== "hover") {
1323
+ return;
1324
+ }
1325
+ this.closeCalciteDropdown();
1326
+ }
1327
+ calciteInternalDropdownItemKeyEvent(event) {
1328
+ const { keyboardEvent } = event.detail;
1329
+ const target = keyboardEvent.target;
1330
+ switch (keyboardEvent.key) {
1331
+ case "Tab":
1332
+ if (this.items.indexOf(target) === this.items.length - 1 && !keyboardEvent.shiftKey) {
1333
+ this.closeCalciteDropdown();
1334
+ }
1335
+ else if (this.items.indexOf(target) === 0 && keyboardEvent.shiftKey) {
1336
+ this.closeCalciteDropdown();
1337
+ }
1338
+ break;
1339
+ case "ArrowDown":
1340
+ focusElementInGroup(this.items, target, "next");
1341
+ break;
1342
+ case "ArrowUp":
1343
+ focusElementInGroup(this.items, target, "previous");
1344
+ break;
1345
+ case "Home":
1346
+ focusElementInGroup(this.items, target, "first");
1347
+ break;
1348
+ case "End":
1349
+ focusElementInGroup(this.items, target, "last");
1350
+ break;
1351
+ }
1352
+ event.stopPropagation();
1353
+ }
1354
+ handleItemSelect(event) {
1355
+ this.updateSelectedItems();
1356
+ event.stopPropagation();
1357
+ this.calciteDropdownSelect.emit();
1358
+ if (!this.closeOnSelectDisabled ||
1359
+ event.detail.requestedDropdownGroup.selectionMode === "none") {
1360
+ this.closeCalciteDropdown();
1361
+ }
1362
+ event.stopPropagation();
1363
+ }
1364
+ onBeforeOpen() {
1365
+ this.calciteDropdownBeforeOpen.emit();
1366
+ }
1367
+ onOpen() {
1368
+ this.calciteDropdownOpen.emit();
1369
+ }
1370
+ onBeforeClose() {
1371
+ this.calciteDropdownBeforeClose.emit();
1372
+ }
1373
+ onClose() {
1374
+ this.calciteDropdownClose.emit();
1375
+ }
1376
+ updateSelectedItems() {
1377
+ this.selectedItems = this.items.filter((item) => item.selected);
1378
+ }
1379
+ getMaxScrollerHeight() {
1380
+ const { maxItems, items } = this;
1381
+ let itemsToProcess = 0;
1382
+ let maxScrollerHeight = 0;
1383
+ let groupHeaderHeight;
1384
+ this.groups.forEach((group) => {
1385
+ if (maxItems > 0 && itemsToProcess < maxItems) {
1386
+ Array.from(group.children).forEach((item, index) => {
1387
+ if (index === 0) {
1388
+ if (isNaN(groupHeaderHeight)) {
1389
+ groupHeaderHeight = item.offsetTop;
1390
+ }
1391
+ maxScrollerHeight += groupHeaderHeight;
1392
+ }
1393
+ if (itemsToProcess < maxItems) {
1394
+ maxScrollerHeight += item.offsetHeight;
1395
+ itemsToProcess += 1;
1396
+ }
1397
+ });
1398
+ }
1399
+ });
1400
+ return items.length > maxItems ? maxScrollerHeight : 0;
1401
+ }
1402
+ closeCalciteDropdown(focusTrigger = true) {
1403
+ this.open = false;
1404
+ if (focusTrigger) {
1405
+ focusElement(this.triggers[0]);
1406
+ }
1407
+ }
1408
+ getFocusableElement(item) {
1409
+ if (!item) {
1410
+ return;
1411
+ }
1412
+ const target = item.attributes.isLink
1413
+ ? item.shadowRoot.querySelector("a")
1414
+ : item;
1415
+ focusElement(target);
1416
+ }
1417
+ static get delegatesFocus() { return true; }
1418
+ get el() { return getElement(this); }
1419
+ static get watchers() { return {
1420
+ "open": ["openHandler"],
1421
+ "disabled": ["handleDisabledChange"],
1422
+ "flipPlacements": ["flipPlacementsHandler"],
1423
+ "maxItems": ["maxItemsHandler"],
1424
+ "overlayPositioning": ["overlayPositioningHandler"],
1425
+ "placement": ["placementHandler"]
1426
+ }; }
1427
+ };
1428
1428
  Dropdown.style = dropdownCss;
1429
1429
 
1430
1430
  /*!
@@ -1440,57 +1440,57 @@ const CSS$1 = {
1440
1440
 
1441
1441
  const dropdownGroupCss = ":host{position:relative;display:block}.container{text-align:start}.container--s{font-size:var(--calcite-font-size--2);line-height:1rem}.container--s .dropdown-title{padding:0.5rem}.container--m{font-size:var(--calcite-font-size--1);line-height:1rem}.container--m .dropdown-title{padding:0.75rem}.container--l{font-size:var(--calcite-font-size-0);line-height:1.25rem}.container--l .dropdown-title{padding:1rem}.dropdown-title{margin-block-end:-1px;display:block;cursor:default;overflow-wrap:break-word;border-width:0px;border-block-end-width:1px;border-style:solid;border-color:var(--calcite-ui-border-3);font-weight:var(--calcite-font-weight-bold);color:var(--calcite-ui-text-2)}.dropdown-separator{display:block;block-size:1px;background-color:var(--calcite-ui-border-3)}:host([hidden]){display:none}[hidden]{display:none}";
1442
1442
 
1443
- const DropdownGroup = class {
1444
- constructor(hostRef) {
1445
- registerInstance(this, hostRef);
1446
- this.calciteInternalDropdownItemChange = createEvent(this, "calciteInternalDropdownItemChange", 6);
1447
- this.groupTitle = undefined;
1448
- this.selectionMode = "single";
1449
- this.scale = undefined;
1450
- }
1451
- //--------------------------------------------------------------------------
1452
- //
1453
- // Lifecycle
1454
- //
1455
- //--------------------------------------------------------------------------
1456
- componentWillLoad() {
1457
- this.groupPosition = this.getGroupPosition();
1458
- }
1459
- render() {
1460
- const scale = this.scale || getElementProp(this.el, "scale", "m");
1461
- const groupTitle = this.groupTitle ? (h("span", { "aria-hidden": "true", class: "dropdown-title" }, this.groupTitle)) : null;
1462
- const dropdownSeparator = this.groupPosition > 0 ? h("div", { class: "dropdown-separator", role: "separator" }) : null;
1463
- return (h(Host, { "aria-label": this.groupTitle, role: "group" }, h("div", { class: {
1464
- container: true,
1465
- [CSS$1.containerSmall]: scale === "s",
1466
- [CSS$1.containerMedium]: scale === "m",
1467
- [CSS$1.containerLarge]: scale === "l",
1468
- }, title: this.groupTitle }, dropdownSeparator, groupTitle, h("slot", null))));
1469
- }
1470
- //--------------------------------------------------------------------------
1471
- //
1472
- // Event Listeners
1473
- //
1474
- //--------------------------------------------------------------------------
1475
- updateActiveItemOnChange(event) {
1476
- this.requestedDropdownGroup = event.detail.requestedDropdownGroup;
1477
- this.requestedDropdownItem = event.detail.requestedDropdownItem;
1478
- this.calciteInternalDropdownItemChange.emit({
1479
- requestedDropdownGroup: this.requestedDropdownGroup,
1480
- requestedDropdownItem: this.requestedDropdownItem,
1481
- });
1482
- }
1483
- //--------------------------------------------------------------------------
1484
- //
1485
- // Private Methods
1486
- //
1487
- //--------------------------------------------------------------------------
1488
- getGroupPosition() {
1489
- return Array.prototype.indexOf.call(this.el.parentElement.querySelectorAll("calcite-dropdown-group"), this.el);
1490
- }
1491
- static get delegatesFocus() { return true; }
1492
- get el() { return getElement(this); }
1493
- };
1443
+ const DropdownGroup = class {
1444
+ constructor(hostRef) {
1445
+ registerInstance(this, hostRef);
1446
+ this.calciteInternalDropdownItemChange = createEvent(this, "calciteInternalDropdownItemChange", 6);
1447
+ this.groupTitle = undefined;
1448
+ this.selectionMode = "single";
1449
+ this.scale = undefined;
1450
+ }
1451
+ //--------------------------------------------------------------------------
1452
+ //
1453
+ // Lifecycle
1454
+ //
1455
+ //--------------------------------------------------------------------------
1456
+ componentWillLoad() {
1457
+ this.groupPosition = this.getGroupPosition();
1458
+ }
1459
+ render() {
1460
+ const scale = this.scale || getElementProp(this.el, "scale", "m");
1461
+ const groupTitle = this.groupTitle ? (h("span", { "aria-hidden": "true", class: "dropdown-title" }, this.groupTitle)) : null;
1462
+ const dropdownSeparator = this.groupPosition > 0 ? h("div", { class: "dropdown-separator", role: "separator" }) : null;
1463
+ return (h(Host, { "aria-label": this.groupTitle, role: "group" }, h("div", { class: {
1464
+ container: true,
1465
+ [CSS$1.containerSmall]: scale === "s",
1466
+ [CSS$1.containerMedium]: scale === "m",
1467
+ [CSS$1.containerLarge]: scale === "l",
1468
+ }, title: this.groupTitle }, dropdownSeparator, groupTitle, h("slot", null))));
1469
+ }
1470
+ //--------------------------------------------------------------------------
1471
+ //
1472
+ // Event Listeners
1473
+ //
1474
+ //--------------------------------------------------------------------------
1475
+ updateActiveItemOnChange(event) {
1476
+ this.requestedDropdownGroup = event.detail.requestedDropdownGroup;
1477
+ this.requestedDropdownItem = event.detail.requestedDropdownItem;
1478
+ this.calciteInternalDropdownItemChange.emit({
1479
+ requestedDropdownGroup: this.requestedDropdownGroup,
1480
+ requestedDropdownItem: this.requestedDropdownItem,
1481
+ });
1482
+ }
1483
+ //--------------------------------------------------------------------------
1484
+ //
1485
+ // Private Methods
1486
+ //
1487
+ //--------------------------------------------------------------------------
1488
+ getGroupPosition() {
1489
+ return Array.prototype.indexOf.call(this.el.parentElement.querySelectorAll("calcite-dropdown-group"), this.el);
1490
+ }
1491
+ static get delegatesFocus() { return true; }
1492
+ get el() { return getElement(this); }
1493
+ };
1494
1494
  DropdownGroup.style = dropdownGroupCss;
1495
1495
 
1496
1496
  /*!
@@ -1515,376 +1515,376 @@ const CSS = {
1515
1515
 
1516
1516
  const dropdownItemCss = ".container--s{padding-block:0.25rem;font-size:var(--calcite-font-size--2);line-height:1rem;padding-inline-end:0.5rem;padding-inline-start:1.5rem}.container--m{padding-block:0.5rem;font-size:var(--calcite-font-size--1);line-height:1rem;padding-inline-end:0.75rem;padding-inline-start:2rem}.container--l{padding-block:0.625rem;font-size:var(--calcite-font-size-0);line-height:1.25rem;padding-inline-end:1rem;padding-inline-start:2.5rem}.container--s.container--none-selection{padding-inline-start:0.25rem}.container--s.container--none-selection .dropdown-link{padding-inline-start:0px}.container--m.container--none-selection{padding-inline-start:0.5rem}.container--m.container--none-selection .dropdown-link{padding-inline-start:0px}.container--l.container--none-selection{padding-inline-start:0.75rem}.container--l.container--none-selection .dropdown-link{padding-inline-start:0px}:host{position:relative;display:flex;flex-grow:1;align-items:center}.container{position:relative;display:flex;flex-grow:1;cursor:pointer;align-items:center;color:var(--calcite-ui-text-3);-webkit-text-decoration-line:none;text-decoration-line:none;transition-duration:150ms;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);text-align:start}.dropdown-item-content{flex:1 1 auto;padding-block:0.125rem;padding-inline-end:auto;padding-inline-start:0.25rem}:host,.container--link a{outline-color:transparent}:host(:focus){outline:2px solid transparent;outline-offset:2px;outline:2px solid var(--calcite-ui-focus-color, var(--calcite-ui-brand));outline-offset:calc(\n -2px *\n calc(\n 1 -\n 2 * clamp(\n 0,\n var(--calcite-ui-focus-offset-invert),\n 1\n )\n )\n )}.container--link{padding:0px}.container--link a{position:relative;display:flex;flex-grow:1;cursor:pointer;align-items:center;color:var(--calcite-ui-text-3);-webkit-text-decoration-line:none;text-decoration-line:none;transition-duration:150ms;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1)}.container--s .dropdown-link{padding-block:0.25rem;font-size:var(--calcite-font-size--2);line-height:1rem;padding-inline-end:0.5rem;padding-inline-start:1.5rem}.container--m .dropdown-link{padding-block:0.5rem;font-size:var(--calcite-font-size--1);line-height:1rem;padding-inline-end:0.75rem;padding-inline-start:2rem}.container--l .dropdown-link{padding-block:0.75rem;font-size:var(--calcite-font-size-0);line-height:1.25rem;padding-inline-end:1rem;padding-inline-start:2.5rem}:host(:hover) .container,:host(:active) .container{background-color:var(--calcite-ui-foreground-2);color:var(--calcite-ui-text-1);-webkit-text-decoration-line:none;text-decoration-line:none}:host(:hover) .container--link .dropdown-link,:host(:active) .container--link .dropdown-link{color:var(--calcite-ui-text-1)}:host(:focus) .container{color:var(--calcite-ui-text-1);-webkit-text-decoration-line:none;text-decoration-line:none}:host(:active) .container{background-color:var(--calcite-ui-foreground-3)}:host(:hover) .container:before,:host(:active) .container:before,:host(:focus) .container:before{opacity:1}:host([selected]) .container:not(.container--none-selection),:host([selected]) .container--link .dropdown-link{font-weight:var(--calcite-font-weight-medium);color:var(--calcite-ui-text-1)}:host([selected]) .container:not(.container--none-selection):before,:host([selected]) .container--link .dropdown-link:before{opacity:1;color:var(--calcite-ui-brand)}:host([selected]) .container:not(.container--none-selection) calcite-icon,:host([selected]) .container--link .dropdown-link calcite-icon{color:var(--calcite-ui-brand)}.container--multi-selection:before,.container--none-selection:before{display:none}.container--s:before{inset-inline-start:0.5rem}.container--m:before{inset-inline-start:0.75rem}.container--l:before{inset-inline-start:1rem}.dropdown-item-icon{position:absolute;opacity:0;transition-duration:150ms;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transform:scale(0.9)}.container--s .dropdown-item-icon{inset-inline-start:0.25rem}.container--m .dropdown-item-icon{inset-inline-start:0.5rem}.container--l .dropdown-item-icon{inset-inline-start:0.75rem}:host(:hover) .dropdown-item-icon{color:var(--calcite-ui-border-1);opacity:1}:host([selected]) .dropdown-item-icon{color:var(--calcite-ui-brand);opacity:1}.container--s .dropdown-item-icon-start{margin-inline-end:0.5rem;margin-inline-start:0.25rem}.container--s .dropdown-item-icon-end{margin-inline-start:0.5rem}.container--m .dropdown-item-icon-start{margin-inline-end:0.75rem;margin-inline-start:0.25rem}.container--m .dropdown-item-icon-end{margin-inline-start:0.75rem}.container--l .dropdown-item-icon-start{margin-inline-end:1rem;margin-inline-start:0.25rem}.container--l .dropdown-item-icon-end{margin-inline-start:1rem}:host([hidden]){display:none}[hidden]{display:none}";
1517
1517
 
1518
- const DropdownItem = class {
1519
- constructor(hostRef) {
1520
- registerInstance(this, hostRef);
1521
- this.calciteDropdownItemSelect = createEvent(this, "calciteDropdownItemSelect", 6);
1522
- this.calciteInternalDropdownItemSelect = createEvent(this, "calciteInternalDropdownItemSelect", 6);
1523
- this.calciteInternalDropdownItemKeyEvent = createEvent(this, "calciteInternalDropdownItemKeyEvent", 6);
1524
- this.calciteInternalDropdownCloseRequest = createEvent(this, "calciteInternalDropdownCloseRequest", 6);
1525
- /** Specifies the scale of dropdown-item controlled by the parent, defaults to m */
1526
- this.scale = "m";
1527
- this.selected = false;
1528
- this.iconFlipRtl = undefined;
1529
- this.iconStart = undefined;
1530
- this.iconEnd = undefined;
1531
- this.href = undefined;
1532
- this.label = undefined;
1533
- this.rel = undefined;
1534
- this.target = undefined;
1535
- }
1536
- //--------------------------------------------------------------------------
1537
- //
1538
- // Public Methods
1539
- //
1540
- //--------------------------------------------------------------------------
1541
- /** Sets focus on the component. */
1542
- async setFocus() {
1543
- var _a;
1544
- await componentFocusable(this);
1545
- (_a = this.el) === null || _a === void 0 ? void 0 : _a.focus();
1546
- }
1547
- //--------------------------------------------------------------------------
1548
- //
1549
- // Lifecycle
1550
- //
1551
- //--------------------------------------------------------------------------
1552
- componentWillLoad() {
1553
- setUpLoadableComponent(this);
1554
- this.initialize();
1555
- }
1556
- componentDidLoad() {
1557
- setComponentLoaded(this);
1558
- }
1559
- connectedCallback() {
1560
- this.initialize();
1561
- }
1562
- render() {
1563
- const scale = getElementProp(this.el, "scale", this.scale);
1564
- const { href, selectionMode, label, iconFlipRtl } = this;
1565
- const iconStartEl = (h("calcite-icon", { class: CSS.iconStart, flipRtl: iconFlipRtl === "start" || iconFlipRtl === "both", icon: this.iconStart, scale: scale === "l" ? "m" : "s" }));
1566
- const contentNode = (h("span", { class: CSS.itemContent }, h("slot", null)));
1567
- const iconEndEl = (h("calcite-icon", { class: CSS.iconEnd, flipRtl: iconFlipRtl === "end" || iconFlipRtl === "both", icon: this.iconEnd, scale: scale === "l" ? "m" : "s" }));
1568
- const slottedContent = this.iconStart && this.iconEnd
1569
- ? [iconStartEl, contentNode, iconEndEl]
1570
- : this.iconStart
1571
- ? [iconStartEl, contentNode]
1572
- : this.iconEnd
1573
- ? [contentNode, iconEndEl]
1574
- : contentNode;
1575
- const contentEl = !href ? (slottedContent) : (h("a", { "aria-label": label, class: CSS.link, href: href, rel: this.rel, tabIndex: -1, target: this.target,
1576
- // eslint-disable-next-line react/jsx-sort-props
1577
- ref: (el) => (this.childLink = el) }, slottedContent));
1578
- const itemRole = href
1579
- ? null
1580
- : selectionMode === "single"
1581
- ? "menuitemradio"
1582
- : selectionMode === "multiple"
1583
- ? "menuitemcheckbox"
1584
- : "menuitem";
1585
- const itemAria = selectionMode !== "none" ? toAriaBoolean(this.selected) : null;
1586
- return (h(Host, { "aria-checked": itemAria, "aria-label": !href ? label : "", role: itemRole, tabindex: "0" }, h("div", { class: {
1587
- container: true,
1588
- [CSS.containerLink]: !!href,
1589
- [CSS.containerSmall]: scale === "s",
1590
- [CSS.containerMedium]: scale === "m",
1591
- [CSS.containerLarge]: scale === "l",
1592
- [CSS.containerMulti]: selectionMode === "multiple",
1593
- [CSS.containerSingle]: selectionMode === "single",
1594
- [CSS.containerNone]: selectionMode === "none",
1595
- } }, selectionMode !== "none" ? (h("calcite-icon", { class: CSS.icon, icon: selectionMode === "multiple" ? "check" : "bullet-point", scale: scale === "l" ? "m" : "s" })) : null, contentEl)));
1596
- }
1597
- //--------------------------------------------------------------------------
1598
- //
1599
- // Event Listeners
1600
- //
1601
- //--------------------------------------------------------------------------
1602
- onClick() {
1603
- this.emitRequestedItem();
1604
- }
1605
- keyDownHandler(event) {
1606
- switch (event.key) {
1607
- case " ":
1608
- case "Enter":
1609
- this.emitRequestedItem();
1610
- if (this.href) {
1611
- this.childLink.click();
1612
- }
1613
- event.preventDefault();
1614
- break;
1615
- case "Escape":
1616
- this.calciteInternalDropdownCloseRequest.emit();
1617
- event.preventDefault();
1618
- break;
1619
- case "Tab":
1620
- this.calciteInternalDropdownItemKeyEvent.emit({ keyboardEvent: event });
1621
- break;
1622
- case "ArrowUp":
1623
- case "ArrowDown":
1624
- case "Home":
1625
- case "End":
1626
- event.preventDefault();
1627
- this.calciteInternalDropdownItemKeyEvent.emit({ keyboardEvent: event });
1628
- break;
1629
- }
1630
- }
1631
- updateActiveItemOnChange(event) {
1632
- const parentEmittedChange = event.composedPath().includes(this.parentDropdownGroupEl);
1633
- if (parentEmittedChange) {
1634
- this.requestedDropdownGroup = event.detail.requestedDropdownGroup;
1635
- this.requestedDropdownItem = event.detail.requestedDropdownItem;
1636
- this.determineActiveItem();
1637
- }
1638
- event.stopPropagation();
1639
- }
1640
- //--------------------------------------------------------------------------
1641
- //
1642
- // Private Methods
1643
- //
1644
- //--------------------------------------------------------------------------
1645
- initialize() {
1646
- this.selectionMode = getElementProp(this.el, "selection-mode", "single");
1647
- this.parentDropdownGroupEl = this.el.closest("calcite-dropdown-group");
1648
- if (this.selectionMode === "none") {
1649
- this.selected = false;
1650
- }
1651
- }
1652
- determineActiveItem() {
1653
- switch (this.selectionMode) {
1654
- case "multiple":
1655
- if (this.el === this.requestedDropdownItem) {
1656
- this.selected = !this.selected;
1657
- }
1658
- break;
1659
- case "single":
1660
- if (this.el === this.requestedDropdownItem) {
1661
- this.selected = true;
1662
- }
1663
- else if (this.requestedDropdownGroup === this.parentDropdownGroupEl) {
1664
- this.selected = false;
1665
- }
1666
- break;
1667
- case "none":
1668
- this.selected = false;
1669
- break;
1670
- }
1671
- }
1672
- emitRequestedItem() {
1673
- this.calciteDropdownItemSelect.emit();
1674
- this.calciteInternalDropdownItemSelect.emit({
1675
- requestedDropdownItem: this.el,
1676
- requestedDropdownGroup: this.parentDropdownGroupEl,
1677
- });
1678
- }
1679
- get el() { return getElement(this); }
1680
- };
1518
+ const DropdownItem = class {
1519
+ constructor(hostRef) {
1520
+ registerInstance(this, hostRef);
1521
+ this.calciteDropdownItemSelect = createEvent(this, "calciteDropdownItemSelect", 6);
1522
+ this.calciteInternalDropdownItemSelect = createEvent(this, "calciteInternalDropdownItemSelect", 6);
1523
+ this.calciteInternalDropdownItemKeyEvent = createEvent(this, "calciteInternalDropdownItemKeyEvent", 6);
1524
+ this.calciteInternalDropdownCloseRequest = createEvent(this, "calciteInternalDropdownCloseRequest", 6);
1525
+ /** Specifies the scale of dropdown-item controlled by the parent, defaults to m */
1526
+ this.scale = "m";
1527
+ this.selected = false;
1528
+ this.iconFlipRtl = undefined;
1529
+ this.iconStart = undefined;
1530
+ this.iconEnd = undefined;
1531
+ this.href = undefined;
1532
+ this.label = undefined;
1533
+ this.rel = undefined;
1534
+ this.target = undefined;
1535
+ }
1536
+ //--------------------------------------------------------------------------
1537
+ //
1538
+ // Public Methods
1539
+ //
1540
+ //--------------------------------------------------------------------------
1541
+ /** Sets focus on the component. */
1542
+ async setFocus() {
1543
+ var _a;
1544
+ await componentFocusable(this);
1545
+ (_a = this.el) === null || _a === void 0 ? void 0 : _a.focus();
1546
+ }
1547
+ //--------------------------------------------------------------------------
1548
+ //
1549
+ // Lifecycle
1550
+ //
1551
+ //--------------------------------------------------------------------------
1552
+ componentWillLoad() {
1553
+ setUpLoadableComponent(this);
1554
+ this.initialize();
1555
+ }
1556
+ componentDidLoad() {
1557
+ setComponentLoaded(this);
1558
+ }
1559
+ connectedCallback() {
1560
+ this.initialize();
1561
+ }
1562
+ render() {
1563
+ const scale = getElementProp(this.el, "scale", this.scale);
1564
+ const { href, selectionMode, label, iconFlipRtl } = this;
1565
+ const iconStartEl = (h("calcite-icon", { class: CSS.iconStart, flipRtl: iconFlipRtl === "start" || iconFlipRtl === "both", icon: this.iconStart, scale: scale === "l" ? "m" : "s" }));
1566
+ const contentNode = (h("span", { class: CSS.itemContent }, h("slot", null)));
1567
+ const iconEndEl = (h("calcite-icon", { class: CSS.iconEnd, flipRtl: iconFlipRtl === "end" || iconFlipRtl === "both", icon: this.iconEnd, scale: scale === "l" ? "m" : "s" }));
1568
+ const slottedContent = this.iconStart && this.iconEnd
1569
+ ? [iconStartEl, contentNode, iconEndEl]
1570
+ : this.iconStart
1571
+ ? [iconStartEl, contentNode]
1572
+ : this.iconEnd
1573
+ ? [contentNode, iconEndEl]
1574
+ : contentNode;
1575
+ const contentEl = !href ? (slottedContent) : (h("a", { "aria-label": label, class: CSS.link, href: href, rel: this.rel, tabIndex: -1, target: this.target,
1576
+ // eslint-disable-next-line react/jsx-sort-props
1577
+ ref: (el) => (this.childLink = el) }, slottedContent));
1578
+ const itemRole = href
1579
+ ? null
1580
+ : selectionMode === "single"
1581
+ ? "menuitemradio"
1582
+ : selectionMode === "multiple"
1583
+ ? "menuitemcheckbox"
1584
+ : "menuitem";
1585
+ const itemAria = selectionMode !== "none" ? toAriaBoolean(this.selected) : null;
1586
+ return (h(Host, { "aria-checked": itemAria, "aria-label": !href ? label : "", role: itemRole, tabindex: "0" }, h("div", { class: {
1587
+ container: true,
1588
+ [CSS.containerLink]: !!href,
1589
+ [CSS.containerSmall]: scale === "s",
1590
+ [CSS.containerMedium]: scale === "m",
1591
+ [CSS.containerLarge]: scale === "l",
1592
+ [CSS.containerMulti]: selectionMode === "multiple",
1593
+ [CSS.containerSingle]: selectionMode === "single",
1594
+ [CSS.containerNone]: selectionMode === "none",
1595
+ } }, selectionMode !== "none" ? (h("calcite-icon", { class: CSS.icon, icon: selectionMode === "multiple" ? "check" : "bullet-point", scale: scale === "l" ? "m" : "s" })) : null, contentEl)));
1596
+ }
1597
+ //--------------------------------------------------------------------------
1598
+ //
1599
+ // Event Listeners
1600
+ //
1601
+ //--------------------------------------------------------------------------
1602
+ onClick() {
1603
+ this.emitRequestedItem();
1604
+ }
1605
+ keyDownHandler(event) {
1606
+ switch (event.key) {
1607
+ case " ":
1608
+ case "Enter":
1609
+ this.emitRequestedItem();
1610
+ if (this.href) {
1611
+ this.childLink.click();
1612
+ }
1613
+ event.preventDefault();
1614
+ break;
1615
+ case "Escape":
1616
+ this.calciteInternalDropdownCloseRequest.emit();
1617
+ event.preventDefault();
1618
+ break;
1619
+ case "Tab":
1620
+ this.calciteInternalDropdownItemKeyEvent.emit({ keyboardEvent: event });
1621
+ break;
1622
+ case "ArrowUp":
1623
+ case "ArrowDown":
1624
+ case "Home":
1625
+ case "End":
1626
+ event.preventDefault();
1627
+ this.calciteInternalDropdownItemKeyEvent.emit({ keyboardEvent: event });
1628
+ break;
1629
+ }
1630
+ }
1631
+ updateActiveItemOnChange(event) {
1632
+ const parentEmittedChange = event.composedPath().includes(this.parentDropdownGroupEl);
1633
+ if (parentEmittedChange) {
1634
+ this.requestedDropdownGroup = event.detail.requestedDropdownGroup;
1635
+ this.requestedDropdownItem = event.detail.requestedDropdownItem;
1636
+ this.determineActiveItem();
1637
+ }
1638
+ event.stopPropagation();
1639
+ }
1640
+ //--------------------------------------------------------------------------
1641
+ //
1642
+ // Private Methods
1643
+ //
1644
+ //--------------------------------------------------------------------------
1645
+ initialize() {
1646
+ this.selectionMode = getElementProp(this.el, "selection-mode", "single");
1647
+ this.parentDropdownGroupEl = this.el.closest("calcite-dropdown-group");
1648
+ if (this.selectionMode === "none") {
1649
+ this.selected = false;
1650
+ }
1651
+ }
1652
+ determineActiveItem() {
1653
+ switch (this.selectionMode) {
1654
+ case "multiple":
1655
+ if (this.el === this.requestedDropdownItem) {
1656
+ this.selected = !this.selected;
1657
+ }
1658
+ break;
1659
+ case "single":
1660
+ if (this.el === this.requestedDropdownItem) {
1661
+ this.selected = true;
1662
+ }
1663
+ else if (this.requestedDropdownGroup === this.parentDropdownGroupEl) {
1664
+ this.selected = false;
1665
+ }
1666
+ break;
1667
+ case "none":
1668
+ this.selected = false;
1669
+ break;
1670
+ }
1671
+ }
1672
+ emitRequestedItem() {
1673
+ this.calciteDropdownItemSelect.emit();
1674
+ this.calciteInternalDropdownItemSelect.emit({
1675
+ requestedDropdownItem: this.el,
1676
+ requestedDropdownGroup: this.parentDropdownGroupEl,
1677
+ });
1678
+ }
1679
+ get el() { return getElement(this); }
1680
+ };
1681
1681
  DropdownItem.style = dropdownItemCss;
1682
1682
 
1683
1683
  const mapLayerPickerCss = ":host{display:block}.map-layer-picker-container{width:100%}.map-layer-picker{position:relative;width:100%;display:inline-block}.padding-bottom-1{padding-bottom:1rem}.layer-picker-dropdown{height:100%;width:100%}.max-width-350{max-width:350px}";
1684
1684
 
1685
- const MapLayerPicker = class {
1686
- constructor(hostRef) {
1687
- registerInstance(this, hostRef);
1688
- this.layerSelectionChange = createEvent(this, "layerSelectionChange", 7);
1689
- this.appearance = "transparent";
1690
- this.enabledLayerIds = [];
1691
- this.enabledTableIds = [];
1692
- this.mapView = undefined;
1693
- this.placeholderIcon = "";
1694
- this.selectedIds = [];
1695
- this.scale = "m";
1696
- this.showTables = true;
1697
- this.type = "select";
1698
- this.ids = [];
1699
- this.selectedName = "";
1700
- }
1701
- //--------------------------------------------------------------------------
1702
- //
1703
- // Watch handlers
1704
- //
1705
- //--------------------------------------------------------------------------
1706
- /**
1707
- * Called each time the mapView prop is changed.
1708
- *
1709
- */
1710
- async mapViewWatchHandler() {
1711
- await this._setLayers();
1712
- const hasLayers = Object.keys(state.layerNameHash).length > 0;
1713
- const hasTables = Object.keys(state.tableNameHash).length > 0 && this.showTables;
1714
- if (hasLayers || hasTables) {
1715
- this._setSelectedLayer(this.ids[0], hasLayers ? "layer" : "table");
1716
- }
1717
- }
1718
- //--------------------------------------------------------------------------
1719
- //
1720
- // Functions (lifecycle)
1721
- //
1722
- //--------------------------------------------------------------------------
1723
- /**
1724
- * StencilJS: Called once just after the component is first connected to the DOM.
1725
- */
1726
- async componentWillLoad() {
1727
- await this._setLayers();
1728
- if (this.ids.length > 0 || this.selectedIds.length === 1) {
1729
- this.layerSelectionChange.emit(this.selectedIds.length === 1 ? [this.selectedIds[0]] : [this.ids[0]]);
1730
- }
1731
- }
1732
- /**
1733
- * Renders the component.
1734
- */
1735
- render() {
1736
- return (h(Host, null, h("div", { class: "map-layer-picker-container" }, h("div", { class: "map-layer-picker" }, this.type === "combobox" ? this._getCombobox() :
1737
- this.type === "select" ? this._getSelect() : this._getDropdown()))));
1738
- }
1739
- /**
1740
- * StencilJS: Called once just after the component is fully loaded and the first render() occurs.
1741
- */
1742
- async componentDidLoad() {
1743
- if (this.ids.length > 0 || this.selectedIds.length === 1) {
1744
- const id = this.selectedIds.length === 1 ? this.selectedIds[0] : this.ids[0];
1745
- if (this.type === "select") {
1746
- this._layerElement.value = id;
1747
- }
1748
- else if (this.type === "dropdown") {
1749
- this.selectedName = Object.keys(state.layerNameHash).indexOf(id) > -1 ?
1750
- state.layerNameHash[id] : Object.keys(state.tableNameHash).indexOf(id) > -1 ?
1751
- state.tableNameHash[id] : "";
1752
- }
1753
- }
1754
- }
1755
- //--------------------------------------------------------------------------
1756
- //
1757
- // Functions (protected)
1758
- //
1759
- //--------------------------------------------------------------------------
1760
- /**
1761
- * Create a list of layers from the map
1762
- *
1763
- * Used for selecting a single layer.
1764
- *
1765
- * @returns Calcite Select component with the ids of the layers from the map
1766
- */
1767
- _getSelect() {
1768
- return (h("calcite-select", { label: "", onCalciteSelectChange: () => this._layerSelectionChange(), ref: (el) => { this._layerElement = el; }, scale: this.scale }, this._getMapLayerOptions()));
1769
- }
1770
- /**
1771
- * Create a list of layer ids from the map
1772
- *
1773
- * Used for selecting multiple layers
1774
- *
1775
- * @returns Calcite ComboBox component with the ids of the layers from the map
1776
- */
1777
- _getCombobox() {
1778
- return (h("calcite-combobox", { clearDisabled: true, label: "", onCalciteComboboxChange: () => this._layerSelectionChange(), "placeholder-icon": this.placeholderIcon, ref: (el) => { this._layerElement = el; }, scale: this.scale, "selection-mode": "single" }, this._getMapLayerOptions()));
1779
- }
1780
- /**
1781
- * Hydrate a dropdown component with items to display the layer names
1782
- *
1783
- * @returns Array of Dropdown items with layer names
1784
- */
1785
- _getDropdown() {
1786
- return (h("calcite-dropdown", { class: "layer-picker-dropdown" }, h("calcite-action", { slot: "trigger", text: "" }, h("calcite-button", { alignment: "icon-end-space-between", appearance: this.appearance, class: "max-width-350", iconEnd: "chevron-down", iconStart: "layers", kind: "neutral", width: "full" }, h("div", null, this.selectedName))), h("calcite-dropdown-group", { "selection-mode": "single" }, this._getMapLayerOptions())));
1787
- }
1788
- /**
1789
- * Get the appropriate type of dom nodes for each valid layer or table
1790
- *
1791
- * @returns Array of dom nodes with the names of the layers and optionally of the tables
1792
- */
1793
- _getMapLayerOptions() {
1794
- return this.ids.reduce((prev, cur) => {
1795
- if (this._validLayer(cur)) {
1796
- prev.push(this._getItem(cur, "layer"));
1797
- }
1798
- else if (this._validTable(cur)) {
1799
- prev.push(this._getItem(cur, "table"));
1800
- }
1801
- return prev;
1802
- }, []);
1803
- }
1804
- /**
1805
- * Get the appropriate type of dom node for the current layer or table id
1806
- *
1807
- * @returns A dom node with the name of the layer or table
1808
- */
1809
- _getItem(id, itemType) {
1810
- const name = itemType === "layer" ? state.layerNameHash[id] : state.tableNameHash[id];
1811
- return this.type === "combobox" ? (h("calcite-combobox-item", { textLabel: name, value: id })) :
1812
- this.type === "select" ? (h("calcite-option", { label: name, value: id })) :
1813
- (h("calcite-dropdown-item", { onClick: () => void this._setSelectedLayer(id, itemType) }, name));
1814
- }
1815
- /**
1816
- * Store the layer name based on the user selection
1817
- */
1818
- _setSelectedLayer(id, type) {
1819
- this.selectedName = type === "layer" ? state.layerNameHash[id] : state.tableNameHash[id];
1820
- this.selectedIds = [id];
1821
- this.layerSelectionChange.emit(this.selectedIds);
1822
- }
1823
- /**
1824
- * Fetch the ids of the layers from the map
1825
- *
1826
- * @returns Promise when the operation has completed
1827
- */
1828
- async _setLayers() {
1829
- if (this.mapView) {
1830
- const mapLayerIds = await getMapLayerIds(this.mapView);
1831
- const mapTableIds = this.showTables ? await getMapTableIds(this.mapView) : [];
1832
- this.ids = [
1833
- ...mapLayerIds.filter(n => { var _a; return ((_a = this.enabledLayerIds) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this.enabledLayerIds.indexOf(n) > -1 : true; }),
1834
- ...mapTableIds.filter(n => { var _a; return ((_a = this.enabledTableIds) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this.enabledTableIds.indexOf(n) > -1 : true; }),
1835
- ];
1836
- await this._initStateHash();
1837
- }
1838
- }
1839
- /**
1840
- * Create a layer id:title hash for layer name display
1841
- *
1842
- * @returns Promise when the operation has completed
1843
- */
1844
- async _initStateHash() {
1845
- if (this.mapView) {
1846
- state.layerNameHash = await getMapLayerHash(this.mapView);
1847
- state.tableNameHash = this.showTables ? await getMapTableHash(this.mapView) : {};
1848
- }
1849
- }
1850
- /**
1851
- * Evaluate if the id exists in the current hash and verify if it should be excluded
1852
- *
1853
- * @returns boolean when true the layer will be used in the current layer picker type
1854
- */
1855
- _validLayer(id) {
1856
- const name = state.layerNameHash[id];
1857
- return name && state.managedLayers.indexOf(name) < 0 && (this.enabledLayerIds.length > 0 ?
1858
- this.enabledLayerIds.indexOf(id) > -1 : name);
1859
- }
1860
- /**
1861
- * Evaluate if the id exists in the current hash and verify if it should be excluded
1862
- *
1863
- * @returns boolean when true the table will be used in the current layer picker type
1864
- */
1865
- _validTable(id) {
1866
- const name = state.tableNameHash[id];
1867
- const validName = name && this.showTables;
1868
- return validName ? state.managedTables.indexOf(name) < 0 &&
1869
- (this.enabledTableIds.length > 0 ? this.enabledTableIds.indexOf(id) > -1 : true) : validName;
1870
- }
1871
- /**
1872
- * Fetch the ids of the layers from the map
1873
- *
1874
- * @returns Promise when the operation has completed
1875
- */
1876
- _layerSelectionChange() {
1877
- const ids = Array.isArray(this._layerElement.value) ? this._layerElement.value : [this._layerElement.value];
1878
- if (JSON.stringify(ids) !== JSON.stringify([""])) {
1879
- this.selectedIds = ids;
1880
- this.layerSelectionChange.emit(this.selectedIds);
1881
- }
1882
- }
1883
- get el() { return getElement(this); }
1884
- static get watchers() { return {
1885
- "mapView": ["mapViewWatchHandler"]
1886
- }; }
1887
- };
1685
+ const MapLayerPicker = class {
1686
+ constructor(hostRef) {
1687
+ registerInstance(this, hostRef);
1688
+ this.layerSelectionChange = createEvent(this, "layerSelectionChange", 7);
1689
+ this.appearance = "transparent";
1690
+ this.enabledLayerIds = [];
1691
+ this.enabledTableIds = [];
1692
+ this.mapView = undefined;
1693
+ this.placeholderIcon = "";
1694
+ this.selectedIds = [];
1695
+ this.scale = "m";
1696
+ this.showTables = true;
1697
+ this.type = "select";
1698
+ this.ids = [];
1699
+ this.selectedName = "";
1700
+ }
1701
+ //--------------------------------------------------------------------------
1702
+ //
1703
+ // Watch handlers
1704
+ //
1705
+ //--------------------------------------------------------------------------
1706
+ /**
1707
+ * Called each time the mapView prop is changed.
1708
+ *
1709
+ */
1710
+ async mapViewWatchHandler() {
1711
+ await this._setLayers();
1712
+ const hasLayers = Object.keys(state.layerNameHash).length > 0;
1713
+ const hasTables = Object.keys(state.tableNameHash).length > 0 && this.showTables;
1714
+ if (hasLayers || hasTables) {
1715
+ this._setSelectedLayer(this.ids[0], hasLayers ? "layer" : "table");
1716
+ }
1717
+ }
1718
+ //--------------------------------------------------------------------------
1719
+ //
1720
+ // Functions (lifecycle)
1721
+ //
1722
+ //--------------------------------------------------------------------------
1723
+ /**
1724
+ * StencilJS: Called once just after the component is first connected to the DOM.
1725
+ */
1726
+ async componentWillLoad() {
1727
+ await this._setLayers();
1728
+ if (this.ids.length > 0 || this.selectedIds.length === 1) {
1729
+ this.layerSelectionChange.emit(this.selectedIds.length === 1 ? [this.selectedIds[0]] : [this.ids[0]]);
1730
+ }
1731
+ }
1732
+ /**
1733
+ * Renders the component.
1734
+ */
1735
+ render() {
1736
+ return (h(Host, null, h("div", { class: "map-layer-picker-container" }, h("div", { class: "map-layer-picker" }, this.type === "combobox" ? this._getCombobox() :
1737
+ this.type === "select" ? this._getSelect() : this._getDropdown()))));
1738
+ }
1739
+ /**
1740
+ * StencilJS: Called once just after the component is fully loaded and the first render() occurs.
1741
+ */
1742
+ async componentDidLoad() {
1743
+ if (this.ids.length > 0 || this.selectedIds.length === 1) {
1744
+ const id = this.selectedIds.length === 1 ? this.selectedIds[0] : this.ids[0];
1745
+ if (this.type === "select") {
1746
+ this._layerElement.value = id;
1747
+ }
1748
+ else if (this.type === "dropdown") {
1749
+ this.selectedName = Object.keys(state.layerNameHash).indexOf(id) > -1 ?
1750
+ state.layerNameHash[id] : Object.keys(state.tableNameHash).indexOf(id) > -1 ?
1751
+ state.tableNameHash[id] : "";
1752
+ }
1753
+ }
1754
+ }
1755
+ //--------------------------------------------------------------------------
1756
+ //
1757
+ // Functions (protected)
1758
+ //
1759
+ //--------------------------------------------------------------------------
1760
+ /**
1761
+ * Create a list of layers from the map
1762
+ *
1763
+ * Used for selecting a single layer.
1764
+ *
1765
+ * @returns Calcite Select component with the ids of the layers from the map
1766
+ */
1767
+ _getSelect() {
1768
+ return (h("calcite-select", { label: "", onCalciteSelectChange: () => this._layerSelectionChange(), ref: (el) => { this._layerElement = el; }, scale: this.scale }, this._getMapLayerOptions()));
1769
+ }
1770
+ /**
1771
+ * Create a list of layer ids from the map
1772
+ *
1773
+ * Used for selecting multiple layers
1774
+ *
1775
+ * @returns Calcite ComboBox component with the ids of the layers from the map
1776
+ */
1777
+ _getCombobox() {
1778
+ return (h("calcite-combobox", { clearDisabled: true, label: "", onCalciteComboboxChange: () => this._layerSelectionChange(), "placeholder-icon": this.placeholderIcon, ref: (el) => { this._layerElement = el; }, scale: this.scale, "selection-mode": "single" }, this._getMapLayerOptions()));
1779
+ }
1780
+ /**
1781
+ * Hydrate a dropdown component with items to display the layer names
1782
+ *
1783
+ * @returns Array of Dropdown items with layer names
1784
+ */
1785
+ _getDropdown() {
1786
+ return (h("calcite-dropdown", { class: "layer-picker-dropdown" }, h("calcite-action", { slot: "trigger", text: "" }, h("calcite-button", { alignment: "icon-end-space-between", appearance: this.appearance, class: "max-width-350", iconEnd: "chevron-down", iconStart: "layers", kind: "neutral", width: "full" }, h("div", null, this.selectedName))), h("calcite-dropdown-group", { "selection-mode": "single" }, this._getMapLayerOptions())));
1787
+ }
1788
+ /**
1789
+ * Get the appropriate type of dom nodes for each valid layer or table
1790
+ *
1791
+ * @returns Array of dom nodes with the names of the layers and optionally of the tables
1792
+ */
1793
+ _getMapLayerOptions() {
1794
+ return this.ids.reduce((prev, cur) => {
1795
+ if (this._validLayer(cur)) {
1796
+ prev.push(this._getItem(cur, "layer"));
1797
+ }
1798
+ else if (this._validTable(cur)) {
1799
+ prev.push(this._getItem(cur, "table"));
1800
+ }
1801
+ return prev;
1802
+ }, []);
1803
+ }
1804
+ /**
1805
+ * Get the appropriate type of dom node for the current layer or table id
1806
+ *
1807
+ * @returns A dom node with the name of the layer or table
1808
+ */
1809
+ _getItem(id, itemType) {
1810
+ const name = itemType === "layer" ? state.layerNameHash[id] : state.tableNameHash[id];
1811
+ return this.type === "combobox" ? (h("calcite-combobox-item", { textLabel: name, value: id })) :
1812
+ this.type === "select" ? (h("calcite-option", { label: name, value: id })) :
1813
+ (h("calcite-dropdown-item", { onClick: () => void this._setSelectedLayer(id, itemType) }, name));
1814
+ }
1815
+ /**
1816
+ * Store the layer name based on the user selection
1817
+ */
1818
+ _setSelectedLayer(id, type) {
1819
+ this.selectedName = type === "layer" ? state.layerNameHash[id] : state.tableNameHash[id];
1820
+ this.selectedIds = [id];
1821
+ this.layerSelectionChange.emit(this.selectedIds);
1822
+ }
1823
+ /**
1824
+ * Fetch the ids of the layers from the map
1825
+ *
1826
+ * @returns Promise when the operation has completed
1827
+ */
1828
+ async _setLayers() {
1829
+ if (this.mapView) {
1830
+ const mapLayerIds = await getMapLayerIds(this.mapView);
1831
+ const mapTableIds = this.showTables ? await getMapTableIds(this.mapView) : [];
1832
+ this.ids = [
1833
+ ...mapLayerIds.filter(n => { var _a; return ((_a = this.enabledLayerIds) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this.enabledLayerIds.indexOf(n) > -1 : true; }),
1834
+ ...mapTableIds.filter(n => { var _a; return ((_a = this.enabledTableIds) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this.enabledTableIds.indexOf(n) > -1 : true; }),
1835
+ ];
1836
+ await this._initStateHash();
1837
+ }
1838
+ }
1839
+ /**
1840
+ * Create a layer id:title hash for layer name display
1841
+ *
1842
+ * @returns Promise when the operation has completed
1843
+ */
1844
+ async _initStateHash() {
1845
+ if (this.mapView) {
1846
+ state.layerNameHash = await getMapLayerHash(this.mapView);
1847
+ state.tableNameHash = this.showTables ? await getMapTableHash(this.mapView) : {};
1848
+ }
1849
+ }
1850
+ /**
1851
+ * Evaluate if the id exists in the current hash and verify if it should be excluded
1852
+ *
1853
+ * @returns boolean when true the layer will be used in the current layer picker type
1854
+ */
1855
+ _validLayer(id) {
1856
+ const name = state.layerNameHash[id];
1857
+ return name && state.managedLayers.indexOf(name) < 0 && (this.enabledLayerIds.length > 0 ?
1858
+ this.enabledLayerIds.indexOf(id) > -1 : name);
1859
+ }
1860
+ /**
1861
+ * Evaluate if the id exists in the current hash and verify if it should be excluded
1862
+ *
1863
+ * @returns boolean when true the table will be used in the current layer picker type
1864
+ */
1865
+ _validTable(id) {
1866
+ const name = state.tableNameHash[id];
1867
+ const validName = name && this.showTables;
1868
+ return validName ? state.managedTables.indexOf(name) < 0 &&
1869
+ (this.enabledTableIds.length > 0 ? this.enabledTableIds.indexOf(id) > -1 : true) : validName;
1870
+ }
1871
+ /**
1872
+ * Fetch the ids of the layers from the map
1873
+ *
1874
+ * @returns Promise when the operation has completed
1875
+ */
1876
+ _layerSelectionChange() {
1877
+ const ids = Array.isArray(this._layerElement.value) ? this._layerElement.value : [this._layerElement.value];
1878
+ if (JSON.stringify(ids) !== JSON.stringify([""])) {
1879
+ this.selectedIds = ids;
1880
+ this.layerSelectionChange.emit(this.selectedIds);
1881
+ }
1882
+ }
1883
+ get el() { return getElement(this); }
1884
+ static get watchers() { return {
1885
+ "mapView": ["mapViewWatchHandler"]
1886
+ }; }
1887
+ };
1888
1888
  MapLayerPicker.style = mapLayerPickerCss;
1889
1889
 
1890
1890
  export { Combobox as calcite_combobox, ComboboxItem as calcite_combobox_item, Dropdown as calcite_dropdown, DropdownGroup as calcite_dropdown_group, DropdownItem as calcite_dropdown_item, MapLayerPicker as map_layer_picker };