From 7114a1fca97648ab70b261a5a1e664fb932c4877 Mon Sep 17 00:00:00 2001 From: ghiscoding Date: Sat, 14 Feb 2026 23:16:52 -0500 Subject: [PATCH] feat: upgrade to Slickgrid-React v10 Beta --- single-locale-without-i18n/package.json | 29 +- .../src/examples/slickgrid/Example2.tsx | 14 +- .../src/examples/slickgrid/Example3.tsx | 4 +- .../src/examples/slickgrid/locales/fr.ts | 1 + single-locale-without-i18n/yarn.lock | 699 ++++++++---------- with-i18n-translate/package.json | 35 +- .../src/examples/slickgrid/App.tsx | 4 +- .../slickgrid/Example-detail-preload.tsx | 11 +- .../src/examples/slickgrid/Example10.tsx | 10 +- .../src/examples/slickgrid/Example11.tsx | 4 +- .../src/examples/slickgrid/Example12.tsx | 5 +- .../src/examples/slickgrid/Example14.tsx | 34 +- .../src/examples/slickgrid/Example15.tsx | 2 - .../src/examples/slickgrid/Example16.tsx | 4 +- .../src/examples/slickgrid/Example18.tsx | 7 +- .../slickgrid/Example19-detail-view.tsx | 7 +- .../src/examples/slickgrid/Example19.tsx | 21 +- .../src/examples/slickgrid/Example21.tsx | 15 +- .../src/examples/slickgrid/Example23.tsx | 9 +- .../src/examples/slickgrid/Example24.tsx | 17 +- .../src/examples/slickgrid/Example25.tsx | 16 +- .../src/examples/slickgrid/Example3.tsx | 7 +- .../src/examples/slickgrid/Example30.tsx | 4 +- .../src/examples/slickgrid/Example31.tsx | 7 +- .../src/examples/slickgrid/Example32.tsx | 6 +- .../src/examples/slickgrid/Example33.tsx | 73 +- .../src/examples/slickgrid/Example35.tsx | 2 +- .../src/examples/slickgrid/Example38.tsx | 2 +- .../src/examples/slickgrid/Example4.tsx | 5 +- .../src/examples/slickgrid/Example41.tsx | 5 +- .../slickgrid/Example42-Custom-Pager.tsx | 5 +- .../src/examples/slickgrid/Example42.tsx | 5 +- .../src/examples/slickgrid/Example43.tsx | 19 +- .../slickgrid/Example45-detail-view.tsx | 10 +- .../examples/slickgrid/Example45-preload.tsx | 9 +- .../src/examples/slickgrid/Example45.tsx | 16 +- .../src/examples/slickgrid/Example46.tsx | 2 +- .../slickgrid/Example47-detail-view.tsx | 7 +- .../src/examples/slickgrid/Example47.tsx | 10 +- .../src/examples/slickgrid/Example48.tsx | 12 +- .../src/examples/slickgrid/Example49.tsx | 9 +- .../src/examples/slickgrid/Example5.tsx | 11 +- .../src/examples/slickgrid/Example50.tsx | 4 +- .../src/examples/slickgrid/Example51.tsx | 694 +++++++++++++++++ .../src/examples/slickgrid/Example6.tsx | 28 +- .../src/examples/slickgrid/Example9.tsx | 3 +- .../examples/slickgrid/custom-inputEditor.tsx | 2 +- .../examples/slickgrid/custom-inputFilter.tsx | 7 +- .../src/examples/slickgrid/example51.scss | 145 ++++ .../src/examples/slickgrid/utilities.ts | 27 +- with-i18n-translate/yarn.lock | 652 +++++++++------- 51 files changed, 1862 insertions(+), 874 deletions(-) create mode 100644 with-i18n-translate/src/examples/slickgrid/Example51.tsx create mode 100644 with-i18n-translate/src/examples/slickgrid/example51.scss diff --git a/single-locale-without-i18n/package.json b/single-locale-without-i18n/package.json index 8382de1..0a6af66 100644 --- a/single-locale-without-i18n/package.json +++ b/single-locale-without-i18n/package.json @@ -30,31 +30,28 @@ "lint": "eslint . --no-cache" }, "dependencies": { - "@slickgrid-universal/composite-editor-component": "^9.13.0", - "@slickgrid-universal/custom-tooltip-plugin": "^9.13.0", - "@slickgrid-universal/excel-export": "^9.13.0", - "@slickgrid-universal/graphql": "^9.13.0", - "@slickgrid-universal/odata": "^9.13.0", - "@slickgrid-universal/pdf-export": "^9.13.0", - "@slickgrid-universal/rxjs-observable": "^9.13.0", - "@slickgrid-universal/text-export": "^9.13.0", + "@slickgrid-universal/composite-editor-component": "^10.0.0-beta.0", + "@slickgrid-universal/custom-tooltip-plugin": "^10.0.0-beta.0", + "@slickgrid-universal/excel-export": "^10.0.0-beta.0", + "@slickgrid-universal/rxjs-observable": "^10.0.0-beta.0", + "@slickgrid-universal/text-export": "^10.0.0-beta.0", "bootstrap": "^5.3.8", "dompurify": "^3.3.1", "react": "^19.2.4", "react-dom": "^19.2.4", - "slickgrid-react": "^9.13.0" + "slickgrid-react": "^10.0.0-beta.0" }, "devDependencies": { - "@faker-js/faker": "^10.2.0", + "@faker-js/faker": "^10.3.0", "@fnando/sparkline": "^0.3.10", "@popperjs/core": "^2.11.8", "@types/fnando__sparkline": "^0.3.7", - "@types/node": "^24.10.9", - "@types/react": "^19.2.10", + "@types/node": "^24.10.13", + "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@types/sortablejs": "^1.15.9", "@types/text-encoding-utf-8": "^1.0.5", - "@vitejs/plugin-react": "^5.1.2", + "@vitejs/plugin-react": "^5.1.4", "cross-env": "^10.1.0", "eslint": "^9.39.2", "eslint-plugin-import": "^2.32.0", @@ -62,15 +59,15 @@ "eslint-plugin-prefer-arrow": "^1.2.3", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^7.0.1", - "globals": "^17.2.0", + "globals": "^17.3.0", "react-router-dom": "^7.13.0", "rxjs": "^7.8.2", "sass": "^1.97.3", "typescript": "^5.9.3", - "typescript-eslint": "^8.54.0", + "typescript-eslint": "^8.55.0", "vite": "^7.3.1", "vite-plugin-svgr": "^4.5.0", - "vite-tsconfig-paths": "^6.0.5" + "vite-tsconfig-paths": "^6.1.1" }, "engines": { "node": ">=20.0.0" diff --git a/single-locale-without-i18n/src/examples/slickgrid/Example2.tsx b/single-locale-without-i18n/src/examples/slickgrid/Example2.tsx index 90026d8..89a7ad2 100644 --- a/single-locale-without-i18n/src/examples/slickgrid/Example2.tsx +++ b/single-locale-without-i18n/src/examples/slickgrid/Example2.tsx @@ -2,7 +2,6 @@ import { ExcelExportService } from '@slickgrid-universal/excel-export'; import { TextExportService } from '@slickgrid-universal/text-export'; import React, { useEffect, useRef, useState } from 'react'; import { - DelimiterType, Filters, Formatters, SlickgridReact, @@ -81,7 +80,7 @@ const Example2: React.FC = () => { const gridOptions: GridOption = { autoResize: { container: '#demo-container', - rightPadding: 10 + rightPadding: 10, }, // use a Single Custom Locales set locale: 'fr', // this helps certain elements to know which locale to use, for example the Date Filter/Editor @@ -92,10 +91,10 @@ const Example2: React.FC = () => { checkboxSelector: { // you can toggle these 2 properties to show the "select all" checkbox in different location hideInFilterHeaderRow: false, - hideInColumnTitleRow: true + hideInColumnTitleRow: true, }, enableCheckboxSelector: true, - enableRowSelection: true, + enableSelection: true, showCustomFooter: true, // display some metrics in the bottom custom footer customFooterOptions: { // optionally display some text on the left footer container @@ -142,7 +141,7 @@ const Example2: React.FC = () => { textExportOptions: { // set at the grid option level, meaning all column will evaluate the Formatter (when it has a Formatter defined) exportWithFormatter: true, - sanitizeDataExport: true + sanitizeDataExport: true, }, externalResources: [excelExportService, textExportService], }; @@ -209,7 +208,7 @@ const Example2: React.FC = () => { function exportToFile(type = 'csv') { textExportService.exportToFile({ - delimiter: type === 'csv' ? DelimiterType.comma : DelimiterType.tab, + delimiter: type === 'csv' ? ',' : '\t', filename: 'myExport', format: type === 'csv' ? 'csv' : 'txt', }); @@ -235,8 +234,6 @@ const Example2: React.FC = () => {

Example 2: Localization with Locales - French Locale displayed - -

+ { gridHeight: 225, gridWidth: 800, rowHeight: 33, - enableHybridSelection: true, - rowSelectionOptions: { + enableSelection: true, + selectionOptions: { selectionType: 'row', }, }; diff --git a/single-locale-without-i18n/src/examples/slickgrid/locales/fr.ts b/single-locale-without-i18n/src/examples/slickgrid/locales/fr.ts index 3777060..b03669e 100644 --- a/single-locale-without-i18n/src/examples/slickgrid/locales/fr.ts +++ b/single-locale-without-i18n/src/examples/slickgrid/locales/fr.ts @@ -6,6 +6,7 @@ export const localeFrench = { TEXT_CLEAR_ALL_SORTING: 'Supprimer tous les tris', TEXT_COLLAPSE_ALL_GROUPS: 'Réduire tous les groupes', TEXT_COLUMNS: 'Colonnes', + TEXT_COLUMN_RESIZE_BY_CONTENT: 'Redimensionner par contenu', TEXT_COMMANDS: 'Commandes', TEXT_CONTAINS: 'Contient', TEXT_COPY: 'Copier', diff --git a/single-locale-without-i18n/yarn.lock b/single-locale-without-i18n/yarn.lock index 2bc26b1..5f43054 100644 --- a/single-locale-without-i18n/yarn.lock +++ b/single-locale-without-i18n/yarn.lock @@ -39,6 +39,15 @@ js-tokens "^4.0.0" picocolors "^1.1.1" +"@babel/code-frame@^7.28.6", "@babel/code-frame@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.0.tgz#7cd7a59f15b3cc0dcd803038f7792712a7d0b15c" + integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw== + dependencies: + "@babel/helper-validator-identifier" "^7.28.5" + js-tokens "^4.0.0" + picocolors "^1.1.1" + "@babel/compat-data@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.7.tgz#b8479fe0018ef0ac87b6b7a5c6916fcd67ae2c9c" @@ -49,6 +58,11 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.27.5.tgz#7d0658ec1a8420fc866d1df1b03bea0e79934c82" integrity sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg== +"@babel/compat-data@^7.28.6": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.0.tgz#00d03e8c0ac24dd9be942c5370990cbe1f17d88d" + integrity sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg== + "@babel/core@^7.21.3": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.7.tgz#1b3d144157575daf132a3bc80b2b18e6e3ca6ece" @@ -70,7 +84,7 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/core@^7.24.4", "@babel/core@^7.28.5": +"@babel/core@^7.24.4": version "7.28.5" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.5.tgz#4c81b35e51e1b734f510c99b07dfbc7bbbb48f7e" integrity sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw== @@ -91,6 +105,27 @@ json5 "^2.2.3" semver "^6.3.1" +"@babel/core@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.0.tgz#5286ad785df7f79d656e88ce86e650d16ca5f322" + integrity sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA== + dependencies: + "@babel/code-frame" "^7.29.0" + "@babel/generator" "^7.29.0" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-module-transforms" "^7.28.6" + "@babel/helpers" "^7.28.6" + "@babel/parser" "^7.29.0" + "@babel/template" "^7.28.6" + "@babel/traverse" "^7.29.0" + "@babel/types" "^7.29.0" + "@jridgewell/remapping" "^2.3.5" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + "@babel/generator@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.7.tgz#de86acbeb975a3e11ee92dd52223e6b03b479c56" @@ -134,6 +169,17 @@ "@jridgewell/trace-mapping" "^0.3.28" jsesc "^3.0.2" +"@babel/generator@^7.29.0": + version "7.29.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.1.tgz#d09876290111abbb00ef962a7b83a5307fba0d50" + integrity sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw== + dependencies: + "@babel/parser" "^7.29.0" + "@babel/types" "^7.29.0" + "@jridgewell/gen-mapping" "^0.3.12" + "@jridgewell/trace-mapping" "^0.3.28" + jsesc "^3.0.2" + "@babel/helper-compilation-targets@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz#11260ac3322dda0ef53edfae6e97b961449f5fa4" @@ -156,6 +202,17 @@ lru-cache "^5.1.1" semver "^6.3.1" +"@babel/helper-compilation-targets@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz#32c4a3f41f12ed1532179b108a4d746e105c2b25" + integrity sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA== + dependencies: + "@babel/compat-data" "^7.28.6" + "@babel/helper-validator-option" "^7.27.1" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-globals@^7.28.0": version "7.28.0" resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" @@ -177,6 +234,14 @@ "@babel/traverse" "^7.27.1" "@babel/types" "^7.27.1" +"@babel/helper-module-imports@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz#60632cbd6ffb70b22823187201116762a03e2d5c" + integrity sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw== + dependencies: + "@babel/traverse" "^7.28.6" + "@babel/types" "^7.28.6" + "@babel/helper-module-transforms@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz#2ac9372c5e001b19bc62f1fe7d96a18cb0901d1a" @@ -196,6 +261,15 @@ "@babel/helper-validator-identifier" "^7.27.1" "@babel/traverse" "^7.28.3" +"@babel/helper-module-transforms@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz#9312d9d9e56edc35aeb6e95c25d4106b50b9eb1e" + integrity sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA== + dependencies: + "@babel/helper-module-imports" "^7.28.6" + "@babel/helper-validator-identifier" "^7.28.5" + "@babel/traverse" "^7.28.6" + "@babel/helper-plugin-utils@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" @@ -265,6 +339,14 @@ "@babel/template" "^7.27.2" "@babel/types" "^7.28.4" +"@babel/helpers@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.6.tgz#fca903a313ae675617936e8998b814c415cbf5d7" + integrity sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw== + dependencies: + "@babel/template" "^7.28.6" + "@babel/types" "^7.28.6" + "@babel/highlight@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" @@ -312,6 +394,13 @@ dependencies: "@babel/types" "^7.28.2" +"@babel/parser@^7.28.6", "@babel/parser@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.0.tgz#669ef345add7d057e92b7ed15f0bac07611831b6" + integrity sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww== + dependencies: + "@babel/types" "^7.29.0" + "@babel/plugin-transform-react-jsx-self@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz#af678d8506acf52c577cac73ff7fe6615c85fc92" @@ -326,16 +415,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/runtime@^7.12.5": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.6.tgz#d267a43cb1836dc4d182cce93ae75ba954ef6d2b" - integrity sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA== - -"@babel/runtime@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.4.tgz#a70226016fabe25c5783b2f22d3e1c9bc5ca3326" - integrity sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ== - "@babel/template@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.7.tgz#27f69ce382855d915b14ab0fe5fb4cbf88fa0769" @@ -354,6 +433,15 @@ "@babel/parser" "^7.27.2" "@babel/types" "^7.27.1" +"@babel/template@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.28.6.tgz#0e7e56ecedb78aeef66ce7972b082fce76a23e57" + integrity sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ== + dependencies: + "@babel/code-frame" "^7.28.6" + "@babel/parser" "^7.28.6" + "@babel/types" "^7.28.6" + "@babel/traverse@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.7.tgz#83e367619be1cab8e4f2892ef30ba04c26a40fa8" @@ -406,6 +494,19 @@ "@babel/types" "^7.28.5" debug "^4.3.1" +"@babel/traverse@^7.28.6", "@babel/traverse@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.0.tgz#f323d05001440253eead3c9c858adbe00b90310a" + integrity sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA== + dependencies: + "@babel/code-frame" "^7.29.0" + "@babel/generator" "^7.29.0" + "@babel/helper-globals" "^7.28.0" + "@babel/parser" "^7.29.0" + "@babel/template" "^7.28.6" + "@babel/types" "^7.29.0" + debug "^4.3.1" + "@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.21.3", "@babel/types@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.7.tgz#1b7725c1d3a59f328cb700ce704c46371e6eef9b" @@ -447,6 +548,14 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.28.5" +"@babel/types@^7.28.6", "@babel/types@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7" + integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A== + dependencies: + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" + "@epic-web/invariant@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@epic-web/invariant/-/invariant-1.0.0.tgz#1073e5dee6dd540410784990eb73e4acd25c9813" @@ -681,17 +790,17 @@ "@eslint/core" "^0.17.0" levn "^0.4.1" -"@excel-builder-vanilla/types@^4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@excel-builder-vanilla/types/-/types-4.2.1.tgz#663e913bb88087bde5bf42f0f8be9d1bd2762bfd" - integrity sha512-AtVzHKfH7TtRTH7Yczwu6SMXYhmvO+W6H2L4ktg7JesK4cHSS7FinzFk+zkPWs2ROZEXYHLZxJTGY7OrhiOTjw== +"@excel-builder-vanilla/types@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@excel-builder-vanilla/types/-/types-5.0.0.tgz#5c5ab00a13baa8a9d49ff4d5442c98db70f07311" + integrity sha512-k0qMo9+velvx2EJne0gwT1NacDRCIWdCHpwTu5hjuRKrr1BzKCiTqgBKUf9zL74HIU7dejoWl3wgguWrccTFXg== dependencies: fflate "^0.8.2" -"@faker-js/faker@^10.2.0": - version "10.2.0" - resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-10.2.0.tgz#91028d4086969825795de331c305e8b91414bcb7" - integrity sha512-rTXwAsIxpCqzUnZvrxVh3L0QA0NzToqWBLAhV+zDV3MIIwiQhAZHMdPCIaj5n/yADu/tyk12wIPgL6YHGXJP+g== +"@faker-js/faker@^10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-10.3.0.tgz#d56b68e4f1dd090152029fe91d2f8505389947f2" + integrity sha512-It0Sne6P3szg7JIi6CgKbvTZoMjxBZhcv91ZrqrNuaZQfB5WoqYYbzCUOq89YR+VY8juY9M1vDWmDDa2TzfXCw== "@fnando/sparkline@^0.3.10": version "0.3.10" @@ -912,10 +1021,10 @@ resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== -"@rolldown/pluginutils@1.0.0-beta.53": - version "1.0.0-beta.53" - resolved "https://registry.yarnpkg.com/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.53.tgz#c57a5234ae122671aff6fe72e673a7ed90f03f87" - integrity sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ== +"@rolldown/pluginutils@1.0.0-rc.3": + version "1.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz#8a88cc92a0f741befc7bc109cb1a4c6b9408e1c5" + integrity sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q== "@rollup/pluginutils@^5.2.0": version "5.3.0" @@ -1031,142 +1140,109 @@ resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== -"@slickgrid-universal/binding@9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/binding/-/binding-9.13.0.tgz#ea4f3c7788d3943efe4f1659cf4ebdd33e3c149a" - integrity sha512-/3mWCmmekDsW8dXhcaodCgmasD9WMeWNtcD/NKWCYmYERx52EDUOVNxWf8tcpCFlN+eV8smAnTxWGPFZG7Oxaw== +"@slickgrid-universal/binding@10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/binding/-/binding-10.0.0-beta.0.tgz#c88cbc256ead14073b56dd68dc2b9192899efaa2" + integrity sha512-Wnm554nAJ/ZtPCc40k0jnFPWiVKKAxlN8uSxMor72xNjF4bUGjx2+lgoEWNDREGSbIT+VjQgiPuREjO0wtOwJg== -"@slickgrid-universal/common@9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/common/-/common-9.13.0.tgz#1063f7cf7b6b95ced61cc0eb9c468894d2905c86" - integrity sha512-azi6T/xQXFvzehMP3My33jlY2OgjPXf0qjDzqToe/90ijI/JKZQV99o7LUjHpqQAKpPGHpukiPZTV5az3gzvNA== +"@slickgrid-universal/common@10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/common/-/common-10.0.0-beta.0.tgz#90c591c698551aeece5c7a0f6f7951c701f5b978" + integrity sha512-3v8yztIrdO2PryD35LQ/EcFHugSHTz74TXR9D81WdjimNTCpKjMjQ2A1hsmStSg9OQX8DdmZgY9NygIpA7PuuQ== dependencies: - "@excel-builder-vanilla/types" "^4.2.1" + "@excel-builder-vanilla/types" "^5.0.0" "@formkit/tempo" "^1.0.0" - "@slickgrid-universal/binding" "9.13.0" - "@slickgrid-universal/event-pub-sub" "9.13.0" - "@slickgrid-universal/utils" "9.13.0" + "@slickgrid-universal/binding" "10.0.0-beta.0" + "@slickgrid-universal/event-pub-sub" "10.0.0-beta.0" + "@slickgrid-universal/utils" "10.0.0-beta.0" "@types/sortablejs" "^1.15.9" "@types/trusted-types" "^2.0.7" autocompleter "^9.3.2" dequal "^2.0.3" - multiple-select-vanilla "^4.4.1" - sortablejs "^1.15.6" + multiple-select-vanilla "^5.0.0" + sortablejs "^1.15.7" un-flatten-tree "^2.0.12" vanilla-calendar-pro "^3.1.0" -"@slickgrid-universal/composite-editor-component@^9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/composite-editor-component/-/composite-editor-component-9.13.0.tgz#bb3f0a991d9c544d93a1fc75e04eeec542605d95" - integrity sha512-MbD3dwaQf8z6ZLL2PJ0gu+9eMArQDuuo1cPTr8DuvulcPCzpQSARgp2koicFxUzBiRbpGVjGoqTdiyQbJ+9DAQ== +"@slickgrid-universal/composite-editor-component@^10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/composite-editor-component/-/composite-editor-component-10.0.0-beta.0.tgz#cdc7f9f93450c966e3984c35abac30a68d439e2f" + integrity sha512-Jgcc5LyMZlB/kCaaOtZ4cZRdMIstAdoBibnT9+l/5nsnDNojX2ZavmuuvbF0jMmSAVwhL0S+DBAL9y9jGluLVg== dependencies: - "@slickgrid-universal/binding" "9.13.0" - "@slickgrid-universal/common" "9.13.0" - "@slickgrid-universal/utils" "9.13.0" + "@slickgrid-universal/binding" "10.0.0-beta.0" + "@slickgrid-universal/common" "10.0.0-beta.0" + "@slickgrid-universal/utils" "10.0.0-beta.0" -"@slickgrid-universal/custom-footer-component@9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/custom-footer-component/-/custom-footer-component-9.13.0.tgz#f93d413630f6f69296a63e8b6643d90ec55e7539" - integrity sha512-8rmWNMNZ+tdyCw8AjgsWwyLZQYjAe22guwWW4F/rzOPHRZdCiUX9b1CeHzPDTZWGS/DSULQuVsxbWME4JDwrrQ== +"@slickgrid-universal/custom-footer-component@10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/custom-footer-component/-/custom-footer-component-10.0.0-beta.0.tgz#dcb35bbb30ee878b49cbc14df09312555ceff352" + integrity sha512-OQlLfhCjHvCUP0Cyk95J7zlPyDHM+H+RieyjhLP1XFu/n6wi/ryWSCxzb6QCWPqwRWaKgGAPtd+eJl/Bmx1Zkw== dependencies: "@formkit/tempo" "^1.0.0" - "@slickgrid-universal/binding" "9.13.0" - "@slickgrid-universal/common" "9.13.0" - -"@slickgrid-universal/custom-tooltip-plugin@^9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/custom-tooltip-plugin/-/custom-tooltip-plugin-9.13.0.tgz#fdbd8dc4d428be48a84183a8359255d654eb0c8c" - integrity sha512-rBWRKpwcSYjFLRESghFKrXvrp7xYhZ27VNtl+wk9jeUpUnL1pWK95OvSMt4KugHQp98vprChmF+OYwJ/rvYdIQ== - dependencies: - "@slickgrid-universal/binding" "9.13.0" - "@slickgrid-universal/common" "9.13.0" - "@slickgrid-universal/utils" "9.13.0" - -"@slickgrid-universal/empty-warning-component@9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/empty-warning-component/-/empty-warning-component-9.13.0.tgz#9c045abd78d97a90ac80bef24141869bf973f4f4" - integrity sha512-11OQYqAFIQ8hKbj4i6Rh1WC9vFjaQqZ75fLSAJeRB+ow7TOa/M7PWP749Jk3A+V8hKhzIF0rNGZ5BZyMJQ5cQw== - dependencies: - "@slickgrid-universal/common" "9.13.0" - -"@slickgrid-universal/event-pub-sub@9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/event-pub-sub/-/event-pub-sub-9.13.0.tgz#f221ddd5743143b5d532f00b2fb0a24048332372" - integrity sha512-PHacS+HbROsiDid4WwA08lC6b8U+fn4NgEPRriG99DAyHTpGuJRCaZyhGkmuhSbUpcZ8IB6g0igcVWWW0c89gw== - dependencies: - "@slickgrid-universal/utils" "9.13.0" + "@slickgrid-universal/binding" "10.0.0-beta.0" + "@slickgrid-universal/common" "10.0.0-beta.0" -"@slickgrid-universal/excel-export@^9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/excel-export/-/excel-export-9.13.0.tgz#02f5f8cffb577b3a6350a23f1ad796457f076cee" - integrity sha512-4AcDVTH+Atz1W2EGWaGtP4syPdza/FUs2mrTutB7/hBeUuDxCp2jXKTACkbYEGpSY3jfdL8JlKXt4R9EtpeO3w== +"@slickgrid-universal/custom-tooltip-plugin@^10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/custom-tooltip-plugin/-/custom-tooltip-plugin-10.0.0-beta.0.tgz#b7fd935dcc52687a913690727e4afb9ab6bd0bda" + integrity sha512-CkYA3gPcgXmzrrcvHpFkpH/Yg3z2cTF5DCEik7uE9nB9oxo4UijSYTSCaVqsImT5G/zhwNMBORw6vun94KQ4tA== dependencies: - "@slickgrid-universal/common" "9.13.0" - "@slickgrid-universal/utils" "9.13.0" - excel-builder-vanilla "^4.2.1" + "@slickgrid-universal/binding" "10.0.0-beta.0" + "@slickgrid-universal/common" "10.0.0-beta.0" + "@slickgrid-universal/utils" "10.0.0-beta.0" -"@slickgrid-universal/graphql@^9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/graphql/-/graphql-9.13.0.tgz#a76f9638adb565ca4f597f79ea3534106769f0ba" - integrity sha512-eVnWfIFd1KCjqrCHkByV/2s5iXSteZYbTSDM2HAb+lSw9gpLFbjBjBRjkwBgWus5LIgDXVqPXuhOwhWOST263A== +"@slickgrid-universal/empty-warning-component@10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/empty-warning-component/-/empty-warning-component-10.0.0-beta.0.tgz#5f804a5909362e5f89fce76d7dfa5ef742bbfefa" + integrity sha512-qMBjdzLnqaOFguMPyuy8GXigotvySDLHunUcVQfsE/8rfOwO2/6PNhHiV99Gqa3joZeM2c/0YD+47bAEYGvqmw== dependencies: - "@slickgrid-universal/common" "9.13.0" - "@slickgrid-universal/utils" "9.13.0" + "@slickgrid-universal/common" "10.0.0-beta.0" -"@slickgrid-universal/odata@^9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/odata/-/odata-9.13.0.tgz#371df1665dbe27f633732b10a819e6047dd2c7ed" - integrity sha512-u5Eq3kz0fwiDNr6Rm3hIcROKXlfyK97EMhOfFnIYH+D3q1ZI7MrXhcaRNsRcK+hDtvkXxpAkpTBoWID27NAnxg== +"@slickgrid-universal/event-pub-sub@10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/event-pub-sub/-/event-pub-sub-10.0.0-beta.0.tgz#07ce38822de0d36a2d806dbcc2e916e70eb15a1d" + integrity sha512-qgmXUHDEL/6TacoJgIInc/KRUjvw/KOmJz6Smv48agQ57/bViPQH3kYhkw7Ls4F6E56B349+SNLJBKsIl/EDfA== dependencies: - "@slickgrid-universal/common" "9.13.0" - "@slickgrid-universal/utils" "9.13.0" + "@slickgrid-universal/utils" "10.0.0-beta.0" -"@slickgrid-universal/pagination-component@9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/pagination-component/-/pagination-component-9.13.0.tgz#acfbf6e77908bf8c8745a8123a02c707f44cec4c" - integrity sha512-xa4HdrYll1Kd8a6BGFiHcMVnxokf5NlKf86QlxPWzSIcFLLZFCSdCSE1pO9KorPw3mi83BSTh9ykQTCP52QXzw== +"@slickgrid-universal/excel-export@^10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/excel-export/-/excel-export-10.0.0-beta.0.tgz#3d57b196878f9962450881740df38fa7fbbf569d" + integrity sha512-5JXoz70JlTZ0y5UDv/ejygDs6y7NTFeFA40ali6A3GeClX/X/2wh+XkDF1gTkD+K06J2m47eGmn/jtM3M8wf7w== dependencies: - "@slickgrid-universal/binding" "9.13.0" - "@slickgrid-universal/common" "9.13.0" + "@slickgrid-universal/common" "10.0.0-beta.0" + "@slickgrid-universal/utils" "10.0.0-beta.0" + excel-builder-vanilla "^5.0.0" -"@slickgrid-universal/pdf-export@^9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/pdf-export/-/pdf-export-9.13.0.tgz#49b7f96557b5c0f9c0cf0486bfc66bd551793e6a" - integrity sha512-Q8UT+4zESiNMmDgQDNR0UX7OMPGz+THiICCb/JKkkUGQjyj+OPzs1TtVkbjPNdgXdk6dOB/EXc46T21TCCWo0Q== +"@slickgrid-universal/pagination-component@10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/pagination-component/-/pagination-component-10.0.0-beta.0.tgz#b49e5e461e8fb70c0183fa2c6c76b97e5002c5f2" + integrity sha512-Nm0H91F+9o+wi5EVVSpeedYje6/pRsR7S67iyWkbBizBgn50Okzfl+kwwzKk5mjxvYo95HxTkjwxQH2G4xuPKw== dependencies: - "@slickgrid-universal/common" "9.13.0" - "@slickgrid-universal/utils" "9.13.0" - jspdf "^4.0.0" + "@slickgrid-universal/binding" "10.0.0-beta.0" + "@slickgrid-universal/common" "10.0.0-beta.0" -"@slickgrid-universal/row-detail-view-plugin@9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/row-detail-view-plugin/-/row-detail-view-plugin-9.13.0.tgz#4a78cc66cc8e8d0ced6e830bc34fbab0686430d9" - integrity sha512-8DvLouWwdqFl2o/4iObUOhpCSYfPHVWbK0lLRBYD7bkQHbWNj5bvI9aQr8QY7bo5OTZcED7D8yG5fSSXKnmx/Q== +"@slickgrid-universal/rxjs-observable@^10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/rxjs-observable/-/rxjs-observable-10.0.0-beta.0.tgz#56107e1b2db7d400c00efcc5961a40845e857b7f" + integrity sha512-pXgkKGRziMtD+fMSQBAi7Dlr5aPK0PEu1Xb4+MnR55kXg607hzrCgIYBxCjtqEB+FR8UeeROF+TUcHDjgsNs/g== dependencies: - "@slickgrid-universal/common" "9.13.0" - "@slickgrid-universal/utils" "9.13.0" - -"@slickgrid-universal/rxjs-observable@^9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/rxjs-observable/-/rxjs-observable-9.13.0.tgz#2f53e8a3582628207d367ea366086e3bdf9907e7" - integrity sha512-VntBUxja036QwC4u8TdSetmD1vw6gIt6eswhcteqNdJTTkbsMrVYNH3xPtxESRPE+JMn2fZnd9JMb2uEXs5BoQ== - dependencies: - "@slickgrid-universal/common" "9.13.0" + "@slickgrid-universal/common" "10.0.0-beta.0" rxjs "^7.8.2" -"@slickgrid-universal/text-export@^9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/text-export/-/text-export-9.13.0.tgz#42ad1f74d6c631cc8b424a35e9e36e3c205980a4" - integrity sha512-7G8oEZGXDgvc0sAfJPMqvt7DWIsExSq/pyBTqLdaCZ9K5ytwYy8b4SrluySx2meGWj2PZs2/qo5/RL1ExiVpTw== +"@slickgrid-universal/text-export@^10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/text-export/-/text-export-10.0.0-beta.0.tgz#02348336860215c3f338869f84eb42791a55fa08" + integrity sha512-xU+yEgXOd6oRmYVo98wCrLnPvNXHKKzvFdWWYR9JkaGV3Omi7WlJ3XEly3AHWY8AGLd0vUAT9uHolr+ugvcmww== dependencies: - "@slickgrid-universal/common" "9.13.0" - "@slickgrid-universal/utils" "9.13.0" + "@slickgrid-universal/common" "10.0.0-beta.0" + "@slickgrid-universal/utils" "10.0.0-beta.0" text-encoding-utf-8 "^1.0.2" -"@slickgrid-universal/utils@9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/utils/-/utils-9.13.0.tgz#bb543ca9194388dd6aed4d1c3c9de0d2f9af4193" - integrity sha512-0zFVPRb4o9B9BDDl2lukz3w3z1SRDAFP9IbXb30pivERBYsg/eRPlo2zTiY2YlUFExAsdlRfmofYbf/b4ytNRQ== +"@slickgrid-universal/utils@10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/utils/-/utils-10.0.0-beta.0.tgz#3f355b8d328b3d0d8b95f38f16bb36bfbfd0fefc" + integrity sha512-i0LvHbwYII6+CT1T/M3mxQSg3f5YLFOHWsG29Ssz2HZia4+eKeQMKigk4C9Ka+nPV4qynAE7o+b7w8jwlApDqA== "@svgr/babel-plugin-add-jsx-attribute@8.0.0": version "8.0.0" @@ -1314,32 +1390,22 @@ resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/node@^24.10.9": - version "24.10.9" - resolved "https://registry.yarnpkg.com/@types/node/-/node-24.10.9.tgz#1aeb5142e4a92957489cac12b07f9c7fe26057d0" - integrity sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw== +"@types/node@^24.10.13": + version "24.10.13" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.10.13.tgz#2fac25c0e30f3848e19912c3b8791a28370e9e07" + integrity sha512-oH72nZRfDv9lADUBSo104Aq7gPHpQZc4BTx38r9xf9pg5LfP6EzSyH2n7qFmmxRQXh7YlUXODcYsg6PuTDSxGg== dependencies: undici-types "~7.16.0" -"@types/pako@^2.0.3": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/pako/-/pako-2.0.4.tgz#c3575ef8125e176c345fa0e7b301c1db41170c15" - integrity sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw== - -"@types/raf@^3.4.0": - version "3.4.3" - resolved "https://registry.yarnpkg.com/@types/raf/-/raf-3.4.3.tgz#85f1d1d17569b28b8db45e16e996407a56b0ab04" - integrity sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw== - "@types/react-dom@^19.2.3": version "19.2.3" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-19.2.3.tgz#c1e305d15a52a3e508d54dca770d202cb63abf2c" integrity sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ== -"@types/react@^19.2.10": - version "19.2.10" - resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.10.tgz#f3ea799e6b4cebad6dfd231c238fc9de7652e2d2" - integrity sha512-WPigyYuGhgZ/cTPRXB2EwUw+XvsRA3GqHlsP4qteqrnnjDrApbS7MxcGr/hke5iUoeB7E/gQtrs9I37zAJ0Vjw== +"@types/react@^19.2.14": + version "19.2.14" + resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.14.tgz#39604929b5e3957e3a6fa0001dafb17c7af70bad" + integrity sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w== dependencies: csstype "^3.2.2" @@ -1358,111 +1424,111 @@ resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz" integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== -"@typescript-eslint/eslint-plugin@8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.54.0.tgz#d8899e5c2eccf5c4a20d01c036a193753748454d" - integrity sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ== +"@typescript-eslint/eslint-plugin@8.55.0": + version "8.55.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.55.0.tgz#086d2ef661507b561f7b17f62d3179d692a0765f" + integrity sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ== dependencies: "@eslint-community/regexpp" "^4.12.2" - "@typescript-eslint/scope-manager" "8.54.0" - "@typescript-eslint/type-utils" "8.54.0" - "@typescript-eslint/utils" "8.54.0" - "@typescript-eslint/visitor-keys" "8.54.0" + "@typescript-eslint/scope-manager" "8.55.0" + "@typescript-eslint/type-utils" "8.55.0" + "@typescript-eslint/utils" "8.55.0" + "@typescript-eslint/visitor-keys" "8.55.0" ignore "^7.0.5" natural-compare "^1.4.0" ts-api-utils "^2.4.0" -"@typescript-eslint/parser@8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.54.0.tgz#3d01a6f54ed247deb9982621f70e7abf1810bd97" - integrity sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA== +"@typescript-eslint/parser@8.55.0": + version "8.55.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.55.0.tgz#6eace4e9e95f178d3447ed1f17f3d6a5dfdb345c" + integrity sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw== dependencies: - "@typescript-eslint/scope-manager" "8.54.0" - "@typescript-eslint/types" "8.54.0" - "@typescript-eslint/typescript-estree" "8.54.0" - "@typescript-eslint/visitor-keys" "8.54.0" + "@typescript-eslint/scope-manager" "8.55.0" + "@typescript-eslint/types" "8.55.0" + "@typescript-eslint/typescript-estree" "8.55.0" + "@typescript-eslint/visitor-keys" "8.55.0" debug "^4.4.3" -"@typescript-eslint/project-service@8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.54.0.tgz#f582aceb3d752544c8e1b11fea8d95d00cf9adc6" - integrity sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g== +"@typescript-eslint/project-service@8.55.0": + version "8.55.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.55.0.tgz#b8a71c06a625bdad481c24d5614b68e252f3ae9b" + integrity sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ== dependencies: - "@typescript-eslint/tsconfig-utils" "^8.54.0" - "@typescript-eslint/types" "^8.54.0" + "@typescript-eslint/tsconfig-utils" "^8.55.0" + "@typescript-eslint/types" "^8.55.0" debug "^4.4.3" -"@typescript-eslint/scope-manager@8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.54.0.tgz#307dc8cbd80157e2772c2d36216857415a71ab33" - integrity sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg== +"@typescript-eslint/scope-manager@8.55.0": + version "8.55.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.55.0.tgz#8a0752c31c788651840dc98f840b0c2ebe143b8c" + integrity sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q== dependencies: - "@typescript-eslint/types" "8.54.0" - "@typescript-eslint/visitor-keys" "8.54.0" + "@typescript-eslint/types" "8.55.0" + "@typescript-eslint/visitor-keys" "8.55.0" -"@typescript-eslint/tsconfig-utils@8.54.0", "@typescript-eslint/tsconfig-utils@^8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.54.0.tgz#71dd7ba1674bd48b172fc4c85b2f734b0eae3dbc" - integrity sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw== +"@typescript-eslint/tsconfig-utils@8.55.0", "@typescript-eslint/tsconfig-utils@^8.55.0": + version "8.55.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.55.0.tgz#62f1d005419985e09d37a040b2f1450e4e805afa" + integrity sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q== -"@typescript-eslint/type-utils@8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.54.0.tgz#64965317dd4118346c2fa5ee94492892200e9fb9" - integrity sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA== +"@typescript-eslint/type-utils@8.55.0": + version "8.55.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.55.0.tgz#195d854b3e56308ce475fdea2165313bb1190200" + integrity sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g== dependencies: - "@typescript-eslint/types" "8.54.0" - "@typescript-eslint/typescript-estree" "8.54.0" - "@typescript-eslint/utils" "8.54.0" + "@typescript-eslint/types" "8.55.0" + "@typescript-eslint/typescript-estree" "8.55.0" + "@typescript-eslint/utils" "8.55.0" debug "^4.4.3" ts-api-utils "^2.4.0" -"@typescript-eslint/types@8.54.0", "@typescript-eslint/types@^8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.54.0.tgz#c12d41f67a2e15a8a96fbc5f2d07b17331130889" - integrity sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA== +"@typescript-eslint/types@8.55.0", "@typescript-eslint/types@^8.55.0": + version "8.55.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.55.0.tgz#8449c5a7adac61184cac92dbf6315733569708c2" + integrity sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w== -"@typescript-eslint/typescript-estree@8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.54.0.tgz#3c7716905b2b811fadbd2114804047d1bfc86527" - integrity sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA== +"@typescript-eslint/typescript-estree@8.55.0": + version "8.55.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.55.0.tgz#c83ac92c11ce79bedd984937c7780a65e7f7b2e3" + integrity sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw== dependencies: - "@typescript-eslint/project-service" "8.54.0" - "@typescript-eslint/tsconfig-utils" "8.54.0" - "@typescript-eslint/types" "8.54.0" - "@typescript-eslint/visitor-keys" "8.54.0" + "@typescript-eslint/project-service" "8.55.0" + "@typescript-eslint/tsconfig-utils" "8.55.0" + "@typescript-eslint/types" "8.55.0" + "@typescript-eslint/visitor-keys" "8.55.0" debug "^4.4.3" minimatch "^9.0.5" semver "^7.7.3" tinyglobby "^0.2.15" ts-api-utils "^2.4.0" -"@typescript-eslint/utils@8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.54.0.tgz#c79a4bcbeebb4f571278c0183ed1cb601d84c6c8" - integrity sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA== +"@typescript-eslint/utils@8.55.0": + version "8.55.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.55.0.tgz#c1744d94a3901deb01f58b09d3478d811f96d619" + integrity sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow== dependencies: "@eslint-community/eslint-utils" "^4.9.1" - "@typescript-eslint/scope-manager" "8.54.0" - "@typescript-eslint/types" "8.54.0" - "@typescript-eslint/typescript-estree" "8.54.0" + "@typescript-eslint/scope-manager" "8.55.0" + "@typescript-eslint/types" "8.55.0" + "@typescript-eslint/typescript-estree" "8.55.0" -"@typescript-eslint/visitor-keys@8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.54.0.tgz#0e4b50124b210b8600b245dd66cbad52deb15590" - integrity sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA== +"@typescript-eslint/visitor-keys@8.55.0": + version "8.55.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.55.0.tgz#3d9a40fd4e3705c63d8fae3af58988add3ed464d" + integrity sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA== dependencies: - "@typescript-eslint/types" "8.54.0" + "@typescript-eslint/types" "8.55.0" eslint-visitor-keys "^4.2.1" -"@vitejs/plugin-react@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-5.1.2.tgz#46f47be184c05a18839cb8705d79578b469ac6eb" - integrity sha512-EcA07pHJouywpzsoTUqNh5NwGayl2PPVEJKUSinGGSxFGYn+shYbqMGBg6FXDqgXum9Ou/ecb+411ssw8HImJQ== +"@vitejs/plugin-react@^5.1.4": + version "5.1.4" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-5.1.4.tgz#5b477e060bf612a7394c4febacc5de33a219b0e4" + integrity sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA== dependencies: - "@babel/core" "^7.28.5" + "@babel/core" "^7.29.0" "@babel/plugin-transform-react-jsx-self" "^7.27.1" "@babel/plugin-transform-react-jsx-source" "^7.27.1" - "@rolldown/pluginutils" "1.0.0-beta.53" + "@rolldown/pluginutils" "1.0.0-rc.3" "@types/babel__core" "^7.20.5" react-refresh "^0.18.0" @@ -1688,11 +1754,6 @@ balanced-match@^1.0.0: resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-arraybuffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc" - integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ== - bootstrap@^5.3.8: version "5.3.8" resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.8.tgz#6401a10057a22752d21f4e19055508980656aeed" @@ -1815,20 +1876,6 @@ caniuse-lite@^1.0.30001663: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001701.tgz#ad9c90301f7153cf6b3314d16cc30757285bf9e7" integrity sha512-faRs/AW3jA9nTwmJBSO1PQ6L/EOgsB5HMQQq4iCu5zhPgVVgO/pZRHlmatwijZKetFw8/Pr4q6dEN8sJuq8qTw== -canvg@^3.0.11: - version "3.0.11" - resolved "https://registry.yarnpkg.com/canvg/-/canvg-3.0.11.tgz#4b4290a6c7fa36871fac2b14e432eff33b33cf2b" - integrity sha512-5ON+q7jCTgMp9cjpu4Jo6XbvfYwSB2Ow3kzHKfIyJfaCAOHLbdKPQqGKgfED/R5B+3TFFfe8pegYA+b423SRyA== - dependencies: - "@babel/runtime" "^7.12.5" - "@types/raf" "^3.4.0" - core-js "^3.8.3" - raf "^3.4.1" - regenerator-runtime "^0.13.7" - rgbcolor "^1.0.1" - stackblur-canvas "^2.0.0" - svg-pathdata "^6.0.3" - chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" @@ -1892,11 +1939,6 @@ cookie@^1.0.1: resolved "https://registry.yarnpkg.com/cookie/-/cookie-1.0.2.tgz#27360701532116bd3f1f9416929d176afe1e4610" integrity sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA== -core-js@^3.6.0, core-js@^3.8.3: - version "3.48.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.48.0.tgz#1f813220a47bbf0e667e3885c36cd6f0593bf14d" - integrity sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ== - cosmiconfig@^8.1.3: version "8.3.6" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" @@ -1924,13 +1966,6 @@ cross-spawn@^7.0.6: shebang-command "^2.0.0" which "^2.0.1" -css-line-break@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-line-break/-/css-line-break-2.1.0.tgz#bfef660dfa6f5397ea54116bb3cb4873edbc4fa0" - integrity sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w== - dependencies: - utrie "^1.0.2" - csstype@^3.2.2: version "3.2.3" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.2.3.tgz#ec48c0f3e993e50648c86da559e2610995cf989a" @@ -2068,7 +2103,7 @@ doctrine@^2.1.0: dependencies: esutils "^2.0.2" -dompurify@^3.2.4, dompurify@^3.3.1: +dompurify@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.3.1.tgz#c7e1ddebfe3301eacd6c0c12a4af284936dbbb86" integrity sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q== @@ -2725,10 +2760,10 @@ esutils@^2.0.2: resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -excel-builder-vanilla@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/excel-builder-vanilla/-/excel-builder-vanilla-4.2.1.tgz#c6c0f6ca8f7aaa0b3a660343f9359b3fe718d4dc" - integrity sha512-lqQ7WtIvJcVfuGi64/QOIkjEoqypr8P9YIYiR1LdRXCuPvdC8olvf3EoGeFsorkJt4Ml56qBUDthQIYz83H1Qg== +excel-builder-vanilla@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/excel-builder-vanilla/-/excel-builder-vanilla-5.0.0.tgz#5d5f416d7611c91fe3031b3a6e7f5729c38714fa" + integrity sha512-oLOWQ5/RTA2RMvO8PkXZc1sreOpjF7MGw4LNfJQdABPUYjwdY5qng/LVN1i9bVQ85jmZN3gD2NBu5VCChjnqrQ== dependencies: fflate "^0.8.2" @@ -2747,21 +2782,12 @@ fast-levenshtein@^2.0.6: resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fast-png@^6.2.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/fast-png/-/fast-png-6.4.0.tgz#807fc353ccab060d09151b7d082786e02d8e92d6" - integrity sha512-kAqZq1TlgBjZcLr5mcN6NP5Rv4V2f22z00c3g8vRrwkcqjerx7BEhPbOnWCPqaHUl2XWQBJQvOT/FQhdMT7X/Q== - dependencies: - "@types/pako" "^2.0.3" - iobuffer "^5.3.2" - pako "^2.1.0" - fdir@^6.5.0: version "6.5.0" resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== -fflate@^0.8.1, fflate@^0.8.2: +fflate@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.8.2.tgz#fc8631f5347812ad6028bbe4a2308b2792aa1dea" integrity sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A== @@ -2988,10 +3014,10 @@ globals@^15.11.0: resolved "https://registry.yarnpkg.com/globals/-/globals-15.11.0.tgz#b96ed4c6998540c6fb824b24b5499216d2438d6e" integrity sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw== -globals@^17.2.0: - version "17.2.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-17.2.0.tgz#41d29408d6f5408457d2ef965d29215e3026779f" - integrity sha512-tovnCz/fEq+Ripoq+p/gN1u7l6A7wwkoBT9pRCzTHzsD/LvADIzXZdjmRymh5Ztf0DYC3Rwg5cZRYjxzBmzbWg== +globals@^17.3.0: + version "17.3.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-17.3.0.tgz#8b96544c2fa91afada02747cc9731c002a96f3b9" + integrity sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw== globalthis@^1.0.3: version "1.0.3" @@ -3133,14 +3159,6 @@ hermes-parser@^0.25.1: dependencies: hermes-estree "0.25.1" -html2canvas@^1.0.0-rc.5: - version "1.4.1" - resolved "https://registry.yarnpkg.com/html2canvas/-/html2canvas-1.4.1.tgz#7cef1888311b5011d507794a066041b14669a543" - integrity sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA== - dependencies: - css-line-break "^2.1.0" - text-segmentation "^1.0.3" - ignore@^5.2.0: version "5.2.4" resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" @@ -3201,11 +3219,6 @@ internal-slot@^1.1.0: hasown "^2.0.2" side-channel "^1.1.0" -iobuffer@^5.3.2: - version "5.4.0" - resolved "https://registry.yarnpkg.com/iobuffer/-/iobuffer-5.4.0.tgz#f85dff957fd0579257472f0a4cfe5ed3430e63e1" - integrity sha512-DRebOWuqDvxunfkNJAlc3IzWIPD5xVxwUNbHr7xKB8E6aLJxIPfNX3CoMJghcFjpv6RWQsrcJbghtEwSPoJqMA== - is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz" @@ -3597,20 +3610,6 @@ json5@^2.2.3: resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -jspdf@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jspdf/-/jspdf-4.0.0.tgz#3731c0a1a7d8afe28c681891236f8ad4a662d893" - integrity sha512-w12U97Z6edKd2tXDn3LzTLg7C7QLJlx0BPfM3ecjK2BckUl9/81vZ+r5gK4/3KQdhAcEZhENUxRhtgYBj75MqQ== - dependencies: - "@babel/runtime" "^7.28.4" - fast-png "^6.2.0" - fflate "^0.8.1" - optionalDependencies: - canvg "^3.0.11" - core-js "^3.6.0" - dompurify "^3.2.4" - html2canvas "^1.0.0-rc.5" - "jsx-ast-utils@^2.4.1 || ^3.0.0": version "3.3.5" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" @@ -3723,10 +3722,10 @@ ms@^2.1.1, ms@^2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -multiple-select-vanilla@^4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/multiple-select-vanilla/-/multiple-select-vanilla-4.4.1.tgz#bf42a38d17f3629e895ea19a1d82faa7fab8dd9f" - integrity sha512-vG8Ea0ovHKrhi1FvpYlnNpDed1I6JzHyFoDtznRTH7A00y/t6MKGSKMs7cNp8mpXUnWb7WZr3/k0naFjg3qeCw== +multiple-select-vanilla@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/multiple-select-vanilla/-/multiple-select-vanilla-5.0.0.tgz#a9a8b1fdd959169315bd2a9c940121b777010ab3" + integrity sha512-sdYPD/6C1zgfqFQsCHWUBYsM9+XWAw7Hrdf1EepcAOPxFTnT/wzGdbPTNAdZszf1l/AyHDi6QKhP9bqXiRI2wQ== dependencies: "@types/trusted-types" "^2.0.7" @@ -3898,11 +3897,6 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -pako@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" - integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" @@ -3940,11 +3934,6 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== - picocolors@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" @@ -4008,13 +3997,6 @@ punycode@^2.1.0: resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== -raf@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" - integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== - dependencies: - performance-now "^2.1.0" - react-dom@^19.2.4: version "19.2.4" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.2.4.tgz#6fac6bd96f7db477d966c7ec17c1a2b1ad8e6591" @@ -4071,11 +4053,6 @@ reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9: get-proto "^1.0.1" which-builtin-type "^1.2.1" -regenerator-runtime@^0.13.7: - version "0.13.11" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== - regexp.prototype.flags@^1.5.1: version "1.5.1" resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz" @@ -4135,11 +4112,6 @@ resolve@^2.0.0-next.5: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -rgbcolor@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rgbcolor/-/rgbcolor-1.0.1.tgz#d6505ecdb304a6595da26fa4b43307306775945d" - integrity sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw== - rollup@^4.43.0: version "4.46.2" resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.46.2.tgz#09b1a45d811e26d09bed63dc3ecfb6831c16ce32" @@ -4396,20 +4368,19 @@ side-channel@^1.1.0: side-channel-map "^1.0.1" side-channel-weakmap "^1.0.2" -slickgrid-react@^9.13.0: - version "9.13.0" - resolved "https://registry.yarnpkg.com/slickgrid-react/-/slickgrid-react-9.13.0.tgz#0527af73ea0726e8d006d4662ae92075abe51803" - integrity sha512-nrFa8MuOyTeNSlKEA3yNcpBXHbIl0mmbTZnfFR7Kty6OPrvgUbMwxaOWR/UZ88qKbLte08McdlEifn65Z5bfVg== - dependencies: - "@slickgrid-universal/common" "9.13.0" - "@slickgrid-universal/custom-footer-component" "9.13.0" - "@slickgrid-universal/empty-warning-component" "9.13.0" - "@slickgrid-universal/event-pub-sub" "9.13.0" - "@slickgrid-universal/pagination-component" "9.13.0" - "@slickgrid-universal/row-detail-view-plugin" "9.13.0" - "@slickgrid-universal/utils" "9.13.0" +slickgrid-react@^10.0.0-beta.0: + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/slickgrid-react/-/slickgrid-react-10.0.0-beta.0.tgz#f5fbedb062916f2a4780652427903db9082c97a0" + integrity sha512-aEaA+/x33f+0Nc57vr9S5KXAGwCJQSASxaoFCVq5k7S8IEEwKN33QY2ynE+RQAi22QR8ZmQ6x+EZ7TfHgkgQVg== + dependencies: + "@slickgrid-universal/common" "10.0.0-beta.0" + "@slickgrid-universal/custom-footer-component" "10.0.0-beta.0" + "@slickgrid-universal/empty-warning-component" "10.0.0-beta.0" + "@slickgrid-universal/event-pub-sub" "10.0.0-beta.0" + "@slickgrid-universal/pagination-component" "10.0.0-beta.0" + "@slickgrid-universal/utils" "10.0.0-beta.0" dequal "^2.0.3" - sortablejs "^1.15.6" + sortablejs "^1.15.7" snake-case@^3.0.4: version "3.0.4" @@ -4419,10 +4390,10 @@ snake-case@^3.0.4: dot-case "^3.0.4" tslib "^2.0.3" -sortablejs@^1.15.6: - version "1.15.6" - resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.15.6.tgz#ff93699493f5b8ab8d828f933227b4988df1d393" - integrity sha512-aNfiuwMEpfBM/CN6LY0ibyhxPfPbyFeBTYJKCvzkJ2GkUpazIt3H+QIPAMHwqQ7tMKaHz1Qj+rJJCqljnf4p3A== +sortablejs@^1.15.7: + version "1.15.7" + resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.15.7.tgz#83a0bddc472117ee328dea20b2e6f490fed20f86" + integrity sha512-Kk8wLQPlS+yi1ZEf48a4+fzHa4yxjC30M/Sr2AnQu+f/MPwvvX9XjZ6OWejiz8crBsLwSq8GHqaxaET7u6ux0A== "source-map-js@>=0.6.2 <2.0.0": version "1.0.2" @@ -4434,11 +4405,6 @@ source-map-js@^1.2.1: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== -stackblur-canvas@^2.0.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/stackblur-canvas/-/stackblur-canvas-2.7.0.tgz#af931277d0b5096df55e1f91c530043e066989b6" - integrity sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ== - stop-iteration-iterator@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz#f481ff70a548f6124d0312c3aa14cbfa7aa542ad" @@ -4586,11 +4552,6 @@ svg-parser@^2.0.4: resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== -svg-pathdata@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/svg-pathdata/-/svg-pathdata-6.0.3.tgz#80b0e0283b652ccbafb69ad4f8f73e8d3fbf2cac" - integrity sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw== - tapable@^2.2.0: version "2.2.1" resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" @@ -4601,13 +4562,6 @@ text-encoding-utf-8@^1.0.2: resolved "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz" integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== -text-segmentation@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/text-segmentation/-/text-segmentation-1.0.3.tgz#52a388159efffe746b24a63ba311b6ac9f2d7943" - integrity sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw== - dependencies: - utrie "^1.0.2" - tinyglobby@^0.2.15: version "0.2.15" resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2" @@ -4795,15 +4749,15 @@ typed-array-length@^1.0.7: possible-typed-array-names "^1.0.0" reflect.getprototypeof "^1.0.6" -typescript-eslint@^8.54.0: - version "8.54.0" - resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.54.0.tgz#f4ef3b8882a5ddc2a41968e014194c178ab23f6a" - integrity sha512-CKsJ+g53QpsNPqbzUsfKVgd3Lny4yKZ1pP4qN3jdMOg/sisIDLGyDMezycquXLE5JsEU0wp3dGNdzig0/fmSVQ== +typescript-eslint@^8.55.0: + version "8.55.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.55.0.tgz#abae8295c5f0f82f816218113a46e89bc30c3de2" + integrity sha512-HE4wj+r5lmDVS9gdaN0/+iqNvPZwGfnJ5lZuz7s5vLlg9ODw0bIiiETaios9LvFI1U94/VBXGm3CB2Y5cNFMpw== dependencies: - "@typescript-eslint/eslint-plugin" "8.54.0" - "@typescript-eslint/parser" "8.54.0" - "@typescript-eslint/typescript-estree" "8.54.0" - "@typescript-eslint/utils" "8.54.0" + "@typescript-eslint/eslint-plugin" "8.55.0" + "@typescript-eslint/parser" "8.55.0" + "@typescript-eslint/typescript-estree" "8.55.0" + "@typescript-eslint/utils" "8.55.0" typescript@^5.9.3: version "5.9.3" @@ -4855,13 +4809,6 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -utrie@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/utrie/-/utrie-1.0.2.tgz#d42fe44de9bc0119c25de7f564a6ed1b2c87a645" - integrity sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw== - dependencies: - base64-arraybuffer "^1.0.2" - vanilla-calendar-pro@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/vanilla-calendar-pro/-/vanilla-calendar-pro-3.1.0.tgz#e64fb1e7bfad6f63858778c9130af8b75832a268" @@ -4876,10 +4823,10 @@ vite-plugin-svgr@^4.5.0: "@svgr/core" "^8.1.0" "@svgr/plugin-jsx" "^8.1.0" -vite-tsconfig-paths@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/vite-tsconfig-paths/-/vite-tsconfig-paths-6.0.5.tgz#5bcbb44d6ae0d12fe42f5915a6ad9846b0ed7805" - integrity sha512-f/WvY6ekHykUF1rWJUAbCU7iS/5QYDIugwpqJA+ttwKbxSbzNlqlE8vZSrsnxNQciUW+z6lvhlXMaEyZn9MSig== +vite-tsconfig-paths@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/vite-tsconfig-paths/-/vite-tsconfig-paths-6.1.1.tgz#d5c28cba79c89ebf76489ef1040024b21df6da3a" + integrity sha512-2cihq7zliibCCZ8P9cKJrQBkfgdvcFkOOc3Y02o3GWUDLgqjWsZudaoiuOwO/gzTzy17cS5F7ZPo4bsnS4DGkg== dependencies: debug "^4.1.1" globrex "^0.1.2" diff --git a/with-i18n-translate/package.json b/with-i18n-translate/package.json index bb5fc08..6fba7c6 100644 --- a/with-i18n-translate/package.json +++ b/with-i18n-translate/package.json @@ -30,34 +30,35 @@ "lint": "eslint . --no-cache" }, "dependencies": { - "@slickgrid-universal/composite-editor-component": "^9.13.0", - "@slickgrid-universal/custom-tooltip-plugin": "^9.13.0", - "@slickgrid-universal/excel-export": "^9.13.0", - "@slickgrid-universal/graphql": "^9.13.0", - "@slickgrid-universal/odata": "^9.13.0", - "@slickgrid-universal/pdf-export": "^9.13.0", - "@slickgrid-universal/rxjs-observable": "^9.13.0", - "@slickgrid-universal/text-export": "^9.13.0", + "@slickgrid-universal/composite-editor-component": "^10.0.0-beta.0", + "@slickgrid-universal/custom-tooltip-plugin": "^10.0.0-beta.0", + "@slickgrid-universal/excel-export": "^10.0.0-beta.0", + "@slickgrid-universal/graphql": "^10.0.0-beta.0", + "@slickgrid-universal/odata": "^10.0.0-beta.0", + "@slickgrid-universal/pdf-export": "^10.0.0-beta.0", + "@slickgrid-universal/react-row-detail-plugin": "^10.0.0-beta.0", + "@slickgrid-universal/rxjs-observable": "^10.0.0-beta.0", + "@slickgrid-universal/text-export": "^10.0.0-beta.0", "bootstrap": "^5.3.8", "dompurify": "^3.3.1", - "i18next": "^25.8.0", + "i18next": "^25.8.7", "react": "^19.2.4", "react-dom": "^19.2.4", "react-i18next": "^16.5.4", - "slickgrid-react": "^9.13.0" + "slickgrid-react": "^10.0.0-beta.0" }, "devDependencies": { - "@faker-js/faker": "^10.2.0", + "@faker-js/faker": "^10.3.0", "@fnando/sparkline": "^0.3.10", "@popperjs/core": "^2.11.8", "@types/fnando__sparkline": "^0.3.7", "@types/i18next-xhr-backend": "^1.4.2", - "@types/node": "^24.10.9", - "@types/react": "^19.2.10", + "@types/node": "^24.10.13", + "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@types/sortablejs": "^1.15.9", "@types/text-encoding-utf-8": "^1.0.5", - "@vitejs/plugin-react": "^5.1.2", + "@vitejs/plugin-react": "^5.1.4", "cross-env": "^10.1.0", "eslint": "^9.39.2", "eslint-plugin-import": "^2.32.0", @@ -65,15 +66,15 @@ "eslint-plugin-prefer-arrow": "^1.2.3", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^7.0.1", - "globals": "^17.2.0", + "globals": "^17.3.0", "react-router-dom": "^7.13.0", "rxjs": "^7.8.2", "sass": "^1.97.3", "typescript": "^5.9.3", - "typescript-eslint": "^8.54.0", + "typescript-eslint": "^8.55.0", "vite": "^7.3.1", "vite-plugin-svgr": "^4.5.0", - "vite-tsconfig-paths": "^6.0.5" + "vite-tsconfig-paths": "^6.1.1" }, "engines": { "node": ">=20.0.0" diff --git a/with-i18n-translate/src/examples/slickgrid/App.tsx b/with-i18n-translate/src/examples/slickgrid/App.tsx index 55a67ea..b7fb17f 100644 --- a/with-i18n-translate/src/examples/slickgrid/App.tsx +++ b/with-i18n-translate/src/examples/slickgrid/App.tsx @@ -1,7 +1,7 @@ import { useEffect } from 'react'; import { Routes as BaseRoutes, Link, Navigate, Route, useLocation } from 'react-router'; - import { NavBar } from '../../NavBar.js'; + import Example1 from './Example1.js'; import Example2 from './Example2.js'; import Example3 from './Example3.js'; @@ -51,6 +51,7 @@ import Example47 from './Example47.js'; import Example48 from './Example48.js'; import Example49 from './Example49.js'; import Example50 from './Example50.js'; +import Example51 from './Example51.js'; const routes: Array<{ path: string; route: string; component: any; title: string }> = [ { path: 'example1', route: '/example1', component: , title: '1- Basic Grid / 2 Grids' }, @@ -102,6 +103,7 @@ const routes: Array<{ path: string; route: string; component: any; title: string { path: 'example48', route: '/example48', component: , title: '48- Hybrid Selection Model' }, { path: 'example49', route: '/example49', component: , title: '49- Spreadsheet Drag-Fill' }, { path: 'example50', route: '/example50', component: , title: '50- Master/Detail Grids' }, + { path: 'example51', route: '/example51', component: , title: '51- Menus with Slots' }, ]; export default function Routes() { diff --git a/with-i18n-translate/src/examples/slickgrid/Example-detail-preload.tsx b/with-i18n-translate/src/examples/slickgrid/Example-detail-preload.tsx index f8ade4c..6ab6a12 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example-detail-preload.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example-detail-preload.tsx @@ -1,6 +1,7 @@ -import { forwardRef, useEffect } from 'react'; +import { useEffect } from 'react'; -export const ExampleDetailPreload = forwardRef((props: any, ref: any) => { +export const ExampleDetailPreload = (props: any) => { + const { ref, ...rest } = props; useEffect(() => { return () => { console.log('Preload unmounted'); @@ -8,9 +9,9 @@ export const ExampleDetailPreload = forwardRef((props: any, ref: any) => { }, []); return ( -
- +
+

Loading...

); -}); +}; diff --git a/with-i18n-translate/src/examples/slickgrid/Example10.tsx b/with-i18n-translate/src/examples/slickgrid/Example10.tsx index d61dbbe..df77a33 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example10.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example10.tsx @@ -150,7 +150,7 @@ const Example10: React.FC = () => { const gridOptions1: GridOption = { enableAutoResize: false, enableCellNavigation: true, - enableRowSelection: true, + enableSelection: true, enableCheckboxSelector: true, enableFiltering: true, checkboxSelector: { @@ -162,7 +162,7 @@ const Example10: React.FC = () => { // selectableOverride: (row: number, dataContext: any, grid: SlickGrid) => (dataContext.id % 2 === 1) }, multiSelect: false, - rowSelectionOptions: { + selectionOptions: { // True (Single Selection), False (Multiple Selections) selectActiveRow: true, }, @@ -198,12 +198,12 @@ const Example10: React.FC = () => { hideInColumnTitleRow: true, applySelectOnAllPages: true, // when clicking "Select All", should we apply it to all pages (defaults to true) }, - rowSelectionOptions: { + selectionOptions: { // True (Single Selection), False (Multiple Selections) selectActiveRow: false, }, enableCheckboxSelector: true, - enableRowSelection: true, + enableSelection: true, gridHeight: 255, gridWidth: 800, enablePagination: true, @@ -303,7 +303,7 @@ const Example10: React.FC = () => { } function onGrid1SelectedRowsChanged(_e: Event, args: any) { - const grid = args && args.grid; + const grid = args?.grid; if (Array.isArray(args.rows)) { const selectedTitles = args.rows.map((idx: number) => { const item = grid.getDataItem(idx); diff --git a/with-i18n-translate/src/examples/slickgrid/Example11.tsx b/with-i18n-translate/src/examples/slickgrid/Example11.tsx index 3913977..4e67c56 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example11.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example11.tsx @@ -128,7 +128,7 @@ const Example11: React.FC = () => { editable: true, enableColumnPicker: true, enableCellNavigation: true, - enableRowSelection: true, + enableSelection: true, }); } @@ -302,7 +302,7 @@ const Example11: React.FC = () => {
  • Adding an item, will always be showing as the 1st item in the grid because that is the best visual place to add it
  • Add/Update an item requires a valid Slickgrid Selection Model, you have 2 choices to deal with this:
    • -
    • You can enable "enableCheckboxSelector" or "enableRowSelection" to True
    • +
    • You can enable "enableCheckboxSelector" or "enableSelection" to True
  • Click on any of the buttons below to test this out
  • diff --git a/with-i18n-translate/src/examples/slickgrid/Example12.tsx b/with-i18n-translate/src/examples/slickgrid/Example12.tsx index 7a7c65a..99fe0dc 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example12.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example12.tsx @@ -4,7 +4,6 @@ import i18next from 'i18next'; import React, { useEffect, useRef, useState } from 'react'; import { withTranslation } from 'react-i18next'; import { - DelimiterType, Filters, Formatters, SlickgridReact, @@ -160,7 +159,7 @@ const Example12: React.FC = () => { hideInColumnTitleRow: true, }, enableCheckboxSelector: true, - enableRowSelection: true, + enableSelection: true, showCustomFooter: true, // display some metrics in the bottom custom footer customFooterOptions: { metricTexts: { @@ -253,7 +252,7 @@ const Example12: React.FC = () => { function exportToFile(type = 'csv') { textExportService.exportToFile({ - delimiter: type === 'csv' ? DelimiterType.comma : DelimiterType.tab, + delimiter: type === 'csv' ? ',' : '\t', filename: 'myExport', format: type === 'csv' ? 'csv' : 'txt', }); diff --git a/with-i18n-translate/src/examples/slickgrid/Example14.tsx b/with-i18n-translate/src/examples/slickgrid/Example14.tsx index 61afdaf..be59583 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example14.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example14.tsx @@ -7,11 +7,12 @@ import './example14.scss'; // provide custom CSS/SASS styling const Example14: React.FC = () => { const [gridOptions1, setGridOptions1] = useState(undefined); const [gridOptions2, setGridOptions2] = useState(undefined); + const [isColspanSpreading, setIsColspanSpreading] = useState(false); const [columnDefinitions1, setColumnDefinitions1] = useState([]); const [columnDefinitions2, setColumnDefinitions2] = useState([]); const [dataset1, setDataset1] = useState([]); const [dataset2, setDataset2] = useState([]); - // const reactGridRef1 = useRef(null); + const reactGridRef1 = useRef(null); const reactGridRef2 = useRef(null); const [hideSubTitle, setHideSubTitle] = useState(false); @@ -22,9 +23,9 @@ const Example14: React.FC = () => { setDataset2(getData(500)); }, []); - // function reactGrid1Ready(reactGrid: SlickgridReactInstance) { - // reactGridRef1.current = reactGrid; - // } + function reactGrid1Ready(reactGrid: SlickgridReactInstance) { + reactGridRef1.current = reactGrid; + } function reactGrid2Ready(reactGrid: SlickgridReactInstance) { reactGridRef2.current = reactGrid; @@ -162,6 +163,14 @@ const Example14: React.FC = () => { }; } + function spreadColspan() { + const isSpreading = !isColspanSpreading; + setIsColspanSpreading(isSpreading); + reactGridRef1.current?.slickGrid?.setOptions({ spreadHiddenColspan: isSpreading }); + reactGridRef1.current?.slickGrid?.resetActiveCell(); + reactGridRef1.current?.slickGrid?.invalidate(); + } + return !gridOptions1 ? ( '' ) : ( @@ -200,8 +209,23 @@ const Example14: React.FC = () => {

    Grid 1 (with Header Grouping & Colspan) +

    - + + reactGrid1Ready($event.detail)} + />
    diff --git a/with-i18n-translate/src/examples/slickgrid/Example15.tsx b/with-i18n-translate/src/examples/slickgrid/Example15.tsx index 70a87b7..c98d838 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example15.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example15.tsx @@ -51,8 +51,6 @@ const Example15: React.FC = () => { /** Clear the Grid State from Local Storage and reset the grid to it's original state */ function clearGridStateFromLocalStorage() { - // reactGridRef.current?.slickGrid.setColumns(reactGridRef.current?.gridService.getAllColumnDefinitions()); - // reactGridRef.current?.slickGrid.autosizeColumns(); reactGridRef.current?.gridService.resetGrid(getColumnDefinitions()); reactGridRef.current?.paginationService!.changeItemPerPage(DEFAULT_PAGE_SIZE); setTimeout(() => (localStorage[LOCAL_STORAGE_KEY] = null)); diff --git a/with-i18n-translate/src/examples/slickgrid/Example16.tsx b/with-i18n-translate/src/examples/slickgrid/Example16.tsx index 70883ae..1fcaf68 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example16.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example16.tsx @@ -81,8 +81,8 @@ const Example16: React.FC = () => { hideInFilterHeaderRow: false, hideInColumnTitleRow: true, }, - enableRowSelection: true, - rowSelectionOptions: { + enableSelection: true, + selectionOptions: { // True (Single Selection), False (Multiple Selections) selectActiveRow: false, }, diff --git a/with-i18n-translate/src/examples/slickgrid/Example18.tsx b/with-i18n-translate/src/examples/slickgrid/Example18.tsx index 721267d..1a09ea1 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example18.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example18.tsx @@ -245,16 +245,17 @@ const Example18: React.FC = () => { initialGroupBy: ['duration'], }, darkMode, - enableTextExport: true, - enableExcelExport: true, excelExportOptions: { sanitizeDataExport: true }, textExportOptions: { sanitizeDataExport: true }, - enablePdfExport: true, pdfExportOptions: { repeatHeadersOnEachPage: true, // defaults to true documentTitle: 'Grouping Grid', }, externalResources: [excelExportService, pdfExportService, textExportService], + // -- NOTE: registered resources are auto-enabled + // enableTextExport: true, + // enablePdfExport: true, + // enableExcelExport: true, }; setColumnDefinitions(columnDefinitions); diff --git a/with-i18n-translate/src/examples/slickgrid/Example19-detail-view.tsx b/with-i18n-translate/src/examples/slickgrid/Example19-detail-view.tsx index 2e5457a..abb6b5e 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example19-detail-view.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example19-detail-view.tsx @@ -1,4 +1,4 @@ -import React, { forwardRef, useState } from 'react'; +import React, { useState } from 'react'; import type { RowDetailViewProps } from 'slickgrid-react'; import './example19-detail-view.scss'; @@ -14,7 +14,8 @@ interface Item { rowId: number; } -const Example19DetailView: React.FC> = forwardRef((props, _ref) => { +const Example19DetailView: React.FC> = (props) => { + // const { ref, ...rest } = props; const [assignee, setAssignee] = useState(props.model?.assignee || ''); function assigneeChanged(newAssignee: string) { @@ -123,6 +124,6 @@ const Example19DetailView: React.FC> = forwardRef(
  • ); -}); +}; export default Example19DetailView; diff --git a/with-i18n-translate/src/examples/slickgrid/Example19.tsx b/with-i18n-translate/src/examples/slickgrid/Example19.tsx index 791afac..719adda 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example19.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example19.tsx @@ -1,16 +1,7 @@ import { type EventPubSubService } from '@slickgrid-universal/event-pub-sub'; +import { ReactSlickRowDetailView } from '@slickgrid-universal/react-row-detail-plugin'; import React, { useEffect, useRef, useState } from 'react'; -import { - Editors, - ExtensionName, - Filters, - Formatters, - SlickgridReact, - SlickRowDetailView, - type Column, - type GridOption, - type SlickgridReactInstance, -} from 'slickgrid-react'; +import { Editors, Filters, Formatters, SlickgridReact, type Column, type GridOption, type SlickgridReactInstance } from 'slickgrid-react'; import { ExampleDetailPreload } from './Example-detail-preload.js'; import Example19DetailView from './Example19-detail-view.js'; @@ -41,7 +32,7 @@ const Example19: React.FC = () => { }, []); function rowDetailInstance() { - return reactGridRef.current?.extensionService.getExtensionInstanceByName(ExtensionName.rowDetailView) as SlickRowDetailView; + return reactGridRef.current?.extensionService.getExtensionInstanceByName('rowDetailView') as ReactSlickRowDetailView; } const getColumnsDefinition = (): Column[] => { @@ -173,8 +164,8 @@ const Example19: React.FC = () => { darkMode, datasetIdPropertyName: 'rowId', preRegisterExternalExtensions: (pubSubService) => { - const rowDetail = new SlickRowDetailView(pubSubService as EventPubSubService); - return [{ name: ExtensionName.rowDetailView, instance: rowDetail }]; + const rowDetail = new ReactSlickRowDetailView(pubSubService as EventPubSubService); + return [{ name: 'rowDetailView', instance: rowDetail }]; }, rowDetailView: { process: (item) => simulateServerAsyncCall(item), @@ -192,7 +183,7 @@ const Example19: React.FC = () => { return true; }, }, - rowSelectionOptions: { + selectionOptions: { selectActiveRow: true, }, }; diff --git a/with-i18n-translate/src/examples/slickgrid/Example21.tsx b/with-i18n-translate/src/examples/slickgrid/Example21.tsx index 51862b3..af4bed5 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example21.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example21.tsx @@ -1,12 +1,5 @@ import React, { useEffect, useRef, useState } from 'react'; -import { - Formatters, - SlickgridReact, - type Column, - type GridOption, - type OperatorString, - type SlickgridReactInstance, -} from 'slickgrid-react'; +import { Formatters, SlickgridReact, type Column, type GridOption, type OperatorType, type SlickgridReactInstance } from 'slickgrid-react'; import './example21.scss'; const Example21: React.FC = () => { @@ -14,7 +7,7 @@ const Example21: React.FC = () => { const [dataset] = useState(getData()); const [gridOptions, setGridOptions] = useState(undefined); const reactGridRef = useRef(null); - const [operatorList] = useState(['=', '<', '<=', '>', '>=', '<>', 'StartsWith', 'EndsWith']); + const [operatorList] = useState(['=', '<', '<=', '>', '>=', '<>', 'StartsWith', 'EndsWith']); const [selectedOperator, setSelectedOperator] = useState(''); const [searchValue, setSearchValue] = useState(''); const [selectedColumn, setSelectedColumn] = useState(); @@ -107,7 +100,7 @@ const Example21: React.FC = () => { alwaysShowVerticalScroll: false, enableColumnPicker: true, enableCellNavigation: true, - enableRowSelection: true, + enableSelection: true, }; setColumnDefinitions(columnDefinitions); @@ -163,7 +156,7 @@ const Example21: React.FC = () => { function updateFilter() { reactGridRef.current?.filterService.updateSingleFilter({ columnId: `${selectedColumn?.id ?? ''}`, - operator: selectedOperator as OperatorString, + operator: selectedOperator as OperatorType, searchTerms: [searchValue || ''], }); } diff --git a/with-i18n-translate/src/examples/slickgrid/Example23.tsx b/with-i18n-translate/src/examples/slickgrid/Example23.tsx index 9b4beda..f511156 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example23.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example23.tsx @@ -7,7 +7,6 @@ import { withTranslation } from 'react-i18next'; import { Filters, Formatters, - OperatorType, SlickgridReact, type Column, type CurrentFilter, @@ -104,7 +103,7 @@ const Example23: React.FC = () => { filter: { model: Filters.sliderRange, maxValue: 100, // or you can use the options as well - operator: OperatorType.rangeInclusive, // defaults to inclusive + operator: 'RangeInclusive', // defaults to inclusive options: { hideSliderNumbers: false, // you can hide/show the slider numbers on both side min: 0, @@ -152,7 +151,7 @@ const Example23: React.FC = () => { filterable: true, filter: { model: Filters.input, - operator: OperatorType.rangeExclusive, // defaults to exclusive + operator: 'RangeExclusive', // defaults to exclusive }, }, { @@ -310,8 +309,8 @@ const Example23: React.FC = () => { switch (newPredefinedFilter) { case 'currentYearTasks': filters = [ - { columnId: 'finish', operator: OperatorType.rangeInclusive, searchTerms: [`${currentYear}-01-01`, `${currentYear}-12-31`] }, - { columnId: 'completed', operator: OperatorType.equal, searchTerms: [true] }, + { columnId: 'finish', operator: 'RangeInclusive', searchTerms: [`${currentYear}-01-01`, `${currentYear}-12-31`] }, + { columnId: 'completed', operator: '=', searchTerms: [true] }, ]; break; case 'nextYearTasks': diff --git a/with-i18n-translate/src/examples/slickgrid/Example24.tsx b/with-i18n-translate/src/examples/slickgrid/Example24.tsx index 01ca8ef..ed8e6b1 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example24.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example24.tsx @@ -3,7 +3,6 @@ import i18next from 'i18next'; import React, { useEffect, useRef, useState } from 'react'; import { withTranslation } from 'react-i18next'; import { - ExtensionName, Filters, Formatters, SlickgridReact, @@ -85,11 +84,11 @@ const Example24: React.FC = () => { } function cellMenuInstance() { - return reactGridRef.current?.extensionService.getExtensionInstanceByName(ExtensionName.cellMenu); + return reactGridRef.current?.extensionService.getExtensionInstanceByName('cellMenu'); } function contextMenuInstance() { - return reactGridRef.current?.extensionService.getExtensionInstanceByName(ExtensionName.contextMenu); + return reactGridRef.current?.extensionService.getExtensionInstanceByName('contextMenu'); } /* Define grid Options and Columns */ @@ -348,7 +347,7 @@ const Example24: React.FC = () => { onCommand: (_e, args) => executeCommand(_e, args), onOptionSelected: (_e, args) => { // change "Completed" property with new option selected from the Cell Menu - const dataContext = args && args.dataContext; + const dataContext = args?.dataContext; if (dataContext && dataContext.hasOwnProperty('completed')) { dataContext.completed = args.item.option; reactGridRef.current?.gridService.updateItem(dataContext); @@ -429,7 +428,7 @@ const Example24: React.FC = () => { // optionally and conditionally define when the the menu is usable, // this should be used with a custom formatter to show/hide/disable the menu menuUsabilityOverride: (args) => { - const dataContext = args && args.dataContext; + const dataContext = args?.dataContext; return dataContext.id < 21; // say we want to display the menu only from Task 0 to 20 }, // which column to show the command list? when not defined it will be shown over all columns @@ -460,7 +459,7 @@ const Example24: React.FC = () => { }, // only show command to 'Help' when the task is Not Completed itemVisibilityOverride: (args) => { - const dataContext = args && args.dataContext; + const dataContext = args?.dataContext; return !dataContext.completed; }, }, @@ -526,7 +525,7 @@ const Example24: React.FC = () => { textCssClass: 'italic', // only enable this option when the task is Not Completed itemUsabilityOverride: (args) => { - const dataContext = args && args.dataContext; + const dataContext = args?.dataContext; return !dataContext.completed; }, // you can use the 'action' callback and/or subscribe to the 'onCallback' event, they both have the same arguments @@ -548,7 +547,7 @@ const Example24: React.FC = () => { disabled: true, // only shown when the task is Not Completed itemVisibilityOverride: (args) => { - const dataContext = args && args.dataContext; + const dataContext = args?.dataContext; return !dataContext.completed; }, }, @@ -579,7 +578,7 @@ const Example24: React.FC = () => { // subscribe to Context Menu onOptionSelected event (or use the action callback on each option) onOptionSelected: (_e, args) => { // change Priority - const dataContext = args && args.dataContext; + const dataContext = args?.dataContext; if (dataContext && dataContext.hasOwnProperty('priority')) { dataContext.priority = args.item.option; reactGridRef.current?.gridService.updateItem(dataContext); diff --git a/with-i18n-translate/src/examples/slickgrid/Example25.tsx b/with-i18n-translate/src/examples/slickgrid/Example25.tsx index 41084e3..76b772f 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example25.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example25.tsx @@ -1,14 +1,6 @@ import { GraphqlService, type GraphqlResult, type GraphqlServiceApi } from '@slickgrid-universal/graphql'; import React, { useEffect, useState } from 'react'; -import { - Filters, - Formatters, - OperatorType, - SlickgridReact, - type Column, - type GridOption, - type MultipleSelectOption, -} from 'slickgrid-react'; +import { Filters, Formatters, SlickgridReact, type Column, type GridOption, type MultipleSelectOption } from 'slickgrid-react'; import './example25.scss'; // provide custom CSS/SASS styling const COUNTRIES_API = 'https://countries.trevorblades.com/'; @@ -78,7 +70,7 @@ const Example25: React.FC = () => { filter: { model: Filters.multipleSelect, collectionAsync: getLanguages(), - operator: OperatorType.inContains, + operator: 'IN_CONTAINS', collectionOptions: { addBlankEntry: true, // the data is not at the root of the array, so we must tell the Select Filter where to pull the data @@ -106,7 +98,7 @@ const Example25: React.FC = () => { filter: { model: Filters.multipleSelect, collectionAsync: getLanguages(), - operator: OperatorType.inContains, + operator: 'IN_CONTAINS', collectionOptions: { addBlankEntry: true, // the data is not at the root of the array, so we must tell the Select Filter where to pull the data @@ -268,7 +260,7 @@ const Example25: React.FC = () => { // function setFiltersDynamically() { // // we can Set Filters Dynamically (or different filters) afterward through the FilterService // reactGridRef.current?.filterService.updateFilters([ - // { columnId: 'countryName', searchTerms: ['G'], operator: OperatorType.startsWith }, + // { columnId: 'countryName', searchTerms: ['G'], operator: 'StartsWith' }, // ]); // } diff --git a/with-i18n-translate/src/examples/slickgrid/Example3.tsx b/with-i18n-translate/src/examples/slickgrid/Example3.tsx index be450da..2a706f8 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example3.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example3.tsx @@ -4,7 +4,6 @@ import { Editors, Filters, Formatters, - OperatorType, SlickGlobalEditorLock, SlickgridReact, SortComparers, @@ -31,7 +30,7 @@ const NB_ITEMS = 100; // you can create custom validator to pass to an inline editor const myCustomTitleValidator: EditorValidator = (value: any) => { // you can get the Editor Args which can be helpful, e.g. we can get the Translate Service from it - // const grid = args && args.grid; + // const grid = args?.grid; // const gridOptions = grid.getOptions() as GridOption; // const i18n = gridOptions.i18n; @@ -197,7 +196,7 @@ const Example3: React.FC = () => { collectionFilterBy: { property: 'value', value: 0, - operator: OperatorType.notEqual, + operator: '!=', }, model: Editors.singleSelect, // validator: (value, args) => { @@ -418,7 +417,7 @@ const Example3: React.FC = () => { separatorBetweenTextLabels: ' ', }, model: Filters.multipleSelect, - operator: OperatorType.inContains, + operator: 'IN_CONTAINS', }, }, ]); diff --git a/with-i18n-translate/src/examples/slickgrid/Example30.tsx b/with-i18n-translate/src/examples/slickgrid/Example30.tsx index 9b3c683..54db122 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example30.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example30.tsx @@ -482,7 +482,7 @@ const Example30: React.FC = () => { }, externalResources: [new ExcelExportService(), new SlickCustomTooltip(), compositeEditorInstanceRef.current!], enableFiltering: true, - rowSelectionOptions: { + selectionOptions: { // True (Single Selection), False (Multiple Selections) selectActiveRow: false, }, @@ -490,7 +490,7 @@ const Example30: React.FC = () => { showPreHeaderPanel: true, preHeaderPanelHeight: 28, enableCheckboxSelector: true, - enableRowSelection: true, + enableSelection: true, multiSelect: false, checkboxSelector: { hideInFilterHeaderRow: false, diff --git a/with-i18n-translate/src/examples/slickgrid/Example31.tsx b/with-i18n-translate/src/examples/slickgrid/Example31.tsx index 5481332..b6bdcc8 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example31.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example31.tsx @@ -5,7 +5,6 @@ import { Observable, of, type Subject } from 'rxjs'; import { Editors, Filters, - OperatorType, SlickgridReact, type Column, type GridOption, @@ -100,7 +99,7 @@ const Example31: React.FC = () => { enableCellNavigation: true, enableFiltering: true, enableCheckboxSelector: true, - enableRowSelection: true, + enableSelection: true, enablePagination: true, // you could optionally disable the Pagination pagination: { pageSizes: [10, 20, 50, 100, 500], @@ -109,7 +108,7 @@ const Example31: React.FC = () => { }, presets: { // you can also type operator as string, e.g.: operator: 'EQ' - filters: [{ columnId: 'gender', searchTerms: ['male'], operator: OperatorType.equal }], + filters: [{ columnId: 'gender', searchTerms: ['male'], operator: '=' }], sorters: [ // direction can be written as 'asc' (uppercase or lowercase) and/or use the SortDirection type { columnId: 'name', direction: 'asc' }, @@ -386,7 +385,7 @@ const Example31: React.FC = () => { function setFiltersDynamically() { // we can Set Filters Dynamically (or different filters) afterward through the FilterService reactGridRef.current?.filterService.updateFilters([ - // { columnId: 'gender', searchTerms: ['male'], operator: OperatorType.equal }, + // { columnId: 'gender', searchTerms: ['male'], operator: '=' }, { columnId: 'name', searchTerms: ['A'], operator: 'a*' }, ]); } diff --git a/with-i18n-translate/src/examples/slickgrid/Example32.tsx b/with-i18n-translate/src/examples/slickgrid/Example32.tsx index 57605f9..fe0c7c8 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example32.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example32.tsx @@ -491,13 +491,13 @@ const Example32: React.FC = () => { }, externalResources: [new ExcelExportService()], enableFiltering: true, - enableRowSelection: true, + enableSelection: true, enableCheckboxSelector: true, checkboxSelector: { hideInFilterHeaderRow: false, hideInColumnTitleRow: true, }, - rowSelectionOptions: { + selectionOptions: { // True (Single Selection), False (Multiple Selections) selectActiveRow: false, }, @@ -585,7 +585,7 @@ const Example32: React.FC = () => { // just for demo purposes, set it back to its original width const columns = reactGridRef.current?.slickGrid.getColumns() as Column[]; columns.forEach((col) => (col.width = col.originalWidth)); - reactGridRef.current?.slickGrid.setColumns(columns); + reactGridRef.current?.slickGrid.updateColumns(); reactGridRef.current?.slickGrid.autosizeColumns(); setIsUsingDefaultResize(true); } diff --git a/with-i18n-translate/src/examples/slickgrid/Example33.tsx b/with-i18n-translate/src/examples/slickgrid/Example33.tsx index 4d8e8f0..bc776cb 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example33.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example33.tsx @@ -2,10 +2,10 @@ import { SlickCustomTooltip } from '@slickgrid-universal/custom-tooltip-plugin'; import { ExcelExportService } from '@slickgrid-universal/excel-export'; import React, { useEffect, useRef, useState } from 'react'; import { + createDomElement, Editors, Filters, Formatters, - OperatorType, SlickgridReact, type Column, type EditCommand, @@ -139,6 +139,31 @@ const Example33: React.FC = () => { // maxHeight: 30, }, }, + { + id: 'button', + name: 'Button Tooltip', + field: 'title', + width: 100, + minWidth: 100, + filterable: true, + excludeFromExport: true, + formatter: (_row: number, _cell: number, value: any) => { + const button = createDomElement('button', { + className: 'btn btn-outline-secondary btn-icon btn-sm', + title: 'This is the button tooltip', + }); + const icon = createDomElement('i', { className: 'mdi mdi-information', title: 'icon tooltip' }); + const text = createDomElement('span', { textContent: 'Hello Task' }); + button.appendChild(icon); + button.appendChild(text); + button.addEventListener('click', () => alert(`Clicked button for ${value}`)); + return button; + }, + // define tooltip options here OR for the entire grid via the grid options (cell tooltip options will have precedence over grid options) + customTooltip: { + useRegularTooltip: true, // note regular tooltip will try to find a "title" attribute in the cell formatter (it won't work without a cell formatter) + }, + }, { id: 'cost', name: 'Cost', @@ -318,7 +343,7 @@ const Example33: React.FC = () => { collectionOptions: { separatorBetweenTextLabels: ' ' }, options: { minHeight: 70 } as MultipleSelectOption, model: Filters.multipleSelect, - operator: OperatorType.inContains, + operator: 'IN_CONTAINS', }, }, { @@ -401,19 +426,21 @@ const Example33: React.FC = () => { headerFormatter, headerRowFormatter, usabilityOverride: (args) => args.cell !== 0 && args?.column?.id !== 'action', // don't show on first/last columns + observeAllTooltips: true, // observe all elements with title/data-slick-tooltip attributes (not just SlickGrid elements) + observeTooltipContainer: 'body', // defaults to 'body', target a specific container (only works when observeAllTooltips is enabled) }, presets: { filters: [{ columnId: 'prerequisites', searchTerms: [1, 3, 5, 7, 9, 12, 15, 18, 21, 25, 28, 29, 30, 32, 34] }], }, - rowHeight: 33, + rowHeight: 38, enableFiltering: true, - rowSelectionOptions: { + selectionOptions: { // True (Single Selection), False (Multiple Selections) selectActiveRow: false, }, showCustomFooter: true, enableCheckboxSelector: true, - enableRowSelection: true, + enableSelection: true, checkboxSelector: { hideInFilterHeaderRow: false, hideInColumnTitleRow: true, @@ -430,7 +457,7 @@ const Example33: React.FC = () => { onCommand: (e, args) => executeCommand(e, args), onOptionSelected: (_e, args) => { // change "Completed" property with new option selected from the Cell Menu - const dataContext = args && args.dataContext; + const dataContext = args?.dataContext; if (dataContext && dataContext.hasOwnProperty('completed')) { dataContext.completed = args.item.option; reactGridRef.current?.gridService.updateItem(dataContext); @@ -464,7 +491,7 @@ const Example33: React.FC = () => { id: i, title: 'Task ' + i, duration: Math.round(Math.random() * 100), - description: `This is a sample task description.\nIt can be multiline\r\rAnother line...`, + description: i > 500 ? null : `This is a sample task description.\nIt can be multiline\r\rAnother line...`, percentComplete: Math.floor(Math.random() * (100 - 5 + 1) + 5), start: new Date(randomYear, randomMonth, randomDay), finish: randomFinish < new Date() ? '' : randomFinish, // make sure the random date is earlier than today @@ -574,6 +601,20 @@ const Example33: React.FC = () => { reactGridRef.current?.resizerService.resizeGrid(0); } + function setFiltersDynamically(operator: string) { + const operatorType = operator === '=' ? '=' : '!='; + reactGridRef.current?.filterService.updateFilters( + [ + { + columnId: 'desc', + operator: operatorType, + searchTerms: [''], + }, + ], + true + ); + } + return !gridOptions ? ( '' ) : ( @@ -625,6 +666,24 @@ const Example33: React.FC = () => { value={serverWaitDelay} onInput={($event) => handleServerDelayInputChange($event)} /> + +
    Lazy loading collection... diff --git a/with-i18n-translate/src/examples/slickgrid/Example35.tsx b/with-i18n-translate/src/examples/slickgrid/Example35.tsx index 574c990..55c105e 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example35.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example35.tsx @@ -291,7 +291,7 @@ const Example35: React.FC = () => { (see example35.scss{' '} diff --git a/with-i18n-translate/src/examples/slickgrid/Example38.tsx b/with-i18n-translate/src/examples/slickgrid/Example38.tsx index 55899cf..f00dca1 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example38.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example38.tsx @@ -97,7 +97,7 @@ const Example38: React.FC = () => { enableCellNavigation: true, enableFiltering: true, enableCheckboxSelector: true, - enableRowSelection: true, + enableSelection: true, enableGrouping: true, presets: { // NOTE: pagination preset is NOT supported with infinite scroll diff --git a/with-i18n-translate/src/examples/slickgrid/Example4.tsx b/with-i18n-translate/src/examples/slickgrid/Example4.tsx index 4a11c1a..5ff343c 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example4.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example4.tsx @@ -4,7 +4,6 @@ import { useEffect, useState } from 'react'; import { Filters, Formatters, - OperatorType, SlickgridReact, type Column, type GridOption, @@ -78,12 +77,12 @@ const Example4: React.FC = () => { collectionFilterBy: [ { property: 'value', - operator: OperatorType.notEqual, + operator: '!=', value: 360, }, { property: 'value', - operator: OperatorType.notEqual, + operator: '!=', value: 365, }, ], diff --git a/with-i18n-translate/src/examples/slickgrid/Example41.tsx b/with-i18n-translate/src/examples/slickgrid/Example41.tsx index 81f0fd0..f397268 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example41.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example41.tsx @@ -53,11 +53,12 @@ const Example41: React.FC = () => { gridWidth: 800, rowHeight: 33, enableCellNavigation: true, - enableRowSelection: true, + enableSelection: true, enableRowMoveManager: true, - rowSelectionOptions: { + selectionOptions: { // True (Single Selection), False (Multiple Selections) selectActiveRow: false, + selectionType: 'row', }, rowMoveManager: { columnIndexPosition: 0, diff --git a/with-i18n-translate/src/examples/slickgrid/Example42-Custom-Pager.tsx b/with-i18n-translate/src/examples/slickgrid/Example42-Custom-Pager.tsx index 7b71239..21eb20e 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example42-Custom-Pager.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example42-Custom-Pager.tsx @@ -8,7 +8,8 @@ export interface CustomPagerComponentRef { renderPagination: () => void; } -const CustomPagerComponent = React.forwardRef((_props, ref) => { +const CustomPagerComponent = (_props: any) => { + const { ref /*, ...props */ } = _props; const [currentPagination, setCurrentPagination] = useState({} as PaginationMetadata); const [isLeftPaginationDisabled, setIsLeftPaginationDisabled] = useState(false); const [isRightPaginationDisabled, setIsRightPaginationDisabled] = useState(false); @@ -174,6 +175,6 @@ const CustomPagerComponent = React.forwardRef((_pr
    ); -}); +}; export default CustomPagerComponent; diff --git a/with-i18n-translate/src/examples/slickgrid/Example42.tsx b/with-i18n-translate/src/examples/slickgrid/Example42.tsx index f11eb70..e79080e 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example42.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example42.tsx @@ -2,7 +2,6 @@ import React, { useEffect, useRef, useState } from 'react'; import { Filters, Formatters, - OperatorType, SlickgridReact, type Column, type GridOption, @@ -68,7 +67,7 @@ const Example42: React.FC = () => { filter: { model: Filters.sliderRange, maxValue: 100, // or you can use the options as well - operator: OperatorType.rangeInclusive, // defaults to inclusive + operator: 'RangeInclusive', // defaults to inclusive options: { hideSliderNumbers: false, // you can hide/show the slider numbers on both side min: 0, @@ -114,7 +113,7 @@ const Example42: React.FC = () => { filterable: true, filter: { model: Filters.input, - operator: OperatorType.rangeExclusive, // defaults to exclusive + operator: 'RangeExclusive', // defaults to exclusive }, }, { diff --git a/with-i18n-translate/src/examples/slickgrid/Example43.tsx b/with-i18n-translate/src/examples/slickgrid/Example43.tsx index a726b0f..194d0d3 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example43.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example43.tsx @@ -418,7 +418,8 @@ export default function Example43() { } } - // update column definitions + // 1. update column definitions via grid.setColumns() + // this will shift colspan/rowspan to the left or right accordingly const cols: Column[] = reactGrid?.slickGrid.getColumns() || []; if (newShowEmployeeId) { cols.unshift({ id: 'employeeID', name: 'Employee ID', field: 'employeeID', width: 100 }); @@ -427,6 +428,22 @@ export default function Example43() { } reactGrid?.slickGrid.setColumns(cols || []); + // --- OR --- + // 2. OR update via "hidden" column flag & increase/decrease column index accordingly in the metadata + // this approach will keep colspan/rowspan "as-is" but will hide the EmployeeID column + /* + const colDirIdx = newShowEmployeeId ? -1 : 1; + for (const row of Object.keys(this.metadata)) { + newMetadata[row] = { columns: {} }; + for (const col of Object.keys((this.metadata as any)[row].columns)) { + newMetadata[row].columns[Number(col) + colDirIdx] = (this.metadata as any)[row].columns[col]; + } + } + reactGrid?.slickGrid?.setOptions({ frozenColumn: newShowEmployeeId ? 0 : 1 }); + reactGrid?.slickGrid?.updateColumnById('employeeID', { hidden: !newShowEmployeeId }); + reactGrid?.slickGrid?.updateColumns(); + */ + // update & remap rowspans metadataRef.current = newMetadata; reactGrid?.slickGrid.remapAllColumnsRowSpan(); diff --git a/with-i18n-translate/src/examples/slickgrid/Example45-detail-view.tsx b/with-i18n-translate/src/examples/slickgrid/Example45-detail-view.tsx index 7924841..fb139fd 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example45-detail-view.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example45-detail-view.tsx @@ -1,4 +1,4 @@ -import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react'; +import React, { useEffect, useRef, useState } from 'react'; import { SlickgridReact, type Column, @@ -29,7 +29,7 @@ export interface OrderData { shipName: string; } -const Example45DetailView: React.FC> = forwardRef((props, ref) => { +const Example45DetailView: React.FC> = (props) => { const [showGrid, setShowGrid] = useState(false); const [innerGridOptions, setInnerGridOptions] = useState(undefined); const [innerColDefs, setInnerColDefs] = useState([]); @@ -37,10 +37,6 @@ const Example45DetailView: React.FC(null); const innerGridClass = `row-detail-${props.model.id}`; - useImperativeHandle(ref, () => ({ - getReactGridInstance: () => reactGridRef.current, - })); - useEffect(() => { defineGrid(); return () => { @@ -122,6 +118,6 @@ const Example45DetailView: React.FC ); -}); +}; export default Example45DetailView; diff --git a/with-i18n-translate/src/examples/slickgrid/Example45-preload.tsx b/with-i18n-translate/src/examples/slickgrid/Example45-preload.tsx index a5309d7..a3ba72d 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example45-preload.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example45-preload.tsx @@ -1,6 +1,7 @@ -import { forwardRef, useEffect } from 'react'; +import { useEffect } from 'react'; -export const Example45Preload = forwardRef((props: any, ref: any) => { +export const Example45Preload = (props: any) => { + const { ref, ...rest } = props; useEffect(() => { return () => { console.log('Preload unmounted'); @@ -8,9 +9,9 @@ export const Example45Preload = forwardRef((props: any, ref: any) => { }, []); return ( -
    +

    Loading...

    ); -}); +}; diff --git a/with-i18n-translate/src/examples/slickgrid/Example45.tsx b/with-i18n-translate/src/examples/slickgrid/Example45.tsx index d482585..3d425cb 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example45.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example45.tsx @@ -1,14 +1,8 @@ import { faker } from '@faker-js/faker'; import { type EventPubSubService } from '@slickgrid-universal/event-pub-sub'; +import { ReactSlickRowDetailView } from '@slickgrid-universal/react-row-detail-plugin'; import React, { useEffect, useRef, useState } from 'react'; -import { - ExtensionName, - SlickgridReact, - SlickRowDetailView, - type Column, - type GridOption, - type SlickgridReactInstance, -} from 'slickgrid-react'; +import { SlickgridReact, type Column, type GridOption, type SlickgridReactInstance } from 'slickgrid-react'; import Example45DetailView, { type Distributor, type OrderData } from './Example45-detail-view.js'; import { Example45Preload } from './Example45-preload.js'; @@ -47,7 +41,7 @@ const Example45: React.FC = () => { }, [isUsingInnerGridStatePresets]); function rowDetailInstance() { - return reactGridRef.current?.extensionService.getExtensionInstanceByName(ExtensionName.rowDetailView) as SlickRowDetailView; + return reactGridRef.current?.extensionService.getExtensionInstanceByName('rowDetailView') as ReactSlickRowDetailView; } function getColumnDefinitions(): Column[] { @@ -164,8 +158,8 @@ const Example45: React.FC = () => { rowHeight: 33, darkMode, preRegisterExternalExtensions: (pubSubService) => { - const rowDetail = new SlickRowDetailView(pubSubService as EventPubSubService); - return [{ name: ExtensionName.rowDetailView, instance: rowDetail }]; + const rowDetail = new ReactSlickRowDetailView(pubSubService as EventPubSubService); + return [{ name: 'rowDetailView', instance: rowDetail }]; }, rowDetailView: { process: (item) => simulateServerAsyncCall(item), diff --git a/with-i18n-translate/src/examples/slickgrid/Example46.tsx b/with-i18n-translate/src/examples/slickgrid/Example46.tsx index 91c1ad9..90d1ed1 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example46.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example46.tsx @@ -135,7 +135,7 @@ const Example46: React.FC = () => { sanitizeDataExport: true, }, enableCheckboxSelector: true, - enableRowSelection: true, + enableSelection: true, multiSelect: false, checkboxSelector: { // columnIndexPosition: 1, diff --git a/with-i18n-translate/src/examples/slickgrid/Example47-detail-view.tsx b/with-i18n-translate/src/examples/slickgrid/Example47-detail-view.tsx index 86fd6b7..1af6aca 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example47-detail-view.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example47-detail-view.tsx @@ -1,4 +1,4 @@ -import React, { forwardRef, useState } from 'react'; +import React, { useState } from 'react'; import type { RowDetailViewProps } from 'slickgrid-react'; import './example47-detail-view.scss'; import { showToast } from './utilities.js'; @@ -15,7 +15,8 @@ interface Item { title: string; } -const Example47DetailView: React.FC> = forwardRef((props, _ref) => { +const Example47DetailView: React.FC> = (props) => { + // const { ref, ...rest } = props; const [assignee, setAssignee] = useState(props.model?.assignee || ''); function assigneeChanged(newAssignee: string) { @@ -124,6 +125,6 @@ const Example47DetailView: React.FC> = forwardRef(
    ); -}); +}; export default Example47DetailView; diff --git a/with-i18n-translate/src/examples/slickgrid/Example47.tsx b/with-i18n-translate/src/examples/slickgrid/Example47.tsx index bea9260..45db112 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example47.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example47.tsx @@ -1,4 +1,5 @@ import { type EventPubSubService } from '@slickgrid-universal/event-pub-sub'; +import { ReactSlickRowDetailView } from '@slickgrid-universal/react-row-detail-plugin'; import React, { useEffect, useRef, useState } from 'react'; import { Aggregators, @@ -8,7 +9,6 @@ import { Formatters, GroupTotalFormatters, SlickgridReact, - SlickRowDetailView, SortComparers, SortDirectionNumber, type Column, @@ -60,7 +60,7 @@ const Example47: React.FC = () => { } function rowDetailInstance() { - return reactGridRef.current?.extensionService.getExtensionInstanceByName(ExtensionName.rowDetailView) as SlickRowDetailView; + return reactGridRef.current?.extensionService.getExtensionInstanceByName(ExtensionName.rowDetailView) as ReactSlickRowDetailView; } const getColumnsDefinition = (): Column[] => { @@ -200,8 +200,8 @@ const Example47: React.FC = () => { rowTopOffsetRenderType: 'top', // RowDetail and/or RowSpan don't render well with "transform", you should use "top" darkMode, preRegisterExternalExtensions: (pubSubService) => { - const rowDetail = new SlickRowDetailView(pubSubService as EventPubSubService); - return [{ name: ExtensionName.rowDetailView, instance: rowDetail }]; + const rowDetail = new ReactSlickRowDetailView(pubSubService as EventPubSubService); + return [{ name: 'rowDetailView', instance: rowDetail }]; }, rowDetailView: { process: (item) => simulateServerAsyncCall(item), @@ -211,7 +211,7 @@ const Example47: React.FC = () => { preloadComponent: ExampleDetailPreload, viewComponent: Example47DetailView, }, - rowSelectionOptions: { + selectionOptions: { selectActiveRow: true, }, }; diff --git a/with-i18n-translate/src/examples/slickgrid/Example48.tsx b/with-i18n-translate/src/examples/slickgrid/Example48.tsx index 0cafd54..28d403f 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example48.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example48.tsx @@ -91,9 +91,10 @@ const Example48: React.FC = () => { externalResources: [new ExcelExportService()], // enable new hybrid selection model (rows & cells) - enableHybridSelection: true, - rowSelectionOptions: { + enableSelection: true, + selectionOptions: { rowSelectColumnIds: ['id'], + selectionType: 'mixed', }, // when using the ExcelCopyBuffer, you can see what the selection range is @@ -111,8 +112,8 @@ const Example48: React.FC = () => { ...gridOptions1, // you can also enable checkbox selection & row selection, make sure to use `rowSelectColumnIds: ['id', '_checkbox_selector']` enableCheckboxSelector: true, - enableRowSelection: true, - rowSelectionOptions: { + enableSelection: true, + selectionOptions: { // True (Single Selection), False (Multiple Selections) selectActiveRow: false, @@ -211,8 +212,7 @@ const Example48: React.FC = () => { {hideSubTitle ? null : (
    SlickHybridSelectionModel This Selection Model is an hybrid approach that uses a combination of the row or cell - selections depending on certain conditions. Use enableHybridSelection grid option to enable the new Hybrid Selection - Model. + selections depending on certain conditions.
    • 1. clicking on the first column (id) will use RowSelectionModel because of our configuration of diff --git a/with-i18n-translate/src/examples/slickgrid/Example49.tsx b/with-i18n-translate/src/examples/slickgrid/Example49.tsx index 9c95f31..6df4eee 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example49.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example49.tsx @@ -75,10 +75,11 @@ const Example49: React.FC = () => { editorNavigateOnArrows: true, // enable editor navigation using arrow keys // enable new hybrid selection model (rows & cells) - enableHybridSelection: true, - rowSelectionOptions: { + enableSelection: true, + selectionOptions: { selectActiveRow: true, rowSelectColumnIds: ['selector'], + selectionType: 'mixed', }, // when using the ExcelCopyBuffer, you can see what the selection range is @@ -180,7 +181,9 @@ const Example49: React.FC = () => {
      Spreadsheet with drag-fill, hybrid selection model. Type a few values in the grid and then select those cells and use the bottom right drag handle spread the selection and auto-fill the values to other cells. Use onDragReplaceCells event to - customize the drag-fill behavior. Use enableHybridSelection grid option to enable the new Hybrid Selection Model. + customize the drag-fill behavior. Use{' '} + { enableSelection: true, selectionOptions: { selectionType: 'mixed' }} + grid option to enable the new Hybrid Selection Model.

      diff --git a/with-i18n-translate/src/examples/slickgrid/Example5.tsx b/with-i18n-translate/src/examples/slickgrid/Example5.tsx index f159cd7..b6ec022 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example5.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example5.tsx @@ -3,7 +3,6 @@ import { GridOdataService, type OdataOption, type OdataServiceApi } from '@slick import { useEffect, useRef, useState } from 'react'; import { Filters, - OperatorType, SlickgridReact, type Column, type GridOption, @@ -65,13 +64,13 @@ const Example5: React.FC = () => { hideInColumnTitleRow: true, }, compoundOperatorAltTexts: { - // where '=' is any of the `OperatorString` type shown above + // where '=' is any of the `OperatorType` type shown above text: { Custom: { operatorAlt: '%%', descAlt: 'SQL Like' } }, }, enableCellNavigation: true, enableFiltering: true, enableCheckboxSelector: true, - enableRowSelection: true, + enableSelection: true, enablePagination: true, // you could optionally disable the Pagination pagination: { pageSizes: [10, 20, 50, 100, 500, 50000], @@ -80,7 +79,7 @@ const Example5: React.FC = () => { }, presets: { // you can also type operator as string, e.g.: operator: 'EQ' - filters: [{ columnId: 'gender', searchTerms: ['male'], operator: OperatorType.equal }], + filters: [{ columnId: 'gender', searchTerms: ['male'], operator: '=' }], sorters: [ // direction can be written as 'asc' (uppercase or lowercase) and/or use the SortDirection type { columnId: 'name', direction: 'asc' }, @@ -94,7 +93,7 @@ const Example5: React.FC = () => { enableSelect: isSelectEnabled, enableExpand: isExpandEnabled, filterQueryOverride: ({ fieldName, columnDef, columnFilterOperator, searchValues }) => { - if (columnFilterOperator === OperatorType.custom && columnDef?.id === 'name') { + if (columnFilterOperator === 'Custom' && columnDef?.id === 'name') { let matchesSearch = searchValues[0].replace(/\*/g, '.*'); matchesSearch = matchesSearch.slice(0, 1) + CARET_HTML_ESCAPED + matchesSearch.slice(1); matchesSearch = matchesSearch.slice(0, -1) + "$'"; @@ -431,7 +430,7 @@ const Example5: React.FC = () => { function setFiltersDynamically() { // we can Set Filters Dynamically (or different filters) afterward through the FilterService reactGridRef.current?.filterService.updateFilters([ - // { columnId: 'gender', searchTerms: ['male'], operator: OperatorType.equal }, + // { columnId: 'gender', searchTerms: ['male'], operator: '=' }, { columnId: 'name', searchTerms: ['A'], operator: 'a*' }, ]); } diff --git a/with-i18n-translate/src/examples/slickgrid/Example50.tsx b/with-i18n-translate/src/examples/slickgrid/Example50.tsx index f1d3458..fd8ecee 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example50.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example50.tsx @@ -54,8 +54,8 @@ const Example50: React.FC = () => { gridHeight: 225, gridWidth: 800, rowHeight: 33, - enableHybridSelection: true, - rowSelectionOptions: { + enableSelection: true, + selectionOptions: { selectionType: 'row', }, }; diff --git a/with-i18n-translate/src/examples/slickgrid/Example51.tsx b/with-i18n-translate/src/examples/slickgrid/Example51.tsx new file mode 100644 index 0000000..fe65d4a --- /dev/null +++ b/with-i18n-translate/src/examples/slickgrid/Example51.tsx @@ -0,0 +1,694 @@ +import { format as tempoFormat } from '@formkit/tempo'; +import { SlickCustomTooltip } from '@slickgrid-universal/custom-tooltip-plugin'; +import React, { useEffect, useRef, useState } from 'react'; +import { + Aggregators, + createDomElement, + Filters, + Formatters, + SlickgridReact, + SortComparers, + SortDirectionNumber, + type Column, + type GridOption, + type Grouping, + type MenuCommandItem, + type SlickgridReactInstance, +} from 'slickgrid-react'; +import './example51.scss'; // provide custom CSS/SASS styling + +const NB_ITEMS = 2000; + +interface ReportItem { + id: number; + title: string; + duration: number; + cost: number; + percentComplete: number; + start: Date; + finish: Date; + action?: string; +} + +const Example51: React.FC = () => { + const [columnDefinitions, setColumnDefinitions] = useState[]>([]); + const [gridOptions, setGridOptions] = useState(); + const [dataset] = useState(loadData(NB_ITEMS)); + const [hideSubTitle, setHideSubTitle] = useState(false); + + const reactGridRef = useRef(null); + + useEffect(() => { + defineGrid(); + }, []); + + function reactGridReady(reactGrid: SlickgridReactInstance) { + reactGridRef.current = reactGrid; + } + + /* Define grid Options and Columns */ + function defineGrid() { + const columnDefinitions: Column[] = [ + { + id: 'title', + name: 'Title', + field: 'title', + sortable: true, + filterable: true, + minWidth: 100, + // Demo: Header Menu with Slot - complete custom HTML with keyboard shortcuts + header: { + menu: { + commandItems: [ + { + command: 'sort-asc', + title: 'Sort Ascending', + positionOrder: 50, + // Slot renderer replaces entire menu item content (can be HTML string or native DOM elements) + slotRenderer: (cmdItem) => ` + + `, + }, + { + command: 'sort-desc', + title: 'Sort Descending', + positionOrder: 51, + // Slot renderer using native DOM elements + slotRenderer: () => { + const menuItemElm = createDomElement('div', { className: 'menu-item' }); + const iconElm = createDomElement('i', { className: 'mdi mdi-sort-descending menu-item-icon' }); + const menuItemLabelElm = createDomElement('span', { className: 'menu-item-label', textContent: 'Sort Descending' }); + const kbdElm = createDomElement('kbd', { className: 'key-hint', textContent: 'Alt+↓' }); + menuItemElm.appendChild(iconElm); + menuItemElm.appendChild(menuItemLabelElm); + menuItemElm.appendChild(kbdElm); + return menuItemElm; + }, + }, + ], + }, + }, + }, + { + id: 'duration', + name: 'Duration', + field: 'duration', + sortable: true, + filterable: true, + minWidth: 100, + // Demo: Header Menu with Slot - showing badge and status dot + header: { + menu: { + commandItems: [ + { + command: 'column-resize-by-content', + title: 'Resize by Content', + positionOrder: 47, + // Slot renderer with badge + slotRenderer: () => ` + + `, + }, + { divider: true, command: '', positionOrder: 48 }, + { + command: 'sort-asc', + title: 'Sort Ascending', + iconCssClass: 'mdi mdi-sort-ascending', + positionOrder: 50, + }, + { + command: 'sort-desc', + title: 'Sort Descending', + iconCssClass: 'mdi mdi-sort-descending', + positionOrder: 51, + }, + { divider: true, command: '', positionOrder: 52 }, + { + command: 'clear-sort', + title: 'Remove Sort', + positionOrder: 58, + // Slot renderer with status indicator + slotRenderer: () => ` + + `, + }, + ], + }, + }, + }, + { + id: 'start', + name: 'Start', + field: 'start', + sortable: true, + formatter: Formatters.dateIso, + filterable: true, + filter: { model: Filters.compoundDate }, + minWidth: 100, + }, + { + id: 'finish', + name: 'Finish', + field: 'finish', + sortable: true, + formatter: Formatters.dateIso, + filterable: true, + filter: { model: Filters.dateRange }, + minWidth: 100, + }, + { + id: 'cost', + name: 'Cost', + field: 'cost', + width: 90, + sortable: true, + filterable: true, + formatter: Formatters.dollar, + // Demo: Header Menu with Slot - showing slotRenderer with callback (item, args) + header: { + menu: { + commandItems: [ + { + command: 'custom-action', + title: 'Advanced Export', + // Demo: Native HTMLElement with event listeners using slotRenderer (full DOM control) + slotRenderer: (cmdItem) => { + // you can use `createDomElement()` from Slickgrid for easier DOM element creation + const containerDiv = createDomElement('div', { className: 'menu-item' }); + const iconDiv = createDomElement('div', { className: 'advanced-export-icon', textContent: '📊' }); + const textSpan = createDomElement('span', { textContent: cmdItem.title || '', style: { flex: '1' } }); + const kbdElm = createDomElement('kbd', { className: 'key-hint', textContent: 'Ctrl+E' }); + containerDiv.appendChild(iconDiv); + containerDiv.appendChild(textSpan); + containerDiv.appendChild(kbdElm); + + // Add native event listeners for hover effects + containerDiv.addEventListener('mouseover', () => { + iconDiv.style.transform = 'scale(1.15)'; + iconDiv.style.background = 'linear-gradient(135deg, #d8dcef 0%, #ffffff 100%)'; + containerDiv.parentElement!.style.backgroundColor = '#854685'; + containerDiv.parentElement!.title = `📈 Export timestamp: ${tempoFormat(new Date(), 'YYYY-MM-DD hh:mm:ss a')}`; + containerDiv.style.color = 'white'; + containerDiv.querySelector('.key-hint')!.style.color = 'black'; + }); + containerDiv.addEventListener('mouseout', () => { + iconDiv.style.transform = 'scale(1)'; + iconDiv.style.background = 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)'; + containerDiv.parentElement!.style.backgroundColor = 'white'; + containerDiv.style.color = 'black'; + document.querySelector('.export-timestamp')?.remove(); + }); + + return containerDiv; + }, + action: () => { + alert('Custom export action triggered!'); + }, + }, + { divider: true, command: '' }, + { + command: 'filter-column', + title: 'Filter Column', + // Slot renderer with status indicator and beta badge + slotRenderer: () => ` + + `, + }, + ], + }, + }, + }, + { + id: 'percentComplete', + name: '% Complete', + field: 'percentComplete', + sortable: true, + filterable: true, + type: 'number', + filter: { model: Filters.slider, operator: '>=' }, + // Demo: Header Menu with Slot - showing interactive element (checkbox) + header: { + menu: { + commandItems: [ + { + command: 'recalc', + title: 'Recalculate', + iconCssClass: 'mdi mdi-refresh', + slotRenderer: () => ` + + `, + }, + ], + }, + }, + }, + { + id: 'action', + name: 'Action', + field: 'action', + width: 70, + minWidth: 70, + maxWidth: 70, + cssClass: 'justify-center flex', + formatter: () => + `
      `, + excludeFromExport: true, + // Demo: Cell Menu with slot examples (demonstrating defaultMenuItemRenderer at menu level) + cellMenu: { + hideCloseButton: false, + commandTitle: 'Cell Actions', + // Demo: Menu-level default renderer that applies to all items unless overridden + defaultMenuItemRenderer: (cmdItem) => { + return ` + + `; + }, + commandItems: [ + { + command: 'copy-cell', + title: 'Copy Cell Value', + iconCssClass: 'mdi mdi-content-copy', + action: (_e, args) => { + console.log('Copy cell value:', args.dataContext[args.column.field]); + alert(`Copied: ${args.dataContext[args.column.field]}`); + }, + }, + 'divider', + { + command: 'export-row', + title: 'Export Row', + iconCssClass: 'mdi mdi-download', + action: (_e, args) => { + console.log('Export row:', args.dataContext); + alert(`Export row #${args.dataContext.id}`); + }, + }, + { + command: 'export', + title: 'Export', + iconCssClass: 'mdi mdi-download', + commandItems: [ + { + command: 'export-excel', + title: 'Export as Excel', + iconCssClass: 'mdi mdi-file-excel-outline text-success', + action: (_e, args) => { + alert(`Export row #${args.dataContext.id} to Excel`); + }, + }, + { + command: 'export-csv', + title: 'Export as CSV', + iconCssClass: 'mdi mdi-file-document-outline', + action: (_e, args) => { + alert(`Export row #${args.dataContext.id} to CSV`); + }, + }, + { + command: 'export-pdf', + title: 'Export as PDF', + iconCssClass: 'mdi mdi-file-pdf-outline text-red', + action: (_e, args) => { + alert(`Export row #${args.dataContext.id} to PDF`); + }, + }, + ], + }, + { divider: true, command: '' }, + { + command: 'edit-row', + title: 'Edit Row', + // Individual slotRenderer overrides the defaultMenuItemRenderer + slotRenderer: (_item, args) => ` + + `, + action: (_e, args) => { + console.log('Edit row:', args.dataContext); + alert(`Edit row #${args.dataContext.id}`); + }, + }, + { + command: 'delete-row', + title: 'Delete Row', + iconCssClass: 'mdi mdi-delete text-danger', + action: (_event, args) => { + const dataContext = args.dataContext; + if (confirm(`Do you really want to delete row (${args.row! + 1}) with "${dataContext.title}"`)) { + reactGridRef.current?.gridService.deleteItemById(dataContext.id); + } + }, + }, + ], + }, + }, + ]; + + const gridOptions: GridOption = { + autoResize: { + container: '#demo-container', + }, + enableAutoResize: true, + enableCellNavigation: true, + enableFiltering: true, + enableSorting: true, + enableGrouping: true, + + // Header Menu with slots (already configured in columns above) + enableHeaderMenu: true, + headerMenu: { + // hideCommands: ['column-resize-by-content', 'clear-sort'], + + // Demo: Menu-level default renderer for all header menu items + defaultMenuItemRenderer: (cmdItem) => { + return ` + + `; + }, + }, + + // Cell Menu with slots (configured in the Action column above) + enableCellMenu: true, + + // Context Menu with slot examples + enableContextMenu: true, + contextMenu: { + // hideCommands: ['clear-grouping', 'copy'], + + // build your command items list + // spread built-in commands and optionally filter/sort them however you want + commandListBuilder: (builtInItems) => { + // commandItems.sort((a, b) => (a === 'divider' || b === 'divider' ? 0 : a.title! > b.title! ? -1 : 1)); + return [ + // filter commands if you want + // ...builtInItems.filter((x) => x !== 'divider' && x.command !== 'copy' && x.command !== 'clear-grouping'), + { + command: 'edit-cell', + title: 'Edit Cell', + // Demo: Individual slotRenderer overrides the menu's defaultMenuItemRenderer + slotRenderer: (cmdItem) => { + // you can use `createDomElement()` from Slickgrid for easier DOM element creation + const containerDiv = createDomElement('div', { className: 'menu-item' }); + const iconDiv = createDomElement('div', { className: 'edit-cell-icon', textContent: '✎' }); + const textSpan = createDomElement('span', { textContent: cmdItem.title || '', style: { flex: '1' } }); + const kbdElm = createDomElement('kbd', { className: 'edit-cell', textContent: 'F2' }); + containerDiv.appendChild(iconDiv); + containerDiv.appendChild(textSpan); + containerDiv.appendChild(kbdElm); + + // Native event listeners for interactive effects + containerDiv.addEventListener('mouseover', () => { + iconDiv.style.transform = 'rotate(15deg) scale(1.1)'; + iconDiv.style.boxShadow = '0 2px 8px rgba(0,200,83,0.4)'; + }); + containerDiv.addEventListener('mouseout', () => { + iconDiv.style.transform = 'rotate(0deg) scale(1)'; + iconDiv.style.boxShadow = 'none'; + }); + + return containerDiv; + }, + action: () => alert('Edit cell'), + }, + ...builtInItems, + { divider: true, command: '' }, + { + command: 'export', + title: 'Export', + iconCssClass: 'mdi mdi-download', + commandItems: [ + { + command: 'export-excel', + title: 'Export as Excel', + iconCssClass: 'mdi mdi-file-excel-outline text-success', + action: () => alert('Export to Excel'), + }, + { + command: 'export-csv', + title: 'Export as CSV', + iconCssClass: 'mdi mdi-file-document-outline', + action: () => alert('Export to CSV'), + }, + { + command: 'export-pdf', + title: 'Export as PDF', + iconCssClass: 'mdi mdi-file-pdf-outline text-danger', + action: () => alert('Export to PDF'), + }, + ], + }, + { divider: true, command: '' }, + { + command: 'delete-row', + title: 'Delete Row', + iconCssClass: 'mdi mdi-delete text-danger', + action: () => alert('Delete row'), + }, + ] as Array; + }, + // Demo: Menu-level default renderer for context menu items + defaultMenuItemRenderer: (cmdItem) => { + return ` + + `; + }, + }, + + // Grid Menu with slot examples (demonstrating defaultMenuItemRenderer at menu level) + enableGridMenu: true, + gridMenu: { + // hideCommands: ['toggle-preheader', 'toggle-filter'], + + // Demo: Menu-level default renderer that applies to all items (can be overridden per item with slotRenderer) + defaultMenuItemRenderer: (cmdItem) => { + return ` + + `; + }, + commandListBuilder: (builtInItems) => { + return [ + ...builtInItems, + { divider: true, command: '' }, + { + command: 'export-excel', + title: 'Export to Excel', + iconCssClass: 'mdi mdi-file-excel-outline', + action: () => alert('Export to Excel'), + }, + { + command: 'export-csv', + title: 'Export to CSV', + iconCssClass: 'mdi mdi-download', + // Individual slotRenderer overrides the defaultMenuItemRenderer for this item + slotRenderer: (cmdItem) => ` + + `, + action: () => alert('Export to CSV'), + }, + { + command: 'refresh-data', + title: 'Refresh Data', + iconCssClass: 'mdi mdi-refresh', + // Demo: slotRenderer with keyboard shortcut + slotRenderer: (cmdItem) => { + // you can use `createDomElement()` from Slickgrid for easier DOM element creation + const menuItemElm = createDomElement('div', { className: 'menu-item' }); + const iconElm = createDomElement('i', { className: `${cmdItem.iconCssClass} menu-item-icon` }); + const menuItemLabelElm = createDomElement('span', { className: 'menu-item-label', textContent: cmdItem.title || '' }); + const kbdElm = createDomElement('kbd', { className: 'key-hint', textContent: 'F5' }); + menuItemElm.appendChild(iconElm); + menuItemElm.appendChild(menuItemLabelElm); + menuItemElm.appendChild(kbdElm); + return menuItemElm; + }, + action: () => alert('Refresh data'), + }, + ] as Array; + }, + }, + + // tooltip plugin + externalResources: [new SlickCustomTooltip()], + customTooltip: { + observeAllTooltips: true, + }, + }; + + setColumnDefinitions(columnDefinitions); + setGridOptions(gridOptions); + } + + function clearGrouping() { + reactGridRef.current?.dataView?.setGrouping([]); + } + + function collapseAllGroups() { + reactGridRef.current?.dataView?.collapseAllGroups(); + } + + function expandAllGroups() { + reactGridRef.current?.dataView?.expandAllGroups(); + } + + function groupByDuration() { + // you need to manually add the sort icon(s) in UI + reactGridRef.current?.slickGrid?.setSortColumns([{ columnId: 'duration', sortAsc: true }]); + reactGridRef.current?.dataView?.setGrouping({ + getter: 'duration', + formatter: (g) => `Duration: ${g.value} (${g.count} items)`, + comparer: (a, b) => SortComparers.numeric(a.value, b.value, SortDirectionNumber.asc), + aggregators: [new Aggregators.Avg('percentComplete'), new Aggregators.Sum('cost')], + aggregateCollapsed: false, + lazyTotalsCalculation: true, + } as Grouping); + reactGridRef.current?.slickGrid?.invalidate(); // invalidate all rows and re-render + } + + function loadData(count: number): ReportItem[] { + const tmpData: ReportItem[] = []; + for (let i = 0; i < count; i++) { + const randomDuration = Math.round(Math.random() * 100); + const randomYear = 2000 + Math.floor(Math.random() * 10); + const randomMonth = Math.floor(Math.random() * 11); + const randomDay = Math.floor(Math.random() * 29); + const randomPercent = Math.round(Math.random() * 100); + + tmpData[i] = { + id: i, + title: 'Task ' + i, + duration: randomDuration, + cost: Math.round(Math.random() * 10000) / 100, + percentComplete: randomPercent, + start: new Date(randomYear, randomMonth, randomDay), + finish: new Date(randomYear, randomMonth + 1, randomDay), + }; + } + return tmpData; + } + + function toggleSubTitle() { + const newHideSubTitle = !hideSubTitle; + setHideSubTitle(newHideSubTitle); + const action = newHideSubTitle ? 'add' : 'remove'; + document.querySelector('.subtitle')?.classList[action]('hidden'); + reactGridRef.current?.resizerService.resizeGrid(0); + } + + return !gridOptions ? ( + '' + ) : ( +
      +

      + Example 51: Menus with Slots + + see  + + code + + + +

      + +
      +
      + + Menu Slots Demo with Custom Renderer +
      +

      + Click on the menu buttons to see the new single slot functionality working across all menu types (Header Menu, + Cell Menu, Context Menu, Grid Menu): +

      +

      + + Note: The demo focuses on the custom rendering capability via slotRenderer and + defaultMenuItemRenderer, which work across all menu plugins (SlickHeaderMenu, SlickCellMenu, SlickContextMenu, + SlickGridMenu). Also note that the keyboard shortcuts displayed in the menus (e.g., Alt+↑, F5) are for + demo purposes only and do not actually trigger any actions. + +

      +
      + +
      +
      + + + + +
      +
      + +
      + reactGridReady($event.detail)} + /> +
      +
      + ); +}; + +export default Example51; diff --git a/with-i18n-translate/src/examples/slickgrid/Example6.tsx b/with-i18n-translate/src/examples/slickgrid/Example6.tsx index 33461d6..d6606f6 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example6.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example6.tsx @@ -11,9 +11,7 @@ import { withTranslation } from 'react-i18next'; import { Filters, Formatters, - OperatorType, SlickgridReact, - SortDirection, type Column, type CursorPageInfo, type GridOption, @@ -222,14 +220,14 @@ const Example6: React.FC = () => { { columnId: 'finish', width: 130 }, ], filters: [ - { columnId: 'gender', searchTerms: ['male'], operator: OperatorType.equal }, - { columnId: 'name', searchTerms: ['Joh*oe'], operator: OperatorType.startsWithEndsWith }, + { columnId: 'gender', searchTerms: ['male'], operator: '=' }, + { columnId: 'name', searchTerms: ['Joh*oe'], operator: 'StartsWithEndsWith' }, { columnId: 'company', searchTerms: ['xyz'], operator: 'IN' }, - { columnId: 'finish', searchTerms: [presetLowestDay, presetHighestDay], operator: OperatorType.rangeInclusive }, + { columnId: 'finish', searchTerms: [presetLowestDay, presetHighestDay], operator: 'RangeInclusive' }, ], sorters: [ { columnId: 'name', direction: 'asc' }, - { columnId: 'company', direction: SortDirection.DESC }, + { columnId: 'company', direction: 'DESC' }, ], pagination: { pageNumber: isWithCursorRef.current ? 1 : 2, pageSize: 20 }, }, @@ -240,7 +238,7 @@ const Example6: React.FC = () => { addLocaleIntoQuery: true, extraQueryArguments: [{ field: 'userId', value: 123 }], filterQueryOverride: ({ fieldName, columnDef, columnFilterOperator, searchValues }) => { - if (columnFilterOperator === OperatorType.custom && columnDef?.id === 'name') { + if (columnFilterOperator === 'Custom' && columnDef?.id === 'name') { return { field: fieldName, operator: 'Like', value: searchValues[0] }; } return; @@ -339,11 +337,11 @@ const Example6: React.FC = () => { const presetHighestDay = `${currentYear}-02-15`; reactGridRef.current?.filterService.updateFilters([ - { columnId: 'gender', searchTerms: ['female'], operator: OperatorType.equal }, - { columnId: 'name', searchTerms: ['Jane'], operator: OperatorType.startsWith }, + { columnId: 'gender', searchTerms: ['female'], operator: '=' }, + { columnId: 'name', searchTerms: ['Jane'], operator: 'StartsWith' }, { columnId: 'company', searchTerms: ['acme'], operator: 'IN' }, - { columnId: 'billingAddressZip', searchTerms: ['11'], operator: OperatorType.greaterThanOrEqual }, - { columnId: 'finish', searchTerms: [presetLowestDay, presetHighestDay], operator: OperatorType.rangeInclusive }, + { columnId: 'billingAddressZip', searchTerms: ['11'], operator: '>=' }, + { columnId: 'finish', searchTerms: [presetLowestDay, presetHighestDay], operator: 'RangeInclusive' }, ]); } @@ -360,14 +358,14 @@ const Example6: React.FC = () => { const presetHighestDay = `${currentYear}-02-15`; reactGridRef.current?.filterService.updateFilters([ - { columnId: 'gender', searchTerms: ['male'], operator: OperatorType.equal }, - { columnId: 'name', searchTerms: ['Joh*oe'], operator: OperatorType.startsWithEndsWith }, + { columnId: 'gender', searchTerms: ['male'], operator: '=' }, + { columnId: 'name', searchTerms: ['Joh*oe'], operator: 'StartsWithEndsWith' }, { columnId: 'company', searchTerms: ['xyz'], operator: 'IN' }, - { columnId: 'finish', searchTerms: [presetLowestDay, presetHighestDay], operator: OperatorType.rangeInclusive }, + { columnId: 'finish', searchTerms: [presetLowestDay, presetHighestDay], operator: 'RangeInclusive' }, ]); reactGridRef.current?.sortService.updateSorting([ { columnId: 'name', direction: 'asc' }, - { columnId: 'company', direction: SortDirection.DESC }, + { columnId: 'company', direction: 'DESC' }, ]); setTimeout(() => { reactGridRef.current?.paginationService?.changeItemPerPage(20); diff --git a/with-i18n-translate/src/examples/slickgrid/Example9.tsx b/with-i18n-translate/src/examples/slickgrid/Example9.tsx index 64d4a06..966a6e8 100644 --- a/with-i18n-translate/src/examples/slickgrid/Example9.tsx +++ b/with-i18n-translate/src/examples/slickgrid/Example9.tsx @@ -2,7 +2,6 @@ import i18next from 'i18next'; import React, { useEffect, useRef, useState } from 'react'; import { withTranslation } from 'react-i18next'; import { - ExtensionName, Filters, Formatters, SlickgridReact, @@ -296,7 +295,7 @@ const Example9: React.FC = () => { function toggleGridMenu(e: MouseEvent) { if (reactGridRef.current?.extensionService) { - const gridMenuInstance = reactGridRef.current.extensionService.getExtensionInstanceByName(ExtensionName.gridMenu); + const gridMenuInstance = reactGridRef.current.extensionService.getExtensionInstanceByName('gridMenu'); gridMenuInstance.showGridMenu(e, { dropSide: 'right' }); } } diff --git a/with-i18n-translate/src/examples/slickgrid/custom-inputEditor.tsx b/with-i18n-translate/src/examples/slickgrid/custom-inputEditor.tsx index 2783267..593a5e5 100644 --- a/with-i18n-translate/src/examples/slickgrid/custom-inputEditor.tsx +++ b/with-i18n-translate/src/examples/slickgrid/custom-inputEditor.tsx @@ -1,4 +1,4 @@ -import type { Column, ColumnEditor, Editor, EditorValidator, EditorValidationResult } from 'slickgrid-react'; +import type { Column, ColumnEditor, Editor, EditorValidationResult, EditorValidator } from 'slickgrid-react'; /* * An example of a 'detached' editor. diff --git a/with-i18n-translate/src/examples/slickgrid/custom-inputFilter.tsx b/with-i18n-translate/src/examples/slickgrid/custom-inputFilter.tsx index 940e620..db1f53d 100644 --- a/with-i18n-translate/src/examples/slickgrid/custom-inputFilter.tsx +++ b/with-i18n-translate/src/examples/slickgrid/custom-inputFilter.tsx @@ -1,13 +1,12 @@ import { + emptyElement, type Column, type ColumnFilter, - emptyElement, type Filter, type FilterArguments, type FilterCallback, type GridOption, - OperatorType, - type OperatorString, + type OperatorType, type SearchTerm, type SlickGrid, } from 'slickgrid-react'; @@ -20,7 +19,7 @@ export class CustomInputFilter implements Filter { searchTerms: SearchTerm[] = []; columnDef!: Column; callback!: FilterCallback; - operator: OperatorType | OperatorString = OperatorType.equal; + operator: OperatorType = 'EQ'; /** Getter for the Filter Operator */ get columnFilter(): ColumnFilter { diff --git a/with-i18n-translate/src/examples/slickgrid/example51.scss b/with-i18n-translate/src/examples/slickgrid/example51.scss new file mode 100644 index 0000000..02bd247 --- /dev/null +++ b/with-i18n-translate/src/examples/slickgrid/example51.scss @@ -0,0 +1,145 @@ +body { + --slick-menu-item-height: 30px; + --slick-menu-line-height: 30px; + --slick-column-picker-item-height: 28px; + --slick-column-picker-line-height: 28px; + --slick-menu-item-border-radius: 4px; + --slick-menu-item-hover-border: 1px solid #148dff; + --slick-column-picker-item-hover-color: #fff; + --slick-column-picker-item-border-radius: 4px; + --slick-column-picker-item-hover-border: 1px solid #148dff; + --slick-menu-item-hover-color: #fff; + --slick-tooltip-background-color: #4c4c4c; + --slick-tooltip-color: #fff; + --slick-tooltip-font-size: 14px; + .slick-cell-menu, + .slick-context-menu, + .slick-grid-menu, + .slick-header-menu { + .slick-menu-item:hover:not(.slick-menu-item-disabled) { + color: #0a34b5; + } + } + .slick-menu-footer { + padding: 4px 6px; + border-top: 1px solid #c0c0c0; + } +} + + +.key-hint { + background: #eee; + border: 1px solid #ccc; + border-radius: 2px; + padding: 2px 4px; + font-size: 10px; + margin-left: 10px; + white-space: nowrap; + display: inline-flex; + align-items: center; + height: 20px; + + &.beta, + &.danger, + &.warn { + color: white; + font-size: 8px; + font-weight: bold; + } + &.beta { + background: #4444ff; + border: 1px solid #5454ff; + } + + &.danger { + background: #ff4444; + border: 1px solid #fb5a5a; + } + + &.warn { + background: #ff9800; + border: 1px solid #fba321; + } +} +kbd { + background-color: #eee !important; + color: #202020 !important; +} + +.edit-cell { + // background: #eee; + border: 1px solid #ccc; + border-radius: 2px; + padding: 2px 4px; + font-size: 10px; + margin-left: 10px; + display: inline-flex; + align-items: center; + height: 18px; +} + +.export-timestamp { + background-color: #4c4c4c; + color: #fff; + padding: 8px; + border-radius: 4px; + position: absolute; + z-index: 999999; +} + +.advanced-export-icon, +.edit-cell-icon, +.recalc-icon { + width: 20px; + height: 20px; + border-radius: 3px; + display: flex; + align-items: center; + justify-content: center; + margin-right: 4px; + transition: transform 0.2s; + color: white; + font-size: 10px; +} +.advanced-export-icon { + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); +} +.edit-cell-icon { + background: linear-gradient(135deg, #00c853 0%, #64dd17 100%); +} +.recalc-icon { + background: linear-gradient(135deg, #c800a3 0%, #a31189 100%); +} + +.round-tag { + width: 6px; + height: 6px; + border-radius: 50%; + display: inline-block; + background: #44ff44; + box-shadow: 0 0 4px #44ff44; + margin-left: 10px; +} + +.menu-item { + display: flex; + align-items: center; + flex: 1; + justify-content: space-between; + + .menu-item-label.warn { + flex: 1; + color: #f09000; + } +} +.menu-item-icon { + margin-right: 4px; + font-size: 18px; + &.warn { + color: #ff9800; + } +} + +.menu-item-label { + flex: 1; +} diff --git a/with-i18n-translate/src/examples/slickgrid/utilities.ts b/with-i18n-translate/src/examples/slickgrid/utilities.ts index 647addd..ae78294 100644 --- a/with-i18n-translate/src/examples/slickgrid/utilities.ts +++ b/with-i18n-translate/src/examples/slickgrid/utilities.ts @@ -5,26 +5,31 @@ export function randomNumber(min: number, max: number, floor = true) { export function showToast(msg: string, type: 'danger' | 'info' | 'warning', time = 2000) { const divContainer = document.createElement('div'); + divContainer.setAttribute('popover', ''); divContainer.className = `toast align-items-center text-bg-${type} border-0`; divContainer.style.position = 'absolute'; - divContainer.style.left = '50%'; - divContainer.style.top = '20px'; - divContainer.style.transform = 'translate(-50%)'; divContainer.style.zIndex = '9999'; - divContainer.style.display = 'block'; - - const divFlex = document.createElement('div'); - divFlex.className = 'd-flex align-items-center'; const divBody = document.createElement('div'); divBody.className = 'toast-body'; divBody.textContent = msg; - - divContainer.appendChild(divFlex); - divFlex.appendChild(divBody); + divContainer.appendChild(divBody); document.body.appendChild(divContainer); - setTimeout(() => divContainer.remove(), time); + // When popover is supported, use it to display the message. + // Baseline 2024: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/showPopover + if (typeof divContainer.showPopover === 'function') { + divContainer.style.display = 'block'; + divContainer.style.margin = '0 auto'; + divContainer.style.marginTop = '20px'; + divContainer.style.borderWidth = '0px'; + divContainer.showPopover(); + setTimeout(() => { + divContainer.hidePopover(); + divContainer.remove(); + }, time); + return; + } } export function zeroPadding(input: string | number) { diff --git a/with-i18n-translate/yarn.lock b/with-i18n-translate/yarn.lock index ade4027..33e5217 100644 --- a/with-i18n-translate/yarn.lock +++ b/with-i18n-translate/yarn.lock @@ -39,6 +39,15 @@ js-tokens "^4.0.0" picocolors "^1.1.1" +"@babel/code-frame@^7.28.6", "@babel/code-frame@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.0.tgz#7cd7a59f15b3cc0dcd803038f7792712a7d0b15c" + integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw== + dependencies: + "@babel/helper-validator-identifier" "^7.28.5" + js-tokens "^4.0.0" + picocolors "^1.1.1" + "@babel/compat-data@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.7.tgz#b8479fe0018ef0ac87b6b7a5c6916fcd67ae2c9c" @@ -49,6 +58,11 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.27.5.tgz#7d0658ec1a8420fc866d1df1b03bea0e79934c82" integrity sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg== +"@babel/compat-data@^7.28.6": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.0.tgz#00d03e8c0ac24dd9be942c5370990cbe1f17d88d" + integrity sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg== + "@babel/core@^7.21.3": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.7.tgz#1b3d144157575daf132a3bc80b2b18e6e3ca6ece" @@ -70,7 +84,7 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/core@^7.24.4", "@babel/core@^7.28.5": +"@babel/core@^7.24.4": version "7.28.5" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.5.tgz#4c81b35e51e1b734f510c99b07dfbc7bbbb48f7e" integrity sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw== @@ -91,6 +105,27 @@ json5 "^2.2.3" semver "^6.3.1" +"@babel/core@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.0.tgz#5286ad785df7f79d656e88ce86e650d16ca5f322" + integrity sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA== + dependencies: + "@babel/code-frame" "^7.29.0" + "@babel/generator" "^7.29.0" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-module-transforms" "^7.28.6" + "@babel/helpers" "^7.28.6" + "@babel/parser" "^7.29.0" + "@babel/template" "^7.28.6" + "@babel/traverse" "^7.29.0" + "@babel/types" "^7.29.0" + "@jridgewell/remapping" "^2.3.5" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + "@babel/generator@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.7.tgz#de86acbeb975a3e11ee92dd52223e6b03b479c56" @@ -134,6 +169,17 @@ "@jridgewell/trace-mapping" "^0.3.28" jsesc "^3.0.2" +"@babel/generator@^7.29.0": + version "7.29.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.1.tgz#d09876290111abbb00ef962a7b83a5307fba0d50" + integrity sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw== + dependencies: + "@babel/parser" "^7.29.0" + "@babel/types" "^7.29.0" + "@jridgewell/gen-mapping" "^0.3.12" + "@jridgewell/trace-mapping" "^0.3.28" + jsesc "^3.0.2" + "@babel/helper-compilation-targets@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz#11260ac3322dda0ef53edfae6e97b961449f5fa4" @@ -156,6 +202,17 @@ lru-cache "^5.1.1" semver "^6.3.1" +"@babel/helper-compilation-targets@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz#32c4a3f41f12ed1532179b108a4d746e105c2b25" + integrity sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA== + dependencies: + "@babel/compat-data" "^7.28.6" + "@babel/helper-validator-option" "^7.27.1" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-globals@^7.28.0": version "7.28.0" resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" @@ -177,6 +234,14 @@ "@babel/traverse" "^7.27.1" "@babel/types" "^7.27.1" +"@babel/helper-module-imports@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz#60632cbd6ffb70b22823187201116762a03e2d5c" + integrity sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw== + dependencies: + "@babel/traverse" "^7.28.6" + "@babel/types" "^7.28.6" + "@babel/helper-module-transforms@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz#2ac9372c5e001b19bc62f1fe7d96a18cb0901d1a" @@ -196,6 +261,15 @@ "@babel/helper-validator-identifier" "^7.27.1" "@babel/traverse" "^7.28.3" +"@babel/helper-module-transforms@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz#9312d9d9e56edc35aeb6e95c25d4106b50b9eb1e" + integrity sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA== + dependencies: + "@babel/helper-module-imports" "^7.28.6" + "@babel/helper-validator-identifier" "^7.28.5" + "@babel/traverse" "^7.28.6" + "@babel/helper-plugin-utils@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" @@ -265,6 +339,14 @@ "@babel/template" "^7.27.2" "@babel/types" "^7.28.4" +"@babel/helpers@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.6.tgz#fca903a313ae675617936e8998b814c415cbf5d7" + integrity sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw== + dependencies: + "@babel/template" "^7.28.6" + "@babel/types" "^7.28.6" + "@babel/highlight@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" @@ -312,6 +394,13 @@ dependencies: "@babel/types" "^7.28.2" +"@babel/parser@^7.28.6", "@babel/parser@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.0.tgz#669ef345add7d057e92b7ed15f0bac07611831b6" + integrity sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww== + dependencies: + "@babel/types" "^7.29.0" + "@babel/plugin-transform-react-jsx-self@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz#af678d8506acf52c577cac73ff7fe6615c85fc92" @@ -361,6 +450,15 @@ "@babel/parser" "^7.27.2" "@babel/types" "^7.27.1" +"@babel/template@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.28.6.tgz#0e7e56ecedb78aeef66ce7972b082fce76a23e57" + integrity sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ== + dependencies: + "@babel/code-frame" "^7.28.6" + "@babel/parser" "^7.28.6" + "@babel/types" "^7.28.6" + "@babel/traverse@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.7.tgz#83e367619be1cab8e4f2892ef30ba04c26a40fa8" @@ -413,6 +511,19 @@ "@babel/types" "^7.28.5" debug "^4.3.1" +"@babel/traverse@^7.28.6", "@babel/traverse@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.0.tgz#f323d05001440253eead3c9c858adbe00b90310a" + integrity sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA== + dependencies: + "@babel/code-frame" "^7.29.0" + "@babel/generator" "^7.29.0" + "@babel/helper-globals" "^7.28.0" + "@babel/parser" "^7.29.0" + "@babel/template" "^7.28.6" + "@babel/types" "^7.29.0" + debug "^4.3.1" + "@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.21.3", "@babel/types@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.7.tgz#1b7725c1d3a59f328cb700ce704c46371e6eef9b" @@ -454,6 +565,14 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.28.5" +"@babel/types@^7.28.6", "@babel/types@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7" + integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A== + dependencies: + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" + "@epic-web/invariant@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@epic-web/invariant/-/invariant-1.0.0.tgz#1073e5dee6dd540410784990eb73e4acd25c9813" @@ -688,17 +807,17 @@ "@eslint/core" "^0.17.0" levn "^0.4.1" -"@excel-builder-vanilla/types@^4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@excel-builder-vanilla/types/-/types-4.2.1.tgz#663e913bb88087bde5bf42f0f8be9d1bd2762bfd" - integrity sha512-AtVzHKfH7TtRTH7Yczwu6SMXYhmvO+W6H2L4ktg7JesK4cHSS7FinzFk+zkPWs2ROZEXYHLZxJTGY7OrhiOTjw== +"@excel-builder-vanilla/types@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@excel-builder-vanilla/types/-/types-5.0.0.tgz#5c5ab00a13baa8a9d49ff4d5442c98db70f07311" + integrity sha512-k0qMo9+velvx2EJne0gwT1NacDRCIWdCHpwTu5hjuRKrr1BzKCiTqgBKUf9zL74HIU7dejoWl3wgguWrccTFXg== dependencies: fflate "^0.8.2" -"@faker-js/faker@^10.2.0": - version "10.2.0" - resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-10.2.0.tgz#91028d4086969825795de331c305e8b91414bcb7" - integrity sha512-rTXwAsIxpCqzUnZvrxVh3L0QA0NzToqWBLAhV+zDV3MIIwiQhAZHMdPCIaj5n/yADu/tyk12wIPgL6YHGXJP+g== +"@faker-js/faker@^10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-10.3.0.tgz#d56b68e4f1dd090152029fe91d2f8505389947f2" + integrity sha512-It0Sne6P3szg7JIi6CgKbvTZoMjxBZhcv91ZrqrNuaZQfB5WoqYYbzCUOq89YR+VY8juY9M1vDWmDDa2TzfXCw== "@fnando/sparkline@^0.3.10": version "0.3.10" @@ -919,10 +1038,10 @@ resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== -"@rolldown/pluginutils@1.0.0-beta.53": - version "1.0.0-beta.53" - resolved "https://registry.yarnpkg.com/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.53.tgz#c57a5234ae122671aff6fe72e673a7ed90f03f87" - integrity sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ== +"@rolldown/pluginutils@1.0.0-rc.3": + version "1.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz#8a88cc92a0f741befc7bc109cb1a4c6b9408e1c5" + integrity sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q== "@rollup/pluginutils@^5.2.0": version "5.3.0" @@ -1038,142 +1157,155 @@ resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== -"@slickgrid-universal/binding@9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/binding/-/binding-9.13.0.tgz#ea4f3c7788d3943efe4f1659cf4ebdd33e3c149a" - integrity sha512-/3mWCmmekDsW8dXhcaodCgmasD9WMeWNtcD/NKWCYmYERx52EDUOVNxWf8tcpCFlN+eV8smAnTxWGPFZG7Oxaw== +"@slickgrid-universal/binding@10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/binding/-/binding-10.0.0-beta.0.tgz#c88cbc256ead14073b56dd68dc2b9192899efaa2" + integrity sha512-Wnm554nAJ/ZtPCc40k0jnFPWiVKKAxlN8uSxMor72xNjF4bUGjx2+lgoEWNDREGSbIT+VjQgiPuREjO0wtOwJg== -"@slickgrid-universal/common@9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/common/-/common-9.13.0.tgz#1063f7cf7b6b95ced61cc0eb9c468894d2905c86" - integrity sha512-azi6T/xQXFvzehMP3My33jlY2OgjPXf0qjDzqToe/90ijI/JKZQV99o7LUjHpqQAKpPGHpukiPZTV5az3gzvNA== +"@slickgrid-universal/common@10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/common/-/common-10.0.0-beta.0.tgz#90c591c698551aeece5c7a0f6f7951c701f5b978" + integrity sha512-3v8yztIrdO2PryD35LQ/EcFHugSHTz74TXR9D81WdjimNTCpKjMjQ2A1hsmStSg9OQX8DdmZgY9NygIpA7PuuQ== dependencies: - "@excel-builder-vanilla/types" "^4.2.1" + "@excel-builder-vanilla/types" "^5.0.0" "@formkit/tempo" "^1.0.0" - "@slickgrid-universal/binding" "9.13.0" - "@slickgrid-universal/event-pub-sub" "9.13.0" - "@slickgrid-universal/utils" "9.13.0" + "@slickgrid-universal/binding" "10.0.0-beta.0" + "@slickgrid-universal/event-pub-sub" "10.0.0-beta.0" + "@slickgrid-universal/utils" "10.0.0-beta.0" "@types/sortablejs" "^1.15.9" "@types/trusted-types" "^2.0.7" autocompleter "^9.3.2" dequal "^2.0.3" - multiple-select-vanilla "^4.4.1" - sortablejs "^1.15.6" + multiple-select-vanilla "^5.0.0" + sortablejs "^1.15.7" un-flatten-tree "^2.0.12" vanilla-calendar-pro "^3.1.0" -"@slickgrid-universal/composite-editor-component@^9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/composite-editor-component/-/composite-editor-component-9.13.0.tgz#bb3f0a991d9c544d93a1fc75e04eeec542605d95" - integrity sha512-MbD3dwaQf8z6ZLL2PJ0gu+9eMArQDuuo1cPTr8DuvulcPCzpQSARgp2koicFxUzBiRbpGVjGoqTdiyQbJ+9DAQ== +"@slickgrid-universal/composite-editor-component@^10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/composite-editor-component/-/composite-editor-component-10.0.0-beta.0.tgz#cdc7f9f93450c966e3984c35abac30a68d439e2f" + integrity sha512-Jgcc5LyMZlB/kCaaOtZ4cZRdMIstAdoBibnT9+l/5nsnDNojX2ZavmuuvbF0jMmSAVwhL0S+DBAL9y9jGluLVg== dependencies: - "@slickgrid-universal/binding" "9.13.0" - "@slickgrid-universal/common" "9.13.0" - "@slickgrid-universal/utils" "9.13.0" + "@slickgrid-universal/binding" "10.0.0-beta.0" + "@slickgrid-universal/common" "10.0.0-beta.0" + "@slickgrid-universal/utils" "10.0.0-beta.0" -"@slickgrid-universal/custom-footer-component@9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/custom-footer-component/-/custom-footer-component-9.13.0.tgz#f93d413630f6f69296a63e8b6643d90ec55e7539" - integrity sha512-8rmWNMNZ+tdyCw8AjgsWwyLZQYjAe22guwWW4F/rzOPHRZdCiUX9b1CeHzPDTZWGS/DSULQuVsxbWME4JDwrrQ== +"@slickgrid-universal/custom-footer-component@10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/custom-footer-component/-/custom-footer-component-10.0.0-beta.0.tgz#dcb35bbb30ee878b49cbc14df09312555ceff352" + integrity sha512-OQlLfhCjHvCUP0Cyk95J7zlPyDHM+H+RieyjhLP1XFu/n6wi/ryWSCxzb6QCWPqwRWaKgGAPtd+eJl/Bmx1Zkw== dependencies: "@formkit/tempo" "^1.0.0" - "@slickgrid-universal/binding" "9.13.0" - "@slickgrid-universal/common" "9.13.0" - -"@slickgrid-universal/custom-tooltip-plugin@^9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/custom-tooltip-plugin/-/custom-tooltip-plugin-9.13.0.tgz#fdbd8dc4d428be48a84183a8359255d654eb0c8c" - integrity sha512-rBWRKpwcSYjFLRESghFKrXvrp7xYhZ27VNtl+wk9jeUpUnL1pWK95OvSMt4KugHQp98vprChmF+OYwJ/rvYdIQ== - dependencies: - "@slickgrid-universal/binding" "9.13.0" - "@slickgrid-universal/common" "9.13.0" - "@slickgrid-universal/utils" "9.13.0" - -"@slickgrid-universal/empty-warning-component@9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/empty-warning-component/-/empty-warning-component-9.13.0.tgz#9c045abd78d97a90ac80bef24141869bf973f4f4" - integrity sha512-11OQYqAFIQ8hKbj4i6Rh1WC9vFjaQqZ75fLSAJeRB+ow7TOa/M7PWP749Jk3A+V8hKhzIF0rNGZ5BZyMJQ5cQw== - dependencies: - "@slickgrid-universal/common" "9.13.0" - -"@slickgrid-universal/event-pub-sub@9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/event-pub-sub/-/event-pub-sub-9.13.0.tgz#f221ddd5743143b5d532f00b2fb0a24048332372" - integrity sha512-PHacS+HbROsiDid4WwA08lC6b8U+fn4NgEPRriG99DAyHTpGuJRCaZyhGkmuhSbUpcZ8IB6g0igcVWWW0c89gw== - dependencies: - "@slickgrid-universal/utils" "9.13.0" - -"@slickgrid-universal/excel-export@^9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/excel-export/-/excel-export-9.13.0.tgz#02f5f8cffb577b3a6350a23f1ad796457f076cee" - integrity sha512-4AcDVTH+Atz1W2EGWaGtP4syPdza/FUs2mrTutB7/hBeUuDxCp2jXKTACkbYEGpSY3jfdL8JlKXt4R9EtpeO3w== - dependencies: - "@slickgrid-universal/common" "9.13.0" - "@slickgrid-universal/utils" "9.13.0" - excel-builder-vanilla "^4.2.1" - -"@slickgrid-universal/graphql@^9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/graphql/-/graphql-9.13.0.tgz#a76f9638adb565ca4f597f79ea3534106769f0ba" - integrity sha512-eVnWfIFd1KCjqrCHkByV/2s5iXSteZYbTSDM2HAb+lSw9gpLFbjBjBRjkwBgWus5LIgDXVqPXuhOwhWOST263A== - dependencies: - "@slickgrid-universal/common" "9.13.0" - "@slickgrid-universal/utils" "9.13.0" - -"@slickgrid-universal/odata@^9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/odata/-/odata-9.13.0.tgz#371df1665dbe27f633732b10a819e6047dd2c7ed" - integrity sha512-u5Eq3kz0fwiDNr6Rm3hIcROKXlfyK97EMhOfFnIYH+D3q1ZI7MrXhcaRNsRcK+hDtvkXxpAkpTBoWID27NAnxg== - dependencies: - "@slickgrid-universal/common" "9.13.0" - "@slickgrid-universal/utils" "9.13.0" - -"@slickgrid-universal/pagination-component@9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/pagination-component/-/pagination-component-9.13.0.tgz#acfbf6e77908bf8c8745a8123a02c707f44cec4c" - integrity sha512-xa4HdrYll1Kd8a6BGFiHcMVnxokf5NlKf86QlxPWzSIcFLLZFCSdCSE1pO9KorPw3mi83BSTh9ykQTCP52QXzw== - dependencies: - "@slickgrid-universal/binding" "9.13.0" - "@slickgrid-universal/common" "9.13.0" - -"@slickgrid-universal/pdf-export@^9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/pdf-export/-/pdf-export-9.13.0.tgz#49b7f96557b5c0f9c0cf0486bfc66bd551793e6a" - integrity sha512-Q8UT+4zESiNMmDgQDNR0UX7OMPGz+THiICCb/JKkkUGQjyj+OPzs1TtVkbjPNdgXdk6dOB/EXc46T21TCCWo0Q== - dependencies: - "@slickgrid-universal/common" "9.13.0" - "@slickgrid-universal/utils" "9.13.0" - jspdf "^4.0.0" - -"@slickgrid-universal/row-detail-view-plugin@9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/row-detail-view-plugin/-/row-detail-view-plugin-9.13.0.tgz#4a78cc66cc8e8d0ced6e830bc34fbab0686430d9" - integrity sha512-8DvLouWwdqFl2o/4iObUOhpCSYfPHVWbK0lLRBYD7bkQHbWNj5bvI9aQr8QY7bo5OTZcED7D8yG5fSSXKnmx/Q== - dependencies: - "@slickgrid-universal/common" "9.13.0" - "@slickgrid-universal/utils" "9.13.0" - -"@slickgrid-universal/rxjs-observable@^9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/rxjs-observable/-/rxjs-observable-9.13.0.tgz#2f53e8a3582628207d367ea366086e3bdf9907e7" - integrity sha512-VntBUxja036QwC4u8TdSetmD1vw6gIt6eswhcteqNdJTTkbsMrVYNH3xPtxESRPE+JMn2fZnd9JMb2uEXs5BoQ== - dependencies: - "@slickgrid-universal/common" "9.13.0" + "@slickgrid-universal/binding" "10.0.0-beta.0" + "@slickgrid-universal/common" "10.0.0-beta.0" + +"@slickgrid-universal/custom-tooltip-plugin@^10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/custom-tooltip-plugin/-/custom-tooltip-plugin-10.0.0-beta.0.tgz#b7fd935dcc52687a913690727e4afb9ab6bd0bda" + integrity sha512-CkYA3gPcgXmzrrcvHpFkpH/Yg3z2cTF5DCEik7uE9nB9oxo4UijSYTSCaVqsImT5G/zhwNMBORw6vun94KQ4tA== + dependencies: + "@slickgrid-universal/binding" "10.0.0-beta.0" + "@slickgrid-universal/common" "10.0.0-beta.0" + "@slickgrid-universal/utils" "10.0.0-beta.0" + +"@slickgrid-universal/empty-warning-component@10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/empty-warning-component/-/empty-warning-component-10.0.0-beta.0.tgz#5f804a5909362e5f89fce76d7dfa5ef742bbfefa" + integrity sha512-qMBjdzLnqaOFguMPyuy8GXigotvySDLHunUcVQfsE/8rfOwO2/6PNhHiV99Gqa3joZeM2c/0YD+47bAEYGvqmw== + dependencies: + "@slickgrid-universal/common" "10.0.0-beta.0" + +"@slickgrid-universal/event-pub-sub@10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/event-pub-sub/-/event-pub-sub-10.0.0-beta.0.tgz#07ce38822de0d36a2d806dbcc2e916e70eb15a1d" + integrity sha512-qgmXUHDEL/6TacoJgIInc/KRUjvw/KOmJz6Smv48agQ57/bViPQH3kYhkw7Ls4F6E56B349+SNLJBKsIl/EDfA== + dependencies: + "@slickgrid-universal/utils" "10.0.0-beta.0" + +"@slickgrid-universal/excel-export@^10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/excel-export/-/excel-export-10.0.0-beta.0.tgz#3d57b196878f9962450881740df38fa7fbbf569d" + integrity sha512-5JXoz70JlTZ0y5UDv/ejygDs6y7NTFeFA40ali6A3GeClX/X/2wh+XkDF1gTkD+K06J2m47eGmn/jtM3M8wf7w== + dependencies: + "@slickgrid-universal/common" "10.0.0-beta.0" + "@slickgrid-universal/utils" "10.0.0-beta.0" + excel-builder-vanilla "^5.0.0" + +"@slickgrid-universal/graphql@^10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/graphql/-/graphql-10.0.0-beta.0.tgz#3e0f7e60af156db380099db17a1801fe2d5d39d8" + integrity sha512-q6gbU1o3wMg52s+N05J57U157KnJBNfS3zAX1Kqa1M+ZTIrsviY5KRu4aE0hNt0WbtSSTH88BYfyI+RbgxoVcQ== + dependencies: + "@slickgrid-universal/common" "10.0.0-beta.0" + "@slickgrid-universal/utils" "10.0.0-beta.0" + +"@slickgrid-universal/odata@^10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/odata/-/odata-10.0.0-beta.0.tgz#35540644195d1980a62a61474aea3728bd717334" + integrity sha512-ldK29A7E3QHf7+qe8t8IK+0+/+9WoLNLIkLzJmLvkzcp3xF/IfyR+ANN/YhYXmvU8hFY0Lc4QP0nRl/rKQl8lg== + dependencies: + "@slickgrid-universal/common" "10.0.0-beta.0" + "@slickgrid-universal/utils" "10.0.0-beta.0" + +"@slickgrid-universal/pagination-component@10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/pagination-component/-/pagination-component-10.0.0-beta.0.tgz#b49e5e461e8fb70c0183fa2c6c76b97e5002c5f2" + integrity sha512-Nm0H91F+9o+wi5EVVSpeedYje6/pRsR7S67iyWkbBizBgn50Okzfl+kwwzKk5mjxvYo95HxTkjwxQH2G4xuPKw== + dependencies: + "@slickgrid-universal/binding" "10.0.0-beta.0" + "@slickgrid-universal/common" "10.0.0-beta.0" + +"@slickgrid-universal/pdf-export@^10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/pdf-export/-/pdf-export-10.0.0-beta.0.tgz#08fcf5621baba7687747d89ef72a3dbfe173ca32" + integrity sha512-uq/LNnwHgNNJb+m/QaYIuMsio56Bvj28SypZf4+OQ5DCLI7i+y92QuIbaBAJbKG+v+kw0gPiafeu6EnvL85Dlg== + dependencies: + "@slickgrid-universal/common" "10.0.0-beta.0" + "@slickgrid-universal/utils" "10.0.0-beta.0" + jspdf "^4.1.0" + +"@slickgrid-universal/react-row-detail-plugin@^10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/react-row-detail-plugin/-/react-row-detail-plugin-10.0.0-beta.0.tgz#3369acf1ac17c150704133a133fe7249d606ec41" + integrity sha512-+FZStOANiQuKGWFfN+2XgdGhGTj0Fod9PrSO9FKSp1+PYCisXD8erCsw6cc7A1bxf2+0OKRoQPGFz/k22zByGw== + dependencies: + "@slickgrid-universal/common" "10.0.0-beta.0" + "@slickgrid-universal/event-pub-sub" "10.0.0-beta.0" + "@slickgrid-universal/row-detail-view-plugin" "10.0.0-beta.0" + react "^19.2.4" + react-dom "^19.2.4" + slickgrid-react "10.0.0-beta.0" + tslib "^2.8.1" + +"@slickgrid-universal/row-detail-view-plugin@10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/row-detail-view-plugin/-/row-detail-view-plugin-10.0.0-beta.0.tgz#41775f1fc7b03b34a2f65e0825a52a737b254d99" + integrity sha512-MPXMQ4l2lzG2x2pZTWvBwjiMjoMSJBiiWZtZbu+oeTzQInreyEWg/EZ6SXhjYfl+qo6y4XW6dx7s9wr+msbqpQ== + dependencies: + "@slickgrid-universal/common" "10.0.0-beta.0" + "@slickgrid-universal/utils" "10.0.0-beta.0" + +"@slickgrid-universal/rxjs-observable@^10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/rxjs-observable/-/rxjs-observable-10.0.0-beta.0.tgz#56107e1b2db7d400c00efcc5961a40845e857b7f" + integrity sha512-pXgkKGRziMtD+fMSQBAi7Dlr5aPK0PEu1Xb4+MnR55kXg607hzrCgIYBxCjtqEB+FR8UeeROF+TUcHDjgsNs/g== + dependencies: + "@slickgrid-universal/common" "10.0.0-beta.0" rxjs "^7.8.2" -"@slickgrid-universal/text-export@^9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/text-export/-/text-export-9.13.0.tgz#42ad1f74d6c631cc8b424a35e9e36e3c205980a4" - integrity sha512-7G8oEZGXDgvc0sAfJPMqvt7DWIsExSq/pyBTqLdaCZ9K5ytwYy8b4SrluySx2meGWj2PZs2/qo5/RL1ExiVpTw== +"@slickgrid-universal/text-export@^10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/text-export/-/text-export-10.0.0-beta.0.tgz#02348336860215c3f338869f84eb42791a55fa08" + integrity sha512-xU+yEgXOd6oRmYVo98wCrLnPvNXHKKzvFdWWYR9JkaGV3Omi7WlJ3XEly3AHWY8AGLd0vUAT9uHolr+ugvcmww== dependencies: - "@slickgrid-universal/common" "9.13.0" - "@slickgrid-universal/utils" "9.13.0" + "@slickgrid-universal/common" "10.0.0-beta.0" + "@slickgrid-universal/utils" "10.0.0-beta.0" text-encoding-utf-8 "^1.0.2" -"@slickgrid-universal/utils@9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/utils/-/utils-9.13.0.tgz#bb543ca9194388dd6aed4d1c3c9de0d2f9af4193" - integrity sha512-0zFVPRb4o9B9BDDl2lukz3w3z1SRDAFP9IbXb30pivERBYsg/eRPlo2zTiY2YlUFExAsdlRfmofYbf/b4ytNRQ== +"@slickgrid-universal/utils@10.0.0-beta.0": + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/utils/-/utils-10.0.0-beta.0.tgz#3f355b8d328b3d0d8b95f38f16bb36bfbfd0fefc" + integrity sha512-i0LvHbwYII6+CT1T/M3mxQSg3f5YLFOHWsG29Ssz2HZia4+eKeQMKigk4C9Ka+nPV4qynAE7o+b7w8jwlApDqA== "@svgr/babel-plugin-add-jsx-attribute@8.0.0": version "8.0.0" @@ -1328,10 +1460,10 @@ resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/node@^24.10.9": - version "24.10.9" - resolved "https://registry.yarnpkg.com/@types/node/-/node-24.10.9.tgz#1aeb5142e4a92957489cac12b07f9c7fe26057d0" - integrity sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw== +"@types/node@^24.10.13": + version "24.10.13" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.10.13.tgz#2fac25c0e30f3848e19912c3b8791a28370e9e07" + integrity sha512-oH72nZRfDv9lADUBSo104Aq7gPHpQZc4BTx38r9xf9pg5LfP6EzSyH2n7qFmmxRQXh7YlUXODcYsg6PuTDSxGg== dependencies: undici-types "~7.16.0" @@ -1350,10 +1482,10 @@ resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-19.2.3.tgz#c1e305d15a52a3e508d54dca770d202cb63abf2c" integrity sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ== -"@types/react@^19.2.10": - version "19.2.10" - resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.10.tgz#f3ea799e6b4cebad6dfd231c238fc9de7652e2d2" - integrity sha512-WPigyYuGhgZ/cTPRXB2EwUw+XvsRA3GqHlsP4qteqrnnjDrApbS7MxcGr/hke5iUoeB7E/gQtrs9I37zAJ0Vjw== +"@types/react@^19.2.14": + version "19.2.14" + resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.14.tgz#39604929b5e3957e3a6fa0001dafb17c7af70bad" + integrity sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w== dependencies: csstype "^3.2.2" @@ -1372,111 +1504,111 @@ resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz" integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== -"@typescript-eslint/eslint-plugin@8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.54.0.tgz#d8899e5c2eccf5c4a20d01c036a193753748454d" - integrity sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ== +"@typescript-eslint/eslint-plugin@8.55.0": + version "8.55.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.55.0.tgz#086d2ef661507b561f7b17f62d3179d692a0765f" + integrity sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ== dependencies: "@eslint-community/regexpp" "^4.12.2" - "@typescript-eslint/scope-manager" "8.54.0" - "@typescript-eslint/type-utils" "8.54.0" - "@typescript-eslint/utils" "8.54.0" - "@typescript-eslint/visitor-keys" "8.54.0" + "@typescript-eslint/scope-manager" "8.55.0" + "@typescript-eslint/type-utils" "8.55.0" + "@typescript-eslint/utils" "8.55.0" + "@typescript-eslint/visitor-keys" "8.55.0" ignore "^7.0.5" natural-compare "^1.4.0" ts-api-utils "^2.4.0" -"@typescript-eslint/parser@8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.54.0.tgz#3d01a6f54ed247deb9982621f70e7abf1810bd97" - integrity sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA== +"@typescript-eslint/parser@8.55.0": + version "8.55.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.55.0.tgz#6eace4e9e95f178d3447ed1f17f3d6a5dfdb345c" + integrity sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw== dependencies: - "@typescript-eslint/scope-manager" "8.54.0" - "@typescript-eslint/types" "8.54.0" - "@typescript-eslint/typescript-estree" "8.54.0" - "@typescript-eslint/visitor-keys" "8.54.0" + "@typescript-eslint/scope-manager" "8.55.0" + "@typescript-eslint/types" "8.55.0" + "@typescript-eslint/typescript-estree" "8.55.0" + "@typescript-eslint/visitor-keys" "8.55.0" debug "^4.4.3" -"@typescript-eslint/project-service@8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.54.0.tgz#f582aceb3d752544c8e1b11fea8d95d00cf9adc6" - integrity sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g== +"@typescript-eslint/project-service@8.55.0": + version "8.55.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.55.0.tgz#b8a71c06a625bdad481c24d5614b68e252f3ae9b" + integrity sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ== dependencies: - "@typescript-eslint/tsconfig-utils" "^8.54.0" - "@typescript-eslint/types" "^8.54.0" + "@typescript-eslint/tsconfig-utils" "^8.55.0" + "@typescript-eslint/types" "^8.55.0" debug "^4.4.3" -"@typescript-eslint/scope-manager@8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.54.0.tgz#307dc8cbd80157e2772c2d36216857415a71ab33" - integrity sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg== +"@typescript-eslint/scope-manager@8.55.0": + version "8.55.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.55.0.tgz#8a0752c31c788651840dc98f840b0c2ebe143b8c" + integrity sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q== dependencies: - "@typescript-eslint/types" "8.54.0" - "@typescript-eslint/visitor-keys" "8.54.0" + "@typescript-eslint/types" "8.55.0" + "@typescript-eslint/visitor-keys" "8.55.0" -"@typescript-eslint/tsconfig-utils@8.54.0", "@typescript-eslint/tsconfig-utils@^8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.54.0.tgz#71dd7ba1674bd48b172fc4c85b2f734b0eae3dbc" - integrity sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw== +"@typescript-eslint/tsconfig-utils@8.55.0", "@typescript-eslint/tsconfig-utils@^8.55.0": + version "8.55.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.55.0.tgz#62f1d005419985e09d37a040b2f1450e4e805afa" + integrity sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q== -"@typescript-eslint/type-utils@8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.54.0.tgz#64965317dd4118346c2fa5ee94492892200e9fb9" - integrity sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA== +"@typescript-eslint/type-utils@8.55.0": + version "8.55.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.55.0.tgz#195d854b3e56308ce475fdea2165313bb1190200" + integrity sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g== dependencies: - "@typescript-eslint/types" "8.54.0" - "@typescript-eslint/typescript-estree" "8.54.0" - "@typescript-eslint/utils" "8.54.0" + "@typescript-eslint/types" "8.55.0" + "@typescript-eslint/typescript-estree" "8.55.0" + "@typescript-eslint/utils" "8.55.0" debug "^4.4.3" ts-api-utils "^2.4.0" -"@typescript-eslint/types@8.54.0", "@typescript-eslint/types@^8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.54.0.tgz#c12d41f67a2e15a8a96fbc5f2d07b17331130889" - integrity sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA== +"@typescript-eslint/types@8.55.0", "@typescript-eslint/types@^8.55.0": + version "8.55.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.55.0.tgz#8449c5a7adac61184cac92dbf6315733569708c2" + integrity sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w== -"@typescript-eslint/typescript-estree@8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.54.0.tgz#3c7716905b2b811fadbd2114804047d1bfc86527" - integrity sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA== +"@typescript-eslint/typescript-estree@8.55.0": + version "8.55.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.55.0.tgz#c83ac92c11ce79bedd984937c7780a65e7f7b2e3" + integrity sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw== dependencies: - "@typescript-eslint/project-service" "8.54.0" - "@typescript-eslint/tsconfig-utils" "8.54.0" - "@typescript-eslint/types" "8.54.0" - "@typescript-eslint/visitor-keys" "8.54.0" + "@typescript-eslint/project-service" "8.55.0" + "@typescript-eslint/tsconfig-utils" "8.55.0" + "@typescript-eslint/types" "8.55.0" + "@typescript-eslint/visitor-keys" "8.55.0" debug "^4.4.3" minimatch "^9.0.5" semver "^7.7.3" tinyglobby "^0.2.15" ts-api-utils "^2.4.0" -"@typescript-eslint/utils@8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.54.0.tgz#c79a4bcbeebb4f571278c0183ed1cb601d84c6c8" - integrity sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA== +"@typescript-eslint/utils@8.55.0": + version "8.55.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.55.0.tgz#c1744d94a3901deb01f58b09d3478d811f96d619" + integrity sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow== dependencies: "@eslint-community/eslint-utils" "^4.9.1" - "@typescript-eslint/scope-manager" "8.54.0" - "@typescript-eslint/types" "8.54.0" - "@typescript-eslint/typescript-estree" "8.54.0" + "@typescript-eslint/scope-manager" "8.55.0" + "@typescript-eslint/types" "8.55.0" + "@typescript-eslint/typescript-estree" "8.55.0" -"@typescript-eslint/visitor-keys@8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.54.0.tgz#0e4b50124b210b8600b245dd66cbad52deb15590" - integrity sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA== +"@typescript-eslint/visitor-keys@8.55.0": + version "8.55.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.55.0.tgz#3d9a40fd4e3705c63d8fae3af58988add3ed464d" + integrity sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA== dependencies: - "@typescript-eslint/types" "8.54.0" + "@typescript-eslint/types" "8.55.0" eslint-visitor-keys "^4.2.1" -"@vitejs/plugin-react@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-5.1.2.tgz#46f47be184c05a18839cb8705d79578b469ac6eb" - integrity sha512-EcA07pHJouywpzsoTUqNh5NwGayl2PPVEJKUSinGGSxFGYn+shYbqMGBg6FXDqgXum9Ou/ecb+411ssw8HImJQ== +"@vitejs/plugin-react@^5.1.4": + version "5.1.4" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-5.1.4.tgz#5b477e060bf612a7394c4febacc5de33a219b0e4" + integrity sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA== dependencies: - "@babel/core" "^7.28.5" + "@babel/core" "^7.29.0" "@babel/plugin-transform-react-jsx-self" "^7.27.1" "@babel/plugin-transform-react-jsx-source" "^7.27.1" - "@rolldown/pluginutils" "1.0.0-beta.53" + "@rolldown/pluginutils" "1.0.0-rc.3" "@types/babel__core" "^7.20.5" react-refresh "^0.18.0" @@ -2082,7 +2214,7 @@ doctrine@^2.1.0: dependencies: esutils "^2.0.2" -dompurify@^3.2.4, dompurify@^3.3.1: +dompurify@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.3.1.tgz#c7e1ddebfe3301eacd6c0c12a4af284936dbbb86" integrity sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q== @@ -2739,10 +2871,10 @@ esutils@^2.0.2: resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -excel-builder-vanilla@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/excel-builder-vanilla/-/excel-builder-vanilla-4.2.1.tgz#c6c0f6ca8f7aaa0b3a660343f9359b3fe718d4dc" - integrity sha512-lqQ7WtIvJcVfuGi64/QOIkjEoqypr8P9YIYiR1LdRXCuPvdC8olvf3EoGeFsorkJt4Ml56qBUDthQIYz83H1Qg== +excel-builder-vanilla@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/excel-builder-vanilla/-/excel-builder-vanilla-5.0.0.tgz#5d5f416d7611c91fe3031b3a6e7f5729c38714fa" + integrity sha512-oLOWQ5/RTA2RMvO8PkXZc1sreOpjF7MGw4LNfJQdABPUYjwdY5qng/LVN1i9bVQ85jmZN3gD2NBu5VCChjnqrQ== dependencies: fflate "^0.8.2" @@ -3002,10 +3134,10 @@ globals@^15.11.0: resolved "https://registry.yarnpkg.com/globals/-/globals-15.11.0.tgz#b96ed4c6998540c6fb824b24b5499216d2438d6e" integrity sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw== -globals@^17.2.0: - version "17.2.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-17.2.0.tgz#41d29408d6f5408457d2ef965d29215e3026779f" - integrity sha512-tovnCz/fEq+Ripoq+p/gN1u7l6A7wwkoBT9pRCzTHzsD/LvADIzXZdjmRymh5Ztf0DYC3Rwg5cZRYjxzBmzbWg== +globals@^17.3.0: + version "17.3.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-17.3.0.tgz#8b96544c2fa91afada02747cc9731c002a96f3b9" + integrity sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw== globalthis@^1.0.3: version "1.0.3" @@ -3169,10 +3301,10 @@ i18next-xhr-backend@*: dependencies: "@babel/runtime" "^7.5.5" -i18next@^25.8.0: - version "25.8.0" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-25.8.0.tgz#8b4ac516db016ebba70d2b68f5ba17e6ffcd4935" - integrity sha512-urrg4HMFFMQZ2bbKRK7IZ8/CTE7D8H4JRlAwqA2ZwDRFfdd0K/4cdbNNLgfn9mo+I/h9wJu61qJzH7jCFAhUZQ== +i18next@^25.8.7: + version "25.8.7" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-25.8.7.tgz#84496cc96dff00fc8a502bb71ed095ed0f3d6930" + integrity sha512-ttxxc5+67S/0hhoeVdEgc1lRklZhdfcUSEPp1//uUG2NB88X3667gRsDar+ZWQFdysnOsnb32bcoMsa4mtzhkQ== dependencies: "@babel/runtime" "^7.28.4" @@ -3632,10 +3764,10 @@ json5@^2.2.3: resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -jspdf@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jspdf/-/jspdf-4.0.0.tgz#3731c0a1a7d8afe28c681891236f8ad4a662d893" - integrity sha512-w12U97Z6edKd2tXDn3LzTLg7C7QLJlx0BPfM3ecjK2BckUl9/81vZ+r5gK4/3KQdhAcEZhENUxRhtgYBj75MqQ== +jspdf@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/jspdf/-/jspdf-4.1.0.tgz#4fb476251c8751c996175cfaac02d30fdf8c7b7a" + integrity sha512-xd1d/XRkwqnsq6FP3zH1Q+Ejqn2ULIJeDZ+FTKpaabVpZREjsJKRJwuokTNgdqOU+fl55KgbvgZ1pRTSWCP2kQ== dependencies: "@babel/runtime" "^7.28.4" fast-png "^6.2.0" @@ -3643,7 +3775,7 @@ jspdf@^4.0.0: optionalDependencies: canvg "^3.0.11" core-js "^3.6.0" - dompurify "^3.2.4" + dompurify "^3.3.1" html2canvas "^1.0.0-rc.5" "jsx-ast-utils@^2.4.1 || ^3.0.0": @@ -3758,10 +3890,10 @@ ms@^2.1.1, ms@^2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -multiple-select-vanilla@^4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/multiple-select-vanilla/-/multiple-select-vanilla-4.4.1.tgz#bf42a38d17f3629e895ea19a1d82faa7fab8dd9f" - integrity sha512-vG8Ea0ovHKrhi1FvpYlnNpDed1I6JzHyFoDtznRTH7A00y/t6MKGSKMs7cNp8mpXUnWb7WZr3/k0naFjg3qeCw== +multiple-select-vanilla@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/multiple-select-vanilla/-/multiple-select-vanilla-5.0.0.tgz#a9a8b1fdd959169315bd2a9c940121b777010ab3" + integrity sha512-sdYPD/6C1zgfqFQsCHWUBYsM9+XWAw7Hrdf1EepcAOPxFTnT/wzGdbPTNAdZszf1l/AyHDi6QKhP9bqXiRI2wQ== dependencies: "@types/trusted-types" "^2.0.7" @@ -4440,20 +4572,19 @@ side-channel@^1.1.0: side-channel-map "^1.0.1" side-channel-weakmap "^1.0.2" -slickgrid-react@^9.13.0: - version "9.13.0" - resolved "https://registry.yarnpkg.com/slickgrid-react/-/slickgrid-react-9.13.0.tgz#0527af73ea0726e8d006d4662ae92075abe51803" - integrity sha512-nrFa8MuOyTeNSlKEA3yNcpBXHbIl0mmbTZnfFR7Kty6OPrvgUbMwxaOWR/UZ88qKbLte08McdlEifn65Z5bfVg== - dependencies: - "@slickgrid-universal/common" "9.13.0" - "@slickgrid-universal/custom-footer-component" "9.13.0" - "@slickgrid-universal/empty-warning-component" "9.13.0" - "@slickgrid-universal/event-pub-sub" "9.13.0" - "@slickgrid-universal/pagination-component" "9.13.0" - "@slickgrid-universal/row-detail-view-plugin" "9.13.0" - "@slickgrid-universal/utils" "9.13.0" +slickgrid-react@10.0.0-beta.0, slickgrid-react@^10.0.0-beta.0: + version "10.0.0-beta.0" + resolved "https://registry.yarnpkg.com/slickgrid-react/-/slickgrid-react-10.0.0-beta.0.tgz#f5fbedb062916f2a4780652427903db9082c97a0" + integrity sha512-aEaA+/x33f+0Nc57vr9S5KXAGwCJQSASxaoFCVq5k7S8IEEwKN33QY2ynE+RQAi22QR8ZmQ6x+EZ7TfHgkgQVg== + dependencies: + "@slickgrid-universal/common" "10.0.0-beta.0" + "@slickgrid-universal/custom-footer-component" "10.0.0-beta.0" + "@slickgrid-universal/empty-warning-component" "10.0.0-beta.0" + "@slickgrid-universal/event-pub-sub" "10.0.0-beta.0" + "@slickgrid-universal/pagination-component" "10.0.0-beta.0" + "@slickgrid-universal/utils" "10.0.0-beta.0" dequal "^2.0.3" - sortablejs "^1.15.6" + sortablejs "^1.15.7" snake-case@^3.0.4: version "3.0.4" @@ -4463,10 +4594,10 @@ snake-case@^3.0.4: dot-case "^3.0.4" tslib "^2.0.3" -sortablejs@^1.15.6: - version "1.15.6" - resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.15.6.tgz#ff93699493f5b8ab8d828f933227b4988df1d393" - integrity sha512-aNfiuwMEpfBM/CN6LY0ibyhxPfPbyFeBTYJKCvzkJ2GkUpazIt3H+QIPAMHwqQ7tMKaHz1Qj+rJJCqljnf4p3A== +sortablejs@^1.15.7: + version "1.15.7" + resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.15.7.tgz#83a0bddc472117ee328dea20b2e6f490fed20f86" + integrity sha512-Kk8wLQPlS+yi1ZEf48a4+fzHa4yxjC30M/Sr2AnQu+f/MPwvvX9XjZ6OWejiz8crBsLwSq8GHqaxaET7u6ux0A== "source-map-js@>=0.6.2 <2.0.0": version "1.0.2" @@ -4704,6 +4835,11 @@ tslib@^2.0.3, tslib@^2.1.0: resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz" integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA== +tslib@^2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" @@ -4839,15 +4975,15 @@ typed-array-length@^1.0.7: possible-typed-array-names "^1.0.0" reflect.getprototypeof "^1.0.6" -typescript-eslint@^8.54.0: - version "8.54.0" - resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.54.0.tgz#f4ef3b8882a5ddc2a41968e014194c178ab23f6a" - integrity sha512-CKsJ+g53QpsNPqbzUsfKVgd3Lny4yKZ1pP4qN3jdMOg/sisIDLGyDMezycquXLE5JsEU0wp3dGNdzig0/fmSVQ== +typescript-eslint@^8.55.0: + version "8.55.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.55.0.tgz#abae8295c5f0f82f816218113a46e89bc30c3de2" + integrity sha512-HE4wj+r5lmDVS9gdaN0/+iqNvPZwGfnJ5lZuz7s5vLlg9ODw0bIiiETaios9LvFI1U94/VBXGm3CB2Y5cNFMpw== dependencies: - "@typescript-eslint/eslint-plugin" "8.54.0" - "@typescript-eslint/parser" "8.54.0" - "@typescript-eslint/typescript-estree" "8.54.0" - "@typescript-eslint/utils" "8.54.0" + "@typescript-eslint/eslint-plugin" "8.55.0" + "@typescript-eslint/parser" "8.55.0" + "@typescript-eslint/typescript-estree" "8.55.0" + "@typescript-eslint/utils" "8.55.0" typescript@^5.9.3: version "5.9.3" @@ -4925,10 +5061,10 @@ vite-plugin-svgr@^4.5.0: "@svgr/core" "^8.1.0" "@svgr/plugin-jsx" "^8.1.0" -vite-tsconfig-paths@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/vite-tsconfig-paths/-/vite-tsconfig-paths-6.0.5.tgz#5bcbb44d6ae0d12fe42f5915a6ad9846b0ed7805" - integrity sha512-f/WvY6ekHykUF1rWJUAbCU7iS/5QYDIugwpqJA+ttwKbxSbzNlqlE8vZSrsnxNQciUW+z6lvhlXMaEyZn9MSig== +vite-tsconfig-paths@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/vite-tsconfig-paths/-/vite-tsconfig-paths-6.1.1.tgz#d5c28cba79c89ebf76489ef1040024b21df6da3a" + integrity sha512-2cihq7zliibCCZ8P9cKJrQBkfgdvcFkOOc3Y02o3GWUDLgqjWsZudaoiuOwO/gzTzy17cS5F7ZPo4bsnS4DGkg== dependencies: debug "^4.1.1" globrex "^0.1.2"