@arcgis/portal-components 5.0.0-next.0 → 5.0.0-next.10

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 (41) hide show
  1. package/dist/cdn/{E6A6P5DT.js → 3VP2B6OD.js} +2 -2
  2. package/dist/cdn/{HP6FLO6G.js → 4N33S4WC.js} +1 -1
  3. package/dist/cdn/{O6FBVWEQ.js → 5XGFUGUT.js} +2 -2
  4. package/dist/cdn/A6OLJNDD.js +4 -0
  5. package/dist/cdn/{XVHSY45D.js → FKYPILGF.js} +1 -1
  6. package/dist/cdn/{YHT2PRHK.js → FLGVYIE6.js} +2 -2
  7. package/dist/cdn/{N5WPRKA2.js → OEIPZP5I.js} +1 -1
  8. package/dist/cdn/{MFXEQDSV.js → OVKCN6QU.js} +2 -2
  9. package/dist/cdn/PFW623F3.js +4 -0
  10. package/dist/cdn/{HII3K2AH.js → TSXPF6YV.js} +2 -2
  11. package/dist/cdn/{IPBJFU7J.js → TZBG4COV.js} +2 -2
  12. package/dist/cdn/XP24YJ2U.js +4 -0
  13. package/dist/cdn/index.js +2 -2
  14. package/dist/chunks/common.js +1 -1
  15. package/dist/chunks/fieldAddDelete.js +139 -148
  16. package/dist/chunks/loadClassificationData.js +1 -1
  17. package/dist/chunks/requests.js +1 -1
  18. package/dist/chunks/runtime.js +1 -1
  19. package/dist/chunks/useT9n.js +1 -1
  20. package/dist/components/arcgis-portal-classification-banner/customElement.js +1 -1
  21. package/dist/components/arcgis-portal-classification-config/customElement.d.ts +1 -1
  22. package/dist/components/arcgis-portal-classification-config/customElement.js +113 -103
  23. package/dist/components/arcgis-portal-classification-favorite/customElement.js +5 -2
  24. package/dist/components/arcgis-portal-classification-form-element/customElement.d.ts +2 -1
  25. package/dist/components/arcgis-portal-classification-form-element/customElement.js +18 -18
  26. package/dist/components/arcgis-portal-field-delete/customElement.js +62 -57
  27. package/dist/controllers/useClassificationModel.d.ts +1 -1
  28. package/dist/docs/api.json +19 -3
  29. package/dist/docs/docs.json +27 -5
  30. package/dist/docs/web-types.json +7 -3
  31. package/dist/index.js +1 -1
  32. package/dist/loader.js +2 -2
  33. package/dist/types/lumina.d.ts +1 -1
  34. package/dist/types/preact.d.ts +1 -1
  35. package/dist/types/preact10.d.ts +1 -1
  36. package/dist/types/react.d.ts +1 -1
  37. package/dist/types/stencil.d.ts +1 -1
  38. package/package.json +5 -5
  39. package/dist/cdn/2BGNA5B6.js +0 -4
  40. package/dist/cdn/3JA4XVXG.js +0 -4
  41. package/dist/cdn/SMUWQIWD.js +0 -4
@@ -1,17 +1,18 @@
1
- import { c as C } from "../../chunks/runtime.js";
1
+ import { c as k } from "../../chunks/runtime.js";
2
2
  import { html as p, css as P } from "lit";
3
3
  import { LitElement as M, createEvent as F, renderElement as T } from "@arcgis/lumina";
4
4
  import { createRef as E, ref as N } from "lit/directives/ref.js";
5
5
  import { Task as O } from "@lit/task";
6
- import x from "@arcgis/core/layers/support/FeatureTemplate.js";
7
- import L from "@arcgis/core/Graphic.js";
8
- import S from "@arcgis/core/identity/IdentityManager.js";
6
+ import * as x from "@arcgis/core/core/lang.js";
7
+ import L from "@arcgis/core/layers/support/FeatureTemplate.js";
8
+ import S from "@arcgis/core/Graphic.js";
9
+ import j from "@arcgis/core/identity/IdentityManager.js";
9
10
  import y from "@arcgis/core/request.js";
10
- import { a as j, g as B, b as U, d as q, e as w, f as R, i as D } from "../../chunks/fieldAddDelete.js";
11
- import { u as J } from "../../chunks/useT9n.js";
11
+ import { a as B, g as U, b as q, d as R, e as w, f as J, i as D } from "../../chunks/fieldAddDelete.js";
12
+ import { u as z } from "../../chunks/useT9n.js";
12
13
  /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
13
14
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
14
- v5.0.0-next.0 */
15
+ v5.0.0-next.10 */
15
16
  const n = /* @__PURE__ */ new Map();
16
17
  n.set("oid", "key");
17
18
  n.set("guid", "key");
@@ -29,10 +30,10 @@ n.set("date-only", "calendar");
29
30
  n.set("time-only", "clock");
30
31
  n.set("timestamp-offset", "time-zone");
31
32
  n.set("string", "string");
