@activecollab/components 2.0.228 → 2.0.230

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.js CHANGED
@@ -621,7 +621,9 @@
621
621
  yellowWarning: {
622
622
  name: "Yellow warning",
623
623
  color: "#FFCC6B"
624
- },
624
+ }
625
+ };
626
+ var aiColors = {
625
627
  aiGradient: {
626
628
  name: "AI Gradient",
627
629
  color: "linear-gradient(135deg, #4da2ed, #9f69e5, #ec43d8, #f72222)",
@@ -19571,7 +19573,7 @@
19571
19573
  componentId: "sc-uvsz9l-4"
19572
19574
  })(["display:flex;justify-content:center;"]);
19573
19575
 
19574
- var _excluded$B = ["mode", "selected", "min", "max", "onChange", "step", "size", "className", "placeholder", "triggerMode", "disabled", "invalid", "disableVirtualization"];
19576
+ var _excluded$B = ["mode", "selected", "min", "max", "onChange", "step", "size", "className", "placeholder", "triggerMode", "disabled", "invalid", "enableVirtualization", "addCustomTimeLabel"];
19575
19577
  nlp__default["default"].plugin(plg__default["default"]);
19576
19578
  var StyledInputTimeWrapper = styled__default["default"].div.withConfig({
19577
19579
  displayName: "InputTime__StyledInputTimeWrapper",
@@ -19579,7 +19581,8 @@
19579
19581
  })(["max-width:176px;flex:1;& .c-combo-box--list{min-width:176px;}"]);
19580
19582
  var renderOption$1 = function renderOption(option) {
19581
19583
  return /*#__PURE__*/React__default["default"].createElement("div", {
19582
- id: option.id
19584
+ id: option.id,
19585
+ "data-testid": "time-option-".concat(option.id)
19583
19586
  }, option.name);
19584
19587
  };
19585
19588
  var InputTime = function InputTime(_ref) {
@@ -19599,12 +19602,19 @@
19599
19602
  triggerMode = _ref.triggerMode,
19600
19603
  disabled = _ref.disabled,
19601
19604
  invalid = _ref.invalid,
19602
- disableVirtualization = _ref.disableVirtualization,
19605
+ _ref$enableVirtualiza = _ref.enableVirtualization,
19606
+ enableVirtualization = _ref$enableVirtualiza === void 0 ? false : _ref$enableVirtualiza,
19607
+ _ref$addCustomTimeLab = _ref.addCustomTimeLabel,
19608
+ addCustomTimeLabel = _ref$addCustomTimeLab === void 0 ? "Add" : _ref$addCustomTimeLab,
19603
19609
  rest = _objectWithoutProperties(_ref, _excluded$B);
19604
19610
  var _useState = React.useState(false),
19605
19611
  _useState2 = _slicedToArray(_useState, 2),
19606
19612
  isOpen = _useState2[0],
19607
19613
  setIsOpen = _useState2[1];
19614
+ var _useState3 = React.useState(undefined),
19615
+ _useState4 = _slicedToArray(_useState3, 2),
19616
+ search = _useState4[0],
19617
+ setSearch = _useState4[1];
19608
19618
  var generateTimeOptions = function generateTimeOptions() {
19609
19619
  var minTime = moment__default$1["default"](isValidTime(min) ? min : "00:00", "HH:mm");
19610
19620
  var maxTime = moment__default$1["default"](isValidTime(max) ? max : "23:45", "HH:mm");
@@ -19621,15 +19631,22 @@
19621
19631
  return moment__default$1["default"](option.id, "HH:mm").isSameOrAfter(minTime) && moment__default$1["default"](option.id, "HH:mm").isSameOrBefore(maxTime);
19622
19632
  });
19623
19633
  };
