@arc-ui/components 11.5.0 → 11.6.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/Breadcrumbs/Breadcrumbs.cjs.d.ts +1 -61
- package/dist/Breadcrumbs/Breadcrumbs.cjs.js +9 -641
- package/dist/Breadcrumbs/Breadcrumbs.esm.d.ts +1 -61
- package/dist/Breadcrumbs/Breadcrumbs.esm.js +8 -640
- package/dist/Button/Button.cjs.d.ts +1 -1
- package/dist/Button/Button.cjs.js +2 -1
- package/dist/Button/Button.esm.d.ts +1 -1
- package/dist/Button/Button.esm.js +2 -1
- package/dist/Card/Card.cjs.d.ts +1 -130
- package/dist/Card/Card.cjs.js +12 -119
- package/dist/Card/Card.esm.d.ts +1 -130
- package/dist/Card/Card.esm.js +11 -118
- package/dist/Checkbox/Checkbox.cjs.d.ts +1 -64
- package/dist/Checkbox/Checkbox.cjs.js +10 -59
- package/dist/Checkbox/Checkbox.esm.d.ts +1 -64
- package/dist/Checkbox/Checkbox.esm.js +9 -58
- package/dist/Columns/Columns.cjs.d.ts +1 -76
- package/dist/Columns/Columns.cjs.js +6 -52
- package/dist/Columns/Columns.esm.d.ts +1 -76
- package/dist/Columns/Columns.esm.js +5 -51
- package/dist/DisclosureMini/DisclosureMini.cjs.d.ts +1 -1
- package/dist/DisclosureMini/DisclosureMini.cjs.js +1 -1
- package/dist/DisclosureMini/DisclosureMini.esm.d.ts +1 -1
- package/dist/DisclosureMini/DisclosureMini.esm.js +1 -1
- package/dist/Filter/Filter.cjs.d.ts +1 -0
- package/dist/Filter/Filter.cjs.js +13 -0
- package/dist/Filter/Filter.esm.d.ts +1 -0
- package/dist/Filter/Filter.esm.js +5 -0
- package/dist/Filter/package.json +7 -0
- package/dist/FormControl/FormControl.cjs.d.ts +1 -1
- package/dist/FormControl/FormControl.cjs.js +2 -3
- package/dist/FormControl/FormControl.esm.d.ts +1 -1
- package/dist/FormControl/FormControl.esm.js +2 -3
- package/dist/Group/Group.cjs.d.ts +1 -46
- package/dist/Group/Group.cjs.js +6 -43
- package/dist/Group/Group.esm.d.ts +1 -46
- package/dist/Group/Group.esm.js +5 -42
- package/dist/Pagination/Pagination.cjs.d.ts +20 -0
- package/dist/Pagination/Pagination.cjs.js +87 -0
- package/dist/Pagination/Pagination.esm.d.ts +20 -0
- package/dist/Pagination/Pagination.esm.js +79 -0
- package/dist/Pagination/package.json +7 -0
- package/dist/PaginationSimple/PaginationSimple.cjs.d.ts +28 -0
- package/dist/PaginationSimple/PaginationSimple.cjs.js +47 -0
- package/dist/PaginationSimple/PaginationSimple.esm.d.ts +28 -0
- package/dist/PaginationSimple/PaginationSimple.esm.js +39 -0
- package/dist/PaginationSimple/package.json +7 -0
- package/dist/Poster/Poster.cjs.d.ts +1 -81
- package/dist/Poster/Poster.cjs.js +8 -45
- package/dist/Poster/Poster.esm.d.ts +1 -81
- package/dist/Poster/Poster.esm.js +7 -44
- package/dist/RadioGroup/RadioGroup.cjs.d.ts +1 -85
- package/dist/RadioGroup/RadioGroup.cjs.js +8 -67
- package/dist/RadioGroup/RadioGroup.esm.d.ts +1 -85
- package/dist/RadioGroup/RadioGroup.esm.js +7 -66
- package/dist/ScrollToTop/ScrollToTop.cjs.d.ts +25 -0
- package/dist/ScrollToTop/ScrollToTop.cjs.js +68 -0
- package/dist/ScrollToTop/ScrollToTop.esm.d.ts +25 -0
- package/dist/ScrollToTop/ScrollToTop.esm.js +60 -0
- package/dist/ScrollToTop/package.json +7 -0
- package/dist/Select/Select.cjs.d.ts +2 -2
- package/dist/Select/Select.cjs.js +2 -3
- package/dist/Select/Select.esm.d.ts +2 -2
- package/dist/Select/Select.esm.js +2 -3
- package/dist/SiteFooter/SiteFooter.cjs.d.ts +2 -62
- package/dist/SiteFooter/SiteFooter.cjs.js +10 -65
- package/dist/SiteFooter/SiteFooter.esm.d.ts +2 -62
- package/dist/SiteFooter/SiteFooter.esm.js +12 -66
- package/dist/SiteHeader/SiteHeader.cjs.d.ts +2 -260
- package/dist/SiteHeader/SiteHeader.cjs.js +16 -668
- package/dist/SiteHeader/SiteHeader.esm.d.ts +2 -260
- package/dist/SiteHeader/SiteHeader.esm.js +14 -666
- package/dist/Switch/Switch.cjs.d.ts +2 -2
- package/dist/Switch/Switch.cjs.js +2 -2
- package/dist/Switch/Switch.esm.d.ts +2 -2
- package/dist/Switch/Switch.esm.js +2 -2
- package/dist/TextArea/TextArea.cjs.d.ts +61 -0
- package/dist/TextArea/TextArea.cjs.js +87 -0
- package/dist/TextArea/TextArea.esm.d.ts +61 -0
- package/dist/TextArea/TextArea.esm.js +79 -0
- package/dist/TextArea/package.json +7 -0
- package/dist/TextInput/TextInput.cjs.d.ts +1 -75
- package/dist/TextInput/TextInput.cjs.js +9 -75
- package/dist/TextInput/TextInput.esm.d.ts +1 -75
- package/dist/TextInput/TextInput.esm.js +8 -74
- package/dist/UniversalHeader/UniversalHeader.cjs.d.ts +1 -26
- package/dist/UniversalHeader/UniversalHeader.cjs.js +5 -30
- package/dist/UniversalHeader/UniversalHeader.esm.d.ts +1 -26
- package/dist/UniversalHeader/UniversalHeader.esm.js +4 -29
- package/dist/_shared/cjs/Breadcrumbs-8b554370.d.ts +61 -0
- package/dist/_shared/cjs/Breadcrumbs-8b554370.js +106 -0
- package/dist/_shared/cjs/BtIconChevronLeftMid-df952a3e.js +31 -0
- package/dist/_shared/cjs/{Button-5dff284a.js → Button-27512fee.js} +6 -27
- package/dist/_shared/cjs/Card-804ab0e5.d.ts +136 -0
- package/dist/_shared/cjs/Card-804ab0e5.js +124 -0
- package/dist/_shared/cjs/Checkbox-21d3c4f6.d.ts +64 -0
- package/dist/_shared/cjs/Checkbox-21d3c4f6.js +62 -0
- package/dist/_shared/cjs/Columns-e90798f8.d.ts +76 -0
- package/dist/_shared/cjs/Columns-e90798f8.js +57 -0
- package/dist/_shared/cjs/{DisclosureMini-5af13d3c.js → DisclosureMini-067e0319.js} +3 -1
- package/dist/_shared/cjs/Filter-f7d2fbda.d.ts +83 -0
- package/dist/_shared/cjs/Filter-f7d2fbda.js +121 -0
- package/dist/_shared/cjs/{FormControl-42360ae8.d.ts → FormControl-9aaddd54.d.ts} +4 -0
- package/dist/_shared/cjs/{FormControl-42360ae8.js → FormControl-9aaddd54.js} +9 -9
- package/dist/_shared/cjs/Group-d83f8c2e.d.ts +46 -0
- package/dist/_shared/cjs/Group-d83f8c2e.js +48 -0
- package/dist/_shared/cjs/ItemGroup-5af4d600.d.ts +27 -0
- package/dist/_shared/cjs/NavItem-df20237c.d.ts +43 -0
- package/dist/_shared/cjs/NavItemWithSubNav-65f21828.d.ts +49 -0
- package/dist/_shared/cjs/Poster-e05bbe13.d.ts +81 -0
- package/dist/_shared/cjs/Poster-e05bbe13.js +50 -0
- package/dist/_shared/cjs/RadioGroup-81805ef9.d.ts +97 -0
- package/dist/_shared/cjs/RadioGroup-81805ef9.js +70 -0
- package/dist/_shared/cjs/SiteFooter-c540b5f1.d.ts +62 -0
- package/dist/_shared/cjs/SiteFooter-c540b5f1.js +73 -0
- package/dist/_shared/cjs/SiteHeader-c25ee36e.d.ts +78 -0
- package/dist/_shared/cjs/SiteHeader.rehydrator-f7fa2efe.d.ts +78 -0
- package/dist/_shared/cjs/SiteHeader.rehydrator-f7fa2efe.js +673 -0
- package/dist/_shared/cjs/SubNavItem-a84d1bf4.d.ts +48 -0
- package/dist/_shared/cjs/TextInput-33314fc4.d.ts +10 -0
- package/dist/_shared/cjs/TextInput-33314fc4.js +78 -0
- package/dist/_shared/cjs/TextInput-7ed03a48.d.ts +75 -0
- package/dist/_shared/cjs/UniversalHeader-cc1d9e5a.d.ts +26 -0
- package/dist/_shared/cjs/UniversalHeader-cc1d9e5a.js +35 -0
- package/dist/_shared/cjs/debounce-506538c5.js +544 -0
- package/dist/_shared/cjs/index-699086a7.d.ts +2 -0
- package/dist/_shared/cjs/index-74488a9f.d.ts +2 -0
- package/dist/_shared/cjs/index-c81c9401.d.ts +3 -3
- package/dist/_shared/cjs/index-e340924e.d.ts +2 -0
- package/dist/_shared/cjs/index-e6d20018.d.ts +3 -0
- package/dist/_shared/cjs/index-eb06f640.d.ts +2 -0
- package/dist/_shared/cjs/index-f419cf04.d.ts +2 -0
- package/dist/_shared/esm/Breadcrumbs-04590057.d.ts +61 -0
- package/dist/_shared/esm/Breadcrumbs-04590057.js +100 -0
- package/dist/_shared/esm/BtIconChevronLeftMid-9f4f3a3d.js +25 -0
- package/dist/_shared/esm/{Button-61241dd0.js → Button-d319fa11.js} +2 -23
- package/dist/_shared/esm/Card-e79eb6c8.d.ts +136 -0
- package/dist/_shared/esm/Card-e79eb6c8.js +118 -0
- package/dist/_shared/esm/Checkbox-94300d8c.d.ts +64 -0
- package/dist/_shared/esm/Checkbox-94300d8c.js +56 -0
- package/dist/_shared/esm/Columns-8704515b.d.ts +76 -0
- package/dist/_shared/esm/Columns-8704515b.js +51 -0
- package/dist/_shared/esm/{DisclosureMini-322fccc0.js → DisclosureMini-022beae3.js} +3 -1
- package/dist/_shared/esm/Filter-41b391e3.d.ts +83 -0
- package/dist/_shared/esm/Filter-41b391e3.js +115 -0
- package/dist/_shared/esm/{FormControl-0744f93f.d.ts → FormControl-5e3fdca3.d.ts} +4 -0
- package/dist/_shared/esm/{FormControl-0744f93f.js → FormControl-5e3fdca3.js} +9 -9
- package/dist/_shared/esm/Group-d62c3f56.d.ts +46 -0
- package/dist/_shared/esm/Group-d62c3f56.js +42 -0
- package/dist/_shared/esm/ItemGroup-5af4d600.d.ts +27 -0
- package/dist/_shared/esm/NavItem-df20237c.d.ts +43 -0
- package/dist/_shared/esm/NavItemWithSubNav-65f21828.d.ts +49 -0
- package/dist/_shared/esm/Poster-107d6954.d.ts +81 -0
- package/dist/_shared/esm/Poster-107d6954.js +44 -0
- package/dist/_shared/esm/RadioGroup-1fd0f389.d.ts +97 -0
- package/dist/_shared/esm/RadioGroup-1fd0f389.js +64 -0
- package/dist/_shared/esm/SiteFooter-8075a9bd.d.ts +62 -0
- package/dist/_shared/esm/SiteFooter-8075a9bd.js +67 -0
- package/dist/_shared/esm/SiteHeader-c25ee36e.d.ts +78 -0
- package/dist/_shared/esm/SiteHeader.rehydrator-4da8ac64.d.ts +78 -0
- package/dist/_shared/esm/SiteHeader.rehydrator-4da8ac64.js +666 -0
- package/dist/_shared/esm/SubNavItem-a84d1bf4.d.ts +48 -0
- package/dist/_shared/esm/TextInput-1631dbc4.d.ts +10 -0
- package/dist/_shared/esm/TextInput-1631dbc4.js +72 -0
- package/dist/_shared/esm/TextInput-7ed03a48.d.ts +75 -0
- package/dist/_shared/esm/UniversalHeader-7926abde.d.ts +26 -0
- package/dist/_shared/esm/UniversalHeader-7926abde.js +29 -0
- package/dist/_shared/esm/debounce-e228705f.js +542 -0
- package/dist/_shared/esm/index-699086a7.d.ts +2 -0
- package/dist/_shared/esm/index-74488a9f.d.ts +2 -0
- package/dist/_shared/esm/index-c81c9401.d.ts +3 -3
- package/dist/_shared/esm/index-e340924e.d.ts +2 -0
- package/dist/_shared/esm/index-e6d20018.d.ts +3 -0
- package/dist/_shared/esm/index-eb06f640.d.ts +2 -0
- package/dist/_shared/esm/index-f419cf04.d.ts +2 -0
- package/dist/index.es.js +178 -27
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +179 -26
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/components/Filter/Filter.d.ts +38 -0
- package/dist/types/components/Filter/FilterControls/FilterControl/FilterControl.d.ts +16 -0
- package/dist/types/components/Filter/FilterControls/FilterControls.d.ts +12 -0
- package/dist/types/components/Filter/FilterItems/FilterItem/FilterItem.d.ts +12 -0
- package/dist/types/components/Filter/FilterItems/FilterItems.d.ts +12 -0
- package/dist/types/components/Filter/index.d.ts +1 -0
- package/dist/types/components/FormControl/FormControl.d.ts +4 -0
- package/dist/types/components/Pagination/Pagination.d.ts +19 -0
- package/dist/types/components/Pagination/index.d.ts +1 -0
- package/dist/types/components/PaginationSimple/PaginationSimple.d.ts +27 -0
- package/dist/types/components/PaginationSimple/index.d.ts +1 -0
- package/dist/types/components/RadioGroup/RadioGroup.d.ts +1 -1
- package/dist/types/components/ScrollToTop/ScrollToTop.d.ts +24 -0
- package/dist/types/components/ScrollToTop/index.d.ts +1 -0
- package/dist/types/components/Select/Select.d.ts +1 -1
- package/dist/types/components/Switch/Switch.d.ts +1 -1
- package/dist/types/components/TextArea/TextArea.d.ts +60 -0
- package/dist/types/components/TextArea/index.d.ts +1 -0
- package/dist/types/components/TextInput/TextInput.d.ts +1 -1
- package/dist/types/components/index.d.ts +2 -0
- package/dist/types/hooks/use-pagination.d.ts +1 -0
- package/dist/types/styles.d.ts +7 -2
- package/package.json +4 -4
- /package/dist/_shared/cjs/{Button-5dff284a.d.ts → Button-27512fee.d.ts} +0 -0
- /package/dist/_shared/cjs/{DisclosureMini-5af13d3c.d.ts → DisclosureMini-067e0319.d.ts} +0 -0
- /package/dist/_shared/esm/{Button-61241dd0.d.ts → Button-d319fa11.d.ts} +0 -0
- /package/dist/_shared/esm/{DisclosureMini-322fccc0.d.ts → DisclosureMini-022beae3.d.ts} +0 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var filterDataAttrs = require('./filter-data-attrs-a30dcf5f.js');
|
|
4
|
+
var index = require('./index-45bfb67b.js');
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var BtIconChevronRightMid = require('./BtIconChevronRightMid-5a38d855.js');
|
|
7
|
+
var Icon = require('./Icon-9ae8dbe1.js');
|
|
8
|
+
var Image = require('./Image-3bf4b4f3.js');
|
|
9
|
+
var Heading = require('./Heading-d45f6a7f.js');
|
|
10
|
+
var suffixModifier = require('./suffix-modifier-1ee2da04.js');
|
|
11
|
+
var Surface = require('./Surface-6da0a78e.js');
|
|
12
|
+
var handleLinkClick = require('./handle-link-click-17a44cf4.js');
|
|
13
|
+
|
|
14
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
15
|
+
|
|
16
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Detect interaction mode
|
|
20
|
+
*/
|
|
21
|
+
var useInteractionMode = function () {
|
|
22
|
+
var _a = React.useState("pointer"), interactionMode = _a[0], setInteractionMode = _a[1];
|
|
23
|
+
React.useEffect(function () {
|
|
24
|
+
var onKeyDown = function (event) {
|
|
25
|
+
if (event.altKey || event.ctrlKey || event.metaKey) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
setInteractionMode("keyboard");
|
|
29
|
+
};
|
|
30
|
+
var onPointerDown = function () {
|
|
31
|
+
setInteractionMode("pointer");
|
|
32
|
+
};
|
|
33
|
+
if (typeof window !== "undefined") {
|
|
34
|
+
document.addEventListener("keydown", onKeyDown, true);
|
|
35
|
+
document.addEventListener("click", onPointerDown, true);
|
|
36
|
+
}
|
|
37
|
+
return function () {
|
|
38
|
+
if (typeof window !== "undefined") {
|
|
39
|
+
document.removeEventListener("keydown", onKeyDown);
|
|
40
|
+
document.removeEventListener("click", onPointerDown);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
}, []);
|
|
44
|
+
return { interactionMode: interactionMode };
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Use `Card` to contain content and actions about a single subject.
|
|
49
|
+
*/
|
|
50
|
+
var Card = function (_a) {
|
|
51
|
+
var _b;
|
|
52
|
+
var actionId = _a.actionId, _c = _a.actionLabel, actionLabel = _c === void 0 ? "Read more" : _c, children = _a.children, _d = _a.fill, fill = _d === void 0 ? "solid" : _d, href = _a.href, imageAlt = _a.imageAlt, imageHeight = _a.imageHeight, imageLoading = _a.imageLoading, imageSrc = _a.imageSrc, imageSrcSet = _a.imageSrcSet, linkData = _a.linkData, minHeight = _a.minHeight, onClick = _a.onClick, target = _a.target, title = _a.title, _e = _a.titleSize, titleSize = _e === void 0 ? "s" : _e, props = filterDataAttrs.__rest(_a, ["actionId", "actionLabel", "children", "fill", "href", "imageAlt", "imageHeight", "imageLoading", "imageSrc", "imageSrcSet", "linkData", "minHeight", "onClick", "target", "title", "titleSize"]);
|
|
53
|
+
var surface = React.useContext(Surface.Context).surface;
|
|
54
|
+
var interactionMode = useInteractionMode().interactionMode;
|
|
55
|
+
var Wrapper = function (_a) {
|
|
56
|
+
var children = _a.children;
|
|
57
|
+
return fill === "outlined" || fill === "neutral" ? (React__default["default"].createElement("div", null, children)) : (React__default["default"].createElement(Surface.Surface, { background: surface === "dark" ? "white" : "darker" }, children));
|
|
58
|
+
};
|
|
59
|
+
var coverImage = imageSrc && (React__default["default"].createElement(CardImage, { alt: imageAlt, height: imageHeight, loading: imageLoading, src: imageSrc, srcSet: imageSrcSet }));
|
|
60
|
+
return (React__default["default"].createElement("div", filterDataAttrs.__assign({ className: index.classNames((_b = {
|
|
61
|
+
"arc-Card": true,
|
|
62
|
+
"arc-Card--onDarkSurface": surface === "dark"
|
|
63
|
+
},
|
|
64
|
+
_b[suffixModifier.suffixModifier("arc-Card--fill", fill)] = fill !== "solid",
|
|
65
|
+
_b["arc-is-".concat(interactionMode, "InteractionMode")] = interactionMode,
|
|
66
|
+
_b)) }, filterDataAttrs.filterDataAttrs(props)),
|
|
67
|
+
React__default["default"].createElement(Wrapper, null,
|
|
68
|
+
React__default["default"].createElement("div", { className: "arc-Card-inner", style: { minHeight: minHeight } },
|
|
69
|
+
React__default["default"].createElement("div", { className: "arc-Card-header" },
|
|
70
|
+
React__default["default"].createElement("div", { className: "arc-Card-title" },
|
|
71
|
+
React__default["default"].createElement(Heading.Heading, { size: titleSize },
|
|
72
|
+
React__default["default"].createElement(CardLink, { stretch: true, onClick: onClick, actionId: actionId, fill: fill, href: href, linkData: linkData, target: target }, title))),
|
|
73
|
+
coverImage),
|
|
74
|
+
React__default["default"].createElement("div", { className: "arc-Card-children" },
|
|
75
|
+
React__default["default"].createElement(Card.Block, null, children)),
|
|
76
|
+
href && (React__default["default"].createElement(CardBlock, null,
|
|
77
|
+
React__default["default"].createElement(CardLink, { href: href, fill: fill, actionId: actionId, onClick: onClick, isButton: true }, actionLabel)))))));
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Internal `Card.Block` component to section blocks of content within a Card.
|
|
81
|
+
*/
|
|
82
|
+
var CardBlock = function (_a) {
|
|
83
|
+
var _b = _a.align, align = _b === void 0 ? "left" : _b, children = _a.children, _c = _a.isFullWidth, isFullWidth = _c === void 0 ? false : _c, _d = _a.grow, grow = _d === void 0 ? false : _d;
|
|
84
|
+
return (React__default["default"].createElement("div", { className: index.classNames({
|
|
85
|
+
"arc-Card-block": true,
|
|
86
|
+
"arc-Card-block--alignCenter": align === "center",
|
|
87
|
+
"arc-Card-block--alignRight": align === "right",
|
|
88
|
+
"arc-Card-block--fullWidth": isFullWidth,
|
|
89
|
+
"arc-Card-block--grow": grow
|
|
90
|
+
}) },
|
|
91
|
+
React__default["default"].createElement("div", { className: "arc-Card-blockInner" }, children)));
|
|
92
|
+
};
|
|
93
|
+
CardBlock.displayName = "Card.Block";
|
|
94
|
+
Card.Block = CardBlock;
|
|
95
|
+
/**
|
|
96
|
+
* Internal `Card.Image` component to show an image within a Card.
|
|
97
|
+
*/
|
|
98
|
+
var CardImage = function (_a) {
|
|
99
|
+
var _b = _a.alt, alt = _b === void 0 ? "" : _b, _c = _a.height, height = _c === void 0 ? 176 : _c, loading = _a.loading, sizes = _a.sizes, src = _a.src, srcSet = _a.srcSet;
|
|
100
|
+
return (React__default["default"].createElement("div", { className: index.classNames({
|
|
101
|
+
"arc-Card-image": true
|
|
102
|
+
}) },
|
|
103
|
+
React__default["default"].createElement(Image.Image, { alt: alt, fit: "cover", height: height, loading: loading, sizes: sizes, src: src, srcSet: srcSet })));
|
|
104
|
+
};
|
|
105
|
+
CardImage.displayName = "Card.Image";
|
|
106
|
+
Card.Image = CardImage;
|
|
107
|
+
/**
|
|
108
|
+
* Internal `CardLink` component.
|
|
109
|
+
*/
|
|
110
|
+
var CardLink = function (_a) {
|
|
111
|
+
var actionId = _a.actionId, isButton = _a.isButton, children = _a.children, fill = _a.fill, href = _a.href, _b = _a.linkData, linkData = _b === void 0 ? {} : _b, onClick = _a.onClick, stretch = _a.stretch, target = _a.target;
|
|
112
|
+
var surface = React.useContext(Surface.Context).surface;
|
|
113
|
+
return (React__default["default"].createElement("a", filterDataAttrs.__assign({ onClick: handleLinkClick.handleLinkClick({ handler: onClick }), "aria-describedby": actionId, className: index.classNames({
|
|
114
|
+
"arc-Card-link": true,
|
|
115
|
+
"arc-Card-link--button": isButton,
|
|
116
|
+
"arc-Card-link--onDarkSurface": surface === "dark" && fill !== "neutral",
|
|
117
|
+
"arc-Card-link--stretch": stretch
|
|
118
|
+
}), href: href, rel: target === "_blank" ? "noopener noreferrer" : undefined, tabIndex: isButton ? -1 : undefined, target: target }, filterDataAttrs.filterDataAttrs(linkData)),
|
|
119
|
+
React__default["default"].createElement("span", { className: "arc-Card-linkText" }, children),
|
|
120
|
+
isButton && (React__default["default"].createElement("span", { className: "arc-Card-linkIcon" },
|
|
121
|
+
React__default["default"].createElement(Icon.Icon, { testId: "cardIcon", icon: BtIconChevronRightMid.BtIconChevronRightMid_2, size: 24 })))));
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
exports.Card = Card;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import React from "react";
|
|
3
|
+
type EventType = React.ChangeEvent<HTMLInputElement>;
|
|
4
|
+
/**
|
|
5
|
+
* Use `Checkbox` to allow users to select individual options.
|
|
6
|
+
*/
|
|
7
|
+
declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLInputElement>>;
|
|
8
|
+
interface CheckboxProps {
|
|
9
|
+
/**
|
|
10
|
+
* Error message for the Checkbox.
|
|
11
|
+
*/
|
|
12
|
+
errorMessage?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Helper text for the Checkbox, shown below the label.
|
|
15
|
+
*/
|
|
16
|
+
helper?: React.ReactNode;
|
|
17
|
+
/**
|
|
18
|
+
* Determine the alignment the Checkbox.
|
|
19
|
+
*
|
|
20
|
+
*/
|
|
21
|
+
checkboxAlignment?: "top" | "center";
|
|
22
|
+
/**
|
|
23
|
+
* ID for the Checkbox.
|
|
24
|
+
*/
|
|
25
|
+
id: string;
|
|
26
|
+
/**
|
|
27
|
+
* Is the input checked?
|
|
28
|
+
*/
|
|
29
|
+
checked?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* `isDisabled` is a legacy property and not recommended from a UX usability best practice perspective.
|
|
32
|
+
*/
|
|
33
|
+
isDisabled?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Is the Checkbox required?
|
|
36
|
+
*/
|
|
37
|
+
isRequired?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Label for the Checkbox.
|
|
40
|
+
*/
|
|
41
|
+
label: React.ReactNode;
|
|
42
|
+
/**
|
|
43
|
+
* Name for the Checkbox.
|
|
44
|
+
*/
|
|
45
|
+
name?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Function to call when the Checkbox loses focus.
|
|
48
|
+
*/
|
|
49
|
+
onBlur?: (e: EventType) => void;
|
|
50
|
+
/**
|
|
51
|
+
* Callback function to update the Checkbox's controlled `checked` prop, for
|
|
52
|
+
* example `e => setChecked(e.target.checked)`.
|
|
53
|
+
*/
|
|
54
|
+
onChange?: (event: EventType) => void;
|
|
55
|
+
/**
|
|
56
|
+
* Size of the Checkbox.
|
|
57
|
+
*/
|
|
58
|
+
size?: "s" | "l";
|
|
59
|
+
/**
|
|
60
|
+
* Value for the Checkbox.
|
|
61
|
+
*/
|
|
62
|
+
value?: string;
|
|
63
|
+
}
|
|
64
|
+
export { Checkbox, CheckboxProps };
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var filterDataAttrs = require('./filter-data-attrs-a30dcf5f.js');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var BtIconTickAlt2Px = require('./BtIconTickAlt2Px-bdf06f8c.js');
|
|
6
|
+
var BtIconAlert = require('./BtIconAlert-637db790.js');
|
|
7
|
+
var index = require('./index-45bfb67b.js');
|
|
8
|
+
var FormControl = require('./FormControl-9aaddd54.js');
|
|
9
|
+
var Surface = require('./Surface-6da0a78e.js');
|
|
10
|
+
|
|
11
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
12
|
+
|
|
13
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Use `Checkbox` to allow users to select individual options.
|
|
17
|
+
*/
|
|
18
|
+
var Checkbox = React.forwardRef(function (_a, ref) {
|
|
19
|
+
var _b = _a.checked, checked = _b === void 0 ? false : _b, errorMessage = _a.errorMessage, helper = _a.helper, id = _a.id, _c = _a.isDisabled, isDisabled = _c === void 0 ? false : _c, _d = _a.isRequired, isRequired = _d === void 0 ? false : _d, label = _a.label, name = _a.name, onBlur = _a.onBlur, onChange = _a.onChange, _e = _a.size, size = _e === void 0 ? "l" : _e, value = _a.value, _f = _a.checkboxAlignment, checkboxAlignment = _f === void 0 ? "center" : _f, props = filterDataAttrs.__rest(_a, ["checked", "errorMessage", "helper", "id", "isDisabled", "isRequired", "label", "name", "onBlur", "onChange", "size", "value", "checkboxAlignment"]);
|
|
20
|
+
var requirementStatus = React.useContext(FormControl.Context).requirementStatus;
|
|
21
|
+
var surface = React.useContext(Surface.Context).surface;
|
|
22
|
+
var _g = FormControl.useAriaDescribedby({
|
|
23
|
+
id: id,
|
|
24
|
+
errorMessage: errorMessage
|
|
25
|
+
}), ariaDescribedby = _g.ariaDescribedby, idError = _g.idError;
|
|
26
|
+
var idLabel = "".concat(id, "-label");
|
|
27
|
+
var checkedProps = {};
|
|
28
|
+
if (typeof onChange === "function") {
|
|
29
|
+
checkedProps.checked = checked;
|
|
30
|
+
}
|
|
31
|
+
else if (checked && !onChange) {
|
|
32
|
+
checkedProps.defaultChecked = true;
|
|
33
|
+
}
|
|
34
|
+
if (requirementStatus === "required") {
|
|
35
|
+
isRequired = true;
|
|
36
|
+
}
|
|
37
|
+
return (React__default["default"].createElement("div", { className: index.classNames({
|
|
38
|
+
"arc-Checkbox": true,
|
|
39
|
+
"arc-Checkbox--disabled": isDisabled,
|
|
40
|
+
"arc-Checkbox--invalid": errorMessage,
|
|
41
|
+
"arc-Checkbox--small": size === "s",
|
|
42
|
+
"arc-Checkbox--onDarkSurface": surface === "dark"
|
|
43
|
+
}) },
|
|
44
|
+
React__default["default"].createElement("label", { id: idLabel, htmlFor: id, className: index.classNames("arc-Checkbox-label", {
|
|
45
|
+
"arc-Checkbox-label--top": checkboxAlignment === "top"
|
|
46
|
+
}) },
|
|
47
|
+
React__default["default"].createElement("input", filterDataAttrs.__assign({ "aria-describedby": ariaDescribedby, "aria-invalid": errorMessage ? "true" : "false", className: "arc-Checkbox-input" }, checkedProps, { disabled: isDisabled, id: id, name: name, onBlur: onBlur, onChange: onChange, ref: ref, required: isRequired, type: "checkbox", value: value }, filterDataAttrs.filterDataAttrs(props))),
|
|
48
|
+
React__default["default"].createElement("span", { className: "arc-Checkbox-box" },
|
|
49
|
+
React__default["default"].createElement(BtIconTickAlt2Px.BtIconTickAlt2Px_2, null)),
|
|
50
|
+
React__default["default"].createElement("span", filterDataAttrs.__assign({}, (checkboxAlignment === "top" && {
|
|
51
|
+
className: "arc-Checkbox-content--marginTop"
|
|
52
|
+
})),
|
|
53
|
+
label,
|
|
54
|
+
!isRequired && requirementStatus !== "optional" ? (React__default["default"].createElement("span", { className: "arc-Checkbox-labelOptional" }, "(optional)")) : null,
|
|
55
|
+
helper && React__default["default"].createElement("span", { className: "arc-Checkbox-helper" }, helper))),
|
|
56
|
+
errorMessage && (React__default["default"].createElement("div", { id: idError, className: "arc-Checkbox-error" },
|
|
57
|
+
React__default["default"].createElement("span", { className: "arc-Checkbox-error--icon" },
|
|
58
|
+
React__default["default"].createElement(BtIconAlert.BtIconAlert_2, null)),
|
|
59
|
+
errorMessage))));
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
exports.Checkbox = Checkbox;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { FC, ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Use `Columns` to compose layouts on a 12-column grid.
|
|
4
|
+
*/
|
|
5
|
+
declare const Columns: FC<ColumnsProps> & {
|
|
6
|
+
Col: typeof Col;
|
|
7
|
+
};
|
|
8
|
+
declare const Col: FC<ColProps>;
|
|
9
|
+
type Span = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
|
|
10
|
+
type Offset = "0" | "24" | "48" | "72" | "96" | "120" | "144" | "168" | "192" | "216" | "240" | "264" | "288" | "312" | "336" | "360" | "384";
|
|
11
|
+
interface ColProps {
|
|
12
|
+
/**
|
|
13
|
+
* Vertically align the Column.
|
|
14
|
+
*/
|
|
15
|
+
align?: "top" | "center" | "bottom";
|
|
16
|
+
/**
|
|
17
|
+
* Content to display in the Column.
|
|
18
|
+
*/
|
|
19
|
+
children?: ReactNode;
|
|
20
|
+
/**
|
|
21
|
+
* Should the Column be visible for debugging and documentation
|
|
22
|
+
* purposes?
|
|
23
|
+
*/
|
|
24
|
+
isDebugVisible?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Overlay the column over the previous content on the default breakpoint and above. Multiples of 24 up to 384. Use with caution, and ensure to check responsive behaviour.
|
|
27
|
+
*/
|
|
28
|
+
offset?: Offset;
|
|
29
|
+
/**
|
|
30
|
+
* Overlay the column over the previous content on the S breakpoint and above. Multiples of 24 up to 384. Use with caution, and ensure to check responsive behaviour.
|
|
31
|
+
*/
|
|
32
|
+
offsetS?: Offset;
|
|
33
|
+
/**
|
|
34
|
+
* Overlay the column over the previous content on the M breakpoint and above. Multiples of 24 up to 384. Use with caution, and ensure to check responsive behaviour.
|
|
35
|
+
*/
|
|
36
|
+
offsetM?: Offset;
|
|
37
|
+
/**
|
|
38
|
+
* Overlay the column over the previous content on the L breakpoint and above. Multiples of 24 up to 384. Use with caution, and ensure to check responsive behaviour.
|
|
39
|
+
*/
|
|
40
|
+
offsetL?: Offset;
|
|
41
|
+
/**
|
|
42
|
+
* Overlay the column over the previous content on the XL breakpoint and above. Multiples of 24 up to 384. Use with caution, and ensure to check responsive behaviour.
|
|
43
|
+
*/
|
|
44
|
+
offsetXL?: Offset;
|
|
45
|
+
/**
|
|
46
|
+
* The number of columns to span on the default breakpoint and above, from 1 to 12.
|
|
47
|
+
*/
|
|
48
|
+
span?: Span;
|
|
49
|
+
/**
|
|
50
|
+
* The number of columns to span on the S breakpoint and above, from 1 to 12.
|
|
51
|
+
*/
|
|
52
|
+
spanS?: Span;
|
|
53
|
+
/**
|
|
54
|
+
* The number of columns to span on the M breakpoint and above, from 1 to 12.
|
|
55
|
+
*/
|
|
56
|
+
spanM?: Span;
|
|
57
|
+
/**
|
|
58
|
+
* The number of columns to span on the L breakpoint and above, from 1 to 12.
|
|
59
|
+
*/
|
|
60
|
+
spanL?: Span;
|
|
61
|
+
/**
|
|
62
|
+
* The number of columns to span on the XL breakpoint and above, from 1 to 12.
|
|
63
|
+
*/
|
|
64
|
+
spanXL?: Span;
|
|
65
|
+
}
|
|
66
|
+
interface ColumnsProps {
|
|
67
|
+
/**
|
|
68
|
+
* Contents of the Columns. Should only contain `Columns.Col`.
|
|
69
|
+
*/
|
|
70
|
+
children: ReactNode;
|
|
71
|
+
/**
|
|
72
|
+
* Should the Columns be gutterless?
|
|
73
|
+
*/
|
|
74
|
+
isGutterless?: boolean;
|
|
75
|
+
}
|
|
76
|
+
export { Columns, Col, ColProps, ColumnsProps };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var filterDataAttrs = require('./filter-data-attrs-a30dcf5f.js');
|
|
4
|
+
var index = require('./index-45bfb67b.js');
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var suffixModifier = require('./suffix-modifier-1ee2da04.js');
|
|
7
|
+
|
|
8
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
|
+
|
|
10
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Use `Columns` to compose layouts on a 12-column grid.
|
|
14
|
+
*/
|
|
15
|
+
var Columns = function (_a) {
|
|
16
|
+
var children = _a.children, _b = _a.isGutterless, isGutterless = _b === void 0 ? false : _b, props = filterDataAttrs.__rest(_a, ["children", "isGutterless"]);
|
|
17
|
+
React.useEffect(function () {
|
|
18
|
+
React__default["default"].Children.map(children, function (item) {
|
|
19
|
+
if (item && item.type !== Col) {
|
|
20
|
+
throw new Error("Illegal child passed to <Columns />. Ensure to only use <Columns.Col />.");
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}, [children]);
|
|
24
|
+
return (React__default["default"].createElement("div", filterDataAttrs.__assign({ className: index.classNames({
|
|
25
|
+
"arc-Columns": true,
|
|
26
|
+
"arc-Columns--gutterless": isGutterless
|
|
27
|
+
}) }, filterDataAttrs.filterDataAttrs(props)),
|
|
28
|
+
React__default["default"].createElement("div", { className: "arc-Columns-inner" }, children)));
|
|
29
|
+
};
|
|
30
|
+
var Col = function (_a) {
|
|
31
|
+
var _b;
|
|
32
|
+
var align = _a.align, children = _a.children, _c = _a.isDebugVisible, isDebugVisible = _c === void 0 ? false : _c, offset = _a.offset, offsetS = _a.offsetS, offsetM = _a.offsetM, offsetL = _a.offsetL, offsetXL = _a.offsetXL, span = _a.span, spanS = _a.spanS, spanM = _a.spanM, spanL = _a.spanL, spanXL = _a.spanXL, props = filterDataAttrs.__rest(_a, ["align", "children", "isDebugVisible", "offset", "offsetS", "offsetM", "offsetL", "offsetXL", "span", "spanS", "spanM", "spanL", "spanXL"]);
|
|
33
|
+
return (React__default["default"].createElement("div", filterDataAttrs.__assign({ className: index.classNames((_b = {},
|
|
34
|
+
_b["arc-Columns-col"] = true,
|
|
35
|
+
_b[suffixModifier.suffixModifier("arc-Columns-col--align", align || "")] = align,
|
|
36
|
+
_b["arc-Columns-col--".concat(span)] = typeof span !== "undefined",
|
|
37
|
+
_b["arc-Columns-col--s".concat(spanS)] = typeof spanS !== "undefined",
|
|
38
|
+
_b["arc-Columns-col--m".concat(spanM)] = typeof spanM !== "undefined",
|
|
39
|
+
_b["arc-Columns-col--l".concat(spanL)] = typeof spanL !== "undefined",
|
|
40
|
+
_b["arc-Columns-col--xL".concat(spanXL)] = typeof spanXL !== "undefined",
|
|
41
|
+
_b["arc-Columns-col--offset"] = typeof offset !== "undefined" ||
|
|
42
|
+
typeof offsetS !== "undefined" ||
|
|
43
|
+
typeof offsetM !== "undefined" ||
|
|
44
|
+
typeof offsetL !== "undefined" ||
|
|
45
|
+
typeof offsetXL !== "undefined",
|
|
46
|
+
_b["arc-Columns-col--offset".concat(offset)] = typeof offset !== "undefined",
|
|
47
|
+
_b["arc-Columns-col--offsetS".concat(offsetS)] = typeof offsetS !== "undefined",
|
|
48
|
+
_b["arc-Columns-col--offsetM".concat(offsetM)] = typeof offsetM !== "undefined",
|
|
49
|
+
_b["arc-Columns-col--offsetL".concat(offsetL)] = typeof offsetL !== "undefined",
|
|
50
|
+
_b["arc-Columns-col--offsetXL".concat(offsetXL)] = typeof offsetXL !== "undefined",
|
|
51
|
+
_b["arc-Columns-col--debugVisible"] = isDebugVisible,
|
|
52
|
+
_b)) }, filterDataAttrs.filterDataAttrs(props)), children));
|
|
53
|
+
};
|
|
54
|
+
Col.displayName = "Columns.Col";
|
|
55
|
+
Columns.Col = Col;
|
|
56
|
+
|
|
57
|
+
exports.Columns = Columns;
|
|
@@ -31,7 +31,9 @@ var DisclosureMini = function (_a) {
|
|
|
31
31
|
"arc-DisclosureMini-summary--icon-left": iconPosition === "left",
|
|
32
32
|
"arc-DisclosureMini-summary--icon-right": iconPosition === "right"
|
|
33
33
|
}), onClick: handleOnClick, "aria-expanded": disclousreState },
|
|
34
|
-
React__default["default"].createElement("
|
|
34
|
+
React__default["default"].createElement("div", { className: index.classNames("arc-DisclosureMini-summary-icon", {
|
|
35
|
+
"arc-DisclosureMini-summary-icon--small": size === "s"
|
|
36
|
+
}) },
|
|
35
37
|
React__default["default"].createElement(BtIconChevronDown2Px.BtIconChevronDown2Px_2, null)),
|
|
36
38
|
React__default["default"].createElement(Text.Text, { size: size === "l" ? "m" : "s" }, summary)),
|
|
37
39
|
React__default["default"].createElement("div", { className: "arc-DisclosureMini-details" },
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { FC, ReactNode } from "react";
|
|
2
|
+
declare const FilterItems: FC<FilterItemsProps>;
|
|
3
|
+
interface FilterItemsProps {
|
|
4
|
+
/**
|
|
5
|
+
* Render children of `<Filter.Items />`. This should only use `<Filter.Item />`
|
|
6
|
+
*/
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
/**
|
|
9
|
+
* Determine the display style of `<Filter.Item />`
|
|
10
|
+
*/
|
|
11
|
+
displayType?: "grid" | "list";
|
|
12
|
+
}
|
|
13
|
+
declare const FilterItem: FC<FilterItemProps>;
|
|
14
|
+
interface FilterItemProps {
|
|
15
|
+
/**
|
|
16
|
+
* Content to display within `Filter.Item`
|
|
17
|
+
*/
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
/**
|
|
20
|
+
* Attach Tags to content provided within `Filter.Item`
|
|
21
|
+
*/
|
|
22
|
+
tags: string[];
|
|
23
|
+
}
|
|
24
|
+
declare const FilterControls: FC<FilterControlsProps>;
|
|
25
|
+
interface FilterControlsProps {
|
|
26
|
+
/**
|
|
27
|
+
* Contents of the `<FilterControls />` Should contain `<FilterControl />`
|
|
28
|
+
*/
|
|
29
|
+
children: ReactNode;
|
|
30
|
+
/**
|
|
31
|
+
* Detmine how to align <FilterControl /> with in <FilterControls />. Default `center`
|
|
32
|
+
*/
|
|
33
|
+
controlsAlignment?: "left" | "right" | "center";
|
|
34
|
+
}
|
|
35
|
+
declare const FilterControl: FC<FilterControlProps>;
|
|
36
|
+
interface FilterControlProps {
|
|
37
|
+
/**
|
|
38
|
+
* Name of the `<FilterControl />`
|
|
39
|
+
*/
|
|
40
|
+
children: ReactNode;
|
|
41
|
+
/**
|
|
42
|
+
* Determine if the `<FilterControl />` is selected
|
|
43
|
+
*/
|
|
44
|
+
isSelected?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* onClick handler
|
|
47
|
+
*/
|
|
48
|
+
onClick?: () => void;
|
|
49
|
+
}
|
|
50
|
+
/** use `Filter` for interactive elements that filter and categorise page content. */
|
|
51
|
+
declare const Filter: FC<FilterProps> & {
|
|
52
|
+
Item: typeof FilterItem;
|
|
53
|
+
Items: typeof FilterItems;
|
|
54
|
+
Control: typeof FilterControl;
|
|
55
|
+
Controls: typeof FilterControls;
|
|
56
|
+
};
|
|
57
|
+
interface FilterProps {
|
|
58
|
+
/**
|
|
59
|
+
* Contents of the `<Filter />` Should contain `<Filter.Item />`
|
|
60
|
+
*/
|
|
61
|
+
children?: ReactNode;
|
|
62
|
+
/**
|
|
63
|
+
* onChange handler called everytime `<FilterControl />` is pressed
|
|
64
|
+
*/
|
|
65
|
+
onChange?: (selectedControls: string[]) => void;
|
|
66
|
+
/**
|
|
67
|
+
* Detmine how to display the content within `<Filter.Items />`. Default is `grid`
|
|
68
|
+
*/
|
|
69
|
+
displayType?: FilterItemsProps["displayType"];
|
|
70
|
+
/**
|
|
71
|
+
* Detmine how to align <Filter.Controls />. Default `center`
|
|
72
|
+
*/
|
|
73
|
+
controlsAlignment?: FilterControlsProps["controlsAlignment"];
|
|
74
|
+
/**
|
|
75
|
+
* Detmine if the `<Filter.Control />` have to partially match or match all
|
|
76
|
+
*/
|
|
77
|
+
logicType?: "AND" | "OR";
|
|
78
|
+
/**
|
|
79
|
+
* Detmine what is display when no items match the filtering criteria
|
|
80
|
+
*/
|
|
81
|
+
error?: ReactNode;
|
|
82
|
+
}
|
|
83
|
+
export { FilterItems, FilterItemsProps, FilterItem, FilterItemProps, FilterControls, FilterControlsProps, FilterControl, FilterControlProps, Filter, FilterProps };
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var filterDataAttrs = require('./filter-data-attrs-a30dcf5f.js');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var Surface = require('./Surface-6da0a78e.js');
|
|
6
|
+
var index = require('./index-45bfb67b.js');
|
|
7
|
+
|
|
8
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
|
+
|
|
10
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
11
|
+
|
|
12
|
+
var FilterControl = function (_a) {
|
|
13
|
+
var children = _a.children, onClick = _a.onClick, _b = _a.isSelected, isSelected = _b === void 0 ? false : _b;
|
|
14
|
+
var surface = React.useContext(Surface.Context).surface;
|
|
15
|
+
var _c = React.useState(isSelected), selected = _c[0], setSelected = _c[1];
|
|
16
|
+
var onClickHandler = function () {
|
|
17
|
+
onClick && onClick();
|
|
18
|
+
setSelected(function (previousValue) { return !previousValue; });
|
|
19
|
+
};
|
|
20
|
+
return (React__default["default"].createElement("button", { className: index.classNames("arc-FilterControl", {
|
|
21
|
+
"arc-FilterControl--onDarkSurface": surface === "dark",
|
|
22
|
+
"arc-FilterControl--selected": selected
|
|
23
|
+
}), onClick: onClickHandler, tabIndex: 0 },
|
|
24
|
+
React__default["default"].createElement("div", { className: "arc-FilterControl-text" }, children)));
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
var FilterControls = function (_a) {
|
|
28
|
+
var children = _a.children, controlsAlignment = _a.controlsAlignment, props = filterDataAttrs.__rest(_a, ["children", "controlsAlignment"]);
|
|
29
|
+
return (React__default["default"].createElement("div", filterDataAttrs.__assign({ className: index.classNames("arc-FilterControls", {
|
|
30
|
+
"arc-FilterControls--alignLeft": controlsAlignment === "left",
|
|
31
|
+
"arc-FilterControls--alignRight": controlsAlignment === "right"
|
|
32
|
+
}) }, filterDataAttrs.filterDataAttrs(props)), children));
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
var FilterItem = function (_a) {
|
|
36
|
+
var children = _a.children, props = filterDataAttrs.__rest(_a, ["children"]);
|
|
37
|
+
return (React__default["default"].createElement("div", filterDataAttrs.__assign({ className: "arc-FilterItem" }, filterDataAttrs.filterDataAttrs(props)), children));
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
var FilterItems = function (_a) {
|
|
41
|
+
var children = _a.children, _b = _a.displayType, displayType = _b === void 0 ? "grid" : _b, props = filterDataAttrs.__rest(_a, ["children", "displayType"]);
|
|
42
|
+
return (React__default["default"].createElement("div", filterDataAttrs.__assign({ className: index.classNames("arc-FilterItems", {
|
|
43
|
+
"arc-FilterItems--list": displayType === "list",
|
|
44
|
+
"arc-FilterItems--grid": displayType === "grid"
|
|
45
|
+
}) }, filterDataAttrs.filterDataAttrs(props)), displayType === "list"
|
|
46
|
+
? React__default["default"].Children.toArray(children).map(function (child, index, array) { return (React__default["default"].createElement(React__default["default"].Fragment, { key: index },
|
|
47
|
+
child,
|
|
48
|
+
index !== array.length - 1 && (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
49
|
+
React__default["default"].createElement("div", { className: "arc-FilterItems-separator", "data-testid": "arc-FilterItems-separator" }))))); })
|
|
50
|
+
: children));
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
/** use `Filter` for interactive elements that filter and categorise page content. */
|
|
54
|
+
var Filter = function (_a) {
|
|
55
|
+
var children = _a.children, onChange = _a.onChange, displayType = _a.displayType, controlsAlignment = _a.controlsAlignment, _b = _a.logicType, logicType = _b === void 0 ? "OR" : _b, error = _a.error, props = filterDataAttrs.__rest(_a, ["children", "onChange", "displayType", "controlsAlignment", "logicType", "error"]);
|
|
56
|
+
var _c = React.useState([]), selectedControls = _c[0], setSelectedControls = _c[1];
|
|
57
|
+
var controls = React__default["default"].Children.toArray(children).find(function (child) { return React__default["default"].isValidElement(child) && child.type === FilterControls; });
|
|
58
|
+
var items = React__default["default"].Children.toArray(children).find(function (child) { return React__default["default"].isValidElement(child) && child.type === FilterItems; });
|
|
59
|
+
React.useEffect(function () {
|
|
60
|
+
var initialSelectedControls = [];
|
|
61
|
+
if (controls && React__default["default"].isValidElement(controls)) {
|
|
62
|
+
React__default["default"].Children.forEach(controls.props.children, function (child) {
|
|
63
|
+
if (child.props.isSelected) {
|
|
64
|
+
initialSelectedControls.push(child.props.children);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
setSelectedControls(initialSelectedControls);
|
|
69
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
70
|
+
}, []);
|
|
71
|
+
var handleControlClick = function (clickedControl) {
|
|
72
|
+
if (selectedControls.includes(clickedControl)) {
|
|
73
|
+
var updatedControls = selectedControls.filter(function (control) { return control !== clickedControl; });
|
|
74
|
+
setSelectedControls(updatedControls);
|
|
75
|
+
if (onChange) {
|
|
76
|
+
onChange(updatedControls);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
var updatedControls = filterDataAttrs.__spreadArray(filterDataAttrs.__spreadArray([], selectedControls, true), [clickedControl], false);
|
|
81
|
+
setSelectedControls(updatedControls);
|
|
82
|
+
if (onChange) {
|
|
83
|
+
onChange(updatedControls);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
var filterItems = React__default["default"].Children.toArray(items && React__default["default"].isValidElement(items) && items.props.children);
|
|
88
|
+
var filteredItems = filterItems.filter(function (filteredItem) {
|
|
89
|
+
// If no tags are selected, show all items
|
|
90
|
+
if (selectedControls.length === 0) {
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
// If logicType is "AND", all selected tags should be present in the item's tags
|
|
94
|
+
if (logicType === "AND") {
|
|
95
|
+
return selectedControls.every(function (control) {
|
|
96
|
+
return filteredItem.props.tags.includes(control);
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
// Check if item has tags property and if any selected tags are present in item's tags
|
|
101
|
+
return selectedControls.some(function (control) {
|
|
102
|
+
return filteredItem.props.tags.includes(control);
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
return (React__default["default"].createElement("div", filterDataAttrs.__assign({ className: "arc-Filter" }, filterDataAttrs.filterDataAttrs(props)),
|
|
107
|
+
React__default["default"].createElement(FilterControls, { controlsAlignment: controlsAlignment }, controls &&
|
|
108
|
+
React__default["default"].isValidElement(controls) &&
|
|
109
|
+
React__default["default"].Children.map(controls.props.children, function (control, index) { return (React__default["default"].createElement(FilterControl, { key: index, onClick: function () { return handleControlClick(control.props.children); }, isSelected: control.props.isSelected }, control.props.children)); })),
|
|
110
|
+
filteredItems.length === 0 ? (React__default["default"].createElement(React__default["default"].Fragment, null, error)) : (React__default["default"].createElement(FilterItems, { displayType: displayType }, filteredItems.map(function (item) { return item.props.children; })))));
|
|
111
|
+
};
|
|
112
|
+
Filter.Controls = FilterControls;
|
|
113
|
+
Filter.Control = FilterControl;
|
|
114
|
+
Filter.Items = FilterItems;
|
|
115
|
+
Filter.Item = FilterItem;
|
|
116
|
+
FilterControls.displayName = "Filter.Controls";
|
|
117
|
+
FilterControl.displayName = "Filter.Control";
|
|
118
|
+
FilterItems.displayName = "Filter.Items";
|
|
119
|
+
FilterItem.displayName = "Filter.Item";
|
|
120
|
+
|
|
121
|
+
exports.Filter = Filter;
|
|
@@ -87,6 +87,10 @@ interface FormControlProps {
|
|
|
87
87
|
* onClick handler for FormControlDisclosure
|
|
88
88
|
*/
|
|
89
89
|
onClickDisclosure?: () => void;
|
|
90
|
+
/**
|
|
91
|
+
* Optional additional information for the FormControl.
|
|
92
|
+
*/
|
|
93
|
+
supplementaryInfo?: React.ReactNode;
|
|
90
94
|
/**
|
|
91
95
|
* Position helper text under label. This is set to `false` by default.
|
|
92
96
|
*/
|