From bbb7040d13c9657e438b8ea152bcdd92f5f5417e Mon Sep 17 00:00:00 2001 From: Daniel Leroux Date: Thu, 5 Dec 2024 17:15:32 +0100 Subject: [PATCH 1/3] chore: use scoped react styling --- packages/react-test-app/package.json | 1 + ...d-legal.css => about-and-legal.scoped.css} | 0 .../src/preview-examples/about-and-legal.tsx | 2 +- ....css => application-app-switch.scoped.css} | 0 .../application-app-switch.tsx | 2 +- ...css => application-breakpoints.scoped.css} | 0 .../application-breakpoints.tsx | 2 +- ...application.css => application.scoped.css} | 0 .../src/preview-examples/application.tsx | 2 +- ...gation.css => basic-navigation.scoped.css} | 0 .../src/preview-examples/basic-navigation.tsx | 2 +- ...ns.css => blind-header-actions.scoped.css} | 0 .../preview-examples/blind-header-actions.tsx | 2 +- ...variants.css => blind-variants.scoped.css} | 0 .../src/preview-examples/blind-variants.tsx | 2 +- .../{blind.css => blind.scoped.css} | 0 .../src/preview-examples/blind.tsx | 2 +- ...ost.css => button-danger-ghost.scoped.css} | 0 .../preview-examples/button-danger-ghost.tsx | 2 +- ...e.css => button-danger-outline.scoped.css} | 0 .../button-danger-outline.tsx | 2 +- ...on-danger.css => button-danger.scoped.css} | 0 .../src/preview-examples/button-danger.tsx | 2 +- ...tton-ghost.css => button-ghost.scoped.css} | 0 .../src/preview-examples/button-ghost.tsx | 2 +- ...ghost.css => button-grey-ghost.scoped.css} | 0 .../preview-examples/button-grey-ghost.tsx | 2 +- ...y.css => button-grey-secondary.scoped.css} | 0 .../button-grey-secondary.tsx | 2 +- ...button-grey.css => button-grey.scoped.css} | 0 .../src/preview-examples/button-grey.tsx | 2 +- ...-loading.css => button-loading.scoped.css} | 0 .../src/preview-examples/button-loading.tsx | 2 +- ...ondary.css => button-secondary.scoped.css} | 0 .../src/preview-examples/button-secondary.tsx | 2 +- ...t-icon.css => button-text-icon.scoped.css} | 0 .../src/preview-examples/button-text-icon.tsx | 2 +- ...h-icon.css => button-with-icon.scoped.css} | 0 .../src/preview-examples/button-with-icon.tsx | 2 +- .../{buttons.css => buttons.scoped.css} | 0 .../src/preview-examples/buttons.tsx | 2 +- .../{card.css => card.scoped.css} | 0 .../src/preview-examples/card.tsx | 2 +- .../{chip.css => chip.scoped.css} | 0 .../src/preview-examples/chip.tsx | 2 +- ...on.css => dropdown-button-icon.scoped.css} | 0 .../preview-examples/dropdown-button-icon.tsx | 2 +- ...-button.css => dropdown-button.scoped.css} | 0 .../src/preview-examples/dropdown-button.tsx | 2 +- ...echarts-bar-horizontal-stacked.scoped.css} | 0 .../echarts-bar-horizontal-stacked.tsx | 2 +- ...mple.css => echarts-bar-simple.scoped.css} | 0 .../preview-examples/echarts-bar-simple.tsx | 2 +- ...s-circle.css => echarts-circle.scoped.css} | 0 .../src/preview-examples/echarts-circle.tsx | 2 +- ...ate.css => echarts-empty-state.scoped.css} | 0 .../preview-examples/echarts-empty-state.tsx | 2 +- ...rts-gauge.css => echarts-gauge.scoped.css} | 0 .../src/preview-examples/echarts-gauge.tsx | 2 +- ...d.css => echarts-line-advanced.scoped.css} | 0 .../echarts-line-advanced.tsx | 2 +- ...> echarts-line-multiple-y-axis.scoped.css} | 0 .../echarts-line-multiple-y-axis.tsx | 2 +- ...ple.css => echarts-line-simple.scoped.css} | 0 .../preview-examples/echarts-line-simple.tsx | 2 +- ...echarts-pie.css => echarts-pie.scoped.css} | 0 .../src/preview-examples/echarts-pie.tsx | 2 +- ...rc.css => echarts-progress-arc.scoped.css} | 0 .../preview-examples/echarts-progress-arc.tsx | 2 +- ...css => echarts-progress-circle.scoped.css} | 0 .../echarts-progress-circle.tsx | 2 +- ...l-3d.css => echarts-special-3d.scoped.css} | 0 .../preview-examples/echarts-special-3d.tsx | 2 +- ...css => echarts-special-toolbox.scoped.css} | 0 .../echarts-special-toolbox.tsx | 2 +- ...om.css => echarts-special-zoom.scoped.css} | 0 .../preview-examples/echarts-special-zoom.tsx | 2 +- .../{echarts.css => echarts.scoped.css} | 0 .../src/preview-examples/echarts.tsx | 2 +- .../{flip-tile.css => flip-tile.scoped.css} | 0 .../src/preview-examples/flip-tile.tsx | 2 +- ...m-checkbox-group-indeterminate.scoped.css} | 0 .../form-checkbox-group-indeterminate.tsx | 2 +- ...t-grid.css => form-layout-grid.scoped.css} | 0 .../src/preview-examples/form-layout-grid.tsx | 2 +- ...idation.css => form-validation.scoped.css} | 0 .../src/preview-examples/form-validation.tsx | 2 +- ...id-padding.css => grid-padding.scoped.css} | 0 .../src/preview-examples/grid-padding.tsx | 2 +- .../{grid-size.css => grid-size.scoped.css} | 0 .../src/preview-examples/grid-size.tsx | 2 +- .../{grid.css => grid.scoped.css} | 0 .../src/preview-examples/grid.tsx | 2 +- ...on-toggle-button-primary-ghost.scoped.css} | 0 .../icon-toggle-button-primary-ghost.tsx | 2 +- ...-toggle-button-primary-outline.scoped.css} | 0 .../icon-toggle-button-primary-outline.tsx | 2 +- ...-toggle-button-secondary-ghost.scoped.css} | 0 .../icon-toggle-button-secondary-ghost.tsx | 2 +- ...oggle-button-secondary-outline.scoped.css} | 0 .../icon-toggle-button-secondary-outline.tsx | 2 +- ...> icon-toggle-button-secondary.scoped.css} | 0 .../icon-toggle-button-secondary.tsx | 2 +- .../{kpi.css => kpi.scoped.css} | 0 .../src/preview-examples/kpi.tsx | 2 +- .../preview-examples/layout-auto-custom.tsx | 2 +- ...layout-auto.css => layout-auto.scoped.css} | 0 .../src/preview-examples/layout-auto.tsx | 2 +- ...-category.css => menu-category.scoped.css} | 0 .../src/preview-examples/menu-category.tsx | 2 +- ...s.css => menu-with-bottom-tabs.scoped.css} | 0 .../menu-with-bottom-tabs.tsx | 2 +- ...message-bar.css => message-bar.scoped.css} | 0 .../src/preview-examples/message-bar.tsx | 2 +- ...modal-sizes.css => modal-sizes.scoped.css} | 0 .../src/preview-examples/modal-sizes.tsx | 2 +- ...-variants.css => pill-variants.scoped.css} | 0 .../src/preview-examples/pill-variants.tsx | 2 +- .../{pill.css => pill.scoped.css} | 0 .../src/preview-examples/pill.tsx | 2 +- ...pover-news.css => popover-news.scoped.css} | 0 .../src/preview-examples/popover-news.tsx | 2 +- ...dio-button.css => radio-button.scoped.css} | 0 .../src/preview-examples/radio-button.tsx | 2 +- .../{settings.css => settings.scoped.css} | 0 .../src/preview-examples/settings.tsx | 2 +- .../{tabs.css => tabs.scoped.css} | 0 .../src/preview-examples/tabs.tsx | 2 +- ...switcher.css => theme-switcher.scoped.css} | 0 .../src/preview-examples/theme-switcher.tsx | 2 +- .../{tile.css => tile.scoped.css} | 0 .../src/preview-examples/tile.tsx | 2 +- ...=> toggle-button-primary-ghost.scoped.css} | 0 .../toggle-button-primary-ghost.tsx | 2 +- ... toggle-button-primary-outline.scoped.css} | 0 .../toggle-button-primary-outline.tsx | 2 +- ...y.css => toggle-button-primary.scoped.css} | 0 .../toggle-button-primary.tsx | 2 +- ... toggle-button-secondary-ghost.scoped.css} | 0 .../toggle-button-secondary-ghost.tsx | 2 +- ...oggle-button-secondary-outline.scoped.css} | 0 .../toggle-button-secondary-outline.tsx | 2 +- ...css => toggle-button-secondary.scoped.css} | 0 .../toggle-button-secondary.tsx | 2 +- .../{tooltip.css => tooltip.scoped.css} | 0 .../src/preview-examples/tooltip.tsx | 2 +- ...s => vertical-tabs-with-avatar.scoped.css} | 0 .../vertical-tabs-with-avatar.tsx | 2 +- ...ical-tabs.css => vertical-tabs.scoped.css} | 0 .../src/preview-examples/vertical-tabs.tsx | 2 +- .../{workflow.css => workflow.scoped.css} | 0 .../src/preview-examples/workflow.tsx | 2 +- packages/react-test-app/vite.config.ts | 11 +- pnpm-lock.yaml | 657 +++++++++--------- 154 files changed, 408 insertions(+), 413 deletions(-) rename packages/react-test-app/src/preview-examples/{about-and-legal.css => about-and-legal.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{application-app-switch.css => application-app-switch.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{application-breakpoints.css => application-breakpoints.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{application.css => application.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{basic-navigation.css => basic-navigation.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{blind-header-actions.css => blind-header-actions.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{blind-variants.css => blind-variants.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{blind.css => blind.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{button-danger-ghost.css => button-danger-ghost.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{button-danger-outline.css => button-danger-outline.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{button-danger.css => button-danger.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{button-ghost.css => button-ghost.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{button-grey-ghost.css => button-grey-ghost.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{button-grey-secondary.css => button-grey-secondary.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{button-grey.css => button-grey.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{button-loading.css => button-loading.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{button-secondary.css => button-secondary.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{button-text-icon.css => button-text-icon.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{button-with-icon.css => button-with-icon.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{buttons.css => buttons.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{card.css => card.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{chip.css => chip.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{dropdown-button-icon.css => dropdown-button-icon.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{dropdown-button.css => dropdown-button.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{echarts-bar-horizontal-stacked.css => echarts-bar-horizontal-stacked.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{echarts-bar-simple.css => echarts-bar-simple.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{echarts-circle.css => echarts-circle.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{echarts-empty-state.css => echarts-empty-state.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{echarts-gauge.css => echarts-gauge.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{echarts-line-advanced.css => echarts-line-advanced.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{echarts-line-multiple-y-axis.css => echarts-line-multiple-y-axis.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{echarts-line-simple.css => echarts-line-simple.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{echarts-pie.css => echarts-pie.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{echarts-progress-arc.css => echarts-progress-arc.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{echarts-progress-circle.css => echarts-progress-circle.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{echarts-special-3d.css => echarts-special-3d.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{echarts-special-toolbox.css => echarts-special-toolbox.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{echarts-special-zoom.css => echarts-special-zoom.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{echarts.css => echarts.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{flip-tile.css => flip-tile.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{form-checkbox-group-indeterminate.css => form-checkbox-group-indeterminate.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{form-layout-grid.css => form-layout-grid.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{form-validation.css => form-validation.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{grid-padding.css => grid-padding.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{grid-size.css => grid-size.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{grid.css => grid.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{icon-toggle-button-primary-ghost.css => icon-toggle-button-primary-ghost.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{icon-toggle-button-primary-outline.css => icon-toggle-button-primary-outline.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{icon-toggle-button-secondary-ghost.css => icon-toggle-button-secondary-ghost.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{icon-toggle-button-secondary-outline.css => icon-toggle-button-secondary-outline.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{icon-toggle-button-secondary.css => icon-toggle-button-secondary.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{kpi.css => kpi.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{layout-auto.css => layout-auto.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{menu-category.css => menu-category.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{menu-with-bottom-tabs.css => menu-with-bottom-tabs.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{message-bar.css => message-bar.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{modal-sizes.css => modal-sizes.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{pill-variants.css => pill-variants.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{pill.css => pill.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{popover-news.css => popover-news.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{radio-button.css => radio-button.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{settings.css => settings.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{tabs.css => tabs.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{theme-switcher.css => theme-switcher.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{tile.css => tile.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{toggle-button-primary-ghost.css => toggle-button-primary-ghost.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{toggle-button-primary-outline.css => toggle-button-primary-outline.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{toggle-button-primary.css => toggle-button-primary.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{toggle-button-secondary-ghost.css => toggle-button-secondary-ghost.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{toggle-button-secondary-outline.css => toggle-button-secondary-outline.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{toggle-button-secondary.css => toggle-button-secondary.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{tooltip.css => tooltip.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{vertical-tabs-with-avatar.css => vertical-tabs-with-avatar.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{vertical-tabs.css => vertical-tabs.scoped.css} (100%) rename packages/react-test-app/src/preview-examples/{workflow.css => workflow.scoped.css} (100%) diff --git a/packages/react-test-app/package.json b/packages/react-test-app/package.json index 472fa5f278d..689a577b95c 100644 --- a/packages/react-test-app/package.json +++ b/packages/react-test-app/package.json @@ -34,6 +34,7 @@ "@types/react": "18.2.33", "@types/react-dom": "18.2.14", "@vitejs/plugin-react": "^4.2.1", + "rollup-plugin-react-scoped-css": "^1.1.0", "typescript": "^5.2.2", "vite": "^5.2.0" } diff --git a/packages/react-test-app/src/preview-examples/about-and-legal.css b/packages/react-test-app/src/preview-examples/about-and-legal.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/about-and-legal.css rename to packages/react-test-app/src/preview-examples/about-and-legal.scoped.css diff --git a/packages/react-test-app/src/preview-examples/about-and-legal.tsx b/packages/react-test-app/src/preview-examples/about-and-legal.tsx index 5c3085da188..1152784961c 100644 --- a/packages/react-test-app/src/preview-examples/about-and-legal.tsx +++ b/packages/react-test-app/src/preview-examples/about-and-legal.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './about-and-legal.css'; +import './about-and-legal.scoped.css'; import { IxApplication, diff --git a/packages/react-test-app/src/preview-examples/application-app-switch.css b/packages/react-test-app/src/preview-examples/application-app-switch.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/application-app-switch.css rename to packages/react-test-app/src/preview-examples/application-app-switch.scoped.css diff --git a/packages/react-test-app/src/preview-examples/application-app-switch.tsx b/packages/react-test-app/src/preview-examples/application-app-switch.tsx index 597915b5001..e27e7d995a2 100644 --- a/packages/react-test-app/src/preview-examples/application-app-switch.tsx +++ b/packages/react-test-app/src/preview-examples/application-app-switch.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './application-app-switch.css'; +import './application-app-switch.scoped.css'; import { AppSwitchConfiguration } from '@siemens/ix'; import { diff --git a/packages/react-test-app/src/preview-examples/application-breakpoints.css b/packages/react-test-app/src/preview-examples/application-breakpoints.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/application-breakpoints.css rename to packages/react-test-app/src/preview-examples/application-breakpoints.scoped.css diff --git a/packages/react-test-app/src/preview-examples/application-breakpoints.tsx b/packages/react-test-app/src/preview-examples/application-breakpoints.tsx index f66ceb6677b..846ebd29bec 100644 --- a/packages/react-test-app/src/preview-examples/application-breakpoints.tsx +++ b/packages/react-test-app/src/preview-examples/application-breakpoints.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './application-breakpoints.css'; +import './application-breakpoints.scoped.css'; import { Breakpoint } from '@siemens/ix'; import { diff --git a/packages/react-test-app/src/preview-examples/application.css b/packages/react-test-app/src/preview-examples/application.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/application.css rename to packages/react-test-app/src/preview-examples/application.scoped.css diff --git a/packages/react-test-app/src/preview-examples/application.tsx b/packages/react-test-app/src/preview-examples/application.tsx index 56c4c6ad793..4d2f145be15 100644 --- a/packages/react-test-app/src/preview-examples/application.tsx +++ b/packages/react-test-app/src/preview-examples/application.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './application.css'; +import './application.scoped.css'; import { IxApplication, diff --git a/packages/react-test-app/src/preview-examples/basic-navigation.css b/packages/react-test-app/src/preview-examples/basic-navigation.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/basic-navigation.css rename to packages/react-test-app/src/preview-examples/basic-navigation.scoped.css diff --git a/packages/react-test-app/src/preview-examples/basic-navigation.tsx b/packages/react-test-app/src/preview-examples/basic-navigation.tsx index 6387a50e856..fae084e4df6 100644 --- a/packages/react-test-app/src/preview-examples/basic-navigation.tsx +++ b/packages/react-test-app/src/preview-examples/basic-navigation.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './basic-navigation.css'; +import './basic-navigation.scoped.css'; import { IxBasicNavigation, IxMenu, IxMenuItem } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/blind-header-actions.css b/packages/react-test-app/src/preview-examples/blind-header-actions.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/blind-header-actions.css rename to packages/react-test-app/src/preview-examples/blind-header-actions.scoped.css diff --git a/packages/react-test-app/src/preview-examples/blind-header-actions.tsx b/packages/react-test-app/src/preview-examples/blind-header-actions.tsx index 9d61cee9d62..e43061ce8ea 100644 --- a/packages/react-test-app/src/preview-examples/blind-header-actions.tsx +++ b/packages/react-test-app/src/preview-examples/blind-header-actions.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './blind-header-actions.css'; +import './blind-header-actions.scoped.css'; import { IxBlind, diff --git a/packages/react-test-app/src/preview-examples/blind-variants.css b/packages/react-test-app/src/preview-examples/blind-variants.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/blind-variants.css rename to packages/react-test-app/src/preview-examples/blind-variants.scoped.css diff --git a/packages/react-test-app/src/preview-examples/blind-variants.tsx b/packages/react-test-app/src/preview-examples/blind-variants.tsx index 5b55b46c777..1918dbfcde9 100644 --- a/packages/react-test-app/src/preview-examples/blind-variants.tsx +++ b/packages/react-test-app/src/preview-examples/blind-variants.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './blind-variants.css'; +import './blind-variants.scoped.css'; import { IxBlind } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/blind.css b/packages/react-test-app/src/preview-examples/blind.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/blind.css rename to packages/react-test-app/src/preview-examples/blind.scoped.css diff --git a/packages/react-test-app/src/preview-examples/blind.tsx b/packages/react-test-app/src/preview-examples/blind.tsx index b0945d4ff56..db875691e2b 100644 --- a/packages/react-test-app/src/preview-examples/blind.tsx +++ b/packages/react-test-app/src/preview-examples/blind.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './blind.css'; +import './blind.scoped.css'; import { IxBlind } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/button-danger-ghost.css b/packages/react-test-app/src/preview-examples/button-danger-ghost.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/button-danger-ghost.css rename to packages/react-test-app/src/preview-examples/button-danger-ghost.scoped.css diff --git a/packages/react-test-app/src/preview-examples/button-danger-ghost.tsx b/packages/react-test-app/src/preview-examples/button-danger-ghost.tsx index db5c00ca3b5..252fd564c8b 100644 --- a/packages/react-test-app/src/preview-examples/button-danger-ghost.tsx +++ b/packages/react-test-app/src/preview-examples/button-danger-ghost.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './button-danger-ghost.css'; +import './button-danger-ghost.scoped.css'; import { IxButton } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/button-danger-outline.css b/packages/react-test-app/src/preview-examples/button-danger-outline.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/button-danger-outline.css rename to packages/react-test-app/src/preview-examples/button-danger-outline.scoped.css diff --git a/packages/react-test-app/src/preview-examples/button-danger-outline.tsx b/packages/react-test-app/src/preview-examples/button-danger-outline.tsx index 21dc3c461eb..1bee593ac1f 100644 --- a/packages/react-test-app/src/preview-examples/button-danger-outline.tsx +++ b/packages/react-test-app/src/preview-examples/button-danger-outline.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './button-danger-outline.css'; +import './button-danger-outline.scoped.css'; import { IxButton } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/button-danger.css b/packages/react-test-app/src/preview-examples/button-danger.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/button-danger.css rename to packages/react-test-app/src/preview-examples/button-danger.scoped.css diff --git a/packages/react-test-app/src/preview-examples/button-danger.tsx b/packages/react-test-app/src/preview-examples/button-danger.tsx index bc1d7be3cc7..b4e6b1cf858 100644 --- a/packages/react-test-app/src/preview-examples/button-danger.tsx +++ b/packages/react-test-app/src/preview-examples/button-danger.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './button-danger.css'; +import './button-danger.scoped.css'; import { IxButton } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/button-ghost.css b/packages/react-test-app/src/preview-examples/button-ghost.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/button-ghost.css rename to packages/react-test-app/src/preview-examples/button-ghost.scoped.css diff --git a/packages/react-test-app/src/preview-examples/button-ghost.tsx b/packages/react-test-app/src/preview-examples/button-ghost.tsx index f149d32c59a..26342bbb3b9 100644 --- a/packages/react-test-app/src/preview-examples/button-ghost.tsx +++ b/packages/react-test-app/src/preview-examples/button-ghost.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './button-ghost.css'; +import './button-ghost.scoped.css'; import { IxButton } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/button-grey-ghost.css b/packages/react-test-app/src/preview-examples/button-grey-ghost.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/button-grey-ghost.css rename to packages/react-test-app/src/preview-examples/button-grey-ghost.scoped.css diff --git a/packages/react-test-app/src/preview-examples/button-grey-ghost.tsx b/packages/react-test-app/src/preview-examples/button-grey-ghost.tsx index 0d6e44bb5c7..15115705c7f 100644 --- a/packages/react-test-app/src/preview-examples/button-grey-ghost.tsx +++ b/packages/react-test-app/src/preview-examples/button-grey-ghost.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './button-grey-ghost.css'; +import './button-grey-ghost.scoped.css'; import { IxButton } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/button-grey-secondary.css b/packages/react-test-app/src/preview-examples/button-grey-secondary.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/button-grey-secondary.css rename to packages/react-test-app/src/preview-examples/button-grey-secondary.scoped.css diff --git a/packages/react-test-app/src/preview-examples/button-grey-secondary.tsx b/packages/react-test-app/src/preview-examples/button-grey-secondary.tsx index 6da627ebb5e..a956b82dacd 100644 --- a/packages/react-test-app/src/preview-examples/button-grey-secondary.tsx +++ b/packages/react-test-app/src/preview-examples/button-grey-secondary.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './button-grey-secondary.css'; +import './button-grey-secondary.scoped.css'; import { IxButton } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/button-grey.css b/packages/react-test-app/src/preview-examples/button-grey.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/button-grey.css rename to packages/react-test-app/src/preview-examples/button-grey.scoped.css diff --git a/packages/react-test-app/src/preview-examples/button-grey.tsx b/packages/react-test-app/src/preview-examples/button-grey.tsx index 0324df1ea70..bc4ce31c68a 100644 --- a/packages/react-test-app/src/preview-examples/button-grey.tsx +++ b/packages/react-test-app/src/preview-examples/button-grey.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './button-grey.css'; +import './button-grey.scoped.css'; import { IxButton } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/button-loading.css b/packages/react-test-app/src/preview-examples/button-loading.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/button-loading.css rename to packages/react-test-app/src/preview-examples/button-loading.scoped.css diff --git a/packages/react-test-app/src/preview-examples/button-loading.tsx b/packages/react-test-app/src/preview-examples/button-loading.tsx index dcbd71d7caf..ba88a8aa657 100644 --- a/packages/react-test-app/src/preview-examples/button-loading.tsx +++ b/packages/react-test-app/src/preview-examples/button-loading.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './button-loading.css'; +import './button-loading.scoped.css'; import { IxButton, IxIconButton } from '@siemens/ix-react'; import { useState } from 'react'; diff --git a/packages/react-test-app/src/preview-examples/button-secondary.css b/packages/react-test-app/src/preview-examples/button-secondary.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/button-secondary.css rename to packages/react-test-app/src/preview-examples/button-secondary.scoped.css diff --git a/packages/react-test-app/src/preview-examples/button-secondary.tsx b/packages/react-test-app/src/preview-examples/button-secondary.tsx index 03ee48fb0a4..d7d9a448e74 100644 --- a/packages/react-test-app/src/preview-examples/button-secondary.tsx +++ b/packages/react-test-app/src/preview-examples/button-secondary.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './button-secondary.css'; +import './button-secondary.scoped.css'; import { IxButton } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/button-text-icon.css b/packages/react-test-app/src/preview-examples/button-text-icon.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/button-text-icon.css rename to packages/react-test-app/src/preview-examples/button-text-icon.scoped.css diff --git a/packages/react-test-app/src/preview-examples/button-text-icon.tsx b/packages/react-test-app/src/preview-examples/button-text-icon.tsx index 02383f71be2..1deb848dd12 100644 --- a/packages/react-test-app/src/preview-examples/button-text-icon.tsx +++ b/packages/react-test-app/src/preview-examples/button-text-icon.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './button-text-icon.css'; +import './button-text-icon.scoped.css'; import { IxButton } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/button-with-icon.css b/packages/react-test-app/src/preview-examples/button-with-icon.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/button-with-icon.css rename to packages/react-test-app/src/preview-examples/button-with-icon.scoped.css diff --git a/packages/react-test-app/src/preview-examples/button-with-icon.tsx b/packages/react-test-app/src/preview-examples/button-with-icon.tsx index 1a11381fc65..74a8166a5b7 100644 --- a/packages/react-test-app/src/preview-examples/button-with-icon.tsx +++ b/packages/react-test-app/src/preview-examples/button-with-icon.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './button-with-icon.css'; +import './button-with-icon.scoped.css'; import { IxIconButton } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/buttons.css b/packages/react-test-app/src/preview-examples/buttons.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/buttons.css rename to packages/react-test-app/src/preview-examples/buttons.scoped.css diff --git a/packages/react-test-app/src/preview-examples/buttons.tsx b/packages/react-test-app/src/preview-examples/buttons.tsx index 997d4b5220c..f96c013e2ef 100644 --- a/packages/react-test-app/src/preview-examples/buttons.tsx +++ b/packages/react-test-app/src/preview-examples/buttons.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './buttons.css'; +import './buttons.scoped.css'; import { IxButton } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/card.css b/packages/react-test-app/src/preview-examples/card.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/card.css rename to packages/react-test-app/src/preview-examples/card.scoped.css diff --git a/packages/react-test-app/src/preview-examples/card.tsx b/packages/react-test-app/src/preview-examples/card.tsx index 46f12127f2f..a45f6ed0879 100644 --- a/packages/react-test-app/src/preview-examples/card.tsx +++ b/packages/react-test-app/src/preview-examples/card.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './card.css'; +import './card.scoped.css'; import { IxCard, IxCardContent, IxIcon, IxTypography } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/chip.css b/packages/react-test-app/src/preview-examples/chip.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/chip.css rename to packages/react-test-app/src/preview-examples/chip.scoped.css diff --git a/packages/react-test-app/src/preview-examples/chip.tsx b/packages/react-test-app/src/preview-examples/chip.tsx index f44d1704e8c..97c22d47c13 100644 --- a/packages/react-test-app/src/preview-examples/chip.tsx +++ b/packages/react-test-app/src/preview-examples/chip.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './chip.css'; +import './chip.scoped.css'; import { IxChip } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/dropdown-button-icon.css b/packages/react-test-app/src/preview-examples/dropdown-button-icon.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/dropdown-button-icon.css rename to packages/react-test-app/src/preview-examples/dropdown-button-icon.scoped.css diff --git a/packages/react-test-app/src/preview-examples/dropdown-button-icon.tsx b/packages/react-test-app/src/preview-examples/dropdown-button-icon.tsx index 8a031745e76..f48ecb734fd 100644 --- a/packages/react-test-app/src/preview-examples/dropdown-button-icon.tsx +++ b/packages/react-test-app/src/preview-examples/dropdown-button-icon.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './dropdown-button-icon.css'; +import './dropdown-button-icon.scoped.css'; import { IxDropdownButton, IxDropdownItem } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/dropdown-button.css b/packages/react-test-app/src/preview-examples/dropdown-button.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/dropdown-button.css rename to packages/react-test-app/src/preview-examples/dropdown-button.scoped.css diff --git a/packages/react-test-app/src/preview-examples/dropdown-button.tsx b/packages/react-test-app/src/preview-examples/dropdown-button.tsx index 05ae57d02c0..38973b427da 100644 --- a/packages/react-test-app/src/preview-examples/dropdown-button.tsx +++ b/packages/react-test-app/src/preview-examples/dropdown-button.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './dropdown-button.css'; +import './dropdown-button.scoped.css'; import { IxDropdownButton, IxDropdownItem } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/echarts-bar-horizontal-stacked.css b/packages/react-test-app/src/preview-examples/echarts-bar-horizontal-stacked.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/echarts-bar-horizontal-stacked.css rename to packages/react-test-app/src/preview-examples/echarts-bar-horizontal-stacked.scoped.css diff --git a/packages/react-test-app/src/preview-examples/echarts-bar-horizontal-stacked.tsx b/packages/react-test-app/src/preview-examples/echarts-bar-horizontal-stacked.tsx index 8d95b006e07..c32ab0633b4 100644 --- a/packages/react-test-app/src/preview-examples/echarts-bar-horizontal-stacked.tsx +++ b/packages/react-test-app/src/preview-examples/echarts-bar-horizontal-stacked.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './echarts-bar-horizontal-stacked.css'; +import './echarts-bar-horizontal-stacked.scoped.css'; import { useEffect, useState } from 'react'; import { convertThemeName, registerTheme } from '@siemens/ix-echarts'; diff --git a/packages/react-test-app/src/preview-examples/echarts-bar-simple.css b/packages/react-test-app/src/preview-examples/echarts-bar-simple.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/echarts-bar-simple.css rename to packages/react-test-app/src/preview-examples/echarts-bar-simple.scoped.css diff --git a/packages/react-test-app/src/preview-examples/echarts-bar-simple.tsx b/packages/react-test-app/src/preview-examples/echarts-bar-simple.tsx index dad1693e0cf..741c36349cb 100644 --- a/packages/react-test-app/src/preview-examples/echarts-bar-simple.tsx +++ b/packages/react-test-app/src/preview-examples/echarts-bar-simple.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './echarts-bar-simple.css'; +import './echarts-bar-simple.scoped.css'; import { useEffect, useState } from 'react'; import { convertThemeName, registerTheme } from '@siemens/ix-echarts'; diff --git a/packages/react-test-app/src/preview-examples/echarts-circle.css b/packages/react-test-app/src/preview-examples/echarts-circle.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/echarts-circle.css rename to packages/react-test-app/src/preview-examples/echarts-circle.scoped.css diff --git a/packages/react-test-app/src/preview-examples/echarts-circle.tsx b/packages/react-test-app/src/preview-examples/echarts-circle.tsx index 3cd5d9deac9..e2f949f61cf 100644 --- a/packages/react-test-app/src/preview-examples/echarts-circle.tsx +++ b/packages/react-test-app/src/preview-examples/echarts-circle.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './echarts-circle.css'; +import './echarts-circle.scoped.css'; import { useEffect, useState } from 'react'; import {convertThemeName, getComputedCSSProperty, registerTheme} from '@siemens/ix-echarts'; diff --git a/packages/react-test-app/src/preview-examples/echarts-empty-state.css b/packages/react-test-app/src/preview-examples/echarts-empty-state.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/echarts-empty-state.css rename to packages/react-test-app/src/preview-examples/echarts-empty-state.scoped.css diff --git a/packages/react-test-app/src/preview-examples/echarts-empty-state.tsx b/packages/react-test-app/src/preview-examples/echarts-empty-state.tsx index 3fb46fd16a5..ac9487c7171 100644 --- a/packages/react-test-app/src/preview-examples/echarts-empty-state.tsx +++ b/packages/react-test-app/src/preview-examples/echarts-empty-state.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './echarts-empty-state.css'; +import './echarts-empty-state.scoped.css'; import { useEffect, useState } from 'react'; import { convertThemeName, registerTheme } from '@siemens/ix-echarts'; diff --git a/packages/react-test-app/src/preview-examples/echarts-gauge.css b/packages/react-test-app/src/preview-examples/echarts-gauge.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/echarts-gauge.css rename to packages/react-test-app/src/preview-examples/echarts-gauge.scoped.css diff --git a/packages/react-test-app/src/preview-examples/echarts-gauge.tsx b/packages/react-test-app/src/preview-examples/echarts-gauge.tsx index bcf97592fda..400e0230819 100644 --- a/packages/react-test-app/src/preview-examples/echarts-gauge.tsx +++ b/packages/react-test-app/src/preview-examples/echarts-gauge.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './echarts-gauge.css'; +import './echarts-gauge.scoped.css'; import { useEffect, useState } from 'react'; import { diff --git a/packages/react-test-app/src/preview-examples/echarts-line-advanced.css b/packages/react-test-app/src/preview-examples/echarts-line-advanced.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/echarts-line-advanced.css rename to packages/react-test-app/src/preview-examples/echarts-line-advanced.scoped.css diff --git a/packages/react-test-app/src/preview-examples/echarts-line-advanced.tsx b/packages/react-test-app/src/preview-examples/echarts-line-advanced.tsx index 5721b40060e..300899e58d5 100644 --- a/packages/react-test-app/src/preview-examples/echarts-line-advanced.tsx +++ b/packages/react-test-app/src/preview-examples/echarts-line-advanced.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './echarts-line-advanced.css'; +import './echarts-line-advanced.scoped.css'; import { useEffect, useState } from 'react'; import {convertThemeName, getComputedCSSProperty, registerTheme} from '@siemens/ix-echarts'; diff --git a/packages/react-test-app/src/preview-examples/echarts-line-multiple-y-axis.css b/packages/react-test-app/src/preview-examples/echarts-line-multiple-y-axis.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/echarts-line-multiple-y-axis.css rename to packages/react-test-app/src/preview-examples/echarts-line-multiple-y-axis.scoped.css diff --git a/packages/react-test-app/src/preview-examples/echarts-line-multiple-y-axis.tsx b/packages/react-test-app/src/preview-examples/echarts-line-multiple-y-axis.tsx index a0dc497c4de..01486f68b11 100644 --- a/packages/react-test-app/src/preview-examples/echarts-line-multiple-y-axis.tsx +++ b/packages/react-test-app/src/preview-examples/echarts-line-multiple-y-axis.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './echarts-line-multiple-y-axis.css'; +import './echarts-line-multiple-y-axis.scoped.css'; import { useEffect, useState } from 'react'; import { diff --git a/packages/react-test-app/src/preview-examples/echarts-line-simple.css b/packages/react-test-app/src/preview-examples/echarts-line-simple.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/echarts-line-simple.css rename to packages/react-test-app/src/preview-examples/echarts-line-simple.scoped.css diff --git a/packages/react-test-app/src/preview-examples/echarts-line-simple.tsx b/packages/react-test-app/src/preview-examples/echarts-line-simple.tsx index 1dc41ab6e6f..46d2bca8a2a 100644 --- a/packages/react-test-app/src/preview-examples/echarts-line-simple.tsx +++ b/packages/react-test-app/src/preview-examples/echarts-line-simple.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './echarts-line-simple.css'; +import './echarts-line-simple.scoped.css'; import { useEffect, useState } from 'react'; import { convertThemeName, registerTheme } from '@siemens/ix-echarts'; diff --git a/packages/react-test-app/src/preview-examples/echarts-pie.css b/packages/react-test-app/src/preview-examples/echarts-pie.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/echarts-pie.css rename to packages/react-test-app/src/preview-examples/echarts-pie.scoped.css diff --git a/packages/react-test-app/src/preview-examples/echarts-pie.tsx b/packages/react-test-app/src/preview-examples/echarts-pie.tsx index 0decc97faa2..1c44a9be72a 100644 --- a/packages/react-test-app/src/preview-examples/echarts-pie.tsx +++ b/packages/react-test-app/src/preview-examples/echarts-pie.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './echarts-pie.css'; +import './echarts-pie.scoped.css'; import { useEffect, useState } from 'react'; import {convertThemeName, getComputedCSSProperty, registerTheme} from '@siemens/ix-echarts'; diff --git a/packages/react-test-app/src/preview-examples/echarts-progress-arc.css b/packages/react-test-app/src/preview-examples/echarts-progress-arc.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/echarts-progress-arc.css rename to packages/react-test-app/src/preview-examples/echarts-progress-arc.scoped.css diff --git a/packages/react-test-app/src/preview-examples/echarts-progress-arc.tsx b/packages/react-test-app/src/preview-examples/echarts-progress-arc.tsx index a0ae9624c48..3a92bdb7d9d 100644 --- a/packages/react-test-app/src/preview-examples/echarts-progress-arc.tsx +++ b/packages/react-test-app/src/preview-examples/echarts-progress-arc.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './echarts-progress-arc.css'; +import './echarts-progress-arc.scoped.css'; import { useEffect, useState } from 'react'; import {convertThemeName, getComputedCSSProperty, registerTheme} from '@siemens/ix-echarts'; diff --git a/packages/react-test-app/src/preview-examples/echarts-progress-circle.css b/packages/react-test-app/src/preview-examples/echarts-progress-circle.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/echarts-progress-circle.css rename to packages/react-test-app/src/preview-examples/echarts-progress-circle.scoped.css diff --git a/packages/react-test-app/src/preview-examples/echarts-progress-circle.tsx b/packages/react-test-app/src/preview-examples/echarts-progress-circle.tsx index 032a8b02740..6bb32ca85ca 100644 --- a/packages/react-test-app/src/preview-examples/echarts-progress-circle.tsx +++ b/packages/react-test-app/src/preview-examples/echarts-progress-circle.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './echarts-progress-circle.css'; +import './echarts-progress-circle.scoped.css'; import { useEffect, useState } from 'react'; import {convertThemeName, getComputedCSSProperty, registerTheme} from '@siemens/ix-echarts'; diff --git a/packages/react-test-app/src/preview-examples/echarts-special-3d.css b/packages/react-test-app/src/preview-examples/echarts-special-3d.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/echarts-special-3d.css rename to packages/react-test-app/src/preview-examples/echarts-special-3d.scoped.css diff --git a/packages/react-test-app/src/preview-examples/echarts-special-3d.tsx b/packages/react-test-app/src/preview-examples/echarts-special-3d.tsx index a82b8968133..2d1e5d9f19e 100644 --- a/packages/react-test-app/src/preview-examples/echarts-special-3d.tsx +++ b/packages/react-test-app/src/preview-examples/echarts-special-3d.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './echarts-special-3d.css'; +import './echarts-special-3d.scoped.css'; import { useEffect, useState } from 'react'; import { diff --git a/packages/react-test-app/src/preview-examples/echarts-special-toolbox.css b/packages/react-test-app/src/preview-examples/echarts-special-toolbox.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/echarts-special-toolbox.css rename to packages/react-test-app/src/preview-examples/echarts-special-toolbox.scoped.css diff --git a/packages/react-test-app/src/preview-examples/echarts-special-toolbox.tsx b/packages/react-test-app/src/preview-examples/echarts-special-toolbox.tsx index fa15847f5cd..daf0736ad9f 100644 --- a/packages/react-test-app/src/preview-examples/echarts-special-toolbox.tsx +++ b/packages/react-test-app/src/preview-examples/echarts-special-toolbox.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './echarts-special-toolbox.css'; +import './echarts-special-toolbox.scoped.css'; import { useEffect, useState } from 'react'; import {convertThemeName, registerTheme} from '@siemens/ix-echarts'; diff --git a/packages/react-test-app/src/preview-examples/echarts-special-zoom.css b/packages/react-test-app/src/preview-examples/echarts-special-zoom.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/echarts-special-zoom.css rename to packages/react-test-app/src/preview-examples/echarts-special-zoom.scoped.css diff --git a/packages/react-test-app/src/preview-examples/echarts-special-zoom.tsx b/packages/react-test-app/src/preview-examples/echarts-special-zoom.tsx index fe6aaf93ca0..a8235614133 100644 --- a/packages/react-test-app/src/preview-examples/echarts-special-zoom.tsx +++ b/packages/react-test-app/src/preview-examples/echarts-special-zoom.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './echarts-special-zoom.css'; +import './echarts-special-zoom.scoped.css'; import { useEffect, useState } from 'react'; import { diff --git a/packages/react-test-app/src/preview-examples/echarts.css b/packages/react-test-app/src/preview-examples/echarts.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/echarts.css rename to packages/react-test-app/src/preview-examples/echarts.scoped.css diff --git a/packages/react-test-app/src/preview-examples/echarts.tsx b/packages/react-test-app/src/preview-examples/echarts.tsx index 553fed1170e..17a17b9c7fe 100644 --- a/packages/react-test-app/src/preview-examples/echarts.tsx +++ b/packages/react-test-app/src/preview-examples/echarts.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './echarts.css'; +import './echarts.scoped.css'; import { useEffect, useState } from 'react'; import { convertThemeName, registerTheme } from '@siemens/ix-echarts'; diff --git a/packages/react-test-app/src/preview-examples/flip-tile.css b/packages/react-test-app/src/preview-examples/flip-tile.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/flip-tile.css rename to packages/react-test-app/src/preview-examples/flip-tile.scoped.css diff --git a/packages/react-test-app/src/preview-examples/flip-tile.tsx b/packages/react-test-app/src/preview-examples/flip-tile.tsx index b17abedd9ba..5d3dbedc8ff 100644 --- a/packages/react-test-app/src/preview-examples/flip-tile.tsx +++ b/packages/react-test-app/src/preview-examples/flip-tile.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './flip-tile.css'; +import './flip-tile.scoped.css'; import { FlipTileState } from '@siemens/ix'; import { IxFlipTile, IxFlipTileContent, IxIcon } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/form-checkbox-group-indeterminate.css b/packages/react-test-app/src/preview-examples/form-checkbox-group-indeterminate.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/form-checkbox-group-indeterminate.css rename to packages/react-test-app/src/preview-examples/form-checkbox-group-indeterminate.scoped.css diff --git a/packages/react-test-app/src/preview-examples/form-checkbox-group-indeterminate.tsx b/packages/react-test-app/src/preview-examples/form-checkbox-group-indeterminate.tsx index 9e840bfe5ee..228bc97d821 100644 --- a/packages/react-test-app/src/preview-examples/form-checkbox-group-indeterminate.tsx +++ b/packages/react-test-app/src/preview-examples/form-checkbox-group-indeterminate.tsx @@ -8,7 +8,7 @@ */ import { IxCheckboxCustomEvent } from '@siemens/ix'; -import './form-checkbox-group-indeterminate.css'; +import './form-checkbox-group-indeterminate.scoped.css'; import { IxCheckbox, IxCheckboxGroup } from '@siemens/ix-react'; import { useEffect, useState } from 'react'; diff --git a/packages/react-test-app/src/preview-examples/form-layout-grid.css b/packages/react-test-app/src/preview-examples/form-layout-grid.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/form-layout-grid.css rename to packages/react-test-app/src/preview-examples/form-layout-grid.scoped.css diff --git a/packages/react-test-app/src/preview-examples/form-layout-grid.tsx b/packages/react-test-app/src/preview-examples/form-layout-grid.tsx index fcd50aa4148..fc9f9fda7a0 100644 --- a/packages/react-test-app/src/preview-examples/form-layout-grid.tsx +++ b/packages/react-test-app/src/preview-examples/form-layout-grid.tsx @@ -17,7 +17,7 @@ import { IxSelect, } from '@siemens/ix-react'; -import './form-layout-grid.css'; +import './form-layout-grid.scoped.css'; export default () => { return ( diff --git a/packages/react-test-app/src/preview-examples/form-validation.css b/packages/react-test-app/src/preview-examples/form-validation.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/form-validation.css rename to packages/react-test-app/src/preview-examples/form-validation.scoped.css diff --git a/packages/react-test-app/src/preview-examples/form-validation.tsx b/packages/react-test-app/src/preview-examples/form-validation.tsx index ce81ce51aa5..17326af58e6 100644 --- a/packages/react-test-app/src/preview-examples/form-validation.tsx +++ b/packages/react-test-app/src/preview-examples/form-validation.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './form-validation.css'; +import './form-validation.scoped.css'; import { yupResolver } from '@hookform/resolvers/yup'; import { iconBezierCurve, iconLocation } from '@siemens/ix-icons/icons'; diff --git a/packages/react-test-app/src/preview-examples/grid-padding.css b/packages/react-test-app/src/preview-examples/grid-padding.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/grid-padding.css rename to packages/react-test-app/src/preview-examples/grid-padding.scoped.css diff --git a/packages/react-test-app/src/preview-examples/grid-padding.tsx b/packages/react-test-app/src/preview-examples/grid-padding.tsx index fe669c5297c..ad68ec8383f 100644 --- a/packages/react-test-app/src/preview-examples/grid-padding.tsx +++ b/packages/react-test-app/src/preview-examples/grid-padding.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './grid-padding.css'; +import './grid-padding.scoped.css'; import { IxCol, IxLayoutGrid, IxRow, IxTypography } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/grid-size.css b/packages/react-test-app/src/preview-examples/grid-size.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/grid-size.css rename to packages/react-test-app/src/preview-examples/grid-size.scoped.css diff --git a/packages/react-test-app/src/preview-examples/grid-size.tsx b/packages/react-test-app/src/preview-examples/grid-size.tsx index 6172a0a9f43..edeb10a8b7b 100644 --- a/packages/react-test-app/src/preview-examples/grid-size.tsx +++ b/packages/react-test-app/src/preview-examples/grid-size.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './grid-size.css'; +import './grid-size.scoped.css'; import { IxCol, IxLayoutGrid, IxRow, IxTypography } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/grid.css b/packages/react-test-app/src/preview-examples/grid.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/grid.css rename to packages/react-test-app/src/preview-examples/grid.scoped.css diff --git a/packages/react-test-app/src/preview-examples/grid.tsx b/packages/react-test-app/src/preview-examples/grid.tsx index 504db370756..1e0507788b2 100644 --- a/packages/react-test-app/src/preview-examples/grid.tsx +++ b/packages/react-test-app/src/preview-examples/grid.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './grid.css'; +import './grid.scoped.css'; import { IxCol, IxLayoutGrid, IxRow, IxTypography } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/icon-toggle-button-primary-ghost.css b/packages/react-test-app/src/preview-examples/icon-toggle-button-primary-ghost.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/icon-toggle-button-primary-ghost.css rename to packages/react-test-app/src/preview-examples/icon-toggle-button-primary-ghost.scoped.css diff --git a/packages/react-test-app/src/preview-examples/icon-toggle-button-primary-ghost.tsx b/packages/react-test-app/src/preview-examples/icon-toggle-button-primary-ghost.tsx index 213ae057ffa..9e15c86ba23 100644 --- a/packages/react-test-app/src/preview-examples/icon-toggle-button-primary-ghost.tsx +++ b/packages/react-test-app/src/preview-examples/icon-toggle-button-primary-ghost.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './icon-toggle-button-primary-ghost.css'; +import './icon-toggle-button-primary-ghost.scoped.css'; import { IxIconToggleButton } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/icon-toggle-button-primary-outline.css b/packages/react-test-app/src/preview-examples/icon-toggle-button-primary-outline.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/icon-toggle-button-primary-outline.css rename to packages/react-test-app/src/preview-examples/icon-toggle-button-primary-outline.scoped.css diff --git a/packages/react-test-app/src/preview-examples/icon-toggle-button-primary-outline.tsx b/packages/react-test-app/src/preview-examples/icon-toggle-button-primary-outline.tsx index 1befe3befe5..7ef15b2d896 100644 --- a/packages/react-test-app/src/preview-examples/icon-toggle-button-primary-outline.tsx +++ b/packages/react-test-app/src/preview-examples/icon-toggle-button-primary-outline.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './icon-toggle-button-primary-outline.css'; +import './icon-toggle-button-primary-outline.scoped.css'; import { IxIconToggleButton } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/icon-toggle-button-secondary-ghost.css b/packages/react-test-app/src/preview-examples/icon-toggle-button-secondary-ghost.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/icon-toggle-button-secondary-ghost.css rename to packages/react-test-app/src/preview-examples/icon-toggle-button-secondary-ghost.scoped.css diff --git a/packages/react-test-app/src/preview-examples/icon-toggle-button-secondary-ghost.tsx b/packages/react-test-app/src/preview-examples/icon-toggle-button-secondary-ghost.tsx index 5271cbbe229..833cdfd13e6 100644 --- a/packages/react-test-app/src/preview-examples/icon-toggle-button-secondary-ghost.tsx +++ b/packages/react-test-app/src/preview-examples/icon-toggle-button-secondary-ghost.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './icon-toggle-button-secondary-ghost.css'; +import './icon-toggle-button-secondary-ghost.scoped.css'; import { IxIconToggleButton } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/icon-toggle-button-secondary-outline.css b/packages/react-test-app/src/preview-examples/icon-toggle-button-secondary-outline.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/icon-toggle-button-secondary-outline.css rename to packages/react-test-app/src/preview-examples/icon-toggle-button-secondary-outline.scoped.css diff --git a/packages/react-test-app/src/preview-examples/icon-toggle-button-secondary-outline.tsx b/packages/react-test-app/src/preview-examples/icon-toggle-button-secondary-outline.tsx index 0e2c278dc2e..271ceab1b97 100644 --- a/packages/react-test-app/src/preview-examples/icon-toggle-button-secondary-outline.tsx +++ b/packages/react-test-app/src/preview-examples/icon-toggle-button-secondary-outline.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './icon-toggle-button-secondary-outline.css'; +import './icon-toggle-button-secondary-outline.scoped.css'; import { IxIconToggleButton } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/icon-toggle-button-secondary.css b/packages/react-test-app/src/preview-examples/icon-toggle-button-secondary.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/icon-toggle-button-secondary.css rename to packages/react-test-app/src/preview-examples/icon-toggle-button-secondary.scoped.css diff --git a/packages/react-test-app/src/preview-examples/icon-toggle-button-secondary.tsx b/packages/react-test-app/src/preview-examples/icon-toggle-button-secondary.tsx index 9a7b18b3c14..64b9c0a92da 100644 --- a/packages/react-test-app/src/preview-examples/icon-toggle-button-secondary.tsx +++ b/packages/react-test-app/src/preview-examples/icon-toggle-button-secondary.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './icon-toggle-button-secondary.css'; +import './icon-toggle-button-secondary.scoped.css'; import { IxIconToggleButton } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/kpi.css b/packages/react-test-app/src/preview-examples/kpi.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/kpi.css rename to packages/react-test-app/src/preview-examples/kpi.scoped.css diff --git a/packages/react-test-app/src/preview-examples/kpi.tsx b/packages/react-test-app/src/preview-examples/kpi.tsx index 3302c455634..d6894cb480c 100644 --- a/packages/react-test-app/src/preview-examples/kpi.tsx +++ b/packages/react-test-app/src/preview-examples/kpi.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './kpi.css'; +import './kpi.scoped.css'; import { IxKpi } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/layout-auto-custom.tsx b/packages/react-test-app/src/preview-examples/layout-auto-custom.tsx index 77b1c804ae0..64491b998d2 100644 --- a/packages/react-test-app/src/preview-examples/layout-auto-custom.tsx +++ b/packages/react-test-app/src/preview-examples/layout-auto-custom.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './layout-auto.css'; +import './layout-auto.scoped.css'; import { IxLayoutAuto, IxTypography } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/layout-auto.css b/packages/react-test-app/src/preview-examples/layout-auto.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/layout-auto.css rename to packages/react-test-app/src/preview-examples/layout-auto.scoped.css diff --git a/packages/react-test-app/src/preview-examples/layout-auto.tsx b/packages/react-test-app/src/preview-examples/layout-auto.tsx index 05e44d80028..6ae714998c4 100644 --- a/packages/react-test-app/src/preview-examples/layout-auto.tsx +++ b/packages/react-test-app/src/preview-examples/layout-auto.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './layout-auto.css'; +import './layout-auto.scoped.css'; import { IxLayoutAuto, IxTypography } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/menu-category.css b/packages/react-test-app/src/preview-examples/menu-category.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/menu-category.css rename to packages/react-test-app/src/preview-examples/menu-category.scoped.css diff --git a/packages/react-test-app/src/preview-examples/menu-category.tsx b/packages/react-test-app/src/preview-examples/menu-category.tsx index 3340977480a..aededccc0a6 100644 --- a/packages/react-test-app/src/preview-examples/menu-category.tsx +++ b/packages/react-test-app/src/preview-examples/menu-category.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './menu-category.css'; +import './menu-category.scoped.css'; import { IxApplication, diff --git a/packages/react-test-app/src/preview-examples/menu-with-bottom-tabs.css b/packages/react-test-app/src/preview-examples/menu-with-bottom-tabs.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/menu-with-bottom-tabs.css rename to packages/react-test-app/src/preview-examples/menu-with-bottom-tabs.scoped.css diff --git a/packages/react-test-app/src/preview-examples/menu-with-bottom-tabs.tsx b/packages/react-test-app/src/preview-examples/menu-with-bottom-tabs.tsx index 3c1e20ce99a..3e48ef31567 100644 --- a/packages/react-test-app/src/preview-examples/menu-with-bottom-tabs.tsx +++ b/packages/react-test-app/src/preview-examples/menu-with-bottom-tabs.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './menu-with-bottom-tabs.css'; +import './menu-with-bottom-tabs.scoped.css'; import { IxMenu, IxMenuItem } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/message-bar.css b/packages/react-test-app/src/preview-examples/message-bar.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/message-bar.css rename to packages/react-test-app/src/preview-examples/message-bar.scoped.css diff --git a/packages/react-test-app/src/preview-examples/message-bar.tsx b/packages/react-test-app/src/preview-examples/message-bar.tsx index df1ddcc65fa..3596043aedb 100644 --- a/packages/react-test-app/src/preview-examples/message-bar.tsx +++ b/packages/react-test-app/src/preview-examples/message-bar.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './message-bar.css'; +import './message-bar.scoped.css'; import { IxButton, IxMessageBar } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/modal-sizes.css b/packages/react-test-app/src/preview-examples/modal-sizes.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/modal-sizes.css rename to packages/react-test-app/src/preview-examples/modal-sizes.scoped.css diff --git a/packages/react-test-app/src/preview-examples/modal-sizes.tsx b/packages/react-test-app/src/preview-examples/modal-sizes.tsx index 65a7aff506b..17dd07a6781 100644 --- a/packages/react-test-app/src/preview-examples/modal-sizes.tsx +++ b/packages/react-test-app/src/preview-examples/modal-sizes.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './modal-sizes.css'; +import './modal-sizes.scoped.css'; import { IxModalSize } from '@siemens/ix'; import { IxButton, Modal, ModalRef, showModal } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/pill-variants.css b/packages/react-test-app/src/preview-examples/pill-variants.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/pill-variants.css rename to packages/react-test-app/src/preview-examples/pill-variants.scoped.css diff --git a/packages/react-test-app/src/preview-examples/pill-variants.tsx b/packages/react-test-app/src/preview-examples/pill-variants.tsx index d5ebfe61a11..ede7bd9964c 100644 --- a/packages/react-test-app/src/preview-examples/pill-variants.tsx +++ b/packages/react-test-app/src/preview-examples/pill-variants.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './pill-variants.css'; +import './pill-variants.scoped.css'; import { IxCol, IxLayoutGrid, IxPill, IxRow } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/pill.css b/packages/react-test-app/src/preview-examples/pill.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/pill.css rename to packages/react-test-app/src/preview-examples/pill.scoped.css diff --git a/packages/react-test-app/src/preview-examples/pill.tsx b/packages/react-test-app/src/preview-examples/pill.tsx index 12ce425b689..8f2e271271b 100644 --- a/packages/react-test-app/src/preview-examples/pill.tsx +++ b/packages/react-test-app/src/preview-examples/pill.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './pill.css'; +import './pill.scoped.css'; import { IxPill } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/popover-news.css b/packages/react-test-app/src/preview-examples/popover-news.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/popover-news.css rename to packages/react-test-app/src/preview-examples/popover-news.scoped.css diff --git a/packages/react-test-app/src/preview-examples/popover-news.tsx b/packages/react-test-app/src/preview-examples/popover-news.tsx index 61c785c0324..2704e4fde4d 100644 --- a/packages/react-test-app/src/preview-examples/popover-news.tsx +++ b/packages/react-test-app/src/preview-examples/popover-news.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './popover-news.css'; +import './popover-news.scoped.css'; import { IxApplication, diff --git a/packages/react-test-app/src/preview-examples/radio-button.css b/packages/react-test-app/src/preview-examples/radio-button.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/radio-button.css rename to packages/react-test-app/src/preview-examples/radio-button.scoped.css diff --git a/packages/react-test-app/src/preview-examples/radio-button.tsx b/packages/react-test-app/src/preview-examples/radio-button.tsx index 3c4b4823f98..42ed0a256ed 100644 --- a/packages/react-test-app/src/preview-examples/radio-button.tsx +++ b/packages/react-test-app/src/preview-examples/radio-button.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './radio-button.css'; +import './radio-button.scoped.css'; export default () => { diff --git a/packages/react-test-app/src/preview-examples/settings.css b/packages/react-test-app/src/preview-examples/settings.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/settings.css rename to packages/react-test-app/src/preview-examples/settings.scoped.css diff --git a/packages/react-test-app/src/preview-examples/settings.tsx b/packages/react-test-app/src/preview-examples/settings.tsx index 943aa9480d8..d353200953d 100644 --- a/packages/react-test-app/src/preview-examples/settings.tsx +++ b/packages/react-test-app/src/preview-examples/settings.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './settings.css'; +import './settings.scoped.css'; import { IxApplication, diff --git a/packages/react-test-app/src/preview-examples/tabs.css b/packages/react-test-app/src/preview-examples/tabs.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/tabs.css rename to packages/react-test-app/src/preview-examples/tabs.scoped.css diff --git a/packages/react-test-app/src/preview-examples/tabs.tsx b/packages/react-test-app/src/preview-examples/tabs.tsx index 93587273565..5976c45f5cf 100644 --- a/packages/react-test-app/src/preview-examples/tabs.tsx +++ b/packages/react-test-app/src/preview-examples/tabs.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './tabs.css'; +import './tabs.scoped.css'; import { IxTabItem, IxTabs } from '@siemens/ix-react'; import { useState } from 'react'; diff --git a/packages/react-test-app/src/preview-examples/theme-switcher.css b/packages/react-test-app/src/preview-examples/theme-switcher.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/theme-switcher.css rename to packages/react-test-app/src/preview-examples/theme-switcher.scoped.css diff --git a/packages/react-test-app/src/preview-examples/theme-switcher.tsx b/packages/react-test-app/src/preview-examples/theme-switcher.tsx index 2853b1a0082..7c5f4ba7b1c 100644 --- a/packages/react-test-app/src/preview-examples/theme-switcher.tsx +++ b/packages/react-test-app/src/preview-examples/theme-switcher.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './theme-switcher.css'; +import './theme-switcher.scoped.css'; import { IxSelectCustomEvent, themeSwitcher } from '@siemens/ix'; import { diff --git a/packages/react-test-app/src/preview-examples/tile.css b/packages/react-test-app/src/preview-examples/tile.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/tile.css rename to packages/react-test-app/src/preview-examples/tile.scoped.css diff --git a/packages/react-test-app/src/preview-examples/tile.tsx b/packages/react-test-app/src/preview-examples/tile.tsx index 971c0aa1907..1ad63411f5f 100644 --- a/packages/react-test-app/src/preview-examples/tile.tsx +++ b/packages/react-test-app/src/preview-examples/tile.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './tile.css'; +import './tile.scoped.css'; import { IxButton, IxIcon, IxIconButton, IxTile } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/toggle-button-primary-ghost.css b/packages/react-test-app/src/preview-examples/toggle-button-primary-ghost.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/toggle-button-primary-ghost.css rename to packages/react-test-app/src/preview-examples/toggle-button-primary-ghost.scoped.css diff --git a/packages/react-test-app/src/preview-examples/toggle-button-primary-ghost.tsx b/packages/react-test-app/src/preview-examples/toggle-button-primary-ghost.tsx index fc7c0db721c..785cf130869 100644 --- a/packages/react-test-app/src/preview-examples/toggle-button-primary-ghost.tsx +++ b/packages/react-test-app/src/preview-examples/toggle-button-primary-ghost.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './toggle-button-primary-ghost.css'; +import './toggle-button-primary-ghost.scoped.css'; import { IxToggleButton } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/toggle-button-primary-outline.css b/packages/react-test-app/src/preview-examples/toggle-button-primary-outline.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/toggle-button-primary-outline.css rename to packages/react-test-app/src/preview-examples/toggle-button-primary-outline.scoped.css diff --git a/packages/react-test-app/src/preview-examples/toggle-button-primary-outline.tsx b/packages/react-test-app/src/preview-examples/toggle-button-primary-outline.tsx index 939bf79563e..29e602f8ea8 100644 --- a/packages/react-test-app/src/preview-examples/toggle-button-primary-outline.tsx +++ b/packages/react-test-app/src/preview-examples/toggle-button-primary-outline.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './toggle-button-primary-outline.css'; +import './toggle-button-primary-outline.scoped.css'; import { IxToggleButton } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/toggle-button-primary.css b/packages/react-test-app/src/preview-examples/toggle-button-primary.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/toggle-button-primary.css rename to packages/react-test-app/src/preview-examples/toggle-button-primary.scoped.css diff --git a/packages/react-test-app/src/preview-examples/toggle-button-primary.tsx b/packages/react-test-app/src/preview-examples/toggle-button-primary.tsx index 6917fbed069..71eb450c1af 100644 --- a/packages/react-test-app/src/preview-examples/toggle-button-primary.tsx +++ b/packages/react-test-app/src/preview-examples/toggle-button-primary.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './toggle-button-primary.css'; +import './toggle-button-primary.scoped.css'; import { IxToggleButton } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/toggle-button-secondary-ghost.css b/packages/react-test-app/src/preview-examples/toggle-button-secondary-ghost.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/toggle-button-secondary-ghost.css rename to packages/react-test-app/src/preview-examples/toggle-button-secondary-ghost.scoped.css diff --git a/packages/react-test-app/src/preview-examples/toggle-button-secondary-ghost.tsx b/packages/react-test-app/src/preview-examples/toggle-button-secondary-ghost.tsx index c9db9e78b1f..f1327c81334 100644 --- a/packages/react-test-app/src/preview-examples/toggle-button-secondary-ghost.tsx +++ b/packages/react-test-app/src/preview-examples/toggle-button-secondary-ghost.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './toggle-button-secondary-ghost.css'; +import './toggle-button-secondary-ghost.scoped.css'; import { IxToggleButton } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/toggle-button-secondary-outline.css b/packages/react-test-app/src/preview-examples/toggle-button-secondary-outline.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/toggle-button-secondary-outline.css rename to packages/react-test-app/src/preview-examples/toggle-button-secondary-outline.scoped.css diff --git a/packages/react-test-app/src/preview-examples/toggle-button-secondary-outline.tsx b/packages/react-test-app/src/preview-examples/toggle-button-secondary-outline.tsx index ff7d7dd917a..92de19f54d5 100644 --- a/packages/react-test-app/src/preview-examples/toggle-button-secondary-outline.tsx +++ b/packages/react-test-app/src/preview-examples/toggle-button-secondary-outline.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './toggle-button-secondary-outline.css'; +import './toggle-button-secondary-outline.scoped.css'; import { IxToggleButton } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/toggle-button-secondary.css b/packages/react-test-app/src/preview-examples/toggle-button-secondary.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/toggle-button-secondary.css rename to packages/react-test-app/src/preview-examples/toggle-button-secondary.scoped.css diff --git a/packages/react-test-app/src/preview-examples/toggle-button-secondary.tsx b/packages/react-test-app/src/preview-examples/toggle-button-secondary.tsx index ec1f4e8653e..66e3ac50fa3 100644 --- a/packages/react-test-app/src/preview-examples/toggle-button-secondary.tsx +++ b/packages/react-test-app/src/preview-examples/toggle-button-secondary.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './toggle-button-secondary.css'; +import './toggle-button-secondary.scoped.css'; import { IxToggleButton } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/tooltip.css b/packages/react-test-app/src/preview-examples/tooltip.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/tooltip.css rename to packages/react-test-app/src/preview-examples/tooltip.scoped.css diff --git a/packages/react-test-app/src/preview-examples/tooltip.tsx b/packages/react-test-app/src/preview-examples/tooltip.tsx index d0d61bef408..aac1ddac1a7 100644 --- a/packages/react-test-app/src/preview-examples/tooltip.tsx +++ b/packages/react-test-app/src/preview-examples/tooltip.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './tooltip.css'; +import './tooltip.scoped.css'; import { IxButton, IxTooltip } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/vertical-tabs-with-avatar.css b/packages/react-test-app/src/preview-examples/vertical-tabs-with-avatar.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/vertical-tabs-with-avatar.css rename to packages/react-test-app/src/preview-examples/vertical-tabs-with-avatar.scoped.css diff --git a/packages/react-test-app/src/preview-examples/vertical-tabs-with-avatar.tsx b/packages/react-test-app/src/preview-examples/vertical-tabs-with-avatar.tsx index 60282815ce1..ee66e160bf5 100644 --- a/packages/react-test-app/src/preview-examples/vertical-tabs-with-avatar.tsx +++ b/packages/react-test-app/src/preview-examples/vertical-tabs-with-avatar.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './vertical-tabs-with-avatar.css'; +import './vertical-tabs-with-avatar.scoped.css'; import { IxMenu, diff --git a/packages/react-test-app/src/preview-examples/vertical-tabs.css b/packages/react-test-app/src/preview-examples/vertical-tabs.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/vertical-tabs.css rename to packages/react-test-app/src/preview-examples/vertical-tabs.scoped.css diff --git a/packages/react-test-app/src/preview-examples/vertical-tabs.tsx b/packages/react-test-app/src/preview-examples/vertical-tabs.tsx index 1d2d00c63eb..346a47d291d 100644 --- a/packages/react-test-app/src/preview-examples/vertical-tabs.tsx +++ b/packages/react-test-app/src/preview-examples/vertical-tabs.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './vertical-tabs.css'; +import './vertical-tabs.scoped.css'; import { IxMenu, IxMenuItem } from '@siemens/ix-react'; diff --git a/packages/react-test-app/src/preview-examples/workflow.css b/packages/react-test-app/src/preview-examples/workflow.scoped.css similarity index 100% rename from packages/react-test-app/src/preview-examples/workflow.css rename to packages/react-test-app/src/preview-examples/workflow.scoped.css diff --git a/packages/react-test-app/src/preview-examples/workflow.tsx b/packages/react-test-app/src/preview-examples/workflow.tsx index fb6dcb42342..b2408fc6c71 100644 --- a/packages/react-test-app/src/preview-examples/workflow.tsx +++ b/packages/react-test-app/src/preview-examples/workflow.tsx @@ -7,7 +7,7 @@ * LICENSE file in the root directory of this source tree. */ -import './workflow.css'; +import './workflow.scoped.css'; import { IxWorkflowStep, IxWorkflowSteps } from '@siemens/ix-react'; diff --git a/packages/react-test-app/vite.config.ts b/packages/react-test-app/vite.config.ts index a58563cd77c..5fdfc3b7fa4 100644 --- a/packages/react-test-app/vite.config.ts +++ b/packages/react-test-app/vite.config.ts @@ -11,6 +11,7 @@ import react from '@vitejs/plugin-react'; import { defineConfig } from 'vite'; import path from 'path'; import fs from 'fs'; +import { reactScopedCssPlugin } from 'rollup-plugin-react-scoped-css'; const previewPath = path.join( __dirname, @@ -26,13 +27,19 @@ export default defineConfig(() => { fs.readdirSync(previewPath) .filter((f) => f.endsWith('.css')) .forEach((file) => { + const fileName = file.split('.')[0]; fs.copyFileSync( path.join(previewPath, file), - path.join(__dirname, 'src', 'preview-examples', file) + path.join( + __dirname, + 'src', + 'preview-examples', + fileName !== 'global' ? `${fileName}.scoped.css` : `${fileName}.css` + ) ); }); return { - plugins: [react()], + plugins: [react(), reactScopedCssPlugin() as any], }; }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 30447a14713..45f6dec62a1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -156,10 +156,10 @@ importers: version: 10.1.0 jest: specifier: ^29.3.1 - version: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.6.4)) + version: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5)) jest-preset-angular: specifier: ^12.2.3 - version: 12.2.6(kzhkrveqbt6o6ftxcikbrqnxuy) + version: 12.2.6(oqjflszfxbqjg7k6ghkytlxqb4) ng-packagr: specifier: ^14.2.0 version: 14.3.0(@angular/compiler-cli@13.4.0(@angular/compiler@13.4.0)(typescript@4.6.4))(@types/node@20.16.5)(tslib@2.6.2)(typescript@4.6.4) @@ -168,7 +168,7 @@ importers: version: 7.5.7 ts-jest: specifier: ^29.0.3 - version: 29.1.1(@babel/core@7.23.2)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.6.4)))(typescript@4.6.4) + version: 29.1.1(@babel/core@7.23.2)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5)))(typescript@4.6.4) typescript: specifier: 4.6.4 version: 4.6.4 @@ -245,7 +245,7 @@ importers: devDependencies: '@angular-devkit/build-angular': specifier: ^14.2.0 - version: 14.2.13(@angular/compiler-cli@14.3.0(@angular/compiler@14.3.0(@angular/core@14.3.0(rxjs@7.5.7)(zone.js@0.11.8)))(typescript@4.7.4))(@swc/core@1.9.2)(chokidar@3.5.3)(html-webpack-plugin@5.6.3(webpack@5.76.1(@swc/core@1.9.2)(esbuild@0.15.5)))(karma@6.4.2)(ng-packagr@14.3.0(@angular/compiler-cli@14.3.0(@angular/compiler@14.3.0(@angular/core@14.3.0(rxjs@7.5.7)(zone.js@0.11.8)))(typescript@4.7.4))(@types/node@20.16.5)(tslib@2.6.2)(typescript@4.7.4))(typescript@4.7.4) + version: 14.2.13(@angular/compiler-cli@14.3.0(@angular/compiler@14.3.0(@angular/core@14.3.0(rxjs@7.5.7)(zone.js@0.11.8)))(typescript@4.7.4))(@swc/core@1.9.2)(chokidar@3.5.3)(html-webpack-plugin@5.6.3(webpack@5.76.1(@swc/core@1.9.2)))(karma@6.4.2)(ng-packagr@14.3.0(@angular/compiler-cli@14.3.0(@angular/compiler@14.3.0(@angular/core@14.3.0(rxjs@7.5.7)(zone.js@0.11.8)))(typescript@4.7.4))(@types/node@20.16.5)(tslib@2.6.2)(typescript@4.7.4))(typescript@4.7.4) '@angular/cli': specifier: ~14.2.0 version: 14.2.13(chokidar@3.5.3) @@ -456,7 +456,7 @@ importers: version: 3.4.0(@docusaurus/core@3.3.0(@docusaurus/types@3.3.0(@swc/core@1.9.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@swc/core@1.9.2)(eslint@9.5.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.2.2)(vue-template-compiler@2.7.15))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) docusaurus-plugin-sass: specifier: ^0.2.2 - version: 0.2.5(@docusaurus/core@3.3.0(@docusaurus/types@3.3.0(@swc/core@1.9.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@swc/core@1.9.2)(eslint@9.5.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.2.2)(vue-template-compiler@2.7.15))(sass@1.69.5)(webpack@5.96.1(@swc/core@1.9.2)) + version: 0.2.5(@docusaurus/core@3.3.0(@docusaurus/types@3.3.0(@swc/core@1.9.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@swc/core@1.9.2)(eslint@9.5.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.2.2)(vue-template-compiler@2.7.15))(sass@1.69.5)(webpack@5.89.0(@swc/core@1.9.2)) execa: specifier: ^5.1.1 version: 5.1.1 @@ -471,7 +471,7 @@ importers: version: 2.1.0(react@18.2.0) raw-loader: specifier: ^4.0.2 - version: 4.0.2(webpack@5.96.1(@swc/core@1.9.2)) + version: 4.0.2(webpack@5.89.0(@swc/core@1.9.2)) react: specifier: ^18.0.0 version: 18.2.0 @@ -815,7 +815,7 @@ importers: version: 3.0.0 jest: specifier: ^29.1.2 - version: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.9.5)) + version: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5)) jest-environment-jsdom: specifier: ^29.1.2 version: 29.7.0 @@ -925,6 +925,9 @@ importers: '@vitejs/plugin-react': specifier: ^4.2.1 version: 4.3.1(vite@5.2.13(@types/node@20.16.5)(less@4.2.0)(sass@1.77.8)(stylus@0.59.0)(terser@5.36.0)) + rollup-plugin-react-scoped-css: + specifier: ^1.1.0 + version: 1.1.0 typescript: specifier: ^5.2.2 version: 5.4.5 @@ -979,7 +982,7 @@ importers: version: 8.4.2(storybook@8.4.2(prettier@3.0.3)) '@storybook/test-runner': specifier: ^0.19.1 - version: 0.19.1(@types/node@20.16.5)(storybook@8.4.2(prettier@3.0.3))(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2)) + version: 0.19.1(@types/node@20.16.5)(storybook@8.4.2(prettier@3.0.3))(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5)) '@storybook/web-components': specifier: ^8.4.2 version: 8.4.2(lit@3.2.1)(storybook@8.4.2(prettier@3.0.3)) @@ -4792,6 +4795,15 @@ packages: peerDependencies: rollup: ^1.20.0||^2.0.0 + '@rollup/pluginutils@5.1.2': + resolution: {integrity: sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/rollup-android-arm-eabi@4.12.0': resolution: {integrity: sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==} cpu: [arm] @@ -4802,6 +4814,11 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.24.0': + resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.12.0': resolution: {integrity: sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==} cpu: [arm64] @@ -4812,6 +4829,11 @@ packages: cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.24.0': + resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.12.0': resolution: {integrity: sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==} cpu: [arm64] @@ -4822,6 +4844,11 @@ packages: cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.24.0': + resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.12.0': resolution: {integrity: sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==} cpu: [x64] @@ -4832,6 +4859,11 @@ packages: cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.24.0': + resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-linux-arm-gnueabihf@4.12.0': resolution: {integrity: sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==} cpu: [arm] @@ -4842,11 +4874,21 @@ packages: cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.20.0': resolution: {integrity: sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.24.0': + resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.12.0': resolution: {integrity: sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==} cpu: [arm64] @@ -4857,6 +4899,11 @@ packages: cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.24.0': + resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-arm64-musl@4.12.0': resolution: {integrity: sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==} cpu: [arm64] @@ -4867,11 +4914,21 @@ packages: cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-musl@4.24.0': + resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.20.0': resolution: {integrity: sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==} cpu: [ppc64] os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} + cpu: [ppc64] + os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.12.0': resolution: {integrity: sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==} cpu: [riscv64] @@ -4882,11 +4939,21 @@ packages: cpu: [riscv64] os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.24.0': + resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} + cpu: [riscv64] + os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.20.0': resolution: {integrity: sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==} cpu: [s390x] os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.24.0': + resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} + cpu: [s390x] + os: [linux] + '@rollup/rollup-linux-x64-gnu@4.12.0': resolution: {integrity: sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==} cpu: [x64] @@ -4897,6 +4964,11 @@ packages: cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-gnu@4.24.0': + resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} + cpu: [x64] + os: [linux] + '@rollup/rollup-linux-x64-musl@4.12.0': resolution: {integrity: sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==} cpu: [x64] @@ -4907,6 +4979,11 @@ packages: cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-musl@4.24.0': + resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} + cpu: [x64] + os: [linux] + '@rollup/rollup-win32-arm64-msvc@4.12.0': resolution: {integrity: sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==} cpu: [arm64] @@ -4917,6 +4994,11 @@ packages: cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.24.0': + resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.12.0': resolution: {integrity: sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==} cpu: [ia32] @@ -4927,6 +5009,11 @@ packages: cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.24.0': + resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.12.0': resolution: {integrity: sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==} cpu: [x64] @@ -4937,6 +5024,11 @@ packages: cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.24.0': + resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==} + cpu: [x64] + os: [win32] + '@schematics/angular@14.2.13': resolution: {integrity: sha512-MLxTpTU3E8QACQ/5c0sENMR2gRiMXpGaKeD5IHY+3wyU2fUSJVB0QPU/l1WhoyZbX8N9ospBgf5UEG7taVF9rg==} engines: {node: ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -7734,6 +7826,10 @@ packages: resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-tree@3.0.0: + resolution: {integrity: sha512-o88DVQ6GzsABn1+6+zo2ct801dBO5OASVyxbbvA2W20ue2puSh/VOuqUj90eUeMSX/xqGqBmOKiRQN7tJOuBXw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} @@ -10686,6 +10782,10 @@ packages: js-tokens@8.0.3: resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} + js-xxhash@4.0.0: + resolution: {integrity: sha512-3Q2eIqG6s1KEBBmkj9tGM9lef8LJbuRyTVBdI3GpTnrvtytunjLPO0wqABp5qhtMzfA32jYn1FlnIV7GH1RAHQ==} + engines: {node: '>=18.0.0'} + js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -11332,6 +11432,9 @@ packages: mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + mdn-data@2.10.0: + resolution: {integrity: sha512-qq7C3EtK3yJXMwz1zAab65pjl+UhohqMOctTgcqjLOWABqmwj+me02LSsCuEUxnst9X1lCBpoE0WArGKgdGDzw==} + media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -13746,6 +13849,9 @@ packages: peerDependencies: rollup: '*' + rollup-plugin-react-scoped-css@1.1.0: + resolution: {integrity: sha512-1yZ5x+DWQOSuCkHshlZMIZkgR8IKwTsfhFlmoM+vU+MgtWUD3ulcAwcm6UnK23pHPz1s+/6zlrfCpPoTi/nhrg==} + rollup-plugin-sourcemaps@0.6.3: resolution: {integrity: sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==} engines: {node: '>=10.0.0'} @@ -13782,6 +13888,11 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.24.0: + resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} @@ -16308,7 +16419,7 @@ snapshots: - utf-8-validate - webpack-cli - '@angular-devkit/build-angular@14.2.13(@angular/compiler-cli@14.3.0(@angular/compiler@14.3.0(@angular/core@14.3.0(rxjs@7.5.7)(zone.js@0.11.8)))(typescript@4.7.4))(@swc/core@1.9.2)(chokidar@3.5.3)(html-webpack-plugin@5.6.3(webpack@5.76.1(@swc/core@1.9.2)(esbuild@0.15.5)))(karma@6.4.2)(ng-packagr@14.3.0(@angular/compiler-cli@14.3.0(@angular/compiler@14.3.0(@angular/core@14.3.0(rxjs@7.5.7)(zone.js@0.11.8)))(typescript@4.7.4))(@types/node@20.16.5)(tslib@2.6.2)(typescript@4.7.4))(typescript@4.7.4)': + '@angular-devkit/build-angular@14.2.13(@angular/compiler-cli@14.3.0(@angular/compiler@14.3.0(@angular/core@14.3.0(rxjs@7.5.7)(zone.js@0.11.8)))(typescript@4.7.4))(@swc/core@1.9.2)(chokidar@3.5.3)(html-webpack-plugin@5.6.3(webpack@5.76.1(@swc/core@1.9.2)))(karma@6.4.2)(ng-packagr@14.3.0(@angular/compiler-cli@14.3.0(@angular/compiler@14.3.0(@angular/core@14.3.0(rxjs@7.5.7)(zone.js@0.11.8)))(typescript@4.7.4))(@types/node@20.16.5)(tslib@2.6.2)(typescript@4.7.4))(typescript@4.7.4)': dependencies: '@ampproject/remapping': 2.2.0 '@angular-devkit/architect': 0.1402.13(chokidar@3.5.3) @@ -16371,9 +16482,9 @@ snapshots: typescript: 4.7.4 webpack: 5.76.1(@swc/core@1.9.2) webpack-dev-middleware: 5.3.3(webpack@5.76.1(@swc/core@1.9.2)(esbuild@0.15.5)) - webpack-dev-server: 4.11.0(webpack@5.76.1(@swc/core@1.9.2)(esbuild@0.15.5)) + webpack-dev-server: 4.11.0(webpack@5.76.1(@swc/core@1.9.2)) webpack-merge: 5.8.0 - webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.3(webpack@5.76.1(@swc/core@1.9.2)(esbuild@0.15.5)))(webpack@5.76.1(@swc/core@1.9.2)(esbuild@0.15.5)) + webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.3(webpack@5.76.1(@swc/core@1.9.2)))(webpack@5.76.1(@swc/core@1.9.2)(esbuild@0.15.5)) optionalDependencies: esbuild: 0.15.5 karma: 6.4.2 @@ -19547,7 +19658,7 @@ snapshots: '@types/node': 20.5.1 chalk: 4.1.2 cosmiconfig: 8.3.6(typescript@5.6.2) - cosmiconfig-typescript-loader: 4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6(typescript@5.6.2))(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2))(typescript@5.6.2) + cosmiconfig-typescript-loader: 4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6(typescript@5.4.5))(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2))(typescript@5.6.2) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -19828,7 +19939,7 @@ snapshots: terser-webpack-plugin: 5.3.9(@swc/core@1.9.2)(webpack@5.89.0(@swc/core@1.9.2)) tslib: 2.6.2 update-notifier: 6.0.2 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.96.1(@swc/core@1.9.2)))(webpack@5.89.0(@swc/core@1.9.2)) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.89.0(@swc/core@1.9.2)))(webpack@5.89.0(@swc/core@1.9.2)) webpack: 5.89.0(@swc/core@1.9.2) webpack-bundle-analyzer: 4.9.1 webpack-dev-server: 4.15.1(webpack@5.89.0(@swc/core@1.9.2)) @@ -19889,7 +20000,7 @@ snapshots: tslib: 2.6.2 unified: 11.0.4 unist-util-visit: 5.0.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.96.1(@swc/core@1.9.2)))(webpack@5.89.0(@swc/core@1.9.2)) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.89.0(@swc/core@1.9.2)))(webpack@5.89.0(@swc/core@1.9.2)) vfile: 6.0.1 webpack: 5.89.0(@swc/core@1.9.2) transitivePeerDependencies: @@ -20454,7 +20565,7 @@ snapshots: resolve-pathname: 3.0.0 shelljs: 0.8.5 tslib: 2.6.2 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.96.1(@swc/core@1.9.2)))(webpack@5.96.1(@swc/core@1.9.2)) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.89.0(@swc/core@1.9.2)))(webpack@5.96.1(@swc/core@1.9.2)) webpack: 5.96.1(@swc/core@1.9.2) optionalDependencies: '@docusaurus/types': 3.3.0(@swc/core@1.9.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -21112,77 +21223,7 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.6.4))': - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.16.5 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.6.4)) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.5 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - - '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.9.5))': - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.16.5 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.9.5)) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.5 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - - '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2))': + '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -21196,7 +21237,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2)) + jest-config: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -21807,93 +21848,149 @@ snapshots: picomatch: 2.3.1 rollup: 2.79.1 + '@rollup/pluginutils@5.1.2(rollup@4.24.0)': + dependencies: + '@types/estree': 1.0.6 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.24.0 + '@rollup/rollup-android-arm-eabi@4.12.0': optional: true '@rollup/rollup-android-arm-eabi@4.20.0': optional: true + '@rollup/rollup-android-arm-eabi@4.24.0': + optional: true + '@rollup/rollup-android-arm64@4.12.0': optional: true '@rollup/rollup-android-arm64@4.20.0': optional: true + '@rollup/rollup-android-arm64@4.24.0': + optional: true + '@rollup/rollup-darwin-arm64@4.12.0': optional: true '@rollup/rollup-darwin-arm64@4.20.0': optional: true + '@rollup/rollup-darwin-arm64@4.24.0': + optional: true + '@rollup/rollup-darwin-x64@4.12.0': optional: true '@rollup/rollup-darwin-x64@4.20.0': optional: true + '@rollup/rollup-darwin-x64@4.24.0': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.12.0': optional: true '@rollup/rollup-linux-arm-gnueabihf@4.20.0': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.20.0': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.24.0': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.12.0': optional: true '@rollup/rollup-linux-arm64-gnu@4.20.0': optional: true + '@rollup/rollup-linux-arm64-gnu@4.24.0': + optional: true + '@rollup/rollup-linux-arm64-musl@4.12.0': optional: true '@rollup/rollup-linux-arm64-musl@4.20.0': optional: true + '@rollup/rollup-linux-arm64-musl@4.24.0': + optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.20.0': optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.12.0': optional: true '@rollup/rollup-linux-riscv64-gnu@4.20.0': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.24.0': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.20.0': optional: true + '@rollup/rollup-linux-s390x-gnu@4.24.0': + optional: true + '@rollup/rollup-linux-x64-gnu@4.12.0': optional: true '@rollup/rollup-linux-x64-gnu@4.20.0': optional: true + '@rollup/rollup-linux-x64-gnu@4.24.0': + optional: true + '@rollup/rollup-linux-x64-musl@4.12.0': optional: true '@rollup/rollup-linux-x64-musl@4.20.0': optional: true + '@rollup/rollup-linux-x64-musl@4.24.0': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.12.0': optional: true '@rollup/rollup-win32-arm64-msvc@4.20.0': optional: true + '@rollup/rollup-win32-arm64-msvc@4.24.0': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.12.0': optional: true '@rollup/rollup-win32-ia32-msvc@4.20.0': optional: true + '@rollup/rollup-win32-ia32-msvc@4.24.0': + optional: true + '@rollup/rollup-win32-x64-msvc@4.12.0': optional: true '@rollup/rollup-win32-x64-msvc@4.20.0': optional: true + '@rollup/rollup-win32-x64-msvc@4.24.0': + optional: true + '@schematics/angular@14.2.13(chokidar@3.5.3)': dependencies: '@angular-devkit/core': 14.2.13(chokidar@3.5.3) @@ -22204,7 +22301,7 @@ snapshots: react-dom: 18.2.0(react@18.2.0) storybook: 8.4.2(prettier@3.0.3) - '@storybook/test-runner@0.19.1(@types/node@20.16.5)(storybook@8.4.2(prettier@3.0.3))(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2))': + '@storybook/test-runner@0.19.1(@types/node@20.16.5)(storybook@8.4.2(prettier@3.0.3))(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5))': dependencies: '@babel/core': 7.25.2 '@babel/generator': 7.25.0 @@ -22218,14 +22315,14 @@ snapshots: '@swc/core': 1.9.2 '@swc/jest': 0.2.37(@swc/core@1.9.2) expect-playwright: 0.8.0 - jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2)) + jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5)) jest-circus: 29.7.0 jest-environment-node: 29.7.0 jest-junit: 16.0.0 - jest-playwright-preset: 4.0.0(jest-circus@29.7.0)(jest-environment-node@29.7.0)(jest-runner@29.7.0)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2))) + jest-playwright-preset: 4.0.0(jest-circus@29.7.0)(jest-environment-node@29.7.0)(jest-runner@29.7.0)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5))) jest-runner: 29.7.0 jest-serializer-html: 7.1.0 - jest-watch-typeahead: 2.2.2(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2))) + jest-watch-typeahead: 2.2.2(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5))) nyc: 15.1.0 playwright: 1.39.0 transitivePeerDependencies: @@ -23273,7 +23370,7 @@ snapshots: '@babel/parser': 7.23.0 '@vue/shared': 3.3.7 estree-walker: 2.0.2 - source-map-js: 1.2.0 + source-map-js: 1.2.1 '@vue/compiler-dom@3.3.7': dependencies: @@ -25185,7 +25282,7 @@ snapshots: corser@2.0.1: {} - cosmiconfig-typescript-loader@4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6(typescript@5.6.2))(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2))(typescript@5.6.2): + cosmiconfig-typescript-loader@4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6(typescript@5.4.5))(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2))(typescript@5.6.2): dependencies: '@types/node': 20.5.1 cosmiconfig: 8.3.6(typescript@5.6.2) @@ -25266,43 +25363,13 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.6.4)): - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.6.4)) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - create-jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.9.5)): - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.9.5)) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - create-jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2)): + create-jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2)) + jest-config: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -25431,12 +25498,17 @@ snapshots: css-tree@2.2.1: dependencies: mdn-data: 2.0.28 - source-map-js: 1.2.0 + source-map-js: 1.2.1 css-tree@2.3.1: dependencies: mdn-data: 2.0.30 - source-map-js: 1.2.0 + source-map-js: 1.2.1 + + css-tree@3.0.0: + dependencies: + mdn-data: 2.10.0 + source-map-js: 1.2.1 css-what@6.1.0: {} @@ -26015,11 +26087,11 @@ snapshots: unified: 9.2.2 unist-util-is: 4.1.0 - docusaurus-plugin-sass@0.2.5(@docusaurus/core@3.3.0(@docusaurus/types@3.3.0(@swc/core@1.9.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@swc/core@1.9.2)(eslint@9.5.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.2.2)(vue-template-compiler@2.7.15))(sass@1.69.5)(webpack@5.96.1(@swc/core@1.9.2)): + docusaurus-plugin-sass@0.2.5(@docusaurus/core@3.3.0(@docusaurus/types@3.3.0(@swc/core@1.9.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@swc/core@1.9.2)(eslint@9.5.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.2.2)(vue-template-compiler@2.7.15))(sass@1.69.5)(webpack@5.89.0(@swc/core@1.9.2)): dependencies: '@docusaurus/core': 3.3.0(@docusaurus/types@3.3.0(@swc/core@1.9.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@swc/core@1.9.2)(eslint@9.5.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.2.2)(vue-template-compiler@2.7.15) sass: 1.69.5 - sass-loader: 10.4.1(sass@1.69.5)(webpack@5.96.1(@swc/core@1.9.2)) + sass-loader: 10.4.1(sass@1.69.5)(webpack@5.89.0(@swc/core@1.9.2)) transitivePeerDependencies: - fibers - node-sass @@ -27015,7 +27087,7 @@ snapshots: estree-util-attach-comments@3.0.0: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 estree-util-build-jsx@3.0.1: dependencies: @@ -27034,7 +27106,7 @@ snapshots: estree-util-value-to-estree@3.0.1: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 is-plain-obj: 4.1.0 estree-util-visit@2.0.0: @@ -28123,7 +28195,7 @@ snapshots: hast-util-to-estree@3.1.0: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 '@types/estree-jsx': 1.0.2 '@types/hast': 3.0.2 comma-separated-tokens: 2.0.3 @@ -28292,7 +28364,7 @@ snapshots: tapable: 2.2.1 webpack: 5.89.0(@swc/core@1.9.2) - html-webpack-plugin@5.6.3(webpack@5.76.1(@swc/core@1.9.2)(esbuild@0.15.5)): + html-webpack-plugin@5.6.3(webpack@5.76.1(@swc/core@1.9.2)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -29039,54 +29111,16 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.6.4)): + jest-cli@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.6.4)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.6.4)) + create-jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5)) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.6.4)) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jest-cli@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.9.5)): - dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.9.5)) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.9.5)) - exit: 0.1.2 - import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.9.5)) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jest-cli@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2)): - dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2)) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2)) - exit: 0.1.2 - import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2)) + jest-config: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -29127,69 +29161,7 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.6.4)): - dependencies: - '@babel/core': 7.23.7 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.23.7) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.16.5 - ts-node: 10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.6.4) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-config@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.9.5)): - dependencies: - '@babel/core': 7.23.7 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.23.7) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.16.5 - ts-node: 10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.9.5) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-config@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2)): + jest-config@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5)): dependencies: '@babel/core': 7.23.7 '@jest/test-sequencer': 29.7.0 @@ -29351,10 +29323,10 @@ snapshots: '@types/node': 20.16.5 jest-util: 29.7.0 - jest-playwright-preset@4.0.0(jest-circus@29.7.0)(jest-environment-node@29.7.0)(jest-runner@29.7.0)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2))): + jest-playwright-preset@4.0.0(jest-circus@29.7.0)(jest-environment-node@29.7.0)(jest-runner@29.7.0)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5))): dependencies: expect-playwright: 0.8.0 - jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2)) + jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5)) jest-circus: 29.7.0 jest-environment-node: 29.7.0 jest-process-manager: 0.4.0 @@ -29371,7 +29343,7 @@ snapshots: optionalDependencies: jest-resolve: 29.7.0 - jest-preset-angular@12.2.6(kzhkrveqbt6o6ftxcikbrqnxuy): + jest-preset-angular@12.2.6(oqjflszfxbqjg7k6ghkytlxqb4): dependencies: '@angular-devkit/build-angular': 14.2.13(@angular/compiler-cli@13.4.0(@angular/compiler@13.4.0)(typescript@4.6.4))(@swc/core@1.9.2)(chokidar@3.5.3)(html-webpack-plugin@5.6.3(webpack@5.96.1(@swc/core@1.9.2)))(karma@6.4.2)(ng-packagr@14.3.0(@angular/compiler-cli@13.4.0(@angular/compiler@13.4.0)(typescript@4.6.4))(@types/node@20.16.5)(tslib@2.6.2)(typescript@4.6.4))(typescript@4.6.4) '@angular/compiler-cli': 13.4.0(@angular/compiler@13.4.0)(typescript@4.6.4) @@ -29379,10 +29351,10 @@ snapshots: '@angular/platform-browser-dynamic': 14.3.0(@angular/common@13.4.0(@angular/core@13.4.0(rxjs@7.5.7)(zone.js@0.11.8))(rxjs@7.5.7))(@angular/compiler@13.4.0)(@angular/core@13.4.0(rxjs@7.5.7)(zone.js@0.11.8))(@angular/platform-browser@14.3.0(@angular/animations@14.3.0(@angular/core@13.4.0(rxjs@7.5.7)(zone.js@0.11.8)))(@angular/common@13.4.0(@angular/core@13.4.0(rxjs@7.5.7)(zone.js@0.11.8))(rxjs@7.5.7))(@angular/core@13.4.0(rxjs@7.5.7)(zone.js@0.11.8))) bs-logger: 0.2.6 esbuild-wasm: 0.19.5 - jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.6.4)) + jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5)) jest-environment-jsdom: 28.1.3 pretty-format: 28.1.3 - ts-jest: 28.0.8(@babel/core@7.23.2)(esbuild@0.19.12)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.6.4)))(typescript@4.6.4) + ts-jest: 28.0.8(@babel/core@7.23.2)(esbuild@0.19.12)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5)))(typescript@4.6.4) typescript: 4.6.4 optionalDependencies: esbuild: 0.19.12 @@ -29541,11 +29513,11 @@ snapshots: leven: 3.1.0 pretty-format: 29.7.0 - jest-watch-typeahead@2.2.2(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2))): + jest-watch-typeahead@2.2.2(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5))): dependencies: ansi-escapes: 6.2.1 chalk: 5.3.0 - jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2)) + jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5)) jest-regex-util: 29.6.3 jest-watcher: 29.7.0 slash: 5.1.0 @@ -29594,36 +29566,12 @@ snapshots: - supports-color - ts-node - jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.6.4)): + jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.6.4)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5)) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.6.4)) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.9.5)): - dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.9.5)) - '@jest/types': 29.6.3 - import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.9.5)) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2)): - dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2)) - '@jest/types': 29.6.3 - import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.6.2)) + jest-cli: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -29644,6 +29592,8 @@ snapshots: js-tokens@8.0.3: {} + js-xxhash@4.0.0: {} + js-yaml@3.14.1: dependencies: argparse: 1.0.10 @@ -30592,6 +30542,8 @@ snapshots: mdn-data@2.0.30: {} + mdn-data@2.10.0: {} + media-typer@0.3.0: {} memfs@3.5.3: @@ -30738,7 +30690,7 @@ snapshots: micromark-extension-mdx-expression@3.0.0: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 devlop: 1.1.0 micromark-factory-mdx-expression: 2.0.1 micromark-factory-space: 2.0.0 @@ -30750,7 +30702,7 @@ snapshots: micromark-extension-mdx-jsx@3.0.0: dependencies: '@types/acorn': 4.0.6 - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 micromark-factory-mdx-expression: 2.0.1 @@ -30766,7 +30718,7 @@ snapshots: micromark-extension-mdxjs-esm@3.0.0: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 devlop: 1.1.0 micromark-core-commonmark: 2.0.0 micromark-util-character: 2.0.1 @@ -30802,7 +30754,7 @@ snapshots: micromark-factory-mdx-expression@2.0.1: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 devlop: 1.1.0 micromark-util-character: 2.0.1 micromark-util-events-to-acorn: 2.0.2 @@ -30876,7 +30828,7 @@ snapshots: micromark-util-events-to-acorn@2.0.2: dependencies: '@types/acorn': 4.0.6 - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 '@types/unist': 3.0.1 devlop: 1.1.0 estree-util-visit: 2.0.0 @@ -31923,7 +31875,7 @@ snapshots: periscopic@3.1.0: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 estree-walker: 3.0.3 is-reference: 3.0.2 @@ -32959,7 +32911,7 @@ snapshots: dependencies: nanoid: 3.3.7 picocolors: 1.1.1 - source-map-js: 1.0.2 + source-map-js: 1.2.1 postcss@8.4.38: dependencies: @@ -33210,11 +33162,11 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 - raw-loader@4.0.2(webpack@5.96.1(@swc/core@1.9.2)): + raw-loader@4.0.2(webpack@5.89.0(@swc/core@1.9.2)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.96.1(@swc/core@1.9.2) + webpack: 5.89.0(@swc/core@1.9.2) rc@1.2.8: dependencies: @@ -33830,6 +33782,14 @@ snapshots: dependencies: rollup: 2.79.1 + rollup-plugin-react-scoped-css@1.1.0: + dependencies: + '@rollup/pluginutils': 5.1.2(rollup@4.24.0) + css-tree: 3.0.0 + escodegen: 2.1.0 + js-xxhash: 4.0.0 + rollup: 4.24.0 + rollup-plugin-sourcemaps@0.6.3(@types/node@20.16.5)(rollup@2.79.1): dependencies: '@rollup/pluginutils': 3.1.0(rollup@2.79.1) @@ -33895,6 +33855,28 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.20.0 fsevents: 2.3.3 + rollup@4.24.0: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.24.0 + '@rollup/rollup-android-arm64': 4.24.0 + '@rollup/rollup-darwin-arm64': 4.24.0 + '@rollup/rollup-darwin-x64': 4.24.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.24.0 + '@rollup/rollup-linux-arm-musleabihf': 4.24.0 + '@rollup/rollup-linux-arm64-gnu': 4.24.0 + '@rollup/rollup-linux-arm64-musl': 4.24.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0 + '@rollup/rollup-linux-riscv64-gnu': 4.24.0 + '@rollup/rollup-linux-s390x-gnu': 4.24.0 + '@rollup/rollup-linux-x64-gnu': 4.24.0 + '@rollup/rollup-linux-x64-musl': 4.24.0 + '@rollup/rollup-win32-arm64-msvc': 4.24.0 + '@rollup/rollup-win32-ia32-msvc': 4.24.0 + '@rollup/rollup-win32-x64-msvc': 4.24.0 + fsevents: 2.3.3 + rrweb-cssom@0.6.0: {} rrweb-cssom@0.7.1: {} @@ -33953,14 +33935,14 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@10.4.1(sass@1.69.5)(webpack@5.96.1(@swc/core@1.9.2)): + sass-loader@10.4.1(sass@1.69.5)(webpack@5.89.0(@swc/core@1.9.2)): dependencies: klona: 2.0.6 loader-utils: 2.0.4 neo-async: 2.6.2 schema-utils: 3.3.0 semver: 7.5.4 - webpack: 5.96.1(@swc/core@1.9.2) + webpack: 5.89.0(@swc/core@1.9.2) optionalDependencies: sass: 1.69.5 @@ -35030,11 +35012,11 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@28.0.8(@babel/core@7.23.2)(esbuild@0.19.12)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.6.4)))(typescript@4.6.4): + ts-jest@28.0.8(@babel/core@7.23.2)(esbuild@0.19.12)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5)))(typescript@4.6.4): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.6.4)) + jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5)) jest-util: 28.1.3 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -35046,11 +35028,11 @@ snapshots: '@babel/core': 7.23.2 esbuild: 0.19.12 - ts-jest@29.1.1(@babel/core@7.23.2)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.6.4)))(typescript@4.6.4): + ts-jest@29.1.1(@babel/core@7.23.2)(jest@29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5)))(typescript@4.6.4): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.6.4)) + jest: 29.7.0(@types/node@20.16.5)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -35121,48 +35103,6 @@ snapshots: optionalDependencies: '@swc/core': 1.9.2 - ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.6.4): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.16.5 - acorn: 8.12.0 - acorn-walk: 8.3.2 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.6.4 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.9.2 - optional: true - - ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.16.5)(typescript@4.9.5): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.16.5 - acorn: 8.12.0 - acorn-walk: 8.3.2 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.9.5 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.9.2 - optional: true - ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.5.1)(typescript@5.4.5): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -35594,23 +35534,23 @@ snapshots: url-join@4.0.1: {} - url-loader@4.1.1(file-loader@6.2.0(webpack@5.96.1(@swc/core@1.9.2)))(webpack@5.89.0(@swc/core@1.9.2)): + url-loader@4.1.1(file-loader@6.2.0(webpack@5.89.0(@swc/core@1.9.2)))(webpack@5.89.0(@swc/core@1.9.2)): dependencies: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 webpack: 5.89.0(@swc/core@1.9.2) optionalDependencies: - file-loader: 6.2.0(webpack@5.96.1(@swc/core@1.9.2)) + file-loader: 6.2.0(webpack@5.89.0(@swc/core@1.9.2)) - url-loader@4.1.1(file-loader@6.2.0(webpack@5.96.1(@swc/core@1.9.2)))(webpack@5.96.1(@swc/core@1.9.2)): + url-loader@4.1.1(file-loader@6.2.0(webpack@5.89.0(@swc/core@1.9.2)))(webpack@5.96.1(@swc/core@1.9.2)): dependencies: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 webpack: 5.96.1(@swc/core@1.9.2) optionalDependencies: - file-loader: 6.2.0(webpack@5.96.1(@swc/core@1.9.2)) + file-loader: 6.2.0(webpack@5.89.0(@swc/core@1.9.2)) url-parse@1.5.10: dependencies: @@ -36091,6 +36031,15 @@ snapshots: schema-utils: 4.2.0 webpack: 5.76.1(@swc/core@1.9.2)(esbuild@0.15.5) + webpack-dev-middleware@5.3.3(webpack@5.76.1(@swc/core@1.9.2)): + dependencies: + colorette: 2.0.20 + memfs: 3.5.3 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.2.0 + webpack: 5.76.1(@swc/core@1.9.2) + webpack-dev-middleware@5.3.3(webpack@5.89.0(@swc/core@1.9.2)): dependencies: colorette: 2.0.20 @@ -36138,6 +36087,44 @@ snapshots: - supports-color - utf-8-validate + webpack-dev-server@4.11.0(webpack@5.76.1(@swc/core@1.9.2)): + dependencies: + '@types/bonjour': 3.5.12 + '@types/connect-history-api-fallback': 1.5.2 + '@types/express': 4.17.20 + '@types/serve-index': 1.9.3 + '@types/serve-static': 1.15.4 + '@types/sockjs': 0.3.35 + '@types/ws': 8.5.8 + ansi-html-community: 0.0.8 + bonjour-service: 1.1.1 + chokidar: 3.5.3 + colorette: 2.0.20 + compression: 1.7.4 + connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 + express: 4.18.2 + graceful-fs: 4.2.11 + html-entities: 2.4.0 + http-proxy-middleware: 2.0.6(@types/express@4.17.20) + ipaddr.js: 2.1.0 + open: 8.4.2 + p-retry: 4.6.2 + rimraf: 3.0.2 + schema-utils: 4.2.0 + selfsigned: 2.1.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack: 5.76.1(@swc/core@1.9.2) + webpack-dev-middleware: 5.3.3(webpack@5.76.1(@swc/core@1.9.2)) + ws: 8.14.2 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + webpack-dev-server@4.15.1(webpack@5.89.0(@swc/core@1.9.2)): dependencies: '@types/bonjour': 3.5.12 @@ -36191,12 +36178,12 @@ snapshots: webpack-sources@3.2.3: {} - webpack-subresource-integrity@5.1.0(html-webpack-plugin@5.6.3(webpack@5.76.1(@swc/core@1.9.2)(esbuild@0.15.5)))(webpack@5.76.1(@swc/core@1.9.2)(esbuild@0.15.5)): + webpack-subresource-integrity@5.1.0(html-webpack-plugin@5.6.3(webpack@5.76.1(@swc/core@1.9.2)))(webpack@5.76.1(@swc/core@1.9.2)(esbuild@0.15.5)): dependencies: typed-assert: 1.0.9 webpack: 5.76.1(@swc/core@1.9.2) optionalDependencies: - html-webpack-plugin: 5.6.3(webpack@5.76.1(@swc/core@1.9.2)(esbuild@0.15.5)) + html-webpack-plugin: 5.6.3(webpack@5.76.1(@swc/core@1.9.2)) webpack-subresource-integrity@5.1.0(html-webpack-plugin@5.6.3(webpack@5.96.1(@swc/core@1.9.2)))(webpack@5.76.1(@swc/core@1.9.2)(esbuild@0.15.5)): dependencies: From 1c65a17d6911e5be72e7612e87d0b7fbeeeacc73 Mon Sep 17 00:00:00 2001 From: Lukas Maurer Date: Fri, 6 Dec 2024 08:19:49 +0100 Subject: [PATCH 2/3] feat(core/button): add autofocus property (#1588) Co-authored-by: Daniel Leroux --- .changeset/tender-hounds-change.md | 5 + .../modal-by-instance-content.ts | 6 +- .../core/src/components/button/button.tsx | 7 + .../src/components/modal/test/modal.ct.ts | 143 ++++++++---------- .../core/src/components/utils/modal/modal.ts | 12 +- ...-1-chromium---theme-classic-dark-linux.png | Bin 26717 -> 26404 bytes ...1-chromium---theme-classic-light-linux.png | Bin 25045 -> 24711 bytes .../src/stories/modal.stories.ts | 12 +- 8 files changed, 102 insertions(+), 83 deletions(-) create mode 100644 .changeset/tender-hounds-change.md diff --git a/.changeset/tender-hounds-change.md b/.changeset/tender-hounds-change.md new file mode 100644 index 00000000000..8de229b9b77 --- /dev/null +++ b/.changeset/tender-hounds-change.md @@ -0,0 +1,5 @@ +--- +"@siemens/ix": patch +--- + +Enable the possibility to use autofocus within **ix-modal** diff --git a/packages/angular-test-app/src/preview-examples/modal-by-instance-content.ts b/packages/angular-test-app/src/preview-examples/modal-by-instance-content.ts index f97cfee5e32..541b20ac969 100644 --- a/packages/angular-test-app/src/preview-examples/modal-by-instance-content.ts +++ b/packages/angular-test-app/src/preview-examples/modal-by-instance-content.ts @@ -25,7 +25,11 @@ import { IxActiveModal } from '@siemens/ix-angular'; > Cancel - + OK diff --git a/packages/core/src/components/button/button.tsx b/packages/core/src/components/button/button.tsx index 005c91e53e4..51774982668 100644 --- a/packages/core/src/components/button/button.tsx +++ b/packages/core/src/components/button/button.tsx @@ -100,6 +100,10 @@ export class Button { } } + setFocus() { + this.hostElement.shadowRoot!.querySelector('button')?.focus(); + } + render() { const baseButtonProps: BaseButtonProps = { variant: this.variant, @@ -115,13 +119,16 @@ export class Button { onClick: () => this.dispatchFormEvents(), type: this.type, alignment: this.alignment, + tabIndex: this.hostElement.tabIndex, }; return ( this.setFocus()} > diff --git a/packages/core/src/components/modal/test/modal.ct.ts b/packages/core/src/components/modal/test/modal.ct.ts index 145c5f177a6..8dfa83da9a2 100644 --- a/packages/core/src/components/modal/test/modal.ct.ts +++ b/packages/core/src/components/modal/test/modal.ct.ts @@ -6,20 +6,19 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ -import { expect } from '@playwright/test'; +import { expect, Page } from '@playwright/test'; import { test } from '@utils/test'; -import { ModalInstance, showModal } from './../../utils/modal'; +import { dismissModal, ModalInstance, showModal } from './../../utils/modal'; declare global { interface Window { + dismissModal: typeof dismissModal; showModal: typeof showModal; __counter: number; } } -test('closes on Escape key down', async ({ mount, page }) => { - await mount(``); - +async function setupModalEnvironment(page: Page) { await page.evaluate(() => { return new Promise((resolve) => { const script = document.createElement('script'); @@ -27,19 +26,42 @@ test('closes on Escape key down', async ({ mount, page }) => { script.innerHTML = ` import * as ix from 'http://127.0.0.1:8080/www/build/index.esm.js'; window.showModal = ix.showModal; + window.dismissModal = ix.dismissModal; `; - document.body.appendChild(script); + document.getElementById('mount')?.appendChild(script); resolve(); }); }); +} + +async function createToggleExample(page: Page) { + await page.evaluate(() => { + function createModalExample() { + const el = document.createElement('DIV'); + el.style.display = 'contents'; + el.innerHTML = ``; + return el; + } + + setTimeout(() => { + window.showModal({ + content: createModalExample(), + closeOnBackdropClick: true, + }); + }, 2000); + }); +} +test('closes on Escape key down', async ({ mount, page }) => { + await mount(``); + await setupModalEnvironment(page); await page.waitForTimeout(1000); await page.evaluate(() => { const elm = document.createElement('ix-modal'); elm.innerHTML = ` Title - Content + Content `; window.showModal({ content: elm, @@ -59,34 +81,8 @@ test.describe('closeOnBackdropClick = true', () => { Some background noise `); - await page.evaluate(() => { - return new Promise((resolve) => { - const script = document.createElement('script'); - script.type = 'module'; - script.innerHTML = ` - import * as ix from 'http://127.0.0.1:8080/www/build/index.esm.js'; - window.showModal = ix.showModal; - `; - - document.getElementById('mount').appendChild(script); - - function createModalExample() { - const el = document.createElement('DIV'); - el.style.display = 'contents'; - el.innerHTML = ``; - return el; - } - - setTimeout(() => { - window.showModal({ - content: createModalExample(), - closeOnBackdropClick: true, - }); - - resolve(); - }, 2000); - }); - }); + await setupModalEnvironment(page); + await createToggleExample(page); // needed to skip fade out / in animation await page.waitForTimeout(500); @@ -109,34 +105,8 @@ test.describe('closeOnBackdropClick = true', () => { Some background noise `); - await page.evaluate(() => { - return new Promise((resolve) => { - const script = document.createElement('script'); - script.type = 'module'; - script.innerHTML = ` - import * as ix from 'http://127.0.0.1:8080/www/build/index.esm.js'; - window.showModal = ix.showModal; - `; - - document.getElementById('mount').appendChild(script); - - function createModalExample() { - const el = document.createElement('DIV'); - el.style.display = 'contents'; - el.innerHTML = ``; - return el; - } - - setTimeout(() => { - window.showModal({ - content: createModalExample(), - closeOnBackdropClick: true, - }); - - resolve(); - }, 2000); - }); - }); + await setupModalEnvironment(page); + await createToggleExample(page); // needed to skip fade out / in animation await page.waitForTimeout(500); @@ -155,26 +125,14 @@ test.describe('closeOnBackdropClick = true', () => { test('emits one event on close', async ({ mount, page }) => { await mount(``); - await page.evaluate(() => { - return new Promise((resolve) => { - const script = document.createElement('script'); - script.type = 'module'; - script.innerHTML = ` - import * as ix from 'http://127.0.0.1:8080/www/build/index.esm.js'; - window.showModal = ix.showModal; - `; - document.body.appendChild(script); - resolve(); - }); - }); - + await setupModalEnvironment(page); await page.waitForTimeout(1000); await page.evaluate(() => { const elm = document.createElement('ix-modal'); elm.innerHTML = ` Title - Content + Content `; window @@ -203,3 +161,34 @@ test('emits one event on close', async ({ mount, page }) => { expect(await page.evaluate(() => window.__counter)).toBe(1); }); + +test('button receives focus on load', async ({ mount, page }) => { + await mount(''); + await setupModalEnvironment(page); + await page.waitForTimeout(100); + + await page.evaluate(() => { + const elm = document.createElement('ix-modal'); + elm.innerHTML = ` + Title + + OK + + `; + window.showModal({ + content: elm, + }); + const okButton = elm.querySelector('ix-button'); + okButton?.addEventListener('click', () => { + window.dismissModal(elm); + }); + }); + + await page.waitForTimeout(250); + const dialog = page.locator('ix-modal dialog'); + await expect(dialog).toBeVisible(); + + await page.keyboard.press('Enter'); + + await expect(dialog).not.toBeVisible(); +}); diff --git a/packages/core/src/components/utils/modal/modal.ts b/packages/core/src/components/utils/modal/modal.ts index a2acbfa4637..7511f8f3a5a 100644 --- a/packages/core/src/components/utils/modal/modal.ts +++ b/packages/core/src/components/utils/modal/modal.ts @@ -75,7 +75,7 @@ export async function showModal( config: ModalConfig ): Promise> { const delegate = resolveDelegate(); - let dialogRef: HTMLIxModalElement; + let dialogRef: HTMLIxModalElement | undefined; const onClose = new TypedEvent(); const onDismiss = new TypedEvent(); @@ -114,6 +114,16 @@ export async function showModal( } ); + requestAnimationFrame(() => { + const autofocusElement = dialogRef.querySelector( + '[autofocus],[auto-focus]' + ); + + if (autofocusElement) { + (autofocusElement as HTMLIxButtonElement).focus(); + } + }); + return { htmlElement: dialogRef, onClose, diff --git a/packages/core/src/tests/modal/modal.e2e.ts-snapshots/modal-with-dropdown-1-chromium---theme-classic-dark-linux.png b/packages/core/src/tests/modal/modal.e2e.ts-snapshots/modal-with-dropdown-1-chromium---theme-classic-dark-linux.png index 98a7b633a44d4a3a05673f758e6944caad50c40d..4f555cccf7b646075a6c49abf27a69bd17dbc92e 100644 GIT binary patch literal 26404 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≪7?=avln%bVA$n{i*6oa(T_U@S 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 z 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 Ik5In*505_kkpKVy literal 25045 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 Z&!}JW`MvYi;{~7!#?#f$Wt~$(695a}FfIT9 diff --git a/packages/storybook-docs/src/stories/modal.stories.ts b/packages/storybook-docs/src/stories/modal.stories.ts index 3973eac2ed4..486be709a6b 100644 --- a/packages/storybook-docs/src/stories/modal.stories.ts +++ b/packages/storybook-docs/src/stories/modal.stories.ts @@ -6,7 +6,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ -import { showModal } from '@siemens/ix/components'; +import { dismissModal, showModal } from '@siemens/ix/components'; import type { Meta, StoryObj } from '@storybook/web-components'; import { html, render } from 'lit'; import { icon } from './utils/arg-types'; @@ -26,8 +26,8 @@ const meta = { Modal Header Content + Close Okay - Close `; @@ -70,17 +70,21 @@ export const ShowFunction: Story = { Modal Header Content - Okay - Close + Close + Okay `, mount ); + if (!isMounted) { showModal({ content: mount }).then((p) => { p.onClose.once(() => refs.delete(ctx.id)); p.onDismiss.once(() => refs.delete(ctx.id)); }); + mount + .querySelector('ix-button[autofocus]') + ?.addEventListener('click', () => dismissModal(mount)); refs.set(ctx.id, mount); } }; From 77f76febbc00df91a3d27f43845f2cfadd9234ac Mon Sep 17 00:00:00 2001 From: Daniel Leroux Date: Fri, 6 Dec 2024 11:52:17 +0100 Subject: [PATCH 3/3] fix(core/select): replace element ref with make-ref function (#1595) --- .changeset/lazy-birds-dream.md | 5 ++ .../text-value-accessor.ts | 2 +- packages/core/src/components.d.ts | 16 +++- .../src/components/date-input/date-input.tsx | 10 +-- .../components/field-label/field-label.tsx | 11 ++- .../field-wrapper/field-wrapper.tsx | 5 +- .../core/src/components/input/input.fc.tsx | 10 +-- packages/core/src/components/input/input.tsx | 4 +- .../src/components/input/number-input.tsx | 4 +- .../core/src/components/input/textarea.tsx | 4 +- .../core/src/components/select/select.tsx | 74 ++++++++++--------- 11 files changed, 81 insertions(+), 64 deletions(-) create mode 100644 .changeset/lazy-birds-dream.md diff --git a/.changeset/lazy-birds-dream.md b/.changeset/lazy-birds-dream.md new file mode 100644 index 00000000000..9b6887b18cc --- /dev/null +++ b/.changeset/lazy-birds-dream.md @@ -0,0 +1,5 @@ +--- +'@siemens/ix': patch +--- + +Fix undefined access of **ix-select** during rendering of label diff --git a/packages/angular/src/control-value-accessors/text-value-accessor.ts b/packages/angular/src/control-value-accessors/text-value-accessor.ts index 02f24376d12..a403da590a4 100644 --- a/packages/angular/src/control-value-accessors/text-value-accessor.ts +++ b/packages/angular/src/control-value-accessors/text-value-accessor.ts @@ -11,7 +11,7 @@ import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { ValueAccessor } from './value-accessor'; @Directive({ - selector: 'ix-input,ix-number-input,ix-textarea-field', + selector: 'ix-input,ix-number-input,ix-textarea', providers: [ { provide: NG_VALUE_ACCESSOR, diff --git a/packages/core/src/components.d.ts b/packages/core/src/components.d.ts index d7d1d4d9e25..6285dce4be9 100644 --- a/packages/core/src/components.d.ts +++ b/packages/core/src/components.d.ts @@ -1236,7 +1236,9 @@ export namespace Components { "value": string; } interface IxFieldLabel { - "controlRef"?: MakeRef; + "controlRef"?: | MakeRef + | MakeRef + | MakeRef; /** * The id of the form element that the label is associated with */ @@ -1251,7 +1253,9 @@ export namespace Components { /** * The control element that the label is associated with */ - "controlRef"?: MakeRef; + "controlRef"?: | MakeRef + | MakeRef + | MakeRef; /** * Show text below the field component */ @@ -6340,7 +6344,9 @@ declare namespace LocalJSX { "value"?: string; } interface IxFieldLabel { - "controlRef"?: MakeRef; + "controlRef"?: | MakeRef + | MakeRef + | MakeRef; /** * The id of the form element that the label is associated with */ @@ -6355,7 +6361,9 @@ declare namespace LocalJSX { /** * The control element that the label is associated with */ - "controlRef"?: MakeRef; + "controlRef"?: | MakeRef + | MakeRef + | MakeRef; /** * Show text below the field component */ diff --git a/packages/core/src/components/date-input/date-input.tsx b/packages/core/src/components/date-input/date-input.tsx index 92de60cfc32..652c6e212df 100644 --- a/packages/core/src/components/date-input/date-input.tsx +++ b/packages/core/src/components/date-input/date-input.tsx @@ -7,6 +7,7 @@ * LICENSE file in the root directory of this source tree. */ +import { iconCalendar } from '@siemens/ix-icons/icons'; import { AttachInternals, Component, @@ -22,7 +23,8 @@ import { } from '@stencil/core'; import { DateTime } from 'luxon'; import { dropdownController } from '../dropdown/dropdown-controller'; -import { MakeRef, makeRef } from '../utils/make-ref'; +import { SlotEnd, SlotStart } from '../input/input.fc'; +import { adjustPaddingForStartAndEnd } from '../input/input.util'; import { ClassMutationObserver, HookValidationLifecycle, @@ -30,9 +32,7 @@ import { ValidationResults, createClassMutationObserver, } from '../utils/input'; -import { SlotEnd, SlotStart } from '../input/input.fc'; -import { adjustPaddingForStartAndEnd } from '../input/input.util'; -import { iconCalendar } from '@siemens/ix-icons/icons'; +import { makeRef } from '../utils/make-ref'; export type DateInputValidityState = { patternMismatch: boolean; @@ -435,7 +435,7 @@ export class DateInput implements IxInputFieldComponent { validText={this.validText} showTextAsTooltip={this.showTextAsTooltip} required={this.required} - controlRef={this.inputElementRef as unknown as MakeRef} + controlRef={this.inputElementRef} > {this.renderInput()} diff --git a/packages/core/src/components/field-label/field-label.tsx b/packages/core/src/components/field-label/field-label.tsx index e8480725b4d..14b51cbffd6 100644 --- a/packages/core/src/components/field-label/field-label.tsx +++ b/packages/core/src/components/field-label/field-label.tsx @@ -7,15 +7,15 @@ * LICENSE file in the root directory of this source tree. */ -import { Component, Host, Prop, h, Element, Watch } from '@stencil/core'; -import { IxComponent } from '../utils/internal'; +import { Component, Element, h, Host, Prop, Watch } from '@stencil/core'; +import { A11yAttributes, a11yHostAttributes } from '../utils/a11y'; import { ClassMutationObserver, createClassMutationObserver, HTMLIxFormComponentElement, isIxInputFieldComponent, } from '../utils/input'; -import { A11yAttributes, a11yHostAttributes } from '../utils/a11y'; +import { IxComponent } from '../utils/internal'; import { MakeRef, makeRef } from '../utils/make-ref'; @Component({ @@ -37,7 +37,10 @@ export class FormFieldLabel implements IxComponent { @Prop({ reflect: true }) htmlFor?: string; /** @internal */ - @Prop() controlRef?: MakeRef; + @Prop() controlRef?: + | MakeRef + | MakeRef + | MakeRef; /** @internal */ @Prop({ mutable: true }) isInvalid: boolean = false; diff --git a/packages/core/src/components/field-wrapper/field-wrapper.tsx b/packages/core/src/components/field-wrapper/field-wrapper.tsx index dca0bec7c6e..e1cae44f0b0 100644 --- a/packages/core/src/components/field-wrapper/field-wrapper.tsx +++ b/packages/core/src/components/field-wrapper/field-wrapper.tsx @@ -88,7 +88,10 @@ export class FieldWrapper implements FieldWrapperInterface { /** * The control element that the label is associated with */ - @Prop() controlRef?: MakeRef; + @Prop() controlRef?: + | MakeRef + | MakeRef + | MakeRef; private readonly slotRef = makeRef(); diff --git a/packages/core/src/components/input/input.fc.tsx b/packages/core/src/components/input/input.fc.tsx index 3b79e2e57a9..0ebc44d44eb 100644 --- a/packages/core/src/components/input/input.fc.tsx +++ b/packages/core/src/components/input/input.fc.tsx @@ -45,13 +45,10 @@ export function TextareaElement(props: { required={props.required} value={props.value} placeholder={props.placeholder} - onChange={(changeEvent) => { - const target = changeEvent.target as HTMLInputElement; - props.valueChange(target.value); - }} onInput={(inputEvent) => { const target = inputEvent.target as HTMLInputElement; props.updateFormInternalValue(target.value); + props.valueChange(target.value); }} onBlur={() => props.onBlur()} style={{ @@ -105,13 +102,10 @@ export function InputElement(props: { value={props.value} placeholder={props.placeholder} onKeyPress={(event) => props.onKeyPress(event)} - onChange={(changeEvent) => { - const target = changeEvent.target as HTMLInputElement; - props.valueChange(target.value); - }} onInput={(inputEvent) => { const target = inputEvent.target as HTMLInputElement; props.updateFormInternalValue(target.value); + props.valueChange(target.value); }} onBlur={() => props.onBlur()} {...props.ariaAttributes} diff --git a/packages/core/src/components/input/input.tsx b/packages/core/src/components/input/input.tsx index ad79a0b50a8..bf83c7c5e92 100644 --- a/packages/core/src/components/input/input.tsx +++ b/packages/core/src/components/input/input.tsx @@ -27,7 +27,7 @@ import { IxInputFieldComponent, ValidationResults, } from '../utils/input'; -import { MakeRef, makeRef } from '../utils/make-ref'; +import { makeRef } from '../utils/make-ref'; import { InputElement, SlotEnd, SlotStart } from './input.fc'; import { adjustPaddingForStartAndEnd, @@ -255,7 +255,7 @@ export class Input implements IxInputFieldComponent { isValid={this.isValid} isInfo={this.isInfo} isWarning={this.isWarning} - controlRef={this.inputRef as unknown as MakeRef} + controlRef={this.inputRef} >
{ isValid={this.isValid} isInfo={this.isInfo} isWarning={this.isWarning} - controlRef={this.inputRef as unknown as MakeRef} + controlRef={this.inputRef} >
{ isValid={this.isValid} isInfo={this.isInfo} isWarning={this.isWarning} - controlRef={this.textAreaRef as unknown as MakeRef} + controlRef={this.textAreaRef} > {!!this.maxLength && this.maxLength > 0 && ( diff --git a/packages/core/src/components/select/select.tsx b/packages/core/src/components/select/select.tsx index 13983ee2ce2..e567eb551d0 100644 --- a/packages/core/src/components/select/select.tsx +++ b/packages/core/src/components/select/select.tsx @@ -21,18 +21,18 @@ import { State, Watch, } from '@stencil/core'; +import { DropdownItemWrapper } from '../dropdown/dropdown-controller'; import { IxSelectItemLabelChangeEvent } from '../select-item/events'; +import { a11yBoolean } from '../utils/a11y'; import { ArrowFocusController } from '../utils/focus'; -import { OnListener } from '../utils/listener'; -import { createMutationObserver } from '../utils/mutation-observer'; -import { DropdownItemWrapper } from '../dropdown/dropdown-controller'; import { HookValidationLifecycle, - ValidationResults, IxInputFieldComponent, + ValidationResults, } from '../utils/input'; -import { MakeRef, makeRef } from '../utils/make-ref'; -import { a11yBoolean } from '../utils/a11y'; +import { OnListener } from '../utils/listener'; +import { makeRef } from '../utils/make-ref'; +import { createMutationObserver } from '../utils/mutation-observer'; /** * @form-ready 2.6.0 @@ -221,12 +221,13 @@ export class Select implements IxInputFieldComponent { @State() isWarning = false; private readonly dropdownWrapperRef = makeRef(); - private readonly dropdownAnchor = makeRef(); + private readonly dropdownAnchorRef = makeRef(); + private readonly inputRef = makeRef(); - private inputRef?: HTMLInputElement; - private dropdownRef?: HTMLIxDropdownElement; - private customItemsContainerRef?: HTMLDivElement; - private addItemRef?: HTMLIxDropdownItemElement; + private inputElement?: HTMLInputElement; + private dropdownElement?: HTMLIxDropdownElement; + private customItemsContainerElement?: HTMLDivElement; + private addItemElement?: HTMLIxDropdownItemElement; private arrowFocusController?: ArrowFocusController; private readonly itemObserver = createMutationObserver(() => { @@ -302,16 +303,16 @@ export class Select implements IxInputFieldComponent { @Watch('dropdownShow') watchDropdownShow(show: boolean) { - if (show && this.dropdownRef) { + if (show && this.dropdownElement) { this.arrowFocusController = new ArrowFocusController( this.visibleNonShadowItems, - this.dropdownRef, + this.dropdownElement, this.focusControllerCallbackBind ); this.arrowFocusController.wrap = !this.editable; - this.itemObserver.observe(this.dropdownRef, { + this.itemObserver.observe(this.dropdownElement, { childList: true, subtree: true, }); @@ -402,7 +403,7 @@ export class Select implements IxInputFieldComponent { newItem.value = value; newItem.label = value; - this.customItemsContainerRef?.appendChild(newItem); + this.customItemsContainerElement?.appendChild(newItem); this.clearInput(); this.itemClick(value); @@ -457,7 +458,7 @@ export class Select implements IxInputFieldComponent { this.inputValue = ''; } - this.inputRef && (this.inputRef.value = this.inputValue); + this.inputElement && (this.inputElement.value = this.inputValue); } private emitValueChange(value: string | string[]) { @@ -478,9 +479,9 @@ export class Select implements IxInputFieldComponent { } componentDidLoad() { - this.inputRef?.addEventListener('input', () => { + this.inputElement?.addEventListener('input', () => { this.dropdownShow = true; - this.inputChange.emit(this.inputRef?.value); + this.inputChange.emit(this.inputElement?.value); }); } @@ -513,8 +514,8 @@ export class Select implements IxInputFieldComponent { this.dropdownShow = event.detail; if (event.detail) { - this.inputRef?.focus(); - this.inputRef?.select(); + this.inputElement?.focus(); + this.inputElement?.select(); this.removeHiddenFromItems(); this.isDropdownEmpty = this.isEveryDropdownItemHidden; @@ -624,7 +625,7 @@ export class Select implements IxInputFieldComponent { if ( this.isAddItemVisible() && - this.addItemRef?.contains( + this.addItemElement?.contains( await this.navigationItem.getDropdownItemElement() ) ) { @@ -682,12 +683,12 @@ export class Select implements IxInputFieldComponent { private focusAddItemButton() { if (this.addItemButton) { this.addItemButton.shadowRoot?.querySelector('button')?.focus(); - this.navigationItem = this.addItemRef; + this.navigationItem = this.addItemElement; } } private filterItemsWithTypeahead() { - this.inputFilterText = this.inputRef?.value ?? ''; + this.inputFilterText = this.inputElement?.value ?? ''; if (this.isSingleMode && this.inputFilterText === this.selectedLabels[0]) { return; @@ -722,8 +723,8 @@ export class Select implements IxInputFieldComponent { } private clearInput() { - if (this.inputRef) { - this.inputRef.value = ''; + if (this.inputElement) { + this.inputElement.value = ''; } this.inputFilterText = ''; } @@ -803,8 +804,8 @@ export class Select implements IxInputFieldComponent { */ @Method() getNativeInputElement(): Promise { - if (this.inputRef) { - return Promise.resolve(this.inputRef); + if (this.inputElement) { + return Promise.resolve(this.inputElement); } else { return Promise.reject(new Error('Input element not found')); } @@ -842,7 +843,7 @@ export class Select implements IxInputFieldComponent { isValid={this.isValid} isInfo={this.isInfo} isWarning={this.isWarning} - controlRef={this.inputRef as unknown as MakeRef} + controlRef={this.inputRef} >
{ readonly: this.readonly, }} ref={(ref) => { - this.dropdownAnchor(ref); + this.dropdownAnchorRef(ref); if (!this.editable) this.dropdownWrapperRef(ref); }} > @@ -886,7 +887,10 @@ export class Select implements IxInputFieldComponent { }} placeholder={this.placeholderValue()} value={this.inputValue ?? ''} - ref={(ref) => (this.inputRef = ref)} + ref={(ref) => { + this.inputElement = ref; + this.inputRef(ref); + }} onBlur={(e) => this.onInputBlur(e)} onFocus={() => { this.navigationItem = undefined; @@ -928,13 +932,13 @@ export class Select implements IxInputFieldComponent {
(this.dropdownRef = ref!)} + ref={(ref) => (this.dropdownElement = ref!)} show={this.dropdownShow} closeBehavior={this.isMultipleMode ? 'outside' : 'both'} class={{ 'd-none': this.disabled || this.readonly, }} - anchor={this.dropdownAnchor.waitForCurrent()} + anchor={this.dropdownAnchorRef.waitForCurrent()} trigger={this.dropdownWrapperRef.waitForCurrent()} onShowChanged={(e) => this.dropdownVisibilityChanged(e)} placement="bottom-start" @@ -964,7 +968,7 @@ export class Select implements IxInputFieldComponent { }} >
(this.customItemsContainerRef = ref!)} + ref={(ref) => (this.customItemsContainerElement = ref!)} class="d-contents" >
{this.isAddItemVisible() ? ( @@ -980,9 +984,9 @@ export class Select implements IxInputFieldComponent { e.stopPropagation(); this.emitAddItem(this.inputFilterText); }} - onFocus={() => (this.navigationItem = this.addItemRef)} + onFocus={() => (this.navigationItem = this.addItemElement)} ref={(ref) => { - this.addItemRef = ref!; + this.addItemElement = ref!; }} > ) : null}