@arcgis/portal-components 5.2.0-next.2 → 5.2.0-next.21

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 (100) hide show
  1. package/dist/cdn/25UUUQAQ.js +71 -0
  2. package/dist/cdn/{OQDPULPD.js → 2RGMWFHB.js} +1 -1
  3. package/dist/cdn/3KS5IDT2.js +2 -0
  4. package/dist/cdn/{AQWTJKUH.js → 3MQIRMUM.js} +9 -7
  5. package/dist/cdn/{JNRN6DTV.js → 47NPIL2S.js} +1 -1
  6. package/dist/cdn/{LQ3DMZ3K.js → 5VHBNEN3.js} +1 -1
  7. package/dist/cdn/6AGZRMJC.js +2 -0
  8. package/dist/cdn/6W2IHKCA.js +2 -0
  9. package/dist/cdn/{WOZDQW3S.js → DBKSQGEI.js} +1 -1
  10. package/dist/cdn/DFTUMKSN.js +3 -0
  11. package/dist/cdn/{YMPTDKT6.js → EETBNQU2.js} +1 -1
  12. package/dist/cdn/EHRAFAEA.js +65 -0
  13. package/dist/cdn/EKO6SVAF.js +2 -0
  14. package/dist/cdn/{GHQ3ZW4U.js → FI45QCN2.js} +1 -1
  15. package/dist/cdn/GEIZTD7F.js +2 -0
  16. package/dist/cdn/{ZTHTFEYA.js → HGSK6OFA.js} +1 -1
  17. package/dist/cdn/{LAFNDBTQ.js → HIRM34QB.js} +1 -1
  18. package/dist/cdn/HMBSJR37.js +2 -0
  19. package/dist/cdn/KT7PE6UE.js +2 -0
  20. package/dist/cdn/{BEHLBKKM.js → KY7Q7DH3.js} +1 -1
  21. package/dist/cdn/{5DPWJ7DI.js → KZWW4BWJ.js} +1 -1
  22. package/dist/cdn/{N6G6Z7BF.js → MH7KZ5G3.js} +256 -154
  23. package/dist/cdn/MLTQECPL.js +2 -0
  24. package/dist/cdn/{G47ZZQYL.js → OKRYML2G.js} +1 -1
  25. package/dist/cdn/PDL3DPMG.js +2 -0
  26. package/dist/cdn/{QNUYUNEY.js → QJ2UHWPU.js} +1 -1
  27. package/dist/cdn/{GT26WGJS.js → SXZRHHXC.js} +1 -1
  28. package/dist/cdn/TSLW4FSA.js +2 -0
  29. package/dist/cdn/{72N3KAXN.js → TW4LFQA5.js} +1 -1
  30. package/dist/cdn/{7WZHZP6U.js → UR7W4CEV.js} +8 -2
  31. package/dist/cdn/{W6PSG4GX.js → VRXKORTR.js} +9 -4
  32. package/dist/cdn/VXCB2YBR.js +3 -0
  33. package/dist/cdn/{DHHSKOUY.js → WJ2NMHDE.js} +1 -1
  34. package/dist/cdn/{2UUZHENH.js → WSNLUGEP.js} +1 -1
  35. package/dist/cdn/{53MSUMA3.js → XCZSPNKS.js} +16 -0
  36. package/dist/cdn/{K3HS2LQ7.js → YECI7XG3.js} +1 -1
  37. package/dist/cdn/ZDLFZJBT.js +2 -0
  38. package/dist/cdn/assets/portal-group-badges/t9n/messages.en.json +1 -0
  39. package/dist/cdn/assets/portal-group-card/t9n/messages.en.json +1 -0
  40. package/dist/cdn/assets/portal-item-type/icons/parquetfeaturelayer16.svg +1 -0
  41. package/dist/cdn/assets/portal-item-type/icons/parquetfeaturelayer32.svg +1 -0
  42. package/dist/cdn/assets/portal-item-type/icons/storymapframe16.svg +1 -0
  43. package/dist/cdn/assets/portal-item-type/icons/storymapframe32.svg +1 -0
  44. package/dist/cdn/assets/portal-item-type/t9n/messages.en.json +1 -1
  45. package/dist/cdn/assets/portal-user-popup/t9n/messages.en.json +1 -0
  46. package/dist/cdn/index.js +1 -1
  47. package/dist/cdn/main.css +1 -1
  48. package/dist/chunks/groups.js +7 -83
  49. package/dist/chunks/item2.js +86 -0
  50. package/dist/chunks/portal.js +48 -8
  51. package/dist/chunks/user2.js +26 -25
  52. package/dist/components/arcgis-portal-ai-assistant/agents/types.d.ts +11 -2
  53. package/dist/components/arcgis-portal-ai-assistant/customElement.d.ts +4 -2
  54. package/dist/components/arcgis-portal-ai-assistant/customElement.js +797 -488
  55. package/dist/components/arcgis-portal-ai-assistant-interrupt/customElement.js +10 -10
  56. package/dist/components/arcgis-portal-group-badges/customElement.d.ts +102 -0
  57. package/dist/components/arcgis-portal-group-badges/customElement.js +50 -0
  58. package/dist/components/arcgis-portal-group-badges/index.d.ts +1 -0
  59. package/dist/components/arcgis-portal-group-badges/index.js +3 -0
  60. package/dist/components/arcgis-portal-group-badges/types.d.ts +3 -0
  61. package/dist/components/arcgis-portal-group-card/customElement.d.ts +167 -0
  62. package/dist/components/arcgis-portal-group-card/customElement.js +187 -0
  63. package/dist/components/arcgis-portal-group-card/index.d.ts +1 -0
  64. package/dist/components/arcgis-portal-group-card/index.js +8 -0
  65. package/dist/components/arcgis-portal-group-thumbnail/customElement.d.ts +32 -0
  66. package/dist/components/arcgis-portal-group-thumbnail/customElement.js +153 -0
  67. package/dist/components/arcgis-portal-group-thumbnail/index.d.ts +1 -0
  68. package/dist/components/arcgis-portal-group-thumbnail/index.js +3 -0
  69. package/dist/components/arcgis-portal-item-type/customElement.d.ts +2 -0
  70. package/dist/components/arcgis-portal-item-type/customElement.js +45 -37
  71. package/dist/components/arcgis-portal-mentionable-text-area/customElement.js +1 -1
  72. package/dist/components/arcgis-portal-replacement-item-redirect/customElement.js +53 -42
  73. package/dist/components/arcgis-portal-user-popup/customElement.d.ts +111 -0
  74. package/dist/components/arcgis-portal-user-popup/customElement.js +231 -0
  75. package/dist/components/arcgis-portal-user-popup/index.d.ts +1 -0
  76. package/dist/components/arcgis-portal-user-popup/index.js +5 -0
  77. package/dist/components/arcgis-portal-voice-input/customElement.d.ts +1 -1
  78. package/dist/docs/api.json +1 -1
  79. package/dist/docs/docs.json +1 -1
  80. package/dist/docs/vscode.html-custom-data.json +1 -1
  81. package/dist/docs/web-types.json +1 -1
  82. package/dist/index.d.ts +30 -2
  83. package/dist/loader.js +8 -4
  84. package/dist/types/lumina.d.ts +26 -1
  85. package/dist/types/preact.d.ts +30 -1
  86. package/dist/types/react.d.ts +34 -1
  87. package/dist/types/stencil.d.ts +26 -1
  88. package/dist/types/tracking.d.ts +10 -0
  89. package/dist/types/user.d.ts +2 -2
  90. package/package.json +7 -7
  91. package/dist/cdn/5VSDGPHH.js +0 -2
  92. package/dist/cdn/CI5ENGVT.js +0 -2
  93. package/dist/cdn/EVDOPN3G.js +0 -54
  94. package/dist/cdn/GNOZCQ34.js +0 -2
  95. package/dist/cdn/KEKBRUUC.js +0 -2
  96. package/dist/cdn/RNLVNDGG.js +0 -2
  97. package/dist/cdn/SM4GWLRA.js +0 -66
  98. package/dist/cdn/TMYTUOSS.js +0 -2
  99. package/dist/cdn/YG5YYL6X.js +0 -2
  100. /package/dist/cdn/{B7633S2A.js → 5NIJVBS7.js} +0 -0
