@esri/solutions-components 0.5.3 → 0.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/dist/cjs/calcite-input-text_5.cjs.entry.js +36 -36
  2. package/dist/cjs/calcite-shell-panel_14.cjs.entry.js +1 -1
  3. package/dist/cjs/solution-configuration.cjs.entry.js +1 -1
  4. package/dist/cjs/solution-contents_3.cjs.entry.js +1 -1
  5. package/dist/cjs/{solution-store-70002b57.js → solution-store-ca4639d5.js} +3 -3
  6. package/dist/collection/components/add-record-modal/test/add-record-modal.e2e.js +24 -0
  7. package/dist/collection/components/add-record-modal/test/add-record-modal.spec.js +32 -0
  8. package/dist/collection/components/buffer-tools/test/buffer-tools.e2e.js +24 -0
  9. package/dist/collection/components/buffer-tools/test/buffer-tools.spec.js +157 -0
  10. package/dist/collection/components/card-manager/test/card-manager.e2e.js +24 -0
  11. package/dist/collection/components/card-manager/test/card-manager.spec.js +32 -0
  12. package/dist/collection/components/comment-card/test/comment-card.e2e.js +24 -0
  13. package/dist/collection/components/comment-card/test/comment-card.spec.js +32 -0
  14. package/dist/collection/components/crowdsource-manager/test/crowdsource-manager.e2e.js +24 -0
  15. package/dist/collection/components/crowdsource-manager/test/crowdsource-manager.spec.js +32 -0
  16. package/dist/collection/components/crowdsource-reporter/test/crowdsource-reporter.e2e.js +24 -0
  17. package/dist/collection/components/crowdsource-reporter/test/crowdsource-reporter.spec.js +32 -0
  18. package/dist/collection/components/deduct-calculator/test/deduct-calculator.e2e.js +24 -0
  19. package/dist/collection/components/deduct-calculator/test/deduct-calculator.spec.js +32 -0
  20. package/dist/collection/components/edit-record-modal/test/edit-record-modal.e2e.js +24 -0
  21. package/dist/collection/components/edit-record-modal/test/edit-record-modal.spec.js +32 -0
  22. package/dist/collection/components/info-card/test/info-card.e2e.js +24 -0
  23. package/dist/collection/components/info-card/test/info-card.spec.js +32 -0
  24. package/dist/collection/components/json-editor/test/json-editor.e2e.js +31 -0
  25. package/dist/collection/components/json-editor/test/json-editor.spec.js +60 -0
  26. package/dist/collection/components/layer-table/test/layer-table.e2e.js +24 -0
  27. package/dist/collection/components/layer-table/test/layer-table.spec.js +32 -0
  28. package/dist/collection/components/list-item/test/list-item.e2e.js +24 -0
  29. package/dist/collection/components/list-item/test/list-item.spec.js +32 -0
  30. package/dist/collection/components/map-card/test/map-card.e2e.js +24 -0
  31. package/dist/collection/components/map-card/test/map-card.spec.js +32 -0
  32. package/dist/collection/components/map-draw-tools/test/map-draw-tools.e2e.js +24 -0
  33. package/dist/collection/components/map-draw-tools/test/map-draw-tools.spec.js +32 -0
  34. package/dist/collection/components/map-layer-picker/test/map-layer-picker.e2e.js +24 -0
  35. package/dist/collection/components/map-layer-picker/test/map-layer-picker.spec.js +109 -0
  36. package/dist/collection/components/map-search/test/map-search.e2e.js +24 -0
  37. package/dist/collection/components/map-search/test/map-search.spec.js +53 -0
  38. package/dist/collection/components/map-select-tools/map-select-tools.js +36 -36
  39. package/dist/collection/components/map-select-tools/test/map-select-tools.e2e.js +24 -0
  40. package/dist/collection/components/map-select-tools/test/map-select-tools.spec.js +349 -0
  41. package/dist/collection/components/media-card/test/media-card.e2e.js +24 -0
  42. package/dist/collection/components/media-card/test/media-card.spec.js +32 -0
  43. package/dist/collection/components/pci-calculator/test/pci-calculator.e2e.js +24 -0
  44. package/dist/collection/components/pci-calculator/test/pci-calculator.spec.js +32 -0
  45. package/dist/collection/components/pdf-download/test/pdf-download.e2e.js +71 -0
  46. package/dist/collection/components/pdf-download/test/pdf-download.spec.js +104 -0
  47. package/dist/collection/components/public-notification/test/public-notification.e2e.js +95 -0
  48. package/dist/collection/components/public-notification/test/public-notification.spec.js +149 -0
  49. package/dist/collection/components/refine-selection/refine-selection.css +85 -85
  50. package/dist/collection/components/solution-configuration/test/solution-configuration.e2e.js +31 -0
  51. package/dist/collection/components/solution-configuration/test/solution-configuration.spec.js +114 -0
  52. package/dist/collection/components/solution-contents/test/solution-contents.e2e.js +89 -0
  53. package/dist/collection/components/solution-contents/test/solution-contents.spec.js +138 -0
  54. package/dist/collection/components/solution-item/test/solution-item.e2e.js +31 -0
  55. package/dist/collection/components/solution-item/test/solution-item.spec.js +72 -0
  56. package/dist/collection/components/solution-item-details/test/solution-item-details.e2e.js +31 -0
  57. package/dist/collection/components/solution-item-details/test/solution-item-details.spec.js +137 -0
  58. package/dist/collection/components/solution-item-icon/test/solution-item-icon.e2e.js +24 -0
  59. package/dist/collection/components/solution-item-icon/test/solution-item-icon.spec.js +34 -0
  60. package/dist/collection/components/solution-item-sharing/test/solution-item-sharing.e2e.js +31 -0
  61. package/dist/collection/components/solution-item-sharing/test/solution-item-sharing.spec.js +49 -0
  62. package/dist/collection/components/solution-organization-variables/test/solution-organization-variables.e2e.js +31 -0
  63. package/dist/collection/components/solution-organization-variables/test/solution-organization-variables.spec.js +60 -0
  64. package/dist/collection/components/solution-resource-item/test/solution-resource-item.e2e.js +31 -0
  65. package/dist/collection/components/solution-resource-item/test/solution-resource-item.spec.js +50 -0
  66. package/dist/collection/components/solution-spatial-ref/test/solution-spatial-ref.e2e.js +31 -0
  67. package/dist/collection/components/solution-spatial-ref/test/solution-spatial-ref.spec.js +170 -0
  68. package/dist/collection/components/solution-template-data/test/solution-template-data.e2e.js +31 -0
  69. package/dist/collection/components/solution-template-data/test/solution-template-data.spec.js +55 -0
  70. package/dist/collection/components/solution-variables/test/solution-variables.e2e.js +31 -0
  71. package/dist/collection/components/solution-variables/test/solution-variables.spec.js +126 -0
  72. package/dist/collection/utils/publicNotificationUtils.js +45 -0
  73. package/dist/collection/utils/templates.e2e.js +25 -0
  74. package/dist/collection/utils/test/csvUtils.spec.js +46 -0
  75. package/dist/collection/utils/test/downloadUtils.spec.js +102 -0
  76. package/dist/collection/utils/test/pciUtils.spec.js +297 -0
  77. package/dist/collection/utils/test/solution-store.spec.js +439 -0
  78. package/dist/components/map-select-tools2.js +36 -36
  79. package/dist/components/solution-store.js +3 -3
  80. package/dist/esm/calcite-input-text_5.entry.js +36 -36
  81. package/dist/esm/calcite-shell-panel_14.entry.js +1 -1
  82. package/dist/esm/solution-configuration.entry.js +1 -1
  83. package/dist/esm/solution-contents_3.entry.js +1 -1
  84. package/dist/esm/{solution-store-5d068b07.js → solution-store-70f874f8.js} +3 -3
  85. package/dist/solutions-components/{p-41802f6b.entry.js → p-16dfb254.entry.js} +1 -1
  86. package/dist/solutions-components/{p-4769a2a5.entry.js → p-5ed755a2.entry.js} +1 -1
  87. package/dist/solutions-components/{p-826a814d.js → p-78719506.js} +2 -2
  88. package/dist/solutions-components/{p-9f620303.entry.js → p-b4b19fd3.entry.js} +1 -1
  89. package/dist/solutions-components/{p-24fe6e1c.entry.js → p-d5d5942d.entry.js} +1 -1
  90. package/dist/solutions-components/solutions-components.esm.js +1 -1
  91. package/dist/solutions-components/utils/common.js +291 -0
  92. package/dist/solutions-components/utils/csvDownload.js +36 -0
  93. package/dist/solutions-components/utils/csvUtils.js +32 -0
  94. package/dist/solutions-components/utils/downloadUtils.js +386 -0
  95. package/dist/solutions-components/utils/interfaces.js +56 -0
  96. package/dist/solutions-components/utils/languageUtil.js +85 -0
  97. package/dist/solutions-components/utils/loadModules.js +20 -0
  98. package/dist/solutions-components/utils/locale.js +56 -0
  99. package/dist/solutions-components/utils/mapViewUtils.js +140 -0
  100. package/dist/solutions-components/utils/pciUtils.js +837 -0
  101. package/dist/solutions-components/utils/pdfUtils.js +62 -0
  102. package/dist/solutions-components/utils/publicNotificationStore.js +38 -0
  103. package/dist/solutions-components/utils/publicNotificationUtils.js +45 -0
  104. package/dist/solutions-components/utils/queryUtils.js +148 -0
  105. package/dist/solutions-components/utils/solution-store.js +579 -0
  106. package/dist/solutions-components/utils/templates.e2e.js +25 -0
  107. package/dist/solutions-components/utils/templates.js +341 -0
  108. package/dist/solutions-components/utils/test/csvUtils.spec.js +46 -0
  109. package/dist/solutions-components/utils/test/downloadUtils.spec.js +102 -0
  110. package/dist/solutions-components/utils/test/mocks/jsApi.js +74 -0
  111. package/dist/solutions-components/utils/test/pciUtils.spec.js +297 -0
  112. package/dist/solutions-components/utils/test/solution-store.spec.js +439 -0
  113. package/dist/solutions-components/utils/test/testUtils.js +135 -0
  114. package/dist/solutions-components/utils/types.js +14 -0
  115. package/dist/solutions-components_commit.txt +7 -0
  116. package/package.json +7 -7
