neo-cmp-cli 1.13.11 → 1.13.12

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 (54) hide show
  1. package/package.json +1 -1
  2. package/template/antd-custom-cmp-template/package.json +1 -1
  3. package/template/asset-manage-template/package.json +1 -1
  4. package/template/echarts-custom-cmp-template/package.json +1 -1
  5. package/template/empty-custom-cmp-template/package.json +1 -1
  6. package/template/map-custom-cmp-template/package.json +1 -1
  7. package/template/neo-bi-cmps/docs/gartner-pipeline-apis.md +279 -0
  8. package/template/neo-bi-cmps/docs/gartner-pipeline-prd.md +389 -0
  9. package/template/neo-bi-cmps/docs/neo-backend-dev/SKILL.md +188 -0
  10. package/template/neo-bi-cmps/docs/neo-backend-dev/references/01-Trigger/345/274/200/345/217/221.md +183 -0
  11. package/template/neo-bi-cmps/docs/neo-backend-dev/references/02-/350/207/252/345/256/232/344/271/211API/345/274/200/345/217/221.md +196 -0
  12. package/template/neo-bi-cmps/docs/neo-backend-dev/references/03-SDK/345/267/245/345/205/267/347/261/273/346/216/245/345/217/243.md +346 -0
  13. package/template/neo-bi-cmps/docs/neo-backend-dev/references/04-/350/256/241/345/210/222/344/275/234/344/270/232/345/274/200/345/217/221.md +188 -0
  14. package/template/neo-bi-cmps/docs/neo-backend-dev/references/05-/351/241/265/351/235/242/345/274/200/345/217/221.md +293 -0
  15. package/template/neo-bi-cmps/docs/neo-backend-dev/references/06-/346/265/201/347/250/213/346/211/251/345/261/225/345/274/200/345/217/221.md +175 -0
  16. package/template/neo-bi-cmps/docs/neo-backend-dev/references/PaaS/345/271/263/345/217/260/345/274/200/345/217/221/346/211/213/345/206/214/350/247/243/350/257/273.md +313 -0
  17. package/template/neo-bi-cmps/docs/neo-backend-dev/references/auth-config.md +77 -0
  18. package/template/neo-bi-cmps/docs/neo-backend-dev/scripts/deploy_server_script.py +118 -0
  19. package/template/neo-bi-cmps/docs/neo-backend-dev/scripts/download_server_script.py +74 -0
  20. package/template/neo-bi-cmps/docs/neo-backend-dev/scripts/gen_entity_desc.py +69 -0
  21. package/template/neo-bi-cmps/docs/neo-backend-dev/scripts/gen_entitylist.py +87 -0
  22. package/template/neo-bi-cmps/docs/neo-backend-dev/scripts/query_crm.py +65 -0
  23. package/template/neo-bi-cmps/docs/neo-backend-dev/scripts/uninstall_server_script.py +48 -0
  24. package/template/neo-bi-cmps/docs/neo-backend-dev/scripts/update_model_jar.py +49 -0
  25. package/template/neo-bi-cmps/docs/neo-frontend-dev/SKILL.md +138 -0
  26. package/template/neo-bi-cmps/docs/neo-frontend-dev/references/auth-config.md +77 -0
  27. package/template/neo-bi-cmps/docs/neo-frontend-dev/references/component-dev.md +205 -0
  28. package/template/neo-bi-cmps/docs/neo-frontend-dev/references/entityTable-example.md +167 -0
  29. package/template/neo-bi-cmps/docs/neo-frontend-dev/references/templates.md +38 -0
  30. package/template/neo-bi-cmps/docs/neo-frontend-dev/scripts/gen_entity_desc.py +69 -0
  31. package/template/neo-bi-cmps/docs/neo-frontend-dev/scripts/gen_entitylist.py +87 -0
  32. package/template/neo-bi-cmps/docs/neo-frontend-dev/scripts/query_crm.py +65 -0
  33. package/template/neo-bi-cmps/docs/prototype-pipeline-forecasting.html +2453 -0
  34. package/template/neo-bi-cmps/docs//350/264/246/345/217/267/347/233/270/345/205/263/344/277/241/346/201/257.md +10 -0
  35. package/template/neo-bi-cmps/package.json +1 -1
  36. package/template/neo-custom-cmp-template/package.json +1 -1
  37. package/template/neo-custom-cmp-template/src/components/entityForm__c/index.tsx +48 -54
  38. package/template/neo-custom-cmp-template/src/components/entityForm__c/model.ts +1 -1
  39. package/template/neo-custom-cmp-template/src/components/entityForm__c/style.scss +80 -77
  40. package/template/neo-h5-cmps/package.json +1 -1
  41. package/template/neo-order-cmps/package.json +1 -1
  42. package/template/neo-web-entity-grid/package.json +1 -1
  43. package/template/neo-web-entity-grid/src/components/createForm__c/index.tsx +46 -54
  44. package/template/neo-web-entity-grid/src/components/createForm__c/resetAntd.scss +74 -0
  45. package/template/neo-web-entity-grid/src/components/createForm__c/style.scss +81 -152
  46. package/template/neo-web-entity-grid/src/components/searchForm__c/index.tsx +47 -52
  47. package/template/neo-web-entity-grid/src/components/searchForm__c/style.scss +60 -74
  48. package/template/neo-web-form/package.json +1 -1
  49. package/template/neo-web-form/src/components/batchAddTable__c/index.tsx +16 -7
  50. package/template/neo-web-form/src/components/batchAddTable__c/style.scss +14 -0
  51. package/template/neo-web-form/src/components/batchAddTable__c/tableModal.scss +60 -13
  52. package/template/react-custom-cmp-template/package.json +1 -1
  53. package/template/react-ts-custom-cmp-template/package.json +1 -1
  54. package/template/vue2-custom-cmp-template/package.json +1 -1
