@elliemae/ds-mobile 2.4.21 → 2.4.22

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.
@@ -12,7 +12,6 @@ var jsxRuntime = require('react/jsx-runtime');
12
12
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
13
 
14
14
  var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
15
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
16
15
 
17
16
  const InfiniteLoader = _ref => {
18
17
  let {
@@ -21,49 +20,43 @@ const InfiniteLoader = _ref => {
21
20
  children,
22
21
  height
23
22
  } = _ref;
24
- const [wh, setHeight] = React__default["default"].useState(height);
25
-
26
- const callback = entries => {
23
+ const [viewportHeight, setViewportHeight] = React.useState(height);
24
+ const baselineRef = React.useRef(null);
25
+ const observerRef = React.useRef(null);
26
+ const callback = React.useCallback(entries => {
27
27
  const {
28
28
  isIntersecting
29
29
  } = entries[0];
30
30
 
31
31
  if (isIntersecting && !isFetching) {
32
- fetchData(); // observer.current.unobserve(target.current);
33
-
34
- observer.current.disconnect();
35
- observer.current = undefined;
32
+ fetchData();
33
+ observerRef.current?.disconnect();
36
34
  }
37
- }; // const [target, setTarget] = useState(null);
38
-
39
-
40
- const target = React.useRef(null);
41
- const observer = React.useRef(null);
35
+ }, [fetchData, isFetching]);
42
36
  React.useEffect(() => {
43
- if (observer.current) {
44
- observer.current.disconnect();
45
- }
46
-
47
- observer.current = new IntersectionObserver(callback, {
48
- root: null,
49
- rootMargin: '0px',
50
- threshold: 0.25
51
- });
52
-
53
- if (target.current) {
54
- observer.current.observe(target.current);
37
+ if (!isFetching) {
38
+ observerRef.current?.disconnect();
39
+ observerRef.current = new IntersectionObserver(callback, {
40
+ root: null,
41
+ rootMargin: '0px',
42
+ threshold: 0.1
43
+ });
44
+ if (baselineRef.current) observerRef.current.observe(baselineRef.current);
55
45
  }
56
46
 
57
47
  return () => {
58
- observer.current?.unobserve(target.current);
59
- observer.current?.disconnect();
48
+ observerRef.current?.disconnect();
60
49
  };
61
- }, [target, observer, fetchData]);
62
- const handleResize = React__default["default"].useCallback(() => {
63
- setHeight(window.innerHeight);
50
+ }, [baselineRef, observerRef, fetchData, callback, isFetching]);
51
+ const handleResize = React.useCallback(() => {
52
+ setViewportHeight(window.innerHeight);
64
53
  }, []);
65
54
  React.useEffect(() => {
66
- if (!height) window.addEventListener('resize', handleResize);
55
+ if (!height) {
56
+ window.addEventListener('resize', handleResize);
57
+ handleResize();
58
+ }
59
+
67
60
  return () => {
68
61
  if (!height) window.removeEventListener('resize', handleResize);
69
62
  };
@@ -71,16 +64,16 @@ const InfiniteLoader = _ref => {
71
64
  return /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
72
65
  style: {
73
66
  position: 'relative',
74
- height: wh,
75
- overflow: 'hidden'
67
+ overflow: 'hidden',
68
+ height: viewportHeight
76
69
  }
77
70
  }, void 0, /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
78
71
  style: {
79
72
  overflow: isFetching ? 'hidden' : 'auto',
80
- height: wh
73
+ height: viewportHeight
81
74
  }
82
75
  }, void 0, children, /*#__PURE__*/jsxRuntime.jsx("div", {
83
- ref: target,
76
+ ref: baselineRef,
84
77
  style: {
85
78
  height: 1
86
79
  }
@@ -90,17 +83,10 @@ const InfiniteLoader = _ref => {
90
83
  };
91
84
 
92
85
  const listProps = {
93
- /** toggle loading state */
94
86
  isFetching: reactDesc.PropTypes.bool.description('toggle loading state'),
95
-
96
- /** callback to fetch new items */
97
87
  fetchData: reactDesc.PropTypes.func.description('callback to fetch new items'),
98
-
99
- /** row items for infinite loader */
100
88
  children: reactDesc.PropTypes.element.description('row items for infinite loader'),
101
-
102
- /** infinite loader list height */
103
- height: reactDesc.PropTypes.number.isRequired.description('infinite loader list height')
89
+ height: reactDesc.PropTypes.number.description('infinite loader list height')
104
90
  };
105
91
  const InfiniteLoaderWithSchema = reactDesc.describe(InfiniteLoader);
106
92
  InfiniteLoaderWithSchema.propTypes = listProps;
@@ -18,7 +18,7 @@ const Loader = _ref => {
18
18
  isOpen
19
19
  } = _ref;
20
20
  return /*#__PURE__*/_jsx__default["default"](styled.LoaderBox, {
21
- className: isOpen && 'opened'
21
+ className: isOpen ? 'opened' : ''
22
22
  }, void 0, _DSIndeterminateProgr || (_DSIndeterminateProgr = /*#__PURE__*/_jsx__default["default"](DSIndeterminateProgressIndicator__default["default"], {
23
23
  processing: true,
24
24
  title: "Loading"
@@ -86,6 +86,7 @@ const listProps = {
86
86
  /** flag for virtualized list */
87
87
  hasNextPage: reactDesc.PropTypes.bool.description('flag for virtualized list')
88
88
  };
89
+ VirtualizedInfiniteLoader.displayName = 'VirtualizedInfiniteLoader';
89
90
  const VirtualizedInfiniteLoaderWithSchema = reactDesc.describe(VirtualizedInfiniteLoader);
90
91
  VirtualizedInfiniteLoaderWithSchema.propTypes = listProps;
91
92
 
@@ -10,6 +10,6 @@ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
10
10
 
11
11
  const LoaderBox = /*#__PURE__*/styled__default["default"].div.withConfig({
12
12
  componentId: "sc-ejumr4-0"
13
- })(["position:fixed;width:100%;z-index:10;background-color:white;height:50px;bottom:-50px;border-top:1px solid #e0e3e8;align-items:center;transition:400ms cubic-bezier(0,0,0.42,1);&.opened{transition:400ms cubic-bezier(0.36,0,1,1);bottom:0;}"]);
13
+ })(["position:absolute;width:100%;z-index:10;background-color:white;height:50px;bottom:-50px;border-top:1px solid #e0e3e8;align-items:center;transition:400ms cubic-bezier(0,0,0.42,1);&.opened{transition:400ms cubic-bezier(0.36,0,1,1);bottom:0;}"]);
14
14
 
15
15
  exports.LoaderBox = LoaderBox;
@@ -6,6 +6,7 @@ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
6
  var _jsx = require('@babel/runtime/helpers/jsx');
7
7
  require('core-js/modules/esnext.async-iterator.map.js');
8
8
  require('core-js/modules/esnext.iterator.map.js');
9
+ require('core-js/modules/es.array.includes.js');
9
10
  require('core-js/modules/esnext.async-iterator.filter.js');
10
11
  require('core-js/modules/esnext.iterator.constructor.js');
11
12
  require('core-js/modules/esnext.iterator.filter.js');
@@ -6,6 +6,7 @@ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
6
  var _jsx = require('@babel/runtime/helpers/jsx');
7
7
  require('core-js/modules/esnext.async-iterator.map.js');
8
8
  require('core-js/modules/esnext.iterator.map.js');
9
+ require('core-js/modules/es.array.includes.js');
9
10
  require('core-js/modules/esnext.async-iterator.filter.js');
10
11
  require('core-js/modules/esnext.iterator.constructor.js');
11
12
  require('core-js/modules/esnext.iterator.filter.js');
@@ -9,6 +9,7 @@ require('core-js/modules/esnext.iterator.constructor.js');
9
9
  require('core-js/modules/esnext.iterator.filter.js');
10
10
  require('core-js/modules/esnext.async-iterator.map.js');
11
11
  require('core-js/modules/esnext.iterator.map.js');
12
+ require('core-js/modules/es.array.includes.js');
12
13
  require('core-js/modules/esnext.async-iterator.for-each.js');
13
14
  require('core-js/modules/esnext.iterator.for-each.js');
14
15
  var React = require('react');
@@ -1,5 +1,5 @@
1
1
  import _jsx from '@babel/runtime/helpers/esm/jsx';
2
- import React, { useRef, useEffect } from 'react';
2
+ import { useState, useRef, useCallback, useEffect } from 'react';
3
3
  import { PropTypes, describe } from 'react-desc';
4
4
  import { Grid } from '@elliemae/ds-grid';
5
5
  import { Loader } from './Loader.js';
@@ -12,49 +12,43 @@ const InfiniteLoader = _ref => {
12
12
  children,
13
13
  height
14
14
  } = _ref;
15
- const [wh, setHeight] = React.useState(height);
16
-
17
- const callback = entries => {
15
+ const [viewportHeight, setViewportHeight] = useState(height);
16
+ const baselineRef = useRef(null);
17
+ const observerRef = useRef(null);
18
+ const callback = useCallback(entries => {
18
19
  const {
19
20
  isIntersecting
20
21
  } = entries[0];
21
22
 
22
23
  if (isIntersecting && !isFetching) {
23
- fetchData(); // observer.current.unobserve(target.current);
24
-
25
- observer.current.disconnect();
26
- observer.current = undefined;
24
+ fetchData();
25
+ observerRef.current?.disconnect();
27
26
  }
28
- }; // const [target, setTarget] = useState(null);
29
-
30
-
31
- const target = useRef(null);
32
- const observer = useRef(null);
27
+ }, [fetchData, isFetching]);
33
28
  useEffect(() => {
34
- if (observer.current) {
35
- observer.current.disconnect();
36
- }
37
-
38
- observer.current = new IntersectionObserver(callback, {
39
- root: null,
40
- rootMargin: '0px',
41
- threshold: 0.25
42
- });
43
-
44
- if (target.current) {
45
- observer.current.observe(target.current);
29
+ if (!isFetching) {
30
+ observerRef.current?.disconnect();
31
+ observerRef.current = new IntersectionObserver(callback, {
32
+ root: null,
33
+ rootMargin: '0px',
34
+ threshold: 0.1
35
+ });
36
+ if (baselineRef.current) observerRef.current.observe(baselineRef.current);
46
37
  }
47
38
 
48
39
  return () => {
49
- observer.current?.unobserve(target.current);
50
- observer.current?.disconnect();
40
+ observerRef.current?.disconnect();
51
41
  };
52
- }, [target, observer, fetchData]);
53
- const handleResize = React.useCallback(() => {
54
- setHeight(window.innerHeight);
42
+ }, [baselineRef, observerRef, fetchData, callback, isFetching]);
43
+ const handleResize = useCallback(() => {
44
+ setViewportHeight(window.innerHeight);
55
45
  }, []);
56
46
  useEffect(() => {
57
- if (!height) window.addEventListener('resize', handleResize);
47
+ if (!height) {
48
+ window.addEventListener('resize', handleResize);
49
+ handleResize();
50
+ }
51
+
58
52
  return () => {
59
53
  if (!height) window.removeEventListener('resize', handleResize);
60
54
  };
@@ -62,16 +56,16 @@ const InfiniteLoader = _ref => {
62
56
  return /*#__PURE__*/_jsx(Grid, {
63
57
  style: {
64
58
  position: 'relative',
65
- height: wh,
66
- overflow: 'hidden'
59
+ overflow: 'hidden',
60
+ height: viewportHeight
67
61
  }
68
62
  }, void 0, /*#__PURE__*/_jsx(Grid, {
69
63
  style: {
70
64
  overflow: isFetching ? 'hidden' : 'auto',
71
- height: wh
65
+ height: viewportHeight
72
66
  }
73
67
  }, void 0, children, /*#__PURE__*/jsx("div", {
74
- ref: target,
68
+ ref: baselineRef,
75
69
  style: {
76
70
  height: 1
77
71
  }
@@ -81,17 +75,10 @@ const InfiniteLoader = _ref => {
81
75
  };
82
76
 
83
77
  const listProps = {
84
- /** toggle loading state */
85
78
  isFetching: PropTypes.bool.description('toggle loading state'),
86
-
87
- /** callback to fetch new items */
88
79
  fetchData: PropTypes.func.description('callback to fetch new items'),
89
-
90
- /** row items for infinite loader */
91
80
  children: PropTypes.element.description('row items for infinite loader'),
92
-
93
- /** infinite loader list height */
94
- height: PropTypes.number.isRequired.description('infinite loader list height')
81
+ height: PropTypes.number.description('infinite loader list height')
95
82
  };
96
83
  const InfiniteLoaderWithSchema = describe(InfiniteLoader);
97
84
  InfiniteLoaderWithSchema.propTypes = listProps;
@@ -9,7 +9,7 @@ const Loader = _ref => {
9
9
  isOpen
10
10
  } = _ref;
11
11
  return /*#__PURE__*/_jsx(LoaderBox, {
12
- className: isOpen && 'opened'
12
+ className: isOpen ? 'opened' : ''
13
13
  }, void 0, _DSIndeterminateProgr || (_DSIndeterminateProgr = /*#__PURE__*/_jsx(DSIndeterminateProgressIndicator, {
14
14
  processing: true,
15
15
  title: "Loading"
@@ -77,6 +77,7 @@ const listProps = {
77
77
  /** flag for virtualized list */
78
78
  hasNextPage: PropTypes.bool.description('flag for virtualized list')
79
79
  };
80
+ VirtualizedInfiniteLoader.displayName = 'VirtualizedInfiniteLoader';
80
81
  const VirtualizedInfiniteLoaderWithSchema = describe(VirtualizedInfiniteLoader);
81
82
  VirtualizedInfiniteLoaderWithSchema.propTypes = listProps;
82
83
 
@@ -2,6 +2,6 @@ import styled from 'styled-components';
2
2
 
3
3
  const LoaderBox = /*#__PURE__*/styled.div.withConfig({
4
4
  componentId: "sc-ejumr4-0"
5
- })(["position:fixed;width:100%;z-index:10;background-color:white;height:50px;bottom:-50px;border-top:1px solid #e0e3e8;align-items:center;transition:400ms cubic-bezier(0,0,0.42,1);&.opened{transition:400ms cubic-bezier(0.36,0,1,1);bottom:0;}"]);
5
+ })(["position:absolute;width:100%;z-index:10;background-color:white;height:50px;bottom:-50px;border-top:1px solid #e0e3e8;align-items:center;transition:400ms cubic-bezier(0,0,0.42,1);&.opened{transition:400ms cubic-bezier(0.36,0,1,1);bottom:0;}"]);
6
6
 
7
7
  export { LoaderBox };
@@ -2,6 +2,7 @@ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
2
  import _jsx from '@babel/runtime/helpers/esm/jsx';
3
3
  import 'core-js/modules/esnext.async-iterator.map.js';
4
4
  import 'core-js/modules/esnext.iterator.map.js';
5
+ import 'core-js/modules/es.array.includes.js';
5
6
  import 'core-js/modules/esnext.async-iterator.filter.js';
6
7
  import 'core-js/modules/esnext.iterator.constructor.js';
7
8
  import 'core-js/modules/esnext.iterator.filter.js';
@@ -2,6 +2,7 @@ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
2
  import _jsx from '@babel/runtime/helpers/esm/jsx';
3
3
  import 'core-js/modules/esnext.async-iterator.map.js';
4
4
  import 'core-js/modules/esnext.iterator.map.js';
5
+ import 'core-js/modules/es.array.includes.js';
5
6
  import 'core-js/modules/esnext.async-iterator.filter.js';
6
7
  import 'core-js/modules/esnext.iterator.constructor.js';
7
8
  import 'core-js/modules/esnext.iterator.filter.js';
@@ -5,6 +5,7 @@ import 'core-js/modules/esnext.iterator.constructor.js';
5
5
  import 'core-js/modules/esnext.iterator.filter.js';
6
6
  import 'core-js/modules/esnext.async-iterator.map.js';
7
7
  import 'core-js/modules/esnext.iterator.map.js';
8
+ import 'core-js/modules/es.array.includes.js';
8
9
  import 'core-js/modules/esnext.async-iterator.for-each.js';
9
10
  import 'core-js/modules/esnext.iterator.for-each.js';
10
11
  import React, { useState, useEffect } from 'react';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elliemae/ds-mobile",
3
- "version": "2.4.21",
3
+ "version": "2.4.22",
4
4
  "license": "MIT",
5
5
  "description": "ICE MT - Dimsum - System",
6
6
  "module": "./esm/index.js",
@@ -433,19 +433,19 @@
433
433
  "generateSubmodules": true
434
434
  },
435
435
  "dependencies": {
436
- "@elliemae/ds-accordion": "2.4.21",
437
- "@elliemae/ds-backdrop": "2.4.21",
438
- "@elliemae/ds-button": "2.4.21",
439
- "@elliemae/ds-circular-progress-indicator": "2.4.21",
440
- "@elliemae/ds-form": "2.4.21",
441
- "@elliemae/ds-grid": "2.4.21",
442
- "@elliemae/ds-icon": "2.4.21",
443
- "@elliemae/ds-icons": "2.4.21",
444
- "@elliemae/ds-indeterminate-progress-indicator": "2.4.21",
445
- "@elliemae/ds-shared": "2.4.21",
446
- "@elliemae/ds-system": "2.4.21",
447
- "@elliemae/ds-tabs": "2.4.21",
448
- "@elliemae/ds-truncated-expandable-text": "2.4.21",
436
+ "@elliemae/ds-accordion": "2.4.22",
437
+ "@elliemae/ds-backdrop": "2.4.22",
438
+ "@elliemae/ds-button": "2.4.22",
439
+ "@elliemae/ds-circular-progress-indicator": "2.4.22",
440
+ "@elliemae/ds-form": "2.4.22",
441
+ "@elliemae/ds-grid": "2.4.22",
442
+ "@elliemae/ds-icon": "2.4.22",
443
+ "@elliemae/ds-icons": "2.4.22",
444
+ "@elliemae/ds-indeterminate-progress-indicator": "2.4.22",
445
+ "@elliemae/ds-shared": "2.4.22",
446
+ "@elliemae/ds-system": "2.4.22",
447
+ "@elliemae/ds-tabs": "2.4.22",
448
+ "@elliemae/ds-truncated-expandable-text": "2.4.22",
449
449
  "@xstyled/styled-components": "~3.1.1",
450
450
  "polished": "~3.6.7",
451
451
  "prop-types": "~15.7.2",
@@ -1,37 +1,12 @@
1
1
  /// <reference path="../../../../../shared/typings/react-desc.d.ts" />
2
- declare const InfiniteLoader: {
3
- ({ isFetching, fetchData, children, height }: {
4
- isFetching: any;
5
- fetchData: any;
6
- children: any;
7
- height: any;
8
- }): JSX.Element;
9
- propTypes: {
10
- /** toggle loading state */
11
- isFetching: {
12
- defaultValue(arg: import("react-desc").ReactDescPossibleDefaultValues): {
13
- deprecated: import("react-desc").PropTypesDescValidator;
14
- };
15
- isRequired: import("react-desc").PropTypesDescValue;
16
- };
17
- /** callback to fetch new items */
18
- fetchData: {
19
- defaultValue(arg: import("react-desc").ReactDescPossibleDefaultValues): {
20
- deprecated: import("react-desc").PropTypesDescValidator;
21
- };
22
- isRequired: import("react-desc").PropTypesDescValue;
23
- };
24
- /** row items for infinite loader */
25
- children: {
26
- defaultValue(arg: import("react-desc").ReactDescPossibleDefaultValues): {
27
- deprecated: import("react-desc").PropTypesDescValidator;
28
- };
29
- isRequired: import("react-desc").PropTypesDescValue;
30
- };
31
- /** infinite loader list height */
32
- height: any;
33
- };
34
- };
2
+ import React from 'react';
3
+ interface Props {
4
+ isFetching: boolean;
5
+ fetchData: () => void;
6
+ children: React.ReactNode;
7
+ height?: number | string;
8
+ }
9
+ declare const InfiniteLoader: ({ isFetching, fetchData, children, height }: Props) => JSX.Element;
35
10
  declare const InfiniteLoaderWithSchema: {
36
11
  (props?: unknown): JSX.Element;
37
12
  propTypes: unknown;
@@ -1,9 +1,11 @@
1
1
  import PropTypes from 'prop-types';
2
+ interface Props {
3
+ isOpen: boolean;
4
+ }
2
5
  export declare const Loader: {
3
- ({ isOpen }: {
4
- isOpen: any;
5
- }): JSX.Element;
6
+ ({ isOpen }: Props): JSX.Element;
6
7
  propTypes: {
7
8
  isOpen: PropTypes.Requireable<boolean>;
8
9
  };
9
10
  };
11
+ export {};
@@ -60,6 +60,7 @@ declare const VirtualizedInfiniteLoader: {
60
60
  isRequired: import("react-desc").PropTypesDescValue;
61
61
  };
62
62
  };
63
+ displayName: string;
63
64
  };
64
65
  declare const VirtualizedInfiniteLoaderWithSchema: {
65
66
  (props?: unknown): JSX.Element;