@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
@@ -7,28 +7,28 @@
7
7
 
8
8
  Object.defineProperty(exports, '__esModule', { value: true });
9
9
 
10
- const index = require('./index-0e50040c.js');
11
- const filter = require('./filter-bda212b4.js');
12
- const dom = require('./dom-c1807fc1.js');
13
- const floatingUi = require('./floating-ui-8d10af88.js');
14
- const form = require('./form-9d8ebf06.js');
15
- const guid = require('./guid-3abe3cc6.js');
16
- const interactive = require('./interactive-2fe0f43a.js');
17
- const label = require('./label-6e33e971.js');
18
- const loadable = require('./loadable-bac9cdd6.js');
19
- const locale = require('./locale-c63a1b57.js');
20
- const observers = require('./observers-f5fa975b.js');
21
- const openCloseComponent = require('./openCloseComponent-5d70fcd8.js');
22
- const t9n = require('./t9n-1d032c30.js');
23
- const utils = require('./utils-ae9bdd59.js');
24
- const debounce = require('./debounce-30afab47.js');
25
- const conditionalSlot = require('./conditionalSlot-85b3a6b3.js');
26
- const key = require('./key-b8b55ea3.js');
27
- const mapViewUtils = require('./mapViewUtils-9da2dddd.js');
28
- const publicNotificationStore = require('./publicNotificationStore-55edd658.js');
29
- require('./resources-77713c2e.js');
30
- require('./interfaces-d539e30c.js');
31
- require('./index-2b60e135.js');
10
+ const index = require('./index-6654298b.js');
11
+ const filter = require('./filter-494bf35e.js');
12
+ const dom = require('./dom-d529bae8.js');
13
+ const floatingUi = require('./floating-ui-7d6e57d3.js');
14
+ const form = require('./form-bcf49eae.js');
15
+ const guid = require('./guid-ca85ade0.js');
16
+ const interactive = require('./interactive-4e212b36.js');
17
+ const label = require('./label-215c4af3.js');
18
+ const loadable = require('./loadable-6da743c6.js');
19
+ const locale = require('./locale-477d8d51.js');
20
+ const observers = require('./observers-20fe6f01.js');
21
+ const openCloseComponent = require('./openCloseComponent-3fa18210.js');
22
+ const t9n = require('./t9n-8be30efb.js');
23
+ const utils = require('./utils-ed4e5028.js');
24
+ const debounce = require('./debounce-69c3bada.js');
25
+ const conditionalSlot = require('./conditionalSlot-a51326e7.js');
26
+ const key = require('./key-b32a6438.js');
27
+ const mapViewUtils = require('./mapViewUtils-77a1ff88.js');
28
+ const publicNotificationStore = require('./publicNotificationStore-ec1bdd2d.js');
29
+ require('./resources-b4b4b4fe.js');
30
+ require('./interfaces-ad03ec39.js');
31
+ require('./index-e1b1954f.js');
32
32
 
