UNPKG

@awsui/components-react

Version:

On July 19th, 2022, we launched [Cloudscape Design System](https://cloudscape.design). Cloudscape is an evolution of AWS-UI. It consists of user interface guidelines, front-end components, design resources, and development tools for building intuitive, en

34 lines 1.75 kB
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import { useRef } from 'react'; import { fireNonCancelableEvent } from '../internal/events/index'; /** * This hook generates `onBlur`, `onFocus` and `onLoadItems` handlers that make sure an `onLoadItems` event * fires exactly once every time control they are used on gets focused. * It is necessary to do this because Autosuggest and Select dedupe their `onLoadItems` events stopping * the same event from firing twice in a row. This means, refocusing the control sometimes results in * `onLoadItems` firing, but sometimes not. */ export const useLoadItems = (onLoadItems, focusFilteringText, currentFilteringProperty, currentFilteringText, currentFilteringOperator) => { const focusIn = useRef(false); const handleBlur = () => { focusIn.current = true; }; const fireLoadItems = (detail) => { var _a; fireNonCancelableEvent(onLoadItems, Object.assign(Object.assign({}, detail), { filteringText: (_a = currentFilteringText !== null && currentFilteringText !== void 0 ? currentFilteringText : detail.filteringText) !== null && _a !== void 0 ? _a : '', filteringProperty: currentFilteringProperty, filteringOperator: currentFilteringOperator })); focusIn.current = false; }; const handleFocus = () => { if (focusIn.current) { fireLoadItems({ firstPage: true, samePage: false, filteringText: focusFilteringText }); } }; const handleLoadItems = ({ detail }) => fireLoadItems(detail); return { onBlur: handleBlur, onFocus: handleFocus, onLoadItems: handleLoadItems, }; }; //# sourceMappingURL=use-load-items.js.map