@jobber/components 3.3.2-pre.1 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/dist/ConfirmationModal/index.js +2 -2
- package/dist/{ConfirmationModal-c9dc96c6.js → ConfirmationModal-e95f46d7.js} +1 -1
- package/dist/FormatFile/index.js +3 -3
- package/dist/{FormatFile-8d3b95d6.js → FormatFile-44fc7b58.js} +1 -1
- package/dist/Gallery/index.js +11 -9
- package/dist/LightBox/LightBox.d.ts +1 -0
- package/dist/LightBox/index.js +3 -10
- package/dist/LightBox-6aea2128.js +42 -0
- package/dist/Modal/index.js +1 -1
- package/dist/{Modal-eb97d4c3.js → Modal-cc3bd7bf.js} +1 -60
- package/package.json +4 -3
- package/rollup.config.js +2 -0
- package/dist/LightBox-2077d32f.js +0 -118
- package/dist/Modal/useFocusTrap.d.ts +0 -10
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,30 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [3.4.0](https://github.com/GetJobber/atlantis/compare/@jobber/components@3.3.2...@jobber/components@3.4.0) (2023-03-02)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **hooks:** Add useFocusTrap hook ([#1100](https://github.com/GetJobber/atlantis/issues/1100)) ([2fed042](https://github.com/GetJobber/atlantis/commit/2fed042db990704e1723e1ebe87bff7b04acc44f))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Reverts
|
|
15
|
+
|
|
16
|
+
* Revert "chore(components): Upgrade react router dom (#1089)" (#1101) ([717cb0f](https://github.com/GetJobber/atlantis/commit/717cb0fb0cc1fd178d9fe4f931ebef5949a15818)), closes [#1089](https://github.com/GetJobber/atlantis/issues/1089) [#1101](https://github.com/GetJobber/atlantis/issues/1101)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## [3.3.2](https://github.com/GetJobber/atlantis/compare/@jobber/components@3.3.1...@jobber/components@3.3.2) (2023-03-02)
|
|
23
|
+
|
|
24
|
+
**Note:** Version bump only for package @jobber/components
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
6
30
|
## [3.3.1](https://github.com/GetJobber/atlantis/compare/@jobber/components@3.3.0...@jobber/components@3.3.1) (2023-03-01)
|
|
7
31
|
|
|
8
32
|
**Note:** Version bump only for package @jobber/components
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var ConfirmationModal = require('../ConfirmationModal-
|
|
5
|
+
var ConfirmationModal = require('../ConfirmationModal-e95f46d7.js');
|
|
6
6
|
require('../tslib.es6-5b50eb8e.js');
|
|
7
7
|
require('react');
|
|
8
8
|
require('@jobber/hooks');
|
|
9
|
-
require('../Modal-
|
|
9
|
+
require('../Modal-cc3bd7bf.js');
|
|
10
10
|
require('react-dom');
|
|
11
11
|
require('classnames');
|
|
12
12
|
require('framer-motion');
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var tslib_es6 = require('./tslib.es6-5b50eb8e.js');
|
|
4
4
|
var React = require('react');
|
|
5
5
|
var jobberHooks = require('@jobber/hooks');
|
|
6
|
-
var Modal = require('./Modal-
|
|
6
|
+
var Modal = require('./Modal-cc3bd7bf.js');
|
|
7
7
|
var Content = require('./Content-18de5fbb.js');
|
|
8
8
|
var Markdown = require('./Markdown-b53e0308.js');
|
|
9
9
|
|
package/dist/FormatFile/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var FormatFile = require('../FormatFile-
|
|
5
|
+
var FormatFile = require('../FormatFile-44fc7b58.js');
|
|
6
6
|
require('react');
|
|
7
7
|
require('classnames');
|
|
8
8
|
require('filesize');
|
|
@@ -13,9 +13,9 @@ require('react-router-dom');
|
|
|
13
13
|
require('../Icon-d5ad1a6d.js');
|
|
14
14
|
require('@jobber/design');
|
|
15
15
|
require('../Typography-fbe0ed6e.js');
|
|
16
|
-
require('../ConfirmationModal-
|
|
16
|
+
require('../ConfirmationModal-e95f46d7.js');
|
|
17
17
|
require('@jobber/hooks');
|
|
18
|
-
require('../Modal-
|
|
18
|
+
require('../Modal-cc3bd7bf.js');
|
|
19
19
|
require('react-dom');
|
|
20
20
|
require('framer-motion');
|
|
21
21
|
require('../Heading-a9a66964.js');
|
|
@@ -6,7 +6,7 @@ var getHumanReadableFileSize = require('filesize');
|
|
|
6
6
|
var styleInject_es = require('./style-inject.es-dcee06b6.js');
|
|
7
7
|
var tslib_es6 = require('./tslib.es6-5b50eb8e.js');
|
|
8
8
|
var Button = require('./Button-cd30df0f.js');
|
|
9
|
-
var ConfirmationModal = require('./ConfirmationModal-
|
|
9
|
+
var ConfirmationModal = require('./ConfirmationModal-e95f46d7.js');
|
|
10
10
|
var Icon = require('./Icon-d5ad1a6d.js');
|
|
11
11
|
var Typography = require('./Typography-fbe0ed6e.js');
|
|
12
12
|
var Text = require('./Text-e012fb46.js');
|
package/dist/Gallery/index.js
CHANGED
|
@@ -6,25 +6,27 @@ var tslib_es6 = require('../tslib.es6-5b50eb8e.js');
|
|
|
6
6
|
var React = require('react');
|
|
7
7
|
var classnames = require('classnames');
|
|
8
8
|
var styleInject_es = require('../style-inject.es-dcee06b6.js');
|
|
9
|
-
var LightBox = require('../LightBox-
|
|
10
|
-
var FormatFile = require('../FormatFile-
|
|
9
|
+
var LightBox = require('../LightBox-6aea2128.js');
|
|
10
|
+
var FormatFile = require('../FormatFile-44fc7b58.js');
|
|
11
11
|
var Button = require('../Button-cd30df0f.js');
|
|
12
|
-
require('
|
|
13
|
-
require('
|
|
14
|
-
require('../Icon-d5ad1a6d.js');
|
|
15
|
-
require('@jobber/design');
|
|
16
|
-
require('../ButtonDismiss-a9590195.js');
|
|
12
|
+
require('react-image-lightbox');
|
|
13
|
+
require('react-image-lightbox/style.css');
|
|
17
14
|
require('filesize');
|
|
18
|
-
require('../ConfirmationModal-
|
|
19
|
-
require('
|
|
15
|
+
require('../ConfirmationModal-e95f46d7.js');
|
|
16
|
+
require('@jobber/hooks');
|
|
17
|
+
require('../Modal-cc3bd7bf.js');
|
|
20
18
|
require('react-dom');
|
|
19
|
+
require('framer-motion');
|
|
21
20
|
require('../Heading-a9a66964.js');
|
|
22
21
|
require('../Typography-fbe0ed6e.js');
|
|
22
|
+
require('../ButtonDismiss-a9590195.js');
|
|
23
23
|
require('../Content-18de5fbb.js');
|
|
24
24
|
require('../Markdown-b53e0308.js');
|
|
25
25
|
require('react-markdown');
|
|
26
26
|
require('../Text-e012fb46.js');
|
|
27
27
|
require('../Emphasis-75a3f411.js');
|
|
28
|
+
require('../Icon-d5ad1a6d.js');
|
|
29
|
+
require('@jobber/design');
|
|
28
30
|
require('../ProgressBar-e9a49129.js');
|
|
29
31
|
require('react-router-dom');
|
|
30
32
|
|
package/dist/LightBox/index.js
CHANGED
|
@@ -2,19 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var LightBox = require('../LightBox-
|
|
5
|
+
var LightBox = require('../LightBox-6aea2128.js');
|
|
6
6
|
require('../tslib.es6-5b50eb8e.js');
|
|
7
7
|
require('react');
|
|
8
|
-
require('
|
|
9
|
-
require('@jobber/hooks');
|
|
8
|
+
require('react-image-lightbox');
|
|
10
9
|
require('../style-inject.es-dcee06b6.js');
|
|
11
|
-
require('
|
|
12
|
-
require('@jobber/design');
|
|
13
|
-
require('../ButtonDismiss-a9590195.js');
|
|
14
|
-
require('../Button-cd30df0f.js');
|
|
15
|
-
require('classnames');
|
|
16
|
-
require('react-router-dom');
|
|
17
|
-
require('../Typography-fbe0ed6e.js');
|
|
10
|
+
require('react-image-lightbox/style.css');
|
|
18
11
|
|
|
19
12
|
|
|
20
13
|
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var tslib_es6 = require('./tslib.es6-5b50eb8e.js');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var ExternalLightBox = require('react-image-lightbox');
|
|
6
|
+
var styleInject_es = require('./style-inject.es-dcee06b6.js');
|
|
7
|
+
require('react-image-lightbox/style.css');
|
|
8
|
+
|
|
9
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
10
|
+
|
|
11
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
12
|
+
var ExternalLightBox__default = /*#__PURE__*/_interopDefaultLegacy(ExternalLightBox);
|
|
13
|
+
|
|
14
|
+
var css = "._23H2TI8rNmnv0zlHOHZooa.ril__outer {\n font-family: var(--typography--fontFamily-normal);\n background-color: transparent;\n}\n\n._23H2TI8rNmnv0zlHOHZooa.ril__outer:before {\n content: \"\";\n display: block;\n width: 100%;\n height: 100%;\n background-color: var(--color-overlay);\n}\n\n._23H2TI8rNmnv0zlHOHZooa.ril__outer .ril__captionContent {\n color: var(--color-greyBlue--lighter);\n}\n\n._23H2TI8rNmnv0zlHOHZooa.ril__outer .ril__toolbarItem {\n color: var(--color-greyBlue--lighter);\n}\n";
|
|
15
|
+
var styles = {"wrapper":"_23H2TI8rNmnv0zlHOHZooa"};
|
|
16
|
+
styleInject_es.styleInject(css);
|
|
17
|
+
|
|
18
|
+
function LightBox(_a) {
|
|
19
|
+
var open = _a.open, images = _a.images, _b = _a.imageIndex, imageIndex = _b === void 0 ? 0 : _b, onRequestClose = _a.onRequestClose;
|
|
20
|
+
var _c = tslib_es6.__read(React.useState(imageIndex), 2), currentImageIndex = _c[0], setCurrentImageIndex = _c[1];
|
|
21
|
+
var nextSrc = undefined;
|
|
22
|
+
var prevSrc = undefined;
|
|
23
|
+
if (images.length > 1) {
|
|
24
|
+
nextSrc = images[(currentImageIndex + 1) % images.length].url;
|
|
25
|
+
prevSrc =
|
|
26
|
+
images[(currentImageIndex + images.length - 1) % images.length].url;
|
|
27
|
+
}
|
|
28
|
+
React.useEffect(function () {
|
|
29
|
+
setCurrentImageIndex(imageIndex);
|
|
30
|
+
}, [imageIndex]);
|
|
31
|
+
return (React__default["default"].createElement(React__default["default"].Fragment, null, open && (React__default["default"].createElement(ExternalLightBox__default["default"], { wrapperClassName: styles.wrapper, mainSrc: images[currentImageIndex].url, enableZoom: false, nextSrc: nextSrc, prevSrc: prevSrc, imageTitle: images[currentImageIndex].title, imageCaption: images[currentImageIndex].caption, onCloseRequest: function () {
|
|
32
|
+
return onRequestClose({ lastPosition: currentImageIndex });
|
|
33
|
+
}, onMovePrevRequest: handleMovePrevious, onMoveNextRequest: handleMoveNext }))));
|
|
34
|
+
function handleMovePrevious() {
|
|
35
|
+
setCurrentImageIndex((currentImageIndex + images.length - 1) % images.length);
|
|
36
|
+
}
|
|
37
|
+
function handleMoveNext() {
|
|
38
|
+
setCurrentImageIndex((currentImageIndex + 1) % images.length);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
exports.LightBox = LightBox;
|
package/dist/Modal/index.js
CHANGED
|
@@ -25,70 +25,11 @@ var css = "._1rPyLQMc1nSLWx4zAzSas0 {\n --modal--padding: var(--space-base);\n
|
|
|
25
25
|
var sizes = {"small":"_1rPyLQMc1nSLWx4zAzSas0","large":"_3GkHDHYnN_8P6NQFVSfYiB"};
|
|
26
26
|
styleInject_es.styleInject(css);
|
|
27
27
|
|
|
28
|
-
/**
|
|
29
|
-
* Traps the focus within the children of the ref element.
|
|
30
|
-
*
|
|
31
|
-
* @param active - Turns the focus trapping on or off. Also adds aria-hidden on the
|
|
32
|
-
* body but not the dialog.
|
|
33
|
-
*
|
|
34
|
-
* @returns ref
|
|
35
|
-
*/
|
|
36
|
-
function useFocusTrap(active) {
|
|
37
|
-
// There's an ongoing issue with useRef return type clashing with an element's
|
|
38
|
-
// ref prop type. TLDR: Use null because useRef doesn't expect undefined.
|
|
39
|
-
// https://github.com/DefinitelyTyped/DefinitelyTyped/issues/35572
|
|
40
|
-
var ref = React.useRef(null);
|
|
41
|
-
function handleKeyDown(event) {
|
|
42
|
-
if (!(active && ref.current) || event.key !== "Tab") {
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
var _a = getElements(ref.current), firstElement = _a.firstElement, lastElement = _a.lastElement;
|
|
46
|
-
if (event.shiftKey) {
|
|
47
|
-
if (document.activeElement === firstElement) {
|
|
48
|
-
lastElement.focus();
|
|
49
|
-
event.preventDefault();
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
if (document.activeElement === lastElement) {
|
|
54
|
-
firstElement.focus();
|
|
55
|
-
event.preventDefault();
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
React.useEffect(function () {
|
|
60
|
-
var _a, _b;
|
|
61
|
-
if (active) {
|
|
62
|
-
(_a = ref.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
63
|
-
(_b = ref.current) === null || _b === void 0 ? void 0 : _b.addEventListener("keydown", handleKeyDown);
|
|
64
|
-
}
|
|
65
|
-
return function () {
|
|
66
|
-
var _a;
|
|
67
|
-
(_a = ref.current) === null || _a === void 0 ? void 0 : _a.removeEventListener("keydown", handleKeyDown);
|
|
68
|
-
};
|
|
69
|
-
}, [active]);
|
|
70
|
-
return ref;
|
|
71
|
-
}
|
|
72
|
-
function getElements(ref) {
|
|
73
|
-
var focusables = [
|
|
74
|
-
"button",
|
|
75
|
-
"[href]",
|
|
76
|
-
"input",
|
|
77
|
-
"select",
|
|
78
|
-
"textarea",
|
|
79
|
-
'[tabindex]:not([tabindex="-1"])',
|
|
80
|
-
];
|
|
81
|
-
var elements = ref.querySelectorAll(focusables.join(", "));
|
|
82
|
-
var firstElement = ref;
|
|
83
|
-
var lastElement = elements[elements.length - 1];
|
|
84
|
-
return { firstElement: firstElement, lastElement: lastElement };
|
|
85
|
-
}
|
|
86
|
-
|
|
87
28
|
function Modal(_a) {
|
|
88
29
|
var _b = _a.open, open = _b === void 0 ? false : _b, title = _a.title, size = _a.size, _c = _a.dismissible, dismissible = _c === void 0 ? true : _c, children = _a.children, primaryAction = _a.primaryAction, secondaryAction = _a.secondaryAction, tertiaryAction = _a.tertiaryAction, onRequestClose = _a.onRequestClose;
|
|
89
30
|
var modalClassName = classnames__default["default"](styles.modal, size && sizes[size]);
|
|
90
31
|
jobberHooks.useRefocusOnActivator(open);
|
|
91
|
-
var modalRef = useFocusTrap(open);
|
|
32
|
+
var modalRef = jobberHooks.useFocusTrap(open);
|
|
92
33
|
jobberHooks.useOnKeyDown(handleRequestClose, "Escape");
|
|
93
34
|
var template = (React__default["default"].createElement(framerMotion.AnimatePresence, null, open && (React__default["default"].createElement("div", { ref: modalRef, className: styles.container, tabIndex: 0 },
|
|
94
35
|
React__default["default"].createElement(framerMotion.motion.div, { key: styles.overlay, className: styles.overlay, onClick: onRequestClose, initial: { opacity: 0 }, animate: { opacity: 0.8 }, exit: { opacity: 0 }, transition: { duration: 0.2 } }),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jobber/components",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.4.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"@jobber/design": "^0.29.3",
|
|
22
22
|
"@jobber/formatters": "^0.2.1",
|
|
23
|
-
"@jobber/hooks": "^1.
|
|
23
|
+
"@jobber/hooks": "^1.13.0",
|
|
24
24
|
"@popperjs/core": "^2.0.6",
|
|
25
25
|
"@std-proposal/temporal": "0.0.1",
|
|
26
26
|
"@tanstack/react-table": "8.5.13",
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"react-datepicker": "^4.10.0",
|
|
42
42
|
"react-dropzone": "^11.0.2",
|
|
43
43
|
"react-hook-form": "^6.7.2",
|
|
44
|
+
"react-image-lightbox": "^5.1.1",
|
|
44
45
|
"react-markdown": "^8.0.3",
|
|
45
46
|
"react-popper": "^2.2.5",
|
|
46
47
|
"react-router-dom": "~5.2.0",
|
|
@@ -84,5 +85,5 @@
|
|
|
84
85
|
"> 1%",
|
|
85
86
|
"IE 10"
|
|
86
87
|
],
|
|
87
|
-
"gitHead": "
|
|
88
|
+
"gitHead": "347e591cc612d851632e3728e0a7d0c36f684aad"
|
|
88
89
|
}
|
package/rollup.config.js
CHANGED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var tslib_es6 = require('./tslib.es6-5b50eb8e.js');
|
|
4
|
-
var React = require('react');
|
|
5
|
-
var framerMotion = require('framer-motion');
|
|
6
|
-
var jobberHooks = require('@jobber/hooks');
|
|
7
|
-
var styleInject_es = require('./style-inject.es-dcee06b6.js');
|
|
8
|
-
var Icon = require('./Icon-d5ad1a6d.js');
|
|
9
|
-
var ButtonDismiss = require('./ButtonDismiss-a9590195.js');
|
|
10
|
-
|
|
11
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
12
|
-
|
|
13
|
-
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
14
|
-
|
|
15
|
-
var css = "._23H2TI8rNmnv0zlHOHZooa.ril__outer {\n font-family: var(--typography--fontFamily-normal);\n background-color: transparent;\n}\n\n._23H2TI8rNmnv0zlHOHZooa.ril__outer:before {\n content: \"\";\n display: block;\n width: 100%;\n height: 100%;\n background-color: var(--color-overlay);\n}\n\n._23H2TI8rNmnv0zlHOHZooa.ril__outer .ril__captionContent {\n color: var(--color-greyBlue--lighter);\n}\n\n._23H2TI8rNmnv0zlHOHZooa.ril__outer .ril__toolbarItem {\n color: var(--color-greyBlue--lighter);\n}\n\n._2qgU3ylcPWUJGRthB18cb,\n._27gh3HPkx5J1Ru4Tqp_1tF {\n display: -ms-flexbox;\n display: flex;\n position: absolute;\n top: calc(50% - 20px);\n z-index: 2;\n width: 20px;\n height: 34px;\n padding: 30px 20px;\n font-size: 18px;\n font-weight: bold;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-color: rgba(0, 0, 0, 0.2);\n cursor: pointer;\n -ms-flex-pack: center;\n justify-content: center;\n -ms-flex-align: center;\n align-items: center;\n}\n\n._2qgU3ylcPWUJGRthB18cb {\n right: 0px;\n}\n\n._27gh3HPkx5J1Ru4Tqp_1tF {\n left: 0px;\n}\n\n._3FuSx2b8rfxjzTQKeVn6MW {\n display: -ms-flexbox;\n display: flex;\n position: fixed;\n top: 0;\n left: 0;\n z-index: 10;\n width: 100%;\n height: 100%;\n background-color: var(--color-overlay);\n -ms-flex-pack: justify;\n justify-content: space-between;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n._2gGRj41uQJhcl0zcSNgsOA {\n display: -ms-flexbox;\n display: flex;\n padding: var(--space-small) var(--space-base);\n color: var(--color-greyBlue--lighter);\n font-size: var(--typography--fontSize-large);\n background-color: rgba(0, 0, 0, 0.5);\n -ms-flex-pack: justify;\n justify-content: space-between;\n}\n\n.oyIA3-aR1Fvwn0lpp1Mgx {\n display: -ms-inline-flexbox;\n display: inline-flex;\n -ms-flex-align: center;\n align-items: center;\n}\n\n._1PPDSsP7v3FAZG3DA--Oq3 {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: center;\n justify-content: center;\n}\n";
|
|
16
|
-
var styles = {"wrapper":"_23H2TI8rNmnv0zlHOHZooa","next":"_2qgU3ylcPWUJGRthB18cb","prev":"_27gh3HPkx5J1Ru4Tqp_1tF","lightboxWrapper":"_3FuSx2b8rfxjzTQKeVn6MW","toolbar":"_2gGRj41uQJhcl0zcSNgsOA","title":"oyIA3-aR1Fvwn0lpp1Mgx","imagesWrapper":"_1PPDSsP7v3FAZG3DA--Oq3"};
|
|
17
|
-
styleInject_es.styleInject(css);
|
|
18
|
-
|
|
19
|
-
var swipeConfidenceThreshold = 10000;
|
|
20
|
-
var swipePower = function (offset, velocity) {
|
|
21
|
-
return Math.abs(offset) * velocity;
|
|
22
|
-
};
|
|
23
|
-
var variants = {
|
|
24
|
-
enter: function (direction) {
|
|
25
|
-
return {
|
|
26
|
-
x: direction > 0 ? 2000 : -2000,
|
|
27
|
-
opacity: 0,
|
|
28
|
-
};
|
|
29
|
-
},
|
|
30
|
-
center: {
|
|
31
|
-
zIndex: 1,
|
|
32
|
-
x: 0,
|
|
33
|
-
opacity: 1,
|
|
34
|
-
},
|
|
35
|
-
};
|
|
36
|
-
var imageTransition = {
|
|
37
|
-
x: { type: "spring", stiffness: 300, damping: 30 },
|
|
38
|
-
opacity: { duration: 0.2 },
|
|
39
|
-
};
|
|
40
|
-
function LightBox(_a) {
|
|
41
|
-
var open = _a.open, images = _a.images, _b = _a.imageIndex, imageIndex = _b === void 0 ? 0 : _b, onRequestClose = _a.onRequestClose;
|
|
42
|
-
var _c = tslib_es6.__read(React.useState(imageIndex), 2), currentImageIndex = _c[0], setCurrentImageIndex = _c[1];
|
|
43
|
-
jobberHooks.useRefocusOnActivator(open);
|
|
44
|
-
jobberHooks.useOnKeyDown(function () {
|
|
45
|
-
onRequestClose({ lastPosition: currentImageIndex });
|
|
46
|
-
}, "Escape");
|
|
47
|
-
jobberHooks.useOnKeyDown(handleMovePrevious, {
|
|
48
|
-
key: "ArrowLeft",
|
|
49
|
-
});
|
|
50
|
-
jobberHooks.useOnKeyDown(handleMoveNext, {
|
|
51
|
-
key: "ArrowRight",
|
|
52
|
-
});
|
|
53
|
-
React.useEffect(function () {
|
|
54
|
-
setCurrentImageIndex(imageIndex);
|
|
55
|
-
}, [imageIndex, open]);
|
|
56
|
-
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
57
|
-
React__default["default"].createElement(framerMotion.AnimatePresence, { initial: false }, open && (React__default["default"].createElement(LightBoxWrapper, { key: "lightbox" },
|
|
58
|
-
React__default["default"].createElement(Toolbar, null,
|
|
59
|
-
React__default["default"].createElement(Title, null, images[currentImageIndex].title),
|
|
60
|
-
React__default["default"].createElement(ButtonDismiss.ButtonDismiss, { ariaLabel: "Close lightbox", onClick: function () {
|
|
61
|
-
onRequestClose({ lastPosition: currentImageIndex });
|
|
62
|
-
} })),
|
|
63
|
-
React__default["default"].createElement(ImagesWrapper, { handleImageWrapperClick: handleImageWrapperClick },
|
|
64
|
-
React__default["default"].createElement(PreviousButton, { onClick: handleMovePrevious }),
|
|
65
|
-
React__default["default"].createElement(framerMotion.motion.img, { key: currentImageIndex, variants: variants, src: images[currentImageIndex].url, initial: "enter", animate: "center", transition: imageTransition, drag: "x", dragConstraints: { left: 0, right: 0 }, dragElastic: 1, onDragEnd: handleOnDragEnd }),
|
|
66
|
-
React__default["default"].createElement(NextButton, { onClick: handleMoveNext })),
|
|
67
|
-
React__default["default"].createElement(Toolbar, null, images[currentImageIndex].caption))))));
|
|
68
|
-
function handleMovePrevious() {
|
|
69
|
-
setCurrentImageIndex((currentImageIndex + images.length - 1) % images.length);
|
|
70
|
-
}
|
|
71
|
-
function handleMoveNext() {
|
|
72
|
-
setCurrentImageIndex((currentImageIndex + 1) % images.length);
|
|
73
|
-
}
|
|
74
|
-
function handleImageWrapperClick(event) {
|
|
75
|
-
var target = event.target;
|
|
76
|
-
if (target.id === "imageWrapper") {
|
|
77
|
-
onRequestClose({ lastPosition: currentImageIndex });
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
function handleOnDragEnd(event, _a) {
|
|
81
|
-
var offset = _a.offset, velocity = _a.velocity;
|
|
82
|
-
var swipe = swipePower(offset.x, velocity.x);
|
|
83
|
-
if (swipe < -swipeConfidenceThreshold) {
|
|
84
|
-
handleMovePrevious();
|
|
85
|
-
}
|
|
86
|
-
else if (swipe > swipeConfidenceThreshold) {
|
|
87
|
-
handleMoveNext();
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
function Title(_a) {
|
|
92
|
-
var children = _a.children;
|
|
93
|
-
return React__default["default"].createElement("span", { className: styles.title }, children);
|
|
94
|
-
}
|
|
95
|
-
function Toolbar(_a) {
|
|
96
|
-
var children = _a.children;
|
|
97
|
-
return React__default["default"].createElement("div", { className: styles.toolbar }, children);
|
|
98
|
-
}
|
|
99
|
-
function LightBoxWrapper(_a) {
|
|
100
|
-
var children = _a.children;
|
|
101
|
-
return (React__default["default"].createElement("div", { className: styles.lightboxWrapper, tabIndex: 0, "aria-label": "Lightbox" }, children));
|
|
102
|
-
}
|
|
103
|
-
function ImagesWrapper(_a) {
|
|
104
|
-
var children = _a.children, handleImageWrapperClick = _a.handleImageWrapperClick;
|
|
105
|
-
return (React__default["default"].createElement("div", { className: styles.imagesWrapper, onClick: handleImageWrapperClick, id: "imageWrapper" }, children));
|
|
106
|
-
}
|
|
107
|
-
function PreviousButton(_a) {
|
|
108
|
-
var onClick = _a.onClick;
|
|
109
|
-
return (React__default["default"].createElement("div", { className: styles.prev, onClick: onClick },
|
|
110
|
-
React__default["default"].createElement(Icon.Icon, { name: "arrowLeft", color: "white", size: "large" })));
|
|
111
|
-
}
|
|
112
|
-
function NextButton(_a) {
|
|
113
|
-
var onClick = _a.onClick;
|
|
114
|
-
return (React__default["default"].createElement("div", { className: styles.next, onClick: onClick },
|
|
115
|
-
React__default["default"].createElement(Icon.Icon, { name: "arrowRight", color: "white", size: "large" })));
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
exports.LightBox = LightBox;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
/**
|
|
3
|
-
* Traps the focus within the children of the ref element.
|
|
4
|
-
*
|
|
5
|
-
* @param active - Turns the focus trapping on or off. Also adds aria-hidden on the
|
|
6
|
-
* body but not the dialog.
|
|
7
|
-
*
|
|
8
|
-
* @returns ref
|
|
9
|
-
*/
|
|
10
|
-
export declare function useFocusTrap<T extends HTMLElement>(active: boolean): import("react").RefObject<T>;
|