@commercetools-uikit/primary-action-dropdown 12.2.2 → 12.2.6
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/README.md +63 -37
- package/dist/commercetools-uikit-primary-action-dropdown.cjs.d.ts +2 -0
- package/dist/commercetools-uikit-primary-action-dropdown.cjs.dev.js +108 -97
- package/dist/commercetools-uikit-primary-action-dropdown.cjs.prod.js +92 -84
- package/dist/commercetools-uikit-primary-action-dropdown.esm.js +103 -91
- package/dist/declarations/src/index.d.ts +3 -0
- package/dist/declarations/src/option.d.ts +15 -0
- package/dist/declarations/src/primary-action-dropdown.d.ts +9 -0
- package/dist/declarations/src/version.d.ts +2 -0
- package/package.json +13 -14
|
@@ -5,36 +5,35 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
|
|
6
6
|
var _toConsumableArray = require('@babel/runtime-corejs3/helpers/toConsumableArray');
|
|
7
7
|
var _styled = require('@emotion/styled/base');
|
|
8
|
+
require('prop-types');
|
|
8
9
|
var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
|
|
9
10
|
var _findInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/find');
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var react = require('@emotion/react');
|
|
11
|
+
var react = require('react');
|
|
12
|
+
var react$1 = require('@emotion/react');
|
|
13
13
|
var AccessibleButton = require('@commercetools-uikit/accessible-button');
|
|
14
14
|
var designSystem = require('@commercetools-uikit/design-system');
|
|
15
15
|
var Text = require('@commercetools-uikit/text');
|
|
16
16
|
require('@commercetools-uikit/utils');
|
|
17
17
|
var icons = require('@commercetools-uikit/icons');
|
|
18
18
|
var hooks = require('@commercetools-uikit/hooks');
|
|
19
|
+
var jsxRuntime = require('@emotion/react/jsx-runtime');
|
|
19
20
|
|
|
20
21
|
function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
|
|
21
22
|
|
|
22
23
|
var _styled__default = /*#__PURE__*/_interopDefault(_styled);
|
|
23
24
|
var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
|
|
24
25
|
var _findInstanceProperty__default = /*#__PURE__*/_interopDefault(_findInstanceProperty);
|
|
25
|
-
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
26
|
-
var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
27
26
|
var AccessibleButton__default = /*#__PURE__*/_interopDefault(AccessibleButton);
|
|
28
27
|
var Text__default = /*#__PURE__*/_interopDefault(Text);
|
|
29
28
|
|
|
30
29
|
var getButtonStyles = function getButtonStyles(isDisabled) {
|
|
31
|
-
var baseButtonStyles = /*#__PURE__*/react.css("display:flex;align-items:center;height:", designSystem.customProperties.bigButtonHeight, ";" + ("" ));
|
|
30
|
+
var baseButtonStyles = /*#__PURE__*/react$1.css("display:flex;align-items:center;height:", designSystem.customProperties.bigButtonHeight, ";" + ("" ), "" );
|
|
32
31
|
|
|
33
32
|
if (isDisabled) {
|
|
34
|
-
return [baseButtonStyles, /*#__PURE__*/react.css("box-shadow:none;background-color:", designSystem.customProperties.colorAccent98, ";" + ("" ))];
|
|
33
|
+
return [baseButtonStyles, /*#__PURE__*/react$1.css("box-shadow:none;background-color:", designSystem.customProperties.colorAccent98, ";" + ("" ), "" )];
|
|
35
34
|
}
|
|
36
35
|
|
|
37
|
-
return [baseButtonStyles, /*#__PURE__*/react.css("background-color:", designSystem.customProperties.colorSurface, ";box-shadow:", designSystem.customProperties.shadow7, ";&:hover{box-shadow:", designSystem.customProperties.shadow8, ";}&:active{box-shadow:", designSystem.customProperties.shadow9, ";background-color:", designSystem.customProperties.colorNeutral95, ";}" + ("" ))];
|
|
36
|
+
return [baseButtonStyles, /*#__PURE__*/react$1.css("background-color:", designSystem.customProperties.colorSurface, ";box-shadow:", designSystem.customProperties.shadow7, ";&:hover{box-shadow:", designSystem.customProperties.shadow8, ";}&:active{box-shadow:", designSystem.customProperties.shadow9, ";background-color:", designSystem.customProperties.colorNeutral95, ";}" + ("" ), "" )];
|
|
38
37
|
};
|
|
39
38
|
|
|
40
39
|
var _ref3 = {
|
|
@@ -45,75 +44,62 @@ var _ref3 = {
|
|
|
45
44
|
var DropdownHead = function DropdownHead(props) {
|
|
46
45
|
var _context;
|
|
47
46
|
|
|
48
|
-
return
|
|
49
|
-
css: _ref3
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
47
|
+
return jsxRuntime.jsxs("div", {
|
|
48
|
+
css: _ref3,
|
|
49
|
+
children: [jsxRuntime.jsxs(AccessibleButton__default["default"], {
|
|
50
|
+
label: props.children,
|
|
51
|
+
onClick: props.onClick,
|
|
52
|
+
isDisabled: props.isDisabled,
|
|
53
|
+
css: _concatInstanceProperty__default["default"](_context = []).call(_context, _toConsumableArray(getButtonStyles(props.isDisabled)), [/*#__PURE__*/react$1.css("padding:0 ", designSystem.customProperties.spacingS, ";border-radius:", designSystem.customProperties.borderRadius6, " 0 0 ", designSystem.customProperties.borderRadius6, ";" + ("" ), "" ), "" ]),
|
|
54
|
+
children: [jsxRuntime.jsx("span", {
|
|
55
|
+
css: /*#__PURE__*/react$1.css("margin:0 ", designSystem.customProperties.spacingXs, " 0 0;display:flex;align-items:center;justify-content:center;" + ("" ), "" ),
|
|
56
|
+
children: /*#__PURE__*/react.cloneElement(props.iconLeft, {
|
|
57
|
+
size: 'big',
|
|
58
|
+
color: props.isDisabled ? 'neutral60' : 'solid'
|
|
59
|
+
})
|
|
60
|
+
}), jsxRuntime.jsx("span", {
|
|
61
|
+
css: /*#__PURE__*/react$1.css("margin:0 ", designSystem.customProperties.spacingXs, " 0 0;display:flex;align-items:center;justify-content:center;" + ("" ), "" ),
|
|
62
|
+
children: jsxRuntime.jsx(Text__default["default"].Detail, {
|
|
63
|
+
tone: props.isDisabled ? 'secondary' : undefined,
|
|
64
|
+
children: props.children
|
|
65
|
+
})
|
|
66
|
+
})]
|
|
67
|
+
}), props.chevron]
|
|
68
|
+
});
|
|
65
69
|
};
|
|
66
70
|
|
|
67
|
-
DropdownHead.displayName = 'DropdownHead';
|
|
68
71
|
DropdownHead.propTypes = {};
|
|
72
|
+
DropdownHead.displayName = 'DropdownHead';
|
|
69
73
|
|
|
70
74
|
var _ref2 = {
|
|
71
75
|
name: "1jklb6q",
|
|
72
76
|
styles: "pointer-events:none;margin-top:3px"
|
|
73
77
|
} ;
|
|
74
78
|
|
|
75
|
-
var DropdownChevron = /*#__PURE__*/
|
|
79
|
+
var DropdownChevron = /*#__PURE__*/react.forwardRef(function (props, ref) {
|
|
76
80
|
var _context2;
|
|
77
81
|
|
|
78
|
-
return
|
|
82
|
+
return jsxRuntime.jsx(AccessibleButton__default["default"], {
|
|
79
83
|
ref: ref,
|
|
80
84
|
label: "Open Dropdown",
|
|
81
85
|
onClick: props.onClick,
|
|
82
86
|
isDisabled: props.isDisabled,
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
87
|
+
css: _concatInstanceProperty__default["default"](_context2 = []).call(_context2, _toConsumableArray(getButtonStyles(props.isDisabled)), [/*#__PURE__*/react$1.css("padding:0 ", designSystem.customProperties.spacingXs, ";border-left:1px solid ", designSystem.customProperties.colorNeutral, ";border-radius:0 ", designSystem.customProperties.borderRadius6, " ", designSystem.customProperties.borderRadius6, " 0;" + ("" ), "" ), "" ]),
|
|
88
|
+
children: jsxRuntime.jsx("div", {
|
|
89
|
+
// The margin-top is to center the icon as the caret visually looks too high otherwise
|
|
90
|
+
css: _ref2,
|
|
91
|
+
children: /*#__PURE__*/react.cloneElement(props.isOpen && !props.isDisabled ? jsxRuntime.jsx(icons.CaretUpIcon, {}) : jsxRuntime.jsx(icons.CaretDownIcon, {}), {
|
|
92
|
+
color: props.isDisabled ? 'neutral60' : 'solid',
|
|
93
|
+
size: 'small'
|
|
94
|
+
})
|
|
95
|
+
})
|
|
96
|
+
});
|
|
92
97
|
});
|
|
93
98
|
DropdownChevron.displayName = 'DropdownChevron';
|
|
94
|
-
DropdownChevron.propTypes = {
|
|
95
|
-
onClick: PropTypes__default['default'].func.isRequired,
|
|
96
|
-
isDisabled: PropTypes__default['default'].bool.isRequired,
|
|
97
|
-
isOpen: PropTypes__default['default'].bool.isRequired
|
|
98
|
-
};
|
|
99
99
|
|
|
100
|
-
var Options = _styled__default[
|
|
101
|
-
target: "
|
|
102
|
-
} )("position:absolute;z-index:5;width:100%;top:calc(", designSystem.customProperties.spacingS, " + ", designSystem.customProperties.bigButtonHeight, ");left:0;border:1px solid ", designSystem.customProperties.colorNeutral, ";border-radius:", designSystem.customProperties.borderRadius6, ";box-shadow:", designSystem.customProperties.shadow1, ";");
|
|
103
|
-
|
|
104
|
-
var Option = function Option(props) {
|
|
105
|
-
return react.jsx(AccessibleButton__default['default'], {
|
|
106
|
-
label: props.children,
|
|
107
|
-
onClick: props.onClick,
|
|
108
|
-
isDisabled: props.isDisabled,
|
|
109
|
-
css: [/*#__PURE__*/react.css("display:block;text-align:left;width:100%;padding:", designSystem.customProperties.spacingS, ";background-color:", designSystem.customProperties.colorSurface, ";&:first-of-type{border-radius:", designSystem.customProperties.borderRadius6, " ", designSystem.customProperties.borderRadius6, " 0 0;}&:last-of-type{border-radius:0 0 ", designSystem.customProperties.borderRadius6, " ", designSystem.customProperties.borderRadius6, ";}&:hover{background-color:", designSystem.customProperties.colorNeutral95, ";}" + ("" )), props.isDisabled && /*#__PURE__*/react.css("color:", designSystem.customProperties.colorNeutral, ";" + ("" )), "" ]
|
|
110
|
-
}, props.children);
|
|
111
|
-
};
|
|
112
|
-
Option.displayName = 'Option';
|
|
113
|
-
Option.propTypes = {};
|
|
114
|
-
Option.defaultProps = {
|
|
115
|
-
isDisabled: false
|
|
116
|
-
};
|
|
100
|
+
var Options = _styled__default["default"]("div", {
|
|
101
|
+
target: "eb24b7r0"
|
|
102
|
+
} )("position:absolute;z-index:5;width:100%;top:calc(", designSystem.customProperties.spacingS, " + ", designSystem.customProperties.bigButtonHeight, ");left:0;border:1px solid ", designSystem.customProperties.colorNeutral, ";border-radius:", designSystem.customProperties.borderRadius6, ";box-shadow:", designSystem.customProperties.shadow1, ";" + ("" ));
|
|
117
103
|
/*
|
|
118
104
|
This component registers a global click event listener to close the dropdown.
|
|
119
105
|
It uses this global listener to close when:
|
|
@@ -125,69 +111,91 @@ Option.defaultProps = {
|
|
|
125
111
|
immediately.
|
|
126
112
|
*/
|
|
127
113
|
|
|
114
|
+
|
|
128
115
|
var _ref = {
|
|
129
116
|
name: "47yzp9",
|
|
130
117
|
styles: "position:relative;display:inline-flex;align-items:column"
|
|
131
118
|
} ;
|
|
132
119
|
|
|
133
120
|
var PrimaryActionDropdown = function PrimaryActionDropdown(props) {
|
|
134
|
-
var ref =
|
|
121
|
+
var ref = react.useRef();
|
|
135
122
|
|
|
136
123
|
var _useToggleState = hooks.useToggleState(false),
|
|
137
124
|
_useToggleState2 = _slicedToArray(_useToggleState, 2),
|
|
138
125
|
isOpen = _useToggleState2[0],
|
|
139
126
|
toggle = _useToggleState2[1];
|
|
140
127
|
|
|
141
|
-
var handleGlobalClick =
|
|
128
|
+
var handleGlobalClick = react.useCallback(function (event) {
|
|
142
129
|
var dropdownButton = ref.current;
|
|
143
130
|
|
|
144
131
|
if (dropdownButton && event.target !== dropdownButton && !dropdownButton.contains(event.target)) {
|
|
145
132
|
toggle(false);
|
|
146
133
|
}
|
|
147
134
|
}, [ref, toggle]);
|
|
148
|
-
|
|
135
|
+
react.useEffect(function () {
|
|
149
136
|
window.addEventListener('click', handleGlobalClick);
|
|
150
137
|
return function () {
|
|
151
138
|
window.removeEventListener('click', handleGlobalClick);
|
|
152
139
|
};
|
|
153
140
|
}, [handleGlobalClick]);
|
|
154
|
-
var childrenAsArray =
|
|
155
|
-
var primaryOption = _findInstanceProperty__default[
|
|
156
|
-
return !option.props.isDisabled;
|
|
141
|
+
var childrenAsArray = react.Children.toArray(props.children);
|
|
142
|
+
var primaryOption = _findInstanceProperty__default["default"](childrenAsArray).call(childrenAsArray, function (option) {
|
|
143
|
+
return /*#__PURE__*/react.isValidElement(option) && !option.props.isDisabled;
|
|
157
144
|
}) || childrenAsArray[0];
|
|
158
145
|
var onClick = primaryOption.props.onClick;
|
|
159
|
-
var handleClickOnHead =
|
|
146
|
+
var handleClickOnHead = react.useCallback(function (event) {
|
|
160
147
|
if (isOpen) {
|
|
161
148
|
toggle(true);
|
|
162
149
|
} else {
|
|
163
150
|
onClick(event);
|
|
164
151
|
}
|
|
165
152
|
}, [isOpen, onClick, toggle]);
|
|
166
|
-
var handleClickOnChevron =
|
|
153
|
+
var handleClickOnChevron = react.useCallback(function () {
|
|
167
154
|
toggle();
|
|
168
155
|
}, [toggle]);
|
|
169
|
-
return
|
|
170
|
-
css: _ref
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
isDisabled: primaryOption.props.isDisabled,
|
|
174
|
-
onClick: handleClickOnHead,
|
|
175
|
-
chevron: react.jsx(DropdownChevron, {
|
|
176
|
-
ref: ref,
|
|
177
|
-
onClick: handleClickOnChevron,
|
|
156
|
+
return jsxRuntime.jsxs("div", {
|
|
157
|
+
css: _ref,
|
|
158
|
+
children: [jsxRuntime.jsx(DropdownHead, {
|
|
159
|
+
iconLeft: primaryOption.props.iconLeft,
|
|
178
160
|
isDisabled: primaryOption.props.isDisabled,
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
161
|
+
onClick: handleClickOnHead,
|
|
162
|
+
chevron: jsxRuntime.jsx(DropdownChevron, {
|
|
163
|
+
ref: ref,
|
|
164
|
+
onClick: handleClickOnChevron,
|
|
165
|
+
isDisabled: primaryOption.props.isDisabled,
|
|
166
|
+
isOpen: isOpen
|
|
167
|
+
}),
|
|
168
|
+
children: primaryOption.props.children
|
|
169
|
+
}), isOpen && !primaryOption.props.isDisabled && jsxRuntime.jsx(Options, {
|
|
170
|
+
children: childrenAsArray
|
|
171
|
+
})]
|
|
172
|
+
});
|
|
182
173
|
};
|
|
183
174
|
|
|
184
|
-
PrimaryActionDropdown.displayName = 'PrimaryActionDropdown';
|
|
185
175
|
PrimaryActionDropdown.propTypes = {};
|
|
176
|
+
PrimaryActionDropdown.displayName = 'PrimaryActionDropdown';
|
|
186
177
|
var PrimaryActionDropdown$1 = PrimaryActionDropdown;
|
|
187
178
|
|
|
188
|
-
|
|
189
|
-
|
|
179
|
+
var Option = function Option(props) {
|
|
180
|
+
return jsxRuntime.jsx(AccessibleButton__default["default"], {
|
|
181
|
+
label: props.children,
|
|
182
|
+
onClick: props.onClick,
|
|
183
|
+
isDisabled: props.isDisabled,
|
|
184
|
+
css: [/*#__PURE__*/react$1.css("display:block;text-align:left;width:100%;padding:", designSystem.customProperties.spacingS, ";background-color:", designSystem.customProperties.colorSurface, ";&:first-of-type{border-radius:", designSystem.customProperties.borderRadius6, " ", designSystem.customProperties.borderRadius6, " 0 0;}&:last-of-type{border-radius:0 0 ", designSystem.customProperties.borderRadius6, " ", designSystem.customProperties.borderRadius6, ";}&:hover{background-color:", designSystem.customProperties.colorNeutral95, ";}" + ("" ), "" ), props.isDisabled && /*#__PURE__*/react$1.css("color:", designSystem.customProperties.colorNeutral, ";" + ("" ), "" ), "" , "" ],
|
|
185
|
+
children: props.children
|
|
186
|
+
});
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
Option.propTypes = {};
|
|
190
|
+
Option.displayName = 'Option';
|
|
191
|
+
Option.defaultProps = {
|
|
192
|
+
isDisabled: false
|
|
193
|
+
};
|
|
194
|
+
var Option$1 = Option;
|
|
195
|
+
|
|
196
|
+
// NOTE: This string will be replaced on build time with the package version.
|
|
197
|
+
var version = "12.2.6";
|
|
190
198
|
|
|
191
|
-
exports.Option = Option;
|
|
192
|
-
exports[
|
|
199
|
+
exports.Option = Option$1;
|
|
200
|
+
exports["default"] = PrimaryActionDropdown$1;
|
|
193
201
|
exports.version = version;
|