From 4e8e51a69d183986ab42c1867a46c8fafc04064e Mon Sep 17 00:00:00 2001 From: "damian.przygodzki" Date: Wed, 26 Apr 2017 12:18:12 +0200 Subject: [PATCH 1/2] #682 Selection strategy changed --- src/components/Window.js | 1 + src/components/app/DocumentList.js | 24 ++++++++++++---------- src/components/header/Header.js | 1 + src/components/header/SideList.js | 4 +++- src/components/table/Table.js | 32 +++++++++++++++++------------- 5 files changed, 36 insertions(+), 26 deletions(-) diff --git a/src/components/Window.js b/src/components/Window.js index 3714550f3..a9c430f38 100644 --- a/src/components/Window.js +++ b/src/components/Window.js @@ -75,6 +75,7 @@ class Window extends Component { queryOnActivate={queryOnActivate} supportQuickInput={supportQuickInput} tabInfo={tabsInfo && tabsInfo[tabid]} + disconnectFromState={true} /> ) })} diff --git a/src/components/app/DocumentList.js b/src/components/app/DocumentList.js index 218b2fd6f..edb6e331c 100644 --- a/src/components/app/DocumentList.js +++ b/src/components/app/DocumentList.js @@ -73,7 +73,8 @@ class DocumentList extends Component { componentWillReceiveProps(props) { const { windowType, defaultViewId, defaultSort, defaultPage, selected, - inBackground, dispatch, includedView, selectedWindowType + inBackground, dispatch, includedView, selectedWindowType, + disconnectFromState } = props; const {page, sort, viewId, cachedSelection, layout} = this.state; @@ -89,7 +90,7 @@ class DocumentList extends Component { filters: null, viewId: null }, () => { - dispatch(selectTableItems([], null)) + !disconnectFromState && dispatch(selectTableItems([], null)) this.fetchLayoutAndData(); }); } @@ -133,7 +134,7 @@ class DocumentList extends Component { ) { if(!inBackground){ // In case of preventing cached selection restore - cachedSelection && + cachedSelection && !disconnectFromState && dispatch(selectTableItems(cachedSelection, windowType)) this.setState({ cachedSelection: undefined @@ -425,7 +426,7 @@ class DocumentList extends Component { windowType, open, closeOverlays, selected, inBackground, fetchQuickActionsOnInit, isModal, processStatus, readonly, includedView, children, isIncluded, disablePaginationShortcuts, - notfound + notfound, disconnectFromState } = this.props; const hasIncluded = layout && layout.supportIncludedView && @@ -498,28 +499,29 @@ class DocumentList extends Component { keyProperty="id" onDoubleClick={(id) => !isIncluded && this.redirectToDocument(id)} - isModal={isModal} - isIncluded={isIncluded} size={data.size} pageLength={this.pageLength} handleChangePage={this.handleChangePage} - page={page} mainTable={true} updateDocList={this.fetchLayoutAndData} sort={this.sortData} orderBy={data.orderBy} tabIndex={0} - open={open} - closeOverlays={closeOverlays} indentSupported={layout.supportTree} disableOnClickOutside={clickOutsideLock} defaultSelected={cachedSelection ? cachedSelection : selected} queryLimitHit={data.queryLimitHit} doesSelectionExist={this.doesSelectionExist} + disconnectFromState={disconnectFromState} + isIncluded={isIncluded} + isModal={isModal} + disablePaginationShortcuts={ + disablePaginationShortcuts} inBackground={inBackground} - disablePaginationShortcuts= - {disablePaginationShortcuts} + closeOverlays={closeOverlays} + open={open} + page={page} > {layout.supportAttributes && !isIncluded && !hasIncluded && diff --git a/src/components/header/Header.js b/src/components/header/Header.js index be191bed4..ce84fff02 100644 --- a/src/components/header/Header.js +++ b/src/components/header/Header.js @@ -53,6 +53,7 @@ class Header extends Component { componentWillUnmount() { document.removeEventListener('scroll', this.handleScroll); + this.toggleScrollScope(false); } componentWillUpdate = (nextProps) => { diff --git a/src/components/header/SideList.js b/src/components/header/SideList.js index afd0f2feb..4e4370e26 100644 --- a/src/components/header/SideList.js +++ b/src/components/header/SideList.js @@ -58,6 +58,8 @@ class SideList extends Component { (pagination && pagination.windowType === windowType) ? pagination.page : null } + selected={[docId]} + disconnectFromState={true} {...{open, windowType, closeOverlays, closeSideList, isSideListShow}} /> @@ -92,7 +94,7 @@ class SideList extends Component { return (
this.panel = c} - className="order-list-panel overlay-shadow order-list-panel-open" + className="order-list-panel overlay-shadow order-list-panel-open js-not-unselect" >
diff --git a/src/components/table/Table.js b/src/components/table/Table.js index d84491615..51dcf812e 100644 --- a/src/components/table/Table.js +++ b/src/components/table/Table.js @@ -56,24 +56,28 @@ class Table extends Component { this.getIndentData(true); } - componentWillUpdate(nextProps, nextState) { - const {dispatch, type} = this.props; - - if( - JSON.stringify(nextState.selected) !== - JSON.stringify(this.state.selected) - ){ - dispatch(selectTableItems(nextState.selected, type)); - } - } + componentDidUpdate(prevProps, prevState) { + const { + mainTable, open, rowData, defaultSelected, disconnectFromState, + dispatch, type + } = this.props; - componentDidUpdate(prevProps) { - const {mainTable, open, rowData, defaultSelected} = this.props; + const { + selected + } = this.state; if(mainTable && open){ this.table.focus(); } + if( + !disconnectFromState && + (JSON.stringify(prevState.selected) !== + JSON.stringify(selected)) + ){ + dispatch(selectTableItems(selected, type)); + } + if( JSON.stringify(prevProps.rowData) != JSON.stringify(rowData) @@ -148,13 +152,13 @@ class Table extends Component { } selectProduct = (id, idFocused, idFocusedDown) => { - const {dispatch, type} = this.props; + const {dispatch, type, disconnectFromState} = this.props; this.setState(prevState => ({ selected: prevState.selected.concat([id]) }), () => { const {selected} = this.state; - dispatch(selectTableItems(selected, type)) + !disconnectFromState && dispatch(selectTableItems(selected, type)) this.triggerFocus(idFocused, idFocusedDown); }) } From 75c00b830984534493c6945139150cf4325b36dd Mon Sep 17 00:00:00 2001 From: "damian.przygodzki" Date: Wed, 26 Apr 2017 12:50:20 +0200 Subject: [PATCH 2/2] Fix for dashboard shortcuts --- src/components/header/Header.js | 2 +- src/components/shortcuts/GlobalContextShortcuts.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/header/Header.js b/src/components/header/Header.js index ce84fff02..193a865a4 100644 --- a/src/components/header/Header.js +++ b/src/components/header/Header.js @@ -508,7 +508,7 @@ class Header extends Component { - this.handleSidelistToggle(id, sideListTab)} + showSidelist && this.handleSidelistToggle(id, sideListTab)} handleMenuOverlay={isMenuOverlayShow ? () => this.handleMenuOverlay('', '') : () => this.closeOverlays('', diff --git a/src/components/shortcuts/GlobalContextShortcuts.js b/src/components/shortcuts/GlobalContextShortcuts.js index 25b0dd09d..c0f8a3243 100644 --- a/src/components/shortcuts/GlobalContextShortcuts.js +++ b/src/components/shortcuts/GlobalContextShortcuts.js @@ -25,7 +25,6 @@ class GlobalContextShortcuts extends Component { case 'OPEN_INBOX_MENU': event.preventDefault(); closeOverlays('', ()=> handleInboxOpen(true)); - break; case 'OPEN_SIDEBAR_MENU_0': event.preventDefault();