From a5a1b7d2303beaadb713e59dcf71852c5d67a783 Mon Sep 17 00:00:00 2001 From: Alexander Meindl Date: Thu, 29 Dec 2022 12:10:26 +0100 Subject: [PATCH] working on stylelint --- .stylelintignore | 1 - .stylelintrc.json | 167 +++-------------------------- assets/stylesheets/additionals.css | 91 ++++++++-------- assets/stylesheets/select2.css | 35 +++--- lib/additionals/helpers.rb | 2 +- package.json | 3 +- 6 files changed, 80 insertions(+), 219 deletions(-) diff --git a/.stylelintignore b/.stylelintignore index f7f39ef1..71216943 100644 --- a/.stylelintignore +++ b/.stylelintignore @@ -1,3 +1,2 @@ # stylelint ignore file assets/stylesheets/*.min.css -assets/stylesheets/select2.css diff --git a/.stylelintrc.json b/.stylelintrc.json index 4e01a95d..2581f6e5 100644 --- a/.stylelintrc.json +++ b/.stylelintrc.json @@ -1,163 +1,20 @@ { + "extends": "stylelint-config-standard", "rules": { - "at-rule-no-unknown": true, - "block-no-empty": true, - "color-no-invalid-hex": true, - "comment-no-empty": true, - "declaration-block-no-duplicate-properties": [ + "string-quotes": "single", + "selector-class-pattern": "^([a-z][a-z0-9]*)(-[a-z0-9]+)*$|block_column", + "font-family-no-missing-generic-family-keyword": [ true, { - "ignore": [ - "consecutive-duplicates-with-different-values" + "ignoreFontFamilies": [ + "Font Awesome 5 Free", + "Font Awesome 5 Brands", + "Apple Color Emoji", + "Segoe UI Emoji", + "Segoe UI Symbol", + "Noto Color Emoji" ] } - ], - "declaration-block-no-redundant-longhand-properties": true, - "declaration-block-no-shorthand-property-overrides": true, - "font-family-no-duplicate-names": true, - "font-family-no-missing-generic-family-keyword": true, - "function-calc-no-unspaced-operator": true, - "function-linear-gradient-no-nonstandard-direction": true, - "keyframe-declaration-no-important": true, - "media-feature-name-no-unknown": true, - "no-descending-specificity": true, - "no-duplicate-at-import-rules": true, - "no-duplicate-selectors": true, - "no-empty-source": true, - "no-extra-semicolons": true, - "no-invalid-double-slash-comments": true, - "property-no-unknown": true, - "selector-pseudo-class-no-unknown": true, - "selector-pseudo-element-no-unknown": true, - "selector-type-no-unknown": true, - "string-no-newline": true, - "unit-no-unknown": true, - "at-rule-empty-line-before": [ - "always", - { - "except": [ - "blockless-after-same-name-blockless", - "first-nested" - ], - "ignore": [ - "after-comment" - ] - } - ], - "at-rule-name-case": "lower", - "at-rule-name-space-after": "always-single-line", - "at-rule-semicolon-newline-after": "always", - "block-closing-brace-empty-line-before": "never", - "block-closing-brace-newline-after": "always", - "block-closing-brace-newline-before": "always-multi-line", - "block-closing-brace-space-before": "always-single-line", - "block-opening-brace-newline-after": "always-multi-line", - "block-opening-brace-space-after": "always-single-line", - "block-opening-brace-space-before": "always", - "color-hex-case": "lower", - "color-hex-length": "short", - "comment-empty-line-before": [ - "always", - { - "except": [ - "first-nested" - ], - "ignore": [ - "stylelint-commands" - ] - } - ], - "comment-whitespace-inside": "always", - "custom-property-empty-line-before": [ - "always", - { - "except": [ - "after-custom-property", - "first-nested" - ], - "ignore": [ - "after-comment", - "inside-single-line-block" - ] - } - ], - "declaration-bang-space-after": "never", - "declaration-bang-space-before": "always", - "declaration-block-semicolon-newline-after": "always-multi-line", - "declaration-block-semicolon-space-after": "always-single-line", - "declaration-block-semicolon-space-before": "never", - "declaration-block-single-line-max-declarations": 1, - "declaration-block-trailing-semicolon": "always", - "declaration-colon-newline-after": "always-multi-line", - "declaration-colon-space-after": "always-single-line", - "declaration-colon-space-before": "never", - "declaration-empty-line-before": [ - "always", - { - "except": [ - "after-declaration", - "first-nested" - ], - "ignore": [ - "after-comment", - "inside-single-line-block" - ] - } - ], - "function-comma-newline-after": "always-multi-line", - "function-comma-space-after": "always-single-line", - "function-comma-space-before": "never", - "function-max-empty-lines": 0, - "function-name-case": "lower", - "function-parentheses-newline-inside": "always-multi-line", - "function-parentheses-space-inside": "never-single-line", - "function-whitespace-after": "always", - "indentation": 2, - "length-zero-no-unit": true, - "max-empty-lines": 1, - "media-feature-colon-space-after": "always", - "media-feature-colon-space-before": "never", - "media-feature-name-case": "lower", - "media-feature-parentheses-space-inside": "never", - "media-feature-range-operator-space-after": "always", - "media-feature-range-operator-space-before": "always", - "media-query-list-comma-newline-after": "always-multi-line", - "media-query-list-comma-space-after": "always-single-line", - "media-query-list-comma-space-before": "never", - "no-eol-whitespace": true, - "no-missing-end-of-source-newline": true, - "number-leading-zero": "always", - "number-no-trailing-zeros": true, - "property-case": "lower", - "rule-empty-line-before": [ - "always-multi-line", - { - "except": [ - "first-nested" - ], - "ignore": [ - "after-comment" - ] - } - ], - "selector-attribute-brackets-space-inside": "never", - "selector-attribute-operator-space-after": "never", - "selector-attribute-operator-space-before": "never", - "selector-combinator-space-after": "always", - "selector-combinator-space-before": "always", - "selector-descendant-combinator-no-non-space": true, - "selector-list-comma-newline-after": "always", - "selector-list-comma-space-before": "never", - "selector-max-empty-lines": 0, - "selector-pseudo-class-case": "lower", - "selector-pseudo-class-parentheses-space-inside": "never", - "selector-pseudo-element-case": "lower", - "selector-pseudo-element-colon-notation": "double", - "selector-type-case": "lower", - "unit-case": "lower", - "value-list-comma-newline-after": "always-multi-line", - "value-list-comma-space-after": "always-single-line", - "value-list-comma-space-before": "never", - "value-list-max-empty-lines": 0 + ] } } diff --git a/assets/stylesheets/additionals.css b/assets/stylesheets/additionals.css index 9ccc11ef..8cbb7cca 100644 --- a/assets/stylesheets/additionals.css +++ b/assets/stylesheets/additionals.css @@ -1,10 +1,8 @@ -/* stylelint-disable font-family-no-missing-generic-family-keyword */ - #admin-menu a.additionals::before { - font-family: Font Awesome\ 5 Free; + font-family: 'Font Awesome 5 Free'; font-size: 1.1em; font-weight: 900; - content: "\f085"; /* fas fa-cogs */ + content: '\f085'; /* fas fa-cogs */ padding-right: 4px; } @@ -23,9 +21,9 @@ font-size: 95%; } -#my-page.dashboard .settings input[type=text], -#my-page.dashboard .settings input[type=password], -#my-page.dashboard .settings input[type=url] { +#my-page.dashboard .settings input[type='text'], +#my-page.dashboard .settings input[type='password'], +#my-page.dashboard .settings input[type='url'] { width: 90%; } @@ -48,9 +46,9 @@ } .gototop::before { - font-family: Font Awesome\ 5 Free; + font-family: 'Font Awesome 5 Free'; font-weight: 900; - content: "\f139"; /* fas fa-chevron-circle-up */ + content: '\f139'; /* fas fa-chevron-circle-up */ padding-right: 4px; opacity: 0.8; } @@ -68,10 +66,12 @@ font-size: 95%; } +/* stylelint-disable selector-class-pattern */ img.inline_emojify { width: 20px; height: 20px; } +/* stylelint-enable selector-class-pattern */ /* stylelint-disable selector-type-no-unknown */ additionals-emoji { @@ -82,6 +82,7 @@ additionals-emoji { font-size: 1.2em; line-height: 1; } +/* stylelint-enable selector-type-no-unknown */ /* Legacy smilie classes */ @@ -92,28 +93,28 @@ additionals-emoji { height: 16px; } -.smiley-smiley { background-image: url(../images/smileys/smiley.png); } -.smiley-smiley2 { background-image: url(../images/smileys/smiley2.png); } -.smiley-laughing { background-image: url(../images/smileys/smiley-grin.png); } -.smiley-laughing2 { background-image: url(../images/smileys/smiley-laughing2.png); } -.smiley-crying { background-image: url(../images/smileys/smiley-cry.png); } -.smiley-sad { background-image: url(../images/smileys/smiley-sad.png); } -.smiley-wink { background-image: url(../images/smileys/smiley-wink.png); } -.smiley-cheeky { background-image: url(../images/smileys/smiley-razz.png); } -.smiley-shock { background-image: url(../images/smileys/smiley-eek.png); } -.smiley-annoyed { background-image: url(../images/smileys/smiley-annoyed.png); } -.smiley-confuse { background-image: url(../images/smileys/smiley-confuse.png); } -.smiley-straight { background-image: url(../images/smileys/smiley-neutral.png); } -.smiley-embarrassed { background-image: url(../images/smileys/smiley-red.png); } -.smiley-kiss { background-image: url(../images/smileys/smiley-kiss.png); } -.smiley-angel { background-image: url(../images/smileys/smiley-angel.png); } -.smiley-evil { background-image: url(../images/smileys/smiley-evil.png); } -.smiley-rock { background-image: url(../images/smileys/smiley-cool.png); } -.smiley-check { background-image: url(../images/smileys/check.png); } -.smiley-exclamation { background-image: url(../images/smileys/exclamation-red-frame.png); } -.smiley-question { background-image: url(../images/smileys/question-frame.png); } -.smiley-success { background-image: url(../images/smileys/success-frame.png); } -.smiley-failure { background-image: url(../images/smileys/failure-frame.png); } +.smiley-smiley { background-image: url('../images/smileys/smiley.png'); } +.smiley-smiley2 { background-image: url('../images/smileys/smiley2.png'); } +.smiley-laughing { background-image: url('../images/smileys/smiley-grin.png'); } +.smiley-laughing2 { background-image: url('../images/smileys/smiley-laughing2.png'); } +.smiley-crying { background-image: url('../images/smileys/smiley-cry.png'); } +.smiley-sad { background-image: url('../images/smileys/smiley-sad.png'); } +.smiley-wink { background-image: url('../images/smileys/smiley-wink.png'); } +.smiley-cheeky { background-image: url('../images/smileys/smiley-razz.png'); } +.smiley-shock { background-image: url('../images/smileys/smiley-eek.png'); } +.smiley-annoyed { background-image: url('../images/smileys/smiley-annoyed.png'); } +.smiley-confuse { background-image: url('../images/smileys/smiley-confuse.png'); } +.smiley-straight { background-image: url('../images/smileys/smiley-neutral.png'); } +.smiley-embarrassed { background-image: url('../images/smileys/smiley-red.png'); } +.smiley-kiss { background-image: url('../images/smileys/smiley-kiss.png'); } +.smiley-angel { background-image: url('../images/smileys/smiley-angel.png'); } +.smiley-evil { background-image: url('../images/smileys/smiley-evil.png'); } +.smiley-rock { background-image: url('../images/smileys/smiley-cool.png'); } +.smiley-check { background-image: url('../images/smileys/check.png'); } +.smiley-exclamation { background-image: url('../images/smileys/exclamation-red-frame.png'); } +.smiley-question { background-image: url('../images/smileys/question-frame.png'); } +.smiley-success { background-image: url('../images/smileys/success-frame.png'); } +.smiley-failure { background-image: url('../images/smileys/failure-frame.png'); } div.clear-both { clear: both; } @@ -142,7 +143,7 @@ h2#page-title input { } h2#page-title::before { - font-family: Font Awesome\ 5 Free; + font-family: 'Font Awesome 5 Free'; padding-right: 5px; text-shadow: 0 2px 0 #efefef; font-size: 90%; @@ -166,11 +167,11 @@ h2#page-title.live-search input { h2#page-title.import::before { font-weight: 900; - content: "\f093"; /* fas fa-upload */ + content: '\f093'; /* fas fa-upload */ } a.external.redmine-link { - background-image: url(../images/redmine-link.png); + background-image: url('../images/redmine-link.png'); background-position: 0% 40%; padding-left: 13px; background-repeat: no-repeat; @@ -287,9 +288,11 @@ table.table-of-values caption { .additionals-number-positive { color: green; } .additionals-number-negative { color: #cb2525; } +/* stylelint-disable selector-class-pattern */ .jstb_macros { - background-image: url(../images/jstoolbar/bt_macros.png); + background-image: url('../images/jstoolbar/bt_macros.png'); } +/* stylelint-enable selector-class-pattern */ div.relation-list-header { background: #eee; @@ -342,15 +345,15 @@ table.entity-list td.block_column { white-space: normal; } -tr.block_row.idnt-1 td.block_column { padding-left: 24px; } -tr.block_row.idnt-2 td.block_column { padding-left: 40px; } -tr.block_row.idnt-3 td.block_column { padding-left: 56px; } -tr.block_row.idnt-4 td.block_column { padding-left: 72px; } -tr.block_row.idnt-5 td.block_column { padding-left: 88px; } -tr.block_row.idnt-6 td.block_column { padding-left: 104px; } -tr.block_row.idnt-7 td.block_column { padding-left: 120px; } -tr.block_row.idnt-8 td.block_column { padding-left: 136px; } -tr.block_row.idnt-9 td.block_column { padding-left: 152px; } +tr.block-row.idnt-1 td.block_column { padding-left: 24px; } +tr.block-row.idnt-2 td.block_column { padding-left: 40px; } +tr.block-row.idnt-3 td.block_column { padding-left: 56px; } +tr.block-row.idnt-4 td.block_column { padding-left: 72px; } +tr.block-row.idnt-5 td.block_column { padding-left: 88px; } +tr.block-row.idnt-6 td.block_column { padding-left: 104px; } +tr.block-row.idnt-7 td.block_column { padding-left: 120px; } +tr.block-row.idnt-8 td.block_column { padding-left: 136px; } +tr.block-row.idnt-9 td.block_column { padding-left: 152px; } table.entity-list td.block_column span { font-weight: bold; diff --git a/assets/stylesheets/select2.css b/assets/stylesheets/select2.css index cc7ab1b6..ccb01f93 100644 --- a/assets/stylesheets/select2.css +++ b/assets/stylesheets/select2.css @@ -1,3 +1,5 @@ +/* stylelint-disable selector-class-pattern, property-no-vendor-prefix, max-line-length, no-descending-specificity, selector-list-comma-newline-after */ + .select2-container { box-sizing: border-box; display: inline-block; @@ -28,7 +30,7 @@ position: relative; } -.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { +.select2-container[dir='rtl'] .select2-selection--single .select2-selection__rendered { padding-right: 8px; padding-left: 20px; } @@ -153,7 +155,6 @@ .select2-hidden-accessible { border: 0 !important; - clip: rect(0 0 0 0) !important; -webkit-clip-path: inset(50%) !important; clip-path: inset(50%) !important; height: 1px !important; @@ -201,9 +202,9 @@ } .select2-container--default .select2-selection--single .select2-selection__arrow b { - border-color: #888 transparent transparent transparent; + border-color: #888 transparent transparent; border-style: solid; - border-width: 5px 4px 0 4px; + border-width: 5px 4px 0; height: 0; left: 50%; margin-left: -4px; @@ -213,11 +214,11 @@ width: 0; } -.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear { +.select2-container--default[dir='rtl'] .select2-selection--single .select2-selection__clear { float: left; } -.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow { +.select2-container--default[dir='rtl'] .select2-selection--single .select2-selection__arrow { left: 1px; right: auto; } @@ -232,8 +233,8 @@ } .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b { - border-color: transparent transparent #888 transparent; - border-width: 0 4px 5px 4px; + border-color: transparent transparent #888; + border-width: 0 4px 5px; } .select2-container--default .select2-selection--multiple { @@ -248,8 +249,8 @@ .select2-container--default .select2-selection--multiple .select2-selection__rendered { box-sizing: border-box; list-style: none; - margin: -3px 0 -4px 0; - padding: 2px 2px 2px 2px; + margin: -3px 0 -4px; + padding: 2px; width: 100%; } @@ -289,16 +290,16 @@ color: #333; } -.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline { +.select2-container--default[dir='rtl'] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir='rtl'] .select2-selection--multiple .select2-search--inline { float: right; } -.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice { +.select2-container--default[dir='rtl'] .select2-selection--multiple .select2-selection__choice { margin-left: 5px; margin-right: auto; } -.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { +.select2-container--default[dir='rtl'] .select2-selection--multiple .select2-selection__choice__remove { margin-left: 2px; margin-right: auto; } @@ -336,7 +337,7 @@ border: none; outline: 0; box-shadow: none; - -webkit-appearance: textfield; + appearance: textfield; } .select2-container--default .select2-results > .select2-results__options { @@ -344,15 +345,15 @@ overflow-y: auto; } -.select2-container--default .select2-results__option[role=group] { +.select2-container--default .select2-results__option[role='group'] { padding: 0; } -.select2-container--default .select2-results__option[aria-disabled=true] { +.select2-container--default .select2-results__option[aria-disabled='true'] { color: #999; } -.select2-container--default .select2-results__option[aria-selected=true] { +.select2-container--default .select2-results__option[aria-selected='true'] { background-color: #eee; } diff --git a/lib/additionals/helpers.rb b/lib/additionals/helpers.rb index 4d9f5ff8..26dbdf84 100644 --- a/lib/additionals/helpers.rb +++ b/lib/additionals/helpers.rb @@ -17,7 +17,7 @@ module Additionals query.block_columns.each do |column| next if !(text = column_content column, entry) || text.blank? - content << tag.tr(class: "#{tr_classes} block_row") do # rubocop: disable Style/MethodCallWithArgsParentheses + content << tag.tr(class: "#{tr_classes} block-row") do # rubocop: disable Style/MethodCallWithArgsParentheses tds = [] tds << tag.td('', class: 'hide') if with_buttons && with_checkbox tds << tag.td(colspan: td_colspan, class: "#{column.css_classes} block_column") do # rubocop: disable Style/MethodCallWithArgsParentheses diff --git a/package.json b/package.json index 34bb5afc..072d8303 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,7 @@ "dependencies": {}, "devDependencies": { "eslint": "^8.0.0", - "stylelint": "^14.0.0" + "stylelint": "^14.0.0", + "stylelint-config-standard": "^29.0.0" } }