UNPKG

@awsui/components-react

Version:

AWS UI is a collection of [React](https://reactjs.org/) components that help create intuitive, responsive, and accessible user experiences for web applications. It is developed by Amazon Web Services (AWS). This work is available under the terms of the [A

42 lines (41 loc) 1.82 kB
import { useRef, useCallback } from 'react'; import { fireNonCancelableEvent } from '../../internal/events'; import debounce from '../../internal/debounce'; export var useLoadItems = function (_a) { var onLoadItems = _a.onLoadItems, options = _a.options, statusType = _a.statusType; var prevFilteringText = useRef(undefined); var fireLoadItems = useCallback(function (_a) { var firstPage = _a.firstPage, samePage = _a.samePage, filteringText = _a.filteringText; if (prevFilteringText.current === filteringText) { return; } prevFilteringText.current = filteringText; fireNonCancelableEvent(onLoadItems, { filteringText: filteringText, firstPage: firstPage, samePage: samePage }); }, [onLoadItems]); var fireDelayedInput = useCallback(debounce(function (_a) { var value = _a.detail.value; return fireLoadItems({ firstPage: true, samePage: false, filteringText: value }); }), [fireLoadItems]); var handleLoadMore = useCallback(function () { var firstPage = options.length === 0; statusType === 'pending' && fireNonCancelableEvent(onLoadItems, { firstPage: firstPage, samePage: false, filteringText: prevFilteringText.current || '' }); }, [fireLoadItems, options, statusType]); var handleRecoveryClick = useCallback(function () { return fireNonCancelableEvent(onLoadItems, { firstPage: false, samePage: true, filteringText: prevFilteringText.current || '' }); }, [fireLoadItems]); return { fireLoadItems: fireLoadItems, fireDelayedInput: fireDelayedInput, handleLoadMore: handleLoadMore, handleRecoveryClick: handleRecoveryClick }; };