@gm-pc/react 1.17.0-beta.9 → 1.18.0-beta.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gm-pc/react",
3
- "version": "1.17.0-beta.9",
3
+ "version": "1.18.0-beta.1",
4
4
  "description": "观麦前端基础组件库",
5
5
  "author": "liyatang <liyatang@qq.com>",
6
6
  "homepage": "https://github.com/gmfe/gm-pc#readme",
@@ -24,7 +24,7 @@
24
24
  "dependencies": {
25
25
  "@gm-common/hooks": "^2.10.0",
26
26
  "@gm-common/tool": "^2.10.0",
27
- "@gm-pc/locales": "^1.17.0-beta.9",
27
+ "@gm-pc/locales": "^1.18.0-beta.1",
28
28
  "big.js": "^6.0.1",
29
29
  "classnames": "^2.2.5",
30
30
  "lodash": "^4.17.19",
@@ -48,5 +48,5 @@
48
48
  "react-router-dom": "^5.2.0",
49
49
  "react-window": "^1.8.5"
50
50
  },
51
- "gitHead": "f2aadd59989a196ce17bc6e4d79ffd5fb36b5003"
51
+ "gitHead": "38d92355431b842668df4dd938b549f8887f7606"
52
52
  }
@@ -140,20 +140,16 @@ const AutoComplete = forwardRef<AutoCompleteRef, AutoCompleteProps>((props, ref)
140
140
  }
141
141
 
142
142
  const renderItem = useMemo(() => {
143
- if (renderOption) {
144
- return (value: ListDataItem<string>, index: number) => {
145
- return renderOption({ value: value.value }, index)
146
- }
143
+ if (!renderOption) return
144
+ return (value: ListDataItem<string>, index: number) => {
145
+ return renderOption({ value: value.value }, index)
147
146
  }
148
- return undefined
149
147
  }, [renderOption])
150
148
 
151
- useImperativeHandle(ref, () => {
152
- return {
153
- input: inputNode.current,
154
- triggerPopover,
155
- }
156
- })
149
+ useImperativeHandle(ref, () => ({
150
+ input: inputNode.current,
151
+ triggerPopover,
152
+ }))
157
153
 
158
154
  return (
159
155
  <Popover
@@ -46,6 +46,8 @@ class MoreSelectBase<V extends string | number = string> extends Component<
46
46
  private _baseRef = createRef<HTMLDivElement>()
47
47
  private _selectionRef = createRef<HTMLDivElement>()
48
48
  private _popoverRef = createRef<Popover>()
49
+ private _inputRef = createRef<HTMLInputElement>()
50
+
49
51
  private _filterData: MoreSelectGroupDataItem<V>[] | undefined
50
52
 
51
53
  constructor(props: MoreSelectBaseProps<V>) {
@@ -123,10 +125,20 @@ class MoreSelectBase<V extends string | number = string> extends Component<
123
125
  }
124
126
  }
125
127
 
126
- public _handleChange = (event: ChangeEvent<HTMLInputElement>): void => {
128
+ public _handleChange = (
129
+ event: ChangeEvent<HTMLInputElement>,
130
+ isInitSearch?: boolean
131
+ ): void => {
127
132
  const searchValue = event.target.value
128
133
  this.setState({ searchValue })
129
134
  this._debounceDoSearch(searchValue)
135
+ setTimeout(() => {
136
+ // eslint-disable-next-line no-unused-expressions
137
+ isInitSearch && this._inputRef.current?.select()
138
+ if (this.props.searchWhenActive) {
139
+ localStorage.setItem('_GM-PC_MORESELECT_SEARCHVALUE', this.state.searchValue)
140
+ }
141
+ }, 100)
130
142
  }
131
143
 
132
144
  private _doSearch = (query: string): void => {
@@ -239,6 +251,7 @@ class MoreSelectBase<V extends string | number = string> extends Component<
239
251
  >
240
252
  <div className='gm-more-select-popup-input'>
241
253
  <Input
254
+ ref={this._inputRef}
242
255
  autoFocus
243
256
  value={searchValue}
244
257
  onChange={this._handleChange}
@@ -282,6 +295,20 @@ class MoreSelectBase<V extends string | number = string> extends Component<
282
295
  }
283
296
  }
284
297
 
298
+ private _handlePopoverVisibleChange = (active: boolean) => {
299
+ if (active && this.props.searchWhenActive) {
300
+ const searchValue = localStorage.getItem('_GM-PC_MORESELECT_SEARCHVALUE')
301
+ if (searchValue) {
302
+ this.setState({ searchValue })
303
+ setTimeout(() => {
304
+ // eslint-disable-next-line no-unused-expressions
305
+ this._inputRef.current?.select()
306
+ this._debounceDoSearch(searchValue)
307
+ }, 0)
308
+ }
309
+ }
310
+ }
311
+
285
312
  render() {
286
313
  const {
287
314
  isInPopup,
@@ -316,6 +343,9 @@ class MoreSelectBase<V extends string | number = string> extends Component<
316
343
  popup={this._renderList}
317
344
  disabled={disabled}
318
345
  isInPopup={isInPopup}
346
+ onVisibleChange={(active) => {
347
+ this._handlePopoverVisibleChange(active)
348
+ }}
319
349
  >
320
350
  {children ?? (
321
351
  <Flex
@@ -53,9 +53,12 @@ class MoreSelect<V = any> extends Component<MoreSelectProps<V>> {
53
53
 
54
54
  public _handleInitSearch = (q?: string) => {
55
55
  // eslint-disable-next-line no-unused-expressions
56
- this._moreSelectBaseRef?.current?._handleChange({
57
- target: { value: q },
58
- } as ChangeEvent<HTMLInputElement>)
56
+ this._moreSelectBaseRef?.current?._handleChange(
57
+ {
58
+ target: { value: q },
59
+ } as ChangeEvent<HTMLInputElement>,
60
+ true
61
+ )
59
62
  }
60
63
 
61
64
  _renderListFilter = (data: MoreSelectGroupDataItem<V>[], searchValue: string) => {
@@ -78,6 +78,8 @@ interface MoreSelectBaseProps<V extends string | number = string>
78
78
  data: MoreSelectGroupDataItem<V>[],
79
79
  searchValue: string
80
80
  ): MoreSelectGroupDataItem<V>[]
81
+ /** 是否在active的时候搜索,订单业务相关,searchValue放在localstorage */
82
+ searchWhenActive?: boolean
81
83
  }
82
84
 
83
85
  type MoreSelectData<V extends string | number = string> =
@@ -88,7 +90,8 @@ type MoreSelectSelected<V extends string | number = string> =
88
90
  | MoreSelectDataItem<V>
89
91
 
90
92
  interface MoreSelectProps<V extends string | number = string>
91
- extends MoreSelectCommonProps<V> {
93
+ extends MoreSelectCommonProps<V>,
94
+ Pick<MoreSelectBaseProps, 'searchWhenActive'> {
92
95
  data?: MoreSelectData<V>
93
96
  selected?: MoreSelectSelected<V>
94
97
  value?: V | V[]