@@ -13,6 +13,8 @@ export enum ChipsInputChangeReason {
13
13
Removed = 'removed'
14
14
}
15
15
16
+ type RenderChip = { index : number ; chip : ChipsInputChipProps ; isMarkedForRemoval : boolean } ;
17
+
16
18
export type ChipsInputChipProps = ChipProps & { invalid ?: boolean } ;
17
19
18
20
export type ChipsInputProps = Omit < TextFieldProps , 'ref' > & {
@@ -109,33 +111,40 @@ const ChipsInput = forwardRef((props: ChipsInputProps, refToForward: React.Ref<a
109
111
} ,
110
112
[ chips , props . onKeyPress , markedForRemoval , removeMarkedChip ] ) ;
111
113
114
+ const renderChip = ( props : RenderChip ) => {
115
+ const { index, chip, isMarkedForRemoval} = props ;
116
+ return (
117
+ < Chip
118
+ key = { index }
119
+ customValue = { index }
120
+ // resetSpacings
121
+ // paddingH-s2
122
+ marginR-s2
123
+ marginB-s2
124
+ dismissIcon = { removeIcon }
125
+ recorderTag = { 'mask' }
126
+ { ...defaultChipProps }
127
+ { ...( chip . invalid ? invalidChipProps : undefined ) }
128
+ { ...chip }
129
+ onPress = { onChipPress }
130
+ onDismiss = { isMarkedForRemoval ? removeMarkedChip : undefined }
131
+ />
132
+ ) ;
133
+ } ;
134
+
112
135
const chipList = useMemo ( ( ) => {
113
136
return (
114
137
< >
115
138
{ leadingAccessory }
116
139
{ map ( chips , ( chip , index ) => {
117
140
const isMarkedForRemoval = index === markedForRemoval ;
118
- return (
119
- < Chip
120
- key = { index }
121
- customValue = { index }
122
- // resetSpacings
123
- // paddingH-s2
124
- marginR-s2
125
- marginB-s2
126
- dismissIcon = { removeIcon }
127
- recorderTag = { 'mask' }
128
- { ...defaultChipProps }
129
- { ...( chip . invalid ? invalidChipProps : undefined ) }
130
- { ...chip }
131
- onPress = { onChipPress }
132
- onDismiss = { isMarkedForRemoval ? removeMarkedChip : undefined }
133
- />
134
- ) ;
141
+ if ( ! maxChips || index < maxChips ) {
142
+ return renderChip ( { index, chip, isMarkedForRemoval} ) ;
143
+ }
135
144
} ) }
136
145
</ >
137
146
) ;
138
- } , [ chips , leadingAccessory , defaultChipProps , removeMarkedChip , markedForRemoval ] ) ;
147
+ } , [ chips , leadingAccessory , defaultChipProps , removeMarkedChip , markedForRemoval , maxChips ] ) ;
139
148
140
149
return (
141
150
< TextField
0 commit comments