diff --git a/packages/components/package.json b/packages/components/package.json index a3dac620267..28ca31e0076 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -52,12 +52,13 @@ ], "scripts": { "build": "npm run build:light", + "build:deps": "pnpm --filter @public-ui/components^... build", "build:light": "npm run clear && mkdir doc && cross-env NODE_ENV=production stencil build --docs --prod && node scripts/hashing.js && node scripts/autogen.doc.js && node scripts/vaadin.js && npm run format -- -w", "clear": "rimraf dist doc loader www ../adapters/angular/v11/src ../adapters/angular/v12/src ../adapters/angular/v13/src ../adapters/angular/v14/src ../adapters/angular/v15/src ../adapters/angular/v16/src ../adapters/angular/v17/src ../adapters/hydrate/dist ../adapters/react/src ../adapters/solid/src ../adapters/vaadin/*.java ../adapters/vue/src", "depcheck": "depcheck --ignore-bin-package --skip-missing --ignores=@types/*,@public-ui/*,@stencil/*,eslint-*,postcss-windicss,tslib,workbox-build", "format": "prettier --check src", "lighthouse": "lighthouse --chrome-flags=\"--headless\" --output-path lighthouse.report.html --preset=desktop --quiet", - "lint": "eslint src && tsc --noemit", + "lint": "tsc --noemit && eslint src", "unused": "ts-prune src -e", "start": "cross-env NODE_ENV=development stencil build --dev --serve --watch --no-open", "dev": "cross-env NODE_ENV=development stencil build --prod --watch", diff --git a/packages/components/src/components.d.ts b/packages/components/src/components.d.ts index 35b008a06a6..1143bce074c 100644 --- a/packages/components/src/components.d.ts +++ b/packages/components/src/components.d.ts @@ -21,6 +21,10 @@ export namespace Components { "_tooltipAlign"?: TooltipAlignPropType; } interface KolAccordion { + /** + * Makes the element not focusable and ignore all events. + */ + "_disabled"?: boolean; /** * Defines the visible or semantic label of the component (e.g. aria-label, label, headline, caption, summary, etc.). */ @@ -407,6 +411,10 @@ export namespace Components { "_on"?: KoliBriCardEventCallbacks; } interface KolDetails { + /** + * Makes the element not focusable and ignore all events. + */ + "_disabled"?: boolean; /** * Defines the visible or semantic label of the component (e.g. aria-label, label, headline, caption, summary, etc.). */ @@ -1643,6 +1651,10 @@ export namespace Components { * Defines the value for the aria-current attribute. */ "_ariaCurrentValue"?: AriaCurrentValuePropType; + /** + * Makes the element not focusable and ignore all events. + */ + "_disabled"?: boolean; /** * Tells the browser that the link contains a file. Optionally sets the filename. */ @@ -1698,6 +1710,10 @@ export namespace Components { * Defines the custom class attribute if _variant="custom" is set. */ "_customClass"?: CustomClassPropType; + /** + * Makes the element not focusable and ignore all events. + */ + "_disabled"?: boolean; /** * Tells the browser that the link contains a file. Optionally sets the filename. */ @@ -1771,6 +1787,10 @@ export namespace Components { * Defines the value for the aria-current attribute. */ "_ariaCurrentValue"?: AriaCurrentValuePropType; + /** + * Makes the element not focusable and ignore all events. + */ + "_disabled"?: boolean; /** * Tells the browser that the link contains a file. Optionally sets the filename. */ @@ -2810,6 +2830,10 @@ declare namespace LocalJSX { "_tooltipAlign"?: TooltipAlignPropType; } interface KolAccordion { + /** + * Makes the element not focusable and ignore all events. + */ + "_disabled"?: boolean; /** * Defines the visible or semantic label of the component (e.g. aria-label, label, headline, caption, summary, etc.). */ @@ -3194,6 +3218,10 @@ declare namespace LocalJSX { "_on"?: KoliBriCardEventCallbacks; } interface KolDetails { + /** + * Makes the element not focusable and ignore all events. + */ + "_disabled"?: boolean; /** * Defines the visible or semantic label of the component (e.g. aria-label, label, headline, caption, summary, etc.). */ @@ -4420,6 +4448,10 @@ declare namespace LocalJSX { * Defines the value for the aria-current attribute. */ "_ariaCurrentValue"?: AriaCurrentValuePropType; + /** + * Makes the element not focusable and ignore all events. + */ + "_disabled"?: boolean; /** * Tells the browser that the link contains a file. Optionally sets the filename. */ @@ -4475,6 +4507,10 @@ declare namespace LocalJSX { * Defines the custom class attribute if _variant="custom" is set. */ "_customClass"?: CustomClassPropType; + /** + * Makes the element not focusable and ignore all events. + */ + "_disabled"?: boolean; /** * Tells the browser that the link contains a file. Optionally sets the filename. */ @@ -4548,6 +4584,10 @@ declare namespace LocalJSX { * Defines the value for the aria-current attribute. */ "_ariaCurrentValue"?: AriaCurrentValuePropType; + /** + * Makes the element not focusable and ignore all events. + */ + "_disabled"?: boolean; /** * Tells the browser that the link contains a file. Optionally sets the filename. */ diff --git a/packages/components/src/components/accordion/component.tsx b/packages/components/src/components/accordion/component.tsx index ac63cdd36dd..9de993b7e9a 100644 --- a/packages/components/src/components/accordion/component.tsx +++ b/packages/components/src/components/accordion/component.tsx @@ -1,13 +1,15 @@ // https://codepen.io/mbxtr/pen/OJPOYg?html-preprocessor=haml import type { JSX } from '@stencil/core'; -import { featureHint, propagateFocus, setState, validateLabel, validateOpen } from '@public-ui/schema'; +import { featureHint, propagateFocus, setState, validateDisabled, validateLabel, validateOpen } from '@public-ui/schema'; import { Component, Element, h, Host, Prop, State, Watch } from '@stencil/core'; import { nonce } from '../../utils/dev.utils'; import { watchHeadingLevel } from '../heading/validation'; import type { AccordionAPI, AccordionStates, HeadingLevel, KoliBriAccordionCallbacks, LabelPropType, OpenPropType } from '@public-ui/schema'; +import type { DisabledPropType } from '@public-ui/schema'; +import { preventDefault } from '../../utils/events'; featureHint(`[KolAccordion] Anfrage nach einer KolAccordionGroup bei dem immer nur ein Accordion geöffnet ist. - onClick auf der KolAccordion anwenden @@ -40,6 +42,7 @@ export class KolAccordion implements AccordionAPI {
@@ -50,6 +53,7 @@ export class KolAccordion implements AccordionAPI { slot="expert" _ariaControls={this.nonce} _ariaExpanded={this.state._open} + _disabled={this.state._disabled} _icons={this.state._open ? 'codicon codicon-remove' : 'codicon codicon-add'} _label={this.state._label} _on={{ onClick: this.onClick }} @@ -67,6 +71,11 @@ export class KolAccordion implements AccordionAPI { ); } + /** + * Makes the element not focusable and ignore all events. + */ + @Prop() public _disabled?: boolean = false; + /** * Defines the visible or semantic label of the component (e.g. aria-label, label, headline, caption, summary, etc.). */ @@ -93,6 +102,11 @@ export class KolAccordion implements AccordionAPI { _level: 1, }; + @Watch('_disabled') + public validateDisabled(value?: DisabledPropType): void { + validateDisabled(this, value); + } + @Watch('_label') public validateLabel(value?: LabelPropType): void { validateLabel(this, value, { @@ -118,12 +132,22 @@ export class KolAccordion implements AccordionAPI { } public componentWillLoad(): void { + this.validateDisabled(this._disabled); this.validateLabel(this._label); this.validateLevel(this._level); this.validateOn(this._on); this.validateOpen(this._open); } + public componentDidRender() { + if (this.host && this.host.shadowRoot) { + Array.from(this.host.shadowRoot.querySelectorAll('[aria-disabled="true"]')).forEach((el) => { + el.removeEventListener('click', preventDefault); + el.addEventListener('click', preventDefault); + }); + } + } + private onClick = (event: Event) => { this._open = !this._open; diff --git a/packages/components/src/components/accordion/readme.md b/packages/components/src/components/accordion/readme.md index eded27cc07e..d2a92dca898 100644 --- a/packages/components/src/components/accordion/readme.md +++ b/packages/components/src/components/accordion/readme.md @@ -109,12 +109,13 @@ Standardansicht gelegt. ## Properties -| Property | Attribute | Description | Type | Default | -| --------------------- | --------- | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ----------- | -| `_label` _(required)_ | `_label` | Defines the visible or semantic label of the component (e.g. aria-label, label, headline, caption, summary, etc.). | `string` | `undefined` | -| `_level` | `_level` | Defines which H-level from 1-6 the heading has. 0 specifies no heading and is shown as bold text. | `0 \| 1 \| 2 \| 3 \| 4 \| 5 \| 6 \| undefined` | `1` | -| `_on` | -- | Gibt die EventCallback-Funktionen an. | `undefined \| { onClick?: EventValueOrEventCallback \| undefined; }` | `undefined` | -| `_open` | `_open` | If set (to true) opens/expands the element, closes if not set (or set to false). | `boolean \| undefined` | `false` | +| Property | Attribute | Description | Type | Default | +| --------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ----------- | +| `_disabled` | `_disabled` | Makes the element not focusable and ignore all events. | `boolean \| undefined` | `false` | +| `_label` _(required)_ | `_label` | Defines the visible or semantic label of the component (e.g. aria-label, label, headline, caption, summary, etc.). | `string` | `undefined` | +| `_level` | `_level` | Defines which H-level from 1-6 the heading has. 0 specifies no heading and is shown as bold text. | `0 \| 1 \| 2 \| 3 \| 4 \| 5 \| 6 \| undefined` | `1` | +| `_on` | -- | Gibt die EventCallback-Funktionen an. | `undefined \| { onClick?: EventValueOrEventCallback \| undefined; }` | `undefined` | +| `_open` | `_open` | If set (to true) opens/expands the element, closes if not set (or set to false). | `boolean \| undefined` | `false` | ## Slots diff --git a/packages/components/src/components/button/component.tsx b/packages/components/src/components/button/component.tsx index 0f73e2bc168..604774997e2 100644 --- a/packages/components/src/components/button/component.tsx +++ b/packages/components/src/components/button/component.tsx @@ -16,7 +16,6 @@ import type { TooltipAlignPropType, } from '@public-ui/schema'; import { - a11yHintDisabled, mapBoolean2String, mapStringOrBoolean2String, propagateFocus, @@ -40,7 +39,7 @@ import { validateTooltipAlign, watchString, } from '@public-ui/schema'; -import { Component, Element, h, Host, Prop, State, Watch } from '@stencil/core'; +import { Component, Element, Host, Prop, State, Watch, h } from '@stencil/core'; import { stopPropagation, tryToDispatchKoliBriEvent } from '../../utils/events'; import { propagateResetEventToForm, propagateSubmitEventToForm } from '../form/controller'; @@ -103,6 +102,7 @@ export class KolButtonWc implements ButtonAPI { aria-selected={mapStringOrBoolean2String(this.state._ariaSelected)} class={{ button: true, + disabled: this.state._disabled === true, [this.state._variant as string]: this.state._variant !== 'custom', [this.state._customClass as string]: this.state._variant === 'custom' && typeof this.state._customClass === 'string' && this.state._customClass.length > 0, @@ -283,9 +283,6 @@ export class KolButtonWc implements ButtonAPI { @Watch('_disabled') public validateDisabled(value?: DisabledPropType): void { validateDisabled(this, value); - if (value === true) { - a11yHintDisabled(); - } } @Watch('_hideLabel') diff --git a/packages/components/src/components/details/component.tsx b/packages/components/src/components/details/component.tsx index 9786891d511..c4264c95a4c 100644 --- a/packages/components/src/components/details/component.tsx +++ b/packages/components/src/components/details/component.tsx @@ -6,6 +6,10 @@ import { tryToDispatchKoliBriEvent } from '../../utils/events'; import DetailsAnimationController from './DetailsAnimationController'; import type { JSX } from '@stencil/core'; +import type { DisabledPropType } from '@public-ui/schema'; +import { validateDisabled } from '@public-ui/schema'; +import { preventDefault } from '../../utils/events'; + /** * @slot - Der Inhalt, der in der Detailbeschreibung angezeigt wird. */ @@ -31,12 +35,17 @@ export class KolDetails implements DetailsAPI { return (
{ this.detailsElement = el as HTMLDetailsElement; + el?.removeEventListener('toggle', preventDefault); + el?.addEventListener('toggle', preventDefault); }} onToggle={this.handleToggle} > - + {this.state._label} @@ -50,6 +59,11 @@ export class KolDetails implements DetailsAPI { ); } + /** + * Makes the element not focusable and ignore all events. + */ + @Prop() public _disabled?: boolean = false; + /** * Defines the visible or semantic label of the component (e.g. aria-label, label, headline, caption, summary, etc.). */ @@ -71,6 +85,11 @@ export class KolDetails implements DetailsAPI { _on: {}, }; + @Watch('_disabled') + public validateDisabled(value?: DisabledPropType): void { + validateDisabled(this, value); + } + @Watch('_label') public validateLabel(value?: LabelPropType): void { validateLabel(this, value, { @@ -91,11 +110,21 @@ export class KolDetails implements DetailsAPI { } public componentWillLoad(): void { + this.validateDisabled(this._disabled); this.validateLabel(this._label); this.validateOn(this._on); this.validateOpen(this._open); } + public componentDidRender() { + if (this.host && this.host.shadowRoot) { + Array.from(this.host.shadowRoot.querySelectorAll('[aria-disabled="true"]')).forEach((el) => { + el.removeEventListener('click', preventDefault); + el.addEventListener('click', preventDefault); + }); + } + } + public componentDidLoad() { if (this.detailsElement && this.summaryElement && this.contentElement) { const animationController = new DetailsAnimationController(this.detailsElement, this.summaryElement, this.contentElement); @@ -108,6 +137,10 @@ export class KolDetails implements DetailsAPI { private toggleTimeout?: ReturnType; private handleToggle = (event: Event) => { + if (this.state._disabled === true) { + preventDefault(event); + return; + } clearTimeout(this.toggleTimeout); this.toggleTimeout = setTimeout(() => { const open = Boolean(this.detailsElement?.open); diff --git a/packages/components/src/components/details/readme.md b/packages/components/src/components/details/readme.md index 49bb5989d03..80f1b19b161 100644 --- a/packages/components/src/components/details/readme.md +++ b/packages/components/src/components/details/readme.md @@ -90,11 +90,12 @@ Verwenden Sie das Attribut **`_label`**, um den Text zu definieren, der als Übe ## Properties -| Property | Attribute | Description | Type | Default | -| --------------------- | --------- | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------- | ----------- | -| `_label` _(required)_ | `_label` | Defines the visible or semantic label of the component (e.g. aria-label, label, headline, caption, summary, etc.). | `string` | `undefined` | -| `_on` | -- | Defines the callback functions for details. | `undefined \| { onToggle?: EventValueOrEventCallback \| undefined; }` | `undefined` | -| `_open` | `_open` | If set (to true) opens/expands the element, closes if not set (or set to false). | `boolean \| undefined` | `false` | +| Property | Attribute | Description | Type | Default | +| --------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------- | ----------- | +| `_disabled` | `_disabled` | Makes the element not focusable and ignore all events. | `boolean \| undefined` | `false` | +| `_label` _(required)_ | `_label` | Defines the visible or semantic label of the component (e.g. aria-label, label, headline, caption, summary, etc.). | `string` | `undefined` | +| `_on` | -- | Defines the callback functions for details. | `undefined \| { onToggle?: EventValueOrEventCallback \| undefined; }` | `undefined` | +| `_open` | `_open` | If set (to true) opens/expands the element, closes if not set (or set to false). | `boolean \| undefined` | `false` | ## Slots diff --git a/packages/components/src/components/link-button/component.tsx b/packages/components/src/components/link-button/component.tsx index 13f720cb294..f071d39bb87 100644 --- a/packages/components/src/components/link-button/component.tsx +++ b/packages/components/src/components/link-button/component.tsx @@ -43,6 +43,7 @@ export class KolLinkButton implements LinkButtonProps { }} _accessKey={this._accessKey} _ariaCurrentValue={this._ariaCurrentValue} + _disabled={this._disabled} _download={this._download} _hideLabel={this._hideLabel} _href={this._href} @@ -75,6 +76,11 @@ export class KolLinkButton implements LinkButtonProps { */ @Prop() public _customClass?: CustomClassPropType; + /** + * Makes the element not focusable and ignore all events. + */ + @Prop() public _disabled?: boolean = false; + /** * Tells the browser that the link contains a file. Optionally sets the filename. */ diff --git a/packages/components/src/components/link-button/readme.md b/packages/components/src/components/link-button/readme.md index 58d54d0ede0..38e990b774f 100644 --- a/packages/components/src/components/link-button/readme.md +++ b/packages/components/src/components/link-button/readme.md @@ -34,6 +34,7 @@ Weitere Informationen zum Aussehen finden Sie auf der { + el.removeEventListener('click', preventDefault); + el.addEventListener('click', preventDefault); + }); + } + } + public disconnectedCallback(): void { if (this.unsubscribeOnLocationChange) { this.unsubscribeOnLocationChange(); diff --git a/packages/components/src/components/link/readme.md b/packages/components/src/components/link/readme.md index 1a081f5dfaa..d21866280bb 100644 --- a/packages/components/src/components/link/readme.md +++ b/packages/components/src/components/link/readme.md @@ -81,6 +81,7 @@ Der übergebene Location-String muss dabei exakt dem `href`-Attributs des Links | -------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------- | ----------- | | `_accessKey` | `_access-key` | Defines the elements access key. | `string \| undefined` | `undefined` | | `_ariaCurrentValue` | `_aria-current-value` | Defines the value for the aria-current attribute. | `"date" \| "false" \| "location" \| "page" \| "step" \| "time" \| "true" \| undefined` | `undefined` | +| `_disabled` | `_disabled` | Makes the element not focusable and ignore all events. | `boolean \| undefined` | `false` | | `_download` | `_download` | Tells the browser that the link contains a file. Optionally sets the filename. | `string \| undefined` | `undefined` | | `_hideLabel` | `_hide-label` | Hides the caption by default and displays the caption text with a tooltip when the interactive element is focused or the mouse is over it. | `boolean \| undefined` | `false` | | `_href` _(required)_ | `_href` | Sets the target URI of the link or citation source. | `string` | `undefined` | diff --git a/packages/components/src/components/link/shadow.tsx b/packages/components/src/components/link/shadow.tsx index 3ae6dff7ccf..01f34105753 100644 --- a/packages/components/src/components/link/shadow.tsx +++ b/packages/components/src/components/link/shadow.tsx @@ -37,6 +37,7 @@ export class KolLink implements LinkProps { ref={this.catchRef} _accessKey={this._accessKey} _ariaCurrentValue={this._ariaCurrentValue} + _disabled={this._disabled} _download={this._download} _hideLabel={this._hideLabel} _href={this._href} @@ -68,6 +69,11 @@ export class KolLink implements LinkProps { */ @Prop() public _ariaCurrentValue?: AriaCurrentValuePropType; + /** + * Makes the element not focusable and ignore all events. + */ + @Prop() public _disabled?: boolean = false; + /** * Tells the browser that the link contains a file. Optionally sets the filename. */ diff --git a/packages/components/src/utils/events.ts b/packages/components/src/utils/events.ts index bfd63c867aa..4b1ff2c92a3 100644 --- a/packages/components/src/utils/events.ts +++ b/packages/components/src/utils/events.ts @@ -24,3 +24,9 @@ function dispatchKoliBriEvent(target: EventTarget, type: KoliBriEventType, de export function tryToDispatchKoliBriEvent(type: KoliBriEventType, target?: EventTarget, detail?: T): void { target && dispatchKoliBriEvent(target, type, detail); } + +export function preventDefault(event: Event) { + event.preventDefault(); + event.stopImmediatePropagation(); + event.stopPropagation(); +} diff --git a/packages/create-kolibri/templates/kolibri-library/packages/components/package.json b/packages/create-kolibri/templates/kolibri-library/packages/components/package.json index 1b37f4412d7..7af59a245e1 100644 --- a/packages/create-kolibri/templates/kolibri-library/packages/components/package.json +++ b/packages/create-kolibri/templates/kolibri-library/packages/components/package.json @@ -24,7 +24,7 @@ "depcheck": "depcheck --ignore-bin-package --skip-missing --ignores=@types/*,@public-ui/*,@stencil/*,eslint-*,postcss-windicss,tslib,workbox-build", "format": "prettier --check src", "lighthouse": "lighthouse --chrome-flags=\"--headless\" --output-path lighthouse.report.html --preset=desktop --quiet", - "lint": "eslint src && tsc --noemit", + "lint": "tsc --noemit && eslint src", "unused": "ts-prune src -e", "start": "cross-env NODE_ENV=development stencil build --dev --serve --watch --no-open", "test": "cross-env NODE_ENV=test stencil test --spec --json --outputFile jest-test-results.json", diff --git a/packages/samples/react/src/components/accordion/basic.tsx b/packages/samples/react/src/components/accordion/basic.tsx index 2fac0e21f30..4ed89fd341f 100644 --- a/packages/samples/react/src/components/accordion/basic.tsx +++ b/packages/samples/react/src/components/accordion/basic.tsx @@ -8,7 +8,7 @@ export const AccordionBasic: FC = () => (
Inhalt Accordion Tab 1
- +
Inhalt Accordion Tab 2
diff --git a/packages/samples/react/src/components/details/basic.tsx b/packages/samples/react/src/components/details/basic.tsx index a2378218b9d..98567071f0d 100644 --- a/packages/samples/react/src/components/details/basic.tsx +++ b/packages/samples/react/src/components/details/basic.tsx @@ -10,6 +10,11 @@ export const DetailsBasic: FC = () => ( voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt. + + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt. + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. diff --git a/packages/samples/react/src/components/link/basic.tsx b/packages/samples/react/src/components/link/basic.tsx index 412b4d2fbae..feec4e90fcf 100644 --- a/packages/samples/react/src/components/link/basic.tsx +++ b/packages/samples/react/src/components/link/basic.tsx @@ -4,6 +4,9 @@ import { KolLink } from '@public-ui/react'; export const LinkBasic: FC = () => (
+ + +

In diesem Absatz wird ein Link gesetzt, der keine weiteren Attribute enthält. Er wird standardmäßig als{' '} inline-Element ausgegeben. diff --git a/packages/schema/package.json b/packages/schema/package.json index b42f19c0bc3..3ff72fdbd8e 100644 --- a/packages/schema/package.json +++ b/packages/schema/package.json @@ -45,7 +45,7 @@ "depcheck": "depcheck --ignore-bin-package --skip-missing --ignores=@types/*", "dev": "nodemon --exec unbuild --ext js,json,ts --watch src", "format": "prettier --check src", - "lint": "eslint src && tsc --noemit", + "lint": "tsc --noemit && eslint src", "prepack": "unbuild" }, "dependencies": { diff --git a/packages/schema/src/components/accordion.ts b/packages/schema/src/components/accordion.ts index 980b111072e..2dc27d04cc1 100644 --- a/packages/schema/src/components/accordion.ts +++ b/packages/schema/src/components/accordion.ts @@ -1,6 +1,6 @@ import type { Generic } from 'adopted-style-sheets'; import type { Events } from '../enums'; -import type { HeadingLevel, PropLabel, PropOpen } from '../props'; +import type { HeadingLevel, PropDisabled, PropLabel, PropOpen } from '../props'; import type { EventValueOrEventCallback } from '../types'; export type KoliBriAccordionCallbacks = { @@ -11,7 +11,8 @@ type RequiredProps = PropLabel; type OptionalProps = { level: HeadingLevel; on: KoliBriAccordionCallbacks; -} & PropOpen; +} & PropDisabled & + PropOpen; type RequiredStates = RequiredProps & PropLabel; type OptionalStates = OptionalProps; diff --git a/packages/schema/src/components/details.ts b/packages/schema/src/components/details.ts index b0613922c8b..cdf31b57f41 100644 --- a/packages/schema/src/components/details.ts +++ b/packages/schema/src/components/details.ts @@ -1,6 +1,6 @@ import type { Generic } from 'adopted-style-sheets'; -import type { PropLabel, PropOpen } from '../props'; +import type { PropDisabled, PropLabel, PropOpen } from '../props'; import type { EventValueOrEventCallback } from '../types'; export type EventCallbacks = { @@ -10,7 +10,8 @@ export type EventCallbacks = { type RequiredProps = PropLabel; type OptionalProps = { on: EventCallbacks; -} & PropOpen; +} & PropDisabled & + PropOpen; type RequiredStates = RequiredProps; type OptionalStates = OptionalProps; diff --git a/packages/schema/src/components/link.ts b/packages/schema/src/components/link.ts index c21daa34c42..ff0c9dfbe3d 100644 --- a/packages/schema/src/components/link.ts +++ b/packages/schema/src/components/link.ts @@ -3,6 +3,7 @@ import type { PropAccessKey, PropAlternativeButtonLinkRole, PropAriaCurrentValue, + PropDisabled, PropDownload, PropHideLabel, PropHref, @@ -22,8 +23,9 @@ export type RequiredProps = PropHref; export type OptionalProps = { tabIndex: number; } & PropAccessKey & - PropAriaCurrentValue & PropAlternativeButtonLinkRole & + PropAriaCurrentValue & + PropDisabled & PropDownload & PropHideLabel & PropIcons & diff --git a/packages/schema/src/props/disabled.ts b/packages/schema/src/props/disabled.ts index b80932686b9..813dcdaf65d 100644 --- a/packages/schema/src/props/disabled.ts +++ b/packages/schema/src/props/disabled.ts @@ -1,6 +1,6 @@ import type { Generic } from 'adopted-style-sheets'; -import { watchBoolean } from '../utils'; +import { a11yHintDisabled, watchBoolean } from '../utils'; /* types */ export type DisabledPropType = boolean; @@ -14,5 +14,13 @@ export type PropDisabled = { /* validator */ export const validateDisabled = (component: Generic.Element.Component, value?: DisabledPropType): void => { - watchBoolean(component, '_disabled', value); + watchBoolean(component, '_disabled', value, { + hooks: { + afterPatch: (value) => { + if (value === true) { + a11yHintDisabled(); + } + }, + }, + }); }; diff --git a/packages/themes/bmf/package.json b/packages/themes/bmf/package.json index e5fbc11022b..558489d918b 100644 --- a/packages/themes/bmf/package.json +++ b/packages/themes/bmf/package.json @@ -5,7 +5,7 @@ "scripts": { "depcheck": "depcheck --ignore-bin-package --skip-missing --ignores=@types/*", "format": "prettier --check src", - "lint": "eslint src && tsc --noemit", + "lint": "tsc --noemit && eslint src", "test": "THEME_MODULE=src/index THEME_EXPORT=BMF kolibri-visual-test", "test-update": "THEME_MODULE=src/index THEME_EXPORT=BMF kolibri-visual-test --update-snapshots theme-snapshots.spec.js" }, diff --git a/packages/themes/default/package.json b/packages/themes/default/package.json index f1091a947f3..fe3281ee0f6 100644 --- a/packages/themes/default/package.json +++ b/packages/themes/default/package.json @@ -41,7 +41,7 @@ "build": "unbuild", "depcheck": "depcheck --ignore-bin-package --skip-missing --ignores=@types/*", "format": "prettier --check src", - "lint": "eslint src && tsc --noemit", + "lint": "tsc --noemit && eslint src", "prepack": "unbuild", "test": "THEME_MODULE=dist THEME_EXPORT=DEFAULT kolibri-visual-test", "test-update": "THEME_MODULE=dist THEME_EXPORT=DEFAULT kolibri-visual-test --update-snapshots theme-snapshots.spec.js", diff --git a/packages/themes/ecl/package.json b/packages/themes/ecl/package.json index d3c2054565c..13dc1800ed2 100644 --- a/packages/themes/ecl/package.json +++ b/packages/themes/ecl/package.json @@ -5,7 +5,7 @@ "scripts": { "depcheck": "depcheck --ignore-bin-package --skip-missing --ignores=@types/*", "format": "prettier --check src", - "lint": "eslint src && tsc --noemit", + "lint": "tsc --noemit && eslint src", "xtest": "npm-run-all test:*", "test:ecl-ec": "THEME_MODULE=src/index THEME_EXPORT=ECL_EC kolibri-visual-test", "test:ecl-eu": "THEME_MODULE=src/index THEME_EXPORT=ECL_EU kolibri-visual-test", diff --git a/packages/themes/itzbund/package.json b/packages/themes/itzbund/package.json index 4925a029cb6..15155bc6c70 100644 --- a/packages/themes/itzbund/package.json +++ b/packages/themes/itzbund/package.json @@ -5,7 +5,7 @@ "scripts": { "depcheck": "depcheck --ignore-bin-package --skip-missing --ignores=@types/*", "format": "prettier --check src", - "lint": "eslint src && tsc --noemit", + "lint": "tsc --noemit && eslint src", "xtest": "THEME_MODULE=src/index THEME_EXPORT=ITZBund kolibri-visual-test", "xtest-update": "THEME_MODULE=src/index THEME_EXPORT=ITZBund kolibri-visual-test --update-snapshots theme-snapshots.spec.js" }, diff --git a/packages/themes/package.json b/packages/themes/package.json index 8f804a5f09a..6f032d99b7f 100644 --- a/packages/themes/package.json +++ b/packages/themes/package.json @@ -44,7 +44,7 @@ "build": "unbuild", "depcheck": "depcheck --ignore-bin-package --skip-missing --ignores=@public-ui/schema,@types/*", "format": "prettier --check src", - "lint": "eslint src && tsc --noemit", + "lint": "tsc --noemit && eslint src", "prepack": "unbuild", "dev": "nodemon --ignore dist -e ts,tsx,scss --exec \"pnpm build\"", "test-all": "pnpm -r --workspace-concurrency=1 test", diff --git a/packages/tools/kolibri-cli/package.json b/packages/tools/kolibri-cli/package.json index 342819d9be1..fc898ec8e7e 100644 --- a/packages/tools/kolibri-cli/package.json +++ b/packages/tools/kolibri-cli/package.json @@ -20,7 +20,7 @@ "reset": "pnpm i @public-ui/components@1.1.7", "depcheck": "depcheck --ignores=\"@public-ui/components,deepmerge,loglevel,mocha\"", "format": "prettier -c src", - "lint": "eslint src && tsc --noEmit", + "lint": "tsc --noemit && eslint src", "prepack": "tsc", "start": "rimraf test && cpy \"../../samples/react/src/components\" test/src && cpy \"../../samples/react/public/*.html\" test/ && ts-node src/index.ts migrate --ignore-uncommitted-changes --test-tasks test", "restart": "pnpm reset && pnpm start", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1b235b7cec3..244b1b33c11 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -72,7 +72,7 @@ importers: specifier: 11.2.14 version: 11.2.14(rxjs@6.5.5)(zone.js@0.11.8) '@public-ui/components': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../../components '@types/minimatch': specifier: 5.1.2 @@ -117,7 +117,7 @@ importers: specifier: 12.2.17 version: 12.2.17(rxjs@7.6.0)(zone.js@0.11.8) '@public-ui/components': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../../components '@types/minimatch': specifier: 5.1.2 @@ -162,7 +162,7 @@ importers: specifier: 13.4.0 version: 13.4.0(rxjs@7.6.0)(zone.js@0.11.8) '@public-ui/components': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../../components '@types/minimatch': specifier: 5.1.2 @@ -207,7 +207,7 @@ importers: specifier: 14.3.0 version: 14.3.0(rxjs@7.6.0)(zone.js@0.12.0) '@public-ui/components': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../../components '@types/minimatch': specifier: 5.1.2 @@ -252,7 +252,7 @@ importers: specifier: 15.2.10 version: 15.2.10(rxjs@7.8.1)(zone.js@0.12.0) '@public-ui/components': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../../components '@types/minimatch': specifier: 5.1.2 @@ -297,7 +297,7 @@ importers: specifier: 16.2.12 version: 16.2.12(rxjs@7.8.1)(zone.js@0.13.3) '@public-ui/components': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../../components '@types/minimatch': specifier: 5.1.2 @@ -342,7 +342,7 @@ importers: specifier: 17.1.1 version: 17.1.1(rxjs@7.8.1)(zone.js@0.14.3) '@public-ui/components': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../../components '@types/minimatch': specifier: 5.1.2 @@ -378,7 +378,7 @@ importers: packages/adapters/hydrate: devDependencies: '@public-ui/components': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../components rimraf: specifier: 3.0.2 @@ -387,14 +387,14 @@ importers: packages/adapters/preact: dependencies: '@public-ui/react': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../react preact: specifier: '>=10.11.3' version: 10.11.3 devDependencies: '@public-ui/components': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../components react: specifier: 18.2.0 @@ -412,7 +412,7 @@ importers: packages/adapters/react: devDependencies: '@public-ui/components': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../components '@types/minimatch': specifier: 5.1.2 @@ -448,7 +448,7 @@ importers: packages/adapters/react-standalone: dependencies: '@public-ui/components': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../components react: specifier: '>=16.14.0' @@ -458,7 +458,7 @@ importers: version: 18.2.0(react@18.2.0) devDependencies: '@public-ui/react': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../react cpy-cli: specifier: 5.0.0 @@ -470,7 +470,7 @@ importers: packages/adapters/solid: devDependencies: '@public-ui/components': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../components '@types/minimatch': specifier: 5.1.2 @@ -500,7 +500,7 @@ importers: specifier: 7.23.6 version: 7.23.6 '@public-ui/components': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../components '@types/minimatch': specifier: 5.1.2 @@ -530,7 +530,7 @@ importers: specifier: 1.5.4 version: 1.5.4 '@public-ui/schema': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../schema adopted-style-sheets: specifier: 1.1.3 @@ -727,13 +727,13 @@ importers: packages/designer: dependencies: '@public-ui/components': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../components '@public-ui/solid': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../adapters/solid '@public-ui/themes': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../themes adopted-style-sheets: specifier: 1.1.3 @@ -839,13 +839,13 @@ importers: specifier: 17.1.1 version: 17.1.1(@angular/common@17.1.1)(@angular/compiler@17.1.1)(@angular/core@17.1.1)(@angular/platform-browser@17.1.1) '@public-ui/angular-v17': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../adapters/angular/v17 '@public-ui/components': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../components '@public-ui/themes': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../themes zone.js: specifier: 0.14.3 @@ -903,13 +903,13 @@ importers: specifier: 1.3.49 version: 1.3.49(@leanup/stack@1.3.49)(esbuild@0.19.3)(less@4.2.0)(postcss@8.4.33) '@public-ui/components': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../components '@public-ui/react': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../adapters/react '@public-ui/themes': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../themes '@types/node': specifier: 20.11.6 @@ -981,13 +981,13 @@ importers: packages/samples/ssr: dependencies: '@public-ui/components': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../components '@public-ui/hydrate': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../adapters/hydrate '@public-ui/theme-default': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../themes/default express: specifier: 4.18.2 @@ -1021,13 +1021,13 @@ importers: packages/samples/vite: dependencies: '@public-ui/components': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../components '@public-ui/react': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../adapters/react '@public-ui/theme-default': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../themes/default react: specifier: 18.2.0 @@ -1119,11 +1119,11 @@ importers: packages/themes: dependencies: '@public-ui/components': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../components devDependencies: '@public-ui/schema': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../schema '@types/node': specifier: ts5.3 @@ -1162,14 +1162,14 @@ importers: packages/themes/bmf: dependencies: '@public-ui/components': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../components devDependencies: '@public-ui/schema': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../schema '@public-ui/visual-tests': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../tools/visual-tests '@types/node': specifier: ts5.3 @@ -1181,14 +1181,14 @@ importers: packages/themes/default: dependencies: '@public-ui/components': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../components devDependencies: '@public-ui/schema': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../schema '@public-ui/visual-tests': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../tools/visual-tests '@types/node': specifier: ts5.3 @@ -1218,14 +1218,14 @@ importers: packages/themes/ecl: dependencies: '@public-ui/components': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../components devDependencies: '@public-ui/schema': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../schema '@public-ui/visual-tests': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../tools/visual-tests '@types/node': specifier: ts5.3 @@ -1240,14 +1240,14 @@ importers: packages/themes/itzbund: dependencies: '@public-ui/components': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../components devDependencies: '@public-ui/schema': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../schema '@public-ui/visual-tests': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../tools/visual-tests '@types/node': specifier: ts5.3 @@ -1281,7 +1281,7 @@ importers: version: 7.5.4 devDependencies: '@public-ui/components': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../components '@types/gradient-string': specifier: 1.1.5 @@ -1350,7 +1350,7 @@ importers: specifier: 1.41.1 version: 1.41.1 '@public-ui/sample-react': - specifier: 2.0.4-rc.0 + specifier: 2.0.4 version: link:../../samples/react axe-playwright: specifier: 1.2.3 @@ -1398,7 +1398,7 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.19 + '@jridgewell/trace-mapping': 0.3.22 /@angular/common@17.1.1(@angular/core@17.1.1)(rxjs@7.8.1): resolution: {integrity: sha512-YMM2vImWJg7H3Yaej7ncGpFKT28V2Y6X9/rLpRdSKAiUbcbj7GeWtX/upfZGR9KmD08baYZw0YTNMR03Ubv/mg==} @@ -1969,7 +1969,7 @@ packages: dependencies: '@babel/types': 7.23.6 '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.19 + '@jridgewell/trace-mapping': 0.3.22 jsesc: 2.5.2 /@babel/helper-annotate-as-pure@7.22.5: @@ -2413,7 +2413,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/traverse': 7.22.20 + '@babel/traverse': 7.23.6 '@babel/types': 7.23.6 transitivePeerDependencies: - supports-color @@ -2424,7 +2424,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/traverse': 7.22.20 + '@babel/traverse': 7.23.6 '@babel/types': 7.23.6 transitivePeerDependencies: - supports-color @@ -3136,7 +3136,7 @@ packages: '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.22.5 + '@babel/helper-function-name': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.11) @@ -3358,7 +3358,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-function-name': 7.22.5 + '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -5655,7 +5655,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 20.11.6 + '@types/node': 20.11.7 chalk: 4.1.2 jest-message-util: 26.6.2 jest-util: 26.6.2 @@ -5671,7 +5671,7 @@ packages: '@jest/test-result': 26.6.2 '@jest/transform': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.11.6 + '@types/node': 20.11.7 ansi-escapes: 4.3.2 chalk: 4.1.2 exit: 0.1.2 @@ -5708,7 +5708,7 @@ packages: dependencies: '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.11.6 + '@types/node': 20.11.7 jest-mock: 26.6.2 dev: true @@ -5718,7 +5718,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@sinonjs/fake-timers': 6.0.1 - '@types/node': 20.11.6 + '@types/node': 20.11.7 jest-message-util: 26.6.2 jest-mock: 26.6.2 jest-util: 26.6.2 @@ -5839,7 +5839,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.11.6 + '@types/node': 20.11.7 '@types/yargs': 15.0.15 chalk: 4.1.2 dev: true @@ -7557,12 +7557,12 @@ packages: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 20.11.6 + '@types/node': 20.11.7 /@types/bonjour@3.5.10: resolution: {integrity: sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==} dependencies: - '@types/node': 20.11.6 + '@types/node': 20.11.7 /@types/chai@4.3.11: resolution: {integrity: sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==} @@ -7581,12 +7581,12 @@ packages: resolution: {integrity: sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==} dependencies: '@types/express-serve-static-core': 4.17.36 - '@types/node': 20.11.6 + '@types/node': 20.11.7 /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 20.11.6 + '@types/node': 20.11.7 /@types/eslint-scope@3.7.4: resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} @@ -7613,7 +7613,7 @@ packages: /@types/express-serve-static-core@4.17.36: resolution: {integrity: sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==} dependencies: - '@types/node': 20.11.6 + '@types/node': 20.11.7 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 '@types/send': 0.17.1 @@ -7629,13 +7629,13 @@ packages: /@types/graceful-fs@4.1.6: resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: - '@types/node': 20.11.6 + '@types/node': 20.11.7 dev: true /@types/gradient-string@1.1.5: resolution: {integrity: sha512-Z2VPQ0q+IhrAO7XjJSjpDsoPc+CsCshRNah1IE9LCo/NzHMHylssvx73i0BAKzuaGj9cdhmgq9rLaietpYAbKQ==} dependencies: - '@types/tinycolor2': 1.4.3 + '@types/tinycolor2': 1.4.6 dev: true /@types/hoist-non-react-statics@3.3.3: @@ -7655,7 +7655,7 @@ packages: /@types/http-proxy@1.17.11: resolution: {integrity: sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==} dependencies: - '@types/node': 20.11.6 + '@types/node': 20.11.7 /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} @@ -7745,7 +7745,6 @@ packages: resolution: {integrity: sha512-GPmeN1C3XAyV5uybAf4cMLWT9fDWcmQhZVtMFu7OR32WjrqGG+Wnk2V1d0bmtUyE/Zy1QJ9BxyiTih9z8Oks8A==} dependencies: undici-types: 5.26.5 - dev: true /@types/node@20.6.0: resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} @@ -7794,7 +7793,7 @@ packages: /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 20.11.6 + '@types/node': 20.11.7 dev: true /@types/resolve@1.20.2: @@ -7814,7 +7813,7 @@ packages: resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} dependencies: '@types/mime': 1.3.2 - '@types/node': 20.11.6 + '@types/node': 20.11.7 /@types/serve-index@1.9.1: resolution: {integrity: sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==} @@ -7826,7 +7825,7 @@ packages: dependencies: '@types/http-errors': 2.0.1 '@types/mime': 3.0.1 - '@types/node': 20.11.6 + '@types/node': 20.11.7 /@types/sinon@10.0.20: resolution: {integrity: sha512-2APKKruFNCAZgx3daAyACGzWuJ028VVCUDk6o2rw/Z4PXT0ogwdV4KUegW0MwVs0Zu59auPXbbuBJHF12Sx1Eg==} @@ -7839,14 +7838,14 @@ packages: /@types/sockjs@0.3.33: resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} dependencies: - '@types/node': 20.11.6 + '@types/node': 20.11.7 /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true - /@types/tinycolor2@1.4.3: - resolution: {integrity: sha512-Kf1w9NE5HEgGxCRyIcRXR/ZYtDv0V8FVPtYHwLxl0O+maGX0erE77pQlD0gpP+/KByMZ87mOA79SjifhSB3PjQ==} + /@types/tinycolor2@1.4.6: + resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==} /@types/trusted-types@2.0.3: resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} @@ -7863,7 +7862,7 @@ packages: /@types/ws@8.5.5: resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} dependencies: - '@types/node': 20.11.6 + '@types/node': 20.11.7 /@types/yargs-interactive@2.1.3: resolution: {integrity: sha512-bYB8ah0JPR6/lpHlxUzeHsrb3RK5OW7N8Hnth2nefnr6zQ5KFoDQ6wM5x58dTLEDYrwikFy3EPTf/O0HKLNaIg==} @@ -7890,7 +7889,7 @@ packages: resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} requiresBuild: true dependencies: - '@types/node': 20.11.6 + '@types/node': 20.11.7 optional: true /@typescript-eslint/eslint-plugin@6.15.0(@typescript-eslint/parser@6.15.0)(eslint@8.56.0)(typescript@5.2.2): @@ -9938,7 +9937,7 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001568 + caniuse-lite: 1.0.30001579 electron-to-chromium: 1.4.610 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.22.2) @@ -10121,17 +10120,17 @@ packages: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: browserslist: 4.22.2 - caniuse-lite: 1.0.30001568 + caniuse-lite: 1.0.30001579 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 dev: true /caniuse-lite@1.0.30001568: resolution: {integrity: sha512-vSUkH84HontZJ88MiNrOau1EBrCqEQYgkC5gIySiDlpsm8sGVrhU7Kx4V6h0tnqaHzIHZv08HlJIwPbL4XL9+A==} + dev: true /caniuse-lite@1.0.30001579: resolution: {integrity: sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==} - dev: true /canonical-path@1.0.0: resolution: {integrity: sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==} @@ -10247,7 +10246,7 @@ packages: engines: {node: '>=12.13.0'} hasBin: true dependencies: - '@types/node': 20.11.6 + '@types/node': 20.11.7 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 2.0.1 @@ -10676,7 +10675,7 @@ packages: /constantinople@4.0.1: resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} dependencies: - '@babel/parser': 7.22.16 + '@babel/parser': 7.23.6 '@babel/types': 7.23.6 dev: true @@ -14416,6 +14415,7 @@ packages: /is-accessor-descriptor@0.1.6: resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==} engines: {node: '>=0.10.0'} + deprecated: Please upgrade to v0.1.7 dependencies: kind-of: 3.2.2 dev: true @@ -14498,6 +14498,7 @@ packages: /is-data-descriptor@0.1.4: resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==} engines: {node: '>=0.10.0'} + deprecated: Please upgrade to v0.1.5 dependencies: kind-of: 3.2.2 dev: true @@ -15114,7 +15115,7 @@ packages: '@jest/environment': 26.6.2 '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.11.6 + '@types/node': 20.11.7 jest-mock: 26.6.2 jest-util: 26.6.2 jsdom: 16.7.0 @@ -15132,7 +15133,7 @@ packages: '@jest/environment': 26.6.2 '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.11.6 + '@types/node': 20.11.7 jest-mock: 26.6.2 jest-util: 26.6.2 dev: true @@ -15153,7 +15154,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.6 - '@types/node': 20.11.6 + '@types/node': 20.11.7 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -15179,7 +15180,7 @@ packages: '@jest/source-map': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.11.6 + '@types/node': 20.11.7 chalk: 4.1.2 co: 4.6.0 expect: 26.6.2 @@ -15238,7 +15239,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 20.11.6 + '@types/node': 20.11.7 dev: true /jest-pnp-resolver@1.2.3(jest-resolve@26.6.2): @@ -15291,7 +15292,7 @@ packages: '@jest/environment': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.11.6 + '@types/node': 20.11.7 chalk: 4.1.2 emittery: 0.7.2 exit: 0.1.2 @@ -15359,7 +15360,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 20.11.6 + '@types/node': 20.11.7 graceful-fs: 4.2.11 dev: true @@ -15392,7 +15393,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 20.11.6 + '@types/node': 20.11.7 chalk: 4.1.2 graceful-fs: 4.2.11 is-ci: 2.0.0 @@ -15417,7 +15418,7 @@ packages: dependencies: '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.11.6 + '@types/node': 20.11.7 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 26.6.2 @@ -15428,7 +15429,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.11.6 + '@types/node': 20.11.7 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -15437,7 +15438,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.11.6 + '@types/node': 20.11.7 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -15591,7 +15592,7 @@ packages: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 10.0.0 - ws: 8.14.2 + ws: 8.16.0 xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -20630,7 +20631,7 @@ packages: dependencies: jszip: 3.10.1 tmp: 0.2.1 - ws: 8.14.2 + ws: 8.16.0 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -21200,7 +21201,7 @@ packages: resolution: {integrity: sha512-DI7/OuAUD+GMpR6dmu8lliO2Wg5zfeh+/xsdyJZCzd8o5JgFUjCeLsBDuZjIQJdwXS3J0L/uZYrELKYqx+PXog==} engines: {node: '>=8.0'} dependencies: - '@types/node': 20.11.6 + '@types/node': 20.11.7 image-ssim: 0.2.0 jpeg-js: 0.4.4 dev: true @@ -21904,7 +21905,7 @@ packages: /tinygradient@1.1.5: resolution: {integrity: sha512-8nIfc2vgQ4TeLnk2lFj4tRLvvJwEfQuabdsmvDdQPT0xlk9TaNtpGd6nNRxXoK6vQhN6RSzj+Cnp5tTQmpxmbw==} dependencies: - '@types/tinycolor2': 1.4.3 + '@types/tinycolor2': 1.4.6 tinycolor2: 1.6.0 dev: false @@ -23539,7 +23540,7 @@ packages: resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} engines: {node: '>= 10.0.0'} dependencies: - '@babel/parser': 7.22.16 + '@babel/parser': 7.23.6 '@babel/types': 7.23.6 assert-never: 1.2.1 babel-walk: 3.0.0-canary-5 @@ -23835,7 +23836,6 @@ packages: optional: true utf-8-validate: optional: true - dev: true /xdg-basedir@4.0.0: resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==}