@esri/solutions-components 0.5.8 → 0.5.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (260) hide show
  1. package/dist/assets/t9n/buffer-tools/resources_ar.json +4 -4
  2. package/dist/assets/t9n/buffer-tools/resources_bg.json +4 -4
  3. package/dist/assets/t9n/buffer-tools/resources_bs.json +4 -4
  4. package/dist/assets/t9n/buffer-tools/resources_ca.json +4 -4
  5. package/dist/assets/t9n/buffer-tools/resources_cs.json +4 -4
  6. package/dist/assets/t9n/buffer-tools/resources_da.json +4 -4
  7. package/dist/assets/t9n/buffer-tools/resources_de.json +4 -4
  8. package/dist/assets/t9n/buffer-tools/resources_el.json +4 -4
  9. package/dist/assets/t9n/buffer-tools/resources_es.json +4 -4
  10. package/dist/assets/t9n/buffer-tools/resources_et.json +4 -4
  11. package/dist/assets/t9n/buffer-tools/resources_fi.json +4 -4
  12. package/dist/assets/t9n/buffer-tools/resources_fr.json +4 -4
  13. package/dist/assets/t9n/buffer-tools/resources_he.json +4 -4
  14. package/dist/assets/t9n/buffer-tools/resources_hr.json +4 -4
  15. package/dist/assets/t9n/buffer-tools/resources_hu.json +4 -4
  16. package/dist/assets/t9n/buffer-tools/resources_id.json +4 -4
  17. package/dist/assets/t9n/buffer-tools/resources_it.json +4 -4
  18. package/dist/assets/t9n/buffer-tools/resources_ja.json +4 -4
  19. package/dist/assets/t9n/buffer-tools/resources_ko.json +4 -4
  20. package/dist/assets/t9n/buffer-tools/resources_lt.json +4 -4
  21. package/dist/assets/t9n/buffer-tools/resources_lv.json +4 -4
  22. package/dist/assets/t9n/buffer-tools/resources_nb.json +4 -4
  23. package/dist/assets/t9n/buffer-tools/resources_nl.json +4 -4
  24. package/dist/assets/t9n/buffer-tools/resources_pl.json +4 -4
  25. package/dist/assets/t9n/buffer-tools/resources_pt-BR.json +4 -4
  26. package/dist/assets/t9n/buffer-tools/resources_pt-PT.json +4 -4
  27. package/dist/assets/t9n/buffer-tools/resources_ro.json +4 -4
  28. package/dist/assets/t9n/buffer-tools/resources_ru.json +4 -4
  29. package/dist/assets/t9n/buffer-tools/resources_sk.json +4 -4
  30. package/dist/assets/t9n/buffer-tools/resources_sl.json +4 -4
  31. package/dist/assets/t9n/buffer-tools/resources_sr.json +4 -4
  32. package/dist/assets/t9n/buffer-tools/resources_sv.json +4 -4
  33. package/dist/assets/t9n/buffer-tools/resources_th.json +4 -4
  34. package/dist/assets/t9n/buffer-tools/resources_tr.json +4 -4
  35. package/dist/assets/t9n/buffer-tools/resources_uk.json +4 -4
  36. package/dist/assets/t9n/buffer-tools/resources_vi.json +4 -4
  37. package/dist/assets/t9n/buffer-tools/resources_zh-CN.json +4 -4
  38. package/dist/assets/t9n/buffer-tools/resources_zh-HK.json +4 -4
  39. package/dist/assets/t9n/buffer-tools/resources_zh-TW.json +4 -4
  40. package/dist/assets/t9n/map-draw-tools/resources_ar.json +3 -3
  41. package/dist/assets/t9n/map-draw-tools/resources_bg.json +3 -3
  42. package/dist/assets/t9n/map-draw-tools/resources_bs.json +3 -3
  43. package/dist/assets/t9n/map-draw-tools/resources_ca.json +3 -3
  44. package/dist/assets/t9n/map-draw-tools/resources_cs.json +3 -3
  45. package/dist/assets/t9n/map-draw-tools/resources_da.json +3 -3
  46. package/dist/assets/t9n/map-draw-tools/resources_de.json +3 -3
  47. package/dist/assets/t9n/map-draw-tools/resources_el.json +3 -3
  48. package/dist/assets/t9n/map-draw-tools/resources_es.json +3 -3
  49. package/dist/assets/t9n/map-draw-tools/resources_et.json +3 -3
  50. package/dist/assets/t9n/map-draw-tools/resources_fi.json +3 -3
  51. package/dist/assets/t9n/map-draw-tools/resources_fr.json +3 -3
  52. package/dist/assets/t9n/map-draw-tools/resources_he.json +3 -3
  53. package/dist/assets/t9n/map-draw-tools/resources_hr.json +3 -3
  54. package/dist/assets/t9n/map-draw-tools/resources_hu.json +3 -3
  55. package/dist/assets/t9n/map-draw-tools/resources_id.json +3 -3
  56. package/dist/assets/t9n/map-draw-tools/resources_it.json +3 -3
  57. package/dist/assets/t9n/map-draw-tools/resources_ja.json +3 -3
  58. package/dist/assets/t9n/map-draw-tools/resources_ko.json +3 -3
  59. package/dist/assets/t9n/map-draw-tools/resources_lt.json +3 -3
  60. package/dist/assets/t9n/map-draw-tools/resources_lv.json +3 -3
  61. package/dist/assets/t9n/map-draw-tools/resources_nb.json +3 -3
  62. package/dist/assets/t9n/map-draw-tools/resources_nl.json +3 -3
  63. package/dist/assets/t9n/map-draw-tools/resources_pl.json +3 -3
  64. package/dist/assets/t9n/map-draw-tools/resources_pt-BR.json +3 -3
  65. package/dist/assets/t9n/map-draw-tools/resources_pt-PT.json +3 -3
  66. package/dist/assets/t9n/map-draw-tools/resources_ro.json +3 -3
  67. package/dist/assets/t9n/map-draw-tools/resources_ru.json +3 -3
  68. package/dist/assets/t9n/map-draw-tools/resources_sk.json +3 -3
  69. package/dist/assets/t9n/map-draw-tools/resources_sl.json +3 -3
  70. package/dist/assets/t9n/map-draw-tools/resources_sr.json +3 -3
  71. package/dist/assets/t9n/map-draw-tools/resources_sv.json +3 -3
  72. package/dist/assets/t9n/map-draw-tools/resources_th.json +3 -3
  73. package/dist/assets/t9n/map-draw-tools/resources_tr.json +3 -3
  74. package/dist/assets/t9n/map-draw-tools/resources_uk.json +3 -3
  75. package/dist/assets/t9n/map-draw-tools/resources_vi.json +3 -3
  76. package/dist/assets/t9n/map-draw-tools/resources_zh-CN.json +3 -3
  77. package/dist/assets/t9n/map-draw-tools/resources_zh-HK.json +3 -3
  78. package/dist/assets/t9n/map-draw-tools/resources_zh-TW.json +3 -3
  79. package/dist/assets/t9n/map-select-tools/resources_ar.json +13 -11
  80. package/dist/assets/t9n/map-select-tools/resources_bg.json +13 -11
  81. package/dist/assets/t9n/map-select-tools/resources_bs.json +13 -11
  82. package/dist/assets/t9n/map-select-tools/resources_ca.json +13 -11
  83. package/dist/assets/t9n/map-select-tools/resources_cs.json +13 -11
  84. package/dist/assets/t9n/map-select-tools/resources_da.json +13 -11
  85. package/dist/assets/t9n/map-select-tools/resources_de.json +13 -11
  86. package/dist/assets/t9n/map-select-tools/resources_el.json +13 -11
  87. package/dist/assets/t9n/map-select-tools/resources_es.json +13 -11
  88. package/dist/assets/t9n/map-select-tools/resources_et.json +13 -11
  89. package/dist/assets/t9n/map-select-tools/resources_fi.json +13 -11
  90. package/dist/assets/t9n/map-select-tools/resources_fr.json +13 -11
  91. package/dist/assets/t9n/map-select-tools/resources_he.json +13 -11
  92. package/dist/assets/t9n/map-select-tools/resources_hr.json +13 -11
  93. package/dist/assets/t9n/map-select-tools/resources_hu.json +13 -11
  94. package/dist/assets/t9n/map-select-tools/resources_id.json +13 -11
  95. package/dist/assets/t9n/map-select-tools/resources_it.json +13 -11
  96. package/dist/assets/t9n/map-select-tools/resources_ja.json +13 -11
  97. package/dist/assets/t9n/map-select-tools/resources_ko.json +13 -11
  98. package/dist/assets/t9n/map-select-tools/resources_lt.json +13 -11
  99. package/dist/assets/t9n/map-select-tools/resources_lv.json +13 -11
  100. package/dist/assets/t9n/map-select-tools/resources_nb.json +13 -11
  101. package/dist/assets/t9n/map-select-tools/resources_nl.json +13 -11
  102. package/dist/assets/t9n/map-select-tools/resources_pl.json +13 -11
  103. package/dist/assets/t9n/map-select-tools/resources_pt-BR.json +13 -11
  104. package/dist/assets/t9n/map-select-tools/resources_pt-PT.json +13 -11
  105. package/dist/assets/t9n/map-select-tools/resources_ro.json +13 -11
  106. package/dist/assets/t9n/map-select-tools/resources_ru.json +13 -11
  107. package/dist/assets/t9n/map-select-tools/resources_sk.json +13 -11
  108. package/dist/assets/t9n/map-select-tools/resources_sl.json +13 -11
  109. package/dist/assets/t9n/map-select-tools/resources_sr.json +13 -11
  110. package/dist/assets/t9n/map-select-tools/resources_sv.json +13 -11
  111. package/dist/assets/t9n/map-select-tools/resources_th.json +13 -11
  112. package/dist/assets/t9n/map-select-tools/resources_tr.json +13 -11
  113. package/dist/assets/t9n/map-select-tools/resources_uk.json +13 -11
  114. package/dist/assets/t9n/map-select-tools/resources_vi.json +13 -11
  115. package/dist/assets/t9n/map-select-tools/resources_zh-CN.json +13 -11
  116. package/dist/assets/t9n/map-select-tools/resources_zh-HK.json +13 -11
  117. package/dist/assets/t9n/map-select-tools/resources_zh-TW.json +13 -11
  118. package/dist/assets/t9n/pdf-download/resources_ar.json +1 -1
  119. package/dist/assets/t9n/pdf-download/resources_bg.json +1 -1
  120. package/dist/assets/t9n/pdf-download/resources_bs.json +1 -1
  121. package/dist/assets/t9n/pdf-download/resources_ca.json +1 -1
  122. package/dist/assets/t9n/pdf-download/resources_cs.json +1 -1
  123. package/dist/assets/t9n/pdf-download/resources_da.json +1 -1
  124. package/dist/assets/t9n/pdf-download/resources_de.json +1 -1
  125. package/dist/assets/t9n/pdf-download/resources_el.json +1 -1
  126. package/dist/assets/t9n/pdf-download/resources_es.json +1 -1
  127. package/dist/assets/t9n/pdf-download/resources_et.json +1 -1
  128. package/dist/assets/t9n/pdf-download/resources_fi.json +1 -1
  129. package/dist/assets/t9n/pdf-download/resources_fr.json +1 -1
  130. package/dist/assets/t9n/pdf-download/resources_he.json +1 -1
  131. package/dist/assets/t9n/pdf-download/resources_hr.json +1 -1
  132. package/dist/assets/t9n/pdf-download/resources_hu.json +1 -1
  133. package/dist/assets/t9n/pdf-download/resources_id.json +1 -1
  134. package/dist/assets/t9n/pdf-download/resources_it.json +1 -1
  135. package/dist/assets/t9n/pdf-download/resources_ja.json +1 -1
  136. package/dist/assets/t9n/pdf-download/resources_ko.json +1 -1
  137. package/dist/assets/t9n/pdf-download/resources_lt.json +1 -1
  138. package/dist/assets/t9n/pdf-download/resources_lv.json +1 -1
  139. package/dist/assets/t9n/pdf-download/resources_nb.json +1 -1
  140. package/dist/assets/t9n/pdf-download/resources_nl.json +1 -1
  141. package/dist/assets/t9n/pdf-download/resources_pl.json +1 -1
  142. package/dist/assets/t9n/pdf-download/resources_pt-BR.json +1 -1
  143. package/dist/assets/t9n/pdf-download/resources_pt-PT.json +1 -1
  144. package/dist/assets/t9n/pdf-download/resources_ro.json +1 -1
  145. package/dist/assets/t9n/pdf-download/resources_ru.json +1 -1
  146. package/dist/assets/t9n/pdf-download/resources_sk.json +1 -1
  147. package/dist/assets/t9n/pdf-download/resources_sl.json +1 -1
  148. package/dist/assets/t9n/pdf-download/resources_sr.json +1 -1
  149. package/dist/assets/t9n/pdf-download/resources_sv.json +1 -1
  150. package/dist/assets/t9n/pdf-download/resources_th.json +1 -1
  151. package/dist/assets/t9n/pdf-download/resources_tr.json +1 -1
  152. package/dist/assets/t9n/pdf-download/resources_uk.json +1 -1
  153. package/dist/assets/t9n/pdf-download/resources_vi.json +1 -1
  154. package/dist/assets/t9n/pdf-download/resources_zh-CN.json +1 -1
  155. package/dist/assets/t9n/pdf-download/resources_zh-HK.json +1 -1
  156. package/dist/assets/t9n/pdf-download/resources_zh-TW.json +1 -1
  157. package/dist/assets/t9n/public-notification/resources.json +11 -9
  158. package/dist/assets/t9n/public-notification/resources_ar.json +40 -38
  159. package/dist/assets/t9n/public-notification/resources_bg.json +40 -38
  160. package/dist/assets/t9n/public-notification/resources_bs.json +40 -38
  161. package/dist/assets/t9n/public-notification/resources_ca.json +40 -38
  162. package/dist/assets/t9n/public-notification/resources_cs.json +40 -38
  163. package/dist/assets/t9n/public-notification/resources_da.json +40 -38
  164. package/dist/assets/t9n/public-notification/resources_de.json +40 -38
  165. package/dist/assets/t9n/public-notification/resources_el.json +40 -38
  166. package/dist/assets/t9n/public-notification/resources_en.json +11 -9
  167. package/dist/assets/t9n/public-notification/resources_es.json +40 -38
  168. package/dist/assets/t9n/public-notification/resources_et.json +40 -38
  169. package/dist/assets/t9n/public-notification/resources_fi.json +40 -38
  170. package/dist/assets/t9n/public-notification/resources_fr.json +40 -38
  171. package/dist/assets/t9n/public-notification/resources_he.json +40 -38
  172. package/dist/assets/t9n/public-notification/resources_hr.json +40 -38
  173. package/dist/assets/t9n/public-notification/resources_hu.json +40 -38
  174. package/dist/assets/t9n/public-notification/resources_id.json +40 -38
  175. package/dist/assets/t9n/public-notification/resources_it.json +40 -38
  176. package/dist/assets/t9n/public-notification/resources_ja.json +40 -38
  177. package/dist/assets/t9n/public-notification/resources_ko.json +40 -38
  178. package/dist/assets/t9n/public-notification/resources_lt.json +40 -38
  179. package/dist/assets/t9n/public-notification/resources_lv.json +40 -38
  180. package/dist/assets/t9n/public-notification/resources_nb.json +40 -38
  181. package/dist/assets/t9n/public-notification/resources_nl.json +40 -38
  182. package/dist/assets/t9n/public-notification/resources_pl.json +40 -38
  183. package/dist/assets/t9n/public-notification/resources_pt-BR.json +40 -38
  184. package/dist/assets/t9n/public-notification/resources_pt-PT.json +40 -38
  185. package/dist/assets/t9n/public-notification/resources_ro.json +40 -38
  186. package/dist/assets/t9n/public-notification/resources_ru.json +40 -38
  187. package/dist/assets/t9n/public-notification/resources_sk.json +40 -38
  188. package/dist/assets/t9n/public-notification/resources_sl.json +40 -38
  189. package/dist/assets/t9n/public-notification/resources_sr.json +40 -38
  190. package/dist/assets/t9n/public-notification/resources_sv.json +40 -38
  191. package/dist/assets/t9n/public-notification/resources_th.json +40 -38
  192. package/dist/assets/t9n/public-notification/resources_tr.json +40 -38
  193. package/dist/assets/t9n/public-notification/resources_uk.json +40 -38
  194. package/dist/assets/t9n/public-notification/resources_vi.json +40 -38
  195. package/dist/assets/t9n/public-notification/resources_zh-CN.json +40 -38
  196. package/dist/assets/t9n/public-notification/resources_zh-HK.json +40 -38
  197. package/dist/assets/t9n/public-notification/resources_zh-TW.json +40 -38
  198. package/dist/assets/t9n/refine-selection/resources.json +3 -1
  199. package/dist/assets/t9n/refine-selection/resources_en.json +3 -1
  200. package/dist/cjs/buffer-tools_4.cjs.entry.js +3 -3
  201. package/dist/cjs/calcite-input-text_5.cjs.entry.js +8 -13
  202. package/dist/cjs/{downloadUtils-8d66f03e.js → downloadUtils-7a0fd3c0.js} +77 -28
  203. package/dist/cjs/{index.es-4f5dfcc6.js → index.es-9965b78c.js} +1 -1
  204. package/dist/cjs/layer-table_2.cjs.entry.js +8 -3
  205. package/dist/cjs/loader.cjs.js +1 -1
  206. package/dist/cjs/public-notification.cjs.entry.js +56 -21
  207. package/dist/cjs/solutions-components.cjs.js +1 -1
  208. package/dist/collection/components/buffer-tools/buffer-tools.css +4 -0
  209. package/dist/collection/components/buffer-tools/buffer-tools.js +1 -1
  210. package/dist/collection/components/layer-table/layer-table.js +7 -2
  211. package/dist/collection/components/map-draw-tools/map-draw-tools.css +4 -0
  212. package/dist/collection/components/map-select-tools/map-select-tools.js +18 -1
  213. package/dist/collection/components/pdf-download/pdf-download.js +3 -9
  214. package/dist/collection/components/public-notification/public-notification.js +57 -21
  215. package/dist/collection/components/refine-selection/refine-selection.css +21 -0
  216. package/dist/collection/components/refine-selection/refine-selection.js +1 -1
  217. package/dist/collection/demos/new-public-notification.html +6 -4
  218. package/dist/collection/utils/downloadUtils.js +74 -27
  219. package/dist/collection/utils/downloadUtils.ts +93 -34
  220. package/dist/collection/utils/interfaces.ts +2 -2
  221. package/dist/components/buffer-tools2.js +2 -2
  222. package/dist/components/downloadUtils.js +75 -28
  223. package/dist/components/layer-table2.js +7 -2
  224. package/dist/components/map-draw-tools2.js +1 -1
  225. package/dist/components/map-select-tools2.js +3 -1
  226. package/dist/components/pdf-download2.js +3 -9
  227. package/dist/components/public-notification.js +57 -21
  228. package/dist/components/refine-selection2.js +36 -24
  229. package/dist/esm/buffer-tools_4.entry.js +3 -3
  230. package/dist/esm/calcite-combobox_3.entry.js +1 -1
  231. package/dist/esm/calcite-input-text_5.entry.js +9 -14
  232. package/dist/esm/{downloadUtils-b9785635.js → downloadUtils-a447bab1.js} +77 -30
  233. package/dist/esm/{index.es-70994c40.js → index.es-b9cb902a.js} +2 -2
  234. package/dist/esm/layer-table_2.entry.js +9 -4
  235. package/dist/esm/loader.js +1 -1
  236. package/dist/esm/{mapViewUtils-ebbd4733.js → mapViewUtils-27dfdc29.js} +1 -1
  237. package/dist/esm/public-notification.entry.js +57 -22
  238. package/dist/esm/solutions-components.js +1 -1
  239. package/dist/solutions-components/demos/new-public-notification.html +6 -4
  240. package/dist/solutions-components/p-2f4e1ddf.entry.js +6 -0
  241. package/dist/solutions-components/{p-be943993.js → p-345f517c.js} +5 -5
  242. package/dist/solutions-components/{p-390d7de8.js → p-4b426bab.js} +1 -1
  243. package/dist/solutions-components/{p-b4d4b50a.entry.js → p-52b747fa.entry.js} +3 -3
  244. package/dist/solutions-components/p-62492a2d.entry.js +17 -0
  245. package/dist/solutions-components/{p-5d5e10d4.js → p-80757ebd.js} +1 -1
  246. package/dist/solutions-components/p-cf00a2ef.entry.js +6 -0
  247. package/dist/solutions-components/{p-83e3db8e.entry.js → p-db099e05.entry.js} +1 -1
  248. package/dist/solutions-components/solutions-components.esm.js +1 -1
  249. package/dist/solutions-components/utils/downloadUtils.ts +93 -34
  250. package/dist/solutions-components/utils/interfaces.ts +2 -2
  251. package/dist/types/components/map-select-tools/map-select-tools.d.ts +5 -0
  252. package/dist/types/components/public-notification/public-notification.d.ts +18 -11
  253. package/dist/types/components.d.ts +8 -0
  254. package/dist/types/utils/downloadUtils.d.ts +22 -8
  255. package/dist/types/utils/interfaces.d.ts +2 -2
  256. package/package.json +1 -1
  257. package/dist/solutions-components/p-10336554.entry.js +0 -6
  258. package/dist/solutions-components/p-c3e3d0bb.entry.js +0 -17
  259. package/dist/solutions-components/p-f66a7ea7.entry.js +0 -6
  260. package/dist/solutions-components_commit.txt +0 -8
