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\}>\`},\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\}>\`},\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