@peculiar/react-components 0.2.3 → 0.3.0

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 (59) hide show
  1. package/dist/cjs/Menu/menu.js +34 -64
  2. package/dist/cjs/Menu/menu.js.map +1 -1
  3. package/dist/cjs/MenuList/index.js +10 -0
  4. package/dist/cjs/MenuList/index.js.map +1 -0
  5. package/dist/cjs/MenuList/menu_item.js +76 -0
  6. package/dist/cjs/MenuList/menu_item.js.map +1 -0
  7. package/dist/cjs/MenuList/menu_list.js +123 -0
  8. package/dist/cjs/MenuList/menu_list.js.map +1 -0
  9. package/dist/cjs/MenuList/sub_menu_item.js +65 -0
  10. package/dist/cjs/MenuList/sub_menu_item.js.map +1 -0
  11. package/dist/cjs/icons/arrow_rigth.js +22 -0
  12. package/dist/cjs/icons/arrow_rigth.js.map +1 -0
  13. package/dist/cjs/icons/index.js +3 -1
  14. package/dist/cjs/icons/index.js.map +1 -1
  15. package/dist/cjs/styles/default_theme.js +2 -2
  16. package/dist/cjs/styles/utils.js +1 -1
  17. package/dist/cjs/styles/utils.js.map +1 -1
  18. package/dist/esm/Menu/menu.js +34 -64
  19. package/dist/esm/Menu/menu.js.map +1 -1
  20. package/dist/esm/MenuList/index.js +4 -0
  21. package/dist/esm/MenuList/index.js.map +1 -0
  22. package/dist/esm/MenuList/menu_item.js +70 -0
  23. package/dist/esm/MenuList/menu_item.js.map +1 -0
  24. package/dist/esm/MenuList/menu_list.js +117 -0
  25. package/dist/esm/MenuList/menu_list.js.map +1 -0
  26. package/dist/esm/MenuList/sub_menu_item.js +59 -0
  27. package/dist/esm/MenuList/sub_menu_item.js.map +1 -0
  28. package/dist/esm/icons/arrow_rigth.js +15 -0
  29. package/dist/esm/icons/arrow_rigth.js.map +1 -0
  30. package/dist/esm/icons/index.js +1 -0
  31. package/dist/esm/icons/index.js.map +1 -1
  32. package/dist/esm/styles/default_theme.js +2 -2
  33. package/dist/esm/styles/utils.js +1 -1
  34. package/dist/esm/styles/utils.js.map +1 -1
  35. package/dist/esnext/Menu/menu.js +30 -59
  36. package/dist/esnext/Menu/menu.js.map +1 -1
  37. package/dist/esnext/MenuList/index.js +4 -0
  38. package/dist/esnext/MenuList/index.js.map +1 -0
  39. package/dist/esnext/MenuList/menu_item.js +70 -0
  40. package/dist/esnext/MenuList/menu_item.js.map +1 -0
  41. package/dist/esnext/MenuList/menu_list.js +94 -0
  42. package/dist/esnext/MenuList/menu_list.js.map +1 -0
  43. package/dist/esnext/MenuList/sub_menu_item.js +37 -0
  44. package/dist/esnext/MenuList/sub_menu_item.js.map +1 -0
  45. package/dist/esnext/icons/arrow_rigth.js +4 -0
  46. package/dist/esnext/icons/arrow_rigth.js.map +1 -0
  47. package/dist/esnext/icons/index.js +1 -0
  48. package/dist/esnext/icons/index.js.map +1 -1
  49. package/dist/esnext/styles/default_theme.js +2 -2
  50. package/dist/esnext/styles/utils.js +1 -0
  51. package/dist/esnext/styles/utils.js.map +1 -1
  52. package/dist/types/Menu/menu.d.ts +10 -1
  53. package/dist/types/MenuList/index.d.ts +3 -0
  54. package/dist/types/MenuList/menu_item.d.ts +33 -0
  55. package/dist/types/MenuList/menu_list.d.ts +20 -0
  56. package/dist/types/MenuList/sub_menu_item.d.ts +6 -0
  57. package/dist/types/icons/arrow_rigth.d.ts +4 -0
  58. package/dist/types/icons/index.d.ts +1 -0
  59. package/package.json +2 -2
@@ -22,47 +22,14 @@ var __rest = (this && this.__rest) || function (s, e) {
22
22
  };
23
23
  import React from 'react';
24
24
  import { Popover } from '../Popover';
25
- import { Typography } from '../Typography';
25
+ import { MenuList, MenuItem, SubMenuItem } from '../MenuList';
26
26
  import { css, cx } from '../styles';
