farend / redmine_theme_farend_bleuclair

Custom theme for Redmine. Compatible with: Redmine 3.4 - 5.0
GNU General Public License v2.0
109 stars 19 forks source link

Supporting Node.js 18 is helpful #65

Closed sanak closed 1 year ago

sanak commented 1 year ago

Recently (at 2023-09-11), Node.js 16 became EOL (https://endoflife.date/nodejs), so I upgraded my local environment Node.js version to 18 LTS latest (18.17.1) from asdf package manager.

But in that environment, I noticed that package-lock.json has many differences when executing npm install,

```diff --- a/package-lock.json +++ b/package-lock.json @@ -1,40 +1,73 @@ { "name": "bleuclair", "version": "1.0.0", - "lockfileVersion": 1, + "lockfileVersion": 3, "requires": true, - "dependencies": { - "@ampproject/remapping": { + "packages": { + "": { + "name": "bleuclair", + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "@babel/core": "^7.19.3", + "@babel/preset-env": "^7.19.3", + "autoprefixer": "^10.4.12", + "babel-loader": "^8.2.5", + "css-loader": "^6.7.1", + "file-loader": "^6.2.0", + "is-svg": ">=5.0.0", + "mini-css-extract-plugin": "^2.6.1", + "node-sass": "^7.0.3", + "optimize-css-assets-webpack-plugin": "^6.0.1", + "postcss-loader": "^7.0.1", + "sass": "^1.55.0", + "sass-loader": "^13.0", + "url-loader": "^4.1.1", + "webpack": "^5.74.0", + "webpack-cli": "^4.10.0", + "y18n": ">=5.0.8" + } + }, + "node_modules/@ampproject/remapping": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", "dev": true, - "requires": { + "dependencies": { "@jridgewell/gen-mapping": "^0.1.0", "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" } }, - "@babel/code-frame": { + "node_modules/@babel/code-frame": { : ```

and executing npm install again shows the following error.

``` % npm install npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While resolving: optimize-css-assets-webpack-plugin@6.0.1 npm ERR! Found: webpack@5.74.0 npm ERR! node_modules/webpack npm ERR! dev webpack@"^5.74.0" from the root project npm ERR! peer webpack@"4.x.x || 5.x.x" from @webpack-cli/configtest@1.2.0 npm ERR! node_modules/@webpack-cli/configtest npm ERR! @webpack-cli/configtest@"^1.2.0" from webpack-cli@4.10.0 npm ERR! node_modules/webpack-cli npm ERR! dev webpack-cli@"^4.10.0" from the root project npm ERR! 3 more (@webpack-cli/configtest, @webpack-cli/info, @webpack-cli/serve) npm ERR! 9 more (babel-loader, css-loader, file-loader, ...) npm ERR! npm ERR! Could not resolve dependency: npm ERR! peer webpack@"^4.0.0" from optimize-css-assets-webpack-plugin@6.0.1 npm ERR! node_modules/optimize-css-assets-webpack-plugin npm ERR! dev optimize-css-assets-webpack-plugin@"^6.0.1" from the root project npm ERR! npm ERR! Conflicting peer dependency: webpack@4.47.0 npm ERR! node_modules/webpack npm ERR! peer webpack@"^4.0.0" from optimize-css-assets-webpack-plugin@6.0.1 npm ERR! node_modules/optimize-css-assets-webpack-plugin npm ERR! dev optimize-css-assets-webpack-plugin@"^6.0.1" from the root project npm ERR! npm ERR! Fix the upstream dependency conflict, or retry npm ERR! this command with --force or --legacy-peer-deps npm ERR! to accept an incorrect (and potentially broken) dependency resolution. npm ERR! npm ERR! npm ERR! For a full report see: npm ERR! /Users/sanak/.npm/_logs/2023-09-13T12_26_07_250Z-eresolve-report.txt npm ERR! A complete log of this run can be found in: /Users/sanak/.npm/_logs/2023-09-13T12_26_07_250Z-debug-0.log ```

I guess that something updating webpack and loaders seems to be necessary, but I am not familiar with webpack and loaders related things, so checking Node.js 18 environment is really helpful. 🙇🙏 (Note that I encountered the similar error in Node.js 16 (16.20.2) environment, but Node.js 14 (14.21.3) environment was no problem.)

ishikawa999 commented 1 year ago

I apologize for the delay in noticing the issue. I've acknowledged the problem and will work on the fix.

ishikawa999 commented 1 year ago

@sanak

https://github.com/farend/redmine_theme_farend_bleuclair/pull/67 I've created a pull request. Would you be so kind to check if it works without errors in your environment? I truly appreciate your help.

sanak commented 1 year ago

Okay, I will take a look at the PR at tonight or tomorrow. Thanks a lot ! 🙇

sanak commented 1 year ago

@ishikawa999 Thanks! I confirmed the followings on my local environment (M1 Mac, OS: Ventura 13.5.2, Node.js: 18.17.1).

  1. The original error when executing npm install again is disappeared
  2. Executing npm run build generated minified js/css files are same with the branch

The followings are both tiny things and ignorable, but I noticed from further check, so just for your information.

  1. Executing npm audit fix seems to be safe.
    • I noticed 2 vulnerabilities (1 low, 1 moderate) after executing npm install, so I tried to execute npm audit fix and the npm run build generated minified js/css files are same with the branch. (Just package-lock.json was updated.)
  2. CSS color minification can be off from webpack config setting.

    • I checked minified theme.css diff in the PR by replacing \} to \}\n with regexp, and noticed that 1 color expression was changed from rgba to hsla. (Other changes seem to be just correct sort order.)

      theme.css diff ```diff @@ -21,7 +21,7 @@ #content{padding:14px} #sidebar-switch-panel{float:right;height:25px;left:10px;margin-left:5px;padding:2px;position:relative;top:2px;width:20px} #sidebar-switch-button{background-color:#e9eaf1;border-bottom:1px solid #ddd;border-left:1px solid #ddd;border-radius:10px 0 0 10px;border-top:1px solid #ddd;display:block;font-size:0;height:100%;padding:9px 20px 9px 5px;text-decoration:none} -#sidebar-switch-button:before{text-rendering:auto;color:#666;display:inline-block;font-size:15px;font-style:normal;font-variant:normal;margin-right:3px} +#sidebar-switch-button:before{color:#666;display:inline-block;font-size:15px;font-style:normal;font-variant:normal;margin-right:3px;text-rendering:auto} #main:not(.visible-sidebar) #sidebar-switch-button:before{content:"\f053";font-family:Font Awesome\ 5 Solid} #main.visible-sidebar #sidebar-switch-button:before{content:"\f054";font-family:Font Awesome\ 5 Solid} @media print{#main.visible-sidebar #sidebar,#sidebar-switch-panel{display:none} \ No newline at end of file @@ -42,7 +42,7 @@ #main-menu ul li a.selected,#main-menu ul li a:hover{background:transparent;color:inherit;position:relative} #main-menu ul li a.selected:after,#main-menu ul li a:hover:after{background-color:#ffd600;bottom:0;content:"";height:3px;left:0;position:absolute;width:100%} #main-menu ul li a.selected:hover{background:transparent;color:#fff} -#main-menu ul li a.new-object{background:rgba(255,255,255,.05);border:2px solid rgba(255,255,255,.25);border-radius:50%;bottom:1px;height:26px;line-height:25px;margin:0 10px;padding:0;position:relative;text-align:center;width:26px} +#main-menu ul li a.new-object{background:hsla(0,0%,100%,.05);border:2px solid hsla(0,0%,100%,.25);border-radius:50%;bottom:1px;height:26px;line-height:25px;margin:0 10px;padding:0;position:relative;text-align:center;width:26px} #main-menu ul li a.new-object:hover:after{content:none} #main-menu ul .menu-children{background-color:#fff;border:none;border-radius:3px;box-shadow:0 1px 7px 2px rgba(135,158,171,.2)} #main-menu ul .menu-children li{border-bottom:1px solid #ddd} \ No newline at end of file @@ -151,16 +151,16 @@ #history .tab-content .journal:first-of-type:last-of-type:after{content:none} #history .tab-content .journal .contextual{padding-right:10px;padding-top:5px} #history .tab-content .journal .contextual .journal-actions,#history .tab-content .journal .contextual a.journal-link{position:relative;z-index:5} -#history .tab-content .journal.changeset>h4:first-child,#history .tab-content .journal .contextual+h4{background-color:#e9eaf1;border:none;border-radius:4px;font-size:.9em;font-weight:700;left:20px;margin:0 19px 0 10px;padding:6px 9px;position:relative} -#history .tab-content .journal.changeset>h4:first-child a[href*=activity][data-absolute-date*=":"],#history .tab-content .journal .contextual+h4 a[href*=activity][data-absolute-date*=":"]{box-shadow:none;padding:0} -#history .tab-content .journal.changeset>h4:first-child:before,#history .tab-content .journal .contextual+h4:before{border-bottom:5px solid transparent;border-right:6px solid #e9eaf1;border-top:5px solid transparent;content:"";height:0;left:-6px;position:absolute;top:8px;width:0} -#history .tab-content .journal.changeset>h4:first-child .gravatar,#history .tab-content .journal .contextual+h4 .gravatar{left:-35px;margin-left:0;position:absolute;top:4px;z-index:5} -#history .tab-content .journal:target .contextual+h4,#history .tab-content .journal div:target .contextual+h4{background:#def} -#history .tab-content .journal:target .contextual+h4:before,#history .tab-content .journal div:target .contextual+h4:before{border-right:6px solid #def} +#history .tab-content .journal .contextual+h4,#history .tab-content .journal.changeset>h4:first-child{background-color:#e9eaf1;border:none;border-radius:4px;font-size:.9em;font-weight:700;left:20px;margin:0 19px 0 10px;padding:6px 9px;position:relative} +#history .tab-content .journal .contextual+h4 a[href*=activity][data-absolute-date*=":"],#history .tab-content .journal.changeset>h4:first-child a[href*=activity][data-absolute-date*=":"]{box-shadow:none;padding:0} +#history .tab-content .journal .contextual+h4:before,#history .tab-content .journal.changeset>h4:first-child:before{border-bottom:5px solid transparent;border-right:6px solid #e9eaf1;border-top:5px solid transparent;content:"";height:0;left:-6px;position:absolute;top:8px;width:0} +#history .tab-content .journal .contextual+h4 .gravatar,#history .tab-content .journal.changeset>h4:first-child .gravatar{left:-35px;margin-left:0;position:absolute;top:4px;z-index:5} +#history .tab-content .journal div:target .contextual+h4,#history .tab-content .journal:target .contextual+h4{background:#def} +#history .tab-content .journal div:target .contextual+h4:before,#history .tab-content .journal:target .contextual+h4:before{border-right:6px solid #def} #history .tab-content .journal .details{font-size:.9em;line-height:1.5;list-style:none;margin-bottom:1em;padding-left:46px} #history .tab-content .journal .details li{position:relative} #history .tab-content .journal .details li:after{background-color:#fff;border:1px solid #888;border-radius:50%;content:"";display:block;height:4px;left:-1em;position:absolute;top:.5em;width:4px} -#history .tab-content .journal.changeset>p,#history .tab-content .journal.time_entry p,#history .tab-content .journal .wiki:not(.wiki-preview),#history .tab-content .journal div[id^=template_journal],#history .tab-content .journal form .jstBlock,#history .tab-content .journal form input{margin-left:32px} +#history .tab-content .journal .wiki:not(.wiki-preview),#history .tab-content .journal div[id^=template_journal],#history .tab-content .journal form .jstBlock,#history .tab-content .journal form input,#history .tab-content .journal.changeset>p,#history .tab-content .journal.time_entry p{margin-left:32px} .tabular p{padding-left:160px} .edit_issue .tabular p{padding-left:130px} .edit_issue .tabular .wiki-preview p{padding-left:0!important} \ No newline at end of file @@ -186,8 +186,8 @@ #replies .message.reply .contextual+h4 a[href*=activity][data-absolute-date*=":"]{box-shadow:none;padding:0} #replies .message.reply .contextual+h4:before{border-bottom:5px solid transparent;border-right:6px solid #e9eaf1;border-top:5px solid transparent;content:"";height:0;left:-6px;position:absolute;top:8px;width:0} #replies .message.reply .contextual+h4 .gravatar{left:-35px;margin-left:0;position:absolute;top:4px;z-index:5} -#replies .message.reply:target .contextual+h4,#replies .message.reply div:target .contextual+h4{background:#def} -#replies .message.reply:target .contextual+h4:before,#replies .message.reply div:target .contextual+h4:before{border-right:6px solid #def} +#replies .message.reply div:target .contextual+h4,#replies .message.reply:target .contextual+h4{background:#def} +#replies .message.reply div:target .contextual+h4:before,#replies .message.reply:target .contextual+h4:before{border-right:6px solid #def} .controller-news.action-show #content>div.message{background-color:#fff;border:1px solid #dfe8f1;border-radius:3px;padding:15px} .controller-news.action-show #comments{background-color:#fff;border:1px solid #dfe8f1;border-radius:0 0 3px 3px;padding-left:10px;padding-top:15px} .controller-news.action-show #comments .wiki{padding-left:32px} \ No newline at end of file @@ -220,7 +220,7 @@ a.atom:before{content:"\f143";font-family:Font Awesome\ 5 Solid} #context-menu .icon-checked:before,.icon-only:before,.icon:before{color:#666} #context-menu .icon-checked:before,.icon-only:hover:before,.icon:hover:before{color:#000} -.icon-only:before,.icon:before,a.atom:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:auto;display:inline-block;font-size:14px;font-style:normal;font-variant:normal;padding-right:5px} +.icon-only:before,.icon:before,a.atom:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-size:14px;font-style:normal;font-variant:normal;padding-right:5px;text-rendering:auto} .icon-add:before{content:"\f055";font-family:Font Awesome\ 5 Solid} .icon-edit:before{content:"\f303";font-family:Font Awesome\ 5 Solid} .icon-copy:before{content:"\f0c5";font-family:Font Awesome\ 5 Regular} \ No newline at end of file @@ -320,7 +320,7 @@ #admin-menu .icon-group,.members.box h3.icon-group{background-image:none} #admin-menu .icon-group:before,.members.box h3.icon-group:before{content:"\f0c0";font-family:Font Awesome\ 5 Solid} body.controller-projects.action-index a.project:before,body.controller-projects.action-index span:before{content:"";width:0} -body.controller-projects.action-index a.project.icon:after,body.controller-projects.action-index span.icon:after{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:auto;color:#666;display:inline-block;font-size:14px;font-style:normal;font-variant:normal} +body.controller-projects.action-index a.project.icon:after,body.controller-projects.action-index span.icon:after{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:#666;display:inline-block;font-size:14px;font-style:normal;font-variant:normal;text-rendering:auto} body.controller-projects.action-index a.project.icon-bookmarked-project:after,body.controller-projects.action-index span.icon-bookmarked-project:after{content:"\00a0 \f02e";font-family:Font Awesome\ 5 Solid} body.controller-projects.action-index a.project.icon.my-project:after,body.controller-projects.action-index span.icon.my-project:after{content:"\00a0 \f007";font-family:Font Awesome\ 5 Solid} body.controller-projects.action-index a.project.icon.my-project.icon-bookmarked-project:after,body.controller-projects.action-index span.icon.my-project.icon-bookmarked-project:after{content:"\00a0 \f007 \00a0 \f02e";font-family:Font Awesome\ 5 Solid} \ No newline at end of file @@ -330,7 +330,7 @@ @media screen and (max-width:899px){#content>.contextual>.icon-actions,#content>.contextual>.icon-add,#content>.contextual>.icon-add-bullet,#content>.contextual>.icon-arrow-right,#content>.contextual>.icon-attachment,#content>.contextual>.icon-bookmark,#content>.contextual>.icon-bookmark-off,#content>.contextual>.icon-bookmarked-project,#content>.contextual>.icon-cancel,#content>.contextual>.icon-changeset,#content>.contextual>.icon-checked,#content>.contextual>.icon-clear-query,#content>.contextual>.icon-close,#content>.contextual>.icon-collapsed,#content>.contextual>.icon-comment,#content>.contextual>.icon-comments,#content>.contextual>.icon-copy,#content>.contextual>.icon-copy-link,#content>.contextual>.icon-custom-fields,#content>.contextual>.icon-del,#content>.contextual>.icon-document,#content>.contextual>.icon-download,#content>.contextual>.icon-edit,#content>.contextual>.icon-email,#content>.contextual>.icon-email-add,#content>.contextual>.icon-email-disabled,#content>.contextual>.icon-error,#content>.contextual>.icon-expanded,#content>.contextual>.icon-expended,#content>.contextual>.icon-fav,#content>.contextual>.icon-fav-off,#content>.contextual>.icon-file,#content>.contextual>.icon-folder,#content>.contextual>.icon-group:not(.name):not(.group),#content>.contextual>.icon-help,#content>.contextual>.icon-history,#content>.contextual>.icon-import,#content>.contextual>.icon-issue,#content>.contextual>.icon-issue-closed,#content>.contextual>.icon-issue-edit,#content>.contextual>.icon-issue-note,#content>.contextual>.icon-link-break,#content>.contextual>.icon-list,#content>.contextual>.icon-lock,#content>.contextual>.icon-locked,#content>.contextual>.icon-message,#content>.contextual>.icon-move,#content>.contextual>.icon-multiple,#content>.contextual>.icon-news,#content>.contextual>.icon-not-ok,#content>.contextual>.icon-ok,#content>.contextual>.icon-package,#content>.contextual>.icon-passwd,#content>.contextual>.icon-plugins,#content>.contextual>.icon-project,#content>.contextual>.icon-projects,#content>.contextual>.icon-reload,#content>.contextual>.icon-reply,#content>.contextual>.icon-roles,#content>.contextual>.icon-save,#content>.contextual>.icon-server-authentication,#content>.contextual>.icon-settings,#content>.contextual>.icon-shared,#content>.contextual>.icon-sidebar,#content>.contextual>.icon-sort-handle,#content>.contextual>.icon-sorted-asc,#content>.contextual>.icon-sorted-desc,#content>.contextual>.icon-stats,#content>.contextual>.icon-sticky,#content>.contextual>.icon-summary,#content>.contextual>.icon-test,#content>.contextual>.icon-time,#content>.contextual>.icon-time-add,#content>.contextual>.icon-time-entry,#content>.contextual>.icon-toggle-minus,#content>.contextual>.icon-toggle-plus,#content>.contextual>.icon-unlock,#content>.contextual>.icon-user,#content>.contextual>.icon-warning,#content>.contextual>.icon-wiki-page,#content>.contextual>.icon-workflows,#content>.contextual>.icon-zoom-in,#content>.contextual>.icon-zoom-out,#content>.contextual>.open:not(.dmsf-expander),p.buttons .icon-actions,p.buttons .icon-add,p.buttons .icon-add-bullet,p.buttons .icon-arrow-right,p.buttons .icon-attachment,p.buttons .icon-bookmark,p.buttons .icon-bookmark-off,p.buttons .icon-bookmarked-project,p.buttons .icon-cancel,p.buttons .icon-changeset,p.buttons .icon-checked,p.buttons .icon-clear-query,p.buttons .icon-close,p.buttons .icon-collapsed,p.buttons .icon-comment,p.buttons .icon-comments,p.buttons .icon-copy,p.buttons .icon-copy-link,p.buttons .icon-custom-fields,p.buttons .icon-del,p.buttons .icon-document,p.buttons .icon-download,p.buttons .icon-edit,p.buttons .icon-email,p.buttons .icon-email-add,p.buttons .icon-email-disabled,p.buttons .icon-error,p.buttons .icon-expanded,p.buttons .icon-expended,p.buttons .icon-fav,p.buttons .icon-fav-off,p.buttons .icon-file,p.buttons .icon-folder,p.buttons .icon-group:not(.name):not(.group),p.buttons .icon-help,p.buttons .icon-history,p.buttons .icon-import,p.buttons .icon-issue,p.buttons .icon-issue-closed,p.buttons .icon-issue-edit,p.buttons .icon-issue-note,p.buttons .icon-link-break,p.buttons .icon-list,p.buttons .icon-lock,p.buttons .icon-locked,p.buttons .icon-message,p.buttons .icon-move,p.buttons .icon-multiple,p.buttons .icon-news,p.buttons .icon-not-ok,p.buttons .icon-ok,p.buttons .icon-package,p.buttons .icon-passwd,p.buttons .icon-plugins,p.buttons .icon-project,p.buttons .icon-projects,p.buttons .icon-reload,p.buttons .icon-reply,p.buttons .icon-roles,p.buttons .icon-save,p.buttons .icon-server-authentication,p.buttons .icon-settings,p.buttons .icon-shared,p.buttons .icon-sidebar,p.buttons .icon-sort-handle,p.buttons .icon-sorted-asc,p.buttons .icon-sorted-desc,p.buttons .icon-stats,p.buttons .icon-sticky,p.buttons .icon-summary,p.buttons .icon-test,p.buttons .icon-time,p.buttons .icon-time-add,p.buttons .icon-time-entry,p.buttons .icon-toggle-minus,p.buttons .icon-toggle-plus,p.buttons .icon-unlock,p.buttons .icon-user,p.buttons .icon-warning,p.buttons .icon-wiki-page,p.buttons .icon-workflows,p.buttons .icon-zoom-in,p.buttons .icon-zoom-out,p.buttons .open:not(.dmsf-expander){padding-left:6px!important} } .flyout-menu .icon-actions:before,.flyout-menu .icon-add-bullet:before,.flyout-menu .icon-add:before,.flyout-menu .icon-arrow-right:before,.flyout-menu .icon-attachment:before,.flyout-menu .icon-bookmark-off:before,.flyout-menu .icon-bookmark:before,.flyout-menu .icon-bookmarked-project:before,.flyout-menu .icon-cancel:before,.flyout-menu .icon-changeset:before,.flyout-menu .icon-checked:before,.flyout-menu .icon-clear-query:before,.flyout-menu .icon-close:before,.flyout-menu .icon-collapsed:before,.flyout-menu .icon-comment:before,.flyout-menu .icon-comments:before,.flyout-menu .icon-copy-link:before,.flyout-menu .icon-copy:before,.flyout-menu .icon-custom-fields:before,.flyout-menu .icon-del:before,.flyout-menu .icon-document:before,.flyout-menu .icon-download:before,.flyout-menu .icon-edit:before,.flyout-menu .icon-email-add:before,.flyout-menu .icon-email-disabled:before,.flyout-menu .icon-email:before,.flyout-menu .icon-error:before,.flyout-menu .icon-expanded:before,.flyout-menu .icon-expended:before,.flyout-menu .icon-fav-off:before,.flyout-menu .icon-fav:before,.flyout-menu .icon-file:before,.flyout-menu .icon-folder:before,.flyout-menu .icon-group:not(.name):not(.group):before,.flyout-menu .icon-help:before,.flyout-menu .icon-history:before,.flyout-menu .icon-import:before,.flyout-menu .icon-issue-closed:before,.flyout-menu .icon-issue-edit:before,.flyout-menu .icon-issue-note:before,.flyout-menu .icon-issue:before,.flyout-menu .icon-link-break:before,.flyout-menu .icon-list:before,.flyout-menu .icon-lock:before,.flyout-menu .icon-locked:before,.flyout-menu .icon-message:before,.flyout-menu .icon-move:before,.flyout-menu .icon-multiple:before,.flyout-menu .icon-news:before,.flyout-menu .icon-not-ok:before,.flyout-menu .icon-ok:before,.flyout-menu .icon-package:before,.flyout-menu .icon-passwd:before,.flyout-menu .icon-plugins:before,.flyout-menu .icon-project:before,.flyout-menu .icon-projects:before,.flyout-menu .icon-reload:before,.flyout-menu .icon-reply:before,.flyout-menu .icon-roles:before,.flyout-menu .icon-save:before,.flyout-menu .icon-server-authentication:before,.flyout-menu .icon-settings:before,.flyout-menu .icon-shared:before,.flyout-menu .icon-sidebar:before,.flyout-menu .icon-sort-handle:before,.flyout-menu .icon-sorted-asc:before,.flyout-menu .icon-sorted-desc:before,.flyout-menu .icon-stats:before,.flyout-menu .icon-sticky:before,.flyout-menu .icon-summary:before,.flyout-menu .icon-test:before,.flyout-menu .icon-time-add:before,.flyout-menu .icon-time-entry:before,.flyout-menu .icon-time:before,.flyout-menu .icon-toggle-minus:before,.flyout-menu .icon-toggle-plus:before,.flyout-menu .icon-unlock:before,.flyout-menu .icon-user:before,.flyout-menu .icon-warning:before,.flyout-menu .icon-wiki-page:before,.flyout-menu .icon-workflows:before,.flyout-menu .icon-zoom-in:before,.flyout-menu .icon-zoom-out:before,.flyout-menu .open:not(.dmsf-expander):before{color:#fff!important} -div.jstElements{-webkit-font-smoothing:antialiased;text-rendering:auto;display:inline-flex;display:inline-block;font-size:12px;font-style:normal;font-variant:normal;height:28px} +div.jstElements{-webkit-font-smoothing:antialiased;display:inline-flex;display:inline-block;font-size:12px;font-style:normal;font-variant:normal;height:28px;text-rendering:auto} div.jstElements button{background-color:#fff!important;background-image:none;border-color:#c9c9c9!important;padding:2px 0 1px} div.jstElements .jstb_strong:before{content:"\f032";font-family:Font Awesome\ 5 Solid;font-size:12px} div.jstElements .jstb_em:before{content:"\f033";font-family:Font Awesome\ 5 Solid;font-size:12px} \ No newline at end of file @@ -359,3 +359,5 @@ div.jstElements .jstb_help:before{content:"\f059";font-family:Font Awesome\ 5 Solid;font-size:12px} div.jstElements .jstb_macros{padding:0} div.jstElements .jstb_macros:before{content:"\f12e";font-family:Font Awesome\ 5 Solid;font-size:14px} + +/*# sourceMappingURL=theme.css.map*/ \ No newline at end of file ```
    • Disabling cssnano colormin to minimizerOptions keeps the original color, but it also keeps original transparent.

      webpack.config.js diff ```diff --- a/webpack.config.js +++ b/webpack.config.js @@ -73,6 +73,15 @@ module.exports = { ], optimization: { // CSSを最小化 - minimizer: [new CssMinimizerPlugin({})], + minimizer: [new CssMinimizerPlugin({ + minimizerOptions: { + preset: [ + "default", + { + colormin: { exclude: true }, + }, + ], + }, + })], } } ```

      Result (update) diff:

      theme.css diff (after webpack.config.js diff) ```diff @@ -13,7 +13,7 @@ #sidebar{font-size:.9em;padding-left:17px;padding-right:17px} #sidebar h3{color:#333} .icon{padding-bottom:2px;padding-top:2px} -a:active,a:hover{outline:1px solid transparent} +a:active,a:hover{outline:1px solid rgba(0,0,0,0)} #sidebar{background-color:#e9eaf1;display:none;width:19%} #main.visible-sidebar #sidebar{display:block} @media screen and (max-width:899px){#main.visible-sidebar #sidebar,#main.visible-sidebar #sidebar-switch-panel{display:none} \ No newline at end of file @@ -39,14 +39,14 @@ div.issue-cards .issue-card{background-color:#fff9c4} #main-menu ul li{margin:0} #main-menu ul li a{font-weight:400;letter-spacing:.5px;padding:8px 12px} -#main-menu ul li a.selected,#main-menu ul li a:hover{background:transparent;color:inherit;position:relative} +#main-menu ul li a.selected,#main-menu ul li a:hover{background:rgba(0,0,0,0);color:inherit;position:relative} #main-menu ul li a.selected:after,#main-menu ul li a:hover:after{background-color:#ffd600;bottom:0;content:"";height:3px;left:0;position:absolute;width:100%} -#main-menu ul li a.selected:hover{background:transparent;color:#fff} -#main-menu ul li a.new-object{background:hsla(0,0%,100%,.05);border:2px solid hsla(0,0%,100%,.25);border-radius:50%;bottom:1px;height:26px;line-height:25px;margin:0 10px;padding:0;position:relative;text-align:center;width:26px} +#main-menu ul li a.selected:hover{background:rgba(0,0,0,0);color:#fff} +#main-menu ul li a.new-object{background:rgba(255,255,255,.05);border:2px solid rgba(255,255,255,.25);border-radius:50%;bottom:1px;height:26px;line-height:25px;margin:0 10px;padding:0;position:relative;text-align:center;width:26px} #main-menu ul li a.new-object:hover:after{content:none} #main-menu ul .menu-children{background-color:#fff;border:none;border-radius:3px;box-shadow:0 1px 7px 2px rgba(135,158,171,.2)} #main-menu ul .menu-children li{border-bottom:1px solid #ddd} -#main-menu ul .menu-children li a{background-color:transparent;color:#777;font-weight:400;letter-spacing:.5px} +#main-menu ul .menu-children li a{background-color:rgba(0,0,0,0);color:#777;font-weight:400;letter-spacing:.5px} #main-menu ul .menu-children li a:after{content:none} #main-menu ul .menu-children li a:hover{background:#eff4f6;color:#2b2f33} table.list{background-color:#fff;border:none;margin-bottom:25px} \ No newline at end of file @@ -88,7 +88,7 @@ #wrapper select::-ms-expand,.modal select::-ms-expand{display:none} #wrapper select:hover,.modal select:hover{border-color:#ccc;outline:none} #wrapper select:active,#wrapper select:focus,.modal select:active,.modal select:focus{border-color:#3da6ff!important} -#wrapper select:-moz-focusring,.modal select:-moz-focusring{color:transparent;text-shadow:0 0 0 #000} +#wrapper select:-moz-focusring,.modal select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 #000} #wrapper select[multiple=multiple],.modal select[multiple=multiple]{background:#fff;padding-right:5px} #wrapper .tabular label,.modal .tabular label{margin-top:5px} #wrapper .tabular label.error,.modal .tabular label.error{color:#b00!important} \ No newline at end of file @@ -153,7 +153,7 @@ #history .tab-content .journal .contextual .journal-actions,#history .tab-content .journal .contextual a.journal-link{position:relative;z-index:5} #history .tab-content .journal .contextual+h4,#history .tab-content .journal.changeset>h4:first-child{background-color:#e9eaf1;border:none;border-radius:4px;font-size:.9em;font-weight:700;left:20px;margin:0 19px 0 10px;padding:6px 9px;position:relative} #history .tab-content .journal .contextual+h4 a[href*=activity][data-absolute-date*=":"],#history .tab-content .journal.changeset>h4:first-child a[href*=activity][data-absolute-date*=":"]{box-shadow:none;padding:0} -#history .tab-content .journal .contextual+h4:before,#history .tab-content .journal.changeset>h4:first-child:before{border-bottom:5px solid transparent;border-right:6px solid #e9eaf1;border-top:5px solid transparent;content:"";height:0;left:-6px;position:absolute;top:8px;width:0} +#history .tab-content .journal .contextual+h4:before,#history .tab-content .journal.changeset>h4:first-child:before{border-bottom:5px solid rgba(0,0,0,0);border-right:6px solid #e9eaf1;border-top:5px solid rgba(0,0,0,0);content:"";height:0;left:-6px;position:absolute;top:8px;width:0} #history .tab-content .journal .contextual+h4 .gravatar,#history .tab-content .journal.changeset>h4:first-child .gravatar{left:-35px;margin-left:0;position:absolute;top:4px;z-index:5} #history .tab-content .journal div:target .contextual+h4,#history .tab-content .journal:target .contextual+h4{background:#def} #history .tab-content .journal div:target .contextual+h4:before,#history .tab-content .journal:target .contextual+h4:before{border-right:6px solid #def} \ No newline at end of file @@ -184,7 +184,7 @@ #replies .message.reply .wiki{padding-left:32px} #replies .message.reply .contextual+h4{background-color:#e9eaf1;border:none;border-radius:4px;font-size:.9em;font-weight:700;left:20px;margin:0 19px 0 10px;padding:6px 9px;position:relative} #replies .message.reply .contextual+h4 a[href*=activity][data-absolute-date*=":"]{box-shadow:none;padding:0} -#replies .message.reply .contextual+h4:before{border-bottom:5px solid transparent;border-right:6px solid #e9eaf1;border-top:5px solid transparent;content:"";height:0;left:-6px;position:absolute;top:8px;width:0} +#replies .message.reply .contextual+h4:before{border-bottom:5px solid rgba(0,0,0,0);border-right:6px solid #e9eaf1;border-top:5px solid rgba(0,0,0,0);content:"";height:0;left:-6px;position:absolute;top:8px;width:0} #replies .message.reply .contextual+h4 .gravatar{left:-35px;margin-left:0;position:absolute;top:4px;z-index:5} #replies .message.reply div:target .contextual+h4,#replies .message.reply:target .contextual+h4{background:#def} #replies .message.reply div:target .contextual+h4:before,#replies .message.reply:target .contextual+h4:before{border-right:6px solid #def} \ No newline at end of file @@ -195,7 +195,7 @@ .controller-news.action-show #comments .contextual a{padding-bottom:5px;position:relative;z-index:5} .controller-news.action-show #comments .contextual+h4{background-color:#e9eaf1;border:none;border-radius:4px;font-size:.9em;font-weight:700;left:20px;margin:0 19px 0 10px;padding:6px 9px;position:relative} .controller-news.action-show #comments .contextual+h4 a[href*=activity][data-absolute-date*=":"]{box-shadow:none;padding:0} -.controller-news.action-show #comments .contextual+h4:before{border-bottom:5px solid transparent;border-right:6px solid #e9eaf1;border-top:5px solid transparent;content:"";height:0;left:-6px;position:absolute;top:8px;width:0} +.controller-news.action-show #comments .contextual+h4:before{border-bottom:5px solid rgba(0,0,0,0);border-right:6px solid #e9eaf1;border-top:5px solid rgba(0,0,0,0);content:"";height:0;left:-6px;position:absolute;top:8px;width:0} .controller-news.action-show #comments .contextual+h4 .gravatar{left:-35px;margin-left:0;position:absolute;top:4px;z-index:5} .controller-news.action-show #edit-news+p+div.wiki,.controller-news.action-show h2+p+div.wiki{background-color:#fff;border:1px solid #dfe8f1;border-radius:3px;margin-bottom:10px;padding:20px;position:relative} .controller-documents.action-index #content h3{background-color:#e9eaf1;border:none;border-radius:4px;font-weight:700;margin:0 19px 0 10px;padding:6px 9px;position:relative} \ No newline at end of file @@ -203,7 +203,7 @@ .controller-repositories.action-diff #content>div.message,.controller-repositories.action-revision #content>div.message{background-color:#fff;border:1px solid #dfe8f1;border-radius:3px;padding:15px} .controller-repositories.action-diff.avatars-on .details h4,.controller-repositories.action-revision.avatars-on .details h4{background-color:#e9eaf1;border:none;border-radius:4px;font-size:.9em;font-weight:700;left:35px;margin:0 19px 0 10px;padding:6px 9px;position:relative} .controller-repositories.action-diff.avatars-on .details h4 a[href*=activity][data-absolute-date*=":"],.controller-repositories.action-revision.avatars-on .details h4 a[href*=activity][data-absolute-date*=":"]{box-shadow:none;padding:0} -.controller-repositories.action-diff.avatars-on .details h4:before,.controller-repositories.action-revision.avatars-on .details h4:before{border-bottom:5px solid transparent;border-right:6px solid #e9eaf1;border-top:5px solid transparent;content:"";height:0;left:-6px;position:absolute;top:8px;width:0} +.controller-repositories.action-diff.avatars-on .details h4:before,.controller-repositories.action-revision.avatars-on .details h4:before{border-bottom:5px solid rgba(0,0,0,0);border-right:6px solid #e9eaf1;border-top:5px solid rgba(0,0,0,0);content:"";height:0;left:-6px;position:absolute;top:8px;width:0} .controller-repositories.action-diff.avatars-on .details h4 .gravatar,.controller-repositories.action-revision.avatars-on .details h4 .gravatar{left:-35px;margin-left:0;position:absolute;z-index:5} .controller-repositories.action-diff.avatars-off .details h4,.controller-repositories.action-revision.avatars-off .details h4{background-color:#e9eaf1;border:none;border-radius:4px;font-size:.9em;font-weight:700;margin:0 19px 0 10px;padding:6px 9px} .controller-repositories.action-diff.avatars-off .details h4 a[href*=activity][data-absolute-date*=":"],.controller-repositories.action-revision.avatars-off .details h4 a[href*=activity][data-absolute-date*=":"]{box-shadow:none;padding:0} \ No newline at end of file @@ -216,7 +216,7 @@ div#activity dl{margin-right:2em} .controller-gantts .task{color:#444} .controller-gantts .gantt_subjects_column .icon{padding-bottom:2px;padding-top:1px} -a.atom{background:transparent;padding:2px 0 3px 16px} +a.atom{background:rgba(0,0,0,0);padding:2px 0 3px 16px} a.atom:before{content:"\f143";font-family:Font Awesome\ 5 Solid} #context-menu .icon-checked:before,.icon-only:before,.icon:before{color:#666} #context-menu .icon-checked:before,.icon-only:hover:before,.icon:hover:before{color:#000} ```
ishikawa999 commented 1 year ago

@sanak Thanks for the feedback. I have changed the colormin settings https://github.com/farend/redmine_theme_farend_bleuclair/pull/67/commits/d9ff20bc77ab7e96aee4b6a1fe0f9e88ee572f59

ishikawa999 commented 1 year ago

Pull requests merged.