@saasquatch/mint-components 1.10.2-13 → 1.10.2-15

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 (49) hide show
  1. package/dist/cjs/{ShadowViewAddon-1ddbaac2.js → ShadowViewAddon-69abeb69.js} +44 -25
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/mint-components.cjs.js +1 -1
  4. package/dist/cjs/sqm-banking-info-form_16.cjs.entry.js +2 -1
  5. package/dist/cjs/sqm-big-stat_38.cjs.entry.js +7 -13
  6. package/dist/cjs/sqm-stencilbook.cjs.entry.js +31 -8
  7. package/dist/collection/components/sqm-leaderboard/Leaderboard.stories.js +29 -7
  8. package/dist/collection/components/sqm-leaderboard/sqm-leaderboard-view.js +45 -25
  9. package/dist/collection/components/sqm-leaderboard/sqm-leaderboard.js +34 -22
  10. package/dist/collection/components/sqm-leaderboard/useLeaderboard.js +0 -1
  11. package/dist/collection/components/tax-and-cash/sqm-banking-info-form/sqm-banking-info-form-view.js +2 -1
  12. package/dist/esm/{ShadowViewAddon-881de075.js → ShadowViewAddon-411b809c.js} +44 -25
  13. package/dist/esm/loader.js +1 -1
  14. package/dist/esm/mint-components.js +1 -1
  15. package/dist/esm/sqm-banking-info-form_16.entry.js +2 -1
  16. package/dist/esm/sqm-big-stat_38.entry.js +7 -13
  17. package/dist/esm/sqm-stencilbook.entry.js +31 -8
  18. package/dist/esm-es5/ShadowViewAddon-411b809c.js +1 -0
  19. package/dist/esm-es5/loader.js +1 -1
  20. package/dist/esm-es5/mint-components.js +1 -1
  21. package/dist/esm-es5/sqm-banking-info-form_16.entry.js +1 -1
  22. package/dist/esm-es5/sqm-big-stat_38.entry.js +1 -1
  23. package/dist/esm-es5/sqm-stencilbook.entry.js +1 -1
  24. package/dist/mint-components/mint-components.esm.js +1 -1
  25. package/dist/mint-components/{p-773bfa43.entry.js → p-31e810e9.entry.js} +5 -5
  26. package/dist/mint-components/{p-8fa71d87.entry.js → p-3204146b.entry.js} +1 -1
  27. package/dist/mint-components/p-5869aad3.system.entry.js +1 -0
  28. package/dist/mint-components/p-5de21018.system.entry.js +1 -0
  29. package/dist/mint-components/p-9f9bdf15.system.js +1 -0
  30. package/dist/mint-components/{p-410d0544.entry.js → p-aed8afd9.entry.js} +12 -12
  31. package/dist/mint-components/{p-6af4e1bf.js → p-c7f27fa5.js} +20 -20
  32. package/dist/mint-components/p-ed17e637.system.js +1 -1
  33. package/dist/mint-components/p-f3433652.system.entry.js +1 -0
  34. package/dist/types/components/sqm-leaderboard/Leaderboard.stories.d.ts +1 -0
  35. package/dist/types/components/sqm-leaderboard/sqm-leaderboard-view.d.ts +3 -3
  36. package/dist/types/components/sqm-leaderboard/sqm-leaderboard.d.ts +10 -4
  37. package/dist/types/components/sqm-leaderboard/useLeaderboard.d.ts +1 -1
  38. package/dist/types/components.d.ts +10 -0
  39. package/docs/docs.docx +0 -0
  40. package/docs/picklesdoc--2024-01-15--11-20-00.xlsx +0 -0
  41. package/docs/picklesdoc--2024-01-15--11-24-04.xlsx +0 -0
  42. package/docs/raisins.json +1 -1
  43. package/grapesjs/grapesjs.js +1 -1
  44. package/package.json +2 -2
  45. package/dist/esm-es5/ShadowViewAddon-881de075.js +0 -1
  46. package/dist/mint-components/p-23094362.system.js +0 -1
  47. package/dist/mint-components/p-2f5e7c77.system.entry.js +0 -1
  48. package/dist/mint-components/p-b5f0bb21.system.entry.js +0 -1
  49. package/dist/mint-components/p-c1c7f583.system.entry.js +0 -1
