From 2b1b6bdf03f8c964d200946a6c5fb23a2f3ad27d Mon Sep 17 00:00:00 2001 From: Niklas Kiefer Date: Tue, 7 Nov 2023 10:55:42 +0100 Subject: [PATCH 1/3] chore(carbon-styles): deprecate `carbon-styles.js` --- packages/form-js-carbon-styles/package.json | 6 ------ packages/form-js-carbon-styles/src/carbon-styles.js | 6 ++++-- .../form-js-carbon-styles/src/types/carbon-styles.d.ts | 4 ++++ .../form-js-carbon-styles/test/spec/carbon-styles.spec.js | 7 ++++--- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/packages/form-js-carbon-styles/package.json b/packages/form-js-carbon-styles/package.json index a72b4658b..d1de2bf61 100644 --- a/packages/form-js-carbon-styles/package.json +++ b/packages/form-js-carbon-styles/package.json @@ -2,8 +2,6 @@ "name": "@bpmn-io/form-js-carbon-styles", "version": "1.4.0", "description": "Custom carbon styles for form-js", - "main": "src/carbon-styles.js", - "types": "src/types/carbon-styles.d.ts", "scripts": { "all": "run-s test", "test": "karma start", @@ -25,10 +23,6 @@ "@types/styled-components": "^5.1.26", "styled-components": "^6.0.0" }, - "peerDependencies": { - "@carbon/elements": ">=11", - "styled-components": ">=5" - }, "files": [ "src" ] diff --git a/packages/form-js-carbon-styles/src/carbon-styles.js b/packages/form-js-carbon-styles/src/carbon-styles.js index 8df76ee81..5cae151c5 100644 --- a/packages/form-js-carbon-styles/src/carbon-styles.js +++ b/packages/form-js-carbon-styles/src/carbon-styles.js @@ -1,5 +1,7 @@ -// todo(pinussilvestrus): consider moving away from styled-components, -// cf. https://github.com/bpmn-io/form-js/issues/633 +/** + * DEPRECATED: This file is deprecated and will be removed with one of the next releases. + */ + import { css, createGlobalStyle } from 'styled-components'; import { rem } from '@carbon/elements'; diff --git a/packages/form-js-carbon-styles/src/types/carbon-styles.d.ts b/packages/form-js-carbon-styles/src/types/carbon-styles.d.ts index 3d7de5fa6..9e5b82509 100644 --- a/packages/form-js-carbon-styles/src/types/carbon-styles.d.ts +++ b/packages/form-js-carbon-styles/src/types/carbon-styles.d.ts @@ -1,3 +1,7 @@ +/** + * DEPRECATED: This file is deprecated and will be removed with one of the next releases. + */ + declare module '@bpmn-io/form-js-carbon-styles'{ import { FlattenSimpleInterpolation, GlobalStyleComponent, DefaultTheme } from 'styled-components'; diff --git a/packages/form-js-carbon-styles/test/spec/carbon-styles.spec.js b/packages/form-js-carbon-styles/test/spec/carbon-styles.spec.js index 62b2d0681..a04be0c70 100644 --- a/packages/form-js-carbon-styles/test/spec/carbon-styles.spec.js +++ b/packages/form-js-carbon-styles/test/spec/carbon-styles.spec.js @@ -56,7 +56,7 @@ insertCSS('form-js.css', formCSS); const singleStart = isSingleStart('carbon-form'); -describe('FormCustomStyling', function() { +describe('Carbon styles', function() { let container; @@ -72,7 +72,7 @@ describe('FormCustomStyling', function() { }); - (singleStart ? it.only : it)('should render', function() { + it('should render - styled-components (legacy)', function() { // given const toggle = document.createElement('button'); @@ -172,12 +172,13 @@ function createFormView(options = {}, renderFn = render) { const { container, theme = 'dark', + withGlobalFormStyling = true, ...restOptions } = options; return renderFn( - + { withGlobalFormStyling && } , { From 34dffb21916467230aa751924905088ca1e8fbd8 Mon Sep 17 00:00:00 2001 From: Niklas Kiefer Date: Tue, 7 Nov 2023 10:56:17 +0100 Subject: [PATCH 2/3] feat(carbon-styles): introduce SASS stylesheet Closes #633 --- .../src/carbon-styles.scss | 1204 +++++++++++++++++ .../test/spec/carbon-styles.spec.js | 69 + packages/form-js/CHANGELOG.md | 8 + packages/form-js/package.json | 2 +- packages/form-js/rollup.config.js | 2 +- 5 files changed, 1283 insertions(+), 2 deletions(-) create mode 100644 packages/form-js-carbon-styles/src/carbon-styles.scss diff --git a/packages/form-js-carbon-styles/src/carbon-styles.scss b/packages/form-js-carbon-styles/src/carbon-styles.scss new file mode 100644 index 000000000..3971a1d08 --- /dev/null +++ b/packages/form-js-carbon-styles/src/carbon-styles.scss @@ -0,0 +1,1204 @@ +@use "sass:math"; + +@function rem($value) { + $remValue: math.div($value, 16) + rem; + @return $remValue; +} + +@mixin getBaseInputStyles($height) { + color: var(--cds-text-primary); + border-radius: 0; + border: none; + border-bottom: 1px solid var(--cds-border-strong); + height: $height; + font-size: var(--cds-body-short-01-font-size); + font-weight: var(--cds-body-short-01-font-weight); + line-height: var(--cds-body-short-01-line-height); + letter-spacing: var(--cds-body-short-01-letter-spacing); + + &:focus { + outline: 2px solid var(--cds-focus); + outline-offset: -2px; + } + + &::placeholder { + color: var(--cds-text-placeholder); + } +} + +@mixin getSelectArrowStyles($arrowRightPosition) { + color: var(--cds-text-primary); + background-color: var(--cds-field); + cursor: pointer; + appearance: none; + background-repeat: no-repeat; + background-position: right $arrowRightPosition bottom 50%; +} + +// Global styles ///////////// + +.fjs-container { + width: 100%; + height: min-content; + + .cds--grid { + padding: 0; + } + + .fjs-form { + background-color: transparent; + color: var(--cds-text-primary); + padding: 0; + } + + @media (width < 66rem) { + // Carbon lg width breakpoint + .fjs-layout-column .fjs-form-field { + margin-left: 0; + margin-right: 0; + } + } + + .fjs-input-group { + margin: 0; + } +} + +// Themed icons ///////////// + +.cds--g10 { + .fjs-container { + + .fjs-form-field-number .fjs-input-group { + .fjs-number-arrow-container { + .fjs-number-arrow-down { + background-image: url("data:image/svg+xml;base64,PHN2ZyBmb2N1c2FibGU9ImZhbHNlIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiMxNjE2MTYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDMyIDMyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTggMTVIMjRWMTdIOHoiIC8+PC9zdmc+") } + + .fjs-number-arrow-up { + background-image: url("data:image/svg+xml;base64,PHN2ZyBmb2N1c2FibGU9ImZhbHNlIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiMxNjE2MTYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDMyIDMyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTE3IDE1TDE3IDggMTUgOCAxNSAxNSA4IDE1IDggMTcgMTUgMTcgMTUgMjQgMTcgMjQgMTcgMTcgMjQgMTcgMjQgMTV6IiAvPjwvc3ZnPg=="); + } + + &.fjs-disabled .fjs-number-arrow-up { + background-image: url("data:image/svg+xml;base64,PHN2ZyBmb2N1c2FibGU9ImZhbHNlIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9InJnYmEoMjIsIDIyLCAyMiwgMC4yNSkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDMyIDMyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTE3IDE1TDE3IDggMTUgOCAxNSAxNSA4IDE1IDggMTcgMTUgMTcgMTUgMjQgMTcgMjQgMTcgMTcgMjQgMTcgMjQgMTV6IiAvPjwvc3ZnPg=="); + } + + &.fjs-disabled .fjs-number-arrow-down { + background-image: url("data:image/svg+xml;base64,PHN2ZyBmb2N1c2FibGU9ImZhbHNlIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9InJnYmEoMjIsIDIyLCAyMiwgMC4yNSkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDMyIDMyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTggMTVIMjRWMTdIOHoiIC8+PC9zdmc+"); + } + } + } + + .fjs-form-field-select { + .fjs-input-group { + background-image: url("data:image/svg+xml;base64,PHN2ZyBmb2N1c2FibGU9ImZhbHNlIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiMxNjE2MTYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTggMTFMMyA2IDMuNyA1LjMgOCA5LjYgMTIuMyA1LjMgMTMgNnoiPjwvcGF0aD48L3N2Zz4="); + } + + &.fjs-readonly { + .fjs-input-group { + background-image: url("data:image/svg+xml;base64,PHN2ZyBmb2N1c2FibGU9ImZhbHNlIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9InJnYmEoMjIsIDIyLCAyMiwgMC4yNSkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTggMTFMMyA2IDMuNyA1LjMgOCA5LjYgMTIuMyA1LjMgMTMgNnoiPjwvcGF0aD48L3N2Zz4="); + } + } + + &.fjs-disabled { + .fjs-input-group { + background-image: url("data:image/svg+xml;base64,PHN2ZyBmb2N1c2FibGU9ImZhbHNlIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9InJnYmEoMjIsIDIyLCAyMiwgMC4yNSkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTggMTFMMyA2IDMuNyA1LjMgOCA5LjYgMTIuMyA1LjMgMTMgNnoiPjwvcGF0aD48L3N2Zz4="); + } + } + } + + .fjs-form-field-datetime { + select { + background-image: url("data:image/svg+xml;base64,PHN2ZyBmb2N1c2FibGU9ImZhbHNlIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiMxNjE2MTYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTggMTFMMyA2IDMuNyA1LjMgOCA5LjYgMTIuMyA1LjMgMTMgNnoiPjwvcGF0aD48L3N2Zz4="); + } + } + } +} + +.cds--g100 { + .fjs-container { + + .fjs-form-field-number .fjs-input-group { + .fjs-number-arrow-container { + .fjs-number-arrow-down { + background-image: url("data:image/svg+xml;base64,PHN2ZyBmb2N1c2FibGU9ImZhbHNlIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiNmNGY0ZjQiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDMyIDMyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTggMTVIMjRWMTdIOHoiIC8+PC9zdmc+"); + } + + .fjs-number-arrow-up { + background-image: url("data:image/svg+xml;base64,PHN2ZyBmb2N1c2FibGU9ImZhbHNlIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiNmNGY0ZjQiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDMyIDMyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTE3IDE1TDE3IDggMTUgOCAxNSAxNSA4IDE1IDggMTcgMTUgMTcgMTUgMjQgMTcgMjQgMTcgMTcgMjQgMTcgMjQgMTV6IiAvPjwvc3ZnPg=="); + } + + &.fjs-disabled .fjs-number-arrow-up { + background-image: url("data:image/svg+xml;base64,PHN2ZyBmb2N1c2FibGU9ImZhbHNlIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9InJnYmEoMjQ0LCAyNDQsIDI0NCwgMC4yNSkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDMyIDMyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTE3IDE1TDE3IDggMTUgOCAxNSAxNSA4IDE1IDggMTcgMTUgMTcgMTUgMjQgMTcgMjQgMTcgMTcgMjQgMTcgMjQgMTV6IiAvPjwvc3ZnPg=="); + } + + &.fjs-disabled .fjs-number-arrow-down { + background-image: url("data:image/svg+xml;base64,PHN2ZyBmb2N1c2FibGU9ImZhbHNlIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9InJnYmEoMjQ0LCAyNDQsIDI0NCwgMC4yNSkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDMyIDMyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTggMTVIMjRWMTdIOHoiIC8+PC9zdmc+") + } + } + } + + .fjs-form-field-select { + .fjs-input-group { + background-image: url("data:image/svg+xml;base64,PHN2ZyBmb2N1c2FibGU9ImZhbHNlIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiNmNGY0ZjQiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTggMTFMMyA2IDMuNyA1LjMgOCA5LjYgMTIuMyA1LjMgMTMgNnoiPjwvcGF0aD48L3N2Zz4="); + } + + &.fjs-readonly { + .fjs-input-group { + background-image: url("data:image/svg+xml;base64,PHN2ZyBmb2N1c2FibGU9ImZhbHNlIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9InJnYmEoMjQ0LCAyNDQsIDI0NCwgMC4yNSkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTggMTFMMyA2IDMuNyA1LjMgOCA5LjYgMTIuMyA1LjMgMTMgNnoiPjwvcGF0aD48L3N2Zz4="); + } + } + + &.fjs-disabled { + .fjs-input-group { + background-image: url("data:image/svg+xml;base64,PHN2ZyBmb2N1c2FibGU9ImZhbHNlIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9InJnYmEoMjQ0LCAyNDQsIDI0NCwgMC4yNSkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTggMTFMMyA2IDMuNyA1LjMgOCA5LjYgMTIuMyA1LjMgMTMgNnoiPjwvcGF0aD48L3N2Zz4="); + } + } + } + + .fjs-form-field-datetime { + select { + background-image: url("data:image/svg+xml;base64,PHN2ZyBmb2N1c2FibGU9ImZhbHNlIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiNmNGY0ZjQiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTggMTFMMyA2IDMuNyA1LjMgOCA5LjYgMTIuMyA1LjMgMTMgNnoiPjwvcGF0aD48L3N2Zz4="); + } + } + } +} + +// Markdown styles ///////////// + +.fjs-container .fjs-form-field.fjs-form-field-text .markup { + font-size: var(--cds-body-long-01-font-size); + font-weight: var(--cds-body-long-01-font-weight); + line-height: var(--cds-body-long-01-line-height); + letter-spacing: var(--cds-body-long-01-letter-spacing); + + h1 { + font-size: var(--cds-productive-heading-06-font-size); + font-weight: var(--cds-productive-heading-06-font-weight); + line-height: var(--cds-productive-heading-06-line-height); + letter-spacing: var(--cds-productive-heading-06-letter-spacing); + } + + h2 { + font-size: var(--cds-productive-heading-05-font-size); + font-weight: var(--cds-productive-heading-05-font-weight); + line-height: var(--cds-productive-heading-05-line-height); + letter-spacing: var(--cds-productive-heading-05-letter-spacing); + } + + h3 { + font-size: var(--cds-productive-heading-04-font-size); + font-weight: var(--cds-productive-heading-04-font-weight); + line-height: var(--cds-productive-heading-04-line-height); + letter-spacing: var(--cds-productive-heading-04-letter-spacing); + } + + h4 { + font-size: var(--cds-productive-heading-03-font-size); + font-weight: var(--cds-productive-heading-03-font-weight); + line-height: var(--cds-productive-heading-03-line-height); + letter-spacing: var(--cds-productive-heading-03-letter-spacing); + } + + h5 { + font-size: var(--cds-productive-heading-02-font-size); + font-weight: var(--cds-productive-heading-02-font-weight); + line-height: var(--cds-productive-heading-02-line-height); + letter-spacing: var(--cds-productive-heading-02-letter-spacing); + } + + h6 { + font-size: var(--cds-productive-heading-01-font-size); + font-weight: var(--cds-productive-heading-01-font-weight); + line-height: var(--cds-productive-heading-01-line-height); + letter-spacing: var(--cds-productive-heading-01-letter-spacing); + } + + code { + font-family: var(--cds-code-02-font-family); + font-size: var(--cds-code-02-font-size); + font-weight: var(--cds-code-02-font-weight); + line-height: var(--cds-code-02-line-height); + letter-spacing: var(--cds-code-02-letter-spacing); + white-space: pre-wrap; + } + + blockquote { + font-family: var(--cds-quotation-02-font-family); + font-size: var(--cds-quotation-02-font-size); + font-weight: var(--cds-quotation-02-font-weight); + line-height: var(--cds-quotation-02-line-height); + letter-spacing: var(--cds-quotation-02-letter-spacing); + } + + ul, + ol { + box-sizing: border-box; + padding: 0; + border: 0; + margin: 0; + list-style: none; + } + + ul { + margin-left: var(--cds-spacing-05); + + li { + position: relative; + + &:before { + position: absolute; + left: calc(-1 * var(--cds-spacing-05)); + content: '–'; + } + } + } + + ol { + margin-left: var(--cds-spacing-05); + + li { + position: relative; + counter-increment: item; + + &:before { + position: absolute; + left: calc(-1 * var(--cds-spacing-05)); + content: counter(item) '.'; + } + } + } +} + +// Anchor styles ///////////// + +.fjs-container .fjs-form-field-text a { + color: var(--cds-link-primary); + outline: none; + text-decoration: underline; + font-size: inherit; + font-weight: inherit; + line-height: var(--cds-body-compact-01-line-height); + letter-spacing: var(--cds-body-compact-01-letter-spacing); + + &:hover { + color: var(--cds-link-primary-hover); + } + + &:focus { + outline: 1px solid var(--cds-focus); + } + + &:active, &:active:visited, &:active:visited:hover { + color: var(--cds-text-primary); + } + + &:visited { + color: var(--cds-link-primary); + } + + &:visited:hover { + color: var(--cds-link-primary-hover); + } +} + +// Read-only styles ///////////// + +.fjs-container { + .fjs-readonly { + .fjs-input:read-only:not(:disabled), + .fjs-textarea:read-only:not(:disabled), + .fjs-select:read-only:not(:disabled), + &.fjs-taglist, + .fjs-input-group { + background-color: transparent; + } + + &.fjs-form-field { + .fjs-input-group { + border-bottom: 1px solid var(--cds-border-subtle); + } + } + + &.fjs-form-field-number { + .fjs-input-group .fjs-number-arrow-container { + background-color: transparent; + + .fjs-number-arrow-up, + .fjs-number-arrow-down { + background-color: transparent; + pointer-events: none; + } + } + } + + &.fjs-form-field:not(.fjs-form-field-datetime) { + .fjs-input-group .fjs-input-adornment { + background: transparent; + } + } + + &.fjs-form-field-select { + .fjs-input-group { + cursor: unset; + background-color: transparent; + + .fjs-input:read-only:not(:disabled) { + border-color: transparent; + } + + .fjs-select-display { + color: var(--cds-text-primary); + } + } + } + + &.fjs-form-field-datetime { + .fjs-input-group { + cursor: unset; + + .fjs-input-adornment { + background-color: transparent; + } + + .flatpickr-input { + cursor: unset; + } + + .fjs-input-adornment svg { + cursor: unset; + } + } + } + + &.fjs-form-field-checkbox, + &.fjs-form-field-radio, + &.fjs-form-field-checklist { + .fjs-input:read-only { + opacity: 1; + background-color: transparent; + + &:before { + border-color: var(--cds-icon-disabled); + } + } + + &.fjs-checked .fjs-input[type='checkbox'], + .fjs-form-field-label.fjs-checked .fjs-input[type='checkbox'] { + &:before { + border: 1px solid var(--cds-icon-disabled); + background: transparent; + } + + &:after { + border-bottom: 2px solid var(--cds-icon-primary); + border-left: 2px solid var(--cds-icon-primary); + } + } + } + + &.fjs-taglist .fjs-taglist-tag { + .fjs-taglist-tag-label { + padding: 2px 0px; + } + } + } +} + +// Disabled styles ///////////// + +.fjs-container { + .fjs-disabled { + &.fjs-form-field-textfield .fjs-input, + &.fjs-form-field-datetime .fjs-input, + & .fjs-textarea:disabled, + & .fjs-taglist.fjs-disabled, + & .fjs-taglist.fjs-disabled .fjs-taglist-input, + &.fjs-form-field-select .fjs-input-group.disabled, + &.fjs-form-field-select .fjs-input-group.disabled .fjs-select-display, + &.fjs-form-field-select .fjs-input-group.disabled .fjs-input, + &.fjs-form-field .fjs-form-field-label, + &.fjs-form-field.fjs-form-field-radio .fjs-form-field-label, + &.fjs-form-field.fjs-form-field-checklist .fjs-form-field-label, + & .fjs-form-field-description { + color: var(--cds-text-disabled); + cursor: var(--cursor-disabled, not-allowed); + } + + &.fjs-form-field-textfield .fjs-input-group, + &.fjs-form-field-datetime .fjs-input-group, + & .fjs-textarea:disabled, + & .fjs-taglist.fjs-disabled, + & .fjs-taglist.fjs-disabled .fjs-taglist-input, + &.fjs-form-field-select .fjs-input-group.disabled, + &.fjs-form-field-select .fjs-input-group.disabled .fjs-select-display, + &.fjs-form-field-select .fjs-input-group.disabled .fjs-input { + border: none; + } + } + + .fjs-disabled.fjs-form-field-number .fjs-input-group { + border: none; + cursor: var(--cursor-disabled, not-allowed); + } + + .fjs-disabled.fjs-form-field-number .fjs-input-group .fjs-input { + cursor: var(--cursor-disabled, not-allowed); + } + + .fjs-form-field.fjs-disabled.fjs-checked .fjs-input[type='checkbox'] { + cursor: var(--cursor-disabled, not-allowed); + &:before { + border-color: var(--cds-icon-disabled); + background-color: var(--cds-icon-disabled); + cursor: var(--cursor-disabled, not-allowed); + } + + &:after { + cursor: var(--cursor-disabled, not-allowed); + } + } + + .fjs-form-field.fjs-disabled .fjs-input[type='checkbox'] { + cursor: var(--cursor-disabled, not-allowed); + &:before { + border-color: var(--cds-icon-disabled); + cursor: var(--cursor-disabled, not-allowed); + } + } + + .fjs-form-field-datetime.fjs-disabled .fjs-input-group .fjs-input-adornment svg { + color: var(--cds-icon-disabled); + cursor: var(--cursor-disabled, not-allowed); + } + + .fjs-taglist.fjs-disabled .fjs-taglist-tag { + background-color: var(--cds-layer-01); + + .fjs-taglist-tag-label { + padding: 2px 0px; + opacity: 0.7; + color: var(--cds-text-on-color-disabled); + } + } +} + +// Label, Description & Error styles ///////////// + +.fjs-container { + .fjs-form-field-label { + font-size: var(--cds-label-01-font-size); + font-weight: var(--cds-label-01-font-weight); + line-height: var(--cds-label-01-line-height); + letter-spacing: var(--cds-label-01-letter-spacing); + } + + .fjs-form-field:not(.fjs-form-field-checkbox, .fjs-form-field-group) + .fjs-form-field-label:first-child { + margin: 0; + margin-bottom: var(--cds-spacing-03); + } + + .fjs-form-field.fjs-form-field-radio + .fjs-form-field-label:not(:first-of-type), + .fjs-form-field.fjs-form-field-checklist + .fjs-form-field-label:not(:first-of-type) { + margin: 0; + margin-bottom: 0.1875rem; + } + + .fjs-form-field.fjs-form-field-radio + .fjs-form-field-label:not(:first-of-type) { + min-height: #{rem(27)}; + } + + .fjs-form-field-description { + margin: 0; + margin-top: var(--cds-spacing-02); + font-size: var(--cds-helper-text-01-font-size); + font-weight: var(--cds-helper-text-01-font-weight); + line-height: var(--cds-helper-text-01-line-height); + letter-spacing: var(--cds-helper-text-01-letter-spacing); + } + + .fjs-form-field-error { + margin: 0; + margin-top: var(--cds-spacing-02); + font-size: var(--cds-label-01-font-size); + font-weight: var(--cds-label-01-font-weight); + line-height: var(--cds-label-01-line-height); + letter-spacing: var(--cds-label-01-letter-spacing); + } + + .fjs-has-errors .fjs-form-field-description { + display: none; + } +} + +// Checkbox styles ///////////// + +.fjs-container { + .fjs-input[type='checkbox'], + .fjs-input[type='checkbox']:focus { + all: unset; + width: rem(6); + } + + .fjs-form-field .fjs-input[type='checkbox'] { + position: relative; + display: flex; + min-height: rem(24); + padding-top: rem(3); + padding-left: rem(20); + cursor: pointer; + user-select: none; + font-size: var(--cds-body-short-01-font-size); + font-weight: var(--cds-body-short-01-font-weight); + line-height: var(--cds-body-short-01-line-height); + letter-spacing: var(--cds-body-short-01-letter-spacing); + + &:before, + &:after { + box-sizing: border-box; + } + + &:before { + position: absolute; + top: rem(3); + left: 0; + width: rem(16); + height: rem(16); + border: 1px solid var(--cds-icon-primary); + margin: rem(2) rem(2) rem(2) rem(3); + background-color: transparent; + border-radius: rem(1); + content: ''; + } + + &:after { + position: absolute; + top: rem(9); + left: rem(7); + width: rem(9); + height: rem(5); + border-bottom: 2px solid var(--cds-icon-inverse); + border-left: 2px solid var(--cds-icon-inverse); + margin-top: rem(-3); + background: 0 0; + content: ''; + transform: scale(0) rotate(-45deg); + transform-origin: bottom right; + } + } + + .fjs-form-field .fjs-input[type='checkbox']:focus { + &:before { + outline: 2px solid var(--cds-focus); + outline-offset: rem(1); + } + } + + .fjs-form-field.fjs-checked .fjs-input[type='checkbox'], + .fjs-form-field + .fjs-form-field-label.fjs-checked + .fjs-input[type='checkbox'] { + &:before { + border: none; + border-width: 1px; + background-color: var(--cds-icon-primary); + } + + &:after { + transform: scale(1) rotate(-45deg); + } + } + + .fjs-form-field-checklist .fjs-form-field-label:not(:first-of-type) { + font-size: var(--cds-body-short-01-font-size); + font-weight: var(--cds-body-short-01-font-weight); + line-height: var(--cds-body-short-01-line-height); + letter-spacing: var(--cds-body-short-01-letter-spacing); + color: var(--cds-text-primary); + } + + .fjs-form-field-checkbox .fjs-form-field-label { + font-size: var(--cds-body-short-01-font-size); + font-weight: var(--cds-body-short-01-font-weight); + line-height: var(--cds-body-short-01-line-height); + letter-spacing: var(--cds-body-short-01-letter-spacing); + color: var(--cds-text-primary); + } +} + +// Taglist styles ///////////// + +.fjs-container { + .fjs-taglist { + display: flex; + align-items: center; + min-height: 2.5rem; + height: unset !important; + } + + .fjs-taglist:focus-within { + outline: 2px solid var(--cds-focus); + outline-offset: -2px; + } + + .fjs-taglist .fjs-taglist-input { + &, + &::placeholder { + color: var(--cds-text-primary); + } + } + + .fjs-taglist .fjs-taglist-tag { + font-size: var(--cds-label-01-font-size); + font-weight: var(--cds-label-01-font-weight); + line-height: var(--cds-label-01-line-height); + letter-spacing: var(--cds-label-01-letter-spacing); + max-width: 100%; + padding: 0 0.5rem; + border-radius: 0.9375rem; + word-break: break-word; + min-width: auto; + display: inline-flex; + align-items: center; + justify-content: center; + + & .fjs-taglist-tag-label { + padding: 0; + max-width: 100%; + text-overflow: ellipsis; + white-space: nowrap; + } + + & .fjs-taglist-tag-remove { + all: unset; + width: 1.5rem; + height: 1.5rem; + border-radius: 50%; + display: flex; + flex-shrink: 0; + align-items: center; + justify-content: center; + padding: 0; + border: 0; + margin: 0 rem(-8) 0 0.125rem; + cursor: pointer; + + & svg { + all: unset; + color: var(--cds-icon-inverse); + } + + &:focus { + background-color: transparent; + outline: 1px solid var(--cds-focus-inverse); + } + } + } +} + +// Radio styles ///////////// + +.fjs-container { + .fjs-form-field-radio { + .fjs-input { + appearance: none; + width: 0; + margin: 0; + margin-right: calc(#{rem(18)} + var(--cds-spacing-03)); + position: relative; + height: #{rem(18)}; + outline: none; + + &:focus:before { + outline: 2px solid var(--cds-focus); + outline-offset: 1.5px; + } + + &:before { + position: absolute; + top: 0; + left: 0; + width: #{rem(18)}; + height: #{rem(18)}; + border: 1px solid var(--cds-icon-primary); + background-color: transparent; + border-radius: 50%; + content: ''; + } + } + + .fjs-checked .fjs-input:after { + position: relative; + top: 0; + left: 0; + display: inline-block; + width: #{rem(18)}; + height: #{rem(18)}; + background-color: var(--cds-icon-primary); + border-radius: 50%; + content: ''; + transform: scale(0.5); + } + + &.fjs-disabled .fjs-input:before { + border-color: var(--cds-icon-disabled); + } + + &.fjs-disabled .fjs-checked .fjs-input:after { + background-color: var(--cds-icon-disabled); + } + + .fjs-form-field-label:not(:first-of-type) { + font-size: var(--cds-body-short-01-font-size); + font-weight: var(--cds-body-short-01-font-weight); + line-height: var(--cds-body-short-01-line-height); + letter-spacing: var(--cds-body-short-01-letter-spacing); + color: var(--cds-text-primary); + } + } +} + +// Button styles ///////////// + +.fjs-container { + .fjs-form-field.fjs-form-field-button .fjs-button { + font-size: var(--cds-body-short-01-font-size); + font-weight: var(--cds-body-short-01-font-weight); + line-height: var(--cds-body-short-01-line-height); + letter-spacing: var(--cds-body-short-01-letter-spacing); + min-height: #{rem(32)}; + padding: calc(0.375rem - 3px) 60px calc(0.375rem - 3px) 12px; + text-align: left; + color: var(--cds-button-tertiary); + border: 1px solid var(--cds-button-tertiary); + border-radius: 0; + background-color: transparent; + cursor: pointer; + + &:hover { + color: var(--cds-text-inverse); + background-color: var(--cds-button-tertiary-hover); + } + + &:focus { + border-color: var(--cds-focus); + box-shadow: inset 0 0 0 1px var(--cds-focus), + inset 0 0 0 2px var(--cds-background); + color: var(--cds-text-inverse); + background-color: var(--cds-button-tertiary); + } + + &:active { + border-color: transparent; + background-color: var(--cds-button-tertiary-active); + color: var(--cds-text-inverse); + } + + &:disabled { + border: 1px solid var(--cds-button-disabled); + background: transparent; + box-shadow: none; + color: var(--cds-text-on-color-disabled); + cursor: var(--cursor-disabled, not-allowed); + outline: none; + } + + &[type='submit'] { + background-color: var(--cds-button-primary); + border: 1px solid transparent; + color: var(--cds-text-on-color); + + &:disabled { + background: var(--cds-button-disabled); + } + } + } +} + +// Number styles ///////////// + +.fjs-container { + .fjs-form-field-number .fjs-input-group { + border-radius: 0; + border: none; + border-bottom: 1px solid var(--cds-border-strong); + height: 2.5rem; + box-sizing: border-box; + + &:focus-within { + outline: 2px solid var(--cds-focus); + outline-offset: -2px; + } + + .fjs-input { + border-radius: 0; + border: none; + font-size: var(--cds-body-short-01-font-size); + font-weight: var(--cds-body-short-01-font-weight); + line-height: var(--cds-body-short-01-line-height); + letter-spacing: var(--cds-body-short-01-letter-spacing); + } + + .fjs-number-arrow-container { + all: unset; + border: none; + border-radius: 0; + display: flex; + flex-direction: row-reverse; + align-items: center; + background-color: var(--cds-field); + + .fjs-number-arrow-up, + .fjs-number-arrow-down { + width: 40px; + height: calc(40px - 1px); + background-color: var(--cds-field); + color: transparent; + + &:hover { + background-color: var(--cds-field-hover); + cursor: pointer; + } + } + + &.fjs-disabled .fjs-number-arrow-up:hover, + &.fjs-disabled .fjs-number-arrow-down:hover { + background-color: var(--cds-field); + cursor: not-allowed; + } + + .fjs-number-arrow-separator { + width: 0.0625rem; + height: 1rem; + background-color: var(--cds-border-subtle); + } + + .fjs-number-arrow-down { + background-repeat: no-repeat; + background-position: right 50% bottom 50%; + } + + .fjs-number-arrow-up { + background-repeat: no-repeat; + background-position: right 50% bottom 50%; + } + } + } +} + +// Datetime styles ///////////// + +.fjs-container { + .fjs-form-field-datetime { + .fjs-input.flatpickr-input { + width: 100%; + height: 100%; + border: none; + border-radius: 0; + + &, + &::placeholder { + color: var(--cds-text-primary); + } + } + + .fjs-input.flatpickr-input:disabled { + color: var(--cds-text-disabled); + } + + .fjs-input.flatpickr-input:disabled::placeholder { + color: var(--cds-text-disabled); + } + + select { + @include getBaseInputStyles(1.5rem); + @include getSelectArrowStyles(var(--cds-spacing-03)); + border-bottom: none; + padding-right: 2rem; + } + + .fjs-input-group { + display: flex; + flex-direction: row-reverse; + position: relative; + } + + .fjs-input-group .fjs-input-adornment { + border: none; + border-radius: 0; + background-color: var(--cds-field); + display: flex; + padding-right: var(--cds-spacing-05); + } + + .fjs-input-group .fjs-input-adornment svg { + color: var(--cds-icon-primary); + cursor: pointer; + } + + .flatpickr-wrapper { + height: 100%; + position: initial; + } + + .fjs-timepicker.fjs-timepicker-anchor { + position: unset; + } + + .flatpickr-calendar.static { + top: calc(100% + 3px); + } + + .flatpickr-calendar .flatpickr-prev-month svg, + .flatpickr-calendar .flatpickr-next-month svg { + height: 16px; + } + + .flatpickr-day.today { + position: relative; + color: var(--cds-link-primary); + font-weight: 600; + border-color: transparent; + } + + .flatpickr-day.selected, + .flatpickr-day.today.selected, + .flatpickr-day.selected:hover, + .flatpickr-day.today.selected:hover { + background-color: var(--cds-button-primary); + color: var(--cds-text-on-color); + } + + .flatpickr-day:focus { + outline: 2px solid var(--cds-focus); + outline-offset: -2px; + } + + .flatpickr-day.selected:focus { + outline: 0.0625rem solid var(--cds-focus); + outline-offset: -0.1875rem; + } + + .flatpickr-day:hover { + background: var(--cds-layer-hover); + } + + .flatpickr-days, + .flatpickr-weekdays { + padding: unset; + width: unset; + } + } +} + +// Select styles ///////////// + +.fjs-container { + .fjs-form-field-select .fjs-input-group { + @include getBaseInputStyles(2.5rem); + @include getSelectArrowStyles(var(--cds-spacing-05)); + + .fjs-select-display { + display: flex; + align-items: center; + } + + .fjs-select-arrow { + color: transparent; + } + + .fjs-select-cross { + display: flex; + align-items: center; + justify-content: center; + margin-right: var(--cds-spacing-04); + width: 2.5rem; + height: calc(2.5rem - 1px); + + &:hover { + background-color: var(--cds-layer-hover); + } + + svg { + color: var(--cds-icon-primary); + } + } + + .fjs-input { + color: var(--cds-text-primary); + background-color: var(--cds-field); + border-radius: 0; + border: none; + border-bottom: 1px solid var(--cds-border-strong); + height: 2.5rem; + font-size: var(--cds-body-short-01-font-size); + font-weight: var(--cds-body-short-01-font-weight); + line-height: var(--cds-body-short-01-line-height); + letter-spacing: var(--cds-body-short-01-letter-spacing); + } + } + + .fjs-form-field-select .fjs-select-anchor .fjs-dropdownlist { + position: absolute; + top: -4px; + } + + .fjs-form-field-select .fjs-input-group:focus-within { + outline: 2px solid var(--cds-focus); + outline-offset: -2px; + } + + .fjs-form-field-select.fjs-disabled .fjs-input-group { + @include getSelectArrowStyles(var(--cds-spacing-05)); + } + + .fjs-has-errors.fjs-form-field-select .fjs-input-group:focus-within { + outline: 2px solid var(--cds-focus); + outline-offset: -2px; + } + + .fjs-has-errors.fjs-form-field-select .fjs-input-group { + outline: 2px solid var(--cds-text-error); + outline-offset: -2px; + } +} + +// Remaining input styles ///////////// + +.fjs-container { + .fjs-form-field-textfield .fjs-input-group, + .fjs-form-field-datetime .fjs-input-group, + .fjs-textarea, + .fjs-taglist, + .fjs-form-field-select.fjs-disabled .fjs-input-group { + @include getBaseInputStyles(2.5rem); + } + + .fjs-form-field-textfield .fjs-input-group, + .fjs-form-field-datetime .fjs-input-group { + &:focus-within { + outline: 2px solid var(--cds-focus); + outline-offset: -2px; + } + } + .fjs-form-field-textfield .fjs-input, + .fjs-form-field-datetime .fjs-input { + background-color: var(--cds-field); + color: var(--cds-text-primary); + border-radius: 0; + } + + .fjs-has-errors.fjs-form-field-number .fjs-input-group:focus-within, + .fjs-has-errors.fjs-form-field-textarea .fjs-textarea:focus, + .fjs-form-field-textfield.fjs-has-errors .fjs-input-group:focus-within, + .fjs-form-field-textfield.fjs-has-errors .fjs-input-group:focus, + .fjs-form-field-datetime.fjs-has-errors .fjs-input-group:focus-within, + .fjs-form-field-datetime.fjs-has-errors .fjs-input-group:focus { + outline: 2px solid var(--cds-focus); + outline-offset: -2px; + } + + .fjs-has-errors.fjs-form-field-number .fjs-input-group, + .fjs-has-errors.fjs-form-field-textarea .fjs-textarea, + .fjs-form-field-textfield.fjs-has-errors .fjs-input-group, + .fjs-form-field-textfield.fjs-has-errors .fjs-input-group, + .fjs-form-field-datetime.fjs-has-errors .fjs-input-group, + .fjs-form-field-datetime.fjs-has-errors .fjs-input-group { + outline: 2px solid var(--cds-text-error); + outline-offset: -2px; + } +} + +// Dropdown styles ///////////// + +.fjs-container { + .fjs-form-field-taglist .fjs-taglist-anchor .fjs-dropdownlist, + .fjs-form-field-datetime .fjs-timepicker-anchor .fjs-dropdownlist, + .fjs-form-field-select .fjs-select-anchor .fjs-dropdownlist { + margin: 0; + max-height: rem(264); + border: none; + background-color: var(--cds-layer); + overflow-y: auto; + cursor: pointer; + border-radius: 0; + box-shadow: 0 2px 6px var(--cds-shadow); + + & .fjs-dropdownlist-item { + border: none; + box-sizing: border-box; + padding: 0; + margin: 0 var(--cds-spacing-05); + } + + & .fjs-dropdownlist-item:not(:first-of-type):not(:hover) { + border-top: 1px solid var(--cds-border-subtle); + } + + & .fjs-dropdownlist-item, + & .fjs-dropdownlist-empty { + font-size: var(--cds-body-short-01-font-size); + font-weight: var(--cds-body-short-01-font-weight); + line-height: var(--cds-body-short-01-line-height); + letter-spacing: var(--cds-body-short-01-letter-spacing); + height: #{rem(40)}; + color: var(--cds-text-secondary); + cursor: pointer; + user-select: none; + display: flex; + align-items: center; + background-color: transparent; + } + + & .fjs-dropdownlist-empty { + color: var(--cds-text-disabled); + cursor: default; + } + + & .fjs-dropdownlist-item:hover, + & .fjs-dropdownlist-item.focused { + background-color: var(--cds-layer-hover); + color: var(--cds-text-primary); + margin: 0; + padding: 0 var(--cds-spacing-05); + } + + & .fjs-dropdownlist-item:not(:first-of-type):hover { + padding-top: 1px; + } + + & .fjs-dropdownlist-item.focused + .fjs-dropdownlist-item { + border: none; + padding-top: 1px; + } + } +} + +// Adornment styles ///////////// + +.fjs-container .fjs-form-field:not(.fjs-form-field-datetime) { + .fjs-input-group .fjs-input-adornment { + all: unset; + display: flex; + align-items: center; + background-color: var(--cds-field); + color: var(--cds-text-secondary); + padding: 0 var(--cds-spacing-04); + cursor: default; + + &.border-right { + padding-right: 0; + } + + &.border-left { + padding-left: 0; + } + } + + &.fjs-disabled .fjs-input-group .fjs-input-adornment { + color: var(--cds-text-disabled); + } +} diff --git a/packages/form-js-carbon-styles/test/spec/carbon-styles.spec.js b/packages/form-js-carbon-styles/test/spec/carbon-styles.spec.js index a04be0c70..fe986097c 100644 --- a/packages/form-js-carbon-styles/test/spec/carbon-styles.spec.js +++ b/packages/form-js-carbon-styles/test/spec/carbon-styles.spec.js @@ -36,6 +36,8 @@ import themeCSS from './theme.scss'; import testCSS from '../test.css'; +import carbonSassStyles from '../../src/carbon-styles.scss'; + const THEME_TOKENS = { light: 'g10', dark: 'g100', @@ -135,6 +137,73 @@ describe('Carbon styles', function() { }); + (singleStart ? it.only : it)('should render - sass', function() { + + // given + insertCSS('carbon-styles.css', carbonSassStyles); + + const toggle = document.createElement('button'); + toggle.textContent = 'Toggle Theme'; + toggle.style.position = 'absolute'; + toggle.style.right = '10px'; + toggle.style.top = '10px'; + container.appendChild(toggle); + + let theme = 'dark'; + + const data = { + creditor: 'John Doe Company', + amount: 456, + invoiceNumber: 'C-123', + approved: true, + approvedBy: 'John Doe', + mailto: [ 'regional-manager', 'approver' ], + product: 'camunda-cloud', + queriedDRIs: [ + { + 'label': 'John Doe', + 'value': 'johnDoe' + }, + { + 'label': 'Anna Bell', + 'value': 'annaBell' + }, + { + 'label': 'Nico Togin', + 'value': 'incognito' + } + ], + tags: [ 'tag1', 'tag2', 'tag3' ], + readonly_tags: [ 'tag1', 'tag2', 'tag3' ], + readonly_checklist: [ 'option_1' ], + readonly_radio: 'option_1', + language: 'english' + }; + + const result = createFormView({ + container, + schema, + data, + withGlobalFormStyling: false + }); + + toggle.addEventListener('click', () => { + toggleTheme(container); + theme = theme === 'dark' ? 'light' : 'dark'; + createFormView({ + theme, + container, + schema, + data, + withGlobalFormStyling: false + }, result.rerender); + }); + + // then + expect(domQuery('.fjs-container', result.container)).to.exist; + }); + + describe('a11y', function() { it('should have no violations', async function() { diff --git a/packages/form-js/CHANGELOG.md b/packages/form-js/CHANGELOG.md index 202ce64ab..b809428eb 100644 --- a/packages/form-js/CHANGELOG.md +++ b/packages/form-js/CHANGELOG.md @@ -10,6 +10,14 @@ ___Note:__ Yet to be released changes appear here._ * `FEAT`: initial release, moved from https://github.com/pinussilvestrus/form-json-schema +### Carbon styles + +* `FEAT`: introduce Carbon styles as a SASS stylesheet ([#633](https://github.com/bpmn-io/form-js/issues/633)) + +### Breaking Changes + +The `@bpmn-io/form-js-carbon-styles` deprecates the `carbon-styles.js` styled component export. The `type` definitions got removed from the package. Please use the `src/carbon-styles.scss` stylesheet instead. + ## 1.4.1 ### Editor diff --git a/packages/form-js/package.json b/packages/form-js/package.json index 7c4dbbea3..a47b8a7c4 100644 --- a/packages/form-js/package.json +++ b/packages/form-js/package.json @@ -24,7 +24,7 @@ "./dist/assets/form-js-editor.css": "./dist/assets/form-js-editor.css", "./dist/assets/form-js-editor-base.css": "./dist/assets/form-js-editor-base.css", "./dist/assets/form-js-playground.css": "./dist/assets/form-js-playground.css", - "./dist/carbon-styles": "./dist/carbon-styles.js", + "./dist/assets/carbon-styles.scss": "./dist/assets/carbon-styles.scss", "./package.json": "./package.json" }, "publishConfig": { diff --git a/packages/form-js/rollup.config.js b/packages/form-js/rollup.config.js index df9cee1f2..a1e05e65d 100644 --- a/packages/form-js/rollup.config.js +++ b/packages/form-js/rollup.config.js @@ -33,7 +33,7 @@ export default [ { src: '../../node_modules/@bpmn-io/form-js-viewer/dist/assets/flatpickr/*.css', dest: 'dist/assets/flatpickr', }, { src: '../../node_modules/@bpmn-io/form-js-editor/dist/assets/**/*.css', dest: 'dist/assets' }, { src: '../../node_modules/@bpmn-io/form-js-playground/dist/assets/**/*.css', dest: 'dist/assets' }, - { src: '../../node_modules/@bpmn-io/form-js-carbon-styles/src/carbon-styles.js', dest: 'dist' } + { src: '../../node_modules/@bpmn-io/form-js-carbon-styles/src/carbon-styles.scss', dest: 'dist/assets' } ] }) ], From e2e6fc057c18078dea1c858b7e72bb60b3f13b8f Mon Sep 17 00:00:00 2001 From: Niklas Kiefer Date: Tue, 7 Nov 2023 10:56:34 +0100 Subject: [PATCH 3/3] test(e2e): add visual regression test for carbon-styles --- e2e/carbon/carbon.scss | 15 + e2e/carbon/index.html | 4 +- e2e/carbon/index.js | 2 +- e2e/theming/index.html | 23 + e2e/theming/index.js | 9 + e2e/{carbon => theming}/theme.scss | 0 e2e/visual/carbon-styles.spec.js | 38 ++ .../carbon-styles-1-chromium-linux.png | Bin 0 -> 41330 bytes .../carbon-styles-1-firefox-linux.png | Bin 0 -> 67489 bytes .../carbon-styles-1-webkit-linux.png | Bin 0 -> 42093 bytes e2e/visual/fixtures/complex.json | 627 ++++++++++++++++++ e2e/visual/no-theme.spec.js | 4 +- e2e/visual/theming.spec.js | 4 +- vite.config.js | 3 +- 14 files changed, 721 insertions(+), 8 deletions(-) create mode 100644 e2e/carbon/carbon.scss create mode 100644 e2e/theming/index.html create mode 100644 e2e/theming/index.js rename e2e/{carbon => theming}/theme.scss (100%) create mode 100644 e2e/visual/carbon-styles.spec.js create mode 100644 e2e/visual/carbon-styles.spec.js-snapshots/carbon-styles-1-chromium-linux.png create mode 100644 e2e/visual/carbon-styles.spec.js-snapshots/carbon-styles-1-firefox-linux.png create mode 100644 e2e/visual/carbon-styles.spec.js-snapshots/carbon-styles-1-webkit-linux.png create mode 100644 e2e/visual/fixtures/complex.json diff --git a/e2e/carbon/carbon.scss b/e2e/carbon/carbon.scss new file mode 100644 index 000000000..67361e221 --- /dev/null +++ b/e2e/carbon/carbon.scss @@ -0,0 +1,15 @@ +@use '@carbon/styles' as * with ( + $font-path: 'https://fonts.camunda.io' +); +@use '@carbon/styles/scss/themes'; +@use '@carbon/styles/scss/theme'; + +@import '@bpmn-io/form-js-carbon-styles/src/carbon-styles'; + +.cds--g10 { + @include theme.theme(themes.$g10); +} + +.cds--g100 { + @include theme.theme(themes.$g100); +} diff --git a/e2e/carbon/index.html b/e2e/carbon/index.html index 83ebc133a..16d0d08a1 100644 --- a/e2e/carbon/index.html +++ b/e2e/carbon/index.html @@ -4,7 +4,7 @@ - Forms playground + Carbon styles - +
diff --git a/e2e/carbon/index.js b/e2e/carbon/index.js index 90f486cca..b0307f6e4 100644 --- a/e2e/carbon/index.js +++ b/e2e/carbon/index.js @@ -2,7 +2,7 @@ import '@bpmn-io/form-js/dist/assets/form-js.css'; import '@bpmn-io/form-js/dist/assets/form-js-editor.css'; import '@bpmn-io/form-js/dist/assets/form-js-playground.css'; -import './theme.scss'; +import './carbon.scss'; import { renderSchema } from '../renderSchema'; diff --git a/e2e/theming/index.html b/e2e/theming/index.html new file mode 100644 index 000000000..74bba9354 --- /dev/null +++ b/e2e/theming/index.html @@ -0,0 +1,23 @@ + + + + + + + Theming + + + + + +
+ + + diff --git a/e2e/theming/index.js b/e2e/theming/index.js new file mode 100644 index 000000000..90f486cca --- /dev/null +++ b/e2e/theming/index.js @@ -0,0 +1,9 @@ +import '@bpmn-io/form-js/dist/assets/form-js.css'; +import '@bpmn-io/form-js/dist/assets/form-js-editor.css'; +import '@bpmn-io/form-js/dist/assets/form-js-playground.css'; + +import './theme.scss'; + +import { renderSchema } from '../renderSchema'; + +renderSchema(); diff --git a/e2e/carbon/theme.scss b/e2e/theming/theme.scss similarity index 100% rename from e2e/carbon/theme.scss rename to e2e/theming/theme.scss diff --git a/e2e/visual/carbon-styles.spec.js b/e2e/visual/carbon-styles.spec.js new file mode 100644 index 000000000..33b1d03d6 --- /dev/null +++ b/e2e/visual/carbon-styles.spec.js @@ -0,0 +1,38 @@ +const { expect } = require('@playwright/test'); + +const { test } = require('../test-fixtures'); + +const schema = require('./fixtures/complex.json'); + +test('carbon styles', async ({ page, makeAxeBuilder }) => { + + // given + await page.route('/form', route => { + + route.fulfill({ + status: 200, + body: JSON.stringify({ + data: { + schema, + component: 'viewer' + } + }) + }); + }); + + // when + await page.goto('/carbon'); + + await page.waitForSelector('#container', { + state: 'visible' + }); + + // then + await expect(page).toHaveScreenshot(); + + // and then + const results = await makeAxeBuilder().analyze(); + + expect(results.violations).toHaveLength(0); + expect(results.passes.length).toBeGreaterThan(0); +}); diff --git a/e2e/visual/carbon-styles.spec.js-snapshots/carbon-styles-1-chromium-linux.png b/e2e/visual/carbon-styles.spec.js-snapshots/carbon-styles-1-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..a92591be28ed22e9f82b8a9935c4cefbae76ad1d GIT binary patch literal 41330 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]v4oTX^v{@ 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 literal 0 HcmV?d00001 diff --git a/e2e/visual/carbon-styles.spec.js-snapshots/carbon-styles-1-webkit-linux.png b/e2e/visual/carbon-styles.spec.js-snapshots/carbon-styles-1-webkit-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..e41ed93e7a4a3033edacd8d8c491dd5ca6043ad3 GIT binary patch literal 42093 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 WP4Bm6y++ufIdM$sXtuQRrT+zqkw(e@ literal 0 HcmV?d00001 diff --git a/e2e/visual/fixtures/complex.json b/e2e/visual/fixtures/complex.json new file mode 100644 index 000000000..677b76730 --- /dev/null +++ b/e2e/visual/fixtures/complex.json @@ -0,0 +1,627 @@ +{ + "components": [ + { + "text": "# Title 1\n## Title 2\n### Title 3\n#### Title 4\n##### Title 5\n###### Title 6\n\n[this is a link](https://camunda.com) and then comes [**another bold link**](https://bpmn.io) and then [_another italic link_](https://camunda.com)\n\n- list\n- list\n\n1. foo\n2. foo\n\nFoo _italic_ **bold**\n\n> Multiline code\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus auctor sodales pretium. Donec id volutpat quam, sit amet elementum lectus. \n\nInline `code`\n\n```\nMultiline code\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus auctor sodales pretium. Donec id volutpat quam, sit amet elementum lectus. \n```\n\n[Link](https://camunda.com)\n", + "type": "text", + "id": "Field_1bbbwwg" + }, + { + "id": "Group_1a82jj2", + "label": "I am a group", + "showOutline": true, + "type": "group", + "path": "groupExample", + "components": [ + { + "id": "Field_1a82jj2", + "label": "I am a textfield in a group", + "type": "textfield", + "key": "groupTextField", + "description": "I am a textfield description" + }, + { + "id": "Field_1a82jj3", + "label": "I am a number field in a group", + "type": "number", + "key": "groupNumberField", + "description": "I am a number field description" + }, + { + "id": "Group_1a82jj3", + "label": "I am a nested group", + "showOutline": true, + "type": "group", + "path": "nestedGroup", + "components": [] + } + ] + }, + { + "label": "I am a textfield", + "type": "textfield", + "id": "Field_1l0t1m5", + "key": "textfield", + "description": "I am a textfield description", + "validate": { + "required": true + }, + "defaultValue": "value" + }, + { + "label": "I am a disabled textfield", + "type": "textfield", + "id": "Field_1r9b6p2", + "key": "disabled_textfield", + "description": "I am a disabled textfield description", + "disabled": true, + "defaultValue": "value" + }, + { + "label": "I am a read only textfield", + "type": "textfield", + "id": "Field_1r9b6p3", + "key": "readonly-textfield", + "description": "I am a read only textfield description", + "readonly": true, + "defaultValue": "value" + }, + { + "label": "I am a number field", + "type": "number", + "id": "Field_0ltb6av", + "key": "number_field", + "description": "I am a number field description", + "validate": { + "required": true + }, + "defaultValue": 1 + }, + { + "label": "I am a disabled number field", + "type": "number", + "id": "Field_1t8wtoa", + "key": "disabled_number_field", + "description": "I am a disabled number field description", + "disabled": true, + "defaultValue": 1 + }, + { + "label": "I am a read only number field", + "type": "number", + "id": "Field_1t8wtob", + "key": "readonly_number_field", + "description": "I am a read only number field description", + "readonly": true, + "defaultValue": 1 + }, + { + "label": "I am checkbox", + "type": "checkbox", + "id": "Field_0jqueb7", + "key": "checkbox", + "description": "I am checkbox description", + "defaultValue": false + }, + { + "label": "I am disabled checked checkbox", + "type": "checkbox", + "id": "Field_1klmahz", + "key": "disabled_checked_checkbox", + "disabled": true, + "defaultValue": true, + "description": "I am disabled checked checkbox description" + }, + { + "label": "I am read only checked checkbox", + "type": "checkbox", + "id": "Field_1klmaha", + "key": "readonly_checked_checkbox", + "readonly": true, + "defaultValue": true, + "description": "I am read only checked checkbox description" + }, + { + "label": "I am disabled checkbox", + "type": "checkbox", + "id": "Field_01h0ngn", + "key": "disabled_checkbox", + "description": "I am disabled checkbox description", + "disabled": true + }, + { + "label": "I am read only checkbox", + "type": "checkbox", + "id": "Field_01h0ngm", + "key": "readonly_checkbox", + "description": "I am read only checkbox description", + "readonly": true + }, + { + "values": [ + { + "label": "Option 1", + "value": "option_1" + }, + { + "label": "Option 2", + "value": "option_2" + } + ], + "label": "I am checklist", + "type": "checklist", + "id": "Field_1d5nfix", + "key": "checklist", + "description": "I am checklist description" + }, + { + "values": [ + { + "label": "Option 1", + "value": "option_2" + }, + { + "label": "Option 2", + "value": "option_1" + } + ], + "label": "I am disabled checklist", + "type": "checklist", + "id": "Field_0l0y6cf", + "key": "disabled_checklist", + "description": "I am disabled checklist description", + "disabled": true + }, + { + "values": [ + { + "label": "Option 1", + "value": "option_1" + }, + { + "label": "Option 2", + "value": "option_2" + } + ], + "label": "I am read only checklist", + "type": "checklist", + "id": "Field_0l0y6cg", + "key": "readonly_checklist", + "description": "I am read only checklist description", + "readonly": true + }, + { + "values": [ + { + "label": "Option 1", + "value": "option_1" + }, + { + "label": "Option 2", + "value": "option_2" + } + ], + "label": "I am a taglist", + "type": "taglist", + "id": "Field_07zrh4q", + "key": "taglist", + "description": "I am a taglist description" + }, + { + "values": [ + { + "label": "Tag 1", + "value": "tag1" + }, + { + "label": "Tag 2", + "value": "tag2" + }, + { + "label": "Tag 3", + "value": "tag3" + } + ], + "label": "I am a disabled taglist", + "type": "taglist", + "id": "Field_0hm9hgj", + "key": "tags", + "description": "I am a disabled taglist description", + "disabled": true + }, + { + "values": [ + { + "label": "Tag 1", + "value": "tag1" + }, + { + "label": "Tag 2", + "value": "tag2" + }, + { + "label": "Tag 3", + "value": "tag3" + } + ], + "label": "I am a read only taglist", + "type": "taglist", + "id": "Field_0hm9hgi", + "key": "readonly_tags", + "description": "I am a read only taglist description", + "readonly": true + }, + { + "values": [ + { + "label": "Option 1", + "value": "option_1" + }, + { + "label": "Option 2", + "value": "option_2" + } + ], + "label": "I am a radio", + "type": "radio", + "id": "Field_0i46s34", + "key": "radio", + "description": "I am a radio description", + "validate": { + "required": true + } + }, + { + "values": [ + { + "label": "Option 1", + "value": "option_1" + }, + { + "label": "Option 2", + "value": "option_2" + } + ], + "label": "I am a disabled radio", + "type": "radio", + "id": "Field_110t1zy", + "key": "disabled_radio", + "description": "I am a disabled radio description", + "validate": { + "required": false + }, + "disabled": true + }, + { + "values": [ + { + "label": "Option 1", + "value": "option_1" + }, + { + "label": "Option 2", + "value": "option_2" + } + ], + "label": "I am a read only radio", + "type": "radio", + "id": "Field_110t1zz", + "key": "readonly_radio", + "description": "I am a read only radio description", + "validate": { + "required": false + }, + "readonly": true + }, + { + "values": [ + { + "label": "Option 1", + "value": "option_1" + }, + { + "label": "Option 2", + "value": "option_2" + } + ], + "label": "I am a select", + "type": "select", + "id": "Field_1iw4ekg", + "key": "select", + "description": "I am a select description", + "validate": { + "required": true + }, + "defaultValue": "option_1" + }, + { + "values": [ + { + "label": "Option 1", + "value": "option_1" + }, + { + "label": "Option 2", + "value": "option_2" + } + ], + "label": "I am a select", + "type": "select", + "id": "Field_06g19xn", + "key": "disabled_select", + "description": "I am a select description", + "disabled": true, + "defaultValue": "option_2" + }, + { + "values": [ + { + "label": "Option 1", + "value": "option_1" + }, + { + "label": "Option 2", + "value": "option_2" + } + ], + "label": "I am a read only select", + "type": "select", + "id": "Field_06g19xm", + "key": "readonly_select", + "description": "I am a read only select description", + "readonly": true, + "defaultValue": "option_2" + }, + { + "values": [ + { + "label": "Option 1", + "value": "option_1" + }, + { + "label": "Option 2", + "value": "option_2" + } + ], + "label": "I am a searchable select", + "type": "select", + "id": "Field_1iw4ekz", + "key": "searchable_select", + "searchable": true, + "description": "I am a select description", + "validate": { + "required": true + }, + "defaultValue": "option_1" + }, + { + "values": [ + { + "label": "Option 1", + "value": "option_1" + }, + { + "label": "Option 2", + "value": "option_2" + } + ], + "label": "I am a searchable select", + "searchable": true, + "type": "select", + "id": "Field_06g19xz", + "key": "disabled_searchable_select", + "description": "I am a select description", + "disabled": true, + "defaultValue": "option_2" + }, + { + "values": [ + { + "label": "Option 1", + "value": "option_1" + }, + { + "label": "Option 2", + "value": "option_2" + } + ], + "label": "I am a read only searchable select", + "searchable": true, + "type": "select", + "id": "Field_06g19xx", + "key": "readonly_searchable_select", + "description": "I am a read only select description", + "readonly": true, + "defaultValue": "option_2" + }, + { + "type": "image", + "alt": "An image", + "id": "Field_1mv8qs4", + "source": "https://via.placeholder.com/150C" + }, + { + "label": "I am a text area", + "type": "textarea", + "id": "Field_1f2xg0s", + "key": "textarea", + "description": "I am a text area description", + "validate": { + "required": true + } + }, + { + "label": "I am a disabled text area", + "type": "textarea", + "id": "Field_1ae1pqq", + "key": "disabled_textarea", + "description": "I am a disabled text area description", + "disabled": true + }, + { + "label": "I am a read only text area", + "type": "textarea", + "id": "Field_1ae1pqo", + "key": "readonly_textarea", + "description": "I am a read only text area description", + "readonly": true + }, + { + "subtype": "date", + "dateLabel": "I am a date field", + "type": "datetime", + "id": "Field_0h7fnn7", + "key": "date_field", + "description": "I am a date field description", + "validate": { + "required": true + } + }, + { + "subtype": "date", + "dateLabel": "I am a disabled date field", + "type": "datetime", + "id": "Field_09ff8mv", + "key": "disabled_date_field", + "description": "I am a disabled date field description", + "disabled": true + }, + { + "subtype": "date", + "dateLabel": "I am a read only date field", + "type": "datetime", + "id": "Field_09ff8mw", + "key": "readonly_date_field", + "description": "I am a read only date field description", + "readonly": true + }, + { + "subtype": "time", + "dateLabel": "Date", + "type": "datetime", + "id": "Field_0dal4g3", + "key": "time_field", + "timeLabel": "I am a time field", + "timeSerializingFormat": "utc_offset", + "timeInterval": 15, + "use24h": false, + "description": "I am time field description" + }, + { + "subtype": "time", + "dateLabel": "Date", + "type": "datetime", + "id": "Field_16am9zx", + "key": "disabled_time", + "timeLabel": "I am a disabled time field", + "timeSerializingFormat": "utc_offset", + "timeInterval": 15, + "description": "I am a disabled time field description", + "disabled": true, + "validate": { + "required": true + } + }, + { + "subtype": "time", + "dateLabel": "Date", + "type": "datetime", + "id": "Field_16am9zw", + "key": "readonly_time", + "timeLabel": "I am a read only time field", + "timeSerializingFormat": "utc_offset", + "timeInterval": 15, + "description": "I am a read only time field description", + "readonly": true, + "validate": { + "required": true + } + }, + { + "subtype": "datetime", + "dateLabel": "I am a datetime field date label", + "type": "datetime", + "id": "Field_0e4j7fb", + "key": "datetime_field", + "timeLabel": "I am a datetime field time label", + "timeSerializingFormat": "utc_offset", + "timeInterval": 15, + "description": "I am a datetime field description" + }, + { + "subtype": "datetime", + "dateLabel": "I am a disabled datetime field date label", + "type": "datetime", + "id": "Field_0qupyln", + "key": "disabled_datetime", + "timeLabel": "I am a disabled datetime field time label", + "timeSerializingFormat": "utc_offset", + "timeInterval": 15, + "disabled": true, + "description": "I am a disabled datetime description", + "validate": { + "required": true + } + }, + { + "subtype": "datetime", + "dateLabel": "I am a read only datetime field date label", + "type": "datetime", + "id": "Field_0qupylm", + "key": "readonly_datetime", + "timeLabel": "I am a read only datetime field time label", + "timeSerializingFormat": "utc_offset", + "timeInterval": 15, + "readonly": true, + "description": "I am a read only datetime description", + "validate": { + "required": true + } + }, + { + "label": "I am an adorned field", + "type": "textfield", + "id": "Field_0k58wk0", + "key": "adorned_field", + "description": "I am an adorned field description", + "appearance": { + "prefixAdorner": "prefix", + "suffixAdorner": "suffix" + } + }, + { + "label": "I am an adorned read only field", + "type": "textfield", + "id": "Field_0k58wk1", + "key": "adorned_readonly_field", + "description": "I am an adorned read only field description", + "readonly": true, + "appearance": { + "prefixAdorner": "prefix", + "suffixAdorner": "suffix" + } + }, + { + "action": "reset", + "label": "reset", + "type": "button", + "id": "Field_1ydujqw", + "key": "field_1yi6q4r" + }, + { + "action": "submit", + "label": "submit", + "type": "button", + "id": "Field_1ydujqa", + "key": "field_1yi6q4a" + } + ], + "type": "default", + "id": "Form_1a82jj2", + "executionPlatform": "Camunda Cloud", + "executionPlatformVersion": "8.1.0", + "exporter": { + "name": "Camunda Modeler", + "version": "5.7.0-nightly.20230103" + }, + "schemaVersion": 9 +} diff --git a/e2e/visual/no-theme.spec.js b/e2e/visual/no-theme.spec.js index b22b2ca20..31093de32 100644 --- a/e2e/visual/no-theme.spec.js +++ b/e2e/visual/no-theme.spec.js @@ -21,7 +21,7 @@ test('no-theme - viewer', async ({ page, makeAxeBuilder }) => { }); // when - await page.goto('/carbon'); + await page.goto('/theming'); await page.waitForSelector('#container', { state: 'visible' @@ -61,7 +61,7 @@ test('no-theme - editor', async ({ page, makeAxeBuilder }) => { }); // when - await page.goto('/carbon'); + await page.goto('/theming'); await page.waitForSelector('#container', { state: 'visible' diff --git a/e2e/visual/theming.spec.js b/e2e/visual/theming.spec.js index 20b5158c1..120f8afdc 100644 --- a/e2e/visual/theming.spec.js +++ b/e2e/visual/theming.spec.js @@ -21,7 +21,7 @@ test('theming - viewer', async ({ page, makeAxeBuilder }) => { }); // when - await page.goto('/carbon'); + await page.goto('/theming'); await page.waitForSelector('#container', { state: 'visible' @@ -61,7 +61,7 @@ test('theming - editor', async ({ page, makeAxeBuilder }) => { }); // when - await page.goto('/carbon'); + await page.goto('/theming'); await page.waitForSelector('#container', { state: 'visible' diff --git a/vite.config.js b/vite.config.js index 330d7731d..9b9b6db32 100644 --- a/vite.config.js +++ b/vite.config.js @@ -11,7 +11,8 @@ export default defineConfig({ rollupOptions: { input: { main: resolve(__dirname, 'e2e/index.html'), - carbon: resolve(__dirname, 'e2e/carbon/index.html'), + theming: resolve(__dirname, 'e2e/theming/index.html'), + carbon: resolve(__dirname, 'e2e/carbon/index.html') }, }, },