diff --git a/projects/demo/src/app/components-example/overlay-panel/overlay-panel-appearances-example/overlay-panel-appearances-example.component.html b/projects/demo/src/app/components-example/overlay-panel/overlay-panel-appearances-example/overlay-panel-appearances-example.component.html new file mode 100644 index 00000000..02055bf9 --- /dev/null +++ b/projects/demo/src/app/components-example/overlay-panel/overlay-panel-appearances-example/overlay-panel-appearances-example.component.html @@ -0,0 +1,58 @@ +
+
+ {{ "EXAMPLES.OVERLAY_PANEL.APPEARANCES.CONTENT.FILLED" | translate }} + + +

{{ "EXAMPLES.OVERLAY_PANEL.COMMON.SAMPLE_CONTENT" | translate }}

+
+
+ +
+ {{ "EXAMPLES.OVERLAY_PANEL.APPEARANCES.CONTENT.ELEVATED" | translate }} + + +

{{ "EXAMPLES.OVERLAY_PANEL.COMMON.SAMPLE_CONTENT" | translate }}

+
+
+ +
+ {{ "EXAMPLES.OVERLAY_PANEL.APPEARANCES.CONTENT.OUTLINED" | translate }} + + +

{{ "EXAMPLES.OVERLAY_PANEL.COMMON.SAMPLE_CONTENT" | translate }}

+
+
+
diff --git a/projects/demo/src/app/components-example/overlay-panel/overlay-panel-appearances-example/overlay-panel-appearances-example.component.ts b/projects/demo/src/app/components-example/overlay-panel/overlay-panel-appearances-example/overlay-panel-appearances-example.component.ts new file mode 100644 index 00000000..7b4459a5 --- /dev/null +++ b/projects/demo/src/app/components-example/overlay-panel/overlay-panel-appearances-example/overlay-panel-appearances-example.component.ts @@ -0,0 +1,17 @@ +import { OverlayModule } from '@angular/cdk/overlay'; +import { Component } from '@angular/core'; +import { IdsButtonComponent } from '@i-cell/ids-angular/button'; +import { IdsOverlayPanelComponent } from '@i-cell/ids-angular/overlay-panel'; +import { TranslateModule } from '@ngx-translate/core'; + +@Component({ + selector: 'app-overlay-panel-appearances-example', + imports: [ + OverlayModule, + IdsButtonComponent, + IdsOverlayPanelComponent, + TranslateModule, + ], + templateUrl: './overlay-panel-appearances-example.component.html', +}) +export class OverlayPanelAppearancesExampleComponent {} diff --git a/projects/demo/src/app/components-example/overlay-panel/overlay-panel-basic-example/overlay-panel-basic-example.component.html b/projects/demo/src/app/components-example/overlay-panel/overlay-panel-basic-example/overlay-panel-basic-example.component.html new file mode 100644 index 00000000..b17904e9 --- /dev/null +++ b/projects/demo/src/app/components-example/overlay-panel/overlay-panel-basic-example/overlay-panel-basic-example.component.html @@ -0,0 +1,16 @@ + + + +

{{ "EXAMPLES.OVERLAY_PANEL.BASIC.CONTENT.BODY" | translate }}

