@arcgis/portal-components 5.2.0-next.65 → 5.2.0-next.67

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 (120) hide show
  1. package/dist/cdn/2BUE3JLM.js +2 -0
  2. package/dist/cdn/{Y7FCEDRU.js → 2OU5PLGU.js} +1 -1
  3. package/dist/cdn/2WI5FBDF.js +2 -0
  4. package/dist/cdn/3VHBMKYX.js +2 -0
  5. package/dist/cdn/64DIXKV3.js +2 -0
  6. package/dist/cdn/6KVA4AKM.js +2 -0
  7. package/dist/cdn/6TO2BYXU.js +2 -0
  8. package/dist/cdn/AR6YIWRX.js +2 -0
  9. package/dist/cdn/CYCKQHLO.js +2 -0
  10. package/dist/cdn/{ZV4GLQQG.js → D4VYYWA6.js} +1 -1
  11. package/dist/cdn/DEOAKHYN.js +2 -0
  12. package/dist/cdn/FKVT4PNP.js +2 -0
  13. package/dist/cdn/GC6YLNZF.js +2 -0
  14. package/dist/cdn/{VD6VGWCQ.js → JMEXULSL.js} +1 -1
  15. package/dist/cdn/KTBQ26TD.js +2 -0
  16. package/dist/cdn/LRADZ46B.js +2 -0
  17. package/dist/cdn/NWT7EITA.js +2 -0
  18. package/dist/cdn/{EE7XFMJG.js → O5AP2PN5.js} +1 -1
  19. package/dist/cdn/OUNIRHWU.js +2 -0
  20. package/dist/cdn/{XW42SAEJ.js → QFI3ZPNB.js} +1 -1
  21. package/dist/cdn/QMFRNHQJ.js +2 -0
  22. package/dist/cdn/QNA62UMC.js +2 -0
  23. package/dist/cdn/{6RLJVPF6.js → QWMWVF47.js} +1 -1
  24. package/dist/cdn/RWQL7W3X.js +2 -0
  25. package/dist/cdn/T6Z7IFG2.js +2 -0
  26. package/dist/cdn/USQ4RJYL.js +2 -0
  27. package/dist/cdn/{Q7SDLUZ6.js → V257KGGO.js} +1 -1
  28. package/dist/cdn/XSUV6RLR.js +2 -0
  29. package/dist/cdn/XTTOOMCY.js +66 -0
  30. package/dist/cdn/{CG4WYBHN.js → XUIVR4NX.js} +1 -1
  31. package/dist/cdn/{7YQTBSDS.js → YQV3M6JO.js} +109 -84
  32. package/dist/cdn/{SOJU4OFZ.js → ZMTS73PF.js} +1 -1
  33. package/dist/cdn/ZSNLY6QY.js +2 -0
  34. package/dist/cdn/assets/portal-item-badges/t9n/messages.en.json +1 -0
  35. package/dist/cdn/assets/portal-item-card/t9n/messages.en.json +1 -0
  36. package/dist/cdn/assets/portal-item-favorite/t9n/messages.en.json +1 -0
  37. package/dist/cdn/assets/portal-item-type/icons/applicationtheme16.svg +1 -0
  38. package/dist/cdn/assets/portal-item-type/icons/applicationtheme32.svg +1 -0
  39. package/dist/cdn/assets/portal-item-type/icons/layout16.svg +1 -0
  40. package/dist/cdn/assets/portal-item-type/icons/layout32.svg +1 -0
  41. package/dist/cdn/index.js +1 -1
  42. package/dist/cdn/main.css +1 -1
  43. package/dist/chunks/fieldAddDelete.js +1 -1
  44. package/dist/chunks/info.js +179 -0
  45. package/dist/chunks/item.js +8 -8
  46. package/dist/chunks/items.js +16 -0
  47. package/dist/chunks/portal-item-badge.js +346 -0
  48. package/dist/chunks/portal.js +3 -3
  49. package/dist/chunks/portal2.js +3 -3
  50. package/dist/chunks/query.js +4 -4
  51. package/dist/chunks/string.js +2 -2
  52. package/dist/chunks/users.js +7 -0
  53. package/dist/chunks/utils.js +75 -636
  54. package/dist/chunks/utils2.js +653 -0
  55. package/dist/chunks/verified.js +40 -0
  56. package/dist/components/arcgis-portal-account-switcher/customElement.js +58 -72
  57. package/dist/components/arcgis-portal-account-switcher-list/customElement.js +6 -6
  58. package/dist/components/arcgis-portal-ai-assistant/customElement.d.ts +9 -7
  59. package/dist/components/arcgis-portal-ai-assistant/customElement.js +944 -775
  60. package/dist/components/arcgis-portal-field-delete/customElement.js +2 -1
  61. package/dist/components/arcgis-portal-group-browser/customElement.js +3 -3
  62. package/dist/components/arcgis-portal-group-browser/types.d.ts +6 -2
  63. package/dist/components/arcgis-portal-group-browser-preview/customElement.d.ts +9 -9
  64. package/dist/components/arcgis-portal-group-browser-preview/customElement.js +16 -16
  65. package/dist/components/arcgis-portal-group-browser-preview-card/customElement.d.ts +18 -18
  66. package/dist/components/arcgis-portal-group-browser-preview-card/customElement.js +31 -30
  67. package/dist/components/arcgis-portal-group-card/customElement.d.ts +25 -25
  68. package/dist/components/arcgis-portal-group-card/customElement.js +7 -7
  69. package/dist/components/arcgis-portal-item-actions/customElement.d.ts +74 -0
  70. package/dist/components/arcgis-portal-item-actions/customElement.js +89 -0
  71. package/dist/components/arcgis-portal-item-actions/index.d.ts +1 -0
  72. package/dist/components/arcgis-portal-item-actions/index.js +5 -0
  73. package/dist/components/arcgis-portal-item-badge/customElement.d.ts +260 -0
  74. package/dist/components/arcgis-portal-item-badge/customElement.js +9 -0
  75. package/dist/components/arcgis-portal-item-badge/index.d.ts +1 -0
  76. package/dist/components/arcgis-portal-item-badge/index.js +5 -0
  77. package/dist/components/arcgis-portal-item-badges/customElement.d.ts +48 -0
  78. package/dist/components/arcgis-portal-item-badges/customElement.js +35 -0
  79. package/dist/components/arcgis-portal-item-badges/index.d.ts +1 -0
  80. package/dist/components/arcgis-portal-item-badges/index.js +2 -0
  81. package/dist/components/arcgis-portal-item-badges/types.d.ts +1 -0
  82. package/dist/components/arcgis-portal-item-card/customElement.d.ts +215 -0
  83. package/dist/components/arcgis-portal-item-card/customElement.js +190 -0
  84. package/dist/components/arcgis-portal-item-card/index.d.ts +1 -0
  85. package/dist/components/arcgis-portal-item-card/index.js +10 -0
  86. package/dist/components/arcgis-portal-item-favorite/customElement.d.ts +36 -0
  87. package/dist/components/arcgis-portal-item-favorite/customElement.js +66 -0
  88. package/dist/components/arcgis-portal-item-favorite/index.d.ts +1 -0
  89. package/dist/components/arcgis-portal-item-favorite/index.js +3 -0
  90. package/dist/components/arcgis-portal-item-favorite/utils.d.ts +4 -0
  91. package/dist/components/arcgis-portal-item-type/customElement.js +1 -1
  92. package/dist/components/arcgis-portal-navigation/customElement.js +40 -40
  93. package/dist/components/arcgis-portal-replacement-item-redirect/customElement.js +42 -214
  94. package/dist/components/arcgis-portal-user-popup/customElement.js +66 -100
  95. package/dist/components/portal-group-browser-filters/customElement.js +71 -73
  96. package/dist/docs/api.json +1 -1
  97. package/dist/docs/docs.json +1 -1
  98. package/dist/docs/vscode.html-custom-data.json +1 -1
  99. package/dist/docs/web-types.json +1 -1
  100. package/dist/index.d.ts +38 -0
  101. package/dist/loader.js +9 -4
  102. package/dist/types/item.d.ts +5 -1
  103. package/dist/types/lumina.d.ts +38 -4
  104. package/dist/types/preact.d.ts +43 -4
  105. package/dist/types/react.d.ts +48 -4
  106. package/dist/types/stencil.d.ts +38 -4
  107. package/package.json +6 -6
  108. package/dist/cdn/332KSPIN.js +0 -2
  109. package/dist/cdn/7PPA7V23.js +0 -2
  110. package/dist/cdn/DML7662F.js +0 -2
  111. package/dist/cdn/FF24VDOG.js +0 -65
  112. package/dist/cdn/G2NXASJO.js +0 -2
  113. package/dist/cdn/JZTBGLFH.js +0 -2
  114. package/dist/cdn/PP7GTURX.js +0 -2
  115. package/dist/cdn/QQ432AB6.js +0 -2
  116. package/dist/cdn/RKWOBE3M.js +0 -2
  117. package/dist/cdn/V4IAC7WR.js +0 -2
  118. package/dist/cdn/WEJQVIN4.js +0 -2
  119. package/dist/cdn/ZK2VXTNX.js +0 -2
  120. package/dist/components/portal-browser/components/portal-browser-filter-date/portal-browser-filter-date.d.ts +0 -122
