@agile-team/wl-skills-kit 2.3.4 → 2.3.5

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.
Files changed (90) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +13 -7
  3. package/files/.cursor/mcp.json +8 -8
  4. package/files/.github/guides/README.md +13 -13
  5. package/files/.github/guides/architecture.md +555 -555
  6. package/files/.github/guides/mcp-setup.md +109 -109
  7. package/files/.github/guides/usage.md +184 -184
  8. package/files/.github/reports/README.md +65 -65
  9. package/files/.github/reports/SYS_DICT_INFO.md +50 -50
  10. package/files/.github/reports/SYS_MENU_INFO.md +247 -247
  11. package/files/.github/reports/SYS_PERMISSION_INFO.md +20 -20
  12. package/files/.github/reports//347/273/204/344/273/266/346/217/220/345/217/226/345/273/272/350/256/256.md +33 -33
  13. package/files/.github/reports//350/247/204/350/214/203/345/256/241/346/237/245/346/212/245/345/221/212.md +44 -44
  14. package/files/.github/skills/_compat/README.md +108 -108
  15. package/files/.github/skills/_compat/headers/agents.txt +8 -8
  16. package/files/.github/skills/_compat/headers/claude-code.txt +7 -7
  17. package/files/.github/skills/_compat/headers/cline.txt +7 -7
  18. package/files/.github/skills/_compat/headers/cursor-mdc.txt +16 -16
  19. package/files/.github/skills/_compat/headers/cursor-rules.txt +7 -7
  20. package/files/.github/skills/_compat/headers/github-copilot.txt +1 -1
  21. package/files/.github/skills/_compat/headers/kiro.txt +10 -10
  22. package/files/.github/skills/_compat/headers/qoder.txt +8 -8
  23. package/files/.github/skills/_compat/headers/trae.txt +11 -11
  24. package/files/.github/skills/_compat/headers/windsurf.txt +7 -7
  25. package/files/.github/skills/_registry.md +81 -81
  26. package/files/.github/skills/core/api-contract/SKILL.md +344 -344
  27. package/files/.github/skills/core/api-contract/USAGE.md +110 -110
  28. package/files/.github/skills/core/convention-audit/SKILL.md +189 -189
  29. package/files/.github/skills/core/convention-audit/USAGE.md +99 -99
  30. package/files/.github/skills/core/page-codegen/SKILL.md +973 -973
  31. package/files/.github/skills/core/page-codegen/USAGE.md +102 -102
  32. package/files/.github/skills/core/page-codegen/templates/_index.md +46 -46
  33. package/files/.github/skills/core/page-codegen/templates/domains/_CONTRIBUTING.md +107 -107
  34. package/files/.github/skills/core/page-codegen/templates/domains/produce/TPL-OPERATION-STATION.md +442 -442
  35. package/files/.github/skills/core/page-codegen/templates/domains/sale/README.md +26 -26
  36. package/files/.github/skills/core/page-codegen/templates/universal/TPL-CHANGE-HISTORY.md +276 -276
  37. package/files/.github/skills/core/page-codegen/templates/universal/TPL-DETAIL-TABS.md +1145 -1145
  38. package/files/.github/skills/core/page-codegen/templates/universal/TPL-DRIVEN.md +309 -309
  39. package/files/.github/skills/core/page-codegen/templates/universal/TPL-FORM-ROUTE.md +436 -436
  40. package/files/.github/skills/core/page-codegen/templates/universal/TPL-LIST.md +191 -191
  41. package/files/.github/skills/core/page-codegen/templates/universal/TPL-MASTER-DETAIL.md +148 -148
  42. package/files/.github/skills/core/page-codegen/templates/universal/TPL-RECORD-FORM.md +376 -376
  43. package/files/.github/skills/core/page-codegen/templates/universal/TPL-TREE-LIST.md +186 -186
  44. package/files/.github/skills/core/prototype-scan/SKILL.md +498 -498
  45. package/files/.github/skills/core/prototype-scan/USAGE.md +95 -95
  46. package/files/.github/skills/core/template-extract/SKILL.md +139 -139
  47. package/files/.github/skills/core/template-extract/USAGE.md +93 -93
  48. package/files/.github/skills/domain/README.md +51 -51
  49. package/files/.github/skills/sync/menu-sync/SKILL.md +263 -263
  50. package/files/.github/skills/sync/menu-sync/USAGE.md +104 -104
  51. package/files/.github/skills/sync/menu-sync/env/env.local.json +7 -7
  52. package/files/.github/skills/sync/menu-sync/env/guide.md +99 -99
  53. package/files/.github/skills/sync/permission-sync/SKILL.draft.md +91 -91
  54. package/files/.github/standards/01-toolchain.md +57 -57
  55. package/files/.github/standards/02-code-structure.md +111 -111
  56. package/files/.github/standards/03-comments.md +53 -53
  57. package/files/.github/standards/04-coding-basics.md +33 -33
  58. package/files/.github/standards/05-logging.md +38 -38
  59. package/files/.github/standards/06-security.md +44 -44
  60. package/files/.github/standards/07-config.md +52 -52
  61. package/files/.github/standards/08-git.md +60 -60
  62. package/files/.github/standards/09-typescript.md +71 -71
  63. package/files/.github/standards/10-pinia.md +57 -57
  64. package/files/.github/standards/11-form-validation.md +81 -81
  65. package/files/.github/standards/12-base-table.md +153 -153
  66. package/files/.github/standards/13-platform-components.md +123 -123
  67. package/files/.github/standards/index.md +89 -89
  68. package/files/.kiro/settings/mcp.json +8 -8
  69. package/files/.mcp.json +8 -8
  70. package/files/.vscode/mcp.json +9 -9
  71. package/files/demo/produce/aiflow/mmwr-customer-apply-change-history/data.ts +196 -196
  72. package/files/demo/produce/aiflow/mmwr-customer-apply-change-history/index.scss +150 -150
  73. package/files/demo/produce/aiflow/mmwr-customer-apply-change-history/index.vue +79 -79
  74. package/files/docs/jh-date-range.md +257 -257
  75. package/files/docs/jh-date.md +222 -222
  76. package/files/docs/jh-dept-picker.md +190 -190
  77. package/files/docs/jh-drag-row.md +590 -590
  78. package/files/docs/jh-file-upload.md +216 -216
  79. package/files/docs/jh-picker.md +218 -218
  80. package/files/docs/jh-select.md +148 -148
  81. package/files/docs/jh-text.md +248 -248
  82. package/files/docs/jh-user-picker.md +197 -197
  83. package/files/src/components/global/C_RightToolbar/data.ts +228 -228
  84. package/files/src/components/global/C_RightToolbar/index.scss +44 -44
  85. package/files/src/components/global/C_Splitter/index.scss +61 -61
  86. package/files/src/components/global/C_SvgIcon/index.scss +15 -15
  87. package/files/src/components/global/C_TagStatus/index.scss +20 -20
  88. package/files/src/components/global/C_Tree/data.ts +61 -61
  89. package/files/src/components/local/c_listModal/index.scss +4 -4
  90. package/package.json +1 -1
