@@ -15,15 +15,42 @@ See the License for the specific language governing permissions and
1515limitations under the License.
1616*/
1717
18+ import EditableItemList from "../elements/EditableItemList" ;
19+
1820const React = require ( 'react' ) ;
1921import PropTypes from 'prop-types' ;
2022const MatrixClientPeg = require ( '../../../MatrixClientPeg' ) ;
2123const sdk = require ( "../../../index" ) ;
2224import { _t } from '../../../languageHandler' ;
2325import Field from "../elements/Field" ;
2426import ErrorDialog from "../dialogs/ErrorDialog" ;
27+ import AccessibleButton from "../elements/AccessibleButton" ;
2528const Modal = require ( "../../../Modal" ) ;
2629
30+ class EditableAliasesList extends EditableItemList {
31+ _renderNewItemField ( ) {
32+ const RoomAliasField = sdk . getComponent ( 'views.elements.RoomAliasField' ) ;
33+ const onChange = ( alias ) => this . _onNewItemChanged ( { target : { value : alias } } ) ;
34+ return (
35+ < form
36+ onSubmit = { this . _onItemAdded }
37+ autoComplete = "off"
38+ noValidate = { true }
39+ className = "mx_EditableItemList_newItem"
40+ >
41+ < RoomAliasField
42+ id = { `mx_EditableItemList_new_${ this . props . id } ` }
43+ onChange = { onChange }
44+ value = { this . props . newItem || "" }
45+ domain = { this . props . domain } />
46+ < AccessibleButton onClick = { this . _onItemAdded } kind = "primary" >
47+ { _t ( "Add" ) }
48+ </ AccessibleButton >
49+ </ form >
50+ ) ;
51+ }
52+ }
53+
2754export default class AliasSettings extends React . Component {
2855 static propTypes = {
2956 roomId : PropTypes . string . isRequired ,
@@ -47,7 +74,6 @@ export default class AliasSettings extends React.Component {
4774 remoteDomains : [ ] , // [ domain.com, foobar.com ]
4875 canonicalAlias : null , // #canonical:domain.com
4976 updatingCanonicalAlias : false ,
50- newItem : "" ,
5177 } ;
5278
5379 const localDomain = MatrixClientPeg . get ( ) . getDomain ( ) ;
@@ -181,7 +207,6 @@ export default class AliasSettings extends React.Component {
181207 } ;
182208
183209 render ( ) {
184- const EditableItemList = sdk . getComponent ( "elements.EditableItemList" ) ;
185210 const localDomain = MatrixClientPeg . get ( ) . getDomain ( ) ;
186211
187212 let found = false ;
@@ -233,7 +258,7 @@ export default class AliasSettings extends React.Component {
233258 return (
234259 < div className = 'mx_AliasSettings' >
235260 { canonicalAliasSection }
236- < EditableItemList
261+ < EditableAliasesList
237262 id = "roomAliases"
238263 className = { "mx_RoomSettings_localAliases" }
239264 items = { this . state . domainToAliases [ localDomain ] || [ ] }
@@ -248,6 +273,7 @@ export default class AliasSettings extends React.Component {
248273 placeholder = { _t (
249274 'New address (e.g. #foo:%(localDomain)s)' , { localDomain : localDomain } ,
250275 ) }
276+ domain = { localDomain }
251277 />
252278 { remoteAliasesSection }
253279 </ div >
0 commit comments