@arcgis/portal-components 5.2.0-next.57 → 5.2.0-next.59

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 (167) hide show
  1. package/dist/cdn/2H7Y7RJV.js +2 -0
  2. package/dist/cdn/32FQ7WJE.js +2 -0
  3. package/dist/cdn/3Q3EP3BN.js +2 -0
  4. package/dist/cdn/3VDVNPZ7.js +2 -0
  5. package/dist/cdn/3WH3ENZP.js +2 -0
  6. package/dist/cdn/4QA4AYHJ.js +3 -0
  7. package/dist/cdn/{LDCSQHZX.js → 55FL7WQV.js} +1 -1
  8. package/dist/cdn/5CT433EX.js +2 -0
  9. package/dist/cdn/6ROVXNLV.js +2 -0
  10. package/dist/cdn/7JQ6D224.js +2 -0
  11. package/dist/cdn/B36VBHAI.js +2 -0
  12. package/dist/cdn/CFBSBZSS.js +2 -0
  13. package/dist/cdn/CYEC77HO.js +2 -0
  14. package/dist/cdn/E6STCC7O.js +2 -0
  15. package/dist/cdn/EYTAC4Z4.js +2 -0
  16. package/dist/cdn/{NWIIOJEG.js → FGJNEKPQ.js} +1 -1
  17. package/dist/cdn/{TUQSWB7B.js → FPYIRCJO.js} +1 -1
  18. package/dist/cdn/{C4UBEDKI.js → G2NXASJO.js} +1 -1
  19. package/dist/cdn/{DNMB343K.js → GLDJPWRZ.js} +1 -1
  20. package/dist/cdn/HHA5STNZ.js +2 -0
  21. package/dist/cdn/HV3BRK66.js +2 -0
  22. package/dist/cdn/I5GDSNYE.js +2 -0
  23. package/dist/cdn/IRK4UW2F.js +2 -0
  24. package/dist/cdn/IVATGXII.js +2 -0
  25. package/dist/cdn/IXATTQKO.js +2 -0
  26. package/dist/cdn/JCIDQZ6X.js +2 -0
  27. package/dist/cdn/{R3VY2KZV.js → LDRIWXTO.js} +1 -1
  28. package/dist/cdn/{3PWVEX4V.js → ODJRHB2N.js} +1 -1
  29. package/dist/cdn/{EJZ55DVU.js → OK75ZZ2M.js} +1 -1
  30. package/dist/cdn/{DHMH2XFA.js → OTC37DGK.js} +1 -1
  31. package/dist/cdn/OYX64HG5.js +2 -0
  32. package/dist/cdn/QS3GXAIH.js +2 -0
  33. package/dist/cdn/RKT7WCDH.js +2 -0
  34. package/dist/cdn/RL7X3ACG.js +2 -0
  35. package/dist/cdn/RZPKVJMB.js +2 -0
  36. package/dist/cdn/S2JZ5KTI.js +2 -0
  37. package/dist/cdn/SJGVHRK2.js +2 -0
  38. package/dist/cdn/SUBBPVRW.js +2 -0
  39. package/dist/cdn/T7GD53BL.js +2 -0
  40. package/dist/cdn/{2VLAJOZX.js → TFFZ425X.js} +1 -1
  41. package/dist/cdn/UDTQ7U6L.js +2 -0
  42. package/dist/cdn/UPSYDUD6.js +2 -0
  43. package/dist/cdn/UUSJCAH5.js +2 -0
  44. package/dist/cdn/UXLENIDB.js +2 -0
  45. package/dist/cdn/UZCHLKLO.js +2 -0
  46. package/dist/cdn/VMQIDO4Z.js +2 -0
  47. package/dist/cdn/WBNJYBQD.js +2 -0
  48. package/dist/cdn/XSUXR4WJ.js +2 -0
  49. package/dist/cdn/Z2ZW4FY2.js +2 -0
  50. package/dist/cdn/ZP6MVFXR.js +2 -0
  51. package/dist/cdn/{U2QZZSPC.js → ZV4GLQQG.js} +1 -1
  52. package/dist/cdn/assets/portal-group-browser/t9n/messages.en.json +1 -0
  53. package/dist/cdn/assets/portal-group-card/t9n/messages.en.json +1 -1
  54. package/dist/cdn/index.js +1 -1
  55. package/dist/cdn/main.css +1 -1
  56. package/dist/chunks/fieldAddDelete.js +1 -1
  57. package/dist/chunks/groups.js +61 -7
  58. package/dist/chunks/groups2.js +8 -61
  59. package/dist/chunks/item.js +123 -29
  60. package/dist/chunks/item2.js +29 -123
  61. package/dist/chunks/loadClassificationData.js +1 -1
  62. package/dist/chunks/portal-browser.js +223 -0
  63. package/dist/chunks/portal.js +48 -40
  64. package/dist/chunks/portal2.js +50 -24
  65. package/dist/chunks/query.js +159 -0
  66. package/dist/chunks/request.js +87 -0
  67. package/dist/chunks/requests.js +4 -4
  68. package/dist/chunks/store.js +1 -5
  69. package/dist/chunks/string.js +19 -14
  70. package/dist/chunks/thumbnail.js +189 -0
  71. package/dist/chunks/ui.js +2 -3
  72. package/dist/chunks/url.js +17 -0
  73. package/dist/chunks/user.js +96 -13
  74. package/dist/chunks/user2.js +13 -178
  75. package/dist/chunks/utils.js +1 -1
  76. package/dist/components/arcgis-portal-account-switcher/customElement.js +1 -1
  77. package/dist/components/arcgis-portal-ai-assistant/customElement.js +3 -3
  78. package/dist/components/arcgis-portal-browser/customElement.d.ts +15 -7
  79. package/dist/components/arcgis-portal-browser/customElement.js +14 -196
  80. package/dist/components/arcgis-portal-browser/utils/store.d.ts +4 -4
  81. package/dist/components/arcgis-portal-browser/utils/types.d.ts +6 -0
  82. package/dist/components/arcgis-portal-browser-actions/customElement.d.ts +2 -4
  83. package/dist/components/arcgis-portal-browser-actions/customElement.js +12 -9
  84. package/dist/components/arcgis-portal-browser-filter/customElement.js +5 -5
  85. package/dist/components/arcgis-portal-browser-filter-date/customElement.d.ts +5 -5
  86. package/dist/components/arcgis-portal-browser-filter-date/customElement.js +13 -12
  87. package/dist/components/arcgis-portal-browser-filter-status/customElement.js +1 -1
  88. package/dist/components/arcgis-portal-browser-pagination/customElement.js +25 -27
  89. package/dist/components/arcgis-portal-browser-search/customElement.js +1 -4
  90. package/dist/components/arcgis-portal-browser-top-bar/customElement.d.ts +6 -0
  91. package/dist/components/arcgis-portal-browser-top-bar/customElement.js +15 -16
  92. package/dist/components/arcgis-portal-classification-config/customElement.js +1 -1
  93. package/dist/components/arcgis-portal-classification-favorite/customElement.js +1 -1
  94. package/dist/components/arcgis-portal-group-badges/customElement.d.ts +0 -1
  95. package/dist/components/arcgis-portal-group-badges/customElement.js +21 -20
  96. package/dist/components/arcgis-portal-group-browser/customElement.d.ts +301 -0
  97. package/dist/components/arcgis-portal-group-browser/customElement.js +494 -0
  98. package/dist/components/arcgis-portal-group-browser/index.d.ts +1 -0
  99. package/dist/components/arcgis-portal-group-browser/index.js +6 -0
  100. package/dist/components/arcgis-portal-group-browser/types.d.ts +193 -0
  101. package/dist/components/arcgis-portal-group-browser-preview/customElement.d.ts +225 -0
  102. package/dist/components/arcgis-portal-group-browser-preview/customElement.js +150 -0
  103. package/dist/components/arcgis-portal-group-browser-preview/index.d.ts +1 -0
  104. package/dist/components/arcgis-portal-group-browser-preview/index.js +12 -0
  105. package/dist/components/arcgis-portal-group-browser-preview-card/customElement.d.ts +82 -0
  106. package/dist/components/arcgis-portal-group-browser-preview-card/customElement.js +92 -0
  107. package/dist/components/arcgis-portal-group-browser-preview-card/index.d.ts +1 -0
  108. package/dist/components/arcgis-portal-group-browser-preview-card/index.js +6 -0
  109. package/dist/components/arcgis-portal-group-card/customElement.d.ts +3 -1
  110. package/dist/components/arcgis-portal-group-card/customElement.js +71 -91
  111. package/dist/components/arcgis-portal-group-card/index.js +3 -3
  112. package/dist/components/arcgis-portal-mentionable-text-area/customElement.js +40 -39
  113. package/dist/components/arcgis-portal-navigation/customElement.js +418 -411
  114. package/dist/components/arcgis-portal-navigation/index.js +1 -1
  115. package/dist/components/arcgis-portal-replacement-item-redirect/customElement.js +68 -249
  116. package/dist/components/arcgis-portal-user-avatar/customElement.js +2 -2
  117. package/dist/components/arcgis-portal-user-popup/customElement.d.ts +5 -2
  118. package/dist/components/arcgis-portal-user-popup/customElement.js +4 -3
  119. package/dist/components/portal-group-browser-filters/customElement.js +104 -0
  120. package/dist/components/portal-group-browser-filters/index.js +8 -0
  121. package/dist/components/portal-group-browser-pagination/customElement.js +13 -0
  122. package/dist/components/portal-group-browser-pagination/index.js +2 -0
  123. package/dist/components/portal-group-browser-sort/customElement.js +16 -0
  124. package/dist/components/portal-group-browser-sort/index.js +2 -0
  125. package/dist/docs/api.json +1 -1
  126. package/dist/docs/docs.json +1 -1
  127. package/dist/docs/vscode.html-custom-data.json +1 -1
  128. package/dist/docs/web-types.json +1 -1
  129. package/dist/index.d.ts +36 -0
  130. package/dist/loader.js +5 -2
  131. package/dist/types/group.d.ts +6 -8
  132. package/dist/types/item.d.ts +1 -1
  133. package/dist/types/lumina.d.ts +32 -0
  134. package/dist/types/preact.d.ts +35 -0
  135. package/dist/types/react.d.ts +38 -0
  136. package/dist/types/search.d.ts +2 -2
  137. package/dist/types/stencil.d.ts +32 -0
  138. package/dist/types/user.d.ts +2 -2
  139. package/package.json +4 -4
  140. package/dist/cdn/2EJG4DOC.js +0 -2
  141. package/dist/cdn/2JCFEF3J.js +0 -2
  142. package/dist/cdn/2WEWH5G3.js +0 -2
  143. package/dist/cdn/6AGZRMJC.js +0 -2
  144. package/dist/cdn/6D3PU4ZT.js +0 -2
  145. package/dist/cdn/7QXIBQV7.js +0 -2
  146. package/dist/cdn/BJTJP57C.js +0 -2
  147. package/dist/cdn/BZRM2V6V.js +0 -2
  148. package/dist/cdn/C2DREZD4.js +0 -2
  149. package/dist/cdn/CSH3WCYD.js +0 -2
  150. package/dist/cdn/GKBK32VH.js +0 -2
  151. package/dist/cdn/GYFQDPCN.js +0 -2
  152. package/dist/cdn/J46I5HEQ.js +0 -2
  153. package/dist/cdn/JJ7P5JJ3.js +0 -2
  154. package/dist/cdn/JZ2ZI5WO.js +0 -2
  155. package/dist/cdn/LTQA5JRV.js +0 -2
  156. package/dist/cdn/M5MGOBU3.js +0 -2
  157. package/dist/cdn/M6X5KCWL.js +0 -2
  158. package/dist/cdn/OBVMQ64S.js +0 -2
  159. package/dist/cdn/OGC5YU6V.js +0 -2
  160. package/dist/cdn/OUN473QW.js +0 -2
  161. package/dist/cdn/QPFPNUHH.js +0 -2
  162. package/dist/cdn/R6SSAPLB.js +0 -3
  163. package/dist/cdn/SJDQS32I.js +0 -2
  164. package/dist/cdn/UQWELJR5.js +0 -2
  165. package/dist/cdn/Y4YNN6DS.js +0 -2
  166. package/dist/cdn/Y5CRBUVL.js +0 -2
  167. /package/dist/cdn/{AWIVXH7M.js → 5KDFY5KE.js} +0 -0
