@vaadin/side-nav 24.1.0-alpha9 → 24.1.0-beta1

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.
package/LICENSE CHANGED
@@ -175,7 +175,7 @@
175
175
 
176
176
  END OF TERMS AND CONDITIONS
177
177
 
178
- Copyright 2017 Vaadin Ltd.
178
+ Copyright 2023 Vaadin Ltd.
179
179
 
180
180
  Licensed under the Apache License, Version 2.0 (the "License");
181
181
  you may not use this file except in compliance with the License.
package/README.md CHANGED
@@ -48,7 +48,7 @@ import '@vaadin/side-nav';
48
48
 
49
49
  ## Themes
50
50
 
51
- Vaadin components come with two built-in [themes](https://vaadin.com/docs/latest/styling), Lumo and Material.
51
+ Vaadin components come with two built-in [themes](https://vaadin.com/docs/latest/styling), Lumo and Material.
52
52
  This component currently does not support Material theme.
53
53
  The [main entrypoint](https://github.com/vaadin/web-components/blob/main/packages/side-nav/vaadin-side-nav.js) of the package uses the Lumo theme.
54
54
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vaadin/side-nav",
3
- "version": "24.1.0-alpha9",
3
+ "version": "24.1.0-beta1",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -20,13 +20,13 @@
20
20
  "module": "vaadin-side-nav.js",
21
21
  "type": "module",
22
22
  "files": [
23
+ "enable.js",
23
24
  "src",
24
25
  "theme",
25
26
  "vaadin-*.d.ts",
26
27
  "vaadin-*.js",
27
28
  "web-types.json",
28
- "web-types.lit.json",
29
- "enable.js"
29
+ "web-types.lit.json"
30
30
  ],
31
31
  "keywords": [
32
32
  "Vaadin",
@@ -35,10 +35,10 @@
35
35
  "web-component"
36
36
  ],
37
37
  "dependencies": {
38
- "@vaadin/component-base": "24.1.0-alpha9",
39
- "@vaadin/vaadin-lumo-styles": "24.1.0-alpha9",
40
- "@vaadin/vaadin-material-styles": "24.1.0-alpha9",
41
- "@vaadin/vaadin-themable-mixin": "24.1.0-alpha9",
38
+ "@vaadin/component-base": "24.1.0-beta1",
39
+ "@vaadin/vaadin-lumo-styles": "24.1.0-beta1",
40
+ "@vaadin/vaadin-material-styles": "24.1.0-beta1",
41
+ "@vaadin/vaadin-themable-mixin": "24.1.0-beta1",
42
42
  "lit": "^2.0.0"
43
43
  },
44
44
  "devDependencies": {
@@ -51,5 +51,5 @@
51
51
  "web-types.json",
52
52
  "web-types.lit.json"
53
53
  ],
54
- "gitHead": "db4fe44603a6702b85b0da2a6d033ddf8ffea5c4"
54
+ "gitHead": "f0ddb6576073a6af05ab29867bc5ec82e334f9d7"
55
55
  }
@@ -44,7 +44,7 @@ export type SideNavItemEventMap = HTMLElementEventMap & SideNavItemCustomEventMa
44
44
  * `prefix` | A slot for content before the label (e.g. an icon).
45
45
  * `suffix` | A slot for content after the label (e.g. an icon).
46
46
  *
47
- * #### Example:
47
+ * #### Example
48
48
  *
49
49
  * ```html
50
50
  * <vaadin-side-nav-item>
@@ -39,7 +39,7 @@ function isEnabled() {
39
39
  * `prefix` | A slot for content before the label (e.g. an icon).
40
40
  * `suffix` | A slot for content after the label (e.g. an icon).
41
41
  *
42
- * #### Example:
42
+ * #### Example
43
43
  *
44
44
  * ```html
45
45
  * <vaadin-side-nav-item>
@@ -61,10 +61,6 @@ class SideNavItem extends ElementMixin(ThemableMixin(PolylitMixin(LitElement)))
61
61
  return 'vaadin-side-nav-item';
62
62
  }
63
63
 
64
- static get observers() {
65
- return ['__pathChanged(path)'];
66
- }
67
-
68
64
  static get properties() {
69
65
  return {
70
66
  /**
@@ -109,10 +105,33 @@ class SideNavItem extends ElementMixin(ThemableMixin(PolylitMixin(LitElement)))
109
105
  return this.shadowRoot.querySelector('button');
110
106
  }
111
107
 
108
+ /**
109
+ * @protected
110
+ * @override
111
+ */
112
+ firstUpdated() {
113
+ // By default, if the user hasn't provided a custom role,
114
+ // the role attribute is set to "listitem".
115
+ if (!this.hasAttribute('role')) {
116
+ this.setAttribute('role', 'listitem');
117
+ }
118
+ }
119
+
120
+ /**
121
+ * @protected
122
+ * @override
123
+ */
124
+ updated(props) {
125
+ super.updated(props);
126
+
127
+ if (props.has('path')) {
128
+ this.__updateActive();
129
+ }
130
+ }
131
+
112
132
  /** @protected */
113
133
  connectedCallback() {
114
134
  super.connectedCallback();
115
- this.setAttribute('role', 'listitem');
116
135
  this.__updateActive();
117
136
  this.__boundUpdateActive = this.__updateActive.bind(this);
118
137
  window.addEventListener('popstate', this.__boundUpdateActive);
@@ -144,11 +163,6 @@ class SideNavItem extends ElementMixin(ThemableMixin(PolylitMixin(LitElement)))
144
163
  `;
145
164
  }
146
165
 
147
- /** @private */
148
- __pathChanged() {
149
- this.__updateActive();
150
- }
151
-
152
166
  /** @private */
153
167
  __toggleExpanded(e) {
154
168
  e.preventDefault();
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2017 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2023 Vaadin Ltd.
4
4
  * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
5
  */
6
6
  import { LitElement } from 'lit';
@@ -21,6 +21,7 @@ export type SideNavEventMap = HTMLElementEventMap & SideNavCustomEventMap;
21
21
 
22
22
  /**
23
23
  * `<vaadin-side-nav>` is a Web Component for navigation menus.
24
+ *
24
25
  * ```html
25
26
  * <vaadin-side-nav>
26
27
  * <vaadin-side-nav-item>Item 1</vaadin-side-nav-item>
@@ -38,7 +39,8 @@ export type SideNavEventMap = HTMLElementEventMap & SideNavCustomEventMap;
38
39
  * ----------|-------------
39
40
  * `label` | The label (text) inside the side nav.
40
41
  *
41
- * #### Example:
42
+ * #### Example
43
+ *
42
44
  * ```html
43
45
  * <vaadin-side-nav>
44
46
  * <span slot="label">Main menu</span>
@@ -1,9 +1,8 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2017 - 2023 Vaadin Ltd.
3
+ * Copyright (c) 2023 Vaadin Ltd.
4
4
  * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
5
  */
6
-
7
6
  import { html, LitElement } from 'lit';
8
7
  import { ElementMixin } from '@vaadin/component-base/src/element-mixin.js';
9
8
  import { PolylitMixin } from '@vaadin/component-base/src/polylit-mixin.js';
@@ -17,6 +16,7 @@ function isEnabled() {
17
16
 
18
17
  /**
19
18
  * `<vaadin-side-nav>` is a Web Component for navigation menus.
19
+ *
20
20
  * ```html
21
21
  * <vaadin-side-nav>
22
22
  * <vaadin-side-nav-item>Item 1</vaadin-side-nav-item>
@@ -34,7 +34,8 @@ function isEnabled() {
34
34
  * ----------|-------------
35
35
  * `label` | The label (text) inside the side nav.
36
36
  *
37
- * #### Example:
37
+ * #### Example
38
+ *
38
39
  * ```html
39
40
  * <vaadin-side-nav>
40
41
  * <span slot="label">Main menu</span>
@@ -87,8 +88,6 @@ class SideNav extends ElementMixin(ThemableMixin(PolylitMixin(LitElement))) {
87
88
 
88
89
  /** @protected */
89
90
  firstUpdated() {
90
- super.ready();
91
-
92
91
  // By default, if the user hasn't provided a custom role,
93
92
  // the role attribute is set to "navigation".
94
93
  if (!this.hasAttribute('role')) {
package/web-types.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/web-types",
3
3
  "name": "@vaadin/side-nav",
4
- "version": "24.1.0-alpha9",
4
+ "version": "24.1.0-beta1",
5
5
  "description-markup": "markdown",
6
6
  "contributions": {
7
7
  "html": {
8
8
  "elements": [
9
9
  {
10
10
  "name": "vaadin-side-nav-item",
11
- "description": "A navigation item to be used within `<vaadin-side-nav>`. Represents a navigation target.\nNot intended to be used separately.\n\n```html\n<vaadin-side-nav-item>\n Item 1\n <vaadin-side-nav-item path=\"/path1\" slot=\"children\">\n Child item 1\n </vaadin-side-nav-item>\n <vaadin-side-nav-item path=\"/path2\" slot=\"children\">\n Child item 2\n </vaadin-side-nav-item>\n</vaadin-side-nav-item>\n```\n\n### Customization\n\nYou can configure the item by using `slot` names.\n\nSlot name | Description\n----------|-------------\n`prefix` | A slot for content before the label (e.g. an icon).\n`suffix` | A slot for content after the label (e.g. an icon).\n\n#### Example:\n\n```html\n<vaadin-side-nav-item>\n <vaadin-icon icon=\"vaadin:chart\" slot=\"prefix\"></vaadin-icon>\n Item\n <span theme=\"badge primary\" slot=\"suffix\">Suffix</span>\n</vaadin-side-nav-item>\n```",
11
+ "description": "A navigation item to be used within `<vaadin-side-nav>`. Represents a navigation target.\nNot intended to be used separately.\n\n```html\n<vaadin-side-nav-item>\n Item 1\n <vaadin-side-nav-item path=\"/path1\" slot=\"children\">\n Child item 1\n </vaadin-side-nav-item>\n <vaadin-side-nav-item path=\"/path2\" slot=\"children\">\n Child item 2\n </vaadin-side-nav-item>\n</vaadin-side-nav-item>\n```\n\n### Customization\n\nYou can configure the item by using `slot` names.\n\nSlot name | Description\n----------|-------------\n`prefix` | A slot for content before the label (e.g. an icon).\n`suffix` | A slot for content after the label (e.g. an icon).\n\n#### Example\n\n```html\n<vaadin-side-nav-item>\n <vaadin-icon icon=\"vaadin:chart\" slot=\"prefix\"></vaadin-icon>\n Item\n <span theme=\"badge primary\" slot=\"suffix\">Suffix</span>\n</vaadin-side-nav-item>\n```",
12
12
  "attributes": [
13
13
  {
14
14
  "name": "path",
@@ -75,7 +75,7 @@
75
75
  },
76
76
  {
77
77
  "name": "vaadin-side-nav",
78
- "description": "`<vaadin-side-nav>` is a Web Component for navigation menus.\n```html\n<vaadin-side-nav>\n <vaadin-side-nav-item>Item 1</vaadin-side-nav-item>\n <vaadin-side-nav-item>Item 2</vaadin-side-nav-item>\n <vaadin-side-nav-item>Item 3</vaadin-side-nav-item>\n <vaadin-side-nav-item>Item 4</vaadin-side-nav-item>\n</vaadin-side-nav>\n```\n\n### Customization\n\nYou can configure the component by using `slot` names.\n\nSlot name | Description\n----------|-------------\n`label` | The label (text) inside the side nav.\n\n#### Example:\n```html\n<vaadin-side-nav>\n <span slot=\"label\">Main menu</span>\n <vaadin-side-nav-item>Item</vaadin-side-nav-item>\n</vaadin-side-nav>\n```",
78
+ "description": "`<vaadin-side-nav>` is a Web Component for navigation menus.\n\n```html\n<vaadin-side-nav>\n <vaadin-side-nav-item>Item 1</vaadin-side-nav-item>\n <vaadin-side-nav-item>Item 2</vaadin-side-nav-item>\n <vaadin-side-nav-item>Item 3</vaadin-side-nav-item>\n <vaadin-side-nav-item>Item 4</vaadin-side-nav-item>\n</vaadin-side-nav>\n```\n\n### Customization\n\nYou can configure the component by using `slot` names.\n\nSlot name | Description\n----------|-------------\n`label` | The label (text) inside the side nav.\n\n#### Example\n\n```html\n<vaadin-side-nav>\n <span slot=\"label\">Main menu</span>\n <vaadin-side-nav-item>Item</vaadin-side-nav-item>\n</vaadin-side-nav>\n```",
79
79
  "attributes": [
80
80
  {
81
81
  "name": "collapsible",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/web-types",
3
3
  "name": "@vaadin/side-nav",
4
- "version": "24.1.0-alpha9",
4
+ "version": "24.1.0-beta1",
5
5
  "description-markup": "markdown",
6
6
  "framework": "lit",
7
7
  "framework-config": {
@@ -16,7 +16,7 @@
16
16
  "elements": [
17
17
  {
18
18
  "name": "vaadin-side-nav-item",
19
- "description": "A navigation item to be used within `<vaadin-side-nav>`. Represents a navigation target.\nNot intended to be used separately.\n\n```html\n<vaadin-side-nav-item>\n Item 1\n <vaadin-side-nav-item path=\"/path1\" slot=\"children\">\n Child item 1\n </vaadin-side-nav-item>\n <vaadin-side-nav-item path=\"/path2\" slot=\"children\">\n Child item 2\n </vaadin-side-nav-item>\n</vaadin-side-nav-item>\n```\n\n### Customization\n\nYou can configure the item by using `slot` names.\n\nSlot name | Description\n----------|-------------\n`prefix` | A slot for content before the label (e.g. an icon).\n`suffix` | A slot for content after the label (e.g. an icon).\n\n#### Example:\n\n```html\n<vaadin-side-nav-item>\n <vaadin-icon icon=\"vaadin:chart\" slot=\"prefix\"></vaadin-icon>\n Item\n <span theme=\"badge primary\" slot=\"suffix\">Suffix</span>\n</vaadin-side-nav-item>\n```",
19
+ "description": "A navigation item to be used within `<vaadin-side-nav>`. Represents a navigation target.\nNot intended to be used separately.\n\n```html\n<vaadin-side-nav-item>\n Item 1\n <vaadin-side-nav-item path=\"/path1\" slot=\"children\">\n Child item 1\n </vaadin-side-nav-item>\n <vaadin-side-nav-item path=\"/path2\" slot=\"children\">\n Child item 2\n </vaadin-side-nav-item>\n</vaadin-side-nav-item>\n```\n\n### Customization\n\nYou can configure the item by using `slot` names.\n\nSlot name | Description\n----------|-------------\n`prefix` | A slot for content before the label (e.g. an icon).\n`suffix` | A slot for content after the label (e.g. an icon).\n\n#### Example\n\n```html\n<vaadin-side-nav-item>\n <vaadin-icon icon=\"vaadin:chart\" slot=\"prefix\"></vaadin-icon>\n Item\n <span theme=\"badge primary\" slot=\"suffix\">Suffix</span>\n</vaadin-side-nav-item>\n```",
20
20
  "extension": true,
21
21
  "attributes": [
22
22
  {
@@ -44,7 +44,7 @@
44
44
  },
45
45
  {
46
46
  "name": "vaadin-side-nav",
47
- "description": "`<vaadin-side-nav>` is a Web Component for navigation menus.\n```html\n<vaadin-side-nav>\n <vaadin-side-nav-item>Item 1</vaadin-side-nav-item>\n <vaadin-side-nav-item>Item 2</vaadin-side-nav-item>\n <vaadin-side-nav-item>Item 3</vaadin-side-nav-item>\n <vaadin-side-nav-item>Item 4</vaadin-side-nav-item>\n</vaadin-side-nav>\n```\n\n### Customization\n\nYou can configure the component by using `slot` names.\n\nSlot name | Description\n----------|-------------\n`label` | The label (text) inside the side nav.\n\n#### Example:\n```html\n<vaadin-side-nav>\n <span slot=\"label\">Main menu</span>\n <vaadin-side-nav-item>Item</vaadin-side-nav-item>\n</vaadin-side-nav>\n```",
47
+ "description": "`<vaadin-side-nav>` is a Web Component for navigation menus.\n\n```html\n<vaadin-side-nav>\n <vaadin-side-nav-item>Item 1</vaadin-side-nav-item>\n <vaadin-side-nav-item>Item 2</vaadin-side-nav-item>\n <vaadin-side-nav-item>Item 3</vaadin-side-nav-item>\n <vaadin-side-nav-item>Item 4</vaadin-side-nav-item>\n</vaadin-side-nav>\n```\n\n### Customization\n\nYou can configure the component by using `slot` names.\n\nSlot name | Description\n----------|-------------\n`label` | The label (text) inside the side nav.\n\n#### Example\n\n```html\n<vaadin-side-nav>\n <span slot=\"label\">Main menu</span>\n <vaadin-side-nav-item>Item</vaadin-side-nav-item>\n</vaadin-side-nav>\n```",
48
48
  "extension": true,
49
49
  "attributes": [
50
50
  {