Skip to content

Commit 91f3ba7

Browse files
authored
Merge pull request #242 from eccenca/release/v24.0.1
Release v24.0.1 into main branch
2 parents 332a025 + 3b2661b commit 91f3ba7

7 files changed

Lines changed: 1267 additions & 679 deletions

File tree

.eslintrc.json

Lines changed: 0 additions & 36 deletions
This file was deleted.

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,17 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
66

77
## [Unreleased]
88

9+
### Changed
10+
11+
- `eslint` libraries were upgraded to v9, so `node` v18.18 or higher is required
12+
13+
### Fixed
14+
15+
- `MultiSelect`:
16+
- Old suggestions might be shown for a very short time when typing in a new search query.
17+
- `CodeEditor`:
18+
- Broken highlighting for editor modes that leveraged adapted legacy modes.
19+
920
## [24.0.0] - 2024-12-17
1021

1122
This is a major release, and it might be not compatible with your current usage of our library. Please read about the necessary changes in the section about how to migrate.

eslint.config.mjs

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import typescriptEslint from "@typescript-eslint/eslint-plugin";
2+
import react from "eslint-plugin-react";
3+
import reactHooks from "eslint-plugin-react-hooks";
4+
import simpleImportSort from "eslint-plugin-simple-import-sort";
5+
import { fixupPluginRules } from "@eslint/compat";
6+
import tsParser from "@typescript-eslint/parser";
7+
import path from "node:path";
8+
import { fileURLToPath } from "node:url";
9+
import js from "@eslint/js";
10+
import { FlatCompat } from "@eslint/eslintrc";
11+
12+
const __filename = fileURLToPath(import.meta.url);
13+
const __dirname = path.dirname(__filename);
14+
const compat = new FlatCompat({
15+
baseDirectory: __dirname,
16+
recommendedConfig: js.configs.recommended,
17+
allConfig: js.configs.all
18+
});
19+
20+
export default [...compat.extends(
21+
"eslint:recommended",
22+
"plugin:@typescript-eslint/eslint-recommended",
23+
"plugin:@typescript-eslint/recommended",
24+
), {
25+
plugins: {
26+
"@typescript-eslint": typescriptEslint,
27+
react,
28+
"react-hooks": fixupPluginRules(reactHooks),
29+
"simple-import-sort": simpleImportSort,
30+
},
31+
32+
languageOptions: {
33+
parser: tsParser,
34+
},
35+
36+
rules: {
37+
"arrow-body-style": "off",
38+
"prefer-arrow-callback": "off",
39+
40+
"simple-import-sort/imports": ["error", {
41+
groups: [
42+
["^react", "^@?\\w"],
43+
["^(@|components)(/.*|$)"],
44+
["^\\u0000"],
45+
["^\\.\\.(?!/?$)", "^\\.\\./?$"],
46+
["^\\./(?=.*/)(?!/?$)", "^\\.(?!/?$)", "^\\./?$"],
47+
["^.+\\.?(css)$"],
48+
],
49+
}],
50+
51+
"@typescript-eslint/ban-ts-comment": ["error", {
52+
"ts-ignore": "allow-with-description",
53+
}],
54+
55+
"no-console": "error",
56+
},
57+
}];

package.json

