adds flow in updateTeamDescriptionModal

This commit is contained in:
zmagod 2017-10-23 09:59:05 +02:00
parent a0eaec214b
commit 7cf43a299a
15 changed files with 8259 additions and 608 deletions

View file

@ -5,7 +5,6 @@ export const SETTINGS_ACCOUNT_PATH = "/settings/account";
export const TEAMS_PATH = "/client_api/teams";
export const CHANGE_TEAM_PATH = "/client_api/teams/change_team";
export const TEAM_DETAILS_PATH = "/client_api/teams/:team_id/details";
export const TEAM_UPDATE_PATH = "/client_api/teams/update";
// search
export const SEARCH_PATH = "/search";

View file

@ -1,5 +1,7 @@
// @flow
import React, { Component } from "react";
import PropTypes, { bool, number, string, func } from "prop-types";
import type { Node } from "react";
import {
Modal,
Button,
@ -11,35 +13,52 @@ import {
import { FormattedMessage } from "react-intl";
import _ from "lodash";
import styled from "styled-components";
import axios from "../../../../../config/axios";
import { updateTeam } from "../../../../../services/api/teams_api";
import { TEXT_MAX_LENGTH } from "../../../../../config/constants/numeric";
import { TEAM_UPDATE_PATH } from "../../../../../config/api_endpoints";
import { COLOR_APPLE_BLOSSOM } from "../../../../../config/constants/colors";
const StyledHelpBlock = styled(HelpBlock)`color: ${COLOR_APPLE_BLOSSOM};`;
const StyledHelpBlock = styled(HelpBlock)`
color: ${COLOR_APPLE_BLOSSOM};
`;
class UpdateTeamDescriptionModal extends Component {
constructor(props) {
type Team = {
id: number,
description: string
};
type Props = {
showModal: boolean,
hideModal: Function,
team: Team,
updateTeamCallback: Function
};
type State = {
errorMessage: Node,
description: string
};
class UpdateTeamDescriptionModal extends Component<Props, State> {
constructor(props: Props) {
super(props);
this.state = { errorMessage: "", description: "" };
this.onCloseModal = this.onCloseModal.bind(this);
this.updateDescription = this.updateDescription.bind(this);
this.handleDescription = this.handleDescription.bind(this);
this.getValidationState = this.getValidationState.bind(this);
(this: any).state = { errorMessage: "", description: "" };
(this: any).onCloseModal = this.onCloseModal.bind(this);
(this: any).updateDescription = this.updateDescription.bind(this);
(this: any).handleDescription = this.handleDescription.bind(this);
(this: any).getValidationState = this.getValidationState.bind(this);
}
onCloseModal() {
this.setState({ errorMessage: "", description: "" });
onCloseModal(): void {
(this: any).setState({ errorMessage: "", description: "" });
this.props.hideModal();
}
getValidationState() {
return this.state.errorMessage.length > 0 ? "error" : null;
getValidationState(): string | null {
return String(this.state.errorMessage).length > 0 ? "error" : null;
}
handleDescription(el) {
const { value } = el.target;
handleDescription(el: SyntheticEvent<HTMLButtonElement>): void {
const { value } = el.currentTarget;
if (value.length > TEXT_MAX_LENGTH) {
this.setState({
errorMessage: (
@ -50,28 +69,20 @@ class UpdateTeamDescriptionModal extends Component {
)
});
} else {
this.setState({ errorMessage: "", description: value });
(this: any).setState({ errorMessage: "", description: value });
}
}
updateDescription() {
axios({
method: "post",
url: TEAM_UPDATE_PATH,
withCredentials: true,
data: {
team_id: this.props.team.id,
team: { description: this.state.description }
}
})
updateDescription(): void {
updateTeam(this.props.team.id, { description: this.state.description })
.then(response => {
this.props.updateTeamCallback(response.data.team);
this.props.updateTeamCallback(response);
this.onCloseModal();
})
.catch(error => this.setState({ errorMessage: error.message }));
}
render() {
render(): Node {
return (
<Modal show={this.props.showModal} onHide={this.onCloseModal}>
<Modal.Header closeButton>
@ -113,14 +124,4 @@ class UpdateTeamDescriptionModal extends Component {
}
}
UpdateTeamDescriptionModal.propTypes = {
showModal: bool.isRequired,
hideModal: func.isRequired,
team: PropTypes.shape({
id: number.isRequired,
description: string
}).isRequired,
updateTeamCallback: func.isRequired
};
export default UpdateTeamDescriptionModal;

View file

@ -1,12 +1,17 @@
// @flow
import type { NewTeam } from "flow-typed";
import type { Teams$NewTeam, Team$Update } from "flow-typed";
import { axiosInstance } from "./config";
import { TEAM_DETAILS_PATH, TEAMS_PATH } from "./endpoints";
import { TEAM_DETAILS_PATH, TEAMS_PATH, TEAM_UPDATE_PATH } from "./endpoints";
export const getTeamDetails = (teamID: number): Promise<*> => {
const path = TEAM_DETAILS_PATH.replace(":team_id", teamID);
return axiosInstance.get(path).then(({ data }) => data.team_details);
};
export const createNewTeam = (team: NewTeam): Promise<*> =>
export const createNewTeam = (team: Teams$NewTeam): Promise<*> =>
axiosInstance.post(TEAMS_PATH, { team }).then(({ data }) => data);
export const updateTeam = (teamID: number, teamData: Team$Update): Promise<*> =>
axiosInstance
.post(TEAM_UPDATE_PATH, { team_id: teamID, team: teamData })
.then(({ data }) => data.team);

View file

@ -0,0 +1,32 @@
// flow-typed signature: 94a58ea1333bada1e79278664744bcec
// flow-typed version: <<STUB>>/babel-plugin-transform-react-jsx-source_v^6.22.0/flow_v0.56.0
/**
* This is an autogenerated libdef stub for:
*
* 'babel-plugin-transform-react-jsx-source'
*
* Fill this stub out by replacing all the `any` types.
*
* Once filled out, we encourage you to share your work with the
* community by sending a pull request to:
* https://github.com/flowtype/flow-typed
*/
declare module 'babel-plugin-transform-react-jsx-source' {
declare module.exports: any;
}
/**
* We include stubs for each file inside this npm package in case you need to
* require those files directly. Feel free to delete any files that aren't
* needed.
*/
declare module 'babel-plugin-transform-react-jsx-source/lib/index' {
declare module.exports: any;
}
// Filename aliases
declare module 'babel-plugin-transform-react-jsx-source/lib/index.js' {
declare module.exports: $Exports<'babel-plugin-transform-react-jsx-source/lib/index'>;
}

View file

@ -1,5 +1,5 @@
// flow-typed signature: 7f2ed99d320afda9cbf973047b8b7ef6
// flow-typed version: <<STUB>>/babel-polyfill_v^6.23.0/flow_v0.56.0
// flow-typed signature: 1eab6798ddbdf14d95637c19e547522a
// flow-typed version: <<STUB>>/babel-polyfill_v^6.26.0/flow_v0.56.0
/**
* This is an autogenerated libdef stub for:

137
flow-typed/npm/bootstrap-sass_vx.x.x.js vendored Normal file
View file

@ -0,0 +1,137 @@
// flow-typed signature: 3b2debf5c802e09acb220a975e00957c
// flow-typed version: <<STUB>>/bootstrap-sass_v^3.3.7/flow_v0.56.0
/**
* This is an autogenerated libdef stub for:
*
* 'bootstrap-sass'
*
* Fill this stub out by replacing all the `any` types.
*
* Once filled out, we encourage you to share your work with the
* community by sending a pull request to:
* https://github.com/flowtype/flow-typed
*/
declare module 'bootstrap-sass' {
declare module.exports: any;
}
/**
* We include stubs for each file inside this npm package in case you need to
* require those files directly. Feel free to delete any files that aren't
* needed.
*/
declare module 'bootstrap-sass/assets/javascripts/bootstrap-sprockets' {
declare module.exports: any;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap' {
declare module.exports: any;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap.min' {
declare module.exports: any;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap/affix' {
declare module.exports: any;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap/alert' {
declare module.exports: any;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap/button' {
declare module.exports: any;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap/carousel' {
declare module.exports: any;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap/collapse' {
declare module.exports: any;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap/dropdown' {
declare module.exports: any;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap/modal' {
declare module.exports: any;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap/popover' {
declare module.exports: any;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap/scrollspy' {
declare module.exports: any;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap/tab' {
declare module.exports: any;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap/tooltip' {
declare module.exports: any;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap/transition' {
declare module.exports: any;
}
declare module 'bootstrap-sass/eyeglass-exports' {
declare module.exports: any;
}
// Filename aliases
declare module 'bootstrap-sass/assets/javascripts/bootstrap-sprockets.js' {
declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap-sprockets'>;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap.js' {
declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap'>;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap.min.js' {
declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap.min'>;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap/affix.js' {
declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap/affix'>;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap/alert.js' {
declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap/alert'>;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap/button.js' {
declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap/button'>;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap/carousel.js' {
declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap/carousel'>;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap/collapse.js' {
declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap/collapse'>;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap/dropdown.js' {
declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap/dropdown'>;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap/modal.js' {
declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap/modal'>;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap/popover.js' {
declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap/popover'>;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap/scrollspy.js' {
declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap/scrollspy'>;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap/tab.js' {
declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap/tab'>;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap/tooltip.js' {
declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap/tooltip'>;
}
declare module 'bootstrap-sass/assets/javascripts/bootstrap/transition.js' {
declare module.exports: $Exports<'bootstrap-sass/assets/javascripts/bootstrap/transition'>;
}
declare module 'bootstrap-sass/eyeglass-exports.js' {
declare module.exports: $Exports<'bootstrap-sass/eyeglass-exports'>;
}

18
flow-typed/npm/font-awesome_vx.x.x.js vendored Normal file
View file

@ -0,0 +1,18 @@
// flow-typed signature: c9429fa13146f6e9952156452792cf3a
// flow-typed version: <<STUB>>/font-awesome_v^4.7.0/flow_v0.56.0
/**
* This is an autogenerated libdef stub for:
*
* 'font-awesome'
*
* Fill this stub out by replacing all the `any` types.
*
* Once filled out, we encourage you to share your work with the
* community by sending a pull request to:
* https://github.com/flowtype/flow-typed
*/
declare module 'font-awesome' {
declare module.exports: any;
}

5078
flow-typed/npm/intl_vx.x.x.js vendored Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,29 +1,29 @@
// flow-typed signature: 793995d08b898744007089d163219dbe
// flow-typed version: 7a7fdd86ed/moment_v2.3.x/flow_>=v0.34.x
// flow-typed signature: a56215e90c2cb9a5f9e106edd857208f
// flow-typed version: 057d3e81b5/moment_v2.3.x/flow_>=v0.34.x
type moment$MomentOptions = {
y?: number|string,
year?: number|string,
years?: number|string,
M?: number|string,
month?: number|string,
months?: number|string,
d?: number|string,
day?: number|string,
days?: number|string,
date?: number|string,
h?: number|string,
hour?: number|string,
hours?: number|string,
m?: number|string,
minute?: number|string,
minutes?: number|string,
s?: number|string,
second?: number|string,
seconds?: number|string,
ms?: number|string,
millisecond?: number|string,
milliseconds?: number|string,
y?: number | string,
year?: number | string,
years?: number | string,
M?: number | string,
month?: number | string,
months?: number | string,
d?: number | string,
day?: number | string,
days?: number | string,
date?: number | string,
h?: number | string,
hour?: number | string,
hours?: number | string,
m?: number | string,
minute?: number | string,
minutes?: number | string,
s?: number | string,
second?: number | string,
seconds?: number | string,
ms?: number | string,
millisecond?: number | string,
milliseconds?: number | string
};
type moment$MomentObject = {
@ -33,18 +33,18 @@ type moment$MomentObject = {
hours: number,
minutes: number,
seconds: number,
milliseconds: number,
milliseconds: number
};
type moment$MomentCreationData = {
input: string,
format: string,
locale: Object,
isUTC: bool,
strict: bool,
isUTC: boolean,
strict: boolean
};
type moment$CalendarFormat = string | (moment: moment$Moment) => string;
type moment$CalendarFormat = string | ((moment: moment$Moment) => string);
type moment$CalendarFormats = {
sameDay?: moment$CalendarFormat,
@ -52,197 +52,276 @@ type moment$CalendarFormats = {
nextWeek?: moment$CalendarFormat,
lastDay?: moment$CalendarFormat,
lastWeek?: moment$CalendarFormat,
sameElse?: moment$CalendarFormat,
sameElse?: moment$CalendarFormat
};
declare class moment$LocaleData {
months(moment: moment$Moment): string;
monthsShort(moment: moment$Moment): string;
monthsParse(month: string): number;
weekdays(moment: moment$Moment): string;
weekdaysShort(moment: moment$Moment): string;
weekdaysMin(moment: moment$Moment): string;
weekdaysParse(weekDay: string): number;
longDateFormat(dateFormat: string): string;
isPM(date: string): bool;
meridiem(hours: number, minutes: number, isLower: bool): string;
calendar(key: 'sameDay'|'nextDay'|'lastDay'|'nextWeek'|'prevWeek'|'sameElse', moment: moment$Moment): string;
relativeTime(number: number, withoutSuffix: bool, key: 's'|'m'|'mm'|'h'|'hh'|'d'|'dd'|'M'|'MM'|'y'|'yy', isFuture: bool): string;
pastFuture(diff: any, relTime: string): string;
ordinal(number: number): string;
preparse(str: string): any;
postformat(str: string): any;
week(moment: moment$Moment): string;
invalidDate(): string;
firstDayOfWeek(): number;
firstDayOfYear(): number;
months(moment: moment$Moment): string,
monthsShort(moment: moment$Moment): string,
monthsParse(month: string): number,
weekdays(moment: moment$Moment): string,
weekdaysShort(moment: moment$Moment): string,
weekdaysMin(moment: moment$Moment): string,
weekdaysParse(weekDay: string): number,
longDateFormat(dateFormat: string): string,
isPM(date: string): boolean,
meridiem(hours: number, minutes: number, isLower: boolean): string,
calendar(
key:
| "sameDay"
| "nextDay"
| "lastDay"
| "nextWeek"
| "prevWeek"
| "sameElse",
moment: moment$Moment
): string,
relativeTime(
number: number,
withoutSuffix: boolean,
key: "s" | "m" | "mm" | "h" | "hh" | "d" | "dd" | "M" | "MM" | "y" | "yy",
isFuture: boolean
): string,
pastFuture(diff: any, relTime: string): string,
ordinal(number: number): string,
preparse(str: string): any,
postformat(str: string): any,
week(moment: moment$Moment): string,
invalidDate(): string,
firstDayOfWeek(): number,
firstDayOfYear(): number
}
declare class moment$MomentDuration {
humanize(suffix?: bool): string;
milliseconds(): number;
asMilliseconds(): number;
seconds(): number;
asSeconds(): number;
minutes(): number;
asMinutes(): number;
hours(): number;
asHours(): number;
days(): number;
asDays(): number;
months(): number;
asMonths(): number;
years(): number;
asYears(): number;
add(value: number|moment$MomentDuration|Object, unit?: string): this;
subtract(value: number|moment$MomentDuration|Object, unit?: string): this;
as(unit: string): number;
get(unit: string): number;
toJSON(): string;
toISOString(): string;
isValid(): bool;
humanize(suffix?: boolean): string,
milliseconds(): number,
asMilliseconds(): number,
seconds(): number,
asSeconds(): number,
minutes(): number,
asMinutes(): number,
hours(): number,
asHours(): number,
days(): number,
asDays(): number,
months(): number,
asMonths(): number,
years(): number,
asYears(): number,
add(value: number | moment$MomentDuration | Object, unit?: string): this,
subtract(value: number | moment$MomentDuration | Object, unit?: string): this,
as(unit: string): number,
get(unit: string): number,
toJSON(): string,
toISOString(): string,
isValid(): boolean
}
declare class moment$Moment {
static ISO_8601: string;
static (string?: string, format?: string|Array<string>, strict?: bool): moment$Moment;
static (string?: string, format?: string|Array<string>, locale?: string, strict?: bool): moment$Moment;
static (initDate: ?Object|number|Date|Array<number>|moment$Moment|string): moment$Moment;
static unix(seconds: number): moment$Moment;
static utc(): moment$Moment;
static utc(number: number|Array<number>): moment$Moment;
static utc(str: string, str2?: string|Array<string>, str3?: string): moment$Moment;
static utc(moment: moment$Moment): moment$Moment;
static utc(date: Date): moment$Moment;
static parseZone(): moment$Moment;
static parseZone(rawDate: string): moment$Moment;
static parseZone(rawDate: string, format: string | Array<string>): moment$Moment;
static parseZone(rawDate: string, format: string, strict: boolean): moment$Moment;
static parseZone(rawDate: string, format: string, locale: string, strict: boolean): moment$Moment;
isValid(): bool;
invalidAt(): 0|1|2|3|4|5|6;
creationData(): moment$MomentCreationData;
millisecond(number: number): this;
milliseconds(number: number): this;
millisecond(): number;
milliseconds(): number;
second(number: number): this;
seconds(number: number): this;
second(): number;
seconds(): number;
minute(number: number): this;
minutes(number: number): this;
minute(): number;
minutes(): number;
hour(number: number): this;
hours(number: number): this;
hour(): number;
hours(): number;
date(number: number): this;
dates(number: number): this;
date(): number;
dates(): number;
day(day: number|string): this;
days(day: number|string): this;
day(): number;
days(): number;
weekday(number: number): this;
weekday(): number;
isoWeekday(number: number): this;
isoWeekday(): number;
dayOfYear(number: number): this;
dayOfYear(): number;
week(number: number): this;
weeks(number: number): this;
week(): number;
weeks(): number;
isoWeek(number: number): this;
isoWeeks(number: number): this;
isoWeek(): number;
isoWeeks(): number;
month(number: number): this;
months(number: number): this;
month(): number;
months(): number;
quarter(number: number): this;
quarter(): number;
year(number: number): this;
years(number: number): this;
year(): number;
years(): number;
weekYear(number: number): this;
weekYear(): number;
isoWeekYear(number: number): this;
isoWeekYear(): number;
weeksInYear(): number;
isoWeeksInYear(): number;
get(string: string): number;
set(unit: string, value: number): this;
set(options: { [unit: string]: number }): this;
static max(...dates: Array<moment$Moment>): moment$Moment;
static max(dates: Array<moment$Moment>): moment$Moment;
static min(...dates: Array<moment$Moment>): moment$Moment;
static min(dates: Array<moment$Moment>): moment$Moment;
add(value: number|moment$MomentDuration|moment$Moment|Object, unit?: string): this;
subtract(value: number|moment$MomentDuration|moment$Moment|string|Object, unit?: string): this;
startOf(unit: string): this;
endOf(unit: string): this;
local(): this;
utc(): this;
utcOffset(offset: number|string): this;
utcOffset(): number;
format(format?: string): string;
fromNow(removeSuffix?: bool): string;
from(value: moment$Moment|string|number|Date|Array<number>, removePrefix?: bool): string;
toNow(removePrefix?: bool): string;
to(value: moment$Moment|string|number|Date|Array<number>, removePrefix?: bool): string;
calendar(refTime?: any, formats?: moment$CalendarFormats): string;
diff(date: moment$Moment|string|number|Date|Array<number>, format?: string, floating?: bool): number;
valueOf(): number;
unix(): number;
daysInMonth(): number;
toDate(): Date;
toArray(): Array<number>;
toJSON(): string;
toISOString(): string;
toObject(): moment$MomentObject;
isBefore(date?: moment$Moment|string|number|Date|Array<number>, units?: ?string): bool;
isSame(date?: moment$Moment|string|number|Date|Array<number>, units?: ?string): bool;
isAfter(date?: moment$Moment|string|number|Date|Array<number>, units?: ?string): bool;
isSameOrBefore(date?: moment$Moment|string|number|Date|Array<number>, units?: ?string): bool;
isSameOrAfter(date?: moment$Moment|string|number|Date|Array<number>, units?: ?string): bool;
static ISO_8601: string,
static (
string?: string,
format?: string | Array<string>,
strict?: boolean
): moment$Moment,
static (
string?: string,
format?: string | Array<string>,
locale?: string,
strict?: boolean
): moment$Moment,
static (
initDate: ?Object | number | Date | Array<number> | moment$Moment | string
): moment$Moment,
static unix(seconds: number): moment$Moment,
static utc(): moment$Moment,
static utc(number: number | Array<number>): moment$Moment,
static utc(
str: string,
str2?: string | Array<string>,
str3?: string
): moment$Moment,
static utc(moment: moment$Moment): moment$Moment,
static utc(date: Date): moment$Moment,
static parseZone(): moment$Moment,
static parseZone(rawDate: string): moment$Moment,
static parseZone(
rawDate: string,
format: string | Array<string>
): moment$Moment,
static parseZone(
rawDate: string,
format: string,
strict: boolean
): moment$Moment,
static parseZone(
rawDate: string,
format: string,
locale: string,
strict: boolean
): moment$Moment,
isValid(): boolean,
invalidAt(): 0 | 1 | 2 | 3 | 4 | 5 | 6,
creationData(): moment$MomentCreationData,
millisecond(number: number): this,
milliseconds(number: number): this,
millisecond(): number,
milliseconds(): number,
second(number: number): this,
seconds(number: number): this,
second(): number,
seconds(): number,
minute(number: number): this,
minutes(number: number): this,
minute(): number,
minutes(): number,
hour(number: number): this,
hours(number: number): this,
hour(): number,
hours(): number,
date(number: number): this,
dates(number: number): this,
date(): number,
dates(): number,
day(day: number | string): this,
days(day: number | string): this,
day(): number,
days(): number,
weekday(number: number): this,
weekday(): number,
isoWeekday(number: number): this,
isoWeekday(): number,
dayOfYear(number: number): this,
dayOfYear(): number,
week(number: number): this,
weeks(number: number): this,
week(): number,
weeks(): number,
isoWeek(number: number): this,
isoWeeks(number: number): this,
isoWeek(): number,
isoWeeks(): number,
month(number: number): this,
months(number: number): this,
month(): number,
months(): number,
quarter(number: number): this,
quarter(): number,
year(number: number): this,
years(number: number): this,
year(): number,
years(): number,
weekYear(number: number): this,
weekYear(): number,
isoWeekYear(number: number): this,
isoWeekYear(): number,
weeksInYear(): number,
isoWeeksInYear(): number,
get(string: string): number,
set(unit: string, value: number): this,
set(options: { [unit: string]: number }): this,
static max(...dates: Array<moment$Moment>): moment$Moment,
static max(dates: Array<moment$Moment>): moment$Moment,
static min(...dates: Array<moment$Moment>): moment$Moment,
static min(dates: Array<moment$Moment>): moment$Moment,
add(
value: number | moment$MomentDuration | moment$Moment | Object,
unit?: string
): this,
subtract(
value: number | moment$MomentDuration | moment$Moment | string | Object,
unit?: string
): this,
startOf(unit: string): this,
endOf(unit: string): this,
local(): this,
utc(): this,
utcOffset(
offset: number | string,
keepLocalTime?: boolean,
keepMinutes?: boolean
): this,
utcOffset(): number,
format(format?: string): string,
fromNow(removeSuffix?: boolean): string,
from(
value: moment$Moment | string | number | Date | Array<number>,
removePrefix?: boolean
): string,
toNow(removePrefix?: boolean): string,
to(
value: moment$Moment | string | number | Date | Array<number>,
removePrefix?: boolean
): string,
calendar(refTime?: any, formats?: moment$CalendarFormats): string,
diff(
date: moment$Moment | string | number | Date | Array<number>,
format?: string,
floating?: boolean
): number,
valueOf(): number,
unix(): number,
daysInMonth(): number,
toDate(): Date,
toArray(): Array<number>,
toJSON(): string,
toISOString(): string,
toObject(): moment$MomentObject,
isBefore(
date?: moment$Moment | string | number | Date | Array<number>,
units?: ?string
): boolean,
isSame(
date?: moment$Moment | string | number | Date | Array<number>,
units?: ?string
): boolean,
isAfter(
date?: moment$Moment | string | number | Date | Array<number>,
units?: ?string
): boolean,
isSameOrBefore(
date?: moment$Moment | string | number | Date | Array<number>,
units?: ?string
): boolean,
isSameOrAfter(
date?: moment$Moment | string | number | Date | Array<number>,
units?: ?string
): boolean,
isBetween(
fromDate: moment$Moment|string|number|Date|Array<number>,
toDate?: ?moment$Moment|string|number|Date|Array<number>,
fromDate: moment$Moment | string | number | Date | Array<number>,
toDate?: ?moment$Moment | string | number | Date | Array<number>,
granularity?: ?string,
inclusion?: ?string
): bool;
isDST(): bool;
isDSTShifted(): bool;
isLeapYear(): bool;
clone(): moment$Moment;
static isMoment(obj: any): bool;
static isDate(obj: any): bool;
static locale(locale: string, localeData?: Object): string;
static updateLocale(locale: string, localeData?: ?Object): void;
static locale(locales: Array<string>): string;
locale(locale: string, customization?: Object|null): moment$Moment;
locale(): string;
static months(): Array<string>;
static monthsShort(): Array<string>;
static weekdays(): Array<string>;
static weekdaysShort(): Array<string>;
static weekdaysMin(): Array<string>;
static months(): string;
static monthsShort(): string;
static weekdays(): string;
static weekdaysShort(): string;
static weekdaysMin(): string;
static localeData(key?: string): moment$LocaleData;
static duration(value: number|Object|string, unit?: string): moment$MomentDuration;
static isDuration(obj: any): bool;
static normalizeUnits(unit: string): string;
static invalid(object: any): moment$Moment;
): boolean,
isDST(): boolean,
isDSTShifted(): boolean,
isLeapYear(): boolean,
clone(): moment$Moment,
static isMoment(obj: any): boolean,
static isDate(obj: any): boolean,
static locale(locale: string, localeData?: Object): string,
static updateLocale(locale: string, localeData?: ?Object): void,
static locale(locales: Array<string>): string,
locale(locale: string, customization?: Object | null): moment$Moment,
locale(): string,
static months(): Array<string>,
static monthsShort(): Array<string>,
static weekdays(): Array<string>,
static weekdaysShort(): Array<string>,
static weekdaysMin(): Array<string>,
static months(): string,
static monthsShort(): string,
static weekdays(): string,
static weekdaysShort(): string,
static weekdaysMin(): string,
static localeData(key?: string): moment$LocaleData,
static duration(
value: number | Object | string,
unit?: string
): moment$MomentDuration,
static isDuration(obj: any): boolean,
static normalizeUnits(unit: string): string,
static invalid(object: any): moment$Moment
}
declare module 'moment' {
declare module "moment" {
declare module.exports: Class<moment$Moment>;
}

View file

@ -0,0 +1,45 @@
// flow-typed signature: 1df6b1361f12b05b8482216160fd1b61
// flow-typed version: <<STUB>>/react-document-title_v^2.0.3/flow_v0.56.0
/**
* This is an autogenerated libdef stub for:
*
* 'react-document-title'
*
* Fill this stub out by replacing all the `any` types.
*
* Once filled out, we encourage you to share your work with the
* community by sending a pull request to:
* https://github.com/flowtype/flow-typed
*/
declare module 'react-document-title' {
declare module.exports: any;
}
/**
* We include stubs for each file inside this npm package in case you need to
* require those files directly. Feel free to delete any files that aren't
* needed.
*/
declare module 'react-document-title/test/browser' {
declare module.exports: any;
}
declare module 'react-document-title/test/common' {
declare module.exports: any;
}
// Filename aliases
declare module 'react-document-title/index' {
declare module.exports: $Exports<'react-document-title'>;
}
declare module 'react-document-title/index.js' {
declare module.exports: $Exports<'react-document-title'>;
}
declare module 'react-document-title/test/browser.js' {
declare module.exports: $Exports<'react-document-title/test/browser'>;
}
declare module 'react-document-title/test/common.js' {
declare module.exports: $Exports<'react-document-title/test/common'>;
}

View file

@ -1,8 +1,5 @@
// flow-typed signature: f0d96df48e9abc14bcc1405ba2a47dde
// flow-typed version: 83053e4020/react-redux_v5.x.x/flow_>=v0.53.x
// flow-typed signature: 8db7b853f57c51094bf0ab8b2650fd9c
// flow-typed version: ab8db5f14d/react-redux_v5.x.x/flow_>=v0.30.x
// flow-typed signature: 59b0c4be0e1408f21e2446be96c79804
// flow-typed version: 9092387fd2/react-redux_v5.x.x/flow_>=v0.54.x
import type { Dispatch, Store } from "redux";
@ -34,6 +31,22 @@ declare module "react-redux" {
declare type Context = { store: Store<*, *> };
declare type ComponentWithDefaultProps<DP: {}, P: {}, CP: P> = Class<
React$Component<CP>
> & { defaultProps: DP };
declare class ConnectedComponentWithDefaultProps<
OP,
DP,
CP
> extends React$Component<OP> {
static defaultProps: DP, // <= workaround for https://github.com/facebook/flow/issues/4644
static WrappedComponent: Class<React$Component<CP>>,
getWrappedInstance(): React$Component<CP>,
props: OP,
state: void
}
declare class ConnectedComponent<OP, P> extends React$Component<OP> {
static WrappedComponent: Class<React$Component<P>>,
getWrappedInstance(): React$Component<P>,
@ -41,13 +54,18 @@ declare module "react-redux" {
state: void
}
declare type ConnectedComponentWithDefaultPropsClass<OP, DP, CP> = Class<
ConnectedComponentWithDefaultProps<OP, DP, CP>
>;
declare type ConnectedComponentClass<OP, P> = Class<
ConnectedComponent<OP, P>
>;
declare type Connector<OP, P> = (
component: React$ComponentType<P>
) => ConnectedComponentClass<OP, P>;
declare type Connector<OP, P> = (<DP: {}, CP: {}>(
component: ComponentWithDefaultProps<DP, P, CP>
) => ConnectedComponentWithDefaultPropsClass<OP, DP, CP>) &
((component: React$ComponentType<P>) => ConnectedComponentClass<OP, P>);
declare class Provider<S, A> extends React$Component<{
store: Store<S, A>,

View file

@ -1,5 +1,5 @@
// flow-typed signature: 86993bd000012d3e1ef10d757d16952d
// flow-typed version: a165222d28/redux_v3.x.x/flow_>=v0.33.x
// flow-typed signature: 33b83b6284653250e74578cf4dbe6124
// flow-typed version: e282e4128f/redux_v3.x.x/flow_>=v0.33.x
declare module 'redux' {
@ -11,15 +11,15 @@ declare module 'redux' {
*/
declare type DispatchAPI<A> = (action: A) => A;
declare type Dispatch<A: { type: $Subtype<string> }> = DispatchAPI<A>;
declare export type DispatchAPI<A> = (action: A) => A;
declare export type Dispatch<A: { type: $Subtype<string> }> = DispatchAPI<A>;
declare type MiddlewareAPI<S, A, D = Dispatch<A>> = {
declare export type MiddlewareAPI<S, A, D = Dispatch<A>> = {
dispatch: D;
getState(): S;
};
declare type Store<S, A, D = Dispatch<A>> = {
declare export type Store<S, A, D = Dispatch<A>> = {
// rewrite MiddlewareAPI members in order to get nicer error messages (intersections produce long messages)
dispatch: D;
getState(): S;
@ -27,58 +27,58 @@ declare module 'redux' {
replaceReducer(nextReducer: Reducer<S, A>): void
};
declare type Reducer<S, A> = (state: S, action: A) => S;
declare export type Reducer<S, A> = (state: S, action: A) => S;
declare type CombinedReducer<S, A> = (state: $Shape<S> & {} | void, action: A) => S;
declare export type CombinedReducer<S, A> = (state: $Shape<S> & {} | void, action: A) => S;
declare type Middleware<S, A, D = Dispatch<A>> =
declare export type Middleware<S, A, D = Dispatch<A>> =
(api: MiddlewareAPI<S, A, D>) =>
(next: D) => D;
declare type StoreCreator<S, A, D = Dispatch<A>> = {
declare export type StoreCreator<S, A, D = Dispatch<A>> = {
(reducer: Reducer<S, A>, enhancer?: StoreEnhancer<S, A, D>): Store<S, A, D>;
(reducer: Reducer<S, A>, preloadedState: S, enhancer?: StoreEnhancer<S, A, D>): Store<S, A, D>;
};
declare type StoreEnhancer<S, A, D = Dispatch<A>> = (next: StoreCreator<S, A, D>) => StoreCreator<S, A, D>;
declare export type StoreEnhancer<S, A, D = Dispatch<A>> = (next: StoreCreator<S, A, D>) => StoreCreator<S, A, D>;
declare function createStore<S, A, D>(reducer: Reducer<S, A>, enhancer?: StoreEnhancer<S, A, D>): Store<S, A, D>;
declare function createStore<S, A, D>(reducer: Reducer<S, A>, preloadedState: S, enhancer?: StoreEnhancer<S, A, D>): Store<S, A, D>;
declare export function createStore<S, A, D>(reducer: Reducer<S, A>, enhancer?: StoreEnhancer<S, A, D>): Store<S, A, D>;
declare export function createStore<S, A, D>(reducer: Reducer<S, A>, preloadedState: S, enhancer?: StoreEnhancer<S, A, D>): Store<S, A, D>;
declare function applyMiddleware<S, A, D>(...middlewares: Array<Middleware<S, A, D>>): StoreEnhancer<S, A, D>;
declare export function applyMiddleware<S, A, D>(...middlewares: Array<Middleware<S, A, D>>): StoreEnhancer<S, A, D>;
declare type ActionCreator<A, B> = (...args: Array<B>) => A;
declare type ActionCreators<K, A> = { [key: K]: ActionCreator<A, any> };
declare export type ActionCreator<A, B> = (...args: Array<B>) => A;
declare export type ActionCreators<K, A> = { [key: K]: ActionCreator<A, any> };
declare function bindActionCreators<A, C: ActionCreator<A, any>, D: DispatchAPI<A>>(actionCreator: C, dispatch: D): C;
declare function bindActionCreators<A, K, C: ActionCreators<K, A>, D: DispatchAPI<A>>(actionCreators: C, dispatch: D): C;
declare export function bindActionCreators<A, C: ActionCreator<A, any>, D: DispatchAPI<A>>(actionCreator: C, dispatch: D): C;
declare export function bindActionCreators<A, K, C: ActionCreators<K, A>, D: DispatchAPI<A>>(actionCreators: C, dispatch: D): C;
declare function combineReducers<O: Object, A>(reducers: O): CombinedReducer<$ObjMap<O, <S>(r: Reducer<S, any>) => S>, A>;
declare export function combineReducers<O: Object, A>(reducers: O): CombinedReducer<$ObjMap<O, <S>(r: Reducer<S, any>) => S>, A>;
declare function compose<A, B>(ab: (a: A) => B): (a: A) => B
declare function compose<A, B, C>(
declare export function compose<A, B>(ab: (a: A) => B): (a: A) => B
declare export function compose<A, B, C>(
bc: (b: B) => C,
ab: (a: A) => B
): (a: A) => C
declare function compose<A, B, C, D>(
declare export function compose<A, B, C, D>(
cd: (c: C) => D,
bc: (b: B) => C,
ab: (a: A) => B
): (a: A) => D
declare function compose<A, B, C, D, E>(
declare export function compose<A, B, C, D, E>(
de: (d: D) => E,
cd: (c: C) => D,
bc: (b: B) => C,
ab: (a: A) => B
): (a: A) => E
declare function compose<A, B, C, D, E, F>(
declare export function compose<A, B, C, D, E, F>(
ef: (e: E) => F,
de: (d: D) => E,
cd: (c: C) => D,
bc: (b: B) => C,
ab: (a: A) => B
): (a: A) => F
declare function compose<A, B, C, D, E, F, G>(
declare export function compose<A, B, C, D, E, F, G>(
fg: (f: F) => G,
ef: (e: E) => F,
de: (d: D) => E,
@ -86,7 +86,7 @@ declare module 'redux' {
bc: (b: B) => C,
ab: (a: A) => B
): (a: A) => G
declare function compose<A, B, C, D, E, F, G, H>(
declare export function compose<A, B, C, D, E, F, G, H>(
gh: (g: G) => H,
fg: (f: F) => G,
ef: (e: E) => F,
@ -95,7 +95,7 @@ declare module 'redux' {
bc: (b: B) => C,
ab: (a: A) => B
): (a: A) => H
declare function compose<A, B, C, D, E, F, G, H, I>(
declare export function compose<A, B, C, D, E, F, G, H, I>(
hi: (h: H) => I,
gh: (g: G) => H,
fg: (f: F) => G,

View file

@ -6,3 +6,7 @@ export type Team$TeamMemeber = {
teamName: string,
teamId: number
};
export type Team$Update = {
description?: string
}

View file

@ -4865,7 +4865,7 @@ prop-types-extra@^1.0.1:
dependencies:
warning "^3.0.0"
prop-types@^15.5.10:
prop-types@^15.5.10, prop-types@^15.5.6:
version "15.6.0"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856"
dependencies: