@jobber/components 4.49.1 → 4.49.2-JOB-80005.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Flex.d.ts +1 -0
- package/Flex.js +17 -0
- package/dist/Banner/Banner.d.ts +1 -2
- package/dist/Banner/index.d.ts +1 -1
- package/dist/Banner/index.js +9 -71
- package/dist/Banner-ecd9a7cf.js +76 -0
- package/dist/{Chip-53832bb2.js → Chip-4f7af21e.js} +1 -1
- package/dist/Chips/index.js +3 -3
- package/dist/Content/Content.d.ts +1 -1
- package/dist/DataList/DataList.d.ts +1 -0
- package/dist/DataList/DataList.types.d.ts +1 -0
- package/dist/DataList/index.js +12 -3
- package/dist/Flex/Flex.d.ts +32 -0
- package/dist/Flex/Flex.types.d.ts +6 -0
- package/dist/Flex/index.d.ts +1 -0
- package/dist/Flex/index.js +40 -0
- package/dist/Tooltip/index.js +1 -3
- package/dist/{Tooltip-d5257798.js → Tooltip-ae33a335.js} +5 -7
- package/package.json +3 -3
package/Flex.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./dist/Flex";
|
package/Flex.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
var Flex = require("./dist/Flex");
|
|
8
|
+
|
|
9
|
+
Object.keys(Flex).forEach(function(key) {
|
|
10
|
+
if (key === "default" || key === "__esModule") return;
|
|
11
|
+
Object.defineProperty(exports, key, {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function get() {
|
|
14
|
+
return Flex[key];
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
});
|
package/dist/Banner/Banner.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { ReactNode } from "react";
|
|
|
2
2
|
import { IconNames } from "@jobber/design";
|
|
3
3
|
import { ButtonProps } from "../Button";
|
|
4
4
|
export type BannerType = "notice" | "success" | "warning" | "error";
|
|
5
|
-
interface BannerProps {
|
|
5
|
+
export interface BannerProps {
|
|
6
6
|
readonly children: ReactNode;
|
|
7
7
|
readonly type: BannerType;
|
|
8
8
|
/**
|
|
@@ -21,4 +21,3 @@ interface BannerProps {
|
|
|
21
21
|
onDismiss?(): void;
|
|
22
22
|
}
|
|
23
23
|
export declare function Banner({ children, type, primaryAction, dismissible, icon, onDismiss, }: BannerProps): JSX.Element;
|
|
24
|
-
export {};
|
package/dist/Banner/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { Banner, BannerType } from "./Banner";
|
|
1
|
+
export { Banner, BannerType, BannerProps } from "./Banner";
|
package/dist/Banner/index.js
CHANGED
|
@@ -2,80 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
var Button = require('../Button-db6114a6.js');
|
|
5
|
+
var Banner = require('../Banner-ecd9a7cf.js');
|
|
6
|
+
require('react');
|
|
7
|
+
require('classnames');
|
|
8
|
+
require('@jobber/hooks/useResizeObserver');
|
|
9
|
+
require('../style-inject.es-9d2f5f4e.js');
|
|
10
|
+
require('../Icon-405a216c.js');
|
|
12
11
|
require('@jobber/design');
|
|
12
|
+
require('../Text-54334431.js');
|
|
13
13
|
require('../Typography-83915c54.js');
|
|
14
|
+
require('../Button-db6114a6.js');
|
|
14
15
|
require('react-router-dom');
|
|
15
16
|
|
|
16
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
17
17
|
|
|
18
|
-
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
19
|
-
var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
|
|
20
18
|
|
|
21
|
-
|
|
22
|
-
var styles = {"banner":"meuT8gYQPJU-","bannerChildren":"y4BapyZr-fo-","bannerContent":"_6v1woNSLEvc-","medium":"bocgLmEhcTU-","bannerAction":"rtNjEzmABX4-","closeButton":"lunQ5SOfyLg-"};
|
|
23
|
-
styleInject_es.styleInject(css_248z$1);
|
|
24
|
-
|
|
25
|
-
var css_248z = ".wWW-2T7rCV0- {\n background-color: rgb(226, 241, 250);\n background-color: var(--color-informative--surface);\n}\n\n/* Our Banner \"surface\" colors should be lighter than they are so we're leaving the following alone for now */\n\n._7h8FUHIkVjg- {\n background-color: rgb(203, 223, 159);\n background-color: var(--color-green--lighter);\n}\n\n.d5fXcE1L0lc- {\n background-color: rgb(241, 231, 159);\n background-color: var(--color-yellow--lighter);\n}\n\n.oYaw-T3c0IU- {\n background-color: rgb(255, 206, 194);\n background-color: var(--color-red--lighter);\n}\n";
|
|
26
|
-
var types = {"notice":"wWW-2T7rCV0-","success":"_7h8FUHIkVjg-","warning":"d5fXcE1L0lc-","error":"oYaw-T3c0IU-"};
|
|
27
|
-
styleInject_es.styleInject(css_248z);
|
|
28
|
-
|
|
29
|
-
function BannerIcon({ icon }) {
|
|
30
|
-
return React__default["default"].createElement(Icon.Icon, { name: icon, color: "greyBlueDark" });
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function Banner({ children, type, primaryAction, dismissible = true, icon, onDismiss, }) {
|
|
34
|
-
const [showBanner, setShowBanner] = React.useState(true);
|
|
35
|
-
const bannerWidths = {
|
|
36
|
-
small: 320,
|
|
37
|
-
medium: 480,
|
|
38
|
-
};
|
|
39
|
-
const [bannerRef, { width: bannerWidth = bannerWidths.small }] = jobberHooks.useResizeObserver({
|
|
40
|
-
widths: bannerWidths,
|
|
41
|
-
});
|
|
42
|
-
const iconColors = {
|
|
43
|
-
notice: "informative",
|
|
44
|
-
success: "success",
|
|
45
|
-
warning: "warning",
|
|
46
|
-
error: "critical",
|
|
47
|
-
};
|
|
48
|
-
if (primaryAction != undefined) {
|
|
49
|
-
primaryAction = Object.assign({
|
|
50
|
-
size: "small",
|
|
51
|
-
type: "tertiary",
|
|
52
|
-
variation: type === "notice" ? "learning" : "work",
|
|
53
|
-
}, primaryAction);
|
|
54
|
-
}
|
|
55
|
-
const bannerClassNames = classnames__default["default"](styles.banner, types[type], {
|
|
56
|
-
[styles.medium]: bannerWidth >= bannerWidths.medium,
|
|
57
|
-
});
|
|
58
|
-
return (React__default["default"].createElement(React__default["default"].Fragment, null, showBanner && (React__default["default"].createElement("div", { className: bannerClassNames, ref: bannerRef, role: type === "error" ? "alert" : "status" },
|
|
59
|
-
React__default["default"].createElement("div", { className: styles.bannerContent },
|
|
60
|
-
icon && React__default["default"].createElement(BannerIcon, { icon: icon }),
|
|
61
|
-
React__default["default"].createElement("div", { className: styles.bannerChildren },
|
|
62
|
-
React__default["default"].createElement(BannerChildren, null, children)),
|
|
63
|
-
primaryAction && (React__default["default"].createElement("div", { className: styles.bannerAction },
|
|
64
|
-
React__default["default"].createElement(Button.Button, Object.assign({}, primaryAction))))),
|
|
65
|
-
dismissible && (React__default["default"].createElement("button", { className: styles.closeButton, onClick: handleClose, "aria-label": "Close this notification" },
|
|
66
|
-
React__default["default"].createElement(Icon.Icon, { name: "cross", color: iconColors[type] })))))));
|
|
67
|
-
function handleClose() {
|
|
68
|
-
setShowBanner(!showBanner);
|
|
69
|
-
onDismiss && onDismiss();
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
function BannerChildren({ children }) {
|
|
73
|
-
if (!children)
|
|
74
|
-
return React__default["default"].createElement(React__default["default"].Fragment, null);
|
|
75
|
-
if (children && typeof children === "string") {
|
|
76
|
-
return React__default["default"].createElement(Text.Text, null, children);
|
|
77
|
-
}
|
|
78
|
-
return React__default["default"].createElement(React__default["default"].Fragment, null, children);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
exports.Banner = Banner;
|
|
19
|
+
exports.Banner = Banner.Banner;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var classnames = require('classnames');
|
|
5
|
+
var jobberHooks = require('@jobber/hooks/useResizeObserver');
|
|
6
|
+
var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
|
|
7
|
+
var Icon = require('./Icon-405a216c.js');
|
|
8
|
+
var Text = require('./Text-54334431.js');
|
|
9
|
+
var Button = require('./Button-db6114a6.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
|
+
var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
|
|
15
|
+
|
|
16
|
+
var css_248z$1 = ".meuT8gYQPJU- {\n display: -ms-flexbox;\n display: flex;\n position: relative;\n box-shadow: 0px calc(16px / 16) calc(16px / 4) 0px\n rgba(0, 0, 0, 0.1),\n 0px calc(16px / 4) 12px 0px rgba(0, 0, 0, 0.05);\n box-shadow: var(--shadow-base);\n padding: calc(16px * 1);\n padding: var(--space-base);\n color: rgb(66, 78, 86);\n color: var(--color-text);\n background-color: rgb(244, 244, 244);\n background-color: var(--color-surface--background);\n gap: calc(16px / 2);\n gap: var(--space-small);\n -ms-flex-align: center;\n align-items: center;\n}\n\n.y4BapyZr-fo- > a {\n color: rgb(66, 78, 86);\n color: var(--color-text);\n}\n\n.y4BapyZr-fo- > a:hover {\n color: rgb(1, 41, 57);\n color: var(--color-blue);\n}\n\n._6v1woNSLEvc- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n gap: calc(16px / 2);\n gap: var(--space-small);\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -ms-flex-align: start;\n align-items: flex-start;\n}\n\n@media (max-width: 489.98px) {\n\n._6v1woNSLEvc- {\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n}\n }\n\n@media (--small-screens-and-below) {\n\n._6v1woNSLEvc- {\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n}\n }\n\n.y4BapyZr-fo- {\n -ms-flex: 1;\n flex: 1;\n -ms-flex-item-align: center;\n align-self: center;\n}\n\n._6v1woNSLEvc- > *:last-child {\n margin-bottom: 0;\n}\n\n.bocgLmEhcTU- .y4BapyZr-fo- {\n -ms-flex: 1;\n flex: 1;\n}\n\n.rtNjEzmABX4- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n}\n\n@media (max-width: 489.98px) {\n\n.rtNjEzmABX4- {\n width: 100%;\n margin-top: calc(16px / 2);\n margin-top: var(--space-small);\n}\n }\n\n@media (--small-screens-and-below) {\n\n.rtNjEzmABX4- {\n width: 100%;\n margin-top: calc(16px / 2);\n margin-top: var(--space-small);\n}\n }\n\n.lunQ5SOfyLg- {\n margin: calc((16px / 8) * -1) 0;\n margin: calc(calc(16px / 8) * -1) 0;\n margin: calc(var(--space-smallest) * -1) 0;\n padding: calc(16px / 8);\n padding: var(--space-smallest);\n border: none;\n background-color: transparent;\n cursor: pointer;\n -webkit-appearance: none;\n appearance: none;\n -ms-flex: 0;\n flex: 0;\n -ms-flex-item-align: start;\n align-self: flex-start;\n}\n\n.lunQ5SOfyLg-:hover {\n background: rgba(0, 0, 0, 0.025);\n}\n\n.lunQ5SOfyLg-:focus {\n box-shadow: 0px 0px calc(16px / 4) calc(16px / 8)\n rgb(231, 213, 87);\n box-shadow: var(--shadow-focus);\n outline: none;\n background: rgba(0, 0, 0, 0.05);\n}\n";
|
|
17
|
+
var styles = {"banner":"meuT8gYQPJU-","bannerChildren":"y4BapyZr-fo-","bannerContent":"_6v1woNSLEvc-","medium":"bocgLmEhcTU-","bannerAction":"rtNjEzmABX4-","closeButton":"lunQ5SOfyLg-"};
|
|
18
|
+
styleInject_es.styleInject(css_248z$1);
|
|
19
|
+
|
|
20
|
+
var css_248z = ".wWW-2T7rCV0- {\n background-color: rgb(226, 241, 250);\n background-color: var(--color-informative--surface);\n}\n\n/* Our Banner \"surface\" colors should be lighter than they are so we're leaving the following alone for now */\n\n._7h8FUHIkVjg- {\n background-color: rgb(203, 223, 159);\n background-color: var(--color-green--lighter);\n}\n\n.d5fXcE1L0lc- {\n background-color: rgb(241, 231, 159);\n background-color: var(--color-yellow--lighter);\n}\n\n.oYaw-T3c0IU- {\n background-color: rgb(255, 206, 194);\n background-color: var(--color-red--lighter);\n}\n";
|
|
21
|
+
var types = {"notice":"wWW-2T7rCV0-","success":"_7h8FUHIkVjg-","warning":"d5fXcE1L0lc-","error":"oYaw-T3c0IU-"};
|
|
22
|
+
styleInject_es.styleInject(css_248z);
|
|
23
|
+
|
|
24
|
+
function BannerIcon({ icon }) {
|
|
25
|
+
return React__default["default"].createElement(Icon.Icon, { name: icon, color: "greyBlueDark" });
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function Banner({ children, type, primaryAction, dismissible = true, icon, onDismiss, }) {
|
|
29
|
+
const [showBanner, setShowBanner] = React.useState(true);
|
|
30
|
+
const bannerWidths = {
|
|
31
|
+
small: 320,
|
|
32
|
+
medium: 480,
|
|
33
|
+
};
|
|
34
|
+
const [bannerRef, { width: bannerWidth = bannerWidths.small }] = jobberHooks.useResizeObserver({
|
|
35
|
+
widths: bannerWidths,
|
|
36
|
+
});
|
|
37
|
+
const iconColors = {
|
|
38
|
+
notice: "informative",
|
|
39
|
+
success: "success",
|
|
40
|
+
warning: "warning",
|
|
41
|
+
error: "critical",
|
|
42
|
+
};
|
|
43
|
+
if (primaryAction != undefined) {
|
|
44
|
+
primaryAction = Object.assign({
|
|
45
|
+
size: "small",
|
|
46
|
+
type: "tertiary",
|
|
47
|
+
variation: type === "notice" ? "learning" : "work",
|
|
48
|
+
}, primaryAction);
|
|
49
|
+
}
|
|
50
|
+
const bannerClassNames = classnames__default["default"](styles.banner, types[type], {
|
|
51
|
+
[styles.medium]: bannerWidth >= bannerWidths.medium,
|
|
52
|
+
});
|
|
53
|
+
return (React__default["default"].createElement(React__default["default"].Fragment, null, showBanner && (React__default["default"].createElement("div", { className: bannerClassNames, ref: bannerRef, role: type === "error" ? "alert" : "status" },
|
|
54
|
+
React__default["default"].createElement("div", { className: styles.bannerContent },
|
|
55
|
+
icon && React__default["default"].createElement(BannerIcon, { icon: icon }),
|
|
56
|
+
React__default["default"].createElement("div", { className: styles.bannerChildren },
|
|
57
|
+
React__default["default"].createElement(BannerChildren, null, children)),
|
|
58
|
+
primaryAction && (React__default["default"].createElement("div", { className: styles.bannerAction },
|
|
59
|
+
React__default["default"].createElement(Button.Button, Object.assign({}, primaryAction))))),
|
|
60
|
+
dismissible && (React__default["default"].createElement("button", { className: styles.closeButton, onClick: handleClose, "aria-label": "Close this notification" },
|
|
61
|
+
React__default["default"].createElement(Icon.Icon, { name: "cross", color: iconColors[type] })))))));
|
|
62
|
+
function handleClose() {
|
|
63
|
+
setShowBanner(!showBanner);
|
|
64
|
+
onDismiss && onDismiss();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function BannerChildren({ children, }) {
|
|
68
|
+
if (!children)
|
|
69
|
+
return React__default["default"].createElement(React__default["default"].Fragment, null);
|
|
70
|
+
if (children && typeof children === "string") {
|
|
71
|
+
return React__default["default"].createElement(Text.Text, null, children);
|
|
72
|
+
}
|
|
73
|
+
return React__default["default"].createElement(React__default["default"].Fragment, null, children);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
exports.Banner = Banner;
|
|
@@ -8,7 +8,7 @@ var useAssert = require('@jobber/hooks/useAssert');
|
|
|
8
8
|
var Icon = require('./Icon-405a216c.js');
|
|
9
9
|
var Avatar = require('./Avatar-1aa30ee1.js');
|
|
10
10
|
var Typography = require('./Typography-83915c54.js');
|
|
11
|
-
var Tooltip = require('./Tooltip-
|
|
11
|
+
var Tooltip = require('./Tooltip-ae33a335.js');
|
|
12
12
|
var sortBy = require('lodash/sortBy');
|
|
13
13
|
var useLiveAnnounce = require('@jobber/hooks/useLiveAnnounce');
|
|
14
14
|
var debounce = require('lodash/debounce');
|
package/dist/Chips/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var React = require('react');
|
|
6
|
-
var Chip = require('../Chip-
|
|
6
|
+
var Chip = require('../Chip-4f7af21e.js');
|
|
7
7
|
require('uuid');
|
|
8
8
|
require('../style-inject.es-9d2f5f4e.js');
|
|
9
9
|
require('classnames');
|
|
@@ -13,14 +13,14 @@ require('@jobber/design');
|
|
|
13
13
|
require('../Avatar-1aa30ee1.js');
|
|
14
14
|
require('color');
|
|
15
15
|
require('../Typography-83915c54.js');
|
|
16
|
-
require('../Tooltip-
|
|
16
|
+
require('../Tooltip-ae33a335.js');
|
|
17
17
|
require('react-dom');
|
|
18
18
|
require('framer-motion');
|
|
19
19
|
require('react-popper');
|
|
20
|
-
require('../Text-54334431.js');
|
|
21
20
|
require('lodash/sortBy');
|
|
22
21
|
require('@jobber/hooks/useLiveAnnounce');
|
|
23
22
|
require('lodash/debounce');
|
|
23
|
+
require('../Text-54334431.js');
|
|
24
24
|
require('../Button-db6114a6.js');
|
|
25
25
|
require('react-router-dom');
|
|
26
26
|
require('../Spinner-9d8fc7ff.js');
|
|
@@ -158,6 +158,7 @@ export interface DataListContextProps<T extends DataListObject> extends DataList
|
|
|
158
158
|
readonly layoutComponents?: ReactElement<DataListLayoutProps<T>>[];
|
|
159
159
|
readonly itemActionComponent?: ReactElement<DataListItemActionsProps<T>>;
|
|
160
160
|
readonly bulkActionsComponent?: ReactElement<DataListItemActionsProps<T>>;
|
|
161
|
+
readonly bannerComponent?: ReactElement;
|
|
161
162
|
readonly layoutBreakpoints: Breakpoints[];
|
|
162
163
|
readonly registerLayoutBreakpoints: (breakpoint: Breakpoints) => void;
|
|
163
164
|
readonly layouts: {
|
package/dist/DataList/index.js
CHANGED
|
@@ -11,7 +11,7 @@ var noop = require('lodash/noop');
|
|
|
11
11
|
var design = require('@jobber/design');
|
|
12
12
|
var framerMotion = require('framer-motion');
|
|
13
13
|
var classnames = require('classnames');
|
|
14
|
-
var Tooltip = require('../Tooltip-
|
|
14
|
+
var Tooltip = require('../Tooltip-ae33a335.js');
|
|
15
15
|
var Button = require('../Button-db6114a6.js');
|
|
16
16
|
var useInView = require('@jobber/hooks/useInView');
|
|
17
17
|
var isEmpty = require('lodash/isEmpty');
|
|
@@ -27,7 +27,7 @@ var reactRouterDom = require('react-router-dom');
|
|
|
27
27
|
var AnimatedSwitcher = require('../AnimatedSwitcher-d1e1ddcf.js');
|
|
28
28
|
var Popover = require('../Popover-7c966790.js');
|
|
29
29
|
var Content = require('../Content-2ca1ffe1.js');
|
|
30
|
-
var Chip = require('../Chip-
|
|
30
|
+
var Chip = require('../Chip-4f7af21e.js');
|
|
31
31
|
require('@jobber/hooks/useAssert');
|
|
32
32
|
require('../Avatar-1aa30ee1.js');
|
|
33
33
|
require('color');
|
|
@@ -37,6 +37,7 @@ var debounce = require('lodash/debounce');
|
|
|
37
37
|
var InputText = require('../InputText-ab237501.js');
|
|
38
38
|
var Spinner = require('../Spinner-9d8fc7ff.js');
|
|
39
39
|
var Icon = require('../Icon-405a216c.js');
|
|
40
|
+
var Banner = require('../Banner-ecd9a7cf.js');
|
|
40
41
|
require('uuid');
|
|
41
42
|
require('react-hook-form');
|
|
42
43
|
require('../ButtonDismiss-1ccb84ec.js');
|
|
@@ -44,6 +45,7 @@ require('lodash/sortBy');
|
|
|
44
45
|
require('@jobber/hooks/useLiveAnnounce');
|
|
45
46
|
require('../FormField-fa9254dc.js');
|
|
46
47
|
require('../InputValidation-377d6c62.js');
|
|
48
|
+
require('@jobber/hooks/useResizeObserver');
|
|
47
49
|
|
|
48
50
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
49
51
|
|
|
@@ -997,12 +999,14 @@ function DataList(_a) {
|
|
|
997
999
|
const emptyStateComponents = getCompoundComponents(props.children, DataListEmptyState);
|
|
998
1000
|
const itemActionComponent = getCompoundComponent(props.children, DataListItemActions);
|
|
999
1001
|
const bulkActionsComponent = getCompoundComponent(props.children, DataListBulkActions);
|
|
1002
|
+
const bannerComponent = getCompoundComponent(props.children, Banner.Banner);
|
|
1000
1003
|
return (React__default["default"].createElement(DataListContext.Provider, { value: Object.assign(Object.assign({ searchComponent,
|
|
1001
1004
|
filterComponent,
|
|
1002
1005
|
layoutComponents,
|
|
1003
1006
|
emptyStateComponents,
|
|
1004
1007
|
itemActionComponent,
|
|
1005
1008
|
bulkActionsComponent,
|
|
1009
|
+
bannerComponent,
|
|
1006
1010
|
layoutBreakpoints,
|
|
1007
1011
|
registerLayoutBreakpoints,
|
|
1008
1012
|
layouts,
|
|
@@ -1018,7 +1022,7 @@ function DataList(_a) {
|
|
|
1018
1022
|
}
|
|
1019
1023
|
}
|
|
1020
1024
|
function InternalDataList() {
|
|
1021
|
-
const { data, title, totalCount, loadingState = "none", layoutComponents, } = useDataListContext();
|
|
1025
|
+
const { data, title, totalCount, loadingState = "none", layoutComponents, bannerComponent, } = useDataListContext();
|
|
1022
1026
|
const backToTopRef = React.useRef(null);
|
|
1023
1027
|
const initialLoading = loadingState === "initial";
|
|
1024
1028
|
const showEmptyState = !initialLoading && data.length === 0;
|
|
@@ -1032,6 +1036,7 @@ function InternalDataList() {
|
|
|
1032
1036
|
React__default["default"].createElement("div", { className: styles$e.headerFilters },
|
|
1033
1037
|
React__default["default"].createElement(InternalDataListFilters, null),
|
|
1034
1038
|
React__default["default"].createElement(InternalDataListSearch, null)),
|
|
1039
|
+
bannerComponent,
|
|
1035
1040
|
React__default["default"].createElement(DataListHeader, null)),
|
|
1036
1041
|
initialLoading && React__default["default"].createElement(DataListLoadingState, null),
|
|
1037
1042
|
showEmptyState && React__default["default"].createElement(InternalDataListEmptyState, null),
|
|
@@ -1098,5 +1103,9 @@ DataList.ItemAction = DataListAction;
|
|
|
1098
1103
|
DataList.BatchAction = function DataListBatchAction(props) {
|
|
1099
1104
|
return React__default["default"].createElement(DataListAction, Object.assign({}, props));
|
|
1100
1105
|
};
|
|
1106
|
+
/**
|
|
1107
|
+
* Defines a banner that is going to rendered between the filters and the header.
|
|
1108
|
+
*/
|
|
1109
|
+
DataList.Banner = Banner.Banner;
|
|
1101
1110
|
|
|
1102
1111
|
exports.DataList = DataList;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { PropsWithChildren } from "react";
|
|
2
|
+
import { ColumnKeys, Direction, Spacing } from "./Flex.types";
|
|
3
|
+
interface FlexProps extends PropsWithChildren {
|
|
4
|
+
/**
|
|
5
|
+
* Determine how the children gets laid out
|
|
6
|
+
*
|
|
7
|
+
* **Supported keys**
|
|
8
|
+
* - `"grow"` - Grows to the space available. If all children are set to
|
|
9
|
+
* grow, then they'll have equal width.
|
|
10
|
+
* - `"shrink"` - Shrinks to the smallest size possible. Normally the size of
|
|
11
|
+
* the child.
|
|
12
|
+
*/
|
|
13
|
+
readonly template: ColumnKeys[];
|
|
14
|
+
/**
|
|
15
|
+
* Adjusts the alignment of the Flex children.
|
|
16
|
+
*/
|
|
17
|
+
readonly align?: "start" | "end" | "center";
|
|
18
|
+
/**
|
|
19
|
+
* The spacing between the children.
|
|
20
|
+
*
|
|
21
|
+
* @default "base"
|
|
22
|
+
*/
|
|
23
|
+
readonly gap?: Spacing;
|
|
24
|
+
/**
|
|
25
|
+
* The direction of the content.
|
|
26
|
+
*
|
|
27
|
+
* @default "row"
|
|
28
|
+
*/
|
|
29
|
+
readonly direction?: Direction;
|
|
30
|
+
}
|
|
31
|
+
export declare function Flex({ align, children, direction, gap, template, }: FlexProps): JSX.Element;
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type ColumnKeys = "shrink" | "grow";
|
|
2
|
+
export type Direction = "row" | "column";
|
|
3
|
+
export declare const spacing: readonly ["none", "smallest", "smaller", "small", "base", "large"];
|
|
4
|
+
type ValuesOfSpacing<T extends typeof spacing> = T[number];
|
|
5
|
+
export type Spacing = ValuesOfSpacing<typeof spacing>;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Flex } from "./Flex";
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var classnames = require('classnames');
|
|
7
|
+
var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
|
|
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 classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
|
|
13
|
+
|
|
14
|
+
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";
|
|
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;
|
package/dist/Tooltip/index.js
CHANGED
|
@@ -2,15 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var Tooltip = require('../Tooltip-
|
|
5
|
+
var Tooltip = require('../Tooltip-ae33a335.js');
|
|
6
6
|
require('react');
|
|
7
7
|
require('classnames');
|
|
8
8
|
require('react-dom');
|
|
9
9
|
require('framer-motion');
|
|
10
10
|
require('../style-inject.es-9d2f5f4e.js');
|
|
11
11
|
require('react-popper');
|
|
12
|
-
require('../Text-54334431.js');
|
|
13
|
-
require('../Typography-83915c54.js');
|
|
14
12
|
|
|
15
13
|
|
|
16
14
|
|
|
@@ -6,7 +6,6 @@ var ReactDOM = require('react-dom');
|
|
|
6
6
|
var framerMotion = require('framer-motion');
|
|
7
7
|
var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
|
|
8
8
|
var reactPopper = require('react-popper');
|
|
9
|
-
var Text = require('./Text-54334431.js');
|
|
10
9
|
|
|
11
10
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
12
11
|
|
|
@@ -14,8 +13,8 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
|
14
13
|
var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
|
|
15
14
|
var ReactDOM__default = /*#__PURE__*/_interopDefaultLegacy(ReactDOM);
|
|
16
15
|
|
|
17
|
-
var css_248z = ":root {\n --tooltip--arrow-size: var(--space-small);\n --tooltip--offset: calc(-1 *
|
|
18
|
-
var styles = {"shadowActivator":"q07bkGoq714-","tooltipWrapper":"dkCTRfc3vYk-","tooltip":"yAFP4gRKlTM-","arrow":"j9KgRON7iTU-","above":"B6uh34-qEuA-","below":"Wft7Ug-lXEc-"};
|
|
16
|
+
var css_248z = ":root {\n --tooltip--arrow-size: var(--space-small);\n --tooltip--offset: calc(-1 * var(--space-smaller));\n --tooltip--surface: var(--color-surface--reverse);\n}\n\n.q07bkGoq714- {\n display: none;\n}\n\n.dkCTRfc3vYk- {\n display: inline-block;\n position: absolute;\n z-index: 1002;\n z-index: var(--elevation-tooltip);\n}\n\n.yAFP4gRKlTM- {\n display: inline-block;\n position: relative;\n max-width: calc(16px * 15);\n max-width: calc(var(--base-unit) * 15);\n padding: calc((16px * 1) - (16px / 8)) calc(16px * 1);\n padding: calc(calc(16px * 1) - calc(16px / 8)) calc(16px * 1);\n padding: calc(var(--space-base) - var(--space-smallest)) var(--space-base);\n border-radius: calc(16px / 2);\n border-radius: var(--radius-larger);\n background-color: rgb(1, 41, 57);\n background-color: var(--tooltip--surface);\n}\n\n.yAFP4gRKlTM- .j9KgRON7iTU-,\n.yAFP4gRKlTM- .j9KgRON7iTU-::after {\n width: calc(16px / 2);\n width: var(--tooltip--arrow-size);\n height: calc(16px / 2);\n height: var(--tooltip--arrow-size);\n background-color: transparent;\n}\n\n.yAFP4gRKlTM- .j9KgRON7iTU-::after {\n content: \"\";\n display: block;\n position: absolute;\n background-color: rgb(1, 41, 57);\n background-color: var(--tooltip--surface);\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg);\n}\n\n.B6uh34-qEuA- {\n padding-bottom: calc(16px / 2);\n padding-bottom: var(--space-small);\n}\n\n.B6uh34-qEuA- .yAFP4gRKlTM- {\n -webkit-transform-origin: bottom center;\n transform-origin: bottom center;\n}\n\n.B6uh34-qEuA- .yAFP4gRKlTM- .j9KgRON7iTU- {\n bottom: calc(-1 * (16px / 4));\n bottom: calc(-1 * calc(16px / 4));\n bottom: var(--tooltip--offset);\n}\n\n.B6uh34-qEuA- .yAFP4gRKlTM- .j9KgRON7iTU-::after {\n border-top-width: 0;\n border-left-width: 0;\n}\n\n.Wft7Ug-lXEc- {\n padding-top: calc(16px / 2);\n padding-top: var(--space-small);\n}\n\n.Wft7Ug-lXEc- .yAFP4gRKlTM- {\n -webkit-transform-origin: top center;\n transform-origin: top center;\n}\n\n.Wft7Ug-lXEc- .yAFP4gRKlTM- .j9KgRON7iTU- {\n top: calc(-1 * (16px / 4));\n top: calc(-1 * calc(16px / 4));\n top: var(--tooltip--offset);\n}\n\n.Wft7Ug-lXEc- .yAFP4gRKlTM- .j9KgRON7iTU-::after {\n border-bottom-width: 0;\n border-right-width: 0;\n}\n\n.TpdeLUuiQMg- {\n margin: 0;\n color: rgba(255, 255, 255, 1);\n color: var(--color-text--reverse);\n font-size: calc((16px * 1) * 0.875);\n font-size: calc(calc(16px * 1) * 0.875);\n font-size: var(--typography--fontSize-base);\n font-weight: 600;\n line-height: 1.25;\n line-height: var(--typography--lineHeight-base);\n}\n";
|
|
17
|
+
var styles = {"shadowActivator":"q07bkGoq714-","tooltipWrapper":"dkCTRfc3vYk-","tooltip":"yAFP4gRKlTM-","arrow":"j9KgRON7iTU-","above":"B6uh34-qEuA-","below":"Wft7Ug-lXEc-","tooltipMessage":"TpdeLUuiQMg-"};
|
|
19
18
|
styleInject_es.styleInject(css_248z);
|
|
20
19
|
|
|
21
20
|
function useTooltipPositioning() {
|
|
@@ -52,11 +51,10 @@ function Tooltip({ message, children }) {
|
|
|
52
51
|
children,
|
|
53
52
|
React__default["default"].createElement(TooltipPortal, null, show && (React__default["default"].createElement("div", Object.assign({ className: toolTipClassNames, style: popperStyles.popper, ref: setTooltipRef, role: "tooltip" }, attributes.popper),
|
|
54
53
|
React__default["default"].createElement(framerMotion.motion.div, { className: styles.tooltip, variants: variation, initial: "startOrStop", animate: "done", exit: "startOrStop", transition: {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
stiffness: 300,
|
|
54
|
+
damping: 50,
|
|
55
|
+
stiffness: 500,
|
|
58
56
|
} },
|
|
59
|
-
React__default["default"].createElement(
|
|
57
|
+
React__default["default"].createElement("p", { className: styles.tooltipMessage }, message),
|
|
60
58
|
React__default["default"].createElement("div", { ref: setArrowRef, style: popperStyles.arrow, className: styles.arrow })))))));
|
|
61
59
|
function initializeListeners() {
|
|
62
60
|
const showTooltip = () => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jobber/components",
|
|
3
|
-
"version": "4.49.
|
|
3
|
+
"version": "4.49.2-JOB-80005.2+c6633b76",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
],
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@jobber/design": "^0.46.0",
|
|
23
|
-
"@jobber/formatters": "
|
|
23
|
+
"@jobber/formatters": "^0.2.2",
|
|
24
24
|
"@jobber/hooks": "^2.6.1",
|
|
25
25
|
"@popperjs/core": "^2.0.6",
|
|
26
26
|
"@std-proposal/temporal": "0.0.1",
|
|
@@ -84,5 +84,5 @@
|
|
|
84
84
|
"> 1%",
|
|
85
85
|
"IE 10"
|
|
86
86
|
],
|
|
87
|
-
"gitHead": "
|
|
87
|
+
"gitHead": "c6633b76c850e8e2c32c3ef2966cf9a9b5745fd3"
|
|
88
88
|
}
|