@spaced-out/ui-design-system 0.3.41 → 0.3.43
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/.cspell/custom-words.txt +1 -0
- package/.github/workflows/pages.yml +1 -1
- package/.github/workflows/publish_to_npm.yml +2 -12
- package/.github/workflows/pull_request_checks.yml +1 -11
- package/.storybook/SenseTheme.js +1 -1
- package/.storybook/main.js +16 -40
- package/.storybook/manager.js +2 -3
- package/.storybook/preview.js +22 -1
- package/.vscode/settings.json +2 -1
- package/CHANGELOG.md +32 -0
- package/CONTRIBUTING.md +19 -0
- package/dts-generator/package.json +1 -1
- package/lib/components/Chip/Chip.d.ts +5 -2
- package/lib/components/Chip/Chip.js +2 -2
- package/lib/components/Chip/Chip.js.flow +5 -2
- package/lib/components/DateRangePicker/Calendar.d.ts +1 -23
- package/lib/components/DateRangePicker/Calendar.js +1 -16
- package/lib/components/DateRangePicker/Calendar.js.flow +1 -20
- package/lib/components/DateRangePicker/DateRangeWrapper.d.ts +39 -3
- package/lib/components/DateRangePicker/DateRangeWrapper.js +20 -2
- package/lib/components/DateRangePicker/DateRangeWrapper.js.flow +39 -3
- package/lib/components/DateRangePicker/DateRangeWrapper.module.css +32 -1
- package/lib/components/EmptyState/EmptyImages/ChartEmptyImage.d.ts +2 -2
- package/lib/components/EmptyState/EmptyImages/ChartEmptyImage.js +2 -2
- package/lib/components/EmptyState/EmptyImages/ChartEmptyImage.js.flow +2 -2
- package/lib/components/FilterButtonOverlay/FilterButtonOverlay.d.ts +130 -0
- package/lib/components/FilterButtonOverlay/FilterButtonOverlay.js +90 -0
- package/lib/components/FilterButtonOverlay/FilterButtonOverlay.js.flow +135 -0
- package/lib/components/FilterButtonOverlay/FilterButtonOverlay.module.css +35 -0
- package/lib/components/FilterButtonOverlay/index.d.ts +1 -0
- package/lib/components/FilterButtonOverlay/index.js +16 -0
- package/lib/components/FilterButtonOverlay/index.js.flow +3 -0
- package/lib/components/Icon/ClickableIcon.d.ts +2 -1
- package/lib/components/Icon/ClickableIcon.js +3 -2
- package/lib/components/Icon/ClickableIcon.js.flow +2 -1
- package/lib/components/Icon/ClickableIcon.module.css +2 -2
- package/lib/components/Icon/Icon.docs.d.ts +15 -1
- package/lib/components/Icon/Icon.docs.js +15 -1
- package/lib/components/Icon/Icon.docs.js.flow +11 -1
- package/lib/components/InfinitePagination/InfinitePagination.d.ts +112 -0
- package/lib/components/InfinitePagination/InfinitePagination.js +84 -0
- package/lib/components/InfinitePagination/InfinitePagination.js.flow +122 -0
- package/lib/components/InfinitePagination/InfinitePagination.module.css +18 -0
- package/lib/components/InfinitePagination/index.d.ts +1 -0
- package/lib/components/InfinitePagination/index.js +16 -0
- package/lib/components/InfinitePagination/index.js.flow +3 -0
- package/lib/components/Modal/Modal.d.ts +9 -1
- package/lib/components/Modal/Modal.js +13 -5
- package/lib/components/Modal/Modal.js.flow +9 -1
- package/lib/components/Table/Table.docs.d.ts +1 -1
- package/lib/components/Table/Table.docs.js +1 -1
- package/lib/components/Table/Table.docs.js.flow +1 -1
- package/lib/components/TokenListInput/TokenValueChips.d.ts +2 -1
- package/lib/components/TokenListInput/TokenValueChips.js +3 -1
- package/lib/components/TokenListInput/TokenValueChips.js.flow +2 -1
- package/lib/components/index.d.ts +2 -0
- package/lib/components/index.js +22 -0
- package/lib/components/index.js.flow +2 -0
- package/lib/hooks/index.d.ts +2 -0
- package/lib/hooks/index.js +22 -0
- package/lib/hooks/index.js.flow +2 -0
- package/lib/hooks/useInfiniteScroll/index.d.ts +1 -0
- package/lib/hooks/useInfiniteScroll/index.js +16 -0
- package/lib/hooks/useInfiniteScroll/index.js.flow +3 -0
- package/lib/hooks/useInfiniteScroll/useInfiniteScroll.d.ts +77 -0
- package/lib/hooks/useInfiniteScroll/useInfiniteScroll.js +58 -0
- package/lib/hooks/useInfiniteScroll/useInfiniteScroll.js.flow +82 -0
- package/lib/hooks/useResizeObserver/index.d.ts +1 -0
- package/lib/hooks/useResizeObserver/index.js +16 -0
- package/lib/hooks/useResizeObserver/index.js.flow +3 -0
- package/lib/hooks/useResizeObserver/useResizeObserver.d.ts +22 -0
- package/lib/hooks/useResizeObserver/useResizeObserver.js +30 -0
- package/lib/hooks/useResizeObserver/useResizeObserver.js.flow +28 -0
- package/lib/utils/date-range-picker/date-range-picker.d.ts +22 -2
- package/lib/utils/date-range-picker/date-range-picker.js +19 -3
- package/lib/utils/date-range-picker/date-range-picker.js.flow +21 -2
- package/package.json +9 -16
package/lib/components/index.js
CHANGED
|
@@ -267,6 +267,17 @@ Object.keys(_FileUpload).forEach(function (key) {
|
|
|
267
267
|
}
|
|
268
268
|
});
|
|
269
269
|
});
|
|
270
|
+
var _FilterButtonOverlay = require("./FilterButtonOverlay");
|
|
271
|
+
Object.keys(_FilterButtonOverlay).forEach(function (key) {
|
|
272
|
+
if (key === "default" || key === "__esModule") return;
|
|
273
|
+
if (key in exports && exports[key] === _FilterButtonOverlay[key]) return;
|
|
274
|
+
Object.defineProperty(exports, key, {
|
|
275
|
+
enumerable: true,
|
|
276
|
+
get: function () {
|
|
277
|
+
return _FilterButtonOverlay[key];
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
});
|
|
270
281
|
var _FocusManager = require("./FocusManager");
|
|
271
282
|
Object.keys(_FocusManager).forEach(function (key) {
|
|
272
283
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -333,6 +344,17 @@ Object.keys(_InContextAlert).forEach(function (key) {
|
|
|
333
344
|
}
|
|
334
345
|
});
|
|
335
346
|
});
|
|
347
|
+
var _InfinitePagination = require("./InfinitePagination");
|
|
348
|
+
Object.keys(_InfinitePagination).forEach(function (key) {
|
|
349
|
+
if (key === "default" || key === "__esModule") return;
|
|
350
|
+
if (key in exports && exports[key] === _InfinitePagination[key]) return;
|
|
351
|
+
Object.defineProperty(exports, key, {
|
|
352
|
+
enumerable: true,
|
|
353
|
+
get: function () {
|
|
354
|
+
return _InfinitePagination[key];
|
|
355
|
+
}
|
|
356
|
+
});
|
|
357
|
+
});
|
|
336
358
|
var _InlineDropdown = require("./InlineDropdown");
|
|
337
359
|
Object.keys(_InlineDropdown).forEach(function (key) {
|
|
338
360
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -24,12 +24,14 @@ export * from './Dropdown';
|
|
|
24
24
|
export * from './EmptyState';
|
|
25
25
|
export * from './ErrorMessage';
|
|
26
26
|
export * from './FileUpload';
|
|
27
|
+
export * from './FilterButtonOverlay';
|
|
27
28
|
export * from './FocusManager';
|
|
28
29
|
export * from './FocusManagerWithArrowKeyNavigation';
|
|
29
30
|
export * from './FormTitleWrapper';
|
|
30
31
|
export * from './Grid';
|
|
31
32
|
export * from './Icon';
|
|
32
33
|
export * from './InContextAlert';
|
|
34
|
+
export * from './InfinitePagination';
|
|
33
35
|
export * from './InlineDropdown';
|
|
34
36
|
export * from './Input';
|
|
35
37
|
export * from './KPIBox';
|
package/lib/hooks/index.d.ts
CHANGED
|
@@ -3,11 +3,13 @@ export * from './useCopyToClipboard';
|
|
|
3
3
|
export * from './useDebounce';
|
|
4
4
|
export * from './useFileUpload';
|
|
5
5
|
export * from './useFilteredOptions';
|
|
6
|
+
export * from './useInfiniteScroll';
|
|
6
7
|
export * from './useInputState';
|
|
7
8
|
export * from './useLockedBody';
|
|
8
9
|
export * from './useModal';
|
|
9
10
|
export * from './useMountTransition';
|
|
10
11
|
export * from './usePagination';
|
|
12
|
+
export * from './useResizeObserver';
|
|
11
13
|
export * from './useToastPortal';
|
|
12
14
|
export * from './useToggle';
|
|
13
15
|
export * from './useWindowSize';
|
package/lib/hooks/index.js
CHANGED
|
@@ -58,6 +58,17 @@ Object.keys(_useFilteredOptions).forEach(function (key) {
|
|
|
58
58
|
}
|
|
59
59
|
});
|
|
60
60
|
});
|
|
61
|
+
var _useInfiniteScroll = require("./useInfiniteScroll");
|
|
62
|
+
Object.keys(_useInfiniteScroll).forEach(function (key) {
|
|
63
|
+
if (key === "default" || key === "__esModule") return;
|
|
64
|
+
if (key in exports && exports[key] === _useInfiniteScroll[key]) return;
|
|
65
|
+
Object.defineProperty(exports, key, {
|
|
66
|
+
enumerable: true,
|
|
67
|
+
get: function () {
|
|
68
|
+
return _useInfiniteScroll[key];
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
});
|
|
61
72
|
var _useInputState = require("./useInputState");
|
|
62
73
|
Object.keys(_useInputState).forEach(function (key) {
|
|
63
74
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -113,6 +124,17 @@ Object.keys(_usePagination).forEach(function (key) {
|
|
|
113
124
|
}
|
|
114
125
|
});
|
|
115
126
|
});
|
|
127
|
+
var _useResizeObserver = require("./useResizeObserver");
|
|
128
|
+
Object.keys(_useResizeObserver).forEach(function (key) {
|
|
129
|
+
if (key === "default" || key === "__esModule") return;
|
|
130
|
+
if (key in exports && exports[key] === _useResizeObserver[key]) return;
|
|
131
|
+
Object.defineProperty(exports, key, {
|
|
132
|
+
enumerable: true,
|
|
133
|
+
get: function () {
|
|
134
|
+
return _useResizeObserver[key];
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
});
|
|
116
138
|
var _useToastPortal = require("./useToastPortal");
|
|
117
139
|
Object.keys(_useToastPortal).forEach(function (key) {
|
|
118
140
|
if (key === "default" || key === "__esModule") return;
|
package/lib/hooks/index.js.flow
CHANGED
|
@@ -5,11 +5,13 @@ export * from './useCopyToClipboard';
|
|
|
5
5
|
export * from './useDebounce';
|
|
6
6
|
export * from './useFileUpload';
|
|
7
7
|
export * from './useFilteredOptions';
|
|
8
|
+
export * from './useInfiniteScroll';
|
|
8
9
|
export * from './useInputState';
|
|
9
10
|
export * from './useLockedBody';
|
|
10
11
|
export * from './useModal';
|
|
11
12
|
export * from './useMountTransition';
|
|
12
13
|
export * from './usePagination';
|
|
14
|
+
export * from './useResizeObserver';
|
|
13
15
|
export * from './useToastPortal';
|
|
14
16
|
export * from './useToggle';
|
|
15
17
|
export * from './useWindowSize';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useInfiniteScroll';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _useInfiniteScroll = require("./useInfiniteScroll");
|
|
7
|
+
Object.keys(_useInfiniteScroll).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _useInfiniteScroll[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _useInfiniteScroll[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
type InfiniteScrollOptions = {
|
|
3
|
+
itemSize: number | ((index: number) => number);
|
|
4
|
+
threshold: number;
|
|
5
|
+
itemsLength: number;
|
|
6
|
+
hasNextPage: boolean;
|
|
7
|
+
loadMoreItems: () => Promise<void>;
|
|
8
|
+
containerHeight: number;
|
|
9
|
+
isVariableSizeList?: boolean;
|
|
10
|
+
};
|
|
11
|
+
export function useInfiniteScroll({
|
|
12
|
+
itemSize,
|
|
13
|
+
threshold,
|
|
14
|
+
itemsLength,
|
|
15
|
+
hasNextPage,
|
|
16
|
+
loadMoreItems,
|
|
17
|
+
containerHeight,
|
|
18
|
+
isVariableSizeList,
|
|
19
|
+
}: InfiniteScrollOptions): (scrollData: {
|
|
20
|
+
scrollOffset: number;
|
|
21
|
+
scrollDirection: 'forward' | 'backward';
|
|
22
|
+
}) => void {
|
|
23
|
+
const [isLoading, setIsLoading] = React.useState(false);
|
|
24
|
+
const loadingRef = React.useRef(false);
|
|
25
|
+
const handleLoadMore = React.useCallback(async () => {
|
|
26
|
+
if (!hasNextPage || isLoading || loadingRef.current) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
loadingRef.current = true;
|
|
31
|
+
setIsLoading(true);
|
|
32
|
+
|
|
33
|
+
try {
|
|
34
|
+
await loadMoreItems();
|
|
35
|
+
} catch (err) {
|
|
36
|
+
console.error('Error loading more items:', err);
|
|
37
|
+
} finally {
|
|
38
|
+
loadingRef.current = false;
|
|
39
|
+
setIsLoading(false);
|
|
40
|
+
}
|
|
41
|
+
}, [hasNextPage, isLoading, loadMoreItems]);
|
|
42
|
+
return React.useCallback(
|
|
43
|
+
({scrollOffset, scrollDirection}) => {
|
|
44
|
+
if (scrollDirection !== 'forward') {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
let totalSize = 0;
|
|
49
|
+
|
|
50
|
+
if (isVariableSizeList && typeof itemSize === 'function') {
|
|
51
|
+
for (let i = 0; i < itemsLength; i++) {
|
|
52
|
+
totalSize += itemSize(i);
|
|
53
|
+
}
|
|
54
|
+
} else if (typeof itemSize === 'number') {
|
|
55
|
+
totalSize = itemsLength * itemSize;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (
|
|
59
|
+
scrollOffset > totalSize - containerHeight - threshold &&
|
|
60
|
+
hasNextPage &&
|
|
61
|
+
!isLoading
|
|
62
|
+
) {
|
|
63
|
+
handleLoadMore();
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
[
|
|
67
|
+
itemSize,
|
|
68
|
+
threshold,
|
|
69
|
+
isLoading,
|
|
70
|
+
itemsLength,
|
|
71
|
+
hasNextPage,
|
|
72
|
+
handleLoadMore,
|
|
73
|
+
containerHeight,
|
|
74
|
+
isVariableSizeList,
|
|
75
|
+
],
|
|
76
|
+
);
|
|
77
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useInfiniteScroll = useInfiniteScroll;
|
|
7
|
+
var React = _interopRequireWildcard(require("react"));
|
|
8
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
9
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
10
|
+
|
|
11
|
+
function useInfiniteScroll(_ref) {
|
|
12
|
+
let {
|
|
13
|
+
itemSize,
|
|
14
|
+
threshold,
|
|
15
|
+
itemsLength,
|
|
16
|
+
hasNextPage,
|
|
17
|
+
loadMoreItems,
|
|
18
|
+
containerHeight,
|
|
19
|
+
isVariableSizeList
|
|
20
|
+
} = _ref;
|
|
21
|
+
const [isLoading, setIsLoading] = React.useState(false);
|
|
22
|
+
const loadingRef = React.useRef(false);
|
|
23
|
+
const handleLoadMore = React.useCallback(async () => {
|
|
24
|
+
if (!hasNextPage || isLoading || loadingRef.current) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
loadingRef.current = true;
|
|
28
|
+
setIsLoading(true);
|
|
29
|
+
try {
|
|
30
|
+
await loadMoreItems();
|
|
31
|
+
} catch (err) {
|
|
32
|
+
console.error('Error loading more items:', err);
|
|
33
|
+
} finally {
|
|
34
|
+
loadingRef.current = false;
|
|
35
|
+
setIsLoading(false);
|
|
36
|
+
}
|
|
37
|
+
}, [hasNextPage, isLoading, loadMoreItems]);
|
|
38
|
+
return React.useCallback(_ref2 => {
|
|
39
|
+
let {
|
|
40
|
+
scrollOffset,
|
|
41
|
+
scrollDirection
|
|
42
|
+
} = _ref2;
|
|
43
|
+
if (scrollDirection !== 'forward') {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
let totalSize = 0;
|
|
47
|
+
if (isVariableSizeList && typeof itemSize === 'function') {
|
|
48
|
+
for (let i = 0; i < itemsLength; i++) {
|
|
49
|
+
totalSize += itemSize(i);
|
|
50
|
+
}
|
|
51
|
+
} else if (typeof itemSize === 'number') {
|
|
52
|
+
totalSize = itemsLength * itemSize;
|
|
53
|
+
}
|
|
54
|
+
if (scrollOffset > totalSize - containerHeight - threshold && hasNextPage && !isLoading) {
|
|
55
|
+
handleLoadMore();
|
|
56
|
+
}
|
|
57
|
+
}, [itemSize, threshold, isLoading, itemsLength, hasNextPage, handleLoadMore, containerHeight, isVariableSizeList]);
|
|
58
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// @flow strict
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
type InfiniteScrollOptions = {
|
|
6
|
+
itemSize: number | ((index: number) => number),
|
|
7
|
+
threshold: number,
|
|
8
|
+
itemsLength: number,
|
|
9
|
+
hasNextPage: boolean,
|
|
10
|
+
loadMoreItems: () => Promise<void>,
|
|
11
|
+
containerHeight: number,
|
|
12
|
+
isVariableSizeList?: boolean,
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export function useInfiniteScroll({
|
|
16
|
+
itemSize,
|
|
17
|
+
threshold,
|
|
18
|
+
itemsLength,
|
|
19
|
+
hasNextPage,
|
|
20
|
+
loadMoreItems,
|
|
21
|
+
containerHeight,
|
|
22
|
+
isVariableSizeList,
|
|
23
|
+
}: InfiniteScrollOptions): (scrollData: {
|
|
24
|
+
scrollOffset: number,
|
|
25
|
+
scrollDirection: 'forward' | 'backward',
|
|
26
|
+
}) => void {
|
|
27
|
+
const [isLoading, setIsLoading] = React.useState(false);
|
|
28
|
+
const loadingRef = React.useRef(false);
|
|
29
|
+
|
|
30
|
+
const handleLoadMore = React.useCallback(async () => {
|
|
31
|
+
if (!hasNextPage || isLoading || loadingRef.current) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
loadingRef.current = true;
|
|
36
|
+
setIsLoading(true);
|
|
37
|
+
|
|
38
|
+
try {
|
|
39
|
+
await loadMoreItems();
|
|
40
|
+
} catch (err) {
|
|
41
|
+
console.error('Error loading more items:', err);
|
|
42
|
+
} finally {
|
|
43
|
+
loadingRef.current = false;
|
|
44
|
+
setIsLoading(false);
|
|
45
|
+
}
|
|
46
|
+
}, [hasNextPage, isLoading, loadMoreItems]);
|
|
47
|
+
|
|
48
|
+
return React.useCallback(
|
|
49
|
+
({scrollOffset, scrollDirection}) => {
|
|
50
|
+
if (scrollDirection !== 'forward') {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
let totalSize = 0;
|
|
55
|
+
if (isVariableSizeList && typeof itemSize === 'function') {
|
|
56
|
+
for (let i = 0; i < itemsLength; i++) {
|
|
57
|
+
totalSize += itemSize(i);
|
|
58
|
+
}
|
|
59
|
+
} else if (typeof itemSize === 'number') {
|
|
60
|
+
totalSize = itemsLength * itemSize;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (
|
|
64
|
+
scrollOffset > totalSize - containerHeight - threshold &&
|
|
65
|
+
hasNextPage &&
|
|
66
|
+
!isLoading
|
|
67
|
+
) {
|
|
68
|
+
handleLoadMore();
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
[
|
|
72
|
+
itemSize,
|
|
73
|
+
threshold,
|
|
74
|
+
isLoading,
|
|
75
|
+
itemsLength,
|
|
76
|
+
hasNextPage,
|
|
77
|
+
handleLoadMore,
|
|
78
|
+
containerHeight,
|
|
79
|
+
isVariableSizeList,
|
|
80
|
+
],
|
|
81
|
+
);
|
|
82
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useResizeObserver';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _useResizeObserver = require("./useResizeObserver");
|
|
7
|
+
Object.keys(_useResizeObserver).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _useResizeObserver[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _useResizeObserver[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export function useResizeObserver(): [React.Ref<'div'>, number] {
|
|
3
|
+
const ref = React.useRef(null);
|
|
4
|
+
const [height, setHeight] = React.useState(0);
|
|
5
|
+
React.useEffect(() => {
|
|
6
|
+
const node = ref.current;
|
|
7
|
+
|
|
8
|
+
if (!node) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const resizeObserver = new ResizeObserver(([entry]) => {
|
|
13
|
+
setHeight(entry.contentRect.height);
|
|
14
|
+
});
|
|
15
|
+
resizeObserver.observe(node);
|
|
16
|
+
setHeight(node.getBoundingClientRect().height);
|
|
17
|
+
return () => {
|
|
18
|
+
resizeObserver.disconnect();
|
|
19
|
+
};
|
|
20
|
+
}, []);
|
|
21
|
+
return [ref, height];
|
|
22
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useResizeObserver = useResizeObserver;
|
|
7
|
+
var React = _interopRequireWildcard(require("react"));
|
|
8
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
9
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
10
|
+
|
|
11
|
+
function useResizeObserver() {
|
|
12
|
+
const ref = React.useRef(null);
|
|
13
|
+
const [height, setHeight] = React.useState(0);
|
|
14
|
+
React.useEffect(() => {
|
|
15
|
+
const node = ref.current;
|
|
16
|
+
if (!node) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const resizeObserver = new ResizeObserver(_ref => {
|
|
20
|
+
let [entry] = _ref;
|
|
21
|
+
setHeight(entry.contentRect.height);
|
|
22
|
+
});
|
|
23
|
+
resizeObserver.observe(node);
|
|
24
|
+
setHeight(node.getBoundingClientRect().height);
|
|
25
|
+
return () => {
|
|
26
|
+
resizeObserver.disconnect();
|
|
27
|
+
};
|
|
28
|
+
}, []);
|
|
29
|
+
return [ref, height];
|
|
30
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// @flow strict
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
export function useResizeObserver(): [React.Ref<'div'>, number] {
|
|
6
|
+
const ref = React.useRef(null);
|
|
7
|
+
const [height, setHeight] = React.useState(0);
|
|
8
|
+
|
|
9
|
+
React.useEffect(() => {
|
|
10
|
+
const node = ref.current;
|
|
11
|
+
if (!node) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const resizeObserver = new ResizeObserver(([entry]) => {
|
|
16
|
+
setHeight(entry.contentRect.height);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
resizeObserver.observe(node);
|
|
20
|
+
setHeight(node.getBoundingClientRect().height);
|
|
21
|
+
|
|
22
|
+
return () => {
|
|
23
|
+
resizeObserver.disconnect();
|
|
24
|
+
};
|
|
25
|
+
}, []);
|
|
26
|
+
|
|
27
|
+
return [ref, height];
|
|
28
|
+
}
|
|
@@ -116,8 +116,10 @@ export const wrangleMoment = (date?: string | Date): Date => {
|
|
|
116
116
|
|
|
117
117
|
return date instanceof moment ? date.toDate() : parseISO(date);
|
|
118
118
|
};
|
|
119
|
-
export const formatIsoDate = (
|
|
120
|
-
|
|
119
|
+
export const formatIsoDate = (
|
|
120
|
+
date?: string | Date,
|
|
121
|
+
format: string = 'YYYY-MM-DD',
|
|
122
|
+
): string => moment.utc(date).format(format);
|
|
121
123
|
export const isStartOfRange = ({startDate}: DateRange, date: string): boolean =>
|
|
122
124
|
Boolean(startDate) && moment.utc(date).isSame(moment.utc(startDate), 'd');
|
|
123
125
|
export const isEndOfRange = ({endDate}: DateRange, date: string): boolean =>
|
|
@@ -389,3 +391,21 @@ export const isBetween = (
|
|
|
389
391
|
// If the date results in a date that exists in the calendar
|
|
390
392
|
export const isValid = (date?: string | null | undefined): boolean =>
|
|
391
393
|
moment.utc(date).isValid();
|
|
394
|
+
export const getFormattedDate = (
|
|
395
|
+
marker: string,
|
|
396
|
+
dateRange: DateRange,
|
|
397
|
+
): string => {
|
|
398
|
+
const {startDate, endDate} = dateRange;
|
|
399
|
+
|
|
400
|
+
switch (marker) {
|
|
401
|
+
case MARKERS.DATE_RANGE_START:
|
|
402
|
+
return startDate
|
|
403
|
+
? moment.utc(startDate).format('MMM DD, YYYY')
|
|
404
|
+
: 'MMM DD, YYYY';
|
|
405
|
+
|
|
406
|
+
default:
|
|
407
|
+
return endDate
|
|
408
|
+
? moment.utc(endDate).format('MMM DD, YYYY')
|
|
409
|
+
: 'MMM DD, YYYY';
|
|
410
|
+
}
|
|
411
|
+
};
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.wrangleMoment = exports.isValid = exports.isStartOfRange = exports.isStartDateEndDateSame = exports.isSameOrBefore = exports.isSameOrAfter = exports.isSame = exports.isEndOfRange = exports.isBetween = exports.isBefore = exports.isAfter = exports.inDateRange = exports.getValidDates = exports.getTimezones = exports.getSubtractedDate = exports.getMonthEndDate = exports.getDaysInMonth = exports.getAvailableMonths = exports.getAddedDate = exports.generateAvailableYears = exports.formatIsoDate = exports.checkRangeValidity = exports.WEEKDAYS = exports.NAVIGATION_ACTION = exports.MONTHS = exports.MARKERS = exports.DATE_RANGE_PICKER_ERRORS = void 0;
|
|
6
|
+
exports.wrangleMoment = exports.isValid = exports.isStartOfRange = exports.isStartDateEndDateSame = exports.isSameOrBefore = exports.isSameOrAfter = exports.isSame = exports.isEndOfRange = exports.isBetween = exports.isBefore = exports.isAfter = exports.inDateRange = exports.getValidDates = exports.getTimezones = exports.getSubtractedDate = exports.getMonthEndDate = exports.getFormattedDate = exports.getDaysInMonth = exports.getAvailableMonths = exports.getAddedDate = exports.generateAvailableYears = exports.formatIsoDate = exports.checkRangeValidity = exports.WEEKDAYS = exports.NAVIGATION_ACTION = exports.MONTHS = exports.MARKERS = exports.DATE_RANGE_PICKER_ERRORS = void 0;
|
|
7
7
|
var _parseISO = _interopRequireDefault(require("date-fns/parseISO"));
|
|
8
8
|
var _invariant = _interopRequireDefault(require("invariant"));
|
|
9
9
|
var _lodash = require("lodash");
|
|
@@ -104,7 +104,10 @@ const wrangleMoment = date => {
|
|
|
104
104
|
return date instanceof _moment.default ? date.toDate() : (0, _parseISO.default)(date);
|
|
105
105
|
};
|
|
106
106
|
exports.wrangleMoment = wrangleMoment;
|
|
107
|
-
const formatIsoDate =
|
|
107
|
+
const formatIsoDate = function (date) {
|
|
108
|
+
let format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'YYYY-MM-DD';
|
|
109
|
+
return _moment.default.utc(date).format(format);
|
|
110
|
+
};
|
|
108
111
|
exports.formatIsoDate = formatIsoDate;
|
|
109
112
|
const isStartOfRange = (_ref, date) => {
|
|
110
113
|
let {
|
|
@@ -323,4 +326,17 @@ const isBetween = (date, startRange, endRange) => _moment.default.utc(date).isBe
|
|
|
323
326
|
// If the date results in a date that exists in the calendar
|
|
324
327
|
exports.isBetween = isBetween;
|
|
325
328
|
const isValid = date => _moment.default.utc(date).isValid();
|
|
326
|
-
exports.isValid = isValid;
|
|
329
|
+
exports.isValid = isValid;
|
|
330
|
+
const getFormattedDate = (marker, dateRange) => {
|
|
331
|
+
const {
|
|
332
|
+
startDate,
|
|
333
|
+
endDate
|
|
334
|
+
} = dateRange;
|
|
335
|
+
switch (marker) {
|
|
336
|
+
case MARKERS.DATE_RANGE_START:
|
|
337
|
+
return startDate ? _moment.default.utc(startDate).format('MMM DD, YYYY') : 'MMM DD, YYYY';
|
|
338
|
+
default:
|
|
339
|
+
return endDate ? _moment.default.utc(endDate).format('MMM DD, YYYY') : 'MMM DD, YYYY';
|
|
340
|
+
}
|
|
341
|
+
};
|
|
342
|
+
exports.getFormattedDate = getFormattedDate;
|
|
@@ -88,8 +88,10 @@ export const wrangleMoment = (date?: string | Date): Date => {
|
|
|
88
88
|
return date instanceof moment ? date.toDate() : parseISO(date);
|
|
89
89
|
};
|
|
90
90
|
|
|
91
|
-
export const formatIsoDate = (
|
|
92
|
-
|
|
91
|
+
export const formatIsoDate = (
|
|
92
|
+
date?: string | Date,
|
|
93
|
+
format?: string = 'YYYY-MM-DD',
|
|
94
|
+
): string => moment.utc(date).format(format);
|
|
93
95
|
|
|
94
96
|
export const isStartOfRange = ({startDate}: DateRange, date: string): boolean =>
|
|
95
97
|
Boolean(startDate) && moment.utc(date).isSame(moment.utc(startDate), 'd');
|
|
@@ -370,3 +372,20 @@ export const isBetween = (
|
|
|
370
372
|
|
|
371
373
|
// If the date results in a date that exists in the calendar
|
|
372
374
|
export const isValid = (date?: ?string): boolean => moment.utc(date).isValid();
|
|
375
|
+
|
|
376
|
+
export const getFormattedDate = (
|
|
377
|
+
marker: string,
|
|
378
|
+
dateRange: DateRange,
|
|
379
|
+
): string => {
|
|
380
|
+
const {startDate, endDate} = dateRange;
|
|
381
|
+
switch (marker) {
|
|
382
|
+
case MARKERS.DATE_RANGE_START:
|
|
383
|
+
return startDate
|
|
384
|
+
? moment.utc(startDate).format('MMM DD, YYYY')
|
|
385
|
+
: 'MMM DD, YYYY';
|
|
386
|
+
default:
|
|
387
|
+
return endDate
|
|
388
|
+
? moment.utc(endDate).format('MMM DD, YYYY')
|
|
389
|
+
: 'MMM DD, YYYY';
|
|
390
|
+
}
|
|
391
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spaced-out/ui-design-system",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.43",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"description": "Sense UI components library",
|
|
6
6
|
"author": {
|
|
@@ -64,18 +64,11 @@
|
|
|
64
64
|
"@babel/preset-react": "^7.18.6",
|
|
65
65
|
"@commitlint/cli": "^17.1.2",
|
|
66
66
|
"@commitlint/config-conventional": "^17.1.0",
|
|
67
|
-
"@storybook/addon-a11y": "^
|
|
68
|
-
"@storybook/addon-
|
|
69
|
-
"@storybook/addon-
|
|
70
|
-
"@storybook/
|
|
71
|
-
"@storybook/
|
|
72
|
-
"@storybook/addons": "^7.6.17",
|
|
73
|
-
"@storybook/blocks": "^8.5.2",
|
|
74
|
-
"@storybook/react": "^8.5.2",
|
|
75
|
-
"@storybook/react-webpack5": "^8.5.2",
|
|
76
|
-
"@storybook/test-runner": "^0.21.0",
|
|
77
|
-
"@storybook/testing-react": "^2.0.1",
|
|
78
|
-
"@storybook/theming": "^8.5.2",
|
|
67
|
+
"@storybook/addon-a11y": "^9.1.0-alpha.3",
|
|
68
|
+
"@storybook/addon-docs": "^9.1.0-alpha.3",
|
|
69
|
+
"@storybook/addon-webpack5-compiler-babel": "^3.0.6",
|
|
70
|
+
"@storybook/react-webpack5": "^9.1.0-alpha.3",
|
|
71
|
+
"@storybook/test-runner": "^0.22.0",
|
|
79
72
|
"@testing-library/react": "^11.2.7",
|
|
80
73
|
"all-contributors-cli": "^6.20.0",
|
|
81
74
|
"babel-eslint": "^10.1.0",
|
|
@@ -93,7 +86,7 @@
|
|
|
93
86
|
"eslint-plugin-react": "^7.30.1",
|
|
94
87
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
95
88
|
"eslint-plugin-simple-import-sort": "^8.0.0",
|
|
96
|
-
"eslint-plugin-storybook": "^0.
|
|
89
|
+
"eslint-plugin-storybook": "^9.1.0-alpha.3",
|
|
97
90
|
"eslint-plugin-unused-imports": "^2.0.0",
|
|
98
91
|
"flow-bin": "^0.184.0",
|
|
99
92
|
"gulp": "^4.0.2",
|
|
@@ -111,7 +104,7 @@
|
|
|
111
104
|
"rimraf": "^3.0.2",
|
|
112
105
|
"simple-git": "^3.12.0",
|
|
113
106
|
"standard-version": "^9.5.0",
|
|
114
|
-
"storybook": "^
|
|
107
|
+
"storybook": "^9.1.0-alpha.3",
|
|
115
108
|
"storybook-css-modules": "^1.0.8",
|
|
116
109
|
"storybook-vscode-component": "^1.0.9",
|
|
117
110
|
"style-dictionary": "^3.7.1"
|
|
@@ -131,7 +124,7 @@
|
|
|
131
124
|
}
|
|
132
125
|
},
|
|
133
126
|
"volta": {
|
|
134
|
-
"node": "
|
|
127
|
+
"node": "20.19.2",
|
|
135
128
|
"yarn": "1.22.19"
|
|
136
129
|
}
|
|
137
130
|
}
|