+
diff --git a/projects/demo/src/app/components-example/overlay-panel/overlay-panel-basic-example/overlay-panel-basic-example.component.ts b/projects/demo/src/app/components-example/overlay-panel/overlay-panel-basic-example/overlay-panel-basic-example.component.ts new file mode 100644 index 00000000..194925d2 --- /dev/null +++ b/projects/demo/src/app/components-example/overlay-panel/overlay-panel-basic-example/overlay-panel-basic-example.component.ts @@ -0,0 +1,17 @@ +import { OverlayModule } from '@angular/cdk/overlay'; +import { Component } from '@angular/core'; +import { IdsButtonComponent } from '@i-cell/ids-angular/button'; +import { IdsOverlayPanelComponent } from '@i-cell/ids-angular/overlay-panel'; +import { TranslateModule } from '@ngx-translate/core'; + +@Component({ + selector: 'app-overlay-panel-basic-example', + imports: [ + OverlayModule, + IdsButtonComponent, + IdsOverlayPanelComponent, + TranslateModule, + ], + templateUrl: './overlay-panel-basic-example.component.html', +}) +export class OverlayPanelBasicExampleComponent {} diff --git a/projects/demo/src/app/components-example/overlay-panel/overlay-panel-examples.ts b/projects/demo/src/app/components-example/overlay-panel/overlay-panel-examples.ts new file mode 100644 index 00000000..6d6768ae --- /dev/null +++ b/projects/demo/src/app/components-example/overlay-panel/overlay-panel-examples.ts @@ -0,0 +1,70 @@ +import { OverlayPanelAppearancesExampleComponent } from './overlay-panel-appearances-example/overlay-panel-appearances-example.component'; +import { OverlayPanelBasicExampleComponent } from './overlay-panel-basic-example/overlay-panel-basic-example.component'; +import { OverlayPanelMenuExampleComponent } from './overlay-panel-menu-example/overlay-panel-menu-example.component'; +import { OverlayPanelSizesExampleComponent } from './overlay-panel-sizes-example/overlay-panel-sizes-example.component'; +import { OverlayPanelVariantsExampleComponent } from './overlay-panel-variants-example/overlay-panel-variants-example.component'; + +import { IdsExampleDef } from '../../shared/ids-example-viewer/ids-example.model'; + +export const OVERLAY_PANEL_EXAMPLES: IdsExampleDef[] = [ + { + id: 'overlay-panel-basic', + title: 'EXAMPLES.OVERLAY_PANEL.BASIC.TITLE', + description: 'EXAMPLES.OVERLAY_PANEL.BASIC.DESCRIPTION', + component: OverlayPanelBasicExampleComponent, + files: [ + { + HTMLpath: 'assets/examples/overlay-panel/overlay-panel-basic-example/overlay-panel-basic-example.component.html', + TSpath: 'assets/examples/overlay-panel/overlay-panel-basic-example/overlay-panel-basic-example.component.ts', + }, + ], + }, + { + id: 'overlay-panel-appearances', + title: 'EXAMPLES.OVERLAY_PANEL.APPEARANCES.TITLE', + description: 'EXAMPLES.OVERLAY_PANEL.APPEARANCES.DESCRIPTION', + component: OverlayPanelAppearancesExampleComponent, + files: [ + { + HTMLpath: 'assets/examples/overlay-panel/overlay-panel-appearances-example/overlay-panel-appearances-example.component.html', + TSpath: 'assets/examples/overlay-panel/overlay-panel-appearances-example/overlay-panel-appearances-example.component.ts', + }, + ], + }, + { + id: 'overlay-panel-variants', + title: 'EXAMPLES.OVERLAY_PANEL.VARIANTS.TITLE', + description: 'EXAMPLES.OVERLAY_PANEL.VARIANTS.DESCRIPTION', + component: OverlayPanelVariantsExampleComponent, + files: [ + { + HTMLpath: 'assets/examples/overlay-panel/overlay-panel-variants-example/overlay-panel-variants-example.component.html', + TSpath: 'assets/examples/overlay-panel/overlay-panel-variants-example/overlay-panel-variants-example.component.ts', + }, + ], + }, + { + id: 'overlay-panel-sizes', + title: 'EXAMPLES.OVERLAY_PANEL.SIZES.TITLE', + description: 'EXAMPLES.OVERLAY_PANEL.SIZES.DESCRIPTION', + component: OverlayPanelSizesExampleComponent, + files: [ + { + HTMLpath: 'assets/examples/overlay-panel/overlay-panel-sizes-example/overlay-panel-sizes-example.component.html', + TSpath: 'assets/examples/overlay-panel/overlay-panel-sizes-example/overlay-panel-sizes-example.component.ts', + }, + ], + }, + { + id: 'overlay-panel-menu', + title: 'EXAMPLES.OVERLAY_PANEL.MENU.TITLE', + description: 'EXAMPLES.OVERLAY_PANEL.MENU.DESCRIPTION', + component: OverlayPanelMenuExampleComponent, + files: [ + { + HTMLpath: 'assets/examples/overlay-panel/overlay-panel-menu-example/overlay-panel-menu-example.component.html', + TSpath: 'assets/examples/overlay-panel/overlay-panel-menu-example/overlay-panel-menu-example.component.ts', + }, + ], + }, +]; diff --git a/projects/demo/src/app/components-example/overlay-panel/overlay-panel-menu-example/overlay-panel-menu-example.component.html b/projects/demo/src/app/components-example/overlay-panel/overlay-panel-menu-example/overlay-panel-menu-example.component.html new file mode 100644 index 00000000..11d89a47 --- /dev/null +++ b/projects/demo/src/app/components-example/overlay-panel/overlay-panel-menu-example/overlay-panel-menu-example.component.html @@ -0,0 +1,34 @@ + + + +
+ + + + +
+
diff --git a/projects/demo/src/app/components-example/overlay-panel/overlay-panel-menu-example/overlay-panel-menu-example.component.ts b/projects/demo/src/app/components-example/overlay-panel/overlay-panel-menu-example/overlay-panel-menu-example.component.ts new file mode 100644 index 00000000..a742dbb8 --- /dev/null +++ b/projects/demo/src/app/components-example/overlay-panel/overlay-panel-menu-example/overlay-panel-menu-example.component.ts @@ -0,0 +1,27 @@ +import { CdkMenu } from '@angular/cdk/menu'; +import { OverlayModule } from '@angular/cdk/overlay'; +import { Component } from '@angular/core'; +import { IdsButtonComponent } from '@i-cell/ids-angular/button'; +import { IdsIconComponent } from '@i-cell/ids-angular/icon'; +import { IdsMenuItemComponent } from '@i-cell/ids-angular/menu'; +import { IdsOverlayPanelComponent } from '@i-cell/ids-angular/overlay-panel'; +import { TranslateModule } from '@ngx-translate/core'; + +@Component({ + selector: 'app-overlay-panel-menu-example', + imports: [ + CdkMenu, + OverlayModule, + IdsButtonComponent, + IdsIconComponent, + IdsMenuItemComponent, + IdsOverlayPanelComponent, + TranslateModule, + ], + templateUrl: './overlay-panel-menu-example.component.html', +}) +export class OverlayPanelMenuExampleComponent { + protected _closePanel(panel: IdsOverlayPanelComponent): void { + panel.open.set(false); + } +} diff --git a/projects/demo/src/app/components-example/overlay-panel/overlay-panel-sizes-example/overlay-panel-sizes-example.component.html b/projects/demo/src/app/components-example/overlay-panel/overlay-panel-sizes-example/overlay-panel-sizes-example.component.html new file mode 100644 index 00000000..f1518c75 --- /dev/null +++ b/projects/demo/src/app/components-example/overlay-panel/overlay-panel-sizes-example/overlay-panel-sizes-example.component.html @@ -0,0 +1,41 @@ +
+
+ dense + + +