@@ -0,0 +1,53 @@
1
+ /** @license
2
+ * Copyright 2022 Esri
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { h } from '@stencil/core';
17
+ import { newSpecPage } from '@stencil/core/testing';
18
+ import { MapSearch } from '../map-search';
19
+ import * as locale from "../../../utils/locale";
20
+ import * as translations from "../../../assets/t9n/map-search/resources.json";
21
+ jest.setTimeout(30000);
22
+ afterEach(() => {
23
+ jest.restoreAllMocks();
24
+ });
25
+ let mapView;
26
+ beforeEach(() => {
27
+ jest.spyOn(locale, "getLocaleComponentStrings").mockImplementation(() => [
28
+ translations
29
+ ]);
30
+ mapView = {
31
+ map: {
32
+ layers: {
33
+ add: () => { },
34
+ getItemAt: () => { return -1; },
35
+ findIndex: () => { return -1; }
36
+ }
37
+ }
38
+ };
39
+ });
40
+ describe('map-search', () => {
41
+ xit('renders', async () => {
42
+ const page = await newSpecPage({
43
+ components: [MapSearch],
44
+ template: () => (h("map-search", { mapView: mapView })),
45
+ });
46
+ expect(page.root).toEqualHtml(`
47
+ <map-search>
48
+ <div class="search-widget"></div>
49
+ </map-search>
50
+ `);
51
+ await page.root.clear();
52
+ });
53
+ });
@@ -421,34 +421,37 @@ export class MapSelectTools {
421
421
  */
