Skip to content

Commit

Permalink
Add styles, e2e tests and update sample app
Browse files Browse the repository at this point in the history
Refs: #5844
  • Loading branch information
anicyne committed Jan 8, 2025
1 parent baa06f8 commit d9d28dc
Show file tree
Hide file tree
Showing 11 changed files with 98 additions and 12 deletions.
25 changes: 25 additions & 0 deletions packages/components/src/components/modal/modal.e2e.ts
Original file line number Diff line number Diff line change
Expand Up @@ -114,4 +114,29 @@ test.describe('kol-modal', () => {
await expect(eventPromise).resolves.toBeUndefined();
});
});

test.describe('kol-modal - variant', () => {
test('it renders the close button in card variant', async ({ page }) => {
await page.setContent('<kol-modal _variant="card" _label="">Modal content</kol-modal>');
const kolModal = page.locator('kol-modal');
const dialog = page.locator('dialog');
await expect(dialog).toBeHidden();
await kolModal.evaluate((element: HTMLKolModalElement) => element.openModal());
await expect(dialog).toBeVisible();
const closeButton = page.locator('.kol-modal__close-button');
await expect(closeButton).toBeVisible();
await closeButton.click();
await expect(dialog).toBeHidden();
});

test('it does not render the close button in blank variant', async ({ page }) => {
await page.setContent('<kol-modal _variant="blank" _label="">Modal content</kol-modal>');
const kolModal = page.locator('kol-modal');
const dialog = page.locator('dialog');
const closeButton = page.locator('.kol-modal__close-button');
await kolModal.evaluate((element: HTMLKolModalElement) => element.openModal());
await expect(dialog).toBeVisible();
await expect(closeButton).toBeHidden();
});
});
});
3 changes: 2 additions & 1 deletion packages/components/src/components/modal/shadow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { dispatchDomEvent, KolEvent } from '../../utils/events';
import { ModalVariantPropType, validateModalVariant } from '../../schema/props/variant/modal';
import { KolButtonWcTag } from '../../core/component-names';
import { translate } from '../../i18n';
import clsx from 'clsx';

