dtable-ui-component 5.2.3-alpha.3 → 5.2.4

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.
@@ -36,7 +36,7 @@ class CheckboxFormatter extends _react.default.PureComponent {
36
36
  style: {
37
37
  width: '16px',
38
38
  height: '16px',
39
- color: checkboxStyle.color
39
+ fill: checkboxStyle.color
40
40
  }
41
41
  }, /*#__PURE__*/_react.default.createElement("use", {
42
42
  xlinkHref: "#".concat(checkboxStyle.type)
@@ -32,7 +32,7 @@ function DepartmentMultipleSelectFilter(props) {
32
32
  name
33
33
  } = option;
34
34
  return /*#__PURE__*/_react.default.createElement("div", {
35
- className: "dropdown-item d-flex align-items-center",
35
+ className: "department-item",
36
36
  key: index,
37
37
  onClick: event => selectDepartment(event, type)
38
38
  }, /*#__PURE__*/_react.default.createElement("input", {
@@ -37,7 +37,7 @@ function DepartmentSingleSelectFilter(props) {
37
37
  name
38
38
  } = option;
39
39
  return /*#__PURE__*/_react.default.createElement("div", {
40
- className: "dropdown-item department-item d-flex align-items-center",
40
+ className: "department-item",
41
41
  key: index,
42
42
  onClick: event => onSelect(event, type)
43
43
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -301,7 +301,6 @@
301
301
  width: 100%;
302
302
  }
303
303
 
304
- .dropdown-item .collaborator,
305
304
  .filters-list .option-group .option-group-content .collaborator {
306
305
  background-color: unset;
307
306
  }
@@ -1,4 +1,10 @@
1
1
  .departments-container.dtable-ui {
2
+ position: absolute;
3
+ background-color: #fff;
4
+ border-radius: 3px;
5
+ min-width: 12rem;
6
+ height: 285px;
7
+ box-shadow: 0 0 5px #ccc;
2
8
  top: -4px;
3
9
  left: -3px;
4
10
  width: calc(100% + 8px);
@@ -52,12 +58,14 @@
52
58
  cursor: pointer;
53
59
  }
54
60
 
55
- .departments-container.dtable-ui .dropdown-item {
56
- padding-left: 10px;
61
+ .departments-container.dtable-ui .department-item {
62
+ padding: 4px 15px 4px 10px;
57
63
  cursor: pointer;
64
+ display: flex;
65
+ align-items: center;
58
66
  }
59
67
 
60
- .departments-container.dtable-ui .dropdown-item:hover {
68
+ .departments-container.dtable-ui .department-item:hover {
61
69
  background: #f5f5f5;
62
70
  color: #212529;
63
71
  }
@@ -92,7 +92,7 @@ function DepartmentMultipleSelect(props) {
92
92
  return /*#__PURE__*/_react.default.createElement(_react.Fragment, {
93
93
  key: id
94
94
  }, /*#__PURE__*/_react.default.createElement("div", {
95
- className: "dropdown-item d-flex align-items-center",
95
+ className: "department-item",
96
96
  onClick: event => onSelectDepartment(event, id)
97
97
  }, /*#__PURE__*/_react.default.createElement("input", {
98
98
  type: "checkbox",
@@ -123,7 +123,7 @@ function DepartmentMultipleSelect(props) {
123
123
  ref: departmentContainerRef,
124
124
  onClick: onStopPropagation,
125
125
  onMouseDown: onStopPropagation,
126
- className: "dropdown-menu show departments-container dtable-ui ".concat(classNamePrefix)
126
+ className: "departments-container dtable-ui ".concat(classNamePrefix)
127
127
  }, isShowSelectedDepartments && /*#__PURE__*/_react.default.createElement("div", {
128
128
  className: "selected-departments dtable-ui",
129
129
  onClick: onClick
@@ -146,7 +146,7 @@ class DepartmentSingleSelect extends _react.Component {
146
146
  return /*#__PURE__*/_react.default.createElement(_react.Fragment, {
147
147
  key: id
148
148
  }, /*#__PURE__*/_react.default.createElement("div", {
149
- className: "dropdown-item department-item d-flex align-items-center",
149
+ className: "department-item",
150
150
  onClick: event => this.onSelectDepartment(event, id),
151
151
  style: itemStyle
152
152
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -250,7 +250,7 @@ class DepartmentSingleSelect extends _react.Component {
250
250
  }
251
251
  render() {
252
252
  return /*#__PURE__*/_react.default.createElement("div", {
253
- className: "dropdown-menu department-editor-list dtable-ui show m-0 p-0",
253
+ className: "department-editor-list dtable-ui",
254
254
  style: this.props.menuStyle || {},
255
255
  ref: ref => this.departmentsRef = ref,
256
256
  onClick: this.onStopPropagation,
@@ -1,6 +1,14 @@
1
1
  .dtable-ui.department-editor-list {
2
+ position: absolute;
3
+ left: 0;
4
+ z-index: 1000;
5
+ text-align: left;
6
+ background-color: #fff;
7
+ border-radius: 3px;
8
+ min-width: 12rem;
2
9
  width: 300px;
3
10
  height: 285px;
11
+ box-shadow: 0 0 5px #ccc;
4
12
  }
5
13
 
6
14
  .dtable-ui.department-editor-list .editor-department-container {
@@ -44,13 +52,14 @@
44
52
  display: initial !important;
45
53
  }
46
54
 
47
- .dtable-ui.department-editor-list .editor-department-container .dropdown-item {
48
- padding-left: 10px;
49
- padding-right: 15px;
55
+ .dtable-ui.department-editor-list .editor-department-container .department-item {
56
+ padding: 4px 15px 4px 10px;
50
57
  cursor: pointer;
58
+ display: flex;
59
+ align-items: center;
51
60
  }
52
61
 
53
- .dtable-ui.department-editor-list .editor-department-container .dropdown-item:hover {
62
+ .dtable-ui.department-editor-list .editor-department-container .department-item:hover {
54
63
  background: #f5f5f5;
55
64
  color: #212529;
56
65
  }
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.imageCheck = exports.getFileThumbnailInfo = exports.getFileIconUrl = void 0;
7
- var _utils = require("../ImageFormatter/utils");
7
+ var _url = require("../utils/url");
8
8
  const FILEEXT_ICON_MAP = {
9
9
  // text file
10
10
  md: 'txt.png',
@@ -62,7 +62,7 @@ const getFileThumbnailInfo = fileItem => {
62
62
  } else {
63
63
  isImage = imageCheck(fileItem.name);
64
64
  if (isImage) {
65
- fileIconUrl = (0, _utils.getImageThumbnailUrl)(fileItem.url);
65
+ fileIconUrl = (0, _url.getImageThumbnailUrl)(fileItem.url);
66
66
  } else {
67
67
  fileIconUrl = require('./' + getFileIconUrl(fileItem.name, fileItem.type));
68
68
  }
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.default = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _Loading = _interopRequireDefault(require("../Loading"));
11
- var _utils = require("./utils");
11
+ var _url = require("../utils/url");
12
12
  class ImagesLazyLoad extends _react.default.Component {
13
13
  constructor(_props) {
14
14
  super(_props);
@@ -42,7 +42,9 @@ class ImagesLazyLoad extends _react.default.Component {
42
42
  server
43
43
  } = this.props;
44
44
  images.forEach((item, index) => {
45
- let url = (0, _utils.getImageThumbnailUrl)(item, server);
45
+ let url = (0, _url.getImageThumbnailUrl)(item, {
46
+ server
47
+ });
46
48
  this.lazyLoadImage(url, image => {
47
49
  let {
48
50
  loadedCount,
@@ -9,8 +9,8 @@ exports.default = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _classnames = _interopRequireDefault(require("classnames"));
11
11
  var _imagesLazyLoad = _interopRequireDefault(require("./images-lazy-load"));
12
- var _utils = require("./utils");
13
12
  var _ImagePreviewerLightbox = _interopRequireDefault(require("../ImagePreviewerLightbox"));
13
+ var _url = require("../utils/url");
14
14
  require("./index.css");
15
15
  class ImageFormatter extends _react.default.Component {
16
16
  constructor(props) {
@@ -79,7 +79,7 @@ class ImageFormatter extends _react.default.Component {
79
79
  }
80
80
  if (isSample) {
81
81
  let item = value[0];
82
- let url = (0, _utils.getImageThumbnailUrl)(item, server);
82
+ let url = (0, _url.getImageThumbnailUrl)(item, server);
83
83
  return /*#__PURE__*/_react.default.createElement("div", {
84
84
  className: className
85
85
  }, /*#__PURE__*/_react.default.createElement("img", {
@@ -1,14 +1 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getImageThumbnailUrl = void 0;
7
- const getImageThumbnailUrl = (url, server) => {
8
- if (typeof url !== 'string') return '';
9
- if (server && url.indexOf(server) > -1) {
10
- return url.replace('/workspace', '/thumbnail/workspace') + '?size=256';
11
- }
12
- return url;
13
- };
14
- exports.getImageThumbnailUrl = getImageThumbnailUrl;
1
+ "use strict";
@@ -0,0 +1,8 @@
1
+ .ril__outer .ril__navButtons:focus,
2
+ .ril__outer .ril__builtinButton:focus {
3
+ outline: none;
4
+ }
5
+
6
+ .ril-caption .ril__builtinButton {
7
+ width: 24px;
8
+ }
@@ -8,45 +8,83 @@ exports.default = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _classnames = _interopRequireDefault(require("classnames"));
10
10
  var _reactImageLightbox = _interopRequireDefault(require("@seafile/react-image-lightbox"));
11
- var _utils = require("./utils");
11
+ var _url = require("../utils/url");
12
12
  var _lang = require("../lang");
13
13
  require("@seafile/react-image-lightbox/style.css");
14
+ require("./index.css");
14
15
  function ImagePreviewerLightbox(props) {
15
16
  const {
16
17
  imageItems,
17
18
  imageIndex,
18
- deleteImage,
19
- downloadImage,
20
- onRotateImage,
21
19
  readOnly,
20
+ className,
22
21
  server,
23
- moveToPrevRowImage,
24
- moveToNextRowImage,
25
- className
22
+ workspaceID,
23
+ dtableUuid,
24
+ deleteImage,
25
+ downloadImage,
26
+ onRotateImage
26
27
  } = props;
27
- const imageItemsLength = imageItems.length;
28
- const URL = imageItems[imageIndex];
29
- const imageTitle = URL ? decodeURI(URL.slice(URL.lastIndexOf('/') + 1)) : '';
28
+ const imageSrcList = imageItems.map(src => {
29
+ if (server && dtableUuid && (0, _url.isCustomAssetUrl)(src)) {
30
+ const assetUuid = src.slice(src.lastIndexOf('/') + 1, src.lastIndexOf('.'));
31
+ return server + '/dtable/' + dtableUuid + '/custom-asset/' + assetUuid;
32
+ }
33
+ if (server && dtableUuid && workspaceID && (0, _url.isDigitalSignsUrl)(src)) {
34
+ return (0, _url.generateCurrentBaseImageUrl)({
35
+ server,
36
+ workspaceID,
37
+ dtableUuid,
38
+ partUrl: src
39
+ });
40
+ }
41
+ return src;
42
+ });
43
+ const imagesLength = imageSrcList.length;
44
+ const URL = imageSrcList[imageIndex];
45
+
46
+ // Handle URL has special symbol %$
47
+ let imageName = '';
48
+ try {
49
+ imageName = URL ? decodeURI(URL.slice(URL.lastIndexOf('/') + 1)) : '';
50
+ } catch (error) {
51
+ // eslint-disable-next-line no-console
52
+ console.log(error);
53
+ }
54
+
30
55
  // svg image is vectorgraph and can't rotate, external image can't rotate
31
- const canRotateImage = onRotateImage && !readOnly && !(0, _utils.checkSVGImage)(URL) && (0, _utils.isInternalImg)(URL, server);
32
- const imageTitleEl = /*#__PURE__*/_react.default.createElement("span", {
56
+ const canRotateImage = onRotateImage && !readOnly && !(0, _url.checkSVGImage)(URL) && (0, _url.isInternalImg)(URL, server);
57
+ let mainSrc = URL;
58
+ if ((0, _url.needUseThumbnailImage)(URL)) {
59
+ mainSrc = (0, _url.getImageThumbnailUrl)(URL, {
60
+ server,
61
+ dtableUuid,
62
+ workspaceID,
63
+ size: 512
64
+ });
65
+ }
66
+ const imageTitleDOM = props.imageTitle || /*#__PURE__*/_react.default.createElement("span", {
33
67
  className: "d-flex"
34
68
  }, /*#__PURE__*/_react.default.createElement("span", {
35
69
  className: "text-truncate"
36
- }, imageTitle), /*#__PURE__*/_react.default.createElement("span", {
37
- className: "flex-shrink-0"
38
- }, "(", imageIndex + 1, "/", imageItemsLength, ")"));
70
+ }, imageName), /*#__PURE__*/_react.default.createElement("span", {
71
+ className: "flex-shrink-0 pl-1"
72
+ }, "(", imageIndex + 1, "/", imagesLength, ")"));
39
73
  return /*#__PURE__*/_react.default.createElement(_reactImageLightbox.default, {
40
74
  wrapperClassName: (0, _classnames.default)('dtable-ui-component', className),
41
- imageTitle: imageTitleEl,
42
- mainSrc: imageItems[imageIndex],
43
- nextSrc: imageItems[(imageIndex + 1) % imageItemsLength],
44
- prevSrc: imageItems[(imageIndex + imageItemsLength - 1) % imageItemsLength],
75
+ imageTitle: imageTitleDOM,
76
+ mainSrc: mainSrc,
77
+ nextSrc: imageSrcList[(imageIndex + 1) % imagesLength],
78
+ prevSrc: imageSrcList[(imageIndex + imagesLength - 1) % imagesLength],
79
+ imagePadding: 70,
80
+ viewOriginalImageLabel: (0, _lang.getLocale)('View_original_image'),
81
+ enableRotate: canRotateImage,
45
82
  onCloseRequest: props.closeImagePopup,
46
83
  onMovePrevRequest: props.moveToPrevImage,
47
84
  onMoveNextRequest: props.moveToNextImage,
48
- onClickMoveUp: moveToPrevRowImage,
49
- onClickMoveDown: moveToNextRowImage,
85
+ onClickMoveUp: props.moveToPrevRowImage,
86
+ onClickMoveDown: props.moveToNextRowImage,
87
+ onViewOriginal: props.onViewOriginal,
50
88
  onRotateImage: canRotateImage ? deg => {
51
89
  onRotateImage(imageIndex, deg);
52
90
  } : null,
@@ -55,11 +93,7 @@ function ImagePreviewerLightbox(props) {
55
93
  } : null,
56
94
  onClickDownload: downloadImage ? () => {
57
95
  downloadImage(URL);
58
- } : null,
59
- imagePadding: 70,
60
- onViewOriginal: props.onViewOriginal,
61
- viewOriginalImageLabel: (0, _lang.getLocale)('View_original_image'),
62
- enableRotate: canRotateImage
96
+ } : null
63
97
  });
64
98
  }
65
99
  var _default = exports.default = ImagePreviewerLightbox;
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.needUseThumbnailImage = exports.isTargetUrl = exports.isInternalImg = exports.isDigitalSignsUrl = exports.isCustomAssetUrl = exports.getImageThumbnailUrl = exports.generateCurrentBaseImageUrl = exports.generateCurrentBaseImageThumbnailUrl = exports.checkSVGImage = void 0;
7
+ const isTargetUrl = (target, url) => {
8
+ if (!url || typeof url !== 'string') return false;
9
+ return target && url ? url.indexOf(target) > -1 : false;
10
+ };
11
+ exports.isTargetUrl = isTargetUrl;
12
+ const isInternalImg = (url, server) => {
13
+ if (!url || typeof url !== 'string') return false;
14
+ const currentServer = server || window.dtable && window.dtable.server;
15
+ return url.indexOf(currentServer) > -1;
16
+ };
17
+ exports.isInternalImg = isInternalImg;
18
+ const isCustomAssetUrl = url => {
19
+ return isTargetUrl('custom-asset://', url);
20
+ };
21
+ exports.isCustomAssetUrl = isCustomAssetUrl;
22
+ const checkSVGImage = url => {
23
+ if (!url || typeof url !== 'string') return false;
24
+ const isSVGImage = url.substring(url.lastIndexOf('.')).toLowerCase() === '.svg';
25
+ return isSVGImage;
26
+ };
27
+ exports.checkSVGImage = checkSVGImage;
28
+ const isDigitalSignsUrl = url => {
29
+ if (!url || typeof url !== 'string') return false;
30
+ return isTargetUrl('/digital-signs/', url) && !url.includes('http');
31
+ };
32
+ exports.isDigitalSignsUrl = isDigitalSignsUrl;
33
+ const needUseThumbnailImage = url => {
34
+ if (!url || typeof url !== 'string' || url.lastIndexOf('.') === -1) {
35
+ return false;
36
+ }
37
+ const image_suffix = url.substring(url.lastIndexOf('.') + 1).toLowerCase();
38
+ const suffix = ['bmp', 'tif', 'tiff'];
39
+ return suffix.includes(image_suffix);
40
+ };
41
+ exports.needUseThumbnailImage = needUseThumbnailImage;
42
+ const generateCurrentBaseImageThumbnailUrl = _ref => {
43
+ let {
44
+ server,
45
+ workspaceID,
46
+ dtableUuid,
47
+ partUrl,
48
+ size
49
+ } = _ref;
50
+ if (!partUrl || typeof partUrl !== 'string') return '';
51
+ return "".concat(server, "/thumbnail/workspace/").concat(workspaceID, "/asset/").concat(dtableUuid).concat(partUrl, "?size=").concat(size);
52
+ };
53
+ exports.generateCurrentBaseImageThumbnailUrl = generateCurrentBaseImageThumbnailUrl;
54
+ const generateCurrentBaseImageUrl = _ref2 => {
55
+ let {
56
+ server,
57
+ workspaceID,
58
+ dtableUuid,
59
+ partUrl
60
+ } = _ref2;
61
+ if (!partUrl || typeof partUrl !== 'string') return '';
62
+ return "".concat(server, "/workspace/").concat(workspaceID, "/asset/").concat(dtableUuid).concat(partUrl);
63
+ };
64
+ exports.generateCurrentBaseImageUrl = generateCurrentBaseImageUrl;
65
+ const getImageThumbnailUrl = function (url) {
66
+ let {
67
+ server,
68
+ dtableUuid,
69
+ workspaceID,
70
+ size = 256
71
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
72
+ if (!url || typeof url !== 'string') return '';
73
+ if (server && dtableUuid && isCustomAssetUrl(url)) {
74
+ const assetUuid = url.slice(url.lastIndexOf('/') + 1, url.lastIndexOf('.'));
75
+ return server + '/dtable/' + dtableUuid + '/custom-asset-thumbnail/' + assetUuid + '?size=' + size;
76
+ }
77
+ if (server && workspaceID && dtableUuid && isDigitalSignsUrl(url)) {
78
+ return generateCurrentBaseImageThumbnailUrl({
79
+ server,
80
+ workspaceID,
81
+ dtableUuid,
82
+ size,
83
+ partUrl: url
84
+ });
85
+ }
86
+ if (checkSVGImage(url) || !isInternalImg(url)) {
87
+ return url;
88
+ }
89
+ return url.replace('/workspace', '/thumbnail/workspace') + '?size=' + size;
90
+ };
91
+ exports.getImageThumbnailUrl = getImageThumbnailUrl;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dtable-ui-component",
3
- "version": "5.2.3-alpha.3",
3
+ "version": "5.2.4",
4
4
  "main": "./lib/index.js",
5
5
  "dependencies": {
6
6
  "@seafile/react-image-lightbox": "3.0.1",
@@ -9,11 +9,10 @@
9
9
  "antd-mobile": "2.3.1",
10
10
  "classnames": "2.3.2",
11
11
  "dayjs": "1.10.7",
12
- "dtable-utils": "4.4.0",
12
+ "dtable-utils": "5.0.11",
13
13
  "is-hotkey": "0.2.0",
14
14
  "prop-types": "^15.8.1",
15
15
  "react": "17.0.2",
16
- "react-app-polyfill": "^3.0.0",
17
16
  "react-dom": "17.0.2",
18
17
  "react-responsive": "9.0.2",
19
18
  "react-color": "2.19.3",
@@ -1,17 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.isInternalImg = exports.checkSVGImage = void 0;
7
- const isInternalImg = (url, server) => {
8
- if (!url) return;
9
- const currentServer = server || window.dtable && window.dtable.server;
10
- return url.indexOf(currentServer) > -1;
11
- };
12
- exports.isInternalImg = isInternalImg;
13
- const checkSVGImage = url => {
14
- if (!url) return false;
15
- return url.substr(-4).toLowerCase() === '.svg';
16
- };
17
- exports.checkSVGImage = checkSVGImage;