@momentum-design/components 0.80.3 → 0.80.5

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 (50) hide show
  1. package/dist/browser/index.js +601 -317
  2. package/dist/browser/index.js.map +4 -4
  3. package/dist/components/list/list.component.d.ts +1 -1
  4. package/dist/components/listitem/listitem.component.js +10 -3
  5. package/dist/components/menupopover/menupopover.component.js +3 -1
  6. package/dist/components/navitem/index.d.ts +11 -0
  7. package/dist/components/navitem/index.js +8 -0
  8. package/dist/components/navitem/navitem.component.d.ts +125 -0
  9. package/dist/components/navitem/navitem.component.js +251 -0
  10. package/dist/components/navitem/navitem.constants.d.ts +16 -0
  11. package/dist/components/navitem/navitem.constants.js +21 -0
  12. package/dist/components/navitem/navitem.styles.d.ts +2 -0
  13. package/dist/components/navitem/navitem.styles.js +146 -0
  14. package/dist/components/navitem/navitem.types.d.ts +11 -0
  15. package/dist/components/navitem/navitem.types.js +1 -0
  16. package/dist/components/navitemlist/index.d.ts +7 -0
  17. package/dist/components/navitemlist/index.js +4 -0
  18. package/dist/components/navitemlist/navitemlist.component.d.ts +51 -0
  19. package/dist/components/navitemlist/navitemlist.component.js +92 -0
  20. package/dist/components/navitemlist/navitemlist.constants.d.ts +2 -0
  21. package/dist/components/navitemlist/navitemlist.constants.js +3 -0
  22. package/dist/components/navitemlist/navitemlist.styles.d.ts +2 -0
  23. package/dist/components/navitemlist/navitemlist.styles.js +23 -0
  24. package/dist/components/sidenavigation/index.d.ts +10 -0
  25. package/dist/components/sidenavigation/index.js +7 -0
  26. package/dist/components/sidenavigation/sidenavigation.component.d.ts +144 -0
  27. package/dist/components/sidenavigation/sidenavigation.component.js +244 -0
  28. package/dist/components/sidenavigation/sidenavigation.constants.d.ts +11 -0
  29. package/dist/components/sidenavigation/sidenavigation.constants.js +12 -0
  30. package/dist/components/sidenavigation/sidenavigation.context.d.ts +15 -0
  31. package/dist/components/sidenavigation/sidenavigation.context.js +78 -0
  32. package/dist/components/sidenavigation/sidenavigation.styles.d.ts +2 -0
  33. package/dist/components/sidenavigation/sidenavigation.styles.js +68 -0
  34. package/dist/components/sidenavigation/sidenavigation.types.d.ts +7 -0
  35. package/dist/components/sidenavigation/sidenavigation.types.js +1 -0
  36. package/dist/custom-elements.json +5820 -3900
  37. package/dist/index.d.ts +4 -1
  38. package/dist/index.js +4 -1
  39. package/dist/react/index.d.ts +8 -5
  40. package/dist/react/index.js +8 -5
  41. package/dist/react/navitem/index.d.ts +43 -0
  42. package/dist/react/navitem/index.js +51 -0
  43. package/dist/react/navitemlist/index.d.ts +13 -0
  44. package/dist/react/navitemlist/index.js +22 -0
  45. package/dist/react/sidenavigation/index.d.ts +56 -0
  46. package/dist/react/sidenavigation/index.js +64 -0
  47. package/dist/utils/mixins/MenuMixin.js +45 -33
  48. package/dist/utils/roles.d.ts +1 -0
  49. package/dist/utils/roles.js +1 -0
  50. package/package.json +1 -1
