diff --git a/.idea/react-components-viewer.iml b/.idea/react-components-viewer.iml index d6ebd48..f7864d0 100644 --- a/.idea/react-components-viewer.iml +++ b/.idea/react-components-viewer.iml @@ -2,7 +2,9 @@ - + + + diff --git a/package-lock.json b/package-lock.json index 7adb1ba..2465b1a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "react-component-viewer", - "version": "0.23.0", + "version": "0.24.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index ac13c00..0514fda 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-component-viewer", - "version": "0.23.0", + "version": "0.24.0", "description": "React Component to help with development of other React components", "repository": { "type": "git", diff --git a/src/components/viewer/ComponentViewerStateCreator.test.tsx b/src/components/viewer/ComponentViewerStateCreator.test.tsx index 5ed460b..6dd0629 100644 --- a/src/components/viewer/ComponentViewerStateCreator.test.tsx +++ b/src/components/viewer/ComponentViewerStateCreator.test.tsx @@ -53,6 +53,21 @@ describe('ComponentViewerStateCreator', () => { '&_rcv_dropdown_brand=brand_one&_rcv_dropdown_services=fake_services'); }); + it('should preserve false state of the full screen toggle', () => { + const stateCreator = new ComponentViewerStateCreator(registries); + const url = stateCreator.buildUrlSearchParams({ + registryName: '', + demoName: '', + entryTitle: '', + isFullScreen: false, + isHelpOn: false, + filterText: '', + selectedToolbarItems: {} + }); + + expect(url).toEqual('_rcv_fs=false'); + }); + it('should extract toolbar items from url', () => { const stateCreator = new ComponentViewerStateCreator(registries); const state = stateCreator.stateFromUrl( diff --git a/src/components/viewer/ComponentViewerStateCreator.ts b/src/components/viewer/ComponentViewerStateCreator.ts index d2d7bfc..bcf64d5 100644 --- a/src/components/viewer/ComponentViewerStateCreator.ts +++ b/src/components/viewer/ComponentViewerStateCreator.ts @@ -32,7 +32,7 @@ export class ComponentViewerStateCreator { const selectedToolbarItems = extractSelectedToolbarItems(); - const fullScreenValue = searchParams.get(queryParamNames.isFullScreen) || 'false'; + const fullScreenValue = searchParams.get(queryParamNames.isFullScreen); const isFullScreen = fullScreenValue === 'true'; const helpOnValue = searchParams.get(queryParamNames.isHelpOn) || 'false'; @@ -44,7 +44,7 @@ export class ComponentViewerStateCreator { registryName: miniAppByUrl.registry.name, demoName: miniAppByUrl.demoEntry.name, entryTitle: miniAppByUrl.demoEntry.firstEntryTitle, - isFullScreen, + isFullScreen: fullScreenValue === null ? true : isFullScreen, isHelpOn: isHelpOn, filterText: '', selectedToolbarItems @@ -87,15 +87,17 @@ export class ComponentViewerStateCreator { buildUrlSearchParams(state: ComponentViewerState): string { const searchParams = new URLSearchParams(); - Object.keys(state).forEach(k => { - const v = state[k]; + Object.keys(state).forEach(key => { + const value = state[key]; - if (k === 'selectedToolbarItems') { - const toolbarItems: {[labelKey: string]: string} = v; - Object.keys(v).forEach(dropDownLabelKey => searchParams.set( + if (key === 'selectedToolbarItems') { + const toolbarItems: {[labelKey: string]: string} = value; + Object.keys(value).forEach(dropDownLabelKey => searchParams.set( queryParamNames.selectedToolbarItemPrefix + dropDownLabelKey, toolbarItems[dropDownLabelKey])); - } else if (v) { - searchParams.set(queryParamNames[k], v.toString()); + } else { + if (value || key === 'isFullScreen') { + searchParams.set(queryParamNames[key], value.toString()); + } } });