@jiaozhiye/qm-design-react 1.11.17 → 1.11.18

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.
@@ -18,6 +18,7 @@ export type ITableContext = {
18
18
  sorter: ITableState['sorter'];
19
19
  filters: ITableState['filters'];
20
20
  superFilters: ITableState['superFilters'];
21
+ activedCell: ITableState['activedCell'];
21
22
  mergedTdCells: IMergedCell[];
22
23
  derivedMergeCells: IMergeCellItem[];
23
24
  layout: ITableState['layout'];
@@ -56,6 +57,7 @@ export type ITableContext = {
56
57
  setSelectionRows: (records: IRecord[]) => void;
57
58
  setSelectionKeysEffect: (rowKeys: IRowKey[]) => void;
58
59
  setInvalidRowKeys: (rowKeys: IRowKey[]) => void;
60
+ setActivedCell: (value: ITableState['activedCell']) => void;
59
61
  setMergedCells: (options: IMergedCell[]) => void;
60
62
  getSpan: (row: IRecord, column: IColumn, rowIndex: number, columnIndex: number, tableData: IRecord[]) => IRowColSpan;
61
63
  getStickyLeft: (dataIndex: string, part?: string) => number;
@@ -67,7 +69,6 @@ export type ITableContext = {
67
69
  setPingRight: (value: boolean) => void;
68
70
  setSpinning: (value: boolean) => void;
69
71
  setFullScreen: (value: boolean) => void;
70
- setShouldToTop: (value: boolean) => void;
71
72
  doFieldValidate: (rules: IRule[], val: unknown, rowKey: IRowKey, columnKey: string, columnTitle: string) => void;
72
73
  createTableData: (list: IRecord[]) => void;
73
74
  createGroupData: (records: IRecord[]) => IRecord[];
@@ -22,7 +22,6 @@ type IExtra = {
22
22
  isFullScreen: boolean;
23
23
  setLayout: <T extends ITableState['layout']>(layout: T | ((prev: T) => T)) => void;
24
24
  setElementStore: (key: string, value: HTMLElement) => void;
25
- setShouldToTop: (value: boolean) => void;
26
25
  };
27
26
  declare const useTableLayout: <T extends ITableProps>(props: T, extra: IExtra) => {
28
27
  createElementStore: () => void;
@@ -35,7 +35,6 @@ export type ITableRef = {
35
35
  isTreeTable: boolean;
36
36
  scrollXLoad: boolean;
37
37
  scrollYLoad: boolean;
38
- shouldToTop: boolean;
39
38
  selectionRows: IRecord[];
40
39
  recordsMap: Map<IRowKey, IRecord>;
41
40
  unMounted: boolean;
@@ -60,7 +59,6 @@ declare const useTableRef: <T extends ITableProps>(props: T, { getRowKey, $size
60
59
  setSummaries: (option: ITableRef['summaries']) => void;
61
60
  setScrollXLoad: (value: boolean) => void;
62
61
  setScrollYLoad: (value: boolean) => void;
63
- setShouldToTop: (value: boolean) => void;
64
62
  setSelectionRows: (selectKeys: IRecord[]) => void;
65
63
  setRecordsMap: (key: IRowKey, value: IRecord) => void;
66
64
  setUnMounted: (value: boolean) => void;
@@ -96,7 +94,6 @@ declare const useTableRef: <T extends ITableProps>(props: T, { getRowKey, $size
96
94
  isTreeTable: boolean;
97
95
  scrollXLoad: boolean;
98
96
  scrollYLoad: boolean;
99
- shouldToTop: boolean;
100
97
  selectionRows: IRecord[];
101
98
  recordsMap: Map<IRowKey, IRecord>;
102
99
  unMounted: boolean;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { IFilter, IMergedCell, IPagination, IRecord, IRowKey, ISorter, ISuperFilter, ITableProps } from '../table/types';
2
+ import type { IFilter, IMergedCell, IPagination, IRecord, IRowKey, ISearchResult, ISorter, ISuperFilter, ITableProps } from '../table/types';
3
3
  export type ITableState = {
4
4
  tableFlatData: IRecord[];
5
5
  filters: IFilter;
@@ -10,6 +10,7 @@ export type ITableState = {
10
10
  rowExpandedKeys: IRowKey[];
11
11
  highlightKey: IRowKey;
12
12
  updateMark: number;
13
+ activedCell: Partial<ISearchResult>;
13
14
  mergedTdCells: IMergedCell[];
14
15
  layout: {
15
16
  gutterWidth: number;
@@ -51,6 +52,8 @@ declare const useTableState: <T extends ITableProps>(props: T) => {
51
52
  setHighlightKey: React.Dispatch<React.SetStateAction<string | number>>;
52
53
  updateMark: number;
53
54
  forceUpdate: React.DispatchWithoutAction;
55
+ activedCell: Partial<ISearchResult>;
56
+ setActivedCell: React.Dispatch<Partial<ISearchResult>>;
54
57
  mergedTdCells: IMergedCell[];
55
58
  setMergedCells: (updater: IMergedCell[] | ((origin: IMergedCell[]) => IMergedCell[])) => void;
56
59
  layout: {
@@ -82,6 +82,13 @@ export type ISorter = {
82
82
  export type ISummaries = {
83
83
  [key: string]: number;
84
84
  };
85
+ export type ISearchResult = {
86
+ value: string;
87
+ rowKey: IRowKey;
88
+ dataIndex: string;
89
+ rowIndex: number;
90
+ colIndex: number;
91
+ };
85
92
  export type ISuperFilter = {
86
93
  type: string;
87
94
  bracketLeft: string;
@@ -1,108 +1,150 @@
1
- /*
2
- * @Author: 焦质晔
3
- * @Date: 2022-03-16 19:05:30
4
- * @Last Modified by: 焦质晔
5
- * @Last Modified time: 2022-11-26 21:11:04
6
- */
7
- .@{prefix-table}-fast-search {
8
- display: inline-block;
9
- padding: 5px 3px;
10
- line-height: 1;
11
- cursor: pointer;
12
- transition: all 0.3s ease;
13
- .icon {
14
- font-size: 1.05em;
15
- }
16
- &:hover {
17
- color: @v-primary-color;
18
- }
19
- }
20
-
21
- .@{prefix-table}-fast-search__setting {
22
- height: 100%;
23
- .main {
24
- display: flex;
25
- flex-direction: column;
26
- height: 100%;
27
- .top {
28
- display: flex;
29
- flex: 1;
30
- height: 0;
31
- overflow-y: auto;
32
- .container {
33
- flex: 1;
34
- width: 0;
35
- .@{qm-prefix}-tabs {
36
- margin-top: -5px;
37
- }
38
- }
39
- .saved {
40
- width: 200px;
41
- .form-wrap {
42
- display: flex;
43
- }
44
- .card-wrap {
45
- margin-top: @v-module-distance;
46
- border: 1px solid @v-table-border-color;
47
- > h5 {
48
- display: flex;
49
- align-items: center;
50
- font-size: inherit;
51
- font-weight: normal;
52
- margin-bottom: 0;
53
- padding: 0 @v-module-distance;
54
- border-bottom: 1px solid @v-table-border-color;
55
- background-color: @v-table-header-background-color;
56
- }
57
- > ul {
58
- margin-bottom: 0;
59
- li {
60
- display: flex;
61
- align-items: center;
62
- position: relative;
63
- padding: 6px @v-module-distance;
64
- border-bottom: 1px solid @v-table-border-color;
65
- cursor: pointer;
66
- transition: all 0.3s ease;
67
- &:last-of-type {
68
- border-bottom: 0;
69
- }
70
- &:hover {
71
- background-color: @v-table-row-hover-background-color;
72
- .close {
73
- visibility: visible;
74
- }
75
- }
76
- &.selected {
77
- background-color: @v-table-row-selected-background-color;
78
- }
79
- .title {
80
- i {
81
- margin-right: 5px;
82
- }
83
- }
84
- .close {
85
- position: absolute;
86
- right: @v-module-distance;
87
- visibility: hidden;
88
- }
89
- }
90
- }
91
- }
92
- }
93
- .line {
94
- border-left: 1px dashed @--border-color-base;
95
- padding-left: @v-module-distance;
96
- margin-left: @v-module-distance;
97
- }
98
- }
99
- .bottom {
100
- display: flex;
101
- justify-content: space-between;
102
- align-items: center;
103
- padding: 10px 5px;
104
- margin-top: 10px;
105
- border-top: 1px dashed @--border-color-base;
106
- }
107
- }
108
- }
1
+ /*
2
+ * @Author: 焦质晔
3
+ * @Date: 2022-03-16 19:05:30
4
+ * @Last Modified by: 焦质晔
5
+ * @Last Modified time: 2022-11-26 21:11:04
6
+ */
7
+ .@{prefix-table}-fast-search {
8
+ display: inline-block;
9
+ padding: 5px 3px;
10
+ line-height: 1;
11
+ cursor: pointer;
12
+ transition: all 0.3s ease;
13
+ .icon {
14
+ font-size: 1.05em;
15
+ }
16
+ &:hover {
17
+ color: @v-primary-color;
18
+ }
19
+ }
20
+
21
+ .@{prefix-table}-fast-search__setting {
22
+ height: 100%;
23
+ .main {
24
+ display: flex;
25
+ flex-direction: row;
26
+ height: 100%;
27
+ .container {
28
+ flex: 1;
29
+ min-width: 0;
30
+ display: flex;
31
+ flex-direction: column;
32
+ .search-box {
33
+ display: flex;
34
+ align-items: center;
35
+ .label {
36
+ width: 100px;
37
+ }
38
+ }
39
+ .condition {
40
+ margin-top: @v-module-distance;
41
+ margin-bottom: @v-module-distance;
42
+ }
43
+ .all-list {
44
+ flex: 1 0;
45
+ min-height: 0;
46
+ overflow-y: auto;
47
+ .rtable {
48
+ width: 100%;
49
+ border: 1px solid @v-table-border-color;
50
+ thead {
51
+ position: sticky;
52
+ top: 0;
53
+ th {
54
+ background-color: @v-table-header-background-color;
55
+ height: 30px;
56
+ text-align: center;
57
+ }
58
+ }
59
+ tbody {
60
+ tr {
61
+ &.active {
62
+ td {
63
+ background-color: @--primary-1;
64
+ color: @v-primary-color;
65
+ }
66
+ }
67
+ &:hover {
68
+ td {
69
+ text-decoration: underline;
70
+ }
71
+ }
72
+ td {
73
+ height: 30px;
74
+ text-align: center;
75
+ border-top: 1px solid @v-table-border-color;
76
+ cursor: pointer;
77
+ .text-overflow-cut();
78
+ max-width: 0;
79
+ }
80
+ }
81
+ }
82
+ }
83
+ }
84
+ }
85
+ .saved {
86
+ width: 240px;
87
+ .form-wrap {
88
+ display: flex;
89
+ }
90
+ .card-wrap {
91
+ margin-top: @v-module-distance;
92
+ border: 1px solid @v-table-border-color;
93
+ > h5 {
94
+ display: flex;
95
+ align-items: center;
96
+ font-size: inherit;
97
+ font-weight: normal;
98
+ margin-bottom: 0;
99
+ padding: 0 @v-module-distance;
100
+ border-bottom: 1px solid @v-table-border-color;
101
+ background-color: @v-table-header-background-color;
102
+ }
103
+ > ul {
104
+ margin-bottom: 0;
105
+ li {
106
+ display: flex;
107
+ align-items: center;
108
+ position: relative;
109
+ padding: 6px @v-module-distance;
110
+ border-bottom: 1px solid @v-table-border-color;
111
+ cursor: pointer;
112
+ transition: all 0.3s ease;
113
+ &:last-of-type {
114
+ border-bottom: 0;
115
+ }
116
+ &:hover {
117
+ background-color: @v-table-row-hover-background-color;
118
+ .close {
119
+ visibility: visible;
120
+ }
121
+ }
122
+ &.selected {
123
+ background-color: @v-table-row-selected-background-color;
124
+ }
125
+ .title {
126
+ i {
127
+ margin-right: 5px;
128
+ }
129
+ }
130
+ .close {
131
+ position: absolute;
132
+ right: @v-module-distance;
133
+ visibility: hidden;
134
+ }
135
+ }
136
+ }
137
+ }
138
+ }
139
+ .line {
140
+ border-left: 1px dashed @--border-color-base;
141
+ padding-left: @v-module-distance;
142
+ margin-left: @v-module-distance;
143
+ }
144
+ }
145
+ .bottom-bar {
146
+ display: flex;
147
+ justify-content: space-between;
148
+ align-items: center;
149
+ }
150
+ }
@@ -67,7 +67,6 @@
67
67
  overflow-y: auto;
68
68
  overflow-x: auto;
69
69
  .virtual-container {
70
- contain: paint;
71
70
  will-change: margin-top, margin-left;
72
71
  }
73
72
  }
@@ -147,6 +146,14 @@
147
146
  position: relative;
148
147
  text-align: left;
149
148
  // line-height: @v-table-row-line-height;
149
+ /* 溢出列 */
150
+ &.col--ellipsis {
151
+ .cell {
152
+ .text-overflow-cut();
153
+ word-break: break-all;
154
+ white-space: pre;
155
+ }
156
+ }
150
157
  &:not(.col--ellipsis) {
151
158
  padding: ceil(((@v-table-row-height - @v-table-row-line-height) / 2)) 0;
152
159
  .cell {
@@ -159,6 +166,10 @@
159
166
  &.col--right:not(.header--column) {
160
167
  text-align: right;
161
168
  }
169
+ &.col-active {
170
+ box-shadow: inset 0 0 0 2px @v-primary-color;
171
+ background-color: @v-table-row-active-color !important;
172
+ }
162
173
  .cell {
163
174
  white-space: pre-wrap;
164
175
  word-break: break-all;
@@ -357,19 +368,6 @@
357
368
  }
358
369
  }
359
370
 
360
- /* 溢出列 */
361
- .header--column,
362
- .body--column,
363
- .footer--column {
364
- &.col--ellipsis {
365
- .cell {
366
- .text-overflow-cut();
367
- word-break: break-all;
368
- white-space: pre;
369
- }
370
- }
371
- }
372
-
373
371
  /* 弹出层 */
374
372
  &__popper {
375
373
  padding: @v-module-distance;
@@ -1,50 +1,51 @@
1
- /*
2
- * @Author: 焦质晔
3
- * @Date: 2020-02-28 21:58:58
4
- * @Last Modified by: 焦质晔
5
- * @Last Modified time: 2021-09-04 16:24:06
6
- */
7
- @prefix-table: ~'@{qm-prefix}-table';
8
-
9
- /* font-size */
10
- @v-font-size: @--font-size-base;
11
- @v-font-size-large: @--font-size-base;
12
- @v-font-size-small: @--font-size-sm;
13
-
14
- @v-font-color: @--text-color;
15
- @v-font-color-secondary: @--text-color-secondary;
16
- @v-font-color-placeholder: @--text-color-placeholder;
17
- @v-font-disabled-color: @--disabled-color;
18
-
19
- /* primary color */
20
- @v-primary-color: @--primary-color;
21
- @v-danger-color: @--error-color;
22
-
23
- // module distance
24
- @v-module-distance: @--padding-md;
25
-
26
- /* border radius */
27
- @v-border-radius: @--border-radius-base;
28
-
29
- /* icon */
30
- @v-icon-color: #bfbfbf;
31
-
32
- /* table color */
33
- @v-table-header-background-color: #fafafa;
34
- @v-table-border-color: #e8e8e8;
35
- @v-table-resizable-color: #d9d9d9;
36
- @v-table-background-color: #ffffff;
37
- @v-table-footer-background-color: #fafafa;
38
- @v-table-column-sort-hover-color: #f2f2f2;
39
- @v-table-column-sorted-color: #f5f5f5;
40
- @v-table-column-filter-hover-color: #e5e5e5;
41
-
42
- /* table row */
43
- @v-table-row-height: 34px;
44
- @v-table-row-height-large: 42px;
45
- @v-table-row-height-small: 26px;
46
- @v-table-row-line-height: 24px;
47
- @v-table-row-hover-background-color: #f5f5f5;
48
- @v-table-row-selected-background-color: @--primary-2;
49
- @v-table-row-current-background-color: @--primary-4;
50
- @v-table-row-expanded-background-color: #fafafa;
1
+ /*
2
+ * @Author: 焦质晔
3
+ * @Date: 2020-02-28 21:58:58
4
+ * @Last Modified by: 焦质晔
5
+ * @Last Modified time: 2021-09-04 16:24:06
6
+ */
7
+ @prefix-table: ~'@{qm-prefix}-table';
8
+
9
+ /* font-size */
10
+ @v-font-size: @--font-size-base;
11
+ @v-font-size-large: @--font-size-base;
12
+ @v-font-size-small: @--font-size-sm;
13
+
14
+ @v-font-color: @--text-color;
15
+ @v-font-color-secondary: @--text-color-secondary;
16
+ @v-font-color-placeholder: @--text-color-placeholder;
17
+ @v-font-disabled-color: @--disabled-color;
18
+
19
+ /* primary color */
20
+ @v-primary-color: @--primary-color;
21
+ @v-danger-color: @--error-color;
22
+
23
+ // module distance
24
+ @v-module-distance: @--padding-md;
25
+
26
+ /* border radius */
27
+ @v-border-radius: @--border-radius-base;
28
+
29
+ /* icon */
30
+ @v-icon-color: #bfbfbf;
31
+
32
+ /* table color */
33
+ @v-table-header-background-color: #fafafa;
34
+ @v-table-border-color: #e8e8e8;
35
+ @v-table-resizable-color: #d9d9d9;
36
+ @v-table-background-color: #ffffff;
37
+ @v-table-footer-background-color: #fafafa;
38
+ @v-table-column-sort-hover-color: #f2f2f2;
39
+ @v-table-column-sorted-color: #f5f5f5;
40
+ @v-table-column-filter-hover-color: #e5e5e5;
41
+
42
+ /* table row */
43
+ @v-table-row-height: 34px;
44
+ @v-table-row-height-large: 42px;
45
+ @v-table-row-height-small: 26px;
46
+ @v-table-row-line-height: 24px;
47
+ @v-table-row-hover-background-color: #f5f5f5;
48
+ @v-table-row-selected-background-color: @--primary-2;
49
+ @v-table-row-current-background-color: @--primary-4;
50
+ @v-table-row-expanded-background-color: #fafafa;
51
+ @v-table-row-active-color: rgba(250, 173, 20, 0.3);
@@ -13,7 +13,6 @@
13
13
  .container {
14
14
  display: block;
15
15
  ul {
16
- contain: paint;
17
16
  will-change: transform;
18
17
  li.list-item {
19
18
  list-style: none;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jiaozhiye/qm-design-react",
3
- "version": "1.11.17",
3
+ "version": "1.11.18",
4
4
  "description": "A Component Library for React",
5
5
  "keywords": [
6
6
  "React",