@@ -0,0 +1,10 @@
1
+ Gartner 租户管理员账号:
2
+ tina.kung@qingmiaox.org
3
+ Gartner0718
4
+
5
+ pipeline设计稿:https://www.figma.com/design/n5orqOOhfsRNXGnOUYWSYp/%E5%95%86%E6%9C%BAPipeline%E5%92%8C%E9%A2%84%E6%B5%8B%EF%BC%88to26Gartner%EF%BC%89?node-id=14-10608&t=yFrDOnJuuaMFUACl-4
6
+
7
+ figma账号:summer_han23@163.com
8
+ 密码:neocrm123456
9
+
10
+ 环境:https://crm.xiaoshouyi.com/bff/neoweb#/neoPage/customPage/Pipeline
@@ -50,7 +50,7 @@
50
50
  "@types/react": "^16.9.11",
51
51
  "@types/react-dom": "^16.9.15",
52
52
  "@types/axios": "^0.14.0",
53
- "neo-cmp-cli": "^1.13.11",
53
+ "neo-cmp-cli": "^1.13.12",
54
54
  "husky": "^4.2.5",
55
55
  "lint-staged": "^10.2.9",
56
56
  "prettier": "^2.0.5"
@@ -55,7 +55,7 @@
55
55
  "@types/react": "^16.9.11",
56
56
  "@types/react-dom": "^16.9.15",
57
57
  "@types/axios": "^0.14.0",
58
- "neo-cmp-cli": "^1.13.11",
58
+ "neo-cmp-cli": "^1.13.12",
59
59
  "husky": "^4.2.5",
60
60
  "lint-staged": "^10.2.9",
61
61
  "prettier": "^2.0.5"
