@jetbrains/ring-ui 5.0.55 → 5.0.56
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/components/editable-heading/editable-heading.css +17 -0
- package/components/editable-heading/editable-heading.d.ts +5 -0
- package/components/editable-heading/editable-heading.js +9 -4
- package/dist/editable-heading/editable-heading.d.ts +5 -0
- package/dist/editable-heading/editable-heading.js +13 -6
- package/dist/style.css +1 -1
- package/package.json +2 -2
|
@@ -19,6 +19,23 @@
|
|
|
19
19
|
line-height: 28px;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
.headingWrapperButton {
|
|
23
|
+
margin: 0;
|
|
24
|
+
padding: 0;
|
|
25
|
+
|
|
26
|
+
color: inherit;
|
|
27
|
+
|
|
28
|
+
border: none;
|
|
29
|
+
border-radius: var(--ring-border-radius);
|
|
30
|
+
background: inherit;
|
|
31
|
+
|
|
32
|
+
font-size: inherit;
|
|
33
|
+
|
|
34
|
+
&:focus {
|
|
35
|
+
outline: 1px solid var(--ring-border-hover-color);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
22
39
|
.heading {
|
|
23
40
|
padding: 6px 0;
|
|
24
41
|
|
|
@@ -3,6 +3,10 @@ import { Levels } from '../heading/heading';
|
|
|
3
3
|
import { Size } from '../input/input';
|
|
4
4
|
export { Levels };
|
|
5
5
|
export { Size };
|
|
6
|
+
export interface EditableHeadingTranslations {
|
|
7
|
+
save: string;
|
|
8
|
+
cancel: string;
|
|
9
|
+
}
|
|
6
10
|
export declare type EditableHeadingProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'size'> & {
|
|
7
11
|
level?: Levels;
|
|
8
12
|
headingClassName?: string | null;
|
|
@@ -19,6 +23,7 @@ export declare type EditableHeadingProps = Omit<InputHTMLAttributes<HTMLInputEle
|
|
|
19
23
|
'data-test'?: string | null;
|
|
20
24
|
error?: string;
|
|
21
25
|
renderMenu?: () => React.ReactNode;
|
|
26
|
+
translations?: EditableHeadingTranslations;
|
|
22
27
|
};
|
|
23
28
|
export declare const EditableHeading: (props: EditableHeadingProps) => JSX.Element;
|
|
24
29
|
declare const _default: React.MemoExoticComponent<(props: EditableHeadingProps) => JSX.Element>;
|
|
@@ -11,7 +11,10 @@ export { Levels };
|
|
|
11
11
|
export { Size };
|
|
12
12
|
function noop() { }
|
|
13
13
|
export const EditableHeading = (props) => {
|
|
14
|
-
const { level = Levels.H1, className, headingClassName, inputClassName, children, isEditing = false, isSavingPossible = false, isSaving = false, embedded = false, size = Size.L, onEdit = noop, onSave = noop, onCancel = noop, autoFocus = true, 'data-test': dataTest, error, disabled, renderMenu = () => null,
|
|
14
|
+
const { level = Levels.H1, className, headingClassName, inputClassName, children, isEditing = false, isSavingPossible = false, isSaving = false, embedded = false, size = Size.L, onEdit = noop, onSave = noop, onCancel = noop, autoFocus = true, 'data-test': dataTest, error, disabled, renderMenu = () => null, translations = {
|
|
15
|
+
save: 'Save',
|
|
16
|
+
cancel: 'Cancel'
|
|
17
|
+
}, ...restProps } = props;
|
|
15
18
|
const [shortcutsScope] = React.useState(getUID('ring-editable-heading-'));
|
|
16
19
|
const [isInFocus, setIsInFocus] = React.useState(false);
|
|
17
20
|
const hasError = error !== undefined;
|
|
@@ -50,14 +53,16 @@ export const EditableHeading = (props) => {
|
|
|
50
53
|
|
|
51
54
|
<input className={inputClasses} value={children} autoFocus={autoFocus} data-test={dataTest} disabled={isSaving} onFocus={onInputFocus} onBlur={onInputBlur} {...restProps}/>
|
|
52
55
|
</>)
|
|
53
|
-
: (<
|
|
56
|
+
: (<button type="button" className={styles.headingWrapperButton} onClick={onHeadingClick}>
|
|
57
|
+
<Heading className={headingClasses} level={level} data-test={dataTest}>{children}</Heading>
|
|
58
|
+
</button>)}
|
|
54
59
|
|
|
55
60
|
{!isEditing && (renderMenu())}
|
|
56
61
|
|
|
57
62
|
{isEditing && !embedded && (<>
|
|
58
|
-
<Button className={styles.button} primary disabled={isSaveDisabled} loader={isSaving} onClick={onSave}>{
|
|
63
|
+
<Button className={styles.button} primary disabled={isSaveDisabled} loader={isSaving} onClick={onSave}>{translations.save}</Button>
|
|
59
64
|
|
|
60
|
-
<Button className={styles.button} disabled={isCancelDisabled} onClick={onCancel}>{
|
|
65
|
+
<Button className={styles.button} disabled={isCancelDisabled} onClick={onCancel}>{translations.cancel}</Button>
|
|
61
66
|
</>)}
|
|
62
67
|
</div>
|
|
63
68
|
|
|
@@ -3,6 +3,10 @@ import { Levels } from '../heading/heading';
|
|
|
3
3
|
import { Size } from '../input/input';
|
|
4
4
|
export { Levels };
|
|
5
5
|
export { Size };
|
|
6
|
+
export interface EditableHeadingTranslations {
|
|
7
|
+
save: string;
|
|
8
|
+
cancel: string;
|
|
9
|
+
}
|
|
6
10
|
export declare type EditableHeadingProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'size'> & {
|
|
7
11
|
level?: Levels;
|
|
8
12
|
headingClassName?: string | null;
|
|
@@ -19,6 +23,7 @@ export declare type EditableHeadingProps = Omit<InputHTMLAttributes<HTMLInputEle
|
|
|
19
23
|
'data-test'?: string | null;
|
|
20
24
|
error?: string;
|
|
21
25
|
renderMenu?: () => React.ReactNode;
|
|
26
|
+
translations?: EditableHeadingTranslations;
|
|
22
27
|
};
|
|
23
28
|
export declare const EditableHeading: (props: EditableHeadingProps) => JSX.Element;
|
|
24
29
|
declare const _default: React.MemoExoticComponent<(props: EditableHeadingProps) => JSX.Element>;
|
|
@@ -30,7 +30,7 @@ import 'combokeys';
|
|
|
30
30
|
import '../global/sniffer.js';
|
|
31
31
|
import 'sniffr';
|
|
32
32
|
|
|
33
|
-
var modules_6e69b0fe = {"unit":"8px","editableHeading":"editableHeading_rui_0870","fullSize":"fullSize_rui_0870","isEditing":"isEditing_rui_0870","heading":"heading_rui_0870","disabled":"disabled_rui_0870","input":"input_rui_0870","error":"error_rui_0870","button":"button_rui_0870","errorText":"errorText_rui_0870","level1":"level1_rui_0870","level2":"level2_rui_0870","level3":"level3_rui_0870"};
|
|
33
|
+
var modules_6e69b0fe = {"unit":"8px","editableHeading":"editableHeading_rui_0870","fullSize":"fullSize_rui_0870","isEditing":"isEditing_rui_0870","heading":"heading_rui_0870","headingWrapperButton":"headingWrapperButton_rui_0870","disabled":"disabled_rui_0870","input":"input_rui_0870","error":"error_rui_0870","button":"button_rui_0870","errorText":"errorText_rui_0870","level1":"level1_rui_0870","level2":"level2_rui_0870","level3":"level3_rui_0870"};
|
|
34
34
|
|
|
35
35
|
function noop() {}
|
|
36
36
|
const EditableHeading = props => {
|
|
@@ -53,6 +53,10 @@ const EditableHeading = props => {
|
|
|
53
53
|
error,
|
|
54
54
|
disabled,
|
|
55
55
|
renderMenu = () => null,
|
|
56
|
+
translations = {
|
|
57
|
+
save: 'Save',
|
|
58
|
+
cancel: 'Cancel'
|
|
59
|
+
},
|
|
56
60
|
...restProps
|
|
57
61
|
} = props;
|
|
58
62
|
const [shortcutsScope] = React.useState(getUID('ring-editable-heading-'));
|
|
@@ -99,22 +103,25 @@ const EditableHeading = props => {
|
|
|
99
103
|
disabled: isSaving,
|
|
100
104
|
onFocus: onInputFocus,
|
|
101
105
|
onBlur: onInputBlur
|
|
102
|
-
}, restProps))) : /*#__PURE__*/React.createElement(
|
|
106
|
+
}, restProps))) : /*#__PURE__*/React.createElement("button", {
|
|
107
|
+
type: "button",
|
|
108
|
+
className: modules_6e69b0fe.headingWrapperButton,
|
|
109
|
+
onClick: onHeadingClick
|
|
110
|
+
}, /*#__PURE__*/React.createElement(Heading, {
|
|
103
111
|
className: headingClasses,
|
|
104
112
|
level: level,
|
|
105
|
-
onClick: onHeadingClick,
|
|
106
113
|
"data-test": dataTest
|
|
107
|
-
}, children), !isEditing && renderMenu(), isEditing && !embedded && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {
|
|
114
|
+
}, children)), !isEditing && renderMenu(), isEditing && !embedded && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {
|
|
108
115
|
className: modules_6e69b0fe.button,
|
|
109
116
|
primary: true,
|
|
110
117
|
disabled: isSaveDisabled,
|
|
111
118
|
loader: isSaving,
|
|
112
119
|
onClick: onSave
|
|
113
|
-
},
|
|
120
|
+
}, translations.save), /*#__PURE__*/React.createElement(Button, {
|
|
114
121
|
className: modules_6e69b0fe.button,
|
|
115
122
|
disabled: isCancelDisabled,
|
|
116
123
|
onClick: onCancel
|
|
117
|
-
},
|
|
124
|
+
}, translations.cancel))), isEditing && error && /*#__PURE__*/React.createElement("div", {
|
|
118
125
|
className: classNames(modules_6e69b0fe.errorText, modules_88cfaf40[`size${size}`])
|
|
119
126
|
}, error));
|
|
120
127
|
};
|