@wavelengthusaf/components 4.1.2 → 4.1.3

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 CHANGED
@@ -14,6 +14,16 @@ npm install @wavelengthusaf/components
14
14
 
15
15
  ## Release Notes
16
16
 
17
+ ### 4.1.3
18
+
19
+ - 11/24/2025
20
+ - Added a prop: `onBlurCallback` to `WavelengthAutoComplete`, `WavelengthInput`, and `WavelengthDatePicker` so that `onBlur` can be handled with a user defined callback.
21
+
22
+ ### 4.1.2
23
+
24
+ - 11/12/2025
25
+ - Modified `WavelengthAutoComplete` to expose `placeholder` prop to allow injecting a default value
26
+
17
27
  ### 4.1.1
18
28
 
19
29
  - 10/27/2025
@@ -6748,6 +6748,7 @@ var WavelengthInput = _react.forwardRef.call(void 0,
6748
6748
  label,
6749
6749
  onChange,
6750
6750
  style: style3,
6751
+ onBlurCallback,
6751
6752
  ...rest
6752
6753
  }, ref) => {
6753
6754
  const internalRef = _react.useRef.call(void 0, null);
@@ -6828,9 +6829,21 @@ var WavelengthInput = _react.forwardRef.call(void 0,
6828
6829
  ]);
6829
6830
  _react.useEffect.call(void 0, () => {
6830
6831
  const el = internalRef.current;
6831
- if (!el || !onChange) return;
6832
+ if (!el || !onBlurCallback) return;
6832
6833
  const handler = (e) => {
6833
6834
  const input = _optionalChain([el, 'access', _42 => _42.shadowRoot, 'optionalAccess', _43 => _43.querySelector, 'call', _44 => _44("input")]);
6835
+ if (input) {
6836
+ onBlurCallback();
6837
+ }
6838
+ };
6839
+ el.addEventListener("blur", handler);
6840
+ return () => el.removeEventListener("blur", handler);
6841
+ }, [onBlurCallback]);
6842
+ _react.useEffect.call(void 0, () => {
6843
+ const el = internalRef.current;
6844
+ if (!el || !onChange) return;
6845
+ const handler = (e) => {
6846
+ const input = _optionalChain([el, 'access', _45 => _45.shadowRoot, 'optionalAccess', _46 => _46.querySelector, 'call', _47 => _47("input")]);
6834
6847
  if (input) {
6835
6848
  const synthetic = {
6836
6849
  ...e,
@@ -7033,7 +7046,7 @@ var WavelengthDataTable = ({ data, columns, itemsPerPage, totalPages }) => {
7033
7046
  const [noRowsOpen, setNoRowsOpen] = _react.useState.call(void 0, false);
7034
7047
  const [isModalOpen, setIsModalOpen] = _react.useState.call(void 0, false);
7035
7048
  const [searchItem, setSearchItem] = _react.useState.call(void 0, "");
7036
- const [selectedValue, setSelectedValue] = _react.useState.call(void 0, _optionalChain([columns, 'access', _45 => _45[0], 'optionalAccess', _46 => _46.key]) || "");
7049
+ const [selectedValue, setSelectedValue] = _react.useState.call(void 0, _optionalChain([columns, 'access', _48 => _48[0], 'optionalAccess', _49 => _49.key]) || "");
7037
7050
  const [currentPage, setCurrentPage] = _react.useState.call(void 0, 1);
7038
7051
  const [isOpen, setIsOpen] = _react.useState.call(void 0, false);
7039
7052
  const [editingMenuKey, setEditingMenuKey] = _react.useState.call(void 0, null);
@@ -7187,7 +7200,7 @@ var WavelengthDataTable = ({ data, columns, itemsPerPage, totalPages }) => {
7187
7200
  ] }, index)
7188
7201
  ] }, `headCell-${index}`);
7189
7202
  });
