Skip to content

Commit bd861cc

Browse files
lindseywildsmocklesiddharthkp
authored
Adds noTitle option to RelativeTime component (#4635)
* Adds noTitle option to RelativeTime component * Removes iconbutton story * Reverts package-lock.json changes * Adds changeset * Update packages/react/src/RelativeTime/RelativeTime.tsx Co-authored-by: Clay Miller <[email protected]> * Update clever-pots-leave.md --------- Co-authored-by: Clay Miller <[email protected]> Co-authored-by: Siddharth Kshetrapal <[email protected]>
1 parent 240fa50 commit bd861cc

File tree

6 files changed

+45
-3
lines changed

6 files changed

+45
-3
lines changed

.changeset/clever-pots-leave.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@primer/react': minor
3+
---
4+
5+
RelativeTime: Adds `noTitle` prop if you want to not render the `title` attribute with full date time.

packages/react/src/RelativeTime/RelativeTime.docs.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,12 @@
101101
"name": "ref",
102102
"type": "React.RefObject<RelativeTimeElement>"
103103
},
104+
{
105+
"name": "noTitle",
106+
"type": "boolean",
107+
"defaultValue": "",
108+
"description": "Removes the `title` attribute provided on the element by default"
109+
},
104110
{
105111
"name": "as",
106112
"type": "React.ElementType",
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import React from 'react'
2+
import RelativeTime from './RelativeTime'
3+
import Link from '../Link'
4+
import {Tooltip} from '../TooltipV2'
5+
6+
export default {
7+
title: 'Components/RelativeTime/Examples',
8+
component: RelativeTime,
9+
}
10+
11+
export const NoTitleAttribute = () => <RelativeTime date={new Date('2020-01-01T00:00:00Z')} noTitle={true} />
12+
13+
export const LinkWithTooltip = () => (
14+
<Tooltip text={new Date('2020-01-01T00:00:00Z').toString()}>
15+
<Link href="https://www.github.com">
16+
<RelativeTime date={new Date('2020-01-01T00:00:00Z')} noTitle={true} />
17+
</Link>
18+
</Tooltip>
19+
)

packages/react/src/RelativeTime/RelativeTime.stories.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ const meta: Meta = {
1515
},
1616
}
1717

18-
export const Default: Story = () => <RelativeTime date={new Date('2020-01-01T00:00:00Z')} />
18+
export const Default: Story = () => <RelativeTime date={new Date('2020-01-01T00:00:00Z')} noTitle={true} />
1919

2020
export const Playground: Story = args => {
2121
const {date, ...rest} = args

packages/react/src/RelativeTime/RelativeTime.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import {createComponent} from '../utils/create-component'
66
const RelativeTimeComponent = createComponent(RelativeTimeElement, 'relative-time')
77

88
const localeOptions: Intl.DateTimeFormatOptions = {month: 'short', day: 'numeric', year: 'numeric'}
9-
function RelativeTime({date, datetime, children, ...props}: RelativeTimeProps) {
9+
function RelativeTime({date, datetime, children, noTitle, ...props}: RelativeTimeProps) {
1010
if (datetime) date = new Date(datetime)
1111
return (
12-
<RelativeTimeComponent {...props} date={date}>
12+
<RelativeTimeComponent {...props} date={date} no-title={noTitle ? '' : undefined}>
1313
{children || date?.toLocaleDateString('en', localeOptions) || ''}
1414
</RelativeTimeComponent>
1515
)

packages/react/src/__tests__/RelativeTime.test.tsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,16 @@ describe('RelativeTime', () => {
3737
'server rendered date',
3838
])
3939
})
40+
41+
it('does not render no-title attribute by default', () => {
42+
const date = new Date('2024-03-07T12:22:48.123Z')
43+
const {container} = HTMLRender(<RelativeTime date={date} />)
44+
expect(container.firstChild).not.toHaveAttribute('no-title')
45+
})
46+
47+
it('adds no-title attribute if noTitle={true}', () => {
48+
const date = new Date('2024-03-07T12:22:48.123Z')
49+
const {container} = HTMLRender(<RelativeTime date={date} noTitle={true} />)
50+
expect(container.firstChild).toHaveAttribute('no-title')
51+
})
4052
})

0 commit comments

Comments
 (0)