@antscorp/antsomi-ui 1.3.5-beta.689 → 1.3.5-beta.690

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.
@@ -138,9 +138,9 @@ export const DrawerDetail = props => {
138
138
  } }),
139
139
  React.createElement(Icon, { type: "icon-ants-remove-slim", size: 14 }))),
140
140
  showExpandButton && !fullScreen && (React.createElement(ToggleDrawerSizeButton, { style: Object.assign({}, (!showMenu && { background: '#ffffff' })), onClick: () => handleToggleDrawerSize(), collapse: collapseDrawer })),
141
- showMenu && (React.createElement(LeftMenu, { className: "animate__animated animate__fadeIn" },
141
+ showMenu && (React.createElement(LeftMenu, { "data-test": "left-menu", className: "animate__animated animate__fadeIn" },
142
142
  React.createElement("div", null,
143
- showClose && (React.createElement(CloseBtn, { onClick: onClose },
143
+ showClose && (React.createElement(CloseBtn, { "data-test": "close-btn", onClick: onClose },
144
144
  React.createElement(Icon, { type: "icon-ants-remove-slim", size: 14 }))),
145
145
  React.createElement(Flex, { vertical: true, gap: 10, align: "center", justify: "center" }, items === null || items === void 0 ? void 0 : items.map((item) => (React.createElement(Tooltip, { key: item === null || item === void 0 ? void 0 : item.key, title: item === null || item === void 0 ? void 0 : item.label, mouseEnterDelay: 0.3, placement: "right" },
146
146
  React.createElement(MenuItem, { key: item === null || item === void 0 ? void 0 : item.key, className: (selectedKeys === null || selectedKeys === void 0 ? void 0 : selectedKeys.includes(item.key)) ? 'active' : '', onClick: () => onClick && onClick(item) }, item.icon)))))),
@@ -56,7 +56,7 @@ export const EditableName = React.forwardRef((props, ref) => {
56
56
  (_a = inputRefElement === null || inputRefElement === void 0 ? void 0 : inputRefElement.input) === null || _a === void 0 ? void 0 : _a.removeEventListener('wheel', preventWheel);
57
57
  };
58
58
  }, []);
59
- return (React.createElement(InputWrapperStyled, { className: className || '', style: style, ref: componentInViewRef },
59
+ return (React.createElement(InputWrapperStyled, { "data-test": props['data-test'] || 'editable-name', className: className || '', style: style, ref: componentInViewRef },
60
60
  React.createElement(Tooltip, { title: value || internalValue },
61
61
  React.createElement(Input, { readOnly: readonly, ref: inputRef, style: { width: inputWidth + 2 }, defaultValue: defaultValue.current, value: value, onChange: event => {
62
62
  var _a;
@@ -10,6 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  // Lib
11
11
  import React, { useCallback, useEffect, useRef, useState } from 'react';
12
12
  import classnames from 'classnames';
13
+ import { useInView } from 'react-intersection-observer';
13
14
  // Components
14
15
  import Icon from '@antscorp/icons/main';
15
16
  import { Button, Typography, Dropdown, ContentEditable, Modal, } from '@antscorp/antsomi-ui/es/components';
@@ -19,7 +20,7 @@ import { EditorTabStyled } from './styled';
19
20
  import { handleError } from '@antscorp/antsomi-ui/es/utils';
20
21
  const PATH = 'src/components/EditorTab/index.jsx';
21
22
  export const EditorTab = props => {
22
- var _a, _b, _c, _d, _e;
23
+ var _a;
23
24
  const { listTab = [], activeId = '', showArrow, showDropdown, editNameOnConfigure,
24
25
  // disabledScroll,
25
26
  onCloseTab, onClickRemoveTab, onConfirmRemove, onActiveTab, onAddTab, onConfigure, onSaveName, newTabText, showComposeNewQuery, className, leftBlockClassName, tabItemClassName, confirmOnRemoveTab, modalFuncProps, } = props;
@@ -28,17 +29,10 @@ export const EditorTab = props => {
28
29
  const [isEditable, setIsEditable] = useState();
29
30
  const [modal, contextModal] = Modal.useModal();
30
31
  // Ref
31
- const [offsetWidth, setOffsetWidth] = useState(0);
32
- const [scrollWidth, setScrollWidth] = useState(0);
33
32
  const leftBlockRef = useRef(null);
34
- const isLeftBlockOverflow = ((_b = leftBlockRef.current) === null || _b === void 0 ? void 0 : _b.offsetWidth) && ((_c = leftBlockRef.current) === null || _c === void 0 ? void 0 : _c.scrollWidth)
35
- ? ((_d = leftBlockRef.current) === null || _d === void 0 ? void 0 : _d.offsetWidth) < ((_e = leftBlockRef.current) === null || _e === void 0 ? void 0 : _e.scrollWidth)
36
- : offsetWidth < scrollWidth;
37
- useEffect(() => {
38
- var _a, _b;
39
- setOffsetWidth(((_a = leftBlockRef.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) || 0);
40
- setScrollWidth(((_b = leftBlockRef.current) === null || _b === void 0 ? void 0 : _b.scrollWidth) || 0);
41
- }, []);
33
+ const { ref: anchorLeftElRef, inView: anchorLeftElRefInView } = useInView();
34
+ const { ref: anchorRightElRef, inView: anchorRightElRefInView } = useInView();
35
+ const isLeftBlockOverflow = !anchorLeftElRefInView || !anchorRightElRefInView;
42
36
  useEffect(() => {
43
37
  if (listTab.length - arrTabs.length === 1) {
44
38
  setActiveTabId(listTab[listTab.length - 1].id);
@@ -104,7 +98,7 @@ export const EditorTab = props => {
104
98
  onActiveTab(tabId);
105
99
  }, [onActiveTab]);
106
100
  const handleCloseTab = (e, tab, idx) => __awaiter(void 0, void 0, void 0, function* () {
107
- var _f, _g;
101
+ var _b, _c;
108
102
  e.stopPropagation();
109
103
  // if (arrTabs.length < 2) {
110
104
  // return;
@@ -120,10 +114,10 @@ export const EditorTab = props => {
120
114
  return;
121
115
  if (activeTabId === tab.id) {
122
116
  if (idx === arrTabs.length - 1) {
123
- handleActiveTab((_f = arrTabs[idx - 1]) === null || _f === void 0 ? void 0 : _f.id);
117
+ handleActiveTab((_b = arrTabs[idx - 1]) === null || _b === void 0 ? void 0 : _b.id);
124
118
  }
125
119
  else if (arrTabs.length > 1) {
126
- handleActiveTab((_g = arrTabs[idx + 1]) === null || _g === void 0 ? void 0 : _g.id);
120
+ handleActiveTab((_c = arrTabs[idx + 1]) === null || _c === void 0 ? void 0 : _c.id);
127
121
  }
128
122
  }
129
123
  onCloseTab === null || onCloseTab === void 0 ? void 0 : onCloseTab(tab, idx, newTabs);
@@ -165,43 +159,46 @@ export const EditorTab = props => {
165
159
  contextModal,
166
160
  showArrow && isLeftBlockOverflow && (React.createElement("div", { className: "navigate-button", onClick: () => onClickArrow('left') },
167
161
  React.createElement(Icon, { type: "icon-ants-angle-left" }))),
168
- React.createElement("div", { ref: leftBlockRef, className: classnames('left-block', leftBlockClassName), onWheel: onWheelLeftBlock }, arrTabs && arrTabs.length
169
- ? arrTabs.map((tab, idx) => {
170
- const { showIcon = true, showDropdown = true, hideRemoveOption, closable = true, } = tab;
171
- return (React.createElement("div", { key: tab.id, onClick: () => handleActiveTab(tab.id), className: classnames('tab-item', tabItemClassName, {
172
- active: tab.id === activeTabId,
173
- }) },
174
- showIcon &&
175
- (tab.type === 'query' ? (React.createElement(Icon, { type: "icon-ants-material-outline-manage-search", overlayStyle: { fontSize: 21 } })) : (React.createElement(Icon, { type: "icon-ants-table-vertical", overlayStyle: { fontSize: 21 } }))),
176
- isEditable === tab.id ? (React.createElement(ContentEditable, { value: tab.name, onSave: newValue => {
177
- setIsEditable(undefined);
178
- onSaveName === null || onSaveName === void 0 ? void 0 : onSaveName(tab.id, newValue);
179
- } })) : (React.createElement(Typography.Text, { ellipsis: { tooltip: true } }, tab.name)),
180
- showDropdown ? (React.createElement(Dropdown, { menu: {
181
- items: [
182
- { label: 'Configure', key: 'configure', style: { minWidth: '135px' } },
183
- ...(hideRemoveOption
184
- ? []
185
- : [{ label: 'Remove', key: 'remove', style: { minWidth: '135px' } }]),
186
- ],
187
- onClick: (_a) => __awaiter(void 0, [_a], void 0, function* ({ key, domEvent }) {
188
- switch (key) {
189
- case 'configure':
190
- if (editNameOnConfigure)
191
- setIsEditable(tab.id);
192
- onConfigure === null || onConfigure === void 0 ? void 0 : onConfigure(tab.id);
193
- break;
194
- case 'remove':
195
- yield handleCloseTab(domEvent, tab, idx);
196
- break;
197
- default:
198
- break;
199
- }
200
- }),
201
- }, placement: "bottomLeft", trigger: ['click'], destroyPopupOnHide: true },
202
- React.createElement(Button, { icon: React.createElement(Icon, { type: "icon-ants-three-dot-vertical", overlayStyle: { fontSize: 12 } }), size: "small" }))) : closable ? (React.createElement(Button, { onClick: e => handleCloseTab(e, tab, idx), icon: React.createElement(Icon, { type: "icon-ants-remove-slim", overlayStyle: { fontSize: 12 } }), size: "small" })) : null));
203
- })
204
- : null),
162
+ React.createElement("div", { ref: leftBlockRef, className: classnames('left-block', leftBlockClassName), onWheel: onWheelLeftBlock },
163
+ React.createElement("div", { ref: anchorLeftElRef }),
164
+ arrTabs && arrTabs.length
165
+ ? arrTabs.map((tab, idx) => {
166
+ const { showIcon = true, showDropdown = true, hideRemoveOption, closable = true, } = tab;
167
+ return (React.createElement("div", { key: tab.id, onClick: () => handleActiveTab(tab.id), className: classnames('tab-item', tabItemClassName, {
168
+ active: tab.id === activeTabId,
169
+ }) },
170
+ showIcon &&
171
+ (tab.type === 'query' ? (React.createElement(Icon, { type: "icon-ants-material-outline-manage-search", overlayStyle: { fontSize: 21 } })) : (React.createElement(Icon, { type: "icon-ants-table-vertical", overlayStyle: { fontSize: 21 } }))),
172
+ isEditable === tab.id ? (React.createElement(ContentEditable, { value: tab.name, onSave: newValue => {
173
+ setIsEditable(undefined);
174
+ onSaveName === null || onSaveName === void 0 ? void 0 : onSaveName(tab.id, newValue);
175
+ } })) : (React.createElement(Typography.Text, { ellipsis: { tooltip: true } }, tab.name)),
176
+ showDropdown ? (React.createElement(Dropdown, { menu: {
177
+ items: [
178
+ { label: 'Configure', key: 'configure', style: { minWidth: '135px' } },
179
+ ...(hideRemoveOption
180
+ ? []
181
+ : [{ label: 'Remove', key: 'remove', style: { minWidth: '135px' } }]),
182
+ ],
183
+ onClick: (_a) => __awaiter(void 0, [_a], void 0, function* ({ key, domEvent }) {
184
+ switch (key) {
185
+ case 'configure':
186
+ if (editNameOnConfigure)
187
+ setIsEditable(tab.id);
188
+ onConfigure === null || onConfigure === void 0 ? void 0 : onConfigure(tab.id);
189
+ break;
190
+ case 'remove':
191
+ yield handleCloseTab(domEvent, tab, idx);
192
+ break;
193
+ default:
194
+ break;
195
+ }
196
+ }),
197
+ }, placement: "bottomLeft", trigger: ['click'], destroyPopupOnHide: true },
198
+ React.createElement(Button, { icon: React.createElement(Icon, { type: "icon-ants-three-dot-vertical", overlayStyle: { fontSize: 12 } }), size: "small" }))) : closable ? (React.createElement(Button, { onClick: e => handleCloseTab(e, tab, idx), icon: React.createElement(Icon, { type: "icon-ants-remove-slim", overlayStyle: { fontSize: 12 } }), size: "small" })) : null));
199
+ })
200
+ : null,
201
+ React.createElement("div", { ref: anchorRightElRef })),
205
202
  showArrow && isLeftBlockOverflow && (React.createElement("div", { className: "navigate-button", onClick: () => onClickArrow('right') },
206
203
  React.createElement(Icon, { type: "icon-ants-angle-right" }))),
207
204
  showComposeNewQuery || newTabText ? (React.createElement(Button, { onClick: handleAddNew, className: "new-query-button" },
@@ -22,8 +22,8 @@ export const EditorTabStyled = styled.div `
22
22
  .left-block {
23
23
  position: relative;
24
24
  height: 100%;
25
- width: 100%;
26
- flex-grow: 1;
25
+ /* width: 100%;
26
+ flex-grow: 1; */
27
27
  flex-flow: nowrap;
28
28
  display: flex;
29
29
  align-items: center;
@@ -93,7 +93,7 @@ export const ThumbnailCard = (props) => {
93
93
  .filter(Boolean);
94
94
  };
95
95
  return (React.createElement(Flex, Object.assign({ gap: 10, vertical: true }, restOfProps, { style: Object.assign({ width }, restOfProps.style) }),
96
- React.createElement(ThumbnailCardWrapper, { "$showSkeleton": showSkeletonMemo, style: { height, cursor: actionAvailable ? 'default' : 'pointer' }, onClick: handleWrapperClick },
96
+ React.createElement(ThumbnailCardWrapper, { "$showSkeleton": showSkeletonMemo, style: { height, cursor: actionAvailable ? 'default' : 'pointer' }, onClick: handleWrapperClick, "data-test": "thumbnail" },
97
97
  React.createElement("div", { className: "screen" }, thumbnail && (React.createElement("img", { src: getUrlNoCache(thumbnail, thumbnailCacheValue), alt: "", style: { objectFit: thumbnailFit }, onError: e => {
98
98
  e.currentTarget.style.display = 'none';
99
99
  } }))),
@@ -81,7 +81,7 @@ export const TemplateListing = memo(props => {
81
81
  previewBtnProps: Object.assign(Object.assign({}, previewBtnProps), { onClick: handleClickThumbnailPreview }) }, restOfTemplateItemProps))));
82
82
  }))),
83
83
  !loading && !blankTemplateProps.show && !isHasData && (React.createElement(EmptyData, { icon: emptyProps === null || emptyProps === void 0 ? void 0 : emptyProps.icon, title: emptyProps === null || emptyProps === void 0 ? void 0 : emptyProps.description })))));
84
- return (React.createElement(TemplateListingWrapper, null,
84
+ return (React.createElement(TemplateListingWrapper, { "data-test": "template-listing-container" },
85
85
  React.createElement(CategoryListing, Object.assign({}, categoryListingProps, { emptyProps: emptyProps })),
86
86
  React.createElement(TemplateWrapper, { className: wrapperClassName, style: wrapperStyle },
87
87
  header,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antscorp/antsomi-ui",
3
- "version": "1.3.5-beta.689",
3
+ "version": "1.3.5-beta.690",
4
4
  "description": "An enterprise-class UI design language and React UI library.",
5
5
  "sideEffects": [
6
6
  "dist/*",