@jobber/components 6.82.3 → 6.82.4

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.
@@ -2,7 +2,7 @@ import { ChipProps } from "../Chip";
2
2
  import { ChipDismissibleProps } from "../ChipsTypes";
3
3
  export type InternalChipDismissibleProps = Omit<ChipDismissibleProps, "type">;
4
4
  export interface ChipDismissibleInputProps extends Pick<InternalChipDismissibleProps, "activator" | "isLoadingMore" | "onSearch" | "onLoadMore"> {
5
- readonly attachTo: HTMLElement | null;
5
+ readonly attachTo: React.RefObject<Element | null>;
6
6
  readonly options: ChipProps[];
7
7
  onCustomOptionSelect?(value: string): void;
8
8
  onOptionSelect(value: string): void;
@@ -17,9 +17,7 @@ require('../../../_setToString-cjs.js');
17
17
  require('../../../debounce-cjs.js');
18
18
  require('../../../Icon-cjs.js');
19
19
  require('@jobber/design');
20
- require('../../../floating-ui.react-cjs.js');
21
- require('react-dom');
22
- require('../../../maxHeight-cjs.js');
20
+ require('react-popper');
23
21
 
24
22
 
25
23
 
@@ -15,6 +15,4 @@ import '../../../_setToString-es.js';
15
15
  import '../../../debounce-es.js';
16
16
  import '../../../Icon-es.js';
17
17
  import '@jobber/design';
18
- import '../../../floating-ui.react-es.js';
19
- import 'react-dom';
20
- import '../../../maxHeight-es.js';
18
+ import 'react-popper';
@@ -1,8 +1,7 @@
1
1
  import { KeyboardEvent, MouseEvent } from "react";
2
2
  import { InternalChipDismissibleProps } from "../InternalChipDismissibleTypes";
3
3
  export declare function useInternalChipDismissible({ children, selected, onChange, onClick, onCustomAdd, }: InternalChipDismissibleProps): {
4
- ref: import("react").Dispatch<import("react").SetStateAction<HTMLDivElement | null>>;
5
- wrapperElement: HTMLDivElement | null;
4
+ ref: import("react").RefObject<HTMLDivElement>;
6
5
  sortedVisibleChipOptions: import("../../Chip").ChipProps[];
7
6
  availableChipOptions: import("../../Chip").ChipProps[];
8
7
  handleChipRemove: (value: string) => () => void;
@@ -1,10 +1,16 @@
1
- import React from "react";
2
- export interface UseRepositionMenu {
3
- readonly setFloatingRef: (ref: HTMLElement | null) => void;
4
- readonly targetWidth: number | undefined;
5
- readonly styles: {
6
- float: React.CSSProperties;
1
+ import { RefObject } from "react";
2
+ export declare function useRepositionMenu(attachTo: RefObject<Element | null>): {
3
+ setPositionedElementRef: import("react").Dispatch<import("react").SetStateAction<HTMLElement | null | undefined>>;
4
+ targetWidth: number | undefined;
5
+ styles: {
6
+ [key: string]: React.CSSProperties;
7
7
  };
8
- readonly update: () => void;
9
- }
10
- export declare function useRepositionMenu(attachTo: HTMLElement | null): UseRepositionMenu;
8
+ attributes: {
9
+ [key: string]: {
10
+ [key: string]: string;
11
+ } | undefined;
12
+ };
13
+ state: import("@popperjs/core").State | null;
14
+ update: import("@popperjs/core").Instance["update"] | null;
15
+ forceUpdate: import("@popperjs/core").Instance["forceUpdate"] | null;
16
+ };
@@ -1 +1 @@
1
- export declare function useScrollToActive(index: number): import("react").MutableRefObject<HTMLDivElement | null>;
1
+ export declare function useScrollToActive(index: number): import("react").RefObject<HTMLDivElement>;
@@ -18,9 +18,7 @@ require('../../_setToString-cjs.js');
18
18
  require('../../debounce-cjs.js');
19
19
  require('../../Icon-cjs.js');
20
20
  require('@jobber/design');
21
- require('../../floating-ui.react-cjs.js');
22
- require('react-dom');
23
- require('../../maxHeight-cjs.js');
21
+ require('react-popper');
24
22
  require('classnames');
25
23
  require('../../useSafeLayoutEffect-cjs.js');
26
24
  require('../../Text-cjs.js');
@@ -35,6 +33,8 @@ require('../../Avatar-cjs.js');
35
33
  require('color');
36
34
  require('../../useChildComponent-cjs.js');
37
35
  require('../../Tooltip-cjs.js');
36
+ require('../../floating-ui.react-cjs.js');
37
+ require('react-dom');
38
38
  require('framer-motion');
39
39
  require('../../useIsMounted-cjs.js');
40
40
 
@@ -16,9 +16,7 @@ import '../../_setToString-es.js';
16
16
  import '../../debounce-es.js';
17
17
  import '../../Icon-es.js';
18
18
  import '@jobber/design';
19
- import '../../floating-ui.react-es.js';
20
- import 'react-dom';
21
- import '../../maxHeight-es.js';
19
+ import 'react-popper';
22
20
  import 'classnames';
23
21
  import '../../useSafeLayoutEffect-es.js';
24
22
  import '../../Text-es.js';
@@ -33,5 +31,7 @@ import '../../Avatar-es.js';
33
31
  import 'color';
34
32
  import '../../useChildComponent-es.js';
35
33
  import '../../Tooltip-es.js';
34
+ import '../../floating-ui.react-es.js';
35
+ import 'react-dom';
36
36
  import 'framer-motion';
37
37
  import '../../useIsMounted-es.js';
@@ -20,9 +20,7 @@ require('../_setToString-cjs.js');
20
20
  require('../debounce-cjs.js');
21
21
  require('../Icon-cjs.js');
22
22
  require('@jobber/design');
23
- require('../floating-ui.react-cjs.js');
24
- require('react-dom');
25
- require('../maxHeight-cjs.js');
23
+ require('react-popper');
26
24
  require('classnames');
27
25
  require('../useSafeLayoutEffect-cjs.js');
28
26
  require('../Text-cjs.js');
@@ -36,6 +34,8 @@ require('../Avatar-cjs.js');
36
34
  require('color');
37
35
  require('../useChildComponent-cjs.js');
38
36
  require('../Tooltip-cjs.js');
37
+ require('../floating-ui.react-cjs.js');
38
+ require('react-dom');
39
39
  require('framer-motion');
40
40
  require('../useIsMounted-cjs.js');
41
41
 
@@ -18,9 +18,7 @@ import '../_setToString-es.js';
18
18
  import '../debounce-es.js';
19
19
  import '../Icon-es.js';
20
20
  import '@jobber/design';
21
- import '../floating-ui.react-es.js';
22
- import 'react-dom';
23
- import '../maxHeight-es.js';
21
+ import 'react-popper';
24
22
  import 'classnames';
25
23
  import '../useSafeLayoutEffect-es.js';
26
24
  import '../Text-es.js';
@@ -34,6 +32,8 @@ import '../Avatar-es.js';
34
32
  import 'color';
35
33
  import '../useChildComponent-es.js';
36
34
  import '../Tooltip-es.js';
35
+ import '../floating-ui.react-es.js';
36
+ import 'react-dom';
37
37
  import 'framer-motion';
38
38
  import '../useIsMounted-es.js';
39
39
 
@@ -4,9 +4,9 @@ var React = require('react');
4
4
  var useScrollToActive = require('./useScrollToActive-cjs.js');
5
5
  require('./isObjectLike-cjs.js');
6
6
  require('@jobber/design');
7
+ require('react-popper');
7
8
  var classnames = require('classnames');
8
9
  var useSafeLayoutEffect = require('./useSafeLayoutEffect-cjs.js');
9
- var floatingUi_react = require('./floating-ui.react-cjs.js');
10
10
  var Text = require('./Text-cjs.js');
11
11
  var Button = require('./Button-cjs.js');
12
12
  var Spinner = require('./Spinner-cjs.js');
@@ -19,16 +19,14 @@ function InternalChip({ label, active = false, disabled = false, invalid = false
19
19
  suffix && React.createElement(Chip.ChipNamespace.Suffix, null, suffix)));
20
20
  }
21
21
 
22
- var styles = {"wrapper":"XRnU90M2-fs-","input":"Dq-yFHd1zK0-","menu":"F7CpurjKzBI-","menuListOption":"_9SAK31TqNDY-","loadingIndicator":"s5vFJVv0t0Q-","activeOption":"_8d0w-JzgzS4-","spinning":"hDJGLX6kE-U-"};
22
+ var styles = {"wrapper":"XRnU90M2-fs-","input":"Dq-yFHd1zK0-","menu":"F7CpurjKzBI-","menuList":"J8USVG1tjPs-","menuListOption":"_9SAK31TqNDY-","loadingIndicator":"s5vFJVv0t0Q-","activeOption":"_8d0w-JzgzS4-","spinning":"hDJGLX6kE-U-"};
23
23
 
24
- // Adding Portal moves it over the limit, but doesn't impact the readabiltiy
25
- // eslint-disable-next-line max-statements
26
24
  function InternalChipDismissibleInput(props) {
27
25
  const { activator = React.createElement(Button.Button, { icon: "add", type: "secondary", ariaLabel: "Add" }), attachTo, isLoadingMore = false, onLoadMore, options, } = props;
28
26
  const { activeIndex, allOptions, hasAvailableOptions, inputRef, menuId, menuOpen, searchValue, showInput, generateDescendantId, handleBlur, handleFocus, handleSearchChange, handleCancelBlur, handleEnableBlur, handleSetActiveOnMouseOver, handleKeyDown, handleSelectOption, handleShowInput, handleDebouncedSearch, } = useScrollToActive.useInternalChipDismissibleInput(props);
29
- const scrollableRef = useScrollToActive.useScrollToActive(activeIndex);
27
+ const menuRef = useScrollToActive.useScrollToActive(activeIndex);
30
28
  const { ref: visibleChildRef, isInView } = useScrollToActive.useInView();
31
- const { styles: floatingStyles, update, setFloatingRef, } = useScrollToActive.useRepositionMenu(attachTo);
29
+ const { styles: popperStyles, attributes, update, setPositionedElementRef, } = useScrollToActive.useRepositionMenu(attachTo);
32
30
  useSafeLayoutEffect.useSafeLayoutEffect_1(() => {
33
31
  update === null || update === void 0 ? void 0 : update();
34
32
  }, [allOptions, menuOpen, update, options]);
@@ -43,28 +41,25 @@ function InternalChipDismissibleInput(props) {
43
41
  return React.cloneElement(activator, { onClick: handleShowInput });
44
42
  }
45
43
  const shouldShowMenu = menuOpen && (hasAvailableOptions || isLoadingMore);
46
- const menuContent = (React.createElement("div", { ref: node => {
47
- setFloatingRef(node);
48
- scrollableRef.current = node;
49
- }, role: "listbox", id: menuId, className: styles.menu, style: floatingStyles.float, "data-testid": "chip-menu" },
50
- allOptions.map((option, i) => (React.createElement("button", { key: option.value, role: "option", type: "button", id: generateDescendantId(i), className: classnames(styles.menuListOption, {
51
- [styles.activeOption]: activeIndex === i,
52
- }), onClick: () => handleSelectOption(option), onMouseEnter: handleSetActiveOnMouseOver(i), onMouseDown: handleCancelBlur, onMouseUp: handleEnableBlur },
53
- React.createElement("span", { "aria-hidden": true }, option.prefix),
54
- React.createElement(Text.Text, null, option.label)))),
55
- React.createElement("div", { ref: visibleChildRef }),
56
- isLoadingMore && (React.createElement("div", { className: styles.loadingIndicator },
57
- React.createElement(Spinner.Spinner, { size: "small", inline: true })))));
58
44
  return (React.createElement(React.Fragment, null,
59
45
  React.createElement("input", { ref: inputRef, className: styles.input, type: "text", role: "combobox", "aria-label": "Press up and down arrow to cycle through the options or type to narrow down the results", "aria-autocomplete": "list", "aria-owns": menuId, "aria-expanded": shouldShowMenu, "aria-activedescendant": generateDescendantId(activeIndex), value: searchValue, onChange: handleSearchChange, onKeyDown: handleKeyDown, onBlur: () => setTimeout(handleBlur, 200), onFocus: handleFocus, autoFocus: true }),
60
- shouldShowMenu && React.createElement(floatingUi_react.FloatingPortal, null, menuContent)));
46
+ shouldShowMenu && (React.createElement("div", Object.assign({ ref: setPositionedElementRef, className: styles.menu, style: popperStyles.popper }, attributes.popper),
47
+ React.createElement("div", { ref: menuRef, role: "listbox", id: menuId, className: styles.menuList, "data-testid": "chip-menu" },
48
+ allOptions.map((option, i) => (React.createElement("button", { key: option.value, role: "option", type: "button", id: generateDescendantId(i), className: classnames(styles.menuListOption, {
49
+ [styles.activeOption]: activeIndex === i,
50
+ }), onClick: () => handleSelectOption(option), onMouseEnter: handleSetActiveOnMouseOver(i), onMouseDown: handleCancelBlur, onMouseUp: handleEnableBlur },
51
+ React.createElement("span", { "aria-hidden": true }, option.prefix),
52
+ React.createElement(Text.Text, null, option.label)))),
53
+ React.createElement("div", { ref: visibleChildRef }),
54
+ isLoadingMore && (React.createElement("div", { className: styles.loadingIndicator },
55
+ React.createElement(Spinner.Spinner, { size: "small", inline: true }))))))));
61
56
  }
