@wlloyalty/wll-react-sdk 1.4.2 → 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 +96 -4
- 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 +115 -7
- package/dist/web.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,6 +2,8 @@ import React from 'react';
|
|
|
2
2
|
import { TGroup } from '../../../types/group';
|
|
3
3
|
type GroupProps = {
|
|
4
4
|
id: string;
|
|
5
|
+
enablePullToRefresh?: boolean;
|
|
6
|
+
onRefresh?: () => Promise<void>;
|
|
5
7
|
};
|
|
6
8
|
type GroupContextType = {
|
|
7
9
|
groupData: TGroup;
|
|
@@ -46,5 +48,5 @@ export declare const GroupSections: () => JSX.Element;
|
|
|
46
48
|
* @param {string} props.id - The unique identifier of the group to fetch and display
|
|
47
49
|
* @returns {JSX.Element|null} The rendered group or null if invalid ID
|
|
48
50
|
*/
|
|
49
|
-
declare const Group: ({ id }: GroupProps) => JSX.Element | null;
|
|
51
|
+
declare const Group: ({ id, enablePullToRefresh, onRefresh }: GroupProps) => JSX.Element | null;
|
|
50
52
|
export default Group;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook to invalidate SDK data
|
|
3
|
+
* @returns Methods to trigger SDK data updates
|
|
4
|
+
*/
|
|
5
|
+
export declare function useInvalidateData(): {
|
|
6
|
+
invalidateGroupData: () => void;
|
|
7
|
+
invalidateSectionData: (sectionId?: string) => void;
|
|
8
|
+
invalidateTileData: (tileId?: string) => void;
|
|
9
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { RefreshControl } from 'react-native';
|
|
3
|
+
type UsePullToRefreshProps = {
|
|
4
|
+
onRefresh?: () => Promise<void>;
|
|
5
|
+
refreshing?: boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare function usePullToRefresh({ onRefresh, refreshing: externalRefreshing, }?: UsePullToRefreshProps): {
|
|
8
|
+
refreshControl: React.CElement<import("react-native").RefreshControlProps, RefreshControl>;
|
|
9
|
+
refreshing: boolean;
|
|
10
|
+
handleRefresh: () => Promise<void>;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ export * from './components/atoms';
|
|
|
2
2
|
export * from './components/molecules';
|
|
3
3
|
export * from './components/organisms';
|
|
4
4
|
export * from './context/WllSdkContext';
|
|
5
|
+
export { useInvalidateData } from './hooks/useInvalidateData';
|
|
6
|
+
export { usePullToRefresh } from './hooks/usePullToRefresh';
|
|
5
7
|
export * from './types/common';
|
|
6
8
|
export * from './types/group';
|
|
7
9
|
export * from './types/navigation';
|
package/dist/web.js
CHANGED
|
@@ -20758,6 +20758,98 @@ var useInitialGroupFetch = function (_a) {
|
|
|
20758
20758
|
};
|
|
20759
20759
|
};
|
|
20760
20760
|
|
|
20761
|
+
/**
|
|
20762
|
+
* Hook to invalidate SDK data
|
|
20763
|
+
* @returns Methods to trigger SDK data updates
|
|
20764
|
+
*/
|
|
20765
|
+
function useInvalidateData() {
|
|
20766
|
+
var sdk = useWllSdk();
|
|
20767
|
+
return {
|
|
20768
|
+
invalidateGroupData: function () {
|
|
20769
|
+
if (sdk) {
|
|
20770
|
+
sdk.notifyDataChange('GROUP_DATA_CHANGED');
|
|
20771
|
+
}
|
|
20772
|
+
},
|
|
20773
|
+
invalidateSectionData: function (sectionId) {
|
|
20774
|
+
if (sdk) {
|
|
20775
|
+
sdk.notifyDataChange('SECTION_DATA_CHANGED', {
|
|
20776
|
+
sectionId: sectionId
|
|
20777
|
+
});
|
|
20778
|
+
}
|
|
20779
|
+
},
|
|
20780
|
+
invalidateTileData: function (tileId) {
|
|
20781
|
+
if (sdk) {
|
|
20782
|
+
sdk.notifyDataChange('TILE_DATA_CHANGED', {
|
|
20783
|
+
tileId: tileId
|
|
20784
|
+
});
|
|
20785
|
+
}
|
|
20786
|
+
}
|
|
20787
|
+
};
|
|
20788
|
+
}
|
|
20789
|
+
|
|
20790
|
+
function usePullToRefresh(_a) {
|
|
20791
|
+
var _this = this;
|
|
20792
|
+
var _b = _a === void 0 ? {} : _a,
|
|
20793
|
+
onRefresh = _b.onRefresh,
|
|
20794
|
+
externalRefreshing = _b.refreshing;
|
|
20795
|
+
var _c = React.useState(false),
|
|
20796
|
+
internalRefreshing = _c[0],
|
|
20797
|
+
setInternalRefreshing = _c[1];
|
|
20798
|
+
var invalidateGroupData = useInvalidateData().invalidateGroupData;
|
|
20799
|
+
var refreshing = externalRefreshing !== null && externalRefreshing !== void 0 ? externalRefreshing : internalRefreshing;
|
|
20800
|
+
var handleRefresh = React.useCallback(function () {
|
|
20801
|
+
return __awaiter(_this, void 0, void 0, function () {
|
|
20802
|
+
var error_1;
|
|
20803
|
+
return __generator(this, function (_a) {
|
|
20804
|
+
switch (_a.label) {
|
|
20805
|
+
case 0:
|
|
20806
|
+
if (refreshing) return [2 /*return*/];
|
|
20807
|
+
setInternalRefreshing(true);
|
|
20808
|
+
_a.label = 1;
|
|
20809
|
+
case 1:
|
|
20810
|
+
_a.trys.push([1, 6, 7, 8]);
|
|
20811
|
+
if (!onRefresh) return [3 /*break*/, 3];
|
|
20812
|
+
return [4 /*yield*/, onRefresh()];
|
|
20813
|
+
case 2:
|
|
20814
|
+
_a.sent();
|
|
20815
|
+
return [3 /*break*/, 5];
|
|
20816
|
+
case 3:
|
|
20817
|
+
// Default behavior: refresh all group data
|
|
20818
|
+
invalidateGroupData();
|
|
20819
|
+
// Add a small delay to show the refresh animation
|
|
20820
|
+
return [4 /*yield*/, new Promise(function (resolve) {
|
|
20821
|
+
return setTimeout(resolve, 1000);
|
|
20822
|
+
})];
|
|
20823
|
+
case 4:
|
|
20824
|
+
// Add a small delay to show the refresh animation
|
|
20825
|
+
_a.sent();
|
|
20826
|
+
_a.label = 5;
|
|
20827
|
+
case 5:
|
|
20828
|
+
return [3 /*break*/, 8];
|
|
20829
|
+
case 6:
|
|
20830
|
+
error_1 = _a.sent();
|
|
20831
|
+
console.error('Pull to refresh failed:', error_1);
|
|
20832
|
+
return [3 /*break*/, 8];
|
|
20833
|
+
case 7:
|
|
20834
|
+
setInternalRefreshing(false);
|
|
20835
|
+
return [7 /*endfinally*/];
|
|
20836
|
+
case 8:
|
|
20837
|
+
return [2 /*return*/];
|
|
20838
|
+
}
|
|
20839
|
+
});
|
|
20840
|
+
});
|
|
20841
|
+
}, [refreshing, onRefresh, invalidateGroupData]);
|
|
20842
|
+
var refreshControl = /*#__PURE__*/React.createElement(RefreshControl, {
|
|
20843
|
+
refreshing: refreshing,
|
|
20844
|
+
onRefresh: handleRefresh
|
|
20845
|
+
});
|
|
20846
|
+
return {
|
|
20847
|
+
refreshControl: refreshControl,
|
|
20848
|
+
refreshing: refreshing,
|
|
20849
|
+
handleRefresh: handleRefresh
|
|
20850
|
+
};
|
|
20851
|
+
}
|
|
20852
|
+
|
|
20761
20853
|
exports.SectionType = void 0;
|
|
20762
20854
|
(function (SectionType) {
|
|
20763
20855
|
SectionType["Grid"] = "GRID";
|
|
@@ -21560,17 +21652,26 @@ var GroupSections = function () {
|
|
|
21560
21652
|
* @returns {JSX.Element|null} The rendered group or null if invalid ID
|
|
21561
21653
|
*/
|
|
21562
21654
|
var Group = function (_a) {
|
|
21563
|
-
var id = _a.id
|
|
21655
|
+
var id = _a.id,
|
|
21656
|
+
_b = _a.enablePullToRefresh,
|
|
21657
|
+
enablePullToRefresh = _b === void 0 ? true : _b,
|
|
21658
|
+
onRefresh = _a.onRefresh;
|
|
21564
21659
|
if (!id) {
|
|
21565
21660
|
console.warn('Group component requires id prop');
|
|
21566
21661
|
return null;
|
|
21567
21662
|
}
|
|
21568
|
-
var
|
|
21569
|
-
groupData =
|
|
21570
|
-
isLoading =
|
|
21571
|
-
error =
|
|
21663
|
+
var _c = useGroupData(id),
|
|
21664
|
+
groupData = _c.groupData,
|
|
21665
|
+
isLoading = _c.isLoading,
|
|
21666
|
+
error = _c.error;
|
|
21572
21667
|
var theme = useWllSdk().theme;
|
|
21573
|
-
|
|
21668
|
+
var _d = usePullToRefresh({
|
|
21669
|
+
onRefresh: onRefresh,
|
|
21670
|
+
refreshing: isLoading && !groupData
|
|
21671
|
+
}),
|
|
21672
|
+
refreshControl = _d.refreshControl;
|
|
21673
|
+
_d.refreshing;
|
|
21674
|
+
if (isLoading && !groupData) {
|
|
21574
21675
|
return /*#__PURE__*/React.createElement(View$2, {
|
|
21575
21676
|
style: {
|
|
21576
21677
|
flex: 1,
|
|
@@ -21587,13 +21688,18 @@ var Group = function (_a) {
|
|
|
21587
21688
|
message: error || 'No group data available'
|
|
21588
21689
|
});
|
|
21589
21690
|
}
|
|
21691
|
+
var Container = IS_WEB ? View$2 : ScrollView$2;
|
|
21692
|
+
var containerProps = IS_WEB ? {} : {
|
|
21693
|
+
refreshControl: enablePullToRefresh ? refreshControl : undefined,
|
|
21694
|
+
showsVerticalScrollIndicator: true
|
|
21695
|
+
};
|
|
21590
21696
|
return /*#__PURE__*/React.createElement(GroupContext.Provider, {
|
|
21591
21697
|
value: {
|
|
21592
21698
|
groupData: groupData
|
|
21593
21699
|
}
|
|
21594
21700
|
}, /*#__PURE__*/React.createElement(View$2, {
|
|
21595
21701
|
testID: "group-container"
|
|
21596
|
-
}, /*#__PURE__*/React.createElement(GroupSections, null)));
|
|
21702
|
+
}, /*#__PURE__*/React.createElement(Container, __assign({}, containerProps), /*#__PURE__*/React.createElement(GroupSections, null))));
|
|
21597
21703
|
};
|
|
21598
21704
|
|
|
21599
21705
|
/**
|
|
@@ -22860,5 +22966,7 @@ exports.TileContainer = TileContainer;
|
|
|
22860
22966
|
exports.WllSdkProvider = WllSdkProvider;
|
|
22861
22967
|
exports.alignMap = alignMap;
|
|
22862
22968
|
exports.justifyMap = justifyMap;
|
|
22969
|
+
exports.useInvalidateData = useInvalidateData;
|
|
22970
|
+
exports.usePullToRefresh = usePullToRefresh;
|
|
22863
22971
|
exports.useWllSdk = useWllSdk;
|
|
22864
22972
|
//# sourceMappingURL=web.js.map
|