@digigov/ui 0.21.2 → 0.21.3

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 CHANGED
@@ -1,6 +1,13 @@
1
1
  # Change Log - @digigov/ui
2
2
 
3
- This log was last generated on Thu, 23 Jun 2022 11:49:45 GMT and should not be manually modified.
3
+ This log was last generated on Mon, 27 Jun 2022 10:08:07 GMT and should not be manually modified.
4
+
5
+ ## 0.21.3
6
+ Mon, 27 Jun 2022 10:08:07 GMT
7
+
8
+ ### Patches
9
+
10
+ - Add support for floating Table scroll in Table and Dropdown components
4
11
 
5
12
  ## 0.21.2
6
13
  Thu, 23 Jun 2022 11:49:45 GMT
@@ -7,9 +7,15 @@ export interface DropdownProps extends CoreDropdownProps {
7
7
  * Use closeBehaviour to set the way that the Dropdown will close.
8
8
  */
9
9
  closeBehaviour?: 'clickButton' | 'clickOutside';
10
+ /**
11
+ * Use float dropdown to set the dropdown to float over
12
+ * scroll bars and stay on a static position.
13
+ * This is mainly used to show actions in a long table.
14
+ */
15
+ float?: boolean;
10
16
  }
11
17
  /**
12
18
  * Dropdown component is used for showing more options with a button.
13
19
  */
14
- export declare const Dropdown: ({ closeBehaviour, ...props }: DropdownProps) => React.ReactElement;
20
+ export declare const Dropdown: ({ closeBehaviour, float, ...props }: DropdownProps) => React.ReactElement;
15
21
  export default Dropdown;
@@ -47,7 +47,7 @@ Object.keys(_DropdownContent).forEach(function (key) {
47
47
  }
48
48
  });
49
49
  });
50
- var _excluded = ["closeBehaviour"];
50
+ var _excluded = ["closeBehaviour", "float"];
51
51
 
52
52
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
53
53
 
