@commonsku/styles 1.17.23 → 1.17.25

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/dist/index.cjs CHANGED
@@ -5,8 +5,8 @@ var styled = require('styled-components');
5
5
  var React = require('react');
6
6
  var reactDropzone = require('react-dropzone');
7
7
  var BaseSelect = require('react-select');
8
- var BaseCreatableSelect = require('react-select/creatable');
9
8
  var BaseAsyncSelect = require('react-select/async');
9
+ var BaseCreatableSelect = require('react-select/creatable');
10
10
  var reactBeautifulDnd = require('react-beautiful-dnd');
11
11
  var ReactDOM = require('react-dom');
12
12
  var dateFns = require('date-fns');
@@ -41,8 +41,8 @@ var ___default = /*#__PURE__*/_interopDefaultCompat(_);
41
41
  var styled__default = /*#__PURE__*/_interopDefaultCompat(styled);
42
42
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
43
43
  var BaseSelect__default = /*#__PURE__*/_interopDefaultCompat(BaseSelect);
44
- var BaseCreatableSelect__default = /*#__PURE__*/_interopDefaultCompat(BaseCreatableSelect);
45
44
  var BaseAsyncSelect__default = /*#__PURE__*/_interopDefaultCompat(BaseAsyncSelect);
45
+ var BaseCreatableSelect__default = /*#__PURE__*/_interopDefaultCompat(BaseCreatableSelect);
46
46
  var ReactDOM__default = /*#__PURE__*/_interopDefaultCompat(ReactDOM);
47
47
  var ReactDatePicker__default = /*#__PURE__*/_interopDefaultCompat(ReactDatePicker);
48
48
  var require$$0__namespace = /*#__PURE__*/_interopNamespaceCompat(require$$0);
@@ -1452,58 +1452,86 @@ var Theme = function (_a) {
1452
1452
  children));
1453
1453
  };
1454
1454
 
