@esri/solutions-components 0.10.6 → 0.10.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (157) hide show
  1. package/dist/cjs/basemap-gallery_7.cjs.entry.js +24 -8
  2. package/dist/cjs/buffer-tools_3.cjs.entry.js +1 -1
  3. package/dist/cjs/calcite-combobox_3.cjs.entry.js +354 -967
  4. package/dist/cjs/calcite-graph_2.cjs.entry.js +1082 -0
  5. package/dist/cjs/calcite-shell-panel_14.cjs.entry.js +6 -6
  6. package/dist/cjs/calcite-tree_3.cjs.entry.js +1 -1
  7. package/dist/cjs/card-manager_3.cjs.entry.js +246 -18
  8. package/dist/cjs/crowdsource-manager.cjs.entry.js +169 -49
  9. package/dist/cjs/instant-apps-control-panel.cjs.entry.js +2 -1
  10. package/dist/cjs/instant-apps-time-filter.cjs.entry.js +40 -21
  11. package/dist/cjs/loader.cjs.js +1 -1
  12. package/dist/cjs/map-select-tools_3.cjs.entry.js +3 -3
  13. package/dist/cjs/pci-calculator.cjs.entry.js +1 -1
  14. package/dist/cjs/public-notification.cjs.entry.js +1 -1
  15. package/dist/cjs/refine-results-flow-item.cjs.entry.js +1 -1
  16. package/dist/cjs/share-item.cjs.entry.js +1 -1
  17. package/dist/cjs/solution-configuration.cjs.entry.js +3 -3
  18. package/dist/cjs/solution-contents_3.cjs.entry.js +3 -3
  19. package/dist/cjs/solutions-components.cjs.js +1 -1
  20. package/dist/cjs/spatial-ref.cjs.entry.js +1 -1
  21. package/dist/collection/assets/t9n/crowdsource-manager/resources.json +5 -1
  22. package/dist/collection/assets/t9n/crowdsource-manager/resources_en.json +5 -1
  23. package/dist/collection/assets/t9n/layer-table/resources.json +1 -0
  24. package/dist/collection/assets/t9n/layer-table/resources_en.json +1 -0
  25. package/dist/collection/assets/t9n/map-card/resources.json +6 -1
  26. package/dist/collection/assets/t9n/map-card/resources_en.json +6 -1
  27. package/dist/collection/components/card-manager/card-manager.js +34 -8
  28. package/dist/collection/components/crowdsource-manager/crowdsource-manager.js +173 -65
  29. package/dist/collection/components/layer-table/layer-table.js +175 -8
  30. package/dist/collection/components/map-card/map-card.css +4 -0
  31. package/dist/collection/components/map-card/map-card.js +368 -3
  32. package/dist/collection/components/map-draw-tools/map-draw-tools.js +1 -1
  33. package/dist/collection/components/map-fullscreen/map-fullscreen.js +1 -1
  34. package/dist/collection/components/map-layer-picker/map-layer-picker.js +9 -3
  35. package/dist/collection/components/map-legend/map-legend.js +1 -1
  36. package/dist/collection/components/map-picker/map-picker.css +8 -0
  37. package/dist/collection/components/map-picker/map-picker.js +74 -3
  38. package/dist/collection/components/map-search/map-search.js +1 -1
  39. package/dist/collection/components/map-select-tools/map-select-tools.js +1 -1
  40. package/dist/collection/components/map-tools/map-tools.js +1 -1
  41. package/dist/collection/components/pci-calculator/pci-calculator.js +1 -1
  42. package/dist/collection/components/pdf-download/pdf-download.js +1 -1
  43. package/dist/collection/components/public-notification/public-notification.js +1 -1
  44. package/dist/collection/components/refine-results-flow-item/refine-results-flow-item.js +1 -1
  45. package/dist/collection/components/refine-selection/refine-selection.js +1 -1
  46. package/dist/collection/components/share-item/share-item.js +1 -1
  47. package/dist/collection/components/solution-configuration/solution-configuration.js +3 -3
  48. package/dist/collection/components/solution-contents/solution-contents.js +1 -1
  49. package/dist/collection/components/solution-item/solution-item.js +1 -1
  50. package/dist/collection/components/solution-item-details/solution-item-details.js +1 -1
  51. package/dist/collection/components/solution-item-icon/solution-item-icon.js +1 -1
  52. package/dist/collection/components/solution-item-sharing/solution-item-sharing.js +1 -1
  53. package/dist/collection/components/solution-organization-variables/solution-organization-variables.js +1 -1
  54. package/dist/collection/components/solution-resource-item/solution-resource-item.js +1 -1
  55. package/dist/collection/components/solution-spatial-ref/solution-spatial-ref.js +1 -1
  56. package/dist/collection/components/solution-template-data/solution-template-data.js +1 -1
  57. package/dist/collection/components/solution-variables/solution-variables.js +1 -1
  58. package/dist/collection/components/spatial-ref/spatial-ref.js +1 -1
  59. package/dist/collection/demos/crowdsource-manager.html +1 -0
  60. package/dist/components/card-manager2.js +20 -8
  61. package/dist/components/crowdsource-manager.js +172 -53
  62. package/dist/components/instant-apps-control-panel.js +2 -1
  63. package/dist/components/instant-apps-time-filter.js +46 -23
  64. package/dist/components/layer-table2.js +72 -10
  65. package/dist/components/map-card2.js +288 -47
  66. package/dist/components/map-draw-tools2.js +1 -1
  67. package/dist/components/map-fullscreen2.js +1 -1
  68. package/dist/components/map-layer-picker2.js +9 -3
  69. package/dist/components/map-legend2.js +1 -1
  70. package/dist/components/map-picker2.js +24 -5
  71. package/dist/components/map-search2.js +1 -1
  72. package/dist/components/map-select-tools2.js +1 -1
  73. package/dist/components/map-tools2.js +1 -1
  74. package/dist/components/pci-calculator.js +1 -1
  75. package/dist/components/pdf-download2.js +1 -1
  76. package/dist/components/public-notification.js +1 -1
  77. package/dist/components/refine-results-flow-item.js +1 -1
  78. package/dist/components/refine-selection2.js +1 -1
  79. package/dist/components/share-item.js +1 -1
  80. package/dist/components/solution-configuration.js +3 -3
  81. package/dist/components/solution-contents2.js +1 -1
  82. package/dist/components/solution-item-details2.js +1 -1
  83. package/dist/components/solution-item-icon2.js +1 -1
  84. package/dist/components/solution-item-sharing2.js +1 -1
  85. package/dist/components/solution-item2.js +1 -1
  86. package/dist/components/solution-organization-variables2.js +1 -1
  87. package/dist/components/solution-resource-item2.js +1 -1
  88. package/dist/components/solution-spatial-ref2.js +1 -1
  89. package/dist/components/solution-template-data2.js +1 -1
  90. package/dist/components/solution-variables2.js +1 -1
  91. package/dist/components/spatial-ref.js +1 -1
  92. package/dist/esm/basemap-gallery_7.entry.js +24 -8
  93. package/dist/esm/buffer-tools_3.entry.js +1 -1
  94. package/dist/esm/calcite-combobox_3.entry.js +369 -982
  95. package/dist/esm/calcite-graph_2.entry.js +1077 -0
  96. package/dist/esm/calcite-shell-panel_14.entry.js +6 -6
  97. package/dist/esm/calcite-tree_3.entry.js +1 -1
  98. package/dist/esm/card-manager_3.entry.js +248 -20
  99. package/dist/esm/crowdsource-manager.entry.js +170 -50
  100. package/dist/esm/instant-apps-control-panel.entry.js +2 -1
  101. package/dist/esm/instant-apps-time-filter.entry.js +41 -22
  102. package/dist/esm/loader.js +1 -1
  103. package/dist/esm/map-select-tools_3.entry.js +3 -3
  104. package/dist/esm/pci-calculator.entry.js +1 -1
  105. package/dist/esm/public-notification.entry.js +1 -1
  106. package/dist/esm/refine-results-flow-item.entry.js +1 -1
  107. package/dist/esm/share-item.entry.js +1 -1
  108. package/dist/esm/solution-configuration.entry.js +3 -3
  109. package/dist/esm/solution-contents_3.entry.js +3 -3
  110. package/dist/esm/solutions-components.js +1 -1
  111. package/dist/esm/spatial-ref.entry.js +1 -1
  112. package/dist/solutions-components/assets/t9n/crowdsource-manager/resources.json +5 -1
  113. package/dist/solutions-components/assets/t9n/crowdsource-manager/resources_en.json +5 -1
  114. package/dist/solutions-components/assets/t9n/layer-table/resources.json +1 -0
  115. package/dist/solutions-components/assets/t9n/layer-table/resources_en.json +1 -0
  116. package/dist/solutions-components/assets/t9n/map-card/resources.json +6 -1
  117. package/dist/solutions-components/assets/t9n/map-card/resources_en.json +6 -1
  118. package/dist/solutions-components/demos/crowdsource-manager.html +1 -0
  119. package/dist/solutions-components/p-0abc1354.entry.js +6 -0
  120. package/dist/solutions-components/p-0f7b5d36.entry.js +6 -0
  121. package/dist/solutions-components/p-1867168b.entry.js +6 -0
  122. package/dist/solutions-components/{p-a9818be2.entry.js → p-20c465e9.entry.js} +1 -1
  123. package/dist/solutions-components/{p-db18bce8.entry.js → p-36b50b5b.entry.js} +1 -1
  124. package/dist/solutions-components/{p-85512ae3.entry.js → p-445213cf.entry.js} +1 -1
  125. package/dist/solutions-components/{p-d49f895d.entry.js → p-4a5f0a97.entry.js} +1 -1
  126. package/dist/solutions-components/{p-002c97df.entry.js → p-5d201016.entry.js} +1 -1
  127. package/dist/solutions-components/{p-b7cec3bd.entry.js → p-618bafec.entry.js} +1 -1
  128. package/dist/solutions-components/p-6a66d5a9.entry.js +6 -0
  129. package/dist/solutions-components/p-71a2d5b8.entry.js +6 -0
  130. package/dist/solutions-components/p-7a64b026.entry.js +17 -0
  131. package/dist/solutions-components/p-85c25564.entry.js +6 -0
  132. package/dist/solutions-components/{p-235bf02e.entry.js → p-913413c3.entry.js} +1 -1
  133. package/dist/solutions-components/p-9af1cb14.entry.js +6 -0
  134. package/dist/solutions-components/{p-49aa2929.entry.js → p-bebd4646.entry.js} +1 -1
  135. package/dist/solutions-components/{p-ab2adcaf.entry.js → p-cc092b22.entry.js} +1 -1
  136. package/dist/solutions-components/p-ce454f5a.entry.js +11 -0
  137. package/dist/solutions-components/solutions-components.esm.js +1 -1
  138. package/dist/types/components/card-manager/card-manager.d.ts +11 -0
  139. package/dist/types/components/crowdsource-manager/crowdsource-manager.d.ts +86 -20
  140. package/dist/types/components/layer-table/layer-table.d.ts +30 -0
  141. package/dist/types/components/map-card/map-card.d.ts +124 -0
  142. package/dist/types/components/map-layer-picker/map-layer-picker.d.ts +4 -0
  143. package/dist/types/components/map-picker/map-picker.d.ts +12 -0
  144. package/dist/types/components.d.ts +130 -0
  145. package/dist/types/preact.d.ts +4 -2
  146. package/package.json +2 -2
  147. package/dist/cjs/calcite-dropdown-group_2.cjs.entry.js +0 -453
  148. package/dist/esm/calcite-dropdown-group_2.entry.js +0 -448
  149. package/dist/solutions-components/p-129fd80e.entry.js +0 -6
  150. package/dist/solutions-components/p-3b426576.entry.js +0 -6
  151. package/dist/solutions-components/p-72b217f2.entry.js +0 -6
  152. package/dist/solutions-components/p-72f01088.entry.js +0 -6
  153. package/dist/solutions-components/p-8b999a2b.entry.js +0 -6
  154. package/dist/solutions-components/p-973ff7b2.entry.js +0 -23
  155. package/dist/solutions-components/p-a001f9c9.entry.js +0 -6
  156. package/dist/solutions-components/p-c683b3fe.entry.js +0 -6
  157. package/dist/solutions-components/p-e9d049bd.entry.js +0 -6
