From 45e28a28b9208333706f16c21ef6dc4a6d2ef149 Mon Sep 17 00:00:00 2001 From: Daniel Leroux Date: Wed, 23 Aug 2023 09:29:25 +0200 Subject: [PATCH 01/31] feat(core/grid): add grid components --- packages/angular/src/components.ts | 65 +++ packages/angular/src/declare-components.ts | 3 + packages/core/.eslintrc.json | 1 + packages/core/component-doc.json | 464 +++++++++++++++++- packages/core/scss/mixins/_break-points.scss | 31 ++ packages/core/src/components.d.ts | 139 +++++- packages/core/src/components/col/col.scss | 24 + packages/core/src/components/col/col.tsx | 153 ++++++ .../{layout => }/css-grid/builder.ts | 0 .../{layout => }/css-grid/css-grid-item.scss | 0 .../{layout => }/css-grid/css-grid-item.tsx | 0 .../{layout => }/css-grid/css-grid.scss | 0 .../{layout => }/css-grid/css-grid.tsx | 0 .../core/src/components/grid/grid.mixins.scss | 19 + packages/core/src/components/grid/grid.scss | 38 ++ packages/core/src/components/grid/grid.tsx | 67 +++ .../components/my-component/my-component.scss | 12 +- .../components/my-component/my-component.tsx | 56 ++- packages/core/src/components/row/row.scss | 13 + packages/core/src/components/row/row.tsx | 28 ++ packages/core/src/index.html | 2 +- packages/react/src/components.ts | 3 + packages/vue/src/components.ts | 18 + 23 files changed, 1124 insertions(+), 12 deletions(-) create mode 100644 packages/core/scss/mixins/_break-points.scss create mode 100644 packages/core/src/components/col/col.scss create mode 100644 packages/core/src/components/col/col.tsx rename packages/core/src/components/{layout => }/css-grid/builder.ts (100%) rename packages/core/src/components/{layout => }/css-grid/css-grid-item.scss (100%) rename packages/core/src/components/{layout => }/css-grid/css-grid-item.tsx (100%) rename packages/core/src/components/{layout => }/css-grid/css-grid.scss (100%) rename packages/core/src/components/{layout => }/css-grid/css-grid.tsx (100%) create mode 100644 packages/core/src/components/grid/grid.mixins.scss create mode 100644 packages/core/src/components/grid/grid.scss create mode 100644 packages/core/src/components/grid/grid.tsx create mode 100644 packages/core/src/components/row/row.scss create mode 100644 packages/core/src/components/row/row.tsx diff --git a/packages/angular/src/components.ts b/packages/angular/src/components.ts index 16d23c7e2da..802ec8fad1e 100644 --- a/packages/angular/src/components.ts +++ b/packages/angular/src/components.ts @@ -387,6 +387,28 @@ export declare interface IxChip extends Components.IxChip { } +@ProxyCmp({ + inputs: ['size', 'sizeLg', 'sizeMd', 'sizeSm'] +}) +@Component({ + selector: 'ix-col', + changeDetection: ChangeDetectionStrategy.OnPush, + template: '', + // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property + inputs: ['size', 'sizeLg', 'sizeMd', 'sizeSm'], +}) +export class IxCol { + protected el: HTMLElement; + constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) { + c.detach(); + this.el = r.nativeElement; + } +} + + +export declare interface IxCol extends Components.IxCol {} + + @ProxyCmp({ inputs: ['hasBackButton', 'headerSubtitle', 'headerTitle', 'variant'] }) @@ -862,6 +884,28 @@ export class IxFlipTileContent { export declare interface IxFlipTileContent extends Components.IxFlipTileContent {} +@ProxyCmp({ + inputs: ['columns', 'fixed', 'fluid'] +}) +@Component({ + selector: 'ix-grid', + changeDetection: ChangeDetectionStrategy.OnPush, + template: '', + // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property + inputs: ['columns', 'fixed', 'fluid'], +}) +export class IxGrid { + protected el: HTMLElement; + constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) { + c.detach(); + this.el = r.nativeElement; + } +} + + +export declare interface IxGrid extends Components.IxGrid {} + + @ProxyCmp({ inputs: ['collapsed', 'expandOnHeaderClick', 'header', 'index', 'selected', 'subHeader', 'suppressHeaderSelection'] }) @@ -1682,6 +1726,27 @@ export class IxPushCard { export declare interface IxPushCard extends Components.IxPushCard {} +@ProxyCmp({ +}) +@Component({ + selector: 'ix-row', + changeDetection: ChangeDetectionStrategy.OnPush, + template: '', + // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property + inputs: [], +}) +export class IxRow { + protected el: HTMLElement; + constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) { + c.detach(); + this.el = r.nativeElement; + } +} + + +export declare interface IxRow extends Components.IxRow {} + + @ProxyCmp({ inputs: ['allowClear', 'disabled', 'editable', 'hideListHeader', 'i18nNoMatches', 'i18nPlaceholder', 'i18nPlaceholderEditable', 'i18nSelectListHeader', 'mode', 'readonly', 'selectedIndices'] }) diff --git a/packages/angular/src/declare-components.ts b/packages/angular/src/declare-components.ts index 00f1a1b9563..bfe7703dff0 100644 --- a/packages/angular/src/declare-components.ts +++ b/packages/angular/src/declare-components.ts @@ -17,6 +17,7 @@ export const DIRECTIVES = [ d.IxCardTitle, d.IxCategoryFilter, d.IxChip, + d.IxCol, d.IxContentHeader, d.IxDatePicker, d.IxDatetimePicker, @@ -34,6 +35,7 @@ export const DIRECTIVES = [ d.IxFilterChip, d.IxFlipTile, d.IxFlipTileContent, + d.IxGrid, d.IxGroup, d.IxGroupContextMenu, d.IxGroupItem, @@ -66,6 +68,7 @@ export const DIRECTIVES = [ d.IxPagination, d.IxPill, d.IxPushCard, + d.IxRow, d.IxSelect, d.IxSelectItem, d.IxSpinner, diff --git a/packages/core/.eslintrc.json b/packages/core/.eslintrc.json index d77c5292160..8602531444c 100644 --- a/packages/core/.eslintrc.json +++ b/packages/core/.eslintrc.json @@ -6,6 +6,7 @@ "@stencil-community/async-methods": 0, "@stencil-community/own-props-must-be-private": 0, "@stencil-community/own-methods-must-be-private": 0, + "@stencil-community/strict-boolean-conditions": 0, "react/jsx-no-bind": 0, "react/jsx-uses-react": 0, "react/react-in-jsx-scope": 0 diff --git a/packages/core/component-doc.json b/packages/core/component-doc.json index 4592664c5ef..32d51ab8d61 100644 --- a/packages/core/component-doc.json +++ b/packages/core/component-doc.json @@ -682,7 +682,8 @@ "ix-modal-example", "ix-split-button", "ix-time-picker", - "ix-upload" + "ix-upload", + "my-component" ], "dependencies": [ "ix-spinner", @@ -722,6 +723,9 @@ ], "ix-upload": [ "ix-button" + ], + "my-component": [ + "ix-button" ] }, "props": [ @@ -1744,6 +1748,308 @@ "parts": [], "listeners": [] }, + { + "dirPath": "./src/components/col", + "filePath": "./src/components/col/col.tsx", + "fileName": "col.tsx", + "readmePath": "./src/components/col/readme.md", + "usagesDir": "./src/components/col/usage", + "tag": "ix-col", + "overview": "", + "usage": {}, + "docs": "", + "docsTags": [ + { + "name": "since", + "text": "2.0.0" + } + ], + "encapsulation": "shadow", + "dependents": [ + "my-component" + ], + "dependencies": [], + "dependencyGraph": { + "my-component": [ + "ix-col" + ] + }, + "props": [ + { + "name": "size", + "type": "\"1\" | \"10\" | \"11\" | \"12\" | \"2\" | \"3\" | \"4\" | \"5\" | \"6\" | \"7\" | \"8\" | \"9\" | \"auto\"", + "mutable": false, + "attr": "size", + "reflectToAttr": false, + "docs": "Size of the column", + "docsTags": [], + "values": [ + { + "value": "1", + "type": "string" + }, + { + "value": "10", + "type": "string" + }, + { + "value": "11", + "type": "string" + }, + { + "value": "12", + "type": "string" + }, + { + "value": "2", + "type": "string" + }, + { + "value": "3", + "type": "string" + }, + { + "value": "4", + "type": "string" + }, + { + "value": "5", + "type": "string" + }, + { + "value": "6", + "type": "string" + }, + { + "value": "7", + "type": "string" + }, + { + "value": "8", + "type": "string" + }, + { + "value": "9", + "type": "string" + }, + { + "value": "auto", + "type": "string" + } + ], + "optional": true, + "required": false + }, + { + "name": "sizeLg", + "type": "\"1\" | \"10\" | \"11\" | \"12\" | \"2\" | \"3\" | \"4\" | \"5\" | \"6\" | \"7\" | \"8\" | \"9\" | \"auto\"", + "mutable": false, + "attr": "size-lg", + "reflectToAttr": false, + "docs": "Size of the column for lg screens", + "docsTags": [], + "values": [ + { + "value": "1", + "type": "string" + }, + { + "value": "10", + "type": "string" + }, + { + "value": "11", + "type": "string" + }, + { + "value": "12", + "type": "string" + }, + { + "value": "2", + "type": "string" + }, + { + "value": "3", + "type": "string" + }, + { + "value": "4", + "type": "string" + }, + { + "value": "5", + "type": "string" + }, + { + "value": "6", + "type": "string" + }, + { + "value": "7", + "type": "string" + }, + { + "value": "8", + "type": "string" + }, + { + "value": "9", + "type": "string" + }, + { + "value": "auto", + "type": "string" + } + ], + "optional": true, + "required": false + }, + { + "name": "sizeMd", + "type": "\"1\" | \"10\" | \"11\" | \"12\" | \"2\" | \"3\" | \"4\" | \"5\" | \"6\" | \"7\" | \"8\" | \"9\" | \"auto\"", + "mutable": false, + "attr": "size-md", + "reflectToAttr": false, + "docs": "Size of the column for md screens", + "docsTags": [], + "values": [ + { + "value": "1", + "type": "string" + }, + { + "value": "10", + "type": "string" + }, + { + "value": "11", + "type": "string" + }, + { + "value": "12", + "type": "string" + }, + { + "value": "2", + "type": "string" + }, + { + "value": "3", + "type": "string" + }, + { + "value": "4", + "type": "string" + }, + { + "value": "5", + "type": "string" + }, + { + "value": "6", + "type": "string" + }, + { + "value": "7", + "type": "string" + }, + { + "value": "8", + "type": "string" + }, + { + "value": "9", + "type": "string" + }, + { + "value": "auto", + "type": "string" + } + ], + "optional": true, + "required": false + }, + { + "name": "sizeSm", + "type": "\"1\" | \"10\" | \"11\" | \"12\" | \"2\" | \"3\" | \"4\" | \"5\" | \"6\" | \"7\" | \"8\" | \"9\" | \"auto\"", + "mutable": false, + "attr": "size-sm", + "reflectToAttr": false, + "docs": "Size of the column for sm screens", + "docsTags": [], + "values": [ + { + "value": "1", + "type": "string" + }, + { + "value": "10", + "type": "string" + }, + { + "value": "11", + "type": "string" + }, + { + "value": "12", + "type": "string" + }, + { + "value": "2", + "type": "string" + }, + { + "value": "3", + "type": "string" + }, + { + "value": "4", + "type": "string" + }, + { + "value": "5", + "type": "string" + }, + { + "value": "6", + "type": "string" + }, + { + "value": "7", + "type": "string" + }, + { + "value": "8", + "type": "string" + }, + { + "value": "9", + "type": "string" + }, + { + "value": "auto", + "type": "string" + } + ], + "optional": true, + "required": false + } + ], + "methods": [], + "events": [], + "styles": [], + "slots": [], + "parts": [], + "listeners": [ + { + "event": "resize", + "target": "window", + "capture": false, + "passive": true + } + ] + }, { "dirPath": "./src/components/content-header", "filePath": "./src/components/content-header/content-header.tsx", @@ -4273,6 +4579,108 @@ "parts": [], "listeners": [] }, + { + "dirPath": "./src/components/grid", + "filePath": "./src/components/grid/grid.tsx", + "fileName": "grid.tsx", + "readmePath": "./src/components/grid/readme.md", + "usagesDir": "./src/components/grid/usage", + "tag": "ix-grid", + "overview": "", + "usage": {}, + "docs": "", + "docsTags": [ + { + "name": "since", + "text": "2.0.0" + } + ], + "encapsulation": "shadow", + "dependents": [ + "my-component" + ], + "dependencies": [], + "dependencyGraph": { + "my-component": [ + "ix-grid" + ] + }, + "props": [ + { + "name": "columns", + "type": "number", + "mutable": false, + "attr": "columns", + "reflectToAttr": false, + "docs": "Overwrite the default number of columns. Choose between 2 and 12 columns.", + "docsTags": [], + "default": "12", + "values": [ + { + "type": "number" + } + ], + "optional": false, + "required": false + }, + { + "name": "fixed", + "type": "\"fixed\" | \"fixed-lg\" | \"fixed-md\" | \"fixed-sm\" | boolean", + "mutable": false, + "attr": "fixed", + "reflectToAttr": false, + "docs": "Grid will be displayed without any padding", + "docsTags": [], + "default": "false", + "values": [ + { + "value": "fixed", + "type": "string" + }, + { + "value": "fixed-lg", + "type": "string" + }, + { + "value": "fixed-md", + "type": "string" + }, + { + "value": "fixed-sm", + "type": "string" + }, + { + "type": "boolean" + } + ], + "optional": false, + "required": false + }, + { + "name": "fluid", + "type": "boolean", + "mutable": false, + "attr": "fluid", + "reflectToAttr": false, + "docs": "Integrates the grid fluid into the page without padding to left and right", + "docsTags": [], + "default": "false", + "values": [ + { + "type": "boolean" + } + ], + "optional": false, + "required": false + } + ], + "methods": [], + "events": [], + "styles": [], + "slots": [], + "parts": [], + "listeners": [] + }, { "dirPath": "./src/components/group", "filePath": "./src/components/group/group.tsx", @@ -8325,6 +8733,40 @@ "parts": [], "listeners": [] }, + { + "dirPath": "./src/components/row", + "filePath": "./src/components/row/row.tsx", + "fileName": "row.tsx", + "readmePath": "./src/components/row/readme.md", + "usagesDir": "./src/components/row/usage", + "tag": "ix-row", + "overview": "", + "usage": {}, + "docs": "", + "docsTags": [ + { + "name": "since", + "text": "2.0.0" + } + ], + "encapsulation": "shadow", + "dependents": [ + "my-component" + ], + "dependencies": [], + "dependencyGraph": { + "my-component": [ + "ix-row" + ] + }, + "props": [], + "methods": [], + "events": [], + "styles": [], + "slots": [], + "parts": [], + "listeners": [] + }, { "dirPath": "./src/components/select", "filePath": "./src/components/select/select.tsx", @@ -11622,8 +12064,24 @@ "docsTags": [], "encapsulation": "scoped", "dependents": [], - "dependencies": [], - "dependencyGraph": {}, + "dependencies": [ + "ix-button", + "ix-grid", + "ix-row", + "ix-col" + ], + "dependencyGraph": { + "my-component": [ + "ix-button", + "ix-grid", + "ix-row", + "ix-col" + ], + "ix-button": [ + "ix-spinner", + "ix-icon" + ] + }, "props": [], "methods": [], "events": [], diff --git a/packages/core/scss/mixins/_break-points.scss b/packages/core/scss/mixins/_break-points.scss new file mode 100644 index 00000000000..f9413f4fca1 --- /dev/null +++ b/packages/core/scss/mixins/_break-points.scss @@ -0,0 +1,31 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +// const smallMediaQuery = `only screen and (max-width: 40em)`; +// const mediumMediaQuery = `only screen and (min-width: 40.063em) and (max-width: 64em)`; +// const largeMediaQuery = `only screen and (min-width: 64.063em)`; + +$screen-breakpoints: ( + xs: 0, + sm: 576px, + md: 768px, + lg: 992px, + xl: 1200px, +); + +@mixin media-breakpoint-up($name, $breakpoints: $screen-breakpoints) { + $min: breakpoint-min($name, $breakpoints); + @if $min { + @media (min-width: $min) { + @content; + } + } @else { + @content; + } +} diff --git a/packages/core/src/components.d.ts b/packages/core/src/components.d.ts index 9abf1fbd46a..9ddf941e746 100644 --- a/packages/core/src/components.d.ts +++ b/packages/core/src/components.d.ts @@ -12,8 +12,9 @@ import { CardVariant } from "./components/card/card"; import { CardAccordionExpandChangeEvent } from "./components/card-accordion/card-accordion"; import { FilterState } from "./components/category-filter/filter-state"; import { InputState } from "./components/category-filter/input-state"; +import { ColumnSize } from "./components/col/col"; import { ContentHeaderVariant } from "./components/content-header/content-header"; -import { CssGridTemplateType } from "./components/layout/css-grid/css-grid"; +import { CssGridTemplateType } from "./components/css-grid/css-grid"; import { DateTimeCardCorners } from "./components/date-time-card/date-time-card"; import { DateChangeEvent, LegacyDateChangeEvent } from "./components/date-picker/date-picker"; import { DateTimeCardCorners as DateTimeCardCorners1 } from "./components/date-time-card/date-time-card"; @@ -23,6 +24,7 @@ import { DropdownTriggerEvent } from "./components/dropdown/dropdown"; import { DropdownButtonVariant } from "./components/dropdown-button/dropdown-button"; import { EmptyStateLayout } from "./components/empty-state/empty-state"; import { FlipTileState } from "./components/flip-tile/flip-tile-state"; +import { GridSizingBehavior } from "./components/grid/grid"; import { IconButtonVariant } from "./components/icon-button/icon-button"; import { ButtonVariant as ButtonVariant1 } from "./components/button/button"; import { KeyValueLabelPosition } from "./components/key-value/key-value"; @@ -43,8 +45,9 @@ export { CardVariant } from "./components/card/card"; export { CardAccordionExpandChangeEvent } from "./components/card-accordion/card-accordion"; export { FilterState } from "./components/category-filter/filter-state"; export { InputState } from "./components/category-filter/input-state"; +export { ColumnSize } from "./components/col/col"; export { ContentHeaderVariant } from "./components/content-header/content-header"; -export { CssGridTemplateType } from "./components/layout/css-grid/css-grid"; +export { CssGridTemplateType } from "./components/css-grid/css-grid"; export { DateTimeCardCorners } from "./components/date-time-card/date-time-card"; export { DateChangeEvent, LegacyDateChangeEvent } from "./components/date-picker/date-picker"; export { DateTimeCardCorners as DateTimeCardCorners1 } from "./components/date-time-card/date-time-card"; @@ -54,6 +57,7 @@ export { DropdownTriggerEvent } from "./components/dropdown/dropdown"; export { DropdownButtonVariant } from "./components/dropdown-button/dropdown-button"; export { EmptyStateLayout } from "./components/empty-state/empty-state"; export { FlipTileState } from "./components/flip-tile/flip-tile-state"; +export { GridSizingBehavior } from "./components/grid/grid"; export { IconButtonVariant } from "./components/icon-button/icon-button"; export { ButtonVariant as ButtonVariant1 } from "./components/button/button"; export { KeyValueLabelPosition } from "./components/key-value/key-value"; @@ -371,6 +375,27 @@ export namespace Components { | 'success' | 'custom'; } + /** + * @since 2.0.0 + */ + interface IxCol { + /** + * Size of the column + */ + "size"?: ColumnSize; + /** + * Size of the column for lg screens + */ + "sizeLg"?: ColumnSize; + /** + * Size of the column for md screens + */ + "sizeMd"?: ColumnSize; + /** + * Size of the column for sm screens + */ + "sizeSm"?: ColumnSize; + } interface IxContentHeader { /** * Display a back button @@ -821,6 +846,23 @@ export namespace Components { */ "contentVisible": boolean; } + /** + * @since 2.0.0 + */ + interface IxGrid { + /** + * Overwrite the default number of columns. Choose between 2 and 12 columns. + */ + "columns": number; + /** + * Grid will be displayed without any padding + */ + "fixed": GridSizingBehavior; + /** + * Integrates the grid fluid into the page without padding to left and right + */ + "fluid": boolean; + } interface IxGroup { /** * Whether the group is collapsed or expanded. Defaults to true. @@ -1469,6 +1511,11 @@ export namespace Components { */ "variant": PushCardVariant; } + /** + * @since 2.0.0 + */ + interface IxRow { + } interface IxSelect { /** * Show clear button @@ -2304,6 +2351,15 @@ declare global { prototype: HTMLIxChipElement; new (): HTMLIxChipElement; }; + /** + * @since 2.0.0 + */ + interface HTMLIxColElement extends Components.IxCol, HTMLStencilElement { + } + var HTMLIxColElement: { + prototype: HTMLIxColElement; + new (): HTMLIxColElement; + }; interface HTMLIxContentHeaderElement extends Components.IxContentHeader, HTMLStencilElement { } var HTMLIxContentHeaderElement: { @@ -2439,6 +2495,15 @@ declare global { prototype: HTMLIxFlipTileContentElement; new (): HTMLIxFlipTileContentElement; }; + /** + * @since 2.0.0 + */ + interface HTMLIxGridElement extends Components.IxGrid, HTMLStencilElement { + } + var HTMLIxGridElement: { + prototype: HTMLIxGridElement; + new (): HTMLIxGridElement; + }; interface HTMLIxGroupElement extends Components.IxGroup, HTMLStencilElement { } var HTMLIxGroupElement: { @@ -2661,6 +2726,15 @@ declare global { prototype: HTMLIxPushCardElement; new (): HTMLIxPushCardElement; }; + /** + * @since 2.0.0 + */ + interface HTMLIxRowElement extends Components.IxRow, HTMLStencilElement { + } + var HTMLIxRowElement: { + prototype: HTMLIxRowElement; + new (): HTMLIxRowElement; + }; interface HTMLIxSelectElement extends Components.IxSelect, HTMLStencilElement { } var HTMLIxSelectElement: { @@ -2819,6 +2893,7 @@ declare global { "ix-card-title": HTMLIxCardTitleElement; "ix-category-filter": HTMLIxCategoryFilterElement; "ix-chip": HTMLIxChipElement; + "ix-col": HTMLIxColElement; "ix-content-header": HTMLIxContentHeaderElement; "ix-css-grid": HTMLIxCssGridElement; "ix-css-grid-item": HTMLIxCssGridItemElement; @@ -2839,6 +2914,7 @@ declare global { "ix-filter-chip": HTMLIxFilterChipElement; "ix-flip-tile": HTMLIxFlipTileElement; "ix-flip-tile-content": HTMLIxFlipTileContentElement; + "ix-grid": HTMLIxGridElement; "ix-group": HTMLIxGroupElement; "ix-group-context-menu": HTMLIxGroupContextMenuElement; "ix-group-item": HTMLIxGroupItemElement; @@ -2871,6 +2947,7 @@ declare global { "ix-pagination": HTMLIxPaginationElement; "ix-pill": HTMLIxPillElement; "ix-push-card": HTMLIxPushCardElement; + "ix-row": HTMLIxRowElement; "ix-select": HTMLIxSelectElement; "ix-select-item": HTMLIxSelectItemElement; "ix-spinner": HTMLIxSpinnerElement; @@ -3247,6 +3324,27 @@ declare namespace LocalJSX { | 'success' | 'custom'; } + /** + * @since 2.0.0 + */ + interface IxCol { + /** + * Size of the column + */ + "size"?: ColumnSize; + /** + * Size of the column for lg screens + */ + "sizeLg"?: ColumnSize; + /** + * Size of the column for md screens + */ + "sizeMd"?: ColumnSize; + /** + * Size of the column for sm screens + */ + "sizeSm"?: ColumnSize; + } interface IxContentHeader { /** * Display a back button @@ -3755,6 +3853,23 @@ declare namespace LocalJSX { */ "contentVisible"?: boolean; } + /** + * @since 2.0.0 + */ + interface IxGrid { + /** + * Overwrite the default number of columns. Choose between 2 and 12 columns. + */ + "columns"?: number; + /** + * Grid will be displayed without any padding + */ + "fixed"?: GridSizingBehavior; + /** + * Integrates the grid fluid into the page without padding to left and right + */ + "fluid"?: boolean; + } interface IxGroup { /** * Whether the group is collapsed or expanded. Defaults to true. @@ -4445,6 +4560,11 @@ declare namespace LocalJSX { */ "variant"?: PushCardVariant; } + /** + * @since 2.0.0 + */ + interface IxRow { + } interface IxSelect { /** * Show clear button @@ -5062,6 +5182,7 @@ declare namespace LocalJSX { "ix-card-title": IxCardTitle; "ix-category-filter": IxCategoryFilter; "ix-chip": IxChip; + "ix-col": IxCol; "ix-content-header": IxContentHeader; "ix-css-grid": IxCssGrid; "ix-css-grid-item": IxCssGridItem; @@ -5082,6 +5203,7 @@ declare namespace LocalJSX { "ix-filter-chip": IxFilterChip; "ix-flip-tile": IxFlipTile; "ix-flip-tile-content": IxFlipTileContent; + "ix-grid": IxGrid; "ix-group": IxGroup; "ix-group-context-menu": IxGroupContextMenu; "ix-group-item": IxGroupItem; @@ -5114,6 +5236,7 @@ declare namespace LocalJSX { "ix-pagination": IxPagination; "ix-pill": IxPill; "ix-push-card": IxPushCard; + "ix-row": IxRow; "ix-select": IxSelect; "ix-select-item": IxSelectItem; "ix-spinner": IxSpinner; @@ -5179,6 +5302,10 @@ declare module "@stencil/core" { "ix-card-title": LocalJSX.IxCardTitle & JSXBase.HTMLAttributes; "ix-category-filter": LocalJSX.IxCategoryFilter & JSXBase.HTMLAttributes; "ix-chip": LocalJSX.IxChip & JSXBase.HTMLAttributes; + /** + * @since 2.0.0 + */ + "ix-col": LocalJSX.IxCol & JSXBase.HTMLAttributes; "ix-content-header": LocalJSX.IxContentHeader & JSXBase.HTMLAttributes; "ix-css-grid": LocalJSX.IxCssGrid & JSXBase.HTMLAttributes; "ix-css-grid-item": LocalJSX.IxCssGridItem & JSXBase.HTMLAttributes; @@ -5214,6 +5341,10 @@ declare module "@stencil/core" { "ix-filter-chip": LocalJSX.IxFilterChip & JSXBase.HTMLAttributes; "ix-flip-tile": LocalJSX.IxFlipTile & JSXBase.HTMLAttributes; "ix-flip-tile-content": LocalJSX.IxFlipTileContent & JSXBase.HTMLAttributes; + /** + * @since 2.0.0 + */ + "ix-grid": LocalJSX.IxGrid & JSXBase.HTMLAttributes; "ix-group": LocalJSX.IxGroup & JSXBase.HTMLAttributes; "ix-group-context-menu": LocalJSX.IxGroupContextMenu & JSXBase.HTMLAttributes; "ix-group-item": LocalJSX.IxGroupItem & JSXBase.HTMLAttributes; @@ -5276,6 +5407,10 @@ declare module "@stencil/core" { * @since 1.6.0 */ "ix-push-card": LocalJSX.IxPushCard & JSXBase.HTMLAttributes; + /** + * @since 2.0.0 + */ + "ix-row": LocalJSX.IxRow & JSXBase.HTMLAttributes; "ix-select": LocalJSX.IxSelect & JSXBase.HTMLAttributes; "ix-select-item": LocalJSX.IxSelectItem & JSXBase.HTMLAttributes; "ix-spinner": LocalJSX.IxSpinner & JSXBase.HTMLAttributes; diff --git a/packages/core/src/components/col/col.scss b/packages/core/src/components/col/col.scss new file mode 100644 index 00000000000..bb4d6d47b60 --- /dev/null +++ b/packages/core/src/components/col/col.scss @@ -0,0 +1,24 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +:host { + box-sizing: border-box; + + position: relative; + + flex-basis: 0; + flex-grow: 1; + + width: 100%; + max-width: 100%; + min-height: 1px; + + padding-left: calc(var(--ix-grid-gutter) * 0.5); + padding-right: calc(var(--ix-grid-gutter) * 0.5); +} diff --git a/packages/core/src/components/col/col.tsx b/packages/core/src/components/col/col.tsx new file mode 100644 index 00000000000..bf7359bd6d8 --- /dev/null +++ b/packages/core/src/components/col/col.tsx @@ -0,0 +1,153 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import { Component, forceUpdate, h, Host, Listen, Prop } from '@stencil/core'; + +const screenSizes = { + sm: '(min-width: 576px)', + md: '(min-width: 768px)', + lg: '(min-width: 992px)', +} as const; + +type ScreenSize = keyof typeof screenSizes; +type GridBreakpoint = ScreenSize | ''; + +const matchBreakpoint = (breakpoint: ScreenSize) => { + if ((window as any).matchMedia) { + const mediaQuery = screenSizes[breakpoint]; + return window.matchMedia(mediaQuery).matches; + } + return false; +}; + +export type ColumnSize = + | '1' + | '2' + | '3' + | '4' + | '5' + | '6' + | '7' + | '8' + | '9' + | '10' + | '11' + | '12' + | 'auto'; + +/** + * @since 2.0.0 + */ +@Component({ + tag: 'ix-col', + styleUrl: 'col.scss', + shadow: true, +}) +export class Col { + static Breakpoints: GridBreakpoint[] = ['', 'sm', 'md', 'lg']; + + /** + * Size of the column + */ + @Prop() size?: ColumnSize; + + /** + * Size of the column for sm screens + */ + @Prop() sizeSm?: ColumnSize; + + /** + * Size of the column for md screens + */ + @Prop() sizeMd?: ColumnSize; + + /** + * Size of the column for lg screens + */ + @Prop() sizeLg?: ColumnSize; + + @Listen('resize', { target: 'window' }) + onResize() { + forceUpdate(this); + } + + private getSize(breakpoint: GridBreakpoint) { + if (breakpoint === '') { + return this.size; + } + + if (breakpoint === 'sm') { + return this.sizeSm; + } + + if (breakpoint === 'md') { + return this.sizeMd; + } + + if (breakpoint === 'lg') { + return this.sizeLg; + } + } + + private getColumnSize() { + let size: ColumnSize; + Col.Breakpoints.forEach((breakpoint) => { + const isMediaQueryActive = + breakpoint !== '' ? matchBreakpoint(breakpoint) : true; + + if (!isMediaQueryActive) { + return; + } + + const currentSize = this.getSize(breakpoint); + + if (currentSize) { + size = currentSize; + } + }); + + return size; + } + + private getColumnSizeStyling() { + const size = this.getColumnSize(); + + if (!size) { + return; + } + + if (size === 'auto') { + return { + flex: '0 0 auto', + width: 'auto', + 'max-width': 'auto', + }; + } + + const colSize = `calc(calc(${size} / var(--ix-grid-columns)) * 100%)`; + + return { + flex: `0 0 ${colSize}`, + width: `${colSize}`, + 'max-width': `${colSize}`, + }; + } + + render() { + return ( + + + + ); + } +} diff --git a/packages/core/src/components/layout/css-grid/builder.ts b/packages/core/src/components/css-grid/builder.ts similarity index 100% rename from packages/core/src/components/layout/css-grid/builder.ts rename to packages/core/src/components/css-grid/builder.ts diff --git a/packages/core/src/components/layout/css-grid/css-grid-item.scss b/packages/core/src/components/css-grid/css-grid-item.scss similarity index 100% rename from packages/core/src/components/layout/css-grid/css-grid-item.scss rename to packages/core/src/components/css-grid/css-grid-item.scss diff --git a/packages/core/src/components/layout/css-grid/css-grid-item.tsx b/packages/core/src/components/css-grid/css-grid-item.tsx similarity index 100% rename from packages/core/src/components/layout/css-grid/css-grid-item.tsx rename to packages/core/src/components/css-grid/css-grid-item.tsx diff --git a/packages/core/src/components/layout/css-grid/css-grid.scss b/packages/core/src/components/css-grid/css-grid.scss similarity index 100% rename from packages/core/src/components/layout/css-grid/css-grid.scss rename to packages/core/src/components/css-grid/css-grid.scss diff --git a/packages/core/src/components/layout/css-grid/css-grid.tsx b/packages/core/src/components/css-grid/css-grid.tsx similarity index 100% rename from packages/core/src/components/layout/css-grid/css-grid.tsx rename to packages/core/src/components/css-grid/css-grid.tsx diff --git a/packages/core/src/components/grid/grid.mixins.scss b/packages/core/src/components/grid/grid.mixins.scss new file mode 100644 index 00000000000..f77351930c4 --- /dev/null +++ b/packages/core/src/components/grid/grid.mixins.scss @@ -0,0 +1,19 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +@import 'mixins/break-points'; + +@mixin make-grid-widths($breakpoints: $screen-breakpoints) { + @each $breakpoint, $width in $widths { + @include media-breakpoint-up($breakpoint, $breakpoints) { + width: $width; + } + } + + max-width: 100%; +} diff --git a/packages/core/src/components/grid/grid.scss b/packages/core/src/components/grid/grid.scss new file mode 100644 index 00000000000..8565ed9f3b1 --- /dev/null +++ b/packages/core/src/components/grid/grid.scss @@ -0,0 +1,38 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +@import './grid.mixins'; + +:host { + --ix-grid-gutter: 1.5rem; + + display: block; + flex: 1; + width: 100%; + + padding-left: calc(var(--ix-grid-gutter) * 0.5); + padding-right: calc(var(--ix-grid-gutter) * 0.5); +} + +:host(.fluid) { + padding-left: 0; + padding-right: 0; +} + +:host(.fixed-sm) { + max-width: 33.75rem; +} + +:host(.fixed-md), +:host(.fixed) { + max-width: 45rem; +} + +:host(.fixed-lg) { + max-width: 60rem; +} diff --git a/packages/core/src/components/grid/grid.tsx b/packages/core/src/components/grid/grid.tsx new file mode 100644 index 00000000000..e4ad91c9537 --- /dev/null +++ b/packages/core/src/components/grid/grid.tsx @@ -0,0 +1,67 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import { Component, h, Host, Prop } from '@stencil/core'; + +export type GridSizingBehavior = + | boolean + | 'fixed' + | 'fixed-sm' + | 'fixed-md' + | 'fixed-lg'; + +/** + * @since 2.0.0 + */ +@Component({ + tag: 'ix-grid', + styleUrl: 'grid.scss', + shadow: true, +}) +export class Grid { + /** + * Grid will be displayed without any padding + */ + @Prop() fixed: GridSizingBehavior = false; + + /** + * Integrates the grid fluid into the page without padding to left and right + */ + @Prop() fluid = false; + + /** + * Overwrite the default number of columns. Choose between 2 and 12 columns. + */ + @Prop() columns = 12; + + render() { + const classRecord = {}; + if (this.fixed && typeof this.fixed === 'boolean') { + classRecord['fixed'] = true; + } + + if (this.fixed && typeof this.fixed === 'string') { + classRecord[`${this.fixed}`] = true; + } + + return ( + + + + ); + } +} diff --git a/packages/core/src/components/my-component/my-component.scss b/packages/core/src/components/my-component/my-component.scss index aed331baba7..8f2f0d22bbe 100644 --- a/packages/core/src/components/my-component/my-component.scss +++ b/packages/core/src/components/my-component/my-component.scss @@ -10,9 +10,11 @@ @import 'common-variables'; :host { - display: block; - position: relative; - width: 100vw; - height: 100vh; - padding: 0rem 0rem 0rem 0rem; +} + +ix-col { + background-color: #135d54; + border: solid 1px #fff; + color: #fff; + text-align: center; } diff --git a/packages/core/src/components/my-component/my-component.tsx b/packages/core/src/components/my-component/my-component.tsx index bb9bd7073c5..500eecd1001 100644 --- a/packages/core/src/components/my-component/my-component.tsx +++ b/packages/core/src/components/my-component/my-component.tsx @@ -15,6 +15,60 @@ import { Component, h, Host } from '@stencil/core'; }) export class MyComponent { render() { - return ; + return ( + + Test + + + 1 + 2 + + Test + + 4 + 5 + + + + + + 1 + 2 + + Test + + 4 + 5 + + + + + + 1 + 2 + + Test + + 4 + 5 + + + + + + 1 + 2 + + Test + + 4 + 5 + + +
Container
+
Container fluid/Md
+
Container fluid
+
+ ); } } diff --git a/packages/core/src/components/row/row.scss b/packages/core/src/components/row/row.scss new file mode 100644 index 00000000000..7f2b473a2f2 --- /dev/null +++ b/packages/core/src/components/row/row.scss @@ -0,0 +1,13 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +:host { + display: flex; + flex-wrap: wrap; +} diff --git a/packages/core/src/components/row/row.tsx b/packages/core/src/components/row/row.tsx new file mode 100644 index 00000000000..f2ae61977c8 --- /dev/null +++ b/packages/core/src/components/row/row.tsx @@ -0,0 +1,28 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import { Component, h, Host } from '@stencil/core'; + +/** + * @since 2.0.0 + */ +@Component({ + tag: 'ix-row', + styleUrl: 'row.scss', + shadow: true, +}) +export class Row { + render() { + return ( + + + + ); + } +} diff --git a/packages/core/src/index.html b/packages/core/src/index.html index f74e053ed4c..10eef345d1e 100644 --- a/packages/core/src/index.html +++ b/packages/core/src/index.html @@ -29,7 +29,7 @@ - + diff --git a/packages/react/src/components.ts b/packages/react/src/components.ts index bb95748f1fa..4afe95d579d 100644 --- a/packages/react/src/components.ts +++ b/packages/react/src/components.ts @@ -23,6 +23,7 @@ export const IxCardList = /*@__PURE__*/createReactComponent('ix-card-title'); export const IxCategoryFilter = /*@__PURE__*/createReactComponent('ix-category-filter'); export const IxChip = /*@__PURE__*/createReactComponent('ix-chip'); +export const IxCol = /*@__PURE__*/createReactComponent('ix-col'); export const IxContentHeader = /*@__PURE__*/createReactComponent('ix-content-header'); export const IxDatePicker = /*@__PURE__*/createReactComponent('ix-date-picker'); export const IxDatetimePicker = /*@__PURE__*/createReactComponent('ix-datetime-picker'); @@ -40,6 +41,7 @@ export const IxExpandingSearch = /*@__PURE__*/createReactComponent('ix-filter-chip'); export const IxFlipTile = /*@__PURE__*/createReactComponent('ix-flip-tile'); export const IxFlipTileContent = /*@__PURE__*/createReactComponent('ix-flip-tile-content'); +export const IxGrid = /*@__PURE__*/createReactComponent('ix-grid'); export const IxGroup = /*@__PURE__*/createReactComponent('ix-group'); export const IxGroupContextMenu = /*@__PURE__*/createReactComponent('ix-group-context-menu'); export const IxGroupItem = /*@__PURE__*/createReactComponent('ix-group-item'); @@ -72,6 +74,7 @@ export const IxModalHeader = /*@__PURE__*/createReactComponent('ix-pagination'); export const IxPill = /*@__PURE__*/createReactComponent('ix-pill'); export const IxPushCard = /*@__PURE__*/createReactComponent('ix-push-card'); +export const IxRow = /*@__PURE__*/createReactComponent('ix-row'); export const IxSelect = /*@__PURE__*/createReactComponent('ix-select'); export const IxSelectItem = /*@__PURE__*/createReactComponent('ix-select-item'); export const IxSpinner = /*@__PURE__*/createReactComponent('ix-spinner'); diff --git a/packages/vue/src/components.ts b/packages/vue/src/components.ts index 682131a2c2c..552c70bfdb3 100644 --- a/packages/vue/src/components.ts +++ b/packages/vue/src/components.ts @@ -140,6 +140,14 @@ export const IxChip = /*@__PURE__*/ defineContainer('ix-chip', undef ]); +export const IxCol = /*@__PURE__*/ defineContainer('ix-col', undefined, [ + 'size', + 'sizeSm', + 'sizeMd', + 'sizeLg' +]); + + export const IxContentHeader = /*@__PURE__*/ defineContainer('ix-content-header', undefined, [ 'variant', 'headerTitle', @@ -308,6 +316,13 @@ export const IxFlipTileContent = /*@__PURE__*/ defineContainer('ix-grid', undefined, [ + 'fixed', + 'fluid', + 'columns' +]); + + export const IxGroup = /*@__PURE__*/ defineContainer('ix-group', undefined, [ 'suppressHeaderSelection', 'header', @@ -588,6 +603,9 @@ export const IxPushCard = /*@__PURE__*/ defineContainer('ix-push ]); +export const IxRow = /*@__PURE__*/ defineContainer('ix-row', undefined); + + export const IxSelect = /*@__PURE__*/ defineContainer('ix-select', undefined, [ 'selectedIndices', 'allowClear', From 18a8a07395babc7c3445a7f96c23d514dea2e6e3 Mon Sep 17 00:00:00 2001 From: Daniel Leroux Date: Wed, 23 Aug 2023 09:51:05 +0200 Subject: [PATCH 02/31] test: add snapshot tests --- .../components/my-component/my-component.scss | 12 +- .../components/my-component/my-component.tsx | 56 +------- packages/core/src/tests/grid/grid.e2e.ts | 121 ++++++++++++++++++ ...-1-chromium---theme-classic-dark-linux.png | Bin 0 -> 22880 bytes ...1-chromium---theme-classic-light-linux.png | Bin 0 -> 23406 bytes 5 files changed, 127 insertions(+), 62 deletions(-) create mode 100644 packages/core/src/tests/grid/grid.e2e.ts create mode 100644 packages/core/src/tests/grid/grid.e2e.ts-snapshots/should-not-have-regression-1-chromium---theme-classic-dark-linux.png create mode 100644 packages/core/src/tests/grid/grid.e2e.ts-snapshots/should-not-have-regression-1-chromium---theme-classic-light-linux.png diff --git a/packages/core/src/components/my-component/my-component.scss b/packages/core/src/components/my-component/my-component.scss index 8f2f0d22bbe..aed331baba7 100644 --- a/packages/core/src/components/my-component/my-component.scss +++ b/packages/core/src/components/my-component/my-component.scss @@ -10,11 +10,9 @@ @import 'common-variables'; :host { -} - -ix-col { - background-color: #135d54; - border: solid 1px #fff; - color: #fff; - text-align: center; + display: block; + position: relative; + width: 100vw; + height: 100vh; + padding: 0rem 0rem 0rem 0rem; } diff --git a/packages/core/src/components/my-component/my-component.tsx b/packages/core/src/components/my-component/my-component.tsx index 500eecd1001..bb9bd7073c5 100644 --- a/packages/core/src/components/my-component/my-component.tsx +++ b/packages/core/src/components/my-component/my-component.tsx @@ -15,60 +15,6 @@ import { Component, h, Host } from '@stencil/core'; }) export class MyComponent { render() { - return ( - - Test - - - 1 - 2 - - Test - - 4 - 5 - - - - - - 1 - 2 - - Test - - 4 - 5 - - - - - - 1 - 2 - - Test - - 4 - 5 - - - - - - 1 - 2 - - Test - - 4 - 5 - - -
Container
-
Container fluid/Md
-
Container fluid
-
- ); + return ; } } diff --git a/packages/core/src/tests/grid/grid.e2e.ts b/packages/core/src/tests/grid/grid.e2e.ts new file mode 100644 index 00000000000..1375e459de1 --- /dev/null +++ b/packages/core/src/tests/grid/grid.e2e.ts @@ -0,0 +1,121 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * 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 { test } from '@utils/test'; + +test('should not have regression', async ({ mount, page }) => { + await page.setViewportSize({ + height: 720, + width: 1280, + }); + await mount(htmlSource); + const grid = page.locator('ix-grid').nth(0); + await expect(grid).toHaveClass(/hydrated/); + + expect(await page.screenshot({ fullPage: true })).toMatchSnapshot(); +}); + +const htmlSource = ` +

Column = 4

+ + + 1 + 2 + + Test + + 4 + 5 + + + +

Normal

+ + + 1 + 2 + + Test + + 4 + 5 + + + +

Fluid

+ + + 1 + 2 + + Test + + 4 + 5 + + + +

Fixed

+ + + 1 + 2 + + Test + + 4 + 5 + + + +

Fixed all sizes

+ + + 1 + 2 + + Test + + 4 + 5 + + + + + + 1 + 2 + + Test + + 4 + 5 + + + + + + 1 + 2 + + Test + + 4 + 5 + + + +`; diff --git a/packages/core/src/tests/grid/grid.e2e.ts-snapshots/should-not-have-regression-1-chromium---theme-classic-dark-linux.png b/packages/core/src/tests/grid/grid.e2e.ts-snapshots/should-not-have-regression-1-chromium---theme-classic-dark-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..50cbf8b7cbefab27fccefa5c3576f206bbae51fe GIT binary patch literal 22880 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 literal 0 HcmV?d00001 diff --git a/packages/core/src/tests/grid/grid.e2e.ts-snapshots/should-not-have-regression-1-chromium---theme-classic-light-linux.png b/packages/core/src/tests/grid/grid.e2e.ts-snapshots/should-not-have-regression-1-chromium---theme-classic-light-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..c6a59c33035b41ccdc40f8dfd905bb3ef9c16396 GIT binary patch literal 23406 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 literal 0 HcmV?d00001 From 5fc0e06843b0d437b2e3d0831edb124d2149485f Mon Sep 17 00:00:00 2001 From: Daniel Leroux Date: Wed, 23 Aug 2023 11:37:49 +0200 Subject: [PATCH 03/31] docs: add --- packages/core/component-doc.json | 56 +++----------- packages/core/src/components/grid/grid.tsx | 5 +- packages/documentation/docs/controls/grid.md | 74 +++++++++++++++++++ .../src/preview-examples/grid-fixed.html | 73 ++++++++++++++++++ .../src/preview-examples/grid-fluid.html | 70 ++++++++++++++++++ .../src/preview-examples/grid-size.html | 47 ++++++++++++ .../src/preview-examples/grid.html | 53 +++++++++++++ .../src/preview-examples/init.js | 42 +++++++++++ 8 files changed, 372 insertions(+), 48 deletions(-) create mode 100644 packages/documentation/docs/controls/grid.md create mode 100644 packages/html-test-app/src/preview-examples/grid-fixed.html create mode 100644 packages/html-test-app/src/preview-examples/grid-fluid.html create mode 100644 packages/html-test-app/src/preview-examples/grid-size.html create mode 100644 packages/html-test-app/src/preview-examples/grid.html diff --git a/packages/core/component-doc.json b/packages/core/component-doc.json index 32d51ab8d61..982551549c1 100644 --- a/packages/core/component-doc.json +++ b/packages/core/component-doc.json @@ -682,8 +682,7 @@ "ix-modal-example", "ix-split-button", "ix-time-picker", - "ix-upload", - "my-component" + "ix-upload" ], "dependencies": [ "ix-spinner", @@ -723,9 +722,6 @@ ], "ix-upload": [ "ix-button" - ], - "my-component": [ - "ix-button" ] }, "props": [ @@ -1765,15 +1761,9 @@ } ], "encapsulation": "shadow", - "dependents": [ - "my-component" - ], + "dependents": [], "dependencies": [], - "dependencyGraph": { - "my-component": [ - "ix-col" - ] - }, + "dependencyGraph": {}, "props": [ { "name": "size", @@ -4596,15 +4586,9 @@ } ], "encapsulation": "shadow", - "dependents": [ - "my-component" - ], + "dependents": [], "dependencies": [], - "dependencyGraph": { - "my-component": [ - "ix-grid" - ] - }, + "dependencyGraph": {}, "props": [ { "name": "columns", @@ -8750,15 +8734,9 @@ } ], "encapsulation": "shadow", - "dependents": [ - "my-component" - ], + "dependents": [], "dependencies": [], - "dependencyGraph": { - "my-component": [ - "ix-row" - ] - }, + "dependencyGraph": {}, "props": [], "methods": [], "events": [], @@ -12064,24 +12042,8 @@ "docsTags": [], "encapsulation": "scoped", "dependents": [], - "dependencies": [ - "ix-button", - "ix-grid", - "ix-row", - "ix-col" - ], - "dependencyGraph": { - "my-component": [ - "ix-button", - "ix-grid", - "ix-row", - "ix-col" - ], - "ix-button": [ - "ix-spinner", - "ix-icon" - ] - }, + "dependencies": [], + "dependencyGraph": {}, "props": [], "methods": [], "events": [], diff --git a/packages/core/src/components/grid/grid.tsx b/packages/core/src/components/grid/grid.tsx index e4ad91c9537..2c16248c46a 100644 --- a/packages/core/src/components/grid/grid.tsx +++ b/packages/core/src/components/grid/grid.tsx @@ -42,7 +42,10 @@ export class Grid { render() { const classRecord = {}; - if (this.fixed && typeof this.fixed === 'boolean') { + if ( + (this.fixed as string) === '' || + (typeof this.fixed === 'boolean' && this.fixed) + ) { classRecord['fixed'] = true; } diff --git a/packages/documentation/docs/controls/grid.md b/packages/documentation/docs/controls/grid.md new file mode 100644 index 00000000000..8d02768fbca --- /dev/null +++ b/packages/documentation/docs/controls/grid.md @@ -0,0 +1,74 @@ +import Playground from '@site/src/components/Playground'; +import Props from './../auto-generated/ix-grid/props.md'; +import Events from './../auto-generated/ix-grid/events.md'; + +import ColProps from './../auto-generated/ix-col/props.md'; +import ColEvents from './../auto-generated/ix-col/events.md'; + + +import SourceGrid from './../auto-generated/previews/web-component/grid.md' +import SourceGridSize from './../auto-generated/previews/web-component/grid-size.md' +import SourceGridFluid from './../auto-generated/previews/web-component/grid-fluid.md' +import SourceGridFixed from './../auto-generated/previews/web-component/grid-fixed.md' + +# Grid + +## Usage + + + + +### Size + + + + +### Fixed + + + + +### Fluid + + + + +## Properties (ix-grid) + +### Props + + + +### Events + + + +## Properties (ix-col) + +### Props + + + +### Events + + diff --git a/packages/html-test-app/src/preview-examples/grid-fixed.html b/packages/html-test-app/src/preview-examples/grid-fixed.html new file mode 100644 index 00000000000..60d226679b8 --- /dev/null +++ b/packages/html-test-app/src/preview-examples/grid-fixed.html @@ -0,0 +1,73 @@ + + + + + + +
fixed: sm
+ + + 1 + 2 + 3 + 4 + 5 + 6 + + + +
fixed
+ + + 1 + 2 + 3 + 4 + 5 + 6 + + + +
fixed: md
+ + + 1 + 2 + 3 + 4 + 5 + 6 + + + +
fixed: lg
+ + + 1 + 2 + 3 + 4 + 5 + 6 + + + + + + + diff --git a/packages/html-test-app/src/preview-examples/grid-fluid.html b/packages/html-test-app/src/preview-examples/grid-fluid.html new file mode 100644 index 00000000000..fa2b0f5ccb1 --- /dev/null +++ b/packages/html-test-app/src/preview-examples/grid-fluid.html @@ -0,0 +1,70 @@ + + + + + + +
+

None fluid (default)

+ + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + +

fluid

+ + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + +
+ + + + + + diff --git a/packages/html-test-app/src/preview-examples/grid-size.html b/packages/html-test-app/src/preview-examples/grid-size.html new file mode 100644 index 00000000000..07f38a0a0a2 --- /dev/null +++ b/packages/html-test-app/src/preview-examples/grid-size.html @@ -0,0 +1,47 @@ + + + + + + +

Column 6 takes all space until reached column 12

+ + + 1 + 2 + 3 + 4 + 5 + 6 + + + +

Stack on smaller screens as md

+ + + 1 + 2 + 3 + 4 + + + + + + + diff --git a/packages/html-test-app/src/preview-examples/grid.html b/packages/html-test-app/src/preview-examples/grid.html new file mode 100644 index 00000000000..508f88d6760 --- /dev/null +++ b/packages/html-test-app/src/preview-examples/grid.html @@ -0,0 +1,53 @@ + + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + diff --git a/packages/html-test-app/src/preview-examples/init.js b/packages/html-test-app/src/preview-examples/init.js index 38010a7ae13..74a35ab203e 100644 --- a/packages/html-test-app/src/preview-examples/init.js +++ b/packages/html-test-app/src/preview-examples/init.js @@ -85,4 +85,46 @@ function setBodySizes() { setBodySizes(); addMarginToDemo(); loadAdditionalTheme(); + + const header = document.head; + const scrollbarStyle = document.createElement('style'); + scrollbarStyle.innerHTML = scrollbarOverwrite; + header.appendChild(scrollbarStyle); })(); + +const scrollbarOverwrite = ` + ::-webkit-scrollbar-button { + display: none; + } + + /* width */ + ::-webkit-scrollbar { + width: $small-space; + height: $small-space; + } + + /* Track */ + ::-webkit-scrollbar-track { + border-radius: 5px; + background: var(--theme-scrollbar-track--background); + } + + ::-webkit-scrollbar-track:hover { + background: var(--theme-scrollbar-track--background--hover); + } + + /* Handle */ + ::-webkit-scrollbar-thumb { + border-radius: 5px; + background: var(--theme-scrollbar-thumb--background); + } + + /* Handle on hover */ + ::-webkit-scrollbar-thumb:hover { + background: var(--theme-scrollbar-thumb--background--hover); + } + + ::-webkit-scrollbar-corner { + display: none; + } +`; From c0e92c89f79e03a42d47024cf9489556b2a01e3e Mon Sep 17 00:00:00 2001 From: Daniel Leroux Date: Wed, 23 Aug 2023 12:28:27 +0200 Subject: [PATCH 04/31] docs: add react examples --- packages/react-test-app/src/main.tsx | 8 +++ .../src/preview-examples/grid-fixed.tsx | 67 +++++++++++++++++++ .../src/preview-examples/grid-fluid.tsx | 55 +++++++++++++++ .../src/preview-examples/grid-size.tsx | 49 ++++++++++++++ .../src/preview-examples/grid.css | 16 +++++ .../src/preview-examples/grid.tsx | 47 +++++++++++++ 6 files changed, 242 insertions(+) create mode 100644 packages/react-test-app/src/preview-examples/grid-fixed.tsx create mode 100644 packages/react-test-app/src/preview-examples/grid-fluid.tsx create mode 100644 packages/react-test-app/src/preview-examples/grid-size.tsx create mode 100644 packages/react-test-app/src/preview-examples/grid.css create mode 100644 packages/react-test-app/src/preview-examples/grid.tsx diff --git a/packages/react-test-app/src/main.tsx b/packages/react-test-app/src/main.tsx index dbff5873821..4735756973c 100644 --- a/packages/react-test-app/src/main.tsx +++ b/packages/react-test-app/src/main.tsx @@ -49,6 +49,10 @@ import EventListCustomHeight from './preview-examples/event-list-custom-item-hei import EventListSelected from './preview-examples/event-list-selected'; import ExpandingSearch from './preview-examples/expanding-search'; import FlipTile from './preview-examples/flip-tile'; +import Grid from './preview-examples/grid'; +import GridFixed from './preview-examples/grid-fixed'; +import GridFluid from './preview-examples/grid-fluid'; +import GridSize from './preview-examples/grid-size'; import Group from './preview-examples/group'; import GroupContextMenu from './preview-examples/group-context-menu'; import GroupCustomEntry from './preview-examples/group-custom-entry'; @@ -267,6 +271,10 @@ ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( } /> } /> + } /> + } /> + } /> + } /> diff --git a/packages/react-test-app/src/preview-examples/grid-fixed.tsx b/packages/react-test-app/src/preview-examples/grid-fixed.tsx new file mode 100644 index 00000000000..a455dad8eb8 --- /dev/null +++ b/packages/react-test-app/src/preview-examples/grid-fixed.tsx @@ -0,0 +1,67 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import { IxCol, IxGrid, IxRow } from '@siemens/ix-react'; +import React from 'react'; +// Example styling for documentation +import './grid.css'; + +export default () => { + return ( + <> +
fixed: sm
+ + + 1 + 2 + 3 + 4 + 5 + 6 + + + +
fixed
+ + + 1 + 2 + 3 + 4 + 5 + 6 + + + +
fixed: md
+ + + 1 + 2 + 3 + 4 + 5 + 6 + + + +
fixed: lg
+ + + 1 + 2 + 3 + 4 + 5 + 6 + + + + ); +}; diff --git a/packages/react-test-app/src/preview-examples/grid-fluid.tsx b/packages/react-test-app/src/preview-examples/grid-fluid.tsx new file mode 100644 index 00000000000..e687d542dfd --- /dev/null +++ b/packages/react-test-app/src/preview-examples/grid-fluid.tsx @@ -0,0 +1,55 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import { IxCol, IxGrid, IxRow } from '@siemens/ix-react'; +import React from 'react'; +// Example styling for documentation +import './grid.css'; + +export default () => { + return ( +
+