1455
+ var iconSizes$9 = {
1456
+ tiny: {
1457
+ width: 32,
1458
+ height: 32,
1459
+ viewBox: "0 0 32 32",
1460
+ fontSize: ".6em",
1461
+ defaultStrokeWidth: 3,
1462
+ },
1463
+ small: {
1464
+ width: 40,
1465
+ height: 40,
1466
+ viewBox: "0 0 40 40",
1467
+ fontSize: ".6em",
1468
+ defaultStrokeWidth: 3,
1469
+ },
1470
+ medium: {
1471
+ width: 48,
1472
+ height: 48,
1473
+ viewBox: "0 0 48 48",
1474
+ fontSize: ".8em",
1475
+ defaultStrokeWidth: 5,
1476
+ },
1477
+ large: {
1478
+ width: 72,
1479
+ height: 72,
1480
+ viewBox: "0 0 72 72",
1481
+ fontSize: "1em",
1482
+ defaultStrokeWidth: 5,
1483
+ },
1484
+ huge: {
1485
+ width: 96,
1486
+ height: 96,
1487
+ viewBox: "0 0 96 96",
1488
+ fontSize: "1em",
1489
+ defaultStrokeWidth: 5,
1490
+ },
1491
+ default: {
1492
+ height: 48,
1493
+ width: 48,
1494
+ viewBox: "0 0 48 48",
1495
+ fontSize: ".8em",
1496
+ defaultStrokeWidth: 5,
1497
+ },
1498
+ };
1455
1499
  function CircleProgressIcon(_a) {
1456
- var sqSize = _a.sqSize, strokeWidth = _a.strokeWidth, _b = _a.percentage, percentage = _b === void 0 ? 0 : _b, _c = _a.strokeColor, strokeColor = _c === void 0 ? teal.main : _c, _d = _a.textColor, textColor = _d === void 0 ? teal.main : _d, _e = _a.text, text = _e === void 0 ? '' : _e, _f = _a.textStyle, textStyle = _f === void 0 ? {} : _f, _g = _a.color; _g === void 0 ? teal.main : _g; var _h = _a.size, size = _h === void 0 ? "medium" : _h, _j = _a.altText, altText = _j === void 0 ? "Progress level" : _j, props = __rest(_a, ["sqSize", "strokeWidth", "percentage", "strokeColor", "textColor", "text", "textStyle", "color", "size", "altText"]);
1457
- var iconSizes = {
1458
- tiny: {
1459
- width: 32,
1460
- height: 32,
1461
- viewBox: "0 0 32 32",
1462
- },
1463
- small: {
1464
- width: 40,
1465
- height: 40,
1466
- viewBox: "0 0 40 40",
1467
- },
1468
- medium: {
1469
- width: 48,
1470
- height: 48,
1471
- viewBox: "0 0 48 48",
1472
- },
1473
- large: {
1474
- width: 72,
1475
- height: 72,
1476
- viewBox: "0 0 72 72",
1477
- },
1478
- huge: {
1479
- width: 96,
1480
- height: 96,
1481
- viewBox: "0 0 96 96",
1482
- },
1483
- default: {
1484
- height: 48,
1485
- width: 48,
1486
- viewBox: "0 0 48 48",
1487
- },
1488
- };
1489
- sqSize = iconSizes[size]["width"];
1490
- strokeWidth = size === "tiny" || size === "small" ? 3 : 5;
1491
- var radius = (sqSize - strokeWidth) / 2;
1492
- // const viewBox = `0 0 ${sqSize} ${sqSize}`;
1500
+ var strokeWidth = _a.strokeWidth, _b = _a.percentage, percentage = _b === void 0 ? 0 : _b, _c = _a.strokeColor, strokeColor = _c === void 0 ? teal.main : _c, _d = _a.textColor, textColor = _d === void 0 ? teal.main : _d, _e = _a.text, text = _e === void 0 ? "" : _e, _f = _a.textStyle, textStyle = _f === void 0 ? {} : _f, _g = _a.showCheckMarkOnComplete, showCheckMarkOnComplete = _g === void 0 ? false : _g, _h = _a.size, size = _h === void 0 ? "medium" : _h, _j = _a.altText, altText = _j === void 0 ? "Progress level" : _j, props = __rest(_a, ["strokeWidth", "percentage", "strokeColor", "textColor", "text", "textStyle", "showCheckMarkOnComplete", "size", "altText"]);
1501
+ var _k = iconSizes$9[size], width = _k.width, defaultStrokeWidth = _k.defaultStrokeWidth, fontSize = _k.fontSize; _k.viewBox;
1502
+ strokeWidth = strokeWidth || defaultStrokeWidth;
1503
+ var squareSize = width;
1504
+ var radius = (squareSize - strokeWidth) / 2;
1493
1505
  var dashArray = radius * Math.PI * 2;
1494
- var dashOffset = dashArray - dashArray * percentage / 100;
1495
- return React__default.default.createElement(SVG$1, __assign({ size: size, iconSizes: iconSizes, "aria-labelledby": "CircleProgressIcon" }, props),
1496
- React__default.default.createElement("title", { id: "CircleProgressIcon" }, text !== '' ? "".concat(text, " stage") : percentage ? "".concat(percentage, "% completed") : altText),
1497
- React__default.default.createElement("circle", { className: "circle-background", cx: sqSize / 2, cy: sqSize / 2, r: radius, strokeWidth: "".concat(strokeWidth, "px"), style: { fill: 'none', stroke: colors$1.disabledButtonBorder, } }),
1498
- React__default.default.createElement("circle", { className: "circle-progress", cx: sqSize / 2, cy: sqSize / 2, r: radius, strokeWidth: "".concat(strokeWidth, "px"), transform: "rotate(-90 ".concat(sqSize / 2, " ").concat(sqSize / 2, ")"), style: {
1506
+ var dashOffset = dashArray - (dashArray * percentage) / 100;
1507
+ var isComplete = percentage === 100;
1508
+ var renderInnerText = React.useCallback(function () { return (React__default.default.createElement("text", { className: "circle-text", x: "50%", y: "50%", dy: ".3em", textAnchor: "middle", style: __assign({ fontSize: fontSize, fontWeight: "bold", fill: textColor }, textStyle) }, text || "".concat(percentage, "%"))); }, [fontSize, textColor, textStyle, text, percentage]);
1509
+ var renderCheckMark = React.useCallback(function () {
1510
+ var preferredViewBox = 40;
1511
+ var scale = squareSize / preferredViewBox;
1512
+ var scaledPath = [
1513
+ { x: 12.0006 * scale, y: 21.599 * scale },
1514
+ { x: 17.5629 * scale, y: 27.1617 * scale },
1515
+ { x: 29.1621 * scale, y: 15.5625 * scale },
1516
+ ]
1517
+ .map(function (p) { return "".concat(p.x, ",").concat(p.y); })
1518
+ .join(" L");
1519
+ return (React__default.default.createElement("path", { d: "M".concat(scaledPath), stroke: strokeColor, strokeWidth: "".concat(strokeWidth, "px"), fill: "none" }));
1520
+ }, [squareSize, strokeColor, strokeWidth]);
1521
+ return (React__default.default.createElement(SVG$1, __assign({ size: size, iconSizes: iconSizes$9, "aria-labelledby": "CircleProgressIcon" }, props),
1522
+ React__default.default.createElement("title", { id: "CircleProgressIcon" }, altText || (text ? "".concat(text, " stage") : "".concat(percentage, "% completed"))),
1523
+ React__default.default.createElement("circle", { className: "circle-background", cx: squareSize / 2, cy: squareSize / 2, r: radius, strokeWidth: "".concat(strokeWidth, "px"), style: { fill: "none", stroke: colors$1.disabledButtonBorder } }),
1524
+ React__default.default.createElement("circle", { className: "circle-progress", cx: squareSize / 2, cy: squareSize / 2, r: radius, strokeWidth: "".concat(strokeWidth, "px"), transform: "rotate(-90 ".concat(squareSize / 2, " ").concat(squareSize / 2, ")"), style: {
1499
1525
  strokeDasharray: dashArray,
1500
1526
  strokeDashoffset: dashOffset,
1501
- fill: 'none',
1527
+ fill: "none",
1502
1528
  stroke: strokeColor,
1503
- strokeLinecap: 'round',
1504
- strokeLinejoin: 'round',
1529
+ strokeLinecap: "round",
1530
+ strokeLinejoin: "round",
1505
1531
  } }),
1506
- React__default.default.createElement("text", { className: "circle-text", x: "50%", y: "50%", dy: ".3em", textAnchor: "middle", style: __assign({ fontSize: size === "small" || size === "tiny" ? ".6em" : size === "medium" ? ".8em" : "1em", fontWeight: 'bold', fill: textColor }, textStyle) }, text || "".concat(percentage, "%")));
1532
+ showCheckMarkOnComplete && isComplete
1533
+ ? renderCheckMark()
1534
+ : renderInnerText()));
1507
1535
  }
1508
1536
 
1509
1537
  var SVG = styled__default.default.svg(templateObject_1$Y || (templateObject_1$Y = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), SharedStyles);
@@ -4095,20 +4123,24 @@ function skuSelectStyles(props) {
4095
4123
  valueContainer: function (provided, state) {
4096
4124
  return __assign(__assign(__assign({}, provided), { padding: '2px 8px' }), props.valueContainerStyles);
4097
4125
  },
4126
+ multiValue: function (provided, state) {
4127
+ return __assign(__assign(__assign({}, provided), { backgroundColor: getThemeColor(props, 'primary10', colors$1.primary10), color: getThemeColor(props, 'textbody', colors$1.textbody), borderRadius: 20, padding: '0.25rem' }), props.multiValueStyles);
4128
+ },
4098
4129
  };
4099
4130
  }
4100
- var skuSelectThemeByProps = function (props) { return function (theme) { return (__assign(__assign({}, theme), { borderRadius: 5, colors: __assign(__assign({}, theme.colors), { primary25: getThemeColor(props, 'primary0', colors$1.primary0), primary75: getThemeColor(props, 'primary0', colors$1.primary0), primary50: getThemeColor(props, 'primary10', colors$1.primary10), primary: getThemeColor(props, 'primary', colors$1.primary), neutral20: getThemeColor(props, 'select.border', colors$1.select.border), neutral30: getThemeColor(props, 'select.border', colors$1.select.border), neutral80: getThemeColor(props, 'textbody', colors$1.textbody), neutral90: getThemeColor(props, 'textbody', colors$1.textbody) }) })); }; };
4101
- // duplicate styles to overide .resku global styles
4102
- // : React.ForwardRefExoticComponent<SKUSelectProps & React.RefAttributes<BaseSelect>>
4103
- // React.ForwardRefExoticComponent<AdditionalSKUSelectProps & Omit<Pick<Props<unknown, boolean, GroupBase<unknown>>, "aria-errormessage" | "aria-invalid" | "aria-label" | ... 27 more ... | "form"> & InexactPartial<...> & InexactPartial<...>, StateManagedPropKeys> & Partial<...> & StateManagerAdditionalProps<...> & React.RefAttributes<...>>
4104
- var SKUSelect = React__default.default.forwardRef(function (_a, ref) {
4105
- var noMargin = _a.noMargin, menuRelative = _a.menuRelative, inPopup = _a.inPopup, error = _a.error, props = __rest(_a, ["noMargin", "menuRelative", "inPopup", "error"]);
4106
- var skuSelectTheme = skuSelectThemeByProps(props);
4131
+ function skuSelectThemeByProps(props) {
4132
+ return function (theme) { return (__assign(__assign({}, theme), { borderRadius: 5, colors: __assign(__assign({}, theme.colors), { primary25: getThemeColor(props, 'primary0', colors$1.primary0), primary75: getThemeColor(props, 'primary0', colors$1.primary0), primary50: getThemeColor(props, 'primary10', colors$1.primary10), primary: getThemeColor(props, 'primary', colors$1.primary), neutral20: getThemeColor(props, 'select.border', colors$1.select.border), neutral30: getThemeColor(props, 'select.border', colors$1.select.border), neutral80: getThemeColor(props, 'textbody', colors$1.textbody), neutral90: getThemeColor(props, 'textbody', colors$1.textbody) }) })); };
4133
+ }
4134
+
4135
+ function ForwardedSKUSelect(_a, ref) {
4136
+ var noMargin = _a.noMargin, menuRelative = _a.menuRelative, inPopup = _a.inPopup, error = _a.error, value = _a.value, isMulti = _a.isMulti, props = __rest(_a, ["noMargin", "menuRelative", "inPopup", "error", "value", "isMulti"]);
4137
+ var skuSelectTheme = skuSelectThemeByProps(__assign({ value: value, isMulti: isMulti }, props));
4107
4138
  var classNamePrefix = "".concat(error ? 'select-error' : '', " commonsku-styles-select");
4108
- var selectStyleProps = __assign(__assign({}, props), { noMargin: noMargin, menuRelative: menuRelative, inPopup: inPopup, error: error, classNamePrefix: classNamePrefix, theme: skuSelectTheme });
4109
- return React__default.default.createElement(BaseSelect__default.default, __assign({ ref: ref, classNamePrefix: classNamePrefix }, (inPopup ? popupStyles : {}), { styles: skuSelectStyles(selectStyleProps), theme: skuSelectTheme }, props));
4110
- });
4111
- var LabeledSelect = React__default.default.forwardRef(function (_a, ref) {
4139
+ var selectStyleProps = __assign(__assign({}, props), { value: value, isMulti: isMulti, noMargin: noMargin, menuRelative: menuRelative, inPopup: inPopup, error: error, classNamePrefix: classNamePrefix, theme: skuSelectTheme });
4140
+ return (React__default.default.createElement(BaseSelect__default.default, __assign({ value: value, isMulti: isMulti, ref: ref, classNamePrefix: classNamePrefix, styles: skuSelectStyles(selectStyleProps), theme: skuSelectTheme }, props, (inPopup ? popupStyles : {}))));
4141
+ }
4142
+ var SKUSelect = React__default.default.forwardRef(ForwardedSKUSelect);
4143
+ function ForwardedLabeledSelect(_a, ref) {
4112
4144
  var parentStyle = _a.parentStyle, labelStyle = _a.labelStyle, props = __rest(_a, ["parentStyle", "labelStyle"]);
4113
4145
  return (React__default.default.createElement("div", { style: parentStyle },
4114
4146
  React__default.default.createElement(Label, { htmlFor: props.name, style: labelStyle },
@@ -4116,39 +4148,46 @@ var LabeledSelect = React__default.default.forwardRef(function (_a, ref) {
4116
4148
  " ",
4117
4149
  props.required && '*'),
4118
4150
  React__default.default.createElement(SKUSelect, __assign({}, props, { ref: ref }))));
4119
- });
4120
- var SKUCreatableSelect = React__default.default.forwardRef(function (_a, ref) {
4121
- var noMargin = _a.noMargin, menuRelative = _a.menuRelative, inPopup = _a.inPopup, error = _a.error, props = __rest(_a, ["noMargin", "menuRelative", "inPopup", "error"]);
4122
- var skuSelectTheme = skuSelectThemeByProps(props);
4151
+ }
4152
+ var LabeledSelect = React__default.default.forwardRef(ForwardedLabeledSelect);
4153
+
4154
+ function ForwardedSKUAsyncSelect(_a, ref) {
4155
+ var noMargin = _a.noMargin, menuRelative = _a.menuRelative, inPopup = _a.inPopup, error = _a.error, value = _a.value, isMulti = _a.isMulti, props = __rest(_a, ["noMargin", "menuRelative", "inPopup", "error", "value", "isMulti"]);
4156
+ var skuSelectTheme = skuSelectThemeByProps(__assign({ value: value, isMulti: isMulti }, props));
4123
4157
  var classNamePrefix = "".concat(error ? 'select-error' : '', " commonsku-styles-select");
4124
- var selectStyleProps = __assign(__assign({}, props), { noMargin: noMargin, menuRelative: menuRelative, inPopup: inPopup, error: error, classNamePrefix: classNamePrefix, theme: skuSelectTheme });
4125
- return (React__default.default.createElement(BaseCreatableSelect__default.default, __assign({ ref: ref, classNamePrefix: classNamePrefix, styles: skuSelectStyles(selectStyleProps), theme: skuSelectTheme }, props, (inPopup ? popupStyles : {}))));
4126
- });
4127
- var LabeledCreatableSelect = React__default.default.forwardRef(function (_a, ref) {
4158
+ var selectStyleProps = __assign(__assign({}, props), { value: value, isMulti: isMulti, noMargin: noMargin, menuRelative: menuRelative, inPopup: inPopup, error: error, classNamePrefix: classNamePrefix, theme: skuSelectTheme });
4159
+ return (React__default.default.createElement(BaseAsyncSelect__default.default, __assign({ value: value, isMulti: isMulti, ref: ref, classNamePrefix: classNamePrefix, styles: skuSelectStyles(selectStyleProps), theme: skuSelectTheme }, props, (inPopup ? popupStyles : {}))));
4160
+ }
4161
+ var SKUAsyncSelect = React__default.default.forwardRef(ForwardedSKUAsyncSelect);
4162
+ function ForwardedLabeledAsyncSelect(_a, ref) {
4128
4163
  var parentStyle = _a.parentStyle, labelStyle = _a.labelStyle, props = __rest(_a, ["parentStyle", "labelStyle"]);
4129
4164
  return (React__default.default.createElement("div", { style: parentStyle },
4130
4165
  React__default.default.createElement(Label, { htmlFor: props.name, style: labelStyle },
4131
4166
  props.label,
4132
4167
  " ",
4133
4168
  props.required && '*'),
4134
- React__default.default.createElement(SKUCreatableSelect, __assign({}, props, { ref: ref }))));
4135
- });
4136
- var SKUAsyncSelect = React__default.default.forwardRef(function (_a, ref) {
4137
- var noMargin = _a.noMargin, menuRelative = _a.menuRelative, inPopup = _a.inPopup, error = _a.error, props = __rest(_a, ["noMargin", "menuRelative", "inPopup", "error"]);
4138
- var skuSelectTheme = skuSelectThemeByProps(props);
4169
+ React__default.default.createElement(SKUAsyncSelect, __assign({}, props, { ref: ref }))));
4170
+ }
4171
+ var LabeledAsyncSelect = React__default.default.forwardRef(ForwardedLabeledAsyncSelect);
4172
+
4173
+ function ForwardedSKUCreatableSelect(_a, ref) {
4174
+ var noMargin = _a.noMargin, menuRelative = _a.menuRelative, inPopup = _a.inPopup, error = _a.error, value = _a.value, isMulti = _a.isMulti, props = __rest(_a, ["noMargin", "menuRelative", "inPopup", "error", "value", "isMulti"]);
4175
+ var skuSelectTheme = skuSelectThemeByProps(__assign({ value: value, isMulti: isMulti }, props));
4139
4176
  var classNamePrefix = "".concat(error ? 'select-error' : '', " commonsku-styles-select");
4140
- var selectStyleProps = __assign(__assign({}, props), { noMargin: noMargin, menuRelative: menuRelative, inPopup: inPopup, error: error, classNamePrefix: classNamePrefix, theme: skuSelectTheme });
4141
- return (React__default.default.createElement(BaseAsyncSelect__default.default, __assign({ ref: ref, classNamePrefix: classNamePrefix, styles: skuSelectStyles(selectStyleProps), theme: skuSelectTheme }, props, (inPopup ? popupStyles : {}))));
4142
- });
4143
- var LabeledAsyncSelect = React__default.default.forwardRef(function (_a, ref) {
4177
+ var selectStyleProps = __assign(__assign({}, props), { value: value, isMulti: isMulti, noMargin: noMargin, menuRelative: menuRelative, inPopup: inPopup, error: error, classNamePrefix: classNamePrefix, theme: skuSelectTheme });
4178
+ return (React__default.default.createElement(BaseCreatableSelect__default.default, __assign({ value: value, isMulti: isMulti, ref: ref, classNamePrefix: classNamePrefix, styles: skuSelectStyles(selectStyleProps), theme: skuSelectTheme }, props, (inPopup ? popupStyles : {}))));
4179
+ }
4180
+ var SKUCreatableSelect = React__default.default.forwardRef(ForwardedSKUCreatableSelect);
4181
+ function ForwardedLabeledCreatableSelect(_a, ref) {
4144
4182
  var parentStyle = _a.parentStyle, labelStyle = _a.labelStyle, props = __rest(_a, ["parentStyle", "labelStyle"]);
4145
4183
  return (React__default.default.createElement("div", { style: parentStyle },
4146
4184
  React__default.default.createElement(Label, { htmlFor: props.name, style: labelStyle },
4147
4185
  props.label,
4148
4186
  " ",
4149
4187
  props.required && '*'),
4150
- React__default.default.createElement(SKUAsyncSelect, __assign({}, props, { ref: ref }))));
4151
- });
4188
+ React__default.default.createElement(SKUCreatableSelect, __assign({}, props, { ref: ref }))));
4189
+ }
4190
+ var LabeledCreatableSelect = React__default.default.forwardRef(ForwardedLabeledCreatableSelect);
4152
4191
 
