@opensumi/ide-components 2.20.1 → 2.20.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -45,10 +45,6 @@
45
45
  &::placeholder {
46
46
  color: var(--input-placeholderForeground);
47
47
  }
48
-
49
- &::selection {
50
- background-color: var(--kt-input-selectionBackground);
51
- }
52
48
  }
53
49
  }
54
50
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scrollbars/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,eAAe,CAAC;AAEvB,MAAM,WAAW,qBAAqB;IACpC,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,UAAU,gGASpB,qBAAqB,gBA8EvB,CAAC;AAEF,eAAO,MAAM,qBAAqB,+DAAiF,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scrollbars/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,eAAe,CAAC;AAEvB,MAAM,WAAW,qBAAqB;IACpC,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,UAAU,gGASpB,qBAAqB,gBAgFvB,CAAC;AAEF,eAAO,MAAM,qBAAqB,+DAAiF,CAAC"}
@@ -18,7 +18,7 @@ const Scrollbars = ({ onScroll, onUpdate, forwardedRef, style, children, classNa
18
18
  }, []);
19
19
  const verticalShadowRef = (0, react_1.useRef)();
20
20
  const horizontalShadowRef = (0, react_1.useRef)();
21
- const handleReachBottom = react_1.default.useCallback((0, throttle_1.default)((values) => {
21
+ const handleReachBottom = (0, react_1.useCallback)((values) => {
22
22
  const { scrollTop, scrollHeight, clientHeight } = values;
23
23
  if (scrollHeight === 0 && clientHeight === 0) {
24
24
  return;
@@ -28,8 +28,8 @@ const Scrollbars = ({ onScroll, onUpdate, forwardedRef, style, children, classNa
28
28
  if (t > 1) {
29
29
  onReachBottom && onReachBottom();
30
30
  }
31
- }, 100), [onReachBottom]);
32
- const handleUpdate = (values) => {
31
+ }, [onReachBottom]);
32
+ const handleUpdate = (0, react_1.useCallback)((0, throttle_1.default)((values) => {
33
33
  const { scrollTop, scrollLeft } = values;
34
34
  const shadowTopOpacity = (1 / 20) * Math.min(scrollTop, 20);
35
35
  const shadowLeftOpacity = (1 / 20) * Math.min(scrollLeft, 20);
@@ -41,19 +41,19 @@ const Scrollbars = ({ onScroll, onUpdate, forwardedRef, style, children, classNa
41
41
  }
42
42
  handleReachBottom(values);
43
43
  onUpdate && onUpdate(values);
44
- };
44
+ }, 100), [onUpdate, handleReachBottom, verticalShadowRef.current, horizontalShadowRef.current]);
45
45
  return (react_1.default.createElement(react_custom_scrollbars_1.Scrollbars, { ref: refSetter, style: Object.assign(Object.assign({}, style), { overflow: 'hidden' }), className: (0, classnames_1.default)(className, 'kt-scrollbar'), onUpdate: handleUpdate, onScroll: onScroll, renderTrackHorizontal: (_a) => {
46
46
  var { style } = _a, props = tslib_1.__rest(_a, ["style"]);
47
- return (react_1.default.createElement("div", Object.assign({}, props, { style: Object.assign(Object.assign({}, style), { left: 0, right: 0, bottom: 0, height: thumbSize }) })));
47
+ return (react_1.default.createElement("div", Object.assign({}, props, { style: Object.assign(Object.assign({}, style), { left: 0, right: 0, bottom: 0 }) })));
48
48
  }, renderTrackVertical: (_a) => {
49
49
  var { style } = _a, props = tslib_1.__rest(_a, ["style"]);
50
- return (react_1.default.createElement("div", Object.assign({}, props, { style: Object.assign(Object.assign({}, style), { top: 0, right: 0, bottom: 0, width: thumbSize }) })));
50
+ return (react_1.default.createElement("div", Object.assign({}, props, { style: Object.assign(Object.assign({}, style), { top: 0, right: 0, bottom: 0 }) })));
51
51
  }, renderThumbVertical: (_a) => {
52
52
  var { style } = _a, props = tslib_1.__rest(_a, ["style"]);
53
- return (react_1.default.createElement("div", Object.assign({}, props, { style: Object.assign(Object.assign({}, style), { width: thumbSize }), className: 'scrollbar-thumb-vertical' })));
53
+ return (react_1.default.createElement("div", Object.assign({}, props, { style: Object.assign({}, style), className: 'scrollbar-thumb-vertical' })));
54
54
  }, renderThumbHorizontal: (_a) => {
55
55
  var { style } = _a, props = tslib_1.__rest(_a, ["style"]);
56
- return (react_1.default.createElement("div", Object.assign({}, props, { style: Object.assign(Object.assign({}, style), { height: thumbSize }), className: 'scrollbar-thumb-horizontal' })));
56
+ return (react_1.default.createElement("div", Object.assign({}, props, { style: Object.assign({}, style), className: 'scrollbar-thumb-horizontal' })));
57
57
  } },
58
58
  react_1.default.createElement("div", { ref: (ref) => {
59
59
  verticalShadowRef.current = ref;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scrollbars/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scrollbars/index.tsx"],"names":[],"mappings":"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"}
@@ -40,6 +40,7 @@
40
40
  box-sizing: border-box;
41
41
 
42
42
  & > span {
43
+ color: var(--kt-select-foreground);
43
44
  cursor: pointer;
44
45
  }
45
46
 
@@ -66,12 +67,12 @@
66
67
  color: var(--kt-select-disableForeground);
67
68
  }
68
69
  &.kt-select-warning {
69
- border-color: var(--kt-select-warningColor);
70
+ border-color: var(--kt-select-warningForeground);
70
71
  }
71
72
  }
72
73
 
73
74
  .kt-select-warning-text {
74
- background-color: var(--kt-select-warningColor);
75
+ background-color: var(--kt-select-warningForeground);
75
76
  padding: 4px 8px;
76
77
  color: @white;
77
78
  }
@@ -131,7 +132,12 @@
131
132
  .kt-select-option-select {
132
133
  span {
133
134
  display: inline-block;
134
- width: 100%;
135
+ margin: 0 2px;
136
+ width: calc(100% - 4px);
137
+ box-sizing: border-box;
138
+ outline: 1px solid var(--list-focusOutline);
139
+ outline-offset: -1px;
140
+ color: var(--kt-selectDropdown-selectionForeground);
135
141
  background-color: var(--kt-selectDropdown-selectionBackground);
136
142
  &:hover {
137
143
  background-color: var(--kt-selectDropdown-selectionBackground);
@@ -155,9 +161,13 @@
155
161
  white-space: nowrap;
156
162
  line-height: 26px;
157
163
  display: inline-block;
158
- width: 100%;
164
+ margin: 0 2px;
165
+ width: calc(100% - 4px);
159
166
  box-sizing: border-box;
160
167
  &:hover {
168
+ box-sizing: border-box;
169
+ outline: 1px solid var(--list-focusOutline);
170
+ outline-offset: -1px;
161
171
  background-color: var(--kt-selectDropdown-hoverBackground);
162
172
  }
163
173
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opensumi/ide-components",
3
- "version": "2.20.1",
3
+ "version": "2.20.2",
4
4
  "description": "@opensumi/ide-components",
5
5
  "license": "MIT",
6
6
  "main": "lib/index.js",
@@ -16,7 +16,7 @@
16
16
  },
17
17
  "dependencies": {
18
18
  "@ant-design/icons": "^4.6.4",
19
- "@opensumi/ide-utils": "2.20.1",
19
+ "@opensumi/ide-utils": "2.20.2",
20
20
  "@types/react-window": "^1.8.5",
21
21
  "fuzzy": "^0.1.3",
22
22
  "lodash": "^4.17.15",
@@ -36,5 +36,5 @@
36
36
  "devDependencies": {
37
37
  "@opensumi/ide-dev-tool": "^1.3.1"
38
38
  },
39
- "gitHead": "04b2bbf2f279ccf1eba1a1f5c18238fe871db490"
39
+ "gitHead": "26d255a05c956754ee68dbacde738a5a82e2891b"
40
40
  }