@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
|
@@ -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";
|
|
@@ -21535,7 +21627,8 @@ var GroupSections = function () {
|
|
|
21535
21627
|
});
|
|
21536
21628
|
}
|
|
21537
21629
|
var sortedSections = sortByPriority(activeSections);
|
|
21538
|
-
|
|
21630
|
+
var Container = IS_WEB ? View$2 : ScrollView$2;
|
|
21631
|
+
return /*#__PURE__*/React.createElement(Container, {
|
|
21539
21632
|
accessible: true,
|
|
21540
21633
|
accessibilityLabel: "Group: ".concat(groupData.name || 'Unnamed group'),
|
|
21541
21634
|
role: "region"
|
|
@@ -21559,17 +21652,26 @@ var GroupSections = function () {
|
|
|
21559
21652
|
* @returns {JSX.Element|null} The rendered group or null if invalid ID
|
|
21560
21653
|
*/
|
|
21561
21654
|
var Group = function (_a) {
|
|
21562
|
-
var id = _a.id
|
|
21655
|
+
var id = _a.id,
|
|
21656
|
+
_b = _a.enablePullToRefresh,
|
|
21657
|
+
enablePullToRefresh = _b === void 0 ? true : _b,
|
|
21658
|
+
onRefresh = _a.onRefresh;
|
|
21563
21659
|
if (!id) {
|
|
21564
21660
|
console.warn('Group component requires id prop');
|
|
21565
21661
|
return null;
|
|
21566
21662
|
}
|
|
21567
|
-
var
|
|
21568
|
-
groupData =
|
|
21569
|
-
isLoading =
|
|
21570
|
-
error =
|
|
21663
|
+
var _c = useGroupData(id),
|
|
21664
|
+
groupData = _c.groupData,
|
|
21665
|
+
isLoading = _c.isLoading,
|
|
21666
|
+
error = _c.error;
|
|
21571
21667
|
var theme = useWllSdk().theme;
|
|
21572
|
-
|
|
21668
|
+
var _d = usePullToRefresh({
|
|
21669
|
+
onRefresh: onRefresh,
|
|
21670
|
+
refreshing: isLoading && !groupData
|
|
21671
|
+
}),
|
|
21672
|
+
refreshControl = _d.refreshControl;
|
|
21673
|
+
_d.refreshing;
|
|
21674
|
+
if (isLoading && !groupData) {
|
|
21573
21675
|
return /*#__PURE__*/React.createElement(View$2, {
|
|
21574
21676
|
style: {
|
|
21575
21677
|
flex: 1,
|
|
@@ -21586,13 +21688,18 @@ var Group = function (_a) {
|
|
|
21586
21688
|
message: error || 'No group data available'
|
|
21587
21689
|
});
|
|
21588
21690
|
}
|
|
21691
|
+
var Container = IS_WEB ? View$2 : ScrollView$2;
|
|
21692
|
+
var containerProps = IS_WEB ? {} : {
|
|
21693
|
+
refreshControl: enablePullToRefresh ? refreshControl : undefined,
|
|
21694
|
+
showsVerticalScrollIndicator: true
|
|
21695
|
+
};
|
|
21589
21696
|
return /*#__PURE__*/React.createElement(GroupContext.Provider, {
|
|
21590
21697
|
value: {
|
|
21591
21698
|
groupData: groupData
|
|
21592
21699
|
}
|
|
21593
21700
|
}, /*#__PURE__*/React.createElement(View$2, {
|
|
21594
21701
|
testID: "group-container"
|
|
21595
|
-
}, /*#__PURE__*/React.createElement(GroupSections, null)));
|
|
21702
|
+
}, /*#__PURE__*/React.createElement(Container, __assign({}, containerProps), /*#__PURE__*/React.createElement(GroupSections, null))));
|
|
21596
21703
|
};
|
|
21597
21704
|
|
|
21598
21705
|
/**
|
|
@@ -22859,5 +22966,7 @@ exports.TileContainer = TileContainer;
|
|
|
22859
22966
|
exports.WllSdkProvider = WllSdkProvider;
|
|
22860
22967
|
exports.alignMap = alignMap;
|
|
22861
22968
|
exports.justifyMap = justifyMap;
|
|
22969
|
+
exports.useInvalidateData = useInvalidateData;
|
|
22970
|
+
exports.usePullToRefresh = usePullToRefresh;
|
|
22862
22971
|
exports.useWllSdk = useWllSdk;
|
|
22863
22972
|
//# sourceMappingURL=web.js.map
|