@@ -22,9 +22,10 @@ const style = {
22
22
  fontWeight: "var(--sl-font-weight-normal)",
23
23
  },
24
24
  "& .ellipses": {
25
- textAlign: "center",
25
+ textAlign: "left",
26
26
  padding: "0",
27
27
  color: "var(--sl-color-neutral-500)",
28
+ paddingLeft: "25%",
28
29
  },
29
30
  "& .highlight": {
30
31
  background: "var(--sl-color-primary-50)",
@@ -40,6 +41,9 @@ const style = {
40
41
  width: "auto",
41
42
  whiteSpace: "nowrap",
42
43
  },
44
+ "& .Rank": {
45
+ whiteSpace: "nowrap",
46
+ },
43
47
  "& .fullWidth": {
44
48
  width: "100%",
45
49
  },
@@ -53,20 +57,50 @@ const vanillaStyle = `
53
57
  }
54
58
  `;
55
59
  export function LeaderboardView(props) {
56
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
60
+ var _a, _b, _c;
57
61
  const { states, data, elements } = props;
58
62
  const { styles } = states;
63
+ console.log("viewing user text ", styles.viewingUserText);
59
64
  if (states.loading)
60
- return (h("div", { class: sheet.classes.Leaderboard },
65
+ return (h("div", { class: sheet.classes.Leaderboard, style: { width: styles.width || "100%" } },
61
66
  h("style", { type: "text/css" },
62
67
  styleString,
63
68
  vanillaStyle),
64
- elements.loadingstate));
69
+ h("table", null, [...Array(10)].map(() => {
70
+ return (h("tr", null,
71
+ h("td", null,
72
+ h("sl-skeleton", null))));
73
+ }))));
65
74
  if (states.isEssentials)
66
75
  return elements.essentials;
67
76
  if (!states.hasLeaders)
68
77
  return elements.empty;
69
78
  let userSeenFlag = false;
79
+ const getUsersName = (user) => {
80
+ if (!user.firstName && !user.lastInitial)
81
+ return styles.anonymousUser;
82
+ const { firstName, lastInitial } = user;
83
+ if (firstName && lastInitial)
84
+ return `${firstName} ${lastInitial}`;
85
+ if (firstName || lastInitial)
86
+ return firstName || lastInitial;
87
+ return styles.anonymousUser;
88
+ };
89
+ const getRankCellText = (userRank, isViewingUsersRow) => {
90
+ if (!userRank) {
91
+ return styles.hideNames ? `${styles.viewingUserText}` : "-";
92
+ }
93
+ const viewingUserText = ` - ${styles.viewingUserText}`;
94
+ return styles.rankSuffix
95
+ ? intl.formatMessage({
96
+ id: "rank",
97
+ defaultMessage: styles.rankSuffix,
98
+ }, {
99
+ rank: userRank,
100
+ }) + `${isViewingUsersRow && styles.hideNames ? viewingUserText : ""}`
101
+ : `${userRank} ${isViewingUsersRow && styles.hideNames ? viewingUserText : ""}`;
102
+ };
103
+ const showViewingUserText = "";
70
104
  return (h("div", { class: sheet.classes.Leaderboard, part: "sqm-base", style: { width: styles.width || "100%" } },
71
105
  h("style", { type: "text/css" },
72
106
  styleString,
@@ -80,31 +114,17 @@ export function LeaderboardView(props) {
80
114
  var _a, _b;
81
115
  if (user.rowNumber === ((_a = data.viewerRank) === null || _a === void 0 ? void 0 : _a.rowNumber))
82
116
  userSeenFlag = true;
83
- return (h("tr", { class: !styles.hideViewer &&
84
- user.rowNumber === ((_b = data.viewerRank) === null || _b === void 0 ? void 0 : _b.rowNumber)
85
- ? "highlight"
86
- : "" },
87
- styles.showRank && (h("td", { class: "Rank" }, intl.formatMessage({
88
- id: "rank",
89
- defaultMessage: styles.rankSuffix,
90
- }, { rank: user.rank }))),
91
- !styles.hideNames && (h("td", { class: "User" }, user.firstName && user.lastInitial
92
- ? user.firstName + " " + user.lastInitial
93
- : user.firstName || user.lastInitial
94
- ? user.firstName || user.lastInitial
95
- : styles.anonymousUser)),
117
+ const isViewingUsersRow = !styles.hideViewer && user.rowNumber === ((_b = data.viewerRank) === null || _b === void 0 ? void 0 : _b.rowNumber);
118
+ return (h("tr", { class: isViewingUsersRow ? "highlight" : "" },
119
+ styles.showRank && (h("td", { class: "Rank" }, getRankCellText(user.rank, isViewingUsersRow))),
120
+ !styles.hideNames && h("td", { class: "User" }, getUsersName(user)),
96
121
  h("td", { class: "Score" }, user.textValue)));
97
122
  }),
98
123
  !userSeenFlag && !styles.hideViewer && (h("tr", null,
99
124
  h("td", { colSpan: 100, class: "ellipses" },
100
125
  h("sl-icon", { name: "three-dots", style: { verticalAlign: "middle" } })))),
101
126
  !userSeenFlag && !styles.hideViewer && (h("tr", { class: "highlight" },
102
- styles.showRank && (h("td", { class: "Rank" }, ((_b = data.viewerRank) === null || _b === void 0 ? void 0 : _b.rank) || "-")),
103
- !styles.hideNames && (h("td", { class: "User" }, ((_c = data.viewerRank) === null || _c === void 0 ? void 0 : _c.firstName) && ((_d = data.viewerRank) === null || _d === void 0 ? void 0 : _d.lastInitial)
104
- ? ((_e = data.viewerRank) === null || _e === void 0 ? void 0 : _e.firstName) +
105
- " " + ((_f = data.viewerRank) === null || _f === void 0 ? void 0 : _f.lastInitial)
106
- : ((_g = data.viewerRank) === null || _g === void 0 ? void 0 : _g.firstName) || ((_h = data.viewerRank) === null || _h === void 0 ? void 0 : _h.lastInitial)
107
- ? ((_j = data.viewerRank) === null || _j === void 0 ? void 0 : _j.firstName) || ((_k = data.viewerRank) === null || _k === void 0 ? void 0 : _k.lastInitial)
108
- : styles.anonymousUser)),
109
- h("td", { class: "Score" }, ((_l = data.viewerRank) === null || _l === void 0 ? void 0 : _l.textValue) || "0"))))));
127
+ styles.showRank && (h("td", { class: "Rank" }, getRankCellText((_b = data.viewerRank) === null || _b === void 0 ? void 0 : _b.rank, true))),
128
+ !styles.hideNames && (h("td", { class: "User" }, getUsersName(data.viewerRank || {}))),
129
+ h("td", { class: "Score" }, ((_c = data.viewerRank) === null || _c === void 0 ? void 0 : _c.textValue) || "0"))))));
110
130
  }