@@ -83,4 +83,25 @@ html[dir="rtl"] .main-label {
83
83
  padding: 0 7px;
84
84
  margin: 6px 0;
85
85
  border-right: 1px solid rgba(110,110,110,.3);
86
+ }
87
+
88
+ .display-flex {
89
+ display: flex;
90
+ }
91
+
92
+ .font-bold {
93
+ font-weight: bold;
94
+ }
95
+
96
+ .width-full {
97
+ width: 100%;
98
+ }
99
+
100
+ .label-margin-0 {
101
+ --calcite-label-margin-bottom: 0;
102
+ }
103
+
104
+ .padding-start-1-2 {
105
+ -webkit-padding-start: 0.5rem;
106
+ padding-inline-start: 0.5rem;
86
107
  }
@@ -77,7 +77,7 @@ export class RefineSelection {
77
77
  render() {
78
78
  var _a, _b;
79
79
  const layerPickerClass = this._enabledLayerIds.length > 1 ? "display-block" : "display-none";
80
- return (h(Host, null, h("div", { class: layerPickerClass + " padding-top-sides-1" }, h("map-layer-picker", { enabledLayerIds: this._enabledLayerIds, mapView: this.mapView, onLayerSelectionChange: (evt) => { void this._layerSelectionChange(evt); }, ref: (el) => { this._layerPicker = el; }, selectedLayerIds: [this._refineLayer.layer.id], selectionMode: "single" })), h("div", { class: "padding-1" }, h("div", { class: "padding-bottom-1" }, h("calcite-segmented-control", { class: "w-100" }, h("calcite-segmented-control-item", { checked: this._addEnabled, class: "w-50", onClick: () => this._setSelectionMode(ESelectionMode.ADD), value: ESelectionMode.ADD }, this._translations.add), h("calcite-segmented-control-item", { checked: !this._addEnabled, class: "w-50", onClick: () => this._setSelectionMode(ESelectionMode.REMOVE), value: ESelectionMode.REMOVE }, this._translations.remove))), h("div", null, h("map-draw-tools", { active: true, drawMode: EDrawMode.REFINE, mapView: this.mapView, onDrawRedo: () => this._redo(), onDrawUndo: () => this._undo(), onSketchGraphicsChange: (evt) => this._sketchGraphicsChanged(evt), pointSymbol: this.sketchPointSymbol, polygonSymbol: this.sketchPolygonSymbol, polylineSymbol: this.sketchLineSymbol, redoEnabled: ((_a = this._refineSelectionSet) === null || _a === void 0 ? void 0 : _a.redoStack.length) > 0, ref: (el) => { this._drawTools = el; }, undoEnabled: ((_b = this._refineSelectionSet) === null || _b === void 0 ? void 0 : _b.undoStack.length) > 0 })), h("br", null), (h("calcite-list", { class: "list-border" }, this._getRefineSelectionSetList())))));
80
+ return (h(Host, null, h("div", { class: layerPickerClass + " padding-top-sides-1" }, h("div", { class: "display-flex" }, h("calcite-label", { class: "font-bold width-full label-margin-0" }, h("div", { class: "display-flex" }, this._translations.inputLayer, h("calcite-icon", { class: "padding-start-1-2 icon", icon: "question", id: "refine-input-layer", scale: "s" })), h("map-layer-picker", { enabledLayerIds: this._enabledLayerIds, mapView: this.mapView, onLayerSelectionChange: (evt) => { void this._layerSelectionChange(evt); }, ref: (el) => { this._layerPicker = el; }, selectedLayerIds: [this._refineLayer.layer.id], selectionMode: "single" })), h("calcite-popover", { closable: true, label: "", referenceElement: "refine-input-layer" }, h("span", { class: "tooltip-message" }, this._translations.inputLayerTip)))), h("div", { class: "padding-1" }, h("div", { class: "padding-bottom-1" }, h("calcite-segmented-control", { class: "w-100" }, h("calcite-segmented-control-item", { checked: this._addEnabled, class: "w-50", onClick: () => this._setSelectionMode(ESelectionMode.ADD), value: ESelectionMode.ADD }, this._translations.add), h("calcite-segmented-control-item", { checked: !this._addEnabled, class: "w-50", onClick: () => this._setSelectionMode(ESelectionMode.REMOVE), value: ESelectionMode.REMOVE }, this._translations.remove))), h("div", null, h("map-draw-tools", { active: true, drawMode: EDrawMode.REFINE, mapView: this.mapView, onDrawRedo: () => this._redo(), onDrawUndo: () => this._undo(), onSketchGraphicsChange: (evt) => this._sketchGraphicsChanged(evt), pointSymbol: this.sketchPointSymbol, polygonSymbol: this.sketchPolygonSymbol, polylineSymbol: this.sketchLineSymbol, redoEnabled: ((_a = this._refineSelectionSet) === null || _a === void 0 ? void 0 : _a.redoStack.length) > 0, ref: (el) => { this._drawTools = el; }, undoEnabled: ((_b = this._refineSelectionSet) === null || _b === void 0 ? void 0 : _b.undoStack.length) > 0 })), h("br", null), (h("calcite-list", { class: "list-border" }, this._getRefineSelectionSetList())))));
81
81
  }
82
82
  //--------------------------------------------------------------------------
83
83
  //
@@ -55,12 +55,12 @@
55
55
 
56
56
  <link
57
57
  rel="stylesheet"
58
- href="https://js.arcgis.com/4.25/esri/themes/light/main.css"
58
+ href="https://js.arcgis.com/4.26/esri/themes/light/main.css"
59
59
  />
60
60
  <link rel="stylesheet" href="https://webapps-cdn.esri.com/CDN/fonts/v1.4.1/fonts.css" />
61
61
  <link rel="stylesheet" href="../solutions-components.css" type="text/css">
62
62
 
63
- <script src="https://js.arcgis.com/4.25/"></script>
63
+ <script src="https://js.arcgis.com/4.26/"></script>
64
64
  <script type="module" src="../solutions-components.esm.js"></script>
65
65
 
66
66
  <script>
@@ -90,7 +90,8 @@
90
90
  });
