@udixio/ui-react 2.10.2 → 2.10.4

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 (35) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/index.cjs +3 -3
  3. package/dist/index.js +1990 -2014
  4. package/dist/lib/components/ContextMenu.d.ts +1 -1
  5. package/dist/lib/components/ContextMenu.d.ts.map +1 -1
  6. package/dist/lib/components/Menu.d.ts +1 -1
  7. package/dist/lib/components/Menu.d.ts.map +1 -1
  8. package/dist/lib/components/MenuItem.d.ts +1 -1
  9. package/dist/lib/components/MenuItem.d.ts.map +1 -1
  10. package/dist/lib/components/TextField.d.ts.map +1 -1
  11. package/dist/lib/interfaces/index.d.ts +2 -0
  12. package/dist/lib/interfaces/index.d.ts.map +1 -1
  13. package/dist/lib/interfaces/menu-item.interface.d.ts +19 -25
  14. package/dist/lib/interfaces/menu-item.interface.d.ts.map +1 -1
  15. package/dist/lib/interfaces/menu.interface.d.ts +0 -1
  16. package/dist/lib/interfaces/menu.interface.d.ts.map +1 -1
  17. package/dist/lib/interfaces/text-field.interface.d.ts +2 -5
  18. package/dist/lib/interfaces/text-field.interface.d.ts.map +1 -1
  19. package/dist/lib/styles/menu-group.style.d.ts +2 -2
  20. package/dist/lib/styles/menu-item.style.d.ts +58 -14
  21. package/dist/lib/styles/menu-item.style.d.ts.map +1 -1
  22. package/dist/lib/styles/menu.style.d.ts +0 -1
  23. package/dist/lib/styles/menu.style.d.ts.map +1 -1
  24. package/dist/lib/styles/text-field.style.d.ts +2 -10
  25. package/dist/lib/styles/text-field.style.d.ts.map +1 -1
  26. package/package.json +1 -1
  27. package/src/lib/components/ContextMenu.tsx +2 -4
  28. package/src/lib/components/Menu.tsx +1 -26
  29. package/src/lib/components/MenuItem.tsx +39 -21
  30. package/src/lib/components/TextField.tsx +55 -37
  31. package/src/lib/interfaces/index.ts +2 -0
  32. package/src/lib/interfaces/menu-item.interface.ts +20 -26
  33. package/src/lib/interfaces/menu.interface.ts +0 -1
  34. package/src/lib/interfaces/text-field.interface.ts +7 -8
  35. package/src/lib/styles/menu-item.style.ts +7 -15
@@ -11,5 +11,5 @@ export type ContextMenuProps = {
11
11
  };
12
12
  elements: [''];
13
13
  };
14
- export declare const ContextMenu: ({ trigger, children, onItemSelect, ...menuProps }: ReactProps<ContextMenuProps>) => import("react/jsx-runtime").JSX.Element;
14
+ export declare const ContextMenu: ({ trigger, children, ...menuProps }: ReactProps<ContextMenuProps>) => import("react/jsx-runtime").JSX.Element;
15
15
  //# sourceMappingURL=ContextMenu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../../src/lib/components/ContextMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAI3D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAMtC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE;QAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAC7D,IAAI,EAAE,KAAK,CAAC;IACZ,MAAM,EAAE;QACN,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,mDAKzB,UAAU,CAAC,gBAAgB,CAAC,4CAqF9B,CAAC"}
1
+ {"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../../src/lib/components/ContextMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAI3D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAMtC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE;QAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAC7D,IAAI,EAAE,KAAK,CAAC;IACZ,MAAM,EAAE;QACN,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,qCAIzB,UAAU,CAAC,gBAAgB,CAAC,4CAoF9B,CAAC"}
@@ -12,5 +12,5 @@ import { ReactProps } from '../utils/component';
12
12
  * @a11y
13
13
  * - `role="listbox"` with `aria-selected` management.
14
14
  */
15
- export declare const Menu: ({ children, selected, onItemSelect, className, variant, ...restProps }: ReactProps<MenuInterface>) => import("react/jsx-runtime").JSX.Element;
15
+ export declare const Menu: ({ children, className, variant, ...restProps }: ReactProps<MenuInterface>) => import("react/jsx-runtime").JSX.Element;
16
16
  //# sourceMappingURL=Menu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Menu.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAG7D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMhD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,IAAI,GAAI,wEAOlB,UAAU,CAAC,aAAa,CAAC,4CAmF3B,CAAC"}
