@tap-payments/os-micro-frontend-shared 0.0.290-test.9 → 0.0.291
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/build/components/ScrollLoader/ScrollLoader.d.ts +10 -0
- package/build/components/ScrollLoader/ScrollLoader.js +64 -0
- package/build/components/ScrollLoader/index.d.ts +3 -0
- package/build/components/ScrollLoader/index.js +3 -0
- package/build/components/index.d.ts +2 -0
- package/build/components/index.js +2 -0
- package/package.json +134 -134
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React, { PropsWithChildren } from 'react';
|
|
2
|
+
import { StackProps } from '@mui/material/Stack';
|
|
3
|
+
export type ScrollLoaderProps<IRootProps extends object = StackProps> = PropsWithChildren<IRootProps & {
|
|
4
|
+
component?: React.FC<IRootProps> | React.ElementType;
|
|
5
|
+
loadMoreItems: () => Promise<unknown>;
|
|
6
|
+
loading?: boolean;
|
|
7
|
+
hasMore?: boolean;
|
|
8
|
+
}>;
|
|
9
|
+
declare const ScrollLoader: <IRootProps extends object = StackProps>(props: ScrollLoaderProps<IRootProps>) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export default ScrollLoader;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
14
|
+
import Stack from '@mui/material/Stack';
|
|
15
|
+
const OFFSET = 50;
|
|
16
|
+
const isNearBottom = (el, offset = OFFSET) => {
|
|
17
|
+
const scrollBottom = el.scrollTop + el.clientHeight;
|
|
18
|
+
const scrollHeight = el.scrollHeight;
|
|
19
|
+
return scrollHeight - scrollBottom <= offset;
|
|
20
|
+
};
|
|
21
|
+
const ScrollLoader = (props) => {
|
|
22
|
+
const { component = Stack, loadMoreItems, hasMore, loading, children } = props, rootProps = __rest(props, ["component", "loadMoreItems", "hasMore", "loading", "children"]);
|
|
23
|
+
const [initialChecked, setInitialChecked] = useState(false);
|
|
24
|
+
const loadMoreItemsRef = useRef(loadMoreItems);
|
|
25
|
+
const containerRef = useRef(null);
|
|
26
|
+
loadMoreItemsRef.current = loadMoreItems;
|
|
27
|
+
const Component = component;
|
|
28
|
+
const handleScroll = useCallback(() => {
|
|
29
|
+
const el = containerRef.current;
|
|
30
|
+
if (!el || loading || !hasMore)
|
|
31
|
+
return;
|
|
32
|
+
const isBottom = isNearBottom(el);
|
|
33
|
+
if (isBottom)
|
|
34
|
+
loadMoreItemsRef.current();
|
|
35
|
+
}, [loading, hasMore]);
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
const el = containerRef.current;
|
|
38
|
+
if (!el)
|
|
39
|
+
return;
|
|
40
|
+
el.addEventListener('scroll', handleScroll);
|
|
41
|
+
return () => el.removeEventListener('scroll', handleScroll);
|
|
42
|
+
}, [handleScroll]);
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
const el = containerRef.current;
|
|
45
|
+
if (!el || loading)
|
|
46
|
+
return;
|
|
47
|
+
const timeout = setTimeout(() => {
|
|
48
|
+
const isBottom = isNearBottom(el);
|
|
49
|
+
if (isBottom && !initialChecked) {
|
|
50
|
+
loadMoreItemsRef.current();
|
|
51
|
+
setInitialChecked(true);
|
|
52
|
+
}
|
|
53
|
+
}, 2000);
|
|
54
|
+
return () => {
|
|
55
|
+
clearTimeout(timeout);
|
|
56
|
+
};
|
|
57
|
+
}, [loading, initialChecked]);
|
|
58
|
+
return (_jsx(Component, Object.assign({ overflow: "auto", ref: containerRef, style: {
|
|
59
|
+
overflow: 'auto',
|
|
60
|
+
height: '100%',
|
|
61
|
+
maxHeight: '100%',
|
|
62
|
+
} }, rootProps, { children: children })));
|
|
63
|
+
};
|
|
64
|
+
export default ScrollLoader;
|
|
@@ -95,3 +95,5 @@ export * from './TableHeader';
|
|
|
95
95
|
export { default as RangeCalender } from './RangeCalender';
|
|
96
96
|
export { default as AppServices } from './AppServices';
|
|
97
97
|
export * from './SourceChips';
|
|
98
|
+
export { default as ScrollLoader } from './ScrollLoader';
|
|
99
|
+
export * from './ScrollLoader';
|
|
@@ -95,3 +95,5 @@ export * from './TableHeader';
|
|
|
95
95
|
export { default as RangeCalender } from './RangeCalender';
|
|
96
96
|
export { default as AppServices } from './AppServices';
|
|
97
97
|
export * from './SourceChips';
|
|
98
|
+
export { default as ScrollLoader } from './ScrollLoader';
|
|
99
|
+
export * from './ScrollLoader';
|
package/package.json
CHANGED
|
@@ -1,134 +1,134 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@tap-payments/os-micro-frontend-shared",
|
|
3
|
-
"description": "Shared components and utilities for Tap Payments micro frontends",
|
|
4
|
-
"version": "0.0.
|
|
5
|
-
"testVersion":
|
|
6
|
-
"type": "module",
|
|
7
|
-
"main": "build/index.js",
|
|
8
|
-
"module": "build/index.js",
|
|
9
|
-
"types": "build/index.d.ts",
|
|
10
|
-
"exports": {
|
|
11
|
-
".": {
|
|
12
|
-
"types": "./build/index.d.ts",
|
|
13
|
-
"import": "./build/index.js",
|
|
14
|
-
"require": "./build/index.js"
|
|
15
|
-
},
|
|
16
|
-
"./constants": {
|
|
17
|
-
"types": "./build/constants/index.d.ts",
|
|
18
|
-
"import": "./build/constants/index.js",
|
|
19
|
-
"require": "./build/constants/index.js"
|
|
20
|
-
},
|
|
21
|
-
"./components": {
|
|
22
|
-
"types": "./build/components/index.d.ts",
|
|
23
|
-
"import": "./build/components/index.js",
|
|
24
|
-
"require": "./build/components/index.js"
|
|
25
|
-
},
|
|
26
|
-
"./components/*": {
|
|
27
|
-
"types": "./build/components/*/index.d.ts",
|
|
28
|
-
"import": "./build/components/*/index.js",
|
|
29
|
-
"require": "./build/components/*/index.js"
|
|
30
|
-
},
|
|
31
|
-
"./hooks": {
|
|
32
|
-
"types": "./build/hooks/index.d.ts",
|
|
33
|
-
"import": "./build/hooks/index.js",
|
|
34
|
-
"require": "./build/hooks/index.js"
|
|
35
|
-
},
|
|
36
|
-
"./utils": {
|
|
37
|
-
"types": "./build/utils/index.d.ts",
|
|
38
|
-
"import": "./build/utils/index.js",
|
|
39
|
-
"require": "./build/utils/index.js"
|
|
40
|
-
},
|
|
41
|
-
"./theme": {
|
|
42
|
-
"types": "./build/theme/index.d.ts",
|
|
43
|
-
"import": "./build/theme/index.js",
|
|
44
|
-
"require": "./build/theme/index.js"
|
|
45
|
-
},
|
|
46
|
-
"./types": {
|
|
47
|
-
"types": "./build/types/index.d.ts",
|
|
48
|
-
"import": "./build/types/index.js",
|
|
49
|
-
"require": "./build/types/index.js"
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
"license": "MIT",
|
|
53
|
-
"author": {
|
|
54
|
-
"name": "Ahmed Sharkawy",
|
|
55
|
-
"email": "a.elsharkawy@tap.company"
|
|
56
|
-
},
|
|
57
|
-
"files": [
|
|
58
|
-
"build",
|
|
59
|
-
"readme.md"
|
|
60
|
-
],
|
|
61
|
-
"scripts": {
|
|
62
|
-
"ts:build": "rm -rf build && tsc -p tsconfig.npm.json && tsc-alias -p tsconfig.npm.json",
|
|
63
|
-
"push": "npm run ts:build && npm publish --access public",
|
|
64
|
-
"push:test": "node scripts/increment-test-version.cjs && npm run ts:build && npm publish --access public --tag test && node scripts/restore-version.cjs",
|
|
65
|
-
"dev": "vite",
|
|
66
|
-
"build": "tsc -b && vite build ",
|
|
67
|
-
"prettier": "prettier --list-different \"src/**/*.{md,mdx,ts,js,tsx,jsx,json}\"",
|
|
68
|
-
"prettier:fix": "prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md,css,json}\"",
|
|
69
|
-
"lint": "eslint . --color",
|
|
70
|
-
"lint:fix": "eslint src --fix --color",
|
|
71
|
-
"preview": "vite preview",
|
|
72
|
-
"prepare": "husky"
|
|
73
|
-
},
|
|
74
|
-
"dependencies": {
|
|
75
|
-
"@emotion/react": "^11.11.0",
|
|
76
|
-
"@emotion/styled": "^11.11.0",
|
|
77
|
-
"@hookform/resolvers": "^3.3.1",
|
|
78
|
-
"@mui/material": "^5.12.3",
|
|
79
|
-
"@uiw/react-json-view": "^2.0.0-alpha.16",
|
|
80
|
-
"axios": "^1.4.0",
|
|
81
|
-
"dayjs": "^1.11.8",
|
|
82
|
-
"framer-motion": "10.11.0",
|
|
83
|
-
"i18next": "^22.4.15",
|
|
84
|
-
"memoize-one": "^6.0.0",
|
|
85
|
-
"re-resizable": "^6.9.9",
|
|
86
|
-
"react": "^18.2.0",
|
|
87
|
-
"react-currency-input-field": "^3.6.11",
|
|
88
|
-
"react-dom": "^18.2.0",
|
|
89
|
-
"react-draggable": "^4.4.6",
|
|
90
|
-
"react-dropzone": "^14.2.3",
|
|
91
|
-
"react-hook-form": "^7.45.4",
|
|
92
|
-
"react-hot-toast": "^2.4.1",
|
|
93
|
-
"react-i18next": "^12.2.2",
|
|
94
|
-
"react-multi-date-picker": "^4.1.2",
|
|
95
|
-
"react-router-dom": "^7.7.0",
|
|
96
|
-
"react-virtualized-auto-sizer": "^1.0.20",
|
|
97
|
-
"react-window": "^1.8.9",
|
|
98
|
-
"react-window-infinite-loader": "^1.0.9",
|
|
99
|
-
"react18-input-otp": "^1.1.4",
|
|
100
|
-
"recharts": "^2.15.1"
|
|
101
|
-
},
|
|
102
|
-
"devDependencies": {
|
|
103
|
-
"@eslint/js": "^9.17.0",
|
|
104
|
-
"@testing-library/jest-dom": "^5.16.5",
|
|
105
|
-
"@types/lodash": "^4.17.15",
|
|
106
|
-
"@types/react": "^18.2.6",
|
|
107
|
-
"@types/react-dom": "^18.3.5",
|
|
108
|
-
"@types/react-virtualized-auto-sizer": "^1.0.8",
|
|
109
|
-
"@types/react-window": "^1.8.5",
|
|
110
|
-
"@types/react-window-infinite-loader": "^1.0.6",
|
|
111
|
-
"@vitejs/plugin-react": "^4.3.4",
|
|
112
|
-
"eslint": "^9.17.0",
|
|
113
|
-
"eslint-plugin-react-hooks": "^5.0.0",
|
|
114
|
-
"eslint-plugin-react-refresh": "^0.4.16",
|
|
115
|
-
"globals": "^15.14.0",
|
|
116
|
-
"husky": "^8.0.3",
|
|
117
|
-
"lint-staged": "^13.2.2",
|
|
118
|
-
"prettier": "^2.8.8",
|
|
119
|
-
"tsc-alias": "^1.8.16",
|
|
120
|
-
"typescript": "5.0.2",
|
|
121
|
-
"typescript-eslint": "^8.18.2",
|
|
122
|
-
"vite": "6.0.5",
|
|
123
|
-
"vite-tsconfig-paths": "^4.2.0"
|
|
124
|
-
},
|
|
125
|
-
"lint-staged": {
|
|
126
|
-
"src/**/*.{ts,tsx,json,js,jsx}": [
|
|
127
|
-
"yarn run prettier:fix",
|
|
128
|
-
"yarn run lint"
|
|
129
|
-
]
|
|
130
|
-
},
|
|
131
|
-
"publishConfig": {
|
|
132
|
-
"registry": "https://registry.npmjs.org/"
|
|
133
|
-
}
|
|
134
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@tap-payments/os-micro-frontend-shared",
|
|
3
|
+
"description": "Shared components and utilities for Tap Payments micro frontends",
|
|
4
|
+
"version": "0.0.291",
|
|
5
|
+
"testVersion": 0,
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "build/index.js",
|
|
8
|
+
"module": "build/index.js",
|
|
9
|
+
"types": "build/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./build/index.d.ts",
|
|
13
|
+
"import": "./build/index.js",
|
|
14
|
+
"require": "./build/index.js"
|
|
15
|
+
},
|
|
16
|
+
"./constants": {
|
|
17
|
+
"types": "./build/constants/index.d.ts",
|
|
18
|
+
"import": "./build/constants/index.js",
|
|
19
|
+
"require": "./build/constants/index.js"
|
|
20
|
+
},
|
|
21
|
+
"./components": {
|
|
22
|
+
"types": "./build/components/index.d.ts",
|
|
23
|
+
"import": "./build/components/index.js",
|
|
24
|
+
"require": "./build/components/index.js"
|
|
25
|
+
},
|
|
26
|
+
"./components/*": {
|
|
27
|
+
"types": "./build/components/*/index.d.ts",
|
|
28
|
+
"import": "./build/components/*/index.js",
|
|
29
|
+
"require": "./build/components/*/index.js"
|
|
30
|
+
},
|
|
31
|
+
"./hooks": {
|
|
32
|
+
"types": "./build/hooks/index.d.ts",
|
|
33
|
+
"import": "./build/hooks/index.js",
|
|
34
|
+
"require": "./build/hooks/index.js"
|
|
35
|
+
},
|
|
36
|
+
"./utils": {
|
|
37
|
+
"types": "./build/utils/index.d.ts",
|
|
38
|
+
"import": "./build/utils/index.js",
|
|
39
|
+
"require": "./build/utils/index.js"
|
|
40
|
+
},
|
|
41
|
+
"./theme": {
|
|
42
|
+
"types": "./build/theme/index.d.ts",
|
|
43
|
+
"import": "./build/theme/index.js",
|
|
44
|
+
"require": "./build/theme/index.js"
|
|
45
|
+
},
|
|
46
|
+
"./types": {
|
|
47
|
+
"types": "./build/types/index.d.ts",
|
|
48
|
+
"import": "./build/types/index.js",
|
|
49
|
+
"require": "./build/types/index.js"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"license": "MIT",
|
|
53
|
+
"author": {
|
|
54
|
+
"name": "Ahmed Sharkawy",
|
|
55
|
+
"email": "a.elsharkawy@tap.company"
|
|
56
|
+
},
|
|
57
|
+
"files": [
|
|
58
|
+
"build",
|
|
59
|
+
"readme.md"
|
|
60
|
+
],
|
|
61
|
+
"scripts": {
|
|
62
|
+
"ts:build": "rm -rf build && tsc -p tsconfig.npm.json && tsc-alias -p tsconfig.npm.json",
|
|
63
|
+
"push": "npm run ts:build && npm publish --access public",
|
|
64
|
+
"push:test": "node scripts/increment-test-version.cjs && npm run ts:build && npm publish --access public --tag test && node scripts/restore-version.cjs",
|
|
65
|
+
"dev": "vite",
|
|
66
|
+
"build": "tsc -b && vite build ",
|
|
67
|
+
"prettier": "prettier --list-different \"src/**/*.{md,mdx,ts,js,tsx,jsx,json}\"",
|
|
68
|
+
"prettier:fix": "prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md,css,json}\"",
|
|
69
|
+
"lint": "eslint . --color",
|
|
70
|
+
"lint:fix": "eslint src --fix --color",
|
|
71
|
+
"preview": "vite preview",
|
|
72
|
+
"prepare": "husky"
|
|
73
|
+
},
|
|
74
|
+
"dependencies": {
|
|
75
|
+
"@emotion/react": "^11.11.0",
|
|
76
|
+
"@emotion/styled": "^11.11.0",
|
|
77
|
+
"@hookform/resolvers": "^3.3.1",
|
|
78
|
+
"@mui/material": "^5.12.3",
|
|
79
|
+
"@uiw/react-json-view": "^2.0.0-alpha.16",
|
|
80
|
+
"axios": "^1.4.0",
|
|
81
|
+
"dayjs": "^1.11.8",
|
|
82
|
+
"framer-motion": "10.11.0",
|
|
83
|
+
"i18next": "^22.4.15",
|
|
84
|
+
"memoize-one": "^6.0.0",
|
|
85
|
+
"re-resizable": "^6.9.9",
|
|
86
|
+
"react": "^18.2.0",
|
|
87
|
+
"react-currency-input-field": "^3.6.11",
|
|
88
|
+
"react-dom": "^18.2.0",
|
|
89
|
+
"react-draggable": "^4.4.6",
|
|
90
|
+
"react-dropzone": "^14.2.3",
|
|
91
|
+
"react-hook-form": "^7.45.4",
|
|
92
|
+
"react-hot-toast": "^2.4.1",
|
|
93
|
+
"react-i18next": "^12.2.2",
|
|
94
|
+
"react-multi-date-picker": "^4.1.2",
|
|
95
|
+
"react-router-dom": "^7.7.0",
|
|
96
|
+
"react-virtualized-auto-sizer": "^1.0.20",
|
|
97
|
+
"react-window": "^1.8.9",
|
|
98
|
+
"react-window-infinite-loader": "^1.0.9",
|
|
99
|
+
"react18-input-otp": "^1.1.4",
|
|
100
|
+
"recharts": "^2.15.1"
|
|
101
|
+
},
|
|
102
|
+
"devDependencies": {
|
|
103
|
+
"@eslint/js": "^9.17.0",
|
|
104
|
+
"@testing-library/jest-dom": "^5.16.5",
|
|
105
|
+
"@types/lodash": "^4.17.15",
|
|
106
|
+
"@types/react": "^18.2.6",
|
|
107
|
+
"@types/react-dom": "^18.3.5",
|
|
108
|
+
"@types/react-virtualized-auto-sizer": "^1.0.8",
|
|
109
|
+
"@types/react-window": "^1.8.5",
|
|
110
|
+
"@types/react-window-infinite-loader": "^1.0.6",
|
|
111
|
+
"@vitejs/plugin-react": "^4.3.4",
|
|
112
|
+
"eslint": "^9.17.0",
|
|
113
|
+
"eslint-plugin-react-hooks": "^5.0.0",
|
|
114
|
+
"eslint-plugin-react-refresh": "^0.4.16",
|
|
115
|
+
"globals": "^15.14.0",
|
|
116
|
+
"husky": "^8.0.3",
|
|
117
|
+
"lint-staged": "^13.2.2",
|
|
118
|
+
"prettier": "^2.8.8",
|
|
119
|
+
"tsc-alias": "^1.8.16",
|
|
120
|
+
"typescript": "5.0.2",
|
|
121
|
+
"typescript-eslint": "^8.18.2",
|
|
122
|
+
"vite": "6.0.5",
|
|
123
|
+
"vite-tsconfig-paths": "^4.2.0"
|
|
124
|
+
},
|
|
125
|
+
"lint-staged": {
|
|
126
|
+
"src/**/*.{ts,tsx,json,js,jsx}": [
|
|
127
|
+
"yarn run prettier:fix",
|
|
128
|
+
"yarn run lint"
|
|
129
|
+
]
|
|
130
|
+
},
|
|
131
|
+
"publishConfig": {
|
|
132
|
+
"registry": "https://registry.npmjs.org/"
|
|
133
|
+
}
|
|
134
|
+
}
|