@@ -1,228 +1,228 @@
1
- import { ref, computed, watch, nextTick } from "vue";
2
- import { postAction, getAction } from "@jhlc/common-core/src/api/action";
3
- import Sortable from "sortablejs";
4
- import { deepClone } from "@/util";
5
- import { useI18n } from "vue-i18n";
6
-
7
- // ===== 类型定义 =====
8
- export interface RightToolbarProps {
9
- proVisible?: boolean;
10
- showSearch?: boolean;
11
- columns?: any[];
12
- tableId?: string;
13
- initialColumns?: any[];
14
- id?: string;
15
- propsValue?: any[];
16
- disabled?: boolean;
17
- showRefreshTool?: boolean;
18
- showSearchTool?: boolean;
19
- showColumnTool?: boolean;
20
- }
21
-
22
- // ===== 组件逻辑 =====
23
- export function createRightToolbar(
24
- props: RightToolbarProps,
25
- emits: (event: string, ...args: any[]) => void,
26
- ) {
27
- const { t } = useI18n();
28
-
29
- const transferRef = ref<any>(null);
30
- const data = ref<any[]>([]);
31
- const title = ref(t("设置显示字段"));
32
- const open = ref(false);
33
- const showFields = ref("");
34
- const hideFields = ref("");
35
- const defaultColumns = ref<any[]>([]);
36
- const columnId = ref("");
37
- const emitTemp = ref<any[]>([]);
38
- const submitLoading = ref(false);
39
-
40
- const modelValue = ref<any[]>([]);
41
- watch(
42
- () => props.propsValue,
43
- (newVal) => {
44
- modelValue.value = newVal ?? [];
45
- },
46
- { immediate: true },
47
- );
48
-
49
- const columnsProp = computed(() => props.columns);
50
- const showSearchProp = computed(() => props.showSearch);
51
-
52
- const temp = computed(() => data.value.filter((item) => item.visible));
53
-
54
- // 搜索
55
- function toggleSearch() {
56
- emits("update:showSearch", !props.showSearch);
57
- }
58
-
59
- // 刷新
60
- function refresh() {
61
- emits("queryTable");
62
- }
63
-
64
- // 关闭弹窗
65
- const closeDialog = () => {
66
- initColumns();
67
- };
68
-
69
- // 穿梭变化
70
- function dataChange(val: any[]) {
71
- if (val) {
72
- data.value.forEach((item) => {
73
- const index = val.findIndex((ele) => ele === item.key);
74
- item.visible = index === -1;
75
- });
76
- }
77
- }
78
-
79
- // 打开显隐列dialog
80
- function showColumn() {
81
- open.value = true;
82
- data.value = [];
83
- defaultColumns.value = [];
84
- props.columns?.forEach((item) => {
85
- defaultColumns.value.push(deepClone(item));
86
- data.value.push(deepClone(item));
87
- });
88
- nextTick(() => {
89
- const transfer = transferRef.value.$el;
90
- const leftPanel = transfer
91
- .getElementsByClassName("el-transfer-panel")[0]
92
- .getElementsByClassName("el-transfer-panel__body")[0];
93
- const leftEl = leftPanel.getElementsByClassName(
94
- "el-transfer-panel__list",
95
- )[0];
96
- Sortable.create(leftEl, {
97
- onEnd: (evt: any) => {
98
- const { oldIndex, newIndex } = evt;
99
- const visible = data.value.filter((item) => item.visible);
100
- const [moved] = visible.splice(oldIndex, 1);
101
- visible.splice(newIndex, 0, moved);
102
- const hidden = data.value.filter((item) => !item.visible);
103
- data.value = [...visible, ...hidden];
104
- },
105
- });
106
- });
107
- }
108
-
109
- // 恢复工具
110
- function recoverTool(recoverData: any[]) {
111
- const dataTemp: any[] = [];
112
- const modelValueTemp: any[] = [];
113
- recoverData.forEach((item) => {
114
- dataTemp.push(deepClone(item));
115
- if (!item.visible) modelValueTemp.push(item.key);
116
- });
117
- data.value = dataTemp;
118
- modelValue.value = modelValueTemp;
119
- }
120
-
121
- function initColumns() {
122
- recoverTool(defaultColumns.value);
123
- }
124
-
125
- function clearValue() {
126
- recoverTool(props.initialColumns ?? []);
127
- }
128
-
129
- function cancelBtn() {
130
- initColumns();
131
- open.value = false;
132
- }
133
-
134
- function submitBtn() {
135
- showFields.value = "";
136
- hideFields.value = "";
137
- temp.value.forEach((item) => {
138
- showFields.value += `${item.key},`;
139
- });
140
- hideFields.value = modelValue.value.join();
141
- const paramsList = {
142
- id: columnId.value || props.id,
143
- tableId: props.tableId,
144
- showFields: showFields.value,
145
- hideFields: hideFields.value,
146
- };
147
- submitLoading.value = true;
148
- postAction("system/pageShowFields/saveOrUpdate", paramsList)
149
- .then((res: any) => {
150
- temp.value.forEach((item) => emitTemp.value.push(item));
151
- data.value.forEach((item) => {
152
- if (!item.visible) emitTemp.value.push(item);
153
- });
154
- columnId.value = res.data.id;
155
- emits("update:columns", emitTemp.value);
156
- emits("update:propsValue", modelValue.value);
157
- emitTemp.value = [];
158
- })
159
- .catch(() => initColumns())
160
- .finally(() => {
161
- submitLoading.value = false;
162
- open.value = false;
163
- });
164
- }
165
-
166
- function getColumns(columnsInfo: any) {
167
- const _columnsInfo = deepClone(columnsInfo);
168
- _columnsInfo.propsValue = [];
169
- return getAction(
170
- `/system/pageShowFields/getByTableIdAndUserNo?tableId=${_columnsInfo.tableId}`,
171
- ).then((res: any) => {
172
- if (res.data) {
173
- _columnsInfo.id = res.data.id;
174
- let showArr: string[] | undefined;
175
- if (res.data.showFields) showArr = res.data.showFields.split(",");
176
- let hideArr: string[] | undefined;
177
- if (res.data.hideFields) hideArr = res.data.hideFields.split(",");
178
-
179
- let flag: any[] = [];
180
- if (showArr) {
181
- flag = showArr.reduce((acc: any[], key: string) => {
182
- const value = _columnsInfo.columns.find((v: any) => v.key === key);
183
- if (value) acc.push(value);
184
- return acc;
185
- }, []);
186
- }
187
- const result: any[] = [...new Set(flag.concat(_columnsInfo.columns))];
188
- _columnsInfo.columns = result;
189
-
190
- _columnsInfo.columns.forEach((item: any) => {
191
- if (showArr) {
192
- item.visible = showArr.includes(item.key) ? true : item.visible;
193
- }
194
- if (hideArr) {
195
- item.visible = hideArr.includes(item.key) ? false : item.visible;
196
- }
197
- });
198
-
199
- if (hideArr) {
200
- hideArr.forEach((item: string) => _columnsInfo.propsValue.push(item));
201
- }
202
- return _columnsInfo;
203
- }
204
- });
205
- }
206
-
207
- return {
208
- transferRef,
209
- data,
210
- title,
211
- open,
212
- modelValue,
213
- columnsProp,
214
- showSearchProp,
215
- temp,
216
- submitLoading,
217
- toggleSearch,
218
- refresh,
219
- closeDialog,
220
- dataChange,
221
- showColumn,
222
- initColumns,
223
- clearValue,
224
- cancelBtn,
225
- submitBtn,
226
- getColumns,
227
- };
228
- }
1
+ import { ref, computed, watch, nextTick } from "vue";
2
+ import { postAction, getAction } from "@jhlc/common-core/src/api/action";
3
+ import Sortable from "sortablejs";
4
+ import { deepClone } from "@/util";
5
+ import { useI18n } from "vue-i18n";
6
+
7
+ // ===== 类型定义 =====
8
+ export interface RightToolbarProps {
9
+ proVisible?: boolean;
10
+ showSearch?: boolean;
11
+ columns?: any[];
12
+ tableId?: string;
13
+ initialColumns?: any[];
14
+ id?: string;
15
+ propsValue?: any[];
16
+ disabled?: boolean;
17
+ showRefreshTool?: boolean;
18
+ showSearchTool?: boolean;
19
+ showColumnTool?: boolean;
20
+ }
21
+
22
+ // ===== 组件逻辑 =====
23
+ export function createRightToolbar(
24
+ props: RightToolbarProps,
25
+ emits: (event: string, ...args: any[]) => void,
26
+ ) {
27
+ const { t } = useI18n();
28
+
29
+ const transferRef = ref<any>(null);
30
+ const data = ref<any[]>([]);
31
+ const title = ref(t("设置显示字段"));
32
+ const open = ref(false);
33
+ const showFields = ref("");
34
+ const hideFields = ref("");
35
+ const defaultColumns = ref<any[]>([]);
36
+ const columnId = ref("");
37
+ const emitTemp = ref<any[]>([]);
38
+ const submitLoading = ref(false);
39
+
40
+ const modelValue = ref<any[]>([]);
41
+ watch(
42
+ () => props.propsValue,
43
+ (newVal) => {
44
+ modelValue.value = newVal ?? [];
45
+ },
46
+ { immediate: true },
47
+ );
48
+
49
+ const columnsProp = computed(() => props.columns);
50
+ const showSearchProp = computed(() => props.showSearch);
51
+
52
+ const temp = computed(() => data.value.filter((item) => item.visible));
53
+
54
+ // 搜索
55
+ function toggleSearch() {
56
+ emits("update:showSearch", !props.showSearch);
57
+ }
58
+
59
+ // 刷新
60
+ function refresh() {
61
+ emits("queryTable");
62
+ }
63
+
64
+ // 关闭弹窗
65
+ const closeDialog = () => {
66
+ initColumns();
67
+ };
68
+
69
+ // 穿梭变化
70
+ function dataChange(val: any[]) {
71
+ if (val) {
72
+ data.value.forEach((item) => {
73
+ const index = val.findIndex((ele) => ele === item.key);
74
+ item.visible = index === -1;
75
+ });
76
+ }
77
+ }
78
+
79
+ // 打开显隐列dialog
80
+ function showColumn() {
81
+ open.value = true;
82
+ data.value = [];
83
+ defaultColumns.value = [];
84
+ props.columns?.forEach((item) => {
85
+ defaultColumns.value.push(deepClone(item));
86
+ data.value.push(deepClone(item));
87
+ });
88
+ nextTick(() => {
89
+ const transfer = transferRef.value.$el;
90
+ const leftPanel = transfer
91
+ .getElementsByClassName("el-transfer-panel")[0]
92
+ .getElementsByClassName("el-transfer-panel__body")[0];
93
+ const leftEl = leftPanel.getElementsByClassName(
94
+ "el-transfer-panel__list",
95
+ )[0];
96
+ Sortable.create(leftEl, {
97
+ onEnd: (evt: any) => {
98
+ const { oldIndex, newIndex } = evt;
99
+ const visible = data.value.filter((item) => item.visible);
100
+ const [moved] = visible.splice(oldIndex, 1);
101
+ visible.splice(newIndex, 0, moved);
102
+ const hidden = data.value.filter((item) => !item.visible);
103
+ data.value = [...visible, ...hidden];
104
+ },
105
+ });
106
+ });
107
+ }
108
+
109
+ // 恢复工具
110
+ function recoverTool(recoverData: any[]) {
111
+ const dataTemp: any[] = [];
112
+ const modelValueTemp: any[] = [];
113
+ recoverData.forEach((item) => {
114
+ dataTemp.push(deepClone(item));
115
+ if (!item.visible) modelValueTemp.push(item.key);
116
+ });
117
+ data.value = dataTemp;
118
+ modelValue.value = modelValueTemp;
119
+ }
120
+
121
+ function initColumns() {
122
+ recoverTool(defaultColumns.value);
123
+ }
124
+
125
+ function clearValue() {
126
+ recoverTool(props.initialColumns ?? []);
127
+ }
128
+
129
+ function cancelBtn() {
130
+ initColumns();
131
+ open.value = false;
132
+ }
133
+
134
+ function submitBtn() {
135
+ showFields.value = "";
136
+ hideFields.value = "";
137
+ temp.value.forEach((item) => {
138
+ showFields.value += `${item.key},`;
139
+ });
140
+ hideFields.value = modelValue.value.join();
141
+ const paramsList = {
142
+ id: columnId.value || props.id,
143
+ tableId: props.tableId,
144
+ showFields: showFields.value,
145
+ hideFields: hideFields.value,
146
+ };
147
+ submitLoading.value = true;
148
+ postAction("system/pageShowFields/saveOrUpdate", paramsList)
149
+ .then((res: any) => {
150
+ temp.value.forEach((item) => emitTemp.value.push(item));
151
+ data.value.forEach((item) => {
152
+ if (!item.visible) emitTemp.value.push(item);
153
+ });
154
+ columnId.value = res.data.id;
155
+ emits("update:columns", emitTemp.value);
156
+ emits("update:propsValue", modelValue.value);
157
+ emitTemp.value = [];
158
+ })
159
+ .catch(() => initColumns())
160
+ .finally(() => {
161
+ submitLoading.value = false;
162
+ open.value = false;
163
+ });
164
+ }
165
+
166
+ function getColumns(columnsInfo: any) {
167
+ const _columnsInfo = deepClone(columnsInfo);
168
+ _columnsInfo.propsValue = [];
169
+ return getAction(
170
+ `/system/pageShowFields/getByTableIdAndUserNo?tableId=${_columnsInfo.tableId}`,
171
+ ).then((res: any) => {
172
+ if (res.data) {
173
+ _columnsInfo.id = res.data.id;
174
+ let showArr: string[] | undefined;
175
+ if (res.data.showFields) showArr = res.data.showFields.split(",");
176
+ let hideArr: string[] | undefined;
177
+ if (res.data.hideFields) hideArr = res.data.hideFields.split(",");
178
+
179
+ let flag: any[] = [];
180
+ if (showArr) {
181
+ flag = showArr.reduce((acc: any[], key: string) => {
182
+ const value = _columnsInfo.columns.find((v: any) => v.key === key);
183
+ if (value) acc.push(value);
184
+ return acc;
185
+ }, []);
186
+ }
187
+ const result: any[] = [...new Set(flag.concat(_columnsInfo.columns))];
188
+ _columnsInfo.columns = result;
189
+
190
+ _columnsInfo.columns.forEach((item: any) => {
191
+ if (showArr) {
192
+ item.visible = showArr.includes(item.key) ? true : item.visible;
193
+ }
194
+ if (hideArr) {
195
+ item.visible = hideArr.includes(item.key) ? false : item.visible;
196
+ }
197
+ });
198
+
199
+ if (hideArr) {
200
+ hideArr.forEach((item: string) => _columnsInfo.propsValue.push(item));
201
+ }
202
+ return _columnsInfo;
203
+ }
204
+ });
205
+ }
206
+
207
+ return {
208
+ transferRef,
209
+ data,
210
+ title,
211
+ open,
212
+ modelValue,
213
+ columnsProp,
214
+ showSearchProp,
215
+ temp,
216
+ submitLoading,
217
+ toggleSearch,
218
+ refresh,
219
+ closeDialog,
220
+ dataChange,
221
+ showColumn,
222
+ initColumns,
223
+ clearValue,
224
+ cancelBtn,
225
+ submitBtn,
226
+ getColumns,
227
+ };
228
+ }
@@ -1,44 +1,44 @@
1
- :deep(.rightToolBarDialog .el-dialog-body) {
2
- display: flex !important;
3
- justify-content: center !important;
4
- }
5
- :deep(.el-transfer__button) {
6
- display: block;
7
- }
8
-
9
- :deep(.el-transfer__button:first-child) {
10
- margin-bottom: 10px;
11
- }
12
- :deep(.el-transfer__button:nth-child(2)) {
13
- margin-left: 0px !important;
14
- }
15
-
16
- .my-el-transfer {
17
- text-align: center;
18
- }
19
-
20
- :deep(
21
- .el-transfer-panel
22
- .el-transfer-panel__header
23
- .el-checkbox
24
- .el-checkbox__label
25
- span
26
- ) {
27
- position: static;
28
- }
29
-
30
- :deep(.el-transfer-panel__footer button) {
31
- position: absolute;
32
- right: 5px;
33
- top: 12px;
34
- }
35
-
36
- :deep(.el-transfer-panel:first-child .el-checkbox__label) {
37
- cursor: move !important;
38
- }
39
- :deep(.el-transfer-panel) {
40
- width: 40%;
41
- }
42
- :deep(.el-transfer__buttons) {
43
- width: 20%;
44
- }
1
+ :deep(.rightToolBarDialog .el-dialog-body) {
2
+ display: flex !important;
3
+ justify-content: center !important;
4
+ }
5
+ :deep(.el-transfer__button) {
6
+ display: block;
7
+ }
8
+
9
+ :deep(.el-transfer__button:first-child) {
10
+ margin-bottom: 10px;
11
+ }
12
+ :deep(.el-transfer__button:nth-child(2)) {
13
+ margin-left: 0px !important;
14
+ }
15
+
16
+ .my-el-transfer {
17
+ text-align: center;
18
+ }
19
+
20
+ :deep(
21
+ .el-transfer-panel
22
+ .el-transfer-panel__header
23
+ .el-checkbox
24
+ .el-checkbox__label
25
+ span
26
+ ) {
27
+ position: static;
28
+ }
29
+
30
+ :deep(.el-transfer-panel__footer button) {
31
+ position: absolute;
32
+ right: 5px;
33
+ top: 12px;
34
+ }
35
+
36
+ :deep(.el-transfer-panel:first-child .el-checkbox__label) {
37
+ cursor: move !important;
38
+ }
39
+ :deep(.el-transfer-panel) {
40
+ width: 40%;
41
+ }
42
+ :deep(.el-transfer__buttons) {
43
+ width: 20%;
44
+ }
@@ -1,61 +1,61 @@
1
- .my-splitter-container {
2
- display: flex;
3
- width: 100%;
4
- height: 100%;
5
- overflow: hidden;
6
- }
7
-
8
- .is-horizontal {
9
- flex-direction: row;
10
- }
11
- .is-vertical {
12
- flex-direction: column;
13
- }
14
-
15
- .splitter-item {
16
- overflow: auto;
17
- }
18
-
19
- .splitter-trigger {
20
- background-color: #f0f2f5;
21
- display: flex;
22
- align-items: center;
23
- justify-content: center;
24
- transition: background-color 0.2s;
25
- z-index: 10;
26
- }
27
-
28
- .splitter-trigger:hover {
29
- background-color: #409eff;
30
- }
31
-
32
- /* 水平线 */
33
- .is-horizontal > .splitter-trigger {
34
- width: 4px;
35
- cursor: col-resize;
36
- }
37
- .is-horizontal .trigger-line {
38
- width: 1px;
39
- height: 20px;
40
- background: #dcdfe6;
41
- }
42
-
43
- /* 垂直线 */
44
- .is-vertical > .splitter-trigger {
45
- height: 8px;
46
- cursor: row-resize;
47
- background-color: #f5f5f5;
48
- flex-shrink: 0;
49
- display: flex;
50
- align-items: center;
51
- justify-content: center;
52
- }
53
- .is-vertical .trigger-line {
54
- width: 30px;
55
- height: 3px;
56
- background: #d9d9d9;
57
- border-radius: 2px;
58
- }
59
- .is-vertical > .splitter-trigger:hover .trigger-line {
60
- background: #409eff;
61
- }
1
+ .my-splitter-container {
2
+ display: flex;
3
+ width: 100%;
4
+ height: 100%;
5
+ overflow: hidden;
6
+ }
7
+
8
+ .is-horizontal {
9
+ flex-direction: row;
10
+ }
11
+ .is-vertical {
12
+ flex-direction: column;
13
+ }
14
+
15
+ .splitter-item {
16
+ overflow: auto;
17
+ }
18
+
19
+ .splitter-trigger {
20
+ background-color: #f0f2f5;
21
+ display: flex;
22
+ align-items: center;
23
+ justify-content: center;
24
+ transition: background-color 0.2s;
25
+ z-index: 10;
26
+ }
27
+
28
+ .splitter-trigger:hover {
29
+ background-color: #409eff;
30
+ }
31
+
32
+ /* 水平线 */
33
+ .is-horizontal > .splitter-trigger {
34
+ width: 4px;
35
+ cursor: col-resize;
36
+ }
37
+ .is-horizontal .trigger-line {
38
+ width: 1px;
39
+ height: 20px;
40
+ background: #dcdfe6;
41
+ }
42
+
43
+ /* 垂直线 */
44
+ .is-vertical > .splitter-trigger {
45
+ height: 8px;
46
+ cursor: row-resize;
47
+ background-color: #f5f5f5;
48
+ flex-shrink: 0;
49
+ display: flex;
50
+ align-items: center;
51
+ justify-content: center;
52
+ }
53
+ .is-vertical .trigger-line {
54
+ width: 30px;
55
+ height: 3px;
56
+ background: #d9d9d9;
57
+ border-radius: 2px;
58
+ }
59
+ .is-vertical > .splitter-trigger:hover .trigger-line {
60
+ background: #409eff;
61
+ }