None fluid (default)

+ + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + +

fluid

+ + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + +
+ ); +}; diff --git a/packages/react-test-app/src/preview-examples/grid-size.tsx b/packages/react-test-app/src/preview-examples/grid-size.tsx new file mode 100644 index 00000000000..4d42f6419bd --- /dev/null +++ b/packages/react-test-app/src/preview-examples/grid-size.tsx @@ -0,0 +1,49 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import { IxCol, IxGrid, IxRow } from '@siemens/ix-react'; +import React from 'react'; +// Example styling for documentation +import './grid.css'; + +export default () => { + return ( + <> +

Column 6 takes all space until reached column 12

+ + + 1 + 2 + 3 + 4 + 5 + 6 + + + +

Stack on smaller screens as md

+ + + + 1 + + + 2 + + + 3 + + + 4 + + + + + ); +}; diff --git a/packages/react-test-app/src/preview-examples/grid.css b/packages/react-test-app/src/preview-examples/grid.css new file mode 100644 index 00000000000..970d2825136 --- /dev/null +++ b/packages/react-test-app/src/preview-examples/grid.css @@ -0,0 +1,16 @@ +ix-grid { + margin-bottom: 1rem; +} + +ix-col { + background-color: var(--theme-color-primary); + border: var(--theme-std-bdr-2); + text-align: center; + color: var(--theme-color-inv-contrast-text); +} + +.example-parent { + padding-top: 1rem; + padding-bottom: 0.25rem; + background-color: var(--theme-color-info-40); +} diff --git a/packages/react-test-app/src/preview-examples/grid.tsx b/packages/react-test-app/src/preview-examples/grid.tsx new file mode 100644 index 00000000000..6a85192523c --- /dev/null +++ b/packages/react-test-app/src/preview-examples/grid.tsx @@ -0,0 +1,47 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import { IxCol, IxGrid, IxRow } from '@siemens/ix-react'; +import React from 'react'; +// Example styling for documentation +import './grid.css'; + +export default () => { + return ( + <> + + + 1 + 2 + 3 + 4 + 5 + 6 + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + ); +}; From 9cea4b3ba76f214fda0226b363ed8ac16d2d7310 Mon Sep 17 00:00:00 2001 From: Daniel Leroux Date: Wed, 23 Aug 2023 12:42:55 +0200 Subject: [PATCH 05/31] docs: add vue-examples add angular-examples --- .../src/app/app-routing.module.ts | 8 +++ .../angular-test-app/src/app/app.module.ts | 8 +++ .../src/preview-examples/grid-fixed.html | 55 ++++++++++++++++ .../src/preview-examples/grid-fixed.ts | 36 ++++++++++ .../src/preview-examples/grid-fluid.html | 45 +++++++++++++ .../src/preview-examples/grid-fluid.ts | 36 ++++++++++ .../src/preview-examples/grid-size.html | 29 +++++++++ .../src/preview-examples/grid-size.ts | 36 ++++++++++ .../src/preview-examples/grid.html | 35 ++++++++++ .../src/preview-examples/grid.ts | 36 ++++++++++ packages/vue-test-app/src/Root.vue | 8 +++ .../src/preview-examples/grid-fixed.vue | 65 +++++++++++++++++++ .../src/preview-examples/grid-fluid.vue | 55 ++++++++++++++++ .../src/preview-examples/grid-size.vue | 47 ++++++++++++++ .../src/preview-examples/grid.css | 16 +++++ .../src/preview-examples/grid.vue | 45 +++++++++++++ 16 files changed, 560 insertions(+) create mode 100644 packages/angular-test-app/src/preview-examples/grid-fixed.html create mode 100644 packages/angular-test-app/src/preview-examples/grid-fixed.ts create mode 100644 packages/angular-test-app/src/preview-examples/grid-fluid.html create mode 100644 packages/angular-test-app/src/preview-examples/grid-fluid.ts create mode 100644 packages/angular-test-app/src/preview-examples/grid-size.html create mode 100644 packages/angular-test-app/src/preview-examples/grid-size.ts create mode 100644 packages/angular-test-app/src/preview-examples/grid.html create mode 100644 packages/angular-test-app/src/preview-examples/grid.ts create mode 100644 packages/vue-test-app/src/preview-examples/grid-fixed.vue create mode 100644 packages/vue-test-app/src/preview-examples/grid-fluid.vue create mode 100644 packages/vue-test-app/src/preview-examples/grid-size.vue create mode 100644 packages/vue-test-app/src/preview-examples/grid.css create mode 100644 packages/vue-test-app/src/preview-examples/grid.vue diff --git a/packages/angular-test-app/src/app/app-routing.module.ts b/packages/angular-test-app/src/app/app-routing.module.ts index 16d45804b0e..80885d7fda9 100644 --- a/packages/angular-test-app/src/app/app-routing.module.ts +++ b/packages/angular-test-app/src/app/app-routing.module.ts @@ -45,6 +45,10 @@ import EventListCustomItemHeight from 'src/preview-examples/event-list-custom-it import EventListSelected from 'src/preview-examples/event-list-selected'; import ExpandingSearch from 'src/preview-examples/expanding-search'; import FlipTile from 'src/preview-examples/flip-tile'; +import Grid from 'src/preview-examples/grid'; +import GridFixed from 'src/preview-examples/grid-fixed'; +import GridFluid from 'src/preview-examples/grid-fluid'; +import GridSize from 'src/preview-examples/grid-size'; import Group from 'src/preview-examples/group'; import GroupContextMenu from 'src/preview-examples/group-context-menu'; import GroupCustomEntry from 'src/preview-examples/group-custom-entry'; @@ -357,6 +361,10 @@ const routes: Routes = [ { path: 'key-value-list-with-icon', component: KeyValueListWithIcon }, { path: 'key-value-list-striped', component: KeyValueListStriped }, { path: 'menu-category', component: MenuCategory }, + { path: 'grid', component: Grid }, + { path: 'grid-size', component: GridSize }, + { path: 'grid-fluid', component: GridFluid }, + { path: 'grid-fixed', component: GridFixed }, ], }, ]; diff --git a/packages/angular-test-app/src/app/app.module.ts b/packages/angular-test-app/src/app/app.module.ts index 998d2c75738..c447ab4784e 100644 --- a/packages/angular-test-app/src/app/app.module.ts +++ b/packages/angular-test-app/src/app/app.module.ts @@ -52,6 +52,10 @@ import EventListCustomItemHeight from 'src/preview-examples/event-list-custom-it import EventListSelected from 'src/preview-examples/event-list-selected'; import ExpandingSearch from 'src/preview-examples/expanding-search'; import FlipTile from 'src/preview-examples/flip-tile'; +import Grid from 'src/preview-examples/grid'; +import GridFixed from 'src/preview-examples/grid-fixed'; +import GridFluid from 'src/preview-examples/grid-fluid'; +import GridSize from 'src/preview-examples/grid-size'; import Group from 'src/preview-examples/group'; import GroupContextMenu from 'src/preview-examples/group-context-menu'; import GroupCustomEntry from 'src/preview-examples/group-custom-entry'; @@ -236,6 +240,10 @@ import { NavigationTestComponent } from './components/navigation-test.component' ContentHeader, ContentHeaderNoBack, MenuCategory, + Grid, + GridSize, + GridFluid, + GridFixed, ], imports: [ BrowserModule, diff --git a/packages/angular-test-app/src/preview-examples/grid-fixed.html b/packages/angular-test-app/src/preview-examples/grid-fixed.html new file mode 100644 index 00000000000..264745f08da --- /dev/null +++ b/packages/angular-test-app/src/preview-examples/grid-fixed.html @@ -0,0 +1,55 @@ + +
fixed: sm
+ + + 1 + 2 + 3 + 4 + 5 + 6 + + + +
fixed
+ + + 1 + 2 + 3 + 4 + 5 + 6 + + + +
fixed: md
+ + + 1 + 2 + 3 + 4 + 5 + 6 + + + +
fixed: lg
+ + + 1 + 2 + 3 + 4 + 5 + 6 + + diff --git a/packages/angular-test-app/src/preview-examples/grid-fixed.ts b/packages/angular-test-app/src/preview-examples/grid-fixed.ts new file mode 100644 index 00000000000..ab931d8ac50 --- /dev/null +++ b/packages/angular-test-app/src/preview-examples/grid-fixed.ts @@ -0,0 +1,36 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-example', + templateUrl: './grid-fixed.html', + styles: [ + ` + ix-grid { + margin-bottom: 1rem; + } + + ix-col { + background-color: var(--theme-color-primary); + border: var(--theme-std-bdr-2); + text-align: center; + color: var(--theme-color-inv-contrast-text); + } + + .example-parent { + padding-top: 1rem; + padding-bottom: 0.25rem; + background-color: var(--theme-color-info-40); + } + `, + ], +}) +export default class GridFixed {} diff --git a/packages/angular-test-app/src/preview-examples/grid-fluid.html b/packages/angular-test-app/src/preview-examples/grid-fluid.html new file mode 100644 index 00000000000..4f74b31e8c2 --- /dev/null +++ b/packages/angular-test-app/src/preview-examples/grid-fluid.html @@ -0,0 +1,45 @@ + +
+

None fluid (default)

+ + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + +

fluid

+ + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + +
diff --git a/packages/angular-test-app/src/preview-examples/grid-fluid.ts b/packages/angular-test-app/src/preview-examples/grid-fluid.ts new file mode 100644 index 00000000000..f2e34fbcb10 --- /dev/null +++ b/packages/angular-test-app/src/preview-examples/grid-fluid.ts @@ -0,0 +1,36 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-example', + templateUrl: './grid-fluid.html', + styles: [ + ` + ix-grid { + margin-bottom: 1rem; + } + + ix-col { + background-color: var(--theme-color-primary); + border: var(--theme-std-bdr-2); + text-align: center; + color: var(--theme-color-inv-contrast-text); + } + + .example-parent { + padding-top: 1rem; + padding-bottom: 0.25rem; + background-color: var(--theme-color-info-40); + } + `, + ], +}) +export default class GridFluid {} diff --git a/packages/angular-test-app/src/preview-examples/grid-size.html b/packages/angular-test-app/src/preview-examples/grid-size.html new file mode 100644 index 00000000000..af7c9f5dc89 --- /dev/null +++ b/packages/angular-test-app/src/preview-examples/grid-size.html @@ -0,0 +1,29 @@ + +

Column 6 takes all space until reached column 12

+ + + 1 + 2 + 3 + 4 + 5 + 6 + + + +

Stack on smaller screens as md