{{ "EXAMPLES.OVERLAY_PANEL.COMMON.SAMPLE_CONTENT" | translate }}

+
+
+ +
+ compact + + +

{{ "EXAMPLES.OVERLAY_PANEL.COMMON.SAMPLE_CONTENT" | translate }}

+
+
+ +
+ comfortable + + +

{{ "EXAMPLES.OVERLAY_PANEL.COMMON.SAMPLE_CONTENT" | translate }}

+
+
+ +
+ spacious + + +

{{ "EXAMPLES.OVERLAY_PANEL.COMMON.SAMPLE_CONTENT" | translate }}

+
+
+
diff --git a/projects/demo/src/app/components-example/overlay-panel/overlay-panel-sizes-example/overlay-panel-sizes-example.component.ts b/projects/demo/src/app/components-example/overlay-panel/overlay-panel-sizes-example/overlay-panel-sizes-example.component.ts new file mode 100644 index 00000000..5075d2f1 --- /dev/null +++ b/projects/demo/src/app/components-example/overlay-panel/overlay-panel-sizes-example/overlay-panel-sizes-example.component.ts @@ -0,0 +1,17 @@ +import { OverlayModule } from '@angular/cdk/overlay'; +import { Component } from '@angular/core'; +import { IdsButtonComponent } from '@i-cell/ids-angular/button'; +import { IdsOverlayPanelComponent } from '@i-cell/ids-angular/overlay-panel'; +import { TranslateModule } from '@ngx-translate/core'; + +@Component({ + selector: 'app-overlay-panel-sizes-example', + imports: [ + OverlayModule, + IdsButtonComponent, + IdsOverlayPanelComponent, + TranslateModule, + ], + templateUrl: './overlay-panel-sizes-example.component.html', +}) +export class OverlayPanelSizesExampleComponent {} diff --git a/projects/demo/src/app/components-example/overlay-panel/overlay-panel-variants-example/overlay-panel-variants-example.component.html b/projects/demo/src/app/components-example/overlay-panel/overlay-panel-variants-example/overlay-panel-variants-example.component.html new file mode 100644 index 00000000..fe092ef7 --- /dev/null +++ b/projects/demo/src/app/components-example/overlay-panel/overlay-panel-variants-example/overlay-panel-variants-example.component.html @@ -0,0 +1,39 @@ +
+
+ {{ "EXAMPLES.OVERLAY_PANEL.VARIANTS.CONTENT.SURFACE" | translate }} + + +