@@ -9,10 +9,8 @@ import {
9
9
  Select,
10
10
  Button,
11
11
  message,
12
- Card,
13
12
  DatePicker,
14
13
  InputNumber,
15
- Space,
16
14
  Spin,
17
15
  Empty,
18
16
  Row,
@@ -582,60 +580,56 @@ export default class EntityForm extends React.PureComponent<
582
580
 
583
581
  return (
584
582
  <div className={`entityForm__c ${className}`}>
585
- <Card>
586
- <div className="form-header">
587
- <h3 className="form-title">
588
- {displayTitle}
589
- {systemInfo.tenantName ? `【${systemInfo.tenantName}】` : ''}
590
- </h3>
591
- </div>
592
-
593
- <div className="form-content">
594
- <Spin spinning={loading} tip="加载字段信息...">
595
- {error ? (
596
- <Empty
597
- image={Empty.PRESENTED_IMAGE_SIMPLE}
598
- description={
599
- <div>
600
- <div style={{ color: '#ff4d4f', marginBottom: 8 }}>
601
- {error}
602
- </div>
603
- <Button type="primary" onClick={this.loadFieldList}>
604
- 重新加载
605
- </Button>
583
+ <div className="form-header">
584
+ <h3 className="form-title">
585
+ {displayTitle}
586
+ {systemInfo.tenantName ? `【${systemInfo.tenantName}】` : ''}
587
+ </h3>
588
+ </div>
589
+
590
+ <div className="form-content">
591
+ <Spin spinning={loading} tip="加载字段信息...">
592
+ {error ? (
593
+ <Empty
594
+ image={Empty.PRESENTED_IMAGE_SIMPLE}
595
+ description={
596
+ <div>
597
+ <div style={{ color: '#ff4d4f', marginBottom: 8 }}>
598
+ {error}
606
599
  </div>
607
- }
608
- />
609
- ) : (
610
- <>
611
- {this.renderForm()}
612
- <div className="form-actions">
613
- <Space size="middle">
614
- <Button
615
- type="primary"
616
- icon={<SaveOutlined />}
617
- onClick={this.handleSubmit}
618
- loading={submitting}
619
- disabled={!xObjectApiKey}
620
- >
621
- {submitting ? '提交中...' : '提交'}
622
- </Button>
623
- {showResetButton && (
624
- <Button
625
- icon={<ReloadOutlined />}
626
- onClick={this.handleReset}
627
- disabled={submitting}
628
- >
629
- 重置
630
- </Button>
631
- )}
632
- </Space>
600
+ <Button type="primary" onClick={this.loadFieldList}>
601
+ 重新加载
602
+ </Button>
633
603
  </div>
634
- </>
635
- )}
636
- </Spin>
637
- </div>
638
- </Card>
604
+ }
605
+ />
606
+ ) : (
607
+ <>
608
+ {this.renderForm()}
609
+ <div className="form-actions">
610
+ {showResetButton && (
611
+ <Button
612
+ icon={<ReloadOutlined />}
613
+ onClick={this.handleReset}
614
+ disabled={submitting}
615
+ >
616
+ 重置
617
+ </Button>
618
+ )}
619
+ <Button
620
+ type="primary"
621
+ icon={<SaveOutlined />}
622
+ onClick={this.handleSubmit}
623
+ loading={submitting}
624
+ disabled={!xObjectApiKey}
625
+ >
626
+ {submitting ? '提交中...' : '提交'}
627
+ </Button>
628
+ </div>
629
+ </>
630
+ )}
631
+ </Spin>
632
+ </div>
639
633
  </div>
640
634
  );
641
635
  }