Lines changed: 40 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@eccenca/gui-elements",
33
"description": "GUI elements based on other libraries, usable in React application, written in Typescript.",
4-
"version": "24.0.0",
4+
"version": "24.0.1-rc.0",
55
"license": "Apache-2.0",
66
"homepage": "https://github.com/eccenca/gui-elements",
77
"bugs": "https://github.com/eccenca/gui-elements/issues",
@@ -28,7 +28,7 @@
2828
"registry": "https://registry.npmjs.org"
2929
},
3030
"engines": {
31-
"node": ">=18"
31+
"node": ">=18.18.0"
3232
},
3333
"style": "src/index.scss",
3434
"main": "dist/cjs/index.js",
@@ -47,6 +47,7 @@
4747
"scripts"
4848
],
4949
"scripts": {
50+
"project:clean": "yarn test:clean && yarn build:clean && yarn storybook:clean && rimraf yarn-error.log",
5051
"build:clean": "rimraf dist/",
5152
"build:esm": "tsc --project .typescript/tsbuild-esm.json && ./scripts/fix-esm-dist",
5253
"build:cjs": "tsc --project .typescript/tsbuild-cjs.json && ./scripts/fix-cjs-dist",
@@ -55,24 +56,29 @@
5556
"compile-scss": "ts-node -O \"{ \\\"esModuleInterop\\\": true, \\\"module\\\": \\\"commonjs\\\"}\" ./scripts/compile-sass.ts",
5657
"storybook": "storybook dev -p 6006 --no-open",
5758
"build-storybook": "storybook build --webpack-stats-json",
59+
"storybook:clean": "rimraf storybook-static/",
5860
"test": "jest",
5961
"test:ci": "jest --ci --reporters='default'",
6062
"test:coverage": "jest --collectCoverage",
6163
"test:generate-output": "jest --json --outputFile=.jest-test-results.json",
64+
"test:clean": "rimraf .jest-test-results.json && rimraf coverage/",
6265
"autolint:scripts": "eslint --fix .storybook/ blueprint/ scripts/ src/ index.ts || exit 0",
6366
"autolint:styles": "stylelint \"{.storybook,src}/**/*.{css,scss}\" --fix || exit 0",
6467
"autolint:prettier": "prettier \"{.github,.storybook,.typescript,blueprint,scripts,src}/**/*\" .* *.json *.md *.ts --write --ignore-unknown",
6568
"autolint:all": "yarn autolint:scripts && yarn autolint:styles && yarn autolint:prettier"
6669
},
6770
"dependencies": {
68-
"@blueprintjs/colors": "^5.1.1",
69-
"@blueprintjs/core": "^5.11.0",
70-
"@blueprintjs/select": "^5.2.2",
71-
"@carbon/icons": "^11.47.1",
72-
"@carbon/react": "^1.64.1",
71+
"@blueprintjs/colors": "^5.1.5",
72+
"@blueprintjs/core": "^5.16.2",
73+
"@blueprintjs/select": "^5.3.7",
74+
"@carbon/icons": "^11.53.0",
75+
"@carbon/react": "1.72.0",
76+
"@codemirror/lang-javascript": "^6.2.2",
7377
"@codemirror/lang-json": "^6.0.1",
7478
"@codemirror/lang-markdown": "^6.3.1",
79+
"@codemirror/lang-sql": "^6.8.0",
7580
"@codemirror/lang-xml": "^6.1.0",
81+
"@codemirror/lang-yaml": "^6.1.2",
7682
"@codemirror/legacy-modes": "^6.4.2",
7783
"@mavrin/remark-typograf": "^2.2.0",
7884
"codemirror": "^6.0.1",
@@ -98,44 +104,47 @@
98104
},
99105
"devDependencies": {
100106
"@babel/core": "^7.26.0",
101-
"@babel/plugin-proposal-class-properties": "^7.16.7",
102-
"@babel/plugin-proposal-private-methods": "^7.16.11",
107+
"@babel/plugin-proposal-class-properties": "^7.18.6",
108+
"@babel/plugin-proposal-private-methods": "^7.18.6",
103109
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
104110
"@babel/preset-env": "^7.26.0",
105111
"@babel/preset-flow": "^7.25.9",
106-
"@babel/preset-react": "^7.25.9",
112+
"@babel/preset-react": "^7.26.3",
107113
"@babel/preset-typescript": "^7.26.0",
108-
"@storybook/addon-actions": "^8.4.3",
109-
"@storybook/addon-essentials": "^8.4.3",
110-
"@storybook/addon-jest": "^8.4.3",
111-
"@storybook/addon-links": "^8.4.3",
114+
"@eslint/compat": "^1.2.4",
115+
"@eslint/eslintrc": "^3.2.0",
116+
"@eslint/js": "^9.17.0",
117+
"@storybook/addon-actions": "^8.4.7",
118+
"@storybook/addon-essentials": "^8.4.7",
119+
"@storybook/addon-jest": "^8.4.7",
120+
"@storybook/addon-links": "^8.4.7",
112121
"@storybook/addon-webpack5-compiler-babel": "^3.0.3",
113-
"@storybook/cli": "^8.4.3",
122+
"@storybook/cli": "^8.4.7",
114123
"@storybook/preset-scss": "^1.0.3",
115-
"@storybook/react": "^8.4.3",
116-
"@storybook/react-webpack5": "^8.4.3",
117-
"@storybook/test": "^8.4.3",
124+
"@storybook/react": "^8.4.7",
125+
"@storybook/react-webpack5": "^8.4.7",
126+
"@storybook/test": "^8.4.7",
118127
"@testing-library/jest-dom": "^6.6.3",
119128
"@testing-library/react": "^12.1.2",
120129
"@types/codemirror": "^5.60.15",
121130
"@types/color": "^3.0.6",
122-
"@types/jest": "^29.5.12",
123-
"@types/lodash": "^4.17.7",
131+
"@types/jest": "^29.5.14",
132+
"@types/lodash": "^4.17.13",
124133
"@types/react-syntax-highlighter": "^15.5.13",
125-
"@typescript-eslint/eslint-plugin": "^5.62.0",
126-
"@typescript-eslint/parser": "^5.62.0",
134+
"@typescript-eslint/eslint-plugin": "^8.18.1",
135+
"@typescript-eslint/parser": "^8.18.1",
127136
"babel-jest": "^29.7.0",
128-
"chromatic": "^11.18.1",
129-
"eslint": "^8.57.0",
130-
"eslint-plugin-react": "^7.35.0",
131-
"eslint-plugin-react-hooks": "^4.6.2",
137+
"chromatic": "^11.20.2",
138+
"eslint": "^9.17.0",
139+
"eslint-plugin-react": "^7.37.2",
140+
"eslint-plugin-react-hooks": "^5.1.0",
132141
"eslint-plugin-simple-import-sort": "^12.1.1",
133142
"husky": "4",
134143
"identity-obj-proxy": "^3.0.0",
135144
"jest": "^29.7.0",
136145
"jest-environment-jsdom": "^29.7.0",
137146
"jest-pnp-resolver": "^1.2.3",
138-
"lint-staged": "^15.2.9",
147+
"lint-staged": "^15.2.11",
139148
"node-sass-package-importer": "^5.3.3",
140149
"path": "^0.12.7",
141150
"prettier": "^2.8.8",
@@ -145,12 +154,12 @@
145154
"rimraf": "^5.0.10",
146155
"sass": "1.62.1",
147156
"sass-loader": "10.3.1",
148-
"storybook": "^8.4.3",
157+
"storybook": "^8.4.7",
149158
"stylelint": "^15.11.0",
150159
"stylelint-config-recess-order": "^4.6.0",
151160
"stylelint-config-standard-scss": "^9.0.0",
152161
"ts-node": "^10.9.2",
153-
"tsc-esm-fix": "^3.0.2",
162+
"tsc-esm-fix": "^3.1.2",
154163
"typescript": "5.5.3",
155164
"url-loader": "^4.1.1",
156165
"yargs": "^17.7.2"
@@ -161,8 +170,8 @@
161170
"react-dom": ">=16"
162171
},
163172
"resolutions": {
164-
"**/@types/react": "^17.0.80",
165-
"node-sass-package-importer/**/postcss": "^8.4.41",
173+
"**/@types/react": "^17.0.83",
174+
"node-sass-package-importer/**/postcss": "^8.4.49",
166175
"**/cross-spawn": "^7.0.5 ",
167176
"**/micromatch": "^4.0.8"
168177
},

