react-better-html 1.1.204 → 1.1.205

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
@@ -73,6 +73,7 @@ __export(index_exports, {
73
73
  generateRandomString: () => generateRandomString,
74
74
  getBrowser: () => getBrowser,
75
75
  getFormErrorObject: () => getFormErrorObject,
76
+ getPluralWord: () => getPluralWord,
76
77
  isMobileDevice: () => isMobileDevice,
77
78
  lightenColor: () => lightenColor,
78
79
  loaderControls: () => loaderControls,
@@ -5752,6 +5753,12 @@ var decryptString = (text) => {
5752
5753
  });
5753
5754
  return decrypted.toString(import_crypto_js.default.enc.Utf8);
5754
5755
  };
5756
+ var getPluralWord = (word, count) => {
5757
+ if (count === 1) return word;
5758
+ const needChangeY = word.slice(-1) === "y" && !["a", "e", "o", "u", "i"].includes(word.slice(-2, -1));
5759
+ const pluralWord = needChangeY ? word.slice(0, -1) + "ies" : word.slice(-1) === "s" ? word + "es" : word + "s";
5760
+ return pluralWord;
5761
+ };
5755
5762
 
5756
5763
  // src/components/Label.tsx
5757
5764
  var import_react17 = require("react");
@@ -5808,6 +5815,7 @@ var DropdownComponent = (0, import_react18.forwardRef)(function Dropdown({
5808
5815
  onChangeSearch,
5809
5816
  renderOption,
5810
5817
  renderOptionDivider,
5818
+ withMultiselect,
5811
5819
  id,
5812
5820
  ...props
5813
5821
  }, ref) {
@@ -5842,8 +5850,10 @@ var DropdownComponent = (0, import_react18.forwardRef)(function Dropdown({
5842
5850
  if (isOpen && filteredOptions.length > 0 && focusedOptionIndex !== void 0) {
5843
5851
  const option = filteredOptions[focusedOptionIndex];
5844
5852
  if (!option.disabled) {
5845
- if (controlledValue === void 0) setInternalValue(option.value);
5846
- onChange?.(option.value);
5853
+ const clickedValue = option.value;
5854
+ const newValue = withMultiselect ? Array.isArray(internalValue) ? internalValue?.includes(clickedValue) ? internalValue.filter((value2) => value2 !== clickedValue) : [...internalValue, clickedValue] : [clickedValue] : clickedValue;
5855
+ if (controlledValue === void 0) setInternalValue(newValue);
5856
+ onChange?.(newValue);
5847
5857
  setIsOpen.setFalse();
5848
5858
  inputRef.current?.blur();
5849
5859
  setSearchQuery("");
@@ -5872,20 +5882,32 @@ var DropdownComponent = (0, import_react18.forwardRef)(function Dropdown({
5872
5882
  }
5873
5883
  }
5874
5884
  },
5875
- [disabled, withSearch, isOpen, filteredOptions, focusedOptionIndex, controlledValue, onChange]
5885
+ [
5886
+ disabled,
5887
+ withSearch,
5888
+ isOpen,
5889
+ filteredOptions,
5890
+ focusedOptionIndex,
5891
+ internalValue,
5892
+ controlledValue,
5893
+ onChange,
5894
+ withMultiselect
5895
+ ]
5876
5896
  );
5877
5897
  const onClickOption = (0, import_react18.useCallback)(
5878
5898
  (option) => {
5879
5899
  if (!option.disabled) {
5880
- if (controlledValue === void 0) setInternalValue(option.value);
5881
- onChange?.(option.value);
5900
+ const clickedValue = option.value;
5901
+ const newValue = withMultiselect ? Array.isArray(internalValue) ? internalValue?.includes(clickedValue) ? internalValue.filter((value2) => value2 !== clickedValue) : [...internalValue, clickedValue] : [clickedValue] : clickedValue;
5902
+ if (controlledValue === void 0) setInternalValue(newValue);
5903
+ onChange?.(newValue);
5882
5904
  setIsOpen.setFalse();
5883
5905
  inputRef.current?.blur();
5884
5906
  setSearchQuery("");
5885
5907
  setFocusedOptionIndex(void 0);
5886
5908
  }
5887
5909
  },
5888
- [onChange, controlledValue]
5910
+ [onChange, internalValue, controlledValue, withMultiselect]
5889
5911
  );
5890
5912
  const onClickClearButton = (0, import_react18.useCallback)(
5891
5913
  (event) => {
@@ -5907,12 +5929,15 @@ var DropdownComponent = (0, import_react18.forwardRef)(function Dropdown({
5907
5929
  },
5908
5930
  [withDebounce, onChangeSearch]
5909
5931
  );
5910
- const selectedOption = (0, import_react18.useMemo)(() => options.find((option) => option.value === value), [options, value]);
5932
+ const selectedOption = (0, import_react18.useMemo)(
5933
+ () => withMultiselect ? options.filter((option) => Array.isArray(value) ? value.includes(option.value) : false) : options.find((option) => option.value === value),
5934
+ [options, value]
5935
+ );
5911
5936
  const renderedOptions = (0, import_react18.useMemo)(
5912
5937
  () => /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
5913
5938
  renderOptionDivider ? renderOptionDivider(void 0, filteredOptions[0], -1, 0) : void 0,
5914
5939
  filteredOptions.map((option, index) => {
5915
- const isSelected = option.value === value;
5940
+ const isSelected = withMultiselect ? Array.isArray(value) ? value.includes(option.value) : false : option.value === value;
5916
5941
  const isDisabled = option.disabled;
5917
5942
  const isFocused2 = index === focusedOptionIndex;
5918
5943
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_react18.Fragment, { children: [
@@ -5943,7 +5968,16 @@ var DropdownComponent = (0, import_react18.forwardRef)(function Dropdown({
5943
5968
  ] }, JSON.stringify(option));
5944
5969
  })
5945
5970
  ] }),
5946
- [filteredOptions, value, focusedOptionIndex, theme2.colors, onClickOption, renderOption, renderOptionDivider]
5971
+ [
5972
+ withMultiselect,
5973
+ filteredOptions,
5974
+ value,
5975
+ focusedOptionIndex,
5976
+ theme2.colors,
5977
+ onClickOption,
5978
+ renderOption,
5979
+ renderOptionDivider
5980
+ ]
5947
5981
  );
5948
5982
  (0, import_react18.useEffect)(() => {
5949
5983
  setInternalValue(controlledValue);
@@ -5981,34 +6015,50 @@ var DropdownComponent = (0, import_react18.forwardRef)(function Dropdown({
5981
6015
  if (!withDebounce) return;
5982
6016
  onChangeSearch?.(debouncedSearchQuery);
5983
6017
  }, [withDebounce, onChangeSearch, debouncedSearchQuery]);
5984
- const displayValue = withSearch && isFocused ? searchQuery : selectedOption?.label ?? "";
5985
- const withClearButton = isOpen && selectedOption;
5986
- const readyPlaceholder = placeholder ?? `Select an ${label?.toLowerCase() ?? "option"}`;
5987
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Div_default.column, { width: "100%", position: "relative", userSelect: "none", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(Div_default.row, { position: "relative", width: "100%", children: [
5988
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
5989
- InputField_default,
5990
- {
5991
- label,
5992
- labelColor,
5993
- errorText,
5994
- infoText,
5995
- required,
5996
- name,
5997
- disabled,
5998
- readOnly: !withSearch,
5999
- value: displayValue,
6000
- id,
6001
- cursor: !withSearch ? "pointer" : void 0,
6002
- placeholder: withSearch ? selectedOption ? selectedOption.label : readyPlaceholder : readyPlaceholder,
6003
- leftIcon,
6004
- autoComplete: "off",
6005
- className: `react-better-html-dropdown${isOpen ? " react-better-html-dropdown-open" : ""}${isOpenLate ? " react-better-html-dropdown-open-late" : ""}${inputFieldClassName ? ` ${inputFieldClassName}` : ""}`,
6006
- onClick: !disabled ? setIsOpen.toggle : void 0,
6007
- onFocus: setIsFocused.setTrue,
6008
- onBlur: setIsFocused.setFalse,
6009
- onKeyDown: onKeyDownInputField,
6010
- onChangeValue: withSearch ? onChangeValue : void 0,
6011
- insideInputFieldComponent: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
6018
+ const displayValue = (withSearch && isFocused && searchQuery.length > 0 ? searchQuery : !Array.isArray(selectedOption) ? selectedOption?.label : void 0) ?? "";
6019
+ const withClearButton = isOpen && (Array.isArray(selectedOption) ? selectedOption.length > 0 : selectedOption);
6020
+ const readyPlaceholder = placeholder ?? `Select ${!withMultiselect ? "an " : ""}${label?.toLowerCase() ?? getPluralWord("option", withMultiselect ? 2 : 1)}`;
6021
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Div_default.column, { width: "100%", position: "relative", userSelect: "none", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
6022
+ InputField_default,
6023
+ {
6024
+ label,
6025
+ labelColor,
6026
+ errorText,
6027
+ infoText,
6028
+ required,
6029
+ name,
6030
+ disabled,
6031
+ readOnly: !withSearch,
6032
+ value: displayValue,
6033
+ id,
6034
+ cursor: !withSearch ? "pointer" : void 0,
6035
+ placeholder: withSearch ? selectedOption && !Array.isArray(selectedOption) ? selectedOption.label : readyPlaceholder : readyPlaceholder,
6036
+ leftIcon,
6037
+ autoComplete: "off",
6038
+ className: `react-better-html-dropdown${Array.isArray(selectedOption) && selectedOption.length > 0 ? " react-better-html-dropdown-multiselect" : ""}${isOpen ? " react-better-html-dropdown-open" : ""}${isOpenLate ? " react-better-html-dropdown-open-late" : ""}${inputFieldClassName ? ` ${inputFieldClassName}` : ""}`,
6039
+ onClick: !disabled ? setIsOpen.toggle : void 0,
6040
+ onFocus: setIsFocused.setTrue,
6041
+ onBlur: setIsFocused.setFalse,
6042
+ onKeyDown: onKeyDownInputField,
6043
+ onChangeValue: withSearch ? onChangeValue : void 0,
6044
+ insideInputFieldBeforeComponent: Array.isArray(selectedOption) && selectedOption.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
6045
+ Div_default,
6046
+ {
6047
+ width: "100%",
6048
+ backgroundColor: theme2.colors.backgroundContent,
6049
+ border: `solid 1px ${theme2.colors.border}`,
6050
+ borderColor: isFocused ? theme2.colors.primary : void 0,
6051
+ borderBottom: "none",
6052
+ borderTopLeftRadius: theme2.styles.borderRadius,
6053
+ borderTopRightRadius: theme2.styles.borderRadius,
6054
+ paddingBlock: theme2.styles.gap,
6055
+ paddingInline: (theme2.styles.space + theme2.styles.gap) / 2,
6056
+ transition: theme2.styles.transition,
6057
+ children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Div_default.row, { width: "100%", flexWrap: "wrap", gap: theme2.styles.gap, children: selectedOption.map((option) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Chip_default, { text: option.label }, JSON.stringify(option))) })
6058
+ }
6059
+ ) : void 0,
6060
+ insideInputFieldAfterComponent: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
6061
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
6012
6062
  Div_default,
6013
6063
  {
6014
6064
  position: "absolute",
@@ -6033,60 +6083,61 @@ var DropdownComponent = (0, import_react18.forwardRef)(function Dropdown({
6033
6083
  children: isLoadingDebouncedSearchQuery || debounceIsLoading ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Div_default, { padding: `${theme2.styles.space / 2}px ${theme2.styles.space + theme2.styles.gap}px`, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Loader_default.text, {}) }) : filteredOptions.length ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_jsx_runtime16.Fragment, { children: (withoutRenderingOptionsWhenClosed ? isOpen || isOpenLate : true) ? renderedOptions : void 0 }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Div_default, { padding: `${theme2.styles.space / 2}px ${theme2.styles.space + theme2.styles.gap}px`, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Text_default.unknown, { textAlign: "left", children: debounceMinimumSymbolsRequired !== void 0 && searchQuery.length < debounceMinimumSymbolsRequired ? `Enter at least ${debounceMinimumSymbolsRequired} characters` : "No options" }) })
6034
6084
  }
6035
6085
  ),
6036
- role: "combobox",
6037
- "aria-expanded": isOpen,
6038
- "aria-controls": "dropdown-list",
6039
- "aria-haspopup": "listbox",
6040
- "aria-label": label,
6041
- holderRef: inputFieldHolderRef,
6042
- ref: inputRef
6043
- }
6044
- ),
6045
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
6046
- Div_default.row,
6047
- {
6048
- position: "absolute",
6049
- top: 46 / 2 + (label ? 16 + theme2.styles.gap / 2 : 0),
6050
- right: theme2.styles.space + 1,
6051
- alignItems: "center",
6052
- gap: theme2.styles.gap,
6053
- transform: "translateY(-50%)",
6054
- pointerEvents: "none",
6055
- filter: disabled ? "brightness(0.9)" : void 0,
6056
- opacity: disabled ? 0.6 : void 0,
6057
- zIndex: isOpen || isOpenLate ? 1001 : void 0,
6058
- ref: buttonsRef,
6059
- children: [
6060
- !withoutClearButton && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
6061
- Button_default.icon,
6062
- {
6063
- icon: "XMark",
6064
- position: "relative",
6065
- size: 10,
6066
- iconSize: 14,
6067
- opacity: !withClearButton ? 0 : void 0,
6068
- pointerEvents: withClearButton ? "all" : void 0,
6069
- onClick: onClickClearButton,
6070
- disabled: !withClearButton
6071
- }
6072
- ),
6073
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
6074
- Icon_default,
6075
- {
6076
- name: "chevronDown",
6077
- position: "relative",
6078
- size: 16,
6079
- color: theme2.colors.textSecondary,
6080
- transform: `rotate(${isOpen ? 180 : 0}deg)`,
6081
- transition: theme2.styles.transition,
6082
- pointerEvents: "none",
6083
- "aria-hidden": true
6084
- }
6085
- )
6086
- ]
6087
- }
6088
- )
6089
- ] }) });
6086
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
6087
+ Div_default.row,
6088
+ {
6089
+ position: "absolute",
6090
+ top: 46 / 2,
6091
+ right: theme2.styles.space + 1,
6092
+ alignItems: "center",
6093
+ gap: theme2.styles.gap,
6094
+ transform: "translateY(-50%)",
6095
+ pointerEvents: "none",
6096
+ filter: disabled ? "brightness(0.9)" : void 0,
6097
+ opacity: disabled ? 0.6 : void 0,
6098
+ zIndex: isOpen || isOpenLate ? 1001 : void 0,
6099
+ ref: buttonsRef,
6100
+ children: [
6101
+ !withoutClearButton && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
6102
+ Button_default.icon,
6103
+ {
6104
+ icon: "XMark",
6105
+ position: "relative",
6106
+ size: 10,
6107
+ iconSize: 14,
6108
+ opacity: !withClearButton ? 0 : void 0,
6109
+ pointerEvents: withClearButton ? "all" : void 0,
6110
+ onClick: onClickClearButton,
6111
+ disabled: !withClearButton
6112
+ }
6113
+ ),
6114
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
6115
+ Icon_default,
6116
+ {
6117
+ name: "chevronDown",
6118
+ position: "relative",
6119
+ size: 16,
6120
+ color: theme2.colors.textSecondary,
6121
+ transform: `rotate(${isOpen ? 180 : 0}deg)`,
6122
+ transition: theme2.styles.transition,
6123
+ pointerEvents: "none",
6124
+ "aria-hidden": true
6125
+ }
6126
+ )
6127
+ ]
6128
+ }
6129
+ )
6130
+ ] }),
6131
+ role: "combobox",
6132
+ "aria-expanded": isOpen,
6133
+ "aria-controls": "dropdown-list",
6134
+ "aria-multiselectable": withMultiselect ? "true" : "false",
6135
+ "aria-haspopup": "listbox",
6136
+ "aria-label": label,
6137
+ holderRef: inputFieldHolderRef,
6138
+ ref: inputRef
6139
+ }
6140
+ ) });
6090
6141
  });