4153
4192
  var Backdrop = styled__default.default.div(templateObject_1$G || (templateObject_1$G = __makeTemplateObject(["\n position: fixed;\n width: 100%;\n height: 100%;\n background-color: rgba(67, 83, 91, .3);\n z-index: 100;\n transition: all ", "s ease-in-out;\n -moz-transition: all ", "s ease-in-out;\n -webkit-transition: all ", "s ease-in-out;\n opacity: 0.8;\n"], ["\n position: fixed;\n width: 100%;\n height: 100%;\n background-color: rgba(67, 83, 91, .3);\n z-index: 100;\n transition: all ", "s ease-in-out;\n -moz-transition: all ", "s ease-in-out;\n -webkit-transition: all ", "s ease-in-out;\n opacity: 0.8;\n"])), function (p) { return ((p.animationDuration || 300) / 1000); }, function (p) { return ((p.animationDuration || 300) / 1000); }, function (p) { return ((p.animationDuration || 300) / 1000); });
4154
4193
  var templateObject_1$G;
@@ -5635,6 +5674,108 @@ var Dropdown = function (_a) {
5635
5674
  };
5636
5675
  var templateObject_1$p, templateObject_2$b, templateObject_3$6;
5637
5676
 
5677
+ var menuContainerStyles = {
5678
+ position: 'absolute',
5679
+ width: '100%',
5680
+ };
5681
+ var subMenuContainerStyles = {
5682
+ position: 'absolute',
5683
+ width: 'max-content',
5684
+ };
5685
+ var menuStyles = {
5686
+ position: 'relative',
5687
+ marginBottom: '0px !important',
5688
+ };
5689
+ var subMenuStyles = {
5690
+ position: 'relative',
5691
+ borderTop: '1px solid',
5692
+ borderTopRightRadius: '5px',
5693
+ marginTop: 0,
5694
+ };
5695
+ var ParentOption = function (_a) {
5696
+ var setFocusedOption = _a.setFocusedOption, OptionComponent = _a.OptionComponent, props = __rest(_a, ["setFocusedOption", "OptionComponent"]);
5697
+ var option = props.data, isFocused = props.isFocused;
5698
+ React.useEffect(function () {
5699
+ if (isFocused) {
5700
+ setFocusedOption(option);
5701
+ }
5702
+ }, [option, isFocused, setFocusedOption]);
5703
+ if (OptionComponent != null) {
5704
+ return (React__default.default.createElement(OptionComponent, __assign({}, props)));
5705
+ }
5706
+ return (React__default.default.createElement(BaseSelect.components.Option, __assign({}, props)));
5707
+ };
5708
+ var BasePanelledSelect = function (_a, ref) {
5709
+ var value = _a.value, options = _a.options, onChange = _a.onChange, subMenuProps = _a.subMenuProps, components = _a.components, closeMenuOnSelect = _a.closeMenuOnSelect, _b = _a.hideSelectedOptions, hideSelectedOptions = _b === void 0 ? false : _b, props = __rest(_a, ["value", "options", "onChange", "subMenuProps", "components", "closeMenuOnSelect", "hideSelectedOptions"]);
5710
+ var error = props.error, isMulti = props.isMulti;
5711
+ var _c = React.useState(false), isOpen = _c[0], setOpen = _c[1];
5712
+ var _d = React.useState(undefined), focusedOption = _d[0], setFocusedOption = _d[1];
5713
+ var _e = React.useState(0), menuHeight = _e[0], setMenuHeight = _e[1];
5714
+ var _f = React.useState(0), controlHeight = _f[0], setControlHeight = _f[1];
5715
+ var menuRef = React.useRef(null);
5716
+ var controlRef = React.useRef(null);
5717
+ var windowSize = useWindowSize();
5718
+ React.useLayoutEffect(function () {
5719
+ if (menuRef.current != null) {
5720
+ setMenuHeight(menuRef.current.offsetHeight);
5721
+ }
5722
+ if (controlRef.current != null) {
5723
+ setControlHeight(controlRef.current.offsetHeight);
5724
+ }
5725
+ }, [windowSize, isOpen, value]);
5726
+ var hasSubOptions = React.useCallback(function (option) {
5727
+ return option != null && option.subOptions != null && option.subOptions.length > 0;
5728
+ }, []);
5729
+ var currentSubOptions = React.useMemo(function () {
5730
+ if (focusedOption != null && hasSubOptions(focusedOption)) {
5731
+ return focusedOption.subOptions;
5732
+ }
5733
+ return undefined;
5734
+ }, [hasSubOptions, focusedOption]);
5735
+ var onValueChange = function (newValue, actionMeta) {
5736
+ if (onChange == null)
5737
+ return;
5738
+ if (newValue == null) {
5739
+ onChange(newValue, actionMeta);
5740
+ }
5741
+ if (isMulti) {
5742
+ var multiValue = newValue;
5743
+ var singleValues = multiValue.filter(function (opt) { return !hasSubOptions(opt); });
5744
+ onChange(singleValues, actionMeta);
5745
+ return;
5746
+ }
5747
+ if (!hasSubOptions(newValue)) {
5748
+ onChange(newValue, actionMeta);
5749
+ if (closeMenuOnSelect !== null && closeMenuOnSelect !== void 0 ? closeMenuOnSelect : !isMulti) {
5750
+ setOpen(false);
5751
+ }
5752
+ }
5753
+ };
5754
+ var onSubValueChange = function (newSubValue, actionMeta) {
5755
+ if (onChange != null) {
5756
+ onChange(newSubValue, actionMeta);
5757
+ }
5758
+ if (closeMenuOnSelect !== null && closeMenuOnSelect !== void 0 ? closeMenuOnSelect : !isMulti) {
5759
+ setOpen(false);
5760
+ }
5761
+ };
5762
+ var renderParentOption = React.useCallback(function (props) { return (React__default.default.createElement(ParentOption, __assign({ setFocusedOption: setFocusedOption, OptionComponent: components === null || components === void 0 ? void 0 : components.Option }, props))); }, [setFocusedOption, components === null || components === void 0 ? void 0 : components.Option]);
5763
+ var renderMenu = React.useCallback(function (props) { return (React__default.default.createElement("div", { style: __assign(__assign({}, menuContainerStyles), { top: controlHeight }), ref: menuRef },
5764
+ React__default.default.createElement(BaseSelect.components.Menu, __assign({}, props)))); }, [controlHeight]);
5765
+ var renderSubMenu = React.useCallback(function (props) { return (React__default.default.createElement("div", { style: subMenuContainerStyles },
5766
+ React__default.default.createElement(BaseSelect.components.Menu, __assign({}, props)))); }, []);
5767
+ var renderControl = React.useCallback(function (props) { return (React__default.default.createElement("div", { ref: controlRef },
5768
+ React__default.default.createElement(BaseSelect.components.Control, __assign({}, props)))); }, []);
5769
+ return (React__default.default.createElement("div", null,
5770
+ React__default.default.createElement(Row, null,
5771
+ React__default.default.createElement(SKUSelect, __assign({ value: value, options: options, onMenuOpen: function () { return setOpen(true); }, onMenuClose: function () { return setOpen(false); }, menuIsOpen: isOpen, ref: ref, components: __assign(__assign({}, components), { Option: renderParentOption, Menu: renderMenu, Control: renderControl }), onChange: onValueChange, menuStyles: menuStyles, hideSelectedOptions: hideSelectedOptions, closeMenuOnSelect: false }, props)),
5772
+ currentSubOptions != null &&
5773
+ React__default.default.createElement(SKUSelect, __assign({ value: value, options: currentSubOptions, menuIsOpen: isOpen, onChange: onSubValueChange, menuStyles: __assign(__assign({}, subMenuStyles), { height: menuHeight, top: controlHeight, borderTopColor: error
5774
+ ? getThemeColor(props, 'select.error.border', colors$1.select.error.border)
5775
+ : getThemeColor(props, 'select.active.border', colors$1.select.active.border) }), hideSelectedOptions: hideSelectedOptions, closeMenuOnSelect: false, isMulti: isMulti }, subMenuProps, { components: __assign(__assign({ Control: function () { return null; } }, (subMenuProps === null || subMenuProps === void 0 ? void 0 : subMenuProps.components)), { Menu: renderSubMenu }) })))));
5776
+ };
5777
+ var PanelledSelect = React.forwardRef(BasePanelledSelect);
5778
+
5638
5779
  var Badge = styled__default.default.span(templateObject_1$o || (templateObject_1$o = __makeTemplateObject(["\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: 700;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n background-color: ", ";\n color: ", ";\n border-radius: 10px;\n ", "\n"], ["\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: 700;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n background-color: ", ";\n color: ", ";\n border-radius: 10px;\n ", "\n"])), function (p) { return p.color === 'cta' ? colors$1.cta : p.color === 'grey' ? colors$1.primary0 : colors$1.primary; }, function (p) { return p.color === 'grey' ? colors$1.primary100 : colors$1.white; }, SharedStyles);
5639
5780
  var templateObject_1$o;
5640
5781
 
@@ -8756,6 +8897,7 @@ exports.Padding = Padding;
8756
8897
  exports.Page = Page;
8757
8898
  exports.PanelContact = PanelContact;
8758
8899
  exports.PanelTileContact = PanelTileContact;
8900
+ exports.PanelledSelect = PanelledSelect;
8759
8901
  exports.PendingApprovalIcon = PendingApprovalIcon;
8760
8902
  exports.PercentIcon = PercentIcon;
8761
8903
  exports.PinIcon = PinIcon;