/**
* https://en.wikipedia.org/wiki/Modal_window
Expand Down Expand Up @@ -56,7 +57,7 @@ export class KolModal implements ModalAPI {
public render(): JSX.Element {
return (
<dialog
class="kol-modal"
class={clsx('kol-modal', { 'kol-modal__card': this.state._variant === 'card' && true })}
ref={(el) => {
this.refDialog = el;
}}
Expand Down
34 changes: 23 additions & 11 deletions packages/samples/react/src/components/modal/basic.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { FC } from 'react';
import React, { useEffect, useRef } from 'react';
import React, { useEffect, useRef, useState } from 'react';
import { useSearchParams } from 'react-router-dom';

import { KolButton, KolCard, KolModal } from '@public-ui/react';
Expand All @@ -10,7 +10,7 @@ export const ModalBasic: FC = () => {
const modalState = searchParams.get('show-modal') as string;
const modalElement = useRef<HTMLKolModalElement>(null);
const stackedModalElement = useRef<HTMLKolModalElement>(null);

const [variant, setVariant] = useState('blank');
useEffect(() => {
if (modalState === 'true') {
modalElement.current?.openModal();
Expand All @@ -27,7 +27,7 @@ export const ModalBasic: FC = () => {
</SampleDescription>

<div className="flex">
<KolModal _label="Primary modal" _width="80%" ref={modalElement} _on={{ onClose: () => console.log('Modal closed') }} _variant="card">
<KolModal _label="Primary modal" _width="80%" ref={modalElement} _on={{ onClose: () => console.log('Modal closed') }} _variant={variant}>
<KolCard _label="I am a modal.">
<KolButton
_label="Open stacked modal"
Expand Down Expand Up @@ -62,15 +62,27 @@ export const ModalBasic: FC = () => {
/>
</KolCard>
</KolModal>
<div className="grid gap-4">
<KolButton
_label="Open modal"
_on={{
onClick: () => {
setVariant('blank');
modalElement.current?.openModal();
},
}}
/>

<KolButton
_label="Open modal"
_on={{
onClick: () => {
modalElement.current?.openModal();
},
}}
/>
<KolButton
_label="Open card modal"
_on={{
onClick: () => {
setVariant('card');
modalElement.current?.openModal();
},
}}
/>
</div>
</div>
</>
);
Expand Down
10 changes: 10 additions & 0 deletions packages/themes/default/src/components/modal.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
@import '../mixins/rem';

@layer kol-theme-component {
.kol-modal {
&__card {
box-shadow: 0 0 rem(4) var(--color-subtle);
border-radius: var(--border-radius);
}
}
}
2 changes: 2 additions & 0 deletions packages/themes/default/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import inputRangeCss from './components/input-range.scss';
import inputTextCss from './components/input-text.scss';
import kolibriCss from './components/kolibri.scss';
import linkButtonCss from './components/link-button.scss';
import modalCss from './components/modal.scss';
import linkCss from './components/link.scss';
import navCss from './components/nav.scss';
import paginationCss from './components/pagination.scss';
Expand Down Expand Up @@ -70,6 +71,7 @@ export const DEFAULT = KoliBri.createTheme('default', {
'KOL-KOLIBRI': kolibriCss,
'KOL-LINK': linkCss,
'KOL-LINK-BUTTON': linkButtonCss,
'KOL-MODAL': modalCss,
'KOL-NAV': navCss,
'KOL-PAGINATION': paginationCss,
'KOL-PROGRESS': progressCss,
Expand Down
9 changes: 9 additions & 0 deletions packages/themes/ecl/src/ecl-ec/components/modal.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
@import '../mixins/rem';

@layer kol-theme-component {
.kol-modal {
&__card {
box-shadow: 0 0 calc(var(--spacing-2xs) / 2) var(--color-black);
}
}
}
2 changes: 2 additions & 0 deletions packages/themes/ecl/src/ecl-ec/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import inputTextCss from './components/input-text.scss';
import linkButtonCss from './components/link-button.scss';
import kolibriCss from './components/kolibri.scss';
import linkCss from './components/link.scss';
import modalCss from './components/modal.scss';
import navCss from './components/nav.scss';
import paginationCss from './components/pagination.scss';
import progressCss from './components/progress.scss';
Expand Down Expand Up @@ -76,6 +77,7 @@ export const ECL_EC = KoliBri.createTheme('ecl-ec', {
'KOL-INPUT-DATE': inputDateCss,
'KOL-INPUT-EMAIL': inputEmailCss,
'KOL-INPUT-FILE': inputFileCss,
'KOL-MODAL': modalCss,
'KOL-SELECT': selectCss,
'KOL-TEXTAREA': textareaCss,
'KOL-TABLE-STATEFUL': tableStatefulCss,
Expand Down
9 changes: 9 additions & 0 deletions packages/themes/ecl/src/ecl-eu/components/modal.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
@import '../mixins/rem';

@layer kol-theme-component {
.kol-modal {
&__card {
box-shadow: 0 0 calc(var(--spacing-2xs) / 2) var(--color-black);
}
}
}
2 changes: 2 additions & 0 deletions packages/themes/ecl/src/ecl-eu/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import inputTextCss from './components/input-text.scss';
import kolibriCss from './components/kolibri.scss';
import linkButtonCss from './components/link-button.scss';
import linkCss from './components/link.scss';
import modalCss from './components/modal.scss';
import navCss from './components/nav.scss';
import paginationCss from './components/pagination.scss';
import progressCss from './components/progress.scss';
Expand Down Expand Up @@ -74,6 +75,7 @@ export const ECL_EU = KoliBri.createTheme('ecl-eu', {
'KOL-AVATAR': avatarCss,
'KOL-TABS': tabsCss,
'KOL-LINK': linkCss,
'KOL-MODAL': modalCss,
'KOL-BUTTON-LINK': buttonLinkCss,
'KOL-BREADCRUMB': breadcrumbCss,
'KOL-DETAILS': detailsCss,
Expand Down
12 changes: 12 additions & 0 deletions packages/themes/itzbund/src/components/modal.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
@import '../mixins/rem';

@layer kol-theme-component {
.kol-modal {
&__card {
border-color: var(--border-color);
border-style: solid;
border-width: rem(1);
border-radius: calc(2 * var(--border-radius));
}
}
}
2 changes: 2 additions & 0 deletions packages/themes/itzbund/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import inputRadioCss from './components/input-radio.scss';
import inputTextCss from './components/input-text.scss';
import linkButtonCss from './components/link-button.scss';
import linkCss from './components/link.scss';
import modalCss from './components/modal.scss';
import navCss from './components/nav.scss';
import paginationCss from './components/pagination.scss';
import progressCss from './components/progress.scss';
Expand Down Expand Up @@ -59,6 +60,7 @@ export const ITZBund = KoliBri.createTheme('itzbund', {
'KOL-HEADING': headingCss,
'KOL-BADGE': badgeCss,
'KOL-LINK': linkCss,
'KOL-MODAL': modalCss,
'KOL-BREADCRUMB': breadcrumbCss,
'KOL-SPIN': spinCss,
'KOL-SINGLE-SELECT': singleSelectCss,
Expand Down

0 comments on commit d9d28dc

Please sign in to comment.