Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / modules / contrib / paragraphs / css / .stylelintrc.yml
diff --git a/web/modules/contrib/paragraphs/css/.stylelintrc.yml b/web/modules/contrib/paragraphs/css/.stylelintrc.yml
new file mode 100644 (file)
index 0000000..e328537
--- /dev/null
@@ -0,0 +1,294 @@
+# Base taken from https://github.com/material-components/material-components-web/blob/master/.stylelintrc.yaml
+#
+# For more information about Drupal standards that this configuration is trying
+# to follow please check
+#
+#  - https://www.drupal.org/docs/develop/standards/css/css-formatting-guidelines
+#  - https://www.drupal.org/docs/develop/standards/css/csscomb-settings-for-drupal-css-formatting-and-sort-tool
+
+# We are using https://github.com/stylelint/stylelint-config-standard/blob/master/index.js
+# as a base for our rules.
+extends: stylelint-config-standard
+ignoreFiles:
+  - node_modules/**/*
+plugins:
+  - stylelint-selector-bem-pattern
+  - stylelint-scss
+  - stylelint-order
+rules:
+  # Follow best practices
+  font-family-name-quotes: always-where-recommended
+  # http://stackoverflow.com/questions/2168855/is-quoting-the-value-of-url-really-necessary
+  function-url-quotes: never
+  # https://www.w3.org/TR/selectors/#attribute-selectors
+  # http://stackoverflow.com/q/3851091
+  selector-attribute-quotes: always
+  # Double-quotes are our convention throughout our codebase within (S)CSS.
+  # They also reflect how attribute strings are normally quoted within the DOM.
+  string-quotes: double
+  # Before getting a hard attack about the fact that we require proper CSS
+  # ordering please read next articles:
+  # - https://css-tricks.com/poll-results-how-do-you-order-your-css-properties/
+  # - https://www.drupal.org/docs/develop/standards/css/csscomb-settings-for-drupal-css-formatting-and-sort-tool
+  # Note that we do not follow exactly the same proposed standard for now like
+  # in csscomb ddo page.
+  #
+  # This order definition is taken from:
+  # - https://github.com/sasstools/sass-lint/blob/develop/lib/config/property-sort-orders/smacss.yml
+  order/declaration-block-properties-specified-order:
+    # Box
+
+    - display
+    - position
+    - top
+    - right
+    - bottom
+    - left
+
+    - flex
+    - flex-basis
+    - flex-direction
+    - flex-flow
+    - flex-grow
+    - flex-shrink
+    - flex-wrap
+    - align-content
+    - align-items
+    - align-self
+    - justify-content
+    - order
+
+    - width
+    - min-width
+    - max-width
+
+    - height
+    - min-height
+    - max-height
+
+    - margin
+    - margin-top
+    - margin-right
+    - margin-bottom
+    - margin-left
+
+    - padding
+    - padding-top
+    - padding-right
+    - padding-bottom
+    - padding-left
+
+    - float
+    - clear
+
+    - columns
+    - column-gap
+    - column-fill
+    - column-rule
+    - column-span
+    - column-count
+    - column-width
+
+    - transform
+    - transform-box
+    - transform-origin
+    - transform-style
+
+    - transition
+    - transition-delay
+    - transition-duration
+    - transition-property
+    - transition-timing-function
+
+    # Border
+
+    - border
+    - border-top
+    - border-right
+    - border-bottom
+    - border-left
+    - border-width
+    - border-top-width
+    - border-right-width
+    - border-bottom-width
+    - border-left-width
+
+    - border-style
+    - border-top-style
+    - border-right-style
+    - border-bottom-style
+    - border-left-style
+
+    - border-radius
+    - border-top-left-radius
+    - border-top-right-radius
+    - border-bottom-left-radius
+    - border-bottom-right-radius
+
+    - border-color
+    - border-top-color
+    - border-right-color
+    - border-bottom-color
+    - border-left-color
+
+    - outline
+    - outline-color
+    - outline-offset
+    - outline-style
+    - outline-width
+
+    # Background
+
+    - background
+    - background-attachment
+    - background-clip
+    - background-color
+    - background-image
+    - background-repeat
+    - background-position
+    - background-size
+
+    # Text
+
+    - color
+
+    - font
+    - font-family
+    - font-size
+    - font-smoothing
+    - font-style
+    - font-variant
+    - font-weight
+
+    - letter-spacing
+    - line-height
+    - list-style
+
+    - text-align
+    - text-decoration
+    - text-indent
+    - text-overflow
+    - text-rendering
+    - text-shadow
+    - text-transform
+    - text-wrap
+
+    - white-space
+    - word-spacing
+
+    # Other
+
+    - border-collapse
+    - border-spacing
+    - box-shadow
+    - caption-side
+    - content
+    - cursor
+    - empty-cells
+    - opacity
+    - overflow
+    - quotes
+    - speak
+    - table-layout
+    - vertical-align
+    - visibility
+    - z-index
+  declaration-property-unit-whitelist:
+    font-size:
+      - "rem"
+      - "px"
+  # The following prefix rules are enabled since we use autoprefixer.
+  at-rule-no-vendor-prefix: true
+  media-feature-name-no-vendor-prefix: true
+  selector-no-vendor-prefix: true
+  value-no-vendor-prefix: true
+  # Usually if you're nesting past 3 levels deep there's a problem.
+  max-nesting-depth: 3
+  # Because we adhere to BEM we can limit the amount of necessary compound
+  # selectors. Most should
+  # just be 1 level selector. However, modifiers can introduce an additional compound selector.
+  # Futhermore, generic qualifying selectors (e.g. `[dir="rtl"]`) can introduce yet another level.
+  selector-max-compound-selectors: 4
+  # For specificity: disallow IDs (0). Allow for complex combinations of classes, pseudo-classes,
+  # attribute modifiers based on selector-max-compound-selectors, plus an addition for
+  # pseudo-classes (4). Allow for pseudo-elements (1).
+  selector-max-specificity: 0,4,1
+  # Disallow "@extend" in scss.
+  # http://csswizardry.com/2016/02/mixins-better-for-performance/
+  # http://vanseodesign.com/css/sass-mixin-or-extend/
+  # Besides performance, @extend actually *changes* the selector precedence by creating a compound
+  # selector, which can lead to ambiguous results.
+  at-rule-blacklist:
+    - extend
+  # Extremely useful for typos, and anything emergent can be ignored by this rule
+  property-no-unknown:
+    - true
+    - ignoreProperties:
+        - contain
+  # There is no reason that a specific ID would be needed for UI components
+  selector-no-id: true
+  # Qualifying types are not needed when using a naming system like BEM
+  selector-no-qualifying-type: true
+  # In general, we should *never* be modifying elements within our components, since we can't
+  # predict the use cases in which users would add a certain type of element into a component.
+  # The only hard exception to this are `fieldset` elements, which can be disabled and in that case
+  # we want our UI components within that fieldset to be disabled as well.
+  # Other exceptions to this may be in packages/material-components-web, in which case this rule could
+  # be disabled for that file, with an explanation.
+  selector-no-type:
+    - true
+    - ignoreTypes:
+        - fieldset
+  # Styles for components should never need the universal selector.
+  selector-no-universal: true
+  # Ensure any defined symbols are prefixed with "mdc-"
+  # TODO: Remove "md-" pattern.
+  #custom-media-pattern: ^mdc?-.+
+  #custom-property-pattern: ^mdc?-.+
+  #selector-class-pattern:
+  #  - ^mdc?-.+
+  #  - resolveNestedSelectors: true
+  #selector-id-pattern: ^mdc?-.+
+  # Names are more semantic than numbers
+  font-weight-notation: named-where-possible
+  # http://www.paulirish.com/2010/the-protocol-relative-url/
+  function-url-no-scheme-relative: true
+  # @todo TODO: and FIXME: warnings are super useful because they remind us that
+  # we should address these within our codebase.
+  comment-word-blacklist:
+    -
+      - todo
+      - /^TODO:/
+      - /^FIXME:/
+    - severity: warning
+  # Our Drupal style guide is with leading zero.
+  # Leading zero presence does not matter http://hey.georgie.nu/leadingzero/.
+  number-leading-zero: always
+
+  # We use Harry Roberts' BEM dialect as our preferred way to format classes.
+  # See: http://csswizardry.com/2013/01/mindbemding-getting-your-head-round-bem-syntax/
+  # See: https://github.com/postcss/postcss-bem-linter/blob/c59db3f/lib/preset-patterns.js#L39
+  plugin/selector-bem-pattern:
+    componentName: ^[a-z]+(?:-[a-z]+)*$
+    # <namespace>-<block>__<element>*--<modifier>*[<attribute>]*
+    componentSelectors: ^\.paragraphs?-{componentName}(?:__[a-z]+(?:-[a-z]+)*)*(?:--[a-z]+(?:-[a-z]+)*)*(?:\[.+\])*$
+    ignoreSelectors:
+      - ^fieldset
+      - ^\[aria\-disabled=(?:.+)\]
+
+  # @todo - figure how we are going to use this SCSS naming patterns?
+  # SCSS naming patterns, just like our CSS conventions above.
+  # (note for $-vars we use a leading underscore for "private" variables)
+  #scss/dollar-variable-pattern:
+  #  - ^_?mdc-.+
+  #  -
+  #    ignore: local
+  #scss/at-function-pattern: ^mdc-.+
+  #scss/at-mixin-pattern: ^mdc-.+
+  # Prevents unneeded nesting selectors
+  scss/selector-no-redundant-nesting-selector: true
+  # Since leading underscores are not needed, they can be omitted
+  scss/at-import-no-partial-leading-underscore: true
+  # Since mixins are explicit (`@include`) and parens are unnecessary for argumentless mixins, they
+  # can be omitted.
+  scss/at-mixin-no-argumentless-call-parentheses: true