@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.
- package/dist/cjs/{ShadowViewAddon-1ddbaac2.js → ShadowViewAddon-69abeb69.js} +44 -25
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/mint-components.cjs.js +1 -1
- package/dist/cjs/sqm-banking-info-form_16.cjs.entry.js +2 -1
- package/dist/cjs/sqm-big-stat_38.cjs.entry.js +7 -13
- package/dist/cjs/sqm-stencilbook.cjs.entry.js +31 -8
- package/dist/collection/components/sqm-leaderboard/Leaderboard.stories.js +29 -7
- package/dist/collection/components/sqm-leaderboard/sqm-leaderboard-view.js +45 -25
- package/dist/collection/components/sqm-leaderboard/sqm-leaderboard.js +34 -22
- package/dist/collection/components/sqm-leaderboard/useLeaderboard.js +0 -1
- package/dist/collection/components/tax-and-cash/sqm-banking-info-form/sqm-banking-info-form-view.js +2 -1
- package/dist/esm/{ShadowViewAddon-881de075.js → ShadowViewAddon-411b809c.js} +44 -25
- package/dist/esm/loader.js +1 -1
- package/dist/esm/mint-components.js +1 -1
- package/dist/esm/sqm-banking-info-form_16.entry.js +2 -1
- package/dist/esm/sqm-big-stat_38.entry.js +7 -13
- package/dist/esm/sqm-stencilbook.entry.js +31 -8
- package/dist/esm-es5/ShadowViewAddon-411b809c.js +1 -0
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/mint-components.js +1 -1
- package/dist/esm-es5/sqm-banking-info-form_16.entry.js +1 -1
- package/dist/esm-es5/sqm-big-stat_38.entry.js +1 -1
- package/dist/esm-es5/sqm-stencilbook.entry.js +1 -1
- package/dist/mint-components/mint-components.esm.js +1 -1
- package/dist/mint-components/{p-773bfa43.entry.js → p-31e810e9.entry.js} +5 -5
- package/dist/mint-components/{p-8fa71d87.entry.js → p-3204146b.entry.js} +1 -1
- package/dist/mint-components/p-5869aad3.system.entry.js +1 -0
- package/dist/mint-components/p-5de21018.system.entry.js +1 -0
- package/dist/mint-components/p-9f9bdf15.system.js +1 -0
- package/dist/mint-components/{p-410d0544.entry.js → p-aed8afd9.entry.js} +12 -12
- package/dist/mint-components/{p-6af4e1bf.js → p-c7f27fa5.js} +20 -20
- package/dist/mint-components/p-ed17e637.system.js +1 -1
- package/dist/mint-components/p-f3433652.system.entry.js +1 -0
- package/dist/types/components/sqm-leaderboard/Leaderboard.stories.d.ts +1 -0
- package/dist/types/components/sqm-leaderboard/sqm-leaderboard-view.d.ts +3 -3
- package/dist/types/components/sqm-leaderboard/sqm-leaderboard.d.ts +10 -4
- package/dist/types/components/sqm-leaderboard/useLeaderboard.d.ts +1 -1
- package/dist/types/components.d.ts +10 -0
- package/docs/docs.docx +0 -0
- package/docs/picklesdoc--2024-01-15--11-20-00.xlsx +0 -0
- package/docs/picklesdoc--2024-01-15--11-24-04.xlsx +0 -0
- package/docs/raisins.json +1 -1
- package/grapesjs/grapesjs.js +1 -1
- package/package.json +2 -2
- package/dist/esm-es5/ShadowViewAddon-881de075.js +0 -1
- package/dist/mint-components/p-23094362.system.js +0 -1
- package/dist/mint-components/p-2f5e7c77.system.entry.js +0 -1
- package/dist/mint-components/p-b5f0bb21.system.entry.js +0 -1
- 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: "
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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" }, (
|
|
104
|
-
|
|
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
|
|
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
|
}
|
|
@@ -109,9 +109,10 @@ const style$1 = {
|
|
|
109
109
|
fontWeight: "var(--sl-font-weight-normal)",
|
|
110
110
|
},
|
|
111
111
|
"& .ellipses": {
|
|
112
|
-
textAlign: "
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
171
|
-
|
|
172
|
-
|
|
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" }, (
|
|
191
|
-
|
|
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 = {
|