@@ -59,7 +59,10 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
59
59
  var Dropdown = function Dropdown(_ref) {
60
60
  var _ref$closeBehaviour = _ref.closeBehaviour,
61
61
  closeBehaviour = _ref$closeBehaviour === void 0 ? 'clickOutside' : _ref$closeBehaviour,
62
+ _ref$float = _ref["float"],
63
+ _float = _ref$float === void 0 ? false : _ref$float,
62
64
  props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
65
+
63
66
  var innerRef = (0, _react.useRef)();
64
67
  (0, _react.useEffect)(function () {
65
68
  var handleClickOutside = function handleClickOutside(event) {
@@ -72,10 +75,35 @@ var Dropdown = function Dropdown(_ref) {
72
75
  document.addEventListener('click', handleClickOutside, true);
73
76
  }
74
77
 
78
+ var toggleFloat = function toggleFloat() {
79
+ if (innerRef.current.open) {
80
+ var rect = innerRef.current.getBoundingClientRect();
81
+ innerRef.current.style.position = 'static';
82
+ var top = rect.top + window.pageYOffset;
83
+ var left = rect.left + window.pageXOffset;
84
+ innerRef.current.style.top = "".concat(top, "px");
85
+ innerRef.current.style.left = "".concat(left, "px");
86
+ innerRef.current.style.position = "absolute";
87
+ innerRef.current.style.display = "block";
88
+ } else {
89
+ innerRef.current.style.top = "0";
90
+ innerRef.current.style.left = "0";
91
+ innerRef.current.style.position = "relative";
92
+ }
93
+ };
94
+
95
+ if (_float) {
96
+ innerRef.current.addEventListener('toggle', toggleFloat);
97
+ }
98
+
75
99
  return function () {
76
100
  if (closeBehaviour === 'clickOutside') {
77
101
  document.removeEventListener('click', handleClickOutside, true);
78
102
  }
103
+
104
+ if (_float) {
105
+ innerRef.current.removeEventListener('toggle', toggleFloat);
106
+ }
79
107
  };
80
108
  }, []); // eslint-disable-next-line @typescript-eslint/ban-ts-comment
81
109
  // @ts-ignore
@@ -103,9 +103,9 @@ var _ref = /*#__PURE__*/_react["default"].createElement("div", {
103
103
  visible: true,
104
104
  size: "l"
105
105
  }), /*#__PURE__*/_react["default"].createElement(_Pagination["default"], null, /*#__PURE__*/_react["default"].createElement(_Pagination.PaginationLabel, {
106
- start: 10,
107
- end: 20,
108
- total: 10000
106
+ start: 1,
107
+ end: 10,
108
+ total: 15
109
109
  }), /*#__PURE__*/_react["default"].createElement(_Pagination.PaginationList, null, /*#__PURE__*/_react["default"].createElement(_Pagination.PaginationListItem, null, /*#__PURE__*/_react["default"].createElement(_Link["default"], null, /*#__PURE__*/_react["default"].createElement(_ArrowIcon["default"], {
110
110
  direction: "left"
111
111
  }), "\u03A0\u03C1\u03BF\u03B7\u03B3\u03BF\u03CD\u03BC\u03B5\u03BD\u03BF")), /*#__PURE__*/_react["default"].createElement(_Pagination.PaginationListItem, null, /*#__PURE__*/_react["default"].createElement(_Link["default"], {
@@ -114,7 +114,7 @@ var _ref = /*#__PURE__*/_react["default"].createElement("div", {
114
114
  variant: "dots"
115
115
  }), /*#__PURE__*/_react["default"].createElement(_Pagination.PaginationListItem, null, /*#__PURE__*/_react["default"].createElement(_Link["default"], {
116
116
  href: "/page7"
117
- }, "7")), /*#__PURE__*/_react["default"].createElement(_Pagination.PaginationListItem, {
117
+ }, "2")), /*#__PURE__*/_react["default"].createElement(_Pagination.PaginationListItem, {
118
118
  currentPage: true
119
119
  }, "8"), /*#__PURE__*/_react["default"].createElement(_Pagination.PaginationListItem, null, /*#__PURE__*/_react["default"].createElement(_Link["default"], {
120
120
  href: "/page9"
@@ -127,6 +127,23 @@ var _ref = /*#__PURE__*/_react["default"].createElement("div", {
127
127
  }))))), /*#__PURE__*/_react["default"].createElement(_Divider["default"], {
128
128
  visible: true,
129
129
  size: "l"
130
+ }), /*#__PURE__*/_react["default"].createElement(_Pagination["default"], null, /*#__PURE__*/_react["default"].createElement(_Pagination.PaginationLabel, {
131
+ start: 1,
132
+ end: 10,
133
+ total: 15
134
+ }), /*#__PURE__*/_react["default"].createElement(_Pagination.PaginationList, null, /*#__PURE__*/_react["default"].createElement(_Pagination.PaginationListItem, {
135
+ inactive: true
136
+ }, /*#__PURE__*/_react["default"].createElement(_Link["default"], null, /*#__PURE__*/_react["default"].createElement(_ArrowIcon["default"], {
137
+ direction: "left"
138
+ }))), /*#__PURE__*/_react["default"].createElement(_Pagination.PaginationListItem, {
139
+ currentPage: true
140
+ }, "1"), /*#__PURE__*/_react["default"].createElement(_Pagination.PaginationListItem, null, /*#__PURE__*/_react["default"].createElement(_Link["default"], {
141
+ href: "/page7"
142
+ }, "2")), /*#__PURE__*/_react["default"].createElement(_Pagination.PaginationListItem, null, /*#__PURE__*/_react["default"].createElement(_Link["default"], null, /*#__PURE__*/_react["default"].createElement(_ArrowIcon["default"], {
143
+ direction: "right"
144
+ }))))), /*#__PURE__*/_react["default"].createElement(_Divider["default"], {
145
+ visible: true,
146
+ size: "l"
130
147
  }));
131
148
 
132
149
  var Default = function Default() {
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ export declare function TableFloatingScroll(props: any): JSX.Element;
3
+ export default TableFloatingScroll;
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.TableFloatingScroll = TableFloatingScroll;
11
+ exports["default"] = void 0;
12
+
13
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
14
+
15
+ var _react = _interopRequireWildcard(require("react"));
16
+
17
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
18
+
19
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
20
+
21
+ function TableFloatingScroll(props) {
22
+ var ref = (0, _react.useRef)(null);
23
+ var contentRef = (0, _react.useRef)(null);
24
+ var scrollBlockRef = (0, _react.useRef)(null);
25
+
26
+ var _useState = (0, _react.useState)(0),
27
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
28
+ width = _useState2[0],
29
+ setWidth = _useState2[1];
30
+
31
+ var _useState3 = (0, _react.useState)(0),
32
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
33
+ containerWidth = _useState4[0],
34
+ setContainerWidth = _useState4[1];
35
+
36
+ var _useState5 = (0, _react.useState)('relative'),
37
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
38
+ position = _useState6[0],
39
+ setPosition = _useState6[1];
40
+
41
+ (0, _react.useEffect)(function () {
42
+ var _ref$current;
43
+
44
+ contentRef.current = (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.firstChild; // @ts-ignore
45
+
46
+ setContainerWidth(ref.current.offsetWidth);
47
+ setWidth(contentRef.current.scrollWidth);
48
+ var elementOffset = contentRef.current.offsetTop + contentRef.current.offsetHeight;
49
+
50
+ function onBodyScroll() {
51
+ var currentScroll = window.pageYOffset + window.innerHeight; // @ts-ignore
52
+
53
+ if (currentScroll < elementOffset && currentScroll > contentRef.current.offsetTop) {
54
+ setPosition('fixed'); // @ts-ignore
55
+ } else if (currentScroll >= elementOffset || currentScroll <= contentRef.current.offsetTop) {
56
+ setPosition('relative');
57
+ }
58
+ }
59
+
60
+ function onBlockScroll() {
61
+ // @ts-ignore
62
+ ref.current.scrollLeft = scrollBlockRef.current.scrollLeft;
63
+ } // @ts-ignore
64
+
65
+
66
+ scrollBlockRef.current.addEventListener('scroll', onBlockScroll);
67
+ document.addEventListener('scroll', onBodyScroll);
68
+ window.addEventListener('resize', function () {
69
+ // @ts-ignore
70
+ setContainerWidth(ref.current.offsetWidth); // @ts-ignore
71
+
72
+ setWidth(contentRef.current.scrollWidth);
73
+ });
74
+ return function () {
75
+ // @ts-ignore
76
+ scrollBlockRef.current.removeEventListener('scroll', onBlockScroll);
77
+ document.removeEventListener('scroll', onBodyScroll);
78
+ };
79
+ }, []);
80
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
81
+ ref: ref,
82
+ style: {
83
+ maxWidth: '100%',
84
+ overflowX: 'scroll'
85
+ }
86
+ }, props.children), /*#__PURE__*/_react["default"].createElement("div", {
87
+ style: {
88
+ overflow: 'auto',
89
+ height: '35px',
90
+ marginTop: '-35px',
91
+ position: position,
92
+ maxWidth: "".concat(containerWidth, "px"),
93
+ bottom: 0
94
+ },
95
+ ref: scrollBlockRef
96
+ }, /*#__PURE__*/_react["default"].createElement("div", {
97
+ style: {
98
+ width: "".concat(width, "px"),
99
+ overflow: 'hidden'
100
+ }
101
+ })));
102
+ }
103
+
104
+ var _default = TableFloatingScroll;
105
+ exports["default"] = _default;
@@ -7,3 +7,4 @@ export * from '@digigov/react-core/TableHead';
7
7
  export * from '@digigov/react-core/TableHeadCell';
8
8
  export * from '@digigov/react-core/TableRow';
9
9
  export * from '@digigov/react-core/TableNoDataRow';
10
+ export * from '@digigov/ui/core/Table/TableFloatingScroll';
@@ -119,4 +119,17 @@ Object.keys(_TableNoDataRow).forEach(function (key) {
119
119
  return _TableNoDataRow[key];
120
120
  }
121
121
  });
122
+ });
123
+
124
+ var _TableFloatingScroll = require("@digigov/ui/core/Table/TableFloatingScroll");
125
+
126
+ Object.keys(_TableFloatingScroll).forEach(function (key) {
127
+ if (key === "default" || key === "__esModule") return;
128
+ if (key in exports && exports[key] === _TableFloatingScroll[key]) return;
129
+ Object.defineProperty(exports, key, {
130
+ enumerable: true,
131
+ get: function get() {
132
+ return _TableFloatingScroll[key];
133
+ }
134
+ });
122
135
  });
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["closeBehaviour"];
3
+ var _excluded = ["closeBehaviour", "float"];
4
4
  import React, { useEffect, useRef } from 'react';
