diff --git a/generated/components.json b/generated/components.json index 3a574ab4f45..0fc91b3543a 100644 --- a/generated/components.json +++ b/generated/components.json @@ -3443,7 +3443,7 @@ "stories": [ { "id": "components-relativetime--default", - "code": "(args) => {\n const { date, ...rest } = args\n return \n}" + "code": "() => " } ], "props": [ diff --git a/src/RelativeTime/RelativeTime.features.stories.tsx b/src/RelativeTime/RelativeTime.features.stories.tsx new file mode 100644 index 00000000000..e1ed5882922 --- /dev/null +++ b/src/RelativeTime/RelativeTime.features.stories.tsx @@ -0,0 +1,155 @@ +import RelativeTime from './RelativeTime' +import React from 'react' +import {Meta, Story} from '@storybook/react' + +const meta: Meta = { + title: 'Components/RelativeTime/Features', + component: RelativeTime, + parameters: { + layout: 'fullscreen', + controls: { + // StoryBook infers from type info of the component which includes CE Lifecycle, + // SX props, and methods we want to otherwise ignore + exclude: /^(getFormatted.*|datetime|sx|as|theme|forwardedAs|.*Callback|update)$/g, + }, + // it's not possible to snapshot test relative time because the output keeps changing + chromatic: {disableSnapshot: true}, + }, + args: { + date: new Date('2020-01-01T00:00:00Z'), + second: '', + minute: '', + hour: '', + weekday: '', + day: 'numeric', + month: 'short', + year: '', + timeZoneName: '', + }, + argTypes: { + hour: { + type: { + name: 'enum', + value: ['', 'numeric', '2-digit'], + }, + control: { + type: 'select', + labels: { + '': '(None)', + }, + }, + }, + minute: { + type: { + name: 'enum', + value: ['', 'numeric', '2-digit'], + }, + control: { + type: 'select', + labels: { + '': '(None)', + }, + }, + }, + second: { + type: { + name: 'enum', + value: ['', 'numeric', '2-digit'], + }, + control: { + type: 'select', + labels: { + '': '(None)', + }, + }, + }, + weekday: { + type: { + name: 'enum', + value: ['', 'short', 'long', 'narrow'], + }, + control: { + type: 'select', + labels: { + '': '(None)', + }, + }, + }, + day: { + type: { + name: 'enum', + value: ['', 'numeric', '2-digit'], + }, + control: { + type: 'select', + labels: { + '': '(None)', + }, + }, + }, + month: { + type: { + name: 'enum', + value: ['', 'numeric', '2-digit', 'long', 'short', 'narrow'], + }, + control: { + type: 'select', + labels: { + '': '(None)', + }, + }, + }, + year: { + type: { + name: 'enum', + value: ['', 'numeric', '2-digit'], + }, + control: { + type: 'select', + labels: { + '': '(None)', + }, + }, + }, + timeZoneName: { + type: { + name: 'enum', + value: ['', 'long', 'short', 'longOffset', 'shortOffset', 'longGeneric', 'shortGeneric'], + }, + control: { + type: 'select', + labels: { + '': '(None)', + }, + }, + }, + date: { + control: 'date', + }, + format: { + control: 'string', + }, + }, +} + +export const MicroFormat: Story = args => { + const {date, ...rest} = args + return +} +MicroFormat.args = {tense: 'past'} +MicroFormat.argTypes = {format: {control: false}} + +export const RecentTime: Story = args => { + const {...rest} = args + return +} +RecentTime.argTypes = {date: {control: false}} + +export const CountDownTimer: Story = args => { + const {...rest} = args + return +} +CountDownTimer.args = {date: new Date('2038-01-19T03:14:08Z'), format: 'elapsed', day: '', month: ''} +CountDownTimer.argTypes = {date: {control: false}, format: {control: false}} + +export default meta diff --git a/src/RelativeTime/RelativeTime.stories.tsx b/src/RelativeTime/RelativeTime.stories.tsx index 0a0be5b8eb2..f7952a48555 100644 --- a/src/RelativeTime/RelativeTime.stories.tsx +++ b/src/RelativeTime/RelativeTime.stories.tsx @@ -15,146 +15,130 @@ const meta: Meta = { // it's not possible to snapshot test relative time because the output keeps changing chromatic: {disableSnapshot: true}, }, - args: { - date: new Date('2020-01-01T00:00:00Z'), - second: '', - minute: '', - hour: '', - weekday: '', - day: 'numeric', - month: 'short', - year: '', - timeZoneName: '', - }, - argTypes: { - hour: { - type: { - name: 'enum', - value: ['', 'numeric', '2-digit'], - }, - control: { - type: 'select', - labels: { - '': '(None)', - }, - }, +} + +export const Default: Story = () => + +export const Playground: Story = args => { + const {date, ...rest} = args + return +} + +Playground.args = { + date: new Date('2020-01-01T00:00:00Z'), + second: '', + minute: '', + hour: '', + weekday: '', + day: 'numeric', + month: 'short', + year: '', + timeZoneName: '', +} + +Playground.argTypes = { + hour: { + type: { + name: 'enum', + value: ['', 'numeric', '2-digit'], }, - minute: { - type: { - name: 'enum', - value: ['', 'numeric', '2-digit'], - }, - control: { - type: 'select', - labels: { - '': '(None)', - }, + control: { + type: 'select', + labels: { + '': '(None)', }, }, - second: { - type: { - name: 'enum', - value: ['', 'numeric', '2-digit'], - }, - control: { - type: 'select', - labels: { - '': '(None)', - }, - }, + }, + minute: { + type: { + name: 'enum', + value: ['', 'numeric', '2-digit'], }, - weekday: { - type: { - name: 'enum', - value: ['', 'short', 'long', 'narrow'], - }, - control: { - type: 'select', - labels: { - '': '(None)', - }, + control: { + type: 'select', + labels: { + '': '(None)', }, }, - day: { - type: { - name: 'enum', - value: ['', 'numeric', '2-digit'], - }, - control: { - type: 'select', - labels: { - '': '(None)', - }, - }, + }, + second: { + type: { + name: 'enum', + value: ['', 'numeric', '2-digit'], }, - month: { - type: { - name: 'enum', - value: ['', 'numeric', '2-digit', 'long', 'short', 'narrow'], - }, - control: { - type: 'select', - labels: { - '': '(None)', - }, + control: { + type: 'select', + labels: { + '': '(None)', }, }, - year: { - type: { - name: 'enum', - value: ['', 'numeric', '2-digit'], + }, + weekday: { + type: { + name: 'enum', + value: ['', 'short', 'long', 'narrow'], + }, + control: { + type: 'select', + labels: { + '': '(None)', }, - control: { - type: 'select', - labels: { - '': '(None)', - }, + }, + }, + day: { + type: { + name: 'enum', + value: ['', 'numeric', '2-digit'], + }, + control: { + type: 'select', + labels: { + '': '(None)', }, }, - timeZoneName: { - type: { - name: 'enum', - value: ['', 'long', 'short', 'longOffset', 'shortOffset', 'longGeneric', 'shortGeneric'], + }, + month: { + type: { + name: 'enum', + value: ['', 'numeric', '2-digit', 'long', 'short', 'narrow'], + }, + control: { + type: 'select', + labels: { + '': '(None)', }, - control: { - type: 'select', - labels: { - '': '(None)', - }, + }, + }, + year: { + type: { + name: 'enum', + value: ['', 'numeric', '2-digit'], + }, + control: { + type: 'select', + labels: { + '': '(None)', }, }, - date: { - control: 'date', + }, + timeZoneName: { + type: { + name: 'enum', + value: ['', 'long', 'short', 'longOffset', 'shortOffset', 'longGeneric', 'shortGeneric'], }, - format: { - control: 'string', + control: { + type: 'select', + labels: { + '': '(None)', + }, }, }, + date: { + control: 'date', + }, + format: { + control: 'string', + }, } -export const Default: Story = args => { - const {date, ...rest} = args - return -} - -export const MicroFormat: Story = args => { - const {date, ...rest} = args - return -} -MicroFormat.args = {tense: 'past'} -MicroFormat.argTypes = {format: {control: false}} - -export const RecentTime: Story = args => { - const {...rest} = args - return -} -RecentTime.argTypes = {date: {control: false}} - -export const CountDownTimer: Story = args => { - const {...rest} = args - return -} -CountDownTimer.args = {date: new Date('2038-01-19T03:14:08Z'), format: 'elapsed', day: '', month: ''} -CountDownTimer.argTypes = {date: {control: false}, format: {control: false}} - export default meta diff --git a/src/__tests__/storybook.test.tsx b/src/__tests__/storybook.test.tsx index affa6f57142..8b84116b4d8 100644 --- a/src/__tests__/storybook.test.tsx +++ b/src/__tests__/storybook.test.tsx @@ -33,6 +33,7 @@ const allowlist = [ 'ProgressBar', 'Radio', 'RadioGroup', + 'RelativeTime', 'Select', 'SegmentedControl', 'Spinner',