@jobber/components 4.66.1 → 4.66.2-dependabot.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Chip/index.js +1 -1
- package/dist/Chip-168acf3e.js +89 -0
- package/dist/Combobox/Combobox.types.d.ts +9 -2
- package/dist/Combobox/ComboboxProvider.d.ts +3 -9
- package/dist/Combobox/components/ComboboxAction/ComboboxAction.d.ts +1 -1
- package/dist/Combobox/index.js +3 -2
- package/dist/{Combobox-6840a13e.js → Combobox-b6053eb7.js} +55 -19
- package/dist/DataList/DataList.types.d.ts +1 -1
- package/dist/DataList/index.js +26 -8
- package/dist/InputAvatar/InputAvatar.d.ts +1 -1
- package/dist/InputFile/InputFile.d.ts +1 -1
- package/dist/InputGroup/index.js +1 -1
- package/dist/{InputGroup-3fdde16b.js → InputGroup-8d4fd4eb.js} +1 -1
- package/dist/MultiSelect/DropDownMenu.d.ts +1 -1
- package/dist/MultiSelect/MultiSelect.d.ts +1 -1
- package/dist/MultiSelect/index.js +25 -37
- package/dist/RecurringSelect/index.js +1 -1
- package/package.json +6 -6
- package/dist/Chip-0d2454d9.js +0 -89
- package/dist/MultiSelect/utils.d.ts +0 -3
package/dist/Chip/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var Chip = require('../Chip-
|
|
5
|
+
var Chip = require('../Chip-168acf3e.js');
|
|
6
6
|
var tslib_es6 = require('../tslib.es6-5b8768b7.js');
|
|
7
7
|
var React = require('react');
|
|
8
8
|
var Icon = require('../Icon-405a216c.js');
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var classnames = require('classnames');
|
|
5
|
+
var useInView = require('@jobber/hooks/useInView');
|
|
6
|
+
var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
|
|
7
|
+
var Avatar = require('./Avatar-76a799fa.js');
|
|
8
|
+
var Icon = require('./Icon-405a216c.js');
|
|
9
|
+
var Typography = require('./Typography-973b122e.js');
|
|
10
|
+
var Tooltip = require('./Tooltip-6b12f1c2.js');
|
|
11
|
+
|
|
12
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
13
|
+
|
|
14
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
15
|
+
var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
|
|
16
|
+
|
|
17
|
+
var css_248z = ":root {\n --chip--gradient-color-variation: var(--chip-base-bg);\n --chip--gradient-color-variation--hover: var(--chip-base--hover);\n}\n\n.af7U8MvcbHE- {\n --chip-height: 40px;\n --chip-radius: 20px;\n --chip-base-bg: var(--color-surface--background);\n --chip-base--hover: var(--color-surface--background--hover);\n display: -ms-flexbox;\n display: flex;\n position: relative;\n height: 40px;\n height: var(--chip-height);\n min-width: 0;\n padding: calc(16px / 2) 16px;\n padding: var(--space-small) var(--base-unit);\n border: calc(16px / 16) solid transparent;\n border: var(--border-base) solid transparent;\n border-radius: 20px;\n border-radius: var(--chip-radius);\n color: rgb(1, 41, 57);\n color: var(--color-heading);\n text-align: left;\n cursor: pointer;\n transition: all 200ms;\n transition: all var(--timing-base);\n -ms-flex-align: center;\n align-items: center;\n}\n\n.af7U8MvcbHE-:focus,\n.af7U8MvcbHE-:focus-visible {\n outline: none;\n}\n\n.af7U8MvcbHE-:focus-visible {\n box-shadow: 0px 0px 0px calc(16px / 8) rgba(255, 255, 255, 1),\n 0px 0px 0px calc(16px / 4) rgb(147, 161, 169);\n box-shadow: var(--shadow-focus);\n}\n\n.af7U8MvcbHE- .e905AYK4SCc- {\n margin-left: calc(-1 * (16px / 2));\n margin-left: calc(-1 * calc(16px / 2));\n margin-left: calc(-1 * var(--space-small));\n margin-right: calc(16px / 2);\n margin-right: var(--space-small);\n}\n\n.af7U8MvcbHE- .ySADfZ0FckM- {\n margin-left: calc(16px / 2);\n margin-left: var(--space-small);\n margin-right: calc(-1 * (16px / 2));\n margin-right: calc(-1 * calc(16px / 2));\n margin-right: calc(-1 * var(--space-small));\n}\n\n.af7U8MvcbHE- .e905AYK4SCc-,\n.af7U8MvcbHE- .ySADfZ0FckM- {\n display: -ms-flexbox;\n display: flex;\n width: calc(16px * 1.5);\n width: var(--space-large);\n height: calc(16px * 1.5);\n height: var(--space-large);\n -ms-flex-negative: 0;\n flex-shrink: 0;\n border-radius: 100%;\n border-radius: var(--radius-circle);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n\n.af7U8MvcbHE- .e905AYK4SCc-.usdkmQ9Sxbk-,\n.af7U8MvcbHE- .ySADfZ0FckM-.usdkmQ9Sxbk- {\n display: none;\n}\n\n.af7U8MvcbHE- .dg1-Izy1eQA- {\n width: calc(16px / 16);\n width: var(--space-minuscule);\n height: 16px;\n height: var(--base-unit);\n margin: 0 calc(16px / 2);\n margin: 0 var(--space-small);\n background-color: rgb(77, 105, 116);\n background-color: var(--color-text--secondary);\n}\n\n.af7U8MvcbHE- .-lz0EYLTDgg- {\n border-radius: 100%;\n border-radius: var(--radius-circle);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n}\n\n.wSI5L-5rODg- {\n border: calc(16px / 16) solid transparent;\n border: var(--border-base) solid transparent;\n color: rgb(1, 41, 57);\n color: var(--color-heading);\n background-color: var(--chip-base-bg);\n --chip--gradient-color-variation: var(--chip-base-bg);\n}\n\n.wSI5L-5rODg-:hover,\n.wSI5L-5rODg-:focus-visible {\n background-color: var(--chip-base--hover);\n --chip--gradient-color-variation--hover: var(--chip-base--hover);\n}\n\n.SmUxkzpIC84-,\n.SmUxkzpIC84-:hover,\n.SmUxkzpIC84-:focus-visible,\n.Mux23dmZSuw-.SmUxkzpIC84-,\n.Mux23dmZSuw-.SmUxkzpIC84-:hover,\n.Mux23dmZSuw-.SmUxkzpIC84-:focus-visible {\n border: calc(16px / 16) solid rgb(201, 66, 33);\n border: var(--border-base) solid var(--color-critical);\n background-color: rgb(255, 226, 219);\n background-color: var(--color-critical--surface);\n --chip--gradient-color-variation: var(--color-critical--surface);\n --chip--gradient-color-variation--hover: var(--color-critical--surface);\n}\n\n.SmUxkzpIC84-:hover,\n.SmUxkzpIC84-:focus-visible,\n.Mux23dmZSuw-.SmUxkzpIC84-:hover,\n.Mux23dmZSuw-.SmUxkzpIC84-:focus-visible {\n background-color: rgb(193, 201, 206);\n background-color: var(--color-surface--background--hover);\n --chip--gradient-color-variation: var(--color-surface--background--hover);\n --chip--gradient-color-variation--hover: var(\n --color-surface--background--hover\n );\n}\n\n.Mux23dmZSuw- {\n border: calc(16px / 16) solid rgb(217, 223, 225);\n border: var(--border-base) solid var(--color-border);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n --chip--gradient-color-variation: var(--color-surface);\n}\n\n/* CAUTION: Order is important here since\n* there is are different styles for subtle:focus and subtle:hover\n* and we want hover to take priority\n*/\n\n.Mux23dmZSuw-:focus-visible {\n --chip--gradient-color-variation--hover: var(--color-surface);\n}\n\n.Mux23dmZSuw-:hover {\n border: calc(16px / 16) solid var(--chip-base-bg);\n border: var(--border-base) solid var(--chip-base-bg);\n background-color: var(--chip-base-bg);\n --chip--gradient-color-variation--hover: var(--chip-base-bg);\n}\n\n.SmUxkzpIC84-.MbRItb9vKhc-,\n.SmUxkzpIC84-.MbRItb9vKhc-:hover,\n.SmUxkzpIC84-.MbRItb9vKhc-:focus-visible {\n background-color: rgb(225, 225, 225);\n background-color: var(--color-disabled--secondary);\n cursor: auto;\n}\n\n.MbRItb9vKhc-,\n.MbRItb9vKhc-:hover,\n.MbRItb9vKhc-:focus-visible {\n border: calc(16px / 16) solid rgb(225, 225, 225);\n border: var(--border-base) solid var(--color-disabled--secondary);\n color: rgb(181, 181, 181);\n color: var(--color-disabled);\n background-color: rgb(225, 225, 225);\n background-color: var(--color-disabled--secondary);\n cursor: auto;\n --chip--gradient-color-variation: var(--color-disabled--secondary);\n --chip--gradient-color-variation--hover: var(--color-disabled--secondary);\n}\n\n.MbRItb9vKhc- .dg1-Izy1eQA- {\n background-color: rgb(181, 181, 181);\n background-color: var(--color-disabled);\n}\n\n.af7U8MvcbHE-.MbRItb9vKhc- .ySADfZ0FckM- {\n background-color: rgb(225, 225, 225);\n background-color: var(--color-disabled--secondary);\n}\n\n.af7U8MvcbHE-.MbRItb9vKhc- .ySADfZ0FckM- path {\n fill: rgb(181, 181, 181);\n fill: var(--color-disabled);\n}\n\n.tJhURjR2Vec- {\n display: -ms-flexbox;\n display: flex;\n position: relative;\n overflow: hidden;\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n}\n\n.tJhURjR2Vec- > * {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n}\n\n.tJhURjR2Vec- > p {\n overflow: hidden;\n white-space: nowrap;\n}\n\n.G3QXY0rNcK0- {\n position: absolute;\n top: 0;\n right: 0;\n width: calc(16px * 1);\n width: var(--space-base);\n height: 100%;\n background: linear-gradient(\n to left,\n var(--chip-base-bg) 5%,\n rgba(255, 255, 255, 0)\n );\n background: linear-gradient(\n to left,\n var(--chip--gradient-color-variation) 5%,\n rgba(255, 255, 255, 0)\n );\n}\n\n.af7U8MvcbHE-:focus-visible .G3QXY0rNcK0-,\n.af7U8MvcbHE-:hover .G3QXY0rNcK0- {\n background: linear-gradient(\n to left,\n var(--chip-base--hover) 5%,\n rgba(255, 255, 255, 0)\n );\n background: linear-gradient(\n to left,\n var(--chip--gradient-color-variation--hover) 5%,\n rgba(255, 255, 255, 0)\n );\n}\n\n.MUKEW6c2nNA- {\n display: inline-block;\n width: 1px;\n}\n";
|
|
18
|
+
var styles = {"chip":"af7U8MvcbHE-","prefix":"e905AYK4SCc-","suffix":"ySADfZ0FckM-","empty":"usdkmQ9Sxbk-","chipBar":"dg1-Izy1eQA-","selected":"-lz0EYLTDgg-","base":"wSI5L-5rODg-","invalid":"SmUxkzpIC84-","subtle":"Mux23dmZSuw-","disabled":"MbRItb9vKhc-","chipContent":"tJhURjR2Vec-","truncateGradient":"G3QXY0rNcK0-","chipLabelRef":"MUKEW6c2nNA-"};
|
|
19
|
+
styleInject_es.styleInject(css_248z);
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Returns the first React Child that receives `true` from isCorrectComponent
|
|
23
|
+
* @param children React Children
|
|
24
|
+
* @param isCorrectComponent a function that accepts a JSX Element and returns a boolean.
|
|
25
|
+
* @returns The first child component that returns true on isCorrectComponent
|
|
26
|
+
*/
|
|
27
|
+
function useChildComponent(children, isCorrectComponent) {
|
|
28
|
+
return React.useMemo(() => {
|
|
29
|
+
return React__default["default"].Children.toArray(children).find(d => React.isValidElement(d) && isCorrectComponent(d));
|
|
30
|
+
}, [children]);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function ChipPrefix({ children }) {
|
|
34
|
+
const singleChild = useChildComponent(children, d => d.type === Avatar.Avatar || d.type === Icon.Icon);
|
|
35
|
+
return (React__default["default"].createElement("span", { className: classnames__default["default"](styles.prefix, !singleChild && styles.empty) }, singleChild));
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function ChipSuffix({ children, className }) {
|
|
39
|
+
var _a;
|
|
40
|
+
let singleChild = useChildComponent(children, d => d.type === Icon.Icon);
|
|
41
|
+
if (!allowedSuffixIcons.includes((_a = singleChild === null || singleChild === void 0 ? void 0 : singleChild.props) === null || _a === void 0 ? void 0 : _a.name)) {
|
|
42
|
+
singleChild = undefined;
|
|
43
|
+
}
|
|
44
|
+
return (React__default["default"].createElement("span", { className: classnames__default["default"](styles.suffix, className, !singleChild && styles.empty) }, singleChild));
|
|
45
|
+
}
|
|
46
|
+
const allowedSuffixIcons = ["cross", "add", "checkmark", "arrowDown"];
|
|
47
|
+
|
|
48
|
+
const Chip = ({ ariaLabel, disabled, heading, invalid, label, value, onClick, onKeyDown, children, role = "button", tabIndex = 0, variation = "base", }) => {
|
|
49
|
+
const classes = classnames__default["default"](styles.chip, {
|
|
50
|
+
[styles.invalid]: invalid,
|
|
51
|
+
[styles.base]: variation === "base",
|
|
52
|
+
[styles.subtle]: variation === "subtle",
|
|
53
|
+
[styles.disabled]: disabled,
|
|
54
|
+
});
|
|
55
|
+
const prefix = useChildComponent(children, d => d.type === Chip.Prefix);
|
|
56
|
+
const suffix = useChildComponent(children, d => d.type === Chip.Suffix);
|
|
57
|
+
const [labelRef, labelFullyVisible] = useInView.useInView();
|
|
58
|
+
const [headingRef, headingFullyVisible] = useInView.useInView();
|
|
59
|
+
const tooltipMessage = getTooltipMessage(labelFullyVisible, headingFullyVisible, label, heading);
|
|
60
|
+
return (React__default["default"].createElement(Tooltip.Tooltip, { message: tooltipMessage },
|
|
61
|
+
React__default["default"].createElement("button", { className: classes, onClick: (ev) => onClick && onClick(value, ev), tabIndex: tabIndex, onKeyDown: onKeyDown, "aria-label": ariaLabel || label, disabled: disabled, role: role, type: "button" },
|
|
62
|
+
prefix,
|
|
63
|
+
React__default["default"].createElement("div", { className: styles.chipContent },
|
|
64
|
+
heading && (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
65
|
+
React__default["default"].createElement(Typography.Typography, { size: "base", fontWeight: "medium" },
|
|
66
|
+
heading,
|
|
67
|
+
React__default["default"].createElement("span", { ref: headingRef, className: styles.chipLabelRef })),
|
|
68
|
+
label && React__default["default"].createElement("span", { className: styles.chipBar }))),
|
|
69
|
+
React__default["default"].createElement(Typography.Typography, { size: "base" },
|
|
70
|
+
label,
|
|
71
|
+
React__default["default"].createElement("span", { ref: labelRef, className: styles.chipLabelRef })),
|
|
72
|
+
!labelFullyVisible && (React__default["default"].createElement("div", { className: styles.truncateGradient, "data-testid": "ATL-Chip-Truncation-Gradient" }))),
|
|
73
|
+
suffix)));
|
|
74
|
+
};
|
|
75
|
+
function getTooltipMessage(labelFullyVisible, headingFullyVisible, label, heading) {
|
|
76
|
+
let message = "";
|
|
77
|
+
if (heading && !headingFullyVisible) {
|
|
78
|
+
message = `${heading} | ${label}`;
|
|
79
|
+
}
|
|
80
|
+
else if (!labelFullyVisible) {
|
|
81
|
+
message = label;
|
|
82
|
+
}
|
|
83
|
+
return message;
|
|
84
|
+
}
|
|
85
|
+
Chip.Prefix = ChipPrefix;
|
|
86
|
+
Chip.Suffix = ChipSuffix;
|
|
87
|
+
|
|
88
|
+
exports.Chip = Chip;
|
|
89
|
+
exports.styles = styles;
|
|
@@ -172,10 +172,17 @@ export interface ComboboxActionProps {
|
|
|
172
172
|
/**
|
|
173
173
|
* The function to call when the action is clicked.
|
|
174
174
|
*/
|
|
175
|
-
onClick(event: React.MouseEvent<HTMLButtonElement
|
|
175
|
+
onClick(event: React.MouseEvent<HTMLButtonElement>, options: ComboboxActionCallbackOptions): void;
|
|
176
176
|
/**
|
|
177
177
|
* The label text of the action.
|
|
178
178
|
*/
|
|
179
|
-
readonly label: string;
|
|
179
|
+
readonly label: string | ((options: ComboboxActionCallbackOptions) => string);
|
|
180
|
+
/**
|
|
181
|
+
* Determine if the action is visible for a given item.
|
|
182
|
+
*/
|
|
183
|
+
readonly visible?: boolean | ((options: ComboboxActionCallbackOptions) => boolean);
|
|
184
|
+
}
|
|
185
|
+
export interface ComboboxActionCallbackOptions {
|
|
186
|
+
readonly searchValue: string;
|
|
180
187
|
}
|
|
181
188
|
export {};
|
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
import React, { Dispatch, MutableRefObject, SetStateAction } from "react";
|
|
2
2
|
import { ComboboxOption } from "./Combobox.types";
|
|
3
|
-
export declare const ComboboxContext: React.Context<{
|
|
4
|
-
open: boolean;
|
|
5
|
-
setOpen: (open: boolean) => void;
|
|
6
|
-
selected: ComboboxOption[];
|
|
7
|
-
selectionHandler: (option: ComboboxOption) => void;
|
|
8
|
-
handleClose: () => void;
|
|
9
|
-
shouldScroll: MutableRefObject<boolean>;
|
|
10
|
-
}>;
|
|
11
3
|
export interface ComboboxProviderProps {
|
|
12
4
|
readonly children: React.ReactNode;
|
|
13
5
|
readonly selected: ComboboxOption[];
|
|
@@ -16,5 +8,7 @@ export interface ComboboxProviderProps {
|
|
|
16
8
|
readonly setOpen: Dispatch<SetStateAction<boolean>>;
|
|
17
9
|
readonly handleClose: () => void;
|
|
18
10
|
readonly shouldScroll: MutableRefObject<boolean>;
|
|
11
|
+
readonly searchValue: string;
|
|
19
12
|
}
|
|
20
|
-
export declare
|
|
13
|
+
export declare const ComboboxContext: React.Context<Omit<ComboboxProviderProps, "children">>;
|
|
14
|
+
export declare function ComboboxContextProvider({ children, ...props }: ComboboxProviderProps): 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-b6053eb7.js');
|
|
6
6
|
require('react');
|
|
7
7
|
require('classnames');
|
|
8
8
|
require('react-dom');
|
|
@@ -11,13 +11,14 @@ require('../Icon-405a216c.js');
|
|
|
11
11
|
require('@jobber/design');
|
|
12
12
|
require('../Text-4a2bc89f.js');
|
|
13
13
|
require('../Typography-973b122e.js');
|
|
14
|
+
require('../tslib.es6-5b8768b7.js');
|
|
14
15
|
require('../Button-163a0641.js');
|
|
15
16
|
require('react-router-dom');
|
|
16
17
|
require('@jobber/hooks/useRefocusOnActivator');
|
|
17
18
|
require('@jobber/hooks/useFocusTrap');
|
|
18
19
|
require('react-popper');
|
|
19
20
|
require('@jobber/hooks/useOnKeyDown');
|
|
20
|
-
require('../Chip-
|
|
21
|
+
require('../Chip-168acf3e.js');
|
|
21
22
|
require('@jobber/hooks/useInView');
|
|
22
23
|
require('../Avatar-76a799fa.js');
|
|
23
24
|
require('color');
|
|
@@ -6,13 +6,14 @@ var ReactDOM = require('react-dom');
|
|
|
6
6
|
var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
|
|
7
7
|
var Icon = require('./Icon-405a216c.js');
|
|
8
8
|
var Text = require('./Text-4a2bc89f.js');
|
|
9
|
+
var tslib_es6 = require('./tslib.es6-5b8768b7.js');
|
|
9
10
|
var Typography = require('./Typography-973b122e.js');
|
|
10
11
|
var Button = require('./Button-163a0641.js');
|
|
11
12
|
var useRefocusOnActivator = require('@jobber/hooks/useRefocusOnActivator');
|
|
12
13
|
var useFocusTrap = require('@jobber/hooks/useFocusTrap');
|
|
13
14
|
var reactPopper = require('react-popper');
|
|
14
15
|
var useOnKeyDown = require('@jobber/hooks/useOnKeyDown');
|
|
15
|
-
var Chip = require('./Chip-
|
|
16
|
+
var Chip = require('./Chip-168acf3e.js');
|
|
16
17
|
require('@jobber/design');
|
|
17
18
|
var useAssert = require('@jobber/hooks/useAssert');
|
|
18
19
|
|
|
@@ -26,7 +27,7 @@ var css_248z$6 = ".m1w5vdUZ6rQ- {\n z-index: 1002;\n z-index: var(--elevation-
|
|
|
26
27
|
var styles$6 = {"content":"m1w5vdUZ6rQ-","hidden":"Zlkv2HA096A-","actions":"YQry-Rd6zfQ-","actionPadding":"TcpqL34s4lI-"};
|
|
27
28
|
styleInject_es.styleInject(css_248z$6);
|
|
28
29
|
|
|
29
|
-
var css_248z$5 = ".MIyb-oFZg9w- {\n position: relative;\n}\n\n.WZPK91I4aJs- {\n width: 100%;\n padding: calc(16px * 1);\n padding: var(--space-base);\n padding-right: calc((16px * 1.5) * 2.25);\n padding-right: calc(calc(16px * 1.5) * 2.25);\n padding-right: calc(var(--space-large) * 2.25);\n border: none;\n border-bottom: calc(16px / 16) solid rgb(217, 223, 225);\n border-bottom: var(--border-base) solid var(--color-border);\n font-family: \"Inter\", Helvetica, Arial, sans-serif;\n font-family: var(--typography--fontFamily-normal);\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}\n\n.WZPK91I4aJs-::-webkit-search-decoration,\n.WZPK91I4aJs-::-webkit-search-cancel-button,\n.WZPK91I4aJs-::-webkit-search-results-button,\n.WZPK91I4aJs-::-webkit-search-results-decoration {\n -webkit-appearance: none;\n}\n\n.WZPK91I4aJs-:focus {\n outline: none;\n}\n\n._7loHrVUe-Rk- {\n display: -ms-flexbox;\n display: flex;\n position: absolute;\n top: 50%;\n right: calc(16px * 1);\n right: var(--space-base);\n z-index: 1002;\n z-index: var(--elevation-tooltip);\n width: calc(16px * 1.5);\n width: var(--space-large);\n height: calc(16px * 1.5);\n height: var(--space-large);\n padding: 0;\n border: none;\n border-radius: 100%;\n border-radius: var(--radius-circle);\n background-color: rgb(238, 240, 242);\n background-color: var(--color-surface--background);\n cursor: pointer;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%);\n -ms-flex-pack: center;\n justify-content: center;\n -ms-flex-align: center;\n align-items: center;\n}\n\n._7loHrVUe-Rk-:focus {\n box-shadow: 0px 0px 0px calc(16px / 8) rgba(255, 255, 255, 1),\n 0px 0px 0px calc(16px / 4) rgb(147, 161, 169);\n box-shadow: var(--shadow-focus);\n}\n";
|
|
30
|
+
var css_248z$5 = ".MIyb-oFZg9w- {\n position: relative;\n}\n\n.WZPK91I4aJs- {\n width: 100%;\n padding: calc(16px * 1);\n padding: var(--space-base);\n padding-right: calc((16px * 1.5) * 2.25);\n padding-right: calc(calc(16px * 1.5) * 2.25);\n padding-right: calc(var(--space-large) * 2.25);\n border: none;\n border-bottom: calc(16px / 16) solid rgb(217, 223, 225);\n border-bottom: var(--border-base) solid var(--color-border);\n font-family: \"Inter\", Helvetica, Arial, sans-serif;\n font-family: var(--typography--fontFamily-normal);\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}\n\n.WZPK91I4aJs-::-webkit-search-decoration,\n.WZPK91I4aJs-::-webkit-search-cancel-button,\n.WZPK91I4aJs-::-webkit-search-results-button,\n.WZPK91I4aJs-::-webkit-search-results-decoration {\n -webkit-appearance: none;\n}\n\n.WZPK91I4aJs-:focus {\n outline: none;\n}\n\n._7loHrVUe-Rk- {\n display: -ms-flexbox;\n display: flex;\n position: absolute;\n top: 50%;\n right: calc(16px * 1);\n right: var(--space-base);\n z-index: 1002;\n z-index: var(--elevation-tooltip);\n width: calc(16px * 1.5);\n width: var(--space-large);\n height: calc(16px * 1.5);\n height: var(--space-large);\n padding: 0;\n border: none;\n border-radius: 100%;\n border-radius: var(--radius-circle);\n background-color: rgb(238, 240, 242);\n background-color: var(--color-surface--background);\n cursor: pointer;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%);\n -ms-flex-pack: center;\n justify-content: center;\n -ms-flex-align: center;\n align-items: center;\n}\n\n._7loHrVUe-Rk-:focus {\n outline: transparent;\n}\n\n._7loHrVUe-Rk-:focus-visible {\n box-shadow: 0px 0px 0px calc(16px / 8) rgba(255, 255, 255, 1),\n 0px 0px 0px calc(16px / 4) rgb(147, 161, 169);\n box-shadow: var(--shadow-focus);\n}\n";
|
|
30
31
|
var styles$5 = {"search":"MIyb-oFZg9w-","searchInput":"WZPK91I4aJs-","clearSearch":"_7loHrVUe-Rk-"};
|
|
31
32
|
styleInject_es.styleInject(css_248z$5);
|
|
32
33
|
|
|
@@ -54,24 +55,18 @@ function ComboboxContentSearch(props) {
|
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
57
|
|
|
57
|
-
var css_248z$4 = ".SgMzjOcdE-E- {\n position: relative;\n padding: calc(16px / 2) 0;\n padding: var(--space-small) 0;\n}\n\n.TwoTCjgcssc- {\n display: -ms-flexbox;\n display: flex;\n max-height: calc((16px / 2) * 33.33);\n max-height: calc(calc(16px / 2) * 33.33);\n max-height: calc(var(--space-small) * 33.33);\n margin: 0;\n padding: 0;\n overflow: scroll;\n list-style: none;\n -ms-flex-direction: column;\n flex-direction: column;\n gap: calc(16px / 4);\n gap: var(--space-smaller);\n}\n\n._8T5M7MGwCRE-,\n._4y5NXkNeIQM- {\n padding: calc(16px / 2) calc(16px * 1);\n padding: var(--space-small) var(--space-base);\n}\n\n.SgMzjOcdE-E-::after {\n content: \"\";\n display: block;\n position: absolute;\n right: 0;\n
|
|
58
|
-
var styles$4 = {"container":"SgMzjOcdE-E-","optionsList":"TwoTCjgcssc-","filterMessage":"_8T5M7MGwCRE-","emptyStateMessage":"_4y5NXkNeIQM-"};
|
|
58
|
+
var css_248z$4 = ".SgMzjOcdE-E- {\n position: relative;\n padding: calc(16px / 2) 0;\n padding: var(--space-small) 0;\n}\n\n.TwoTCjgcssc- {\n display: -ms-flexbox;\n display: flex;\n max-height: calc((16px / 2) * 33.33);\n max-height: calc(calc(16px / 2) * 33.33);\n max-height: calc(var(--space-small) * 33.33);\n margin: 0;\n padding: 0;\n overflow: scroll;\n list-style: none;\n -ms-flex-direction: column;\n flex-direction: column;\n gap: calc(16px / 4);\n gap: var(--space-smaller);\n}\n\n._8T5M7MGwCRE-,\n._4y5NXkNeIQM- {\n padding: calc(16px / 2) calc(16px * 1);\n padding: var(--space-small) var(--space-base);\n}\n\n.SgMzjOcdE-E-::before,\n.SgMzjOcdE-E-::after {\n content: \"\";\n display: block;\n position: absolute;\n right: 0;\n left: 0;\n height: calc(16px * 1);\n height: var(--space-base);\n pointer-events: none;\n transition: opacity 0.3s ease-in-out;\n}\n\n.SgMzjOcdE-E-::after {\n bottom: calc(16px / 2);\n bottom: var(--space-small);\n background: linear-gradient(\n 180deg,\n rgba(255, 255, 255, 0) 0%,\n rgb(255, 255, 255) 100%\n );\n}\n\n.SgMzjOcdE-E-::before {\n top: calc(16px / 2);\n top: var(--space-small);\n background: linear-gradient(\n to bottom,\n rgba(255, 255, 255, 1),\n rgba(255, 255, 255, 0)\n );\n}\n\n.T6E3VwBGoQM-::before,\n._6HQzxMQkXnE-::before {\n opacity: 0;\n}\n\n._5YsJZyMDkbA-::after,\n._6HQzxMQkXnE-::after {\n opacity: 0;\n}\n";
|
|
59
|
+
var styles$4 = {"container":"SgMzjOcdE-E-","optionsList":"TwoTCjgcssc-","filterMessage":"_8T5M7MGwCRE-","emptyStateMessage":"_4y5NXkNeIQM-","scrollTop":"T6E3VwBGoQM-","scrollNone":"_6HQzxMQkXnE-","scrollBottom":"_5YsJZyMDkbA-"};
|
|
59
60
|
styleInject_es.styleInject(css_248z$4);
|
|
60
61
|
|
|
61
|
-
var css_248z$3 = "._5QdRGmaNHvc- {\n display: -ms-flexbox;\n display: flex;\n min-height: calc((calc(16px * 3) - calc(16px / 4)));\n min-height: calc((var(--space-largest) - var(--space-smaller)));\n box-sizing: border-box;\n margin: 0 calc(16px / 2);\n margin: 0 var(--space-small);\n padding: calc(16px / 2);\n padding: var(--space-small);\n border-radius: calc(16px / 4);\n border-radius: var(--radius-large);\n color: rgb(1, 41, 57);\n color: var(--color-heading);\n font-weight: 500;\n cursor: pointer;\n transition: all 200ms;\n transition: all var(--timing-base);\n -ms-flex-pack: justify;\n justify-content: space-between;\n -ms-flex-align: center;\n align-items: center;\n}\n\n._5QdRGmaNHvc-:hover,\n._5QdRGmaNHvc-:focus-visible {\n background-color: rgb(
|
|
62
|
+
var css_248z$3 = "._5QdRGmaNHvc- {\n display: -ms-flexbox;\n display: flex;\n min-height: calc((calc(16px * 3) - calc(16px / 4)));\n min-height: calc((var(--space-largest) - var(--space-smaller)));\n box-sizing: border-box;\n margin: 0 calc(16px / 2);\n margin: 0 var(--space-small);\n padding: calc(16px / 2);\n padding: var(--space-small);\n border-radius: calc(16px / 4);\n border-radius: var(--radius-large);\n color: rgb(1, 41, 57);\n color: var(--color-heading);\n font-weight: 500;\n cursor: pointer;\n transition: all 200ms;\n transition: all var(--timing-base);\n -ms-flex-pack: justify;\n justify-content: space-between;\n -ms-flex-align: center;\n align-items: center;\n}\n\n._5QdRGmaNHvc-:hover,\n._5QdRGmaNHvc-:focus-visible {\n background-color: rgb(244, 246, 250);\n background-color: var(--color-surface--hover);\n}\n\n._5QdRGmaNHvc-:focus,\n._5QdRGmaNHvc-:focus-visible {\n outline: none;\n}\n\n._5QdRGmaNHvc-:focus-visible {\n box-shadow: 0px 0px 0px calc(16px / 8) rgba(255, 255, 255, 1),\n 0px 0px 0px calc(16px / 4) rgb(147, 161, 169);\n box-shadow: var(--shadow-focus);\n}\n";
|
|
62
63
|
var styles$3 = {"option":"_5QdRGmaNHvc-"};
|
|
63
64
|
styleInject_es.styleInject(css_248z$3);
|
|
64
65
|
|
|
65
66
|
const ComboboxContext = React__default["default"].createContext({});
|
|
66
|
-
function ComboboxContextProvider(
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
setOpen: props.setOpen,
|
|
70
|
-
selected: props.selected,
|
|
71
|
-
selectionHandler: props.selectionHandler,
|
|
72
|
-
handleClose: props.handleClose,
|
|
73
|
-
shouldScroll: props.shouldScroll,
|
|
74
|
-
} }, props.children));
|
|
67
|
+
function ComboboxContextProvider(_a) {
|
|
68
|
+
var { children } = _a, props = tslib_es6.__rest(_a, ["children"]);
|
|
69
|
+
return (React__default["default"].createElement(ComboboxContext.Provider, { value: props }, children));
|
|
75
70
|
}
|
|
76
71
|
|
|
77
72
|
function ComboboxOption(props) {
|
|
@@ -84,7 +79,39 @@ function ComboboxOption(props) {
|
|
|
84
79
|
}
|
|
85
80
|
|
|
86
81
|
function ComboboxContentList(props) {
|
|
87
|
-
|
|
82
|
+
const [listScrollState, setlistScrollState] = React.useState("");
|
|
83
|
+
React.useEffect(() => {
|
|
84
|
+
const handleScroll = () => {
|
|
85
|
+
if (props.optionsListRef.current) {
|
|
86
|
+
const { scrollTop, clientHeight, scrollHeight } = props.optionsListRef.current;
|
|
87
|
+
if (scrollHeight === clientHeight) {
|
|
88
|
+
setlistScrollState("scrollNone");
|
|
89
|
+
}
|
|
90
|
+
else if (scrollTop === 0) {
|
|
91
|
+
setlistScrollState("scrollTop");
|
|
92
|
+
}
|
|
93
|
+
else if (scrollTop + clientHeight === scrollHeight) {
|
|
94
|
+
setlistScrollState("scrollBottom");
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
setlistScrollState("");
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
if (!props.showEmptyState && props.options.length === 0) {
|
|
102
|
+
handleScroll();
|
|
103
|
+
}
|
|
104
|
+
if (props.optionsListRef.current) {
|
|
105
|
+
props.optionsListRef.current.addEventListener("scroll", handleScroll);
|
|
106
|
+
handleScroll();
|
|
107
|
+
}
|
|
108
|
+
return () => {
|
|
109
|
+
if (props.optionsListRef.current) {
|
|
110
|
+
props.optionsListRef.current.removeEventListener("scroll", handleScroll);
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
}, [props.options]);
|
|
114
|
+
return (React__default["default"].createElement("div", { className: classnames__default["default"](styles$4.container, styles$4[listScrollState]) },
|
|
88
115
|
!props.showEmptyState && props.options.length > 0 && (React__default["default"].createElement("ul", { className: styles$4.optionsList, role: "listbox", "aria-multiselectable": props.multiselect, ref: props.optionsListRef }, !props.showEmptyState &&
|
|
89
116
|
props.options.map(option => {
|
|
90
117
|
return (React__default["default"].createElement(ComboboxOption, { key: option.id, id: option.id, label: option.label }));
|
|
@@ -255,14 +282,23 @@ function ComboboxContent(props) {
|
|
|
255
282
|
return ReactDOM__default["default"].createPortal(template, document.body);
|
|
256
283
|
}
|
|
257
284
|
|
|
258
|
-
var css_248z$1 = ".Ow9wSNnGP-g- {\n width: 100%;\n box-sizing: border-box;\n padding: 0 calc(16px / 2);\n padding: 0 var(--space-small);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n}\n\n.ncp0nKHQ7d8- {\n position: relative;\n width: 100%;\n min-height: calc((calc(16px * 3) - calc(16px / 2)));\n min-height: calc((var(--space-largest) - var(--space-small)));\n padding: calc(16px / 2) 0;\n padding: var(--space-small) 0;\n border: none;\n border-radius: calc(16px / 4);\n border-radius: var(--radius-large);\n text-align: left;\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n cursor: pointer;\n transition: all 200ms;\n transition: all var(--timing-base);\n}\n\n.ncp0nKHQ7d8-:focus {\n outline: none;\n}\n\n.ncp0nKHQ7d8-:hover,\n.ncp0nKHQ7d8-:focus-visible {\n outline: none;\n background-color: rgb(
|
|
285
|
+
var css_248z$1 = ".Ow9wSNnGP-g- {\n width: 100%;\n box-sizing: border-box;\n padding: 0 calc(16px / 2);\n padding: 0 var(--space-small);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n}\n\n.ncp0nKHQ7d8- {\n position: relative;\n width: 100%;\n min-height: calc((calc(16px * 3) - calc(16px / 2)));\n min-height: calc((var(--space-largest) - var(--space-small)));\n padding: calc(16px / 2) 0;\n padding: var(--space-small) 0;\n border: none;\n border-radius: calc(16px / 4);\n border-radius: var(--radius-large);\n text-align: left;\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n cursor: pointer;\n transition: all 200ms;\n transition: all var(--timing-base);\n}\n\n.ncp0nKHQ7d8-:focus {\n outline: none;\n}\n\n.ncp0nKHQ7d8-:hover,\n.ncp0nKHQ7d8-:focus-visible {\n outline: none;\n background-color: rgb(244, 246, 250);\n background-color: var(--color-surface--hover);\n}\n\n.ncp0nKHQ7d8-:focus-visible {\n box-shadow: 0px 0px 0px calc(16px / 8) rgba(255, 255, 255, 1),\n 0px 0px 0px calc(16px / 4) rgb(147, 161, 169);\n box-shadow: var(--shadow-focus);\n}\n\n.ncp0nKHQ7d8- span {\n margin-left: calc(16px / 2);\n margin-left: var(--space-small);\n}\n";
|
|
259
286
|
var styles$1 = {"actionContainer":"Ow9wSNnGP-g-","actionButton":"ncp0nKHQ7d8-"};
|
|
260
287
|
styleInject_es.styleInject(css_248z$1);
|
|
261
288
|
|
|
262
289
|
function ComboboxAction(props) {
|
|
290
|
+
const { searchValue } = React.useContext(ComboboxContext);
|
|
291
|
+
if (props.visible) {
|
|
292
|
+
const isVisible = typeof props.visible === "function" && !props.visible({ searchValue });
|
|
293
|
+
if (isVisible || !props.visible) {
|
|
294
|
+
return null;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
const options = { searchValue };
|
|
298
|
+
const computedLabel = typeof props.label === "string" ? props.label : props.label(options);
|
|
263
299
|
return (React__default["default"].createElement("div", { className: styles$1.actionContainer },
|
|
264
|
-
React__default["default"].createElement("button", { className: styles$1.actionButton, onClick: props.onClick, type: "button"
|
|
265
|
-
React__default["default"].createElement(Typography.Typography, { element: "span", size: "base", textColor: "green", fontWeight: "semiBold" },
|
|
300
|
+
React__default["default"].createElement("button", { className: styles$1.actionButton, onClick: e => props.onClick(e, options), type: "button" },
|
|
301
|
+
React__default["default"].createElement(Typography.Typography, { element: "span", size: "base", textColor: "green", fontWeight: "semiBold" }, computedLabel))));
|
|
266
302
|
}
|
|
267
303
|
|
|
268
304
|
function ComboboxTrigger({ label = "Select", selected, }) {
|
|
@@ -389,7 +425,7 @@ function Combobox(props) {
|
|
|
389
425
|
label: option.props.label,
|
|
390
426
|
}))) || [], [optionElements]);
|
|
391
427
|
const { selectedOptions, selectedStateSetter, shouldScroll, wrapperRef, searchValue, setSearchValue, open, setOpen, handleClose, handleSelection, } = useCombobox(props.selected, props.onSelect, props.onClose, props.multiSelect);
|
|
392
|
-
return (React__default["default"].createElement(ComboboxContextProvider, { selected: selectedOptions, selectionHandler: handleSelection, open: open, setOpen: setOpen, handleClose: handleClose, shouldScroll: shouldScroll },
|
|
428
|
+
return (React__default["default"].createElement(ComboboxContextProvider, { selected: selectedOptions, selectionHandler: handleSelection, open: open, setOpen: setOpen, handleClose: handleClose, shouldScroll: shouldScroll, searchValue: searchValue },
|
|
393
429
|
React__default["default"].createElement("div", { ref: wrapperRef, className: styles.wrapper },
|
|
394
430
|
open && (React__default["default"].createElement("div", { className: styles.overlay, onClick: () => handleClose(), "data-testid": "ATL-Combobox-Overlay" })),
|
|
395
431
|
triggerElement || (React__default["default"].createElement(ComboboxTrigger, { label: props.label, selected: props.selected })),
|
package/dist/DataList/index.js
CHANGED
|
@@ -25,8 +25,8 @@ var ReactDOM = require('react-dom');
|
|
|
25
25
|
var Checkbox = require('../Checkbox-ad7ec2e7.js');
|
|
26
26
|
var reactRouterDom = require('react-router-dom');
|
|
27
27
|
var AnimatedSwitcher = require('../AnimatedSwitcher-d1e1ddcf.js');
|
|
28
|
-
var Combobox = require('../Combobox-
|
|
29
|
-
var Chip = require('../Chip-
|
|
28
|
+
var Combobox = require('../Combobox-b6053eb7.js');
|
|
29
|
+
var Chip = require('../Chip-168acf3e.js');
|
|
30
30
|
var Icon = require('../Icon-405a216c.js');
|
|
31
31
|
var debounce = require('lodash/debounce');
|
|
32
32
|
var InputText = require('../InputText-f7c45ee5.js');
|
|
@@ -50,7 +50,7 @@ var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
|
|
|
50
50
|
var isEmpty__default = /*#__PURE__*/_interopDefaultLegacy(isEmpty);
|
|
51
51
|
var debounce__default = /*#__PURE__*/_interopDefaultLegacy(debounce);
|
|
52
52
|
|
|
53
|
-
var css_248z$f = ".TkdrExYnvcY-,\n.TkdrExYnvcY- * {\n box-sizing: border-box;\n}\n\n.TkdrExYnvcY- {\n --data-list--minimum-item-height: calc(var(--base-unit) * 3.5);\n\n display: -ms-flexbox;\n\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n position: relative;\n z-index: 0;\n z-index: var(--elevation-default);\n -ms-flex: 1;\n flex: 1;\n}\n\n/*\n * Header\n */\n\n.IcAlZHoB4LI- {\n display: -ms-flexbox;\n display: flex;\n position: relative;\n z-index: 1;\n z-index: var(--elevation-base);\n margin-bottom: calc(16px / 2);\n margin-bottom: var(--space-small);\n -ms-flex-align: center;\n align-items: center;\n}\n\n.TFO76ysivmg- {\n display: grid;\n padding: calc(16px / 2) 0;\n padding: var(--space-small) 0;\n gap: calc(16px / 2);\n grid-gap: calc(16px / 2);\n grid-gap: var(--space-small);\n gap: var(--space-small);\n grid-template-columns: auto -webkit-max-content;\n grid-template-columns: auto max-content;\n}\n\n.jGHZZYZm1ZY- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n -ms-flex-pack: center;\n justify-content: center;\n min-height: calc(16px * 3);\n min-height: var(--space-largest);\n padding: calc(16px / 2);\n padding: var(--space-small);\n border-bottom: calc(16px / 8) solid rgb(217, 223, 225);\n border-bottom: var(--border-thick) solid var(--color-border);\n}\n\n.GiD7MjZJbcw- {\n display: -ms-flexbox;\n display: flex;\n}\n\n@media (max-width: 489px) {\n\n.GiD7MjZJbcw- {\n -ms-flex-pack: justify;\n justify-content: space-between;\n width: 100%;\n}\n }\n\n@media (--small-screens-and-below) {\n\n.GiD7MjZJbcw- {\n -ms-flex-pack: justify;\n justify-content: space-between;\n width: 100%;\n}\n }\n\n.jMSVGIAr5tk- > p {\n font-weight: 500;\n white-space: nowrap;\n}\n\n.jMSVGIAr5tk- {\n display: -ms-flexbox;\n display: flex;\n margin: calc((16px / 2) * -1) 0;\n margin: calc(calc(16px / 2) * -1) 0;\n margin: calc(var(--space-small) * -1) 0;\n -ms-flex-align: center;\n align-items: center;\n gap:
|
|
53
|
+
var css_248z$f = ".TkdrExYnvcY-,\n.TkdrExYnvcY- * {\n box-sizing: border-box;\n}\n\n.TkdrExYnvcY- {\n --data-list--minimum-item-height: calc(var(--base-unit) * 3.5);\n\n display: -ms-flexbox;\n\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n position: relative;\n z-index: 0;\n z-index: var(--elevation-default);\n -ms-flex: 1;\n flex: 1;\n}\n\n/*\n * Header\n */\n\n.IcAlZHoB4LI- {\n display: -ms-flexbox;\n display: flex;\n position: relative;\n z-index: 1;\n z-index: var(--elevation-base);\n margin-bottom: calc(16px / 2);\n margin-bottom: var(--space-small);\n -ms-flex-align: center;\n align-items: center;\n}\n\n.TFO76ysivmg- {\n display: grid;\n padding: calc(16px / 2) 0;\n padding: var(--space-small) 0;\n gap: calc(16px / 2);\n grid-gap: calc(16px / 2);\n grid-gap: var(--space-small);\n gap: var(--space-small);\n grid-template-columns: auto -webkit-max-content;\n grid-template-columns: auto max-content;\n}\n\n.jGHZZYZm1ZY- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n -ms-flex-pack: center;\n justify-content: center;\n min-height: calc(16px * 3);\n min-height: var(--space-largest);\n padding: calc(16px / 2);\n padding: var(--space-small);\n border-bottom: calc(16px / 8) solid rgb(217, 223, 225);\n border-bottom: var(--border-thick) solid var(--color-border);\n}\n\n.GiD7MjZJbcw- {\n --data-list--header-actions-gap: var(--space-small);\n display: -ms-flexbox;\n display: flex;\n gap: calc(16px / 2);\n gap: var(--data-list--header-actions-gap);\n}\n\n@media (max-width: 489px) {\n\n.GiD7MjZJbcw- {\n -ms-flex-pack: justify;\n justify-content: space-between;\n width: 100%;\n}\n }\n\n@media (--small-screens-and-below) {\n\n.GiD7MjZJbcw- {\n -ms-flex-pack: justify;\n justify-content: space-between;\n width: 100%;\n}\n }\n\n.jMSVGIAr5tk- > p {\n font-weight: 500;\n white-space: nowrap;\n}\n\n.jMSVGIAr5tk- {\n display: -ms-flexbox;\n display: flex;\n margin: calc((16px / 2) * -1) 0;\n margin: calc(calc(16px / 2) * -1) 0;\n margin: calc(var(--space-small) * -1) 0;\n -ms-flex-align: center;\n align-items: center;\n gap: var(--data-list--header-actions-gap);\n}\n\n/*\n * List Item\n */\n\n.ise8kHCfhCY- {\n position: relative;\n padding: calc(16px / 2);\n padding: var(--space-small);\n border-bottom: calc(16px / 16) solid rgb(217, 223, 225);\n border-bottom: var(--border-base) solid var(--color-border);\n transition: all 200ms;\n transition: all var(--timing-base);\n}\n\n.ise8kHCfhCY-,\n.Tq6e0BGwcSM- {\n display: grid;\n grid-template-columns: minmax(0px, auto);\n min-height: var(--data-list--minimum-item-height);\n -ms-flex-align: center;\n align-items: center;\n}\n\n.ise8kHCfhCY-.Pc0JGX6jCD4-,\n.ise8kHCfhCY-:hover,\n.ise8kHCfhCY-:focus-within {\n --data-list-item-active-color: var(--color-surface--hover);\n background-color: rgb(244, 246, 250);\n background-color: var(--data-list-item-active-color);\n}\n\n.Tq6e0BGwcSM- {\n margin: calc((16px / 2) * -1) 0;\n margin: calc(calc(16px / 2) * -1) 0;\n margin: calc(var(--space-small) * -1) 0;\n padding: calc(16px / 2) 0;\n padding: var(--space-small) 0;\n border: none;\n text-align: left;\n -webkit-text-decoration: none;\n text-decoration: none;\n background-color: transparent;\n cursor: pointer;\n}\n\n/**\n * Reset CSS properties on focus to ensure we only have the focus state on the\n * parent .listItem\n */\n\n.Tq6e0BGwcSM-:focus {\n outline: none;\n background-color: transparent;\n}\n\n/**\n * Enable a better hover and focus experience when :has() is supported.\n * This is a workaround for Firefox where the :has() selector is not supported.\n */\n\n@supports selector(*:has(*)) {\n .ise8kHCfhCY-:hover,\n .ise8kHCfhCY-:focus-within {\n background-color: transparent;\n }\n\n .ise8kHCfhCY-:has(.Tq6e0BGwcSM-:hover, .Tq6e0BGwcSM-:focus) {\n background-color: var(--data-list-item-active-color);\n }\n}\n\n/*\n * List Item Selection\n */\n\n.d-79rkMqufg- {\n display: grid;\n -ms-flex-align: start;\n align-items: flex-start;\n}\n\n@media (min-width: 768px) {\n\n.d-79rkMqufg- {\n -ms-flex-align: center;\n align-items: center;\n}\n }\n\n@media (--medium-screens-and-up) {\n\n.d-79rkMqufg- {\n -ms-flex-align: center;\n align-items: center;\n}\n }\n\n.d-79rkMqufg-,\n.jGHZZYZm1ZY- .d-79rkMqufg- {\n grid-template-columns: -webkit-max-content minmax(0px, auto);\n grid-template-columns: max-content minmax(0px, auto);\n -webkit-column-gap: calc(16px / 2);\n -webkit-column-gap: var(--space-small);\n -moz-column-gap: calc(16px / 2);\n -moz-column-gap: var(--space-small);\n column-gap: calc(16px / 2);\n column-gap: var(--space-small);\n}\n\n.jGHZZYZm1ZY- .d-79rkMqufg- {\n display: grid;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.qm-SSuWTXkI- {\n display: -ms-flexbox;\n display: flex;\n visibility: hidden;\n\n /* To compensate the Checkbox's label margin that we are using for screen-readers */\n margin-right: calc((16px * 1) * -1);\n margin-right: calc(calc(16px * 1) * -1);\n margin-right: calc(var(--space-base) * -1);\n}\n\n.qm-SSuWTXkI-.VA9RnQp6nbI- {\n visibility: visible;\n}\n\n.ise8kHCfhCY- .d-79rkMqufg- > :first-child {\n -ms-flex-order: 2;\n order: 2;\n}\n\n.ise8kHCfhCY- .d-79rkMqufg- > :last-child {\n -ms-flex-order: 1;\n order: 1;\n padding-top: calc(16px / 4);\n padding-top: var(--space-smaller);\n opacity: 1;\n transition: opacity 100ms ease-in-out;\n transition: opacity var(--transition-properties);\n --transition-properties: var(--timing-quick) ease-in-out;\n}\n\n@media (min-width: 768px) {\n\n.ise8kHCfhCY- .d-79rkMqufg- > :last-child {\n padding-top: 0;\n opacity: 0;\n}\n }\n\n@media (--medium-screens-and-up) {\n\n.ise8kHCfhCY- .d-79rkMqufg- > :last-child {\n padding-top: 0;\n opacity: 0;\n}\n }\n\n.ise8kHCfhCY-:hover .d-79rkMqufg- > :last-child,\n.ise8kHCfhCY-:focus-within .d-79rkMqufg- > :last-child,\n.ise8kHCfhCY- .d-79rkMqufg-._4L7iXXzLr5k- > :last-child {\n opacity: 1;\n}\n\n/*\n * Filters\n */\n\n.Kkp-IYmwq-s- {\n display: -ms-flexbox;\n display: flex;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: rgba(255, 255, 255, 0.6);\n background-color: var(--color-overlay--dimmed);\n -ms-flex-align: start;\n align-items: flex-start;\n -ms-flex-pack: center;\n justify-content: center;\n}\n\n.m-eCShL7TU4- {\n position: sticky;\n top: 50vh;\n}\n\n/* This hides the text from the UI but not from the screen readers */\n\n.esUiRgWabYw- {\n position: absolute;\n top: auto;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n text-indent: -10000px;\n}\n";
|
|
54
54
|
var styles$f = {"wrapper":"TkdrExYnvcY-","titleContainer":"IcAlZHoB4LI-","headerFilters":"TFO76ysivmg-","headerTitles":"jGHZZYZm1ZY-","batchSelectContainer":"GiD7MjZJbcw-","headerBatchSelect":"jMSVGIAr5tk-","listItem":"ise8kHCfhCY-","listItemClickable":"Tq6e0BGwcSM-","active":"Pc0JGX6jCD4-","selectable":"d-79rkMqufg-","selectAllCheckbox":"qm-SSuWTXkI-","visible":"VA9RnQp6nbI-","selected":"_4L7iXXzLr5k-","filtering":"Kkp-IYmwq-s-","filteringSpinner":"m-eCShL7TU4-","srOnly":"esUiRgWabYw-"};
|
|
55
55
|
styleInject_es.styleInject(css_248z$f);
|
|
56
56
|
|
|
@@ -218,7 +218,7 @@ function DataListOverflowFade({ children }) {
|
|
|
218
218
|
React__default["default"].createElement("span", { ref: rightRef, className: styles$b.overflowTrigger }))));
|
|
219
219
|
}
|
|
220
220
|
|
|
221
|
-
var css_248z$a = "._8MYxAQYdZzM- {\n position: relative;\n}\n\n.WRV-UmQmPzo- {\n display: -ms-flexbox;\n display: flex;\n z-index: 0;\n z-index: var(--elevation-default);\n
|
|
221
|
+
var css_248z$a = "._8MYxAQYdZzM- {\n position: relative;\n}\n\n.WRV-UmQmPzo- {\n --inline-label-height: calc(\n var(--typography--fontSize-small) * 1.5 + calc(var(--space-smaller) * 1.5) *\n 2\n );\n\n display: -ms-flexbox;\n\n display: flex;\n z-index: 0;\n z-index: var(--elevation-default);\n max-height: calc((\n ((16px * 1) * 0.75) * 1.5 + ((16px / 4) * 1.5) *\n 2\n ) * 2);\n max-height: calc(calc(\n calc(calc(16px * 1) * 0.75) * 1.5 + calc(calc(16px / 4) * 1.5) *\n 2\n ) * 2);\n max-height: calc(var(--inline-label-height) * 2);\n overflow: hidden;\n white-space: nowrap;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n gap: calc(16px / 4);\n gap: var(--space-smaller);\n}\n\n.ND-cN-mX5-c- {\n -webkit-mask-image: linear-gradient(\n to left,\n transparent,\n transparent calc(16px * 1.5),\n rgba(0, 0, 0, 1) calc(16px * 3),\n rgba(0, 0, 0, 1)\n );\n -webkit-mask-image: linear-gradient(\n to left,\n transparent,\n transparent var(--space-large),\n rgba(0, 0, 0, 1) var(--space-largest),\n rgba(0, 0, 0, 1)\n );\n mask-image: linear-gradient(\n to left,\n transparent,\n transparent calc(16px * 1.5),\n rgba(0, 0, 0, 1) calc(16px * 3),\n rgba(0, 0, 0, 1)\n );\n mask-image: linear-gradient(\n to left,\n transparent,\n transparent var(--space-large),\n rgba(0, 0, 0, 1) var(--space-largest),\n rgba(0, 0, 0, 1)\n );\n}\n\n.liQeWCMenD0- {\n display: -ms-flexbox;\n display: flex;\n position: absolute;\n top: 0;\n right: 0;\n height: 100%;\n -ms-flex-align: center;\n align-items: center;\n}\n";
|
|
222
222
|
var styles$a = {"tagWrapper":"_8MYxAQYdZzM-","tags":"WRV-UmQmPzo-","tagsMask":"ND-cN-mX5-c-","tagCount":"liQeWCMenD0-"};
|
|
223
223
|
styleInject_es.styleInject(css_248z$a);
|
|
224
224
|
|
|
@@ -231,6 +231,7 @@ function DataListTags({ items }) {
|
|
|
231
231
|
var _a;
|
|
232
232
|
if (!window.IntersectionObserver)
|
|
233
233
|
return;
|
|
234
|
+
setVisibleIndex([]);
|
|
234
235
|
const observer = new IntersectionObserver(handleIntersection, {
|
|
235
236
|
root: ref.current,
|
|
236
237
|
threshold: buildIntersectionThreshold(items),
|
|
@@ -279,7 +280,7 @@ var css_248z$9 = ".fLmJZJJqMcE- {\n display: -ms-flexbox;\n display: flex;\n
|
|
|
279
280
|
var styles$9 = {"headerLabel":"fLmJZJJqMcE-","sortable":"UG8cHUT3Hds-"};
|
|
280
281
|
styleInject_es.styleInject(css_248z$9);
|
|
281
282
|
|
|
282
|
-
var css_248z$8 = ".AN5egORYy-0- {\n width: calc(16px * 1.5);\n width: var(--space-large);\n height: calc(16px * 1.5);\n height: var(--space-large);\n margin-right: calc(16px / 2);\n margin-right: var(--space-small);\n}\n\n.AN5egORYy-0- path {\n fill: rgba(101, 120, 132, 1);\n fill: var(--color-
|
|
283
|
+
var css_248z$8 = ".AN5egORYy-0- {\n width: calc(16px * 1.5);\n width: var(--space-large);\n height: calc(16px * 1.5);\n height: var(--space-large);\n margin-right: calc(16px / 2);\n margin-right: var(--space-small);\n}\n\n.AN5egORYy-0- path {\n fill: rgba(101, 120, 132, 1);\n fill: var(--color-interactive--subtle);\n transition: all 200ms ease;\n transition: all var(--timing-base) ease;\n}\n\n.AN5egORYy-0- path.F1uTDCK0Sb0- {\n fill: rgb(1, 41, 57);\n fill: var(--color-heading);\n}\n\n.AN5egORYy-0- path._6KYeQXWXLQ8- {\n fill: rgb(217, 223, 225);\n fill: var(--color-inactive--surface);\n}\n";
|
|
283
284
|
var styles$8 = {"sortIcon":"AN5egORYy-0-","active":"F1uTDCK0Sb0-","inactive":"_6KYeQXWXLQ8-"};
|
|
284
285
|
styleInject_es.styleInject(css_248z$8);
|
|
285
286
|
|
|
@@ -477,8 +478,17 @@ function DataListActions({ children, itemsToExpose = 2, }) {
|
|
|
477
478
|
return null;
|
|
478
479
|
if (!props.icon)
|
|
479
480
|
return null;
|
|
480
|
-
|
|
481
|
-
|
|
481
|
+
function getActionLabel() {
|
|
482
|
+
if (typeof props.label === "string") {
|
|
483
|
+
return props.label;
|
|
484
|
+
}
|
|
485
|
+
if (activeItem) {
|
|
486
|
+
return props.label(activeItem);
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
const actionLabel = getActionLabel();
|
|
490
|
+
return (React__default["default"].createElement(Tooltip.Tooltip, { key: actionLabel, message: actionLabel },
|
|
491
|
+
React__default["default"].createElement(Button.Button, { icon: props.icon, ariaLabel: actionLabel, onClick: () => {
|
|
482
492
|
var _a, _b;
|
|
483
493
|
if (activeItem) {
|
|
484
494
|
(_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call(props, activeItem);
|
|
@@ -1047,9 +1057,17 @@ function DataListAction({ label, icon, destructive, visible = () => true, onClic
|
|
|
1047
1057
|
return null;
|
|
1048
1058
|
}
|
|
1049
1059
|
const color = destructive ? "critical" : "heading";
|
|
1060
|
+
function getActionLabel() {
|
|
1061
|
+
if (typeof label === "string") {
|
|
1062
|
+
return label;
|
|
1063
|
+
}
|
|
1064
|
+
if (activeItem) {
|
|
1065
|
+
return label(activeItem);
|
|
1066
|
+
}
|
|
1067
|
+
}
|
|
1050
1068
|
return (React__default["default"].createElement("button", { type: "button", className: styles$1.action, onClick: handleClick },
|
|
1051
1069
|
React__default["default"].createElement(Typography.Typography, { textColor: color },
|
|
1052
|
-
React__default["default"].createElement("span", { className: styles$1.label },
|
|
1070
|
+
React__default["default"].createElement("span", { className: styles$1.label }, getActionLabel())),
|
|
1053
1071
|
icon && React__default["default"].createElement(Icon.Icon, { name: icon, color: color })));
|
|
1054
1072
|
function handleClick() {
|
|
1055
1073
|
if (activeItem) {
|
|
@@ -7,7 +7,7 @@ interface InputAvatarProps extends Omit<AvatarProps, "size"> {
|
|
|
7
7
|
* to upload the file.
|
|
8
8
|
*
|
|
9
9
|
* More info is available at:
|
|
10
|
-
* https://atlantis.getjobber.com/components
|
|
10
|
+
* https://atlantis.getjobber.com/?path=/docs/components-forms-and-inputs-inputfile-docs--page#getuploadparams
|
|
11
11
|
*/
|
|
12
12
|
getUploadParams(file: File): UploadParams | Promise<UploadParams>;
|
|
13
13
|
/**
|
|
@@ -97,7 +97,7 @@ interface InputFileProps {
|
|
|
97
97
|
* to upload the file.
|
|
98
98
|
*
|
|
99
99
|
* More info is available at:
|
|
100
|
-
* https://atlantis.getjobber.com/components
|
|
100
|
+
* https://atlantis.getjobber.com/?path=/docs/components-forms-and-inputs-inputfile-docs--page#getuploadparams
|
|
101
101
|
*/
|
|
102
102
|
getUploadParams(file: File): UploadParams | Promise<UploadParams>;
|
|
103
103
|
/**
|
package/dist/InputGroup/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var InputGroup = require('../InputGroup-
|
|
5
|
+
var InputGroup = require('../InputGroup-8d4fd4eb.js');
|
|
6
6
|
require('react');
|
|
7
7
|
require('classnames');
|
|
8
8
|
require('../style-inject.es-9d2f5f4e.js');
|
|
@@ -23,7 +23,7 @@ function isInvalidGroupNesting(childs) {
|
|
|
23
23
|
return React__default["default"].Children.toArray(childs).some(child => {
|
|
24
24
|
if (child.type === InputGroup &&
|
|
25
25
|
child.props.flowDirection != "horizontal") {
|
|
26
|
-
console.error(`ERROR: InputGroup not rendered: nesting 'flowDirection="vertical"' columns not supported.`, `https://atlantis.getjobber.com/components
|
|
26
|
+
console.error(`ERROR: InputGroup not rendered: nesting 'flowDirection="vertical"' columns not supported.`, `https://atlantis.getjobber.com/?path=/story/components-forms-and-inputs-inputgroup-web--nested`);
|
|
27
27
|
return true;
|
|
28
28
|
}
|
|
29
29
|
return false;
|
|
@@ -9,7 +9,7 @@ interface DropDownMenuProps {
|
|
|
9
9
|
/**
|
|
10
10
|
* Change handler.
|
|
11
11
|
*/
|
|
12
|
-
setOptions: Dispatch<React.SetStateAction<Options>>;
|
|
12
|
+
readonly setOptions: Dispatch<React.SetStateAction<Options>>;
|
|
13
13
|
}
|
|
14
14
|
export declare function DropDownMenu({ options, setOptions }: DropDownMenuProps): JSX.Element;
|
|
15
15
|
export {};
|
|
@@ -16,7 +16,7 @@ interface MultiSelectProps {
|
|
|
16
16
|
/**
|
|
17
17
|
* Change handler
|
|
18
18
|
*/
|
|
19
|
-
onOptionsChange: Dispatch<React.SetStateAction<Options>>;
|
|
19
|
+
readonly onOptionsChange: Dispatch<React.SetStateAction<Options>>;
|
|
20
20
|
/**
|
|
21
21
|
* Adjusts the interface to either have small or large spacing.
|
|
22
22
|
*/
|
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var React = require('react');
|
|
6
6
|
var classnames = require('classnames');
|
|
7
|
-
var useOnKeyDown = require('@jobber/hooks/useOnKeyDown');
|
|
8
7
|
var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
|
|
9
8
|
var Checkbox = require('../Checkbox-ad7ec2e7.js');
|
|
10
9
|
var Text = require('../Text-4a2bc89f.js');
|
|
@@ -28,19 +27,6 @@ var css_248z = "._0SStdD4KRHs- {\n display: -ms-flexbox;\n display: flex;\n p
|
|
|
28
27
|
var styles = {"dropDownMenuContainer":"_0SStdD4KRHs-","option":"mFSgwOQZJm0-","active":"SepF4gvOxq8-"};
|
|
29
28
|
styleInject_es.styleInject(css_248z);
|
|
30
29
|
|
|
31
|
-
function handleKeyboardShortcut(setupKeyListeners) {
|
|
32
|
-
function callback(event) {
|
|
33
|
-
const { metaKey, ctrlKey, key, target } = event;
|
|
34
|
-
const shouldTriggerShortcut = target instanceof HTMLButtonElement ? metaKey || ctrlKey : true;
|
|
35
|
-
if (!shouldTriggerShortcut)
|
|
36
|
-
return;
|
|
37
|
-
event.preventDefault();
|
|
38
|
-
event.stopPropagation();
|
|
39
|
-
setupKeyListeners(key);
|
|
40
|
-
}
|
|
41
|
-
return { callback };
|
|
42
|
-
}
|
|
43
|
-
|
|
44
30
|
function DropDownMenu({ options, setOptions }) {
|
|
45
31
|
const [highlightedIndex, setHighlightedIndex] = React.useState(0);
|
|
46
32
|
const menuDiv = React.useRef();
|
|
@@ -78,40 +64,32 @@ function DropDownMenu({ options, setOptions }) {
|
|
|
78
64
|
menuDivElement.scrollTop += itemHeight;
|
|
79
65
|
}
|
|
80
66
|
}
|
|
81
|
-
function
|
|
67
|
+
function handleKeyDown(event) {
|
|
68
|
+
const { key, metaKey, ctrlKey } = event;
|
|
69
|
+
if (metaKey || ctrlKey)
|
|
70
|
+
return;
|
|
82
71
|
switch (key) {
|
|
83
|
-
case "Enter":
|
|
84
|
-
case " ": {
|
|
72
|
+
case "Enter": {
|
|
85
73
|
if (highlightedIndex >= 0) {
|
|
86
74
|
handleOptionClick(options[highlightedIndex]);
|
|
87
75
|
}
|
|
88
76
|
break;
|
|
89
77
|
}
|
|
90
78
|
case "ArrowDown": {
|
|
91
|
-
|
|
92
|
-
handleOptionFocus(newIndex);
|
|
93
|
-
scrollMenuIfItemNotInView(menuDiv.current, "down");
|
|
79
|
+
handlePressDown(event);
|
|
94
80
|
break;
|
|
95
81
|
}
|
|
96
82
|
case "ArrowUp": {
|
|
97
|
-
|
|
98
|
-
handleOptionFocus(newIndex);
|
|
99
|
-
scrollMenuIfItemNotInView(menuDiv.current, "up");
|
|
83
|
+
handlePressUp(event);
|
|
100
84
|
break;
|
|
101
85
|
}
|
|
102
86
|
}
|
|
103
87
|
}
|
|
104
|
-
useOnKeyDown.useOnKeyDown(handleKeyboardShortcut(setupKeyListeners).callback, [
|
|
105
|
-
"Enter",
|
|
106
|
-
" ",
|
|
107
|
-
"ArrowDown",
|
|
108
|
-
"ArrowUp",
|
|
109
|
-
]);
|
|
110
88
|
React.useEffect(() => {
|
|
111
89
|
// focus first option
|
|
112
90
|
handleOptionFocus(0);
|
|
113
91
|
}, [menuDiv]);
|
|
114
|
-
return (React__default["default"].createElement("ul", { "data-testid": "dropdown-menu", className: styles.dropDownMenuContainer, ref: menuDiv }, options.map((option, index) => {
|
|
92
|
+
return (React__default["default"].createElement("ul", { "data-testid": "dropdown-menu", className: styles.dropDownMenuContainer, ref: menuDiv, onKeyDown: handleKeyDown }, options.map((option, index) => {
|
|
115
93
|
const optionClass = classnames__default["default"](styles.option, {
|
|
116
94
|
[styles.active]: index === highlightedIndex,
|
|
117
95
|
});
|
|
@@ -122,6 +100,18 @@ function DropDownMenu({ options, setOptions }) {
|
|
|
122
100
|
}, onMouseOver: e => handleOptionHover(e, index) },
|
|
123
101
|
React__default["default"].createElement(Checkbox.Checkbox, { label: option.label, checked: option.checked, onFocus: () => setHighlightedIndex(index) })));
|
|
124
102
|
})));
|
|
103
|
+
function handlePressUp(event) {
|
|
104
|
+
event.preventDefault();
|
|
105
|
+
const newIndex = Math.max(0, highlightedIndex - 1);
|
|
106
|
+
handleOptionFocus(newIndex);
|
|
107
|
+
scrollMenuIfItemNotInView(menuDiv.current, "up");
|
|
108
|
+
}
|
|
109
|
+
function handlePressDown(event) {
|
|
110
|
+
event.preventDefault();
|
|
111
|
+
const newIndex = Math.min(options.length - 1, highlightedIndex + 1);
|
|
112
|
+
handleOptionFocus(newIndex);
|
|
113
|
+
scrollMenuIfItemNotInView(menuDiv.current, "down");
|
|
114
|
+
}
|
|
125
115
|
}
|
|
126
116
|
|
|
127
117
|
// eslint-disable-next-line max-statements
|
|
@@ -146,7 +136,10 @@ function MultiSelect({ defaultLabel, allSelectedLabel, options, onOptionsChange,
|
|
|
146
136
|
setMenuVisible(false);
|
|
147
137
|
}
|
|
148
138
|
};
|
|
149
|
-
function
|
|
139
|
+
function handleKeydown(event) {
|
|
140
|
+
const { key, metaKey, ctrlKey } = event;
|
|
141
|
+
if (metaKey || ctrlKey)
|
|
142
|
+
return;
|
|
150
143
|
switch (key) {
|
|
151
144
|
case "Enter":
|
|
152
145
|
case " ": {
|
|
@@ -162,11 +155,6 @@ function MultiSelect({ defaultLabel, allSelectedLabel, options, onOptionsChange,
|
|
|
162
155
|
}
|
|
163
156
|
}
|
|
164
157
|
}
|
|
165
|
-
useOnKeyDown.useOnKeyDown(handleKeyboardShortcut(setupKeyListeners).callback, [
|
|
166
|
-
"Enter",
|
|
167
|
-
" ",
|
|
168
|
-
"Escape",
|
|
169
|
-
]);
|
|
170
158
|
React.useEffect(() => {
|
|
171
159
|
document.addEventListener("mousedown", handleClickOutside);
|
|
172
160
|
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
@@ -185,7 +173,7 @@ function MultiSelect({ defaultLabel, allSelectedLabel, options, onOptionsChange,
|
|
|
185
173
|
setLabel(selectedLabels.join(", "));
|
|
186
174
|
}
|
|
187
175
|
}, [options]);
|
|
188
|
-
return (React__default["default"].createElement("div", { ref: multiSelectContainer, className: styles$1.multiSelectContainer },
|
|
176
|
+
return (React__default["default"].createElement("div", { ref: multiSelectContainer, className: styles$1.multiSelectContainer, onKeyDown: handleKeydown },
|
|
189
177
|
React__default["default"].createElement("div", { "data-testid": "multi-select", className: multiSelectClass, onClick: handleMenuVisibility, onFocus: () => setFocused(true), onBlur: () => setFocused(false), tabIndex: 0, ref: multiSelectRef, role: "button", "aria-label": `${defaultLabel}: ${label}`, "aria-multiselectable": true, "aria-haspopup": true },
|
|
190
178
|
React__default["default"].createElement(Text.Text, null, label),
|
|
191
179
|
React__default["default"].createElement(Icon.Icon, { name: "arrowDown" })),
|
|
@@ -11,7 +11,7 @@ require('classnames');
|
|
|
11
11
|
require('../Typography-973b122e.js');
|
|
12
12
|
var Option = require('../Option-469029b5.js');
|
|
13
13
|
var InputNumber = require('../InputNumber-d9ebabaa.js');
|
|
14
|
-
var InputGroup = require('../InputGroup-
|
|
14
|
+
var InputGroup = require('../InputGroup-8d4fd4eb.js');
|
|
15
15
|
var Content = require('../Content-2ca1ffe1.js');
|
|
16
16
|
require('../FormField-dfc061ca.js');
|
|
17
17
|
require('../tslib.es6-5b8768b7.js');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jobber/components",
|
|
3
|
-
"version": "4.66.1",
|
|
3
|
+
"version": "4.66.2-dependabot.1+96ccd928",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
"dist/*"
|
|
20
20
|
],
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@jobber/design": "^0.50.
|
|
23
|
-
"@jobber/formatters": "
|
|
24
|
-
"@jobber/hooks": "^2.7.
|
|
22
|
+
"@jobber/design": "^0.50.1-dependabot.7+96ccd928",
|
|
23
|
+
"@jobber/formatters": "^0.2.2",
|
|
24
|
+
"@jobber/hooks": "^2.7.3-dependabot.39+96ccd928",
|
|
25
25
|
"@popperjs/core": "^2.0.6",
|
|
26
26
|
"@std-proposal/temporal": "0.0.1",
|
|
27
27
|
"@tanstack/react-table": "8.5.13",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"framer-motion": "6.3.16",
|
|
39
39
|
"lodash": "^4.17.21",
|
|
40
40
|
"react-countdown": "^2.3.2",
|
|
41
|
-
"react-datepicker": "
|
|
41
|
+
"react-datepicker": "~4.10.0",
|
|
42
42
|
"react-dropzone": "^11.0.2",
|
|
43
43
|
"react-hook-form": "^7.43.7",
|
|
44
44
|
"react-markdown": "^8.0.3",
|
|
@@ -83,5 +83,5 @@
|
|
|
83
83
|
"> 1%",
|
|
84
84
|
"IE 10"
|
|
85
85
|
],
|
|
86
|
-
"gitHead": "
|
|
86
|
+
"gitHead": "96ccd928a050a3a1d4f8f61884e28ffe21bdf444"
|
|
87
87
|
}
|
package/dist/Chip-0d2454d9.js
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var React = require('react');
|
|
4
|
-
var classnames = require('classnames');
|
|
5
|
-
var useInView = require('@jobber/hooks/useInView');
|
|
6
|
-
var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
|
|
7
|
-
var Avatar = require('./Avatar-76a799fa.js');
|
|
8
|
-
var Icon = require('./Icon-405a216c.js');
|
|
9
|
-
var Typography = require('./Typography-973b122e.js');
|
|
10
|
-
var Tooltip = require('./Tooltip-6b12f1c2.js');
|
|
11
|
-
|
|
12
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
13
|
-
|
|
14
|
-
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
15
|
-
var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
|
|
16
|
-
|
|
17
|
-
var css_248z = ":root {\n --chip--gradient-color-variation: var(--chip-base-bg);\n --chip--gradient-color-variation--hover: var(--chip-base--hover);\n}\n\n.af7U8MvcbHE- {\n --chip-height: 40px;\n --chip-radius: 20px;\n --chip-disabled--bg: var(--color-grey--lighter);\n --chip-bar-color: var(--color-greyBlue--light);\n --chip-base-bg: var(--color-greyBlue--lightest);\n --chip-base--hover: var(--color-greyBlue--lighter);\n display: -ms-flexbox;\n display: flex;\n position: relative;\n height: 40px;\n height: var(--chip-height);\n min-width: 0;\n padding: calc(16px / 2) 16px;\n padding: var(--space-small) var(--base-unit);\n border: calc(16px / 16) solid transparent;\n border: var(--border-base) solid transparent;\n border-radius: 20px;\n border-radius: var(--chip-radius);\n color: rgb(1, 41, 57);\n color: var(--color-heading);\n text-align: left;\n cursor: pointer;\n transition: all 200ms;\n transition: all var(--timing-base);\n -ms-flex-align: center;\n align-items: center;\n}\n\n.af7U8MvcbHE-:focus,\n.af7U8MvcbHE-:focus-visible {\n outline: none;\n}\n\n.af7U8MvcbHE-:focus-visible {\n box-shadow: 0px 0px 0px calc(16px / 8) rgba(255, 255, 255, 1),\n 0px 0px 0px calc(16px / 4) rgb(147, 161, 169);\n box-shadow: var(--shadow-focus);\n}\n\n.af7U8MvcbHE- .e905AYK4SCc- {\n margin-left: calc(-1 * (16px / 2));\n margin-left: calc(-1 * calc(16px / 2));\n margin-left: calc(-1 * var(--space-small));\n margin-right: calc(16px / 2);\n margin-right: var(--space-small);\n}\n\n.af7U8MvcbHE- .ySADfZ0FckM- {\n margin-left: calc(16px / 2);\n margin-left: var(--space-small);\n margin-right: calc(-1 * (16px / 2));\n margin-right: calc(-1 * calc(16px / 2));\n margin-right: calc(-1 * var(--space-small));\n}\n\n.af7U8MvcbHE- .e905AYK4SCc-,\n.af7U8MvcbHE- .ySADfZ0FckM- {\n display: -ms-flexbox;\n display: flex;\n width: calc(16px * 1.5);\n width: var(--space-large);\n height: calc(16px * 1.5);\n height: var(--space-large);\n -ms-flex-negative: 0;\n flex-shrink: 0;\n border-radius: 100%;\n border-radius: var(--radius-circle);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n\n.af7U8MvcbHE- .e905AYK4SCc-.usdkmQ9Sxbk-,\n.af7U8MvcbHE- .ySADfZ0FckM-.usdkmQ9Sxbk- {\n display: none;\n}\n\n.af7U8MvcbHE- .dg1-Izy1eQA- {\n width: calc(16px / 16);\n width: var(--space-minuscule);\n height: 16px;\n height: var(--base-unit);\n margin: 0 calc(16px / 2);\n margin: 0 var(--space-small);\n background-color: var(--chip-bar-color);\n}\n\n.af7U8MvcbHE- .-lz0EYLTDgg- {\n border-radius: 100%;\n border-radius: var(--radius-circle);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n}\n\n.wSI5L-5rODg- {\n border: calc(16px / 16) solid transparent;\n border: var(--border-base) solid transparent;\n color: rgb(1, 41, 57);\n color: var(--color-heading);\n background-color: var(--chip-base-bg);\n --chip--gradient-color-variation: var(--chip-base-bg);\n}\n\n.wSI5L-5rODg-:hover,\n.wSI5L-5rODg-:focus-visible {\n background-color: var(--chip-base--hover);\n --chip--gradient-color-variation--hover: var(--chip-base--hover);\n}\n\n.SmUxkzpIC84-,\n.SmUxkzpIC84-:hover,\n.SmUxkzpIC84-:focus-visible,\n.Mux23dmZSuw-.SmUxkzpIC84-,\n.Mux23dmZSuw-.SmUxkzpIC84-:hover,\n.Mux23dmZSuw-.SmUxkzpIC84-:focus-visible {\n border: calc(16px / 16) solid rgb(201, 66, 33);\n border: var(--border-base) solid var(--color-critical);\n background-color: rgb(255, 226, 219);\n background-color: var(--color-critical--surface);\n --chip--gradient-color-variation: var(--color-critical--surface);\n --chip--gradient-color-variation--hover: var(--color-critical--surface);\n}\n\n.Mux23dmZSuw- {\n border: calc(16px / 16) solid rgb(225, 225, 225);\n border: var(--border-base) solid var(--color-disabled--secondary);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n --chip--gradient-color-variation: var(--color-surface);\n}\n\n/* CAUTION: Order is important here since\n* there is are different styles for subtle:focus and subtle:hover\n* and we want hover to take priority\n*/\n\n.Mux23dmZSuw-:focus-visible {\n --chip--gradient-color-variation--hover: var(--color-surface);\n}\n\n.Mux23dmZSuw-:hover {\n border: calc(16px / 16) solid var(--chip-base-bg);\n border: var(--border-base) solid var(--chip-base-bg);\n background-color: var(--chip-base-bg);\n --chip--gradient-color-variation--hover: var(--chip-base-bg);\n}\n\n.MbRItb9vKhc-,\n.MbRItb9vKhc-:hover,\n.MbRItb9vKhc-:focus-visible {\n border: calc(16px / 16) solid var(--chip-disabled--bg);\n border: var(--border-base) solid var(--chip-disabled--bg);\n color: rgb(181, 181, 181);\n color: var(--color-disabled);\n background-color: var(--chip-disabled--bg);\n cursor: auto;\n --chip--gradient-color-variation: var(--chip-disabled--bg);\n --chip--gradient-color-variation--hover: var(--chip-disabled--bg);\n}\n\n.MbRItb9vKhc- .dg1-Izy1eQA- {\n background-color: rgb(181, 181, 181);\n background-color: var(--color-disabled);\n}\n\n.af7U8MvcbHE-.MbRItb9vKhc- .ySADfZ0FckM- {\n background-color: rgb(181, 181, 181);\n background-color: var(--color-disabled);\n}\n\n.tJhURjR2Vec- {\n display: -ms-flexbox;\n display: flex;\n position: relative;\n overflow: hidden;\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n}\n\n.tJhURjR2Vec- > * {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n}\n\n.tJhURjR2Vec- > p {\n overflow: hidden;\n white-space: nowrap;\n}\n\n.G3QXY0rNcK0- {\n position: absolute;\n top: 0;\n right: 0;\n width: calc(16px * 1);\n width: var(--space-base);\n height: 100%;\n background: linear-gradient(\n to left,\n var(--chip-base-bg) 5%,\n rgba(255, 255, 255, 0)\n );\n background: linear-gradient(\n to left,\n var(--chip--gradient-color-variation) 5%,\n rgba(255, 255, 255, 0)\n );\n}\n\n.af7U8MvcbHE-:focus-visible .G3QXY0rNcK0-,\n.af7U8MvcbHE-:hover .G3QXY0rNcK0- {\n background: linear-gradient(\n to left,\n var(--chip-base--hover) 5%,\n rgba(255, 255, 255, 0)\n );\n background: linear-gradient(\n to left,\n var(--chip--gradient-color-variation--hover) 5%,\n rgba(255, 255, 255, 0)\n );\n}\n\n.MUKEW6c2nNA- {\n display: inline-block;\n width: 1px;\n}\n";
|
|
18
|
-
var styles = {"chip":"af7U8MvcbHE-","prefix":"e905AYK4SCc-","suffix":"ySADfZ0FckM-","empty":"usdkmQ9Sxbk-","chipBar":"dg1-Izy1eQA-","selected":"-lz0EYLTDgg-","base":"wSI5L-5rODg-","invalid":"SmUxkzpIC84-","subtle":"Mux23dmZSuw-","disabled":"MbRItb9vKhc-","chipContent":"tJhURjR2Vec-","truncateGradient":"G3QXY0rNcK0-","chipLabelRef":"MUKEW6c2nNA-"};
|
|
19
|
-
styleInject_es.styleInject(css_248z);
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Returns the first React Child that receives `true` from isCorrectComponent
|
|
23
|
-
* @param children React Children
|
|
24
|
-
* @param isCorrectComponent a function that accepts a JSX Element and returns a boolean.
|
|
25
|
-
* @returns The first child component that returns true on isCorrectComponent
|
|
26
|
-
*/
|
|
27
|
-
function useChildComponent(children, isCorrectComponent) {
|
|
28
|
-
return React.useMemo(() => {
|
|
29
|
-
return React__default["default"].Children.toArray(children).find(d => React.isValidElement(d) && isCorrectComponent(d));
|
|
30
|
-
}, [children]);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function ChipPrefix({ children }) {
|
|
34
|
-
const singleChild = useChildComponent(children, d => d.type === Avatar.Avatar || d.type === Icon.Icon);
|
|
35
|
-
return (React__default["default"].createElement("span", { className: classnames__default["default"](styles.prefix, !singleChild && styles.empty) }, singleChild));
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
function ChipSuffix({ children, className }) {
|
|
39
|
-
var _a;
|
|
40
|
-
let singleChild = useChildComponent(children, d => d.type === Icon.Icon);
|
|
41
|
-
if (!allowedSuffixIcons.includes((_a = singleChild === null || singleChild === void 0 ? void 0 : singleChild.props) === null || _a === void 0 ? void 0 : _a.name)) {
|
|
42
|
-
singleChild = undefined;
|
|
43
|
-
}
|
|
44
|
-
return (React__default["default"].createElement("span", { className: classnames__default["default"](styles.suffix, className, !singleChild && styles.empty) }, singleChild));
|
|
45
|
-
}
|
|
46
|
-
const allowedSuffixIcons = ["cross", "add", "checkmark", "arrowDown"];
|
|
47
|
-
|
|
48
|
-
const Chip = ({ ariaLabel, disabled, heading, invalid, label, value, onClick, onKeyDown, children, role = "button", tabIndex = 0, variation = "base", }) => {
|
|
49
|
-
const classes = classnames__default["default"](styles.chip, {
|
|
50
|
-
[styles.invalid]: invalid,
|
|
51
|
-
[styles.base]: variation === "base",
|
|
52
|
-
[styles.subtle]: variation === "subtle",
|
|
53
|
-
[styles.disabled]: disabled,
|
|
54
|
-
});
|
|
55
|
-
const prefix = useChildComponent(children, d => d.type === Chip.Prefix);
|
|
56
|
-
const suffix = useChildComponent(children, d => d.type === Chip.Suffix);
|
|
57
|
-
const [labelRef, labelFullyVisible] = useInView.useInView();
|
|
58
|
-
const [headingRef, headingFullyVisible] = useInView.useInView();
|
|
59
|
-
const tooltipMessage = getTooltipMessage(labelFullyVisible, headingFullyVisible, label, heading);
|
|
60
|
-
return (React__default["default"].createElement(Tooltip.Tooltip, { message: tooltipMessage },
|
|
61
|
-
React__default["default"].createElement("button", { className: classes, onClick: (ev) => onClick && onClick(value, ev), tabIndex: tabIndex, onKeyDown: onKeyDown, "aria-label": ariaLabel || label, disabled: disabled, role: role, type: "button" },
|
|
62
|
-
prefix,
|
|
63
|
-
React__default["default"].createElement("div", { className: styles.chipContent },
|
|
64
|
-
heading && (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
65
|
-
React__default["default"].createElement(Typography.Typography, { size: "base", fontWeight: "medium" },
|
|
66
|
-
heading,
|
|
67
|
-
React__default["default"].createElement("span", { ref: headingRef, className: styles.chipLabelRef })),
|
|
68
|
-
label && React__default["default"].createElement("span", { className: styles.chipBar }))),
|
|
69
|
-
React__default["default"].createElement(Typography.Typography, { size: "base" },
|
|
70
|
-
label,
|
|
71
|
-
React__default["default"].createElement("span", { ref: labelRef, className: styles.chipLabelRef })),
|
|
72
|
-
!labelFullyVisible && (React__default["default"].createElement("div", { className: styles.truncateGradient, "data-testid": "ATL-Chip-Truncation-Gradient" }))),
|
|
73
|
-
suffix)));
|
|
74
|
-
};
|
|
75
|
-
function getTooltipMessage(labelFullyVisible, headingFullyVisible, label, heading) {
|
|
76
|
-
let message = "";
|
|
77
|
-
if (heading && !headingFullyVisible) {
|
|
78
|
-
message = `${heading} | ${label}`;
|
|
79
|
-
}
|
|
80
|
-
else if (!labelFullyVisible) {
|
|
81
|
-
message = label;
|
|
82
|
-
}
|
|
83
|
-
return message;
|
|
84
|
-
}
|
|
85
|
-
Chip.Prefix = ChipPrefix;
|
|
86
|
-
Chip.Suffix = ChipSuffix;
|
|
87
|
-
|
|
88
|
-
exports.Chip = Chip;
|
|
89
|
-
exports.styles = styles;
|