62
57
 
63
58
  function InternalChipDismissible(props) {
64
- const { availableChipOptions, ref: wrapperRef, wrapperElement, sortedVisibleChipOptions, handleChipAdd, handleChipClick, handleChipKeyDown, handleChipRemove, handleCustomAdd, handleWrapperKeyDown, } = useScrollToActive.useInternalChipDismissible(props);
59
+ const { availableChipOptions, ref: wrapperRef, sortedVisibleChipOptions, handleChipAdd, handleChipClick, handleChipKeyDown, handleChipRemove, handleCustomAdd, handleWrapperKeyDown, } = useScrollToActive.useInternalChipDismissible(props);
65
60
  return (React.createElement("div", { ref: wrapperRef, className: styles.wrapper, "data-testid": "dismissible-chips", onKeyDown: handleWrapperKeyDown, role: "listbox" },
66
61
  sortedVisibleChipOptions.map(chip => (React.createElement(InternalChip, Object.assign({ key: chip.value }, chip, { onKeyDown: handleChipKeyDown(chip.value), onClick: handleChipClick(chip.value), ariaLabel: `${chip.label}. Press delete or backspace to remove ${chip.label}`, tabIndex: 0, suffix: React.createElement(Chip.InternalChipButton, { icon: "remove", invalid: chip.invalid, disabled: chip.disabled, label: chip.label, onClick: handleChipRemove(chip.value) }) })))),
67
- React.createElement(InternalChipDismissibleInput, { activator: props.activator, attachTo: wrapperElement, isLoadingMore: props.isLoadingMore, options: availableChipOptions, onOptionSelect: handleChipAdd, onCustomOptionSelect: handleCustomAdd, onSearch: props.onSearch, onLoadMore: props.onLoadMore, onlyShowMenuOnSearch: props.onlyShowMenuOnSearch, autoSelectOnClickOutside: props.autoSelectOnClickOutside })));
62
+ React.createElement(InternalChipDismissibleInput, { activator: props.activator, attachTo: wrapperRef, isLoadingMore: props.isLoadingMore, options: availableChipOptions, onOptionSelect: handleChipAdd, onCustomOptionSelect: handleCustomAdd, onSearch: props.onSearch, onLoadMore: props.onLoadMore, onlyShowMenuOnSearch: props.onlyShowMenuOnSearch, autoSelectOnClickOutside: props.autoSelectOnClickOutside })));
68
63
  }
