diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index c0d64add5..ceb1d8760 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -19,6 +19,8 @@ jobs: - name: Check if version has been updated id: version-check uses: EndBug/version-check@v2 + with: + diff-search: true - name: Publish new version if: steps.version-check.outputs.changed == 'true' run: | diff --git a/package-lock.json b/package-lock.json index 265cbf0fc..3e70fd2e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,7 +38,7 @@ "react-imask": "^6.5.0-alpha.0", "react-plotly.js": "^2.5.1", "sass": "^1.80.6", - "sass-loader": "^13.2.0", + "sass-loader": "^16.0.3", "spark-md5": "^3.0.2", "typescript": "~5.5.4", "uglify-js": "3.9.2", @@ -47,7 +47,7 @@ }, "devDependencies": { "@isrd-isi-edu/ermrest-data-utils": "^0.0.7", - "@playwright/test": "*", + "@playwright/test": "latest", "@typescript-eslint/eslint-plugin": "~7.18.0", "@typescript-eslint/parser": "~7.18.0", "chance": "x", @@ -7620,13 +7620,6 @@ "node": ">=0.10.0" } }, - "node_modules/klona": { - "version": "2.0.5", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, "node_modules/language-subtag-registry": { "version": "0.3.23", "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", @@ -9361,28 +9354,28 @@ } }, "node_modules/sass-loader": { - "version": "13.2.0", - "license": "MIT", + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.3.tgz", + "integrity": "sha512-gosNorT1RCkuCMyihv6FBRR7BMV06oKRAs+l4UMp1mlcVg9rWN6KMmUj3igjQwmYys4mDP3etEYJgiHRbgHCHA==", "dependencies": { - "klona": "^2.0.4", "neo-async": "^2.6.2" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "@rspack/core": "0.x || 1.x", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", "sass": "^1.3.0", "sass-embedded": "*", "webpack": "^5.0.0" }, "peerDependenciesMeta": { - "fibers": { + "@rspack/core": { "optional": true }, "node-sass": { @@ -9393,6 +9386,9 @@ }, "sass-embedded": { "optional": true + }, + "webpack": { + "optional": true } } }, diff --git a/package.json b/package.json index 11845a329..e7eaed0ae 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,7 @@ "react-imask": "^6.5.0-alpha.0", "react-plotly.js": "^2.5.1", "sass": "^1.80.6", - "sass-loader": "^13.2.0", + "sass-loader": "^16.0.3", "spark-md5": "^3.0.2", "typescript": "~5.5.4", "uglify-js": "3.9.2", diff --git a/src/assets/scss/_alerts.scss b/src/assets/scss/_alerts.scss index 9901c7cf8..6a86ae676 100644 --- a/src/assets/scss/_alerts.scss +++ b/src/assets/scss/_alerts.scss @@ -12,8 +12,8 @@ // by default we're using red color for code blocks which can be misleading in a success alert .alert-success code { - color: map-get(variables.$color-map, 'code-block-success'); - background-color: map-get(variables.$color-map, 'code-block-background-alt'); + color: map.get(variables.$color-map, 'code-block-success'); + background-color: map.get(variables.$color-map, 'code-block-background-alt'); } } diff --git a/src/assets/scss/_button-group.scss b/src/assets/scss/_button-group.scss index 744f329b3..b409eeacf 100644 --- a/src/assets/scss/_button-group.scss +++ b/src/assets/scss/_button-group.scss @@ -19,7 +19,7 @@ &:active, &:focus, &:hover { - z-index: map-get(variables.$z-index-map, 'button-active'); + z-index: map.get(variables.$z-index-map, 'button-active'); } } } diff --git a/src/assets/scss/_buttons.scss b/src/assets/scss/_buttons.scss index 7434d5463..e142a0333 100644 --- a/src/assets/scss/_buttons.scss +++ b/src/assets/scss/_buttons.scss @@ -1,3 +1,4 @@ +@use "sass:color"; @use 'sass:map'; @use 'variables'; @use 'helpers'; @@ -53,37 +54,37 @@ &.chaise-btn.chaise-btn-secondary[disabled], &.chaise-btn.chaise-btn-primary.disabled, &.chaise-btn.chaise-btn-secondary.disabled { - color: map-get(variables.$color-map, 'disabled'); - background-color: map-get(variables.$color-map, 'disabled-background'); - border-color: map-get(variables.$color-map, 'disabled-background'); + color: map.get(variables.$color-map, 'disabled'); + background-color: map.get(variables.$color-map, 'disabled-background'); + border-color: map.get(variables.$color-map, 'disabled-background'); } &.chaise-btn-tertiary { - color: map-get(variables.$color-map, 'primary'); + color: map.get(variables.$color-map, 'primary'); border: none; background: transparent; &[disabled], &.disabled { - color: map-get(variables.$color-map, 'disabled'); + color: map.get(variables.$color-map, 'disabled'); } // the link color is more prominent than our button/control color, // we should use this class if we want to make the button to be as prominent as links &.chaise-btn-link:not([disabled]):not(.disabled) { - color: map-get(variables.$color-map, 'link'); + color: map.get(variables.$color-map, 'link'); } } &.chaise-btn-default { - color: map-get(variables.$color-map, 'black'); - border-color: map-get(variables.$color-map, 'border'); + color: map.get(variables.$color-map, 'black'); + border-color: map.get(variables.$color-map, 'border'); } &.chaise-btn-danger { - color: map-get(variables.$color-map, 'white'); - background-color: map-get(variables.$color-map, 'danger'); - border-color: darken(map-get(variables.$color-map, 'danger'), 10%); + color: map.get(variables.$color-map, 'white'); + background-color: map.get(variables.$color-map, 'danger'); + border-color: color.adjust(map.get(variables.$color-map, 'danger'), $lightness: -10%); } &.chaise-download-btn { @@ -99,7 +100,7 @@ // this is currently designed mostly for &.chaise-btn-with-indicator:before { content: ''; - background-color: map-get(variables.$color-map, 'primary'); + background-color: map.get(variables.$color-map, 'primary'); position: absolute; top: -1px; right: -1px; diff --git a/src/assets/scss/_dropdown.scss b/src/assets/scss/_dropdown.scss index a34814c6d..12b49a5ef 100644 --- a/src/assets/scss/_dropdown.scss +++ b/src/assets/scss/_dropdown.scss @@ -1,3 +1,4 @@ +@use "sass:color"; @use 'sass:map'; @use 'variables'; @use 'helpers'; @@ -17,7 +18,7 @@ padding: 3px 15px 3px 15px; cursor: default; font-size: variables.$font-size; - color: map-get(variables.$color-map, 'black'); + color: map.get(variables.$color-map, 'black'); font-weight: 600; } @@ -44,7 +45,7 @@ border-style: solid; border-width: 6px 0 6px 6px; /* was 5px 0 5px 5px */ - border-left-color: map-get(variables.$color-map, 'navbar-dropdown-submenu-icon'); + border-left-color: map.get(variables.$color-map, 'navbar-dropdown-submenu-icon'); // to center margin: auto; margin-right: -15px; @@ -55,7 +56,7 @@ .dropdown-submenu:hover > a:after, .dropdown-submenu:hover > div > div > a:after { - border-left-color: map-get(variables.$color-map, 'navbar-dropdown-submenu'); + border-left-color: map.get(variables.$color-map, 'navbar-dropdown-submenu'); } .dropdown-submenu.pull-left { @@ -133,7 +134,7 @@ cursor: pointer; display: flex; justify-content: space-between; - color: map-get(variables.$color-map, 'black'); + color: map.get(variables.$color-map, 'black'); margin-bottom: 2px; padding: 3px 15px 3px 15px; line-height: 1.4; @@ -147,8 +148,8 @@ &:focus, &:hover { - color: lighten(map-get(variables.$color-map, 'black'), 10%); - background-color: darken(map-get(variables.$color-map, 'white'), 10%); + color: color.adjust(map.get(variables.$color-map, 'black'), $lightness: 10%); + background-color: color.adjust(map.get(variables.$color-map, 'white'), $lightness: -10%); } } @@ -182,11 +183,11 @@ .disable-link, .disabled { pointer-events: none !important; cursor: default !important; - color: map-get(variables.$color-map, 'disabled') !important; + color: map.get(variables.$color-map, 'disabled') !important; // the arrow icon &:after { - border-left-color: map-get(variables.$color-map, 'disabled') !important; + border-left-color: map.get(variables.$color-map, 'disabled') !important; } } } diff --git a/src/assets/scss/_faceting.scss b/src/assets/scss/_faceting.scss index 3b37793cf..bf6e473d5 100644 --- a/src/assets/scss/_faceting.scss +++ b/src/assets/scss/_faceting.scss @@ -42,7 +42,7 @@ // each facet panel .facet-panel { border-radius: 0; - border: 1px solid map-get(variables.$color-map, 'border'); + border: 1px solid map.get(variables.$color-map, 'border'); // active style &.active, @@ -80,8 +80,8 @@ flex-direction: row-reverse; justify-content: flex-end; - background-color: map-get(variables.$color-map, 'table-header-background'); - color: map-get(variables.$color-map, 'black'); + background-color: map.get(variables.$color-map, 'table-header-background'); + color: map.get(variables.$color-map, 'black'); // Overriding accordian-button css to align right angle bracket icon to left &::after { diff --git a/src/assets/scss/_input-switch.scss b/src/assets/scss/_input-switch.scss index c3c89bc90..c50457718 100644 --- a/src/assets/scss/_input-switch.scss +++ b/src/assets/scss/_input-switch.scss @@ -1,3 +1,4 @@ +@use "sass:map"; @use 'variables'; @@ -48,7 +49,7 @@ .input-switch-longtext { .md-editor { - border: 1px solid map-get(variables.$color-map, 'border'); + border: 1px solid map.get(variables.$color-map, 'border'); border-radius: 4px; .md-header { @@ -109,7 +110,7 @@ } .hex-sign { - color: map-get(variables.$color-map, 'placeholder'); + color: map.get(variables.$color-map, 'placeholder'); } .chaise-color-picker-preview { @@ -187,15 +188,15 @@ left: 0; height: 100%; width: 100%; - z-index: map-get(variables.$z-index-map, 'recordedit-foreignkey-input-spinner-backdrop'); - background: map-get(variables.$color-map, 'disabled-background'); + z-index: map.get(variables.$z-index-map, 'recordedit-foreignkey-input-spinner-backdrop'); + background: map.get(variables.$color-map, 'disabled-background'); opacity: 0.55; } .spinner-border-sm { top: 8px; position: absolute; - z-index: map-get(variables.$z-index-map, 'recordedit-column-cell-spinner'); + z-index: map.get(variables.$z-index-map, 'recordedit-column-cell-spinner'); } } @@ -223,7 +224,7 @@ */ >.chaise-input-group:not([aria-disabled="true"]), .dropdown-menu { - border: 2px solid map-get(variables.$color-map, 'primary'); + border: 2px solid map.get(variables.$color-map, 'primary'); border-radius: 6px; } } @@ -275,7 +276,7 @@ // bootstrap stylesheets have :hover defined before :disabled so disabled always takes precedence // redefine with the same hover color to override bootstrap order &:hover { - background-color: map-get(variables.$color-map, 'recordedit-dropdown-hover'); + background-color: map.get(variables.$color-map, 'recordedit-dropdown-hover'); } } @@ -341,11 +342,11 @@ .input-switch-error { &.input-switch-error-danger { - color: map-get(variables.$color-map, 'input-error-message-danger'); + color: map.get(variables.$color-map, 'input-error-message-danger'); } &.input-switch-error-warning { - color: map-get(variables.$color-map, 'input-error-message-warning'); + color: map.get(variables.$color-map, 'input-error-message-warning'); } } diff --git a/src/assets/scss/_inputs.scss b/src/assets/scss/_inputs.scss index 7bc048df9..91a57ec49 100644 --- a/src/assets/scss/_inputs.scss +++ b/src/assets/scss/_inputs.scss @@ -69,11 +69,11 @@ // as our inputs. .chaise-btn { position: relative; - z-index: map-get(variables.$z-index-map, 'input-group-append-btn'); // should be above input even if input is focused + z-index: map.get(variables.$z-index-map, 'input-group-append-btn'); // should be above input even if input is focused @include helpers.border-left-radius(0); &:focus { - z-index: map-get(variables.$z-index-map, 'input-group-append-btn-focus'); + z-index: map.get(variables.$z-index-map, 'input-group-append-btn-focus'); } } @@ -127,11 +127,11 @@ padding: variables.$btn-padding-y variables.$btn-padding-x; margin-bottom: 0; // Allow use of