2018-10-03 12:04:08 -07:00
|
|
|
import * as React from 'react';
|
|
|
|
import { storiesOf } from '@storybook/react';
|
|
|
|
import { Provider } from 'react-redux';
|
|
|
|
|
|
|
|
import { configureStore } from 'store/configure';
|
ZF Grants 2.1 (#496)
* fix ccr pagination defaults
* add ccr admin tests
* add ccr user tests
* checkpoint
* fix tslint
* request changes discussion flow mvp
* admin - add discussion status
* backend - add live drafts
* admin - add live drafts
* frontend - add live drafts
* frontend - add edit discussion proposal
* fix tsc
* include DISCUSSION status in propsal listview
* do not make live draft on admin request changes
* hide live drafts from user proposal draft list
* fix backend tests
* add admin tests
* add user tests
* fix: liking, viewing discussion proposals, admin menu
* admin - update hints for live drafts
* fe - add better messaging when updating a proposal
* be - fix like test
* remove TODO comments
* add new email types
* fix storybook
* add revision tab story
* backend - implement proposal revisions
* frontend - implement proposal revisions
* update revision tab story
* fix lint
* remove set detection
* email proposal followers on revision
* restrict banner to team members only
* misc bug fixes
* update, add backend tests
* add milestone title change to revision history story
* fix milestones display in preview
* allow archived proposals to be queried
* implement archived proposal page
* fix tsc
* implement archived proposal get route
* move styling into less
* remove proposal archive parent id
* handle archived proposal status
* cleanup
* remove contributions, switch to USD, implement quarters
* use Qs to preserve formatting
* handle edit only kyc
* prevent ARCHIVED proposals from being sent to admin
* display latest revision first
* admin - proposal & ccr reject permanently
* backend - proposal & ccr reject permanently
* frontend - proposal & ccr reject permanently
* fix tsc
* use $ in milestone payout email
* introduce custom filters to proposal listview
* hide archive link on first revision
* upgrade packages
* add bech32 implementation
* add z address validation with tests
* fix tslint
* use local address validation
* fix tests, remove blockchain mock gets
* add additional bad addresses
* update briefs to include page break message
* remove contributions routes, menu entry
* disable countribution count admin stats
* remove matching and pretty print in finance
* fix tslint
* separate out rejected permanently proposals
* make removing proposals generic
* allow linked tabs to be ignored
* remove rejected permanently, bugfix
* update preview link to point to rejected tab
* implement rejected permanently tab, add tab message
* refactor variable
* fix tslint
* fix tslint
* send ccr reject permanently email on rejection
* fix preview message
* wire up proposal arbiter and rejected emails
* disable tip jar in proposal and profile
* sync ccr/proposal drafts on create form init
* check invites on submit modal open
* update team invite language
* update team text when edit
* fix ccr rejected permanently tag
* text changes, email preview fix
* display changes requested tag when in discussion with changes requested
* enable social share on open for discussion proposals, update language
* place sort below filter
* derive filter from query string
* use better filter names in query params
* fix tslint
* create snapshot of original proposal on first revision
* clear invites between edits, account for additional changes not tracked in revisions
* update tests
* fix test
* remove print
* SameSite Fixes (#150)
* QA Fixes 2 (#151)
* set filters as query strings on change
* remove rejected permanently tags
* add dollar sign in financials legend
* fix tsc
* Copy Touchups (#152)
* Email Fixes (#155)
* fix ZEC in milestone payout emails
* fix links in rejected permanently CCR/proposal emails
* Poll for Team and Invite Changes in Create Flow (#153)
* poll for team and invite changes in create flow
* fix tslint
Co-authored-by: Daniel Ternyak <dternyak@gmail.com>
* pretty print payouts by quarter (#156)
Co-authored-by: Daniel Ternyak <dternyak@gmail.com>
* Remove Blockchain Module (#154)
* remove blockchain route from backend, remove calls to node
* revert blockchain_get removal
* Add Tags to Proposal Cards (#157)
* add tag to proposals and dynamically set v1 card height
* listen on window resize
* make card height props optional
* set tag in bottom right, remove dynamic card resize, add dynamic tag resize
* cleanup
* cleanup
Co-authored-by: Daniel Ternyak <dternyak@gmail.com>
* Improve Frontend Address Validation (#158)
Co-authored-by: Daniel Ternyak <dternyak@gmail.com>
* Remove blockchain module (#162)
* remove blockchain route from backend, remove calls to node
* revert blockchain_get removal
* Remove Blockchain App (#160)
* remove blockchain app
* remove blockchain app from travis
Co-authored-by: Danny Skubak <skubakdj@gmail.com>
* Proposal Edit Fixes (#161)
* fe - display error if edit creation fails
* be - restrict live draft publish
Co-authored-by: Daniel Ternyak <dternyak@gmail.com>
* Restrict Arbiter Assignment (#159)
Co-authored-by: Daniel Ternyak <dternyak@gmail.com>
* Email Copy updates
* Remove Admin Financials Card
* Hookup 'proposal_approved_without_funding' to admin email example
* bump various package versions
* Update yarn.lock files
* Attach 'proposal_approved_without_funding' to backend example email
* bump package versions
Co-authored-by: Danny Skubak <skubakdj@gmail.com>
2020-04-07 19:56:32 -07:00
|
|
|
import { combineInitialState as __combineInitialState } from 'store/reducers';
|
2018-10-03 12:04:08 -07:00
|
|
|
import Milestones from 'components/Proposal/Milestones';
|
2019-02-11 13:22:40 -08:00
|
|
|
import { MILESTONE_STAGE } from 'types';
|
|
|
|
const { IDLE, ACCEPTED, PAID, REJECTED } = MILESTONE_STAGE;
|
2018-10-03 12:04:08 -07:00
|
|
|
|
|
|
|
import 'styles/style.less';
|
ZF Grants 2.1 (#496)
* fix ccr pagination defaults
* add ccr admin tests
* add ccr user tests
* checkpoint
* fix tslint
* request changes discussion flow mvp
* admin - add discussion status
* backend - add live drafts
* admin - add live drafts
* frontend - add live drafts
* frontend - add edit discussion proposal
* fix tsc
* include DISCUSSION status in propsal listview
* do not make live draft on admin request changes
* hide live drafts from user proposal draft list
* fix backend tests
* add admin tests
* add user tests
* fix: liking, viewing discussion proposals, admin menu
* admin - update hints for live drafts
* fe - add better messaging when updating a proposal
* be - fix like test
* remove TODO comments
* add new email types
* fix storybook
* add revision tab story
* backend - implement proposal revisions
* frontend - implement proposal revisions
* update revision tab story
* fix lint
* remove set detection
* email proposal followers on revision
* restrict banner to team members only
* misc bug fixes
* update, add backend tests
* add milestone title change to revision history story
* fix milestones display in preview
* allow archived proposals to be queried
* implement archived proposal page
* fix tsc
* implement archived proposal get route
* move styling into less
* remove proposal archive parent id
* handle archived proposal status
* cleanup
* remove contributions, switch to USD, implement quarters
* use Qs to preserve formatting
* handle edit only kyc
* prevent ARCHIVED proposals from being sent to admin
* display latest revision first
* admin - proposal & ccr reject permanently
* backend - proposal & ccr reject permanently
* frontend - proposal & ccr reject permanently
* fix tsc
* use $ in milestone payout email
* introduce custom filters to proposal listview
* hide archive link on first revision
* upgrade packages
* add bech32 implementation
* add z address validation with tests
* fix tslint
* use local address validation
* fix tests, remove blockchain mock gets
* add additional bad addresses
* update briefs to include page break message
* remove contributions routes, menu entry
* disable countribution count admin stats
* remove matching and pretty print in finance
* fix tslint
* separate out rejected permanently proposals
* make removing proposals generic
* allow linked tabs to be ignored
* remove rejected permanently, bugfix
* update preview link to point to rejected tab
* implement rejected permanently tab, add tab message
* refactor variable
* fix tslint
* fix tslint
* send ccr reject permanently email on rejection
* fix preview message
* wire up proposal arbiter and rejected emails
* disable tip jar in proposal and profile
* sync ccr/proposal drafts on create form init
* check invites on submit modal open
* update team invite language
* update team text when edit
* fix ccr rejected permanently tag
* text changes, email preview fix
* display changes requested tag when in discussion with changes requested
* enable social share on open for discussion proposals, update language
* place sort below filter
* derive filter from query string
* use better filter names in query params
* fix tslint
* create snapshot of original proposal on first revision
* clear invites between edits, account for additional changes not tracked in revisions
* update tests
* fix test
* remove print
* SameSite Fixes (#150)
* QA Fixes 2 (#151)
* set filters as query strings on change
* remove rejected permanently tags
* add dollar sign in financials legend
* fix tsc
* Copy Touchups (#152)
* Email Fixes (#155)
* fix ZEC in milestone payout emails
* fix links in rejected permanently CCR/proposal emails
* Poll for Team and Invite Changes in Create Flow (#153)
* poll for team and invite changes in create flow
* fix tslint
Co-authored-by: Daniel Ternyak <dternyak@gmail.com>
* pretty print payouts by quarter (#156)
Co-authored-by: Daniel Ternyak <dternyak@gmail.com>
* Remove Blockchain Module (#154)
* remove blockchain route from backend, remove calls to node
* revert blockchain_get removal
* Add Tags to Proposal Cards (#157)
* add tag to proposals and dynamically set v1 card height
* listen on window resize
* make card height props optional
* set tag in bottom right, remove dynamic card resize, add dynamic tag resize
* cleanup
* cleanup
Co-authored-by: Daniel Ternyak <dternyak@gmail.com>
* Improve Frontend Address Validation (#158)
Co-authored-by: Daniel Ternyak <dternyak@gmail.com>
* Remove blockchain module (#162)
* remove blockchain route from backend, remove calls to node
* revert blockchain_get removal
* Remove Blockchain App (#160)
* remove blockchain app
* remove blockchain app from travis
Co-authored-by: Danny Skubak <skubakdj@gmail.com>
* Proposal Edit Fixes (#161)
* fe - display error if edit creation fails
* be - restrict live draft publish
Co-authored-by: Daniel Ternyak <dternyak@gmail.com>
* Restrict Arbiter Assignment (#159)
Co-authored-by: Daniel Ternyak <dternyak@gmail.com>
* Email Copy updates
* Remove Admin Financials Card
* Hookup 'proposal_approved_without_funding' to admin email example
* bump various package versions
* Update yarn.lock files
* Attach 'proposal_approved_without_funding' to backend example email
* bump package versions
Co-authored-by: Danny Skubak <skubakdj@gmail.com>
2020-04-07 19:56:32 -07:00
|
|
|
import 'components/Proposal/index.less';
|
|
|
|
// import 'components/Proposal/Governance/style.less';
|
2018-12-27 11:08:14 -08:00
|
|
|
import { generateProposal } from './props';
|
2018-10-03 12:04:08 -07:00
|
|
|
|
ZF Grants 2.1 (#496)
* fix ccr pagination defaults
* add ccr admin tests
* add ccr user tests
* checkpoint
* fix tslint
* request changes discussion flow mvp
* admin - add discussion status
* backend - add live drafts
* admin - add live drafts
* frontend - add live drafts
* frontend - add edit discussion proposal
* fix tsc
* include DISCUSSION status in propsal listview
* do not make live draft on admin request changes
* hide live drafts from user proposal draft list
* fix backend tests
* add admin tests
* add user tests
* fix: liking, viewing discussion proposals, admin menu
* admin - update hints for live drafts
* fe - add better messaging when updating a proposal
* be - fix like test
* remove TODO comments
* add new email types
* fix storybook
* add revision tab story
* backend - implement proposal revisions
* frontend - implement proposal revisions
* update revision tab story
* fix lint
* remove set detection
* email proposal followers on revision
* restrict banner to team members only
* misc bug fixes
* update, add backend tests
* add milestone title change to revision history story
* fix milestones display in preview
* allow archived proposals to be queried
* implement archived proposal page
* fix tsc
* implement archived proposal get route
* move styling into less
* remove proposal archive parent id
* handle archived proposal status
* cleanup
* remove contributions, switch to USD, implement quarters
* use Qs to preserve formatting
* handle edit only kyc
* prevent ARCHIVED proposals from being sent to admin
* display latest revision first
* admin - proposal & ccr reject permanently
* backend - proposal & ccr reject permanently
* frontend - proposal & ccr reject permanently
* fix tsc
* use $ in milestone payout email
* introduce custom filters to proposal listview
* hide archive link on first revision
* upgrade packages
* add bech32 implementation
* add z address validation with tests
* fix tslint
* use local address validation
* fix tests, remove blockchain mock gets
* add additional bad addresses
* update briefs to include page break message
* remove contributions routes, menu entry
* disable countribution count admin stats
* remove matching and pretty print in finance
* fix tslint
* separate out rejected permanently proposals
* make removing proposals generic
* allow linked tabs to be ignored
* remove rejected permanently, bugfix
* update preview link to point to rejected tab
* implement rejected permanently tab, add tab message
* refactor variable
* fix tslint
* fix tslint
* send ccr reject permanently email on rejection
* fix preview message
* wire up proposal arbiter and rejected emails
* disable tip jar in proposal and profile
* sync ccr/proposal drafts on create form init
* check invites on submit modal open
* update team invite language
* update team text when edit
* fix ccr rejected permanently tag
* text changes, email preview fix
* display changes requested tag when in discussion with changes requested
* enable social share on open for discussion proposals, update language
* place sort below filter
* derive filter from query string
* use better filter names in query params
* fix tslint
* create snapshot of original proposal on first revision
* clear invites between edits, account for additional changes not tracked in revisions
* update tests
* fix test
* remove print
* SameSite Fixes (#150)
* QA Fixes 2 (#151)
* set filters as query strings on change
* remove rejected permanently tags
* add dollar sign in financials legend
* fix tsc
* Copy Touchups (#152)
* Email Fixes (#155)
* fix ZEC in milestone payout emails
* fix links in rejected permanently CCR/proposal emails
* Poll for Team and Invite Changes in Create Flow (#153)
* poll for team and invite changes in create flow
* fix tslint
Co-authored-by: Daniel Ternyak <dternyak@gmail.com>
* pretty print payouts by quarter (#156)
Co-authored-by: Daniel Ternyak <dternyak@gmail.com>
* Remove Blockchain Module (#154)
* remove blockchain route from backend, remove calls to node
* revert blockchain_get removal
* Add Tags to Proposal Cards (#157)
* add tag to proposals and dynamically set v1 card height
* listen on window resize
* make card height props optional
* set tag in bottom right, remove dynamic card resize, add dynamic tag resize
* cleanup
* cleanup
Co-authored-by: Daniel Ternyak <dternyak@gmail.com>
* Improve Frontend Address Validation (#158)
Co-authored-by: Daniel Ternyak <dternyak@gmail.com>
* Remove blockchain module (#162)
* remove blockchain route from backend, remove calls to node
* revert blockchain_get removal
* Remove Blockchain App (#160)
* remove blockchain app
* remove blockchain app from travis
Co-authored-by: Danny Skubak <skubakdj@gmail.com>
* Proposal Edit Fixes (#161)
* fe - display error if edit creation fails
* be - restrict live draft publish
Co-authored-by: Daniel Ternyak <dternyak@gmail.com>
* Restrict Arbiter Assignment (#159)
Co-authored-by: Daniel Ternyak <dternyak@gmail.com>
* Email Copy updates
* Remove Admin Financials Card
* Hookup 'proposal_approved_without_funding' to admin email example
* bump various package versions
* Update yarn.lock files
* Attach 'proposal_approved_without_funding' to backend example email
* bump package versions
Co-authored-by: Danny Skubak <skubakdj@gmail.com>
2020-04-07 19:56:32 -07:00
|
|
|
const combineInitialState = {
|
|
|
|
web3: {},
|
|
|
|
...__combineInitialState,
|
|
|
|
};
|
|
|
|
|
2019-02-11 13:22:40 -08:00
|
|
|
const msWaiting = { stage: IDLE };
|
|
|
|
const msPaid = { stage: PAID };
|
|
|
|
const msActive = { stage: ACCEPTED };
|
|
|
|
const msRejected = { stage: REJECTED };
|
2018-10-03 12:04:08 -07:00
|
|
|
|
2018-12-21 10:27:39 -08:00
|
|
|
const trustee = 'z123';
|
|
|
|
const contributor = 'z456';
|
2018-10-03 12:04:08 -07:00
|
|
|
|
2019-02-11 21:42:21 -08:00
|
|
|
// const geometryCases = [...Array(10).keys()].map(i =>
|
|
|
|
// generateProposal({ milestoneCount: i + 1 }),
|
|
|
|
// );
|
2018-10-03 12:04:08 -07:00
|
|
|
|
|
|
|
const cases: { [index: string]: any } = {
|
|
|
|
// trustee - first
|
2018-12-27 11:08:14 -08:00
|
|
|
['not funded']: generateProposal({
|
2018-10-03 12:04:08 -07:00
|
|
|
amount: 5,
|
|
|
|
funded: 0,
|
|
|
|
}),
|
2018-12-27 11:08:14 -08:00
|
|
|
['first - waiting']: generateProposal({
|
2018-10-03 12:04:08 -07:00
|
|
|
amount: 5,
|
|
|
|
funded: 5,
|
|
|
|
}),
|
2018-12-27 11:08:14 -08:00
|
|
|
['first - not paid']: generateProposal({
|
2018-10-03 12:04:08 -07:00
|
|
|
amount: 5,
|
|
|
|
funded: 5,
|
2019-02-11 13:22:40 -08:00
|
|
|
milestoneOverrides: [{ stage: PAID }, msWaiting, msWaiting],
|
2018-10-03 12:04:08 -07:00
|
|
|
}),
|
|
|
|
|
|
|
|
// trustee - second
|
2018-12-27 11:08:14 -08:00
|
|
|
['second - waiting']: generateProposal({
|
2018-10-03 12:04:08 -07:00
|
|
|
amount: 5,
|
|
|
|
funded: 5,
|
|
|
|
milestoneOverrides: [msPaid, msWaiting, msWaiting],
|
|
|
|
}),
|
2018-12-27 11:08:14 -08:00
|
|
|
['second - active']: generateProposal({
|
2018-10-03 12:04:08 -07:00
|
|
|
amount: 5,
|
|
|
|
funded: 5,
|
|
|
|
milestoneOverrides: [msPaid, msActive, msWaiting],
|
|
|
|
}),
|
2018-12-27 11:08:14 -08:00
|
|
|
['second - not paid']: generateProposal({
|
2018-10-03 12:04:08 -07:00
|
|
|
amount: 5,
|
|
|
|
funded: 5,
|
2019-02-11 13:22:40 -08:00
|
|
|
milestoneOverrides: [msPaid, { stage: PAID }, msWaiting],
|
2018-10-03 12:04:08 -07:00
|
|
|
}),
|
2018-12-27 11:08:14 -08:00
|
|
|
['second - no vote']: generateProposal({
|
2018-10-03 12:04:08 -07:00
|
|
|
amount: 5,
|
|
|
|
funded: 5,
|
2019-02-11 13:22:40 -08:00
|
|
|
milestoneOverrides: [msPaid, { stage: ACCEPTED }, msWaiting],
|
2018-10-03 12:04:08 -07:00
|
|
|
contributorOverrides: [{ milestoneNoVotes: [false, true, false] }],
|
|
|
|
}),
|
2018-12-27 11:08:14 -08:00
|
|
|
['second - rejected']: generateProposal({
|
2018-10-03 12:04:08 -07:00
|
|
|
amount: 5,
|
|
|
|
funded: 5,
|
|
|
|
milestoneOverrides: [msPaid, msRejected, msWaiting],
|
|
|
|
}),
|
|
|
|
|
|
|
|
// trustee - third
|
2018-12-27 11:08:14 -08:00
|
|
|
['final - waiting']: generateProposal({
|
2018-10-03 12:04:08 -07:00
|
|
|
amount: 5,
|
|
|
|
funded: 5,
|
|
|
|
milestoneOverrides: [msPaid, msPaid, msWaiting],
|
|
|
|
}),
|
2018-12-27 11:08:14 -08:00
|
|
|
['final - active']: generateProposal({
|
2018-10-03 12:04:08 -07:00
|
|
|
amount: 5,
|
|
|
|
funded: 5,
|
|
|
|
milestoneOverrides: [msPaid, msPaid, msActive],
|
|
|
|
}),
|
2018-12-27 11:08:14 -08:00
|
|
|
['final - not paid']: generateProposal({
|
2018-10-03 12:04:08 -07:00
|
|
|
amount: 5,
|
|
|
|
funded: 5,
|
2019-02-11 13:22:40 -08:00
|
|
|
milestoneOverrides: [msPaid, msPaid, { stage: PAID }],
|
2018-10-03 12:04:08 -07:00
|
|
|
}),
|
2018-12-27 11:08:14 -08:00
|
|
|
['final - no vote']: generateProposal({
|
2018-10-03 12:04:08 -07:00
|
|
|
amount: 5,
|
|
|
|
funded: 5,
|
2019-02-11 13:22:40 -08:00
|
|
|
milestoneOverrides: [msPaid, msPaid, { stage: ACCEPTED }],
|
2018-10-03 12:04:08 -07:00
|
|
|
contributorOverrides: [{ milestoneNoVotes: [false, true, false] }],
|
|
|
|
}),
|
2018-12-27 11:08:14 -08:00
|
|
|
['final - rejected']: generateProposal({
|
2018-10-03 12:04:08 -07:00
|
|
|
amount: 5,
|
|
|
|
funded: 5,
|
|
|
|
milestoneOverrides: [msPaid, msPaid, msRejected],
|
|
|
|
}),
|
|
|
|
};
|
|
|
|
|
|
|
|
const initialStoreStateA = JSON.parse(JSON.stringify(combineInitialState));
|
|
|
|
initialStoreStateA.web3.accounts = [trustee];
|
2018-10-03 13:12:26 -07:00
|
|
|
const storeTrustee = configureStore(initialStoreStateA).store;
|
2018-10-03 12:04:08 -07:00
|
|
|
|
|
|
|
const initialStoreStateB = JSON.parse(JSON.stringify(combineInitialState));
|
|
|
|
initialStoreStateB.web3.accounts = [contributor];
|
2018-10-03 13:12:26 -07:00
|
|
|
const storeContributor = configureStore(initialStoreStateB).store;
|
2018-10-03 12:04:08 -07:00
|
|
|
|
|
|
|
const initialStoreStateC = JSON.parse(JSON.stringify(combineInitialState));
|
|
|
|
initialStoreStateC.web3.accounts = ['0x0'];
|
2018-10-03 13:12:26 -07:00
|
|
|
const storeOutsider = configureStore(initialStoreStateC).store;
|
2018-10-03 12:04:08 -07:00
|
|
|
|
|
|
|
const trusteeStories = storiesOf('Proposal/Milestones/trustee', module);
|
|
|
|
|
|
|
|
for (const key of Object.keys(cases)) {
|
|
|
|
const value = cases[key];
|
|
|
|
trusteeStories.add(key, () => (
|
|
|
|
<div key={key} style={{ padding: '2em', display: 'flex' }}>
|
|
|
|
<Provider store={storeTrustee}>
|
|
|
|
<Milestones {...value} />
|
|
|
|
</Provider>
|
|
|
|
</div>
|
|
|
|
));
|
|
|
|
}
|
|
|
|
|
|
|
|
const contributorStories = storiesOf('Proposal/Milestones/contributor', module);
|
|
|
|
|
|
|
|
for (const key of Object.keys(cases)) {
|
|
|
|
const value = cases[key];
|
|
|
|
contributorStories.add(key, () => (
|
|
|
|
<div key={key} style={{ padding: '2em', display: 'flex' }}>
|
|
|
|
<Provider store={storeContributor}>
|
|
|
|
<Milestones {...value} />
|
|
|
|
</Provider>
|
|
|
|
</div>
|
|
|
|
));
|
|
|
|
}
|
|
|
|
|
|
|
|
const outsiderStories = storiesOf('Proposal/Milestones/outsider', module);
|
|
|
|
|
|
|
|
for (const key of Object.keys(cases)) {
|
|
|
|
const value = cases[key];
|
|
|
|
outsiderStories.add(key, () => (
|
|
|
|
<div key={key} style={{ padding: '2em', display: 'flex' }}>
|
|
|
|
<Provider store={storeOutsider}>
|
|
|
|
<Milestones {...value} />
|
|
|
|
</Provider>
|
|
|
|
</div>
|
|
|
|
));
|
|
|
|
}
|
|
|
|
|
2019-02-11 21:42:21 -08:00
|
|
|
// const geometryStories = storiesOf('Proposal/Milestones/geometry', module);
|
|
|
|
|
|
|
|
// geometryCases.forEach((gc, idx) =>
|
|
|
|
// geometryStories.add(`${idx + 1} steps`, () => (
|
|
|
|
// <div key={idx} style={{ padding: '3em', display: 'flex' }}>
|
|
|
|
// <Provider store={storeOutsider}>
|
|
|
|
// <Milestones {...gc} />
|
|
|
|
// </Provider>
|
|
|
|
// </div>
|
|
|
|
// )),
|
|
|
|
// );
|