@useblu/ocean-react 1.53.0 → 1.54.1

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/index.js CHANGED
@@ -46430,27 +46430,35 @@ var CardListItem = function (_a) {
46430
46430
  };
46431
46431
 
46432
46432
  var Options = function (_a) {
46433
- var options = _a.options, onSelect = _a.onSelect;
46434
- return (e__default["default"].createElement("div", { className: "ods-chips__options" }, options.map(function (_a) {
46435
- var label = _a.label, value = _a.value;
46436
- return (e__default["default"].createElement("button", { key: label, type: "button", value: value, onClick: function () { return onSelect(label, value); }, className: "ods-chips__options--option" }, label));
46437
- })));
46433
+ var options = _a.options, _b = _a.selectedOptions, selectedOptions = _b === void 0 ? [] : _b, clearLabel = _a.clearLabel, filterLabel = _a.filterLabel, multiChoice = _a.multiChoice, onSelect = _a.onSelect, filterOptions = _a.filterOptions, clearOptions = _a.clearOptions;
46434
+ var columns = multiChoice ? Math.ceil(10 / 5) : 1;
46435
+ return (e__default["default"].createElement("div", { className: "ods-chips__options", "data-testid": "ods-chips-option" },
46436
+ e__default["default"].createElement("div", { className: classNames('ods-chips__options--content', "ods-chips__options--content--columns-".concat(columns)) }, options.map(function (_a) {
46437
+ var label = _a.label, value = _a.value;
46438
+ return (e__default["default"].createElement("button", { key: label, type: "button", value: value, onClick: function () { return onSelect(label, value); }, className: "ods-chips__options--option" },
46439
+ multiChoice && (e__default["default"].createElement(Checkbox, { checked: !!selectedOptions.find(function (option) { return option.value === value; }), readOnly: true })),
46440
+ label));
46441
+ })),
46442
+ multiChoice && (e__default["default"].createElement("div", { className: "ods-chips__options--footer" },
46443
+ e__default["default"].createElement("button", { type: "button", onClick: clearOptions, className: "ods-btn ods-btn--sm ods-btn--text" }, clearLabel),
46444
+ e__default["default"].createElement("button", { type: "button", onClick: filterOptions, className: "ods-btn ods-btn--sm ods-btn--primary" }, filterLabel)))));
46438
46445
  };
46439
46446
 
