@easy-editor/setters 0.1.0 → 0.1.1
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.
- package/dist/index.cjs +150 -150
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.esm.js +151 -152
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +153 -154
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +5 -5
- package/dist/index.min.js.map +1 -1
- package/dist/lib/popover.d.ts +9 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,9 +1,74 @@
|
|
|
1
1
|
/* @easy-editor/setters v0.1.0 */
|
|
2
2
|
(function (global, factory) {
|
|
3
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('react/jsx-runtime')) :
|
|
4
|
-
typeof define === 'function' && define.amd ? define(['exports', 'react', 'react/jsx-runtime'], factory) :
|
|
5
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.EasyEditorSetters = {}, global.React, global.jsxRuntime));
|
|
6
|
-
})(this, (function (exports, React$1, jsxRuntime) { 'use strict';
|
|
3
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('react-dom'), require('react/jsx-runtime')) :
|
|
4
|
+
typeof define === 'function' && define.amd ? define(['exports', 'react', 'react-dom', 'react/jsx-runtime'], factory) :
|
|
5
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.EasyEditorSetters = {}, global.React, global.ReactDOM, global.jsxRuntime));
|
|
6
|
+
})(this, (function (exports, React$1, reactDom, jsxRuntime) { 'use strict';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Popover - 共享弹窗组件
|
|
10
|
+
* - 使用 Portal 渲染到 document.body,避免被父容器遮挡
|
|
11
|
+
* - 自动匹配触发器宽度
|
|
12
|
+
*/
|
|
13
|
+
const Popover = props => {
|
|
14
|
+
const {
|
|
15
|
+
open,
|
|
16
|
+
onClose,
|
|
17
|
+
trigger,
|
|
18
|
+
children,
|
|
19
|
+
width = 'trigger'
|
|
20
|
+
} = props;
|
|
21
|
+
const triggerRef = React$1.useRef(null);
|
|
22
|
+
const [position, setPosition] = React$1.useState({
|
|
23
|
+
top: 0,
|
|
24
|
+
left: 0
|
|
25
|
+
});
|
|
26
|
+
const [popoverWidth, setPopoverWidth] = React$1.useState(0);
|
|
27
|
+
|
|
28
|
+
// 计算弹窗位置
|
|
29
|
+
React$1.useEffect(() => {
|
|
30
|
+
if (open && triggerRef.current) {
|
|
31
|
+
const triggerRect = triggerRef.current.getBoundingClientRect();
|
|
32
|
+
const triggerWidth = triggerRect.width;
|
|
33
|
+
|
|
34
|
+
// 设置弹窗宽度
|
|
35
|
+
if (width === 'trigger') {
|
|
36
|
+
setPopoverWidth(triggerWidth);
|
|
37
|
+
}
|
|
38
|
+
setPosition({
|
|
39
|
+
top: triggerRect.bottom + 4,
|
|
40
|
+
left: triggerRect.left
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}, [open, width]);
|
|
44
|
+
|
|
45
|
+
// 点击外部关闭
|
|
46
|
+
React$1.useEffect(() => {
|
|
47
|
+
const handleClickOutside = event => {
|
|
48
|
+
const target = event.target;
|
|
49
|
+
const popoverEl = document.querySelector('.es-popover-portal');
|
|
50
|
+
if (popoverEl && !popoverEl.contains(target) && triggerRef.current && !triggerRef.current.contains(target)) {
|
|
51
|
+
onClose();
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
if (open) {
|
|
55
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
56
|
+
return () => document.removeEventListener('mousedown', handleClickOutside);
|
|
57
|
+
}
|
|
58
|
+
}, [open, onClose]);
|
|
59
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
60
|
+
ref: triggerRef
|
|
61
|
+
}, trigger), open && /*#__PURE__*/reactDom.createPortal(/*#__PURE__*/React.createElement("div", {
|
|
62
|
+
className: "es-popover-portal",
|
|
63
|
+
style: {
|
|
64
|
+
position: 'fixed',
|
|
65
|
+
top: position.top,
|
|
66
|
+
left: position.left,
|
|
67
|
+
width: popoverWidth || 'auto',
|
|
68
|
+
zIndex: 1000
|
|
69
|
+
}
|
|
70
|
+
}, children), document.body));
|
|
71
|
+
};
|
|
7
72
|
|
|
8
73
|
function r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=" "),n+=f);}else for(f in e)e[f]&&(n&&(n+=" "),n+=f);return n}function clsx(){for(var e,t,f=0,n="",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}
|
|
9
74
|
|
|
@@ -3831,7 +3896,7 @@
|
|
|
3831
3896
|
});
|
|
3832
3897
|
Sketch.displayName = 'Sketch';
|
|
3833
3898
|
|
|
3834
|
-
var styles$i = {"trigger":"es-trigger-w-aUi","colorPreview":"es-colorPreview-SUgiJ","colorValue":"es-colorValue-cYdRP","popover":"es-popover-SfIUB"
|
|
3899
|
+
var styles$i = {"trigger":"es-trigger-w-aUi","colorPreview":"es-colorPreview-SUgiJ","colorValue":"es-colorValue-cYdRP","popover":"es-popover-SfIUB"};
|
|
3835
3900
|
|
|
3836
3901
|
const ColorSetter = props => {
|
|
3837
3902
|
const {
|
|
@@ -3841,40 +3906,25 @@
|
|
|
3841
3906
|
disableAlpha = false
|
|
3842
3907
|
} = props;
|
|
3843
3908
|
const [open, setOpen] = React$1.useState(false);
|
|
3844
|
-
|
|
3845
|
-
|
|
3846
|
-
|
|
3847
|
-
|
|
3848
|
-
|
|
3909
|
+
return /*#__PURE__*/React.createElement(Popover, {
|
|
3910
|
+
onClose: () => setOpen(false),
|
|
3911
|
+
open: open,
|
|
3912
|
+
trigger: /*#__PURE__*/React.createElement("button", {
|
|
3913
|
+
"aria-label": "Select color",
|
|
3914
|
+
className: styles$i.trigger,
|
|
3915
|
+
onClick: () => setOpen(true),
|
|
3916
|
+
type: "button"
|
|
3917
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
3918
|
+
"aria-label": "Current color",
|
|
3919
|
+
className: styles$i.colorPreview,
|
|
3920
|
+
style: {
|
|
3921
|
+
backgroundColor: value ?? initialValue
|
|
3849
3922
|
}
|
|
3850
|
-
}
|
|
3851
|
-
|
|
3852
|
-
|
|
3853
|
-
}
|
|
3854
|
-
return () => {
|
|
3855
|
-
document.removeEventListener('mousedown', handleClickOutside);
|
|
3856
|
-
};
|
|
3857
|
-
}, [open]);
|
|
3858
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
3859
|
-
ref: containerRef,
|
|
3860
|
-
style: {
|
|
3861
|
-
position: 'relative'
|
|
3862
|
-
}
|
|
3863
|
-
}, /*#__PURE__*/React.createElement("button", {
|
|
3864
|
-
"aria-label": "Select color",
|
|
3865
|
-
className: styles$i.trigger,
|
|
3866
|
-
onClick: () => setOpen(!open),
|
|
3867
|
-
type: "button"
|
|
3923
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
3924
|
+
className: styles$i.colorValue
|
|
3925
|
+
}, value ?? initialValue))
|
|
3868
3926
|
}, /*#__PURE__*/React.createElement("div", {
|
|
3869
|
-
|
|
3870
|
-
className: styles$i.colorPreview,
|
|
3871
|
-
style: {
|
|
3872
|
-
backgroundColor: value ?? initialValue
|
|
3873
|
-
}
|
|
3874
|
-
}), /*#__PURE__*/React.createElement("span", {
|
|
3875
|
-
className: styles$i.colorValue
|
|
3876
|
-
}, value ?? initialValue)), /*#__PURE__*/React.createElement("div", {
|
|
3877
|
-
className: cn(styles$i.popover, !open && styles$i.popoverHidden)
|
|
3927
|
+
className: styles$i.popover
|
|
3878
3928
|
}, /*#__PURE__*/React.createElement(Sketch, {
|
|
3879
3929
|
color: value,
|
|
3880
3930
|
disableAlpha: disableAlpha,
|
|
@@ -3883,7 +3933,7 @@
|
|
|
3883
3933
|
})));
|
|
3884
3934
|
};
|
|
3885
3935
|
|
|
3886
|
-
var styles$h = {"
|
|
3936
|
+
var styles$h = {"trigger":"es-trigger-fTNvQ","triggerIcon":"es-triggerIcon-1mdQ0","triggerIconPrimary":"es-triggerIconPrimary-opifh","triggerIconMuted":"es-triggerIconMuted-CWgDl","triggerText":"es-triggerText-WeQRu","popoverContent":"es-popoverContent-6qE--","tabsList":"es-tabsList-liSeY","tabTrigger":"es-tabTrigger-6j7K-","tabTriggerActive":"es-tabTriggerActive-g6hcl","tabTriggerIcon":"es-tabTriggerIcon-dRSAp","tabContent":"es-tabContent--H166","tabContentActive":"es-tabContentActive-Fjdu5","section":"es-section-eDYxd","sectionLabel":"es-sectionLabel--LHE8","input":"es-input--OymK","inputMono":"es-inputMono-pCJz3","textarea":"es-textarea-iurkc","booleanButtons":"es-booleanButtons-0bM8P","booleanButton":"es-booleanButton-3fXcB","booleanButtonActive":"es-booleanButtonActive-zGWrZ","datasourceList":"es-datasourceList-VIRXb","datasourceButton":"es-datasourceButton-giz6D","datasourceButtonActive":"es-datasourceButtonActive-m5WPP","datasourceIcon":"es-datasourceIcon-q9Omt","emptyState":"es-emptyState-rI2si","hint":"es-hint-zfWLZ","preview":"es-preview-tUInw"};
|
|
3887
3937
|
|
|
3888
3938
|
const defaultValue$3 = {
|
|
3889
3939
|
type: 'static',
|
|
@@ -3901,20 +3951,6 @@
|
|
|
3901
3951
|
const currentValue = value ?? initialValue ?? defaultValue$3;
|
|
3902
3952
|
const [open, setOpen] = React$1.useState(false);
|
|
3903
3953
|
const [activeTab, setActiveTab] = React$1.useState(currentValue.type);
|
|
3904
|
-
const containerRef = React$1.useRef(null);
|
|
3905
|
-
React$1.useEffect(() => {
|
|
3906
|
-
const handleClickOutside = event => {
|
|
3907
|
-
if (containerRef.current && !containerRef.current.contains(event.target)) {
|
|
3908
|
-
setOpen(false);
|
|
3909
|
-
}
|
|
3910
|
-
};
|
|
3911
|
-
if (open) {
|
|
3912
|
-
document.addEventListener('mousedown', handleClickOutside);
|
|
3913
|
-
}
|
|
3914
|
-
return () => {
|
|
3915
|
-
document.removeEventListener('mousedown', handleClickOutside);
|
|
3916
|
-
};
|
|
3917
|
-
}, [open]);
|
|
3918
3954
|
const updateBinding = React$1.useCallback(updates => {
|
|
3919
3955
|
onChange({
|
|
3920
3956
|
...currentValue,
|
|
@@ -4011,18 +4047,20 @@
|
|
|
4011
4047
|
text: '静态数据'
|
|
4012
4048
|
};
|
|
4013
4049
|
}, [currentValue, dataSources]);
|
|
4014
|
-
return /*#__PURE__*/React.createElement(
|
|
4015
|
-
|
|
4016
|
-
|
|
4017
|
-
|
|
4018
|
-
|
|
4019
|
-
|
|
4020
|
-
|
|
4021
|
-
|
|
4022
|
-
|
|
4023
|
-
|
|
4024
|
-
|
|
4025
|
-
|
|
4050
|
+
return /*#__PURE__*/React.createElement(Popover, {
|
|
4051
|
+
onClose: () => setOpen(false),
|
|
4052
|
+
open: open,
|
|
4053
|
+
trigger: /*#__PURE__*/React.createElement("button", {
|
|
4054
|
+
"aria-label": "Data binding",
|
|
4055
|
+
className: styles$h.trigger,
|
|
4056
|
+
onClick: () => setOpen(true),
|
|
4057
|
+
type: "button"
|
|
4058
|
+
}, bindingStatus.icon, /*#__PURE__*/React.createElement("span", {
|
|
4059
|
+
className: styles$h.triggerText
|
|
4060
|
+
}, bindingStatus.text)),
|
|
4061
|
+
width: 300
|
|
4062
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
4063
|
+
className: styles$h.popoverContent
|
|
4026
4064
|
}, /*#__PURE__*/React.createElement("div", {
|
|
4027
4065
|
className: styles$h.tabsList,
|
|
4028
4066
|
role: "tablist"
|
|
@@ -4084,7 +4122,7 @@
|
|
|
4084
4122
|
}, "\u7ED1\u5B9A\u540E\u53EF\u5728\u9884\u89C8\u6A21\u5F0F\u67E5\u770B\u6570\u636E")) : null))));
|
|
4085
4123
|
};
|
|
4086
4124
|
|
|
4087
|
-
var styles$g = {"
|
|
4125
|
+
var styles$g = {"trigger":"es-trigger-rmYLl","triggerIcon":"es-triggerIcon-ktlTS","triggerText":"es-triggerText-B63By","popoverContent":"es-popoverContent-IIcFY","header":"es-header-VoKF3","headerTitle":"es-headerTitle-vDZR8","headerCount":"es-headerCount-stTlN","mappingList":"es-mappingList-SLqhN","mappingItem":"es-mappingItem-xtRLl","mappingHeader":"es-mappingHeader-LwKiY","mappingTitle":"es-mappingTitle-IMhzw","mappingRequired":"es-mappingRequired-tP6L-","mappingType":"es-mappingType-nyqrh","mappingRow":"es-mappingRow-lFfhT","select":"es-select-R4pIl","input":"es-input--LohJ","arrowIcon":"es-arrowIcon-QqWMM","targetField":"es-targetField-gSvGk","transformRow":"es-transformRow-O6MAG","transformIcon":"es-transformIcon-beXzy","transformInput":"es-transformInput-SyN2q","clearButton":"es-clearButton-Pm-uP","helpText":"es-helpText-IHqjo"};
|
|
4088
4126
|
|
|
4089
4127
|
const defaultValue$2 = {
|
|
4090
4128
|
mappings: []
|
|
@@ -4099,20 +4137,6 @@
|
|
|
4099
4137
|
} = props;
|
|
4100
4138
|
const currentValue = value ?? initialValue ?? defaultValue$2;
|
|
4101
4139
|
const [open, setOpen] = React$1.useState(false);
|
|
4102
|
-
const containerRef = React$1.useRef(null);
|
|
4103
|
-
React$1.useEffect(() => {
|
|
4104
|
-
const handleClickOutside = event => {
|
|
4105
|
-
if (containerRef.current && !containerRef.current.contains(event.target)) {
|
|
4106
|
-
setOpen(false);
|
|
4107
|
-
}
|
|
4108
|
-
};
|
|
4109
|
-
if (open) {
|
|
4110
|
-
document.addEventListener('mousedown', handleClickOutside);
|
|
4111
|
-
}
|
|
4112
|
-
return () => {
|
|
4113
|
-
document.removeEventListener('mousedown', handleClickOutside);
|
|
4114
|
-
};
|
|
4115
|
-
}, [open]);
|
|
4116
4140
|
|
|
4117
4141
|
// 获取字段的映射
|
|
4118
4142
|
const getMapping = React$1.useCallback(targetField => currentValue.mappings.find(m => m.targetField === targetField), [currentValue.mappings]);
|
|
@@ -4148,22 +4172,22 @@
|
|
|
4148
4172
|
|
|
4149
4173
|
// 统计已映射字段数
|
|
4150
4174
|
const mappedCount = currentValue.mappings.filter(m => m.sourceField).length;
|
|
4151
|
-
return /*#__PURE__*/React.createElement(
|
|
4152
|
-
|
|
4153
|
-
|
|
4154
|
-
|
|
4155
|
-
|
|
4156
|
-
|
|
4157
|
-
|
|
4158
|
-
|
|
4159
|
-
|
|
4160
|
-
|
|
4161
|
-
|
|
4162
|
-
|
|
4163
|
-
|
|
4164
|
-
|
|
4175
|
+
return /*#__PURE__*/React.createElement(Popover, {
|
|
4176
|
+
onClose: () => setOpen(false),
|
|
4177
|
+
open: open,
|
|
4178
|
+
trigger: /*#__PURE__*/React.createElement("button", {
|
|
4179
|
+
"aria-label": "Data mapping",
|
|
4180
|
+
className: styles$g.trigger,
|
|
4181
|
+
onClick: () => setOpen(true),
|
|
4182
|
+
type: "button"
|
|
4183
|
+
}, /*#__PURE__*/React.createElement(Settings2, {
|
|
4184
|
+
className: styles$g.triggerIcon
|
|
4185
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
4186
|
+
className: styles$g.triggerText
|
|
4187
|
+
}, "\u5B57\u6BB5\u6620\u5C04 (", mappedCount, "/", targetFields.length, ")")),
|
|
4188
|
+
width: 320
|
|
4165
4189
|
}, /*#__PURE__*/React.createElement("div", {
|
|
4166
|
-
className: styles$g.
|
|
4190
|
+
className: styles$g.popoverContent
|
|
4167
4191
|
}, /*#__PURE__*/React.createElement("div", {
|
|
4168
4192
|
className: styles$g.header
|
|
4169
4193
|
}, /*#__PURE__*/React.createElement("span", {
|
|
@@ -4229,10 +4253,10 @@
|
|
|
4229
4253
|
}, "\u6E05\u9664\u6620\u5C04") : null);
|
|
4230
4254
|
})), /*#__PURE__*/React.createElement("div", {
|
|
4231
4255
|
className: styles$g.helpText
|
|
4232
|
-
}, /*#__PURE__*/React.createElement("p", null, "\u2022 \u6E90\u5B57\u6BB5: \u6570\u636E\u6E90\u4E2D\u7684\u5B57\u6BB5\u8DEF\u5F84"), /*#__PURE__*/React.createElement("p", null, "\u2022 \u8F6C\u6362\u8868\u8FBE\u5F0F: \u5982 value * 100, value.toFixed(2)"))))
|
|
4256
|
+
}, /*#__PURE__*/React.createElement("p", null, "\u2022 \u6E90\u5B57\u6BB5: \u6570\u636E\u6E90\u4E2D\u7684\u5B57\u6BB5\u8DEF\u5F84"), /*#__PURE__*/React.createElement("p", null, "\u2022 \u8F6C\u6362\u8868\u8FBE\u5F0F: \u5982 value * 100, value.toFixed(2)"))));
|
|
4233
4257
|
};
|
|
4234
4258
|
|
|
4235
|
-
var styles$f = {"
|
|
4259
|
+
var styles$f = {"trigger":"es-trigger-IjziC","triggerIcon":"es-triggerIcon-t21hp","triggerText":"es-triggerText-WQ-5H","popover":"es-popover-h2Vn-","searchWrapper":"es-searchWrapper-jUGP6","searchIcon":"es-searchIcon-Qu4Cl","searchInput":"es-searchInput-YUlsM","section":"es-section-mWvKy","sectionTitle":"es-sectionTitle-4m6ZV","iconGrid":"es-iconGrid-hvHqv","iconButton":"es-iconButton-3y2jO","iconButtonSelected":"es-iconButtonSelected-01Ozi","iconButtonIcon":"es-iconButtonIcon-ur-nS","emptyMessage":"es-emptyMessage-dWKQh"};
|
|
4236
4260
|
|
|
4237
4261
|
// 图标映射表
|
|
4238
4262
|
const iconMap = {
|
|
@@ -4355,20 +4379,6 @@
|
|
|
4355
4379
|
const [open, setOpen] = React$1.useState(false);
|
|
4356
4380
|
const [searchQuery, setSearchQuery] = React$1.useState('');
|
|
4357
4381
|
const [recentIcons, setRecentIcons] = React$1.useState([]);
|
|
4358
|
-
const containerRef = React$1.useRef(null);
|
|
4359
|
-
React$1.useEffect(() => {
|
|
4360
|
-
const handleClickOutside = event => {
|
|
4361
|
-
if (containerRef.current && !containerRef.current.contains(event.target)) {
|
|
4362
|
-
setOpen(false);
|
|
4363
|
-
}
|
|
4364
|
-
};
|
|
4365
|
-
if (open) {
|
|
4366
|
-
document.addEventListener('mousedown', handleClickOutside);
|
|
4367
|
-
}
|
|
4368
|
-
return () => {
|
|
4369
|
-
document.removeEventListener('mousedown', handleClickOutside);
|
|
4370
|
-
};
|
|
4371
|
-
}, [open]);
|
|
4372
4382
|
|
|
4373
4383
|
// 获取图标组件
|
|
4374
4384
|
const getIconComponent = React$1.useCallback(iconName => iconMap[iconName] || Circle, []);
|
|
@@ -4394,20 +4404,21 @@
|
|
|
4394
4404
|
setOpen(false);
|
|
4395
4405
|
}, [onChange]);
|
|
4396
4406
|
const CurrentIcon = getIconComponent(currentValue.name);
|
|
4397
|
-
return /*#__PURE__*/React.createElement(
|
|
4398
|
-
|
|
4399
|
-
|
|
4400
|
-
|
|
4401
|
-
|
|
4402
|
-
|
|
4403
|
-
|
|
4404
|
-
|
|
4405
|
-
|
|
4406
|
-
|
|
4407
|
-
|
|
4408
|
-
|
|
4409
|
-
|
|
4410
|
-
|
|
4407
|
+
return /*#__PURE__*/React.createElement(Popover, {
|
|
4408
|
+
onClose: () => setOpen(false),
|
|
4409
|
+
open: open,
|
|
4410
|
+
trigger: /*#__PURE__*/React.createElement("button", {
|
|
4411
|
+
"aria-label": "Select icon",
|
|
4412
|
+
className: styles$f.trigger,
|
|
4413
|
+
onClick: () => setOpen(true),
|
|
4414
|
+
type: "button"
|
|
4415
|
+
}, /*#__PURE__*/React.createElement(CurrentIcon, {
|
|
4416
|
+
className: styles$f.triggerIcon
|
|
4417
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
4418
|
+
className: styles$f.triggerText
|
|
4419
|
+
}, currentValue.name))
|
|
4420
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
4421
|
+
className: styles$f.popover
|
|
4411
4422
|
}, /*#__PURE__*/React.createElement("div", {
|
|
4412
4423
|
className: styles$f.searchWrapper
|
|
4413
4424
|
}, /*#__PURE__*/React.createElement(Search, {
|
|
@@ -4735,7 +4746,7 @@
|
|
|
4735
4746
|
}, option.label)));
|
|
4736
4747
|
};
|
|
4737
4748
|
|
|
4738
|
-
var styles$8 = {"
|
|
4749
|
+
var styles$8 = {"trigger":"es-trigger-YRz9p","triggerValue":"es-triggerValue-k-g2-","placeholder":"es-placeholder-F8-XP","chevron":"es-chevron-UbZv-","chevronOpen":"es-chevronOpen-Yui-r","dropdown":"es-dropdown-l2sra","option":"es-option-cv-7C","optionSelected":"es-optionSelected-K4e5h","optionDisabled":"es-optionDisabled-72jrC"};
|
|
4739
4750
|
|
|
4740
4751
|
const SelectSetter = props => {
|
|
4741
4752
|
const {
|
|
@@ -4746,22 +4757,8 @@
|
|
|
4746
4757
|
onChange
|
|
4747
4758
|
} = props;
|
|
4748
4759
|
const [open, setOpen] = React$1.useState(false);
|
|
4749
|
-
const containerRef = React$1.useRef(null);
|
|
4750
4760
|
const currentValue = value ?? initialValue ?? '';
|
|
4751
4761
|
const selectedOption = options.find(opt => opt.value === currentValue);
|
|
4752
|
-
React$1.useEffect(() => {
|
|
4753
|
-
const handleClickOutside = event => {
|
|
4754
|
-
if (containerRef.current && !containerRef.current.contains(event.target)) {
|
|
4755
|
-
setOpen(false);
|
|
4756
|
-
}
|
|
4757
|
-
};
|
|
4758
|
-
if (open) {
|
|
4759
|
-
document.addEventListener('mousedown', handleClickOutside);
|
|
4760
|
-
}
|
|
4761
|
-
return () => {
|
|
4762
|
-
document.removeEventListener('mousedown', handleClickOutside);
|
|
4763
|
-
};
|
|
4764
|
-
}, [open]);
|
|
4765
4762
|
const handleSelect = (optionValue, disabled) => {
|
|
4766
4763
|
if (disabled) {
|
|
4767
4764
|
return;
|
|
@@ -4769,21 +4766,22 @@
|
|
|
4769
4766
|
onChange(optionValue);
|
|
4770
4767
|
setOpen(false);
|
|
4771
4768
|
};
|
|
4772
|
-
return /*#__PURE__*/React.createElement(
|
|
4773
|
-
|
|
4774
|
-
|
|
4775
|
-
|
|
4776
|
-
|
|
4777
|
-
|
|
4778
|
-
|
|
4779
|
-
|
|
4780
|
-
|
|
4781
|
-
|
|
4782
|
-
|
|
4783
|
-
|
|
4784
|
-
|
|
4785
|
-
|
|
4786
|
-
|
|
4769
|
+
return /*#__PURE__*/React.createElement(Popover, {
|
|
4770
|
+
onClose: () => setOpen(false),
|
|
4771
|
+
open: open,
|
|
4772
|
+
trigger: /*#__PURE__*/React.createElement("button", {
|
|
4773
|
+
"aria-expanded": open,
|
|
4774
|
+
"aria-haspopup": "listbox",
|
|
4775
|
+
className: styles$8.trigger,
|
|
4776
|
+
onClick: () => setOpen(true),
|
|
4777
|
+
type: "button"
|
|
4778
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
4779
|
+
className: cn(styles$8.triggerValue, selectedOption ? '' : styles$8.placeholder)
|
|
4780
|
+
}, selectedOption?.label || placeholder || '请选择'), /*#__PURE__*/React.createElement(ChevronDown, {
|
|
4781
|
+
className: cn(styles$8.chevron, open ? styles$8.chevronOpen : '')
|
|
4782
|
+
}))
|
|
4783
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
4784
|
+
className: styles$8.dropdown,
|
|
4787
4785
|
role: "listbox"
|
|
4788
4786
|
}, options.map(option => /*#__PURE__*/React.createElement("button", {
|
|
4789
4787
|
"aria-selected": option.value === currentValue,
|
|
@@ -5298,6 +5296,7 @@
|
|
|
5298
5296
|
exports.NodeIdSetter = NodeIdSetter;
|
|
5299
5297
|
exports.NumberSetter = NumberSetter;
|
|
5300
5298
|
exports.ObjectSetter = ObjectSetter;
|
|
5299
|
+
exports.Popover = Popover;
|
|
5301
5300
|
exports.RectSetter = RectSetter;
|
|
5302
5301
|
exports.SegmentedSetter = SegmentedSetter;
|
|
5303
5302
|
exports.SelectSetter = SelectSetter;
|