5
5
  import CoreDropdown from '@digigov/react-extensions/admin/Dropdown';
6
6
  export * from '@digigov/react-extensions/admin/DropdownButton';
@@ -12,6 +12,8 @@ export * from '@digigov/react-extensions/admin/DropdownContent';
12
12
  export var Dropdown = function Dropdown(_ref) {
13
13
  var _ref$closeBehaviour = _ref.closeBehaviour,
14
14
  closeBehaviour = _ref$closeBehaviour === void 0 ? 'clickOutside' : _ref$closeBehaviour,
15
+ _ref$float = _ref["float"],
16
+ _float = _ref$float === void 0 ? false : _ref$float,
15
17
  props = _objectWithoutProperties(_ref, _excluded);
16
18
 
17
19
  var innerRef = useRef();
@@ -26,10 +28,35 @@ export var Dropdown = function Dropdown(_ref) {
26
28
  document.addEventListener('click', handleClickOutside, true);
27
29
  }
28
30
 
31
+ var toggleFloat = function toggleFloat() {
32
+ if (innerRef.current.open) {
33
+ var rect = innerRef.current.getBoundingClientRect();
34
+ innerRef.current.style.position = 'static';
35
+ var top = rect.top + window.pageYOffset;
36
+ var left = rect.left + window.pageXOffset;
37
+ innerRef.current.style.top = "".concat(top, "px");
38
+ innerRef.current.style.left = "".concat(left, "px");
39
+ innerRef.current.style.position = "absolute";
40
+ innerRef.current.style.display = "block";
41
+ } else {
42
+ innerRef.current.style.top = "0";
43
+ innerRef.current.style.left = "0";
44
+ innerRef.current.style.position = "relative";
45
+ }
46
+ };
47
+
48
+ if (_float) {
49
+ innerRef.current.addEventListener('toggle', toggleFloat);
50
+ }
51
+
29
52
  return function () {
30
53
  if (closeBehaviour === 'clickOutside') {
31
54
  document.removeEventListener('click', handleClickOutside, true);
32
55
  }
56
+
57
+ if (_float) {
58
+ innerRef.current.removeEventListener('toggle', toggleFloat);
59
+ }
33
60
  };
34
61
  }, []); // eslint-disable-next-line @typescript-eslint/ban-ts-comment
