@aivenio/aquarium 1.52.2 → 1.53.0
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/_variables.scss +5 -1
- package/dist/atoms.cjs +36 -6
- package/dist/atoms.mjs +36 -6
- package/dist/charts.cjs +75 -50
- package/dist/charts.mjs +60 -37
- package/dist/src/atoms/Card/Card.d.ts +4 -0
- package/dist/src/atoms/Card/Card.js +9 -4
- package/dist/src/atoms/DropdownMenu/DropdownMenu.d.ts +4 -3
- package/dist/src/atoms/DropdownMenu/DropdownMenu.js +3 -3
- package/dist/src/charts/Label/Label.d.ts +7 -0
- package/dist/src/charts/Label/Label.js +10 -0
- package/dist/src/charts/index.d.ts +1 -0
- package/dist/src/charts/index.js +2 -1
- package/dist/src/molecules/Box/Box.d.ts +4 -1
- package/dist/src/molecules/Box/Box.js +3 -2
- package/dist/src/molecules/Card/Card.d.ts +2 -0
- package/dist/src/molecules/Card/Card.js +37 -6
- package/dist/src/molecules/Card/Compact.js +34 -6
- package/dist/src/molecules/Card/Group.d.ts +29 -0
- package/dist/src/molecules/Card/Group.js +12 -0
- package/dist/src/molecules/Card/types.d.ts +28 -1
- package/dist/src/molecules/Carousel/Carousel.js +2 -2
- package/dist/src/molecules/DataList/DataList.d.ts +4 -4
- package/dist/src/molecules/DataList/DataList.js +20 -8
- package/dist/src/molecules/DataTable/DataTable.d.ts +4 -3
- package/dist/src/molecules/DataTable/DataTable.js +7 -7
- package/dist/src/molecules/DropdownMenu/DropdownMenu.d.ts +10 -2
- package/dist/src/molecules/DropdownMenu/DropdownMenu.js +5 -5
- package/dist/src/molecules/List/List.d.ts +29 -8
- package/dist/src/molecules/List/List.js +36 -5
- package/dist/src/molecules/List/useStaticInfiniteList.d.ts +23 -0
- package/dist/src/molecules/List/useStaticInfiniteList.js +24 -0
- package/dist/src/molecules/Section/Section.js +7 -4
- package/dist/src/molecules/Template/Template.d.ts +2 -8
- package/dist/src/molecules/Template/Template.js +16 -9
- package/dist/src/molecules/index.d.ts +1 -0
- package/dist/src/molecules/index.js +2 -1
- package/dist/src/utils/mocks/mockIntersectionObserver.js +2 -1
- package/dist/src/utils/setupTests.js +4 -1
- package/dist/src/utils/table/types.d.ts +2 -2
- package/dist/src/utils/table/types.js +23 -6
- package/dist/src/utils/useInView.d.ts +17 -0
- package/dist/src/utils/useInView.js +35 -0
- package/dist/styles.css +74 -12
- package/dist/system.cjs +1539 -1252
- package/dist/system.mjs +1334 -1048
- package/dist/tailwind.config.js +5 -1
- package/dist/tsconfig.module.tsbuildinfo +1 -1
- package/dist/types/tailwindGenerated.d.ts +1 -1
- package/dist/types/utils.d.ts +3 -0
- package/package.json +2 -1
@@ -1,9 +1,35 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import { type PaginationProps } from '../../../src/molecules/Pagination/Pagination';
|
3
3
|
import { type PaginationOptions } from '../../../src/molecules/Pagination/usePagination';
|
4
|
+
import { type AllOrNone, type Either } from '../../../types/utils';
|
4
5
|
declare type Item = unknown;
|
5
|
-
export declare type ListPaginationProps =
|
6
|
-
|
6
|
+
export declare type ListPaginationProps = {
|
7
|
+
/**
|
8
|
+
* Optional pagination props for the data table. Use boolean `true` to enable pagination with default settings and use
|
9
|
+
* object to pass in custom settings for pagination such as page size.
|
10
|
+
*/
|
11
|
+
pagination?: true | (PaginationOptions & Partial<Pick<PaginationProps, 'currentPage' | 'onPageChange' | 'onPageSizeChange' | 'pageSize' | 'pageSizes'>>);
|
12
|
+
};
|
13
|
+
export declare type InfiniteListProps = AllOrNone<IntersectionObserverInit & {
|
14
|
+
/**
|
15
|
+
* When `next()` callback is provided, the list will be rendered as an infinite list. When the user scrolls to the bottom of the list, the `next()` callback will be called if `hasMore` is `true` and `isLoading` is `false`.
|
16
|
+
* @returns
|
17
|
+
*/
|
18
|
+
next: () => void;
|
19
|
+
/**
|
20
|
+
* Indicates whether there are more items to be loaded.
|
21
|
+
*/
|
22
|
+
hasMore: boolean;
|
23
|
+
/**
|
24
|
+
* Indicates whether the list is currently waiting for more items to be loaded.
|
25
|
+
*/
|
26
|
+
isLoading: boolean;
|
27
|
+
/**
|
28
|
+
* Optional loading indicator that will be displayed at the bottom of the list when `isLoading` is `true`.
|
29
|
+
*/
|
30
|
+
loadingIndicator?: React.ReactNode;
|
31
|
+
}>;
|
32
|
+
export declare type ListProps<I extends Item> = Either<InfiniteListProps, ListPaginationProps> & {
|
7
33
|
/**
|
8
34
|
* Collection of items you want to render
|
9
35
|
*/
|
@@ -22,11 +48,6 @@ export declare type ListProps<I extends Item> = {
|
|
22
48
|
* @default React.Fragment
|
23
49
|
*/
|
24
50
|
paginationContainer?: React.ElementType;
|
25
|
-
/**
|
26
|
-
* Optional pagination props for the data table. Use boolean `true` to enable pagination with default settings and use
|
27
|
-
* object to pass in custom settings for pagination such as page size.
|
28
|
-
*/
|
29
|
-
pagination?: ListPaginationProps | true;
|
30
51
|
};
|
31
|
-
export declare const List: <I extends unknown>({ items, renderItem, container, paginationContainer, pagination, }: ListProps<I>) => React.JSX.Element;
|
52
|
+
export declare const List: <I extends unknown>({ items, renderItem, container, paginationContainer, pagination, loadingIndicator, hasMore, isLoading, next, ...props }: ListProps<I>) => React.JSX.Element;
|
32
53
|
export {};
|
@@ -1,16 +1,47 @@
|
|
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
|
+
};
|
1
12
|
import React from 'react';
|
2
13
|
import isObject from 'lodash/isObject';
|
14
|
+
import isString from 'lodash/isString';
|
15
|
+
import { Icon } from '../../../src/molecules/Icon/Icon';
|
3
16
|
import { Pagination } from '../../../src/molecules/Pagination/Pagination';
|
4
17
|
import { usePagination } from '../../../src/molecules/Pagination/usePagination';
|
5
|
-
|
18
|
+
import { Typography } from '../../../src/molecules/Typography/Typography';
|
19
|
+
import { tw } from '../../../src/utils/tailwind';
|
20
|
+
import { useInView } from '../../../src/utils/useInView';
|
21
|
+
import loading from '../../../src/icons/loading';
|
22
|
+
export const List = (_a) => {
|
23
|
+
var { items, renderItem, container = React.Fragment, paginationContainer = React.Fragment, pagination, loadingIndicator = 'Loading more items', hasMore, isLoading, next } = _a, props = __rest(_a, ["items", "renderItem", "container", "paginationContainer", "pagination", "loadingIndicator", "hasMore", "isLoading", "next"]);
|
6
24
|
const Component = container;
|
7
25
|
const PaginationComponent = paginationContainer;
|
8
|
-
const paginationProps = isObject(pagination) ? pagination :
|
26
|
+
const paginationProps = isObject(pagination) ? pagination : undefined;
|
27
|
+
const onChange = React.useCallback((inView) => {
|
28
|
+
if (inView && hasMore && !isLoading) {
|
29
|
+
next();
|
30
|
+
}
|
31
|
+
}, [hasMore, isLoading, next]);
|
32
|
+
const isInfinite = !!next;
|
33
|
+
const [ref] = useInView(Object.assign({ skip: !isInfinite, rootMargin: '200px', onChange }, props));
|
9
34
|
const [paginatedItems, paginationState] = usePagination(items, paginationProps);
|
10
35
|
const listItems = pagination ? paginatedItems : items;
|
36
|
+
// We'll render pagination container when pagination or infinite scrolling is enabled.
|
37
|
+
const showLoader = isInfinite && hasMore;
|
38
|
+
const showPagination = pagination || showLoader;
|
11
39
|
return (React.createElement(React.Fragment, null,
|
12
40
|
React.createElement(Component, null, listItems.map(renderItem)),
|
13
|
-
|
14
|
-
React.createElement(
|
41
|
+
showPagination && (React.createElement(PaginationComponent, null,
|
42
|
+
showLoader && (React.createElement("div", { ref: ref, "aria-hidden": !isLoading, "aria-busy": isLoading, "aria-label": isString(loadingIndicator) ? loadingIndicator : undefined, className: tw('flex gap-4 py-3 justify-center items-center transition-opacity duration-200', isLoading ? 'opacity-100' : 'opacity-0') },
|
43
|
+
React.createElement(Icon, { width: 22, icon: loading, className: tw('text-grey-50') }),
|
44
|
+
React.createElement(Typography.Small, { color: "grey-70" }, loadingIndicator))),
|
45
|
+
pagination && React.createElement(Pagination, Object.assign({}, paginationState, paginationProps))))));
|
15
46
|
};
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tb2xlY3VsZXMvTGlzdC9MaXN0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLFFBQVEsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLFFBQVEsTUFBTSxpQkFBaUIsQ0FBQztBQUV2QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBd0IsTUFBTSxxQ0FBcUMsQ0FBQztBQUN2RixPQUFPLEVBQTBCLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVqRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBMEIsTUFBTSxxQkFBcUIsQ0FBQztBQUd4RSxPQUFPLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQztBQWdFeEMsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQWlCLEVBV3RCLEVBQXFCLEVBQUU7UUFYRCxFQUNuQyxLQUFLLEVBQ0wsVUFBVSxFQUNWLFNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUMxQixtQkFBbUIsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUNwQyxVQUFVLEVBQ1YsZ0JBQWdCLEdBQUcsb0JBQW9CLEVBQ3ZDLE9BQU8sRUFDUCxTQUFTLEVBQ1QsSUFBSSxPQUVTLEVBRFYsS0FBSyxjQVYyQiw2SEFXcEMsQ0FEUztJQUVSLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM1QixNQUFNLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDO0lBQ2hELE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFdEUsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FDaEMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUNULElBQUksTUFBTSxJQUFJLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQyxJQUFJLEVBQUUsQ0FBQztTQUNSO0lBQ0gsQ0FBQyxFQUNELENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FDM0IsQ0FBQztJQUVGLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDMUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsaUJBQ3JCLElBQUksRUFBRSxDQUFDLFVBQVUsRUFDakIsVUFBVSxFQUFFLE9BQU8sRUFDbkIsUUFBUSxJQUNMLEtBQUssRUFDUixDQUFDO0lBRUgsTUFBTSxDQUFDLGNBQWMsRUFBRSxlQUFlLENBQUMsR0FBRyxhQUFhLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ2hGLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFFdEQsc0ZBQXNGO0lBQ3RGLE1BQU0sVUFBVSxHQUFHLFVBQVUsSUFBSSxPQUFPLENBQUM7SUFDekMsTUFBTSxjQUFjLEdBQUcsVUFBVSxJQUFJLFVBQVUsQ0FBQztJQUVoRCxPQUFPLENBQ0w7UUFDRSxvQkFBQyxTQUFTLFFBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBYTtRQUNqRCxjQUFjLElBQUksQ0FDakIsb0JBQUMsbUJBQW1CO1lBQ2pCLFVBQVUsSUFBSSxDQUNiLDZCQUNFLEdBQUcsRUFBRSxHQUFHLGlCQUNLLENBQUMsU0FBUyxlQUNaLFNBQVMsZ0JBQ1IsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQ3JFLFNBQVMsRUFBRSxFQUFFLENBQ1gsNkVBQTZFLEVBQzdFLFNBQVMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQ3hDO2dCQUVELG9CQUFDLElBQUksSUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBSTtnQkFDakUsb0JBQUMsVUFBVSxDQUFDLEtBQUssSUFBQyxLQUFLLEVBQUMsU0FBUyxJQUFFLGdCQUFnQixDQUFvQixDQUNuRSxDQUNQO1lBRUEsVUFBVSxJQUFJLG9CQUFDLFVBQVUsb0JBQUssZUFBZSxFQUFNLGVBQWUsRUFBSSxDQUNuRCxDQUN2QixDQUNBLENBQ0osQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
|
@@ -0,0 +1,23 @@
|
|
1
|
+
export declare type UseStaticInfiniteListProps<Item> = {
|
2
|
+
/**
|
3
|
+
* The list of items to paginate.
|
4
|
+
*/
|
5
|
+
items: Item[];
|
6
|
+
/**
|
7
|
+
* The number of items to show per virtual page.
|
8
|
+
*/
|
9
|
+
pageSize: number;
|
10
|
+
/**
|
11
|
+
* Automatically reset the page when the items change.
|
12
|
+
* @default true
|
13
|
+
*/
|
14
|
+
autoReset?: boolean;
|
15
|
+
};
|
16
|
+
export declare type UseStaticInfiniteListReturn<Item> = {
|
17
|
+
items: Item[];
|
18
|
+
next: () => void;
|
19
|
+
reset: () => void;
|
20
|
+
hasMore: boolean;
|
21
|
+
isLoading: boolean;
|
22
|
+
};
|
23
|
+
export declare const useStaticInfiniteList: <Item>({ items, pageSize, autoReset, }: UseStaticInfiniteListProps<Item>) => UseStaticInfiniteListReturn<Item>;
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
export const useStaticInfiniteList = ({ items, pageSize, autoReset = true, }) => {
|
3
|
+
const [currentPage, setCurrentPage] = React.useState(1);
|
4
|
+
const numberOfVisible = currentPage * pageSize;
|
5
|
+
const next = React.useCallback(() => {
|
6
|
+
setCurrentPage((page) => page + 1);
|
7
|
+
}, [setCurrentPage]);
|
8
|
+
const reset = React.useCallback(() => {
|
9
|
+
setCurrentPage(1);
|
10
|
+
}, [setCurrentPage]);
|
11
|
+
React.useEffect(() => {
|
12
|
+
if (autoReset) {
|
13
|
+
setCurrentPage(1);
|
14
|
+
}
|
15
|
+
}, [autoReset, items]);
|
16
|
+
return {
|
17
|
+
items: items.slice(0, numberOfVisible),
|
18
|
+
next,
|
19
|
+
reset,
|
20
|
+
hasMore: items.length > numberOfVisible,
|
21
|
+
isLoading: false,
|
22
|
+
};
|
23
|
+
};
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlU3RhdGljSW5maW5pdGVMaXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21vbGVjdWxlcy9MaXN0L3VzZVN0YXRpY0luZmluaXRlTGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUE0QjFCLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQU8sRUFDMUMsS0FBSyxFQUNMLFFBQVEsRUFDUixTQUFTLEdBQUcsSUFBSSxHQUNpQixFQUFxQyxFQUFFO0lBQ3hFLE1BQU0sQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxNQUFNLGVBQWUsR0FBRyxXQUFXLEdBQUcsUUFBUSxDQUFDO0lBRS9DLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFO1FBQ2xDLGNBQWMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFFckIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUU7UUFDbkMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFFckIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDbkIsSUFBSSxTQUFTLEVBQUU7WUFDYixjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbkI7SUFDSCxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUV2QixPQUFPO1FBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQztRQUN0QyxJQUFJO1FBQ0osS0FBSztRQUNMLE9BQU8sRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLGVBQWU7UUFDdkMsU0FBUyxFQUFFLEtBQUs7S0FDakIsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
|
@@ -22,11 +22,13 @@ import { DropdownMenu } from '../../../src/molecules/DropdownMenu/DropdownMenu';
|
|
22
22
|
import { LineClamp } from '../../../src/molecules/LineClamp/LineClamp';
|
23
23
|
import { SelectBase } from '../../../src/molecules/Select/Select';
|
24
24
|
import { Switch } from '../../../src/molecules/Switch/Switch';
|
25
|
+
import { createTabsComponent, ModalTab, TabItem, Tabs } from '../../../src/molecules/Tabs/Tabs';
|
25
26
|
import { TagLabel } from '../../../src/molecules/TagLabel/TagLabel';
|
26
27
|
import { Section as BaseSection } from '../../../src/atoms/Section/Section';
|
27
28
|
import { renderAction } from '../../../src/utils/actions';
|
28
29
|
import { tw } from '../../../src/utils/tailwind';
|
29
30
|
import { useMeasure } from '../../../src/utils/useMeasure';
|
31
|
+
import { isComponentType } from '../../../types/utils';
|
30
32
|
import more from '../../../src/icons/more';
|
31
33
|
export const Section = (props) => {
|
32
34
|
var _a, _b, _c, _d, _e;
|
@@ -72,6 +74,7 @@ export const Section = (props) => {
|
|
72
74
|
const toggleId = useId();
|
73
75
|
const regionId = useId();
|
74
76
|
const titleId = useId();
|
77
|
+
const hasTabs = isComponentType(children, Tabs);
|
75
78
|
return (React.createElement(BaseSection, { "aria-label": title, className: "Aquarium-Section" },
|
76
79
|
title && (React.createElement(React.Fragment, null,
|
77
80
|
React.createElement(BaseSection.Header, { expanded: _collapsible && !isCollapsed },
|
@@ -97,9 +100,9 @@ export const Section = (props) => {
|
|
97
100
|
.map((action) => renderAction({ kind: 'secondary', action })),
|
98
101
|
props.switch && React.createElement(Switch, Object.assign({}, props.switch)),
|
99
102
|
props.select && React.createElement(SelectBase, Object.assign({ "aria-labelledby": titleId }, props.select))))),
|
100
|
-
React.createElement(animated.div, { className: tw(`h-[1px]`), style: { backgroundColor } }))),
|
103
|
+
!hasTabs && React.createElement(animated.div, { className: tw(`h-[1px]`), style: { backgroundColor } }))),
|
101
104
|
React.createElement(animated.div, { id: regionId, "aria-hidden": _collapsible ? (isCollapsed ? true : undefined) : undefined, style: spring, className: tw({ 'overflow-hidden': _collapsible }) },
|
102
|
-
React.createElement("div", { ref: ref },
|
103
|
-
React.createElement(BaseSection.Body, null, children)))));
|
105
|
+
React.createElement("div", { ref: ref }, hasTabs ? (React.createElement(SectionTabs, Object.assign({}, children.props, { className: tw('[&>div:first-child]:px-3 grow flex flex-col overflow-y-auto') }))) : (React.createElement(BaseSection.Body, null, children))))));
|
104
106
|
};
|
105
|
-
|
107
|
+
const SectionTabs = createTabsComponent(ModalTab, TabItem, 'SectionTabs', (children, selected) => (React.createElement(BaseSection.Body, null, children.find((node, index) => (node === null || node === void 0 ? void 0 : node.props.value) === selected || index === selected))));
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tb2xlY3VsZXMvU2VjdGlvbi9TZWN0aW9uLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RCxPQUFPLFNBQVMsTUFBTSxrQkFBa0IsQ0FBQztBQUN6QyxPQUFPLFdBQVcsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLFlBQVksTUFBTSxxQkFBcUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUF3QixNQUFNLHlCQUF5QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDOUQsT0FBTyxFQUFtQixVQUFVLEVBQXdCLE1BQU0sNkJBQTZCLENBQUM7QUFDaEcsT0FBTyxFQUFFLE1BQU0sRUFBb0IsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBaUIsSUFBSSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEcsT0FBTyxFQUFFLFFBQVEsRUFBc0IsTUFBTSxpQ0FBaUMsQ0FBQztBQUUvRSxPQUFPLEVBQUUsT0FBTyxJQUFJLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztB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
|
@@ -1,7 +1,8 @@
|
|
1
1
|
import React from 'react';
|
2
|
+
import { type BoxProps } from '../../../src/molecules/Box/Box';
|
2
3
|
import type twTheme from '../../../tailwind.theme.json';
|
3
4
|
export declare type Weight = 'auto' | `${number}`;
|
4
|
-
declare type TemplateProps = {
|
5
|
+
export declare type TemplateProps = Pick<BoxProps, 'alignContent' | 'alignItems' | 'alignSelf' | 'gap' | 'grow' | 'justifyContent' | 'justifySelf' | 'role' | 'style'> & {
|
5
6
|
/**
|
6
7
|
* Provide a number for amount of columns. Columns created this way have equal weight.
|
7
8
|
*
|
@@ -10,16 +11,9 @@ declare type TemplateProps = {
|
|
10
11
|
* Array value of Weight is considered as a weight in relation to other columns.
|
11
12
|
*/
|
12
13
|
columns: Array<Weight | number> | number;
|
13
|
-
alignContent?: React.CSSProperties['alignContent'];
|
14
|
-
alignSelf?: React.CSSProperties['alignSelf'];
|
15
|
-
alignItems?: React.CSSProperties['alignItems'];
|
16
|
-
justifySelf?: React.CSSProperties['justifySelf'];
|
17
|
-
gap?: keyof (typeof twTheme)['gap'];
|
18
14
|
columnGap?: keyof (typeof twTheme)['gap'];
|
19
15
|
rowGap?: keyof (typeof twTheme)['gap'];
|
20
16
|
fullHeight?: boolean;
|
21
17
|
className?: string;
|
22
|
-
role?: React.HTMLProps<HTMLDivElement>['role'];
|
23
18
|
};
|
24
19
|
export declare const Template: React.FC<React.PropsWithChildren<TemplateProps>>;
|
25
|
-
export {};
|
@@ -1,6 +1,19 @@
|
|
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
|
+
};
|
1
12
|
import React from 'react';
|
13
|
+
import { Box } from '../../../src/molecules/Box/Box';
|
2
14
|
import { useStyle } from '../../../src/utils/useStyle';
|
3
|
-
export const Template = (
|
15
|
+
export const Template = (_a) => {
|
16
|
+
var { columns, columnGap, rowGap, fullHeight, style } = _a, props = __rest(_a, ["columns", "columnGap", "rowGap", "fullHeight", "style"]);
|
4
17
|
const gridTemplateColumns = typeof columns === 'number'
|
5
18
|
? '1fr '.repeat(columns)
|
6
19
|
: columns
|
@@ -8,16 +21,10 @@ export const Template = ({ children, columns, alignSelf, alignContent, alignItem
|
|
8
21
|
.join(' ');
|
9
22
|
const styles = useStyle({
|
10
23
|
height: fullHeight ? '100%' : undefined,
|
11
|
-
display: 'grid',
|
12
24
|
gridTemplateColumns,
|
13
|
-
alignSelf,
|
14
|
-
alignContent,
|
15
|
-
alignItems,
|
16
|
-
justifySelf,
|
17
|
-
gap,
|
18
25
|
rowGap,
|
19
26
|
columnGap,
|
20
27
|
});
|
21
|
-
return
|
28
|
+
return React.createElement(Box, Object.assign({}, props, { display: "grid", style: Object.assign(Object.assign({}, styles), style) }));
|
22
29
|
};
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9sZWN1bGVzL1RlbXBsYXRlL1RlbXBsYXRlLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQUUsR0FBRyxFQUFpQixNQUFNLHVCQUF1QixDQUFDO0FBRTNELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQTRCOUMsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFxRCxDQUFDLEVBTzFFLEVBQUUsRUFBRTtRQVBzRSxFQUN6RSxPQUFPLEVBQ1AsU0FBUyxFQUNULE1BQU0sRUFDTixVQUFVLEVBQ1YsS0FBSyxPQUVOLEVBREksS0FBSyxjQU5pRSx5REFPMUUsQ0FEUztJQUVSLE1BQU0sbUJBQW1CLEdBQ3ZCLE9BQU8sT0FBTyxLQUFLLFFBQVE7UUFDekIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxPQUFPO2FBQ0osR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLENBQUM7YUFDMUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRW5CLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQztRQUN0QixNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDdkMsbUJBQW1CO1FBQ25CLE1BQU07UUFDTixTQUFTO0tBQ1YsQ0FBQyxDQUFDO0lBRUgsT0FBTyxvQkFBQyxHQUFHLG9CQUFLLEtBQUssSUFBRSxPQUFPLEVBQUMsTUFBTSxFQUFDLEtBQUssa0NBQU8sTUFBTSxHQUFLLEtBQUssS0FBTSxDQUFDO0FBQzNFLENBQUMsQ0FBQyJ9
|
@@ -34,6 +34,7 @@ export * from './Input/Input';
|
|
34
34
|
export * from './LineClamp/LineClamp';
|
35
35
|
export * from './Link/Link';
|
36
36
|
export * from './List/List';
|
37
|
+
export * from './List/useStaticInfiniteList';
|
37
38
|
export * from './ListItem/ListItem';
|
38
39
|
export * from './Modal/Modal';
|
39
40
|
export * from './MultiInput/MultiInput';
|
@@ -35,6 +35,7 @@ export * from './Input/Input';
|
|
35
35
|
export * from './LineClamp/LineClamp';
|
36
36
|
export * from './Link/Link';
|
37
37
|
export * from './List/List';
|
38
|
+
export * from './List/useStaticInfiniteList';
|
38
39
|
export * from './ListItem/ListItem';
|
39
40
|
export * from './Modal/Modal';
|
40
41
|
export * from './MultiInput/MultiInput';
|
@@ -75,4 +76,4 @@ export * from '../utils/table/useTableSelect';
|
|
75
76
|
export * from '../utils/table/useTableSort';
|
76
77
|
export * from './Pagination/usePagination';
|
77
78
|
export const SelectItem = Select.Item;
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9sZWN1bGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVoRCxzREFBc0Q7QUFDdEQsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx5QkFBeUIsQ0FBQztBQUV4Qyx1Q0FBdUM7QUFDdkMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDRCQUE0QixDQUFDO0FBRTNDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDIn0=
|
@@ -4,9 +4,10 @@ export const mockIntersectionObserver = () => {
|
|
4
4
|
writable: true,
|
5
5
|
value: jest.fn().mockImplementation(() => ({
|
6
6
|
observe: () => jest.fn(),
|
7
|
+
unobserve: () => jest.fn(),
|
7
8
|
disconnect: () => jest.fn(),
|
8
9
|
})),
|
9
10
|
});
|
10
11
|
});
|
11
12
|
};
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja0ludGVyc2VjdGlvbk9ic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL21vY2tzL21vY2tJbnRlcnNlY3Rpb25PYnNlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxHQUFHLEVBQUU7SUFDM0MsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLHNCQUFzQixFQUFFO1lBQ3BELFFBQVEsRUFBRSxJQUFJO1lBQ2QsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUN6QyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRTtnQkFDeEIsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUU7Z0JBQzFCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO2FBQzVCLENBQUMsQ0FBQztTQUNKLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIn0=
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import '@testing-library/jest-dom';
|
2
|
+
import { faker } from '@faker-js/faker';
|
2
3
|
import failOnConsole from 'jest-fail-on-console';
|
3
4
|
import { mockDynamicIds } from './mocks/mockDynamicIds';
|
4
5
|
import { mockIntersectionObserver } from './mocks/mockIntersectionObserver';
|
@@ -17,4 +18,6 @@ mockDynamicIds();
|
|
17
18
|
mockIntersectionObserver();
|
18
19
|
mockResizeObserver();
|
19
20
|
mockRecharts();
|
20
|
-
|
21
|
+
// Use static seed for faker to get consistent results.
|
22
|
+
faker.seed(42);
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBUZXN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9zZXR1cFRlc3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sMkJBQTJCLENBQUM7QUFFbkMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hDLE9BQU8sYUFBYSxNQUFNLHNCQUFzQixDQUFDO0FBRWpELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbEUsa0dBQWtHO0FBQ2xHLGFBQWEsQ0FBQztJQUNaLGdCQUFnQixFQUFFLElBQUk7SUFDdEIsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QixrQkFBa0IsRUFBRSxLQUFLO0lBQ3pCLGlCQUFpQixFQUFFLEtBQUs7SUFDeEIsZUFBZSxFQUFFLEtBQUs7SUFDdEIsZ0JBQWdCLEVBQUUsS0FBSztDQUN4QixDQUFDLENBQUM7QUFFSCxjQUFjLEVBQUUsQ0FBQztBQUNqQix3QkFBd0IsRUFBRSxDQUFDO0FBQzNCLGtCQUFrQixFQUFFLENBQUM7QUFDckIsWUFBWSxFQUFFLENBQUM7QUFFZix1REFBdUQ7QUFDdkQsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyJ9
|
@@ -7,7 +7,7 @@ import { type ActionType } from '../../../types/ActionType';
|
|
7
7
|
import { type CommonContextualMenuProps } from '../../../types/ContextualMenu';
|
8
8
|
import { type AllOrNone, type RequireAtLeastOne } from '../../../types/utils';
|
9
9
|
import type React from 'react';
|
10
|
-
export declare type TextAlign = 'center' | 'left' | 'right';
|
10
|
+
export declare type TextAlign = 'center' | 'left' | 'right' | 'stretch';
|
11
11
|
export declare type SortDirection = AriaAttributes['aria-sort'];
|
12
12
|
export declare type Column = {
|
13
13
|
/**
|
@@ -155,7 +155,7 @@ export declare const toSortDirection: (direction: SortDirection | undefined) =>
|
|
155
155
|
export declare type StickyColumn = 'left' | 'right';
|
156
156
|
declare type CellProps = {
|
157
157
|
key: string;
|
158
|
-
align: TextAlign;
|
158
|
+
align: TextAlign | undefined;
|
159
159
|
stickyColumn?: StickyColumn;
|
160
160
|
};
|
161
161
|
export declare const cellProps: <C extends Column>(column: C) => CellProps;
|
@@ -1,11 +1,28 @@
|
|
1
1
|
export const toSortDirection = (direction) => direction === 'ascending' ? 'asc' : direction === 'descending' ? 'desc' : false;
|
2
|
-
export const cellProps = (column) =>
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
2
|
+
export const cellProps = (column) => {
|
3
|
+
let align;
|
4
|
+
switch (column.type) {
|
5
|
+
case 'action':
|
6
|
+
case 'number': {
|
7
|
+
align = 'right';
|
8
|
+
break;
|
9
|
+
}
|
10
|
+
case 'custom': {
|
11
|
+
align = 'stretch';
|
12
|
+
break;
|
13
|
+
}
|
14
|
+
default: {
|
15
|
+
align = 'left';
|
16
|
+
}
|
17
|
+
}
|
18
|
+
return {
|
19
|
+
key: column.key || column.headerName,
|
20
|
+
align,
|
21
|
+
stickyColumn: column.sticky,
|
22
|
+
};
|
23
|
+
};
|
7
24
|
export const columnIsFieldColumn = (column) => Boolean(column && column.field);
|
8
25
|
export function isOnSortChangedDirection(value) {
|
9
26
|
return value === undefined || ['ascending', 'descending'].includes(value);
|
10
27
|
}
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvdGFibGUvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBOExBLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLFNBQW9DLEVBQTBCLEVBQUUsQ0FDOUYsU0FBUyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQVVsRixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBbUIsTUFBUyxFQUFhLEVBQUU7SUFDbEUsSUFBSSxLQUE0QixDQUFDO0lBRWpDLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRTtRQUNuQixLQUFLLFFBQVEsQ0FBQztRQUNkLEtBQUssUUFBUSxDQUFDLENBQUM7WUFDYixLQUFLLEdBQUcsT0FBTyxDQUFDO1lBQ2hCLE1BQU07U0FDUDtRQUVELEtBQUssUUFBUSxDQUFDLENBQUM7WUFDYixLQUFLLEdBQUcsU0FBUyxDQUFDO1lBQ2xCLE1BQU07U0FDUDtRQUVELE9BQU8sQ0FBQyxDQUFDO1lBQ1AsS0FBSyxHQUFHLE1BQU0sQ0FBQztTQUNoQjtLQUNGO0lBRUQsT0FBTztRQUNMLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxVQUFVO1FBQ3BDLEtBQUs7UUFDTCxZQUFZLEVBQUUsTUFBTSxDQUFDLE1BQU07S0FDNUIsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQXlCLE1BQTJCLEVBQTRCLEVBQUUsQ0FDbkgsT0FBTyxDQUFDLE1BQU0sSUFBSyxNQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBMkJ0RCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsS0FBeUI7SUFDaEUsT0FBTyxLQUFLLEtBQUssU0FBUyxJQUFJLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1RSxDQUFDIn0=
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
export declare type UseInViewCallback = (inView: boolean, entry: IntersectionObserverEntry) => void;
|
3
|
+
export declare type UseInViewOptions = IntersectionObserverInit & {
|
4
|
+
/**
|
5
|
+
* Callback to be invoked when the target element changes from being in view to not being in view and vice-versa.
|
6
|
+
* @param inView True, if the target element is in view. False, if the target element is not in view.
|
7
|
+
* @param entry The entry for the target element in the IntersectionObserverEntry list.
|
8
|
+
*/
|
9
|
+
onChange?: UseInViewCallback;
|
10
|
+
/**
|
11
|
+
* If true, the observer will be skipped and the onChange callback will not be invoked.
|
12
|
+
*/
|
13
|
+
skip?: boolean;
|
14
|
+
};
|
15
|
+
declare type UseInViewResult = [React.RefObject<HTMLDivElement>, boolean, IntersectionObserverEntry | undefined];
|
16
|
+
export declare const useInView: ({ onChange, skip, root, rootMargin, threshold, }: UseInViewOptions) => UseInViewResult;
|
17
|
+
export {};
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
export const useInView = ({ onChange, skip, root = document, rootMargin, threshold = 0, }) => {
|
3
|
+
const ref = React.useRef(null);
|
4
|
+
const [state, setState] = React.useState({
|
5
|
+
inView: false,
|
6
|
+
entry: undefined,
|
7
|
+
});
|
8
|
+
React.useEffect(() => {
|
9
|
+
const target = ref.current;
|
10
|
+
// Ensure we have target ref and that we shouldn't skip observing.
|
11
|
+
if (skip || !target) {
|
12
|
+
return;
|
13
|
+
}
|
14
|
+
const observer = new IntersectionObserver((entries) => {
|
15
|
+
entries.forEach((entry) => {
|
16
|
+
if (entry.target === ref.current) {
|
17
|
+
setState({ inView: entry.isIntersecting, entry });
|
18
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(entry.isIntersecting, entry);
|
19
|
+
}
|
20
|
+
});
|
21
|
+
}, {
|
22
|
+
root,
|
23
|
+
rootMargin,
|
24
|
+
threshold,
|
25
|
+
});
|
26
|
+
observer.observe(target);
|
27
|
+
return () => {
|
28
|
+
if (target) {
|
29
|
+
observer.unobserve(target);
|
30
|
+
}
|
31
|
+
};
|
32
|
+
}, [ref, skip, root, rootMargin, threshold, onChange]);
|
33
|
+
return [ref, state.inView, state.entry];
|
34
|
+
};
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlSW5WaWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL3VzZUluVmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUF5QjFCLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLEVBQ3hCLFFBQVEsRUFDUixJQUFJLEVBQ0osSUFBSSxHQUFHLFFBQVEsRUFDZixVQUFVLEVBQ1YsU0FBUyxHQUFHLENBQUMsR0FDSSxFQUFtQixFQUFFO0lBQ3RDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQWlCLElBQUksQ0FBQyxDQUFDO0lBQy9DLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBYztRQUNwRCxNQUFNLEVBQUUsS0FBSztRQUNiLEtBQUssRUFBRSxTQUFTO0tBQ2pCLENBQUMsQ0FBQztJQUVILEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ25CLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDM0Isa0VBQWtFO1FBQ2xFLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ25CLE9BQU87U0FDUjtRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksb0JBQW9CLENBQ3ZDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDVixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3hCLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsT0FBTyxFQUFFO29CQUNoQyxRQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO29CQUNsRCxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDekM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsRUFDRDtZQUNFLElBQUk7WUFDSixVQUFVO1lBQ1YsU0FBUztTQUNWLENBQ0YsQ0FBQztRQUVGLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFekIsT0FBTyxHQUFHLEVBQUU7WUFDVixJQUFJLE1BQU0sRUFBRTtnQkFDVixRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzVCO1FBQ0gsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBRXZELE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUMsQ0FBQyxDQUFDIn0=
|