@@ -1884,6 +1884,45 @@ suite('relative-time', function () {
18841884 }
18851885 } )
18861886
1887+ suite ( 'experimental: [data-prefers-absolute-time]' , async ( ) => {
1888+ test ( 'formats with absolute time when data-prefers-absolute-time="true"' , async ( ) => {
1889+ document . documentElement . setAttribute ( 'data-prefers-absolute-time' , 'true' )
1890+ const el = document . createElement ( 'relative-time' )
1891+ el . setAttribute ( 'datetime' , '2022-01-01T12:00:00.000Z' )
1892+ await Promise . resolve ( )
1893+
1894+ assert . match ( el . shadowRoot . textContent , / [ A - Z ] [ a - z ] { 2 } \d { 1 , 2 } , \d { 4 } , \d { 1 , 2 } : \d { 2 } ( A M | P M ) / )
1895+ } )
1896+
1897+ test ( 'does not format with absolute time when format is elapsed or duration' , async ( ) => {
1898+ document . documentElement . setAttribute ( 'data-prefers-absolute-time' , 'true' )
1899+ const el = document . createElement ( 'relative-time' )
1900+ el . setAttribute ( 'datetime' , '2022-01-01T12:00:00.000Z' )
1901+ el . setAttribute ( 'format' , 'elapsed' )
1902+ await Promise . resolve ( )
1903+
1904+ assert . notMatch ( el . shadowRoot . textContent , / [ A - Z ] [ a - z ] { 2 } \d { 1 , 2 } , \d { 4 } , \d { 1 , 2 } : \d { 2 } ( A M | P M ) / )
1905+ } )
1906+
1907+ test ( 'does not format with absolute time when data-prefers-absolute-time="false"' , async ( ) => {
1908+ document . documentElement . setAttribute ( 'data-prefers-absolute-time' , 'false' )
1909+ const el = document . createElement ( 'relative-time' )
1910+ el . setAttribute ( 'datetime' , new Date ( Date . now ( ) - 3 * 60 * 60 * 24 * 1000 ) . toISOString ( ) )
1911+ await Promise . resolve ( )
1912+
1913+ assert . equal ( el . shadowRoot . textContent , '3 days ago' )
1914+ } )
1915+
1916+ test ( 'does not format with absolute time when data-prefers-absolute-time is not set' , async ( ) => {
1917+ document . documentElement . setAttribute ( 'data-prefers-absolute-time' , 'false' )
1918+ const el = document . createElement ( 'relative-time' )
1919+ el . setAttribute ( 'datetime' , new Date ( Date . now ( ) - 3 * 60 * 60 * 24 * 1000 ) . toISOString ( ) )
1920+ await Promise . resolve ( )
1921+
1922+ assert . equal ( el . shadowRoot . textContent , '3 days ago' )
1923+ } )
1924+ } )
1925+
18871926 suite ( '[aria-hidden]' , async ( ) => {
18881927 test ( '[aria-hidden="true"] applies to shadow root' , async ( ) => {
18891928 const now = new Date ( ) . toISOString ( )
0 commit comments