@synerise/ds-utils 0.24.26 → 0.26.0
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/CHANGELOG.md +23 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/useElementInView/useElementInView.d.ts +10 -0
- package/dist/useElementInView/useElementInView.js +38 -0
- package/dist/useOverscrollBlock/useOverscrollBlock.d.ts +3 -0
- package/dist/useOverscrollBlock/useOverscrollBlock.js +31 -0
- package/dist/useResize/useResize.d.ts +1 -1
- package/dist/useResize/useResize.js +3 -3
- package/dist/useResizeToFit/useResizeToFit.d.ts +11 -0
- package/dist/useResizeToFit/useResizeToFit.js +38 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,29 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [0.26.0](https://github.com/synerise/synerise-design/compare/@synerise/ds-utils@0.25.0...@synerise/ds-utils@0.26.0) (2024-03-20)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **table:** sticky virtualised table ([4733821](https://github.com/synerise/synerise-design/commit/47338215ed6355a90edf7350e6002c96c9f83809))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# [0.25.0](https://github.com/synerise/synerise-design/compare/@synerise/ds-utils@0.24.26...@synerise/ds-utils@0.25.0) (2024-03-05)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Features
|
|
21
|
+
|
|
22
|
+
* **input:** support autoresize to stretch to parent ([329c866](https://github.com/synerise/synerise-design/commit/329c866cb54921ad1260ae217cb8c471e43b986e))
|
|
23
|
+
* **utils:** horizontal overscroll blocking hook ([5896100](https://github.com/synerise/synerise-design/commit/5896100d514a910fbdf6614dab5de12b4701cd36))
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
6
29
|
## [0.24.26](https://github.com/synerise/synerise-design/compare/@synerise/ds-utils@0.24.25...@synerise/ds-utils@0.24.26) (2024-02-21)
|
|
7
30
|
|
|
8
31
|
**Note:** Version bump only for package @synerise/ds-utils
|
package/dist/index.d.ts
CHANGED
|
@@ -9,6 +9,9 @@ export { default as useResize } from './useResize/useResize';
|
|
|
9
9
|
export { default as useBreakpoint } from './useBreakpoint/useBreakpoint';
|
|
10
10
|
export { default as useCombinedRefs } from './useCombinedRefs/useCombinedRefs';
|
|
11
11
|
export { default as usePrevious } from './usePrevious/usePrevious';
|
|
12
|
+
export { default as useElementInView } from './useElementInView/useElementInView';
|
|
13
|
+
export { default as useOverscrollBlock } from './useOverscrollBlock/useOverscrollBlock';
|
|
14
|
+
export { default as useResizeToFit } from './useResizeToFit/useResizeToFit';
|
|
12
15
|
export * from './useTraceUpdate';
|
|
13
16
|
export * from './getPopupContainer';
|
|
14
17
|
export declare const NOOP: () => void;
|
package/dist/index.js
CHANGED
|
@@ -9,6 +9,9 @@ export { default as useResize } from './useResize/useResize';
|
|
|
9
9
|
export { default as useBreakpoint } from './useBreakpoint/useBreakpoint';
|
|
10
10
|
export { default as useCombinedRefs } from './useCombinedRefs/useCombinedRefs';
|
|
11
11
|
export { default as usePrevious } from './usePrevious/usePrevious';
|
|
12
|
+
export { default as useElementInView } from './useElementInView/useElementInView';
|
|
13
|
+
export { default as useOverscrollBlock } from './useOverscrollBlock/useOverscrollBlock';
|
|
14
|
+
export { default as useResizeToFit } from './useResizeToFit/useResizeToFit';
|
|
12
15
|
export * from './useTraceUpdate';
|
|
13
16
|
export * from './getPopupContainer';
|
|
14
17
|
export var NOOP = function NOOP() {}; // eslint-disable-line @typescript-eslint/no-empty-function
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { MutableRefObject } from 'react';
|
|
2
|
+
type IntersectionObserverOptions = {
|
|
3
|
+
rootMargin?: string;
|
|
4
|
+
threshold?: number | number[];
|
|
5
|
+
};
|
|
6
|
+
declare const useElementInView: <T extends HTMLElement = HTMLElement>(options: IntersectionObserverOptions, rootElementRef?: MutableRefObject<HTMLDivElement | null | undefined>) => {
|
|
7
|
+
elementRef: MutableRefObject<T | undefined>;
|
|
8
|
+
isVisible: boolean;
|
|
9
|
+
};
|
|
10
|
+
export default useElementInView;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
2
|
+
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
4
|
+
|
|
5
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
+
|
|
7
|
+
import { useEffect, useRef, useState } from 'react';
|
|
8
|
+
|
|
9
|
+
var useElementInView = function useElementInView(options, rootElementRef) {
|
|
10
|
+
var elementRef = useRef();
|
|
11
|
+
|
|
12
|
+
var _useState = useState(false),
|
|
13
|
+
isVisible = _useState[0],
|
|
14
|
+
setIsVisible = _useState[1];
|
|
15
|
+
|
|
16
|
+
useEffect(function () {
|
|
17
|
+
var intersectionObserver = new window.IntersectionObserver(function (_ref) {
|
|
18
|
+
var entry = _ref[0];
|
|
19
|
+
setIsVisible(entry.isIntersecting);
|
|
20
|
+
}, _objectSpread({}, options, {
|
|
21
|
+
root: (rootElementRef == null ? void 0 : rootElementRef.current) || null
|
|
22
|
+
}));
|
|
23
|
+
|
|
24
|
+
if (elementRef.current) {
|
|
25
|
+
intersectionObserver.observe(elementRef.current);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return function () {
|
|
29
|
+
intersectionObserver.disconnect();
|
|
30
|
+
};
|
|
31
|
+
});
|
|
32
|
+
return {
|
|
33
|
+
elementRef: elementRef,
|
|
34
|
+
isVisible: isVisible
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export default useElementInView;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef } from 'react';
|
|
2
|
+
|
|
3
|
+
var useOverscrollBlock = function useOverscrollBlock() {
|
|
4
|
+
var ref = useRef();
|
|
5
|
+
var handleMouseEnter = useCallback(function () {
|
|
6
|
+
document.body.style.overscrollBehaviorX = 'contain';
|
|
7
|
+
}, []);
|
|
8
|
+
var handleMouseLeave = useCallback(function () {
|
|
9
|
+
document.body.style.removeProperty('overscroll-behavior-x');
|
|
10
|
+
}, []);
|
|
11
|
+
useEffect(function () {
|
|
12
|
+
var element = ref.current;
|
|
13
|
+
|
|
14
|
+
if (element) {
|
|
15
|
+
element.addEventListener('mouseenter', handleMouseEnter);
|
|
16
|
+
element.addEventListener('mouseleave', handleMouseLeave);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return function () {
|
|
20
|
+
if (element) {
|
|
21
|
+
element.removeEventListener('mouseenter', handleMouseEnter);
|
|
22
|
+
element.removeEventListener('mouseleave', handleMouseLeave);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
document.body.style.removeProperty('overscroll-behavior-x');
|
|
26
|
+
};
|
|
27
|
+
}, [handleMouseEnter, handleMouseLeave]);
|
|
28
|
+
return ref;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export default useOverscrollBlock;
|
|
@@ -3,5 +3,5 @@ type Dimensions = {
|
|
|
3
3
|
width: number;
|
|
4
4
|
height: number;
|
|
5
5
|
};
|
|
6
|
-
declare const useResize: (componentRef
|
|
6
|
+
declare const useResize: (componentRef?: React.RefObject<any>, visible?: boolean) => Dimensions;
|
|
7
7
|
export default useResize;
|
|
@@ -16,8 +16,8 @@ var useResize = function useResize(componentRef, visible) {
|
|
|
16
16
|
React.useEffect(function () {
|
|
17
17
|
var getDimensions = function getDimensions() {
|
|
18
18
|
return {
|
|
19
|
-
width: componentRef.current.offsetWidth,
|
|
20
|
-
height: componentRef.current.offsetHeight
|
|
19
|
+
width: (componentRef == null ? void 0 : componentRef.current.offsetWidth) || 0,
|
|
20
|
+
height: (componentRef == null ? void 0 : componentRef.current.offsetHeight) || 0
|
|
21
21
|
};
|
|
22
22
|
};
|
|
23
23
|
|
|
@@ -25,7 +25,7 @@ var useResize = function useResize(componentRef, visible) {
|
|
|
25
25
|
setDimensions(getDimensions());
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
-
if (componentRef.current) {
|
|
28
|
+
if (componentRef != null && componentRef.current) {
|
|
29
29
|
setDimensions(getDimensions());
|
|
30
30
|
}
|
|
31
31
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
type useResizeToFitProps = {
|
|
3
|
+
onResize: (width: number) => void;
|
|
4
|
+
autoObserve?: boolean;
|
|
5
|
+
};
|
|
6
|
+
declare const useResizeToFit: <T extends HTMLElement = HTMLDivElement>({ onResize, autoObserve }: useResizeToFitProps) => {
|
|
7
|
+
elementRef: import("react").RefObject<T>;
|
|
8
|
+
disconnect: () => void;
|
|
9
|
+
observe: () => void;
|
|
10
|
+
};
|
|
11
|
+
export default useResizeToFit;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { useEffect, useRef, useCallback } from 'react';
|
|
2
|
+
|
|
3
|
+
var useResizeToFit = function useResizeToFit(_ref) {
|
|
4
|
+
var onResize = _ref.onResize,
|
|
5
|
+
autoObserve = _ref.autoObserve;
|
|
6
|
+
var elementRef = useRef(null);
|
|
7
|
+
var resizeObserver = useRef(new window.ResizeObserver(function () {
|
|
8
|
+
if (elementRef.current) {
|
|
9
|
+
onResize(elementRef.current.clientWidth);
|
|
10
|
+
}
|
|
11
|
+
})).current;
|
|
12
|
+
var observe = useCallback(function () {
|
|
13
|
+
elementRef.current && resizeObserver.observe(elementRef.current);
|
|
14
|
+
}, [resizeObserver]);
|
|
15
|
+
var disconnect = useCallback(function () {
|
|
16
|
+
resizeObserver.disconnect();
|
|
17
|
+
}, [resizeObserver]);
|
|
18
|
+
useEffect(function () {
|
|
19
|
+
if (elementRef.current) {
|
|
20
|
+
if (autoObserve) {
|
|
21
|
+
observe();
|
|
22
|
+
} else {
|
|
23
|
+
disconnect();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return function () {
|
|
28
|
+
resizeObserver.disconnect();
|
|
29
|
+
};
|
|
30
|
+
}, [resizeObserver, autoObserve, elementRef, observe, disconnect]);
|
|
31
|
+
return {
|
|
32
|
+
elementRef: elementRef,
|
|
33
|
+
disconnect: disconnect,
|
|
34
|
+
observe: observe
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export default useResizeToFit;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@synerise/ds-utils",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.26.0",
|
|
4
4
|
"description": "Utils UI Component for the Synerise Design System",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"repository": "synerise/synerise-design",
|
|
@@ -44,5 +44,5 @@
|
|
|
44
44
|
"@synerise/ds-core": "^0.40.12",
|
|
45
45
|
"@testing-library/react": "10.0.1"
|
|
46
46
|
},
|
|
47
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "2df913352aa96e8aed75894489afb3a4ee303370"
|
|
48
48
|
}
|