@@ -0,0 +1,78 @@
1
+ import { createContext } from '@lit/context';
2
+ import { TAG_NAME as MENUPOPOVER_TAGNAME } from '../menupopover/menupopover.constants';
3
+ import { TAG_NAME as NAVITEM_TAGNAME } from '../navitem/navitem.constants';
4
+ import { POPOVER_PLACEMENT } from '../popover/popover.constants';
5
+ import { TAG_NAME } from './sidenavigation.constants';
6
+ class SideNavigationContext {
7
+ constructor(defaultVariant, defaultExpanded, defaultParentNavTooltipText) {
8
+ this.variant = defaultVariant;
9
+ this.expanded = defaultExpanded;
10
+ this.parentNavTooltipText = defaultParentNavTooltipText;
11
+ }
12
+ hasSiblingWithTriggerId(navItem) {
13
+ var _a, _b;
14
+ const id = navItem === null || navItem === void 0 ? void 0 : navItem.getAttribute('id');
15
+ if (!id)
16
+ return false;
17
+ const siblings = Array.from((_b = (_a = navItem === null || navItem === void 0 ? void 0 : navItem.parentElement) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : []);
18
+ return siblings.some((sibling) => sibling !== navItem
19
+ && sibling.tagName.toLowerCase() === MENUPOPOVER_TAGNAME
20
+ && sibling.getAttribute('triggerid') === id);
21
+ }
22
+ getParentNavItems(navItem) {
23
+ if (!navItem)
24
+ return [];
25
+ const parents = [];
26
+ let current = navItem;
27
+ while (current) {
28
+ // Walk up to find the menupopover
29
+ const popover = current === null || current === void 0 ? void 0 : current.closest(MENUPOPOVER_TAGNAME);
30
+ if (!popover)
31
+ break;
32
+ const triggerId = popover.getAttribute('triggerid');
33
+ if (!triggerId)
34
+ break;
35
+ // Find the NavItem that triggered this menupopover
36
+ const triggeringNavItem = document.getElementById(triggerId);
37
+ if (triggeringNavItem && triggeringNavItem.tagName.toLowerCase() === NAVITEM_TAGNAME) {
38
+ parents.push(triggeringNavItem);
39
+ current = triggeringNavItem;
40
+ }
41
+ else {
42
+ break;
43
+ }
44
+ }
45
+ return parents;
46
+ }
47
+ setCurrentActiveNavItem(navItem) {
48
+ var _a;
49
+ const isSameItem = ((_a = this.currentActiveNavItem) === null || _a === void 0 ? void 0 : _a.navId) === (navItem === null || navItem === void 0 ? void 0 : navItem.navId);
50
+ const shouldSkip = (navItem === null || navItem === void 0 ? void 0 : navItem.disableAriaCurrent) || this.hasSiblingWithTriggerId(navItem);
51
+ if (isSameItem || shouldSkip)
52
+ return;
53
+ // Clean up previous active item
54
+ if (this.currentActiveNavItem) {
55
+ this.currentActiveNavItem.removeAttribute('aria-current');
56
+ this.currentActiveNavItem.removeAttribute('active');
57
+ const previousParents = this.getParentNavItems(this.currentActiveNavItem);
58
+ previousParents.forEach((parent) => {
59
+ parent.removeAttribute('tooltip-text');
60
+ parent.removeAttribute('active');
61
+ });
62
+ }
63
+ // Apply attributes to new active item
64
+ if (!navItem)
65
+ return;
66
+ this.currentActiveNavItem = navItem;
67
+ navItem.setAttribute('aria-current', 'page');
68
+ navItem.setAttribute('active', '');
69
+ const newParents = this.getParentNavItems(navItem);
70
+ newParents.forEach((parent) => {
71
+ parent.setAttribute('tooltip-text', this.parentNavTooltipText || '');
72
+ parent.setAttribute('tooltip-placement', POPOVER_PLACEMENT.BOTTOM);
73
+ parent.setAttribute('active', '');
74
+ });
75
+ }
76
+ }
77
+ SideNavigationContext.context = createContext(TAG_NAME);
78
+ export default SideNavigationContext;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("lit").CSSResult[];
2
+ export default _default;
@@ -0,0 +1,68 @@
1
+ import { css } from 'lit';
2
+ const styles = css `
3
+ :host {
4
+ --mdc-sidenavigation-expanded-width: 15rem;
5
+ --mdc-sidenavigation-collapsed-width: 4.5rem;
6
+
7
+ display: flex;
8
+ height: 100%;
9
+ }
10
+
11
+ :host([expanded]) {
12
+ width: var(--mdc-sidenavigation-expanded-width);
13
+ }
14
+
15
+ :host(:not([expanded])) {
16
+ width: var(--mdc-sidenavigation-collapsed-width);
17
+ }
18
+
19
+ :host::part(side-navigation-container) {
20
+ display: flex;
21
+ flex-direction: column;
22
+ width: 100%;
23
+ }
24
+
25
+ :host::part(scrollable-section) {
26
+ flex-grow: 1;
27
+ overflow: auto;
28
+ padding: 1rem 0;
29
+ min-height: 0;
30
+ }
31
+
32
+ :host::part(fixed-section) {
33
+ flex-shrink: 0;
34
+ display: flex;
35
+ flex-direction: column;
36
+ align-items: flex-start;
37
+ padding-bottom: 1rem;
38
+ gap: 0.5rem;
39
+ }
40
+
41
+ :host::part(brand-logo-container) {
42
+ display: flex;
43
+ align-items: center;
44
+ width: 100%;
45
+ gap: 0.5rem;
46
+ border-radius: 1.25rem;
47
+ }
48
+
49
+ :host(:dir(ltr))::part(brand-logo-container) {
50
+ padding: 0.5rem 0rem 0.5rem 1.5rem;
51
+ }
52
+
53
+ :host(:dir(rtl))::part(brand-logo-container) {
54
+ padding: 0.5rem 1.5rem 0.5rem 0rem;
55
+ }
56
+
57
+ ::slotted([slot="brand-logo"]) {
58
+ width: 1.5rem;
59
+ height: 1.5rem;
60
+ flex-shrink: 0;
61
+ aspect-ratio: 1 / 1;
62
+ }
63
+
64
+ :host::part(separator) {
65
+ margin-bottom: 0.75rem;
66
+ }
67
+ `;
68
+ export default [styles];
@@ -0,0 +1,7 @@
1
+ import type { ValueOf } from '../../utils/types';
2
+ import { VARIANTS } from './sidenavigation.constants';
3
+ type SideNavigationVariant = ValueOf<typeof VARIANTS>;
4
+ interface Events {
5
+ onActiveChangeEvent: Event;
6
+ }
7
+ export type { SideNavigationVariant, Events };