@arcblock/ux 2.10.0 → 2.10.2

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.
@@ -62,7 +62,10 @@ const Div = styled('div')`
62
62
  transform: scale(0.1);
63
63
  opacity: 0;
64
64
  z-index: -1;
65
- transition: transform 0.3s, opacity 0.3s, background-color 0.3s;
65
+ transition:
66
+ transform 0.3s,
67
+ opacity 0.3s,
68
+ background-color 0.3s;
66
69
  }
67
70
  &:hover::after {
68
71
  opacity: 1;
@@ -28,7 +28,10 @@ const ActionButton = styled('div')`
28
28
  transform: scale(0.1);
29
29
  opacity: 0;
30
30
  z-index: -1;
31
- transition: transform 0.3s, opacity 0.3s, background-color 0.3s;
31
+ transition:
32
+ transform 0.3s,
33
+ opacity 0.3s,
34
+ background-color 0.3s;
32
35
  }
33
36
  &:hover::after {
34
37
  opacity: 1;
@@ -92,7 +92,10 @@ const Div = styled('div')`
92
92
  transform: scale(0.1);
93
93
  opacity: 0;
94
94
  z-index: -1;
95
- transition: transform 0.3s, opacity 0.3s, background-color 0.3s;
95
+ transition:
96
+ transform 0.3s,
97
+ opacity 0.3s,
98
+ background-color 0.3s;
96
99
  }
97
100
  &:hover::after {
98
101
  opacity: 1;
@@ -7,6 +7,21 @@ import { mergeProps } from '../Util';
7
7
  import { styled } from '../Theme';
8
8
  import { jsx as _jsx } from "react/jsx-runtime";
9
9
  export { default as CopyButton } from './copy-button';
10
+ const Container = styled('span')`
11
+ display: inline;
12
+ white-space: pre-wrap;
13
+ word-wrap: break-word;
14
+ overflow-wrap: break-word;
15
+ align-items: center;
16
+ justify-content: start;
17
+ border-radius: 15px;
18
+ padding: 1px 12px;
19
+ background-color: rgba(0, 0, 0, 0.08);
20
+ cursor: pointer;
21
+ `;
22
+ const UnstyledContainer = styled('span')`
23
+ cursor: pointer;
24
+ `;
10
25
  export default function ClickToCopy(props) {
11
26
  const newProps = mergeProps(props, ClickToCopy, ['style']);
12
27
  const {
@@ -74,19 +89,4 @@ ClickToCopy.defaultProps = {
74
89
  locale: 'en',
75
90
  style: {},
76
91
  unstyled: false
77
- };
78
- const Container = styled('span')`
79
- display: inline;
80
- white-space: pre-wrap;
81
- word-wrap: break-word;
82
- overflow-wrap: break-word;
83
- align-items: center;
84
- justify-content: start;
85
- border-radius: 15px;
86
- padding: 1px 12px;
87
- background-color: rgba(0, 0, 0, 0.08);
88
- cursor: pointer;
89
- `;
90
- const UnstyledContainer = styled('span')`
91
- cursor: pointer;
92
- `;
92
+ };
@@ -55,6 +55,7 @@ export default function CustomToolbar(props) {
55
55
  searchTextUpdate,
56
56
  searchClose
57
57
  } = props;
58
+ const [allPopsEl, setAllPopsEl] = useState({});
58
59
  const customToolbarEle = options.customToolbar ? options.customToolbar(props) : '';
59
60
  const {
60
61
  search,
@@ -132,7 +133,6 @@ export default function CustomToolbar(props) {
132
133
  }
133
134
  const showMore = [!hidePrint, ...defaultButtons, ...customButtons].filter(e => !!e).length > 1 && isMobile;
134
135
  const allPops = [];
135
- const [allPopsEl, setAllPopsEl] = useState({});
136
136
 
137
137
  // Large screens show the toolbar buttons directly, small screens show the drop-down menu style buttons
138
138
  // The right-hand button of the form toolbar in desktop mode
@@ -58,6 +58,71 @@ import { styled } from '../Theme';
58
58
  * durableKeys?: 'page' | 'rowsPerPage' | 'searchText' | 'sortOrder'
59
59
  * } & import('mui-datatables').MUIDataTableProps} DataTableProps
60
60
  */
61
+ import { jsx as _jsx } from "react/jsx-runtime";
62
+ import { jsxs as _jsxs } from "react/jsx-runtime";
63
+ const FilterLine = styled('div')`
64
+ display: flex;
65
+ align-items: center;
66
+ .toolbar-filter-content {
67
+ margin-bottom: 8px;
68
+ }
69
+ .toolbar-filter-title {
70
+ font-weight: 700;
71
+ font-size: 14px;
72
+ }
73
+ `;
74
+ function WrapFilterList(props) {
75
+ const {
76
+ filterLabel
77
+ } = useDatatableContext();
78
+ const hasFilter = !!props.filterList.filter(e => e.length).length;
79
+ if (hasFilter) {
80
+ return /*#__PURE__*/_jsxs(FilterLine, {
81
+ children: [hasFilter && /*#__PURE__*/_jsx("div", {
82
+ className: "toolbar-filter-title",
83
+ children: filterLabel
84
+ }), /*#__PURE__*/_jsx("div", {
85
+ className: "toolbar-filter-content",
86
+ children: /*#__PURE__*/_jsx(TableFilterList, {
87
+ ...props
88
+ })
89
+ })]
90
+ });
91
+ }
92
+ return '';
93
+ }
94
+ WrapFilterList.propTypes = {
95
+ filterList: PropTypes.array
96
+ };
97
+ WrapFilterList.defaultProps = {
98
+ filterList: []
99
+ };
100
+ function WrapTableFooter(props) {
101
+ const {
102
+ loading,
103
+ disabled
104
+ } = useDatatableContext();
105
+ return /*#__PURE__*/_jsx(FooterContainer, {
106
+ children: /*#__PURE__*/_jsx("div", {
107
+ className: `datatable-footer ${loading || disabled ? 'datatable-footer-disabled' : ''}`,
108
+ children: /*#__PURE__*/_jsx(TableFooter, {
109
+ ...props
110
+ })
111
+ })
112
+ });
113
+ }
114
+ export const getDurableData = key => {
115
+ const durableKey = `datatable-durable-${key}`;
116
+ let localData = localStorage[durableKey];
117
+ if (localData) {
118
+ try {
119
+ localData = JSON.parse(localData);
120
+ } catch (err) {
121
+ console.error(`parse durable data error (key:${key}) => `, err);
122
+ }
123
+ }
124
+ return localData || {};
125
+ };
61
126
 
62
127
  /**
63
128
  * @description
@@ -65,8 +130,6 @@ import { styled } from '../Theme';
65
130
  * @param {DataTableProps} props
66
131
  * @return {import('react').ReactComponentElement}
67
132
  */
68
- import { jsx as _jsx } from "react/jsx-runtime";
69
- import { jsxs as _jsxs } from "react/jsx-runtime";
70
133
  export default function DataTable(props) {
71
134
  return /*#__PURE__*/_jsx(DataTableProvider, {
72
135
  children: /*#__PURE__*/_jsx(ReDataTable, {
@@ -397,18 +460,6 @@ ReDataTable.defaultProps = {
397
460
  durable: '',
398
461
  durableKeys: ['page', 'rowsPerPage', 'searchText', 'sortOrder']
399
462
  };
400
- export const getDurableData = key => {
401
- const durableKey = `datatable-durable-${key}`;
402
- let localData = localStorage[durableKey];
403
- if (localData) {
404
- try {
405
- localData = JSON.parse(localData);
406
- } catch (err) {
407
- console.error(`parse durable data error (key:${key}) => `, err);
408
- }
409
- }
410
- return localData || {};
411
- };
412
463
  const alignCss = css`
413
464
  .MuiTableCell-head {
414
465
  [class*='MUIDataTableHeadCell-toolButton'] {
@@ -535,57 +586,6 @@ const TableContainer = styled('div', {
535
586
  }
536
587
  }
537
588
  `;
538
- const FilterLine = styled('div')`
539
- display: flex;
540
- align-items: center;
541
- .toolbar-filter-content {
542
- margin-bottom: 8px;
543
- }
544
- .toolbar-filter-title {
545
- font-weight: 700;
546
- font-size: 14px;
547
- }
548
- `;
549
- function WrapFilterList(props) {
550
- const {
551
- filterLabel
552
- } = useDatatableContext();
553
- const hasFilter = !!props.filterList.filter(e => e.length).length;
554
- if (hasFilter) {
555
- return /*#__PURE__*/_jsxs(FilterLine, {
556
- children: [hasFilter && /*#__PURE__*/_jsx("div", {
557
- className: "toolbar-filter-title",
558
- children: filterLabel
559
- }), /*#__PURE__*/_jsx("div", {
560
- className: "toolbar-filter-content",
561
- children: /*#__PURE__*/_jsx(TableFilterList, {
562
- ...props
563
- })
564
- })]
565
- });
566
- }
567
- return '';
568
- }
569
- WrapFilterList.propTypes = {
570
- filterList: PropTypes.array
571
- };
572
- WrapFilterList.defaultProps = {
573
- filterList: []
574
- };
575
- function WrapTableFooter(props) {
576
- const {
577
- loading,
578
- disabled
579
- } = useDatatableContext();
580
- return /*#__PURE__*/_jsx(FooterContainer, {
581
- children: /*#__PURE__*/_jsx("div", {
582
- className: `datatable-footer ${loading || disabled ? 'datatable-footer-disabled' : ''}`,
583
- children: /*#__PURE__*/_jsx(TableFooter, {
584
- ...props
585
- })
586
- })
587
- });
588
- }
589
589
  const FooterContainer = styled('div')`
590
590
  display: flex;
591
591
  align-items: center;
@@ -3,11 +3,11 @@ import type { ReactNode } from 'react';
3
3
  export type OpenConfirmProps = {
4
4
  title: ReactNode;
5
5
  content: ReactNode;
6
- onConfirm: (close: () => void) => void;
7
- onCancel: () => void;
8
- showCancelButton: boolean;
9
- confirmButtonText: string;
10
- cancelButtonText: string;
6
+ onConfirm?: (close: () => void) => void;
7
+ onCancel?: () => void;
8
+ showCancelButton?: boolean;
9
+ confirmButtonText?: string;
10
+ cancelButtonText?: string;
11
11
  };
12
12
 
13
13
  export type UpdateConfirmProps = Partial<Pick<OpenConfirmProps, 'title' | 'content'>>;
package/lib/Icon/image.js CHANGED
@@ -60,6 +60,8 @@ const Div = styled('div')`
60
60
  background-color: #fe4e44;
61
61
  right: -2px;
62
62
  top: 0;
63
- box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.3), 0px 0px 20px rgba(0, 0, 0, 0.1);
63
+ box-shadow:
64
+ 0px 1px 4px rgba(0, 0, 0, 0.3),
65
+ 0px 0px 20px rgba(0, 0, 0, 0.1);
64
66
  }
65
67
  `;
@@ -7,19 +7,9 @@ import { styled } from '../../Theme';
7
7
  import { NavLink } from './external-link';
8
8
  import { jsx as _jsx } from "react/jsx-runtime";
9
9
  import { jsxs as _jsxs } from "react/jsx-runtime";
10
- function renderGroup(item, index) {
11
- return /*#__PURE__*/_jsxs("li", {
12
- className: "layout-sidebar-group",
13
- children: [/*#__PURE__*/_jsx("span", {
14
- className: "layout-sidebar-group-title",
15
- children: item.title
16
- }), /*#__PURE__*/_jsx("ul", {
17
- children: item.children.map(renderItem)
18
- })]
19
- }, `group-${item.title}-${index}`);
20
- }
21
10
  function renderItem(item, index) {
22
11
  if (item.children?.length) {
12
+ // eslint-disable-next-line no-use-before-define
23
13
  return renderGroup(item, index);
24
14
  }
25
15
  const {
@@ -52,6 +42,17 @@ function renderItem(item, index) {
52
42
  })
53
43
  }, `${url}-${index}`);
54
44
  }
45
+ function renderGroup(item, index) {
46
+ return /*#__PURE__*/_jsxs("li", {
47
+ className: "layout-sidebar-group",
48
+ children: [/*#__PURE__*/_jsx("span", {
49
+ className: "layout-sidebar-group-title",
50
+ children: item.title
51
+ }), /*#__PURE__*/_jsx("ul", {
52
+ children: item.children.map(renderItem)
53
+ })]
54
+ }, `group-${item.title}-${index}`);
55
+ }
55
56
  function Sidebar({
56
57
  links,
57
58
  addons,
@@ -126,7 +127,9 @@ const Root = styled('div')`
126
127
  background-color: #fe4e44;
127
128
  right: -2px;
128
129
  top: 0;
129
- box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.3), 0px 0px 20px rgba(0, 0, 0, 0.1);
130
+ box-shadow:
131
+ 0px 1px 4px rgba(0, 0, 0, 0.3),
132
+ 0px 0px 20px rgba(0, 0, 0, 0.1);
130
133
  }
131
134
  }
132
135
  .layout-sidebar-link-text {
@@ -152,7 +152,9 @@ const Div = styled('div', {
152
152
 
153
153
  .locales {
154
154
  background: ${props => getBackground(props)};
155
- box-shadow: 0px 8px 16px 0px ${colors.gray6}, 0px 0px 0px 1px ${colors.gray6};
155
+ box-shadow:
156
+ 0px 8px 16px 0px ${colors.gray6},
157
+ 0px 0px 0px 1px ${colors.gray6};
156
158
  border-radius: 8px;
157
159
  }
158
160
 
@@ -126,7 +126,10 @@ const Root = styled(Box)`
126
126
  font-size: 13px;
127
127
  color: #9aa3b0;
128
128
  text-align: center;
129
- text-shadow: 0 0 2px #fff, 0 0 2px #fff, 0 0 2px #fff;
129
+ text-shadow:
130
+ 0 0 2px #fff,
131
+ 0 0 2px #fff,
132
+ 0 0 2px #fff;
130
133
  user-select: none;
131
134
  }
132
135
  `;
@@ -13,6 +13,7 @@ const NavMenuContext = /*#__PURE__*/createContext();
13
13
  // 过滤 children 中的 Item/Sub, 忽略其它类型的 element
14
14
  function filterItems(children) {
15
15
  if (children) {
16
+ // eslint-disable-next-line no-use-before-define
16
17
  return Children.toArray(children).filter(child => child.type === Item || child.type === Sub);
17
18
  }
18
19
  return null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcblock/ux",
3
- "version": "2.10.0",
3
+ "version": "2.10.2",
4
4
  "description": "Common used react components for arcblock products",
5
5
  "keywords": [
6
6
  "react",
@@ -54,12 +54,12 @@
54
54
  "react": ">=18.2.0",
55
55
  "react-router-dom": ">=6.22.3"
56
56
  },
57
- "gitHead": "c4c885cb48490bcae77fb61a04e9d0bb9fbf6abc",
57
+ "gitHead": "01c29cd905a2baf029d7be25d41c79a261ebd959",
58
58
  "dependencies": {
59
59
  "@arcblock/did-motif": "^1.1.13",
60
- "@arcblock/icons": "^2.10.0",
61
- "@arcblock/nft-display": "^2.10.0",
62
- "@arcblock/react-hooks": "^2.10.0",
60
+ "@arcblock/icons": "^2.10.2",
61
+ "@arcblock/nft-display": "^2.10.2",
62
+ "@arcblock/react-hooks": "^2.10.2",
63
63
  "@babel/plugin-syntax-dynamic-import": "^7.8.3",
64
64
  "@fontsource/inter": "^5.0.16",
65
65
  "@fontsource/ubuntu-mono": "^5.0.18",
@@ -62,7 +62,10 @@ const Div = styled('div')`
62
62
  transform: scale(0.1);
63
63
  opacity: 0;
64
64
  z-index: -1;
65
- transition: transform 0.3s, opacity 0.3s, background-color 0.3s;
65
+ transition:
66
+ transform 0.3s,
67
+ opacity 0.3s,
68
+ background-color 0.3s;
66
69
  }
67
70
  &:hover::after {
68
71
  opacity: 1;
@@ -29,7 +29,10 @@ const ActionButton = styled('div')`
29
29
  transform: scale(0.1);
30
30
  opacity: 0;
31
31
  z-index: -1;
32
- transition: transform 0.3s, opacity 0.3s, background-color 0.3s;
32
+ transition:
33
+ transform 0.3s,
34
+ opacity 0.3s,
35
+ background-color 0.3s;
33
36
  }
34
37
  &:hover::after {
35
38
  opacity: 1;
@@ -91,7 +91,10 @@ const Div = styled('div')`
91
91
  transform: scale(0.1);
92
92
  opacity: 0;
93
93
  z-index: -1;
94
- transition: transform 0.3s, opacity 0.3s, background-color 0.3s;
94
+ transition:
95
+ transform 0.3s,
96
+ opacity 0.3s,
97
+ background-color 0.3s;
95
98
  }
96
99
  &:hover::after {
97
100
  opacity: 1;
@@ -9,6 +9,23 @@ import { styled } from '../Theme';
9
9
 
10
10
  export { default as CopyButton } from './copy-button';
11
11
 
12
+ const Container = styled('span')`
13
+ display: inline;
14
+ white-space: pre-wrap;
15
+ word-wrap: break-word;
16
+ overflow-wrap: break-word;
17
+ align-items: center;
18
+ justify-content: start;
19
+ border-radius: 15px;
20
+ padding: 1px 12px;
21
+ background-color: rgba(0, 0, 0, 0.08);
22
+ cursor: pointer;
23
+ `;
24
+
25
+ const UnstyledContainer = styled('span')`
26
+ cursor: pointer;
27
+ `;
28
+
12
29
  export default function ClickToCopy(props) {
13
30
  const newProps = mergeProps(props, ClickToCopy, ['style']);
14
31
  const { children, content, tip, copiedTip, tipPlacement, locale, style, unstyled, ...rest } = newProps;
@@ -61,20 +78,3 @@ ClickToCopy.defaultProps = {
61
78
  style: {},
62
79
  unstyled: false,
63
80
  };
64
-
65
- const Container = styled('span')`
66
- display: inline;
67
- white-space: pre-wrap;
68
- word-wrap: break-word;
69
- overflow-wrap: break-word;
70
- align-items: center;
71
- justify-content: start;
72
- border-radius: 15px;
73
- padding: 1px 12px;
74
- background-color: rgba(0, 0, 0, 0.08);
75
- cursor: pointer;
76
- `;
77
-
78
- const UnstyledContainer = styled('span')`
79
- cursor: pointer;
80
- `;
@@ -52,6 +52,8 @@ export default function CustomToolbar(props) {
52
52
  searchClose,
53
53
  } = props;
54
54
 
55
+ const [allPopsEl, setAllPopsEl] = useState({});
56
+
55
57
  const customToolbarEle = options.customToolbar ? options.customToolbar(props) : '';
56
58
 
57
59
  const { search, downloadCsv, print, viewColumns, filterTable } = options.textLabels.toolbar;
@@ -137,7 +139,6 @@ export default function CustomToolbar(props) {
137
139
  const showMore = [!hidePrint, ...defaultButtons, ...customButtons].filter((e) => !!e).length > 1 && isMobile;
138
140
 
139
141
  const allPops = [];
140
- const [allPopsEl, setAllPopsEl] = useState({});
141
142
 
142
143
  // Large screens show the toolbar buttons directly, small screens show the drop-down menu style buttons
143
144
  // The right-hand button of the form toolbar in desktop mode
@@ -59,6 +59,67 @@ import { styled } from '../Theme';
59
59
  * } & import('mui-datatables').MUIDataTableProps} DataTableProps
60
60
  */
61
61
 
62
+ const FilterLine = styled('div')`
63
+ display: flex;
64
+ align-items: center;
65
+ .toolbar-filter-content {
66
+ margin-bottom: 8px;
67
+ }
68
+ .toolbar-filter-title {
69
+ font-weight: 700;
70
+ font-size: 14px;
71
+ }
72
+ `;
73
+
74
+ function WrapFilterList(props) {
75
+ const { filterLabel } = useDatatableContext();
76
+ const hasFilter = !!props.filterList.filter((e) => e.length).length;
77
+ if (hasFilter) {
78
+ return (
79
+ <FilterLine>
80
+ {hasFilter && <div className="toolbar-filter-title">{filterLabel}</div>}
81
+ <div className="toolbar-filter-content">
82
+ <TableFilterList {...props} />
83
+ </div>
84
+ </FilterLine>
85
+ );
86
+ }
87
+ return '';
88
+ }
89
+
90
+ WrapFilterList.propTypes = {
91
+ filterList: PropTypes.array,
92
+ };
93
+
94
+ WrapFilterList.defaultProps = {
95
+ filterList: [],
96
+ };
97
+
98
+ function WrapTableFooter(props) {
99
+ const { loading, disabled } = useDatatableContext();
100
+
101
+ return (
102
+ <FooterContainer>
103
+ <div className={`datatable-footer ${loading || disabled ? 'datatable-footer-disabled' : ''}`}>
104
+ <TableFooter {...props} />
105
+ </div>
106
+ </FooterContainer>
107
+ );
108
+ }
109
+
110
+ export const getDurableData = (key) => {
111
+ const durableKey = `datatable-durable-${key}`;
112
+ let localData = localStorage[durableKey];
113
+ if (localData) {
114
+ try {
115
+ localData = JSON.parse(localData);
116
+ } catch (err) {
117
+ console.error(`parse durable data error (key:${key}) => `, err);
118
+ }
119
+ }
120
+ return localData || {};
121
+ };
122
+
62
123
  /**
63
124
  * @description
64
125
  * @export
@@ -386,19 +447,6 @@ ReDataTable.defaultProps = {
386
447
  durableKeys: ['page', 'rowsPerPage', 'searchText', 'sortOrder'],
387
448
  };
388
449
 
389
- export const getDurableData = (key) => {
390
- const durableKey = `datatable-durable-${key}`;
391
- let localData = localStorage[durableKey];
392
- if (localData) {
393
- try {
394
- localData = JSON.parse(localData);
395
- } catch (err) {
396
- console.error(`parse durable data error (key:${key}) => `, err);
397
- }
398
- }
399
- return localData || {};
400
- };
401
-
402
450
  const alignCss = css`
403
451
  .MuiTableCell-head {
404
452
  [class*='MUIDataTableHeadCell-toolButton'] {
@@ -526,54 +574,6 @@ const TableContainer = styled('div', { shouldForwardProp: (prop) => prop !== 've
526
574
  }
527
575
  `;
528
576
 
529
- const FilterLine = styled('div')`
530
- display: flex;
531
- align-items: center;
532
- .toolbar-filter-content {
533
- margin-bottom: 8px;
534
- }
535
- .toolbar-filter-title {
536
- font-weight: 700;
537
- font-size: 14px;
538
- }
539
- `;
540
-
541
- function WrapFilterList(props) {
542
- const { filterLabel } = useDatatableContext();
543
- const hasFilter = !!props.filterList.filter((e) => e.length).length;
544
- if (hasFilter) {
545
- return (
546
- <FilterLine>
547
- {hasFilter && <div className="toolbar-filter-title">{filterLabel}</div>}
548
- <div className="toolbar-filter-content">
549
- <TableFilterList {...props} />
550
- </div>
551
- </FilterLine>
552
- );
553
- }
554
- return '';
555
- }
556
-
557
- WrapFilterList.propTypes = {
558
- filterList: PropTypes.array,
559
- };
560
-
561
- WrapFilterList.defaultProps = {
562
- filterList: [],
563
- };
564
-
565
- function WrapTableFooter(props) {
566
- const { loading, disabled } = useDatatableContext();
567
-
568
- return (
569
- <FooterContainer>
570
- <div className={`datatable-footer ${loading || disabled ? 'datatable-footer-disabled' : ''}`}>
571
- <TableFooter {...props} />
572
- </div>
573
- </FooterContainer>
574
- );
575
- }
576
-
577
577
  const FooterContainer = styled('div')`
578
578
  display: flex;
579
579
  align-items: center;
@@ -3,11 +3,11 @@ import type { ReactNode } from 'react';
3
3
  export type OpenConfirmProps = {
4
4
  title: ReactNode;
5
5
  content: ReactNode;
6
- onConfirm: (close: () => void) => void;
7
- onCancel: () => void;
8
- showCancelButton: boolean;
9
- confirmButtonText: string;
10
- cancelButtonText: string;
6
+ onConfirm?: (close: () => void) => void;
7
+ onCancel?: () => void;
8
+ showCancelButton?: boolean;
9
+ confirmButtonText?: string;
10
+ cancelButtonText?: string;
11
11
  };
12
12
 
13
13
  export type UpdateConfirmProps = Partial<Pick<OpenConfirmProps, 'title' | 'content'>>;
@@ -62,17 +62,13 @@ const ConfirmHolder = forwardRef((props, ref) => {
62
62
  state.loading = false;
63
63
  }
64
64
  }, []);
65
- useImperativeHandle(
66
- ref,
67
- () => {
68
- return {
69
- open,
70
- close,
71
- update,
72
- };
73
- },
74
- [open, close, update]
75
- );
65
+ useImperativeHandle(ref, () => {
66
+ return {
67
+ open,
68
+ close,
69
+ update,
70
+ };
71
+ }, [open, close, update]);
76
72
 
77
73
  return (
78
74
  <Confirm
package/src/Icon/image.js CHANGED
@@ -49,6 +49,8 @@ const Div = styled('div')`
49
49
  background-color: #fe4e44;
50
50
  right: -2px;
51
51
  top: 0;
52
- box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.3), 0px 0px 20px rgba(0, 0, 0, 0.1);
52
+ box-shadow:
53
+ 0px 1px 4px rgba(0, 0, 0, 0.3),
54
+ 0px 0px 20px rgba(0, 0, 0, 0.1);
53
55
  }
54
56
  `;
@@ -6,17 +6,9 @@ import clsx from 'clsx';
6
6
  import { styled } from '../../Theme';
7
7
  import { NavLink } from './external-link';
8
8
 
9
- function renderGroup(item, index) {
10
- return (
11
- <li key={`group-${item.title}-${index}`} className="layout-sidebar-group">
12
- <span className="layout-sidebar-group-title">{item.title}</span>
13
- <ul>{item.children.map(renderItem)}</ul>
14
- </li>
15
- );
16
- }
17
-
18
9
  function renderItem(item, index) {
19
10
  if (item.children?.length) {
11
+ // eslint-disable-next-line no-use-before-define
20
12
  return renderGroup(item, index);
21
13
  }
22
14
  const { url, icon, title, showBadge, external, active } = item;
@@ -38,6 +30,15 @@ function renderItem(item, index) {
38
30
  );
39
31
  }
40
32
 
33
+ function renderGroup(item, index) {
34
+ return (
35
+ <li key={`group-${item.title}-${index}`} className="layout-sidebar-group">
36
+ <span className="layout-sidebar-group-title">{item.title}</span>
37
+ <ul>{item.children.map(renderItem)}</ul>
38
+ </li>
39
+ );
40
+ }
41
+
41
42
  function Sidebar({ links, addons, dense, ...rest }) {
42
43
  return (
43
44
  <Root {...rest} className={clsx({ 'layout-sidebar-dense': dense })}>
@@ -105,7 +106,9 @@ const Root = styled('div')`
105
106
  background-color: #fe4e44;
106
107
  right: -2px;
107
108
  top: 0;
108
- box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.3), 0px 0px 20px rgba(0, 0, 0, 0.1);
109
+ box-shadow:
110
+ 0px 1px 4px rgba(0, 0, 0, 0.3),
111
+ 0px 0px 20px rgba(0, 0, 0, 0.1);
109
112
  }
110
113
  }
111
114
  .layout-sidebar-link-text {
@@ -137,7 +137,9 @@ const Div = styled('div', {
137
137
 
138
138
  .locales {
139
139
  background: ${(props) => getBackground(props)};
140
- box-shadow: 0px 8px 16px 0px ${colors.gray6}, 0px 0px 0px 1px ${colors.gray6};
140
+ box-shadow:
141
+ 0px 8px 16px 0px ${colors.gray6},
142
+ 0px 0px 0px 1px ${colors.gray6};
141
143
  border-radius: 8px;
142
144
  }
143
145
 
@@ -46,7 +46,10 @@ const Root = styled(Box)`
46
46
  font-size: 13px;
47
47
  color: #9aa3b0;
48
48
  text-align: center;
49
- text-shadow: 0 0 2px #fff, 0 0 2px #fff, 0 0 2px #fff;
49
+ text-shadow:
50
+ 0 0 2px #fff,
51
+ 0 0 2px #fff,
52
+ 0 0 2px #fff;
50
53
  user-select: none;
51
54
  }
52
55
  `;
@@ -23,6 +23,7 @@ const NavMenuContext = createContext();
23
23
  // 过滤 children 中的 Item/Sub, 忽略其它类型的 element
24
24
  function filterItems(children) {
25
25
  if (children) {
26
+ // eslint-disable-next-line no-use-before-define
26
27
  return Children.toArray(children).filter((child) => child.type === Item || child.type === Sub);
27
28
  }
28
29
  return null;
package/src/Util/index.js CHANGED
@@ -114,7 +114,9 @@ export function mergeProps(props, component, jsonAttrs = []) {
114
114
 
115
115
  export function getCopyright(startYear = 2017) {
116
116
  const currentYear = new Date().getFullYear();
117
- return `${currentYear}` === `${startYear}` ? `© ArcBlock ${currentYear}` : `© ArcBlock ${startYear} - ${currentYear}`;
117
+ return `${currentYear}` === `${startYear}`
118
+ ? `© ArcBlock ${currentYear}`
119
+ : `© ArcBlock ${startYear} - ${currentYear}`;
118
120
  }
119
121
 
120
122
  export const getTimezone = () => {