@progressive-development/pd-spa-helper 0.1.101 → 0.1.103

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -210,6 +210,13 @@ export abstract class PdSpaHelper extends router(navigator(LitElement)) {
210
210
  transition: background-color 1s;
211
211
  }
212
212
 
213
+ .default-top-menu, .default-top-menu-withteaser {
214
+ --pd-menu-height: 20px;
215
+ --pd-menu-font-size: 1em;
216
+ --pd-menu-font-weight: normal;
217
+ --pd-menu-shadow: 0;
218
+ }
219
+
213
220
  /* needed for pd-spa-padding-top, only for pages with teaser, check if refactor possible... */
214
221
  .default-main-padding {
215
222
  padding-top: calc(var(--pd-menu-height) + var(--pd-spa-padding-top, 120px));
@@ -308,6 +315,7 @@ export abstract class PdSpaHelper extends router(navigator(LitElement)) {
308
315
  const hideTeaser = this._teaserClosed || !pageConf?.withTeaser;
309
316
  return html`
310
317
  <header id="headerElementId" class="default-header">
318
+ ${pageConf?.hideTopMenu ? '' : this._renderTopMenu(pageConf, hideTeaser)}
311
319
  ${hideTeaser ? '' : this._renderTeaser()}
312
320
  ${pageConf?.hideMenu ? '' : this._renderMenu(pageConf, hideTeaser)}
313
321
  </header>
@@ -350,23 +358,35 @@ export abstract class PdSpaHelper extends router(navigator(LitElement)) {
350
358
 
351
359
  _renderMenu(pageConfig:NavigationPage, hideTeaser:boolean) {
352
360
  const menuForPage = pageConfig ? (pageConfig.menu || []) : [];
353
- const topMenuForPage = pageConfig ? (pageConfig.topMenu || []) : [];
354
361
  return menuForPage ? html`
355
- <pd-menu
362
+ <pd-menu
356
363
  id="pdHelperMenuId"
364
+ class="${hideTeaser ? "default-menu" : "default-menu-withteaser"}"
365
+ .menuItems=${menuForPage}
366
+ activeRoute="${this.route}"
367
+ headerSize="${this._getHeaderSize(hideTeaser)}"
368
+ >
369
+ ${hideTeaser ? this._getAppLogo() : ''}
370
+ </pd-menu>
371
+ ` : '';
372
+ }
373
+
374
+ _renderTopMenu(pageConfig:NavigationPage, hideTeaser:boolean) {
375
+ const topMenuForPage = pageConfig ? pageConfig.topMenuItems : undefined;
376
+ return topMenuForPage ? html`
377
+ <pd-menu
378
+ id="pdHelperTopMenuId"
357
379
  @locale-change="${this._localeChange}"
358
- class="${hideTeaser ? "default-menu" : "default-menu-withteaser"}"
380
+ class="${hideTeaser ? "default-top-menu" : "default-top-menu-withteaser"}"
359
381
  .locales=${this._availableLocales}
360
382
  selectedLocale="${this._selectedLocale}"
361
- .menuItems=${menuForPage}
362
383
  .topMenuItems=${topMenuForPage}
363
384
  activeRoute="${this.route}"
364
- headerSize="${this._getHeaderSize(hideTeaser)}"
385
+ headerSize="${20}"
365
386
  >
366
- ${hideTeaser ? this._getAppLogo() : ''}
367
387
  </pd-menu>
368
388
  ` : '';
369
- }
389
+ }
370
390
 
371
391
  // eslint-disable-next-line class-methods-use-this
372
392
  _renderTeaser(): TemplateResult | string {
@@ -68,6 +68,8 @@ export interface NavigationPage {
68
68
  withTeaser?: boolean,
69
69
  withFooter?: boolean
70
70
  hideMenu?: boolean
71
+ hideTopMenu?: boolean
72
+ topMenuItems?: Array<MenuElement>,
71
73
  }
72
74
 
73
75
  export interface NavigationConfig {
@@ -1,3 +0,0 @@
1
- module.exports = {
2
- stories: ['../dist/stories/**/*.stories.{js,md,mdx}'],
3
- };
@@ -1,8 +0,0 @@
1
- import { storybookPlugin } from '@web/dev-server-storybook';
2
- import baseConfig from '../web-dev-server.config.mjs';
3
-
4
- export default /** @type {import('@web/dev-server').DevServerConfig} */ ({
5
- ...baseConfig,
6
- open: '/',
7
- plugins: [storybookPlugin({ type: 'web-components' }), ...baseConfig.plugins],
8
- });
@@ -1,60 +0,0 @@
1
- import { html, TemplateResult } from 'lit';
2
- import '../src/pd-spa-helper.js';
3
-
4
- export default {
5
- title: 'PdSpaHelper',
6
- component: 'pd-spa-helper',
7
- argTypes: {
8
- title: { control: 'text' },
9
- counter: { control: 'number' },
10
- textColor: { control: 'color' },
11
- },
12
- };
13
-
14
- interface Story<T> {
15
- (args: T): TemplateResult;
16
- args?: Partial<T>;
17
- argTypes?: Record<string, unknown>;
18
- }
19
-
20
- interface ArgTypes {
21
- title?: string;
22
- counter?: number;
23
- textColor?: string;
24
- slot?: TemplateResult;
25
- }
26
-
27
- const Template: Story<ArgTypes> = ({
28
- title = 'Hello world',
29
- counter = 5,
30
- textColor,
31
- slot,
32
- }: ArgTypes) => html`
33
- <pd-spa-helper
34
- style="--pd-spa-helper-text-color: ${textColor || 'black'}"
35
- .title=${title}
36
- .counter=${counter}
37
- >
38
- ${slot}
39
- </pd-spa-helper>
40
- `;
41
-
42
- export const Regular = Template.bind({});
43
-
44
- export const CustomTitle = Template.bind({});
45
- CustomTitle.args = {
46
- title: 'My title',
47
- };
48
-
49
- export const CustomCounter = Template.bind({});
50
- CustomCounter.args = {
51
- counter: 123456,
52
- };
53
-
54
- export const SlottedContent = Template.bind({});
55
- SlottedContent.args = {
56
- slot: html`<p>Slotted content</p>`,
57
- };
58
- SlottedContent.argTypes = {
59
- slot: { table: { disable: true } },
60
- };