diff --git a/lib/js/review/ReviewChapters.js b/lib/js/review/ReviewChapters.js index 09b8344..9a95fad 100644 --- a/lib/js/review/ReviewChapters.js +++ b/lib/js/review/ReviewChapters.js @@ -182,8 +182,8 @@ function mapStateToProps(state, ownProps) { var chapters = chapterNames.map(function (chapterName) { var pages = pagesByChapter[chapterName]; - var activePages = (0, _helpers.getActivePages)(pages, formData); - var expandedPages = (0, _helpers.expandArrayPages)(activePages, formData); + var expandedPages = (0, _helpers.expandArrayPages)(pages, formData); + expandedPages = (0, _helpers.getActivePages)(expandedPages, formData); var chapterFormConfig = formConfig.chapters[chapterName]; var open = openChapters.includes(chapterName); var pageKeys = (0, _helpers.getPageKeys)(pages, formData); diff --git a/lib/js/review/ReviewChapters.js.map b/lib/js/review/ReviewChapters.js.map index 4159644..e468567 100644 --- a/lib/js/review/ReviewChapters.js.map +++ b/lib/js/review/ReviewChapters.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../src/js/review/ReviewChapters.jsx"],"names":["scroller","Scroll","ReviewChapters","props","formData","pageList","viewedPages","Set","setViewedPages","name","open","pageKeys","closeReviewChapter","openReviewChapter","scrollToChapter","chapters","form","formContext","setValid","map","chapter","expandedPages","formConfig","handleEdit","handleSetData","showUnviewedPageWarning","handleToggleChapter","uploadFile","React","Component","chapterKey","scrollTo","window","Forms","scroll","duration","delay","smooth","pageKey","editing","index","fullPageKey","setEditMode","setData","onSetData","mapStateToProps","state","ownProps","data","openChapters","chapterNames","pagesByChapter","pages","chapterName","activePages","chapterFormConfig","includes","some","has","key","mapDispatchToProps","propTypes","PropTypes","array","isRequired","func","object"],"mappings":";;;;;;;;;AAAA;;;;AACA;;;;AACA;;AACA;;AACA;;;;AAEA;;;;AACA;;AAOA;;AAIA;;;;;;;;;;AAUA,IAAMA,WAAWC,sBAAOD,QAAxB;;IACME,c;;;;;;;;;;;;;;;;;;;wCAEgB;AAAA,mBAId,KAAKC,KAJS;AAAA,UAEhBC,QAFgB,UAEhBA,QAFgB;AAAA,UAGhBC,QAHgB,UAGhBA,QAHgB;;AAKlB,UAAMC,cAAc,IAAIC,GAAJ,CAAQ,0BAAYF,QAAZ,EAAsBD,QAAtB,CAAR,CAApB;AACA,WAAKD,KAAL,CAAWK,cAAX,CAA0BF,WAA1B;AACD;;;+CAE6C;AAAA,UAAxBG,IAAwB,SAAxBA,IAAwB;AAAA,UAAlBC,IAAkB,SAAlBA,IAAkB;AAAA,UAAZC,QAAY,SAAZA,QAAY;;AAC5C,UAAID,IAAJ,EAAU;AACR,aAAKP,KAAL,CAAWS,kBAAX,CAA8BH,IAA9B,EAAoCE,QAApC;AACD,OAFD,MAEO;AACL,aAAKR,KAAL,CAAWU,iBAAX,CAA6BJ,IAA7B;AACA,aAAKK,eAAL,CAAqBL,IAArB;AACD;AACF;;;6BAyBQ;AAAA;;AAAA,oBAOH,KAAKN,KAPF;AAAA,UAELY,QAFK,WAELA,QAFK;AAAA,UAGLC,IAHK,WAGLA,IAHK;AAAA,UAILC,WAJK,WAILA,WAJK;AAAA,UAKLC,QALK,WAKLA,QALK;AAAA,UAMLZ,WANK,WAMLA,WANK;;;AASP,aACE;AAAA;AAAA,UAAK,WAAU,eAAf;AACE;AAAA;AAAA;AACGS,mBAASI,GAAT,CAAa;AAAA,mBACZ,8BAAC,kCAAD;AACE,6BAAeC,QAAQC,aADzB;AAEE,iCAAmBD,QAAQE,UAF7B;AAGE,0BAAYF,QAAQX,IAHtB;AAIE,oBAAMO,IAJR;AAKE,2BAAaC,WALf;AAME,mBAAKG,QAAQX,IANf;AAOE,sBAAQ,OAAKc,UAPf;AAQE,oBAAMH,QAAQV,IARhB;AASE,wBAAUU,QAAQT,QATpB;AAUE,uBAAS;AAAA,uBAAa,OAAKa,aAAL,yBAAb;AAAA,eAVX;AAWE,wBAAUN,QAXZ;AAYE,uCAAyBE,QAAQK,uBAZnC;AAaE,mCAAqB;AAAA,uBAAM,OAAKC,mBAAL,CAAyBN,OAAzB,CAAN;AAAA,eAbvB;AAcE,0BAAY,OAAKjB,KAAL,CAAWwB,UAdzB;AAeE,2BAAarB,WAff,GADY;AAAA,WAAb;AADH;AADF,OADF;AAwBD;;;;EA5E0BsB,gBAAMC,S;;;;;OAoBjCf,e,GAAkB,UAACgB,UAAD,EAAgB;AAChC9B,aAAS+B,QAAT,aAA4BD,UAA5B,oBAAuDE,OAAOC,KAAP,CAAaC,MAAb,IAAuB;AAC5EC,gBAAU,GADkE;AAE5EC,aAAO,CAFqE;AAG5EC,cAAQ;AAHoE,KAA9E;AAKD,G;;OAEDd,U,GAAa,UAACe,OAAD,EAAUC,OAAV,EAAoC;AAAA,QAAjBC,KAAiB,uEAAT,IAAS;;AAC/C,QAAMC,mBAAiBH,OAAjB,IAA2BE,UAAU,IAAV,GAAiB,EAAjB,GAAsBA,KAAjD,CAAN;AACA,QAAID,OAAJ,EAAa;AACX,aAAKpC,KAAL,CAAWK,cAAX,CAA0B,CAACiC,WAAD,CAA1B;AACD;AACD,WAAKtC,KAAL,CAAWuC,WAAX,CAAuBJ,OAAvB,EAAgCC,OAAhC,EAAyCC,KAAzC;AACD,G;;OAEDhB,a,GAAgB,YAAa;AAAA;;AAC3B,sBAAKrB,KAAL,EAAWwC,OAAX;AACA,QAAI,OAAKxC,KAAL,CAAWyC,SAAf,EAA0B;AACxB,aAAKzC,KAAL,CAAWyC,SAAX;AACD;AACF,G;;;AAsCH,SAASC,eAAT,CAAyBC,KAAzB,EAAgCC,QAAhC,EAA0C;AACxC;AADwC,MAGtCzB,UAHsC,GAMpCyB,QANoC,CAGtCzB,UAHsC;AAAA,MAItCL,WAJsC,GAMpC8B,QANoC,CAItC9B,WAJsC;AAAA,MAKtCZ,QALsC,GAMpC0C,QANoC,CAKtC1C,QALsC;;AAQxC;;AACA,MAAMW,OAAO8B,MAAM9B,IAAnB;AACA,MAAMZ,WAAW0C,MAAM9B,IAAN,CAAWgC,IAA5B;AACA,MAAMC,eAAe,0CAA0BH,KAA1B,CAArB;AACA,MAAMxC,cAAc,+BAAewC,KAAf,CAApB;;AAEA,MAAMI,eAAe,gCAAkB5B,UAAlB,EAA8BlB,QAA9B,CAArB;AACA,MAAM+C,iBAAiB,sCAAwB7B,UAAxB,CAAvB;AACA,MAAMP,WAAWmC,aAAa/B,GAAb,CAAiB,uBAAe;AAC/C,QAAMiC,QAAQD,eAAeE,WAAf,CAAd;;AAEA,QAAMC,cAAc,6BAAeF,KAAf,EAAsBhD,QAAtB,CAApB;AACA,QAAMiB,gBAAgB,+BAAiBiC,WAAjB,EAA8BlD,QAA9B,CAAtB;AACA,QAAMmD,oBAAoBjC,WAAWP,QAAX,CAAoBsC,WAApB,CAA1B;AACA,QAAM3C,OAAOuC,aAAaO,QAAb,CAAsBH,WAAtB,CAAb;AACA,QAAM1C,WAAW,0BAAYyC,KAAZ,EAAmBhD,QAAnB,CAAjB;AACA,QAAMqB,0BAA0Bd,SAAS8C,IAAT,CAAc;AAAA,aAAO,CAACnD,YAAYoD,GAAZ,CAAgBC,GAAhB,CAAR;AAAA,KAAd,CAAhC;;AAEA,WAAO;AACLtC,kCADK;AAELC,kBAAYiC,iBAFP;AAGL9C,YAAM4C,WAHD;AAIL3C,gBAJK;AAKLC,wBALK;AAMLc;AANK,KAAP;AAQD,GAlBgB,CAAjB;;AAoBA,SAAO;AACLV,sBADK;AAELC,cAFK;AAGLZ,sBAHK;AAILkB,0BAJK;AAKLL,4BALK;AAMLZ,sBANK;AAOLC;AAPK,GAAP;AASD;;AAED,IAAMsD,qBAAqB;AACzBhD,iDADyB;AAEzBC,+CAFyB;AAGzB8B,2BAHyB;AAIzBD,mCAJyB;AAKzBlC,yCALyB;AAMzBmB;AANyB,CAA3B;;AASAzB,eAAe2D,SAAf,GAA2B;AACzB9C,YAAU+C,oBAAUC,KAAV,CAAgBC,UADD;AAEzBpD,sBAAoBkD,oBAAUG,IAAV,CAAeD,UAFV;AAGzBhD,QAAM8C,oBAAUI,MAAV,CAAiBF,UAHE;AAIzB5D,YAAU0D,oBAAUI,MAAV,CAAiBF,UAJF;AAKzB1C,cAAYwC,oBAAUI,MAAV,CAAiBF,UALJ;AAMzB/C,eAAa6C,oBAAUI,MANE;AAOzBtB,aAAWkB,oBAAUG,IAPI;AAQzBpD,qBAAmBiD,oBAAUG,IAAV,CAAeD,UART;AASzB3D,YAAUyD,oBAAUC,KAAV,CAAgBC,UATD;AAUzBrB,WAASmB,oBAAUG,IAAV,CAAeD,UAVC;AAWzBtB,eAAaoB,oBAAUG,IAAV,CAAeD,UAXH;AAYzBxD,kBAAgBsD,oBAAUG,IAAV,CAAeD,UAZN;AAazBrC,cAAYmC,oBAAUG,IAAV,CAAeD,UAbF;AAczB1D,eAAawD,oBAAUI,MAAV,CAAiBF;AAdL,CAA3B;;kBAiBe,6BAAW,yBAAQnB,eAAR,EAAyBe,kBAAzB,EAA6C1D,cAA7C,CAAX,C;;AAEf;;QACSA,c,GAAAA,c","file":"ReviewChapters.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router';\nimport Scroll from 'react-scroll';\n\nimport ReviewCollapsibleChapter from './ReviewCollapsibleChapter';\nimport {\n createPageListByChapter,\n expandArrayPages,\n getActiveChapters,\n getActivePages,\n getPageKeys\n} from '../helpers';\nimport {\n getReviewPageOpenChapters,\n getViewedPages\n} from '../state/selectors';\nimport {\n closeReviewChapter,\n openReviewChapter,\n setData,\n setEditMode,\n setViewedPages,\n uploadFile\n} from '../actions';\n\n\nconst scroller = Scroll.scroller;\nclass ReviewChapters extends React.Component {\n\n componentDidMount() {\n const {\n formData,\n pageList\n } = this.props;\n const viewedPages = new Set(getPageKeys(pageList, formData));\n this.props.setViewedPages(viewedPages);\n }\n\n handleToggleChapter({ name, open, pageKeys }) {\n if (open) {\n this.props.closeReviewChapter(name, pageKeys);\n } else {\n this.props.openReviewChapter(name);\n this.scrollToChapter(name);\n }\n }\n\n scrollToChapter = (chapterKey) => {\n scroller.scrollTo(`chapter${chapterKey}ScrollElement`, window.Forms.scroll || {\n duration: 500,\n delay: 2,\n smooth: true,\n });\n }\n\n handleEdit = (pageKey, editing, index = null) => {\n const fullPageKey = `${pageKey}${index === null ? '' : index}`;\n if (editing) {\n this.props.setViewedPages([fullPageKey]);\n }\n this.props.setEditMode(pageKey, editing, index);\n }\n\n handleSetData = (...args) => {\n this.props.setData(...args);\n if (this.props.onSetData) {\n this.props.onSetData();\n }\n }\n\n render() {\n const {\n chapters,\n form,\n formContext,\n setValid,\n viewedPages\n } = this.props;\n\n return (\n
\n
\n {chapters.map(chapter => (\n this.handleSetData(...args)}\n setValid={setValid}\n showUnviewedPageWarning={chapter.showUnviewedPageWarning}\n toggleButtonClicked={() => this.handleToggleChapter(chapter)}\n uploadFile={this.props.uploadFile}\n viewedPages={viewedPages}/>\n ))}\n
\n
\n );\n }\n}\n\nfunction mapStateToProps(state, ownProps) {\n // from ownprops\n const {\n formConfig,\n formContext,\n pageList\n } = ownProps;\n\n // from redux state\n const form = state.form;\n const formData = state.form.data;\n const openChapters = getReviewPageOpenChapters(state);\n const viewedPages = getViewedPages(state);\n\n const chapterNames = getActiveChapters(formConfig, formData);\n const pagesByChapter = createPageListByChapter(formConfig);\n const chapters = chapterNames.map(chapterName => {\n const pages = pagesByChapter[chapterName];\n\n const activePages = getActivePages(pages, formData);\n const expandedPages = expandArrayPages(activePages, formData);\n const chapterFormConfig = formConfig.chapters[chapterName];\n const open = openChapters.includes(chapterName);\n const pageKeys = getPageKeys(pages, formData);\n const showUnviewedPageWarning = pageKeys.some(key => !viewedPages.has(key));\n\n return {\n expandedPages,\n formConfig: chapterFormConfig,\n name: chapterName,\n open,\n pageKeys,\n showUnviewedPageWarning\n };\n });\n\n return {\n chapters,\n form,\n formData,\n formConfig,\n formContext,\n pageList,\n viewedPages\n };\n}\n\nconst mapDispatchToProps = {\n closeReviewChapter,\n openReviewChapter,\n setData,\n setEditMode,\n setViewedPages,\n uploadFile\n};\n\nReviewChapters.propTypes = {\n chapters: PropTypes.array.isRequired,\n closeReviewChapter: PropTypes.func.isRequired,\n form: PropTypes.object.isRequired,\n formData: PropTypes.object.isRequired,\n formConfig: PropTypes.object.isRequired,\n formContext: PropTypes.object,\n onSetData: PropTypes.func,\n openReviewChapter: PropTypes.func.isRequired,\n pageList: PropTypes.array.isRequired,\n setData: PropTypes.func.isRequired,\n setEditMode: PropTypes.func.isRequired,\n setViewedPages: PropTypes.func.isRequired,\n uploadFile: PropTypes.func.isRequired,\n viewedPages: PropTypes.object.isRequired\n};\n\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(ReviewChapters));\n\n// for tests\nexport { ReviewChapters };\n"]} \ No newline at end of file +{"version":3,"sources":["../../../src/js/review/ReviewChapters.jsx"],"names":["scroller","Scroll","ReviewChapters","props","formData","pageList","viewedPages","Set","setViewedPages","name","open","pageKeys","closeReviewChapter","openReviewChapter","scrollToChapter","chapters","form","formContext","setValid","map","chapter","expandedPages","formConfig","handleEdit","handleSetData","showUnviewedPageWarning","handleToggleChapter","uploadFile","React","Component","chapterKey","scrollTo","window","Forms","scroll","duration","delay","smooth","pageKey","editing","index","fullPageKey","setEditMode","setData","onSetData","mapStateToProps","state","ownProps","data","openChapters","chapterNames","pagesByChapter","pages","chapterName","chapterFormConfig","includes","some","has","key","mapDispatchToProps","propTypes","PropTypes","array","isRequired","func","object"],"mappings":"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","file":"ReviewChapters.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router';\nimport Scroll from 'react-scroll';\n\nimport ReviewCollapsibleChapter from './ReviewCollapsibleChapter';\nimport {\n createPageListByChapter,\n expandArrayPages,\n getActiveChapters,\n getActivePages,\n getPageKeys\n} from '../helpers';\nimport {\n getReviewPageOpenChapters,\n getViewedPages\n} from '../state/selectors';\nimport {\n closeReviewChapter,\n openReviewChapter,\n setData,\n setEditMode,\n setViewedPages,\n uploadFile\n} from '../actions';\n\n\nconst scroller = Scroll.scroller;\nclass ReviewChapters extends React.Component {\n\n componentDidMount() {\n const {\n formData,\n pageList\n } = this.props;\n const viewedPages = new Set(getPageKeys(pageList, formData));\n this.props.setViewedPages(viewedPages);\n }\n\n handleToggleChapter({ name, open, pageKeys }) {\n if (open) {\n this.props.closeReviewChapter(name, pageKeys);\n } else {\n this.props.openReviewChapter(name);\n this.scrollToChapter(name);\n }\n }\n\n scrollToChapter = (chapterKey) => {\n scroller.scrollTo(`chapter${chapterKey}ScrollElement`, window.Forms.scroll || {\n duration: 500,\n delay: 2,\n smooth: true,\n });\n }\n\n handleEdit = (pageKey, editing, index = null) => {\n const fullPageKey = `${pageKey}${index === null ? '' : index}`;\n if (editing) {\n this.props.setViewedPages([fullPageKey]);\n }\n this.props.setEditMode(pageKey, editing, index);\n }\n\n handleSetData = (...args) => {\n this.props.setData(...args);\n if (this.props.onSetData) {\n this.props.onSetData();\n }\n }\n\n render() {\n const {\n chapters,\n form,\n formContext,\n setValid,\n viewedPages\n } = this.props;\n\n return (\n
\n
\n {chapters.map(chapter => (\n this.handleSetData(...args)}\n setValid={setValid}\n showUnviewedPageWarning={chapter.showUnviewedPageWarning}\n toggleButtonClicked={() => this.handleToggleChapter(chapter)}\n uploadFile={this.props.uploadFile}\n viewedPages={viewedPages}/>\n ))}\n
\n
\n );\n }\n}\n\nfunction mapStateToProps(state, ownProps) {\n // from ownprops\n const {\n formConfig,\n formContext,\n pageList\n } = ownProps;\n\n // from redux state\n const form = state.form;\n const formData = state.form.data;\n const openChapters = getReviewPageOpenChapters(state);\n const viewedPages = getViewedPages(state);\n\n const chapterNames = getActiveChapters(formConfig, formData);\n const pagesByChapter = createPageListByChapter(formConfig);\n const chapters = chapterNames.map(chapterName => {\n const pages = pagesByChapter[chapterName];\n\n let expandedPages = expandArrayPages(pages, formData);\n expandedPages = getActivePages(expandedPages, formData);\n const chapterFormConfig = formConfig.chapters[chapterName];\n const open = openChapters.includes(chapterName);\n const pageKeys = getPageKeys(pages, formData);\n const showUnviewedPageWarning = pageKeys.some(key => !viewedPages.has(key));\n\n return {\n expandedPages,\n formConfig: chapterFormConfig,\n name: chapterName,\n open,\n pageKeys,\n showUnviewedPageWarning\n };\n });\n\n return {\n chapters,\n form,\n formData,\n formConfig,\n formContext,\n pageList,\n viewedPages\n };\n}\n\nconst mapDispatchToProps = {\n closeReviewChapter,\n openReviewChapter,\n setData,\n setEditMode,\n setViewedPages,\n uploadFile\n};\n\nReviewChapters.propTypes = {\n chapters: PropTypes.array.isRequired,\n closeReviewChapter: PropTypes.func.isRequired,\n form: PropTypes.object.isRequired,\n formData: PropTypes.object.isRequired,\n formConfig: PropTypes.object.isRequired,\n formContext: PropTypes.object,\n onSetData: PropTypes.func,\n openReviewChapter: PropTypes.func.isRequired,\n pageList: PropTypes.array.isRequired,\n setData: PropTypes.func.isRequired,\n setEditMode: PropTypes.func.isRequired,\n setViewedPages: PropTypes.func.isRequired,\n uploadFile: PropTypes.func.isRequired,\n viewedPages: PropTypes.object.isRequired\n};\n\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(ReviewChapters));\n\n// for tests\nexport { ReviewChapters };\n"]} \ No newline at end of file