91
91
  demo.mapView.ui.add(legend, "top-left");
92
92
  });
93
- //demo.addresseeLayerIds = ["18434515eb8-layer-12"];
93
+ // solutions layer id
94
+ //demo.addresseeLayerIds = ["TaxParcels_3419"];
94
95
  //demo.defaultBufferDistance = 100;
95
96
  //demo.defaultBufferUnit = "kilometers";
96
97
  demo.featureEffect = {
@@ -99,7 +100,8 @@
99
100
  };
100
101
  demo.featureHighlightEnabled = true;
101
102
  demo.noResultText = "No results found";
102
- //demo.selectionLayerIds = ["1843422bf6b-layer-7"];
103
+ // solutions layer id
104
+ //demo.selectionLayerIds = ["SiteAddresses_8878"];
103
105
  demo.showSearchSettings = true;
104
106
  demo.customLabelEnabled = true;
105
107
  // demo.bufferColor = [227, 0, 0, 0.8];
@@ -30,39 +30,52 @@ const lineSeparatorChar = "|";
30
30
  /**
31
31
  * Downloads csv of mailing labels for the provided list of ids
32
32
  *
33
- * @param selectionSetNames Names of the selection sets used to provide ids
34
- * @param layer Layer providing features and attributes for download
35
- * @param ids List of ids to download
33
+ * @param exportInfos Key details about what to export (ids, layer, and selectionSetNames)
36
34
  * @param formatUsingLayerPopup When true, the layer's popup is used to choose attributes for each column; when false,
37
35
  * all attributes are exported
38
36
  * @param removeDuplicates When true a single label is generated when multiple featues have a shared address value
39
37
  * @param addColumnTitle Indicates if column headings should be included in output
40
38
  * @returns Promise resolving when function is done
41
39
  */
