@@ -15,15 +15,38 @@ 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 onSubmit = { this . _onItemAdded } autoComplete = "off"
36+ noValidate = { true } className = "mx_EditableItemList_newItem" >
37+ < RoomAliasField
38+ id = { `mx_EditableItemList_new_${ this . props . id } ` }
39+ onChange = { onChange }
40+ value = { this . props . newItem || "" }
41+ domain = { this . props . domain } />
42+ < AccessibleButton onClick = { this . _onItemAdded } kind = "primary" >
43+ { _t ( "Add" ) }
44+ </ AccessibleButton >
45+ </ form >
46+ ) ;
47+ }
48+ }
49+
2750export default class AliasSettings extends React . Component {
2851 static propTypes = {
2952 roomId : PropTypes . string . isRequired ,
@@ -47,7 +70,6 @@ export default class AliasSettings extends React.Component {
4770 remoteDomains : [ ] , // [ domain.com, foobar.com ]
4871 canonicalAlias : null , // #canonical:domain.com
4972 updatingCanonicalAlias : false ,
50- newItem : "" ,
5173 } ;
5274
5375 const localDomain = MatrixClientPeg . get ( ) . getDomain ( ) ;
@@ -181,7 +203,6 @@ export default class AliasSettings extends React.Component {
181203 } ;
182204
183205 render ( ) {
184- const EditableItemList = sdk . getComponent ( "elements.EditableItemList" ) ;
185206 const localDomain = MatrixClientPeg . get ( ) . getDomain ( ) ;
186207
187208 let found = false ;
@@ -233,7 +254,7 @@ export default class AliasSettings extends React.Component {
233254 return (
234255 < div className = 'mx_AliasSettings' >
235256 { canonicalAliasSection }
236- < EditableItemList
257+ < EditableAliasesList
237258 id = "roomAliases"
238259 className = { "mx_RoomSettings_localAliases" }
239260 items = { this . state . domainToAliases [ localDomain ] || [ ] }
@@ -248,6 +269,7 @@ export default class AliasSettings extends React.Component {
248269 placeholder = { _t (
249270 'New address (e.g. #foo:%(localDomain)s)' , { localDomain : localDomain } ,
250271 ) }
272+ domain = { localDomain }
251273 />
252274 { remoteAliasesSection }
253275 </ div >
0 commit comments