Files
cd-ui/stories/notifications.stories.tsx
Anton GilgurandGitHub d1f1d4496b chore(storybook): update v1 syntax to use Storybook v6 (#568)
* chore(storybook): update v1 syntax to use Storybook v6

- while the deps used Storybook v6, the configuration and stories themselves were still on a legacy v5 format
  - v6 had backward compat for v5, but v7 does not, so this needs upgrading/migrating
    - or well, v7 has some legacy mode for it that can be enabled with some config, but it is entirely gone in v8
  - migrate `storiesOf` to CSF per https://storybook.js.org/docs/7/migration-guide#storiesof-to-csf
    - then had to do a bunch of manual changes to get back mostly the same previous indentation (with some minor differences where there were mistakes or inconsistencies)
      - tried to keep the diff as small as possible
    - CSF is still valid through to latest v8

Signed-off-by: Anton Gilgur <[email protected]>

* chore(storybook): convert v1 config to use Storybook v6

- modified version of v2's config

Signed-off-by: Anton Gilgur <[email protected]>

* fixup config a bit -- take more from prev webpack config

- `ts-loader` is necessary to handle the `import type` syntax
  - custom `tsconfig.json` doesn't seem necessary though
- use same SASS config
- plain CSS config not needed though bc PostCSS already runs by default

Signed-off-by: Anton Gilgur <[email protected]>

* rename to `.stories.tsx` and remove `index`

- the conventional format
  - also had some problems finding stories without this change

Signed-off-by: Anton Gilgur <[email protected]>

* fix deprecation warning re: `storyName`

- per https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#hoisted-csf-annotations
  - migrate `.story.name` -> `.storyName`
    - not sure why the automigration didn't do this and instead used the deprecated name 😕

Signed-off-by: Anton Gilgur <[email protected]>

* also fix history deprecation warning

Signed-off-by: Anton Gilgur <[email protected]>

* attempt to load CSS properly but still fail

Signed-off-by: Anton Gilgur <[email protected]>

* improve perf with built in loader for TS

- remove `ts-loader` as not necessary
- plus some settings for Storybook's TS loader preset

Signed-off-by: Anton Gilgur <[email protected]>

* diff reduction

Signed-off-by: Anton Gilgur <[email protected]>

* more diff reduction

Signed-off-by: Anton Gilgur <[email protected]>

* more diff reduction

Signed-off-by: Anton Gilgur <[email protected]>

* attempt to reduce diff a bit more hackily

Signed-off-by: Anton Gilgur <[email protected]>

* one more diff reduction with one hackishness

Signed-off-by: Anton Gilgur <[email protected]>

* diff reduction with older wacky syntax

Signed-off-by: Anton Gilgur <[email protected]>

* slightly better syntax than previous while retaining indentation

Signed-off-by: Anton Gilgur <[email protected]>

* last diff reduction/indentation change

Signed-off-by: Anton Gilgur <[email protected]>

* missing trailing comma

Signed-off-by: Anton Gilgur <[email protected]>

---------

Signed-off-by: Anton Gilgur <[email protected]>
2024-08-22 23:16:23 -04:00

39 lines
1.4 KiB
TypeScript

import * as React from 'react';
import { NotificationType } from '../src/components/notifications/notifications';
import { App } from './utils';
const messages = [
'Mist enveloped the ship three hours out from port. The recorded voice scratched in the speaker. Silver mist suffused the deck of the ship.',
'Then came the night of the first falling star. A red flare silhouetted the jagged edge of a wing. She stared through the window at the stars.',
'The spectacle before us was indeed sublime. A shining crescent far beneath the flying vessel. She stared through the window at the stars.',
];
function getMessage() {
return messages[Math.floor(Math.random() * messages.length)];
}
export default {
title: 'Notifications',
};
export const Default = () => {
return (
<App>
{(apis) => [
{type: NotificationType.Success, title: 'Success'},
{type: NotificationType.Warning, title: 'Warning'},
{type: NotificationType.Error, title: 'Error'},
].map((item) => (
<button key={item.type} className='argo-button argo-button--base' onClick={() =>
apis.notifications.show({type: item.type, content: <div>{getMessage()}</div>})
}>
{item.title}
</button>
))}
</App>
);
}
Default.storyName = 'default';