Convert component shadow styles to CSS files too

This commit is contained in:
Lea Verou
2024-12-13 13:56:42 -05:00
parent 9c17d27af4
commit 4b56a03144
13 changed files with 83 additions and 89 deletions

View File

@@ -12,7 +12,7 @@ import { WaFocusEvent } from '../../events/focus.js';
import { WaInputEvent } from '../../events/input.js';
import { watch } from '../../internal/watch.js';
import { WebAwesomeFormAssociatedElement } from '../../internal/webawesome-element.js';
import formControlStyles from '../../styles/form-control.styles.js';
import formControlStyles from '../../styles/shadow/form-control.css';
import styles from './checkbox.css';
import type { PropertyValues } from 'lit';

View File

@@ -22,7 +22,7 @@ import { WaInputEvent } from '../../events/input.js';
import { WaInvalidEvent } from '../../events/invalid.js';
import { watch } from '../../internal/watch.js';
import { WebAwesomeFormAssociatedElement } from '../../internal/webawesome-element.js';
import formControlStyles from '../../styles/form-control.styles.js';
import formControlStyles from '../../styles/shadow/form-control.css';
import styles from './color-picker.css';
import type { PropertyValues } from 'lit';
import type WaDropdown from '../dropdown/dropdown.js';

View File

@@ -14,7 +14,7 @@ import { WaFocusEvent } from '../../events/focus.js';
import { WaInputEvent } from '../../events/input.js';
import { watch } from '../../internal/watch.js';
import { WebAwesomeFormAssociatedElement } from '../../internal/webawesome-element.js';
import formControlStyles from '../../styles/form-control.styles.js';
import formControlStyles from '../../styles/shadow/form-control.css';
import styles from './input.css';
import type WaButton from '../button/button.js';

View File

@@ -10,7 +10,7 @@ import { WaChangeEvent } from '../../events/change.js';
import { WaInputEvent } from '../../events/input.js';
import { watch } from '../../internal/watch.js';
import { WebAwesomeFormAssociatedElement } from '../../internal/webawesome-element.js';
import formControlStyles from '../../styles/form-control.styles.js';
import formControlStyles from '../../styles/shadow/form-control.css';
import styles from './radio-group.css';
import type WaRadio from '../radio/radio.js';
import type WaRadioButton from '../radio-button/radio-button.js';

View File

