@veracity/vui 1.7.0-beta.1 → 1.7.0-beta.2
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.map +1 -1
- package/dist/cjs/accordion/accordion.js +3 -3
- package/dist/cjs/accordion/accordion.types.d.ts +4 -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 +2 -2
- package/dist/cjs/accordion/accordionItemHorizontal.d.ts +1 -1
- package/dist/cjs/accordion/accordionItemHorizontal.d.ts.map +1 -1
- package/dist/cjs/accordion/accordionItemHorizontal.js +3 -3
- package/dist/cjs/copyToClipboard/copyToClipboard.d.ts +12 -0
- package/dist/cjs/copyToClipboard/copyToClipboard.d.ts.map +1 -0
- package/dist/cjs/copyToClipboard/copyToClipboard.js +36 -0
- package/dist/cjs/copyToClipboard/copyToClipboard.types.d.ts +9 -0
- package/dist/cjs/copyToClipboard/copyToClipboard.types.d.ts.map +1 -0
- package/dist/cjs/copyToClipboard/copyToClipboard.types.js +2 -0
- package/dist/cjs/copyToClipboard/index.d.ts +5 -0
- package/dist/cjs/copyToClipboard/index.d.ts.map +1 -0
- package/dist/cjs/copyToClipboard/index.js +25 -0
- package/dist/cjs/copyToClipboard/useCopyToClipboard.d.ts +5 -0
- package/dist/cjs/copyToClipboard/useCopyToClipboard.d.ts.map +1 -0
- package/dist/cjs/copyToClipboard/useCopyToClipboard.js +17 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -0
- package/dist/esm/accordion/accordion.d.ts.map +1 -1
- package/dist/esm/accordion/accordion.js +3 -3
- package/dist/esm/accordion/accordion.types.d.ts +4 -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 +2 -2
- package/dist/esm/accordion/accordionItemHorizontal.d.ts +1 -1
- package/dist/esm/accordion/accordionItemHorizontal.d.ts.map +1 -1
- package/dist/esm/accordion/accordionItemHorizontal.js +3 -3
- package/dist/esm/copyToClipboard/copyToClipboard.d.ts +12 -0
- package/dist/esm/copyToClipboard/copyToClipboard.d.ts.map +1 -0
- package/dist/esm/copyToClipboard/copyToClipboard.js +19 -0
- package/dist/esm/copyToClipboard/copyToClipboard.types.d.ts +9 -0
- package/dist/esm/copyToClipboard/copyToClipboard.types.d.ts.map +1 -0
- package/dist/esm/copyToClipboard/copyToClipboard.types.js +1 -0
- package/dist/esm/copyToClipboard/index.d.ts +5 -0
- package/dist/esm/copyToClipboard/index.d.ts.map +1 -0
- package/dist/esm/copyToClipboard/index.js +4 -0
- package/dist/esm/copyToClipboard/useCopyToClipboard.d.ts +5 -0
- package/dist/esm/copyToClipboard/useCopyToClipboard.d.ts.map +1 -0
- package/dist/esm/copyToClipboard/useCopyToClipboard.js +14 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/package.json +1 -1
- package/src/accordion/accordion.tsx +7 -3
- package/src/accordion/accordion.types.ts +4 -0
- package/src/accordion/accordionItem.tsx +13 -2
- package/src/accordion/accordionItemHorizontal.tsx +14 -3
- package/src/copyToClipboard/copyToClipboard.tsx +36 -0
- package/src/copyToClipboard/copyToClipboard.types.ts +10 -0
- package/src/copyToClipboard/index.ts +4 -0
- package/src/copyToClipboard/useCopyToClipboard.ts +15 -0
- package/src/index.ts +1 -0
|
@@ -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;AAKtE,eAAO,MAAM,aAAa,+HAIzB,CAAA;AAED,qEAAqE;AACrE,eAAO,MAAM,SAAS,
|
|
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,uDA6BpB,CAAA;AAEF,eAAe,SAAS,CAAA"}
|
|
@@ -53,13 +53,13 @@ exports.AccordionBase = core_1.styled.divBox `
|
|
|
53
53
|
/** Allows to show and hide sections of related content on a page. */
|
|
54
54
|
exports.Accordion = (0, core_1.vui)((props, ref) => {
|
|
55
55
|
var _a, _b;
|
|
56
|
-
const { children, className,
|
|
56
|
+
const { children, className, itemTitleHoverBg = 'blue.10', items, orientation = 'vertical', size } = props, rest = __rest(props, ["children", "className", "itemTitleHoverBg", "items", "orientation", "size"]);
|
|
57
57
|
const styles = (0, core_1.useStyleConfig)('Accordion', props);
|
|
58
58
|
const context = (0, react_1.useMemo)(() => (0, utils_1.filterUndefined)({ size }), [size]);
|
|
59
59
|
const aliasedProps = (0, utils_1.filterUndefined)({});
|
|
60
60
|
return (react_1.default.createElement(context_1.AccordionProvider, { value: context },
|
|
61
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))));
|
|
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({ itemTitleHoverBg: itemTitleHoverBg, 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({ itemTitleHoverBg: itemTitleHoverBg, key: key }, item))))) : (children))));
|
|
64
64
|
});
|
|
65
65
|
exports.default = exports.Accordion;
|
|
@@ -6,6 +6,8 @@ export declare type Orientation = 'vertical' | 'horizontal';
|
|
|
6
6
|
export declare type AccordionProps = SystemProps & ThemingProps<'Accordion'> & {
|
|
7
7
|
/** Items orientation @default 'vertical' */
|
|
8
8
|
orientation?: Orientation;
|
|
9
|
+
/** Hover color for the item title @default "blue.10" */
|
|
10
|
+
itemTitleHoverBg?: string;
|
|
9
11
|
items?: AccordionItemProps[];
|
|
10
12
|
};
|
|
11
13
|
export declare type AccordionItemId = string | number;
|
|
@@ -24,6 +26,8 @@ export declare type AccordionItemProps = ListItemProps & {
|
|
|
24
26
|
content?: ReactNode;
|
|
25
27
|
/** Collapsed state */
|
|
26
28
|
collapsed?: boolean;
|
|
29
|
+
/** Hover color for the item title @default "blue.10" */
|
|
30
|
+
itemTitleHoverBg?: string;
|
|
27
31
|
/** Title */
|
|
28
32
|
title?: string | ReactNode;
|
|
29
33
|
/** Collapse change state */
|
|
@@ -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,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
|
+
{"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,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,MAAM,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,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,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,gBA6DtD,CAAA;AAED,eAAe,aAAa,CAAA"}
|
|
@@ -47,7 +47,7 @@ const accordionItemArrow_1 = __importDefault(require("./accordionItemArrow"));
|
|
|
47
47
|
const context_1 = require("./context");
|
|
48
48
|
/** An accordion item. */
|
|
49
49
|
const AccordionItem = (props) => {
|
|
50
|
-
const _a = (0, core_1.omitThemingProps)(props), { className, children,
|
|
50
|
+
const _a = (0, core_1.omitThemingProps)(props), { className, children, collapsed, content, disabled, id, itemTitleHoverBg = 'blue.10', title, onToggle } = _a, rest = __rest(_a, ["className", "children", "collapsed", "content", "disabled", "id", "itemTitleHoverBg", "title", "onToggle"]);
|
|
51
51
|
const [collapsedInternal, setIsCollapsedInternal] = (0, react_1.useState)(false);
|
|
52
52
|
const styles = (0, core_1.useStyleConfig)('Accordion', (0, context_1.useAccordionContext)());
|
|
53
53
|
(0, react_1.useEffect)(() => {
|
|
@@ -60,7 +60,7 @@ const AccordionItem = (props) => {
|
|
|
60
60
|
}
|
|
61
61
|
};
|
|
62
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:
|
|
63
|
+
react_1.default.createElement(box_1.Box, Object.assign({ cursor: disabled ? 'not-allowed' : 'pointer', hoverBg: itemTitleHoverBg, 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 }))),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AccordionItemProps } from './accordion.types';
|
|
2
|
-
/**
|
|
2
|
+
/** An accordion item (horizontal orientation). */
|
|
3
3
|
export declare const AccordionItemHorizontal: (props: AccordionItemProps) => JSX.Element;
|
|
4
4
|
export default AccordionItemHorizontal;
|
|
5
5
|
//# sourceMappingURL=accordionItemHorizontal.d.ts.map
|
|
@@ -1 +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,
|
|
1
|
+
{"version":3,"file":"accordionItemHorizontal.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordionItemHorizontal.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAItD,kDAAkD;AAClD,eAAO,MAAM,uBAAuB,UAAW,kBAAkB,gBAmFhE,CAAA;AAED,eAAe,uBAAuB,CAAA"}
|
|
@@ -44,9 +44,9 @@ const core_1 = require("../core");
|
|
|
44
44
|
const utils_1 = require("../utils");
|
|
45
45
|
const accordionItemArrow_1 = __importDefault(require("./accordionItemArrow"));
|
|
46
46
|
const context_1 = require("./context");
|
|
47
|
-
/**
|
|
47
|
+
/** An accordion item (horizontal orientation). */
|
|
48
48
|
const AccordionItemHorizontal = (props) => {
|
|
49
|
-
const _a = (0, core_1.omitThemingProps)(props), { className, children,
|
|
49
|
+
const _a = (0, core_1.omitThemingProps)(props), { className, children, collapsed, content, disabled, id, itemTitleHoverBg = 'blue.10', title, onToggle } = _a, rest = __rest(_a, ["className", "children", "collapsed", "content", "disabled", "id", "itemTitleHoverBg", "title", "onToggle"]);
|
|
50
50
|
const [collapsedInternal, setIsCollapsedInternal] = (0, react_1.useState)(false);
|
|
51
51
|
const styles = (0, core_1.useStyleConfig)('Accordion', (0, context_1.useAccordionContext)());
|
|
52
52
|
(0, react_1.useEffect)(() => {
|
|
@@ -61,7 +61,7 @@ const AccordionItemHorizontal = (props) => {
|
|
|
61
61
|
const cursor = disabled ? 'not-allowed' : 'pointer';
|
|
62
62
|
const fontWeight = typeof title === 'string' ? '500' : 'inherit';
|
|
63
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:
|
|
64
|
+
react_1.default.createElement(box_1.default, Object.assign({}, styles.item, { cursor: cursor, hoverBg: itemTitleHoverBg, justifyContent: "space-between", minH: styles.item.minH, onClick: toggle, p: styles.item.pt, w: "100%" }),
|
|
65
65
|
!collapsedInternal && react_1.default.createElement(box_1.default, { fontWeight: fontWeight }, title),
|
|
66
66
|
react_1.default.createElement(accordionItemArrow_1.default, { collapsed: collapsedInternal, orientation: "horizontal" })),
|
|
67
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))));
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CopyToClipboardProps } from './copyToClipboard.types';
|
|
2
|
+
/**
|
|
3
|
+
* A helper button component.
|
|
4
|
+
*
|
|
5
|
+
* Copies the provided text to clipboard.
|
|
6
|
+
*
|
|
7
|
+
* Copying is available only for a secure environment (https://), otherwise the button is disabled.
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
10
|
+
export declare const CopyToClipboard: import("../core").VuiComponent<"button", CopyToClipboardProps>;
|
|
11
|
+
export default CopyToClipboard;
|
|
12
|
+
//# sourceMappingURL=copyToClipboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copyToClipboard.d.ts","sourceRoot":"","sources":["../../../src/copyToClipboard/copyToClipboard.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAG9D;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,gEAiB1B,CAAA;AAEF,eAAe,eAAe,CAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.CopyToClipboard = void 0;
|
|
18
|
+
const react_1 = __importDefault(require("react"));
|
|
19
|
+
const button_1 = __importDefault(require("../button"));
|
|
20
|
+
const core_1 = require("../core");
|
|
21
|
+
const utils_1 = require("../utils");
|
|
22
|
+
const useCopyToClipboard_1 = require("./useCopyToClipboard");
|
|
23
|
+
/**
|
|
24
|
+
* A helper button component.
|
|
25
|
+
*
|
|
26
|
+
* Copies the provided text to clipboard.
|
|
27
|
+
*
|
|
28
|
+
* Copying is available only for a secure environment (https://), otherwise the button is disabled.
|
|
29
|
+
*
|
|
30
|
+
*/
|
|
31
|
+
exports.CopyToClipboard = (0, core_1.vui)((props, ref) => {
|
|
32
|
+
const { disabled, copyText, className, size = 'xs', variant = 'text' } = props, rest = __rest(props, ["disabled", "copyText", "className", "size", "variant"]);
|
|
33
|
+
const { copy, isCopyDisabled } = (0, useCopyToClipboard_1.useCopyToClipboard)(copyText);
|
|
34
|
+
return (react_1.default.createElement(button_1.default, Object.assign({ className: (0, utils_1.cs)('vui-copy-to-clipboard', className), disabled: disabled || isCopyDisabled, icon: "falCopy", onClick: () => copy(), ref: ref, size: size, variant: variant }, rest)));
|
|
35
|
+
});
|
|
36
|
+
exports.default = exports.CopyToClipboard;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SystemProps } from '../system';
|
|
2
|
+
import { ThemingProps } from '../theme';
|
|
3
|
+
export declare type CopyToClipboardProps = SystemProps & ThemingProps<'Button'> & {
|
|
4
|
+
/** Text string for copying */
|
|
5
|
+
copyText: string;
|
|
6
|
+
/** Button size @default "xs" */
|
|
7
|
+
size?: 'xs' | 'sm' | 'md' | 'lg';
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=copyToClipboard.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copyToClipboard.types.d.ts","sourceRoot":"","sources":["../../../src/copyToClipboard/copyToClipboard.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,oBAAY,oBAAoB,GAAG,WAAW,GAC5C,YAAY,CAAC,QAAQ,CAAC,GAAG;IACvB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,gCAAgC;IAChC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;CACjC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/copyToClipboard/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.default = void 0;
|
|
21
|
+
__exportStar(require("./copyToClipboard"), exports);
|
|
22
|
+
var copyToClipboard_1 = require("./copyToClipboard");
|
|
23
|
+
Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(copyToClipboard_1).default; } });
|
|
24
|
+
__exportStar(require("./copyToClipboard.types"), exports);
|
|
25
|
+
__exportStar(require("./useCopyToClipboard"), exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCopyToClipboard.d.ts","sourceRoot":"","sources":["../../../src/copyToClipboard/useCopyToClipboard.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,aAAc,MAAM;;;CAYlD,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useCopyToClipboard = void 0;
|
|
4
|
+
const toast_1 = require("../toast");
|
|
5
|
+
const useCopyToClipboard = (copyText) => {
|
|
6
|
+
var _a, _b;
|
|
7
|
+
const { showSuccess, showError } = (0, toast_1.useToast)();
|
|
8
|
+
const isCopyDisabled = !((_b = (_a = window === null || window === void 0 ? void 0 : window.navigator) === null || _a === void 0 ? void 0 : _a.clipboard) === null || _b === void 0 ? void 0 : _b.writeText);
|
|
9
|
+
const copy = () => {
|
|
10
|
+
var _a, _b, _c;
|
|
11
|
+
if (!isCopyDisabled) {
|
|
12
|
+
(_c = (_a = window === null || window === void 0 ? void 0 : window.navigator) === null || _a === void 0 ? void 0 : (_b = _a.clipboard).writeText) === null || _c === void 0 ? void 0 : _c.call(_b, copyText).then(() => showSuccess(`Copied to clipboard: ${copyText}`)).catch(() => showError('Copy failed'));
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
return { copy, isCopyDisabled };
|
|
16
|
+
};
|
|
17
|
+
exports.useCopyToClipboard = useCopyToClipboard;
|
package/dist/cjs/index.d.ts
CHANGED
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA;AACnC,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,KAAK,CAAA;AACnB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,KAAK,CAAA;AACnB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,OAAO,CAAA;AACrB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA;AACnC,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,KAAK,CAAA;AACnB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,KAAK,CAAA;AACnB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,OAAO,CAAA;AACrB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -22,6 +22,7 @@ __exportStar(require("./buttonGroup"), exports);
|
|
|
22
22
|
__exportStar(require("./buttonToggleGroup"), exports);
|
|
23
23
|
__exportStar(require("./card"), exports);
|
|
24
24
|
__exportStar(require("./checkbox"), exports);
|
|
25
|
+
__exportStar(require("./copyToClipboard"), exports);
|
|
25
26
|
__exportStar(require("./core"), exports);
|
|
26
27
|
__exportStar(require("./dialog"), exports);
|
|
27
28
|
__exportStar(require("./divider"), exports);
|
|
@@ -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;AAKtE,eAAO,MAAM,aAAa,+HAIzB,CAAA;AAED,qEAAqE;AACrE,eAAO,MAAM,SAAS,
|
|
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,uDA6BpB,CAAA;AAEF,eAAe,SAAS,CAAA"}
|
|
@@ -12,13 +12,13 @@ export const AccordionBase = styled.divBox `
|
|
|
12
12
|
`;
|
|
13
13
|
/** Allows to show and hide sections of related content on a page. */
|
|
14
14
|
export const Accordion = vui((props, ref) => {
|
|
15
|
-
const { children, className,
|
|
15
|
+
const { children, className, itemTitleHoverBg = 'blue.10', items, orientation = 'vertical', size, ...rest } = props;
|
|
16
16
|
const styles = useStyleConfig('Accordion', props);
|
|
17
17
|
const context = useMemo(() => filterUndefined({ size }), [size]);
|
|
18
18
|
const aliasedProps = filterUndefined({});
|
|
19
19
|
return (React.createElement(AccordionProvider, { value: context },
|
|
20
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))));
|
|
21
|
+
? items?.map?.((item, key) => (React.createElement(AccordionItem, { itemTitleHoverBg: itemTitleHoverBg, key: key, ...item })))
|
|
22
|
+
: children)) : items ? (items?.map?.((item, key) => (React.createElement(AccordionItemHorizontal, { itemTitleHoverBg: itemTitleHoverBg, key: key, ...item })))) : (children))));
|
|
23
23
|
});
|
|
24
24
|
export default Accordion;
|
|
@@ -6,6 +6,8 @@ export declare type Orientation = 'vertical' | 'horizontal';
|
|
|
6
6
|
export declare type AccordionProps = SystemProps & ThemingProps<'Accordion'> & {
|
|
7
7
|
/** Items orientation @default 'vertical' */
|
|
8
8
|
orientation?: Orientation;
|
|
9
|
+
/** Hover color for the item title @default "blue.10" */
|
|
10
|
+
itemTitleHoverBg?: string;
|
|
9
11
|
items?: AccordionItemProps[];
|
|
10
12
|
};
|
|
11
13
|
export declare type AccordionItemId = string | number;
|
|
@@ -24,6 +26,8 @@ export declare type AccordionItemProps = ListItemProps & {
|
|
|
24
26
|
content?: ReactNode;
|
|
25
27
|
/** Collapsed state */
|
|
26
28
|
collapsed?: boolean;
|
|
29
|
+
/** Hover color for the item title @default "blue.10" */
|
|
30
|
+
itemTitleHoverBg?: string;
|
|
27
31
|
/** Title */
|
|
28
32
|
title?: string | ReactNode;
|
|
29
33
|
/** Collapse change state */
|
|
@@ -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,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
|
+
{"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,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,MAAM,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,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,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,gBA6DtD,CAAA;AAED,eAAe,aAAa,CAAA"}
|
|
@@ -7,7 +7,7 @@ import AccordionItemArrow from './accordionItemArrow';
|
|
|
7
7
|
import { useAccordionContext } from './context';
|
|
8
8
|
/** An accordion item. */
|
|
9
9
|
export const AccordionItem = (props) => {
|
|
10
|
-
const { className, children,
|
|
10
|
+
const { className, children, collapsed, content, disabled, id, itemTitleHoverBg = 'blue.10', title, onToggle, ...rest } = omitThemingProps(props);
|
|
11
11
|
const [collapsedInternal, setIsCollapsedInternal] = useState(false);
|
|
12
12
|
const styles = useStyleConfig('Accordion', useAccordionContext());
|
|
13
13
|
useEffect(() => {
|
|
@@ -20,7 +20,7 @@ export const AccordionItem = (props) => {
|
|
|
20
20
|
}
|
|
21
21
|
};
|
|
22
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:
|
|
23
|
+
React.createElement(Box, { cursor: disabled ? 'not-allowed' : 'pointer', hoverBg: itemTitleHoverBg, 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 }))),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AccordionItemProps } from './accordion.types';
|
|
2
|
-
/**
|
|
2
|
+
/** An accordion item (horizontal orientation). */
|
|
3
3
|
export declare const AccordionItemHorizontal: (props: AccordionItemProps) => JSX.Element;
|
|
4
4
|
export default AccordionItemHorizontal;
|
|
5
5
|
//# sourceMappingURL=accordionItemHorizontal.d.ts.map
|
|
@@ -1 +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,
|
|
1
|
+
{"version":3,"file":"accordionItemHorizontal.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordionItemHorizontal.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAItD,kDAAkD;AAClD,eAAO,MAAM,uBAAuB,UAAW,kBAAkB,gBAmFhE,CAAA;AAED,eAAe,uBAAuB,CAAA"}
|
|
@@ -4,9 +4,9 @@ import { omitThemingProps, useStyleConfig } from '../core';
|
|
|
4
4
|
import { cs } from '../utils';
|
|
5
5
|
import AccordionItemArrow from './accordionItemArrow';
|
|
6
6
|
import { useAccordionContext } from './context';
|
|
7
|
-
/**
|
|
7
|
+
/** An accordion item (horizontal orientation). */
|
|
8
8
|
export const AccordionItemHorizontal = (props) => {
|
|
9
|
-
const { className, children,
|
|
9
|
+
const { className, children, collapsed, content, disabled, id, itemTitleHoverBg = 'blue.10', title, onToggle, ...rest } = omitThemingProps(props);
|
|
10
10
|
const [collapsedInternal, setIsCollapsedInternal] = useState(false);
|
|
11
11
|
const styles = useStyleConfig('Accordion', useAccordionContext());
|
|
12
12
|
useEffect(() => {
|
|
@@ -21,7 +21,7 @@ export const AccordionItemHorizontal = (props) => {
|
|
|
21
21
|
const cursor = disabled ? 'not-allowed' : 'pointer';
|
|
22
22
|
const fontWeight = typeof title === 'string' ? '500' : 'inherit';
|
|
23
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:
|
|
24
|
+
React.createElement(Box, { ...styles.item, cursor: cursor, hoverBg: itemTitleHoverBg, justifyContent: "space-between", minH: styles.item.minH, onClick: toggle, p: styles.item.pt, w: "100%" },
|
|
25
25
|
!collapsedInternal && React.createElement(Box, { fontWeight: fontWeight }, title),
|
|
26
26
|
React.createElement(AccordionItemArrow, { collapsed: collapsedInternal, orientation: "horizontal" })),
|
|
27
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))));
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CopyToClipboardProps } from './copyToClipboard.types';
|
|
2
|
+
/**
|
|
3
|
+
* A helper button component.
|
|
4
|
+
*
|
|
5
|
+
* Copies the provided text to clipboard.
|
|
6
|
+
*
|
|
7
|
+
* Copying is available only for a secure environment (https://), otherwise the button is disabled.
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
10
|
+
export declare const CopyToClipboard: import("../core").VuiComponent<"button", CopyToClipboardProps>;
|
|
11
|
+
export default CopyToClipboard;
|
|
12
|
+
//# sourceMappingURL=copyToClipboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copyToClipboard.d.ts","sourceRoot":"","sources":["../../../src/copyToClipboard/copyToClipboard.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAG9D;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,gEAiB1B,CAAA;AAEF,eAAe,eAAe,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Button from '../button';
|
|
3
|
+
import { vui } from '../core';
|
|
4
|
+
import { cs } from '../utils';
|
|
5
|
+
import { useCopyToClipboard } from './useCopyToClipboard';
|
|
6
|
+
/**
|
|
7
|
+
* A helper button component.
|
|
8
|
+
*
|
|
9
|
+
* Copies the provided text to clipboard.
|
|
10
|
+
*
|
|
11
|
+
* Copying is available only for a secure environment (https://), otherwise the button is disabled.
|
|
12
|
+
*
|
|
13
|
+
*/
|
|
14
|
+
export const CopyToClipboard = vui((props, ref) => {
|
|
15
|
+
const { disabled, copyText, className, size = 'xs', variant = 'text', ...rest } = props;
|
|
16
|
+
const { copy, isCopyDisabled } = useCopyToClipboard(copyText);
|
|
17
|
+
return (React.createElement(Button, { className: cs('vui-copy-to-clipboard', className), disabled: disabled || isCopyDisabled, icon: "falCopy", onClick: () => copy(), ref: ref, size: size, variant: variant, ...rest }));
|
|
18
|
+
});
|
|
19
|
+
export default CopyToClipboard;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SystemProps } from '../system';
|
|
2
|
+
import { ThemingProps } from '../theme';
|
|
3
|
+
export declare type CopyToClipboardProps = SystemProps & ThemingProps<'Button'> & {
|
|
4
|
+
/** Text string for copying */
|
|
5
|
+
copyText: string;
|
|
6
|
+
/** Button size @default "xs" */
|
|
7
|
+
size?: 'xs' | 'sm' | 'md' | 'lg';
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=copyToClipboard.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copyToClipboard.types.d.ts","sourceRoot":"","sources":["../../../src/copyToClipboard/copyToClipboard.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,oBAAY,oBAAoB,GAAG,WAAW,GAC5C,YAAY,CAAC,QAAQ,CAAC,GAAG;IACvB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,gCAAgC;IAChC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;CACjC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/copyToClipboard/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCopyToClipboard.d.ts","sourceRoot":"","sources":["../../../src/copyToClipboard/useCopyToClipboard.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,aAAc,MAAM;;;CAYlD,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useToast } from '../toast';
|
|
2
|
+
export const useCopyToClipboard = (copyText) => {
|
|
3
|
+
const { showSuccess, showError } = useToast();
|
|
4
|
+
const isCopyDisabled = !window?.navigator?.clipboard?.writeText;
|
|
5
|
+
const copy = () => {
|
|
6
|
+
if (!isCopyDisabled) {
|
|
7
|
+
window?.navigator?.clipboard
|
|
8
|
+
.writeText?.(copyText)
|
|
9
|
+
.then(() => showSuccess(`Copied to clipboard: ${copyText}`))
|
|
10
|
+
.catch(() => showError('Copy failed'));
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
return { copy, isCopyDisabled };
|
|
14
|
+
};
|
package/dist/esm/index.d.ts
CHANGED
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA;AACnC,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,KAAK,CAAA;AACnB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,KAAK,CAAA;AACnB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,OAAO,CAAA;AACrB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA;AACnC,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,KAAK,CAAA;AACnB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,KAAK,CAAA;AACnB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,OAAO,CAAA;AACrB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA"}
|
package/dist/esm/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@veracity/vui",
|
|
3
|
-
"version": "1.7.0-beta.
|
|
3
|
+
"version": "1.7.0-beta.2",
|
|
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",
|
|
@@ -16,7 +16,7 @@ export const AccordionBase = styled.divBox`
|
|
|
16
16
|
|
|
17
17
|
/** Allows to show and hide sections of related content on a page. */
|
|
18
18
|
export const Accordion = vui<'div', AccordionProps>((props, ref) => {
|
|
19
|
-
const { children, className,
|
|
19
|
+
const { children, className, itemTitleHoverBg = 'blue.10', items, orientation = 'vertical', size, ...rest } = props
|
|
20
20
|
const styles = useStyleConfig('Accordion', props)
|
|
21
21
|
|
|
22
22
|
const context = useMemo(() => filterUndefined({ size }), [size])
|
|
@@ -29,11 +29,15 @@ export const Accordion = vui<'div', AccordionProps>((props, ref) => {
|
|
|
29
29
|
{orientation === 'vertical' ? (
|
|
30
30
|
<List w="100%">
|
|
31
31
|
{items
|
|
32
|
-
? items?.map?.((item: AccordionItemProps, key: number) =>
|
|
32
|
+
? items?.map?.((item: AccordionItemProps, key: number) => (
|
|
33
|
+
<AccordionItem itemTitleHoverBg={itemTitleHoverBg} key={key} {...item} />
|
|
34
|
+
))
|
|
33
35
|
: children}
|
|
34
36
|
</List>
|
|
35
37
|
) : items ? (
|
|
36
|
-
items?.map?.((item: AccordionItemProps, key: number) =>
|
|
38
|
+
items?.map?.((item: AccordionItemProps, key: number) => (
|
|
39
|
+
<AccordionItemHorizontal itemTitleHoverBg={itemTitleHoverBg} key={key} {...item} />
|
|
40
|
+
))
|
|
37
41
|
) : (
|
|
38
42
|
children
|
|
39
43
|
)}
|
|
@@ -10,6 +10,8 @@ export type AccordionProps = SystemProps &
|
|
|
10
10
|
ThemingProps<'Accordion'> & {
|
|
11
11
|
/** Items orientation @default 'vertical' */
|
|
12
12
|
orientation?: Orientation
|
|
13
|
+
/** Hover color for the item title @default "blue.10" */
|
|
14
|
+
itemTitleHoverBg?: string
|
|
13
15
|
items?: AccordionItemProps[]
|
|
14
16
|
}
|
|
15
17
|
|
|
@@ -31,6 +33,8 @@ export type AccordionItemProps = ListItemProps & {
|
|
|
31
33
|
content?: ReactNode
|
|
32
34
|
/** Collapsed state */
|
|
33
35
|
collapsed?: boolean
|
|
36
|
+
/** Hover color for the item title @default "blue.10" */
|
|
37
|
+
itemTitleHoverBg?: string
|
|
34
38
|
/** Title */
|
|
35
39
|
title?: string | ReactNode
|
|
36
40
|
/** Collapse change state */
|
|
@@ -10,7 +10,18 @@ import { useAccordionContext } from './context'
|
|
|
10
10
|
|
|
11
11
|
/** An accordion item. */
|
|
12
12
|
export const AccordionItem = (props: AccordionItemProps) => {
|
|
13
|
-
const {
|
|
13
|
+
const {
|
|
14
|
+
className,
|
|
15
|
+
children,
|
|
16
|
+
collapsed,
|
|
17
|
+
content,
|
|
18
|
+
disabled,
|
|
19
|
+
id,
|
|
20
|
+
itemTitleHoverBg = 'blue.10',
|
|
21
|
+
title,
|
|
22
|
+
onToggle,
|
|
23
|
+
...rest
|
|
24
|
+
} = omitThemingProps(props)
|
|
14
25
|
const [collapsedInternal, setIsCollapsedInternal] = useState<boolean>(false)
|
|
15
26
|
|
|
16
27
|
const styles = useStyleConfig('Accordion', useAccordionContext())
|
|
@@ -40,7 +51,7 @@ export const AccordionItem = (props: AccordionItemProps) => {
|
|
|
40
51
|
>
|
|
41
52
|
<Box
|
|
42
53
|
cursor={disabled ? 'not-allowed' : 'pointer'}
|
|
43
|
-
hoverBg=
|
|
54
|
+
hoverBg={itemTitleHoverBg}
|
|
44
55
|
justifyContent="space-between"
|
|
45
56
|
onClick={toggle}
|
|
46
57
|
px={2}
|
|
@@ -7,9 +7,20 @@ import { AccordionItemProps } from './accordion.types'
|
|
|
7
7
|
import AccordionItemArrow from './accordionItemArrow'
|
|
8
8
|
import { useAccordionContext } from './context'
|
|
9
9
|
|
|
10
|
-
/**
|
|
10
|
+
/** An accordion item (horizontal orientation). */
|
|
11
11
|
export const AccordionItemHorizontal = (props: AccordionItemProps) => {
|
|
12
|
-
const {
|
|
12
|
+
const {
|
|
13
|
+
className,
|
|
14
|
+
children,
|
|
15
|
+
collapsed,
|
|
16
|
+
content,
|
|
17
|
+
disabled,
|
|
18
|
+
id,
|
|
19
|
+
itemTitleHoverBg = 'blue.10',
|
|
20
|
+
title,
|
|
21
|
+
onToggle,
|
|
22
|
+
...rest
|
|
23
|
+
} = omitThemingProps(props)
|
|
13
24
|
const [collapsedInternal, setIsCollapsedInternal] = useState<boolean>(false)
|
|
14
25
|
|
|
15
26
|
const styles = useStyleConfig('Accordion', useAccordionContext())
|
|
@@ -48,7 +59,7 @@ export const AccordionItemHorizontal = (props: AccordionItemProps) => {
|
|
|
48
59
|
<Box
|
|
49
60
|
{...styles.item}
|
|
50
61
|
cursor={cursor}
|
|
51
|
-
hoverBg=
|
|
62
|
+
hoverBg={itemTitleHoverBg}
|
|
52
63
|
justifyContent="space-between"
|
|
53
64
|
minH={styles.item.minH}
|
|
54
65
|
onClick={toggle}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
|
|
3
|
+
import Button from '../button'
|
|
4
|
+
import { vui } from '../core'
|
|
5
|
+
import { cs } from '../utils'
|
|
6
|
+
import { CopyToClipboardProps } from './copyToClipboard.types'
|
|
7
|
+
import { useCopyToClipboard } from './useCopyToClipboard'
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* A helper button component.
|
|
11
|
+
*
|
|
12
|
+
* Copies the provided text to clipboard.
|
|
13
|
+
*
|
|
14
|
+
* Copying is available only for a secure environment (https://), otherwise the button is disabled.
|
|
15
|
+
*
|
|
16
|
+
*/
|
|
17
|
+
export const CopyToClipboard = vui<'button', CopyToClipboardProps>((props, ref) => {
|
|
18
|
+
const { disabled, copyText, className, size = 'xs', variant = 'text', ...rest } = props
|
|
19
|
+
|
|
20
|
+
const { copy, isCopyDisabled } = useCopyToClipboard(copyText)
|
|
21
|
+
|
|
22
|
+
return (
|
|
23
|
+
<Button
|
|
24
|
+
className={cs('vui-copy-to-clipboard', className)}
|
|
25
|
+
disabled={disabled || isCopyDisabled}
|
|
26
|
+
icon="falCopy"
|
|
27
|
+
onClick={() => copy()}
|
|
28
|
+
ref={ref}
|
|
29
|
+
size={size}
|
|
30
|
+
variant={variant}
|
|
31
|
+
{...rest}
|
|
32
|
+
/>
|
|
33
|
+
)
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
export default CopyToClipboard
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SystemProps } from '../system'
|
|
2
|
+
import { ThemingProps } from '../theme'
|
|
3
|
+
|
|
4
|
+
export type CopyToClipboardProps = SystemProps &
|
|
5
|
+
ThemingProps<'Button'> & {
|
|
6
|
+
/** Text string for copying */
|
|
7
|
+
copyText: string
|
|
8
|
+
/** Button size @default "xs" */
|
|
9
|
+
size?: 'xs' | 'sm' | 'md' | 'lg'
|
|
10
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { useToast } from '../toast'
|
|
2
|
+
|
|
3
|
+
export const useCopyToClipboard = (copyText: string) => {
|
|
4
|
+
const { showSuccess, showError } = useToast()
|
|
5
|
+
const isCopyDisabled = !window?.navigator?.clipboard?.writeText
|
|
6
|
+
const copy = () => {
|
|
7
|
+
if (!isCopyDisabled) {
|
|
8
|
+
window?.navigator?.clipboard
|
|
9
|
+
.writeText?.(copyText)
|
|
10
|
+
.then(() => showSuccess(`Copied to clipboard: ${copyText}`))
|
|
11
|
+
.catch(() => showError('Copy failed'))
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return { copy, isCopyDisabled }
|
|
15
|
+
}
|
package/src/index.ts
CHANGED