42
- export async function downloadCSV(selectionSetNames, layer, ids, formatUsingLayerPopup, removeDuplicates = false, addColumnTitle = false) {
43
- const labels = await _prepareLabels(layer, ids, removeDuplicates, formatUsingLayerPopup, addColumnTitle);
44
- exportCSV(_createFilename(selectionSetNames), labels);
40
+ export async function downloadCSV(exportInfos, formatUsingLayerPopup, removeDuplicates = false, addColumnTitle = false) {
41
+ let labels = await consolidateLabels(exportInfos, formatUsingLayerPopup, addColumnTitle, true);
42
+ labels = removeDuplicates ? removeDuplicateLabels(labels) : labels;
43
+ const layerIds = Object.keys(exportInfos);
44
+ let layerLabels = [];
45
+ labels.forEach(label => {
46
+ const id = label[0];
47
+ // layerIds are stored as value separator at the end of the values for a given layer
48
+ if (layerIds.indexOf(id) < 0) {
49
+ layerLabels.push(label);
50
+ }
51
+ else {
52
+ const selectionSetNames = _getSelectionSetNames(exportInfos, new RegExp(`\\b${id}\\b`));
53
+ // once we see the layerId we have reached the end of it's values and should export
54
+ exportCSV(_createFilename(selectionSetNames), layerLabels);
55
+ layerLabels = [];
56
+ }
57
+ });
45
58
  return Promise.resolve();
46
59
  }
47
60
  /**
48
61
  * Downloads csv of mailing labels for the provided list of ids
49
62
  *
50
- * @param selectionSetNames Names of the selection sets used to provide ids
51
- * @param layer Layer providing features and attributes for download
52
- * @param ids List of ids to download
63
+ * @param exportInfos Key details about what to export (ids, layer, and selectionSetNames)
53
64
  * @param labelPageDescription Provides PDF page layout info
54
65
  * @param removeDuplicates When true a single label is generated when multiple featues have a shared address value
55
66
  * @param title Title for each page
56
67
  * @param initialImageDataUrl Data URL of image for first page
57
68
  * @returns Promise resolving when function is done
58
69
  */
59
- export async function downloadPDF(selectionSetNames, layer, ids, labelPageDescription, removeDuplicates = false, title = "", initialImageDataUrl = "") {
60
- let labels = await _prepareLabels(layer, ids, removeDuplicates);
70
+ export async function downloadPDF(exportInfos, labelPageDescription, removeDuplicates = false, title = "", initialImageDataUrl = "") {
71
+ let labels = await consolidateLabels(exportInfos);
72
+ const selectionSetNames = _getSelectionSetNames(exportInfos);
61
73
  labels =
62
74
  // Remove empty lines in labels
63
75
  labels.map(labelLines => labelLines.filter(line => line.length > 0))
64
76
  // Remove empty labels
65
77
  .filter(label => label.length > 0);
78
+ labels = removeDuplicates ? removeDuplicateLabels(labels) : labels;
66
79
  exportPDF(_createFilename(selectionSetNames), labels, labelPageDescription, title, initialImageDataUrl);
67
80
  return Promise.resolve();
68
81
  }
@@ -281,13 +294,12 @@ function _prepareAttributeValue(attributeValue, attributeType, attributeDomain,
281
294
  *
282
295
  * @param layer Layer from which to fetch features
283
296
  * @param ids List of ids to download
284
- * @param removeDuplicates When true a single label is generated when multiple featues have a shared address value
285
297
  * @param formatUsingLayerPopup When true, the layer's popup is used to choose attributes for each column; when false,
286
298
  * all attributes are exported
287
299
  * @param includeHeaderNames Add the label format at the front of the list of generated labels
288
300
  * @returns Promise resolving when function is done
289
301
  */
290
- async function _prepareLabels(layer, ids, removeDuplicates = true, formatUsingLayerPopup = true, includeHeaderNames = false) {
302
+ async function _prepareLabels(layer, ids, formatUsingLayerPopup = true, includeHeaderNames = false) {
291
303
  var _a, _b, _c, _d, _e, _f;
292
304
  const [intl] = await loadModules(["esri/intl"]);
293
305
  // Get the features to export
@@ -341,7 +353,6 @@ async function _prepareLabels(layer, ids, removeDuplicates = true, formatUsingLa
341
353
  let labels;
342
354
  // eslint-disable-next-line unicorn/prefer-ternary
343
355
  if (labelFormat) {
344
- console.log("labelFormat", labelFormat); //???
345
356
  const arcadeExpressionRegExp = /\{expression\/\w+\}/g;
346
357
  const attributeRegExp = /\{\w+\}/g;
347
358
  // Find the label fields that we need to replace with values
@@ -369,28 +380,21 @@ async function _prepareLabels(layer, ids, removeDuplicates = true, formatUsingLa
369
380
  });
370
381
  // Wait for all of the queries for related records for this label
371
382
  const relatedFeatureQueryResults = await Promise.all(relatedFeatureQueries);
372
- console.log("relatedFeatureQueryResults", relatedFeatureQueryResults); //???
373
383
  relatedFeatureQueryResults.forEach((relatedFeatureQueryResult, i) => {
374
384
  // We have an object with FeatureSets grouped by source layer or table objectIds
375
385
  const relationshipId = relationshipIds[i];
376
- console.log("relationshipId", relationshipId); //???
377
- console.log("relatedFeatureQueryResult", relatedFeatureQueryResult); //???
378
386
  // Run through the source layer or table objectIds
379
387
  Object.keys(relatedFeatureQueryResult).forEach(relatedFeatureSetId => {
380
- console.log("relatedFeatureSetId", relatedFeatureSetId); //???
381
388
  // We have a feature set
382
389
  const relatedFeatures = relatedFeatureQueryResult[relatedFeatureSetId].features;
383
- console.log("relatedFeatures", relatedFeatures); //???
384
390
  // Get the values from each feature and replace them in the label
385
391
  relatedFeatures.forEach(feature => {
386
392
  // Merge the base and related feature attributes and create the label
387
393
  // Prefix related feature's attributes with "relationships/<id>/" to match popup
388
394
  const rePrefix = "\{relationships/" + relationshipId + "/";
389
395
  const reSuffix = "\}";
390
- console.log("/rePrefix + attributeName + reSuffix/g", rePrefix + "attributeName" + reSuffix); //???
391
396
  const attributes = feature.attributes;
392
397
  Object.keys(attributes).forEach(attributeName => {
393
- console.log("/rePrefix + attributeName + reSuffix/g", rePrefix + attributeName + reSuffix); //???
394
398
  // Replace the value using the attribute name as a relationship
395
399
  const attributeRelationshipRegExp = new RegExp(rePrefix + attributeName + reSuffix, "g");
396
400
  labelPrep = labelPrep.replaceAll(attributeRelationshipRegExp, attributes[attributeName]);
@@ -420,12 +424,6 @@ async function _prepareLabels(layer, ids, removeDuplicates = true, formatUsingLa
420
424
  });
421
425
  });
422
426
  }
423
- // Remove duplicates
424
- if (removeDuplicates) {
425
- const labelsAsStrings = labels.map(label => JSON.stringify(label));
426
- const uniqueLabels = new Set(labelsAsStrings);
427
- labels = Array.from(uniqueLabels, labelString => JSON.parse(labelString));
428
- }
429
427
  // Add header names
430
428
  if (includeHeaderNames) {
431
429
  let headerNames = [];
@@ -442,4 +440,53 @@ async function _prepareLabels(layer, ids, removeDuplicates = true, formatUsingLa
442
440
  }
443
441
  return Promise.resolve(labels);
444
442
  }
443
+ /**
444
+ * Remove any duplicate labels
445
+ *
446
+ * @param labels Labels to evaluate for duplicates
447
+ * @returns labels with duplicates removed
448
+ */
449
+ export function removeDuplicateLabels(labels) {
450
+ const labelsAsStrings = labels.map(label => JSON.stringify(label));
451
+ const uniqueLabels = new Set(labelsAsStrings);
452
+ return Array.from(uniqueLabels, labelString => JSON.parse(labelString));
453
+ }
454
+ /**
455
+ * Extract selectionSetNames from the provided exportInfos
456
+ *
457
+ * @param exportInfos Key details about what to export (ids, layer, and selectionSetNames)
458
+ * @returns selectionSetNames that will be used for export filenames
459
+ */
460
+ function _getSelectionSetNames(exportInfos, id = /.+/) {
461
+ let selectionSetNames = [];
462
+ Object.keys(exportInfos).forEach(k => {
463
+ const exportInfo = exportInfos[k];
464
+ if (id.test(k)) {
465
+ selectionSetNames = selectionSetNames.concat(exportInfo.selectionSetNames);
466
+ }
467
+ });
468
+ return selectionSetNames;
469
+ }
470
+ /**
471
+ * Create and consolidate labels from all layers
472
+ *
473
+ * @param exportInfos Key details about what to export (ids, layer, and selectionSetNames)
474
+ * @param formatUsingLayerPopup When true, the layer's popup is used to choose attributes for each column; when false,
475
+ * all attributes are exported
476
+ * @param includeHeaderNames Add the label format at the front of the list of generated labels
477
+ * @returns selectionSetNames that will be used for export filenames
478
+ */
479
+ export async function consolidateLabels(exportInfos, formatUsingLayerPopup = true, includeHeaderNames = false, isCSVExport = false) {
480
+ const labelRequests = [];
481
+ Object.keys(exportInfos).forEach(k => {
482
+ const labelInfo = exportInfos[k];
483
+ labelRequests.push(_prepareLabels(labelInfo.layerView.layer, labelInfo.ids, formatUsingLayerPopup, includeHeaderNames));
484
+ if (isCSVExport) {
485
+ // add the layer id as a temp value separator that we can use to split values for CSV export
486
+ labelRequests.push(Promise.resolve([[k]]));
487
+ }
488
+ });
489
+ const labels = await Promise.all(labelRequests);
490
+ return labels.reduce((prev, cur) => prev.concat(cur), []);
491
+ }
445
492
  //#endregion
@@ -20,6 +20,7 @@ import { exportCSV } from "./csvUtils";
20
20
  import { ILabel, exportPDF } from "./pdfUtils";
21
21
  import { loadModules } from "./loadModules";
22
22
  import { queryFeaturesByID } from "./queryUtils";
23
+ import { IExportInfo, IExportInfos } from "../utils/interfaces";
23
24
 
24
25
  export { ILabel } from "./pdfUtils";
25
26
 
@@ -70,9 +71,7 @@ const lineSeparatorChar = "|";
70
71
  /**
71
72
  * Downloads csv of mailing labels for the provided list of ids
72
73
  *
73
- * @param selectionSetNames Names of the selection sets used to provide ids
74
- * @param layer Layer providing features and attributes for download
75
- * @param ids List of ids to download
74
+ * @param exportInfos Key details about what to export (ids, layer, and selectionSetNames)
76
75
  * @param formatUsingLayerPopup When true, the layer's popup is used to choose attributes for each column; when false,
77
76
  * all attributes are exported
78
77
  * @param removeDuplicates When true a single label is generated when multiple featues have a shared address value
@@ -80,16 +79,30 @@ const lineSeparatorChar = "|";
80
79
  * @returns Promise resolving when function is done
81
80
  */
82
81
  export async function downloadCSV(
83
- selectionSetNames: string[],
84
- layer: __esri.FeatureLayer,
85
- ids: number[],
82
+ exportInfos: IExportInfos,
86
83
  formatUsingLayerPopup: boolean,
87
84
  removeDuplicates = false,
88
85
  addColumnTitle = false
89
86
  ): Promise<void> {
90
- const labels = await _prepareLabels(layer, ids, removeDuplicates, formatUsingLayerPopup, addColumnTitle);
87
+ let labels = await consolidateLabels(exportInfos, formatUsingLayerPopup, addColumnTitle, true);
88
+ labels = removeDuplicates ? removeDuplicateLabels(labels) : labels;
89
+
90
+ const layerIds = Object.keys(exportInfos);
91
+
92
+ let layerLabels = [];
93
+ labels.forEach(label => {
94
+ const id = label[0];
95
+ // layerIds are stored as value separator at the end of the values for a given layer
96
+ if (layerIds.indexOf(id) < 0) {
97
+ layerLabels.push(label);
98
+ } else {
99
+ const selectionSetNames = _getSelectionSetNames(exportInfos, new RegExp(`\\b${id}\\b`));
91
100
 
92
- exportCSV(_createFilename(selectionSetNames), labels);
101
+ // once we see the layerId we have reached the end of it's values and should export
102
+ exportCSV(_createFilename(selectionSetNames), layerLabels);
103
+ layerLabels = [];
104
+ }
105
+ });
93
106
 
94
107
  return Promise.resolve();
95
108
  }
@@ -97,9 +110,7 @@ export async function downloadCSV(
97
110
  /**
98
111
  * Downloads csv of mailing labels for the provided list of ids
99
112
  *
100
- * @param selectionSetNames Names of the selection sets used to provide ids
101
- * @param layer Layer providing features and attributes for download
102
- * @param ids List of ids to download
113
+ * @param exportInfos Key details about what to export (ids, layer, and selectionSetNames)
103
114
  * @param labelPageDescription Provides PDF page layout info
104
115
  * @param removeDuplicates When true a single label is generated when multiple featues have a shared address value
105
116
  * @param title Title for each page
@@ -107,15 +118,14 @@ export async function downloadCSV(
107
118
  * @returns Promise resolving when function is done
108
119
  */
109
120
  export async function downloadPDF(
110
- selectionSetNames: string[],
111
- layer: __esri.FeatureLayer,
112
- ids: number[],
121
+ exportInfos: IExportInfos,
113
122
  labelPageDescription: ILabel,
114
123
  removeDuplicates = false,
115
124
  title = "",
116
125
  initialImageDataUrl = ""
117
126
  ): Promise<void> {
118
- let labels = await _prepareLabels(layer, ids, removeDuplicates);
127
+ let labels = await consolidateLabels(exportInfos);
128
+ const selectionSetNames = _getSelectionSetNames(exportInfos);
119
129
 
120
130
  labels =
121
131
  // Remove empty lines in labels
@@ -123,6 +133,8 @@ export async function downloadPDF(
123
133
  // Remove empty labels
124
134
  .filter(label => label.length > 0);
125
135
 
136
+ labels = removeDuplicates ? removeDuplicateLabels(labels) : labels;
137
+
126
138
  exportPDF(_createFilename(selectionSetNames), labels, labelPageDescription, title, initialImageDataUrl);
127
139
 
128
140
  return Promise.resolve();
@@ -395,7 +407,6 @@ function _prepareAttributeValue(
395
407
  *
396
408
  * @param layer Layer from which to fetch features
397
409
  * @param ids List of ids to download
398
- * @param removeDuplicates When true a single label is generated when multiple featues have a shared address value
399
410
  * @param formatUsingLayerPopup When true, the layer's popup is used to choose attributes for each column; when false,
400
411
  * all attributes are exported
401
412
  * @param includeHeaderNames Add the label format at the front of the list of generated labels
@@ -404,7 +415,6 @@ function _prepareAttributeValue(
404
415
  async function _prepareLabels(
405
416
  layer: __esri.FeatureLayer,
406
417
  ids: number[],
407
- removeDuplicates = true,
408
418
  formatUsingLayerPopup = true,
409
419
  includeHeaderNames = false
410
420
  ): Promise<string[][]> {
@@ -471,7 +481,6 @@ async function _prepareLabels(
471
481
  let labels: string[][];
472
482
  // eslint-disable-next-line unicorn/prefer-ternary
473
483
  if (labelFormat) {
474
- console.log("labelFormat", labelFormat);//???
475
484
  const arcadeExpressionRegExp = /\{expression\/\w+\}/g;
476
485
  const attributeRegExp = /\{\w+\}/g;
477
486
 
@@ -512,21 +521,16 @@ async function _prepareLabels(
512
521
 
513
522
  // Wait for all of the queries for related records for this label
514
523
  const relatedFeatureQueryResults = await Promise.all(relatedFeatureQueries);
515
- console.log("relatedFeatureQueryResults", relatedFeatureQueryResults);//???
516
524
  relatedFeatureQueryResults.forEach(
517
525
  (relatedFeatureQueryResult, i) => {
518
526
  // We have an object with FeatureSets grouped by source layer or table objectIds
519
527
  const relationshipId = relationshipIds[i];
520
- console.log("relationshipId", relationshipId);//???
521
- console.log("relatedFeatureQueryResult", relatedFeatureQueryResult);//???
522
528
 
523
529
  // Run through the source layer or table objectIds
524
530
  Object.keys(relatedFeatureQueryResult).forEach(
525
531
  relatedFeatureSetId => {
526
- console.log("relatedFeatureSetId", relatedFeatureSetId);//???
527
532
  // We have a feature set
528
533
  const relatedFeatures = relatedFeatureQueryResult[relatedFeatureSetId].features;
529
- console.log("relatedFeatures", relatedFeatures);//???
530
534
 
531
535
  // Get the values from each feature and replace them in the label
532
536
  relatedFeatures.forEach(
@@ -535,12 +539,10 @@ async function _prepareLabels(
535
539
  // Prefix related feature's attributes with "relationships/<id>/" to match popup
536
540
  const rePrefix = "\{relationships/" + relationshipId + "/";
537
541
  const reSuffix = "\}";
538
- console.log("/rePrefix + attributeName + reSuffix/g", rePrefix + "attributeName" + reSuffix);//???
539
542
 
540
543
  const attributes = feature.attributes;
541
544
  Object.keys(attributes).forEach(
542
545
  attributeName => {
543
- console.log("/rePrefix + attributeName + reSuffix/g", rePrefix + attributeName + reSuffix);//???
544
546
  // Replace the value using the attribute name as a relationship
545
547
  const attributeRelationshipRegExp = new RegExp(rePrefix + attributeName + reSuffix, "g");
546
548
  labelPrep = labelPrep.replaceAll(attributeRelationshipRegExp, attributes[attributeName]);
@@ -592,15 +594,6 @@ async function _prepareLabels(
592
594
  );
593
595
  }
594
596
 
595
- // Remove duplicates
596
- if (removeDuplicates) {
597
- const labelsAsStrings: string[] = labels.map(label => JSON.stringify(label));
598
- const uniqueLabels = new Set(labelsAsStrings);
599
- labels = Array.from(uniqueLabels,
600
- labelString => JSON.parse(labelString)
601
- );
602
- }
603
-
604
597
  // Add header names
605
598
  if (includeHeaderNames) {
606
599
  let headerNames = [];
@@ -621,4 +614,70 @@ async function _prepareLabels(
621
614
  return Promise.resolve(labels);
622
615
  }
623
616
 
617
+ /**
618
+ * Remove any duplicate labels
619
+ *
620
+ * @param labels Labels to evaluate for duplicates
621
+ * @returns labels with duplicates removed
622
+ */
623
+ export function removeDuplicateLabels(
624
+ labels: string[][]
625
+ ): string[][] {
626
+ const labelsAsStrings: string[] = labels.map(label => JSON.stringify(label));
627
+ const uniqueLabels = new Set(labelsAsStrings);
628
+ return Array.from(uniqueLabels,
629
+ labelString => JSON.parse(labelString)
630
+ );
631
+ }
632
+
633
+ /**
634
+ * Extract selectionSetNames from the provided exportInfos
635
+ *
636
+ * @param exportInfos Key details about what to export (ids, layer, and selectionSetNames)
637
+ * @returns selectionSetNames that will be used for export filenames
638
+ */
639
+ function _getSelectionSetNames(
640
+ exportInfos: IExportInfos,
641
+ id = /.+/
642
+ ): string[] {
643
+ let selectionSetNames: string[] = [];
644
+ Object.keys(exportInfos).forEach(k => {
645
+ const exportInfo: IExportInfo = exportInfos[k];
646
+ if (id.test(k)) {
647
+ selectionSetNames = selectionSetNames.concat(exportInfo.selectionSetNames);
648
+ }
649
+ });
650
+ return selectionSetNames;
651
+ }
652
+
653
+ /**
654
+ * Create and consolidate labels from all layers
655
+ *
656
+ * @param exportInfos Key details about what to export (ids, layer, and selectionSetNames)
657
+ * @param formatUsingLayerPopup When true, the layer's popup is used to choose attributes for each column; when false,
658
+ * all attributes are exported
659
+ * @param includeHeaderNames Add the label format at the front of the list of generated labels
660
+ * @returns selectionSetNames that will be used for export filenames
661
+ */
662
+ export async function consolidateLabels(
663
+ exportInfos: IExportInfos,
664
+ formatUsingLayerPopup = true,
665
+ includeHeaderNames = false,
666
+ isCSVExport = false
667
+ ): Promise<string[][]> {
668
+ const labelRequests = [];
669
+
670
+ Object.keys(exportInfos).forEach(k => {
671
+ const labelInfo: IExportInfo = exportInfos[k];
672
+ labelRequests.push(_prepareLabels(labelInfo.layerView.layer, labelInfo.ids, formatUsingLayerPopup, includeHeaderNames));
673
+ if (isCSVExport) {
674
+ // add the layer id as a temp value separator that we can use to split values for CSV export
675
+ labelRequests.push(Promise.resolve([[k]]));
676
+ }
677
+ });
678
+
679
+ const labels = await Promise.all(labelRequests);
680
+ return labels.reduce((prev, cur) => prev.concat(cur), []);
681
+ }
682
+
624
683
  //#endregion
@@ -437,10 +437,10 @@ export interface IMapInfo {
437
437
  }
438
438
 
439
439
  export interface IExportInfos {
440
- [key: string]: IExportLayerInfo;
440
+ [key: string]: IExportInfo;
441
441
  }
442
442
 
443
- export interface IExportLayerInfo {
443
+ export interface IExportInfo {
444
444
  ids: number[],
445
445
  layerView: __esri.FeatureLayerView
446
446
  selectionSetNames: string[]
@@ -14,7 +14,7 @@ import { d as defineCustomElement$3 } from './progress.js';
14
14
  import { d as defineCustomElement$2 } from './select.js';
15
15
  import { d as defineCustomElement$1 } from './slider.js';
16
16
 
17
- const bufferToolsCss = ":host{display:block}.c-container{display:inline-flex}.flex-1{flex:\"1\"}.padding-end-1{-webkit-padding-end:1rem;padding-inline-end:1rem}";
17
+ const bufferToolsCss = ":host{display:block}.c-container{display:inline-flex}.flex-1{flex:\"1\"}.padding-end-1{-webkit-padding-end:1rem;padding-inline-end:1rem}.w-50{width:50%}";
18
18
 
19
19
  const BufferTools = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
20
20
  constructor() {
@@ -175,7 +175,7 @@ const BufferTools = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
175
175
  * @protected
176
176
  */
177
177
  _getTextBoxDisplay() {
178
- return (h("div", { class: "c-container" }, h("calcite-input", { class: "padding-end-1", max: this.max && this.max > 0 ? this.max : undefined, min: this.min, "number-button-type": "vertical", onCalciteInputInput: (evt) => this._setDistance(evt), placeholder: "0", type: "number", value: this.distance ? this.distance.toString() : undefined }), h("calcite-select", { class: "flex-1", label: "label", onCalciteSelectChange: () => this._setUnit(this._unitElement.value), ref: (el) => { this._unitElement = el; } }, this._getUnits())));
178
+ return (h("div", { class: "c-container" }, h("calcite-input", { class: "padding-end-1 w-50", max: this.max && this.max > 0 ? this.max : undefined, min: this.min, "number-button-type": "vertical", onCalciteInputInput: (evt) => this._setDistance(evt), placeholder: "0", type: "number", value: this.distance ? this.distance.toString() : undefined }), h("calcite-select", { class: "flex-1 w-50", label: "label", onCalciteSelectChange: () => this._setUnit(this._unitElement.value), ref: (el) => { this._unitElement = el; } }, this._getUnits())));
179
179
  }
180
180
  /**
181
181
  * Render distance control as a slider