69
64
 
70
65
  exports.InternalChip = InternalChip;
@@ -2,9 +2,9 @@ import React__default, { useEffect } from 'react';
2
2
  import { a as useInternalChipDismissibleInput, d as useScrollToActive, b as useInView, c as useRepositionMenu, u as useInternalChipDismissible } from './useScrollToActive-es.js';
3
3
  import './isObjectLike-es.js';
4
4
  import '@jobber/design';
5
+ import 'react-popper';
5
6
  import classnames from 'classnames';
6
7
  import { u as useSafeLayoutEffect_1 } from './useSafeLayoutEffect-es.js';
7
- import { F as FloatingPortal } from './floating-ui.react-es.js';
8
8
  import { T as Text } from './Text-es.js';
9
9
  import { B as Button } from './Button-es.js';
10
10
  import { S as Spinner } from './Spinner-es.js';
@@ -17,16 +17,14 @@ function InternalChip({ label, active = false, disabled = false, invalid = false
17
17
  suffix && React__default.createElement(ChipNamespace.Suffix, null, suffix)));
18
18
  }
19
19
 
20
- var styles = {"wrapper":"XRnU90M2-fs-","input":"Dq-yFHd1zK0-","menu":"F7CpurjKzBI-","menuListOption":"_9SAK31TqNDY-","loadingIndicator":"s5vFJVv0t0Q-","activeOption":"_8d0w-JzgzS4-","spinning":"hDJGLX6kE-U-"};
20
+ var styles = {"wrapper":"XRnU90M2-fs-","input":"Dq-yFHd1zK0-","menu":"F7CpurjKzBI-","menuList":"J8USVG1tjPs-","menuListOption":"_9SAK31TqNDY-","loadingIndicator":"s5vFJVv0t0Q-","activeOption":"_8d0w-JzgzS4-","spinning":"hDJGLX6kE-U-"};
21
21
 
