@deque/cauldron-react 6.6.1 → 6.7.0-canary.0fa62fa5
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/README.md +4 -0
- package/lib/cauldron.css +6 -0
- package/lib/components/ClickOutsideListener/index.d.ts +3 -19
- package/lib/components/Code/index.d.ts +5 -0
- package/lib/components/Icon/types.d.ts +1 -1
- package/lib/images.js +37 -0
- package/lib/index.js +173 -185
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -22,6 +22,10 @@ yarn add @deque/cauldron-react @deque/cauldron-styles
|
|
|
22
22
|
|
|
23
23
|
To get started, follow our [usage guide](https://cauldron.dequelabs.com/#usage) that includes setup instructions and necessary dependencies. Further documentation is also available at [cauldron.dequelabs.com](https://cauldron.dequelabs.com) that includes documentation for every available Cauldron component.
|
|
24
24
|
|
|
25
|
+
## Attribution
|
|
26
|
+
|
|
27
|
+
Some Cauldron icons use Font Awesome Free and Font Awesome Pro. Their licenses can be found here: [Font Awesome Free License](https://fontawesome.com/license/free) and [Font Awesome Pro License](https://fontawesome.com/license).
|
|
28
|
+
|
|
25
29
|
## Contribute
|
|
26
30
|
|
|
27
31
|
If you're interested in contributing to Cauldron, you can check out our [contribution guide](https://github.com/dequelabs/cauldron/blob/develop/CONTRIBUTING.md) as well as our [code of conduct](https://github.com/dequelabs/cauldron/blob/develop/CODE_OF_CONDUCT.md).
|
package/lib/cauldron.css
CHANGED
|
@@ -4,23 +4,7 @@ export interface ClickOutsideListenerProps<T extends HTMLElement = HTMLElement>
|
|
|
4
4
|
onClickOutside: (e: MouseEvent | TouchEvent) => void;
|
|
5
5
|
mouseEvent?: 'mousedown' | 'click' | 'mouseup' | false;
|
|
6
6
|
touchEvent?: 'touchstart' | 'touchend' | false;
|
|
7
|
-
target?: T
|
|
8
|
-
}
|
|
9
|
-
export default class ClickOutsideListener extends React.Component<ClickOutsideListenerProps> {
|
|
10
|
-
static displayName: string;
|
|
11
|
-
static defaultProps: {
|
|
12
|
-
mouseEvent: string;
|
|
13
|
-
touchEvent: string;
|
|
14
|
-
};
|
|
15
|
-
private nodeRef;
|
|
16
|
-
handleEvent: (event: MouseEvent | TouchEvent) => void;
|
|
17
|
-
componentDidMount(): void;
|
|
18
|
-
componentDidUpdate(prevProps: ClickOutsideListenerProps): void;
|
|
19
|
-
componentWillUnmount(): void;
|
|
20
|
-
private attachEventListeners;
|
|
21
|
-
private removeEventListeners;
|
|
22
|
-
resolveRef: (node: HTMLElement) => void;
|
|
23
|
-
render(): React.FunctionComponentElement<{
|
|
24
|
-
ref: (node: HTMLElement) => void;
|
|
25
|
-
}> | null;
|
|
7
|
+
target?: T | React.RefObject<T> | React.MutableRefObject<T>;
|
|
26
8
|
}
|
|
9
|
+
declare const _default: React.ForwardRefExoticComponent<ClickOutsideListenerProps<HTMLElement> & React.RefAttributes<HTMLElement>>;
|
|
10
|
+
export default _default;
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { SyntaxHighlighterProps } from 'react-syntax-highlighter';
|
|
3
|
+
import type { ContentNode } from '../../types';
|
|
4
|
+
import CopyButton from '../CopyButton';
|
|
3
5
|
type Props = {
|
|
4
6
|
children: string;
|
|
5
7
|
language?: 'javascript' | 'css' | 'html' | 'yaml';
|
|
6
8
|
className?: string;
|
|
7
9
|
scrollable?: boolean;
|
|
10
|
+
label?: ContentNode;
|
|
11
|
+
allowCopy?: boolean;
|
|
12
|
+
copyButtonProps?: React.ComponentProps<typeof CopyButton>;
|
|
8
13
|
} & SyntaxHighlighterProps & React.HTMLAttributes<HTMLDivElement>;
|
|
9
14
|
declare const Code: React.ComponentType<React.PropsWithChildren<Props>>;
|
|
10
15
|
export default Code;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* GENERATED CODE. DO NOT EDIT DIRECTLY!
|
|
3
3
|
*/
|
|
4
4
|
/** IconType represents each valid icon type. */
|
|
5
|
-
export type IconType = 'add-user' | 'arrow-circle-up' | 'arrow-circle-down' | 'arrow-circle-left' | 'arrow-circle-right' | 'arrow-up' | 'arrow-down' | 'arrow-left' | 'arrow-right' | 'arrows-alt' | 'bolt' | 'caution' | 'check-circle' | 'check-shield' | 'check-solid' | 'check' | 'checkbox-checked' | 'checkbox-unchecked' | 'chevron-double-up' | 'chevron-double-down' | 'chevron-double-left' | 'chevron-double-right' | 'chevron-up' | 'chevron-down' | 'chevron-left' | 'chevron-right' | 'clipboard' | 'clock' | 'close' | 'code' | 'copy' | 'download' | 'dropper' | 'exchange' | 'export-solid' | 'external-link' | 'eye' | 'filter-solid' | 'filter' | 'flag' | 'gears' | 'github' | 'grid' | 'hamburger-menu' | 'hashtag' | 'highlight' | 'info-circle-alt' | 'info-circle' | 'info-square' | 'kabob' | 'link' | 'linkedin' | 'list' | 'lock' | 'magnifying-glass' | 'menu' | 'minus' | 'new-releases' | 'new' | 'no' | 'pencil' | 'person-running' | 'play' | 'plus' | 'question-circle-alt' | 'question-circle' | 'radio-checked' | 'radio-unchecked' | 'recycle-square' | 'recycle' | 'resend' | 'robot' | 'run-again' | 'save' | 'share-nodes' | 'share' | 'sort-triangle' | 'sort' | 'star' | 'step-back' | 'step-forward' | 'sun' | 'table-sort-ascending' | 'table-sort-descending' | 'tag' | 'target' | 'trash' | 'triangle-up' | 'triangle-down' | 'triangle-left' | 'triangle-right' | 'twitter' | 'upload';
|
|
5
|
+
export type IconType = 'add-user' | 'arrow-circle-up' | 'arrow-circle-down' | 'arrow-circle-left' | 'arrow-circle-right' | 'arrow-up' | 'arrow-down' | 'arrow-left' | 'arrow-right' | 'arrows-alt' | 'bolt' | 'caution' | 'check-circle' | 'check-shield' | 'check-solid' | 'check' | 'checkbox-checked' | 'checkbox-unchecked' | 'chevron-double-up' | 'chevron-double-down' | 'chevron-double-left' | 'chevron-double-right' | 'chevron-up' | 'chevron-down' | 'chevron-left' | 'chevron-right' | 'clipboard' | 'clock' | 'close' | 'code' | 'copy' | 'download' | 'dropper' | 'exchange' | 'export-solid' | 'external-link' | 'eye' | 'filter-solid' | 'filter' | 'flag' | 'gears' | 'github' | 'grid' | 'hamburger-menu' | 'hashtag' | 'highlight' | 'images' | 'info-circle-alt' | 'info-circle' | 'info-square' | 'kabob' | 'link' | 'linkedin' | 'list' | 'lock' | 'magnifying-glass' | 'menu' | 'minus' | 'new-releases' | 'new' | 'no' | 'pencil' | 'person-running' | 'play' | 'plus' | 'question-circle-alt' | 'question-circle' | 'radio-checked' | 'radio-unchecked' | 'recycle-square' | 'recycle' | 'resend' | 'robot' | 'run-again' | 'save' | 'share-nodes' | 'share' | 'sort-triangle' | 'sort' | 'star' | 'step-back' | 'step-forward' | 'sun' | 'table-sort-ascending' | 'table-sort-descending' | 'tag' | 'target' | 'trash' | 'triangle-up' | 'triangle-down' | 'triangle-left' | 'triangle-right' | 'twitter' | 'upload';
|
|
6
6
|
/** iconTypes holds each valid icon type. */
|
|
7
7
|
export declare const iconTypes: string[];
|
package/lib/images.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
|
|
5
|
+
function _interopNamespace(e) {
|
|
6
|
+
if (e && e.__esModule) return e;
|
|
7
|
+
var n = Object.create(null);
|
|
8
|
+
if (e) {
|
|
9
|
+
Object.keys(e).forEach(function (k) {
|
|
10
|
+
if (k !== 'default') {
|
|
11
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
12
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () { return e[k]; }
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
n["default"] = e;
|
|
20
|
+
return Object.freeze(n);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
24
|
+
|
|
25
|
+
var _path;
|
|
26
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
27
|
+
const SvgImages = props => /*#__PURE__*/React__namespace.createElement("svg", _extends({
|
|
28
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
29
|
+
viewBox: "0 0 576 512",
|
|
30
|
+
height: 24,
|
|
31
|
+
width: 24
|
|
32
|
+
}, props), _path || (_path = /*#__PURE__*/React__namespace.createElement("path", {
|
|
33
|
+
d: "M160 32c-35.3 0-64 28.7-64 64v224c0 35.3 28.7 64 64 64h352c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160zm236 106.7 96 144c4.9 7.4 5.4 16.8 1.2 24.6S480.9 320 472 320H200c-9.2 0-17.6-5.3-21.6-13.6s-2.9-18.2 2.9-25.4l64-80c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l17.3 21.6 56-84c4.5-6.6 12-10.6 20-10.6s15.5 4 20 10.7zM192 128a32 32 0 1 1 64 0 32 32 0 1 1-64 0zm-144-8c0-13.3-10.7-24-24-24S0 106.7 0 120v224c0 75.1 60.9 136 136 136h320c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120z",
|
|
34
|
+
fill: "currentColor"
|
|
35
|
+
})));
|
|
36
|
+
|
|
37
|
+
exports["default"] = SvgImages;
|
package/lib/index.js
CHANGED
|
@@ -149,6 +149,7 @@ var iconTypes = [
|
|
|
149
149
|
'hamburger-menu',
|
|
150
150
|
'hashtag',
|
|
151
151
|
'highlight',
|
|
152
|
+
'images',
|
|
152
153
|
'info-circle-alt',
|
|
153
154
|
'info-circle',
|
|
154
155
|
'info-square',
|
|
@@ -234,6 +235,7 @@ function __variableDynamicImportRuntime0__(path) {
|
|
|
234
235
|
case './icons/hamburger-menu.svg': return Promise.resolve().then(function () { return require('./hamburger-menu.js'); });
|
|
235
236
|
case './icons/hashtag.svg': return Promise.resolve().then(function () { return require('./hashtag.js'); });
|
|
236
237
|
case './icons/highlight.svg': return Promise.resolve().then(function () { return require('./highlight.js'); });
|
|
238
|
+
case './icons/images.svg': return Promise.resolve().then(function () { return require('./images.js'); });
|
|
237
239
|
case './icons/info-circle-alt.svg': return Promise.resolve().then(function () { return require('./info-circle-alt.js'); });
|
|
238
240
|
case './icons/info-circle.svg': return Promise.resolve().then(function () { return require('./info-circle.js'); });
|
|
239
241
|
case './icons/info-square.svg': return Promise.resolve().then(function () { return require('./info-square.js'); });
|
|
@@ -789,74 +791,55 @@ var OptionsMenuWrapper = function (_a) {
|
|
|
789
791
|
return (React__default["default"].createElement("div", tslib.__assign({ className: classNames__default["default"]('OptionsMenu', menuAlignment(align), className) }, other)));
|
|
790
792
|
};
|
|
791
793
|
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
if ((target && !target.contains(eventTarget)) ||
|
|
804
|
-
(nodeRef && !nodeRef.contains(eventTarget))) {
|
|
794
|
+
function ClickOutsideListener(_a, ref) {
|
|
795
|
+
var children = _a.children, _b = _a.mouseEvent, mouseEvent = _b === void 0 ? 'click' : _b, _c = _a.touchEvent, touchEvent = _c === void 0 ? 'touchend' : _c, target = _a.target, _d = _a.onClickOutside, onClickOutside = _d === void 0 ? function () { return null; } : _d;
|
|
796
|
+
var childElementRef = React.useRef();
|
|
797
|
+
var handleEvent = function (event) {
|
|
798
|
+
if (event.defaultPrevented) {
|
|
799
|
+
return;
|
|
800
|
+
}
|
|
801
|
+
var eventTarget = event.target;
|
|
802
|
+
if (target && (target instanceof HTMLElement || 'current' in target)) {
|
|
803
|
+
var elementTarget = target instanceof HTMLElement ? target : target.current;
|
|
804
|
+
if (!(elementTarget === null || elementTarget === void 0 ? void 0 : elementTarget.contains(eventTarget))) {
|
|
805
805
|
onClickOutside(event);
|
|
806
806
|
}
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
};
|
|
815
|
-
_this.removeEventListeners = function (mouseEvent, touchEvent) {
|
|
816
|
-
typeof mouseEvent === 'string' &&
|
|
817
|
-
document.removeEventListener(mouseEvent, _this.handleEvent);
|
|
818
|
-
typeof touchEvent === 'string' &&
|
|
819
|
-
document.removeEventListener(touchEvent, _this.handleEvent);
|
|
820
|
-
};
|
|
821
|
-
_this.resolveRef = function (node) {
|
|
822
|
-
_this.nodeRef = node;
|
|
823
|
-
// If child has its own ref, we want to update
|
|
824
|
-
// its ref with the newly cloned node
|
|
825
|
-
var ref = _this.props.children.ref;
|
|
826
|
-
setRef(ref, node);
|
|
827
|
-
};
|
|
828
|
-
return _this;
|
|
829
|
-
}
|
|
830
|
-
ClickOutsideListener.prototype.componentDidMount = function () {
|
|
831
|
-
this.attachEventListeners();
|
|
832
|
-
};
|
|
833
|
-
ClickOutsideListener.prototype.componentDidUpdate = function (prevProps) {
|
|
834
|
-
var _a = this.props, mouseEvent = _a.mouseEvent, touchEvent = _a.touchEvent;
|
|
835
|
-
if (prevProps.mouseEvent !== mouseEvent ||
|
|
836
|
-
prevProps.touchEvent !== touchEvent) {
|
|
837
|
-
this.removeEventListeners(prevProps.mouseEvent, prevProps.touchEvent);
|
|
838
|
-
this.attachEventListeners();
|
|
807
|
+
// If a target is passed in via a prop, we defer to utilizing that
|
|
808
|
+
// target instead of a child element target
|
|
809
|
+
return;
|
|
810
|
+
}
|
|
811
|
+
if (childElementRef.current &&
|
|
812
|
+
!childElementRef.current.contains(eventTarget)) {
|
|
813
|
+
onClickOutside(event);
|
|
839
814
|
}
|
|
840
815
|
};
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
this
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
: React__default["default"].cloneElement(props.children, {
|
|
850
|
-
ref: resolveRef
|
|
851
|
-
});
|
|
852
|
-
};
|
|
853
|
-
ClickOutsideListener.displayName = 'ClickOutsideListener';
|
|
854
|
-
ClickOutsideListener.defaultProps = {
|
|
855
|
-
mouseEvent: 'click',
|
|
856
|
-
touchEvent: 'touchend'
|
|
816
|
+
var resolveRef = function (node) {
|
|
817
|
+
childElementRef.current = node;
|
|
818
|
+
// Ref for this component should pass-through to the child node
|
|
819
|
+
setRef(ref, node);
|
|
820
|
+
// If child has its own ref, we want to update
|
|
821
|
+
// its ref with the newly cloned node
|
|
822
|
+
var childRef = children.ref;
|
|
823
|
+
setRef(childRef, node);
|
|
857
824
|
};
|
|
858
|
-
|
|
859
|
-
|
|
825
|
+
React.useEffect(function () {
|
|
826
|
+
typeof mouseEvent === 'string' &&
|
|
827
|
+
document.addEventListener(mouseEvent, handleEvent);
|
|
828
|
+
typeof touchEvent === 'string' &&
|
|
829
|
+
document.addEventListener(touchEvent, handleEvent);
|
|
830
|
+
return function () {
|
|
831
|
+
typeof mouseEvent === 'string' &&
|
|
832
|
+
document.removeEventListener(mouseEvent, handleEvent);
|
|
833
|
+
typeof touchEvent === 'string' &&
|
|
834
|
+
document.removeEventListener(touchEvent, handleEvent);
|
|
835
|
+
};
|
|
836
|
+
}, [mouseEvent, touchEvent]);
|
|
837
|
+
return !children
|
|
838
|
+
? null
|
|
839
|
+
: React__default["default"].cloneElement(children, { ref: resolveRef });
|
|
840
|
+
}
|
|
841
|
+
ClickOutsideListener.displayName = 'ClickOutsideListener';
|
|
842
|
+
var ClickOutsideListener$1 = React__default["default"].forwardRef(ClickOutsideListener);
|
|
860
843
|
|
|
861
844
|
var _a$2 = tslib.__read([38, 40, 9, 13, 32, 27], 6), up = _a$2[0], down$1 = _a$2[1], tab = _a$2[2], enter = _a$2[3], space = _a$2[4], esc = _a$2[5];
|
|
862
845
|
var OptionsMenuList = /** @class */ (function (_super) {
|
|
@@ -962,7 +945,7 @@ var OptionsMenuList = /** @class */ (function (_super) {
|
|
|
962
945
|
// Key event is being handled in componentDidMount
|
|
963
946
|
/* eslint-disable jsx-a11y/click-events-have-key-events */
|
|
964
947
|
/* eslint-disable jsx-a11y/role-supports-aria-props */
|
|
965
|
-
return (React__default["default"].createElement(ClickOutsideListener, { onClickOutside: this.handleClickOutside, mouseEvent: clickOutsideEventActive, touchEvent: clickOutsideEventActive },
|
|
948
|
+
return (React__default["default"].createElement(ClickOutsideListener$1, { onClickOutside: this.handleClickOutside, mouseEvent: clickOutsideEventActive, touchEvent: clickOutsideEventActive },
|
|
966
949
|
React__default["default"].createElement("ul", tslib.__assign({}, other, { className: classNames__default["default"]('OptionsMenu__list', className), "aria-expanded": show, role: "menu", onClick: handleClick, ref: function (el) {
|
|
967
950
|
_this.menuRef = el;
|
|
968
951
|
if (menuRef) {
|
|
@@ -1310,7 +1293,7 @@ var SideBar = /** @class */ (function (_super) {
|
|
|
1310
1293
|
var _b = this.props, children = _b.children, className = _b.className, show = _b.show; _b.onDismiss; var navProps = _b.navProps, other = tslib.__rest(_b, ["children", "className", "show", "onDismiss", "navProps"]);
|
|
1311
1294
|
/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */
|
|
1312
1295
|
return (React__default["default"].createElement(React.Fragment, null,
|
|
1313
|
-
React__default["default"].createElement(ClickOutsideListener, { onClickOutside: this.handleClickOutside },
|
|
1296
|
+
React__default["default"].createElement(ClickOutsideListener$1, { onClickOutside: this.handleClickOutside },
|
|
1314
1297
|
React__default["default"].createElement("nav", tslib.__assign({}, navProps),
|
|
1315
1298
|
React__default["default"].createElement("ul", tslib.__assign({ className: classNames__default["default"]('SideBar', className, animateClass) }, other, { ref: this.navList, onKeyDown: this.onKeyDown }), children))),
|
|
1316
1299
|
React__default["default"].createElement(Scrim, { show: !wide && show })));
|
|
@@ -1449,7 +1432,7 @@ var Dialog = /** @class */ (function (_super) {
|
|
|
1449
1432
|
escapeDeactivates: false,
|
|
1450
1433
|
fallbackFocus: '.Dialog__heading'
|
|
1451
1434
|
} },
|
|
1452
|
-
React__default["default"].createElement(ClickOutsideListener, { onClickOutside: this.handleClickOutside },
|
|
1435
|
+
React__default["default"].createElement(ClickOutsideListener$1, { onClickOutside: this.handleClickOutside },
|
|
1453
1436
|
React__default["default"].createElement("div", tslib.__assign({ role: "dialog", className: classNames__default["default"]('Dialog', className, {
|
|
1454
1437
|
'Dialog--show': show
|
|
1455
1438
|
}), ref: function (el) {
|
|
@@ -2540,6 +2523,117 @@ var SearchField = React.forwardRef(function (_a, ref) {
|
|
|
2540
2523
|
});
|
|
2541
2524
|
SearchField.displayName = 'SearchField';
|
|
2542
2525
|
|
|
2526
|
+
/**
|
|
2527
|
+
* When a component needs to track an internal ref on a component that has a
|
|
2528
|
+
* forwarded ref, useSharedRef will return a MutableRefObject<T> that will
|
|
2529
|
+
* correctly invoke the parent ref as well providing an internal ref.
|
|
2530
|
+
*
|
|
2531
|
+
* @example
|
|
2532
|
+
* React.forwardRef(function Component({ children }, ref) {
|
|
2533
|
+
* const internalRef = useSharedRef<HTMLElement>(ref)
|
|
2534
|
+
* if (internalRef.current) {
|
|
2535
|
+
* // do something with the internal ref...
|
|
2536
|
+
* }
|
|
2537
|
+
* return (<div ref={internalRef}>...</div>)
|
|
2538
|
+
* })
|
|
2539
|
+
*/
|
|
2540
|
+
function useSharedRef(ref) {
|
|
2541
|
+
var internalRef = React.useRef();
|
|
2542
|
+
React.useEffect(function () {
|
|
2543
|
+
setRef(ref, internalRef.current);
|
|
2544
|
+
}, [ref]);
|
|
2545
|
+
return internalRef;
|
|
2546
|
+
}
|
|
2547
|
+
|
|
2548
|
+
function copyTextToClipboard(text) {
|
|
2549
|
+
return tslib.__awaiter(this, void 0, void 0, function () {
|
|
2550
|
+
var copied, element, range, selection;
|
|
2551
|
+
return tslib.__generator(this, function (_a) {
|
|
2552
|
+
switch (_a.label) {
|
|
2553
|
+
case 0:
|
|
2554
|
+
copied = false;
|
|
2555
|
+
if (!('clipboard' in navigator)) return [3 /*break*/, 5];
|
|
2556
|
+
_a.label = 1;
|
|
2557
|
+
case 1:
|
|
2558
|
+
_a.trys.push([1, 3, , 4]);
|
|
2559
|
+
return [4 /*yield*/, navigator.clipboard.writeText(text)];
|
|
2560
|
+
case 2:
|
|
2561
|
+
_a.sent();
|
|
2562
|
+
copied = true;
|
|
2563
|
+
return [3 /*break*/, 4];
|
|
2564
|
+
case 3:
|
|
2565
|
+
_a.sent();
|
|
2566
|
+
return [3 /*break*/, 4];
|
|
2567
|
+
case 4: return [3 /*break*/, 6];
|
|
2568
|
+
case 5:
|
|
2569
|
+
element = document.createElement('span');
|
|
2570
|
+
element.textContent = text;
|
|
2571
|
+
element.setAttribute('aria-hidden', 'true');
|
|
2572
|
+
element.style.position = 'absolute';
|
|
2573
|
+
element.style.height = '1px';
|
|
2574
|
+
element.style.width = '1px';
|
|
2575
|
+
element.style.overflow = 'hidden';
|
|
2576
|
+
element.style.clip = 'rect(1px, 1px, 1px, 1px)';
|
|
2577
|
+
element.style.marginTop = '-1px';
|
|
2578
|
+
element.style.webkitUserSelect = 'text';
|
|
2579
|
+
element.style.userSelect = 'text';
|
|
2580
|
+
document.body.appendChild(element);
|
|
2581
|
+
range = document.createRange();
|
|
2582
|
+
selection = document.getSelection();
|
|
2583
|
+
range.selectNodeContents(element);
|
|
2584
|
+
selection === null || selection === void 0 ? void 0 : selection.addRange(range);
|
|
2585
|
+
try {
|
|
2586
|
+
document.execCommand(text);
|
|
2587
|
+
copied = true;
|
|
2588
|
+
}
|
|
2589
|
+
catch (ex) {
|
|
2590
|
+
// no fallback
|
|
2591
|
+
}
|
|
2592
|
+
element.remove();
|
|
2593
|
+
_a.label = 6;
|
|
2594
|
+
case 6: return [2 /*return*/, copied];
|
|
2595
|
+
}
|
|
2596
|
+
});
|
|
2597
|
+
});
|
|
2598
|
+
}
|
|
2599
|
+
|
|
2600
|
+
var NOTIFICATION_TIMEOUT_MS = 2000;
|
|
2601
|
+
var CopyButton = React.forwardRef(function (_a, ref) {
|
|
2602
|
+
var className = _a.className, value = _a.value, _b = _a.variant, variant = _b === void 0 ? 'tertiary' : _b, _c = _a.children, children = _c === void 0 ? 'Copy' : _c, _d = _a.notificationLabel, notificationLabel = _d === void 0 ? 'Copied' : _d, _e = _a.hideVisibleLabel, hideVisibleLabel = _e === void 0 ? false : _e, _f = _a.tooltipPlacement, tooltipPlacement = _f === void 0 ? 'auto' : _f, onCopy = _a.onCopy, props = tslib.__rest(_a, ["className", "value", "variant", "children", "notificationLabel", "hideVisibleLabel", "tooltipPlacement", "onCopy"]);
|
|
2603
|
+
var _g = tslib.__read(React.useState(false), 2), copied = _g[0], setCopied = _g[1];
|
|
2604
|
+
var copyButtonRef = useSharedRef(ref);
|
|
2605
|
+
var handleClick = React.useCallback(function () {
|
|
2606
|
+
copyTextToClipboard(value);
|
|
2607
|
+
setCopied(true);
|
|
2608
|
+
if (typeof onCopy === 'function') {
|
|
2609
|
+
onCopy(value);
|
|
2610
|
+
}
|
|
2611
|
+
}, [value, onCopy]);
|
|
2612
|
+
React.useEffect(function () {
|
|
2613
|
+
var timeoutId = setTimeout(function () {
|
|
2614
|
+
setCopied(false);
|
|
2615
|
+
}, NOTIFICATION_TIMEOUT_MS);
|
|
2616
|
+
return function () {
|
|
2617
|
+
clearTimeout(timeoutId);
|
|
2618
|
+
};
|
|
2619
|
+
}, [copied]);
|
|
2620
|
+
// The visibility of the tooltip only needs to be controlled
|
|
2621
|
+
// when we are visually displaying the notification label
|
|
2622
|
+
var showTooltip = hideVisibleLabel && !copied ? undefined : copied ? true : false;
|
|
2623
|
+
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
2624
|
+
React__default["default"].createElement(Button, tslib.__assign({ className: classNames__default["default"](className, {
|
|
2625
|
+
'Button--condensed': hideVisibleLabel
|
|
2626
|
+
}), ref: copyButtonRef, variant: variant, onClick: handleClick }, props),
|
|
2627
|
+
React__default["default"].createElement(Icon, { type: copied ? 'check-solid' : 'copy' }),
|
|
2628
|
+
hideVisibleLabel ? React__default["default"].createElement(Offscreen, null, children) : children),
|
|
2629
|
+
React__default["default"].createElement(Tooltip, { target: copyButtonRef, placement: tooltipPlacement, association: "none", show: showTooltip }, hideVisibleLabel && !copied ? children : notificationLabel),
|
|
2630
|
+
typeof document !== 'undefined' &&
|
|
2631
|
+
reactDom.createPortal(React__default["default"].createElement(Offscreen, { "aria-live": "polite" }, copied ? notificationLabel : ' '),
|
|
2632
|
+
// eslint-disable-next-line ssr-friendly/no-dom-globals-in-react-fc
|
|
2633
|
+
document.body)));
|
|
2634
|
+
});
|
|
2635
|
+
CopyButton.displayName = 'CopyButton';
|
|
2636
|
+
|
|
2543
2637
|
SyntaxHighlighter__default["default"].registerLanguage('javascript', js__default["default"]);
|
|
2544
2638
|
SyntaxHighlighter__default["default"].registerLanguage('css', css__default["default"]);
|
|
2545
2639
|
SyntaxHighlighter__default["default"].registerLanguage('html', xml__default["default"]);
|
|
@@ -2547,9 +2641,10 @@ SyntaxHighlighter__default["default"].registerLanguage('yaml', yaml__default["de
|
|
|
2547
2641
|
// HACK: This is a workaround for a bug in react-syntax-highlighter's types.
|
|
2548
2642
|
var Highlighter = SyntaxHighlighter__default["default"];
|
|
2549
2643
|
var Code = function (_a) {
|
|
2550
|
-
var children = _a.children, className = _a.className, _b = _a.scrollable, scrollable = _b === void 0 ? false : _b, props = tslib.__rest(_a, ["children", "className", "scrollable"]);
|
|
2644
|
+
var children = _a.children, className = _a.className, _b = _a.scrollable, scrollable = _b === void 0 ? false : _b, label = _a.label, _c = _a.allowCopy, allowCopy = _c === void 0 ? false : _c, copyButtonProps = _a.copyButtonProps, props = tslib.__rest(_a, ["children", "className", "scrollable", "label", "allowCopy", "copyButtonProps"]);
|
|
2551
2645
|
var ref = React.useRef(null);
|
|
2552
|
-
var
|
|
2646
|
+
var _d = tslib.__read(React.useState(false), 2), scrollableRegion = _d[0], setScrollableRegion = _d[1];
|
|
2647
|
+
var _e = tslib.__read(nextId.useId(1, 'code'), 1), id = _e[0];
|
|
2553
2648
|
// react-syntax-highlighter does not provide direct access to its dom elements
|
|
2554
2649
|
// via refs, but we can specify the wrapping tags to bypass this limitation
|
|
2555
2650
|
// see: https://github.com/react-syntax-highlighter/react-syntax-highlighter/issues/335
|
|
@@ -2573,9 +2668,13 @@ var Code = function (_a) {
|
|
|
2573
2668
|
setScrollableRegion(false);
|
|
2574
2669
|
};
|
|
2575
2670
|
}, [scrollable]);
|
|
2576
|
-
return (React__default["default"].createElement(
|
|
2577
|
-
|
|
2578
|
-
|
|
2671
|
+
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
2672
|
+
(label || allowCopy) && (React__default["default"].createElement("div", { className: "Code__Header" },
|
|
2673
|
+
label && React__default["default"].createElement("span", { id: "".concat(id, "-label") }, label),
|
|
2674
|
+
allowCopy && React__default["default"].createElement(CopyButton, tslib.__assign({ value: children }, copyButtonProps)))),
|
|
2675
|
+
React__default["default"].createElement(Highlighter, tslib.__assign({}, props, { PreTag: PreWithRef, useInlineStyles: false, className: classNames__default["default"]('Code', className, {
|
|
2676
|
+
'Code--scrollable': scrollable
|
|
2677
|
+
}), tabIndex: scrollableRegion ? 0 : undefined }), children)));
|
|
2579
2678
|
};
|
|
2580
2679
|
Code.displayName = 'Code';
|
|
2581
2680
|
|
|
@@ -2585,28 +2684,6 @@ function AxeLoader() {
|
|
|
2585
2684
|
React__default["default"].createElement("path", { fill: "currentColor", d: "M379 549.9h-27.6v-16.7c-7.4 13.5-22.8 20.2-39 20.2-37.1 0-58.9-28.9-58.9-61.6 0-36.5 26.4-61.4 58.9-61.4 21.1 0 34 11.2 39 20.5V434H379v115.9zm-97.8-57.4c0 14.3 10.3 35.2 35.2 35.2 15.4 0 25.5-8 30.8-18.6 2.7-5.1 4-10.5 4.4-16.2.2-5.5-.8-11.2-3.2-16.2-4.9-11-15.6-20.5-32.3-20.5-22.4 0-35 18.1-35 36.1v.2zM436.2 488.9l-39-54.8h33.3l22.6 35.6 22.6-35.6h32.9l-38.8 54.8 43.2 61h-34L453.1 510l-26.2 39.9h-33.5l42.8-61z" })));
|
|
2586
2685
|
}
|
|
2587
2686
|
|
|
2588
|
-
/**
|
|
2589
|
-
* When a component needs to track an internal ref on a component that has a
|
|
2590
|
-
* forwarded ref, useSharedRef will return a MutableRefObject<T> that will
|
|
2591
|
-
* correctly invoke the parent ref as well providing an internal ref.
|
|
2592
|
-
*
|
|
2593
|
-
* @example
|
|
2594
|
-
* React.forwardRef(function Component({ children }, ref) {
|
|
2595
|
-
* const internalRef = useSharedRef<HTMLElement>(ref)
|
|
2596
|
-
* if (internalRef.current) {
|
|
2597
|
-
* // do something with the internal ref...
|
|
2598
|
-
* }
|
|
2599
|
-
* return (<div ref={internalRef}>...</div>)
|
|
2600
|
-
* })
|
|
2601
|
-
*/
|
|
2602
|
-
function useSharedRef(ref) {
|
|
2603
|
-
var internalRef = React.useRef();
|
|
2604
|
-
React.useEffect(function () {
|
|
2605
|
-
setRef(ref, internalRef.current);
|
|
2606
|
-
}, [ref]);
|
|
2607
|
-
return internalRef;
|
|
2608
|
-
}
|
|
2609
|
-
|
|
2610
2687
|
var LoaderOverlay = React.forwardRef(function (_a, ref) {
|
|
2611
2688
|
var className = _a.className, label = _a.label, children = _a.children, focusOnInitialRender = _a.focusOnInitialRender, _b = _a.focusTrap, focusTrap = _b === void 0 ? false : _b, other = tslib.__rest(_a, ["className", "label", "children", "focusOnInitialRender", "focusTrap"]);
|
|
2612
2689
|
var overlayRef = useSharedRef(ref);
|
|
@@ -3232,7 +3309,7 @@ var TwoColumnPanel = React.forwardRef(function (_a, ref) {
|
|
|
3232
3309
|
allowOutsideClick: true,
|
|
3233
3310
|
fallbackFocus: columnLeftRef.current
|
|
3234
3311
|
}, containerElements: [columnLeftRef.current] }),
|
|
3235
|
-
React__default["default"].createElement(ClickOutsideListener, { onClickOutside: handleClickOutside, target: columnLeftRef.current }),
|
|
3312
|
+
React__default["default"].createElement(ClickOutsideListener$1, { onClickOutside: handleClickOutside, target: columnLeftRef.current }),
|
|
3236
3313
|
isCollapsed ? null : skipLink,
|
|
3237
3314
|
showPanel ? ColumnLeftComponent : null,
|
|
3238
3315
|
ColumnRightComponent)));
|
|
@@ -4049,7 +4126,7 @@ var Popover = React.forwardRef(function (_a, ref) {
|
|
|
4049
4126
|
allowOutsideClick: true,
|
|
4050
4127
|
fallbackFocus: '.Popover__borderLeft'
|
|
4051
4128
|
} },
|
|
4052
|
-
React__default["default"].createElement(ClickOutsideListener, { onClickOutside: handleClickOutside },
|
|
4129
|
+
React__default["default"].createElement(ClickOutsideListener$1, { onClickOutside: handleClickOutside },
|
|
4053
4130
|
React__default["default"].createElement("div", tslib.__assign({ id: id, className: classNames__default["default"]('Popover', "Popover--".concat(placement), className, {
|
|
4054
4131
|
'Popover--hidden': !show,
|
|
4055
4132
|
'Popover--prompt': variant === 'prompt'
|
|
@@ -4120,95 +4197,6 @@ var TextEllipsis = React__default["default"].forwardRef(function (_a, ref) {
|
|
|
4120
4197
|
});
|
|
4121
4198
|
TextEllipsis.displayName = 'TextEllipsis';
|
|
4122
4199
|
|
|
4123
|
-
function copyTextToClipboard(text) {
|
|
4124
|
-
return tslib.__awaiter(this, void 0, void 0, function () {
|
|
4125
|
-
var copied, element, range, selection;
|
|
4126
|
-
return tslib.__generator(this, function (_a) {
|
|
4127
|
-
switch (_a.label) {
|
|
4128
|
-
case 0:
|
|
4129
|
-
copied = false;
|
|
4130
|
-
if (!('clipboard' in navigator)) return [3 /*break*/, 5];
|
|
4131
|
-
_a.label = 1;
|
|
4132
|
-
case 1:
|
|
4133
|
-
_a.trys.push([1, 3, , 4]);
|
|
4134
|
-
return [4 /*yield*/, navigator.clipboard.writeText(text)];
|
|
4135
|
-
case 2:
|
|
4136
|
-
_a.sent();
|
|
4137
|
-
copied = true;
|
|
4138
|
-
return [3 /*break*/, 4];
|
|
4139
|
-
case 3:
|
|
4140
|
-
_a.sent();
|
|
4141
|
-
return [3 /*break*/, 4];
|
|
4142
|
-
case 4: return [3 /*break*/, 6];
|
|
4143
|
-
case 5:
|
|
4144
|
-
element = document.createElement('span');
|
|
4145
|
-
element.textContent = text;
|
|
4146
|
-
element.setAttribute('aria-hidden', 'true');
|
|
4147
|
-
element.style.position = 'absolute';
|
|
4148
|
-
element.style.height = '1px';
|
|
4149
|
-
element.style.width = '1px';
|
|
4150
|
-
element.style.overflow = 'hidden';
|
|
4151
|
-
element.style.clip = 'rect(1px, 1px, 1px, 1px)';
|
|
4152
|
-
element.style.marginTop = '-1px';
|
|
4153
|
-
element.style.webkitUserSelect = 'text';
|
|
4154
|
-
element.style.userSelect = 'text';
|
|
4155
|
-
document.body.appendChild(element);
|
|
4156
|
-
range = document.createRange();
|
|
4157
|
-
selection = document.getSelection();
|
|
4158
|
-
range.selectNodeContents(element);
|
|
4159
|
-
selection === null || selection === void 0 ? void 0 : selection.addRange(range);
|
|
4160
|
-
try {
|
|
4161
|
-
document.execCommand(text);
|
|
4162
|
-
copied = true;
|
|
4163
|
-
}
|
|
4164
|
-
catch (ex) {
|
|
4165
|
-
// no fallback
|
|
4166
|
-
}
|
|
4167
|
-
element.remove();
|
|
4168
|
-
_a.label = 6;
|
|
4169
|
-
case 6: return [2 /*return*/, copied];
|
|
4170
|
-
}
|
|
4171
|
-
});
|
|
4172
|
-
});
|
|
4173
|
-
}
|
|
4174
|
-
|
|
4175
|
-
var NOTIFICATION_TIMEOUT_MS = 2000;
|
|
4176
|
-
var CopyButton = React.forwardRef(function (_a, ref) {
|
|
4177
|
-
var className = _a.className, value = _a.value, _b = _a.variant, variant = _b === void 0 ? 'tertiary' : _b, _c = _a.children, children = _c === void 0 ? 'Copy' : _c, _d = _a.notificationLabel, notificationLabel = _d === void 0 ? 'Copied' : _d, _e = _a.hideVisibleLabel, hideVisibleLabel = _e === void 0 ? false : _e, _f = _a.tooltipPlacement, tooltipPlacement = _f === void 0 ? 'auto' : _f, onCopy = _a.onCopy, props = tslib.__rest(_a, ["className", "value", "variant", "children", "notificationLabel", "hideVisibleLabel", "tooltipPlacement", "onCopy"]);
|
|
4178
|
-
var _g = tslib.__read(React.useState(false), 2), copied = _g[0], setCopied = _g[1];
|
|
4179
|
-
var copyButtonRef = useSharedRef(ref);
|
|
4180
|
-
var handleClick = React.useCallback(function () {
|
|
4181
|
-
copyTextToClipboard(value);
|
|
4182
|
-
setCopied(true);
|
|
4183
|
-
if (typeof onCopy === 'function') {
|
|
4184
|
-
onCopy(value);
|
|
4185
|
-
}
|
|
4186
|
-
}, [value, onCopy]);
|
|
4187
|
-
React.useEffect(function () {
|
|
4188
|
-
var timeoutId = setTimeout(function () {
|
|
4189
|
-
setCopied(false);
|
|
4190
|
-
}, NOTIFICATION_TIMEOUT_MS);
|
|
4191
|
-
return function () {
|
|
4192
|
-
clearTimeout(timeoutId);
|
|
4193
|
-
};
|
|
4194
|
-
}, [copied]);
|
|
4195
|
-
// The visibility of the tooltip only needs to be controlled
|
|
4196
|
-
// when we are visually displaying the notification label
|
|
4197
|
-
var showTooltip = hideVisibleLabel && !copied ? undefined : copied ? true : false;
|
|
4198
|
-
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
4199
|
-
React__default["default"].createElement(Button, tslib.__assign({ className: classNames__default["default"](className, {
|
|
4200
|
-
'Button--condensed': hideVisibleLabel
|
|
4201
|
-
}), ref: copyButtonRef, variant: variant, onClick: handleClick }, props),
|
|
4202
|
-
React__default["default"].createElement(Icon, { type: copied ? 'check-solid' : 'copy' }),
|
|
4203
|
-
hideVisibleLabel ? React__default["default"].createElement(Offscreen, null, children) : children),
|
|
4204
|
-
React__default["default"].createElement(Tooltip, { target: copyButtonRef, placement: tooltipPlacement, association: "none", show: showTooltip }, hideVisibleLabel && !copied ? children : notificationLabel),
|
|
4205
|
-
typeof document !== 'undefined' &&
|
|
4206
|
-
reactDom.createPortal(React__default["default"].createElement(Offscreen, { "aria-live": "polite" }, copied ? notificationLabel : ' '),
|
|
4207
|
-
// eslint-disable-next-line ssr-friendly/no-dom-globals-in-react-fc
|
|
4208
|
-
document.body)));
|
|
4209
|
-
});
|
|
4210
|
-
CopyButton.displayName = 'CopyButton';
|
|
4211
|
-
|
|
4212
4200
|
var LIGHT_THEME_CLASS = 'cauldron--theme-light';
|
|
4213
4201
|
var DARK_THEME_CLASS = 'cauldron--theme-dark';
|
|
4214
4202
|
var ThemeContext = React.createContext({
|
|
@@ -4293,7 +4281,7 @@ exports.BreadcrumbItem = BreadcrumbItem;
|
|
|
4293
4281
|
exports.BreadcrumbLink = BreadcrumbLink;
|
|
4294
4282
|
exports.Button = Button;
|
|
4295
4283
|
exports.Checkbox = Checkbox;
|
|
4296
|
-
exports.ClickOutsideListener = ClickOutsideListener;
|
|
4284
|
+
exports.ClickOutsideListener = ClickOutsideListener$1;
|
|
4297
4285
|
exports.Code = Code;
|
|
4298
4286
|
exports.ColumnGroupHeader = ColumnGroupHeader;
|
|
4299
4287
|
exports.ColumnHeader = ColumnHeader;
|
package/package.json
CHANGED