7190
- const rows = !_optionalChain([currentPageData, 'optionalAccess', _47 => _47.length]) || noRowsOpen ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "tr", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "td", { title: "NoDataRows", colSpan: columns.length, children: "No data" }) }) : _optionalChain([currentPageData, 'optionalAccess', _48 => _48.map, 'call', _49 => _49((item) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "tr", { children: columns.map((column, index2) => {
7203
+ const rows = !_optionalChain([currentPageData, 'optionalAccess', _50 => _50.length]) || noRowsOpen ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "tr", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "td", { title: "NoDataRows", colSpan: columns.length, children: "No data" }) }) : _optionalChain([currentPageData, 'optionalAccess', _51 => _51.map, 'call', _52 => _52((item) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "tr", { children: columns.map((column, index2) => {
7191
7204
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StyledTd, { children: editingId === item.id && editedColumnKey === column.key ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
7192
7205
  StyledInput,
7193
7206
  {
@@ -7433,7 +7446,7 @@ var ChildDataTable = ({ data, columns, downloadArrowOnClick, downloadMissionOnCl
7433
7446
  }
7434
7447
  if (sortSubOrder) {
7435
7448
  result.map(
7436
- (item) => _optionalChain([item, 'access', _50 => _50.Details, 'optionalAccess', _51 => _51.fileObjects, 'access', _52 => _52.sort, 'call', _53 => _53((c, d) => {
7449
+ (item) => _optionalChain([item, 'access', _53 => _53.Details, 'optionalAccess', _54 => _54.fileObjects, 'access', _55 => _55.sort, 'call', _56 => _56((c, d) => {
7437
7450
  const valueC = c[sortSubKey];
7438
7451
  const valueD = d[sortSubKey];
7439
7452
  if (typeof valueC === "string" && typeof valueD === "string") {
@@ -7494,24 +7507,24 @@ var ChildDataTable = ({ data, columns, downloadArrowOnClick, downloadMissionOnCl
7494
7507
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "th", { children: renderSortSubButton(column, sortSubOrder, sortSubKey) }, `SubHeadCell-${index}`);
7495
7508
  });
7496
7509
  const subDataRows = (itemId) => {
7497
- return processedRowData.filter((item) => _optionalChain([item, 'access', _54 => _54.Details, 'optionalAccess', _55 => _55.relationId]) === itemId).map((item) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.Fragment, { children: _optionalChain([item, 'access', _56 => _56.Details, 'optionalAccess', _57 => _57.fileObjects, 'access', _58 => _58.map, 'call', _59 => _59((fileItem, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, SubDataTableBodyRowContainer, { children: [
7510
+ return processedRowData.filter((item) => _optionalChain([item, 'access', _57 => _57.Details, 'optionalAccess', _58 => _58.relationId]) === itemId).map((item) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.Fragment, { children: _optionalChain([item, 'access', _59 => _59.Details, 'optionalAccess', _60 => _60.fileObjects, 'access', _61 => _61.map, 'call', _62 => _62((fileItem, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, SubDataTableBodyRowContainer, { children: [
7498
7511
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "td", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DownloadArrow, { onClick: downloadArrowOnClick, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { width: "17", height: "16", viewBox: "0 0 17 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
7499
7512
  "path",
7500
7513
  {
7501
7514
  d: "M8.5 12L3.5 7L4.9 5.55L7.5 8.15V0H9.5V8.15L12.1 5.55L13.5 7L8.5 12ZM2.5 16C1.95 16 1.47917 15.8042 1.0875 15.4125C0.695833 15.0208 0.5 14.55 0.5 14V11H2.5V14H14.5V11H16.5V14C16.5 14.55 16.3042 15.0208 15.9125 15.4125C15.5208 15.8042 15.05 16 14.5 16H2.5Z",
7502
7515
  fill: "#1C1B1F"
7503
7516
  }
7504
- ) }) }) }, `td-${_optionalChain([item, 'access', _60 => _60.Details, 'optionalAccess', _61 => _61.relationId])}-${fileItem.id}`),
7517
+ ) }) }) }, `td-${_optionalChain([item, 'access', _63 => _63.Details, 'optionalAccess', _64 => _64.relationId])}-${fileItem.id}`),
7505
7518
  SubDataColumns.map((column) => {
7506
7519
  const columnKey = trimBeforePeriod2(column.key);
7507
7520
  const value = fileItem[columnKey];
7508
7521
  if (value !== void 0) {
7509
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SubDataTableCell, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: value }, `span-${_optionalChain([item, 'access', _62 => _62.Details, 'optionalAccess', _63 => _63.relationId])}-${fileItem.id}-${index}-${column.title}`) }, `fileitem-${item}-${_optionalChain([item, 'access', _64 => _64.Details, 'optionalAccess', _65 => _65.relationId])}-${fileItem.id}-${index}-${column.title}`);
7522
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SubDataTableCell, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: value }, `span-${_optionalChain([item, 'access', _65 => _65.Details, 'optionalAccess', _66 => _66.relationId])}-${fileItem.id}-${index}-${column.title}`) }, `fileitem-${item}-${_optionalChain([item, 'access', _67 => _67.Details, 'optionalAccess', _68 => _68.relationId])}-${fileItem.id}-${index}-${column.title}`);
7510
7523
  }
7511
7524
  })
7512
- ] }, `${item}-${_optionalChain([item, 'access', _66 => _66.Details, 'optionalAccess', _67 => _67.relationId])}-${fileItem.id}-${index}`))]) }, `SDR-${item.id}-${_optionalChain([item, 'access', _68 => _68.Details, 'optionalAccess', _69 => _69.relationId])}`));
7525
+ ] }, `${item}-${_optionalChain([item, 'access', _69 => _69.Details, 'optionalAccess', _70 => _70.relationId])}-${fileItem.id}-${index}`))]) }, `SDR-${item.id}-${_optionalChain([item, 'access', _71 => _71.Details, 'optionalAccess', _72 => _72.relationId])}`));
7513
7526
  };
