@lit-material/navigation 0.0.1

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 (39) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +127 -0
  3. package/dist/index.d.ts +7 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +5 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/navigation-drawer-item-styles.d.ts +2 -0
  8. package/dist/navigation-drawer-item-styles.d.ts.map +1 -0
  9. package/dist/navigation-drawer-item-styles.js +108 -0
  10. package/dist/navigation-drawer-item-styles.js.map +1 -0
  11. package/dist/navigation-drawer-item.d.ts +44 -0
  12. package/dist/navigation-drawer-item.d.ts.map +1 -0
  13. package/dist/navigation-drawer-item.js +124 -0
  14. package/dist/navigation-drawer-item.js.map +1 -0
  15. package/dist/navigation-drawer-styles.d.ts +2 -0
  16. package/dist/navigation-drawer-styles.d.ts.map +1 -0
  17. package/dist/navigation-drawer-styles.js +75 -0
  18. package/dist/navigation-drawer-styles.js.map +1 -0
  19. package/dist/navigation-drawer.d.ts +68 -0
  20. package/dist/navigation-drawer.d.ts.map +1 -0
  21. package/dist/navigation-drawer.js +187 -0
  22. package/dist/navigation-drawer.js.map +1 -0
  23. package/dist/navigation-rail-item-styles.d.ts +2 -0
  24. package/dist/navigation-rail-item-styles.d.ts.map +1 -0
  25. package/dist/navigation-rail-item-styles.js +122 -0
  26. package/dist/navigation-rail-item-styles.js.map +1 -0
  27. package/dist/navigation-rail-item.d.ts +46 -0
  28. package/dist/navigation-rail-item.d.ts.map +1 -0
  29. package/dist/navigation-rail-item.js +128 -0
  30. package/dist/navigation-rail-item.js.map +1 -0
  31. package/dist/navigation-rail-styles.d.ts +2 -0
  32. package/dist/navigation-rail-styles.d.ts.map +1 -0
  33. package/dist/navigation-rail-styles.js +51 -0
  34. package/dist/navigation-rail-styles.js.map +1 -0
  35. package/dist/navigation-rail.d.ts +44 -0
  36. package/dist/navigation-rail.d.ts.map +1 -0
  37. package/dist/navigation-rail.js +93 -0
  38. package/dist/navigation-rail.js.map +1 -0
  39. package/package.json +62 -0
