@auth0/quantum-product 1.6.5 → 1.6.7
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/alert/alert.js +1 -5
- package/esm/alert/alert.js +1 -5
- package/esm/pagination/index.js +1 -0
- package/esm/pagination/pager/index.js +2 -0
- package/esm/pagination/pager/pager-classes.js +10 -0
- package/esm/pagination/pager/pager.js +40 -0
- package/esm/pagination/pager/pager.test.js +47 -0
- package/esm/pagination/pagination-classes.js +1 -2
- package/esm/pagination/pagination.js +3 -12
- package/esm/test-utils.js +67 -0
- package/package.json +1 -1
- package/pagination/index.d.ts +1 -0
- package/pagination/index.js +15 -0
- package/pagination/pager/index.d.ts +3 -0
- package/pagination/pager/index.js +7 -0
- package/pagination/pager/pager-classes.d.ts +5 -0
- package/pagination/pager/pager-classes.js +14 -0
- package/pagination/pager/pager.d.ts +17 -0
- package/pagination/pager/pager.js +66 -0
- package/pagination/pager/pager.test.d.ts +1 -0
- package/pagination/pager/pager.test.js +72 -0
- package/pagination/pagination-classes.d.ts +1 -1
- package/pagination/pagination-classes.js +1 -2
- package/pagination/pagination.d.ts +5 -2
- package/pagination/pagination.js +3 -12
- package/test-utils.d.ts +14 -0
- package/test-utils.js +99 -0
package/alert/alert.js
CHANGED
|
@@ -102,11 +102,7 @@ var AlertRoot = (0, styled_1.styled)('div', {
|
|
|
102
102
|
},
|
|
103
103
|
_b))), (ownerState.variant === 'standard' && (_c = {
|
|
104
104
|
backgroundColor: theme.tokens[severityBackgroundShade[ownerState.severity]],
|
|
105
|
-
color: theme.tokens[severityColorSubtleShade[ownerState.severity]]
|
|
106
|
-
'& a,& a:hover': {
|
|
107
|
-
color: 'currentColor',
|
|
108
|
-
textDecoration: 'underline',
|
|
109
|
-
}
|
|
105
|
+
color: theme.tokens[severityColorSubtleShade[ownerState.severity]]
|
|
110
106
|
},
|
|
111
107
|
_c["& .".concat(alert_classes_1.alertClasses.icon)] = {
|
|
112
108
|
color: theme.tokens[severityColorSubtleShade[ownerState.severity]],
|
package/esm/alert/alert.js
CHANGED
|
@@ -73,11 +73,7 @@ var AlertRoot = styled('div', {
|
|
|
73
73
|
},
|
|
74
74
|
_b))), (ownerState.variant === 'standard' && (_c = {
|
|
75
75
|
backgroundColor: theme.tokens[severityBackgroundShade[ownerState.severity]],
|
|
76
|
-
color: theme.tokens[severityColorSubtleShade[ownerState.severity]]
|
|
77
|
-
'& a,& a:hover': {
|
|
78
|
-
color: 'currentColor',
|
|
79
|
-
textDecoration: 'underline',
|
|
80
|
-
}
|
|
76
|
+
color: theme.tokens[severityColorSubtleShade[ownerState.severity]]
|
|
81
77
|
},
|
|
82
78
|
_c["& .".concat(alertClasses.icon)] = {
|
|
83
79
|
color: theme.tokens[severityColorSubtleShade[ownerState.severity]],
|
package/esm/pagination/index.js
CHANGED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { generateUtilityClass, generateUtilityClasses } from '../../styles/classes';
|
|
2
|
+
export var pagerComponentName = 'QuantumPager';
|
|
3
|
+
export function getPagerUtilityClass(slot) {
|
|
4
|
+
return generateUtilityClass(pagerComponentName, slot);
|
|
5
|
+
}
|
|
6
|
+
export var pagerClasses = generateUtilityClasses(pagerComponentName, [
|
|
7
|
+
'root',
|
|
8
|
+
'previousPageButton',
|
|
9
|
+
'nextPageButton',
|
|
10
|
+
]);
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
13
|
+
var t = {};
|
|
14
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
15
|
+
t[p] = s[p];
|
|
16
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
17
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
18
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
19
|
+
t[p[i]] = s[p[i]];
|
|
20
|
+
}
|
|
21
|
+
return t;
|
|
22
|
+
};
|
|
23
|
+
import * as React from 'react';
|
|
24
|
+
import { IconButton } from '../../icon-button';
|
|
25
|
+
import { StackLayout } from '../../stack-layout';
|
|
26
|
+
import { useMergedClasses } from '../../styles/classes';
|
|
27
|
+
import { getPagerUtilityClass, pagerClasses } from './pager-classes';
|
|
28
|
+
import { clsx } from '../../utils';
|
|
29
|
+
import { ChevronLeftIcon, ChevronRightIcon } from '../../icon';
|
|
30
|
+
export var Pager = React.forwardRef(function (props, ref) {
|
|
31
|
+
var page = props.page, propClasses = props.classes, className = props.className, disabled = props.disabled, nextDisabled = props.nextDisabled, _a = props.nextIconButtonProps, nextIconButtonProps = _a === void 0 ? {} : _a, onPageChange = props.onPageChange, previousDisabled = props.previousDisabled, _b = props.previousIconButtonProps, previousIconButtonProps = _b === void 0 ? {} : _b, _c = props.size, size = _c === void 0 ? 'medium' : _c, _d = props.sx, sx = _d === void 0 ? {} : _d, totalPages = props.totalPages, rootProps = __rest(props, ["page", "classes", "className", "disabled", "nextDisabled", "nextIconButtonProps", "onPageChange", "previousDisabled", "previousIconButtonProps", "size", "sx", "totalPages"]);
|
|
32
|
+
var classes = useMergedClasses(pagerClasses, getPagerUtilityClass, propClasses);
|
|
33
|
+
var isPrevDisabled = disabled || previousDisabled || page <= 1;
|
|
34
|
+
var isNextDisabled = disabled || nextDisabled || (totalPages != null && page >= totalPages);
|
|
35
|
+
return (React.createElement(StackLayout, __assign({ ref: ref, gutter: 1, className: clsx(classes.root, className), sx: __assign({ justifyContent: 'flex-end' }, sx) }, rootProps),
|
|
36
|
+
React.createElement(IconButton, __assign({ variant: "outlined", size: size, className: classes.previousPageButton, onClick: function () { return onPageChange && onPageChange(page - 1); }, disabled: isPrevDisabled, "aria-label": "Previous page" }, nextIconButtonProps),
|
|
37
|
+
React.createElement(ChevronLeftIcon, null)),
|
|
38
|
+
React.createElement(IconButton, __assign({ variant: "outlined", size: size, className: classes.nextPageButton, onClick: function () { return onPageChange && onPageChange(page + 1); }, disabled: isNextDisabled, "aria-label": "Next page" }, previousIconButtonProps),
|
|
39
|
+
React.createElement(ChevronRightIcon, null))));
|
|
40
|
+
});
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Pager } from '..';
|
|
3
|
+
import { fireEvent, render, runBaseTests } from '../../test-utils';
|
|
4
|
+
runBaseTests(Pager, { page: 1 });
|
|
5
|
+
test('disables previous and next page if disabled is true', function () {
|
|
6
|
+
var getByLabelText = render(React.createElement(Pager, { page: 2, disabled: true })).getByLabelText;
|
|
7
|
+
var previousPageButton = getByLabelText('Previous page');
|
|
8
|
+
var nextPageButton = getByLabelText('Next page');
|
|
9
|
+
expect(previousPageButton.disabled).toBe(true);
|
|
10
|
+
expect(nextPageButton.disabled).toBe(true);
|
|
11
|
+
});
|
|
12
|
+
test('disables previous page on first page', function () {
|
|
13
|
+
var getByLabelText = render(React.createElement(Pager, { page: 1 })).getByLabelText;
|
|
14
|
+
var previousPageButton = getByLabelText('Previous page');
|
|
15
|
+
expect(previousPageButton.disabled).toBe(true);
|
|
16
|
+
});
|
|
17
|
+
test('disables previous page if previousDisabled is true', function () {
|
|
18
|
+
var getByLabelText = render(React.createElement(Pager, { page: 2, previousDisabled: true })).getByLabelText;
|
|
19
|
+
var previousPageButton = getByLabelText('Previous page');
|
|
20
|
+
expect(previousPageButton.disabled).toBe(true);
|
|
21
|
+
});
|
|
22
|
+
test('disables next page if nextDisabled is true', function () {
|
|
23
|
+
var getByLabelText = render(React.createElement(Pager, { page: 2, nextDisabled: true })).getByLabelText;
|
|
24
|
+
var nextPageButton = getByLabelText('Next page');
|
|
25
|
+
expect(nextPageButton.disabled).toBe(true);
|
|
26
|
+
});
|
|
27
|
+
test('disables next page if page is equal to totalPages', function () {
|
|
28
|
+
var getByLabelText = render(React.createElement(Pager, { page: 2, totalPages: 2 })).getByLabelText;
|
|
29
|
+
var nextPageButton = getByLabelText('Next page');
|
|
30
|
+
expect(nextPageButton.disabled).toBe(true);
|
|
31
|
+
});
|
|
32
|
+
test('goes previous page if previous page is clicked', function () {
|
|
33
|
+
var currentPage = 2;
|
|
34
|
+
var pageChangeHandler = jest.fn();
|
|
35
|
+
var getByLabelText = render(React.createElement(Pager, { page: currentPage, onPageChange: pageChangeHandler })).getByLabelText;
|
|
36
|
+
var previousPageButton = getByLabelText('Previous page');
|
|
37
|
+
fireEvent.click(previousPageButton);
|
|
38
|
+
expect(pageChangeHandler).toBeCalledWith(currentPage - 1);
|
|
39
|
+
});
|
|
40
|
+
test('goes next page if next page is clicked', function () {
|
|
41
|
+
var currentPage = 2;
|
|
42
|
+
var pageChangeHandler = jest.fn();
|
|
43
|
+
var getByLabelText = render(React.createElement(Pager, { page: currentPage, onPageChange: pageChangeHandler })).getByLabelText;
|
|
44
|
+
var nextPageButton = getByLabelText('Next page');
|
|
45
|
+
fireEvent.click(nextPageButton);
|
|
46
|
+
expect(pageChangeHandler).toBeCalledWith(currentPage + 1);
|
|
47
|
+
});
|
|
@@ -21,8 +21,6 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
21
21
|
return t;
|
|
22
22
|
};
|
|
23
23
|
import * as React from 'react';
|
|
24
|
-
import { ChevronLeftIcon, ChevronRightIcon } from '../icon';
|
|
25
|
-
import { IconButton } from '../icon-button';
|
|
26
24
|
import { Select } from '../select';
|
|
27
25
|
import { StackLayout, StackLayoutItem } from '../stack-layout';
|
|
28
26
|
import { styled } from '../styled';
|
|
@@ -30,6 +28,7 @@ import { useMergedClasses } from '../styles/classes';
|
|
|
30
28
|
import { Text } from '../text';
|
|
31
29
|
import clsx from '../utils/clsx';
|
|
32
30
|
import { paginationComponentName, paginationClasses, getPaginationUtilityClass, } from './pagination-classes';
|
|
31
|
+
import { Pager } from './pager';
|
|
33
32
|
var Root = styled('fieldset', { name: paginationComponentName, slot: 'Root' })(function (_a) {
|
|
34
33
|
var ownerState = _a.ownerState;
|
|
35
34
|
return (__assign({ justifyContent: 'space-between', display: 'flex', alignItems: 'center', margin: 0, padding: 0, border: 'none' }, (ownerState.disabled && {
|
|
@@ -62,7 +61,7 @@ var changePageIfAppropriate = function (_a) {
|
|
|
62
61
|
}
|
|
63
62
|
};
|
|
64
63
|
export var Pagination = React.forwardRef(function (props, ref) {
|
|
65
|
-
var children = props.children, className = props.className, page = props.page, perPage = props.perPage, items = props.items, onPageChanged = props.onPageChanged, disabled = props.disabled, propClasses = props.classes, rootProps = __rest(props, ["children", "className", "page", "perPage", "items", "onPageChanged", "disabled", "classes"]);
|
|
64
|
+
var children = props.children, className = props.className, page = props.page, perPage = props.perPage, items = props.items, onPageChanged = props.onPageChanged, disabled = props.disabled, propClasses = props.classes, _a = props.PagerProps, PagerProps = _a === void 0 ? {} : _a, rootProps = __rest(props, ["children", "className", "page", "perPage", "items", "onPageChanged", "disabled", "classes", "PagerProps"]);
|
|
66
65
|
var classes = useMergedClasses(paginationClasses, getPaginationUtilityClass, propClasses);
|
|
67
66
|
var pages = pagesFromItems(items, perPage);
|
|
68
67
|
var pageOptions = React.useMemo(function () {
|
|
@@ -79,8 +78,6 @@ export var Pagination = React.forwardRef(function (props, ref) {
|
|
|
79
78
|
if (pages <= 1) {
|
|
80
79
|
return null;
|
|
81
80
|
}
|
|
82
|
-
var inFirstPage = page === 1;
|
|
83
|
-
var inLastPage = page === pages;
|
|
84
81
|
return (React.createElement(Root, __assign({ ref: ref, ownerState: { disabled: disabled }, className: clsx(classes.root, className) }, rootProps), items > 0 && (React.createElement(React.Fragment, null,
|
|
85
82
|
React.createElement(StackLayout, { gutter: 1 },
|
|
86
83
|
React.createElement(StackLayoutItem, null,
|
|
@@ -99,11 +96,5 @@ export var Pagination = React.forwardRef(function (props, ref) {
|
|
|
99
96
|
React.createElement(Text, { className: classes.pageLabelText, variant: "body2" },
|
|
100
97
|
"of ",
|
|
101
98
|
pages))),
|
|
102
|
-
React.createElement(
|
|
103
|
-
React.createElement(StackLayoutItem, null,
|
|
104
|
-
React.createElement(IconButton, { variant: "outlined", className: classes.previousPageButton, onClick: function () { return changePageIfAppropriate({ nextPage: page - 1, total: items, perPage: perPage, onPageChanged: onPageChanged }); }, disabled: inFirstPage, "aria-label": "Previous page" },
|
|
105
|
-
React.createElement(ChevronLeftIcon, null))),
|
|
106
|
-
React.createElement(StackLayoutItem, null,
|
|
107
|
-
React.createElement(IconButton, { variant: "outlined", className: classes.nextPageButton, onClick: function () { return changePageIfAppropriate({ nextPage: page + 1, total: items, perPage: perPage, onPageChanged: onPageChanged }); }, disabled: inLastPage, "aria-label": "Next page" },
|
|
108
|
-
React.createElement(ChevronRightIcon, null))))))));
|
|
99
|
+
React.createElement(Pager, __assign({ page: page, className: classes.pager, onPageChange: function (nextPage) { return changePageIfAppropriate({ nextPage: nextPage, total: items, perPage: perPage, onPageChanged: onPageChanged }); }, totalPages: pages, disabled: disabled }, PagerProps))))));
|
|
109
100
|
});
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
import * as React from 'react';
|
|
13
|
+
import { faker } from '@faker-js/faker';
|
|
14
|
+
import { render } from '@testing-library/react';
|
|
15
|
+
import { ThemeProvider } from './theme';
|
|
16
|
+
var getClassName = function (componentName, className) { return "".concat(componentName, "-").concat(className); };
|
|
17
|
+
export var createDOMId = function (id) {
|
|
18
|
+
if (id === void 0) { id = faker.random.alphaNumeric(8); }
|
|
19
|
+
// queryselectors do not like ids that begin with numbers. This avoids that.
|
|
20
|
+
return "a0-".concat(id);
|
|
21
|
+
};
|
|
22
|
+
var Providers = function (_a) {
|
|
23
|
+
var children = _a.children;
|
|
24
|
+
return React.createElement(ThemeProvider, null, children);
|
|
25
|
+
};
|
|
26
|
+
var customRender = (function (ui, options) { return render(ui, __assign({ wrapper: Providers }, options)); });
|
|
27
|
+
function createClassNameGetter(componentName) {
|
|
28
|
+
return function (className) { return getClassName(componentName, className); };
|
|
29
|
+
}
|
|
30
|
+
// eslint-disable-next-line import/export
|
|
31
|
+
export * from '@testing-library/react';
|
|
32
|
+
// override render method
|
|
33
|
+
// eslint-disable-next-line import/export
|
|
34
|
+
export { customRender as render, faker, createClassNameGetter };
|
|
35
|
+
export function runBaseTests(Component, baseProps, _a) {
|
|
36
|
+
var _b = _a === void 0 ? {} : _a, _c = _b.overridable, overridable = _c === void 0 ? true : _c;
|
|
37
|
+
test('spreads additional props to the element', function () {
|
|
38
|
+
var testId = faker.random.alphaNumeric();
|
|
39
|
+
var getByTestId = customRender(React.createElement(Component, __assign({}, baseProps, { "data-testid": testId }))).getByTestId;
|
|
40
|
+
expect(function () { return getByTestId(testId); }).not.toThrow();
|
|
41
|
+
});
|
|
42
|
+
// test('className is passed to the root element', () => {
|
|
43
|
+
// const testId = faker.random.alphaNumeric();
|
|
44
|
+
// const { getByTestId } = customRender(<Component {...baseProps} data-testid={testId} />);
|
|
45
|
+
// expect(() => getByTestId(testId)).not.toThrow();
|
|
46
|
+
// });
|
|
47
|
+
test('ref is passed to the element', function () {
|
|
48
|
+
var testId = faker.random.alphaNumeric();
|
|
49
|
+
var ref = React.createRef();
|
|
50
|
+
var getByTestId = customRender(React.createElement(Component, __assign({}, baseProps, { ref: ref, "data-testid": testId }))).getByTestId;
|
|
51
|
+
var rootElement = getByTestId(testId);
|
|
52
|
+
expect(rootElement).toBe(ref.current);
|
|
53
|
+
});
|
|
54
|
+
if (overridable) {
|
|
55
|
+
// TODO: Refactor to suppoert `as` prop
|
|
56
|
+
// test.skip('A different html tag can be used', () => {
|
|
57
|
+
// const testId = faker.random.alphaNumeric();
|
|
58
|
+
// const newTag = 'header';
|
|
59
|
+
// const { getByTestId } = customRender(<Component {...baseProps} component={newTag} data-testid={testId} />);
|
|
60
|
+
// const rootElement = getByTestId(testId);
|
|
61
|
+
// expect(rootElement.tagName).toBe(newTag.toUpperCase());
|
|
62
|
+
// });
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export function mock(values) {
|
|
66
|
+
return values;
|
|
67
|
+
}
|
package/package.json
CHANGED
package/pagination/index.d.ts
CHANGED
package/pagination/index.js
CHANGED
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
17
|
exports.paginationClasses = exports.Pagination = void 0;
|
|
18
|
+
__exportStar(require("./pager"), exports);
|
|
4
19
|
var pagination_1 = require("./pagination");
|
|
5
20
|
Object.defineProperty(exports, "Pagination", { enumerable: true, get: function () { return pagination_1.Pagination; } });
|
|
6
21
|
var pagination_classes_1 = require("./pagination-classes");
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pagerClasses = exports.Pager = void 0;
|
|
4
|
+
var pager_1 = require("./pager");
|
|
5
|
+
Object.defineProperty(exports, "Pager", { enumerable: true, get: function () { return pager_1.Pager; } });
|
|
6
|
+
var pager_classes_1 = require("./pager-classes");
|
|
7
|
+
Object.defineProperty(exports, "pagerClasses", { enumerable: true, get: function () { return pager_classes_1.pagerClasses; } });
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const pagerComponentName: "QuantumPager";
|
|
2
|
+
export declare function getPagerUtilityClass(slot: string): string;
|
|
3
|
+
export declare const pagerClasses: Record<"root" | "previousPageButton" | "nextPageButton", string>;
|
|
4
|
+
export declare type PagerClasses = typeof pagerClasses;
|
|
5
|
+
export declare type PagerClassKey = keyof PagerClasses;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pagerClasses = exports.getPagerUtilityClass = exports.pagerComponentName = void 0;
|
|
4
|
+
var classes_1 = require("../../styles/classes");
|
|
5
|
+
exports.pagerComponentName = 'QuantumPager';
|
|
6
|
+
function getPagerUtilityClass(slot) {
|
|
7
|
+
return (0, classes_1.generateUtilityClass)(exports.pagerComponentName, slot);
|
|
8
|
+
}
|
|
9
|
+
exports.getPagerUtilityClass = getPagerUtilityClass;
|
|
10
|
+
exports.pagerClasses = (0, classes_1.generateUtilityClasses)(exports.pagerComponentName, [
|
|
11
|
+
'root',
|
|
12
|
+
'previousPageButton',
|
|
13
|
+
'nextPageButton',
|
|
14
|
+
]);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { IIconButtonProps } from '../../icon-button';
|
|
3
|
+
import { IStackLayoutProps } from '../../stack-layout';
|
|
4
|
+
import { PagerClasses } from './pager-classes';
|
|
5
|
+
export interface IPagerProps extends IStackLayoutProps {
|
|
6
|
+
page: number;
|
|
7
|
+
classes?: Partial<PagerClasses>;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
nextDisabled?: boolean;
|
|
10
|
+
nextIconButtonProps?: IIconButtonProps;
|
|
11
|
+
onPageChange?(page: number): void;
|
|
12
|
+
previousDisabled?: boolean;
|
|
13
|
+
previousIconButtonProps?: IIconButtonProps;
|
|
14
|
+
size?: IIconButtonProps['size'];
|
|
15
|
+
totalPages?: number;
|
|
16
|
+
}
|
|
17
|
+
export declare const Pager: React.ForwardRefExoticComponent<IPagerProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
37
|
+
var t = {};
|
|
38
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
39
|
+
t[p] = s[p];
|
|
40
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
41
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
42
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
43
|
+
t[p[i]] = s[p[i]];
|
|
44
|
+
}
|
|
45
|
+
return t;
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.Pager = void 0;
|
|
49
|
+
var React = __importStar(require("react"));
|
|
50
|
+
var icon_button_1 = require("../../icon-button");
|
|
51
|
+
var stack_layout_1 = require("../../stack-layout");
|
|
52
|
+
var classes_1 = require("../../styles/classes");
|
|
53
|
+
var pager_classes_1 = require("./pager-classes");
|
|
54
|
+
var utils_1 = require("../../utils");
|
|
55
|
+
var icon_1 = require("../../icon");
|
|
56
|
+
exports.Pager = React.forwardRef(function (props, ref) {
|
|
57
|
+
var page = props.page, propClasses = props.classes, className = props.className, disabled = props.disabled, nextDisabled = props.nextDisabled, _a = props.nextIconButtonProps, nextIconButtonProps = _a === void 0 ? {} : _a, onPageChange = props.onPageChange, previousDisabled = props.previousDisabled, _b = props.previousIconButtonProps, previousIconButtonProps = _b === void 0 ? {} : _b, _c = props.size, size = _c === void 0 ? 'medium' : _c, _d = props.sx, sx = _d === void 0 ? {} : _d, totalPages = props.totalPages, rootProps = __rest(props, ["page", "classes", "className", "disabled", "nextDisabled", "nextIconButtonProps", "onPageChange", "previousDisabled", "previousIconButtonProps", "size", "sx", "totalPages"]);
|
|
58
|
+
var classes = (0, classes_1.useMergedClasses)(pager_classes_1.pagerClasses, pager_classes_1.getPagerUtilityClass, propClasses);
|
|
59
|
+
var isPrevDisabled = disabled || previousDisabled || page <= 1;
|
|
60
|
+
var isNextDisabled = disabled || nextDisabled || (totalPages != null && page >= totalPages);
|
|
61
|
+
return (React.createElement(stack_layout_1.StackLayout, __assign({ ref: ref, gutter: 1, className: (0, utils_1.clsx)(classes.root, className), sx: __assign({ justifyContent: 'flex-end' }, sx) }, rootProps),
|
|
62
|
+
React.createElement(icon_button_1.IconButton, __assign({ variant: "outlined", size: size, className: classes.previousPageButton, onClick: function () { return onPageChange && onPageChange(page - 1); }, disabled: isPrevDisabled, "aria-label": "Previous page" }, nextIconButtonProps),
|
|
63
|
+
React.createElement(icon_1.ChevronLeftIcon, null)),
|
|
64
|
+
React.createElement(icon_button_1.IconButton, __assign({ variant: "outlined", size: size, className: classes.nextPageButton, onClick: function () { return onPageChange && onPageChange(page + 1); }, disabled: isNextDisabled, "aria-label": "Next page" }, previousIconButtonProps),
|
|
65
|
+
React.createElement(icon_1.ChevronRightIcon, null))));
|
|
66
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
var React = __importStar(require("react"));
|
|
27
|
+
var __1 = require("..");
|
|
28
|
+
var test_utils_1 = require("../../test-utils");
|
|
29
|
+
(0, test_utils_1.runBaseTests)(__1.Pager, { page: 1 });
|
|
30
|
+
test('disables previous and next page if disabled is true', function () {
|
|
31
|
+
var getByLabelText = (0, test_utils_1.render)(React.createElement(__1.Pager, { page: 2, disabled: true })).getByLabelText;
|
|
32
|
+
var previousPageButton = getByLabelText('Previous page');
|
|
33
|
+
var nextPageButton = getByLabelText('Next page');
|
|
34
|
+
expect(previousPageButton.disabled).toBe(true);
|
|
35
|
+
expect(nextPageButton.disabled).toBe(true);
|
|
36
|
+
});
|
|
37
|
+
test('disables previous page on first page', function () {
|
|
38
|
+
var getByLabelText = (0, test_utils_1.render)(React.createElement(__1.Pager, { page: 1 })).getByLabelText;
|
|
39
|
+
var previousPageButton = getByLabelText('Previous page');
|
|
40
|
+
expect(previousPageButton.disabled).toBe(true);
|
|
41
|
+
});
|
|
42
|
+
test('disables previous page if previousDisabled is true', function () {
|
|
43
|
+
var getByLabelText = (0, test_utils_1.render)(React.createElement(__1.Pager, { page: 2, previousDisabled: true })).getByLabelText;
|
|
44
|
+
var previousPageButton = getByLabelText('Previous page');
|
|
45
|
+
expect(previousPageButton.disabled).toBe(true);
|
|
46
|
+
});
|
|
47
|
+
test('disables next page if nextDisabled is true', function () {
|
|
48
|
+
var getByLabelText = (0, test_utils_1.render)(React.createElement(__1.Pager, { page: 2, nextDisabled: true })).getByLabelText;
|
|
49
|
+
var nextPageButton = getByLabelText('Next page');
|
|
50
|
+
expect(nextPageButton.disabled).toBe(true);
|
|
51
|
+
});
|
|
52
|
+
test('disables next page if page is equal to totalPages', function () {
|
|
53
|
+
var getByLabelText = (0, test_utils_1.render)(React.createElement(__1.Pager, { page: 2, totalPages: 2 })).getByLabelText;
|
|
54
|
+
var nextPageButton = getByLabelText('Next page');
|
|
55
|
+
expect(nextPageButton.disabled).toBe(true);
|
|
56
|
+
});
|
|
57
|
+
test('goes previous page if previous page is clicked', function () {
|
|
58
|
+
var currentPage = 2;
|
|
59
|
+
var pageChangeHandler = jest.fn();
|
|
60
|
+
var getByLabelText = (0, test_utils_1.render)(React.createElement(__1.Pager, { page: currentPage, onPageChange: pageChangeHandler })).getByLabelText;
|
|
61
|
+
var previousPageButton = getByLabelText('Previous page');
|
|
62
|
+
test_utils_1.fireEvent.click(previousPageButton);
|
|
63
|
+
expect(pageChangeHandler).toBeCalledWith(currentPage - 1);
|
|
64
|
+
});
|
|
65
|
+
test('goes next page if next page is clicked', function () {
|
|
66
|
+
var currentPage = 2;
|
|
67
|
+
var pageChangeHandler = jest.fn();
|
|
68
|
+
var getByLabelText = (0, test_utils_1.render)(React.createElement(__1.Pager, { page: currentPage, onPageChange: pageChangeHandler })).getByLabelText;
|
|
69
|
+
var nextPageButton = getByLabelText('Next page');
|
|
70
|
+
test_utils_1.fireEvent.click(nextPageButton);
|
|
71
|
+
expect(pageChangeHandler).toBeCalledWith(currentPage + 1);
|
|
72
|
+
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const paginationComponentName: "QuantumPagination";
|
|
2
2
|
export declare function getPaginationUtilityClass(slot: string): string;
|
|
3
|
-
export declare const paginationClasses: Record<"root" | "pageSelect" | "pageLabelText" | "
|
|
3
|
+
export declare const paginationClasses: Record<"root" | "pageSelect" | "pageLabelText" | "pager", string>;
|
|
4
4
|
export declare type PaginationClasses = typeof paginationClasses;
|
|
5
5
|
export declare type PaginationClassKey = keyof PaginationClasses;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { IStyledComponentProps } from '../styled';
|
|
3
3
|
import { PaginationClasses } from './pagination-classes';
|
|
4
|
+
import { IPagerProps } from './pager';
|
|
4
5
|
export declare type IPaginationProps = IStyledComponentProps<{
|
|
5
6
|
props: {
|
|
6
7
|
items: number;
|
|
@@ -8,6 +9,7 @@ export declare type IPaginationProps = IStyledComponentProps<{
|
|
|
8
9
|
perPage: number;
|
|
9
10
|
disabled?: boolean;
|
|
10
11
|
onPageChanged(page: number): void;
|
|
12
|
+
PagerProps?: Partial<IPagerProps>;
|
|
11
13
|
classes?: Partial<PaginationClasses>;
|
|
12
14
|
};
|
|
13
15
|
defaultComponent: 'fieldset';
|
|
@@ -18,5 +20,6 @@ export declare const Pagination: React.ForwardRefExoticComponent<{
|
|
|
18
20
|
perPage: number;
|
|
19
21
|
disabled?: boolean | undefined;
|
|
20
22
|
onPageChanged(page: number): void;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
+
PagerProps?: Partial<IPagerProps> | undefined;
|
|
24
|
+
classes?: Partial<Record<"root" | "pageSelect" | "pageLabelText" | "pager", string>> | undefined;
|
|
25
|
+
} & Omit<React.DetailedHTMLProps<React.FieldsetHTMLAttributes<HTMLFieldSetElement>, HTMLFieldSetElement>, "ref" | "disabled" | "page" | "classes" | "items" | "perPage" | "onPageChanged" | "PagerProps"> & import("../styled").IStyledCommonProps & React.RefAttributes<HTMLFieldSetElement>>;
|
package/pagination/pagination.js
CHANGED
|
@@ -50,8 +50,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
50
50
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
51
51
|
exports.Pagination = void 0;
|
|
52
52
|
var React = __importStar(require("react"));
|
|
53
|
-
var icon_1 = require("../icon");
|
|
54
|
-
var icon_button_1 = require("../icon-button");
|
|
55
53
|
var select_1 = require("../select");
|
|
56
54
|
var stack_layout_1 = require("../stack-layout");
|
|
57
55
|
var styled_1 = require("../styled");
|
|
@@ -59,6 +57,7 @@ var classes_1 = require("../styles/classes");
|
|
|
59
57
|
var text_1 = require("../text");
|
|
60
58
|
var clsx_1 = __importDefault(require("../utils/clsx"));
|
|
61
59
|
var pagination_classes_1 = require("./pagination-classes");
|
|
60
|
+
var pager_1 = require("./pager");
|
|
62
61
|
var Root = (0, styled_1.styled)('fieldset', { name: pagination_classes_1.paginationComponentName, slot: 'Root' })(function (_a) {
|
|
63
62
|
var ownerState = _a.ownerState;
|
|
64
63
|
return (__assign({ justifyContent: 'space-between', display: 'flex', alignItems: 'center', margin: 0, padding: 0, border: 'none' }, (ownerState.disabled && {
|
|
@@ -91,7 +90,7 @@ var changePageIfAppropriate = function (_a) {
|
|
|
91
90
|
}
|
|
92
91
|
};
|
|
93
92
|
exports.Pagination = React.forwardRef(function (props, ref) {
|
|
94
|
-
var children = props.children, className = props.className, page = props.page, perPage = props.perPage, items = props.items, onPageChanged = props.onPageChanged, disabled = props.disabled, propClasses = props.classes, rootProps = __rest(props, ["children", "className", "page", "perPage", "items", "onPageChanged", "disabled", "classes"]);
|
|
93
|
+
var children = props.children, className = props.className, page = props.page, perPage = props.perPage, items = props.items, onPageChanged = props.onPageChanged, disabled = props.disabled, propClasses = props.classes, _a = props.PagerProps, PagerProps = _a === void 0 ? {} : _a, rootProps = __rest(props, ["children", "className", "page", "perPage", "items", "onPageChanged", "disabled", "classes", "PagerProps"]);
|
|
95
94
|
var classes = (0, classes_1.useMergedClasses)(pagination_classes_1.paginationClasses, pagination_classes_1.getPaginationUtilityClass, propClasses);
|
|
96
95
|
var pages = pagesFromItems(items, perPage);
|
|
97
96
|
var pageOptions = React.useMemo(function () {
|
|
@@ -108,8 +107,6 @@ exports.Pagination = React.forwardRef(function (props, ref) {
|
|
|
108
107
|
if (pages <= 1) {
|
|
109
108
|
return null;
|
|
110
109
|
}
|
|
111
|
-
var inFirstPage = page === 1;
|
|
112
|
-
var inLastPage = page === pages;
|
|
113
110
|
return (React.createElement(Root, __assign({ ref: ref, ownerState: { disabled: disabled }, className: (0, clsx_1.default)(classes.root, className) }, rootProps), items > 0 && (React.createElement(React.Fragment, null,
|
|
114
111
|
React.createElement(stack_layout_1.StackLayout, { gutter: 1 },
|
|
115
112
|
React.createElement(stack_layout_1.StackLayoutItem, null,
|
|
@@ -128,11 +125,5 @@ exports.Pagination = React.forwardRef(function (props, ref) {
|
|
|
128
125
|
React.createElement(text_1.Text, { className: classes.pageLabelText, variant: "body2" },
|
|
129
126
|
"of ",
|
|
130
127
|
pages))),
|
|
131
|
-
React.createElement(
|
|
132
|
-
React.createElement(stack_layout_1.StackLayoutItem, null,
|
|
133
|
-
React.createElement(icon_button_1.IconButton, { variant: "outlined", className: classes.previousPageButton, onClick: function () { return changePageIfAppropriate({ nextPage: page - 1, total: items, perPage: perPage, onPageChanged: onPageChanged }); }, disabled: inFirstPage, "aria-label": "Previous page" },
|
|
134
|
-
React.createElement(icon_1.ChevronLeftIcon, null))),
|
|
135
|
-
React.createElement(stack_layout_1.StackLayoutItem, null,
|
|
136
|
-
React.createElement(icon_button_1.IconButton, { variant: "outlined", className: classes.nextPageButton, onClick: function () { return changePageIfAppropriate({ nextPage: page + 1, total: items, perPage: perPage, onPageChanged: onPageChanged }); }, disabled: inLastPage, "aria-label": "Next page" },
|
|
137
|
-
React.createElement(icon_1.ChevronRightIcon, null))))))));
|
|
128
|
+
React.createElement(pager_1.Pager, __assign({ page: page, className: classes.pager, onPageChange: function (nextPage) { return changePageIfAppropriate({ nextPage: nextPage, total: items, perPage: perPage, onPageChanged: onPageChanged }); }, totalPages: pages, disabled: disabled }, PagerProps))))));
|
|
138
129
|
});
|
package/test-utils.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { faker } from '@faker-js/faker';
|
|
3
|
+
import { render } from '@testing-library/react';
|
|
4
|
+
export declare const createDOMId: (id?: string) => string;
|
|
5
|
+
declare const customRender: typeof render;
|
|
6
|
+
declare function createClassNameGetter<ClassKey extends string>(componentName: string): (className: ClassKey) => string;
|
|
7
|
+
export * from '@testing-library/react';
|
|
8
|
+
export { customRender as render, faker, createClassNameGetter };
|
|
9
|
+
interface IBaseTestOptions {
|
|
10
|
+
/** Disables/Enables base test for overriding the element */
|
|
11
|
+
overridable?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare function runBaseTests<PropsType, ElementType extends HTMLElement = HTMLElement>(Component: React.ComponentType<PropsType>, baseProps: PropsType, { overridable }?: IBaseTestOptions): void;
|
|
14
|
+
export declare function mock<Item = any>(values: Partial<Item>): Item;
|
package/test-utils.js
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
37
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
38
|
+
};
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.mock = exports.runBaseTests = exports.createClassNameGetter = exports.faker = exports.render = exports.createDOMId = void 0;
|
|
41
|
+
var React = __importStar(require("react"));
|
|
42
|
+
var faker_1 = require("@faker-js/faker");
|
|
43
|
+
Object.defineProperty(exports, "faker", { enumerable: true, get: function () { return faker_1.faker; } });
|
|
44
|
+
var react_1 = require("@testing-library/react");
|
|
45
|
+
var theme_1 = require("./theme");
|
|
46
|
+
var getClassName = function (componentName, className) { return "".concat(componentName, "-").concat(className); };
|
|
47
|
+
var createDOMId = function (id) {
|
|
48
|
+
if (id === void 0) { id = faker_1.faker.random.alphaNumeric(8); }
|
|
49
|
+
// queryselectors do not like ids that begin with numbers. This avoids that.
|
|
50
|
+
return "a0-".concat(id);
|
|
51
|
+
};
|
|
52
|
+
exports.createDOMId = createDOMId;
|
|
53
|
+
var Providers = function (_a) {
|
|
54
|
+
var children = _a.children;
|
|
55
|
+
return React.createElement(theme_1.ThemeProvider, null, children);
|
|
56
|
+
};
|
|
57
|
+
var customRender = (function (ui, options) { return (0, react_1.render)(ui, __assign({ wrapper: Providers }, options)); });
|
|
58
|
+
exports.render = customRender;
|
|
59
|
+
function createClassNameGetter(componentName) {
|
|
60
|
+
return function (className) { return getClassName(componentName, className); };
|
|
61
|
+
}
|
|
62
|
+
exports.createClassNameGetter = createClassNameGetter;
|
|
63
|
+
// eslint-disable-next-line import/export
|
|
64
|
+
__exportStar(require("@testing-library/react"), exports);
|
|
65
|
+
function runBaseTests(Component, baseProps, _a) {
|
|
66
|
+
var _b = _a === void 0 ? {} : _a, _c = _b.overridable, overridable = _c === void 0 ? true : _c;
|
|
67
|
+
test('spreads additional props to the element', function () {
|
|
68
|
+
var testId = faker_1.faker.random.alphaNumeric();
|
|
69
|
+
var getByTestId = customRender(React.createElement(Component, __assign({}, baseProps, { "data-testid": testId }))).getByTestId;
|
|
70
|
+
expect(function () { return getByTestId(testId); }).not.toThrow();
|
|
71
|
+
});
|
|
72
|
+
// test('className is passed to the root element', () => {
|
|
73
|
+
// const testId = faker.random.alphaNumeric();
|
|
74
|
+
// const { getByTestId } = customRender(<Component {...baseProps} data-testid={testId} />);
|
|
75
|
+
// expect(() => getByTestId(testId)).not.toThrow();
|
|
76
|
+
// });
|
|
77
|
+
test('ref is passed to the element', function () {
|
|
78
|
+
var testId = faker_1.faker.random.alphaNumeric();
|
|
79
|
+
var ref = React.createRef();
|
|
80
|
+
var getByTestId = customRender(React.createElement(Component, __assign({}, baseProps, { ref: ref, "data-testid": testId }))).getByTestId;
|
|
81
|
+
var rootElement = getByTestId(testId);
|
|
82
|
+
expect(rootElement).toBe(ref.current);
|
|
83
|
+
});
|
|
84
|
+
if (overridable) {
|
|
85
|
+
// TODO: Refactor to suppoert `as` prop
|
|
86
|
+
// test.skip('A different html tag can be used', () => {
|
|
87
|
+
// const testId = faker.random.alphaNumeric();
|
|
88
|
+
// const newTag = 'header';
|
|
89
|
+
// const { getByTestId } = customRender(<Component {...baseProps} component={newTag} data-testid={testId} />);
|
|
90
|
+
// const rootElement = getByTestId(testId);
|
|
91
|
+
// expect(rootElement.tagName).toBe(newTag.toUpperCase());
|
|
92
|
+
// });
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.runBaseTests = runBaseTests;
|
|
96
|
+
function mock(values) {
|
|
97
|
+
return values;
|
|
98
|
+
}
|
|
99
|
+
exports.mock = mock;
|