32
- const z = ({ fieldType: $ }) => p`<calcite-icon scale=s .icon=${n.get($)}></calcite-icon>`, W = P`.dialog{--calcite-dialog-max-size-y: 60%}.dialog-content-wrapper{position:relative;min-height:100px}.hide-overflow{overflow:hidden}.field-icons{padding:0 var(--calcite-spacing-lg);display:flex;align-items:center}.warning{border-bottom:var(--calcite-border-width-sm) solid var(--calcite-color-border-3);margin-bottom:var(--calcite-spacing-md)}.warning-message{font-size:var(--calcite-font-size--1);font-weight:var(--calcite-font-weight-bold)}.loader-container{position:absolute;height:100%;width:100%;top:0;right:0;display:none;z-index:40;overflow:hidden;background:#fffffff2;padding:0}.active{display:flex;flex-direction:column;align-items:center;justify-content:center}.loader{padding:0}.loader-text{font-weight:var(--calcite-font-weight-medium);text-align:center;margin-right:6.25rem;margin-left:6.25rem}`;
33
- class _ extends M {
33
+ const W = ({ fieldType: $ }) => p`<calcite-icon scale=s .icon=${n.get($)}></calcite-icon>`, _ = P`.dialog{--calcite-dialog-max-size-y: 60%}.dialog-content-wrapper{position:relative;min-height:100px}.hide-overflow{overflow:hidden}.field-icons{padding:0 var(--calcite-spacing-lg);display:flex;align-items:center}.warning{border-bottom:var(--calcite-border-width-sm) solid var(--calcite-color-border-3);margin-bottom:var(--calcite-spacing-md)}.warning-message{font-size:var(--calcite-font-size--1);font-weight:var(--calcite-font-weight-bold)}.loader-container{position:absolute;height:100%;width:100%;top:0;right:0;display:none;z-index:40;overflow:hidden;background:#fffffff2;padding:0}.active{display:flex;flex-direction:column;align-items:center;justify-content:center}.loader{padding:0}.loader-text{font-weight:var(--calcite-font-weight-medium);text-align:center;margin-right:6.25rem;margin-left:6.25rem}`;
34
+ class V extends M {
34
35
  constructor() {
35
- super(...arguments), this.arcadeExpMap = /* @__PURE__ */ new Map(), this.cancelNode = E(), this.dialogNode = E(), this.layerFields = [], this.layerFieldsMap = /* @__PURE__ */ new Map(), this.messages = J({ blocking: !0 }), this._propWatcherTask = new O(this, {
36
+ super(...arguments), this.arcadeExpMap = /* @__PURE__ */ new Map(), this.cancelNode = E(), this.dialogNode = E(), this.layerFields = [], this.layerFieldsMap = /* @__PURE__ */ new Map(), this.messages = z({ blocking: !0 }), this._propWatcherTask = new O(this, {
36
37
  task: async ([e, t]) => {
37
38
  if (!(D(e) && D(t)))
38
39
  throw console.error("Required properties are missing."), new Error();
@@ -45,7 +46,7 @@ class _ extends M {
45
46
  this.properties = { currentLayerInfo: 16, deleteInProgress: 16, fieldsAreDeletable: 16, config: 0, fieldNames: 0, layer: 0, mapView: 0, options: 0 };
46
47
  }
47
48
  static {
48
- this.styles = W;
49
+ this.styles = _;
49
50
  }
50
51
  async processProps() {
51
52
  const { layer: e, mapView: t, fieldNames: s } = this;
@@ -54,27 +55,27 @@ class _ extends M {
54
55
  return;
55
56
  }
56
57
  e.loaded || await e.load(), this.layerFields = e.fields.filter((o) => s.includes(o.name));
57
- const a = s.some((o) => !e.fields.find((l) => l.name === o));
58
+ const a = s.some((o) => !e.fields.find((r) => r.name === o));
58
59
  if (!this.layerFields?.length || a)
59
60
  this.fieldsAreDeletable = !1;
60
61
  else {
61
- const o = await Promise.all(this.layerFields.map(async (l) => await j(t, e, l, this.options)));
62
- if (this.fieldsAreDeletable = o.every((l) => l), !this.fieldsAreDeletable)
62
+ const o = await Promise.all(this.layerFields.map(async (r) => await B(t, e, r, this.options)));
63
+ if (this.fieldsAreDeletable = o.every((r) => r), !this.fieldsAreDeletable)
63
64
  return;
64
65
  }
65
- if (this.layerFieldsMap = await B(e), this.options?.ignorePopupTemplate || (this.arcadeExpMap = U(e.popupTemplate)), this.portal = e.portalItem?.portal ?? this.options?.portal, this.item = e.portalItem ?? this.options?.item, !this.item) {
66
+ if (this.layerFieldsMap = await U(e), this.options?.ignorePopupTemplate || (this.arcadeExpMap = q(e.popupTemplate)), this.portal = e.portalItem?.portal ?? this.options?.portal, this.item = e.portalItem ?? this.options?.item, !this.item) {
66
67
  this.fieldsAreDeletable = !1;
67
68
  return;
68
69
  }
69
- await S.getCredential(this.item.url.replace("rest/services", "rest/admin/services"));
70
+ await j.getCredential(this.item.url.replace("rest/services", "rest/admin/services"));
70
71
  }
71
72
  getFieldLabel(e) {
72
73
  const { layer: t, arcadeExpMap: s } = this;
73
74
  if (this.options?.ignorePopupTemplate)
74
75
  return this.getFieldDisplayNameFromLayerFields(e);
75
76
  {
76
- const o = (t.popupTemplate ?? t.createPopupTemplate()).fieldInfos?.find((l) => l.fieldName === e);
77
- return o ? q(o, s) : this.getFieldDisplayNameFromLayerFields(e);
77
+ const o = (t.popupTemplate ?? t.createPopupTemplate()).fieldInfos?.find((r) => r.fieldName === e);
78
+ return o ? R(o, s) : this.getFieldDisplayNameFromLayerFields(e);
78
79
  }
79
80
  }
80
81
  getFieldDisplayNameFromLayerFields(e) {
@@ -83,8 +84,8 @@ class _ extends M {
83
84
  }
84
85
  async deleteFields() {
85
86
  const { layer: e, fieldNames: t } = this, s = `${e.url.replace("/rest/services", "/rest/admin/services")}/${e.layerId}/deleteFromDefinition`, a = {
86
- fields: t.map((l) => ({
87
- name: l
87
+ fields: t.map((r) => ({
88
+ name: r
88
89
  }))
89
90
  }, o = {
90
91
  deleteFromDefinition: JSON.stringify(a)
@@ -93,18 +94,18 @@ class _ extends M {
93
94
  query: { ...o, f: "json", async: !1 },
94
95
  method: "post",
95
96
  responseType: "json"
96
- }).then(async (l) => {
97
- if (l.data?.success) {
97
+ }).then(async (r) => {
98
+ if (r.data?.success) {
98
99
  const h = `${e.url}/${e.layerId}`;
99
100
  t.forEach((i) => {
100
101
  e.type === "feature" && e.floorInfo?.floorField === i && (e.floorInfo = null);
101
102
  });
102
- const m = await y(h, { query: { f: "json" }, responseType: "json" });
103
- if (m) {
104
- const i = m.data;
105
- this.currentLayerInfo = m.data, i && (this.updateTypesAndTemplatesOnLayer(), t.forEach((r) => {
106
- i.templates?.length ? i.templates.forEach((c) => delete c.prototype.attributes[r]) : i.types?.forEach((c) => {
107
- c.templates.forEach((u) => delete u.prototype.attributes[r]);
103
+ const u = await y(h, { query: { f: "json" }, responseType: "json" });
104
+ if (u) {
105
+ const i = u.data;
106
+ this.currentLayerInfo = u.data, i && (this.updateTypesAndTemplatesOnLayer(), t.forEach((l) => {
107
+ i.templates?.length ? i.templates.forEach((d) => delete d.prototype.attributes[l]) : i.types?.forEach((d) => {
108
+ d.templates.forEach((m) => delete m.prototype.attributes[l]);
108
109
  });
109
110
  }), this.updateFeatureService(i));
110
111
  } else
@@ -127,20 +128,20 @@ class _ extends M {
127
128
  updateTemplatesList(e) {
128
129
  const { currentLayerInfo: t, messages: s } = this, a = [];
129
130
  return (e ?? []).forEach((o) => {
130
- const l = new x();
131
- l.description = o.description ?? "", l.name = o.name || s.newFeature, l.drawingTool = o.drawingTool || "point";
131
+ const r = new L();
132
+ r.description = o.description ?? "", r.name = o.name || s.newFeature, r.drawingTool = o.drawingTool || "point";
132
133
  const h = {};
133
134
  t.fields.forEach((i) => {
134
- let r = !1;
135
- for (let c = 0; c < o.prototype.attributes.length; c++)
136
- if (o.prototype.attributes[c] === i.name) {
137
- r = !0, h[i.name] = o.prototype.attributes[i.name];
135
+ let l = !1;
136
+ for (let d = 0; d < o.prototype.attributes.length; d++)
137
+ if (o.prototype.attributes[d] === i.name) {
138
+ l = !0, h[i.name] = o.prototype.attributes[i.name];
138
139
  break;
139
140
  }
140
- !r && i.editable && (h[i.name] = i.defaultValue || null);
141
+ !l && i.editable && (h[i.name] = i.defaultValue || null);
141
142
  });
142
- const m = new L({ attributes: h });
143
- l.prototype = m, a.push(l);
143
+ const u = new S({ attributes: h });
144
+ r.prototype = u, a.push(r);
144
145
  }), a;
145
146
  }
146
147
  addType(e, t) {
@@ -150,42 +151,46 @@ class _ extends M {
150
151
  const { layer: t, fieldNames: s } = this, a = {
151
152
  templates: e.templates,
152
153
  types: e.types
153
- }, o = `${t.url.replace("/rest/services", "/rest/admin/services")}/${t.layerId}/updateDefinition`, l = {
154
+ }, o = `${t.url.replace("/rest/services", "/rest/admin/services")}/${t.layerId}/updateDefinition`, r = {
154
155
  f: "json",
155
156
  updateDefinition: JSON.stringify(a)
156
157
  };
157
158
  await y(o, {
158
- query: { ...l, f: "json" },
159
+ query: { ...r, f: "json" },
159
160
  method: "post",
160
161
  responseType: "json"
161
162
  }).then(async (h) => {
162
163
  if (h.data?.success) {
163
- const m = `${w(this.portal)}content/items/${this.item.id}/data`;
164
+ const u = `${w(this.portal)}content/items/${this.item.id}/data`;
164
165
  if (this.options?.ignorePopupTemplate || s.forEach((i) => {
165
- t.popupTemplate?.fieldInfos && (t.popupTemplate.fieldInfos = t.popupTemplate.fieldInfos.filter((r) => r.fieldName !== i)), t.popupTemplate?.content?.forEach((r, c) => {
166
- r.type === "fields" && r.fieldInfos && ((t.popupTemplate?.content)[c].fieldInfos = (t.popupTemplate?.content)[c].fieldInfos?.filter((u) => u.fieldName !== i));
166
+ t.popupTemplate?.fieldInfos && (t.popupTemplate.fieldInfos = t.popupTemplate.fieldInfos.filter((l) => l.fieldName !== i)), t.popupTemplate?.content?.forEach((l, d) => {
167
+ l.type === "fields" && l.fieldInfos && ((t.popupTemplate?.content)[d].fieldInfos = (t.popupTemplate?.content)[d].fieldInfos?.filter((m) => m.fieldName !== i));
167
168
  });
168
169
  }), t.attributeTableTemplate) {
169
170
  const i = t.attributeTableTemplate.clone();
170
- i.elements = i.elements.filter((r) => !(r.type === "field" && s.includes(r.fieldName))), i.orderByFields = i.orderByFields.filter((r) => !s.includes(r.field)), t.attributeTableTemplate = i;
171
+ i.elements = i.elements.filter((l) => !(l.type === "field" && s.includes(l.fieldName))), i.orderByFields = i.orderByFields.filter((l) => !s.includes(l.field)), t.attributeTableTemplate = i;
171
172
  }
172
- await y(m, {
173
+ if (t.fieldConfigurations?.length) {
174
+ const l = x.clone(t.fieldConfigurations).filter((d) => !s.includes(d.name));
175
+ t.fieldConfigurations = l;
176
+ }
177
+ await y(u, {
173
178
  query: { f: "json" },
174
179
  responseType: "json"
175
180
  }).then(async (i) => {
176
- const r = i.data;
177
- if (r?.layers || r?.tables) {
178
- const c = t.isTable, u = c ? r.tables : r.layers, d = u?.find((g) => g.id === t.layerId);
181
+ const l = i.data;
182
+ if (l?.layers || l?.tables) {
183
+ const d = t.isTable, m = d ? l.tables : l.layers, c = m?.find((g) => g.id === t.layerId);
179
184
  if (s.forEach((g) => {
180
- d?.attributeTableInfo?.attributeTableElements && (d.attributeTableInfo.attributeTableElements = d.attributeTableInfo.attributeTableElements.filter((f) => !(f.type === "field" && f.fieldName === g)), d.attributeTableInfo.orderByFields = d.attributeTableInfo.orderByFields.filter((f) => f.field !== g));
181
- }), d?.fieldConfiguration && (d.fieldConfiguration = d.fieldConfiguration.filter((g) => !s.includes(g.name))), d?.popupInfo) {
185
+ c?.attributeTableInfo?.attributeTableElements && (c.attributeTableInfo.attributeTableElements = c.attributeTableInfo.attributeTableElements.filter((f) => !(f.type === "field" && f.fieldName === g)), c.attributeTableInfo.orderByFields = c.attributeTableInfo.orderByFields.filter((f) => f.field !== g));
186
+ }), c?.layerDefinition?.fieldConfigurations && (c.layerDefinition.fieldConfigurations = c.layerDefinition.fieldConfigurations.filter((g) => !s.includes(g.name))), c?.popupInfo) {
182
187
  s.forEach((b) => {
183
- d.popupInfo.fieldInfos = d.popupInfo.fieldInfos.filter((v) => v.fieldName !== b), d.popupInfo.popupElements?.forEach((v, I) => {
184
- v.type === "fields" && v.fieldInfos && (d.popupInfo.popupElements[I].fieldInfos = d.popupInfo.popupElements[I].fieldInfos.filter((k) => k.fieldName !== b));
188
+ c.popupInfo.fieldInfos = c.popupInfo.fieldInfos.filter((v) => v.fieldName !== b), c.popupInfo.popupElements?.forEach((v, I) => {
189
+ v.type === "fields" && v.fieldInfos && (c.popupInfo.popupElements[I].fieldInfos = c.popupInfo.popupElements[I].fieldInfos.filter((C) => C.fieldName !== b));
185
190
  });
186
191
  });
187
192
  const g = `${w(this.portal)}content/users/${this.item.owner}/items/${this.item.id}/update`, f = {};
188
- c ? (f.tables = u, r.layers && (f.layers = r.layers)) : (f.layers = u, r.tables && (f.tables = r.tables));
193
+ d ? (f.tables = m, l.layers && (f.layers = l.layers)) : (f.layers = m, l.tables && (f.tables = l.tables));
189
194
  const A = {
190
195
  f: "json",
191
196
  text: JSON.stringify(f)
@@ -240,9 +245,9 @@ class _ extends M {
240
245
  }
241
246
  renderFieldsPreview() {
242
247
  const { fieldNames: e, layerFields: t, layerFieldsMap: s, arcadeExpMap: a, messages: o } = this;
243
- return p`<calcite-list .label=${o.fields}>${e.map((l) => {
244
- const h = t.find((m) => m.name === l);
245
- return p`<calcite-list-item .label=${this.getFieldLabel(l)} .description=${`{${l}}`} .value=${l} .disabled=${!h.editable}><div slot=actions-end class="field-icons">${z({ fieldType: R(l, s, a) })}</div></calcite-list-item>`;
248
+ return p`<calcite-list .label=${o.fields}>${e.map((r) => {
249
+ const h = t.find((u) => u.name === r);
250
+ return p`<calcite-list-item .label=${this.getFieldLabel(r)} .description=${`{${r}}`} .value=${r} .disabled=${!h.editable}><div slot=actions-end class="field-icons">${W({ fieldType: J(r, s, a) })}</div></calcite-list-item>`;
246
251
  })}</calcite-list>`;
247
252
  }
248
253
  renderCancelButton() {
@@ -257,7 +262,7 @@ class _ extends M {
257
262
  }}>${t.length === 1 ? e.deleteField : e.deleteFieldsWithNumber.replace("${number}", `${t.length}`)}</calcite-button>`;
258
263
  }
259
264
  }
260
- C("arcgis-portal-field-delete", _);
265
+ k("arcgis-portal-field-delete", V);
261
266
  export {
262
- _ as ArcgisPortalFieldDelete
267
+ V as ArcgisPortalFieldDelete
263
268
  };
@@ -3,7 +3,7 @@
3
3
  * Use this controller to access and update shared classification info
4
4
  * between multiple instances of the classification banner.
5
5
  */
6
- export declare const useClassificationModel: (component: import('@arcgis/lumina').LitElement & Omit<Pick<import('../models/classificationModel').ClassificationModel, "portalClassificationSchema">, "set" | "addHandles" | "declaredClass" | "destroyed" | "hasHandles" | "initialized" | "removeHandles" | "watch"> & {
6
+ export declare const useClassificationModel: (component: import('@arcgis/lumina').LitElement & Omit<Pick<import('../models/classificationModel').ClassificationModel, "portalClassificationSchema">, "addHandles" | "declaredClass" | "destroyed" | "hasHandles" | "initialized" | "removeHandles" | "set" | "watch"> & {
7
7
  autoDestroyDisabled: boolean;
8
8
  destroy: () => Promise<void>;
9
9
  }) => import('../models/classificationModel').ClassificationModel;
@@ -1,8 +1,8 @@
1
1
  {
2
- "timestamp": "2025-09-25T16:27:59",
2
+ "timestamp": "2025-10-04T04:46:33",
3
3
  "compiler": {
4
4
  "name": "@arcgis/lumina-compiler",
5
- "version": "5.0.0-next.0",
5
+ "version": "5.0.0-next.10",
6
6
  "typescriptVersion": "5.8.3"
7
7
  },
8
8
  "schemaVersion": "1.0.0",
@@ -471,7 +471,7 @@
471
471
  "name": "arcgisPropertyChange",
472
472
  "description": "Event emitted when component property values status, values, or valid change.",
473
473
  "type": {
474
- "text": "{ name: \"values\" | \"valid\" | \"status\"; }"
474
+ "text": "{ name: \"values\" | \"status\" | \"valid\"; }"
475
475
  }
476
476
  }
477
477
  ]
@@ -913,6 +913,22 @@
913
913
  }
914
914
  ]
915
915
  },
916
+ {
917
+ "kind": "field",
918
+ "name": "isRequiredErrors",
919
+ "type": {
920
+ "text": "Set<string>",
921
+ "references": [
922
+ {
923
+ "name": "Set",
924
+ "package": "typescript",
925
+ "module": "lib/lib.es2015.collection.d.ts",
926
+ "start": 0,
927
+ "end": 3
928
+ }
929
+ ]
930
+ }
931
+ },
916
932
  {
917
933
  "kind": "field",
918
934
  "name": "renderingInfo",
@@ -1,8 +1,8 @@
1
1
  {
2
- "timestamp": "2025-09-25T16:27:59",
2
+ "timestamp": "2025-10-04T04:46:33",
3
3
  "compiler": {
4
4
  "name": "@arcgis/lumina-compiler",
5
- "version": "5.0.0-next.0",
5
+ "version": "5.0.0-next.10",
6
6
  "typescriptVersion": "5.8.3"
7
7
  },
8
8
  "components": [
@@ -425,11 +425,11 @@
425
425
  "events": [
426
426
  {
427
427
  "event": "arcgisPropertyChange",
428
- "detail": "{ name: \"values\" | \"valid\" | \"status\"; }",
428
+ "detail": "{ name: \"values\" | \"status\" | \"valid\"; }",
429
429
  "bubbles": true,
430
430
  "complexType": {
431
- "original": "{ name: \"values\" | \"valid\" | \"status\"; }",
432
- "resolved": "{ name: \"values\" | \"valid\" | \"status\"; }",
431
+ "original": "{ name: \"values\" | \"status\" | \"valid\"; }",
432
+ "resolved": "{ name: \"values\" | \"status\" | \"valid\"; }",
433
433
  "references": {}
434
434
  },
435
435
  "cancelable": true,
@@ -737,6 +737,28 @@
737
737
  "optional": true,
738
738
  "required": false
739
739
  },
740
+ {
741
+ "name": "isRequiredErrors",
742
+ "type": "Set<string>",
743
+ "complexType": {
744
+ "original": "Set<string>",
745
+ "resolved": "Set<string>",
746
+ "references": {
747
+ "Set": {
748
+ "location": "import",
749
+ "path": "typescript/lib/lib.es2015.collection.d.ts",
750
+ "id": "notImplemented"
751
+ }
752
+ }
753
+ },
754
+ "mutable": true,
755
+ "reflectToAttr": false,
756
+ "docs": "",
757
+ "docsTags": [],
758
+ "values": [],
759
+ "optional": true,
760
+ "required": false
761
+ },
740
762
  {
741
763
  "name": "renderingInfo",
742
764
  "type": "{\n attributeValidationResult: string | null;\n valueExpressionResult: Array<Readonly<{\n label: string;\n value: string;\n }>> | Record<string, Array<Readonly<{\n label: string;\n value: string;\n }>>> | null;\n}",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "name": "@arcgis/portal-components",
4
- "version": "5.0.0-next.0",
4
+ "version": "5.0.0-next.10",
5
5
  "description-markup": "markdown",
6
6
  "contributions": {
7
7
  "html": {
@@ -99,7 +99,7 @@
99
99
  "events": [
100
100
  {
101
101
  "name": "arcgisPropertyChange",
102
- "type": "{ name: \"values\" | \"valid\" | \"status\"; }",
102
+ "type": "{ name: \"values\" | \"status\" | \"valid\"; }",
103
103
  "description": "Event emitted when component property values status, values, or valid change."
104
104
  }
105
105
  ],
@@ -129,7 +129,7 @@
129
129
  "events": [
130
130
  {
131
131
  "name": "arcgisPropertyChange",
132
- "type": "{ name: \"values\" | \"valid\" | \"status\"; }",
132
+ "type": "{ name: \"values\" | \"status\" | \"valid\"; }",
133
133
  "description": "Event emitted when component property values status, values, or valid change."
134
134
  }
135
135
  ]
@@ -213,6 +213,10 @@
213
213
  "name": "attributeKey",
214
214
  "type": "string"
215
215
  },
216
+ {
217
+ "name": "isRequiredErrors",
218
+ "type": "Set<string>"
219
+ },
216
220
  {
217
221
  "name": "renderingInfo",
218
222
  "type": "{\n attributeValidationResult: string | null;\n valueExpressionResult: Array<Readonly<{\n label: string;\n value: string;\n }>> | Record<string, Array<Readonly<{\n label: string;\n value: string;\n }>>> | null;\n}"
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ import { g as a, s as t } from "./chunks/runtime.js";
2
2
  import { c as o, a as r } from "./chunks/fieldAddDelete.js";
3
3
  /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
4
4
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
5
- v5.0.0-next.0 */
5
+ v5.0.0-next.10 */
6
6
  export {
7
7
  o as canAddField,
8
8
  r as canDeleteField,
package/dist/loader.js CHANGED
@@ -2,12 +2,12 @@ import { r as i } from "./chunks/runtime.js";
2
2
  import { makeDefineCustomElements as t } from "@arcgis/lumina";
3
3
  /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
4
4
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
5
- v5.0.0-next.0 */
5
+ v5.0.0-next.10 */
6
6
  const s = t(i, {
7
7
  "arcgis-portal-classification-banner": [() => import("./components/arcgis-portal-classification-banner/customElement.js"), "autoDestroyDisabled,missingExistingClassification,portalItem:,validationErrors,variant;destroy"],
8
8
  "arcgis-portal-classification-config": [() => import("./components/arcgis-portal-classification-config/customElement.js"), "autoDestroyDisabled,portalItem:,status,valid,values;destroy,resetForm,validateForm"],
9
9
  "arcgis-portal-classification-favorite": [() => import("./components/arcgis-portal-classification-favorite/customElement.js"), "attributeExpressionResults:,classificationValue:,favoriteClassifications:,portalItem:,resetFavoriteClassification:,selectedFavoriteClassificationName,updateClassificationData:"],
10
- "arcgis-portal-classification-form-element": [() => import("./components/arcgis-portal-classification-form-element/customElement.js"), "attribute:,attributeKey,renderingInfo:,value:"],
10
+ "arcgis-portal-classification-form-element": [() => import("./components/arcgis-portal-classification-form-element/customElement.js"), "attribute:,attributeKey,isRequiredErrors:,renderingInfo:,value:"],
11
11
  "arcgis-portal-field-delete": [() => import("./components/arcgis-portal-field-delete/customElement.js"), "config:,fieldNames:,layer:,mapView:,options:"]
12
12
  });
13
13
  export {
@@ -16,7 +16,7 @@ interface LuminaArcgisPortalClassificationConfig extends Required<Pick<ArcgisPor
16
16
  interface LuminaArcgisPortalClassificationFavorite extends Partial<Pick<ArcgisPortalClassificationFavorite, 'attributeExpressionResults' | 'classificationValue' | 'favoriteClassifications' | 'portalItem' | 'resetFavoriteClassification' | 'selectedFavoriteClassificationName' | 'updateClassificationData'>>, h.JSX.HTMLAttributes<HTMLArcgisPortalClassificationFavoriteElement> {
17
17
  }
18
18
 
19
- interface LuminaArcgisPortalClassificationFormElement extends Partial<Pick<ArcgisPortalClassificationFormElement, 'attribute' | 'attributeKey' | 'renderingInfo' | 'value'>>, h.JSX.HTMLAttributes<HTMLArcgisPortalClassificationFormElementElement> {
19
+ interface LuminaArcgisPortalClassificationFormElement extends Partial<Pick<ArcgisPortalClassificationFormElement, 'attribute' | 'attributeKey' | 'isRequiredErrors' | 'renderingInfo' | 'value'>>, h.JSX.HTMLAttributes<HTMLArcgisPortalClassificationFormElementElement> {
20
20
  onarcgisAttributeValueChange?: EventHandler<HTMLArcgisPortalClassificationFormElementElement["arcgisAttributeValueChange"]>;
21
21
  }
22
22
 
@@ -17,7 +17,7 @@ interface PreactArcgisPortalClassificationConfig extends Required<Pick<ArcgisPor
17
17
  interface PreactArcgisPortalClassificationFavorite extends Partial<Pick<ArcgisPortalClassificationFavorite, 'attributeExpressionResults' | 'classificationValue' | 'favoriteClassifications' | 'portalItem' | 'resetFavoriteClassification' | 'selectedFavoriteClassificationName' | 'updateClassificationData'>>, HTMLAttributes<HTMLArcgisPortalClassificationFavoriteElement> {
18
18
  }
19
19
 
20
- interface PreactArcgisPortalClassificationFormElement extends Partial<Pick<ArcgisPortalClassificationFormElement, 'attribute' | 'attributeKey' | 'renderingInfo' | 'value'>>, HTMLAttributes<HTMLArcgisPortalClassificationFormElementElement> {
20
+ interface PreactArcgisPortalClassificationFormElement extends Partial<Pick<ArcgisPortalClassificationFormElement, 'attribute' | 'attributeKey' | 'isRequiredErrors' | 'renderingInfo' | 'value'>>, HTMLAttributes<HTMLArcgisPortalClassificationFormElementElement> {
21
21
  onarcgisAttributeValueChange?: EventHandler<HTMLArcgisPortalClassificationFormElementElement["arcgisAttributeValueChange"]>;
22
22
  }
23
23
 
@@ -21,7 +21,7 @@ interface PreactArcgisPortalClassificationFavorite extends Partial<Pick<ArcgisPo
21
21
  }
22
22
 
23
23
  /** @deprecated Update to Preact 10.27.2+ or 11+ and consume types/preact file over types/preact10 */
24
- interface PreactArcgisPortalClassificationFormElement extends Partial<Pick<ArcgisPortalClassificationFormElement, 'attribute' | 'attributeKey' | 'renderingInfo' | 'value'>>, PreactJsx.HTMLAttributes<HTMLArcgisPortalClassificationFormElementElement> {
24
+ interface PreactArcgisPortalClassificationFormElement extends Partial<Pick<ArcgisPortalClassificationFormElement, 'attribute' | 'attributeKey' | 'isRequiredErrors' | 'renderingInfo' | 'value'>>, PreactJsx.HTMLAttributes<HTMLArcgisPortalClassificationFormElementElement> {
25
25
  onarcgisAttributeValueChange?: EventHandler<HTMLArcgisPortalClassificationFormElementElement["arcgisAttributeValueChange"]>;
26
26
  }
27
27
 
@@ -17,7 +17,7 @@ interface ReactArcgisPortalClassificationConfig extends Required<Pick<ArcgisPort
17
17
  interface ReactArcgisPortalClassificationFavorite extends Partial<Pick<ArcgisPortalClassificationFavorite, 'attributeExpressionResults' | 'classificationValue' | 'favoriteClassifications' | 'portalItem' | 'resetFavoriteClassification' | 'selectedFavoriteClassificationName' | 'updateClassificationData'>>, HTMLProps<HTMLArcgisPortalClassificationFavoriteElement> {
18
18
  }
19
19
 
20
- interface ReactArcgisPortalClassificationFormElement extends Partial<Pick<ArcgisPortalClassificationFormElement, 'attribute' | 'attributeKey' | 'renderingInfo' | 'value'>>, HTMLProps<HTMLArcgisPortalClassificationFormElementElement> {
20
+ interface ReactArcgisPortalClassificationFormElement extends Partial<Pick<ArcgisPortalClassificationFormElement, 'attribute' | 'attributeKey' | 'isRequiredErrors' | 'renderingInfo' | 'value'>>, HTMLProps<HTMLArcgisPortalClassificationFormElementElement> {
21
21
  onarcgisAttributeValueChange?: EventHandler<HTMLArcgisPortalClassificationFormElementElement["arcgisAttributeValueChange"]>;
22
22
  }
23
23
 
@@ -17,7 +17,7 @@ interface StencilArcgisPortalClassificationConfig extends Required<Pick<ArcgisPo
17
17
  interface StencilArcgisPortalClassificationFavorite extends Partial<Pick<ArcgisPortalClassificationFavorite, 'attributeExpressionResults' | 'classificationValue' | 'favoriteClassifications' | 'portalItem' | 'resetFavoriteClassification' | 'selectedFavoriteClassificationName' | 'updateClassificationData'>>, StencilJsx.HTMLAttributes<HTMLArcgisPortalClassificationFavoriteElement> {
18
18
  }
19
19
 
20
- interface StencilArcgisPortalClassificationFormElement extends Partial<Pick<ArcgisPortalClassificationFormElement, 'attribute' | 'attributeKey' | 'renderingInfo' | 'value'>>, StencilJsx.HTMLAttributes<HTMLArcgisPortalClassificationFormElementElement> {
20
+ interface StencilArcgisPortalClassificationFormElement extends Partial<Pick<ArcgisPortalClassificationFormElement, 'attribute' | 'attributeKey' | 'isRequiredErrors' | 'renderingInfo' | 'value'>>, StencilJsx.HTMLAttributes<HTMLArcgisPortalClassificationFormElementElement> {
21
21
  onArcgisAttributeValueChange?: EventHandler<HTMLArcgisPortalClassificationFormElementElement["arcgisAttributeValueChange"]>;
22
22
  }
23
23
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcgis/portal-components",
3
- "version": "5.0.0-next.0",
3
+ "version": "5.0.0-next.10",
4
4
  "description": "ArcGIS Portal Components",
5
5
  "keywords": [
6
6
  "ArcGIS",
@@ -38,15 +38,15 @@
38
38
  ],
39
39
  "license": "SEE LICENSE IN LICENSE.md",
40
40
  "dependencies": {
41
- "@arcgis/lumina": "5.0.0-next.0",
42
- "@arcgis/toolkit": "5.0.0-next.0",
41
+ "@arcgis/lumina": "5.0.0-next.10",
42
+ "@arcgis/toolkit": "5.0.0-next.10",
43
43
  "@lit/task": "^1.0.2",
44
44
  "lit": "^3.3.0",
45
45
  "tslib": "^2.8.1"
46
46
  },
47
47
  "peerDependencies": {
48
- "@arcgis/core": ">=4.34.0-next.43 <4.35",
49
- "@esri/calcite-components": "^3.3.0"
48
+ "@arcgis/core": ">=5.0.0-next.1 <5.1",
49
+ "@esri/calcite-components": "^3.3.1"
50
50
  },
51
51
  "css.customData": [
52
52
  "dist/docs/vscode.css-custom-data.json"
@@ -1,4 +0,0 @@
1
- /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
2
- See https://js.arcgis.com/5.0/esri/copyright.txt for details.
3
- v5.0.0-next.0 */
4
- import d from"./YHT2PRHK.js";import c from"./XVHSY45D.js";import a from"./N5WPRKA2.js";import{a as E,b as I}from"./E6A6P5DT.js";import{b as x,c as P,d as $}from"./O6FBVWEQ.js";import{B as u,C as g,D as b,F as C,I as v,h as p,j as n}from"./HP6FLO6G.js";export default $arcgis.t(([{createArcadeExecutor:F},{watch:k},{c:y},{a:m,b:c,c:f,d:O,e:_,f:V},{a:S,b:w}])=>{async function T({portalClassificationSchema:r,itemClassification:t}){let i=Object.entries(r.attributes).map(async([e])=>{let s=await j(e,r,t);return{[e]:{enabled:s}}}),a=await Promise.all(i);return Object.assign({},...a)}async function j(r,t,i){let a=t?.attributes?.[r];if(!a)return!1;let{isAttributeEnabled:e}=a;return e?await h(e,JSON.stringify(t),i):!0}async function N({portalClassificationSchema:r,itemClassification:t}){let i=Object.entries(r.attributes).map(async([e])=>{let s=await M(e,r,t);return{[e]:{valueExpressionResult:s}}}),a=await Promise.all(i);return Object.assign({},...a)}async function M(r,t,i){let a=t.attributes[r];if(!a)throw Error(`Attribute ${r} not found in schema`);let e=a.valueExpression,s=a.validValues,o=a.validValuesMap;return s?.length?s:o&&Object.keys(o)?.length?o:e?await h(e,t,i,r):null}async function q({portalClassificationSchema:r,itemClassification:t}){let i=Object.entries(r.attributes).map(async([e])=>{let s=await H(e,r,t);return{[e]:{attributeValidationResult:s}}}),a=await Promise.all(i);return Object.assign({},...a)}async function H(r,t,i){let a=t?.attributes?.[r];if(!a)return null;let e=a?.attributeValidation;return e?await h(e,JSON.stringify(t),i,r):null}var R=async(r,t)=>{let i=r?.bannerExpression;return i?.length?await h(i,r,t):U(r,t)},U=(r,t)=>{let i=Object.entries(r.attributes).sort(([,s],[,o])=>(s?.bannerOrder??0)-(o?.bannerOrder??0)),a=[],e=[];return i.forEach(([s,o])=>{let l=t?.[s];l&&o.bannerOrder&&(a.push(J({elementType:o.uiElement??"",selectionDisplayLabel:o.bannerLabel??"",labelDelimiter:o.labelDelimiter??"",classificationProp:l,valueDelimiter:o.valueDelimiter??""})),e.push(o.attributeDelimiter??""))}),a.length>0?a.reduce((s,o,l)=>l===0?o:`${s}${e[l-1]}${o}`,""):""},J=({elementType:r,selectionDisplayLabel:t,labelDelimiter:i,classificationProp:a,valueDelimiter:e})=>{let s=r.includes("multi")&&a?a.split("").join(e):a;return`${t}${i}${s}`};async function h(r,t,i,a=""){let e={schemaJsonString:typeof t=="string"?t:JSON.stringify(t),valueJsonString:JSON.stringify(i),attributeId:a};return(await L(r)).execute(e)}async function L(r){return await F(r,{variables:[{name:"schemaJsonString",type:"text"},{name:"valueJsonString",type:"text"},{name:"attributeId",type:"text"}]})}var W=p`:host{height:100%;box-sizing:border-box;display:flex;flex-direction:column}.header-section{padding:var(--calcite-spacing-sm)}.header-section__title-container{display:flex;align-items:center;justify-content:space-between}.header-section__title-text{margin:unset;font-weight:unset;font-size:var(--calcite-font-size)}.header-section__title-popover{padding:var(--calcite-spacing-md)}.form-section{display:flex;border-top:var(--calcite-border-width-sm) solid var(--calcite-color-border-1);padding:var(--calcite-spacing-sm);height:100%;overflow:hidden}.form-section__sidebar{flex:1;padding:var(--calcite-spacing-sm)}.form-section__main-content{flex:3;padding:var(--calcite-spacing-sm);overflow:auto}.danger{color:var(--calcite-color-status-danger)}.spacing-y{margin:var(--calcite-spacing-md) 0}`,d=class extends b{constructor(){super(),this.classificationModel=S(this),this.messages=$(),this.formMainContentRef=u(),this._classificationDataTask=w(this),this._formCreationTask=new I(this,{task:async()=>{if(await this._classificationDataTask.taskComplete,!this.portalClassificationSchema||!this.portalItem)throw new Error("Portal item and classification schema are required to render the form");let t=this.portalItem.clone();if(await t.load(),!this.primaryAttribute)throw new Error("primaryAttribute is required but was undefined.");this.existingClassification=!!t.classification,t.classification=m(t.classification,this.primaryAttribute,this.portalClassificationSchema),t.classification&&(t.classification.banner=await R(this.portalClassificationSchema,t.classification)),this.pendingPortalItem=t,this._itemClassificationWatchHandle&&(this._itemClassificationWatchHandle.remove(),this.portalItem.removeHandles("arcgis-classification-config"),this._itemClassificationWatchHandle=void 0),this._itemClassificationWatchHandle=k(()=>this.portalItem.classification,i=>{if(this.pendingPortalItem){let a=this.pendingPortalItem.clone();a.load().then(()=>{a.classification=i,this.pendingPortalItem=a}).catch(e=>{console.error(e)})}}),this.portalItem.addHandles(this._itemClassificationWatchHandle,"arcgis-classification-config"),await this.evaluateAttributeExpressions(this.portalClassificationSchema,this.pendingPortalItem),this.pendingPortalItem.classification=c(this.pendingPortalItem.classification,this.attributeExpressionResults),this.existingClassification&&this.validateForm()},args:()=>[this.portalItem,this.portalClassificationSchema]}),this.getFormDisplayOrder=t=>this.portalClassificationSchema?.layouts.default.layoutElements[t].formDisplayOrder??0,this.addEditInfoAttributes=()=>{if(!this.pendingPortalItem?.classification)return{};let t=structuredClone(this.pendingPortalItem.classification),i=V(this.pendingPortalItem,t);return{...t,...i}},this.updateFavoriteClassification=t=>{this.favoriteClassifications=t},this.updateClassificationData=async t=>{let i=t.classification;if(this.selectedFavoriteClassificationName=t.name,this.pendingPortalItem){let a=this.pendingPortalItem.clone();if(await a.load(),a.classification=f(this.portalClassificationSchema,i),!this.portalClassificationSchema)return;await this.evaluateAttributeExpressions(this.portalClassificationSchema,a),a.classification=c(a.classification,this.attributeExpressionResults),this.pendingPortalItem=a}},this.existingClassification=!1,this.portalClassificationSchema=this.classificationModel.portalClassificationSchema,this.primaryAttribute=this.classificationModel.primaryAttribute,this.attributeExpressionResults=new Map,this.formValidationErrors=[],this.remoteValidationErrors="",this.canUserConfigureClassification=!0,this.favoriteClassifications=[],this.status=this.classificationModel.status,this.values={},this.valid=!1,this.autoDestroyDisabled=!1,this.arcgisPropertyChange=P()("status","values","valid")}static{this.properties={existingClassification:16,portalClassificationSchema:16,primaryAttribute:16,attributeExpressionResults:16,formValidationErrors:16,itemClassification:16,pendingPortalItem:16,selectedCategory:16,remoteValidationErrors:16,canUserConfigureClassification:16,favoriteClassifications:16,selectedFavoriteClassificationName:16,portalItem:0,status:35,values:[1,{type:Object}],valid:7,autoDestroyDisabled:5}}static{this.styles=W}async destroy(){await this.manager.destroy()}async resetForm(){if(this.existingClassification)this.pendingPortalItem=this.portalItem?.clone(),this.portalClassificationSchema&&this.pendingPortalItem&&(await this.evaluateAttributeExpressions(this.portalClassificationSchema,this.pendingPortalItem),this.pendingPortalItem.classification=c(this.pendingPortalItem.classification,this.attributeExpressionResults),this.validateForm());else if(this.portalItem&&this.primaryAttribute&&this.portalClassificationSchema){let t=this.portalItem.clone();await t.load(),this.pendingPortalItem=this.portalItem?.clone(),this.pendingPortalItem.classification=m(t.classification,this.primaryAttribute,this.portalClassificationSchema),this.portalClassificationSchema&&this.pendingPortalItem&&(await this.evaluateAttributeExpressions(this.portalClassificationSchema,this.pendingPortalItem),this.pendingPortalItem.classification=c(this.pendingPortalItem.classification,this.attributeExpressionResults))}}async validateForm(){this.updateFormValidationErrors(),await this.updateRemoteValidationErrors()}async load(){try{await _(this.portalItem)||(this.canUserConfigureClassification=!1);let t=await y(this.portalItem);if(t){let{result:i,error:a}=t;if(a&&a.details.raw.messageCode!=="COM_1177"){console.error(a);return}i&&(this.favoriteClassifications=i.favorites)}}catch(t){console.error("Error occured while loading arcgis-classification-config:",t)}}willUpdate(t){if(t.has("pendingPortalItem")){let i=this.addEditInfoAttributes();this.values=i}(t.has("formValidationErrors")||t.has("remoteValidationErrors"))&&(this.valid=!this.formValidationErrors.length&&!this.remoteValidationErrors)}loaded(){let t=x(this.el,"form");t&&(this.listenOn(t,"formdata",this.updateFormData),this.listenOn(t,"submit",this.handleFormSubmit)),this.listen("submit",this.handleFormSubmit)}async updateClassificationProperty(t){if(!this.pendingPortalItem||!this.portalClassificationSchema)return;let i=this.pendingPortalItem.clone();await i.load(),Object.entries(t??{}).forEach(([a,e])=>{if(a===this.primaryAttribute){let s=O(e,i.classification,this.primaryAttribute);s=f(this.portalClassificationSchema,s),i.classification=s}else{let s=new Map(Object.entries(i.classification??{}));if(e===void 0||e===""||Array.isArray(e)&&e.length===0)s.delete(a);else if(s.set(a,e),a==="fgi"&&!s.has("fgiOptions")){let o=this.portalClassificationSchema?.attributes?.fgiOptions?.defaultValue??[];s.set("fgiOptions",Array.isArray(o)?o:[o])}i.classification=Object.fromEntries(s)}}),i.classification&&!i.classification.fgi&&delete i.classification.fgiOptions,await this.evaluateAttributeExpressions(this.portalClassificationSchema,i),i.classification=c(i.classification,this.attributeExpressionResults),i.classification&&(i.classification.banner=await R(this.portalClassificationSchema,i.classification)),this.pendingPortalItem=i,this.existingClassification&&this.validateForm()}handleCategorySelectChange(t){this.selectedCategory=t.target.selectedItems[0].value}async evaluateAttributeExpressions(t,i){let a=await T({portalClassificationSchema:t,itemClassification:i.classification}),e=await N({portalClassificationSchema:t,itemClassification:i.classification}),s=await q({portalClassificationSchema:t,itemClassification:i.classification});Object.keys(t.attributes).forEach(o=>{let l=a[o]?.enabled??!0,A=e[o]?.valueExpressionResult,D=s[o]?.attributeValidationResult;this.attributeExpressionResults.set(o,{enabled:l,valueExpressionResult:A,attributeValidationResult:D})})}updateFormValidationErrors(){let t=[];Object.entries(this.portalClassificationSchema?.attributes??{})?.forEach(([i,a])=>{a.isRequired&&!this.pendingPortalItem?.classification?.[i]&&this.pendingPortalItem?.classification?.[i]!==0&&t.push({attribute:a.label,reason:this.messages.isrequired??"is required",category:a.attributeCategory}),this.attributeExpressionResults.get(i)?.attributeValidationResult&&t.push({attribute:a.label,reason:this.attributeExpressionResults.get(i)?.attributeValidationResult??"",category:a.attributeCategory})}),this.formValidationErrors=t}async updateRemoteValidationErrors(){if(!this.pendingPortalItem?.classification)return;let t=await this.classificationModel.validateClassification(void 0,this.pendingPortalItem?.classification,this.pendingPortalItem.portal.restUrl);this.remoteValidationErrors=t}async handleFormSubmit(t){this.validateForm(),this.formMainContentRef.value?.scrollIntoView()}updateFormData(t){let i=t.formData,a=this.addEditInfoAttributes();a=c(a,this.attributeExpressionResults),Object.entries(a??{}).forEach(([e,s])=>{i.set(e,s)})}renderCategoryTabs(){return this._classificationDataTask.render({complete:()=>{if(this.portalClassificationSchema?.attributeCategories?.length)return this.selectedCategory||(this.selectedCategory=this.portalClassificationSchema?.attributeCategories[0]),n`<calcite-list .label=${this.messages.selectcategory??"select category"} selection-appearance=border selection-mode=single-persist @calciteListChange=${this.handleCategorySelectChange}>${this.portalClassificationSchema.attributeCategories.map(t=>{let i=this.formValidationErrors.filter(a=>a.category===t).length;return n`<calcite-list-item .label=${t} .value=${t} .selected=${this.selectedCategory===t} .description=${i?`${i} ${i>1?this.messages.errors:this.messages.error}`:void 0}>${i&&n`<div slot=content-end class="danger"><calcite-icon icon=exclamation-mark-triangle scale=s></calcite-icon></div>`||""}</calcite-list-item>`})}</calcite-list>`}})}renderValidationErrors(){return this.formValidationErrors.length&&(!this.selectedCategory||this.formValidationErrors.some(t=>this.selectedCategory===t.category))?n`<calcite-notice open icon=exclamation-mark-triangle class="spacing-y" kind=danger><div slot=message>${this.messages.bannererror??"Some fields are incomplete or contain errors. Check the highlighted fields for details."}</div></calcite-notice>`:null}renderFavoriteClassification(){let t=this.portalClassificationSchema?.attributeCategories?.[0]??"Default";return this.selectedCategory=this.portalClassificationSchema?.attributeCategories?.length?this.selectedCategory:"Default",this.selectedCategory===t?n`<arcgis-portal-classification-favorite .portalItem=${this.pendingPortalItem??this.portalItem} .classificationValue=${this.pendingPortalItem?.classification} .favoriteClassifications=${this.favoriteClassifications} .selectedFavoriteClassificationName=${this.selectedFavoriteClassificationName} .attributeExpressionResults=${this.attributeExpressionResults} .resetFavoriteClassification=${i=>this.updateFavoriteClassification(i)} .updateClassificationData=${async i=>await this.updateClassificationData(i)}></arcgis-portal-classification-favorite>`:null}renderForm(){return this._formCreationTask.render({pending:()=>n`<calcite-loader .label=${this.messages.loading??"loading"}></calcite-loader>`,complete:()=>{if(!this.pendingPortalItem||!this.portalClassificationSchema)return;let t=Object.entries(this.portalClassificationSchema.attributes).sort(([i],[a])=>this.getFormDisplayOrder(i)-this.getFormDisplayOrder(a));return n`${this.renderValidationErrors()}${this.renderFavoriteClassification()}${t.filter(([,{attributeCategory:i}])=>this.selectedCategory===i||!i).map(([i,a])=>{if(this.attributeExpressionResults.get(i)?.enabled===!1)return null;let e=this.pendingPortalItem?.classification?.[i];return n`<arcgis-portal-classification-form-element .attributeKey=${i} .attribute=${a} .value=${e} @arcgisAttributeValueChange=${s=>void this.updateClassificationProperty(s.detail)} .renderingInfo=${this.attributeExpressionResults.get(i)}></arcgis-portal-classification-form-element>`})}`}})}renderNotice(t,i="warning"){return n`<calcite-notice icon=exclamation-mark-triangle open class="spacing-y" .kind=${i}><div slot=message>${t}</div></calcite-notice>`}renderHelpTooltip(){return this.portalClassificationSchema?.helpTooltip?n`<calcite-action id=portal-classification-config-tooltip-button .text=${this.portalClassificationSchema?.helpTooltip} icon=information></calcite-action><calcite-popover .label=${this.portalClassificationSchema?.helpTooltip} reference-element=portal-classification-config-tooltip-button placement=bottom-end overlay-positioning=fixed auto-close><div class="header-section__title-popover"><calcite-link .href=${this.portalClassificationSchema?.helpUrl} target=_blank id=portal-classification-config-tooltip-button>${this.portalClassificationSchema?.helpTooltip}</calcite-link></div></calcite-popover>`:null}render(){return this.portalItem?this._classificationDataTask.render({pending:()=>n`<calcite-loader .label=${this.messages.loading??"loading"}></calcite-loader>`,error:()=>this.renderNotice(this.messages.anerroroccurred??"An error has occurred.","danger"),complete:()=>this.portalItem?this.canUserConfigureClassification?this.portalItem.portal.hasClassificationSchema?n`<div class="header-section" role=region aria-label=${this.messages.documentbannerpreview??"documentbannerpreview"??C}><div class="header-section__title-container"><h2 class="header-section__title-text">${this.messages.documentbannerpreview??"documentbannerpreview"}</h2>${this.renderHelpTooltip()}</div>${this._formCreationTask.status===E.COMPLETE&&n`<arcgis-portal-classification-banner .portalItem=${this.pendingPortalItem??this.portalItem} variant=preview .missingExistingClassification=${!this.existingClassification}></arcgis-portal-classification-banner>`||""}</div><div class="form-section">${this.portalClassificationSchema?.attributeCategories?.length&&n`<div class="form-section__sidebar">${this.renderCategoryTabs()}</div>`||""}<div class="form-section__main-content" ${g(this.formMainContentRef)}>${this.renderForm()}</div></div>`:this.renderNotice(this.messages.missingclassificationschema??"Portal is missing classification schema."):this.renderNotice(this.messages.userconfigurepermissionrequired??"User configuration permission is required."):this.renderNotice(this.messages.portalitemrequired??"Portal item is required.")}):this.renderNotice(this.messages.portalitemrequired??"Portal item is required.")}};v("arcgis-portal-classification-config",d);return d},"arcade","core/reactiveUtils",a,c,d)
@@ -1,4 +0,0 @@
1
- /*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
2
- See https://js.arcgis.com/5.0/esri/copyright.txt for details.
3
- v5.0.0-next.0 */
4
- import{a as m}from"./IPBJFU7J.js";import{d as h}from"./O6FBVWEQ.js";import{D as b,F as a,I as d,h as c,j as i,p as u}from"./HP6FLO6G.js";var g=c`.spacing-y{margin:var(--calcite-spacing-md) 0}.portal-classification-form-element-tooltip{display:flex;justify-content:space-between;align-items:center}`;function l(o,e){return o.uiElement===e}var n=class extends b{constructor(){super(...arguments),this.messages=h(),this.arcgisAttributeValueChange=u()}static{this.properties={validationMsg:16,attributeKey:1,attribute:0,value:0,renderingInfo:0}}static{this.styles=g}willUpdate(e){e.has("renderingInfo")&&(this.validationMsg=this._getValidationMessage())}_getValidationMessage(){if(this.renderingInfo.attributeValidationResult)return this.renderingInfo.attributeValidationResult;if(this.attribute.isRequired&&!this.value)return this.messages.requiredfield??"This is a required field."}renderCheckbox(){return l(this.attribute,"checkbox")?i`<calcite-label class="spacing-y" .for=${this.attributeKey} layout=inline><calcite-checkbox .checked=${this.value} id=${this.attributeKey??a} @calciteCheckboxChange=${e=>this.arcgisAttributeValueChange.emit({[this.attributeKey]:e.target.checked})} .required=${this.attribute.isRequired??!1} .status=${this.validationMsg?"invalid":"valid"}></calcite-checkbox>${this.attribute.label}</calcite-label>`:null}renderDateInput(){return l(this.attribute,"date")?i`<calcite-label .for=${this.attributeKey}>${this.attribute.label}<calcite-input-date-picker id=${this.attributeKey??a} .name=${this.attribute.label} @calciteInputDatePickerChange=${e=>this.isConnected&&this.arcgisAttributeValueChange.emit({[this.attributeKey]:e.target.value})} overlay-positioning=fixed .required=${this.attribute.isRequired} .status=${this.validationMsg?"invalid":"valid"} validation-icon=exclamation-mark-triangle .validationMessage=${this.validationMsg} .value=${this.value}></calcite-input-date-picker></calcite-label>`:null}renderTextInput(){if(!l(this.attribute,"text"))return null;let e=this.attribute.label,t=this.attribute.description;return i`<calcite-label .for=${this.attributeKey}><div class="portal-classification-form-element-tooltip">${e}${this.attribute.labelTooltip&&i`<div><calcite-icon scale=s icon=information .id=${`tooltip-button-${this.attribute.bannerLabel}`} text-label=${this.messages.information??"Information"??a}></calcite-icon><calcite-tooltip .referenceElement=${`tooltip-button-${this.attribute.bannerLabel}`} placement=right>${this.attribute.labelTooltip}</calcite-tooltip></div>`||""}</div><calcite-input-text id=${this.attributeKey??a} .label=${e} .name=${this.attributeKey} @calciteInputTextChange=${r=>this.arcgisAttributeValueChange.emit({[this.attributeKey]:r.target.value})} .placeholder=${t} .required=${this.attribute.isRequired} .status=${this.validationMsg?"invalid":"valid"} validation-icon=exclamation-mark-triangle .validationMessage=${this.validationMsg} .value=${this.value}></calcite-input-text></calcite-label>`}renderSingleSelect(){return l(this.attribute,"single-select")?i`<calcite-label .for=${this.attributeKey}>${this.attribute.label}<calcite-combobox selection-mode=single id=${this.attributeKey??a} .label=${this.attribute.label} .name=${this.attributeKey} @calciteComboboxChange=${e=>this.arcgisAttributeValueChange.emit({[this.attributeKey]:e.target.value})} .placeholder=${this.messages.selectanoption??"Select an option"} .required=${this.attribute.isRequired} .status=${this.validationMsg?"invalid":"valid"} overlay-positioning=fixed validation-icon=exclamation-mark-triangle .validationMessage=${this.validationMsg} .value=${this.value} data-testid=${`single-select-${this.attributeKey}`}>${this._renderSingleSelectComboboxOptions()}</calcite-combobox></calcite-label>`:null}_renderSingleSelectComboboxOptions(){if(!Array.isArray(this.renderingInfo.valueExpressionResult))return;let e=this.value;return m(this.renderingInfo.valueExpressionResult,t=>t.label,t=>i`<calcite-combobox-item .selected=${e===t.value} text-label=${t.label??a} .value=${t.value} data-testid=${`single-combobox-item-${t.value}`}></calcite-combobox-item>`)}_renderComboboxOptions(){if(!Array.isArray(this.renderingInfo.valueExpressionResult))return;let e=this.value;return this.renderingInfo.valueExpressionResult.map(t=>i`<calcite-combobox-item .selected=${e?.includes(t.value)} text-label=${t.label??a} .value=${t.value} data-testid=${`combobox-item-${t.value}`}></calcite-combobox-item>`)}renderMultiSelect(){return l(this.attribute,"multi-select")?i`<calcite-label .for=${this.attributeKey}>${this.attribute.label}<calcite-combobox id=${this.attributeKey??a} .label=${this.attribute.label} .name=${this.attributeKey} @calciteComboboxChange=${e=>{let t=e.target.value;this.arcgisAttributeValueChange.emit({[this.attributeKey]:t?Array.isArray(t)?t:[t]:void 0})}} .placeholder=${this.messages.selectoptions??"Select option(s)"} .required=${this.attribute.isRequired} .status=${this.validationMsg?"invalid":"valid"} validation-icon=exclamation-mark-triangle .validationMessage=${this.validationMsg} .value=${this.value}>${this._renderComboboxOptions()}</calcite-combobox></calcite-label>`:null}_renderGroupedComboboxOptions(){if(!this.renderingInfo.valueExpressionResult||Array.isArray(this.renderingInfo.valueExpressionResult))return;let e=this.value;return Object.entries(this.renderingInfo.valueExpressionResult).map(([t,r])=>i`<calcite-combobox-item .selected=${e?.includes(t)} text-label=${t??a} .value=${t}>${r.map(s=>i`<calcite-combobox-item .selected=${e?.includes(s.value)} text-label=${s.label??a} .value=${s.value} data-testid=${`grouped-combobox-item-${s.value}`}></calcite-combobox-item>`)}</calcite-combobox-item>`)}renderMultiGroupedSelectNested(){return l(this.attribute,"multi-grouped-select-nested")?i`<calcite-label .for=${this.attributeKey}>${this.attribute.label}<calcite-combobox id=${this.attributeKey??a} .label=${this.attribute.label} .name=${this.attributeKey} @calciteComboboxChange=${e=>{let t=e.target.value;this.arcgisAttributeValueChange.emit({[this.attributeKey]:t?Array.isArray(t)?t:[t]:void 0})}} .placeholder=${this.messages.selectoptions??"Select option(s)"} .required=${this.attribute.isRequired} .status=${this.validationMsg?"invalid":"valid"} validation-icon=exclamation-mark-triangle .validationMessage=${this.validationMsg} .value=${this.value}>${this._renderGroupedComboboxOptions()}</calcite-combobox></calcite-label>`:null}render(){switch(this.attribute.uiElement){case"checkbox":return this.renderCheckbox();case"date":return this.renderDateInput();case"multi-select":return this.renderMultiSelect();case"multi-grouped-select-nested":return this.renderMultiGroupedSelectNested();case"single-select":return this.renderSingleSelect();case"text":return this.renderTextInput();default:return i`<div>Not Implemented Yet.</div>`}}};d("arcgis-portal-classification-form-element",n);export{n as ArcgisPortalClassificationFormElement};