@bigbinary/neetoui 5.2.17 → 5.2.18

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.d.ts CHANGED
@@ -329,6 +329,9 @@ export type SelectProps = {
329
329
  labelProps?: LabelProps;
330
330
  optionRemapping?: { label?: string; value?: string };
331
331
  [key: string]: any;
332
+ fetchMore?: () => void;
333
+ totalOptionsCount?: number;
334
+ isAsyncLoadOptionEnabled?: boolean;
332
335
  };
333
336
 
334
337
  export type SpinnerProps = {
package/index.js CHANGED
@@ -23351,7 +23351,7 @@ var menuListCSS = function menuListCSS(_ref5) {
23351
23351
  WebkitOverflowScrolling: 'touch'
23352
23352
  };
23353
23353
  };
23354
- var MenuList = function MenuList(props) {
23354
+ var MenuList$1 = function MenuList(props) {
23355
23355
  var children = props.children,
23356
23356
  className = props.className,
23357
23357
  cx = props.cx,
@@ -24212,7 +24212,7 @@ var components = {
24212
24212
  Input: Input$1,
24213
24213
  LoadingIndicator: LoadingIndicator,
24214
24214
  Menu: Menu$1,
24215
- MenuList: MenuList,
24215
+ MenuList: MenuList$1,
24216
24216
  MenuPortal: MenuPortal,
24217
24217
  LoadingMessage: LoadingMessage,
24218
24218
  NoOptionsMessage: NoOptionsMessage,
@@ -27909,6 +27909,30 @@ var AsyncCreatableSelect = /*#__PURE__*/forwardRef$1(function (props, ref) {
27909
27909
  }, selectProps));
27910
27910
  });
27911
27911
 
27912
+ var Spinner = function Spinner(_ref) {
27913
+ var _ref$theme = _ref.theme,
27914
+ theme = _ref$theme === void 0 ? "dark" : _ref$theme,
27915
+ _ref$className = _ref.className,
27916
+ className = _ref$className === void 0 ? "" : _ref$className;
27917
+ var spinnerItemClassName = classnames$1("neeto-ui-spinner__item", {
27918
+ "neeto-ui-bg-gray-800": theme === "dark"
27919
+ }, {
27920
+ "neeto-ui-bg-white": theme === "light"
27921
+ });
27922
+ return /*#__PURE__*/React__default.createElement("span", {
27923
+ className: classnames$1("neeto-ui-spinner", [className]),
27924
+ "data-testid": "spinner"
27925
+ }, /*#__PURE__*/React__default.createElement("i", {
27926
+ className: spinnerItemClassName
27927
+ }), /*#__PURE__*/React__default.createElement("i", {
27928
+ className: spinnerItemClassName
27929
+ }), /*#__PURE__*/React__default.createElement("i", {
27930
+ className: spinnerItemClassName
27931
+ }), /*#__PURE__*/React__default.createElement("i", {
27932
+ className: spinnerItemClassName
27933
+ }));
27934
+ };
27935
+
27912
27936
  var _excluded$c = ["size", "label", "required", "error", "helpText", "className", "innerRef", "isCreateable", "strategy", "id", "labelProps", "value", "defaultValue", "components", "optionRemapping"];
