diff --git a/.circleci/config.yml b/.circleci/config.yml
index 49eb966c43a..fe8ade3532b 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -151,7 +151,7 @@ jobs:
- downstream
- run:
name: Run tests
- command: yarn test:ci --config web-test-runner.config.ci-firefox.js --group unit --coverage
+ command: yarn test:ci --config web-test-runner.config.ci-firefox.js --group unit
- store_test_results:
path: /root/project/results/
- run:
@@ -169,7 +169,7 @@ jobs:
- run: yarn analyze
- run:
name: Run tests
- command: yarn test:ci --config web-test-runner.config.ci-webkit.js --group unit --coverage
+ command: yarn test:ci --config web-test-runner.config.ci-webkit.js --group unit
- store_test_results:
path: /root/project/results/
- run:
diff --git a/.storybook/manager.js b/.storybook/manager.js
index ab7c0c1a386..5c28517bc59 100644
--- a/.storybook/manager.js
+++ b/.storybook/manager.js
@@ -3,5 +3,7 @@ import yourTheme from './theme.js';
addons.setConfig({
theme: yourTheme,
- showRoots: false,
+ sidebar: {
+ showRoots: false,
+ },
});
diff --git a/.storybook/tsconfig.json b/.storybook/tsconfig.json
index e91eb721985..5162c7ed446 100644
--- a/.storybook/tsconfig.json
+++ b/.storybook/tsconfig.json
@@ -1,6 +1,7 @@
{
"extends": "../tsconfig.json",
"compilerOptions": {
+ "emitDeclarationOnly": false,
"noImplicitAny": false,
"noUnusedLocals": false,
"declaration": false
diff --git a/.vscode/settings.json b/.vscode/settings.json
index b4fe088f973..be21f5a5b1f 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -4,6 +4,7 @@
"packages/*/src/spectrum-vars.json": true,
"**/*.js.map": true,
"**/*.js": { "when": "$(basename).ts" },
+ "**/*.dev.js": { "when": "$(basename).js" },
"**/*.d.ts": { "when": "$(basename).ts" },
"**/*.test-vrt.ts": true
}
diff --git a/global.d.ts b/global.d.ts
deleted file mode 100644
index 48b68fbe75b..00000000000
--- a/global.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-declare module '@open-wc/demoing-storybook';
diff --git a/package.json b/package.json
index 92bdded7e2f..7470b397f5d 100644
--- a/package.json
+++ b/package.json
@@ -11,19 +11,17 @@
"scripts": {
"analyze": "lit-analyzer \"packages/*/src/**/!(*.css).ts\"",
"analyze:quick": "lit-analyzer \"packages/*/src/!(*.css).ts\"",
- "build": "node test/visual/create.js && yarn build:css && yarn build:ts",
+ "build": "run-p test:create build:css && run-p esbuild:ts build:ts",
"build:clean": "yarn build:ts:clean && yarn build",
"build:clear-cache": "rimraf packages/*/tsconfig.tsbuildinfo && rimraf tools/*/tsconfig.tsbuildinfo",
- "build:compare": "tsc --build projects/vrt-compare/tsconfig.json",
"build:component-inventory": "node ./tasks/build-component-inventory.js",
- "build:confirm": "lerna exec --ignore \"{@spectrum-web-components/{base,bundle,close-button,clear-button,icons-ui,icons-workflow,iconset,modal,shared,styles},documentation,example-project-rollup,example-project-webpack,swc-templates}\" -- test -f src/index.js",
+ "build:confirm": "lerna exec --ignore \"{@spectrum-web-components/{base,bundle,close-button,clear-button,icons-ui,icons-workflow,iconset,modal,shared,styles},documentation,example-project-rollup,example-project-webpack,swc-templates,@types/swc}\" -- test -f src/index.js",
"build:css": "node ./tasks/build-css.js && pretty-quick --fix --pattern \"packages/**/*.css\"",
- "build:decorator": "tsc --build projects/story-decorator/tsconfig.json",
"build:tests": "tsc --build test/tsconfig.json && tsc --build test/tsconfig-node.json",
"build:ts": "yarn tsc --build tsconfig-all.json",
"build:ts:clean": "yarn build:ts --clean",
- "build:watch": "yarn build:ts --watch",
- "custom-element-json": "lerna exec --ignore \"{@spectrum-web-components/{base,bundle,modal,iconset,shared,styles},documentation,example-project-rollup,example-project-webpack,swc-templates}\" -- cem analyze --config ../../custom-elements-manifest.config.js --packagejson",
+ "build:watch": "yarn esbuild:watch",
+ "custom-element-json": "lerna exec --ignore \"{@spectrum-web-components/{base,bundle,modal,iconset,shared,styles},documentation,example-project-rollup,example-project-webpack,swc-templates,@types/swc}\" -- cem analyze --config ../../custom-elements-manifest.config.js --packagejson",
"docs:analyze": "cem analyze --globs \"packages/**/*.ts\" --exclude \"**/*.d.ts\" --exclude \"**/stories/**\" --exclude \"**/icons/**\" --exclude \"**/elements/**\" --outdir projects/documentation --litelement",
"docs:build": "yarn workspace documentation build",
"docs:ci": "yarn docs:analyze && run-p docs:production storybook:build && cp projects/documentation/custom-elements.json projects/documentation/dist/storybook",
@@ -32,6 +30,8 @@
"docs:review": "alex packages/**/*.md",
"docs:start": "yarn docs:analyze && run-p watch:css build:watch docs:watch",
"docs:watch": "yarn workspace documentation watch",
+ "esbuild:ts": "node ./tasks/esbuild-packages.js",
+ "esbuild:watch": "node ./tasks/watch-packages.js",
"find": "test -f custom-elements.json",
"get-ready": "yarn build:clear-cache && run-p process-icons process-spectrum && yarn build:clean",
"icons": "node ./scripts/process-icons.js && pretty-quick --pattern \"packages/**/*.svg.ts\" && eslint -f pretty --fix \"packages/**/*.svg.ts\"",
@@ -46,32 +46,33 @@
"lint:ts": "pretty-quick --pattern \"packages/**/*.ts\" && eslint -f pretty \"packages/**/*.ts\" && pretty-quick --pattern \"tools/**/*.ts\" && eslint -f pretty \"tools/**/*.ts\"",
"lint:versions": "node ./scripts/lint-versions.js",
"new-package": "cd projects/templates && plop",
- "postcustom-element-json": "lerna exec --ignore \"{@spectrum-web-components/{base,bundle,icons-ui,icons-workflow,iconset,modal,shared,styles},documentation,example-project-rollup,example-project-webpack,swc-templates}\" -- test -f custom-elements.json",
+ "postcustom-element-json": "lerna exec --ignore \"{@spectrum-web-components/{base,bundle,icons-ui,icons-workflow,iconset,modal,shared,styles},documentation,example-project-rollup,example-project-webpack,swc-templates,@types/swc}\" -- test -f custom-elements.json",
"postdocs:analyze": "node ./scripts/add-custom-properties.js --src=\"projects/documentation/custom-elements.json\"",
"postinstall": "patch-package && yarn get-ready",
"postprocess-spectrum": "yarn lint:css --fix && pretty-quick --fix --pattern \"packages/**/*.css\"",
- "precustom-element-json": "lerna exec --ignore \"{@spectrum-web-components/{base,bundle,iconset,modal,shared,styles},documentation,example-project-rollup,example-project-webpack,swc-templates}\" -- rm custom-elements.json ||:",
+ "precustom-element-json": "lerna exec --ignore \"{@spectrum-web-components/{base,bundle,iconset,modal,shared,styles},documentation,example-project-rollup,example-project-webpack,swc-templates,@types/swc}\" -- rm custom-elements.json ||:",
"preeleventy": "yarn docs:analyze",
"prelerna-publish": "yarn get-ready && yarn custom-element-json && yarn build:confirm",
"prepare": "husky install",
"prestorybook": "cem analyze --outdir .storybook/",
"prestorybook:build": "cem analyze --outdir .storybook/",
"pretest:bench": "test -f test/benchmark/cli.js && mv test/benchmark/cli.js test/benchmark/cli.cjs ||:",
- "pretest:visual": "yarn build && yarn test:build",
+ "pretest:visual": "yarn build && yarn build",
"process-icons": "run-p icons icons:ui icons:workflow",
"process-spectrum": "yarn spectrum-vars && yarn spectrum-css && yarn spectrum-tokens",
"spectrum-css": "node ./scripts/process-spectrum-css.js",
"spectrum-tokens": "node ./scripts/spectrum-tokens.js",
"spectrum-vars": "node ./scripts/spectrum-vars.js",
"start": "yarn storybook",
- "storybook": "yarn build:ts && yarn build:css && run-p storybook:start watch:css build:watch",
+ "storybook": "yarn build && yarn storybook:quick",
"storybook:build": "build-storybook -o projects/documentation/dist/storybook",
- "storybook:start": "web-dev-server --config wds-storybook.config.js",
+ "storybook:quick": "run-p watch:css build:watch storybook:run",
+ "storybook:run": "web-dev-server --config wds-storybook.config.js",
"test": "yarn test:focus unit",
"test:bench": "node test/benchmark/cli.cjs",
- "test:build": "tsc --build test/tsconfig-plugins.json && tsc --build test/tsconfig-test.json",
"test:changed": "node ./tasks/test-changes.js",
"test:ci": "yarn test:start",
+ "test:create": "node test/visual/create.js",
"test:focus": "yarn build && yarn test:ci --coverage --group",
"test:start": "web-test-runner",
"test:visual": "yarn test:visual:ci",
@@ -80,7 +81,7 @@
"test:visual:clean:baseline": "rimraf test/visual/screenshots-baseline",
"test:visual:clean:current": "rimraf test/visual/screenshots-current",
"test:watch": "yarn test:watch:focus unit",
- "test:watch:focus": "yarn test:build && run-p watch:css \"test:build -w\" \"test:start --watch --group {1}\" --",
+ "test:watch:focus": "yarn build && run-p watch:css build:watch \"test:start --watch --group {1}\" --",
"update:spectrum-css": "node ./scripts/update-spectrum-css.js || yarn update:spectrum-css:cleanup",
"update:spectrum-css:cleanup": "yarn lint:packagejson && yarn --ignore-scripts && yarn process-spectrum",
"vrt:quick-link": "yarn netlify deploy --alias=vrt --dir=projects/vrt-quick-link",
@@ -132,6 +133,7 @@
"custom-elements-manifest": "^1.0.0",
"debounce": "^1.2.1",
"deepmerge": "^4.2.2",
+ "esbuild": "^0.14.25",
"eslint": "^8.2.0",
"eslint-config-prettier": "^8.3.0",
"eslint-formatter-pretty": "^4.1.0",
@@ -148,7 +150,7 @@
"husky": "^8.0.1",
"latest-version": "^7.0.0",
"lerna": "^4.0.0",
- "lit": "^2.1.2",
+ "lit": "^2.2.0",
"lit-analyzer": "^1.2.1",
"mocha-junit-reporter": "^2.0.2",
"netlify-cli": "^10.0.0",
diff --git a/packages/accordion/exports.json b/packages/accordion/exports.json
new file mode 100644
index 00000000000..8927bcf28ad
--- /dev/null
+++ b/packages/accordion/exports.json
@@ -0,0 +1,7 @@
+{
+ ".": "./src/index.js",
+ "./src/*.js": "./src/*.js",
+ "./package.json": "./package.json",
+ "./sp-accordion.js": "./sp-accordion.js",
+ "./sp-accordion-item.js": "./sp-accordion-item.js"
+}
diff --git a/packages/accordion/package.json b/packages/accordion/package.json
index 0481e35979c..6036648db27 100644
--- a/packages/accordion/package.json
+++ b/packages/accordion/package.json
@@ -20,13 +20,33 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-accordion": "./sp-accordion.js",
- "./sp-accordion.js": "./sp-accordion.js",
- "./sp-accordion-item": "./sp-accordion-item.js",
- "./sp-accordion-item.js": "./sp-accordion-item.js"
+ "./src/Accordion.js": {
+ "development": "./src/Accordion.dev.js",
+ "default": "./src/Accordion.js"
+ },
+ "./src/AccordionItem.js": {
+ "development": "./src/AccordionItem.dev.js",
+ "default": "./src/AccordionItem.js"
+ },
+ "./src/accordion-item.css.js": "./src/accordion-item.css.js",
+ "./src/accordion.css.js": "./src/accordion.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./sp-accordion.js": {
+ "development": "./sp-accordion.dev.js",
+ "default": "./sp-accordion.js"
+ },
+ "./sp-accordion-item.js": {
+ "development": "./sp-accordion-item.dev.js",
+ "default": "./sp-accordion-item.js"
+ }
},
"scripts": {
"test": "karma start --coverage"
diff --git a/packages/action-bar/exports.json b/packages/action-bar/exports.json
new file mode 100644
index 00000000000..a5542ca200d
--- /dev/null
+++ b/packages/action-bar/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-action-bar.js": "./sp-action-bar.js"
+}
diff --git a/packages/action-bar/package.json b/packages/action-bar/package.json
index d31f8ea2fb1..3ff3abd47a3 100644
--- a/packages/action-bar/package.json
+++ b/packages/action-bar/package.json
@@ -20,11 +20,24 @@
"module": "src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-action-bar": "./sp-action-bar.js",
- "./sp-action-bar.js": "./sp-action-bar.js"
+ "./src/ActionBar.js": {
+ "development": "./src/ActionBar.dev.js",
+ "default": "./src/ActionBar.js"
+ },
+ "./src/action-bar.css.js": "./src/action-bar.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./sp-action-bar.js": {
+ "development": "./sp-action-bar.dev.js",
+ "default": "./sp-action-bar.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/action-button/exports.json b/packages/action-button/exports.json
new file mode 100644
index 00000000000..cf0157ba101
--- /dev/null
+++ b/packages/action-button/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-action-button.js": "./sp-action-button.js"
+}
diff --git a/packages/action-button/package.json b/packages/action-button/package.json
index 922a12e540a..92b4618a393 100644
--- a/packages/action-button/package.json
+++ b/packages/action-button/package.json
@@ -20,11 +20,24 @@
"module": "src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-action-button": "./sp-action-button.js",
- "./sp-action-button.js": "./sp-action-button.js"
+ "./src/ActionButton.js": {
+ "development": "./src/ActionButton.dev.js",
+ "default": "./src/ActionButton.js"
+ },
+ "./src/action-button.css.js": "./src/action-button.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./sp-action-button.js": {
+ "development": "./sp-action-button.dev.js",
+ "default": "./sp-action-button.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/action-group/exports.json b/packages/action-group/exports.json
new file mode 100644
index 00000000000..ff5c6836a7e
--- /dev/null
+++ b/packages/action-group/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-action-group.js": "./sp-action-group.js"
+}
diff --git a/packages/action-group/package.json b/packages/action-group/package.json
index be7a4bd6a49..552b63df648 100644
--- a/packages/action-group/package.json
+++ b/packages/action-group/package.json
@@ -20,11 +20,24 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-action-group": "./sp-action-group.js",
- "./sp-action-group.js": "./sp-action-group.js"
+ "./src/ActionGroup.js": {
+ "development": "./src/ActionGroup.dev.js",
+ "default": "./src/ActionGroup.js"
+ },
+ "./src/action-group.css.js": "./src/action-group.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./sp-action-group.js": {
+ "development": "./sp-action-group.dev.js",
+ "default": "./sp-action-group.js"
+ }
},
"scripts": {
"test": "karma start --coverage"
diff --git a/packages/action-menu/exports.json b/packages/action-menu/exports.json
new file mode 100644
index 00000000000..7c2a3064d7e
--- /dev/null
+++ b/packages/action-menu/exports.json
@@ -0,0 +1,5 @@
+{
+ "./src/*": "./src/*",
+ "./sp-action-menu.js": "./sp-action-menu.js",
+ "./sync/sp-action-menu.js": "./sync/sp-action-menu.js"
+}
diff --git a/packages/action-menu/package.json b/packages/action-menu/package.json
index 174d2d2e300..c8d7b23de3e 100644
--- a/packages/action-menu/package.json
+++ b/packages/action-menu/package.json
@@ -20,13 +20,28 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-action-menu": "./sp-action-menu.js",
- "./sp-action-menu.js": "./sp-action-menu.js",
- "./sync/sp-action-menu": "./sync/sp-action-menu.js",
- "./sync/sp-action-menu.js": "./sync/sp-action-menu.js"
+ "./src/ActionMenu.js": {
+ "development": "./src/ActionMenu.dev.js",
+ "default": "./src/ActionMenu.js"
+ },
+ "./src/action-menu.css.js": "./src/action-menu.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./sp-action-menu.js": {
+ "development": "./sp-action-menu.dev.js",
+ "default": "./sp-action-menu.js"
+ },
+ "./sync/sp-action-menu.js": {
+ "development": "./sync/sp-action-menu.dev.js",
+ "default": "./sync/sp-action-menu.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/asset/exports.json b/packages/asset/exports.json
new file mode 100644
index 00000000000..61f35e073c9
--- /dev/null
+++ b/packages/asset/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-asset.js": "./sp-asset.js"
+}
diff --git a/packages/asset/package.json b/packages/asset/package.json
index 287bb49acb7..12fd465e8d3 100644
--- a/packages/asset/package.json
+++ b/packages/asset/package.json
@@ -20,11 +20,24 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-asset": "./sp-asset.js",
- "./sp-asset.js": "./sp-asset.js"
+ "./src/Asset.js": {
+ "development": "./src/Asset.dev.js",
+ "default": "./src/Asset.js"
+ },
+ "./src/asset.css.js": "./src/asset.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./sp-asset.js": {
+ "development": "./sp-asset.dev.js",
+ "default": "./sp-asset.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/avatar/exports.json b/packages/avatar/exports.json
new file mode 100644
index 00000000000..fa078de12e1
--- /dev/null
+++ b/packages/avatar/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-avatar.js": "./sp-avatar.js"
+}
diff --git a/packages/avatar/package.json b/packages/avatar/package.json
index ec01270bf01..5bf6b0d55db 100644
--- a/packages/avatar/package.json
+++ b/packages/avatar/package.json
@@ -20,11 +20,24 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-avatar": "./sp-avatar.js",
- "./sp-avatar.js": "./sp-avatar.js"
+ "./src/Avatar.js": {
+ "development": "./src/Avatar.dev.js",
+ "default": "./src/Avatar.js"
+ },
+ "./src/avatar.css.js": "./src/avatar.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./sp-avatar.js": {
+ "development": "./sp-avatar.dev.js",
+ "default": "./sp-avatar.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/badge/exports.json b/packages/badge/exports.json
new file mode 100644
index 00000000000..b426425cd42
--- /dev/null
+++ b/packages/badge/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-badge.js": "./sp-badge.js"
+}
diff --git a/packages/badge/package.json b/packages/badge/package.json
index d4f5f71eab5..f16b9cd249e 100644
--- a/packages/badge/package.json
+++ b/packages/badge/package.json
@@ -20,11 +20,24 @@
"module": "src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*.js",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-badge": "./sp-badge.js",
- "./sp-badge.js": "./sp-badge.js"
+ "./src/Badge.js": {
+ "development": "./src/Badge.dev.js",
+ "default": "./src/Badge.js"
+ },
+ "./src/badge.css.js": "./src/badge.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./sp-badge.js": {
+ "development": "./sp-badge.dev.js",
+ "default": "./sp-badge.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/badge/src/Badge.ts b/packages/badge/src/Badge.ts
index 7c67e854b2c..b16bb6e2ae3 100644
--- a/packages/badge/src/Badge.ts
+++ b/packages/badge/src/Badge.ts
@@ -51,6 +51,18 @@ export class Badge extends SizedMixin(ObserveSlotText(SpectrumElement, '')) {
public variant: BadgeVariant = 'informative';
protected override render(): TemplateResult {
+ if (window.__swc.DEBUG) {
+ if (!BADGE_VARIANTS.includes(this.variant)) {
+ window.__swc.warn(
+ this,
+ `<${this.localName}> element expect the "variant" attribute to be one of the following:`,
+ 'https://opensource.adobe.com/spectrum-web-components/components/badge/#variants',
+ {
+ issues: [...BADGE_VARIANTS]
+ },
+ );
+ }
+ }
return html`
diff --git a/packages/badge/test/badge.test.ts b/packages/badge/test/badge.test.ts
index af764d3ae8a..fe781e7446b 100644
--- a/packages/badge/test/badge.test.ts
+++ b/packages/badge/test/badge.test.ts
@@ -14,6 +14,7 @@ import { elementUpdated, expect, fixture, html } from '@open-wc/testing';
import '@spectrum-web-components/badge/sp-badge.js';
import '@spectrum-web-components/icons-workflow/icons/sp-icon-checkmark-circle.js';
+import { stub } from 'sinon';
import { Badge } from '../src/Badge.js';
import { testForLitDevWarnings } from '../../../test/testing-helpers.js';
@@ -32,6 +33,7 @@ describe('Badge', () => {
)
);
it('loads default badge accessibly', async () => {
+ const consoleWarnStub = stub(console, 'warn');
const el = await fixture
(
html`
@@ -46,5 +48,37 @@ describe('Badge', () => {
await elementUpdated(el);
await expect(el).to.be.accessible();
+ expect(consoleWarnStub.called).to.be.false;
+ consoleWarnStub.restore();
+ });
+ it('warns in Dev Mode when sent an incorrect `variant`', async () => {
+ const consoleWarnStub = stub(console, 'warn');
+ const el = await fixture(
+ html`
+
+
+ Icon and label
+
+ `
+ );
+
+ await elementUpdated(el);
+
+ expect(consoleWarnStub.called).to.be.true;
+ const spyCall = consoleWarnStub.getCall(0);
+ expect(
+ spyCall.args.at(0).includes('"variant"'),
+ 'confirm variant-centric message'
+ ).to.be.true;
+ expect(spyCall.args.at(-1), 'confirm `data` shape').to.deep.equal({
+ data: {
+ localName: 'sp-badge',
+ type: 'api',
+ level: 'default',
+ },
+ });
+ consoleWarnStub.restore();
});
});
diff --git a/packages/banner/exports.json b/packages/banner/exports.json
new file mode 100644
index 00000000000..94ec56a8d3f
--- /dev/null
+++ b/packages/banner/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-banner.js": "./sp-banner.js"
+}
diff --git a/packages/banner/package.json b/packages/banner/package.json
index 89bf24b26c1..bdc82131a77 100644
--- a/packages/banner/package.json
+++ b/packages/banner/package.json
@@ -20,11 +20,24 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-banner": "./sp-banner.js",
- "./sp-banner.js": "./sp-banner.js"
+ "./src/Banner.js": {
+ "development": "./src/Banner.dev.js",
+ "default": "./src/Banner.js"
+ },
+ "./src/banner.css.js": "./src/banner.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./sp-banner.js": {
+ "development": "./sp-banner.dev.js",
+ "default": "./sp-banner.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/base/exports.json b/packages/base/exports.json
new file mode 100644
index 00000000000..0cf11de16e9
--- /dev/null
+++ b/packages/base/exports.json
@@ -0,0 +1,8 @@
+{
+ "./src/*": "./src/*",
+ "./condition-attribute-with-id.js": "./src/condition-attribute-with-id.js",
+ "./decorators.js": "./src/decorators.js",
+ "./directives.js": "./src/directives.js",
+ "./html.js": "./src/html.js",
+ "./streaming-listener.js": "./src/streaming-listener.js"
+}
diff --git a/packages/base/package.json b/packages/base/package.json
index 4573dc35480..cff530b40fc 100644
--- a/packages/base/package.json
+++ b/packages/base/package.json
@@ -20,19 +20,63 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
- "./condition-attribute-with-id": "./src/condition-attribute-with-id.js",
- "./condition-attribute-with-id.js": "./src/condition-attribute-with-id.js",
- "./decorators": "./src/decorators.js",
- "./decorators.js": "./src/decorators.js",
- "./directives": "./src/directives.js",
- "./directives.js": "./src/directives.js",
- "./html": "./src/html.js",
- "./html.js": "./src/html.js",
- "./streaming-listener": "./src/streaming-listener.js",
- "./streaming-listener.js": "./src/streaming-listener.js",
- "./package.json": "./package.json"
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./package.json": "./package.json",
+ "./src/Base.js": {
+ "development": "./src/Base.dev.js",
+ "default": "./src/Base.js"
+ },
+ "./src/condition-attribute-with-id.js": {
+ "development": "./src/condition-attribute-with-id.dev.js",
+ "default": "./src/condition-attribute-with-id.js"
+ },
+ "./src/decorators.js": {
+ "development": "./src/decorators.dev.js",
+ "default": "./src/decorators.js"
+ },
+ "./src/directives.js": {
+ "development": "./src/directives.dev.js",
+ "default": "./src/directives.js"
+ },
+ "./src/html.js": {
+ "development": "./src/html.dev.js",
+ "default": "./src/html.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/sizedMixin.js": {
+ "development": "./src/sizedMixin.dev.js",
+ "default": "./src/sizedMixin.js"
+ },
+ "./src/streaming-listener.js": {
+ "development": "./src/streaming-listener.dev.js",
+ "default": "./src/streaming-listener.js"
+ },
+ "./condition-attribute-with-id.js": {
+ "development": "./condition-attribute-with-id.dev.js",
+ "default": "./condition-attribute-with-id.js"
+ },
+ "./decorators.js": {
+ "development": "./decorators.dev.js",
+ "default": "./decorators.js"
+ },
+ "./directives.js": {
+ "development": "./directives.dev.js",
+ "default": "./directives.js"
+ },
+ "./html.js": {
+ "development": "./html.dev.js",
+ "default": "./html.js"
+ },
+ "./streaming-listener.js": {
+ "development": "./streaming-listener.dev.js",
+ "default": "./streaming-listener.js"
+ }
},
"scripts": {
"test": "karma start --coverage"
@@ -52,7 +96,7 @@
"lit-html"
],
"dependencies": {
- "lit": "^2.1.2",
+ "lit": "^2.2.0",
"tslib": "^2.0.0"
},
"types": "./src/index.d.ts",
diff --git a/packages/base/src/Base.ts b/packages/base/src/Base.ts
index 0483611083e..d6d154c949c 100644
--- a/packages/base/src/Base.ts
+++ b/packages/base/src/Base.ts
@@ -163,3 +163,52 @@ export function SpectrumMixin>(
}
export class SpectrumElement extends SpectrumMixin(LitElement) {}
+
+if (window.__swc.DEBUG) {
+ window.__swc = {
+ ...window.__swc,
+ issuedWarnings: new Set(),
+ warn: (element, message, url, { type = 'api', level = 'default', issues } = {}): void => {
+ const { localName = 'base' } = element || {};
+ const id = `${localName}:${type}:${level}` as BrandedSWCWarningID;
+ if (!window.__swc.verbose && window.__swc.issuedWarnings.has(id))
+ return;
+ window.__swc.issuedWarnings.add(id);
+ if (window.__swc.ignoreWarningLocalNames?.[localName]) return;
+ if (window.__swc.ignoreWarningTypes?.[type]) return;
+ if (window.__swc.ignoreWarningLevels?.[level]) return;
+ let listedIssues = '';
+ if (issues && issues.length) {
+ issues.unshift('');
+ listedIssues = issues.join('\n - ') + '\n';
+ }
+ const intro = level === 'deprecation' ? 'DEPRECATION NOTICE: ' : '';
+ const inspectElement = element
+ ? '\nInspect this issue in the follow element:'
+ : '';
+ const displayURL = (element ? '\n\n' : '\n') + url + '\n';
+ const messages: unknown[] = [];
+ messages.push(
+ intro + message + '\n' + listedIssues + inspectElement
+ );
+ if (element) {
+ messages.push(element);
+ }
+ messages.push(displayURL, {
+ data: {
+ localName,
+ type,
+ level,
+ }
+ });
+ console.warn(...messages);
+ },
+ };
+
+ window.__swc.warn(
+ undefined,
+ 'Spectrum Web Components is in dev mode. Not recommended for production!',
+ 'https://opensource.adobe.com/spectrum-web-components/dev-mode/',
+ { type: 'default' },
+ );
+}
diff --git a/packages/base/test/base-devmode.test.ts b/packages/base/test/base-devmode.test.ts
new file mode 100644
index 00000000000..dd69ff48589
--- /dev/null
+++ b/packages/base/test/base-devmode.test.ts
@@ -0,0 +1,37 @@
+/*
+Copyright 2020 Adobe. All rights reserved.
+This file is licensed to you under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License. You may obtain a copy
+of the License at http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software distributed under
+the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
+OF ANY KIND, either express or implied. See the License for the specific language
+governing permissions and limitations under the License.
+*/
+import { expect } from '@open-wc/testing';
+import { stub } from 'sinon';
+
+describe('Base', () => {
+ it('warns in Dev Mode when no attributes', async () => {
+ const consoleWarnStub = stub(console, 'warn');
+ const { SpectrumElement } = await import(
+ '@spectrum-web-components/base'
+ );
+ expect(SpectrumElement).to.not.be.undefined;
+
+ expect(consoleWarnStub.called).to.be.true;
+ const spyCall = consoleWarnStub.getCall(0);
+ expect(
+ spyCall.args.at(0).includes('dev mode'),
+ 'confirm "dev mode"-centric message'
+ ).to.be.true;
+ expect(spyCall.args.at(-1), 'confirm `data` shape').to.deep.equal({
+ data: {
+ localName: 'base',
+ type: 'default',
+ level: 'default',
+ },
+ });
+ consoleWarnStub.restore();
+ });
+});
diff --git a/packages/bundle/exports.json b/packages/bundle/exports.json
new file mode 100644
index 00000000000..a9e8dfdcec0
--- /dev/null
+++ b/packages/bundle/exports.json
@@ -0,0 +1,5 @@
+{
+ "./src/*": "./src/*",
+ "./elements.js": "./elements.js",
+ "./icons.js": "./src/icons.js"
+}
diff --git a/packages/bundle/package.json b/packages/bundle/package.json
index 3b5be40cac3..c370ad2f4fc 100644
--- a/packages/bundle/package.json
+++ b/packages/bundle/package.json
@@ -20,13 +20,27 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./elements": "./elements.js",
- "./elements.js": "./elements.js",
- "./icons": "./src/icons.js",
- "./icons.js": "./src/icons.js"
+ "./src/icons.js": {
+ "development": "./src/icons.dev.js",
+ "default": "./src/icons.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./elements.js": {
+ "development": "./elements.dev.js",
+ "default": "./elements.js"
+ },
+ "./icons.js": {
+ "development": "./icons.dev.js",
+ "default": "./icons.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/button-group/exports.json b/packages/button-group/exports.json
new file mode 100644
index 00000000000..4843c79fcae
--- /dev/null
+++ b/packages/button-group/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-button-group.js": "./sp-button-group.js"
+}
diff --git a/packages/button-group/package.json b/packages/button-group/package.json
index bdb22a3aef3..b1ae0086e0a 100644
--- a/packages/button-group/package.json
+++ b/packages/button-group/package.json
@@ -20,11 +20,24 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-button-group": "./sp-button-group.js",
- "./sp-button-group.js": "./sp-button-group.js"
+ "./src/ButtonGroup.js": {
+ "development": "./src/ButtonGroup.dev.js",
+ "default": "./src/ButtonGroup.js"
+ },
+ "./src/button-group.css.js": "./src/button-group.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./sp-button-group.js": {
+ "development": "./sp-button-group.dev.js",
+ "default": "./sp-button-group.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/button/exports.json b/packages/button/exports.json
new file mode 100644
index 00000000000..8b80cc49659
--- /dev/null
+++ b/packages/button/exports.json
@@ -0,0 +1,6 @@
+{
+ "./src/*": "./src/*",
+ "./sp-button.js": "./sp-button.js",
+ "./sp-clear-button.js": "./sp-clear-button.js",
+ "./sp-close-button.js": "./sp-close-button.js"
+}
diff --git a/packages/button/package.json b/packages/button/package.json
index ed84abe53f7..f44d53a4f8d 100644
--- a/packages/button/package.json
+++ b/packages/button/package.json
@@ -20,15 +20,49 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-button": "./sp-button.js",
- "./sp-button.js": "./sp-button.js",
- "./sp-clear-button": "./sp-clear-button.js",
- "./sp-clear-button.js": "./sp-clear-button.js",
- "./sp-close-button": "./sp-close-button.js",
- "./sp-close-button.js": "./sp-close-button.js"
+ "./src/Button.js": {
+ "development": "./src/Button.dev.js",
+ "default": "./src/Button.js"
+ },
+ "./src/ButtonBase.js": {
+ "development": "./src/ButtonBase.dev.js",
+ "default": "./src/ButtonBase.js"
+ },
+ "./src/ClearButton.js": {
+ "development": "./src/ClearButton.dev.js",
+ "default": "./src/ClearButton.js"
+ },
+ "./src/CloseButton.js": {
+ "development": "./src/CloseButton.dev.js",
+ "default": "./src/CloseButton.js"
+ },
+ "./src/StyledButton.js": {
+ "development": "./src/StyledButton.dev.js",
+ "default": "./src/StyledButton.js"
+ },
+ "./src/button-base.css.js": "./src/button-base.css.js",
+ "./src/button.css.js": "./src/button.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./sp-button.js": {
+ "development": "./sp-button.dev.js",
+ "default": "./sp-button.js"
+ },
+ "./sp-clear-button.js": {
+ "development": "./sp-clear-button.dev.js",
+ "default": "./sp-clear-button.js"
+ },
+ "./sp-close-button.js": {
+ "development": "./sp-close-button.dev.js",
+ "default": "./sp-close-button.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/card/exports.json b/packages/card/exports.json
new file mode 100644
index 00000000000..e4b80c0a4a7
--- /dev/null
+++ b/packages/card/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-card.js": "./sp-card.js"
+}
diff --git a/packages/card/package.json b/packages/card/package.json
index e85eb02c78b..eb9377a9c79 100644
--- a/packages/card/package.json
+++ b/packages/card/package.json
@@ -20,11 +20,24 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-card": "./sp-card.js",
- "./sp-card.js": "./sp-card.js"
+ "./src/Card.js": {
+ "development": "./src/Card.dev.js",
+ "default": "./src/Card.js"
+ },
+ "./src/card.css.js": "./src/card.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./sp-card.js": {
+ "development": "./sp-card.dev.js",
+ "default": "./sp-card.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/card/sp-card.ts b/packages/card/sp-card.ts
index f6f80abcac4..f8c0ee3a49f 100644
--- a/packages/card/sp-card.ts
+++ b/packages/card/sp-card.ts
@@ -9,6 +9,7 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
OF ANY KIND, either express or implied. See the License for the specific language
governing permissions and limitations under the License.
*/
+
import { Card } from './src/Card.js';
customElements.define('sp-card', Card);
diff --git a/packages/checkbox/exports.json b/packages/checkbox/exports.json
new file mode 100644
index 00000000000..c550f9aa397
--- /dev/null
+++ b/packages/checkbox/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-checkbox.js": "./sp-checkbox.js"
+}
diff --git a/packages/checkbox/package.json b/packages/checkbox/package.json
index 77c88f44702..f1ef9f0e565 100644
--- a/packages/checkbox/package.json
+++ b/packages/checkbox/package.json
@@ -20,11 +20,28 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-checkbox": "./sp-checkbox.js",
- "./sp-checkbox.js": "./sp-checkbox.js"
+ "./src/Checkbox.js": {
+ "development": "./src/Checkbox.dev.js",
+ "default": "./src/Checkbox.js"
+ },
+ "./src/CheckboxBase.js": {
+ "development": "./src/CheckboxBase.dev.js",
+ "default": "./src/CheckboxBase.js"
+ },
+ "./src/checkbox.css.js": "./src/checkbox.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./sp-checkbox.js": {
+ "development": "./sp-checkbox.dev.js",
+ "default": "./sp-checkbox.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/clear-button/exports.json b/packages/clear-button/exports.json
new file mode 100644
index 00000000000..df205c2ef72
--- /dev/null
+++ b/packages/clear-button/exports.json
@@ -0,0 +1,4 @@
+{
+ ".": "./src/clear-button.css.js",
+ "./src/*": "./src/*"
+}
diff --git a/packages/clear-button/package.json b/packages/clear-button/package.json
index 18b829a54eb..fa8a5dadd9f 100644
--- a/packages/clear-button/package.json
+++ b/packages/clear-button/package.json
@@ -21,8 +21,8 @@
"type": "module",
"exports": {
".": "./src/clear-button.css.js",
- "./src/*": "./src/*",
- "./package.json": "./package.json"
+ "./package.json": "./package.json",
+ "./src/clear-button.css.js": "./src/clear-button.css.js"
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/close-button/exports.json b/packages/close-button/exports.json
new file mode 100644
index 00000000000..77b6f5a212e
--- /dev/null
+++ b/packages/close-button/exports.json
@@ -0,0 +1,4 @@
+{
+ ".": "./src/close-button.css.js",
+ "./src/*": "./src/*"
+}
diff --git a/packages/close-button/package.json b/packages/close-button/package.json
index b48551000eb..62a8f23a8d5 100644
--- a/packages/close-button/package.json
+++ b/packages/close-button/package.json
@@ -21,8 +21,8 @@
"type": "module",
"exports": {
".": "./src/close-button.css.js",
- "./src/*": "./src/*",
- "./package.json": "./package.json"
+ "./package.json": "./package.json",
+ "./src/close-button.css.js": "./src/close-button.css.js"
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/coachmark/exports.json b/packages/coachmark/exports.json
new file mode 100644
index 00000000000..7008b84a303
--- /dev/null
+++ b/packages/coachmark/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-coachmark.js": "./sp-coachmark.js"
+}
diff --git a/packages/coachmark/package.json b/packages/coachmark/package.json
index 92b47a43aca..59c4907f579 100644
--- a/packages/coachmark/package.json
+++ b/packages/coachmark/package.json
@@ -20,11 +20,24 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-coachmark": "./sp-coachmark.js",
- "./sp-coachmark.js": "./sp-coachmark.js"
+ "./src/Coachmark.js": {
+ "development": "./src/Coachmark.dev.js",
+ "default": "./src/Coachmark.js"
+ },
+ "./src/coachmark.css.js": "./src/coachmark.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./sp-coachmark.js": {
+ "development": "./sp-coachmark.dev.js",
+ "default": "./sp-coachmark.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/color-area/exports.json b/packages/color-area/exports.json
new file mode 100644
index 00000000000..122bc6e6756
--- /dev/null
+++ b/packages/color-area/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-color-area.js": "./sp-color-area.js"
+}
diff --git a/packages/color-area/package.json b/packages/color-area/package.json
index 7484cf126b0..51da3c45c6c 100644
--- a/packages/color-area/package.json
+++ b/packages/color-area/package.json
@@ -20,11 +20,28 @@
"module": "src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-color-area": "./sp-color-area.js",
- "./sp-color-area.js": "./sp-color-area.js"
+ "./src/ColorArea.js": {
+ "development": "./src/ColorArea.dev.js",
+ "default": "./src/ColorArea.js"
+ },
+ "./src/color-area.css.js": "./src/color-area.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/types.js": {
+ "development": "./src/types.dev.js",
+ "default": "./src/types.js"
+ },
+ "./sp-color-area.js": {
+ "development": "./sp-color-area.dev.js",
+ "default": "./sp-color-area.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/color-handle/exports.json b/packages/color-handle/exports.json
new file mode 100644
index 00000000000..a23164d11be
--- /dev/null
+++ b/packages/color-handle/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-color-handle.js": "./sp-color-handle.js"
+}
diff --git a/packages/color-handle/package.json b/packages/color-handle/package.json
index de2eb60c615..a4398ab799a 100644
--- a/packages/color-handle/package.json
+++ b/packages/color-handle/package.json
@@ -20,11 +20,24 @@
"module": "src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-color-handle": "./sp-color-handle.js",
- "./sp-color-handle.js": "./sp-color-handle.js"
+ "./src/ColorHandle.js": {
+ "development": "./src/ColorHandle.dev.js",
+ "default": "./src/ColorHandle.js"
+ },
+ "./src/color-handle.css.js": "./src/color-handle.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./sp-color-handle.js": {
+ "development": "./sp-color-handle.dev.js",
+ "default": "./sp-color-handle.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/color-loupe/exports.json b/packages/color-loupe/exports.json
new file mode 100644
index 00000000000..62632557999
--- /dev/null
+++ b/packages/color-loupe/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-color-loupe.js": "./sp-color-loupe.js"
+}
diff --git a/packages/color-loupe/package.json b/packages/color-loupe/package.json
index 793e62590bf..3559e273fb3 100644
--- a/packages/color-loupe/package.json
+++ b/packages/color-loupe/package.json
@@ -20,11 +20,24 @@
"module": "src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-color-loupe": "./sp-color-loupe.js",
- "./sp-color-loupe.js": "./sp-color-loupe.js"
+ "./src/ColorLoupe.js": {
+ "development": "./src/ColorLoupe.dev.js",
+ "default": "./src/ColorLoupe.js"
+ },
+ "./src/color-loupe.css.js": "./src/color-loupe.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./sp-color-loupe.js": {
+ "development": "./sp-color-loupe.dev.js",
+ "default": "./sp-color-loupe.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/color-slider/exports.json b/packages/color-slider/exports.json
new file mode 100644
index 00000000000..2d857b6038d
--- /dev/null
+++ b/packages/color-slider/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-color-slider.js": "./sp-color-slider.js"
+}
diff --git a/packages/color-slider/package.json b/packages/color-slider/package.json
index 577bc2e4e14..cf0afdf5a21 100644
--- a/packages/color-slider/package.json
+++ b/packages/color-slider/package.json
@@ -20,11 +20,28 @@
"module": "src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-color-slider": "./sp-color-slider.js",
- "./sp-color-slider.js": "./sp-color-slider.js"
+ "./src/ColorSlider.js": {
+ "development": "./src/ColorSlider.dev.js",
+ "default": "./src/ColorSlider.js"
+ },
+ "./src/color-slider.css.js": "./src/color-slider.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/types.js": {
+ "development": "./src/types.dev.js",
+ "default": "./src/types.js"
+ },
+ "./sp-color-slider.js": {
+ "development": "./sp-color-slider.dev.js",
+ "default": "./sp-color-slider.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/color-wheel/exports.json b/packages/color-wheel/exports.json
new file mode 100644
index 00000000000..9bed880cf73
--- /dev/null
+++ b/packages/color-wheel/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-color-wheel.js": "./sp-color-wheel.js"
+}
diff --git a/packages/color-wheel/package.json b/packages/color-wheel/package.json
index 7e20f5decd8..51712481135 100644
--- a/packages/color-wheel/package.json
+++ b/packages/color-wheel/package.json
@@ -20,11 +20,28 @@
"module": "src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-color-wheel": "./sp-color-wheel.js",
- "./sp-color-wheel.js": "./sp-color-wheel.js"
+ "./src/ColorWheel.js": {
+ "development": "./src/ColorWheel.dev.js",
+ "default": "./src/ColorWheel.js"
+ },
+ "./src/color-wheel.css.js": "./src/color-wheel.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/types.js": {
+ "development": "./src/types.dev.js",
+ "default": "./src/types.js"
+ },
+ "./sp-color-wheel.js": {
+ "development": "./sp-color-wheel.dev.js",
+ "default": "./sp-color-wheel.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/dialog/exports.json b/packages/dialog/exports.json
new file mode 100644
index 00000000000..a53a5298617
--- /dev/null
+++ b/packages/dialog/exports.json
@@ -0,0 +1,5 @@
+{
+ "./src/*": "./src/*",
+ "./sp-dialog.js": "./sp-dialog.js",
+ "./sp-dialog-wrapper.js": "./sp-dialog-wrapper.js"
+}
diff --git a/packages/dialog/package.json b/packages/dialog/package.json
index 6b02bca2622..97f905dc0a6 100644
--- a/packages/dialog/package.json
+++ b/packages/dialog/package.json
@@ -20,13 +20,32 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-dialog": "./sp-dialog.js",
- "./sp-dialog.js": "./sp-dialog.js",
- "./sp-dialog-wrapper": "./sp-dialog-wrapper.js",
- "./sp-dialog-wrapper.js": "./sp-dialog-wrapper.js"
+ "./src/Dialog.js": {
+ "development": "./src/Dialog.dev.js",
+ "default": "./src/Dialog.js"
+ },
+ "./src/DialogWrapper.js": {
+ "development": "./src/DialogWrapper.dev.js",
+ "default": "./src/DialogWrapper.js"
+ },
+ "./src/dialog.css.js": "./src/dialog.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./sp-dialog.js": {
+ "development": "./sp-dialog.dev.js",
+ "default": "./sp-dialog.js"
+ },
+ "./sp-dialog-wrapper.js": {
+ "development": "./sp-dialog-wrapper.dev.js",
+ "default": "./sp-dialog-wrapper.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/divider/exports.json b/packages/divider/exports.json
new file mode 100644
index 00000000000..8d8460dc6cb
--- /dev/null
+++ b/packages/divider/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-divider.js": "./sp-divider.js"
+}
diff --git a/packages/divider/package.json b/packages/divider/package.json
index f6b9c452a14..c2699c9324e 100644
--- a/packages/divider/package.json
+++ b/packages/divider/package.json
@@ -20,11 +20,24 @@
"module": "src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-divider": "./sp-divider.js",
- "./sp-divider.js": "./sp-divider.js"
+ "./src/Divider.js": {
+ "development": "./src/Divider.dev.js",
+ "default": "./src/Divider.js"
+ },
+ "./src/divider.css.js": "./src/divider.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./sp-divider.js": {
+ "development": "./sp-divider.dev.js",
+ "default": "./sp-divider.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/dropzone/exports.json b/packages/dropzone/exports.json
new file mode 100644
index 00000000000..3246cfff813
--- /dev/null
+++ b/packages/dropzone/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-dropzone.js": "./sp-dropzone.js"
+}
diff --git a/packages/dropzone/package.json b/packages/dropzone/package.json
index 1480c3216a2..570fcc78dc9 100644
--- a/packages/dropzone/package.json
+++ b/packages/dropzone/package.json
@@ -20,11 +20,24 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-dropzone": "./sp-dropzone.js",
- "./sp-dropzone.js": "./sp-dropzone.js"
+ "./src/Dropzone.js": {
+ "development": "./src/Dropzone.dev.js",
+ "default": "./src/Dropzone.js"
+ },
+ "./src/dropzone.css.js": "./src/dropzone.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./sp-dropzone.js": {
+ "development": "./sp-dropzone.dev.js",
+ "default": "./sp-dropzone.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/field-group/exports.json b/packages/field-group/exports.json
new file mode 100644
index 00000000000..f48acef66dd
--- /dev/null
+++ b/packages/field-group/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-field-group.js": "./sp-field-group.js"
+}
diff --git a/packages/field-group/package.json b/packages/field-group/package.json
index 1bc038377a3..b1985f0ac90 100644
--- a/packages/field-group/package.json
+++ b/packages/field-group/package.json
@@ -20,11 +20,24 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-field-group": "./sp-field-group.js",
- "./sp-field-group.js": "./sp-field-group.js"
+ "./src/FieldGroup.js": {
+ "development": "./src/FieldGroup.dev.js",
+ "default": "./src/FieldGroup.js"
+ },
+ "./src/field-group.css.js": "./src/field-group.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./sp-field-group.js": {
+ "development": "./sp-field-group.dev.js",
+ "default": "./sp-field-group.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/field-label/exports.json b/packages/field-label/exports.json
new file mode 100644
index 00000000000..a86253ea8ad
--- /dev/null
+++ b/packages/field-label/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-field-label.js": "./sp-field-label.js"
+}
diff --git a/packages/field-label/package.json b/packages/field-label/package.json
index e0be2f13bc0..d19c0ba61ba 100644
--- a/packages/field-label/package.json
+++ b/packages/field-label/package.json
@@ -20,11 +20,24 @@
"module": "src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-field-label": "./sp-field-label.js",
- "./sp-field-label.js": "./sp-field-label.js"
+ "./src/FieldLabel.js": {
+ "development": "./src/FieldLabel.dev.js",
+ "default": "./src/FieldLabel.js"
+ },
+ "./src/field-label.css.js": "./src/field-label.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./sp-field-label.js": {
+ "development": "./sp-field-label.dev.js",
+ "default": "./sp-field-label.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/help-text/exports.json b/packages/help-text/exports.json
new file mode 100644
index 00000000000..486da8b3d9e
--- /dev/null
+++ b/packages/help-text/exports.json
@@ -0,0 +1,6 @@
+{
+ "./src/*": "./src/*",
+ "./help-text-manager.js": "./src/help-text-manager.js",
+ "./HelpTextManager.js": "./src/HelpTextManager.js",
+ "./sp-help-text.js": "./sp-help-text.js"
+}
diff --git a/packages/help-text/package.json b/packages/help-text/package.json
index 941f1c82a29..1bdb63b636b 100644
--- a/packages/help-text/package.json
+++ b/packages/help-text/package.json
@@ -20,15 +20,44 @@
"module": "src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
- "./help-text-manager": "./src/help-text-manager.js",
- "./help-text-manager.js": "./src/help-text-manager.js",
- "./HelpTextManager": "./src/HelpTextManager.js",
- "./HelpTextManager.js": "./src/HelpTextManager.js",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-help-text": "./sp-help-text.js",
- "./sp-help-text.js": "./sp-help-text.js"
+ "./src/HelpText.js": {
+ "development": "./src/HelpText.dev.js",
+ "default": "./src/HelpText.js"
+ },
+ "./src/HelpTextManagedElement.js": {
+ "development": "./src/HelpTextManagedElement.dev.js",
+ "default": "./src/HelpTextManagedElement.js"
+ },
+ "./src/HelpTextManager.js": {
+ "development": "./src/HelpTextManager.dev.js",
+ "default": "./src/HelpTextManager.js"
+ },
+ "./src/help-text.css.js": "./src/help-text.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/manage-help-text.js": {
+ "development": "./src/manage-help-text.dev.js",
+ "default": "./src/manage-help-text.js"
+ },
+ "./help-text-manager.js": {
+ "development": "./help-text-manager.dev.js",
+ "default": "./help-text-manager.js"
+ },
+ "./HelpTextManager.js": {
+ "development": "./HelpTextManager.dev.js",
+ "default": "./HelpTextManager.js"
+ },
+ "./sp-help-text.js": {
+ "development": "./sp-help-text.dev.js",
+ "default": "./sp-help-text.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/icon/exports.json b/packages/icon/exports.json
new file mode 100644
index 00000000000..d175c1bc59e
--- /dev/null
+++ b/packages/icon/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-icon.js": "./sp-icon.js"
+}
diff --git a/packages/icon/package.json b/packages/icon/package.json
index 9717da8cd62..419b18a5afc 100644
--- a/packages/icon/package.json
+++ b/packages/icon/package.json
@@ -20,11 +20,38 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-icon": "./sp-icon.js",
- "./sp-icon.js": "./sp-icon.js"
+ "./src/Icon.js": {
+ "development": "./src/Icon.dev.js",
+ "default": "./src/Icon.js"
+ },
+ "./src/IconBase.js": {
+ "development": "./src/IconBase.dev.js",
+ "default": "./src/IconBase.js"
+ },
+ "./src/icon.css.js": "./src/icon.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/spectrum-icon-arrow.css.js": "./src/spectrum-icon-arrow.css.js",
+ "./src/spectrum-icon-asterisk.css.js": "./src/spectrum-icon-asterisk.css.js",
+ "./src/spectrum-icon-checkmark.css.js": "./src/spectrum-icon-checkmark.css.js",
+ "./src/spectrum-icon-chevron.css.js": "./src/spectrum-icon-chevron.css.js",
+ "./src/spectrum-icon-corner-triangle.css.js": "./src/spectrum-icon-corner-triangle.css.js",
+ "./src/spectrum-icon-cross.css.js": "./src/spectrum-icon-cross.css.js",
+ "./src/spectrum-icon-dash.css.js": "./src/spectrum-icon-dash.css.js",
+ "./src/spectrum-icon-double-gripper.css.js": "./src/spectrum-icon-double-gripper.css.js",
+ "./src/spectrum-icon-single-gripper.css.js": "./src/spectrum-icon-single-gripper.css.js",
+ "./src/spectrum-icon-triple-gripper.css.js": "./src/spectrum-icon-triple-gripper.css.js",
+ "./sp-icon.js": {
+ "development": "./sp-icon.dev.js",
+ "default": "./sp-icon.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/icons-ui/bin/build.js b/packages/icons-ui/bin/build.js
index d32a7fe5385..08334a6973b 100644
--- a/packages/icons-ui/bin/build.js
+++ b/packages/icons-ui/bin/build.js
@@ -240,7 +240,7 @@ glob(`${rootDir}/node_modules/${iconsPath}/**.svg`, (error, icons) => {
iconRegistrationFile,
'utf-8'
);
- const importStatement = `\r\nimport '../icons/${iconElementName}.js';`;
+ const importStatement = `\r\nimport '@spectrum-web-components/icons-ui/icons/${iconElementName}.js';`;
const metadata = `{name: '${Case.sentence(
ComponentName
)}', tag: '<${iconElementName}>', story: (size: string): TemplateResult => html\`<${iconElementName} size=\$\{size\}>${iconElementName}>\`},\r\n`;
diff --git a/packages/icons-workflow/bin/build.js b/packages/icons-workflow/bin/build.js
index 04de7b95d12..3cec25a563a 100644
--- a/packages/icons-workflow/bin/build.js
+++ b/packages/icons-workflow/bin/build.js
@@ -262,7 +262,7 @@ glob(`${rootDir}/node_modules/${iconsPath}/**.svg`, (error, icons) => {
iconRegistrationFile,
'utf-8'
);
- const importStatement = `\r\nimport '../icons/${iconElementName}.js';`;
+ const importStatement = `\r\nimport '@spectrum-web-components/icons-workflow/icons/${iconElementName}.js';`;
const metadata = `{name: '${Case.sentence(
ComponentName
)}', tag: '<${iconElementName}>', story: (size: string): TemplateResult => html\`<${iconElementName} size=\$\{size\}>${iconElementName}>\`},\r\n`;
diff --git a/packages/icons/exports.json b/packages/icons/exports.json
new file mode 100644
index 00000000000..5d5575f5400
--- /dev/null
+++ b/packages/icons/exports.json
@@ -0,0 +1,5 @@
+{
+ "./src/*": "./src/*",
+ "./sp-icons-large.js": "./sp-icons-large.js",
+ "./sp-icons-medium.js": "./sp-icons-medium.js"
+}
diff --git a/packages/icons/package.json b/packages/icons/package.json
index ea6f474a54e..3c37c3c5e89 100644
--- a/packages/icons/package.json
+++ b/packages/icons/package.json
@@ -20,13 +20,39 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-icons-large": "./sp-icons-large.js",
- "./sp-icons-large.js": "./sp-icons-large.js",
- "./sp-icons-medium": "./sp-icons-medium.js",
- "./sp-icons-medium.js": "./sp-icons-medium.js"
+ "./src/IconsLarge.js": {
+ "development": "./src/IconsLarge.dev.js",
+ "default": "./src/IconsLarge.js"
+ },
+ "./src/IconsMedium.js": {
+ "development": "./src/IconsMedium.dev.js",
+ "default": "./src/IconsMedium.js"
+ },
+ "./src/icons-large.svg.js": {
+ "development": "./src/icons-large.svg.dev.js",
+ "default": "./src/icons-large.svg.js"
+ },
+ "./src/icons-medium.svg.js": {
+ "development": "./src/icons-medium.svg.dev.js",
+ "default": "./src/icons-medium.svg.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./sp-icons-large.js": {
+ "development": "./sp-icons-large.dev.js",
+ "default": "./sp-icons-large.js"
+ },
+ "./sp-icons-medium.js": {
+ "development": "./sp-icons-medium.dev.js",
+ "default": "./sp-icons-medium.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/iconset/exports.json b/packages/iconset/exports.json
new file mode 100644
index 00000000000..266304b99db
--- /dev/null
+++ b/packages/iconset/exports.json
@@ -0,0 +1,3 @@
+{
+ "./src/*": "./src/*"
+}
diff --git a/packages/iconset/package.json b/packages/iconset/package.json
index 5c78394b82b..9de0d7dbbbc 100644
--- a/packages/iconset/package.json
+++ b/packages/iconset/package.json
@@ -19,9 +19,27 @@
"main": "./src/index.js",
"module": "./src/index.js",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
- "./package.json": "./package.json"
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./package.json": "./package.json",
+ "./src/iconset-registry.js": {
+ "development": "./src/iconset-registry.dev.js",
+ "default": "./src/iconset-registry.js"
+ },
+ "./src/iconset-svg.js": {
+ "development": "./src/iconset-svg.dev.js",
+ "default": "./src/iconset-svg.js"
+ },
+ "./src/iconset.js": {
+ "development": "./src/iconset.dev.js",
+ "default": "./src/iconset.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/illustrated-message/exports.json b/packages/illustrated-message/exports.json
new file mode 100644
index 00000000000..3a5f0e66e99
--- /dev/null
+++ b/packages/illustrated-message/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-illustrated-message.js": "./sp-illustrated-message.js"
+}
diff --git a/packages/illustrated-message/package.json b/packages/illustrated-message/package.json
index 9e1a11465f6..0a639745812 100644
--- a/packages/illustrated-message/package.json
+++ b/packages/illustrated-message/package.json
@@ -20,11 +20,24 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-illustrated-message": "./sp-illustrated-message.js",
- "./sp-illustrated-message.js": "./sp-illustrated-message.js"
+ "./src/IllustratedMessage.js": {
+ "development": "./src/IllustratedMessage.dev.js",
+ "default": "./src/IllustratedMessage.js"
+ },
+ "./src/illustrated-message.css.js": "./src/illustrated-message.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./sp-illustrated-message.js": {
+ "development": "./sp-illustrated-message.dev.js",
+ "default": "./sp-illustrated-message.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/link/exports.json b/packages/link/exports.json
new file mode 100644
index 00000000000..4a7dfdc7924
--- /dev/null
+++ b/packages/link/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-link.js": "./sp-link.js"
+}
diff --git a/packages/link/package.json b/packages/link/package.json
index 104d7bd4fcf..ed5194ba627 100644
--- a/packages/link/package.json
+++ b/packages/link/package.json
@@ -20,11 +20,24 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-link": "./sp-link.js",
- "./sp-link.js": "./sp-link.js"
+ "./src/Link.js": {
+ "development": "./src/Link.dev.js",
+ "default": "./src/Link.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/link.css.js": "./src/link.css.js",
+ "./sp-link.js": {
+ "development": "./sp-link.dev.js",
+ "default": "./sp-link.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/menu/exports.json b/packages/menu/exports.json
new file mode 100644
index 00000000000..ed22af3506e
--- /dev/null
+++ b/packages/menu/exports.json
@@ -0,0 +1,7 @@
+{
+ "./src/*": "./src/*",
+ "./sp-menu.js": "./sp-menu.js",
+ "./sp-menu-divider.js": "./sp-menu-divider.js",
+ "./sp-menu-group.js": "./sp-menu-group.js",
+ "./sp-menu-item.js": "./sp-menu-item.js"
+}
diff --git a/packages/menu/package.json b/packages/menu/package.json
index 37205c11064..0886cc46e5f 100644
--- a/packages/menu/package.json
+++ b/packages/menu/package.json
@@ -20,17 +20,51 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-menu": "./sp-menu.js",
- "./sp-menu.js": "./sp-menu.js",
- "./sp-menu-divider": "./sp-menu-divider.js",
- "./sp-menu-divider.js": "./sp-menu-divider.js",
- "./sp-menu-group": "./sp-menu-group.js",
- "./sp-menu-group.js": "./sp-menu-group.js",
- "./sp-menu-item": "./sp-menu-item.js",
- "./sp-menu-item.js": "./sp-menu-item.js"
+ "./src/Menu.js": {
+ "development": "./src/Menu.dev.js",
+ "default": "./src/Menu.js"
+ },
+ "./src/MenuDivider.js": {
+ "development": "./src/MenuDivider.dev.js",
+ "default": "./src/MenuDivider.js"
+ },
+ "./src/MenuGroup.js": {
+ "development": "./src/MenuGroup.dev.js",
+ "default": "./src/MenuGroup.js"
+ },
+ "./src/MenuItem.js": {
+ "development": "./src/MenuItem.dev.js",
+ "default": "./src/MenuItem.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/menu-divider.css.js": "./src/menu-divider.css.js",
+ "./src/menu-group.css.js": "./src/menu-group.css.js",
+ "./src/menu-item.css.js": "./src/menu-item.css.js",
+ "./src/menu.css.js": "./src/menu.css.js",
+ "./sp-menu.js": {
+ "development": "./sp-menu.dev.js",
+ "default": "./sp-menu.js"
+ },
+ "./sp-menu-divider.js": {
+ "development": "./sp-menu-divider.dev.js",
+ "default": "./sp-menu-divider.js"
+ },
+ "./sp-menu-group.js": {
+ "development": "./sp-menu-group.dev.js",
+ "default": "./sp-menu-group.js"
+ },
+ "./sp-menu-item.js": {
+ "development": "./sp-menu-item.dev.js",
+ "default": "./sp-menu-item.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/menu/src/Menu.ts b/packages/menu/src/Menu.ts
index 4b652bb7acf..4b187f97086 100644
--- a/packages/menu/src/Menu.ts
+++ b/packages/menu/src/Menu.ts
@@ -22,8 +22,8 @@ import {
query,
} from '@spectrum-web-components/base/src/decorators.js';
-import {
- MenuItem,
+import { MenuItem } from './MenuItem.js';
+import type {
MenuItemAddedOrUpdatedEvent,
MenuItemRemovedEvent,
} from './MenuItem.js';
diff --git a/packages/meter/exports.json b/packages/meter/exports.json
new file mode 100644
index 00000000000..5cc9f636759
--- /dev/null
+++ b/packages/meter/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-meter.js": "./sp-meter.js"
+}
diff --git a/packages/meter/package.json b/packages/meter/package.json
index 054bc9e4ba7..cd710dcc3e5 100644
--- a/packages/meter/package.json
+++ b/packages/meter/package.json
@@ -20,11 +20,24 @@
"module": "src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-meter": "./sp-meter.js",
- "./sp-meter.js": "./sp-meter.js"
+ "./src/Meter.js": {
+ "development": "./src/Meter.dev.js",
+ "default": "./src/Meter.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/meter.css.js": "./src/meter.css.js",
+ "./sp-meter.js": {
+ "development": "./sp-meter.dev.js",
+ "default": "./sp-meter.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/modal/exports.json b/packages/modal/exports.json
new file mode 100644
index 00000000000..77a9c673465
--- /dev/null
+++ b/packages/modal/exports.json
@@ -0,0 +1,4 @@
+{
+ ".": "./src/modal-wrapper.css.js",
+ "./src/*": "./src/*"
+}
diff --git a/packages/modal/package.json b/packages/modal/package.json
index 60451466e20..c264f763bca 100644
--- a/packages/modal/package.json
+++ b/packages/modal/package.json
@@ -20,9 +20,10 @@
"module": "src/modal.css.js",
"type": "module",
"exports": {
- ".": "./src/modal.css.js",
- "./src/*": "./src/*",
- "./package.json": "./package.json"
+ ".": "./src/modal-wrapper.css.js",
+ "./package.json": "./package.json",
+ "./src/modal-wrapper.css.js": "./src/modal-wrapper.css.js",
+ "./src/modal.css.js": "./src/modal.css.js"
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/number-field/exports.json b/packages/number-field/exports.json
new file mode 100644
index 00000000000..04a2d0987f3
--- /dev/null
+++ b/packages/number-field/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*.js",
+ "./sp-number-field.js": "./sp-number-field.js"
+}
diff --git a/packages/number-field/package.json b/packages/number-field/package.json
index 18232b1d296..6e4a3bda441 100644
--- a/packages/number-field/package.json
+++ b/packages/number-field/package.json
@@ -20,11 +20,24 @@
"module": "src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*.js",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-number-field": "./sp-number-field.js",
- "./sp-number-field.js": "./sp-number-field.js"
+ "./src/NumberField.js": {
+ "development": "./src/NumberField.dev.js",
+ "default": "./src/NumberField.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/number-field.css.js": "./src/number-field.css.js",
+ "./sp-number-field.js": {
+ "development": "./sp-number-field.dev.js",
+ "default": "./sp-number-field.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/overlay/exports.json b/packages/overlay/exports.json
new file mode 100644
index 00000000000..97d68b88daa
--- /dev/null
+++ b/packages/overlay/exports.json
@@ -0,0 +1,6 @@
+{
+ "./src/*": "./src/*",
+ "./active-overlay.js": "./active-overlay.js",
+ "./overlay-trigger.js": "./overlay-trigger.js",
+ "./sync/overlay-trigger.js": "./sync/overlay-trigger.js"
+}
diff --git a/packages/overlay/package.json b/packages/overlay/package.json
index 8df30ad98a4..3d1c3a064e1 100644
--- a/packages/overlay/package.json
+++ b/packages/overlay/package.json
@@ -20,15 +20,69 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./active-overlay": "./active-overlay.js",
- "./active-overlay.js": "./active-overlay.js",
- "./overlay-trigger": "./overlay-trigger.js",
- "./overlay-trigger.js": "./overlay-trigger.js",
- "./sync/overlay-trigger": "./sync/overlay-trigger.js",
- "./sync/overlay-trigger.js": "./sync/overlay-trigger.js"
+ "./src/ActiveOverlay.js": {
+ "development": "./src/ActiveOverlay.dev.js",
+ "default": "./src/ActiveOverlay.js"
+ },
+ "./src/OverlayTrigger.js": {
+ "development": "./src/OverlayTrigger.dev.js",
+ "default": "./src/OverlayTrigger.js"
+ },
+ "./src/VirtualTrigger.js": {
+ "development": "./src/VirtualTrigger.dev.js",
+ "default": "./src/VirtualTrigger.js"
+ },
+ "./src/active-overlay.css.js": "./src/active-overlay.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/loader.js": {
+ "development": "./src/loader.dev.js",
+ "default": "./src/loader.js"
+ },
+ "./src/overlay-events.js": {
+ "development": "./src/overlay-events.dev.js",
+ "default": "./src/overlay-events.js"
+ },
+ "./src/overlay-stack.js": {
+ "development": "./src/overlay-stack.dev.js",
+ "default": "./src/overlay-stack.js"
+ },
+ "./src/overlay-timer.js": {
+ "development": "./src/overlay-timer.dev.js",
+ "default": "./src/overlay-timer.js"
+ },
+ "./src/overlay-trigger.css.js": "./src/overlay-trigger.css.js",
+ "./src/overlay-types.js": {
+ "development": "./src/overlay-types.dev.js",
+ "default": "./src/overlay-types.js"
+ },
+ "./src/overlay-utils.js": {
+ "development": "./src/overlay-utils.dev.js",
+ "default": "./src/overlay-utils.js"
+ },
+ "./src/overlay.js": {
+ "development": "./src/overlay.dev.js",
+ "default": "./src/overlay.js"
+ },
+ "./active-overlay.js": {
+ "development": "./active-overlay.dev.js",
+ "default": "./active-overlay.js"
+ },
+ "./overlay-trigger.js": {
+ "development": "./overlay-trigger.dev.js",
+ "default": "./overlay-trigger.js"
+ },
+ "./sync/overlay-trigger.js": {
+ "development": "./sync/overlay-trigger.dev.js",
+ "default": "./sync/overlay-trigger.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/overlay/src/loader.ts b/packages/overlay/src/loader.ts
index f92e8c4eb5f..427dfaad11a 100644
--- a/packages/overlay/src/loader.ts
+++ b/packages/overlay/src/loader.ts
@@ -18,6 +18,8 @@ export const openOverlay = async (
content: HTMLElement,
options: OverlayOptions
): Promise<() => void> => {
- const { Overlay } = await import('./overlay.js');
+ const { Overlay } = await import(
+ '@spectrum-web-components/overlay/src/overlay.js'
+ );
return Overlay.open(target, interaction, content, options);
};
diff --git a/packages/picker/exports.json b/packages/picker/exports.json
new file mode 100644
index 00000000000..ebf5a31a4fb
--- /dev/null
+++ b/packages/picker/exports.json
@@ -0,0 +1,5 @@
+{
+ "./src/*": "./src/*",
+ "./sync/*": "./sync/*",
+ "./sp-picker.js": "./sp-picker.js"
+}
diff --git a/packages/picker/package.json b/packages/picker/package.json
index c916b236654..a1aad2d46c2 100644
--- a/packages/picker/package.json
+++ b/packages/picker/package.json
@@ -20,15 +20,32 @@
"module": "src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-picker": "./sp-picker.js",
- "./sp-picker.js": "./sp-picker.js",
- "./sync": "./sync/index.js",
- "./sync/index.js": "./sync/index.js",
- "./sync/sp-picker": "./sync/sp-picker.js",
- "./sync/sp-picker.js": "./sync/sp-picker.js"
+ "./src/Picker.js": {
+ "development": "./src/Picker.dev.js",
+ "default": "./src/Picker.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/picker.css.js": "./src/picker.css.js",
+ "./sync/index.js": {
+ "development": "./sync/index.dev.js",
+ "default": "./sync/index.js"
+ },
+ "./sync/sp-picker.js": {
+ "development": "./sync/sp-picker.dev.js",
+ "default": "./sync/sp-picker.js"
+ },
+ "./sp-picker.js": {
+ "development": "./sp-picker.dev.js",
+ "default": "./sp-picker.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/picker/src/Picker.ts b/packages/picker/src/Picker.ts
index bc8483cbb67..f730c4d4f63 100644
--- a/packages/picker/src/Picker.ts
+++ b/packages/picker/src/Picker.ts
@@ -278,19 +278,13 @@ export class PickerBase extends SizedMixin(Focusable) {
private popoverFragment!: DocumentFragment;
- private async generatePopover(deprecatedMenu: Menu | null): Promise {
+ private async generatePopover(): Promise {
if (!this.popoverFragment) {
this.popoverFragment = document.createDocumentFragment();
}
render(this.renderPopover, this.popoverFragment, { host: this });
this.popover = this.popoverFragment.children[0] as Popover;
this.optionsMenu = this.popover.children[1] as Menu;
-
- if (deprecatedMenu) {
- console.warn(
- `Deprecation Notice: You no longer need to provide an sp-menu child to ${this.tagName.toLowerCase()}. Any styling or attributes on the sp-menu will be ignored.`
- );
- }
}
private async openMenu(): Promise {
@@ -298,7 +292,7 @@ export class PickerBase extends SizedMixin(Focusable) {
let reparentableChildren: Element[] = [];
const deprecatedMenu = this.querySelector(':scope > sp-menu') as Menu;
- await this.generatePopover(deprecatedMenu);
+ await this.generatePopover();
if (deprecatedMenu) {
reparentableChildren = Array.from(deprecatedMenu.children);
} else {
@@ -457,6 +451,17 @@ export class PickerBase extends SizedMixin(Focusable) {
if (changes.has('value') && !changes.has('selectedItem')) {
this.updateMenuItems();
}
+ if (window.__swc.DEBUG) {
+ if (!this.hasUpdated && this.querySelector('sp-menu')) {
+ const { localName } = this;
+ window.__swc.warn(
+ this,
+ `You no longer need to provide an child to ${localName}. Any styling or attributes on the will be ignored.`,
+ 'https://opensource.adobe.com/spectrum-web-components/components/picker/#sizes',
+ { level: 'deprecation' },
+ );
+ }
+ }
super.update(changes);
}
diff --git a/packages/picker/test/index.ts b/packages/picker/test/index.ts
index 36fcd80a4da..51c381f253f 100644
--- a/packages/picker/test/index.ts
+++ b/packages/picker/test/index.ts
@@ -10,7 +10,7 @@ OF ANY KIND, either express or implied. See the License for the specific languag
governing permissions and limitations under the License.
*/
-import type { Picker } from '..';
+import type { Picker } from '@spectrum-web-components/picker';
import type { OverlayOpenCloseDetail } from '@spectrum-web-components/overlay';
import type { MenuItem } from '@spectrum-web-components/menu';
@@ -24,7 +24,7 @@ import {
waitUntil,
} from '@open-wc/testing';
import '@spectrum-web-components/shared/src/focus-visible.js';
-import { spy } from 'sinon';
+import { spy, stub } from 'sinon';
import {
arrowDownEvent,
arrowLeftEvent,
@@ -1047,38 +1047,79 @@ export function runPickerTests(): void {
return test.querySelector('sp-picker') as Picker;
};
- beforeEach(async () => {
- el = await pickerFixture();
- await elementUpdated(el);
- });
- afterEach(async () => {
- if (el.open) {
- const closed = oneEvent(el, 'sp-closed');
- el.open = false;
- await closed;
- }
+ describe('Dev mode', () => {
+ it('warns in Dev Mode of deprecated `` usage', async () => {
+ const consoleWarnStub = stub(console, 'warn');
+ el = await pickerFixture();
+ await elementUpdated(el);
+
+ expect(consoleWarnStub.called).to.be.true;
+ const spyCall = consoleWarnStub.getCall(0);
+ expect(
+ spyCall.args.at(0).includes(''),
+ 'confirm -centric message'
+ ).to.be.true;
+ expect(
+ spyCall.args.at(-1),
+ 'confirm `data` shape'
+ ).to.deep.equal({
+ data: {
+ localName: 'sp-picker',
+ type: 'api',
+ level: 'deprecation',
+ },
+ });
+ consoleWarnStub.restore();
+ if (el.open) {
+ const closed = oneEvent(el, 'sp-closed');
+ el.open = false;
+ await closed;
+ }
+ });
});
- it('selects with deprecated syntax', async () => {
- const secondItem = el.querySelector(
- 'sp-menu-item:nth-of-type(2)'
- ) as MenuItem;
+ describe('Dev mode ignored', () => {
+ const { ignoreWarningLocalNames } = window.__swc;
+ before(() => {
+ window.__swc.ignoreWarningLocalNames = {
+ 'sp-picker': true,
+ };
+ });
+ before(() => {
+ window.__swc.ignoreWarningLocalNames = ignoreWarningLocalNames;
+ });
+ beforeEach(async () => {
+ el = await pickerFixture();
+ await elementUpdated(el);
+ });
+ afterEach(async () => {
+ if (el.open) {
+ const closed = oneEvent(el, 'sp-closed');
+ el.open = false;
+ await closed;
+ }
+ });
+ it('selects with deprecated syntax', async () => {
+ const secondItem = el.querySelector(
+ 'sp-menu-item:nth-of-type(2)'
+ ) as MenuItem;
- const opened = oneEvent(el, 'sp-opened');
- el.button.click();
- await opened;
- await elementUpdated(el);
+ const opened = oneEvent(el, 'sp-opened');
+ el.button.click();
+ await opened;
+ await elementUpdated(el);
- expect(el.open).to.be.true;
- expect(el.selectedItem?.itemText).to.be.undefined;
- expect(el.value).to.equal('');
+ expect(el.open).to.be.true;
+ expect(el.selectedItem?.itemText).to.be.undefined;
+ expect(el.value).to.equal('');
- const closed = oneEvent(el, 'sp-closed');
- secondItem.click();
- await closed;
+ const closed = oneEvent(el, 'sp-closed');
+ secondItem.click();
+ await closed;
- expect(el.open).to.be.false;
- expect(el.selectedItem?.itemText).to.equal('Select Inverse');
- expect(el.value).to.equal('option-2');
+ expect(el.open).to.be.false;
+ expect(el.selectedItem?.itemText).to.equal('Select Inverse');
+ expect(el.value).to.equal('option-2');
+ });
});
});
testForLitDevWarnings(async () => await pickerFixture());
diff --git a/packages/popover/exports.json b/packages/popover/exports.json
new file mode 100644
index 00000000000..5aec5e57f6e
--- /dev/null
+++ b/packages/popover/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-popover.js": "./sp-popover.js"
+}
diff --git a/packages/popover/package.json b/packages/popover/package.json
index 1c3af635b23..2f39a9ce7b9 100644
--- a/packages/popover/package.json
+++ b/packages/popover/package.json
@@ -20,11 +20,24 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-popover": "./sp-popover.js",
- "./sp-popover.js": "./sp-popover.js"
+ "./src/Popover.js": {
+ "development": "./src/Popover.dev.js",
+ "default": "./src/Popover.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/popover.css.js": "./src/popover.css.js",
+ "./sp-popover.js": {
+ "development": "./sp-popover.dev.js",
+ "default": "./sp-popover.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/progress-bar/exports.json b/packages/progress-bar/exports.json
new file mode 100644
index 00000000000..6c79d2b38ea
--- /dev/null
+++ b/packages/progress-bar/exports.json
@@ -0,0 +1,6 @@
+{
+ ".": "./src/index.js",
+ "./src/*.js": "./src/*.js",
+ "./package.json": "./package.json",
+ "./sp-progress-bar.js": "./sp-progress-bar.js"
+}
diff --git a/packages/progress-bar/package.json b/packages/progress-bar/package.json
index ce077f2c5a9..97440323c88 100644
--- a/packages/progress-bar/package.json
+++ b/packages/progress-bar/package.json
@@ -20,11 +20,24 @@
"module": "src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-progress-bar": "./sp-progress-bar.js",
- "./sp-progress-bar.js": "./sp-progress-bar.js"
+ "./src/ProgressBar.js": {
+ "development": "./src/ProgressBar.dev.js",
+ "default": "./src/ProgressBar.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/progress-bar.css.js": "./src/progress-bar.css.js",
+ "./sp-progress-bar.js": {
+ "development": "./sp-progress-bar.dev.js",
+ "default": "./sp-progress-bar.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/progress-bar/src/ProgressBar.ts b/packages/progress-bar/src/ProgressBar.ts
index 99fc0814648..7bf0e44b82b 100644
--- a/packages/progress-bar/src/ProgressBar.ts
+++ b/packages/progress-bar/src/ProgressBar.ts
@@ -100,5 +100,27 @@ export class ProgressBar extends SizedMixin(SpectrumElement) {
if (this.label && changes.has('label')) {
this.setAttribute('aria-label', this.label);
}
+
+ if (window.__swc.DEBUG) {
+ if (
+ !this.label &&
+ !this.getAttribute('aria-label') &&
+ !this.getAttribute('aria-labelledby')
+ ) {
+ window.__swc.warn(
+ this,
+ ' elements will not be accessible to screen readers without one of the following:',
+ 'https://opensource.adobe.com/spectrum-web-components/components/progress-bar/#accessibility',
+ {
+ type: 'accessibility',
+ issues: [
+ 'value supplied to the "label" attribute, which will be displayed visually as part of the element, or',
+ 'value supplied to the "aria-label" attribute, which will only be provided to screen readers, or',
+ 'an element ID reference supplied to the "aria-labelledby" attribute, which will be provided by screen readers and will need to be managed manually by the parent application.',
+ ]
+ },
+ );
+ }
+ }
}
}
diff --git a/packages/progress-bar/test/progress-bar.test.ts b/packages/progress-bar/test/progress-bar.test.ts
index 2e0f803ad51..81bba7a19b6 100644
--- a/packages/progress-bar/test/progress-bar.test.ts
+++ b/packages/progress-bar/test/progress-bar.test.ts
@@ -14,6 +14,7 @@ import { elementUpdated, expect, fixture, html } from '@open-wc/testing';
import '@spectrum-web-components/progress-bar/sp-progress-bar.js';
import { ProgressBar } from '@spectrum-web-components/progress-bar';
+import { stub } from 'sinon';
import { testForLitDevWarnings } from '../../../test/testing-helpers.js';
describe('ProgressBar', () => {
@@ -103,4 +104,27 @@ describe('ProgressBar', () => {
expect(el.hasAttribute('aria-valuenow')).to.be.false;
});
+ it('warns in Dev Mode when accessible attributes are not leveraged', async () => {
+ const consoleWarnStub = stub(console, 'warn');
+ const el = await fixture(html`
+
+ `);
+
+ await elementUpdated(el);
+
+ expect(consoleWarnStub.called).to.be.true;
+ const spyCall = consoleWarnStub.getCall(0);
+ expect(
+ spyCall.args.at(0).includes('accessible'),
+ 'confirm accessibility-centric message'
+ ).to.be.true;
+ expect(spyCall.args.at(-1), 'confirm `data` shape').to.deep.equal({
+ data: {
+ localName: 'sp-progress-bar',
+ type: 'accessibility',
+ level: 'default',
+ },
+ });
+ consoleWarnStub.restore();
+ });
});
diff --git a/packages/progress-circle/exports.json b/packages/progress-circle/exports.json
new file mode 100644
index 00000000000..30c15ad849b
--- /dev/null
+++ b/packages/progress-circle/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-progress-circle.js": "./sp-progress-circle.js"
+}
diff --git a/packages/progress-circle/package.json b/packages/progress-circle/package.json
index f1c1023161f..0d6c131b9ab 100644
--- a/packages/progress-circle/package.json
+++ b/packages/progress-circle/package.json
@@ -20,11 +20,24 @@
"module": "src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-progress-circle": "./sp-progress-circle.js",
- "./sp-progress-circle.js": "./sp-progress-circle.js"
+ "./src/ProgressCircle.js": {
+ "development": "./src/ProgressCircle.dev.js",
+ "default": "./src/ProgressCircle.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/progress-circle.css.js": "./src/progress-circle.css.js",
+ "./sp-progress-circle.js": {
+ "development": "./sp-progress-circle.dev.js",
+ "default": "./sp-progress-circle.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/progress-circle/src/ProgressCircle.ts b/packages/progress-circle/src/ProgressCircle.ts
index 505d011503d..6f150448c99 100644
--- a/packages/progress-circle/src/ProgressCircle.ts
+++ b/packages/progress-circle/src/ProgressCircle.ts
@@ -95,5 +95,27 @@ export class ProgressCircle extends SizedMixin(SpectrumElement, {
if (this.label && changes.has('label')) {
this.setAttribute('aria-label', this.label);
}
+
+ if (window.__swc.DEBUG) {
+ if (
+ !this.label &&
+ !this.getAttribute('aria-label') &&
+ !this.getAttribute('aria-labelledby')
+ ) {
+ window.__swc.warn(
+ this,
+ ' elements will not be accessible to screen readers without one of the following:',
+ 'https://opensource.adobe.com/spectrum-web-components/components/progress-circle/#accessibility',
+ {
+ type: 'accessibility',
+ issues: [
+ 'value supplied to the "label" attribute, which will be displayed visually as part of the element, or',
+ 'value supplied to the "aria-label" attribute, which will only be provided to screen readers, or',
+ 'an element ID reference supplied to the "aria-labelledby" attribute, which will be provided by screen readers and will need to be managed manually by the parent application.',
+ ]
+ },
+ );
+ }
+ }
}
}
diff --git a/packages/progress-circle/test/progress-circle.test.ts b/packages/progress-circle/test/progress-circle.test.ts
index 42bb2d54a9c..6c13a88f6bc 100644
--- a/packages/progress-circle/test/progress-circle.test.ts
+++ b/packages/progress-circle/test/progress-circle.test.ts
@@ -14,6 +14,7 @@ import { elementUpdated, expect, fixture, html } from '@open-wc/testing';
import '@spectrum-web-components/progress-circle/sp-progress-circle.js';
import { ProgressCircle } from '@spectrum-web-components/progress-circle';
+import { stub } from 'sinon';
import { testForLitDevWarnings } from '../../../test/testing-helpers.js';
describe('ProgressCircle', () => {
@@ -77,4 +78,27 @@ describe('ProgressCircle', () => {
expect(el.hasAttribute('aria-valuenow')).to.be.false;
});
+ it('warns in Dev Mode when accessible attributes are not leveraged', async () => {
+ const consoleWarnStub = stub(console, 'warn');
+ const el = await fixture(html`
+
+ `);
+
+ await elementUpdated(el);
+
+ expect(consoleWarnStub.called).to.be.true;
+ const spyCall = consoleWarnStub.getCall(0);
+ expect(
+ spyCall.args.at(0).includes('accessible'),
+ 'confirm accessibility-centric message'
+ ).to.be.true;
+ expect(spyCall.args.at(-1), 'confirm `data` shape').to.deep.equal({
+ data: {
+ localName: 'sp-progress-circle',
+ type: 'accessibility',
+ level: 'default',
+ },
+ });
+ consoleWarnStub.restore();
+ });
});
diff --git a/packages/quick-actions/exports.json b/packages/quick-actions/exports.json
new file mode 100644
index 00000000000..0bc4b662207
--- /dev/null
+++ b/packages/quick-actions/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-quick-actions.js": "./sp-quick-actions.js"
+}
diff --git a/packages/quick-actions/package.json b/packages/quick-actions/package.json
index 4f1c7f6b8f4..4c638609c4e 100644
--- a/packages/quick-actions/package.json
+++ b/packages/quick-actions/package.json
@@ -20,11 +20,24 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-quick-actions": "./sp-quick-actions.js",
- "./sp-quick-actions.js": "./sp-quick-actions.js"
+ "./src/QuickActions.js": {
+ "development": "./src/QuickActions.dev.js",
+ "default": "./src/QuickActions.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/quick-actions.css.js": "./src/quick-actions.css.js",
+ "./sp-quick-actions.js": {
+ "development": "./sp-quick-actions.dev.js",
+ "default": "./sp-quick-actions.js"
+ }
},
"scripts": {
"test": "karma start --coverage"
diff --git a/packages/radio/exports.json b/packages/radio/exports.json
new file mode 100644
index 00000000000..b4c63f03d82
--- /dev/null
+++ b/packages/radio/exports.json
@@ -0,0 +1,5 @@
+{
+ "./src/*": "./src/*",
+ "./sp-radio.js": "./sp-radio.js",
+ "./sp-radio-group.js": "./sp-radio-group.js"
+}
diff --git a/packages/radio/package.json b/packages/radio/package.json
index 98a227ce9b7..789d12320eb 100644
--- a/packages/radio/package.json
+++ b/packages/radio/package.json
@@ -20,13 +20,32 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-radio": "./sp-radio.js",
- "./sp-radio.js": "./sp-radio.js",
- "./sp-radio-group": "./sp-radio-group.js",
- "./sp-radio-group.js": "./sp-radio-group.js"
+ "./src/Radio.js": {
+ "development": "./src/Radio.dev.js",
+ "default": "./src/Radio.js"
+ },
+ "./src/RadioGroup.js": {
+ "development": "./src/RadioGroup.dev.js",
+ "default": "./src/RadioGroup.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/radio.css.js": "./src/radio.css.js",
+ "./sp-radio.js": {
+ "development": "./sp-radio.dev.js",
+ "default": "./sp-radio.js"
+ },
+ "./sp-radio-group.js": {
+ "development": "./sp-radio-group.dev.js",
+ "default": "./sp-radio-group.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/search/exports.json b/packages/search/exports.json
new file mode 100644
index 00000000000..8db4a9af07a
--- /dev/null
+++ b/packages/search/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-search.js": "./sp-search.js"
+}
diff --git a/packages/search/package.json b/packages/search/package.json
index 19452bf2822..2dcec349d50 100644
--- a/packages/search/package.json
+++ b/packages/search/package.json
@@ -20,11 +20,24 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-search": "./sp-search.js",
- "./sp-search.js": "./sp-search.js"
+ "./src/Search.js": {
+ "development": "./src/Search.dev.js",
+ "default": "./src/Search.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/search.css.js": "./src/search.css.js",
+ "./sp-search.js": {
+ "development": "./sp-search.dev.js",
+ "default": "./sp-search.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/shared/exports.json b/packages/shared/exports.json
new file mode 100644
index 00000000000..266304b99db
--- /dev/null
+++ b/packages/shared/exports.json
@@ -0,0 +1,3 @@
+{
+ "./src/*": "./src/*"
+}
diff --git a/packages/shared/package.json b/packages/shared/package.json
index 175c7974f23..ddcfef616d9 100644
--- a/packages/shared/package.json
+++ b/packages/shared/package.json
@@ -20,9 +20,55 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
- "./package.json": "./package.json"
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./package.json": "./package.json",
+ "./src/first-focusable-in.js": {
+ "development": "./src/first-focusable-in.dev.js",
+ "default": "./src/first-focusable-in.js"
+ },
+ "./src/focus-visible.js": {
+ "development": "./src/focus-visible.dev.js",
+ "default": "./src/focus-visible.js"
+ },
+ "./src/focusable.js": {
+ "development": "./src/focusable.dev.js",
+ "default": "./src/focusable.js"
+ },
+ "./src/get-active-element.js": {
+ "development": "./src/get-active-element.dev.js",
+ "default": "./src/get-active-element.js"
+ },
+ "./src/get-deep-element-from-point.js": {
+ "development": "./src/get-deep-element-from-point.dev.js",
+ "default": "./src/get-deep-element-from-point.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/like-anchor.js": {
+ "development": "./src/like-anchor.dev.js",
+ "default": "./src/like-anchor.js"
+ },
+ "./src/observe-slot-presence.js": {
+ "development": "./src/observe-slot-presence.dev.js",
+ "default": "./src/observe-slot-presence.js"
+ },
+ "./src/observe-slot-text.js": {
+ "development": "./src/observe-slot-text.dev.js",
+ "default": "./src/observe-slot-text.js"
+ },
+ "./src/platform.js": {
+ "development": "./src/platform.dev.js",
+ "default": "./src/platform.js"
+ },
+ "./src/reparent-children.js": {
+ "development": "./src/reparent-children.dev.js",
+ "default": "./src/reparent-children.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/sidenav/exports.json b/packages/sidenav/exports.json
new file mode 100644
index 00000000000..f418bd6a936
--- /dev/null
+++ b/packages/sidenav/exports.json
@@ -0,0 +1,6 @@
+{
+ "./src/*": "./src/*",
+ "./sp-sidenav.js": "./sp-sidenav.js",
+ "./sp-sidenav-heading.js": "./sp-sidenav-heading.js",
+ "./sp-sidenav-item.js": "./sp-sidenav-item.js"
+}
diff --git a/packages/sidenav/package.json b/packages/sidenav/package.json
index 402659000dc..409c1c9ea03 100644
--- a/packages/sidenav/package.json
+++ b/packages/sidenav/package.json
@@ -20,15 +20,42 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-sidenav": "./sp-sidenav.js",
- "./sp-sidenav.js": "./sp-sidenav.js",
- "./sp-sidenav-heading": "./sp-sidenav-heading.js",
- "./sp-sidenav-heading.js": "./sp-sidenav-heading.js",
- "./sp-sidenav-item": "./sp-sidenav-item.js",
- "./sp-sidenav-item.js": "./sp-sidenav-item.js"
+ "./src/Sidenav.js": {
+ "development": "./src/Sidenav.dev.js",
+ "default": "./src/Sidenav.js"
+ },
+ "./src/SidenavHeading.js": {
+ "development": "./src/SidenavHeading.dev.js",
+ "default": "./src/SidenavHeading.js"
+ },
+ "./src/SidenavItem.js": {
+ "development": "./src/SidenavItem.dev.js",
+ "default": "./src/SidenavItem.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/sidenav-heading.css.js": "./src/sidenav-heading.css.js",
+ "./src/sidenav-item.css.js": "./src/sidenav-item.css.js",
+ "./src/sidenav.css.js": "./src/sidenav.css.js",
+ "./sp-sidenav.js": {
+ "development": "./sp-sidenav.dev.js",
+ "default": "./sp-sidenav.js"
+ },
+ "./sp-sidenav-heading.js": {
+ "development": "./sp-sidenav-heading.dev.js",
+ "default": "./sp-sidenav-heading.js"
+ },
+ "./sp-sidenav-item.js": {
+ "development": "./sp-sidenav-item.dev.js",
+ "default": "./sp-sidenav-item.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/slider/exports.json b/packages/slider/exports.json
new file mode 100644
index 00000000000..79db2ab876f
--- /dev/null
+++ b/packages/slider/exports.json
@@ -0,0 +1,6 @@
+{
+ "./src/*": "./src/*",
+ "./sp-slider.js": "./sp-slider.js",
+ "./sp-slider-handle.js": "./sp-slider-handle.js",
+ "./sync/sp-slider.js": "./sync/sp-slider.js"
+}
diff --git a/packages/slider/package.json b/packages/slider/package.json
index ea5e7d52d61..39f425967e8 100644
--- a/packages/slider/package.json
+++ b/packages/slider/package.json
@@ -20,15 +20,40 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-slider": "./sp-slider.js",
- "./sp-slider.js": "./sp-slider.js",
- "./sp-slider-handle": "./sp-slider-handle.js",
- "./sp-slider-handle.js": "./sp-slider-handle.js",
- "./sync/sp-slider": "./sync/sp-slider.js",
- "./sync/sp-slider.js": "./sync/sp-slider.js"
+ "./src/HandleController.js": {
+ "development": "./src/HandleController.dev.js",
+ "default": "./src/HandleController.js"
+ },
+ "./src/Slider.js": {
+ "development": "./src/Slider.dev.js",
+ "default": "./src/Slider.js"
+ },
+ "./src/SliderHandle.js": {
+ "development": "./src/SliderHandle.dev.js",
+ "default": "./src/SliderHandle.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/slider.css.js": "./src/slider.css.js",
+ "./sp-slider.js": {
+ "development": "./sp-slider.dev.js",
+ "default": "./sp-slider.js"
+ },
+ "./sp-slider-handle.js": {
+ "development": "./sp-slider-handle.dev.js",
+ "default": "./sp-slider-handle.js"
+ },
+ "./sync/sp-slider.js": {
+ "development": "./sync/sp-slider.dev.js",
+ "default": "./sync/sp-slider.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/slider/slider-handle.md b/packages/slider/slider-handle.md
index 8b371d152de..afb14561b5a 100644
--- a/packages/slider/slider-handle.md
+++ b/packages/slider/slider-handle.md
@@ -51,7 +51,7 @@ This examples uses the `"range"` variant along with two handles to create a rang
## Multi-handle Slider with Ordered Handles
-For slider handles that have the same numeric range, you can specify `min="previous"` or `max="next"` to constrain handles by the values of their neighbours.
+For slider handles that have the same numeric range, you can specify `min="previous"` or `max="next"` to constrain handles by the values of their `previous/nextElementSiblings`. Keep in mind that the _first_ slider handle with not have a `previous` handle to be its `min` and the _last_ slider handle will not have a `next` handle to be its `max`.
```html
diff --git a/packages/slider/src/HandleController.ts b/packages/slider/src/HandleController.ts
index de0b74ba2c1..75e3d5366cd 100644
--- a/packages/slider/src/HandleController.ts
+++ b/packages/slider/src/HandleController.ts
@@ -589,11 +589,15 @@ export class HandleController implements Controller {
previous.value,
result.range.min
);
- /* c8 ignore next 5 */
- } else {
- console.warn(
- 'First slider handle cannot have attribute min="previous"'
- );
+ }
+ if (window.__swc.DEBUG) {
+ if (!previous) {
+ window.__swc.warn(
+ this.host,
+ ' elements that are the first child of an element cannot have attribute "min=\'previous\'"`',
+ 'https://opensource.adobe.com/spectrum-web-components/components/slider-handle/#multi-handle-slider-with-ordered-handles'
+ );
+ }
}
}
if (handle.max === 'next') {
@@ -606,11 +610,15 @@ export class HandleController implements Controller {
}
}
result.clamp.max = Math.min(next.value, result.range.max);
- /* c8 ignore next 5 */
- } else {
- console.warn(
- 'Last slider handle cannot have attribute max="next"'
- );
+ }
+ if (window.__swc.DEBUG) {
+ if (!next) {
+ window.__swc.warn(
+ this.host,
+ ' elements that are the last child of an element cannot have attribute "max=\'next\'"',
+ 'https://opensource.adobe.com/spectrum-web-components/components/slider-handle/#multi-handle-slider-with-ordered-handles'
+ );
+ }
}
}
return result;
diff --git a/packages/slider/test/slider.test.ts b/packages/slider/test/slider.test.ts
index aa9ec302b25..d6934d3fd5a 100644
--- a/packages/slider/test/slider.test.ts
+++ b/packages/slider/test/slider.test.ts
@@ -26,6 +26,7 @@ import {
import { sendKeys } from '@web/test-runner-commands';
import { ProvideLang } from '@spectrum-web-components/theme';
import { sendMouse } from '../../../test/plugins/browser.js';
+import { stub } from 'sinon';
import { testForLitDevWarnings } from '../../../test/testing-helpers.js';
describe('Slider', () => {
@@ -1073,6 +1074,104 @@ describe('Slider', () => {
await elementUpdated(el);
expect(el.values).to.deep.equal({ a: 10, b: 10, c: 10 });
});
+ it('warns in Dev Mode when `min="previous"` is leveraged on first handle', async () => {
+ const consoleWarnStub = stub(console, 'warn');
+ window.__swc.issuedWarnings = new Set();
+ const el = await fixture(
+ html`
+
+
+
+
+
+ `
+ );
+
+ await elementUpdated(el);
+
+ expect(consoleWarnStub.called).to.be.true;
+ const spyCall = consoleWarnStub.getCall(0);
+ expect(
+ spyCall.args.at(0).includes('previous'),
+ 'confirm "previous" in message'
+ ).to.be.true;
+ expect(spyCall.args.at(-1), 'confirm `data` shape').to.deep.equal({
+ data: {
+ localName: 'sp-slider',
+ type: 'api',
+ level: 'default',
+ },
+ });
+ consoleWarnStub.restore();
+ });
+ it('warns in Dev Mode when `max="next"` is leveraged on last handle', async () => {
+ const consoleWarnStub = stub(console, 'warn');
+ window.__swc.issuedWarnings = new Set();
+ const el = await fixture(
+ html`
+
+
+
+
+
+ `
+ );
+
+ await elementUpdated(el);
+
+ expect(consoleWarnStub.called).to.be.true;
+ const spyCall = consoleWarnStub.getCall(0);
+ expect(spyCall.args.at(0).includes('next'), 'confirm "next" in message')
+ .to.be.true;
+ expect(spyCall.args.at(-1), 'confirm `data` shape').to.deep.equal({
+ data: {
+ localName: 'sp-slider',
+ type: 'api',
+ level: 'default',
+ },
+ });
+ consoleWarnStub.restore();
+ });
it('builds both handles from a ', async () => {
const template = document.createElement('template');
template.innerHTML = `
diff --git a/packages/split-button/exports.json b/packages/split-button/exports.json
new file mode 100644
index 00000000000..0c86437a83b
--- /dev/null
+++ b/packages/split-button/exports.json
@@ -0,0 +1,5 @@
+{
+ "./src/*": "./src/*",
+ "./sp-split-button.js": "./sp-split-button.js",
+ "./sync/sp-split-button.js": "./sync/sp-split-button.js"
+}
diff --git a/packages/split-button/package.json b/packages/split-button/package.json
index 2c1354b39ef..79e7f73f58c 100644
--- a/packages/split-button/package.json
+++ b/packages/split-button/package.json
@@ -20,13 +20,28 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-split-button": "./sp-split-button.js",
- "./sp-split-button.js": "./sp-split-button.js",
- "./sync/sp-split-button": "./sync/sp-split-button.js",
- "./sync/sp-split-button.js": "./sync/sp-split-button.js"
+ "./src/SplitButton.js": {
+ "development": "./src/SplitButton.dev.js",
+ "default": "./src/SplitButton.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/split-button.css.js": "./src/split-button.css.js",
+ "./sp-split-button.js": {
+ "development": "./sp-split-button.dev.js",
+ "default": "./sp-split-button.js"
+ },
+ "./sync/sp-split-button.js": {
+ "development": "./sync/sp-split-button.dev.js",
+ "default": "./sync/sp-split-button.js"
+ }
},
"scripts": {
"test": "karma start --coverage"
diff --git a/packages/split-view/exports.json b/packages/split-view/exports.json
new file mode 100644
index 00000000000..2e2b381228a
--- /dev/null
+++ b/packages/split-view/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-split-view.js": "./sp-split-view.js"
+}
diff --git a/packages/split-view/package.json b/packages/split-view/package.json
index 9aa7629985d..788e944a133 100644
--- a/packages/split-view/package.json
+++ b/packages/split-view/package.json
@@ -20,11 +20,28 @@
"module": "src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-split-view": "./sp-split-view.js",
- "./sp-split-view.js": "./sp-split-view.js"
+ "./src/SplitView.js": {
+ "development": "./src/SplitView.dev.js",
+ "default": "./src/SplitView.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/split-view.css.js": "./src/split-view.css.js",
+ "./src/types.js": {
+ "development": "./src/types.dev.js",
+ "default": "./src/types.js"
+ },
+ "./sp-split-view.js": {
+ "development": "./sp-split-view.dev.js",
+ "default": "./sp-split-view.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/status-light/exports.json b/packages/status-light/exports.json
new file mode 100644
index 00000000000..961bf504e07
--- /dev/null
+++ b/packages/status-light/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-status-light.js": "./sp-status-light.js"
+}
diff --git a/packages/status-light/package.json b/packages/status-light/package.json
index 487c5577a7a..a73dfd30629 100644
--- a/packages/status-light/package.json
+++ b/packages/status-light/package.json
@@ -20,11 +20,24 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-status-light": "./sp-status-light.js",
- "./sp-status-light.js": "./sp-status-light.js"
+ "./src/StatusLight.js": {
+ "development": "./src/StatusLight.dev.js",
+ "default": "./src/StatusLight.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/status-light.css.js": "./src/status-light.css.js",
+ "./sp-status-light.js": {
+ "development": "./sp-status-light.dev.js",
+ "default": "./sp-status-light.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/styles/exports.json b/packages/styles/exports.json
new file mode 100644
index 00000000000..f0b96e67ca7
--- /dev/null
+++ b/packages/styles/exports.json
@@ -0,0 +1,52 @@
+{
+ "./all-large-dark.css": "./all-large-dark.css",
+ "./all-large-darkest.css": "./all-large-darkest.css",
+ "./all-large-light.css": "./all-large-light.css",
+ "./all-large-lightest.css": "./all-large-lightest.css",
+ "./all-medium-dark.css": "./all-medium-dark.css",
+ "./all-medium-darkest.css": "./all-medium-darkest.css",
+ "./all-medium-light.css": "./all-medium-light.css",
+ "./all-medium-lightest.css": "./all-medium-lightest.css",
+ "./core-global.css": "./core-global.css",
+ "./express/core-global.css": "./express/core-global.css",
+ "./fonts.css": "./fonts.css",
+ "./scale-large.css": "./scale-large.css",
+ "./express/scale-large.css": "./express/scale-large.css",
+ "./scale-medium.css": "./scale-medium.css",
+ "./express/scale-medium.css": "./express/scale-medium.css",
+ "./theme-dark.css": "./theme-dark.css",
+ "./express/theme-dark.css": "./express/theme-dark.css",
+ "./theme-darkest.css": "./theme-darkest.css",
+ "./express/theme-darkest.css": "./express/theme-darkest.css",
+ "./theme-light.css": "./theme-light.css",
+ "./express/theme-light.css": "./express/theme-light.css",
+ "./theme-lightest.css": "./theme-lightest.css",
+ "./express/theme-lightest.css": "./express/theme-lightest.css",
+ "./typography.css": "./typography.css",
+ "./body.js": "./body.js",
+ "./code.js": "./code.js",
+ "./detail.js": "./detail.js",
+ "./heading.js": "./heading.js",
+ "./typography.js": "./typography.js",
+ "./src/*": "./src/*",
+ "./tokens/*": "./tokens/*",
+ "./src/spectrum-base.css": "./src/spectrum-base.css",
+ "./src/spectrum-body.css": "./src/spectrum-body.css",
+ "./src/spectrum-code.css": "./src/spectrum-code.css",
+ "./src/spectrum-detail.css": "./src/spectrum-code.css",
+ "./src/spectrum-heading.css": "./src/spectrum-heading.css",
+ "./src/spectrum-lang.css": "./src/spectrum-lang.css",
+ "./src/spectrum-typography.css": "./src/spectrum-typography.css",
+ "./tokens/express/custom-large-vars.css": "./tokens/express/custom-large-vars.css",
+ "./tokens/express/custom-medium-vars.css": "./tokens/express/custom-medium-vars.css",
+ "./tokens/express/custom-vars.css": "./tokens/express/custom-vars.css",
+ "./tokens/express/global-vars.css": "./tokens/express/global-vars.css",
+ "./tokens/express/large-vars.css": "./tokens/express/large-vars.css",
+ "./tokens/express/medium-vars.css": "./tokens/express/medium-vars.css",
+ "./tokens/spectrum/custom-large-vars.css": "./tokens/spectrum/custom-large-vars.css",
+ "./tokens/spectrum/custom-medium-vars.css": "./tokens/spectrum/custom-medium-vars.css",
+ "./tokens/spectrum/custom-vars.css": "./tokens/spectrum/custom-vars.css",
+ "./tokens/spectrum/global-vars.css": "./tokens/spectrum/global-vars.css",
+ "./tokens/spectrum/large-vars.css": "./tokens/spectrum/large-vars.css",
+ "./tokens/spectrum/medium-vars.css": "./tokens/spectrum/medium-vars.css"
+}
diff --git a/packages/styles/package.json b/packages/styles/package.json
index e7ba056e86c..d036e3303c4 100644
--- a/packages/styles/package.json
+++ b/packages/styles/package.json
@@ -20,7 +20,11 @@
"module": "src/spectrum-base.css.js",
"type": "module",
"exports": {
- ".": "./src/spectrum-base.css.js",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./package.json": "./package.json",
"./all-large-dark.css": "./all-large-dark.css",
"./all-large-darkest.css": "./all-large-darkest.css",
"./all-large-light.css": "./all-large-light.css",
@@ -30,26 +34,60 @@
"./all-medium-light.css": "./all-medium-light.css",
"./all-medium-lightest.css": "./all-medium-lightest.css",
"./core-global.css": "./core-global.css",
+ "./express/core-global.css": "./express/core-global.css",
"./fonts.css": "./fonts.css",
"./scale-large.css": "./scale-large.css",
+ "./express/scale-large.css": "./express/scale-large.css",
"./scale-medium.css": "./scale-medium.css",
+ "./express/scale-medium.css": "./express/scale-medium.css",
"./theme-dark.css": "./theme-dark.css",
+ "./express/theme-dark.css": "./express/theme-dark.css",
"./theme-darkest.css": "./theme-darkest.css",
+ "./express/theme-darkest.css": "./express/theme-darkest.css",
"./theme-light.css": "./theme-light.css",
+ "./express/theme-light.css": "./express/theme-light.css",
"./theme-lightest.css": "./theme-lightest.css",
+ "./express/theme-lightest.css": "./express/theme-lightest.css",
"./typography.css": "./typography.css",
- "./body": "./body.js",
- "./body.js": "./body.js",
- "./code": "./code.js",
- "./code.js": "./code.js",
- "./detail": "./detail.js",
- "./detail.js": "./detail.js",
- "./heading": "./heading.js",
- "./heading.js": "./heading.js",
- "./typography": "./typography.js",
- "./typography.js": "./typography.js",
- "./src/*": "./src/*",
- "./tokens/*": "./tokens/*"
+ "./body.js": {
+ "development": "./body.dev.js",
+ "default": "./body.js"
+ },
+ "./code.js": {
+ "development": "./code.dev.js",
+ "default": "./code.js"
+ },
+ "./detail.js": {
+ "development": "./detail.dev.js",
+ "default": "./detail.js"
+ },
+ "./heading.js": {
+ "development": "./heading.dev.js",
+ "default": "./heading.js"
+ },
+ "./typography.js": {
+ "development": "./typography.dev.js",
+ "default": "./typography.js"
+ },
+ "./src/spectrum-base.css": "./src/spectrum-base.css",
+ "./src/spectrum-body.css": "./src/spectrum-body.css",
+ "./src/spectrum-code.css": "./src/spectrum-code.css",
+ "./src/spectrum-detail.css": "./src/spectrum-code.css",
+ "./src/spectrum-heading.css": "./src/spectrum-heading.css",
+ "./src/spectrum-lang.css": "./src/spectrum-lang.css",
+ "./src/spectrum-typography.css": "./src/spectrum-typography.css",
+ "./tokens/express/custom-large-vars.css": "./tokens/express/custom-large-vars.css",
+ "./tokens/express/custom-medium-vars.css": "./tokens/express/custom-medium-vars.css",
+ "./tokens/express/custom-vars.css": "./tokens/express/custom-vars.css",
+ "./tokens/express/global-vars.css": "./tokens/express/global-vars.css",
+ "./tokens/express/large-vars.css": "./tokens/express/large-vars.css",
+ "./tokens/express/medium-vars.css": "./tokens/express/medium-vars.css",
+ "./tokens/spectrum/custom-large-vars.css": "./tokens/spectrum/custom-large-vars.css",
+ "./tokens/spectrum/custom-medium-vars.css": "./tokens/spectrum/custom-medium-vars.css",
+ "./tokens/spectrum/custom-vars.css": "./tokens/spectrum/custom-vars.css",
+ "./tokens/spectrum/global-vars.css": "./tokens/spectrum/global-vars.css",
+ "./tokens/spectrum/large-vars.css": "./tokens/spectrum/large-vars.css",
+ "./tokens/spectrum/medium-vars.css": "./tokens/spectrum/medium-vars.css"
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/swatch/exports.json b/packages/swatch/exports.json
new file mode 100644
index 00000000000..79728fb4b21
--- /dev/null
+++ b/packages/swatch/exports.json
@@ -0,0 +1,5 @@
+{
+ "./src/*": "./src/*",
+ "./sp-swatch.js": "./sp-swatch.js",
+ "./sp-swatch-group.js": "./sp-swatch-group.js"
+}
diff --git a/packages/swatch/package.json b/packages/swatch/package.json
index db78c0886f5..2c5392e54f9 100644
--- a/packages/swatch/package.json
+++ b/packages/swatch/package.json
@@ -20,13 +20,33 @@
"module": "src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-swatch": "./sp-swatch.js",
- "./sp-swatch.js": "./sp-swatch.js",
- "./sp-swatch-group": "./sp-swatch-group.js",
- "./sp-swatch-group.js": "./sp-swatch-group.js"
+ "./src/Swatch.js": {
+ "development": "./src/Swatch.dev.js",
+ "default": "./src/Swatch.js"
+ },
+ "./src/SwatchGroup.js": {
+ "development": "./src/SwatchGroup.dev.js",
+ "default": "./src/SwatchGroup.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/swatch-group.css.js": "./src/swatch-group.css.js",
+ "./src/swatch.css.js": "./src/swatch.css.js",
+ "./sp-swatch.js": {
+ "development": "./sp-swatch.dev.js",
+ "default": "./sp-swatch.js"
+ },
+ "./sp-swatch-group.js": {
+ "development": "./sp-swatch-group.dev.js",
+ "default": "./sp-swatch-group.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/switch/exports.json b/packages/switch/exports.json
new file mode 100644
index 00000000000..0ad1e755de6
--- /dev/null
+++ b/packages/switch/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-switch.js": "./sp-switch.js"
+}
diff --git a/packages/switch/package.json b/packages/switch/package.json
index 5bf1c54618c..275a2d2e81a 100644
--- a/packages/switch/package.json
+++ b/packages/switch/package.json
@@ -20,11 +20,25 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-switch": "./sp-switch.js",
- "./sp-switch.js": "./sp-switch.js"
+ "./src/Switch.js": {
+ "development": "./src/Switch.dev.js",
+ "default": "./src/Switch.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/switch-legacy.css.js": "./src/switch-legacy.css.js",
+ "./src/switch.css.js": "./src/switch.css.js",
+ "./sp-switch.js": {
+ "development": "./sp-switch.dev.js",
+ "default": "./sp-switch.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/tabs/exports.json b/packages/tabs/exports.json
new file mode 100644
index 00000000000..f54ca1ab517
--- /dev/null
+++ b/packages/tabs/exports.json
@@ -0,0 +1,6 @@
+{
+ "./src/*": "./src/*",
+ "./sp-tabs.js": "./sp-tabs.js",
+ "./sp-tab.js": "./sp-tab.js",
+ "./sp-tab-panel.js": "./sp-tab-panel.js"
+}
diff --git a/packages/tabs/package.json b/packages/tabs/package.json
index d32d76c4d4f..7f11c0063a7 100644
--- a/packages/tabs/package.json
+++ b/packages/tabs/package.json
@@ -20,15 +20,42 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-tabs": "./sp-tabs.js",
- "./sp-tabs.js": "./sp-tabs.js",
- "./sp-tab": "./sp-tab.js",
- "./sp-tab.js": "./sp-tab.js",
- "./sp-tab-panel": "./sp-tab-panel.js",
- "./sp-tab-panel.js": "./sp-tab-panel.js"
+ "./src/Tab.js": {
+ "development": "./src/Tab.dev.js",
+ "default": "./src/Tab.js"
+ },
+ "./src/TabPanel.js": {
+ "development": "./src/TabPanel.dev.js",
+ "default": "./src/TabPanel.js"
+ },
+ "./src/Tabs.js": {
+ "development": "./src/Tabs.dev.js",
+ "default": "./src/Tabs.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/tab-panel.css.js": "./src/tab-panel.css.js",
+ "./src/tab.css.js": "./src/tab.css.js",
+ "./src/tabs.css.js": "./src/tabs.css.js",
+ "./sp-tabs.js": {
+ "development": "./sp-tabs.dev.js",
+ "default": "./sp-tabs.js"
+ },
+ "./sp-tab.js": {
+ "development": "./sp-tab.dev.js",
+ "default": "./sp-tab.js"
+ },
+ "./sp-tab-panel.js": {
+ "development": "./sp-tab-panel.dev.js",
+ "default": "./sp-tab-panel.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/tags/exports.json b/packages/tags/exports.json
new file mode 100644
index 00000000000..97d817cf96b
--- /dev/null
+++ b/packages/tags/exports.json
@@ -0,0 +1,5 @@
+{
+ "./src/*": "./src/*",
+ "./sp-tags.js": "./sp-tags.js",
+ "./sp-tag.js": "./sp-tag.js"
+}
diff --git a/packages/tags/package.json b/packages/tags/package.json
index b26a28d3be5..731547392fc 100644
--- a/packages/tags/package.json
+++ b/packages/tags/package.json
@@ -20,13 +20,33 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-tags": "./sp-tags.js",
- "./sp-tags.js": "./sp-tags.js",
- "./sp-tag": "./sp-tag.js",
- "./sp-tag.js": "./sp-tag.js"
+ "./src/Tag.js": {
+ "development": "./src/Tag.dev.js",
+ "default": "./src/Tag.js"
+ },
+ "./src/Tags.js": {
+ "development": "./src/Tags.dev.js",
+ "default": "./src/Tags.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/tag.css.js": "./src/tag.css.js",
+ "./src/tags.css.js": "./src/tags.css.js",
+ "./sp-tags.js": {
+ "development": "./sp-tags.dev.js",
+ "default": "./sp-tags.js"
+ },
+ "./sp-tag.js": {
+ "development": "./sp-tag.dev.js",
+ "default": "./sp-tag.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/textfield/exports.json b/packages/textfield/exports.json
new file mode 100644
index 00000000000..e0552ac384a
--- /dev/null
+++ b/packages/textfield/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-textfield.js": "./sp-textfield.js"
+}
diff --git a/packages/textfield/package.json b/packages/textfield/package.json
index 46c81ce0fe4..775bf34e9e1 100644
--- a/packages/textfield/package.json
+++ b/packages/textfield/package.json
@@ -20,11 +20,24 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-textfield": "./sp-textfield.js",
- "./sp-textfield.js": "./sp-textfield.js"
+ "./src/Textfield.js": {
+ "development": "./src/Textfield.dev.js",
+ "default": "./src/Textfield.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/textfield.css.js": "./src/textfield.css.js",
+ "./sp-textfield.js": {
+ "development": "./sp-textfield.dev.js",
+ "default": "./sp-textfield.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/textfield/sp-textfield.ts b/packages/textfield/sp-textfield.ts
index 78061c84b3c..d71f3115936 100644
--- a/packages/textfield/sp-textfield.ts
+++ b/packages/textfield/sp-textfield.ts
@@ -9,6 +9,7 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA
OF ANY KIND, either express or implied. See the License for the specific language
governing permissions and limitations under the License.
*/
+
import { Textfield } from './src/Textfield.js';
customElements.define('sp-textfield', Textfield);
diff --git a/packages/theme/README.md b/packages/theme/README.md
index 6f598e8ca11..1fd0bb0a8f3 100644
--- a/packages/theme/README.md
+++ b/packages/theme/README.md
@@ -54,6 +54,23 @@ import '@spectrum-web-components/theme/express/scale-medium.js';
import '@spectrum-web-components/theme/express/scale-large.js';
```
+## Example
+
+An `` element expects a value for each of its `theme`, `color`, and `scale` attributes to be provided on the element.
+
+```html
+
+
+ Click me!
+
+
+```
+
## Quick start
```
diff --git a/packages/theme/exports.json b/packages/theme/exports.json
new file mode 100644
index 00000000000..d70beaf1071
--- /dev/null
+++ b/packages/theme/exports.json
@@ -0,0 +1,13 @@
+{
+ "./src/*": "./src/*",
+ "./express/*": "./express/*",
+ "./src/express/*": "./src/express/*",
+ "./core.js": "./core.js",
+ "./sp-theme.js": "./sp-theme.js",
+ "./scale-medium.js": "./scale-medium.js",
+ "./scale-large.js": "./scale-large.js",
+ "./theme-lightest.js": "./theme-lightest.js",
+ "./theme-light.js": "./theme-light.js",
+ "./theme-dark.js": "./theme-dark.js",
+ "./theme-darkest.js": "./theme-darkest.js"
+}
diff --git a/packages/theme/package.json b/packages/theme/package.json
index 868cc96e42f..c45dbb969b2 100644
--- a/packages/theme/package.json
+++ b/packages/theme/package.json
@@ -20,27 +20,100 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
- "./express/*": "./express/*",
- "./src/express/*": "./src/express/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./core": "./core.js",
- "./core.js": "./core.js",
- "./sp-theme": "./sp-theme.js",
- "./sp-theme.js": "./sp-theme.js",
- "./scale-medium": "./scale-medium.js",
- "./scale-medium.js": "./scale-medium.js",
- "./scale-large": "./scale-large.js",
- "./scale-large.js": "./scale-large.js",
- "./theme-lightest": "./theme-lightest.js",
- "./theme-lightest.js": "./theme-lightest.js",
- "./theme-light": "./theme-light.js",
- "./theme-light.js": "./theme-light.js",
- "./theme-dark": "./theme-dark.js",
- "./theme-dark.js": "./theme-dark.js",
- "./theme-darkest": "./theme-darkest.js",
- "./theme-darkest.js": "./theme-darkest.js"
+ "./src/Theme.js": {
+ "development": "./src/Theme.dev.js",
+ "default": "./src/Theme.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/scale-large.css.js": "./src/scale-large.css.js",
+ "./src/scale-medium.css.js": "./src/scale-medium.css.js",
+ "./src/theme-dark.css.js": "./src/theme-dark.css.js",
+ "./src/theme-darkest.css.js": "./src/theme-darkest.css.js",
+ "./src/theme-light.css.js": "./src/theme-light.css.js",
+ "./src/theme-lightest.css.js": "./src/theme-lightest.css.js",
+ "./src/theme.css.js": "./src/theme.css.js",
+ "./src/themes.js": {
+ "development": "./src/themes.dev.js",
+ "default": "./src/themes.js"
+ },
+ "./src/typography.css.js": "./src/typography.css.js",
+ "./express/scale-large.js": {
+ "development": "./express/scale-large.dev.js",
+ "default": "./express/scale-large.js"
+ },
+ "./express/scale-medium.js": {
+ "development": "./express/scale-medium.dev.js",
+ "default": "./express/scale-medium.js"
+ },
+ "./express/theme-dark.js": {
+ "development": "./express/theme-dark.dev.js",
+ "default": "./express/theme-dark.js"
+ },
+ "./express/theme-darkest.js": {
+ "development": "./express/theme-darkest.dev.js",
+ "default": "./express/theme-darkest.js"
+ },
+ "./express/theme-light.js": {
+ "development": "./express/theme-light.dev.js",
+ "default": "./express/theme-light.js"
+ },
+ "./express/theme-lightest.js": {
+ "development": "./express/theme-lightest.dev.js",
+ "default": "./express/theme-lightest.js"
+ },
+ "./src/express/core.js": {
+ "development": "./src/express/core.dev.js",
+ "default": "./src/express/core.js"
+ },
+ "./src/express/scale-large.css.js": "./src/express/scale-large.css.js",
+ "./src/express/scale-medium.css.js": "./src/express/scale-medium.css.js",
+ "./src/express/theme-dark.css.js": "./src/express/theme-dark.css.js",
+ "./src/express/theme-light.css.js": "./src/express/theme-light.css.js",
+ "./src/express/theme.css.js": "./src/express/theme.css.js",
+ "./src/express/themes.js": {
+ "development": "./src/express/themes.dev.js",
+ "default": "./src/express/themes.js"
+ },
+ "./core.js": {
+ "development": "./core.dev.js",
+ "default": "./core.js"
+ },
+ "./sp-theme.js": {
+ "development": "./sp-theme.dev.js",
+ "default": "./sp-theme.js"
+ },
+ "./scale-medium.js": {
+ "development": "./scale-medium.dev.js",
+ "default": "./scale-medium.js"
+ },
+ "./scale-large.js": {
+ "development": "./scale-large.dev.js",
+ "default": "./scale-large.js"
+ },
+ "./theme-lightest.js": {
+ "development": "./theme-lightest.dev.js",
+ "default": "./theme-lightest.js"
+ },
+ "./theme-light.js": {
+ "development": "./theme-light.dev.js",
+ "default": "./theme-light.js"
+ },
+ "./theme-dark.js": {
+ "development": "./theme-dark.dev.js",
+ "default": "./theme-dark.js"
+ },
+ "./theme-darkest.js": {
+ "development": "./theme-darkest.dev.js",
+ "default": "./theme-darkest.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/theme/src/Theme.ts b/packages/theme/src/Theme.ts
index 220104e934b..2cb193e451c 100644
--- a/packages/theme/src/Theme.ts
+++ b/packages/theme/src/Theme.ts
@@ -289,6 +289,49 @@ export class Theme extends HTMLElement implements ThemeKindProvider {
}
return acc;
}, [] as CSSResultGroup[]);
+ if (window.__swc.DEBUG) {
+ const issues: string[] = [];
+ const checkForAttribute = (
+ name: FragmentType,
+ resolvedValue?: string,
+ actualValue?: string
+ ): void => {
+ const themeModifier =
+ this.theme && this.theme !== 'spectrum'
+ ? `-${this.theme}`
+ : '';
+ if (!resolvedValue) {
+ issues.push(
+ `You have not explicitly set the "${name}" attribute and there is no default value on which to fallback.`
+ );
+ } else if (!actualValue) {
+ issues.push(
+ `You have not explicitly set the "${name}" attribute, the default value ("${resolvedValue}") is being used as a fallback.`
+ );
+ } else if (
+ !Theme.themeFragmentsByKind
+ .get(name)
+ ?.get(resolvedValue + themeModifier)
+ ) {
+ issues.push(
+ `You have set "${name}='${resolvedValue}'" but the associated theme fragment has not been loaded.`
+ );
+ }
+ };
+ checkForAttribute('theme', this.theme, this._theme);
+ checkForAttribute('color', this.color, this._color);
+ checkForAttribute('scale', this.scale, this._scale);
+ if (issues.length) {
+ window.__swc.warn(
+ this,
+ 'You are leveraging an element and the following issues may disrupt your theme delivery:',
+ 'https://opensource.adobe.com/spectrum-web-components/components/theme/#example',
+ {
+ issues
+ },
+ );
+ }
+ }
return [...styles];
}
diff --git a/packages/theme/test/theme-devmode.test.ts b/packages/theme/test/theme-devmode.test.ts
new file mode 100644
index 00000000000..b8fd80db459
--- /dev/null
+++ b/packages/theme/test/theme-devmode.test.ts
@@ -0,0 +1,45 @@
+/*
+Copyright 2020 Adobe. All rights reserved.
+This file is licensed to you under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License. You may obtain a copy
+of the License at http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software distributed under
+the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
+OF ANY KIND, either express or implied. See the License for the specific language
+governing permissions and limitations under the License.
+*/
+
+import '@spectrum-web-components/theme/sp-theme.js';
+import { Theme } from '@spectrum-web-components/theme';
+import { elementUpdated, expect, fixture, html } from '@open-wc/testing';
+import { stub } from 'sinon';
+
+describe('Dev mode', () => {
+ window.__swc.verbose = true;
+ it('warns in Dev Mode when no attributes or fragments', async () => {
+ const consoleWarnStub = stub(console, 'warn');
+ const el = await fixture(
+ html`
+
+ `
+ );
+
+ await elementUpdated(el);
+
+ expect(consoleWarnStub.called).to.be.true;
+ const spyCall = consoleWarnStub.getCall(0);
+ expect(
+ spyCall.args.at(0).includes('theme delivery'),
+ 'confirm "theme delivery"-centric message'
+ ).to.be.true;
+ expect(spyCall.args.at(-1), 'confirm `data` shape').to.deep.equal({
+ data: {
+ localName: 'sp-theme',
+ type: 'api',
+ level: 'default',
+ },
+ });
+ consoleWarnStub.restore();
+ });
+});
diff --git a/packages/thumbnail/exports.json b/packages/thumbnail/exports.json
new file mode 100644
index 00000000000..07e36a44972
--- /dev/null
+++ b/packages/thumbnail/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-thumbnail.js": "./sp-thumbnail.js"
+}
diff --git a/packages/thumbnail/package.json b/packages/thumbnail/package.json
index 1a926db428e..5249c09081a 100644
--- a/packages/thumbnail/package.json
+++ b/packages/thumbnail/package.json
@@ -20,11 +20,24 @@
"module": "src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-thumbnail": "./sp-thumbnail.js",
- "./sp-thumbnail.js": "./sp-thumbnail.js"
+ "./src/Thumbnail.js": {
+ "development": "./src/Thumbnail.dev.js",
+ "default": "./src/Thumbnail.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/thumbnail.css.js": "./src/thumbnail.css.js",
+ "./sp-thumbnail.js": {
+ "development": "./sp-thumbnail.dev.js",
+ "default": "./sp-thumbnail.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/toast/exports.json b/packages/toast/exports.json
new file mode 100644
index 00000000000..a68dedade48
--- /dev/null
+++ b/packages/toast/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-toast.js": "./sp-toast.js"
+}
diff --git a/packages/toast/package.json b/packages/toast/package.json
index 46388a562e4..f4a4e7b29bd 100644
--- a/packages/toast/package.json
+++ b/packages/toast/package.json
@@ -20,11 +20,24 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-toast": "./sp-toast.js",
- "./sp-toast.js": "./sp-toast.js"
+ "./src/Toast.js": {
+ "development": "./src/Toast.dev.js",
+ "default": "./src/Toast.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/toast.css.js": "./src/toast.css.js",
+ "./sp-toast.js": {
+ "development": "./sp-toast.dev.js",
+ "default": "./sp-toast.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/tooltip/exports.json b/packages/tooltip/exports.json
new file mode 100644
index 00000000000..f3023240684
--- /dev/null
+++ b/packages/tooltip/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-tooltip.js": "./sp-tooltip.js"
+}
diff --git a/packages/tooltip/package.json b/packages/tooltip/package.json
index bde3ab36ddd..d4e45e18b42 100644
--- a/packages/tooltip/package.json
+++ b/packages/tooltip/package.json
@@ -20,11 +20,24 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-tooltip": "./sp-tooltip.js",
- "./sp-tooltip.js": "./sp-tooltip.js"
+ "./src/Tooltip.js": {
+ "development": "./src/Tooltip.dev.js",
+ "default": "./src/Tooltip.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/tooltip.css.js": "./src/tooltip.css.js",
+ "./sp-tooltip.js": {
+ "development": "./sp-tooltip.dev.js",
+ "default": "./sp-tooltip.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/top-nav/exports.json b/packages/top-nav/exports.json
new file mode 100644
index 00000000000..304453b0687
--- /dev/null
+++ b/packages/top-nav/exports.json
@@ -0,0 +1,5 @@
+{
+ "./src/*": "./src/*",
+ "./sp-top-nav.js": "./sp-top-nav.js",
+ "./sp-top-nav-item.js": "./sp-top-nav-item.js"
+}
diff --git a/packages/top-nav/package.json b/packages/top-nav/package.json
index d8ee3d3d6d1..d3ccadf3c4b 100644
--- a/packages/top-nav/package.json
+++ b/packages/top-nav/package.json
@@ -20,13 +20,32 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-top-nav": "./sp-top-nav.js",
- "./sp-top-nav.js": "./sp-top-nav.js",
- "./sp-top-nav-item": "./sp-top-nav-item.js",
- "./sp-top-nav-item.js": "./sp-top-nav-item.js"
+ "./src/TopNav.js": {
+ "development": "./src/TopNav.dev.js",
+ "default": "./src/TopNav.js"
+ },
+ "./src/TopNavItem.js": {
+ "development": "./src/TopNavItem.dev.js",
+ "default": "./src/TopNavItem.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/top-nav-item.css.js": "./src/top-nav-item.css.js",
+ "./sp-top-nav.js": {
+ "development": "./sp-top-nav.dev.js",
+ "default": "./sp-top-nav.js"
+ },
+ "./sp-top-nav-item.js": {
+ "development": "./sp-top-nav-item.dev.js",
+ "default": "./sp-top-nav-item.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/tray/exports.json b/packages/tray/exports.json
new file mode 100644
index 00000000000..f83d9735845
--- /dev/null
+++ b/packages/tray/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*.js",
+ "./sp-tray.js": "./sp-tray.js"
+}
diff --git a/packages/tray/package.json b/packages/tray/package.json
index 48c4136ee17..878373a8be9 100644
--- a/packages/tray/package.json
+++ b/packages/tray/package.json
@@ -20,11 +20,24 @@
"module": "src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*.js",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-tray": "./sp-tray.js",
- "./sp-tray.js": "./sp-tray.js"
+ "./src/Tray.js": {
+ "development": "./src/Tray.dev.js",
+ "default": "./src/Tray.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/tray.css.js": "./src/tray.css.js",
+ "./sp-tray.js": {
+ "development": "./sp-tray.dev.js",
+ "default": "./sp-tray.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/packages/underlay/exports.json b/packages/underlay/exports.json
new file mode 100644
index 00000000000..d08b4270fcd
--- /dev/null
+++ b/packages/underlay/exports.json
@@ -0,0 +1,4 @@
+{
+ "./src/*": "./src/*",
+ "./sp-underlay.js": "./sp-underlay.js"
+}
diff --git a/packages/underlay/package.json b/packages/underlay/package.json
index 87a57038f85..6b30f9e83c4 100644
--- a/packages/underlay/package.json
+++ b/packages/underlay/package.json
@@ -20,11 +20,24 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
- "./sp-underlay": "./sp-underlay.js",
- "./sp-underlay.js": "./sp-underlay.js"
+ "./src/Underlay.js": {
+ "development": "./src/Underlay.dev.js",
+ "default": "./src/Underlay.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/underlay.css.js": "./src/underlay.css.js",
+ "./sp-underlay.js": {
+ "development": "./sp-underlay.dev.js",
+ "default": "./sp-underlay.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/projects/documentation/.eleventy.cjs b/projects/documentation/.eleventy.cjs
index 99ed4c06577..334f5b2d04d 100644
--- a/projects/documentation/.eleventy.cjs
+++ b/projects/documentation/.eleventy.cjs
@@ -12,6 +12,7 @@ governing permissions and limitations under the License.
const syntaxHighlight = require('@11ty/eleventy-plugin-syntaxhighlight');
module.exports = function (eleventyConfig) {
+ eleventyConfig.addNunjucksGlobal('WATCH_MODE', process.env.WATCH_MODE);
eleventyConfig.setUseGitIgnore(false);
eleventyConfig.addPassthroughCopy('content/favicon.ico');
eleventyConfig.addPassthroughCopy('content/favicon.svg');
diff --git a/projects/documentation/content/_includes/dev-mode.njk b/projects/documentation/content/_includes/dev-mode.njk
new file mode 100644
index 00000000000..f35cdee65d6
--- /dev/null
+++ b/projects/documentation/content/_includes/dev-mode.njk
@@ -0,0 +1,11 @@
+---
+layout: layout.njk
+---
+
+ {% include "partials/logo.njk" %}
+
+ {{ content | safe }}
+
+ {% include "partials/sidenav.njk" %}
+
+
\ No newline at end of file
diff --git a/projects/documentation/content/_includes/partials/sidenav.njk b/projects/documentation/content/_includes/partials/sidenav.njk
index 075c160edbf..3503bdfab22 100644
--- a/projects/documentation/content/_includes/partials/sidenav.njk
+++ b/projects/documentation/content/_includes/partials/sidenav.njk
@@ -10,6 +10,13 @@
>
Getting started
+
+ Dev mode
+
+window.__swc = {
+ ignoreWarningTypes: { api: true },
+ ignoreWarningLevels: { deprecation: true },
+ ignoreWarningLocalNames: { 'sp-button': true },
+ verbose: true
+}
+
+
+
+```
+
+The above code turn warnings off for `sp-button`, `api`s, and `deprecation`s while receiving `verbose` messages outside of those.
+
+The config is typed as follows:
+
+```ts
+type ElementLocalName = string;
+
+type WarningType = 'default' | 'accessibility' | 'api';
+
+type WarningLevel = 'default' | 'low' | 'medium' | 'high' | 'deprecation';
+
+type SWCWarningData = {
+ localName: string;
+ type: WarningType;
+ level: WarningLevel;
+};
+
+type BrandedSWCWarningID = `${ElementLocalName}:${WarningType}:${WarningLevel}`;
+
+interface Window {
+ __swc: {
+ ignoreWarningTypes: Record;
+ ignoreWarningLevels: Record;
+ ignoreWarningLocalNames: Record;
+ verbose?: boolean;
+ };
+}
+```
+
+## Future
+
+While there are currently only a handful of warnings that will be published from the library in this way, look for usage of this feature to expand in the coming months and years. As you consume Spectrum Web Components, if you find concepts or features that you feel could be clarified or enhanced by dev mode, please [join the discussion](https://github.com/adobe/spectrum-web-components/discussions/2308) and support us in making the library as productive for you as possible.
+
+Dev mode should not be delivered to your users in production. This is why it has been added as an opt-in feature of the Spectrum Web Components library. With this in mind, there is the possibility that breaking changes to the dev mode API could occur outside of breaking changes in semver for the library or its packages. To avoid potential breaks affecting your code, do NOT leverage the API beyond the `ignoreWarningTypes`, `ignoreWarningLevels`, `ignoreWarningLocalNames`, and `verbose` properties on the `__swc` object listed above.
diff --git a/projects/documentation/rollup.config.js b/projects/documentation/rollup.config.js
index 9481a50f2fe..4c9da52b3ac 100644
--- a/projects/documentation/rollup.config.js
+++ b/projects/documentation/rollup.config.js
@@ -98,9 +98,12 @@ module.exports = async () => {
});
mpaConfig.output.dir = 'dist';
+
+ const mode =
+ process.env.ROLLUP_WATCH !== 'true' ? 'production' : 'development';
mpaConfig.plugins.unshift(
nodeResolve({
- exportConditions: ['browser', 'import', 'production'],
+ exportConditions: ['browser', 'import', mode],
})
);
mpaConfig.plugins.push(
diff --git a/projects/documentation/src/components/code-example.css b/projects/documentation/src/components/code-example.css
index 30d2e36eeb7..f88fab44e92 100644
--- a/projects/documentation/src/components/code-example.css
+++ b/projects/documentation/src/components/code-example.css
@@ -13,7 +13,7 @@ governing permissions and limitations under the License.
:host {
display: flex;
- margin: 1rem 0 2rem 0;
+ margin: 1rem 0 2rem;
flex-direction: column;
border-radius: var(--code-example-border-radius);
border: 1px solid var(--spectrum-global-color-gray-100);
@@ -60,6 +60,7 @@ governing permissions and limitations under the License.
pre {
grid-area: 1/1/1/1;
+ padding-bottom: calc(0.75rem + var(--spectrum-global-dimension-size-400));
}
.copy-holder {
diff --git a/projects/documentation/src/components/layout.ts b/projects/documentation/src/components/layout.ts
index 8de58d71b33..cf487f11710 100644
--- a/projects/documentation/src/components/layout.ts
+++ b/projects/documentation/src/components/layout.ts
@@ -321,9 +321,7 @@ export class LayoutElement extends LitElement {
@change=${this.updateTheme}
placement="bottom-end"
>
-
- Spectrum
-
+ Spectrum
Spectrum Express
@@ -340,9 +338,7 @@ export class LayoutElement extends LitElement {
@change=${this.updateColor}
placement="bottom-end"
>
-
- Lightest
-
+ Lightest
Light
Dark
Darkest
diff --git a/projects/documentation/tsconfig.json b/projects/documentation/tsconfig.json
index 3a80a078071..85a0ab66ed7 100644
--- a/projects/documentation/tsconfig.json
+++ b/projects/documentation/tsconfig.json
@@ -2,6 +2,7 @@
"extends": "../../tsconfig.json",
"compilerOptions": {
"declaration": false,
+ "emitDeclarationOnly": false,
"resolveJsonModule": true,
"skipLibCheck": true,
"outDir": "./_site/src",
diff --git a/projects/example-project-webpack/package.json b/projects/example-project-webpack/package.json
index ddd04769278..5731ce9a3bd 100644
--- a/projects/example-project-webpack/package.json
+++ b/projects/example-project-webpack/package.json
@@ -18,7 +18,7 @@
"@spectrum-web-components/menu": "^0.14.4",
"@spectrum-web-components/picker": "^0.11.5",
"@spectrum-web-components/styles": "^0.15.0",
- "lit": "^2.1.2"
+ "lit": "^2.2.0"
},
"devDependencies": {
"clean-webpack-plugin": "^4.0.0",
diff --git a/projects/story-decorator/exports.json b/projects/story-decorator/exports.json
new file mode 100644
index 00000000000..efabe7da06b
--- /dev/null
+++ b/projects/story-decorator/exports.json
@@ -0,0 +1,7 @@
+{
+ "./src/*": "./src/*.js",
+ "./decorator": "./decorator.js",
+ "./decorator.js": "./decorator.js",
+ "./sp-story-decorator": "./sp-story-decorator.js",
+ "./sp-story-decorator.js": "./sp-story-decorator.js"
+}
diff --git a/projects/story-decorator/package.json b/projects/story-decorator/package.json
index 513ae6b7114..78cb3f3dc44 100644
--- a/projects/story-decorator/package.json
+++ b/projects/story-decorator/package.json
@@ -20,12 +20,33 @@
"module": "./src/index.js",
"type": "module",
"exports": {
- "./src/*": "./src/*.js",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
+ "./src/StoryDecorator.js": {
+ "development": "./src/StoryDecorator.dev.js",
+ "default": "./src/StoryDecorator.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./src/types.js": {
+ "development": "./src/types.dev.js",
+ "default": "./src/types.js"
+ },
"./decorator": "./decorator.js",
- "./decorator.js": "./decorator.js",
+ "./decorator.js": {
+ "development": "./decorator.dev.js",
+ "default": "./decorator.js"
+ },
"./sp-story-decorator": "./sp-story-decorator.js",
- "./sp-story-decorator.js": "./sp-story-decorator.js"
+ "./sp-story-decorator.js": {
+ "development": "./sp-story-decorator.dev.js",
+ "default": "./sp-story-decorator.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/projects/types/global.d.ts b/projects/types/global.d.ts
new file mode 100644
index 00000000000..56fe4369403
--- /dev/null
+++ b/projects/types/global.d.ts
@@ -0,0 +1,50 @@
+/*
+Copyright 2022 Adobe. All rights reserved.
+This file is licensed to you under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License. You may obtain a copy
+of the License at http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software distributed under
+the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
+OF ANY KIND, either express or implied. See the License for the specific language
+governing permissions and limitations under the License.
+*/
+
+type ElementLocalName = string;
+
+type WarningType = 'default' | 'accessibility' | 'api';
+
+type WarningLevel = 'default' | 'low' | 'medium' | 'high' | 'deprecation';
+
+type SWCWarningOptions = {
+ type?: WarningType;
+ level?: WarningLevel;
+ issues?: string[];
+};
+
+type BrandedSWCWarningID = `${ElementLocalName}:${WarningType}:${WarningLevel}`;
+
+interface Window {
+ __swc: {
+ DEBUG: boolean;
+ /**
+ * Dispatch a Dev Mode warning into the console.
+ *
+ * @param id {string:string:string} - the id of the warning, a `:` joined string of the component directory, the warning type, and the warning level
+ * @param warning {string} - the primary message to delivery to the developer
+ * @param url {string} - a URL at which more infromation, or the standard documentation, can be found
+ * @param issues {string[]} - an optional array of issues to format into the message
+ */
+ warn(
+ element: HTMLElement | undefined,
+ message: string,
+ url: string,
+ options?: SWCWarningOptions
+ ): void;
+ issuedWarnings: Set;
+ ignoreWarningTypes: Record;
+ ignoreWarningLevels: Record;
+ ignoreWarningLocalNames: Record;
+ verbose?: boolean;
+ };
+}
diff --git a/projects/types/package.json b/projects/types/package.json
new file mode 100644
index 00000000000..61c85d88254
--- /dev/null
+++ b/projects/types/package.json
@@ -0,0 +1,8 @@
+{
+ "name": "@types/swc",
+ "version": "0.0.1",
+ "private": true,
+ "main": "",
+ "types": "./global.d.ts",
+ "customElements": "custom-elements.json"
+}
diff --git a/projects/vrt-compare/exports.json b/projects/vrt-compare/exports.json
new file mode 100644
index 00000000000..b0c5adb8950
--- /dev/null
+++ b/projects/vrt-compare/exports.json
@@ -0,0 +1,5 @@
+{
+ "./src/*": "./src/*.js",
+ "./vrt-compare": "./vrt-compare.js",
+ "./vrt-compare.js": "./vrt-compare.js"
+}
diff --git a/projects/vrt-compare/package.json b/projects/vrt-compare/package.json
index c14aa8d1e5e..a36606480d5 100644
--- a/projects/vrt-compare/package.json
+++ b/projects/vrt-compare/package.json
@@ -20,11 +20,28 @@
"module": "src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*.js",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
+ "./src/OnionSkinner.js": {
+ "development": "./src/OnionSkinner.dev.js",
+ "default": "./src/OnionSkinner.js"
+ },
+ "./src/VrtCompare.js": {
+ "development": "./src/VrtCompare.dev.js",
+ "default": "./src/VrtCompare.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./vrt-compare": "./vrt-compare.js",
- "./vrt-compare.js": "./vrt-compare.js"
+ "./vrt-compare.js": {
+ "development": "./vrt-compare.dev.js",
+ "default": "./vrt-compare.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/tasks/build-and-storybook.js b/tasks/build-and-storybook.js
new file mode 100644
index 00000000000..45b3bfcb9c0
--- /dev/null
+++ b/tasks/build-and-storybook.js
@@ -0,0 +1,35 @@
+/*
+Copyright 2022 Adobe. All rights reserved.
+This file is licensed to you under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License. You may obtain a copy
+of the License at http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software distributed under
+the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
+OF ANY KIND, either express or implied. See the License for the specific language
+governing permissions and limitations under the License.
+*/
+
+import { buildPackages } from './esbuild-packages.js';
+import { spawn } from 'child_process';
+
+let firstBuild = true;
+
+const watchStorybook = {
+ name: 'watchStorybook',
+ setup(build) {
+ build.onEnd((result) => {
+ if (firstBuild) {
+ spawn('yarn', ['run-p', 'watch:css', 'storybook:run'], {
+ stdio: ['inherit', 'inherit', 'inherit'],
+ });
+ console.log('Initial build complete.');
+ } else {
+ console.log('Incremental build complete.');
+ }
+ firstBuild = false;
+ });
+ },
+};
+
+buildPackages({ watch: true, watchPlugins: [watchStorybook] });
diff --git a/tasks/build-exports-list.js b/tasks/build-exports-list.js
new file mode 100644
index 00000000000..dede6442a2c
--- /dev/null
+++ b/tasks/build-exports-list.js
@@ -0,0 +1,41 @@
+/*
+Copyright 2022 Adobe. All rights reserved.
+This file is licensed to you under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License. You may obtain a copy
+of the License at http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software distributed under
+the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
+OF ANY KIND, either express or implied. See the License for the specific language
+governing permissions and limitations under the License.
+*/
+import path from 'path';
+import fs from 'fs';
+import fg from 'fast-glob';
+
+const build = (packageJSONPath) => {
+ const exportsPath = path.join(packageJSONPath, '..', 'exports.json');
+ if (fs.existsSync(exportsPath)) {
+ return;
+ }
+ const packageJSON = JSON.parse(fs.readFileSync(packageJSONPath, 'utf8'));
+ const exports = packageJSON.exports;
+ if (!exports) {
+ return;
+ }
+ delete exports['.'];
+ delete exports['./package.json'];
+ fs.writeFileSync(exportsPath, JSON.stringify(exports, null, ' '), {
+ encoding: 'utf8',
+ });
+};
+
+const buildExportsList = async () => {
+ for (const packageJSON of await fg(`./**/package.json`, {
+ ignore: ['**/node_modules/**'],
+ })) {
+ build(packageJSON);
+ }
+};
+
+buildExportsList();
diff --git a/tasks/watch-documentation.js b/tasks/esbuild-packages.js
similarity index 78%
rename from tasks/watch-documentation.js
rename to tasks/esbuild-packages.js
index 5235312d316..9b341fa6bee 100644
--- a/tasks/watch-documentation.js
+++ b/tasks/esbuild-packages.js
@@ -11,11 +11,6 @@ OF ANY KIND, either express or implied. See the License for the specific languag
governing permissions and limitations under the License.
*/
-import { buildSearchIndex, webpackDevServer } from './documentation.js';
+import { buildTSFiles } from './ts-tools.js';
-function buildProduction() {
- buildSearchIndex();
- webpackDevServer();
-}
-
-buildProduction();
+buildTSFiles();
diff --git a/tasks/hydrate-export-maps.js b/tasks/hydrate-export-maps.js
new file mode 100644
index 00000000000..0f612e9dfcb
--- /dev/null
+++ b/tasks/hydrate-export-maps.js
@@ -0,0 +1,120 @@
+/*
+Copyright 2022 Adobe. All rights reserved.
+This file is licensed to you under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License. You may obtain a copy
+of the License at http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software distributed under
+the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
+OF ANY KIND, either express or implied. See the License for the specific language
+governing permissions and limitations under the License.
+*/
+
+import path from 'path';
+import fs from 'fs';
+import fg from 'fast-glob';
+
+const excludes = [
+ // internal config file
+ './src/spectrum-config.js',
+ // partial only asset the is used to build other exports
+ /spectrum-(?![i][c][o][n][-]).+\.css/,
+ /\.css$/,
+ /\.ts$/,
+ /\.map/,
+ './src/spectrum-vars.json',
+];
+
+/**
+ *
+ * Convert `exports.json` files into `exports` listings in the relative `package.json` file.
+ *
+ * - only affects packages with `exports.json` files
+ * - sets the following by default
+ * {
+ * '.': {
+ * 'development': './src/index.dev.js',
+ * 'default': './src/index.js'
+ * },
+ * './package.json': './package.json'
+ * }
+ * - explodes wildcards
+ * - excludes files in the `excludes` list above
+ * - does not expose `development` conditions on `*.css.js` files
+ * - saves back into the `package.json` without linting
+ *
+ */
+
+const hydrateExportMap = async (exportMapPath) => {
+ const exportMapSrc = JSON.parse(fs.readFileSync(exportMapPath, 'utf8'));
+ const exportMapResolved = {};
+ const exportMapExploded = {
+ '.': {
+ development: './src/index.dev.js',
+ default: './src/index.js',
+ },
+ './package.json': './package.json',
+ };
+ for (const key in exportMapSrc) {
+ if (key.search(/\*/) > -1) {
+ // If there is a wildcard in the list, resolve it to all the requires exports.
+ // Get the depth between the script location and the package location so that number of
+ // directories can be removed from the path set to the map.
+ const depth = exportMapPath.split('/').length - 1;
+ const blob = path.join(exportMapPath, '..', key);
+ for (const fullExportPath of await fg(blob, {
+ ignore: ['**/*.dev.js'],
+ })) {
+ const exportPath =
+ './' +
+ fullExportPath.split(path.sep).splice(depth).join(path.sep);
+ if (
+ excludes.some((exclude) => exportPath.search(exclude) > -1)
+ ) {
+ // skip excludes
+ continue;
+ }
+ exportMapResolved[exportPath] = exportPath;
+ }
+ } else {
+ exportMapResolved[key] = exportMapSrc[key];
+ }
+ }
+ for (const key in exportMapResolved) {
+ if (
+ key.endsWith('.css.js') ||
+ exportMapResolved[key].endsWith('.css.js') ||
+ (key !== '.' && !key.endsWith('.js'))
+ ) {
+ // simple map for assets without "development" versions
+ exportMapExploded[key] = exportMapResolved[key];
+ continue;
+ }
+ // exploded map for assets with "development" versions
+ const exportPath = key === '.' ? exportMapResolved[key] : key;
+ exportMapExploded[key] = {
+ development: exportPath.replace('.js', '.dev.js'),
+ default: exportPath,
+ };
+ }
+ const packageJSONPath = path.join(exportMapPath, '..', 'package.json');
+ const packageJSON = JSON.parse(fs.readFileSync(packageJSONPath, 'utf8'));
+ packageJSON.exports = exportMapExploded;
+ fs.writeFileSync(
+ packageJSONPath,
+ JSON.stringify(packageJSON, null, ' ') + '\n',
+ {
+ encoding: 'utf8',
+ }
+ );
+};
+
+const hydrateExportMaps = async () => {
+ for (const exportMap of await fg(`./**/exports.json`, {
+ ignore: ['**/node_modules/**'],
+ })) {
+ hydrateExportMap(exportMap);
+ }
+};
+
+hydrateExportMaps();
diff --git a/tasks/ts-tools.js b/tasks/ts-tools.js
new file mode 100644
index 00000000000..a5e0a9409d2
--- /dev/null
+++ b/tasks/ts-tools.js
@@ -0,0 +1,113 @@
+/*
+Copyright 2022 Adobe. All rights reserved.
+This file is licensed to you under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License. You may obtain a copy
+of the License at http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software distributed under
+the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
+OF ANY KIND, either express or implied. See the License for the specific language
+governing permissions and limitations under the License.
+*/
+
+import fg from 'fast-glob';
+import { build } from 'esbuild';
+import fs from 'fs';
+import { execSync } from 'child_process';
+
+const relativeImportRegex = RegExp(
+ 'import([^;]+)["|\'](?![a-zA-Z@])(..+)(? {
+ let js = await fs.promises.readFile(args.path, 'utf8');
+ js = js.replace(relativeImportRegex, "import$1'$2.dev.js'");
+ const contents = js.replace(
+ relativeExportRegex,
+ "export$1'$2.dev.js'"
+ );
+ return {
+ contents,
+ loader: 'ts',
+ };
+ });
+ },
+};
+
+const makeExports = {
+ name: 'make-exports',
+ setup(build) {
+ build.onEnd((data) => {
+ execSync('node ./tasks/hydrate-export-maps.js');
+ });
+ },
+};
+
+export const buildPackage = async (paths) => {
+ const devPaths = paths.filter(
+ (path) =>
+ path.search('/test/') === -1 &&
+ path.search('/stories/') === -1 &&
+ path.search('packages/icons-') === -1
+ );
+ const devPlugins = [makeDev];
+ const prodPlugins = [makeExports];
+ const builds = [];
+ if (devPaths.length) {
+ builds.push(
+ build({
+ entryPoints: devPaths,
+ bundle: false,
+ outdir: '.',
+ outbase: '.',
+ sourcemap: true,
+ define: { 'window.__swc.DEBUG': true },
+ outExtension: { '.js': '.dev.js' },
+ plugins: devPlugins,
+ }).catch(() => process.exit(1))
+ );
+ }
+ if (paths.length) {
+ builds.push(
+ build({
+ entryPoints: paths,
+ bundle: false,
+ outdir: '.',
+ outbase: '.',
+ sourcemap: true,
+ define: { 'window.__swc.DEBUG': false },
+ plugins: paths.length === 1 ? [] : prodPlugins,
+ }).catch(() => process.exit(1))
+ );
+ }
+};
+
+export const watchFiles = async () => {
+ const files = await fg([
+ './packages/**/!(*.d).ts',
+ './tools/**/!(*.d).ts',
+ './test/plugins/**/!(*.d).ts',
+ './projects/story-decorator/**/!(*.d).ts',
+ './projects/vrt-compare/**/!(*.d).ts',
+ './test/lit-helpers.ts',
+ './test/testing-helpers.ts',
+ './test/testing-helpers-a11y.ts',
+ './test/testing-helpers.ts',
+ './test/visual/test.ts',
+ ]);
+ return files;
+};
+
+export const buildTSFiles = async () => {
+ const files = await watchFiles();
+ buildPackage(files);
+};
diff --git a/tasks/watch-packages.js b/tasks/watch-packages.js
new file mode 100644
index 00000000000..ab93f7ea416
--- /dev/null
+++ b/tasks/watch-packages.js
@@ -0,0 +1,39 @@
+#!/usr/bin/env node
+
+/*
+Copyright 2020 Adobe. All rights reserved.
+This file is licensed to you under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License. You may obtain a copy
+of the License at http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software distributed under
+the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
+OF ANY KIND, either express or implied. See the License for the specific language
+governing permissions and limitations under the License.
+*/
+
+import { buildPackage, watchFiles } from './ts-tools.js';
+import chokidar from 'chokidar';
+import debounce from 'debounce';
+
+const debounceBuildTSFiles = debounce.debounce(buildPackage, 200);
+
+const watchTS = async () => {
+ const files = await watchFiles();
+ // One-liner for current directory
+ chokidar
+ .watch(files, {
+ ignoreInitial: true,
+ })
+ .on('change', (path) => {
+ console.log(`Process TS change in: ${path}`);
+ debounceBuildTSFiles([`./${path}`]);
+ })
+ .on('add', (path) => {
+ console.log(`Process TS added at: ${path}`);
+ debounceBuildTSFiles([`./${path}`]);
+ });
+
+ console.log('Listening to TS...');
+};
+
+watchTS();
diff --git a/test/tsconfig-plugins.json b/test/tsconfig-plugins.json
index 586151c1863..e3c40ad31d3 100644
--- a/test/tsconfig-plugins.json
+++ b/test/tsconfig-plugins.json
@@ -1,6 +1,7 @@
{
"extends": "../tsconfig.json",
"compilerOptions": {
+ "emitDeclarationOnly": false,
"rootDir": "."
},
"include": ["./plugins/*.ts"],
diff --git a/test/tsconfig-test.json b/test/tsconfig-test.json
index 26ab258b527..ead89b7bfbc 100644
--- a/test/tsconfig-test.json
+++ b/test/tsconfig-test.json
@@ -3,6 +3,7 @@
"compilerOptions": {
"outDir": "../",
"types": ["mocha", "chai", "sinon", "webpack-env", "node"],
+ "emitDeclarationOnly": false,
"declaration": false
},
"include": [
diff --git a/test/tsconfig.json b/test/tsconfig.json
index 223e7fda4b5..6e2e0af4f75 100644
--- a/test/tsconfig.json
+++ b/test/tsconfig.json
@@ -1,6 +1,7 @@
{
"extends": "../tsconfig.json",
"compilerOptions": {
+ "emitDeclarationOnly": false,
"outDir": "../",
"rootDir": "../"
},
diff --git a/tools/grid/exports.json b/tools/grid/exports.json
new file mode 100644
index 00000000000..119fc7a4f4a
--- /dev/null
+++ b/tools/grid/exports.json
@@ -0,0 +1,5 @@
+{
+ "./src/*": "./src/*.js",
+ "./sp-grid": "./sp-grid.js",
+ "./sp-grid.js": "./sp-grid.js"
+}
diff --git a/tools/grid/package.json b/tools/grid/package.json
index 1eb788f3691..0195d17377c 100644
--- a/tools/grid/package.json
+++ b/tools/grid/package.json
@@ -20,11 +20,29 @@
"module": "src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*.js",
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./package.json": "./package.json",
+ "./src/Grid.js": {
+ "development": "./src/Grid.dev.js",
+ "default": "./src/Grid.js"
+ },
+ "./src/GridController.js": {
+ "development": "./src/GridController.dev.js",
+ "default": "./src/GridController.js"
+ },
+ "./src/grid.css.js": "./src/grid.css.js",
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
"./sp-grid": "./sp-grid.js",
- "./sp-grid.js": "./sp-grid.js"
+ "./sp-grid.js": {
+ "development": "./sp-grid.dev.js",
+ "default": "./sp-grid.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/tools/reactive-controllers/exports.json b/tools/reactive-controllers/exports.json
new file mode 100644
index 00000000000..266304b99db
--- /dev/null
+++ b/tools/reactive-controllers/exports.json
@@ -0,0 +1,3 @@
+{
+ "./src/*": "./src/*"
+}
diff --git a/tools/reactive-controllers/package.json b/tools/reactive-controllers/package.json
index 9f9f2f97396..fc204ee7924 100644
--- a/tools/reactive-controllers/package.json
+++ b/tools/reactive-controllers/package.json
@@ -20,9 +20,27 @@
"module": "src/index.js",
"type": "module",
"exports": {
- ".": "./src/index.js",
- "./src/*": "./src/*",
- "./package.json": "./package.json"
+ ".": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ },
+ "./package.json": "./package.json",
+ "./src/FocusGroup.js": {
+ "development": "./src/FocusGroup.dev.js",
+ "default": "./src/FocusGroup.js"
+ },
+ "./src/MatchMedia.js": {
+ "development": "./src/MatchMedia.dev.js",
+ "default": "./src/MatchMedia.js"
+ },
+ "./src/RovingTabindex.js": {
+ "development": "./src/RovingTabindex.dev.js",
+ "default": "./src/RovingTabindex.js"
+ },
+ "./src/index.js": {
+ "development": "./src/index.dev.js",
+ "default": "./src/index.js"
+ }
},
"scripts": {
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
diff --git a/tsconfig-all.json b/tsconfig-all.json
index 03865752a74..5de2caf67c7 100644
--- a/tsconfig-all.json
+++ b/tsconfig-all.json
@@ -2,15 +2,14 @@
"extends": "./tsconfig.json",
"compilerOptions": {
"rootDir": "./",
- "declaration": false,
- "incremental": true
+ "noEmit": true,
+ "emitDeclarationOnly": false
},
"include": [
"packages/**/*.ts",
"tools/**/*.ts",
"projects/story-decorator/**/*.ts",
- "projects/vrt-compare/**/*.ts",
- "test/lit-helpers.ts"
+ "projects/vrt-compare/**/*.ts"
],
"exclude": [
"packages/*/node_modules/**/*.ts",
@@ -26,6 +25,7 @@
{ "path": "packages/banner" },
{ "path": "packages/badge" },
{ "path": "packages/base" },
+ { "path": "packages/badge" },
{ "path": "packages/bundle" },
{ "path": "packages/button" },
{ "path": "packages/button-group" },
diff --git a/tsconfig.json b/tsconfig.json
index fee0379deb7..cd82f349939 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -3,11 +3,12 @@
"allowSyntheticDefaultImports": true,
"baseUrl": "./packages",
"declaration": true,
+ "emitDeclarationOnly": true,
"experimentalDecorators": true,
"importHelpers": true,
"inlineSources": true,
"isolatedModules": true,
- "lib": ["es2017", "dom", "dom.iterable"],
+ "lib": ["es2018", "dom", "dom.iterable"],
"module": "esNext",
"moduleResolution": "node",
"noImplicitOverride": true,
@@ -18,8 +19,8 @@
"skipLibCheck": true,
"strict": true,
"sourceMap": true,
- "target": "es2017",
- "types": ["mocha", "chai", "sinon", "node"]
+ "target": "es2018",
+ "types": ["mocha", "chai", "sinon", "node", "swc"]
},
"include": ["./global.d.ts"]
}
diff --git a/web-test-runner.config.js b/web-test-runner.config.js
index e33b6dc9dd5..ed36e3d0e99 100644
--- a/web-test-runner.config.js
+++ b/web-test-runner.config.js
@@ -102,8 +102,8 @@ export default {
],
threshold: {
statements: 98.5,
- branches: 96,
- functions: 98,
+ branches: 95.8,
+ functions: 97.8,
lines: 98.5,
},
},
diff --git a/yarn.lock b/yarn.lock
index afb0edcf70a..29ff68e0ebe 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -7204,15 +7204,10 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
-caniuse-lite@^1.0.0:
- version "1.0.30001299"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001299.tgz#d753bf6444ed401eb503cbbe17aa3e1451b5a68c"
- integrity sha512-iujN4+x7QzqA2NCSrS5VUy+4gLmRd4xv6vbBBsmfVqTx8bLAD8097euLqQgKxSVLvxjSDcvF1T/i9ocgnUFexw==
-
-caniuse-lite@^1.0.30001317:
- version "1.0.30001332"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz#39476d3aa8d83ea76359c70302eafdd4a1d727dd"
- integrity sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001317:
+ version "1.0.30001341"
+ resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001341.tgz"
+ integrity sha512-2SodVrFFtvGENGCv0ChVJIDQ0KPaS1cg7/qtfMaICgeMolDdo/Z2OD32F0Aq9yl6F4YFwGPBS5AaPqNYiW4PoA==
caniuse-lite@^1.0.30001335, caniuse-lite@^1.0.30001370:
version "1.0.30001370"
@@ -9742,6 +9737,132 @@ es6-promisify@^6.0.0:
resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-6.1.1.tgz#46837651b7b06bf6fff893d03f29393668d01621"
integrity sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg==
+esbuild-android-64@0.14.25:
+ version "0.14.25"
+ resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.25.tgz#d532d38cb5fe0ae45167ce35f4bbc784c636be40"
+ integrity sha512-L5vCUk7TzFbBnoESNoXjU3x9+/+7TDIE/1mTfy/erAfvZAqC+S3sp/Qa9wkypFMcFvN9FzvESkTlpeQDolREtQ==
+
+esbuild-android-arm64@0.14.25:
+ version "0.14.25"
+ resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.25.tgz#9c5bb3366aabfd14a1c726d36978b79441dfcb6e"
+ integrity sha512-4jv5xPjM/qNm27T5j3ZEck0PvjgQtoMHnz4FzwF5zNP56PvY2CT0WStcAIl6jNlsuDdN63rk2HRBIsO6xFbcFw==
+
+esbuild-darwin-64@0.14.25:
+ version "0.14.25"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.25.tgz#05dcdb6d884f427039ffee5e92ff97527e56c26d"
+ integrity sha512-TGp8tuudIxOyWd1+8aYPxQmC1ZQyvij/AfNBa35RubixD0zJ1vkKHVAzo0Zao1zcG6pNqiSyzfPto8vmg0s7oA==
+
+esbuild-darwin-arm64@0.14.25:
+ version "0.14.25"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.25.tgz#28e080da4ea0cfe9498071e7f8060498caee1a95"
+ integrity sha512-oTcDgdm0MDVEmw2DWu8BV68pYuImpFgvWREPErBZmNA4MYKGuBRaCiJqq6jZmBR1x+3y1DWCjez+5uLtuAm6mw==
+
+esbuild-freebsd-64@0.14.25:
+ version "0.14.25"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.25.tgz#200d3664a3b945bc9fdcba73614b49a11ebd1cfa"
+ integrity sha512-ueAqbnMZ8arnuLH8tHwTCQYeptnHOUV7vA6px6j4zjjQwDx7TdP7kACPf3TLZLdJQ3CAD1XCvQ2sPhX+8tacvQ==
+
+esbuild-freebsd-arm64@0.14.25:
+ version "0.14.25"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.25.tgz#624b08c5da6013bdc312aaa23c4ff409580f5c3c"
+ integrity sha512-+ZVWud2HKh+Ob6k/qiJWjBtUg4KmJGGmbvEXXW1SNKS7hW7HU+Zq2ZCcE1akFxOPkVB+EhOty/sSek30tkCYug==
+
+esbuild-linux-32@0.14.25:
+ version "0.14.25"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.25.tgz#0238e597eb0b60aa06c7e98fccbbfd6bb9a0d6c5"
+ integrity sha512-3OP/lwV3kCzEz45tobH9nj+uE4ubhGsfx+tn0L26WAGtUbmmcRpqy7XRG/qK7h1mClZ+eguIANcQntYMdYklfw==
+
+esbuild-linux-64@0.14.25:
+ version "0.14.25"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.25.tgz#8a8b8cf47dfce127c858e71229d9a385a82c62e8"
+ integrity sha512-+aKHdHZmX9qwVlQmu5xYXh7GsBFf4TWrePgeJTalhXHOG7NNuUwoHmketGiZEoNsWyyqwH9rE5BC+iwcLY30Ug==
+
+esbuild-linux-arm64@0.14.25:
+ version "0.14.25"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.25.tgz#7ac94371418a2640ba413bc1700aaedeb2794e52"
+ integrity sha512-UxfenPx/wSZx55gScCImPtXekvZQLI2GW3qe5dtlmU7luiqhp5GWPzGeQEbD3yN3xg/pHc671m5bma5Ns7lBHw==
+
+esbuild-linux-arm@0.14.25:
+ version "0.14.25"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.25.tgz#034bd18e9310b9f010c89f90ef7f05706689600b"
+ integrity sha512-aTLcE2VBoLydL943REcAcgnDi3bHtmULSXWLbjtBdtykRatJVSxKMjK9YlBXUZC4/YcNQfH7AxwVeQr9fNxPhw==
+
+esbuild-linux-mips64le@0.14.25:
+ version "0.14.25"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.25.tgz#05f98a8cf6b578eab6b4e6b0ab094f37530934f4"
+ integrity sha512-wLWYyqVfYx9Ur6eU5RT92yJVsaBGi5RdkoWqRHOqcJ38Kn60QMlcghsKeWfe9jcYut8LangYZ98xO1LxIoSXrQ==
+
+esbuild-linux-ppc64le@0.14.25:
+ version "0.14.25"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.25.tgz#46fd0add8d8535678439d7a9c2876ad20042d952"
+ integrity sha512-0dR6Csl6Zas3g4p9ULckEl8Mo8IInJh33VCJ3eaV1hj9+MHGdmDOakYMN8MZP9/5nl+NU/0ygpd14cWgy8uqRw==
+
+esbuild-linux-riscv64@0.14.25:
+ version "0.14.25"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.25.tgz#ea2e986f0f3e5df73c635135dd778051734fc605"
+ integrity sha512-J4d20HDmTrgvhR0bdkDhvvJGaikH3LzXQnNaseo8rcw9Yqby9A90gKUmWpfwqLVNRILvNnAmKLfBjCKU9ajg8w==
+
+esbuild-linux-s390x@0.14.25:
+ version "0.14.25"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.25.tgz#efe89486e9a1b1508925048076e3f3a6698aa6a3"
+ integrity sha512-YI2d5V6nTE73ZnhEKQD7MtsPs1EtUZJ3obS21oxQxGbbRw1G+PtJKjNyur+3t6nzHP9oTg6GHQ3S3hOLLmbDIQ==
+
+esbuild-netbsd-64@0.14.25:
+ version "0.14.25"
+ resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.25.tgz#439fe27d8ee3b5887501ee63988e85f920107db6"
+ integrity sha512-TKIVgNWLUOkr+Exrye70XTEE1lJjdQXdM4tAXRzfHE9iBA7LXWcNtVIuSnphTqpanPzTDFarF0yqq4kpbC6miA==
+
+esbuild-openbsd-64@0.14.25:
+ version "0.14.25"
+ resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.25.tgz#31ebf616aadf6e60674469f2b92cec92280d9930"
+ integrity sha512-QgFJ37A15D7NIXBTYEqz29+uw3nNBOIyog+3kFidANn6kjw0GHZ0lEYQn+cwjyzu94WobR+fes7cTl/ZYlHb1A==
+
+esbuild-sunos-64@0.14.25:
+ version "0.14.25"
+ resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.25.tgz#815e4f936d74970292a63ccfd5791fe5e3569f5f"
+ integrity sha512-rmWfjUItYIVlqr5EnTH1+GCxXiBOC42WBZ3w++qh7n2cS9Xo0lO5pGSG2N+huOU2fX5L+6YUuJ78/vOYvefeFw==
+
+esbuild-windows-32@0.14.25:
+ version "0.14.25"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.25.tgz#189e14df2478f2c193c86968ab1fb54e1ceaafd2"
+ integrity sha512-HGAxVUofl3iUIz9W10Y9XKtD0bNsK9fBXv1D55N/ljNvkrAYcGB8YCm0v7DjlwtyS6ws3dkdQyXadbxkbzaKOA==
+
+esbuild-windows-64@0.14.25:
+ version "0.14.25"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.25.tgz#3d5fbfdc3856850bb47439299e3b60dd18be111f"
+ integrity sha512-TirEohRkfWU9hXLgoDxzhMQD1g8I2mOqvdQF2RS9E/wbkORTAqJHyh7wqGRCQAwNzdNXdg3JAyhQ9/177AadWA==
+
+esbuild-windows-arm64@0.14.25:
+ version "0.14.25"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.25.tgz#8b243cbbad8a86cf98697da9ccb88c05df2ef458"
+ integrity sha512-4ype9ERiI45rSh+R8qUoBtaj6kJvUOI7oVLhKqPEpcF4Pa5PpT3hm/mXAyotJHREkHpM87PAJcA442mLnbtlNA==
+
+esbuild@^0.14.25:
+ version "0.14.25"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.25.tgz#ddb9d47b91ca76abb7d850ce3dfed0bc3dc88d16"
+ integrity sha512-4JHEIOMNFvK09ziiL+iVmldIhLbn49V4NAVo888tcGFKedEZY/Y8YapfStJ6zSE23tzYPKxqKwQBnQoIO0BI/Q==
+ optionalDependencies:
+ esbuild-android-64 "0.14.25"
+ esbuild-android-arm64 "0.14.25"
+ esbuild-darwin-64 "0.14.25"
+ esbuild-darwin-arm64 "0.14.25"
+ esbuild-freebsd-64 "0.14.25"
+ esbuild-freebsd-arm64 "0.14.25"
+ esbuild-linux-32 "0.14.25"
+ esbuild-linux-64 "0.14.25"
+ esbuild-linux-arm "0.14.25"
+ esbuild-linux-arm64 "0.14.25"
+ esbuild-linux-mips64le "0.14.25"
+ esbuild-linux-ppc64le "0.14.25"
+ esbuild-linux-riscv64 "0.14.25"
+ esbuild-linux-s390x "0.14.25"
+ esbuild-netbsd-64 "0.14.25"
+ esbuild-openbsd-64 "0.14.25"
+ esbuild-sunos-64 "0.14.25"
+ esbuild-windows-32 "0.14.25"
+ esbuild-windows-64 "0.14.25"
+ esbuild-windows-arm64 "0.14.25"
+
escalade@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
@@ -14250,10 +14371,10 @@ lit-html@^2.0.0, lit-html@^2.2.0:
dependencies:
"@types/trusted-types" "^2.0.2"
-lit@^2.0.0, lit@^2.0.2, lit@^2.1.2:
- version "2.2.8"
- resolved "https://registry.yarnpkg.com/lit/-/lit-2.2.8.tgz#26bdf560042aa3ec9b788f5d48119f7138b2dcc1"
- integrity sha512-QjeNbi/H9LVIHR+u0OqsL+hs62a16m02JlJHYN48HcBuXyiPYR8JvzsTp5dYYS81l+b9Emp3UaGo82EheV0pog==
+lit@^2.0.0, lit@^2.0.2, lit@^2.1.2, lit@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/lit/-/lit-2.2.0.tgz#1b83a2c1e4c5ecf3be785292b1a13e193597f610"
+ integrity sha512-FDyxUuczo6cJJY/2Bkgfh1872U4ikUvmK1Cb6+lYC1CW+QOo8CaWXCpvPKFzYsz0ojUxoruBLVrECc7VI2f1dQ==
dependencies:
"@lit/reactive-element" "^1.3.0"
lit-element "^3.2.0"