@aloudata/aloudata-design 2.19.9 → 2.19.10

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.
@@ -22,6 +22,11 @@ export interface ISelectProps<ValueType = any, OptionType extends BaseOptionType
22
22
  dropdownClassName?: string;
23
23
  popupClassName?: string;
24
24
  placement?: PlacementType;
25
+ /**
26
+ * 空间不足时自动计算下拉面板最大高度并启用内部滚动,继承自 dropdown。
27
+ * 透传至底层 Dropdown 的 size middleware,避免短视口下面板溢出浏览器。
28
+ */
29
+ allowOverlap?: boolean;
25
30
  labelInValue?: boolean;
26
31
  options?: OptionType[];
27
32
  menu?: SelectMenuProps;
@@ -150,6 +150,8 @@ export default function Panel(props) {
150
150
  width: panelwidth
151
151
  }
152
152
  }, multiple ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
153
+ className: 'ald-member-picker-inner'
154
+ }, /*#__PURE__*/React.createElement("div", {
153
155
  className: "ald-member-picker-member-selection-wrapper"
154
156
  }, renderDropdown()), /*#__PURE__*/React.createElement(SelectedMemberTags, {
155
157
  className: 'ald-member-picker-selected-member-tags',
@@ -159,7 +161,7 @@ export default function Panel(props) {
159
161
  lockedIds: lockedIds,
160
162
  userList: dataList,
161
163
  renderSelectedTag: renderSelectedTag
162
- }), /*#__PURE__*/React.createElement(SelectorFooter, {
164
+ })), /*#__PURE__*/React.createElement(SelectorFooter, {
163
165
  className: 'ald-member-picker-selector-footer',
164
166
  onCancel: onCancel,
165
167
  onOk: function onOk() {
@@ -35,6 +35,7 @@ import { EMemberPicker } from "./interface";
35
35
  import { isUser, isUserGroup } from "./utils/getUsersWithUserId";
36
36
  import AldSelect from "../AldSelect";
37
37
  var Component = function Component(props) {
38
+ var _props$allowOverlap;
38
39
  var _useContext = useContext(LocaleContext),
39
40
  locale = _useContext.locale;
40
41
  var t = getTranslator(locale);
@@ -63,6 +64,8 @@ var Component = function Component(props) {
63
64
  renderItem = props.renderItem,
64
65
  renderSelectedTag = props.renderSelectedTag,
65
66
  restProps = _objectWithoutProperties(props, _excluded);
67
+ // 自适应高度开关:默认开启,consumer 可显式传 allowOverlap={false} 关闭
68
+ var allowOverlap = (_props$allowOverlap = props.allowOverlap) !== null && _props$allowOverlap !== void 0 ? _props$allowOverlap : false;
66
69
  var _ConfigProvider$useGe = ConfigProvider.useGetUserList(),
67
70
  getUsersByIds = _ConfigProvider$useGe.getUsersByIds,
68
71
  getUsersByKeywords = _ConfigProvider$useGe.getUsersByKeywords;
@@ -263,6 +266,8 @@ var Component = function Component(props) {
263
266
  return /*#__PURE__*/React.createElement(AldSelect, _extends({
264
267
  prefix: propPrefix
265
268
  }, restProps, {
269
+ // 默认开启自适应高度,短视口下面板不再溢出浏览器
270
+ allowOverlap: allowOverlap,
266
271
  size: size,
267
272
  className: classNames('ald-member-picker-select', className),
268
273
  value: selectedUserList.map(function (item) {
@@ -322,7 +327,9 @@ var Component = function Component(props) {
322
327
  }
323
328
  _onClear === null || _onClear === void 0 ? void 0 : _onClear();
324
329
  },
325
- popupClassName: classNames('ald-member-picker-popup', props.popupClassName),
330
+ popupClassName: classNames('ald-member-picker-popup',
331
+ // allowOverlap 开启时去掉列表固定高度,让面板高度由浮层 max-height 兜底
332
+ allowOverlap && 'ald-member-picker-popup-adaptive', props.popupClassName),
326
333
  mode: mode,
327
334
  options: selectedUserList.map(function (item) {
328
335
  if (item.type === EUserType.USER_GROUP) return {
@@ -354,7 +361,11 @@ var Component = function Component(props) {
354
361
  placeholder: placeholder,
355
362
  dropdownRender: function dropdownRender() {
356
363
  return /*#__PURE__*/React.createElement("div", {
357
- ref: triggerRef
364
+ ref: triggerRef,
365
+ className: classNames({
366
+ // 自适应高度 flex 链:把浮层高度透传给面板
367
+ 'ald-member-picker-popup-body': allowOverlap
368
+ })
358
369
  }, /*#__PURE__*/React.createElement(Panel, {
359
370
  type: type,
360
371
  footer: footer,
@@ -31,6 +31,12 @@
31
31
  }
32
32
  }
33
33
 
34
+ // 上半区:选择列 + 已选列并排(footer 由 wrapper 排在其下方)
35
+ .ald-member-picker-inner {
36
+ display: flex;
37
+ width: 100%;
38
+ }
39
+
34
40
  .ald-member-picker-member-selection-wrapper {
35
41
  width: 50%;
36
42
  border-right: 1px solid var(--border-default);
@@ -84,6 +90,96 @@
84
90
  height: 260px;
85
91
  }
86
92
 
93
+ // allowOverlap 自适应高度:把浮层 size middleware 的 max-height 沿 flex 链传到列表。
94
+ // 面板上下分区——上半区(inner) flex 占满剩余高度、footer 固定最下,仅列表/已选内部滚动。
95
+ .ald-member-picker-popup-adaptive {
96
+ display: flex;
97
+ flex-direction: column;
98
+
99
+ // SelectTrigger 的 popup 容器
100
+ .beta-ald-select-popup {
101
+ flex: 1;
102
+ min-height: 0;
103
+ display: flex;
104
+ flex-direction: column;
105
+ max-height: 430px;
106
+ }
107
+
108
+ // dropdownRender 包裹层(triggerRef)
109
+ .ald-member-picker-popup-body {
110
+ flex: 1;
111
+ min-height: 0;
112
+ display: flex;
113
+ flex-direction: column;
114
+ }
115
+
116
+ // 面板根:flex 列,上半区占满、footer 固定底部
117
+ .ald-member-picker-wrapper {
118
+ flex: 1;
119
+ min-height: 0;
120
+ display: flex;
121
+ flex-direction: column;
122
+ flex-wrap: nowrap;
123
+ }
124
+
125
+ // 上半区:撑满剩余高度
126
+ .ald-member-picker-inner {
127
+ flex: 1;
128
+ min-height: 0;
129
+ }
130
+
131
+ // footer:自然高度,固定最下方
132
+ .ald-member-picker-selector-footer {
133
+ flex: 0 0 auto;
134
+ }
135
+
136
+ // 左侧选择列:撑满并把高度传给 Tabs
137
+ .ald-member-picker-member-selection-wrapper {
138
+ min-height: 0;
139
+ display: flex;
140
+ flex-direction: column;
141
+ }
142
+
143
+ // antd Tabs 撑满,把高度透传到 tabpane
144
+ .ald-member-tabs.ant-tabs {
145
+ flex: 1;
146
+ min-height: 0;
147
+ display: flex;
148
+ flex-direction: column;
149
+
150
+ .ant-tabs-content-holder {
151
+ flex: 1;
152
+ min-height: 0;
153
+ }
154
+
155
+ .ant-tabs-content {
156
+ height: 100%;
157
+ }
158
+
159
+ .ant-tabs-tabpane {
160
+ height: 100%;
161
+ }
162
+ }
163
+
164
+ .ald-member-picker-member-list-wrap {
165
+ height: 100%;
166
+ min-height: 0;
167
+ }
168
+
169
+ // 列表去掉固定高度,flex 撑满剩余空间,内部滚动(user-list 类已是 flex:1)
170
+ .ald-member-picker-member-list {
171
+ height: auto !important;
172
+ min-height: 0;
173
+ }
174
+
175
+ // 右侧"已选"列:撑满 + 内部滚动
176
+ .ald-member-picker-selected-member-tags-wrap {
177
+ min-height: 0;
178
+ max-height: none;
179
+ overflow: hidden;
180
+ }
181
+ }
182
+
87
183
  .ald-member-picker-selected-member-tags-wrap {
88
184
  width: 50%;
89
185
  max-height: 377px;
@@ -357,7 +453,7 @@
357
453
  }
358
454
 
359
455
  .ald-member-selected-member-wrapper {
360
- height: calc(100% - 24px);
456
+ height: calc(100% - 32px) !important;
361
457
  }
362
458
 
363
459
  .ald-member-picker-ban-badge {