22
- // Adding Portal moves it over the limit, but doesn't impact the readabiltiy
23
- // eslint-disable-next-line max-statements
24
22
  function InternalChipDismissibleInput(props) {
25
23
  const { activator = React__default.createElement(Button, { icon: "add", type: "secondary", ariaLabel: "Add" }), attachTo, isLoadingMore = false, onLoadMore, options, } = props;
26
24
  const { activeIndex, allOptions, hasAvailableOptions, inputRef, menuId, menuOpen, searchValue, showInput, generateDescendantId, handleBlur, handleFocus, handleSearchChange, handleCancelBlur, handleEnableBlur, handleSetActiveOnMouseOver, handleKeyDown, handleSelectOption, handleShowInput, handleDebouncedSearch, } = useInternalChipDismissibleInput(props);
27
- const scrollableRef = useScrollToActive(activeIndex);
25
+ const menuRef = useScrollToActive(activeIndex);
28
26
  const { ref: visibleChildRef, isInView } = useInView();
29
- const { styles: floatingStyles, update, setFloatingRef, } = useRepositionMenu(attachTo);
27
+ const { styles: popperStyles, attributes, update, setPositionedElementRef, } = useRepositionMenu(attachTo);
30
28
  useSafeLayoutEffect_1(() => {
31
29
  update === null || update === void 0 ? void 0 : update();
32
30
  }, [allOptions, menuOpen, update, options]);
@@ -41,28 +39,25 @@ function InternalChipDismissibleInput(props) {
41
39
  return React__default.cloneElement(activator, { onClick: handleShowInput });
42
40
  }
43
41
  const shouldShowMenu = menuOpen && (hasAvailableOptions || isLoadingMore);
44
- const menuContent = (React__default.createElement("div", { ref: node => {
45
- setFloatingRef(node);
46
- scrollableRef.current = node;
47
- }, role: "listbox", id: menuId, className: styles.menu, style: floatingStyles.float, "data-testid": "chip-menu" },
48
- allOptions.map((option, i) => (React__default.createElement("button", { key: option.value, role: "option", type: "button", id: generateDescendantId(i), className: classnames(styles.menuListOption, {
49
- [styles.activeOption]: activeIndex === i,
50
- }), onClick: () => handleSelectOption(option), onMouseEnter: handleSetActiveOnMouseOver(i), onMouseDown: handleCancelBlur, onMouseUp: handleEnableBlur },
51
- React__default.createElement("span", { "aria-hidden": true }, option.prefix),
52
- React__default.createElement(Text, null, option.label)))),
53
- React__default.createElement("div", { ref: visibleChildRef }),
54
- isLoadingMore && (React__default.createElement("div", { className: styles.loadingIndicator },
55
- React__default.createElement(Spinner, { size: "small", inline: true })))));
56
42
  return (React__default.createElement(React__default.Fragment, null,
57
43
  React__default.createElement("input", { ref: inputRef, className: styles.input, type: "text", role: "combobox", "aria-label": "Press up and down arrow to cycle through the options or type to narrow down the results", "aria-autocomplete": "list", "aria-owns": menuId, "aria-expanded": shouldShowMenu, "aria-activedescendant": generateDescendantId(activeIndex), value: searchValue, onChange: handleSearchChange, onKeyDown: handleKeyDown, onBlur: () => setTimeout(handleBlur, 200), onFocus: handleFocus, autoFocus: true }),
58
- shouldShowMenu && React__default.createElement(FloatingPortal, null, menuContent)));
44
+ shouldShowMenu && (React__default.createElement("div", Object.assign({ ref: setPositionedElementRef, className: styles.menu, style: popperStyles.popper }, attributes.popper),
45
+ React__default.createElement("div", { ref: menuRef, role: "listbox", id: menuId, className: styles.menuList, "data-testid": "chip-menu" },
46
+ allOptions.map((option, i) => (React__default.createElement("button", { key: option.value, role: "option", type: "button", id: generateDescendantId(i), className: classnames(styles.menuListOption, {
47
+ [styles.activeOption]: activeIndex === i,
48
+ }), onClick: () => handleSelectOption(option), onMouseEnter: handleSetActiveOnMouseOver(i), onMouseDown: handleCancelBlur, onMouseUp: handleEnableBlur },
49
+ React__default.createElement("span", { "aria-hidden": true }, option.prefix),
50
+ React__default.createElement(Text, null, option.label)))),
51
+ React__default.createElement("div", { ref: visibleChildRef }),
52
+ isLoadingMore && (React__default.createElement("div", { className: styles.loadingIndicator },
53
+ React__default.createElement(Spinner, { size: "small", inline: true }))))))));
59
54
  }
