@saasquatch/mint-components 1.5.4-0 → 1.5.4

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 (47) hide show
  1. package/CHANGELOG.md +3 -1
  2. package/dist/cjs/{ShadowViewAddon-a94a1ff9.js → ShadowViewAddon-19f45acf.js} +2 -2
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/mint-components.cjs.js +1 -1
  5. package/dist/cjs/sqm-big-stat_35.cjs.entry.js +41 -22
  6. package/dist/cjs/sqm-leaderboard-rank.cjs.entry.js +1 -0
  7. package/dist/cjs/sqm-stencilbook.cjs.entry.js +38 -30
  8. package/dist/collection/components/sqm-leaderboard/Leaderboard.stories.js +34 -26
  9. package/dist/collection/components/sqm-leaderboard/UseLeaderboard.stories.js +1 -1
  10. package/dist/collection/components/sqm-leaderboard/sqm-leaderboard-view.js +2 -2
  11. package/dist/collection/components/sqm-leaderboard/sqm-leaderboard.js +29 -27
  12. package/dist/collection/components/sqm-leaderboard/useLeaderboard.js +26 -9
  13. package/dist/collection/components/sqm-leaderboard-rank/useLeaderboardRank.js +1 -0
  14. package/dist/collection/components/sqm-reward-exchange-list/sqm-reward-exchange-list.js +2 -2
  15. package/dist/esm/{ShadowViewAddon-87c6e4d6.js → ShadowViewAddon-2ebdb75f.js} +2 -2
  16. package/dist/esm/loader.js +1 -1
  17. package/dist/esm/mint-components.js +1 -1
  18. package/dist/esm/sqm-big-stat_35.entry.js +42 -23
  19. package/dist/esm/sqm-leaderboard-rank.entry.js +1 -0
  20. package/dist/esm/sqm-stencilbook.entry.js +38 -30
  21. package/dist/esm-es5/ShadowViewAddon-2ebdb75f.js +1 -0
  22. package/dist/esm-es5/loader.js +1 -1
  23. package/dist/esm-es5/mint-components.js +1 -1
  24. package/dist/esm-es5/sqm-big-stat_35.entry.js +1 -1
  25. package/dist/esm-es5/sqm-leaderboard-rank.entry.js +1 -1
  26. package/dist/esm-es5/sqm-stencilbook.entry.js +1 -1
  27. package/dist/mint-components/mint-components.esm.js +1 -1
  28. package/dist/mint-components/{p-7fbf40d1.entry.js → p-11dc0927.entry.js} +1 -1
  29. package/dist/mint-components/p-1e72d54f.system.entry.js +1 -0
  30. package/dist/mint-components/p-1efb0bff.system.entry.js +1 -0
  31. package/dist/mint-components/{p-0141c56b.system.entry.js → p-2debe4c7.system.entry.js} +1 -1
  32. package/dist/mint-components/p-3cfe1db7.system.js +1 -0
  33. package/dist/mint-components/p-436da6b8.system.js +1 -1
  34. package/dist/mint-components/{p-3ad83621.entry.js → p-6528f752.entry.js} +1 -1
  35. package/dist/mint-components/{p-c195994f.js → p-6da6a80f.js} +1 -1
  36. package/dist/mint-components/p-e0cb936a.entry.js +159 -0
  37. package/dist/types/components/sqm-leaderboard/sqm-leaderboard-view.d.ts +2 -2
  38. package/dist/types/components/sqm-leaderboard/sqm-leaderboard.d.ts +15 -11
  39. package/dist/types/components/sqm-leaderboard/useLeaderboard.d.ts +2 -2
  40. package/dist/types/components.d.ts +30 -26
  41. package/grapesjs/grapesjs.js +1 -1
  42. package/package.json +1 -1
  43. package/dist/esm-es5/ShadowViewAddon-87c6e4d6.js +0 -1
  44. package/dist/mint-components/p-02b6ea85.system.js +0 -1
  45. package/dist/mint-components/p-798486ae.entry.js +0 -150
  46. package/dist/mint-components/p-a3686572.system.entry.js +0 -1
  47. package/dist/mint-components/p-adac1440.system.entry.js +0 -1
@@ -2,7 +2,7 @@ import { r as registerInstance, h as h$1, c as Host } from './index-17b4da69.js'
2
2
  import { m as h, e as useEffect, k as useState, y, o as d, f as useRef, b as browser, u as useReducer } from './stencil-hooks.module-acc8a613.js';
3
3
  import { i as intl } from './global-15cdf41a.js';
4
4
  import { u as useCallback } from './use-callback-7e0bfd3b.js';
5
- import { j as jn, P, d as dist, i as ie, b as sn, q as qe, M, r as rn, c as dn, g as $e, E as Ee, D as De, H as He, l as ln, R as Rn, A as An } from './index.module-f5e17a4e.js';
5
+ import { j as jn, P, d as dist, i as ie, b as sn, q as qe, M, A as An, r as rn, c as dn, g as $e, E as Ee, D as De, H as He, l as ln, R as Rn } from './index.module-f5e17a4e.js';
6
6
  import './extends-c31f1eff.js';
7
7
  import { j as jsonpointer } from './jsonpointer-388a7082.js';
8
8
  import { c as cjs } from './cjs-bdfb4486.js';
@@ -14,7 +14,7 @@ import './luxon-f44215d9.js';
14
14
  import { g as getProps, a as getMissingProps, s as sanitizeUrlPath } from './utils-d7bbb0e2.js';
15
15
  import './sqm-text-span-view-020db63f.js';
16
16
  import './sqm-portal-container-view-34f26e2a.js';
17
- import { c as useDemoBigStat, K as useBigStat, B as BigStatView, H as autoColorScaleCss, G as CardFeedView, C as CheckboxFieldView, D as DropdownFieldView, E as EditProfileView, I as InputFieldView, M as withShadowView, L as LeaderboardView, N as NameFieldsView, e as PortalChangePasswordView, P as PortalFrameView, f as PortalLoginView, g as PortalRegisterView, R as ReferralIframeView, O as demoRewardExchange, i as RewardExchangeView, Q as pathToRegexp, b as useShareButton, S as ShareButtonView, a as ShareLinkView, u as useShareLink, d as StatContainerView, T as TaskCardView } from './ShadowViewAddon-87c6e4d6.js';
17
+ import { c as useDemoBigStat, K as useBigStat, B as BigStatView, H as autoColorScaleCss, G as CardFeedView, C as CheckboxFieldView, D as DropdownFieldView, E as EditProfileView, I as InputFieldView, M as withShadowView, L as LeaderboardView, N as NameFieldsView, e as PortalChangePasswordView, P as PortalFrameView, f as PortalLoginView, g as PortalRegisterView, R as ReferralIframeView, O as demoRewardExchange, i as RewardExchangeView, Q as pathToRegexp, b as useShareButton, S as ShareButtonView, a as ShareLinkView, u as useShareLink, d as StatContainerView, T as TaskCardView } from './ShadowViewAddon-2ebdb75f.js';
18
18
  import './sqm-portal-section-view-c8d1c727.js';