@@ -1,18 +1,18 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import { c as l } from "../../chunks/runtime.js";
3
- import { css as o, html as n } from "lit";
4
- import { LitElement as u, createEvent as a } from "@arcgis/lumina";
2
+ import { c } from "../../chunks/runtime.js";
3
+ import { css as o, html as a } from "lit";
4
+ import { LitElement as u, createEvent as n } from "@arcgis/lumina";
5
5
  import m from "@esri/arcgis-html-sanitizer";
6
6
  import { unsafeHTML as p } from "lit/directives/unsafe-html.js";
7
7
  import { marked as r } from "marked";
8
8
  import { u as g } from "../../chunks/useT9n.js";
9
9
  import { a as d } from "../../chunks/functionalities.js";
10
- const h = o`.interrupt-container{display:flex;flex-direction:column;gap:.75rem}.interrupt-actions{display:flex;justify-content:flex-end;gap:.5rem}.interrupt-message{white-space:normal}// \`:where()\` to reset styles of common elements in the message content without increasing specificity .interrupt-message :where(p){margin:0}// \`:where()\` to reset styles of list elements and add consistent indentation for nested lists without increasing specificity .interrupt-message :where(ul,ol){margin:0;padding-inline-start:1.25rem}`;
10
+ const h = o`.interrupt-container{display:flex;flex-direction:column;gap:.75rem}.interrupt-actions{display:flex;justify-content:flex-end;gap:.5rem}.interrupt-message{white-space:normal}.interrupt-message :where(p){margin:0}.interrupt-message :where(ul,ol){margin:0;padding-inline-start:1.25rem}`;
11
11
  r.use({ gfm: !0, breaks: !0, async: !1 });
12
12
  const f = new m();