27
- var stylesMenuList = function () { return css({
28
- label: 'Menu-list',
29
- padding: 'var(--pv-size-base-2) 0px',
30
- outline: 'none',
31
- }); };
32
- var stylesMenuItem = function () { return css({
33
- label: 'Menu-item',
34
- padding: '0px var(--pv-size-base-2)',
35
- fontFamily: 'inherit',
36
- outline: 'none',
37
- width: '100%',
38
- height: 'var(--pv-size-base-7)',
39
- display: 'flex',
40
- textAlign: 'left',
41
- alignItems: 'center',
42
- justifyContent: 'flex-start',
43
- textDecoration: 'none',
44
- userSelect: 'none',
45
- cursor: 'pointer',
46
- transition: 'background-color 200ms',
47
- backgroundColor: 'transparent',
48
- border: 'none',
49
- color: 'var(--pv-color-black)',
50
- '&:not(:disabled)': {
51
- '&:hover': {
52
- backgroundColor: 'var(--pv-color-gray-3)',
53
- },
54
- '&:focus': {
55
- backgroundColor: 'var(--pv-color-gray-4)',
56
- },
57
- '&:active': {
58
- backgroundColor: 'var(--pv-color-gray-5)',
59
- },
60
- },
61
- '&:disabled': {
62
- color: 'var(--pv-color-gray-7)',
63
- cursor: 'not-allowed',
64
- },
65
- }); };
27
+ /**
28
+ *
29
+ */
30
+ /**
31
+ * Styles.
32
+ */
66
33
  var stylesPopper = function () { return css({
67
34
  label: 'Menu-popover',
68
35
  '&[data-popper-placement^="bottom"]': {
@@ -78,11 +45,14 @@ var stylesPopper = function () { return css({
78
45
  margin: '0px var(--pv-size-base-3)',
79
46
  },
80
47
  }); };
48
+ /**
49
+ *
50
+ */
81
51
  export var Menu = React.forwardRef(function (props, ref) {
82
- var _a, _b;
83
- var children = props.children, options = props.options, onClose = props.onClose, _c = props.popoverProps, popoverProps = _c === void 0 ? {} : _c;
84
- var className = popoverProps.className, _d = popoverProps.modalProps, modalProps = _d === void 0 ? {} : _d;
85
- var _e = React.useState(false), open = _e[0], setOpen = _e[1];
52
+ var _a;
53
+ var children = props.children, options = props.options, onClose = props.onClose, _b = props.popoverProps, popoverProps = _b === void 0 ? {} : _b;
54
+ var className = popoverProps.className, _c = popoverProps.modalProps, modalProps = _c === void 0 ? {} : _c;
55
+ var _d = React.useState(false), open = _d[0], setOpen = _d[1];
86
56
  var childRef = React.useRef(null);
87
57
  var handleChildClick = function () {
88
58
  setOpen(true);
@@ -94,14 +64,28 @@ export var Menu = React.forwardRef(function (props, ref) {
94
64
  }
95
65
  };
96
66
  var handleMenuItemClick = function (option) { return function (event) {
97
- setOpen(false);
98
67
  if (option.onClick) {
99
68
  option.onClick(event);
100
69
  }
101
- if (onClose) {
102
- onClose();
103
- }
70
+ handlePopoverClose();
104
71
  }; };
72
+ var handleKeyDown = function (event) {
73
+ if (event.key === 'Tab') {
74
+ event.preventDefault();
75
+ handlePopoverClose();
76
+ }
77
+ };
78
+ var renderOption = function (option, index) {
79
+ var component = option.component, disabled = option.disabled, label = option.label, subOptions = option.subOptions, classNameProp = option.className, textVariantProp = option.textVariant, onClick = option.onClick, other = __rest(option, ["component", "disabled", "label", "subOptions", "className", "textVariant", "onClick"]);
80
+ if (subOptions && subOptions.length) {
81
+ return (React.createElement(SubMenuItem, __assign({ key: index, component: component, textVariant: textVariantProp, disabled: disabled, label: label, className: classNameProp }, other), subOptions.map(renderOption)));
82
+ }
83
+ return (React.createElement(MenuItem
84
+ // eslint-disable-next-line react/no-array-index-key
85
+ , __assign({
86
+ // eslint-disable-next-line react/no-array-index-key
87
+ key: index, component: component, textVariant: textVariantProp, disabled: disabled, onClick: handleMenuItemClick(option), className: classNameProp }, other), label));
88
+ };
105
89
  var childrenProps = {
106
90
  ref: childRef,
107
91
  onClick: handleChildClick,
@@ -110,25 +94,11 @@ export var Menu = React.forwardRef(function (props, ref) {
110
94
  };
111
95
  return (React.createElement(React.Fragment, null,
112
96
  React.cloneElement(children, childrenProps),
113
- React.createElement(Popover, __assign({}, popoverProps, { modalProps: __assign(__assign({}, modalProps), { disableAutoFocus: true }), ref: ref, open: open, anchorEl: childRef.current, onClose: handlePopoverClose, className: cx((_a = {},
97
+ React.createElement(Popover, __assign({}, popoverProps, { modalProps: __assign(__assign({}, modalProps), { disableAutoFocus: false }), ref: ref, open: open, anchorEl: childRef.current, onClose: handlePopoverClose, onKeyDown: handleKeyDown, className: cx((_a = {},
114
98
  _a[stylesPopper()] = true,
115
99
  _a[className] = !!className,
116
100
  _a)) }),
117
- React.createElement("div", { role: "menu", tabIndex: -1, className: cx((_b = {},
118
- _b[stylesMenuList()] = true,
119
- _b)) }, options.map(function (option, index) {
120
- var _a;
121
- var component = option.component, disabled = option.disabled, label = option.label, classNameProp = option.className, textVariantProp = option.textVariant, other = __rest(option, ["component", "disabled", "label", "className", "textVariant"]);
122
- var Component = component || 'button';
123
- var textVariant = textVariantProp || 'b3';
124
- return (React.createElement(Component, __assign({}, other, {
125
- // eslint-disable-next-line react/no-array-index-key
126
- key: index, type: "button", role: "menuitem", className: cx((_a = {},
127
- _a[stylesMenuItem()] = true,
128
- _a[classNameProp] = !!classNameProp,
129
- _a)), onClick: handleMenuItemClick(option), disabled: disabled }),
130
- React.createElement(Typography, { variant: textVariant, color: "inherit", component: "span" }, label)));
131
- })))));
101
+ React.createElement(MenuList, null, options.map(renderOption)))));
132
102
  });
133
103
  Menu.displayName = 'Menu';
134
104
  Menu.defaultProps = {};
@@ -1 +1 @@
1
- {"version":3,"file":"menu.js","sourceRoot":"","sources":["../../../src/Menu/menu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"menu.js","sourceRoot":"","sources":["../../../src/Menu/menu.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAgB,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,GAAG,EAAE,EAAE,EAAkB,MAAM,WAAW,CAAC;AAyCpD;;GAEG;AAEH;;GAEG;AACH,IAAM,YAAY,GAAG,cAAM,OAAA,GAAG,CAAC;IAC7B,KAAK,EAAE,cAAc;IACrB,oCAAoC,EAAE;QACpC,MAAM,EAAE,2BAA2B;KACpC;IACD,iCAAiC,EAAE;QACjC,MAAM,EAAE,2BAA2B;KACpC;IACD,mCAAmC,EAAE;QACnC,MAAM,EAAE,2BAA2B;KACpC;IACD,kCAAkC,EAAE;QAClC,MAAM,EAAE,2BAA2B;KACpC;CACF,CAAC,EAdyB,CAczB,CAAC;AACH;;GAEG;AAEH,MAAM,CAAC,IAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAA4B,UAAC,KAAK,EAAE,GAAG;;IAEvE,IAAA,QAAQ,GAIN,KAAK,SAJC,EACR,OAAO,GAGL,KAAK,QAHA,EACP,OAAO,GAEL,KAAK,QAFA,EACP,KACE,KAAK,aADU,EAAjB,YAAY,mBAAG,EAAE,KAAA,CACT;IAER,IAAA,SAAS,GAEP,YAAY,UAFL,EACT,KACE,YAAY,WADC,EAAf,UAAU,mBAAG,EAAE,KAAA,CACA;IACX,IAAA,KAAkB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAtC,IAAI,QAAA,EAAE,OAAO,QAAyB,CAAC;IAC9C,IAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEpC,IAAM,gBAAgB,GAAG;QACvB,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC;IAEF,IAAM,kBAAkB,GAAG;QACzB,OAAO,CAAC,KAAK,CAAC,CAAC;QAEf,IAAI,OAAO,EAAE;YACX,OAAO,EAAE,CAAC;SACX;IACH,CAAC,CAAC;IAEF,IAAM,mBAAmB,GAAG,UAC1B,MAAmB,IAChB,OAAA,UACH,KAA0C;QAE1C,IAAI,MAAM,CAAC,OAAO,EAAE;YAClB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACvB;QAED,kBAAkB,EAAE,CAAC;IACvB,CAAC,EARI,CAQJ,CAAC;IAEF,IAAM,aAAa,GAAG,UAAC,KAA0C;QAC/D,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;YACvB,KAAK,CAAC,cAAc,EAAE,CAAC;YAEvB,kBAAkB,EAAE,CAAC;SACtB;IACH,CAAC,CAAC;IAEF,IAAM,YAAY,GAAG,UAAC,MAAuB,EAAE,KAAa;QAExD,IAAA,SAAS,GAQP,MAAM,UARC,EACT,QAAQ,GAON,MAAM,SAPA,EACR,KAAK,GAMH,MAAM,MANH,EACL,UAAU,GAKR,MAAM,WALE,EACC,aAAa,GAItB,MAAM,UAJgB,EACX,eAAe,GAG1B,MAAM,YAHoB,EAC5B,OAAO,GAEL,MAAM,QAFD,EACJ,KAAK,UACN,MAAM,EATJ,uFASL,CADS,CACC;QAEX,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE;YACnC,OAAO,CACL,oBAAC,WAAW,aACV,GAAG,EAAE,KAAK,EACV,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,eAAe,EAC5B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,aAAa,IACpB,KAAK,GAER,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CACjB,CACf,CAAC;SACH;QAED,OAAO,CACL,oBAAC,QAAQ;QACP,oDAAoD;;YAApD,oDAAoD;YACpD,GAAG,EAAE,KAAK,EACV,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,eAAe,EAC5B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC,EACpC,SAAS,EAAE,aAAa,IACpB,KAAK,GAER,KAAK,CACG,CACZ,CAAC;IACJ,CAAC,CAAC;IAEF,IAAM,aAAa,GAA4E;QAC7F,GAAG,EAAE,QAAQ;QACb,OAAO,EAAE,gBAAgB;QACzB,eAAe,EAAE,MAAM;QACvB,eAAe,EAAE,MAAM,CAAC,IAAI,CAAQ;KACrC,CAAC;IAEF,OAAO,CACL;QACG,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC;QAC5C,oBAAC,OAAO,eACF,YAAY,IAChB,UAAU,wBACL,UAAU,KACb,gBAAgB,EAAE,KAAK,KAEzB,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAC1B,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,aAAa,EACxB,SAAS,EAAE,EAAE;gBACX,GAAC,YAAY,EAAE,IAAG,IAAI;gBACtB,GAAC,SAAS,IAAG,CAAC,CAAC,SAAS;oBACxB;YAEF,oBAAC,QAAQ,QACN,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CACjB,CACH,CACT,CACJ,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;AAE1B,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { MenuList } from './menu_list';
2
+ export { MenuItem } from './menu_item';
3
+ export { SubMenuItem } from './sub_menu_item';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/MenuList/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,70 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __rest = (this && this.__rest) || function (s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
+ t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
+ t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
23
+ import React from 'react';
24
+ import { Typography } from '../Typography';
25
+ import { css, cx } from '../styles';
26
+ /**
27
+ *
28
+ */
29
+ /**
30
+ * Styles.
31
+ */
32
+ var stylesBase = function (props) { return css(__assign({ label: 'MenuItem', padding: '0px var(--pv-size-base-2)', fontFamily: 'inherit', outline: 'none', width: '100%', height: 'var(--pv-size-base-7)', display: 'flex', textAlign: 'left', alignItems: 'center', justifyContent: 'space-between', textDecoration: 'none', userSelect: 'none', cursor: 'pointer', transition: 'background-color 200ms', backgroundColor: 'transparent', border: 'none', color: 'var(--pv-color-black)', boxSizing: 'border-box', '&:hover': {
33
+ backgroundColor: 'var(--pv-color-gray-3)',
34
+ }, '&:focus': {
35
+ backgroundColor: 'var(--pv-color-gray-4)',
36
+ }, '&:active': {
37
+ backgroundColor: 'var(--pv-color-gray-5)',
38
+ } }, (props.disabled && {
39
+ color: 'var(--pv-color-gray-7)',
40
+ cursor: 'not-allowed',
41
+ pointerEvents: 'none',
42
+ }))); };
43
+ /**
44
+ *
45
+ */
46
+ export var MenuItem = React.forwardRef(function (props, ref) {
47
+ var _a;
48
+ var component = props.component, children = props.children, className = props.className, disabled = props.disabled, textVariantProp = props.textVariant, endIcon = props.endIcon, onClick = props.onClick, other = __rest(props, ["component", "children", "className", "disabled", "textVariant", "endIcon", "onClick"]);
49
+ var Component = component || 'li';
50
+ var textVariant = textVariantProp || 'b3';
51
+ var handleKeyDown = function (event) {
52
+ // Keyboard accessibility for non interactive elements
53
+ if (event.target === event.currentTarget
54
+ && event.key === 'Enter'
55
+ && !disabled) {
56
+ event.preventDefault();
57
+ if (onClick) {
58
+ onClick(event);
59
+ }
60
+ }
61
+ };
62
+ return (React.createElement(Component, __assign({ ref: ref, tabIndex: -1, role: "menuitem", className: cx((_a = {},
63
+ _a[stylesBase(props)] = true,
64
+ _a[className] = !!className,
65
+ _a)), "aria-disabled": disabled, onKeyDown: handleKeyDown, onClick: onClick }, other),
66
+ React.createElement(Typography, { variant: textVariant, color: "inherit", component: "span" }, children),
67
+ endIcon));
68
+ });
69
+ MenuItem.displayName = 'MenuItem';
70
+ //# sourceMappingURL=menu_item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu_item.js","sourceRoot":"","sources":["../../../src/MenuList/menu_item.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,EAAE,EAAkB,MAAM,WAAW,CAAC;AA+BpD;;GAEG;AAEH;;GAEG;AACH,IAAM,UAAU,GAAG,UAAC,KAAuB,IAAK,OAAA,GAAG,YACjD,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,2BAA2B,EACpC,UAAU,EAAE,SAAS,EACrB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,QAAQ,EACpB,cAAc,EAAE,eAAe,EAC/B,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,wBAAwB,EACpC,eAAe,EAAE,aAAa,EAC9B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,uBAAuB,EAC9B,SAAS,EAAE,YAAY,EACvB,SAAS,EAAE;QACT,eAAe,EAAE,wBAAwB;KAC1C,EACD,SAAS,EAAE;QACT,eAAe,EAAE,wBAAwB;KAC1C,EACD,UAAU,EAAE;QACV,eAAe,EAAE,wBAAwB;KAC1C,IACE,CAAC,KAAK,CAAC,QAAQ,IAAI;IACpB,KAAK,EAAE,wBAAwB;IAC/B,MAAM,EAAE,aAAa;IACrB,aAAa,EAAE,MAAM;CACtB,CAAC,EACF,EAjC8C,CAiC9C,CAAC;AACH;;GAEG;AAEH,MAAM,CAAC,IAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAqB,UAAC,KAAK,EAAE,GAAG;;IAEpE,IAAA,SAAS,GAQP,KAAK,UARE,EACT,QAAQ,GAON,KAAK,SAPC,EACR,SAAS,GAMP,KAAK,UANE,EACT,QAAQ,GAKN,KAAK,SALC,EACK,eAAe,GAI1B,KAAK,YAJqB,EAC5B,OAAO,GAGL,KAAK,QAHA,EACP,OAAO,GAEL,KAAK,QAFA,EACJ,KAAK,UACN,KAAK,EATH,uFASL,CADS,CACA;IACV,IAAM,SAAS,GAAG,SAAS,IAAI,IAAI,CAAC;IACpC,IAAM,WAAW,GAAG,eAAe,IAAI,IAAI,CAAC;IAE5C,IAAM,aAAa,GAAG,UAAC,KAAyC;QAC9D,sDAAsD;QACtD,IACE,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,aAAa;eACjC,KAAK,CAAC,GAAG,KAAK,OAAO;eACrB,CAAC,QAAQ,EACZ;YACA,KAAK,CAAC,cAAc,EAAE,CAAC;YAEvB,IAAI,OAAO,EAAE;gBACX,OAAO,CAAC,KAAY,CAAC,CAAC;aACvB;SACF;IACH,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,SAAS,aACR,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,CAAC,CAAC,EACZ,IAAI,EAAC,UAAU,EACf,SAAS,EAAE,EAAE;YACX,GAAC,UAAU,CAAC,KAAK,CAAC,IAAG,IAAI;YACzB,GAAC,SAAS,IAAG,CAAC,CAAC,SAAS;gBACxB,mBACa,QAAQ,EACvB,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,OAAO,IACZ,KAAK;QAET,oBAAC,UAAU,IACT,OAAO,EAAE,WAAW,EACpB,KAAK,EAAC,SAAS,EACf,SAAS,EAAC,MAAM,IAEf,QAAQ,CACE;QACZ,OAAO,CACE,CACb,CAAC;AACJ,CAAC,CAA0C,CAAC;AAE5C,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC"}
@@ -0,0 +1,117 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __rest = (this && this.__rest) || function (s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
+ t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
+ t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
23
+ import React from 'react';
24
+ import { css, cx } from '../styles';
25
+ import { useMergedRef, useEnhancedEffect } from '../hooks';
26
+ import { ownerDocument } from '../utils/owner_document';
27
+ function nextItem(list, item) {
28
+ if (list === item) {
29
+ return list.firstChild;
30
+ }
31
+ if (item && item.nextElementSibling) {
32
+ return item.nextElementSibling;
33
+ }
34
+ return null;
35
+ }
36
+ function previousItem(list, item) {
37
+ if (list === item) {
38
+ return list.firstChild;
39
+ }
40
+ if (item && item.previousElementSibling) {
41
+ return item.previousElementSibling;
42
+ }
43
+ return null;
44
+ }
45
+ function moveFocus(list, currentFocus, traversalFunction) {
46
+ var wrappedOnce = false;
47
+ var nextFocus = traversalFunction(list, currentFocus, false);
48
+ while (nextFocus) {
49
+ // Prevent infinite loop.
50
+ if (nextFocus === list.firstChild) {
51
+ if (wrappedOnce) {
52
+ return false;
53
+ }
54
+ wrappedOnce = true;
55
+ }
56
+ // Same logic as useAutocomplete.js
57
+ var nextFocusDisabled = nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';
58
+ if (!nextFocus.hasAttribute('tabindex')
59
+ || nextFocusDisabled) {
60
+ // Move to the next element.
61
+ nextFocus = traversalFunction(list, nextFocus);
62
+ }
63
+ else {
64
+ nextFocus.focus();
65
+ return true;
66
+ }
67
+ }
68
+ return false;
69
+ }
70
+ /**
71
+ *
72
+ */
73
+ /**
74
+ * Styles.
75
+ */
76
+ var stylesBase = function () { return css({
77
+ label: 'MenuList',
78
+ padding: 'var(--pv-size-base-2) 0px',
79
+ outline: 'none',
80
+ listStyle: 'none',
81
+ margin: 0,
82
+ }); };
83
+ /**
84
+ *
85
+ */
86
+ export var MenuList = React.forwardRef(function (props, ref) {
87
+ var _a;
88
+ var children = props.children, className = props.className, component = props.component, other = __rest(props, ["children", "className", "component"]);
89
+ var rootRef = React.useRef(null);
90
+ var multiRef = useMergedRef(rootRef, ref);
91
+ var Component = component || 'ul';
92
+ var handleKeyDown = function (event) {
93
+ var list = rootRef.current;
94
+ var key = event.key;
95
+ var currentFocus = ownerDocument(list).activeElement;
96
+ if (key === 'ArrowDown') {
97
+ // Prevent scroll of the page
98
+ event.preventDefault();
99
+ event.stopPropagation();
100
+ moveFocus(list, currentFocus, nextItem);
101
+ }
102
+ else if (key === 'ArrowUp') {
103
+ event.preventDefault();
104
+ event.stopPropagation();
105
+ moveFocus(list, currentFocus, previousItem);
106
+ }
107
+ };
108
+ useEnhancedEffect(function () {
109
+ rootRef.current.focus();
110
+ }, []);
111
+ return (React.createElement(Component, __assign({ ref: multiRef, role: "menu", tabIndex: -1, className: cx((_a = {},
112
+ _a[stylesBase()] = true,
113
+ _a[className] = !!className,
114
+ _a)), onKeyDown: handleKeyDown }, other), children));
115
+ });
116
+ MenuList.displayName = 'MenuList';
117
+ //# sourceMappingURL=menu_list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu_list.js","sourceRoot":"","sources":["../../../src/MenuList/menu_list.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __rest = (this && this.__rest) || function (s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
+ t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
+ t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
23
+ import React from 'react';
24
+ import { Popper } from '../Popper';
25
+ import { Box } from '../Box';
26
+ import { useMergedRef } from '../hooks';
27
+ import { ArrowRightIcon } from '../icons';
28
+ import { css } from '../styles';
29
+ import { MenuItem } from './menu_item';
30
+ import { MenuList } from './menu_list';
31
+ /**
32
+ *
33
+ */
34
+ /**
35
+ * Styles.
36
+ */
37
+ var stylesBase = function () { return css({
38
+ label: 'SubMenu-MenuList',
39
+ minWidth: '16px',
40
+ minHeight: '16px',
41
+ boxShadow: 'var(--pv-shadow-light-low)',
42
+ }); };
43
+ /**
44
+ *
45
+ */
46
+ export var SubMenuItem = React.forwardRef(function (props, ref) {
47
+ var label = props.label, children = props.children, other = __rest(props, ["label", "children"]);
48
+ var _a = React.useState(false), open = _a[0], setOpen = _a[1];
49
+ var rootRef = React.useRef(null);
50
+ var multiRef = useMergedRef(ref, rootRef);
51
+ var handleMouseEnter = React.useCallback(function () { return setOpen(true); }, []);
52
+ var handleMouseLeave = React.useCallback(function () { return setOpen(false); }, []);
53
+ return (React.createElement(MenuItem, __assign({}, other, { endIcon: React.createElement(ArrowRightIcon, null), ref: multiRef, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleMouseEnter }),
54
+ label,
55
+ React.createElement(Popper, { open: open, anchorEl: rootRef.current, placement: "right-start", disablePortal: true, onMouseLeave: handleMouseLeave },
56
+ React.createElement(Box, { component: MenuList, borderRadius: 4, background: "white", className: stylesBase() }, children))));
57
+ });
58
+ SubMenuItem.displayName = 'SubMenuItem';
59
+ //# sourceMappingURL=sub_menu_item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sub_menu_item.js","sourceRoot":"","sources":["../../../src/MenuList/sub_menu_item.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AASvC;;GAEG;AAEH;;GAEG;AACH,IAAM,UAAU,GAAG,cAAM,OAAA,GAAG,CAAC;IAC3B,KAAK,EAAE,kBAAkB;IACzB,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,4BAA4B;CACxC,CAAC,EALuB,CAKvB,CAAC;AACH;;GAEG;AAEH,MAAM,CAAC,IAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAwB,UAAC,KAAK,EAAE,GAAG;IAE1E,IAAA,KAAK,GAGH,KAAK,MAHF,EACL,QAAQ,GAEN,KAAK,SAFC,EACL,KAAK,UACN,KAAK,EAJH,qBAIL,CADS,CACA;IACJ,IAAA,KAAkB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAtC,IAAI,QAAA,EAAE,OAAO,QAAyB,CAAC;IAC9C,IAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAc,IAAI,CAAC,CAAC;IAChD,IAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAE5C,IAAM,gBAAgB,GAAG,KAAK,CAAC,WAAW,CAAC,cAAM,OAAA,OAAO,CAAC,IAAI,CAAC,EAAb,CAAa,EAAE,EAAE,CAAC,CAAC;IAEpE,IAAM,gBAAgB,GAAG,KAAK,CAAC,WAAW,CAAC,cAAM,OAAA,OAAO,CAAC,KAAK,CAAC,EAAd,CAAc,EAAE,EAAE,CAAC,CAAC;IAErE,OAAO,CACL,oBAAC,QAAQ,eACH,KAAK,IACT,OAAO,EAAE,oBAAC,cAAc,OAAG,EAC3B,GAAG,EAAE,QAAQ,EACb,YAAY,EAAE,gBAAgB,EAC9B,YAAY,EAAE,gBAAgB,EAC9B,OAAO,EAAE,gBAAgB;QAExB,KAAK;QACN,oBAAC,MAAM,IACL,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,OAAO,CAAC,OAAO,EACzB,SAAS,EAAC,aAAa,EACvB,aAAa,QACb,YAAY,EAAE,gBAAgB;YAE9B,oBAAC,GAAG,IACF,SAAS,EAAE,QAAQ,EACnB,YAAY,EAAE,CAAC,EACf,UAAU,EAAC,OAAO,EAClB,SAAS,EAAE,UAAU,EAAE,IAEtB,QAAQ,CACL,CACC,CACA,CACZ,CAAC;AACJ,CAAC,CAA0C,CAAC;AAE5C,WAAW,CAAC,WAAW,GAAG,aAAa,CAAC"}
@@ -0,0 +1,15 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import React from 'react';
13
+ export var ArrowRightIcon = function (props) { return (React.createElement("svg", __assign({}, props, { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", width: "24px", height: "24px" }),
14
+ React.createElement("path", { stroke: "currentColor", strokeWidth: "1.5", d: "m10 18 6-6-6-6" }))); };
15
+ //# sourceMappingURL=arrow_rigth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrow_rigth.js","sourceRoot":"","sources":["../../../src/icons/arrow_rigth.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,CAAC,IAAM,cAAc,GAAwB,UAAC,KAAK,IAAK,OAAA,CAC5D,wCACM,KAAK,IACT,KAAK,EAAC,4BAA4B,EAClC,IAAI,EAAC,MAAM,EACX,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,MAAM;IAEb,8BACE,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,KAAK,EACjB,CAAC,EAAC,gBAAgB,GAClB,CACE,CACP,EAf6D,CAe7D,CAAC"}
@@ -7,4 +7,5 @@ export { CloseCircleIcon } from './close_circle_icon';
7
7
  export { WarningIcon } from './warning_icon';
8
8
  export { DotIcon } from './dot_icon';
9
9
  export { PlusIcon } from './plus_icon';
10
+ export { ArrowRightIcon } from './arrow_rigth';
10
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/icons/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/icons/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
@@ -118,7 +118,7 @@ export var defaultTheme = {
118
118
  weight: '700',
119
119
  size: '14px',
120
120
  height: '20px',
121
- spacing: '0.5px',
121
+ spacing: '0.2px',
122
122
  },
123
123
  /**
124
124
  * button2
@@ -127,7 +127,7 @@ export var defaultTheme = {
127
127
  weight: '700',
128
128
  size: '13px',
129
129
  height: '17px',
130
- spacing: '0.5px',
130
+ spacing: '0.2px',
131
131
  },
132
132
  /**
133
133
  * caption1
@@ -32,7 +32,7 @@ export var createTheme = function (options) {
32
32
  : defaultTheme.color.black;
33
33
  }
34
34
  var partialTheme = deepmerge(options, {
35
- color: __assign(__assign(__assign(__assign(__assign({}, primary), secondary), wrong), attention), { 'primary-contrast': getContrastText(primary.primary), 'secondary-contrast': getContrastText(secondary.secondary), 'wrong-contrast': getContrastText(wrong.wrong) }),
35
+ color: __assign(__assign(__assign(__assign(__assign(__assign({}, primary), secondary), wrong), attention), { 'primary-contrast': getContrastText(primary.primary), 'secondary-contrast': getContrastText(secondary.secondary), 'wrong-contrast': getContrastText(wrong.wrong) }), options === null || options === void 0 ? void 0 : options.color),
36
36
  size: size,
37
37
  });
38
38
  return deepmerge(defaultTheme, partialTheme);
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/styles/utils.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAEjB,MAAM,CAAC,IAAM,sBAAsB,GAAG,IAAI,CAAC;AAC3C,MAAM,CAAC,IAAM,iBAAiB,GAAG,CAAC,CAAC;AAEnC,MAAM,CAAC,IAAM,WAAW,GAAG,UAAC,OAA0B;;IACpD,IAAM,OAAO,GAAG,qBAAqB,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,0CAAE,OAAO,CAAC,CAAC;IAC/D,IAAM,SAAS,GAAG,uBAAuB,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,0CAAE,SAAS,CAAC,CAAC;IACrE,IAAM,KAAK,GAAG,mBAAmB,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,0CAAE,KAAK,CAAC,CAAC;IACzD,IAAM,SAAS,GAAG,uBAAuB,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,0CAAE,SAAS,CAAC,CAAC;IACrE,IAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,CAAC;IAE7C,SAAS,eAAe,CAAC,UAAkB;QACzC,IAAM,aAAa,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC;aACxC,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAE9C,OAAO,aAAa,GAAG,iBAAiB;YACtC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK;YAC1B,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC;IAC/B,CAAC;IAED,IAAM,YAAY,GAAG,SAAS,CAAC,OAAO,EAAE;QACtC,KAAK,EAAE,iDACF,OAAO,GACP,SAAS,GACT,KAAK,GACL,SAAS,KACZ,kBAAkB,EAAE,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,EACpD,oBAAoB,EAAE,eAAe,CAAC,SAAS,CAAC,SAAS,CAAC,EAC1D,gBAAgB,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,GACT;QACvC,IAAI,MAAA;KACL,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,iCAAiC,GAAG,UAAC,MAA2B;;IAC3E,IAAM,OAAO,GAAG,IAAI;QAEhB,GAAC,YAAK,sBAAsB,CAAE,IAAG,MAAM;aAEzC,EAAE,SAAS,EAAE,GAAG,EAAE,CACnB,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/styles/utils.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAEjB,MAAM,CAAC,IAAM,sBAAsB,GAAG,IAAI,CAAC;AAC3C,MAAM,CAAC,IAAM,iBAAiB,GAAG,CAAC,CAAC;AAEnC,MAAM,CAAC,IAAM,WAAW,GAAG,UAAC,OAA0B;;IACpD,IAAM,OAAO,GAAG,qBAAqB,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,0CAAE,OAAO,CAAC,CAAC;IAC/D,IAAM,SAAS,GAAG,uBAAuB,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,0CAAE,SAAS,CAAC,CAAC;IACrE,IAAM,KAAK,GAAG,mBAAmB,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,0CAAE,KAAK,CAAC,CAAC;IACzD,IAAM,SAAS,GAAG,uBAAuB,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,0CAAE,SAAS,CAAC,CAAC;IACrE,IAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,CAAC;IAE7C,SAAS,eAAe,CAAC,UAAkB;QACzC,IAAM,aAAa,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC;aACxC,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAE9C,OAAO,aAAa,GAAG,iBAAiB;YACtC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK;YAC1B,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC;IAC/B,CAAC;IAED,IAAM,YAAY,GAAG,SAAS,CAAC,OAAO,EAAE;QACtC,KAAK,EAAE,0DACF,OAAO,GACP,SAAS,GACT,KAAK,GACL,SAAS,KACZ,kBAAkB,EAAE,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,EACpD,oBAAoB,EAAE,eAAe,CAAC,SAAS,CAAC,SAAS,CAAC,EAC1D,gBAAgB,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAC3C,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CACoB;QACvC,IAAI,MAAA;KACL,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,iCAAiC,GAAG,UAAC,MAA2B;;IAC3E,IAAM,OAAO,GAAG,IAAI;QAEhB,GAAC,YAAK,sBAAsB,CAAE,IAAG,MAAM;aAEzC,EAAE,SAAS,EAAE,GAAG,EAAE,CACnB,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
@@ -1,46 +1,13 @@
1
1
  import React from 'react';
2
2
  import { Popover } from '../Popover';
3
- import { Typography } from '../Typography';
3
+ import { MenuList, MenuItem, SubMenuItem } from '../MenuList';
4
4
  import { css, cx } from '../styles';
5
- const stylesMenuList = () => css({
6
- label: 'Menu-list',
7
- padding: 'var(--pv-size-base-2) 0px',
8
- outline: 'none',
9
- });
10
- const stylesMenuItem = () => css({
11
- label: 'Menu-item',
12
- padding: '0px var(--pv-size-base-2)',
13
- fontFamily: 'inherit',
14
- outline: 'none',
15
- width: '100%',
16
- height: 'var(--pv-size-base-7)',
17
- display: 'flex',
18
- textAlign: 'left',
19
- alignItems: 'center',
20
- justifyContent: 'flex-start',
21
- textDecoration: 'none',
22
- userSelect: 'none',
23
- cursor: 'pointer',
24
- transition: 'background-color 200ms',
25
- backgroundColor: 'transparent',
26
- border: 'none',
27
- color: 'var(--pv-color-black)',
28
- '&:not(:disabled)': {
29
- '&:hover': {
30
- backgroundColor: 'var(--pv-color-gray-3)',
31
- },
32
- '&:focus': {
33
- backgroundColor: 'var(--pv-color-gray-4)',
34
- },
35
- '&:active': {
36
- backgroundColor: 'var(--pv-color-gray-5)',
37
- },
38
- },
39
- '&:disabled': {
40
- color: 'var(--pv-color-gray-7)',
41
- cursor: 'not-allowed',
42
- },
43
- });
5
+ /**
6
+ *
7
+ */
8
+ /**
9
+ * Styles.
10
+ */
44
11
  const stylesPopper = () => css({
45
12
  label: 'Menu-popover',
46
13
  '&[data-popper-placement^="bottom"]': {
@@ -56,6 +23,9 @@ const stylesPopper = () => css({
56
23
  margin: '0px var(--pv-size-base-3)',
57
24
  },
58
25
  });
26
+ /**
27
+ *
28
+ */
59
29
  export const Menu = React.forwardRef((props, ref) => {
60
30
  const { children, options, onClose, popoverProps = {}, } = props;
61
31
  const { className, modalProps = {}, } = popoverProps;
@@ -71,13 +41,27 @@ export const Menu = React.forwardRef((props, ref) => {
71
41
  }
72
42
  };
73
43
  const handleMenuItemClick = (option) => (event) => {
74
- setOpen(false);
75
44
  if (option.onClick) {
76
45
  option.onClick(event);
77
46
  }
78
- if (onClose) {
79
- onClose();
47
+ handlePopoverClose();
48
+ };
49
+ const handleKeyDown = (event) => {
50
+ if (event.key === 'Tab') {
51
+ event.preventDefault();
52
+ handlePopoverClose();
53
+ }
54
+ };
55
+ const renderOption = (option, index) => {
56
+ const { component, disabled, label, subOptions, className: classNameProp, textVariant: textVariantProp, onClick, ...other } = option;
57
+ if (subOptions && subOptions.length) {
58
+ return (React.createElement(SubMenuItem, { key: index, component: component, textVariant: textVariantProp, disabled: disabled, label: label, className: classNameProp, ...other }, subOptions.map(renderOption)));
80
59
  }
60
+ return (React.createElement(MenuItem
61
+ // eslint-disable-next-line react/no-array-index-key
62
+ , {
63
+ // eslint-disable-next-line react/no-array-index-key
64
+ key: index, component: component, textVariant: textVariantProp, disabled: disabled, onClick: handleMenuItemClick(option), className: classNameProp, ...other }, label));
81
65
  };
82
66
  const childrenProps = {
83
67
  ref: childRef,
@@ -89,25 +73,12 @@ export const Menu = React.forwardRef((props, ref) => {
89
73
  React.cloneElement(children, childrenProps),
90
74
  React.createElement(Popover, { ...popoverProps, modalProps: {
91
75
  ...modalProps,
92
- disableAutoFocus: true,
93
- }, ref: ref, open: open, anchorEl: childRef.current, onClose: handlePopoverClose, className: cx({
76
+ disableAutoFocus: false,
77
+ }, ref: ref, open: open, anchorEl: childRef.current, onClose: handlePopoverClose, onKeyDown: handleKeyDown, className: cx({
94
78
  [stylesPopper()]: true,
95
79
  [className]: !!className,
96
80
  }) },
97
- React.createElement("div", { role: "menu", tabIndex: -1, className: cx({
98
- [stylesMenuList()]: true,
99
- }) }, options.map((option, index) => {
100
- const { component, disabled, label, className: classNameProp, textVariant: textVariantProp, ...other } = option;
101
- const Component = component || 'button';
102
- const textVariant = textVariantProp || 'b3';
103
- return (React.createElement(Component, { ...other,
104
- // eslint-disable-next-line react/no-array-index-key
105
- key: index, type: "button", role: "menuitem", className: cx({
106
- [stylesMenuItem()]: true,
107
- [classNameProp]: !!classNameProp,
108
- }), onClick: handleMenuItemClick(option), disabled: disabled },
109
- React.createElement(Typography, { variant: textVariant, color: "inherit", component: "span" }, label)));
110
- })))));
81
+ React.createElement(MenuList, null, options.map(renderOption)))));
111
82
  });
112
83
  Menu.displayName = 'Menu';
113
84
  Menu.defaultProps = {};