@@ -12,7 +12,7 @@ import { WaFocusEvent } from '../../events/focus.js';
import { WaInputEvent } from '../../events/input.js';
import { watch } from '../../internal/watch.js';
import { WebAwesomeFormAssociatedElement } from '../../internal/webawesome-element.js';
import formControlStyles from '../../styles/form-control.styles.js';
import formControlStyles from '../../styles/shadow/form-control.css';
import styles from './range.css';
/**

View File

@@ -22,7 +22,7 @@ import { waitForEvent } from '../../internal/event.js';
import { WaShowEvent } from '../../events/show.js';
import { watch } from '../../internal/watch.js';
import { WebAwesomeFormAssociatedElement } from '../../internal/webawesome-element.js';
import formControlStyles from '../../styles/form-control.styles.js';
import formControlStyles from '../../styles/shadow/form-control.css';
import styles from './select.css';
import type { TemplateResult } from 'lit';
import type { WaRemoveEvent } from '../../events/remove.js';

View File

@@ -11,7 +11,7 @@ import { WaFocusEvent } from '../../events/focus.js';
import { WaInputEvent } from '../../events/input.js';
import { watch } from '../../internal/watch.js';
import { WebAwesomeFormAssociatedElement } from '../../internal/webawesome-element.js';
import formControlStyles from '../../styles/form-control.styles.js';
import formControlStyles from '../../styles/shadow/form-control.css';
import styles from './switch.css';
import type { PropertyValues } from 'lit';

View File

@@ -11,7 +11,7 @@ import { WaFocusEvent } from '../../events/focus.js';
import { WaInputEvent } from '../../events/input.js';
import { watch } from '../../internal/watch.js';
import { WebAwesomeFormAssociatedElement } from '../../internal/webawesome-element.js';
import formControlStyles from '../../styles/form-control.styles.js';
import formControlStyles from '../../styles/shadow/form-control.css';
import styles from './textarea.css';
/**

View File

@@ -2,7 +2,7 @@ import { CustomErrorValidator } from './validators/custom-error-validator.js';
import { isServer, LitElement, unsafeCSS } from 'lit';
import { property } from 'lit/decorators.js';
import { WaInvalidEvent } from '../events/invalid.js';
import componentStyles from '../styles/component.styles.js';
import componentStyles from '../styles/shadow/component.css';
import type { CSSResult, CSSResultGroup, PropertyValues } from 'lit';
export default class WebAwesomeElement extends LitElement {
@@ -26,9 +26,11 @@ export default class WebAwesomeElement extends LitElement {
: [];
// Convert any string styles to Lits CSSResult
const shadowStyles = shadowStyle.map(style => (typeof style === 'string' ? unsafeCSS(style) : style));
const shadowStyles = [componentStyles, ...shadowStyle].map(style =>
typeof style === 'string' ? unsafeCSS(style) : style
);
return [componentStyles, ...shadowStyles];
return shadowStyles;
}
@property({ type: Boolean, reflect: true, attribute: 'did-ssr' }) didSSR = isServer || Boolean(this.shadowRoot);

View File

@@ -1,17 +0,0 @@
import { css } from 'lit';
export default css`
:host {
box-sizing: border-box !important;
}
:host *,
:host *::before,
:host *::after {
box-sizing: inherit !important;
}
[hidden] {
display: none !important;
}
`;

View File

@@ -1,61 +0,0 @@
import { css } from 'lit';
export default css`
.form-control .form-control__label {
display: none;
}
.form-control .form-control__help-text {
display: none;
}
/* Label */
.form-control--has-label .form-control__label {
display: inline-block;
color: var(--wa-form-control-label-color);
font-weight: var(--wa-form-control-label-font-weight);
line-height: var(--wa-form-control-label-line-height);
margin-bottom: var(--wa-space-3xs);
}
.form-control--has-label.form-control--small .form-control__label {
font-size: var(--wa-font-size-s);
}
.form-control--has-label.form-control--medium .form-control__label {
font-size: var(--wa-font-size-m);
}
.form-control--has-label.form-control--large .form-control__label {
font-size: var(--wa-font-size-l);
}
:host([required]) .form-control--has-label .form-control__label::after {
content: var(--wa-form-control-required-content);
margin-inline-start: var(--wa-form-control-required-content-offset);
color: var(--wa-form-control-required-content-color);
}
/* Help text */
.form-control--has-help-text .form-control__help-text {
display: block;
color: var(--wa-color-text-quiet);
margin-top: var(--wa-space-3xs);
}
.form-control--has-help-text.form-control--small .form-control__help-text {
font-size: var(--wa-font-size-xs);
}
.form-control--has-help-text.form-control--medium .form-control__help-text {
font-size: var(--wa-font-size-s);
}
.form-control--has-help-text.form-control--large .form-control__help-text {
font-size: var(--wa-font-size-m);
}
.form-control--has-help-text.form-control--radio-group .form-control__help-text {
margin-top: var(--wa-space-2xs);
}
`;

View File

@@ -0,0 +1,13 @@
:host {
box-sizing: border-box !important;
}
:host *,
:host *::before,
:host *::after {
box-sizing: inherit !important;
}
[hidden] {
display: none !important;
}

View File

@@ -0,0 +1,57 @@
.form-control .form-control__label {
display: none;
}
.form-control .form-control__help-text {
display: none;
}
/* Label */
.form-control--has-label .form-control__label {
display: inline-block;
color: var(--wa-form-control-label-color);
font-weight: var(--wa-form-control-label-font-weight);
line-height: var(--wa-form-control-label-line-height);
margin-bottom: var(--wa-space-3xs);
}
.form-control--has-label.form-control--small .form-control__label {
font-size: var(--wa-font-size-s);
}
.form-control--has-label.form-control--medium .form-control__label {
font-size: var(--wa-font-size-m);
}
.form-control--has-label.form-control--large .form-control__label {
font-size: var(--wa-font-size-l);
}
:host([required]) .form-control--has-label .form-control__label::after {
content: var(--wa-form-control-required-content);
margin-inline-start: var(--wa-form-control-required-content-offset);
color: var(--wa-form-control-required-content-color);
}
/* Help text */
.form-control--has-help-text .form-control__help-text {
display: block;
color: var(--wa-color-text-quiet);
margin-top: var(--wa-space-3xs);
}
.form-control--has-help-text.form-control--small .form-control__help-text {
font-size: var(--wa-font-size-xs);
}
.form-control--has-help-text.form-control--medium .form-control__help-text {
font-size: var(--wa-font-size-s);
}
.form-control--has-help-text.form-control--large .form-control__help-text {
font-size: var(--wa-font-size-m);
}
.form-control--has-help-text.form-control--radio-group .form-control__help-text {
margin-top: var(--wa-space-2xs);
}