diff --git a/.changeset/kind-cows-mix.md b/.changeset/kind-cows-mix.md new file mode 100644 index 000000000..2a0951efa --- /dev/null +++ b/.changeset/kind-cows-mix.md @@ -0,0 +1,5 @@ +--- +'@ithaka/pharos': patch +--- + +Update storybook stories to work with new sidenav display logic diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz index 9ce178254..f9c6b4d75 100644 Binary files a/.yarn/install-state.gz and b/.yarn/install-state.gz differ diff --git a/packages/pharos/src/components/layout/PharosLayout.react.stories.jsx b/packages/pharos/src/components/layout/PharosLayout.react.stories.jsx index 3aa8dd00e..707d897da 100644 --- a/packages/pharos/src/components/layout/PharosLayout.react.stories.jsx +++ b/packages/pharos/src/components/layout/PharosLayout.react.stories.jsx @@ -75,7 +75,7 @@ export const OneColumnWithSidenav = { gridTemplateColumns: 'max-content 1fr', }} > - + @@ -98,7 +98,7 @@ export const OneColumnWithSidenavAndComfySpacing = { gridTemplateColumns: 'max-content 1fr', }} > - + diff --git a/packages/pharos/src/components/layout/pharos-layout.wc.stories.jsx b/packages/pharos/src/components/layout/pharos-layout.wc.stories.jsx index 3b9ddcd11..af91ee8f9 100644 --- a/packages/pharos/src/components/layout/pharos-layout.wc.stories.jsx +++ b/packages/pharos/src/components/layout/pharos-layout.wc.stories.jsx @@ -64,7 +64,7 @@ export const OneColumnWithSidenav = {
- + @@ -85,7 +85,7 @@ export const OneColumnWithSidenavAndComfySpacing = {
- + diff --git a/packages/pharos/src/components/sidenav/PharosSidenav.react.stories.jsx b/packages/pharos/src/components/sidenav/PharosSidenav.react.stories.jsx index fa400389e..cb0f9ccfa 100644 --- a/packages/pharos/src/components/sidenav/PharosSidenav.react.stories.jsx +++ b/packages/pharos/src/components/sidenav/PharosSidenav.react.stories.jsx @@ -115,6 +115,6 @@ export const Base = { ), - args: { open: false, hasCloseButton: false }, + args: { open: false, hasCloseButton: true }, parameters: {}, }; diff --git a/packages/pharos/src/components/sidenav/pharos-sidenav.wc.stories.jsx b/packages/pharos/src/components/sidenav/pharos-sidenav.wc.stories.jsx index 0b433e32d..37c743bca 100644 --- a/packages/pharos/src/components/sidenav/pharos-sidenav.wc.stories.jsx +++ b/packages/pharos/src/components/sidenav/pharos-sidenav.wc.stories.jsx @@ -99,7 +99,7 @@ export const Base = { `, - args: { open: false, hasCloseButton: false }, + args: { open: false, hasCloseButton: true }, parameters: { chromatic: { viewports: [320, 1200] }, }, diff --git a/packages/pharos/src/pages/reports/react/ReportExample.tsx b/packages/pharos/src/pages/reports/react/ReportExample.tsx new file mode 100644 index 000000000..b3d963bb3 --- /dev/null +++ b/packages/pharos/src/pages/reports/react/ReportExample.tsx @@ -0,0 +1,113 @@ +import { useEffect, type FC, useState, useRef } from 'react'; +import { Sidenav } from './Sidenav'; +import { CreateReportModal } from './CreateReportModal'; +import { ReportsTable } from './ReportsTable'; +import { historyTable, scheduledTable } from '../mocks'; +import logo from '@config/assets/images/reports/jstor-horizontal.svg'; + +import { + PharosHeading, + PharosLink, + PharosButton, + PharosTabs, + PharosTab, + PharosTabPanel, + PharosToaster, + PharosLayout, +} from '../../../react-components'; + +export const ReportExample: FC = () => { + const mobileBreakpoint = 1055; + const [isMobile, setIsMobile] = useState(window.innerWidth < mobileBreakpoint); + const [isSidenavDisplayed, setIsSidenavDisplayed] = useState(!isMobile); + const containerRef = useRef(null); + + useEffect(() => { + const currentRef = containerRef.current; + const resizeObserver = new ResizeObserver(() => { + const windowWidth = window.innerWidth; + setIsSidenavDisplayed(windowWidth >= mobileBreakpoint); + setIsMobile(windowWidth < mobileBreakpoint); + }); + + if (currentRef) { + resizeObserver.observe(currentRef); + } + + return () => { + if (currentRef) { + resizeObserver.unobserve(currentRef); + } + }; + }, []); + return ( + <> +
+ +
+ +
+
+ + logo + / + + Admin + +
+ + Gerry Larry Burla + +
+
+ + COUNTER 5 Usage Reports + +

+ Welcome to the COUNTER 5 reporting service for participating institutions. JSTOR + offers COUNTER 5 compliant reports for usage beginning January 2019. COUNTER 4 + reports are still available for usage from January 2017 - April 2019 from the{' '} + COUNTER 4 reporting service. Please visit our + COUNTER 5 support page for more information on + JSTOR usage reports. +

+
+
+ + Create Report + + + + Report History + + + Scheduled Reports + + + {ReportsTable(historyTable)} + + + {ReportsTable(scheduledTable)} + + +
+
+
+
+ + + + ); +}; diff --git a/packages/pharos/src/pages/reports/react/Sidenav.tsx b/packages/pharos/src/pages/reports/react/Sidenav.tsx index 0eab03263..3c36e34b3 100644 --- a/packages/pharos/src/pages/reports/react/Sidenav.tsx +++ b/packages/pharos/src/pages/reports/react/Sidenav.tsx @@ -6,9 +6,19 @@ import { PharosSidenavSection } from '../../../react-components/sidenav/pharos-s import { PharosSidenavLink } from '../../../react-components/sidenav/pharos-sidenav-link'; import { PharosSidenavMenu } from '../../../react-components/sidenav/pharos-sidenav-menu'; import logo from '@config/assets/images/jstor-logo-inverse.svg'; +export interface SideNavProps { + open: boolean; + showCloseButton: boolean; +} -export const Sidenav: FC = () => ( - +export const Sidenav: FC = ({ open, showCloseButton }) => ( + diff --git a/packages/pharos/src/pages/reports/react/reports.pages.stories.tsx b/packages/pharos/src/pages/reports/react/reports.pages.stories.tsx index 597f8344d..11d07d4d7 100644 --- a/packages/pharos/src/pages/reports/react/reports.pages.stories.tsx +++ b/packages/pharos/src/pages/reports/react/reports.pages.stories.tsx @@ -2,23 +2,8 @@ import type { Meta } from '@storybook/react'; import '../reports.scss'; import { viewports } from '../../shared/viewports'; -import { Sidenav } from './Sidenav'; -import { CreateReportModal } from './CreateReportModal'; -import { ReportsTable } from './ReportsTable'; -import { historyTable, scheduledTable } from '../mocks'; -import logo from '@config/assets/images/reports/jstor-horizontal.svg'; - -import { - PharosHeading, - PharosLink, - PharosButton, - PharosTabs, - PharosTab, - PharosTabPanel, - PharosToaster, - PharosLayout, -} from '../../../react-components'; import { PharosContext } from '../../../utils/PharosContext'; +import { ReportExample } from './ReportExample'; export default { title: 'Pages/Reports', @@ -40,66 +25,7 @@ export default { export const Reports = { render: () => ( <> -
- -
- -
-
- logo - / - - Admin - -
- - Gerry Larry Burla - -
-
- - COUNTER 5 Usage Reports - -

- Welcome to the COUNTER 5 reporting service for participating institutions. JSTOR - offers COUNTER 5 compliant reports for usage beginning January 2019. COUNTER 4 - reports are still available for usage from January 2017 - April 2019 from the{' '} - COUNTER 4 reporting service. Please visit our - COUNTER 5 support page for more information on - JSTOR usage reports. -

-
-
- - Create Report - - - - Report History - - - Scheduled Reports - - - {ReportsTable(historyTable)} - - - {ReportsTable(scheduledTable)} - - -
-
-
-
- - + ), }; diff --git a/packages/pharos/src/pages/reports/wc/reports-example.ts b/packages/pharos/src/pages/reports/wc/reports-example.ts new file mode 100644 index 000000000..2cdb33a9d --- /dev/null +++ b/packages/pharos/src/pages/reports/wc/reports-example.ts @@ -0,0 +1,124 @@ +import { LitElement, html } from 'lit'; +import { ReportsTable } from './reports-table'; +import { historyTable, scheduledTable } from '../mocks'; +import { CreateReportModal } from './create-report-modal'; +import { Sidenav } from './sidenav'; +import logo from '@config/assets/images/reports/jstor-horizontal.svg'; +export class ReportsExample extends LitElement { + override createRenderRoot() { + // Keep example element in the light DOM to allow sharing styles with React story + return this; + } + readonly #mobileBreakpoint = 1055; + resizeObserver: ResizeObserver; + isMobile: boolean; + isSidenavDisplayed: boolean; + + static override get properties() { + return { + isMobile: { type: Boolean }, + isSidenavDisplayed: { type: Boolean }, + }; + } + + constructor() { + super(); + this.isMobile = window.innerWidth < this.#mobileBreakpoint; + this.isSidenavDisplayed = window.innerWidth >= this.#mobileBreakpoint; + this.resizeObserver = new ResizeObserver(() => { + const windowWidth = window.innerWidth; + this.isSidenavDisplayed = windowWidth >= this.#mobileBreakpoint; + this.isMobile = windowWidth < this.#mobileBreakpoint; + }); + } + + override firstUpdated() { + super.connectedCallback(); + const container = this.renderRoot.querySelector('.reports-page__container'); + if (container) { + this.resizeObserver.observe(container); + } + } + + override disconnectedCallback() { + this.resizeObserver.disconnect(); + super.disconnectedCallback(); + } + + resizeHandler() { + const windowWidth = window.innerWidth; + this.isSidenavDisplayed = windowWidth >= this.#mobileBreakpoint; + this.isMobile = windowWidth < this.#mobileBreakpoint; + } + + override render() { + return html`
+ ${Sidenav(this.isSidenavDisplayed, this.isMobile)} +
+ +
+
+ + logo + / + Admin +
+ Gerry Larry Burla + +
+
+ COUNTER 5 Usage Reports +

+ Welcome to the COUNTER 5 reporting service for participating institutions. JSTOR + offers COUNTER 5 compliant reports for usage beginning January 2019. COUNTER 4 + reports are still available for usage from January 2017 - April 2019 from the + COUNTER 4 reporting service. + Please visit our COUNTER 5 + support page + for more information on JSTOR usage reports. +

+
+
+ Create Report + + + Report History + Scheduled Reports + + ${ReportsTable(historyTable)} + + + ${ReportsTable(scheduledTable)} + + +
+
+
+
+ + ${CreateReportModal()}`; + } +} diff --git a/packages/pharos/src/pages/reports/wc/reports.pages.stories.ts b/packages/pharos/src/pages/reports/wc/reports.pages.stories.ts index ae2c58055..8eb59bc64 100644 --- a/packages/pharos/src/pages/reports/wc/reports.pages.stories.ts +++ b/packages/pharos/src/pages/reports/wc/reports.pages.stories.ts @@ -3,11 +3,7 @@ import type { TemplateResult } from 'lit'; import '../reports.scss'; import { viewports, breakpoints } from '../../shared/viewports'; -import { Sidenav } from './sidenav'; -import { CreateReportModal } from './create-report-modal'; -import { ReportsTable } from './reports-table'; -import { historyTable, scheduledTable } from '../mocks'; -import logo from '@config/assets/images/reports/jstor-horizontal.svg'; +import { ReportsExample } from './reports-example'; export default { title: 'Pages/Reports', @@ -19,71 +15,7 @@ export default { }, }, }; - -export const Reports = { - render: (): TemplateResult => html` -
- ${Sidenav()} -
- -
-
- - logo - / - Admin -
- Gerry Larry Burla - -
-
- COUNTER 5 Usage Reports -

- Welcome to the COUNTER 5 reporting service for participating institutions. JSTOR - offers COUNTER 5 compliant reports for usage beginning January 2019. COUNTER 4 reports - are still available for usage from January 2017 - April 2019 from the - COUNTER 4 reporting service. - Please visit our COUNTER 5 - support page - for more information on JSTOR usage reports. -

-
-
- Create Report - - - Report History - Scheduled Reports - - ${ReportsTable(historyTable)} - - - ${ReportsTable(scheduledTable)} - - -
-
-
-
- - ${CreateReportModal()} - `, +export const Reports = (): TemplateResult => { + customElements.define('reports-example', ReportsExample); + return html``; }; diff --git a/packages/pharos/src/pages/reports/wc/sidenav.ts b/packages/pharos/src/pages/reports/wc/sidenav.ts index 207403810..ab96ced7e 100644 --- a/packages/pharos/src/pages/reports/wc/sidenav.ts +++ b/packages/pharos/src/pages/reports/wc/sidenav.ts @@ -3,8 +3,14 @@ import type { TemplateResult } from 'lit'; import logo from '@config/assets/images/jstor-logo-inverse.svg'; -export const Sidenav = (): TemplateResult => html` - +export const Sidenav = (open: boolean, showCloseButton: boolean): TemplateResult => html` +