19
19
 
20
20
  const BigStat = class {
@@ -864,11 +864,16 @@ function useInputFieldDemo(props) {
864
864
  }
865
865
 
866
866
  const GET_LEADERBOARD = dist.gql `
867
- query ($type: String!, $filter: UserLeaderboardFilterInput) {
867
+ query (
868
+ $type: String!
869
+ $filter: UserLeaderboardFilterInput
870
+ $locale: RSLocale
871
+ $limit: Int!
872
+ ) {
868
873
  userLeaderboard(type: $type, filter: $filter) {
869
874
  dateModified
870
- rows {
871
- value
875
+ rows(limit: $limit) {
876
+ textValue(locale: $locale)
872
877
  firstName
873
878
  lastInitial
874
879
  rank {
@@ -881,13 +886,17 @@ const GET_LEADERBOARD = dist.gql `
881
886
  }
882
887
  `;
883
888
  const GET_RANK = dist.gql `
884
- query ($type: String!, $filter: UserLeaderboardFilterInput) {
889
+ query (
890
+ $type: String!
891
+ $filter: UserLeaderboardFilterInput
892
+ $locale: RSLocale
893
+ ) {
885
894
  viewer {
886
895
  ... on User {
887
896
  firstName
888
897
  lastInitial
889
898
  leaderboardRank(type: $type, filter: $filter) {
890
- value
899
+ textValue(locale: $locale)
891
900
  rank
892
901
  denseRank
893
902
  rowNumber
@@ -902,6 +911,7 @@ function useLeaderboard(props) {
902
911
  // Default to context, overriden by props
903
912
  const programId = (_a = props.programId) !== null && _a !== void 0 ? _a : programIdContext;
904
913
  const user = ie();
914
+ const locale = An();
905
915
  const variables = programId
906
916
  ? {
907
917
  type: props.leaderboardType,
@@ -909,10 +919,17 @@ function useLeaderboard(props) {
909
919
  }
910
920
  : {
911
921
  type: props.leaderboardType,
922
+ filter: {},
912
923
  };
913
924
  if (props.interval) {
914
925
  variables.filter["interval"] = props.interval;
915
926
  }
927
+ if (locale) {
928
+ variables["locale"] = locale;
929
+ }
930
+ if (props.maxRows > 0) {
931
+ variables["limit"] = props.maxRows;
932
+ }
916
933
  const { data: leaderboardData, loading: loadingLeaderboard } = sn(GET_LEADERBOARD, variables, !(user === null || user === void 0 ? void 0 : user.jwt));
917
934
  const { data: rankData } = sn(GET_RANK, variables, !(user === null || user === void 0 ? void 0 : user.jwt));
918
935
  const leaderboardRows = (_b = leaderboardData === null || leaderboardData === void 0 ? void 0 : leaderboardData.userLeaderboard) === null || _b === void 0 ? void 0 : _b.rows;
@@ -924,7 +941,7 @@ function useLeaderboard(props) {
924
941
  return leaderboardRows === null || leaderboardRows === void 0 ? void 0 : leaderboardRows.flatMap((user) => {
925
942
  var _a, _b;
926
943
  return ({
927
- value: user.value,
944
+ textValue: user.textValue,
928
945
  firstName: user.firstName,
929
946
  lastInitial: user.lastInitial,
930
947
  rank: (_a = user.rank) === null || _a === void 0 ? void 0 : _a[props.rankType],
@@ -933,7 +950,7 @@ function useLeaderboard(props) {
933
950
  });
934
951
  }
935
952
  const viewingUser = {
936
- value: (_d = (_c = rankData === null || rankData === void 0 ? void 0 : rankData.viewer) === null || _c === void 0 ? void 0 : _c.leaderboardRank) === null || _d === void 0 ? void 0 : _d.value,
953
+ textValue: (_d = (_c = rankData === null || rankData === void 0 ? void 0 : rankData.viewer) === null || _c === void 0 ? void 0 : _c.leaderboardRank) === null || _d === void 0 ? void 0 : _d.textValue,
937
954
  firstName: (_e = rankData === null || rankData === void 0 ? void 0 : rankData.viewer) === null || _e === void 0 ? void 0 : _e.firstName,
938
955
  lastInitial: (_f = rankData === null || rankData === void 0 ? void 0 : rankData.viewer) === null || _f === void 0 ? void 0 : _f.lastInitial,
939
956
  rank: (_h = (_g = rankData === null || rankData === void 0 ? void 0 : rankData.viewer) === null || _g === void 0 ? void 0 : _g.leaderboardRank) === null || _h === void 0 ? void 0 : _h[props.rankType],
@@ -946,7 +963,7 @@ function useLeaderboard(props) {
946
963
  styles: props,
947
964
  },
948
965
  data: {
949
- leaderboard: sortedLeaderboard === null || sortedLeaderboard === void 0 ? void 0 : sortedLeaderboard.slice(0, props.rowNumber),
966
+ leaderboard: sortedLeaderboard,
950
967
  rankType: props.rankType,
951
968
  viewerRank: viewingUser,
952
969
  },
@@ -961,21 +978,23 @@ const Leaderboard = class {
961
978
  constructor(hostRef) {
962
979
  registerInstance(this, hostRef);
963
980
  /**
964
- * Hide the current user's leaderboard information when they are not in the top 10
981
+ * Hide the viewer's leaderboard row if not in the top 10.
965
982
  *
966
- * @uiName Hide viewing user
983
+ * @uiName Hide Viewing User
967
984
  */
968
985
  this.hideViewer = false;
969
986
  /**
970
- * @uiName Title displayed for users without names
987
+ * Text displayed for users without names in the leaderboard
988
+ *
989
+ * @uiName Anonymous User Name
971
990
  */
972
991
  this.anonymousUser = "Anonymous User";
973
992
  /**
974
- * The maxiumum amount of leaderboard rows displayed, minimum is 1 and maximum is 10
993
+ * Control the maximum amount of rows displayed on the leaderboard.
975
994
  *
976
- * @uiName Max Number of Leaderboard Rows
995
+ * @uiName Maximum Rows Number
977
996
  */
978
- this.rowNumber = 10;
997
+ this.maxRows = 10;
979
998
  this.ignored = true;
980
999
  h(this);
981
1000
  withShadowView(this);
@@ -990,7 +1009,7 @@ const Leaderboard = class {
990
1009
  rankheading: this.rankheading,
991
1010
  rankType: this.rankType,
992
1011
  leaderboardType: this.leaderboardType,
993
- rowNumber: this.rowNumber,
1012
+ maxRows: this.maxRows,
994
1013
  programId: this.programId,
995
1014
  anonymousUser: this.anonymousUser,
996
1015
  interval: this.interval,
@@ -1018,33 +1037,33 @@ function useLeaderboardDemo(props) {
1018
1037
  {
1019
1038
  firstName: "Viktor",
1020
1039
  lastInitial: "V",
1021
- value: 82,
1040
+ textValue: "82",
1022
1041
  rank: 1,
1023
1042
  rowNumber: 1,
1024
1043
  },
1025
1044
  {
1026
1045
  firstName: "MF",
1027
1046
  lastInitial: "D",
1028
- value: 73,
1047
+ textValue: "73",
1029
1048
  rank: 2,
1030
1049
  rowNumber: 2,
1031
1050
  },
1032
1051
  {
1033
1052
  firstName: "Freddie",
1034
1053
  lastInitial: "G",
1035
- value: 64,
1054
+ textValue: "64",
1036
1055
  rank: 3,
1037
1056
  rowNumber: 3,
1038
1057
  },
1039
1058
  {
1040
1059
  firstName: "Benny",
1041
1060
  lastInitial: "B",
1042
- value: 55,
1061
+ textValue: "55",
1043
1062
  rank: 4,
1044
1063
  rowNumber: 4,
1045
1064
  },
1046
1065
  {
1047
- value: 46,
1066
+ textValue: "46",
1048
1067
  rank: 5,
1049
1068
  rowNumber: 5,
1050
1069
  },
@@ -6689,7 +6708,7 @@ const SqmRewardExchangeList = class {
6689
6708
  /**
6690
6709
  * @uiName Exchange button text
6691
6710
  */
6692
- this.notAvailableError = "{unavailableReasonCode, select, US_TAX {US Tax limit} INSUFFICIENT_REDEEMABLE_CREDIT {{sourceValue} required} AVAILABILITY_PREDICATE {Not available} other {unavailableReasonCode} }";
6711
+ this.notAvailableError = "{unavailableReasonCode, select, US_TAX {US Tax limit} INSUFFICIENT_REDEEMABLE_CREDIT {{sourceValue} required} AVAILABILITY_PREDICATE {Not available} other {{unavailableReasonCode}} }";
6693
6712
  /**
6694
6713
  * @uiName Choose Reward Progress Title
6695
6714
  */
@@ -33,6 +33,7 @@ function useLeaderboardRank(props) {
33
33
  }
34
34
  : {
35
35
  type: props.leaderboardType,
36
+ filter: {},
36
37
  };
37
38
  if (props.interval) {
38
39
  rankVariables.filter["interval"] = props.interval;
@@ -23,7 +23,7 @@ import { P as PortalContainerView } from './sqm-portal-container-view-34f26e2a.j
23
23
  import { P as PortalProfileView } from './sqm-portal-profile-view-28c39970.js';
24
24
  import { P as PortalResetPasswordView } from './sqm-portal-reset-password-view-e0436989.js';
25
25
  import { P as PortalVerifyEmailView } from './sqm-portal-verify-email-view-c489166b.js';
26
- import { S as ShareButtonView, L as LeaderboardView, a as ShareLinkView, B as BigStatView, P as PortalFrameView, E as EditProfileView, u as useShareLink, b as useShareButton, c as useDemoBigStat, d as StatContainerView, e as PortalChangePasswordView, f as PortalLoginView, g as PortalRegisterView, T as TaskCardView, h as ProgressBarView, R as ReferralIframeView, N as NameFieldsView, C as CheckboxFieldView, D as DropdownFieldView, I as InputFieldView, i as RewardExchangeView, r as rewardExchangeCustomErrorMsg, j as rewardExchangeLongText, k as rewardExchangeSelected, l as chooseAmountFixed, m as chooseAmountFixedNoDescription, n as chooseAmountVariable, o as chooseAmountVariableNoDescription, p as chooseAmountVariableDisabled, q as chooseAmountVariableUnavailable, s as confirmFixed, t as confirmVariable, v as redemptionError, w as queryError, x as success, y as successVariable, z as loading, A as empty$1, F as rewardExchange, G as CardFeedView, H as autoColorScaleCss, J as ShadowViewAddon } from './ShadowViewAddon-87c6e4d6.js';
26
+ import { S as ShareButtonView, L as LeaderboardView, a as ShareLinkView, B as BigStatView, P as PortalFrameView, E as EditProfileView, u as useShareLink, b as useShareButton, c as useDemoBigStat, d as StatContainerView, e as PortalChangePasswordView, f as PortalLoginView, g as PortalRegisterView, T as TaskCardView, h as ProgressBarView, R as ReferralIframeView, N as NameFieldsView, C as CheckboxFieldView, D as DropdownFieldView, I as InputFieldView, i as RewardExchangeView, r as rewardExchangeCustomErrorMsg, j as rewardExchangeLongText, k as rewardExchangeSelected, l as chooseAmountFixed, m as chooseAmountFixedNoDescription, n as chooseAmountVariable, o as chooseAmountVariableNoDescription, p as chooseAmountVariableDisabled, q as chooseAmountVariableUnavailable, s as confirmFixed, t as confirmVariable, v as redemptionError, w as queryError, x as success, y as successVariable, z as loading, A as empty$1, F as rewardExchange, G as CardFeedView, H as autoColorScaleCss, J as ShadowViewAddon } from './ShadowViewAddon-2ebdb75f.js';
27
27
  import { P as PortalSectionView } from './sqm-portal-section-view-c8d1c727.js';
28
28
 
29
29
  /**
@@ -1768,7 +1768,7 @@ const BigStat = /*#__PURE__*/Object.freeze({
1768
1768
  MultipleStats: MultipleStats
1769
1769
  });
1770
1770
 
1771
- const scenario$4 = "@owner:noah\r\n@author:noah\r\nFeature: Leaderboard\r\n\r\n\tThe leaderboard supports three main cases\r\n\t- Top Started Referrers\r\n\t- Top Converted Referrers\r\n\t- Top Point Earners\r\n\tTo display these different types of leaderboards it uses the backends pre-canned options.\r\n\tThe backend supports filtering on programId and interval, programId is sourced from program context.\r\n\r\n\tBackground: A user exists\r\n\t\tGiven a user\r\n\t\tAnd they are viewing the leaderboard\r\n\r\n\t@motivating\r\n\tScenario: The top started referrers leaderboard is displayed by default\r\n\t\tGiven a leaderboard doesn't have prop \"leaderboard-type\"\r\n\t\tAnd there are started referrals on the tenant\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen they see the top started referrers leaderboard\r\n\r\n\t@motivating\r\n\tScenario Outline: Two types of referrals leaderboards can be displayed\r\n\t\tGiven a leaderboard has prop \"leaderboard-type\" with <value>\r\n\t\tAnd there are started referrals on the tenant\r\n\t\tAnd there are started converted on the tenant\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen they see the <referralType> leaderboard\r\n\t\tExamples:\r\n\t\t\t| value | referralType |\r\n\t\t\t| topStartedReferrers | started |\r\n\t\t\t| topConvertedReferrers | converted |\r\n\r\n\t@motivating\r\n\tScenario: The top point earners leaderboard can be displayed\r\n\t\tGiven a leaderboard has prop \"leaderboard-type\" with value \"topPointEarners\"\r\n\t\tAnd there are users with points\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen they see the top point earners leaderboard\r\n\r\n\t@motivating\r\n\tScenario Outline: Program Context is used by default to filter leaderboard results\r\n\t\tGiven a <leaderboardType> leaderboard loaded with program context for \"my-program\"\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen they only see <results> from \"my-program\"\r\n\t\tExamples:\r\n\t\t\t| leaderboardType | results |\r\n\t\t\t| topStartedReferrers | started referrals |\r\n\t\t\t| topConvertedReferrers | converted referrals |\r\n\t\t\t| topPointEarners | points earned |\r\n\r\n\t@motivating\r\n\tScenario Outline: Program Id context can be overwritten with a prop\r\n\t\tGiven a <leaderboardType> leaderboard has prop \"program-Id\" with value \"my-test-program\"\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen they only see <results> from \"my-test-program\"\r\n\t\tExamples:\r\n\t\t\t| leaderboardType | results |\r\n\t\t\t| topStartedReferrers | started referrals |\r\n\t\t\t| topConvertedReferrers | converted referrals |\r\n\t\t\t| topPointEarners | points earned |\r\n\r\n\t@motivating\r\n\tScenario Outline: Global leaderboard can be displayed by clearing program context\r\n\t\t#This is important for clients with use cases like StaffTracks global points leaderboard\r\n\t\t#This can also be done with a program section in a similar manner\r\n\t\tGiven a <leaderboardType> leaderboard has prop \"program-Id\" with value \"\"\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen they see global <results>\r\n\t\tExamples:\r\n\t\t\t| leaderboardType | results |\r\n\t\t\t| topStartedReferrers | started referrals |\r\n\t\t\t| topConvertedReferrers | converted referrals |\r\n\t\t\t| topPointEarners | points earned |\r\n\r\n\t@motivating\r\n\tScenario: Leaderboard results are shown in descending order\r\n\t\tGiven there are leaderboard results\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen they see up to the 10 top leaderboard results\r\n\t\tAnd leaderboard is in descending order\r\n\r\n\t@motivating\r\n\tScenario Outline: Leaderboard results can be filtered with a time interval\r\n\t\tGiven a <leaderboardType> leaderboard\r\n\t\tAnd it has prop \"interval\" with value \"2021-11-02T07:00:00.000Z/2021-11-07T07:00:00.000Z\"\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen they only see <results> from within \"2021-11-02T07:00:00.000Z/2021-11-07T07:00:00.000Z\"\r\n\t\tExamples:\r\n\t\t\t| leaderboardType | results |\r\n\t\t\t| topStartedReferrers | started referrals |\r\n\t\t\t| topConvertedReferrers | converted referrals |\r\n\t\t\t| topPointEarners | points earned |\r\n\r\n\t@motivating\r\n\tScenario Outline: Leaderboard rank type can be configured\r\n\t\tGiven a leaderboard has prop \"rank-type\" with <value>\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen their leaderboard rank is their <rank>\r\n\t\tExamples:\r\n\t\t\t| value | rank |\r\n\t\t\t| rowNumber | row number |\r\n\t\t\t| denseRank | dense rank |\r\n\t\t\t| rank | rank |\r\n\r\n\t@minutia\r\n\tScenario Outline: The max number of leaderboard rows displayed can be configured\r\n\t\tGiven a leaderboard has prop \"row-number\" with <value>\r\n\t\tAnd the leaderboard has <resultCount>\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen they see <number> rows\r\n\t\tExamples:\r\n\t\t\t| value | resultCount | number |\r\n\t\t\t| | 10 | 10 |\r\n\t\t\t| 5 | 10 | 5 |\r\n\t\t\t| 3 | 1 | 1 |\r\n\r\n\t@minutiae\r\n\t@ui\r\n\tScenario: Leaderboards with no results show an empty state\r\n\t\tGiven a leaderboard has no results\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen an empty state is dislayed\r\n\t\tAnd they see an image of a leaderboard\r\n\t\tAnd below they see \"View your rank in the leaderboard\"\r\n\t\tAnd below they see \"Be the first to refer a friend and reach the top of the leaderboard\"\r\n\t\tAnd the text is center aligned\r\n\r\n\t@minutiae\r\n\t@ui\r\n\tScenario: A custom empty state can be provided\r\n\t\tGiven a leaderboard has no results\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen the contents of the \"empty\" slot are displayed\r\n\r\n\t@minutiae\r\n\t@ui\r\n\tScenario: Leaderboard headings can be customized\r\n\t\tGiven a leaderboard\r\n\t\tAnd it has the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| rankheading | Place |\r\n\t\t\t| usersheading | Customer |\r\n\t\t\t| statsheading | Referral Count |\r\n\t\t\t| show-rank | true |\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen they see the following columns with headings\r\n\t\t\t| column | heading |\r\n\t\t\t| rank | Place |\r\n\t\t\t| user | Customer |\r\n\t\t\t| stat | Referral Count |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Leaderboard rank can be hidden or shown\r\n\t\tGiven a leaderboard\r\n\t\tAnd it has prop \"show-rank\" with <propValue>\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen they <maySee> the rank column\r\n\t\tExamples:\r\n\t\t\t| propValue | maySee |\r\n\t\t\t| true | see |\r\n\t\t\t| false | don't see |\r\n\t\t\t| | don't see |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario: Users in the top 10 of the leaderboard results see their leaderboard row highlighted\r\n\t\tGiven a user in the top 10 of the leaderboard results\r\n\t\tWhen they view the leaderboard\r\n\t\tThen they see the row with their name highlighted with brand colour\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Users not in the top 10 leaderboard results can see their progress at the bottom of the leaderboard\r\n\t\tGiven a user <mayHave> completed actions counted by the leaderboard\r\n\t\tAnd they are not in the top 10 leaderboard results\r\n\t\tAnd the leaderboard has prop \"show-user\" with <value>\r\n\t\tWhen they view the leaderboard\r\n\t\tThen they <maySee> \"...\" under the top 10 leaderboard results\r\n\t\tAnd under \"...\" they <maySee> a row highlighted with brand colour\r\n\t\tAnd they <maySee> their name\r\n\t\tAnd they <maySee> their leaderboard value\r\n\t\tAnd they <maySeeRank>\r\n\t\tExamples:\r\n\t\t\t| mayHave | value | maySee | maySeeRank |\r\n\t\t\t| has | true | see | see their rank |\r\n\t\t\t| hasn't | true | see | don't see their rank |\r\n\t\t\t| N/A | false | don't see | don't see their rank |\r\n\t\t\t| hasn't | | see | see their rank |\r\n\r\n\t@minutiae\r\n\tScenario: Users without names are displayed as an \"Anonymous User\"\r\n\t\tGiven a user\r\n\t\tAnd they do not have a first name\r\n\t\tAnd they do not have a last initial\r\n\t\tWhen they view the leaderboard\r\n\t\tThen they see the user displayed as \"Anonymous User\"\r\n\r\n\t@minutiae\r\n\tScenario Outline: If a user only has a first or last name, then only that is displayed\r\n\t\tGiven a user\r\n\t\tAnd they only have a <name>\r\n\t\tWhen they view the leaderboard\r\n\t\tThen they only see their <name>\r\n\t\tExamples:\r\n\t\t\t| name |\r\n\t\t\t| firstName |\r\n\t\t\t| lastName |";
1771
+ const scenario$4 = "@owner:noah\r\n@author:noah\r\nFeature: Leaderboard\r\n\r\n\tThe leaderboard supports three main cases\r\n\t- Top Started Referrers\r\n\t- Top Converted Referrers\r\n\t- Top Point Earners\r\n\tTo display these different types of leaderboards it uses the backends pre-canned options.\r\n\tThe backend supports filtering on programId and interval, programId is sourced from program context.\r\n\r\n\tBackground: A user exists\r\n\t\tGiven a user\r\n\t\tAnd they are viewing the leaderboard\r\n\r\n\t@motivating\r\n\tScenario Outline: Two types of referrals leaderboards can be displayed\r\n\t\tGiven a leaderboard has prop \"leaderboard-type\" with <value>\r\n\t\tAnd there are started referrals on the tenant\r\n\t\tAnd there are started converted on the tenant\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen they see the referral <referralType> leaderboard\r\n\t\tExamples:\r\n\t\t\t| value | referralType |\r\n\t\t\t| topStartedReferrers | started |\r\n\t\t\t| topConvertedReferrers | converted |\r\n\r\n\t@motivating\r\n\tScenario: The top point earners leaderboard can be displayed\r\n\t\tGiven a leaderboard has prop \"leaderboard-type\" with value \"topPointEarners\"\r\n\t\tAnd there are users with points\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen they see the top point earners leaderboard\r\n\t\tAnd text values are displayed for point counts\r\n\r\n\t@minutia\r\n\tScenario Outline: Reward pretty value is used on the top point earners leaderboard\r\n\t\tGiven top point earners leaderboard\r\n\t\tAnd the \"POINT\" reward unit has a pretty value for the following locales\r\n\t\t\t| locale |\r\n\t\t\t| en |\r\n\t\t\t| fr |\r\n\t\t\t| tr |\r\n\t\tWhen the user views the leaderboard\r\n\t\tAnd they have <locale>\r\n\t\tThen they see the translated pretty value in the stat value column\r\n\r\n\t@motivating\r\n\tScenario Outline: Program Context is used by default to filter leaderboard results\r\n\t\tGiven a <leaderboardType> leaderboard loaded with program context for \"my-program\"\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen they only see <results> from \"my-program\"\r\n\t\tExamples:\r\n\t\t\t| leaderboardType | results |\r\n\t\t\t| topStartedReferrers | started referrals |\r\n\t\t\t| topConvertedReferrers | converted referrals |\r\n\t\t\t| topPointEarners | points earned |\r\n\r\n\t@motivating\r\n\tScenario Outline: Program Id context can be overwritten with a prop\r\n\t\tGiven a <leaderboardType> leaderboard has prop \"program-Id\" with value \"my-test-program\"\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen they only see <results> from \"my-test-program\"\r\n\t\tExamples:\r\n\t\t\t| leaderboardType | results |\r\n\t\t\t| topStartedReferrers | started referrals |\r\n\t\t\t| topConvertedReferrers | converted referrals |\r\n\t\t\t| topPointEarners | points earned |\r\n\r\n\t@motivating\r\n\tScenario Outline: Global leaderboards can be displayed by clearing program context\r\n\t\t#This is important for clients with use cases like StaffTracks global points leaderboard\r\n\t\t#This can also be done with a program section in a similar manner\r\n\t\tGiven a <leaderboardType> leaderboard has prop \"program-Id\" with value \"\"\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen they see global <results>\r\n\t\tExamples:\r\n\t\t\t| leaderboardType | results |\r\n\t\t\t| topStartedReferrers | started referrals |\r\n\t\t\t| topConvertedReferrers | converted referrals |\r\n\t\t\t| topPointEarners | points earned |\r\n\r\n\t@motivating\r\n\tScenario: Leaderboard results are shown in descending order\r\n\t\tGiven there are leaderboard results\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen they see up to the 10 top leaderboard results\r\n\t\tAnd leaderboard is in descending order\r\n\r\n\t@motivating\r\n\tScenario Outline: Leaderboard results can be filtered with a time interval\r\n\t\tGiven a <leaderboardType> leaderboard\r\n\t\tAnd it has prop \"interval\" with value \"2021-11-02T07:00:00.000Z/2021-11-07T07:00:00.000Z\"\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen they only see <results> from within \"2021-11-02T07:00:00.000Z/2021-11-07T07:00:00.000Z\"\r\n\t\tExamples:\r\n\t\t\t| leaderboardType | results |\r\n\t\t\t| topStartedReferrers | started referrals |\r\n\t\t\t| topConvertedReferrers | converted referrals |\r\n\t\t\t| topPointEarners | points earned |\r\n\r\n\t@motivating\r\n\tScenario Outline: Leaderboard rank type can be configured\r\n\t\tGiven a leaderboard has prop \"rank-type\" with <value>\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen their leaderboard rank is their <rank>\r\n\t\tExamples:\r\n\t\t\t| value | rank |\r\n\t\t\t| rowNumber | row number |\r\n\t\t\t| denseRank | dense rank |\r\n\t\t\t| rank | rank |\r\n\r\n\t@minutia\r\n\tScenario Outline: The max number of leaderboard rows displayed can be configured but defaults to 10\r\n\t\tGiven a leaderboard has prop \"max-rows\" with <value>\r\n\t\tAnd the leaderboard has <resultCount>\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen they see <number> rows\r\n\t\tExamples:\r\n\t\t\t| value | resultCount | number |\r\n\t\t\t| | 10 | 10 |\r\n\t\t\t| 5 | 10 | 5 |\r\n\t\t\t| 3 | 1 | 1 |\r\n\t\t\t| 25 | 15 | 15 |\r\n\r\n\t@minutiae\r\n\t@ui\r\n\tScenario: Leaderboards with no results show an empty state\r\n\t\tGiven a leaderboard has no results\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen an empty state is dislayed\r\n\t\tAnd they see an image of a leaderboard\r\n\t\tAnd below they see \"View your rank in the leaderboard\"\r\n\t\tAnd below they see \"Be the first to refer a friend and reach the top of the leaderboard\"\r\n\t\tAnd the text is center aligned\r\n\r\n\t@minutiae\r\n\t@ui\r\n\tScenario: A custom empty state can be provided\r\n\t\tGiven a leaderboard has no results\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen the contents of the \"empty\" slot are displayed\r\n\r\n\t@minutiae\r\n\t@ui\r\n\tScenario: Leaderboard headings can be customized\r\n\t\tGiven a leaderboard\r\n\t\tAnd it has the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| rankheading | Place |\r\n\t\t\t| usersheading | Customer |\r\n\t\t\t| statsheading | Referral Count |\r\n\t\t\t| show-rank | true |\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen they see the following columns with headings\r\n\t\t\t| column | heading |\r\n\t\t\t| rank | Place |\r\n\t\t\t| user | Customer |\r\n\t\t\t| stat | Referral Count |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Leaderboard rank can be hidden or shown\r\n\t\tGiven a leaderboard\r\n\t\tAnd it has prop \"show-rank\" with <propValue>\r\n\t\tWhen the user views the leaderboard\r\n\t\tThen they <maySee> the rank column\r\n\t\tExamples:\r\n\t\t\t| propValue | maySee |\r\n\t\t\t| true | see |\r\n\t\t\t| false | don't see |\r\n\t\t\t| | don't see |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario: Users in the top 10 of the leaderboard results see their leaderboard row highlighted\r\n\t\tGiven a user in the top 10 of the leaderboard results\r\n\t\tWhen they view the leaderboard\r\n\t\tThen they see the row with their name highlighted with brand colour\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Users not in the top 10 leaderboard results can see their progress at the bottom of the leaderboard\r\n\t\tGiven a user <mayHave> completed actions counted by the leaderboard\r\n\t\tAnd they are not in the top 10 leaderboard results\r\n\t\tAnd the leaderboard has prop \"show-user\" with <value>\r\n\t\tWhen they view the leaderboard\r\n\t\tThen they <maySee> \"...\" under the top 10 leaderboard results\r\n\t\tAnd under \"...\" they <maySee> a row highlighted with brand colour\r\n\t\tAnd they <maySee> their name\r\n\t\tAnd they <maySee> their leaderboard value\r\n\t\tAnd they <maySeeRank>\r\n\t\tExamples:\r\n\t\t\t| mayHave | value | maySee | maySeeRank |\r\n\t\t\t| has | true | see | see their rank |\r\n\t\t\t| hasn't | true | see | don't see their rank |\r\n\t\t\t| N/A | false | don't see | don't see their rank |\r\n\t\t\t| hasn't | | see | don't see their rank |\r\n\r\n\t@minutiae\r\n\tScenario: Users without names are displayed as an \"Anonymous User\"\r\n\t\tGiven a user\r\n\t\tAnd they do not have a first name\r\n\t\tAnd they do not have a last initial\r\n\t\tWhen they view the leaderboard\r\n\t\tThen they see the user displayed as \"Anonymous User\"\r\n\r\n\t@minutiae\r\n\tScenario Outline: If a user only has a first or last name, then only that is displayed\r\n\t\tGiven a user\r\n\t\tAnd they only have a <name>\r\n\t\tWhen they view the leaderboard\r\n\t\tThen they only see their <name>\r\n\t\tExamples:\r\n\t\t\t| name |\r\n\t\t\t| firstName |\r\n\t\t\t| lastName |";
1772
1772
 
1773
1773
  const Leaderboard_stories = {
1774
1774
  title: "Components/Leaderboard",
@@ -1778,72 +1778,72 @@ const Leaderboard_stories = {
1778
1778
  };
1779
1779
  const users = [
1780
1780
  {
1781
- firstName: "Viktor",
1782
- lastInitial: "V",
1783
- value: 82,
1781
+ firstName: "",
1782
+ lastInitial: "",
1783
+ textValue: "82",
1784
1784
  rank: 1,
1785
1785
  rowNumber: 1,
1786
1786
  },
1787
1787
  {
1788
1788
  firstName: "MF",
1789
1789
  lastInitial: "D",
1790
- value: 73,
1790
+ textValue: "73",
1791
1791
  rank: 2,
1792
1792
  rowNumber: 2,
1793
1793
  },
1794
1794
  {
1795
1795
  firstName: "Freddie",
1796
1796
  lastInitial: "G",
1797
- value: 64,
1797
+ textValue: "64",
1798
1798
  rank: 3,
1799
1799
  rowNumber: 3,
1800
1800
  },
1801
1801
  {
1802
1802
  firstName: "Benny",
1803
1803
  lastInitial: "B",
1804
- value: 55,
1804
+ textValue: "55",
1805
1805
  rank: 4,
1806
1806
  rowNumber: 4,
1807
1807
  },
1808
1808
  {
1809
1809
  firstName: "Mos",
1810
1810
  lastInitial: "D",
1811
- value: 46,
1811
+ textValue: "46",
1812
1812
  rank: 5,
1813
1813
  rowNumber: 5,
1814
1814
  },
1815
1815
  {
1816
1816
  firstName: "Joe",
1817
1817
  lastInitial: "S",
1818
- value: 42,
1818
+ textValue: "42",
1819
1819
  rank: 6,
1820
1820
  rowNumber: 6,
1821
1821
  },
1822
1822
  {
1823
1823
  firstName: "Zach",
1824
1824
  lastInitial: "H",
1825
- value: 41,
1825
+ textValue: "41",
1826
1826
  rank: 7,
1827
1827
  rowNumber: 7,
1828
1828
  },
1829
1829
  {
1830
1830
  firstName: "Sarah",
1831
1831
  lastInitial: "S",
1832
- value: 39,
1832
+ textValue: "39",
1833
1833
  rank: 8,
1834
1834
  rowNumber: 8,
1835
1835
  },
1836
1836
  {
1837
1837
  firstName: "James",
1838
1838
  lastInitial: "",
1839
- value: 33,
1839
+ textValue: "33",
1840
1840
  rank: 9,
1841
1841
  rowNumber: 9,
1842
1842
  },
1843
1843
  {
1844
1844
  firstName: "",
1845
1845
  lastInitial: "J",
1846
- value: 29,
1846
+ textValue: "29",
1847
1847
  rank: 10,
1848
1848
  rowNumber: 10,
1849
1849
  },
@@ -1879,7 +1879,7 @@ const Empty$1 = () => {
1879
1879
  viewerRank: {
1880
1880
  firstName: "Kutay",
1881
1881
  lastInitial: "C",
1882
- value: 8,
1882
+ textValue: "8",
1883
1883
  rowNumber: 11,
1884
1884
  rank: 23,
1885
1885
  },
@@ -1926,7 +1926,7 @@ const One = () => {
1926
1926
  {
1927
1927
  firstName: "Viktor",
1928
1928
  lastInitial: "V",
1929
- value: 82,
1929
+ textValue: "82",
1930
1930
  rank: 1,
1931
1931
  rowNumber: 1,
1932
1932
  },
@@ -1934,7 +1934,7 @@ const One = () => {
1934
1934
  viewerRank: {
1935
1935
  firstName: "Viktor",
1936
1936
  lastInitial: "V",
1937
- value: 82,
1937
+ textValue: "82",
1938
1938
  rank: 1,
1939
1939
  rowNumber: 1,
1940
1940
  },
@@ -1961,29 +1961,35 @@ const Five = () => {
1961
1961
  {
1962
1962
  firstName: "Viktor",
1963
1963
  lastInitial: "V",
1964
- value: 82,
1964
+ textValue: "82",
1965
1965
  rank: 1,
1966
1966
  rowNumber: 1,
1967
1967
  },
1968
- { firstName: "MF", lastInitial: "D", value: 73, rank: 2, rowNumber: 2 },
1968
+ {
1969
+ firstName: "MF",
1970
+ lastInitial: "D",
1971
+ textValue: "73",
1972
+ rank: 2,
1973
+ rowNumber: 2,
1974
+ },
1969
1975
  {
1970
1976
  firstName: "Freddie",
1971
1977
  lastInitial: "G",
1972
- value: 64,
1978
+ textValue: "64",
1973
1979
  rank: 3,
1974
1980
  rowNumber: 3,
1975
1981
  },
1976
1982
  {
1977
1983
  firstName: "Benny",
1978
1984
  lastInitial: "B",
1979
- value: 55,
1985
+ textValue: "55",
1980
1986
  rank: 4,
1981
1987
  rowNumber: 4,
1982
1988
  },
1983
1989
  {
1984
1990
  firstName: "Mos",
1985
1991
  lastInitial: "D",
1986
- value: 46,
1992
+ textValue: "46",
1987
1993
  rank: 5,
1988
1994
  rowNumber: 5,
1989
1995
  },
@@ -1991,7 +1997,7 @@ const Five = () => {
1991
1997
  viewerRank: {
1992
1998
  firstName: "Viktor",
1993
1999
  lastInitial: "V",
1994
- value: 82,
2000
+ textValue: "82",
1995
2001
  rank: 1,
1996
2002
  rowNumber: 1,
1997
2003
  },
@@ -2008,6 +2014,7 @@ const ReferralLeaderboard = () => {
2008
2014
  loading: false,
2009
2015
  hasLeaders: true,
2010
2016
  styles: {
2017
+ ...defaultStyles$1,
2011
2018
  rankheading: "Rank",
2012
2019
  usersheading: "User",
2013
2020
  statsheading: "Referrals",
@@ -2021,7 +2028,7 @@ const ReferralLeaderboard = () => {
2021
2028
  viewerRank: {
2022
2029
  firstName: "Viktor",
2023
2030
  lastInitial: "V",
2024
- value: 82,
2031
+ textValue: "82",
2025
2032
  rank: 1,
2026
2033
  rowNumber: 1,
2027
2034
  },
@@ -2038,6 +2045,7 @@ const PointsLeaderboard = () => {
2038
2045
  loading: false,
2039
2046
  hasLeaders: true,
2040
2047
  styles: {
2048
+ ...defaultStyles$1,
2041
2049
  rankheading: "Rank",
2042
2050
  usersheading: "User",
2043
2051
  statsheading: "Points",
@@ -2051,7 +2059,7 @@ const PointsLeaderboard = () => {
2051
2059
  viewerRank: {
2052
2060
  firstName: "Viktor",
2053
2061
  lastInitial: "V",
2054
- value: 82,
2062
+ textValue: "82",
2055
2063
  rank: 1,
2056
2064
  rowNumber: 1,
2057
2065
  },
@@ -2079,7 +2087,7 @@ const TenWithRank = () => {
2079
2087
  viewerRank: {
2080
2088
  firstName: "Viktor",
2081
2089
  lastInitial: "V",
2082
- value: 82,
2090
+ textValue: "82",
2083
2091
  rank: 1,
2084
2092
  rowNumber: 1,
2085
2093
  },
@@ -2107,7 +2115,7 @@ const ViewerOutside = () => {
2107
2115
  viewerRank: {
2108
2116
  firstName: "Kutay",
2109
2117
  lastInitial: "C",
2110
- value: 8,
2118
+ textValue: "8",
2111
2119
  rowNumber: 11,
2112
2120
  rank: 23,
2113
2121
  },
@@ -2159,7 +2167,7 @@ const HideViewer = () => {
2159
2167
  viewerRank: {
2160
2168
  firstName: "Viktor",
2161
2169
  lastInitial: "V",
2162
- value: 82,
2170
+ textValue: "82",
2163
2171
  rowNumber: 1,
2164
2172
  rank: 1,
2165
2173
  },
@@ -2355,7 +2363,7 @@ const Router = /*#__PURE__*/Object.freeze({
2355
2363
  RouterPlayground: RouterPlayground
2356
2364
  });
2357
2365
 
2358
- const scenario$5 = "@owner:noah\r\n@author:noah\r\nFeature: Leaderboard Rank\r\n\r\n The leaderboard rank components displays the current users rank on the leaderboard.\r\n\r\n @minutiae\r\n Scenario: Users without a rank are shown a generic message\r\n Given a user has no rank\r\n Then the component displays a generic message\r\n And the message is the string from the prop \"unrankedText\"\r\n\r\n @motivating\r\n Scenario: Users with a rank are shown a message containing their rank\r\n Given a user has a valid rank\r\n And the prop \"rankText\" is an ICU message\r\n Then the ICU message is parsed to include the user's rank\r\n And the parsed message is displayed to the users\r\n\r\n @motivating\r\n Scenario Outline: Ranks from any of the three standard leaderboards can be displayed\r\n Given a leaderboard rank component with <leaderboardType>\r\n And a user has a valid rank\r\n When they view the leaderboard rank component\r\n Then they see their rank for <leaderboardType>\r\n Examples:\r\n | leaderboardType |\r\n | topStartedReferrers |\r\n | topConvertedReferrers |\r\n | topPointEarners |\r\n\r\n @motivating\r\n Scenario Outline: Program Context is used by default to filter leaderboard rank\r\n Given a <leaderboardType> leaderboard rank component loaded with program context for \"my-program\"\r\n When they view the leaderboard rank component\r\n Then they see their rank for <leaderboardType> from \"my-program\"\r\n Examples:\r\n | leaderboardType |\r\n | topStartedReferrers |\r\n | topConvertedReferrers |\r\n | topPointEarners |\r\n\r\n @motivating\r\n Scenario Outline: Program Id context can be overwritten with a prop\r\n Given a <leaderboardType> leaderboard has prop \"program-Id\" with value \"my-test-program\"\r\n When they view the leaderboard rank component\r\n Then they see their rank for <leaderboardType> from \"my-test-program\"\r\n Examples:\r\n | leaderboardType | results |\r\n | topStartedReferrers | started referrals |\r\n | topConvertedReferrers | converted referrals |\r\n | topPointEarners | points earned |\r\n\r\n @motivating\r\n Scenario: Rank calculation is controlled by the \"rankType\" prop\r\n Given the current user is User C\r\n And User C has <points>\r\n And User A has <points>\r\n And User B has <points>\r\n And the value of the \"rankType\" prop is <rankType>\r\n Then the rank of the current user is <rank>\r\n Examples:\r\n | user | points | rankType | rank |\r\n | User A | 5 | rowNumber | 3 |\r\n | User B | 10 | rowNumber | 1 |\r\n | User C | 10 | rowNumber | 2 |\r\n\r\n | user | points | rankType | rank |\r\n | User A | 10 | rank | 1 |\r\n | User B | 10 | rank | 1 |\r\n | User C | 5 | rank | 3 |\r\n\r\n | user | points | rankType | rank |\r\n | User A | 10 | denseRank | 1 |\r\n | User B | 10 | denseRank | 1 |\r\n | User C | 5 | denseRank | 2 |";
2366
+ const scenario$5 = "@owner:noah\r\n@author:noah\r\nFeature: Leaderboard Rank\r\n\r\n The leaderboard rank components displays the current users rank on the leaderboard.\r\n\r\n @minutiae\r\n Scenario: Users without a rank are shown a generic message\r\n Given a user has no rank\r\n Then the component displays a generic message\r\n And the message is the string from the prop \"unrankedText\"\r\n\r\n @motivating\r\n Scenario: Users with a rank are shown a message containing their rank\r\n Given a user has a valid rank\r\n And the prop \"rankText\" is an ICU message\r\n Then the ICU message is parsed to include the user's rank\r\n And the parsed message is displayed to the users\r\n\r\n @motivating\r\n Scenario Outline: Ranks from any of the three standard leaderboards can be displayed\r\n Given a leaderboard rank component with <leaderboardType>\r\n And a user has a valid rank\r\n When they view the leaderboard rank component\r\n Then they see their rank for <leaderboardType>\r\n Examples:\r\n | leaderboardType |\r\n | topStartedReferrers |\r\n | topConvertedReferrers |\r\n | topPointEarners |\r\n\r\n @motivating\r\n Scenario Outline: Leaderboard rank can be filtered with a time interval\r\n Given a leaderboard rank component with <leaderboardType>\r\n And it has prop \"interval\" with value \"2021-11-02T07:00:00.000Z/2021-11-07T07:00:00.000Z\"\r\n When they view the leaderboard rank component\r\n Then they see their rank for <results> from within \"2021-11-02T07:00:00.000Z/2021-11-07T07:00:00.000Z\"\r\n Examples:\r\n | leaderboardType | results |\r\n | topStartedReferrers | started referrals |\r\n | topConvertedReferrers | converted referrals |\r\n | topPointEarners | points earned |\r\n\r\n @motivating\r\n Scenario Outline: Program Context is used by default to filter leaderboard rank\r\n Given a <leaderboardType> leaderboard rank component loaded with program context for \"my-program\"\r\n When they view the leaderboard rank component\r\n Then they see their rank for <leaderboardType> from \"my-program\"\r\n Examples:\r\n | leaderboardType |\r\n | topStartedReferrers |\r\n | topConvertedReferrers |\r\n | topPointEarners |\r\n\r\n @motivating\r\n Scenario Outline: Program Id context can be overwritten with a prop\r\n Given a <leaderboardType> leaderboard rank component has prop \"program-Id\" with value \"my-test-program\"\r\n When they view the leaderboard rank component\r\n Then they see their rank for <leaderboardType> from \"my-test-program\"\r\n Examples:\r\n | leaderboardType | results |\r\n | topStartedReferrers | started referrals |\r\n | topConvertedReferrers | converted referrals |\r\n | topPointEarners | points earned |\r\n\r\n @motivating\r\n Scenario Outline: Global leaderboards ranks can be displayed by clearing program context\r\n #This can also be done with a program section in a similar manner\r\n Given a <leaderboardType> leaderboard rank component has prop \"program-Id\" with value \"\"\r\n When they view the leaderboard rank component\r\n Then they see global <results> rank\r\n Examples:\r\n | leaderboardType | results |\r\n | topStartedReferrers | started referrals |\r\n | topConvertedReferrers | converted referrals |\r\n | topPointEarners | points earned |\r\n\r\n @motivating\r\n Scenario: Rank calculation is controlled by the \"rankType\" prop\r\n Given the current user is User C\r\n And User C has <points>\r\n And User A has <points>\r\n And User B has <points>\r\n And the value of the \"rankType\" prop is <rankType>\r\n Then the rank of the current user is <rank>\r\n Examples:\r\n | user | points | rankType | rank |\r\n | User A | 5 | rowNumber | 3 |\r\n | User B | 10 | rowNumber | 1 |\r\n | User C | 10 | rowNumber | 2 |\r\n\r\n | user | points | rankType | rank |\r\n | User A | 10 | rank | 1 |\r\n | User B | 10 | rank | 1 |\r\n | User C | 5 | rank | 3 |\r\n\r\n | user | points | rankType | rank |\r\n | User A | 10 | denseRank | 1 |\r\n | User B | 10 | denseRank | 1 |\r\n | User C | 5 | denseRank | 2 |";
2359
2367
 
2360
2368
  const LeaderboardRank_stories = {
2361
2369
  title: "Components/Leaderboard Rank",
@@ -3051,7 +3059,7 @@ const FiveResults = createHookStory(() => {
3051
3059
  return [
3052
3060
  View$1({
3053
3061
  leaderboardType: "topStartedReferrers",
3054
- rowNumber: 5,
3062
+ maxRows: 5,
3055
3063
  statsheading: "Referrals",
3056
3064
  }),
3057
3065
  ];