{{ "EXAMPLES.OVERLAY_PANEL.COMMON.SAMPLE_CONTENT" | translate }}

+
+
+ +
+ {{ "EXAMPLES.OVERLAY_PANEL.VARIANTS.CONTENT.LIGHT" | translate }} + + +

{{ "EXAMPLES.OVERLAY_PANEL.COMMON.SAMPLE_CONTENT" | translate }}

+
+
+
diff --git a/projects/demo/src/app/components-example/overlay-panel/overlay-panel-variants-example/overlay-panel-variants-example.component.ts b/projects/demo/src/app/components-example/overlay-panel/overlay-panel-variants-example/overlay-panel-variants-example.component.ts new file mode 100644 index 00000000..729323fd --- /dev/null +++ b/projects/demo/src/app/components-example/overlay-panel/overlay-panel-variants-example/overlay-panel-variants-example.component.ts @@ -0,0 +1,17 @@ +import { OverlayModule } from '@angular/cdk/overlay'; +import { Component } from '@angular/core'; +import { IdsButtonComponent } from '@i-cell/ids-angular/button'; +import { IdsOverlayPanelComponent } from '@i-cell/ids-angular/overlay-panel'; +import { TranslateModule } from '@ngx-translate/core'; + +@Component({ + selector: 'app-overlay-panel-variants-example', + imports: [ + OverlayModule, + IdsButtonComponent, + IdsOverlayPanelComponent, + TranslateModule, + ], + templateUrl: './overlay-panel-variants-example.component.html', +}) +export class OverlayPanelVariantsExampleComponent {} diff --git a/projects/demo/src/app/pages/overlay-panel/overlay-panel-demo.component.html b/projects/demo/src/app/pages/overlay-panel/overlay-panel-demo.component.html index 1b36ca12..bbaf0b40 100644 --- a/projects/demo/src/app/pages/overlay-panel/overlay-panel-demo.component.html +++ b/projects/demo/src/app/pages/overlay-panel/overlay-panel-demo.component.html @@ -115,3 +115,9 @@ + +
+ @for (example of overlayPanelExamples; track example.id) { + + } +
diff --git a/projects/demo/src/app/pages/overlay-panel/overlay-panel-demo.component.ts b/projects/demo/src/app/pages/overlay-panel/overlay-panel-demo.component.ts index 5b887747..93e07d03 100644 --- a/projects/demo/src/app/pages/overlay-panel/overlay-panel-demo.component.ts +++ b/projects/demo/src/app/pages/overlay-panel/overlay-panel-demo.component.ts @@ -4,6 +4,8 @@ import { ControlTableComponent } from '../../components/control-table/control-ta import { DemoAndCodeComponent } from '../../components/tabs/demo-and-code/demo-and-code.component'; import { TryoutControlComponent } from '../../components/tryout/tryout-controls.component'; import { TryoutComponent } from '../../components/tryout/tryout.component'; +import { OVERLAY_PANEL_EXAMPLES } from '../../components-example/overlay-panel/overlay-panel-examples'; +import { IdsExampleViewerComponent } from '../../shared/ids-example-viewer/ids-example-viewer.component'; import { CdkMenu } from '@angular/cdk/menu'; import { OverlayModule } from '@angular/cdk/overlay'; @@ -40,12 +42,15 @@ import { TranslateModule } from '@ngx-translate/core'; IdsMenuItemComponent, IdsActiveIndicatorDirective, CdkMenu, + IdsExampleViewerComponent, ], templateUrl: './overlay-panel-demo.component.html', styleUrls: ['../demo-page.scss'], }) export class OverlayPanelDemoComponent { + public readonly overlayPanelExamples = OVERLAY_PANEL_EXAMPLES; + protected _overlayPanelDemoService = inject(OverlayPanelDemoService); // eslint-disable-next-line no-magic-numbers diff --git a/projects/demo/src/assets/i18n/en.json b/projects/demo/src/assets/i18n/en.json index 87fa678c..ccd2f84a 100644 --- a/projects/demo/src/assets/i18n/en.json +++ b/projects/demo/src/assets/i18n/en.json @@ -1778,6 +1778,52 @@ } } }, + "OVERLAY_PANEL": { + "COMMON": { + "OPEN": "Open overlay", + "CLOSE": "Close overlay", + "SAMPLE_CONTENT": "Overlay panel content" + }, + "BASIC": { + "TITLE": "Basic overlay panel", + "DESCRIPTION": "Anchor ids-overlay-panel to a cdkOverlayOrigin trigger with the origin input. Toggle open state with toggle() or bind open.", + "CONTENT": { + "BODY": "This overlay panel is connected to the button above." + } + }, + "APPEARANCES": { + "TITLE": "Overlay panel appearances", + "DESCRIPTION": "Overlay panels with different appearances: filled (default), outlined, and elevated.", + "CONTENT": { + "FILLED": "Filled", + "OUTLINED": "Outlined", + "ELEVATED": "Elevated" + } + }, + "VARIANTS": { + "TITLE": "Overlay panel variants", + "DESCRIPTION": "Overlay panels with surface and light variants. Use a dark background for the light variant.", + "CONTENT": { + "SURFACE": "Surface", + "LIGHT": "Light" + } + }, + "SIZES": { + "TITLE": "Overlay panel sizes", + "DESCRIPTION": "Overlay panels with different sizes: dense, compact (default), comfortable, and spacious." + }, + "MENU": { + "TITLE": "Overlay panel with menu", + "DESCRIPTION": "Project a cdkMenu with idsMenuItem buttons inside the overlay panel for dropdown-style menus. Call closePanel (or set open to false) on a menu item click to dismiss the overlay after an action.", + "CONTENT": { + "OPEN_MENU": "Open menu", + "ITEM_1": "Edit", + "ITEM_2": "Duplicate", + "ITEM_3": "Delete", + "ITEM_CLOSE": "Done (closes overlay)" + } + } + }, "MESSAGE": { "COMMON": { "HINT": "Use at least 8 characters with letters and numbers.", diff --git a/projects/demo/src/assets/i18n/hu.json b/projects/demo/src/assets/i18n/hu.json index e72bbbbf..46a5e9da 100644 --- a/projects/demo/src/assets/i18n/hu.json +++ b/projects/demo/src/assets/i18n/hu.json @@ -1774,6 +1774,52 @@ } } }, + "OVERLAY_PANEL": { + "COMMON": { + "OPEN": "Panel megnyitása", + "CLOSE": "Panel bezárása", + "SAMPLE_CONTENT": "Overlay panel tartalom" + }, + "BASIC": { + "TITLE": "Alap overlay panel", + "DESCRIPTION": "Az ids-overlay-panel a cdkOverlayOrigin triggerhez köthető az origin inputtal. Nyitás/zárás toggle()-lal vagy open kötéssel.", + "CONTENT": { + "BODY": "Ez az overlay panel a fenti gombhoz van kötve." + } + }, + "APPEARANCES": { + "TITLE": "Overlay panel megjelenések", + "DESCRIPTION": "Overlay panelek különböző megjelenéssel: filled (alapértelmezett), outlined és elevated.", + "CONTENT": { + "FILLED": "Filled", + "OUTLINED": "Outlined", + "ELEVATED": "Elevated" + } + }, + "VARIANTS": { + "TITLE": "Overlay panel változatok", + "DESCRIPTION": "Overlay panelek surface és light változatban. A light változathoz sötét háttér ajánlott.", + "CONTENT": { + "SURFACE": "Surface", + "LIGHT": "Light" + } + }, + "SIZES": { + "TITLE": "Overlay panel méretek", + "DESCRIPTION": "Overlay panelek különböző méretekkel: dense, compact (alapértelmezett), comfortable és spacious." + }, + "MENU": { + "TITLE": "Overlay panel menüvel", + "DESCRIPTION": "A panelbe cdkMenu és idsMenuItem gombok helyezhetők legördülő menühöz. Menüpont kattintásakor a panel bezárásához állítsd az open jelet false-ra (lásd a Done tételt).", + "CONTENT": { + "OPEN_MENU": "Menü megnyitása", + "ITEM_1": "Szerkesztés", + "ITEM_2": "Másolás", + "ITEM_3": "Törlés", + "ITEM_CLOSE": "Kész (bezárja a panelt)" + } + } + }, "MESSAGE": { "COMMON": { "HINT": "Használj legalább 8 karaktert betűkkel és számokkal.",