33
33
  /*!
34
34
  * All material copyright ESRI, All Rights Reserved, unless otherwise specified.
@@ -46,864 +46,864 @@ function XButton({ disabled, key, label, onClick, ref, scale, }) {
46
46
 
47
47
  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)}";
48
48
 
49
- const isGroup = (el) => el.tagName === utils.ComboboxItemGroup;
50
- const itemUidPrefix = "combobox-item-";
51
- const chipUidPrefix = "combobox-chip-";
52
- const labelUidPrefix = "combobox-label-";
53
- const listboxUidPrefix = "combobox-listbox-";
54
- const inputUidPrefix = "combobox-input-";
55
- const Combobox = class {
56
- constructor(hostRef) {
57
- index.registerInstance(this, hostRef);
58
- this.calciteComboboxChange = index.createEvent(this, "calciteComboboxChange", 6);
59
- this.calciteComboboxFilterChange = index.createEvent(this, "calciteComboboxFilterChange", 6);
60
- this.calciteComboboxChipClose = index.createEvent(this, "calciteComboboxChipClose", 6);
61
- this.calciteComboboxBeforeClose = index.createEvent(this, "calciteComboboxBeforeClose", 6);
62
- this.calciteComboboxClose = index.createEvent(this, "calciteComboboxClose", 6);
63
- this.calciteComboboxBeforeOpen = index.createEvent(this, "calciteComboboxBeforeOpen", 6);
64
- this.calciteComboboxOpen = index.createEvent(this, "calciteComboboxOpen", 6);
65
- //--------------------------------------------------------------------------
66
- //
67
- // Private State/Props
68
- //
69
- //--------------------------------------------------------------------------
70
- this.placement = floatingUi.defaultMenuPlacement;
71
- this.internalValueChangeFlag = false;
72
- this.textInput = null;
73
- this.mutationObserver = observers.createObserver("mutation", () => this.updateItems());
74
- this.resizeObserver = observers.createObserver("resize", () => this.setMaxScrollerHeight());
75
- this.guid = guid.guid();
76
- this.inputHeight = 0;
77
- this.ignoreSelectedEventsFlag = false;
78
- this.openTransitionProp = "opacity";
79
- this.setFilteredPlacements = () => {
80
- const { el, flipPlacements } = this;
81
- this.filteredFlipPlacements = flipPlacements
82
- ? floatingUi.filterComputedPlacements(flipPlacements, el)
83
- : null;
84
- };
85
- this.getValue = () => {
86
- 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(); });
87
- return (items === null || items === void 0 ? void 0 : items.length) ? (items.length > 1 ? items : items[0]) : "";
88
- };
89
- this.onLabelClick = () => {
90
- this.setFocus();
91
- };
92
- this.keyDownHandler = (event) => {
93
- const { key } = event;
94
- switch (key) {
95
- case "Tab":
96
- this.activeChipIndex = -1;
97
- this.activeItemIndex = -1;
98
- if (this.allowCustomValues && this.text) {
99
- this.addCustomChip(this.text, true);
100
- event.preventDefault();
101
- }
102
- else if (this.open) {
103
- this.open = false;
104
- event.preventDefault();
105
- }
106
- break;
107
- case "ArrowLeft":
108
- this.previousChip();
109
- event.preventDefault();
110
- break;
111
- case "ArrowRight":
112
- this.nextChip();
113
- event.preventDefault();
114
- break;
115
- case "ArrowUp":
116
- event.preventDefault();
117
- if (this.open) {
118
- this.shiftActiveItemIndex(-1);
119
- }
120
- if (!this.comboboxInViewport()) {
121
- this.el.scrollIntoView();
122
- }
123
- break;
124
- case "ArrowDown":
125
- event.preventDefault();
126
- if (this.open) {
127
- this.shiftActiveItemIndex(1);
128
- }
129
- else {
130
- this.open = true;
131
- this.ensureRecentSelectedItemIsActive();
132
- }
133
- if (!this.comboboxInViewport()) {
134
- this.el.scrollIntoView();
135
- }
136
- break;
137
- case " ":
138
- if (!this.textInput.value) {
139
- if (!this.open) {
140
- this.open = true;
141
- this.shiftActiveItemIndex(1);
142
- }
143
- event.preventDefault();
144
- }
145
- break;
146
- case "Home":
147
- if (!this.open) {
148
- return;
149
- }
150
- event.preventDefault();
151
- this.updateActiveItemIndex(0);
152
- this.scrollToActiveItem();
153
- if (!this.comboboxInViewport()) {
154
- this.el.scrollIntoView();
155
- }
156
- break;
157
- case "End":
158
- if (!this.open) {
159
- return;
160
- }
161
- event.preventDefault();
162
- this.updateActiveItemIndex(this.filteredItems.length - 1);
163
- this.scrollToActiveItem();
164
- if (!this.comboboxInViewport()) {
165
- this.el.scrollIntoView();
166
- }
167
- break;
168
- case "Escape":
169
- if (!this.clearDisabled && !this.open) {
170
- this.clearValue();
171
- }
172
- this.open = false;
173
- event.preventDefault();
174
- break;
175
- case "Enter":
176
- if (this.activeItemIndex > -1) {
177
- this.toggleSelection(this.filteredItems[this.activeItemIndex]);
178
- event.preventDefault();
179
- }
180
- else if (this.activeChipIndex > -1) {
181
- this.removeActiveChip();
182
- event.preventDefault();
183
- }
184
- else if (this.allowCustomValues && this.text) {
185
- this.addCustomChip(this.text, true);
186
- event.preventDefault();
187
- }
188
- else if (!event.defaultPrevented) {
189
- if (form.submitForm(this)) {
190
- event.preventDefault();
191
- }
192
- }
193
- break;
194
- case "Delete":
195
- case "Backspace":
196
- if (this.activeChipIndex > -1) {
197
- event.preventDefault();
198
- this.removeActiveChip();
199
- }
200
- else if (!this.text && this.isMulti()) {
201
- event.preventDefault();
202
- this.removeLastChip();
203
- }
204
- break;
205
- }
206
- };
207
- this.toggleCloseEnd = () => {
208
- this.open = false;
209
- this.el.removeEventListener("calciteComboboxClose", this.toggleCloseEnd);
210
- };
211
- this.toggleOpenEnd = () => {
212
- this.open = false;
213
- this.el.removeEventListener("calciteComboboxOpen", this.toggleOpenEnd);
214
- };
215
- this.setMaxScrollerHeight = async () => {
216
- const { listContainerEl, open, referenceEl } = this;
217
- if (!listContainerEl || !open) {
218
- return;
219
- }
220
- await this.reposition(true);
221
- const maxScrollerHeight = this.getMaxScrollerHeight();
222
- listContainerEl.style.maxHeight = maxScrollerHeight > 0 ? `${maxScrollerHeight}px` : "";
223
- listContainerEl.style.minWidth = `${referenceEl.clientWidth}px`;
224
- await this.reposition(true);
225
- };
226
- this.calciteChipCloseHandler = (comboboxItem) => {
227
- this.open = false;
228
- const selection = this.items.find((item) => item === comboboxItem);
229
- if (selection) {
230
- this.toggleSelection(selection, false);
231
- }
232
- this.calciteComboboxChipClose.emit();
233
- };
234
- this.clickHandler = (event) => {
235
- const composedPath = event.composedPath();
236
- if (composedPath.some((node) => node.tagName === "CALCITE-CHIP")) {
237
- this.open = false;
238
- event.preventDefault();
239
- return;
240
- }
241
- if (composedPath.some((node) => { var _a; return (_a = node.classList) === null || _a === void 0 ? void 0 : _a.contains(CSS$3.button); })) {
242
- this.clearValue();
243
- event.preventDefault();
244
- return;
245
- }
246
- this.open = !this.open;
247
- this.ensureRecentSelectedItemIsActive();
248
- };
249
- this.setInactiveIfNotContained = (event) => {
250
- const composedPath = event.composedPath();
251
- if (!this.open || composedPath.includes(this.el) || composedPath.includes(this.referenceEl)) {
252
- return;
253
- }
254
- if (this.allowCustomValues && this.text.trim().length) {
255
- this.addCustomChip(this.text);
256
- }
257
- if (this.selectionMode === "single") {
258
- if (this.textInput) {
259
- this.textInput.value = "";
260
- }
261
- this.text = "";
262
- this.filterItems("");
263
- this.updateActiveItemIndex(-1);
264
- }
265
- this.open = false;
266
- };
267
- this.setFloatingEl = (el) => {
268
- this.floatingEl = el;
269
- floatingUi.connectFloatingUI(this, this.referenceEl, this.floatingEl);
270
- };
271
- this.setContainerEl = (el) => {
272
- this.resizeObserver.observe(el);
273
- this.listContainerEl = el;
274
- this.transitionEl = el;
275
- };
276
- this.setReferenceEl = (el) => {
277
- this.referenceEl = el;
278
- floatingUi.connectFloatingUI(this, this.referenceEl, this.floatingEl);
279
- };
280
- this.inputHandler = (event) => {
281
- const value = event.target.value;
282
- this.text = value;
283
- this.filterItems(value);
284
- if (value) {
285
- this.activeChipIndex = -1;
286
- }
287
- };
288
- this.filterItems = (() => {
289
- const find = (item, filteredData) => item &&
290
- filteredData.some(({ label, value }) => {
291
- if (isGroup(item)) {
292
- return value === item.label;
293
- }
294
- return (value === item.textLabel ||
295
- value === item.value ||
296
- label === item.textLabel ||
297
- label === item.value);
298
- });
299
- return debounce.debounce((text) => {
300
- const filteredData = filter.filter(this.data, text);
301
- const items = this.getCombinedItems();
302
- items.forEach((item) => {
303
- const hidden = !find(item, filteredData);
304
- item.hidden = hidden;
305
- const [parent, grandparent] = item.ancestors;
306
- if (find(parent, filteredData) || find(grandparent, filteredData)) {
307
- item.hidden = false;
308
- }
309
- if (!hidden) {
310
- item.ancestors.forEach((ancestor) => (ancestor.hidden = false));
311
- }
312
- });
313
- this.filteredItems = this.getFilteredItems();
314
- this.calciteComboboxFilterChange.emit();
315
- }, 100);
316
- })();
317
- this.internalComboboxChangeEvent = () => {
318
- this.calciteComboboxChange.emit();
319
- };
320
- this.emitComboboxChange = debounce.debounce(this.internalComboboxChangeEvent, 0);
321
- this.updateItems = () => {
322
- this.items = this.getItems();
323
- this.groupItems = this.getGroupItems();
324
- this.data = this.getData();
325
- this.selectedItems = this.getSelectedItems();
326
- this.filteredItems = this.getFilteredItems();
327
- this.needsIcon = this.getNeedsIcon();
328
- if (!this.allowCustomValues) {
329
- this.setMaxScrollerHeight();
330
- }
331
- this.groupItems.forEach((groupItem, index, items) => {
332
- if (index === 0) {
333
- groupItem.afterEmptyGroup = false;
334
- }
335
- const nextGroupItem = items[index + 1];
336
- if (nextGroupItem) {
337
- nextGroupItem.afterEmptyGroup = groupItem.children.length === 0;
338
- }
339
- });
340
- };
341
- this.scrollToActiveItem = () => {
342
- const activeItem = this.filteredItems[this.activeItemIndex];
343
- if (!activeItem) {
344
- return;
345
- }
346
- const height = this.calculateSingleItemHeight(activeItem);
347
- const { offsetHeight, scrollTop } = this.listContainerEl;
348
- if (offsetHeight + scrollTop < activeItem.offsetTop + height) {
349
- this.listContainerEl.scrollTop = activeItem.offsetTop - offsetHeight + height;
350
- }
351
- else if (activeItem.offsetTop < scrollTop) {
352
- this.listContainerEl.scrollTop = activeItem.offsetTop;
353
- }
354
- };
355
- this.comboboxFocusHandler = () => {
356
- var _a;
357
- if (this.disabled) {
358
- return;
359
- }
360
- (_a = this.textInput) === null || _a === void 0 ? void 0 : _a.focus();
361
- };
362
- this.comboboxBlurHandler = (event) => {
363
- this.setInactiveIfNotContained(event);
364
- };
365
- this.clearDisabled = false;
366
- this.open = false;
367
- this.disabled = false;
368
- this.form = undefined;
369
- this.label = undefined;
370
- this.placeholder = undefined;
371
- this.placeholderIcon = undefined;
372
- this.placeholderIconFlipRtl = false;
373
- this.maxItems = 0;
374
- this.name = undefined;
375
- this.allowCustomValues = undefined;
376
- this.overlayPositioning = "absolute";
377
- this.required = false;
378
- this.selectionMode = "multiple";
379
- this.scale = "m";
380
- this.value = null;
381
- this.flipPlacements = undefined;
382
- this.messages = undefined;
383
- this.messageOverrides = undefined;
384
- this.selectedItems = [];
385
- this.filteredItems = [];
386
- this.items = [];
387
- this.groupItems = [];
388
- this.needsIcon = undefined;
389
- this.activeItemIndex = -1;
390
- this.activeChipIndex = -1;
391
- this.activeDescendant = "";
392
- this.text = "";
393
- this.effectiveLocale = undefined;
394
- this.defaultMessages = undefined;
395
- }
396
- openHandler() {
397
- openCloseComponent.onToggleOpenCloseComponent(this);
398
- if (this.disabled) {
399
- this.open = false;
400
- return;
401
- }
402
- this.setMaxScrollerHeight();
403
- }
404
- handleDisabledChange(value) {
405
- if (!value) {
406
- this.open = false;
407
- }
408
- }
409
- maxItemsHandler() {
410
- this.setMaxScrollerHeight();
411
- }
412
- overlayPositioningHandler() {
413
- this.reposition(true);
414
- }
415
- valueHandler(value) {
416
- if (!this.internalValueChangeFlag) {
417
- const items = this.getItems();
418
- if (Array.isArray(value)) {
419
- items.forEach((item) => (item.selected = value.includes(item.value)));
420
- }
421
- else if (value) {
422
- items.forEach((item) => (item.selected = value === item.value));
423
- }
424
- else {
425
- items.forEach((item) => (item.selected = false));
426
- }
427
- this.updateItems();
428
- }
429
- }
430
- onMessagesChange() {
431
- /* wired up by t9n util */
432
- }
433
- flipPlacementsHandler() {
434
- this.setFilteredPlacements();
435
- this.reposition(true);
436
- }
437
- selectedItemsHandler() {
438
- this.internalValueChangeFlag = true;
439
- this.value = this.getValue();
440
- this.internalValueChangeFlag = false;
441
- }
442
- //--------------------------------------------------------------------------
443
- //
444
- // Event Listeners
445
- //
446
- //--------------------------------------------------------------------------
447
- documentClickHandler(event) {
448
- if (this.disabled || !dom.isPrimaryPointerButton(event)) {
449
- return;
450
- }
451
- this.setInactiveIfNotContained(event);
452
- }
453
- calciteComboboxItemChangeHandler(event) {
454
- if (this.ignoreSelectedEventsFlag) {
455
- return;
456
- }
457
- const target = event.target;
458
- const newIndex = this.filteredItems.indexOf(target);
459
- this.updateActiveItemIndex(newIndex);
460
- this.toggleSelection(target, target.selected);
461
- }
462
- //--------------------------------------------------------------------------
463
- //
464
- // Public Methods
465
- //
466
- //--------------------------------------------------------------------------
467
- /**
468
- * Updates the position of the component.
469
- *
470
- * @param delayed
471
- */
472
- async reposition(delayed = false) {
473
- const { floatingEl, referenceEl, placement, overlayPositioning, filteredFlipPlacements } = this;
474
- return floatingUi.reposition(this, {
475
- floatingEl,
476
- referenceEl,
477
- overlayPositioning,
478
- placement,
479
- flipPlacements: filteredFlipPlacements,
480
- type: "menu",
481
- }, delayed);
482
- }
483
- /** Sets focus on the component. */
484
- async setFocus() {
485
- var _a;
486
- await loadable.componentFocusable(this);
487
- (_a = this.textInput) === null || _a === void 0 ? void 0 : _a.focus();
488
- this.activeChipIndex = -1;
489
- this.activeItemIndex = -1;
490
- }
491
- // --------------------------------------------------------------------------
492
- //
493
- // Lifecycle
494
- //
495
- // --------------------------------------------------------------------------
496
- connectedCallback() {
497
- var _a;
498
- interactive.connectInteractive(this);
499
- locale.connectLocalized(this);
500
- t9n.connectMessages(this);
501
- this.internalValueChangeFlag = true;
502
- this.value = this.getValue();
503
- this.internalValueChangeFlag = false;
504
- (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.observe(this.el, { childList: true, subtree: true });
505
- label.connectLabel(this);
506
- form.connectForm(this);
507
- this.setFilteredPlacements();
508
- this.reposition(true);
509
- if (this.open) {
510
- this.openHandler();
511
- openCloseComponent.onToggleOpenCloseComponent(this);
512
- }
513
- }
514
- async componentWillLoad() {
515
- loadable.setUpLoadableComponent(this);
516
- this.updateItems();
517
- await t9n.setUpMessages(this);
518
- }
519
- componentDidLoad() {
520
- form.afterConnectDefaultValueSet(this, this.getValue());
521
- this.reposition(true);
522
- loadable.setComponentLoaded(this);
523
- }
524
- componentDidRender() {
525
- if (this.el.offsetHeight !== this.inputHeight) {
526
- this.reposition(true);
527
- this.inputHeight = this.el.offsetHeight;
528
- }
529
- interactive.updateHostInteraction(this);
530
- }
531
- disconnectedCallback() {
532
- var _a, _b;
533
- (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
534
- (_b = this.resizeObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
535
- interactive.disconnectInteractive(this);
536
- label.disconnectLabel(this);
537
- form.disconnectForm(this);
538
- floatingUi.disconnectFloatingUI(this, this.referenceEl, this.floatingEl);
539
- locale.disconnectLocalized(this);
540
- t9n.disconnectMessages(this);
541
- }
542
- /** when search text is cleared, reset active to */
543
- textHandler() {
544
- this.updateActiveItemIndex(-1);
545
- }
546
- effectiveLocaleChange() {
547
- t9n.updateMessages(this, this.effectiveLocale);
548
- }
549
- // --------------------------------------------------------------------------
550
- //
551
- // Private Methods
552
- //
553
- // --------------------------------------------------------------------------
554
- clearValue() {
555
- this.ignoreSelectedEventsFlag = true;
556
- this.items.forEach((el) => (el.selected = false));
557
- this.ignoreSelectedEventsFlag = false;
558
- this.selectedItems = [];
559
- this.emitComboboxChange();
560
- this.open = false;
561
- this.updateActiveItemIndex(-1);
562
- this.resetText();
563
- this.filterItems("");
564
- this.setFocus();
565
- }
566
- comboboxInViewport() {
567
- const bounding = this.el.getBoundingClientRect();
568
- return (bounding.top >= 0 &&
569
- bounding.left >= 0 &&
570
- bounding.right <= (window.innerWidth || document.documentElement.clientWidth) &&
571
- bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight));
572
- }
573
- onBeforeOpen() {
574
- this.scrollToActiveItem();
575
- this.calciteComboboxBeforeOpen.emit();
576
- }
577
- onOpen() {
578
- this.calciteComboboxOpen.emit();
579
- }
580
- onBeforeClose() {
581
- this.calciteComboboxBeforeClose.emit();
582
- }
583
- onClose() {
584
- this.calciteComboboxClose.emit();
585
- }
586
- ensureRecentSelectedItemIsActive() {
587
- const { selectedItems } = this;
588
- const targetIndex = selectedItems.length === 0 ? 0 : this.items.indexOf(selectedItems[selectedItems.length - 1]);
589
- this.updateActiveItemIndex(targetIndex);
590
- }
591
- getMaxScrollerHeight() {
592
- const items = this.getCombinedItems().filter((item) => !item.hidden);
593
- const { maxItems } = this;
594
- let itemsToProcess = 0;
595
- let maxScrollerHeight = 0;
596
- if (items.length > maxItems) {
597
- items.forEach((item) => {
598
- if (itemsToProcess < maxItems && maxItems > 0) {
599
- const height = this.calculateSingleItemHeight(item);
600
- if (height > 0) {
601
- maxScrollerHeight += height;
602
- itemsToProcess++;
603
- }
604
- }
605
- });
606
- }
607
- return maxScrollerHeight;
608
- }
609
- calculateSingleItemHeight(item) {
610
- if (!item) {
611
- return;
612
- }
613
- let height = item.offsetHeight;
614
- // if item has children items, don't count their height twice
615
- const children = Array.from(item.querySelectorAll(utils.ComboboxChildSelector));
616
- children
617
- .map((child) => child === null || child === void 0 ? void 0 : child.offsetHeight)
618
- .forEach((offsetHeight) => {
619
- height -= offsetHeight;
620
- });
621
- return height;
622
- }
623
- getCombinedItems() {
624
- return [...this.groupItems, ...this.items];
625
- }
626
- toggleSelection(item, value = !item.selected) {
627
- if (!item) {
628
- return;
629
- }
630
- if (this.isMulti()) {
631
- item.selected = value;
632
- this.updateAncestors(item);
633
- this.selectedItems = this.getSelectedItems();
634
- this.emitComboboxChange();
635
- this.resetText();
636
- this.filterItems("");
637
- }
638
- else {
639
- this.ignoreSelectedEventsFlag = true;
640
- this.items.forEach((el) => (el.selected = el === item ? value : false));
641
- this.ignoreSelectedEventsFlag = false;
642
- this.selectedItems = this.getSelectedItems();
643
- this.emitComboboxChange();
644
- if (this.textInput) {
645
- this.textInput.value = item.textLabel;
646
- }
647
- this.open = false;
648
- this.updateActiveItemIndex(-1);
649
- this.resetText();
650
- this.filterItems("");
651
- }
652
- }
653
- updateAncestors(item) {
654
- if (this.selectionMode !== "ancestors") {
655
- return;
656
- }
657
- const ancestors = utils.getItemAncestors(item);
658
- const children = utils.getItemChildren(item);
659
- if (item.selected) {
660
- ancestors.forEach((el) => {
661
- el.selected = true;
662
- });
663
- }
664
- else {
665
- children.forEach((el) => (el.selected = false));
666
- [...ancestors].forEach((el) => {
667
- if (!utils.hasActiveChildren(el)) {
668
- el.selected = false;
669
- }
670
- });
671
- }
672
- }
673
- getFilteredItems() {
674
- return this.items.filter((item) => !item.hidden);
675
- }
676
- getSelectedItems() {
677
- if (!this.isMulti()) {
678
- const match = this.items.find(({ selected }) => selected);
679
- return match ? [match] : [];
680
- }
681
- return (this.items
682
- .filter((item) => item.selected && (this.selectionMode !== "ancestors" || !utils.hasActiveChildren(item)))
683
- /** Preserve order of entered tags */
684
- .sort((a, b) => {
685
- const aIdx = this.selectedItems.indexOf(a);
686
- const bIdx = this.selectedItems.indexOf(b);
687
- if (aIdx > -1 && bIdx > -1) {
688
- return aIdx - bIdx;
689
- }
690
- return bIdx - aIdx;
691
- }));
692
- }
693
- getData() {
694
- return this.items.map((item) => ({
695
- filterDisabled: item.filterDisabled,
696
- value: item.value,
697
- label: item.textLabel,
698
- }));
699
- }
700
- getNeedsIcon() {
701
- return this.selectionMode === "single" && this.items.some((item) => item.icon);
702
- }
703
- resetText() {
704
- if (this.textInput) {
705
- this.textInput.value = "";
706
- }
707
- this.text = "";
708
- }
709
- getItems() {
710
- const items = Array.from(this.el.querySelectorAll(utils.ComboboxItem));
711
- return items.filter((item) => !item.disabled);
712
- }
713
- getGroupItems() {
714
- return Array.from(this.el.querySelectorAll(utils.ComboboxItemGroup));
715
- }
716
- addCustomChip(value, focus) {
717
- const existingItem = this.items.find((el) => el.textLabel === value);
718
- if (existingItem) {
719
- this.toggleSelection(existingItem, true);
720
- }
721
- else {
722
- if (!this.isMulti()) {
723
- this.toggleSelection(this.selectedItems[this.selectedItems.length - 1], false);
724
- }
725
- const item = document.createElement(utils.ComboboxItem);
726
- item.value = value;
727
- item.textLabel = value;
728
- item.selected = true;
729
- this.el.appendChild(item);
730
- this.resetText();
731
- if (focus) {
732
- this.setFocus();
733
- }
734
- this.updateItems();
735
- this.filterItems("");
736
- this.emitComboboxChange();
737
- }
738
- }
739
- removeActiveChip() {
740
- this.toggleSelection(this.selectedItems[this.activeChipIndex], false);
741
- this.setFocus();
742
- }
743
- removeLastChip() {
744
- this.toggleSelection(this.selectedItems[this.selectedItems.length - 1], false);
745
- this.setFocus();
746
- }
747
- previousChip() {
748
- if (this.text) {
749
- return;
750
- }
751
- const length = this.selectedItems.length - 1;
752
- const active = this.activeChipIndex;
753
- this.activeChipIndex = active === -1 ? length : Math.max(active - 1, 0);
754
- this.updateActiveItemIndex(-1);
755
- this.focusChip();
756
- }
757
- nextChip() {
758
- if (this.text || this.activeChipIndex === -1) {
759
- return;
760
- }
761
- const last = this.selectedItems.length - 1;
762
- const newIndex = this.activeChipIndex + 1;
763
- if (newIndex > last) {
764
- this.activeChipIndex = -1;
765
- this.setFocus();
766
- }
767
- else {
768
- this.activeChipIndex = newIndex;
769
- this.focusChip();
770
- }
771
- this.updateActiveItemIndex(-1);
772
- }
773
- focusChip() {
774
- var _a;
775
- const guid = (_a = this.selectedItems[this.activeChipIndex]) === null || _a === void 0 ? void 0 : _a.guid;
776
- const chip = guid
777
- ? this.referenceEl.querySelector(`#${chipUidPrefix}${guid}`)
778
- : null;
779
- chip === null || chip === void 0 ? void 0 : chip.setFocus();
780
- }
781
- shiftActiveItemIndex(delta) {
782
- const { length } = this.filteredItems;
783
- const newIndex = (this.activeItemIndex + length + delta) % length;
784
- this.updateActiveItemIndex(newIndex);
785
- this.scrollToActiveItem();
786
- }
787
- updateActiveItemIndex(index) {
788
- this.activeItemIndex = index;
789
- let activeDescendant = null;
790
- this.filteredItems.forEach((el, i) => {
791
- if (i === index) {
792
- el.active = true;
793
- activeDescendant = `${itemUidPrefix}${el.guid}`;
794
- }
795
- else {
796
- el.active = false;
797
- }
798
- });
799
- this.activeDescendant = activeDescendant;
800
- if (this.activeItemIndex > -1) {
801
- this.activeChipIndex = -1;
802
- }
803
- }
804
- isMulti() {
805
- return this.selectionMode !== "single";
806
- }
807
- //--------------------------------------------------------------------------
808
- //
809
- // Render Methods
810
- //
811
- //--------------------------------------------------------------------------
812
- renderChips() {
813
- const { activeChipIndex, scale, selectionMode, messages } = this;
814
- return this.selectedItems.map((item, i) => {
815
- const chipClasses = {
816
- chip: true,
817
- "chip--active": activeChipIndex === i,
818
- };
819
- const ancestors = [...utils.getItemAncestors(item)].reverse();
820
- const pathLabel = [...ancestors, item].map((el) => el.textLabel);
821
- const label = selectionMode !== "ancestors" ? item.textLabel : pathLabel.join(" / ");
822
- return (index.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));
823
- });
824
- }
825
- renderInput() {
826
- const { guid, disabled, placeholder, selectionMode, selectedItems, open } = this;
827
- const single = selectionMode === "single";
828
- const selectedItem = selectedItems[0];
829
- const showLabel = !open && single && !!selectedItem;
830
- return (index.h("span", { class: {
831
- "input-wrap": true,
832
- "input-wrap--single": single,
833
- } }, showLabel && (index.h("span", { class: {
834
- label: true,
835
- "label--icon": !!(selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.icon),
836
- }, key: "label" }, selectedItem.textLabel)), index.h("input", { "aria-activedescendant": this.activeDescendant, "aria-autocomplete": "list", "aria-controls": `${listboxUidPrefix}${guid}`, "aria-label": label.getLabelText(this), class: {
837
- input: true,
838
- "input--single": true,
839
- "input--transparent": this.activeChipIndex > -1,
840
- "input--hidden": showLabel,
841
- "input--icon": !!this.placeholderIcon,
842
- }, disabled: disabled, id: `${inputUidPrefix}${guid}`, key: "input", onBlur: this.comboboxBlurHandler, onFocus: this.comboboxFocusHandler, onInput: this.inputHandler, placeholder: placeholder, type: "text",
843
- // eslint-disable-next-line react/jsx-sort-props
844
- ref: (el) => (this.textInput = el) })));
845
- }
846
- renderListBoxOptions() {
847
- return this.filteredItems.map((item) => (index.h("li", { "aria-selected": dom.toAriaBoolean(item.selected), id: item.guid ? `${itemUidPrefix}${item.guid}` : null, role: "option", tabindex: "-1" }, item.textLabel)));
848
- }
849
- renderFloatingUIContainer() {
850
- const { setFloatingEl, setContainerEl, open } = this;
851
- const classes = {
852
- [utils.CSS.listContainer]: true,
853
- [floatingUi.FloatingCSS.animation]: true,
854
- [floatingUi.FloatingCSS.animationActive]: open,
855
- };
856
- return (index.h("div", { "aria-hidden": "true", class: {
857
- "floating-ui-container": true,
858
- "floating-ui-container--active": open,
859
- },
860
- // eslint-disable-next-line react/jsx-sort-props
861
- ref: setFloatingEl }, index.h("div", { class: classes,
862
- // eslint-disable-next-line react/jsx-sort-props
863
- ref: setContainerEl }, index.h("ul", { class: { list: true, "list--hide": !open } }, index.h("slot", null)))));
864
- }
865
- renderIconStart() {
866
- const { selectedItems, placeholderIcon, selectionMode, placeholderIconFlipRtl } = this;
867
- const selectedItem = selectedItems[0];
868
- const selectedIcon = selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.icon;
869
- const singleSelectionMode = selectionMode === "single";
870
- const iconAtStart = !this.open && selectedItem
871
- ? !!selectedIcon && singleSelectionMode
872
- : !!this.placeholderIcon && (!selectedItem || singleSelectionMode);
873
- return (iconAtStart && (index.h("span", { class: "icon-start" }, index.h("calcite-icon", { class: "selected-icon", flipRtl: this.open && selectedItem ? selectedItem.iconFlipRtl : placeholderIconFlipRtl, icon: !this.open && selectedItem ? selectedIcon : placeholderIcon, scale: "s" }))));
874
- }
875
- renderIconEnd() {
876
- const { open } = this;
877
- return (index.h("span", { class: "icon-end" }, index.h("calcite-icon", { icon: open ? "chevron-up" : "chevron-down", scale: "s" })));
878
- }
879
- render() {
880
- var _a;
881
- const { guid, label: label$1, open } = this;
882
- const single = this.selectionMode === "single";
883
- const isClearable = !this.clearDisabled && ((_a = this.value) === null || _a === void 0 ? void 0 : _a.length) > 0;
884
- return (index.h(index.Host, { onClick: this.comboboxFocusHandler }, index.h("div", { "aria-autocomplete": "list", "aria-controls": `${listboxUidPrefix}${guid}`, "aria-expanded": dom.toAriaBoolean(open), "aria-haspopup": "listbox", "aria-label": label.getLabelText(this), "aria-live": "polite", "aria-owns": `${listboxUidPrefix}${guid}`, class: {
885
- wrapper: true,
886
- "wrapper--single": single || !this.selectedItems.length,
887
- "wrapper--active": open,
888
- }, onClick: this.clickHandler, onKeyDown: this.keyDownHandler, role: "combobox",
889
- // eslint-disable-next-line react/jsx-sort-props
890
- ref: this.setReferenceEl }, index.h("div", { class: "grid-input" }, this.renderIconStart(), !single && this.renderChips(), index.h("label", { class: "screen-readers-only", htmlFor: `${inputUidPrefix}${guid}`, id: `${labelUidPrefix}${guid}` }, label$1), this.renderInput()), isClearable ? (index.h(XButton, { disabled: this.disabled, key: "close-button", label: this.messages.clear, scale: this.scale })) : null, this.renderIconEnd()), index.h("ul", { "aria-labelledby": `${labelUidPrefix}${guid}`, "aria-multiselectable": "true", class: "screen-readers-only", id: `${listboxUidPrefix}${guid}`, role: "listbox", tabIndex: -1 }, this.renderListBoxOptions()), this.renderFloatingUIContainer(), index.h(form.HiddenFormInputSlot, { component: this })));
891
- }
892
- static get assetsDirs() { return ["assets"]; }
893
- get el() { return index.getElement(this); }
894
- static get watchers() { return {
895
- "open": ["openHandler"],
896
- "disabled": ["handleDisabledChange"],
897
- "maxItems": ["maxItemsHandler"],
898
- "overlayPositioning": ["overlayPositioningHandler"],
899
- "value": ["valueHandler"],
900
- "messageOverrides": ["onMessagesChange"],
901
- "flipPlacements": ["flipPlacementsHandler"],
902
- "selectedItems": ["selectedItemsHandler"],
903
- "text": ["textHandler"],
904
- "effectiveLocale": ["effectiveLocaleChange"]
905
- }; }
906
- };
49
+ const isGroup = (el) => el.tagName === utils.ComboboxItemGroup;
50
+ const itemUidPrefix = "combobox-item-";
51
+ const chipUidPrefix = "combobox-chip-";
52
+ const labelUidPrefix = "combobox-label-";
53
+ const listboxUidPrefix = "combobox-listbox-";
54
+ const inputUidPrefix = "combobox-input-";
55
+ const Combobox = class {
56
+ constructor(hostRef) {
57
+ index.registerInstance(this, hostRef);
58
+ this.calciteComboboxChange = index.createEvent(this, "calciteComboboxChange", 6);
59
+ this.calciteComboboxFilterChange = index.createEvent(this, "calciteComboboxFilterChange", 6);
60
+ this.calciteComboboxChipClose = index.createEvent(this, "calciteComboboxChipClose", 6);
61
+ this.calciteComboboxBeforeClose = index.createEvent(this, "calciteComboboxBeforeClose", 6);
62
+ this.calciteComboboxClose = index.createEvent(this, "calciteComboboxClose", 6);
63
+ this.calciteComboboxBeforeOpen = index.createEvent(this, "calciteComboboxBeforeOpen", 6);
64
+ this.calciteComboboxOpen = index.createEvent(this, "calciteComboboxOpen", 6);
65
+ //--------------------------------------------------------------------------
66
+ //
67
+ // Private State/Props
68
+ //
69
+ //--------------------------------------------------------------------------
70
+ this.placement = floatingUi.defaultMenuPlacement;
71
+ this.internalValueChangeFlag = false;
72
+ this.textInput = null;
73
+ this.mutationObserver = observers.createObserver("mutation", () => this.updateItems());
74
+ this.resizeObserver = observers.createObserver("resize", () => this.setMaxScrollerHeight());
75
+ this.guid = guid.guid();
76
+ this.inputHeight = 0;
77
+ this.ignoreSelectedEventsFlag = false;
78
+ this.openTransitionProp = "opacity";
79
+ this.setFilteredPlacements = () => {
80
+ const { el, flipPlacements } = this;
81
+ this.filteredFlipPlacements = flipPlacements
82
+ ? floatingUi.filterComputedPlacements(flipPlacements, el)
83
+ : null;
84
+ };
85
+ this.getValue = () => {
86
+ 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(); });
87
+ return (items === null || items === void 0 ? void 0 : items.length) ? (items.length > 1 ? items : items[0]) : "";
88
+ };
89
+ this.onLabelClick = () => {
90
+ this.setFocus();
91
+ };
92
+ this.keyDownHandler = (event) => {
93
+ const { key } = event;
94
+ switch (key) {
95
+ case "Tab":
96
+ this.activeChipIndex = -1;
97
+ this.activeItemIndex = -1;
98
+ if (this.allowCustomValues && this.text) {
99
+ this.addCustomChip(this.text, true);
100
+ event.preventDefault();
101
+ }
102
+ else if (this.open) {
103
+ this.open = false;
104
+ event.preventDefault();
105
+ }
106
+ break;
107
+ case "ArrowLeft":
108
+ this.previousChip();
109
+ event.preventDefault();
110
+ break;
111
+ case "ArrowRight":
112
+ this.nextChip();
113
+ event.preventDefault();
114
+ break;
115
+ case "ArrowUp":
116
+ event.preventDefault();
117
+ if (this.open) {
118
+ this.shiftActiveItemIndex(-1);
119
+ }
120
+ if (!this.comboboxInViewport()) {
121
+ this.el.scrollIntoView();
122
+ }
123
+ break;
124
+ case "ArrowDown":
125
+ event.preventDefault();
126
+ if (this.open) {
127
+ this.shiftActiveItemIndex(1);
128
+ }
129
+ else {
130
+ this.open = true;
131
+ this.ensureRecentSelectedItemIsActive();
132
+ }
133
+ if (!this.comboboxInViewport()) {
134
+ this.el.scrollIntoView();
135
+ }
136
+ break;
137
+ case " ":
138
+ if (!this.textInput.value) {
139
+ if (!this.open) {
140
+ this.open = true;
141
+ this.shiftActiveItemIndex(1);
142
+ }
143
+ event.preventDefault();
144
+ }
145
+ break;
146
+ case "Home":
147
+ if (!this.open) {
148
+ return;
149
+ }
150
+ event.preventDefault();
151
+ this.updateActiveItemIndex(0);
152
+ this.scrollToActiveItem();
153
+ if (!this.comboboxInViewport()) {
154
+ this.el.scrollIntoView();
155
+ }
156
+ break;
157
+ case "End":
158
+ if (!this.open) {
159
+ return;
160
+ }
161
+ event.preventDefault();
162
+ this.updateActiveItemIndex(this.filteredItems.length - 1);
163
+ this.scrollToActiveItem();
164
+ if (!this.comboboxInViewport()) {
165
+ this.el.scrollIntoView();
166
+ }
167
+ break;
168
+ case "Escape":
169
+ if (!this.clearDisabled && !this.open) {
170
+ this.clearValue();
171
+ }
172
+ this.open = false;
173
+ event.preventDefault();
174
+ break;
175
+ case "Enter":
176
+ if (this.activeItemIndex > -1) {
177
+ this.toggleSelection(this.filteredItems[this.activeItemIndex]);
178
+ event.preventDefault();
179
+ }
180
+ else if (this.activeChipIndex > -1) {
181
+ this.removeActiveChip();
182
+ event.preventDefault();
183
+ }
184
+ else if (this.allowCustomValues && this.text) {
185
+ this.addCustomChip(this.text, true);
186
+ event.preventDefault();
187
+ }
188
+ else if (!event.defaultPrevented) {
189
+ if (form.submitForm(this)) {
190
+ event.preventDefault();
191
+ }
192
+ }
193
+ break;
194
+ case "Delete":
195
+ case "Backspace":
196
+ if (this.activeChipIndex > -1) {
197
+ event.preventDefault();
198
+ this.removeActiveChip();
199
+ }
200
+ else if (!this.text && this.isMulti()) {
201
+ event.preventDefault();
202
+ this.removeLastChip();
203
+ }
204
+ break;
205
+ }
206
+ };
207
+ this.toggleCloseEnd = () => {
208
+ this.open = false;
209
+ this.el.removeEventListener("calciteComboboxClose", this.toggleCloseEnd);
210
+ };
211
+ this.toggleOpenEnd = () => {
212
+ this.open = false;
213
+ this.el.removeEventListener("calciteComboboxOpen", this.toggleOpenEnd);
214
+ };
215
+ this.setMaxScrollerHeight = async () => {
216
+ const { listContainerEl, open, referenceEl } = this;
217
+ if (!listContainerEl || !open) {
218
+ return;
219
+ }
220
+ await this.reposition(true);
221
+ const maxScrollerHeight = this.getMaxScrollerHeight();
222
+ listContainerEl.style.maxHeight = maxScrollerHeight > 0 ? `${maxScrollerHeight}px` : "";
223
+ listContainerEl.style.minWidth = `${referenceEl.clientWidth}px`;
224
+ await this.reposition(true);
225
+ };
226
+ this.calciteChipCloseHandler = (comboboxItem) => {
227
+ this.open = false;
228
+ const selection = this.items.find((item) => item === comboboxItem);
229
+ if (selection) {
230
+ this.toggleSelection(selection, false);
231
+ }
232
+ this.calciteComboboxChipClose.emit();
233
+ };
234
+ this.clickHandler = (event) => {
235
+ const composedPath = event.composedPath();
236
+ if (composedPath.some((node) => node.tagName === "CALCITE-CHIP")) {
237
+ this.open = false;
238
+ event.preventDefault();
239
+ return;
240
+ }
241
+ if (composedPath.some((node) => { var _a; return (_a = node.classList) === null || _a === void 0 ? void 0 : _a.contains(CSS$3.button); })) {
242
+ this.clearValue();
243
+ event.preventDefault();
244
+ return;
245
+ }
246
+ this.open = !this.open;
247
+ this.ensureRecentSelectedItemIsActive();
248
+ };
249
+ this.setInactiveIfNotContained = (event) => {
250
+ const composedPath = event.composedPath();
251
+ if (!this.open || composedPath.includes(this.el) || composedPath.includes(this.referenceEl)) {
252
+ return;
253
+ }
254
+ if (this.allowCustomValues && this.text.trim().length) {
255
+ this.addCustomChip(this.text);
256
+ }
257
+ if (this.selectionMode === "single") {
258
+ if (this.textInput) {
259
+ this.textInput.value = "";
260
+ }
261
+ this.text = "";
262
+ this.filterItems("");
263
+ this.updateActiveItemIndex(-1);
264
+ }
265
+ this.open = false;
266
+ };
267
+ this.setFloatingEl = (el) => {
268
+ this.floatingEl = el;
269
+ floatingUi.connectFloatingUI(this, this.referenceEl, this.floatingEl);
270
+ };
271
+ this.setContainerEl = (el) => {
272
+ this.resizeObserver.observe(el);
273
+ this.listContainerEl = el;
274
+ this.transitionEl = el;
275
+ };
276
+ this.setReferenceEl = (el) => {
277
+ this.referenceEl = el;
278
+ floatingUi.connectFloatingUI(this, this.referenceEl, this.floatingEl);
279
+ };
280
+ this.inputHandler = (event) => {
281
+ const value = event.target.value;
282
+ this.text = value;
283
+ this.filterItems(value);
284
+ if (value) {
285
+ this.activeChipIndex = -1;
286
+ }
287
+ };
288
+ this.filterItems = (() => {
289
+ const find = (item, filteredData) => item &&
290
+ filteredData.some(({ label, value }) => {
291
+ if (isGroup(item)) {
292
+ return value === item.label;
293
+ }
294
+ return (value === item.textLabel ||
295
+ value === item.value ||
296
+ label === item.textLabel ||
297
+ label === item.value);
298
+ });
299
+ return debounce.debounce((text) => {
300
+ const filteredData = filter.filter(this.data, text);
301
+ const items = this.getCombinedItems();
302
+ items.forEach((item) => {
303
+ const hidden = !find(item, filteredData);
304
+ item.hidden = hidden;
305
+ const [parent, grandparent] = item.ancestors;
306
+ if (find(parent, filteredData) || find(grandparent, filteredData)) {
307
+ item.hidden = false;
308
+ }
309
+ if (!hidden) {
310
+ item.ancestors.forEach((ancestor) => (ancestor.hidden = false));
311
+ }
312
+ });
313
+ this.filteredItems = this.getFilteredItems();
314
+ this.calciteComboboxFilterChange.emit();
315
+ }, 100);
316
+ })();
317
+ this.internalComboboxChangeEvent = () => {
318
+ this.calciteComboboxChange.emit();
319
+ };
320
+ this.emitComboboxChange = debounce.debounce(this.internalComboboxChangeEvent, 0);
321
+ this.updateItems = () => {
322
+ this.items = this.getItems();
323
+ this.groupItems = this.getGroupItems();
324
+ this.data = this.getData();
325
+ this.selectedItems = this.getSelectedItems();
326
+ this.filteredItems = this.getFilteredItems();
327
+ this.needsIcon = this.getNeedsIcon();
328
+ if (!this.allowCustomValues) {
329
+ this.setMaxScrollerHeight();
330
+ }
331
+ this.groupItems.forEach((groupItem, index, items) => {
332
+ if (index === 0) {
333
+ groupItem.afterEmptyGroup = false;
334
+ }
335
+ const nextGroupItem = items[index + 1];
336
+ if (nextGroupItem) {
337
+ nextGroupItem.afterEmptyGroup = groupItem.children.length === 0;
338
+ }
339
+ });
340
+ };
341
+ this.scrollToActiveItem = () => {
342
+ const activeItem = this.filteredItems[this.activeItemIndex];
343
+ if (!activeItem) {
344
+ return;
345
+ }
346
+ const height = this.calculateSingleItemHeight(activeItem);
347
+ const { offsetHeight, scrollTop } = this.listContainerEl;
348
+ if (offsetHeight + scrollTop < activeItem.offsetTop + height) {
349
+ this.listContainerEl.scrollTop = activeItem.offsetTop - offsetHeight + height;
350
+ }
351
+ else if (activeItem.offsetTop < scrollTop) {
352
+ this.listContainerEl.scrollTop = activeItem.offsetTop;
353
+ }
354
+ };
355
+ this.comboboxFocusHandler = () => {
356
+ var _a;
357
+ if (this.disabled) {
358
+ return;
359
+ }
360
+ (_a = this.textInput) === null || _a === void 0 ? void 0 : _a.focus();
361
+ };
362
+ this.comboboxBlurHandler = (event) => {
363
+ this.setInactiveIfNotContained(event);
364
+ };
365
+ this.clearDisabled = false;
366
+ this.open = false;
367
+ this.disabled = false;
368
+ this.form = undefined;
369
+ this.label = undefined;
370
+ this.placeholder = undefined;
371
+ this.placeholderIcon = undefined;
372
+ this.placeholderIconFlipRtl = false;
373
+ this.maxItems = 0;
374
+ this.name = undefined;
375
+ this.allowCustomValues = undefined;
376
+ this.overlayPositioning = "absolute";
377
+ this.required = false;
378
+ this.selectionMode = "multiple";
379
+ this.scale = "m";
380
+ this.value = null;
381
+ this.flipPlacements = undefined;
382
+ this.messages = undefined;
383
+ this.messageOverrides = undefined;
384
+ this.selectedItems = [];
385
+ this.filteredItems = [];
386
+ this.items = [];
387
+ this.groupItems = [];
388
+ this.needsIcon = undefined;
389
+ this.activeItemIndex = -1;
390
+ this.activeChipIndex = -1;
391
+ this.activeDescendant = "";
392
+ this.text = "";
393
+ this.effectiveLocale = undefined;
394
+ this.defaultMessages = undefined;
395
+ }
396
+ openHandler() {
397
+ openCloseComponent.onToggleOpenCloseComponent(this);
398
+ if (this.disabled) {
399
+ this.open = false;
400
+ return;
401
+ }
402
+ this.setMaxScrollerHeight();
403
+ }
404
+ handleDisabledChange(value) {
405
+ if (!value) {
406
+ this.open = false;
407
+ }
408
+ }
409
+ maxItemsHandler() {
410
+ this.setMaxScrollerHeight();
411
+ }
412
+ overlayPositioningHandler() {
413
+ this.reposition(true);
414
+ }
415
+ valueHandler(value) {
416
+ if (!this.internalValueChangeFlag) {
417
+ const items = this.getItems();
418
+ if (Array.isArray(value)) {
419
+ items.forEach((item) => (item.selected = value.includes(item.value)));
420
+ }
421
+ else if (value) {
422
+ items.forEach((item) => (item.selected = value === item.value));
423
+ }
424
+ else {
425
+ items.forEach((item) => (item.selected = false));
426
+ }
427
+ this.updateItems();
428
+ }
429
+ }
430
+ onMessagesChange() {
431
+ /* wired up by t9n util */
432
+ }
433
+ flipPlacementsHandler() {
434
+ this.setFilteredPlacements();
435
+ this.reposition(true);
436
+ }
437
+ selectedItemsHandler() {
438
+ this.internalValueChangeFlag = true;
439
+ this.value = this.getValue();
440
+ this.internalValueChangeFlag = false;
441
+ }
442
+ //--------------------------------------------------------------------------
443
+ //
444
+ // Event Listeners
445
+ //
446
+ //--------------------------------------------------------------------------
447
+ documentClickHandler(event) {
448
+ if (this.disabled || !dom.isPrimaryPointerButton(event)) {
449
+ return;
450
+ }
451
+ this.setInactiveIfNotContained(event);
452
+ }
453
+ calciteComboboxItemChangeHandler(event) {
454
+ if (this.ignoreSelectedEventsFlag) {
455
+ return;
456
+ }
457
+ const target = event.target;
458
+ const newIndex = this.filteredItems.indexOf(target);
459
+ this.updateActiveItemIndex(newIndex);
460
+ this.toggleSelection(target, target.selected);
461
+ }
462
+ //--------------------------------------------------------------------------
463
+ //
464
+ // Public Methods
465
+ //
466
+ //--------------------------------------------------------------------------
467
+ /**
468
+ * Updates the position of the component.
469
+ *
470
+ * @param delayed
471
+ */
472
+ async reposition(delayed = false) {
473
+ const { floatingEl, referenceEl, placement, overlayPositioning, filteredFlipPlacements } = this;
474
+ return floatingUi.reposition(this, {
475
+ floatingEl,
476
+ referenceEl,
477
+ overlayPositioning,
478
+ placement,
479
+ flipPlacements: filteredFlipPlacements,
480
+ type: "menu",
481
+ }, delayed);
482
+ }
483
+ /** Sets focus on the component. */
484
+ async setFocus() {
485
+ var _a;
486
+ await loadable.componentFocusable(this);
487
+ (_a = this.textInput) === null || _a === void 0 ? void 0 : _a.focus();
488
+ this.activeChipIndex = -1;
489
+ this.activeItemIndex = -1;
490
+ }
491
+ // --------------------------------------------------------------------------
492
+ //
493
+ // Lifecycle
494
+ //
495
+ // --------------------------------------------------------------------------
496
+ connectedCallback() {
497
+ var _a;
498
+ interactive.connectInteractive(this);
499
+ locale.connectLocalized(this);
500
+ t9n.connectMessages(this);
501
+ this.internalValueChangeFlag = true;
502
+ this.value = this.getValue();
503
+ this.internalValueChangeFlag = false;
504
+ (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.observe(this.el, { childList: true, subtree: true });
505
+ label.connectLabel(this);
506
+ form.connectForm(this);
507
+ this.setFilteredPlacements();
508
+ this.reposition(true);
509
+ if (this.open) {
510
+ this.openHandler();
511
+ openCloseComponent.onToggleOpenCloseComponent(this);
512
+ }
513
+ }
514
+ async componentWillLoad() {
515
+ loadable.setUpLoadableComponent(this);
516
+ this.updateItems();
517
+ await t9n.setUpMessages(this);
518
+ }
519
+ componentDidLoad() {
520
+ form.afterConnectDefaultValueSet(this, this.getValue());
521
+ this.reposition(true);
522
+ loadable.setComponentLoaded(this);
523
+ }
524
+ componentDidRender() {
525
+ if (this.el.offsetHeight !== this.inputHeight) {
526
+ this.reposition(true);
527
+ this.inputHeight = this.el.offsetHeight;
528
+ }
529
+ interactive.updateHostInteraction(this);
530
+ }
531
+ disconnectedCallback() {
532
+ var _a, _b;
533
+ (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
534
+ (_b = this.resizeObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
535
+ interactive.disconnectInteractive(this);
536
+ label.disconnectLabel(this);
537
+ form.disconnectForm(this);
538
+ floatingUi.disconnectFloatingUI(this, this.referenceEl, this.floatingEl);
539
+ locale.disconnectLocalized(this);
540
+ t9n.disconnectMessages(this);
541
+ }
542
+ /** when search text is cleared, reset active to */
543
+ textHandler() {
544
+ this.updateActiveItemIndex(-1);
545
+ }
546
+ effectiveLocaleChange() {
547
+ t9n.updateMessages(this, this.effectiveLocale);
548
+ }
549
+ // --------------------------------------------------------------------------
550
+ //
551
+ // Private Methods
552
+ //
553
+ // --------------------------------------------------------------------------
554
+ clearValue() {
555
+ this.ignoreSelectedEventsFlag = true;
556
+ this.items.forEach((el) => (el.selected = false));
557
+ this.ignoreSelectedEventsFlag = false;
558
+ this.selectedItems = [];
559
+ this.emitComboboxChange();
560
+ this.open = false;
561
+ this.updateActiveItemIndex(-1);
562
+ this.resetText();
563
+ this.filterItems("");
564
+ this.setFocus();
565
+ }
566
+ comboboxInViewport() {
567
+ const bounding = this.el.getBoundingClientRect();
568
+ return (bounding.top >= 0 &&
569
+ bounding.left >= 0 &&
570
+ bounding.right <= (window.innerWidth || document.documentElement.clientWidth) &&
571
+ bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight));
572
+ }
573
+ onBeforeOpen() {
574
+ this.scrollToActiveItem();
575
+ this.calciteComboboxBeforeOpen.emit();
576
+ }
577
+ onOpen() {
578
+ this.calciteComboboxOpen.emit();
579
+ }
580
+ onBeforeClose() {
581
+ this.calciteComboboxBeforeClose.emit();
582
+ }
583
+ onClose() {
584
+ this.calciteComboboxClose.emit();
585
+ }
586
+ ensureRecentSelectedItemIsActive() {
587
+ const { selectedItems } = this;
588
+ const targetIndex = selectedItems.length === 0 ? 0 : this.items.indexOf(selectedItems[selectedItems.length - 1]);
589
+ this.updateActiveItemIndex(targetIndex);
590
+ }
591
+ getMaxScrollerHeight() {
592
+ const items = this.getCombinedItems().filter((item) => !item.hidden);
593
+ const { maxItems } = this;
594
+ let itemsToProcess = 0;
595
+ let maxScrollerHeight = 0;
596
+ if (items.length > maxItems) {
597
+ items.forEach((item) => {
598
+ if (itemsToProcess < maxItems && maxItems > 0) {
599
+ const height = this.calculateSingleItemHeight(item);
600
+ if (height > 0) {
601
+ maxScrollerHeight += height;
602
+ itemsToProcess++;
603
+ }
604
+ }
605
+ });
606
+ }
607
+ return maxScrollerHeight;
608
+ }
609
+ calculateSingleItemHeight(item) {
610
+ if (!item) {
611
+ return;
612
+ }
613
+ let height = item.offsetHeight;
614
+ // if item has children items, don't count their height twice
615
+ const children = Array.from(item.querySelectorAll(utils.ComboboxChildSelector));
616
+ children
617
+ .map((child) => child === null || child === void 0 ? void 0 : child.offsetHeight)
618
+ .forEach((offsetHeight) => {
619
+ height -= offsetHeight;
620
+ });
621
+ return height;
622
+ }
623
+ getCombinedItems() {
624
+ return [...this.groupItems, ...this.items];
625
+ }
626
+ toggleSelection(item, value = !item.selected) {
627
+ if (!item) {
628
+ return;
629
+ }
630
+ if (this.isMulti()) {
631
+ item.selected = value;
632
+ this.updateAncestors(item);
633
+ this.selectedItems = this.getSelectedItems();
634
+ this.emitComboboxChange();
635
+ this.resetText();
636
+ this.filterItems("");
637
+ }
638
+ else {
639
+ this.ignoreSelectedEventsFlag = true;
640
+ this.items.forEach((el) => (el.selected = el === item ? value : false));
641
+ this.ignoreSelectedEventsFlag = false;
642
+ this.selectedItems = this.getSelectedItems();
643
+ this.emitComboboxChange();
644
+ if (this.textInput) {
645
+ this.textInput.value = item.textLabel;
646
+ }
647
+ this.open = false;
648
+ this.updateActiveItemIndex(-1);
649
+ this.resetText();
650
+ this.filterItems("");
651
+ }
652
+ }
653
+ updateAncestors(item) {
654
+ if (this.selectionMode !== "ancestors") {
655
+ return;
656
+ }
657
+ const ancestors = utils.getItemAncestors(item);
658
+ const children = utils.getItemChildren(item);
659
+ if (item.selected) {
660
+ ancestors.forEach((el) => {
661
+ el.selected = true;
662
+ });
663
+ }
664
+ else {
665
+ children.forEach((el) => (el.selected = false));
666
+ [...ancestors].forEach((el) => {
667
+ if (!utils.hasActiveChildren(el)) {
668
+ el.selected = false;
669
+ }
670
+ });
671
+ }
672
+ }
673
+ getFilteredItems() {
674
+ return this.items.filter((item) => !item.hidden);
675
+ }
676
+ getSelectedItems() {
677
+ if (!this.isMulti()) {
678
+ const match = this.items.find(({ selected }) => selected);
679
+ return match ? [match] : [];
680
+ }
681
+ return (this.items
682
+ .filter((item) => item.selected && (this.selectionMode !== "ancestors" || !utils.hasActiveChildren(item)))
683
+ /** Preserve order of entered tags */
684
+ .sort((a, b) => {
685
+ const aIdx = this.selectedItems.indexOf(a);
686
+ const bIdx = this.selectedItems.indexOf(b);
687
+ if (aIdx > -1 && bIdx > -1) {
688
+ return aIdx - bIdx;
689
+ }
690
+ return bIdx - aIdx;
691
+ }));
692
+ }
693
+ getData() {
694
+ return this.items.map((item) => ({
695
+ filterDisabled: item.filterDisabled,
696
+ value: item.value,
697
+ label: item.textLabel,
698
+ }));
699
+ }
700
+ getNeedsIcon() {
701
+ return this.selectionMode === "single" && this.items.some((item) => item.icon);
702
+ }
703
+ resetText() {
704
+ if (this.textInput) {
705
+ this.textInput.value = "";
706
+ }
707
+ this.text = "";
708
+ }
709
+ getItems() {
710
+ const items = Array.from(this.el.querySelectorAll(utils.ComboboxItem));
711
+ return items.filter((item) => !item.disabled);
712
+ }
713
+ getGroupItems() {
714
+ return Array.from(this.el.querySelectorAll(utils.ComboboxItemGroup));
715
+ }
716
+ addCustomChip(value, focus) {
717
+ const existingItem = this.items.find((el) => el.textLabel === value);
718
+ if (existingItem) {
719
+ this.toggleSelection(existingItem, true);
720
+ }
721
+ else {
722
+ if (!this.isMulti()) {
723
+ this.toggleSelection(this.selectedItems[this.selectedItems.length - 1], false);
724
+ }
725
+ const item = document.createElement(utils.ComboboxItem);
726
+ item.value = value;
727
+ item.textLabel = value;
728
+ item.selected = true;
729
+ this.el.appendChild(item);
730
+ this.resetText();
731
+ if (focus) {
732
+ this.setFocus();
733
+ }
734
+ this.updateItems();
735
+ this.filterItems("");
736
+ this.emitComboboxChange();
737
+ }
738
+ }
739
+ removeActiveChip() {
740
+ this.toggleSelection(this.selectedItems[this.activeChipIndex], false);
741
+ this.setFocus();
742
+ }
743
+ removeLastChip() {
744
+ this.toggleSelection(this.selectedItems[this.selectedItems.length - 1], false);
745
+ this.setFocus();
746
+ }
747
+ previousChip() {
748
+ if (this.text) {
749
+ return;
750
+ }
751
+ const length = this.selectedItems.length - 1;
752
+ const active = this.activeChipIndex;
753
+ this.activeChipIndex = active === -1 ? length : Math.max(active - 1, 0);
754
+ this.updateActiveItemIndex(-1);
755
+ this.focusChip();
756
+ }
757
+ nextChip() {
758
+ if (this.text || this.activeChipIndex === -1) {
759
+ return;
760
+ }
761
+ const last = this.selectedItems.length - 1;
762
+ const newIndex = this.activeChipIndex + 1;
763
+ if (newIndex > last) {
764
+ this.activeChipIndex = -1;
765
+ this.setFocus();
766
+ }
767
+ else {
768
+ this.activeChipIndex = newIndex;
769
+ this.focusChip();
770
+ }
771
+ this.updateActiveItemIndex(-1);
772
+ }
773
+ focusChip() {
774
+ var _a;
775
+ const guid = (_a = this.selectedItems[this.activeChipIndex]) === null || _a === void 0 ? void 0 : _a.guid;
776
+ const chip = guid
777
+ ? this.referenceEl.querySelector(`#${chipUidPrefix}${guid}`)
778
+ : null;
779
+ chip === null || chip === void 0 ? void 0 : chip.setFocus();
780
+ }
781
+ shiftActiveItemIndex(delta) {
782
+ const { length } = this.filteredItems;
783
+ const newIndex = (this.activeItemIndex + length + delta) % length;
784
+ this.updateActiveItemIndex(newIndex);
785
+ this.scrollToActiveItem();
786
+ }
787
+ updateActiveItemIndex(index) {
788
+ this.activeItemIndex = index;
789
+ let activeDescendant = null;
790
+ this.filteredItems.forEach((el, i) => {
791
+ if (i === index) {
792
+ el.active = true;
793
+ activeDescendant = `${itemUidPrefix}${el.guid}`;
794
+ }
795
+ else {
796
+ el.active = false;
797
+ }
798
+ });
799
+ this.activeDescendant = activeDescendant;
800
+ if (this.activeItemIndex > -1) {
801
+ this.activeChipIndex = -1;
802
+ }
803
+ }
804
+ isMulti() {
805
+ return this.selectionMode !== "single";
806
+ }
807
+ //--------------------------------------------------------------------------
808
+ //
809
+ // Render Methods
810
+ //
811
+ //--------------------------------------------------------------------------
812
+ renderChips() {
813
+ const { activeChipIndex, scale, selectionMode, messages } = this;
814
+ return this.selectedItems.map((item, i) => {
815
+ const chipClasses = {
816
+ chip: true,
817
+ "chip--active": activeChipIndex === i,
818
+ };
819
+ const ancestors = [...utils.getItemAncestors(item)].reverse();
820
+ const pathLabel = [...ancestors, item].map((el) => el.textLabel);
821
+ const label = selectionMode !== "ancestors" ? item.textLabel : pathLabel.join(" / ");
822
+ return (index.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));
823
+ });
824
+ }
825
+ renderInput() {
826
+ const { guid, disabled, placeholder, selectionMode, selectedItems, open } = this;
827
+ const single = selectionMode === "single";
828
+ const selectedItem = selectedItems[0];
829
+ const showLabel = !open && single && !!selectedItem;
830
+ return (index.h("span", { class: {
831
+ "input-wrap": true,
832
+ "input-wrap--single": single,
833
+ } }, showLabel && (index.h("span", { class: {
834
+ label: true,
835
+ "label--icon": !!(selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.icon),
836
+ }, key: "label" }, selectedItem.textLabel)), index.h("input", { "aria-activedescendant": this.activeDescendant, "aria-autocomplete": "list", "aria-controls": `${listboxUidPrefix}${guid}`, "aria-label": label.getLabelText(this), class: {
837
+ input: true,
838
+ "input--single": true,
839
+ "input--transparent": this.activeChipIndex > -1,
840
+ "input--hidden": showLabel,
841
+ "input--icon": !!this.placeholderIcon,
842
+ }, disabled: disabled, id: `${inputUidPrefix}${guid}`, key: "input", onBlur: this.comboboxBlurHandler, onFocus: this.comboboxFocusHandler, onInput: this.inputHandler, placeholder: placeholder, type: "text",
843
+ // eslint-disable-next-line react/jsx-sort-props
844
+ ref: (el) => (this.textInput = el) })));
845
+ }
846
+ renderListBoxOptions() {
847
+ return this.filteredItems.map((item) => (index.h("li", { "aria-selected": dom.toAriaBoolean(item.selected), id: item.guid ? `${itemUidPrefix}${item.guid}` : null, role: "option", tabindex: "-1" }, item.textLabel)));
848
+ }
849
+ renderFloatingUIContainer() {
850
+ const { setFloatingEl, setContainerEl, open } = this;
851
+ const classes = {
852
+ [utils.CSS.listContainer]: true,
853
+ [floatingUi.FloatingCSS.animation]: true,
854
+ [floatingUi.FloatingCSS.animationActive]: open,
855
+ };
856
+ return (index.h("div", { "aria-hidden": "true", class: {
857
+ "floating-ui-container": true,
858
+ "floating-ui-container--active": open,
859
+ },
860
+ // eslint-disable-next-line react/jsx-sort-props
861
+ ref: setFloatingEl }, index.h("div", { class: classes,
862
+ // eslint-disable-next-line react/jsx-sort-props
863
+ ref: setContainerEl }, index.h("ul", { class: { list: true, "list--hide": !open } }, index.h("slot", null)))));
864
+ }
865
+ renderIconStart() {
866
+ const { selectedItems, placeholderIcon, selectionMode, placeholderIconFlipRtl } = this;
867
+ const selectedItem = selectedItems[0];
868
+ const selectedIcon = selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.icon;
869
+ const singleSelectionMode = selectionMode === "single";
870
+ const iconAtStart = !this.open && selectedItem
871
+ ? !!selectedIcon && singleSelectionMode
872
+ : !!this.placeholderIcon && (!selectedItem || singleSelectionMode);
873
+ return (iconAtStart && (index.h("span", { class: "icon-start" }, index.h("calcite-icon", { class: "selected-icon", flipRtl: this.open && selectedItem ? selectedItem.iconFlipRtl : placeholderIconFlipRtl, icon: !this.open && selectedItem ? selectedIcon : placeholderIcon, scale: "s" }))));
874
+ }
875
+ renderIconEnd() {
876
+ const { open } = this;
877
+ return (index.h("span", { class: "icon-end" }, index.h("calcite-icon", { icon: open ? "chevron-up" : "chevron-down", scale: "s" })));
878
+ }
879
+ render() {
880
+ var _a;
881
+ const { guid, label: label$1, open } = this;
882
+ const single = this.selectionMode === "single";
883
+ const isClearable = !this.clearDisabled && ((_a = this.value) === null || _a === void 0 ? void 0 : _a.length) > 0;
884
+ return (index.h(index.Host, { onClick: this.comboboxFocusHandler }, index.h("div", { "aria-autocomplete": "list", "aria-controls": `${listboxUidPrefix}${guid}`, "aria-expanded": dom.toAriaBoolean(open), "aria-haspopup": "listbox", "aria-label": label.getLabelText(this), "aria-live": "polite", "aria-owns": `${listboxUidPrefix}${guid}`, class: {
885
+ wrapper: true,
886
+ "wrapper--single": single || !this.selectedItems.length,
887
+ "wrapper--active": open,
888
+ }, onClick: this.clickHandler, onKeyDown: this.keyDownHandler, role: "combobox",
889
+ // eslint-disable-next-line react/jsx-sort-props
890
+ ref: this.setReferenceEl }, index.h("div", { class: "grid-input" }, this.renderIconStart(), !single && this.renderChips(), index.h("label", { class: "screen-readers-only", htmlFor: `${inputUidPrefix}${guid}`, id: `${labelUidPrefix}${guid}` }, label$1), this.renderInput()), isClearable ? (index.h(XButton, { disabled: this.disabled, key: "close-button", label: this.messages.clear, scale: this.scale })) : null, this.renderIconEnd()), index.h("ul", { "aria-labelledby": `${labelUidPrefix}${guid}`, "aria-multiselectable": "true", class: "screen-readers-only", id: `${listboxUidPrefix}${guid}`, role: "listbox", tabIndex: -1 }, this.renderListBoxOptions()), this.renderFloatingUIContainer(), index.h(form.HiddenFormInputSlot, { component: this })));
891
+ }
892
+ static get assetsDirs() { return ["assets"]; }
893
+ get el() { return index.getElement(this); }
894
+ static get watchers() { return {
895
+ "open": ["openHandler"],
896
+ "disabled": ["handleDisabledChange"],
897
+ "maxItems": ["maxItemsHandler"],
898
+ "overlayPositioning": ["overlayPositioningHandler"],
899
+ "value": ["valueHandler"],
900
+ "messageOverrides": ["onMessagesChange"],
901
+ "flipPlacements": ["flipPlacementsHandler"],
902
+ "selectedItems": ["selectedItemsHandler"],
903
+ "text": ["textHandler"],
904
+ "effectiveLocale": ["effectiveLocaleChange"]
905
+ }; }
906
+ };
907
907
  Combobox.style = comboboxCss;
