diff --git a/.npmrc b/.npmrc
index 14312ab8..0c14e38c 100644
--- a/.npmrc
+++ b/.npmrc
@@ -1,2 +1 @@
-enable-pre-post-scripts=true
registry-url=https://registry.npmjs.org/
\ No newline at end of file
diff --git a/package.json b/package.json
index a76052ca..32473fc6 100644
--- a/package.json
+++ b/package.json
@@ -27,12 +27,10 @@
"scripts": {
"are-types-wrong": "pnpm -r --stream --filter=\"{packages/multiple-select-vanilla/**}\" are-types-wrong",
"clean": "remove --glob **/dist --glob **/tsconfig.tsbuildinfo",
- "prebuild": "pnpm clean && pnpm biome:lint:write && pnpm biome:format:write",
- "build": "pnpm -r --stream build",
+ "build": "pnpm clean && pnpm biome:lint:write && pnpm biome:format:write && pnpm -r --stream build",
"build:demo": "pnpm -r --stream --filter=\"{packages/demo/**}\" build",
"build:lib": "pnpm -r --stream --filter=\"{packages/multiple-select-vanilla/**}\" build",
- "predev": "pnpm -r dev:init",
- "dev": "run-p dev:watch build:watch --npm-path pnpm",
+ "dev": "pnpm -r dev:init && run-p dev:watch build:watch --npm-path pnpm",
"dev:watch": "pnpm -r --parallel --stream dev",
"build:watch": "lerna watch --no-bail --file-delimiter=\",\" --glob=\"src/**/*.{ts,scss}\" -- cross-env-shell pnpm -r --filter $LERNA_PACKAGE_NAME build:watch --files=$LERNA_FILE_CHANGES",
"dev:demo": "pnpm -r --stream --filter=\"{packages/demo/**}\" dev",
@@ -45,11 +43,9 @@
"preview:publish": "lerna publish from-package --dry-run",
"new-version": "lerna version",
"new-publish": "lerna publish from-package",
- "preroll-new-release": "echo Please update getting-started lib version before pushing a release. ⚠️",
"roll-new-release": "pnpm build && pnpm new-version && pnpm new-publish",
"serve:demo": "pnpm -r --stream --filter=\"{packages/demo/**}\" dev",
- "pretest:e2e": "remove playwright-report",
- "test:e2e": "playwright test --config playwright/playwright.config.ts",
+ "test:e2e": "remove playwright-report && playwright test --config playwright/playwright.config.ts",
"test:e2e:debug": "playwright test --config playwright/playwright.config.ts --ui --debug",
"test:e2e:ui": "playwright test --config playwright/playwright.config.ts --ui",
"test:report": "playwright show-report",
diff --git a/packages/demo/src/app-routing.ts b/packages/demo/src/app-routing.ts
index 7b3afd42..e7865844 100644
--- a/packages/demo/src/app-routing.ts
+++ b/packages/demo/src/app-routing.ts
@@ -15,6 +15,7 @@ import Example13 from './examples/example13.js';
import Example14 from './examples/example14.js';
import Example15 from './examples/example15.js';
import Example16 from './examples/example16.js';
+import Example17 from './examples/example17.js';
import GettingStarted from './getting-started.js';
import I18n from './i18n/i18n.js';
import Methods01 from './methods/methods01.js';
@@ -98,6 +99,7 @@ export const exampleRouting = [
{ name: 'example14', view: '/src/examples/example14.html', viewModel: Example14, title: 'The Divider' },
{ name: 'example15', view: '/src/examples/example15.html', viewModel: Example15, title: 'Dark Mode' },
{ name: 'example16', view: '/src/examples/example16.html', viewModel: Example16, title: 'Template with Images' },
+ { name: 'example17', view: '/src/examples/example17.html', viewModel: Example17, title: 'Bug' },
],
},
{
diff --git a/packages/demo/src/examples/example17.html b/packages/demo/src/examples/example17.html
new file mode 100644
index 00000000..12cd5c82
--- /dev/null
+++ b/packages/demo/src/examples/example17.html
@@ -0,0 +1,20 @@
+
+
+
+
+
diff --git a/packages/demo/src/examples/example17.ts b/packages/demo/src/examples/example17.ts
new file mode 100644
index 00000000..b960102b
--- /dev/null
+++ b/packages/demo/src/examples/example17.ts
@@ -0,0 +1,22 @@
+import { type MultipleSelectInstance, multipleSelect } from 'multiple-select-vanilla';
+
+export default class Example {
+ ms!: MultipleSelectInstance;
+
+ mount() {
+ this.ms = multipleSelect('#activities', {
+ selectAll: false,
+ }) as MultipleSelectInstance;
+
+ document.getElementById('trigger')?.addEventListener('click', () => {
+ // 💥 Repro du bug avec optgroup + setSelects
+ this.ms.setSelects(['515']);
+ });
+ }
+
+ unmount() {
+ // destroy ms instance(s) to avoid DOM leaks
+ this.ms.destroy();
+ this.ms = null as any;
+ }
+}
diff --git a/packages/multiple-select-vanilla/package.json b/packages/multiple-select-vanilla/package.json
index 2d6d1d7b..7401994a 100644
--- a/packages/multiple-select-vanilla/package.json
+++ b/packages/multiple-select-vanilla/package.json
@@ -51,8 +51,7 @@
"scripts": {
"are-types-wrong": "pnpx @arethetypeswrong/cli --pack .",
"clean": "remove dist",
- "build": "pnpm build:all && pnpm build:types:prod",
- "postbuild": "pnpm sass:build && pnpm sass:copy",
+ "build": "pnpm build:all && pnpm build:types:prod && pnpm sass:build && pnpm sass:copy",
"dev:init": "pnpm sass:build && pnpm sass:copy && pnpm build:all && pnpm build:types:prod",
"build:all": "node build-prod.mjs",
"build:watch": "cross-env NODE_ENV=development node build-watch.mjs",
@@ -60,8 +59,8 @@
"build:esm": "esbuild src/index.ts --bundle --minify --format=esm --target=es2021 --sourcemap --outfile=dist/index.js",
"build:types": "tsc --emitDeclarationOnly --incremental --declarationMap false --outDir dist",
"build:types:prod": "tsc --emitDeclarationOnly --incremental --declarationMap --outDir dist",
- "sass:build": "sass src/styles:dist/styles/css --style=compressed --quiet-deps --no-source-map",
- "postsass:build": "postcss dist/styles/css/**/* --dir dist/styles/css --base dist/styles/css --no-map --use cssnano --use autoprefixer --style=compressed",
+ "sass:build": "sass src/styles:dist/styles/css --style=compressed --quiet-deps --no-source-map && pnpm sass:build:closing",
+ "sass:build:closing": "postcss dist/styles/css/**/* --dir dist/styles/css --base dist/styles/css --no-map --use cssnano --use autoprefixer --style=compressed",
"sass:watch": "sass src/styles:dist/styles/css --watch --style=compressed --quiet-deps --no-source-map",
"sass:copy": "copyfiles \"./src/styles/**/*.scss\" dist/styles/sass --up 2 --stat"
},