@@ -49,7 +49,7 @@ export class EntityFormModel {
49
49
  defaultComProps = {
50
50
  formTitle: '新增数据表单',
51
51
  showResetButton: true,
52
- columnCount: 1,
52
+ columnCount: 2,
53
53
  xObjectDataApi: {
54
54
  xObjectApiKey: 'customContact__c',
55
55
  fields: ['name', 'entityType', 'phone__c'],
@@ -1,14 +1,24 @@
1
1
  .entityForm__c {
2
+ padding: 24px;
3
+ box-sizing: border-box;
4
+ background-color: #fff;
5
+
2
6
  .form-header {
3
- margin-bottom: 24px;
4
- padding-bottom: 16px;
5
- border-bottom: 1px solid #f0f0f0;
7
+ display: flex;
8
+ align-items: center;
9
+ height: 38px;
10
+ padding: 0 12px;
11
+ margin-bottom: 20px;
12
+ box-sizing: border-box;
13
+ background: #f5f5f5;
14
+ border-radius: 8px;
6
15
 
7
16
  .form-title {
8
17
  margin: 0;
9
- font-size: 18px;
10
- font-weight: 600;
18
+ font-size: 14px;
19
+ font-weight: 500;
11
20
  color: #262626;
21
+ line-height: 1.2;
12
22
  }
13
23
  }
14
24
 
@@ -21,7 +31,7 @@
21
31
  padding-bottom: 6px;
22
32
 
23
33
  label {
24
- font-weight: 500;
34
+ font-weight: 400;
25
35
  color: #262626;
26
36
  font-size: 14px;
27
37
 
@@ -113,59 +123,66 @@
113
123
  }
114
124
 
115
125
  .form-actions {
126
+ display: flex;
127
+ justify-content: flex-end;
128
+ align-items: center;
129
+ flex-wrap: wrap;
116
130
  margin-top: 32px;
117
- padding-top: 24px;
118
- border-top: 1px solid #f0f0f0;
119
- text-align: center;
131
+ padding-top: 16px;
132
+ border-top: 1px solid rgba(0, 0, 0, 0.06);
120
133
 
121
- .ant-space {
122
- .ant-btn {
123
- min-width: 100px;
124
- height: 40px;
125
- font-size: 15px;
126
- border-radius: 4px;
127
- font-weight: 500;
128
- transition: all 0.3s;
134
+ .ant-btn {
135
+ height: 32px;
136
+ padding: 0 14px;
137
+ font-size: 14px;
138
+ border-radius: 16px;
139
+ font-weight: 400;
140
+ min-width: auto;
141
+ margin-left: 10px;
142
+ transition: all 0.3s;
143
+
144
+ &:first-child {
145
+ margin-left: 0;
146
+ }
129
147
 
130
- &.ant-btn-primary {
131
- background: #1890ff;
132
- border-color: #1890ff;
148
+ &.ant-btn-primary {
149
+ background: #1890ff;
150
+ border-color: #1890ff;
133
151
 
134
- &:hover {
135
- background: #40a9ff;
136
- border-color: #40a9ff;
137
- transform: translateY(-2px);
138
- box-shadow: 0 4px 12px rgba(24, 144, 255, 0.3);
139
- }
152
+ &:hover {
153
+ background: #40a9ff;
154
+ border-color: #40a9ff;
155
+ transform: translateY(-1px);
156
+ box-shadow: 0 4px 12px rgba(24, 144, 255, 0.3);
157
+ }
140
158
 
141
- &:active {
142
- background: #096dd9;
143
- border-color: #096dd9;
144
- transform: translateY(0);
145
- }
159
+ &:active {
160
+ background: #096dd9;
161
+ border-color: #096dd9;
162
+ transform: translateY(0);
163
+ }
146
164
 
147
- &:disabled {
148
- background: #f5f5f5;
149
- border-color: #d9d9d9;
150
- color: rgba(0, 0, 0, 0.25);
151
- transform: none;
152
- box-shadow: none;
153
- }
165
+ &:disabled {
166
+ background: #f5f5f5;
167
+ border-color: #d9d9d9;
168
+ color: rgba(0, 0, 0, 0.25);
169
+ transform: none;
170
+ box-shadow: none;
154
171
  }
172
+ }
155
173
 
156
- &:not(.ant-btn-primary) {
157
- &:hover {
158
- color: #40a9ff;
159
- border-color: #40a9ff;
160
- transform: translateY(-2px);
161
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
162
- }
174
+ &:not(.ant-btn-primary) {
175
+ &:hover {
176
+ color: #40a9ff;
177
+ border-color: #40a9ff;
178
+ transform: translateY(-1px);
179
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06);
180
+ }
163
181
 
164
- &:active {
165
- color: #096dd9;
166
- border-color: #096dd9;
167
- transform: translateY(0);
168
- }
182
+ &:active {
183
+ color: #096dd9;
184
+ border-color: #096dd9;
185
+ transform: translateY(0);
169
186
  }
170
187
  }
171
188
  }
@@ -197,10 +214,9 @@
197
214
  @media (max-width: 768px) {
198
215
  .form-header {
199
216
  margin-bottom: 16px;
200
- padding-bottom: 12px;
201
217
 
202
218
  .form-title {
203
- font-size: 16px;
219
+ font-size: 13px;
204
220
  }
205
221
  }
206
222
 
@@ -228,12 +244,9 @@
228
244
  margin-top: 24px;
229
245
  padding-top: 16px;
230
246
 
231
- .ant-space {
232
- .ant-btn {
233
- min-width: 80px;
234
- height: 36px;
235
- font-size: 14px;
236
- }
247
+ .ant-btn {
248
+ height: 32px;
249
+ font-size: 13px;
237
250
  }
238
251
  }
239
252
  }
@@ -242,7 +255,7 @@
242
255
  @media (max-width: 576px) {
243
256
  .form-header {
244
257
  .form-title {
245
- font-size: 15px;
258
+ font-size: 13px;
246
259
  }
247
260
  }
248
261
 
@@ -268,16 +281,16 @@
268
281
  }
269
282
 
270
283
  .form-actions {
271
- .ant-space {
272
- width: 100%;
284
+ flex-direction: column;
285
+ align-items: stretch;
273
286
 
274
- .ant-space-item {
275
- flex: 1;
276
- }
287
+ .ant-btn {
288
+ width: 100%;
289
+ margin-left: 0;
290
+ margin-top: 10px;
277
291
 
278
- .ant-btn {
279
- width: 100%;
280
- min-width: auto;
292
+ &:first-child {
293
+ margin-top: 0;
281
294
  }
282
295
  }
283
296
  }
@@ -285,16 +298,6 @@
285
298
  }
286
299
  }
287
300
 
288
- // 全局样式覆盖
289
- .ant-card {
290
- border-radius: 6px;
291
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
292
-
293
- .ant-card-body {
294
- padding: 24px;
295
- }
296
- }
297
-
298
301
  // Spin 加载样式
299
302
  .ant-spin {
300
303
  .ant-spin-dot {
@@ -49,7 +49,7 @@
49
49
  "@types/react": "^16.9.11",
50
50
  "@types/react-dom": "^16.9.15",
51
51
  "@types/axios": "^0.14.0",
52
- "neo-cmp-cli": "^1.13.11",
52
+ "neo-cmp-cli": "^1.13.12",
53
53
  "husky": "^4.2.5",
54
54
  "lint-staged": "^10.2.9",
55
55
  "prettier": "^2.0.5"
@@ -47,7 +47,7 @@
47
47
  "@types/react": "^16.9.11",
48
48
  "@types/react-dom": "^16.9.15",
49
49
  "@types/axios": "^0.14.0",
50
- "neo-cmp-cli": "^1.13.11",
50
+ "neo-cmp-cli": "^1.13.12",
51
51
  "husky": "^4.2.5",
52
52
  "lint-staged": "^10.2.9",
53
53
  "prettier": "^2.0.5"
@@ -52,7 +52,7 @@
52
52
  "@types/react-dom": "^16.9.15",
53
53
  "husky": "^4.2.5",
54
54
  "lint-staged": "^10.2.9",
55
- "neo-cmp-cli": "^1.13.11",
55
+ "neo-cmp-cli": "^1.13.12",
56
56
  "prettier": "^2.0.5"
57
57
  },
58
58
  "overrides": {
@@ -9,10 +9,8 @@ import {
9
9
  Select,
10
10
  Button,
11
11
  message,
12
- Card,
13
12
  DatePicker,
14
13
  InputNumber,
15
- Space,
16
14
  Spin,
17
15
  Empty,
18
16
  Row,
@@ -176,7 +174,7 @@ export default class CreateEntityForm extends React.PureComponent<
176
174
  * 组件更新后执行
177
175
  * 当 xObjectApiKey 发生变化时重新加载字段列表
178
176
  */
179
- async componentDidUpdate(prevProps: EntityFormProps) {
177
+ async componentDidUpdate(prevProps: CreateFormProps) {
180
178
  const { xObjectApiKey, fields } = this.props.xObjectDataApi || {};
181
179
  const { xObjectApiKey: prevXObjectApiKey, fields: prevFields } =
182
180
  prevProps.xObjectDataApi || {};
@@ -732,59 +730,53 @@ export default class CreateEntityForm extends React.PureComponent<
732
730
 
733
731
  return (
734
732
  <div className={`createForm__c ${className}`}>
735
- <Card>
736
- <div className="form-header">
737
- <h3 className="form-title">
738
- {displayTitle}
739
- </h3>
740
- </div>
741
-
742
- <div className="form-content">
743
- <Spin spinning={loading} tip="加载字段信息...">
744
- {error ? (
745
- <Empty
746
- image={Empty.PRESENTED_IMAGE_SIMPLE}
747
- description={
748
- <div>
749
- <div style={{ color: '#ff4d4f', marginBottom: 8 }}>
750
- {error}
751
- </div>
752
- <Button type="primary" onClick={this.loadFieldList}>
753
- 重新加载
754
- </Button>
733
+ <div className="form-header">
734
+ <h3 className="form-title">{displayTitle}</h3>
735
+ </div>
736
+
737
+ <div className="form-content">
738
+ <Spin spinning={loading} tip="加载字段信息...">
739
+ {error ? (
740
+ <Empty
741
+ image={Empty.PRESENTED_IMAGE_SIMPLE}
742
+ description={
743
+ <div>
744
+ <div style={{ color: '#ff4d4f', marginBottom: 8 }}>
745
+ {error}
755
746
  </div>
756
- }
757
- />
758
- ) : (
759
- <>
760
- {this.renderForm()}
761
- <div className="form-actions">
762
- <Space size="middle">
763
- <Button
764
- type="primary"
765
- icon={<SaveOutlined />}
766
- onClick={this.handleSubmit}
767
- loading={submitting}
768
- disabled={!xObjectApiKey}
769
- >
770
- {submitting ? '提交中...' : '提交'}
771
- </Button>
772
- {showResetButton && (
773
- <Button
774
- icon={<ReloadOutlined />}
775
- onClick={this.handleReset}
776
- disabled={submitting}
777
- >
778
- 重置
779
- </Button>
780
- )}
781
- </Space>
747
+ <Button type="primary" onClick={this.loadFieldList}>
748
+ 重新加载
749
+ </Button>
782
750
  </div>
783
- </>
784
- )}
785
- </Spin>
786
- </div>
787
- </Card>
751
+ }
752
+ />
753
+ ) : (
754
+ <>
755
+ {this.renderForm()}
756
+ <div className="form-actions">
757
+ {showResetButton && (
758
+ <Button
759
+ icon={<ReloadOutlined />}
760
+ onClick={this.handleReset}
761
+ disabled={submitting}
762
+ >
763
+ 重置
764
+ </Button>
765
+ )}
766
+ <Button
767
+ type="primary"
768
+ icon={<SaveOutlined />}
769
+ onClick={this.handleSubmit}
770
+ loading={submitting}
771
+ disabled={!xObjectApiKey}
772
+ >
773
+ {submitting ? '提交中...' : '提交'}
774
+ </Button>
775
+ </div>
776
+ </>
777
+ )}
778
+ </Spin>
779
+ </div>
788
780
  </div>
789
781
  );
790
782
  }
@@ -0,0 +1,74 @@
1
+
2
+ // Spin 加载样式
3
+ .ant-spin {
4
+ .ant-spin-dot {
5
+ font-size: 20px;
6
+ }
7
+
8
+ .ant-spin-text {
9
+ color: #8c8c8c;
10
+ font-size: 14px;
11
+ }
12
+ }
13
+
14
+ // Select 下拉样式优化
15
+ .ant-select-dropdown {
16
+ border-radius: 4px;
17
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
18
+
19
+ .ant-select-item {
20
+ padding: 8px 12px;
21
+
22
+ &:hover {
23
+ background-color: #f5f5f5;
24
+ }
25
+
26
+ &.ant-select-item-option-selected {
27
+ background-color: #e6f7ff;
28
+ color: #1890ff;
29
+ font-weight: 500;
30
+ }
31
+ }
32
+ }
33
+
34
+ // DatePicker 日期选择器样式优化
35
+ .ant-picker-dropdown {
36
+ .ant-picker-panel-container {
37
+ border-radius: 4px;
38
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
39
+ }
40
+
41
+ .ant-picker-cell-selected {
42
+ .ant-picker-cell-inner {
43
+ background-color: #1890ff;
44
+ }
45
+ }
46
+
47
+ .ant-picker-cell:hover:not(.ant-picker-cell-selected) {
48
+ .ant-picker-cell-inner {
49
+ background-color: #f5f5f5;
50
+ }
51
+ }
52
+ }
53
+
54
+ // InputNumber 数字输入框样式优化
55
+ .ant-input-number {
56
+ .ant-input-number-handler-wrap {
57
+ opacity: 0;
58
+ transition: opacity 0.3s;
59
+ }
60
+
61
+ &:hover {
62
+ .ant-input-number-handler-wrap {
63
+ opacity: 1;
64
+ }
65
+ }
66
+
67
+ .ant-input-number-handler {
68
+ border-left: 1px solid #d9d9d9;
69
+
70
+ &:hover {
71
+ background-color: #f5f5f5;
72
+ }
73
+ }
74
+ }