+ + + 1 + 2 + 3 + 4 + + diff --git a/packages/angular-test-app/src/preview-examples/grid-size.ts b/packages/angular-test-app/src/preview-examples/grid-size.ts new file mode 100644 index 00000000000..1ab9ca3d3aa --- /dev/null +++ b/packages/angular-test-app/src/preview-examples/grid-size.ts @@ -0,0 +1,36 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-example', + templateUrl: './grid-size.html', + styles: [ + ` + ix-grid { + margin-bottom: 1rem; + } + + ix-col { + background-color: var(--theme-color-primary); + border: var(--theme-std-bdr-2); + text-align: center; + color: var(--theme-color-inv-contrast-text); + } + + .example-parent { + padding-top: 1rem; + padding-bottom: 0.25rem; + background-color: var(--theme-color-info-40); + } + `, + ], +}) +export default class GridSize {} diff --git a/packages/angular-test-app/src/preview-examples/grid.html b/packages/angular-test-app/src/preview-examples/grid.html new file mode 100644 index 00000000000..d3b70f354cb --- /dev/null +++ b/packages/angular-test-app/src/preview-examples/grid.html @@ -0,0 +1,35 @@ + + + + 1 + 2 + 3 + 4 + 5 + 6 + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + diff --git a/packages/angular-test-app/src/preview-examples/grid.ts b/packages/angular-test-app/src/preview-examples/grid.ts new file mode 100644 index 00000000000..d7f8f455a58 --- /dev/null +++ b/packages/angular-test-app/src/preview-examples/grid.ts @@ -0,0 +1,36 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-example', + templateUrl: './grid.html', + styles: [ + ` + ix-grid { + margin-bottom: 1rem; + } + + ix-col { + background-color: var(--theme-color-primary); + border: var(--theme-std-bdr-2); + text-align: center; + color: var(--theme-color-inv-contrast-text); + } + + .example-parent { + padding-top: 1rem; + padding-bottom: 0.25rem; + background-color: var(--theme-color-info-40); + } + `, + ], +}) +export default class Grid {} diff --git a/packages/vue-test-app/src/Root.vue b/packages/vue-test-app/src/Root.vue index 4dcdcd4c893..86a62804362 100644 --- a/packages/vue-test-app/src/Root.vue +++ b/packages/vue-test-app/src/Root.vue @@ -97,6 +97,10 @@ import Validation from './preview-examples/validation.vue'; import WorkflowVertical from './preview-examples/workflow-vertical.vue'; import Workflow from './preview-examples/workflow.vue'; import NavigationTest from './testing/NavigationTest.vue'; +import Grid from './preview-examples/grid.vue'; +import GridSize from './preview-examples/grid-size.vue'; +import GridFluid from './preview-examples/grid-fluid.vue'; +import GridFixed from './preview-examples/grid-fixed.vue'; const routes: any = { '/': App, @@ -188,6 +192,10 @@ const routes: any = { '/testing/navigation/link1': NavigationTest, '/testing/navigation/link2': NavigationTest, '/preview/menu-category': MenuCategory, + '/preview/grid': Grid, + '/preview/grid-size': GridSize, + '/preview/grid-fluid': GridFluid, + '/preview/grid-fixed': GridFixed }; const currentPath = ref(window.location.pathname); diff --git a/packages/vue-test-app/src/preview-examples/grid-fixed.vue b/packages/vue-test-app/src/preview-examples/grid-fixed.vue new file mode 100644 index 00000000000..723f01784e0 --- /dev/null +++ b/packages/vue-test-app/src/preview-examples/grid-fixed.vue @@ -0,0 +1,65 @@ + + + + + + diff --git a/packages/vue-test-app/src/preview-examples/grid-fluid.vue b/packages/vue-test-app/src/preview-examples/grid-fluid.vue new file mode 100644 index 00000000000..cf3e4ebd66c --- /dev/null +++ b/packages/vue-test-app/src/preview-examples/grid-fluid.vue @@ -0,0 +1,55 @@ + + + + + + diff --git a/packages/vue-test-app/src/preview-examples/grid-size.vue b/packages/vue-test-app/src/preview-examples/grid-size.vue new file mode 100644 index 00000000000..83a27f44128 --- /dev/null +++ b/packages/vue-test-app/src/preview-examples/grid-size.vue @@ -0,0 +1,47 @@ + + + + + + diff --git a/packages/vue-test-app/src/preview-examples/grid.css b/packages/vue-test-app/src/preview-examples/grid.css new file mode 100644 index 00000000000..970d2825136 --- /dev/null +++ b/packages/vue-test-app/src/preview-examples/grid.css @@ -0,0 +1,16 @@ +ix-grid { + margin-bottom: 1rem; +} + +ix-col { + background-color: var(--theme-color-primary); + border: var(--theme-std-bdr-2); + text-align: center; + color: var(--theme-color-inv-contrast-text); +} + +.example-parent { + padding-top: 1rem; + padding-bottom: 0.25rem; + background-color: var(--theme-color-info-40); +} diff --git a/packages/vue-test-app/src/preview-examples/grid.vue b/packages/vue-test-app/src/preview-examples/grid.vue new file mode 100644 index 00000000000..12126a9bdd9 --- /dev/null +++ b/packages/vue-test-app/src/preview-examples/grid.vue @@ -0,0 +1,45 @@ + + + + + + From 41503a5aff235cc23816f2c67256a6d58729430a Mon Sep 17 00:00:00 2001 From: Daniel Leroux Date: Wed, 23 Aug 2023 14:24:31 +0200 Subject: [PATCH 06/31] docs: simplify loading --- packages/documentation/docs/controls/grid.md | 22 ++---- .../src/components/Playground/index.tsx | 67 ++++++++++++++----- packages/documentation/src/utils/load.tsx | 62 +++++++++++++++++ .../src/preview-examples/grid-fixed.vue | 2 +- .../src/preview-examples/grid-fluid.vue | 2 +- .../src/preview-examples/grid-size.vue | 2 +- .../src/preview-examples/grid.vue | 2 +- 7 files changed, 122 insertions(+), 37 deletions(-) create mode 100644 packages/documentation/src/utils/load.tsx diff --git a/packages/documentation/docs/controls/grid.md b/packages/documentation/docs/controls/grid.md index 8d02768fbca..c4863ee35d0 100644 --- a/packages/documentation/docs/controls/grid.md +++ b/packages/documentation/docs/controls/grid.md @@ -5,12 +5,6 @@ import Events from './../auto-generated/ix-grid/events.md'; import ColProps from './../auto-generated/ix-col/props.md'; import ColEvents from './../auto-generated/ix-col/events.md'; - -import SourceGrid from './../auto-generated/previews/web-component/grid.md' -import SourceGridSize from './../auto-generated/previews/web-component/grid-size.md' -import SourceGridFluid from './../auto-generated/previews/web-component/grid-fluid.md' -import SourceGridFixed from './../auto-generated/previews/web-component/grid-fixed.md' - # Grid ## Usage @@ -18,9 +12,7 @@ import SourceGridFixed from './../auto-generated/previews/web-component/grid-fix + examplesByName> ### Size @@ -28,9 +20,7 @@ import SourceGridFixed from './../auto-generated/previews/web-component/grid-fix + examplesByName> ### Fixed @@ -38,9 +28,7 @@ import SourceGridFixed from './../auto-generated/previews/web-component/grid-fix + examplesByName> ### Fluid @@ -48,9 +36,7 @@ import SourceGridFixed from './../auto-generated/previews/web-component/grid-fix + examplesByName> ## Properties (ix-grid) diff --git a/packages/documentation/src/components/Playground/index.tsx b/packages/documentation/src/components/Playground/index.tsx index 32fa41ce13c..19ced6deb35 100644 --- a/packages/documentation/src/components/Playground/index.tsx +++ b/packages/documentation/src/components/Playground/index.tsx @@ -6,12 +6,14 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ +import BrowserOnly from '@docusaurus/BrowserOnly'; import { useLocation } from '@docusaurus/router'; import useBaseUrl from '@docusaurus/useBaseUrl'; import { IxTabItem, IxTabs } from '@siemens/ix-react'; import GitHubImage from '@site/static/img/github.svg'; import StackBlitzImage from '@site/static/img/stackblitz.svg'; import React, { useEffect, useMemo, useState } from 'react'; +import loadExamples from '../../utils/load'; import Demo, { DemoProps } from '../Demo'; import { TargetFramework } from './framework-types'; import './playground.scss'; @@ -69,15 +71,18 @@ function ButtonOpenStackBlitz({ ); } +type PlaygroundFiles = { + react?: Record | MdxContent; + angular?: Record | MdxContent; + webcomponents?: Record | MdxContent; + vue?: Record | MdxContent; +}; + interface PlaygroundProps { hideInitalCodePreview?: boolean; - frameworks?: { - react?: Record | MdxContent; - angular?: Record | MdxContent; - webcomponents?: Record | MdxContent; - vue?: Record | MdxContent; - }; + frameworks?: PlaygroundFiles; availableFrameworks?: TargetFramework[]; + examplesByName?: boolean; } function getPathId(pathname: string) { @@ -134,18 +139,21 @@ function getDefaultTargetFramework(availableFrameworks?: TargetFramework[]) { ); } -export default function Playground({ +export function _Playground({ name, height, noMargin, theme, - frameworks, + frameworks: frameworkCode, availableFrameworks, + examplesByName, }: DemoProps & PlaygroundProps) { const { pathname: _pathname } = useLocation(); const baseUrl = useBaseUrl('/'); const [showCode, setShowCode] = useState(!false); + const [frameworks, setFrameworks] = useState(null); + const [targetFramework, setTargetFramework] = useState( getDefaultTargetFramework(availableFrameworks) ); @@ -165,6 +173,27 @@ export default function Playground({ [name, _pathname] ); + useEffect(() => { + if (frameworkCode instanceof Promise) { + frameworkCode.then((r) => { + setFrameworks(r); + }); + + return; + } + + if (frameworkCode) { + setFrameworks(frameworkCode); + + return; + } + + if (examplesByName) { + loadExamples(name).then((codeSnippets) => setFrameworks(codeSnippets)); + return; + } + }, [frameworkCode, frameworks, setFrameworks]); + useEffect(() => { const snippets: Record< TargetFramework, @@ -251,6 +280,10 @@ export default function Playground({ } function isFrameworkConfigured(framework: TargetFramework) { + if (!frameworks) { + return false; + } + if (availableFrameworks) { return ( availableFrameworks.length === 0 || @@ -300,13 +333,13 @@ export default function Playground({ ) : null} {isFrameworkConfigured(TargetFramework.VUE) ? ( - changeFramework(TargetFramework.VUE)} - > - Vue - - ) : null} + changeFramework(TargetFramework.VUE)} + > + Vue + + ) : null}
@@ -329,3 +362,7 @@ export default function Playground({
); } + +export default function (props) { + return {() => <_Playground {...props} />}; +} diff --git a/packages/documentation/src/utils/load.tsx b/packages/documentation/src/utils/load.tsx new file mode 100644 index 00000000000..31e94a46531 --- /dev/null +++ b/packages/documentation/src/utils/load.tsx @@ -0,0 +1,62 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +import React from 'react'; + +export default async function loadExamples( + name: string, + frameworks = ['web-component', 'angular', 'react', 'vue'] +) { + const config = {}; + + if (frameworks.includes('web-component')) { + const { default: WebComponentHTML } = await import( + //@ts-ignore + `../../docs/auto-generated/previews/web-component/${name}.md` + ); + + config['javascript'] = WebComponentHTML as React.ReactElement; + } + + if (frameworks.includes('react')) { + const { default: ReactTSX } = await import( + //@ts-ignore + `../../docs/auto-generated/previews/react/${name}.md` + ); + + config['react'] = ReactTSX as React.ReactElement; + } + + if (frameworks.includes('vue')) { + const { default: Vue } = await import( + //@ts-ignore + `../../docs/auto-generated/previews/vue/${name}.md` + ); + + config['vue'] = Vue as React.ReactElement; + } + + if (frameworks.includes('angular')) { + const { default: AngularTS } = await import( + //@ts-ignore + `../../docs/auto-generated/previews/angular/${name}.ts.md` + ); + + const { default: AngularHTML } = await import( + //@ts-ignore + `../../docs/auto-generated/previews/angular/${name}.html.md` + ); + + config['angular'] = { + [`${name}.html`]: AngularHTML, + [`${name}.ts`]: AngularTS, + }; + } + + return config; +} diff --git a/packages/vue-test-app/src/preview-examples/grid-fixed.vue b/packages/vue-test-app/src/preview-examples/grid-fixed.vue index 723f01784e0..83a220374f7 100644 --- a/packages/vue-test-app/src/preview-examples/grid-fixed.vue +++ b/packages/vue-test-app/src/preview-examples/grid-fixed.vue @@ -8,7 +8,7 @@ --> diff --git a/packages/vue-test-app/src/preview-examples/grid-fluid.vue b/packages/vue-test-app/src/preview-examples/grid-fluid.vue index cf3e4ebd66c..3f10a65e2f0 100644 --- a/packages/vue-test-app/src/preview-examples/grid-fluid.vue +++ b/packages/vue-test-app/src/preview-examples/grid-fluid.vue @@ -8,7 +8,7 @@ --> diff --git a/packages/vue-test-app/src/preview-examples/grid-size.vue b/packages/vue-test-app/src/preview-examples/grid-size.vue index 83a27f44128..f79eaebdc85 100644 --- a/packages/vue-test-app/src/preview-examples/grid-size.vue +++ b/packages/vue-test-app/src/preview-examples/grid-size.vue @@ -8,7 +8,7 @@ --> diff --git a/packages/vue-test-app/src/preview-examples/grid.vue b/packages/vue-test-app/src/preview-examples/grid.vue index 12126a9bdd9..745664773c4 100644 --- a/packages/vue-test-app/src/preview-examples/grid.vue +++ b/packages/vue-test-app/src/preview-examples/grid.vue @@ -8,7 +8,7 @@ --> From c7a4caf2e0b71fce30f9066a5d84e7c9e315b78b Mon Sep 17 00:00:00 2001 From: Daniel Leroux Date: Fri, 25 Aug 2023 13:29:34 +0200 Subject: [PATCH 07/31] fix: harmonize breakpoint behavior --- packages/angular/src/components.ts | 4 +- packages/core/component-doc.json | 143 ++++++++++++++---- packages/core/src/components.d.ts | 28 ++-- .../application-header.scss | 2 +- .../application-header/application-header.tsx | 8 +- .../test/cw-application-header.spec.tsx | 2 +- .../basic-navigation/basic-navigation.scss | 4 +- .../basic-navigation/basic-navigation.tsx | 19 ++- packages/core/src/components/col/col.tsx | 18 +-- .../menu-category/menu-category.tsx | 2 +- .../menu-category/test/menu-category.ct.ts | 4 +- packages/core/src/components/menu/menu.scss | 4 +- packages/core/src/components/menu/menu.tsx | 61 ++++---- .../core/src/components/menu/test/menu.ct.ts | 4 +- .../components/my-component/my-component.tsx | 24 ++- .../{screen => application-layout}/context.ts | 0 .../{screen => application-layout}/index.ts | 2 +- .../utils/application-layout/service.ts | 83 ++++++++++ .../core/src/components/utils/breakpoints.ts | 23 +++ .../src/components/utils/screen/mode.spec.ts | 49 ------ .../core/src/components/utils/screen/mode.ts | 118 --------------- .../src/components/utils/screen/service.ts | 67 -------- .../basic-navigation/basic-navigation.e2e.ts | 8 +- ...-1-chromium---theme-classic-dark-linux.png | Bin 12250 -> 12646 bytes ...1-chromium---theme-classic-light-linux.png | Bin 12075 -> 12475 bytes ...-1-chromium---theme-classic-dark-linux.png | Bin 12250 -> 12646 bytes ...1-chromium---theme-classic-light-linux.png | Bin 12075 -> 12475 bytes ...-1-chromium---theme-classic-dark-linux.png | Bin 12851 -> 13281 bytes ...1-chromium---theme-classic-light-linux.png | Bin 12499 -> 12926 bytes ...-1-chromium---theme-classic-dark-linux.png | Bin 11258 -> 11550 bytes ...1-chromium---theme-classic-light-linux.png | Bin 11233 -> 11524 bytes ...-1-chromium---theme-classic-dark-linux.png | Bin 35751 -> 36326 bytes ...1-chromium---theme-classic-light-linux.png | Bin 35143 -> 35739 bytes ...-1-chromium---theme-classic-dark-linux.png | Bin 16909 -> 37251 bytes ...1-chromium---theme-classic-light-linux.png | Bin 35523 -> 36126 bytes ...-1-chromium---theme-classic-dark-linux.png | Bin 16857 -> 17129 bytes ...1-chromium---theme-classic-light-linux.png | Bin 16377 -> 16671 bytes packages/core/src/tests/grid/grid.e2e.ts | 67 +++++++- ...-1-chromium---theme-classic-dark-linux.png | Bin 22880 -> 21998 bytes ...1-chromium---theme-classic-light-linux.png | Bin 23406 -> 22461 bytes ...-1-chromium---theme-classic-dark-linux.png | Bin 0 -> 5469 bytes ...1-chromium---theme-classic-light-linux.png | Bin 0 -> 5389 bytes ...-1-chromium---theme-classic-dark-linux.png | Bin 0 -> 4570 bytes ...1-chromium---theme-classic-light-linux.png | Bin 0 -> 4487 bytes ...-1-chromium---theme-classic-dark-linux.png | Bin 0 -> 4539 bytes ...1-chromium---theme-classic-light-linux.png | Bin 0 -> 4458 bytes .../tests/menu-about-news/basic/index.html | 2 +- .../src/tests/menu-about/basic/index.html | 2 +- .../src/tests/menu-avatar/basic/index.html | 2 +- .../src/tests/menu-avatar/image/index.html | 2 +- .../src/tests/menu-avatar/initials/index.html | 2 +- .../src/tests/menu-settings/basic/index.html | 2 +- .../docs/migration/2_0_0/index.md | 12 +- .../basic-navigation-without-header.html | 2 +- .../preview-examples/basic-navigation.html | 2 +- .../src/preview-examples/menu-category.html | 2 +- .../src/preview-examples/menu-layouts.html | 4 +- packages/vue/src/components.ts | 6 +- 58 files changed, 406 insertions(+), 378 deletions(-) rename packages/core/src/components/utils/{screen => application-layout}/context.ts (100%) rename packages/core/src/components/utils/{screen => application-layout}/index.ts (79%) create mode 100644 packages/core/src/components/utils/application-layout/service.ts create mode 100644 packages/core/src/components/utils/breakpoints.ts delete mode 100644 packages/core/src/components/utils/screen/mode.spec.ts delete mode 100644 packages/core/src/components/utils/screen/mode.ts delete mode 100644 packages/core/src/components/utils/screen/service.ts create mode 100644 packages/core/src/tests/grid/grid.e2e.ts-snapshots/should-not-have-regression-large-1-chromium---theme-classic-dark-linux.png create mode 100644 packages/core/src/tests/grid/grid.e2e.ts-snapshots/should-not-have-regression-large-1-chromium---theme-classic-light-linux.png create mode 100644 packages/core/src/tests/grid/grid.e2e.ts-snapshots/should-not-have-regression-medium-1-chromium---theme-classic-dark-linux.png create mode 100644 packages/core/src/tests/grid/grid.e2e.ts-snapshots/should-not-have-regression-medium-1-chromium---theme-classic-light-linux.png create mode 100644 packages/core/src/tests/grid/grid.e2e.ts-snapshots/should-not-have-regression-small-1-chromium---theme-classic-dark-linux.png create mode 100644 packages/core/src/tests/grid/grid.e2e.ts-snapshots/should-not-have-regression-small-1-chromium---theme-classic-light-linux.png diff --git a/packages/angular/src/components.ts b/packages/angular/src/components.ts index 802ec8fad1e..1aab7537c19 100644 --- a/packages/angular/src/components.ts +++ b/packages/angular/src/components.ts @@ -1234,7 +1234,7 @@ export declare interface IxMapNavigationOverlay extends Components.IxMapNavigati @ProxyCmp({ - inputs: ['applicationDescription', 'applicationName', 'enableMapExpand', 'enableSettings', 'enableToggleTheme', 'expand', 'forceLayout', 'i18nCollapse', 'i18nExpand', 'i18nExpandSidebar', 'i18nLegal', 'i18nSettings', 'i18nToggleTheme', 'maxVisibleMenuItems', 'pinned', 'showAbout', 'showSettings', 'supportedModes'], + inputs: ['applicationDescription', 'applicationName', 'breakpoints', 'enableMapExpand', 'enableSettings', 'enableToggleTheme', 'expand', 'forceBreakpoint', 'i18nCollapse', 'i18nExpand', 'i18nExpandSidebar', 'i18nLegal', 'i18nSettings', 'i18nToggleTheme', 'maxVisibleMenuItems', 'pinned', 'showAbout', 'showSettings'], methods: ['toggleMapExpand', 'toggleMenu', 'toggleSettings', 'toggleAbout'] }) @Component({ @@ -1242,7 +1242,7 @@ export declare interface IxMapNavigationOverlay extends Components.IxMapNavigati changeDetection: ChangeDetectionStrategy.OnPush, template: '', // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property - inputs: ['applicationDescription', 'applicationName', 'enableMapExpand', 'enableSettings', 'enableToggleTheme', 'expand', 'forceLayout', 'i18nCollapse', 'i18nExpand', 'i18nExpandSidebar', 'i18nLegal', 'i18nSettings', 'i18nToggleTheme', 'maxVisibleMenuItems', 'pinned', 'showAbout', 'showSettings', 'supportedModes'], + inputs: ['applicationDescription', 'applicationName', 'breakpoints', 'enableMapExpand', 'enableSettings', 'enableToggleTheme', 'expand', 'forceBreakpoint', 'i18nCollapse', 'i18nExpand', 'i18nExpandSidebar', 'i18nLegal', 'i18nSettings', 'i18nToggleTheme', 'maxVisibleMenuItems', 'pinned', 'showAbout', 'showSettings'], }) export class IxMenu { protected el: HTMLElement; diff --git a/packages/core/component-doc.json b/packages/core/component-doc.json index 982551549c1..1f5ec209bac 100644 --- a/packages/core/component-doc.json +++ b/packages/core/component-doc.json @@ -302,7 +302,9 @@ "docs": "", "docsTags": [], "encapsulation": "shadow", - "dependents": [], + "dependents": [ + "my-component" + ], "dependencies": [ "ix-application-header" ], @@ -321,6 +323,9 @@ "ix-icon-button": [ "ix-spinner", "ix-icon" + ], + "my-component": [ + "ix-basic-navigation" ] }, "props": [ @@ -1761,9 +1766,15 @@ } ], "encapsulation": "shadow", - "dependents": [], + "dependents": [ + "my-component" + ], "dependencies": [], - "dependencyGraph": {}, + "dependencyGraph": { + "my-component": [ + "ix-col" + ] + }, "props": [ { "name": "size", @@ -4586,9 +4597,15 @@ } ], "encapsulation": "shadow", - "dependents": [], + "dependents": [ + "my-component" + ], "dependencies": [], - "dependencyGraph": {}, + "dependencyGraph": { + "my-component": [ + "ix-grid" + ] + }, "props": [ { "name": "columns", @@ -6292,7 +6309,9 @@ "docs": "", "docsTags": [], "encapsulation": "shadow", - "dependents": [], + "dependents": [ + "my-component" + ], "dependencies": [ "ix-burger-menu", "ix-menu-item" @@ -6313,6 +6332,9 @@ ], "ix-menu-item": [ "ix-icon" + ], + "my-component": [ + "ix-menu" ] }, "props": [ @@ -6349,6 +6371,29 @@ "optional": false, "required": false }, + { + "name": "breakpoints", + "type": "(\"sm\" | \"md\" | \"lg\")[]", + "mutable": false, + "reflectToAttr": false, + "docs": "Supported layouts", + "docsTags": [], + "default": "['sm', 'md', 'lg']", + "values": [ + { + "type": "(\"sm\"" + }, + { + "value": "md", + "type": "string" + }, + { + "type": "\"lg\")[]" + } + ], + "optional": false, + "required": false + }, { "name": "enableMapExpand", "type": "boolean", @@ -6418,24 +6463,24 @@ "required": false }, { - "name": "forceLayout", - "type": "\"large\" | \"medium\" | \"small\"", + "name": "forceBreakpoint", + "type": "\"lg\" | \"md\" | \"sm\"", "mutable": false, - "attr": "force-layout", + "attr": "force-breakpoint", "reflectToAttr": false, "docs": "Change the responsive layout of the menu structure", "docsTags": [], "values": [ { - "value": "large", + "value": "lg", "type": "string" }, { - "value": "medium", + "value": "md", "type": "string" }, { - "value": "small", + "value": "sm", "type": "string" } ], @@ -6611,22 +6656,6 @@ ], "optional": false, "required": false - }, - { - "name": "supportedModes", - "type": "Mode[]", - "mutable": false, - "reflectToAttr": false, - "docs": "Supported layouts", - "docsTags": [], - "default": "['small', 'medium', 'large']", - "values": [ - { - "type": "Mode[]" - } - ], - "optional": false, - "required": false } ], "methods": [ @@ -7375,7 +7404,8 @@ "encapsulation": "shadow", "dependents": [ "ix-menu", - "ix-menu-category" + "ix-menu-category", + "my-component" ], "dependencies": [ "ix-icon" @@ -7389,6 +7419,9 @@ ], "ix-menu-category": [ "ix-menu-item" + ], + "my-component": [ + "ix-menu-item" ] }, "props": [ @@ -8734,9 +8767,15 @@ } ], "encapsulation": "shadow", - "dependents": [], + "dependents": [ + "my-component" + ], "dependencies": [], - "dependencyGraph": {}, + "dependencyGraph": { + "my-component": [ + "ix-row" + ] + }, "props": [], "methods": [], "events": [], @@ -12042,8 +12081,46 @@ "docsTags": [], "encapsulation": "scoped", "dependents": [], - "dependencies": [], - "dependencyGraph": {}, + "dependencies": [ + "ix-basic-navigation", + "ix-menu", + "ix-menu-item", + "ix-grid", + "ix-row", + "ix-col" + ], + "dependencyGraph": { + "my-component": [ + "ix-basic-navigation", + "ix-menu", + "ix-menu-item", + "ix-grid", + "ix-row", + "ix-col" + ], + "ix-basic-navigation": [ + "ix-application-header" + ], + "ix-application-header": [ + "ix-burger-menu" + ], + "ix-burger-menu": [ + "ix-icon-button", + "ix-spinner", + "ix-icon" + ], + "ix-icon-button": [ + "ix-spinner", + "ix-icon" + ], + "ix-menu": [ + "ix-burger-menu", + "ix-menu-item" + ], + "ix-menu-item": [ + "ix-icon" + ] + }, "props": [], "methods": [], "events": [], diff --git a/packages/core/src/components.d.ts b/packages/core/src/components.d.ts index 9ddf941e746..9c7a4503c89 100644 --- a/packages/core/src/components.d.ts +++ b/packages/core/src/components.d.ts @@ -6,7 +6,7 @@ */ import { HTMLStencilElement, JSXBase } from "@stencil/core/internal"; import { ActionCardVariant } from "./components/action-card/action-card"; -import { Mode } from "./components/utils/screen/mode"; +import { Breakpoint } from "./components/utils/breakpoints"; import { ButtonVariant } from "./components/button/button"; import { CardVariant } from "./components/card/card"; import { CardAccordionExpandChangeEvent } from "./components/card-accordion/card-accordion"; @@ -39,7 +39,7 @@ import { TreeContext, TreeItemContext, TreeModel, UpdateCallback } from "./compo import { TextDecoration, TypographyColors, TypographyFormat, TypographyVariants } from "./components/typography/typography"; import { UploadFileState } from "./components/upload/upload-file-state"; export { ActionCardVariant } from "./components/action-card/action-card"; -export { Mode } from "./components/utils/screen/mode"; +export { Breakpoint } from "./components/utils/breakpoints"; export { ButtonVariant } from "./components/button/button"; export { CardVariant } from "./components/card/card"; export { CardAccordionExpandChangeEvent } from "./components/card-accordion/card-accordion"; @@ -98,7 +98,7 @@ export namespace Components { "variant": ActionCardVariant; } interface IxApplicationHeader { - "mode": Mode; + "breakpoint": Breakpoint; /** * Application name */ @@ -1119,6 +1119,10 @@ export namespace Components { * Should only be set if you use ix-menu standalone */ "applicationName": string; + /** + * Supported layouts + */ + "breakpoints": Breakpoint[]; /** * Internal */ @@ -1135,7 +1139,7 @@ export namespace Components { /** * Change the responsive layout of the menu structure */ - "forceLayout": Mode | undefined; + "forceBreakpoint": Breakpoint | undefined; "i18nCollapse": string; "i18nExpand": string; /** @@ -1161,10 +1165,6 @@ export namespace Components { * Is settings tab visible */ "showSettings": boolean; - /** - * Supported layouts - */ - "supportedModes": Mode[]; /** * Toggle About tabs * @param show @@ -2999,7 +2999,7 @@ declare namespace LocalJSX { "variant"?: ActionCardVariant; } interface IxApplicationHeader { - "mode"?: Mode; + "breakpoint"?: Breakpoint; /** * Application name */ @@ -4138,6 +4138,10 @@ declare namespace LocalJSX { * Should only be set if you use ix-menu standalone */ "applicationName"?: string; + /** + * Supported layouts + */ + "breakpoints"?: Breakpoint[]; /** * Internal */ @@ -4154,7 +4158,7 @@ declare namespace LocalJSX { /** * Change the responsive layout of the menu structure */ - "forceLayout"?: Mode | undefined; + "forceBreakpoint"?: Breakpoint | undefined; "i18nCollapse"?: string; "i18nExpand"?: string; /** @@ -4188,10 +4192,6 @@ declare namespace LocalJSX { * Is settings tab visible */ "showSettings"?: boolean; - /** - * Supported layouts - */ - "supportedModes"?: Mode[]; } interface IxMenuAbout { /** diff --git a/packages/core/src/components/application-header/application-header.scss b/packages/core/src/components/application-header/application-header.scss index 622a90dd40a..c94f07c16bd 100644 --- a/packages/core/src/components/application-header/application-header.scss +++ b/packages/core/src/components/application-header/application-header.scss @@ -38,7 +38,7 @@ } } -:host(.mode-small) { +:host(.breakpoint-sm) { padding-left: 0.5rem; .logo { diff --git a/packages/core/src/components/application-header/application-header.tsx b/packages/core/src/components/application-header/application-header.tsx index e13ba7e61cd..1e09348be42 100644 --- a/packages/core/src/components/application-header/application-header.tsx +++ b/packages/core/src/components/application-header/application-header.tsx @@ -8,8 +8,8 @@ */ import { Component, Element, h, Host, Prop, State } from '@stencil/core'; +import { Breakpoint } from '../utils/breakpoints'; import { menuController } from '../utils/menu-service/menu-service'; -import { Mode } from '../utils/screen/mode'; import { Disposable } from '../utils/typed-event'; @Component({ @@ -28,7 +28,7 @@ export class ApplicationHeader { /** * @internal */ - @Prop() mode: Mode = 'large'; + @Prop() breakpoint: Breakpoint = 'lg'; @State() menuExpanded = false; @@ -77,8 +77,8 @@ export class ApplicationHeader { render() { return ( - - {this.mode === 'small' ? ( + + {this.breakpoint === 'sm' ? ( this.onMenuClick()} expanded={this.menuExpanded} diff --git a/packages/core/src/components/application-header/test/cw-application-header.spec.tsx b/packages/core/src/components/application-header/test/cw-application-header.spec.tsx index d69cec8d624..187ee914169 100644 --- a/packages/core/src/components/application-header/test/cw-application-header.spec.tsx +++ b/packages/core/src/components/application-header/test/cw-application-header.spec.tsx @@ -20,6 +20,6 @@ describe('ix-application-header', () => { }); const header = page.doc.querySelector('ix-application-header'); - expect(header.className).toContain('mode-large'); + expect(header.className).toContain('breakpoint-lg'); }); }); diff --git a/packages/core/src/components/basic-navigation/basic-navigation.scss b/packages/core/src/components/basic-navigation/basic-navigation.scss index 159d1b5d80e..b7db798c187 100644 --- a/packages/core/src/components/basic-navigation/basic-navigation.scss +++ b/packages/core/src/components/basic-navigation/basic-navigation.scss @@ -53,13 +53,13 @@ } } -:host(.mode-large) { +:host(.breakpoint-lg) { .content { margin-left: 0rem; } } -:host(.mode-small) { +:host(.breakpoint-sm) { .content { margin-left: 0px; width: 100%; diff --git a/packages/core/src/components/basic-navigation/basic-navigation.tsx b/packages/core/src/components/basic-navigation/basic-navigation.tsx index d52aa7719f6..5a6c88df52d 100644 --- a/packages/core/src/components/basic-navigation/basic-navigation.tsx +++ b/packages/core/src/components/basic-navigation/basic-navigation.tsx @@ -8,9 +8,9 @@ */ import { Component, Element, h, Host, Prop, State } from '@stencil/core'; +import { applicationLayoutService } from '../utils/application-layout/service'; +import { Breakpoint } from '../utils/breakpoints'; import { menuController } from '../utils/menu-service/menu-service'; -import { Mode } from '../utils/screen/mode'; -import { screenMode } from '../utils/screen/service'; import { Disposable } from '../utils/typed-event'; @Component({ @@ -31,7 +31,7 @@ export class BasicNavigation { */ @Prop() hideHeader = false; - @State() mode: Mode = 'large'; + @State() breakpoint: Breakpoint = 'lg'; get menu(): HTMLIxMenuElement | null { return this.hostElement.querySelector('ix-menu'); @@ -48,10 +48,10 @@ export class BasicNavigation { componentWillLoad() { if (this.hideHeader === false) { - this.modeDisposable = screenMode.onChange.on( - (mode) => (this.mode = mode) + this.modeDisposable = applicationLayoutService.onChange.on( + (mode) => (this.breakpoint = mode) ); - this.mode = screenMode.mode; + this.breakpoint = applicationLayoutService.breakpoint; } } @@ -71,11 +71,14 @@ export class BasicNavigation { data-role="" class={{ 'hide-header': this.hideHeader, - [`mode-${this.mode}`]: true, + [`breakpoint-${this.breakpoint}`]: true, }} > {!this.hideHeader ? ( - + ) : null} diff --git a/packages/core/src/components/col/col.tsx b/packages/core/src/components/col/col.tsx index bf7359bd6d8..b5ca8113167 100644 --- a/packages/core/src/components/col/col.tsx +++ b/packages/core/src/components/col/col.tsx @@ -8,23 +8,9 @@ */ import { Component, forceUpdate, h, Host, Listen, Prop } from '@stencil/core'; +import { Breakpoint, matchBreakpoint } from '../utils/breakpoints'; -const screenSizes = { - sm: '(min-width: 576px)', - md: '(min-width: 768px)', - lg: '(min-width: 992px)', -} as const; - -type ScreenSize = keyof typeof screenSizes; -type GridBreakpoint = ScreenSize | ''; - -const matchBreakpoint = (breakpoint: ScreenSize) => { - if ((window as any).matchMedia) { - const mediaQuery = screenSizes[breakpoint]; - return window.matchMedia(mediaQuery).matches; - } - return false; -}; +type GridBreakpoint = Breakpoint | ''; export type ColumnSize = | '1' diff --git a/packages/core/src/components/menu-category/menu-category.tsx b/packages/core/src/components/menu-category/menu-category.tsx index 17e1b21f2c9..c01bc62568f 100644 --- a/packages/core/src/components/menu-category/menu-category.tsx +++ b/packages/core/src/components/menu-category/menu-category.tsx @@ -8,8 +8,8 @@ */ import { Component, Element, h, Host, Prop, State } from '@stencil/core'; import anime from 'animejs'; +import { menuContext } from '../utils/application-layout/context'; import { createMutationObserver } from '../utils/mutation-observer'; -import { menuContext } from '../utils/screen/context'; const DefaultIxMenuItemHeight = 40; const DefaultAnimationTimeout = 150; diff --git a/packages/core/src/components/menu-category/test/menu-category.ct.ts b/packages/core/src/components/menu-category/test/menu-category.ct.ts index 45b82034c58..f021310fe48 100644 --- a/packages/core/src/components/menu-category/test/menu-category.ct.ts +++ b/packages/core/src/components/menu-category/test/menu-category.ct.ts @@ -37,9 +37,7 @@ test('should collapse by click', async ({ mount, page }) => { const menu = page.locator('ix-menu'); const expandMenuButton = page.locator('ix-menu').locator('.burger-menu'); - await menu.evaluate( - (menu: HTMLIxMenuElement) => (menu.supportedModes = ['medium']) - ); + await menu.evaluate((menu: HTMLIxMenuElement) => (menu.breakpoints = ['md'])); await categoryItem.click(); diff --git a/packages/core/src/components/menu/menu.scss b/packages/core/src/components/menu/menu.scss index 2d2a392ab3b..33466492eb3 100644 --- a/packages/core/src/components/menu/menu.scss +++ b/packages/core/src/components/menu/menu.scss @@ -152,7 +152,7 @@ $menu-expanded-width: 16rem; } } -:host(.mode-small) { +:host(.breakpoint-sm) { .menu:not(.expanded) { width: 0; } @@ -171,7 +171,7 @@ $menu-expanded-width: 16rem; } } -:host(.mode-large) { +:host(.breakpoint-lg) { position: relative; .menu.expanded { diff --git a/packages/core/src/components/menu/menu.tsx b/packages/core/src/components/menu/menu.tsx index 5436305275a..74ce3d0a261 100644 --- a/packages/core/src/components/menu/menu.tsx +++ b/packages/core/src/components/menu/menu.tsx @@ -21,11 +21,14 @@ import { Watch, } from '@stencil/core'; import anime from 'animejs'; +import { + hostContext, + isBasicNavigationLayout, +} from '../utils/application-layout/context'; +import { applicationLayoutService } from '../utils/application-layout/service'; +import { Breakpoint } from '../utils/breakpoints'; import { menuController } from '../utils/menu-service/menu-service'; import { convertToRemString } from '../utils/rwd.util'; -import { hostContext, isBasicNavigationLayout } from '../utils/screen/context'; -import { Mode } from '../utils/screen/mode'; -import { screenMode } from '../utils/screen/service'; import { themeSwitcher } from '../utils/theme-switcher'; @Component({ @@ -94,40 +97,42 @@ export class Menu { pinnedChange(newPinned: boolean) { this.setPinned(this.pinned); if (newPinned) { - screenMode.disableModeDetection(); - screenMode.setMode('large'); + applicationLayoutService.disableBreakpointDetection(); + applicationLayoutService.setBreakpoint('lg'); return; } - screenMode.enableModeDetection(); + applicationLayoutService.enableBreakpointDetection(); } /** * Change the responsive layout of the menu structure */ - @Prop() forceLayout: Mode | undefined; - forceLayoutChange(newMode: Mode | undefined) { + @Prop() forceBreakpoint: Breakpoint | undefined; + forceLayoutChange(newMode: Breakpoint | undefined) { if (this.pinned) { - console.warn('You cannot force a layout while pinned property is set!'); + console.warn( + 'You cannot force a breakpoint while pinned property is set!' + ); return; } if (!newMode) { - screenMode.enableModeDetection(); + applicationLayoutService.enableBreakpointDetection(); return; } - screenMode.disableModeDetection(); - screenMode.setMode(newMode); + applicationLayoutService.disableBreakpointDetection(); + applicationLayoutService.setBreakpoint(newMode); } /** * Supported layouts */ - @Prop() supportedModes: Mode[] = ['small', 'medium', 'large']; - @Watch('supportedModes') - supportedModesChange(modes: Mode[]) { - screenMode.setSupportedMods(modes); + @Prop() breakpoints: Breakpoint[] = ['sm', 'md', 'lg']; + @Watch('breakpoints') + onBreakpointsChange(modes: Breakpoint[]) { + applicationLayoutService.setBreakpoints(modes); } /** @@ -163,7 +168,7 @@ export class Menu { @State() showPinned = false; @State() mapExpand = true; @State() activeTab: HTMLIxMenuItemElement | null; - @State() mode: Mode = 'large'; + @State() breakpoint: Breakpoint = 'lg'; @State() itemsScrollShadowTop = false; @State() itemsScrollShadowBottom = false; @@ -289,12 +294,12 @@ export class Menu { this.pinnedChange(this.pinned); } - if (this.forceLayout) { - this.forceLayoutChange(this.forceLayout); + if (this.forceBreakpoint) { + this.forceLayoutChange(this.forceBreakpoint); } - if (this.supportedModes !== undefined && this.supportedModes.length > 0) { - this.supportedModesChange(this.supportedModes); + if (this.breakpoints !== undefined && this.breakpoints.length > 0) { + this.onBreakpointsChange(this.breakpoints); } } @@ -302,8 +307,8 @@ export class Menu { menuController.register(this.hostElement); const layout = hostContext('ix-basic-navigation', this.hostElement); if (isBasicNavigationLayout(layout) && layout.hideHeader === false) { - screenMode.onChange.on((mode) => this.onModeChange(mode)); - this.onModeChange(screenMode.mode); + applicationLayoutService.onChange.on((mode) => this.onModeChange(mode)); + this.onModeChange(applicationLayoutService.breakpoint); } } @@ -320,13 +325,13 @@ export class Menu { menuController.setIsPinned(pinned); } - private onModeChange(mode: Mode) { - if (!this.supportedModes.includes(mode)) { + private onModeChange(mode: Breakpoint) { + if (!this.breakpoints.includes(mode)) { return; } - this.mode = mode; + this.breakpoint = mode; - if (this.mode === 'large') { + if (this.breakpoint === 'lg') { this.setPinned(true); this.toggleMenu(true); return; @@ -573,7 +578,7 @@ export class Menu { diff --git a/packages/core/src/components/menu/test/menu.ct.ts b/packages/core/src/components/menu/test/menu.ct.ts index 5fd11054b60..f01431b2826 100644 --- a/packages/core/src/components/menu/test/menu.ct.ts +++ b/packages/core/src/components/menu/test/menu.ct.ts @@ -19,7 +19,7 @@ test('renders', async ({ mount, page }) => { `); const element = page.locator('ix-menu'); - await expect(element).toHaveClass('mode-large hydrated'); + await expect(element).toHaveClass('breakpoint-lg hydrated'); }); test('should stay close after menu click when NOT pinned', async ({ @@ -35,7 +35,7 @@ test('should stay close after menu click when NOT pinned', async ({ `); const menu = page.locator('ix-menu'); await menu.evaluate((menu: HTMLIxMenuElement) => { - menu.supportedModes = ['medium']; + menu.breakpoints = ['md']; }); const menuButton = menu.locator('ix-burger-menu'); await menuButton.click(); diff --git a/packages/core/src/components/my-component/my-component.tsx b/packages/core/src/components/my-component/my-component.tsx index bb9bd7073c5..1264fc1b9f5 100644 --- a/packages/core/src/components/my-component/my-component.tsx +++ b/packages/core/src/components/my-component/my-component.tsx @@ -15,6 +15,28 @@ import { Component, h, Host } from '@stencil/core'; }) export class MyComponent { render() { - return ; + return ( + + + + Test + + + + + + 1 + + + 2 + + + 3 + + + + + + ); } } diff --git a/packages/core/src/components/utils/screen/context.ts b/packages/core/src/components/utils/application-layout/context.ts similarity index 100% rename from packages/core/src/components/utils/screen/context.ts rename to packages/core/src/components/utils/application-layout/context.ts diff --git a/packages/core/src/components/utils/screen/index.ts b/packages/core/src/components/utils/application-layout/index.ts similarity index 79% rename from packages/core/src/components/utils/screen/index.ts rename to packages/core/src/components/utils/application-layout/index.ts index ff28428392a..8e9f7418471 100644 --- a/packages/core/src/components/utils/screen/index.ts +++ b/packages/core/src/components/utils/application-layout/index.ts @@ -6,4 +6,4 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ -export { screenMode } from './service'; +export { applicationLayoutService } from './service'; diff --git a/packages/core/src/components/utils/application-layout/service.ts b/packages/core/src/components/utils/application-layout/service.ts new file mode 100644 index 00000000000..16977ab1dec --- /dev/null +++ b/packages/core/src/components/utils/application-layout/service.ts @@ -0,0 +1,83 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +import { Breakpoint, matchBreakpoint } from '../breakpoints'; +import { TypedEvent } from '../typed-event'; + +class ApplicationLayoutService { + // Keep order of breakpoints + #supportedBreakpoints: Breakpoint[] = ['sm', 'md', 'lg']; + #breakpointChangeListener = new TypedEvent(); + #breakpoint: Breakpoint = 'lg'; + + #isDetectionEnabled = true; + + constructor() { + if (typeof window !== 'undefined') { + window.addEventListener('resize', this.onResize.bind(this)); + this.onResize(); + } + } + + get breakpoint() { + return this.#breakpoint; + } + + get onChange() { + return this.#breakpointChangeListener; + } + + get isDetectionEnabled() { + return this.#isDetectionEnabled; + } + + private onResize() { + if (!this.#isDetectionEnabled) { + return; + } + const matchBreakpoints: [Breakpoint, boolean][] = []; + this.#supportedBreakpoints.forEach((breakpoint) => { + const match = matchBreakpoint(breakpoint); + matchBreakpoints.push([breakpoint, match]); + }); + + if (matchBreakpoints.every(([_, match]) => match === false)) { + this.#breakpointChangeListener.emit(this.#supportedBreakpoints[0]); + this.#breakpoint = this.#supportedBreakpoints[0]; + return; + } + + for (const [breakpoint, match] of matchBreakpoints.reverse()) { + if (match) { + this.#breakpointChangeListener.emit(breakpoint); + this.#breakpoint = breakpoint; + break; + } + } + } + + public disableBreakpointDetection() { + this.#isDetectionEnabled = false; + } + + public enableBreakpointDetection() { + this.#isDetectionEnabled = true; + } + + public setBreakpoint(mode: Breakpoint) { + this.#breakpoint = mode; + this.#breakpointChangeListener.emit(mode); + } + + public setBreakpoints(modes: Breakpoint[]) { + this.#supportedBreakpoints = modes; + this.onResize(); + } +} + +export const applicationLayoutService = new ApplicationLayoutService(); diff --git a/packages/core/src/components/utils/breakpoints.ts b/packages/core/src/components/utils/breakpoints.ts new file mode 100644 index 00000000000..5133cae338c --- /dev/null +++ b/packages/core/src/components/utils/breakpoints.ts @@ -0,0 +1,23 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +const mediaQueries = { + sm: '(min-width: 36em)', + md: '(min-width: 48em)', + lg: '(min-width: 62em)', +} as const; + +export type Breakpoint = keyof typeof mediaQueries; + +export const matchBreakpoint = (breakpoint: Breakpoint) => { + if (typeof window !== 'undefined' && (window as any).matchMedia) { + const mediaQuery = mediaQueries[breakpoint]; + return window.matchMedia(mediaQuery).matches; + } + return false; +}; diff --git a/packages/core/src/components/utils/screen/mode.spec.ts b/packages/core/src/components/utils/screen/mode.spec.ts deleted file mode 100644 index c1e7ff9e4bf..00000000000 --- a/packages/core/src/components/utils/screen/mode.spec.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { getFallbackMode } from './mode'; - -/* - * SPDX-FileCopyrightText: 2023 Siemens AG - * - * SPDX-License-Identifier: MIT - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -describe('Mode', () => { - it('should have fallback values', () => { - let mode = getFallbackMode(['small', 'medium', 'large'], 'large'); - expect(mode).toStrictEqual('large'); - - mode = getFallbackMode(['small', 'medium'], 'large'); - expect(mode).toStrictEqual('medium'); - - mode = getFallbackMode(['small', 'large'], 'large'); - expect(mode).toStrictEqual('large'); - - mode = getFallbackMode(['medium', 'large'], 'large'); - expect(mode).toStrictEqual('large'); - - mode = getFallbackMode(['small', 'medium', 'large'], 'medium'); - expect(mode).toStrictEqual('medium'); - - mode = getFallbackMode(['small', 'large'], 'medium'); - expect(mode).toStrictEqual('large'); - - mode = getFallbackMode(['small', 'medium'], 'medium'); - expect(mode).toStrictEqual('medium'); - - mode = getFallbackMode(['medium', 'large'], 'medium'); - expect(mode).toStrictEqual('medium'); - - mode = getFallbackMode(['small', 'medium', 'large'], 'small'); - expect(mode).toStrictEqual('small'); - - mode = getFallbackMode(['medium', 'large'], 'small'); - expect(mode).toStrictEqual('medium'); - - mode = getFallbackMode(['small', 'large'], 'small'); - expect(mode).toStrictEqual('small'); - - mode = getFallbackMode(['small'], 'medium'); - expect(mode).toStrictEqual('small'); - }); -}); diff --git a/packages/core/src/components/utils/screen/mode.ts b/packages/core/src/components/utils/screen/mode.ts deleted file mode 100644 index d3359bf9691..00000000000 --- a/packages/core/src/components/utils/screen/mode.ts +++ /dev/null @@ -1,118 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2023 Siemens AG - * - * SPDX-License-Identifier: MIT - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -export type Mode = 'large' | 'medium' | 'small'; - -let supportedModes: Mode[] = ['small', 'medium', 'large']; - -const smallMediaQuery = `only screen and (max-width: 40em)`; -const mediumMediaQuery = `only screen and (min-width: 40.063em) and (max-width: 64em)`; -const largeMediaQuery = `only screen and (min-width: 64.063em)`; - -export type MediaQueryListener = { - matchMedia: MediaQueryList; - dispose: () => void; -}; - -export const setSupportedModes = (modes: Mode[]) => (supportedModes = modes); - -export const createMediaQueryListener = ( - query: string, - callback: (event: MediaQueryListEvent) => void -): MediaQueryListener => { - const listener = window.matchMedia(query); - const fn = (event: MediaQueryListEvent) => { - callback(event); - }; - listener.addEventListener('change', fn); - - return { - matchMedia: listener, - dispose: () => { - listener.removeEventListener('change', fn); - }, - }; -}; - -export const getFallbackMode = (modes: Mode[], detectedMode: Mode): Mode => { - if (modes.length === 1) { - return modes[0]; - } - - if (detectedMode === 'large' && !modes.includes(detectedMode)) { - return getFallbackMode(modes, 'medium'); - } - if (detectedMode === 'medium' && !modes.includes(detectedMode)) { - return getFallbackMode(modes, 'large'); - } - if (detectedMode === 'small' && !modes.includes(detectedMode)) { - return getFallbackMode(modes, 'medium'); - } - return detectedMode; -}; - -export type ModeChangeCallback = (mode: Mode) => void; - -export const createModeListener = ( - modeChangeCallback: (mode: Mode) => void -) => { - const smallListener = createMediaQueryListener( - smallMediaQuery, - ({ matches }) => { - if (!matches) { - return; - } - modeChangeCallback(getFallbackMode(supportedModes, 'small')); - } - ); - - const mediumListener = createMediaQueryListener( - mediumMediaQuery, - ({ matches }) => { - if (!matches) { - return; - } - modeChangeCallback(getFallbackMode(supportedModes, 'medium')); - } - ); - - const largeListener = createMediaQueryListener( - largeMediaQuery, - ({ matches }) => { - if (!matches) { - return; - } - modeChangeCallback(getFallbackMode(supportedModes, 'large')); - } - ); - - const matchSmall = smallListener.matchMedia.matches; - const matchMedium = mediumListener.matchMedia.matches; - - if (matchSmall) { - modeChangeCallback(getFallbackMode(supportedModes, 'small')); - } else if (matchMedium) { - modeChangeCallback(getFallbackMode(supportedModes, 'medium')); - } else { - modeChangeCallback(getFallbackMode(supportedModes, 'large')); - } - - return { - dispose: () => { - smallListener.dispose(); - mediumListener.dispose(); - largeListener.dispose(); - }, - matchMedia: [ - smallListener.matchMedia, - mediumListener.matchMedia, - largeListener.matchMedia, - ], - }; -}; diff --git a/packages/core/src/components/utils/screen/service.ts b/packages/core/src/components/utils/screen/service.ts deleted file mode 100644 index 20a8eb351b8..00000000000 --- a/packages/core/src/components/utils/screen/service.ts +++ /dev/null @@ -1,67 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2023 Siemens AG - * - * SPDX-License-Identifier: MIT - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -import { TypedEvent } from '../typed-event'; -import { - createModeListener, - getFallbackMode, - Mode, - setSupportedModes, -} from './mode'; - -class ScreenMode { - #modeChangeListener = new TypedEvent(); - #mode: Mode = 'large'; - - #isDetectionEnabled = true; - - constructor() { - createModeListener((mode) => { - if (!this.#isDetectionEnabled) { - return; - } - - this.#modeChangeListener.emit(mode); - this.#mode = mode; - }); - } - - get mode() { - return this.#mode; - } - - get onChange() { - return this.#modeChangeListener; - } - - get isDetectionEnabled() { - return this.#isDetectionEnabled; - } - - public disableModeDetection() { - this.#isDetectionEnabled = false; - } - - public enableModeDetection() { - this.#isDetectionEnabled = true; - } - - public setMode(mode: Mode) { - this.#mode = mode; - this.#modeChangeListener.emit(mode); - } - - public setSupportedMods(modes: Mode[]) { - setSupportedModes(modes); - const mode = getFallbackMode(modes, this.#mode); - - this.setMode(mode); - } -} - -export const screenMode = new ScreenMode(); diff --git a/packages/core/src/tests/basic-navigation/basic-navigation.e2e.ts b/packages/core/src/tests/basic-navigation/basic-navigation.e2e.ts index d329c70ffda..c080e975acb 100644 --- a/packages/core/src/tests/basic-navigation/basic-navigation.e2e.ts +++ b/packages/core/src/tests/basic-navigation/basic-navigation.e2e.ts @@ -10,8 +10,8 @@ import { expect } from '@playwright/test'; import { regressionTest } from '@utils/test'; -const smallWidth = 639; -const mediumWidth = 642; +const smallWidth = 700; +const mediumWidth = 780; const largeWidth = 1026; regressionTest.describe('basic navigation large', () => { @@ -53,7 +53,7 @@ regressionTest.describe('basic navigation', () => { await page.goto('basic-navigation/basic'); await page.setViewportSize({ height: 1200, - width: mediumWidth, + width: 780, }); await page.waitForTimeout(500); @@ -190,7 +190,7 @@ regressionTest.describe('basic navigation mobile', () => { await expect(menuElement).toBeVisible(); await menuElement.click(); - await expect(page.locator('ix-menu')).toHaveClass(/mode-small/); + await expect(page.locator('ix-menu')).toHaveClass(/breakpoint-sm/); await expect(page.locator('ix-menu')).toHaveClass(/expanded/); const settingsButton = await page.waitForSelector('#settings'); diff --git a/packages/core/src/tests/basic-navigation/basic-navigation.e2e.ts-snapshots/basic-navigation-basic-1-chromium---theme-classic-dark-linux.png b/packages/core/src/tests/basic-navigation/basic-navigation.e2e.ts-snapshots/basic-navigation-basic-1-chromium---theme-classic-dark-linux.png index dfca3d3d081b18cb2bd3b428ef831c6fd1af6aec..bc99fbb86e857908b2929bc753405e1a2e5b2a03 100644 GIT binary patch literal 12646 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 literal 12851 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 a?!q3vaEFA;z<+@Nurtm-m;dB{>wf^EWcObH diff --git a/packages/core/src/tests/basic-navigation/basic-navigation.e2e.ts-snapshots/basic-navigation-expanded-1-chromium---theme-classic-light-linux.png b/packages/core/src/tests/basic-navigation/basic-navigation.e2e.ts-snapshots/basic-navigation-expanded-1-chromium---theme-classic-light-linux.png index 7ea77726c0838ee9f6a80d80dabee26ef65c23ca..04f7c39c298ecf3e96f709a66a6138bc9be294c3 100644 GIT binary patch literal 12926 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 a^kGgHIei_%wS^q`=Bw~8S${l!{+|I0w1{#5 literal 11258 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 diff --git a/packages/core/src/tests/basic-navigation/basic-navigation.e2e.ts-snapshots/basic-navigation-mobile-mobile-1-chromium---theme-classic-light-linux.png b/packages/core/src/tests/basic-navigation/basic-navigation.e2e.ts-snapshots/basic-navigation-mobile-mobile-1-chromium---theme-classic-light-linux.png index a1e7471f4d01d06db7eea4f83c9538cae9e8d529..808296bde245c7ace5596a4989d1a7d7b4bb9093 100644 GIT binary patch literal 11524 zcmeHNc~nzp+P_u{wT@E9QES-RaVpb~ajOK%5@<_>S_`On34$b8%3=aUq#-~Eaj8;^ zfE}w?R+Y+fLlU+SAtaGfh#LeXH(@b}h=3*}0YVZ8B>Aq+`Of*~@6I1zzvDSM&pqc& z?we=(J=^Rj0N{-d09e)VmL0OPrS|7HkjIMjL&2W`tUjj~ z0Pr5L@AFR&XO>ONv&zcjX{K4FcXPt~ml{_81`ITWU%4H-@j$YC$ZP%5Us^W09#Nkm zZX|U7R}>>+)kdN_$AS5#Y$mqx?@{hW5pSekabC6Ijkn&vbm^Oq();wHPu_b_b|duZ zSAr}do~=jqwdvX>eIDC#a9CD)WzSRl;+8c4@EKY}MObRsy&4AqH-8TylWI>JGbi<4 zk^>+}?lQ=d`)2`Q$SX5GAx!v|HbG6+5;w6c9W{D+ibO3 zg_?N)2!bP*pZwF98TNG?RhwQBL(h47f!wntu`sjm3Kn-{Gj67?gf1s@PImt=5?>sn zdR|pjx2Mmqd0R+Hiz1!P)0$E5Mjr9i-i~uVdH04v+S~^nAFO8jlai8Z{V4-`$@e}e zmh^fl5BDZC8y}~Ovn}c{7S@@*97Gj5KDu+~6FEO=KsDu7o)hFul^i1vx#Oci&|S%+l)Kl)?r>KX&y}_zqnNlQ&`s2^4y*+ zLXZ3+su!}Ip#rwY8(%SRqm;=8XoOeE7|4@zFJPl*^DG*eb+ini=CYv z1VQpt88OVK&VS}~x*8M-Ay&s+G+Hhr zoGh7VwjQYYB)upPiT3g3t9)oVPS!5jY!_{nNBF5HjICB<% zP`7j^j~E+!-D*4|mhP<--WFuuD^`8L_9Hkc-v=(GHY*=B#CD$XnVN1^Tc#?aYbvrw zR5BByJ)bA1RuXJe7`DIV#TvEPIvqk5V@wk7sj?UyO*d?q%l6uR$n+0=M*pi82F@r>(@-;k6^d}nH#F;&Nh<#;p)iasxxO4h+BbuUptbDN~ z@84mYykZy@E`3HbE*HTrJaL^a*Je+?U&&`q#u(`YX?UVES~*+cqnCI|b_csem=vZ` zpYiRw`kgUG&a2e|FXf@;gua$v*8s_fOD%8fZ2aZ95|87D_*R1(J3V=-oKhE8gkcGc zFgpT-xdL)L8dZ=z{$Wjhy0&#RHQIIYE?)NV=RFKaMZ{YO&N(xk#NV`Wg&5;d35IG^ zrFq5M%oA)`n#k!0RmTY?lgV(Wz4HMvwePWcq{E$X;zYw$OjAc|nJ2TI$0LfID-Pk! zPnEFEXYBTDg(uLkWs8jG@zr;}yC3H+Y0y;Tv`V9i(aq9~!!?t=OFDON$J1H9afFvDv>27Ck2c(m5#kO6EVGH~J(Wv&Xk6uP8bhVkvbbegU-B&& z9YbvC+N?geb4Xa|H@}hdps%^-cq?#cGN~Cq#)JqQA9^Z#AgSK!?cveV(&B`U#tR`wQv0oS zzQ!UI#1MM*HQNE6ZjQ<4D1WV&T0JZL6GJWI0l1^?5%skQ=*fl36J0xrTzLiqg1o~j z!zqfaM9h4DAVb%4;^{s&_yK&QS?W3*jQs1sx$4(b7m9|eal(oej z&+nv_>;@XzhNrQa4&Ki$MR5pVOy<}*wNv!%6US&T_T!L1Hm$ikV>{Z4-SY*e4M2h9Q0D=q&w3j1CC?PmeleS zj|b4YAKcYcrLfx0-d-)zv)Nnm29aTWQ6@{_+92ypf1Emiy?AWxx^+^EgWmx!SfyRv{l%^1uG+eexXnUM3 z@>Spvl!YNdZ5ADWU(#+htJP)A%IGDH7Z+!8qaOmn=oB>H|64^Cx#vZVjAl|`-S|ch znr5Ci8`wICP1g_&6AyMU!eVwg_2s!_M>?nd_9OY>Krl>IQZt-0`#(i{cpS#!vf|54 zHyotVVjqT4kyxo*wB@bUTwj?hRGggr&>#?+Pgo|c_JkT|N-afb=`}n~)L}s|QK+u> zF$KCZ-=yq>wpWMNZFXMx)o1*tF^9KYa__pU>M4~mJAJ2z%nGhx_fvlYaH?@AS&;d3 zvXq3IGSC-(-K_e4YhgVEk#K2y%WZXfbxpwHzO{e)lZ3_7Mv0tFkdJ15kilk?3Y0vv zN+(g~KHY$(TgjZ9#jPB9#wdK+-sNyjMMji{Z&EPCj!sVX;+)CBSGj@7eS9b;CWfOE zEJ@X2xq;5<4|hA7LRJC?K*wE~^irP3w@r20)pkJa*Td7MnKyt-Da}KV00cx2-rflS z1FL=qY1efSJ2S;A0Kl_Et6VB#h^Xt5`$E0rI}!olyXIRffKy3lHvf@{JkDk8X1>&B zzURhXTz<5lv1upH)Dc(2Eb+I@PGMs}@@R^>!t~GL!@U)j1^uF)!QyAg^^<+f5t2|; zsmvIixkfC-P%|Hj{(=|wV=%83GtW8 z$@st+Q+Vi>rK14g(}0BkPdqyRhqN>*Z*?l#}DcZ+tcdhmGX88gQ7v81Ln18ZP z-Xq%sp6gpZ0N|aJY4?r|k<_FHJ8fID%VM{UA#KWoD3gPPIjxw*+Fo5`k_36&p6`q@ z>WPFC18itu5Pvy?8ez~iC8D#lMN|R+l>RdGBxP-V?UFF}Ag6dclcl%^CuP8Q3IZ4t z0k(r7a@#F*R?*Z&(_dt>cMD|FKxHLXP78+y;Bd{xm7Mt!cfv3S3t!x-jO?}E8^`Pg zPKERhaXpUaF3!ZAIWi}I05#^s8$yPw%{A)+%+;yUnDExRTLH_aD8m!}IHnt2AC*JG z%vb6mib@Ixka;B@DNCx#rVvAjoP}a0Y!}Sszx-K9Kcc;c)<%2XujjgoR(~@yW>1_b z=N`r?e^UM2vKL(vgT%OLZJolp9b!;UZf{fVANPBJ-o7;K0M(H4Rpl-5Xji$QKgpB9 zBb_wNryOK{;2^nk(^r&rHEh=kwl8qU{CRE?lQZ9`QoUek6(6ddh#sZzpzkdt<2ogH zHc21ZGZ3+RSrz0$G}R0ZKd(Ezms`~J5W!i>kDa4Q9xfKP(ML3*$ym$T7BTIAkjK}S zF-Blk20GiEJEdO%3`zFdk<#YuEiF+UvbhCV?4su%IsbqWD=*f3v{|qnv7u z{Uy5jH0#Fw<1SYEX^n?RQ zJh3-~K73&u(~JHpOPWut5i0vSRVTDS@&WX3f_bjuM1;p>!J%y9xDJ( z?>OQ1;Tw6Wr;aCQ4puBZifa1$IJ3jjgNkZvfrdd%=V=0bAcQ_~0iMQD*wdK=qfsW! z;|n(7ttQUb@Ejq-#Ksk96}bs1279-ce&X@zOJ$CrG;4N5Dys)V9+6G*aIeP{ItV(` zW{fa5J`5x_xU@~Up<57T%QF%T7_teTqED4faFPZr&Z4rmK_mH2y02(^7HO6)M7&CG>tJ4yv8?GTdKMmDri3i29reK%4aR;TKRng8J(VSi{=4)#lV5TrTQ?ffOx9cKAAUmn~ zt`&F(jNjZW1m*kBO{=shD1(~xTe|;AYXMnlaVR}pAw`oJvL_2; zrUihiE!3I5QmI|^k1sH{B31~mJyDC zy68XIn`mp%@`d_{^OnlCcnn?m0t{rX7catW*Sau#PBgjXP#C4k-zcC#=c8a&C)9aE z)$!@qTT4Gd!s7MI*S4=klDr@zf$TL}j^gZCoI8VZns(y(rpltzD|hpuE&>sRi-m1T z5^vf}3>DivkQGXzE5m$yQbCwlI8@iFtTqjJcjxrI1H@M4uU23xJZ}~HezR2QUbkiw zv({ua&?!ze1GQ#rF}^>o41$VnvkpY~?_(O>AI{F9Lwyj%}IBEY%?6-~&dKTG`jn%CJm`NT`&7R@}#wYy(C1{rF+fGJQ4P z&|Dg%T$$5zAx!geC`Pd*EBx zJi6nu>X)jF$n>%s(D|6Ph|}C3I!h5bd)@KqVPPaLxD_cZ9xe7nZ4BMqS6SrKbA(+A z%6p+uM}p1z=uOUyppWv!Q1*k0?8Oy(dJ?0rbtK(MKdf5s#Lg^(Iecj z;aU4i;9|mbC-v_8j=p4REQL0ogV$k*>MNPF_D zZ&3ODsXjR^bIoUYHxzVh3g_FbDIxi8ek&_++MnF(jV?iAxl3|^E(W#jK9ca>-TUzB zdFV#4FQxbUqvpE@%FTk(Ad6;a?lV47+Zk34_GU1~%e$=08z>jE^YR8muN@f;)kTTRP~h3B(3QZc;Oj@bk$k<_1%tbAqU}RIN!G5&7lx#IjZ-7fo+?XQ0ZNgfJU@>M!>J1MjWjLudl}953 zHCmO2WMF4S6jfXzNh_;VwBO8~S2D9F{KvDyKSC;*ps!|HN9Aym34Z!Ppy5ZlfQt-> zJf5}{5M<{_qiqnJ#W93bs{9a4>njKF)IOE&-8vijL6dp5AkbMt z3^9n$cG&?>(&8KxfevzD@Lk@Gi9vN=yh%!5zR764*53X7l)>nss&dmE&`9r+_;9N1 z=gso)=+IK>EU6;n`FzRl`20d8c9tXyIBMEiekeNQU4k^D*GGFw1Idq(DfgN>%{7cX z!br<;bem8(sa^P~Fn#p-w!1IU+Ka@RJZI0Bu_kdWm6MZ3aTdxhLQqr_0qn)kJ@J`J z@oqa3AS5zI=sg$Li%_U~b60sQG*YKm=Dess4(D9g<3>8ES7D;De0a7jQRjKf?5bj^ zU5_5h$1-ivk_gNY7_1YJ(MXVFCQ9@fPVpxlNB@lEuG5o@<8MHsYjMLRBw>4TQx_CQYH&&d&ODVst zn|Jem7XXSbtX6Q4A&yFmvyD2wFw9C}*eNZwcb!T5CJ_5g+)g1+=VJBlv|ivbhU*0a zfx$)n^L5t+l}g20U+p*hSK1jI1vtei;NP6=b+l&9-HUS}1QL+qQmGUw;`qId^s2d@ zeq}(Lxm2y}@*UIO-}SE=YTHoL*!jU)RN6T%{fr%nLZKK68pt=i2axtHcEftd4y46| zWio7FU?2>`oF1{_LM!IULAhKG4<<)657$R9Kx9IRRHO*|t9=uJQx|r$-^|X=hH7dO z4fFtG`c1(LZAAs@*cuYZ>+*^QfL%8)jO4~45`q>!UyUD2@qp~4LTrYg!Dx&i!6^5R zBFpp^r+So=lkUSefaH@sE*;36bVYSz+Pu-oG8wcH#Lo~`u~64Z!1;r`Z9mfrl!6?dY!DSmuc)w*r} zl5&1?*mRD~GLAWC`_T$A2$kp7h^Qz4I5>@@t@lcvAY=s5;?4Z?uF1Gpj2=7p?|r>uYCyooIj8y{p#{dJUo15PA)v z|D(l(mChr-w-UMZy6dje?1DeIs$m;)7+Sv?xhF$JE@Rv&LGD|;Ui!mo;!Rq^lgW>+ TEhAkE0PNcv`Z?>f*fakPc9`?Z literal 11233 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 diff --git a/packages/core/src/tests/basic-navigation/basic-navigation.e2e.ts-snapshots/basic-navigation-mobile-mobile-expanded-1-chromium---theme-classic-dark-linux.png b/packages/core/src/tests/basic-navigation/basic-navigation.e2e.ts-snapshots/basic-navigation-mobile-mobile-expanded-1-chromium---theme-classic-dark-linux.png index 3bb8f42a09a20628d4486b0fb978542263dd5dae..c7dfc7cddc5f087e449681877d6f046ab10deb99 100644 GIT binary patch literal 36326 zcmeFa2T&Bz)-F0`C8|i0WFSb+l0gL|2}qVKIp>@e6a)nXBuB|Gz>xD0B!e)LC4*#! z48stIx5sn-SNFg7)~#2s?tT9`^_UuK?52Bn@AR#;zW!G4;MWRL_&E1*AP@+?jI@L@ z1ai3^0=Zgz^E%i=o*RD|{9JNUmU;mx>Z4qRKpsG3B%Z6fC#_HUIjfrZFP|d{^J&#? zUHj>pf5X7MZCZf!?j*I@4T~erungvhH_0f!8G{$ zyVDoeHsUXy_+AwWC}S=zidcOxC=$vYjAL=L<JJ^4%Yv!!wO+iM_ z8p3;eP!1f@g#U%=e?0U*o%f$M3bp;w5sWI|zQwsujWW>DuSGDfPLMjv#lAD=#ZIec()cKD_9`X_d@~h7IFm^=HN>TFT%hR#cwU|V^5hp~!P#FT&pT*u_zBkTpgvRc)Q%oI6 z2?;T0ztNbp<#&E^JRzSrF5-83eoDjYyOzfm>eJK9$9((d%2|d~U9B)^5CYArDS;nH z*|@d4IUiy8W0mP>&!QUY(Y>6HJ#MjpY$bJ+ijt-#7x#4Pou9R zcNcpEPy6b|x5up#Fe@3yJLP$f)>1|tUxveT6vL0;mmu$^ziazzSc-YlO}#ET37R=8 zB3WKsvm0qFu=yz2+i`xxcbs(AIi z)$_s5paz8%kO4*H-^YcQ5CV-!yFvyaC8@&)qzjy5dd)vgr> z>r**vMCbPgPeLob&i}A~+nJ}a8rvm4M%nph)V=)j3m2L?I$yS&TU4ar2RE$oZ76)U zNKAa(=hl!h3{|)Iakz7QRB3aJDXhw`EQ-O-pkIZxs0w5Kms{Ae$;vlVFbqxUPf$Zl za+EO3pr`hhadZjtik&r}P8BXLOcUC94(RhNT8s5uB}YoB37pT`x?Y>79)(9V>}zER zgmh&46gu`e$nR92)etS`#e`nnZ^S^cJCzy|f6Gy%=8G&6A0G}e^78Voc6x2C1`uLk zmPiRgoJ_O1GC}D3 zKu)>0D~eBIU3Or$Il%c?U(CW6Z%&JsCUwBa&jAr_b#DIEQtYgJm>X^rb|U4M>32G_ zRpo`5_rp|NC&XkFu^wON+RlD|97Tf(=A!l~Z`;|!$G5b!9EfQ=@e+YM=Vi+$=c8xD z^1FRb_U$SvM9Q^5Yf-p(Z9jFQ)Qn7m>hs<0IbI62?Ks+P4AWtA`|RXoX1W@D zTY5sObtdNPX`-VcH9u{B9=lR+&!34MZxoG(l8MVRhi&Z6x%skU_XU(QHZc*H<(acW zb&*CbscA3vc4h#DaJ8!QtO|Cqw5RUdZ-S^k|&s zbjQ!uZTei;SbDE|#T8k9|SqZJ>b%*&-v~;T>tQN}r`z>>fh3)Vyc8rd= zZH?yQ$$?u7Roe)A&-94?v=?miKIaSDDs4ABnxe+3dd(IU<$ZW_fLb;D**Qw_TowGu z?^k1EAYP4Rs_$_;E#o}`i>7ypLph2xnlZyIZot;OB1ScqA7mZqiI4n*& z1;BE{W@G0_3i3$Kid^Mf77X*_Q9r1feq-Yi^8i_YqyDL1t^3aTY97Ph(CF6aQQ&nt zIy%dt@Rw_5er4)3smEr8J`Ty&6G~4gN5*E(6y$atdAGAK9Z%Ib?RpUL?B5Xkwf>Vl zfnQYZ+Q+uPmFH^|DHOwC3cHiVGyqf*`s}ok$|_*OvR`?>_JcbIV_dD?cQd11R#UtN zT2@yDcN7^^opv*6S7$7(P;GvvL8bt9O?#8_gaUI`w)`+oR32L*y4Cj2QK-hjB+W7& zyFTlzFp3=g;iMrjnuR1E-TBz^Q2q=m^-a_xQqON5*paCgw;P~QhO98#tzWfmZC!-7 z@^UJ+nx4xHh#0-JTKa-F zJ)TJ(6vJ$xQG3ZB1yP7b+lIakSF84NDW0Qdo~d2n-x~MyZNN8*=zqd3ncsfL(pYPKq*fS3F(Qh-9%j zIyv{yt*g)%9i#~6$#+I?D)iFn&Ts>72eJaMT_m4=^Ctr9^ms?v`Vq2&|NM&jpEwi$ z$tn2fhA@?Glb0>H-nLCU0rt!fqA*xFByjMK>0x+ha->N-|PK!uomcxu61d^ zpej0DKIwsTD4TKjEj2D{91M55B(W3fpQXaiDIo9c82m|B+7jH{Tu_|Xea0&F*>x;Q zA=?|EGVqkW;V@e#NR9IuhYH6DDp0>_0MK7H)|e!3v^t4*Ur z9`-6k&A78nQmmr6*CFp7-qcIeusXZLTj6vST!`79^jTe}9^~Dv|GR~M5gfQ(f|x#V z2hI4F$DgzbWzYgH&MNuewPba-#SRS^chCR3{r^LA|EIS9SJ_w!UV3{YpqT(Rrd2F| zZNg2$3D^Wknl9(eT(2jK3O5&*p$Gs-h-Y5z=C-Ud?OpY?4>z>KP$oCC1`{(kH+^%R z=(!2J(&IC&#m|*~Pv>zS*3K>qQGI>=nJfpm9?X%1Y zcM)v)5bBJLm9s$Gc4nvHC2cVbucI=H>jmnfZ z%3#y2&1`Rf866!9O)piJmzM{g1Srq>0e$nth&F{S?Ufq@-#X^|r%OxKmm{O1)bvU; z&|j#ax^0r4=PR55$Uo&1G!9|wmjeMrAgWKhBEi}U19NcZ@&lTWSTE@ z)&Z2K6ydQb-6dfSnPb9+A;ecdk*?Y@5?OQ5|u!TH7S3ngv!g_Ce}}1Ez~?Ak{Mv8c-jff#>q(G z_+C#H&ts!ntS^L*kDp&yI9xK{vA>4cjTZHAggOi=tEefz$&LK+qDIHIP^UqM?&HS< zF*k(*yE|YaYLwd6IY|upGWcGe$0^hpxw@ z%dy5pldWd52--2_Si_=ON{d_@9o0EminelbriQ$G^9h)w7?Z9=ORxDj8eh1 z*y-rhA84q*^m+q!q{+Dll7iotpVtVs;OH5e-Z`-KZiYe#Ym_+dH{*hzj645c8wm^v z0aSR`h3ZYMnx7I|&)n&?07L7YYnyivAF||CZ)fKxR5_^EN>+L;i1Z?)-{cWdTRT|$ znPfeRC>|+9jDkUea#xQ5pwgF~ZmviO4lciqnsuR+stY>9F&PD z(8(+K`7`e7*70d93Ph}tnVcC?$bO5#@&^n#N8Ua@KC$g6Pk6Ux@v{^E=BELpTWDk! zsb79VLR4w;h|mnS)_R<{(}#y2ke;8#-2~h)NzRyVH0k~O3;dO9YikLJ8J@TA9GyyC zPJVrNtee7yk)9^=*FUlaE$p~|ON75RdKs>6Xqc{$ijhdHwC)ckV%T5W99=wcFRv?? zpy0DnA4?HoU6S8FQhlRZAg-n+OND;MVn+_H{70ldlD4O`+_m@qu+MRPwyCkXr)f4o zkm%S%W*J!uF+IkXK#PO=qXZ6%(rGs4!R|#xXjf%)R4ju`!fxk~Itb@dQw1_Wp`37F zfg#>>^g{J$5qlG}!O{YfjsP!oyWuebKF!lt0oU;d>esD5ia!K5UT)*{es>g}i9+rT z=O{)#3JtAwUX8p@L7}FuR}|7M3*tD`{s3s}U+?3t+G*R_R7c=Z^1r4Im-6cA)=HLB zP*C@1)0^UUEpR0!T|LX_a9)5v&KEpYAS}SLFUiA?X|(G4Km2&8TkozEH83~v1!K)ry|{;$lgZte0XfzYdie_t z=zK*iN6qse7uRahsB1toonxnetL1A4;YB>o3DN+=@SWX{pb=Uh@3n813L{VWyuKeF zY(O(JX%|Hzpk^8cUujwO%BAIES=7%lXN#_NE*;zVuu-bD5B$aVVp@ys+2&nOcwzg& zkvG6K@Quv$Jv(N+eY0~5-LZKcG=V3lKRSQdO7FFfPEv^5`ma8Jn_W+$a?=e(S{a!2 z?*~;Ag&W#cmI(HlfiGWHwNR&)ygWR)m6hrpVKjqKu^x@%g|5POc{zDC8H4Y#IJk?B zH5HCWj?wo>068I0(jbY2(XQH!zB@`M$*0Y4U(eY~&kxW$|2Zyh&&ratx&;xOTeu+w za7~jfmL-<1XEDa4X2G$ph}x}ZvDCOLvH+^D@3fJqQ8e5SJOIOoYlv;F7`j;KMyQeR zA*jHE5#VMxIP8q;Ym#pmfF1AH=E(ojY^?cUuuS{;@dROA7GJyde@p-EpMHIcIe{w& z+4^=u;k60XVjn4<9AIrB~1f2cr#ZbVg10@KomUeua(*XLF=ERtf{ERQ9(w1za z>(>JXLVmG;z$fDD20G%gnF zGDHmd_31Anq%(W>b{rfMM69x@6;jjbdSX_8@678aU|p4D(!JT}%zz+*u1Xt`GRLe^ zE^ec{^~gQ_5v#;1z{h-{E|kiVAM{U3TG~UQP`dX=ktim!=F1zn*C+7w8fRd!dZ&4o zmI~djT3g!3W2uYXy^K&ga4O^wlI@=8g)38={@^tNmyOV7YKuazo#)hr<);`?fRyevQv zJ=-E$Mw?UjEIf+rvArd$ADLaAbp@}OW5o*TC)5@6QfMu@AFF7$718?mE`0%ow(Vmr z_I7mK`t~%sDLPrcr&NoQaC3^{^QsV!_iqmT`#jQnrDenfAHj_eRBl}B)<;KoPuB*r zy32;V46B#hTl(2A9!1Y=*Pl*SbQc`2`+Qp#_&rfGTN)2;{~9YZqm!Aw3cKrltM-@u zbJ0}Au=$miHA|m2x`mMgx}HWFdA3ws5@AWyde~vuaEnGOYJVqBC0{@@V{-lD+C&vB zGBWZTTB0aLx8y}+xqJU3R^8G!XD8^`iH#Ae78Ovr%rX=T=i`sa%;ta_JxEmL{fXs0 zfNM`~-;|C#Mj>;aJ$TSKLsLfq0C=VC<}_3t=JDLY!GUSIL|h2BvI{ByE1^Oxf)-wC z5C9zeO1r6ikw$MhZmw*r;XUZ^uU~27<62ZgzOP^y7X8&IhN}A@!dC;18xteTx1Pn3 z?!_LgPj}?B+}_Q3|EOzufxH3!Zoo2eJud%rln}5YjT@)yIKq!=jyS)DiAxK@G}u*83Tt5lKKTNIOx9`q>@b-Tm{6 z%ytpNPZMS{{Yd6Mw`VzZ@>6+SN5=%j=;)}Mg$`^Knsg1foSn>?+x^V9QO|QHCqGYs zal!(=2N;ldo5W?aq2Y?vMOFOHu};efnPr%_-}mp&!;GLsMMX!a@>i}u;bYLQBBWvh zHoIl39;)%w_VtRRG;nKb#&CH}_s!|(>DTsG70WGpNRs&-Uf6B=>e_}&)yc_~I}Dme zZ;TBZPD`XJew1tzR8`9wav*Hojlmk&Y2Y)LvdCGD7AQ^Sq*_?M49qq&WdaD|QBxC{ zS-vwL&1D^Dib#arilRqulyVj7V9FD$wFNvpA~PAoU)d1XMeZNPbAv*O2TwqOO&W%! zEnYKMG+dvu_EdOn3i$i zcdlG4TV6?tlF8y?er|!Pii(ONI~8bas!uZ8m8g+Gims;jR~C2N%c}|shHF459StZz z5u*-E4Tp$nG0#_0(?aR_EnE9dvfwU$X^QNAub_~BLOIa(nUt4N1U_Z8#P%k4j*;=c zz%E;FBDWNwd_qCJ)8mgOB>(Y5!z|qqk1x`Ms_coUw=*UsXTQUxHEF;agn`w}hl~tZ5 zs_}Gf!;u;IBl)=;@GPjU8U4SMv7(ZSN>ty-DDyoWxyb8;)GV;k2}|o#1i-a40BtgB zqcCjHdg|-9ZhIRTK+?zVFfI7fwYIjlJogTQ4VK^ZFuvzjBN&Ou{q8_~;Mk8hxIhn1 zcUgNo`IU&E^F|5uufimR5NTB#lVH*IpIi+M;8Zqh_g&EeKlK zs*r0ARXS{PF)UrR$0**>29HH8s^lAx2PEkjJeY~5W6k(9|56avwKrs4Yo;J2g#m}9 zpBg*wSMH|F0jPV|4`Md2tuwTg6F=BHi~e8Go&PG7+y9J;{l~pska7R7$v9!Pu(|)x z0$dPt7sT8JG54>}(p?a97sT8JF?T`CT@Z5@#M}ijcR|cu5Oe=t4^}UTxeH?Mf|$D? z<}Qf23zgi3O721>ccGH|xAfosK@|QUA>&TZ*C+K~MWe2C>>!*lO#-t@?EHzV^~F%U z_4Lne?YY(tovLb{#v!Y!7Ha6R?YPGZ2FHaa|RtoleUF=70NIZ7BvT%;BiDU#h@T4kxZlq zJk3?8tnB8Ihij;3uNSb$`B$ayI{DPNrP5m1I+jkmpSdh9EzeMFZER2t)`N$xM>REq zBscLW>Vf`2Nc2o1IXTw&Wncan;AbI%&G=Z3*)^U+ zYKR$J9Edm;+?X!Yz?TXq(BkVus=3G)YE6uPE46pR1hQ{E4+8b5lIX3XzmxBZ-j*E(H!6REBI!5j9OGgTq zP`7y+xnyhw*6YC@MSSXWb6)Y53R+tuL?*VNJRRHdB=3JbZ=rj(&~lOV@(Hw!Gwi7dv#BdUZ6(}(bGoiF#*Y>}!XFn8+E*LCfwYq4CU>nNBkSnbys=6jy3Zp=0sLs*p$gDL9j>RO787O{&$RbP4@fAvsNQC8K^ zEv#L$6rfayj*iJMs?|b{EWA1U1X?(pZa&W}_4D}og5vedI3NAB;%eRRp@YgfczLz7 zAsjfdz5>iG_MP_p#{78X1UYyu4}%6B(6uTAK@Y_PjVI5J5>IC89UCLsFF}f53<04E zSs-QD9AVheJa#xhB}Lq)Hp!^$EP@ZPirc2R?Y~;Q-&(4Q?)nL0VhMww3n1s@3|Js7 z=Jm&Fkt_f4ymaJmV#e=(#GKlX|LR+;{ysLf{zuYF;a?p4*Eq>Z(y27+ebXoOI!rJv zKOiW*h6U7Q`&mrtwrOL07IA#MIy+XY(xD0}PRB?|z-Y3=98d%rMhR%V4?<*Zn5J{9 zO3O?VvK#XAf)94V*-a0W2&biK9}V&Z!F^e7f3-+p^2m7uRWJHR&Z(xNO}c?i(}17> z0!lfaw%&@*&Kro7@7Ao)y2G75etaC%usK3lY2JtHM9r^PZ4e;Hrb9M3X(1PrTaqU; zXYc-dhpb8)s!=#(MJ}hNqnv)=wA@~fl?}Z_>;g4jRAC{PyvkN|G@}r6PvmT2?x~Lc z<`fX(CMFf|>G|o_937$Cy}Z0Scwj&@=WAOOcI|S@br@oKFicTQ$!wV}KH@tAR&VTH z&4N1}7x&u_MG_RWIF7O!KnXR@tRPir4fE^jPNoluRI+m)h$$)}k{H1pQOWTe>YJ*& zS5F0WRm#t&J$vO9)PWeaNasl2>tJILh%-@zl$Cuov{r#E z=V#Rw11i>neO>&x>|I=3IvKh1Dr;$wQIVTqsFFGb-r^#z%p=h)qleRbItbSx^VP&}786=lz zR?C65|AG~%K%v^ePCjJtwvZoy#j->9lyh))N38y|28V=)Ys^ht^Yq&@l^JMHe}o;jT~Q1@ ztIlijnlksv$X+Yj!Tg)Q(pntvukN}Fi!U8`!a@E7_(o>RMA3HvoLk=0M85;&hXbi` zQQ;yDNSlQo{Ceo4=JJeMv7o!khec+*#wr#VI)cp^SjLQB4sm=>#bQh08WO3Zp%FWd zs6c*3FhxhCh#F51eY-cT)tgL)!(MTbfDr~OI&QKAva%|nmmS(#>3_4QIOx6q z=2cXZ3=>VqE+N8~oI#D7{Mv6}^YQ)#0qp-NzUuTRts6h!_#<)xCCFWy{cg^NRTv6? zU1X>qvop1jG|e9F0fuXqlX#d&PX;GQTvqe6JIx9-%sqmja(KFOVhG<_;kq?IE10Ea zI$Ri>%^^J$z;`#elc(1JMuU45>!nRIj^sx(o4kBAJTxNdg}p?R2tdOKN->8Qz{x8& zj&f8lRB!!~TiJm54y!{2uqN#NNV*Y5YWq7a441T>$89{4&eGaanV*u{Rk(d)WKE43 zrPZ!X9Q!TzY_f*45a7eR{xWQ4g|QX%)!>kqiAi@~cPXtqGn3e8tQT4)a*3V+89J)3 zVe5;5?@UimbM_)Z0z_&e)aZRvaWiu7sC<4mQzv3@5U35od>LA$sc=HGU9-CZH1euntMr_r zqKH9a5wnKxV2aNPR%q+vwO}Qn%SM$48{8D}8n)kGNpqR6*HarE0-z+%h)eqBs1scH z_SRf9EqUN~o5jU7%o!nT&(ERV0v0Ti6sJ9l{8noo5qX!W!gE8ARY7i)5Fek3*+=6_ zcHZfa7cv6_=d2WWfgo>r7;0%_Rkn}Ks@o=&Q*hVUvtKqIxmRvLRcm~Ln3$M&4PMm$I0J82K*k)OoDBc^otqs)f{%yy1wDer ztjlu#Zq-#!g=Mo9l9^(AvX%k^9~#}dbqn;*$mhMKRePIIU(tyoZn0#giM+x2Vij-? zUq-6EEjE;h@UFS+Ey-t@7z=Nw@YW!CnHgou%*0?70s@}Athyg1B}q21f@32fI0o4( zF(7>cXpR*X!)d#SkV*x7>U_txoj@#pHyG=|0Y@&k2vgi3paWwt`}tZT!eJUKIL6%4 z2ZCedV$WLrP@aE1DuLf29lQ}j?a=l8^h~{GWO+%hG#Iv)y9-^wYYoUOJoRk^Us{WSOc^ZZ9eIz4JitN^NE@@VI+6mayL=I6X?-=S zuN_3tT^ky?NY~AAI$-nyPSD5|^o)h%lB3O$J@okacxZSy>%eK__)nRvNoEdVJRdKe zq|5LyfV7yFIaN)IytRC2g{^$paQIEoVQ;unJP&Ge&lEAn57J&g$^Dr3S<1mr8dpUn zqv9GQ!+tfkj0-OaF9;yp*ExHDbB_E}ZZM%mdonI#>GrAA#+vh9W;BHbB?Q7OamHOA zXwW%FhMA2M!%EPLwLn_HMp*w&OpG~Ja0~fzEA_7wuTT>80iAWUmmz@l)wfd}eqjIl zukNb-FOW`yhe3$^<`;JaCjUylp!<^qER;bAjgM~G9VBXMMZ{a6O2H2ISD@k=kw50X zDw8yFt&H!)kN}Cd4J>yk`%kDRvygVS#Tqmr!JHkNH->i?H5)4Nh)dq-H?rgMC4hU8 zZXp$xi?Z=|RCp^~`lqp%uvZ)kaHH)|Ou{;OtYeu;YEWX%$N7aYzZInI+1t-c^&HFZ z=RZS$Ir|Y8%Mu7jv_Hg#;zO-DkmO#*U3M z4f3G$G~-LlN`bo((v3hZPWwb=)^v4w&Z9=76I1={>Z_{UUhR2;1lHxHwKoqqthbN7 zMK=!jiCkRuBFV`;cd>Hgpq|p%(BR-R4Lb+-H$}RQ^tz3EC!r0Zl8>@$>*}^b#W+nu zaCZ0h_kYG?qY{^6sf|gvT=T^98XY#`g~HLv1!JH^UG0vZDL0!D#U@J4P#JiIqEN3+;q%}C3W!*{WoL%pSuiygzm6>5_v;C4Euua1K;?s|m&FGw z#6E3{1QwZeQecb+&*&HGnNt~YPq?|dVS2WFVs?dx2hOzsoN0o!re-EJ+nMhnA+qvu zw_)~vjkZ&@Ss08jFVEBbye!EpSFX&%T|jYPnj&YZHVg5?BZ24Iz37-%^WC8H4G5q? z|DgWVdkE@iXQU!3kv|p9hFsV7`PZ=-V;Q_``dVH?SH+)C)qAK|kdqVEo5^o__R7i* ztdAkAY!t%uFK!`Td9;p*{0FDivgR$$wx6r&mbIJv?+LZqQ9b z^V!AF+ORMUfMJ^;>`@9lu9W!b%=hmvq4p1$$nZd7v0^G)cn7z!Eo_t-gr(pslfYvU z2|&(UG}VO=3q53y-M7ZIFcBbY!jh0`Ktt`u!cJ?x_e4izW^$ct7cg|Qm@~oSGdHb> z8XaxX$^3=}Q5P4NyfdA;hQk77^3_%GC3$%nC0&;a0BMW%{A%i2`5;y;)Q&PjJqD9Q zIOa=EiVvIRd6XFW%_sM8EDhHFC{5A~{1_TCx4G2xMCW+10EDG2b6@8;jQNuQ&QU6K zOd%BnCJg_V-XoR0spw+qGFh2rf(@phqj`!~pF_}`^?JGa{sZOO;5BigFa$AAwI~ zaK{x`&*G0&XVW?ia>YDJfdPh3-TGO#?vJxTypUZ(j@<1#;N!68J_}E&K#t5g3wq2~ zXsluk`E(RW_efZ(H1^!*`s4e{f{_ty{1pS(IPYom`@9t z#w;YbXU7NM^`>eUdSb&{g3jM|59O_oSA3?!ZEUqJDYkF+rdJF$JPIL>?@L4=!Udd` zcY3R42C9`>ChLu{P4s+k`|?||>s$3Gk`k%#{)3OC<}-Oju64qe!G@fyBUhJ9*UvcKs9Q!IoW7@5FJC^Dk(Yb?@ZtON za-JBNPFFs!l|4VDTdgzp25Z7}Zq<+Vj&Hjumzyhr3PWSr5d)@G6Ph)ayy2p!9Qr>K zdtwSF4(A%hwl@N|HlJl-hlpd@W~aE7A72+^SCWuh7)hbFzDpuC{N#0wGM(i}!E?ms zl*Mp5UBs2^3x?5uPhh_1{yr}5&E+dsfV^;Sp(_gV+uP>w_{fnSgXin(Tdl+9i&-Sa z{##-{^q16UnWZu5p8eqx1SJKx8DZ5gZq?Lqb~0AxMhN=kp&#b-@Z^N(NLefpgVcxM zQF6S~xPhPfw%H$a;SXkwA9MEhTx?+r3-=(h-=4hhHSKY<784VD@#4kJTemKyJ$rxo z!-o&I$;jfoNS|Pbd=TTd9?x!JRf$&N&y!OpQ$*7H-lZPxt$N(1AR3O?q zmW)(-=7{1ukAuU*8R+Q)ZNzMi25u0UPnDX)%s;i6j5~5#;_&OEd_~VKKJ6X=wthjS z(31@k*g6PzJvo2o5`LC?dc0z;tQ=`ER6Zteo%$jpTV6!X|I_3L_(YW<89iRqtrp|A zaX-ldZ$*tcJHW}Kx|*6G^M9BFn9cNR22kT*Ogjd2bbu_0_g&w7I!b(xg2B9zwguC% zLd)k(ooQ$eA@koxm*WZ4zz&=G1Sv0fB%k?gR}1#gPYZEvi;kDC&kiWdvF=SOOGvby zXeJRzRW{j);bDxoh&ektMtV`i_JG7NE>Y2j`n?hD%Lx%`> zweh_ydFTj#G64`nx6RoDFvaJmB=E<%-Y>=#dCh65*t*M*{tJav=-Tile)pBz6K?BG zi;kSD8C|oEJ313)xA5_McO-Rtd)QGK>b+WD$oWz#5n_s?n^Q+F2@hJ z_Xb^|5K{J(4X>aU@M3QvX<6CY@lEV~MD{pNwoK$`C>E$QcZ5+r7GNBMPwPF21FHz! zy|48f&Q|Ye0-)3MPY_M%0u(lhBx0kz?Y4Fgn5&ejI_}+#Dkm-V%6#>_?)oF#-#dE< zNRoh4Om5!br{Lh`)mK}g2Ng#Hby9?uqXm+{3^#5bMT6Bd9rk~7wuh3-XN5$Q9dDI- zqtD!aZydbZVo*5#1S4TzYNHn6_dVtBiDffc*)|X!T(a;F2&l22yS!D8rVb*Yx|}At zx8%GzbO$=zy-UozvsY%o6;CeYEBsMheD&OsmUs*L$)Kr7w~k!M;4)ZEpqdr^5)8vu z?ZxUKH*|`=jO;5~7M3sP-dw#?;uB|WwjTmXOgj)lE5B=Sd$lVU=5rY#`e_G($gMjILj8dteo7HG>a&DJl`{yaksVBIWbI{ z)v^NQ8>@B<@B+yA3@$5H`GhTeGp6=9yrWaJzdGiLT7T~CEsPLGQ`)5Zy{}er*xwjN zR!&i1@y{-LzDdYzQ&`Y-1LqwK7FuT3clq_%_aF!vSnc$be2)RxSMQz07f_GOx6O%g7e?%SI$Uw{L#?qou`eHK|9Vz?snDcY~2omTb(`G=&YV^|7kh zEk4^vjEuqL+-4DRaVyj84<5X0ZIu8k3rI^#zn%O*NG50~L9q1>%x~%G`G}wqN()jN z1*aPONK6|M+4W~J?BA++oM)9!ve@(A^}y4se#H@dPh}3uC}PUn!h1T zuVra4%2j!Tka-X;pW17EZ2mn-e4DU8z}O* zL9ZC^-)3ksq;1!q;Z>!b56m7gr#%j{KE+zRr)O8Nvt!D0-&stR7Zs%#EJWNPPAJ-X zD&X{{%<$UTWBuzbvr*^XvY^2r1XO|&h-n{wm$iGBF1=SRROZd0Gl81-r{kTWZ-aGf zV=c};;*#=v9}-@^e3_rhFQK*dDrN`aXFN{NQoxZyLPMh%foBwq-;(xfwPz1~{o1vN zq@O46ACsYQznwT1$uJ;z!qw&R7JYbR&&Y6vN=bm|5|d^>6E^o6y(K_fD{0!lXZC z_?*b@@|_qK-R?n~ajfCMh**>HS`E$mCGruGx`nvS&?Im8(uKr6@WVWF-I$h_m=Prl z48ErCyPCq<3>FwuSrvN=p%QXl7=C}{76Ac$Z$$Uj4T9Z+TqWzt@>}l^rax&@d&7f? z+Kno-4mX;%>W|xzI@R`SOhO5O7z^uX z_Wz-?o-QTM83gahc)PMaC$YaOo3d}GtSpEKATFr3fH$`nG< z%P#i8lq>$t;iC7k)XP81%i)8oY1U(okXL8MS}8bnCf(l*+BD?y0RD)IiVhX2ectYl z9;-L$NoJD=L#-9+Zmh-iE*h%dpQ-d10~W^a$RCE1i(2y&cgHfMo-YQq;7@I?2FQJuBf>hA zOw{B9_Q7M;?Q_zpW>tR1v|zrs%t`m~kiv%7t~@)tj$b;ZDB&0$$bw$FIlt~<8yN8JOA?O8M=`_xo^V36KhfK@P*%)1`{X)R9!OUUe^E# z8JTomB%Q~fV1`e@p$6-Rx2$IxrUvQ$*0h>@ktTO@xAQ$-K-k8_V2QXFUQ6ryD~&tD zyI?uEh5*pM0S328?#ou($RDWJbdrr_3msgYEnDS|wbZ&Q4-vs zk&@h*Ug2Dys0uGLL;SJl2k~r@fLDx&7rNAWj7xb?IZrDKXP7$orIsaAHCDTpqVJ5XV z9Bu?oVyTN=yTXt7wsJtDEre0t&;#zvJIq-#$EO6a5=Y#mVOt2N*U~ExXg;6&@jZSV znCl;AgJy5J;ytp?d*XVRl46|1Hwg*Ne4KdzGJIoR?#TuGi9v-HtVX^pTRu+2iGFXn zZ?U2|p!kjBa>GJvT*>^Q?_f5?_(A+ro8Kk#W_s)Wdrvi7jJSO1K_hg1{cbls7lNHn zQI3@EG#(2EFVW=%^q9nsoDiLogY+a~3DRW`|Og z&DG%xD{mQK?FjSoRTaT5IS2&bUPj`%DnMC@{msxeN0iw$ToM*(7`2G|QM88pcX2PA zpuk;;vks@icI^tc8PPv~{@9vNyn6=$UR5iwMYc|Aqi&04j$l1+*Ud=~?cW9CQL%f6 z1>XfZbnWeGsmWMn2enW)H$o(+=NiBl&2e2e(w-RB9DRwasI`&BlTf}9Id>>vIr21M zY(9^UmFnFcsA1=1Ju$G(a{0HIXVX5*Hu;l&VjbZ$W&;c1W2G+4kni8WOT3hLUGm2# zGcy~IQwpMSJi**MW;Y24mU@o%R)5uSb8>P*$}Ri->E-Va@}<+rk@yCW85+#_AH7Ps z+Xfub(jkr9*AM$rL^{Ab8ZO!MCuf@O1^pOS^_sm@>$>_XUO7vq+WtK|iEo!bd&AWx z!;)=f3H|%RJ6D(cl8x3FQg>g}xq6G55g&z54YnD?pX|sxVg5+O;wTF5iry{^K#De!HQFy$l6G@>~dD`pmFV@d(#O%U7(RO#1K$uUf z3*4=qDKB=&gzxE2{zQ^k>Q|fJaN`NZ)sq-_m9;`oP0{smvA$GJPD)|tPb(Ex7L&P3 zF*aIYHPauGpDp&RwHv0ksU8R7(*X(yQqS#3Yu1;%cyvIu(hucpZvIFnJR6Nn;iKb? z{?sWA85f>-I#G;kztDLH=ibfCV{t-G!{4ug2_Gw-o1mzzd?fjU3=ox{V_C91pz3&@ zC^fArYnc{?)T?PO(3qh--9*tdy>yU5D}3D9@*yy=+N=|>cATO2g}dH853uO3#kU$Q zG+RkLZ}$wPUR}==7ywkzH5wn`k8D%5oL-wcz}^{>T?af^u@%}j8xhxqOC@v}tYK|o zVS$Y{9~nrl{HnqAqZIIOiD++eL6*2qdDc23+d(WxF1$_b?PIgQJ{W88_~k&B3ImSL z>CZqys&)|Um=7Wi<%dPi##HGGu8U!#{Oyx({ zRlfL$qm*wf<0&Qat3-}eHkw5yBM{$i%@>%c&J7SwP~20!t;42}#P2a|Ga@BbW@>V9 ziE#FChX``@#*M}DB&6j)HD|xo=;dP94bN_{0zEL;UFE$?tlGc9WCD}&XFMNaR9EZS z+?;Ce>l7{%S#CN@Ceph^fF)br8!OAxEV~X2J9XX`jft$&=A?%njc^=3MZ-MG55L*E z1kiBqQ$DHgrw+bC_V2KKvOPb)^C5>^ENg~R%YKt~j=If=gp||v?DM`Pk)8!crNbj# z>Vc9aq%Tc6zT*war$>7##c!KgCZ;+? zP-wK-$og24uty{yLm>n-M*+!o13}d5)9^&^qtm0cKj&QQ7?cK}?+gqKAp0v*pRwK? z9o@%_j<6Ds9`){+It+~leu{gNSQw=NAbvqi;5gfKNxe|7w*|FU3;08yI3Yh#h>VQP z=`oTTw6((^S`L7&Z7L<91qa?0(jv;<3@?wF389ZlM~)_pD%p789X2;+VS|1p8yz$j zT=8j)%97c>qDt_+_u`(FECePQY&aZURimCR7~P0$V9(s zZ>M&Fg@=ar4(-`;Ca#Xx;11Jx-b{qSPMk`nU&Muf7Fxsz(9vCkfR&wDCW!Hw9ecfS zfV00w{l}pz53fT}L7tA6ci4xOAm~cY;2gnE;%<#JpE}oj%v$$ydSpZ!y{*q2CR||O zrQh5kpb<^7n4*yitM>YN2`ov<52o&-mArh{fgpf{g}yF_SrJgn@83THl4G$on5fG6 z%a4z^IW)`|X8;J<^r4AwxnBKD5S@be8CED4=?G*iB)*ijWU?1XGx;`E`^CFp#QMrs z?@#e@sFWMM@8QE4yU7p3hI7NuudJdS{qBn%(Sj)s-^6rvbpanef-lH~<_rE~5nVfBm7Vt%UywHwl%yh_?GV2vw70}TbjH7U-!3^dMq6$C9Xp6oaW?DVjoTw7Z zS=5Q{9esJ$L2dG*m2hNzew~?i?(2qA{83+Mk(;7Z zzW10Tpz>petwyTNZZYa_wihuUn6sG3#`cvL83*5OZEatuW&_5#OGJR6UhH&RACh7@ zvL185hZnFUpLn@==lZh4|JB%;1~qj>0T@WD(m_CiEQ5qvAi*L+jDlg2VTrbg0RoDG zED^y1QR7mUgvC^d7C|Pp5+ER2rHVi@0yTzBA{BxWfkr_vVGD{;5HJdaCG?~-o$*J1 z^!Iyj?mKVZJ@=gNyEC_GeZI%+nt1)ymAzGHXXoB!*QNG#y_re}ppO|T)k)Q1A$C!y z%IAJBk6zt~$7h$_n~DZgvy?IYwJd6a$?G(wUypYE@l6YJsu_db#8QrTorcQbPS$yZ zf>A@96nnYi@g9b3yC5A-XF++J<%1<}J~v`hSe>0pIev6XogQ+3YA3P8-HRG1q|9~L zxzZejLSbV!*Rr{}IV(GRX3%YF8ep3Ci<(&bwSX~yV14t&{G#LrJ=qB9*oCIT5nbO7 zhH67H^O%#i26u8;(BC!%UJrjT(|59oUL3qT-wNa8ZiC6Ojs z|p=SC9#xMN@lyx|drJn|bsQ-sFuF;S*0 zFX&lfOW@QstzEfkobGNzlP5*uF$2uW;WC$C*G?B`isEZ8hO zOtiuqA(5^3toT^PIo-PB{ag1~#fQDa=Ovue(thg#hdhkIv7))aKA>Tvb$>kSlv&^l7F&ZK=nmw>qjzaC#iHotE$3 zQa?e>s{_qPbR7vFZ4(ACzPt!=_eP)FA$LcsW%CwP_?Aewq>1QPcdqy^3?t(FS8|`# zg$$-=ZUa&}GP%y0t19}l)b-Ic%R0WN5id4zj1#@%;Sy&{HcMV;7Oo*qkecxpkIFj0 zCmsW~Lrh5c3b9K6FaXh_f%LRAs^HMUhjD-w%sdi|(X~JK4bHRa+;BlU#n}R~vle)w z{aY4uLRT5|vK_{P==>9pocztuNM=WiQxR4ViLOUB0 z54d%vf&?hSHF-h=|Eg+|k4UcH2J;ED3dNB`Da7c1l*~@fFDw|LP()xL73$%00EnNK zdIorV>oCcI_o;UI?uYUjhy}@Qvb8@`I3YM)giS2Cn$-2>V&-BVtnxjTM*{{thx9qT zyt%gAq%O97YF98n^Mj#T^fn=UB`48D6 z%IgVS4Pos0thZ)W2C})pL{@+1cuwtmD+gV5;#!OSFSpFi)t&W`(EM1~P3MRRyO?Zf z%;o}z*LR3(I_|aY;}~ZVe8=A3gnQ4MpC#X1Ibs&-8zv`NJg$dEQR9|6lv`|N7j^rb zo;5%~kpxDljR8)o-A5fCtjfQ;X(H!>NCwKuCII)B4^KgQvwcf7T7sZF{-@E@Jm0F< zdPcx@k=y$`+%6pfH}&suXoMb;NvzGL24bZYLQ_D-l;OBjp&tl-m$LpZ&kc$uS;QwncaAzQpyMKE7 ziJK>n>oiwq<9HKssad7q-X`ru#{c0jKVi>7AdfF?5kVktuFsG{Ahq}Z&_W=-&uw1e zMELAeVK>Pty`jp6sWkE5>>rh!1-Fp)jFV5^4D*kF{nodFVDPe+QuE^RDjxR-|6A6(rQ?GIv4xnm*9&f zI=1~+J8v%@kY9Diw{i+s?dNP(t_|p5D#;j&sw;#>Mt?aU;`dQVlvZU)?^fN(!iiaT zucATkSn0S&&e`|AqEFp6wM#)C@?p-6y_fpoh{4~gFhsbz$B6K3pLdUP9 zW+&h0r@3s_{uc@#WWf_?>H}t1mItExCu3d7h`3}Q{VJ`L*Wc?rRW_({v1M-FKHKRo zg9FR$sAInl=o(!Q+F@y{k*5FC&!r0QE^7xX9XM{jlqGuzv5#=k#T4#+5(txezu~jr z1J}sY%|;+tF1T())A@-%;629g5Ay7PVT7xCc_mEfmWr}?UVuRKf)AVFbcrY1vLYvj z(-~!z+vgu^Pm{ANJ{8ppCZEf8TG8=XYj+lc;;YtW%;5;Cn~2tjDQqhqE1 zxxjSbPQHs)%lV_N8u;-LW%sriwPvBwN! z1ZHPOUIyO*Rrb-(4^l^EV^E-36SJs;JUqVcW1N_$f6Y$fNqQ$rAiL;f&zGibqjNV# zC2MIBxxzVqM2czLRYVD=XsELd?okV?x$e>$9#(a`oWM`YpFp?C*tHIGeRf7Cmy=S& zF+JPln7KAB3oENW1CdHq)R1N_V%frbL3pxz+qjj-rS0yq;p|KAlfBXYuA$myAi7*m z;?Vw9jWbvvnogs6r4|PT3#w(SQHi z!0KHt^AUZuJjGD3RxEQ!yf)v99xk3NqeM1+$81V(l94&DkD(C7#cGU-Nqx96-Q(?X zS5J>opa53<6LH??90;4&wEOthN7^QsDs**7{)P{X$8HLeh+RK z)_b0q`BI1;<&K*|gcJ6|@UNgJD6v&1Tm%#sa*+g=W;wbmpMJuAj7g)#zlseL^BKl) zx3^nZTlXKLj?0s@sx%`Q<$D5XX;j-g5)Whi{b@$nA&|1^E!V)=CfHn&_qZI}N<8T^ z>V=#WA&2s@n2`1)QF+DoMDL|e^r%lZ`eYUzyi-vTw{LQU`qO_kK-|Nqouc}<)xbpn zzsCv9t}ZS<-1_mB!e=84BX+W9TeMn_7TWwp#5KVTfqXUG*IcUBmvK_%ZQf-SGvl-0rgl;yTl=nKH>?A*rnLiH8O-WIjM0s}^58^i~C!<=? zFk`L5k7C$!iGq$V)%yEA_K-=vo>8N`4AxGhYj+@!u`X=ocHYDXV@|}>0Xc{F#Z8k- zwd2Lb+ip)=JiHt#e{Nhn>)|FBS2B2>UixU_L|F3o+jgHPD?K8naq-SLepLU~Bu?ER z>13bQNMqyLa-;Z(su&e)#AbpBkL%a@42#mjrFUue?Sm7v8P#phAvqX(5+0b+GKP~sLz0M8O9txChE zEsvG8QsYqWYVVr2U~bvIzF=QG11#;wy-V&OFw!U+O?YyHMgT}hoiJjfs(4Yoes64A!Z1-dcE8qv;Moi;ISdN@a^T!nmBS1QPLPdz+>95QKG z!rtg0osYyrpGg&@%QnvoB>K}rro5kV$t zz@rLCQuB8v(!e7|eX-}d8oG@+-64>gsLx`xW@`o;uNgH!n@Il9`YMF`LN?dL|H3ga zq+ORgjv-T{pZ^7JC3^~7I{)`U|1abM18JSmia!Uzx;*^1OvpbE{6C|=e{}}`V+ttp zFpiR4b8+wVp9x`^C=!fo1t>8&-q2^8e=U$rzP;@WrU1yp>qtdB9rMl0tk$b_F?yqF zDrv9ia-(vBiUgqHNeO)NCDxX*=H^8)0L9hvfA+u$hCUiC5w5D?z8h&hs=e)0Vf?BgGO0$Dv?S|^4O|bdw({U6rV~RK*foZDGp<+7r0+!c62;@i2NJC+sF~9uRE1YC{?*tjKgjf4C%X z;mQ>rc2-t~ty07yZ*{p%HJ$m~=Nleg+wa<2o6C77`ud#YcRZ@~(QWZriND?iY%S~` zVU}4rb87J4tg?;+nIMp7Z1rsTnOU+54Buvm!(p5GQd|8-Cm(;Sy%jGXpFRaD!$1r@ z|8Aw@*GIHVWidce9^UO1ejK0Xw%j7)MGPKEeR*wYn5vL~Rka*M4tA$WVLD1m=l0x+ z@=|pz2l7?WduuUy@rygz=|ys$mX=X`hbfw(Pr!qPaY?bbdx}MNr`p(ItbJcx^ zmyTDh&VM{ju+U^Fe2Xly)b8yy*UMlwk3Wk^6BCDQA01yge^$tOIg+k9eoE~F=X2Be z&X$FpW_v1cU5%`;m1R}^pK7+Yd0lHCFE)qw)>Q%#Tol#Eegzh579pmN99unD9unN^D6z*2{CJ@VuEC=`>QX`;|wKpvA*UamzjYLS{0W1c8NaQEc3g|BjH=03e69vYr?Y^qT$h@bX`38W z{j4*{0|%OJsUa_4lm%?bvs;_7Vqj5zl)%hw;E8Cz%sYYKK0i_TFQmu*!G4p>6iOKH zu5Kq0*HfxhnLF~t5W2@-kDId{A=8SBi@mpE3`QWC367Iirn{*=G8DjBS(20aGW?Y$ ztHy0}d;CKYLF+iH(Shim9y3m0Cw*H=$>&fB-l zwAIz+W^C2EEj=8^J*0b@Zamt>&NauyL^zsPWoIwN&0{>OTVnYYg+KlxneE)zU+LG- zSNA^V8df+WQv&_a4AR2YH!?b{SWi)+cVl~dVuL5));7_zLx4b4@%YH1d|KL@2NFLL zwXV5XPU815hjIN^^e#2eZZYwD*1Qb8oAT$6M54e}_CUS?GEFLMInmm-d2P!~N3wh% zS1+q&ZIn}ozk5MN+B|k|V1UJXSNx~fJMdr^tOyjw*4h*F`vtGhUO9uYiG_@MG%O+_ zDkh#)T85VUWi~T&oSi3w_%b_z zp6`nNmVgu4?5Zc@Y%SoZq#679=uWGv`74>Ai`VWZ3l0xo33vh8Z9bc6cstKaEl2%! zwg!?8Fk~k@&b_#(=z9S|rk|G=(4Vy>g5A)K`u4{_%JyVJ?r?vDGpsRH#%&%GY9lZR33+u#mcN8u#g06S6A-PU~ZWA)QT&yGg@4^OgXw z`x946IhwThJep->vYq~Ycl{=q&BGf|7zG6ddjIJ5rSne9eazA@{$Dxg4L)@6!J|4C zB4z~+%kmXy2m7X#4i^jEst($mv3 zZ)EF=oU9hY(j~8wTL8($tc_~el>>#j6LN6W#s=P*_3VD~ zv-|g@mwU6qfZqk@16`%L4psy4)}V>|v}{mtu*&d!`-pOtlD_SSD;hXe*zVzSzeDBt zNYUGmB`3>z^6d$!#+)1)j*f+(GeA}!RBshNG?x3;Wizo`#1j=0`MoM#f+I%ff@}-| zTsfL{24Nn7;cBXwT~ARuDn}>1c|C3SDy_FszyA1bh=O9+z#WLLpAju}q;dJXa-h(n z*Tt9h#d22x+)M|8n^RVO1YXH8Qdk^Bcyeq64)y=is ziwLepUj+#fd_{rfz6~guA$!Mi;7crU3K`$N&F?ji=49*L^bBwnN-BNxemRt?JhQwp zj4}&2UL+relQhoG&hR)kIEln@DILg0FLq7W4Hl6AOo$0`$4U1jReKtbmL#zCk|2jXtxAQc z(NcpFo7B!MSkIHSygap$#Q?*DCh*|3O;0?XR&>T~KR*lHs-t{MTVG@@8$BZlla}LxZcwsU(cd_fKbn4QAX-Z z2Ne}9;tqB!%*~aI)uIrV7JVZlBfUDHzA_fBKvd`izB+byW72>oOiGxAbu@zgW~In-+o+U^n}@bgs0=>;c3~}XT5%Du`gQ%MrZp$<8saUL~Bu2cqe0{ z{jR-UqG*1OihI3!b#?KJQc?;!DFxCEAcDz9ZqwpDjE!MAc+F~u!i5~yjR_eU8RZF; zau58lDZO;?9gaRAxyz%aNZ==1r+^^_2GkQRER>mUMbi;e3B1-vmX42!!W97^10Psl zmLlzivu6&D@k1i_!D^tKLAG!Ij=4ono>kBuU!38VRyA?{c0M+nZVA($LxAe$br-Eq z`YYq&1SMPbb@S)vO+aUWtcrWgno72Odz>;}wPbG2!pW@UE*+@LQF0j zkvb1NRs=V7+MZ*p$gkwz(_dd^g;fU~)lnoS(d4m1%C0nu3NZmd<^U8Ln-)hYTPuCc zXur!idrT{gUbbMQre?l{AB*hk7l7Q~OU1{EwHC}dIC~{G8Gx!GBEV-rPEL;0-s^D zw=&zibqU=YzqJ#AGFNmA;e-OMo zS7Z+0kdBOOTJ=*ICh=D?0AH}I9fHGXI5e-PVB5?V3>731&{1dO z!S!)aQZ|NdAom_OdMLDog~bM2(Q2TXIlWJ^;q=t@*V%q*K?ixqFj{^E;0p|rct{=E z*jR5q|7FR8$0&6>hOIlLE&yo`yh*+*w|B4+=^~!{EhW|>8n2VhwY0#hQI;+zI zI)GLHy`c~^{6z34&-}^KuJox6r4d26mQ>T1Hl|tMMr#+kB(jv+qO8Ux;EMDa#()*( z6m^rES}RsP z>>5Kg*(Ng{Ff&s;e&aj;&Xkqv3bWIL^pN-tWsb%?9>czLaD2dJ-L@AQK+XhVJ@obC6uzDeQFqzaej-)lIW=Ax{m?C zF?bF!UWy`e0Z~CaZ;v^@uy}bUs-AMk1s>5yX}z8%o$<&A+1V6)t2FJgys}|m;K@~f zSB=VK39~7MleRE3i=5ohxPQGXTP2H5dg46trq^YmQ7?6%XF_KeXDfsVY;!v(&%@Kw z&xV%gRcHdugb3*H{?_k+bb^on_@@Wjq*G&KqB<%vGQBFx0fQ^-l!4u0*ZmG8x3ARJ z0MJ5$BQq~APpH2y{WTMtG=+d&a+SVqWx2N~8~`%#q03f;ivq$6Xzx$YXP|L>e+=T$ zew@s}L1`S%Zz;R=(!KgJi|&?+bk9nT1_7$~`V)`fb6k0O9fP8)%XHg;XWz`M3&`qj zLuXJV*V`AB?!CP|fM%v{!)})A+T3Q-Lx8LHL=o13FhFMSuY^_xyj)v|_WbbNukJyJ z0QG)kfDJ>(<;!l(TbMkD9u@`(BX)omyLc`?CsqiWxHvR zonsGqwkmnd4F!%u^fLBYI0{q^@lfxZ<>cVdue7j86(RV2QhhuB!Z11nBXnO3`-UeA zsIg~}_S?X8{r4fv|6OY7e~iEWn>=t^5{?BTzuv^`TQN<1pOKGGD`x}Ut6-jIg!U#i z_4Kv1X>tOz29Z3NQ-lFL*3%&BHCzm|dXU6#?Q+Dc;2rX%X7k>6qa`Jg(JwuL8xrF6 z@p~hDR-nMTvTjBA<8uJM=oJ?%8+MlpsC6=o(cKdO>p_HWV6ZDK`Qw!UNJVpK+35_;3Ls>@XKMPa|fNfI#E`&$tj(SXgjx+r3_lS%U}=!7=igUGAa&KB_zns z%FD|S@*oFS)HHnq5ZVpFtb{D7VdUii)P_*q)nY0s*t= z4qY7H%CV5DQQgRBHe*ZY5TjzFP_j<-R1?sZqdgRIa4=VW@x?2ERsg->b@+3Mo`GTc zPoQG4%drQwh==Nim8YytnA9jsOR>qCkebb;&u~ScC|pLSwWzd2-8_vp2>l4iQBmE- zLBu<)X!Ton5L<Cw zsb~vq$Q0ra9bU-eXy2p<1%WS61P*8WM@)wv48^C-&U^DtUul3}I%& zun~P-T};5@0P3fbr63Kfx~xx+z3EhPkn1H1r)unObao~%PxNga%-+D2aZ$6cRDvQ^ zo}k0)vwoz~a4NCHxVnJifPpazlv+cSwNi;gumEG*`4v3uH=$Hm9@cXcHLxm^l@-)1)Y z{mEq~GbS!?;fHM#V1YWc9u>!UjT^o&2=TcqZQe$hjI691Dot#1`Ys^A?hk_4H z@ocTI*8Z*c521uKj@{hvjRv~9RWAK~5}w-N3yCxEzmV*esv>?Jy7|jY0jM-zrrCcj z*z$kS=l}mrN@oJ+-+6xc#j!E`x=N`&o=?hA3v|y(rA-l^DH5KM9UJ>opMczgwn6d( zz-AdC-q-?5py6)?ekyiQ3%|3#*%Q&5*<506&CDLMw+;Rjdr>J&tkM46s7t`0>&1@* zAePiI_+_crShz%{wI!_@;68}c!{x2PD7{M8))H%Wy#h@T;EOa8X36Nx9Y2}bw%`%GiwdOE!N?dnYa!Mqqc0t*aNOv-f^6pU$zkBiGU*GCTKB)IPs zao=5ijK}$)^u5u>{e!d-Yeix=KpQ`2e5*I`@_JD^aj`~80WQd%SdKj&o;MK;&1-0A zkew~vUCA0tuo@S1`vIuS-Wt>ZiPXyL^7{&q3!pldAOs;JC)XE92Dex{#0YupexDfL ziyos1D^ZKIY#(t(jMW?$IFoscMny)O+gj)KycE0DDh1M-%mOBN7@G^&@|f6EXHDUj z$|jka?~IuR1-0DE%VFueTt<;`u+&(`d5cx-We;S5@&#GAQjRq%Bc~#aXX~f*+HXZz zjexr{2s0QR5|DFZU~}{2Ia0l+TLo+@1uMU(g$;jt#rUVEo7MWBiHk_gvtvpJ?dG## zQSWZiD7H`w_rS;~r)Nkmbiy@cWrJCA5UP4AX#)cTNfW?^)T#wa~)mjWbLd9ubEP(vYyCguct&~7{1%pE7D6Nk^1Za zw#!rUnH?b~`up0LwfANmc=`ErQc|7+S?!?|V^wbWba`!FUQt#B5KRyjm~$vs`{9%g zu6SJcay7*s0$q|TyiP+=4A)t|eDO92a|?N|s*TYOEbi`_S)Zv@6WHs14!~J7P-w=0 zdm3wTl#k_?tk{$Tmzox=e-Fc}QS%F$k>79z@{=6XiPMUvkI9)mCy57DLl(6_IIgVB zZ4HqfxK{+e_@k&UEv#B^vRN zy~7}#F-tzedUQltn_>+Orh1bYc>6)75`fs#MC85RtX3DRsOTsuPXg{+ zl<1p9vR1lmM1%Ne#k-#-?cbOi0eexhuN&0E|9(P@a&^m^b-#M&`+8HjWt=Cj%pQTr zSEswVWcO5*LxI~=ZZPd0SrqDBAPKdom;4H-QWyEH5l*)@T&YoFy;A<+tbA)rkTfoj z#Y5gUUx!ngzyfLDPqlU&95_Pwd3p7EtMri?f;;o(rjLi-;tq~|st;RQ5lAtHQFG`+ zz>}`aas{KX*iSaq#9nC$qK?`^j$22C?d=X!Iw2t;F%7m$gNo&X!xfI3Zvb^!8$GGf zHz?EwDN+Ef0ID+xLJ*PPzI`WS6zw0utT^v3DpeP*v6qX`Sm!Ve#ucxqmU|x=uP_{X zu`sjuPK;=0g!nK;hg|~>Z4%UiBFMebR?__5&?!2Y-X9WqN#A3 zG1eL|9{ecm^2hLigIHR++xN^l9!6oE>DRA7yRFAmb5o;`7X65anB}PSSF*t!a4}?b z^c^*Iwd{(_mw=gxR0F%=n{zV)yRx`8883Z;KSpo46{QsvjBA4SArP*MHA-nk#ks1q zG*8pd(Neu$t2q|=p#lo6^giPB8nb#a{k0=eIBV*k8{}Pp3nRMCB~Nz13kwX45YS zl3U|_^p9+!Y(lnIb|!=0i?`A}Akhkq@fdAi+c^M$41DOMy$^SlK%jGSBW(N}Xk5_) z{0JMTm$bdTJKC7-hgX)~@SQSDxmxYauy14j9 zAgk&8KI-XTE|ZP4$0tQ+0-_0`0!?U#oHt9#;L2=$RqLmZ1eh}|kPypbAyzs@c8!IK z#N6p{D5p#;w|i-+d*rNdj@@e7M*zs!Vt_&e+_SYn*P&d`dT`tUxYP>ha@JNX^SwTv z$moTfgBWry!w(ACWH~e%iGpyFpz5wdut4qYw?@=d$kxoka9zLPMM$8jy{{y4Pd2oDDasvE@JKS#mXvE@vWD)ZAYlu3E|8xc`mVo z_&tf}OcRp^4+2_aYGH)J03M6t+na992U=Z;?&d&?nxu9D>Xo8GJOhYgW)$&^v;xvJ zMG3t9RE^=*qtyD7_pSkt7Q4HU0e7Zi%-RqOJ8Re;0qb=I0<^2)vNpjEN;)+gw#RX) zgaXErI^&P5#Q7P6%)U*9#+^HCugAk5flOJf{j92*UfwIZo@qBP-2{`4Z~0Q(3@p&* zo76&H*f>HGL76^Rn3(iPp(_%&?Hn&$h>MQ89f8$R+l>SHwfZm~zyd`?-3#W?bGj6^ z78Vtm?$!E8hxzv2jyFH*uscV`9+;>YH3O(zNiSXkaHIRthIgP_TbIW@D6uaEz2}RZ z=4bXzZx?kpGJn_t76iJGjq})%n-7)0|wiPfq@Z9`qXLbPisMLYd(?d>gW1xJqj2s^~|}8 zW(qDPzf-<~c8`>0Yf7>j^drj> z_|xwPiNdZ5v)oUFs!jK*4k%!8h_`j?-3eNSyG_{3Ejne7{VRdry3FSfJl)^_C9pDp z>m>>~%fRO3H(7qgBp0@uqIVAF1VTYLpck-B7UU43v{Zd@@A=2Mrlsj|Ac9V`oL;XE z=dkwuv^g3eI)hms*8xeLEuJhIonlA1bmrZ^{RooleY6(^XrZ3Ca{tH(LPcKwir;To z`ulT4Ei0Ik_|b(O=IfULCVK@t++9ioflkyUZ6y(CoS8VTSW6!Zo0*wWEpaa_xn&zU z7@z$6wpbKhb&W?cfa-kKL&<9>4-FOWEVJR@*8Z`vTz~(IKvrMb;&NZzBV#Cv=NDm@ z2jmh&1;Sg=>c4t2z*RR$qc%ML42G*RnOw?PYrvhW?FA=TJZ&l z#`KUB5ddUb96+G~z8P&?KIc$5l3$4iF12^k>Z5~$x(63eqADneAb<4x#CA-zqIL5_ zNpBqlgQ}BFB}MR{>BTvj3?scjIp4p6ZTkzuQa!d^Pd<{qbR>9jB<}q?-VgXs0^m-Q z&rXxiPLt10lh6Lbu+!wT)8w=N%aYGd#DrbR$ol(h-{PRA7r&j6(t8}(U-lzM`)4qR zwn{e-$mCIH;zP=Jzfe;>FGHuy3>#3lh%361*NO)FG=I$mIWbW$ejsGKacX??koX&l=Drl#E>E$Fb zaMMYqDJ5<6r1R*TGoScDn~nY(Uwgj~0<)|h_xY?TY{D?C0pH+nj{ z@0-VGy{pV4=*-2H!ujslcKrz?18zFZ?>0K(YuCPKm1_JAIyf(@f}q2Le+oMEe7a2b zkD$Yv=QD!q>d#~{I~vZ+!0@t|h;;dNzmI#hJii$?$S7=*mEDZexf=`k> zx9D5(HttXU0>KY`lB56#UR74f1GF~4ZfU>p$+ehkF|z)xU#A^f9}{TpM*^+AcJB$D z(dG{4KI#_~)eW3$xL zi0!7YmDoY655H_HH}~4#phE%nAK_HxJJt4`#k1_}z-0#rT6Rc1<*vRzH;9eL`e-k5Lt z9;j6AulLsnlVj?_H^55>PU$rYz&oi_*PXVXOS!QF{9o#M*48pwk0(0_5r?}UPC&%r z@il99PK|v7sHM3{X0)*}GhoPm7cRik!Hc6&JVyTNd0IJ==1Yg=DbI~FXf0}aq6{>d zq_wwE8R8(~fG_t@19g@VGDB)#S%Ew^Z+s#dXWirVavCd}5~Bkp@E(V_N~TakNjM$mnK zop=9U1s6PNpYbob01(K(xAecc#Hmg@)oG_X?G&4xVzX0hc8bkTIp!(H{6EV|Px06( z9y`Tjr+DlXkDcPNQ#^Kx$4>FsDIPoZ`JejyPh*#-u}cW#e?2~W$}3NK@2Ou92Kq#t}Dsg$`vEWgBe zYpF*ywxzrV-f1_#dm^~=kbFP(h~~zP8|8&wH275)vD882KIW~YgoMN&qTNI>aOVcu zmU*i|-OCU!cLBn$TU_y@YiF<3=4EHb#o4etd}w0iD46Ju*D9N{fbtdTuN31uQTh@R zZH@CzLK{xR55Yf&_#xdZP{LK_TSp;ouE%z>1FB%#0lwQeZtN(v!asw5fkO!jj3-yU zNqGBJdq>6oyF0qEv2X59xmY5yGfm=yK7U>sO5iBQ1%guF{PHxj3tTHM-Y6GWV1$?T z(trNkWNlL3dx21A(^}dlBY3Le!+$)TA@%gve;N(LN;M*y>-VICP2`akHTH$`rOSPU zNpiR?N(|nZn{ufvB(W+sEIk_U^0^ayA*L1GsthDUf{s+wdsWzd=6sU%$u)5B-3%wX z_1xp5v@o-w?>C4kc~g}l7?P}4`ts$cU--ERK7n1Hoxm91`+usoJh1F3}wWABkz93GyfSQe+E3_QIcH)6tyJ z8n0cipTdyKm!*CTTj8+1VO6`^t!z3qzY7yv(KE3m)ZauMFM^Gyht_=lG}4|=RzxOY zkB*K~6NDKaKmH1~4||O_%*i6i#|Z_z2fYISDj)aip9q>?!WCWbmE( zHHSji6Vdq&gJ)J&tHji43TxVQbaW2brf}Vz?Ck7o_k<$Bp$`)Ume&cZ$$yX?N*@%H ztQTKWrmK)@()oMIX&W=&E|943A?Q4p+tf2ry`s-*tkK-YJ#-d>hzqs9ux^I4Gj^5Z zaz}53%Eq4#PHX-C{ky8>d(OSxZOHOKcIzkUh^0;3&hBD=u!z`6Tcs^Z5^Vo(yLh+L zb@f%Ya>jOot5D*fhWha6XqVz~!eU=%Lh9fT_t!p-+b}XS2ksU*b#8ZkeUmAlD5I&# z)miYFi01yxd!lcL_@i9x%+=2A$g9kB@TbydW=!557{fLlTX!AxB!osz2cxVg{dyzq z83D(6Hl;$7h_7FLTci4AmT0FGQ4`hK8d)3{uHJdq+39&#%>JfS1ne8n+o$^)#O>@JlXK`!t+`Ipi;B|t zsgOm90R0+#)g`E4xAeJ9t5}#-m+3lt%t+G8A4D$*Pfr zKljkQKc8CIb?q&#%=PiLj}OERz+n@9N=6Nvd%_#@ah)98++@D-X=^U3_fbaw}3pT`1e45e+fD4cFfq5?&rxbGdz4ali5)Y2B6buYN$-JC7Su%vttkE1NTY& znvmfa+S(L5^PKm2dHV|u-n_XF7D0MOMmP-iJDquh%W&6>bHf+R%C|&CAuj=LPM1}? zO8ao$CT{;TUoAK1Wy3T$^H4lYJi0dQm1?jE#qE(z6d47DOvrNocM7Gbx8erVeM{U` zha;9lR_b6a-aA<@(>=OFO3KK=vChyDyXp=P4}T9gP!F5$`uZAd?=7;T%Rx@$BQg~W zM@<>M45NCUI8r=ZVNDs2KQ3OdFD594_U#HZQg5`R4SvK4p^A;Y#jJbRcTKqD+~zW? zIFoh}lS^e{G<%#%mbx_+36Z^+$%X9AO*>r3srO9Ih-ieX}f!bY2;p>?b@T+<(&^cZ=zI(@&#DP)S&p`0rd&v4;omo{)-Qugl(H zH$0Bxy+$K&>Douq6U>d~X2vt0!@{x@QTT+X?y%b052{G@@ln{eYO2KLm$)70ZLkfc z(E-rm0#1wkXV0AzbUwV5oz09xBcaVd<=x!4yw-M?dT({^jf>YkW-?gc#`->g{yaS^ zYsb3nPJ?1X(~$kFTZQCR_}~Me-sfkWvGJlt46(7XpZxvjG<|0NTt1X~x!v!N6!6@; z7TPAaw?5kXSt$*>x|1PTQmmbKo``7L?%iWY^~h3s^b&X(eax{_q>9($7TAsH5f4u! z*yz6pAM4VWrxNguee%p^{W7o9T3_Ik3|XT>E%W|ubFdxY(&dnQ_m(1Av|wj1T$vMu zrj^)?HXQG3O#h1G-6|Y)Pcf1L-6VQ99`=2ycWKkg^X%EPmo8nJs%eSh^+^V^?bg1s zfuk06_;#CBV_UA$Wp}AR0vbvs4aDMLV<3-?5k8k_Kf5!Abjt3z#iIHZY^_RmpbWiM z_d5#?U0-ruu_Ouj_)FZsE5ngopHe7tYU<6CL=qnnyRW4Uq4XxLcOdg^@rrm~FS*1g z_bSI5IEj4F#VFE+-+ou0sS|~gd+sK`3|YQ*(zqfxKS^=aK|DxCN#2ONK)X}=76}%f zR*BaIol@&Yw8N~E5YU9T!jF%7iycj$a3`)FxRct}h=9FMDS?1+k)|n!XuCt1*GQRO zCqrmE6J@6#N)iM>x7@*M^5@6zT7?3eD@ef-;!V?zmbS0VmNb^ZF+Sr0~_9!SOhY;UDXy8d9{im3iM%609kfBlEIT#wn*uho61wd&9Yd_)hdCnFJHdV#aL%`zweROzH6Ssq(tcNNpZSKFwoJ<>-)$iHR-u=gIy# zNBYAVoP?(r2PSN+-s?%<)!GqGRJv9K18x#}62>{0XVllEq?)f9h`Yey`U5CjuQOUZ zkEFs(z=;LBivv+T8M0*6_7O;#0~Gk=%k8fZQKy1(xwYyOkeGW%+&-|aqC?qcSl#}_t zovwXvfHlNWfcNYLTyS^qUYvgWwl7x+Xi9D6d|g4H9v$a9jJg@&Q!Yp8*KQn~+iS3C ze9U(D4v?wZADTe6?&P3n99ZuJzkh$Gpe^|GP6_3u5LRup17 z5&=AG`y4bgzC|`vYD;U{nN+{zG~*;B=(xuwwlUt?qLyR#P6*gI3SP@Ty58xjtVCgN zCI8R3GmH^8xvo7LZH4g`>vAChA8;7llnw|RDYocdItYDdV)6u-<7f_@Xd`ccZcpI|1 zuufYK??9_+W6%eG)~euOd|f{bPIuara=+Vr^Y|J-dL0<*8p1&)c6hHl9dN0ihHnK2 ztj9}21RWRN{?v3g-n^fyo>Ph*`--@6!)oNmdla!JrX+#0Qe9CjWZVWd&&M9eZ#0cN zVAHDl2JYRCU)viax0U-Q5NKO!Ri0u!T52h!I~Gbv`q3%RBO6sE}M zHB-{>RtWUIl!L=Iu{Gu0yG;PWa_E-X1?N=Mu!==+n|AzgT*w#JjRI1YH|uOWc@aYi z`Qgxycsj_)K%H^y*g5SY4o^XDqHFhQkSjTK!Eu7A-6dQXMwmPiDtyQ@v z8;#VJ?%Q3GupN>3b8cS+@s1f-uWy2ucj8e8{`(B_sWMSV-&M08w#W0%`f=#xyDP2$ zZ3))5)(%>`!ew3Vr0EQg&oc8Bat;ZA!_*!jZfZXMx}W9!%*^ak2qo`BU}TM1)qmJ^ z8$wvr5U)_8-en6(C|G#(^EOwVZ$fM5t~Fs|6GXk^Qh^bT#X&O zefSVY4(JBUgeNCNxaI_p7)=m^!%R0T-!+nI9jTXkxY%)ISg5r^}@W}KZ`<1!L(TxaWaU6$LZIle?f@^r%*U&=RN{C%f*v4A($q#> zBy7k2eCEdo9#gPKxi>qR^prTWihkpYSQqguu-h^O2ITYGyVt0md;-XU+jYWAf3fF6 z*`7!{z}c{(j@paIq!1^+<8niSHRzq<%e0_hn*Y<1t|)ts}IMcB!ZTjkLzD zvTl_k>)r+xoma0e8Mj8J7`&s?t8mS-ihaUkK87V7=LEERw0UKd{FdtZF`H0YG5daN zu#02uVX=DvwJ%`4=fKLCvlble&ox)!laM-how_=ZU`-CT(T-My&ZB%K){_b{GFO5{ z56%N|?*Dv=MI&DV-2HZsH~4CHHbHj6$T`v#5=XEH2M6gjs7TI6aGuOPQLDT0{Ls2h zXjN#xN!puV9|p(wo58HdoFn=?QFbG%R~nZho~v6N#1K;W+u*nYqltQZj);_Iu5Gwb z4t`Iv#w&)_6M15BZrl?y_v-hJCr_SemikcpUAfcZ*w(Nz432@Pqo+T!DQ?9E#3c1q z_`~v&%5YEZrPG2%=Az*06T@c0gEx;4p&5ydpbM@?Y=U!&jiM&) z$1Ry?^b^DbNYI*lV8D{1RegcC2W%J(JC&bFeNrRc8H!OLqoaxM7n+h1elNydDYi9xqnpIGi$J)t6*a?ot%KpGDp46nKS zqr{$cXiZL36Z{ljl!X^6+Z!yAB*wMLzX&QY8mZ|%e%#yJ8#sKkj`GnCNuYoD?ev0H znh_#W3W>m(`g@Pft^>w)i|Mtm8ms!4-LZ!7di!?e(7AnOOM}o^NA%W?s6n}d@jVg4 z^AVYHZ^fN>fZmHa#9)f9Onh0bF6I>||NI#@>~=ilI*C7qs3Ns7nPE!R+5fAamawZKA{VORa9TjH0OhzpZT9fj^XIoX zbejrm_<+Ge-On2CN!4nQ*gCSmO_3Cgi|m&v^+J==(Ni03W4CTyV{0nq;u;(m zd%zWr(%rfw%*52B(wW_x<@oeB`<**4-@HjS#p7AjH23>8lJqO1Sk)?~M{EZ$>)E9& zYTuj69Zj`LeX6rc-7|vtUGxH_$e0cCbwiDfWnvf}aQ#}TAh?QdfvIwxJSOtZ(kUv- zJ|?b9Hr|Kf{r6_vW9q*c2` z>s}(XyAm4WHfXE0(hyrwT}O+$W=VB0Wm(oyp=DCCWZY6>t&v(+L$TNF;4zvKDleSA_cryXa2?Pfej(d)-)qiky2%J#$Bf*q~dY<9;e11XhC zf6B-Z3#MYl#Ei%zuUl_?4d_?lv@tKQe#Su<$a2H7rcE#_gfG4q)MfXE@XL|}{FNdz zC=mwM25*;Q56DDe8FlS%M(9aXLS}O~C(oW_Cj(fA6ni$?j~Cy-HL#^3VU|;c-=Ec> z9gM%LaS%sf{SIM%Eblb9s=p@aNYCAUk3rGw-52)-mEl=Sw1mSuH~w1ZbAWfl z%T;NcDm6&}u9&kC+8@I3-<_H}$EsQq{X~&b>F0J|ET7m?`p`Xn>fEv%dj0c7;J`i#4{V!b&Cr0N_yGrIA z?0fp=g+iQ@lRSBC{OQDf6`6dYNWU>MGSW!D1Zn_Wziwrnvvk9pCqb6V>gIv3U}npB zjOg6!LyiS-s?j!_p6$iCe8eGQwiG>UrCUzt4*uc=3X`^z>nv~<`m_|?{f8h`c?$;tMzGuKGp(gE z2w_plwYP*Uc?AXjo%RdlRqLc3Au7T{8L+!Ba#=~{JTl2Y&Wcd_G~MVuHC0Q!^7vhu zU6pTtEbYGzlFzQ1%$-pE_>nm=&?ey!%DbeKhi06PeX%g=uYr;cI*i&}Az%bNIrD(^G;ap%2v)hsRL(Ao8r^xMuI zR^|9M%7GIg`eIBV1y``qg%rZK7K&SIRO-e_}EeVcRyaB0r9(H1hL7E`^ z%@rIL#zNxarQTAAje(b>(}M}-ZPIXBxCf*tKFl1Lap2>6dX%${q$_kc5j_)&f8U`b z`m$j)K}b7vs0MVx7;mp{h@VTsl~SQV;P+@FgL^YMvGghUXA0r&?B&#WIVkmClZ^oh diff --git a/packages/core/src/tests/basic-navigation/basic-navigation.e2e.ts-snapshots/basic-navigation-mobile-mobile-expanded-1-chromium---theme-classic-light-linux.png b/packages/core/src/tests/basic-navigation/basic-navigation.e2e.ts-snapshots/basic-navigation-mobile-mobile-expanded-1-chromium---theme-classic-light-linux.png index 5f736e27ae35fdf7e535cf9da0ea90de212e7f97..a58aa3c16e9800bdf37f48c966ad90e9c43a7637 100644 GIT binary patch literal 35739 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 VB2S(Mk79yIh{y=%zxn9#zX14QRFwb# literal 35143 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 A@&Et; diff --git a/packages/core/src/tests/basic-navigation/basic-navigation.e2e.ts-snapshots/basic-navigation-mobile-mobile-expanded-overlay-1-chromium---theme-classic-dark-linux.png b/packages/core/src/tests/basic-navigation/basic-navigation.e2e.ts-snapshots/basic-navigation-mobile-mobile-expanded-overlay-1-chromium---theme-classic-dark-linux.png index 8c025697b7a97f93ed9a53a5709ff84251a44bae..8956ff5fbe747f88c61ea509b671b1c9e5e68d0c 100644 GIT binary patch literal 37251 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
$MZ3u{6+Qx5mNV6rqD= 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 ZSeHtIb$RPWTl`QJR7z1Y|GBaM{{v^;#N+?~ diff --git a/packages/core/src/tests/basic-navigation/basic-navigation.e2e.ts-snapshots/basic-navigation-mobile-mobile-overlay-1-chromium---theme-classic-dark-linux.png b/packages/core/src/tests/basic-navigation/basic-navigation.e2e.ts-snapshots/basic-navigation-mobile-mobile-overlay-1-chromium---theme-classic-dark-linux.png index d5791b24dd422397bee53080c67df0151a7fe667..a3aabd682ac17ceab1eda4385c5e883282551064 100644 GIT binary patch literal 17129 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 literal 16857 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 diff --git a/packages/core/src/tests/basic-navigation/basic-navigation.e2e.ts-snapshots/basic-navigation-mobile-mobile-overlay-1-chromium---theme-classic-light-linux.png b/packages/core/src/tests/basic-navigation/basic-navigation.e2e.ts-snapshots/basic-navigation-mobile-mobile-overlay-1-chromium---theme-classic-light-linux.png index f324d42adf91c46304d47fb50a5368894027bddf..3cc26e23a502027b97896be952ec0e93e700a2b1 100644 GIT binary patch literal 16671 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 { await page.setViewportSize({ height: 720, - width: 1280, + width: largeWidth, }); await mount(htmlSource); const grid = page.locator('ix-grid').nth(0); @@ -21,6 +25,67 @@ test('should not have regression', async ({ mount, page }) => { expect(await page.screenshot({ fullPage: true })).toMatchSnapshot(); }); +test('should not have regression large', async ({ mount, page }) => { + await page.setViewportSize({ + height: 720, + width: largeWidth, + }); + await mount(htmlSimple); + const grid = page.locator('ix-grid').nth(0); + await expect(grid).toHaveClass(/hydrated/); + + expect(await page.screenshot({ fullPage: true })).toMatchSnapshot(); +}); + +test('should not have regression medium', async ({ mount, page }) => { + await page.setViewportSize({ + height: 720, + width: mediumWidth, + }); + await mount(htmlSimple); + const grid = page.locator('ix-grid').nth(0); + await expect(grid).toHaveClass(/hydrated/); + + expect(await page.screenshot({ fullPage: true })).toMatchSnapshot(); +}); + +test('should not have regression small', async ({ mount, page }) => { + await page.setViewportSize({ + height: 720, + width: smallWidth, + }); + await mount(htmlSimple); + const grid = page.locator('ix-grid').nth(0); + await expect(grid).toHaveClass(/hydrated/); + + expect(await page.screenshot({ fullPage: true })).toMatchSnapshot(); +}); + +const htmlSimple = ` + + + + 1 + + + 2 + + + 3 + + + + + +`; + const htmlSource = `

Column = 4

diff --git a/packages/core/src/tests/grid/grid.e2e.ts-snapshots/should-not-have-regression-1-chromium---theme-classic-dark-linux.png b/packages/core/src/tests/grid/grid.e2e.ts-snapshots/should-not-have-regression-1-chromium---theme-classic-dark-linux.png index 50cbf8b7cbefab27fccefa5c3576f206bbae51fe..af0722e7aca19f453adfd4d3fde0b52a1e8a85ec 100644 GIT binary patch literal 21998 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 F0RS1I-h1!86R-dZ3KDu3L6P2j35wD?(t8a( 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 diff --git a/packages/core/src/tests/grid/grid.e2e.ts-snapshots/should-not-have-regression-1-chromium---theme-classic-light-linux.png b/packages/core/src/tests/grid/grid.e2e.ts-snapshots/should-not-have-regression-1-chromium---theme-classic-light-linux.png index c6a59c33035b41ccdc40f8dfd905bb3ef9c16396..f20f8b17e193a4eb8e106ad03f42af1dd25fc94d 100644 GIT binary patch literal 22461 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 literal 23406 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 diff --git a/packages/core/src/tests/grid/grid.e2e.ts-snapshots/should-not-have-regression-large-1-chromium---theme-classic-dark-linux.png b/packages/core/src/tests/grid/grid.e2e.ts-snapshots/should-not-have-regression-large-1-chromium---theme-classic-dark-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..94ccc67e5ae2b57e71db88f3ee4880926425bcae GIT binary patch literal 5469 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 O2KXK%9w^&K$^09SyuJ4T literal 0 HcmV?d00001 diff --git a/packages/core/src/tests/grid/grid.e2e.ts-snapshots/should-not-have-regression-small-1-chromium---theme-classic-light-linux.png b/packages/core/src/tests/grid/grid.e2e.ts-snapshots/should-not-have-regression-small-1-chromium---theme-classic-light-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..270c1319d310d5c242ba8bcc6ad1191dd641a195 GIT binary patch literal 4458 zcmeHL|5K889REC;Uy`&s*GvWRZr!ZQB2Qy7W%k9+x=!6IGg_;~;TJP#d=J_3M~1RnkFuJF#O^13hK31J+G*$0Fw^iu#fZaEaa_j6|T zv{uQdWFTiAWu8{`Z;gG(Nqz@yG#=iR@r+FTc$n1p|3txNRvPT0-au<7E~jq93u z?;$Q8#V^x-PCAk_8mCF4O&KnaUS(>kgIUIDDX zMLGn4T7zuK4L4uYojVM#mOom910bu|2k^pfqrjfg1D&m|vQkZZu4P{CIqti?pFPy;n519x!=nX;nbu9$|wWQUx8NuUd7*u*%@Q$7Q?$X2ZOIK;> zSf&e8gOgiq=I0AtOLs!#o4Z)%AbqcuL{d6cp^AM{oo$m= zY%CE;Jy~%2%}y>)xPZV|d)b@21WNXLH^2)Hve!<2klC{ujewQNN>^|3Xg$ly^5mgJ zG;2$arbeuIsASsEfx%CQuyl{xu)jC>Qh z$?w*5d!gYNVBCgKe5{dV-3u?6D>0kMe7>k*JKUxhwkVA~eOVJkaovSo1J{s`5kqU( zig!L0G+ zTrTs3fdCkLUpP_EcP4PMOkGRQ%rpL6^z$q1LVILCjPSB?;}It{jG_5~hOPj}qrlGL zMhP%d2PV~R>CZd$-CSa*N+>Mfaai+-H1CP+`r1mQ*X=f{StZnQriUf1xmu}(yv&%c z>|175FMOR*d=$Kbxf?|v1nJOj>xp5r>v-*diB7zs`W>jHBUHSAwFZDjpSNtVDUh6P z=;7rFmvQ}f|0gi-Gu&^;H)+D*mTc`m?GXwUO{_4CTFtt$e0hqlfK{DL44n<*MZ$ze z(+}OTdQFOyi;iMYZO^Wj=*xxzd@JeFQ(DdDYe#!#Z5~NY%Lk z{T;LXMx`QFO#g}HCp!+cZlq?+&V;jPtb8t=ETw9jjn{G>mvH0SJW@IC6rN|xq8g)L zSnw+EF6}m3mTk01i;6^whl;F$iU_RlyMpFRZ3E`1A#Q|ll%upGyAp^Lq6`A8~wzkdqBSg7@WLuD%%xD>=O)6A SDiYz(6L9E2T(odsYVp5|l8asd literal 0 HcmV?d00001 diff --git a/packages/core/src/tests/menu-about-news/basic/index.html b/packages/core/src/tests/menu-about-news/basic/index.html index 503fa8cf17a..cb34fac1d3a 100644 --- a/packages/core/src/tests/menu-about-news/basic/index.html +++ b/packages/core/src/tests/menu-about-news/basic/index.html @@ -29,7 +29,7 @@ diff --git a/packages/core/src/tests/menu-about/basic/index.html b/packages/core/src/tests/menu-about/basic/index.html index 5b1ddb32155..ae5d12713bd 100644 --- a/packages/core/src/tests/menu-about/basic/index.html +++ b/packages/core/src/tests/menu-about/basic/index.html @@ -26,7 +26,7 @@ diff --git a/packages/core/src/tests/menu-avatar/basic/index.html b/packages/core/src/tests/menu-avatar/basic/index.html index ff5a9f24d51..bc3f0f0392f 100644 --- a/packages/core/src/tests/menu-avatar/basic/index.html +++ b/packages/core/src/tests/menu-avatar/basic/index.html @@ -25,7 +25,7 @@ diff --git a/packages/core/src/tests/menu-avatar/image/index.html b/packages/core/src/tests/menu-avatar/image/index.html index 254229e88d6..b908781e0a4 100644 --- a/packages/core/src/tests/menu-avatar/image/index.html +++ b/packages/core/src/tests/menu-avatar/image/index.html @@ -25,7 +25,7 @@ diff --git a/packages/core/src/tests/menu-avatar/initials/index.html b/packages/core/src/tests/menu-avatar/initials/index.html index 500b7ad8d62..69367c266c7 100644 --- a/packages/core/src/tests/menu-avatar/initials/index.html +++ b/packages/core/src/tests/menu-avatar/initials/index.html @@ -25,7 +25,7 @@ diff --git a/packages/core/src/tests/menu-settings/basic/index.html b/packages/core/src/tests/menu-settings/basic/index.html index 65b0612ae37..d8522665871 100644 --- a/packages/core/src/tests/menu-settings/basic/index.html +++ b/packages/core/src/tests/menu-settings/basic/index.html @@ -30,7 +30,7 @@ diff --git a/packages/documentation/docs/migration/2_0_0/index.md b/packages/documentation/docs/migration/2_0_0/index.md index 5957f535fda..15ed52b9428 100644 --- a/packages/documentation/docs/migration/2_0_0/index.md +++ b/packages/documentation/docs/migration/2_0_0/index.md @@ -63,24 +63,24 @@ The `ix-menu` introduces new layout breakpoints that affect the display and beha ![Menu Layout](capture_layout_feature.gif) -With the updated version of ix-menu, you have the flexibility to choose which layout breakpoints are supported. You can specify the supported modes using the `supportedModes` property. This allows you to customize the menu's behavior and appearance according to your specific requirements. +With the updated version of ix-menu, you have the flexibility to choose which layout breakpoints are supported. You can specify the supported modes using the `breakpoints` property. This allows you to customize the menu's behavior and appearance according to your specific requirements. The following breakpoints are now available in ix-menu: -- **Small**: `only screen and (max-width: 40em)` +- **Small**: `only screen and (min-width: 36em)` - Menu not visible. -- **Medium**: `only screen and (min-width: 40.063em) and (max-width: 64em)` +- **Medium**: `only screen and (min-width: 48em)` - Menu visible but requires expansion to see the complete menu. -- **Large**: `only screen and (min-width: 64.063em)` +- **Large**: `only screen and (min-width: 62em)` - Shows the menu as pinned in full width. - The overlaying content is moved to the left. These breakpoints enable the menu to adapt its layout and behavior according to the available screen space, ensuring optimal visibility and usability for different screen sizes. -By setting the `supportedModes` property, you can define which layout modes should be enabled for your menu. For example, if you want to support only the small and medium breakpoints, you can set the `supportedModes` property as follows: +By setting the `breakpoints` property, you can define which layout modes should be enabled for your menu. For example, if you want to support only the small and medium breakpoints, you can set the `breakpoints` property as follows: ```tsx - + ``` diff --git a/packages/html-test-app/src/preview-examples/basic-navigation-without-header.html b/packages/html-test-app/src/preview-examples/basic-navigation-without-header.html index 8adec91e44b..233b36028ea 100644 --- a/packages/html-test-app/src/preview-examples/basic-navigation-without-header.html +++ b/packages/html-test-app/src/preview-examples/basic-navigation-without-header.html @@ -22,7 +22,7 @@ (async () => { await window.customElements.whenDefined('ix-menu'); const menu = document.querySelector('ix-menu'); - menu.supportedModes = ['medium']; + menu.breakpoints = ['medium']; })(); diff --git a/packages/html-test-app/src/preview-examples/basic-navigation.html b/packages/html-test-app/src/preview-examples/basic-navigation.html index af7a5c36d05..b8b7ea2496e 100644 --- a/packages/html-test-app/src/preview-examples/basic-navigation.html +++ b/packages/html-test-app/src/preview-examples/basic-navigation.html @@ -23,7 +23,7 @@ (async () => { await window.customElements.whenDefined('ix-menu'); const menu = document.querySelector('ix-menu'); - menu.supportedModes = ['medium']; + menu.breakpoints = ['medium']; })(); diff --git a/packages/html-test-app/src/preview-examples/menu-category.html b/packages/html-test-app/src/preview-examples/menu-category.html index 668b171fe99..724d30461a1 100644 --- a/packages/html-test-app/src/preview-examples/menu-category.html +++ b/packages/html-test-app/src/preview-examples/menu-category.html @@ -32,7 +32,7 @@ (async () => { await window.customElements.whenDefined('ix-menu'); const menu = document.querySelector('ix-menu'); - menu.supportedModes = ['medium']; + menu.breakpoints = ['medium']; })(); diff --git a/packages/html-test-app/src/preview-examples/menu-layouts.html b/packages/html-test-app/src/preview-examples/menu-layouts.html index 0f6b893aaac..55a1fb9d712 100644 --- a/packages/html-test-app/src/preview-examples/menu-layouts.html +++ b/packages/html-test-app/src/preview-examples/menu-layouts.html @@ -55,12 +55,12 @@ (async () => { await window.customElements.whenDefined('ix-menu'); const menu = document.querySelector('ix-menu'); - menu.supportedModes = ['medium']; + menu.breakpoints = ['medium']; const radioButtons = document.querySelectorAll('input[type="radio"]'); radioButtons.forEach((rb) => rb.addEventListener('change', (event) => { - menu.supportedModes = [event.target.value]; + menu.breakpoints = [event.target.value]; }) ); })(); diff --git a/packages/vue/src/components.ts b/packages/vue/src/components.ts index 552c70bfdb3..c2266045a54 100644 --- a/packages/vue/src/components.ts +++ b/packages/vue/src/components.ts @@ -20,7 +20,7 @@ export const IxActionCard = /*@__PURE__*/ defineContainer('ix- export const IxApplicationHeader = /*@__PURE__*/ defineContainer('ix-application-header', undefined, [ 'name', - 'mode' + 'breakpoint' ]); @@ -448,8 +448,8 @@ export const IxMenu = /*@__PURE__*/ defineContainer('ix-menu', undef 'i18nExpandSidebar', 'expand', 'pinned', - 'forceLayout', - 'supportedModes', + 'forceBreakpoint', + 'breakpoints', 'i18nLegal', 'i18nSettings', 'i18nToggleTheme', From 6c0135299da04872e0f188808c33591d794cdb60 Mon Sep 17 00:00:00 2001 From: Daniel Leroux Date: Fri, 25 Aug 2023 14:15:50 +0200 Subject: [PATCH 08/31] refactor: cleanup my-component --- packages/core/component-doc.json | 92 +++---------------- .../components/my-component/my-component.tsx | 24 +---- 2 files changed, 12 insertions(+), 104 deletions(-) diff --git a/packages/core/component-doc.json b/packages/core/component-doc.json index 1f5ec209bac..90a90318cef 100644 --- a/packages/core/component-doc.json +++ b/packages/core/component-doc.json @@ -302,9 +302,7 @@ "docs": "", "docsTags": [], "encapsulation": "shadow", - "dependents": [ - "my-component" - ], + "dependents": [], "dependencies": [ "ix-application-header" ], @@ -323,9 +321,6 @@ "ix-icon-button": [ "ix-spinner", "ix-icon" - ], - "my-component": [ - "ix-basic-navigation" ] }, "props": [ @@ -1766,15 +1761,9 @@ } ], "encapsulation": "shadow", - "dependents": [ - "my-component" - ], + "dependents": [], "dependencies": [], - "dependencyGraph": { - "my-component": [ - "ix-col" - ] - }, + "dependencyGraph": {}, "props": [ { "name": "size", @@ -4597,15 +4586,9 @@ } ], "encapsulation": "shadow", - "dependents": [ - "my-component" - ], + "dependents": [], "dependencies": [], - "dependencyGraph": { - "my-component": [ - "ix-grid" - ] - }, + "dependencyGraph": {}, "props": [ { "name": "columns", @@ -6309,9 +6292,7 @@ "docs": "", "docsTags": [], "encapsulation": "shadow", - "dependents": [ - "my-component" - ], + "dependents": [], "dependencies": [ "ix-burger-menu", "ix-menu-item" @@ -6332,9 +6313,6 @@ ], "ix-menu-item": [ "ix-icon" - ], - "my-component": [ - "ix-menu" ] }, "props": [ @@ -7404,8 +7382,7 @@ "encapsulation": "shadow", "dependents": [ "ix-menu", - "ix-menu-category", - "my-component" + "ix-menu-category" ], "dependencies": [ "ix-icon" @@ -7419,9 +7396,6 @@ ], "ix-menu-category": [ "ix-menu-item" - ], - "my-component": [ - "ix-menu-item" ] }, "props": [ @@ -8767,15 +8741,9 @@ } ], "encapsulation": "shadow", - "dependents": [ - "my-component" - ], + "dependents": [], "dependencies": [], - "dependencyGraph": { - "my-component": [ - "ix-row" - ] - }, + "dependencyGraph": {}, "props": [], "methods": [], "events": [], @@ -12081,46 +12049,8 @@ "docsTags": [], "encapsulation": "scoped", "dependents": [], - "dependencies": [ - "ix-basic-navigation", - "ix-menu", - "ix-menu-item", - "ix-grid", - "ix-row", - "ix-col" - ], - "dependencyGraph": { - "my-component": [ - "ix-basic-navigation", - "ix-menu", - "ix-menu-item", - "ix-grid", - "ix-row", - "ix-col" - ], - "ix-basic-navigation": [ - "ix-application-header" - ], - "ix-application-header": [ - "ix-burger-menu" - ], - "ix-burger-menu": [ - "ix-icon-button", - "ix-spinner", - "ix-icon" - ], - "ix-icon-button": [ - "ix-spinner", - "ix-icon" - ], - "ix-menu": [ - "ix-burger-menu", - "ix-menu-item" - ], - "ix-menu-item": [ - "ix-icon" - ] - }, + "dependencies": [], + "dependencyGraph": {}, "props": [], "methods": [], "events": [], diff --git a/packages/core/src/components/my-component/my-component.tsx b/packages/core/src/components/my-component/my-component.tsx index 1264fc1b9f5..bb9bd7073c5 100644 --- a/packages/core/src/components/my-component/my-component.tsx +++ b/packages/core/src/components/my-component/my-component.tsx @@ -15,28 +15,6 @@ import { Component, h, Host } from '@stencil/core'; }) export class MyComponent { render() { - return ( - - - - Test - - - - - - 1 - - - 2 - - - 3 - - - - - - ); + return ; } } From 00b1ee194e6f7e0cde310a5d9c5a1923df82252d Mon Sep 17 00:00:00 2001 From: Daniel Leroux Date: Fri, 25 Aug 2023 15:11:00 +0200 Subject: [PATCH 09/31] refactor: remove mixins --- packages/core/scss/mixins/_break-points.scss | 12 +++--------- .../core/src/components/grid/grid.mixins.scss | 19 ------------------- packages/core/src/components/grid/grid.scss | 2 -- .../core/src/components/utils/breakpoints.ts | 2 ++ 4 files changed, 5 insertions(+), 30 deletions(-) delete mode 100644 packages/core/src/components/grid/grid.mixins.scss diff --git a/packages/core/scss/mixins/_break-points.scss b/packages/core/scss/mixins/_break-points.scss index f9413f4fca1..07c382a20d6 100644 --- a/packages/core/scss/mixins/_break-points.scss +++ b/packages/core/scss/mixins/_break-points.scss @@ -7,16 +7,10 @@ * LICENSE file in the root directory of this source tree. */ -// const smallMediaQuery = `only screen and (max-width: 40em)`; -// const mediumMediaQuery = `only screen and (min-width: 40.063em) and (max-width: 64em)`; -// const largeMediaQuery = `only screen and (min-width: 64.063em)`; - $screen-breakpoints: ( - xs: 0, - sm: 576px, - md: 768px, - lg: 992px, - xl: 1200px, + sm: 36em, + md: 48em, + lg: 62em, ); @mixin media-breakpoint-up($name, $breakpoints: $screen-breakpoints) { diff --git a/packages/core/src/components/grid/grid.mixins.scss b/packages/core/src/components/grid/grid.mixins.scss deleted file mode 100644 index f77351930c4..00000000000 --- a/packages/core/src/components/grid/grid.mixins.scss +++ /dev/null @@ -1,19 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2023 Siemens AG - * - * SPDX-License-Identifier: MIT - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -@import 'mixins/break-points'; - -@mixin make-grid-widths($breakpoints: $screen-breakpoints) { - @each $breakpoint, $width in $widths { - @include media-breakpoint-up($breakpoint, $breakpoints) { - width: $width; - } - } - - max-width: 100%; -} diff --git a/packages/core/src/components/grid/grid.scss b/packages/core/src/components/grid/grid.scss index 8565ed9f3b1..48afd9b390c 100644 --- a/packages/core/src/components/grid/grid.scss +++ b/packages/core/src/components/grid/grid.scss @@ -6,8 +6,6 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ -@import './grid.mixins'; - :host { --ix-grid-gutter: 1.5rem; diff --git a/packages/core/src/components/utils/breakpoints.ts b/packages/core/src/components/utils/breakpoints.ts index 5133cae338c..998ff80331f 100644 --- a/packages/core/src/components/utils/breakpoints.ts +++ b/packages/core/src/components/utils/breakpoints.ts @@ -6,6 +6,8 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ + +// Implementation of scss breakpoints mixins/_break-points.scss const mediaQueries = { sm: '(min-width: 36em)', md: '(min-width: 48em)', From 4297435d10d6e134c4e29cf11d61d86e1d7a8a7c Mon Sep 17 00:00:00 2001 From: Daniel Leroux Date: Mon, 28 Aug 2023 08:31:54 +0200 Subject: [PATCH 10/31] refactor: replace with context --- .../basic-navigation/basic-navigation.scss | 1 + .../basic-navigation/basic-navigation.tsx | 21 ++- .../menu-category/menu-category.tsx | 4 +- packages/core/src/components/menu/menu.tsx | 35 ++-- .../utils/application-layout/context.ts | 41 +---- packages/core/src/components/utils/context.ts | 167 ++++++++++++++++++ 6 files changed, 224 insertions(+), 45 deletions(-) create mode 100644 packages/core/src/components/utils/context.ts diff --git a/packages/core/src/components/basic-navigation/basic-navigation.scss b/packages/core/src/components/basic-navigation/basic-navigation.scss index b7db798c187..b61f0be33e6 100644 --- a/packages/core/src/components/basic-navigation/basic-navigation.scss +++ b/packages/core/src/components/basic-navigation/basic-navigation.scss @@ -48,6 +48,7 @@ } :host(.hide-header) { + .navigation-content, .content { height: 100%; } diff --git a/packages/core/src/components/basic-navigation/basic-navigation.tsx b/packages/core/src/components/basic-navigation/basic-navigation.tsx index 5a6c88df52d..d60beb41e61 100644 --- a/packages/core/src/components/basic-navigation/basic-navigation.tsx +++ b/packages/core/src/components/basic-navigation/basic-navigation.tsx @@ -7,9 +7,11 @@ * LICENSE file in the root directory of this source tree. */ -import { Component, Element, h, Host, Prop, State } from '@stencil/core'; +import { Component, Element, h, Host, Prop, State, Watch } from '@stencil/core'; +import { ApplicationLayoutContext } from '../utils/application-layout/context'; import { applicationLayoutService } from '../utils/application-layout/service'; import { Breakpoint } from '../utils/breakpoints'; +import { ContextProvider, useContextProvider } from '../utils/context'; import { menuController } from '../utils/menu-service/menu-service'; import { Disposable } from '../utils/typed-event'; @@ -30,6 +32,14 @@ export class BasicNavigation { * Hide application header. Will disable responsive feature of basic navigation. */ @Prop() hideHeader = false; + @Watch('hideHeader') + onHideHeaderChange() { + this.contextProvider?.emit({ + hideHeader: this.hideHeader, + }); + + this.breakpoint = applicationLayoutService.breakpoint; + } @State() breakpoint: Breakpoint = 'lg'; @@ -38,6 +48,7 @@ export class BasicNavigation { } private modeDisposable: Disposable; + private contextProvider: ContextProvider; private onContentClick() { if (menuController.isPinned) { @@ -47,6 +58,14 @@ export class BasicNavigation { } componentWillLoad() { + this.contextProvider = useContextProvider( + this.hostElement, + ApplicationLayoutContext, + { + hideHeader: this.hideHeader, + } + ); + if (this.hideHeader === false) { this.modeDisposable = applicationLayoutService.onChange.on( (mode) => (this.breakpoint = mode) diff --git a/packages/core/src/components/menu-category/menu-category.tsx b/packages/core/src/components/menu-category/menu-category.tsx index c01bc62568f..677c3875673 100644 --- a/packages/core/src/components/menu-category/menu-category.tsx +++ b/packages/core/src/components/menu-category/menu-category.tsx @@ -8,7 +8,7 @@ */ import { Component, Element, h, Host, Prop, State } from '@stencil/core'; import anime from 'animejs'; -import { menuContext } from '../utils/application-layout/context'; +import { closestIxMenu } from '../utils/application-layout/context'; import { createMutationObserver } from '../utils/mutation-observer'; const DefaultIxMenuItemHeight = 40; @@ -123,7 +123,7 @@ export class MenuCategory { } componentDidLoad() { - const closestMenu = menuContext(this.hostElement); + const closestMenu = closestIxMenu(this.hostElement); if (!closestMenu) { throw Error('ix-menu-category can only be used as a child of ix-menu'); } diff --git a/packages/core/src/components/menu/menu.tsx b/packages/core/src/components/menu/menu.tsx index 74ce3d0a261..80e1ad7602d 100644 --- a/packages/core/src/components/menu/menu.tsx +++ b/packages/core/src/components/menu/menu.tsx @@ -21,12 +21,10 @@ import { Watch, } from '@stencil/core'; import anime from 'animejs'; -import { - hostContext, - isBasicNavigationLayout, -} from '../utils/application-layout/context'; +import { ApplicationLayoutContext } from '../utils/application-layout/context'; import { applicationLayoutService } from '../utils/application-layout/service'; import { Breakpoint } from '../utils/breakpoints'; +import { ContextType, useContextConsumer } from '../utils/context'; import { menuController } from '../utils/menu-service/menu-service'; import { convertToRemString } from '../utils/rwd.util'; import { themeSwitcher } from '../utils/theme-switcher'; @@ -171,7 +169,9 @@ export class Menu { @State() breakpoint: Breakpoint = 'lg'; @State() itemsScrollShadowTop = false; @State() itemsScrollShadowBottom = false; - + @State() applicationLayoutContext: ContextType< + typeof ApplicationLayoutContext + >; private isTransitionDisabled = false; // FBC IAM workaround #488 @@ -304,12 +304,24 @@ export class Menu { } componentWillLoad() { + useContextConsumer( + this.hostElement, + ApplicationLayoutContext, + (ctx) => { + this.applicationLayoutContext = ctx; + if (this.applicationLayoutContext.hideHeader === true) { + this.onModeChange('md'); + return; + } + + this.onModeChange(applicationLayoutService.breakpoint); + }, + true + ); + menuController.register(this.hostElement); - const layout = hostContext('ix-basic-navigation', this.hostElement); - if (isBasicNavigationLayout(layout) && layout.hideHeader === false) { - applicationLayoutService.onChange.on((mode) => this.onModeChange(mode)); - this.onModeChange(applicationLayoutService.breakpoint); - } + applicationLayoutService.onChange.on((mode) => this.onModeChange(mode)); + this.onModeChange(applicationLayoutService.breakpoint); } componentWillRender() { @@ -326,6 +338,9 @@ export class Menu { } private onModeChange(mode: Breakpoint) { + if (this.applicationLayoutContext?.hideHeader) { + return; + } if (!this.breakpoints.includes(mode)) { return; } diff --git a/packages/core/src/components/utils/application-layout/context.ts b/packages/core/src/components/utils/application-layout/context.ts index 17c92cd6116..b4ba000992e 100644 --- a/packages/core/src/components/utils/application-layout/context.ts +++ b/packages/core/src/components/utils/application-layout/context.ts @@ -7,39 +7,16 @@ * LICENSE file in the root directory of this source tree. */ -export function isBasicNavigationLayout( - element: HTMLElement -): element is HTMLIxBasicNavigationElement { - return element && element.tagName === 'IX-BASIC-NAVIGATION'; -} +import { createContext } from '../context'; -export const hostContext = ( - selector: string, - element: HTMLElement -): HTMLIxBasicNavigationElement | HTMLIxMapNavigationElement => { - return element.closest(selector); -}; - -export const isHostedBy = (selector: string, element: HTMLElement) => { - return hostContext(selector, element) !== null; -}; - -export const getHostApplicationLayout = (element: HTMLElement) => { - const [basicNavigation, mapNavigation] = [ - 'ix-basic-navigation', - 'ix-map-navigation', - ].map((selector) => hostContext(selector, element)); - - if (basicNavigation) { - return basicNavigation; - } - - if (mapNavigation) { - return mapNavigation; - } -}; - -export const menuContext = (element: Element) => { +export const closestIxMenu = (element: Element) => { const menuElement = element.closest('ix-menu'); return menuElement; }; + +export const ApplicationLayoutContext = createContext( + 'application-layout-context', + { + hideHeader: false, + } +); diff --git a/packages/core/src/components/utils/context.ts b/packages/core/src/components/utils/context.ts new file mode 100644 index 00000000000..094758f4dab --- /dev/null +++ b/packages/core/src/components/utils/context.ts @@ -0,0 +1,167 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import { TypedEvent } from './typed-event'; + +/** + * A Context object defines an optional initial value for a Context, as well as a name identifier for debugging purposes. + */ +export type Context = { + name: string; + initialValue?: T; +}; + +/** + * An unknown context type + */ +export type UnknownContext = Context; + +/** + * A helper type which can extract a Context value type from a Context type + */ +export type ContextType = T extends Context + ? Y + : never; + +/** + * A function which creates a Context value object + */ +export function createContext( + name: string, + initialValue?: T +): Readonly> { + return { + name, + initialValue, + }; +} + +/** + * A callback which is provided by a context requester and is called with the value satisfying the request. + * This callback can be called multiple times by context providers as the requested value is changed. + */ +export type ContextCallback = ( + value: ValueType, + unsubscribe?: () => void +) => void; + +/** + * An event fired by a context requester to signal it desires a named context. + * + * A provider should inspect the `context` property of the event to determine if it has a value that can + * satisfy the request, calling the `callback` with the requested value if so. + * + * If the requested context event contains a truthy `subscribe` value, then a provider can call the callback + * multiple times if the value is changed, if this is the case the provider should pass an `unsubscribe` + * function to the callback which requesters can invoke to indicate they no longer wish to receive these updates. + */ +export class ContextEvent extends Event { + public constructor( + public readonly context: T, + public readonly callback: ContextCallback>, + public readonly subscribe?: boolean + ) { + super('context-request', { bubbles: true, composed: true }); + } +} + +declare global { + interface HTMLElementEventMap { + /** + * A 'context-request' event can be emitted by any element which desires + * a context value to be injected by an external provider. + */ + 'context-request': ContextEvent; + } +} + +export type ContextConsumerSubscription = { + unsubscribe: () => void; +}; + +export function useContextConsumer< + T extends HTMLElement, + C extends UnknownContext +>( + hostElement: T, + context: C, + onContextReceived: ( + context: ContextType, + unsubscribe?: () => void + ) => void, + subscribe?: boolean +): ContextConsumerSubscription { + let _unsubscribe: () => void; + hostElement.dispatchEvent( + new ContextEvent( + context, + (ctx, unSub) => { + onContextReceived(ctx, unSub); + _unsubscribe = unSub; + }, + subscribe + ) + ); + + return { + unsubscribe: () => { + _unsubscribe(); + }, + }; +} +export type ContextProvider = Context> = { + emit: (context: ContextType) => void; +}; + +export function useContextProvider< + X extends {}, + C extends Context, + T extends HTMLElement = HTMLElement +>(hostElement: T, context: C, contextPayload?: ContextType) { + const requestContext = new TypedEvent>(); + const updateContext = new TypedEvent>(); + + const requests = new Set>(); + + hostElement.addEventListener( + 'context-request', + (requestContextEvent: ContextEvent) => { + if (requestContextEvent?.context.name !== context.name) { + return; + } + + requestContextEvent.stopPropagation(); + + if (requestContextEvent.subscribe) { + requests.add(requestContextEvent); + } + requestContext.emit(requestContextEvent); + + if (contextPayload) { + requestContextEvent.callback(contextPayload, () => { + requests.delete(requestContextEvent); + }); + } + } + ); + + updateContext.on((context: ContextType) => { + requests.forEach((r) => + r.callback(context, () => { + requests.delete(r); + }) + ); + }); + + return { + emit: (context: ContextType) => { + updateContext.emit(context); + }, + }; +} From 7fbd989f3a538380ef5db5309c5c1b87f56b8dbc Mon Sep 17 00:00:00 2001 From: Daniel Leroux Date: Mon, 28 Aug 2023 11:40:39 +0200 Subject: [PATCH 11/31] fix(core/map): add context provider --- .../basic-navigation/basic-navigation.tsx | 9 ++++--- .../map-navigation/map-navigation.tsx | 9 +++++++ .../menu-category/test/menu-category.ct.ts | 10 +++++++ packages/core/src/components/menu/menu.tsx | 26 ++++++++++++++----- .../core/src/components/menu/test/menu.ct.ts | 3 ++- .../utils/application-layout/context.ts | 13 +++++----- .../utils/application-layout/service.ts | 13 ++++++---- 7 files changed, 62 insertions(+), 21 deletions(-) diff --git a/packages/core/src/components/basic-navigation/basic-navigation.tsx b/packages/core/src/components/basic-navigation/basic-navigation.tsx index d60beb41e61..f3abf518167 100644 --- a/packages/core/src/components/basic-navigation/basic-navigation.tsx +++ b/packages/core/src/components/basic-navigation/basic-navigation.tsx @@ -36,6 +36,7 @@ export class BasicNavigation { onHideHeaderChange() { this.contextProvider?.emit({ hideHeader: this.hideHeader, + host: 'basic-navigation', }); this.breakpoint = applicationLayoutService.breakpoint; @@ -63,13 +64,15 @@ export class BasicNavigation { ApplicationLayoutContext, { hideHeader: this.hideHeader, + host: 'basic-navigation', } ); if (this.hideHeader === false) { - this.modeDisposable = applicationLayoutService.onChange.on( - (mode) => (this.breakpoint = mode) - ); + this.modeDisposable = applicationLayoutService.onChange.on((mode) => { + console.log(mode); + this.breakpoint = mode; + }); this.breakpoint = applicationLayoutService.breakpoint; } } diff --git a/packages/core/src/components/map-navigation/map-navigation.tsx b/packages/core/src/components/map-navigation/map-navigation.tsx index f16f8094a83..a87f1f4dd39 100644 --- a/packages/core/src/components/map-navigation/map-navigation.tsx +++ b/packages/core/src/components/map-navigation/map-navigation.tsx @@ -19,6 +19,8 @@ import { State, } from '@stencil/core'; import anime from 'animejs'; +import { ApplicationLayoutContext } from '../utils/application-layout/context'; +import { useContextProvider } from '../utils/context'; @Component({ tag: 'ix-map-navigation', @@ -84,6 +86,13 @@ export class MapNavigation { this.closeOverlay(); } + componentWillLoad() { + useContextProvider(this.hostElement, ApplicationLayoutContext, { + hideHeader: false, + host: 'map-navigation', + }); + } + private appendMenu() { this.menu.addEventListener( 'mapExpandChange', diff --git a/packages/core/src/components/menu-category/test/menu-category.ct.ts b/packages/core/src/components/menu-category/test/menu-category.ct.ts index f021310fe48..28f6edc2844 100644 --- a/packages/core/src/components/menu-category/test/menu-category.ct.ts +++ b/packages/core/src/components/menu-category/test/menu-category.ct.ts @@ -61,15 +61,19 @@ test('should collapse by click', async ({ mount, page }) => { test('should expand items', async ({ mount, page }) => { await mount(` + Test Item 1 Test Item 2 + `); const menu = page.locator('ix-menu'); + await menu.evaluate((menu: HTMLIxMenuElement) => (menu.breakpoints = ['md'])); + const menuButton = menu.locator('ix-burger-menu'); await menuButton.click(); const menuCategory = page.locator('ix-menu-category'); @@ -84,15 +88,20 @@ test('should expand items', async ({ mount, page }) => { test('should show items as dropdown', async ({ mount, page }) => { await mount(` + Test Item 1 Test Item 2 + `); await page.waitForSelector('ix-menu'); + const menu = page.locator('ix-menu'); + await menu.evaluate((menu: HTMLIxMenuElement) => (menu.breakpoints = ['md'])); + const menuCategory = page.locator('ix-menu-category'); await menuCategory.click(); @@ -125,6 +134,7 @@ test('should collapse category after collapse menu', async ({ await page.waitForSelector('ix-menu'); const menu = page.locator('ix-menu'); + await menu.evaluate((menu: HTMLIxMenuElement) => (menu.breakpoints = ['md'])); const menuButton = menu.locator('ix-burger-menu'); await menuButton.click(); diff --git a/packages/core/src/components/menu/menu.tsx b/packages/core/src/components/menu/menu.tsx index 80e1ad7602d..43329f95216 100644 --- a/packages/core/src/components/menu/menu.tsx +++ b/packages/core/src/components/menu/menu.tsx @@ -93,6 +93,10 @@ export class Menu { @Prop() pinned = false; @Watch('pinned') pinnedChange(newPinned: boolean) { + if (this.applicationLayoutContext?.host === 'map-navigation') { + console.warn('ix-map-navigation does not support pinned feature'); + return; + } this.setPinned(this.pinned); if (newPinned) { applicationLayoutService.disableBreakpointDetection(); @@ -309,19 +313,22 @@ export class Menu { ApplicationLayoutContext, (ctx) => { this.applicationLayoutContext = ctx; - if (this.applicationLayoutContext.hideHeader === true) { - this.onModeChange('md'); + if (ctx.hideHeader === true) { + this.onBreakpointChange('md'); return; } - this.onModeChange(applicationLayoutService.breakpoint); + this.onBreakpointChange(applicationLayoutService.breakpoint); }, true ); menuController.register(this.hostElement); - applicationLayoutService.onChange.on((mode) => this.onModeChange(mode)); - this.onModeChange(applicationLayoutService.breakpoint); + applicationLayoutService.setBreakpoints(this.breakpoints); + applicationLayoutService.onChange.on((breakpoint) => + this.onBreakpointChange(breakpoint) + ); + this.onBreakpointChange(applicationLayoutService.breakpoint); } componentWillRender() { @@ -337,7 +344,14 @@ export class Menu { menuController.setIsPinned(pinned); } - private onModeChange(mode: Breakpoint) { + private onBreakpointChange(mode: Breakpoint) { + if (!this.applicationLayoutContext && mode === 'sm') { + return; + } + if (this.applicationLayoutContext?.host === 'map-navigation') { + this.breakpoint = 'md'; + return; + } if (this.applicationLayoutContext?.hideHeader) { return; } diff --git a/packages/core/src/components/menu/test/menu.ct.ts b/packages/core/src/components/menu/test/menu.ct.ts index f01431b2826..c722f014b0c 100644 --- a/packages/core/src/components/menu/test/menu.ct.ts +++ b/packages/core/src/components/menu/test/menu.ct.ts @@ -19,7 +19,8 @@ test('renders', async ({ mount, page }) => { `); const element = page.locator('ix-menu'); - await expect(element).toHaveClass('breakpoint-lg hydrated'); + await expect(element).toHaveClass(/hydrated/); + await expect(element).toHaveClass(/breakpoint-lg/); }); test('should stay close after menu click when NOT pinned', async ({ diff --git a/packages/core/src/components/utils/application-layout/context.ts b/packages/core/src/components/utils/application-layout/context.ts index b4ba000992e..80a75731feb 100644 --- a/packages/core/src/components/utils/application-layout/context.ts +++ b/packages/core/src/components/utils/application-layout/context.ts @@ -14,9 +14,10 @@ export const closestIxMenu = (element: Element) => { return menuElement; }; -export const ApplicationLayoutContext = createContext( - 'application-layout-context', - { - hideHeader: false, - } -); +export const ApplicationLayoutContext = createContext<{ + hideHeader: boolean; + host: 'basic-navigation' | 'map-navigation' | null; +}>('application-layout-context', { + hideHeader: false, + host: null, +}); diff --git a/packages/core/src/components/utils/application-layout/service.ts b/packages/core/src/components/utils/application-layout/service.ts index 16977ab1dec..48110778b26 100644 --- a/packages/core/src/components/utils/application-layout/service.ts +++ b/packages/core/src/components/utils/application-layout/service.ts @@ -40,6 +40,9 @@ class ApplicationLayoutService { if (!this.#isDetectionEnabled) { return; } + if (!this.#supportedBreakpoints) { + return; + } const matchBreakpoints: [Breakpoint, boolean][] = []; this.#supportedBreakpoints.forEach((breakpoint) => { const match = matchBreakpoint(breakpoint); @@ -69,13 +72,13 @@ class ApplicationLayoutService { this.#isDetectionEnabled = true; } - public setBreakpoint(mode: Breakpoint) { - this.#breakpoint = mode; - this.#breakpointChangeListener.emit(mode); + public setBreakpoint(breakpoint: Breakpoint) { + this.#breakpoint = breakpoint; + this.#breakpointChangeListener.emit(breakpoint); } - public setBreakpoints(modes: Breakpoint[]) { - this.#supportedBreakpoints = modes; + public setBreakpoints(breakpoints: Breakpoint[]) { + this.#supportedBreakpoints = breakpoints; this.onResize(); } } From d0daac771f7a3279b89689afe2d275bcc6a389df Mon Sep 17 00:00:00 2001 From: Daniel Leroux Date: Tue, 29 Aug 2023 10:56:02 +0200 Subject: [PATCH 12/31] feat(core/application-frame): add application frame --- .../core/scss/theme/classic-dark/_index.scss | 28 ++-- packages/core/src/components.d.ts | 78 +++++++--- .../application-header.scss | 2 + .../application-header/application-header.tsx | 18 ++- .../components/application/application.scss | 68 +++++++++ .../components/application/application.tsx | 140 ++++++++++++++++++ .../basic-navigation/basic-navigation.tsx | 5 +- .../core/src/components/content/content.scss | 21 +++ .../core/src/components/content/content.tsx | 27 ++++ .../menu-category/test/menu-category.ct.ts | 8 +- packages/core/src/components/menu/menu.tsx | 46 +----- .../core/src/components/menu/test/menu.ct.ts | 2 +- .../components/my-component/my-component.tsx | 29 +++- .../src/components/utils/theme-switcher.ts | 61 +++++++- packages/core/src/index.html | 2 +- 15 files changed, 440 insertions(+), 95 deletions(-) create mode 100644 packages/core/src/components/application/application.scss create mode 100644 packages/core/src/components/application/application.tsx create mode 100644 packages/core/src/components/content/content.scss create mode 100644 packages/core/src/components/content/content.tsx diff --git a/packages/core/scss/theme/classic-dark/_index.scss b/packages/core/scss/theme/classic-dark/_index.scss index 9517352f520..b97fdd1b001 100644 --- a/packages/core/scss/theme/classic-dark/_index.scss +++ b/packages/core/scss/theme/classic-dark/_index.scss @@ -1,17 +1,17 @@ /* * COPYRIGHT (c) Siemens AG 2018-2023 ALL RIGHTS RESERVED. */ -@import "./color"; -@import "./boxShadow"; -@import "./fontFamilies"; -@import "./fontWeights"; -@import "./typography"; -@import "./borderRadius"; -@import "./sizing"; -@import "./fontSizes"; -@import "./lineHeights"; -@import "./other"; -@import "./spacing"; -@import "./borderWidth"; -@import "./border"; -@import "./letterSpacing"; +@import './color'; +@import './boxShadow'; +@import './fontFamilies'; +@import './fontWeights'; +@import './typography'; +@import './borderRadius'; +@import './sizing'; +@import './fontSizes'; +@import './lineHeights'; +@import './other'; +@import './spacing'; +@import './borderWidth'; +@import './border'; +@import './letterSpacing'; diff --git a/packages/core/src/components.d.ts b/packages/core/src/components.d.ts index 833e0530e01..d5de505ae80 100644 --- a/packages/core/src/components.d.ts +++ b/packages/core/src/components.d.ts @@ -6,6 +6,7 @@ */ import { HTMLStencilElement, JSXBase } from "@stencil/core/internal"; import { ActionCardVariant } from "./components/action-card/action-card"; +import { IxTheme } from "./components/utils/theme-switcher"; import { Breakpoint } from "./components/utils/breakpoints"; import { ButtonVariant } from "./components/button/button"; import { CardVariant } from "./components/card/card"; @@ -39,6 +40,7 @@ import { TreeContext, TreeItemContext, TreeModel, UpdateCallback } from "./compo import { TextDecoration, TypographyColors, TypographyFormat, TypographyVariants } from "./components/typography/typography"; import { UploadFileState } from "./components/upload/upload-file-state"; export { ActionCardVariant } from "./components/action-card/action-card"; +export { IxTheme } from "./components/utils/theme-switcher"; export { Breakpoint } from "./components/utils/breakpoints"; export { ButtonVariant } from "./components/button/button"; export { CardVariant } from "./components/card/card"; @@ -97,8 +99,25 @@ export namespace Components { */ "variant": ActionCardVariant; } + interface IxApplication { + /** + * Supported layouts + */ + "breakpoints": Breakpoint[]; + /** + * Change the responsive layout of the menu structure + */ + "forceBreakpoint": Breakpoint | undefined; + /** + * Application theme + */ + "theme": IxTheme; + /** + * Use the system appearance dark or light + */ + "themeSystemAppearance": boolean; + } interface IxApplicationHeader { - "breakpoint": Breakpoint; /** * Application name */ @@ -396,6 +415,8 @@ export namespace Components { */ "sizeSm"?: ColumnSize; } + interface IxContent { + } interface IxContentHeader { /** * Display a back button @@ -1125,10 +1146,6 @@ export namespace Components { * Should only be set if you use ix-menu standalone */ "applicationName": string; - /** - * Supported layouts - */ - "breakpoints": Breakpoint[]; /** * Internal */ @@ -1142,10 +1159,6 @@ export namespace Components { */ "enableToggleTheme": boolean; "expand": boolean; - /** - * Change the responsive layout of the menu structure - */ - "forceBreakpoint": Breakpoint | undefined; "i18nCollapse": string; "i18nExpand": string; /** @@ -2249,6 +2262,12 @@ declare global { prototype: HTMLIxActionCardElement; new (): HTMLIxActionCardElement; }; + interface HTMLIxApplicationElement extends Components.IxApplication, HTMLStencilElement { + } + var HTMLIxApplicationElement: { + prototype: HTMLIxApplicationElement; + new (): HTMLIxApplicationElement; + }; interface HTMLIxApplicationHeaderElement extends Components.IxApplicationHeader, HTMLStencilElement { } var HTMLIxApplicationHeaderElement: { @@ -2366,6 +2385,12 @@ declare global { prototype: HTMLIxColElement; new (): HTMLIxColElement; }; + interface HTMLIxContentElement extends Components.IxContent, HTMLStencilElement { + } + var HTMLIxContentElement: { + prototype: HTMLIxContentElement; + new (): HTMLIxContentElement; + }; interface HTMLIxContentHeaderElement extends Components.IxContentHeader, HTMLStencilElement { } var HTMLIxContentHeaderElement: { @@ -2890,6 +2915,7 @@ declare global { }; interface HTMLElementTagNameMap { "ix-action-card": HTMLIxActionCardElement; + "ix-application": HTMLIxApplicationElement; "ix-application-header": HTMLIxApplicationHeaderElement; "ix-avatar": HTMLIxAvatarElement; "ix-basic-navigation": HTMLIxBasicNavigationElement; @@ -2906,6 +2932,7 @@ declare global { "ix-category-filter": HTMLIxCategoryFilterElement; "ix-chip": HTMLIxChipElement; "ix-col": HTMLIxColElement; + "ix-content": HTMLIxContentElement; "ix-content-header": HTMLIxContentHeaderElement; "ix-css-grid": HTMLIxCssGridElement; "ix-css-grid-item": HTMLIxCssGridItemElement; @@ -3011,8 +3038,25 @@ declare namespace LocalJSX { */ "variant"?: ActionCardVariant; } + interface IxApplication { + /** + * Supported layouts + */ + "breakpoints"?: Breakpoint[]; + /** + * Change the responsive layout of the menu structure + */ + "forceBreakpoint"?: Breakpoint | undefined; + /** + * Application theme + */ + "theme"?: IxTheme; + /** + * Use the system appearance dark or light + */ + "themeSystemAppearance"?: boolean; + } interface IxApplicationHeader { - "breakpoint"?: Breakpoint; /** * Application name */ @@ -3358,6 +3402,8 @@ declare namespace LocalJSX { */ "sizeSm"?: ColumnSize; } + interface IxContent { + } interface IxContentHeader { /** * Display a back button @@ -4157,10 +4203,6 @@ declare namespace LocalJSX { * Should only be set if you use ix-menu standalone */ "applicationName"?: string; - /** - * Supported layouts - */ - "breakpoints"?: Breakpoint[]; /** * Internal */ @@ -4174,10 +4216,6 @@ declare namespace LocalJSX { */ "enableToggleTheme"?: boolean; "expand"?: boolean; - /** - * Change the responsive layout of the menu structure - */ - "forceBreakpoint"?: Breakpoint | undefined; "i18nCollapse"?: string; "i18nExpand"?: string; /** @@ -5186,6 +5224,7 @@ declare namespace LocalJSX { } interface IntrinsicElements { "ix-action-card": IxActionCard; + "ix-application": IxApplication; "ix-application-header": IxApplicationHeader; "ix-avatar": IxAvatar; "ix-basic-navigation": IxBasicNavigation; @@ -5202,6 +5241,7 @@ declare namespace LocalJSX { "ix-category-filter": IxCategoryFilter; "ix-chip": IxChip; "ix-col": IxCol; + "ix-content": IxContent; "ix-content-header": IxContentHeader; "ix-css-grid": IxCssGrid; "ix-css-grid-item": IxCssGridItem; @@ -5289,6 +5329,7 @@ declare module "@stencil/core" { * @since 1.6.0 */ "ix-action-card": LocalJSX.IxActionCard & JSXBase.HTMLAttributes; + "ix-application": LocalJSX.IxApplication & JSXBase.HTMLAttributes; "ix-application-header": LocalJSX.IxApplicationHeader & JSXBase.HTMLAttributes; /** * @since 2.0.0 @@ -5326,6 +5367,7 @@ declare module "@stencil/core" { * @since 2.0.0 */ "ix-col": LocalJSX.IxCol & JSXBase.HTMLAttributes; + "ix-content": LocalJSX.IxContent & JSXBase.HTMLAttributes; "ix-content-header": LocalJSX.IxContentHeader & JSXBase.HTMLAttributes; "ix-css-grid": LocalJSX.IxCssGrid & JSXBase.HTMLAttributes; "ix-css-grid-item": LocalJSX.IxCssGridItem & JSXBase.HTMLAttributes; diff --git a/packages/core/src/components/application-header/application-header.scss b/packages/core/src/components/application-header/application-header.scss index c94f07c16bd..eb4a0e9fee7 100644 --- a/packages/core/src/components/application-header/application-header.scss +++ b/packages/core/src/components/application-header/application-header.scss @@ -21,6 +21,8 @@ border-bottom: var(--theme-app-header--border-width) solid var(--theme-app-header--border-color); + z-index: var(--theme-z-index-fixed); + .name { margin-left: 2.5rem; margin-right: 2.5rem; diff --git a/packages/core/src/components/application-header/application-header.tsx b/packages/core/src/components/application-header/application-header.tsx index 1e09348be42..57b6dea3c1f 100644 --- a/packages/core/src/components/application-header/application-header.tsx +++ b/packages/core/src/components/application-header/application-header.tsx @@ -8,6 +8,7 @@ */ import { Component, Element, h, Host, Prop, State } from '@stencil/core'; +import { applicationLayoutService } from '../utils/application-layout'; import { Breakpoint } from '../utils/breakpoints'; import { menuController } from '../utils/menu-service/menu-service'; import { Disposable } from '../utils/typed-event'; @@ -25,11 +26,8 @@ export class ApplicationHeader { */ @Prop() name: string; - /** - * @internal - */ - @Prop() breakpoint: Breakpoint = 'lg'; - + /** @internal */ + @State() breakpoint: Breakpoint = 'lg'; @State() menuExpanded = false; private menuDisposable?: Disposable; @@ -39,6 +37,11 @@ export class ApplicationHeader { this.menuDisposable = menuController.expandChange.on((show) => { this.menuExpanded = show; }); + + this.modeDisposable = applicationLayoutService.onChange.on((mode) => { + this.breakpoint = mode; + }); + this.breakpoint = applicationLayoutService.breakpoint; } componentDidLoad() { @@ -77,7 +80,10 @@ export class ApplicationHeader { render() { return ( - + {this.breakpoint === 'sm' ? ( this.onMenuClick()} diff --git a/packages/core/src/components/application/application.scss b/packages/core/src/components/application/application.scss new file mode 100644 index 00000000000..b61f0be33e6 --- /dev/null +++ b/packages/core/src/components/application/application.scss @@ -0,0 +1,68 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +@import 'mixins/shadow-dom/component'; + +:host { + @include ix-component; + + display: flex; + position: relative; + width: 100%; + height: 100%; + + flex-direction: column; + + ix-application-header { + z-index: calc(var(--theme-z-index-sticky) + 1); + } + + .logo-wrapper { + display: contents; + } + + .content { + display: flex; + height: 100%; + width: 100%; + position: relative; + margin-left: 3.25rem; + overflow: auto; + } + + .navigation-content { + display: flex; + position: relative; + + flex-direction: row; + + height: calc(100% - 2.75rem); + width: 100%; + } +} + +:host(.hide-header) { + .navigation-content, + .content { + height: 100%; + } +} + +:host(.breakpoint-lg) { + .content { + margin-left: 0rem; + } +} + +:host(.breakpoint-sm) { + .content { + margin-left: 0px; + width: 100%; + } +} diff --git a/packages/core/src/components/application/application.tsx b/packages/core/src/components/application/application.tsx new file mode 100644 index 00000000000..1d0f12b53ca --- /dev/null +++ b/packages/core/src/components/application/application.tsx @@ -0,0 +1,140 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import { Component, Element, h, Host, Prop, State, Watch } from '@stencil/core'; +import { ApplicationLayoutContext } from '../utils/application-layout/context'; +import { applicationLayoutService } from '../utils/application-layout/service'; +import { Breakpoint } from '../utils/breakpoints'; +import { useContextProvider } from '../utils/context'; +import { menuController } from '../utils/menu-service/menu-service'; +import { IxTheme, themeSwitcher } from '../utils/theme-switcher'; +import { Disposable } from '../utils/typed-event'; + +@Component({ + tag: 'ix-application', + styleUrl: 'application.scss', + shadow: true, +}) +export class Application { + @Element() hostElement: HTMLIxApplicationElement; + + /** + * Application theme + */ + @Prop() theme: IxTheme; + + /** + * Use the system appearance dark or light + */ + @Prop() themeSystemAppearance = false; + + /** + * Change the responsive layout of the menu structure + */ + @Prop() forceBreakpoint: Breakpoint | undefined; + forceLayoutChange(newMode: Breakpoint | undefined) { + if (!newMode) { + applicationLayoutService.enableBreakpointDetection(); + return; + } + + applicationLayoutService.disableBreakpointDetection(); + applicationLayoutService.setBreakpoint(newMode); + } + + /** + * Supported layouts + */ + @Prop() breakpoints: Breakpoint[] = ['sm', 'md', 'lg']; + @Watch('breakpoints') + onBreakpointsChange(modes: Breakpoint[]) { + applicationLayoutService.setBreakpoints(modes); + } + + @State() breakpoint: Breakpoint = 'lg'; + + get menu(): HTMLIxMenuElement | null { + return this.hostElement.querySelector('ix-menu'); + } + + private modeDisposable: Disposable; + + private onContentClick() { + if (menuController.isPinned) { + return; + } + this.menu?.toggleMenu(false); + } + + componentWillLoad() { + applicationLayoutService.setBreakpoints(this.breakpoints); + + useContextProvider(this.hostElement, ApplicationLayoutContext, { + hideHeader: false, + host: 'basic-navigation', + }); + + this.modeDisposable = applicationLayoutService.onChange.on((mode) => { + this.breakpoint = mode; + }); + this.breakpoint = applicationLayoutService.breakpoint; + + if (this.forceBreakpoint) { + this.forceLayoutChange(this.forceBreakpoint); + } + + this.changeTheme(); + } + + disconnectedCallback() { + this.modeDisposable?.dispose(); + } + + @Watch('theme') + @Watch('themeSystemAppearance') + private changeTheme() { + if (!this.theme && this.themeSystemAppearance) { + themeSwitcher.setVariant(); + return; + } + + if (!this.theme) { + return; + } + + if (themeSwitcher.hasVariantSuffix(this.theme)) { + themeSwitcher.setTheme(`theme-${this.theme}`); + return; + } + + themeSwitcher.setTheme( + `theme-${this.theme}-dark`, + this.themeSystemAppearance + ); + } + + render() { + return ( + + + + + ); + } +} diff --git a/packages/core/src/components/basic-navigation/basic-navigation.tsx b/packages/core/src/components/basic-navigation/basic-navigation.tsx index f3abf518167..2468ee20cd9 100644 --- a/packages/core/src/components/basic-navigation/basic-navigation.tsx +++ b/packages/core/src/components/basic-navigation/basic-navigation.tsx @@ -97,10 +97,7 @@ export class BasicNavigation { }} > {!this.hideHeader ? ( - + ) : null} diff --git a/packages/core/src/components/content/content.scss b/packages/core/src/components/content/content.scss new file mode 100644 index 00000000000..3207416f7ea --- /dev/null +++ b/packages/core/src/components/content/content.scss @@ -0,0 +1,21 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +:host { + display: block; + position: relative; + padding: 1.5rem 2rem; + + width: 100%; + height: 100%; + + ::slotted(ix-content-header) { + margin-bottom: 1.5rem; + } +} diff --git a/packages/core/src/components/content/content.tsx b/packages/core/src/components/content/content.tsx new file mode 100644 index 00000000000..ee36340aae5 --- /dev/null +++ b/packages/core/src/components/content/content.tsx @@ -0,0 +1,27 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import { Component, h, Host } from '@stencil/core'; + +@Component({ + tag: 'ix-content', + styleUrl: 'content.scss', + shadow: true, +}) +export class Content { + render() { + return ( + +
+ +
+
+ ); + } +} diff --git a/packages/core/src/components/menu-category/test/menu-category.ct.ts b/packages/core/src/components/menu-category/test/menu-category.ct.ts index 28f6edc2844..0c57db80bba 100644 --- a/packages/core/src/components/menu-category/test/menu-category.ct.ts +++ b/packages/core/src/components/menu-category/test/menu-category.ct.ts @@ -37,7 +37,7 @@ test('should collapse by click', async ({ mount, page }) => { const menu = page.locator('ix-menu'); const expandMenuButton = page.locator('ix-menu').locator('.burger-menu'); - await menu.evaluate((menu: HTMLIxMenuElement) => (menu.breakpoints = ['md'])); + // await menu.evaluate((menu: HTMLIxMenuElement) => (menu.breakpoints = ['md'])); await categoryItem.click(); @@ -72,7 +72,7 @@ test('should expand items', async ({ mount, page }) => { `); const menu = page.locator('ix-menu'); - await menu.evaluate((menu: HTMLIxMenuElement) => (menu.breakpoints = ['md'])); + // await menu.evaluate((menu: HTMLIxMenuElement) => (menu.breakpoints = ['md'])); const menuButton = menu.locator('ix-burger-menu'); await menuButton.click(); @@ -100,7 +100,7 @@ test('should show items as dropdown', async ({ mount, page }) => { await page.waitForSelector('ix-menu'); const menu = page.locator('ix-menu'); - await menu.evaluate((menu: HTMLIxMenuElement) => (menu.breakpoints = ['md'])); + // await menu.evaluate((menu: HTMLIxMenuElement) => (menu.breakpoints = ['md'])); const menuCategory = page.locator('ix-menu-category'); await menuCategory.click(); @@ -134,7 +134,7 @@ test('should collapse category after collapse menu', async ({ await page.waitForSelector('ix-menu'); const menu = page.locator('ix-menu'); - await menu.evaluate((menu: HTMLIxMenuElement) => (menu.breakpoints = ['md'])); + // await menu.evaluate((menu: HTMLIxMenuElement) => (menu.breakpoints = ['md'])); const menuButton = menu.locator('ix-burger-menu'); await menuButton.click(); diff --git a/packages/core/src/components/menu/menu.tsx b/packages/core/src/components/menu/menu.tsx index 43329f95216..b9e2c28d2ab 100644 --- a/packages/core/src/components/menu/menu.tsx +++ b/packages/core/src/components/menu/menu.tsx @@ -107,36 +107,6 @@ export class Menu { applicationLayoutService.enableBreakpointDetection(); } - /** - * Change the responsive layout of the menu structure - */ - @Prop() forceBreakpoint: Breakpoint | undefined; - forceLayoutChange(newMode: Breakpoint | undefined) { - if (this.pinned) { - console.warn( - 'You cannot force a breakpoint while pinned property is set!' - ); - return; - } - - if (!newMode) { - applicationLayoutService.enableBreakpointDetection(); - return; - } - - applicationLayoutService.disableBreakpointDetection(); - applicationLayoutService.setBreakpoint(newMode); - } - - /** - * Supported layouts - */ - @Prop() breakpoints: Breakpoint[] = ['sm', 'md', 'lg']; - @Watch('breakpoints') - onBreakpointsChange(modes: Breakpoint[]) { - applicationLayoutService.setBreakpoints(modes); - } - /** */ @Prop() i18nLegal = 'About & legal information'; @@ -298,13 +268,13 @@ export class Menu { this.pinnedChange(this.pinned); } - if (this.forceBreakpoint) { - this.forceLayoutChange(this.forceBreakpoint); - } + // if (this.forceBreakpoint) { + // this.forceLayoutChange(this.forceBreakpoint); + // } - if (this.breakpoints !== undefined && this.breakpoints.length > 0) { - this.onBreakpointsChange(this.breakpoints); - } + // if (this.breakpoints !== undefined && this.breakpoints.length > 0) { + // this.onBreakpointsChange(this.breakpoints); + // } } componentWillLoad() { @@ -324,7 +294,6 @@ export class Menu { ); menuController.register(this.hostElement); - applicationLayoutService.setBreakpoints(this.breakpoints); applicationLayoutService.onChange.on((breakpoint) => this.onBreakpointChange(breakpoint) ); @@ -355,9 +324,6 @@ export class Menu { if (this.applicationLayoutContext?.hideHeader) { return; } - if (!this.breakpoints.includes(mode)) { - return; - } this.breakpoint = mode; if (this.breakpoint === 'lg') { diff --git a/packages/core/src/components/menu/test/menu.ct.ts b/packages/core/src/components/menu/test/menu.ct.ts index c722f014b0c..462f829fa00 100644 --- a/packages/core/src/components/menu/test/menu.ct.ts +++ b/packages/core/src/components/menu/test/menu.ct.ts @@ -36,7 +36,7 @@ test('should stay close after menu click when NOT pinned', async ({ `); const menu = page.locator('ix-menu'); await menu.evaluate((menu: HTMLIxMenuElement) => { - menu.breakpoints = ['md']; + // menu.breakpoints = ['md']; }); const menuButton = menu.locator('ix-burger-menu'); await menuButton.click(); diff --git a/packages/core/src/components/my-component/my-component.tsx b/packages/core/src/components/my-component/my-component.tsx index 1c913f1220c..1997e71177a 100644 --- a/packages/core/src/components/my-component/my-component.tsx +++ b/packages/core/src/components/my-component/my-component.tsx @@ -6,7 +6,7 @@ * This source code is licensed under the MIT license found in the * LICENxSE file in the root directory of this source tree. */ -import { Component, h, Host } from '@stencil/core'; +import { Component, h, Host, State } from '@stencil/core'; @Component({ tag: 'my-component', @@ -14,7 +14,32 @@ import { Component, h, Host } from '@stencil/core'; scoped: true, }) export class MyComponent { + @State() theme = 'classic'; + render() { - return ; + return ( + + + + + Test + Test 2 + + + + + Toggle Theme + Button2 + Button3 + + Some Content + + + + ); } } diff --git a/packages/core/src/components/utils/theme-switcher.ts b/packages/core/src/components/utils/theme-switcher.ts index e4843725fa5..08ba4288009 100644 --- a/packages/core/src/components/utils/theme-switcher.ts +++ b/packages/core/src/components/utils/theme-switcher.ts @@ -1,6 +1,8 @@ import { TypedEvent } from './typed-event'; -export class ThemeSwitcher { +export type ThemeVariant = 'light' | 'dark'; + +class ThemeSwitcher { readonly prefixTheme = 'theme-'; readonly suffixLight = '-light'; readonly suffixDark = '-dark'; @@ -13,7 +15,7 @@ export class ThemeSwitcher { return this._themeChanged; } - private hasVariantSuffix(className: string) { + public hasVariantSuffix(className: string) { return ( className.endsWith(this.suffixDark) || className.endsWith(this.suffixLight) @@ -26,15 +28,25 @@ export class ThemeSwitcher { ); } - public setTheme(themeName: string) { - if (!this.isThemeClass(themeName)) { + public setTheme(themeName: string, systemAppearance = false) { + if (!this.isThemeClass(themeName) && systemAppearance === false) { throw Error( `Provided theme name ${themeName} does not match our naming conventions. (theme--(dark,light))` ); } - const oldThemes: string[] = []; + if (systemAppearance) { + const currentSystemAppearance = getCurrentSystemAppearance(); + this.replaceBodyThemeClass(themeName); + this.setVariant(currentSystemAppearance); + return; + } + + this.replaceBodyThemeClass(themeName); + } + private replaceBodyThemeClass(themeName: string) { + const oldThemes: string[] = []; document.body.classList.forEach((className) => { if (this.isThemeClass(className)) { oldThemes.push(className); @@ -67,6 +79,29 @@ export class ThemeSwitcher { }); } + public getCurrentTheme() { + return Array.from(document.body.classList).find((className) => + this.isThemeClass(className) + ); + } + + public setVariant(variant: ThemeVariant = getCurrentSystemAppearance()) { + const currentTheme = this.getCurrentTheme(); + document.body.classList.remove(currentTheme); + + if (currentTheme.endsWith(this.suffixDark)) { + document.body.classList.add( + currentTheme.replace(/-dark$/g, `-${variant}`) + ); + } + + if (currentTheme.endsWith(this.suffixLight)) { + document.body.classList.add( + currentTheme.replace(/-light$/g, `-${variant}`) + ); + } + } + private getOppositeMode(themeName: string) { if (themeName.endsWith(this.suffixDark)) { return themeName.replace(/-dark$/g, this.suffixLight); @@ -118,4 +153,20 @@ export class ThemeSwitcher { } } +export type IxTheme = + | 'classic' + | 'classic-dark' + | 'classic-light' + | (string & {}); + +export const getCurrentSystemAppearance = (): ThemeVariant => { + const matchMedia = window.matchMedia('(prefers-color-scheme: dark)'); + + if (matchMedia.matches) { + return 'dark'; + } + + return 'light'; +}; + export const themeSwitcher = new ThemeSwitcher(); diff --git a/packages/core/src/index.html b/packages/core/src/index.html index 10eef345d1e..57df63cbeaf 100644 --- a/packages/core/src/index.html +++ b/packages/core/src/index.html @@ -29,7 +29,7 @@ - + From cd5546e5668715eed55a7e9a7a058ae08d7bae2a Mon Sep 17 00:00:00 2001 From: Daniel Leroux Date: Tue, 29 Aug 2023 14:50:54 +0200 Subject: [PATCH 13/31] feat: move breakpoint to shell app --- packages/core/scss/ix.scss | 37 ++-------------- packages/core/scss/mixins/_scrollbar.scss | 44 +++++++++++++++++++ .../scss/mixins/shadow-dom/_component.scss | 4 ++ .../core/scss/theme/classic-dark/_index.scss | 34 ++++++++------ .../core/scss/theme/classic-light/_index.scss | 6 +++ .../theme/legacy-classic-dark/_index.scss | 6 +++ .../theme/legacy-classic-light/_index.scss | 6 +++ packages/core/src/components.d.ts | 16 +++++++ .../application-header.scss | 1 + .../components/application/application.scss | 24 ++++------ .../components/application/application.tsx | 10 ++--- .../basic-navigation/basic-navigation.tsx | 30 ++++++++++++- .../content-header/content-header.tsx | 2 +- .../core/src/components/content/content.scss | 20 +++++++-- .../core/src/components/content/content.tsx | 32 ++++++++++++-- .../components/my-component/my-component.tsx | 21 ++------- .../utils/application-layout/service.ts | 18 ++++++-- .../src/components/utils/theme-switcher.ts | 9 +++- 18 files changed, 220 insertions(+), 100 deletions(-) create mode 100644 packages/core/scss/mixins/_scrollbar.scss diff --git a/packages/core/scss/ix.scss b/packages/core/scss/ix.scss index 6edfa31043a..95f26a4cc52 100644 --- a/packages/core/scss/ix.scss +++ b/packages/core/scss/ix.scss @@ -39,6 +39,8 @@ @import './components/table'; @import './components/fonts'; +@import 'mixins/scrollbar'; + :root { --animate-duration: #{$default-time}; --bs-font-sans-serif: Siemens Sans, system-ui, -apple-system, 'Segoe UI', @@ -58,40 +60,7 @@ body { } body:not(.disable-scrollbar) { - ::-webkit-scrollbar-button { - display: none; - } - - /* width */ - ::-webkit-scrollbar { - width: $small-space; - height: $small-space; - } - - /* Track */ - ::-webkit-scrollbar-track { - border-radius: 5px; - background: var(--theme-scrollbar-track--background); - } - - ::-webkit-scrollbar-track:hover { - background: var(--theme-scrollbar-track--background--hover); - } - - /* Handle */ - ::-webkit-scrollbar-thumb { - border-radius: 5px; - background: var(--theme-scrollbar-thumb--background); - } - - /* Handle on hover */ - ::-webkit-scrollbar-thumb:hover { - background: var(--theme-scrollbar-thumb--background--hover); - } - - ::-webkit-scrollbar-corner { - display: none; - } + @include scrollbar(); } *, diff --git a/packages/core/scss/mixins/_scrollbar.scss b/packages/core/scss/mixins/_scrollbar.scss new file mode 100644 index 00000000000..5a1f03989bd --- /dev/null +++ b/packages/core/scss/mixins/_scrollbar.scss @@ -0,0 +1,44 @@ +/* + * SPDX-FileCopyrightText: 2023 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +@mixin scrollbar() { + ::-webkit-scrollbar-button { + display: none; + } + + /* width */ + ::-webkit-scrollbar { + width: 0.5rem; + height: 0.5rem; + } + + /* Track */ + ::-webkit-scrollbar-track { + border-radius: 5px; + background: var(--theme-scrollbar-track--background); + } + + ::-webkit-scrollbar-track:hover { + background: var(--theme-scrollbar-track--background--hover); + } + + /* Handle */ + ::-webkit-scrollbar-thumb { + border-radius: 5px; + background: var(--theme-scrollbar-thumb--background); + } + + /* Handle on hover */ + ::-webkit-scrollbar-thumb:hover { + background: var(--theme-scrollbar-thumb--background--hover); + } + + ::-webkit-scrollbar-corner { + display: none; + } +} diff --git a/packages/core/scss/mixins/shadow-dom/_component.scss b/packages/core/scss/mixins/shadow-dom/_component.scss index e354ea68c17..85e3a403e0c 100644 --- a/packages/core/scss/mixins/shadow-dom/_component.scss +++ b/packages/core/scss/mixins/shadow-dom/_component.scss @@ -6,10 +6,14 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ +@import 'mixins/scrollbar'; + @mixin ix-component() { *, *::after, *::before { box-sizing: border-box; } + + @include scrollbar(); } diff --git a/packages/core/scss/theme/classic-dark/_index.scss b/packages/core/scss/theme/classic-dark/_index.scss index b97fdd1b001..901aa5ab7a7 100644 --- a/packages/core/scss/theme/classic-dark/_index.scss +++ b/packages/core/scss/theme/classic-dark/_index.scss @@ -1,17 +1,23 @@ /* * COPYRIGHT (c) Siemens AG 2018-2023 ALL RIGHTS RESERVED. */ -@import './color'; -@import './boxShadow'; -@import './fontFamilies'; -@import './fontWeights'; -@import './typography'; -@import './borderRadius'; -@import './sizing'; -@import './fontSizes'; -@import './lineHeights'; -@import './other'; -@import './spacing'; -@import './borderWidth'; -@import './border'; -@import './letterSpacing'; +@import "./color"; +@import "./boxShadow"; +@import "./fontFamilies"; +@import "./fontWeights"; +@import "./typography"; +@import "./borderRadius"; +@import "./sizing"; +@import "./fontSizes"; +@import "./lineHeights"; +@import "./other"; +@import "./spacing"; +@import "./borderWidth"; +@import "./border"; +@import "./letterSpacing"; + +:root { + .theme-classic-dark { + --ix-theme-name: classic-dark; + } +} \ No newline at end of file diff --git a/packages/core/scss/theme/classic-light/_index.scss b/packages/core/scss/theme/classic-light/_index.scss index 9517352f520..39a6d5894c8 100644 --- a/packages/core/scss/theme/classic-light/_index.scss +++ b/packages/core/scss/theme/classic-light/_index.scss @@ -15,3 +15,9 @@ @import "./borderWidth"; @import "./border"; @import "./letterSpacing"; + +:root { + .theme-classic-light { + --ix-theme-name: classic-light; + } +} \ No newline at end of file diff --git a/packages/core/scss/theme/legacy-classic-dark/_index.scss b/packages/core/scss/theme/legacy-classic-dark/_index.scss index 9517352f520..e146d72b346 100644 --- a/packages/core/scss/theme/legacy-classic-dark/_index.scss +++ b/packages/core/scss/theme/legacy-classic-dark/_index.scss @@ -15,3 +15,9 @@ @import "./borderWidth"; @import "./border"; @import "./letterSpacing"; + +:root { + .theme-legacy-classic-dark { + --ix-theme-name: legacy-classic-dark; + } +} \ No newline at end of file diff --git a/packages/core/scss/theme/legacy-classic-light/_index.scss b/packages/core/scss/theme/legacy-classic-light/_index.scss index 9517352f520..1f8f80da2bd 100644 --- a/packages/core/scss/theme/legacy-classic-light/_index.scss +++ b/packages/core/scss/theme/legacy-classic-light/_index.scss @@ -15,3 +15,9 @@ @import "./borderWidth"; @import "./border"; @import "./letterSpacing"; + +:root { + .theme-legacy-classic-light { + --ix-theme-name: legacy-classic-light; + } +} \ No newline at end of file diff --git a/packages/core/src/components.d.ts b/packages/core/src/components.d.ts index d5de505ae80..8510fce8310 100644 --- a/packages/core/src/components.d.ts +++ b/packages/core/src/components.d.ts @@ -141,6 +141,14 @@ export namespace Components { * Application name */ "applicationName": string; + /** + * Supported layouts + */ + "breakpoints": Breakpoint[]; + /** + * Change the responsive layout of the menu structure + */ + "forceBreakpoint": Breakpoint | undefined; /** * Hide application header. Will disable responsive feature of basic navigation. */ @@ -3080,6 +3088,14 @@ declare namespace LocalJSX { * Application name */ "applicationName"?: string; + /** + * Supported layouts + */ + "breakpoints"?: Breakpoint[]; + /** + * Change the responsive layout of the menu structure + */ + "forceBreakpoint"?: Breakpoint | undefined; /** * Hide application header. Will disable responsive feature of basic navigation. */ diff --git a/packages/core/src/components/application-header/application-header.scss b/packages/core/src/components/application-header/application-header.scss index eb4a0e9fee7..86e521a7f48 100644 --- a/packages/core/src/components/application-header/application-header.scss +++ b/packages/core/src/components/application-header/application-header.scss @@ -13,6 +13,7 @@ position: relative; width: 100%; height: 2.75rem; + min-height: 2.75rem; padding-left: 1rem; color: var(--theme-app-header--color); diff --git a/packages/core/src/components/application/application.scss b/packages/core/src/components/application/application.scss index b61f0be33e6..cd6f0979d44 100644 --- a/packages/core/src/components/application/application.scss +++ b/packages/core/src/components/application/application.scss @@ -27,30 +27,22 @@ display: contents; } - .content { - display: flex; - height: 100%; - width: 100%; - position: relative; - margin-left: 3.25rem; - overflow: auto; - } - - .navigation-content { + .application { display: flex; position: relative; - flex-direction: row; - - height: calc(100% - 2.75rem); + height: 100%; width: 100%; + overflow: hidden; } -} -:host(.hide-header) { - .navigation-content, .content { + display: block; + position: relative; + margin-left: 3.25rem; height: 100%; + width: 100%; + overflow: hidden; } } diff --git a/packages/core/src/components/application/application.tsx b/packages/core/src/components/application/application.tsx index 1d0f12b53ca..ee0344176ee 100644 --- a/packages/core/src/components/application/application.tsx +++ b/packages/core/src/components/application/application.tsx @@ -53,8 +53,8 @@ export class Application { */ @Prop() breakpoints: Breakpoint[] = ['sm', 'md', 'lg']; @Watch('breakpoints') - onBreakpointsChange(modes: Breakpoint[]) { - applicationLayoutService.setBreakpoints(modes); + onBreakpointsChange(breakpoints: Breakpoint[]) { + applicationLayoutService.setBreakpoints(breakpoints); } @State() breakpoint: Breakpoint = 'lg'; @@ -128,11 +128,11 @@ export class Application { }} > -
); } diff --git a/packages/core/src/components/my-component/my-component.tsx b/packages/core/src/components/my-component/my-component.tsx index 1997e71177a..69e78e3d8b6 100644 --- a/packages/core/src/components/my-component/my-component.tsx +++ b/packages/core/src/components/my-component/my-component.tsx @@ -6,7 +6,7 @@ * This source code is licensed under the MIT license found in the * LICENxSE file in the root directory of this source tree. */ -import { Component, h, Host, State } from '@stencil/core'; +import { Component, h, Host } from '@stencil/core'; @Component({ tag: 'my-component', @@ -14,31 +14,18 @@ import { Component, h, Host, State } from '@stencil/core'; scoped: true, }) export class MyComponent { - @State() theme = 'classic'; - render() { return ( - + Test Test 2 - - - Toggle Theme - Button2 - Button3 - - Some Content - - + + ); } diff --git a/packages/core/src/components/utils/application-layout/service.ts b/packages/core/src/components/utils/application-layout/service.ts index 48110778b26..ea623cdab7d 100644 --- a/packages/core/src/components/utils/application-layout/service.ts +++ b/packages/core/src/components/utils/application-layout/service.ts @@ -44,14 +44,26 @@ class ApplicationLayoutService { return; } const matchBreakpoints: [Breakpoint, boolean][] = []; - this.#supportedBreakpoints.forEach((breakpoint) => { + + const applicationHeader = document.querySelector('ix-application-header'); + const breakpoints = this.#supportedBreakpoints.filter((breakpoint) => { + // Remove breakpoint layout 'sm' if no application-header is provided. + // Otherwise no navigation is possible anymore + + if (applicationHeader) { + return true; + } + return breakpoint !== 'sm'; + }); + + breakpoints.forEach((breakpoint) => { const match = matchBreakpoint(breakpoint); matchBreakpoints.push([breakpoint, match]); }); if (matchBreakpoints.every(([_, match]) => match === false)) { - this.#breakpointChangeListener.emit(this.#supportedBreakpoints[0]); - this.#breakpoint = this.#supportedBreakpoints[0]; + this.#breakpointChangeListener.emit(breakpoints[0]); + this.#breakpoint = breakpoints[0]; return; } diff --git a/packages/core/src/components/utils/theme-switcher.ts b/packages/core/src/components/utils/theme-switcher.ts index 08ba4288009..ea494982d6d 100644 --- a/packages/core/src/components/utils/theme-switcher.ts +++ b/packages/core/src/components/utils/theme-switcher.ts @@ -80,8 +80,13 @@ class ThemeSwitcher { } public getCurrentTheme() { - return Array.from(document.body.classList).find((className) => - this.isThemeClass(className) + return ( + Array.from(document.body.classList).find((className) => + this.isThemeClass(className) + ) ?? + `theme-${window + .getComputedStyle(document.body) + .getPropertyValue('--ix-theme-name')}` ); } From e4c3117709c83e164d19e6337833283ee5cbb5d3 Mon Sep 17 00:00:00 2001 From: Daniel Leroux Date: Tue, 29 Aug 2023 16:05:55 +0200 Subject: [PATCH 14/31] fix: prevent keyboard navigation --- .../test/cw-application-header.spec.tsx | 2 +- .../basic-navigation/basic-navigation.tsx | 10 ++-- .../menu-category/test/menu-category.ct.ts | 42 +++++++++++----- .../src/components/menu-item/menu-item.scss | 2 +- .../src/components/menu-item/menu-item.tsx | 7 ++- packages/core/src/components/menu/menu.tsx | 48 +++++++++++-------- .../core/src/components/menu/test/menu.ct.ts | 8 ++-- .../components/my-component/my-component.tsx | 1 - .../utils/application-layout/service.ts | 11 +---- 9 files changed, 75 insertions(+), 56 deletions(-) diff --git a/packages/core/src/components/application-header/test/cw-application-header.spec.tsx b/packages/core/src/components/application-header/test/cw-application-header.spec.tsx index 187ee914169..f77b634060a 100644 --- a/packages/core/src/components/application-header/test/cw-application-header.spec.tsx +++ b/packages/core/src/components/application-header/test/cw-application-header.spec.tsx @@ -20,6 +20,6 @@ describe('ix-application-header', () => { }); const header = page.doc.querySelector('ix-application-header'); - expect(header.className).toContain('breakpoint-lg'); + expect(header.className).toContain('breakpoint-md'); }); }); diff --git a/packages/core/src/components/basic-navigation/basic-navigation.tsx b/packages/core/src/components/basic-navigation/basic-navigation.tsx index 308d030c501..202a9b9fd01 100644 --- a/packages/core/src/components/basic-navigation/basic-navigation.tsx +++ b/packages/core/src/components/basic-navigation/basic-navigation.tsx @@ -93,12 +93,10 @@ export class BasicNavigation { } ); - if (this.hideHeader === false) { - this.modeDisposable = applicationLayoutService.onChange.on((mode) => { - this.breakpoint = mode; - }); - this.breakpoint = applicationLayoutService.breakpoint; - } + this.modeDisposable = applicationLayoutService.onChange.on((mode) => { + this.breakpoint = mode; + }); + this.breakpoint = applicationLayoutService.breakpoint; if (this.forceBreakpoint) { this.forceLayoutChange(this.forceBreakpoint); diff --git a/packages/core/src/components/menu-category/test/menu-category.ct.ts b/packages/core/src/components/menu-category/test/menu-category.ct.ts index 0c57db80bba..e082821cd78 100644 --- a/packages/core/src/components/menu-category/test/menu-category.ct.ts +++ b/packages/core/src/components/menu-category/test/menu-category.ct.ts @@ -11,12 +11,14 @@ import { test } from '@utils/test'; test('renders', async ({ mount, page }) => { await mount(` + Test Test + `); const element = page.locator('ix-menu-category'); await expect(element).toHaveClass('hydrated'); @@ -34,10 +36,12 @@ test('should collapse by click', async ({ mount, page }) => { `); const categoryItem = page.locator('ix-menu-category'); - const menu = page.locator('ix-menu'); + const app = page.locator('ix-basic-navigation'); const expandMenuButton = page.locator('ix-menu').locator('.burger-menu'); - // await menu.evaluate((menu: HTMLIxMenuElement) => (menu.breakpoints = ['md'])); + await app.evaluate( + (menu: HTMLIxBasicNavigationElement) => (menu.breakpoints = ['md']) + ); await categoryItem.click(); @@ -72,7 +76,11 @@ test('should expand items', async ({ mount, page }) => { `); const menu = page.locator('ix-menu'); - // await menu.evaluate((menu: HTMLIxMenuElement) => (menu.breakpoints = ['md'])); + await page + .locator('ix-basic-navigation') + .evaluate( + (menu: HTMLIxBasicNavigationElement) => (menu.breakpoints = ['md']) + ); const menuButton = menu.locator('ix-burger-menu'); await menuButton.click(); @@ -99,8 +107,11 @@ test('should show items as dropdown', async ({ mount, page }) => { `); await page.waitForSelector('ix-menu'); - const menu = page.locator('ix-menu'); - // await menu.evaluate((menu: HTMLIxMenuElement) => (menu.breakpoints = ['md'])); + await page + .locator('ix-basic-navigation') + .evaluate( + (menu: HTMLIxBasicNavigationElement) => (menu.breakpoints = ['md']) + ); const menuCategory = page.locator('ix-menu-category'); await menuCategory.click(); @@ -124,17 +135,24 @@ test('should collapse category after collapse menu', async ({ page, }) => { await mount(` - - - Test Item 1 - Test Item 2 - - + + + + Test Item 1 + Test Item 2 + + + `); await page.waitForSelector('ix-menu'); const menu = page.locator('ix-menu'); - // await menu.evaluate((menu: HTMLIxMenuElement) => (menu.breakpoints = ['md'])); + await page + .locator('ix-basic-navigation') + .evaluate( + (menu: HTMLIxBasicNavigationElement) => (menu.breakpoints = ['md']) + ); + const menuButton = menu.locator('ix-burger-menu'); await menuButton.click(); diff --git a/packages/core/src/components/menu-item/menu-item.scss b/packages/core/src/components/menu-item/menu-item.scss index 230b7c86ca7..2fef0b48658 100644 --- a/packages/core/src/components/menu-item/menu-item.scss +++ b/packages/core/src/components/menu-item/menu-item.scss @@ -110,7 +110,7 @@ $menuItemPadding: 0.875rem; pointer-events: none; cursor: default; - .tab > .glyph { + .tab > .tab-icon { color: var(--theme-color-weak-text); } diff --git a/packages/core/src/components/menu-item/menu-item.tsx b/packages/core/src/components/menu-item/menu-item.tsx index 2fd2ea956e6..2bcc10d94a3 100644 --- a/packages/core/src/components/menu-item/menu-item.tsx +++ b/packages/core/src/components/menu-item/menu-item.tsx @@ -109,7 +109,12 @@ export class MenuItem { }} {...extendedAttributes} > -