@hazelcast/ui 4.0.1-canary.5 → 4.0.1-canary.7
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/lib/components/AppHeader/SelectCluster/SelectCluster.js +1 -1
- package/lib/components/AppHeader/SelectCluster/SelectCluster.js.map +1 -1
- package/lib/components/AutocompleteField.d.ts +1 -3
- package/lib/components/AutocompleteField.js +4 -5
- package/lib/components/AutocompleteField.js.map +1 -1
- package/lib/components/AutocompleteField.module.css +183 -0
- package/lib/components/Button.d.ts +1 -0
- package/lib/components/Button.js +2 -1
- package/lib/components/Button.js.map +1 -1
- package/lib/components/Button.module.css +6 -0
- package/lib/components/Checkbox.js +1 -1
- package/lib/components/Checkbox.js.map +1 -1
- package/lib/components/Checkbox.module.css +97 -0
- package/lib/components/Modal.d.ts +19 -2
- package/lib/components/Modal.js +56 -25
- package/lib/components/Modal.js.map +1 -1
- package/lib/components/Modal.module.css +222 -0
- package/lib/components/NumberField.d.ts +2 -3
- package/lib/components/NumberField.js +5 -8
- package/lib/components/NumberField.js.map +1 -1
- package/lib/components/NumberField.module.css +73 -0
- package/lib/components/Pagination.js +2 -2
- package/lib/components/Pagination.js.map +1 -1
- package/lib/components/PasswordField.d.ts +1 -2
- package/lib/components/PasswordField.js +1 -1
- package/lib/components/PasswordField.js.map +1 -1
- package/lib/components/PasswordField.module.scss +3 -0
- package/lib/components/Select/CheckableSelectField.d.ts +0 -1
- package/lib/components/Select/CheckableSelectField.js +12 -6
- package/lib/components/Select/CheckableSelectField.js.map +1 -1
- package/lib/components/Select/CheckableSelectField.module.css +112 -0
- package/lib/components/Select/Common.js +3 -3
- package/lib/components/Select/Common.js.map +1 -1
- package/lib/components/Select/Common.module.css +35 -0
- package/lib/components/Select/MultiSelectField.d.ts +1 -1
- package/lib/components/Select/MultiSelectField.js +3 -5
- package/lib/components/Select/MultiSelectField.js.map +1 -1
- package/lib/components/Select/MultiSelectField.module.css +60 -0
- package/lib/components/Select/SelectField.d.ts +2 -3
- package/lib/components/Select/SelectField.js +4 -6
- package/lib/components/Select/SelectField.js.map +1 -1
- package/lib/components/Select/SelectField.module.css +202 -0
- package/lib/components/TextArea.js +1 -1
- package/lib/components/TextArea.js.map +1 -1
- package/lib/components/TextArea.module.css +109 -0
- package/lib/components/TextField.module.css +1 -1
- package/lib/old/AutocompleteField.d.ts +49 -0
- package/lib/old/AutocompleteField.js +166 -0
- package/lib/old/AutocompleteField.js.map +1 -0
- package/lib/old/AutocompleteFieldFormik.d.ts +9 -0
- package/lib/old/AutocompleteFieldFormik.js +19 -0
- package/lib/old/AutocompleteFieldFormik.js.map +1 -0
- package/lib/old/Checkbox.d.ts +35 -0
- package/lib/old/Checkbox.js +38 -0
- package/lib/old/Checkbox.js.map +1 -0
- package/lib/old/CheckboxFormik.d.ts +10 -0
- package/lib/old/CheckboxFormik.js +17 -0
- package/lib/old/CheckboxFormik.js.map +1 -0
- package/lib/old/Modal.d.ts +26 -0
- package/lib/old/Modal.js +41 -0
- package/lib/old/Modal.js.map +1 -0
- package/lib/old/NumberField.d.ts +33 -0
- package/lib/old/NumberField.js +141 -0
- package/lib/old/NumberField.js.map +1 -0
- package/lib/old/NumberFieldFormik.d.ts +10 -0
- package/lib/old/NumberFieldFormik.js +52 -0
- package/lib/old/NumberFieldFormik.js.map +1 -0
- package/lib/old/PasswordField.d.ts +29 -0
- package/lib/old/PasswordField.js +26 -0
- package/lib/old/PasswordField.js.map +1 -0
- package/lib/old/PasswordFieldFormik.d.ts +10 -0
- package/lib/old/PasswordFieldFormik.js +17 -0
- package/lib/old/PasswordFieldFormik.js.map +1 -0
- package/lib/old/PasswordFieldLegacy.module.scss +26 -0
- package/lib/old/Select/CheckableSelectField.d.ts +40 -0
- package/lib/old/Select/CheckableSelectField.js +77 -0
- package/lib/old/Select/CheckableSelectField.js.map +1 -0
- package/lib/old/Select/CheckableSelectFieldFormik.d.ts +10 -0
- package/lib/old/Select/CheckableSelectFieldFormik.js +19 -0
- package/lib/old/Select/CheckableSelectFieldFormik.js.map +1 -0
- package/lib/old/Select/Common.d.ts +5 -0
- package/lib/old/Select/Common.js +54 -0
- package/lib/old/Select/Common.js.map +1 -0
- package/lib/old/Select/MultiSelectField.d.ts +28 -0
- package/lib/old/Select/MultiSelectField.js +113 -0
- package/lib/old/Select/MultiSelectField.js.map +1 -0
- package/lib/old/Select/MultiSelectFieldFormik.d.ts +11 -0
- package/lib/old/Select/MultiSelectFieldFormik.js +19 -0
- package/lib/old/Select/MultiSelectFieldFormik.js.map +1 -0
- package/lib/old/Select/SelectField.d.ts +43 -0
- package/lib/old/Select/SelectField.js +103 -0
- package/lib/old/Select/SelectField.js.map +1 -0
- package/lib/old/Select/SelectFieldFormik.d.ts +10 -0
- package/lib/old/Select/SelectFieldFormik.js +19 -0
- package/lib/old/Select/SelectFieldFormik.js.map +1 -0
- package/lib/old/Select/helpers.d.ts +12 -0
- package/lib/old/Select/helpers.js +29 -0
- package/lib/old/Select/helpers.js.map +1 -0
- package/lib/old/TextArea.d.ts +19 -0
- package/lib/old/TextArea.js +25 -0
- package/lib/old/TextArea.js.map +1 -0
- package/lib/old/TextAreaFormik.d.ts +9 -0
- package/lib/old/TextAreaFormik.js +11 -0
- package/lib/old/TextAreaFormik.js.map +1 -0
- package/lib/old/index.d.ts +34 -0
- package/lib/old/index.js +18 -0
- package/lib/old/index.js.map +1 -1
- package/package.json +1 -1
- /package/lib/{components/AutocompleteField.module.scss → old/AutocompleteFieldLegacy.module.scss} +0 -0
- /package/lib/{components/Checkbox.module.scss → old/CheckboxLegacy.module.scss} +0 -0
- /package/lib/{components/Modal.module.scss → old/ModalLegacy.module.scss} +0 -0
- /package/lib/{components/NumberField.module.scss → old/NumberFieldLegacy.module.scss} +0 -0
- /package/lib/{components/Select/CheckableSelectField.module.scss → old/Select/CheckableSelectFieldLegacy.module.scss} +0 -0
- /package/lib/{components/Select/Common.module.scss → old/Select/CommonLegacy.module.scss} +0 -0
- /package/lib/{components/Select/MultiSelectField.module.scss → old/Select/MultiSelectFieldLegacy.module.scss} +0 -0
- /package/lib/{components/Select/SelectField.module.scss → old/Select/SelectFieldLegacy.module.scss} +0 -0
- /package/lib/{components/TextArea.module.scss → old/TextAreaLegacy.module.scss} +0 -0
|
@@ -27,7 +27,7 @@ export const SelectCluster = ({ clusterVersions, clusterName, clusterNames, isRe
|
|
|
27
27
|
})), [clusterVersions, clusterNames]);
|
|
28
28
|
const { status, value } = getSafeValue(clusterName, clusterNames);
|
|
29
29
|
const disabled = isReadOnly || status === 'disabled';
|
|
30
|
-
return (React.createElement(SelectField, { name: "cluster", label: "Select Cluster", showAriaLabel: true,
|
|
30
|
+
return (React.createElement(SelectField, { name: "cluster", label: "Select Cluster", showAriaLabel: true, "data-test": "select-cluster", className: cn(styles.select, { [styles.disabled]: disabled }), classNames: {
|
|
31
31
|
menuPortal: () => styles.menuPortal,
|
|
32
32
|
}, disabled: disabled, iconLeft: CheckCircle, iconLeftAriaLabel: "Select cluster", iconLeftContainerClassName: styles.selectIconLeftContainer, iconLeftClassName: cn(styles.selectIconLeft, {
|
|
33
33
|
[styles.disabled]: status === 'disabled',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectCluster.js","sourceRoot":"","sources":["../../../../src/components/AppHeader/SelectCluster/SelectCluster.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,KAAK,EAAE,EAAM,OAAO,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,OAAO,MAAM,MAAM,6BAA6B,CAAA;AAEhD,MAAM,YAAY,GAAG,CACnB,WAA0B,EAC1B,YAA6B,EAI7B,EAAE;IACF,IAAI,CAAC,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAA,EAAE,CAAC;QAC1B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA;IACrD,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO;YACL,MAAM,EAAE,cAAc;YACtB,KAAK,EAAE,gBAAgB;SACxB,CAAA;IACH,CAAC;IAED,OAAO;QACL,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc;QACzE,KAAK,EAAE,WAAW;KACnB,CAAA;AACH,CAAC,CAAA;AAUD,MAAM,CAAC,MAAM,aAAa,GAA2B,CAAC,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC5H,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CACH,CAAC,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClC,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,YAAY,EACV,eAAe,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CACzC,2CAAgB,iBAAiB,IAAE,eAAe,CAAC,IAAI,CAAC,CAAQ,CACjE,CAAC,CAAC,CAAC,CACF,oBAAC,cAAc,IAAC,IAAI,EAAC,OAAO,GAAG,CAChC;KACJ,CAAC,CAAC,EACL,CAAC,eAAe,EAAE,YAAY,CAAC,CAChC,CAAA;IAED,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;IACjE,MAAM,QAAQ,GAAG,UAAU,IAAI,MAAM,KAAK,UAAU,CAAA;IAEpD,OAAO,CACL,oBAAC,WAAW,IACV,IAAI,EAAC,SAAS,EACd,KAAK,EAAC,gBAAgB,EACtB,aAAa,
|
|
1
|
+
{"version":3,"file":"SelectCluster.js","sourceRoot":"","sources":["../../../../src/components/AppHeader/SelectCluster/SelectCluster.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,KAAK,EAAE,EAAM,OAAO,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,OAAO,MAAM,MAAM,6BAA6B,CAAA;AAEhD,MAAM,YAAY,GAAG,CACnB,WAA0B,EAC1B,YAA6B,EAI7B,EAAE;IACF,IAAI,CAAC,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAA,EAAE,CAAC;QAC1B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA;IACrD,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO;YACL,MAAM,EAAE,cAAc;YACtB,KAAK,EAAE,gBAAgB;SACxB,CAAA;IACH,CAAC;IAED,OAAO;QACL,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc;QACzE,KAAK,EAAE,WAAW;KACnB,CAAA;AACH,CAAC,CAAA;AAUD,MAAM,CAAC,MAAM,aAAa,GAA2B,CAAC,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC5H,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CACH,CAAC,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClC,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,YAAY,EACV,eAAe,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CACzC,2CAAgB,iBAAiB,IAAE,eAAe,CAAC,IAAI,CAAC,CAAQ,CACjE,CAAC,CAAC,CAAC,CACF,oBAAC,cAAc,IAAC,IAAI,EAAC,OAAO,GAAG,CAChC;KACJ,CAAC,CAAC,EACL,CAAC,eAAe,EAAE,YAAY,CAAC,CAChC,CAAA;IAED,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;IACjE,MAAM,QAAQ,GAAG,UAAU,IAAI,MAAM,KAAK,UAAU,CAAA;IAEpD,OAAO,CACL,oBAAC,WAAW,IACV,IAAI,EAAC,SAAS,EACd,KAAK,EAAC,gBAAgB,EACtB,aAAa,qBACH,gBAAgB,EAC1B,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,EAC7D,UAAU,EAAE;YACV,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU;SACpC,EACD,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,WAAW,EACrB,iBAAiB,EAAC,gBAAgB,EAClC,0BAA0B,EAAE,MAAM,CAAC,uBAAuB,EAC1D,iBAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE;YAC3C,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,UAAU;YACxC,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,KAAK,cAAc;SACjD,CAAC,EACF,WAAW,EAAE,KAAK,EAClB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,GACZ,CACH,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React, { FocusEvent, ReactNode } from 'react';
|
|
2
2
|
import { FormatOptionLabelMeta } from 'react-select';
|
|
3
3
|
import { HelpProps } from './Help';
|
|
4
|
-
import { SelectFieldSize } from './Select/SelectField';
|
|
5
4
|
import { FieldHeaderProps } from './FieldHeader';
|
|
6
5
|
export type AutocompleteFieldOption = {
|
|
7
6
|
label: string;
|
|
@@ -10,7 +9,6 @@ export type AutocompleteFieldOption = {
|
|
|
10
9
|
export type RenderOptionFunction<O = AutocompleteFieldOption> = (highlightedLabelText: ReactNode, option: O extends AutocompleteFieldOption ? O : never, labelMeta: FormatOptionLabelMeta<AutocompleteFieldOption>) => ReactNode;
|
|
11
10
|
export type AutocompleteFieldProps = {
|
|
12
11
|
'data-test'?: string;
|
|
13
|
-
size?: SelectFieldSize;
|
|
14
12
|
className?: string;
|
|
15
13
|
disabled?: boolean;
|
|
16
14
|
error?: string;
|
|
@@ -31,7 +29,7 @@ export type AutocompleteFieldProps = {
|
|
|
31
29
|
value?: string | null;
|
|
32
30
|
placeholder?: string;
|
|
33
31
|
openMenuOnClick?: boolean;
|
|
34
|
-
} & Omit<FieldHeaderProps, 'id'>;
|
|
32
|
+
} & Omit<FieldHeaderProps, 'id' | 'size'>;
|
|
35
33
|
type GetSelectedOptionFromValueProps = {
|
|
36
34
|
value?: string | null;
|
|
37
35
|
optionsMap: {
|
|
@@ -4,7 +4,7 @@ import { useUID } from 'react-uid';
|
|
|
4
4
|
import cn from 'classnames';
|
|
5
5
|
import { Search, X } from 'react-feather';
|
|
6
6
|
import useIsomorphicLayoutEffect from 'react-use/lib/useIsomorphicLayoutEffect';
|
|
7
|
-
import styles from './AutocompleteField.module.
|
|
7
|
+
import styles from './AutocompleteField.module.css';
|
|
8
8
|
import { Error, errorId } from './Error';
|
|
9
9
|
import { canUseDOM } from '../utils/ssr';
|
|
10
10
|
import { IconButton } from './IconButton';
|
|
@@ -39,7 +39,7 @@ const DropdownIndicator = (props) => {
|
|
|
39
39
|
const ClearIndicator = ({ innerProps }) => {
|
|
40
40
|
// Visually impaired people will use the keyboard (backspace) to remove the value. We do not want to confuse them by allowing to focus this button.
|
|
41
41
|
// @ts-ignore
|
|
42
|
-
return React.createElement(IconButton, { ...innerProps, icon: X, ariaHidden: true, variant: "ghost", className: styles.clear, tabIndex: -1 });
|
|
42
|
+
return React.createElement(IconButton, { ...innerProps, icon: X, ariaHidden: true, variant: "ghost", size: "small", className: styles.clear, tabIndex: -1 });
|
|
43
43
|
};
|
|
44
44
|
export const highlightOptionText = (labelText, inputValue) => {
|
|
45
45
|
const separator = '<%>';
|
|
@@ -54,7 +54,7 @@ export const highlightOptionText = (labelText, inputValue) => {
|
|
|
54
54
|
}), key: val + `${i}` }, val)))
|
|
55
55
|
: labelText;
|
|
56
56
|
};
|
|
57
|
-
export const AutocompleteField = ({ 'data-test': dataTest = 'autocomplete-field', className, disabled, error, errorClassName, isClearable, label, labelClassName, helperText,
|
|
57
|
+
export const AutocompleteField = ({ 'data-test': dataTest = 'autocomplete-field', className, disabled, error, errorClassName, isClearable, label, labelClassName, helperText, menuPortalTarget = 'body', name, onChange, onFocus, onBlur, onInputChange, options, required, value, placeholder = 'Search...', showAriaLabel = false, renderOption, openMenuOnClick = true, ...rest }) => {
|
|
58
58
|
// when the user clicks on an input with the value, the value should disappear,
|
|
59
59
|
// but then it should appear after the user selects something or blurs the input
|
|
60
60
|
const [isValueHidden, setValueHidden] = useState(false);
|
|
@@ -140,14 +140,13 @@ export const AutocompleteField = ({ 'data-test': dataTest = 'autocomplete-field'
|
|
|
140
140
|
[styles.withError]: 'error' in props,
|
|
141
141
|
[styles.disabled]: disabled,
|
|
142
142
|
[styles.hasError]: error,
|
|
143
|
-
[styles.small]: size === 'small',
|
|
144
143
|
[styles.empty]: !value,
|
|
145
144
|
},
|
|
146
145
|
// Menu container is either this select itself or any other element
|
|
147
146
|
// We can always add this class to the select itself because even if the menu container is any parent it won't break it
|
|
148
147
|
// However, if it is the select itself, it will properly add necessary specificity level to the menu styles.
|
|
149
148
|
styles.menuContainer, className) },
|
|
150
|
-
React.createElement(FieldHeader, { label: label, id: id, size:
|
|
149
|
+
React.createElement(FieldHeader, { label: label, id: id, size: "small", "data-test": dataTest, helperText: helperText, showAriaLabel: showAriaLabel, labelClassName: labelClassName }),
|
|
151
150
|
React.createElement("div", { className: styles.selectBlock },
|
|
152
151
|
React.createElement(ReactSelect, { onInputChange: onInputChange, formatOptionLabel: formatOptionLabelFn, styles: {
|
|
153
152
|
...props.styles,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteField.js","sourceRoot":"","sources":["../../src/components/AutocompleteField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAwC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACtF,OAAO,WAAW,EAAE,EAAc,UAAU,EAAmE,MAAM,cAAc,CAAA;AACnI,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,yBAAyB,MAAM,yCAAyC,CAAA;AAC/E,OAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"AutocompleteField.js","sourceRoot":"","sources":["../../src/components/AutocompleteField.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
.container {
|
|
2
|
+
color: var(--hive-color-text-v4);
|
|
3
|
+
box-sizing: border-box;
|
|
4
|
+
font-family: var(--hive-font-family-text);
|
|
5
|
+
font-size: var(--hive-font-size-body-small);
|
|
6
|
+
font-weight: var(--hive-font-weight-text-regular);
|
|
7
|
+
line-height: normal;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.container .selectBlock {
|
|
11
|
+
display: flex;
|
|
12
|
+
flex-direction: row;
|
|
13
|
+
align-items: center;
|
|
14
|
+
position: relative;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.clear.clear {
|
|
18
|
+
--button-size: calc(var(--hive-grid) * 6);
|
|
19
|
+
|
|
20
|
+
margin-left: calc(var(--hive-grid) * 1);
|
|
21
|
+
border-radius: var(--hive-border-radius-pill);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.container :global(.hz-autocomplete-field) {
|
|
25
|
+
flex: 1 1 auto;
|
|
26
|
+
font-size: var(--hive-font-size-body-small);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.container :global(.hz-autocomplete-field__value-container) {
|
|
30
|
+
padding: 0;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.container :global(.hz-autocomplete-field__single-value) {
|
|
34
|
+
color: var(--hive-color-text-v4);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.container :global(.hz-autocomplete-field__placeholder) {
|
|
38
|
+
color: var(--hive-color-text-secondary-v4);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.container :global(.hz-autocomplete-field__indicator-separator) {
|
|
42
|
+
display: none;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.container :global(.hz-autocomplete-field__control) {
|
|
46
|
+
cursor: text;
|
|
47
|
+
color: var(--hive-color-text-v4);
|
|
48
|
+
min-height: calc(var(--hive-grid) * 7.5);
|
|
49
|
+
padding-left: calc(var(--hive-grid) * 3);
|
|
50
|
+
padding-right: calc(var(--hive-grid) * 2);
|
|
51
|
+
box-sizing: border-box;
|
|
52
|
+
border: var(--hive-border-width) solid var(--hive-color-border-v4);
|
|
53
|
+
border-radius: var(--hive-border-radius);
|
|
54
|
+
background-color: var(--hive-color-neutral-white-v4);
|
|
55
|
+
transition: none;
|
|
56
|
+
box-shadow: none;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.container :global(.hz-autocomplete-field__control--menu-is-open) {
|
|
60
|
+
border-radius: var(--hive-border-radius) var(--hive-border-radius) 0 0;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.container :global(.hz-autocomplete-field__dropdown-indicator) {
|
|
64
|
+
color: var(--hive-color-text-secondary-v4);
|
|
65
|
+
padding: 0 calc(var(--hive-grid) * 0.5);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.container.disabled {
|
|
69
|
+
opacity: 0.5;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.container.disabled :global(.hz-autocomplete-field__control) {
|
|
73
|
+
color: var(--hive-color-text-secondary-v4);
|
|
74
|
+
background-color: var(--hive-color-neutral-white-v4);
|
|
75
|
+
border-color: var(--hive-color-border-v4);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.container.hasError :global(.hz-autocomplete-field__control) {
|
|
79
|
+
border-color: var(--hive-color-error-v4);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.container :global(.hz-autocomplete-field__control):hover,
|
|
83
|
+
.container.hover :global(.hz-autocomplete-field__control) {
|
|
84
|
+
border-color: var(--hive-color-text-v4);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.container.focus :global(.hz-autocomplete-field__control),
|
|
88
|
+
.container :global(.hz-autocomplete-field__control--is-focused) {
|
|
89
|
+
outline: none;
|
|
90
|
+
border-color: var(--hive-color-primary-v4);
|
|
91
|
+
box-shadow: 0 0 0 3px oklch(from var(--hive-color-primary-v4) l c h / 0.5);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.container :global(.hz-autocomplete-field__control--menu-is-open),
|
|
95
|
+
.container :global(.hz-autocomplete-field__control--is-focused.hz-autocomplete-field__control--menu-is-open) {
|
|
96
|
+
border-color: var(--hive-color-border-v4);
|
|
97
|
+
box-shadow: none;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.container.hasError.focus :global(.hz-autocomplete-field__control),
|
|
101
|
+
.container.hasError :global(.hz-autocomplete-field__control--is-focused) {
|
|
102
|
+
border-color: var(--hive-color-error-v4);
|
|
103
|
+
box-shadow: 0 0 0 3px oklch(from var(--hive-color-error-v4) l c h / 0.4);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.container.hasError :global(.hz-autocomplete-field__control--menu-is-open) {
|
|
107
|
+
border-color: var(--hive-color-error-v4);
|
|
108
|
+
box-shadow: none;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.menuContainer :global(.hz-autocomplete-field__menu-portal) {
|
|
112
|
+
z-index: 2000;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.menuContainer.menuContainer :global(.hz-autocomplete-field__menu) {
|
|
116
|
+
margin-top: 0;
|
|
117
|
+
margin-bottom: calc(var(--hive-grid) * 1);
|
|
118
|
+
border: var(--hive-border-width) solid var(--hive-color-border-v4);
|
|
119
|
+
border-top: none;
|
|
120
|
+
border-radius: 0 0 var(--hive-border-radius) var(--hive-border-radius);
|
|
121
|
+
background-color: var(--hive-color-neutral-white-v4);
|
|
122
|
+
overflow: hidden;
|
|
123
|
+
box-shadow:
|
|
124
|
+
0 4px 12px oklch(0 0 0 / 0.08),
|
|
125
|
+
0 1px 3px oklch(0 0 0 / 0.06);
|
|
126
|
+
z-index: 1000;
|
|
127
|
+
font-family: var(--hive-font-family-text);
|
|
128
|
+
font-size: var(--hive-font-size-body-small);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.menuContainer :global(.hz-autocomplete-field__menu-list) {
|
|
132
|
+
padding: 0;
|
|
133
|
+
color: var(--hive-color-text-v4);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.menuContainer.menuContainer.menuContainer :global(.hz-autocomplete-field__option),
|
|
137
|
+
.menuContainer.menuContainer.menuContainer :global(.hz-autocomplete-field__menu-notice) {
|
|
138
|
+
min-height: calc(var(--hive-grid) * 10);
|
|
139
|
+
line-height: calc(var(--hive-grid) * 10);
|
|
140
|
+
padding: 0 calc(var(--hive-grid) * 3);
|
|
141
|
+
background-color: transparent;
|
|
142
|
+
outline: none;
|
|
143
|
+
text-align: left;
|
|
144
|
+
white-space: pre;
|
|
145
|
+
cursor: pointer;
|
|
146
|
+
color: var(--hive-color-text-v4);
|
|
147
|
+
text-decoration: none;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.menuContainer.menuContainer.menuContainer :global(.hz-autocomplete-field__option--is-focused) {
|
|
151
|
+
background-color: var(--hive-color-surface-hover-v4);
|
|
152
|
+
outline: none;
|
|
153
|
+
box-shadow: none !important;
|
|
154
|
+
text-decoration: none !important;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.menuContainer.menuContainer.menuContainer :global(.hz-autocomplete-field__option--is-selected) {
|
|
158
|
+
background-color: var(--hive-color-surface-active-v4);
|
|
159
|
+
color: var(--hive-color-text-v4);
|
|
160
|
+
font-weight: var(--hive-font-weight-text-medium);
|
|
161
|
+
text-decoration: none !important;
|
|
162
|
+
box-shadow: none !important;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.menuContainer.menuContainer.menuContainer :global(.hz-autocomplete-field__matched-option-text) {
|
|
166
|
+
font-weight: var(--hive-font-weight-text-bold);
|
|
167
|
+
color: var(--hive-color-text-v4);
|
|
168
|
+
text-decoration: none;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.withError {
|
|
172
|
+
position: relative;
|
|
173
|
+
padding-bottom: calc(var(--hive-grid) * 4.75 + var(--hive-grid));
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.withError .errorContainer {
|
|
177
|
+
position: absolute;
|
|
178
|
+
bottom: 0;
|
|
179
|
+
left: 0;
|
|
180
|
+
overflow: hidden;
|
|
181
|
+
height: calc(var(--hive-grid) * 4.75);
|
|
182
|
+
width: 100%;
|
|
183
|
+
}
|
|
@@ -51,6 +51,7 @@ export type ButtonCommonProps = {
|
|
|
51
51
|
tooltip?: string;
|
|
52
52
|
active?: boolean;
|
|
53
53
|
truncate?: boolean;
|
|
54
|
+
fullWidth?: boolean;
|
|
54
55
|
} & (ButtonDisabledProps | ButtonNotDisabledProps) & Pick<HTMLAttributes<HTMLAnchorElement | HTMLButtonElement>, 'className' | 'onClick' | 'tabIndex' | 'style'>;
|
|
55
56
|
export type ButtonTypeAnchorProps = {
|
|
56
57
|
component: 'a';
|
package/lib/components/Button.js
CHANGED
|
@@ -22,7 +22,7 @@ const sizeClass = {
|
|
|
22
22
|
small: styles.sizeSmall,
|
|
23
23
|
regular: styles.sizeRegular,
|
|
24
24
|
};
|
|
25
|
-
export const Button = forwardRef(({ component: Component = 'button', className, bodyClassName, outline = 'outline', children, disabled, disabledTooltip, disabledTooltipVisible, disabledTooltipPlacement, iconLeft, iconLeftAriaLabel, iconLeftColor, iconLeftClassName, iconRight, iconRightAriaLabel, iconRightColor, iconRightClassName, rel = 'noopener', target, type = 'button', loading, variant = 'contained', color = 'primary', size = 'regular', tooltip, active, truncate = true, ...rest }, ref) => {
|
|
25
|
+
export const Button = forwardRef(({ component: Component = 'button', className, bodyClassName, outline = 'outline', children, disabled, disabledTooltip, disabledTooltipVisible, disabledTooltipPlacement, iconLeft, iconLeftAriaLabel, iconLeftColor, iconLeftClassName, iconRight, iconRightAriaLabel, iconRightColor, iconRightClassName, rel = 'noopener', target, type = 'button', loading, variant = 'contained', color = 'primary', size = 'regular', tooltip, active, truncate = true, fullWidth, ...rest }, ref) => {
|
|
26
26
|
const tooltipId = useUID();
|
|
27
27
|
const iconSize = size === 'small' ? 'small' : 'smallMedium';
|
|
28
28
|
const relFinal = Array.isArray(rel) ? rel.join(' ') : rel;
|
|
@@ -31,6 +31,7 @@ export const Button = forwardRef(({ component: Component = 'button', className,
|
|
|
31
31
|
React.createElement(Component, { "data-test": "button", className: cn(styles.button, variantClass[variant], colorClass[color], sizeClass[size], {
|
|
32
32
|
[styles.active]: active,
|
|
33
33
|
[styles.inset]: outline === 'inset',
|
|
34
|
+
[styles.fullWidth]: fullWidth,
|
|
34
35
|
}, className), "aria-describedby": disabled ? tooltipId : undefined, disabled: disabled !== null && disabled !== void 0 ? disabled : loading, rel: Component === 'a' ? relFinal : undefined, target: Component === 'a' ? target : undefined, type: Component === 'button' ? type : undefined, ref: ref, ...rest },
|
|
35
36
|
React.createElement("span", { className: cn(styles.body, bodyClassName) },
|
|
36
37
|
loading && !loadingAnimationOnRight && React.createElement(Loader, { className: styles.iconLeft, size: iconSize }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../../src/components/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAwB,UAAU,EAAgC,MAAM,OAAO,CAAA;AAC7F,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAElC,OAAO,EAAE,IAAI,EAAuB,MAAM,QAAQ,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAe,MAAM,WAAW,CAAA;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAGjC,OAAO,MAAM,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../../src/components/Button.tsx"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { useUID } from 'react-uid';
|
|
|
4
4
|
import classNames from 'classnames';
|
|
5
5
|
import { Error, errorId } from './Error';
|
|
6
6
|
import { Help, helpTooltipId } from './Help';
|
|
7
|
-
import styles from './Checkbox.module.
|
|
7
|
+
import styles from './Checkbox.module.css';
|
|
8
8
|
import { TruncatedText } from './TruncatedText';
|
|
9
9
|
/**
|
|
10
10
|
* ### Purpose
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../src/components/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAyC,MAAM,EAAc,UAAU,EAAE,MAAM,OAAO,CAAA;AACpG,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,UAAU,MAAM,YAAY,CAAA;AAEnC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EAAE,IAAI,EAAa,aAAa,EAAE,MAAM,QAAQ,CAAA;AAGvD,OAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../src/components/Checkbox.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
.wrapper {
|
|
2
|
+
--checkbox-size: calc(var(--hive-grid) * 4);
|
|
3
|
+
--checkbox-radius: calc(var(--hive-grid) * 1);
|
|
4
|
+
--checkbox-padding: 1px;
|
|
5
|
+
--checkbox-transition-duration: 120ms;
|
|
6
|
+
--checkbox-shadow: 0 1px 2px oklch(0 0 0 / 0.05);
|
|
7
|
+
--checkbox-shadow-checked: 0 1px 1px oklch(0 0 0 / 0.05);
|
|
8
|
+
|
|
9
|
+
display: flex;
|
|
10
|
+
flex-direction: row;
|
|
11
|
+
align-items: center;
|
|
12
|
+
gap: calc(var(--hive-grid) * 2);
|
|
13
|
+
cursor: pointer;
|
|
14
|
+
box-sizing: border-box;
|
|
15
|
+
color: var(--hive-color-text-v4);
|
|
16
|
+
font-family: var(--hive-font-family-text);
|
|
17
|
+
font-size: var(--hive-font-size-body-small);
|
|
18
|
+
font-weight: var(--hive-font-weight-text-regular);
|
|
19
|
+
line-height: var(--hive-line-height-body-small);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.wrapper * {
|
|
23
|
+
box-sizing: border-box;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.wrapper input {
|
|
27
|
+
position: absolute;
|
|
28
|
+
width: 1px;
|
|
29
|
+
height: 1px;
|
|
30
|
+
padding: 0;
|
|
31
|
+
margin: -1px;
|
|
32
|
+
overflow: hidden;
|
|
33
|
+
clip: rect(0, 0, 0, 0);
|
|
34
|
+
white-space: nowrap;
|
|
35
|
+
border: 0;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.wrapper .checkmark {
|
|
39
|
+
order: -1;
|
|
40
|
+
flex-shrink: 0;
|
|
41
|
+
width: var(--checkbox-size);
|
|
42
|
+
height: var(--checkbox-size);
|
|
43
|
+
padding: var(--checkbox-padding);
|
|
44
|
+
border: var(--hive-border-width) solid var(--hive-color-border-v4);
|
|
45
|
+
border-radius: var(--checkbox-radius);
|
|
46
|
+
background-color: var(--hive-color-neutral-white-v4);
|
|
47
|
+
color: var(--hive-color-neutral-white-v4);
|
|
48
|
+
box-shadow: var(--checkbox-shadow);
|
|
49
|
+
transition:
|
|
50
|
+
background-color var(--checkbox-transition-duration) ease,
|
|
51
|
+
border-color var(--checkbox-transition-duration) ease,
|
|
52
|
+
box-shadow var(--checkbox-transition-duration) ease;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.wrapper > input:checked ~ .checkmark,
|
|
56
|
+
.wrapper.indeterminate > input ~ .checkmark {
|
|
57
|
+
background-color: var(--hive-color-primary-v4);
|
|
58
|
+
border-color: var(--hive-color-primary-v4);
|
|
59
|
+
box-shadow: var(--checkbox-shadow-checked);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.wrapper:hover > input:not(:disabled) ~ .checkmark,
|
|
63
|
+
.wrapper.hover > input:not(:disabled) ~ .checkmark {
|
|
64
|
+
border-color: var(--hive-color-primary-v4);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.wrapper.error > input ~ .checkmark {
|
|
68
|
+
border-color: var(--hive-color-error-v4);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.wrapper > input:focus-visible ~ .checkmark,
|
|
72
|
+
.wrapper.focus > input ~ .checkmark {
|
|
73
|
+
border-color: var(--hive-color-primary-v4);
|
|
74
|
+
box-shadow: 0 0 0 3px oklch(from var(--hive-color-primary-v4) l c h / 0.5);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.wrapper.disabled {
|
|
78
|
+
cursor: not-allowed;
|
|
79
|
+
opacity: 0.5;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.wrapper .name {
|
|
83
|
+
overflow: hidden;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.wrapper .helperText {
|
|
87
|
+
margin-left: calc(var(--hive-grid) * 1);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.errorContainer {
|
|
91
|
+
margin-top: calc(var(--hive-grid) * 0.5);
|
|
92
|
+
margin-left: calc(var(--hive-grid) * 6);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.withError {
|
|
96
|
+
margin-bottom: calc(var(--hive-grid) * 2);
|
|
97
|
+
}
|
|
@@ -1,13 +1,23 @@
|
|
|
1
|
-
import { FC, ReactNode } from 'react';
|
|
1
|
+
import { FC, ReactElement, ReactNode, AnchorHTMLAttributes } from 'react';
|
|
2
2
|
import { Props as ReactModalProps } from 'react-modal';
|
|
3
3
|
import { DataTestProp } from '../helpers/types';
|
|
4
4
|
import { ButtonProps, ButtonTypeButtonProps } from './Button';
|
|
5
5
|
import { IconProps } from './Icon';
|
|
6
6
|
export declare const setAppElement: (appElement: string | HTMLElement) => void;
|
|
7
7
|
export type ModalActionProps = ButtonProps<ButtonTypeButtonProps>;
|
|
8
|
+
export type ModalIntent = 'action' | 'confirm' | 'info' | 'danger' | 'success';
|
|
9
|
+
export type ModalHelperLinkProps = {
|
|
10
|
+
label: ReactNode;
|
|
11
|
+
href: string;
|
|
12
|
+
ariaLabel?: string;
|
|
13
|
+
target?: AnchorHTMLAttributes<HTMLAnchorElement>['target'];
|
|
14
|
+
rel?: AnchorHTMLAttributes<HTMLAnchorElement>['rel'];
|
|
15
|
+
};
|
|
8
16
|
export type ModalProps = {
|
|
9
17
|
actions?: ModalActionProps[];
|
|
10
18
|
hideActions?: boolean;
|
|
19
|
+
hideHeader?: boolean;
|
|
20
|
+
hideFooter?: boolean;
|
|
11
21
|
autoFocus?: boolean;
|
|
12
22
|
children?: ReactNode;
|
|
13
23
|
closable?: boolean;
|
|
@@ -18,9 +28,16 @@ export type ModalProps = {
|
|
|
18
28
|
footerClassName?: string;
|
|
19
29
|
overlayClassName?: string;
|
|
20
30
|
className?: string;
|
|
31
|
+
cancelLabel?: string | ReactElement;
|
|
21
32
|
icon?: IconProps['icon'];
|
|
22
33
|
iconAriaLabel?: IconProps['ariaLabel'];
|
|
23
34
|
onClose: ReactModalProps['onRequestClose'];
|
|
24
|
-
title
|
|
35
|
+
title?: string;
|
|
36
|
+
description?: ReactNode;
|
|
37
|
+
eyebrow?: ReactNode;
|
|
38
|
+
intent?: ModalIntent;
|
|
39
|
+
helperLink?: ModalHelperLinkProps;
|
|
40
|
+
header?: ReactNode;
|
|
41
|
+
footer?: ReactNode;
|
|
25
42
|
} & DataTestProp & Exclude<ReactModalProps, 'onRequestClose' | 'shouldFocusAfterRender' | 'shouldReturnFocusAfterClose'>;
|
|
26
43
|
export declare const Modal: FC<ModalProps>;
|
package/lib/components/Modal.js
CHANGED
|
@@ -1,41 +1,72 @@
|
|
|
1
1
|
import React, { useMemo } from 'react';
|
|
2
2
|
import ReactModal from 'react-modal';
|
|
3
3
|
import cn from 'classnames';
|
|
4
|
-
import { X } from 'react-feather';
|
|
4
|
+
import { X, ExternalLink } from 'react-feather';
|
|
5
5
|
import { Button } from './Button';
|
|
6
6
|
import { Icon } from './Icon';
|
|
7
|
-
import
|
|
8
|
-
import styles from './Modal.module.scss';
|
|
7
|
+
import styles from './Modal.module.css';
|
|
9
8
|
// Direct re-exporting is breaking tests in MC
|
|
10
9
|
// TODO: Investigate why
|
|
11
10
|
export const setAppElement = (appElement) => ReactModal.setAppElement(appElement);
|
|
11
|
+
const intentClass = {
|
|
12
|
+
action: undefined,
|
|
13
|
+
confirm: styles.intentConfirm,
|
|
14
|
+
info: styles.intentInfo,
|
|
15
|
+
danger: styles.intentDanger,
|
|
16
|
+
success: styles.intentSuccess,
|
|
17
|
+
};
|
|
18
|
+
const intentActionColor = {
|
|
19
|
+
action: 'primary',
|
|
20
|
+
confirm: 'warning',
|
|
21
|
+
info: 'primary',
|
|
22
|
+
danger: 'danger',
|
|
23
|
+
success: 'primary',
|
|
24
|
+
};
|
|
12
25
|
/*
|
|
13
26
|
* ### Purpose
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* Usually modals are used to drive a complex action. In case there is a simple action (e.g. confirmation), consider using a Dialog.
|
|
27
|
+
* Modal surfaces a focused, secondary user-story on top of the current page. Use it for
|
|
28
|
+
* confirmations, short forms, or any flow that should pause the underlying page.
|
|
17
29
|
*
|
|
18
30
|
* ### General Info
|
|
19
|
-
* -
|
|
20
|
-
*
|
|
21
|
-
* -
|
|
22
|
-
*
|
|
31
|
+
* - Three optional sections — `header`, body (`children`) and `footer` — are independently
|
|
32
|
+
* customizable. Omit a section (or pass `hideHeader` / `hideFooter`) to remove it entirely.
|
|
33
|
+
* - The default header renders structured `title`, `eyebrow`, `description` and `icon` props.
|
|
34
|
+
* Pass a `header` ReactNode to fully replace the header section (the close button is preserved).
|
|
35
|
+
* - The default footer renders `actions` plus an optional `helperLink`. Pass a `footer`
|
|
36
|
+
* ReactNode to fully replace it, or `hideActions` / no `helperLink` to drop pieces.
|
|
37
|
+
* - Underlying page is blocked by an overlay; click overlay or press Esc to close (when `closable`).
|
|
23
38
|
*/
|
|
24
|
-
export const Modal = ({ 'data-test': dataTest = 'modal', actions, hideActions = false, autoFocus = true, children, className, closable = true, showCloseButton = true, bodyClassName, headerClassName, contentClassName, footerClassName, icon, iconAriaLabel, onClose, overlayClassName, title, ...rest }) => {
|
|
39
|
+
export const Modal = ({ 'data-test': dataTest = 'modal', actions, hideActions = false, hideHeader = false, hideFooter = false, autoFocus = true, children, className, closable = true, showCloseButton = true, bodyClassName, headerClassName, contentClassName, footerClassName, icon, iconAriaLabel, onClose, overlayClassName, cancelLabel = 'Cancel', title, description, eyebrow, intent = 'action', helperLink, header, footer, ...rest }) => {
|
|
40
|
+
var _a, _b;
|
|
25
41
|
const shouldAutoFocusCancelButton = useMemo(() => autoFocus && !(actions === null || actions === void 0 ? void 0 : actions.some((action) => action === null || action === void 0 ? void 0 : action.autoFocus)), [autoFocus, actions]);
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
42
|
+
const hasIcon = !!(icon && iconAriaLabel);
|
|
43
|
+
const hasBody = children !== undefined && children !== null && children !== false;
|
|
44
|
+
const hasStructuredHeader = !!(title || eyebrow || description || hasIcon);
|
|
45
|
+
const hasCustomHeader = header !== undefined && header !== null && header !== false;
|
|
46
|
+
const renderHeader = !hideHeader && (hasCustomHeader || hasStructuredHeader);
|
|
47
|
+
const hasCustomFooter = footer !== undefined && footer !== null && footer !== false;
|
|
48
|
+
const hasStructuredFooter = !hideActions || !!helperLink;
|
|
49
|
+
const renderFooter = !hideFooter && (hasCustomFooter || hasStructuredFooter);
|
|
50
|
+
const renderClose = closable && showCloseButton;
|
|
51
|
+
return (React.createElement(ReactModal, { portalClassName: styles.portal, className: cn(styles.modal, intent !== 'action' && intentClass[intent], className), contentLabel: title, onRequestClose: onClose, overlayClassName: cn(styles.overlay, overlayClassName), shouldCloseOnEsc: closable, shouldCloseOnOverlayClick: closable, shouldFocusAfterRender: false, shouldReturnFocusAfterClose: true, ...rest },
|
|
52
|
+
renderClose && (React.createElement("button", { type: "button", "data-test": `${dataTest}-button-close`, className: styles.close, "aria-label": "Close icon", onClick: (e) => onClose === null || onClose === void 0 ? void 0 : onClose(e) },
|
|
53
|
+
React.createElement(X, { size: 16, "aria-hidden": true }))),
|
|
54
|
+
renderHeader &&
|
|
55
|
+
(hasCustomHeader ? (React.createElement("div", { "data-test": "modal-header", className: headerClassName }, header)) : (React.createElement("div", { "data-test": "modal-header", className: cn(styles.header, headerClassName) },
|
|
56
|
+
React.createElement("div", { className: styles.headerRow },
|
|
57
|
+
hasIcon && (React.createElement("div", { className: styles.iconBox },
|
|
58
|
+
React.createElement(Icon, { "data-test": "modal-header-icon", icon: icon, ariaLabel: iconAriaLabel }))),
|
|
59
|
+
React.createElement("div", { className: styles.headerText },
|
|
60
|
+
eyebrow && (React.createElement("p", { "data-test": "modal-header-eyebrow", className: styles.eyebrow }, eyebrow)),
|
|
61
|
+
title && (React.createElement("h3", { "data-test": "modal-header-title", className: styles.title }, title)),
|
|
62
|
+
description && (React.createElement("p", { "data-test": "modal-header-description", className: styles.description }, description))))))),
|
|
63
|
+
hasBody && (React.createElement("div", { "data-test": "modal-content", className: cn(styles.body, bodyClassName, contentClassName) }, children)),
|
|
64
|
+
renderFooter && (React.createElement("div", { "data-test": "modal-footer", className: cn(styles.footer, footerClassName) }, hasCustomFooter ? (footer) : (React.createElement(React.Fragment, null,
|
|
65
|
+
helperLink && (React.createElement("a", { "data-test": "modal-helper-link", className: styles.helperLink, href: helperLink.href, target: (_a = helperLink.target) !== null && _a !== void 0 ? _a : '_blank', rel: (_b = helperLink.rel) !== null && _b !== void 0 ? _b : 'noopener noreferrer', "aria-label": helperLink.ariaLabel },
|
|
66
|
+
helperLink.label,
|
|
67
|
+
React.createElement(ExternalLink, { size: 12, "aria-hidden": true }))),
|
|
68
|
+
!hideActions && (React.createElement("div", { className: styles.footerActions },
|
|
69
|
+
React.createElement(Button, { autoFocus: shouldAutoFocusCancelButton, "data-test": "modal-button-cancel", variant: "ghost", color: "secondary", size: "small", onClick: (e) => onClose === null || onClose === void 0 ? void 0 : onClose(e) }, cancelLabel), actions === null || actions === void 0 ? void 0 :
|
|
70
|
+
actions.map(({ children: actionChildren, size = 'small', color, ...actionPropsRest }, key) => (React.createElement(Button, { key: key, "data-test": "modal-button-action", size: size, color: color !== null && color !== void 0 ? color : intentActionColor[intent], ...actionPropsRest }, actionChildren)))))))))));
|
|
40
71
|
};
|
|
41
72
|
//# sourceMappingURL=Modal.js.map
|