@jobber/components 4.84.0 → 4.85.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/StatusIndicator.d.ts +1 -0
- package/StatusIndicator.js +17 -0
- package/dist/Combobox/Combobox.types.d.ts +4 -0
- package/dist/Combobox/components/ComboboxOption/ComboboxOption.d.ts +2 -1
- package/dist/Combobox/index.js +2 -1
- package/dist/{Combobox-df332d89.js → Combobox-a24c8241.js} +6 -2
- package/dist/ConfirmationModal/index.js +2 -2
- package/dist/{ConfirmationModal-f1a049fb.js → ConfirmationModal-52e16873.js} +1 -1
- package/dist/DataList/DataList.types.d.ts +0 -1
- package/dist/DataList/index.js +8 -15
- package/dist/Flex/index.js +5 -33
- package/dist/Flex-d490c4db.js +38 -0
- package/dist/FormatFile/index.js +3 -3
- package/dist/{FormatFile-f10799f5.js → FormatFile-f036902d.js} +1 -1
- package/dist/Gallery/index.js +3 -3
- package/dist/Modal/index.js +1 -1
- package/dist/{Modal-a0627c92.js → Modal-c336cac6.js} +1 -1
- package/dist/StatusIndicator/StatusIndicator.d.ts +7 -0
- package/dist/StatusIndicator/StatusIndicator.type.d.ts +1 -0
- package/dist/StatusIndicator/index.d.ts +2 -0
- package/dist/StatusIndicator/index.js +11 -0
- package/dist/StatusIndicator-b179d06e.js +18 -0
- package/dist/StatusLabel/StatusLabel.d.ts +3 -3
- package/dist/StatusLabel/index.js +5 -6
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./dist/StatusIndicator";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
var StatusIndicator = require("./dist/StatusIndicator");
|
|
8
|
+
|
|
9
|
+
Object.keys(StatusIndicator).forEach(function(key) {
|
|
10
|
+
if (key === "default" || key === "__esModule") return;
|
|
11
|
+
Object.defineProperty(exports, key, {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function get() {
|
|
14
|
+
return StatusIndicator[key];
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
});
|
|
@@ -62,6 +62,10 @@ export interface ComboboxOption {
|
|
|
62
62
|
* The value to be visually displayed in the Combobox options list.
|
|
63
63
|
*/
|
|
64
64
|
label: string;
|
|
65
|
+
/**
|
|
66
|
+
* An optional component to be displayed before the label.
|
|
67
|
+
*/
|
|
68
|
+
prefix?: React.ReactElement;
|
|
65
69
|
}
|
|
66
70
|
export interface ComboboxContentProps {
|
|
67
71
|
/**
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
import React from "react";
|
|
2
2
|
export interface ComboboxOptionProps {
|
|
3
3
|
readonly id: string | number;
|
|
4
4
|
readonly label: string;
|
|
5
|
+
readonly prefix?: React.ReactNode;
|
|
5
6
|
}
|
|
6
7
|
export declare function ComboboxOption(props: ComboboxOptionProps): JSX.Element;
|
package/dist/Combobox/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var Combobox = require('../Combobox-
|
|
5
|
+
var Combobox = require('../Combobox-a24c8241.js');
|
|
6
6
|
require('react');
|
|
7
7
|
require('classnames');
|
|
8
8
|
require('react-dom');
|
|
@@ -17,6 +17,7 @@ require('../Content-e3f7b6fc.js');
|
|
|
17
17
|
require('../Spinner-9d8fc7ff.js');
|
|
18
18
|
require('../AnimatedPresence-20a02aaa.js');
|
|
19
19
|
require('framer-motion');
|
|
20
|
+
require('../Flex-d490c4db.js');
|
|
20
21
|
require('@jobber/hooks/useInView');
|
|
21
22
|
require('../Button-b73a5e01.js');
|
|
22
23
|
require('react-router-dom');
|
|
@@ -9,6 +9,7 @@ var Text = require('./Text-259af966.js');
|
|
|
9
9
|
var Glimmer = require('./Glimmer-84dee1ed.js');
|
|
10
10
|
var Spinner = require('./Spinner-9d8fc7ff.js');
|
|
11
11
|
var AnimatedPresence = require('./AnimatedPresence-20a02aaa.js');
|
|
12
|
+
var Flex = require('./Flex-d490c4db.js');
|
|
12
13
|
var tslib_es6 = require('./tslib.es6-754e2961.js');
|
|
13
14
|
var useInView = require('@jobber/hooks/useInView');
|
|
14
15
|
var Typography = require('./Typography-c45bf216.js');
|
|
@@ -84,7 +85,9 @@ function ComboboxOption(props) {
|
|
|
84
85
|
const isSelected = selected.some(selection => selection.id.toString() === props.id.toString());
|
|
85
86
|
return (React__default["default"].createElement("li", { key: props.id, tabIndex: -1, "data-selected": isSelected, role: "option", "aria-selected": isSelected, onClick: () => selectionHandler &&
|
|
86
87
|
selectionHandler({ id: props.id, label: props.label }), className: classnames__default["default"](styles$4.option) },
|
|
87
|
-
props.
|
|
88
|
+
React__default["default"].createElement(Flex.Flex, { template: props.prefix ? ["shrink", "grow"] : ["grow"] },
|
|
89
|
+
props.prefix,
|
|
90
|
+
props.label),
|
|
88
91
|
React__default["default"].createElement("div", null, isSelected && React__default["default"].createElement(Icon.Icon, { name: "checkmark", color: "blue" }))));
|
|
89
92
|
}
|
|
90
93
|
|
|
@@ -107,7 +110,7 @@ function ComboboxContentList(props) {
|
|
|
107
110
|
return (React__default["default"].createElement("div", { className: classnames__default["default"](styles$5.container, styles$5[listScrollState]) },
|
|
108
111
|
optionsExist && (React__default["default"].createElement("ul", { className: styles$5.optionsList, role: "listbox", "aria-multiselectable": props.multiselect, ref: props.optionsListRef },
|
|
109
112
|
props.options.map(option => {
|
|
110
|
-
return (React__default["default"].createElement(ComboboxOption, { key: option.id, id: option.id, label: option.label }));
|
|
113
|
+
return (React__default["default"].createElement(ComboboxOption, { key: option.id, id: option.id, label: option.label, prefix: option.prefix }));
|
|
111
114
|
}),
|
|
112
115
|
React__default["default"].createElement("div", { className: classnames__default["default"]([styles$5.loadingContainer, styles$5.hasOptions]) },
|
|
113
116
|
React__default["default"].createElement(AnimatedPresence.AnimatedPresence, { transition: "fromBottom" }, Boolean(props.loading && optionsExist) && (React__default["default"].createElement(Spinner.Spinner, { size: "small" })))),
|
|
@@ -459,6 +462,7 @@ function Combobox(props) {
|
|
|
459
462
|
const options = React.useMemo(() => (optionElements === null || optionElements === void 0 ? void 0 : optionElements.map(option => ({
|
|
460
463
|
id: option.props.id,
|
|
461
464
|
label: option.props.label,
|
|
465
|
+
prefix: option.props.prefix,
|
|
462
466
|
}))) || [], [optionElements]);
|
|
463
467
|
const { selectedOptions, selectedStateSetter, shouldScroll, wrapperRef, searchValue, setSearchValue, open, setOpen, handleClose, handleSelection, internalFilteredOptions, handleSearchChange, } = useCombobox(props.selected, props.onSelect, options, props.onClose, props.multiSelect, props.onSearch, props.onSearchDebounce);
|
|
464
468
|
return (React__default["default"].createElement(ComboboxContextProvider, { selected: selectedOptions, selectionHandler: handleSelection, open: open, setOpen: setOpen, handleClose: handleClose, shouldScroll: shouldScroll, searchValue: searchValue },
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var ConfirmationModal = require('../ConfirmationModal-
|
|
5
|
+
var ConfirmationModal = require('../ConfirmationModal-52e16873.js');
|
|
6
6
|
require('react');
|
|
7
7
|
require('@jobber/hooks/useOnKeyDown');
|
|
8
|
-
require('../Modal-
|
|
8
|
+
require('../Modal-c336cac6.js');
|
|
9
9
|
require('react-dom');
|
|
10
10
|
require('classnames');
|
|
11
11
|
require('framer-motion');
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
var useOnKeyDown = require('@jobber/hooks/useOnKeyDown');
|
|
5
|
-
var Modal = require('./Modal-
|
|
5
|
+
var Modal = require('./Modal-c336cac6.js');
|
|
6
6
|
var Content = require('./Content-e3f7b6fc.js');
|
|
7
7
|
var Markdown = require('./Markdown-f7c55304.js');
|
|
8
8
|
|
|
@@ -189,7 +189,6 @@ export interface DataListContextProps<T extends DataListObject> extends DataList
|
|
|
189
189
|
readonly itemActionComponent?: ReactElement<DataListItemActionsProps<T>>;
|
|
190
190
|
readonly bulkActionsComponent?: ReactElement<DataListItemActionsProps<T>>;
|
|
191
191
|
readonly layoutBreakpoints: Breakpoints[];
|
|
192
|
-
readonly registerLayoutBreakpoints: (breakpoint: Breakpoints) => void;
|
|
193
192
|
readonly layouts: {
|
|
194
193
|
readonly [Breakpoint in Breakpoints]?: LayoutRenderer<T>;
|
|
195
194
|
};
|
package/dist/DataList/index.js
CHANGED
|
@@ -26,7 +26,7 @@ var ReactDOM = require('react-dom');
|
|
|
26
26
|
var Checkbox = require('../Checkbox-787e2e47.js');
|
|
27
27
|
var reactRouterDom = require('react-router-dom');
|
|
28
28
|
var AnimatedSwitcher = require('../AnimatedSwitcher-3d45ec5d.js');
|
|
29
|
-
var Combobox = require('../Combobox-
|
|
29
|
+
var Combobox = require('../Combobox-a24c8241.js');
|
|
30
30
|
var Chip = require('../Chip-3d1bfddc.js');
|
|
31
31
|
var debounce = require('lodash/debounce');
|
|
32
32
|
var InputText = require('../InputText-55b6cb65.js');
|
|
@@ -38,6 +38,7 @@ require('react-popper');
|
|
|
38
38
|
require('../getAtlantisConfig-0f3e8af2.js');
|
|
39
39
|
require('react-hook-form');
|
|
40
40
|
require('../AnimatedPresence-20a02aaa.js');
|
|
41
|
+
require('../Flex-d490c4db.js');
|
|
41
42
|
require('@jobber/hooks/useAssert');
|
|
42
43
|
require('../Avatar-76a799fa.js');
|
|
43
44
|
require('color');
|
|
@@ -85,7 +86,6 @@ const defaultValues$1 = {
|
|
|
85
86
|
children: [],
|
|
86
87
|
selected: [],
|
|
87
88
|
layoutBreakpoints: [],
|
|
88
|
-
registerLayoutBreakpoints: noop__default["default"],
|
|
89
89
|
layouts: {
|
|
90
90
|
xs: children => React__default["default"].createElement(React__default["default"].Fragment, null, children),
|
|
91
91
|
sm: children => React__default["default"].createElement(React__default["default"].Fragment, null, children),
|
|
@@ -766,17 +766,14 @@ function DataListItems({ size = "xs", }) {
|
|
|
766
766
|
}
|
|
767
767
|
|
|
768
768
|
function DataListLayout({ children, size = "xs", }) {
|
|
769
|
-
const {
|
|
770
|
-
const
|
|
771
|
-
React.useEffect(() => {
|
|
772
|
-
registerLayoutBreakpoints(size);
|
|
773
|
-
}, [size]);
|
|
769
|
+
const { registerLayout, loadingState, layouts } = useDataListContext();
|
|
770
|
+
const { activeBreakpoint } = useActiveLayout();
|
|
774
771
|
React.useEffect(() => {
|
|
772
|
+
if (layouts[size])
|
|
773
|
+
return;
|
|
775
774
|
registerLayout(size, children);
|
|
776
775
|
}, [size, children]);
|
|
777
|
-
const
|
|
778
|
-
const nextAvailableSize = layoutBreakpoints[sizeIndex + 1];
|
|
779
|
-
const shouldRenderList = breakpoints[size] && !breakpoints[nextAvailableSize];
|
|
776
|
+
const shouldRenderList = size === activeBreakpoint;
|
|
780
777
|
if (loadingState !== "initial" && shouldRenderList) {
|
|
781
778
|
return React__default["default"].createElement(DataListItems, { size: size });
|
|
782
779
|
}
|
|
@@ -1224,8 +1221,8 @@ function InternalDataListStatusBar() {
|
|
|
1224
1221
|
|
|
1225
1222
|
function DataList(_a) {
|
|
1226
1223
|
var { selected = [], sorting } = _a, props = tslib_es6.__rest(_a, ["selected", "sorting"]);
|
|
1227
|
-
const [layoutBreakpoints, setLayoutBreakpoints] = React.useState([]);
|
|
1228
1224
|
const [layouts, setLayouts] = React.useState({});
|
|
1225
|
+
const layoutBreakpoints = React.useMemo(() => sortBreakpoints(Object.keys(layouts)), [layouts]);
|
|
1229
1226
|
const searchComponent = getCompoundComponent(props.children, DataListSearch);
|
|
1230
1227
|
const filterComponent = getCompoundComponent(props.children, DataListFilters);
|
|
1231
1228
|
const layoutComponents = getCompoundComponents(props.children, DataListLayout);
|
|
@@ -1241,15 +1238,11 @@ function DataList(_a) {
|
|
|
1241
1238
|
itemActionComponent,
|
|
1242
1239
|
bulkActionsComponent,
|
|
1243
1240
|
layoutBreakpoints,
|
|
1244
|
-
registerLayoutBreakpoints,
|
|
1245
1241
|
layouts,
|
|
1246
1242
|
registerLayout }, props), { selected,
|
|
1247
1243
|
// T !== DataListObject
|
|
1248
1244
|
sorting: sorting }) },
|
|
1249
1245
|
React__default["default"].createElement(InternalDataList, { shouldRenderStickyHeader: shouldRenderStickyHeader })));
|
|
1250
|
-
function registerLayoutBreakpoints(size) {
|
|
1251
|
-
setLayoutBreakpoints(prev => sortBreakpoints([...prev, size]));
|
|
1252
|
-
}
|
|
1253
1246
|
function registerLayout(size, children) {
|
|
1254
1247
|
setLayouts(prev => (Object.assign(Object.assign({}, prev), { [size]: children })));
|
|
1255
1248
|
}
|
package/dist/Flex/index.js
CHANGED
|
@@ -2,39 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
var Flex = require('../Flex-d490c4db.js');
|
|
6
|
+
require('react');
|
|
7
|
+
require('classnames');
|
|
8
|
+
require('../style-inject.es-9d2f5f4e.js');
|
|
8
9
|
|
|
9
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
10
10
|
|
|
11
|
-
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
12
|
-
var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
|
|
13
11
|
|
|
14
|
-
|
|
15
|
-
var styles = {"flexible":"_8VpnrMKmsqQ-","smallestGap":"ooF1YfV4Usc-","smallerGap":"ppCZfXq-Kqc-","smallGap":"tElkBalXH3g-","baseGap":"_4u3OwUKxxbg-","largeGap":"RL7CJla0AAI-","noneGap":"fV4cvFYkhgo-","startAlign":"_04xVVjZgr-0-","centerAlign":"Nc3zrqHHYSg-","endAlign":"qA-v50wBX1U-"};
|
|
16
|
-
styleInject_es.styleInject(css_248z);
|
|
17
|
-
|
|
18
|
-
function Flex({ align = "center", children, direction = "row", gap = "base", template, }) {
|
|
19
|
-
return (React__default["default"].createElement("div", { className: classnames__default["default"](styles.flexible, {
|
|
20
|
-
[styles[`${gap}Gap`]]: Boolean(gap),
|
|
21
|
-
[styles[`${align}Align`]]: Boolean(align),
|
|
22
|
-
}), style: generateGridStylesFromTemplate(direction, template) }, children));
|
|
23
|
-
}
|
|
24
|
-
function generateGridStylesFromTemplate(direction, layoutTemplate) {
|
|
25
|
-
const containerStyles = {};
|
|
26
|
-
const templateKeys = {
|
|
27
|
-
row: "gridTemplateColumns",
|
|
28
|
-
column: "gridTemplateRows",
|
|
29
|
-
};
|
|
30
|
-
const templateValues = {
|
|
31
|
-
grow: "1fr",
|
|
32
|
-
shrink: "max-content",
|
|
33
|
-
};
|
|
34
|
-
containerStyles[templateKeys[direction]] = layoutTemplate
|
|
35
|
-
.map(key => templateValues[key])
|
|
36
|
-
.join(" ");
|
|
37
|
-
return containerStyles;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
exports.Flex = Flex;
|
|
12
|
+
exports.Flex = Flex.Flex;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var classnames = require('classnames');
|
|
5
|
+
var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
|
|
6
|
+
|
|
7
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
|
+
|
|
9
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
10
|
+
var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
|
|
11
|
+
|
|
12
|
+
var css_248z = "._8VpnrMKmsqQ- {\n display: grid;\n /* If this gets wrapped in a flex container, it should take the remaining space */\n -ms-flex: 1;\n flex: 1;\n}\n\n.ooF1YfV4Usc- {\n gap: calc(16px / 8);\n gap: var(--space-smallest);\n}\n\n.ppCZfXq-Kqc- {\n gap: calc(16px / 4);\n gap: var(--space-smaller);\n}\n\n.tElkBalXH3g- {\n gap: calc(16px / 2);\n gap: var(--space-small);\n}\n\n._4u3OwUKxxbg- {\n gap: calc(16px * 1);\n gap: var(--space-base);\n}\n\n.RL7CJla0AAI- {\n gap: calc(16px * 1.5);\n gap: var(--space-large);\n}\n\n.fV4cvFYkhgo- {\n gap: 0;\n}\n\n._04xVVjZgr-0- {\n -ms-flex-align: start;\n align-items: start;\n}\n\n.Nc3zrqHHYSg- {\n -ms-flex-align: center;\n align-items: center;\n}\n\n.qA-v50wBX1U- {\n -ms-flex-align: end;\n align-items: end;\n}\n";
|
|
13
|
+
var styles = {"flexible":"_8VpnrMKmsqQ-","smallestGap":"ooF1YfV4Usc-","smallerGap":"ppCZfXq-Kqc-","smallGap":"tElkBalXH3g-","baseGap":"_4u3OwUKxxbg-","largeGap":"RL7CJla0AAI-","noneGap":"fV4cvFYkhgo-","startAlign":"_04xVVjZgr-0-","centerAlign":"Nc3zrqHHYSg-","endAlign":"qA-v50wBX1U-"};
|
|
14
|
+
styleInject_es.styleInject(css_248z);
|
|
15
|
+
|
|
16
|
+
function Flex({ align = "center", children, direction = "row", gap = "base", template, }) {
|
|
17
|
+
return (React__default["default"].createElement("div", { className: classnames__default["default"](styles.flexible, {
|
|
18
|
+
[styles[`${gap}Gap`]]: Boolean(gap),
|
|
19
|
+
[styles[`${align}Align`]]: Boolean(align),
|
|
20
|
+
}), style: generateGridStylesFromTemplate(direction, template) }, children));
|
|
21
|
+
}
|
|
22
|
+
function generateGridStylesFromTemplate(direction, layoutTemplate) {
|
|
23
|
+
const containerStyles = {};
|
|
24
|
+
const templateKeys = {
|
|
25
|
+
row: "gridTemplateColumns",
|
|
26
|
+
column: "gridTemplateRows",
|
|
27
|
+
};
|
|
28
|
+
const templateValues = {
|
|
29
|
+
grow: "1fr",
|
|
30
|
+
shrink: "max-content",
|
|
31
|
+
};
|
|
32
|
+
containerStyles[templateKeys[direction]] = layoutTemplate
|
|
33
|
+
.map(key => templateValues[key])
|
|
34
|
+
.join(" ");
|
|
35
|
+
return containerStyles;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
exports.Flex = Flex;
|
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-f036902d.js');
|
|
6
6
|
require('react');
|
|
7
7
|
require('classnames');
|
|
8
8
|
require('filesize');
|
|
@@ -12,9 +12,9 @@ require('react-router-dom');
|
|
|
12
12
|
require('../Icon-405a216c.js');
|
|
13
13
|
require('@jobber/design');
|
|
14
14
|
require('../Typography-c45bf216.js');
|
|
15
|
-
require('../ConfirmationModal-
|
|
15
|
+
require('../ConfirmationModal-52e16873.js');
|
|
16
16
|
require('@jobber/hooks/useOnKeyDown');
|
|
17
|
-
require('../Modal-
|
|
17
|
+
require('../Modal-c336cac6.js');
|
|
18
18
|
require('react-dom');
|
|
19
19
|
require('framer-motion');
|
|
20
20
|
require('@jobber/hooks/useRefocusOnActivator');
|
|
@@ -5,7 +5,7 @@ var classnames = require('classnames');
|
|
|
5
5
|
var getHumanReadableFileSize = require('filesize');
|
|
6
6
|
var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
|
|
7
7
|
var Button = require('./Button-b73a5e01.js');
|
|
8
|
-
var ConfirmationModal = require('./ConfirmationModal-
|
|
8
|
+
var ConfirmationModal = require('./ConfirmationModal-52e16873.js');
|
|
9
9
|
var Glimmer = require('./Glimmer-84dee1ed.js');
|
|
10
10
|
var Icon = require('./Icon-405a216c.js');
|
|
11
11
|
var Typography = require('./Typography-c45bf216.js');
|
package/dist/Gallery/index.js
CHANGED
|
@@ -6,7 +6,7 @@ var React = require('react');
|
|
|
6
6
|
var classnames = require('classnames');
|
|
7
7
|
var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
|
|
8
8
|
var LightBox = require('../LightBox-a89d8863.js');
|
|
9
|
-
var FormatFile = require('../FormatFile-
|
|
9
|
+
var FormatFile = require('../FormatFile-f036902d.js');
|
|
10
10
|
var Button = require('../Button-b73a5e01.js');
|
|
11
11
|
require('framer-motion');
|
|
12
12
|
require('react-dom');
|
|
@@ -16,8 +16,8 @@ require('@jobber/hooks/useOnKeyDown');
|
|
|
16
16
|
require('@jobber/hooks/useFocusTrap');
|
|
17
17
|
require('../ButtonDismiss-350af163.js');
|
|
18
18
|
require('filesize');
|
|
19
|
-
require('../ConfirmationModal-
|
|
20
|
-
require('../Modal-
|
|
19
|
+
require('../ConfirmationModal-52e16873.js');
|
|
20
|
+
require('../Modal-c336cac6.js');
|
|
21
21
|
require('../Heading-1e8e4bd3.js');
|
|
22
22
|
require('../Typography-c45bf216.js');
|
|
23
23
|
require('../getAtlantisConfig-0f3e8af2.js');
|
package/dist/Modal/index.js
CHANGED
|
@@ -18,7 +18,7 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
|
18
18
|
var ReactDOM__default = /*#__PURE__*/_interopDefaultLegacy(ReactDOM);
|
|
19
19
|
var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
|
|
20
20
|
|
|
21
|
-
var css_248z$1 = ":root {\n --modal--width: calc(var(--base-unit) * 37.5);\n --modal--padding-horizontal: var(--space-base);\n --modal--padding-vertical: var(--space-base);\n --modal--padding: var(--modal--padding-vertical)\n var(--modal--padding-horizontal);\n}\n\n@media (min-width: 768px) {\n\n:root {\n --modal--padding-horizontal: var(--space-large);\n}\n }\n\n@media (--medium-screens-and-up) {\n\n:root {\n --modal--padding-horizontal: var(--space-large);\n}\n }\n\n:root .jobber-retheme {\n --modal--shadow: var(--shadow-base);\n}\n\n@media (min-width: 768px) {\n\n:root .jobber-retheme {\n --modal--padding-horizontal: var(--space-large);\n --modal--padding-vertical: var(--space-large);\n --modal--padding: var(--modal--padding-vertical)\n var(--modal--padding-horizontal);\n}\n }\n\n@media (--medium-screens-and-up) {\n\n:root .jobber-retheme {\n --modal--padding-horizontal: var(--space-large);\n --modal--padding-vertical: var(--space-large);\n --modal--padding: var(--modal--padding-vertical)\n var(--modal--padding-horizontal);\n}\n }\n\n.QGRLFHPoV5E- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n z-index: 1001;\n z-index: var(--elevation-modal);\n padding: calc(16px / 2);\n padding: var(--space-small);\n overflow: auto;\n}\n\n.QGRLFHPoV5E-,\n._4WzGOMUGj5I- {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n\n._4WzGOMUGj5I- {\n background-color: rgba(0, 0, 0, 0.32);\n background-color: var(--color-overlay);\n}\n\n.WLId2NJBQcQ- {\n position: relative;\n width: 100%;\n max-width: calc(16px * 37.5);\n max-width: var(--modal--width);\n box-shadow: var(--modal--shadow);\n margin: auto;\n border: calc(16px / 16) solid rgb(217, 223, 225);\n border: var(--border-base) solid var(--color-border);\n border-radius: calc(16px / 8);\n border-radius: var(--radius-base);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n outline-color: rgb(147, 161, 169);\n outline-color: var(--color-focus);\n}\n\n/* Adjust `Content` and `Tab` components public padding to match the modal */\n\n.WLId2NJBQcQ- > * {\n --public-content--padding: var(--modal--padding);\n --public-tab--inset: var(--modal--padding-horizontal);\n}\n\n/* Remove the nested `Content` components public padding */\n\n.WLId2NJBQcQ- > * > * {\n --public-content--padding: 0;\n}\n\n.wjrPpIUNNrk- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -ms-flex-align: center;\n align-items: center;\n padding: calc(16px * 1)\n calc(16px * 1);\n padding: var(--modal--padding);\n background-color: rgb(238, 240, 242);\n background-color: var(--color-surface--background);\n}\n\n.jobber-retheme .wjrPpIUNNrk- {\n background-color: transparent;\n}\n\n.jobber-retheme .wjrPpIUNNrk- h3 {\n font-family: \"Inter\", Helvetica, Arial, sans-serif;\n font-family: var(--typography--fontFamily-normal);\n font-size: calc((16px * 1) * 1.5);\n font-size: calc(calc(16px * 1) * 1.5);\n font-size: var(--typography--fontSize-largest);\n}\n\n/**\n * Ensure there's no extra padding top on the next element. This mostly negates\n * the <Content /> padding\n */\n\n.jobber-retheme .wjrPpIUNNrk- + * {\n padding-top: 0;\n}\n\n.rKvigUnOyYE- {\n padding: 0;\n border: none;\n background-color: transparent;\n cursor: pointer;\n -webkit-appearance: none;\n appearance: none;\n}\n\n._62c8HLZFwvs- {\n display: -ms-flexbox;\n display: flex;\n padding: calc(16px * 1)\n calc(16px * 1);\n padding: var(--modal--padding);\n padding-top: 0;\n -ms-flex: 1 1 100%;\n flex: 1 1 100%;\n -ms-flex-pack: end;\n justify-content: flex-end;\n}\n\n/**\n * 1. Use CSS `order` to adjust the buttons position on the UI\n */\n\n.Xl1Ptn-P9Ew- {\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n -ms-flex-order: 1;\n order: 1; /* 1 */\n}\n\n.p2s7GtpoZz0- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n -ms-flex-order: 2;\n order: 2; /* 1 */\n}\n\n/* This is in a correct position and order */\n\n/* stylelint-disable-next-line no-descending-specificity */\n\n.p2s7GtpoZz0- > * {\n margin-left: calc(16px / 2);\n margin-left: var(--space-small);\n}\n\n.p2s7GtpoZz0- *:first-child {\n -ms-flex-order: 2;\n order: 2; /* 1 */\n}\n\n.p2s7GtpoZz0- *:nth-child(2) {\n -ms-flex-order: 1;\n order: 1; /* 1 */\n}\n";
|
|
21
|
+
var css_248z$1 = ":root {\n --modal--width: calc(var(--base-unit) * 37.5);\n --modal--padding-horizontal: var(--space-base);\n --modal--padding-vertical: var(--space-base);\n --modal--padding: var(--modal--padding-vertical)\n var(--modal--padding-horizontal);\n}\n\n@media (min-width: 768px) {\n\n:root {\n --modal--padding-horizontal: var(--space-large);\n}\n }\n\n@media (--medium-screens-and-up) {\n\n:root {\n --modal--padding-horizontal: var(--space-large);\n}\n }\n\n:root .jobber-retheme {\n --modal--shadow: var(--shadow-base);\n}\n\n@media (min-width: 768px) {\n\n:root .jobber-retheme {\n --modal--padding-horizontal: var(--space-large);\n --modal--padding-vertical: var(--space-large);\n --modal--padding: var(--modal--padding-vertical)\n var(--modal--padding-horizontal);\n}\n }\n\n@media (--medium-screens-and-up) {\n\n:root .jobber-retheme {\n --modal--padding-horizontal: var(--space-large);\n --modal--padding-vertical: var(--space-large);\n --modal--padding: var(--modal--padding-vertical)\n var(--modal--padding-horizontal);\n}\n }\n\n.QGRLFHPoV5E- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n z-index: 1001;\n z-index: var(--elevation-modal);\n padding: calc(16px / 2);\n padding: var(--space-small);\n overflow: auto;\n}\n\n.QGRLFHPoV5E-,\n._4WzGOMUGj5I- {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n\n._4WzGOMUGj5I- {\n background-color: rgba(0, 0, 0, 0.32);\n background-color: var(--color-overlay);\n}\n\n.WLId2NJBQcQ- {\n position: relative;\n width: 100%;\n max-width: calc(16px * 37.5);\n max-width: var(--modal--width);\n box-shadow: var(--modal--shadow);\n margin: auto;\n border: calc(16px / 16) solid rgb(217, 223, 225);\n border: var(--border-base) solid var(--color-border);\n border-radius: calc(16px / 8);\n border-radius: var(--radius-base);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n outline-color: rgb(147, 161, 169);\n outline-color: var(--color-focus);\n}\n\n/* Adjust `Content` and `Tab` components public padding to match the modal */\n\n.WLId2NJBQcQ- > * {\n --public-content--padding: var(--modal--padding);\n --public-tab--inset: var(--modal--padding-horizontal);\n}\n\n/* Remove the nested `Content` components public padding */\n\n.WLId2NJBQcQ- > * > * {\n --public-content--padding: 0;\n}\n\n.wjrPpIUNNrk- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -ms-flex-align: center;\n align-items: center;\n padding: calc(16px * 1)\n calc(16px * 1);\n padding: var(--modal--padding);\n background-color: rgb(238, 240, 242);\n background-color: var(--color-surface--background);\n}\n\n.jobber-retheme .wjrPpIUNNrk- {\n background-color: transparent;\n}\n\n.jobber-retheme .wjrPpIUNNrk- h3 {\n font-family: \"Inter\", Helvetica, Arial, sans-serif;\n font-family: var(--typography--fontFamily-normal);\n font-size: calc((16px * 1) * 1.5);\n font-size: calc(calc(16px * 1) * 1.5);\n font-size: var(--typography--fontSize-largest);\n}\n\n/**\n * Ensure there's no extra padding top on the next element. This mostly negates\n * the <Content /> padding\n */\n\n.jobber-retheme .wjrPpIUNNrk- + * {\n padding-top: 0;\n}\n\n.rKvigUnOyYE- {\n padding: 0;\n border: none;\n background-color: transparent;\n cursor: pointer;\n -webkit-appearance: none;\n appearance: none;\n}\n\n._62c8HLZFwvs- {\n display: -ms-flexbox;\n display: flex;\n padding: calc(16px * 1)\n calc(16px * 1);\n padding: var(--modal--padding);\n padding-top: 0;\n -ms-flex: 1 1 100%;\n flex: 1 1 100%;\n -ms-flex-pack: end;\n justify-content: flex-end;\n}\n\n/**\n * 1. Use CSS `order` to adjust the buttons position on the UI\n */\n\n.Xl1Ptn-P9Ew- {\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n -ms-flex-order: 1;\n order: 1; /* 1 */\n}\n\n.p2s7GtpoZz0- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n -ms-flex-order: 2;\n order: 2; /* 1 */\n}\n\n/* This is in a correct position and order */\n\n/* stylelint-disable-next-line no-descending-specificity */\n\n.p2s7GtpoZz0- > * {\n margin-left: calc(16px / 2);\n margin-left: var(--space-small);\n}\n\n.p2s7GtpoZz0- > *:first-child {\n -ms-flex-order: 2;\n order: 2; /* 1 */\n}\n\n.p2s7GtpoZz0- > *:nth-child(2) {\n -ms-flex-order: 1;\n order: 1; /* 1 */\n}\n";
|
|
22
22
|
var styles = {"container":"QGRLFHPoV5E-","overlay":"_4WzGOMUGj5I-","modal":"WLId2NJBQcQ-","header":"wjrPpIUNNrk-","closeButton":"rKvigUnOyYE-","actionBar":"_62c8HLZFwvs-","leftAction":"Xl1Ptn-P9Ew-","rightAction":"p2s7GtpoZz0-"};
|
|
23
23
|
styleInject_es.styleInject(css_248z$1);
|
|
24
24
|
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { StatusIndicatorType } from "./StatusIndicator.type";
|
|
3
|
+
interface StatusIndicatorProps {
|
|
4
|
+
readonly status: StatusIndicatorType;
|
|
5
|
+
}
|
|
6
|
+
export declare function StatusIndicator({ status }: StatusIndicatorProps): JSX.Element;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type StatusIndicatorType = "success" | "warning" | "critical" | "inactive" | "informative";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var StatusIndicator = require('../StatusIndicator-b179d06e.js');
|
|
6
|
+
require('react');
|
|
7
|
+
require('../style-inject.es-9d2f5f4e.js');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
exports.StatusIndicator = StatusIndicator.StatusIndicator;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
|
|
5
|
+
|
|
6
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
7
|
+
|
|
8
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
9
|
+
|
|
10
|
+
var css_248z = ".ob7nhx1U-HQ- {\n display: inline-block;\n width: var(--statusLabel-icon-diameter);\n height: var(--statusLabel-icon-diameter);\n border-radius: 3px;\n background-color: rgb(125, 176, 14);\n background-color: var(--color-success);\n -ms-flex-negative: 0;\n flex-shrink: 0;\n}\n";
|
|
11
|
+
var styles = {"statusIndicator":"ob7nhx1U-HQ-"};
|
|
12
|
+
styleInject_es.styleInject(css_248z);
|
|
13
|
+
|
|
14
|
+
function StatusIndicator({ status }) {
|
|
15
|
+
return (React__default["default"].createElement("span", { style: { backgroundColor: `var(--color-${status})` }, className: styles.statusIndicator, "data-testid": `ATL-Status-Indicator-${status}` }));
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
exports.StatusIndicator = StatusIndicator;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
|
|
2
|
+
import { StatusIndicatorType } from "../StatusIndicator/StatusIndicator.type";
|
|
3
3
|
export interface StatusLabelType {
|
|
4
4
|
readonly statusLabel: string;
|
|
5
|
-
readonly statusType?:
|
|
5
|
+
readonly statusType?: StatusIndicatorType;
|
|
6
6
|
}
|
|
7
7
|
interface StatusLabelProps {
|
|
8
8
|
/**
|
|
@@ -20,7 +20,7 @@ interface StatusLabelProps {
|
|
|
20
20
|
*
|
|
21
21
|
* @default "inactive"
|
|
22
22
|
*/
|
|
23
|
-
readonly status:
|
|
23
|
+
readonly status: StatusIndicatorType;
|
|
24
24
|
}
|
|
25
25
|
export declare function StatusLabel({ label, alignment, status, }: StatusLabelProps): JSX.Element;
|
|
26
26
|
export {};
|
|
@@ -6,6 +6,7 @@ var React = require('react');
|
|
|
6
6
|
var classnames = require('classnames');
|
|
7
7
|
var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
|
|
8
8
|
var Text = require('../Text-259af966.js');
|
|
9
|
+
var StatusIndicator = require('../StatusIndicator-b179d06e.js');
|
|
9
10
|
require('../Typography-c45bf216.js');
|
|
10
11
|
|
|
11
12
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -13,18 +14,16 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
13
14
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
14
15
|
var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
|
|
15
16
|
|
|
16
|
-
var css_248z = ":root {\n --statusLabel-icon-diameter: 10px;\n}\n\n.MB0ycTR4PHg- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: row;\n flex-direction: row;\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n gap: calc(16px / 2);\n gap: var(--space-small);\n width: -webkit-fit-content;\n width: -moz-fit-content;\n width: fit-content;\n}\n\n.
|
|
17
|
-
var styles = {"statusLabelRow":"MB0ycTR4PHg-","
|
|
17
|
+
var css_248z = ":root {\n --statusLabel-icon-diameter: 10px;\n}\n\n.MB0ycTR4PHg- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: row;\n flex-direction: row;\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n gap: calc(16px / 2);\n gap: var(--space-small);\n width: -webkit-fit-content;\n width: -moz-fit-content;\n width: fit-content;\n}\n\n._0kNfkSPBETw- {\n -ms-flex-direction: row-reverse;\n flex-direction: row-reverse;\n}\n\n.fNl6zDhsox0- {\n display: -ms-inline-flexbox;\n display: inline-flex;\n padding-top: calc(16px / 16);\n padding-top: var(--space-minuscule);\n}\n";
|
|
18
|
+
var styles = {"statusLabelRow":"MB0ycTR4PHg-","labelTextEndAligned":"_0kNfkSPBETw-","statusIndicator":"fNl6zDhsox0-"};
|
|
18
19
|
styleInject_es.styleInject(css_248z);
|
|
19
20
|
|
|
20
21
|
function StatusLabel({ label, alignment = "start", status = "inactive", }) {
|
|
21
22
|
const containerClassNames = classnames__default["default"](styles.statusLabelRow, alignment === "end" && styles.labelTextEndAligned);
|
|
22
23
|
return (React__default["default"].createElement("div", { role: "status", className: containerClassNames },
|
|
23
|
-
React__default["default"].createElement(
|
|
24
|
+
React__default["default"].createElement("div", { className: styles.statusIndicator },
|
|
25
|
+
React__default["default"].createElement(StatusIndicator.StatusIndicator, { status: status })),
|
|
24
26
|
React__default["default"].createElement(Text.Text, { size: "small", align: alignment }, label)));
|
|
25
27
|
}
|
|
26
|
-
function StatusLabelIcon({ status }) {
|
|
27
|
-
return (React__default["default"].createElement("div", { style: { backgroundColor: `var(--color-${status}` }, className: styles.statusIndicator }));
|
|
28
|
-
}
|
|
29
28
|
|
|
30
29
|
exports.StatusLabel = StatusLabel;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jobber/components",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.85.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -80,5 +80,5 @@
|
|
|
80
80
|
"> 1%",
|
|
81
81
|
"IE 10"
|
|
82
82
|
],
|
|
83
|
-
"gitHead": "
|
|
83
|
+
"gitHead": "8a94ae96fa60a2d0db036ab5bc87d9dc4df39f78"
|
|
84
84
|
}
|