@redvars/peacock 3.2.6 → 3.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/BaseButton.js +1 -1
- package/dist/assets/components.css +2 -0
- package/dist/assets/components.css.map +1 -0
- package/dist/assets/styles.css +2 -0
- package/dist/assets/styles.css.map +1 -0
- package/dist/avatar.js +1 -1
- package/dist/avatar.js.map +1 -1
- package/dist/custom-elements-jsdocs.json +4 -4
- package/dist/custom-elements.json +268 -154
- package/dist/divider.js +1 -1
- package/dist/field.js +1 -1
- package/dist/icon.js +1 -1
- package/dist/index.js +2 -2
- package/dist/peacock-loader.js +46 -500
- package/dist/peacock-loader.js.map +1 -1
- package/dist/src/CssLoader.d.ts +5 -0
- package/dist/src/avatar/avatar.d.ts +1 -1
- package/dist/src/button/button/button.d.ts +1 -1
- package/dist/{switch-CC-S5fbc.js → switch-DqxIiVsB.js} +3 -3
- package/dist/switch-DqxIiVsB.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/{utils.js → utils-DGMeCC48.js} +2 -6
- package/dist/utils-DGMeCC48.js.map +1 -0
- package/package.json +11 -5
- package/readme.md +1 -0
- package/scss/components.scss +3 -0
- package/scss/styles.scss +4 -0
- package/src/CssLoader.ts +66 -0
- package/src/avatar/avatar.ts +1 -1
- package/src/button/button/button.ts +1 -1
- package/src/peacock-loader.ts +14 -9
- package/dist/switch-CC-S5fbc.js.map +0 -1
- package/dist/utils.js.map +0 -1
- /package/{dist/assets/styles → scss}/tokens.css +0 -0
package/src/CssLoader.ts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
const sheetCache = new Map<string, CSSStyleSheet>();
|
|
2
|
+
|
|
3
|
+
async function loadCSS(
|
|
4
|
+
url: string,
|
|
5
|
+
options: any = {}
|
|
6
|
+
): Promise<CSSStyleSheet> {
|
|
7
|
+
const {
|
|
8
|
+
priority = "high",
|
|
9
|
+
cache = "force-cache",
|
|
10
|
+
media = "all",
|
|
11
|
+
} = options;
|
|
12
|
+
|
|
13
|
+
// Return cached sheet immediately
|
|
14
|
+
if (sheetCache.has(url)) {
|
|
15
|
+
const cached = sheetCache.get(url)!;
|
|
16
|
+
if (!document.adoptedStyleSheets.includes(cached)) {
|
|
17
|
+
document.adoptedStyleSheets = [...document.adoptedStyleSheets, cached];
|
|
18
|
+
}
|
|
19
|
+
return cached;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const response = await fetch(url, {
|
|
23
|
+
cache,
|
|
24
|
+
priority,
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
if (!response.ok) {
|
|
28
|
+
throw new Error(`Failed to load CSS [${response.status}]: ${url}`);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const css = await response.text();
|
|
32
|
+
const sheet = new CSSStyleSheet({ media });
|
|
33
|
+
|
|
34
|
+
sheet.replaceSync(css);
|
|
35
|
+
sheetCache.set(url, sheet);
|
|
36
|
+
document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];
|
|
37
|
+
|
|
38
|
+
return sheet;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
async function loadMultipleCSS(
|
|
42
|
+
urls: string[],
|
|
43
|
+
options: any = {}
|
|
44
|
+
): Promise<CSSStyleSheet[]> {
|
|
45
|
+
return Promise.all(urls.map((url) => loadCSS(url, options)));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function unloadCSS(url: string): boolean {
|
|
49
|
+
const sheet = sheetCache.get(url);
|
|
50
|
+
if (!sheet) return false;
|
|
51
|
+
|
|
52
|
+
document.adoptedStyleSheets = document.adoptedStyleSheets.filter(
|
|
53
|
+
(s) => s !== sheet
|
|
54
|
+
);
|
|
55
|
+
sheetCache.delete(url);
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function clearAllCSS(): void {
|
|
60
|
+
document.adoptedStyleSheets = document.adoptedStyleSheets.filter(
|
|
61
|
+
(s) => ![...sheetCache.values()].includes(s)
|
|
62
|
+
);
|
|
63
|
+
sheetCache.clear();
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export { loadCSS, loadMultipleCSS, unloadCSS, clearAllCSS };
|
package/src/avatar/avatar.ts
CHANGED
|
@@ -17,7 +17,7 @@ import styles from './avatar.scss';
|
|
|
17
17
|
*
|
|
18
18
|
* @example
|
|
19
19
|
* ```html
|
|
20
|
-
* <base-avatar name="Shivaji Varma" src="https://peacock.redvars.com/assets/img/avatar.webp" style='--avatar-size: 4rem'></base-avatar>
|
|
20
|
+
* <base-avatar name="Shivaji Varma" src="https://peacock.redvars.com/assets/img/avatar.xs.webp" style='--avatar-size: 4rem'></base-avatar>
|
|
21
21
|
* ```
|
|
22
22
|
*
|
|
23
23
|
* @tags display
|
|
@@ -42,7 +42,7 @@ import { BaseButton } from '../BaseButton.js';
|
|
|
42
42
|
* @cssprop --neo-button-container-color: Color of the neo button container.
|
|
43
43
|
* @cssprop --neo-button-label-text-color: Text color of the neo button label.
|
|
44
44
|
*
|
|
45
|
-
* @fires {
|
|
45
|
+
* @fires {MouseEvent} click - Dispatched when the button is clicked.
|
|
46
46
|
*
|
|
47
47
|
* @example
|
|
48
48
|
* ```html
|
package/src/peacock-loader.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
// Eager loaded
|
|
2
|
-
import cssComponentsStyleSheet from '../assets/styles/tokens.css';
|
|
3
2
|
|
|
4
3
|
import { Elevation } from './elevation/elevation.js';
|
|
5
4
|
import { FocusRing } from './focus-ring/focus-ring.js';
|
|
@@ -42,8 +41,13 @@ import { EmptyState } from './empty-state/empty-state.js';
|
|
|
42
41
|
import { Container } from './container/container.js';
|
|
43
42
|
|
|
44
43
|
import { LoaderConfig, LoaderUtils } from './LoaderUtils.js';
|
|
45
|
-
import
|
|
46
|
-
|
|
44
|
+
import { loadCSS } from './CssLoader.js';
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
const distDirectory = `${import.meta.url}/..`;
|
|
48
|
+
await loadCSS(`${distDirectory }/assets/styles.css`);
|
|
49
|
+
|
|
50
|
+
/*
|
|
47
51
|
import tooltipStyles from './popover/tooltip.css-component.scss';
|
|
48
52
|
|
|
49
53
|
function buildSheet(styleSheet: any) {
|
|
@@ -54,13 +58,14 @@ function buildSheet(styleSheet: any) {
|
|
|
54
58
|
}
|
|
55
59
|
|
|
56
60
|
const styleSheets = [
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
61
|
+
// buildSheet(cssComponentsStyleSheet),
|
|
62
|
+
// buildSheet(linkStyles),
|
|
63
|
+
// buildSheet(textStylesheet),
|
|
60
64
|
buildSheet(tooltipStyles),
|
|
61
65
|
];
|
|
62
66
|
|
|
63
67
|
document.adoptedStyleSheets = styleSheets;
|
|
68
|
+
*/
|
|
64
69
|
|
|
65
70
|
const loaderConfig: LoaderConfig = {
|
|
66
71
|
components: {
|
|
@@ -93,7 +98,7 @@ const loaderConfig: LoaderConfig = {
|
|
|
93
98
|
CustomElementClass: Elevation,
|
|
94
99
|
},
|
|
95
100
|
'base-clock': {
|
|
96
|
-
importPath:
|
|
101
|
+
importPath: `${distDirectory}/clock.js`,
|
|
97
102
|
},
|
|
98
103
|
'base-ripple': {
|
|
99
104
|
CustomElementClass: Ripple,
|
|
@@ -144,10 +149,10 @@ const loaderConfig: LoaderConfig = {
|
|
|
144
149
|
CustomElementClass: Tooltip,
|
|
145
150
|
},
|
|
146
151
|
'number-counter': {
|
|
147
|
-
importPath:
|
|
152
|
+
importPath: `${distDirectory}/number-counter.js`,
|
|
148
153
|
},
|
|
149
154
|
'code-highlighter': {
|
|
150
|
-
importPath:
|
|
155
|
+
importPath: `${distDirectory}/code-highlighter.js`,
|
|
151
156
|
},
|
|
152
157
|
'base-breadcrumb': {
|
|
153
158
|
CustomElementClass: Breadcrumb,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"switch-CC-S5fbc.js","sources":["../../src/button/button/button.ts","../../src/button/icon-button/icon-button.ts","../../src/progress/linear-progress/linear-progress.ts","../../src/progress/circular-progress/circular-progress.ts","../../src/input/input.ts","../../src/number-field/number-field.ts","../../src/date-picker/date-picker.ts","../../src/time-picker/time-picker.ts","../../src/textarea/textarea.ts","../../src/switch/switch.ts"],"sourcesContent":["import { html, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport styles from './button.scss';\nimport colorStyles from './button-colors.scss';\nimport sizeStyles from './button-sizes.scss';\nimport { observerSlotChangesWithCallback, throttle } from '../../utils.js';\nimport { spread } from '../../spread.js';\nimport { BaseButton } from '../BaseButton.js';\n\n/**\n * @label Button\n * @tag base-button\n * @rawTag button\n *\n * @summary Buttons help people initiate actions, from sending an email, to sharing a document, to liking a post.\n * @overview\n * <p>Buttons are clickable elements that are used to trigger actions. They communicate calls to action to the user and allow users to interact with pages in a variety of ways. Button labels express what action will occur when the user interacts with it.</p>\n *\n * @cssprop --button-container-shape: Defines the border radius of the button container shape.\n *\n * @cssprop --button-container-shape-start-start: Defines the start position of the button container shape.\n * @cssprop --button-container-shape-start-end: Defines the end position of the button container shape.\n * @cssprop --button-container-shape-end-start: Defines the start position of the button container shape.\n * @cssprop --button-container-shape-end-end: Defines the end position of the button container shape.\n *\n *\n * @cssprop --filled-button-container-color: Color of the filled button container.\n * @cssprop --filled-button-label-text-color: Text color of the filled button label.\n *\n * @cssprop --outlined-button-container-color: Color of the outlined button container.\n * @cssprop --outlined-button-label-text-color: Text color of the outlined button label.\n *\n * @cssprop --text-button-label-text-color: Text color of the text button label.\n *\n * @cssprop --tonal-button-container-color: Color of the tonal button container.\n * @cssprop --tonal-button-label-text-color: Text color of the tonal button label.\n *\n * @cssprop --elevated-button-container-color: Color of the elevated button container.\n * @cssprop --elevated-button-label-text-color: Text color of the elevated button label.\n *\n * @cssprop --neo-button-container-color: Color of the neo button container.\n * @cssprop --neo-button-label-text-color: Text color of the neo button label.\n *\n * @fires {CustomEvent} button:click - Dispatched when the button is clicked.\n *\n * @example\n * ```html\n * <base-button>Button</base-button>\n * ```\n * @tags display\n */\nexport class Button extends BaseButton {\n static override styles = [styles, colorStyles, sizeStyles];\n\n #tabindex?: number = 0;\n\n /**\n * Icon alignment.\n * Possible values are `\"start\"`, `\"end\"`. Defaults to `\"end\"`.\n */\n @property({ attribute: 'icon-align' })\n iconAlign: 'start' | 'end' = 'end';\n\n @state()\n private slotHasContent = false;\n\n override firstUpdated() {\n this.__dispatchClickWithThrottle = throttle(\n this.__dispatchClick,\n this.throttleDelay,\n );\n observerSlotChangesWithCallback(\n this.renderRoot.querySelector('slot'),\n hasContent => {\n this.slotHasContent = hasContent;\n this.requestUpdate();\n },\n );\n\n this.__convertTypeToVariantAndColor();\n }\n\n override render() {\n const isLink = this.__isLink();\n\n const cssClasses = {\n button: true,\n 'button-element': true,\n [`size-${this.size}`]: true,\n [`variant-${this.variant}`]: true,\n [`color-${this.color}`]: true,\n disabled: this.disabled || this.softDisabled,\n pressed: this.isPressed,\n 'has-content': this.slotHasContent,\n 'show-skeleton': this.skeleton,\n [`icon-align-${this.iconAlign}`]: true,\n };\n\n if (!isLink) {\n return html`<button\n class=${classMap(cssClasses)}\n id=\"button\"\n tabindex=${this.#tabindex}\n type=${this.htmlType}\n @mousedown=${this.__handlePress}\n @keydown=${this.__handlePress}\n @keyup=${this.__handlePress}\n ?aria-describedby=${this.__getDisabledReasonID()}\n aria-disabled=${`${this.disabled || this.softDisabled}`}\n ?disabled=${this.disabled}\n ${spread(this.configAria)}\n >\n ${this.renderButtonContent()}\n </button>\n ${this.__renderTooltip()}`;\n }\n return html`<a\n class=${classMap(cssClasses)}\n id=\"button\"\n tabindex=${this.#tabindex}\n href=${this.href}\n target=${this.target}\n @mousedown=${this.__handlePress}\n @keydown=${this.__handlePress}\n @keyup=${this.__handlePress}\n role=\"button\"\n ?aria-describedby=${this.__getDisabledReasonID()}\n aria-disabled=${`${this.disabled}`}\n ${spread(this.configAria)}\n >\n ${this.renderButtonContent()}\n </a>\n ${this.__renderTooltip()}`;\n }\n\n renderButtonContent() {\n return html`\n <focus-ring class=\"focus-ring\" .control=${this} element=\"buttonElement\"></focus-ring>\n <base-elevation class=\"elevation\"></base-elevation>\n <div class=\"neo-background\"></div>\n <div class=\"background\"></div>\n <div class=\"outline\"></div>\n <base-ripple class=\"ripple\"></base-ripple>\n <base-skeleton class=\"skeleton\"></base-skeleton>\n\n <div class=\"button-content\">\n <div class=\"slot-container\">\n <slot></slot>\n </div>\n\n <slot name=\"icon\"></slot>\n </div>\n\n ${this.__renderDisabledReason()}\n `;\n }\n}\n","import { html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport styles from '../button/button.scss';\nimport colorStyles from '../button/button-colors.scss';\nimport sizeStyles from './icon-button-sizes.scss';\nimport { spread } from '../../spread.js';\nimport { BaseButton } from '../BaseButton.js';\nimport { IconProvider } from '../../icon/icon.js';\nimport { throttle } from '../../utils.js';\n\n/**\n * @label Icon Button\n * @tag icon-button\n * @rawTag icon-button\n *\n * @summary Icon buttons allow users to take actions, and make choices, with a single tap.\n *\n * @overview\n * <p>Icon buttons are clickable elements that are used to trigger actions. They communicate calls to action to the user and allow users to interact with pages in a variety of ways. IconButton labels express what action will occur when the user interacts with it.</p>\n *\n * @cssprop --button-container-shape: Defines the border radius of the button container shape.\n *\n * @cssprop --button-container-shape-start-start: Defines the start position of the button container shape.\n * @cssprop --button-container-shape-start-end: Defines the end position of the button container shape.\n * @cssprop --button-container-shape-end-start: Defines the start position of the button container shape.\n * @cssprop --button-container-shape-end-end: Defines the end position of the button container shape.\n *\n *\n * @cssprop --filled-button-container-color: Color of the filled button container.\n * @cssprop --filled-button-label-text-color: Text color of the filled button label.\n *\n * @cssprop --outlined-button-container-color: Color of the outlined button container.\n * @cssprop --outlined-button-label-text-color: Text color of the outlined button label.\n *\n * @cssprop --text-button-label-text-color: Text color of the text button label.\n *\n * @cssprop --tonal-button-container-color: Color of the tonal button container.\n * @cssprop --tonal-button-label-text-color: Text color of the tonal button label.\n *\n * @cssprop --elevated-button-container-color: Color of the elevated button container.\n * @cssprop --elevated-button-label-text-color: Text color of the elevated button label.\n *\n * @cssprop --neo-button-container-color: Color of the neo button container.\n * @cssprop --neo-button-label-text-color: Text color of the neo button label.\n *\n * @fires {CustomEvent} button:click - Dispatched when the button is clicked.\n *\n * @example\n * ```html\n * <icon-button name=\"home\"></icon-button>\n * ```\n * @tags display\n */\nexport class IconButton extends BaseButton {\n static override styles = [styles, colorStyles, sizeStyles];\n\n #id = crypto.randomUUID();\n\n #tabindex?: number = 0;\n\n @property({ type: String, reflect: true }) name?: string;\n\n @property({ type: String, reflect: true }) src?: string;\n\n @property({ type: String }) provider: IconProvider = 'material-symbols';\n\n override firstUpdated() {\n this.__dispatchClickWithThrottle = throttle(\n this.__dispatchClick,\n this.throttleDelay,\n );\n this.__convertTypeToVariantAndColor();\n }\n\n override render() {\n const isLink = this.__isLink();\n\n const cssClasses = {\n button: true,\n 'button-element': true,\n [`size-${this.size}`]: true,\n [`variant-${this.variant}`]: true,\n [`color-${this.color}`]: true,\n disabled: this.disabled || this.softDisabled,\n pressed: this.isPressed,\n skeleton: this.skeleton,\n };\n\n if (!isLink) {\n return html`<button\n class=${classMap(cssClasses)}\n id=\"button\"\n tabindex=${this.#tabindex}\n type=${this.htmlType}\n @click=${this.__dispatchClickWithThrottle}\n @mousedown=${this.__handlePress}\n @keydown=${this.__handlePress}\n @keyup=${this.__handlePress}\n ?aria-describedby=${(this.disabled || this.softDisabled) &&\n this.disabledReason\n ? `disabled-reason-${this.#id}`\n : null}\n aria-disabled=${`${this.disabled || this.softDisabled}`}\n ?disabled=${this.disabled}\n ${spread(this.configAria)}\n >\n ${this.renderButtonContent()}\n </button>\n ${this.__renderTooltip()}`;\n }\n return html`<a\n class=${classMap(cssClasses)}\n id=\"button\"\n tabindex=${this.#tabindex}\n href=${this.href}\n target=${this.target}\n @click=${this.__dispatchClickWithThrottle}\n @mousedown=${this.__handlePress}\n @keydown=${this.__handlePress}\n @keyup=${this.__handlePress}\n role=\"button\"\n aria-describedby=${this.disabled && this.disabledReason\n ? `disabled-reason-${this.#id}`\n : null}\n aria-disabled=${`${this.disabled}`}\n ${spread(this.configAria)}\n >\n ${this.renderButtonContent()}\n </a>\n ${this.__renderTooltip()}`;\n }\n\n renderButtonContent() {\n return html`\n <focus-ring class=\"focus-ring\" .control=${this} element=\"buttonElement\"></focus-ring>\n <base-elevation class=\"elevation\"></base-elevation>\n <div class=\"neo-background\"></div>\n <div class=\"background\"></div>\n <div class=\"outline\"></div>\n <base-ripple class=\"ripple\"></base-ripple>\n <base-skeleton class=\"skeleton\"></base-skeleton>\n\n <div class=\"button-content\">\n <base-icon\n name=${this.name}\n src=${this.src}\n provider=${this.provider}\n ></base-icon>\n </div>\n\n ${this.__renderDisabledReason()}\n `;\n }\n}\n","import { html } from 'lit';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport styles from './linear-progress.scss';\nimport { BaseProgress } from '../base-progress.js';\n\n/**\n * @label Linear Progress\n * @tag linear-progress\n * @rawTag linear-progress\n *\n * @summary A linear progress indicator is a visual representation of progress toward a specific goal.\n *\n * @example\n * ```html\n * <linear-progress value=\"30\" style=\"width:10rem\"></linear-progress>\n * ```\n */\nexport class LinearProgress extends BaseProgress {\n // Lit components use static styles for better performance\n static styles = [styles];\n\n render() {\n return html`\n <div\n class=\"${classMap({\n 'linear-progress': true,\n indeterminate: this.indeterminate,\n inline: this.inline,\n })}\"\n >\n ${this.label\n ? html`<div class=\"progress-header\">\n <label class=\"progress-label\">${this.label}</label>\n </div>`\n : ''}\n\n <div class=\"progress-body\">\n <div\n class=\"linear-progress-container\"\n title=${this.label}\n ?aria-valuenow=\"${this.__getPercentageValue()}\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n role=\"progressbar\"\n >\n <div class=\"track track-start\"></div>\n <div\n class=\"active-indicator\"\n style=\"${styleMap({\n width: `${this.__getPercentageValue()}%`,\n })}\"\n ></div>\n <div class=\"track track-end\"></div>\n </div>\n\n ${this.helperText\n ? html`<div class=\"progress-helper\">${this.helperText}</div>`\n : ''}\n </div>\n </div>\n `;\n }\n}\n","import { html } from 'lit';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport styles from './circular-progress.scss';\nimport { BaseProgress } from '../base-progress.js';\n\n/**\n * @label Circular Progress\n * @tag circular-progress\n * @rawTag circular-progress\n *\n * @summary A circular progress indicator is a visual representation of progress toward a specific goal.\n *\n * @example\n * ```html\n * <circular-progress value=\"30\"></circular-progress>\n * ```\n */\nexport class CircularProgress extends BaseProgress {\n // Lit components use static styles for better performance\n static styles = [styles];\n\n render() {\n const percentage = this.__getPercentageValue();\n // Radius of 18 with stroke 4 fits nicely in a 40x40 viewBox\n const radius = 6;\n const circumference = 2 * Math.PI * radius;\n const offset = circumference - (percentage / 100) * circumference;\n\n return html`\n <div\n class=\"${classMap({\n 'circular-progress': true,\n indeterminate: this.indeterminate,\n inline: this.inline,\n })}\"\n title=${this.label}\n role=\"progressbar\"\n aria-valuenow=\"${this.indeterminate ? undefined : percentage}\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n <div class=\"circular-progress-container\">\n <svg viewBox=\"0 0 16 16\">\n <circle class=\"track\" cx=\"8\" cy=\"8\" r=\"6\"></circle>\n <circle\n class=\"active-indicator\"\n cx=\"8\"\n cy=\"8\"\n r=\"6\"\n style=\"${styleMap({\n strokeDasharray: `${circumference}`,\n strokeDashoffset: this.indeterminate ? undefined : `${offset}`,\n })}\"\n ></circle>\n </svg>\n </div>\n\n <div class=\"progress-footer\">\n ${this.label\n ? html`<div class=\"progress-label\">${this.label}</div>`\n : ''}\n ${this.helperText\n ? html`<div class=\"progress-helper\">${this.helperText}</div>`\n : ''}\n </div>\n </div>\n `;\n }\n}\n","import { html, nothing } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport BaseInput from './BaseInput.js';\nimport styles from './input.scss';\nimport { spread } from '../spread.js';\nimport { redispatchEvent } from '../utils.js';\n\n/**\n * @label Input\n * @tag input-field\n * @rawTag input\n *\n * @summary The Input component is used to capture user input.\n *\n * @example\n * ```html\n * <input-field label=\"Name\" required placeholder=\"Enter your name\"></input-field>\n * ```\n */\nexport class Input extends BaseInput {\n static styles = [styles];\n\n @property({ type: String })\n value = '';\n\n @property({ type: String })\n name: string = '';\n\n @property({ type: String }) placeholder = '';\n\n @property({ type: String }) label = '';\n\n @property({ type: Boolean, reflect: true }) inline = false;\n\n @property({ type: String, reflect: true }) size: 'sm' | 'md' | 'lg' = 'md';\n\n @property({ type: String }) type: 'text' | 'password' | 'email' | 'tel' =\n 'text';\n\n @property({ type: String }) autocomplete: 'on' | 'off' = 'off';\n\n @property({ type: Object }) configAria: Record<string, string> = {};\n\n @property({ type: String })\n variant: 'filled' | 'outlined' | 'default' = 'default';\n\n /**\n * Helper text to display below the input.\n */\n @property({ type: String, attribute: 'helper-text' })\n helperText: string = '';\n\n @property({ type: Boolean })\n error: boolean = false;\n\n @property({ type: String, attribute: 'error-text' })\n errorText: string = '';\n\n @property({ type: Boolean })\n warning: boolean = false;\n\n @property({ type: String, attribute: 'warning-text' })\n warningText: string = '';\n\n @state()\n private focused = false;\n\n @state()\n private passwordVisible = false;\n\n /**\n * Returns true when the text field has been interacted with. Native\n * validation errors only display in response to user interactions.\n */\n @state() private dirty = false;\n\n @query('.input-element')\n private inputElement?: HTMLInputElement;\n\n private tabindex?: string;\n\n connectedCallback() {\n super.connectedCallback();\n this.handleInitialAttributes();\n }\n\n private handleInitialAttributes() {\n if (this.hasAttribute('tabindex')) {\n this.tabindex = this.getAttribute('tabindex') || undefined;\n this.removeAttribute('tabindex');\n }\n\n Array.from(this.attributes).forEach(attr => {\n if (attr.name.startsWith('aria-')) {\n this.configAria[attr.name] = attr.value;\n this.removeAttribute(attr.name);\n }\n });\n }\n\n private __handleInput(event: InputEvent) {\n this.dirty = true;\n this.value = (event.target as HTMLInputElement).value;\n }\n\n override focus() {\n this.inputElement?.focus();\n }\n\n override blur() {\n this.inputElement?.blur();\n }\n\n private __handleFocusChange() {\n // When calling focus() or reportValidity() during change, it's possible\n // for blur to be called after the new focus event. Rather than set\n // `this.focused` to true/false on focus/blur, we always set it to whether\n // or not the input itself is focused.\n this.focused = this.inputElement?.matches(':focus') ?? false;\n }\n\n private __redispatchEvent(event: Event) {\n redispatchEvent(this, event);\n }\n\n render() {\n const displayType =\n this.type === 'password' && this.passwordVisible ? 'text' : this.type;\n\n return html`\n <base-field\n ?required=${this.required}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?skeleton=${this.skeleton}\n helper-text=${this.helperText}\n ?error=${this.error}\n error-text=${this.errorText}\n ?warning=${this.warning}\n variant=${this.variant}\n ?populated=${!!this.value}\n warning-text=${this.warningText}\n label=${this.label}\n ?focused=${this.focused}\n .host=${this}\n class=\"input-wrapper\"\n >\n <slot name=\"start\" slot=\"field-start\"></slot>\n\n <input\n class=\"input input-element\"\n name=${this.name}\n type=${displayType}\n placeholder=${this.placeholder}\n autocomplete=${this.autocomplete}\n .value=${this.value}\n ?tabindex=${this.tabindex}\n ?readonly=${this.readonly}\n ?required=${this.required}\n ?disabled=${this.disabled}\n @input=${this.__handleInput}\n @change=${this.__redispatchEvent}\n @focus=${this.__handleFocusChange}\n @blur=${this.__handleFocusChange}\n ${spread(this.configAria)}\n />\n\n ${this.type === 'password'\n ? html`\n <pc-tooltip\n slot=\"field-end\"\n content=${this.passwordVisible\n ? 'Hide password'\n : 'Show password'}\n >\n <icon-button\n class=\"password-toggle\"\n variant=\"text\"\n name=${this.passwordVisible ? 'visibility_off' : 'visibility'}\n @click=${() => {\n this.passwordVisible = !this.passwordVisible;\n }}\n >\n </icon-button>\n </pc-tooltip>\n `\n : nothing}\n\n <slot name=\"end\" slot=\"field-end\"></slot>\n </base-field>\n `;\n }\n}\n","import { html, nothing } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport BaseInput from '../input/BaseInput.js';\nimport styles from './number-field.scss';\nimport { spread } from '../spread.js';\nimport { redispatchEvent } from '../utils.js';\n\n/**\n * @label Number Field\n * @tag number-field\n * @rawTag number\n *\n * @summary The Number Field component is used to capture numeric user input.\n *\n * @example\n * ```html\n * <number-field label=\"Age\" placeholder=\"Enter your age\"></number-field>\n * ```\n */\nexport class NumberField extends BaseInput {\n static styles = [styles];\n\n #id: string = crypto.randomUUID();\n\n @property({ type: Number })\n value?: number;\n\n @property({ type: String })\n name: string = '';\n\n @property({ type: String })\n placeholder = '';\n\n @property({ type: String })\n label = '';\n\n @property({ type: Boolean, reflect: true })\n inline = false;\n\n @property({ type: String, reflect: true })\n size: 'sm' | 'md' | 'lg' = 'md';\n\n @property({ type: Number })\n max?: number;\n\n @property({ type: Number })\n min?: number;\n\n @property({ type: Number })\n step?: number;\n\n @property({ type: String })\n autocomplete: 'on' | 'off' = 'off';\n\n @property({ type: Object })\n configAria: Record<string, string> = {};\n\n /**\n * Helper text to display below the input.\n */\n @property({ type: String, attribute: 'helper-text' })\n helperText: string = '';\n\n @property({ type: Boolean })\n error: boolean = false;\n\n @property({ type: String, attribute: 'error-text' })\n errorText: string = '';\n\n @property({ type: Boolean })\n warning: boolean = false;\n\n @property({ type: String, attribute: 'warning-text' })\n warningText: string = '';\n\n @property({ type: Boolean })\n stepper: boolean = false;\n\n @state()\n private focused = false;\n\n /**\n * Returns true when the text field has been interacted with. Native\n * validation errors only display in response to user interactions.\n */\n @state() private dirty = false;\n\n @query('.input-element')\n private inputElement?: HTMLInputElement;\n\n private tabindex?: string;\n\n connectedCallback() {\n super.connectedCallback();\n this.handleInitialAttributes();\n }\n\n private handleInitialAttributes() {\n if (this.hasAttribute('tabindex')) {\n this.tabindex = this.getAttribute('tabindex') || undefined;\n this.removeAttribute('tabindex');\n }\n\n Array.from(this.attributes).forEach(attr => {\n if (attr.name.startsWith('aria-')) {\n this.configAria[attr.name] = attr.value;\n this.removeAttribute(attr.name);\n }\n });\n }\n\n private __handleInput(event: InputEvent) {\n this.dirty = true;\n this.value = Number((event.target as HTMLInputElement).value);\n }\n\n override focus() {\n this.inputElement?.focus();\n }\n\n override blur() {\n this.inputElement?.blur();\n }\n\n private __handleFocusChange() {\n // When calling focus() or reportValidity() during change, it's possible\n // for blur to be called after the new focus event. Rather than set\n // `this.focused` to true/false on focus/blur, we always set it to whether\n // or not the input itself is focused.\n this.focused = this.inputElement?.matches(':focus') ?? false;\n }\n\n private __redispatchEvent(event: Event) {\n redispatchEvent(this, event);\n }\n\n private stepUp() {\n this.inputElement?.stepUp();\n }\n\n private stepDown() {\n this.inputElement?.stepDown();\n }\n\n render() {\n const classes = {\n 'input-wrapper': true,\n stepper: this.stepper,\n };\n\n return html`\n <base-field\n ?required=${this.required}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?skeleton=${this.skeleton}\n helper-text=${this.helperText}\n ?error=${this.error}\n error-text=${this.errorText}\n ?warning=${this.warning}\n warning-text=${this.warningText}\n label=${this.label}\n ?focused=${this.focused}\n .host=${this}\n class=${classMap(classes)}\n >\n ${this.stepper && !this.disabled\n ? html`<icon-button\n class=\"stepper\"\n name=\"remove\"\n variant=\"text\"\n slot=\"field-start\"\n @click=${this.stepDown}\n ></icon-button>`\n : nothing}\n\n <slot name=\"start\" slot=\"field-start\"></slot>\n\n <input\n class=\"input input-element\"\n name=${this.name}\n type=\"number\"\n placeholder=${this.placeholder}\n autocomplete=${this.autocomplete}\n .value=${this.value}\n ?tabindex=${this.tabindex}\n ?readonly=${this.readonly}\n ?required=${this.required}\n ?disabled=${this.disabled}\n min=${this.min}\n max=${this.max}\n step=${this.step}\n @input=${this.__handleInput}\n @change=${this.__redispatchEvent}\n @focus=${this.__handleFocusChange}\n @blur=${this.__handleFocusChange}\n ${spread(this.configAria)}\n />\n\n <slot name=\"end\" slot=\"field-end\"></slot>\n\n ${this.stepper && !this.disabled\n ? html`<icon-button\n class=\"stepper\"\n variant=\"text\"\n name=\"add\"\n slot=\"field-end\"\n @click=${this.stepUp}\n ></icon-button>`\n : nothing}\n </base-field>\n `;\n }\n}\n","import { html } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport BaseInput from '../input/BaseInput.js';\nimport styles from './date-picker.scss';\nimport { spread } from '../spread.js';\nimport { redispatchEvent } from '../utils.js';\n\n/**\n * @label Date Picker\n * @tag date-picker\n * @rawTag date-picker\n *\n * @summary The Date Picker component is used to capture date user input.\n *\n * @example\n * ```html\n * <date-picker label=\"Name\" required placeholder=\"Enter your name\"></date-picker>\n * ```\n */\nexport class DatePicker extends BaseInput {\n static styles = [styles];\n\n @property({ type: String })\n value = '';\n\n @property({ type: String })\n name: string = '';\n\n @property({ type: String }) placeholder = '';\n\n @property({ type: String }) label = '';\n\n @property({ type: Boolean, reflect: true }) inline = false;\n\n @property({ type: String, reflect: true }) size: 'sm' | 'md' | 'lg' = 'md';\n\n @property({ type: String }) autocomplete: 'on' | 'off' = 'off';\n\n @property({ type: Object }) configAria: Record<string, string> = {};\n\n @property({ type: String })\n variant: 'filled' | 'outlined' | 'default' = 'default';\n\n /**\n * Helper text to display below the input.\n */\n @property({ type: String, attribute: 'helper-text' })\n helperText: string = '';\n\n @property({ type: Boolean })\n error: boolean = false;\n\n @property({ type: String, attribute: 'error-text' })\n errorText: string = '';\n\n @property({ type: Boolean })\n warning: boolean = false;\n\n @property({ type: String, attribute: 'warning-text' })\n warningText: string = '';\n\n @state()\n private focused = false;\n\n @state()\n private passwordVisible = false;\n\n /**\n * Returns true when the text field has been interacted with. Native\n * validation errors only display in response to user interactions.\n */\n @state() private dirty = false;\n\n @query('.input-element')\n private inputElement?: HTMLInputElement;\n\n private tabindex?: string;\n\n connectedCallback() {\n super.connectedCallback();\n this.handleInitialAttributes();\n }\n\n private handleInitialAttributes() {\n if (this.hasAttribute('tabindex')) {\n this.tabindex = this.getAttribute('tabindex') || undefined;\n this.removeAttribute('tabindex');\n }\n\n Array.from(this.attributes).forEach(attr => {\n if (attr.name.startsWith('aria-')) {\n this.configAria[attr.name] = attr.value;\n this.removeAttribute(attr.name);\n }\n });\n }\n\n private __handleInput(event: InputEvent) {\n this.dirty = true;\n this.value = (event.target as HTMLInputElement).value;\n }\n\n override focus() {\n this.inputElement?.focus();\n }\n\n override blur() {\n this.inputElement?.blur();\n }\n\n private __handleFocusChange() {\n // When calling focus() or reportValidity() during change, it's possible\n // for blur to be called after the new focus event. Rather than set\n // `this.focused` to true/false on focus/blur, we always set it to whether\n // or not the input itself is focused.\n this.focused = this.inputElement?.matches(':focus') ?? false;\n }\n\n private __redispatchEvent(event: Event) {\n redispatchEvent(this, event);\n }\n\n render() {\n return html`\n <base-field\n ?required=${this.required}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?skeleton=${this.skeleton}\n helper-text=${this.helperText}\n ?error=${this.error}\n error-text=${this.errorText}\n ?warning=${this.warning}\n variant=${this.variant}\n ?populated=${!!this.value}\n warning-text=${this.warningText}\n label=${this.label}\n ?focused=${this.focused}\n .host=${this}\n class=\"input-wrapper\"\n >\n <slot name=\"start\" slot=\"field-start\"></slot>\n\n <input\n class=\"input input-element\"\n name=${this.name}\n type=\"date\"\n placeholder=${this.placeholder}\n autocomplete=${this.autocomplete}\n .value=${this.value}\n ?tabindex=${this.tabindex}\n ?readonly=${this.readonly}\n ?required=${this.required}\n ?disabled=${this.disabled}\n @input=${this.__handleInput}\n @change=${this.__redispatchEvent}\n @focus=${this.__handleFocusChange}\n @blur=${this.__handleFocusChange}\n ${spread(this.configAria)}\n />\n\n <slot name=\"end\" slot=\"field-end\"></slot>\n\n <icon-button\n slot=\"field-end\"\n color=\"secondary\"\n variant=\"text\"\n name=\"calendar_today\"\n ?disabled=${this.disabled}\n @click=${() => {\n setTimeout(() => {\n // @ts-ignore\n this.inputElement.showPicker();\n });\n }}\n >\n </icon-button>\n </base-field>\n `;\n }\n}\n","import { html } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport BaseInput from '../input/BaseInput.js';\nimport styles from './time-picker.scss';\nimport { spread } from '../spread.js';\nimport { redispatchEvent } from '../utils.js';\n\n/**\n * @label Time Picker\n * @tag time-picker\n * @rawTag time-picker\n *\n * @summary The Time Picker component is used to capture time user input.\n *\n * @example\n * ```html\n * <time-picker label=\"Name\" required placeholder=\"Enter your name\"></time-picker>\n * ```\n */\nexport class TimePicker extends BaseInput {\n static styles = [styles];\n\n @property({ type: String })\n value = '';\n\n @property({ type: String })\n name: string = '';\n\n @property({ type: String }) placeholder = '';\n\n @property({ type: String }) label = '';\n\n @property({ type: Boolean, reflect: true }) inline = false;\n\n @property({ type: String, reflect: true }) size: 'sm' | 'md' | 'lg' = 'md';\n\n @property({ type: String }) autocomplete: 'on' | 'off' = 'off';\n\n @property({ type: Object }) configAria: Record<string, string> = {};\n\n @property({ type: String })\n variant: 'filled' | 'outlined' | 'default' = 'default';\n\n /**\n * Helper text to display below the input.\n */\n @property({ type: String, attribute: 'helper-text' })\n helperText: string = '';\n\n @property({ type: Boolean })\n error: boolean = false;\n\n @property({ type: String, attribute: 'error-text' })\n errorText: string = '';\n\n @property({ type: Boolean })\n warning: boolean = false;\n\n @property({ type: String, attribute: 'warning-text' })\n warningText: string = '';\n\n @state()\n private focused = false;\n\n @state()\n private passwordVisible = false;\n\n /**\n * Returns true when the text field has been interacted with. Native\n * validation errors only display in response to user interactions.\n */\n @state() private dirty = false;\n\n @query('.input-element')\n private inputElement?: HTMLInputElement;\n\n private tabindex?: string;\n\n connectedCallback() {\n super.connectedCallback();\n this.handleInitialAttributes();\n }\n\n private handleInitialAttributes() {\n if (this.hasAttribute('tabindex')) {\n this.tabindex = this.getAttribute('tabindex') || undefined;\n this.removeAttribute('tabindex');\n }\n\n Array.from(this.attributes).forEach(attr => {\n if (attr.name.startsWith('aria-')) {\n this.configAria[attr.name] = attr.value;\n this.removeAttribute(attr.name);\n }\n });\n }\n\n private __handleInput(event: InputEvent) {\n this.dirty = true;\n this.value = (event.target as HTMLInputElement).value;\n }\n\n override focus() {\n this.inputElement?.focus();\n }\n\n override blur() {\n this.inputElement?.blur();\n }\n\n private __handleFocusChange() {\n // When calling focus() or reportValidity() during change, it's possible\n // for blur to be called after the new focus event. Rather than set\n // `this.focused` to true/false on focus/blur, we always set it to whether\n // or not the input itself is focused.\n this.focused = this.inputElement?.matches(':focus') ?? false;\n }\n\n private __redispatchEvent(event: Event) {\n redispatchEvent(this, event);\n }\n\n render() {\n return html`\n <base-field\n ?required=${this.required}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?skeleton=${this.skeleton}\n helper-text=${this.helperText}\n ?error=${this.error}\n error-text=${this.errorText}\n ?warning=${this.warning}\n variant=${this.variant}\n ?populated=${!!this.value}\n warning-text=${this.warningText}\n label=${this.label}\n ?focused=${this.focused}\n .host=${this}\n class=\"input-wrapper\"\n >\n <slot name=\"start\" slot=\"field-start\"></slot>\n\n <input\n class=\"input input-element\"\n name=${this.name}\n type=\"time\"\n placeholder=${this.placeholder}\n autocomplete=${this.autocomplete}\n .value=${this.value}\n ?tabindex=${this.tabindex}\n ?readonly=${this.readonly}\n ?required=${this.required}\n ?disabled=${this.disabled}\n @input=${this.__handleInput}\n @change=${this.__redispatchEvent}\n @focus=${this.__handleFocusChange}\n @blur=${this.__handleFocusChange}\n ${spread(this.configAria)}\n />\n\n <slot name=\"end\" slot=\"field-end\"></slot>\n\n <icon-button\n slot=\"field-end\"\n color=\"secondary\"\n variant=\"text\"\n name=\"calendar_today\"\n ?disabled=${this.disabled}\n @click=${() => {\n setTimeout(() => {\n // @ts-ignore\n this.inputElement.showPicker();\n });\n }}\n >\n </icon-button>\n </base-field>\n `;\n }\n}\n","import { html } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport BaseInput from '../input/BaseInput.js';\nimport styles from './textarea.scss';\nimport { spread } from '../spread.js';\nimport { redispatchEvent } from '../utils.js';\n\n/**\n * @label Textarea\n * @tag textarea-field\n * @rawTag textarea\n *\n * @summary The Textarea component is used to capture user input.\n *\n * @example\n * ```html\n * <textarea-field label=\"Name\" required placeholder=\"Enter your name\"></textarea-field>\n * ```\n */\nexport class Textarea extends BaseInput {\n static styles = [styles];\n\n @property({ type: String })\n value = '';\n\n @property({ type: String })\n name: string = '';\n\n @property({ type: String }) placeholder = '';\n\n @property({ type: String }) label = '';\n\n @property({ type: Boolean, reflect: true }) inline = false;\n\n @property({ type: String, reflect: true }) size: 'sm' | 'md' | 'lg' = 'md';\n\n @property({ type: String }) autocomplete: 'on' | 'off' = 'off';\n\n @property({ type: Object }) configAria: Record<string, string> = {};\n\n @property({ type: String })\n variant: 'filled' | 'outlined' | 'default' = 'default';\n\n /**\n * Helper text to display below the input.\n */\n @property({ type: String, attribute: 'helper-text' })\n helperText: string = '';\n\n @property({ type: Boolean })\n error: boolean = false;\n\n @property({ type: String, attribute: 'error-text' })\n errorText: string = '';\n\n @property({ type: Boolean })\n warning: boolean = false;\n\n @property({ type: String, attribute: 'warning-text' })\n warningText: string = '';\n\n @property({ type: String }) rows = '3';\n\n @state()\n private focused = false;\n\n @state()\n private passwordVisible = false;\n\n /**\n * Returns true when the text field has been interacted with. Native\n * validation errors only display in response to user interactions.\n */\n @state() private dirty = false;\n\n @query('.input-element')\n private inputElement?: HTMLInputElement;\n\n private tabindex?: string;\n\n connectedCallback() {\n super.connectedCallback();\n this.handleInitialAttributes();\n }\n\n private handleInitialAttributes() {\n if (this.hasAttribute('tabindex')) {\n this.tabindex = this.getAttribute('tabindex') || undefined;\n this.removeAttribute('tabindex');\n }\n\n Array.from(this.attributes).forEach(attr => {\n if (attr.name.startsWith('aria-')) {\n this.configAria[attr.name] = attr.value;\n this.removeAttribute(attr.name);\n }\n });\n }\n\n private __handleInput(event: InputEvent) {\n this.dirty = true;\n this.value = (event.target as HTMLInputElement).value;\n }\n\n override focus() {\n this.inputElement?.focus();\n }\n\n override blur() {\n this.inputElement?.blur();\n }\n\n private __handleFocusChange() {\n // When calling focus() or reportValidity() during change, it's possible\n // for blur to be called after the new focus event. Rather than set\n // `this.focused` to true/false on focus/blur, we always set it to whether\n // or not the input itself is focused.\n this.focused = this.inputElement?.matches(':focus') ?? false;\n }\n\n private __redispatchEvent(event: Event) {\n redispatchEvent(this, event);\n }\n\n render() {\n return html`\n <base-field\n ?required=${this.required}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?skeleton=${this.skeleton}\n helper-text=${this.helperText}\n ?error=${this.error}\n error-text=${this.errorText}\n ?warning=${this.warning}\n variant=${this.variant}\n ?populated=${!!this.value}\n warning-text=${this.warningText}\n label=${this.label}\n ?focused=${this.focused}\n .host=${this}\n class=\"input-wrapper textarea\"\n >\n <slot name=\"start\" slot=\"field-start\"></slot>\n\n <textarea\n class=\"input input-element\"\n rows=${this.rows}\n name=${this.name}\n placeholder=${this.placeholder}\n autocomplete=${this.autocomplete}\n .value=${this.value}\n ?tabindex=${this.tabindex}\n ?readonly=${this.readonly}\n ?required=${this.required}\n ?disabled=${this.disabled}\n @input=${this.__handleInput}\n @change=${this.__redispatchEvent}\n @focus=${this.__handleFocusChange}\n @blur=${this.__handleFocusChange}\n ${spread(this.configAria)}\n ></textarea>\n\n <slot name=\"end\" slot=\"field-end\"></slot>\n </base-field>\n `;\n }\n}\n","import { html, nothing } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { spread } from '../spread.js';\nimport styles from './switch.scss';\nimport BaseInput from '../input/BaseInput.js';\n\n/**\n * @label Switch\n * @tag base-switch\n * @rawTag switch\n *\n * @summary Captures boolean input with an on/off switch interaction.\n * @overview\n * <p>Toggles are used to enable or disable a single option. They provide immediate feedback about whether an option is active or inactive.</p>\n *\n * @cssprop --switch-track-color: Color of the switch track when checked.\n * @cssprop --switch-track-off-color: Color of the switch track when unchecked.\n * @cssprop --switch-width: Width of the switch track.\n * @cssprop --switch-height: Height of the switch track.\n * @cssprop --switch-handle-radius: Size of the switch handle.\n * @cssprop --switch-handle-color: Color of the switch handle.\n *\n * @fires {CustomEvent} change - Dispatched when the switch value changes.\n * @fires {CustomEvent} blur - Dispatched when the switch loses focus.\n * @fires {CustomEvent} focus - Dispatched when the switch receives focus.\n *\n * @example\n * ```html\n * <base-switch value=\"true\"></base-switch>\n * ```\n * @tags input, form\n */\nexport class Switch extends BaseInput {\n static styles = [styles];\n\n @property({ type: Boolean })\n value: boolean = false;\n\n /**\n * The input field name.\n */\n @property({ type: String })\n name: string = '';\n\n /**\n * The switch label.\n */\n @property({ type: String })\n label: string = '';\n\n /**\n * If true, the toggle has rounded corners. Defaults to `true`.\n */\n @property({ type: Boolean })\n rounded: boolean = true;\n\n /**\n * If true, required icon is shown. Defaults to `false`.\n */\n @property({ type: Boolean, reflect: true })\n required: boolean = false;\n\n /**\n * If true, the toggle is readonly. Defaults to `false`.\n */\n @property({ type: Boolean, reflect: true })\n readonly: boolean = false;\n\n /**\n * If true, the user cannot interact with the toggle. Defaults to `false`.\n */\n @property({ type: Boolean, reflect: true })\n disabled: boolean = false;\n\n @property({ type: Boolean, reflect: true, attribute: 'with-icon' })\n withIcon: boolean = false;\n\n /**\n * Configuration object for aria attributes.\n */\n @property({ type: Object })\n configAria: Record<string, string> = {};\n\n @state()\n private hasFocus = false;\n\n @state()\n private isActive = false;\n\n @state()\n private slotHasContent = false;\n\n @query('.track')\n private trackElement?: HTMLElement;\n\n @query('.input-native')\n private nativeElement?: HTMLInputElement;\n\n private tabindex?: string;\n\n connectedCallback() {\n super.connectedCallback();\n this.handleInitialAttributes();\n window.addEventListener('mouseup', this.windowMouseUp);\n window.addEventListener('keyup', this.windowKeyUp);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n window.removeEventListener('mouseup', this.windowMouseUp);\n window.removeEventListener('keyup', this.windowKeyUp);\n }\n\n firstUpdated() {\n this.slotHasContent = this.hasChildNodes();\n }\n\n private handleInitialAttributes() {\n if (this.hasAttribute('tabindex')) {\n this.tabindex = this.getAttribute('tabindex') || undefined;\n this.removeAttribute('tabindex');\n }\n\n Array.from(this.attributes).forEach(attr => {\n if (attr.name.startsWith('aria-')) {\n this.configAria[attr.name] = attr.value;\n this.removeAttribute(attr.name);\n }\n });\n }\n\n private windowMouseUp = () => {\n if (this.isActive) {\n this.isActive = false;\n }\n };\n\n private windowKeyUp = (evt: KeyboardEvent) => {\n if (this.isActive && evt.key === ' ') {\n this.isActive = false;\n }\n };\n\n private mouseDownHandler = () => {\n this.isActive = true;\n };\n\n private keyDownHandler = (evt: KeyboardEvent) => {\n if (evt.key === ' ') {\n evt.preventDefault();\n this.isActive = true;\n this.clickHandler(evt);\n }\n };\n\n private clickHandler = (ev: MouseEvent | KeyboardEvent) => {\n if (!this.disabled && !this.readonly) {\n this.value = !this.value;\n this.dispatchEvent(\n new CustomEvent('change', {\n detail: { value: this.value, originalEvent: ev },\n bubbles: true,\n composed: true,\n }),\n );\n this.trackElement?.focus();\n }\n };\n\n private blurHandler = (ev: FocusEvent) => {\n this.hasFocus = false;\n this.dispatchEvent(\n new CustomEvent('blur', {\n detail: ev,\n bubbles: true,\n composed: true,\n }),\n );\n };\n\n private focusHandler = (ev: FocusEvent) => {\n this.hasFocus = true;\n this.dispatchEvent(\n new CustomEvent('focus', {\n detail: ev,\n bubbles: true,\n composed: true,\n }),\n );\n };\n\n private handleKeyUp = (evt: KeyboardEvent) => {\n if (evt.key === 'Enter') {\n this.clickHandler(evt);\n }\n };\n\n /**\n * Sets focus on the toggle.\n */\n focus() {\n this.trackElement?.focus();\n }\n\n /**\n * Removes focus from the toggle.\n */\n blur() {\n this.trackElement?.blur();\n }\n\n __renderIcon() {\n if (this.withIcon) {\n if (this.value)\n return html`<base-icon name=\"check\" class=\"icon\"></base-icon>`;\n return html`<base-icon name=\"close\" class=\"icon\"></base-icon>`;\n }\n return nothing;\n }\n\n render() {\n const cssClasses = {\n switch: true,\n 'state-checked': this.value,\n 'has-focus': this.hasFocus,\n active: this.isActive,\n disabled: this.disabled,\n readonly: this.readonly,\n required: this.required,\n rounded: this.rounded,\n 'has-content': this.slotHasContent,\n };\n\n return html`\n <label class=${classMap(cssClasses)}>\n <div\n class=\"track\"\n tabindex=${this.tabindex || 0}\n @keyup=${this.handleKeyUp}\n @mousedown=${this.mouseDownHandler}\n @keydown=${this.keyDownHandler}\n @blur=${this.blurHandler}\n @focus=${this.focusHandler}\n role=\"checkbox\"\n aria-disabled=${this.disabled}\n aria-required=${this.required}\n aria-checked=${this.value}\n ${spread(this.configAria)}\n >\n <div class=\"handle\">${this.__renderIcon()}</div>\n </div>\n\n <input\n type=\"checkbox\"\n class=\"input-native\"\n name=${this.name}\n .checked=${this.value}\n aria-hidden=\"true\"\n ?required=${this.required}\n tabindex=\"-1\"\n @click=${this.clickHandler}\n />\n\n ${this.label\n ? html`<div class=\"label\">${this.label}</div>`\n : html`<div class=\"slot-container\"><slot></slot></div>`}\n </label>\n `;\n }\n}\n"],"names":["html","classMap","styles","colorStyles","sizeStyles","property","state","styleMap","nothing","query"],"mappings":"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"}
|
package/dist/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["export async function createCacheFetch(name: string) {\n let cache: Cache | null = null;\n // This map tracks requests currently being processed\n const inFlightRequests = new Map<string, Promise<string>>();\n\n try {\n cache = await window.caches.open(name);\n } catch (e) {\n console.warn('window.caches access not allowed');\n }\n\n return async (url: string): Promise<string> => {\n // 1. Check if we are already fetching this URL\n if (inFlightRequests.has(url)) {\n // Return the existing promise instead of starting a new one\n return inFlightRequests.get(url)!;\n }\n\n // 2. Create the main logic as a promise\n const fetchPromise = (async () => {\n const request = new Request(url);\n\n // Check Cache first\n if (cache) {\n const cachedResponse = await cache.match(request);\n if (cachedResponse) {\n return cachedResponse.text();\n }\n }\n\n // Prepare network request\n const urlObj = new URL(request.url);\n const isSameOrigin = urlObj.origin === window.location.origin;\n\n const response = await fetch(request.url, {\n method: 'GET',\n mode: isSameOrigin ? 'no-cors' : 'cors',\n credentials: isSameOrigin ? 'same-origin' : 'omit',\n });\n\n // --- Handle 404 ---\n if (response.status === 404) {\n console.error(`[Fetch Error] Resource not found (404): ${url}`);\n return ''; // Return empty string as requested\n }\n\n const result = await response.text();\n\n // Update Cache if applicable\n if (cache && response.status === 200) {\n // We clone the response logic by creating a new Response with the text body\n await cache.put(\n request,\n new Response(result, {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n }),\n );\n }\n\n return result;\n })();\n\n // 3. Store the promise in the map\n inFlightRequests.set(url, fetchPromise);\n\n try {\n // 4. Wait for the result\n return await fetchPromise;\n } finally {\n // 5. Clean up: Remove the promise from the map when done\n // This ensures subsequent calls (after this one finishes) can start fresh\n inFlightRequests.delete(url);\n }\n };\n}\n\n// Basic sanitization: remove <script>, <foreignObject>, event handler attributes (on*), and iframes\nexport function sanitizeSvg(rawSvg: string) {\n try {\n const parser = new DOMParser();\n const doc = parser.parseFromString(rawSvg, 'image/svg+xml');\n\n // remove script tags\n const scripts = Array.from(doc.querySelectorAll('script'));\n scripts.forEach(n => n.remove());\n\n // remove foreignObject and iframe-like elements\n const foreigns = Array.from(doc.querySelectorAll('foreignObject, iframe'));\n foreigns.forEach(n => n.remove());\n\n // remove event handler attributes like onload, onclick, etc.\n const all = Array.from(doc.querySelectorAll('*'));\n all.forEach(el => {\n const attrs = Array.from(el.attributes).filter(a => /^on/i.test(a.name));\n attrs.forEach(a => el.removeAttribute(a.name));\n });\n\n const el = doc.documentElement;\n if (!el) return '';\n\n // serialize back to string\n const serializer = new XMLSerializer();\n return serializer.serializeToString(el);\n } catch (e) {\n // parsing failed; fall back to empty content to avoid injecting unsafe content\n return '';\n }\n}\n\nfunction __hasMeaningfulContent(slotElement: any) {\n const nodes = slotElement.assignedNodes({ flatten: true });\n\n for (const node of nodes) {\n // If it's an element node, it has content\n if (node.nodeType === Node.ELEMENT_NODE) {\n return true;\n }\n // If it's a text node and contains non-whitespace characters, it has content\n if (\n node.nodeType === Node.TEXT_NODE &&\n node.textContent.trim().length > 0\n ) {\n return true;\n }\n }\n\n // No meaningful content found\n return false;\n}\n\nexport function observerSlotChangesWithCallback(\n slot: HTMLSlotElement | null,\n callback: (hasContent: boolean) => void,\n) {\n const observer = new MutationObserver(() => {\n callback(__hasMeaningfulContent(slot));\n });\n\n // Observe the elements currently assigned to the slot\n const assignedNodes = slot?.assignedNodes({ flatten: true }) || [];\n assignedNodes.forEach(node => {\n observer.observe(node, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n });\n });\n\n callback(__hasMeaningfulContent(slot));\n}\n\nexport function throttle(\n func: Function,\n delay: number,\n options = { leading: true, trailing: true },\n) {\n let timerId: any;\n let lastExec = 0;\n\n return function (...args: any[]) {\n // @ts-ignore\n const context = this;\n const now = Date.now();\n\n const shouldCallNow = options.leading && now - lastExec >= delay;\n\n if (shouldCallNow) {\n func.apply(context, args);\n lastExec = now;\n } else if (options.trailing && !timerId) {\n timerId = setTimeout(() => {\n func.apply(context, args);\n lastExec = Date.now();\n timerId = null;\n }, delay);\n }\n };\n}\n\n/**\n * Dispatches a click event to the given element that triggers a native action,\n * but is not composed and therefore is not seen outside the element.\n *\n * This is useful for responding to an external click event on the host element\n * that should trigger an internal action like a button click.\n *\n * Note, a helper is provided because setting this up correctly is a bit tricky.\n * In particular, calling `click` on an element creates a composed event, which\n * is not desirable, and a manually dispatched event must specifically be a\n * `MouseEvent` to trigger a native action.\n *\n * @example\n * hostClickListener = (event: MouseEvent) {\n * if (isActivationClick(event)) {\n * this.dispatchActivationClick(this.buttonElement);\n * }\n * }\n *\n */\nexport function dispatchActivationClick(element: HTMLElement) {\n const event = new MouseEvent('click', { bubbles: true });\n element.dispatchEvent(event);\n return event;\n}\n\n// Ignore events for one microtask only.\nlet isSquelchingEvents = false;\nasync function __squelchEventsForMicrotask() {\n isSquelchingEvents = true;\n // Need to pause for just one microtask.\n // tslint:disable-next-line\n await null;\n isSquelchingEvents = false;\n}\n\n// TODO(https://bugzilla.mozilla.org/show_bug.cgi?id=1804576)\n// Remove when Firefox bug is addressed.\nfunction __squelchEvent(event: Event) {\n const squelched = isSquelchingEvents;\n if (squelched) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n __squelchEventsForMicrotask();\n return squelched;\n}\n\n/**\n * Returns true if the click event should trigger an activation behavior. The\n * behavior is defined by the element and is whatever it should do when\n * clicked.\n *\n * Typically when an element needs to handle a click, the click is generated\n * from within the element and an event listener within the element implements\n * the needed behavior; however, it's possible to fire a click directly\n * at the element that the element should handle. This method helps\n * distinguish these \"external\" clicks.\n *\n * An \"external\" click can be triggered in a number of ways: via a click\n * on an associated label for a form associated element, calling\n * `element.click()`, or calling\n * `element.dispatchEvent(new MouseEvent('click', ...))`.\n *\n * Also works around Firefox issue\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1804576 by squelching\n * events for a microtask after called.\n *\n * @example\n * hostClickListener = (event: MouseEvent) {\n * if (isActivationClick(event)) {\n * this.dispatchActivationClick(this.buttonElement);\n * }\n * }\n *\n */\nexport function isActivationClick(event: Event) {\n // Event must start at the event target.\n if (event.currentTarget !== event.target) {\n return false;\n }\n // Event must not be retargeted from shadowRoot.\n if (event.composedPath()[0] !== event.target) {\n return false;\n }\n // Target must not be disabled; this should only occur for a synthetically\n // dispatched click.\n if ((event.target as EventTarget & { disabled: boolean }).disabled) {\n return false;\n }\n // This is an activation if the event should not be squelched.\n return !__squelchEvent(event);\n}\n\n/**\n * Re-dispatches an event from the provided element.\n *\n * This function is useful for forwarding non-composed events, such as `change`\n * events.\n *\n * @example\n * class MyInput extends LitElement {\n * render() {\n * return html`<input @change=${this.redispatchEvent}>`;\n * }\n *\n * protected redispatchEvent(event: Event) {\n * redispatchEvent(this, event);\n * }\n * }\n *\n * @param element The element to dispatch the event from.\n * @param event The event to re-dispatch.\n * @return Whether or not the event was dispatched (if cancelable).\n */\nexport function redispatchEvent(element: Element, event: Event) {\n // For bubbling events in SSR light DOM (or composed), stop their propagation\n // and dispatch the copy.\n if (event.bubbles && (!element.shadowRoot || event.composed)) {\n event.stopPropagation();\n }\n\n const copy = Reflect.construct(event.constructor, [event.type, event]);\n const dispatched = element.dispatchEvent(copy);\n if (!dispatched) {\n event.preventDefault();\n }\n\n return dispatched;\n}\n\nexport function isInViewport(element: HTMLElement) {\n const rect = element.getBoundingClientRect();\n return (\n rect.top !== 0 || rect.left !== 0 || rect.bottom !== 0 || rect.right !== 0\n );\n}\n"],"names":[],"mappings":"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"}
|
|
File without changes
|