1
+ {"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Menu.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAG7D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMhD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,IAAI,GAAI,gDAKlB,UAAU,CAAC,aAAa,CAAC,4CA4D3B,CAAC"}
@@ -5,5 +5,5 @@ import { MenuItemInterface } from '../interfaces/menu-item.interface';
5
5
  * @status beta
6
6
  * @category Selection
7
7
  */
8
- export declare const MenuItem: ({ label, children, value, leadingIcon, trailingIcon, disabled, selected, variant, onClick, onItemSelect, className, ...restProps }: ReactProps<MenuItemInterface>) => import("react/jsx-runtime").JSX.Element;
8
+ export declare const MenuItem: ({ label, children, leadingIcon, trailingIcon, disabled, variant, href, onClick, onToggle, activated, className, ...restProps }: ReactProps<MenuItemInterface>) => import("react/jsx-runtime").JSX.Element;
9
9
  //# sourceMappingURL=MenuItem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItem.d.ts","sourceRoot":"","sources":["../../../src/lib/components/MenuItem.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAc,UAAU,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAMtE;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,oIAatB,UAAU,CAAC,iBAAiB,CAAC,4CAyK/B,CAAC"}
1
+ {"version":3,"file":"MenuItem.d.ts","sourceRoot":"","sources":["../../../src/lib/components/MenuItem.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAc,UAAU,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAMtE;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,gIAatB,UAAU,CAAC,iBAAiB,CAAC,4CA2L/B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TextField.d.ts","sourceRoot":"","sources":["../../../src/lib/components/TextField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsD,MAAM,OAAO,CAAC;AAmB3E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,GAAI,4SA4BvB,UAAU,CAAC,kBAAkB,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,4CAwfjE,CAAC"}
1
+ {"version":3,"file":"TextField.d.ts","sourceRoot":"","sources":["../../../src/lib/components/TextField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsD,MAAM,OAAO,CAAC;AAmB3E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,GAAI,4SA4BvB,UAAU,CAAC,kBAAkB,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,4CA2gBjE,CAAC"}
@@ -10,6 +10,8 @@ export * from './fab.interface';
10
10
  export * from './fab-menu.interface';
11
11
  export * from './icon-button.interface';
12
12
  export * from './menu.interface';
13
+ export * from './menu-group.interface';
14
+ export * from './menu-item.interface';
13
15
  export * from './progress-indicator.interface';
14
16
  export * from './side-sheet.interface';
15
17
  export * from './slider.interface';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,qBAAqB,CAAC"}
@@ -1,34 +1,28 @@
1
- import { ComponentInterface } from '../utils/component';
2
- export interface MenuItemInterface extends ComponentInterface {
3
- value: string | number;
1
+ import { ActionOrLink } from '../utils/component';
2
+ type Props = {
4
3
  label?: string;
5
4
  children?: React.ReactNode;
6
5
  leadingIcon?: any;
7
6
  trailingIcon?: any;
8
7
  disabled?: boolean;
9
- selected?: boolean;
10
8
  variant?: 'standard' | 'vibrant';
11
9
  onClick?: (e?: React.MouseEvent) => void;
12
- type: 'div';
13
- props: {
14
- label?: string;
15
- value: string | number;
16
- leadingIcon?: any;
17
- trailingIcon?: any;
18
- disabled?: boolean;
19
- selected?: boolean;
20
- variant?: 'standard' | 'vibrant';
21
- onItemSelect?: (value: string | number) => void;
22
- children?: React.ReactNode;
10
+ onToggle?: (activated: boolean) => void;
11
+ activated?: boolean;
12
+ };
13
+ type Elements = [
14
+ 'menuItem',
15
+ 'selectedItem',
16
+ 'itemLabel',
17
+ 'itemIcon',
18
+ 'leadingIcon',
19
+ 'trailingIcon'
20
+ ];
21
+ export type MenuItemInterface = ActionOrLink<Props> & {
22
+ states: {
23
+ isActive: boolean;
23
24
  };
24
- states: Record<string, any>;
25
- elements: [
26
- 'menuItem',
27
- 'selectedItem',
28
- 'itemLabel',
29
- 'itemIcon',
30
- 'leadingIcon',
31
- 'trailingIcon'
32
- ];
33
- }
25
+ elements: Elements;
26
+ };
27
+ export {};
34
28
  //# sourceMappingURL=menu-item.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"menu-item.interface.d.ts","sourceRoot":"","sources":["../../../src/lib/interfaces/menu-item.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACjC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAEzC,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,GAAG,CAAC;QAClB,YAAY,CAAC,EAAE,GAAG,CAAC;QACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,OAAO,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QACjC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;QAChD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KAC5B,CAAC;IACF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,QAAQ,EAAE;QACR,UAAU;QACV,cAAc;QACd,WAAW;QACX,UAAU;QACV,aAAa;QACb,cAAc;KACf,CAAC;CACH"}
1
+ {"version":3,"file":"menu-item.interface.d.ts","sourceRoot":"","sources":["../../../src/lib/interfaces/menu-item.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,KAAK,KAAK,GAAG;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACjC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,KAAK,QAAQ,GAAG;IACd,UAAU;IACV,cAAc;IACd,WAAW;IACX,UAAU;IACV,aAAa;IACb,cAAc;CACf,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG;IACpD,MAAM,EAAE;QACN,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC"}
@@ -2,7 +2,6 @@ export type MenuStates = Record<string, any>;
2
2
  export interface MenuProps {
3
3
  children: React.ReactNode;
4
4
  selected?: string | number | (string | number)[];
5
- onItemSelect?: (value: string | number) => void;
6
5
  className?: string;
7
6
  variant?: 'standard' | 'vibrant';
8
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"menu.interface.d.ts","sourceRoot":"","sources":["../../../src/lib/interfaces/menu.interface.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE7C,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACjD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;CAGlC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE;QACN,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;CACpB"}
1
+ {"version":3,"file":"menu.interface.d.ts","sourceRoot":"","sources":["../../../src/lib/interfaces/menu.interface.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE7C,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;CAGlC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE;QACN,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;CACpB"}
@@ -1,6 +1,7 @@
1
1
  import { default as React } from 'react';
2
2
  import { IconButton } from '../components/IconButton';
3
3
  import { Icon } from '../icon';
4
+ import { MenuItemInterface } from './menu-item.interface';
4
5
  export type TextFieldVariant = 'filled' | 'outlined';
5
6
  type Props = {
6
7
  placeholder?: string;
@@ -20,13 +21,9 @@ type Props = {
20
21
  style?: React.CSSProperties;
21
22
  variant?: TextFieldVariant;
22
23
  options?: Array<{
23
- label: string;
24
24
  value: string | number;
25
- leadingIcon?: any;
26
- trailingIcon?: any;
27
- disabled?: boolean;
28
25
  type?: 'divider' | 'headline';
29
- }>;
26
+ } & MenuItemInterface['props']>;
30
27
  type?: 'text' | 'password' | 'number' | 'date' | 'select';
31
28
  autoComplete?: 'on' | 'off' | string;
32
29
  autoFocus?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"text-field.interface.d.ts","sourceRoot":"","sources":["../../../src/lib/interfaces/text-field.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,CAAC;AAErD,KAAK,KAAK,GAAG;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,CAAC;IAC5D,WAAW,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,CAAC;IAC3D,QAAQ,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,CAAC;IAC5E,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,GAAG,CAAC;QAClB,YAAY,CAAC,EAAE,GAAG,CAAC;QACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;KAC/B,CAAC,CAAC;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC1D,YAAY,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AACF,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,EAAE;QACR,WAAW;QACX,SAAS;QACT,OAAO;QACP,OAAO;QACP,iBAAiB;QACjB,gBAAgB;QAChB,aAAa;QACb,cAAc;QACd,QAAQ;QACR,YAAY;KACb,CAAC;CACH"}
1
+ {"version":3,"file":"text-field.interface.d.ts","sourceRoot":"","sources":["../../../src/lib/interfaces/text-field.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,CAAC;AAErD,KAAK,KAAK,GAAG;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,CAAC;IAC5D,WAAW,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,CAAC;IAC3D,QAAQ,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,CAAC;IAC5E,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,OAAO,CAAC,EAAE,KAAK,CACb;QACE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;QACvB,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;KAC/B,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAC/B,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC1D,YAAY,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AACF,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,EAAE;QACR,WAAW;QACX,SAAS;QACT,OAAO;QACP,OAAO;QACP,iBAAiB;QACjB,gBAAgB;QAChB,aAAa;QACb,cAAc;QACd,QAAQ;QACR,YAAY;KACb,CAAC;CACH"}
@@ -5,10 +5,10 @@ export declare const menuGroupStyle: (states: {
5
5
  className: any;
6
6
  variant: any;
7
7
  label: any;
8
- } & import('../interfaces/menu-group.interface').MenuGroupProps & object & {
8
+ } & import('..').MenuGroupProps & object & {
9
9
  className: string | ClassNameComponent<MenuGroupInterface> | undefined;
10
10
  }) => Record<"menuGroup" | "groupLabel", string>;
11
- export declare const useMenuGroupStyle: (states: object & import('../interfaces/menu-group.interface').MenuGroupProps & {
11
+ export declare const useMenuGroupStyle: (states: object & import('..').MenuGroupProps & {
12
12
  className?: string | ClassNameComponent<MenuGroupInterface> | undefined;
13
13
  }) => Record<"menuGroup" | "groupLabel", string>;
14
14
  //# sourceMappingURL=menu-group.style.d.ts.map
@@ -1,39 +1,83 @@
1
1
  import { ClassNameComponent } from '../utils';
2
2
  import { MenuItemInterface } from '../interfaces/menu-item.interface';
3
- export declare const menuItemStyle: (states: {
3
+ export declare const menuItemStyle: (states: (({
4
4
  label: any;
5
- value: any;
5
+ children: any;
6
6
  leadingIcon: any;
7
7
  trailingIcon: any;
8
8
  disabled: any;
9
- selected: any;
10
9
  variant: any;
11
- onItemSelect: any;
10
+ onClick: any;
11
+ onToggle: any;
12
+ activated: any;
13
+ href: any;
14
+ } | {
15
+ label: any;
12
16
  children: any;
13
- } & {
17
+ leadingIcon: any;
18
+ trailingIcon: any;
19
+ disabled: any;
20
+ variant: any;
21
+ onClick: any;
22
+ onToggle: any;
23
+ activated: any;
24
+ href: any;
25
+ }) & (({
14
26
  label?: string;
15
- value: string | number;
27
+ children?: React.ReactNode;
16
28
  leadingIcon?: any;
17
29
  trailingIcon?: any;
18
30
  disabled?: boolean;
19
- selected?: boolean;
20
31
  variant?: "standard" | "vibrant";
21
- onItemSelect?: (value: string | number) => void;
32
+ onClick?: (e?: React.MouseEvent) => void;
33
+ onToggle?: (activated: boolean) => void;
34
+ activated?: boolean;
35
+ } & {
36
+ href?: string;
37
+ }) | ({
38
+ label?: string;
22
39
  children?: React.ReactNode;
23
- } & Record<string, any> & {
40
+ leadingIcon?: any;
41
+ trailingIcon?: any;
42
+ disabled?: boolean;
43
+ variant?: "standard" | "vibrant";
44
+ onClick?: (e?: React.MouseEvent) => void;
45
+ onToggle?: (activated: boolean) => void;
46
+ activated?: boolean;
47
+ } & {
48
+ href?: never;
49
+ }))) & {
50
+ isActive: boolean;
51
+ } & {
24
52
  className: string | ClassNameComponent<MenuItemInterface> | undefined;
25
53
  }) => Record<"leadingIcon" | "trailingIcon" | "selectedItem" | "menuItem" | "itemLabel" | "itemIcon", string>;
26
- export declare const useMenuItemStyle: (states: Record<string, any> & {
54
+ export declare const useMenuItemStyle: (states: {
55
+ isActive: boolean;
56
+ } & ((({
27
57
  label?: string;
28
- value: string | number;
58
+ children?: React.ReactNode;
29
59
  leadingIcon?: any;
30
60
  trailingIcon?: any;
31
61
  disabled?: boolean;
32
- selected?: boolean;
33
62
  variant?: "standard" | "vibrant";
34
- onItemSelect?: (value: string | number) => void;
63
+ onClick?: (e?: React.MouseEvent) => void;
64
+ onToggle?: (activated: boolean) => void;
65
+ activated?: boolean;
66
+ } & {
67
+ href?: string;
68
+ }) | ({
69
+ label?: string;
35
70
  children?: React.ReactNode;
71
+ leadingIcon?: any;
72
+ trailingIcon?: any;
73
+ disabled?: boolean;
74
+ variant?: "standard" | "vibrant";
75
+ onClick?: (e?: React.MouseEvent) => void;
76
+ onToggle?: (activated: boolean) => void;
77
+ activated?: boolean;
36
78
  } & {
79
+ href?: never;
80
+ })) & {
37
81
  className?: string | ClassNameComponent<MenuItemInterface> | undefined;
38
- }) => Record<"leadingIcon" | "trailingIcon" | "selectedItem" | "menuItem" | "itemLabel" | "itemIcon", string>;
82
+ })) => Record<"leadingIcon" | "trailingIcon" | "selectedItem" | "menuItem" | "itemLabel" | "itemIcon", string>;
39
83
  //# sourceMappingURL=menu-item.style.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"menu-item.style.d.ts","sourceRoot":"","sources":["../../../src/lib/styles/menu-item.style.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAuCtE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;6GAGzB,CAAC;AACF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;6GAG5B,CAAC"}
1
+ {"version":3,"file":"menu-item.style.d.ts","sourceRoot":"","sources":["../../../src/lib/styles/menu-item.style.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AA+BtE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBA5BxB,CAAC;;;;;;;;;;;;gBAAD,CAAC;;;;;;;;;6GA+BF,CAAC;AACF,eAAO,MAAM,gBAAgB;;;;;;;;;gBAhC3B,CAAC;;;;;;;;;;;;gBAAD,CAAC;;;;;;;8GAmCF,CAAC"}
@@ -3,7 +3,6 @@ import { MenuInterface } from '../interfaces';
3
3
  export declare const menuStyle: (states: {
4
4
  children: any;
5
5
  selected: any;
6
- onItemSelect: any;
7
6
  className: any;
8
7
  variant: any;
9
8
  } & import('..').MenuProps & {
@@ -1 +1 @@
1
- {"version":3,"file":"menu.style.d.ts","sourceRoot":"","sources":["../../../src/lib/styles/menu.style.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAoB9C,eAAO,MAAM,SAAS;;;;;;;;;;4BAAuD,CAAC;AAE9E,eAAO,MAAM,YAAY;;;;4BAGxB,CAAC"}
1
+ {"version":3,"file":"menu.style.d.ts","sourceRoot":"","sources":["../../../src/lib/styles/menu.style.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAoB9C,eAAO,MAAM,SAAS;;;;;;;;;4BAAuD,CAAC;AAE9E,eAAO,MAAM,YAAY;;;;4BAGxB,CAAC"}
@@ -43,13 +43,9 @@ export declare const textFieldStyle: (states: {
43
43
  style?: React.CSSProperties;
44
44
  variant?: import('..').TextFieldVariant;
45
45
  options?: Array<{
46
- label: string;
47
46
  value: string | number;
48
- leadingIcon?: any;
49
- trailingIcon?: any;
50
- disabled?: boolean;
51
47
  type?: "divider" | "headline";
52
- }>;
48
+ } & import('..').MenuItemInterface["props"]>;
53
49
  type?: "text" | "password" | "number" | "date" | "select";
54
50
  autoComplete?: "on" | "off" | string;
55
51
  autoFocus?: boolean;
@@ -77,13 +73,9 @@ export declare const useTextFieldStyle: (states: import('..').TextFieldStates &
77
73
  style?: React.CSSProperties;
78
74
  variant?: import('..').TextFieldVariant;
79
75
  options?: Array<{
80
- label: string;
81
76
  value: string | number;
82
- leadingIcon?: any;
83
- trailingIcon?: any;
84
- disabled?: boolean;
85
77
  type?: "divider" | "headline";
86
- }>;
78
+ } & import('..').MenuItemInterface["props"]>;
87
79
  type?: "text" | "password" | "number" | "date" | "select";
88
80
  autoComplete?: "on" | "off" | string;
89
81
  autoFocus?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"text-field.style.d.ts","sourceRoot":"","sources":["../../../src/lib/styles/text-field.style.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAmGnD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBA3ErB,CAAL;oBAAuB,CAAC;gBAAmB,CAAC;YACtC,CAAC;;;;;;;;;;mKA6EP,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;mBAhFxB,CAAL;oBAAuB,CAAC;gBAAmB,CAAC;YACtC,CAAC;;;;;;;;;;mKAkFP,CAAC"}
1
+ {"version":3,"file":"text-field.style.d.ts","sourceRoot":"","sources":["../../../src/lib/styles/text-field.style.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAmGnD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA3EgB,CAAA;;;;;;;;;;mKA8E1C,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;YAhFa,CAAA;;;;;;;;;;mKAmF1C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@udixio/ui-react",
3
- "version": "2.10.2",
3
+ "version": "2.10.4",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -21,7 +21,6 @@ export type ContextMenuProps = {
21
21
  export const ContextMenu = ({
22
22
  trigger,
23
23
  children,
24
- onItemSelect,
25
24
  ...menuProps
26
25
  }: ReactProps<ContextMenuProps>) => {
27
26
  const [contextMenu, setContextMenu] = useState<{
@@ -42,9 +41,8 @@ export const ContextMenu = ({
42
41
  setContextMenu(null);
43
42
  };
44
43
 
45
- const handleSelect = (val: string | number) => {
44
+ const handleSelect = () => {
46
45
  handleClose();
47
- onItemSelect?.(val);
48
46
  };
49
47
 
50
48
  useEffect(() => {
@@ -101,7 +99,7 @@ export const ContextMenu = ({
101
99
  position="bottom right"
102
100
  onClick={(e) => e.stopPropagation()}
103
101
  >
104
- <Menu onItemSelect={handleSelect} {...menuProps}>
102
+ <Menu onClick={handleSelect} {...menuProps}>
105
103
  {children}
106
104
  </Menu>
107
105
  </AnchorPositioner>
@@ -1,4 +1,4 @@
1
- import React, { useEffect, useRef } from 'react';
1
+ import React, { useRef } from 'react';
2
2
  import { MenuInterface } from '../interfaces/menu.interface';
3
3
  import { useMenuStyle } from '../styles/menu.style';
4
4
  import { classNames } from '../utils';
@@ -22,8 +22,6 @@ import { MenuGroup } from './MenuGroup';
22
22
  */
23
23
  export const Menu = ({
24
24
  children,
25
- selected,
26
- onItemSelect,
27
25
  className,
28
26
  variant = 'standard',
29
27
  ...restProps
@@ -34,8 +32,6 @@ export const Menu = ({
34
32
  );
35
33
  const styles = useMenuStyle({
36
34
  children,
37
- selected,
38
- onItemSelect,
39
35
  className,
40
36
  variant,
41
37
  hasGroups,
@@ -44,18 +40,6 @@ export const Menu = ({
44
40
 
45
41
  const listRef = useRef<HTMLDivElement>(null);
46
42
 
47
- // Scroll to selected item on open
48
- useEffect(() => {
49
- if (listRef.current) {
50
- const selectedEl = listRef.current.querySelector(
51
- '[aria-selected="true"]',
52
- ) as HTMLElement;
53
- if (selectedEl) {
54
- selectedEl.scrollIntoView({ block: 'nearest' });
55
- }
56
- }
57
- }, []);
58
-
59
43
  const renderChildren = (nodes: React.ReactNode): React.ReactNode => {
60
44
  return React.Children.map(nodes, (child) => {
61
45
  if (!React.isValidElement(child)) return child;
@@ -70,17 +54,8 @@ export const Menu = ({
70
54
  }
71
55
 
72
56
  if (child.type === MenuItem) {
73
- const childValue = (child.props as any).value;
74
- const isSelected = Array.isArray(selected)
75
- ? selected.includes(childValue)
76
- : selected === childValue;
77
-
78
57
  return React.cloneElement(child, {
79
- selected: isSelected,
80
58
  variant: variant,
81
- onItemSelect: (val: string | number) => {
82
- onItemSelect?.(val);
83
- },
84
59
  } as any);
85
60
  }
86
61
 
@@ -1,9 +1,9 @@
1
- import React, { useRef, useState } from 'react';
1
+ import React, { useEffect, useRef, useState } from 'react';
2
2
  import { Icon } from '../icon';
3
3
  import { classNames, ReactProps } from '../utils';
4
4
  import { MenuItemInterface } from '../interfaces/menu-item.interface';
5
5
  import { useMenuItemStyle } from '../styles/menu-item.style';
6
- import { faChevronRight } from '@fortawesome/free-solid-svg-icons';
6
+ import { faCheck, faChevronRight } from '@fortawesome/free-solid-svg-icons';
7
7
  import { AnchorPositioner } from './AnchorPositioner';
8
8
  import { State } from '../effects';
9
9
 
@@ -15,14 +15,14 @@ import { State } from '../effects';
15
15
  export const MenuItem = ({
16
16
  label,
17
17
  children,
18
- value,
19
18
  leadingIcon,
20
19
  trailingIcon,
21
20
  disabled,
22
- selected,
23
- variant,
21
+ variant = 'standard',
22
+ href,
24
23
  onClick,
25
- onItemSelect, // Injected by Menu
24
+ onToggle,
25
+ activated = false,
26
26
  className,
27
27
  ...restProps
28
28
  }: ReactProps<MenuItemInterface>) => {
@@ -47,18 +47,29 @@ export const MenuItem = ({
47
47
  const labelContent = contentChildren.length > 0 ? contentChildren : label;
48
48
 
49
49
  const [isSubMenuOpen, setIsSubMenuOpen] = useState(false);
50
- const itemRef = useRef<HTMLDivElement>(null);
50
+ const [isActive, setIsActive] = useState(activated);
51
+
52
+ if (isActive) {
53
+ leadingIcon = faCheck;
54
+ }
55
+
56
+ const itemRef = useRef<HTMLButtonElement | HTMLAnchorElement>(null);
51
57
  const closeTimerRef = useRef<any>(null);
52
58
 
59
+ useEffect(() => {
60
+ setIsActive(activated);
61
+ }, [activated]);
62
+
53
63
  const styles = useMenuItemStyle({
54
64
  variant,
55
65
  disabled,
56
- selected,
57
66
  className,
58
- value,
67
+ activated: isActive,
68
+ isActive,
59
69
  });
60
70
 
61
71
  const handleClick = (e: React.MouseEvent) => {
72
+ console.log('refrefd', disabled, subMenuElement, onToggle);
62
73
  if (disabled) {
63
74
  e.preventDefault();
64
75
  return;
@@ -69,9 +80,12 @@ export const MenuItem = ({
69
80
  return;
70
81
  }
71
82
 
72
- onClick?.(e);
73
- if (onItemSelect) {
74
- onItemSelect(value);
83
+ if (onToggle) {
84
+ setIsActive(!isActive);
85
+ onToggle(!isActive);
86
+ } else {
87
+ console.log('click', onClick);
88
+ onClick?.(e);
75
89
  }
76
90
  };
77
91
 
@@ -104,20 +118,23 @@ export const MenuItem = ({
104
118
  const effectiveTrailingIcon =
105
119
  trailingIcon ?? (subMenuElement ? faChevronRight : undefined);
106
120
 
121
+ const ElementType = href ? 'a' : 'button';
122
+
107
123
  return (
108
- <div
109
- ref={itemRef}
110
- className={styles.menuItem} // Added relative and overflow-hidden for State
124
+ <ElementType
125
+ ref={itemRef as any}
126
+ href={href}
127
+ className={styles.menuItem}
111
128
  onClick={handleClick}
112
129
  onMouseEnter={handleMouseEnter}
113
130
  onMouseLeave={handleMouseLeave}
114
131
  role="option"
115
132
  aria-haspopup={!!subMenuElement}
116
133
  aria-expanded={isSubMenuOpen}
117
- aria-selected={selected}
134
+ aria-pressed={onToggle ? isActive : undefined}
118
135
  tabIndex={disabled ? -1 : 0}
136
+ disabled={!href ? disabled : undefined}
119
137
  onKeyDown={(e) => {
120
- // ... key handlers ...
121
138
  if (e.key === 'Enter' || e.key === ' ') {
122
139
  e.preventDefault();
123
140
  if (subMenuElement) {
@@ -135,14 +152,15 @@ export const MenuItem = ({
135
152
  e.stopPropagation();
136
153
  }
137
154
  }}
138
- {...restProps}
155
+ {...(restProps as any)}
139
156
  >
140
157
  <State
141
158
  className="absolute inset-0 pointer-events-none"
142
159
  colorName={classNames(
143
160
  // Match text color for state layer usually
144
- variant === 'vibrant' ? 'on-tertiary-container' : 'on-surface',
145
- selected && 'on-secondary-container',
161
+ variant === 'vibrant' || isActive
162
+ ? 'on-tertiary-container'
163
+ : 'on-secondary-container',
146
164
  )}
147
165
  stateClassName={'state-ripple-group-[menu-item]'}
148
166
  />
@@ -192,6 +210,6 @@ export const MenuItem = ({
192
210
  </div>
193
211
  </AnchorPositioner>
194
212
  )}
195
- </div>
213
+ </ElementType>
196
214
  );
197
215
  };