@veracity/vui 1.6.0 → 1.7.0-beta.1
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/cjs/accordion/accordion.d.ts +1 -1
- package/dist/cjs/accordion/accordion.d.ts.map +1 -1
- package/dist/cjs/accordion/accordion.js +7 -7
- package/dist/cjs/accordion/accordion.types.d.ts +11 -0
- package/dist/cjs/accordion/accordion.types.d.ts.map +1 -1
- package/dist/cjs/accordion/accordionItem.d.ts.map +1 -1
- package/dist/cjs/accordion/accordionItem.js +3 -3
- package/dist/cjs/accordion/accordionItemArrow.d.ts +1 -1
- package/dist/cjs/accordion/accordionItemArrow.d.ts.map +1 -1
- package/dist/cjs/accordion/accordionItemArrow.js +10 -3
- package/dist/cjs/accordion/accordionItemHorizontal.d.ts +5 -0
- package/dist/cjs/accordion/accordionItemHorizontal.d.ts.map +1 -0
- package/dist/cjs/accordion/accordionItemHorizontal.js +70 -0
- package/dist/cjs/accordion/index.d.ts +1 -0
- package/dist/cjs/accordion/index.d.ts.map +1 -1
- package/dist/cjs/accordion/index.js +1 -0
- package/dist/cjs/button/button.d.ts +1 -0
- package/dist/cjs/button/button.d.ts.map +1 -1
- package/dist/cjs/button/button.js +4 -3
- package/dist/cjs/button/button.types.d.ts +2 -0
- package/dist/cjs/button/button.types.d.ts.map +1 -1
- package/dist/esm/accordion/accordion.d.ts +1 -1
- package/dist/esm/accordion/accordion.d.ts.map +1 -1
- package/dist/esm/accordion/accordion.js +6 -6
- package/dist/esm/accordion/accordion.types.d.ts +11 -0
- package/dist/esm/accordion/accordion.types.d.ts.map +1 -1
- package/dist/esm/accordion/accordionItem.d.ts.map +1 -1
- package/dist/esm/accordion/accordionItem.js +3 -3
- package/dist/esm/accordion/accordionItemArrow.d.ts +1 -1
- package/dist/esm/accordion/accordionItemArrow.d.ts.map +1 -1
- package/dist/esm/accordion/accordionItemArrow.js +10 -3
- package/dist/esm/accordion/accordionItemHorizontal.d.ts +5 -0
- package/dist/esm/accordion/accordionItemHorizontal.d.ts.map +1 -0
- package/dist/esm/accordion/accordionItemHorizontal.js +29 -0
- package/dist/esm/accordion/index.d.ts +1 -0
- package/dist/esm/accordion/index.d.ts.map +1 -1
- package/dist/esm/accordion/index.js +1 -0
- package/dist/esm/button/button.d.ts +1 -0
- package/dist/esm/button/button.d.ts.map +1 -1
- package/dist/esm/button/button.js +3 -2
- package/dist/esm/button/button.types.d.ts +2 -0
- package/dist/esm/button/button.types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/accordion/accordion.tsx +14 -7
- package/src/accordion/accordion.types.ts +12 -7
- package/src/accordion/accordionItem.tsx +11 -4
- package/src/accordion/accordionItemArrow.tsx +13 -3
- package/src/accordion/accordionItemHorizontal.tsx +85 -0
- package/src/accordion/index.ts +1 -0
- package/src/button/button.tsx +4 -1
- package/src/button/button.types.ts +2 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AccordionProps } from './accordion.types';
|
|
2
2
|
export declare const AccordionBase: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("..").SystemProps, never>;
|
|
3
|
-
/**
|
|
3
|
+
/** Allows to show and hide sections of related content on a page. */
|
|
4
4
|
export declare const Accordion: import("../core").VuiComponent<"div", AccordionProps>;
|
|
5
5
|
export default Accordion;
|
|
6
6
|
//# sourceMappingURL=accordion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordion.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAsB,cAAc,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordion.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAsB,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAKtE,eAAO,MAAM,aAAa,+HAIzB,CAAA;AAED,qEAAqE;AACrE,eAAO,MAAM,SAAS,uDAyBpB,CAAA;AAEF,eAAe,SAAS,CAAA"}
|
|
@@ -43,23 +43,23 @@ const core_1 = require("../core");
|
|
|
43
43
|
const list_1 = __importDefault(require("../list"));
|
|
44
44
|
const utils_1 = require("../utils");
|
|
45
45
|
const accordionItem_1 = __importDefault(require("./accordionItem"));
|
|
46
|
+
const accordionItemHorizontal_1 = __importDefault(require("./accordionItemHorizontal"));
|
|
46
47
|
const context_1 = require("./context");
|
|
47
48
|
exports.AccordionBase = core_1.styled.divBox `
|
|
48
49
|
display: flex;
|
|
49
50
|
min-width: 0;
|
|
50
51
|
transition-duration: normal;
|
|
51
52
|
`;
|
|
52
|
-
/**
|
|
53
|
+
/** Allows to show and hide sections of related content on a page. */
|
|
53
54
|
exports.Accordion = (0, core_1.vui)((props, ref) => {
|
|
54
|
-
var _a;
|
|
55
|
-
const { children, className, items, size } = props, rest = __rest(props, ["children", "className", "items", "size"]);
|
|
55
|
+
var _a, _b;
|
|
56
|
+
const { children, className, orientation = 'vertical', items, size } = props, rest = __rest(props, ["children", "className", "orientation", "items", "size"]);
|
|
56
57
|
const styles = (0, core_1.useStyleConfig)('Accordion', props);
|
|
57
58
|
const context = (0, react_1.useMemo)(() => (0, utils_1.filterUndefined)({ size }), [size]);
|
|
58
59
|
const aliasedProps = (0, utils_1.filterUndefined)({});
|
|
59
60
|
return (react_1.default.createElement(context_1.AccordionProvider, { value: context },
|
|
60
|
-
react_1.default.createElement(exports.AccordionBase, Object.assign({ className: (0, utils_1.cs)('vui-accordion', className), ref: ref }, styles, aliasedProps, rest),
|
|
61
|
-
react_1.default.createElement(
|
|
62
|
-
|
|
63
|
-
: children))));
|
|
61
|
+
react_1.default.createElement(exports.AccordionBase, Object.assign({ className: (0, utils_1.cs)('vui-accordion', className), ref: ref }, styles, aliasedProps, rest), orientation === 'vertical' ? (react_1.default.createElement(list_1.default, { w: "100%" }, items
|
|
62
|
+
? (_a = items === null || items === void 0 ? void 0 : items.map) === null || _a === void 0 ? void 0 : _a.call(items, (item, key) => react_1.default.createElement(accordionItem_1.default, Object.assign({ key: key }, item)))
|
|
63
|
+
: children)) : items ? ((_b = items === null || items === void 0 ? void 0 : items.map) === null || _b === void 0 ? void 0 : _b.call(items, (item, key) => react_1.default.createElement(accordionItemHorizontal_1.default, Object.assign({ key: key }, item)))) : (children))));
|
|
64
64
|
});
|
|
65
65
|
exports.default = exports.Accordion;
|
|
@@ -2,7 +2,10 @@ import { ReactNode } from 'react';
|
|
|
2
2
|
import { ListItemProps } from '../list';
|
|
3
3
|
import { SystemProps } from '../system';
|
|
4
4
|
import { ThemingProps } from '../theme';
|
|
5
|
+
export declare type Orientation = 'vertical' | 'horizontal';
|
|
5
6
|
export declare type AccordionProps = SystemProps & ThemingProps<'Accordion'> & {
|
|
7
|
+
/** Items orientation @default 'vertical' */
|
|
8
|
+
orientation?: Orientation;
|
|
6
9
|
items?: AccordionItemProps[];
|
|
7
10
|
};
|
|
8
11
|
export declare type AccordionItemId = string | number;
|
|
@@ -11,15 +14,23 @@ export declare type AccordionOnToggleEvent = {
|
|
|
11
14
|
collapsed: boolean;
|
|
12
15
|
};
|
|
13
16
|
export declare type AccordionItemProps = ListItemProps & {
|
|
17
|
+
/** Unique ID */
|
|
14
18
|
id: AccordionItemId;
|
|
19
|
+
/** Custom class name */
|
|
15
20
|
className?: string;
|
|
21
|
+
/** Content */
|
|
16
22
|
children?: ReactNode;
|
|
23
|
+
/** Alternative way to provide content */
|
|
17
24
|
content?: ReactNode;
|
|
25
|
+
/** Collapsed state */
|
|
18
26
|
collapsed?: boolean;
|
|
27
|
+
/** Title */
|
|
19
28
|
title?: string | ReactNode;
|
|
29
|
+
/** Collapse change state */
|
|
20
30
|
onToggle?: (event: AccordionOnToggleEvent) => void;
|
|
21
31
|
};
|
|
22
32
|
export declare type AccordionItemArrowProps = {
|
|
23
33
|
collapsed?: boolean;
|
|
34
|
+
orientation?: Orientation;
|
|
24
35
|
};
|
|
25
36
|
//# sourceMappingURL=accordion.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.types.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordion.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,oBAAY,cAAc,GAAG,WAAW,GACtC,YAAY,CAAC,WAAW,CAAC,GAAG;IAC1B,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAC7B,CAAA;AAEH,oBAAY,eAAe,GAAG,MAAM,GAAG,MAAM,CAAA;AAE7C,oBAAY,sBAAsB,GAAG;IACnC,EAAE,EAAE,eAAe,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,oBAAY,kBAAkB,GAAG,aAAa,GAAG;
|
|
1
|
+
{"version":3,"file":"accordion.types.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordion.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,oBAAY,WAAW,GAAG,UAAU,GAAG,YAAY,CAAA;AAEnD,oBAAY,cAAc,GAAG,WAAW,GACtC,YAAY,CAAC,WAAW,CAAC,GAAG;IAC1B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAC7B,CAAA;AAEH,oBAAY,eAAe,GAAG,MAAM,GAAG,MAAM,CAAA;AAE7C,oBAAY,sBAAsB,GAAG;IACnC,EAAE,EAAE,eAAe,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,oBAAY,kBAAkB,GAAG,aAAa,GAAG;IAC/C,gBAAgB;IAChB,EAAE,EAAE,eAAe,CAAA;IACnB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc;IACd,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,yCAAyC;IACzC,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,sBAAsB;IACtB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAA;CACnD,CAAA;AAED,oBAAY,uBAAuB,GAAG;IACpC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordionItem.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordionItem.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAItD,yBAAyB;AACzB,eAAO,MAAM,aAAa,UAAW,kBAAkB,
|
|
1
|
+
{"version":3,"file":"accordionItem.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordionItem.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAItD,yBAAyB;AACzB,eAAO,MAAM,aAAa,UAAW,kBAAkB,gBAkDtD,CAAA;AAED,eAAe,aAAa,CAAA"}
|
|
@@ -59,12 +59,12 @@ const AccordionItem = (props) => {
|
|
|
59
59
|
setIsCollapsedInternal(!collapsedInternal);
|
|
60
60
|
}
|
|
61
61
|
};
|
|
62
|
-
return (react_1.default.createElement(list_1.ListItem, Object.assign({ borderBottom: "1px solid grey.40", className: (0, utils_1.cs)('vui-accordion-item', className), disabled: disabled, flexDirection: "column", h: "auto",
|
|
63
|
-
react_1.default.createElement(box_1.Box, { cursor: disabled ? 'not-allowed' : 'pointer', justifyContent: "space-between", onClick: toggle, w: "100%" },
|
|
62
|
+
return (react_1.default.createElement(list_1.ListItem, Object.assign({ borderBottom: "1px solid grey.40", className: (0, utils_1.cs)('vui-accordion-item', className), disabled: disabled, flexDirection: "column", h: "auto", id: `${id}`, p: 0, w: "100%" }, rest),
|
|
63
|
+
react_1.default.createElement(box_1.Box, Object.assign({ cursor: disabled ? 'not-allowed' : 'pointer', hoverBg: "blue.10", justifyContent: "space-between", onClick: toggle, px: 2, w: "100%" }, styles.item),
|
|
64
64
|
react_1.default.createElement(box_1.Box, { fontWeight: typeof title === 'string' ? '500' : 'inherit' }, title),
|
|
65
65
|
react_1.default.createElement(box_1.Box, null,
|
|
66
66
|
react_1.default.createElement(accordionItemArrow_1.default, { collapsed: collapsedInternal }))),
|
|
67
|
-
!collapsedInternal && (react_1.default.createElement(box_1.Box, { mb: 2, mt: 2, w: "100%" }, children !== null && children !== void 0 ? children : content))));
|
|
67
|
+
!collapsedInternal && (react_1.default.createElement(box_1.Box, { mb: 2, mt: 2, px: 2, py: 1, w: "100%" }, children !== null && children !== void 0 ? children : content))));
|
|
68
68
|
};
|
|
69
69
|
exports.AccordionItem = AccordionItem;
|
|
70
70
|
exports.default = exports.AccordionItem;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { AccordionItemArrowProps } from './accordion.types';
|
|
3
|
-
declare const _default: React.MemoExoticComponent<(
|
|
3
|
+
declare const _default: React.MemoExoticComponent<({ collapsed, orientation }: AccordionItemArrowProps) => JSX.Element>;
|
|
4
4
|
export default _default;
|
|
5
5
|
//# sourceMappingURL=accordionItemArrow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordionItemArrow.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordionItemArrow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;;
|
|
1
|
+
{"version":3,"file":"accordionItemArrow.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordionItemArrow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;;AAiB3D,wBAA6C"}
|
|
@@ -5,8 +5,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const react_1 = __importDefault(require("react"));
|
|
7
7
|
const icon_1 = __importDefault(require("../icon"));
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
const names = {
|
|
9
|
+
horizontal: {
|
|
10
|
+
collapsed: 'falChevronRight',
|
|
11
|
+
expanded: 'falChevronLeft'
|
|
12
|
+
},
|
|
13
|
+
vertical: {
|
|
14
|
+
collapsed: 'falChevronDown',
|
|
15
|
+
expanded: 'falChevronUp'
|
|
16
|
+
}
|
|
11
17
|
};
|
|
18
|
+
const AccordionItemArrow = ({ collapsed, orientation = 'vertical' }) => (react_1.default.createElement(icon_1.default, { name: names[orientation][collapsed ? 'collapsed' : 'expanded'], size: "xs" }));
|
|
12
19
|
exports.default = react_1.default.memo(AccordionItemArrow);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { AccordionItemProps } from './accordion.types';
|
|
2
|
+
/** [Beta] An accordion item (horizontal orientation). */
|
|
3
|
+
export declare const AccordionItemHorizontal: (props: AccordionItemProps) => JSX.Element;
|
|
4
|
+
export default AccordionItemHorizontal;
|
|
5
|
+
//# sourceMappingURL=accordionItemHorizontal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordionItemHorizontal.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordionItemHorizontal.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAItD,yDAAyD;AACzD,eAAO,MAAM,uBAAuB,UAAW,kBAAkB,gBAwEhE,CAAA;AAED,eAAe,uBAAuB,CAAA"}
|
|
@@ -0,0 +1,70 @@
|
|
|
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
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
26
|
+
var t = {};
|
|
27
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
28
|
+
t[p] = s[p];
|
|
29
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
30
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
31
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
32
|
+
t[p[i]] = s[p[i]];
|
|
33
|
+
}
|
|
34
|
+
return t;
|
|
35
|
+
};
|
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
+
};
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.AccordionItemHorizontal = void 0;
|
|
41
|
+
const react_1 = __importStar(require("react"));
|
|
42
|
+
const box_1 = __importDefault(require("../box"));
|
|
43
|
+
const core_1 = require("../core");
|
|
44
|
+
const utils_1 = require("../utils");
|
|
45
|
+
const accordionItemArrow_1 = __importDefault(require("./accordionItemArrow"));
|
|
46
|
+
const context_1 = require("./context");
|
|
47
|
+
/** [Beta] An accordion item (horizontal orientation). */
|
|
48
|
+
const AccordionItemHorizontal = (props) => {
|
|
49
|
+
const _a = (0, core_1.omitThemingProps)(props), { className, children, id, content, disabled, title, collapsed, onToggle } = _a, rest = __rest(_a, ["className", "children", "id", "content", "disabled", "title", "collapsed", "onToggle"]);
|
|
50
|
+
const [collapsedInternal, setIsCollapsedInternal] = (0, react_1.useState)(false);
|
|
51
|
+
const styles = (0, core_1.useStyleConfig)('Accordion', (0, context_1.useAccordionContext)());
|
|
52
|
+
(0, react_1.useEffect)(() => {
|
|
53
|
+
setIsCollapsedInternal(!!collapsed);
|
|
54
|
+
}, [collapsed]);
|
|
55
|
+
const toggle = () => {
|
|
56
|
+
if (!disabled) {
|
|
57
|
+
onToggle === null || onToggle === void 0 ? void 0 : onToggle({ id, collapsed: !collapsedInternal });
|
|
58
|
+
setIsCollapsedInternal(!collapsedInternal);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
const cursor = disabled ? 'not-allowed' : 'pointer';
|
|
62
|
+
const fontWeight = typeof title === 'string' ? '500' : 'inherit';
|
|
63
|
+
return (react_1.default.createElement(box_1.default, Object.assign({ alignItems: collapsedInternal ? 'normal' : 'baseline', bg: disabled ? 'disabled.bg' : undefined, borderRight: "1px solid grey.40", className: (0, utils_1.cs)('vui-accordion-item-horizontal', className), color: disabled ? 'disabled.color' : undefined, column: true, cursor: disabled ? 'not-allowed' : undefined, id: `${id}`, maxW: collapsedInternal ? styles.item.minH : 'auto', minW: styles.item.minH, p: 0, transitionDuration: "0ms", userSelect: disabled ? 'none' : undefined }, rest),
|
|
64
|
+
react_1.default.createElement(box_1.default, Object.assign({}, styles.item, { cursor: cursor, hoverBg: "blue.10", justifyContent: "space-between", minH: styles.item.minH, onClick: toggle, p: styles.item.pt, w: "100%" }),
|
|
65
|
+
!collapsedInternal && react_1.default.createElement(box_1.default, { fontWeight: fontWeight }, title),
|
|
66
|
+
react_1.default.createElement(accordionItemArrow_1.default, { collapsed: collapsedInternal, orientation: "horizontal" })),
|
|
67
|
+
!collapsedInternal ? (react_1.default.createElement(box_1.default, { p: styles.item.pt, pt: 0, transitionDuration: "0ms" }, children !== null && children !== void 0 ? children : content)) : (react_1.default.createElement(box_1.default, { cursor: cursor, flexDirection: "row-reverse", fontWeight: fontWeight, mb: styles.item.minH, mt: styles.item.pt, onClick: toggle, transform: "rotate(-90deg)", transitionDuration: "0ms", whiteSpace: "nowrap" }, title))));
|
|
68
|
+
};
|
|
69
|
+
exports.AccordionItemHorizontal = AccordionItemHorizontal;
|
|
70
|
+
exports.default = exports.AccordionItemHorizontal;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/accordion/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,cAAc,mBAAmB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/accordion/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,cAAc,mBAAmB,CAAA"}
|
|
@@ -20,6 +20,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
20
20
|
exports.default = void 0;
|
|
21
21
|
__exportStar(require("./accordion"), exports);
|
|
22
22
|
__exportStar(require("./accordionItem"), exports);
|
|
23
|
+
__exportStar(require("./accordionItemHorizontal"), exports);
|
|
23
24
|
var accordion_1 = require("./accordion");
|
|
24
25
|
Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(accordion_1).default; } });
|
|
25
26
|
__exportStar(require("./accordion.types"), exports);
|
|
@@ -9,6 +9,7 @@ export declare const ButtonBase: import("styled-components").StyledComponent<"bu
|
|
|
9
9
|
iconLeft?: JSX.Element | import("..").IconProp | undefined;
|
|
10
10
|
iconRight?: JSX.Element | import("..").IconProp | undefined;
|
|
11
11
|
isActive?: boolean | undefined;
|
|
12
|
+
isDropDown?: boolean | undefined;
|
|
12
13
|
isElevated?: boolean | undefined;
|
|
13
14
|
isFullWidth?: boolean | undefined;
|
|
14
15
|
isLoading?: boolean | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/button/button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAGtC,OAAO,EAA+B,YAAY,EAAE,MAAM,SAAS,CAAA;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,UAAU,MAAM,cAAc,CAAA;AACrC,OAAO,UAAU,MAAM,cAAc,CAAA;AAiBrC,eAAO,MAAM,UAAU
|
|
1
|
+
{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/button/button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAGtC,OAAO,EAA+B,YAAY,EAAE,MAAM,SAAS,CAAA;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,UAAU,MAAM,cAAc,CAAA;AACrC,OAAO,UAAU,MAAM,cAAc,CAAA;AAiBrC,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;SAoBtB,CAAA;AACD;;;;;;GAMG;AACH,eAAO,MAAM,MAAM;UAuHX,iBAAiB;UACjB,iBAAiB;CACxB,CAAA;AAKD,eAAe,MAAM,CAAA"}
|
|
@@ -89,8 +89,8 @@ exports.Button = (0, core_1.vui)((props, ref) => {
|
|
|
89
89
|
var _a, _b, _c, _d;
|
|
90
90
|
const buttonGroupProps = (0, context_1.useButtonGroupContext)();
|
|
91
91
|
const mergedProps = Object.assign(Object.assign({}, buttonGroupProps), props);
|
|
92
|
-
const { borderWidth: borderWidthProp, children, className, colorScheme: colorSchemeProp, disabled, icon, iconLeft, iconRight, isActive, isElevated, isFullWidth, isLoading, // eslint-disable-line
|
|
93
|
-
isRound, isSplit, isTruncated, size, state = props.isLoading ? 'loading' : '', stateMapping, text, variant } = mergedProps, rest = __rest(mergedProps, ["borderWidth", "children", "className", "colorScheme", "disabled", "icon", "iconLeft", "iconRight", "isActive", "isElevated", "isFullWidth", "isLoading", "isRound", "isSplit", "isTruncated", "size", "state", "stateMapping", "text", "variant"]);
|
|
92
|
+
const { borderWidth: borderWidthProp, children, className, colorScheme: colorSchemeProp, disabled, icon, iconLeft, iconRight, isActive, isDropDown, isElevated, isFullWidth, isLoading, // eslint-disable-line
|
|
93
|
+
isRound, isSplit, isTruncated, size, state = props.isLoading ? 'loading' : '', stateMapping, text, variant } = mergedProps, rest = __rest(mergedProps, ["borderWidth", "children", "className", "colorScheme", "disabled", "icon", "iconLeft", "iconRight", "isActive", "isDropDown", "isElevated", "isFullWidth", "isLoading", "isRound", "isSplit", "isTruncated", "size", "state", "stateMapping", "text", "variant"]);
|
|
94
94
|
const hasState = Boolean(state) && state !== 'idle';
|
|
95
95
|
const states = Object.assign(Object.assign({}, consts_1.buttonStateMapping), stateMapping);
|
|
96
96
|
const _e = (_a = states[state]) !== null && _a !== void 0 ? _a : {}, { iconProps: stateIconProps } = _e, stateProps = __rest(_e, ["iconProps"]);
|
|
@@ -136,7 +136,8 @@ exports.Button = (0, core_1.vui)((props, ref) => {
|
|
|
136
136
|
react_1.default.createElement(Content, null,
|
|
137
137
|
(0, utils_1.isString)(icon) ? react_1.default.createElement(buttonIcon_1.default, { name: icon }) : icon,
|
|
138
138
|
!icon && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
139
|
-
(0, utils_1.isString)(iconLeft) ? react_1.default.createElement(buttonIcon_1.default, { mr: iconLeftMr, name: iconLeft }) : iconLeft, children !== null && children !== void 0 ? children : ((0, utils_1.isReactText)(text) ? react_1.default.createElement(buttonText_1.default, Object.assign({}, { isTruncated, text })) : text),
|
|
139
|
+
(0, utils_1.isString)(iconLeft) ? react_1.default.createElement(buttonIcon_1.default, { mr: isDropDown ? 0 : iconLeftMr, name: iconLeft }) : iconLeft, children !== null && children !== void 0 ? children : ((0, utils_1.isReactText)(text) ? react_1.default.createElement(buttonText_1.default, Object.assign({}, { isTruncated, text })) : text),
|
|
140
|
+
isDropDown && react_1.default.createElement(buttonIcon_1.default, { name: "falAngleDown" }),
|
|
140
141
|
(0, utils_1.isString)(iconRight) ? react_1.default.createElement(buttonIcon_1.default, { ml: iconRightMl, name: iconRight }) : iconRight))))));
|
|
141
142
|
});
|
|
142
143
|
exports.Button.Icon = buttonIcon_1.default;
|
|
@@ -15,6 +15,8 @@ export declare type ButtonProps = SystemProps & ThemingProps<'Button'> & {
|
|
|
15
15
|
iconRight?: IconProp | JSX.Element;
|
|
16
16
|
/** Adds an active class name for further handling. */
|
|
17
17
|
isActive?: boolean;
|
|
18
|
+
/** Adds an drop down pointer to the left. */
|
|
19
|
+
isDropDown?: boolean;
|
|
18
20
|
/** Adds box shadow style. @default false */
|
|
19
21
|
isElevated?: boolean;
|
|
20
22
|
/** Makes the button take full width of the container. @deprecated */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.types.d.ts","sourceRoot":"","sources":["../../../src/button/button.types.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC,oBAAY,iBAAiB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,CAAA;AAE9E,oBAAY,WAAW,GAAG,WAAW,GACnC,YAAY,CAAC,QAAQ,CAAC,GAAG;IACvB,mEAAmE;IACnE,WAAW,CAAC,EAAE,iBAAiB,CAAA;IAC/B,4CAA4C;IAC5C,IAAI,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAA;IAC7B,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAA;IACjC,gDAAgD;IAChD,SAAS,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAA;IAClC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,yCAAyC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,kEAAkE;IAClE,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC,sDAAsD;IACtD,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CACvB,CAAA;AACH,oBAAY,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;AAE9E,oBAAY,kBAAkB,GAAG,MAAM,CACrC,MAAM,EACN,WAAW,GAAG;IAAE,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,CAChF,CAAA;AAED,wDAAwD;AACxD,oBAAY,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"button.types.d.ts","sourceRoot":"","sources":["../../../src/button/button.types.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC,oBAAY,iBAAiB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,CAAA;AAE9E,oBAAY,WAAW,GAAG,WAAW,GACnC,YAAY,CAAC,QAAQ,CAAC,GAAG;IACvB,mEAAmE;IACnE,WAAW,CAAC,EAAE,iBAAiB,CAAA;IAC/B,4CAA4C;IAC5C,IAAI,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAA;IAC7B,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAA;IACjC,gDAAgD;IAChD,SAAS,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAA;IAClC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,yCAAyC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,kEAAkE;IAClE,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC,sDAAsD;IACtD,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CACvB,CAAA;AACH,oBAAY,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;AAE9E,oBAAY,kBAAkB,GAAG,MAAM,CACrC,MAAM,EACN,WAAW,GAAG;IAAE,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,CAChF,CAAA;AAED,wDAAwD;AACxD,oBAAY,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,CAAC,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AccordionProps } from './accordion.types';
|
|
2
2
|
export declare const AccordionBase: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("..").SystemProps, never>;
|
|
3
|
-
/**
|
|
3
|
+
/** Allows to show and hide sections of related content on a page. */
|
|
4
4
|
export declare const Accordion: import("../core").VuiComponent<"div", AccordionProps>;
|
|
5
5
|
export default Accordion;
|
|
6
6
|
//# sourceMappingURL=accordion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordion.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAsB,cAAc,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordion.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAsB,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAKtE,eAAO,MAAM,aAAa,+HAIzB,CAAA;AAED,qEAAqE;AACrE,eAAO,MAAM,SAAS,uDAyBpB,CAAA;AAEF,eAAe,SAAS,CAAA"}
|
|
@@ -3,22 +3,22 @@ import { styled, useStyleConfig, vui } from '../core';
|
|
|
3
3
|
import List from '../list';
|
|
4
4
|
import { cs, filterUndefined } from '../utils';
|
|
5
5
|
import AccordionItem from './accordionItem';
|
|
6
|
+
import AccordionItemHorizontal from './accordionItemHorizontal';
|
|
6
7
|
import { AccordionProvider } from './context';
|
|
7
8
|
export const AccordionBase = styled.divBox `
|
|
8
9
|
display: flex;
|
|
9
10
|
min-width: 0;
|
|
10
11
|
transition-duration: normal;
|
|
11
12
|
`;
|
|
12
|
-
/**
|
|
13
|
+
/** Allows to show and hide sections of related content on a page. */
|
|
13
14
|
export const Accordion = vui((props, ref) => {
|
|
14
|
-
const { children, className, items, size, ...rest } = props;
|
|
15
|
+
const { children, className, orientation = 'vertical', items, size, ...rest } = props;
|
|
15
16
|
const styles = useStyleConfig('Accordion', props);
|
|
16
17
|
const context = useMemo(() => filterUndefined({ size }), [size]);
|
|
17
18
|
const aliasedProps = filterUndefined({});
|
|
18
19
|
return (React.createElement(AccordionProvider, { value: context },
|
|
19
|
-
React.createElement(AccordionBase, { className: cs('vui-accordion', className), ref: ref, ...styles, ...aliasedProps, ...rest },
|
|
20
|
-
React.createElement(
|
|
21
|
-
|
|
22
|
-
: children))));
|
|
20
|
+
React.createElement(AccordionBase, { className: cs('vui-accordion', className), ref: ref, ...styles, ...aliasedProps, ...rest }, orientation === 'vertical' ? (React.createElement(List, { w: "100%" }, items
|
|
21
|
+
? items?.map?.((item, key) => React.createElement(AccordionItem, { key: key, ...item }))
|
|
22
|
+
: children)) : items ? (items?.map?.((item, key) => React.createElement(AccordionItemHorizontal, { key: key, ...item }))) : (children))));
|
|
23
23
|
});
|
|
24
24
|
export default Accordion;
|
|
@@ -2,7 +2,10 @@ import { ReactNode } from 'react';
|
|
|
2
2
|
import { ListItemProps } from '../list';
|
|
3
3
|
import { SystemProps } from '../system';
|
|
4
4
|
import { ThemingProps } from '../theme';
|
|
5
|
+
export declare type Orientation = 'vertical' | 'horizontal';
|
|
5
6
|
export declare type AccordionProps = SystemProps & ThemingProps<'Accordion'> & {
|
|
7
|
+
/** Items orientation @default 'vertical' */
|
|
8
|
+
orientation?: Orientation;
|
|
6
9
|
items?: AccordionItemProps[];
|
|
7
10
|
};
|
|
8
11
|
export declare type AccordionItemId = string | number;
|
|
@@ -11,15 +14,23 @@ export declare type AccordionOnToggleEvent = {
|
|
|
11
14
|
collapsed: boolean;
|
|
12
15
|
};
|
|
13
16
|
export declare type AccordionItemProps = ListItemProps & {
|
|
17
|
+
/** Unique ID */
|
|
14
18
|
id: AccordionItemId;
|
|
19
|
+
/** Custom class name */
|
|
15
20
|
className?: string;
|
|
21
|
+
/** Content */
|
|
16
22
|
children?: ReactNode;
|
|
23
|
+
/** Alternative way to provide content */
|
|
17
24
|
content?: ReactNode;
|
|
25
|
+
/** Collapsed state */
|
|
18
26
|
collapsed?: boolean;
|
|
27
|
+
/** Title */
|
|
19
28
|
title?: string | ReactNode;
|
|
29
|
+
/** Collapse change state */
|
|
20
30
|
onToggle?: (event: AccordionOnToggleEvent) => void;
|
|
21
31
|
};
|
|
22
32
|
export declare type AccordionItemArrowProps = {
|
|
23
33
|
collapsed?: boolean;
|
|
34
|
+
orientation?: Orientation;
|
|
24
35
|
};
|
|
25
36
|
//# sourceMappingURL=accordion.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.types.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordion.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,oBAAY,cAAc,GAAG,WAAW,GACtC,YAAY,CAAC,WAAW,CAAC,GAAG;IAC1B,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAC7B,CAAA;AAEH,oBAAY,eAAe,GAAG,MAAM,GAAG,MAAM,CAAA;AAE7C,oBAAY,sBAAsB,GAAG;IACnC,EAAE,EAAE,eAAe,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,oBAAY,kBAAkB,GAAG,aAAa,GAAG;
|
|
1
|
+
{"version":3,"file":"accordion.types.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordion.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,oBAAY,WAAW,GAAG,UAAU,GAAG,YAAY,CAAA;AAEnD,oBAAY,cAAc,GAAG,WAAW,GACtC,YAAY,CAAC,WAAW,CAAC,GAAG;IAC1B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAC7B,CAAA;AAEH,oBAAY,eAAe,GAAG,MAAM,GAAG,MAAM,CAAA;AAE7C,oBAAY,sBAAsB,GAAG;IACnC,EAAE,EAAE,eAAe,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,oBAAY,kBAAkB,GAAG,aAAa,GAAG;IAC/C,gBAAgB;IAChB,EAAE,EAAE,eAAe,CAAA;IACnB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc;IACd,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,yCAAyC;IACzC,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,sBAAsB;IACtB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAA;CACnD,CAAA;AAED,oBAAY,uBAAuB,GAAG;IACpC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordionItem.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordionItem.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAItD,yBAAyB;AACzB,eAAO,MAAM,aAAa,UAAW,kBAAkB,
|
|
1
|
+
{"version":3,"file":"accordionItem.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordionItem.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAItD,yBAAyB;AACzB,eAAO,MAAM,aAAa,UAAW,kBAAkB,gBAkDtD,CAAA;AAED,eAAe,aAAa,CAAA"}
|
|
@@ -19,11 +19,11 @@ export const AccordionItem = (props) => {
|
|
|
19
19
|
setIsCollapsedInternal(!collapsedInternal);
|
|
20
20
|
}
|
|
21
21
|
};
|
|
22
|
-
return (React.createElement(ListItem, { borderBottom: "1px solid grey.40", className: cs('vui-accordion-item', className), disabled: disabled, flexDirection: "column", h: "auto",
|
|
23
|
-
React.createElement(Box, { cursor: disabled ? 'not-allowed' : 'pointer', justifyContent: "space-between", onClick: toggle, w: "100%" },
|
|
22
|
+
return (React.createElement(ListItem, { borderBottom: "1px solid grey.40", className: cs('vui-accordion-item', className), disabled: disabled, flexDirection: "column", h: "auto", id: `${id}`, p: 0, w: "100%", ...rest },
|
|
23
|
+
React.createElement(Box, { cursor: disabled ? 'not-allowed' : 'pointer', hoverBg: "blue.10", justifyContent: "space-between", onClick: toggle, px: 2, w: "100%", ...styles.item },
|
|
24
24
|
React.createElement(Box, { fontWeight: typeof title === 'string' ? '500' : 'inherit' }, title),
|
|
25
25
|
React.createElement(Box, null,
|
|
26
26
|
React.createElement(AccordionItemArrow, { collapsed: collapsedInternal }))),
|
|
27
|
-
!collapsedInternal && (React.createElement(Box, { mb: 2, mt: 2, w: "100%" }, children ?? content))));
|
|
27
|
+
!collapsedInternal && (React.createElement(Box, { mb: 2, mt: 2, px: 2, py: 1, w: "100%" }, children ?? content))));
|
|
28
28
|
};
|
|
29
29
|
export default AccordionItem;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { AccordionItemArrowProps } from './accordion.types';
|
|
3
|
-
declare const _default: React.MemoExoticComponent<(
|
|
3
|
+
declare const _default: React.MemoExoticComponent<({ collapsed, orientation }: AccordionItemArrowProps) => JSX.Element>;
|
|
4
4
|
export default _default;
|
|
5
5
|
//# sourceMappingURL=accordionItemArrow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordionItemArrow.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordionItemArrow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;;
|
|
1
|
+
{"version":3,"file":"accordionItemArrow.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordionItemArrow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;;AAiB3D,wBAA6C"}
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import Icon from '../icon';
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
const names = {
|
|
4
|
+
horizontal: {
|
|
5
|
+
collapsed: 'falChevronRight',
|
|
6
|
+
expanded: 'falChevronLeft'
|
|
7
|
+
},
|
|
8
|
+
vertical: {
|
|
9
|
+
collapsed: 'falChevronDown',
|
|
10
|
+
expanded: 'falChevronUp'
|
|
11
|
+
}
|
|
6
12
|
};
|
|
13
|
+
const AccordionItemArrow = ({ collapsed, orientation = 'vertical' }) => (React.createElement(Icon, { name: names[orientation][collapsed ? 'collapsed' : 'expanded'], size: "xs" }));
|
|
7
14
|
export default React.memo(AccordionItemArrow);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { AccordionItemProps } from './accordion.types';
|
|
2
|
+
/** [Beta] An accordion item (horizontal orientation). */
|
|
3
|
+
export declare const AccordionItemHorizontal: (props: AccordionItemProps) => JSX.Element;
|
|
4
|
+
export default AccordionItemHorizontal;
|
|
5
|
+
//# sourceMappingURL=accordionItemHorizontal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordionItemHorizontal.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordionItemHorizontal.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAItD,yDAAyD;AACzD,eAAO,MAAM,uBAAuB,UAAW,kBAAkB,gBAwEhE,CAAA;AAED,eAAe,uBAAuB,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
|
+
import Box from '../box';
|
|
3
|
+
import { omitThemingProps, useStyleConfig } from '../core';
|
|
4
|
+
import { cs } from '../utils';
|
|
5
|
+
import AccordionItemArrow from './accordionItemArrow';
|
|
6
|
+
import { useAccordionContext } from './context';
|
|
7
|
+
/** [Beta] An accordion item (horizontal orientation). */
|
|
8
|
+
export const AccordionItemHorizontal = (props) => {
|
|
9
|
+
const { className, children, id, content, disabled, title, collapsed, onToggle, ...rest } = omitThemingProps(props);
|
|
10
|
+
const [collapsedInternal, setIsCollapsedInternal] = useState(false);
|
|
11
|
+
const styles = useStyleConfig('Accordion', useAccordionContext());
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
setIsCollapsedInternal(!!collapsed);
|
|
14
|
+
}, [collapsed]);
|
|
15
|
+
const toggle = () => {
|
|
16
|
+
if (!disabled) {
|
|
17
|
+
onToggle?.({ id, collapsed: !collapsedInternal });
|
|
18
|
+
setIsCollapsedInternal(!collapsedInternal);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
const cursor = disabled ? 'not-allowed' : 'pointer';
|
|
22
|
+
const fontWeight = typeof title === 'string' ? '500' : 'inherit';
|
|
23
|
+
return (React.createElement(Box, { alignItems: collapsedInternal ? 'normal' : 'baseline', bg: disabled ? 'disabled.bg' : undefined, borderRight: "1px solid grey.40", className: cs('vui-accordion-item-horizontal', className), color: disabled ? 'disabled.color' : undefined, column: true, cursor: disabled ? 'not-allowed' : undefined, id: `${id}`, maxW: collapsedInternal ? styles.item.minH : 'auto', minW: styles.item.minH, p: 0, transitionDuration: "0ms", userSelect: disabled ? 'none' : undefined, ...rest },
|
|
24
|
+
React.createElement(Box, { ...styles.item, cursor: cursor, hoverBg: "blue.10", justifyContent: "space-between", minH: styles.item.minH, onClick: toggle, p: styles.item.pt, w: "100%" },
|
|
25
|
+
!collapsedInternal && React.createElement(Box, { fontWeight: fontWeight }, title),
|
|
26
|
+
React.createElement(AccordionItemArrow, { collapsed: collapsedInternal, orientation: "horizontal" })),
|
|
27
|
+
!collapsedInternal ? (React.createElement(Box, { p: styles.item.pt, pt: 0, transitionDuration: "0ms" }, children ?? content)) : (React.createElement(Box, { cursor: cursor, flexDirection: "row-reverse", fontWeight: fontWeight, mb: styles.item.minH, mt: styles.item.pt, onClick: toggle, transform: "rotate(-90deg)", transitionDuration: "0ms", whiteSpace: "nowrap" }, title))));
|
|
28
|
+
};
|
|
29
|
+
export default AccordionItemHorizontal;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/accordion/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,cAAc,mBAAmB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/accordion/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,cAAc,mBAAmB,CAAA"}
|
|
@@ -9,6 +9,7 @@ export declare const ButtonBase: import("styled-components").StyledComponent<"bu
|
|
|
9
9
|
iconLeft?: JSX.Element | import("..").IconProp | undefined;
|
|
10
10
|
iconRight?: JSX.Element | import("..").IconProp | undefined;
|
|
11
11
|
isActive?: boolean | undefined;
|
|
12
|
+
isDropDown?: boolean | undefined;
|
|
12
13
|
isElevated?: boolean | undefined;
|
|
13
14
|
isFullWidth?: boolean | undefined;
|
|
14
15
|
isLoading?: boolean | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/button/button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAGtC,OAAO,EAA+B,YAAY,EAAE,MAAM,SAAS,CAAA;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,UAAU,MAAM,cAAc,CAAA;AACrC,OAAO,UAAU,MAAM,cAAc,CAAA;AAiBrC,eAAO,MAAM,UAAU
|
|
1
|
+
{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/button/button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAGtC,OAAO,EAA+B,YAAY,EAAE,MAAM,SAAS,CAAA;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,UAAU,MAAM,cAAc,CAAA;AACrC,OAAO,UAAU,MAAM,cAAc,CAAA;AAiBrC,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;SAoBtB,CAAA;AACD;;;;;;GAMG;AACH,eAAO,MAAM,MAAM;UAuHX,iBAAiB;UACjB,iBAAiB;CACxB,CAAA;AAKD,eAAe,MAAM,CAAA"}
|
|
@@ -48,7 +48,7 @@ export const ButtonBase = styled.buttonBox `
|
|
|
48
48
|
export const Button = vui((props, ref) => {
|
|
49
49
|
const buttonGroupProps = useButtonGroupContext();
|
|
50
50
|
const mergedProps = { ...buttonGroupProps, ...props };
|
|
51
|
-
const { borderWidth: borderWidthProp, children, className, colorScheme: colorSchemeProp, disabled, icon, iconLeft, iconRight, isActive, isElevated, isFullWidth, isLoading, // eslint-disable-line
|
|
51
|
+
const { borderWidth: borderWidthProp, children, className, colorScheme: colorSchemeProp, disabled, icon, iconLeft, iconRight, isActive, isDropDown, isElevated, isFullWidth, isLoading, // eslint-disable-line
|
|
52
52
|
isRound, isSplit, isTruncated, size, state = props.isLoading ? 'loading' : '', stateMapping, text, variant, ...rest } = mergedProps;
|
|
53
53
|
const hasState = Boolean(state) && state !== 'idle';
|
|
54
54
|
const states = { ...buttonStateMapping, ...stateMapping };
|
|
@@ -95,8 +95,9 @@ export const Button = vui((props, ref) => {
|
|
|
95
95
|
React.createElement(Content, null,
|
|
96
96
|
isString(icon) ? React.createElement(ButtonIcon, { name: icon }) : icon,
|
|
97
97
|
!icon && (React.createElement(React.Fragment, null,
|
|
98
|
-
isString(iconLeft) ? React.createElement(ButtonIcon, { mr: iconLeftMr, name: iconLeft }) : iconLeft,
|
|
98
|
+
isString(iconLeft) ? React.createElement(ButtonIcon, { mr: isDropDown ? 0 : iconLeftMr, name: iconLeft }) : iconLeft,
|
|
99
99
|
children ?? (isReactText(text) ? React.createElement(ButtonText, { ...{ isTruncated, text } }) : text),
|
|
100
|
+
isDropDown && React.createElement(ButtonIcon, { name: "falAngleDown" }),
|
|
100
101
|
isString(iconRight) ? React.createElement(ButtonIcon, { ml: iconRightMl, name: iconRight }) : iconRight))))));
|
|
101
102
|
});
|
|
102
103
|
Button.Icon = ButtonIcon;
|
|
@@ -15,6 +15,8 @@ export declare type ButtonProps = SystemProps & ThemingProps<'Button'> & {
|
|
|
15
15
|
iconRight?: IconProp | JSX.Element;
|
|
16
16
|
/** Adds an active class name for further handling. */
|
|
17
17
|
isActive?: boolean;
|
|
18
|
+
/** Adds an drop down pointer to the left. */
|
|
19
|
+
isDropDown?: boolean;
|
|
18
20
|
/** Adds box shadow style. @default false */
|
|
19
21
|
isElevated?: boolean;
|
|
20
22
|
/** Makes the button take full width of the container. @deprecated */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.types.d.ts","sourceRoot":"","sources":["../../../src/button/button.types.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC,oBAAY,iBAAiB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,CAAA;AAE9E,oBAAY,WAAW,GAAG,WAAW,GACnC,YAAY,CAAC,QAAQ,CAAC,GAAG;IACvB,mEAAmE;IACnE,WAAW,CAAC,EAAE,iBAAiB,CAAA;IAC/B,4CAA4C;IAC5C,IAAI,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAA;IAC7B,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAA;IACjC,gDAAgD;IAChD,SAAS,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAA;IAClC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,yCAAyC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,kEAAkE;IAClE,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC,sDAAsD;IACtD,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CACvB,CAAA;AACH,oBAAY,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;AAE9E,oBAAY,kBAAkB,GAAG,MAAM,CACrC,MAAM,EACN,WAAW,GAAG;IAAE,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,CAChF,CAAA;AAED,wDAAwD;AACxD,oBAAY,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"button.types.d.ts","sourceRoot":"","sources":["../../../src/button/button.types.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC,oBAAY,iBAAiB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,CAAA;AAE9E,oBAAY,WAAW,GAAG,WAAW,GACnC,YAAY,CAAC,QAAQ,CAAC,GAAG;IACvB,mEAAmE;IACnE,WAAW,CAAC,EAAE,iBAAiB,CAAA;IAC/B,4CAA4C;IAC5C,IAAI,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAA;IAC7B,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAA;IACjC,gDAAgD;IAChD,SAAS,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAA;IAClC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,yCAAyC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,kEAAkE;IAClE,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC,sDAAsD;IACtD,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CACvB,CAAA;AACH,oBAAY,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;AAE9E,oBAAY,kBAAkB,GAAG,MAAM,CACrC,MAAM,EACN,WAAW,GAAG;IAAE,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,CAChF,CAAA;AAED,wDAAwD;AACxD,oBAAY,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@veracity/vui",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0-beta.1",
|
|
4
4
|
"description": "Veracity UI is a React component library crafted for use within Veracity applications and pages. Based on Styled Components and @xstyled.",
|
|
5
5
|
"module": "./dist/esm/index.js",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|
|
@@ -5,6 +5,7 @@ import List from '../list'
|
|
|
5
5
|
import { cs, filterUndefined } from '../utils'
|
|
6
6
|
import { AccordionItemProps, AccordionProps } from './accordion.types'
|
|
7
7
|
import AccordionItem from './accordionItem'
|
|
8
|
+
import AccordionItemHorizontal from './accordionItemHorizontal'
|
|
8
9
|
import { AccordionProvider } from './context'
|
|
9
10
|
|
|
10
11
|
export const AccordionBase = styled.divBox`
|
|
@@ -13,9 +14,9 @@ export const AccordionBase = styled.divBox`
|
|
|
13
14
|
transition-duration: normal;
|
|
14
15
|
`
|
|
15
16
|
|
|
16
|
-
/**
|
|
17
|
+
/** Allows to show and hide sections of related content on a page. */
|
|
17
18
|
export const Accordion = vui<'div', AccordionProps>((props, ref) => {
|
|
18
|
-
const { children, className, items, size, ...rest } = props
|
|
19
|
+
const { children, className, orientation = 'vertical', items, size, ...rest } = props
|
|
19
20
|
const styles = useStyleConfig('Accordion', props)
|
|
20
21
|
|
|
21
22
|
const context = useMemo(() => filterUndefined({ size }), [size])
|
|
@@ -25,11 +26,17 @@ export const Accordion = vui<'div', AccordionProps>((props, ref) => {
|
|
|
25
26
|
return (
|
|
26
27
|
<AccordionProvider value={context}>
|
|
27
28
|
<AccordionBase className={cs('vui-accordion', className)} ref={ref} {...styles} {...aliasedProps} {...rest}>
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
{orientation === 'vertical' ? (
|
|
30
|
+
<List w="100%">
|
|
31
|
+
{items
|
|
32
|
+
? items?.map?.((item: AccordionItemProps, key: number) => <AccordionItem key={key} {...item} />)
|
|
33
|
+
: children}
|
|
34
|
+
</List>
|
|
35
|
+
) : items ? (
|
|
36
|
+
items?.map?.((item: AccordionItemProps, key: number) => <AccordionItemHorizontal key={key} {...item} />)
|
|
37
|
+
) : (
|
|
38
|
+
children
|
|
39
|
+
)}
|
|
33
40
|
</AccordionBase>
|
|
34
41
|
</AccordionProvider>
|
|
35
42
|
)
|
|
@@ -4,8 +4,12 @@ import { ListItemProps } from '../list'
|
|
|
4
4
|
import { SystemProps } from '../system'
|
|
5
5
|
import { ThemingProps } from '../theme'
|
|
6
6
|
|
|
7
|
+
export type Orientation = 'vertical' | 'horizontal'
|
|
8
|
+
|
|
7
9
|
export type AccordionProps = SystemProps &
|
|
8
10
|
ThemingProps<'Accordion'> & {
|
|
11
|
+
/** Items orientation @default 'vertical' */
|
|
12
|
+
orientation?: Orientation
|
|
9
13
|
items?: AccordionItemProps[]
|
|
10
14
|
}
|
|
11
15
|
|
|
@@ -17,22 +21,23 @@ export type AccordionOnToggleEvent = {
|
|
|
17
21
|
}
|
|
18
22
|
|
|
19
23
|
export type AccordionItemProps = ListItemProps & {
|
|
20
|
-
|
|
24
|
+
/** Unique ID */
|
|
21
25
|
id: AccordionItemId
|
|
22
|
-
|
|
26
|
+
/** Custom class name */
|
|
23
27
|
className?: string
|
|
24
|
-
|
|
28
|
+
/** Content */
|
|
25
29
|
children?: ReactNode
|
|
26
|
-
|
|
30
|
+
/** Alternative way to provide content */
|
|
27
31
|
content?: ReactNode
|
|
28
|
-
|
|
32
|
+
/** Collapsed state */
|
|
29
33
|
collapsed?: boolean
|
|
30
|
-
|
|
34
|
+
/** Title */
|
|
31
35
|
title?: string | ReactNode
|
|
32
|
-
|
|
36
|
+
/** Collapse change state */
|
|
33
37
|
onToggle?: (event: AccordionOnToggleEvent) => void
|
|
34
38
|
}
|
|
35
39
|
|
|
36
40
|
export type AccordionItemArrowProps = {
|
|
37
41
|
collapsed?: boolean
|
|
42
|
+
orientation?: Orientation
|
|
38
43
|
}
|
|
@@ -33,20 +33,27 @@ export const AccordionItem = (props: AccordionItemProps) => {
|
|
|
33
33
|
disabled={disabled}
|
|
34
34
|
flexDirection="column"
|
|
35
35
|
h="auto"
|
|
36
|
-
hoverBg="blue.10"
|
|
37
36
|
id={`${id}`}
|
|
37
|
+
p={0}
|
|
38
38
|
w="100%"
|
|
39
|
-
{...styles.item}
|
|
40
39
|
{...rest}
|
|
41
40
|
>
|
|
42
|
-
<Box
|
|
41
|
+
<Box
|
|
42
|
+
cursor={disabled ? 'not-allowed' : 'pointer'}
|
|
43
|
+
hoverBg="blue.10"
|
|
44
|
+
justifyContent="space-between"
|
|
45
|
+
onClick={toggle}
|
|
46
|
+
px={2}
|
|
47
|
+
w="100%"
|
|
48
|
+
{...styles.item}
|
|
49
|
+
>
|
|
43
50
|
<Box fontWeight={typeof title === 'string' ? '500' : 'inherit'}>{title}</Box>
|
|
44
51
|
<Box>
|
|
45
52
|
<AccordionItemArrow collapsed={collapsedInternal} />
|
|
46
53
|
</Box>
|
|
47
54
|
</Box>
|
|
48
55
|
{!collapsedInternal && (
|
|
49
|
-
<Box mb={2} mt={2} w="100%">
|
|
56
|
+
<Box mb={2} mt={2} px={2} py={1} w="100%">
|
|
50
57
|
{children ?? content}
|
|
51
58
|
</Box>
|
|
52
59
|
)}
|
|
@@ -3,9 +3,19 @@ import React from 'react'
|
|
|
3
3
|
import Icon from '../icon'
|
|
4
4
|
import { AccordionItemArrowProps } from './accordion.types'
|
|
5
5
|
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
const names = {
|
|
7
|
+
horizontal: {
|
|
8
|
+
collapsed: 'falChevronRight',
|
|
9
|
+
expanded: 'falChevronLeft'
|
|
10
|
+
},
|
|
11
|
+
vertical: {
|
|
12
|
+
collapsed: 'falChevronDown',
|
|
13
|
+
expanded: 'falChevronUp'
|
|
14
|
+
}
|
|
9
15
|
}
|
|
10
16
|
|
|
17
|
+
const AccordionItemArrow = ({ collapsed, orientation = 'vertical' }: AccordionItemArrowProps) => (
|
|
18
|
+
<Icon name={names[orientation][collapsed ? 'collapsed' : 'expanded']} size="xs" />
|
|
19
|
+
)
|
|
20
|
+
|
|
11
21
|
export default React.memo(AccordionItemArrow)
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import React, { useEffect, useState } from 'react'
|
|
2
|
+
|
|
3
|
+
import Box from '../box'
|
|
4
|
+
import { omitThemingProps, useStyleConfig } from '../core'
|
|
5
|
+
import { cs } from '../utils'
|
|
6
|
+
import { AccordionItemProps } from './accordion.types'
|
|
7
|
+
import AccordionItemArrow from './accordionItemArrow'
|
|
8
|
+
import { useAccordionContext } from './context'
|
|
9
|
+
|
|
10
|
+
/** [Beta] An accordion item (horizontal orientation). */
|
|
11
|
+
export const AccordionItemHorizontal = (props: AccordionItemProps) => {
|
|
12
|
+
const { className, children, id, content, disabled, title, collapsed, onToggle, ...rest } = omitThemingProps(props)
|
|
13
|
+
const [collapsedInternal, setIsCollapsedInternal] = useState<boolean>(false)
|
|
14
|
+
|
|
15
|
+
const styles = useStyleConfig('Accordion', useAccordionContext())
|
|
16
|
+
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
setIsCollapsedInternal(!!collapsed)
|
|
19
|
+
}, [collapsed])
|
|
20
|
+
|
|
21
|
+
const toggle = () => {
|
|
22
|
+
if (!disabled) {
|
|
23
|
+
onToggle?.({ id, collapsed: !collapsedInternal })
|
|
24
|
+
setIsCollapsedInternal(!collapsedInternal)
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const cursor = disabled ? 'not-allowed' : 'pointer'
|
|
29
|
+
const fontWeight = typeof title === 'string' ? '500' : 'inherit'
|
|
30
|
+
|
|
31
|
+
return (
|
|
32
|
+
<Box
|
|
33
|
+
alignItems={collapsedInternal ? 'normal' : 'baseline'}
|
|
34
|
+
bg={disabled ? 'disabled.bg' : undefined}
|
|
35
|
+
borderRight="1px solid grey.40"
|
|
36
|
+
className={cs('vui-accordion-item-horizontal', className)}
|
|
37
|
+
color={disabled ? 'disabled.color' : undefined}
|
|
38
|
+
column
|
|
39
|
+
cursor={disabled ? 'not-allowed' : undefined}
|
|
40
|
+
id={`${id}`}
|
|
41
|
+
maxW={collapsedInternal ? styles.item.minH : 'auto'}
|
|
42
|
+
minW={styles.item.minH}
|
|
43
|
+
p={0}
|
|
44
|
+
transitionDuration="0ms"
|
|
45
|
+
userSelect={disabled ? 'none' : undefined}
|
|
46
|
+
{...rest}
|
|
47
|
+
>
|
|
48
|
+
<Box
|
|
49
|
+
{...styles.item}
|
|
50
|
+
cursor={cursor}
|
|
51
|
+
hoverBg="blue.10"
|
|
52
|
+
justifyContent="space-between"
|
|
53
|
+
minH={styles.item.minH}
|
|
54
|
+
onClick={toggle}
|
|
55
|
+
p={styles.item.pt}
|
|
56
|
+
w="100%"
|
|
57
|
+
>
|
|
58
|
+
{!collapsedInternal && <Box fontWeight={fontWeight}>{title}</Box>}
|
|
59
|
+
<AccordionItemArrow collapsed={collapsedInternal} orientation="horizontal" />
|
|
60
|
+
</Box>
|
|
61
|
+
|
|
62
|
+
{!collapsedInternal ? (
|
|
63
|
+
<Box p={styles.item.pt} pt={0} transitionDuration="0ms">
|
|
64
|
+
{children ?? content}
|
|
65
|
+
</Box>
|
|
66
|
+
) : (
|
|
67
|
+
<Box
|
|
68
|
+
cursor={cursor}
|
|
69
|
+
flexDirection="row-reverse"
|
|
70
|
+
fontWeight={fontWeight}
|
|
71
|
+
mb={styles.item.minH}
|
|
72
|
+
mt={styles.item.pt}
|
|
73
|
+
onClick={toggle}
|
|
74
|
+
transform="rotate(-90deg)"
|
|
75
|
+
transitionDuration="0ms"
|
|
76
|
+
whiteSpace="nowrap"
|
|
77
|
+
>
|
|
78
|
+
{title}
|
|
79
|
+
</Box>
|
|
80
|
+
)}
|
|
81
|
+
</Box>
|
|
82
|
+
)
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export default AccordionItemHorizontal
|
package/src/accordion/index.ts
CHANGED
package/src/button/button.tsx
CHANGED
|
@@ -63,6 +63,7 @@ export const Button = vui<'button', ButtonProps>((props, ref) => {
|
|
|
63
63
|
iconLeft,
|
|
64
64
|
iconRight,
|
|
65
65
|
isActive,
|
|
66
|
+
isDropDown,
|
|
66
67
|
isElevated,
|
|
67
68
|
isFullWidth,
|
|
68
69
|
isLoading, // eslint-disable-line
|
|
@@ -154,10 +155,12 @@ export const Button = vui<'button', ButtonProps>((props, ref) => {
|
|
|
154
155
|
|
|
155
156
|
{!icon && (
|
|
156
157
|
<>
|
|
157
|
-
{isString(iconLeft) ? <ButtonIcon mr={iconLeftMr} name={iconLeft} /> : iconLeft}
|
|
158
|
+
{isString(iconLeft) ? <ButtonIcon mr={isDropDown ? 0 : iconLeftMr} name={iconLeft} /> : iconLeft}
|
|
158
159
|
|
|
159
160
|
{children ?? (isReactText(text) ? <ButtonText {...{ isTruncated, text }} /> : text)}
|
|
160
161
|
|
|
162
|
+
{isDropDown && <ButtonIcon name="falAngleDown" />}
|
|
163
|
+
|
|
161
164
|
{isString(iconRight) ? <ButtonIcon ml={iconRightMl} name={iconRight} /> : iconRight}
|
|
162
165
|
</>
|
|
163
166
|
)}
|
|
@@ -17,6 +17,8 @@ export type ButtonProps = SystemProps &
|
|
|
17
17
|
iconRight?: IconProp | JSX.Element
|
|
18
18
|
/** Adds an active class name for further handling. */
|
|
19
19
|
isActive?: boolean
|
|
20
|
+
/** Adds an drop down pointer to the left. */
|
|
21
|
+
isDropDown?: boolean
|
|
20
22
|
/** Adds box shadow style. @default false */
|
|
21
23
|
isElevated?: boolean
|
|
22
24
|
/** Makes the button take full width of the container. @deprecated */
|