diff --git a/projects/components/src/modal/modal-container.component.scss b/projects/components/src/modal/modal-container.component.scss index b8010143e..c0d3b327d 100644 --- a/projects/components/src/modal/modal-container.component.scss +++ b/projects/components/src/modal/modal-container.component.scss @@ -11,36 +11,6 @@ display: flex; flex-direction: column; - &.modal-size-small { - height: 365px; - width: 420px; - } - - &.modal-size-medium { - height: 530px; - width: 456px; - } - - &.modal-size-large-short { - height: 540px; - width: 640px; - } - - &.modal-size-large { - height: 720px; - width: 640px; - } - - &.modal-size-large-tall { - height: 800px; - width: 640px; - } - - &.modal-size-medium-wide { - height: 600px; - width: 840px; - } - .header { display: flex; flex-direction: column; diff --git a/projects/components/src/modal/modal-container.component.test.ts b/projects/components/src/modal/modal-container.component.test.ts index 19ee28e85..8f0f202b9 100644 --- a/projects/components/src/modal/modal-container.component.test.ts +++ b/projects/components/src/modal/modal-container.component.test.ts @@ -22,6 +22,12 @@ class TestComponent { describe('Modal Container component', () => { let spectator: Spectator; + const checkSyles = (width: string, height: string): void => { + const modalContainer = spectator.query('.modal-container') as HTMLElement; + expect(modalContainer.style.height).toBe(height); + expect(modalContainer.style.width).toBe(width); + }; + const createHost = createHostFactory({ component: ModalContainerComponent, shallow: true, @@ -77,14 +83,77 @@ describe('Modal Container component', () => { expect(spectator.query('.header')).toHaveText('Create User'); }); - test('uses the requested size', () => { + test('uses the requested small size', () => { spectator = createConfiguredHost({ showControls: true, title: 'Create User', content: TestComponent, size: ModalSize.Small }); - expect(spectator.query('.modal-container')).toHaveClass('modal-size-small'); + checkSyles('420px', '365px'); + }); + + test('uses the requested medium size', () => { + spectator = createConfiguredHost({ + showControls: true, + title: 'Create User', + content: TestComponent, + size: ModalSize.Medium + }); + checkSyles('456px', '530px'); + }); + + test('uses the requested large-short size', () => { + spectator = createConfiguredHost({ + showControls: true, + title: 'Create User', + content: TestComponent, + size: ModalSize.LargeShort + }); + checkSyles('640px', '540px'); + }); + + test('uses the requested large size', () => { + spectator = createConfiguredHost({ + showControls: true, + title: 'Create User', + content: TestComponent, + size: ModalSize.Large + }); + checkSyles('640px', '720px'); + }); + + test('uses the requested large-tall size', () => { + spectator = createConfiguredHost({ + showControls: true, + title: 'Create User', + content: TestComponent, + size: ModalSize.LargeTall + }); + checkSyles('640px', '800px'); + }); + + test('uses the requested medium-wide size', () => { + spectator = createConfiguredHost({ + showControls: true, + title: 'Create User', + content: TestComponent, + size: ModalSize.MediumWide + }); + checkSyles('840px', '600px'); + }); + + test('custom size', () => { + spectator = createConfiguredHost({ + showControls: true, + title: 'Create User', + content: TestComponent, + size: { + width: 100, + height: 100 + } + }); + checkSyles('100px', '100px'); }); test('closes on close button click', () => { diff --git a/projects/components/src/modal/modal-container.component.ts b/projects/components/src/modal/modal-container.component.ts index 5df18a13c..31bf42953 100644 --- a/projects/components/src/modal/modal-container.component.ts +++ b/projects/components/src/modal/modal-container.component.ts @@ -4,14 +4,14 @@ import { LayoutChangeService } from '@hypertrace/common'; import { ButtonSize, ButtonStyle } from '../button/button'; import { POPOVER_DATA } from '../popover/popover'; import { PopoverRef } from '../popover/popover-ref'; -import { ModalConfig, ModalSize, MODAL_DATA } from './modal'; +import { getModalDimensions, ModalConfig, ModalDimension, MODAL_DATA } from './modal'; @Component({ selector: 'ht-modal-container', styleUrls: ['./modal-container.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, template: ` -