@elliemae/ds-mini-toolbar 2.3.0-alpha.8 → 2.3.0-next.10
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/cjs/Components/MiniToolbar.js +70 -0
- package/cjs/Components/ToolbarShortcut.js +72 -0
- package/cjs/Components/outOfTheBox/Button.js +29 -0
- package/cjs/Components/outOfTheBox/ComboBox.js +25 -0
- package/cjs/Components/outOfTheBox/IconItem.js +36 -0
- package/cjs/Components/outOfTheBox/SearchBox.js +55 -0
- package/cjs/Components/outOfTheBox/Separator.js +19 -0
- package/cjs/Components/outOfTheBox/index.js +26 -0
- package/cjs/hooks/useGenerateItems.js +134 -0
- package/cjs/index.d.js +2 -0
- package/cjs/index.js +12 -0
- package/cjs/propTypes.js +35 -0
- package/cjs/styles.js +29 -0
- package/esm/Components/MiniToolbar.js +60 -0
- package/esm/Components/ToolbarShortcut.js +63 -0
- package/esm/Components/outOfTheBox/Button.js +20 -0
- package/esm/Components/outOfTheBox/ComboBox.js +17 -0
- package/esm/Components/outOfTheBox/IconItem.js +28 -0
- package/esm/Components/outOfTheBox/SearchBox.js +45 -0
- package/esm/Components/outOfTheBox/Separator.js +11 -0
- package/esm/Components/outOfTheBox/index.js +13 -0
- package/esm/hooks/useGenerateItems.js +125 -0
- package/esm/index.d.js +1 -0
- package/esm/index.js +2 -0
- package/esm/propTypes.js +30 -0
- package/esm/styles.js +17 -0
- package/package.json +43 -45
- package/types/Components/MiniToolbar.d.ts +21 -0
- package/types/Components/ToolbarShortcut.d.ts +4 -0
- package/types/Components/outOfTheBox/Button.d.ts +3 -0
- package/types/Components/outOfTheBox/ComboBox.d.ts +3 -0
- package/types/Components/outOfTheBox/IconItem.d.ts +4 -0
- package/types/Components/outOfTheBox/SearchBox.d.ts +5 -0
- package/types/Components/outOfTheBox/Separator.d.ts +3 -0
- package/types/Components/outOfTheBox/index.d.ts +10 -0
- package/types/hooks/useGenerateItems.d.ts +4 -0
- package/types/index.d.d.ts +75 -0
- package/types/index.d.ts +2 -0
- package/types/propTypes.d.ts +17 -0
- package/types/styles.d.ts +5 -0
- package/types/tests/DSMiniToolbar.events.test.d.ts +1 -0
- package/types/tests/DSMiniToolbar.keyboard.test.d.ts +1 -0
- package/types/tests/DSMiniToolbar.test.d.ts +1 -0
- package/types/tests/utils.test.d.ts +161 -0
- package/dist/cjs/Components/MiniToolbar.js +0 -81
- package/dist/cjs/Components/MiniToolbar.js.map +0 -7
- package/dist/cjs/Components/ToolbarShortcut.js +0 -72
- package/dist/cjs/Components/ToolbarShortcut.js.map +0 -7
- package/dist/cjs/Components/outOfTheBox/Button.js +0 -41
- package/dist/cjs/Components/outOfTheBox/Button.js.map +0 -7
- package/dist/cjs/Components/outOfTheBox/ComboBox.js +0 -39
- package/dist/cjs/Components/outOfTheBox/ComboBox.js.map +0 -7
- package/dist/cjs/Components/outOfTheBox/IconItem.js +0 -50
- package/dist/cjs/Components/outOfTheBox/IconItem.js.map +0 -7
- package/dist/cjs/Components/outOfTheBox/SearchBox.js +0 -58
- package/dist/cjs/Components/outOfTheBox/SearchBox.js.map +0 -7
- package/dist/cjs/Components/outOfTheBox/Separator.js +0 -39
- package/dist/cjs/Components/outOfTheBox/Separator.js.map +0 -7
- package/dist/cjs/Components/outOfTheBox/index.js +0 -53
- package/dist/cjs/Components/outOfTheBox/index.js.map +0 -7
- package/dist/cjs/hooks/useGenerateItems.js +0 -120
- package/dist/cjs/hooks/useGenerateItems.js.map +0 -7
- package/dist/cjs/index.d.js +0 -27
- package/dist/cjs/index.d.js.map +0 -7
- package/dist/cjs/index.js +0 -38
- package/dist/cjs/index.js.map +0 -7
- package/dist/cjs/propTypes.js +0 -69
- package/dist/cjs/propTypes.js.map +0 -7
- package/dist/cjs/styles.js +0 -62
- package/dist/cjs/styles.js.map +0 -7
- package/dist/esm/Components/MiniToolbar.js +0 -52
- package/dist/esm/Components/MiniToolbar.js.map +0 -7
- package/dist/esm/Components/ToolbarShortcut.js +0 -43
- package/dist/esm/Components/ToolbarShortcut.js.map +0 -7
- package/dist/esm/Components/outOfTheBox/Button.js +0 -12
- package/dist/esm/Components/outOfTheBox/Button.js.map +0 -7
- package/dist/esm/Components/outOfTheBox/ComboBox.js +0 -10
- package/dist/esm/Components/outOfTheBox/ComboBox.js.map +0 -7
- package/dist/esm/Components/outOfTheBox/IconItem.js +0 -21
- package/dist/esm/Components/outOfTheBox/IconItem.js.map +0 -7
- package/dist/esm/Components/outOfTheBox/SearchBox.js +0 -29
- package/dist/esm/Components/outOfTheBox/SearchBox.js.map +0 -7
- package/dist/esm/Components/outOfTheBox/Separator.js +0 -10
- package/dist/esm/Components/outOfTheBox/Separator.js.map +0 -7
- package/dist/esm/Components/outOfTheBox/index.js +0 -24
- package/dist/esm/Components/outOfTheBox/index.js.map +0 -7
- package/dist/esm/hooks/useGenerateItems.js +0 -102
- package/dist/esm/hooks/useGenerateItems.js.map +0 -7
- package/dist/esm/index.d.js +0 -2
- package/dist/esm/index.d.js.map +0 -7
- package/dist/esm/index.js +0 -9
- package/dist/esm/index.js.map +0 -7
- package/dist/esm/propTypes.js +0 -40
- package/dist/esm/propTypes.js.map +0 -7
- package/dist/esm/styles.js +0 -33
- package/dist/esm/styles.js.map +0 -7
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
6
|
+
require('core-js/modules/web.dom-collections.iterator.js');
|
|
7
|
+
var react = require('react');
|
|
8
|
+
var reactDesc = require('react-desc');
|
|
9
|
+
var DSDropdownMenu = require('@elliemae/ds-dropdownmenu');
|
|
10
|
+
var dsIcons = require('@elliemae/ds-icons');
|
|
11
|
+
var styles = require('../styles.js');
|
|
12
|
+
var propTypes = require('../propTypes.js');
|
|
13
|
+
var useGenerateItems = require('../hooks/useGenerateItems.js');
|
|
14
|
+
|
|
15
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
16
|
+
|
|
17
|
+
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
18
|
+
var DSDropdownMenu__default = /*#__PURE__*/_interopDefaultLegacy(DSDropdownMenu);
|
|
19
|
+
|
|
20
|
+
const Elipsis = /*#__PURE__*/_jsx__default["default"](dsIcons.MoreOptionsVert, {
|
|
21
|
+
color: ['brand-primary', '600'],
|
|
22
|
+
size: "m"
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
const MiniToolbar = _ref => {
|
|
26
|
+
let {
|
|
27
|
+
items,
|
|
28
|
+
overflowButtonProps
|
|
29
|
+
} = _ref;
|
|
30
|
+
const [shortcutItems, dropdownMenuItems] = useGenerateItems.useGenerateItems(items);
|
|
31
|
+
const [isDropdownMenuOpen, setIsDropdownMenuOpen] = react.useState(false);
|
|
32
|
+
const closeDropdownMenu = react.useCallback(() => setIsDropdownMenuOpen(false), []);
|
|
33
|
+
const openDropdownMenu = react.useCallback(() => setIsDropdownMenuOpen(true), []);
|
|
34
|
+
const openDropdownMenuKeyPress = react.useCallback(e => {
|
|
35
|
+
if (e.key === ' ') {
|
|
36
|
+
setIsDropdownMenuOpen(true);
|
|
37
|
+
}
|
|
38
|
+
}, []);
|
|
39
|
+
const {
|
|
40
|
+
ariaLabel,
|
|
41
|
+
style,
|
|
42
|
+
buttonType = 'secondary'
|
|
43
|
+
} = overflowButtonProps || {};
|
|
44
|
+
return /*#__PURE__*/_jsx__default["default"](styles.Container, {
|
|
45
|
+
role: "toolbar",
|
|
46
|
+
"data-testid": "ds-mini-toolbar"
|
|
47
|
+
}, void 0, shortcutItems, /*#__PURE__*/_jsx__default["default"](DSDropdownMenu__default["default"], {
|
|
48
|
+
"data-testid": "ds-mini-toolbar__dropdown-menu",
|
|
49
|
+
isOpen: isDropdownMenuOpen,
|
|
50
|
+
onSelectMenuItem: closeDropdownMenu,
|
|
51
|
+
onClickOutsideMenu: closeDropdownMenu,
|
|
52
|
+
options: dropdownMenuItems,
|
|
53
|
+
triggerComponent: /*#__PURE__*/_jsx__default["default"](styles.StyledButton, {
|
|
54
|
+
"aria-label": ariaLabel,
|
|
55
|
+
"data-testid": "ds-mini-toolbar__elipsis",
|
|
56
|
+
size: "m",
|
|
57
|
+
style: style,
|
|
58
|
+
buttonType: buttonType,
|
|
59
|
+
onClick: openDropdownMenu,
|
|
60
|
+
onKeyPress: openDropdownMenuKeyPress,
|
|
61
|
+
leftIcon: Elipsis
|
|
62
|
+
})
|
|
63
|
+
}));
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
const MiniToolbarWithSchema = reactDesc.describe(MiniToolbar);
|
|
67
|
+
MiniToolbarWithSchema.propTypes = propTypes.miniToolbarProps;
|
|
68
|
+
|
|
69
|
+
exports.MiniToolbar = MiniToolbar;
|
|
70
|
+
exports.MiniToolbarWithSchema = MiniToolbarWithSchema;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
6
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
7
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
8
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
9
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
10
|
+
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
11
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
12
|
+
var react = require('react');
|
|
13
|
+
var styles = require('../styles.js');
|
|
14
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
15
|
+
|
|
16
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
17
|
+
|
|
18
|
+
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
19
|
+
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
20
|
+
|
|
21
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
22
|
+
|
|
23
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
24
|
+
|
|
25
|
+
const ToolbarShortcut = props => {
|
|
26
|
+
const {
|
|
27
|
+
Component,
|
|
28
|
+
shortcutProps,
|
|
29
|
+
sharedProps,
|
|
30
|
+
ContextualRegion,
|
|
31
|
+
contextualRegionProps
|
|
32
|
+
} = props;
|
|
33
|
+
const leftRef = react.useRef(null);
|
|
34
|
+
const rightRef = react.useRef(null);
|
|
35
|
+
const timerLeft = react.useRef(null);
|
|
36
|
+
const timerRight = react.useRef(null);
|
|
37
|
+
const {
|
|
38
|
+
position = 'left',
|
|
39
|
+
isOpen = false
|
|
40
|
+
} = contextualRegionProps || {};
|
|
41
|
+
const {
|
|
42
|
+
style
|
|
43
|
+
} = shortcutProps || {};
|
|
44
|
+
|
|
45
|
+
const mergedProps = _objectSpread(_objectSpread({}, sharedProps), shortcutProps);
|
|
46
|
+
|
|
47
|
+
react.useEffect(() => {
|
|
48
|
+
if (isOpen && leftRef.current) {
|
|
49
|
+
timerLeft.current = setTimeout(() => leftRef.current.focus(), 200);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (isOpen && rightRef.current) {
|
|
53
|
+
timerRight.current = setTimeout(() => rightRef.current.focus(), 200);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return () => {
|
|
57
|
+
clearTimeout(timerLeft.current);
|
|
58
|
+
clearTimeout(timerRight.current);
|
|
59
|
+
};
|
|
60
|
+
}, [isOpen, leftRef, rightRef]);
|
|
61
|
+
return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
62
|
+
children: [isOpen && position === 'left' && /*#__PURE__*/_jsx__default["default"](styles.Item, {}, void 0, /*#__PURE__*/jsxRuntime.jsx(ContextualRegion, _objectSpread({
|
|
63
|
+
innerRef: leftRef
|
|
64
|
+
}, contextualRegionProps))), Component && /*#__PURE__*/_jsx__default["default"](styles.Item, {
|
|
65
|
+
style: style
|
|
66
|
+
}, void 0, /*#__PURE__*/jsxRuntime.jsx(Component, _objectSpread({}, mergedProps))), isOpen && position === 'right' && /*#__PURE__*/_jsx__default["default"](styles.Item, {}, void 0, /*#__PURE__*/jsxRuntime.jsx(ContextualRegion, _objectSpread({
|
|
67
|
+
innerRef: rightRef
|
|
68
|
+
}, contextualRegionProps)))]
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
exports.ToolbarShortcut = ToolbarShortcut;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
6
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
7
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
8
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
9
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
10
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
11
|
+
require('react');
|
|
12
|
+
var DSButton = require('@elliemae/ds-button');
|
|
13
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
14
|
+
|
|
15
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
16
|
+
|
|
17
|
+
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
18
|
+
var DSButton__default = /*#__PURE__*/_interopDefaultLegacy(DSButton);
|
|
19
|
+
|
|
20
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
21
|
+
|
|
22
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
23
|
+
|
|
24
|
+
const MiniToolbarButton = props => /*#__PURE__*/jsxRuntime.jsx(DSButton__default["default"], _objectSpread(_objectSpread({}, props), {}, {
|
|
25
|
+
"aria-label": props.ariaLabel,
|
|
26
|
+
"data-testid": "ds-mini-toolbar__shortcut"
|
|
27
|
+
}));
|
|
28
|
+
|
|
29
|
+
exports.MiniToolbarButton = MiniToolbarButton;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
6
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
7
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
8
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
9
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
10
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
11
|
+
require('react');
|
|
12
|
+
var dsForm = require('@elliemae/ds-form');
|
|
13
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
14
|
+
|
|
15
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
16
|
+
|
|
17
|
+
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
18
|
+
|
|
19
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
20
|
+
|
|
21
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
22
|
+
|
|
23
|
+
const MiniToolbarComboBox = props => /*#__PURE__*/jsxRuntime.jsx(dsForm.DSComboBox2, _objectSpread({}, props));
|
|
24
|
+
|
|
25
|
+
exports.MiniToolbarComboBox = MiniToolbarComboBox;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
6
|
+
require('react');
|
|
7
|
+
var styles = require('../../styles.js');
|
|
8
|
+
|
|
9
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
10
|
+
|
|
11
|
+
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
12
|
+
|
|
13
|
+
const MiniToolbarIcon = props => {
|
|
14
|
+
const {
|
|
15
|
+
Icon,
|
|
16
|
+
size,
|
|
17
|
+
color,
|
|
18
|
+
onClick,
|
|
19
|
+
ariaLabel,
|
|
20
|
+
style,
|
|
21
|
+
buttonType = 'secondary'
|
|
22
|
+
} = props;
|
|
23
|
+
return /*#__PURE__*/_jsx__default["default"](styles.StyledButton, {
|
|
24
|
+
"aria-label": ariaLabel,
|
|
25
|
+
buttonType: buttonType,
|
|
26
|
+
onClick: onClick,
|
|
27
|
+
style: style,
|
|
28
|
+
leftIcon: /*#__PURE__*/_jsx__default["default"](Icon, {
|
|
29
|
+
size: size,
|
|
30
|
+
color: color
|
|
31
|
+
}),
|
|
32
|
+
"data-testid": "ds-mini-toolbar__shortcut"
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
exports.MiniToolbarIcon = MiniToolbarIcon;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
6
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
7
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
8
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
9
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
10
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
11
|
+
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
12
|
+
require('react');
|
|
13
|
+
var dsIcons = require('@elliemae/ds-icons');
|
|
14
|
+
var dsForm = require('@elliemae/ds-form');
|
|
15
|
+
var styles = require('../../styles.js');
|
|
16
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
17
|
+
|
|
18
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
19
|
+
|
|
20
|
+
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
21
|
+
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
22
|
+
|
|
23
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
24
|
+
|
|
25
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
26
|
+
|
|
27
|
+
const MiniToolbarSearchButton = props => {
|
|
28
|
+
const {
|
|
29
|
+
size,
|
|
30
|
+
color,
|
|
31
|
+
onClick,
|
|
32
|
+
ariaLabel,
|
|
33
|
+
style,
|
|
34
|
+
buttonType = 'secondary'
|
|
35
|
+
} = props;
|
|
36
|
+
return /*#__PURE__*/_jsx__default["default"](styles.StyledButton, {
|
|
37
|
+
"aria-label": ariaLabel,
|
|
38
|
+
buttonType: buttonType,
|
|
39
|
+
onClick: onClick,
|
|
40
|
+
style: style,
|
|
41
|
+
leftIcon: /*#__PURE__*/_jsx__default["default"](dsIcons.Search, {
|
|
42
|
+
size: size,
|
|
43
|
+
color: color
|
|
44
|
+
}),
|
|
45
|
+
"data-testid": "ds-mini-toolbar__shortcut"
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const MiniToolbarSearchBox = props => /*#__PURE__*/jsxRuntime.jsx(dsForm.DSSearchBox, _objectSpread({
|
|
50
|
+
clearable: true,
|
|
51
|
+
showIcon: false
|
|
52
|
+
}, props));
|
|
53
|
+
|
|
54
|
+
exports.MiniToolbarSearchBox = MiniToolbarSearchBox;
|
|
55
|
+
exports.MiniToolbarSearchButton = MiniToolbarSearchButton;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
6
|
+
require('react');
|
|
7
|
+
var styles = require('../../styles.js');
|
|
8
|
+
|
|
9
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
10
|
+
|
|
11
|
+
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
12
|
+
|
|
13
|
+
var _Separator;
|
|
14
|
+
|
|
15
|
+
const MiniToolbarSeparator = () => _Separator || (_Separator = /*#__PURE__*/_jsx__default["default"](styles.Separator, {
|
|
16
|
+
"data-testid": "ds-mini-toolbar__separator"
|
|
17
|
+
}));
|
|
18
|
+
|
|
19
|
+
exports.MiniToolbarSeparator = MiniToolbarSeparator;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var Button = require('./Button.js');
|
|
6
|
+
var IconItem = require('./IconItem.js');
|
|
7
|
+
var SearchBox = require('./SearchBox.js');
|
|
8
|
+
var Separator = require('./Separator.js');
|
|
9
|
+
var ComboBox = require('./ComboBox.js');
|
|
10
|
+
|
|
11
|
+
const ICON_ITEM = 'ds-icon-item';
|
|
12
|
+
const SEPARATOR = 'ds-separator';
|
|
13
|
+
const BUTTON = 'ds-button';
|
|
14
|
+
const SEARCH_BOX = 'ds-search-box';
|
|
15
|
+
const COMBO_BOX = 'ds-combo-box';
|
|
16
|
+
|
|
17
|
+
exports.MiniToolbarButton = Button.MiniToolbarButton;
|
|
18
|
+
exports.MiniToolbarIcon = IconItem.MiniToolbarIcon;
|
|
19
|
+
exports.MiniToolbarSearchBox = SearchBox.MiniToolbarSearchBox;
|
|
20
|
+
exports.MiniToolbarSeparator = Separator.MiniToolbarSeparator;
|
|
21
|
+
exports.MiniToolbarComboBox = ComboBox.MiniToolbarComboBox;
|
|
22
|
+
exports.BUTTON = BUTTON;
|
|
23
|
+
exports.COMBO_BOX = COMBO_BOX;
|
|
24
|
+
exports.ICON_ITEM = ICON_ITEM;
|
|
25
|
+
exports.SEARCH_BOX = SEARCH_BOX;
|
|
26
|
+
exports.SEPARATOR = SEPARATOR;
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
6
|
+
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
7
|
+
require('core-js/modules/esnext.async-iterator.map.js');
|
|
8
|
+
require('core-js/modules/esnext.iterator.map.js');
|
|
9
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
10
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
11
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
12
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
13
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
14
|
+
var react = require('react');
|
|
15
|
+
var uid = require('uid');
|
|
16
|
+
var dsIcons = require('@elliemae/ds-icons');
|
|
17
|
+
var index = require('../Components/outOfTheBox/index.js');
|
|
18
|
+
var ToolbarShortcut = require('../Components/ToolbarShortcut.js');
|
|
19
|
+
var SearchBox = require('../Components/outOfTheBox/SearchBox.js');
|
|
20
|
+
var Separator = require('../Components/outOfTheBox/Separator.js');
|
|
21
|
+
var Button = require('../Components/outOfTheBox/Button.js');
|
|
22
|
+
var IconItem = require('../Components/outOfTheBox/IconItem.js');
|
|
23
|
+
var ComboBox = require('../Components/outOfTheBox/ComboBox.js');
|
|
24
|
+
|
|
25
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
26
|
+
|
|
27
|
+
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
28
|
+
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
29
|
+
|
|
30
|
+
var _MiniToolbarSeparator;
|
|
31
|
+
|
|
32
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
33
|
+
|
|
34
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
35
|
+
|
|
36
|
+
const useGenerateItems = items => {
|
|
37
|
+
const instanceUID = react.useMemo(() => uid.uid(6), []);
|
|
38
|
+
const shortcutItems = react.useMemo(() => items.filter(item => item.hasShortcut || item.component === index.SEARCH_BOX || item.contextualRegion).map((item, index$1) => {
|
|
39
|
+
const {
|
|
40
|
+
component,
|
|
41
|
+
shortcutComponent,
|
|
42
|
+
shortcutProps,
|
|
43
|
+
sharedProps,
|
|
44
|
+
contextualRegion,
|
|
45
|
+
contextualRegionProps
|
|
46
|
+
} = item;
|
|
47
|
+
let Component;
|
|
48
|
+
let ContextualRegion;
|
|
49
|
+
if (component === index.SEPARATOR) return _MiniToolbarSeparator || (_MiniToolbarSeparator = /*#__PURE__*/_jsx__default["default"](Separator.MiniToolbarSeparator, {}));
|
|
50
|
+
if (component === index.BUTTON) Component = Button.MiniToolbarButton;else if (component === index.ICON_ITEM) Component = IconItem.MiniToolbarIcon;else if (component === index.COMBO_BOX) Component = ComboBox.MiniToolbarComboBox;else if (component === index.SEARCH_BOX) {
|
|
51
|
+
if (item.hasShortcut) {
|
|
52
|
+
Component = SearchBox.MiniToolbarSearchButton;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
ContextualRegion = SearchBox.MiniToolbarSearchBox;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (!ContextualRegion) {
|
|
59
|
+
ContextualRegion = contextualRegion;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (!Component) {
|
|
63
|
+
Component = shortcutComponent;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return /*#__PURE__*/_jsx__default["default"](ToolbarShortcut.ToolbarShortcut, {
|
|
67
|
+
Component: Component,
|
|
68
|
+
shortcutProps: shortcutProps,
|
|
69
|
+
sharedProps: sharedProps,
|
|
70
|
+
ContextualRegion: ContextualRegion,
|
|
71
|
+
contextualRegionProps: contextualRegionProps
|
|
72
|
+
}, "".concat(instanceUID, "-shortcut-").concat(index$1));
|
|
73
|
+
}), [instanceUID, items]);
|
|
74
|
+
const dropdownMenuItems = react.useMemo(() => items.map((item, index$1) => {
|
|
75
|
+
const {
|
|
76
|
+
component,
|
|
77
|
+
sharedProps,
|
|
78
|
+
dropdownComponentProps
|
|
79
|
+
} = item;
|
|
80
|
+
const dropdownItem = {};
|
|
81
|
+
|
|
82
|
+
const {
|
|
83
|
+
Icon,
|
|
84
|
+
color,
|
|
85
|
+
label,
|
|
86
|
+
onClick
|
|
87
|
+
} = _objectSpread(_objectSpread({}, sharedProps), dropdownComponentProps);
|
|
88
|
+
|
|
89
|
+
if (component === index.SEPARATOR) dropdownItem.type = 'separator';else {
|
|
90
|
+
dropdownItem.id = "".concat(instanceUID, "-dropdown-").concat(index$1);
|
|
91
|
+
|
|
92
|
+
dropdownItem.onClick = () => onClick(item);
|
|
93
|
+
|
|
94
|
+
dropdownItem.label = label;
|
|
95
|
+
|
|
96
|
+
dropdownItem.onKeyDown = e => {
|
|
97
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
98
|
+
onClick(item);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if (component === index.ICON_ITEM) {
|
|
104
|
+
dropdownItem.leftAddon = /*#__PURE__*/_jsx__default["default"](Icon, {
|
|
105
|
+
color: color
|
|
106
|
+
});
|
|
107
|
+
} else if (component === index.SEARCH_BOX) {
|
|
108
|
+
dropdownItem.leftAddon = /*#__PURE__*/_jsx__default["default"](dsIcons.Search, {
|
|
109
|
+
color: color
|
|
110
|
+
});
|
|
111
|
+
} else if (component === index.COMBO_BOX) {
|
|
112
|
+
dropdownItem.type = 'subMenu';
|
|
113
|
+
dropdownItem.label = label;
|
|
114
|
+
dropdownItem.subItems = sharedProps.options.map((option, index) => {
|
|
115
|
+
option.id = "".concat(instanceUID, "-option-").concat(index);
|
|
116
|
+
|
|
117
|
+
option.onClick = () => dropdownComponentProps.onSelectMenuItem(option);
|
|
118
|
+
|
|
119
|
+
option.onKeyDown = e => {
|
|
120
|
+
if (e.key === ' ' || e.key === 'Enter') {
|
|
121
|
+
dropdownComponentProps.onSelectMenuItem(option);
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
return option;
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
return dropdownItem;
|
|
130
|
+
}), [instanceUID, items]);
|
|
131
|
+
return [shortcutItems, dropdownMenuItems];
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
exports.useGenerateItems = useGenerateItems;
|
package/cjs/index.d.js
ADDED
package/cjs/index.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var MiniToolbar = require('./Components/MiniToolbar.js');
|
|
6
|
+
var propTypes = require('./propTypes.js');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
exports.MiniToolbar = MiniToolbar.MiniToolbar;
|
|
11
|
+
exports.MiniToolbarWithSchema = MiniToolbar.MiniToolbarWithSchema;
|
|
12
|
+
exports.ToolbarItemWithSchema = propTypes.ToolbarItemWithSchema;
|
package/cjs/propTypes.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var reactDesc = require('react-desc');
|
|
6
|
+
|
|
7
|
+
const outOfTheBoxType = reactDesc.PropTypes.oneOf(['ds-button', 'ds-icon-item', 'ds-separator', 'ds-search-box', 'ds-combo-box']).description('out-of-the-box toolbar components');
|
|
8
|
+
const toolbarItemProps = {
|
|
9
|
+
component: reactDesc.PropTypes.oneOfType([outOfTheBoxType, reactDesc.PropTypes.element]).description('Main component').isRequired,
|
|
10
|
+
hasShortcut: reactDesc.PropTypes.bool.description('Whether to include the component as a shortcut in the toolbar or not').defaultValue(false),
|
|
11
|
+
shortcutComponent: reactDesc.PropTypes.element.description('Component to render as a shortcut in the toolbar'),
|
|
12
|
+
shortcutProps: reactDesc.PropTypes.object.description('Shortcut component props'),
|
|
13
|
+
dropdownComponentProps: reactDesc.PropTypes.object.description('Dropdown component props'),
|
|
14
|
+
sharedProps: reactDesc.PropTypes.object.description('Props shared by shortcut component and dropdown component'),
|
|
15
|
+
contextualRegion: reactDesc.PropTypes.element.description('Component that can be rendered as an adjacent region to the shortcut component'),
|
|
16
|
+
contextualRegionProps: reactDesc.PropTypes.object.description('Contextual region component props')
|
|
17
|
+
};
|
|
18
|
+
const itemPropTypes = reactDesc.PropTypes.shape(toolbarItemProps).description('Items props');
|
|
19
|
+
const overflowButtonPropTypes = {
|
|
20
|
+
ariaLabel: reactDesc.PropTypes.string,
|
|
21
|
+
buttonType: reactDesc.PropTypes.oneOf(['secondary', 'text']),
|
|
22
|
+
style: reactDesc.PropTypes.object
|
|
23
|
+
};
|
|
24
|
+
const miniToolbarProps = {
|
|
25
|
+
items: reactDesc.PropTypes.arrayOf(itemPropTypes).description('Array of items').isRequired,
|
|
26
|
+
overflowButtonProps: reactDesc.PropTypes.shape(overflowButtonPropTypes).description('Overflow button props')
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const ToolbarItem = () => null;
|
|
30
|
+
|
|
31
|
+
const ToolbarItemWithSchema = reactDesc.describe(ToolbarItem);
|
|
32
|
+
ToolbarItemWithSchema.propTypes = toolbarItemProps;
|
|
33
|
+
|
|
34
|
+
exports.ToolbarItemWithSchema = ToolbarItemWithSchema;
|
|
35
|
+
exports.miniToolbarProps = miniToolbarProps;
|
package/cjs/styles.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var styled = require('styled-components');
|
|
6
|
+
var DSButton = require('@elliemae/ds-button');
|
|
7
|
+
|
|
8
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
|
+
|
|
10
|
+
var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
|
|
11
|
+
var DSButton__default = /*#__PURE__*/_interopDefaultLegacy(DSButton);
|
|
12
|
+
|
|
13
|
+
const Container = /*#__PURE__*/styled__default["default"].ul.withConfig({
|
|
14
|
+
componentId: "sc-18ftw1x-0"
|
|
15
|
+
})(["display:flex;align-items:center;justify-content:center;width:fit-content;padding:0 6px;"]);
|
|
16
|
+
const Separator = /*#__PURE__*/styled__default["default"].span.withConfig({
|
|
17
|
+
componentId: "sc-18ftw1x-1"
|
|
18
|
+
})(["height:24px;width:1px;margin:6px;border-left:1px solid #bbb;"]);
|
|
19
|
+
const Item = /*#__PURE__*/styled__default["default"].li.withConfig({
|
|
20
|
+
componentId: "sc-18ftw1x-2"
|
|
21
|
+
})(["display:flex;margin:6px;cursor:pointer;"]);
|
|
22
|
+
const StyledButton = /*#__PURE__*/styled__default["default"](DSButton__default["default"]).withConfig({
|
|
23
|
+
componentId: "sc-18ftw1x-3"
|
|
24
|
+
})(["&:not(:focus){border-color:transparent;}"]);
|
|
25
|
+
|
|
26
|
+
exports.Container = Container;
|
|
27
|
+
exports.Item = Item;
|
|
28
|
+
exports.Separator = Separator;
|
|
29
|
+
exports.StyledButton = StyledButton;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import _jsx from '@babel/runtime/helpers/esm/jsx';
|
|
2
|
+
import 'core-js/modules/web.dom-collections.iterator.js';
|
|
3
|
+
import { useState, useCallback } from 'react';
|
|
4
|
+
import { describe } from 'react-desc';
|
|
5
|
+
import DSDropdownMenu from '@elliemae/ds-dropdownmenu';
|
|
6
|
+
import { MoreOptionsVert } from '@elliemae/ds-icons';
|
|
7
|
+
import { Container, StyledButton } from '../styles.js';
|
|
8
|
+
import { miniToolbarProps } from '../propTypes.js';
|
|
9
|
+
import { useGenerateItems } from '../hooks/useGenerateItems.js';
|
|
10
|
+
|
|
11
|
+
const Elipsis = /*#__PURE__*/_jsx(MoreOptionsVert, {
|
|
12
|
+
color: ['brand-primary', '600'],
|
|
13
|
+
size: "m"
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
const MiniToolbar = _ref => {
|
|
17
|
+
let {
|
|
18
|
+
items,
|
|
19
|
+
overflowButtonProps
|
|
20
|
+
} = _ref;
|
|
21
|
+
const [shortcutItems, dropdownMenuItems] = useGenerateItems(items);
|
|
22
|
+
const [isDropdownMenuOpen, setIsDropdownMenuOpen] = useState(false);
|
|
23
|
+
const closeDropdownMenu = useCallback(() => setIsDropdownMenuOpen(false), []);
|
|
24
|
+
const openDropdownMenu = useCallback(() => setIsDropdownMenuOpen(true), []);
|
|
25
|
+
const openDropdownMenuKeyPress = useCallback(e => {
|
|
26
|
+
if (e.key === ' ') {
|
|
27
|
+
setIsDropdownMenuOpen(true);
|
|
28
|
+
}
|
|
29
|
+
}, []);
|
|
30
|
+
const {
|
|
31
|
+
ariaLabel,
|
|
32
|
+
style,
|
|
33
|
+
buttonType = 'secondary'
|
|
34
|
+
} = overflowButtonProps || {};
|
|
35
|
+
return /*#__PURE__*/_jsx(Container, {
|
|
36
|
+
role: "toolbar",
|
|
37
|
+
"data-testid": "ds-mini-toolbar"
|
|
38
|
+
}, void 0, shortcutItems, /*#__PURE__*/_jsx(DSDropdownMenu, {
|
|
39
|
+
"data-testid": "ds-mini-toolbar__dropdown-menu",
|
|
40
|
+
isOpen: isDropdownMenuOpen,
|
|
41
|
+
onSelectMenuItem: closeDropdownMenu,
|
|
42
|
+
onClickOutsideMenu: closeDropdownMenu,
|
|
43
|
+
options: dropdownMenuItems,
|
|
44
|
+
triggerComponent: /*#__PURE__*/_jsx(StyledButton, {
|
|
45
|
+
"aria-label": ariaLabel,
|
|
46
|
+
"data-testid": "ds-mini-toolbar__elipsis",
|
|
47
|
+
size: "m",
|
|
48
|
+
style: style,
|
|
49
|
+
buttonType: buttonType,
|
|
50
|
+
onClick: openDropdownMenu,
|
|
51
|
+
onKeyPress: openDropdownMenuKeyPress,
|
|
52
|
+
leftIcon: Elipsis
|
|
53
|
+
})
|
|
54
|
+
}));
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const MiniToolbarWithSchema = describe(MiniToolbar);
|
|
58
|
+
MiniToolbarWithSchema.propTypes = miniToolbarProps;
|
|
59
|
+
|
|
60
|
+
export { MiniToolbar, MiniToolbarWithSchema };
|