@stack-spot/citric-react 0.28.0 → 0.29.1

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/dist/citric.css CHANGED
@@ -436,9 +436,7 @@
436
436
  margin-right: 2px;
437
437
  &:after {
438
438
  transform: rotate(90deg);
439
- top: 50%;
440
439
  right: -5px;
441
- margin-top: -1px;
442
440
  }
443
441
  }
444
442
 
@@ -446,10 +444,24 @@
446
444
  margin-left: 2px;
447
445
  &:after {
448
446
  transform: rotate(270deg);
449
- top: 50%;
450
447
  left: -5px;
448
+ }
449
+ }
450
+
451
+ &.with-arrow.right,
452
+ &.with-arrow.left {
453
+ &.align-center:after {
454
+ top: 50%;
451
455
  margin-top: -1px;
452
456
  }
457
+ &.align-start:after {
458
+ top: 0;
459
+ margin-top: 5px;
460
+ }
461
+ &.align-end:after {
462
+ bottom: 0;
463
+ margin-bottom: 5px;
464
+ }
453
465
  }
454
466
 
455
467
  &.with-arrow.top {
@@ -457,17 +469,29 @@
457
469
  &:after {
458
470
  transform: rotate(180deg);
459
471
  bottom: -2px;
472
+ }
473
+ }
474
+
475
+ &.with-arrow.top,
476
+ &.with-arrow.bottom {
477
+ &.align-center:after {
460
478
  left: 50%;
461
479
  margin-left: -4px;
462
480
  }
481
+ &.align-start:after {
482
+ left: 0;
483
+ margin-left: 4px;
484
+ }
485
+ &.align-end:after {
486
+ right: 0;
487
+ margin-right: 4px;
488
+ }
463
489
  }
464
490
 
465
491
  &.with-arrow.bottom {
466
492
  margin-top: 2px;
467
493
  &:after {
468
494
  top: -2px;
469
- left: 50%;
470
- margin-left: -4px;
471
495
  }
472
496
  }
473
497
  }