35
62
  // @ts-ignore
@@ -84,9 +84,9 @@ var _ref = /*#__PURE__*/React.createElement("div", {
84
84
  visible: true,
85
85
  size: "l"
86
86
  }), /*#__PURE__*/React.createElement(Pagination, null, /*#__PURE__*/React.createElement(PaginationLabel, {
87
- start: 10,
88
- end: 20,
89
- total: 10000
87
+ start: 1,
88
+ end: 10,
89
+ total: 15
90
90
  }), /*#__PURE__*/React.createElement(PaginationList, null, /*#__PURE__*/React.createElement(PaginationListItem, null, /*#__PURE__*/React.createElement(Link, null, /*#__PURE__*/React.createElement(ArrowIcon, {
91
91
  direction: "left"
92
92
  }), "\u03A0\u03C1\u03BF\u03B7\u03B3\u03BF\u03CD\u03BC\u03B5\u03BD\u03BF")), /*#__PURE__*/React.createElement(PaginationListItem, null, /*#__PURE__*/React.createElement(Link, {
@@ -95,7 +95,7 @@ var _ref = /*#__PURE__*/React.createElement("div", {
95
95
  variant: "dots"
96
96
  }), /*#__PURE__*/React.createElement(PaginationListItem, null, /*#__PURE__*/React.createElement(Link, {
97
97
  href: "/page7"
98
- }, "7")), /*#__PURE__*/React.createElement(PaginationListItem, {
98
+ }, "2")), /*#__PURE__*/React.createElement(PaginationListItem, {
99
99
  currentPage: true
100
100
  }, "8"), /*#__PURE__*/React.createElement(PaginationListItem, null, /*#__PURE__*/React.createElement(Link, {
101
101
  href: "/page9"
@@ -108,6 +108,23 @@ var _ref = /*#__PURE__*/React.createElement("div", {
108
108
  }))))), /*#__PURE__*/React.createElement(Divider, {
109
109
  visible: true,
110
110
  size: "l"
111
+ }), /*#__PURE__*/React.createElement(Pagination, null, /*#__PURE__*/React.createElement(PaginationLabel, {
112
+ start: 1,
113
+ end: 10,
114
+ total: 15
115
+ }), /*#__PURE__*/React.createElement(PaginationList, null, /*#__PURE__*/React.createElement(PaginationListItem, {
116
+ inactive: true
117
+ }, /*#__PURE__*/React.createElement(Link, null, /*#__PURE__*/React.createElement(ArrowIcon, {
118
+ direction: "left"
119
+ }))), /*#__PURE__*/React.createElement(PaginationListItem, {
120
+ currentPage: true
121
+ }, "1"), /*#__PURE__*/React.createElement(PaginationListItem, null, /*#__PURE__*/React.createElement(Link, {
122
+ href: "/page7"
123
+ }, "2")), /*#__PURE__*/React.createElement(PaginationListItem, null, /*#__PURE__*/React.createElement(Link, null, /*#__PURE__*/React.createElement(ArrowIcon, {
124
+ direction: "right"
125
+ }))))), /*#__PURE__*/React.createElement(Divider, {
126
+ visible: true,
127
+ size: "l"
111
128
  }));
112
129
 
113
130
  export var Default = function Default() {
@@ -0,0 +1,85 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import React, { useEffect, useRef, useState } from 'react';
3
+ export function TableFloatingScroll(props) {
4
+ var ref = useRef(null);
5
+ var contentRef = useRef(null);
6
+ var scrollBlockRef = useRef(null);
7
+
8
+ var _useState = useState(0),
9
+ _useState2 = _slicedToArray(_useState, 2),
10
+ width = _useState2[0],
11
+ setWidth = _useState2[1];
12
+
13
+ var _useState3 = useState(0),
14
+ _useState4 = _slicedToArray(_useState3, 2),
15
+ containerWidth = _useState4[0],
16
+ setContainerWidth = _useState4[1];
17
+
18
+ var _useState5 = useState('relative'),
19
+ _useState6 = _slicedToArray(_useState5, 2),
20
+ position = _useState6[0],
21
+ setPosition = _useState6[1];
22
+
23
+ useEffect(function () {
24
+ var _ref$current;
25
+
26
+ contentRef.current = (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.firstChild; // @ts-ignore
27
+
28
+ setContainerWidth(ref.current.offsetWidth);
29
+ setWidth(contentRef.current.scrollWidth);
30
+ var elementOffset = contentRef.current.offsetTop + contentRef.current.offsetHeight;
31
+
32
+ function onBodyScroll() {
33
+ var currentScroll = window.pageYOffset + window.innerHeight; // @ts-ignore
34
+
35
+ if (currentScroll < elementOffset && currentScroll > contentRef.current.offsetTop) {
36
+ setPosition('fixed'); // @ts-ignore
37
+ } else if (currentScroll >= elementOffset || currentScroll <= contentRef.current.offsetTop) {
38
+ setPosition('relative');
39
+ }
40
+ }
41
+
42
+ function onBlockScroll() {
43
+ // @ts-ignore
44
+ ref.current.scrollLeft = scrollBlockRef.current.scrollLeft;
45
+ } // @ts-ignore
46
+
47
+
48
+ scrollBlockRef.current.addEventListener('scroll', onBlockScroll);
49
+ document.addEventListener('scroll', onBodyScroll);
50
+ window.addEventListener('resize', function () {
51
+ // @ts-ignore
52
+ setContainerWidth(ref.current.offsetWidth); // @ts-ignore
53
+
54
+ setWidth(contentRef.current.scrollWidth);
55
+ });
56
+ return function () {
57
+ // @ts-ignore
58
+ scrollBlockRef.current.removeEventListener('scroll', onBlockScroll);
59
+ document.removeEventListener('scroll', onBodyScroll);
60
+ };
61
+ }, []);
62
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
63
+ ref: ref,
64
+ style: {
65
+ maxWidth: '100%',
66
+ overflowX: 'scroll'
67
+ }
68
+ }, props.children), /*#__PURE__*/React.createElement("div", {
69
+ style: {
70
+ overflow: 'auto',
71
+ height: '35px',
72
+ marginTop: '-35px',
73
+ position: position,
74
+ maxWidth: "".concat(containerWidth, "px"),
75
+ bottom: 0
76
+ },
77
+ ref: scrollBlockRef
78
+ }, /*#__PURE__*/React.createElement("div", {
79
+ style: {
80
+ width: "".concat(width, "px"),
81
+ overflow: 'hidden'
82
+ }
83
+ })));
84
+ }
85
+ export default TableFloatingScroll;
@@ -6,4 +6,5 @@ export * from '@digigov/react-core/TableDataCell';
6
6
  export * from '@digigov/react-core/TableHead';
7
7
  export * from '@digigov/react-core/TableHeadCell';
8
8
  export * from '@digigov/react-core/TableRow';
9
- export * from '@digigov/react-core/TableNoDataRow';
9
+ export * from '@digigov/react-core/TableNoDataRow';
10
+ export * from '@digigov/ui/core/Table/TableFloatingScroll';
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["closeBehaviour"];
3
+ var _excluded = ["closeBehaviour", "float"];
4
4
  import React, { useEffect, useRef } from 'react';
5
5
  import CoreDropdown from '@digigov/react-extensions/admin/Dropdown';
6
6
  export * from '@digigov/react-extensions/admin/DropdownButton';
@@ -12,6 +12,8 @@ export * from '@digigov/react-extensions/admin/DropdownContent';
12
12
  export var Dropdown = function Dropdown(_ref) {
13
13
  var _ref$closeBehaviour = _ref.closeBehaviour,
14
14
  closeBehaviour = _ref$closeBehaviour === void 0 ? 'clickOutside' : _ref$closeBehaviour,
15
+ _ref$float = _ref["float"],
16
+ _float = _ref$float === void 0 ? false : _ref$float,
15
17
  props = _objectWithoutProperties(_ref, _excluded);
16
18
 
17
19
  var innerRef = useRef();
@@ -26,10 +28,35 @@ export var Dropdown = function Dropdown(_ref) {
26
28
  document.addEventListener('click', handleClickOutside, true);
27
29
  }
28
30
 
31
+ var toggleFloat = function toggleFloat() {
32
+ if (innerRef.current.open) {
33
+ var rect = innerRef.current.getBoundingClientRect();
34
+ innerRef.current.style.position = 'static';
35
+ var top = rect.top + window.pageYOffset;
36
+ var left = rect.left + window.pageXOffset;
37
+ innerRef.current.style.top = "".concat(top, "px");
38
+ innerRef.current.style.left = "".concat(left, "px");
39
+ innerRef.current.style.position = "absolute";
40
+ innerRef.current.style.display = "block";
41
+ } else {
42
+ innerRef.current.style.top = "0";
43
+ innerRef.current.style.left = "0";
44
+ innerRef.current.style.position = "relative";
45
+ }
46
+ };
47
+
48
+ if (_float) {
49
+ innerRef.current.addEventListener('toggle', toggleFloat);
50
+ }
51
+
29
52
  return function () {
30
53
  if (closeBehaviour === 'clickOutside') {
31
54
  document.removeEventListener('click', handleClickOutside, true);
32
55
  }
56
+
57
+ if (_float) {
58
+ innerRef.current.removeEventListener('toggle', toggleFloat);
59
+ }
33
60
  };
34
61
  }, []); // eslint-disable-next-line @typescript-eslint/ban-ts-comment