@@ -10,10 +10,10 @@ import { useLeaderboard } from "./useLeaderboard";
10
10
  * @slots [{"name":"empty", "title":"Empty State"}]
11
11
  * @requiredFeatures ["LEADERBOARDS"]
12
12
  * @exampleGroup Leaderboard
13
- * @example Referral Started Leaderboard - <sqm-leaderboard usersheading="Referrer" statsheading="Referrals" rank-type="rank" leaderboard-type="topStartedReferrers" rankheading="Rank" show-rank="true"><sqm-empty empty-state-image="https://res.cloudinary.com/saasquatch/image/upload/v1644360953/squatch-assets/empty_leaderboard2.png" empty-state-header="View your rank in the leaderboard" empty-state-text="Be the first to refer a friend and reach the top of the leaderboard" ></sqm-empty></sqm-leaderboard>
14
- * @example Referral Converted Leaderboard - <sqm-leaderboard usersheading="Referrer" statsheading="Referrals" rank-type="rank" leaderboard-type="topConvertedReferrers" rankheading="Rank" show-rank="true"><sqm-empty empty-state-image="https://res.cloudinary.com/saasquatch/image/upload/v1644360953/squatch-assets/empty_leaderboard2.png" empty-state-header="View your rank in the leaderboard" empty-state-text="Be the first to refer a friend and reach the top of the leaderboard" ></sqm-empty></sqm-leaderboard>
15
- * @example Points Earned Leaderboard - <sqm-leaderboard usersheading="Name" statsheading="Points" rank-type="rank" leaderboard-type="topPointEarners" rankheading="Rank" show-rank="true"><sqm-empty empty-state-image="https://res.cloudinary.com/saasquatch/image/upload/v1644360953/squatch-assets/empty_leaderboard2.png" empty-state-header="View your rank in the leaderboard" empty-state-text="Be the first to refer a friend and reach the top of the leaderboard" ></sqm-empty></sqm-leaderboard>
16
- * @example Anonymous Leaderboard - <div style="display: flex; align-items: flex-start; justify-content: center; width: 100%; gap: 50px;"><div style="display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; max-width: 30%;"><sqm-image width="70%" alignment="center" image-url="https://res.cloudinary.com/saasquatch-staging/image/upload/v1729728469/Leaderboard_image_z87lsm.png"></sqm-image><h2 style="margin: auto;">Top Performers</h2><p style="margin: 0; text-align: center;">The leaderboard highlights the top performers in real-time. Stay motivated, stay competitive!</p></div><sqm-leaderboard width="300px" usersheading="Referrer" statsheading="Referrals" rank-type="rank" leaderboard-type="topStartedReferrers" rankheading="Rank" show-rank="true" hide-names="true" hide-viewer="true"><sqm-empty empty-state-image="https://res.cloudinary.com/saasquatch/image/upload/v1644360953/squatch-assets/empty_leaderboard2.png" empty-state-header="View your rank in the leaderboard" empty-state-text="Be the first to refer a friend and reach the top of the leaderboard"></sqm-empty></sqm-leaderboard></div>
13
+ * @example Referral Started Leaderboard - <sqm-leaderboard usersheading="Referrer" rank-suffix="{rank, selectordinal, one {#st} two {#nd} few {#rd} other {#th}}" statsheading="Referrals" rank-type="rank" leaderboard-type="topStartedReferrers" rankheading="Rank" show-rank="true"><sqm-empty empty-state-image="https://res.cloudinary.com/saasquatch/image/upload/v1644360953/squatch-assets/empty_leaderboard2.png" empty-state-header="View your rank in the leaderboard" empty-state-text="Be the first to refer a friend and reach the top of the leaderboard" ></sqm-empty></sqm-leaderboard>
14
+ * @example Referral Converted Leaderboard - <sqm-leaderboard usersheading="Referrer" rank-suffix="{rank, selectordinal, one {#st} two {#nd} few {#rd} other {#th}}" statsheading="Referrals" rank-type="rank" leaderboard-type="topConvertedReferrers" rankheading="Rank" show-rank="true"><sqm-empty empty-state-image="https://res.cloudinary.com/saasquatch/image/upload/v1644360953/squatch-assets/empty_leaderboard2.png" empty-state-header="View your rank in the leaderboard" empty-state-text="Be the first to refer a friend and reach the top of the leaderboard" ></sqm-empty></sqm-leaderboard>
15
+ * @example Points Earned Leaderboard - <sqm-leaderboard usersheading="Name" rank-suffix="{rank, selectordinal, one {#st} two {#nd} few {#rd} other {#th}}" statsheading="Points" rank-type="rank" leaderboard-type="topPointEarners" rankheading="Rank" show-rank="true"><sqm-empty empty-state-image="https://res.cloudinary.com/saasquatch/image/upload/v1644360953/squatch-assets/empty_leaderboard2.png" empty-state-header="View your rank in the leaderboard" empty-state-text="Be the first to refer a friend and reach the top of the leaderboard" ></sqm-empty></sqm-leaderboard>
16
+ * @example Anonymous Leaderboard - <div style="display: flex; align-items: flex-start; justify-content: center; width: 100%; gap: 50px;"><div style="display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; max-width: 30%;"><sqm-image width="70%" alignment="center" image-url="https://res.cloudinary.com/saasquatch-staging/image/upload/v1729728469/Leaderboard_image_z87lsm.png"></sqm-image><h2 style="margin: auto;">Top Performers</h2><p style="margin: 0; text-align: center;">The leaderboard highlights the top performers in real-time. Stay motivated, stay competitive!</p></div><sqm-leaderboard width="300px" usersheading="Referrer" rank-suffix="{rank, selectordinal, one {#st} two {#nd} few {#rd} other {#th}}" statsheading="Referrals" rank-type="rank" leaderboard-type="topStartedReferrers" rankheading="Rank" show-rank="true" hide-names="true" hide-viewer="true"><sqm-empty empty-state-image="https://res.cloudinary.com/saasquatch/image/upload/v1644360953/squatch-assets/empty_leaderboard2.png" empty-state-header="View your rank in the leaderboard" empty-state-text="Be the first to refer a friend and reach the top of the leaderboard"></sqm-empty></sqm-leaderboard></div>
17
17
  * @featureTooltip <div>Motivate your participants by gamifying your program. Contact <a href="mailto:saasquatch-support%40impact.com?subject=Next steps for Leaderboards feature&body=Hi Support Team, %0D%0A%0D%0A I am interested in learning more about how Leaderboards can support the growth of our referral program. Please connect me with a program strategy manager to discuss this feature further, and determine the next steps.%0D%0A%0D%0A%0D%0AThank you,%0D%0A[Add your name here]">Support</a> to upgrade your plan and add a leaderboard.</div>