46440
46447
  var Chips = function (_a) {
46441
- var label = _a.label, counter = _a.counter, icon = _a.icon, disabled = _a.disabled, options = _a.options, onClick = _a.onClick, onChange = _a.onChange;
46448
+ var label = _a.label, icon = _a.icon, disabled = _a.disabled, defaultValue = _a.defaultValue, _b = _a.options, options = _b === void 0 ? [] : _b, _c = _a.multiChoice, multiChoice = _c === void 0 ? false : _c, _d = _a.clearLabel, clearLabel = _d === void 0 ? 'Limpar' : _d, _e = _a.filterLabel, filterLabel = _e === void 0 ? 'Filtrar' : _e, initialCounter = _a.initialCounter, onClick = _a.onClick, onChange = _a.onChange, onClose = _a.onClose;
46442
46449
  var wrapperRef = e.useRef(null);
46443
- var _b = e__default["default"].useState(false), selectionIsOpen = _b[0], setSelectionIsOpen = _b[1];
46444
- var _c = e__default["default"].useState({
46445
- label: '',
46446
- value: null
46447
- }), selectedOption = _c[0], setSelectedOption = _c[1];
46448
- e.useEffect(function () {
46449
- function handleClickOutside(event) {
46450
- if (wrapperRef.current && !wrapperRef.current.contains(event.target)) {
46451
- setSelectionIsOpen(false);
46452
- }
46450
+ var _f = e__default["default"].useState(0), counter = _f[0], setCounter = _f[1];
46451
+ var _g = e__default["default"].useState(false), selectionIsOpen = _g[0], setSelectionIsOpen = _g[1];
46452
+ var _h = e__default["default"].useState(defaultValue || multiChoice ? [] : { label: '', value: '' }), selectedOptions = _h[0], setSelectedOptions = _h[1];
46453
+ function handleClickOutside(event) {
46454
+ var target = event.target;
46455
+ if (wrapperRef.current && !wrapperRef.current.contains(target)) {
46456
+ setSelectionIsOpen(false);
46453
46457
  }
46458
+ if (onClose)
46459
+ onClose();
46460
+ }
46461
+ e.useEffect(function () {
46454
46462
  document.addEventListener('mousedown', handleClickOutside);
46455
46463
  return function () {
46456
46464
  document.removeEventListener('mousedown', handleClickOutside);
@@ -46465,23 +46473,62 @@ var Chips = function (_a) {
46465
46473
  }
46466
46474
  };
46467
46475
  var handleSelectOption = function (labelProp, value) {
46468
- setSelectedOption({ label: labelProp, value: value });
46476
+ if (!multiChoice) {
46477
+ setSelectedOptions({ label: labelProp, value: value });
46478
+ setSelectionIsOpen(false);
46479
+ if (onChange) {
46480
+ onChange({ label: labelProp, value: value });
46481
+ }
46482
+ return;
46483
+ }
46484
+ if (Array.isArray(selectedOptions)) {
46485
+ var copyOptions = __spreadArray$1([], selectedOptions, true);
46486
+ if (selectedOptions.find(function (option) { return option.value === value; })) {
46487
+ copyOptions = copyOptions.filter(function (option) { return option.value !== value; });
46488
+ }
46489
+ else {
46490
+ copyOptions.push({ label: labelProp, value: value });
46491
+ }
46492
+ setCounter(copyOptions.length);
46493
+ setSelectedOptions(copyOptions);
46494
+ if (onChange) {
46495
+ onChange(copyOptions);
46496
+ }
46497
+ }
46498
+ };
46499
+ var displayValue = function () {
46500
+ if (!Array.isArray(selectedOptions)) {
46501
+ return selectedOptions.value ? selectedOptions.label : label;
46502
+ }
46503
+ return label;
46504
+ };
46505
+ var clearOptions = function () {
46506
+ setSelectedOptions([]);
46507
+ setCounter(0);
46469
46508
  setSelectionIsOpen(false);
46470
46509
  if (onChange) {
46471
- onChange({ label: labelProp, value: value });
46510
+ onChange([]);
46472
46511
  }
46473
46512
  };
46513
+ var filterOptions = function () {
46514
+ setSelectionIsOpen(false);
46515
+ if (onClose)
46516
+ onClose();
46517
+ };
46474
46518
  return (e__default["default"].createElement("div", { className: "ods-chips", ref: wrapperRef },
46475
46519
  e__default["default"].createElement("button", { type: "button", onClick: handleClickChips, disabled: disabled, className: classNames('ods-chips__button', {
46476
46520
  'ods-chips__button--disabled': disabled,
46477
- 'ods-chips__button--active': selectionIsOpen || !!selectedOption.value
46521
+ 'ods-chips__button--active': selectionIsOpen ||
46522
+ (Array.isArray(selectedOptions)
46523
+ ? selectedOptions.length > 0
46524
+ : selectedOptions === null || selectedOptions === void 0 ? void 0 : selectedOptions.value)
46478
46525
  }) },
46479
46526
  icon || undefined,
46480
- e__default["default"].createElement("p", { className: "ods-chips__label" }, selectedOption.value ? selectedOption.label : label),
46481
- counter && (e__default["default"].createElement(Badge, { color: "brand", className: "ods-chips__badge" }, counter)),
46527
+ e__default["default"].createElement("p", { className: "ods-chips__label" }, displayValue()),
46528
+ (counter > 0 || initialCounter) && (e__default["default"].createElement(Badge, { color: "brand", className: "ods-chips__badge" }, initialCounter !== null && initialCounter !== void 0 ? initialCounter : counter)),
46482
46529
  options && (options === null || options === void 0 ? void 0 : options.length) > 0 && !selectionIsOpen && e__default["default"].createElement(J, null),
46483
46530
  options && (options === null || options === void 0 ? void 0 : options.length) > 0 && selectionIsOpen && e__default["default"].createElement(re, null)),
46484
- selectionIsOpen && options && (e__default["default"].createElement(Options, { options: options, onSelect: handleSelectOption }))));
46531
+ selectionIsOpen && options && (e__default["default"].createElement(Options, { options: options, onSelect: handleSelectOption, selectedOptions: Array.isArray(selectedOptions) ? selectedOptions : undefined, clearLabel: clearLabel, filterLabel: filterLabel, multiChoice: multiChoice, clearOptions: clearOptions, filterOptions: filterOptions }))));
46485
46532
  };
46486
46533
  Chips.displayName = 'Chips';
46487
46534