60
55
 
61
56
  function InternalChipDismissible(props) {
62
- const { availableChipOptions, ref: wrapperRef, wrapperElement, sortedVisibleChipOptions, handleChipAdd, handleChipClick, handleChipKeyDown, handleChipRemove, handleCustomAdd, handleWrapperKeyDown, } = useInternalChipDismissible(props);
57
+ const { availableChipOptions, ref: wrapperRef, sortedVisibleChipOptions, handleChipAdd, handleChipClick, handleChipKeyDown, handleChipRemove, handleCustomAdd, handleWrapperKeyDown, } = useInternalChipDismissible(props);
63
58
  return (React__default.createElement("div", { ref: wrapperRef, className: styles.wrapper, "data-testid": "dismissible-chips", onKeyDown: handleWrapperKeyDown, role: "listbox" },
64
59
  sortedVisibleChipOptions.map(chip => (React__default.createElement(InternalChip, Object.assign({ key: chip.value }, chip, { onKeyDown: handleChipKeyDown(chip.value), onClick: handleChipClick(chip.value), ariaLabel: `${chip.label}. Press delete or backspace to remove ${chip.label}`, tabIndex: 0, suffix: React__default.createElement(InternalChipButton, { icon: "remove", invalid: chip.invalid, disabled: chip.disabled, label: chip.label, onClick: handleChipRemove(chip.value) }) })))),
65
- React__default.createElement(InternalChipDismissibleInput, { activator: props.activator, attachTo: wrapperElement, isLoadingMore: props.isLoadingMore, options: availableChipOptions, onOptionSelect: handleChipAdd, onCustomOptionSelect: handleCustomAdd, onSearch: props.onSearch, onLoadMore: props.onLoadMore, onlyShowMenuOnSearch: props.onlyShowMenuOnSearch, autoSelectOnClickOutside: props.autoSelectOnClickOutside })));
60
+ React__default.createElement(InternalChipDismissibleInput, { activator: props.activator, attachTo: wrapperRef, isLoadingMore: props.isLoadingMore, options: availableChipOptions, onOptionSelect: handleChipAdd, onCustomOptionSelect: handleCustomAdd, onSearch: props.onSearch, onLoadMore: props.onLoadMore, onlyShowMenuOnSearch: props.onlyShowMenuOnSearch, autoSelectOnClickOutside: props.autoSelectOnClickOutside })));
66
61
  }