19624
- var timeOptions = generateTimeOptions();
19625
- var isValidDefaultSelected = defaultSelected ? timeOptions.some(function (opt) {
19626
- return opt.id === defaultSelected;
19627
- }) : false;
19628
- var _useState3 = React.useState(isValidDefaultSelected ? defaultSelected : undefined),
19629
- _useState4 = _slicedToArray(_useState3, 2),
19630
- selected = _useState4[0],
19631
- setSelected = _useState4[1];
19634
+ var _useState5 = React.useState(generateTimeOptions()),
19635
+ _useState6 = _slicedToArray(_useState5, 2),
19636
+ timeOptions = _useState6[0],
19637
+ setTimeOptions = _useState6[1];
19638
+ var isInOptions = React.useCallback(function (option) {
19639
+ return timeOptions.some(function (opt) {
19640
+ return opt.id === option;
19641
+ });
19642
+ }, [timeOptions]);
19643
+ var isValidDefaultSelected = defaultSelected ? isInOptions(defaultSelected) : false;
19644
+ var _useState7 = React.useState(isValidDefaultSelected ? defaultSelected : undefined),
19645
+ _useState8 = _slicedToArray(_useState7, 2),
19646
+ selected = _useState8[0],
19647
+ setSelected = _useState8[1];
19632
19648
  var handleInputChange = React.useCallback(function (text) {
19649
+ setSearch(text);
19633
19650
  if (/\d{1,2}:\d{2}/.test(text.trim())) {
19634
19651
  return;
19635
19652
  }
@@ -19646,6 +19663,27 @@
19646
19663
  }
19647
19664
  }
19648
19665
  }, [onChange, selected, timeOptions]);
19666
+ var handleEmptyAction = function handleEmptyAction(newTime) {
19667
+ var time = String(newTime);
19668
+ if (isValidTime(time)) {
19669
+ var newOption = {
19670
+ id: time,
19671
+ name: mode === "12" ? moment__default$1["default"](time, "HH:mm").format("hh:mm A") : time
19672
+ };
19673
+ var newOptions = [...timeOptions];
19674
+ var index = newOptions.findIndex(function (option) {
19675
+ return moment__default$1["default"](option.id, "HH:mm") > moment__default$1["default"](time, "HH:mm");
19676
+ });
19677
+ if (index === -1) {
19678
+ newOptions.push(newOption);
19679
+ } else {
19680
+ newOptions.splice(index, 0, newOption);
19681
+ }
19682
+ setTimeOptions(newOptions);
19683
+ onChange === null || onChange === void 0 || onChange(time);
19684
+ setSelected(time);
19685
+ }
19686
+ };
19649
19687
  var handleChange = function handleChange(e) {
19650
19688
  setSelected(e);
19651
19689
  onChange === null || onChange === void 0 || onChange(e);
@@ -19672,6 +19710,9 @@
19672
19710
  })) setSelected(defaultSelected);
19673
19711
  // eslint-disable-next-line react-hooks/exhaustive-deps
19674
19712
  }, [defaultSelected, timeOptions]);
19713
+ var isValid = function isValid(time) {
19714
+ return !isInOptions(time) && isValidTime(time);
19715
+ };
19675
19716
  return /*#__PURE__*/React__default["default"].createElement(StyledInputTimeWrapper, {
19676
19717
  className: classNames__default["default"]("c-input-time", className)
19677
19718
  }, /*#__PURE__*/React__default["default"].createElement(ComboBox, _extends({}, rest, {
@@ -19682,6 +19723,8 @@
19682
19723
  keepSameOptionsOrder: true,
19683
19724
  onInputChange: handleInputChange,
19684
19725
  onChange: handleChange,
19726
+ handleEmptyAction: handleEmptyAction,
19727
+ emptyValue: isValid(search) ? "".concat(addCustomTimeLabel, " ").concat(search) : undefined,
19685
19728
  forceCloseMenu: true,
19686
19729
  placeholder: placeholder,
19687
19730
  renderOption: renderOption$1,
@@ -19692,7 +19735,7 @@
19692
19735
  triggerMode: triggerMode,
19693
19736
  disabled: disabled,
19694
19737
  invalid: invalid,
19695
- disableVirtualization: disableVirtualization
19738
+ disableVirtualization: !enableVirtualization
19696
19739
  })));
19697
19740
  };
19698
19741
 
@@ -23869,7 +23912,7 @@
23869
23912
  note: colors$1.yellowWarning.color,
23870
23913
  default: colors$1.blueSky.color,
23871
23914
  neutral: colors$1.gray.color,
23872
- ai: colors$1.aiGradient.color
23915
+ ai: aiColors.aiGradient.color
23873
23916
  };
23874
23917
 
23875
23918
  // https://davidwalsh.name/hex-opacity
@@ -24410,6 +24453,7 @@
24410
24453
  exports._CommandPalette = _CommandPalette;
24411
24454
  exports._Dialog = _Dialog;
24412
24455
  exports._List = _List;
24456
+ exports.aiColors = aiColors;
24413
24457
  exports.colors = colors$1;
24414
24458
  exports.formatCurrency = formatCurrency;
24415
24459
  exports.formatHours = formatHours;