@gm-pc/react 1.17.0-beta.7 → 1.17.0

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.7",
3
+ "version": "1.17.0",
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.7",
27
+ "@gm-pc/locales": "^1.17.0",
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": "0de55883ca052ab06bf3ec3a34dbac54583f1ffe"
51
+ "gitHead": "6c3fd305353d59583270491136f6d8665fe8427d"
52
52
  }
@@ -82,6 +82,7 @@ const AutoComplete = forwardRef<AutoCompleteRef, AutoCompleteProps>((props, ref)
82
82
  const inputNode = useRef<HTMLInputElement | null>(null)
83
83
 
84
84
  const triggerPopover = (value: boolean) => {
85
+ if (value === true && options.length <= 0) return
85
86
  popoverNode.current && popoverNode.current.apiDoSetActive(value)
86
87
  }
87
88
 
@@ -97,13 +98,25 @@ const AutoComplete = forwardRef<AutoCompleteRef, AutoCompleteProps>((props, ref)
97
98
  }, [value, options])
98
99
 
99
100
  const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {
100
- if (!popoverVisible.current) {
101
+ if (event.key === 'Enter') {
102
+ if (willActiveIndex >= 0) {
103
+ const val = options[willActiveIndex]?.value
104
+ if (!_.isNil(val) && value !== val) {
105
+ onChange && onChange(val)
106
+ triggerPopover(false)
107
+ return
108
+ }
109
+ if (popoverVisible.current) {
110
+ triggerPopover(false)
111
+ return
112
+ }
113
+ }
101
114
  onKeyDown && onKeyDown(event)
102
115
  return
103
116
  }
104
- if (event.key === 'Enter') {
105
- onChange && onChange(options[willActiveIndex].value)
106
- triggerPopover(false)
117
+ if (!popoverVisible.current) {
118
+ onKeyDown && onKeyDown(event)
119
+ return
107
120
  }
108
121
  if (event.key === 'Escape') {
109
122
  triggerPopover(false)
@@ -127,20 +140,16 @@ const AutoComplete = forwardRef<AutoCompleteRef, AutoCompleteProps>((props, ref)
127
140
  }
128
141
 
129
142
  const renderItem = useMemo(() => {
130
- if (renderOption) {
131
- return (value: ListDataItem<string>, index: number) => {
132
- return renderOption({ value: value.value }, index)
133
- }
143
+ if (!renderOption) return
144
+ return (value: ListDataItem<string>, index: number) => {
145
+ return renderOption({ value: value.value }, index)
134
146
  }
135
- return undefined
136
147
  }, [renderOption])
137
148
 
138
- useImperativeHandle(ref, () => {
139
- return {
140
- input: inputNode.current,
141
- triggerPopover,
142
- }
143
- })
149
+ useImperativeHandle(ref, () => ({
150
+ input: inputNode.current,
151
+ triggerPopover,
152
+ }))
144
153
 
145
154
  return (
146
155
  <Popover
@@ -177,9 +186,7 @@ const AutoComplete = forwardRef<AutoCompleteRef, AutoCompleteProps>((props, ref)
177
186
  value={value}
178
187
  onChange={(e) => {
179
188
  const val = e.target.value
180
- if (val.length === 0) {
181
- triggerPopover(true)
182
- }
189
+ triggerPopover(val.length === 0)
183
190
  onChange && onChange(val)
184
191
  }}
185
192
  onBlur={(e) => {
@@ -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,17 @@ 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
+ }, 100)
130
139
  }
131
140
 
132
141
  private _doSearch = (query: string): void => {
@@ -239,6 +248,7 @@ class MoreSelectBase<V extends string | number = string> extends Component<
239
248
  >
240
249
  <div className='gm-more-select-popup-input'>
241
250
  <Input
251
+ ref={this._inputRef}
242
252
  autoFocus
243
253
  value={searchValue}
244
254
  onChange={this._handleChange}
@@ -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) => {