diff --git a/src/components/UserActions/UserActions.ts b/src/components/UserActions/UserActions.ts index 7ff2b613..660c538a 100644 --- a/src/components/UserActions/UserActions.ts +++ b/src/components/UserActions/UserActions.ts @@ -70,6 +70,13 @@ export interface IUserActionsOptions { * Default: `False` */ hidden: Boolean; + /** + * Whether or not the UserAction component should use the CoveoSearchUI ResponsiveManager + * Inoperant if `hidden` is true. + * + * Default: `True` + */ + useResponsiveManager: Boolean; } /** @@ -100,6 +107,9 @@ export class UserActions extends Component { }), hidden: ComponentOptions.buildBooleanOption({ defaultValue: false + }), + useResponsiveManager: ComponentOptions.buildBooleanOption({ + defaultValue: true }) }; @@ -130,7 +140,9 @@ export class UserActions extends Component { this.tagViewsOfUser(); if (!options.hidden) { - ResponsiveUserActions.init(this.root, this); + if (options.useResponsiveManager) { + ResponsiveUserActions.init(this.root, this); + } this.bind.onRootElement(QueryEvents.newQuery, () => this.hide()); this.hide(); } diff --git a/tests/components/UserActions/UserActions.spec.ts b/tests/components/UserActions/UserActions.spec.ts index 38e8254b..9badb676 100644 --- a/tests/components/UserActions/UserActions.spec.ts +++ b/tests/components/UserActions/UserActions.spec.ts @@ -76,6 +76,7 @@ describe('UserActions', () => { it('should not be displayed if hidden option is true', () => { const responsiveComponentStub = sandbox.stub(ResponsiveUserActions, 'init'); + const hideSpy = sandbox.spy(UserActions.prototype, 'hide'); Mock.advancedComponentSetup( UserActions, @@ -85,6 +86,39 @@ describe('UserActions', () => { }) ); + return delay(() => { + expect(hideSpy.called).toBe(false); + expect(responsiveComponentStub.called).toBe(false); + }); + }); + + it('should register to the ResponsiveComponentManager by default', () => { + const responsiveComponentStub = sandbox.stub(ResponsiveUserActions, 'init'); + + Mock.advancedComponentSetup( + UserActions, + new Mock.AdvancedComponentSetupOptions(null, { userId: 'testuserId' }, env => { + fakeUserProfileModel(env.root, sandbox).getActions.returns(Promise.resolve(ACTIONS)); + return env; + }) + ); + + return delay(() => { + expect(responsiveComponentStub.called).toBe(true); + }); + }); + + it('should not register to the ResponsiveComponentManager when useResponsiveManager is false', () => { + const responsiveComponentStub = sandbox.stub(ResponsiveUserActions, 'init'); + + Mock.advancedComponentSetup( + UserActions, + new Mock.AdvancedComponentSetupOptions(null, { userId: 'testuserId', useResponsiveManager: false }, env => { + fakeUserProfileModel(env.root, sandbox).getActions.returns(Promise.resolve(ACTIONS)); + return env; + }) + ); + return delay(() => { expect(responsiveComponentStub.called).toBe(false); });