908
908
 
909
909
  /*!
@@ -927,107 +927,107 @@ const CSS$2 = {
927
927
 
928
928
  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}";
929
929
 
930
- const ComboboxItem = class {
931
- constructor(hostRef) {
932
- index.registerInstance(this, hostRef);
933
- this.calciteComboboxItemChange = index.createEvent(this, "calciteComboboxItemChange", 6);
934
- /** Specifies the scale of the combobox-item controlled by parent, defaults to m */
935
- this.scale = "m";
936
- this.itemClickHandler = (event) => {
937
- event.preventDefault();
938
- this.toggleSelected();
939
- };
940
- this.disabled = false;
941
- this.selected = false;
942
- this.active = false;
943
- this.ancestors = undefined;
944
- this.guid = guid.guid();
945
- this.icon = undefined;
946
- this.iconFlipRtl = false;
947
- this.textLabel = undefined;
948
- this.value = undefined;
949
- this.filterDisabled = undefined;
950
- }
951
- selectedWatchHandler() {
952
- this.calciteComboboxItemChange.emit();
953
- }
954
- // --------------------------------------------------------------------------
955
- //
956
- // Lifecycle
957
- //
958
- // --------------------------------------------------------------------------
959
- connectedCallback() {
960
- this.ancestors = utils.getAncestors(this.el);
961
- this.scale = dom.getElementProp(this.el, "scale", this.scale);
962
- conditionalSlot.connectConditionalSlotComponent(this);
963
- interactive.connectInteractive(this);
964
- }
965
- disconnectedCallback() {
966
- conditionalSlot.disconnectConditionalSlotComponent(this);
967
- interactive.disconnectInteractive(this);
968
- }
969
- componentDidRender() {
970
- interactive.updateHostInteraction(this);
971
- }
972
- // --------------------------------------------------------------------------
973
- //
974
- // Private Methods
975
- //
976
- // --------------------------------------------------------------------------
977
- toggleSelected() {
978
- if (this.disabled) {
979
- return;
980
- }
981
- this.selected = !this.selected;
982
- }
983
- // --------------------------------------------------------------------------
984
- //
985
- // Render Methods
986
- //
987
- // --------------------------------------------------------------------------
988
- renderIcon(iconPath) {
989
- return this.icon ? (index.h("calcite-icon", { class: {
990
- [CSS$2.custom]: !!this.icon,
991
- [CSS$2.iconActive]: this.icon && this.selected,
992
- [CSS$2.iconIndent]: true,
993
- }, flipRtl: this.iconFlipRtl, icon: this.icon || iconPath, key: "icon", scale: this.scale === "l" ? "m" : "s" })) : null;
994
- }
995
- renderSelectIndicator(showDot, iconPath) {
996
- return showDot ? (index.h("span", { class: {
997
- [CSS$2.icon]: true,
998
- [CSS$2.dot]: true,
999
- [CSS$2.iconIndent]: true,
1000
- } })) : (index.h("calcite-icon", { class: {
1001
- [CSS$2.icon]: true,
1002
- [CSS$2.iconActive]: this.selected,
1003
- [CSS$2.iconIndent]: true,
1004
- }, flipRtl: this.iconFlipRtl, icon: iconPath, key: "indicator", scale: this.scale === "l" ? "m" : "s" }));
1005
- }
1006
- renderChildren() {
1007
- if (dom.getSlotted(this.el)) {
1008
- return (index.h("ul", { key: "default-slot-container" }, index.h("slot", null)));
1009
- }
1010
- return null;
1011
- }
1012
- render() {
1013
- const isSingleSelect = dom.getElementProp(this.el, "selection-mode", "multiple") === "single";
1014
- const showDot = isSingleSelect && !this.disabled;
1015
- const defaultIcon = isSingleSelect ? "dot" : "check";
1016
- const iconPath = this.disabled ? "circle-disallowed" : defaultIcon;
1017
- const classes = {
1018
- [CSS$2.label]: true,
1019
- [CSS$2.selected]: this.selected,
1020
- [CSS$2.active]: this.active,
1021
- [CSS$2.single]: isSingleSelect,
1022
- };
1023
- const depth = utils.getDepth(this.el);
1024
- return (index.h(index.Host, { "aria-hidden": "true" }, index.h("div", { class: `container scale--${this.scale}`, style: { "--calcite-combobox-item-spacing-indent-multiplier": `${depth}` } }, index.h("li", { class: classes, id: this.guid, onClick: this.itemClickHandler }, this.renderSelectIndicator(showDot, iconPath), this.renderIcon(iconPath), index.h("span", { class: "title" }, this.textLabel)), this.renderChildren())));
1025
- }
1026
- get el() { return index.getElement(this); }
1027
- static get watchers() { return {
1028
- "selected": ["selectedWatchHandler"]
1029
- }; }
1030
- };
930
+ const ComboboxItem = class {
931
+ constructor(hostRef) {
932
+ index.registerInstance(this, hostRef);
933
+ this.calciteComboboxItemChange = index.createEvent(this, "calciteComboboxItemChange", 6);
934
+ /** Specifies the scale of the combobox-item controlled by parent, defaults to m */
935
+ this.scale = "m";
936
+ this.itemClickHandler = (event) => {
937
+ event.preventDefault();
938
+ this.toggleSelected();
939
+ };
940
+ this.disabled = false;
941
+ this.selected = false;
942
+ this.active = false;
943
+ this.ancestors = undefined;
944
+ this.guid = guid.guid();
945
+ this.icon = undefined;
946
+ this.iconFlipRtl = false;
947
+ this.textLabel = undefined;
948
+ this.value = undefined;
949
+ this.filterDisabled = undefined;
950
+ }
951
+ selectedWatchHandler() {
952
+ this.calciteComboboxItemChange.emit();
953
+ }
954
+ // --------------------------------------------------------------------------
955
+ //
956
+ // Lifecycle
957
+ //
958
+ // --------------------------------------------------------------------------
959
+ connectedCallback() {
960
+ this.ancestors = utils.getAncestors(this.el);
961
+ this.scale = dom.getElementProp(this.el, "scale", this.scale);
962
+ conditionalSlot.connectConditionalSlotComponent(this);
963
+ interactive.connectInteractive(this);
964
+ }
965
+ disconnectedCallback() {
966
+ conditionalSlot.disconnectConditionalSlotComponent(this);
967
+ interactive.disconnectInteractive(this);
968
+ }
969
+ componentDidRender() {
970
+ interactive.updateHostInteraction(this);
971
+ }
972
+ // --------------------------------------------------------------------------
973
+ //
974
+ // Private Methods
975
+ //
976
+ // --------------------------------------------------------------------------
977
+ toggleSelected() {
978
+ if (this.disabled) {
979
+ return;
980
+ }
981
+ this.selected = !this.selected;
982
+ }
983
+ // --------------------------------------------------------------------------
984
+ //
985
+ // Render Methods
986
+ //
987
+ // --------------------------------------------------------------------------
988
+ renderIcon(iconPath) {
989
+ return this.icon ? (index.h("calcite-icon", { class: {
990
+ [CSS$2.custom]: !!this.icon,
991
+ [CSS$2.iconActive]: this.icon && this.selected,
992
+ [CSS$2.iconIndent]: true,
993
+ }, flipRtl: this.iconFlipRtl, icon: this.icon || iconPath, key: "icon", scale: this.scale === "l" ? "m" : "s" })) : null;
994
+ }
995
+ renderSelectIndicator(showDot, iconPath) {
996
+ return showDot ? (index.h("span", { class: {
997
+ [CSS$2.icon]: true,
998
+ [CSS$2.dot]: true,
999
+ [CSS$2.iconIndent]: true,
1000
+ } })) : (index.h("calcite-icon", { class: {
1001
+ [CSS$2.icon]: true,
1002
+ [CSS$2.iconActive]: this.selected,
1003
+ [CSS$2.iconIndent]: true,
1004
+ }, flipRtl: this.iconFlipRtl, icon: iconPath, key: "indicator", scale: this.scale === "l" ? "m" : "s" }));
1005
+ }
1006
+ renderChildren() {
1007
+ if (dom.getSlotted(this.el)) {
1008
+ return (index.h("ul", { key: "default-slot-container" }, index.h("slot", null)));
1009
+ }
1010
+ return null;
1011
+ }
1012
+ render() {
1013
+ const isSingleSelect = dom.getElementProp(this.el, "selection-mode", "multiple") === "single";
1014
+ const showDot = isSingleSelect && !this.disabled;
1015
+ const defaultIcon = isSingleSelect ? "dot" : "check";
1016
+ const iconPath = this.disabled ? "circle-disallowed" : defaultIcon;
1017
+ const classes = {
1018
+ [CSS$2.label]: true,
1019
+ [CSS$2.selected]: this.selected,
1020
+ [CSS$2.active]: this.active,
1021
+ [CSS$2.single]: isSingleSelect,
1022
+ };
1023
+ const depth = utils.getDepth(this.el);
1024
+ return (index.h(index.Host, { "aria-hidden": "true" }, index.h("div", { class: `container scale--${this.scale}`, style: { "--calcite-combobox-item-spacing-indent-multiplier": `${depth}` } }, index.h("li", { class: classes, id: this.guid, onClick: this.itemClickHandler }, this.renderSelectIndicator(showDot, iconPath), this.renderIcon(iconPath), index.h("span", { class: "title" }, this.textLabel)), this.renderChildren())));
1025
+ }
1026
+ get el() { return index.getElement(this); }
1027
+ static get watchers() { return {
1028
+ "selected": ["selectedWatchHandler"]
1029
+ }; }
1030
+ };
1031
1031
  ComboboxItem.style = comboboxItemCss;