67
62
 
68
63
  export { InternalChipDismissible as I, InternalChip as a };
package/dist/index.cjs CHANGED
@@ -130,6 +130,7 @@ require('./_getTag-cjs.js');
130
130
  require('./isSymbol-cjs.js');
131
131
  require('./_baseEach-cjs.js');
132
132
  require('./debounce-cjs.js');
133
+ require('react-popper');
133
134
  require('./ComboboxContent-cjs.js');
134
135
  require('./ComboboxContentSearch-cjs.js');
135
136
  require('./ComboboxContentList-cjs.js');
@@ -179,7 +180,6 @@ require('./DataListAction-cjs.js');
179
180
  require('./DataListLayoutActions-cjs.js');
180
181
  require('./DataListStatusBar-cjs.js');
181
182
  require('./throttle-cjs.js');
182
- require('react-popper');
183
183
  require('./omit-cjs.js');
184
184
  require('./useFormFieldFocus-cjs.js');
185
185
  require('filesize');
package/dist/index.mjs CHANGED
@@ -128,6 +128,7 @@ import './_getTag-es.js';
128
128
  import './isSymbol-es.js';
129
129
  import './_baseEach-es.js';
130
130
  import './debounce-es.js';
131
+ import 'react-popper';
131
132
  import './ComboboxContent-es.js';
132
133
  import './ComboboxContentSearch-es.js';
133
134
  import './ComboboxContentList-es.js';
@@ -177,7 +178,6 @@ import './DataListAction-es.js';
177
178
  import './DataListLayoutActions-es.js';
178
179
  import './DataListStatusBar-es.js';
179
180
  import './throttle-es.js';
180
- import 'react-popper';
181
181
  import './omit-es.js';
182
182
  import './useFormFieldFocus-es.js';
183
183
  import 'filesize';