27913
27937
  function ownKeys$b(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
27914
27938
  function _objectSpread$b(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$b(Object(source), !0).forEach(function (key) { _defineProperty$7(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$b(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -27976,6 +28000,41 @@ var ValueContainer = function ValueContainer(props) {
27976
28000
  })
27977
28001
  }));
27978
28002
  };
28003
+ var MenuList = function MenuList(props) {
28004
+ var _props$selectProps = props.selectProps,
28005
+ fetchMore = _props$selectProps.fetchMore,
28006
+ totalOptionsCount = _props$selectProps.totalOptionsCount,
28007
+ isAsyncLoadOptionEnabled = _props$selectProps.isAsyncLoadOptionEnabled,
28008
+ options = _props$selectProps.options;
28009
+ var hasMore = isAsyncLoadOptionEnabled && totalOptionsCount > options.length;
28010
+ var loaderRef = useRef();
28011
+ useEffect(function () {
28012
+ var observer = null;
28013
+ if (loaderRef.current && isAsyncLoadOptionEnabled) {
28014
+ observer = new IntersectionObserver(function (entries) {
28015
+ return entries[0].isIntersecting && fetchMore();
28016
+ }, {
28017
+ root: null,
28018
+ rootMargin: "0px",
28019
+ threshold: 0.1
28020
+ });
28021
+ observer.observe(loaderRef.current);
28022
+ }
28023
+ return function () {
28024
+ if (loaderRef.current && isAsyncLoadOptionEnabled) {
28025
+ var _observer;
28026
+ (_observer = observer) === null || _observer === void 0 ? void 0 : _observer.unobserve(loaderRef.current);
28027
+ }
28028
+ };
28029
+ }, [hasMore]);
28030
+ return /*#__PURE__*/React__default.createElement(components.MenuList, _extends$4({}, props, {
28031
+ innerProps: _objectSpread$b(_objectSpread$b({}, props.innerProps), {}, _defineProperty$7({}, "data-testid", "menu-list"))
28032
+ }), props.children, hasMore && /*#__PURE__*/React__default.createElement("div", {
28033
+ className: "flex w-full items-center justify-center py-3",
28034
+ "data-testid": "loader",
28035
+ ref: loaderRef
28036
+ }, /*#__PURE__*/React__default.createElement(Spinner, null)));
28037
+ };
27979
28038
  var Select = function Select(_ref) {
27980
28039
  var _ref$size = _ref.size,
27981
28040
  size = _ref$size === void 0 ? SIZES$2.medium : _ref$size,
@@ -28074,7 +28133,8 @@ var Select = function Select(_ref) {
28074
28133
  MultiValueRemove: MultiValueRemove,
28075
28134
  Placeholder: Placeholder,
28076
28135
  Menu: Menu,
28077
- ValueContainer: ValueContainer
28136
+ ValueContainer: ValueContainer,
28137
+ MenuList: MenuList
28078
28138
  }, componentOverrides)
28079
28139
  }, portalProps, otherProps)), !!error && /*#__PURE__*/React__default.createElement("p", {
28080
28140
  className: "neeto-ui-input__error",
@@ -28173,30 +28233,6 @@ var Slider = function Slider(_ref) {
28173
28233
  }, helpText)));
28174
28234
  };
28175
28235
 
28176
- var Spinner = function Spinner(_ref) {
28177
- var _ref$theme = _ref.theme,
28178
- theme = _ref$theme === void 0 ? "dark" : _ref$theme,
28179
- _ref$className = _ref.className,
28180
- className = _ref$className === void 0 ? "" : _ref$className;
28181
- var spinnerItemClassName = classnames$1("neeto-ui-spinner__item", {
28182
- "neeto-ui-bg-gray-800": theme === "dark"
28183
- }, {
28184
- "neeto-ui-bg-white": theme === "light"
28185
- });
28186
- return /*#__PURE__*/React__default.createElement("span", {
28187
- className: classnames$1("neeto-ui-spinner", [className]),
28188
- "data-testid": "spinner"
28189
- }, /*#__PURE__*/React__default.createElement("i", {
28190
- className: spinnerItemClassName
28191
- }), /*#__PURE__*/React__default.createElement("i", {
28192
- className: spinnerItemClassName
28193
- }), /*#__PURE__*/React__default.createElement("i", {
28194
- className: spinnerItemClassName
28195
- }), /*#__PURE__*/React__default.createElement("i", {
28196
- className: spinnerItemClassName
28197
- }));
28198
- };
28199
-
28200
28236
  var _excluded$a = ["label", "required", "className", "error", "onChange", "labelProps", "children"];
28201
28237
  var Switch = /*#__PURE__*/forwardRef$1(function (_ref, ref) {
28202
28238
  var _ref$label = _ref.label,