1032
1032
 
1033
1033
  /*!
@@ -1041,394 +1041,394 @@ const SLOTS = {
1041
1041
 
1042
1042
  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}";
1043
1043
 
1044
- const Dropdown = class {
1045
- constructor(hostRef) {
1046
- index.registerInstance(this, hostRef);
1047
- this.calciteDropdownSelect = index.createEvent(this, "calciteDropdownSelect", 6);
1048
- this.calciteDropdownBeforeClose = index.createEvent(this, "calciteDropdownBeforeClose", 6);
1049
- this.calciteDropdownClose = index.createEvent(this, "calciteDropdownClose", 6);
1050
- this.calciteDropdownBeforeOpen = index.createEvent(this, "calciteDropdownBeforeOpen", 6);
1051
- this.calciteDropdownOpen = index.createEvent(this, "calciteDropdownOpen", 6);
1052
- this.items = [];
1053
- this.groups = [];
1054
- this.mutationObserver = observers.createObserver("mutation", () => this.updateItems());
1055
- this.resizeObserver = observers.createObserver("resize", (entries) => this.resizeObserverCallback(entries));
1056
- this.openTransitionProp = "opacity";
1057
- this.guid = `calcite-dropdown-${guid.guid()}`;
1058
- this.defaultAssignedElements = [];
1059
- //--------------------------------------------------------------------------
1060
- //
1061
- // Private Methods
1062
- //
1063
- //--------------------------------------------------------------------------
1064
- this.slotChangeHandler = (event) => {
1065
- this.defaultAssignedElements = event.target.assignedElements({
1066
- flatten: true,
1067
- });
1068
- this.updateItems();
1069
- };
1070
- this.setFilteredPlacements = () => {
1071
- const { el, flipPlacements } = this;
1072
- this.filteredFlipPlacements = flipPlacements
1073
- ? floatingUi.filterComputedPlacements(flipPlacements, el)
1074
- : null;
1075
- };
1076
- this.updateTriggers = (event) => {
1077
- this.triggers = event.target.assignedElements({
1078
- flatten: true,
1079
- });
1080
- this.reposition(true);
1081
- };
1082
- this.updateItems = () => {
1083
- this.items = this.groups
1084
- .map((group) => Array.from(group === null || group === void 0 ? void 0 : group.querySelectorAll("calcite-dropdown-item")))
1085
- .reduce((previousValue, currentValue) => [...previousValue, ...currentValue], []);
1086
- this.updateSelectedItems();
1087
- this.reposition(true);
1088
- };
1089
- this.updateGroups = (event) => {
1090
- const groups = event.target
1091
- .assignedElements({ flatten: true })
1092
- .filter((el) => el === null || el === void 0 ? void 0 : el.matches("calcite-dropdown-group"));
1093
- this.groups = groups;
1094
- this.updateItems();
1095
- };
1096
- this.resizeObserverCallback = (entries) => {
1097
- entries.forEach((entry) => {
1098
- const { target } = entry;
1099
- if (target === this.referenceEl) {
1100
- this.setDropdownWidth();
1101
- }
1102
- else if (target === this.scrollerEl) {
1103
- this.setMaxScrollerHeight();
1104
- }
1105
- });
1106
- };
1107
- this.setDropdownWidth = () => {
1108
- const { referenceEl, scrollerEl } = this;
1109
- const referenceElWidth = referenceEl === null || referenceEl === void 0 ? void 0 : referenceEl.clientWidth;
1110
- if (!referenceElWidth || !scrollerEl) {
1111
- return;
1112
- }
1113
- scrollerEl.style.minWidth = `${referenceElWidth}px`;
1114
- };
1115
- this.setMaxScrollerHeight = () => {
1116
- const { scrollerEl } = this;
1117
- if (!scrollerEl) {
1118
- return;
1119
- }
1120
- this.reposition(true);
1121
- const maxScrollerHeight = this.getMaxScrollerHeight();
1122
- scrollerEl.style.maxHeight = maxScrollerHeight > 0 ? `${maxScrollerHeight}px` : "";
1123
- this.reposition(true);
1124
- };
1125
- this.setScrollerAndTransitionEl = (el) => {
1126
- this.resizeObserver.observe(el);
1127
- this.scrollerEl = el;
1128
- this.transitionEl = el;
1129
- };
1130
- this.setReferenceEl = (el) => {
1131
- this.referenceEl = el;
1132
- floatingUi.connectFloatingUI(this, this.referenceEl, this.floatingEl);
1133
- this.resizeObserver.observe(el);
1134
- };
1135
- this.setFloatingEl = (el) => {
1136
- this.floatingEl = el;
1137
- floatingUi.connectFloatingUI(this, this.referenceEl, this.floatingEl);
1138
- };
1139
- this.keyDownHandler = (event) => {
1140
- const target = event.target;
1141
- if (target !== this.referenceEl) {
1142
- return;
1143
- }
1144
- const { defaultPrevented, key: key$1 } = event;
1145
- if (defaultPrevented) {
1146
- return;
1147
- }
1148
- if (this.open) {
1149
- if (key$1 === "Escape") {
1150
- this.closeCalciteDropdown();
1151
- event.preventDefault();
1152
- return;
1153
- }
1154
- else if (event.shiftKey && key$1 === "Tab") {
1155
- this.closeCalciteDropdown();
1156
- event.preventDefault();
1157
- return;
1158
- }
1159
- }
1160
- if (key.isActivationKey(key$1)) {
1161
- this.openCalciteDropdown();
1162
- event.preventDefault();
1163
- }
1164
- else if (key$1 === "Escape") {
1165
- this.closeCalciteDropdown();
1166
- event.preventDefault();
1167
- }
1168
- };
1169
- this.focusOnFirstActiveOrFirstItem = () => {
1170
- this.getFocusableElement(this.items.find((item) => item.selected) || this.items[0]);
1171
- };
1172
- this.toggleOpenEnd = () => {
1173
- this.focusOnFirstActiveOrFirstItem();
1174
- this.el.removeEventListener("calciteDropdownOpen", this.toggleOpenEnd);
1175
- };
1176
- this.openCalciteDropdown = () => {
1177
- this.open = !this.open;
1178
- if (this.open) {
1179
- this.el.addEventListener("calciteDropdownOpen", this.toggleOpenEnd);
1180
- }
1181
- };
1182
- this.open = false;
1183
- this.closeOnSelectDisabled = false;
1184
- this.disabled = false;
1185
- this.flipPlacements = undefined;
1186
- this.maxItems = 0;
1187
- this.overlayPositioning = "absolute";
1188
- this.placement = floatingUi.defaultMenuPlacement;
1189
- this.scale = "m";
1190
- this.selectedItems = [];
1191
- this.type = "click";
1192
- this.width = undefined;
1193
- }
1194
- openHandler(value) {
1195
- if (!this.disabled) {
1196
- if (value) {
1197
- this.reposition(true);
1198
- }
1199
- openCloseComponent.onToggleOpenCloseComponent(this);
1200
- return;
1201
- }
1202
- this.open = false;
1203
- }
1204
- handleDisabledChange(value) {
1205
- if (!value) {
1206
- this.open = false;
1207
- }
1208
- }
1209
- flipPlacementsHandler() {
1210
- this.setFilteredPlacements();
1211
- this.reposition(true);
1212
- }
1213
- maxItemsHandler() {
1214
- this.setMaxScrollerHeight();
1215
- }
1216
- overlayPositioningHandler() {
1217
- this.reposition(true);
1218
- }
1219
- placementHandler() {
1220
- this.reposition(true);
1221
- }
1222
- //--------------------------------------------------------------------------
1223
- //
1224
- // Public Methods
1225
- //
1226
- //--------------------------------------------------------------------------
1227
- /** Sets focus on the component's first focusable element. */
1228
- async setFocus() {
1229
- await loadable.componentFocusable(this);
1230
- this.el.focus();
1231
- }
1232
- //--------------------------------------------------------------------------
1233
- //
1234
- // Lifecycle
1235
- //
1236
- //--------------------------------------------------------------------------
1237
- connectedCallback() {
1238
- var _a;
1239
- (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.observe(this.el, { childList: true, subtree: true });
1240
- this.setFilteredPlacements();
1241
- this.reposition(true);
1242
- if (this.open) {
1243
- this.openHandler(this.open);
1244
- openCloseComponent.onToggleOpenCloseComponent(this);
1245
- }
1246
- interactive.connectInteractive(this);
1247
- }
1248
- componentWillLoad() {
1249
- loadable.setUpLoadableComponent(this);
1250
- }
1251
- componentDidLoad() {
1252
- loadable.setComponentLoaded(this);
1253
- this.reposition(true);
1254
- }
1255
- componentDidRender() {
1256
- interactive.updateHostInteraction(this);
1257
- }
1258
- disconnectedCallback() {
1259
- var _a, _b;
1260
- (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
1261
- (_b = this.resizeObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
1262
- interactive.disconnectInteractive(this);
1263
- floatingUi.disconnectFloatingUI(this, this.referenceEl, this.floatingEl);
1264
- }
1265
- render() {
1266
- const { open, guid } = this;
1267
- return (index.h(index.Host, null, index.h("div", { class: "calcite-trigger-container", id: `${guid}-menubutton`, onClick: this.openCalciteDropdown, onKeyDown: this.keyDownHandler,
1268
- // eslint-disable-next-line react/jsx-sort-props
1269
- ref: this.setReferenceEl }, index.h("slot", { "aria-controls": `${guid}-menu`, "aria-expanded": dom.toAriaBoolean(open), "aria-haspopup": "menu", name: SLOTS.dropdownTrigger, onSlotchange: this.updateTriggers })), index.h("div", { "aria-hidden": dom.toAriaBoolean(!open), class: "calcite-dropdown-wrapper",
1270
- // eslint-disable-next-line react/jsx-sort-props
1271
- ref: this.setFloatingEl }, index.h("div", { "aria-labelledby": `${guid}-menubutton`, class: {
1272
- ["calcite-dropdown-content"]: true,
1273
- [floatingUi.FloatingCSS.animation]: true,
1274
- [floatingUi.FloatingCSS.animationActive]: open,
1275
- }, id: `${guid}-menu`, role: "menu",
1276
- // eslint-disable-next-line react/jsx-sort-props
1277
- ref: this.setScrollerAndTransitionEl }, index.h("slot", { onSlotchange: this.updateGroups })))));
1278
- }
1279
- //--------------------------------------------------------------------------
1280
- //
1281
- // Public Methods
1282
- //
1283
- //--------------------------------------------------------------------------
1284
- /**
1285
- * Updates the position of the component.
1286
- *
1287
- * @param delayed
1288
- */
1289
- async reposition(delayed = false) {
1290
- const { floatingEl, referenceEl, placement, overlayPositioning, filteredFlipPlacements } = this;
1291
- return floatingUi.reposition(this, {
1292
- floatingEl,
1293
- referenceEl,
1294
- overlayPositioning,
1295
- placement,
1296
- flipPlacements: filteredFlipPlacements,
1297
- type: "menu",
1298
- }, delayed);
1299
- }
1300
- closeCalciteDropdownOnClick(event) {
1301
- if (this.disabled ||
1302
- !dom.isPrimaryPointerButton(event) ||
1303
- !this.open ||
1304
- event.composedPath().includes(this.el)) {
1305
- return;
1306
- }
1307
- this.closeCalciteDropdown(false);
1308
- }
1309
- closeCalciteDropdownOnEvent(event) {
1310
- this.closeCalciteDropdown();
1311
- event.stopPropagation();
1312
- }
1313
- closeCalciteDropdownOnOpenEvent(event) {
1314
- if (event.composedPath().includes(this.el)) {
1315
- return;
1316
- }
1317
- this.open = false;
1318
- }
1319
- pointerEnterHandler() {
1320
- if (this.disabled || this.type !== "hover") {
1321
- return;
1322
- }
1323
- this.openCalciteDropdown();
1324
- }
1325
- pointerLeaveHandler() {
1326
- if (this.disabled || this.type !== "hover") {
1327
- return;
1328
- }
1329
- this.closeCalciteDropdown();
1330
- }
1331
- calciteInternalDropdownItemKeyEvent(event) {
1332
- const { keyboardEvent } = event.detail;
1333
- const target = keyboardEvent.target;
1334
- switch (keyboardEvent.key) {
1335
- case "Tab":
1336
- if (this.items.indexOf(target) === this.items.length - 1 && !keyboardEvent.shiftKey) {
1337
- this.closeCalciteDropdown();
1338
- }
1339
- else if (this.items.indexOf(target) === 0 && keyboardEvent.shiftKey) {
1340
- this.closeCalciteDropdown();
1341
- }
1342
- break;
1343
- case "ArrowDown":
1344
- dom.focusElementInGroup(this.items, target, "next");
1345
- break;
1346
- case "ArrowUp":
1347
- dom.focusElementInGroup(this.items, target, "previous");
1348
- break;
1349
- case "Home":
1350
- dom.focusElementInGroup(this.items, target, "first");
1351
- break;
1352
- case "End":
1353
- dom.focusElementInGroup(this.items, target, "last");
1354
- break;
1355
- }
1356
- event.stopPropagation();
1357
- }
1358
- handleItemSelect(event) {
1359
- this.updateSelectedItems();
1360
- event.stopPropagation();
1361
- this.calciteDropdownSelect.emit();
1362
- if (!this.closeOnSelectDisabled ||
1363
- event.detail.requestedDropdownGroup.selectionMode === "none") {
1364
- this.closeCalciteDropdown();
1365
- }
1366
- event.stopPropagation();
1367
- }
1368
- onBeforeOpen() {
1369
- this.calciteDropdownBeforeOpen.emit();
1370
- }
1371
- onOpen() {
1372
- this.calciteDropdownOpen.emit();
1373
- }
1374
- onBeforeClose() {
1375
- this.calciteDropdownBeforeClose.emit();
1376
- }
1377
- onClose() {
1378
- this.calciteDropdownClose.emit();
1379
- }
1380
- updateSelectedItems() {
1381
- this.selectedItems = this.items.filter((item) => item.selected);
1382
- }
1383
- getMaxScrollerHeight() {
1384
- const { maxItems, items } = this;
1385
- let itemsToProcess = 0;
1386
- let maxScrollerHeight = 0;
1387
- let groupHeaderHeight;
1388
- this.groups.forEach((group) => {
1389
- if (maxItems > 0 && itemsToProcess < maxItems) {
1390
- Array.from(group.children).forEach((item, index) => {
1391
- if (index === 0) {
1392
- if (isNaN(groupHeaderHeight)) {
1393
- groupHeaderHeight = item.offsetTop;
1394
- }
1395
- maxScrollerHeight += groupHeaderHeight;
1396
- }
1397
- if (itemsToProcess < maxItems) {
1398
- maxScrollerHeight += item.offsetHeight;
1399
- itemsToProcess += 1;
1400
- }
1401
- });
1402
- }
1403
- });
1404
- return items.length > maxItems ? maxScrollerHeight : 0;
1405
- }
1406
- closeCalciteDropdown(focusTrigger = true) {
1407
- this.open = false;
1408
- if (focusTrigger) {
1409
- dom.focusElement(this.triggers[0]);
1410
- }
1411
- }
1412
- getFocusableElement(item) {
1413
- if (!item) {
1414
- return;
1415
- }
1416
- const target = item.attributes.isLink
1417
- ? item.shadowRoot.querySelector("a")
1418
- : item;
1419
- dom.focusElement(target);
1420
- }
1421
- static get delegatesFocus() { return true; }
1422
- get el() { return index.getElement(this); }
1423
- static get watchers() { return {
1424
- "open": ["openHandler"],
1425
- "disabled": ["handleDisabledChange"],
1426
- "flipPlacements": ["flipPlacementsHandler"],
1427
- "maxItems": ["maxItemsHandler"],
1428
- "overlayPositioning": ["overlayPositioningHandler"],
1429
- "placement": ["placementHandler"]
1430
- }; }
1431
- };
1044
+ const Dropdown = class {
1045
+ constructor(hostRef) {
1046
+ index.registerInstance(this, hostRef);
1047
+ this.calciteDropdownSelect = index.createEvent(this, "calciteDropdownSelect", 6);
1048
+ this.calciteDropdownBeforeClose = index.createEvent(this, "calciteDropdownBeforeClose", 6);
1049
+ this.calciteDropdownClose = index.createEvent(this, "calciteDropdownClose", 6);
1050
+ this.calciteDropdownBeforeOpen = index.createEvent(this, "calciteDropdownBeforeOpen", 6);
1051
+ this.calciteDropdownOpen = index.createEvent(this, "calciteDropdownOpen", 6);
1052
+ this.items = [];
1053
+ this.groups = [];
1054
+ this.mutationObserver = observers.createObserver("mutation", () => this.updateItems());
1055
+ this.resizeObserver = observers.createObserver("resize", (entries) => this.resizeObserverCallback(entries));
1056
+ this.openTransitionProp = "opacity";
1057
+ this.guid = `calcite-dropdown-${guid.guid()}`;
1058
+ this.defaultAssignedElements = [];
1059
+ //--------------------------------------------------------------------------
1060
+ //
1061
+ // Private Methods
1062
+ //
1063
+ //--------------------------------------------------------------------------
1064
+ this.slotChangeHandler = (event) => {
1065
+ this.defaultAssignedElements = event.target.assignedElements({
1066
+ flatten: true,
1067
+ });
1068
+ this.updateItems();
1069
+ };
1070
+ this.setFilteredPlacements = () => {
1071
+ const { el, flipPlacements } = this;
1072
+ this.filteredFlipPlacements = flipPlacements
1073
+ ? floatingUi.filterComputedPlacements(flipPlacements, el)
1074
+ : null;
1075
+ };
1076
+ this.updateTriggers = (event) => {
1077
+ this.triggers = event.target.assignedElements({
1078
+ flatten: true,
1079
+ });
1080
+ this.reposition(true);
1081
+ };
1082
+ this.updateItems = () => {
1083
+ this.items = this.groups
1084
+ .map((group) => Array.from(group === null || group === void 0 ? void 0 : group.querySelectorAll("calcite-dropdown-item")))
1085
+ .reduce((previousValue, currentValue) => [...previousValue, ...currentValue], []);
1086
+ this.updateSelectedItems();
1087
+ this.reposition(true);
1088
+ };
1089
+ this.updateGroups = (event) => {
1090
+ const groups = event.target
1091
+ .assignedElements({ flatten: true })
1092
+ .filter((el) => el === null || el === void 0 ? void 0 : el.matches("calcite-dropdown-group"));
1093
+ this.groups = groups;
1094
+ this.updateItems();
1095
+ };
1096
+ this.resizeObserverCallback = (entries) => {
1097
+ entries.forEach((entry) => {
1098
+ const { target } = entry;
1099
+ if (target === this.referenceEl) {
1100
+ this.setDropdownWidth();
1101
+ }
1102
+ else if (target === this.scrollerEl) {
1103
+ this.setMaxScrollerHeight();
1104
+ }
1105
+ });
1106
+ };
1107
+ this.setDropdownWidth = () => {
1108
+ const { referenceEl, scrollerEl } = this;
1109
+ const referenceElWidth = referenceEl === null || referenceEl === void 0 ? void 0 : referenceEl.clientWidth;
1110
+ if (!referenceElWidth || !scrollerEl) {
1111
+ return;
1112
+ }
1113
+ scrollerEl.style.minWidth = `${referenceElWidth}px`;
1114
+ };
1115
+ this.setMaxScrollerHeight = () => {
1116
+ const { scrollerEl } = this;
1117
+ if (!scrollerEl) {
1118
+ return;
1119
+ }
1120
+ this.reposition(true);
1121
+ const maxScrollerHeight = this.getMaxScrollerHeight();
1122
+ scrollerEl.style.maxHeight = maxScrollerHeight > 0 ? `${maxScrollerHeight}px` : "";
1123
+ this.reposition(true);
1124
+ };
1125
+ this.setScrollerAndTransitionEl = (el) => {
1126
+ this.resizeObserver.observe(el);
1127
+ this.scrollerEl = el;
1128
+ this.transitionEl = el;
1129
+ };
1130
+ this.setReferenceEl = (el) => {
1131
+ this.referenceEl = el;
1132
+ floatingUi.connectFloatingUI(this, this.referenceEl, this.floatingEl);
1133
+ this.resizeObserver.observe(el);
1134
+ };
1135
+ this.setFloatingEl = (el) => {
1136
+ this.floatingEl = el;
1137
+ floatingUi.connectFloatingUI(this, this.referenceEl, this.floatingEl);
1138
+ };
1139
+ this.keyDownHandler = (event) => {
1140
+ const target = event.target;
1141
+ if (target !== this.referenceEl) {
1142
+ return;
1143
+ }
1144
+ const { defaultPrevented, key: key$1 } = event;
1145
+ if (defaultPrevented) {
1146
+ return;
1147
+ }
1148
+ if (this.open) {
1149
+ if (key$1 === "Escape") {
1150
+ this.closeCalciteDropdown();
1151
+ event.preventDefault();
1152
+ return;
1153
+ }
1154
+ else if (event.shiftKey && key$1 === "Tab") {
1155
+ this.closeCalciteDropdown();
1156
+ event.preventDefault();
1157
+ return;
1158
+ }
1159
+ }
1160
+ if (key.isActivationKey(key$1)) {
1161
+ this.openCalciteDropdown();
1162
+ event.preventDefault();
1163
+ }
1164
+ else if (key$1 === "Escape") {
1165
+ this.closeCalciteDropdown();
1166
+ event.preventDefault();
1167
+ }
1168
+ };
1169
+ this.focusOnFirstActiveOrFirstItem = () => {
1170
+ this.getFocusableElement(this.items.find((item) => item.selected) || this.items[0]);
1171
+ };
1172
+ this.toggleOpenEnd = () => {
1173
+ this.focusOnFirstActiveOrFirstItem();
1174
+ this.el.removeEventListener("calciteDropdownOpen", this.toggleOpenEnd);
1175
+ };
1176
+ this.openCalciteDropdown = () => {
1177
+ this.open = !this.open;
1178
+ if (this.open) {
1179
+ this.el.addEventListener("calciteDropdownOpen", this.toggleOpenEnd);
1180
+ }
1181
+ };
1182
+ this.open = false;
1183
+ this.closeOnSelectDisabled = false;
1184
+ this.disabled = false;
1185
+ this.flipPlacements = undefined;
1186
+ this.maxItems = 0;
1187
+ this.overlayPositioning = "absolute";
1188
+ this.placement = floatingUi.defaultMenuPlacement;
1189
+ this.scale = "m";
1190
+ this.selectedItems = [];
1191
+ this.type = "click";
1192
+ this.width = undefined;
1193
+ }
1194
+ openHandler(value) {
1195
+ if (!this.disabled) {
1196
+ if (value) {
1197
+ this.reposition(true);
1198
+ }
1199
+ openCloseComponent.onToggleOpenCloseComponent(this);
1200
+ return;
1201
+ }
1202
+ this.open = false;
1203
+ }
1204
+ handleDisabledChange(value) {
1205
+ if (!value) {
1206
+ this.open = false;
1207
+ }
1208
+ }
1209
+ flipPlacementsHandler() {
1210
+ this.setFilteredPlacements();
1211
+ this.reposition(true);
1212
+ }
1213
+ maxItemsHandler() {
1214
+ this.setMaxScrollerHeight();
1215
+ }
1216
+ overlayPositioningHandler() {
1217
+ this.reposition(true);
1218
+ }
1219
+ placementHandler() {
1220
+ this.reposition(true);
1221
+ }
1222
+ //--------------------------------------------------------------------------
1223
+ //
1224
+ // Public Methods
1225
+ //
1226
+ //--------------------------------------------------------------------------
1227
+ /** Sets focus on the component's first focusable element. */
1228
+ async setFocus() {
1229
+ await loadable.componentFocusable(this);
1230
+ this.el.focus();
1231
+ }
1232
+ //--------------------------------------------------------------------------
1233
+ //
1234
+ // Lifecycle
1235
+ //
1236
+ //--------------------------------------------------------------------------
1237
+ connectedCallback() {
1238
+ var _a;
1239
+ (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.observe(this.el, { childList: true, subtree: true });
1240
+ this.setFilteredPlacements();
1241
+ this.reposition(true);
1242
+ if (this.open) {
1243
+ this.openHandler(this.open);
1244
+ openCloseComponent.onToggleOpenCloseComponent(this);
1245
+ }
1246
+ interactive.connectInteractive(this);
1247
+ }
1248
+ componentWillLoad() {
1249
+ loadable.setUpLoadableComponent(this);
1250
+ }
1251
+ componentDidLoad() {
1252
+ loadable.setComponentLoaded(this);
1253
+ this.reposition(true);
1254
+ }
1255
+ componentDidRender() {
1256
+ interactive.updateHostInteraction(this);
1257
+ }
1258
+ disconnectedCallback() {
1259
+ var _a, _b;
1260
+ (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
1261
+ (_b = this.resizeObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
1262
+ interactive.disconnectInteractive(this);
1263
+ floatingUi.disconnectFloatingUI(this, this.referenceEl, this.floatingEl);
1264
+ }
1265
+ render() {
1266
+ const { open, guid } = this;
1267
+ return (index.h(index.Host, null, index.h("div", { class: "calcite-trigger-container", id: `${guid}-menubutton`, onClick: this.openCalciteDropdown, onKeyDown: this.keyDownHandler,
1268
+ // eslint-disable-next-line react/jsx-sort-props
1269
+ ref: this.setReferenceEl }, index.h("slot", { "aria-controls": `${guid}-menu`, "aria-expanded": dom.toAriaBoolean(open), "aria-haspopup": "menu", name: SLOTS.dropdownTrigger, onSlotchange: this.updateTriggers })), index.h("div", { "aria-hidden": dom.toAriaBoolean(!open), class: "calcite-dropdown-wrapper",
1270
+ // eslint-disable-next-line react/jsx-sort-props
1271
+ ref: this.setFloatingEl }, index.h("div", { "aria-labelledby": `${guid}-menubutton`, class: {
1272
+ ["calcite-dropdown-content"]: true,
1273
+ [floatingUi.FloatingCSS.animation]: true,
1274
+ [floatingUi.FloatingCSS.animationActive]: open,
1275
+ }, id: `${guid}-menu`, role: "menu",
1276
+ // eslint-disable-next-line react/jsx-sort-props
1277
+ ref: this.setScrollerAndTransitionEl }, index.h("slot", { onSlotchange: this.updateGroups })))));
1278
+ }
1279
+ //--------------------------------------------------------------------------
1280
+ //
1281
+ // Public Methods
1282
+ //
1283
+ //--------------------------------------------------------------------------
1284
+ /**
1285
+ * Updates the position of the component.
1286
+ *
1287
+ * @param delayed
1288
+ */
1289
+ async reposition(delayed = false) {
1290
+ const { floatingEl, referenceEl, placement, overlayPositioning, filteredFlipPlacements } = this;
1291
+ return floatingUi.reposition(this, {
1292
+ floatingEl,
1293
+ referenceEl,
1294
+ overlayPositioning,
1295
+ placement,
1296
+ flipPlacements: filteredFlipPlacements,
1297
+ type: "menu",
1298
+ }, delayed);
1299
+ }
1300
+ closeCalciteDropdownOnClick(event) {
1301
+ if (this.disabled ||
1302
+ !dom.isPrimaryPointerButton(event) ||
1303
+ !this.open ||
1304
+ event.composedPath().includes(this.el)) {
1305
+ return;
1306
+ }
1307
+ this.closeCalciteDropdown(false);
1308
+ }
1309
+ closeCalciteDropdownOnEvent(event) {
1310
+ this.closeCalciteDropdown();
1311
+ event.stopPropagation();
1312
+ }
1313
+ closeCalciteDropdownOnOpenEvent(event) {
1314
+ if (event.composedPath().includes(this.el)) {
1315
+ return;
1316
+ }
1317
+ this.open = false;
1318
+ }
1319
+ pointerEnterHandler() {
1320
+ if (this.disabled || this.type !== "hover") {
1321
+ return;
1322
+ }
1323
+ this.openCalciteDropdown();
1324
+ }
1325
+ pointerLeaveHandler() {
1326
+ if (this.disabled || this.type !== "hover") {
1327
+ return;
1328
+ }
1329
+ this.closeCalciteDropdown();
1330
+ }
1331
+ calciteInternalDropdownItemKeyEvent(event) {
1332
+ const { keyboardEvent } = event.detail;
1333
+ const target = keyboardEvent.target;
1334
+ switch (keyboardEvent.key) {
1335
+ case "Tab":
1336
+ if (this.items.indexOf(target) === this.items.length - 1 && !keyboardEvent.shiftKey) {
1337
+ this.closeCalciteDropdown();
1338
+ }
1339
+ else if (this.items.indexOf(target) === 0 && keyboardEvent.shiftKey) {
1340
+ this.closeCalciteDropdown();
1341
+ }
1342
+ break;
1343
+ case "ArrowDown":
1344
+ dom.focusElementInGroup(this.items, target, "next");
1345
+ break;
1346
+ case "ArrowUp":
1347
+ dom.focusElementInGroup(this.items, target, "previous");
1348
+ break;
1349
+ case "Home":
1350
+ dom.focusElementInGroup(this.items, target, "first");
1351
+ break;
1352
+ case "End":
1353
+ dom.focusElementInGroup(this.items, target, "last");
1354
+ break;
1355
+ }
1356
+ event.stopPropagation();
1357
+ }
1358
+ handleItemSelect(event) {
1359
+ this.updateSelectedItems();
1360
+ event.stopPropagation();
1361
+ this.calciteDropdownSelect.emit();
1362
+ if (!this.closeOnSelectDisabled ||
1363
+ event.detail.requestedDropdownGroup.selectionMode === "none") {
1364
+ this.closeCalciteDropdown();
1365
+ }
1366
+ event.stopPropagation();
1367
+ }
1368
+ onBeforeOpen() {
1369
+ this.calciteDropdownBeforeOpen.emit();
1370
+ }
1371
+ onOpen() {
1372
+ this.calciteDropdownOpen.emit();
1373
+ }
1374
+ onBeforeClose() {
1375
+ this.calciteDropdownBeforeClose.emit();
1376
+ }
1377
+ onClose() {
1378
+ this.calciteDropdownClose.emit();
1379
+ }
1380
+ updateSelectedItems() {
1381
+ this.selectedItems = this.items.filter((item) => item.selected);
1382
+ }
1383
+ getMaxScrollerHeight() {
1384
+ const { maxItems, items } = this;
1385
+ let itemsToProcess = 0;
1386
+ let maxScrollerHeight = 0;
1387
+ let groupHeaderHeight;
1388
+ this.groups.forEach((group) => {
1389
+ if (maxItems > 0 && itemsToProcess < maxItems) {
1390
+ Array.from(group.children).forEach((item, index) => {
1391
+ if (index === 0) {
1392
+ if (isNaN(groupHeaderHeight)) {
1393
+ groupHeaderHeight = item.offsetTop;
1394
+ }
1395
+ maxScrollerHeight += groupHeaderHeight;
1396
+ }
1397
+ if (itemsToProcess < maxItems) {
1398
+ maxScrollerHeight += item.offsetHeight;
1399
+ itemsToProcess += 1;
1400
+ }
1401
+ });
1402
+ }
1403
+ });
1404
+ return items.length > maxItems ? maxScrollerHeight : 0;
1405
+ }
1406
+ closeCalciteDropdown(focusTrigger = true) {
1407
+ this.open = false;
1408
+ if (focusTrigger) {
1409
+ dom.focusElement(this.triggers[0]);
1410
+ }
1411
+ }
1412
+ getFocusableElement(item) {
1413
+ if (!item) {
1414
+ return;
1415
+ }
1416
+ const target = item.attributes.isLink
1417
+ ? item.shadowRoot.querySelector("a")
1418
+ : item;
1419
+ dom.focusElement(target);
1420
+ }
1421
+ static get delegatesFocus() { return true; }
1422
+ get el() { return index.getElement(this); }
1423
+ static get watchers() { return {
1424
+ "open": ["openHandler"],
1425
+ "disabled": ["handleDisabledChange"],
1426
+ "flipPlacements": ["flipPlacementsHandler"],
1427
+ "maxItems": ["maxItemsHandler"],
1428
+ "overlayPositioning": ["overlayPositioningHandler"],
1429
+ "placement": ["placementHandler"]
1430
+ }; }
1431
+ };
1432
1432
  Dropdown.style = dropdownCss;
1433
1433
 
1434
1434
  /*!
@@ -1444,57 +1444,57 @@ const CSS$1 = {
1444
1444
 
1445
1445
  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}";
1446
1446
 
1447
- const DropdownGroup = class {
1448
- constructor(hostRef) {
1449
- index.registerInstance(this, hostRef);
1450
- this.calciteInternalDropdownItemChange = index.createEvent(this, "calciteInternalDropdownItemChange", 6);
1451
- this.groupTitle = undefined;
1452
- this.selectionMode = "single";
1453
- this.scale = undefined;
1454
- }
1455
- //--------------------------------------------------------------------------
1456
- //
1457
- // Lifecycle
1458
- //
1459
- //--------------------------------------------------------------------------
1460
- componentWillLoad() {
1461
- this.groupPosition = this.getGroupPosition();
1462
- }
1463
- render() {
1464
- const scale = this.scale || dom.getElementProp(this.el, "scale", "m");
1465
- const groupTitle = this.groupTitle ? (index.h("span", { "aria-hidden": "true", class: "dropdown-title" }, this.groupTitle)) : null;
1466
- const dropdownSeparator = this.groupPosition > 0 ? index.h("div", { class: "dropdown-separator", role: "separator" }) : null;
1467
- return (index.h(index.Host, { "aria-label": this.groupTitle, role: "group" }, index.h("div", { class: {
1468
- container: true,
1469
- [CSS$1.containerSmall]: scale === "s",
1470
- [CSS$1.containerMedium]: scale === "m",
1471
- [CSS$1.containerLarge]: scale === "l",
1472
- }, title: this.groupTitle }, dropdownSeparator, groupTitle, index.h("slot", null))));
1473
- }
1474
- //--------------------------------------------------------------------------
1475
- //
1476
- // Event Listeners
1477
- //
1478
- //--------------------------------------------------------------------------
1479
- updateActiveItemOnChange(event) {
1480
- this.requestedDropdownGroup = event.detail.requestedDropdownGroup;
1481
- this.requestedDropdownItem = event.detail.requestedDropdownItem;
1482
- this.calciteInternalDropdownItemChange.emit({
1483
- requestedDropdownGroup: this.requestedDropdownGroup,
1484
- requestedDropdownItem: this.requestedDropdownItem,
1485
- });
1486
- }
1487
- //--------------------------------------------------------------------------
1488
- //
1489
- // Private Methods
1490
- //
1491
- //--------------------------------------------------------------------------
1492
- getGroupPosition() {
1493
- return Array.prototype.indexOf.call(this.el.parentElement.querySelectorAll("calcite-dropdown-group"), this.el);
1494
- }
1495
- static get delegatesFocus() { return true; }
1496
- get el() { return index.getElement(this); }
1497
- };
1447
+ const DropdownGroup = class {
1448
+ constructor(hostRef) {
1449
+ index.registerInstance(this, hostRef);
1450
+ this.calciteInternalDropdownItemChange = index.createEvent(this, "calciteInternalDropdownItemChange", 6);
1451
+ this.groupTitle = undefined;
1452
+ this.selectionMode = "single";
1453
+ this.scale = undefined;
1454
+ }
1455
+ //--------------------------------------------------------------------------
1456
+ //
1457
+ // Lifecycle
1458
+ //
1459
+ //--------------------------------------------------------------------------
1460
+ componentWillLoad() {
1461
+ this.groupPosition = this.getGroupPosition();
1462
+ }
1463
+ render() {
1464
+ const scale = this.scale || dom.getElementProp(this.el, "scale", "m");
1465
+ const groupTitle = this.groupTitle ? (index.h("span", { "aria-hidden": "true", class: "dropdown-title" }, this.groupTitle)) : null;
1466
+ const dropdownSeparator = this.groupPosition > 0 ? index.h("div", { class: "dropdown-separator", role: "separator" }) : null;
1467
+ return (index.h(index.Host, { "aria-label": this.groupTitle, role: "group" }, index.h("div", { class: {
1468
+ container: true,
1469
+ [CSS$1.containerSmall]: scale === "s",
1470
+ [CSS$1.containerMedium]: scale === "m",
1471
+ [CSS$1.containerLarge]: scale === "l",
1472
+ }, title: this.groupTitle }, dropdownSeparator, groupTitle, index.h("slot", null))));
1473
+ }
1474
+ //--------------------------------------------------------------------------
1475
+ //
1476
+ // Event Listeners
1477
+ //
1478
+ //--------------------------------------------------------------------------
1479
+ updateActiveItemOnChange(event) {
1480
+ this.requestedDropdownGroup = event.detail.requestedDropdownGroup;
1481
+ this.requestedDropdownItem = event.detail.requestedDropdownItem;
1482
+ this.calciteInternalDropdownItemChange.emit({
1483
+ requestedDropdownGroup: this.requestedDropdownGroup,
1484
+ requestedDropdownItem: this.requestedDropdownItem,
1485
+ });
1486
+ }
1487
+ //--------------------------------------------------------------------------
1488
+ //
1489
+ // Private Methods
1490
+ //
1491
+ //--------------------------------------------------------------------------
1492
+ getGroupPosition() {
1493
+ return Array.prototype.indexOf.call(this.el.parentElement.querySelectorAll("calcite-dropdown-group"), this.el);
1494
+ }
1495
+ static get delegatesFocus() { return true; }
1496
+ get el() { return index.getElement(this); }
1497
+ };
1498
1498
  DropdownGroup.style = dropdownGroupCss;
1499
1499
 
1500
1500
  /*!
@@ -1519,376 +1519,376 @@ const CSS = {
1519
1519
 
1520
1520
  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}";
1521
1521
 
1522
- const DropdownItem = class {
1523
- constructor(hostRef) {
1524
- index.registerInstance(this, hostRef);
1525
- this.calciteDropdownItemSelect = index.createEvent(this, "calciteDropdownItemSelect", 6);
1526
- this.calciteInternalDropdownItemSelect = index.createEvent(this, "calciteInternalDropdownItemSelect", 6);
1527
- this.calciteInternalDropdownItemKeyEvent = index.createEvent(this, "calciteInternalDropdownItemKeyEvent", 6);
1528
- this.calciteInternalDropdownCloseRequest = index.createEvent(this, "calciteInternalDropdownCloseRequest", 6);
1529
- /** Specifies the scale of dropdown-item controlled by the parent, defaults to m */
1530
- this.scale = "m";
1531
- this.selected = false;
1532
- this.iconFlipRtl = undefined;
1533
- this.iconStart = undefined;
1534
- this.iconEnd = undefined;
1535
- this.href = undefined;
1536
- this.label = undefined;
1537
- this.rel = undefined;
1538
- this.target = undefined;
1539
- }
1540
- //--------------------------------------------------------------------------
1541
- //
1542
- // Public Methods
1543
- //
1544
- //--------------------------------------------------------------------------
1545
- /** Sets focus on the component. */
1546
- async setFocus() {
1547
- var _a;
1548
- await loadable.componentFocusable(this);
1549
- (_a = this.el) === null || _a === void 0 ? void 0 : _a.focus();
1550
- }
1551
- //--------------------------------------------------------------------------
1552
- //
1553
- // Lifecycle
1554
- //
1555
- //--------------------------------------------------------------------------
1556
- componentWillLoad() {
1557
- loadable.setUpLoadableComponent(this);
1558
- this.initialize();
1559
- }
1560
- componentDidLoad() {
1561
- loadable.setComponentLoaded(this);
1562
- }
1563
- connectedCallback() {
1564
- this.initialize();
1565
- }
1566
- render() {
1567
- const scale = dom.getElementProp(this.el, "scale", this.scale);
1568
- const { href, selectionMode, label, iconFlipRtl } = this;
1569
- const iconStartEl = (index.h("calcite-icon", { class: CSS.iconStart, flipRtl: iconFlipRtl === "start" || iconFlipRtl === "both", icon: this.iconStart, scale: scale === "l" ? "m" : "s" }));
1570
- const contentNode = (index.h("span", { class: CSS.itemContent }, index.h("slot", null)));
1571
- const iconEndEl = (index.h("calcite-icon", { class: CSS.iconEnd, flipRtl: iconFlipRtl === "end" || iconFlipRtl === "both", icon: this.iconEnd, scale: scale === "l" ? "m" : "s" }));
1572
- const slottedContent = this.iconStart && this.iconEnd
1573
- ? [iconStartEl, contentNode, iconEndEl]
1574
- : this.iconStart
1575
- ? [iconStartEl, contentNode]
1576
- : this.iconEnd
1577
- ? [contentNode, iconEndEl]
1578
- : contentNode;
1579
- const contentEl = !href ? (slottedContent) : (index.h("a", { "aria-label": label, class: CSS.link, href: href, rel: this.rel, tabIndex: -1, target: this.target,
1580
- // eslint-disable-next-line react/jsx-sort-props
1581
- ref: (el) => (this.childLink = el) }, slottedContent));
1582
- const itemRole = href
1583
- ? null
1584
- : selectionMode === "single"
1585
- ? "menuitemradio"
1586
- : selectionMode === "multiple"
1587
- ? "menuitemcheckbox"
1588
- : "menuitem";
1589
- const itemAria = selectionMode !== "none" ? dom.toAriaBoolean(this.selected) : null;
1590
- return (index.h(index.Host, { "aria-checked": itemAria, "aria-label": !href ? label : "", role: itemRole, tabindex: "0" }, index.h("div", { class: {
1591
- container: true,
1592
- [CSS.containerLink]: !!href,
1593
- [CSS.containerSmall]: scale === "s",
1594
- [CSS.containerMedium]: scale === "m",
1595
- [CSS.containerLarge]: scale === "l",
1596
- [CSS.containerMulti]: selectionMode === "multiple",
1597
- [CSS.containerSingle]: selectionMode === "single",
1598
- [CSS.containerNone]: selectionMode === "none",
1599
- } }, selectionMode !== "none" ? (index.h("calcite-icon", { class: CSS.icon, icon: selectionMode === "multiple" ? "check" : "bullet-point", scale: scale === "l" ? "m" : "s" })) : null, contentEl)));
1600
- }
1601
- //--------------------------------------------------------------------------
1602
- //
1603
- // Event Listeners
1604
- //
1605
- //--------------------------------------------------------------------------
1606
- onClick() {
1607
- this.emitRequestedItem();
1608
- }
1609
- keyDownHandler(event) {
1610
- switch (event.key) {
1611
- case " ":
1612
- case "Enter":
1613
- this.emitRequestedItem();
1614
- if (this.href) {
1615
- this.childLink.click();
1616
- }
1617
- event.preventDefault();
1618
- break;
1619
- case "Escape":
1620
- this.calciteInternalDropdownCloseRequest.emit();
1621
- event.preventDefault();
1622
- break;
1623
- case "Tab":
1624
- this.calciteInternalDropdownItemKeyEvent.emit({ keyboardEvent: event });
1625
- break;
1626
- case "ArrowUp":
1627
- case "ArrowDown":
1628
- case "Home":
1629
- case "End":
1630
- event.preventDefault();
1631
- this.calciteInternalDropdownItemKeyEvent.emit({ keyboardEvent: event });
1632
- break;
1633
- }
1634
- }
1635
- updateActiveItemOnChange(event) {
1636
- const parentEmittedChange = event.composedPath().includes(this.parentDropdownGroupEl);
1637
- if (parentEmittedChange) {
1638
- this.requestedDropdownGroup = event.detail.requestedDropdownGroup;
1639
- this.requestedDropdownItem = event.detail.requestedDropdownItem;
1640
- this.determineActiveItem();
1641
- }
1642
- event.stopPropagation();
1643
- }
1644
- //--------------------------------------------------------------------------
1645
- //
1646
- // Private Methods
1647
- //
1648
- //--------------------------------------------------------------------------
1649
- initialize() {
1650
- this.selectionMode = dom.getElementProp(this.el, "selection-mode", "single");
1651
- this.parentDropdownGroupEl = this.el.closest("calcite-dropdown-group");
1652
- if (this.selectionMode === "none") {
1653
- this.selected = false;
1654
- }
1655
- }
1656
- determineActiveItem() {
1657
- switch (this.selectionMode) {
1658
- case "multiple":
1659
- if (this.el === this.requestedDropdownItem) {
1660
- this.selected = !this.selected;
1661
- }
1662
- break;
1663
- case "single":
1664
- if (this.el === this.requestedDropdownItem) {
1665
- this.selected = true;
1666
- }
1667
- else if (this.requestedDropdownGroup === this.parentDropdownGroupEl) {
1668
- this.selected = false;
1669
- }
1670
- break;
1671
- case "none":
1672
- this.selected = false;
1673
- break;
1674
- }
1675
- }
1676
- emitRequestedItem() {
1677
- this.calciteDropdownItemSelect.emit();
1678
- this.calciteInternalDropdownItemSelect.emit({
1679
- requestedDropdownItem: this.el,
1680
- requestedDropdownGroup: this.parentDropdownGroupEl,
1681
- });
1682
- }
1683
- get el() { return index.getElement(this); }
1684
- };
1522
+ const DropdownItem = class {
1523
+ constructor(hostRef) {
1524
+ index.registerInstance(this, hostRef);
1525
+ this.calciteDropdownItemSelect = index.createEvent(this, "calciteDropdownItemSelect", 6);
1526
+ this.calciteInternalDropdownItemSelect = index.createEvent(this, "calciteInternalDropdownItemSelect", 6);
1527
+ this.calciteInternalDropdownItemKeyEvent = index.createEvent(this, "calciteInternalDropdownItemKeyEvent", 6);
1528
+ this.calciteInternalDropdownCloseRequest = index.createEvent(this, "calciteInternalDropdownCloseRequest", 6);
1529
+ /** Specifies the scale of dropdown-item controlled by the parent, defaults to m */
1530
+ this.scale = "m";
1531
+ this.selected = false;
1532
+ this.iconFlipRtl = undefined;
1533
+ this.iconStart = undefined;
1534
+ this.iconEnd = undefined;
1535
+ this.href = undefined;
1536
+ this.label = undefined;
1537
+ this.rel = undefined;
1538
+ this.target = undefined;
1539
+ }
1540
+ //--------------------------------------------------------------------------
1541
+ //
1542
+ // Public Methods
1543
+ //
1544
+ //--------------------------------------------------------------------------
1545
+ /** Sets focus on the component. */
1546
+ async setFocus() {
1547
+ var _a;
1548
+ await loadable.componentFocusable(this);
1549
+ (_a = this.el) === null || _a === void 0 ? void 0 : _a.focus();
1550
+ }
1551
+ //--------------------------------------------------------------------------
1552
+ //
1553
+ // Lifecycle
1554
+ //
1555
+ //--------------------------------------------------------------------------
1556
+ componentWillLoad() {
1557
+ loadable.setUpLoadableComponent(this);
1558
+ this.initialize();
1559
+ }
1560
+ componentDidLoad() {
1561
+ loadable.setComponentLoaded(this);
1562
+ }
1563
+ connectedCallback() {
1564
+ this.initialize();
1565
+ }
1566
+ render() {
1567
+ const scale = dom.getElementProp(this.el, "scale", this.scale);
1568
+ const { href, selectionMode, label, iconFlipRtl } = this;
1569
+ const iconStartEl = (index.h("calcite-icon", { class: CSS.iconStart, flipRtl: iconFlipRtl === "start" || iconFlipRtl === "both", icon: this.iconStart, scale: scale === "l" ? "m" : "s" }));
1570
+ const contentNode = (index.h("span", { class: CSS.itemContent }, index.h("slot", null)));
1571
+ const iconEndEl = (index.h("calcite-icon", { class: CSS.iconEnd, flipRtl: iconFlipRtl === "end" || iconFlipRtl === "both", icon: this.iconEnd, scale: scale === "l" ? "m" : "s" }));
1572
+ const slottedContent = this.iconStart && this.iconEnd
1573
+ ? [iconStartEl, contentNode, iconEndEl]
1574
+ : this.iconStart
1575
+ ? [iconStartEl, contentNode]
1576
+ : this.iconEnd
1577
+ ? [contentNode, iconEndEl]
1578
+ : contentNode;
1579
+ const contentEl = !href ? (slottedContent) : (index.h("a", { "aria-label": label, class: CSS.link, href: href, rel: this.rel, tabIndex: -1, target: this.target,
1580
+ // eslint-disable-next-line react/jsx-sort-props
1581
+ ref: (el) => (this.childLink = el) }, slottedContent));
1582
+ const itemRole = href
1583
+ ? null
1584
+ : selectionMode === "single"
1585
+ ? "menuitemradio"
1586
+ : selectionMode === "multiple"
1587
+ ? "menuitemcheckbox"
1588
+ : "menuitem";
1589
+ const itemAria = selectionMode !== "none" ? dom.toAriaBoolean(this.selected) : null;
1590
+ return (index.h(index.Host, { "aria-checked": itemAria, "aria-label": !href ? label : "", role: itemRole, tabindex: "0" }, index.h("div", { class: {
1591
+ container: true,
1592
+ [CSS.containerLink]: !!href,
1593
+ [CSS.containerSmall]: scale === "s",
1594
+ [CSS.containerMedium]: scale === "m",
1595
+ [CSS.containerLarge]: scale === "l",
1596
+ [CSS.containerMulti]: selectionMode === "multiple",
1597
+ [CSS.containerSingle]: selectionMode === "single",
1598
+ [CSS.containerNone]: selectionMode === "none",
1599
+ } }, selectionMode !== "none" ? (index.h("calcite-icon", { class: CSS.icon, icon: selectionMode === "multiple" ? "check" : "bullet-point", scale: scale === "l" ? "m" : "s" })) : null, contentEl)));
1600
+ }
1601
+ //--------------------------------------------------------------------------
1602
+ //
1603
+ // Event Listeners
1604
+ //
1605
+ //--------------------------------------------------------------------------
1606
+ onClick() {
1607
+ this.emitRequestedItem();
1608
+ }
1609
+ keyDownHandler(event) {
1610
+ switch (event.key) {
1611
+ case " ":
1612
+ case "Enter":
1613
+ this.emitRequestedItem();
1614
+ if (this.href) {
1615
+ this.childLink.click();
1616
+ }
1617
+ event.preventDefault();
1618
+ break;
1619
+ case "Escape":
1620
+ this.calciteInternalDropdownCloseRequest.emit();
1621
+ event.preventDefault();
1622
+ break;
1623
+ case "Tab":
1624
+ this.calciteInternalDropdownItemKeyEvent.emit({ keyboardEvent: event });
1625
+ break;
1626
+ case "ArrowUp":
1627
+ case "ArrowDown":
1628
+ case "Home":
1629
+ case "End":
1630
+ event.preventDefault();
1631
+ this.calciteInternalDropdownItemKeyEvent.emit({ keyboardEvent: event });
1632
+ break;
1633
+ }
1634
+ }
1635
+ updateActiveItemOnChange(event) {
1636
+ const parentEmittedChange = event.composedPath().includes(this.parentDropdownGroupEl);
1637
+ if (parentEmittedChange) {
1638
+ this.requestedDropdownGroup = event.detail.requestedDropdownGroup;
1639
+ this.requestedDropdownItem = event.detail.requestedDropdownItem;
1640
+ this.determineActiveItem();
1641
+ }
1642
+ event.stopPropagation();
1643
+ }
1644
+ //--------------------------------------------------------------------------
1645
+ //
1646
+ // Private Methods
1647
+ //
1648
+ //--------------------------------------------------------------------------
1649
+ initialize() {
1650
+ this.selectionMode = dom.getElementProp(this.el, "selection-mode", "single");
1651
+ this.parentDropdownGroupEl = this.el.closest("calcite-dropdown-group");
1652
+ if (this.selectionMode === "none") {
1653
+ this.selected = false;
1654
+ }
1655
+ }
1656
+ determineActiveItem() {
1657
+ switch (this.selectionMode) {
1658
+ case "multiple":
1659
+ if (this.el === this.requestedDropdownItem) {
1660
+ this.selected = !this.selected;
1661
+ }
1662
+ break;
1663
+ case "single":
1664
+ if (this.el === this.requestedDropdownItem) {
1665
+ this.selected = true;
1666
+ }
1667
+ else if (this.requestedDropdownGroup === this.parentDropdownGroupEl) {
1668
+ this.selected = false;
1669
+ }
1670
+ break;
1671
+ case "none":
1672
+ this.selected = false;
1673
+ break;
1674
+ }
1675
+ }
1676
+ emitRequestedItem() {
1677
+ this.calciteDropdownItemSelect.emit();
1678
+ this.calciteInternalDropdownItemSelect.emit({
1679
+ requestedDropdownItem: this.el,
1680
+ requestedDropdownGroup: this.parentDropdownGroupEl,
1681
+ });
1682
+ }
1683
+ get el() { return index.getElement(this); }
1684
+ };
1685
1685
  DropdownItem.style = dropdownItemCss;
1686
1686
 
1687
1687
  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}";
1688
1688
 
1689
- const MapLayerPicker = class {
1690
- constructor(hostRef) {
1691
- index.registerInstance(this, hostRef);
1692
- this.layerSelectionChange = index.createEvent(this, "layerSelectionChange", 7);
1693
- this.appearance = "transparent";
1694
- this.enabledLayerIds = [];
1695
- this.enabledTableIds = [];
1696
- this.mapView = undefined;
1697
- this.placeholderIcon = "";
1698
- this.selectedIds = [];
1699
- this.scale = "m";
1700
- this.showTables = true;
1701
- this.type = "select";
1702
- this.ids = [];
1703
- this.selectedName = "";
1704
- }
1705
- //--------------------------------------------------------------------------
1706
- //
1707
- // Watch handlers
1708
- //
1709
- //--------------------------------------------------------------------------
1710
- /**
1711
- * Called each time the mapView prop is changed.
1712
- *
1713
- */
1714
- async mapViewWatchHandler() {
1715
- await this._setLayers();
1716
- const hasLayers = Object.keys(publicNotificationStore.state.layerNameHash).length > 0;
1717
- const hasTables = Object.keys(publicNotificationStore.state.tableNameHash).length > 0 && this.showTables;
1718
- if (hasLayers || hasTables) {
1719
- this._setSelectedLayer(this.ids[0], hasLayers ? "layer" : "table");
1720
- }
1721
- }
1722
- //--------------------------------------------------------------------------
1723
- //
1724
- // Functions (lifecycle)
1725
- //
1726
- //--------------------------------------------------------------------------
1727
- /**
1728
- * StencilJS: Called once just after the component is first connected to the DOM.
1729
- */
1730
- async componentWillLoad() {
1731
- await this._setLayers();
1732
- if (this.ids.length > 0 || this.selectedIds.length === 1) {
1733
- this.layerSelectionChange.emit(this.selectedIds.length === 1 ? [this.selectedIds[0]] : [this.ids[0]]);
1734
- }
1735
- }
1736
- /**
1737
- * Renders the component.
1738
- */
1739
- render() {
1740
- return (index.h(index.Host, null, index.h("div", { class: "map-layer-picker-container" }, index.h("div", { class: "map-layer-picker" }, this.type === "combobox" ? this._getCombobox() :
1741
- this.type === "select" ? this._getSelect() : this._getDropdown()))));
1742
- }
1743
- /**
1744
- * StencilJS: Called once just after the component is fully loaded and the first render() occurs.
1745
- */
1746
- async componentDidLoad() {
1747
- if (this.ids.length > 0 || this.selectedIds.length === 1) {
1748
- const id = this.selectedIds.length === 1 ? this.selectedIds[0] : this.ids[0];
1749
- if (this.type === "select") {
1750
- this._layerElement.value = id;
1751
- }
1752
- else if (this.type === "dropdown") {
1753
- this.selectedName = Object.keys(publicNotificationStore.state.layerNameHash).indexOf(id) > -1 ?
1754
- publicNotificationStore.state.layerNameHash[id] : Object.keys(publicNotificationStore.state.tableNameHash).indexOf(id) > -1 ?
1755
- publicNotificationStore.state.tableNameHash[id] : "";
1756
- }
1757
- }
1758
- }
1759
- //--------------------------------------------------------------------------
1760
- //
1761
- // Functions (protected)
1762
- //
1763
- //--------------------------------------------------------------------------
1764
- /**
1765
- * Create a list of layers from the map
1766
- *
1767
- * Used for selecting a single layer.
1768
- *
1769
- * @returns Calcite Select component with the ids of the layers from the map
1770
- */
1771
- _getSelect() {
1772
- return (index.h("calcite-select", { label: "", onCalciteSelectChange: () => this._layerSelectionChange(), ref: (el) => { this._layerElement = el; }, scale: this.scale }, this._getMapLayerOptions()));
1773
- }
1774
- /**
1775
- * Create a list of layer ids from the map
1776
- *
1777
- * Used for selecting multiple layers
1778
- *
1779
- * @returns Calcite ComboBox component with the ids of the layers from the map
1780
- */
1781
- _getCombobox() {
1782
- return (index.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()));
1783
- }
1784
- /**
1785
- * Hydrate a dropdown component with items to display the layer names
1786
- *
1787
- * @returns Array of Dropdown items with layer names
1788
- */
1789
- _getDropdown() {
1790
- return (index.h("calcite-dropdown", { class: "layer-picker-dropdown" }, index.h("calcite-action", { slot: "trigger", text: "" }, index.h("calcite-button", { alignment: "icon-end-space-between", appearance: this.appearance, class: "max-width-350", iconEnd: "chevron-down", iconStart: "layers", kind: "neutral", width: "full" }, index.h("div", null, this.selectedName))), index.h("calcite-dropdown-group", { "selection-mode": "single" }, this._getMapLayerOptions())));
1791
- }
1792
- /**
1793
- * Get the appropriate type of dom nodes for each valid layer or table
1794
- *
1795
- * @returns Array of dom nodes with the names of the layers and optionally of the tables
1796
- */
1797
- _getMapLayerOptions() {
1798
- return this.ids.reduce((prev, cur) => {
1799
- if (this._validLayer(cur)) {
1800
- prev.push(this._getItem(cur, "layer"));
1801
- }
1802
- else if (this._validTable(cur)) {
1803
- prev.push(this._getItem(cur, "table"));
1804
- }
1805
- return prev;
1806
- }, []);
1807
- }
1808
- /**
1809
- * Get the appropriate type of dom node for the current layer or table id
1810
- *
1811
- * @returns A dom node with the name of the layer or table
1812
- */
1813
- _getItem(id, itemType) {
1814
- const name = itemType === "layer" ? publicNotificationStore.state.layerNameHash[id] : publicNotificationStore.state.tableNameHash[id];
1815
- return this.type === "combobox" ? (index.h("calcite-combobox-item", { textLabel: name, value: id })) :
1816
- this.type === "select" ? (index.h("calcite-option", { label: name, value: id })) :
1817
- (index.h("calcite-dropdown-item", { onClick: () => void this._setSelectedLayer(id, itemType) }, name));
1818
- }
1819
- /**
1820
- * Store the layer name based on the user selection
1821
- */
1822
- _setSelectedLayer(id, type) {
1823
- this.selectedName = type === "layer" ? publicNotificationStore.state.layerNameHash[id] : publicNotificationStore.state.tableNameHash[id];
1824
- this.selectedIds = [id];
1825
- this.layerSelectionChange.emit(this.selectedIds);
1826
- }
1827
- /**
1828
- * Fetch the ids of the layers from the map
1829
- *
1830
- * @returns Promise when the operation has completed
1831
- */
1832
- async _setLayers() {
1833
- if (this.mapView) {
1834
- const mapLayerIds = await mapViewUtils.getMapLayerIds(this.mapView);
1835
- const mapTableIds = this.showTables ? await mapViewUtils.getMapTableIds(this.mapView) : [];
1836
- this.ids = [
1837
- ...mapLayerIds.filter(n => { var _a; return ((_a = this.enabledLayerIds) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this.enabledLayerIds.indexOf(n) > -1 : true; }),
1838
- ...mapTableIds.filter(n => { var _a; return ((_a = this.enabledTableIds) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this.enabledTableIds.indexOf(n) > -1 : true; }),
1839
- ];
1840
- await this._initStateHash();
1841
- }
1842
- }
1843
- /**
1844
- * Create a layer id:title hash for layer name display
1845
- *
1846
- * @returns Promise when the operation has completed
1847
- */
1848
- async _initStateHash() {
1849
- if (this.mapView) {
1850
- publicNotificationStore.state.layerNameHash = await mapViewUtils.getMapLayerHash(this.mapView);
1851
- publicNotificationStore.state.tableNameHash = this.showTables ? await mapViewUtils.getMapTableHash(this.mapView) : {};
1852
- }
1853
- }
1854
- /**
1855
- * Evaluate if the id exists in the current hash and verify if it should be excluded
1856
- *
1857
- * @returns boolean when true the layer will be used in the current layer picker type
1858
- */
1859
- _validLayer(id) {
1860
- const name = publicNotificationStore.state.layerNameHash[id];
1861
- return name && publicNotificationStore.state.managedLayers.indexOf(name) < 0 && (this.enabledLayerIds.length > 0 ?
1862
- this.enabledLayerIds.indexOf(id) > -1 : name);
1863
- }
1864
- /**
1865
- * Evaluate if the id exists in the current hash and verify if it should be excluded
1866
- *
1867
- * @returns boolean when true the table will be used in the current layer picker type
1868
- */
1869
- _validTable(id) {
1870
- const name = publicNotificationStore.state.tableNameHash[id];
1871
- const validName = name && this.showTables;
1872
- return validName ? publicNotificationStore.state.managedTables.indexOf(name) < 0 &&
1873
- (this.enabledTableIds.length > 0 ? this.enabledTableIds.indexOf(id) > -1 : true) : validName;
1874
- }
1875
- /**
1876
- * Fetch the ids of the layers from the map
1877
- *
1878
- * @returns Promise when the operation has completed
1879
- */
1880
- _layerSelectionChange() {
1881
- const ids = Array.isArray(this._layerElement.value) ? this._layerElement.value : [this._layerElement.value];
1882
- if (JSON.stringify(ids) !== JSON.stringify([""])) {
1883
- this.selectedIds = ids;
1884
- this.layerSelectionChange.emit(this.selectedIds);
1885
- }
1886
- }
1887
- get el() { return index.getElement(this); }
1888
- static get watchers() { return {
1889
- "mapView": ["mapViewWatchHandler"]
1890
- }; }
1891
- };
1689
+ const MapLayerPicker = class {
1690
+ constructor(hostRef) {
1691
+ index.registerInstance(this, hostRef);
1692
+ this.layerSelectionChange = index.createEvent(this, "layerSelectionChange", 7);
1693
+ this.appearance = "transparent";
1694
+ this.enabledLayerIds = [];
1695
+ this.enabledTableIds = [];
1696
+ this.mapView = undefined;
1697
+ this.placeholderIcon = "";
1698
+ this.selectedIds = [];
1699
+ this.scale = "m";
1700
+ this.showTables = true;
1701
+ this.type = "select";
1702
+ this.ids = [];
1703
+ this.selectedName = "";
1704
+ }
1705
+ //--------------------------------------------------------------------------
1706
+ //
1707
+ // Watch handlers
1708
+ //
1709
+ //--------------------------------------------------------------------------
1710
+ /**
1711
+ * Called each time the mapView prop is changed.
1712
+ *
1713
+ */
1714
+ async mapViewWatchHandler() {
1715
+ await this._setLayers();
1716
+ const hasLayers = Object.keys(publicNotificationStore.state.layerNameHash).length > 0;
1717
+ const hasTables = Object.keys(publicNotificationStore.state.tableNameHash).length > 0 && this.showTables;
1718
+ if (hasLayers || hasTables) {
1719
+ this._setSelectedLayer(this.ids[0], hasLayers ? "layer" : "table");
1720
+ }
1721
+ }
1722
+ //--------------------------------------------------------------------------
1723
+ //
1724
+ // Functions (lifecycle)
1725
+ //
1726
+ //--------------------------------------------------------------------------
1727
+ /**
1728
+ * StencilJS: Called once just after the component is first connected to the DOM.
1729
+ */
1730
+ async componentWillLoad() {
1731
+ await this._setLayers();
1732
+ if (this.ids.length > 0 || this.selectedIds.length === 1) {
1733
+ this.layerSelectionChange.emit(this.selectedIds.length === 1 ? [this.selectedIds[0]] : [this.ids[0]]);
1734
+ }
1735
+ }
1736
+ /**
1737
+ * Renders the component.
1738
+ */
1739
+ render() {
1740
+ return (index.h(index.Host, null, index.h("div", { class: "map-layer-picker-container" }, index.h("div", { class: "map-layer-picker" }, this.type === "combobox" ? this._getCombobox() :
1741
+ this.type === "select" ? this._getSelect() : this._getDropdown()))));
1742
+ }
1743
+ /**
1744
+ * StencilJS: Called once just after the component is fully loaded and the first render() occurs.
1745
+ */
1746
+ async componentDidLoad() {
1747
+ if (this.ids.length > 0 || this.selectedIds.length === 1) {
1748
+ const id = this.selectedIds.length === 1 ? this.selectedIds[0] : this.ids[0];
1749
+ if (this.type === "select") {
1750
+ this._layerElement.value = id;
1751
+ }
1752
+ else if (this.type === "dropdown") {
1753
+ this.selectedName = Object.keys(publicNotificationStore.state.layerNameHash).indexOf(id) > -1 ?
1754
+ publicNotificationStore.state.layerNameHash[id] : Object.keys(publicNotificationStore.state.tableNameHash).indexOf(id) > -1 ?
1755
+ publicNotificationStore.state.tableNameHash[id] : "";
1756
+ }
1757
+ }
1758
+ }
1759
+ //--------------------------------------------------------------------------
1760
+ //
1761
+ // Functions (protected)
1762
+ //
1763
+ //--------------------------------------------------------------------------
1764
+ /**
1765
+ * Create a list of layers from the map
1766
+ *
1767
+ * Used for selecting a single layer.
1768
+ *
1769
+ * @returns Calcite Select component with the ids of the layers from the map
1770
+ */
1771
+ _getSelect() {
1772
+ return (index.h("calcite-select", { label: "", onCalciteSelectChange: () => this._layerSelectionChange(), ref: (el) => { this._layerElement = el; }, scale: this.scale }, this._getMapLayerOptions()));
1773
+ }
1774
+ /**
1775
+ * Create a list of layer ids from the map
1776
+ *
1777
+ * Used for selecting multiple layers
1778
+ *
1779
+ * @returns Calcite ComboBox component with the ids of the layers from the map
1780
+ */
1781
+ _getCombobox() {
1782
+ return (index.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()));
1783
+ }
1784
+ /**
1785
+ * Hydrate a dropdown component with items to display the layer names
1786
+ *
1787
+ * @returns Array of Dropdown items with layer names
1788
+ */
1789
+ _getDropdown() {
1790
+ return (index.h("calcite-dropdown", { class: "layer-picker-dropdown" }, index.h("calcite-action", { slot: "trigger", text: "" }, index.h("calcite-button", { alignment: "icon-end-space-between", appearance: this.appearance, class: "max-width-350", iconEnd: "chevron-down", iconStart: "layers", kind: "neutral", width: "full" }, index.h("div", null, this.selectedName))), index.h("calcite-dropdown-group", { "selection-mode": "single" }, this._getMapLayerOptions())));
1791
+ }
1792
+ /**
1793
+ * Get the appropriate type of dom nodes for each valid layer or table
1794
+ *
1795
+ * @returns Array of dom nodes with the names of the layers and optionally of the tables
1796
+ */
1797
+ _getMapLayerOptions() {
1798
+ return this.ids.reduce((prev, cur) => {
1799
+ if (this._validLayer(cur)) {
1800
+ prev.push(this._getItem(cur, "layer"));
1801
+ }
1802
+ else if (this._validTable(cur)) {
1803
+ prev.push(this._getItem(cur, "table"));
1804
+ }
1805
+ return prev;
1806
+ }, []);
1807
+ }
1808
+ /**
1809
+ * Get the appropriate type of dom node for the current layer or table id
1810
+ *
1811
+ * @returns A dom node with the name of the layer or table
1812
+ */
1813
+ _getItem(id, itemType) {
1814
+ const name = itemType === "layer" ? publicNotificationStore.state.layerNameHash[id] : publicNotificationStore.state.tableNameHash[id];
1815
+ return this.type === "combobox" ? (index.h("calcite-combobox-item", { textLabel: name, value: id })) :
1816
+ this.type === "select" ? (index.h("calcite-option", { label: name, value: id })) :
1817
+ (index.h("calcite-dropdown-item", { onClick: () => void this._setSelectedLayer(id, itemType) }, name));
1818
+ }
1819
+ /**
1820
+ * Store the layer name based on the user selection
1821
+ */
1822
+ _setSelectedLayer(id, type) {
1823
+ this.selectedName = type === "layer" ? publicNotificationStore.state.layerNameHash[id] : publicNotificationStore.state.tableNameHash[id];
1824
+ this.selectedIds = [id];
1825
+ this.layerSelectionChange.emit(this.selectedIds);
1826
+ }
1827
+ /**
1828
+ * Fetch the ids of the layers from the map
1829
+ *
1830
+ * @returns Promise when the operation has completed
1831
+ */
1832
+ async _setLayers() {
1833
+ if (this.mapView) {
1834
+ const mapLayerIds = await mapViewUtils.getMapLayerIds(this.mapView);
1835
+ const mapTableIds = this.showTables ? await mapViewUtils.getMapTableIds(this.mapView) : [];
1836
+ this.ids = [
1837
+ ...mapLayerIds.filter(n => { var _a; return ((_a = this.enabledLayerIds) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this.enabledLayerIds.indexOf(n) > -1 : true; }),
1838
+ ...mapTableIds.filter(n => { var _a; return ((_a = this.enabledTableIds) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this.enabledTableIds.indexOf(n) > -1 : true; }),
1839
+ ];
1840
+ await this._initStateHash();
1841
+ }
1842
+ }
1843
+ /**
1844
+ * Create a layer id:title hash for layer name display
1845
+ *
1846
+ * @returns Promise when the operation has completed
1847
+ */
1848
+ async _initStateHash() {
1849
+ if (this.mapView) {
1850
+ publicNotificationStore.state.layerNameHash = await mapViewUtils.getMapLayerHash(this.mapView);
1851
+ publicNotificationStore.state.tableNameHash = this.showTables ? await mapViewUtils.getMapTableHash(this.mapView) : {};
1852
+ }
1853
+ }
1854
+ /**
1855
+ * Evaluate if the id exists in the current hash and verify if it should be excluded
1856
+ *
1857
+ * @returns boolean when true the layer will be used in the current layer picker type
1858
+ */
1859
+ _validLayer(id) {
1860
+ const name = publicNotificationStore.state.layerNameHash[id];
1861
+ return name && publicNotificationStore.state.managedLayers.indexOf(name) < 0 && (this.enabledLayerIds.length > 0 ?
1862
+ this.enabledLayerIds.indexOf(id) > -1 : name);
1863
+ }
1864
+ /**
1865
+ * Evaluate if the id exists in the current hash and verify if it should be excluded
1866
+ *
1867
+ * @returns boolean when true the table will be used in the current layer picker type
1868
+ */
1869
+ _validTable(id) {
1870
+ const name = publicNotificationStore.state.tableNameHash[id];
1871
+ const validName = name && this.showTables;
1872
+ return validName ? publicNotificationStore.state.managedTables.indexOf(name) < 0 &&
1873
+ (this.enabledTableIds.length > 0 ? this.enabledTableIds.indexOf(id) > -1 : true) : validName;
1874
+ }
1875
+ /**
1876
+ * Fetch the ids of the layers from the map
1877
+ *
1878
+ * @returns Promise when the operation has completed
1879
+ */
1880
+ _layerSelectionChange() {
1881
+ const ids = Array.isArray(this._layerElement.value) ? this._layerElement.value : [this._layerElement.value];
1882
+ if (JSON.stringify(ids) !== JSON.stringify([""])) {
1883
+ this.selectedIds = ids;
1884
+ this.layerSelectionChange.emit(this.selectedIds);
1885
+ }
1886
+ }
1887
+ get el() { return index.getElement(this); }
1888
+ static get watchers() { return {
1889
+ "mapView": ["mapViewWatchHandler"]
1890
+ }; }
1891
+ };
1892
1892
  MapLayerPicker.style = mapLayerPickerCss;
1893
1893
 
1894
1894
  exports.calcite_combobox = Combobox;