package/dist/styles.css CHANGED
@@ -3548,9 +3548,12 @@ a._7BLGtYNuJOU-.zgRx3ehZ2z8-:hover {
3548
3548
  z-index: 6;
3549
3549
  z-index: var(--elevation-menu);
3550
3550
  width: 100%;
3551
+ }
3552
+
3553
+ .J8USVG1tjPs- {
3554
+ max-height: 320px;
3551
3555
  box-shadow: 0px 1px 4px 0px rgba(0, 0, 0, 0.1), 0px 4px 12px 0px rgba(0, 0, 0, 0.05);
3552
3556
  box-shadow: var(--shadow-base);
3553
- box-sizing: border-box;
3554
3557
  padding: 8px 0;
3555
3558
  padding: var(--space-small) 0;
3556
3559
  border-radius: 8px;
@@ -11,8 +11,7 @@ var identity$1 = require('./identity-cjs.js');
11
11
  var _isIterateeCall = require('./_isIterateeCall-cjs.js');
12
12
  var debounce = require('./debounce-cjs.js');
13
13
  var Icon = require('./Icon-cjs.js');
14
- var floatingUi_react = require('./floating-ui.react-cjs.js');
15
- var maxHeight = require('./maxHeight-cjs.js');
14
+ var reactPopper = require('react-popper');
16
15
 
17
16
  var baseEach = _baseEach._baseEach,
18
17
  isArrayLike = isTypedArray.isArrayLike_1;
@@ -311,7 +310,7 @@ function findFocusableElement(element, direction) {
311
310
  return findFocusableElement(nextElement, direction);
312
311
  }
313
312
  function useInternalChipDismissible({ children, selected, onChange, onClick, onCustomAdd, }) {
314
- const [wrapperElement, setWrapperElement] = React.useState(null);
313
+ const ref = React.useRef(null);
315
314
  const chipOptions = children.map(chip => chip.props);
316
315
  const visibleChipOptions = chipOptions.filter(chip => selected.includes(chip.value));
317
316
  const sortedVisibleChipOptions = sortBy$1(visibleChipOptions, chip => selected.indexOf(chip.value));
@@ -368,7 +367,7 @@ function useInternalChipDismissible({ children, selected, onChange, onClick, onC
368
367
  };
369
368
  },
370
369
  };
371
- return Object.assign(Object.assign({}, actions), { ref: setWrapperElement, wrapperElement,
370
+ return Object.assign(Object.assign({}, actions), { ref,
372
371
  sortedVisibleChipOptions,
373
372
  availableChipOptions });
374
373
  }
@@ -574,39 +573,17 @@ function useInView() {
574
573
  return { ref, isInView };
575
574
  }
576
575
 
577
- const ROUNDED_BORDER_ARROW_EDGE_OFFSET = 8;
578
- const PREFERRED_MAX_HEIGHT = 320;
579
576
  function useRepositionMenu(attachTo) {
580
- const { refs, floatingStyles, update } = floatingUi_react.useFloating({
581
- placement: "bottom",
582
- middleware: [
583
- floatingUi_react.offset(ROUNDED_BORDER_ARROW_EDGE_OFFSET),
584
- floatingUi_react.flip({ fallbackPlacements: ["top"] }),
585
- floatingUi_react.size({
586
- apply({ availableHeight, elements }) {
587
- const maxHeight$1 = maxHeight.calculateMaxHeight(availableHeight, {
588
- maxHeight: PREFERRED_MAX_HEIGHT,
589
- });
590
- Object.assign(elements.floating.style, {
591
- maxHeight: `${maxHeight$1}px`,
592
- });
593
- },
594
- }),
577
+ var _a;
578
+ const [positionElement, setPositionedElementRef] = React.useState();
579
+ const popper = reactPopper.usePopper(attachTo.current, positionElement, {
580
+ modifiers: [
581
+ { name: "offset", options: { offset: [0, 8] } },
582
+ { name: "flip", options: { fallbackPlacements: ["top"] } },
595
583
  ],
596
- elements: {
597
- reference: attachTo,
598
- },
599
- whileElementsMounted: floatingUi_react.autoUpdate,
600
584
  });
601
- const targetWidth = attachTo === null || attachTo === void 0 ? void 0 : attachTo.clientWidth;
602
- return {
603
- setFloatingRef: refs.setFloating,
604
- targetWidth,
605
- styles: {
606
- float: floatingStyles,
607
- },
608
- update,
609
- };
585
+ const targetWidth = (_a = attachTo.current) === null || _a === void 0 ? void 0 : _a.clientWidth;
586
+ return Object.assign(Object.assign({}, popper), { setPositionedElementRef, targetWidth });
610
587
  }
611
588
 
612
589
  function useScrollToActive(index) {
@@ -1,4 +1,4 @@
1
- import React__default, { useState, useId, useEffect, useRef } from 'react';
1
+ import React__default, { useRef, useId, useState, useEffect } from 'react';
2
2
  import { g as getDefaultExportFromCjs } from './_commonjsHelpers-es.js';
3
3
  import { _ as _baseFlatten } from './_baseFlatten-es.js';
4
4
  import { a as _arrayMap, b as _baseGet } from './_baseGet-es.js';
@@ -9,8 +9,7 @@ import { i as identity_1 } from './identity-es.js';
9
9
  import { _ as _baseRest, a as _isIterateeCall } from './_isIterateeCall-es.js';
10
10
  import { a as debounce } from './debounce-es.js';
11
11
  import { I as Icon } from './Icon-es.js';
12
- import { u as useFloating, o as offset, f as flip, e as size, b as autoUpdate } from './floating-ui.react-es.js';
13
- import { c as calculateMaxHeight } from './maxHeight-es.js';
12
+ import { usePopper } from 'react-popper';
14
13
 
15
14
  var baseEach = _baseEach,
16
15
  isArrayLike = isArrayLike_1;
@@ -309,7 +308,7 @@ function findFocusableElement(element, direction) {
309
308
  return findFocusableElement(nextElement, direction);
310
309
  }
311
310
  function useInternalChipDismissible({ children, selected, onChange, onClick, onCustomAdd, }) {
312
- const [wrapperElement, setWrapperElement] = useState(null);
311
+ const ref = useRef(null);
313
312
  const chipOptions = children.map(chip => chip.props);
314
313
  const visibleChipOptions = chipOptions.filter(chip => selected.includes(chip.value));
315
314
  const sortedVisibleChipOptions = sortBy$1(visibleChipOptions, chip => selected.indexOf(chip.value));
@@ -366,7 +365,7 @@ function useInternalChipDismissible({ children, selected, onChange, onClick, onC
366
365
  };
367
366
  },
368
367
  };
369
- return Object.assign(Object.assign({}, actions), { ref: setWrapperElement, wrapperElement,
368
+ return Object.assign(Object.assign({}, actions), { ref,
370
369
  sortedVisibleChipOptions,
371
370
  availableChipOptions });
372
371
  }
@@ -572,39 +571,17 @@ function useInView() {
572
571
  return { ref, isInView };
573
572
  }
574
573
 
575
- const ROUNDED_BORDER_ARROW_EDGE_OFFSET = 8;
576
- const PREFERRED_MAX_HEIGHT = 320;
577
574
  function useRepositionMenu(attachTo) {
578
- const { refs, floatingStyles, update } = useFloating({
579
- placement: "bottom",
580
- middleware: [
581
- offset(ROUNDED_BORDER_ARROW_EDGE_OFFSET),
582
- flip({ fallbackPlacements: ["top"] }),
583
- size({
584
- apply({ availableHeight, elements }) {
585
- const maxHeight = calculateMaxHeight(availableHeight, {
586
- maxHeight: PREFERRED_MAX_HEIGHT,
587
- });
588
- Object.assign(elements.floating.style, {
589
- maxHeight: `${maxHeight}px`,
590
- });
591
- },
592
- }),
575
+ var _a;
576
+ const [positionElement, setPositionedElementRef] = useState();
577
+ const popper = usePopper(attachTo.current, positionElement, {
578
+ modifiers: [
579
+ { name: "offset", options: { offset: [0, 8] } },
580
+ { name: "flip", options: { fallbackPlacements: ["top"] } },
593
581
  ],
594
- elements: {
595
- reference: attachTo,
596
- },
597
- whileElementsMounted: autoUpdate,
598
582
  });
599
- const targetWidth = attachTo === null || attachTo === void 0 ? void 0 : attachTo.clientWidth;
600
- return {
601
- setFloatingRef: refs.setFloating,
602
- targetWidth,
603
- styles: {
604
- float: floatingStyles,
605
- },
606
- update,
607
- };
583
+ const targetWidth = (_a = attachTo.current) === null || _a === void 0 ? void 0 : _a.clientWidth;
584
+ return Object.assign(Object.assign({}, popper), { setPositionedElementRef, targetWidth });
608
585
  }
609
586
 
610
587
  function useScrollToActive(index) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jobber/components",
3
- "version": "6.82.3",
3
+ "version": "6.82.4",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -542,5 +542,5 @@
542
542
  "> 1%",
543
543
  "IE 10"
544
544
  ],
545
- "gitHead": "1932bb5064a852b919486f264c599774d6bb596f"
545
+ "gitHead": "e427b1ce17860ffc8afd9ee3dccc75b4a89bdf2f"
546
546
  }