Merge pull request #1677 from aidalgol/PropTypes

Remove use of deprecated React.PropTypes
This commit is contained in:
David Baker 2018-01-05 11:53:55 +00:00 committed by GitHub
commit 5aed77c752
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
123 changed files with 750 additions and 632 deletions

View file

@ -19,6 +19,7 @@ limitations under the License.
const React = require('react'); const React = require('react');
const ReactDOM = require('react-dom'); const ReactDOM = require('react-dom');
import PropTypes from 'prop-types';
import Analytics from './Analytics'; import Analytics from './Analytics';
import sdk from './index'; import sdk from './index';
@ -33,7 +34,7 @@ const AsyncWrapper = React.createClass({
/** A function which takes a 'callback' argument which it will call /** A function which takes a 'callback' argument which it will call
* with the real component once it loads. * with the real component once it loads.
*/ */
loader: React.PropTypes.func.isRequired, loader: PropTypes.func.isRequired,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -1,5 +1,6 @@
const React = require('react'); const React = require('react');
const ReactDom = require('react-dom'); const ReactDom = require('react-dom');
import PropTypes from 'prop-types';
const Velocity = require('velocity-vector'); const Velocity = require('velocity-vector');
/** /**
@ -14,16 +15,16 @@ module.exports = React.createClass({
propTypes: { propTypes: {
// either a list of child nodes, or a single child. // either a list of child nodes, or a single child.
children: React.PropTypes.any, children: PropTypes.any,
// optional transition information for changing existing children // optional transition information for changing existing children
transition: React.PropTypes.object, transition: PropTypes.object,
// a list of state objects to apply to each child node in turn // a list of state objects to apply to each child node in turn
startStyles: React.PropTypes.array, startStyles: PropTypes.array,
// a list of transition options from the corresponding startStyle // a list of transition options from the corresponding startStyle
enterTransitionOpts: React.PropTypes.array, enterTransitionOpts: PropTypes.array,
}, },
getDefaultProps: function() { getDefaultProps: function() {

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
const React = require("react"); const React = require("react");
import PropTypes from 'prop-types';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
const sdk = require('../../../index'); const sdk = require('../../../index');
const MatrixClientPeg = require("../../../MatrixClientPeg"); const MatrixClientPeg = require("../../../MatrixClientPeg");
@ -23,8 +24,8 @@ module.exports = React.createClass({
displayName: 'EncryptedEventDialog', displayName: 'EncryptedEventDialog',
propTypes: { propTypes: {
event: React.PropTypes.object.isRequired, event: PropTypes.object.isRequired,
onFinished: React.PropTypes.func.isRequired, onFinished: PropTypes.func.isRequired,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -16,6 +16,7 @@ limitations under the License.
import FileSaver from 'file-saver'; import FileSaver from 'file-saver';
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
import * as Matrix from 'matrix-js-sdk'; import * as Matrix from 'matrix-js-sdk';
@ -29,8 +30,8 @@ export default React.createClass({
displayName: 'ExportE2eKeysDialog', displayName: 'ExportE2eKeysDialog',
propTypes: { propTypes: {
matrixClient: React.PropTypes.instanceOf(Matrix.MatrixClient).isRequired, matrixClient: PropTypes.instanceOf(Matrix.MatrixClient).isRequired,
onFinished: React.PropTypes.func.isRequired, onFinished: PropTypes.func.isRequired,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import * as Matrix from 'matrix-js-sdk'; import * as Matrix from 'matrix-js-sdk';
import * as MegolmExportEncryption from '../../../utils/MegolmExportEncryption'; import * as MegolmExportEncryption from '../../../utils/MegolmExportEncryption';
@ -40,8 +41,8 @@ export default React.createClass({
displayName: 'ImportE2eKeysDialog', displayName: 'ImportE2eKeysDialog',
propTypes: { propTypes: {
matrixClient: React.PropTypes.instanceOf(Matrix.MatrixClient).isRequired, matrixClient: PropTypes.instanceOf(Matrix.MatrixClient).isRequired,
onFinished: React.PropTypes.func.isRequired, onFinished: PropTypes.func.isRequired,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames'; import classNames from 'classnames';
/* These were earlier stateless functional components but had to be converted /* These were earlier stateless functional components but had to be converted
@ -42,10 +43,10 @@ export class TextualCompletion extends React.Component {
} }
} }
TextualCompletion.propTypes = { TextualCompletion.propTypes = {
title: React.PropTypes.string, title: PropTypes.string,
subtitle: React.PropTypes.string, subtitle: PropTypes.string,
description: React.PropTypes.string, description: PropTypes.string,
className: React.PropTypes.string, className: PropTypes.string,
}; };
export class PillCompletion extends React.Component { export class PillCompletion extends React.Component {
@ -69,9 +70,9 @@ export class PillCompletion extends React.Component {
} }
} }
PillCompletion.propTypes = { PillCompletion.propTypes = {
title: React.PropTypes.string, title: PropTypes.string,
subtitle: React.PropTypes.string, subtitle: PropTypes.string,
description: React.PropTypes.string, description: PropTypes.string,
initialComponent: React.PropTypes.element, initialComponent: PropTypes.element,
className: React.PropTypes.string, className: PropTypes.string,
}; };

View file

@ -20,6 +20,7 @@ limitations under the License.
const classNames = require('classnames'); const classNames = require('classnames');
const React = require('react'); const React = require('react');
const ReactDOM = require('react-dom'); const ReactDOM = require('react-dom');
import PropTypes from 'prop-types';
// Shamelessly ripped off Modal.js. There's probably a better way // Shamelessly ripped off Modal.js. There's probably a better way
// of doing reusable widgets like dialog boxes & menus where we go and // of doing reusable widgets like dialog boxes & menus where we go and
@ -29,11 +30,11 @@ module.exports = {
ContextualMenuContainerId: "mx_ContextualMenu_Container", ContextualMenuContainerId: "mx_ContextualMenu_Container",
propTypes: { propTypes: {
menuWidth: React.PropTypes.number, menuWidth: PropTypes.number,
menuHeight: React.PropTypes.number, menuHeight: PropTypes.number,
chevronOffset: React.PropTypes.number, chevronOffset: PropTypes.number,
menuColour: React.PropTypes.string, menuColour: PropTypes.string,
chevronFace: React.PropTypes.string, // top, bottom, left, right chevronFace: PropTypes.string, // top, bottom, left, right
}, },
getOrCreateContainer: function() { getOrCreateContainer: function() {

View file

@ -17,6 +17,7 @@ limitations under the License.
'use strict'; 'use strict';
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import { _t } from '../../languageHandler'; import { _t } from '../../languageHandler';
import sdk from '../../index'; import sdk from '../../index';
import MatrixClientPeg from '../../MatrixClientPeg'; import MatrixClientPeg from '../../MatrixClientPeg';
@ -30,8 +31,8 @@ module.exports = React.createClass({
displayName: 'CreateRoom', displayName: 'CreateRoom',
propTypes: { propTypes: {
onRoomCreated: React.PropTypes.func, onRoomCreated: PropTypes.func,
collapsedRhs: React.PropTypes.bool, collapsedRhs: PropTypes.bool,
}, },
phases: { phases: {

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import Matrix from 'matrix-js-sdk'; import Matrix from 'matrix-js-sdk';
import sdk from '../../index'; import sdk from '../../index';
@ -28,7 +29,7 @@ const FilePanel = React.createClass({
displayName: 'FilePanel', displayName: 'FilePanel',
propTypes: { propTypes: {
roomId: React.PropTypes.string.isRequired, roomId: PropTypes.string.isRequired,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -390,7 +390,7 @@ const FeaturedUser = React.createClass({
}); });
const GroupContext = { const GroupContext = {
groupStore: React.PropTypes.instanceOf(GroupStore).isRequired, groupStore: PropTypes.instanceOf(GroupStore).isRequired,
}; };
CategoryRoomList.contextTypes = GroupContext; CategoryRoomList.contextTypes = GroupContext;
@ -408,7 +408,7 @@ export default React.createClass({
}, },
childContextTypes: { childContextTypes: {
groupStore: React.PropTypes.instanceOf(GroupStore), groupStore: PropTypes.instanceOf(GroupStore),
}, },
getChildContext: function() { getChildContext: function() {

View file

@ -18,6 +18,7 @@ import Matrix from 'matrix-js-sdk';
const InteractiveAuth = Matrix.InteractiveAuth; const InteractiveAuth = Matrix.InteractiveAuth;
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import {getEntryComponentForLoginType} from '../views/login/InteractiveAuthEntryComponents'; import {getEntryComponentForLoginType} from '../views/login/InteractiveAuthEntryComponents';
@ -26,18 +27,18 @@ export default React.createClass({
propTypes: { propTypes: {
// matrix client to use for UI auth requests // matrix client to use for UI auth requests
matrixClient: React.PropTypes.object.isRequired, matrixClient: PropTypes.object.isRequired,
// response from initial request. If not supplied, will do a request on // response from initial request. If not supplied, will do a request on
// mount. // mount.
authData: React.PropTypes.shape({ authData: PropTypes.shape({
flows: React.PropTypes.array, flows: PropTypes.array,
params: React.PropTypes.object, params: PropTypes.object,
session: React.PropTypes.string, session: PropTypes.string,
}), }),
// callback // callback
makeRequest: React.PropTypes.func.isRequired, makeRequest: PropTypes.func.isRequired,
// callback called when the auth process has finished, // callback called when the auth process has finished,
// successfully or unsuccessfully. // successfully or unsuccessfully.
@ -51,22 +52,22 @@ export default React.createClass({
// the auth session. // the auth session.
// * clientSecret {string} The client secret used in auth // * clientSecret {string} The client secret used in auth
// sessions with the ID server. // sessions with the ID server.
onAuthFinished: React.PropTypes.func.isRequired, onAuthFinished: PropTypes.func.isRequired,
// Inputs provided by the user to the auth process // Inputs provided by the user to the auth process
// and used by various stages. As passed to js-sdk // and used by various stages. As passed to js-sdk
// interactive-auth // interactive-auth
inputs: React.PropTypes.object, inputs: PropTypes.object,
// As js-sdk interactive-auth // As js-sdk interactive-auth
makeRegistrationUrl: React.PropTypes.func, makeRegistrationUrl: PropTypes.func,
sessionId: React.PropTypes.string, sessionId: PropTypes.string,
clientSecret: React.PropTypes.string, clientSecret: PropTypes.string,
emailSid: React.PropTypes.string, emailSid: PropTypes.string,
// If true, poll to see if the auth flow has been completed // If true, poll to see if the auth flow has been completed
// out-of-band // out-of-band
poll: React.PropTypes.bool, poll: PropTypes.bool,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -18,6 +18,7 @@ limitations under the License.
import * as Matrix from 'matrix-js-sdk'; import * as Matrix from 'matrix-js-sdk';
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import { DragDropContext } from 'react-dnd'; import { DragDropContext } from 'react-dnd';
import HTML5Backend from 'react-dnd-html5-backend'; import HTML5Backend from 'react-dnd-html5-backend';
@ -44,23 +45,23 @@ const LoggedInView = React.createClass({
displayName: 'LoggedInView', displayName: 'LoggedInView',
propTypes: { propTypes: {
matrixClient: React.PropTypes.instanceOf(Matrix.MatrixClient).isRequired, matrixClient: PropTypes.instanceOf(Matrix.MatrixClient).isRequired,
page_type: React.PropTypes.string.isRequired, page_type: PropTypes.string.isRequired,
onRoomCreated: React.PropTypes.func, onRoomCreated: PropTypes.func,
onUserSettingsClose: React.PropTypes.func, onUserSettingsClose: PropTypes.func,
// Called with the credentials of a registered user (if they were a ROU that // Called with the credentials of a registered user (if they were a ROU that
// transitioned to PWLU) // transitioned to PWLU)
onRegistered: React.PropTypes.func, onRegistered: PropTypes.func,
teamToken: React.PropTypes.string, teamToken: PropTypes.string,
// and lots and lots of other stuff. // and lots and lots of other stuff.
}, },
childContextTypes: { childContextTypes: {
matrixClient: React.PropTypes.instanceOf(Matrix.MatrixClient), matrixClient: PropTypes.instanceOf(Matrix.MatrixClient),
authCache: React.PropTypes.object, authCache: PropTypes.object,
}, },
getChildContext: function() { getChildContext: function() {

View file

@ -19,6 +19,7 @@ limitations under the License.
import Promise from 'bluebird'; import Promise from 'bluebird';
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import Matrix from "matrix-js-sdk"; import Matrix from "matrix-js-sdk";
import Analytics from "../../Analytics"; import Analytics from "../../Analytics";
@ -92,38 +93,38 @@ export default React.createClass({
displayName: 'MatrixChat', displayName: 'MatrixChat',
propTypes: { propTypes: {
config: React.PropTypes.object, config: PropTypes.object,
ConferenceHandler: React.PropTypes.any, ConferenceHandler: PropTypes.any,
onNewScreen: React.PropTypes.func, onNewScreen: PropTypes.func,
registrationUrl: React.PropTypes.string, registrationUrl: PropTypes.string,
enableGuest: React.PropTypes.bool, enableGuest: PropTypes.bool,
// the queryParams extracted from the [real] query-string of the URI // the queryParams extracted from the [real] query-string of the URI
realQueryParams: React.PropTypes.object, realQueryParams: PropTypes.object,
// the initial queryParams extracted from the hash-fragment of the URI // the initial queryParams extracted from the hash-fragment of the URI
startingFragmentQueryParams: React.PropTypes.object, startingFragmentQueryParams: PropTypes.object,
// called when we have completed a token login // called when we have completed a token login
onTokenLoginCompleted: React.PropTypes.func, onTokenLoginCompleted: PropTypes.func,
// Represents the screen to display as a result of parsing the initial // Represents the screen to display as a result of parsing the initial
// window.location // window.location
initialScreenAfterLogin: React.PropTypes.shape({ initialScreenAfterLogin: PropTypes.shape({
screen: React.PropTypes.string.isRequired, screen: PropTypes.string.isRequired,
params: React.PropTypes.object, params: PropTypes.object,
}), }),
// displayname, if any, to set on the device when logging // displayname, if any, to set on the device when logging
// in/registering. // in/registering.
defaultDeviceDisplayName: React.PropTypes.string, defaultDeviceDisplayName: PropTypes.string,
// A function that makes a registration URL // A function that makes a registration URL
makeRegistrationUrl: React.PropTypes.func.isRequired, makeRegistrationUrl: PropTypes.func.isRequired,
}, },
childContextTypes: { childContextTypes: {
appConfig: React.PropTypes.object, appConfig: PropTypes.object,
}, },
AuxPanel: { AuxPanel: {

View file

@ -16,6 +16,7 @@ limitations under the License.
import React from 'react'; import React from 'react';
import ReactDOM from 'react-dom'; import ReactDOM from 'react-dom';
import PropTypes from 'prop-types';
import classNames from 'classnames'; import classNames from 'classnames';
import shouldHideEvent from '../../shouldHideEvent'; import shouldHideEvent from '../../shouldHideEvent';
import dis from "../../dispatcher"; import dis from "../../dispatcher";
@ -32,63 +33,63 @@ module.exports = React.createClass({
propTypes: { propTypes: {
// true to give the component a 'display: none' style. // true to give the component a 'display: none' style.
hidden: React.PropTypes.bool, hidden: PropTypes.bool,
// true to show a spinner at the top of the timeline to indicate // true to show a spinner at the top of the timeline to indicate
// back-pagination in progress // back-pagination in progress
backPaginating: React.PropTypes.bool, backPaginating: PropTypes.bool,
// true to show a spinner at the end of the timeline to indicate // true to show a spinner at the end of the timeline to indicate
// forward-pagination in progress // forward-pagination in progress
forwardPaginating: React.PropTypes.bool, forwardPaginating: PropTypes.bool,
// the list of MatrixEvents to display // the list of MatrixEvents to display
events: React.PropTypes.array.isRequired, events: PropTypes.array.isRequired,
// ID of an event to highlight. If undefined, no event will be highlighted. // ID of an event to highlight. If undefined, no event will be highlighted.
highlightedEventId: React.PropTypes.string, highlightedEventId: PropTypes.string,
// Should we show URL Previews // Should we show URL Previews
showUrlPreview: React.PropTypes.bool, showUrlPreview: PropTypes.bool,
// event after which we should show a read marker // event after which we should show a read marker
readMarkerEventId: React.PropTypes.string, readMarkerEventId: PropTypes.string,
// whether the read marker should be visible // whether the read marker should be visible
readMarkerVisible: React.PropTypes.bool, readMarkerVisible: PropTypes.bool,
// the userid of our user. This is used to suppress the read marker // the userid of our user. This is used to suppress the read marker
// for pending messages. // for pending messages.
ourUserId: React.PropTypes.string, ourUserId: PropTypes.string,
// true to suppress the date at the start of the timeline // true to suppress the date at the start of the timeline
suppressFirstDateSeparator: React.PropTypes.bool, suppressFirstDateSeparator: PropTypes.bool,
// whether to show read receipts // whether to show read receipts
showReadReceipts: React.PropTypes.bool, showReadReceipts: PropTypes.bool,
// true if updates to the event list should cause the scroll panel to // true if updates to the event list should cause the scroll panel to
// scroll down when we are at the bottom of the window. See ScrollPanel // scroll down when we are at the bottom of the window. See ScrollPanel
// for more details. // for more details.
stickyBottom: React.PropTypes.bool, stickyBottom: PropTypes.bool,
// callback which is called when the panel is scrolled. // callback which is called when the panel is scrolled.
onScroll: React.PropTypes.func, onScroll: PropTypes.func,
// callback which is called when more content is needed. // callback which is called when more content is needed.
onFillRequest: React.PropTypes.func, onFillRequest: PropTypes.func,
// className for the panel // className for the panel
className: React.PropTypes.string.isRequired, className: PropTypes.string.isRequired,
// shape parameter to be passed to EventTiles // shape parameter to be passed to EventTiles
tileShape: React.PropTypes.string, tileShape: PropTypes.string,
// show twelve hour timestamps // show twelve hour timestamps
isTwelveHour: React.PropTypes.bool, isTwelveHour: PropTypes.bool,
// show timestamps always // show timestamps always
alwaysShowTimestamps: React.PropTypes.bool, alwaysShowTimestamps: PropTypes.bool,
}, },
componentWillMount: function() { componentWillMount: function() {

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import GeminiScrollbar from 'react-gemini-scrollbar'; import GeminiScrollbar from 'react-gemini-scrollbar';
import sdk from '../../index'; import sdk from '../../index';
import { _t } from '../../languageHandler'; import { _t } from '../../languageHandler';
@ -26,7 +27,7 @@ export default withMatrixClient(React.createClass({
displayName: 'MyGroups', displayName: 'MyGroups',
propTypes: { propTypes: {
matrixClient: React.PropTypes.object.isRequired, matrixClient: PropTypes.object.isRequired,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -16,6 +16,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import Matrix from 'matrix-js-sdk'; import Matrix from 'matrix-js-sdk';
import { _t } from '../../languageHandler'; import { _t } from '../../languageHandler';
import sdk from '../../index'; import sdk from '../../index';
@ -41,59 +42,59 @@ module.exports = React.createClass({
propTypes: { propTypes: {
// the room this statusbar is representing. // the room this statusbar is representing.
room: React.PropTypes.object.isRequired, room: PropTypes.object.isRequired,
// the number of messages which have arrived since we've been scrolled up // the number of messages which have arrived since we've been scrolled up
numUnreadMessages: React.PropTypes.number, numUnreadMessages: PropTypes.number,
// this is true if we are fully scrolled-down, and are looking at // this is true if we are fully scrolled-down, and are looking at
// the end of the live timeline. // the end of the live timeline.
atEndOfLiveTimeline: React.PropTypes.bool, atEndOfLiveTimeline: PropTypes.bool,
// This is true when the user is alone in the room, but has also sent a message. // This is true when the user is alone in the room, but has also sent a message.
// Used to suggest to the user to invite someone // Used to suggest to the user to invite someone
sentMessageAndIsAlone: React.PropTypes.bool, sentMessageAndIsAlone: PropTypes.bool,
// true if there is an active call in this room (means we show // true if there is an active call in this room (means we show
// the 'Active Call' text in the status bar if there is nothing // the 'Active Call' text in the status bar if there is nothing
// more interesting) // more interesting)
hasActiveCall: React.PropTypes.bool, hasActiveCall: PropTypes.bool,
// Number of names to display in typing indication. E.g. set to 3, will // Number of names to display in typing indication. E.g. set to 3, will
// result in "X, Y, Z and 100 others are typing." // result in "X, Y, Z and 100 others are typing."
whoIsTypingLimit: React.PropTypes.number, whoIsTypingLimit: PropTypes.number,
// callback for when the user clicks on the 'resend all' button in the // callback for when the user clicks on the 'resend all' button in the
// 'unsent messages' bar // 'unsent messages' bar
onResendAllClick: React.PropTypes.func, onResendAllClick: PropTypes.func,
// callback for when the user clicks on the 'cancel all' button in the // callback for when the user clicks on the 'cancel all' button in the
// 'unsent messages' bar // 'unsent messages' bar
onCancelAllClick: React.PropTypes.func, onCancelAllClick: PropTypes.func,
// callback for when the user clicks on the 'invite others' button in the // callback for when the user clicks on the 'invite others' button in the
// 'you are alone' bar // 'you are alone' bar
onInviteClick: React.PropTypes.func, onInviteClick: PropTypes.func,
// callback for when the user clicks on the 'stop warning me' button in the // callback for when the user clicks on the 'stop warning me' button in the
// 'you are alone' bar // 'you are alone' bar
onStopWarningClick: React.PropTypes.func, onStopWarningClick: PropTypes.func,
// callback for when the user clicks on the 'scroll to bottom' button // callback for when the user clicks on the 'scroll to bottom' button
onScrollToBottomClick: React.PropTypes.func, onScrollToBottomClick: PropTypes.func,
// callback for when we do something that changes the size of the // callback for when we do something that changes the size of the
// status bar. This is used to trigger a re-layout in the parent // status bar. This is used to trigger a re-layout in the parent
// component. // component.
onResize: React.PropTypes.func, onResize: PropTypes.func,
// callback for when the status bar can be hidden from view, as it is // callback for when the status bar can be hidden from view, as it is
// not displaying anything // not displaying anything
onHidden: React.PropTypes.func, onHidden: PropTypes.func,
// callback for when the status bar is displaying something and should // callback for when the status bar is displaying something and should
// be visible // be visible
onVisible: React.PropTypes.func, onVisible: PropTypes.func,
}, },
getDefaultProps: function() { getDefaultProps: function() {

View file

@ -24,6 +24,7 @@ import shouldHideEvent from "../../shouldHideEvent";
const React = require("react"); const React = require("react");
const ReactDOM = require("react-dom"); const ReactDOM = require("react-dom");
import PropTypes from 'prop-types';
import Promise from 'bluebird'; import Promise from 'bluebird';
const classNames = require("classnames"); const classNames = require("classnames");
import { _t } from '../../languageHandler'; import { _t } from '../../languageHandler';
@ -58,18 +59,18 @@ if (DEBUG) {
module.exports = React.createClass({ module.exports = React.createClass({
displayName: 'RoomView', displayName: 'RoomView',
propTypes: { propTypes: {
ConferenceHandler: React.PropTypes.any, ConferenceHandler: PropTypes.any,
// Called with the credentials of a registered user (if they were a ROU that // Called with the credentials of a registered user (if they were a ROU that
// transitioned to PWLU) // transitioned to PWLU)
onRegistered: React.PropTypes.func, onRegistered: PropTypes.func,
// An object representing a third party invite to join this room // An object representing a third party invite to join this room
// Fields: // Fields:
// * inviteSignUrl (string) The URL used to join this room from an email invite // * inviteSignUrl (string) The URL used to join this room from an email invite
// (given as part of the link in the invite email) // (given as part of the link in the invite email)
// * invitedEmail (string) The email address that was invited to this room // * invitedEmail (string) The email address that was invited to this room
thirdPartyInvite: React.PropTypes.object, thirdPartyInvite: PropTypes.object,
// Any data about the room that would normally come from the Home Server // Any data about the room that would normally come from the Home Server
// but has been passed out-of-band, eg. the room name and avatar URL // but has been passed out-of-band, eg. the room name and avatar URL
@ -80,10 +81,10 @@ module.exports = React.createClass({
// * avatarUrl (string) The mxc:// avatar URL for the room // * avatarUrl (string) The mxc:// avatar URL for the room
// * inviterName (string) The display name of the person who // * inviterName (string) The display name of the person who
// * invited us tovthe room // * invited us tovthe room
oobData: React.PropTypes.object, oobData: PropTypes.object,
// is the RightPanel collapsed? // is the RightPanel collapsed?
collapsedRhs: React.PropTypes.bool, collapsedRhs: PropTypes.bool,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -16,6 +16,7 @@ limitations under the License.
const React = require("react"); const React = require("react");
const ReactDOM = require("react-dom"); const ReactDOM = require("react-dom");
import PropTypes from 'prop-types';
const GeminiScrollbar = require('react-gemini-scrollbar'); const GeminiScrollbar = require('react-gemini-scrollbar');
import Promise from 'bluebird'; import Promise from 'bluebird';
import { KeyCode } from '../../Keyboard'; import { KeyCode } from '../../Keyboard';
@ -86,7 +87,7 @@ module.exports = React.createClass({
* scroll down to show the new element, rather than preserving the * scroll down to show the new element, rather than preserving the
* existing view. * existing view.
*/ */
stickyBottom: React.PropTypes.bool, stickyBottom: PropTypes.bool,
/* startAtBottom: if set to true, the view is assumed to start /* startAtBottom: if set to true, the view is assumed to start
* scrolled to the bottom. * scrolled to the bottom.
@ -95,7 +96,7 @@ module.exports = React.createClass({
* behaviour stays the same for other uses of ScrollPanel. * behaviour stays the same for other uses of ScrollPanel.
* If so, let's remove this parameter down the line. * If so, let's remove this parameter down the line.
*/ */
startAtBottom: React.PropTypes.bool, startAtBottom: PropTypes.bool,
/* onFillRequest(backwards): a callback which is called on scroll when /* onFillRequest(backwards): a callback which is called on scroll when
* the user nears the start (backwards = true) or end (backwards = * the user nears the start (backwards = true) or end (backwards =
@ -110,7 +111,7 @@ module.exports = React.createClass({
* directon (at this time) - which will stop the pagination cycle until * directon (at this time) - which will stop the pagination cycle until
* the user scrolls again. * the user scrolls again.
*/ */
onFillRequest: React.PropTypes.func, onFillRequest: PropTypes.func,
/* onUnfillRequest(backwards): a callback which is called on scroll when /* onUnfillRequest(backwards): a callback which is called on scroll when
* there are children elements that are far out of view and could be removed * there are children elements that are far out of view and could be removed
@ -121,24 +122,24 @@ module.exports = React.createClass({
* first element to remove if removing from the front/bottom, and last element * first element to remove if removing from the front/bottom, and last element
* to remove if removing from the back/top. * to remove if removing from the back/top.
*/ */
onUnfillRequest: React.PropTypes.func, onUnfillRequest: PropTypes.func,
/* onScroll: a callback which is called whenever any scroll happens. /* onScroll: a callback which is called whenever any scroll happens.
*/ */
onScroll: React.PropTypes.func, onScroll: PropTypes.func,
/* onResize: a callback which is called whenever the Gemini scroll /* onResize: a callback which is called whenever the Gemini scroll
* panel is resized * panel is resized
*/ */
onResize: React.PropTypes.func, onResize: PropTypes.func,
/* className: classnames to add to the top-level div /* className: classnames to add to the top-level div
*/ */
className: React.PropTypes.string, className: PropTypes.string,
/* style: styles to add to the top-level div /* style: styles to add to the top-level div
*/ */
style: React.PropTypes.object, style: PropTypes.object,
}, },
getDefaultProps: function() { getDefaultProps: function() {

View file

@ -19,6 +19,7 @@ import SettingsStore from "../../settings/SettingsStore";
const React = require('react'); const React = require('react');
const ReactDOM = require("react-dom"); const ReactDOM = require("react-dom");
import PropTypes from 'prop-types';
import Promise from 'bluebird'; import Promise from 'bluebird';
const Matrix = require("matrix-js-sdk"); const Matrix = require("matrix-js-sdk");
@ -58,49 +59,49 @@ var TimelinePanel = React.createClass({
// representing. This may or may not have a room, depending on what it's // representing. This may or may not have a room, depending on what it's
// a timeline representing. If it has a room, we maintain RRs etc for // a timeline representing. If it has a room, we maintain RRs etc for
// that room. // that room.
timelineSet: React.PropTypes.object.isRequired, timelineSet: PropTypes.object.isRequired,
showReadReceipts: React.PropTypes.bool, showReadReceipts: PropTypes.bool,
// Enable managing RRs and RMs. These require the timelineSet to have a room. // Enable managing RRs and RMs. These require the timelineSet to have a room.
manageReadReceipts: React.PropTypes.bool, manageReadReceipts: PropTypes.bool,
manageReadMarkers: React.PropTypes.bool, manageReadMarkers: PropTypes.bool,
// true to give the component a 'display: none' style. // true to give the component a 'display: none' style.
hidden: React.PropTypes.bool, hidden: PropTypes.bool,
// ID of an event to highlight. If undefined, no event will be highlighted. // ID of an event to highlight. If undefined, no event will be highlighted.
// typically this will be either 'eventId' or undefined. // typically this will be either 'eventId' or undefined.
highlightedEventId: React.PropTypes.string, highlightedEventId: PropTypes.string,
// id of an event to jump to. If not given, will go to the end of the // id of an event to jump to. If not given, will go to the end of the
// live timeline. // live timeline.
eventId: React.PropTypes.string, eventId: PropTypes.string,
// where to position the event given by eventId, in pixels from the // where to position the event given by eventId, in pixels from the
// bottom of the viewport. If not given, will try to put the event // bottom of the viewport. If not given, will try to put the event
// half way down the viewport. // half way down the viewport.
eventPixelOffset: React.PropTypes.number, eventPixelOffset: PropTypes.number,
// Should we show URL Previews // Should we show URL Previews
showUrlPreview: React.PropTypes.bool, showUrlPreview: PropTypes.bool,
// callback which is called when the panel is scrolled. // callback which is called when the panel is scrolled.
onScroll: React.PropTypes.func, onScroll: PropTypes.func,
// callback which is called when the read-up-to mark is updated. // callback which is called when the read-up-to mark is updated.
onReadMarkerUpdated: React.PropTypes.func, onReadMarkerUpdated: PropTypes.func,
// maximum number of events to show in a timeline // maximum number of events to show in a timeline
timelineCap: React.PropTypes.number, timelineCap: PropTypes.number,
// classname to use for the messagepanel // classname to use for the messagepanel
className: React.PropTypes.string, className: PropTypes.string,
// shape property to be passed to EventTiles // shape property to be passed to EventTiles
tileShape: React.PropTypes.string, tileShape: PropTypes.string,
// placeholder text to use if the timeline is empty // placeholder text to use if the timeline is empty
empty: React.PropTypes.string, empty: PropTypes.string,
}, },
statics: { statics: {

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
const React = require('react'); const React = require('react');
import PropTypes from 'prop-types';
const ContentMessages = require('../../ContentMessages'); const ContentMessages = require('../../ContentMessages');
const dis = require('../../dispatcher'); const dis = require('../../dispatcher');
const filesize = require('filesize'); const filesize = require('filesize');
@ -22,7 +23,7 @@ import { _t } from '../../languageHandler';
module.exports = React.createClass({displayName: 'UploadBar', module.exports = React.createClass({displayName: 'UploadBar',
propTypes: { propTypes: {
room: React.PropTypes.object, room: PropTypes.object,
}, },
componentDidMount: function() { componentDidMount: function() {

View file

@ -19,6 +19,7 @@ import SettingsStore, {SettingLevel} from "../../settings/SettingsStore";
const React = require('react'); const React = require('react');
const ReactDOM = require('react-dom'); const ReactDOM = require('react-dom');
import PropTypes from 'prop-types';
const sdk = require('../../index'); const sdk = require('../../index');
const MatrixClientPeg = require("../../MatrixClientPeg"); const MatrixClientPeg = require("../../MatrixClientPeg");
const PlatformPeg = require("../../PlatformPeg"); const PlatformPeg = require("../../PlatformPeg");
@ -125,8 +126,8 @@ const THEMES = [
const IgnoredUser = React.createClass({ const IgnoredUser = React.createClass({
propTypes: { propTypes: {
userId: React.PropTypes.string.isRequired, userId: PropTypes.string.isRequired,
onUnignored: React.PropTypes.func.isRequired, onUnignored: PropTypes.func.isRequired,
}, },
_onUnignoreClick: function() { _onUnignoreClick: function() {
@ -155,16 +156,16 @@ module.exports = React.createClass({
displayName: 'UserSettings', displayName: 'UserSettings',
propTypes: { propTypes: {
onClose: React.PropTypes.func, onClose: PropTypes.func,
// The brand string given when creating email pushers // The brand string given when creating email pushers
brand: React.PropTypes.string, brand: PropTypes.string,
// The base URL to use in the referral link. Defaults to window.location.origin. // The base URL to use in the referral link. Defaults to window.location.origin.
referralBaseUrl: React.PropTypes.string, referralBaseUrl: PropTypes.string,
// Team token for the referral link. If falsy, the referral section will // Team token for the referral link. If falsy, the referral section will
// not appear // not appear
teamToken: React.PropTypes.string, teamToken: PropTypes.string,
}, },
getDefaultProps: function() { getDefaultProps: function() {

View file

@ -18,6 +18,7 @@ limitations under the License.
'use strict'; 'use strict';
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
import sdk from '../../../index'; import sdk from '../../../index';
import Modal from "../../../Modal"; import Modal from "../../../Modal";
@ -29,13 +30,13 @@ module.exports = React.createClass({
displayName: 'ForgotPassword', displayName: 'ForgotPassword',
propTypes: { propTypes: {
defaultHsUrl: React.PropTypes.string, defaultHsUrl: PropTypes.string,
defaultIsUrl: React.PropTypes.string, defaultIsUrl: PropTypes.string,
customHsUrl: React.PropTypes.string, customHsUrl: PropTypes.string,
customIsUrl: React.PropTypes.string, customIsUrl: PropTypes.string,
onLoginClick: React.PropTypes.func, onLoginClick: PropTypes.func,
onRegisterClick: React.PropTypes.func, onRegisterClick: PropTypes.func,
onComplete: React.PropTypes.func.isRequired, onComplete: PropTypes.func.isRequired,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -18,6 +18,7 @@ limitations under the License.
'use strict'; 'use strict';
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
import * as languageHandler from '../../../languageHandler'; import * as languageHandler from '../../../languageHandler';
import sdk from '../../../index'; import sdk from '../../../index';
@ -36,27 +37,27 @@ module.exports = React.createClass({
displayName: 'Login', displayName: 'Login',
propTypes: { propTypes: {
onLoggedIn: React.PropTypes.func.isRequired, onLoggedIn: PropTypes.func.isRequired,
enableGuest: React.PropTypes.bool, enableGuest: PropTypes.bool,
customHsUrl: React.PropTypes.string, customHsUrl: PropTypes.string,
customIsUrl: React.PropTypes.string, customIsUrl: PropTypes.string,
defaultHsUrl: React.PropTypes.string, defaultHsUrl: PropTypes.string,
defaultIsUrl: React.PropTypes.string, defaultIsUrl: PropTypes.string,
// Secondary HS which we try to log into if the user is using // Secondary HS which we try to log into if the user is using
// the default HS but login fails. Useful for migrating to a // the default HS but login fails. Useful for migrating to a
// different home server without confusing users. // different home server without confusing users.
fallbackHsUrl: React.PropTypes.string, fallbackHsUrl: PropTypes.string,
defaultDeviceDisplayName: React.PropTypes.string, defaultDeviceDisplayName: PropTypes.string,
// login shouldn't know or care how registration is done. // login shouldn't know or care how registration is done.
onRegisterClick: React.PropTypes.func.isRequired, onRegisterClick: PropTypes.func.isRequired,
// login shouldn't care how password recovery is done. // login shouldn't care how password recovery is done.
onForgotPasswordClick: React.PropTypes.func, onForgotPasswordClick: PropTypes.func,
onCancelClick: React.PropTypes.func, onCancelClick: PropTypes.func,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -17,6 +17,7 @@ limitations under the License.
'use strict'; 'use strict';
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import sdk from '../../../index'; import sdk from '../../../index';
import MatrixClientPeg from '../../../MatrixClientPeg'; import MatrixClientPeg from '../../../MatrixClientPeg';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
@ -25,7 +26,7 @@ module.exports = React.createClass({
displayName: 'PostRegistration', displayName: 'PostRegistration',
propTypes: { propTypes: {
onComplete: React.PropTypes.func.isRequired, onComplete: PropTypes.func.isRequired,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -19,6 +19,7 @@ import Matrix from 'matrix-js-sdk';
import Promise from 'bluebird'; import Promise from 'bluebird';
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import sdk from '../../../index'; import sdk from '../../../index';
import ServerConfig from '../../views/login/ServerConfig'; import ServerConfig from '../../views/login/ServerConfig';
@ -35,31 +36,31 @@ module.exports = React.createClass({
displayName: 'Registration', displayName: 'Registration',
propTypes: { propTypes: {
onLoggedIn: React.PropTypes.func.isRequired, onLoggedIn: PropTypes.func.isRequired,
clientSecret: React.PropTypes.string, clientSecret: PropTypes.string,
sessionId: React.PropTypes.string, sessionId: PropTypes.string,
makeRegistrationUrl: React.PropTypes.func.isRequired, makeRegistrationUrl: PropTypes.func.isRequired,
idSid: React.PropTypes.string, idSid: PropTypes.string,
customHsUrl: React.PropTypes.string, customHsUrl: PropTypes.string,
customIsUrl: React.PropTypes.string, customIsUrl: PropTypes.string,
defaultHsUrl: React.PropTypes.string, defaultHsUrl: PropTypes.string,
defaultIsUrl: React.PropTypes.string, defaultIsUrl: PropTypes.string,
brand: React.PropTypes.string, brand: PropTypes.string,
email: React.PropTypes.string, email: PropTypes.string,
referrer: React.PropTypes.string, referrer: PropTypes.string,
teamServerConfig: React.PropTypes.shape({ teamServerConfig: PropTypes.shape({
// Email address to request new teams // Email address to request new teams
supportEmail: React.PropTypes.string.isRequired, supportEmail: PropTypes.string.isRequired,
// URL of the riot-team-server to get team configurations and track referrals // URL of the riot-team-server to get team configurations and track referrals
teamServerURL: React.PropTypes.string.isRequired, teamServerURL: PropTypes.string.isRequired,
}), }),
teamSelected: React.PropTypes.object, teamSelected: PropTypes.object,
defaultDeviceDisplayName: React.PropTypes.string, defaultDeviceDisplayName: PropTypes.string,
// registration shouldn't know or care how login is done. // registration shouldn't know or care how login is done.
onLoginClick: React.PropTypes.func.isRequired, onLoginClick: PropTypes.func.isRequired,
onCancelClick: React.PropTypes.func, onCancelClick: PropTypes.func,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import AvatarLogic from '../../../Avatar'; import AvatarLogic from '../../../Avatar';
import sdk from '../../../index'; import sdk from '../../../index';
import AccessibleButton from '../elements/AccessibleButton'; import AccessibleButton from '../elements/AccessibleButton';
@ -23,16 +24,16 @@ module.exports = React.createClass({
displayName: 'BaseAvatar', displayName: 'BaseAvatar',
propTypes: { propTypes: {
name: React.PropTypes.string.isRequired, // The name (first initial used as default) name: PropTypes.string.isRequired, // The name (first initial used as default)
idName: React.PropTypes.string, // ID for generating hash colours idName: PropTypes.string, // ID for generating hash colours
title: React.PropTypes.string, // onHover title text title: PropTypes.string, // onHover title text
url: React.PropTypes.string, // highest priority of them all, shortcut to set in urls[0] url: PropTypes.string, // highest priority of them all, shortcut to set in urls[0]
urls: React.PropTypes.array, // [highest_priority, ... , lowest_priority] urls: PropTypes.array, // [highest_priority, ... , lowest_priority]
width: React.PropTypes.number, width: PropTypes.number,
height: React.PropTypes.number, height: PropTypes.number,
// XXX resizeMethod not actually used. // XXX resizeMethod not actually used.
resizeMethod: React.PropTypes.string, resizeMethod: PropTypes.string,
defaultToInitialLetter: React.PropTypes.bool, // true to add default url defaultToInitialLetter: PropTypes.bool, // true to add default url
}, },
getDefaultProps: function() { getDefaultProps: function() {

View file

@ -17,6 +17,7 @@ limitations under the License.
'use strict'; 'use strict';
const React = require('react'); const React = require('react');
import PropTypes from 'prop-types';
const Avatar = require('../../../Avatar'); const Avatar = require('../../../Avatar');
const sdk = require("../../../index"); const sdk = require("../../../index");
const dispatcher = require("../../../dispatcher"); const dispatcher = require("../../../dispatcher");
@ -25,15 +26,15 @@ module.exports = React.createClass({
displayName: 'MemberAvatar', displayName: 'MemberAvatar',
propTypes: { propTypes: {
member: React.PropTypes.object.isRequired, member: PropTypes.object.isRequired,
width: React.PropTypes.number, width: PropTypes.number,
height: React.PropTypes.number, height: PropTypes.number,
resizeMethod: React.PropTypes.string, resizeMethod: PropTypes.string,
// The onClick to give the avatar // The onClick to give the avatar
onClick: React.PropTypes.func, onClick: PropTypes.func,
// Whether the onClick of the avatar should be overriden to dispatch 'view_user' // Whether the onClick of the avatar should be overriden to dispatch 'view_user'
viewUserOnClick: React.PropTypes.bool, viewUserOnClick: PropTypes.bool,
title: React.PropTypes.string, title: PropTypes.string,
}, },
getDefaultProps: function() { getDefaultProps: function() {

View file

@ -17,6 +17,7 @@
'use strict'; 'use strict';
import React from "react"; import React from "react";
import PropTypes from 'prop-types';
import * as sdk from "../../../index"; import * as sdk from "../../../index";
import MatrixClientPeg from "../../../MatrixClientPeg"; import MatrixClientPeg from "../../../MatrixClientPeg";
import AccessibleButton from '../elements/AccessibleButton'; import AccessibleButton from '../elements/AccessibleButton';
@ -30,10 +31,10 @@ module.exports = React.createClass({
displayName: 'MemberPresenceAvatar', displayName: 'MemberPresenceAvatar',
propTypes: { propTypes: {
member: React.PropTypes.object.isRequired, member: PropTypes.object.isRequired,
width: React.PropTypes.number, width: PropTypes.number,
height: React.PropTypes.number, height: PropTypes.number,
resizeMethod: React.PropTypes.string, resizeMethod: PropTypes.string,
}, },
getDefaultProps: function() { getDefaultProps: function() {

View file

@ -14,6 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
import React from "react"; import React from "react";
import PropTypes from 'prop-types';
import {ContentRepo} from "matrix-js-sdk"; import {ContentRepo} from "matrix-js-sdk";
import MatrixClientPeg from "../../../MatrixClientPeg"; import MatrixClientPeg from "../../../MatrixClientPeg";
import sdk from "../../../index"; import sdk from "../../../index";
@ -25,11 +26,11 @@ module.exports = React.createClass({
// oobData.avatarUrl should be set (else there // oobData.avatarUrl should be set (else there
// would be nowhere to get the avatar from) // would be nowhere to get the avatar from)
propTypes: { propTypes: {
room: React.PropTypes.object, room: PropTypes.object,
oobData: React.PropTypes.object, oobData: PropTypes.object,
width: React.PropTypes.number, width: PropTypes.number,
height: React.PropTypes.number, height: PropTypes.number,
resizeMethod: React.PropTypes.string, resizeMethod: PropTypes.string,
}, },
getDefaultProps: function() { getDefaultProps: function() {

View file

@ -17,11 +17,12 @@ limitations under the License.
'use strict'; 'use strict';
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
module.exports = React.createClass({ module.exports = React.createClass({
displayName: 'CreateRoomButton', displayName: 'CreateRoomButton',
propTypes: { propTypes: {
onCreateRoom: React.PropTypes.func, onCreateRoom: PropTypes.func,
}, },
getDefaultProps: function() { getDefaultProps: function() {

View file

@ -17,6 +17,7 @@ limitations under the License.
'use strict'; 'use strict';
const React = require('react'); const React = require('react');
import PropTypes from 'prop-types';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
const Presets = { const Presets = {
@ -28,8 +29,8 @@ const Presets = {
module.exports = React.createClass({ module.exports = React.createClass({
displayName: 'CreateRoomPresets', displayName: 'CreateRoomPresets',
propTypes: { propTypes: {
onChange: React.PropTypes.func, onChange: PropTypes.func,
preset: React.PropTypes.string, preset: PropTypes.string,
}, },
Presets: Presets, Presets: Presets,

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
const React = require('react'); const React = require('react');
import PropTypes from 'prop-types';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
module.exports = React.createClass({ module.exports = React.createClass({
@ -22,9 +23,9 @@ module.exports = React.createClass({
propTypes: { propTypes: {
// Specifying a homeserver will make magical things happen when you, // Specifying a homeserver will make magical things happen when you,
// e.g. start typing in the room alias box. // e.g. start typing in the room alias box.
homeserver: React.PropTypes.string, homeserver: PropTypes.string,
alias: React.PropTypes.string, alias: PropTypes.string,
onChange: React.PropTypes.func, onChange: PropTypes.func,
}, },
getDefaultProps: function() { getDefaultProps: function() {

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import { KeyCode } from '../../../Keyboard'; import { KeyCode } from '../../../Keyboard';
import AccessibleButton from '../elements/AccessibleButton'; import AccessibleButton from '../elements/AccessibleButton';
@ -31,20 +32,20 @@ export default React.createClass({
propTypes: { propTypes: {
// onFinished callback to call when Escape is pressed // onFinished callback to call when Escape is pressed
onFinished: React.PropTypes.func.isRequired, onFinished: PropTypes.func.isRequired,
// callback to call when Enter is pressed // callback to call when Enter is pressed
onEnterPressed: React.PropTypes.func, onEnterPressed: PropTypes.func,
// CSS class to apply to dialog div // CSS class to apply to dialog div
className: React.PropTypes.string, className: PropTypes.string,
// Title for the dialog. // Title for the dialog.
// (could probably actually be something more complicated than a string if desired) // (could probably actually be something more complicated than a string if desired)
title: React.PropTypes.string.isRequired, title: PropTypes.string.isRequired,
// children should be the content of the dialog // children should be the content of the dialog
children: React.PropTypes.node, children: PropTypes.node,
}, },
_onKeyDown: function(e) { _onKeyDown: function(e) {

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import sdk from '../../../index'; import sdk from '../../../index';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
import MatrixClientPeg from '../../../MatrixClientPeg'; import MatrixClientPeg from '../../../MatrixClientPeg';
@ -187,9 +188,9 @@ export default class ChatCreateOrReuseDialog extends React.Component {
} }
ChatCreateOrReuseDialog.propTyps = { ChatCreateOrReuseDialog.propTyps = {
userId: React.PropTypes.string.isRequired, userId: PropTypes.string.isRequired,
// Called when clicking outside of the dialog // Called when clicking outside of the dialog
onFinished: React.PropTypes.func.isRequired, onFinished: PropTypes.func.isRequired,
onNewDMClick: React.PropTypes.func.isRequired, onNewDMClick: PropTypes.func.isRequired,
onExistingRoomSelected: React.PropTypes.func.isRequired, onExistingRoomSelected: PropTypes.func.isRequired,
}; };

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import { MatrixClient } from 'matrix-js-sdk'; import { MatrixClient } from 'matrix-js-sdk';
import sdk from '../../../index'; import sdk from '../../../index';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
@ -33,20 +34,20 @@ export default React.createClass({
displayName: 'ConfirmUserActionDialog', displayName: 'ConfirmUserActionDialog',
propTypes: { propTypes: {
// matrix-js-sdk (room) member object. Supply either this or 'groupMember' // matrix-js-sdk (room) member object. Supply either this or 'groupMember'
member: React.PropTypes.object, member: PropTypes.object,
// group member object. Supply either this or 'member' // group member object. Supply either this or 'member'
groupMember: GroupMemberType, groupMember: GroupMemberType,
// needed if a group member is specified // needed if a group member is specified
matrixClient: React.PropTypes.instanceOf(MatrixClient), matrixClient: PropTypes.instanceOf(MatrixClient),
action: React.PropTypes.string.isRequired, // eg. 'Ban' action: PropTypes.string.isRequired, // eg. 'Ban'
title: React.PropTypes.string.isRequired, // eg. 'Ban this user?' title: PropTypes.string.isRequired, // eg. 'Ban this user?'
// Whether to display a text field for a reason // Whether to display a text field for a reason
// If true, the second argument to onFinished will // If true, the second argument to onFinished will
// be the string entered. // be the string entered.
askReason: React.PropTypes.bool, askReason: PropTypes.bool,
danger: React.PropTypes.bool, danger: PropTypes.bool,
onFinished: React.PropTypes.func.isRequired, onFinished: PropTypes.func.isRequired,
}, },
defaultProps: { defaultProps: {

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import sdk from '../../../index'; import sdk from '../../../index';
import SdkConfig from '../../../SdkConfig'; import SdkConfig from '../../../SdkConfig';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
@ -22,7 +23,7 @@ import { _t } from '../../../languageHandler';
export default React.createClass({ export default React.createClass({
displayName: 'CreateRoomDialog', displayName: 'CreateRoomDialog',
propTypes: { propTypes: {
onFinished: React.PropTypes.func.isRequired, onFinished: PropTypes.func.isRequired,
}, },
componentDidMount: function() { componentDidMount: function() {

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import sdk from '../../../index'; import sdk from '../../../index';
import Analytics from '../../../Analytics'; import Analytics from '../../../Analytics';
@ -136,5 +137,5 @@ export default class DeactivateAccountDialog extends React.Component {
} }
DeactivateAccountDialog.propTypes = { DeactivateAccountDialog.propTypes = {
onFinished: React.PropTypes.func.isRequired, onFinished: PropTypes.func.isRequired,
}; };

View file

@ -16,6 +16,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import MatrixClientPeg from '../../../MatrixClientPeg'; import MatrixClientPeg from '../../../MatrixClientPeg';
import sdk from '../../../index'; import sdk from '../../../index';
import * as FormattingUtils from '../../../utils/FormattingUtils'; import * as FormattingUtils from '../../../utils/FormattingUtils';
@ -71,7 +72,7 @@ export default function DeviceVerifyDialog(props) {
} }
DeviceVerifyDialog.propTypes = { DeviceVerifyDialog.propTypes = {
userId: React.PropTypes.string.isRequired, userId: PropTypes.string.isRequired,
device: React.PropTypes.object.isRequired, device: PropTypes.object.isRequired,
onFinished: React.PropTypes.func.isRequired, onFinished: PropTypes.func.isRequired,
}; };

View file

@ -26,20 +26,21 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import sdk from '../../../index'; import sdk from '../../../index';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
export default React.createClass({ export default React.createClass({
displayName: 'ErrorDialog', displayName: 'ErrorDialog',
propTypes: { propTypes: {
title: React.PropTypes.string, title: PropTypes.string,
description: React.PropTypes.oneOfType([ description: PropTypes.oneOfType([
React.PropTypes.element, PropTypes.element,
React.PropTypes.string, PropTypes.string,
]), ]),
button: React.PropTypes.string, button: PropTypes.string,
focus: React.PropTypes.bool, focus: PropTypes.bool,
onFinished: React.PropTypes.func.isRequired, onFinished: PropTypes.func.isRequired,
}, },
getDefaultProps: function() { getDefaultProps: function() {

View file

@ -16,6 +16,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import sdk from '../../../index'; import sdk from '../../../index';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
@ -27,22 +28,22 @@ export default React.createClass({
propTypes: { propTypes: {
// matrix client to use for UI auth requests // matrix client to use for UI auth requests
matrixClient: React.PropTypes.object.isRequired, matrixClient: PropTypes.object.isRequired,
// response from initial request. If not supplied, will do a request on // response from initial request. If not supplied, will do a request on
// mount. // mount.
authData: React.PropTypes.shape({ authData: PropTypes.shape({
flows: React.PropTypes.array, flows: PropTypes.array,
params: React.PropTypes.object, params: PropTypes.object,
session: React.PropTypes.string, session: PropTypes.string,
}), }),
// callback // callback
makeRequest: React.PropTypes.func.isRequired, makeRequest: PropTypes.func.isRequired,
onFinished: React.PropTypes.func.isRequired, onFinished: PropTypes.func.isRequired,
title: React.PropTypes.string, title: PropTypes.string,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -16,6 +16,7 @@ limitations under the License.
import Modal from '../../../Modal'; import Modal from '../../../Modal';
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import sdk from '../../../index'; import sdk from '../../../index';
import { _t, _td } from '../../../languageHandler'; import { _t, _td } from '../../../languageHandler';
@ -30,10 +31,10 @@ import { _t, _td } from '../../../languageHandler';
*/ */
export default React.createClass({ export default React.createClass({
propTypes: { propTypes: {
matrixClient: React.PropTypes.object.isRequired, matrixClient: PropTypes.object.isRequired,
userId: React.PropTypes.string.isRequired, userId: PropTypes.string.isRequired,
deviceId: React.PropTypes.string.isRequired, deviceId: PropTypes.string.isRequired,
onFinished: React.PropTypes.func.isRequired, onFinished: PropTypes.func.isRequired,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -16,6 +16,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import sdk from '../../../index'; import sdk from '../../../index';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
import classnames from 'classnames'; import classnames from 'classnames';
@ -23,13 +24,13 @@ import classnames from 'classnames';
export default React.createClass({ export default React.createClass({
displayName: 'QuestionDialog', displayName: 'QuestionDialog',
propTypes: { propTypes: {
title: React.PropTypes.string, title: PropTypes.string,
description: React.PropTypes.node, description: PropTypes.node,
extraButtons: React.PropTypes.node, extraButtons: PropTypes.node,
button: React.PropTypes.string, button: PropTypes.string,
danger: React.PropTypes.bool, danger: PropTypes.bool,
focus: React.PropTypes.bool, focus: PropTypes.bool,
onFinished: React.PropTypes.func.isRequired, onFinished: PropTypes.func.isRequired,
}, },
getDefaultProps: function() { getDefaultProps: function() {

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import sdk from '../../../index'; import sdk from '../../../index';
import SdkConfig from '../../../SdkConfig'; import SdkConfig from '../../../SdkConfig';
import Modal from '../../../Modal'; import Modal from '../../../Modal';
@ -25,8 +26,8 @@ export default React.createClass({
displayName: 'SessionRestoreErrorDialog', displayName: 'SessionRestoreErrorDialog',
propTypes: { propTypes: {
error: React.PropTypes.string.isRequired, error: PropTypes.string.isRequired,
onFinished: React.PropTypes.func.isRequired, onFinished: PropTypes.func.isRequired,
}, },
_sendBugReport: function() { _sendBugReport: function() {

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import sdk from '../../../index'; import sdk from '../../../index';
import Email from '../../../email'; import Email from '../../../email';
import AddThreepid from '../../../AddThreepid'; import AddThreepid from '../../../AddThreepid';
@ -30,7 +31,7 @@ import Modal from '../../../Modal';
export default React.createClass({ export default React.createClass({
displayName: 'SetEmailDialog', displayName: 'SetEmailDialog',
propTypes: { propTypes: {
onFinished: React.PropTypes.func.isRequired, onFinished: PropTypes.func.isRequired,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -17,6 +17,7 @@ limitations under the License.
import Promise from 'bluebird'; import Promise from 'bluebird';
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import sdk from '../../../index'; import sdk from '../../../index';
import MatrixClientPeg from '../../../MatrixClientPeg'; import MatrixClientPeg from '../../../MatrixClientPeg';
import classnames from 'classnames'; import classnames from 'classnames';
@ -35,11 +36,11 @@ const USERNAME_CHECK_DEBOUNCE_MS = 250;
export default React.createClass({ export default React.createClass({
displayName: 'SetMxIdDialog', displayName: 'SetMxIdDialog',
propTypes: { propTypes: {
onFinished: React.PropTypes.func.isRequired, onFinished: PropTypes.func.isRequired,
// Called when the user requests to register with a different homeserver // Called when the user requests to register with a different homeserver
onDifferentServerClicked: React.PropTypes.func.isRequired, onDifferentServerClicked: PropTypes.func.isRequired,
// Called if the user wants to switch to login instead // Called if the user wants to switch to login instead
onLoginClick: React.PropTypes.func.isRequired, onLoginClick: PropTypes.func.isRequired,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -15,21 +15,22 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import sdk from '../../../index'; import sdk from '../../../index';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
export default React.createClass({ export default React.createClass({
displayName: 'TextInputDialog', displayName: 'TextInputDialog',
propTypes: { propTypes: {
title: React.PropTypes.string, title: PropTypes.string,
description: React.PropTypes.oneOfType([ description: PropTypes.oneOfType([
React.PropTypes.element, PropTypes.element,
React.PropTypes.string, PropTypes.string,
]), ]),
value: React.PropTypes.string, value: PropTypes.string,
button: React.PropTypes.string, button: PropTypes.string,
focus: React.PropTypes.bool, focus: PropTypes.bool,
onFinished: React.PropTypes.func.isRequired, onFinished: PropTypes.func.isRequired,
}, },
getDefaultProps: function() { getDefaultProps: function() {

View file

@ -15,6 +15,7 @@
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
/** /**
* AccessibleButton is a generic wrapper for any element that should be treated * AccessibleButton is a generic wrapper for any element that should be treated
@ -44,9 +45,9 @@ export default function AccessibleButton(props) {
* implemented exactly like a normal onClick handler. * implemented exactly like a normal onClick handler.
*/ */
AccessibleButton.propTypes = { AccessibleButton.propTypes = {
children: React.PropTypes.node, children: PropTypes.node,
element: React.PropTypes.string, element: PropTypes.string,
onClick: React.PropTypes.func.isRequired, onClick: PropTypes.func.isRequired,
}; };
AccessibleButton.defaultProps = { AccessibleButton.defaultProps = {

View file

@ -18,6 +18,7 @@ limitations under the License.
'use strict'; 'use strict';
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import sdk from '../../../index'; import sdk from '../../../index';
import classNames from 'classnames'; import classNames from 'classnames';
import { UserAddressType } from '../../../UserAddress'; import { UserAddressType } from '../../../UserAddress';
@ -26,17 +27,17 @@ export default React.createClass({
displayName: 'AddressSelector', displayName: 'AddressSelector',
propTypes: { propTypes: {
onSelected: React.PropTypes.func.isRequired, onSelected: PropTypes.func.isRequired,
// List of the addresses to display // List of the addresses to display
addressList: React.PropTypes.arrayOf(UserAddressType).isRequired, addressList: PropTypes.arrayOf(UserAddressType).isRequired,
// Whether to show the address on the address tiles // Whether to show the address on the address tiles
showAddress: React.PropTypes.bool, showAddress: PropTypes.bool,
truncateAt: React.PropTypes.number.isRequired, truncateAt: PropTypes.number.isRequired,
selected: React.PropTypes.number, selected: PropTypes.number,
// Element to put as a header on top of the list // Element to put as a header on top of the list
header: React.PropTypes.node, header: PropTypes.node,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -16,6 +16,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames'; import classNames from 'classnames';
import sdk from "../../../index"; import sdk from "../../../index";
import MatrixClientPeg from "../../../MatrixClientPeg"; import MatrixClientPeg from "../../../MatrixClientPeg";
@ -28,9 +29,9 @@ export default React.createClass({
propTypes: { propTypes: {
address: UserAddressType.isRequired, address: UserAddressType.isRequired,
canDismiss: React.PropTypes.bool, canDismiss: PropTypes.bool,
onDismissed: React.PropTypes.func, onDismissed: PropTypes.func,
justified: React.PropTypes.bool, justified: PropTypes.bool,
}, },
getDefaultProps: function() { getDefaultProps: function() {

View file

@ -19,6 +19,7 @@ limitations under the License.
import url from 'url'; import url from 'url';
import qs from 'querystring'; import qs from 'querystring';
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import MatrixClientPeg from '../../../MatrixClientPeg'; import MatrixClientPeg from '../../../MatrixClientPeg';
import PlatformPeg from '../../../PlatformPeg'; import PlatformPeg from '../../../PlatformPeg';
import ScalarAuthClient from '../../../ScalarAuthClient'; import ScalarAuthClient from '../../../ScalarAuthClient';
@ -40,19 +41,19 @@ export default React.createClass({
displayName: 'AppTile', displayName: 'AppTile',
propTypes: { propTypes: {
id: React.PropTypes.string.isRequired, id: PropTypes.string.isRequired,
url: React.PropTypes.string.isRequired, url: PropTypes.string.isRequired,
name: React.PropTypes.string.isRequired, name: PropTypes.string.isRequired,
room: React.PropTypes.object.isRequired, room: PropTypes.object.isRequired,
type: React.PropTypes.string.isRequired, type: PropTypes.string.isRequired,
// Specifying 'fullWidth' as true will render the app tile to fill the width of the app drawer continer. // Specifying 'fullWidth' as true will render the app tile to fill the width of the app drawer continer.
// This should be set to true when there is only one widget in the app drawer, otherwise it should be false. // This should be set to true when there is only one widget in the app drawer, otherwise it should be false.
fullWidth: React.PropTypes.bool, fullWidth: PropTypes.bool,
// UserId of the current user // UserId of the current user
userId: React.PropTypes.string.isRequired, userId: PropTypes.string.isRequired,
// UserId of the entity that added / modified the widget // UserId of the entity that added / modified the widget
creatorUserId: React.PropTypes.string, creatorUserId: PropTypes.string,
waitForIframeLoad: React.PropTypes.bool, waitForIframeLoad: PropTypes.bool,
}, },
getDefaultProps() { getDefaultProps() {

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import MatrixClientPeg from '../../../MatrixClientPeg'; import MatrixClientPeg from '../../../MatrixClientPeg';
import sdk from '../../../index'; import sdk from '../../../index';
import Modal from '../../../Modal'; import Modal from '../../../Modal';
@ -24,8 +25,8 @@ export default React.createClass({
displayName: 'DeviceVerifyButtons', displayName: 'DeviceVerifyButtons',
propTypes: { propTypes: {
userId: React.PropTypes.string.isRequired, userId: PropTypes.string.isRequired,
device: React.PropTypes.object.isRequired, device: PropTypes.object.isRequired,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames'; import classnames from 'classnames';
export default class DirectorySearchBox extends React.Component { export default class DirectorySearchBox extends React.Component {
@ -105,10 +106,10 @@ export default class DirectorySearchBox extends React.Component {
} }
DirectorySearchBox.propTypes = { DirectorySearchBox.propTypes = {
className: React.PropTypes.string, className: PropTypes.string,
onChange: React.PropTypes.func, onChange: PropTypes.func,
onClear: React.PropTypes.func, onClear: PropTypes.func,
onJoinClick: React.PropTypes.func, onJoinClick: PropTypes.func,
placeholder: React.PropTypes.string, placeholder: PropTypes.string,
showJoinButton: React.PropTypes.bool, showJoinButton: PropTypes.bool,
}; };

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames'; import classnames from 'classnames';
import AccessibleButton from './AccessibleButton'; import AccessibleButton from './AccessibleButton';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
@ -56,14 +57,14 @@ class MenuOption extends React.Component {
} }
MenuOption.propTypes = { MenuOption.propTypes = {
children: React.PropTypes.oneOfType([ children: PropTypes.oneOfType([
React.PropTypes.arrayOf(React.PropTypes.node), PropTypes.arrayOf(React.PropTypes.node),
React.PropTypes.node, PropTypes.node,
]), ]),
highlighted: React.PropTypes.bool, highlighted: PropTypes.bool,
dropdownKey: React.PropTypes.string, dropdownKey: PropTypes.string,
onClick: React.PropTypes.func.isRequired, onClick: PropTypes.func.isRequired,
onMouseEnter: React.PropTypes.func.isRequired, onMouseEnter: PropTypes.func.isRequired,
}; };
/* /*
@ -322,20 +323,20 @@ Dropdown.propTypes = {
// The width that the dropdown should be. If specified, // The width that the dropdown should be. If specified,
// the dropped-down part of the menu will be set to this // the dropped-down part of the menu will be set to this
// width. // width.
menuWidth: React.PropTypes.number, menuWidth: PropTypes.number,
// Called when the selected option changes // Called when the selected option changes
onOptionChange: React.PropTypes.func.isRequired, onOptionChange: PropTypes.func.isRequired,
// Called when the value of the search field changes // Called when the value of the search field changes
onSearchChange: React.PropTypes.func, onSearchChange: PropTypes.func,
searchEnabled: React.PropTypes.bool, searchEnabled: PropTypes.bool,
// Function that, given the key of an option, returns // Function that, given the key of an option, returns
// a node representing that option to be displayed in the // a node representing that option to be displayed in the
// box itself as the currently-selected option (ie. as // box itself as the currently-selected option (ie. as
// opposed to in the actual dropped-down part). If // opposed to in the actual dropped-down part). If
// unspecified, the appropriate child element is used as // unspecified, the appropriate child element is used as
// in the dropped-down menu. // in the dropped-down menu.
getShortOption: React.PropTypes.func, getShortOption: PropTypes.func,
value: React.PropTypes.string, value: PropTypes.string,
// negative for consistency with HTML // negative for consistency with HTML
disabled: React.PropTypes.bool, disabled: PropTypes.bool,
}; };

View file

@ -17,6 +17,7 @@ limitations under the License.
'use strict'; 'use strict';
const React = require('react'); const React = require('react');
import PropTypes from 'prop-types';
const KEY_TAB = 9; const KEY_TAB = 9;
const KEY_SHIFT = 16; const KEY_SHIFT = 16;
@ -26,18 +27,18 @@ module.exports = React.createClass({
displayName: 'EditableText', displayName: 'EditableText',
propTypes: { propTypes: {
onValueChanged: React.PropTypes.func, onValueChanged: PropTypes.func,
initialValue: React.PropTypes.string, initialValue: PropTypes.string,
label: React.PropTypes.string, label: PropTypes.string,
placeholder: React.PropTypes.string, placeholder: PropTypes.string,
className: React.PropTypes.string, className: PropTypes.string,
labelClassName: React.PropTypes.string, labelClassName: PropTypes.string,
placeholderClassName: React.PropTypes.string, placeholderClassName: PropTypes.string,
// Overrides blurToSubmit if true // Overrides blurToSubmit if true
blurToCancel: React.PropTypes.bool, blurToCancel: PropTypes.bool,
// Will cause onValueChanged(value, true) to fire on blur // Will cause onValueChanged(value, true) to fire on blur
blurToSubmit: React.PropTypes.bool, blurToSubmit: PropTypes.bool,
editable: React.PropTypes.bool, editable: PropTypes.bool,
}, },
Phases: { Phases: {

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import sdk from '../../../index'; import sdk from '../../../index';
import Promise from 'bluebird'; import Promise from 'bluebird';
@ -126,21 +127,21 @@ export default class EditableTextContainer extends React.Component {
EditableTextContainer.propTypes = { EditableTextContainer.propTypes = {
/* callback to retrieve the initial value. */ /* callback to retrieve the initial value. */
getInitialValue: React.PropTypes.func, getInitialValue: PropTypes.func,
/* initial value; used if getInitialValue is not given */ /* initial value; used if getInitialValue is not given */
initialValue: React.PropTypes.string, initialValue: PropTypes.string,
/* placeholder text to use when the value is empty (and not being /* placeholder text to use when the value is empty (and not being
* edited) */ * edited) */
placeholder: React.PropTypes.string, placeholder: PropTypes.string,
/* callback to update the value. Called with a single argument: the new /* callback to update the value. Called with a single argument: the new
* value. */ * value. */
onSubmit: React.PropTypes.func, onSubmit: PropTypes.func,
/* should the input submit when focus is lost? */ /* should the input submit when focus is lost? */
blurToSubmit: React.PropTypes.bool, blurToSubmit: PropTypes.bool,
}; };

View file

@ -16,6 +16,7 @@
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import {emojifyText, containsEmoji} from '../../../HtmlUtils'; import {emojifyText, containsEmoji} from '../../../HtmlUtils';
export default function EmojiText(props) { export default function EmojiText(props) {
@ -32,8 +33,8 @@ export default function EmojiText(props) {
} }
EmojiText.propTypes = { EmojiText.propTypes = {
element: React.PropTypes.string, element: PropTypes.string,
children: React.PropTypes.string.isRequired, children: PropTypes.string.isRequired,
}; };
EmojiText.defaultProps = { EmojiText.defaultProps = {

View file

@ -63,7 +63,7 @@ FlairAvatar.propTypes = {
}; };
FlairAvatar.contextTypes = { FlairAvatar.contextTypes = {
matrixClient: React.PropTypes.instanceOf(MatrixClient).isRequired, matrixClient: PropTypes.instanceOf(MatrixClient).isRequired,
}; };
export default class Flair extends React.Component { export default class Flair extends React.Component {
@ -134,5 +134,5 @@ Flair.propTypes = {
// this.context.matrixClient everywhere instead of this.props.matrixClient. // this.context.matrixClient everywhere instead of this.props.matrixClient.
// See https://github.com/vector-im/riot-web/issues/4951. // See https://github.com/vector-im/riot-web/issues/4951.
Flair.contextTypes = { Flair.contextTypes = {
matrixClient: React.PropTypes.instanceOf(MatrixClient).isRequired, matrixClient: PropTypes.instanceOf(MatrixClient).isRequired,
}; };

View file

@ -16,6 +16,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import sdk from '../../../index'; import sdk from '../../../index';
import * as languageHandler from '../../../languageHandler'; import * as languageHandler from '../../../languageHandler';
@ -114,7 +115,7 @@ export default class LanguageDropdown extends React.Component {
} }
LanguageDropdown.propTypes = { LanguageDropdown.propTypes = {
className: React.PropTypes.string, className: PropTypes.string,
onOptionChange: React.PropTypes.func.isRequired, onOptionChange: PropTypes.func.isRequired,
value: React.PropTypes.string, value: PropTypes.string,
}; };

View file

@ -14,6 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import sdk from '../../../index'; import sdk from '../../../index';
const MemberAvatar = require('../avatars/MemberAvatar.js'); const MemberAvatar = require('../avatars/MemberAvatar.js');
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
@ -23,19 +24,19 @@ module.exports = React.createClass({
propTypes: { propTypes: {
// An array of member events to summarise // An array of member events to summarise
events: React.PropTypes.array.isRequired, events: PropTypes.array.isRequired,
// An array of EventTiles to render when expanded // An array of EventTiles to render when expanded
children: React.PropTypes.array.isRequired, children: PropTypes.array.isRequired,
// The maximum number of names to show in either each summary e.g. 2 would result "A, B and 234 others left" // The maximum number of names to show in either each summary e.g. 2 would result "A, B and 234 others left"
summaryLength: React.PropTypes.number, summaryLength: PropTypes.number,
// The maximum number of avatars to display in the summary // The maximum number of avatars to display in the summary
avatarsMaxLength: React.PropTypes.number, avatarsMaxLength: PropTypes.number,
// The minimum number of events needed to trigger summarisation // The minimum number of events needed to trigger summarisation
threshold: React.PropTypes.number, threshold: PropTypes.number,
// Called when the MELS expansion is toggled // Called when the MELS expansion is toggled
onToggle: React.PropTypes.func, onToggle: PropTypes.func,
// Whether or not to begin with state.expanded=true // Whether or not to begin with state.expanded=true
startExpanded: React.PropTypes.bool, startExpanded: PropTypes.bool,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -17,6 +17,7 @@ limitations under the License.
'use strict'; 'use strict';
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import * as Roles from '../../../Roles'; import * as Roles from '../../../Roles';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
@ -24,23 +25,23 @@ module.exports = React.createClass({
displayName: 'PowerSelector', displayName: 'PowerSelector',
propTypes: { propTypes: {
value: React.PropTypes.number.isRequired, value: PropTypes.number.isRequired,
// The maximum value that can be set with the power selector // The maximum value that can be set with the power selector
maxValue: React.PropTypes.number.isRequired, maxValue: PropTypes.number.isRequired,
// Default user power level for the room // Default user power level for the room
usersDefault: React.PropTypes.number.isRequired, usersDefault: PropTypes.number.isRequired,
// if true, the <select/> should be a 'controlled' form element and updated by React // if true, the <select/> should be a 'controlled' form element and updated by React
// to reflect the current value, rather than left freeform. // to reflect the current value, rather than left freeform.
// MemberInfo uses controlled; RoomSettings uses non-controlled. // MemberInfo uses controlled; RoomSettings uses non-controlled.
// //
// ignored if disabled is truthy. false by default. // ignored if disabled is truthy. false by default.
controlled: React.PropTypes.bool, controlled: PropTypes.bool,
// should the user be able to change the value? false by default. // should the user be able to change the value? false by default.
disabled: React.PropTypes.bool, disabled: PropTypes.bool,
onChange: React.PropTypes.func, onChange: PropTypes.func,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -17,12 +17,13 @@ limitations under the License.
'use strict'; 'use strict';
const React = require('react'); const React = require('react');
import PropTypes from 'prop-types';
module.exports = React.createClass({ module.exports = React.createClass({
displayName: 'ProgressBar', displayName: 'ProgressBar',
propTypes: { propTypes: {
value: React.PropTypes.number, value: PropTypes.number,
max: React.PropTypes.number, max: PropTypes.number,
}, },
render: function() { render: function() {

View file

@ -15,23 +15,24 @@ limitations under the License.
*/ */
import React from "react"; import React from "react";
import PropTypes from 'prop-types';
import SettingsStore from "../../../settings/SettingsStore"; import SettingsStore from "../../../settings/SettingsStore";
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
module.exports = React.createClass({ module.exports = React.createClass({
displayName: 'SettingsFlag', displayName: 'SettingsFlag',
propTypes: { propTypes: {
name: React.PropTypes.string.isRequired, name: PropTypes.string.isRequired,
level: React.PropTypes.string.isRequired, level: PropTypes.string.isRequired,
roomId: React.PropTypes.string, // for per-room settings roomId: PropTypes.string, // for per-room settings
label: React.PropTypes.string, // untranslated label: PropTypes.string, // untranslated
onChange: React.PropTypes.func, onChange: PropTypes.func,
isExplicit: React.PropTypes.bool, isExplicit: PropTypes.bool,
manualSave: React.PropTypes.bool, manualSave: PropTypes.bool,
// If group is supplied, then this will create a radio button instead. // If group is supplied, then this will create a radio button instead.
group: React.PropTypes.string, group: PropTypes.string,
value: React.PropTypes.any, // the value for the radio button value: PropTypes.any, // the value for the radio button
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -39,7 +39,7 @@ export default React.createClass({
}, },
contextTypes: { contextTypes: {
matrixClient: React.PropTypes.instanceOf(MatrixClient).isRequired, matrixClient: PropTypes.instanceOf(MatrixClient).isRequired,
}, },
getInitialState() { getInitialState() {

View file

@ -18,16 +18,17 @@ limitations under the License.
const React = require('react'); const React = require('react');
const ReactDOM = require("react-dom"); const ReactDOM = require("react-dom");
import PropTypes from 'prop-types';
const Tinter = require("../../../Tinter"); const Tinter = require("../../../Tinter");
var TintableSvg = React.createClass({ var TintableSvg = React.createClass({
displayName: 'TintableSvg', displayName: 'TintableSvg',
propTypes: { propTypes: {
src: React.PropTypes.string.isRequired, src: PropTypes.string.isRequired,
width: React.PropTypes.string.isRequired, width: PropTypes.string.isRequired,
height: React.PropTypes.string.isRequired, height: PropTypes.string.isRequired,
className: React.PropTypes.string, className: PropTypes.string,
}, },
statics: { statics: {

View file

@ -17,14 +17,15 @@ limitations under the License.
'use strict'; 'use strict';
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
module.exports = React.createClass({ module.exports = React.createClass({
displayName: 'UserSelector', displayName: 'UserSelector',
propTypes: { propTypes: {
onChange: React.PropTypes.func, onChange: PropTypes.func,
selected_users: React.PropTypes.arrayOf(React.PropTypes.string), selected_users: PropTypes.arrayOf(React.PropTypes.string),
}, },
getDefaultProps: function() { getDefaultProps: function() {

View file

@ -66,7 +66,7 @@ const GroupRoomTile = React.createClass({
}); });
GroupRoomTile.contextTypes = { GroupRoomTile.contextTypes = {
matrixClient: React.PropTypes.instanceOf(MatrixClient).isRequired, matrixClient: PropTypes.instanceOf(MatrixClient).isRequired,
}; };

View file

@ -33,7 +33,7 @@ const GroupTile = React.createClass({
}, },
contextTypes: { contextTypes: {
matrixClient: React.PropTypes.instanceOf(MatrixClient).isRequired, matrixClient: PropTypes.instanceOf(MatrixClient).isRequired,
}, },
getInitialState() { getInitialState() {

View file

@ -18,6 +18,7 @@ limitations under the License.
import React from 'react'; import React from 'react';
import ReactDOM from 'react-dom'; import ReactDOM from 'react-dom';
import PropTypes from 'prop-types';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
const DIV_ID = 'mx_recaptcha'; const DIV_ID = 'mx_recaptcha';
@ -29,10 +30,10 @@ module.exports = React.createClass({
displayName: 'CaptchaForm', displayName: 'CaptchaForm',
propTypes: { propTypes: {
sitePublicKey: React.PropTypes.string, sitePublicKey: PropTypes.string,
// called with the captcha response // called with the captcha response
onCaptchaResponse: React.PropTypes.func, onCaptchaResponse: PropTypes.func,
}, },
getDefaultProps: function() { getDefaultProps: function() {

View file

@ -17,13 +17,14 @@ limitations under the License.
'use strict'; 'use strict';
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
module.exports = React.createClass({ module.exports = React.createClass({
displayName: 'CasLogin', displayName: 'CasLogin',
propTypes: { propTypes: {
onSubmit: React.PropTypes.func, // fn() onSubmit: PropTypes.func, // fn()
}, },
render: function() { render: function() {

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import sdk from '../../../index'; import sdk from '../../../index';
@ -131,11 +132,11 @@ export default class CountryDropdown extends React.Component {
} }
CountryDropdown.propTypes = { CountryDropdown.propTypes = {
className: React.PropTypes.string, className: PropTypes.string,
isSmall: React.PropTypes.bool, isSmall: PropTypes.bool,
// if isSmall, show +44 in the selected value // if isSmall, show +44 in the selected value
showPrefix: React.PropTypes.bool, showPrefix: PropTypes.bool,
onOptionChange: React.PropTypes.func.isRequired, onOptionChange: PropTypes.func.isRequired,
value: React.PropTypes.string, value: PropTypes.string,
disabled: React.PropTypes.bool, disabled: PropTypes.bool,
}; };

View file

@ -16,6 +16,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import url from 'url'; import url from 'url';
import classnames from 'classnames'; import classnames from 'classnames';
@ -69,12 +70,12 @@ export const PasswordAuthEntry = React.createClass({
}, },
propTypes: { propTypes: {
matrixClient: React.PropTypes.object.isRequired, matrixClient: PropTypes.object.isRequired,
submitAuthDict: React.PropTypes.func.isRequired, submitAuthDict: PropTypes.func.isRequired,
errorText: React.PropTypes.string, errorText: PropTypes.string,
// is the auth logic currently waiting for something to // is the auth logic currently waiting for something to
// happen? // happen?
busy: React.PropTypes.bool, busy: PropTypes.bool,
}, },
getInitialState: function() { getInitialState: function() {
@ -158,10 +159,10 @@ export const RecaptchaAuthEntry = React.createClass({
}, },
propTypes: { propTypes: {
submitAuthDict: React.PropTypes.func.isRequired, submitAuthDict: PropTypes.func.isRequired,
stageParams: React.PropTypes.object.isRequired, stageParams: PropTypes.object.isRequired,
errorText: React.PropTypes.string, errorText: PropTypes.string,
busy: React.PropTypes.bool, busy: PropTypes.bool,
}, },
_onCaptchaResponse: function(response) { _onCaptchaResponse: function(response) {
@ -200,15 +201,15 @@ export const EmailIdentityAuthEntry = React.createClass({
}, },
propTypes: { propTypes: {
matrixClient: React.PropTypes.object.isRequired, matrixClient: PropTypes.object.isRequired,
submitAuthDict: React.PropTypes.func.isRequired, submitAuthDict: PropTypes.func.isRequired,
authSessionId: React.PropTypes.string.isRequired, authSessionId: PropTypes.string.isRequired,
clientSecret: React.PropTypes.string.isRequired, clientSecret: PropTypes.string.isRequired,
inputs: React.PropTypes.object.isRequired, inputs: PropTypes.object.isRequired,
stageState: React.PropTypes.object.isRequired, stageState: PropTypes.object.isRequired,
fail: React.PropTypes.func.isRequired, fail: PropTypes.func.isRequired,
setEmailSid: React.PropTypes.func.isRequired, setEmailSid: PropTypes.func.isRequired,
makeRegistrationUrl: React.PropTypes.func.isRequired, makeRegistrationUrl: PropTypes.func.isRequired,
}, },
getInitialState: function() { getInitialState: function() {
@ -275,15 +276,15 @@ export const MsisdnAuthEntry = React.createClass({
}, },
propTypes: { propTypes: {
inputs: React.PropTypes.shape({ inputs: PropTypes.shape({
phoneCountry: React.PropTypes.string, phoneCountry: PropTypes.string,
phoneNumber: React.PropTypes.string, phoneNumber: PropTypes.string,
}), }),
fail: React.PropTypes.func, fail: PropTypes.func,
clientSecret: React.PropTypes.func, clientSecret: PropTypes.func,
submitAuthDict: React.PropTypes.func.isRequired, submitAuthDict: PropTypes.func.isRequired,
matrixClient: React.PropTypes.object, matrixClient: PropTypes.object,
submitAuthDict: React.PropTypes.func, submitAuthDict: PropTypes.func,
}, },
getInitialState: function() { getInitialState: function() {
@ -405,11 +406,11 @@ export const FallbackAuthEntry = React.createClass({
displayName: 'FallbackAuthEntry', displayName: 'FallbackAuthEntry',
propTypes: { propTypes: {
matrixClient: React.PropTypes.object.isRequired, matrixClient: PropTypes.object.isRequired,
authSessionId: React.PropTypes.string.isRequired, authSessionId: PropTypes.string.isRequired,
loginType: React.PropTypes.string.isRequired, loginType: PropTypes.string.isRequired,
submitAuthDict: React.PropTypes.func.isRequired, submitAuthDict: PropTypes.func.isRequired,
errorText: React.PropTypes.string, errorText: PropTypes.string,
}, },
componentWillMount: function() { componentWillMount: function() {

View file

@ -16,6 +16,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames'; import classNames from 'classnames';
import sdk from '../../../index'; import sdk from '../../../index';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
@ -256,17 +257,17 @@ PasswordLogin.LOGIN_FIELD_MXID = "login_field_mxid";
PasswordLogin.LOGIN_FIELD_PHONE = "login_field_phone"; PasswordLogin.LOGIN_FIELD_PHONE = "login_field_phone";
PasswordLogin.propTypes = { PasswordLogin.propTypes = {
onSubmit: React.PropTypes.func.isRequired, // fn(username, password) onSubmit: PropTypes.func.isRequired, // fn(username, password)
onForgotPasswordClick: React.PropTypes.func, // fn() onForgotPasswordClick: PropTypes.func, // fn()
initialUsername: React.PropTypes.string, initialUsername: PropTypes.string,
initialPhoneCountry: React.PropTypes.string, initialPhoneCountry: PropTypes.string,
initialPhoneNumber: React.PropTypes.string, initialPhoneNumber: PropTypes.string,
initialPassword: React.PropTypes.string, initialPassword: PropTypes.string,
onUsernameChanged: React.PropTypes.func, onUsernameChanged: PropTypes.func,
onPhoneCountryChanged: React.PropTypes.func, onPhoneCountryChanged: PropTypes.func,
onPhoneNumberChanged: React.PropTypes.func, onPhoneNumberChanged: PropTypes.func,
onPasswordChanged: React.PropTypes.func, onPasswordChanged: PropTypes.func,
loginIncorrect: React.PropTypes.bool, loginIncorrect: PropTypes.bool,
}; };
module.exports = PasswordLogin; module.exports = PasswordLogin;

View file

@ -16,6 +16,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import { field_input_incorrect } from '../../../UiEffects'; import { field_input_incorrect } from '../../../UiEffects';
import sdk from '../../../index'; import sdk from '../../../index';
import Email from '../../../email'; import Email from '../../../email';
@ -40,25 +41,25 @@ module.exports = React.createClass({
propTypes: { propTypes: {
// Values pre-filled in the input boxes when the component loads // Values pre-filled in the input boxes when the component loads
defaultEmail: React.PropTypes.string, defaultEmail: PropTypes.string,
defaultPhoneCountry: React.PropTypes.string, defaultPhoneCountry: PropTypes.string,
defaultPhoneNumber: React.PropTypes.string, defaultPhoneNumber: PropTypes.string,
defaultUsername: React.PropTypes.string, defaultUsername: PropTypes.string,
defaultPassword: React.PropTypes.string, defaultPassword: PropTypes.string,
teamsConfig: React.PropTypes.shape({ teamsConfig: PropTypes.shape({
// Email address to request new teams // Email address to request new teams
supportEmail: React.PropTypes.string, supportEmail: PropTypes.string,
teams: React.PropTypes.arrayOf(React.PropTypes.shape({ teams: PropTypes.arrayOf(React.PropTypes.shape({
// The displayed name of the team // The displayed name of the team
"name": React.PropTypes.string, "name": PropTypes.string,
// The domain of team email addresses // The domain of team email addresses
"domain": React.PropTypes.string, "domain": PropTypes.string,
})).required, })).required,
}), }),
minPasswordLength: React.PropTypes.number, minPasswordLength: PropTypes.number,
onError: React.PropTypes.func, onError: PropTypes.func,
onRegisterClick: React.PropTypes.func.isRequired, // onRegisterClick(Object) => ?Promise onRegisterClick: PropTypes.func.isRequired, // onRegisterClick(Object) => ?Promise
}, },
getDefaultProps: function() { getDefaultProps: function() {

View file

@ -17,6 +17,7 @@ limitations under the License.
'use strict'; 'use strict';
const React = require('react'); const React = require('react');
import PropTypes from 'prop-types';
const Modal = require('../../../Modal'); const Modal = require('../../../Modal');
const sdk = require('../../../index'); const sdk = require('../../../index');
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
@ -28,24 +29,24 @@ module.exports = React.createClass({
displayName: 'ServerConfig', displayName: 'ServerConfig',
propTypes: { propTypes: {
onServerConfigChange: React.PropTypes.func, onServerConfigChange: PropTypes.func,
// default URLs are defined in config.json (or the hardcoded defaults) // default URLs are defined in config.json (or the hardcoded defaults)
// they are used if the user has not overridden them with a custom URL. // they are used if the user has not overridden them with a custom URL.
// In other words, if the custom URL is blank, the default is used. // In other words, if the custom URL is blank, the default is used.
defaultHsUrl: React.PropTypes.string, // e.g. https://matrix.org defaultHsUrl: PropTypes.string, // e.g. https://matrix.org
defaultIsUrl: React.PropTypes.string, // e.g. https://vector.im defaultIsUrl: PropTypes.string, // e.g. https://vector.im
// custom URLs are explicitly provided by the user and override the // custom URLs are explicitly provided by the user and override the
// default URLs. The user enters them via the component's input fields, // default URLs. The user enters them via the component's input fields,
// which is reflected on these properties whenever on..UrlChanged fires. // which is reflected on these properties whenever on..UrlChanged fires.
// They are persisted in localStorage by MatrixClientPeg, and so can // They are persisted in localStorage by MatrixClientPeg, and so can
// override the default URLs when the component initially loads. // override the default URLs when the component initially loads.
customHsUrl: React.PropTypes.string, customHsUrl: PropTypes.string,
customIsUrl: React.PropTypes.string, customIsUrl: PropTypes.string,
withToggleButton: React.PropTypes.bool, withToggleButton: PropTypes.bool,
delayTimeMs: React.PropTypes.number, // time to wait before invoking onChanged delayTimeMs: PropTypes.number, // time to wait before invoking onChanged
}, },
getDefaultProps: function() { getDefaultProps: function() {

View file

@ -17,6 +17,7 @@ limitations under the License.
'use strict'; 'use strict';
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import filesize from 'filesize'; import filesize from 'filesize';
import MatrixClientPeg from '../../../MatrixClientPeg'; import MatrixClientPeg from '../../../MatrixClientPeg';
import sdk from '../../../index'; import sdk from '../../../index';
@ -191,7 +192,7 @@ module.exports = React.createClass({
}, },
contextTypes: { contextTypes: {
appConfig: React.PropTypes.object, appConfig: PropTypes.object,
}, },
/** /**

View file

@ -17,6 +17,7 @@ limitations under the License.
'use strict'; 'use strict';
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import MFileBody from './MFileBody'; import MFileBody from './MFileBody';
import MatrixClientPeg from '../../../MatrixClientPeg'; import MatrixClientPeg from '../../../MatrixClientPeg';
import ImageUtils from '../../../ImageUtils'; import ImageUtils from '../../../ImageUtils';
@ -33,10 +34,10 @@ module.exports = React.createClass({
propTypes: { propTypes: {
/* the MatrixEvent to show */ /* the MatrixEvent to show */
mxEvent: React.PropTypes.object.isRequired, mxEvent: PropTypes.object.isRequired,
/* called when the image has loaded */ /* called when the image has loaded */
onWidgetLoad: React.PropTypes.func.isRequired, onWidgetLoad: PropTypes.func.isRequired,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -17,6 +17,7 @@ limitations under the License.
'use strict'; 'use strict';
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import MFileBody from './MFileBody'; import MFileBody from './MFileBody';
import MatrixClientPeg from '../../../MatrixClientPeg'; import MatrixClientPeg from '../../../MatrixClientPeg';
import { decryptFile, readBlobAsDataUri } from '../../../utils/DecryptFile'; import { decryptFile, readBlobAsDataUri } from '../../../utils/DecryptFile';
@ -29,10 +30,10 @@ module.exports = React.createClass({
propTypes: { propTypes: {
/* the MatrixEvent to show */ /* the MatrixEvent to show */
mxEvent: React.PropTypes.object.isRequired, mxEvent: PropTypes.object.isRequired,
/* called when the video has loaded */ /* called when the video has loaded */
onWidgetLoad: React.PropTypes.func.isRequired, onWidgetLoad: PropTypes.func.isRequired,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -17,6 +17,7 @@ limitations under the License.
'use strict'; 'use strict';
const React = require('react'); const React = require('react');
import PropTypes from 'prop-types';
const sdk = require('../../../index'); const sdk = require('../../../index');
module.exports = React.createClass({ module.exports = React.createClass({
@ -24,22 +25,22 @@ module.exports = React.createClass({
propTypes: { propTypes: {
/* the MatrixEvent to show */ /* the MatrixEvent to show */
mxEvent: React.PropTypes.object.isRequired, mxEvent: PropTypes.object.isRequired,
/* a list of words to highlight */ /* a list of words to highlight */
highlights: React.PropTypes.array, highlights: PropTypes.array,
/* link URL for the highlights */ /* link URL for the highlights */
highlightLink: React.PropTypes.string, highlightLink: PropTypes.string,
/* should show URL previews for this event */ /* should show URL previews for this event */
showUrlPreview: React.PropTypes.bool, showUrlPreview: PropTypes.bool,
/* callback called when dynamic content in events are loaded */ /* callback called when dynamic content in events are loaded */
onWidgetLoad: React.PropTypes.func, onWidgetLoad: PropTypes.func,
/* the shsape of the tile, used */ /* the shsape of the tile, used */
tileShape: React.PropTypes.string, tileShape: PropTypes.string,
}, },
getEventTileOps: function() { getEventTileOps: function() {

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import MatrixClientPeg from '../../../MatrixClientPeg'; import MatrixClientPeg from '../../../MatrixClientPeg';
import { ContentRepo } from 'matrix-js-sdk'; import { ContentRepo } from 'matrix-js-sdk';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
@ -27,7 +28,7 @@ module.exports = React.createClass({
propTypes: { propTypes: {
/* the MatrixEvent to show */ /* the MatrixEvent to show */
mxEvent: React.PropTypes.object.isRequired, mxEvent: PropTypes.object.isRequired,
}, },
onAvatarClick: function(name) { onAvatarClick: function(name) {

View file

@ -18,6 +18,7 @@ limitations under the License.
import React from 'react'; import React from 'react';
import ReactDOM from 'react-dom'; import ReactDOM from 'react-dom';
import PropTypes from 'prop-types';
import highlight from 'highlight.js'; import highlight from 'highlight.js';
import * as HtmlUtils from '../../../HtmlUtils'; import * as HtmlUtils from '../../../HtmlUtils';
import * as linkify from 'linkifyjs'; import * as linkify from 'linkifyjs';
@ -43,19 +44,19 @@ module.exports = React.createClass({
propTypes: { propTypes: {
/* the MatrixEvent to show */ /* the MatrixEvent to show */
mxEvent: React.PropTypes.object.isRequired, mxEvent: PropTypes.object.isRequired,
/* a list of words to highlight */ /* a list of words to highlight */
highlights: React.PropTypes.array, highlights: PropTypes.array,
/* link URL for the highlights */ /* link URL for the highlights */
highlightLink: React.PropTypes.string, highlightLink: PropTypes.string,
/* should show URL previews for this event */ /* should show URL previews for this event */
showUrlPreview: React.PropTypes.bool, showUrlPreview: PropTypes.bool,
/* callback for when our widget has loaded */ /* callback for when our widget has loaded */
onWidgetLoad: React.PropTypes.func, onWidgetLoad: PropTypes.func,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -17,6 +17,7 @@ limitations under the License.
'use strict'; 'use strict';
const React = require('react'); const React = require('react');
import PropTypes from 'prop-types';
const TextForEvent = require('../../../TextForEvent'); const TextForEvent = require('../../../TextForEvent');
import sdk from '../../../index'; import sdk from '../../../index';
@ -26,7 +27,7 @@ module.exports = React.createClass({
propTypes: { propTypes: {
/* the MatrixEvent to show */ /* the MatrixEvent to show */
mxEvent: React.PropTypes.object.isRequired, mxEvent: PropTypes.object.isRequired,
}, },
render: function() { render: function() {

View file

@ -16,6 +16,7 @@ limitations under the License.
import Promise from 'bluebird'; import Promise from 'bluebird';
const React = require('react'); const React = require('react');
import PropTypes from 'prop-types';
const ObjectUtils = require("../../../ObjectUtils"); const ObjectUtils = require("../../../ObjectUtils");
const MatrixClientPeg = require('../../../MatrixClientPeg'); const MatrixClientPeg = require('../../../MatrixClientPeg');
const sdk = require("../../../index"); const sdk = require("../../../index");
@ -26,11 +27,11 @@ module.exports = React.createClass({
displayName: 'AliasSettings', displayName: 'AliasSettings',
propTypes: { propTypes: {
roomId: React.PropTypes.string.isRequired, roomId: PropTypes.string.isRequired,
canSetCanonicalAlias: React.PropTypes.bool.isRequired, canSetCanonicalAlias: PropTypes.bool.isRequired,
canSetAliases: React.PropTypes.bool.isRequired, canSetAliases: PropTypes.bool.isRequired,
aliasEvents: React.PropTypes.array, // [MatrixEvent] aliasEvents: PropTypes.array, // [MatrixEvent]
canonicalAliasEvent: React.PropTypes.object, // MatrixEvent canonicalAliasEvent: PropTypes.object, // MatrixEvent
}, },
getDefaultProps: function() { getDefaultProps: function() {

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
import Promise from 'bluebird'; import Promise from 'bluebird';
const React = require('react'); const React = require('react');
import PropTypes from 'prop-types';
const sdk = require('../../../index'); const sdk = require('../../../index');
const Tinter = require('../../../Tinter'); const Tinter = require('../../../Tinter');
@ -42,7 +43,7 @@ module.exports = React.createClass({
displayName: 'ColorSettings', displayName: 'ColorSettings',
propTypes: { propTypes: {
room: React.PropTypes.object.isRequired, room: PropTypes.object.isRequired,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import {MatrixEvent, MatrixClient} from 'matrix-js-sdk'; import {MatrixEvent, MatrixClient} from 'matrix-js-sdk';
import sdk from '../../../index'; import sdk from '../../../index';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
@ -27,13 +28,13 @@ module.exports = React.createClass({
displayName: 'RelatedGroupSettings', displayName: 'RelatedGroupSettings',
propTypes: { propTypes: {
roomId: React.PropTypes.string.isRequired, roomId: PropTypes.string.isRequired,
canSetRelatedGroups: React.PropTypes.bool.isRequired, canSetRelatedGroups: PropTypes.bool.isRequired,
relatedGroupsEvent: React.PropTypes.instanceOf(MatrixEvent), relatedGroupsEvent: PropTypes.instanceOf(MatrixEvent),
}, },
contextTypes: { contextTypes: {
matrixClient: React.PropTypes.instanceOf(MatrixClient), matrixClient: PropTypes.instanceOf(MatrixClient),
}, },
getDefaultProps: function() { getDefaultProps: function() {

View file

@ -16,6 +16,7 @@ limitations under the License.
*/ */
const React = require('react'); const React = require('react');
import PropTypes from 'prop-types';
const sdk = require("../../../index"); const sdk = require("../../../index");
import { _t, _td } from '../../../languageHandler'; import { _t, _td } from '../../../languageHandler';
import SettingsStore, {SettingLevel} from "../../../settings/SettingsStore"; import SettingsStore, {SettingLevel} from "../../../settings/SettingsStore";
@ -25,7 +26,7 @@ module.exports = React.createClass({
displayName: 'UrlPreviewSettings', displayName: 'UrlPreviewSettings',
propTypes: { propTypes: {
room: React.PropTypes.object, room: PropTypes.object,
}, },
saveSettings: function() { saveSettings: function() {

View file

@ -17,6 +17,7 @@ limitations under the License.
'use strict'; 'use strict';
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import MatrixClientPeg from '../../../MatrixClientPeg'; import MatrixClientPeg from '../../../MatrixClientPeg';
import AppTile from '../elements/AppTile'; import AppTile from '../elements/AppTile';
import Modal from '../../../Modal'; import Modal from '../../../Modal';
@ -36,7 +37,7 @@ module.exports = React.createClass({
displayName: 'AppsDrawer', displayName: 'AppsDrawer',
propTypes: { propTypes: {
room: React.PropTypes.object.isRequired, room: PropTypes.object.isRequired,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -16,6 +16,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import MatrixClientPeg from "../../../MatrixClientPeg"; import MatrixClientPeg from "../../../MatrixClientPeg";
import sdk from '../../../index'; import sdk from '../../../index';
import dis from "../../../dispatcher"; import dis from "../../../dispatcher";
@ -29,26 +30,26 @@ module.exports = React.createClass({
propTypes: { propTypes: {
// js-sdk room object // js-sdk room object
room: React.PropTypes.object.isRequired, room: PropTypes.object.isRequired,
userId: React.PropTypes.string.isRequired, userId: PropTypes.string.isRequired,
showApps: React.PropTypes.bool, showApps: PropTypes.bool,
// Conference Handler implementation // Conference Handler implementation
conferenceHandler: React.PropTypes.object, conferenceHandler: PropTypes.object,
// set to true to show the file drop target // set to true to show the file drop target
draggingFile: React.PropTypes.bool, draggingFile: PropTypes.bool,
// set to true to show the 'active conf call' banner // set to true to show the 'active conf call' banner
displayConfCallNotification: React.PropTypes.bool, displayConfCallNotification: PropTypes.bool,
// maxHeight attribute for the aux panel and the video // maxHeight attribute for the aux panel and the video
// therein // therein
maxHeight: React.PropTypes.number, maxHeight: PropTypes.number,
// a callback which is called when the content of the aux panel changes // a callback which is called when the content of the aux panel changes
// content in a way that is likely to make it change size. // content in a way that is likely to make it change size.
onResize: React.PropTypes.func, onResize: PropTypes.func,
}, },
shouldComponentUpdate: function(nextProps, nextState) { shouldComponentUpdate: function(nextProps, nextState) {

View file

@ -17,6 +17,7 @@ limitations under the License.
'use strict'; 'use strict';
const React = require('react'); const React = require('react');
import PropTypes from 'prop-types';
const MatrixClientPeg = require('../../../MatrixClientPeg'); const MatrixClientPeg = require('../../../MatrixClientPeg');
const sdk = require('../../../index'); const sdk = require('../../../index');
@ -51,18 +52,18 @@ const EntityTile = React.createClass({
displayName: 'EntityTile', displayName: 'EntityTile',
propTypes: { propTypes: {
name: React.PropTypes.string, name: PropTypes.string,
title: React.PropTypes.string, title: PropTypes.string,
avatarJsx: React.PropTypes.any, // <BaseAvatar /> avatarJsx: PropTypes.any, // <BaseAvatar />
className: React.PropTypes.string, className: PropTypes.string,
presenceState: React.PropTypes.string, presenceState: PropTypes.string,
presenceLastActiveAgo: React.PropTypes.number, presenceLastActiveAgo: PropTypes.number,
presenceLastTs: React.PropTypes.number, presenceLastTs: PropTypes.number,
presenceCurrentlyActive: React.PropTypes.bool, presenceCurrentlyActive: PropTypes.bool,
showInviteButton: React.PropTypes.bool, showInviteButton: PropTypes.bool,
shouldComponentUpdate: React.PropTypes.func, shouldComponentUpdate: PropTypes.func,
onClick: React.PropTypes.func, onClick: PropTypes.func,
suppressOnHover: React.PropTypes.bool, suppressOnHover: PropTypes.bool,
}, },
getDefaultProps: function() { getDefaultProps: function() {

View file

@ -18,6 +18,7 @@ limitations under the License.
const React = require('react'); const React = require('react');
import PropTypes from 'prop-types';
const classNames = require("classnames"); const classNames = require("classnames");
import { _t, _td } from '../../../languageHandler'; import { _t, _td } from '../../../languageHandler';
const Modal = require('../../../Modal'); const Modal = require('../../../Modal');
@ -75,65 +76,65 @@ module.exports = withMatrixClient(React.createClass({
propTypes: { propTypes: {
/* MatrixClient instance for sender verification etc */ /* MatrixClient instance for sender verification etc */
matrixClient: React.PropTypes.object.isRequired, matrixClient: PropTypes.object.isRequired,
/* the MatrixEvent to show */ /* the MatrixEvent to show */
mxEvent: React.PropTypes.object.isRequired, mxEvent: PropTypes.object.isRequired,
/* true if mxEvent is redacted. This is a prop because using mxEvent.isRedacted() /* true if mxEvent is redacted. This is a prop because using mxEvent.isRedacted()
* might not be enough when deciding shouldComponentUpdate - prevProps.mxEvent * might not be enough when deciding shouldComponentUpdate - prevProps.mxEvent
* references the same this.props.mxEvent. * references the same this.props.mxEvent.
*/ */
isRedacted: React.PropTypes.bool, isRedacted: PropTypes.bool,
/* true if this is a continuation of the previous event (which has the /* true if this is a continuation of the previous event (which has the
* effect of not showing another avatar/displayname * effect of not showing another avatar/displayname
*/ */
continuation: React.PropTypes.bool, continuation: PropTypes.bool,
/* true if this is the last event in the timeline (which has the effect /* true if this is the last event in the timeline (which has the effect
* of always showing the timestamp) * of always showing the timestamp)
*/ */
last: React.PropTypes.bool, last: PropTypes.bool,
/* true if this is search context (which has the effect of greying out /* true if this is search context (which has the effect of greying out
* the text * the text
*/ */
contextual: React.PropTypes.bool, contextual: PropTypes.bool,
/* a list of words to highlight, ordered by longest first */ /* a list of words to highlight, ordered by longest first */
highlights: React.PropTypes.array, highlights: PropTypes.array,
/* link URL for the highlights */ /* link URL for the highlights */
highlightLink: React.PropTypes.string, highlightLink: PropTypes.string,
/* should show URL previews for this event */ /* should show URL previews for this event */
showUrlPreview: React.PropTypes.bool, showUrlPreview: PropTypes.bool,
/* is this the focused event */ /* is this the focused event */
isSelectedEvent: React.PropTypes.bool, isSelectedEvent: PropTypes.bool,
/* callback called when dynamic content in events are loaded */ /* callback called when dynamic content in events are loaded */
onWidgetLoad: React.PropTypes.func, onWidgetLoad: PropTypes.func,
/* a list of read-receipts we should show. Each object has a 'roomMember' and 'ts'. */ /* a list of read-receipts we should show. Each object has a 'roomMember' and 'ts'. */
readReceipts: React.PropTypes.arrayOf(React.PropTypes.object), readReceipts: PropTypes.arrayOf(React.PropTypes.object),
/* opaque readreceipt info for each userId; used by ReadReceiptMarker /* opaque readreceipt info for each userId; used by ReadReceiptMarker
* to manage its animations. Should be an empty object when the room * to manage its animations. Should be an empty object when the room
* first loads * first loads
*/ */
readReceiptMap: React.PropTypes.object, readReceiptMap: PropTypes.object,
/* A function which is used to check if the parent panel is being /* A function which is used to check if the parent panel is being
* unmounted, to avoid unnecessary work. Should return true if we * unmounted, to avoid unnecessary work. Should return true if we
* are being unmounted. * are being unmounted.
*/ */
checkUnmounting: React.PropTypes.func, checkUnmounting: PropTypes.func,
/* the status of this event - ie, mxEvent.status. Denormalised to here so /* the status of this event - ie, mxEvent.status. Denormalised to here so
* that we can tell when it changes. */ * that we can tell when it changes. */
eventSendStatus: React.PropTypes.string, eventSendStatus: PropTypes.string,
/* the shape of the tile. by default, the layout is intended for the /* the shape of the tile. by default, the layout is intended for the
* normal room timeline. alternative values are: "file_list", "file_grid" * normal room timeline. alternative values are: "file_list", "file_grid"
@ -142,10 +143,10 @@ module.exports = withMatrixClient(React.createClass({
* boiilerplatey. So just make the necessary render decisions conditional * boiilerplatey. So just make the necessary render decisions conditional
* for now. * for now.
*/ */
tileShape: React.PropTypes.string, tileShape: PropTypes.string,
// show twelve hour timestamps // show twelve hour timestamps
isTwelveHour: React.PropTypes.bool, isTwelveHour: PropTypes.bool,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -16,6 +16,7 @@
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
import dis from '../../../dispatcher'; import dis from '../../../dispatcher';
import { KeyCode } from '../../../Keyboard'; import { KeyCode } from '../../../Keyboard';
@ -25,7 +26,7 @@ module.exports = React.createClass({
displayName: 'ForwardMessage', displayName: 'ForwardMessage',
propTypes: { propTypes: {
onCancelClick: React.PropTypes.func.isRequired, onCancelClick: PropTypes.func.isRequired,
}, },
componentWillMount: function() { componentWillMount: function() {

View file

@ -17,6 +17,7 @@ limitations under the License.
'use strict'; 'use strict';
const React = require('react'); const React = require('react');
import PropTypes from 'prop-types';
const sdk = require('../../../index'); const sdk = require('../../../index');
const MatrixClientPeg = require('../../../MatrixClientPeg'); const MatrixClientPeg = require('../../../MatrixClientPeg');
@ -32,10 +33,10 @@ module.exports = React.createClass({
displayName: 'LinkPreviewWidget', displayName: 'LinkPreviewWidget',
propTypes: { propTypes: {
link: React.PropTypes.string.isRequired, // the URL being previewed link: PropTypes.string.isRequired, // the URL being previewed
mxEvent: React.PropTypes.object.isRequired, // the Event associated with the preview mxEvent: PropTypes.object.isRequired, // the Event associated with the preview
onCancelClick: React.PropTypes.func, // called when the preview's cancel ('hide') button is clicked onCancelClick: PropTypes.func, // called when the preview's cancel ('hide') button is clicked
onWidgetLoad: React.PropTypes.func, // called when the preview's contents has loaded onWidgetLoad: PropTypes.func, // called when the preview's contents has loaded
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import sdk from '../../../index'; import sdk from '../../../index';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
@ -65,6 +66,6 @@ export default class MemberDeviceInfo extends React.Component {
MemberDeviceInfo.displayName = 'MemberDeviceInfo'; MemberDeviceInfo.displayName = 'MemberDeviceInfo';
MemberDeviceInfo.propTypes = { MemberDeviceInfo.propTypes = {
userId: React.PropTypes.string.isRequired, userId: PropTypes.string.isRequired,
device: React.PropTypes.object.isRequired, device: PropTypes.object.isRequired,
}; };

View file

@ -27,6 +27,7 @@ limitations under the License.
* 'isTargetMod': boolean * 'isTargetMod': boolean
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames'; import classNames from 'classnames';
import dis from '../../../dispatcher'; import dis from '../../../dispatcher';
import Modal from '../../../Modal'; import Modal from '../../../Modal';
@ -45,8 +46,8 @@ module.exports = withMatrixClient(React.createClass({
displayName: 'MemberInfo', displayName: 'MemberInfo',
propTypes: { propTypes: {
matrixClient: React.PropTypes.object.isRequired, matrixClient: PropTypes.object.isRequired,
member: React.PropTypes.object.isRequired, member: PropTypes.object.isRequired,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -17,6 +17,7 @@ limitations under the License.
'use strict'; 'use strict';
const React = require('react'); const React = require('react');
import PropTypes from 'prop-types';
const MatrixClientPeg = require('../../../MatrixClientPeg'); const MatrixClientPeg = require('../../../MatrixClientPeg');
const sdk = require('../../../index'); const sdk = require('../../../index');
@ -28,7 +29,7 @@ module.exports = React.createClass({
displayName: 'MemberTile', displayName: 'MemberTile',
propTypes: { propTypes: {
member: React.PropTypes.any.isRequired, // RoomMember member: PropTypes.any.isRequired, // RoomMember
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -15,6 +15,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
import CallHandler from '../../../CallHandler'; import CallHandler from '../../../CallHandler';
import MatrixClientPeg from '../../../MatrixClientPeg'; import MatrixClientPeg from '../../../MatrixClientPeg';
@ -399,17 +400,17 @@ export default class MessageComposer extends React.Component {
MessageComposer.propTypes = { MessageComposer.propTypes = {
// a callback which is called when the height of the composer is // a callback which is called when the height of the composer is
// changed due to a change in content. // changed due to a change in content.
onResize: React.PropTypes.func, onResize: PropTypes.func,
// js-sdk Room object // js-sdk Room object
room: React.PropTypes.object.isRequired, room: PropTypes.object.isRequired,
// string representing the current voip call state // string representing the current voip call state
callState: React.PropTypes.string, callState: PropTypes.string,
// callback when a file to upload is chosen // callback when a file to upload is chosen
uploadFile: React.PropTypes.func.isRequired, uploadFile: PropTypes.func.isRequired,
// string representing the current room app drawer state // string representing the current room app drawer state
showApps: React.PropTypes.bool, showApps: PropTypes.bool,
}; };

View file

@ -15,6 +15,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import type SyntheticKeyboardEvent from 'react/lib/SyntheticKeyboardEvent'; import type SyntheticKeyboardEvent from 'react/lib/SyntheticKeyboardEvent';
import {Editor, EditorState, RichUtils, CompositeDecorator, Modifier, import {Editor, EditorState, RichUtils, CompositeDecorator, Modifier,
@ -86,15 +87,15 @@ export default class MessageComposerInput extends React.Component {
static propTypes = { static propTypes = {
// a callback which is called when the height of the composer is // a callback which is called when the height of the composer is
// changed due to a change in content. // changed due to a change in content.
onResize: React.PropTypes.func, onResize: PropTypes.func,
// js-sdk Room object // js-sdk Room object
room: React.PropTypes.object.isRequired, room: PropTypes.object.isRequired,
// called with current plaintext content (as a string) whenever it changes // called with current plaintext content (as a string) whenever it changes
onContentChanged: React.PropTypes.func, onContentChanged: PropTypes.func,
onInputStateChanged: React.PropTypes.func, onInputStateChanged: PropTypes.func,
}; };
static getKeyBinding(ev: SyntheticKeyboardEvent): string { static getKeyBinding(ev: SyntheticKeyboardEvent): string {
@ -1178,15 +1179,15 @@ export default class MessageComposerInput extends React.Component {
MessageComposerInput.propTypes = { MessageComposerInput.propTypes = {
// a callback which is called when the height of the composer is // a callback which is called when the height of the composer is
// changed due to a change in content. // changed due to a change in content.
onResize: React.PropTypes.func, onResize: PropTypes.func,
// js-sdk Room object // js-sdk Room object
room: React.PropTypes.object.isRequired, room: PropTypes.object.isRequired,
// called with current plaintext content (as a string) whenever it changes // called with current plaintext content (as a string) whenever it changes
onContentChanged: React.PropTypes.func, onContentChanged: PropTypes.func,
onFilesPasted: React.PropTypes.func, onFilesPasted: PropTypes.func,
onInputStateChanged: React.PropTypes.func, onInputStateChanged: PropTypes.func,
}; };

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
import React from "react"; import React from "react";
import PropTypes from 'prop-types';
import MatrixClientPeg from "../../../MatrixClientPeg"; import MatrixClientPeg from "../../../MatrixClientPeg";
import dis from "../../../dispatcher"; import dis from "../../../dispatcher";
import AccessibleButton from "../elements/AccessibleButton"; import AccessibleButton from "../elements/AccessibleButton";
@ -25,9 +26,9 @@ import { _t } from '../../../languageHandler';
module.exports = React.createClass({ module.exports = React.createClass({
displayName: 'PinnedEventTile', displayName: 'PinnedEventTile',
propTypes: { propTypes: {
mxRoom: React.PropTypes.object.isRequired, mxRoom: PropTypes.object.isRequired,
mxEvent: React.PropTypes.object.isRequired, mxEvent: PropTypes.object.isRequired,
onUnpinned: React.PropTypes.func, onUnpinned: PropTypes.func,
}, },
onTileClicked: function() { onTileClicked: function() {
dis.dispatch({ dis.dispatch({

View file

@ -15,6 +15,7 @@ limitations under the License.
*/ */
import React from "react"; import React from "react";
import PropTypes from 'prop-types';
import MatrixClientPeg from "../../../MatrixClientPeg"; import MatrixClientPeg from "../../../MatrixClientPeg";
import AccessibleButton from "../elements/AccessibleButton"; import AccessibleButton from "../elements/AccessibleButton";
import PinnedEventTile from "./PinnedEventTile"; import PinnedEventTile from "./PinnedEventTile";
@ -25,9 +26,9 @@ module.exports = React.createClass({
displayName: 'PinnedEventsPanel', displayName: 'PinnedEventsPanel',
propTypes: { propTypes: {
// The Room from the js-sdk we're going to show pinned events for // The Room from the js-sdk we're going to show pinned events for
room: React.PropTypes.object.isRequired, room: PropTypes.object.isRequired,
onCancelClick: React.PropTypes.func, onCancelClick: PropTypes.func,
}, },
getInitialState: function() { getInitialState: function() {

View file

@ -17,6 +17,7 @@ limitations under the License.
'use strict'; 'use strict';
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
@ -27,14 +28,14 @@ module.exports = React.createClass({
propTypes: { propTypes: {
// number of milliseconds ago this user was last active. // number of milliseconds ago this user was last active.
// zero = unknown // zero = unknown
activeAgo: React.PropTypes.number, activeAgo: PropTypes.number,
// if true, activeAgo is an approximation and "Now" should // if true, activeAgo is an approximation and "Now" should
// be shown instead // be shown instead
currentlyActive: React.PropTypes.bool, currentlyActive: PropTypes.bool,
// offline, online, etc // offline, online, etc
presenceState: React.PropTypes.string, presenceState: PropTypes.string,
}, },
getDefaultProps: function() { getDefaultProps: function() {

View file

@ -18,6 +18,7 @@ limitations under the License.
const React = require('react'); const React = require('react');
const ReactDOM = require('react-dom'); const ReactDOM = require('react-dom');
import PropTypes from 'prop-types';
const sdk = require('../../../index'); const sdk = require('../../../index');
@ -40,35 +41,35 @@ module.exports = React.createClass({
propTypes: { propTypes: {
// the RoomMember to show the RR for // the RoomMember to show the RR for
member: React.PropTypes.object.isRequired, member: PropTypes.object.isRequired,
// number of pixels to offset the avatar from the right of its parent; // number of pixels to offset the avatar from the right of its parent;
// typically a negative value. // typically a negative value.
leftOffset: React.PropTypes.number, leftOffset: PropTypes.number,
// true to hide the avatar (it will still be animated) // true to hide the avatar (it will still be animated)
hidden: React.PropTypes.bool, hidden: PropTypes.bool,
// don't animate this RR into position // don't animate this RR into position
suppressAnimation: React.PropTypes.bool, suppressAnimation: PropTypes.bool,
// an opaque object for storing information about this user's RR in // an opaque object for storing information about this user's RR in
// this room // this room
readReceiptInfo: React.PropTypes.object, readReceiptInfo: PropTypes.object,
// A function which is used to check if the parent panel is being // A function which is used to check if the parent panel is being
// unmounted, to avoid unnecessary work. Should return true if we // unmounted, to avoid unnecessary work. Should return true if we
// are being unmounted. // are being unmounted.
checkUnmounting: React.PropTypes.func, checkUnmounting: PropTypes.func,
// callback for clicks on this RR // callback for clicks on this RR
onClick: React.PropTypes.func, onClick: PropTypes.func,
// Timestamp when the receipt was read // Timestamp when the receipt was read
timestamp: React.PropTypes.number, timestamp: PropTypes.number,
// True to show twelve hour format, false otherwise // True to show twelve hour format, false otherwise
showTwelveHour: React.PropTypes.bool, showTwelveHour: PropTypes.bool,
}, },
getDefaultProps: function() { getDefaultProps: function() {

Some files were not shown because too many files have changed in this diff Show more