@@ -1288,7 +1312,7 @@ input[type="range"][data-citric="slider"] {
1288
1312
  .selection-panel {
1289
1313
  max-height: var(--max-height, var(--default-max-height));
1290
1314
  opacity: 1;
1291
- ul {
1315
+ .options {
1292
1316
  overflow: auto;
1293
1317
  animation: var(--animation-duration) rich-select-delayed-overflow;
1294
1318
  }
@@ -1589,7 +1613,6 @@ input[type="range"][data-citric="slider"] {
1589
1613
  gap: 8px;
1590
1614
  }
1591
1615
  label {
1592
- width: 100%;
1593
1616
  cursor: pointer;
1594
1617
  }
1595
1618
  input[type="checkbox"] {
@@ -2209,6 +2232,7 @@ input[data-citric="favorite"][type="checkbox"] {
2209
2232
  background-color: var(--light-500);
2210
2233
  cursor: pointer;
2211
2234
  margin: 0;
2235
+ flex-shrink: 0;
2212
2236
 
2213
2237
  /* States */
2214
2238
 
@@ -27,5 +27,5 @@ import { OverlayProps } from './types.js';
27
27
  * )
28
28
  * ```
29
29
  */
30
- export declare function Overlay<T extends keyof HTMLTag>({ tag, children, content, position, triggerOn, attributes, onRenderChild, autoFocusBehavior, ...props }: OverlayProps<T>): import("react/jsx-runtime").JSX.Element;
30
+ export declare function Overlay<T extends keyof HTMLTag>({ tag, children, content, position, triggerOn, alignment, attributes, onRenderChild, autoFocusBehavior, ...props }: OverlayProps<T>): import("react/jsx-runtime").JSX.Element;
31
31
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Overlay/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAGrC,OAAO,EAAqB,YAAY,EAAE,MAAM,SAAS,CAAA;AAOzD;;;;;;;;;;GAUG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,EAC/C,GAAG,EACH,QAAQ,EACR,OAAO,EACP,QAAgB,EAChB,SAAmB,EACnB,UAAU,EACV,aAAa,EACb,iBAA8B,EAC9B,GAAG,KAAK,EACT,EAAE,YAAY,CAAC,CAAC,CAAC,2CA+GjB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Overlay/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAGrC,OAAO,EAAqB,YAAY,EAAE,MAAM,SAAS,CAAA;AAOzD;;;;;;;;;;GAUG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,EAC/C,GAAG,EACH,QAAQ,EACR,OAAO,EACP,QAAgB,EAChB,SAAmB,EACnB,SAAoB,EACpB,UAAU,EACV,aAAa,EACb,iBAA8B,EAC9B,GAAG,KAAK,EACT,EAAE,YAAY,CAAC,CAAC,CAAC,2CAgHjB"}
@@ -34,14 +34,14 @@ const arbitraryRenderTime = 20;
34
34
  * )
35
35
  * ```
36
36
  */
37
- export function Overlay({ tag, children, content, position = 'top', triggerOn = 'hover', attributes, onRenderChild, autoFocusBehavior = 'keyboard', ...props }) {
37
+ export function Overlay({ tag, children, content, position = 'top', triggerOn = 'hover', alignment = 'center', attributes, onRenderChild, autoFocusBehavior = 'keyboard', ...props }) {
38
38
  const controller = useRef({ close: () => Promise.resolve() });
39
39
  const wrapper = useRef(null);
40
40
  // props that don't require removing and reattaching the event listeners
41
- const dynamic = useRef({ tag, content, position, attributes });
41
+ const dynamic = useRef({ tag, content, position, alignment, attributes });
42
42
  useEffect(() => {
43
- dynamic.current = { tag, content, position, attributes };
44
- }, [tag, content, position, attributes]);
43
+ dynamic.current = { tag, content, position, alignment, attributes };
44
+ }, [tag, content, position, alignment, attributes]);
45
45
  useEffect(() => {
46
46
  let visible = false;
47
47
  let hideOnClickOutside;
@@ -71,6 +71,7 @@ export function Overlay({ tag, children, content, position = 'top', triggerOn =
71
71
  : _jsx(OverlayProvider, { value: controller.current, children: dynamic.current.content }),
72
72
  target,
73
73
  position: dynamic.current.position,
74
+ alignment: dynamic.current.alignment,
74
75
  attributes: dynamic.current.attributes,
75
76
  });
76
77
  hideOverlay = hideFn;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Overlay/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Overlay/index.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSelect.d.ts","sourceRoot":"","sources":["../../../src/components/Select/MultiSelect.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEzC,MAAM,WAAW,oBAAoB,CAAC,CAAC,CAAE,SACvC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,cAAc,GAAG,aAAa,GAAG,cAAc,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;IACpI,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IAC/B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IAC9C;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,CAAC,SAAS,CAAC;IAC/C;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,CAAC;IACpC;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC,GACnH,oBAAoB,CAAC,CAAC,CAAC,CAAA;AAEzB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,WAAW,GACD,CAAC,sMAmBnB,gBAAgB,CAAC,CAAC,CAAC,4CA4FvB,CAAA"}
1
+ {"version":3,"file":"MultiSelect.d.ts","sourceRoot":"","sources":["../../../src/components/Select/MultiSelect.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEzC,MAAM,WAAW,oBAAoB,CAAC,CAAC,CAAE,SACvC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,cAAc,GAAG,aAAa,GAAG,cAAc,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;IACpI,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IAC/B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IAC9C;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,CAAC,SAAS,CAAC;IAC/C;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,CAAC;IACpC;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC,GACnH,oBAAoB,CAAC,CAAC,CAAC,CAAA;AAEzB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,WAAW,GACD,CAAC,sMAmBnB,gBAAgB,CAAC,CAAC,CAAC,4CA+FvB,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { listToClass } from '@stack-spot/portal-theme';
3
3
  import { useTranslate } from '@stack-spot/portal-translate';
4
- import { useMemo, useRef, useState } from 'react';
4
+ import { useEffect, useMemo, useRef, useState } from 'react';
5
5
  import { useCheckboxGroupControls } from '../../utils/checkbox.js';
6
6
  import { applyCSSVariable } from '../../utils/css.js';
7
7
  import { defaultRenderKey, defaultRenderLabel } from '../../utils/options.js';
@@ -50,6 +50,10 @@ export const MultiSelect = withRef(function MultiSelect({ ref, options, value =
50
50
  useOpenPanelEffect({ open, setOpen, setSearch: controls.setFilter, element, searchable });
51
51
  useFocusEffect({ element, focused, setFocused, setOpen });
52
52
  useDisabledEffect({ disabled, setOpen, setFocused });
53
+ useEffect(() => {
54
+ if (value !== controls.value)
55
+ controls.setValue(value);
56
+ }, [value]);
53
57
  const header = useMemo(() => {
54
58
  if (value.length === 0)
55
59
  return _jsx("span", { className: "placeholder", children: placeholder });
@@ -58,11 +62,9 @@ export const MultiSelect = withRef(function MultiSelect({ ref, options, value =
58
62
  ?? (renderOption ? _jsx(Row, { gap: "4px", children: reversed.map(renderOption) }) : _jsx("span", { children: reversed.map(renderLabel).join(', ') })))
59
63
  || _jsx("span", {}));
60
64
  }, [value, placeholder]);
61
- return (_jsxs(CitricComponent, { tag: "div", component: "multi-select", style: maxHeight ? applyCSSVariable(style, 'max-height', `${maxHeight}px`) : style, className: listToClass([className, showArrow === false && 'hide-arrow', open && 'open', focused && 'focused']), ref: element, "aria-busy": loading, ...props, children: [_jsxs("header", { onClick: (e) => {
65
+ return (_jsxs(CitricComponent, { tag: "div", component: "multi-select", style: maxHeight ? applyCSSVariable(style, 'max-height', `${maxHeight}px`) : style, className: listToClass([className, showArrow === false && 'hide-arrow', open && 'open', focused && 'focused']), ref: element, "aria-busy": loading, ...props, children: [_jsxs("header", { onClick: () => {
62
66
  if (disabled)
63
67
  return;
64
- if (!open)
65
- e.stopPropagation();
66
68
  setFocused(true);
67
69
  setOpen(true);
68
70
  }, onFocus: () => setFocused(true), "aria-label": t.accessibilityHelp, tabIndex: 0, className: renderHeader ? 'custom' : undefined, children: [header, loading && _jsx(ProgressCircular, { size: "xs", className: "loader" })] }), _jsxs("div", { className: "selection-panel", "aria-hidden": !open, ...(open ? {} : { inert: 'true' }), children: [searchable && _jsx("div", { className: "search-bar", children: _jsxs("div", { "data-citric": "field-group", className: "auto", children: [_jsx("i", { "data-citric": "icon-box", className: "citric-icon outline Search" }), _jsx(Input, { type: "search", value: controls.filter, onChange: controls.setFilter, "aria-label": t.searchAccessibility })] }) }), showSelectAll && (_jsx(Checkbox, { className: "select-all", onChange: checked => checked ? controls.selectAll() : controls.removeSelection(), value: controls.isAllSelected, children: controls.isAllSelected ? t.removeSelection : t.selectAll })), _jsx(CheckboxGroup, { className: "options", gap: "0", options: controls.options, onChange: controls.setValue, value: controls.value, renderKey: controls.renderKey, focusable: false, renderItem: (checkbox, option) => (_jsxs(CitricComponent, { component: "checkbox-row", tag: "label", className: listToClass(['option', controls.isUnfilteredButChecked(option) && 'unfiltered']), children: [checkbox, renderOption?.(option) ?? renderLabel(option)] })) })] })] }));
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSelect.js","sourceRoot":"","sources":["../../../src/components/Select/MultiSelect.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MultiSelect.js","sourceRoot":"","sources":["../../../src/components/Select/MultiSelect.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RichSelect.d.ts","sourceRoot":"","sources":["../../../src/components/Select/RichSelect.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAErC,eAAO,MAAM,UAAU,GACD,CAAC,kNAqBlB,WAAW,CAAC,CAAC,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,4CAoFtC,CAAA"}
1
+ {"version":3,"file":"RichSelect.d.ts","sourceRoot":"","sources":["../../../src/components/Select/RichSelect.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAErC,eAAO,MAAM,UAAU,GACD,CAAC,kNAqBlB,WAAW,CAAC,CAAC,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,4CAmFtC,CAAA"}
@@ -37,11 +37,9 @@ export const RichSelect = withRef(function RichSelect({ ref, options, value, onC
37
37
  useOpenPanelEffect({ open, setOpen, setSearch, element, searchable });
38
38
  useFocusEffect({ element, focused, setFocused, setOpen });
39
39
  useDisabledEffect({ disabled, setOpen, setFocused });
40
- return (_jsxs(CitricComponent, { tag: "div", component: "rich-select", style: maxHeight ? applyCSSVariable(style, 'max-height', `${maxHeight}px`) : style, className: listToClass([className, showArrow === false && 'hide-arrow', open && 'open', focused && 'focused']), ref: element, "aria-busy": loading, ...props, children: [_jsx(SimpleSelect, { options: options, value: value, renderLabel: renderLabel, renderKey: renderKey, required: required, disabled: disabled, onChange: onChange, onFocus: onFocus, onBlur: onBlur, wrap: false }), _jsxs("header", { onClick: (e) => {
40
+ return (_jsxs(CitricComponent, { tag: "div", component: "rich-select", style: maxHeight ? applyCSSVariable(style, 'max-height', `${maxHeight}px`) : style, className: listToClass([className, showArrow === false && 'hide-arrow', open && 'open', focused && 'focused']), ref: element, "aria-busy": loading, ...props, children: [_jsx(SimpleSelect, { options: options, value: value, renderLabel: renderLabel, renderKey: renderKey, required: required, disabled: disabled, onChange: onChange, onFocus: onFocus, onBlur: onBlur, wrap: false }), _jsxs("header", { onClick: () => {
41
41
  if (disabled)
42
42
  return;
43
- if (!open)
44
- e.stopPropagation();
45
43
  setFocused(true);
46
44
  setOpen(true);
47
45
  }, "aria-hidden": true, children: [value === undefined
@@ -1 +1 @@
1
- {"version":3,"file":"RichSelect.js","sourceRoot":"","sources":["../../../src/components/Select/RichSelect.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RichSelect.js","sourceRoot":"","sources":["../../../src/components/Select/RichSelect.tsx"],"names":[],"mappings":"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"}
package/dist/overlay.d.ts CHANGED
@@ -34,8 +34,6 @@ export interface OverlayOptions<T extends keyof HTMLTag> {
34
34
  */
35
35
  position?: RelativePosition;
36
36
  /**
37
- * TODO: implement this.
38
- *
39
37
  * Affects the positioning of the overlay relative to `target`. While `position` defines the overlay position in the main axis,
40
38
  * `alignment` defines the position in the cross axis.
41
39
  *
@@ -68,7 +66,7 @@ export interface OverlayOptions<T extends keyof HTMLTag> {
68
66
  * @param options {@link OverlayOptions}.
69
67
  * @returns an object with two keys: "overlay" (the HTML Element created) and "hide" (a function to remove the element from the document).
70
68
  */
71
- export declare function showOverlay<T extends keyof HTMLTag = 'div'>({ tag, content, target, reference, position, attributes }: OverlayOptions<T>): {
69
+ export declare function showOverlay<T extends keyof HTMLTag = 'div'>({ tag, content, target, reference, position, alignment, attributes }: OverlayOptions<T>): {
72
70
  /**
73
71
  * The overlay element created.
74
72
  */
@@ -1 +1 @@
1
- {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../src/overlay.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAGrD,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;AAElE,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,MAAM,OAAO;IACrD;;;;OAIG;IACH,GAAG,CAAC,EAAE,CAAC,CAAC;IACR;;;;;OAKG;IACH,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;;;OAIG;IACH,MAAM,EAAE,KAAK,GAAG,WAAW,CAAC;IAC5B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACvC;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrD;;OAEG;IACH,UAAU,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,kBAAkB,GAAG;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAClF;AAqJD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,OAAO,GAAG,KAAK,EACzD,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,SAAqB,EAAE,QAAgB,EAAE,UAAU,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;IA+B9F;;OAEG;;IAEH;;;OAGG;;IAYH;;OAEG;;EAKN"}
1
+ {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../src/overlay.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAGrD,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;AAElE,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,MAAM,OAAO;IACrD;;;;OAIG;IACH,GAAG,CAAC,EAAE,CAAC,CAAC;IACR;;;;;OAKG;IACH,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;;;OAIG;IACH,MAAM,EAAE,KAAK,GAAG,WAAW,CAAC;IAC5B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACvC;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrD;;OAEG;IACH,UAAU,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,kBAAkB,GAAG;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAClF;AA+MD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,OAAO,GAAG,KAAK,EACzD,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,SAAqB,EAAE,QAAgB,EAAE,SAAoB,EAAE,UAAU,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;IA+CpH;;OAEG;;IAEH;;;OAGG;;IAEH;;OAEG;;EAKN"}
package/dist/overlay.js CHANGED
@@ -5,7 +5,21 @@ function hasMargins(element) {
5
5
  const s = element.style;
6
6
  return s.margin || s.marginTop || s.marginBottom || s.marginLeft || s.marginRight;
7
7
  }
8
- function calculatePosition({ overlay, reference, target, position: relativePosition, }) {
8
+ function calculateAlignment(alignment, offset, size, scroll) {
9
+ switch (alignment) {
10
+ case 'center': return offset + size / 2 + scroll;
11
+ case 'end': return offset + size + scroll;
12
+ case 'start': return offset + scroll;
13
+ }
14
+ }
15
+ function calculateAlignmentOffset(alignment, overlaySize) {
16
+ switch (alignment) {
17
+ case 'center': return overlaySize / 2;
18
+ case 'end': return overlaySize;
19
+ case 'start': return 0;
20
+ }
21
+ }
22
+ function calculatePosition({ overlay, reference, target, position: relativePosition, alignment, }) {
9
23
  const overlayDimensions = overlay.getBoundingClientRect();
10
24
  if (hasMargins(overlay)) {
11
25
  const style = overlay.computedStyleMap();
@@ -35,18 +49,18 @@ function calculatePosition({ overlay, reference, target, position: relativePosit
35
49
  switch (relativePosition) {
36
50
  case 'top':
37
51
  referencePosition.top = elementDimensions.top + window.scrollY;
38
- referencePosition.left = elementDimensions.left + elementDimensions.width / 2 + window.scrollX;
52
+ referencePosition.left = calculateAlignment(alignment, elementDimensions.left, elementDimensions.width, window.scrollX);
39
53
  break;
40
54
  case 'bottom':
41
55
  referencePosition.top = elementDimensions.bottom + window.scrollY;
42
- referencePosition.left = elementDimensions.left + elementDimensions.width / 2 + window.scrollX;
56
+ referencePosition.left = calculateAlignment(alignment, elementDimensions.left, elementDimensions.width, window.scrollX);
43
57
  break;
44
58
  case 'left':
45
- referencePosition.top = elementDimensions.top + elementDimensions.height / 2 + window.scrollY;
59
+ referencePosition.top = calculateAlignment(alignment, elementDimensions.top, elementDimensions.height, window.scrollY);
46
60
  referencePosition.left = elementDimensions.left + window.scrollX;
47
61
  break;
48
62
  case 'right':
49
- referencePosition.top = elementDimensions.top + elementDimensions.height / 2 + window.scrollY;
63
+ referencePosition.top = calculateAlignment(alignment, elementDimensions.top, elementDimensions.height, window.scrollY);
50
64
  referencePosition.left = elementDimensions.right + window.scrollX;
51
65
  }
52
66
  }
@@ -54,17 +68,17 @@ function calculatePosition({ overlay, reference, target, position: relativePosit
54
68
  switch (relativePosition) {
55
69
  case 'top':
56
70
  position.top -= overlayDimensions.height;
57
- position.left -= overlayDimensions.width / 2;
71
+ position.left -= calculateAlignmentOffset(alignment, overlayDimensions.width);
58
72
  break;
59
73
  case 'bottom':
60
- position.left -= overlayDimensions.width / 2;
74
+ position.left -= calculateAlignmentOffset(alignment, overlayDimensions.width);
61
75
  break;
62
76
  case 'left':
63
- position.top -= overlayDimensions.height / 2;
77
+ position.top -= calculateAlignmentOffset(alignment, overlayDimensions.height);
64
78
  position.left -= overlayDimensions.width;
65
79
  break;
66
80
  case 'right':
67
- position.top -= overlayDimensions.height / 2;
81
+ position.top -= calculateAlignmentOffset(alignment, overlayDimensions.height);
68
82
  }
69
83
  return position;
70
84
  }
@@ -134,6 +148,46 @@ function setElementAttributes(element, attributes, ignore = []) {
134
148
  element.setAttribute(reactAttributeToHTML(attr), attributes[attr]);
135
149
  }
136
150
  }
151
+ function getClosestScrollable(element, limit = document.body) {
152
+ if (element === limit)
153
+ return;
154
+ return element.clientHeight === element.scrollHeight ? getClosestScrollable(element.parentElement, limit) : element;
155
+ }
156
+ function isElementVisible(element, scrollable) {
157
+ const elementRect = element.getBoundingClientRect();
158
+ const scrollableRect = scrollable.getBoundingClientRect();
159
+ const diffX = elementRect.left - scrollableRect.left + scrollable.scrollLeft;
160
+ const isVisibleX = diffX + elementRect.width <= scrollable.scrollLeft + scrollableRect.width &&
161
+ diffX >= scrollable.scrollLeft;
162
+ const diffY = elementRect.top - scrollableRect.top + scrollable.scrollTop;
163
+ const isVisibleY = diffY + elementRect.height <= scrollable.scrollTop + scrollableRect.height &&
164
+ diffY >= scrollable.scrollTop;
165
+ return isVisibleX && isVisibleY;
166
+ }
167
+ /**
168
+ * The tooltip may be inside a scrollable element. If this is the case, we must update its position whenever the container is scrolled.
169
+ * If the container is scrolled enough to hide the element that triggered the overlay, we hide the overlay.
170
+ */
171
+ function attachScrollEffects(target, overlay, hide) {
172
+ const element = target instanceof Event ? target.target : target;
173
+ const closestScrollableFromTarget = getClosestScrollable(element, overlay.parentNode);
174
+ if (closestScrollableFromTarget) {
175
+ let lastScrollX = closestScrollableFromTarget.scrollLeft;
176
+ let lastScrollY = closestScrollableFromTarget.scrollTop;
177
+ const updatePosition = () => {
178
+ if (!isElementVisible(element, closestScrollableFromTarget))
179
+ return hide();
180
+ const diffX = closestScrollableFromTarget.scrollLeft - lastScrollX;
181
+ const diffY = closestScrollableFromTarget.scrollTop - lastScrollY;
182
+ overlay.style.left = `${parseInt(overlay.style.left) - diffX}px`;
183
+ overlay.style.top = `${parseInt(overlay.style.top) - diffY}px`;
184
+ lastScrollX = closestScrollableFromTarget.scrollLeft;
185
+ lastScrollY = closestScrollableFromTarget.scrollTop;
186
+ };
187
+ closestScrollableFromTarget.addEventListener('scroll', updatePosition);
188
+ return () => closestScrollableFromTarget.removeEventListener('scroll', updatePosition);
189
+ }
190
+ }
137
191
  /**
138
192
  * Appends a new HTML Element to the tag "body". This element is absolutely positioned and its position is calculated according to the
139
193
  * options passed as parameter.
@@ -142,7 +196,8 @@ function setElementAttributes(element, attributes, ignore = []) {
142
196
  * @param options {@link OverlayOptions}.
143
197
  * @returns an object with two keys: "overlay" (the HTML Element created) and "hide" (a function to remove the element from the document).
144
198
  */
145
- export function showOverlay({ tag, content, target, reference = 'element', position = 'top', attributes }) {
199
+ export function showOverlay({ tag, content, target, reference = 'element', position = 'top', alignment = 'center', attributes }) {
200
+ let removeScrollEffects;
146
201
  const overlay = document.createElement(tag || 'div');
147
202
  overlay.style = `z-index: 9999; pointer-events: none; position: absolute; opacity: 0; transition: opacity ${animationDurationMS / 1000}s; ${styleObjectToCssString(attributes?.style)}`;
148
203
  overlay.inert = true;
@@ -161,14 +216,28 @@ export function showOverlay({ tag, content, target, reference = 'element', posit
161
216
  document.body.removeChild(overlay);
162
217
  };
163
218
  }
219
+ const hide = () => new Promise((resolve) => {
220
+ overlay.style.opacity = '0';
221
+ overlay.style.pointerEvents = 'none';
222
+ overlay.inert = true;
223
+ setTimeout(() => {
224
+ try {
225
+ removeScrollEffects?.();
226
+ unmount();
227
+ }
228
+ catch { /* empty */ }
229
+ resolve();
230
+ }, animationDurationMS);
231
+ });
164
232
  setTimeout(() => {
165
- const overlayPos = getSafeOverlayPosition({ overlay, reference, target }, [position, invert(position), ...oppositeAxis(position)]);
233
+ const overlayPos = getSafeOverlayPosition({ alignment, overlay, reference, target }, [position, invert(position), ...oppositeAxis(position)]);
166
234
  overlay.style = `z-index: 9999; position: absolute; opacity: 1; transition: opacity ${animationDurationMS / 1000}s; top: ${overlayPos.top}px; left: ${overlayPos.left}px; ${styleObjectToCssString(attributes?.style)}`;
167
235
  if (attributes && 'inert' in attributes && attributes.inert)
168
236
  overlay.style.pointerEvents = 'none';
169
237
  else
170
238
  overlay.inert = false;
171
- overlay.classList.add(overlayPos.relativeTo);
239
+ overlay.classList.add(overlayPos.relativeTo, `align-${alignment}`);
240
+ removeScrollEffects = attachScrollEffects(target, overlay, hide);
172
241
  }, 0);
173
242
  return {
174
243
  /**
@@ -179,18 +248,7 @@ export function showOverlay({ tag, content, target, reference = 'element', posit
179
248
  * Removes the overlay element.
180
249
  * @returns a promise that completes when the element is fully removed (after any animation).
181
250
  */
182
- hide: () => new Promise((resolve) => {
183
- overlay.style.opacity = '0';
184
- overlay.style.pointerEvents = 'none';
185
- overlay.inert = true;
186
- setTimeout(() => {
187
- try {
188
- unmount();
189
- }
190
- catch { /* empty */ }
191
- resolve();
192
- }, animationDurationMS);
193
- }),
251
+ hide,
194
252
  /**
195
253
  * Returns a promise that resolves as soon as the overlay finishes the animation to show up.
196
254
  */
@@ -1 +1 @@
1
- {"version":3,"file":"overlay.js","sourceRoot":"","sources":["../src/overlay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"overlay.js","sourceRoot":"","sources":["../src/overlay.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stack-spot/citric-react",
3
- "version": "0.28.0",
3
+ "version": "0.29.1",
4
4
  "author": "StackSpot",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
@@ -44,6 +44,7 @@ export function Overlay<T extends keyof HTMLTag>({
44
44
  content,
45
45
  position = 'top',
46
46
  triggerOn = 'hover',
47
+ alignment = 'center',
47
48
  attributes,
48
49
  onRenderChild,
49
50
  autoFocusBehavior = 'keyboard',
@@ -53,11 +54,11 @@ export function Overlay<T extends keyof HTMLTag>({
53
54
  const controller = useRef<OverlayController>({ close: () => Promise.resolve() })
54
55
  const wrapper = useRef<HTMLDivElement | null>(null)
55
56
  // props that don't require removing and reattaching the event listeners
56
- const dynamic = useRef({ tag, content, position, attributes })
57
+ const dynamic = useRef({ tag, content, position, alignment, attributes })
57
58
 
58
59
  useEffect(() => {
59
- dynamic.current = { tag, content, position, attributes }
60
- }, [tag, content, position, attributes])
60
+ dynamic.current = { tag, content, position, alignment, attributes }
61
+ }, [tag, content, position, alignment, attributes])
61
62
 
62
63
  useEffect(() => {
63
64
  let visible = false
@@ -88,6 +89,7 @@ export function Overlay<T extends keyof HTMLTag>({
88
89
  : <OverlayProvider value={controller.current}>{dynamic.current.content}</OverlayProvider>,
89
90
  target,
90
91
  position: dynamic.current.position,
92
+ alignment: dynamic.current.alignment,
91
93
  attributes: dynamic.current.attributes,
92
94
  })
93
95
  hideOverlay = hideFn
@@ -1,6 +1,6 @@
1
1
  import { listToClass } from '@stack-spot/portal-theme'
2
2
  import { useTranslate } from '@stack-spot/portal-translate'
3
- import { useMemo, useRef, useState } from 'react'
3
+ import { useEffect, useMemo, useRef, useState } from 'react'
4
4
  import { useCheckboxGroupControls } from '../../utils/checkbox'
5
5
  import { applyCSSVariable } from '../../utils/css'
6
6
  import { defaultRenderKey, defaultRenderLabel } from '../../utils/options'
@@ -114,6 +114,10 @@ export const MultiSelect = withRef(
114
114
  useFocusEffect({ element, focused, setFocused, setOpen })
115
115
  useDisabledEffect({ disabled, setOpen, setFocused })
116
116
 
117
+ useEffect(() => {
118
+ if (value !== controls.value) controls.setValue(value)
119
+ }, [value])
120
+
117
121
  const header = useMemo(() => {
118
122
  if (value.length === 0) return <span className="placeholder">{placeholder}</span>
119
123
  const reversed = [...value].reverse()
@@ -134,9 +138,8 @@ export const MultiSelect = withRef(
134
138
  {...props}
135
139
  >
136
140
  <header
137
- onClick={(e) => {
141
+ onClick={() => {
138
142
  if (disabled) return
139
- if (!open) e.stopPropagation()
140
143
  setFocused(true)
141
144
  setOpen(true)
142
145
  }}
@@ -92,9 +92,8 @@ export const RichSelect = withRef(
92
92
  wrap={false}
93
93
  />
94
94
  <header
95
- onClick={(e) => {
95
+ onClick={() => {
96
96
  if (disabled) return
97
- if (!open) e.stopPropagation()
98
97
  setFocused(true)
99
98
  setOpen(true)
100
99
  }}
package/src/overlay.ts CHANGED
@@ -38,8 +38,6 @@ export interface OverlayOptions<T extends keyof HTMLTag> {
38
38
  */
39
39
  position?: RelativePosition,
40
40
  /**
41
- * TODO: implement this.
42
- *
43
41
  * Affects the positioning of the overlay relative to `target`. While `position` defines the overlay position in the main axis,
44
42
  * `alignment` defines the position in the cross axis.
45
43
  *
@@ -72,7 +70,7 @@ interface PositionWithRelativeData extends Position {
72
70
  relativeTo: RelativePosition,
73
71
  }
74
72
 
75
- type CalculatePosOptions = Pick<Required<OverlayOptions<any>>, 'position' | 'target' | 'reference'>
73
+ type CalculatePosOptions = Pick<Required<OverlayOptions<any>>, 'position' | 'target' | 'reference' | 'alignment'>
76
74
  & { overlay: HTMLElement }
77
75
 
78
76
  const animationDurationMS = 300
@@ -82,11 +80,28 @@ function hasMargins(element: HTMLElement) {
82
80
  return s.margin || s.marginTop || s.marginBottom || s.marginLeft || s.marginRight
83
81
  }
84
82
 
83
+ function calculateAlignment(alignment: CalculatePosOptions['alignment'], offset: number, size: number, scroll: number) {
84
+ switch (alignment) {
85
+ case 'center': return offset + size / 2 + scroll
86
+ case 'end': return offset + size + scroll
87
+ case 'start': return offset + scroll
88
+ }
89
+ }
90
+
91
+ function calculateAlignmentOffset(alignment: CalculatePosOptions['alignment'], overlaySize: number) {
92
+ switch (alignment) {
93
+ case 'center': return overlaySize / 2
94
+ case 'end': return overlaySize
95
+ case 'start': return 0
96
+ }
97
+ }
98
+
85
99
  function calculatePosition({
86
100
  overlay,
87
101
  reference,
88
102
  target,
89
103
  position: relativePosition,
104
+ alignment,
90
105
  }: CalculatePosOptions): Position & { overlayWidth: number, overlayHeight: number } {
91
106
  const overlayDimensions = overlay.getBoundingClientRect()
92
107
  if (hasMargins(overlay)) {
@@ -111,18 +126,18 @@ function calculatePosition({
111
126
  switch (relativePosition) {
112
127
  case 'top':
113
128
  referencePosition.top = elementDimensions.top + window.scrollY
114
- referencePosition.left = elementDimensions.left + elementDimensions.width / 2 + window.scrollX
129
+ referencePosition.left = calculateAlignment(alignment, elementDimensions.left, elementDimensions.width, window.scrollX)
115
130
  break
116
131
  case 'bottom':
117
132
  referencePosition.top = elementDimensions.bottom + window.scrollY
118
- referencePosition.left = elementDimensions.left + elementDimensions.width / 2 + window.scrollX
133
+ referencePosition.left = calculateAlignment(alignment, elementDimensions.left, elementDimensions.width, window.scrollX)
119
134
  break
120
135
  case 'left':
121
- referencePosition.top = elementDimensions.top + elementDimensions.height / 2 + window.scrollY
136
+ referencePosition.top = calculateAlignment(alignment, elementDimensions.top, elementDimensions.height, window.scrollY)
122
137
  referencePosition.left = elementDimensions.left + window.scrollX
123
138
  break
124
139
  case 'right':
125
- referencePosition.top = elementDimensions.top + elementDimensions.height / 2 + window.scrollY
140
+ referencePosition.top = calculateAlignment(alignment, elementDimensions.top, elementDimensions.height, window.scrollY)
126
141
  referencePosition.left = elementDimensions.right + window.scrollX
127
142
  }
128
143
  }
@@ -130,17 +145,17 @@ function calculatePosition({
130
145
  switch (relativePosition) {
131
146
  case 'top':
132
147
  position.top -= overlayDimensions.height
133
- position.left -= overlayDimensions.width / 2
148
+ position.left -= calculateAlignmentOffset(alignment, overlayDimensions.width)
134
149
  break
135
150
  case 'bottom':
136
- position.left -= overlayDimensions.width / 2
151
+ position.left -= calculateAlignmentOffset(alignment, overlayDimensions.width)
137
152
  break
138
153
  case 'left':
139
- position.top -= overlayDimensions.height / 2
154
+ position.top -= calculateAlignmentOffset(alignment, overlayDimensions.height)
140
155
  position.left -= overlayDimensions.width
141
156
  break
142
157
  case 'right':
143
- position.top -= overlayDimensions.height / 2
158
+ position.top -= calculateAlignmentOffset(alignment, overlayDimensions.height)
144
159
  }
145
160
  return position
146
161
  }
@@ -210,6 +225,47 @@ function setElementAttributes(element: HTMLElement, attributes: Record<string, a
210
225
  }
211
226
  }
212
227
 
228
+ function getClosestScrollable(element: HTMLElement, limit: HTMLElement = document.body): HTMLElement | null | undefined {
229
+ if (element === limit) return
230
+ return element.clientHeight === element.scrollHeight ? getClosestScrollable(element.parentElement!, limit) : element
231
+ }
232
+
233
+ function isElementVisible(element: HTMLElement, scrollable: HTMLElement) {
234
+ const elementRect = element.getBoundingClientRect()
235
+ const scrollableRect = scrollable.getBoundingClientRect()
236
+ const diffX = elementRect.left - scrollableRect.left + scrollable.scrollLeft
237
+ const isVisibleX = diffX + elementRect.width <= scrollable.scrollLeft + scrollableRect.width &&
238
+ diffX >= scrollable.scrollLeft
239
+ const diffY = elementRect.top - scrollableRect.top + scrollable.scrollTop
240
+ const isVisibleY = diffY + elementRect.height <= scrollable.scrollTop + scrollableRect.height &&
241
+ diffY >= scrollable.scrollTop
242
+ return isVisibleX && isVisibleY
243
+ }
244
+
245
+ /**
246
+ * The tooltip may be inside a scrollable element. If this is the case, we must update its position whenever the container is scrolled.
247
+ * If the container is scrolled enough to hide the element that triggered the overlay, we hide the overlay.
248
+ */
249
+ function attachScrollEffects(target: OverlayOptions<any>['target'], overlay: HTMLElement, hide: () => void) {
250
+ const element = target instanceof Event ? target.target as HTMLElement : target
251
+ const closestScrollableFromTarget = getClosestScrollable(element, overlay.parentNode as HTMLElement)
252
+ if (closestScrollableFromTarget) {
253
+ let lastScrollX = closestScrollableFromTarget.scrollLeft
254
+ let lastScrollY = closestScrollableFromTarget.scrollTop
255
+ const updatePosition = () => {
256
+ if (!isElementVisible(element, closestScrollableFromTarget)) return hide()
257
+ const diffX = closestScrollableFromTarget.scrollLeft - lastScrollX
258
+ const diffY = closestScrollableFromTarget.scrollTop - lastScrollY
259
+ overlay.style.left = `${parseInt(overlay.style.left) - diffX}px`
260
+ overlay.style.top = `${parseInt(overlay.style.top) - diffY}px`
261
+ lastScrollX = closestScrollableFromTarget.scrollLeft
262
+ lastScrollY = closestScrollableFromTarget.scrollTop
263
+ }
264
+ closestScrollableFromTarget.addEventListener('scroll', updatePosition)
265
+ return () => closestScrollableFromTarget.removeEventListener('scroll', updatePosition)
266
+ }
267
+ }
268
+
213
269
  /**
214
270
  * Appends a new HTML Element to the tag "body". This element is absolutely positioned and its position is calculated according to the
215
271
  * options passed as parameter.
@@ -219,8 +275,9 @@ function setElementAttributes(element: HTMLElement, attributes: Record<string, a
219
275
  * @returns an object with two keys: "overlay" (the HTML Element created) and "hide" (a function to remove the element from the document).
220
276
  */
221
277
  export function showOverlay<T extends keyof HTMLTag = 'div'>(
222
- { tag, content, target, reference = 'element', position = 'top', attributes }: OverlayOptions<T>,
278
+ { tag, content, target, reference = 'element', position = 'top', alignment = 'center', attributes }: OverlayOptions<T>,
223
279
  ) {
280
+ let removeScrollEffects: (() => void) | undefined
224
281
  const overlay = document.createElement(tag || 'div')
225
282
  overlay.style = `z-index: 9999; pointer-events: none; position: absolute; opacity: 0; transition: opacity ${animationDurationMS / 1000}s; ${styleObjectToCssString(attributes?.style)}`
226
283
  overlay.inert = true
@@ -238,15 +295,30 @@ export function showOverlay<T extends keyof HTMLTag = 'div'>(
238
295
  document.body.removeChild(overlay)
239
296
  }
240
297
  }
298
+
299
+ const hide = () => new Promise<void>((resolve) => {
300
+ overlay.style.opacity = '0'
301
+ overlay.style.pointerEvents = 'none'
302
+ overlay.inert = true
303
+ setTimeout(() => {
304
+ try {
305
+ removeScrollEffects?.()
306
+ unmount()
307
+ } catch { /* empty */ }
308
+ resolve()
309
+ }, animationDurationMS)
310
+ })
311
+
241
312
  setTimeout(() => {
242
313
  const overlayPos = getSafeOverlayPosition(
243
- { overlay, reference, target },
314
+ { alignment, overlay, reference, target },
244
315
  [position, invert(position), ...oppositeAxis(position)],
245
316
  )
246
317
  overlay.style = `z-index: 9999; position: absolute; opacity: 1; transition: opacity ${animationDurationMS / 1000}s; top: ${overlayPos.top}px; left: ${overlayPos.left}px; ${styleObjectToCssString(attributes?.style)}`
247
318
  if (attributes && 'inert' in attributes && attributes.inert) overlay.style.pointerEvents = 'none'
248
319
  else overlay.inert = false
249
- overlay.classList.add(overlayPos.relativeTo)
320
+ overlay.classList.add(overlayPos.relativeTo, `align-${alignment}`)
321
+ removeScrollEffects = attachScrollEffects(target, overlay, hide)
250
322
  }, 0)
251
323
 
252
324
  return {
@@ -258,17 +330,7 @@ export function showOverlay<T extends keyof HTMLTag = 'div'>(
258
330
  * Removes the overlay element.
259
331
  * @returns a promise that completes when the element is fully removed (after any animation).
260
332
  */
261
- hide: () => new Promise<void>((resolve) => {
262
- overlay.style.opacity = '0'
263
- overlay.style.pointerEvents = 'none'
264
- overlay.inert = true
265
- setTimeout(() => {
266
- try {
267
- unmount()
268
- } catch { /* empty */ }
269
- resolve()
270
- }, animationDurationMS)
271
- }),
333
+ hide,
272
334
  /**
273
335
  * Returns a promise that resolves as soon as the overlay finishes the animation to show up.
274
336
  */