35
62
  // @ts-ignore
@@ -84,9 +84,9 @@ var _ref = /*#__PURE__*/React.createElement("div", {
84
84
  visible: true,
85
85
  size: "l"
86
86
  }), /*#__PURE__*/React.createElement(Pagination, null, /*#__PURE__*/React.createElement(PaginationLabel, {
87
- start: 10,
88
- end: 20,
89
- total: 10000
87
+ start: 1,
88
+ end: 10,
89
+ total: 15
90
90
  }), /*#__PURE__*/React.createElement(PaginationList, null, /*#__PURE__*/React.createElement(PaginationListItem, null, /*#__PURE__*/React.createElement(Link, null, /*#__PURE__*/React.createElement(ArrowIcon, {
91
91
  direction: "left"
92
92
  }), "\u03A0\u03C1\u03BF\u03B7\u03B3\u03BF\u03CD\u03BC\u03B5\u03BD\u03BF")), /*#__PURE__*/React.createElement(PaginationListItem, null, /*#__PURE__*/React.createElement(Link, {
@@ -95,7 +95,7 @@ var _ref = /*#__PURE__*/React.createElement("div", {
95
95
  variant: "dots"
96
96
  }), /*#__PURE__*/React.createElement(PaginationListItem, null, /*#__PURE__*/React.createElement(Link, {
97
97
  href: "/page7"
98
- }, "7")), /*#__PURE__*/React.createElement(PaginationListItem, {
98
+ }, "2")), /*#__PURE__*/React.createElement(PaginationListItem, {
99
99
  currentPage: true
100
100
  }, "8"), /*#__PURE__*/React.createElement(PaginationListItem, null, /*#__PURE__*/React.createElement(Link, {
101
101
  href: "/page9"
@@ -108,6 +108,23 @@ var _ref = /*#__PURE__*/React.createElement("div", {
108
108
  }))))), /*#__PURE__*/React.createElement(Divider, {
109
109
  visible: true,
110
110
  size: "l"
111
+ }), /*#__PURE__*/React.createElement(Pagination, null, /*#__PURE__*/React.createElement(PaginationLabel, {
112
+ start: 1,
113
+ end: 10,
114
+ total: 15
115
+ }), /*#__PURE__*/React.createElement(PaginationList, null, /*#__PURE__*/React.createElement(PaginationListItem, {
116
+ inactive: true
117
+ }, /*#__PURE__*/React.createElement(Link, null, /*#__PURE__*/React.createElement(ArrowIcon, {
118
+ direction: "left"
119
+ }))), /*#__PURE__*/React.createElement(PaginationListItem, {
120
+ currentPage: true
121
+ }, "1"), /*#__PURE__*/React.createElement(PaginationListItem, null, /*#__PURE__*/React.createElement(Link, {
122
+ href: "/page7"
123
+ }, "2")), /*#__PURE__*/React.createElement(PaginationListItem, null, /*#__PURE__*/React.createElement(Link, null, /*#__PURE__*/React.createElement(ArrowIcon, {
124
+ direction: "right"
125
+ }))))), /*#__PURE__*/React.createElement(Divider, {
126
+ visible: true,
127
+ size: "l"
111
128
  }));
112
129
 
113
130
  export var Default = function Default() {
@@ -0,0 +1,85 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import React, { useEffect, useRef, useState } from 'react';
3
+ export function TableFloatingScroll(props) {
4
+ var ref = useRef(null);
5
+ var contentRef = useRef(null);
6
+ var scrollBlockRef = useRef(null);
7
+
8
+ var _useState = useState(0),
9
+ _useState2 = _slicedToArray(_useState, 2),
10
+ width = _useState2[0],
11
+ setWidth = _useState2[1];
12
+
13
+ var _useState3 = useState(0),
14
+ _useState4 = _slicedToArray(_useState3, 2),
15
+ containerWidth = _useState4[0],
16
+ setContainerWidth = _useState4[1];
17
+
18
+ var _useState5 = useState('relative'),
19
+ _useState6 = _slicedToArray(_useState5, 2),
20
+ position = _useState6[0],
21
+ setPosition = _useState6[1];
22
+
23
+ useEffect(function () {
24
+ var _ref$current;
25
+
26
+ contentRef.current = (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.firstChild; // @ts-ignore
27
+
28
+ setContainerWidth(ref.current.offsetWidth);
29
+ setWidth(contentRef.current.scrollWidth);
30
+ var elementOffset = contentRef.current.offsetTop + contentRef.current.offsetHeight;
31
+
32
+ function onBodyScroll() {
33
+ var currentScroll = window.pageYOffset + window.innerHeight; // @ts-ignore
34
+
35
+ if (currentScroll < elementOffset && currentScroll > contentRef.current.offsetTop) {
36
+ setPosition('fixed'); // @ts-ignore
37
+ } else if (currentScroll >= elementOffset || currentScroll <= contentRef.current.offsetTop) {
38
+ setPosition('relative');
39
+ }
40
+ }
41
+
42
+ function onBlockScroll() {
43
+ // @ts-ignore
44
+ ref.current.scrollLeft = scrollBlockRef.current.scrollLeft;
45
+ } // @ts-ignore
46
+
47
+
48
+ scrollBlockRef.current.addEventListener('scroll', onBlockScroll);
49
+ document.addEventListener('scroll', onBodyScroll);
50
+ window.addEventListener('resize', function () {
51
+ // @ts-ignore
52
+ setContainerWidth(ref.current.offsetWidth); // @ts-ignore
53
+
54
+ setWidth(contentRef.current.scrollWidth);
55
+ });
56
+ return function () {
57
+ // @ts-ignore
58
+ scrollBlockRef.current.removeEventListener('scroll', onBlockScroll);
59
+ document.removeEventListener('scroll', onBodyScroll);
60
+ };
61
+ }, []);
62
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
63
+ ref: ref,
64
+ style: {
65
+ maxWidth: '100%',
66
+ overflowX: 'scroll'
67
+ }
68
+ }, props.children), /*#__PURE__*/React.createElement("div", {
69
+ style: {
70
+ overflow: 'auto',
71
+ height: '35px',
72
+ marginTop: '-35px',
73
+ position: position,
74
+ maxWidth: "".concat(containerWidth, "px"),
75
+ bottom: 0
76
+ },
77
+ ref: scrollBlockRef
78
+ }, /*#__PURE__*/React.createElement("div", {
79
+ style: {
80
+ width: "".concat(width, "px"),
81
+ overflow: 'hidden'
82
+ }
83
+ })));
84
+ }
85
+ export default TableFloatingScroll;
@@ -6,4 +6,5 @@ export * from '@digigov/react-core/TableDataCell';
6
6
  export * from '@digigov/react-core/TableHead';
7
7
  export * from '@digigov/react-core/TableHeadCell';
8
8
  export * from '@digigov/react-core/TableRow';
9
- export * from '@digigov/react-core/TableNoDataRow';
9
+ export * from '@digigov/react-core/TableNoDataRow';
10
+ export * from '@digigov/ui/core/Table/TableFloatingScroll';
package/esm/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license Digigov v0.21.2
1
+ /** @license Digigov v0.21.3
2
2
  *
3
3
  * This source code is licensed under the BSD-2-Clause license found in the
4
4
  * LICENSE file in the root directory of this source tree.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digigov/ui",
3
- "version": "0.21.2",
3
+ "version": "0.21.3",
4
4
  "description": "@digigov reusable components toolkit",
5
5
  "module": "./esm/index.js",
6
6
  "publishConfig": {
@@ -19,7 +19,7 @@
19
19
  "react": "16.14.0",
20
20
  "react-dom": "16.14.0",
21
21
  "@digigov/react-core": "0.15.1",
22
- "@digigov/react-extensions": "0.15.1"
22
+ "@digigov/react-extensions": "0.15.2"
23
23
  },
24
24
  "gitHead": "c903a46306f77f55ad7fc4d2e274006f39a6c871",
25
25
  "private": false,