@jetbrains/ring-ui 7.0.27 → 7.0.29
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.
|
@@ -23,7 +23,7 @@ export default class Caret {
|
|
|
23
23
|
this.target = target;
|
|
24
24
|
}
|
|
25
25
|
isContentEditable() {
|
|
26
|
-
return this.target.contentEditable === 'true';
|
|
26
|
+
return this.target.contentEditable === 'true' || this.target.getAttribute('contenteditable') === 'true'; // workaround for https://github.com/jsdom/jsdom/issues/1670
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
29
|
* Set focus on target if possible
|
package/components/list/list.js
CHANGED
|
@@ -18,7 +18,6 @@ import memoize from '../global/memoize';
|
|
|
18
18
|
import { preventDefault } from '../global/dom';
|
|
19
19
|
import Shortcuts from '../shortcuts/shortcuts';
|
|
20
20
|
import createStatefulContext from '../global/create-stateful-context';
|
|
21
|
-
import ListLink from './list__link';
|
|
22
21
|
import ListItem from './list__item';
|
|
23
22
|
import ListCustom from './list__custom';
|
|
24
23
|
import ListTitle from './list__title';
|
|
@@ -394,9 +393,6 @@ export default class List extends Component {
|
|
|
394
393
|
itemProps.isFirst = isFirst;
|
|
395
394
|
break;
|
|
396
395
|
case Type.LINK:
|
|
397
|
-
ItemComponent = ListLink;
|
|
398
|
-
this.addItemDataTestToProp(itemProps);
|
|
399
|
-
break;
|
|
400
396
|
case Type.ITEM:
|
|
401
397
|
ItemComponent = ListItem;
|
|
402
398
|
this.addItemDataTestToProp(itemProps);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { PureComponent } from 'react';
|
|
3
3
|
import classNames from 'classnames';
|
|
4
4
|
import dataTests from '../global/data-tests';
|
|
@@ -6,7 +6,9 @@ import Avatar, { Size as AvatarSize } from '../avatar/avatar';
|
|
|
6
6
|
import Checkbox from '../checkbox/checkbox';
|
|
7
7
|
import Icon from '../icon/icon';
|
|
8
8
|
import getUID from '../global/get-uid';
|
|
9
|
+
import Link, { linkHOC } from '../link/link';
|
|
9
10
|
import styles from './list.css';
|
|
11
|
+
import { Type } from './consts';
|
|
10
12
|
import { getListClasses } from './list__classes';
|
|
11
13
|
/**
|
|
12
14
|
* @constructor
|
|
@@ -20,7 +22,8 @@ export default class ListItem extends PureComponent {
|
|
|
20
22
|
stopBubbling = (e) => e.stopPropagation();
|
|
21
23
|
_isString = (val) => typeof val === 'string' || val instanceof String;
|
|
22
24
|
render() {
|
|
23
|
-
const { disabled, checkbox, avatar, subavatar, glyph, icon, rightGlyph, description, label, title, details, hover, level, tabIndex, onClick, onCheckboxChange, onMouseOver, onMouseDown, onMouseUp, rightNodes, leftNodes, showGeneratedAvatar, username, labelWrapper,
|
|
25
|
+
const { disabled, checkbox, avatar, subavatar, glyph, icon, rightGlyph, description, label, title, details, hover, level, tabIndex, onClick, onCheckboxChange, onMouseOver, onMouseDown, onMouseUp, rightNodes, leftNodes, showGeneratedAvatar, username, labelWrapper, rgItemType, scrolling, 'data-test': dataTest, className, url, LinkComponent, compact, hoverClassName, children, ...restLinkProps // TODO use an allow list in 8.0
|
|
26
|
+
} = this.props;
|
|
24
27
|
const checkable = checkbox !== undefined;
|
|
25
28
|
const shouldShowGeneratedAvatar = showGeneratedAvatar && username != null;
|
|
26
29
|
const hasLeftNodes = leftNodes || glyph || avatar || shouldShowGeneratedAvatar;
|
|
@@ -43,12 +46,28 @@ export default class ListItem extends PureComponent {
|
|
|
43
46
|
// label can also be an element, use empty string in this case
|
|
44
47
|
computedTitle = this._isString(label) ? label : '';
|
|
45
48
|
}
|
|
46
|
-
const
|
|
47
|
-
|
|
49
|
+
const isLink = rgItemType === Type.LINK;
|
|
50
|
+
const combinedDataTest = dataTests({
|
|
51
|
+
'ring-list-item': (dataTest || '').indexOf('ring-list-item') === -1,
|
|
48
52
|
'ring-list-item-action': !disabled,
|
|
49
53
|
'ring-list-item-selected': checkbox,
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
54
|
+
'ring-list-link': isLink,
|
|
55
|
+
}, dataTest);
|
|
56
|
+
const labelElement = (_jsx("span", { className: styles.label, title: computedTitle, "data-test": "ring-list-item-label", children: label ?? children }));
|
|
57
|
+
const commonProps = {
|
|
58
|
+
id: this.id,
|
|
59
|
+
tabIndex,
|
|
60
|
+
onClick,
|
|
61
|
+
onMouseOver,
|
|
62
|
+
onMouseDown,
|
|
63
|
+
onFocus: onMouseOver,
|
|
64
|
+
onMouseUp,
|
|
65
|
+
className: classes,
|
|
66
|
+
style,
|
|
67
|
+
disabled,
|
|
68
|
+
children: (_jsxs(_Fragment, { children: [_jsxs("div", { className: styles.top, onMouseOut: this.stopBubbling, onBlur: this.stopBubbling, children: [!showCheckbox && (_jsxs("div", { className: styles.left, children: [leftNodes, glyph && (_jsx(Icon, { className: styles.glyph, glyph: glyph, size: this.props.iconSize, suppressSizeWarning: this.props.suppressSizeWarning })), (avatar || shouldShowGeneratedAvatar) && (_jsx(Avatar, { className: styles.avatar, url: avatar, size: AvatarSize.Size20, subavatar: subavatar, username: username }))] })), labelWrapper ? labelWrapper(labelElement) : labelElement, description && (_jsx("span", { className: styles.description, "data-test": "ring-list-item-description", children: description })), _jsxs("div", { className: styles.right, children: [rightGlyph && (_jsx(Icon, { className: styles.rightGlyph, glyph: rightGlyph, suppressSizeWarning: this.props.suppressSizeWarning, size: this.props.iconSize })), icon && _jsx("div", { className: styles.icon, style: { backgroundImage: `url("${icon}")` } }), rightNodes] })] }), details && _jsx("div", { className: detailsClasses, children: details })] })),
|
|
69
|
+
};
|
|
70
|
+
const LinkComponentToUse = LinkComponent ? linkHOC(LinkComponent) : Link;
|
|
71
|
+
return (_jsxs("div", { className: styles.itemContainer, "data-test": combinedDataTest, children: [showCheckbox && (_jsx("div", { className: styles.checkboxContainer, children: _jsx(Checkbox, { "aria-labelledby": this.id, checked: checkbox, disabled: disabled, onChange: onCheckboxChange, onClick: this.stopBubbling }) })), isLink ? (_jsx(LinkComponentToUse, { pseudo: !restLinkProps.href, ...commonProps, ...restLinkProps })) : (_jsx("button", { type: "button", ...commonProps }))] }));
|
|
53
72
|
}
|
|
54
73
|
}
|
|
@@ -126,6 +126,7 @@ export default class QueryAssist extends Component {
|
|
|
126
126
|
state.suggestions !== this.state.suggestions ||
|
|
127
127
|
state.styleRanges !== this.state.styleRanges ||
|
|
128
128
|
state.placeholderEnabled !== this.state.placeholderEnabled ||
|
|
129
|
+
state.shortcuts !== this.state.shortcuts ||
|
|
129
130
|
props.placeholder !== this.props.placeholder ||
|
|
130
131
|
props.disabled !== this.props.disabled ||
|
|
131
132
|
props.clear !== this.props.clear ||
|
|
@@ -133,7 +134,8 @@ export default class QueryAssist extends Component {
|
|
|
133
134
|
props.actions !== this.props.actions ||
|
|
134
135
|
props.loader !== this.props.loader ||
|
|
135
136
|
props.glass !== this.props.glass ||
|
|
136
|
-
props.className !== this.props.className
|
|
137
|
+
props.className !== this.props.className ||
|
|
138
|
+
props.delay !== this.props.delay);
|
|
137
139
|
}
|
|
138
140
|
componentDidUpdate(prevProps) {
|
|
139
141
|
const { caret, delay, query } = this.props;
|
|
@@ -179,7 +181,9 @@ export default class QueryAssist extends Component {
|
|
|
179
181
|
if (!this.mouseIsDownOnPopup) {
|
|
180
182
|
this.props.onFocusChange({ focus });
|
|
181
183
|
}
|
|
182
|
-
this.
|
|
184
|
+
if (this.state.shortcuts !== focus) {
|
|
185
|
+
this.setState({ shortcuts: focus });
|
|
186
|
+
}
|
|
183
187
|
};
|
|
184
188
|
node;
|
|
185
189
|
nodeRef = (node) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jetbrains/ring-ui",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.29",
|
|
4
4
|
"description": "JetBrains UI library",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "JetBrains"
|
|
@@ -86,13 +86,13 @@
|
|
|
86
86
|
"readmeFilename": "README.md",
|
|
87
87
|
"devDependencies": {
|
|
88
88
|
"@babel/cli": "^7.26.4",
|
|
89
|
-
"@babel/eslint-parser": "^7.26.
|
|
89
|
+
"@babel/eslint-parser": "^7.26.8",
|
|
90
90
|
"@babel/plugin-syntax-import-assertions": "^7.26.0",
|
|
91
91
|
"@csstools/css-parser-algorithms": "^3.0.4",
|
|
92
92
|
"@csstools/stylelint-no-at-nest-rule": "^4.0.0",
|
|
93
93
|
"@eslint/compat": "^1.2.6",
|
|
94
94
|
"@eslint/eslintrc": "^3.2.0",
|
|
95
|
-
"@eslint/js": "^9.
|
|
95
|
+
"@eslint/js": "^9.20.0",
|
|
96
96
|
"@figma/code-connect": "^1.2.4",
|
|
97
97
|
"@jetbrains/eslint-config": "^6.0.4",
|
|
98
98
|
"@jetbrains/logos": "3.0.0-canary.734b213.0",
|
|
@@ -131,12 +131,12 @@
|
|
|
131
131
|
"@types/sinon-chai": "^4.0.0",
|
|
132
132
|
"@types/webpack-env": "^1.18.8",
|
|
133
133
|
"@vitejs/plugin-react": "^4.3.4",
|
|
134
|
-
"@vitest/eslint-plugin": "^1.1.
|
|
134
|
+
"@vitest/eslint-plugin": "^1.1.27",
|
|
135
135
|
"@wojtekmaj/enzyme-adapter-react-17": "^0.8.0",
|
|
136
136
|
"acorn": "^8.14.0",
|
|
137
137
|
"axe-playwright": "^2.1.0",
|
|
138
138
|
"babel-plugin-require-context-hook": "^1.0.0",
|
|
139
|
-
"caniuse-lite": "^1.0.
|
|
139
|
+
"caniuse-lite": "^1.0.30001699",
|
|
140
140
|
"chai": "^5.1.2",
|
|
141
141
|
"chai-as-promised": "^8.0.1",
|
|
142
142
|
"chai-dom": "^1.10.0",
|
|
@@ -147,7 +147,7 @@
|
|
|
147
147
|
"cpy-cli": "^5.0.0",
|
|
148
148
|
"dotenv-cli": "^8.0.0",
|
|
149
149
|
"enzyme": "^3.11.0",
|
|
150
|
-
"eslint": "^9.
|
|
150
|
+
"eslint": "^9.20.0",
|
|
151
151
|
"eslint-config-prettier": "^10.0.1",
|
|
152
152
|
"eslint-formatter-jslint-xml": "^8.40.0",
|
|
153
153
|
"eslint-import-resolver-webpack": "^0.13.10",
|
|
@@ -171,14 +171,14 @@
|
|
|
171
171
|
"markdown-it": "^14.1.0",
|
|
172
172
|
"merge-options": "^3.0.4",
|
|
173
173
|
"pinst": "^3.0.0",
|
|
174
|
-
"prettier": "^3.
|
|
174
|
+
"prettier": "^3.5.0",
|
|
175
175
|
"raw-loader": "^4.0.2",
|
|
176
176
|
"react": "^18.3.1",
|
|
177
177
|
"react-dom": "^18.3.1",
|
|
178
178
|
"react-test-renderer": "^19.0.0",
|
|
179
179
|
"regenerator-runtime": "^0.14.1",
|
|
180
180
|
"rimraf": "^6.0.1",
|
|
181
|
-
"rollup": "^4.34.
|
|
181
|
+
"rollup": "^4.34.6",
|
|
182
182
|
"rollup-plugin-clear": "^2.0.7",
|
|
183
183
|
"sinon": "^19.0.2",
|
|
184
184
|
"sinon-chai": "^4.0.0",
|
|
@@ -217,10 +217,10 @@
|
|
|
217
217
|
}
|
|
218
218
|
},
|
|
219
219
|
"dependencies": {
|
|
220
|
-
"@babel/core": "^7.26.
|
|
220
|
+
"@babel/core": "^7.26.8",
|
|
221
221
|
"@babel/preset-typescript": "^7.26.0",
|
|
222
222
|
"@jetbrains/babel-preset-jetbrains": "^2.4.0",
|
|
223
|
-
"@jetbrains/icons": "^5.
|
|
223
|
+
"@jetbrains/icons": "^5.6.0",
|
|
224
224
|
"@jetbrains/postcss-require-hover": "^0.1.3",
|
|
225
225
|
"@types/combokeys": "^2.4.9",
|
|
226
226
|
"@types/element-resize-detector": "^1.1.6",
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { PureComponent } from 'react';
|
|
2
|
-
import { ListDataItemProps } from './consts';
|
|
3
|
-
/**
|
|
4
|
-
* @constructor
|
|
5
|
-
* @extends {ReactComponent}
|
|
6
|
-
*/
|
|
7
|
-
export default class ListLink<T> extends PureComponent<ListDataItemProps<T>> {
|
|
8
|
-
render(): import("react/jsx-runtime").JSX.Element;
|
|
9
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { PureComponent } from 'react';
|
|
3
|
-
import Link, { linkHOC } from '../link/link';
|
|
4
|
-
import dataTests from '../global/data-tests';
|
|
5
|
-
import { getListClasses } from './list__classes';
|
|
6
|
-
/**
|
|
7
|
-
* @constructor
|
|
8
|
-
* @extends {ReactComponent}
|
|
9
|
-
*/
|
|
10
|
-
export default class ListLink extends PureComponent {
|
|
11
|
-
render() {
|
|
12
|
-
const { scrolling, 'data-test': dataTest, className, label, hover, description, rgItemType, url, onCheckboxChange, disabled, LinkComponent, compact, hoverClassName, children, ...restProps } = this.props;
|
|
13
|
-
const classes = getListClasses(this.props);
|
|
14
|
-
const Comp = LinkComponent ? linkHOC(LinkComponent) : Link;
|
|
15
|
-
return (_jsx(Comp, { pseudo: !this.props.href, ...restProps, className: classes, "data-test": dataTests('ring-list-link', dataTest), children: label ?? children }));
|
|
16
|
-
}
|
|
17
|
-
}
|