@@ -0,0 +1,93 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { html, LitElement } from "lit";
8
+ import { customElement, property } from "lit/decorators.js";
9
+ import { styles } from "./navigation-rail-styles.js";
10
+ /**
11
+ * Material Design 3 navigation rail — a narrow, always-visible vertical bar
12
+ * of primary destinations (`lit-material-navigation-rail-item` elements),
13
+ * typically docked to one edge for medium/large window sizes.
14
+ *
15
+ * Selection is index-based and managed here (like `lit-material-tabs`): set
16
+ * `selected` to reflect your current route/section, and each item's own
17
+ * `selected` is kept in sync automatically. Clicking an item updates
18
+ * `selected` and fires `change` — items themselves don't manage selection.
19
+ *
20
+ * @element lit-material-navigation-rail
21
+ *
22
+ * @slot - `lit-material-navigation-rail-item` elements.
23
+ * @slot fab - An optional FAB shown above the items.
24
+ *
25
+ * @csspart rail - The bar (background, width, padding).
26
+ * @csspart fab - The fab slot's container.
27
+ * @csspart items - The items slot's container.
28
+ *
29
+ * @fires change - Fires when `selected` changes via an item click.
30
+ */
31
+ let LitMaterialNavigationRail = class LitMaterialNavigationRail extends LitElement {
32
+ static { this.styles = styles; }
33
+ constructor() {
34
+ super();
35
+ /** Where the item group sits within the rail's height. */
36
+ this.alignment = "top";
37
+ /** Index of the selected item. `-1` means no selection. */
38
+ this.selected = -1;
39
+ this.handleSlotChange = () => this.syncSelected();
40
+ this.handleClick = (event) => {
41
+ const path = event.composedPath();
42
+ const items = this.items;
43
+ const item = items.find((candidate) => path.includes(candidate));
44
+ if (!item || item.disabled)
45
+ return;
46
+ const index = items.indexOf(item);
47
+ const isChange = index !== this.selected;
48
+ this.selected = index;
49
+ if (isChange)
50
+ this.dispatchEvent(new Event("change", { bubbles: true }));
51
+ };
52
+ this.addEventListener("click", this.handleClick);
53
+ }
54
+ connectedCallback() {
55
+ super.connectedCallback();
56
+ this.syncSelected();
57
+ }
58
+ updated(changed) {
59
+ if (changed.has("selected"))
60
+ this.syncSelected();
61
+ }
62
+ get items() {
63
+ if (typeof this.querySelectorAll !== "function")
64
+ return [];
65
+ return Array.from(this.querySelectorAll("lit-material-navigation-rail-item"));
66
+ }
67
+ syncSelected() {
68
+ this.items.forEach((item, index) => {
69
+ item.selected = index === this.selected;
70
+ });
71
+ }
72
+ render() {
73
+ return html `
74
+ <div class="rail" part="rail">
75
+ <div class="fab" part="fab"><slot name="fab"></slot></div>
76
+ <div class="items ${this.alignment}" part="items">
77
+ <slot @slotchange=${this.handleSlotChange}></slot>
78
+ </div>
79
+ </div>
80
+ `;
81
+ }
82
+ };
83
+ __decorate([
84
+ property()
85
+ ], LitMaterialNavigationRail.prototype, "alignment", void 0);
86
+ __decorate([
87
+ property({ type: Number })
88
+ ], LitMaterialNavigationRail.prototype, "selected", void 0);
89
+ LitMaterialNavigationRail = __decorate([
90
+ customElement("lit-material-navigation-rail")
91
+ ], LitMaterialNavigationRail);
92
+ export { LitMaterialNavigationRail };
93
+ //# sourceMappingURL=navigation-rail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation-rail.js","sourceRoot":"","sources":["../src/navigation-rail.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAIrD;;;;;;;;;;;;;;;;;;;;GAoBG;AAEI,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,UAAU;aACvC,WAAM,GAAG,MAAM,AAAT,CAAU;IAQhC;QACE,KAAK,EAAE,CAAC;QAPV,0DAA0D;QAC9C,cAAS,GAA4B,KAAK,CAAC;QAEvD,2DAA2D;QAC/B,aAAQ,GAAG,CAAC,CAAC,CAAC;QA2BzB,qBAAgB,GAAG,GAAS,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAEnD,gBAAW,GAAG,CAAC,KAAiB,EAAQ,EAAE;YACzD,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;YACjE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO;YACnC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,QAAQ,GAAG,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC;YACzC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,QAAQ;gBAAE,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC;QAlCA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACnD,CAAC;IAEQ,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEkB,OAAO,CAAC,OAA6B;QACtD,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,IAAI,CAAC,YAAY,EAAE,CAAC;IACnD,CAAC;IAED,IAAY,KAAK;QACf,IAAI,OAAO,IAAI,CAAC,gBAAgB,KAAK,UAAU;YAAE,OAAO,EAAE,CAAC;QAC3D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,mCAAmC,CAAC,CAAC,CAAC;IAChF,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACjC,IAAI,CAAC,QAAQ,GAAG,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC;IAeQ,MAAM;QACb,OAAO,IAAI,CAAA;;;4BAGa,IAAI,CAAC,SAAS;8BACZ,IAAI,CAAC,gBAAgB;;;KAG9C,CAAC;IACJ,CAAC;;AApDW;IAAX,QAAQ,EAAE;4DAA4C;AAG3B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;2DAAe;AAP/B,yBAAyB;IADrC,aAAa,CAAC,8BAA8B,CAAC;GACjC,yBAAyB,CAyDrC"}
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "@lit-material/navigation",
3
+ "version": "0.0.1",
4
+ "description": "Material Design 3 navigation drawer and navigation rail web components.",
5
+ "license": "MIT",
6
+ "author": {
7
+ "name": "bohdaq",
8
+ "email": "bohdaq@gmail.com",
9
+ "url": "https://github.com/bohdaq"
10
+ },
11
+ "homepage": "https://github.com/bohdaq/lit-material#readme",
12
+ "bugs": "https://github.com/bohdaq/lit-material/issues",
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+ssh://git@github.com/bohdaq/lit-material.git",
16
+ "directory": "packages/navigation"
17
+ },
18
+ "keywords": [
19
+ "lit",
20
+ "web-components",
21
+ "lit-material",
22
+ "material-design",
23
+ "material-design-3",
24
+ "navigation-drawer",
25
+ "navigation-rail"
26
+ ],
27
+ "type": "module",
28
+ "main": "./dist/index.js",
29
+ "types": "./dist/index.d.ts",
30
+ "exports": {
31
+ ".": {
32
+ "types": "./dist/index.d.ts",
33
+ "default": "./dist/index.js"
34
+ }
35
+ },
36
+ "files": [
37
+ "dist"
38
+ ],
39
+ "publishConfig": {
40
+ "access": "public"
41
+ },
42
+ "dependencies": {
43
+ "lit": "^3.2.0",
44
+ "@lit-material/core": "0.0.1",
45
+ "@lit-material/tokens": "0.0.1"
46
+ },
47
+ "devDependencies": {
48
+ "@lit-labs/ssr": "^3.3.1",
49
+ "@open-wc/testing": "^4.0.0",
50
+ "@web/dev-server-esbuild": "^1.0.0",
51
+ "@web/test-runner": "^0.19.0",
52
+ "@web/test-runner-commands": "^0.9.0",
53
+ "@web/test-runner-playwright": "^0.11.0",
54
+ "tsx": "^4.19.0",
55
+ "typescript": "^5.7.0"
56
+ },
57
+ "scripts": {
58
+ "build": "tsc -p tsconfig.json",
59
+ "typecheck": "tsc -p tsconfig.json --noEmit",
60
+ "test": "web-test-runner && node --import tsx --test src/*.ssr.test.ts"
61
+ }
62
+ }