rsuite 5.10.0 → 5.13.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.
- package/ButtonToolbar/styles/index.less +1 -1
- package/CHANGELOG.md +28 -0
- package/Nav/styles/index.less +7 -1
- package/Navbar/styles/index.less +6 -1
- package/README.md +4 -0
- package/Sidenav/styles/index.less +7 -5
- package/cjs/Cascader/DropdownMenu.js +8 -3
- package/cjs/DateRangePicker/DateRangePicker.d.ts +2 -0
- package/cjs/DateRangePicker/DateRangePicker.js +4 -2
- package/cjs/Disclosure/Disclosure.d.ts +1 -1
- package/cjs/Disclosure/DisclosureContext.d.ts +1 -1
- package/cjs/Dropdown/Dropdown.js +26 -110
- package/cjs/Dropdown/DropdownItem.js +14 -58
- package/cjs/Dropdown/DropdownMenu.js +32 -76
- package/cjs/Dropdown/DropdownToggle.js +4 -17
- package/cjs/Form/Form.js +21 -7
- package/cjs/Form/FormContext.d.ts +18 -13
- package/cjs/Form/useSchemaModel.d.ts +9 -0
- package/cjs/Form/useSchemaModel.js +46 -0
- package/cjs/FormControl/FormControl.d.ts +3 -0
- package/cjs/FormControl/FormControl.js +9 -2
- package/cjs/FormControl/useRegisterModel.d.ts +4 -0
- package/cjs/FormControl/useRegisterModel.js +20 -0
- package/cjs/Menu/Menu.d.ts +1 -0
- package/cjs/Menu/Menu.js +1 -0
- package/cjs/Menu/MenuItem.d.ts +1 -0
- package/cjs/Menu/MenuItem.js +1 -0
- package/cjs/Menu/Menubar.d.ts +3 -0
- package/cjs/Menu/Menubar.js +14 -3
- package/cjs/Nav/Nav.d.ts +7 -2
- package/cjs/Nav/Nav.js +105 -5
- package/cjs/Nav/NavContext.d.ts +2 -8
- package/cjs/Nav/NavContext.js +1 -7
- package/cjs/Nav/NavDropdown.d.ts +71 -0
- package/cjs/Nav/NavDropdown.js +193 -0
- package/cjs/Nav/NavDropdownItem.d.ts +39 -0
- package/cjs/Nav/NavDropdownItem.js +141 -0
- package/cjs/Nav/NavDropdownMenu.d.ts +26 -0
- package/cjs/Nav/NavDropdownMenu.js +156 -0
- package/cjs/Nav/NavDropdownToggle.d.ts +21 -0
- package/cjs/Nav/NavDropdownToggle.js +74 -0
- package/cjs/Nav/NavItem.d.ts +2 -0
- package/cjs/Nav/NavItem.js +13 -26
- package/cjs/Nav/NavMenu.d.ts +38 -0
- package/cjs/Nav/NavMenu.js +122 -0
- package/cjs/Navbar/NavbarDropdown.d.ts +57 -0
- package/cjs/Navbar/NavbarDropdown.js +147 -0
- package/cjs/Navbar/NavbarDropdownItem.d.ts +41 -0
- package/cjs/Navbar/NavbarDropdownItem.js +149 -0
- package/cjs/Navbar/NavbarDropdownMenu.d.ts +37 -0
- package/cjs/Navbar/NavbarDropdownMenu.js +155 -0
- package/cjs/Navbar/NavbarDropdownToggle.d.ts +19 -0
- package/cjs/Navbar/NavbarDropdownToggle.js +72 -0
- package/cjs/Navbar/NavbarItem.d.ts +5 -2
- package/cjs/Navbar/NavbarItem.js +10 -4
- package/cjs/Picker/utils.js +22 -15
- package/cjs/Sidenav/ExpandedSidenavDropdown.d.ts +43 -0
- package/cjs/Sidenav/ExpandedSidenavDropdown.js +166 -0
- package/cjs/Sidenav/ExpandedSidenavDropdownItem.d.ts +31 -0
- package/cjs/Sidenav/ExpandedSidenavDropdownItem.js +141 -0
- package/cjs/Sidenav/ExpandedSidenavDropdownMenu.d.ts +26 -0
- package/cjs/Sidenav/ExpandedSidenavDropdownMenu.js +145 -0
- package/cjs/Sidenav/Sidenav.d.ts +8 -2
- package/cjs/Sidenav/Sidenav.js +1 -2
- package/cjs/Sidenav/SidenavDropdown.d.ts +30 -8
- package/cjs/Sidenav/SidenavDropdown.js +144 -73
- package/cjs/Sidenav/SidenavDropdownItem.d.ts +22 -5
- package/cjs/Sidenav/SidenavDropdownItem.js +88 -72
- package/cjs/Sidenav/SidenavDropdownMenu.d.ts +26 -16
- package/cjs/Sidenav/SidenavDropdownMenu.js +122 -90
- package/cjs/Sidenav/SidenavDropdownToggle.d.ts +19 -0
- package/cjs/Sidenav/SidenavDropdownToggle.js +72 -0
- package/cjs/Sidenav/SidenavItem.d.ts +3 -0
- package/cjs/Sidenav/SidenavItem.js +22 -14
- package/cjs/utils/deprecateComponent.js +4 -6
- package/cjs/utils/deprecatePropType.d.ts +1 -5
- package/cjs/utils/deprecatePropType.js +7 -14
- package/cjs/utils/dom.d.ts +1 -1
- package/cjs/utils/useInternalId.d.ts +1 -1
- package/cjs/utils/useInternalId.js +2 -2
- package/cjs/utils/warnOnce.d.ts +9 -0
- package/cjs/utils/warnOnce.js +22 -0
- package/dist/rsuite-rtl.css +19 -10
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +19 -10
- package/dist/rsuite.js +300 -25
- package/dist/rsuite.js.map +1 -1
- package/dist/rsuite.min.css +1 -1
- package/dist/rsuite.min.css.map +1 -1
- package/dist/rsuite.min.js +1 -1
- package/dist/rsuite.min.js.map +1 -1
- package/esm/Cascader/DropdownMenu.js +8 -3
- package/esm/DateRangePicker/DateRangePicker.d.ts +2 -0
- package/esm/DateRangePicker/DateRangePicker.js +4 -2
- package/esm/Disclosure/Disclosure.d.ts +1 -1
- package/esm/Disclosure/DisclosureContext.d.ts +1 -1
- package/esm/Dropdown/Dropdown.js +25 -105
- package/esm/Dropdown/DropdownItem.js +13 -55
- package/esm/Dropdown/DropdownMenu.js +31 -76
- package/esm/Dropdown/DropdownToggle.js +4 -14
- package/esm/Form/Form.js +19 -7
- package/esm/Form/FormContext.d.ts +18 -13
- package/esm/Form/useSchemaModel.d.ts +9 -0
- package/esm/Form/useSchemaModel.js +39 -0
- package/esm/FormControl/FormControl.d.ts +3 -0
- package/esm/FormControl/FormControl.js +9 -6
- package/esm/FormControl/useRegisterModel.d.ts +4 -0
- package/esm/FormControl/useRegisterModel.js +14 -0
- package/esm/Menu/Menu.d.ts +1 -0
- package/esm/Menu/Menu.js +1 -0
- package/esm/Menu/MenuItem.d.ts +1 -0
- package/esm/Menu/MenuItem.js +1 -0
- package/esm/Menu/Menubar.d.ts +3 -0
- package/esm/Menu/Menubar.js +13 -3
- package/esm/Nav/Nav.d.ts +7 -2
- package/esm/Nav/Nav.js +96 -5
- package/esm/Nav/NavContext.d.ts +2 -8
- package/esm/Nav/NavContext.js +1 -6
- package/esm/Nav/NavDropdown.d.ts +71 -0
- package/esm/Nav/NavDropdown.js +170 -0
- package/esm/Nav/NavDropdownItem.d.ts +39 -0
- package/esm/Nav/NavDropdownItem.js +123 -0
- package/esm/Nav/NavDropdownMenu.d.ts +26 -0
- package/esm/Nav/NavDropdownMenu.js +138 -0
- package/esm/Nav/NavDropdownToggle.d.ts +21 -0
- package/esm/Nav/NavDropdownToggle.js +57 -0
- package/esm/Nav/NavItem.d.ts +2 -0
- package/esm/Nav/NavItem.js +13 -21
- package/esm/Nav/NavMenu.d.ts +38 -0
- package/esm/Nav/NavMenu.js +98 -0
- package/esm/Navbar/NavbarDropdown.d.ts +57 -0
- package/esm/Navbar/NavbarDropdown.js +124 -0
- package/esm/Navbar/NavbarDropdownItem.d.ts +41 -0
- package/esm/Navbar/NavbarDropdownItem.js +128 -0
- package/esm/Navbar/NavbarDropdownMenu.d.ts +37 -0
- package/esm/Navbar/NavbarDropdownMenu.js +135 -0
- package/esm/Navbar/NavbarDropdownToggle.d.ts +19 -0
- package/esm/Navbar/NavbarDropdownToggle.js +55 -0
- package/esm/Navbar/NavbarItem.d.ts +5 -2
- package/esm/Navbar/NavbarItem.js +11 -4
- package/esm/Picker/utils.js +22 -14
- package/esm/Sidenav/ExpandedSidenavDropdown.d.ts +43 -0
- package/esm/Sidenav/ExpandedSidenavDropdown.js +140 -0
- package/esm/Sidenav/ExpandedSidenavDropdownItem.d.ts +31 -0
- package/esm/Sidenav/ExpandedSidenavDropdownItem.js +120 -0
- package/esm/Sidenav/ExpandedSidenavDropdownMenu.d.ts +26 -0
- package/esm/Sidenav/ExpandedSidenavDropdownMenu.js +121 -0
- package/esm/Sidenav/Sidenav.d.ts +8 -2
- package/esm/Sidenav/Sidenav.js +1 -2
- package/esm/Sidenav/SidenavDropdown.d.ts +30 -8
- package/esm/Sidenav/SidenavDropdown.js +145 -75
- package/esm/Sidenav/SidenavDropdownItem.d.ts +22 -5
- package/esm/Sidenav/SidenavDropdownItem.js +87 -71
- package/esm/Sidenav/SidenavDropdownMenu.d.ts +26 -16
- package/esm/Sidenav/SidenavDropdownMenu.js +122 -86
- package/esm/Sidenav/SidenavDropdownToggle.d.ts +19 -0
- package/esm/Sidenav/SidenavDropdownToggle.js +55 -0
- package/esm/Sidenav/SidenavItem.d.ts +3 -0
- package/esm/Sidenav/SidenavItem.js +23 -15
- package/esm/utils/deprecateComponent.js +3 -4
- package/esm/utils/deprecatePropType.d.ts +1 -5
- package/esm/utils/deprecatePropType.js +3 -13
- package/esm/utils/dom.d.ts +1 -1
- package/esm/utils/useInternalId.d.ts +1 -1
- package/esm/utils/useInternalId.js +2 -2
- package/esm/utils/warnOnce.d.ts +9 -0
- package/esm/utils/warnOnce.js +18 -0
- package/package.json +1 -1
- package/styles/variables.less +1 -0
|
@@ -25,8 +25,6 @@ var _utils = require("../utils");
|
|
|
25
25
|
|
|
26
26
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
27
27
|
|
|
28
|
-
var _Sidenav = require("../Sidenav/Sidenav");
|
|
29
|
-
|
|
30
28
|
var _AngleLeft = _interopRequireDefault(require("@rsuite/icons/legacy/AngleLeft"));
|
|
31
29
|
|
|
32
30
|
var _AngleRight = _interopRequireDefault(require("@rsuite/icons/legacy/AngleRight"));
|
|
@@ -35,15 +33,15 @@ var _useCustom2 = _interopRequireDefault(require("../utils/useCustom"));
|
|
|
35
33
|
|
|
36
34
|
var _DropdownContext = _interopRequireDefault(require("./DropdownContext"));
|
|
37
35
|
|
|
38
|
-
var _Navbar = require("../Navbar");
|
|
39
|
-
|
|
40
36
|
var _Menubar = _interopRequireDefault(require("../Menu/Menubar"));
|
|
41
37
|
|
|
42
|
-
var
|
|
38
|
+
var _Nav = _interopRequireDefault(require("../Nav"));
|
|
39
|
+
|
|
40
|
+
var _NavContext = _interopRequireDefault(require("../Nav/NavContext"));
|
|
43
41
|
|
|
44
|
-
var
|
|
42
|
+
var _warnOnce = _interopRequireDefault(require("../utils/warnOnce"));
|
|
45
43
|
|
|
46
|
-
var _templateObject, _templateObject2
|
|
44
|
+
var _templateObject, _templateObject2;
|
|
47
45
|
|
|
48
46
|
/**
|
|
49
47
|
* The <Dropdown.Menu> API
|
|
@@ -73,9 +71,8 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
73
71
|
classPrefix = _props$classPrefix === void 0 ? 'dropdown-menu' : _props$classPrefix,
|
|
74
72
|
children = props.children,
|
|
75
73
|
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["onToggle", "eventKey", "title", "activeKey", "onSelect", "classPrefix", "children"]);
|
|
74
|
+
var nav = (0, _react.useContext)(_NavContext.default);
|
|
76
75
|
var dropdown = (0, _react.useContext)(_DropdownContext.default);
|
|
77
|
-
var sidenav = (0, _react.useContext)(_Sidenav.SidenavContext);
|
|
78
|
-
var withinNavbar = Boolean((0, _react.useContext)(_Navbar.NavbarContext));
|
|
79
76
|
|
|
80
77
|
var _useCustom = (0, _useCustom2.default)('DropdownMenu'),
|
|
81
78
|
rtl = _useCustom.rtl;
|
|
@@ -103,9 +100,18 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
103
100
|
activeKey: activeKey,
|
|
104
101
|
onSelect: onSelect
|
|
105
102
|
};
|
|
106
|
-
}, [activeKey, onSelect]); //
|
|
103
|
+
}, [activeKey, onSelect]); // If rendered within a <Nav>
|
|
104
|
+
// Suggest <Nav.Menu>
|
|
105
|
+
|
|
106
|
+
if (nav) {
|
|
107
|
+
(0, _warnOnce.default)('Usage of <Dropdown.Menu> within <Nav> is deprecated. Replace with <Nav.Menu>');
|
|
108
|
+
return /*#__PURE__*/_react.default.createElement(_Nav.default.Menu, (0, _extends2.default)({
|
|
109
|
+
ref: ref
|
|
110
|
+
}, props));
|
|
111
|
+
} // <Dropdown.Menu> is used outside of <Dropdown>
|
|
107
112
|
// renders a vertical `menubar`
|
|
108
113
|
|
|
114
|
+
|
|
109
115
|
if (!dropdown) {
|
|
110
116
|
var classes = merge(props.className, withClassPrefix());
|
|
111
117
|
return /*#__PURE__*/_react.default.createElement(_DropdownContext.default.Provider, {
|
|
@@ -118,10 +124,6 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
118
124
|
className: classes
|
|
119
125
|
}, menubar, rest), children);
|
|
120
126
|
}));
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
if (sidenav !== null && sidenav !== void 0 && sidenav.expanded) {
|
|
124
|
-
return /*#__PURE__*/_react.default.createElement(_SidenavDropdownMenu.default, (0, _omit2.default)(props, 'classPrefix'));
|
|
125
127
|
} // Parent menu exists. This is a submenu.
|
|
126
128
|
// Should render a `menuitem` that controls this submenu.
|
|
127
129
|
|
|
@@ -132,65 +134,19 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
132
134
|
disabled = _omit.disabled,
|
|
133
135
|
menuProps = (0, _objectWithoutPropertiesLoose2.default)(_omit, ["icon", "className", "disabled"]);
|
|
134
136
|
|
|
135
|
-
var Icon = rtl ? _AngleLeft.default : _AngleRight.default;
|
|
136
|
-
|
|
137
|
-
if (withinNavbar) {
|
|
138
|
-
return /*#__PURE__*/_react.default.createElement(_Disclosure.default, {
|
|
139
|
-
hideOnClickOutside: true,
|
|
140
|
-
trigger: ['click', 'mouseover']
|
|
141
|
-
}, function (_ref, containerRef) {
|
|
142
|
-
var open = _ref.open,
|
|
143
|
-
props = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["open"]);
|
|
144
|
-
var classes = mergeItemClassNames(className, withItemClassPrefix({
|
|
145
|
-
disabled: disabled,
|
|
146
|
-
open: open,
|
|
147
|
-
submenu: true
|
|
148
|
-
}));
|
|
149
|
-
return /*#__PURE__*/_react.default.createElement("li", (0, _extends2.default)({
|
|
150
|
-
ref: (0, _utils.mergeRefs)(ref, containerRef),
|
|
151
|
-
className: classes
|
|
152
|
-
}, props), /*#__PURE__*/_react.default.createElement(_Disclosure.default.Button, null, function (_ref2, buttonRef) {
|
|
153
|
-
var open = _ref2.open,
|
|
154
|
-
buttonProps = (0, _objectWithoutPropertiesLoose2.default)(_ref2, ["open"]);
|
|
155
|
-
var classes = mergeItemClassNames(className, prefixItemClassName(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["toggle"]))), withItemClassPrefix({
|
|
156
|
-
'with-icon': icon,
|
|
157
|
-
open: open,
|
|
158
|
-
disabled: disabled
|
|
159
|
-
}));
|
|
160
|
-
return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
|
|
161
|
-
ref: (0, _utils.mergeRefs)(buttonRef, buttonRef),
|
|
162
|
-
className: classes,
|
|
163
|
-
"data-event-key": eventKey,
|
|
164
|
-
"data-event-key-type": typeof eventKey
|
|
165
|
-
}, buttonProps), icon && /*#__PURE__*/_react.default.cloneElement(icon, {
|
|
166
|
-
className: prefix('menu-icon')
|
|
167
|
-
}), title, /*#__PURE__*/_react.default.createElement(Icon, {
|
|
168
|
-
className: prefix(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["toggle-icon"])))
|
|
169
|
-
}));
|
|
170
|
-
}), /*#__PURE__*/_react.default.createElement(_Disclosure.default.Content, null, function (_ref3, elementRef) {
|
|
171
|
-
var open = _ref3.open;
|
|
172
|
-
var menuClassName = mergeMenuClassName(className, withMenuClassPrefix());
|
|
173
|
-
return /*#__PURE__*/_react.default.createElement("ul", (0, _extends2.default)({
|
|
174
|
-
ref: elementRef,
|
|
175
|
-
className: menuClassName,
|
|
176
|
-
hidden: !open
|
|
177
|
-
}, menuProps), children);
|
|
178
|
-
}));
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
|
|
137
|
+
var Icon = rtl ? _AngleLeft.default : _AngleRight.default;
|
|
182
138
|
return /*#__PURE__*/_react.default.createElement(_Menu.default, {
|
|
183
139
|
openMenuOn: ['mouseover', 'click'],
|
|
184
|
-
renderMenuButton: function renderMenuButton(
|
|
185
|
-
var open =
|
|
186
|
-
menuButtonProps = (0, _objectWithoutPropertiesLoose2.default)(
|
|
140
|
+
renderMenuButton: function renderMenuButton(_ref, buttonRef) {
|
|
141
|
+
var open = _ref.open,
|
|
142
|
+
menuButtonProps = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["open"]);
|
|
187
143
|
return /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
|
|
188
144
|
disabled: disabled
|
|
189
|
-
}, function (
|
|
190
|
-
var selected =
|
|
191
|
-
active =
|
|
192
|
-
menuitem = (0, _objectWithoutPropertiesLoose2.default)(
|
|
193
|
-
var classes = mergeItemClassNames(className, prefixItemClassName(
|
|
145
|
+
}, function (_ref2, menuitemRef) {
|
|
146
|
+
var selected = _ref2.selected,
|
|
147
|
+
active = _ref2.active,
|
|
148
|
+
menuitem = (0, _objectWithoutPropertiesLoose2.default)(_ref2, ["selected", "active"]);
|
|
149
|
+
var classes = mergeItemClassNames(className, prefixItemClassName(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["toggle"]))), withItemClassPrefix({
|
|
194
150
|
'with-icon': icon,
|
|
195
151
|
open: open,
|
|
196
152
|
active: selected,
|
|
@@ -205,13 +161,13 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
205
161
|
}, menuitem, (0, _omit2.default)(menuButtonProps, ['role'])), icon && /*#__PURE__*/_react.default.cloneElement(icon, {
|
|
206
162
|
className: prefix('menu-icon')
|
|
207
163
|
}), title, /*#__PURE__*/_react.default.createElement(Icon, {
|
|
208
|
-
className: prefix(
|
|
164
|
+
className: prefix(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["toggle-icon"])))
|
|
209
165
|
}));
|
|
210
166
|
});
|
|
211
167
|
},
|
|
212
|
-
renderMenuPopup: function renderMenuPopup(
|
|
213
|
-
var open =
|
|
214
|
-
popupProps = (0, _objectWithoutPropertiesLoose2.default)(
|
|
168
|
+
renderMenuPopup: function renderMenuPopup(_ref3, popupRef) {
|
|
169
|
+
var open = _ref3.open,
|
|
170
|
+
popupProps = (0, _objectWithoutPropertiesLoose2.default)(_ref3, ["open"]);
|
|
215
171
|
var menuClassName = mergeMenuClassName(className, withMenuClassPrefix());
|
|
216
172
|
return /*#__PURE__*/_react.default.createElement("ul", (0, _extends2.default)({
|
|
217
173
|
ref: popupRef,
|
|
@@ -220,9 +176,9 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
220
176
|
}, popupProps, menuProps), children);
|
|
221
177
|
},
|
|
222
178
|
onToggleMenu: handleToggleSubmenu
|
|
223
|
-
}, function (
|
|
224
|
-
var open =
|
|
225
|
-
menuContainer = (0, _objectWithoutPropertiesLoose2.default)(
|
|
179
|
+
}, function (_ref4, menuContainerRef) {
|
|
180
|
+
var open = _ref4.open,
|
|
181
|
+
menuContainer = (0, _objectWithoutPropertiesLoose2.default)(_ref4, ["open"]);
|
|
226
182
|
var classes = mergeItemClassNames(className, withItemClassPrefix({
|
|
227
183
|
disabled: disabled,
|
|
228
184
|
open: open,
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
|
-
|
|
5
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
6
4
|
|
|
7
5
|
exports.__esModule = true;
|
|
@@ -11,7 +9,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
11
9
|
|
|
12
10
|
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
13
11
|
|
|
14
|
-
var _react =
|
|
12
|
+
var _react = _interopRequireDefault(require("react"));
|
|
15
13
|
|
|
16
14
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
17
15
|
|
|
@@ -21,10 +19,6 @@ var _utils = require("../utils");
|
|
|
21
19
|
|
|
22
20
|
var _useToggleCaret = _interopRequireDefault(require("../utils/useToggleCaret"));
|
|
23
21
|
|
|
24
|
-
var _Sidenav = require("../Sidenav/Sidenav");
|
|
25
|
-
|
|
26
|
-
var _NavContext = _interopRequireDefault(require("../Nav/NavContext"));
|
|
27
|
-
|
|
28
22
|
var DropdownToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
29
23
|
var _props$as = props.as,
|
|
30
24
|
Component = _props$as === void 0 ? _Button.default : _props$as,
|
|
@@ -38,10 +32,6 @@ var DropdownToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
38
32
|
_props$placement = props.placement,
|
|
39
33
|
placement = _props$placement === void 0 ? 'bottomStart' : _props$placement,
|
|
40
34
|
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "className", "classPrefix", "renderToggle", "children", "icon", "noCaret", "placement"]);
|
|
41
|
-
var sidenav = (0, _react.useContext)(_Sidenav.SidenavContext);
|
|
42
|
-
|
|
43
|
-
var _useContext = (0, _react.useContext)(_NavContext.default),
|
|
44
|
-
withinNav = _useContext.withinNav;
|
|
45
35
|
|
|
46
36
|
var _useClassNames = (0, _utils.useClassNames)(classPrefix),
|
|
47
37
|
prefix = _useClassNames.prefix,
|
|
@@ -50,14 +40,11 @@ var DropdownToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
50
40
|
|
|
51
41
|
var classes = merge(className, withClassPrefix({
|
|
52
42
|
'no-caret': noCaret
|
|
53
|
-
}));
|
|
54
|
-
var inSidenav = !!sidenav; // Caret icon is down by default, when Dropdown is used in Sidenav.
|
|
43
|
+
})); // Caret icon is down by default, when Dropdown is used in Sidenav.
|
|
55
44
|
|
|
56
|
-
var Caret = (0, _useToggleCaret.default)(
|
|
45
|
+
var Caret = (0, _useToggleCaret.default)(placement);
|
|
57
46
|
|
|
58
|
-
var toggle = /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
|
|
59
|
-
appearance: withinNav ? 'subtle' : undefined
|
|
60
|
-
}, rest, {
|
|
47
|
+
var toggle = /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
|
|
61
48
|
ref: ref,
|
|
62
49
|
className: classes
|
|
63
50
|
}), icon && /*#__PURE__*/_react.default.cloneElement(icon, {
|
package/cjs/Form/Form.js
CHANGED
|
@@ -35,6 +35,8 @@ var _FormHelpText = _interopRequireDefault(require("../FormHelpText"));
|
|
|
35
35
|
|
|
36
36
|
var _useFormClassNames = require("./useFormClassNames");
|
|
37
37
|
|
|
38
|
+
var _useSchemaModel2 = _interopRequireDefault(require("./useSchemaModel"));
|
|
39
|
+
|
|
38
40
|
var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
39
41
|
var _props$checkTrigger = props.checkTrigger,
|
|
40
42
|
checkTrigger = _props$checkTrigger === void 0 ? 'change' : _props$checkTrigger,
|
|
@@ -50,7 +52,7 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
50
52
|
_props$layout = props.layout,
|
|
51
53
|
layout = _props$layout === void 0 ? 'vertical' : _props$layout,
|
|
52
54
|
_props$model = props.model,
|
|
53
|
-
|
|
55
|
+
formModel = _props$model === void 0 ? (0, _schemaTyped.SchemaModel)({}) : _props$model,
|
|
54
56
|
readOnly = props.readOnly,
|
|
55
57
|
plaintext = props.plaintext,
|
|
56
58
|
className = props.className,
|
|
@@ -61,6 +63,12 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
61
63
|
onError = props.onError,
|
|
62
64
|
onChange = props.onChange,
|
|
63
65
|
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["checkTrigger", "classPrefix", "errorFromContext", "formDefaultValue", "formValue", "formError", "fluid", "layout", "model", "readOnly", "plaintext", "className", "children", "disabled", "onSubmit", "onCheck", "onError", "onChange"]);
|
|
66
|
+
|
|
67
|
+
var _useSchemaModel = (0, _useSchemaModel2.default)(formModel),
|
|
68
|
+
getCombinedModel = _useSchemaModel.getCombinedModel,
|
|
69
|
+
pushFieldRule = _useSchemaModel.pushFieldRule,
|
|
70
|
+
removeFieldRule = _useSchemaModel.removeFieldRule;
|
|
71
|
+
|
|
64
72
|
var classes = (0, _useFormClassNames.useFormClassNames)({
|
|
65
73
|
classPrefix: classPrefix,
|
|
66
74
|
className: className,
|
|
@@ -95,6 +103,7 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
95
103
|
var formValue = getFormValue() || {};
|
|
96
104
|
var formError = {};
|
|
97
105
|
var errorCount = 0;
|
|
106
|
+
var model = getCombinedModel();
|
|
98
107
|
Object.keys(model.spec).forEach(function (key) {
|
|
99
108
|
var checkResult = model.checkForField(key, formValue);
|
|
100
109
|
|
|
@@ -113,7 +122,7 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
113
122
|
}
|
|
114
123
|
|
|
115
124
|
return true;
|
|
116
|
-
}, [
|
|
125
|
+
}, [getFormValue, getCombinedModel, onCheck, onError]);
|
|
117
126
|
/**
|
|
118
127
|
* Check the data field
|
|
119
128
|
* @param fieldName
|
|
@@ -124,6 +133,7 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
124
133
|
var _extends2;
|
|
125
134
|
|
|
126
135
|
var formValue = getFormValue() || {};
|
|
136
|
+
var model = getCombinedModel();
|
|
127
137
|
var checkResult = model.checkForField(fieldName, formValue);
|
|
128
138
|
var formError = (0, _extends6.default)({}, getFormError(), (_extends2 = {}, _extends2[fieldName] = (checkResult === null || checkResult === void 0 ? void 0 : checkResult.errorMessage) || checkResult, _extends2));
|
|
129
139
|
setFormError(formError);
|
|
@@ -135,7 +145,7 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
135
145
|
}
|
|
136
146
|
|
|
137
147
|
return !checkResult.hasError;
|
|
138
|
-
}, [
|
|
148
|
+
}, [getFormValue, getCombinedModel, getFormError, onCheck, onError]);
|
|
139
149
|
/**
|
|
140
150
|
* Check form data asynchronously and return a Promise
|
|
141
151
|
*/
|
|
@@ -144,6 +154,7 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
144
154
|
var formValue = getFormValue() || {};
|
|
145
155
|
var promises = [];
|
|
146
156
|
var keys = [];
|
|
157
|
+
var model = getCombinedModel();
|
|
147
158
|
Object.keys(model.spec).forEach(function (key) {
|
|
148
159
|
keys.push(key);
|
|
149
160
|
promises.push(model.checkForFieldAsync(key, formValue));
|
|
@@ -171,7 +182,7 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
171
182
|
formError: formError
|
|
172
183
|
};
|
|
173
184
|
});
|
|
174
|
-
}, [
|
|
185
|
+
}, [getFormValue, getCombinedModel, onCheck, onError]);
|
|
175
186
|
/**
|
|
176
187
|
* Asynchronously check form fields and return Promise
|
|
177
188
|
* @param fieldName
|
|
@@ -179,6 +190,7 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
179
190
|
|
|
180
191
|
var checkForFieldAsync = (0, _react.useCallback)(function (fieldName) {
|
|
181
192
|
var formValue = getFormValue() || {};
|
|
193
|
+
var model = getCombinedModel();
|
|
182
194
|
return model.checkForFieldAsync(fieldName, formValue).then(function (checkResult) {
|
|
183
195
|
var _extends3;
|
|
184
196
|
|
|
@@ -192,7 +204,7 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
192
204
|
|
|
193
205
|
return checkResult;
|
|
194
206
|
});
|
|
195
|
-
}, [
|
|
207
|
+
}, [getFormValue, getCombinedModel, getFormError, onCheck, onError]);
|
|
196
208
|
var cleanErrors = (0, _react.useCallback)(function () {
|
|
197
209
|
setFormError({});
|
|
198
210
|
}, []);
|
|
@@ -260,7 +272,7 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
260
272
|
var rootRef = (0, _react.useRef)(null);
|
|
261
273
|
var formContextValue = (0, _react.useMemo)(function () {
|
|
262
274
|
return {
|
|
263
|
-
|
|
275
|
+
getCombinedModel: getCombinedModel,
|
|
264
276
|
checkTrigger: checkTrigger,
|
|
265
277
|
formDefaultValue: formDefaultValue,
|
|
266
278
|
errorFromContext: errorFromContext,
|
|
@@ -270,11 +282,13 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
270
282
|
formError: getFormError(),
|
|
271
283
|
removeFieldValue: removeFieldValue,
|
|
272
284
|
removeFieldError: removeFieldError,
|
|
285
|
+
pushFieldRule: pushFieldRule,
|
|
286
|
+
removeFieldRule: removeFieldRule,
|
|
273
287
|
onFieldChange: handleFieldChange,
|
|
274
288
|
onFieldError: handleFieldError,
|
|
275
289
|
onFieldSuccess: handleFieldSuccess
|
|
276
290
|
};
|
|
277
|
-
}, [
|
|
291
|
+
}, [getCombinedModel, checkTrigger, formDefaultValue, errorFromContext, readOnly, plaintext, disabled, getFormError, removeFieldValue, removeFieldError, pushFieldRule, removeFieldRule, handleFieldChange, handleFieldError, handleFieldSuccess]);
|
|
278
292
|
return /*#__PURE__*/_react.default.createElement("form", (0, _extends6.default)({}, rest, {
|
|
279
293
|
ref: rootRef,
|
|
280
294
|
onSubmit: handleSubmit,
|
|
@@ -1,26 +1,31 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { Schema } from 'schema-typed';
|
|
3
2
|
import { TypeAttributes } from '../@types/common';
|
|
4
|
-
|
|
3
|
+
import type { Schema } from 'schema-typed';
|
|
4
|
+
import type { FieldRuleType } from './useSchemaModel';
|
|
5
|
+
interface TrulyFormContextValue<T = Record<string, any>, errorMsgType = any, E = {
|
|
5
6
|
[P in keyof T]?: errorMsgType;
|
|
6
7
|
}> {
|
|
7
|
-
|
|
8
|
+
getCombinedModel: () => Schema;
|
|
9
|
+
formError: E;
|
|
10
|
+
removeFieldValue: (name: string) => void;
|
|
11
|
+
removeFieldError: (name: string) => void;
|
|
12
|
+
pushFieldRule: (name: string, fieldRule: FieldRuleType) => void;
|
|
13
|
+
removeFieldRule: (name: string) => void;
|
|
14
|
+
onFieldChange: (name: string, value: any, event: React.SyntheticEvent) => void;
|
|
15
|
+
onFieldError: (name: string, errorMessage: string) => void;
|
|
16
|
+
onFieldSuccess: (name: string) => void;
|
|
17
|
+
}
|
|
18
|
+
declare type ExternalPropsContextValue<T> = {
|
|
8
19
|
checkTrigger?: TypeAttributes.CheckTrigger;
|
|
9
20
|
formDefaultValue?: T;
|
|
10
21
|
errorFromContext?: boolean;
|
|
11
22
|
readOnly?: boolean;
|
|
12
23
|
plaintext?: boolean;
|
|
13
24
|
disabled?: boolean;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
onFieldError?: (name: string, errorMessage: string) => void;
|
|
19
|
-
onFieldSuccess?: (name: string) => void;
|
|
20
|
-
}
|
|
21
|
-
export declare const FormContext: React.Context<FormContextValue<Record<string, any>, any, {
|
|
22
|
-
[x: string]: any;
|
|
23
|
-
}>>;
|
|
25
|
+
};
|
|
26
|
+
declare type InitialContextType = Partial<Record<keyof TrulyFormContextValue, undefined>>;
|
|
27
|
+
export declare type FormContextValue<T = Record<string, any>, errorMsgType = any> = (TrulyFormContextValue<T, errorMsgType> | InitialContextType) & ExternalPropsContextValue<T>;
|
|
28
|
+
export declare const FormContext: React.Context<FormContextValue<Record<string, any>, any>>;
|
|
24
29
|
export declare const FormValueContext: React.Context<Record<string, any> | undefined>;
|
|
25
30
|
export declare const FormPlaintextContext: React.Context<boolean>;
|
|
26
31
|
export default FormContext;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { MutableRefObject } from 'react';
|
|
2
|
+
import type { CheckType, Schema } from 'schema-typed';
|
|
3
|
+
export declare type FieldRuleType = MutableRefObject<CheckType<unknown, any> | undefined>;
|
|
4
|
+
declare function useSchemaModel(formModel: Schema): {
|
|
5
|
+
getCombinedModel: () => Schema<any, string>;
|
|
6
|
+
pushFieldRule: (name: string, fieldRule: FieldRuleType) => void;
|
|
7
|
+
removeFieldRule: (name: string) => void;
|
|
8
|
+
};
|
|
9
|
+
export default useSchemaModel;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
|
|
6
|
+
var _schemaTyped = require("schema-typed");
|
|
7
|
+
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
|
|
10
|
+
function useSchemaModel(formModel) {
|
|
11
|
+
var subRulesRef = (0, _react.useRef)([]);
|
|
12
|
+
var pushFieldRule = (0, _react.useCallback)(function (name, fieldRule) {
|
|
13
|
+
subRulesRef.current.push({
|
|
14
|
+
name: name,
|
|
15
|
+
fieldRule: fieldRule
|
|
16
|
+
});
|
|
17
|
+
}, []);
|
|
18
|
+
var removeFieldRule = (0, _react.useCallback)(function (name) {
|
|
19
|
+
var index = subRulesRef.current.findIndex(function (v) {
|
|
20
|
+
return v.name === name;
|
|
21
|
+
});
|
|
22
|
+
subRulesRef.current.splice(index, 1);
|
|
23
|
+
}, []);
|
|
24
|
+
var getCombinedModel = (0, _react.useCallback)(function () {
|
|
25
|
+
var realSubRules = subRulesRef.current.filter(function (v) {
|
|
26
|
+
return Boolean(v.fieldRule.current);
|
|
27
|
+
});
|
|
28
|
+
return _schemaTyped.SchemaModel.combine(formModel, (0, _schemaTyped.SchemaModel)(realSubRules.map(function (_ref) {
|
|
29
|
+
var _ref2;
|
|
30
|
+
|
|
31
|
+
var name = _ref.name,
|
|
32
|
+
fieldRule = _ref.fieldRule;
|
|
33
|
+
return _ref2 = {}, _ref2[name] = fieldRule.current, _ref2;
|
|
34
|
+
}).reduce(function (a, b) {
|
|
35
|
+
return Object.assign(a, b);
|
|
36
|
+
}, {})));
|
|
37
|
+
}, [formModel]);
|
|
38
|
+
return {
|
|
39
|
+
getCombinedModel: getCombinedModel,
|
|
40
|
+
pushFieldRule: pushFieldRule,
|
|
41
|
+
removeFieldRule: removeFieldRule
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
var _default = useSchemaModel;
|
|
46
|
+
exports.default = _default;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import Input from '../Input';
|
|
3
3
|
import { TypeAttributes, FormControlBaseProps, WithAsProps } from '../@types/common';
|
|
4
|
+
import type { CheckType } from 'schema-typed';
|
|
4
5
|
/**
|
|
5
6
|
* Props that FormControl passes to its accepter
|
|
6
7
|
*/
|
|
@@ -30,6 +31,8 @@ export interface FormControlProps<P = any, ValueType = any> extends WithAsProps,
|
|
|
30
31
|
checkAsync?: boolean;
|
|
31
32
|
/** Remove field value and error message when component is unmounted */
|
|
32
33
|
shouldResetWithUnmount?: boolean;
|
|
34
|
+
/** Validation rule */
|
|
35
|
+
rule?: CheckType<unknown, any>;
|
|
33
36
|
}
|
|
34
37
|
interface FormControlComponent extends React.FC<FormControlProps> {
|
|
35
38
|
<Accepter extends React.ElementType = typeof Input>(props: FormControlProps & {
|
|
@@ -29,6 +29,8 @@ var _FormContext = _interopRequireWildcard(require("../Form/FormContext"));
|
|
|
29
29
|
|
|
30
30
|
var _FormGroup = require("../FormGroup/FormGroup");
|
|
31
31
|
|
|
32
|
+
var _useRegisterModel = _interopRequireDefault(require("./useRegisterModel"));
|
|
33
|
+
|
|
32
34
|
var _templateObject;
|
|
33
35
|
|
|
34
36
|
var FormControl = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
@@ -42,10 +44,12 @@ var FormControl = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
42
44
|
formError = _useContext.formError,
|
|
43
45
|
removeFieldValue = _useContext.removeFieldValue,
|
|
44
46
|
removeFieldError = _useContext.removeFieldError,
|
|
47
|
+
pushFieldRule = _useContext.pushFieldRule,
|
|
48
|
+
removeFieldRule = _useContext.removeFieldRule,
|
|
45
49
|
onFieldChange = _useContext.onFieldChange,
|
|
46
50
|
onFieldError = _useContext.onFieldError,
|
|
47
51
|
onFieldSuccess = _useContext.onFieldSuccess,
|
|
48
|
-
|
|
52
|
+
getCombinedModel = _useContext.getCombinedModel,
|
|
49
53
|
contextCheckTrigger = _useContext.checkTrigger;
|
|
50
54
|
|
|
51
55
|
var _props$as = props.as,
|
|
@@ -73,7 +77,8 @@ var FormControl = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
73
77
|
defaultValue = props.defaultValue,
|
|
74
78
|
_props$shouldResetWit = props.shouldResetWithUnmount,
|
|
75
79
|
shouldResetWithUnmount = _props$shouldResetWit === void 0 ? false : _props$shouldResetWit,
|
|
76
|
-
|
|
80
|
+
rule = props.rule,
|
|
81
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "accepter", "classPrefix", "className", "checkAsync", "checkTrigger", "errorPlacement", "errorMessage", "name", "value", "readOnly", "plaintext", "disabled", "onChange", "onBlur", "defaultValue", "shouldResetWithUnmount", "rule"]);
|
|
77
82
|
|
|
78
83
|
var _useContext2 = (0, _react.useContext)(_FormGroup.FormGroupContext),
|
|
79
84
|
controlId = _useContext2.controlId;
|
|
@@ -82,6 +87,7 @@ var FormControl = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
82
87
|
throw new Error("\n <FormControl> must be inside a component decorated with <Form>.\n And need to update React to 16.6.0 +.\n ");
|
|
83
88
|
}
|
|
84
89
|
|
|
90
|
+
(0, _useRegisterModel.default)(name, pushFieldRule, removeFieldRule, rule);
|
|
85
91
|
(0, _utils.useWillUnmount)(function () {
|
|
86
92
|
if (shouldResetWithUnmount) {
|
|
87
93
|
removeFieldValue === null || removeFieldValue === void 0 ? void 0 : removeFieldValue(name);
|
|
@@ -127,6 +133,7 @@ var FormControl = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
127
133
|
};
|
|
128
134
|
|
|
129
135
|
var nextFormValue = (0, _extends3.default)({}, formValue, (_extends2 = {}, _extends2[name] = value, _extends2));
|
|
136
|
+
var model = getCombinedModel();
|
|
130
137
|
|
|
131
138
|
if (checkAsync) {
|
|
132
139
|
return model === null || model === void 0 ? void 0 : model.checkForFieldAsync(name, nextFormValue).then(function (checkResult) {
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { FieldRuleType } from '../Form/useSchemaModel';
|
|
2
|
+
import type { CheckType } from 'schema-typed';
|
|
3
|
+
declare function useRegisterModel(name: string, pushFieldRule: (n: string, r: FieldRuleType) => void, removeFieldRule: (n: string) => void, rule?: CheckType<unknown, any>): void;
|
|
4
|
+
export default useRegisterModel;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
|
|
6
|
+
var _react = require("react");
|
|
7
|
+
|
|
8
|
+
function useRegisterModel(name, pushFieldRule, removeFieldRule, rule) {
|
|
9
|
+
var refRule = (0, _react.useRef)(rule);
|
|
10
|
+
refRule.current = rule;
|
|
11
|
+
(0, _react.useEffect)(function () {
|
|
12
|
+
pushFieldRule(name, refRule);
|
|
13
|
+
return function () {
|
|
14
|
+
removeFieldRule(name);
|
|
15
|
+
};
|
|
16
|
+
}, [name, pushFieldRule, removeFieldRule]);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
var _default = useRegisterModel;
|
|
20
|
+
exports.default = _default;
|
package/cjs/Menu/Menu.d.ts
CHANGED
|
@@ -33,6 +33,7 @@ export interface MenuHandle {
|
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
35
|
* Headless ARIA `menu`
|
|
36
|
+
* @private
|
|
36
37
|
*/
|
|
37
38
|
declare function Menu({ disabled, children, openMenuOn, defaultOpen, open: openProp, menuButtonText, renderMenuButton, renderMenuPopup, onToggleMenu }: MenuProps & React.HTMLAttributes<HTMLUListElement>): React.ReactElement<React.HTMLAttributes<HTMLDivElement>, string | React.JSXElementConstructor<any>>;
|
|
38
39
|
declare namespace Menu {
|
package/cjs/Menu/Menu.js
CHANGED
package/cjs/Menu/MenuItem.d.ts
CHANGED
package/cjs/Menu/MenuItem.js
CHANGED
package/cjs/Menu/Menubar.d.ts
CHANGED
|
@@ -7,4 +7,7 @@ export interface MenubarProps {
|
|
|
7
7
|
/** Callback triggered when an item is being activated */
|
|
8
8
|
onActivateItem?: (event: React.SyntheticEvent) => void;
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* @private
|
|
12
|
+
*/
|
|
10
13
|
export default function Menubar({ vertical, children, onActivateItem }: MenubarProps): JSX.Element;
|
package/cjs/Menu/Menubar.js
CHANGED
|
@@ -19,8 +19,16 @@ var _events = require("../utils/events");
|
|
|
19
19
|
|
|
20
20
|
var _useMenu = _interopRequireDefault(require("./useMenu"));
|
|
21
21
|
|
|
22
|
+
var _dom = require("../utils/dom");
|
|
23
|
+
|
|
22
24
|
// Headless ARIA `menubar`
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @private
|
|
28
|
+
*/
|
|
23
29
|
function Menubar(_ref) {
|
|
30
|
+
var _items$activeItemInde3;
|
|
31
|
+
|
|
24
32
|
var _ref$vertical = _ref.vertical,
|
|
25
33
|
vertical = _ref$vertical === void 0 ? false : _ref$vertical,
|
|
26
34
|
children = _ref.children,
|
|
@@ -35,7 +43,8 @@ function Menubar(_ref) {
|
|
|
35
43
|
var menubarElementRef = (0, _react.useRef)(null);
|
|
36
44
|
var onFocus = (0, _react.useCallback)(function (event) {
|
|
37
45
|
// Focus moves inside Menubar
|
|
38
|
-
if ((0, _events.isFocusEntering)(event)
|
|
46
|
+
if ((0, _events.isFocusEntering)(event) && // Skip if focus is moving to a focusable element within this menu
|
|
47
|
+
!(event.target !== event.currentTarget && (0, _dom.isFocusableElement)(event.target))) {
|
|
39
48
|
if (activeItemIndex === null) {
|
|
40
49
|
dispatch({
|
|
41
50
|
type: _MenuContext.MenuActionTypes.MoveFocus,
|
|
@@ -58,7 +67,9 @@ function Menubar(_ref) {
|
|
|
58
67
|
rtl = _useCustom.rtl;
|
|
59
68
|
|
|
60
69
|
var onKeyDown = (0, _react.useCallback)(function (event) {
|
|
61
|
-
var
|
|
70
|
+
var _items$activeItemInde, _items$activeItemInde2;
|
|
71
|
+
|
|
72
|
+
var activeItemElement = (0, _isNil.default)(activeItemIndex) ? null : (_items$activeItemInde = (_items$activeItemInde2 = items[activeItemIndex]) === null || _items$activeItemInde2 === void 0 ? void 0 : _items$activeItemInde2.element) !== null && _items$activeItemInde !== void 0 ? _items$activeItemInde : null;
|
|
62
73
|
|
|
63
74
|
switch (true) {
|
|
64
75
|
case !vertical && !rtl && event.key === _utils.KEY_VALUES.RIGHT:
|
|
@@ -138,7 +149,7 @@ function Menubar(_ref) {
|
|
|
138
149
|
onBlur: onBlur,
|
|
139
150
|
onKeyDown: onKeyDown,
|
|
140
151
|
onClick: onClick,
|
|
141
|
-
'aria-activedescendant': (0, _isNil.default)(activeItemIndex) ? undefined : items[activeItemIndex].element.id,
|
|
152
|
+
'aria-activedescendant': (0, _isNil.default)(activeItemIndex) ? undefined : (_items$activeItemInde3 = items[activeItemIndex]) === null || _items$activeItemInde3 === void 0 ? void 0 : _items$activeItemInde3.element.id,
|
|
142
153
|
'aria-orientation': vertical ? 'vertical' : undefined // implicitly set 'horizontal'
|
|
143
154
|
|
|
144
155
|
}, menubarElementRef));
|