7514
- const dataRows = _optionalChain([processedRowData, 'optionalAccess', _70 => _70.map, 'call', _71 => _71((item, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, BodyRowContainer, { children: [
7527
+ const dataRows = _optionalChain([processedRowData, 'optionalAccess', _73 => _73.map, 'call', _74 => _74((item, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, BodyRowContainer, { children: [
7515
7528
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TableRow, { $amountofColumns: HeadColumns.length, children: HeadColumns.map((column) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TableBodyCell, { $primaryBoldState: column.PrimaryBoldText, children: item[column.key] }, `TableBodycell-${item.id}-${column.key}`)) }),
7516
7529
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, ButtonStylingRow, { children: [
7517
7530
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DownloadMissionButton, { onClick: downloadMissionOnClick, children: "Download Mission" }),
@@ -7631,9 +7644,9 @@ var NestedDataTable = ({ data, columns }) => {
7631
7644
  const SubDataHeaders = SubDataColumns.map((column, index) => {
7632
7645
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "th", { children: column.title }, `SubHeadCell-${index}`);
7633
7646
  });
7634
- const subDataRows = !_optionalChain([data, 'optionalAccess', _72 => _72.length]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "tr", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "td", { title: "NoSubDataRows", colSpan: columns.length, children: "No data" }) }) : data.map((item, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SubDataTr, { children: SubDataColumns.map((column, colIndex) => {
7647
+ const subDataRows = !_optionalChain([data, 'optionalAccess', _75 => _75.length]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "tr", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "td", { title: "NoSubDataRows", colSpan: columns.length, children: "No data" }) }) : data.map((item, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SubDataTr, { children: SubDataColumns.map((column, colIndex) => {
7635
7648
  const columnKey = trimBeforePeriod(column.key);
7636
- const value = _optionalChain([item, 'access', _73 => _73.Details, 'optionalAccess', _74 => _74[columnKey]]);
7649
+ const value = _optionalChain([item, 'access', _76 => _76.Details, 'optionalAccess', _77 => _77[columnKey]]);
7637
7650
  console.log("value: ", value);
7638
7651
  if (value !== void 0) {
7639
7652
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "td", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: value }) }, `Span-${item.id}-${colIndex}`);
@@ -7643,7 +7656,7 @@ var NestedDataTable = ({ data, columns }) => {
7643
7656
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "thead", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "tr", { children: SubDataHeaders }) }),
7644
7657
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "tbody", { children: subDataRows })
7645
7658
  ] });
7646
- const rows = !_optionalChain([data, 'optionalAccess', _75 => _75.length]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "tr", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "td", { title: "NoDataRows", colSpan: columns.length, children: "No data" }) }) : _optionalChain([data, 'optionalAccess', _76 => _76.map, 'call', _77 => _77((item, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
7659
+ const rows = !_optionalChain([data, 'optionalAccess', _78 => _78.length]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "tr", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "td", { title: "NoDataRows", colSpan: columns.length, children: "No data" }) }) : _optionalChain([data, 'optionalAccess', _79 => _79.map, 'call', _80 => _80((item, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
7647
7660
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, PrimaryTrRows, { $index: index, children: [
7648
7661
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DropdownButton, { onClick: () => toggleDropdown(index), children: isAscending && isOpen && primaryRowIndex === index ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: "\u2227" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: "\u2228" }) }),
7649
7662
  HeadColumns.map((column, index2) => {
@@ -7791,12 +7804,13 @@ var WavelengthAutoComplete = ({
7791
7804
  focusedLabelColor,
7792
7805
  id,
7793
7806
  name,
7794
- placeholder
7807
+ placeholder,
7808
+ onBlurCallback
7795
7809
  }) => {
7796
7810
  const inputRef = _react.useRef.call(void 0, null);
7797
7811
  const listRef = _react.useRef.call(void 0, null);
7798
7812
  const noItemListRef = _react.useRef.call(void 0, null);
7799
- const [inputValue, setInputValue] = _react.useState.call(void 0, _nullishCoalesce(placeholder, () => ( data[0])));
7813
+ const [inputValue, setInputValue] = _react.useState.call(void 0, _nullishCoalesce(placeholder, () => ( "")));
7800
7814
  const [suggestions, setSuggestions] = _react.useState.call(void 0, []);
7801
7815
  const [isDropdownVisible, setIsDropdownVisible] = _react.useState.call(void 0, false);
7802
7816
  const suggestHasItems = suggestions.length > 0;
@@ -7902,7 +7916,12 @@ var WavelengthAutoComplete = ({
7902
7916
  onClick: handleInputClick,
7903
7917
  onInput: handleChange,
7904
7918
  onKeyDown: handleKeyDown,
7905
- onBlur: handleBlur,
7919
+ onBlur: () => {
7920
+ handleBlur();
7921
+ if (onBlurCallback) {
7922
+ onBlurCallback();
7923
+ }
7924
+ },
7906
7925
  placeholder: "",
7907
7926
  autoComplete: "off"
7908
7927
  }
@@ -7995,7 +8014,8 @@ var WavelengthDatePicker = ({
7995
8014
  min,
7996
8015
  max,
7997
8016
  inputTimeType,
7998
- OnDataChange
8017
+ OnDataChange,
8018
+ onBlurCallback
7999
8019
  }) => {
8000
8020
  const [inputType, setInputType] = _react.useState.call(void 0, "");
8001
8021
  const [value, setValue] = _react.useState.call(void 0, "");
@@ -8061,7 +8081,12 @@ var WavelengthDatePicker = ({
8061
8081
  name,
8062
8082
  "data-testid": "my_wl_date_input",
8063
8083
  onFocus: handleFocus,
8064
- onBlur: handleBlur,
8084
+ onBlur: () => {
8085
+ handleBlur();
8086
+ if (onBlurCallback) {
8087
+ onBlurCallback();
8088
+ }
8089
+ },
8065
8090
  onChange: handleChange,
8066
8091
  value,
8067
8092
  placeholder: " ",
@@ -748,6 +748,7 @@ interface WavelengthInputProps extends React__default.HTMLAttributes<HTMLElement
748
748
  label?: string;
749
749
  onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
750
750
  style?: StyleProp;
751
+ onBlurCallback?: () => void;
751
752
  }
752
753
  declare const WavelengthInput: React__default.ForwardRefExoticComponent<WavelengthInputProps & React__default.RefAttributes<HTMLElement & {
753
754
  validate?: () => boolean;
@@ -846,9 +847,10 @@ interface AutocompleteProps {
846
847
  id?: string;
847
848
  name?: string;
848
849
  placeholder?: string;
850
+ onBlurCallback?: () => void;
849
851
  }
850
852
  declare const WavelengthAutoComplete: {
851
- ({ floatLabel, data, height, width, inputBorderStyle, inputFocusBorderColor, onDataChange, autoBackGroundColor, labelColor, focusedLabelColor, id, name, placeholder, }: AutocompleteProps): react_jsx_runtime.JSX.Element;
853
+ ({ floatLabel, data, height, width, inputBorderStyle, inputFocusBorderColor, onDataChange, autoBackGroundColor, labelColor, focusedLabelColor, id, name, placeholder, onBlurCallback, }: AutocompleteProps): react_jsx_runtime.JSX.Element;
852
854
  displayName: string;
853
855
  };
854
856
 
@@ -868,9 +870,10 @@ interface DateInputProps {
868
870
  FocusLabelColor?: string;
869
871
  id?: string;
870
872
  name?: string;
873
+ onBlurCallback?: () => void;
871
874
  }
872
875
  declare const WavelengthDatePicker: {
873
- ({ id, name, inputBorderStyle, floatLabel, labelColor, inputFocusBorderColor, FocusLabelColor, backgroundColor, height, width, min, max, inputTimeType, OnDataChange, }: DateInputProps): react_jsx_runtime.JSX.Element;
876
+ ({ id, name, inputBorderStyle, floatLabel, labelColor, inputFocusBorderColor, FocusLabelColor, backgroundColor, height, width, min, max, inputTimeType, OnDataChange, onBlurCallback, }: DateInputProps): react_jsx_runtime.JSX.Element;
874
877
  displayName: string;
875
878
  };
876
879
 
@@ -748,6 +748,7 @@ interface WavelengthInputProps extends React__default.HTMLAttributes<HTMLElement
748
748
  label?: string;
749
749
  onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
750
750
  style?: StyleProp;
751
+ onBlurCallback?: () => void;
751
752
  }
752
753
  declare const WavelengthInput: React__default.ForwardRefExoticComponent<WavelengthInputProps & React__default.RefAttributes<HTMLElement & {
753
754
  validate?: () => boolean;
@@ -846,9 +847,10 @@ interface AutocompleteProps {
846
847
  id?: string;
847
848
  name?: string;
848
849
  placeholder?: string;
850
+ onBlurCallback?: () => void;
849
851
  }
850
852
  declare const WavelengthAutoComplete: {
851
- ({ floatLabel, data, height, width, inputBorderStyle, inputFocusBorderColor, onDataChange, autoBackGroundColor, labelColor, focusedLabelColor, id, name, placeholder, }: AutocompleteProps): react_jsx_runtime.JSX.Element;
853
+ ({ floatLabel, data, height, width, inputBorderStyle, inputFocusBorderColor, onDataChange, autoBackGroundColor, labelColor, focusedLabelColor, id, name, placeholder, onBlurCallback, }: AutocompleteProps): react_jsx_runtime.JSX.Element;
852
854
  displayName: string;
853
855
  };
854
856
 
@@ -868,9 +870,10 @@ interface DateInputProps {
868
870
  FocusLabelColor?: string;
869
871
  id?: string;
870
872
  name?: string;
873
+ onBlurCallback?: () => void;
871
874
  }
872
875
  declare const WavelengthDatePicker: {
873
- ({ id, name, inputBorderStyle, floatLabel, labelColor, inputFocusBorderColor, FocusLabelColor, backgroundColor, height, width, min, max, inputTimeType, OnDataChange, }: DateInputProps): react_jsx_runtime.JSX.Element;
876
+ ({ id, name, inputBorderStyle, floatLabel, labelColor, inputFocusBorderColor, FocusLabelColor, backgroundColor, height, width, min, max, inputTimeType, OnDataChange, onBlurCallback, }: DateInputProps): react_jsx_runtime.JSX.Element;
874
877
  displayName: string;
875
878
  };
876
879
 
package/dist/esm/index.js CHANGED
@@ -6748,6 +6748,7 @@ var WavelengthInput = forwardRef(
6748
6748
  label,
6749
6749
  onChange,
6750
6750
  style: style3,
6751
+ onBlurCallback,
6751
6752
  ...rest
6752
6753
  }, ref) => {
6753
6754
  const internalRef = useRef8(null);
@@ -6826,6 +6827,18 @@ var WavelengthInput = forwardRef(
6826
6827
  label,
6827
6828
  disabled
6828
6829
  ]);
6830
+ useEffect9(() => {
6831
+ const el = internalRef.current;
6832
+ if (!el || !onBlurCallback) return;
6833
+ const handler = (e) => {
6834
+ const input = el.shadowRoot?.querySelector("input");
6835
+ if (input) {
6836
+ onBlurCallback();
6837
+ }
6838
+ };
6839
+ el.addEventListener("blur", handler);
6840
+ return () => el.removeEventListener("blur", handler);
6841
+ }, [onBlurCallback]);
6829
6842
  useEffect9(() => {
6830
6843
  const el = internalRef.current;
6831
6844
  if (!el || !onChange) return;
@@ -7791,12 +7804,13 @@ var WavelengthAutoComplete = ({
7791
7804
  focusedLabelColor,
7792
7805
  id,
7793
7806
  name,
7794
- placeholder
7807
+ placeholder,
7808
+ onBlurCallback
7795
7809
  }) => {
7796
7810
  const inputRef = useRef11(null);
7797
7811
  const listRef = useRef11(null);
7798
7812
  const noItemListRef = useRef11(null);
7799
- const [inputValue, setInputValue] = useState12(placeholder ?? data[0]);
7813
+ const [inputValue, setInputValue] = useState12(placeholder ?? "");
7800
7814
  const [suggestions, setSuggestions] = useState12([]);
7801
7815
  const [isDropdownVisible, setIsDropdownVisible] = useState12(false);
7802
7816
  const suggestHasItems = suggestions.length > 0;
@@ -7902,7 +7916,12 @@ var WavelengthAutoComplete = ({
7902
7916
  onClick: handleInputClick,
7903
7917
  onInput: handleChange,
7904
7918
  onKeyDown: handleKeyDown,
7905
- onBlur: handleBlur,
7919
+ onBlur: () => {
7920
+ handleBlur();
7921
+ if (onBlurCallback) {
7922
+ onBlurCallback();
7923
+ }
7924
+ },
7906
7925
  placeholder: "",
7907
7926
  autoComplete: "off"
7908
7927
  }
@@ -7995,7 +8014,8 @@ var WavelengthDatePicker = ({
7995
8014
  min,
7996
8015
  max,
7997
8016
  inputTimeType,
7998
- OnDataChange
8017
+ OnDataChange,
8018
+ onBlurCallback
7999
8019
  }) => {
8000
8020
  const [inputType, setInputType] = useState13("");
8001
8021
  const [value, setValue] = useState13("");
@@ -8061,7 +8081,12 @@ var WavelengthDatePicker = ({
8061
8081
  name,
8062
8082
  "data-testid": "my_wl_date_input",
8063
8083
  onFocus: handleFocus,
8064
- onBlur: handleBlur,
8084
+ onBlur: () => {
8085
+ handleBlur();
8086
+ if (onBlurCallback) {
8087
+ onBlurCallback();
8088
+ }
8089
+ },
8065
8090
  onChange: handleChange,
8066
8091
  value,
8067
8092
  placeholder: " ",
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@wavelengthusaf/components",
3
3
  "author": "563 EWS - Wavelength",
4
4
  "license": "MIT",
5
- "version": "4.1.2",
5
+ "version": "4.1.3",
6
6
  "description": "Common component library used by Wavelength developers",
7
7
  "main": "/dist/cjs/index.cjs",
8
8
  "module": "/dist/esm/index.js",