@saasquatch/mint-components 1.5.0-65 → 1.5.0-69

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 (111) hide show
  1. package/dist/cjs/{GenericTableView-c8f8f3fe.js → GenericTableView-65598160.js} +7 -3
  2. package/dist/cjs/{AutoColor-86984176.js → ShadowViewAddon-25f524e4.js} +182 -48
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/mint-components.cjs.js +1 -1
  5. package/dist/cjs/{sqm-brand_27.cjs.entry.js → sqm-brand_28.cjs.entry.js} +205 -19
  6. package/dist/cjs/sqm-image_4.cjs.entry.js +3 -3
  7. package/dist/cjs/{sqm-portal-container-view-185b4bd0.js → sqm-portal-container-view-3bc23603.js} +2 -0
  8. package/dist/cjs/{sqm-portal-profile-view-04eaaac9.js → sqm-portal-profile-view-25537e0b.js} +1 -1
  9. package/dist/cjs/sqm-portal-profile.cjs.entry.js +2 -2
  10. package/dist/cjs/{sqm-portal-section-view-7ce92f61.js → sqm-portal-section-view-186a5f7e.js} +1 -1
  11. package/dist/cjs/sqm-referral-table_11.cjs.entry.js +1 -1
  12. package/dist/cjs/sqm-rewards-table_9.cjs.entry.js +9 -4
  13. package/dist/cjs/sqm-stencilbook.cjs.entry.js +242 -175
  14. package/dist/collection/components/sqm-hero-image/sqm-hero-image.js +10 -4
  15. package/dist/collection/components/sqm-leaderboard/Leaderboard.stories.js +12 -1
  16. package/dist/collection/components/sqm-leaderboard/UseLeaderboard.stories.js +62 -8
  17. package/dist/collection/components/sqm-leaderboard/sqm-leaderboard-view.js +3 -2
  18. package/dist/collection/components/sqm-leaderboard/sqm-leaderboard.js +11 -9
  19. package/dist/collection/components/sqm-portal-container/sqm-portal-container-view.js +2 -0
  20. package/dist/collection/components/sqm-referral-card/sqm-referral-card-view.js +1 -0
  21. package/dist/collection/components/sqm-rewards-table/columns/sqm-rewards-table-reward-column.js +4 -4
  22. package/dist/collection/components/sqm-rewards-table/sqm-rewards-table.js +6 -1
  23. package/dist/collection/components/sqm-task-card/sqm-task-card.js +0 -1
  24. package/dist/collection/components/sqm-titled-section/TitledSection.stories.js +3 -3
  25. package/dist/collection/components/sqm-titled-section/sqm-portal-section-view.js +1 -1
  26. package/dist/collection/components/sqm-titled-section/sqm-titled-section.js +3 -3
  27. package/dist/collection/tables/GenericTableView.js +7 -3
  28. package/dist/esm/{GenericTableView-24f2dcb2.js → GenericTableView-2b700cd4.js} +7 -3
  29. package/dist/esm/{AutoColor-8f7bfd93.js → ShadowViewAddon-919cf983.js} +181 -50
  30. package/dist/esm/loader.js +1 -1
  31. package/dist/esm/mint-components.js +1 -1
  32. package/dist/esm/{sqm-brand_27.entry.js → sqm-brand_28.entry.js} +191 -6
  33. package/dist/esm/sqm-image_4.entry.js +3 -3
  34. package/dist/esm/{sqm-portal-container-view-cf79ed90.js → sqm-portal-container-view-624563e6.js} +2 -0
  35. package/dist/esm/{sqm-portal-profile-view-827776f5.js → sqm-portal-profile-view-c0f86818.js} +1 -1
  36. package/dist/esm/sqm-portal-profile.entry.js +2 -2
  37. package/dist/esm/{sqm-portal-section-view-6649c4c6.js → sqm-portal-section-view-88a80af9.js} +1 -1
  38. package/dist/esm/sqm-referral-table_11.entry.js +1 -1
  39. package/dist/esm/sqm-rewards-table_9.entry.js +9 -4
  40. package/dist/esm/sqm-stencilbook.entry.js +86 -19
  41. package/dist/esm-es5/{GenericTableView-24f2dcb2.js → GenericTableView-2b700cd4.js} +1 -1
  42. package/dist/esm-es5/ShadowViewAddon-919cf983.js +1 -0
  43. package/dist/esm-es5/loader.js +1 -1
  44. package/dist/esm-es5/mint-components.js +1 -1
  45. package/dist/esm-es5/sqm-brand_28.entry.js +1 -0
  46. package/dist/esm-es5/sqm-image_4.entry.js +1 -1
  47. package/dist/esm-es5/sqm-portal-container-view-624563e6.js +1 -0
  48. package/dist/esm-es5/{sqm-portal-profile-view-827776f5.js → sqm-portal-profile-view-c0f86818.js} +1 -1
  49. package/dist/esm-es5/sqm-portal-profile.entry.js +1 -1
  50. package/dist/esm-es5/sqm-portal-section-view-88a80af9.js +1 -0
  51. package/dist/esm-es5/sqm-referral-table_11.entry.js +1 -1
  52. package/dist/esm-es5/sqm-rewards-table_9.entry.js +1 -1
  53. package/dist/esm-es5/sqm-stencilbook.entry.js +1 -1
  54. package/dist/mint-components/mint-components.esm.js +1 -1
  55. package/dist/mint-components/{p-153aab3c.js → p-0505f964.js} +1 -1
  56. package/dist/mint-components/p-0a1d7ec0.js +1 -0
  57. package/dist/mint-components/p-187f520b.entry.js +86 -0
  58. package/dist/mint-components/p-1bc35369.system.js +1 -0
  59. package/dist/mint-components/{p-590f844d.system.entry.js → p-1d7902ec.system.entry.js} +1 -1
  60. package/dist/mint-components/p-25ca6445.entry.js +150 -0
  61. package/dist/mint-components/{p-b9da6be4.entry.js → p-31df3a21.entry.js} +1 -1
  62. package/dist/mint-components/{p-6f70d120.entry.js → p-3ea21dc2.entry.js} +1 -1
  63. package/dist/mint-components/p-4c8273dc.system.entry.js +1 -0
  64. package/dist/mint-components/p-53af4433.system.js +1 -0
  65. package/dist/mint-components/{p-dd3a8996.system.js → p-5619a993.system.js} +1 -1
  66. package/dist/mint-components/{p-26cb65ba.entry.js → p-5aa86d66.entry.js} +3 -3
  67. package/dist/mint-components/p-8d74871c.system.js +1 -1
  68. package/dist/mint-components/p-9a18d853.system.js +1 -0
  69. package/dist/mint-components/{p-a6e79fbb.system.js → p-9da7df73.system.js} +1 -1
  70. package/dist/mint-components/{p-b1c0403a.system.entry.js → p-b8f8422d.system.entry.js} +1 -1
  71. package/dist/mint-components/{p-0f064d3d.system.entry.js → p-ba7c209d.system.entry.js} +1 -1
  72. package/dist/mint-components/p-bad9dd35.entry.js +9 -0
  73. package/dist/mint-components/p-e08f5f8e.js +1 -0
  74. package/dist/mint-components/p-f5c176e4.js +30 -0
  75. package/dist/mint-components/{p-13cc779c.js → p-f890c414.js} +1 -1
  76. package/dist/mint-components/{p-c82e3063.system.entry.js → p-f9194201.system.entry.js} +1 -1
  77. package/dist/mint-components/p-f92a265b.system.entry.js +1 -0
  78. package/dist/types/components/sqm-hero-image/sqm-hero-image.d.ts +2 -2
  79. package/dist/types/components/sqm-leaderboard/Leaderboard.stories.d.ts +1 -0
  80. package/dist/types/components/sqm-leaderboard/UseLeaderboard.stories.d.ts +6 -0
  81. package/dist/types/components/sqm-rewards-table/columns/sqm-rewards-table-reward-column.d.ts +1 -1
  82. package/dist/types/components/sqm-titled-section/sqm-portal-section-view.d.ts +1 -1
  83. package/dist/types/components/sqm-titled-section/sqm-titled-section.d.ts +1 -1
  84. package/dist/types/components.d.ts +17 -17
  85. package/grapesjs/grapesjs.js +1 -1
  86. package/package.json +2 -2
  87. package/dist/cjs/sqm-leaderboard.cjs.entry.js +0 -102
  88. package/dist/cjs/useLeaderboard-9e950912.js +0 -230
  89. package/dist/esm/sqm-leaderboard.entry.js +0 -98
  90. package/dist/esm/useLeaderboard-b670847e.js +0 -225
  91. package/dist/esm-es5/AutoColor-8f7bfd93.js +0 -1
  92. package/dist/esm-es5/sqm-brand_27.entry.js +0 -1
  93. package/dist/esm-es5/sqm-leaderboard.entry.js +0 -1
  94. package/dist/esm-es5/sqm-portal-container-view-cf79ed90.js +0 -1
  95. package/dist/esm-es5/sqm-portal-section-view-6649c4c6.js +0 -1
  96. package/dist/esm-es5/useLeaderboard-b670847e.js +0 -1
  97. package/dist/mint-components/p-01edde1a.js +0 -32
  98. package/dist/mint-components/p-192f8fc8.system.js +0 -1
  99. package/dist/mint-components/p-30772880.system.entry.js +0 -1
  100. package/dist/mint-components/p-500c1068.system.entry.js +0 -1
  101. package/dist/mint-components/p-5cff9730.entry.js +0 -119
  102. package/dist/mint-components/p-73d800ed.js +0 -30
  103. package/dist/mint-components/p-8cafe119.entry.js +0 -1
  104. package/dist/mint-components/p-9051c043.system.js +0 -1
  105. package/dist/mint-components/p-b3c4a2aa.entry.js +0 -9
  106. package/dist/mint-components/p-b70c5c92.js +0 -1
  107. package/dist/mint-components/p-b7aad7fb.entry.js +0 -86
  108. package/dist/mint-components/p-c015e112.system.js +0 -1
  109. package/dist/mint-components/p-c2e84199.js +0 -1
  110. package/dist/mint-components/p-d4c74ebe.system.entry.js +0 -1
  111. package/dist/mint-components/p-e0be39d0.system.js +0 -1
