@wlloyalty/wll-react-sdk 1.4.3 → 1.4.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.
- package/dist/index.d.ts +25 -3
- package/dist/native.js +98 -5
- package/dist/native.js.map +1 -1
- package/dist/types/components/organisms/Group/index.d.ts +3 -1
- package/dist/types/hooks/useInvalidateData.d.ts +9 -0
- package/dist/types/hooks/usePullToRefresh.d.ts +12 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/web.js +117 -8
- package/dist/web.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as LucideReactIcons from 'lucide-react';
|
|
2
2
|
import * as react_native from 'react-native';
|
|
3
|
-
import { ViewProps, ImageSourcePropType, StyleProp, ViewStyle, TextProps as TextProps$1, TextStyle, ImageProps } from 'react-native';
|
|
3
|
+
import { ViewProps, ImageSourcePropType, StyleProp, ViewStyle, TextProps as TextProps$1, TextStyle, ImageProps, RefreshControl } from 'react-native';
|
|
4
4
|
import * as React$1 from 'react';
|
|
5
5
|
import React__default from 'react';
|
|
6
6
|
|
|
@@ -600,6 +600,8 @@ type TGroup = {
|
|
|
600
600
|
|
|
601
601
|
type GroupProps = {
|
|
602
602
|
id: string;
|
|
603
|
+
enablePullToRefresh?: boolean;
|
|
604
|
+
onRefresh?: () => Promise<void>;
|
|
603
605
|
};
|
|
604
606
|
/**
|
|
605
607
|
* A page-level component that represents a Group view in the application.
|
|
@@ -613,7 +615,7 @@ type GroupProps = {
|
|
|
613
615
|
* @param {string} props.id - The unique identifier of the group to fetch and display
|
|
614
616
|
* @returns {JSX.Element|null} The rendered group or null if invalid ID
|
|
615
617
|
*/
|
|
616
|
-
declare const Group: ({ id }: GroupProps) => JSX.Element | null;
|
|
618
|
+
declare const Group: ({ id, enablePullToRefresh, onRefresh }: GroupProps) => JSX.Element | null;
|
|
617
619
|
|
|
618
620
|
type PointsTileProps = {
|
|
619
621
|
tile: Tile;
|
|
@@ -725,4 +727,24 @@ type WllSdkProviderProps = WithChildren & {
|
|
|
725
727
|
declare const WllSdkProvider: ({ children, theme: providedTheme, config, navigationConfig, }: WllSdkProviderProps) => JSX.Element;
|
|
726
728
|
declare const useWllSdk: () => WllSdkContextType;
|
|
727
729
|
|
|
728
|
-
|
|
730
|
+
/**
|
|
731
|
+
* Hook to invalidate SDK data
|
|
732
|
+
* @returns Methods to trigger SDK data updates
|
|
733
|
+
*/
|
|
734
|
+
declare function useInvalidateData(): {
|
|
735
|
+
invalidateGroupData: () => void;
|
|
736
|
+
invalidateSectionData: (sectionId?: string) => void;
|
|
737
|
+
invalidateTileData: (tileId?: string) => void;
|
|
738
|
+
};
|
|
739
|
+
|
|
740
|
+
type UsePullToRefreshProps = {
|
|
741
|
+
onRefresh?: () => Promise<void>;
|
|
742
|
+
refreshing?: boolean;
|
|
743
|
+
};
|
|
744
|
+
declare function usePullToRefresh({ onRefresh, refreshing: externalRefreshing, }?: UsePullToRefreshProps): {
|
|
745
|
+
refreshControl: React__default.CElement<react_native.RefreshControlProps, RefreshControl>;
|
|
746
|
+
refreshing: boolean;
|
|
747
|
+
handleRefresh: () => Promise<void>;
|
|
748
|
+
};
|
|
749
|
+
|
|
750
|
+
export { type APIResponse, type Align, type AllowedCoreApiUrl, type Availability, type Badge, type BadgeDetail, _default$6 as BadgeTile, BadgeTileConfig, BadgeTileType, _default$5 as BannerTile, BannerTileConfig, BaseBanner, type BaseThemeObject, BaseTile, Button, CTALinkTarget, Carousel, CarouselNavButton, Column, _default$4 as ContentTile, ContentTileConfig, CoreApiUrl, type DerivedColors, type DerivedProperties, type DesaturationType, type FlexDirection, FullFlex, Grid, Group, Icon, type ImagePropsNoSource, Indicator, type Justify, Layout, type LayoutProps$1 as LayoutProps, LoadingIndicator, type NavigationConfig, type NavigationType, type PercentageKey, _default$3 as PointsTile, PointsTileConfig, type ProgessType, ProgressBar, ProgressIndicator, ProgressType, ProgressiveImage, Reward, type RewardCategory, _default$2 as RewardCategoryTile, RewardCategoryTileConfig, _default$1 as RewardTile, RewardTileConfig, _default as RoundupTile, RoundupTileConfig, Row, type SDKConfig, Section, SectionHeader, SectionType, type Size, Skeleton, Spacer, type TGroup, type TSection, Text, type ThemeContextType, type ThemeObject, type ThemeProviderProps, TierTileConfig, TierTileType, TierTile as TierTileUpdated, type TierType, type Tile, type TileConfig, TileContainer, TileHeight, type TileSizeInfo, TileType, type Variant, WllSdkProvider, alignMap, justifyMap, useInvalidateData, usePullToRefresh, useWllSdk };
|
package/dist/native.js
CHANGED
|
@@ -3859,6 +3859,85 @@ var useInitialGroupFetch = function (_a) {
|
|
|
3859
3859
|
return { isLoading: isLoading, error: error };
|
|
3860
3860
|
};
|
|
3861
3861
|
|
|
3862
|
+
/**
|
|
3863
|
+
* Hook to invalidate SDK data
|
|
3864
|
+
* @returns Methods to trigger SDK data updates
|
|
3865
|
+
*/
|
|
3866
|
+
function useInvalidateData() {
|
|
3867
|
+
var sdk = useWllSdk();
|
|
3868
|
+
return {
|
|
3869
|
+
invalidateGroupData: function () {
|
|
3870
|
+
if (sdk) {
|
|
3871
|
+
sdk.notifyDataChange('GROUP_DATA_CHANGED');
|
|
3872
|
+
}
|
|
3873
|
+
},
|
|
3874
|
+
invalidateSectionData: function (sectionId) {
|
|
3875
|
+
if (sdk) {
|
|
3876
|
+
sdk.notifyDataChange('SECTION_DATA_CHANGED', { sectionId: sectionId });
|
|
3877
|
+
}
|
|
3878
|
+
},
|
|
3879
|
+
invalidateTileData: function (tileId) {
|
|
3880
|
+
if (sdk) {
|
|
3881
|
+
sdk.notifyDataChange('TILE_DATA_CHANGED', { tileId: tileId });
|
|
3882
|
+
}
|
|
3883
|
+
},
|
|
3884
|
+
};
|
|
3885
|
+
}
|
|
3886
|
+
|
|
3887
|
+
function usePullToRefresh(_a) {
|
|
3888
|
+
var _this = this;
|
|
3889
|
+
var _b = _a === void 0 ? {} : _a, onRefresh = _b.onRefresh, externalRefreshing = _b.refreshing;
|
|
3890
|
+
var _c = React.useState(false), internalRefreshing = _c[0], setInternalRefreshing = _c[1];
|
|
3891
|
+
var invalidateGroupData = useInvalidateData().invalidateGroupData;
|
|
3892
|
+
var refreshing = externalRefreshing !== null && externalRefreshing !== void 0 ? externalRefreshing : internalRefreshing;
|
|
3893
|
+
var handleRefresh = React.useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
3894
|
+
var error_1;
|
|
3895
|
+
return __generator(this, function (_a) {
|
|
3896
|
+
switch (_a.label) {
|
|
3897
|
+
case 0:
|
|
3898
|
+
if (refreshing)
|
|
3899
|
+
return [2 /*return*/];
|
|
3900
|
+
setInternalRefreshing(true);
|
|
3901
|
+
_a.label = 1;
|
|
3902
|
+
case 1:
|
|
3903
|
+
_a.trys.push([1, 6, 7, 8]);
|
|
3904
|
+
if (!onRefresh) return [3 /*break*/, 3];
|
|
3905
|
+
return [4 /*yield*/, onRefresh()];
|
|
3906
|
+
case 2:
|
|
3907
|
+
_a.sent();
|
|
3908
|
+
return [3 /*break*/, 5];
|
|
3909
|
+
case 3:
|
|
3910
|
+
// Default behavior: refresh all group data
|
|
3911
|
+
invalidateGroupData();
|
|
3912
|
+
// Add a small delay to show the refresh animation
|
|
3913
|
+
return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 1000); })];
|
|
3914
|
+
case 4:
|
|
3915
|
+
// Add a small delay to show the refresh animation
|
|
3916
|
+
_a.sent();
|
|
3917
|
+
_a.label = 5;
|
|
3918
|
+
case 5: return [3 /*break*/, 8];
|
|
3919
|
+
case 6:
|
|
3920
|
+
error_1 = _a.sent();
|
|
3921
|
+
console.error('Pull to refresh failed:', error_1);
|
|
3922
|
+
return [3 /*break*/, 8];
|
|
3923
|
+
case 7:
|
|
3924
|
+
setInternalRefreshing(false);
|
|
3925
|
+
return [7 /*endfinally*/];
|
|
3926
|
+
case 8: return [2 /*return*/];
|
|
3927
|
+
}
|
|
3928
|
+
});
|
|
3929
|
+
}); }, [refreshing, onRefresh, invalidateGroupData]);
|
|
3930
|
+
var refreshControl = React.createElement(reactNative.RefreshControl, {
|
|
3931
|
+
refreshing: refreshing,
|
|
3932
|
+
onRefresh: handleRefresh,
|
|
3933
|
+
});
|
|
3934
|
+
return {
|
|
3935
|
+
refreshControl: refreshControl,
|
|
3936
|
+
refreshing: refreshing,
|
|
3937
|
+
handleRefresh: handleRefresh,
|
|
3938
|
+
};
|
|
3939
|
+
}
|
|
3940
|
+
|
|
3862
3941
|
exports.SectionType = void 0;
|
|
3863
3942
|
(function (SectionType) {
|
|
3864
3943
|
SectionType["Grid"] = "GRID";
|
|
@@ -4450,7 +4529,8 @@ var GroupSections = function () {
|
|
|
4450
4529
|
return (jsxRuntimeExports.jsx(GroupEmptyState, { message: "This group doesn't have any active sections" }));
|
|
4451
4530
|
}
|
|
4452
4531
|
var sortedSections = sortByPriority(activeSections);
|
|
4453
|
-
|
|
4532
|
+
var Container = IS_WEB ? reactNative.View : reactNative.ScrollView;
|
|
4533
|
+
return (jsxRuntimeExports.jsx(Container, { accessible: true, accessibilityLabel: "Group: ".concat(groupData.name || 'Unnamed group'), role: "region", children: sortedSections.map(function (section) { return (jsxRuntimeExports.jsx(Section, { section: section }, section.id)); }) }));
|
|
4454
4534
|
};
|
|
4455
4535
|
/**
|
|
4456
4536
|
* A page-level component that represents a Group view in the application.
|
|
@@ -4465,14 +4545,18 @@ var GroupSections = function () {
|
|
|
4465
4545
|
* @returns {JSX.Element|null} The rendered group or null if invalid ID
|
|
4466
4546
|
*/
|
|
4467
4547
|
var Group = function (_a) {
|
|
4468
|
-
var id = _a.id;
|
|
4548
|
+
var id = _a.id, _b = _a.enablePullToRefresh, enablePullToRefresh = _b === void 0 ? true : _b, onRefresh = _a.onRefresh;
|
|
4469
4549
|
if (!id) {
|
|
4470
4550
|
console.warn('Group component requires id prop');
|
|
4471
4551
|
return null;
|
|
4472
4552
|
}
|
|
4473
|
-
var
|
|
4553
|
+
var _c = useGroupData(id), groupData = _c.groupData, isLoading = _c.isLoading, error = _c.error;
|
|
4474
4554
|
var theme = useWllSdk().theme;
|
|
4475
|
-
|
|
4555
|
+
var _d = usePullToRefresh({
|
|
4556
|
+
onRefresh: onRefresh,
|
|
4557
|
+
refreshing: isLoading && !groupData
|
|
4558
|
+
}), refreshControl = _d.refreshControl; _d.refreshing;
|
|
4559
|
+
if (isLoading && !groupData) {
|
|
4476
4560
|
return (jsxRuntimeExports.jsx(reactNative.View, { style: {
|
|
4477
4561
|
flex: 1,
|
|
4478
4562
|
padding: IS_MOBILE ? theme.sizes.lg : undefined,
|
|
@@ -4481,7 +4565,14 @@ var Group = function (_a) {
|
|
|
4481
4565
|
if (error || !groupData) {
|
|
4482
4566
|
return jsxRuntimeExports.jsx(GroupEmptyState, { message: error || 'No group data available' });
|
|
4483
4567
|
}
|
|
4484
|
-
|
|
4568
|
+
var Container = IS_WEB ? reactNative.View : reactNative.ScrollView;
|
|
4569
|
+
var containerProps = IS_WEB
|
|
4570
|
+
? {}
|
|
4571
|
+
: {
|
|
4572
|
+
refreshControl: enablePullToRefresh ? refreshControl : undefined,
|
|
4573
|
+
showsVerticalScrollIndicator: true,
|
|
4574
|
+
};
|
|
4575
|
+
return (jsxRuntimeExports.jsx(GroupContext.Provider, { value: { groupData: groupData }, children: jsxRuntimeExports.jsx(reactNative.View, { testID: "group-container", children: jsxRuntimeExports.jsx(Container, __assign({}, containerProps, { children: jsxRuntimeExports.jsx(GroupSections, {}) })) }) }));
|
|
4485
4576
|
};
|
|
4486
4577
|
|
|
4487
4578
|
/**
|
|
@@ -5393,5 +5484,7 @@ exports.TileContainer = TileContainer;
|
|
|
5393
5484
|
exports.WllSdkProvider = WllSdkProvider;
|
|
5394
5485
|
exports.alignMap = alignMap;
|
|
5395
5486
|
exports.justifyMap = justifyMap;
|
|
5487
|
+
exports.useInvalidateData = useInvalidateData;
|
|
5488
|
+
exports.usePullToRefresh = usePullToRefresh;
|
|
5396
5489
|
exports.useWllSdk = useWllSdk;
|
|
5397
5490
|
//# sourceMappingURL=native.js.map
|