@@ -0,0 +1,494 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ import { c as G } from "../../chunks/runtime.js";
3
+ import { css as S, html as u } from "lit";
4
+ import { keyed as $ } from "lit/directives/keyed.js";
5
+ import { LitElement as B, createEvent as p, nothing as g, safeClassMap as O } from "@arcgis/lumina";
6
+ import { u as C } from "../../chunks/useT9n.js";
7
+ import { a as R } from "../../chunks/functionalities.js";
8
+ import { c as U, r as f } from "../../chunks/string.js";
9
+ import "../arcgis-portal-browser-search/customElement.js";
10
+ import "../arcgis-portal-browser-top-bar/customElement.js";
11
+ import { c as x, a as W } from "../../chunks/portal-browser.js";
12
+ import "../arcgis-portal-group-card/customElement.js";
13
+ import "../arcgis-portal-group-browser-preview/customElement.js";
14
+ import { c as P } from "../../chunks/store.js";
15
+ import { i as A } from "../../chunks/query.js";
16
+ import k from "@arcgis/core/portal/PortalGroup.js";
17
+ import { r as E } from "../../chunks/request.js";
18
+ import { g as T } from "../../chunks/portal.js";
19
+ import { b as w } from "../../chunks/ui.js";
20
+ import { watch as _ } from "@arcgis/core/core/reactiveUtils.js";
21
+ import { PortalGroupBrowserSort as M } from "../portal-group-browser-sort/customElement.js";
22
+ import { PortalGroupBrowserPagination as L } from "../portal-group-browser-pagination/customElement.js";
23
+ import { PortalGroupBrowserFilters as q } from "../portal-group-browser-filters/customElement.js";
24
+ const z = S`:host{position:relative;background-color:var(--calcite-color-background);display:flex;flex-direction:column;height:100%;min-height:0;overflow-y:auto;overflow-x:hidden;--portal-group-browser-max-width: var(--group-browser-max-width, 100%);--portal-group-browser-pane-width: 18.75rem;--portal-group-browser-pane-z-index: 11;container-type:inline-size;container-name:portal-group-browser}arcgis-portal-browser{--arcgis-browser-max-width: var(--portal-group-browser-max-width);--arcgis-browser-pane-width: var(--portal-group-browser-pane-width);--arcgis-browser-pane-z-index: var(--portal-group-browser-pane-z-index)}.filters-title__heading{color:var(--calcite-color-text-1);font-size:var(--calcite-font-size-0);font-weight:var(--calcite-font-weight-medium);line-height:1.2;margin:0;padding:1rem .5rem}.groups-by-user__label{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.special-groups-settings-option{display:inline-flex;align-items:center;gap:.25rem}.special-groups-settings-icon{display:inline-flex;align-items:center}.group-browser__results{display:grid;gap:.5rem}.group-browser__results--compact{gap:0}.group-browser__result-card{margin:0}@container portal-group-browser (max-width: 640px){:host{--portal-group-browser-pane-width: 100%}}.empty-text-slot{width:100%;height:100%;display:flex;justify-content:center}.empty-text-slot__default{@apply max-w-lg mx-auto px-6 pb-16;max-width:32rem;margin-inline:auto;padding-inline:1.5rem;padding-bottom:4rem;margin-top:min(8rem,30vh)}`;
25
+ async function Q(s, e) {
26
+ const t = `${T(s)}community/groups`, r = D(e), o = H(e), i = !!e.searchUser?.trim();
27
+ if (!r.trim() && !i)
28
+ return {
29
+ nextStart: -1,
30
+ num: 0,
31
+ q: r,
32
+ queryParams: { ...o, q: r },
33
+ results: [],
34
+ start: 0,
35
+ total: 0
36
+ };
37
+ const l = { ...o, q: r }, n = await E({
38
+ url: t,
39
+ portal: s,
40
+ params: l
41
+ }), c = n.results.map((a) => {
42
+ const h = k.fromJSON(a);
43
+ return h.portal = s, h;
44
+ });
45
+ return {
46
+ ...n,
47
+ q: r,
48
+ queryParams: l,
49
+ results: c
50
+ };
51
+ }
52
+ const I = ["created", "modified", "owner", "title"];
53
+ function V(s) {
54
+ return !!s && I.includes(s);
55
+ }
56
+ function D(s) {
57
+ const e = [], t = s.baseQuery?.trim();
58
+ t && e.push(`(${t})`);
59
+ const r = s.searchTerm?.trim();
60
+ r && e.push(`(${U(r)})`);
61
+ for (const o of Object.values(s.filters ?? {}))
62
+ typeof o.value == "string" && o.value.trim() && e.push(`(${o.value.trim()})`), typeof o.additionalParams == "string" && o.additionalParams.trim() && e.push(`(${o.additionalParams.trim()})`);
63
+ return e.join(" AND ");
64
+ }
65
+ function H(s) {
66
+ return {
67
+ num: s.num,
68
+ start: s.start,
69
+ ...s.searchUser ? { searchUserAccess: "groupMember", searchUserName: s.searchUser } : {},
70
+ ...s.sortField === "relevance" || !V(s.sortField) ? {} : {
71
+ sortField: s.sortField,
72
+ sortOrder: s.sortOrder
73
+ }
74
+ };
75
+ }
76
+ function v(s, e = "desc") {
77
+ switch (s) {
78
+ case "owner":
79
+ case "title":
80
+ return "asc";
81
+ case "created":
82
+ case "modified":
83
+ case "relevance":
84
+ return "desc";
85
+ default:
86
+ return e;
87
+ }
88
+ }
89
+ function N(s) {
90
+ let e, t, r;
91
+ const o = () => {
92
+ e?.();
93
+ const a = _(
94
+ () => s.getStore().width,
95
+ () => {
96
+ i();
97
+ }
98
+ );
99
+ e = () => {
100
+ a.remove();
101
+ };
102
+ }, i = () => {
103
+ const a = s.getStore(), h = a.width || s.getHostWidth() || s.getViewportWidth(), d = Math.min(h, s.getViewportWidth());
104
+ a.width !== d && (a.width = d);
105
+ const m = d > w.md ? "large" : "small";
106
+ s.getResponsiveFormFactor() === "large" && m === "small" && (a.panel = !1, a.filtersExpanded = !1), s.getResponsiveFormFactor() === "small" && m === "large" && (a.panel = !1, a.filtersExpanded = !0), s.setResponsiveFormFactor(m);
107
+ };
108
+ return {
109
+ connect: () => {
110
+ typeof ResizeObserver < "u" && (t = new ResizeObserver((a) => {
111
+ const h = a[0]?.contentRect?.width ?? 0;
112
+ if (h > 0) {
113
+ const d = Math.round(h);
114
+ s.setHostWidth(d), s.getStore().width = d, i();
115
+ }
116
+ }), t.observe(s.el)), o(), i();
117
+ },
118
+ disconnect: () => {
119
+ r !== void 0 && (cancelAnimationFrame(r), r = void 0), e?.(), t?.disconnect(), t = void 0;
120
+ },
121
+ refreshStoreWatcher: o,
122
+ handleWindowResize: () => {
123
+ if (s.setViewportWidth(window.innerWidth), !t) {
124
+ if (r !== void 0)
125
+ return;
126
+ r = requestAnimationFrame(() => {
127
+ r = void 0;
128
+ const a = Math.round(
129
+ s.el.getBoundingClientRect().width || s.getHostWidth() || s.getViewportWidth()
130
+ ), h = Math.min(a, s.getViewportWidth()), d = s.getStore();
131
+ d.width !== h && (d.width = h), i();
132
+ });
133
+ return;
134
+ }
135
+ i();
136
+ },
137
+ updateResponsiveLayout: i
138
+ };
139
+ }
140
+ const b = ["title", "relevance", "modified"], F = {
141
+ queryParams: void 0,
142
+ nextStart: -1,
143
+ results: [],
144
+ start: -1,
145
+ num: 0,
146
+ total: 0
147
+ }, y = [
148
+ "openData",
149
+ "sharedUpdate",
150
+ "distributed",
151
+ "admin",
152
+ "settings"
153
+ ];
154
+ class j extends B {
155
+ constructor() {
156
+ super(...arguments), this._messages = C({ name: "portal-group-browser", blocking: !0 }), this.responsiveLayoutController = N({
157
+ el: this.el,
158
+ getStore: () => this.store,
159
+ getViewportWidth: () => this.viewportWidth,
160
+ setViewportWidth: (e) => {
161
+ this.viewportWidth = e;
162
+ },
163
+ getHostWidth: () => this.hostWidth,
164
+ setHostWidth: (e) => {
165
+ this.hostWidth = e;
166
+ },
167
+ getResponsiveFormFactor: () => this.responsiveFormFactor,
168
+ setResponsiveFormFactor: (e) => {
169
+ this.responsiveFormFactor = e;
170
+ }
171
+ }), this.restoreFocusTarget = null, this.handleBrowserFilterClear = () => {
172
+ this.clearFilters();
173
+ }, this.handleBrowserFilterRemove = (e) => {
174
+ const t = e.detail;
175
+ t && this.removeFilter(t);
176
+ }, this.selectedOwner = null, this.selectedMembership = null, this.selectedMemberOrg = null, this.selectedSpecialGroup = null, this.selectedAccess = null, this.selectedGroups = [], this.previewGroup = null, this.queryResponse = F, this.specialGroupOptions = y, this.responsiveFormFactor = "large", this.viewportWidth = typeof window > "u" ? w.lg : window.innerWidth, this.hostWidth = 0, this.store = P({
177
+ type: "group-browser",
178
+ width: window?.innerWidth ?? w.lg,
179
+ hiddenFilters: [],
180
+ filtersEmpty: !1,
181
+ topbarEmpty: !1,
182
+ sortEmpty: !1,
183
+ filtersExpanded: !1,
184
+ panel: !1,
185
+ filters: {}
186
+ }), this.filters = {}, this.loading = !1, this.formFactor = "large", this.height = "full", this.searchTerm = "", this.cards = {}, this.preview = "top", this.q = "", this.num = 60, this.sort = {
187
+ enabled: !0,
188
+ props: {
189
+ options: b
190
+ }
191
+ }, this.selection = "none", this.alwaysShowSelection = !1, this.hidePreviewFooter = !1, this.hidePreviewBadges = !1, this.hasIndoorsSpaces = !1, this.arcgisGroupBrowserLoading = p(), this.arcgisGroupBrowserPreview = p(), this.arcgisGroupBrowserSelect = p(), this.arcgisGroupBrowserSublayerPreview = p(), this.arcgisGroupBrowserUpdate = p(), this.arcgisGroupBrowserInternalUIAction = p(), this.arcgisGroupBrowserUserFilterChange = p(), this.arcgisAriaUpdate = p();
192
+ }
193
+ static {
194
+ this.properties = { selectedGroupsByUser: 16, selectedOwner: 16, selectedMembership: 16, selectedMemberOrg: 16, selectedSpecialGroup: 16, selectedAccess: 16, selectedGroups: 16, previewGroup: 16, queryResponse: 16, specialGroupOptions: 16, sortField: 16, sortOrder: 16, responsiveFormFactor: 16, viewportWidth: 16, hostWidth: 16, store: 0, filters: 0, loading: 5, formFactor: 1, height: 3, searchTerm: 1, selected: 0, cards: 0, preview: 1, q: 1, portal: 0, num: 9, sort: 0, fetch: 0, preflight: 0, searchUser: 1, selection: 1, alwaysShowSelection: 5, hidePreviewFooter: 5, hidePreviewBadges: 5, hasIndoorsSpaces: 5 };
195
+ }
196
+ static {
197
+ this.styles = z;
198
+ }
199
+ get currentUsername() {
200
+ return this.portal.user?.username ?? "";
201
+ }
202
+ async refresh() {
203
+ await this.fetchGroups();
204
+ }
205
+ connectedCallback() {
206
+ super.connectedCallback(), window.addEventListener("resize", this.responsiveLayoutController.handleWindowResize), this.el.addEventListener("arcgisBrowserFilterClear", this.handleBrowserFilterClear), this.el.addEventListener("arcgisBrowserFilterRemove", this.handleBrowserFilterRemove), this.responsiveLayoutController.connect(), this.syncSortFromConfig(), this.selectedGroups = this.selected || [], this.syncSelectionsFromConfig(), this.updateSpecialGroupOptions(), this.fetchGroups();
207
+ }
208
+ updated(e) {
209
+ e.has("store") && (this.responsiveLayoutController.refreshStoreWatcher(), this.responsiveLayoutController.updateResponsiveLayout()), e.has("selected") && (this.selectedGroups = this.selected || []);
210
+ const t = e.get("num");
211
+ t !== void 0 && t !== this.num && this.fetchGroups(), (e.has("portal") || e.has("hasIndoorsSpaces")) && this.updateSpecialGroupOptions(), e.has("sort") && this.syncSortFromConfig();
212
+ }
213
+ disconnectedCallback() {
214
+ this.responsiveLayoutController.disconnect(), window.removeEventListener("resize", this.responsiveLayoutController.handleWindowResize), this.el.removeEventListener("arcgisBrowserFilterClear", this.handleBrowserFilterClear), this.el.removeEventListener("arcgisBrowserFilterRemove", this.handleBrowserFilterRemove), super.disconnectedCallback();
215
+ }
216
+ syncSelectionsFromConfig() {
217
+ this.selectedGroupsByUser = this.filters.groupsByUser?.props?.selectedUsername ?? this.currentUsername, this.selectedOwner = this.filters.owner?.props?.owner || null, this.selectedMembership = this.filters.membership?.props?.membership || null, this.selectedMemberOrg = this.filters.memberOrg?.props?.memberOrg || null, this.selectedSpecialGroup = this.filters.specialGroups?.props?.specialGroup || null, this.selectedAccess = this.filters.access?.props?.access || null;
218
+ }
219
+ resetSelectionByFilterId(e) {
220
+ switch (e) {
221
+ case "groupsByUser":
222
+ this.selectedGroupsByUser = this.filters.groupsByUser?.props?.selectedUsername ?? this.currentUsername;
223
+ break;
224
+ case "owner":
225
+ this.selectedOwner = null;
226
+ break;
227
+ case "membership":
228
+ this.selectedMembership = null;
229
+ break;
230
+ case "memberOrg":
231
+ this.selectedMemberOrg = null;
232
+ break;
233
+ case "specialGroups":
234
+ this.selectedSpecialGroup = null;
235
+ break;
236
+ case "access":
237
+ this.selectedAccess = null;
238
+ break;
239
+ }
240
+ }
241
+ resetAllFilterSelections() {
242
+ this.selectedGroupsByUser = this.filters.groupsByUser?.props?.selectedUsername ?? this.currentUsername, this.selectedOwner = null, this.selectedMembership = null, this.selectedMemberOrg = null, this.selectedSpecialGroup = null, this.selectedAccess = null;
243
+ }
244
+ publishFilterStateChange() {
245
+ this.requestUpdate();
246
+ }
247
+ syncSortFromConfig() {
248
+ const e = this.sort, t = e.props?.options ?? b;
249
+ if (!e.enabled) {
250
+ this.sortField = void 0, this.sortOrder = void 0;
251
+ return;
252
+ }
253
+ if (!t.length) {
254
+ this.sortField = void 0, this.sortOrder = void 0;
255
+ return;
256
+ }
257
+ const r = e.props?.field, o = r && t.includes(r) ? r : t[0];
258
+ this.sortField = o, this.sortOrder = e.props?.order ?? v(o, this.sortOrder);
259
+ }
260
+ async updateSpecialGroupOptions() {
261
+ if (!this.portal) {
262
+ this.specialGroupOptions = [];
263
+ return;
264
+ }
265
+ let e = "";
266
+ try {
267
+ e = await A(this.portal);
268
+ } catch {
269
+ e = "";
270
+ }
271
+ this.specialGroupOptions = y.filter((t) => !(t === "openData" && this.portal.isPortal || // https://devtopia.esri.com/webgis/arcgis-portal-app/issues/37831
272
+ t === "distributed" && this.hasIndoorsSpaces || // https://devtopia.esri.com/WebGIS/arcgis-portal-app/issues/45449 orgs with no settings
273
+ t === "settings" && !e)), this.selectedSpecialGroup && !this.specialGroupOptions.includes(this.selectedSpecialGroup) && this.removeFilter("specialGroups");
274
+ }
275
+ async fetchGroups() {
276
+ this.loading = !0, this.arcgisGroupBrowserLoading.emit();
277
+ const e = this.createQuery();
278
+ await this.fetchAndEmit(e, this.searchTerm);
279
+ }
280
+ removeFilter(e) {
281
+ const t = this.store.filters[e];
282
+ t && (this.store.filters = {
283
+ ...this.store.filters,
284
+ [e]: x(t)
285
+ }, this.resetSelectionByFilterId(e), this.publishFilterStateChange(), this.fetchGroups());
286
+ }
287
+ clearFilters() {
288
+ this.store.filters = W(this.store.filters, {
289
+ hiddenFilterIds: this.store.hiddenFilters
290
+ }), this.resetAllFilterSelections(), this.publishFilterStateChange(), this.fetchGroups();
291
+ }
292
+ isFilterActive(e) {
293
+ const t = this.store.filters[e];
294
+ return t ? !!(t.value || "additionalParams" in t && t.additionalParams) : !1;
295
+ }
296
+ setFilterSelection(e) {
297
+ switch (e.kind) {
298
+ case "owner":
299
+ this.selectedOwner = e.value;
300
+ break;
301
+ case "membership":
302
+ this.selectedMembership = e.value;
303
+ break;
304
+ case "memberOrg":
305
+ this.selectedMemberOrg = e.value;
306
+ break;
307
+ case "access":
308
+ this.selectedAccess = e.value;
309
+ break;
310
+ case "groupsByUser":
311
+ this.selectedGroupsByUser = e.value;
312
+ break;
313
+ case "specialGroups":
314
+ this.selectedSpecialGroup = e.value;
315
+ break;
316
+ default:
317
+ R(e);
318
+ }
319
+ }
320
+ selectGroup(e) {
321
+ this.isSelected(e) || (this.selectedGroups = [...this.selectedGroups, e]);
322
+ }
323
+ deselectGroup(e) {
324
+ this.selectedGroups = this.selectedGroups.filter(({ id: t }) => t !== e.id);
325
+ }
326
+ isSelected(e) {
327
+ return this.selectedGroups.some(({ id: t }) => e.id === t);
328
+ }
329
+ handleGroupCardSelect(e) {
330
+ const { selected: t, group: r } = e.detail;
331
+ switch (this.selection) {
332
+ case "single":
333
+ this.selectedGroups = [r];
334
+ break;
335
+ case "multiple":
336
+ t ? this.selectGroup(r) : this.deselectGroup(r);
337
+ break;
338
+ default:
339
+ return;
340
+ }
341
+ this.arcgisGroupBrowserSelect.emit(this.selectedGroups);
342
+ }
343
+ closePreview(e = {}) {
344
+ this.store.preview = "", this.previewGroup = null, this.arcgisGroupBrowserPreview.emit(null), this.arcgisGroupBrowserSublayerPreview.emit(null), e.restoreFocus && this.restorePreviewFocus();
345
+ }
346
+ async restorePreviewFocus() {
347
+ const e = this.restoreFocusTarget;
348
+ if (e) {
349
+ if (e.restoreFocus) {
350
+ await e.restoreFocus();
351
+ return;
352
+ }
353
+ if (e.setFocus) {
354
+ await e.setFocus();
355
+ return;
356
+ }
357
+ e.focus?.();
358
+ }
359
+ }
360
+ async handleSortFieldChange(e) {
361
+ this.sortField = e, this.sortOrder = v(e, this.sortOrder), this.loading = !0, this.arcgisGroupBrowserLoading.emit();
362
+ const t = this.createQuery({ start: 1, total: 0 });
363
+ await this.fetchAndEmit(t, this.searchTerm);
364
+ }
365
+ async handleSortOrderChange(e) {
366
+ this.sortOrder = e, this.loading = !0, this.arcgisGroupBrowserLoading.emit();
367
+ const t = this.createQuery({ start: 1, total: 0 });
368
+ await this.fetchAndEmit(t, this.searchTerm);
369
+ }
370
+ emitUpdate(e, t) {
371
+ const r = e.queryParams;
372
+ this.arcgisGroupBrowserUpdate.emit({
373
+ queryResponse: e,
374
+ sortField: r?.sortField,
375
+ sortOrder: r?.sortOrder,
376
+ selectedGroups: this.selectedGroups,
377
+ filters: { ...this.store.filters },
378
+ searchTerm: t
379
+ });
380
+ }
381
+ async queryGroups(e) {
382
+ return await (this.fetch?.(e) ?? Q(this.portal, e));
383
+ }
384
+ async fetchAndEmit(e, t) {
385
+ this.preflight && (e = await this.preflight(e));
386
+ const r = await this.queryGroups(e);
387
+ this.queryResponse = r, this.loading = !1, this.emitUpdate(r, t);
388
+ }
389
+ createQuery(e = {}) {
390
+ return {
391
+ filters: this.store.filters,
392
+ searchUser: this.searchUser,
393
+ searchTerm: e.searchTerm ?? this.searchTerm,
394
+ baseQuery: this.q,
395
+ sortField: this.sortField,
396
+ sortOrder: this.sortOrder,
397
+ start: e.start ?? 1,
398
+ num: e.num ?? this.num,
399
+ total: e.total ?? this.queryResponse.total
400
+ };
401
+ }
402
+ async handleSearch(e) {
403
+ this.searchTerm = e, this.loading = !0, this.arcgisGroupBrowserLoading.emit();
404
+ const t = this.createQuery({ searchTerm: e });
405
+ await this.fetchAndEmit(t, e);
406
+ }
407
+ async handlePage({ num: e, start: t, total: r }) {
408
+ this.loading = !0, this.arcgisGroupBrowserLoading.emit();
409
+ const o = this.createQuery({ start: t, num: e, total: r });
410
+ await this.fetchAndEmit(o, this.searchTerm);
411
+ }
412
+ getBrowserResponseFromQueryResponse(e) {
413
+ const { nextStart: t, num: r, queryParams: o, results: i, start: l, total: n } = e ?? F;
414
+ return {
415
+ nextStart: t ?? -1,
416
+ num: r ?? o?.num ?? 0,
417
+ results: i,
418
+ start: l ?? o?.start ?? 1,
419
+ total: n
420
+ };
421
+ }
422
+ async formatRange({ start: e, end: t, total: r }) {
423
+ if (this._messages._lang === "en")
424
+ return [`${e}-${t} of ${r}`, `${e}-${t} of ${r} group${r === "1" ? "" : "s"}`];
425
+ const i = this._messages.browser, l = { start: e, end: t, total: r }, n = f(i.pageRange, l), c = f(i.pageRangeAria, l);
426
+ return [n, c];
427
+ }
428
+ getPreviewFooterActionsEmpty() {
429
+ return !this.el?.querySelector('[slot="preview-footer-action"]');
430
+ }
431
+ renderTopBar() {
432
+ return u`<arcgis-portal-browser-top-bar slot=top-bar .store=${this.store} @arcgisBrowserFilterClear=${() => this.clearFilters()} @arcgisBrowserFilterRemove=${(e) => {
433
+ this.removeFilter(e.detail);
434
+ }}><arcgis-portal-browser-search slot=search .store=${this.store} .term=${this.searchTerm} @arcgisBrowserSearch=${(e) => {
435
+ this.handleSearch(e.detail);
436
+ }}></arcgis-portal-browser-search></arcgis-portal-browser-top-bar>`;
437
+ }
438
+ renderEmptyTextSlot(e, t) {
439
+ return u`<div slot=${e ?? g} class="empty-text-slot"><slot name=${e ?? g}><p class="empty-text-slot__default">${t}</p></slot></div>`;
440
+ }
441
+ renderContent() {
442
+ const e = new Set(this.selectedGroups.map((o) => o.id)), t = this.queryResponse.results.map((o) => {
443
+ const i = this.cards.group?.(o) ?? {}, l = i.view || this.store.view || "list";
444
+ return {
445
+ group: o,
446
+ cardProps: i,
447
+ view: l
448
+ };
449
+ }), r = t.length > 0 && t.every(({ view: o }) => o === "compact");
450
+ return u`<div class=${O({ "group-browser__results": !0, "group-browser__results--compact": r })} .part=${"results"}>${t.map(({ group: o, cardProps: i, view: l }) => {
451
+ const n = o.id;
452
+ return $(n, u`<arcgis-portal-group-card class="group-browser__result-card" .portal=${this.portal} .group=${o} .user=${i.user} .indeterminate=${i.indeterminate} .view=${l} .selection=${this.selection} .selected=${e.has(n)} .preview=${i.preview ?? this.preview} .previewed=${i.previewed ?? this.store.preview === n} .name=${i.name} .showSummary=${i.showSummary ?? !0} .showBadges=${i.showBadges ?? !0} .showDateUpdated=${i.showDateUpdated ?? !0} .showDateCreated=${i.showDateCreated ?? !1} .showViewableBy=${i.showViewableBy ?? !0} .showOwner=${i.showOwner ?? !0} .link=${i.link} .linkHandler=${i.linkHandler} .newTab=${i.newTab ?? !1} .disabled=${i.disabled ?? !1} @arcgisGroupCardSelect=${(c) => {
453
+ this.handleGroupCardSelect(c);
454
+ }} @arcgisGroupBrowserCardPreview=${(c) => {
455
+ const a = c.detail;
456
+ if (this.store.filtersExpanded = !1, !a || this.store.preview === a.id) {
457
+ this.closePreview();
458
+ return;
459
+ }
460
+ this.restoreFocusTarget = c.currentTarget, this.store.preview = a.id, this.previewGroup = a, this.arcgisGroupBrowserPreview.emit(a);
461
+ }}></arcgis-portal-group-card>`);
462
+ })}</div>`;
463
+ }
464
+ render() {
465
+ const e = this.responsiveFormFactor === "small" ? "small" : this.formFactor;
466
+ return u`<arcgis-portal-browser .store=${this.store} .response=${this.getBrowserResponseFromQueryResponse(this.queryResponse)} .loading=${this.loading} .formFactor=${e} .height=${this.height} .searchTerm=${this.searchTerm} .rangeFormatter=${this.formatRange} .selected=${this.selectedGroups} .alwaysShowSelection=${this.alwaysShowSelection} @arcgisAriaUpdate=${(t) => {
467
+ this.arcgisAriaUpdate.emit(t.detail);
468
+ }}><slot name=top-bar slot=top-bar>${this.renderTopBar()}</slot><slot name=content-start slot=content-start></slot><slot name=selection slot=selection></slot><slot name=actions slot=actions></slot><slot name=view slot=view></slot>${M({ slot: "sort", sort: this.sort, formFactor: e, sortField: this.sortField, sortOrder: this.sortOrder, onSortFieldChange: (t) => {
469
+ this.handleSortFieldChange(t);
470
+ }, onSortOrderChange: (t) => {
471
+ this.handleSortOrderChange(t);
472
+ } })}<slot name=content slot=content>${this.renderContent()}</slot>${L({ slot: "pagination", store: this.store, total: this.queryResponse.total, start: this.queryResponse?.queryParams?.start ?? 1, num: this.queryResponse?.queryParams?.num ?? this.num, onPage: (t) => {
473
+ this.handlePage(t);
474
+ } })}<slot name=content-end slot=content-end></slot><slot name=preview slot=preview>${this.previewGroup && u`<arcgis-portal-group-browser-preview .group=${this.previewGroup} .portal=${this.portal} .user=${this.portal.user ?? void 0} .showBadges=${!this.hidePreviewBadges} .hidePreviewFooter=${this.hidePreviewFooter} .currentResponse=${this.queryResponse} .previewFooterActionsEmpty=${this.getPreviewFooterActionsEmpty()} @arcgisGroupBrowserInternalUIAction=${(t) => {
475
+ this.arcgisGroupBrowserInternalUIAction.emit(t.detail);
476
+ }} @arcgisGroupBrowserPreviewClose=${() => {
477
+ this.closePreview({ restoreFocus: !0 });
478
+ }} @arcgisPreviewClose=${() => {
479
+ this.closePreview({ restoreFocus: !0 });
480
+ }}><slot name=preview-footer-action slot=footer-action></slot></arcgis-portal-group-browser-preview>` || ""}</slot>${this.renderEmptyTextSlot("no-results", this._messages.content.noResults)}${this.renderEmptyTextSlot("no-content", this._messages.content.noContent)}<slot name=scroll-end slot=scroll-end></slot>${q({ slot: "filters", filters: this.filters, messages: this._messages, store: this.store, portal: this.portal, hasIndoorsSpaces: this.hasIndoorsSpaces, selectedGroupsByUser: this.selectedGroupsByUser, selectedOwner: this.selectedOwner, selectedMembership: this.selectedMembership, selectedMemberOrg: this.selectedMemberOrg, selectedSpecialGroup: this.selectedSpecialGroup, specialGroupOptions: this.specialGroupOptions, selectedAccess: this.selectedAccess, isFilterActive: (t) => this.isFilterActive(t), handleSelect: (t) => {
481
+ this.setFilterSelection(t);
482
+ }, handleUserFilterChange: (t) => {
483
+ this.arcgisGroupBrowserUserFilterChange.emit(t);
484
+ }, handleRemove: (t) => {
485
+ this.removeFilter(t);
486
+ }, handleUpsert: (t) => {
487
+ this.store.filters = { ...this.store.filters, [t.id]: t }, this.publishFilterStateChange(), this.fetchGroups();
488
+ } })}</arcgis-portal-browser>`;
489
+ }
490
+ }
491
+ G("arcgis-portal-group-browser", j);
492
+ export {
493
+ j as ArcgisPortalGroupBrowser
494
+ };
@@ -0,0 +1 @@
1
+ export * from "./customElement.js";
@@ -0,0 +1,6 @@
1
+ import "../arcgis-portal-browser-top-bar/index.js";
2
+ import "../arcgis-portal-browser-search/index.js";
3
+ import "../arcgis-portal-group-card/index.js";
4
+ import "../arcgis-portal-browser/index.js";
5
+ import "../arcgis-portal-group-browser-preview/index.js";
6
+ export * from "./customElement.js";