422
422
  async _sketchGraphicsChanged(event, forceUpdate = false) {
423
423
  const graphics = event.detail.graphics;
424
- if (!forceUpdate) {
425
- this._sketchGraphic = graphics[0];
426
- }
427
- this._workflowType = this._useLayerFeaturesEnabled ? EWorkflowType.SELECT : EWorkflowType.SKETCH;
428
- if (this._workflowType === EWorkflowType.SKETCH) {
429
- this._drawTools.updateGraphics();
430
- }
431
- this._updateLabel();
432
- this._clearSearchWidget();
433
- if (this._useLayerFeaturesEnabled && !forceUpdate) {
434
- const geometries = Array.isArray(graphics) && graphics.length > 0 && graphics[0] ? graphics.map(g => g.geometry) : this.geometries;
435
- await this._selectLayerFeatures(geometries[0]);
436
- }
437
- else {
438
- const oids = graphics.reduce((prev, cur) => {
439
- var _a;
440
- if ((_a = cur === null || cur === void 0 ? void 0 : cur.layer) === null || _a === void 0 ? void 0 : _a.objectIdField) {
441
- prev.push(cur.attributes[cur.layer.objectIdField]);
442
- }
443
- else if (cur.getObjectId) {
444
- prev.push(cur.getObjectId());
424
+ if (graphics.length > 0 && graphics[0]) {
425
+ if (!forceUpdate) {
426
+ this._sketchGraphic = graphics[0];
427
+ }
428
+ this._workflowType = this._useLayerFeaturesEnabled ? EWorkflowType.SELECT : EWorkflowType.SKETCH;
429
+ if (this._workflowType === EWorkflowType.SKETCH) {
430
+ this._drawTools.updateGraphics();
431
+ }
432
+ this._updateLabel();
433
+ this._clearSearchWidget();
434
+ if (this._useLayerFeaturesEnabled && !forceUpdate) {
435
+ // Will only ever be a single graphic
436
+ const geometries = Array.isArray(graphics) ? graphics.map(g => g.geometry) : this.geometries;
437
+ await this._selectLayerFeatures(geometries[0]);
438
+ }
439
+ else {
440
+ const oids = graphics.reduce((prev, cur) => {
441
+ var _a;
442
+ if ((_a = cur === null || cur === void 0 ? void 0 : cur.layer) === null || _a === void 0 ? void 0 : _a.objectIdField) {
443
+ prev.push(cur.attributes[cur.layer.objectIdField]);
444
+ }
445
+ else if (cur.getObjectId) {
446
+ prev.push(cur.getObjectId());
447
+ }
448
+ return prev;
449
+ }, []);
450
+ const useOIDs = event.detail.useOIDs && oids.length > 0;
451
+ this._updateSelection(graphics, useOIDs, oids);
452
+ if (useOIDs) {
453
+ await this._highlightFeatures(oids);
445
454
  }
446
- return prev;
447
- }, []);
448
- const useOIDs = event.detail.useOIDs && oids.length > 0;
449
- this._updateSelection(graphics, useOIDs, oids);
450
- if (useOIDs) {
451
- await this._highlightFeatures(oids);
452
455
  }
453
456
  }
454
457
  }
@@ -570,7 +573,6 @@ export class MapSelectTools {
570
573
  this._selectedIds = [];
571
574
  this._distance = undefined;
572
575
  this._unit = undefined;
573
- this._sketchGraphic = undefined;
574
576
  if (clearLabel) {
575
577
  this._selectionLabel = "";
576
578
  this._labelName.value = "";
@@ -737,14 +739,12 @@ export class MapSelectTools {
737
739
  */
738
740
  _useLayerFeaturesEnabledChanged() {
739
741
  this._useLayerFeaturesEnabled = !this._useLayerFeaturesEnabled;
740
- if (this._sketchGraphic) {
741
- void this._sketchGraphicsChanged({
742
- detail: {
743
- graphics: [this._sketchGraphic],
744
- useOIDs: false
745
- }
746
- });
747
- }
742
+ void this._sketchGraphicsChanged({
743
+ detail: {
744
+ graphics: [this._sketchGraphic],
745
+ useOIDs: false
746
+ }
747
+ });
748
748
  }
749
749
  /**
750
750
  * Fetches the component's translations
@@ -0,0 +1,24 @@
1
+ /** @license
2
+ * Copyright 2022 Esri
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { newE2EPage } from '@stencil/core/testing';
17
+ xdescribe('map-select-tools', () => {
18
+ it('renders', async () => {
19
+ const page = await newE2EPage();
20
+ await page.setContent('<map-select-tools></map-select-tools>');
21
+ const element = await page.find('map-select-tools');
22
+ expect(element).toHaveClass('hydrated');
23
+ });
24
+ });
@@ -0,0 +1,349 @@
1
+ /** @license
2
+ * Copyright 2022 Esri
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { h } from '@stencil/core';
17
+ import { newSpecPage } from '@stencil/core/testing';
18
+ import { MapSelectTools } from '../map-select-tools';
19
+ import * as locale from "../../../utils/locale";
20
+ import * as translations from "../../../assets/t9n/map-select-tools/resources.json";
21
+ import { LayerView } from "../../../utils/test/mocks/jsApi";
22
+ import * as mapViewUtils from "../../../utils/mapViewUtils";
23
+ import * as queryUtils from "../../../utils/queryUtils";
24
+ import { EWorkflowType } from '../../../utils/interfaces';
25
+ jest.setTimeout(30000);
26
+ afterEach(() => {
27
+ jest.restoreAllMocks();
28
+ });
29
+ let mapView;
30
+ let _unknown;
31
+ beforeEach(() => {
32
+ jest.spyOn(locale, "getLocaleComponentStrings").mockImplementation(() => [
33
+ translations
34
+ ]);
35
+ jest.spyOn(mapViewUtils, "highlightFeatures").mockImplementation(async () => {
36
+ return { remove: () => { } };
37
+ });
38
+ jest.spyOn(mapViewUtils, "goToSelection").mockImplementation(async () => { });
39
+ jest.spyOn(queryUtils, "getQueryGeoms").mockImplementation((geoms) => {
40
+ return geoms;
41
+ });
42
+ jest.spyOn(queryUtils, "queryObjectIds").mockImplementation(async (oids) => {
43
+ return oids.map((oid, i) => i);
44
+ });
45
+ jest.spyOn(console, 'warn').mockImplementation(() => { });
46
+ mapView = {
47
+ map: {
48
+ layers: {
49
+ add: () => { },
50
+ getItemAt: () => { return -1; },
51
+ findIndex: () => { return -1; }
52
+ }
53
+ }
54
+ };
55
+ _unknown = {};
56
+ });
57
+ xdescribe('map-select-tools', () => {
58
+ it('renders', async () => {
59
+ const page = await newSpecPage({
60
+ components: [MapSelectTools],
61
+ template: () => (h("map-select-tools", { mapView: mapView })),
62
+ });
63
+ expect(page.root).toEqualHtml(`
64
+ <map-select-tools>
65
+ <div class="padding-bottom-1">
66
+ <calcite-radio-group class="w-100">
67
+ <calcite-radio-group-item checked="" class="end-border w-50" value="SEARCH">
68
+ Search
69
+ </calcite-radio-group-item>
70
+ <calcite-radio-group-item class="w-50" value="SKETCH">
71
+ Sketch
72
+ </calcite-radio-group-item>
73
+ </calcite-radio-group>
74
+ </div>
75
+ <div class="div-visible-search">
76
+ <div class="search-widget"></div>
77
+ </div>
78
+ <div class="div-not-visible">
79
+ <calcite-label layout="inline">
80
+ <calcite-checkbox></calcite-checkbox>
81
+ Use layer features
82
+ </calcite-label>
83
+ </div>
84
+ <div class="div-not-visible">
85
+ <map-draw-tools active="" border=""></map-draw-tools>
86
+ </div>
87
+ <div class="div-not-visible">
88
+ <refine-selection-tools active="" border="" mode="ADD" refinemode="SUBSET"></refine-selection-tools>
89
+ </div>
90
+ <calcite-label class="search-distance">
91
+ Search Distance
92
+ <buffer-tools></buffer-tools>
93
+ </calcite-label>
94
+ </map-select-tools>
95
+ `);
96
+ const actual = await page.root.getSelection();
97
+ expect(actual.workflowType).toEqual(EWorkflowType.SEARCH);
98
+ expect(actual.selectedIds.length).toEqual(0);
99
+ });
100
+ it('fires selectionSetChange event when geometries are cleared', async () => {
101
+ const page = await newSpecPage({
102
+ components: [MapSelectTools],
103
+ template: () => (h("map-select-tools", { geometries: [_unknown], mapView: mapView })),
104
+ });
105
+ expect(page.root.geometries.length).toEqual(1);
106
+ page.doc.addEventListener("selectionSetChange", (evt) => {
107
+ expect(evt.detail).toEqual(0);
108
+ });
109
+ page.root.geometries = [];
110
+ });
111
+ it('fires selectionSetChange event when geometries are changed', async () => {
112
+ const page = await newSpecPage({
113
+ components: [MapSelectTools],
114
+ template: () => (h("map-select-tools", { geometries: [_unknown], mapView: mapView, selectLayerView: new LayerView() })),
115
+ });
116
+ expect(page.root.geometries.length).toEqual(1);
117
+ let selectionSetChange = (evt) => {
118
+ expect(evt.detail).toEqual(2);
119
+ };
120
+ page.doc.addEventListener("selectionSetChange", selectionSetChange);
121
+ page.root.geometries = [...page.root.geometries, _unknown];
122
+ });
123
+ it('clears geometries on clearSelection', async () => {
124
+ const page = await newSpecPage({
125
+ components: [MapSelectTools],
126
+ template: () => (h("map-select-tools", { geometries: [_unknown], mapView: mapView, selectLayerView: new LayerView() })),
127
+ });
128
+ expect(page.root.geometries.length).toEqual(1);
129
+ let selectionSetChange = (evt) => {
130
+ expect(evt.detail).toEqual(0);
131
+ };
132
+ page.doc.addEventListener("selectionSetChange", selectionSetChange);
133
+ page.root.clearSelection();
134
+ });
135
+ it('can reload existing SELECT selectionSet', async () => {
136
+ const layerView = new LayerView();
137
+ const selectionSet = {
138
+ id: 12345,
139
+ workflowType: EWorkflowType.SELECT,
140
+ searchResult: undefined,
141
+ buffer: _unknown,
142
+ distance: 100,
143
+ download: true,
144
+ unit: "feet",
145
+ label: "selection-label",
146
+ selectedIds: [0],
147
+ layerView,
148
+ geometries: [_unknown],
149
+ refineSelectLayers: [],
150
+ refineIds: undefined
151
+ };
152
+ const page = await newSpecPage({
153
+ components: [MapSelectTools],
154
+ template: () => (h("map-select-tools", { selectLayerView: layerView, selectionSet: selectionSet, mapView: mapView })),
155
+ });
156
+ page.doc.addEventListener("workflowTypeChange", (evt) => {
157
+ expect(evt.detail).toEqual(EWorkflowType.SELECT);
158
+ });
159
+ expect(page.root).toEqualHtml(`
160
+ <map-select-tools>
161
+ <div class="padding-bottom-1">
162
+ <calcite-radio-group class="w-100">
163
+ <calcite-radio-group-item class="end-border w-50" value="SEARCH">
164
+ Search
165
+ </calcite-radio-group-item>
166
+ <calcite-radio-group-item checked="" class="w-50" value="SKETCH">
167
+ Sketch
168
+ </calcite-radio-group-item>
169
+ </calcite-radio-group>
170
+ </div>
171
+ <div class="div-not-visible">
172
+ <div class="search-widget"></div>
173
+ </div>
174
+ <div class="div-visible">
175
+ <calcite-label layout="inline">
176
+ <calcite-checkbox></calcite-checkbox>
177
+ Use layer features
178
+ </calcite-label>
179
+ </div>
180
+ <div class="div-visible">
181
+ <map-draw-tools active="" border=""></map-draw-tools>
182
+ </div>
183
+ <div class="div-not-visible">
184
+ <refine-selection-tools active="" border="" mode="ADD" refinemode="SUBSET"></refine-selection-tools>
185
+ </div>
186
+ <calcite-label class="search-distance">
187
+ Search Distance
188
+ <buffer-tools distance="100" unit="feet"></buffer-tools>
189
+ </calcite-label>
190
+ </map-select-tools>
191
+ `);
192
+ const actual = await page.root.getSelection();
193
+ expect(actual.label.startsWith("Layer")).toEqual(true);
194
+ });
195
+ it('can reload existing SKETCH selectionSet', async () => {
196
+ const layerView = new LayerView();
197
+ const selectionSet = {
198
+ id: 12345,
199
+ workflowType: EWorkflowType.SKETCH,
200
+ searchResult: undefined,
201
+ buffer: _unknown,
202
+ distance: 100,
203
+ download: true,
204
+ unit: "feet",
205
+ label: "selection-label",
206
+ selectedIds: [0],
207
+ layerView,
208
+ geometries: [_unknown],
209
+ refineSelectLayers: [],
210
+ refineIds: undefined
211
+ };
212
+ const page = await newSpecPage({
213
+ components: [MapSelectTools],
214
+ template: () => (h("map-select-tools", { selectLayerView: layerView, selectionSet: selectionSet, mapView: mapView })),
215
+ });
216
+ page.doc.addEventListener("workflowTypeChange", (evt) => {
217
+ expect(evt.detail).toEqual(EWorkflowType.SKETCH);
218
+ });
219
+ expect(page.root).toEqualHtml(`
220
+ <map-select-tools>
221
+ <div class="padding-bottom-1">
222
+ <calcite-radio-group class="w-100">
223
+ <calcite-radio-group-item class="end-border w-50" value="SEARCH">
224
+ Search
225
+ </calcite-radio-group-item>
226
+ <calcite-radio-group-item checked="" class="w-50" value="SKETCH">
227
+ Sketch
228
+ </calcite-radio-group-item>
229
+ </calcite-radio-group>
230
+ </div>
231
+ <div class="div-not-visible">
232
+ <div class="search-widget"></div>
233
+ </div>
234
+ <div class="div-visible">
235
+ <calcite-label layout="inline">
236
+ <calcite-checkbox></calcite-checkbox>
237
+ Use layer features
238
+ </calcite-label>
239
+ </div>
240
+ <div class="div-visible">
241
+ <map-draw-tools active="" border=""></map-draw-tools>
242
+ </div>
243
+ <div class="div-not-visible">
244
+ <refine-selection-tools active="" border="" mode="ADD" refinemode="SUBSET"></refine-selection-tools>
245
+ </div>
246
+ <calcite-label class="search-distance">
247
+ Search Distance
248
+ <buffer-tools distance="100" unit="feet"></buffer-tools>
249
+ </calcite-label>
250
+ </map-select-tools>
251
+ `);
252
+ const actual = await page.root.getSelection();
253
+ expect(actual.label.startsWith("Sketch")).toEqual(true);
254
+ });
255
+ it('can reload existing SEARCH selectionSet', async () => {
256
+ const layerView = new LayerView();
257
+ const selectionSet = {
258
+ id: 12345,
259
+ workflowType: EWorkflowType.SEARCH,
260
+ searchResult: undefined,
261
+ buffer: _unknown,
262
+ distance: 100,
263
+ download: true,
264
+ unit: "feet",
265
+ label: "selection-label",
266
+ selectedIds: [0, 1],
267
+ layerView,
268
+ geometries: [_unknown, _unknown],
269
+ refineSelectLayers: [],
270
+ refineIds: undefined
271
+ };
272
+ const page = await newSpecPage({
273
+ components: [MapSelectTools],
274
+ template: () => (h("map-select-tools", { isUpdate: true, selectLayerView: layerView, selectionSet: selectionSet, mapView: mapView })),
275
+ });
276
+ page.doc.addEventListener("workflowTypeChange", (evt) => {
277
+ expect(evt.detail).toEqual(EWorkflowType.SEARCH);
278
+ });
279
+ expect(page.root).toEqualHtml(`
280
+ <map-select-tools>
281
+ <div class="padding-bottom-1">
282
+ <calcite-radio-group class="w-100">
283
+ <calcite-radio-group-item checked="" class="end-border w-50" value="SEARCH">
284
+ Search
285
+ </calcite-radio-group-item>
286
+ <calcite-radio-group-item class="w-50" value="SKETCH">
287
+ Sketch
288
+ </calcite-radio-group-item>
289
+ </calcite-radio-group>
290
+ </div>
291
+ <div class="div-visible-search">
292
+ <div class="search-widget"></div>
293
+ </div>
294
+ <div class="div-not-visible">
295
+ <calcite-label layout="inline">
296
+ <calcite-checkbox></calcite-checkbox>
297
+ Use layer features
298
+ </calcite-label>
299
+ </div>
300
+ <div class="div-not-visible">
301
+ <map-draw-tools active="" border=""></map-draw-tools>
302
+ </div>
303
+ <div class="div-not-visible">
304
+ <refine-selection-tools active="" border="" mode="ADD" refinemode="SUBSET"></refine-selection-tools>
305
+ </div>
306
+ <calcite-label class="search-distance">
307
+ Search Distance
308
+ <buffer-tools distance="100" unit="feet"></buffer-tools>
309
+ </calcite-label>
310
+ </map-select-tools>
311
+ `);
312
+ const actual = await page.root.getSelection();
313
+ expect(actual.id).toEqual(selectionSet.id);
314
+ });
315
+ it('handles sketchGraphicsChange', async () => {
316
+ const page = await newSpecPage({
317
+ components: [MapSelectTools],
318
+ template: () => (h("map-select-tools", { geometries: [_unknown], mapView: mapView, selectLayerView: new LayerView() })),
319
+ });
320
+ expect(page.root.geometries.length).toEqual(1);
321
+ page.win.dispatchEvent(new CustomEvent("sketchGraphicsChange", { detail: [] }));
322
+ expect(page.root.geometries.length).toEqual(0);
323
+ _unknown = { geometry: {} };
324
+ page.win.dispatchEvent(new CustomEvent("sketchGraphicsChange", { detail: [_unknown, _unknown] }));
325
+ expect(page.root.geometries.length).toEqual(2);
326
+ page.win.dispatchEvent(new CustomEvent("sketchGraphicsChange", { detail: undefined }));
327
+ expect(page.root.geometries.length).toEqual(2);
328
+ });
329
+ it('handles sketchGraphicsChange', async () => {
330
+ const page = await newSpecPage({
331
+ components: [MapSelectTools],
332
+ template: () => (h("map-select-tools", { geometries: [], mapView: mapView, selectLayerView: new LayerView() })),
333
+ });
334
+ page.win.dispatchEvent(new CustomEvent("layerSelectionGraphicsChange", { detail: undefined }));
335
+ expect(page.root.geometries.length).toEqual(0);
336
+ page.doc.addEventListener("selectionSetChange", (evt) => {
337
+ expect(evt.detail).toEqual(1);
338
+ });
339
+ _unknown = {
340
+ attributes: { "OID": 1 },
341
+ layer: {
342
+ objectIdField: "OID"
343
+ },
344
+ geometry: {}
345
+ };
346
+ page.win.dispatchEvent(new CustomEvent("layerSelectionGraphicsChange", { detail: [_unknown] }));
347
+ expect(page.root.geometries.length).toEqual(1);
348
+ });
349
+ });
@@ -0,0 +1,24 @@
1
+ /** @license
2
+ * Copyright 2022 Esri
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { newE2EPage } from '@stencil/core/testing';
17
+ xdescribe('media-card', () => {
18
+ it('renders', async () => {
19
+ const page = await newE2EPage();
20
+ await page.setContent('<media-card></media-card>');
21
+ const element = await page.find('media-card');
22
+ expect(element).toHaveClass('hydrated');
23
+ });
24
+ });
@@ -0,0 +1,32 @@
1
+ /** @license
2
+ * Copyright 2022 Esri
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { newSpecPage } from '@stencil/core/testing';
17
+ import { MediaCard } from '../media-card';
18
+ xdescribe('media-card', () => {
19
+ it('renders', async () => {
20
+ const page = await newSpecPage({
21
+ components: [MediaCard],
22
+ html: `<media-card></media-card>`,
23
+ });
24
+ expect(page.root).toEqualHtml(`
25
+ <media-card>
26
+ <mock:shadow-root>
27
+ <slot></slot>
28
+ </mock:shadow-root>
29
+ </media-card>
30
+ `);
31
+ });
32
+ });
@@ -0,0 +1,24 @@
1
+ /** @license
2
+ * Copyright 2022 Esri
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { newE2EPage } from '@stencil/core/testing';
17
+ xdescribe('pci-calculator', () => {
18
+ it('renders', async () => {
19
+ const page = await newE2EPage();
20
+ await page.setContent('<pci-calculator></pci-calculator>');
21
+ const element = await page.find('pci-calculator');
22
+ expect(element).toHaveClass('hydrated');
23
+ });
24
+ });
@@ -0,0 +1,32 @@
1
+ /** @license
2
+ * Copyright 2022 Esri
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { newSpecPage } from '@stencil/core/testing';
17
+ import { PciCalculator } from '../pci-calculator';
18
+ xdescribe('pci-calculator', () => {
19
+ it('renders', async () => {
20
+ const page = await newSpecPage({
21
+ components: [PciCalculator],
22
+ html: `<pci-calculator></pci-calculator>`,
23
+ });
24
+ expect(page.root).toEqualHtml(`
25
+ <pci-calculator>
26
+ <mock:shadow-root>
27
+ <slot></slot>
28
+ </mock:shadow-root>
29
+ </pci-calculator>
30
+ `);
31
+ });
32
+ });