6091
6142
  DropdownComponent.countries = (0, import_react18.forwardRef)(function Countries({ ...props }, ref) {
6092
6143
  const theme2 = useTheme();
@@ -6441,6 +6492,12 @@ var InputElement = import_styled_components11.default.input.withConfig({
6441
6492
  &.react-better-html-dropdown {
6442
6493
  padding-right: ${(props) => props.theme.styles.space + 16 + props.theme.styles.space - 1}px;
6443
6494
 
6495
+ &.react-better-html-dropdown-multiselect {
6496
+ border-top: none;
6497
+ border-top-left-radius: 0px;
6498
+ border-top-right-radius: 0px;
6499
+ }
6500
+
6444
6501
  &.react-better-html-dropdown-open {
6445
6502
  border-bottom-left-radius: 0px;
6446
6503
  border-bottom-right-radius: 0px;
@@ -6513,7 +6570,8 @@ var InputFieldComponent = (0, import_react20.forwardRef)(function InputField({
6513
6570
  prefixBackgroundColor,
6514
6571
  suffix,
6515
6572
  suffixBackgroundColor,
6516
- insideInputFieldComponent,
6573
+ insideInputFieldBeforeComponent,
6574
+ insideInputFieldAfterComponent,
6517
6575
  withDebounce,
6518
6576
  debounceDelay = 0.5,
6519
6577
  onChange,
@@ -6579,59 +6637,62 @@ var InputFieldComponent = (0, import_react20.forwardRef)(function InputField({
6579
6637
  }
6580
6638
  ),
6581
6639
  /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(Div_default, { position: "relative", width: "100%", height: "fit-content", ref: holderRef, children: [
6582
- leftIcon && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
6583
- Icon_default,
6584
- {
6585
- name: leftIcon,
6586
- position: "absolute",
6587
- top: (props.type === "date" || props.type === "time" || props.type === "datetime-local" ? 48 : 46) / 2,
6588
- left: theme2.styles.space + 1,
6589
- transform: "translateY(-50%)",
6590
- pointerEvents: "none",
6591
- zIndex: leftIconZIndex
6592
- }
6593
- ),
6594
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
6595
- InputElement,
6596
- {
6597
- theme: theme2,
6598
- withLeftIcon: leftIcon !== void 0,
6599
- withRightIcon: rightIcon !== void 0,
6600
- withPrefix: prefix !== void 0,
6601
- withSuffix: suffix !== void 0,
6602
- required,
6603
- placeholder: placeholder ?? label,
6604
- id: readyId,
6605
- onChange: onChangeElement,
6606
- ...styledComponentStylesWithoutExcluded,
6607
- ...dataProps,
6608
- ...ariaProps,
6609
- ...restProps,
6610
- ref
6611
- }
6612
- ),
6613
- rightIcon ? onClickRightIcon ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
6614
- Button_default.icon,
6615
- {
6616
- icon: rightIcon,
6617
- position: "absolute",
6618
- top: 46 / 2,
6619
- right: theme2.styles.space + 1 - theme2.styles.space / 2,
6620
- transform: "translateY(-50%)",
6621
- onClick: onClickRightIcon
6622
- }
6623
- ) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
6624
- Icon_default,
6625
- {
6626
- name: rightIcon,
6627
- position: "absolute",
6628
- top: 46 / 2,
6629
- right: theme2.styles.space + 1,
6630
- transform: "translateY(-50%)",
6631
- pointerEvents: "none"
6632
- }
6633
- ) : void 0,
6634
- insideInputFieldComponent
6640
+ insideInputFieldBeforeComponent,
6641
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(Div_default, { position: "relative", width: "100%", height: "fit-content", children: [
6642
+ leftIcon && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
6643
+ Icon_default,
6644
+ {
6645
+ name: leftIcon,
6646
+ position: "absolute",
6647
+ top: (props.type === "date" || props.type === "time" || props.type === "datetime-local" ? 48 : 46) / 2,
6648
+ left: theme2.styles.space + 1,
6649
+ transform: "translateY(-50%)",
6650
+ pointerEvents: "none",
6651
+ zIndex: leftIconZIndex
6652
+ }
6653
+ ),
6654
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
6655
+ InputElement,
6656
+ {
6657
+ theme: theme2,
6658
+ withLeftIcon: leftIcon !== void 0,
6659
+ withRightIcon: rightIcon !== void 0,
6660
+ withPrefix: prefix !== void 0,
6661
+ withSuffix: suffix !== void 0,
6662
+ required,
6663
+ placeholder: placeholder ?? label,
6664
+ id: readyId,
6665
+ onChange: onChangeElement,
6666
+ ...styledComponentStylesWithoutExcluded,
6667
+ ...dataProps,
6668
+ ...ariaProps,
6669
+ ...restProps,
6670
+ ref
6671
+ }
6672
+ ),
6673
+ rightIcon ? onClickRightIcon ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
6674
+ Button_default.icon,
6675
+ {
6676
+ icon: rightIcon,
6677
+ position: "absolute",
6678
+ top: 46 / 2,
6679
+ right: theme2.styles.space + 1 - theme2.styles.space / 2,
6680
+ transform: "translateY(-50%)",
6681
+ onClick: onClickRightIcon
6682
+ }
6683
+ ) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
6684
+ Icon_default,
6685
+ {
6686
+ name: rightIcon,
6687
+ position: "absolute",
6688
+ top: 46 / 2,
6689
+ right: theme2.styles.space + 1,
6690
+ transform: "translateY(-50%)",
6691
+ pointerEvents: "none"
6692
+ }
6693
+ ) : void 0,
6694
+ insideInputFieldAfterComponent
6695
+ ] })
6635
6696
  ] }),
6636
6697
  suffix && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
6637
6698
  Div_default.row,
@@ -6947,7 +7008,7 @@ InputFieldComponent.date = (0, import_react20.forwardRef)(function Date2({ minDa
6947
7008
  InputFieldComponent,
6948
7009
  {
6949
7010
  type: "date",
6950
- insideInputFieldComponent: !isMobileIOS ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
7011
+ insideInputFieldAfterComponent: !isMobileIOS ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
6951
7012
  Div_default,
6952
7013
  {
6953
7014
  position: "absolute",
@@ -7018,7 +7079,7 @@ InputFieldComponent.dateTime = (0, import_react20.forwardRef)(function DateTime(
7018
7079
  InputFieldComponent,
7019
7080
  {
7020
7081
  type: "datetime-local",
7021
- insideInputFieldComponent: !isMobileIOS ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
7082
+ insideInputFieldAfterComponent: !isMobileIOS ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
7022
7083
  Div_default,
7023
7084
  {
7024
7085
  position: "absolute",
@@ -7159,7 +7220,7 @@ InputFieldComponent.time = (0, import_react20.forwardRef)(function Time({ ...pro
7159
7220
  InputFieldComponent,
7160
7221
  {
7161
7222
  type: "time",
7162
- insideInputFieldComponent: !isMobileIOS ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
7223
+ insideInputFieldAfterComponent: !isMobileIOS ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
7163
7224
  Div_default,
7164
7225
  {
7165
7226
  position: "absolute",
@@ -7262,7 +7323,7 @@ InputFieldComponent.color = (0, import_react20.forwardRef)(function Color2({ val
7262
7323
  InputFieldComponent,
7263
7324
  {
7264
7325
  type: "color",
7265
- insideInputFieldComponent: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
7326
+ insideInputFieldAfterComponent: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
7266
7327
  Div_default.row,
7267
7328
  {
7268
7329
  position: "absolute",
@@ -10052,6 +10113,7 @@ function generateLocalStorage() {
10052
10113
  generateRandomString,
10053
10114
  getBrowser,
10054
10115
  getFormErrorObject,
10116
+ getPluralWord,
10055
10117
  isMobileDevice,
10056
10118
  lightenColor,
10057
10119
  loaderControls,