@stigg/react-sdk 4.4.5 → 4.4.6

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/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.4.5",
2
+ "version": "4.4.6",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
@@ -29,11 +29,13 @@ const TierInput = styled(OutlinedInput)`
29
29
  export function TiersSelectContainer({
30
30
  componentId,
31
31
  tiers,
32
+ tierUnits,
32
33
  selectedTier,
33
34
  handleTierChange,
34
35
  }: {
35
36
  componentId: string;
36
37
  tiers?: PriceTierFragment[] | null;
38
+ tierUnits?: string;
37
39
  selectedTier?: PriceTierFragment;
38
40
  handleTierChange: (tier: PriceTierFragment) => void;
39
41
  }) {
@@ -61,7 +63,7 @@ export function TiersSelectContainer({
61
63
  {map(tiers, (tier: PriceTierFragment) => (
62
64
  <MenuItem className="stigg-price-tier-menu-item-text" key={tier.upTo} value={tier.upTo.toString()}>
63
65
  <Typography variant="body1" color="primary" style={{ lineHeight: 'unset' }}>
64
- {tier.upTo}
66
+ {tier.upTo} {tierUnits}
65
67
  </Typography>
66
68
  </MenuItem>
67
69
  ))}
@@ -1,4 +1,4 @@
1
- import React, { useEffect, useState } from 'react';
1
+ import React from 'react';
2
2
  import styled from '@emotion/styled/macro';
3
3
  import { BillingPeriod, PriceTierFragment } from '@stigg/js-client-sdk';
4
4
  import { PaywallPlan } from './types';
@@ -71,7 +71,7 @@ export const PlanPrice = ({
71
71
  withStartingAtRow: boolean;
72
72
  withTiersRow: boolean;
73
73
  selectedTierByFeature: Record<string, PriceTierFragment>;
74
- setSelectedTierByFeature: (selectedTierByFeature: Record<string, PriceTierFragment>) => void;
74
+ setSelectedTierByFeature: React.Dispatch<React.SetStateAction<Record<string, PriceTierFragment>>>;
75
75
  plan: PaywallPlan;
76
76
  billingPeriod: BillingPeriod;
77
77
  paywallLocale: PaywallLocalization;
@@ -79,7 +79,7 @@ export const PlanPrice = ({
79
79
  hasAnnuallyPrice: boolean;
80
80
  locale: string;
81
81
  }) => {
82
- const { price, unit, tiers } = getPlanPrice(
82
+ const { price, unit, tiers, tierUnits } = getPlanPrice(
83
83
  plan,
84
84
  billingPeriod,
85
85
  paywallLocale,
@@ -87,31 +87,25 @@ export const PlanPrice = ({
87
87
  hasMonthlyPrice,
88
88
  selectedTierByFeature,
89
89
  );
90
- const [selectedTier, setSelectedTier] = useState<PriceTierFragment>();
91
90
 
92
91
  // We currently only support prices with one tier - so we select the first one
93
92
  const tieredPrice = plan.pricePoints.find((planPrice) => {
94
93
  return planPrice.billingPeriod === billingPeriod && planPrice.isTieredPrice;
95
94
  });
96
95
  const featureId = tieredPrice ? tieredPrice.feature!.featureId : undefined;
97
-
98
- useEffect(() => {
99
- setSelectedTier(featureId ? selectedTierByFeature[featureId] : undefined);
100
- }, [featureId, selectedTierByFeature]);
96
+ const selectedTier = featureId ? selectedTierByFeature[featureId] : undefined;
101
97
 
102
98
  const handleTierChange = (tier: PriceTierFragment) => {
103
- const updatedTierByFeature: Record<string, PriceTierFragment> = {};
104
- updatedTierByFeature[featureId!] = tier;
99
+ if (!featureId) {
100
+ return;
101
+ }
105
102
 
106
- setSelectedTierByFeature(updatedTierByFeature);
103
+ setSelectedTierByFeature((prevState) => ({
104
+ ...prevState,
105
+ [featureId]: tier,
106
+ }));
107
107
  };
108
108
 
109
- useEffect(() => {
110
- if (tiers) {
111
- handleTierChange(selectedTierByFeature[featureId!]);
112
- }
113
- }, []);
114
-
115
109
  return (
116
110
  <PlanPriceContainer className="stigg-price-text">
117
111
  <>
@@ -147,6 +141,7 @@ export const PlanPrice = ({
147
141
  <TiersSelectContainer
148
142
  componentId={`${plan.id}_${featureId}_tier`}
149
143
  tiers={tiers}
144
+ tierUnits={tierUnits}
150
145
  selectedTier={selectedTier}
151
146
  handleTierChange={handleTierChange}
152
147
  />