@@ -112,7 +112,8 @@ class Q extends x {
112
112
  }), this.updateFeatureService(i));
113
113
  } else
114
114
  this.handleError();
115
- }
115
+ } else
116
+ this.handleError();
116
117
  }, () => this.handleError());
117
118
  }
118
119
  updateTypesAndTemplatesOnLayer() {
@@ -5,7 +5,7 @@ import { keyed as B } from "lit/directives/keyed.js";
5
5
  import { LitElement as O, createEvent as p, nothing as w, safeClassMap as C } from "@arcgis/lumina";
6
6
  import { u as f } from "../../chunks/useT9n.js";
7
7
  import { a as U } from "../../chunks/functionalities.js";
8
- import { c as x, r as v } from "../../chunks/string.js";
8
+ import { c as x, a as v } from "../../chunks/string.js";
9
9
  import "../arcgis-portal-browser-search/customElement.js";
10
10
  import "../arcgis-portal-browser-top-bar/customElement.js";
11
11
  import { c as R, a as _ } from "../../chunks/portal-browser.js";
@@ -447,7 +447,7 @@ class j extends O {
447
447
  }), r = t.length > 0 && t.every(({ view: o }) => o === "compact");
448
448
  return u`<div class=${C({ "group-browser__results": !0, "group-browser__results--compact": r })} .part=${"results"}>${t.map(({ group: o, cardProps: i, view: l }) => {
449
449
  const n = o.id;
450
- return B(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=${(h) => {
450
+ return B(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} .hideBadges=${i.hideBadges ?? !1} .hideDateUpdated=${i.hideDateUpdated ?? !1} .showDateCreated=${i.showDateCreated ?? !1} .hideViewableBy=${i.hideViewableBy ?? !1} .hideOwner=${i.hideOwner ?? !1} .link=${i.link} .linkHandler=${i.linkHandler} .newTab=${i.newTab ?? !1} .disabled=${i.disabled ?? !1} @arcgisGroupCardSelect=${(h) => {
451
451
  this.handleGroupCardSelect(h);
452
452
  }} @arcgisGroupBrowserCardPreview=${(h) => {
453
453
  const a = h.detail;
@@ -469,7 +469,7 @@ class j extends O {
469
469
  this.handleSortOrderChange(t);
470
470
  } })}<slot name=content slot=content>${this.renderContent()}</slot>${q({ slot: "pagination", store: this.store, total: this.queryResponse.total, start: this.queryResponse?.queryParams?.start ?? 1, num: this.queryResponse?.queryParams?.num ?? this.num, onPage: (t) => {
471
471
  this.handlePage(t);
472
- } })}<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) => {
472
+ } })}<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} .hideBadges=${this.hidePreviewBadges} .hidePreviewFooter=${this.hidePreviewFooter} .currentResponse=${this.queryResponse} .previewFooterActionsSpaced=${!this.getPreviewFooterActionsEmpty()} @arcgisGroupBrowserInternalUIAction=${(t) => {
473
473
  this.arcgisGroupBrowserInternalUIAction.emit(t.detail);
474
474
  }} @arcgisGroupBrowserPreviewClose=${() => {
475
475
  this.closePreview({ restoreFocus: !0 });
@@ -1,6 +1,5 @@
1
1
  import type PortalGroup from "@arcgis/core/portal/PortalGroup.js";
2
2
  import type { SearchResult } from "../../types/search.js";
3
- import type { PortalBrowserFilterDateProps } from "../portal-browser/components/portal-browser-filter-date/portal-browser-filter-date.js";
4
3
  import type { PortalBrowserSortField, PortalBrowserSortOrder } from "../arcgis-portal-browser-sort/utils.js";
5
4
  import type { PortalBrowserState } from "../arcgis-portal-browser/utils/store.js";
6
5
  import type { BrowserPageDetail } from "../arcgis-portal-browser/utils/types.js";
@@ -81,7 +80,7 @@ export interface GroupFilterConfig<TProps extends BaseFilterProps> {
81
80
  }
82
81
 
83
82
  export type PortalGroupBrowserDateFilterProps = BaseFilterProps
84
- & Partial<Pick<PortalBrowserFilterDateProps, "includeNever" | "serverProperty"> & PortalGroupBrowserDateSelection>;
83
+ & Partial<PortalGroupBrowserDateFilterSharedProps & PortalGroupBrowserDateSelection>;
85
84
 
86
85
  export type PortalGroupBrowserOwnerFilterProps = BaseFilterProps
87
86
  & Partial<PortalGroupBrowserOwnerSelection>;
@@ -170,6 +169,11 @@ export interface GroupBrowserAccessDetail extends GroupBrowserFilterDetail, Port
170
169
  id: "access";
171
170
  }
172
171
 
172
+ export interface PortalGroupBrowserDateFilterSharedProps {
173
+ includeNever?: boolean;
174
+ serverProperty?: string;
175
+ }
176
+
173
177
  export type PortalGroupBrowserOwner = "inOrg" | "outsideOrg" | "owner";
174
178
 
175
179
  export type PortalGroupBrowserMembership = "anyOrg" | "collaboration" | "org";
@@ -12,6 +12,12 @@ export abstract class ArcgisPortalGroupBrowserPreview extends LitElement {
12
12
  accessor currentResponse: PortalGroupBrowserSearchResult | undefined;
13
13
  /** Group selected for preview. */
14
14
  accessor group: PortalGroup;
15
+ /**
16
+ * Hide group badges in overview section.
17
+ *
18
+ * @default false
19
+ */
20
+ accessor hideBadges: boolean;
15
21
  /**
16
22
  * Hide footer details action.
17
23
  *
@@ -199,17 +205,11 @@ export abstract class ArcgisPortalGroupBrowserPreview extends LitElement {
199
205
  /** Portal used for thumbnail and deep-link resolution. */
200
206
  accessor portal: Portal;
201
207
  /**
202
- * Mirrors legacy footer slot spacing behavior from browser store state.
208
+ * Apply spacing between footer actions.
203
209
  *
204
- * @default true
205
- */
206
- accessor previewFooterActionsEmpty: boolean;
207
- /**
208
- * Show group badges in overview section.
209
- *
210
- * @default true
210
+ * @default false
211
211
  */
212
- accessor showBadges: boolean;
212
+ accessor previewFooterActionsSpaced: boolean;
213
213
  /** Current signed-in user context used by preview cards. */
214
214
  accessor user: PortalUser | undefined;
215
215
  setFocus(): Promise<void>;
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import { c as v } from "../../chunks/runtime.js";
2
+ import { c as w } from "../../chunks/runtime.js";
3
3
  import { repeat as _ } from "lit/directives/repeat.js";
4
4
  import { keyed as f } from "lit/directives/keyed.js";
5
5
  import { substitute as h } from "@arcgis/core/intl.js";
@@ -14,36 +14,36 @@ import { g as T } from "../../chunks/user2.js";
14
14
  import { e as P, h as M, f as z } from "../../chunks/query.js";
15
15
  import "../arcgis-portal-group-browser-preview-card/customElement.js";
16
16
  import { f as B } from "../../chunks/user.js";
17
- const F = $`:host{display:flex;height:100%;width:100%;flex:1 1 0%;flex-direction:column;background-color:var(--calcite-color-background)}.preview{box-sizing:border-box;display:flex;flex-direction:column;gap:0;height:100%;min-height:0;overflow:auto;padding:0;position:relative}.preview__header{align-items:center;background:var(--calcite-color-foreground-1);display:flex;justify-content:space-between;padding:0;padding-inline-start:.75rem}.preview__title{color:var(--calcite-color-text-1);font-size:var(--calcite-font-size-0);font-weight:var(--calcite-font-weight-medium);line-height:1.375;margin:0;overflow-wrap:anywhere;flex:1 1 auto}.preview__accordion{--calcite-accordion-item-header-background-color: var(--calcite-color-foreground-1);--calcite-accordion-item-heading-text-size: var(--calcite-font-size-0)}.preview__accordion calcite-accordion-item{--calcite-internal-accordion-item-padding: 1rem 1rem;border-bottom:1px solid var(--calcite-color-border-2);box-sizing:border-box;width:100%}.preview__section{background:var(--calcite-color-background);line-height:1.35;margin:-1rem;padding:1rem}.preview__section--tight{padding:0}.preview__summary{color:var(--calcite-color-text-2);font-size:var(--calcite-font-size-0);line-height:1.45;margin:0}.preview__description{--item-browser-table-border: 1px solid var(--calcite-color-border-2);color:var(--calcite-color-text-2);line-height:1.35;overflow-wrap:anywhere;*{font-size:.875rem;max-width:100%}a{color:var(--calcite-color-text-link)}img,video{height:auto;max-width:100%}table{background:var(--calcite-color-foreground-1);border:var(--item-browser-table-border);border-collapse:collapse;border-spacing:0;font-size:var(--calcite-font-size--2);overflow:auto;text-align:start;width:100%}table>thead{background:var(--calcite-color-foreground-1);border-bottom:var(--item-browser-table-border);font-weight:var(--calcite-font-weight-normal)}table>tbody{overflow:auto;width:100%}table>tfoot{border-top:var(--item-browser-table-border)}th,td{border-inline:var(--item-browser-table-border);font-weight:var(--calcite-font-weight-light);padding:.5rem;text-align:start}tr{border-bottom:var(--item-browser-table-border);text-align:start}tr:last-child{border-bottom:none}}.preview__empty{color:var(--calcite-color-text-1);margin:0}.preview__empty-wrap{align-items:center;display:flex;flex-direction:column;gap:.5rem;padding:.5rem}.preview__loading-placeholder{min-height:2rem}.preview__empty-icon{color:var(--calcite-color-text-1);height:3rem;width:3rem}.preview__badges{margin-top:1rem}.preview__badges[empty]{display:none}.preview__full-card-wrapper{padding:.75rem .5rem 0}.preview__card{margin:0}.preview__card-body{display:grid;gap:.125rem}.preview__settings-title{color:var(--calcite-color-text-3);font-size:var(--calcite-font-size--2);margin:0}.preview__settings-text{color:var(--calcite-color-text-1);margin:0;line-height:1.4}.preview__link-wrap{margin-top:.75rem;padding:0 .25rem 1rem}.preview__footer-actions{width:100%;display:flex;flex-direction:column}.preview__footer-actions--spaced{gap:.5rem}.preview__card-container{display:flex;flex-direction:column;gap:.25rem}.preview__settings-section{display:flex;flex-direction:column;gap:1.25rem}.preview__settings-row{display:grid;gap:.25rem}.preview__link-wrap--settings{padding-inline:0}`, E = async (c, e) => {
17
+ const F = $`:host{display:flex;height:100%;width:100%;flex:1 1 0%;flex-direction:column;background-color:var(--calcite-color-background)}.preview{box-sizing:border-box;display:flex;flex-direction:column;gap:0;height:100%;min-height:0;overflow:auto;padding:0;position:relative}.preview__header{align-items:center;background:var(--calcite-color-foreground-1);display:flex;justify-content:space-between;padding:0;padding-inline-start:.75rem}.preview__title{color:var(--calcite-color-text-1);font-size:var(--calcite-font-size-0);font-weight:var(--calcite-font-weight-medium);line-height:1.375;margin:0;overflow-wrap:anywhere;flex:1 1 auto}.preview__accordion{--calcite-accordion-item-header-background-color: var(--calcite-color-foreground-1);--calcite-accordion-item-heading-text-size: var(--calcite-font-size-0)}.preview__accordion calcite-accordion-item{--calcite-internal-accordion-item-padding: 1rem 1rem;border-bottom:1px solid var(--calcite-color-border-2);box-sizing:border-box;width:100%}.preview__section{background:var(--calcite-color-background);line-height:1.35;margin:-1rem;padding:1rem}.preview__section--tight{padding:0}.preview__summary{color:var(--calcite-color-text-2);font-size:var(--calcite-font-size-0);line-height:1.45;margin:0}.preview__description{--item-browser-table-border: 1px solid var(--calcite-color-border-2);color:var(--calcite-color-text-2);line-height:1.35;overflow-wrap:anywhere;*{font-size:.875rem;max-width:100%}a{color:var(--calcite-color-text-link)}img,video{height:auto;max-width:100%}table{background:var(--calcite-color-foreground-1);border:var(--item-browser-table-border);border-collapse:collapse;border-spacing:0;font-size:var(--calcite-font-size--2);overflow:auto;text-align:start;width:100%}table>thead{background:var(--calcite-color-foreground-1);border-bottom:var(--item-browser-table-border);font-weight:var(--calcite-font-weight-normal)}table>tbody{overflow:auto;width:100%}table>tfoot{border-top:var(--item-browser-table-border)}th,td{border-inline:var(--item-browser-table-border);font-weight:var(--calcite-font-weight-light);padding:.5rem;text-align:start}tr{border-bottom:var(--item-browser-table-border);text-align:start}tr:last-child{border-bottom:none}}.preview__empty{color:var(--calcite-color-text-1);margin:0}.preview__empty-wrap{align-items:center;display:flex;flex-direction:column;gap:.5rem;padding:.5rem}.preview__loading-placeholder{min-height:2rem}.preview__empty-icon{color:var(--calcite-color-text-1);height:3rem;width:3rem}.preview__badges{margin-top:1rem}.preview__badges[empty]{display:none}.preview__full-card-wrapper{padding:.75rem .5rem 0}.preview__card{margin:0}.preview__card-body{display:grid;gap:.125rem}.preview__settings-title{color:var(--calcite-color-text-3);font-size:var(--calcite-font-size--2);margin:0}.preview__settings-text{color:var(--calcite-color-text-1);margin:0;line-height:1.4}.preview__link-wrap{margin-top:.75rem;padding:0 .25rem 1rem}.preview__footer-actions{width:100%;display:flex;flex-direction:column}.preview__footer-actions--spaced{gap:.5rem}.preview__card-container{display:flex;flex-direction:column;gap:.25rem}.preview__settings-section{display:flex;flex-direction:column;gap:1.25rem}.preview__settings-row{display:grid;gap:.25rem}.preview__link-wrap--settings{padding-inline:0}`, q = async (c, e) => {
18
18
  try {
19
19
  const t = c.id ? (await e.queryGroups({ query: `id:${c.id}`, num: 1 })).results[0] ?? c : c;
20
20
  t.portal = e;
21
21
  const o = p(t), r = o.properties?.featuredItemIds ?? [], n = !!(o.properties?.isFeatured && r.length), [{ items: d, total: m }, l] = await Promise.all([
22
- n ? q(t, r) : D(t),
22
+ n ? S(t, r) : D(t),
23
23
  t.fetchMembers()
24
24
  ]), a = [l.owner, ...l.admins.filter((g) => g !== l.owner)], i = await Promise.all(a.map(async (g) => await B(g, e)));
25
25
  return { result: { group: t, items: d, total: m, members: l, managers: i } };
26
26
  } catch (t) {
27
27
  return console.error(t), { error: { code: "unhandledError" } };
28
28
  }
29
- }, w = 4;
30
- async function q(c, e) {
29
+ }, v = 4;
30
+ async function S(c, e) {
31
31
  const t = await c.queryItems({
32
- num: Math.min(w, e.length),
33
- query: `id:(${e.slice(0, w).join(" OR ")})`
32
+ num: Math.min(v, e.length),
33
+ query: `id:(${e.slice(0, v).join(" OR ")})`
34
34
  });
35
35
  return { items: e.map((r) => t.results.find((n) => n.id === r)).filter((r) => !!r), total: t.total || e.length };
36
36
  }
37
37
  async function D(c) {
38
- const { sortField: e = "modified", sortOrder: t = "desc" } = p(c), o = P(c) || M, r = await c.queryItems({ num: w, sortField: e, sortOrder: t, query: o });
38
+ const { sortField: e = "modified", sortOrder: t = "desc" } = p(c), o = P(c) || M, r = await c.queryItems({ num: v, sortField: e, sortOrder: t, query: o });
39
39
  return { items: r.results || [], total: r.total || 0 };
40
40
  }
41
- class H extends b {
41
+ class E extends b {
42
42
  constructor() {
43
- super(...arguments), this.messages = I({ name: "portal-group-browser", blocking: !0 }), this.requestId = 0, this.flowItemEl = x(), this.loading = !1, this.contentItems = [], this.contentTotal = 0, this.managers = [], this.fullGroup = null, this.showBadges = !0, this.hidePreviewFooter = !1, this.previewFooterActionsEmpty = !0, this.arcgisPreviewClose = u(), this.arcgisGroupBrowserPreviewClose = u(), this.arcgisGroupBrowserInternalUIAction = u();
43
+ super(...arguments), this.messages = I({ name: "portal-group-browser", blocking: !0 }), this.requestId = 0, this.flowItemEl = x(), this.loading = !1, this.contentItems = [], this.contentTotal = 0, this.managers = [], this.fullGroup = null, this.hideBadges = !1, this.hidePreviewFooter = !1, this.previewFooterActionsSpaced = !1, this.arcgisPreviewClose = u(), this.arcgisGroupBrowserPreviewClose = u(), this.arcgisGroupBrowserInternalUIAction = u();
44
44
  }
45
45
  static {
46
- this.properties = { loading: 16, contentItems: 16, contentTotal: 16, managers: 16, fullGroup: 16, group: 0, portal: 0, user: 0, showBadges: 5, hidePreviewFooter: 5, currentResponse: 0, previewFooterActionsEmpty: 5 };
46
+ this.properties = { loading: 16, contentItems: 16, contentTotal: 16, managers: 16, fullGroup: 16, group: 0, portal: 0, user: 0, hideBadges: 5, hidePreviewFooter: 5, currentResponse: 0, previewFooterActionsSpaced: 5 };
47
47
  }
48
48
  static {
49
49
  this.styles = F;
@@ -66,7 +66,7 @@ class H extends b {
66
66
  async loadPreviewData() {
67
67
  const { group: e, portal: t } = this, o = ++this.requestId;
68
68
  this.loading = !0, this.contentItems = [], this.contentTotal = 0, this.managers = [], this.fullGroup = null;
69
- const { result: r, error: n } = await E(e, t);
69
+ const { result: r, error: n } = await q(e, t);
70
70
  o === this.requestId && (this.loading = !1, !(n || !r) && o === this.requestId && (this.contentItems = r.items, this.contentTotal = r.total, this.managers = r.managers, this.fullGroup = r.group, this.flowItemEl.value?.setFocus()));
71
71
  }
72
72
  getPreviewPosition(e) {
@@ -123,7 +123,7 @@ class H extends b {
123
123
  action: "close panel",
124
124
  category: "group panel action"
125
125
  }), this.arcgisPreviewClose.emit(), this.arcgisGroupBrowserPreviewClose.emit();
126
- }} ${k(this.flowItemEl)}><div slot=header-content class="preview__header"><h3 class="preview__title">${e.title || this.messages.preview.titleFallback}</h3></div><section class="preview">${f(e.id, s`<calcite-accordion icon-position=start appearance=transparent class="preview__accordion"><calcite-accordion-item .heading=${this.messages.preview.overview} .expanded=${!!t} @click=${(i) => this.isAccordionItem(i.target) && this.handleAccordionItemClick(i.currentTarget, "overview")}><div class="preview__section">${t ? s`<p class="preview__summary">${t}</p>` : s`<p class="preview__empty">${this.messages.preview.noSummary}</p>`}${this.showBadges ? s`<arcgis-portal-group-badges .group=${e} .portal=${this.portal} width=full scale=s appearance=outline-fill class="preview__badges"></arcgis-portal-group-badges>` : null}</div></calcite-accordion-item><calcite-accordion-item .heading=${a.description} @click=${(i) => this.isAccordionItem(i.target) && this.handleAccordionItemClick(i.currentTarget, "description")}><div class="preview__section">${o ? s`<div class="preview__description" .innerHTML=${o ?? ""}></div>` : s`<p class="preview__empty">${a.noDescription}</p>`}</div></calcite-accordion-item><calcite-accordion-item .heading=${h(a.content, { count: String(this.contentTotal) })} expanded @click=${(i) => this.isAccordionItem(i.target) && this.handleAccordionItemClick(i.currentTarget, "content")}><div class="preview__section preview__section--tight">${this.contentItems.length ? s`<div class="preview__full-card-wrapper"><div class="preview__card-container">${_(this.contentItems, (i) => i.id, (i) => s`<arcgis-portal-group-browser-preview-card class="preview__card" .item=${i} .portal=${this.portal} .user=${this.user}></arcgis-portal-group-browser-preview-card>`)}</div><div class="preview__link-wrap"><calcite-link .href=${n} @click=${() => {
126
+ }} ${k(this.flowItemEl)}><div slot=header-content class="preview__header"><h3 class="preview__title">${e.title || this.messages.preview.titleFallback}</h3></div><section class="preview">${f(e.id, s`<calcite-accordion icon-position=start appearance=transparent class="preview__accordion"><calcite-accordion-item .heading=${this.messages.preview.overview} .expanded=${!!t} @click=${(i) => this.isAccordionItem(i.target) && this.handleAccordionItemClick(i.currentTarget, "overview")}><div class="preview__section">${t ? s`<p class="preview__summary">${t}</p>` : s`<p class="preview__empty">${this.messages.preview.noSummary}</p>`}${this.hideBadges ? null : s`<arcgis-portal-group-badges .group=${e} .portal=${this.portal} width=full scale=s appearance=outline-fill class="preview__badges"></arcgis-portal-group-badges>`}</div></calcite-accordion-item><calcite-accordion-item .heading=${a.description} @click=${(i) => this.isAccordionItem(i.target) && this.handleAccordionItemClick(i.currentTarget, "description")}><div class="preview__section">${o ? s`<div class="preview__description" .innerHTML=${o ?? ""}></div>` : s`<p class="preview__empty">${a.noDescription}</p>`}</div></calcite-accordion-item><calcite-accordion-item .heading=${h(a.content, { count: String(this.contentTotal) })} expanded @click=${(i) => this.isAccordionItem(i.target) && this.handleAccordionItemClick(i.currentTarget, "content")}><div class="preview__section preview__section--tight">${this.contentItems.length ? s`<div class="preview__full-card-wrapper"><div class="preview__card-container">${_(this.contentItems, (i) => i.id, (i) => s`<arcgis-portal-group-browser-preview-card class="preview__card" .item=${i} .portal=${this.portal} .user=${this.user}></arcgis-portal-group-browser-preview-card>`)}</div><div class="preview__link-wrap"><calcite-link .href=${n} @click=${() => {
127
127
  this.handleDetailsClick("view all content");
128
128
  }}>${this.messages.preview.viewContent}</calcite-link></div></div>` : this.loading ? s`<div class="preview__loading-placeholder"></div>` : s`<div class="preview__empty-wrap"><calcite-icon scale=l icon=files class="preview__empty-icon"></calcite-icon><p class="preview__empty">${this.messages.preview.noContent}</p></div>`}</div></calcite-accordion-item><calcite-accordion-item .heading=${h(a.groupManagers, { count: String(this.managers.length) })} expanded @click=${(i) => this.isAccordionItem(i.target) && this.handleAccordionItemClick(i.currentTarget, "managers")}><div class="preview__section preview__section--tight"><div class="preview__full-card-wrapper">${this.managers.length ? s`<div class="preview__card-container">${this.managers.map((i) => s`<calcite-card class="preview__card"><div class="preview__card-body"><arcgis-portal-user-popup .fullName=${i.username === e.owner ? h(a.groupOwner, {
129
129
  fullName: T(i, this.messages._lang)
@@ -133,7 +133,7 @@ class H extends b {
133
133
  this.handleDetailsClick("open settings");
134
134
  }}>${a.openSettings}</calcite-link></div></div>` : null}</div></calcite-accordion-item></calcite-accordion>`)}</section>${!this.hidePreviewFooter && s`<div slot=footer class=${y({
135
135
  "preview__footer-actions": !0,
136
- "preview__footer-actions--spaced": !this.previewFooterActionsEmpty
136
+ "preview__footer-actions--spaced": this.previewFooterActionsSpaced
137
137
  })}><calcite-button appearance=solid kind=neutral width=full .href=${r} @click=${() => {
138
138
  this.arcgisGroupBrowserInternalUIAction.emit({
139
139
  action: "click",
@@ -144,7 +144,7 @@ class H extends b {
144
144
  }}>${a.openGroupPage}</calcite-button><slot name=footer-action></slot></div>` || ""}</calcite-flow-item></calcite-flow>`;
145
145
  }
146
146
  }
147
- v("arcgis-portal-group-browser-preview", H);
147
+ w("arcgis-portal-group-browser-preview", E);
148
148
  export {
149
- H as ArcgisPortalGroupBrowserPreview
149
+ E as ArcgisPortalGroupBrowserPreview
150
150
  };
@@ -8,6 +8,24 @@ import type { InternalUIAction } from "../../types/tracking.js";
8
8
  export abstract class ArcgisPortalGroupBrowserPreviewCard extends LitElement {
9
9
  /** Optional fully qualified path to the portal home root. */
10
10
  accessor baseUrl: string | undefined;
11
+ /**
12
+ * Hide item type in the card body.
13
+ *
14
+ * @default false
15
+ */
16
+ accessor hideItemType: boolean;
17
+ /**
18
+ * Hide owner information in the footer.
19
+ *
20
+ * @default false
21
+ */
22
+ accessor hideOwner: boolean;
23
+ /**
24
+ * Hide the item thumbnail area.
25
+ *
26
+ * @default false
27
+ */
28
+ accessor hideThumbnail: boolean;
11
29
  /**
12
30
  * Allow hover styles and click interaction on the card.
13
31
  *
@@ -38,18 +56,6 @@ export abstract class ArcgisPortalGroupBrowserPreviewCard extends LitElement {
38
56
  * @default false
39
57
  */
40
58
  accessor showDateUpdated: boolean;
41
- /**
42
- * Show item type in the card body.
43
- *
44
- * @default true
45
- */
46
- accessor showItemType: boolean;
47
- /**
48
- * Show owner information in the footer.
49
- *
50
- * @default true
51
- */
52
- accessor showOwner: boolean;
53
59
  /**
54
60
  * Show popup-enabled owner link in footer instead of plain avatar lockup.
55
61
  *
@@ -62,12 +68,6 @@ export abstract class ArcgisPortalGroupBrowserPreviewCard extends LitElement {
62
68
  * @default false
63
69
  */
64
70
  accessor showSummary: boolean;
65
- /**
66
- * Show the item thumbnail area.
67
- *
68
- * @default true
69
- */
70
- accessor showThumbnail: boolean;
71
71
  /** Current signed in user for owner and item context. */
72
72
  accessor user: PortalUser | undefined;
73
73
  restoreFocus(): Promise<void>;
@@ -1,24 +1,25 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import { c as w } from "../../chunks/runtime.js";
3
- import { formatDate as v } from "@arcgis/core/intl.js";
4
- import { LitElement as _, createEvent as n, nothing as o, safeClassMap as p } from "@arcgis/lumina";
5
- import { css as g, html as r } from "lit";
6
- import { createRef as h, ref as m } from "lit/directives/ref.js";
7
- import { g as f } from "../../chunks/url.js";
2
+ import { c as u } from "../../chunks/runtime.js";
3
+ import { formatDate as w } from "@arcgis/core/intl.js";
4
+ import { LitElement as v, createEvent as d, nothing as o, safeClassMap as n } from "@arcgis/lumina";
5
+ import { css as _, html as r } from "lit";
6
+ import { createRef as p, ref as h } from "lit/directives/ref.js";
7
+ import { g as f } from "../../chunks/items.js";
8
+ import { g } from "../../chunks/url.js";
8
9
  import { g as b } from "../../chunks/thumbnail.js";
9
- const y = (c) => c.sourceJSON ?? c, $ = g`:host{display:block;min-width:0;container-type:inline-size}.preview-card{position:relative;display:flex;width:100%;height:100%;flex-direction:column;color:var(--calcite-color-text-1);opacity:0;background-color:var(--calcite-color-foreground-1);border:1px solid var(--calcite-color-border-3);transition:background-color .15s ease-in-out,opacity .15s ease-in-out}.preview-card--loaded{opacity:1}.preview-card--hoverable{cursor:pointer}.preview-card--hoverable .preview-card__upper:hover{background-color:var(--calcite-color-background)}.preview-card__upper{display:flex;align-items:stretch;min-width:0;flex:1 1 auto;padding:.75rem;background-color:var(--calcite-color-foreground-1)}.preview-card__upper--link{color:var(--calcite-color-text-1);text-decoration:none}.preview-card__top{display:flex;align-self:stretch;flex:0 0 auto}.preview-card__thumbnail{box-sizing:border-box;display:grid;place-items:center;width:4rem;height:100%;margin:0;margin-inline-start:.75rem;border-radius:2px;overflow:hidden;background-color:var(--calcite-color-foreground-2)}.preview-card__thumbnail-image{width:100%;height:100%;object-fit:cover}.preview-card__thumbnail--fallback{color:var(--calcite-color-text-3)}.preview-card__content{min-width:0;flex:1 1 auto}.preview-card__body{display:grid;min-width:0;gap:.25rem}.preview-card__title{margin:0;height:2rem;font-size:var(--calcite-font-size--1);font-weight:var(--calcite-font-weight-medium);line-height:1.15;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere}.preview-card__title--padded{margin-bottom:.125rem}.preview-card__title-span{position:relative}.preview-card__summary{color:var(--calcite-color-text-2);font-size:var(--calcite-font-size--2);line-height:1.35;margin:0;overflow:hidden;text-overflow:ellipsis}.preview-card__details{align-items:center;display:flex;flex-wrap:wrap;gap:.25rem}.preview-card__detail,.preview-card__meta{color:var(--calcite-color-text-1);font-size:var(--calcite-font-size--2);margin:0}.preview-card__meta{color:var(--calcite-color-text-2)}.preview-card__status{--calcite-chip-background-color: var(--calcite-color-foreground-2);text-transform:capitalize}.preview-card__divider{align-items:center;display:flex;flex:0 0 auto}.preview-card__divider:before{content:"";height:1rem;width:1px;margin-inline-end:.5rem;background-color:var(--calcite-color-border-2)}.preview-card__details :first-child.preview-card__divider:before{display:none}.preview-card__footer{align-items:center;border-top:1px solid var(--calcite-color-border-2);display:flex;margin-top:auto;min-height:2.25rem;padding:.375rem .75rem}.preview-card__footer-start{align-items:center;display:flex;flex:1 1 auto;min-width:0}.preview-card__owner{min-width:0}@container (max-width: 480px){.preview-card__upper{padding:.625rem}.preview-card__thumbnail{width:3.5rem;margin-inline-start:.5rem}.preview-card__footer{padding:.25rem .625rem}}`;
10
- class x extends _ {
10
+ const y = _`:host{display:block;min-width:0;container-type:inline-size}.preview-card{position:relative;display:flex;width:100%;height:100%;flex-direction:column;color:var(--calcite-color-text-1);opacity:0;background-color:var(--calcite-color-foreground-1);border:1px solid var(--calcite-color-border-3);transition:background-color .15s ease-in-out,opacity .15s ease-in-out}.preview-card--loaded{opacity:1}.preview-card--hoverable{cursor:pointer}.preview-card--hoverable .preview-card__upper:hover{background-color:var(--calcite-color-background)}.preview-card__upper{display:flex;align-items:stretch;min-width:0;flex:1 1 auto;padding:.75rem;background-color:var(--calcite-color-foreground-1)}.preview-card__upper--link{color:var(--calcite-color-text-1);text-decoration:none}.preview-card__top{display:flex;align-self:stretch;flex:0 0 auto}.preview-card__thumbnail{box-sizing:border-box;display:grid;place-items:center;width:4rem;height:100%;margin:0;margin-inline-start:.75rem;border-radius:2px;overflow:hidden;background-color:var(--calcite-color-foreground-2)}.preview-card__thumbnail-image{width:100%;height:100%;object-fit:cover}.preview-card__thumbnail--fallback{color:var(--calcite-color-text-3)}.preview-card__content{min-width:0;flex:1 1 auto}.preview-card__body{display:grid;min-width:0;gap:.25rem}.preview-card__title{margin:0;height:2rem;font-size:var(--calcite-font-size--1);font-weight:var(--calcite-font-weight-medium);line-height:1.15;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere}.preview-card__title--padded{margin-bottom:.125rem}.preview-card__title-span{position:relative}.preview-card__summary{color:var(--calcite-color-text-2);font-size:var(--calcite-font-size--2);line-height:1.35;margin:0;overflow:hidden;text-overflow:ellipsis}.preview-card__details{align-items:center;display:flex;flex-wrap:wrap;gap:.25rem}.preview-card__detail,.preview-card__meta{color:var(--calcite-color-text-1);font-size:var(--calcite-font-size--2);margin:0}.preview-card__meta{color:var(--calcite-color-text-2)}.preview-card__status{--calcite-chip-background-color: var(--calcite-color-foreground-2);text-transform:capitalize}.preview-card__divider{align-items:center;display:flex;flex:0 0 auto}.preview-card__divider:before{content:"";height:1rem;width:1px;margin-inline-end:.5rem;background-color:var(--calcite-color-border-2)}.preview-card__details :first-child.preview-card__divider:before{display:none}.preview-card__footer{align-items:center;border-top:1px solid var(--calcite-color-border-2);display:flex;margin-top:auto;min-height:2.25rem;padding:.375rem .75rem}.preview-card__footer-start{align-items:center;display:flex;flex:1 1 auto;min-width:0}.preview-card__owner{min-width:0}@container (max-width: 480px){.preview-card__upper{padding:.625rem}.preview-card__thumbnail{width:3.5rem;margin-inline-start:.5rem}.preview-card__footer{padding:.25rem .625rem}}`;
11
+ class $ extends v {
11
12
  constructor() {
12
- super(...arguments), this.sectionEl = h(), this.linkEl = h(), this.cachedOwner = "", this.cachedStatus = "", this.cachedTitle = "-", this.cachedType = "-", this.cachedSummary = "", this.cachedUpdatedText = "", this.cachedThumbnailUri = null, this.handleCardClick = () => {
13
- const { link: e, item: i } = this;
14
- e || this.arcgisGroupBrowserPreviewCardSelect.emit(i);
15
- }, this.isLoaded = !1, this.imageError = !1, this.newTab = !1, this.showThumbnail = !0, this.showOwner = !0, this.showItemType = !0, this.showDateUpdated = !1, this.showSummary = !1, this.showBadges = !1, this.showOwnerPopup = !1, this.interactive = !1, this.arcgisGroupBrowserInternalUIAction = n(), this.arcgisGroupBrowserPreviewCardSelect = n();
13
+ super(...arguments), this.sectionEl = p(), this.linkEl = p(), this.cachedOwner = "", this.cachedStatus = "", this.cachedTitle = "-", this.cachedType = "-", this.cachedSummary = "", this.cachedUpdatedText = "", this.cachedThumbnailUri = null, this.handleCardClick = () => {
14
+ const { link: e, item: t } = this;
15
+ e || this.arcgisGroupBrowserPreviewCardSelect.emit(t);
16
+ }, this.isLoaded = !1, this.imageError = !1, this.newTab = !1, this.hideThumbnail = !1, this.hideOwner = !1, this.hideItemType = !1, this.showDateUpdated = !1, this.showSummary = !1, this.showBadges = !1, this.showOwnerPopup = !1, this.interactive = !1, this.arcgisGroupBrowserInternalUIAction = d(), this.arcgisGroupBrowserPreviewCardSelect = d();
16
17
  }
17
18
  static {
18
- this.properties = { isLoaded: 16, imageError: 16, item: 0, portal: 0, user: 0, baseUrl: 1, link: 1, newTab: 5, showThumbnail: 5, showOwner: 5, showItemType: 5, showDateUpdated: 5, showSummary: 5, showBadges: 5, showOwnerPopup: 5, interactive: 5 };
19
+ this.properties = { isLoaded: 16, imageError: 16, item: 0, portal: 0, user: 0, baseUrl: 1, link: 1, newTab: 5, hideThumbnail: 5, hideOwner: 5, hideItemType: 5, showDateUpdated: 5, showSummary: 5, showBadges: 5, showOwnerPopup: 5, interactive: 5 };
19
20
  }
20
21
  static {
21
- this.styles = $;
22
+ this.styles = y;
22
23
  }
23
24
  async restoreFocus() {
24
25
  if (this.link && this.linkEl.value) {
@@ -38,22 +39,22 @@ class x extends _ {
38
39
  get resolvedBaseUrl() {
39
40
  if (!this.portal)
40
41
  return "";
41
- const e = f({ portal: this.portal });
42
+ const e = g({ portal: this.portal });
42
43
  return this.baseUrl || `${e}/home`;
43
44
  }
44
45
  getItemThumbnailUri(e) {
45
46
  return e.thumbnailUrl ? e.thumbnailUrl : this.portal ? b(this.portal, e) : null;
46
47
  }
47
48
  updateCachedItemData() {
48
- const { item: e, showSummary: i, showDateUpdated: s } = this, t = y(e), a = t.snippet?.trim() || "";
49
- this.cachedOwner = t.owner || "", this.cachedStatus = t.contentStatus || "", this.cachedTitle = t.title?.trim() || e.title?.trim() || "-", this.cachedType = t.type?.trim() || "-", this.cachedSummary = i ? a.length > 250 ? `${a.slice(0, 250)}...` : a : "", this.cachedUpdatedText = s ? v(t.modified ?? e.modified, { dateStyle: "medium" }) : "", this.cachedThumbnailUri = this.getItemThumbnailUri(e);
49
+ const { item: e, showSummary: t, showDateUpdated: s } = this, i = f(e), a = i.snippet?.trim() || "";
50
+ this.cachedOwner = i.owner || "", this.cachedStatus = i.contentStatus || "", this.cachedTitle = i.title?.trim() || e.title?.trim() || "-", this.cachedType = i.type?.trim() || "-", this.cachedSummary = t ? a.length > 250 ? `${a.slice(0, 250)}...` : a : "", this.cachedUpdatedText = s ? w(i.modified ?? e.modified, { dateStyle: "medium" }) : "", this.cachedThumbnailUri = this.getItemThumbnailUri(e);
50
51
  }
51
52
  renderStatusBadge() {
52
53
  const e = this.cachedStatus;
53
54
  return !this.showBadges || !e ? null : r`<calcite-chip class="preview-card__status" scale=s .value=${e} .label=${e}>${e}</calcite-chip>`;
54
55
  }
55
56
  renderThumbnail() {
56
- if (!this.showThumbnail)
57
+ if (this.hideThumbnail)
57
58
  return null;
58
59
  const e = this.cachedThumbnailUri;
59
60
  return e && !this.imageError ? r`<figure class="preview-card__thumbnail"><img class="preview-card__thumbnail-image" src=${e ?? o} alt @error=${() => {
@@ -62,31 +63,31 @@ class x extends _ {
62
63
  }
63
64
  renderOwner() {
64
65
  const e = this.cachedOwner;
65
- return !this.showOwner || !e || !this.portal ? null : this.showOwnerPopup ? r`<arcgis-portal-user-popup underline .username=${e} .portal=${this.portal} .baseUrl=${this.resolvedBaseUrl} class="preview-card__owner" scale=s @arcgisUserPopupInternalUIAction=${(i) => {
66
- i.stopPropagation(), this.arcgisGroupBrowserInternalUIAction.emit(i.detail);
66
+ return this.hideOwner || !e || !this.portal ? null : this.showOwnerPopup ? r`<arcgis-portal-user-popup underline .username=${e} .portal=${this.portal} .baseUrl=${this.resolvedBaseUrl} class="preview-card__owner" scale=s @arcgisUserPopupInternalUIAction=${(t) => {
67
+ t.stopPropagation(), this.arcgisGroupBrowserInternalUIAction.emit(t.detail);
67
68
  }}></arcgis-portal-user-popup>` : r`<arcgis-portal-user-avatar scale=s show-name hide-avatar .username=${e} .portal=${this.portal} class="preview-card__owner"></arcgis-portal-user-avatar>`;
68
69
  }
69
70
  renderBody(e) {
70
- const { showSummary: i, showItemType: s, showDateUpdated: t } = this, a = this.cachedTitle, u = this.cachedType, l = this.cachedSummary, d = this.cachedUpdatedText;
71
- return r`<div class="preview-card__body"><h3 class=${p({
71
+ const { showSummary: t, showDateUpdated: s } = this, i = !this.hideItemType, a = this.cachedTitle, m = this.cachedType, c = this.cachedSummary, l = this.cachedUpdatedText;
72
+ return r`<div class="preview-card__body"><h3 class=${n({
72
73
  "preview-card__title": !0,
73
- "preview-card__title--padded": s || i && !!l
74
- })}><span class="preview-card__title-span">${a}</span></h3>${i && l ? r`<p class="preview-card__summary">${l}</p>` : null}${s ? r`<arcgis-portal-item-type scale=s .item=${e} .portal=${this.portal} .user=${this.user}></arcgis-portal-item-type>` : null}<div class="preview-card__details">${t && d ? r`<span class="preview-card__detail preview-card__divider">${d}</span>` : null}${this.renderStatusBadge()}${s ? null : r`<p class="preview-card__meta">${u}</p>`}</div></div>`;
74
+ "preview-card__title--padded": i || t && !!c
75
+ })}><span class="preview-card__title-span">${a}</span></h3>${t && c ? r`<p class="preview-card__summary">${c}</p>` : null}${i ? r`<arcgis-portal-item-type scale=s .item=${e} .portal=${this.portal} .user=${this.user}></arcgis-portal-item-type>` : null}<div class="preview-card__details">${s && l ? r`<span class="preview-card__detail preview-card__divider">${l}</span>` : null}${this.renderStatusBadge()}${i ? null : r`<p class="preview-card__meta">${m}</p>`}</div></div>`;
75
76
  }
76
77
  render() {
77
- const { item: e, interactive: i, link: s, newTab: t } = this;
78
- return r`<section class=${p({
78
+ const { item: e, interactive: t, link: s, newTab: i } = this;
79
+ return r`<section class=${n({
79
80
  "preview-card": !0,
80
- "preview-card--hoverable": i,
81
+ "preview-card--hoverable": t,
81
82
  "preview-card--loaded": this.isLoaded
82
- })} .part=${"card"} tabindex=${(i ? 0 : void 0) ?? o} @click=${s ? void 0 : this.handleCardClick} ${m(this.sectionEl)}><slot name=content-top></slot>${s ? r`<a class="preview-card__upper preview-card__upper--link" href=${s ?? o} target=${(t ? "_blank" : void 0) ?? o} rel=${(t ? "noopener noreferrer" : void 0) ?? o} ${m(this.linkEl)}>${r`<div class="preview-card__content">${this.renderBody(e)}</div><div class="preview-card__top">${this.renderThumbnail()}</div>`}</a>` : r`<div class="preview-card__upper"><div class="preview-card__content">${this.renderBody(e)}</div><div class="preview-card__top">${this.renderThumbnail()}</div></div>`}<div class="preview-card__footer" @click=${(a) => {
83
+ })} .part=${"card"} tabindex=${(t ? 0 : void 0) ?? o} @click=${s ? void 0 : this.handleCardClick} ${h(this.sectionEl)}><slot name=content-top></slot>${s ? r`<a class="preview-card__upper preview-card__upper--link" href=${s ?? o} target=${(i ? "_blank" : void 0) ?? o} rel=${(i ? "noopener noreferrer" : void 0) ?? o} ${h(this.linkEl)}>${r`<div class="preview-card__content">${this.renderBody(e)}</div><div class="preview-card__top">${this.renderThumbnail()}</div>`}</a>` : r`<div class="preview-card__upper"><div class="preview-card__content">${this.renderBody(e)}</div><div class="preview-card__top">${this.renderThumbnail()}</div></div>`}<div class="preview-card__footer" @click=${(a) => {
83
84
  a.stopPropagation();
84
85
  }} @keydown=${(a) => {
85
86
  (a.key === "Enter" || a.key === " ") && a.stopPropagation();
86
87
  }}><div class="preview-card__footer-start">${this.renderOwner()}</div><slot name=actions-end></slot></div></section>`;
87
88
  }
88
89
  }
89
- w("arcgis-portal-group-browser-preview-card", x);
90
+ u("arcgis-portal-group-browser-preview-card", $);
90
91
  export {
91
- x as ArcgisPortalGroupBrowserPreviewCard
92
+ $ as ArcgisPortalGroupBrowserPreviewCard
92
93
  };
@@ -6,7 +6,7 @@ import type { PublicLitElement as LitElement } from "@arcgis/lumina";
6
6
  import type { InternalUIAction } from "../../types/tracking.js";
7
7
  import type { T9nMeta } from "@arcgis/lumina/controllers";
8
8
 
9
- export type PortalGroupCardProps = Partial<Pick<ArcgisPortalGroupCard, "disabled" | "indeterminate" | "link" | "linkHandler" | "name" | "newTab" | "preview" | "previewed" | "selected" | "selection" | "showBadges" | "showDateCreated" | "showDateUpdated" | "showOwner" | "showSummary" | "showViewableBy" | "user" | "view">>;
9
+ export type PortalGroupCardProps = Partial<Pick<ArcgisPortalGroupCard, "disabled" | "hideBadges" | "hideDateUpdated" | "hideOwner" | "hideViewableBy" | "indeterminate" | "link" | "linkHandler" | "name" | "newTab" | "preview" | "previewed" | "selected" | "selection" | "showDateCreated" | "showSummary" | "user" | "view">>;
10
10
 
11
11
  /**
12
12
  * A card for displaying portal group information.
@@ -25,6 +25,30 @@ export abstract class ArcgisPortalGroupCard extends LitElement {
25
25
  accessor disabled: boolean;
26
26
  /** Group data from search results or a loaded PortalGroup instance. */
27
27
  accessor group: PortalGroup;
28
+ /**
29
+ * Hide group badges.
30
+ *
31
+ * @default false
32
+ */
33
+ accessor hideBadges: boolean;
34
+ /**
35
+ * Hide last-updated detail.
36
+ *
37
+ * @default false
38
+ */
39
+ accessor hideDateUpdated: boolean;
40
+ /**
41
+ * Hide the owner information in the card footer.
42
+ *
43
+ * @default false
44
+ */
45
+ accessor hideOwner: boolean;
46
+ /**
47
+ * Hide information on who can view this group.
48
+ *
49
+ * @default false
50
+ */
51
+ accessor hideViewableBy: boolean;
28
52
  /**
29
53
  * Show the group as partially selected.
30
54
  *
@@ -101,42 +125,18 @@ export abstract class ArcgisPortalGroupCard extends LitElement {
101
125
  * @default "none"
102
126
  */
103
127
  accessor selection: GroupCardSelection;
104
- /**
105
- * Show group badges.
106
- *
107
- * @default true
108
- */
109
- accessor showBadges: boolean;
110
128
  /**
111
129
  * Show created date detail.
112
130
  *
113
131
  * @default false
114
132
  */
115
133
  accessor showDateCreated: boolean;
116
- /**
117
- * Show last-updated detail.
118
- *
119
- * @default true
120
- */
121
- accessor showDateUpdated: boolean;
122
- /**
123
- * Show the owner information in the card footer.
124
- *
125
- * @default true
126
- */
127
- accessor showOwner: boolean;
128
134
  /**
129
135
  * Show group summary text in card body.
130
136
  *
131
137
  * @default false
132
138
  */
133
139
  accessor showSummary: boolean;
134
- /**
135
- * Show information on who can view this group.
136
- *
137
- * @default true
138
- */
139
- accessor showViewableBy: boolean;
140
140
  /** Current signed-in portal user. */
141
141
  accessor user: PortalUser | undefined;
142
142
  /**
@@ -22,10 +22,10 @@ class B extends w {
22
22
  }
23
23
  this.selection === "multiple" && (this.selected = !this.selected, this.arcgisGroupCardSelect.emit({ group: this.group, selected: this.selected }));
24
24
  }
25
- }, this.hover = !1, this.isLoaded = !1, this.selected = !1, this.indeterminate = !1, this.view = "list", this.selection = "none", this.previewed = !1, this.showOwner = !0, this.showDateUpdated = !0, this.showDateCreated = !1, this.showViewableBy = !0, this.showSummary = !1, this.showBadges = !0, this.newTab = !1, this.disabled = !1, this.arcgisGroupBrowserCardPreview = m(), this.arcgisGroupBrowserInternalUIAction = m(), this.arcgisGroupCardSelect = m();
25
+ }, this.hover = !1, this.isLoaded = !1, this.selected = !1, this.indeterminate = !1, this.view = "list", this.selection = "none", this.previewed = !1, this.hideOwner = !1, this.hideDateUpdated = !1, this.showDateCreated = !1, this.hideViewableBy = !1, this.showSummary = !1, this.hideBadges = !1, this.newTab = !1, this.disabled = !1, this.arcgisGroupBrowserCardPreview = m(), this.arcgisGroupBrowserInternalUIAction = m(), this.arcgisGroupCardSelect = m();
26
26
  }
27
27
  static {
28
- this.properties = { hover: 16, isLoaded: 16, group: 0, user: 0, portal: 0, selected: 7, indeterminate: 7, view: 1, selection: 1, preview: 1, previewed: 5, name: 1, showOwner: 5, showDateUpdated: 5, showDateCreated: 5, showViewableBy: 5, showSummary: 5, showBadges: 5, link: 1, linkHandler: 0, newTab: 5, disabled: 7 };
28
+ this.properties = { hover: 16, isLoaded: 16, group: 0, user: 0, portal: 0, selected: 7, indeterminate: 7, view: 1, selection: 1, preview: 1, previewed: 5, name: 1, hideOwner: 5, hideDateUpdated: 5, showDateCreated: 5, hideViewableBy: 5, showSummary: 5, hideBadges: 5, link: 1, linkHandler: 0, newTab: 5, disabled: 7 };
29
29
  }
30
30
  static {
31
31
  this.styles = C;
@@ -68,17 +68,17 @@ class B extends w {
68
68
  };
69
69
  }
70
70
  renderCompactBadges(e) {
71
- return this.showBadges ? r`<arcgis-portal-group-badges appearance=solid .group=${e} .portal=${this.portal} class="group-card__badges--compact" scale=s show-tooltips width=narrow></arcgis-portal-group-badges>` : null;
71
+ return this.hideBadges ? null : r`<arcgis-portal-group-badges appearance=solid .group=${e} .portal=${this.portal} class="group-card__badges--compact" scale=s show-tooltips width=narrow></arcgis-portal-group-badges>`;
72
72
  }
73
73
  renderBadges(e) {
74
- return this.showBadges ? r`<arcgis-portal-group-badges .appearance=${this.hover ? "outline-fill" : "solid"} .group=${e} .portal=${this.portal} width=full class="group-card__badges group-card__badges--responsive group-card__detail group-card__divider" scale=s show-tooltips></arcgis-portal-group-badges>` : null;
74
+ return this.hideBadges ? null : r`<arcgis-portal-group-badges .appearance=${this.hover ? "outline-fill" : "solid"} .group=${e} .portal=${this.portal} width=full class="group-card__badges group-card__badges--responsive group-card__detail group-card__divider" scale=s show-tooltips></arcgis-portal-group-badges>`;
75
75
  }
76
76
  renderDetails(e, t) {
77
77
  return r`<div class="group-card__details">${this.showDateCreated && !!e.created && r`<span class="group-card__detail group-card__divider">${h(this.messages.created ?? "", {
78
78
  date: _(e.created, { dateStyle: "medium" })
79
- })}</span>` || ""}${this.showDateUpdated && !!e.modified && r`<span class="group-card__detail group-card__divider">${h(this.messages.lastUpdated ?? "", {
79
+ })}</span>` || ""}${!this.hideDateUpdated && !!e.modified && r`<span class="group-card__detail group-card__divider">${h(this.messages.lastUpdated ?? "", {
80
80
  date: _(e.modified, { dateStyle: "medium" })
81
- })}</span>` || ""}${this.showViewableBy && r`<span class="group-card__detail group-card__divider"><calcite-icon class="group-card__detail__icon" .icon=${t.icon} scale=s></calcite-icon>${h(this.messages.viewableBy ?? "", { level: t.text })}</span>` || ""}${this.renderBadges(e)}</div>`;
81
+ })}</span>` || ""}${!this.hideViewableBy && r`<span class="group-card__detail group-card__divider"><calcite-icon class="group-card__detail__icon" .icon=${t.icon} scale=s></calcite-icon>${h(this.messages.viewableBy ?? "", { level: t.text })}</span>` || ""}${this.renderBadges(e)}</div>`;
82
82
  }
83
83
  renderListContent(e, t, o) {
84
84
  return r`<div class="group-card-flex group-card__top">${this.renderSelectionInput()}<div class="group-card__thumbnail"><arcgis-portal-group-thumbnail .group=${t} .portal=${this.portal} scale=xl></arcgis-portal-group-thumbnail></div><div class="group-card-flex-1"><div class="group-card-flex"><div class="group-card__content"><h3 class=${g({ "group-card__title": !0, "group-card__title--padded": this.showSummary && !!e.snippet })}><span class="group-card__title__span">${e.title}</span></h3>${this.showSummary && !!e.snippet && r`<p class="group-card__summary">${e.snippet.length > 250 ? `${e.snippet.substring(0, 250)}...` : e.snippet}</p>` || ""}${this.renderDetails(e, o)}<slot name=content-end></slot></div></div></div></div>`;
@@ -148,7 +148,7 @@ class B extends w {
148
148
  this.hover = !0;
149
149
  }} @mouseout=${() => {
150
150
  this.hover = !1;
151
- }}>${this.renderListContent(e, n, s)}</div>`}<div class="group-card__footer"><div class="group-card__footer__start"><slot name=actions-start></slot>${this.showOwner && r`<div class="group-card__profile-wrap"><arcgis-portal-user-popup class="group-card__owner" .portal=${this.portal} .username=${e.owner ?? void 0} underline @arcgisUserPopupInternalUIAction=${({ detail: i, stopPropagation: l }) => {
151
+ }}>${this.renderListContent(e, n, s)}</div>`}<div class="group-card__footer"><div class="group-card__footer__start"><slot name=actions-start></slot>${!this.hideOwner && r`<div class="group-card__profile-wrap"><arcgis-portal-user-popup class="group-card__owner" .portal=${this.portal} .username=${e.owner ?? void 0} underline @arcgisUserPopupInternalUIAction=${({ detail: i, stopPropagation: l }) => {
152
152
  l(), this.arcgisGroupBrowserInternalUIAction.emit(i);
153
153
  }}></arcgis-portal-user-popup></div>` || ""}</div><div>${this.preview === "action" && r`<calcite-button scale=s .appearance=${u ? "solid" : "outline-fill"} kind=neutral @click=${() => {
154
154
  this.arcgisGroupBrowserCardPreview.emit(this.group);
@@ -0,0 +1,74 @@
1
+ /// <reference path="../../index.d.ts" />
2
+ import type Portal from "@arcgis/core/portal/Portal.js";
3
+ import type PortalItem from "@arcgis/core/portal/PortalItem.js";
4
+ import type PortalUser from "@arcgis/core/portal/PortalUser.js";
5
+ import type { PublicLitElement as LitElement } from "@arcgis/lumina";
6
+ import type { FavoriteUpdate } from "../arcgis-portal-item-favorite/utils.js";
7
+ import type { T9nMeta } from "@arcgis/lumina/controllers";
8
+ import type { Dropdown as Dropdown } from "@esri/calcite-components/components/calcite-dropdown";
9
+
10
+ /** Configurable overflow menu for an item. */
11
+ export abstract class ArcgisPortalItemActions extends LitElement {
12
+ /** Optional actions to render in the menu. */
13
+ accessor actions: PortalItemAction[];
14
+ /** Partial item JSON from search results or a loaded PortalItem instance. */
15
+ accessor item: PortalItem;
16
+ /** Optional keyboard handler for the trigger action. */
17
+ accessor keyHandler: ((e: KeyboardEvent, dropdown: Dropdown) => void) | undefined;
18
+ /** The more options text used by assistive technology. */
19
+ accessor label: string;
20
+ /** @internal */
21
+ protected messages: {
22
+ add: string;
23
+ remove: string;
24
+ } & T9nMeta<{
25
+ add: string;
26
+ remove: string;
27
+ }>;
28
+ /** Current Portal instance. */
29
+ accessor portal: Portal;
30
+ /** Text for the preview option. */
31
+ accessor previewText: string | undefined;
32
+ /**
33
+ * Allow the user to add and remove from favorites.
34
+ *
35
+ * @default false
36
+ */
37
+ accessor showFavorite: boolean;
38
+ /**
39
+ * Allow the user to open preview from the actions menu.
40
+ *
41
+ * @default false
42
+ */
43
+ accessor showPreview: boolean;
44
+ accessor tabIndexOverride: number | undefined;
45
+ /** Currently signed-in Portal user. */
46
+ accessor user: PortalUser | undefined;
47
+ setFocus(): Promise<void>;
48
+ /** Fires when user clicks an action. */
49
+ readonly arcgisItemActionClick: import("@arcgis/lumina").TargetedEvent<this, string>;
50
+ /** Legacy passthrough event retained for compatibility. */
51
+ readonly arcgisItemActions: import("@arcgis/lumina").TargetedEvent<this, unknown>;
52
+ /** Fires when user opens the action menu. */
53
+ readonly arcgisItemActionsOpen: import("@arcgis/lumina").TargetedEvent<this, PortalItemActionsOpenDetail>;
54
+ /** Fires when user changes the favorite status. */
55
+ readonly arcgisItemFavoriteUpdate: import("@arcgis/lumina").TargetedEvent<this, FavoriteUpdate>;
56
+ readonly "@eventTypes": {
57
+ arcgisItemActionClick: ArcgisPortalItemActions["arcgisItemActionClick"]["detail"];
58
+ arcgisItemActions: ArcgisPortalItemActions["arcgisItemActions"]["detail"];
59
+ arcgisItemActionsOpen: ArcgisPortalItemActions["arcgisItemActionsOpen"]["detail"];
60
+ arcgisItemFavoriteUpdate: ArcgisPortalItemActions["arcgisItemFavoriteUpdate"]["detail"];
61
+ };
62
+ }
63
+
64
+ export interface PortalItemAction {
65
+ action?: () => void;
66
+ id?: string;
67
+ link?: string;
68
+ newTab?: boolean;
69
+ text: string;
70
+ }
71
+
72
+ export interface PortalItemActionsOpenDetail {
73
+ el: Element | HTMLButtonElement;
74
+ }