src/components/MultiSelect/MultiSelect.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,7 @@ function MultiSelect<T>({
323323
* @param query
324324
*/
325325
const onQueryChange = (query: string) => {
326+
setFilteredItems([]);
326327
if (query.length && query !== requestState.current.query) {
327328
requestState.current.query = query;
328329
if (requestState.current.timeoutId) {

src/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.ts

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
import { defaultHighlightStyle, StreamLanguage, StreamParser, LanguageSupport } from "@codemirror/language";
2-
3-
//modes imports
4-
import { markdown } from "@codemirror/lang-markdown";
1+
//adapted v6 modes imports
2+
import { javascript } from "@codemirror/lang-javascript";
53
import { json } from "@codemirror/lang-json";
4+
import { markdown } from "@codemirror/lang-markdown";
5+
import { sql } from "@codemirror/lang-sql";
66
import { xml } from "@codemirror/lang-xml";
7-
import { javascript } from "@codemirror/legacy-modes/mode/javascript";
7+
import { yaml } from "@codemirror/lang-yaml";
8+
import { defaultHighlightStyle, LanguageSupport, StreamLanguage, StreamParser } from "@codemirror/language";
9+
//legacy mode imports
10+
import { jinja2 } from "@codemirror/legacy-modes/mode/jinja2";
11+
import { mathematica } from "@codemirror/legacy-modes/mode/mathematica";
12+
import { ntriples } from "@codemirror/legacy-modes/mode/ntriples";
813
import { python } from "@codemirror/legacy-modes/mode/python";
914
import { sparql } from "@codemirror/legacy-modes/mode/sparql";
10-
import { sql } from "@codemirror/legacy-modes/mode/sql";
1115
import { turtle } from "@codemirror/legacy-modes/mode/turtle";
12-
import { jinja2 } from "@codemirror/legacy-modes/mode/jinja2";
13-
import { yaml } from "@codemirror/legacy-modes/mode/yaml";
14-
import { ntriples } from "@codemirror/legacy-modes/mode/ntriples";
15-
import { mathematica } from "@codemirror/legacy-modes/mode/mathematica";
1616

1717
//adaptations
1818
import { adaptedSyntaxHighlighting } from "../tests/codemirrorTestHelper";
@@ -35,10 +35,19 @@ const supportedModes = {
3535
export const supportedCodeEditorModes = Object.keys(supportedModes) as Array<keyof typeof supportedModes>;
3636
export type SupportedCodeEditorModes = (typeof supportedCodeEditorModes)[number];
3737

38+
const v6AdaptedModes: ReadonlyMap<SupportedCodeEditorModes, boolean> = new Map([
39+
["json", true],
40+
["markdown", true],
41+
["xml", true],
42+
["sql", true],
43+
["yaml", true],
44+
["javascript", true],
45+
]);
46+
3847
export const useCodeMirrorModeExtension = (mode?: SupportedCodeEditorModes) => {
3948
return !mode
4049
? adaptedSyntaxHighlighting(defaultHighlightStyle)
41-
: ["json", "markdown", "xml"].includes(mode)
50+
: v6AdaptedModes.has(mode)
4251
? ((typeof supportedModes[mode] === "function" ? supportedModes[mode] : () => {}) as () => LanguageSupport)()
4352
: StreamLanguage?.define(supportedModes[mode] as StreamParser<unknown>);
4453
};

0 commit comments

Comments
 (0)