@pushwoosh/dumb-components 1.1.177 → 1.1.178

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.
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useCallback, useId, useMemo, useRef, useState } from 'react';
3
- import { DEFAULT_DEBOUNCE_MS, FieldInput, FieldShell, defaultGetKey, resolveDropdownText, useActiveIndex, useDropdownItems, useFieldOpenEffects, useListNavigation, useShellMouseDown } from '../shared/dropdownField';
3
+ import { DEFAULT_DEBOUNCE_MS, FieldInput, FieldShell, defaultGetKey, resolveDropdownText, useActiveIndex, useDropdownItems, useFieldOpenEffects, useListNavigation, useShellMouseDown, useToggleOpen } from '../shared/dropdownField';
4
4
  function FreeCombobox({
5
5
  items,
6
6
  loadItems,
@@ -228,17 +228,7 @@ function SelectCombobox({
228
228
  onReachEnd: loadMore
229
229
  });
230
230
  const onShellMouseDown = useShellMouseDown(inputRef, isOpen, open);
231
- const toggleOpen = useCallback(() => {
232
- if (isOpen) {
233
- var _inputRef$current3;
234
- close();
235
- (_inputRef$current3 = inputRef.current) === null || _inputRef$current3 === void 0 || _inputRef$current3.blur();
236
- } else {
237
- var _inputRef$current4;
238
- open();
239
- (_inputRef$current4 = inputRef.current) === null || _inputRef$current4 === void 0 || _inputRef$current4.focus();
240
- }
241
- }, [isOpen, open, close]);
231
+ const toggleOpen = useToggleOpen(inputRef, isOpen, open, close);
242
232
  useFieldOpenEffects({
243
233
  isOpen,
244
234
  open,
@@ -279,9 +269,9 @@ function SelectCombobox({
279
269
  showChevron: true,
280
270
  onToggle: toggleOpen,
281
271
  onClear: () => {
282
- var _inputRef$current5;
272
+ var _inputRef$current3;
283
273
  onChange(null);
284
- (_inputRef$current5 = inputRef.current) === null || _inputRef$current5 === void 0 || _inputRef$current5.focus();
274
+ (_inputRef$current3 = inputRef.current) === null || _inputRef$current3 === void 0 || _inputRef$current3.focus();
285
275
  },
286
276
  dropdownItems: dropdownItems,
287
277
  emptyText: resolveDropdownText(emptyText, query),
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useCallback, useId, useMemo, useRef, useState } from 'react';
3
3
  import { Chip } from '../Chip';
4
- import { DEFAULT_DEBOUNCE_MS, FieldInput, FieldShell, defaultGetKey, resolveDropdownText, useActiveIndex, useDropdownItems, useFieldOpenEffects, useListNavigation, useShellMouseDown } from '../shared/dropdownField';
4
+ import { DEFAULT_DEBOUNCE_MS, FieldInput, FieldShell, defaultGetKey, resolveDropdownText, useActiveIndex, useDropdownItems, useFieldOpenEffects, useListNavigation, useShellMouseDown, useToggleOpen } from '../shared/dropdownField';
5
5
  function defaultCanCreate(query, items, getLabel) {
6
6
  const trimmed = query.trim();
7
7
  if (!trimmed) return false;
@@ -136,17 +136,7 @@ export function ComboboxMulti({
136
136
  autoFocus,
137
137
  inputRef
138
138
  });
139
- const toggleOpen = useCallback(() => {
140
- if (isOpen) {
141
- var _inputRef$current2;
142
- close();
143
- (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 || _inputRef$current2.blur();
144
- } else {
145
- var _inputRef$current3;
146
- open();
147
- (_inputRef$current3 = inputRef.current) === null || _inputRef$current3 === void 0 || _inputRef$current3.focus();
148
- }
149
- }, [isOpen, open, close]);
139
+ const toggleOpen = useToggleOpen(inputRef, isOpen, open, close);
150
140
  const itemOffset = canCreateNow ? 1 : 0;
151
141
  const dropdownItems = useMemo(() => visibleItems.map((item, idx) => {
152
142
  const key = getKey(item);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pushwoosh/dumb-components",
3
- "version": "1.1.177",
3
+ "version": "1.1.178",
4
4
  "description": "React components to build Pushwoosh products",
5
5
  "main": "index.js",
6
6
  "module": "index.js",
@@ -8,6 +8,6 @@ export { useDropdownItems } from './useDropdownItems';
8
8
  export { useActiveIndex } from './useActiveIndex';
9
9
  export { useFieldOpenEffects } from './useFieldOpenEffects';
10
10
  export { useListNavigation } from './useListNavigation';
11
- export { defaultGetKey, defaultLabelFilter, resolveDropdownText, useShellMouseDown, } from './shared';
11
+ export { defaultGetKey, defaultLabelFilter, resolveDropdownText, useShellMouseDown, useToggleOpen, } from './shared';
12
12
  export { DEFAULT_DEBOUNCE_MS } from './constants';
13
13
  export type { ItemState, DropdownItemDescriptor, DropdownText, GetKeyProp, ItemsSource, LoadItems, LoadItemsResult, } from './types';
@@ -8,5 +8,5 @@ export { useDropdownItems } from './useDropdownItems';
8
8
  export { useActiveIndex } from './useActiveIndex';
9
9
  export { useFieldOpenEffects } from './useFieldOpenEffects';
10
10
  export { useListNavigation } from './useListNavigation';
11
- export { defaultGetKey, defaultLabelFilter, resolveDropdownText, useShellMouseDown } from './shared';
11
+ export { defaultGetKey, defaultLabelFilter, resolveDropdownText, useShellMouseDown, useToggleOpen } from './shared';
12
12
  export { DEFAULT_DEBOUNCE_MS } from './constants';
@@ -11,3 +11,4 @@ export declare function defaultLabelFilter<T>(item: T, query: string, getLabel:
11
11
  * while letting clicks on the input itself or on inner buttons through.
12
12
  */
13
13
  export declare function useShellMouseDown(inputRef: RefObject<HTMLInputElement>, isOpen: boolean, open: () => void): (event: MouseEvent<HTMLDivElement>) => void;
14
+ export declare function useToggleOpen(inputRef: RefObject<HTMLInputElement>, isOpen: boolean, open: () => void, close: () => void): () => void;
@@ -25,4 +25,17 @@ export function useShellMouseDown(inputRef, isOpen, open) {
25
25
  (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || _inputRef$current.focus();
26
26
  if (!isOpen) open();
27
27
  }, [inputRef, isOpen, open]);
28
+ }
29
+ export function useToggleOpen(inputRef, isOpen, open, close) {
30
+ return useCallback(() => {
31
+ if (isOpen) {
32
+ var _inputRef$current2;
33
+ close();
34
+ (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 || _inputRef$current2.blur();
35
+ } else {
36
+ var _inputRef$current3;
37
+ open();
38
+ (_inputRef$current3 = inputRef.current) === null || _inputRef$current3 === void 0 || _inputRef$current3.focus();
39
+ }
40
+ }, [inputRef, isOpen, open, close]);
28
41
  }