18
18
  */
19
19
  export class Leaderboard {
@@ -24,10 +24,6 @@ export class Leaderboard {
24
24
  * @uiName Width
25
25
  */
26
26
  this.width = "100%";
27
- /**
28
- * @uiName Rank Suffix
29
- */
30
- this.rankSuffix = "{rank, selectordinal, one {#st} two {#nd} few {#rd} other {#th}}";
31
27
  /**
32
28
  * Hide the viewer's leaderboard row if not in the top results.
33
29
  *
@@ -35,6 +31,10 @@ export class Leaderboard {
35
31
  * @default
36
32
  */
37
33
  this.hideViewer = false;
34
+ /**
35
+ * @uiName Viewing user text
36
+ */
37
+ this.viewingUserText = "You";
38
38
  /**
39
39
  * Hide the Names of users to protect personal identifiable information
40
40
  *
@@ -69,7 +69,6 @@ export class Leaderboard {
69
69
  const props = {
70
70
  empty: h(EmptySlot, null),
71
71
  essentials: h(EssentialsSlot, null),
72
- loadingstate: h(LoadingSlot, null),
73
72
  usersheading: this.usersheading,
74
73
  statsheading: this.statsheading,
75
74
  rankheading: this.rankheading,
@@ -80,6 +79,7 @@ export class Leaderboard {
80
79
  anonymousUser: this.anonymousUser,
81
80
  interval: this.interval,
82
81
  hideViewer: this.hideViewer,
82
+ viewingUserText: this.viewingUserText,
83
83
  hideNames: this.hideNames,
84
84
  showRank: this.showRank,
85
85
  isEssentials: this.isEssentials,
@@ -234,11 +234,10 @@ export class Leaderboard {
234
234
  "text": "Rank Suffix",
235
235
  "name": "uiName"
236
236
  }],
237
- "text": ""
237
+ "text": "A JSONata string that formats the rank with the appropriate ordinal suffix (e.g., \"st\" for 1st, \"nd\" for 2nd, \"rd\" for 3rd, and \"th\" for all others)."
238
238
  },
239
239
  "attribute": "rank-suffix",
240
- "reflect": false,
241
- "defaultValue": "\"{rank, selectordinal, one {#st} two {#nd} few {#rd} other {#th}}\""
240
+ "reflect": false
242
241
  },
243
242
  "hideViewer": {
244
243
  "type": "boolean",
@@ -264,6 +263,27 @@ export class Leaderboard {
264
263
  "reflect": false,
265
264
  "defaultValue": "false"
266
265
  },
266
+ "viewingUserText": {
267
+ "type": "string",
268
+ "mutable": false,
269
+ "complexType": {
270
+ "original": "string",
271
+ "resolved": "string",
272
+ "references": {}
273
+ },
274
+ "required": false,
275
+ "optional": false,
276
+ "docs": {
277
+ "tags": [{
278
+ "text": "Viewing user text",
279
+ "name": "uiName"
280
+ }],
281
+ "text": ""
282
+ },
283
+ "attribute": "viewing-user-text",
284
+ "reflect": false,
285
+ "defaultValue": "\"You\""
286
+ },
267
287
  "hideNames": {
268
288
  "type": "boolean",
269
289
  "mutable": false,
@@ -446,7 +466,7 @@ export class Leaderboard {
446
466
  "mutable": false,
447
467
  "complexType": {
448
468
  "original": "DemoData<LeaderboardViewProps>",
449
- "resolved": "{ states?: { loading: boolean; hasLeaders: boolean; isEssentials?: boolean; styles: { usersheading: string; statsheading: string; rankheading?: string; showRank?: boolean; hideViewer?: boolean; hideNames?: boolean; anonymousUser?: string; rankSuffix?: string; width?: string; }; }; data?: { rankType: string; leaderboard: { textValue: string; rank: number; firstName: string; lastInitial: string; rowNumber: number; }[]; viewerRank?: { textValue: string; rank: number; firstName: string; lastInitial: string; rowNumber: number; }; }; elements?: { empty: VNode; essentials: VNode; loadingstate: VNode; }; }",
469
+ "resolved": "{ states?: { loading: boolean; hasLeaders: boolean; isEssentials?: boolean; styles: { usersheading: string; statsheading: string; rankheading?: string; showRank?: boolean; hideViewer?: boolean; viewingUserText?: string; hideNames?: boolean; anonymousUser?: string; rankSuffix?: string; width?: string; }; }; data?: { rankType: string; leaderboard: { textValue: string; rank: number; firstName: string; lastInitial: string; rowNumber: number; }[]; viewerRank?: { textValue: string; rank: number; firstName?: string; lastInitial?: string; rowNumber: number; }; }; elements?: { empty: VNode; essentials: VNode; }; }",
450
470
  "references": {
451
471
  "DemoData": {
452
472
  "location": "import",
@@ -484,14 +504,6 @@ function EssentialsSlot() {
484
504
  return (h("slot", { name: "essentials" },
485
505
  h("sqm-empty", { "empty-state-image": "https://res.cloudinary.com/saasquatch/image/upload/v1715360191/squatch-assets/Leaderboard_Not_Available.svg", "empty-state-header": "Leaderboards aren\u2019t available on your plan", "empty-state-text": "Contact {supportText} to upgrade your plan and start leveraging gamification in your program.", "support-text": "Support", "missing-feature": "Leaderboards" })));
486
506
  }
487
- function LoadingSlot() {
488
- return (h("slot", { name: "loading" },
489
- h("table", null, [...Array(10)].map(() => {
490
- return (h("tr", null,
491
- h("td", null,
492
- h("sl-skeleton", null))));
493
- }))));
494
- }
495
507
  function useLeaderboardDemo(props) {
496
508
  var _a, _b;
497
509
  const data = ((_b = (_a = props.demoData) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.leaderboard) || [
@@ -547,6 +559,7 @@ function useLeaderboardDemo(props) {
547
559
  : "Anonymous User",
548
560
  showRank: props.showRank,
549
561
  hideViewer: props.hideViewer,
562
+ viewingUserText: props.viewingUserText,
550
563
  hideNames: props.hideNames,
551
564
  rankSuffix: props.rankSuffix,
552
565
  width: props.width,
@@ -559,7 +572,6 @@ function useLeaderboardDemo(props) {
559
572
  elements: {
560
573
  empty: h(EmptySlot, null),
561
574
  essentials: h(EssentialsSlot, null),
562
- loadingstate: h(LoadingSlot, null),
563
575
  },
564
576
  }, props.demoData || {}, { arrayMerge: (_, a) => a });
565
577
  }
@@ -152,7 +152,6 @@ export function useLeaderboard(props) {
152
152
  elements: {
153
153
  empty: props.empty,
154
154
  essentials: props.essentials,
155
- loadingstate: props.loadingstate,
156
155
  },
157
156
  };
158
157
  }
@@ -116,7 +116,8 @@ const style = {
116
116
  background: "var(--sl-color-gray-200)",
117
117
  },
118
118
  LargeSkeleton: {
119
- width: "320px",
119
+ width: "100%",
120
+ maxWidth: "320px",
120
121
  height: "40px",
121
122
  borderRadius: "50px",
122
123
  background: "var(--sl-color-gray-200)",
@@ -109,9 +109,10 @@ const style$1 = {
109
109
  fontWeight: "var(--sl-font-weight-normal)",
110
110
  },
111
111
  "& .ellipses": {
112
- textAlign: "center",
112
+ textAlign: "left",
113
113
  padding: "0",
114
114
  color: "var(--sl-color-neutral-500)",
115
+ paddingLeft: "25%",
115
116
  },
116
117
  "& .highlight": {
117
118
  background: "var(--sl-color-primary-50)",
@@ -127,6 +128,9 @@ const style$1 = {
127
128
  width: "auto",
128
129
  whiteSpace: "nowrap",
129
130
  },
131
+ "& .Rank": {
132
+ whiteSpace: "nowrap",
133
+ },
130
134
  "& .fullWidth": {
131
135
  width: "100%",
132
136
  },
@@ -140,20 +144,49 @@ const vanillaStyle = `
140
144
  }
141
145
  `;
142
146
  function LeaderboardView(props) {
143
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
147
+ var _a, _b, _c;
144
148
  const { states, data, elements } = props;
145
149
  const { styles } = states;
150
+ console.log("viewing user text ", styles.viewingUserText);
146
151
  if (states.loading)
147
- return (h("div", { class: sheet$1.classes.Leaderboard },
152
+ return (h("div", { class: sheet$1.classes.Leaderboard, style: { width: styles.width || "100%" } },
148
153
  h("style", { type: "text/css" },
149
154
  styleString$1,
150
155
  vanillaStyle),
151
- elements.loadingstate));
156
+ h("table", null, [...Array(10)].map(() => {
157
+ return (h("tr", null,
158
+ h("td", null,
159
+ h("sl-skeleton", null))));
160
+ }))));
152
161
  if (states.isEssentials)
153
162
  return elements.essentials;
154
163
  if (!states.hasLeaders)
155
164
  return elements.empty;
156
165
  let userSeenFlag = false;
166
+ const getUsersName = (user) => {
167
+ if (!user.firstName && !user.lastInitial)
168
+ return styles.anonymousUser;
169
+ const { firstName, lastInitial } = user;
170
+ if (firstName && lastInitial)
171
+ return `${firstName} ${lastInitial}`;
172
+ if (firstName || lastInitial)
173
+ return firstName || lastInitial;
174
+ return styles.anonymousUser;
175
+ };
176
+ const getRankCellText = (userRank, isViewingUsersRow) => {
177
+ if (!userRank) {
178
+ return styles.hideNames ? `${styles.viewingUserText}` : "-";
179
+ }
180
+ const viewingUserText = ` - ${styles.viewingUserText}`;
181
+ return styles.rankSuffix
182
+ ? intl.formatMessage({
183
+ id: "rank",
184
+ defaultMessage: styles.rankSuffix,
185
+ }, {
186
+ rank: userRank,
187
+ }) + `${isViewingUsersRow && styles.hideNames ? viewingUserText : ""}`
188
+ : `${userRank} ${isViewingUsersRow && styles.hideNames ? viewingUserText : ""}`;
189
+ };
157
190
  return (h("div", { class: sheet$1.classes.Leaderboard, part: "sqm-base", style: { width: styles.width || "100%" } },
158
191
  h("style", { type: "text/css" },
159
192
  styleString$1,
@@ -167,33 +200,19 @@ function LeaderboardView(props) {
167
200
  var _a, _b;
168
201
  if (user.rowNumber === ((_a = data.viewerRank) === null || _a === void 0 ? void 0 : _a.rowNumber))
169
202
  userSeenFlag = true;
170
- return (h("tr", { class: !styles.hideViewer &&
171
- user.rowNumber === ((_b = data.viewerRank) === null || _b === void 0 ? void 0 : _b.rowNumber)
172
- ? "highlight"
173
- : "" },
174
- styles.showRank && (h("td", { class: "Rank" }, intl.formatMessage({
175
- id: "rank",
176
- defaultMessage: styles.rankSuffix,
177
- }, { rank: user.rank }))),
178
- !styles.hideNames && (h("td", { class: "User" }, user.firstName && user.lastInitial
179
- ? user.firstName + " " + user.lastInitial
180
- : user.firstName || user.lastInitial
181
- ? user.firstName || user.lastInitial
182
- : styles.anonymousUser)),
203
+ const isViewingUsersRow = !styles.hideViewer && user.rowNumber === ((_b = data.viewerRank) === null || _b === void 0 ? void 0 : _b.rowNumber);
204
+ return (h("tr", { class: isViewingUsersRow ? "highlight" : "" },
205
+ styles.showRank && (h("td", { class: "Rank" }, getRankCellText(user.rank, isViewingUsersRow))),
206
+ !styles.hideNames && h("td", { class: "User" }, getUsersName(user)),
183
207
  h("td", { class: "Score" }, user.textValue)));
184
208
  }),
185
209
  !userSeenFlag && !styles.hideViewer && (h("tr", null,
186
210
  h("td", { colSpan: 100, class: "ellipses" },
187
211
  h("sl-icon", { name: "three-dots", style: { verticalAlign: "middle" } })))),
188
212
  !userSeenFlag && !styles.hideViewer && (h("tr", { class: "highlight" },
189
- styles.showRank && (h("td", { class: "Rank" }, ((_b = data.viewerRank) === null || _b === void 0 ? void 0 : _b.rank) || "-")),
190
- !styles.hideNames && (h("td", { class: "User" }, ((_c = data.viewerRank) === null || _c === void 0 ? void 0 : _c.firstName) && ((_d = data.viewerRank) === null || _d === void 0 ? void 0 : _d.lastInitial)
191
- ? ((_e = data.viewerRank) === null || _e === void 0 ? void 0 : _e.firstName) +
192
- " " + ((_f = data.viewerRank) === null || _f === void 0 ? void 0 : _f.lastInitial)
193
- : ((_g = data.viewerRank) === null || _g === void 0 ? void 0 : _g.firstName) || ((_h = data.viewerRank) === null || _h === void 0 ? void 0 : _h.lastInitial)
194
- ? ((_j = data.viewerRank) === null || _j === void 0 ? void 0 : _j.firstName) || ((_k = data.viewerRank) === null || _k === void 0 ? void 0 : _k.lastInitial)
195
- : styles.anonymousUser)),
196
- h("td", { class: "Score" }, ((_l = data.viewerRank) === null || _l === void 0 ? void 0 : _l.textValue) || "0"))))));
213
+ styles.showRank && (h("td", { class: "Rank" }, getRankCellText((_b = data.viewerRank) === null || _b === void 0 ? void 0 : _b.rank, true))),
214
+ !styles.hideNames && (h("td", { class: "User" }, getUsersName(data.viewerRank || {}))),
215
+ h("td", { class: "Score" }, ((_c = data.viewerRank) === null || _c === void 0 ? void 0 : _c.textValue) || "0"))))));
197
216
  }
198
217
 
199
218
  const style$2 = {