@@ -1,102 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- const index = require('./index-b0129cd6.js');
6
- const stencilHooks_module = require('./stencil-hooks.module-87a1f4f7.js');
7
- require('./use-callback-e754042f.js');
8
- const index_module = require('./index.module-54724339.js');
9
- require('./extends-08099afd.js');
10
- const cjs = require('./cjs-1066ec21.js');
11
- require('./JSS-c65a40f1.js');
12
- const useLeaderboard = require('./useLeaderboard-9e950912.js');
13
-
14
- const sqmLeaderboardCss = ":host{display:block}:host([hidden]){display:none}table{width:100%;border-collapse:collapse}th{font-size:var(--sl-font-size-small);font-weight:var(--sl-font-weight-semibold);text-align:left}tr:not(:first-child){border-top:1px solid var(--sl-color-neutral-200)}td{font-size:var(--sl-font-size-medium);font-weight:var(--sl-font-weight-normal)}.ellipses{text-align:center;padding:0;color:var(--sl-color-neutral-500)}.highlight{background:var(--sl-color-primary-50)}td,th{color:var(--sl-color-gray-800);padding:var(--sl-spacing-medium)}th{padding:var(--sl-spacing-medium);padding-top:0}.User{width:100%}.Score{width:auto;white-space:nowrap}";
15
-
16
- const Leaderboard = class {
17
- constructor(hostRef) {
18
- index.registerInstance(this, hostRef);
19
- /**
20
- * @uiName Show viewing user's rank
21
- */
22
- this.showUser = true;
23
- /**
24
- * @uiName Title displayed for users without names
25
- */
26
- this.anonymousUser = "Anonymous User";
27
- /**
28
- * @uiName Empty State Image
29
- */
30
- this.emptyStateImage = "https://i.imgur.com/KPGnPF8.png";
31
- /**
32
- * @uiName Empty State Header
33
- */
34
- this.emptyStateHeader = "View your rank in the leaderboard";
35
- /**
36
- * @uiName Empty State Description
37
- */
38
- this.emptyStateText = "Be the first to refer a friend and reach the top of the leaderboard";
39
- this.ignored = true;
40
- stencilHooks_module.h$1(this);
41
- useLeaderboard.withShadowView(this);
42
- }
43
- disconnectedCallback() { }
44
- render() {
45
- const props = {
46
- empty: index.h(EmptySlot, null),
47
- loadingstate: index.h(LoadingSlot, null),
48
- usersheading: this.usersheading,
49
- statsheading: this.statsheading,
50
- rankType: this.rankType,
51
- leaderboardType: this.leaderboardType,
52
- anonymousUser: this.anonymousUser,
53
- interval: this.interval,
54
- showUser: this.showUser,
55
- showRank: this.showRank,
56
- };
57
- const demoProps = { ...props, demoData: this.demoData };
58
- const viewprops = index_module.k()
59
- ? useLeaderboardDemo(demoProps)
60
- : useLeaderboard.useLeaderboard(props);
61
- return (index.h(useLeaderboard.LeaderboardView, Object.assign({}, viewprops), index.h("slot", null)));
62
- }
63
- };
64
- function EmptySlot() {
65
- return (index.h("slot", { name: "empty" }, index.h("sqm-portal-container", { padding: "xxxx-large", gap: "medium" }, index.h("sqm-image", { "image-url": this.emptyStateImage, "max-width": "100px" }), index.h("sqm-titled-section", { "label-margin": "xxx-small", align: "center" }, index.h("sqm-text", { slot: "label" }, index.h("h3", null, this.emptyStateHeader)), index.h("sqm-text", { slot: "content" }, this.emptyStateText)))));
66
- }
67
- function LoadingSlot() {
68
- return (index.h("slot", { name: "loadingstate" }, index.h("table", null, [...Array(10)].map(() => {
69
- return (index.h("tr", null, index.h("td", null, index.h("sl-skeleton", null))));
70
- }))));
71
- }
72
- function useLeaderboardDemo(props) {
73
- return cjs.cjs({
74
- states: {
75
- loading: false,
76
- hasLeaders: true,
77
- styles: {
78
- usersheading: props.usersheading
79
- ? props.usersheading
80
- : "TOP REFERRERS",
81
- statsheading: props.statsheading ? props.statsheading : "NEW CUSTOMERS",
82
- },
83
- },
84
- data: {
85
- rankType: "rowNumber",
86
- leaderboard: [
87
- { firstName: "Viktor", lastInitial: "V", value: 82, rank: 1 },
88
- { firstName: "MF", lastInitial: "D", value: 73, rank: 2 },
89
- { firstName: "Freddie", lastInitial: "G", value: 64, rank: 3 },
90
- { firstName: "Benny", lastInitial: "B", value: 55, rank: 4 },
91
- { firstName: "Mos", lastInitial: "D", value: 46, rank: 5 },
92
- ],
93
- },
94
- elements: {
95
- empty: index.h(EmptySlot, null),
96
- loadingstate: index.h(LoadingSlot, null),
97
- },
98
- }, props.demoProps || {}, { arrayMerge: (_, a) => a });
99
- }
100
- Leaderboard.style = sqmLeaderboardCss;
101
-
102
- exports.sqm_leaderboard = Leaderboard;
@@ -1,230 +0,0 @@
1
- 'use strict';
2
-
3
- const index = require('./index-b0129cd6.js');
4
- const index_module = require('./index.module-54724339.js');
5
- const JSS = require('./JSS-c65a40f1.js');
6
-
7
- const map = new Map();
8
- function withShadowView(component) {
9
- // TODO: Could only do this if rendered in a Stencilbook environment to prevent unintended side-effects
10
- const element = index.getElement(component);
11
- let renderFn = component["render"].bind(component);
12
- const newRenderFn = () => {
13
- const key = element.getAttribute("stencilbook-shadow-view");
14
- if (key) {
15
- const value = map.get(key);
16
- if (value) {
17
- return value;
18
- }
19
- }
20
- return renderFn();
21
- };
22
- component["render"] = newRenderFn;
23
- }
24
- /**
25
- * Any story that defines `parameters.tagname` will be used as a wrapper component around the view
26
- */
27
- const ShadowViewAddon = ({ story }, children) => {
28
- var _a;
29
- let TagName = (_a = story.parent.parameters) === null || _a === void 0 ? void 0 : _a.tagname;
30
- if (!TagName)
31
- return children;
32
- const randomInt = Math.round(Math.random() * 100000);
33
- map.set(randomInt + "", children);
34
- const RandomTagName = "stencilbook-shawdow-view-" + randomInt;
35
- // This will only re-render when the tag name changes, so we use a random tag name every time.
36
- // Altneratively we could try to trick Stencil to call `forceUpdate` every time.
37
- return (index.h(RandomTagName, null,
38
- index.h(TagName, { "stencilbook-shadow-view": randomInt })));
39
- };
40
-
41
- const style = {
42
- Leaderboard: {
43
- "& table": {
44
- width: "100%",
45
- borderCollapse: "collapse",
46
- },
47
- "& th": {
48
- textAlign: "left",
49
- padding: "var(--sl-spacing-medium)",
50
- paddingTop: "0",
51
- fontSize: "var(--sl-font-size-medium)",
52
- fontWeight: "var(--sl-font-weight-semibold)",
53
- },
54
- "& tr:not(:first-child)": {
55
- borderTop: "1px solid var(--sl-color-neutral-200)",
56
- },
57
- "& td": {
58
- fontSize: "var(--sl-font-size-medium)",
59
- fontWeight: "var(--sl-font-weight-normal)",
60
- },
61
- "& .ellipses": {
62
- textAlign: "center",
63
- padding: "0",
64
- color: "var(--sl-color-neutral-500)",
65
- },
66
- "& .highlight": {
67
- background: "var(--sl-color-primary-50)",
68
- },
69
- "& td, th": {
70
- color: "var(--sl-color-gray-800)",
71
- padding: "var(--sl-spacing-medium)",
72
- },
73
- "& .User": {
74
- width: "100%",
75
- },
76
- "& .Score": {
77
- width: "auto",
78
- whiteSpace: "nowrap",
79
- },
80
- },
81
- };
82
- const sheet = JSS.createStyleSheet(style);
83
- const styleString = sheet.toString();
84
- const vanillaStyle = `
85
- :host{
86
- display: block;
87
- }
88
- `;
89
- function LeaderboardView(props) {
90
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
91
- const { states, data, elements } = props;
92
- const { styles } = states;
93
- if (states.loading)
94
- return (index.h("div", { class: sheet.classes.Leaderboard },
95
- index.h("style", { type: "text/css" },
96
- styleString,
97
- vanillaStyle),
98
- elements.loadingstate));
99
- let userSeenFlag = false;
100
- return (index.h("div", { class: sheet.classes.Leaderboard },
101
- index.h("style", { type: "text/css" },
102
- styleString,
103
- vanillaStyle),
104
- index.h("table", null,
105
- index.h("tr", null,
106
- styles.showRank && index.h("th", { class: "Rank" }, styles.rankheading),
107
- index.h("th", { class: "User" }, styles.usersheading),
108
- index.h("th", { class: "Score" }, styles.statsheading)),
109
- !states.hasLeaders && (index.h("tr", null,
110
- index.h("td", { colSpan: 100 }, elements.empty))), (_a = data.leaderboard) === null || _a === void 0 ? void 0 :
111
- _a.map((user) => {
112
- var _a, _b;
113
- if (user.rowNumber === ((_a = data.userRank) === null || _a === void 0 ? void 0 : _a.rowNumber))
114
- userSeenFlag = true;
115
- return (index.h("tr", { class: user.rowNumber === ((_b = data.userRank) === null || _b === void 0 ? void 0 : _b.rowNumber) ? "highlight" : "" },
116
- styles.showRank && index.h("td", { class: "Rank" }, user.rank),
117
- index.h("td", { class: "User" }, user.firstName && user.lastInitial
118
- ? user.firstName + " " + user.lastInitial
119
- : user.firstName || user.lastInitial
120
- ? user.firstName || user.lastInitial
121
- : styles.anonymousUser || "Anonymous User"),
122
- index.h("td", { class: "Score" }, user.value)));
123
- }),
124
- !userSeenFlag && data.showUser && (index.h("tr", null,
125
- index.h("td", { colSpan: 100, class: "ellipses" },
126
- index.h("sl-icon", { name: "three-dots", style: { verticalAlign: "middle" } })))),
127
- !userSeenFlag && data.showUser && (index.h("tr", { class: "highlight" },
128
- styles.showRank && (index.h("td", { class: "Rank" }, ((_b = data.userRank) === null || _b === void 0 ? void 0 : _b.rank) || "-")),
129
- index.h("td", { class: "User" }, ((_c = data.userRank) === null || _c === void 0 ? void 0 : _c.firstName) && ((_d = data.userRank) === null || _d === void 0 ? void 0 : _d.lastInitial)
130
- ? ((_e = data.userRank) === null || _e === void 0 ? void 0 : _e.firstName) + " " + ((_f = data.userRank) === null || _f === void 0 ? void 0 : _f.lastInitial)
131
- : ((_g = data.userRank) === null || _g === void 0 ? void 0 : _g.firstName) || ((_h = data.userRank) === null || _h === void 0 ? void 0 : _h.lastInitial)
132
- ? ((_j = data.userRank) === null || _j === void 0 ? void 0 : _j.firstName) || ((_k = data.userRank) === null || _k === void 0 ? void 0 : _k.lastInitial)
133
- : styles.anonymousUser || "Anonymous User"),
134
- index.h("td", { class: "Score" }, ((_l = data.userRank) === null || _l === void 0 ? void 0 : _l.value) || "0"))))));
135
- }
136
-
137
- const GET_LEADERBOARD = index_module.dist.gql `
138
- query ($type: String!, $filter: UserLeaderboardFilterInput) {
139
- userLeaderboard(type: $type, filter: $filter) {
140
- dateModified
141
- rows {
142
- value
143
- firstName
144
- lastInitial
145
- rank {
146
- rank
147
- denseRank
148
- rowNumber
149
- }
150
- }
151
- }
152
- }
153
- `;
154
- const GET_RANK = index_module.dist.gql `
155
- query ($type: String!, $filter: UserLeaderboardFilterInput) {
156
- viewer {
157
- ... on User {
158
- firstName
159
- lastInitial
160
- leaderboardRank(type: $type, filter: $filter) {
161
- value
162
- rank
163
- denseRank
164
- rowNumber
165
- }
166
- }
167
- }
168
- }
169
- `;
170
- function useLeaderboard(props) {
171
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
172
- const programId = index_module.M();
173
- const user = index_module.ne();
174
- const variables = {
175
- type: props.leaderboardType,
176
- filter: { programId_eq: programId },
177
- };
178
- if (props.interval) {
179
- variables.filter["interval"] = props.interval;
180
- }
181
- const { data: leaderboardData, loading: loadingLeaderboard } = index_module.mn(GET_LEADERBOARD, variables, !(user === null || user === void 0 ? void 0 : user.jwt));
182
- const { data: rankData } = index_module.mn(GET_RANK, variables, !(user === null || user === void 0 ? void 0 : user.jwt));
183
- const leaderboardRows = (_a = leaderboardData === null || leaderboardData === void 0 ? void 0 : leaderboardData.userLeaderboard) === null || _a === void 0 ? void 0 : _a.rows;
184
- const flattenedLeaderboard = getFlattenedLeaderboard(leaderboardRows);
185
- const sortedLeaderboard = flattenedLeaderboard === null || flattenedLeaderboard === void 0 ? void 0 : flattenedLeaderboard.sort(function (a, b) {
186
- return a.rank - b.rank;
187
- });
188
- function getFlattenedLeaderboard(leaderboardRows) {
189
- return leaderboardRows === null || leaderboardRows === void 0 ? void 0 : leaderboardRows.flatMap((user) => {
190
- var _a, _b;
191
- return ({
192
- value: user.value,
193
- firstName: user.firstName,
194
- lastInitial: user.lastInitial,
195
- rank: (_a = user.rank) === null || _a === void 0 ? void 0 : _a[props.rankType],
196
- rowNumber: (_b = user.rank) === null || _b === void 0 ? void 0 : _b.rowNumber,
197
- });
198
- });
199
- }
200
- console.log(rankData);
201
- const viewingUser = {
202
- value: (_c = (_b = rankData === null || rankData === void 0 ? void 0 : rankData.viewer) === null || _b === void 0 ? void 0 : _b.leaderboardRank) === null || _c === void 0 ? void 0 : _c.value,
203
- firstName: (_d = rankData === null || rankData === void 0 ? void 0 : rankData.viewer) === null || _d === void 0 ? void 0 : _d.firstName,
204
- lastInitial: (_e = rankData === null || rankData === void 0 ? void 0 : rankData.viewer) === null || _e === void 0 ? void 0 : _e.lastInitial,
205
- rank: (_g = (_f = rankData === null || rankData === void 0 ? void 0 : rankData.viewer) === null || _f === void 0 ? void 0 : _f.leaderboardRank) === null || _g === void 0 ? void 0 : _g[props.rankType],
206
- rowNumber: (_j = (_h = rankData === null || rankData === void 0 ? void 0 : rankData.viewer) === null || _h === void 0 ? void 0 : _h.leaderboardRank) === null || _j === void 0 ? void 0 : _j.rowNumber,
207
- };
208
- return {
209
- states: {
210
- loading: loadingLeaderboard,
211
- hasLeaders: (sortedLeaderboard === null || sortedLeaderboard === void 0 ? void 0 : sortedLeaderboard.length) > 0,
212
- styles: props,
213
- },
214
- data: {
215
- leaderboard: sortedLeaderboard,
216
- rankType: props.rankType,
217
- userRank: viewingUser,
218
- showUser: props.showUser,
219
- },
220
- elements: {
221
- empty: props.empty,
222
- loadingstate: props.loadingstate,
223
- },
224
- };
225
- }
226
-
227
- exports.LeaderboardView = LeaderboardView;
228
- exports.ShadowViewAddon = ShadowViewAddon;
229
- exports.useLeaderboard = useLeaderboard;
230
- exports.withShadowView = withShadowView;
@@ -1,98 +0,0 @@
1
- import { r as registerInstance, h as h$1 } from './index-17b4da69.js';
2
- import { m as h } from './stencil-hooks.module-2f159754.js';
3
- import './use-callback-d8ef4b5d.js';
4
- import { k } from './index.module-ec3dcc82.js';
5
- import './extends-c31f1eff.js';
6
- import { c as cjs } from './cjs-bdfb4486.js';
7
- import './JSS-96eeab98.js';
8
- import { w as withShadowView, u as useLeaderboard, L as LeaderboardView } from './useLeaderboard-b670847e.js';
9
-
10
- const sqmLeaderboardCss = ":host{display:block}:host([hidden]){display:none}table{width:100%;border-collapse:collapse}th{font-size:var(--sl-font-size-small);font-weight:var(--sl-font-weight-semibold);text-align:left}tr:not(:first-child){border-top:1px solid var(--sl-color-neutral-200)}td{font-size:var(--sl-font-size-medium);font-weight:var(--sl-font-weight-normal)}.ellipses{text-align:center;padding:0;color:var(--sl-color-neutral-500)}.highlight{background:var(--sl-color-primary-50)}td,th{color:var(--sl-color-gray-800);padding:var(--sl-spacing-medium)}th{padding:var(--sl-spacing-medium);padding-top:0}.User{width:100%}.Score{width:auto;white-space:nowrap}";
11
-
12
- const Leaderboard = class {
13
- constructor(hostRef) {
14
- registerInstance(this, hostRef);
15
- /**
16
- * @uiName Show viewing user's rank
17
- */
18
- this.showUser = true;
19
- /**
20
- * @uiName Title displayed for users without names
21
- */
22
- this.anonymousUser = "Anonymous User";
23
- /**
24
- * @uiName Empty State Image
25
- */
26
- this.emptyStateImage = "https://i.imgur.com/KPGnPF8.png";
27
- /**
28
- * @uiName Empty State Header
29
- */
30
- this.emptyStateHeader = "View your rank in the leaderboard";
31
- /**
32
- * @uiName Empty State Description
33
- */
34
- this.emptyStateText = "Be the first to refer a friend and reach the top of the leaderboard";
35
- this.ignored = true;
36
- h(this);
37
- withShadowView(this);
38
- }
39
- disconnectedCallback() { }
40
- render() {
41
- const props = {
42
- empty: h$1(EmptySlot, null),
43
- loadingstate: h$1(LoadingSlot, null),
44
- usersheading: this.usersheading,
45
- statsheading: this.statsheading,
46
- rankType: this.rankType,
47
- leaderboardType: this.leaderboardType,
48
- anonymousUser: this.anonymousUser,
49
- interval: this.interval,
50
- showUser: this.showUser,
51
- showRank: this.showRank,
52
- };
53
- const demoProps = { ...props, demoData: this.demoData };
54
- const viewprops = k()
55
- ? useLeaderboardDemo(demoProps)
56
- : useLeaderboard(props);
57
- return (h$1(LeaderboardView, Object.assign({}, viewprops), h$1("slot", null)));
58
- }
59
- };
60
- function EmptySlot() {
61
- return (h$1("slot", { name: "empty" }, h$1("sqm-portal-container", { padding: "xxxx-large", gap: "medium" }, h$1("sqm-image", { "image-url": this.emptyStateImage, "max-width": "100px" }), h$1("sqm-titled-section", { "label-margin": "xxx-small", align: "center" }, h$1("sqm-text", { slot: "label" }, h$1("h3", null, this.emptyStateHeader)), h$1("sqm-text", { slot: "content" }, this.emptyStateText)))));
62
- }
63
- function LoadingSlot() {
64
- return (h$1("slot", { name: "loadingstate" }, h$1("table", null, [...Array(10)].map(() => {
65
- return (h$1("tr", null, h$1("td", null, h$1("sl-skeleton", null))));
66
- }))));
67
- }
68
- function useLeaderboardDemo(props) {
69
- return cjs({
70
- states: {
71
- loading: false,
72
- hasLeaders: true,
73
- styles: {
74
- usersheading: props.usersheading
75
- ? props.usersheading
76
- : "TOP REFERRERS",
77
- statsheading: props.statsheading ? props.statsheading : "NEW CUSTOMERS",
78
- },
79
- },
80
- data: {
81
- rankType: "rowNumber",
82
- leaderboard: [
83
- { firstName: "Viktor", lastInitial: "V", value: 82, rank: 1 },
84
- { firstName: "MF", lastInitial: "D", value: 73, rank: 2 },
85
- { firstName: "Freddie", lastInitial: "G", value: 64, rank: 3 },
86
- { firstName: "Benny", lastInitial: "B", value: 55, rank: 4 },
87
- { firstName: "Mos", lastInitial: "D", value: 46, rank: 5 },
88
- ],
89
- },
90
- elements: {
91
- empty: h$1(EmptySlot, null),
92
- loadingstate: h$1(LoadingSlot, null),
93
- },
94
- }, props.demoProps || {}, { arrayMerge: (_, a) => a });
95
- }
96
- Leaderboard.style = sqmLeaderboardCss;
97
-
98
- export { Leaderboard as sqm_leaderboard };
@@ -1,225 +0,0 @@
1
- import { g as getElement, h } from './index-17b4da69.js';
2
- import { d as dist, M, n as ne, b as mn } from './index.module-ec3dcc82.js';
3
- import { c as createStyleSheet } from './JSS-96eeab98.js';
4
-
5
- const map = new Map();
6
- function withShadowView(component) {
7
- // TODO: Could only do this if rendered in a Stencilbook environment to prevent unintended side-effects
8
- const element = getElement(component);
9
- let renderFn = component["render"].bind(component);
10
- const newRenderFn = () => {
11
- const key = element.getAttribute("stencilbook-shadow-view");
12
- if (key) {
13
- const value = map.get(key);
14
- if (value) {
15
- return value;
16
- }
17
- }
18
- return renderFn();
19
- };
20
- component["render"] = newRenderFn;
21
- }
22
- /**
23
- * Any story that defines `parameters.tagname` will be used as a wrapper component around the view
24
- */
25
- const ShadowViewAddon = ({ story }, children) => {
26
- var _a;
27
- let TagName = (_a = story.parent.parameters) === null || _a === void 0 ? void 0 : _a.tagname;
28
- if (!TagName)
29
- return children;
30
- const randomInt = Math.round(Math.random() * 100000);
31
- map.set(randomInt + "", children);
32
- const RandomTagName = "stencilbook-shawdow-view-" + randomInt;
33
- // This will only re-render when the tag name changes, so we use a random tag name every time.
34
- // Altneratively we could try to trick Stencil to call `forceUpdate` every time.
35
- return (h(RandomTagName, null,
36
- h(TagName, { "stencilbook-shadow-view": randomInt })));
37
- };
38
-
39
- const style = {
40
- Leaderboard: {
41
- "& table": {
42
- width: "100%",
43
- borderCollapse: "collapse",
44
- },
45
- "& th": {
46
- textAlign: "left",
47
- padding: "var(--sl-spacing-medium)",
48
- paddingTop: "0",
49
- fontSize: "var(--sl-font-size-medium)",
50
- fontWeight: "var(--sl-font-weight-semibold)",
51
- },
52
- "& tr:not(:first-child)": {
53
- borderTop: "1px solid var(--sl-color-neutral-200)",
54
- },
55
- "& td": {
56
- fontSize: "var(--sl-font-size-medium)",
57
- fontWeight: "var(--sl-font-weight-normal)",
58
- },
59
- "& .ellipses": {
60
- textAlign: "center",
61
- padding: "0",
62
- color: "var(--sl-color-neutral-500)",
63
- },
64
- "& .highlight": {
65
- background: "var(--sl-color-primary-50)",
66
- },
67
- "& td, th": {
68
- color: "var(--sl-color-gray-800)",
69
- padding: "var(--sl-spacing-medium)",
70
- },
71
- "& .User": {
72
- width: "100%",
73
- },
74
- "& .Score": {
75
- width: "auto",
76
- whiteSpace: "nowrap",
77
- },
78
- },
79
- };
80
- const sheet = createStyleSheet(style);
81
- const styleString = sheet.toString();
82
- const vanillaStyle = `
83
- :host{
84
- display: block;
85
- }
86
- `;
87
- function LeaderboardView(props) {
88
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
89
- const { states, data, elements } = props;
90
- const { styles } = states;
91
- if (states.loading)
92
- return (h("div", { class: sheet.classes.Leaderboard },
93
- h("style", { type: "text/css" },
94
- styleString,
95
- vanillaStyle),
96
- elements.loadingstate));
97
- let userSeenFlag = false;
98
- return (h("div", { class: sheet.classes.Leaderboard },
99
- h("style", { type: "text/css" },
100
- styleString,
101
- vanillaStyle),
102
- h("table", null,
103
- h("tr", null,
104
- styles.showRank && h("th", { class: "Rank" }, styles.rankheading),
105
- h("th", { class: "User" }, styles.usersheading),
106
- h("th", { class: "Score" }, styles.statsheading)),
107
- !states.hasLeaders && (h("tr", null,
108
- h("td", { colSpan: 100 }, elements.empty))), (_a = data.leaderboard) === null || _a === void 0 ? void 0 :
109
- _a.map((user) => {
110
- var _a, _b;
111
- if (user.rowNumber === ((_a = data.userRank) === null || _a === void 0 ? void 0 : _a.rowNumber))
112
- userSeenFlag = true;
113
- return (h("tr", { class: user.rowNumber === ((_b = data.userRank) === null || _b === void 0 ? void 0 : _b.rowNumber) ? "highlight" : "" },
114
- styles.showRank && h("td", { class: "Rank" }, user.rank),
115
- h("td", { class: "User" }, user.firstName && user.lastInitial
116
- ? user.firstName + " " + user.lastInitial
117
- : user.firstName || user.lastInitial
118
- ? user.firstName || user.lastInitial
119
- : styles.anonymousUser || "Anonymous User"),
120
- h("td", { class: "Score" }, user.value)));
121
- }),
122
- !userSeenFlag && data.showUser && (h("tr", null,
123
- h("td", { colSpan: 100, class: "ellipses" },
124
- h("sl-icon", { name: "three-dots", style: { verticalAlign: "middle" } })))),
125
- !userSeenFlag && data.showUser && (h("tr", { class: "highlight" },
126
- styles.showRank && (h("td", { class: "Rank" }, ((_b = data.userRank) === null || _b === void 0 ? void 0 : _b.rank) || "-")),
127
- h("td", { class: "User" }, ((_c = data.userRank) === null || _c === void 0 ? void 0 : _c.firstName) && ((_d = data.userRank) === null || _d === void 0 ? void 0 : _d.lastInitial)
128
- ? ((_e = data.userRank) === null || _e === void 0 ? void 0 : _e.firstName) + " " + ((_f = data.userRank) === null || _f === void 0 ? void 0 : _f.lastInitial)
129
- : ((_g = data.userRank) === null || _g === void 0 ? void 0 : _g.firstName) || ((_h = data.userRank) === null || _h === void 0 ? void 0 : _h.lastInitial)
130
- ? ((_j = data.userRank) === null || _j === void 0 ? void 0 : _j.firstName) || ((_k = data.userRank) === null || _k === void 0 ? void 0 : _k.lastInitial)
131
- : styles.anonymousUser || "Anonymous User"),
132
- h("td", { class: "Score" }, ((_l = data.userRank) === null || _l === void 0 ? void 0 : _l.value) || "0"))))));
133
- }
134
-
135
- const GET_LEADERBOARD = dist.gql `
136
- query ($type: String!, $filter: UserLeaderboardFilterInput) {
137
- userLeaderboard(type: $type, filter: $filter) {
138
- dateModified
139
- rows {
140
- value
141
- firstName
142
- lastInitial
143
- rank {
144
- rank
145
- denseRank
146
- rowNumber
147
- }
148
- }
149
- }
150
- }
151
- `;
152
- const GET_RANK = dist.gql `
153
- query ($type: String!, $filter: UserLeaderboardFilterInput) {
154
- viewer {
155
- ... on User {
156
- firstName
157
- lastInitial
158
- leaderboardRank(type: $type, filter: $filter) {
159
- value
160
- rank
161
- denseRank
162
- rowNumber
163
- }
164
- }
165
- }
166
- }
167
- `;
168
- function useLeaderboard(props) {
169
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
170
- const programId = M();
171
- const user = ne();
172
- const variables = {
173
- type: props.leaderboardType,
174
- filter: { programId_eq: programId },
175
- };
176
- if (props.interval) {
177
- variables.filter["interval"] = props.interval;
178
- }
179
- const { data: leaderboardData, loading: loadingLeaderboard } = mn(GET_LEADERBOARD, variables, !(user === null || user === void 0 ? void 0 : user.jwt));
180
- const { data: rankData } = mn(GET_RANK, variables, !(user === null || user === void 0 ? void 0 : user.jwt));
181
- const leaderboardRows = (_a = leaderboardData === null || leaderboardData === void 0 ? void 0 : leaderboardData.userLeaderboard) === null || _a === void 0 ? void 0 : _a.rows;
182
- const flattenedLeaderboard = getFlattenedLeaderboard(leaderboardRows);
183
- const sortedLeaderboard = flattenedLeaderboard === null || flattenedLeaderboard === void 0 ? void 0 : flattenedLeaderboard.sort(function (a, b) {
184
- return a.rank - b.rank;
185
- });
186
- function getFlattenedLeaderboard(leaderboardRows) {
187
- return leaderboardRows === null || leaderboardRows === void 0 ? void 0 : leaderboardRows.flatMap((user) => {
188
- var _a, _b;
189
- return ({
190
- value: user.value,
191
- firstName: user.firstName,
192
- lastInitial: user.lastInitial,
193
- rank: (_a = user.rank) === null || _a === void 0 ? void 0 : _a[props.rankType],
194
- rowNumber: (_b = user.rank) === null || _b === void 0 ? void 0 : _b.rowNumber,
195
- });
196
- });
197
- }
198
- console.log(rankData);
199
- const viewingUser = {
200
- value: (_c = (_b = rankData === null || rankData === void 0 ? void 0 : rankData.viewer) === null || _b === void 0 ? void 0 : _b.leaderboardRank) === null || _c === void 0 ? void 0 : _c.value,
201
- firstName: (_d = rankData === null || rankData === void 0 ? void 0 : rankData.viewer) === null || _d === void 0 ? void 0 : _d.firstName,
202
- lastInitial: (_e = rankData === null || rankData === void 0 ? void 0 : rankData.viewer) === null || _e === void 0 ? void 0 : _e.lastInitial,
203
- rank: (_g = (_f = rankData === null || rankData === void 0 ? void 0 : rankData.viewer) === null || _f === void 0 ? void 0 : _f.leaderboardRank) === null || _g === void 0 ? void 0 : _g[props.rankType],
204
- rowNumber: (_j = (_h = rankData === null || rankData === void 0 ? void 0 : rankData.viewer) === null || _h === void 0 ? void 0 : _h.leaderboardRank) === null || _j === void 0 ? void 0 : _j.rowNumber,
205
- };
206
- return {
207
- states: {
208
- loading: loadingLeaderboard,
209
- hasLeaders: (sortedLeaderboard === null || sortedLeaderboard === void 0 ? void 0 : sortedLeaderboard.length) > 0,
210
- styles: props,
211
- },
212
- data: {
213
- leaderboard: sortedLeaderboard,
214
- rankType: props.rankType,
215
- userRank: viewingUser,
216
- showUser: props.showUser,
217
- },
218
- elements: {
219
- empty: props.empty,
220
- loadingstate: props.loadingstate,
221
- },
222
- };
223
- }
224
-
225
- export { LeaderboardView as L, ShadowViewAddon as S, useLeaderboard as u, withShadowView as w };