@progressive-development/pd-page 0.1.24 → 0.1.26

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/PdMenu.js +27 -20
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Progressive development page helper, teaser, menu, footer.",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "author": "PD Progressive Development",
6
- "version": "0.1.24",
6
+ "version": "0.1.26",
7
7
  "main": "index.js",
8
8
  "module": "index.js",
9
9
  "scripts": {
package/src/PdMenu.js CHANGED
@@ -117,15 +117,18 @@ export class PdMenu extends LitElement {
117
117
  --pd-icon-stroke-col: var(--pd-default-bg-col);
118
118
  --pd-icon-col: var(--pd-default-dark-col);
119
119
  pointer-events: none;
120
- }
120
+ }
121
121
 
122
122
  /* An anderer Stelle teils das Image von außen gestylt, das macht es wahrschweinlich
123
- einfacher als hier einzeln zu stylen. noch zu prüfen */
123
+ einfacher als hier einzeln zu stylen. noch zu prüfen
124
+ */
124
125
  ::slotted(.logo) {
125
126
  max-width: var(--pd-menu-logo-maxwidth, 8rem);
126
127
  width: 100%;
127
- padding: var(--pd-menu-logo-padding, 2em);
128
+ padding: var(--pd-menu-logo-padding, 2em);
129
+ fill: var(--pd-menu-logo-color, #067394);
128
130
  }
131
+
129
132
 
130
133
  /**
131
134
  * Style for drop down menu on small screens.
@@ -204,7 +207,7 @@ export class PdMenu extends LitElement {
204
207
  }
205
208
 
206
209
  firstUpdated() {
207
- const doSomething = scrollPos => {
210
+ const doSomething = (scrollPos) => {
208
211
  let activeSecIndex = -1;
209
212
  let distance = scrollPos > 300 ? 5000 : 300; // start value, define when first item is active
210
213
  this.menuItems.forEach((item, index) => {
@@ -221,7 +224,7 @@ export class PdMenu extends LitElement {
221
224
  };
222
225
 
223
226
  let ticking = false;
224
- document.addEventListener('scroll', () => {
227
+ this.addEventListener('scroll', () => {
225
228
  const lastKnownScrollPosition = window.scrollY;
226
229
  if (!ticking) {
227
230
  window.requestAnimationFrame(() => {
@@ -231,9 +234,6 @@ export class PdMenu extends LitElement {
231
234
  ticking = true;
232
235
  }
233
236
  });
234
- }
235
-
236
- render() {
237
237
 
238
238
  installMediaQueryWatcher(`(max-width: 700px)`, matches => {
239
239
  if (matches) {
@@ -242,10 +242,13 @@ export class PdMenu extends LitElement {
242
242
  this._smallScreen = false;
243
243
  }
244
244
  });
245
+ }
245
246
 
246
- return html`
247
- <div class="menu-container">
248
- <slot class="logo-icon" name="slotLogo"></slot>
247
+ render() {
248
+
249
+ return html`
250
+ <div class="menu-container">
251
+ <slot @click="${PdMenu._scrollToTop}" name="slotLogo"></slot>
249
252
  <ul>
250
253
  ${this._renderItems(this._smallScreen ? [...this.menuItems, ...this.topMenuItems] : this.menuItems, true, this._smallScreen)}
251
254
  </ul>
@@ -272,8 +275,7 @@ export class PdMenu extends LitElement {
272
275
  class="item ${checkActiveClass && this._activeSecIndex === index + 1
273
276
  ? 'active'
274
277
  : ''}"
275
- data-sec="${item.sec}"
276
- data-route="${item.route}"
278
+ data-key="${item.key}"
277
279
  @click="${this._menuItemClicked}"
278
280
  >
279
281
  ${item.icon && !disableIcons
@@ -294,20 +296,25 @@ export class PdMenu extends LitElement {
294
296
  }
295
297
 
296
298
  _menuItemClicked(e) {
297
-
298
- const secParam = e.target.dataset.sec;
299
- const routeParam = e.target.dataset.route;
300
- if (secParam !== 'undefined' && secParam !== '') {
299
+
300
+ // get menu item
301
+ const keyParam = e.target.dataset.key;
302
+ const menuItem = this.menuItems.filter(mi => mi.key === keyParam)[0];
303
+
304
+ if (menuItem.sec && menuItem.sec !== '') {
301
305
  // TODO: Check if element exists
302
- this._scrollToContent(secParam);
303
- } else if (routeParam !== 'undefined' && routeParam !== '') {
306
+ this._scrollToContent(menuItem.sec);
307
+ } else if (menuItem.route && menuItem.route !== '') {
304
308
  this.dispatchEvent(
305
309
  new CustomEvent('route-event', {
306
310
  detail: {
307
- route: routeParam === 'back' ? '' : routeParam,
311
+ route: menuItem.route === 'back' ? '' : menuItem.route,
308
312
  },
309
313
  })
310
314
  );
315
+ } else if (menuItem.action) {
316
+ // call action
317
+ menuItem.action();
311
318
  }
312
319
 
313
320
  // close menu if open