@@ -2207,7 +2207,7 @@ const SolutionItemDetails = class {
2207
2207
  * Renders the component.
2208
2208
  */
2209
2209
  render() {
2210
- return (index.h(index.Host, { key: 'd4443b28db9314e9c6976d97af02e7af14d2a5ff' }, index.h("div", { key: 'bd2969f299df5fab6bab10a6cd6dbe7c7213aba4', class: "parent-container" }, index.h("div", { key: 'd7226027bddc89eb4ff89899ee45728534331a5d', class: "inputBottomSeparation" }, index.h("calcite-input", { key: '9fcd5e9c9d5fe7ac652fff4fa06801fec240380f', id: "item-title", value: this.itemDetails.title })), index.h("div", { key: '9542faf04236ec293eff1f1abf0667ee4d26ab45', class: "inputBottomSeparation" }, index.h("input", { key: '9a431fef50c9be4f084b33003c6be4cab65a7da0', accept: ".jpg,.gif,.png,image/jpg,image/gif,image/png", class: "display-none", onChange: (event) => (this._updateThumbnail(event)), ref: (el) => (this.browseForThumbnail = el), type: "file" }), index.h("button", { key: '9ed82a0e807acd0344bd52bcef653728419d3fc1', class: "font-size--3 btn-link inline-block trailer-quarter", onClick: () => this._getThumbnail() }, index.h("svg", { key: '230d6a270cd61f4785b7f39e951e996a7b37a1ca', class: "icon-inline icon-inline--on-left", height: "16", viewBox: "0 0 16 16", width: "16" }, index.h("path", { key: '96a6c77691e152072aa0de03f63d8ec82f1ca051', d: "M14.792 2.666l-1.414-1.413a.965.965 0 0 0-1.385-.03l-1.444 1.444-8.763 8.72L.03 15.481a.371.371 0 0 0 .488.488l4.096-1.756 8.763-8.72-.001-.001.002.002 1.443-1.444a.965.965 0 0 0-.03-1.385zM1.569 14.431l.554-1.293.74.739zm2.338-.924l-1.414-1.414 7.963-7.92 1.414 1.415zm8.67-8.626l-1.413-1.414 1.29-1.29a.306.306 0 0 1 .433 0l.981.98a.306.306 0 0 1 0 .433z" })), this._translations.editThumbnail), index.h("div", { key: 'de04396607c0a61eb1e13bb56581aae9e939b286', class: "flex" }, index.h("div", { key: '3df8a6cde94bc275b85db55375aaa351453c46fb', class: "img-container", ref: (el) => (this.thumbnailContainer = el) }, index.h("img", { key: 'a5084eff2ebee0514c5cac6acf4e1b8dcaaf47d5', class: "scale-down", height: "133", id: "item-thumbnail", ref: (el) => (this.thumbnail = el), width: "200" })), index.h("div", { key: '73199d7582082575282f36ecb6afed3ee6bd900e', class: "snippet-count-container" }, index.h("calcite-input", { key: '7aa7c61d42be36c237c6bd9b72e4ec24ef6dc07d', id: "item-snippet", maxLength: 250, type: "textarea", value: this.itemDetails.snippet }), index.h("label", { key: '9ae2f293b2cb64a475a0969b7e00951a1b55e251', class: "font-size--3", id: "item-snippet-count", ref: (el) => (this.itemSnippetCount = el) })))), index.h("calcite-label", { key: '98cf6dd0f1f53e15c857baeb4f3a580586935762' }, this._translations.description, index.h("label", { key: '2f54c0fd6d75e4b08e74cf5b30d9794d0375a267', id: "item-description-label" }, index.h("calcite-input", { key: '91cf40b10f1bed0cd4bc83a988d9a4151ddec2e6', id: "item-description", type: "textarea", value: this.itemDetails.description }))), index.h("calcite-label", { key: '4261ff6e21385fb681cb6a52dbaa8e3d75973d8b' }, this._translations.tags, index.h("label", { key: 'cde48f34fd18fe530dea6be06c8fb5e602048266', id: "item-tags-label" }, index.h("calcite-input", { key: 'e11931c90df113bd512bab39be092257ffd92e42', id: "item-tags", value: (this.itemDetails.tags && Array.isArray(this.itemDetails.tags) ? this.itemDetails.tags : [this.itemDetails.tags]).join(",") }))), this.itemType !== "Group" ? index.h("calcite-label", null, this._translations.credits, index.h("label", { id: "item-credits-label" }, index.h("calcite-input", { id: "item-credits", value: this.itemDetails.accessInformation }))) : null, this.itemType !== "Group" ? index.h("calcite-label", null, index.h("label", { id: "item-terms-label" }, this._translations.termsOfUse, index.h("calcite-input", { id: "item-terms", type: "textarea", value: this.itemDetails.licenseInfo }))) : null)));
2210
+ return (index.h(index.Host, { key: 'f93ee5d1152024c4c9d4b7376d8e19e5a0ebaccd' }, index.h("div", { key: 'd03106d1566be78c478a8ca798cea04161e835a2', class: "parent-container" }, index.h("div", { key: '78f52543e511e7deecffdc998808fce766863ef3', class: "inputBottomSeparation" }, index.h("calcite-input", { key: '70783f0059d5e526f56a4ff2cff18e20348c4c16', id: "item-title", value: this.itemDetails.title })), index.h("div", { key: 'b2cfc981837ee9fd8549dc62057bc98429f3f50a', class: "inputBottomSeparation" }, index.h("input", { key: '47bdb6fe76a080c297c01ee8624088a501f31f17', accept: ".jpg,.gif,.png,image/jpg,image/gif,image/png", class: "display-none", onChange: (event) => (this._updateThumbnail(event)), ref: (el) => (this.browseForThumbnail = el), type: "file" }), index.h("button", { key: '7c2b6882f87d63f97c609c071b60b62474931c93', class: "font-size--3 btn-link inline-block trailer-quarter", onClick: () => this._getThumbnail() }, index.h("svg", { key: 'b530933142b3aa03de26baa33e4be11ea9f4c806', class: "icon-inline icon-inline--on-left", height: "16", viewBox: "0 0 16 16", width: "16" }, index.h("path", { key: '57388aa06be3e6c3bed24673ab63386cc433f6c0', d: "M14.792 2.666l-1.414-1.413a.965.965 0 0 0-1.385-.03l-1.444 1.444-8.763 8.72L.03 15.481a.371.371 0 0 0 .488.488l4.096-1.756 8.763-8.72-.001-.001.002.002 1.443-1.444a.965.965 0 0 0-.03-1.385zM1.569 14.431l.554-1.293.74.739zm2.338-.924l-1.414-1.414 7.963-7.92 1.414 1.415zm8.67-8.626l-1.413-1.414 1.29-1.29a.306.306 0 0 1 .433 0l.981.98a.306.306 0 0 1 0 .433z" })), this._translations.editThumbnail), index.h("div", { key: '3906eeaa6bd72d0c53a0e472c3606f0ab879a3d3', class: "flex" }, index.h("div", { key: 'fa88b2ea055748202ed7c34ce7df2cfc9a1592a0', class: "img-container", ref: (el) => (this.thumbnailContainer = el) }, index.h("img", { key: '2b5e960405c8f41a66bdf93f47e669d5eae646ad', class: "scale-down", height: "133", id: "item-thumbnail", ref: (el) => (this.thumbnail = el), width: "200" })), index.h("div", { key: '7762aca4498ef2ca8d70beb59cfc5906229c3e5d', class: "snippet-count-container" }, index.h("calcite-input", { key: '1a6e9e299e551f2c7a3f99395a789fd4e1bf1e88', id: "item-snippet", maxLength: 250, type: "textarea", value: this.itemDetails.snippet }), index.h("label", { key: 'a66a1569c45189e013d230f7d2c11fd315ffaa29', class: "font-size--3", id: "item-snippet-count", ref: (el) => (this.itemSnippetCount = el) })))), index.h("calcite-label", { key: '1befca128558c7b638d86521f162bcbf44e889a1' }, this._translations.description, index.h("label", { key: '496939ec6171b926b8f7d6610fa153a0ee63243c', id: "item-description-label" }, index.h("calcite-input", { key: 'a97b85340d620f4fa909b4b697e058e5398df145', id: "item-description", type: "textarea", value: this.itemDetails.description }))), index.h("calcite-label", { key: 'eecadd422f35b01124dbf9ac8ce030c561f8b76d' }, this._translations.tags, index.h("label", { key: 'be9ba3c1c3e4d3bff74bcaf586cef39a8a5c76f2', id: "item-tags-label" }, index.h("calcite-input", { key: '9772f1e364dcb9810ea81bbf2871ee3c81bb0f92', id: "item-tags", value: (this.itemDetails.tags && Array.isArray(this.itemDetails.tags) ? this.itemDetails.tags : [this.itemDetails.tags]).join(",") }))), this.itemType !== "Group" ? index.h("calcite-label", null, this._translations.credits, index.h("label", { id: "item-credits-label" }, index.h("calcite-input", { id: "item-credits", value: this.itemDetails.accessInformation }))) : null, this.itemType !== "Group" ? index.h("calcite-label", null, index.h("label", { id: "item-terms-label" }, this._translations.termsOfUse, index.h("calcite-input", { id: "item-terms", type: "textarea", value: this.itemDetails.licenseInfo }))) : null)));
2211
2211
  }
2212
2212
  componentDidRender() {
2213
2213
  this._loadThumb();
@@ -2385,7 +2385,7 @@ const SolutionItemSharing = class {
2385
2385
  * Renders the component.
2386
2386
  */
2387
2387
  render() {
2388
- return (index.h(index.Host, { key: '7042ab9382712488f9184b305e417dd93379422f' }, index.h("div", { key: '00baf7fac31f03b249592eb8603a74d6f93f2615', class: "container-border" }, index.h("calcite-label", { key: '5328280b6ee86819366800e43eda0c44b55ca277' }, this._translations.groupInfo), this._renderItems(this.sharing))));
2388
+ return (index.h(index.Host, { key: 'b2086d83295956bff47fd5951056000043a4db72' }, index.h("div", { key: '1344ce75b7ae023544d0c177d883ba1c6eaed05b', class: "container-border" }, index.h("calcite-label", { key: 'abbd7a7f1e9dbf94d54ef61a2182b2659d60026e' }, this._translations.groupInfo), this._renderItems(this.sharing))));
2389
2389
  }
2390
2390
  //--------------------------------------------------------------------------
2391
2391
  //
@@ -2504,7 +2504,7 @@ const SolutionOrganizationVariables = class {
2504
2504
  * Renders the component.
2505
2505
  */
2506
2506
  render() {
2507
- return (index.h(index.Host, { key: 'a4456905e1abde8eca22dfb6f3da81959d509b75' }, index.h("div", { key: '8fc37e2a59237ed0cca05b096f901a82da696151' }, index.h("h4", { key: '7bdd9e95f37297c51778a866542517048622e5ca', class: "org-var-header" }, this._translations.orgVariables)), index.h("div", { key: '10bfcebd83ddc363f04149a03298b0c5247fd265', class: "container-border" }, index.h("calcite-tree", { key: '1d168ebbceaf566fb8f4ddea85acba39c08bbd53', id: "variable-label" }, this._renderHierarchy(this._organizationVariables)))));
2507
+ return (index.h(index.Host, { key: '387c9a17b83de9f4aa2dc60666e4c45268b7d656' }, index.h("div", { key: '5181a83dbd700220b8ec55828a37d35fd1406ed1' }, index.h("h4", { key: '88eea182594f50b86ba873289d84ea0e1b7cc3eb', class: "org-var-header" }, this._translations.orgVariables)), index.h("div", { key: 'dcbaf3f135d1a6d660e4f17bce722feb6d2fed3e', class: "container-border" }, index.h("calcite-tree", { key: '4b85c9bd443deb82e570e58ae59c546d8ea9d36d', id: "variable-label" }, this._renderHierarchy(this._organizationVariables)))));
2508
2508
  }
2509
2509
  //--------------------------------------------------------------------------
2510
2510
  //
@@ -2602,7 +2602,7 @@ const SolutionResourceItem = class {
2602
2602
  */
2603
2603
  render() {
2604
2604
  const hasValidResources = this._hasValidResources();
2605
- return (index.h(index.Host, { key: 'c36fddfce9c4c97b281281ec11dfa017d496141e' }, index.h("div", { key: 'e1166173669689e9acee92cc7e53747ebcec0c09', class: "resource-item" }, index.h("div", { key: '86c8e1d498d7b84e9587cdcf4a3bb971fc1ecaad', class: "margin-bottom-1" }, index.h("calcite-button", { key: 'f382275e75efeb5beadef582ddd343a283f014e2', appearance: "solid", class: "resource-button", color: "blue", onClick: () => this._addNewResource() }, this._translations.addResource), index.h("calcite-button", { key: 'c487e618472b047f8db71e8989f849c844682080', appearance: "solid", color: "blue", disabled: !hasValidResources, onClick: () => this._downloadAll() }, this._translations.downloadAll)), index.h("div", { key: '08733ba234cba9b5ea19455256fa961d23ae933b', class: "resources-container", style: { display: hasValidResources ? "inherit" : "none" } }, this._renderResourceList()))));
2605
+ return (index.h(index.Host, { key: '3209042541d0df8440c8ae7b1564ddad9adb4466' }, index.h("div", { key: '11d0ad8b5ad181a4db7836e9f3f05fa3e79b924b', class: "resource-item" }, index.h("div", { key: '1b768c980d3679dd8ce0557cd24c18ab397cac16', class: "margin-bottom-1" }, index.h("calcite-button", { key: '33a827d3df40e68d985a0f6f8c9fdfb89b78ef25', appearance: "solid", class: "resource-button", color: "blue", onClick: () => this._addNewResource() }, this._translations.addResource), index.h("calcite-button", { key: '22adce285d7eb9c5fb5a189b0bee43cd25eb89a3', appearance: "solid", color: "blue", disabled: !hasValidResources, onClick: () => this._downloadAll() }, this._translations.downloadAll)), index.h("div", { key: '20b41623ed7ab10202a5ea929b9ddd63b62d0c0e', class: "resources-container", style: { display: hasValidResources ? "inherit" : "none" } }, this._renderResourceList()))));
2606
2606
  }
2607
2607
  _removedResources = {};
2608
2608
  //--------------------------------------------------------------------------
@@ -2884,7 +2884,7 @@ const SolutionTemplateData = class {
2884
2884
  * Renders the component.
2885
2885
  */
2886
2886
  render() {
2887
- return (index.h(index.Host, { key: '5a417f81d9b0d98ad28f9139406fee4b37204169' }, index.h("div", { key: '0dd5d77a961473bf45f7654ccb2e0507b492a6c7', class: "solution-data-container" }, index.h("calcite-shell", { key: '3b839b36a89f1a9db10a6ad8b3f7d088248770bc', class: "light var-container", dir: "ltr" }, index.h("calcite-panel", { key: '9f6ce42fdad56cf7a9f6b2f9ccac707eb655f4f1', class: "json-editor" }, index.h("div", { key: 'a1ba50c8fd13cf6d4934aa72083c0519c317721d', class: "solution-data-child-container calcite-match-height" }, index.h("json-editor", { key: '8f832aecde35b6b82e16b3d201b738fe202e86a3', class: "solution-data-editor-container", instanceid: this.itemId + "|" + this.instanceid, value: this.value }))), index.h("calcite-shell-panel", { key: 'c24f19fcc440884123f59842b392063925b5cbf6', "height-scale": "l", position: "end", slot: "contextual-panel", "width-scale": "xs" }, index.h("div", { key: '8d9c25baada3e2ca03ee192f44121d7bdab85432', class: this.varsOpen ? "solution-data-child-container" : "solution-data-child-container-collapsed" }, index.h("calcite-button", { key: '247b542336578c5404c7246552424c16030d90a7', appearance: "transparent", class: "collapse-btn", "icon-start": this.varsOpen ? "chevrons-right" : "chevrons-left", id: "collapse-vars", onClick: () => this._toggleVars(), scale: "s", title: this.varsOpen ? this._translations.collapse : this._translations.expand }), index.h("div", { key: '963c1802c7828557cec5493602c3a1669e21683c', class: this.varsOpen ? "org-vars" : "org-vars display-none", id: "orgVars" }, index.h("solution-organization-variables", { key: '566f672a97401d77ed7180d5fc7b2367027fcc57', value: this.organizationVariables })), index.h("div", { key: '79508bfcde2ac8507acd40bbc3edceb944c3e717', class: this.varsOpen ? "sol-vars" : "sol-vars display-none", id: "solVars" }, index.h("solution-variables", { key: '51756082f8d13c73d7ae1349fc5625994a3354bb', value: this.solutionVariables }))))))));
2887
+ return (index.h(index.Host, { key: '2ac01aadffbe8719d947d3258721a24e79c5827a' }, index.h("div", { key: '8576d2c273b557393ae9c959817c3a1803000ca6', class: "solution-data-container" }, index.h("calcite-shell", { key: '7962b2da3ebce8428119e95dee13a79fb06a71ca', class: "light var-container", dir: "ltr" }, index.h("calcite-panel", { key: '49c9e36a219e8f09431f88b7e698bd53bc538e43', class: "json-editor" }, index.h("div", { key: 'ef96fb9a8d9bced4a36dca4786b7c77f06bd3dc7', class: "solution-data-child-container calcite-match-height" }, index.h("json-editor", { key: 'f8e1662a22f6b36e0be929aec00c539508527a81', class: "solution-data-editor-container", instanceid: this.itemId + "|" + this.instanceid, value: this.value }))), index.h("calcite-shell-panel", { key: '853f9c2df14fe53cc305b290cd1e5b9a8f694b4d', "height-scale": "l", position: "end", slot: "contextual-panel", "width-scale": "xs" }, index.h("div", { key: '0bc3d510ba7dc9d4ca1339bf6d5fa1a52c249723', class: this.varsOpen ? "solution-data-child-container" : "solution-data-child-container-collapsed" }, index.h("calcite-button", { key: '2c316175ebe7bdbd4911abbdd58c2bcac8c6e39c', appearance: "transparent", class: "collapse-btn", "icon-start": this.varsOpen ? "chevrons-right" : "chevrons-left", id: "collapse-vars", onClick: () => this._toggleVars(), scale: "s", title: this.varsOpen ? this._translations.collapse : this._translations.expand }), index.h("div", { key: 'e436c6dba30492a9eda496c4da41a7632cc03232', class: this.varsOpen ? "org-vars" : "org-vars display-none", id: "orgVars" }, index.h("solution-organization-variables", { key: '4956e3bf41676ccf3dd0168f6f4f573f14927110', value: this.organizationVariables })), index.h("div", { key: '3376d0034d66f01cd78d01adf5653aeeca63b47f', class: this.varsOpen ? "sol-vars" : "sol-vars display-none", id: "solVars" }, index.h("solution-variables", { key: 'bb3978deedbe0a439d85d1bb7a8d26380e226dd7', value: this.solutionVariables }))))))));
2888
2888
  }
2889
2889
  _initializing = false;
2890
2890
  //--------------------------------------------------------------------------
@@ -2958,7 +2958,7 @@ const SolutionVariables = class {
2958
2958
  * Renders the component.
2959
2959
  */
2960
2960
  render() {
2961
- return (index.h(index.Host, { key: '4367694cf20a2063b57679f1a955ef827eea1c05' }, index.h("div", { key: '875e6e1532e7406ddf6cca804e421980aa23b7cd' }, index.h("h4", { key: 'b6798506cf71d3c84e2c33a3d12a0729591a73a7', class: "org-var-header" }, this._translations.solVariables)), index.h("div", { key: '413d3c7ebae5afa05a8cb5c87f766db64f43e106', class: "container-border" }, index.h("calcite-tree", { key: 'ba5bf27e005ce7536cdfe0c8022c96cd0b4ad920', id: "variable-label" }, this._renderHierarchy(this._solutionVariables)))));
2961
+ return (index.h(index.Host, { key: '207eba2b3a7c2ae6958bc253c50a30ba05e4ad53' }, index.h("div", { key: '258351a67b1ffac4ce9290bdbc7a15fe045e1cf8' }, index.h("h4", { key: 'e8b6c6ff6b78d2ee885f352069426a79e12a4376', class: "org-var-header" }, this._translations.solVariables)), index.h("div", { key: 'e68c85b552c5313300250d4e7a29aee50e3d070d', class: "container-border" }, index.h("calcite-tree", { key: '011383a8abb007bd6d7a59f6a7681f24fc32d3b0', id: "variable-label" }, this._renderHierarchy(this._solutionVariables)))));
2962
2962
  }
2963
2963
  //--------------------------------------------------------------------------
2964
2964
  //
@@ -614,7 +614,7 @@ const SolutionItemIcon = class {
614
614
  * Renders the component.
615
615
  */
616
616
  render() {
617
- return index.h("div", { key: '3b732e3c889dc83eb649af9d66742304e549d229', title: this.type }, index.h("img", { key: '262f4891209996264e8c0248c926a60f71b9e674', class: "item-type-icon item-type-icon-margin", height: "16", src: this._getIconUrl(this.type, this.typeKeywords), width: "16" }));
617
+ return index.h("div", { key: '3a30434531363d13bcc0207dbc90f1ee32454113', title: this.type }, index.h("img", { key: '8ae2eaaeaa00bb86aed97665036fdb1edd14b6be', class: "item-type-icon item-type-icon-margin", height: "16", src: this._getIconUrl(this.type, this.typeKeywords), width: "16" }));
618
618
  }
619
619
  //--------------------------------------------------------------------------
620
620
  //
@@ -28,6 +28,7 @@ const CardManager = class {
28
28
  this.layer = undefined;
29
29
  this.mapView = undefined;
30
30
  this.zoomAndScrollToSelected = undefined;
31
+ this.selectedFeaturesIds = undefined;
31
32
  this._cardLoading = false;
32
33
  this._graphics = undefined;
33
34
  this._translations = undefined;
@@ -53,12 +54,7 @@ const CardManager = class {
53
54
  */
54
55
  async featureSelectionChange(evt) {
55
56
  const ids = evt.detail;
56
- this._cardLoading = true;
57
- // only query if we have some ids...query with no ids will result in all features being returned
58
- const featureSet = ids.length > 0 ? await mapViewUtils.queryFeaturesByID(ids, this.layer, [], false, this.mapView.spatialReference) : [];
59
- // https://github.com/Esri/solutions-components/issues/365
60
- this._graphics = featureSet.sort((a, b) => ids.indexOf(a.getObjectId()) - ids.indexOf(b.getObjectId()));
61
- this._cardLoading = false;
57
+ this._graphics = await this._getFeaturesByIds(ids);
62
58
  }
63
59
  /**
64
60
  * Get the layer view for the provided layer id
@@ -79,6 +75,9 @@ const CardManager = class {
79
75
  */
80
76
  async componentWillLoad() {
81
77
  await this._getTranslations();
78
+ if (this.selectedFeaturesIds?.length > 0) {
79
+ this._graphics = await this._getFeaturesByIds(this.selectedFeaturesIds);
80
+ }
82
81
  }
83
82
  /**
84
83
  * Renders the component.
@@ -86,13 +85,25 @@ const CardManager = class {
86
85
  render() {
87
86
  const featuresClass = this._graphics?.length > 0 ? "" : "display-none";
88
87
  const messageClass = this._graphics?.length > 0 ? "display-none" : "";
89
- return (index.h(index.Host, { key: 'ff2b82f23cc912a79d4f2d04a3263215e54ff03d' }, index.h("div", { key: '64a96d7162508794b955dc4b557fa94d18f8ab53', class: "overflow-auto height-full" }, index.h("calcite-shell", { key: '77b8ad0b9a459d2fb9399ccfebc6d0211147bb01', class: "position-relative " + featuresClass }, index.h("div", { key: 'e0725835f5c1c32a9164e04d6321ba5853a3892c' }, index.h("info-card", { key: '6712a077c4746585e7b2474aedd14e1869b37c34', enableEditGeometry: this.enableEditGeometry, graphics: this._graphics, isLoading: this._cardLoading, isMobile: this.isMobile, mapView: this.mapView }))), index.h("calcite-shell", { key: '38c85dbb72df9b9b1225f1488c3bf384f67d7db4', class: "position-relative " + messageClass }, index.h("div", { key: '66386d1a0d19fb4a023515e5dc4b41ac73a8c257', class: "padding-1" }, index.h("calcite-notice", { key: '12a843bede7b688651b436bcb9b7ad9e7f6217e0', icon: "table", open: true }, index.h("div", { key: '28862f4aa25802ca6b2bdc0ef2af3bcb825267f9', slot: "message" }, this._translations.selectFeaturesToStart)))))));
88
+ return (index.h(index.Host, { key: '0309205d485d9c7a5c558b3619a6c5ac03fcb528' }, index.h("div", { key: 'a5d291f6073b0e0a918573549c6eb29fe1d892dd', class: "overflow-auto height-full" }, index.h("calcite-shell", { key: '572b9cdf002e0c8c46e6c4bc5e2f1f8494228e93', class: "position-relative " + featuresClass }, index.h("div", { key: 'f8ba07deb9786d64f3d25011ff66ead43d809bf1' }, index.h("info-card", { key: '6eda3ab2cfa2e5fb948f5a7ddaeb6b9022aa5543', enableEditGeometry: this.enableEditGeometry, graphics: this._graphics, isLoading: this._cardLoading, isMobile: this.isMobile, mapView: this.mapView }))), index.h("calcite-shell", { key: 'f32d9cfe3a41bbd7d58cdc732c8abe99b232beb7', class: "position-relative " + messageClass }, index.h("div", { key: 'b97eb023c5d57a4a8dda09467d8599166da40f3c', class: "padding-1" }, index.h("calcite-notice", { key: '23a204782bd254909e3ab803a944d10004e4954a', icon: "table", open: true }, index.h("div", { key: 'ea25078647612b8fa40e26b4474a91c853dae126', slot: "message" }, this._translations.selectFeaturesToStart)))))));
90
89
  }
91
90
  //--------------------------------------------------------------------------
92
91
  //
93
92
  // Functions (protected)
94
93
  //
95
94
  //--------------------------------------------------------------------------
95
+ /**
96
+ * Gets the Feature using its ids
97
+ *
98
+ * @returns Promise when complete
99
+ * @protected
100
+ */
101
+ async _getFeaturesByIds(ids) {
102
+ // only query if we have some ids...query with no ids will result in all features being returned
103
+ const featureSet = ids.length > 0 ? await mapViewUtils.queryFeaturesByID(ids, this.layer, [], false, this.mapView.spatialReference) : [];
104
+ // https://github.com/Esri/solutions-components/issues/365
105
+ return featureSet.sort((a, b) => ids.indexOf(a.getObjectId()) - ids.indexOf(b.getObjectId()));
106
+ }
96
107
  /**
97
108
  * Fetches the component's translations
98
109
  *
@@ -113,6 +124,7 @@ const LayerTable = class {
113
124
  constructor(hostRef) {
114
125
  index.registerInstance(this, hostRef);
115
126
  this.featureSelectionChange = index.createEvent(this, "featureSelectionChange", 7);
127
+ this.toggleFilter = index.createEvent(this, "toggleFilter", 7);
116
128
  this.defaultGlobalId = undefined;
117
129
  this.defaultLayerId = undefined;
118
130
  this.defaultOid = undefined;
@@ -132,6 +144,7 @@ const LayerTable = class {
132
144
  this.showNewestFirst = undefined;
133
145
  this.zoomAndScrollToSelected = undefined;
134
146
  this.zoomToScale = undefined;
147
+ this.createFilterModal = true;
135
148
  this._allIds = [];
136
149
  this._controlsThatFit = undefined;
137
150
  this._csvExporting = false;
@@ -383,7 +396,9 @@ const LayerTable = class {
383
396
  */
384
397
  async mapInfoWatchHandler() {
385
398
  this._resetColumnTemplates();
386
- this._initLayerExpressions();
399
+ if (this.createFilterModal) {
400
+ this._initLayerExpressions();
401
+ }
387
402
  this._initToolInfos();
388
403
  this._updateToolbar();
389
404
  await this._sortTable();
@@ -413,7 +428,9 @@ const LayerTable = class {
413
428
  this._floorField = this._layer.floorInfo?.floorField;
414
429
  this._updateFloorDefinitionExpression();
415
430
  await this._resetTable();
416
- this._initLayerExpressions();
431
+ if (this.createFilterModal) {
432
+ this._initLayerExpressions();
433
+ }
417
434
  this._updateShareUrl();
418
435
  this._fetchingData = false;
419
436
  });
@@ -437,6 +454,30 @@ const LayerTable = class {
437
454
  // Methods (public)
438
455
  //
439
456
  //--------------------------------------------------------------------------
457
+ /**
458
+ * Reset the filter
459
+ */
460
+ async filterReset() {
461
+ void this._handleFilterListReset();
462
+ }
463
+ /**
464
+ * Updates the filter
465
+ */
466
+ async filterUpdate() {
467
+ this._handleFilterUpdate();
468
+ }
469
+ /**
470
+ * Closes the filter
471
+ */
472
+ async closeFilter() {
473
+ await this._closeFilter();
474
+ }
475
+ /**
476
+ * refresh the feature table
477
+ */
478
+ async refresh() {
479
+ await this._refresh();
480
+ }
440
481
  //--------------------------------------------------------------------------
441
482
  //
442
483
  // Events (public)
@@ -446,6 +487,10 @@ const LayerTable = class {
446
487
  * Emitted on demand when a layer is selected
447
488
  */
448
489
  featureSelectionChange;
490
+ /**
491
+ * Emitted on demand when filter action is clicked
492
+ */
493
+ toggleFilter;
449
494
  /**
450
495
  * Scroll and zoom to the selected feature from the Features widget.
451
496
  *
@@ -477,6 +522,14 @@ const LayerTable = class {
477
522
  }
478
523
  }
479
524
  }
525
+ /**
526
+ * Handles layer selection change to show new table
527
+ *
528
+ * @param evt CustomEvent the id for the current layer
529
+ */
530
+ async layerSelectionChange(evt) {
531
+ await this._layerSelectionChanged(evt);
532
+ }
480
533
  /**
481
534
  * Refresh the table when edits are completed
482
535
  */
@@ -544,9 +597,9 @@ const LayerTable = class {
544
597
  const selected = this.selectedIds.length.toString();
545
598
  const tableHeightClass = this.isMobile ? "height-full" : "height-full-adjusted";
546
599
  this._validateActiveActions();
547
- return (index.h(index.Host, { key: '547a08c45cc3a0b0bdb5ab841ee202d2d43018dc' }, index.h("calcite-shell", { key: '7ac39e863586727df7685eb5c3faffd87c46bf9d' }, this._getTableControlRow("header"), index.h("div", { key: '322dc4820b17365f3f202ce43d85330d25081eb5', class: `width-full ${tableHeightClass}` }, index.h("calcite-panel", { key: '764955f3cf9371a5ff554821613fffbc9e0bd705', class: "height-full width-full" }, index.h("calcite-loader", { key: '031fc6520de11b166111626501f0208f1b69c9ff', class: loadingClass, label: this._translations.fetchingData, scale: "l" }), index.h("div", { key: '8d62258ee356fdf6bc6c03f88848a32270ce5eed', class: tableNodeClass, ref: this.onTableNodeCreate })), !this.isMobile ? (index.h("div", { class: "bottom-left text-color height-19" }, this._translations.recordsSelected
600
+ return (index.h(index.Host, { key: '17071727cb283d84afb8beab8382bd3623f35920' }, index.h("calcite-shell", { key: 'f8508d67fd4b100fdc3f52b7db63194714cf216b' }, this._getTableControlRow("header"), index.h("div", { key: '5c1ebcb0530764a9568dc5dae153632a3d9491c8', class: `width-full ${tableHeightClass}` }, index.h("calcite-panel", { key: '7a6420894e4e50e2b4cda6e5ebe043134f4c0397', class: "height-full width-full" }, index.h("calcite-loader", { key: '48d4fe7e27fae877ca0e4caa22555968636f6c33', class: loadingClass, label: this._translations.fetchingData, scale: "l" }), index.h("div", { key: 'cce71356e8ca141d1a18b32944d4fa03af8aae33', class: tableNodeClass, ref: this.onTableNodeCreate })), !this.isMobile ? (index.h("div", { class: "bottom-left text-color height-19" }, this._translations.recordsSelected
548
601
  .replace("{{total}}", total)
549
- .replace("{{selected}}", selected))) : undefined)), this._filterModal()));
602
+ .replace("{{selected}}", selected))) : undefined)), this.createFilterModal && this._filterModal()));
550
603
  }
551
604
  /**
552
605
  * Called once after the component is loaded
@@ -615,7 +668,7 @@ const LayerTable = class {
615
668
  _getActionBar() {
616
669
  const containerClass = this.isMobile ? "width-full" : "";
617
670
  const mobileClass = this.isMobile ? "border-top" : "";
618
- return (index.h("calcite-action-bar", { class: containerClass, expandDisabled: true, expanded: true, id: this._getId("bar"), layout: "horizontal" }, index.h("div", { class: `border-end ${containerClass} ${mobileClass}`, id: "solutions-map-layer-picker-container" }, index.h("map-layer-picker", { appearance: "transparent", defaultLayerId: this.defaultLayerId, display: "inline-flex", height: 50, isMobile: this.isMobile, mapView: this.mapView, onLayerSelectionChange: (evt) => void this._layerSelectionChanged(evt), onlyShowUpdatableLayers: this.onlyShowUpdatableLayers, placeholderIcon: "layers", scale: "l", showSingleLayerAsLabel: true, showTables: true, type: "dropdown" })), !this.isMobile ? this._getActions() : undefined));
671
+ return (index.h("calcite-action-bar", { class: containerClass, expandDisabled: true, expanded: true, id: this._getId("bar"), layout: "horizontal" }, index.h("div", { class: `border-end ${containerClass} ${mobileClass}`, id: "solutions-map-layer-picker-container" }, index.h("map-layer-picker", { appearance: "transparent", defaultLayerId: this.defaultLayerId, display: "inline-flex", height: 50, isMobile: this.isMobile, mapView: this.mapView, onlyShowUpdatableLayers: this.onlyShowUpdatableLayers, placeholderIcon: "layers", scale: "l", selectedIds: this._layer ? [this._layer?.id] : [], showSingleLayerAsLabel: true, showTables: true, type: "dropdown" })), !this.isMobile ? this._getActions() : undefined));
619
672
  }
620
673
  /**
621
674
  * Get the actions that are used for various interactions with the table
@@ -660,15 +713,19 @@ const LayerTable = class {
660
713
  */
661
714
  _validateEnabledActions() {
662
715
  const featuresSelected = this._featuresSelected();
716
+ const showMultipleEdits = this.selectedIds.length > 1 && this._layer?.capabilities?.operations?.supportsUpdate;
663
717
  const selectionDependant = [
664
718
  "zoom-to-object",
719
+ "pencil",
665
720
  "trash",
666
721
  "erase",
667
722
  "selected-items-filter"
668
723
  ];
669
724
  this._toolInfos?.forEach(ti => {
670
725
  if (ti && selectionDependant.indexOf(ti.icon) > -1) {
671
- ti.disabled = !featuresSelected;
726
+ // disable the pencil icon if multiple features are not selected
727
+ // For other icons disable them if any feature is not selected
728
+ ti.disabled = ti.icon === "pencil" ? !showMultipleEdits : !featuresSelected;
672
729
  }
673
730
  });
674
731
  }
@@ -702,6 +759,7 @@ const LayerTable = class {
702
759
  */
703
760
  _initToolInfos() {
704
761
  const featuresSelected = this._featuresSelected();
762
+ const showMultipleEdits = this.selectedIds.length > 1 && this._layer?.capabilities?.operations?.supportsUpdate;
705
763
  const featuresEmpty = this._featuresEmpty();
706
764
  const hasFilterExpressions = this._hasFilterExpressions();
707
765
  if (this._translations) {
@@ -720,10 +778,20 @@ const LayerTable = class {
720
778
  icon: "filter",
721
779
  indicator: false,
722
780
  label: this._translations.filters,
723
- func: () => this._toggleFilter(),
781
+ func: () => this.createFilterModal ? this._toggleFilter() : this.toggleFilter.emit(),
724
782
  disabled: false,
725
783
  isOverflow: false
726
784
  } : undefined,
785
+ !this.mapHidden ? {
786
+ active: false,
787
+ icon: "pencil",
788
+ indicator: false,
789
+ label: this._translations.editMultiple,
790
+ func: () => alert(this._translations.editMultiple),
791
+ disabled: !showMultipleEdits,
792
+ isOverflow: false,
793
+ isSublist: false
794
+ } : undefined,
727
795
  this._deleteEnabled ? {
728
796
  active: undefined,
729
797
  icon: "trash",
@@ -908,7 +976,7 @@ const LayerTable = class {
908
976
  _setControlsThatFit(controlsThatFit, skipControls) {
909
977
  let update = JSON.stringify(controlsThatFit) !== JSON.stringify(this._controlsThatFit);
910
978
  const actionbar = document.getElementById("solutions-action-bar");
911
- actionbar.childNodes.forEach((n) => {
979
+ actionbar?.childNodes?.forEach((n) => {
912
980
  if (skipControls.indexOf(n.id) < 0 && !update) {
913
981
  update = this._controlsThatFit.map(c => c.id).indexOf(n.id) < 0;
914
982
  }
@@ -1798,7 +1866,7 @@ function joinAppProxies(map, config, appProxies) {
1798
1866
  return map;
1799
1867
  }
1800
1868
 
1801
- const mapCardCss = ":host{display:block;--calcite-label-margin-bottom:0;--calcite-block-padding:0}.map-height{height:calc(100% - 51px)}.height-full{height:100%}.box-shadow{box-shadow:none !important}.visibility-hidden-1{visibility:hidden;height:1px;}.display-none{display:none}";
1869
+ const mapCardCss = ":host{display:block;--calcite-label-margin-bottom:0;--calcite-block-padding:0}.map-height{height:calc(100% - 51px)}.height-full{height:100%}.height-50-px{height:50px}.box-shadow{box-shadow:none !important}.visibility-hidden-1{visibility:hidden;height:1px;}.display-none{display:none}";
1802
1870
  const MapCardStyle0 = mapCardCss;
1803
1871
 
1804
1872
  const MapCard = class {
@@ -1806,8 +1874,10 @@ const MapCard = class {
1806
1874
  index.registerInstance(this, hostRef);
1807
1875
  this.mapChanged = index.createEvent(this, "mapChanged", 7);
1808
1876
  this.beforeMapChanged = index.createEvent(this, "beforeMapChanged", 7);
1877
+ this.toggleFilter = index.createEvent(this, "toggleFilter", 7);
1809
1878
  this.appProxies = undefined;
1810
1879
  this.defaultWebmapId = "";
1880
+ this.defaultLayerId = undefined;
1811
1881
  this.enableHome = undefined;
1812
1882
  this.enableLegend = undefined;
1813
1883
  this.enableFloorFilter = undefined;
@@ -1828,8 +1898,17 @@ const MapCard = class {
1828
1898
  this.stackTools = true;
1829
1899
  this.theme = undefined;
1830
1900
  this.toolOrder = undefined;
1901
+ this.isMapLayout = undefined;
1902
+ this.selectedFeaturesIds = undefined;
1903
+ this.selectedLayer = undefined;
1904
+ this.zoomToScale = undefined;
1905
+ this.onlyShowUpdatableLayers = undefined;
1906
+ this.isMobile = undefined;
1907
+ this.mapInfo = undefined;
1908
+ this._translations = undefined;
1831
1909
  this._searchConfiguration = undefined;
1832
1910
  this._webMapInfo = undefined;
1911
+ this._showHideOpen = false;
1833
1912
  }
1834
1913
  get el() { return index.getElement(this); }
1835
1914
  //--------------------------------------------------------------------------
@@ -1877,6 +1956,22 @@ const MapCard = class {
1877
1956
  * HTMLMapToolsElement: the container div for the map tools
1878
1957
  */
1879
1958
  _mapTools;
1959
+ /**
1960
+ * HTMLCalciteDropdownElement: Dropdown the will support overflow tools that won't fit in the current display
1961
+ */
1962
+ _moreDropdown;
1963
+ /**
1964
+ * boolean: When true the show/hide fields list is forced open
1965
+ */
1966
+ _mapListExpanded = false;
1967
+ /**
1968
+ * boolean: When true an indicator will be shown on the action
1969
+ */
1970
+ _filterActive = false;
1971
+ /**
1972
+ * string: The current layers definition expression
1973
+ */
1974
+ _definitionExpression;
1880
1975
  //--------------------------------------------------------------------------
1881
1976
  //
1882
1977
  // Watch handlers
@@ -1888,11 +1983,31 @@ const MapCard = class {
1888
1983
  enableHomeWatchHandler() {
1889
1984
  this._initHome();
1890
1985
  }
1986
+ /**
1987
+ * watch for changes in layer view and verify if it has editing enabled
1988
+ */
1989
+ async selectedLayerWatchHandler() {
1990
+ await this.selectedLayer?.when(async () => {
1991
+ this._definitionExpression = this.selectedLayer.definitionExpression;
1992
+ });
1993
+ }
1891
1994
  //--------------------------------------------------------------------------
1892
1995
  //
1893
1996
  // Methods (public)
1894
1997
  //
1895
1998
  //--------------------------------------------------------------------------
1999
+ /**
2000
+ * Reset the filter
2001
+ */
2002
+ async filterReset() {
2003
+ this._filterActive = false;
2004
+ }
2005
+ /**
2006
+ * updates the filter
2007
+ */
2008
+ async updateFilter() {
2009
+ this._filterActive = this._definitionExpression !== this.selectedLayer.definitionExpression;
2010
+ }
1896
2011
  //--------------------------------------------------------------------------
1897
2012
  //
1898
2013
  // Events (public)
@@ -1906,12 +2021,23 @@ const MapCard = class {
1906
2021
  * Emitted before a new map is loaded
1907
2022
  */
1908
2023
  beforeMapChanged;
2024
+ /**
2025
+ * Emitted on demand when filter action is clicked
2026
+ */
2027
+ toggleFilter;
1909
2028
  /**
1910
2029
  * Listen for changes to map info and load the appropriate map
1911
2030
  */
1912
2031
  async mapInfoChange(evt) {
1913
2032
  await this._loadMap(evt.detail);
1914
2033
  }
2034
+ /**
2035
+ * Listen for change when mapview doesn't contain any layer
2036
+ */
2037
+ noLayersFound() {
2038
+ this.selectedLayer = undefined;
2039
+ this.selectedFeaturesIds = [];
2040
+ }
1915
2041
  //--------------------------------------------------------------------------
1916
2042
  //
1917
2043
  // Functions (lifecycle)
@@ -1921,17 +2047,28 @@ const MapCard = class {
1921
2047
  * StencilJS: Called once just after the component is first connected to the DOM.
1922
2048
  */
1923
2049
  async componentWillLoad() {
2050
+ await this._getTranslations();
1924
2051
  await this._initModules();
1925
2052
  }
1926
2053
  /**
1927
2054
  * Renders the component.
1928
2055
  */
1929
2056
  render() {
2057
+ const mapContainerClass = this.isMapLayout ? "display-flex height-50-px" : "";
1930
2058
  const mapClass = this.hidden ? "visibility-hidden-1" : "";
1931
2059
  const themeClass = this.theme === "dark" ? "calcite-mode-dark" : "calcite-mode-light";
1932
2060
  const mapPickerClass = this.mapInfos?.length > 1 ? "" : "display-none";
1933
2061
  const mapHeightClass = this.mapInfos?.length > 1 ? "map-height" : "height-full";
1934
- return (index.h(index.Host, { key: '4f5c0cd408f92856ceb2ba281a02856064ef6a5a' }, index.h("map-picker", { key: 'f69742384dc5ba13bbf257592cc8c35de77590f0', class: mapPickerClass, mapInfos: this.mapInfos, ref: (el) => this._mapPicker = el }), index.h("div", { key: '3ddddf3f674d49ae59fe627af1c67ec59718c9a3', class: `${mapHeightClass} ${mapClass}`, ref: (el) => (this._mapDiv = el) }), index.h("map-tools", { key: '6cb9518e74af0594ab6b657f0caec3598c250cb2', basemapConfig: this.basemapConfig, class: `box-shadow ${themeClass}`, enableBasemap: this.enableBasemap, enableFloorFilter: this.enableFloorFilter, enableFullscreen: this.enableFullscreen, enableHome: this.enableHome, enableLegend: this.enableLegend, enableSearch: this.enableSearch, enableSingleExpand: this.enableSingleExpand, homeZoomToolsSize: this.homeZoomToolsSize, mapView: this.mapView, mapWidgetsSize: this.mapWidgetsSize, position: this.mapWidgetsPosition, ref: (el) => this._mapTools = el, searchConfiguration: this._searchConfiguration, stackTools: this.stackTools, toolOrder: this.toolOrder })));
2062
+ const containerClass = this.isMobile ? "width-full" : "";
2063
+ const mobileClass = this.isMobile ? "border-top" : "";
2064
+ const headerElements = this.isMapLayout ? "" : "display-none";
2065
+ return (index.h(index.Host, { key: '7029e518173a8c1e6e00049b8e68e23bed23d9cb' }, index.h("div", { key: '2b8d9197dcb68529562728fddeb53d0a7e9cbb86', class: `${mapContainerClass}` }, index.h("map-picker", { key: '2e50b7c70832f4151fafd06e860846a5efa8f6f1', class: mapPickerClass, isMapLayout: this.isMapLayout, mapInfos: this.mapInfos, ref: (el) => this._mapPicker = el }), index.h("div", { key: 'bc01ef7fb34400e3ff58151cab6abbabd9fa8a6f', class: `mapView-header display-flex ${headerElements}` }, index.h("div", { key: '1f1bf6ffb92fbc182be8333b4ae3d70271ea2f1b', class: `border-end ${containerClass} ${mobileClass}`, id: "solutions-map-layer-picker-container" }, this.mapView && index.h("map-layer-picker", { key: '47320f3794f060262c4ed29ec1400a50d9744a97', appearance: "transparent", defaultLayerId: this.defaultLayerId, display: "inline-flex", height: 50, isMobile: this.isMobile, mapView: this.mapView, onlyShowUpdatableLayers: this.onlyShowUpdatableLayers, placeholderIcon: "layers", scale: "l", selectedIds: this.selectedLayer ? [this.selectedLayer.id] : [], showSingleLayerAsLabel: true, showTables: true, type: "dropdown" })), this._getDropDownItem())), index.h("div", { key: '7101bfed6c0e0932275b0d28eea0ea5e1603aa8e', class: `${mapHeightClass} ${mapClass}`, ref: (el) => (this._mapDiv = el) }), index.h("map-tools", { key: '8ca28e50a77a25699cd6c17fe4f31788ca1cb49d', basemapConfig: this.basemapConfig, class: `box-shadow ${themeClass}`, enableBasemap: this.enableBasemap, enableFloorFilter: this.enableFloorFilter, enableFullscreen: this.enableFullscreen, enableHome: this.enableHome, enableLegend: this.enableLegend, enableSearch: this.enableSearch, enableSingleExpand: this.enableSingleExpand, homeZoomToolsSize: this.homeZoomToolsSize, mapView: this.mapView, mapWidgetsSize: this.mapWidgetsSize, position: this.mapWidgetsPosition, ref: (el) => this._mapTools = el, searchConfiguration: this._searchConfiguration, stackTools: this.stackTools, toolOrder: this.toolOrder })));
2066
+ }
2067
+ /**
2068
+ * Called each time after the component is loaded
2069
+ */
2070
+ async componentDidRender() {
2071
+ document.onclick = (e) => this._handleDocumentClick(e);
1935
2072
  }
1936
2073
  //--------------------------------------------------------------------------
1937
2074
  //
@@ -2030,8 +2167,99 @@ const MapCard = class {
2030
2167
  this.mapView.ui.remove(this._homeWidget);
2031
2168
  }
2032
2169
  }
2170
+ /**
2171
+ * Toggle show/hide dropdown
2172
+ */
2173
+ _toggleShowHide() {
2174
+ this._showHideOpen = !this._showHideOpen;
2175
+ }
2176
+ /**
2177
+ * Open show/hide dropdown
2178
+ */
2179
+ _forceShowHide() {
2180
+ if (this._moreDropdown) {
2181
+ this._moreDropdown.open = this._showHideOpen;
2182
+ }
2183
+ }
2184
+ /**
2185
+ * Close show/hide dropdown when the user clicks outside of it
2186
+ */
2187
+ _handleDocumentClick(e) {
2188
+ const id = e.target?.id;
2189
+ if (this._showHideOpen && id !== "solutions-subset-list" && id !== "solutions-more" && id !== "chevron-down") {
2190
+ if (this._moreDropdown) {
2191
+ this._showHideOpen = false;
2192
+ this._moreDropdown.open = false;
2193
+ }
2194
+ }
2195
+ // if clicked on map picker then toggle the dropdown
2196
+ if (e.target.tagName === 'MAP-PICKER') {
2197
+ this._mapListExpanded = !this._mapListExpanded;
2198
+ void this._mapPicker.toggle(this._mapListExpanded);
2199
+ }
2200
+ // if clicked on other place then just close the dropdown
2201
+ if (e.target.tagName !== 'MAP-PICKER') {
2202
+ this._mapListExpanded = false;
2203
+ void this._mapPicker.close();
2204
+ }
2205
+ }
2206
+ /**
2207
+ * Zoom to all selected features
2208
+ *
2209
+ * @returns a promise that will resolve when the operation is complete
2210
+ */
2211
+ async _zoom() {
2212
+ if (this.selectedLayer) {
2213
+ const selectedLayerView = await mapViewUtils.getFeatureLayerView(this.mapView, this.selectedLayer.id);
2214
+ await mapViewUtils.goToSelection(this.selectedFeaturesIds, selectedLayerView, this.mapView, true, undefined, this.zoomToScale);
2215
+ }
2216
+ }
2217
+ async _toggleFilter() {
2218
+ this.toggleFilter.emit();
2219
+ }
2220
+ /**
2221
+ * Return true when we have at least 1 layer expression for the current layer
2222
+ *
2223
+ * @returns boolean
2224
+ */
2225
+ _hasFilterExpressions() {
2226
+ let layerExpressions;
2227
+ if (this.mapInfo?.filterConfig?.layerExpressions && this.selectedLayer?.id) {
2228
+ layerExpressions = this.mapInfo.filterConfig.layerExpressions.filter((exp) => exp.id === this.selectedLayer.id);
2229
+ }
2230
+ return layerExpressions?.length > 0;
2231
+ }
2232
+ /**
2233
+ * Get Dropdown action item
2234
+ * @returns Dropdown item
2235
+ */
2236
+ _getDropDownItem() {
2237
+ return (index.h("calcite-dropdown", { closeOnSelectDisabled: true, disabled: this.selectedLayer === undefined, id: "solutions-more", onCalciteDropdownBeforeClose: () => this._forceShowHide(), ref: (el) => this._moreDropdown = el, widthScale: "l" }, index.h("calcite-action", { appearance: "solid", id: 'solutions-more', label: "", onClick: () => this._toggleShowHide(), slot: "trigger", text: "" }, index.h("calcite-button", { appearance: "transparent", iconEnd: this._showHideOpen ? "chevron-up" : "chevron-down", kind: "neutral" }, this._translations.more)), index.h("calcite-dropdown-group", { selectionMode: "none" }, this._getDropDownItems())));
2238
+ }
2239
+ /**
2240
+ * Gets the dropdown items
2241
+ * @returns dropdown items
2242
+ */
2243
+ _getDropDownItems() {
2244
+ const featureSelected = this.selectedFeaturesIds?.length > 0;
2245
+ const showMultipleEdits = this.selectedFeaturesIds?.length > 1;
2246
+ const hasFilterExpressions = this._hasFilterExpressions();
2247
+ return (index.h(index.Fragment, null, index.h("calcite-dropdown-group", { selectionMode: "none" }, index.h("calcite-dropdown-item", { disabled: !showMultipleEdits, iconStart: "pencil", id: "solutions-subset-list", onClick: () => alert(this._translations.editMultiple) }, this._translations.editMultiple)), index.h("calcite-dropdown-group", { selectionMode: "none" }, index.h("calcite-dropdown-item", { iconStart: "refresh", id: "solutions-subset-list", onClick: () => { this.selectedLayer.refresh(); } }, this._translations.refresh)), index.h("calcite-dropdown-group", { selectionMode: "none" }, index.h("calcite-dropdown-item", { disabled: !featureSelected, iconStart: "zoom-to-object", id: "solutions-subset-list", onClick: this._zoom.bind(this) }, this._translations.zoom)), hasFilterExpressions &&
2248
+ index.h("calcite-dropdown-group", null, index.h("calcite-dropdown-item", { disabled: false, iconStart: "filter", id: "solutions-subset-list", onClick: this._toggleFilter.bind(this), selected: this._filterActive }, this._translations.filters))));
2249
+ }
2250
+ /**
2251
+ * Fetches the component's translations
2252
+ *
2253
+ * @returns Promise when complete
2254
+ * @protected
2255
+ */
2256
+ async _getTranslations() {
2257
+ const messages = await locale.getLocaleComponentStrings(this.el);
2258
+ this._translations = messages[0];
2259
+ }
2033
2260
  static get watchers() { return {
2034
- "enableHome": ["enableHomeWatchHandler"]
2261
+ "enableHome": ["enableHomeWatchHandler"],
2262
+ "selectedLayer": ["selectedLayerWatchHandler"]
2035
2263
  }; }
2036
2264
  };
2037
2265
  MapCard.style = MapCardStyle0;