@crowdstrike/glide-core 0.6.5 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -5
- package/dist/accordion.test.basics.js +1 -0
- package/dist/accordion.test.events.js +1 -0
- package/dist/button-group.button.test.basics.js +1 -0
- package/dist/button-group.button.test.events.js +1 -0
- package/dist/button-group.test.basics.js +1 -0
- package/dist/button-group.test.events.js +1 -0
- package/dist/button.test.basics.js +1 -0
- package/dist/button.test.events.js +1 -0
- package/dist/button.test.form.js +1 -0
- package/dist/checkbox-group.d.ts +1 -0
- package/dist/checkbox-group.js +1 -1
- package/dist/checkbox-group.test.basics.js +1 -0
- package/dist/checkbox-group.test.events.js +1 -0
- package/dist/checkbox-group.test.focus.js +24 -0
- package/dist/checkbox-group.test.form.js +1 -0
- package/dist/checkbox-group.test.validity.js +1 -0
- package/dist/checkbox.d.ts +3 -1
- package/dist/checkbox.js +1 -1
- package/dist/checkbox.styles.js +4 -5
- package/dist/checkbox.test.basics.js +1 -0
- package/dist/checkbox.test.events.js +1 -0
- package/dist/checkbox.test.focus.js +11 -0
- package/dist/checkbox.test.form.js +1 -0
- package/dist/checkbox.test.states.js +1 -0
- package/dist/checkbox.test.validity.js +1 -0
- package/dist/drawer.styles.js +4 -3
- package/dist/drawer.test.basics.js +1 -0
- package/dist/drawer.test.closing.js +1 -0
- package/dist/drawer.test.events.js +1 -0
- package/dist/drawer.test.floating-components.js +1 -0
- package/dist/drawer.test.methods.js +1 -0
- package/dist/dropdown.d.ts +1 -0
- package/dist/dropdown.js +1 -1
- package/dist/dropdown.option.d.ts +1 -0
- package/dist/dropdown.option.js +1 -1
- package/dist/dropdown.option.test.basics.js +1 -0
- package/dist/dropdown.option.test.basics.multiple.js +1 -0
- package/dist/dropdown.option.test.basics.single.js +1 -0
- package/dist/dropdown.option.test.events.js +1 -0
- package/dist/dropdown.option.test.interactions.multiple.js +1 -0
- package/dist/dropdown.option.test.interactions.single.js +1 -0
- package/dist/dropdown.styles.js +8 -4
- package/dist/dropdown.test.basics.filterable.js +1 -0
- package/dist/dropdown.test.basics.js +1 -0
- package/dist/dropdown.test.basics.multiple.js +1 -1
- package/dist/dropdown.test.basics.single.js +1 -1
- package/dist/dropdown.test.events.js +1 -0
- package/dist/dropdown.test.events.multiple.js +72 -5
- package/dist/dropdown.test.events.single.js +46 -5
- package/dist/dropdown.test.focus.js +11 -2
- package/dist/dropdown.test.focus.multiple.js +0 -1
- package/dist/dropdown.test.form.js +1 -0
- package/dist/dropdown.test.form.multiple.js +1 -0
- package/dist/dropdown.test.form.single.js +1 -0
- package/dist/dropdown.test.interactions.filterable.js +1 -0
- package/dist/dropdown.test.interactions.js +1 -0
- package/dist/dropdown.test.interactions.multiple.js +1 -1
- package/dist/dropdown.test.interactions.single.js +1 -0
- package/dist/dropdown.test.validity.js +1 -0
- package/dist/form-controls-layout.test.basics.js +1 -0
- package/dist/icon-button.test.basics.js +1 -0
- package/dist/input.d.ts +2 -1
- package/dist/input.js +1 -1
- package/dist/input.test.basics.js +1 -0
- package/dist/input.test.events.js +1 -0
- package/dist/input.test.focus.js +6 -3
- package/dist/input.test.form.js +1 -0
- package/dist/input.test.validity.js +1 -0
- package/dist/label.styles.js +11 -11
- package/dist/label.test.basics.js +1 -0
- package/dist/library/localize.d.ts +2 -0
- package/dist/library/ow.test.d.ts +2 -1
- package/dist/library/ow.test.js +8 -3
- package/dist/menu.button.test.basics.js +1 -0
- package/dist/menu.link.test.basics.js +1 -0
- package/dist/menu.options.test.basics.js +1 -0
- package/dist/menu.styles.js +4 -4
- package/dist/menu.test.basics.js +1 -0
- package/dist/menu.test.events.d.ts +1 -0
- package/dist/menu.test.events.js +2 -1
- package/dist/menu.test.focus.js +1 -0
- package/dist/menu.test.interactions.js +1 -0
- package/dist/modal.icon-button.test.basics.js +1 -0
- package/dist/modal.tertiary-icon.test.basics.js +1 -0
- package/dist/modal.test.accessibility.js +1 -0
- package/dist/modal.test.basics.js +1 -0
- package/dist/modal.test.close.js +1 -0
- package/dist/modal.test.events.js +1 -0
- package/dist/modal.test.floating-components.js +1 -0
- package/dist/modal.test.lock-scroll.js +1 -0
- package/dist/modal.test.methods.js +1 -0
- package/dist/modal.test.scrollbars.js +1 -0
- package/dist/radio-group.d.ts +1 -0
- package/dist/radio-group.js +1 -1
- package/dist/radio-group.test.basics.js +1 -0
- package/dist/radio-group.test.events.js +1 -0
- package/dist/radio-group.test.focus.js +20 -0
- package/dist/radio-group.test.form.js +1 -0
- package/dist/radio-group.test.validity.js +1 -0
- package/dist/split-button.test.basics.js +1 -0
- package/dist/split-container.test.basics.js +1 -0
- package/dist/split-link.test.basics.js +1 -0
- package/dist/split-link.test.interactions.js +1 -0
- package/dist/tab.d.ts +0 -2
- package/dist/tab.group.d.ts +3 -5
- package/dist/tab.group.js +1 -1
- package/dist/tab.group.styles.js +27 -13
- package/dist/tab.group.test.basics.js +7 -56
- package/dist/tab.group.test.interactions.d.ts +3 -0
- package/dist/tab.group.test.interactions.js +258 -0
- package/dist/tab.js +1 -1
- package/dist/tab.styles.js +7 -68
- package/dist/tab.test.basics.js +0 -20
- package/dist/tabs.stories.d.ts +1 -2
- package/dist/tag.test.basics.js +1 -0
- package/dist/textarea.d.ts +1 -0
- package/dist/textarea.js +2 -2
- package/dist/textarea.test.basics.js +1 -0
- package/dist/textarea.test.events.js +1 -0
- package/dist/textarea.test.form.js +1 -0
- package/dist/textarea.test.validity.js +14 -1
- package/dist/toggle.test.basics.js +1 -0
- package/dist/toggle.test.events.js +1 -0
- package/dist/toggle.test.states.js +1 -0
- package/dist/tooltip.test.basics.js +1 -0
- package/dist/tooltip.test.interactions.js +1 -0
- package/dist/translations/en.js +1 -1
- package/dist/translations/fr.js +1 -1
- package/dist/translations/ja.js +1 -1
- package/dist/tree.item.d.ts +4 -1
- package/dist/tree.item.js +1 -1
- package/dist/tree.item.menu.js +1 -1
- package/dist/tree.item.test.basics.js +12 -0
- package/dist/tree.js +1 -1
- package/dist/tree.stories.d.ts +1 -0
- package/dist/tree.test.basics.js +7 -0
- package/dist/tree.test.events.js +1 -1
- package/dist/tree.test.focus.js +32 -0
- package/package.json +39 -26
@@ -1,3 +1,4 @@
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
1
2
|
import { expect, fixture, html } from '@open-wc/testing';
|
2
3
|
import TreeItem from './tree.item.js';
|
3
4
|
TreeItem.shadowRootOptions.mode = 'open';
|
@@ -11,6 +12,17 @@ it('renders and sets default attributes', async () => {
|
|
11
12
|
expect(treeItem.expanded).to.equal(false);
|
12
13
|
expect(treeItem.label).to.equal('Item');
|
13
14
|
expect(treeItem.level).to.equal(1);
|
15
|
+
expect(treeItem.shadowRoot?.querySelector('.expand-icon-container')).to.be.ok;
|
16
|
+
});
|
17
|
+
it('does not render expand-icon-container if remove-indentation is set', async () => {
|
18
|
+
const treeItem = await fixture(html `
|
19
|
+
<glide-core-tree-item
|
20
|
+
label="Item"
|
21
|
+
remove-indentation
|
22
|
+
></glide-core-tree-item>
|
23
|
+
`);
|
24
|
+
expect(treeItem.shadowRoot?.querySelector('.expand-icon-container')).to.be
|
25
|
+
.null;
|
14
26
|
});
|
15
27
|
it('renders with a prefix slot', async () => {
|
16
28
|
await fixture(html `
|
package/dist/tree.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
var __decorate=this&&this.__decorate||function(e,t,o,s){var r
|
1
|
+
var __decorate=this&&this.__decorate||function(e,t,o,s){var l,r=arguments.length,i=r<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,o):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,o,s);else for(var n=e.length-1;n>=0;n--)(l=e[n])&&(i=(r<3?l(i):r>3?l(t,o,i):l(t,o))||i);return r>3&&i&&Object.defineProperty(t,o,i),i};import{LitElement,html}from"lit";import{createRef,ref}from"lit/directives/ref.js";import{customElement,queryAssignedElements,state}from"lit/decorators.js";import{owSlot,owSlotType}from"./library/ow.js";import GlideCoreTreeItem from"./tree.item.js";import styles from"./tree.styles.js";let GlideCoreTree=class GlideCoreTree extends LitElement{static{this.shadowRootOptions={...LitElement.shadowRootOptions,mode:"closed"}}static{this.styles=styles}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("focusin",this.#e),this.removeEventListener("focusout",this.#t)}firstUpdated(){owSlot(this.#o.value),owSlotType(this.#o.value,[GlideCoreTreeItem])}render(){return html`<div class="component" role="tree" tabindex="${this.privateTabIndex}" @click="${this.#s}" @keydown="${this.#l}"><slot @slotchange="${this.#r}" ${ref(this.#o)}></slot></div>`}selectItem(e){for(const t of this.slotElements){e===t?(t.setAttribute("selected","true"),this.selectedItem=t):t.removeAttribute("selected");const o=t.selectItem(e);o&&(this.selectedItem=o)}this.dispatchEvent(new CustomEvent("item-selected",{bubbles:!0,detail:e}))}setContainingBlock(e){for(const t of this.#i())t.setContainingBlock(e)}constructor(){super(),this.privateTabIndex=0,this.#o=createRef(),this.addEventListener("focusin",this.#e),this.addEventListener("focusout",this.#t)}#o;#n(e){e?.focus(),this.focusedItem=e}#i(){return[...this.querySelectorAll("glide-core-tree-item")]}#d(){const e=this.#i(),t=new Set;return e.filter((e=>{const o=e.parentElement?.closest("glide-core-tree-item");return!o||o.expanded&&!t.has(o)||t.add(e),!t.has(e)}))}#s(e){const t=e.target;if(t.closest("glide-core-tree-item-icon-button")??t.closest("glide-core-tree-item-menu"))return;const o=t.closest("glide-core-tree-item");o&&(o.hasChildTreeItems&&!o.nonCollapsible?o.toggleExpand():this.selectItem(o))}#e(e){let t;e.target===this?t=this.selectedItem??this.slotElements[0]:e.target instanceof GlideCoreTreeItem&&(t=e.target,this.privateTabIndex=-1),this.#n(t)}#t(e){const t=e.relatedTarget;t&&this.contains(t)||(this.privateTabIndex=0,this.focusedItem=void 0)}#l(e){if(!["ArrowRight","ArrowLeft","ArrowDown","ArrowUp","Home","End","Enter"].includes(e.key))return;const t=this.#d(),{focusedItem:o}=this,s=t.findIndex((e=>e.matches(":focus")));if("ArrowRight"===e.key&&o?.hasChildTreeItems&&(o.expanded?this.#n(o.slotElements[0]):o.toggleExpand()),"ArrowLeft"===e.key)if(o?.expanded&&!o.nonCollapsible)o.toggleExpand();else{const e=o?.parentElement?.closest("glide-core-tree-item");this.#n(e)}"ArrowDown"===e.key&&-1!==s&&s<t.length-1&&this.#n(t[s+1]),"ArrowUp"===e.key&&s>0&&this.#n(t[s-1]),"Home"===e.key&&this.#n(t[0]),"End"===e.key&&this.#n(t.at(-1)),"Enter"===e.key&&o&&(o.hasChildTreeItems&&!o.nonCollapsible?o.toggleExpand():this.selectItem(o))}#r(){owSlot(this.#o.value),owSlotType(this.#o.value,[GlideCoreTreeItem])}};__decorate([state()],GlideCoreTree.prototype,"selectedItem",void 0),__decorate([state()],GlideCoreTree.prototype,"focusedItem",void 0),__decorate([state()],GlideCoreTree.prototype,"privateTabIndex",void 0),__decorate([queryAssignedElements()],GlideCoreTree.prototype,"slotElements",void 0),GlideCoreTree=__decorate([customElement("glide-core-tree")],GlideCoreTree);export default GlideCoreTree;
|
package/dist/tree.stories.d.ts
CHANGED
@@ -12,6 +12,7 @@ export declare const TreeItemDefault: StoryObj;
|
|
12
12
|
export declare const TreeItemSelected: StoryObj;
|
13
13
|
export declare const TreeItemWithChildItemsCollapsed: StoryObj;
|
14
14
|
export declare const TreeItemWithChildItemsExpanded: StoryObj;
|
15
|
+
export declare const TreeItemWithChildItemsNonCollapsible: StoryObj;
|
15
16
|
export declare const TreeItemWithPrefixIcon: StoryObj;
|
16
17
|
export declare const TreeItemWithSuffixIconButton: StoryObj;
|
17
18
|
export declare const TreeItemWithMenu: StoryObj;
|
package/dist/tree.test.basics.js
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
1
2
|
import './tree.item.icon-button.js';
|
2
3
|
import './tree.item.js';
|
3
4
|
import './tree.js';
|
@@ -47,6 +48,9 @@ it('can click child and grandchild items to expand or select them', async () =>
|
|
47
48
|
<glide-core-tree-item label="Child Item 2">
|
48
49
|
<glide-core-tree-item label="Grandchild Item 1"></glide-core-tree-item>
|
49
50
|
</glide-core-tree-item>
|
51
|
+
<glide-core-tree-item label="Child Item 3" expanded non-collapsible>
|
52
|
+
<glide-core-tree-item label="Grandchild Item 2"></glide-core-tree-item>
|
53
|
+
</glide-core-tree-item>
|
50
54
|
</glide-core-tree>
|
51
55
|
`);
|
52
56
|
const childItems = tree.slotElements;
|
@@ -63,6 +67,9 @@ it('can click child and grandchild items to expand or select them', async () =>
|
|
63
67
|
// Can click and select a grandchild item
|
64
68
|
grandchildItems[0].click();
|
65
69
|
expect(grandchildItems[0].selected).to.equal(true);
|
70
|
+
// Can click and select a non-collapsible parent item
|
71
|
+
childItems[2].click();
|
72
|
+
expect(childItems[2].selected).to.equal(true);
|
66
73
|
});
|
67
74
|
it('does not select an item if a tree-item-icon-button is clicked', async () => {
|
68
75
|
const tree = await fixture(html `
|
package/dist/tree.test.events.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
1
2
|
import './tree.item.menu.js';
|
2
3
|
import './tree.js';
|
3
4
|
import { expect, fixture, html, oneEvent } from '@open-wc/testing';
|
4
|
-
import GlideCoreTree from './tree.js';
|
5
5
|
import GlideCoreTreeItem from './tree.item.js';
|
6
6
|
it('dispatches an "item-selected" event when an item is clicked', async () => {
|
7
7
|
const component = await fixture(html `
|
package/dist/tree.test.focus.js
CHANGED
@@ -81,6 +81,22 @@ it('collapses an expanded tree item if left arrow is pressed', async () => {
|
|
81
81
|
assert(document.activeElement instanceof GlideCoreTreeItem);
|
82
82
|
expect(document.activeElement?.label).to.equal(childItems[0].label, 'focus does not move');
|
83
83
|
});
|
84
|
+
it(`focuses on a non-collapsible tree item's parent if left arrow is pressed`, async () => {
|
85
|
+
const tree = await fixture(html `
|
86
|
+
<glide-core-tree>
|
87
|
+
<glide-core-tree-item label="Child Item 1" expanded non-collapsible>
|
88
|
+
<glide-core-tree-item label="Grandchild Item 1"></glide-core-tree-item>
|
89
|
+
</glide-core-tree-item>
|
90
|
+
<glide-core-tree-item label="Child Item 2"></glide-core-tree-item>
|
91
|
+
</glide-core-tree>
|
92
|
+
`);
|
93
|
+
const childItems = tree.slotElements;
|
94
|
+
const grandchildItems = childItems[0].slotElements;
|
95
|
+
grandchildItems[0].focus();
|
96
|
+
await sendKeys({ press: 'ArrowLeft' });
|
97
|
+
assert(document.activeElement instanceof GlideCoreTreeItem);
|
98
|
+
expect(document.activeElement?.label).to.equal(childItems[0].label);
|
99
|
+
});
|
84
100
|
it(`focuses on a collapsed tree item's parent if left arrow is pressed`, async () => {
|
85
101
|
const tree = await fixture(html `
|
86
102
|
<glide-core-tree>
|
@@ -206,6 +222,22 @@ it('selects or expands/collapses node when Enter is pressed', async () => {
|
|
206
222
|
await sendKeys({ press: 'Enter' });
|
207
223
|
expect(grandchildItems[0].selected).to.equal(true);
|
208
224
|
});
|
225
|
+
it('selects a non-collapsible parent node when Enter is pressed', async () => {
|
226
|
+
const tree = await fixture(html `
|
227
|
+
<glide-core-tree>
|
228
|
+
<glide-core-tree-item label="Child Item 1" expanded non-collapsible>
|
229
|
+
<glide-core-tree-item label="Grandchild Item 1"></glide-core-tree-item>
|
230
|
+
</glide-core-tree-item>
|
231
|
+
</glide-core-tree>
|
232
|
+
`);
|
233
|
+
const childItems = tree.slotElements;
|
234
|
+
const grandchildItems = childItems?.[0].slotElements;
|
235
|
+
grandchildItems[0].focus();
|
236
|
+
childItems[0].focus();
|
237
|
+
await sendKeys({ press: 'Enter' });
|
238
|
+
expect(grandchildItems[0].selected).to.equal(false);
|
239
|
+
expect(childItems[0].selected).to.equal(true);
|
240
|
+
});
|
209
241
|
it('does nothing if some other key is pressed', async () => {
|
210
242
|
const tree = await fixture(html `
|
211
243
|
<glide-core-tree>
|
package/package.json
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
{
|
2
2
|
"name": "@crowdstrike/glide-core",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.8.0",
|
4
4
|
"description": "CrowdStrike's Glide Design System components package for providing web components",
|
5
5
|
"author": "CrowdStrike UX Team",
|
6
6
|
"license": "Apache-2.0",
|
7
|
+
"type": "module",
|
7
8
|
"repository": {
|
8
9
|
"type": "git",
|
9
|
-
"url": "https://github.com/CrowdStrike/glide-core.git"
|
10
|
-
"directory": "packages/components"
|
10
|
+
"url": "https://github.com/CrowdStrike/glide-core.git"
|
11
11
|
},
|
12
|
-
"type": "module",
|
13
12
|
"files": [
|
14
13
|
"dist",
|
14
|
+
"!dist/eslint",
|
15
15
|
"!dist/icons/storybook.*",
|
16
16
|
"!dist/src",
|
17
17
|
"!dist/storybook",
|
@@ -33,10 +33,6 @@
|
|
33
33
|
"./styles/fonts.css": "./dist/styles/fonts.css",
|
34
34
|
"./styles/variables.css": "./dist/styles/variables.css"
|
35
35
|
},
|
36
|
-
"engines": {
|
37
|
-
"node": ">= 20",
|
38
|
-
"pnpm": ">= 8"
|
39
|
-
},
|
40
36
|
"dependencies": {
|
41
37
|
"@floating-ui/dom": "^1.6.8",
|
42
38
|
"@shoelace-style/localize": "^3.1.2",
|
@@ -44,23 +40,33 @@
|
|
44
40
|
"nanoid": "^5.0.7",
|
45
41
|
"ow": "^1.1.1"
|
46
42
|
},
|
43
|
+
"peerDependencies": {
|
44
|
+
"lit": "^3.1.0"
|
45
|
+
},
|
47
46
|
"devDependencies": {
|
47
|
+
"@changesets/changelog-github": "^0.5.0",
|
48
|
+
"@changesets/cli": "^2.27.1",
|
48
49
|
"@crowdstrike/design-tokens": "^2.0.0",
|
50
|
+
"@eslint/eslintrc": "^3.0.2",
|
49
51
|
"@eslint/js": "^8.56.0",
|
50
52
|
"@open-wc/testing": "^3.2.2",
|
51
53
|
"@rollup/plugin-commonjs": "^25.0.7",
|
52
|
-
"@storybook/addon-essentials": "^8.2.
|
53
|
-
"@storybook/addon-links": "^8.2.
|
54
|
-
"@storybook/blocks": "^8.2.
|
55
|
-
"@storybook/core-events": "^8.2.
|
56
|
-
"@storybook/manager-api": "^8.2.
|
57
|
-
"@storybook/preview-api": "^8.2.
|
58
|
-
"@storybook/theming": "^8.2.
|
59
|
-
"@storybook/web-components": "^8.2.
|
60
|
-
"@storybook/web-components-vite": "^8.2.
|
54
|
+
"@storybook/addon-essentials": "^8.2.7",
|
55
|
+
"@storybook/addon-links": "^8.2.7",
|
56
|
+
"@storybook/blocks": "^8.2.7",
|
57
|
+
"@storybook/core-events": "^8.2.7",
|
58
|
+
"@storybook/manager-api": "^8.2.7",
|
59
|
+
"@storybook/preview-api": "^8.2.7",
|
60
|
+
"@storybook/theming": "^8.2.7",
|
61
|
+
"@storybook/web-components": "^8.2.7",
|
62
|
+
"@storybook/web-components-vite": "^8.2.7",
|
61
63
|
"@stylistic/eslint-plugin": "^1.7.0",
|
64
|
+
"@types/eslint": "^8.56.7",
|
62
65
|
"@types/mocha": "^10.0.6",
|
63
66
|
"@types/sinon": "^17.0.3",
|
67
|
+
"@typescript-eslint/rule-tester": "^8.0.1",
|
68
|
+
"@typescript-eslint/types": "^8.0.1",
|
69
|
+
"@typescript-eslint/utils": "^8.0.1",
|
64
70
|
"@web/dev-server-esbuild": "^0.3.6",
|
65
71
|
"@web/dev-server-rollup": "^0.6.1",
|
66
72
|
"@web/test-runner": "^0.18.0",
|
@@ -79,6 +85,8 @@
|
|
79
85
|
"globals": "^13.24.0",
|
80
86
|
"globby": "^14.0.0",
|
81
87
|
"http-server": "^14.1.1",
|
88
|
+
"husky": "^8.0.3",
|
89
|
+
"is-ci": "^3.0.1",
|
82
90
|
"lint-staged": "^14.0.1",
|
83
91
|
"lit": "^3.1.2",
|
84
92
|
"lit-analyzer": "^2.0.3",
|
@@ -90,7 +98,7 @@
|
|
90
98
|
"prettier": "3.1.0",
|
91
99
|
"rimraf": "^5.0.7",
|
92
100
|
"sinon": "^17.0.1",
|
93
|
-
"storybook": "^8.2.
|
101
|
+
"storybook": "^8.2.7",
|
94
102
|
"stylelint": "^16.3.1",
|
95
103
|
"stylelint-config-standard": "^36.0.0",
|
96
104
|
"stylelint-order": "^6.0.4",
|
@@ -100,11 +108,12 @@
|
|
100
108
|
"terser": "^5.31.1",
|
101
109
|
"ts-lit-plugin": "^2.0.2",
|
102
110
|
"typescript": "^5.3.3",
|
103
|
-
"typescript-eslint": "^
|
104
|
-
"
|
111
|
+
"typescript-eslint": "^8.0.1",
|
112
|
+
"vitest": "^1.4.0"
|
105
113
|
},
|
106
|
-
"
|
107
|
-
"
|
114
|
+
"engines": {
|
115
|
+
"node": ">= 20",
|
116
|
+
"pnpm": ">= 8"
|
108
117
|
},
|
109
118
|
"scripts": {
|
110
119
|
"start": "per-env",
|
@@ -120,18 +129,22 @@
|
|
120
129
|
"format:production": "prettier . --check && stylelint '**/*.styles.ts' --custom-syntax postcss-lit --no-color",
|
121
130
|
"lint": "per-env",
|
122
131
|
"lint:development": "npm-run-all --print-name lint:development:*",
|
123
|
-
"lint:development:eslint": "eslint . --fix",
|
132
|
+
"lint:development:eslint": "tsc --outDir ./dist && eslint . --fix",
|
124
133
|
"lint:development:lit-analyzer": "lit-analyzer **/*.ts",
|
125
134
|
"lint:production": "npm-run-all --parallel --aggregate-output --print-label lint:production:*",
|
126
|
-
"lint:production:eslint": "eslint .",
|
135
|
+
"lint:production:eslint": "tsc --outDir ./dist && eslint .",
|
127
136
|
"lint:production:lit-analyzer": "lit-analyzer **/*.ts",
|
128
137
|
"typecheck": "tsc --noEmit",
|
129
138
|
"test": "per-env",
|
130
|
-
"test:development": "npm-run-all --parallel test:development
|
139
|
+
"test:development": "npm-run-all --parallel test:development:serve test:development:web-test-runner start:production:stylesheets",
|
131
140
|
"test:development:serve": "npx http-server dist/coverage/lcov-report --silent",
|
132
141
|
"test:development:web-test-runner": "web-test-runner --watch",
|
142
|
+
"test:development:vitest": "vitest --config ./vitest.config.js",
|
143
|
+
"test:development:vitest:comment": "Vitest is excluded from `test:development` because it muddies the console when running alongside Web Test Runner.",
|
133
144
|
"test:production": "npm-run-all --parallel test:production:* start:production:stylesheets --aggregate-output --print-label",
|
134
145
|
"test:production:web-test-runner": "web-test-runner",
|
135
|
-
"
|
146
|
+
"test:production:vitest": "vitest run --config ./vitest.config.js",
|
147
|
+
"postinstall": "pnpm dlx playwright@1.45.3 install --with-deps",
|
148
|
+
"release": "changeset publish"
|
136
149
|
}
|
137
150
|
}
|