@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 +8 -1
- package/admin/Dropdown/index.d.ts +7 -1
- package/admin/Dropdown/index.js +29 -1
- package/admin/Pagination/__stories__/Default.js +21 -4
- package/core/Table/TableFloatingScroll.d.ts +3 -0
- package/core/Table/TableFloatingScroll.js +105 -0
- package/core/Table/index.d.ts +1 -0
- package/core/Table/index.js +13 -0
- package/es/admin/Dropdown/index.js +28 -1
- package/es/admin/Pagination/__stories__/Default.js +21 -4
- package/es/core/Table/TableFloatingScroll.js +85 -0
- package/es/core/Table/index.js +2 -1
- package/esm/admin/Dropdown/index.js +28 -1
- package/esm/admin/Pagination/__stories__/Default.js +21 -4
- package/esm/core/Table/TableFloatingScroll.js +85 -0
- package/esm/core/Table/index.js +2 -1
- package/esm/index.js +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
# Change Log - @digigov/ui
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
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;
|
package/admin/Dropdown/index.js
CHANGED
|
@@ -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:
|
|
107
|
-
end:
|
|
108
|
-
total:
|
|
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
|
-
}, "
|
|
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,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;
|
package/core/Table/index.d.ts
CHANGED
package/core/Table/index.js
CHANGED
|
@@ -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:
|
|
88
|
-
end:
|
|
89
|
-
total:
|
|
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
|
-
}, "
|
|
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;
|
package/es/core/Table/index.js
CHANGED
|
@@ -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:
|
|
88
|
-
end:
|
|
89
|
-
total:
|
|
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
|
-
}, "
|
|
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;
|
package/esm/core/Table/index.js
CHANGED
|
@@ -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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@digigov/ui",
|
|
3
|
-
"version": "0.21.
|
|
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.
|
|
22
|
+
"@digigov/react-extensions": "0.15.2"
|
|
23
23
|
},
|
|
24
24
|
"gitHead": "c903a46306f77f55ad7fc4d2e274006f39a6c871",
|
|
25
25
|
"private": false,
|