13
13
  class b extends u {
14
14
  constructor() {
15
- super(...arguments), this.#t = [], this._messages = g({ blocking: !0 }), this.arcgisCancel = a(), this.arcgisSubmit = a();
15
+ super(...arguments), this.#t = [], this._messages = g({ blocking: !0 }), this.arcgisCancel = n(), this.arcgisSubmit = n();
16
16
  }
17
17
  static {
18
18
  this.properties = { type: 1, message: 1, options: 0 };
@@ -29,11 +29,11 @@ class b extends u {
29
29
  const { _messages: t, type: i, options: s } = this;
30
30
  switch (i) {
31
31
  case "single-select":
32
- return n`<calcite-list class="interrupt-list" .label=${t.singleSelectLabel} selection-mode=single-persist @calciteListChange=${(e) => this.#t = e.target.selectedItems[0]?.value}>${s?.map((e) => n`<calcite-list-item .label=${e} .value=${e}></calcite-list-item>`)}</calcite-list>`;
32
+ return a`<calcite-list class="interrupt-list" .label=${t.singleSelectLabel} selection-mode=single-persist @calciteListChange=${(e) => this.#t = e.target.selectedItems[0]?.value}>${s?.map((e) => a`<calcite-list-item .label=${e} .value=${e}></calcite-list-item>`)}</calcite-list>`;
33
33
  case "multi-select":
34
- return n`<calcite-list class="interrupt-list" .label=${t.multiSelectLabel} selection-mode=multiple @calciteListChange=${(e) => this.#t = e.target.selectedItems.map((c) => c.value)}>${s?.map((e) => n`<calcite-list-item .label=${e} .value=${e}></calcite-list-item>`)}</calcite-list>`;
34
+ return a`<calcite-list class="interrupt-list" .label=${t.multiSelectLabel} selection-mode=multiple @calciteListChange=${(e) => this.#t = e.target.selectedItems.map((l) => l.value)}>${s?.map((e) => a`<calcite-list-item .label=${e} .value=${e}></calcite-list-item>`)}</calcite-list>`;
35
35
  case "text-input":
36
- return n`<calcite-input class="interrupt-input" .label=${t.textInputLabel} @calciteInputInput=${(e) => this.#t = e.target.value}></calcite-input>`;
36
+ return a`<calcite-input class="interrupt-input" .label=${t.textInputLabel} @calciteInputInput=${(e) => this.#t = e.target.value}></calcite-input>`;
37
37
  case "boolean-choice":
38
38
  return null;
39
39
  default:
@@ -42,10 +42,10 @@ class b extends u {
42
42
  }
43
43
  render() {
44
44
  const { _messages: t, type: i } = this, s = i === "boolean-choice";
45
- return n`<div class="interrupt-container"><calcite-notice open kind=neutral width=full><div slot=title>${s ? t.titleConfirm : t.titleInput}</div><div slot=message class="interrupt-message">${p(this._renderMessageContent())}</div></calcite-notice>${this._renderInterruptInput()}<div class="interrupt-actions"><calcite-button appearance=outline @click=${() => this.arcgisCancel.emit()}>${s ? t.cancelButton : t.skipButton}</calcite-button><calcite-button appearance=solid @click=${() => this.arcgisSubmit.emit(i === "boolean-choice" ? !0 : this.#t)}>${s ? t.confirmButton : t.submitButton}</calcite-button></div></div>`;
45
+ return a`<div class="interrupt-container"><calcite-notice open kind=neutral width=full><div slot=title>${s ? t.titleConfirm : t.titleInput}</div><div slot=message class="interrupt-message">${p(this._renderMessageContent())}</div></calcite-notice>${this._renderInterruptInput()}<div class="interrupt-actions"><calcite-button appearance=outline @click=${() => this.arcgisCancel.emit()}>${s ? t.cancelButton : t.skipButton}</calcite-button><calcite-button appearance=solid @click=${() => this.arcgisSubmit.emit(i === "boolean-choice" ? !0 : this.#t)}>${s ? t.confirmButton : t.submitButton}</calcite-button></div></div>`;
46
46
  }
47
47
  }
48
- l("arcgis-portal-ai-assistant-interrupt", b);
48
+ c("arcgis-portal-ai-assistant-interrupt", b);
49
49
  export {
50
50
  b as ArcgisPortalAiAssistantInterrupt
51
51
  };
@@ -0,0 +1,102 @@
1
+ /// <reference path="../../index.d.ts" />
2
+ import type PortalGroup from "@arcgis/core/portal/PortalGroup.js";
3
+ import type { PublicLitElement as LitElement } from "@arcgis/lumina";
4
+ import type { GroupBadgesPortal } from "./types.js";
5
+ import type { T9nMeta } from "@arcgis/lumina/controllers";
6
+ import type { Chip as Chip } from "@esri/calcite-components/components/calcite-chip";
7
+
8
+ /** Groups can have special statuses and capabilities. This component derives and renders badges for those states. */
9
+ export abstract class ArcgisPortalGroupBadges extends LitElement {
10
+ /** @internal */
11
+ protected _messages: {
12
+ Collaboration: {
13
+ title: string;
14
+ tooltip: string;
15
+ };
16
+ FeaturedContent: {
17
+ title: string;
18
+ tooltip: string;
19
+ };
20
+ Gallery: {
21
+ title: string;
22
+ tooltip: string;
23
+ };
24
+ OpenData: {
25
+ title: string;
26
+ tooltip: string;
27
+ };
28
+ SharedUpdate: {
29
+ title: string;
30
+ tooltip: string;
31
+ };
32
+ Partnered: {
33
+ title: string;
34
+ tooltip: string;
35
+ };
36
+ AnyOrg: {
37
+ title: string;
38
+ tooltip: string;
39
+ };
40
+ loading: string;
41
+ } & T9nMeta<{
42
+ Collaboration: {
43
+ title: string;
44
+ tooltip: string;
45
+ };
46
+ FeaturedContent: {
47
+ title: string;
48
+ tooltip: string;
49
+ };
50
+ Gallery: {
51
+ title: string;
52
+ tooltip: string;
53
+ };
54
+ OpenData: {
55
+ title: string;
56
+ tooltip: string;
57
+ };
58
+ SharedUpdate: {
59
+ title: string;
60
+ tooltip: string;
61
+ };
62
+ Partnered: {
63
+ title: string;
64
+ tooltip: string;
65
+ };
66
+ AnyOrg: {
67
+ title: string;
68
+ tooltip: string;
69
+ };
70
+ loading: string;
71
+ }>;
72
+ /** Appearance of the chips used for group badges. */
73
+ accessor appearance: Chip["appearance"] | undefined;
74
+ /**
75
+ * Reflected flag that indicates no badges were generated for the current input.
76
+ *
77
+ * @default false
78
+ */
79
+ accessor empty: boolean;
80
+ /** PortalGroup instance for deriving badge states from sourceJSON. */
81
+ accessor group: PortalGroup | undefined;
82
+ /** Current Portal instance. */
83
+ accessor portal: GroupBadgesPortal | undefined;
84
+ /**
85
+ * Size of each badge chip.
86
+ *
87
+ * @default "m"
88
+ */
89
+ accessor scale: Chip["scale"];
90
+ /**
91
+ * Enables tooltip text for each badge.
92
+ *
93
+ * @default false
94
+ */
95
+ accessor showTooltips: boolean;
96
+ /**
97
+ * Full width shows label text, narrow renders icon only.
98
+ *
99
+ * @default "full"
100
+ */
101
+ accessor width: "full" | "narrow";
102
+ }
@@ -0,0 +1,50 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ import { c as g } from "../../chunks/runtime.js";
3
+ import { nothing as m, safeClassMap as h, LitElement as u } from "@arcgis/lumina";
4
+ import { u as b } from "../../chunks/useT9n.js";
5
+ import { html as c, css as f } from "lit";
6
+ import { g as w, a as $, b as x, i as y, c as G, d as v } from "../../chunks/groups.js";
7
+ const O = ({ appearance: a, badgeType: t, class: e, messages: r, scale: i, showTooltip: o, width: n }) => {
8
+ const s = r[t] ?? { title: t, tooltip: "" }, d = C[t], l = n === "narrow", p = `portal-group-badge-${t}`;
9
+ return c`<calcite-chip id=${p ?? m} class=${h({
10
+ badge: !0,
11
+ "badge--red": t === "SharedUpdate",
12
+ narrow: l,
13
+ [`narrow--${i}`]: l,
14
+ [e]: !0
15
+ })} .value=${t} tabindex=0 .scale=${i} .appearance=${a} .label=${s.title} .icon=${d}>${l ? null : s.title}</calcite-chip>${o ? c`<calcite-tooltip .referenceElement=${p} close-on-click placement=bottom-start offset-distance=6 offset-skidding=0>${l ? c`<h3 class="tooltip-title">${s.title}</h3>` : null}<p class="tooltip-text">${s.tooltip}</p></calcite-tooltip>` : null}`;
16
+ }, C = {
17
+ Collaboration: "collaboration",
18
+ FeaturedContent: "home",
19
+ Gallery: "images",
20
+ OpenData: "open-data",
21
+ SharedUpdate: "configure-editing",
22
+ Partnered: "partnered-collaboration",
23
+ AnyOrg: "zoom-to-object"
24
+ }, I = f`:host{display:flex;flex-wrap:wrap}.portal-group-badges__badge{display:inline-block;margin-inline-end:.25rem}.badge{--portal-group-badge-color: var(--calcite-color-brand);border:0}.badge--red{--portal-group-badge-color: var(--calcite-color-status-danger)}.narrow{box-sizing:border-box;width:2rem;--calcite-chip-spacing-unit-l: 0}.image{border-radius:0;display:inline-flex;align-items:center;justify-content:center;margin-inline-start:.5rem}.image svg{color:var(--portal-group-badge-color)}.narrow--s{width:1.5rem;.image{margin-inline-start:0}}.narrow--m{.image{margin-inline-start:0}}.narrow--l{width:2.75rem;.image{margin-inline-start:.25rem}}.tooltip-title{font-size:var(--calcite-font-size--1);color:var(--calcite-color-text-1);margin:0 0 .25rem;padding:0}.tooltip-text{font-size:var(--calcite-font-size--2);color:var(--calcite-color-text-1);margin:0;padding:0}`;
25
+ function S(a, t) {
26
+ const e = [], r = w(a), i = $(a), o = x(a);
27
+ return t.id && (r.includes("updateitemcontrol") && e.push("SharedUpdate"), y(a) && i === t.id && e.push("OpenData"), t.featuredItemsGroupQuery === `id:${a.id}` && e.push("Gallery")), (G(a).collaborationInfo?.collaborationId || v(a)) && e.push("Collaboration"), !o && !t.isPortal && i !== "none" && e.push("AnyOrg"), o === "collaboration" && e.push("Partnered"), e.includes("SharedUpdate") && !e.includes("Partnered") && i !== t.id && e.splice(e.indexOf("SharedUpdate"), 1), e;
28
+ }
29
+ class z extends u {
30
+ constructor() {
31
+ super(...arguments), this._messages = b({ blocking: !0 }), this.badges = [], this.width = "full", this.scale = "m", this.showTooltips = !1, this.empty = !1;
32
+ }
33
+ static {
34
+ this.properties = { badges: 16, group: 0, portal: 0, width: 1, appearance: 1, scale: 1, showTooltips: 5, empty: 7 };
35
+ }
36
+ static {
37
+ this.styles = I;
38
+ }
39
+ willUpdate(t) {
40
+ (t.has("group") || t.has("portal")) && (this.badges = this.group && this.portal ? S(this.group, this.portal) : [], this.empty = this.badges.length === 0);
41
+ }
42
+ render() {
43
+ const { appearance: t, badges: e, scale: r, showTooltips: i, width: o } = this;
44
+ return e.map((n) => O({ appearance: t, badgeType: n, class: "portal-group-badges__badge", messages: this._messages, scale: r, showTooltip: i, width: o }));
45
+ }
46
+ }
47
+ g("arcgis-portal-group-badges", z);
48
+ export {
49
+ z as ArcgisPortalGroupBadges
50
+ };
@@ -0,0 +1 @@
1
+ export * from "./customElement.js";
@@ -0,0 +1,3 @@
1
+ import "@esri/calcite-components/components/calcite-chip";
2
+ import "@esri/calcite-components/components/calcite-tooltip";
3
+ export * from "./customElement.js";
@@ -0,0 +1,3 @@
1
+ import type Portal from "@arcgis/core/portal/Portal.js";
2
+
3
+ export type GroupBadgesPortal = Partial<Pick<Portal, "featuredItemsGroupQuery" | "homePageFeaturedContent" | "id" | "isPortal">>;
@@ -0,0 +1,167 @@
1
+ /// <reference path="../../index.d.ts" />
2
+ import type Portal from "@arcgis/core/portal/Portal.js";
3
+ import type PortalGroup from "@arcgis/core/portal/PortalGroup.js";
4
+ import type PortalUser from "@arcgis/core/portal/PortalUser.js";
5
+ import type { PublicLitElement as LitElement } from "@arcgis/lumina";
6
+ import type { InternalUIAction } from "../../types/tracking.js";
7
+ import type { T9nMeta } from "@arcgis/lumina/controllers";
8
+
9
+ /**
10
+ * A card for displaying portal group information.
11
+ *
12
+ * @slot [content-top] - Inserted content appears above the card body.
13
+ * @slot [content-end] - Inserted content appears beneath the card details.
14
+ * @slot [actions-start] - Inserted content appears in the footer before owner information.
15
+ * @slot [actions-end] - Inserted content appears in the footer end area.
16
+ */
17
+ export abstract class ArcgisPortalGroupCard extends LitElement {
18
+ /**
19
+ * Disable interaction when true.
20
+ *
21
+ * @default false
22
+ */
23
+ accessor disabled: boolean;
24
+ /** Partial group JSON from community/groups. */
25
+ accessor group: PortalGroup;
26
+ /**
27
+ * Show the group as partially selected.
28
+ *
29
+ * @default false
30
+ */
31
+ accessor indeterminate: boolean;
32
+ /** Making this non-empty turns the top section into a link. */
33
+ accessor link: string | undefined;
34
+ /** Optional callback that runs when the link is activated. */
35
+ accessor linkHandler: ((group: PortalGroup) => void) | undefined;
36
+ /** @internal */
37
+ protected messages: {
38
+ lastUpdated: string;
39
+ created: string;
40
+ viewableBy: string;
41
+ everyone: string;
42
+ organization: string;
43
+ groupMembers: string;
44
+ select: string;
45
+ preview: string;
46
+ hidePreview: string;
47
+ openInPortal: string;
48
+ badges: {
49
+ collaboration: string;
50
+ viewOnly: string;
51
+ autoJoin: string;
52
+ hiddenMembers: string;
53
+ };
54
+ } & T9nMeta<{
55
+ lastUpdated: string;
56
+ created: string;
57
+ viewableBy: string;
58
+ everyone: string;
59
+ organization: string;
60
+ groupMembers: string;
61
+ select: string;
62
+ preview: string;
63
+ hidePreview: string;
64
+ openInPortal: string;
65
+ badges: {
66
+ collaboration: string;
67
+ viewOnly: string;
68
+ autoJoin: string;
69
+ hiddenMembers: string;
70
+ };
71
+ }>;
72
+ /** Name of the radio button control for accessibility. */
73
+ accessor name: string | undefined;
74
+ /**
75
+ * Open link in new tab when true.
76
+ *
77
+ * @default false
78
+ */
79
+ accessor newTab: boolean;
80
+ /** Current portal instance. */
81
+ accessor portal: Portal;
82
+ /** Optionally emit preview behavior on click of card. */
83
+ accessor preview: GroupCardPreview | undefined;
84
+ /**
85
+ * Whether this card is currently previewed by parent browser state.
86
+ *
87
+ * @default false
88
+ */
89
+ accessor previewed: boolean;
90
+ /**
91
+ * Set to true to mark group as selected.
92
+ *
93
+ * @default false
94
+ */
95
+ accessor selected: boolean;
96
+ /**
97
+ * Type of selection behavior.
98
+ *
99
+ * @default "none"
100
+ */
101
+ accessor selection: GroupCardSelection;
102
+ /**
103
+ * Show group badges.
104
+ *
105
+ * @default true
106
+ */
107
+ accessor showBadges: boolean;
108
+ /**
109
+ * Show created date detail.
110
+ *
111
+ * @default false
112
+ */
113
+ accessor showDateCreated: boolean;
114
+ /**
115
+ * Show last-updated detail.
116
+ *
117
+ * @default true
118
+ */
119
+ accessor showDateUpdated: boolean;
120
+ /**
121
+ * Show the owner information in the card footer.
122
+ *
123
+ * @default true
124
+ */
125
+ accessor showOwner: boolean;
126
+ /**
127
+ * Show group summary text in card body.
128
+ *
129
+ * @default false
130
+ */
131
+ accessor showSummary: boolean;
132
+ /**
133
+ * Show information on who can view this group.
134
+ *
135
+ * @default true
136
+ */
137
+ accessor showViewableBy: boolean;
138
+ /** Current signed-in portal user. */
139
+ accessor user: PortalUser | undefined;
140
+ /**
141
+ * Select which view to use for the card.
142
+ *
143
+ * @default "list"
144
+ */
145
+ accessor view: GroupCardView;
146
+ restoreFocus(): Promise<void>;
147
+ /** Emitted when preview is requested from card interaction. */
148
+ readonly arcgisGroupBrowserCardPreview: import("@arcgis/lumina").TargetedEvent<this, PortalGroup | null>;
149
+ /** Fires on internal component interaction for telemetry. */
150
+ readonly arcgisGroupBrowserInternalUIAction: import("@arcgis/lumina").TargetedEvent<this, InternalUIAction>;
151
+ /** Emitted when the group is selected or deselected. */
152
+ readonly arcgisGroupCardSelect: import("@arcgis/lumina").TargetedEvent<this, {
153
+ group: PortalGroup;
154
+ selected: boolean;
155
+ }>;
156
+ readonly "@eventTypes": {
157
+ arcgisGroupBrowserCardPreview: ArcgisPortalGroupCard["arcgisGroupBrowserCardPreview"]["detail"];
158
+ arcgisGroupBrowserInternalUIAction: ArcgisPortalGroupCard["arcgisGroupBrowserInternalUIAction"]["detail"];
159
+ arcgisGroupCardSelect: ArcgisPortalGroupCard["arcgisGroupCardSelect"]["detail"];
160
+ };
161
+ }
162
+
163
+ export type GroupCardView = "compact" | "list";
164
+
165
+ export type GroupCardSelection = "multiple" | "none" | "single";
166
+
167
+ export type GroupCardPreview = "action" | "top";
@@ -0,0 +1,187 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ import { c as k } from "../../chunks/runtime.js";
3
+ import { css as y, html as r } from "lit";
4
+ import { LitElement as C, createEvent as w, safeClassMap as g, nothing as l } from "@arcgis/lumina";
5
+ import { createRef as F, ref as $ } from "lit/directives/ref.js";
6
+ import { u as z } from "../../chunks/useT9n.js";
7
+ import { a as E } from "../../chunks/functionalities.js";
8
+ const o = {
9
+ md: 840,
10
+ sm: 580,
11
+ xs: 480,
12
+ xxs: 360
13
+ }, B = y`:host{display:block;min-width:0}.group-card{position:relative;display:flex;height:100%;flex-direction:column;color:var(--calcite-color-text-1);opacity:0;box-shadow:none;transition-duration:.15s;outline-color:transparent;background-color:var(--calcite-color-foreground-1);transition-property:background-color,outline,outline-offset,opacity;border:1px solid var(--calcite-color-border-3);&:focus{z-index:10;outline:2px solid var(--calcite-color-brand);outline-offset:-2px}}.group-card--loaded{opacity:1}.group-card--selected{border-color:var(--calcite-color-brand)}.group-card--hoverable{cursor:pointer}.group-card--disabled{opacity:.5}.group-card__top{padding:1rem}.group-card__upper{flex:1 1 0%;background-color:var(--calcite-color-foreground-1);transition:all var(--calcite-animation-timing) ease-in-out 0s,outline 0s,outline-offset 0s}.group-card__upper:hover{background-color:var(--calcite-color-background)}.group-card__upper--compact{display:flex;align-items:center;padding:.5rem .75rem}.group-card__upper--link{color:var(--calcite-color-text-1);text-decoration-line:none;outline-color:transparent;&:focus{z-index:10;outline:2px solid var(--calcite-color-brand);outline-offset:2px}}.group-card__title__span{position:relative;display:inline;border-style:none;background-color:transparent;padding:0;transition:all var(--calcite-animation-timing) ease-in-out 0s,outline 0s,outline-offset 0s;background-image:linear-gradient(transparent,transparent);background-position-x:0%,100%;background-position-y:min(1.25em,100%);background-repeat:no-repeat,no-repeat;background-size:100% 1px,100% 1px}.group-card--previewed .group-card__title__span{background-image:linear-gradient(var(--calcite-color-text-3),var(--calcite-color-text-3))}.group-card__content{display:flex;min-width:0;flex:1 1 0%;flex-direction:column}.group-card__details{display:flex;flex-direction:row;flex-wrap:wrap}.group-card__details--stacked{flex-direction:column}.group-card__detail{font-size:.875rem;color:var(--calcite-color-text-2)}.group-card__detail__icon{margin-inline-end:.5rem}.group-card__footer{margin-top:auto;display:flex;align-items:center;background-color:var(--calcite-color-foreground-1);padding:.5rem 1rem;border-top:1px solid var(--calcite-color-border-3)}.group-card__footer__start{display:flex;min-width:0;flex:1 1 0%;flex-direction:row;align-items:center;overflow:hidden;margin-inline-end:.75rem}.group-card__profile-wrap{max-width:100%;padding:.25rem}.group-card__divider{display:flex;align-items:center;flex:0 0 auto}.group-card__divider:not([empty]):before{content:"";height:1.25rem;width:1px;background-color:var(--calcite-color-border-1);margin-inline:.75rem}.group-card__details--stacked .group-card__divider:before{display:none}.group-card__divider:first-child:before{display:none}.group-card-flex{display:flex}.group-card-flex-1{min-width:0;flex:1 1 0%}.screen-readers-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.group-card__input{margin-inline-end:1rem;margin-top:.125rem}.group-card__title{margin:0;overflow-wrap:break-word;padding:0;font-size:1rem;font-weight:500;line-height:1.375}.group-card__title--compact{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-inline-end:1rem}.group-card__summary{margin:.25rem 0;flex:1 1 0%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0;font-size:.875rem;line-height:1.25}.group-card__thumbnail{margin-inline-end:1rem}.group-card__thumbnail--compact{width:2.75rem;height:2.75rem}.group-card__badges{margin-top:.25rem}.group-card__owner{min-width:0}.group-card--xs,.group-card--xxs{.group-card__top{padding:.75rem}.group-card__title--padded{margin-bottom:.25rem}.group-card__footer{padding:.25rem .75rem}.group-card__detail{margin:.25rem 0;font-size:.75rem;line-height:1.35}.group-card__title{font-size:.875rem}}.group-card--xxs{.group-card__thumbnail{padding-inline-start:.75rem;width:4.25rem}}.group-card--xs{.group-card__thumbnail{padding-inline-start:.5rem;width:5rem}}`;
14
+ class D extends C {
15
+ constructor() {
16
+ super(...arguments), this.messages = z({ blocking: !0 }), this.sectionEl = F(), this.resizeObserver = null, this.handleCardClick = (e) => {
17
+ if (!(this.link || this.disabled || e?.target?.closest(".group-card__footer"))) {
18
+ if (this.preview === "top") {
19
+ this.arcgisGroupBrowserCardPreview.emit(this.group);
20
+ return;
21
+ }
22
+ if (this.selection === "single") {
23
+ this.selected = !0, this.arcgisGroupCardSelect.emit({ group: this.group, selected: !0 });
24
+ return;
25
+ }
26
+ this.selection === "multiple" && (this.selected = !this.selected, this.arcgisGroupCardSelect.emit({ group: this.group, selected: this.selected }));
27
+ }
28
+ }, this.formFactor = "lg", this.width = 0, this.hover = !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 = w(), this.arcgisGroupCardSelect = w(), this.arcgisGroupBrowserInternalUIAction = w(), this.loaded = !1;
29
+ }
30
+ static {
31
+ this.properties = { formFactor: 16, width: 16, hover: 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, loaded: 16 };
32
+ }
33
+ static {
34
+ this.styles = B;
35
+ }
36
+ async restoreFocus() {
37
+ if (this.link) {
38
+ this.renderRoot.querySelector(".group-card__upper")?.focus();
39
+ return;
40
+ }
41
+ this.preview === "top" && this.sectionEl.value && this.sectionEl.value.focus();
42
+ }
43
+ connectedCallback() {
44
+ super.connectedCallback(), !(typeof ResizeObserver > "u") && (this.resizeObserver = new ResizeObserver((e) => {
45
+ const t = e[0]?.contentRect.width ?? 0;
46
+ this.updateFormFactor(t);
47
+ }));
48
+ }
49
+ firstUpdated() {
50
+ if (this.sectionEl.value && this.resizeObserver) {
51
+ this.resizeObserver.observe(this.sectionEl.value);
52
+ const e = this.sectionEl.value.getBoundingClientRect().width;
53
+ this.updateFormFactor(e);
54
+ }
55
+ requestAnimationFrame(() => {
56
+ this.loaded = !0;
57
+ });
58
+ }
59
+ disconnectedCallback() {
60
+ this.resizeObserver?.disconnect(), this.resizeObserver = null, super.disconnectedCallback();
61
+ }
62
+ updateFormFactor(e) {
63
+ if (this.width = e, e > o.md) {
64
+ this.formFactor = "lg";
65
+ return;
66
+ }
67
+ if (e > o.sm) {
68
+ this.formFactor = "md";
69
+ return;
70
+ }
71
+ if (e > o.xs) {
72
+ this.formFactor = "sm";
73
+ return;
74
+ }
75
+ if (e > o.xxs) {
76
+ this.formFactor = "xs";
77
+ return;
78
+ }
79
+ this.formFactor = "xxs";
80
+ }
81
+ getAccessInfo(e) {
82
+ const { messages: t } = this, c = {
83
+ public: {
84
+ icon: "globe",
85
+ text: t.everyone
86
+ },
87
+ private: {
88
+ icon: "lock",
89
+ text: t.groupMembers
90
+ },
91
+ org: {
92
+ icon: "organization",
93
+ text: t.organization
94
+ }
95
+ };
96
+ return c[e] ?? c.private;
97
+ }
98
+ formatDate(e) {
99
+ return e ? new Intl.DateTimeFormat(void 0, { dateStyle: "medium" }).format(e) : "";
100
+ }
101
+ getThumbnailGroup(e) {
102
+ return {
103
+ id: e.id ?? void 0,
104
+ thumbnailUrl: e.thumbnailUrl ?? void 0,
105
+ title: e.title ?? void 0
106
+ };
107
+ }
108
+ renderSelectionInput() {
109
+ const { selection: e, selected: t, disabled: c, name: h, messages: _, group: a } = this;
110
+ switch (e) {
111
+ case "single":
112
+ return r`<calcite-radio-button class="group-card__input" .checked=${t} .disabled=${c} .value=${a.title ?? ""} .name=${h} @click=${(s) => s.stopPropagation()} @calciteRadioButtonChange=${() => {
113
+ this.arcgisGroupCardSelect.emit({ group: a, selected: !t });
114
+ }}><span class="screen-readers-only">${(_.select ?? "").replace("${title}", a.title ?? "")}</span></calcite-radio-button>`;
115
+ case "multiple":
116
+ return r`<calcite-checkbox class="group-card__input" .checked=${t} .disabled=${c} .indeterminate=${this.indeterminate} @click=${(s) => s.stopPropagation()} @calciteCheckboxChange=${() => {
117
+ const s = !this.selected;
118
+ this.selected = s, this.arcgisGroupCardSelect.emit({ group: a, selected: s });
119
+ }}><span class="screen-readers-only">${a.title}</span></calcite-checkbox>`;
120
+ case "none":
121
+ return null;
122
+ default:
123
+ return E(e);
124
+ }
125
+ }
126
+ renderCompactView() {
127
+ const { group: e, selection: t, formFactor: c, loaded: h, disabled: _, link: a, showBadges: s, newTab: m, linkHandler: d, handleCardClick: n, selected: p } = this, f = this.getThumbnailGroup(e);
128
+ return r`<section class=${g({
129
+ "group-card": !0,
130
+ "group-card--hoverable": t !== "none",
131
+ "group-card--selected": p,
132
+ "group-card--disabled": _,
133
+ "group-card--loaded": h,
134
+ [`group-card--${c}`]: !0
135
+ })} @click=${a ? void 0 : n} @mouseover=${() => {
136
+ this.hover = !0;
137
+ }} @mouseout=${() => {
138
+ this.hover = !1;
139
+ }} ${$(this.sectionEl)}>${a ? r`<a class="group-card__upper group-card__upper--compact group-card__upper--link" href=${a ?? l} target=${(m ? "_blank" : void 0) ?? l} rel=${(m ? "noopener noreferrer" : void 0) ?? l} @click=${(u) => {
140
+ d && !u.ctrlKey && !u.metaKey && (u.preventDefault(), d(this.group));
141
+ }}>${r`${this.renderSelectionInput()}<div class="group-card__thumbnail group-card__thumbnail--compact"><arcgis-portal-group-thumbnail .group=${f} .portal=${this.portal} scale=l></arcgis-portal-group-thumbnail></div><div class="group-card-flex-1"><h3 class="group-card__title group-card__title--compact"><span class="group-card__title__span">${e.title}</span></h3>${s && r`<arcgis-portal-group-badges .group=${e} .portal=${this.portal} class="group-card__badges--compact" scale=s show-tooltips width=narrow></arcgis-portal-group-badges>` || ""}</div><slot name=content-end></slot>`}</a>` : r`<div class="group-card__upper group-card__upper--compact">${this.renderSelectionInput()}<div class="group-card__thumbnail group-card__thumbnail--compact"><arcgis-portal-group-thumbnail .group=${f} .portal=${this.portal} scale=l></arcgis-portal-group-thumbnail></div><div class="group-card-flex-1"><h3 class="group-card__title group-card__title--compact"><span class="group-card__title__span">${e.title}</span></h3>${s && r`<arcgis-portal-group-badges .group=${e} .portal=${this.portal} class="group-card__badges--compact" scale=s show-tooltips width=narrow></arcgis-portal-group-badges>` || ""}</div><slot name=content-end></slot></div>`}</section>`;
142
+ }
143
+ render() {
144
+ const { group: e, selection: t, formFactor: c, loaded: h, disabled: _, link: a, showDateCreated: s, showDateUpdated: m, showSummary: d, showBadges: n } = this;
145
+ if (!e || !this.messages._lang)
146
+ return;
147
+ if (this.view === "compact")
148
+ return this.renderCompactView();
149
+ const p = this.getAccessInfo(e.access ?? "private"), f = this.getThumbnailGroup(e), u = this.width < o.sm, v = this.preview === "top" && !a, { previewed: x } = this;
150
+ return r`<section class=${g({
151
+ "group-card": !0,
152
+ "group-card--hoverable": t !== "none",
153
+ "group-card--selected": this.selected,
154
+ "group-card--disabled": _,
155
+ "group-card--loaded": h,
156
+ [`group-card--${c}`]: !0,
157
+ "group-card--previewed": x
158
+ })} @click=${a ? void 0 : this.handleCardClick} tabindex=${(v ? 0 : void 0) ?? l} .role=${v ? "button" : void 0} aria-haspopup=${(v ? "dialog" : void 0) ?? l} @keydown=${(i) => {
159
+ v && (i.key === "Enter" || i.key === " ") && (i.preventDefault(), this.handleCardClick());
160
+ }} ${$(this.sectionEl)}><slot name=content-top></slot>${a ? r`<a class="group-card__upper group-card__upper--link" href=${this.link ?? l} target=${(this.newTab ? "_blank" : void 0) ?? l} rel=${(this.newTab ? "noopener noreferrer" : void 0) ?? l} @mouseover=${() => {
161
+ this.hover = !0;
162
+ }} @mouseout=${() => {
163
+ this.hover = !1;
164
+ }} @click=${(i) => {
165
+ if (this.linkHandler && !i.ctrlKey && !i.metaKey) {
166
+ i.preventDefault(), this.linkHandler(this.group);
167
+ return;
168
+ }
169
+ const b = i.target;
170
+ b instanceof HTMLElement && b.closest(".group-card__footer") && i.preventDefault();
171
+ }}>${r`<div class="group-card-flex group-card__top">${this.renderSelectionInput()}<div class="group-card__thumbnail"><arcgis-portal-group-thumbnail .group=${f} .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": d && !!e.snippet })}><span class="group-card__title__span">${e.title}</span></h3>${d && !!e.snippet && r`<p class="group-card__summary">${e.snippet.length > 250 ? `${e.snippet.substring(0, 250)}...` : e.snippet}</p>` || ""}<div class=${g({ "group-card__details": !0, "group-card__details--stacked": u })}>${s && !!e.created && r`<span class="group-card__detail group-card__divider">${(this.messages.created ?? "").replace("${date}", this.formatDate(e.created))}</span>` || ""}${m && !!e.modified && r`<span class="group-card__detail group-card__divider">${(this.messages.lastUpdated ?? "").replace("${date}", this.formatDate(e.modified))}</span>` || ""}${this.showViewableBy && r`<span class="group-card__detail group-card__divider"><calcite-icon class="group-card__detail__icon" .icon=${p.icon} scale=s></calcite-icon>${(this.messages.viewableBy ?? "").replace("${level}", p.text)}</span>` || ""}${n && this.width >= o.sm && r`<arcgis-portal-group-badges .appearance=${this.hover ? "outline-fill" : "solid"} .group=${e} .portal=${this.portal} .width=${this.width < o.md ? "narrow" : "full"} class="group-card__badges group-card__detail group-card__divider" scale=s show-tooltips></arcgis-portal-group-badges>` || ""}</div>${n && this.width < o.sm && r`<arcgis-portal-group-badges .appearance=${this.hover ? "outline-fill" : "solid"} .group=${e} .portal=${this.portal} .width=${this.width < o.xxs ? "narrow" : "full"} class="group-card__badges" scale=s show-tooltips></arcgis-portal-group-badges>` || ""}<slot name=content-end></slot></div></div></div></div>`}</a>` : r`<div class="group-card__upper" @mouseover=${() => {
172
+ this.hover = !0;
173
+ }} @mouseout=${() => {
174
+ this.hover = !1;
175
+ }}><div class="group-card-flex group-card__top">${this.renderSelectionInput()}<div class="group-card__thumbnail"><arcgis-portal-group-thumbnail .group=${f} .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": d && !!e.snippet })}><span class="group-card__title__span">${e.title}</span></h3>${d && !!e.snippet && r`<p class="group-card__summary">${e.snippet.length > 250 ? `${e.snippet.substring(0, 250)}...` : e.snippet}</p>` || ""}<div class=${g({ "group-card__details": !0, "group-card__details--stacked": u })}>${s && !!e.created && r`<span class="group-card__detail group-card__divider">${(this.messages.created ?? "").replace("${date}", this.formatDate(e.created))}</span>` || ""}${m && !!e.modified && r`<span class="group-card__detail group-card__divider">${(this.messages.lastUpdated ?? "").replace("${date}", this.formatDate(e.modified))}</span>` || ""}${this.showViewableBy && r`<span class="group-card__detail group-card__divider"><calcite-icon class="group-card__detail__icon" .icon=${p.icon} scale=s></calcite-icon>${(this.messages.viewableBy ?? "").replace("${level}", p.text)}</span>` || ""}${n && this.width >= o.sm && r`<arcgis-portal-group-badges .appearance=${this.hover ? "outline-fill" : "solid"} .group=${e} .portal=${this.portal} .width=${this.width < o.md ? "narrow" : "full"} class="group-card__badges group-card__detail group-card__divider" scale=s show-tooltips></arcgis-portal-group-badges>` || ""}</div>${n && this.width < o.sm && r`<arcgis-portal-group-badges .appearance=${this.hover ? "outline-fill" : "solid"} .group=${e} .portal=${this.portal} .width=${this.width < o.xxs ? "narrow" : "full"} class="group-card__badges" scale=s show-tooltips></arcgis-portal-group-badges>` || ""}<slot name=content-end></slot></div></div></div></div></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: b }) => {
176
+ b(), this.arcgisGroupBrowserInternalUIAction.emit(i);
177
+ }}></arcgis-portal-user-popup></div>` || ""}</div><div>${this.preview === "action" && r`<calcite-button scale=s appearance=outline-fill kind=neutral @click=${() => {
178
+ this.arcgisGroupBrowserCardPreview.emit(this.group);
179
+ }}>${this.previewed ? this.messages.hidePreview : this.messages.preview}</calcite-button>` || ""}<div @click=${(i) => {
180
+ i.stopPropagation();
181
+ }}><slot name=actions-end></slot></div></div></div></section>`;
182
+ }
183
+ }
184
+ k("arcgis-portal-group-card", D);
185
+ export {
186
+ D as ArcgisPortalGroupCard
187
+ };
@@ -0,0 +1 @@
1
+ export * from "./customElement.js";
@@ -0,0 +1,8 @@
1
+ import "@esri/calcite-components/components/calcite-radio-button";
2
+ import "@esri/calcite-components/components/calcite-checkbox";
3
+ import "../arcgis-portal-group-thumbnail/index.js";
4
+ import "../arcgis-portal-group-badges/index.js";
5
+ import "@esri/calcite-components/components/calcite-icon";
6
+ import "../arcgis-portal-user-popup/index.js";
7
+ import "@esri/calcite-components/components/calcite-button";
8
+ export * from "./customElement.js";
@@ -0,0 +1,32 @@
1
+ /// <reference path="../../index.d.ts" />
2
+ import type Portal from "@arcgis/core/portal/Portal.js";
3
+ import type { PublicLitElement as LitElement } from "@arcgis/lumina";
4
+ import type { Scale } from "../../types/ui.js";
5
+
6
+ export abstract class ArcgisPortalGroupThumbnail extends LitElement {
7
+ /** Group data used to render thumbnail image or fallback initials. */
8
+ accessor group: GroupThumbnail | undefined;
9
+ /** Current portal instance used for tokenized thumbnail URL generation. */
10
+ accessor portal: Portal | undefined;
11
+ /**
12
+ * Component scale.
13
+ *
14
+ * @default "m"
15
+ */
16
+ accessor scale: GroupThumbnailScale;
17
+ /**
18
+ * Whether to show tooltip on hover/focus.
19
+ *
20
+ * @default false
21
+ */
22
+ accessor tooltip: boolean;
23
+ }
24
+
25
+ export type GroupThumbnailScale = Scale | "xl";
26
+
27
+ export type GroupThumbnail = {
28
+ id?: string;
29
+ thumbnail?: string;
30
+ thumbnailUrl?: string;
31
+ title?: string;
32
+ };