@automattic/plans-grid-next 1.0.0 → 1.0.1
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/__mocks__/wpcom-proxy-request.js +3 -4
- package/dist/cjs/__mocks__/wpcom-proxy-request.js.map +1 -1
- package/dist/cjs/_shared.scss +9 -4
- package/dist/cjs/components/comparison-grid/index.js +18 -29
- package/dist/cjs/components/comparison-grid/index.js.map +1 -1
- package/dist/cjs/components/comparison-grid/index.stories.js +1 -0
- package/dist/cjs/components/comparison-grid/index.stories.js.map +1 -1
- package/dist/cjs/components/comparison-grid/style.scss +0 -17
- package/dist/cjs/components/dropdown-option.js +1 -1
- package/dist/cjs/components/features-grid/index.js +21 -6
- package/dist/cjs/components/features-grid/index.js.map +1 -1
- package/dist/cjs/components/features-grid/index.stories.js +1 -0
- package/dist/cjs/components/features-grid/index.stories.js.map +1 -1
- package/dist/cjs/components/features-grid/style.scss +2 -19
- package/dist/cjs/components/item.js +1 -2
- package/dist/cjs/components/item.js.map +1 -1
- package/dist/cjs/components/plan-button/style.scss +8 -7
- package/dist/cjs/components/plan-type-selector/hooks/use-interval-options.js +1 -1
- package/dist/cjs/components/plan-type-selector/hooks/use-interval-options.js.map +1 -1
- package/dist/cjs/components/plan-type-selector/hooks/use-max-discount.js +1 -1
- package/dist/cjs/components/plan-type-selector/hooks/use-max-discount.js.map +1 -1
- package/dist/cjs/components/plan-type-selector/hooks/use-max-discounts-for-plan-terms.js +1 -1
- package/dist/cjs/components/plan-type-selector/hooks/use-max-discounts-for-plan-terms.js.map +1 -1
- package/dist/cjs/components/plan-type-selector/style.scss +3 -1
- package/dist/cjs/components/shared/billing-timeframe/index.js +13 -5
- package/dist/cjs/components/shared/billing-timeframe/index.js.map +1 -1
- package/dist/cjs/components/shared/header-price/style.scss +2 -2
- package/dist/cjs/components/shared/storage/hooks/use-default-storage-option.js +1 -1
- package/dist/cjs/components/shared/storage/hooks/use-default-storage-option.js.map +1 -1
- package/dist/cjs/components/shared/storage/hooks/use-purchased-storage-add-on.js +1 -1
- package/dist/cjs/components/shared/storage/hooks/use-purchased-storage-add-on.js.map +1 -1
- package/dist/cjs/components/shared/storage/index.js +3 -2
- package/dist/cjs/components/shared/storage/index.js.map +1 -1
- package/dist/cjs/components/sticky-container.js +66 -6
- package/dist/cjs/components/sticky-container.js.map +1 -1
- package/dist/cjs/hooks/data-store/is-popular-plan.js +1 -2
- package/dist/cjs/hooks/data-store/is-popular-plan.js.map +1 -1
- package/dist/cjs/hooks/data-store/use-grid-plans-for-features-grid.js +14 -11
- package/dist/cjs/hooks/data-store/use-grid-plans-for-features-grid.js.map +1 -1
- package/dist/cjs/hooks/data-store/use-plan-billing-description.js +2 -2
- package/dist/cjs/hooks/data-store/use-plan-billing-description.js.map +1 -1
- package/dist/cjs/hooks/use-grid-size.js +2 -4
- package/dist/cjs/hooks/use-grid-size.js.map +1 -1
- package/dist/cjs/hooks/use-is-large-currency.js +1 -1
- package/dist/cjs/hooks/use-is-large-currency.js.map +1 -1
- package/dist/cjs/hooks/use-manage-tooltip-toggle.js +1 -2
- package/dist/cjs/hooks/use-manage-tooltip-toggle.js.map +1 -1
- package/dist/cjs/hooks/use-plan-pricing-info-from-grid-plans.js +1 -2
- package/dist/cjs/hooks/use-plan-pricing-info-from-grid-plans.js.map +1 -1
- package/dist/cjs/lib/get-plan-pricing-info-from-grid-plans.js +1 -2
- package/dist/cjs/lib/get-plan-pricing-info-from-grid-plans.js.map +1 -1
- package/dist/cjs/lib/is-same-plan.js +1 -2
- package/dist/cjs/lib/is-same-plan.js.map +1 -1
- package/dist/cjs/lib/sort-plan-properties.js +19 -32
- package/dist/cjs/lib/sort-plan-properties.js.map +1 -1
- package/dist/cjs/lib/touch-detect/index.js +1 -2
- package/dist/cjs/lib/touch-detect/index.js.map +1 -1
- package/dist/esm/_shared.scss +9 -4
- package/dist/esm/components/comparison-grid/index.js +18 -29
- package/dist/esm/components/comparison-grid/index.js.map +1 -1
- package/dist/esm/components/comparison-grid/index.stories.js +1 -0
- package/dist/esm/components/comparison-grid/index.stories.js.map +1 -1
- package/dist/esm/components/comparison-grid/style.scss +0 -17
- package/dist/esm/components/dropdown-option.js +1 -1
- package/dist/esm/components/features-grid/index.js +21 -6
- package/dist/esm/components/features-grid/index.js.map +1 -1
- package/dist/esm/components/features-grid/index.stories.js +1 -0
- package/dist/esm/components/features-grid/index.stories.js.map +1 -1
- package/dist/esm/components/features-grid/style.scss +2 -19
- package/dist/esm/components/plan-button/style.scss +8 -7
- package/dist/esm/components/plan-type-selector/style.scss +3 -1
- package/dist/esm/components/shared/billing-timeframe/index.js +14 -6
- package/dist/esm/components/shared/billing-timeframe/index.js.map +1 -1
- package/dist/esm/components/shared/header-price/style.scss +2 -2
- package/dist/esm/components/sticky-container.js +66 -5
- package/dist/esm/components/sticky-container.js.map +1 -1
- package/dist/esm/hooks/data-store/use-grid-plans-for-features-grid.js +14 -11
- package/dist/esm/hooks/data-store/use-grid-plans-for-features-grid.js.map +1 -1
- package/dist/esm/hooks/data-store/use-plan-billing-description.js +1 -1
- package/dist/esm/hooks/use-grid-size.js +0 -1
- package/dist/esm/hooks/use-grid-size.js.map +1 -1
- package/dist/esm/lib/sort-plan-properties.js +18 -30
- package/dist/esm/lib/sort-plan-properties.js.map +1 -1
- package/dist/tsconfig-cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/components/comparison-grid/index.d.ts +1 -1
- package/dist/types/components/comparison-grid/index.d.ts.map +1 -1
- package/dist/types/components/comparison-grid/index.stories.d.ts +3 -1
- package/dist/types/components/comparison-grid/index.stories.d.ts.map +1 -1
- package/dist/types/components/dropdown-option.d.ts +0 -1
- package/dist/types/components/dropdown-option.d.ts.map +1 -1
- package/dist/types/components/features-grid/client-logo-list/client-list.d.ts +0 -1
- package/dist/types/components/features-grid/client-logo-list/client-list.d.ts.map +1 -1
- package/dist/types/components/features-grid/client-logo-list/index.d.ts.map +1 -1
- package/dist/types/components/features-grid/index.d.ts.map +1 -1
- package/dist/types/components/features-grid/index.stories.d.ts +5 -1
- package/dist/types/components/features-grid/index.stories.d.ts.map +1 -1
- package/dist/types/components/plan-button/index.d.ts +10 -10
- package/dist/types/components/plan-button/index.d.ts.map +1 -1
- package/dist/types/components/plan-div-td-container.d.ts +0 -1
- package/dist/types/components/plan-div-td-container.d.ts.map +1 -1
- package/dist/types/components/plan-logo.d.ts +0 -1
- package/dist/types/components/plan-logo.d.ts.map +1 -1
- package/dist/types/components/plan-type-selector/components/interval-type-dropdown.d.ts +0 -1
- package/dist/types/components/plan-type-selector/components/interval-type-dropdown.d.ts.map +1 -1
- package/dist/types/components/plan-type-selector/components/interval-type-selector.d.ts +0 -1
- package/dist/types/components/plan-type-selector/components/interval-type-selector.d.ts.map +1 -1
- package/dist/types/components/plan-type-selector/hooks/use-max-discounts-for-plan-terms.d.ts.map +1 -1
- package/dist/types/components/popular-badge.d.ts +0 -1
- package/dist/types/components/popular-badge.d.ts.map +1 -1
- package/dist/types/components/shared/billing-timeframe/index.d.ts.map +1 -1
- package/dist/types/components/shared/header-price/header-price-context.d.ts +0 -1
- package/dist/types/components/shared/header-price/header-price-context.d.ts.map +1 -1
- package/dist/types/components/shared/storage/hooks/use-storage-string.d.ts +0 -1
- package/dist/types/components/shared/storage/hooks/use-storage-string.d.ts.map +1 -1
- package/dist/types/components/sticky-container.d.ts +22 -0
- package/dist/types/components/sticky-container.d.ts.map +1 -1
- package/dist/types/grid-context.d.ts +0 -1
- package/dist/types/grid-context.d.ts.map +1 -1
- package/dist/types/hooks/data-store/types.d.ts +1 -0
- package/dist/types/hooks/data-store/types.d.ts.map +1 -1
- package/dist/types/hooks/data-store/use-grid-plans-for-features-grid.d.ts +1 -1
- package/dist/types/hooks/data-store/use-grid-plans-for-features-grid.d.ts.map +1 -1
- package/dist/types/hooks/data-store/use-grid-plans.d.ts +1 -1
- package/dist/types/hooks/data-store/use-grid-plans.d.ts.map +1 -1
- package/dist/types/hooks/data-store/use-highlight-labels.d.ts +0 -1
- package/dist/types/hooks/data-store/use-highlight-labels.d.ts.map +1 -1
- package/dist/types/hooks/data-store/use-plan-billing-description.d.ts +0 -1
- package/dist/types/hooks/data-store/use-plan-billing-description.d.ts.map +1 -1
- package/dist/types/hooks/use-grid-size.d.ts +0 -1
- package/dist/types/hooks/use-grid-size.d.ts.map +1 -1
- package/dist/types/lib/get-plan-features-object.d.ts.map +1 -1
- package/dist/types/lib/sort-plan-properties.d.ts +1 -1
- package/dist/types/lib/sort-plan-properties.d.ts.map +1 -1
- package/dist/types/types.d.ts +1 -1
- package/dist/types/types.d.ts.map +1 -1
- package/package.json +14 -14
- package/src/_shared.scss +9 -4
- package/src/components/comparison-grid/index.stories.tsx +1 -0
- package/src/components/comparison-grid/index.tsx +19 -33
- package/src/components/comparison-grid/style.scss +0 -17
- package/src/components/dropdown-option.tsx +1 -1
- package/src/components/features-grid/index.stories.tsx +1 -0
- package/src/components/features-grid/index.tsx +21 -9
- package/src/components/features-grid/style.scss +2 -19
- package/src/components/plan-button/style.scss +8 -7
- package/src/components/plan-type-selector/style.scss +3 -1
- package/src/components/shared/billing-timeframe/index.tsx +15 -7
- package/src/components/shared/header-price/style.scss +2 -2
- package/src/components/sticky-container.tsx +74 -3
- package/src/components/test/billing-timeframe.tsx +2 -2
- package/src/hooks/data-store/types.ts +1 -0
- package/src/hooks/data-store/use-grid-plans-for-features-grid.ts +14 -10
- package/src/hooks/data-store/use-plan-billing-description.tsx +1 -1
- package/src/hooks/use-grid-size.ts +0 -1
- package/src/lib/sort-plan-properties.ts +18 -37
- package/src/lib/test/sort-plan-properties.ts +50 -32
- package/src/types.ts +1 -0
|
@@ -42,63 +42,81 @@ const planEcommerce = {
|
|
|
42
42
|
const plansInDefaultOrder = [ planFree, planPersonal, planPremium, planBusiness, planEcommerce ];
|
|
43
43
|
|
|
44
44
|
describe( 'sortPlans', () => {
|
|
45
|
-
it( 'should
|
|
45
|
+
it( 'should return an empty array if no plans are provided', () => {
|
|
46
|
+
expect( sortPlans( [] ) ).toEqual( [] );
|
|
47
|
+
} );
|
|
48
|
+
|
|
49
|
+
it( 'should return the original order if no current plan is specified', () => {
|
|
50
|
+
expect( sortPlans( plansInDefaultOrder ) ).toEqual( plansInDefaultOrder );
|
|
51
|
+
} );
|
|
52
|
+
|
|
53
|
+
it( 'should return the original order if current plan is null', () => {
|
|
54
|
+
expect( sortPlans( plansInDefaultOrder, null ) ).toEqual( plansInDefaultOrder );
|
|
55
|
+
} );
|
|
56
|
+
|
|
57
|
+
it( 'should return the original order if current plan is undefined', () => {
|
|
58
|
+
expect( sortPlans( plansInDefaultOrder, undefined ) ).toEqual( plansInDefaultOrder );
|
|
59
|
+
} );
|
|
60
|
+
|
|
61
|
+
it( 'should return the original order if current plan is not found in the plans array', () => {
|
|
62
|
+
expect( sortPlans( plansInDefaultOrder, 'non-existent-plan' ) ).toEqual( plansInDefaultOrder );
|
|
63
|
+
} );
|
|
64
|
+
|
|
65
|
+
it( 'should prioritize the current plan when specified', () => {
|
|
66
|
+
// When personal plan is current
|
|
46
67
|
expect( sortPlans( plansInDefaultOrder, 'personal-bundle' ) ).toEqual( [
|
|
47
68
|
planPersonal,
|
|
69
|
+
planFree,
|
|
48
70
|
planPremium,
|
|
49
71
|
planBusiness,
|
|
50
72
|
planEcommerce,
|
|
51
|
-
planFree,
|
|
52
73
|
] );
|
|
53
|
-
} );
|
|
54
74
|
|
|
55
|
-
|
|
56
|
-
expect( sortPlans( plansInDefaultOrder, '
|
|
57
|
-
planEcommerce,
|
|
58
|
-
planBusiness,
|
|
75
|
+
// When premium plan is current
|
|
76
|
+
expect( sortPlans( plansInDefaultOrder, 'value_bundle' ) ).toEqual( [
|
|
59
77
|
planPremium,
|
|
60
|
-
planPersonal,
|
|
61
78
|
planFree,
|
|
62
|
-
|
|
63
|
-
} );
|
|
64
|
-
|
|
65
|
-
it( 'should show the popular plan first if current plan slug is empty', () => {
|
|
66
|
-
expect( sortPlans( plansInDefaultOrder ) ).toEqual( [
|
|
67
|
-
planPremium,
|
|
79
|
+
planPersonal,
|
|
68
80
|
planBusiness,
|
|
69
81
|
planEcommerce,
|
|
70
|
-
planPersonal,
|
|
71
|
-
planFree,
|
|
72
82
|
] );
|
|
73
|
-
} );
|
|
74
83
|
|
|
75
|
-
|
|
76
|
-
expect( sortPlans( plansInDefaultOrder ) ).toEqual( [
|
|
77
|
-
planPremium,
|
|
84
|
+
// When business plan is current
|
|
85
|
+
expect( sortPlans( plansInDefaultOrder, 'business-bundle' ) ).toEqual( [
|
|
78
86
|
planBusiness,
|
|
79
|
-
planEcommerce,
|
|
80
|
-
planPersonal,
|
|
81
87
|
planFree,
|
|
88
|
+
planPersonal,
|
|
89
|
+
planPremium,
|
|
90
|
+
planEcommerce,
|
|
82
91
|
] );
|
|
83
|
-
} );
|
|
84
92
|
|
|
85
|
-
|
|
86
|
-
expect( sortPlans( plansInDefaultOrder, '
|
|
87
|
-
planPremium,
|
|
88
|
-
planBusiness,
|
|
93
|
+
// When ecommerce plan is current
|
|
94
|
+
expect( sortPlans( plansInDefaultOrder, 'ecommerce-bundle' ) ).toEqual( [
|
|
89
95
|
planEcommerce,
|
|
90
|
-
planPersonal,
|
|
91
96
|
planFree,
|
|
97
|
+
planPersonal,
|
|
98
|
+
planPremium,
|
|
99
|
+
planBusiness,
|
|
92
100
|
] );
|
|
93
|
-
} );
|
|
94
101
|
|
|
95
|
-
|
|
96
|
-
expect( sortPlans( plansInDefaultOrder, 'free_plan'
|
|
102
|
+
// When free plan is current
|
|
103
|
+
expect( sortPlans( plansInDefaultOrder, 'free_plan' ) ).toEqual( [
|
|
104
|
+
planFree,
|
|
97
105
|
planPersonal,
|
|
98
106
|
planPremium,
|
|
99
107
|
planBusiness,
|
|
100
108
|
planEcommerce,
|
|
101
|
-
planFree,
|
|
102
109
|
] );
|
|
103
110
|
} );
|
|
111
|
+
|
|
112
|
+
it( 'should work with a single plan', () => {
|
|
113
|
+
const singlePlan = [ planFree ];
|
|
114
|
+
expect( sortPlans( singlePlan, 'free_plan' ) ).toEqual( [ planFree ] );
|
|
115
|
+
} );
|
|
116
|
+
|
|
117
|
+
it( 'should preserve the original array', () => {
|
|
118
|
+
const originalArray = [ ...plansInDefaultOrder ];
|
|
119
|
+
sortPlans( plansInDefaultOrder, 'personal-bundle' );
|
|
120
|
+
expect( plansInDefaultOrder ).toEqual( originalArray );
|
|
121
|
+
} );
|
|
104
122
|
} );
|
package/src/types.ts
CHANGED
|
@@ -104,6 +104,7 @@ export interface CommonGridProps {
|
|
|
104
104
|
siteId?: number | null;
|
|
105
105
|
isInSignup: boolean;
|
|
106
106
|
isInAdmin: boolean;
|
|
107
|
+
isInSiteDashboard: boolean;
|
|
107
108
|
onStorageAddOnClick?: ( addOnSlug: AddOns.StorageAddOnSlug ) => void;
|
|
108
109
|
currentSitePlanSlug?: string | null;
|
|
109
110
|
hideUnavailableFeatures?: boolean; // used to hide features that are not available, instead of strike-through as explained in #76206
|