From c6c82c124c6fc8109878b751e0361ca92153316b Mon Sep 17 00:00:00 2001 From: Kyle Buchanan Date: Fri, 9 Sep 2022 09:27:29 -0400 Subject: [PATCH 01/18] feat(timestamp): pfe-datetime to pfe-timestamp for 1:1 --- elements/pfe-datetime/README.md | 83 ---- .../pfe-datetime/datetime--screenshot.png | Bin 91985 -> 0 bytes elements/pfe-datetime/demo/pfe-datetime.html | 97 ----- elements/pfe-datetime/demo/pfe-datetime.js | 20 - elements/pfe-datetime/docs/pfe-datetime.md | 186 --------- elements/pfe-datetime/docs/preview.png | Bin 34956 -> 0 bytes elements/pfe-datetime/pfe-datetime.scss | 3 - elements/pfe-datetime/pfe-datetime.ts | 226 ----------- .../pfe-datetime/test/pfe-datetime.spec.ts | 118 ------ .../CHANGELOG.md | 2 +- .../LICENSE.txt | 0 elements/pfe-timestamp/README.md | 64 +++ .../custom-elements-manifest.config.js | 0 .../pfe-timestamp/demo/pfe-timestamp.html | 152 +++++++ elements/pfe-timestamp/demo/pfe-timestamp.js | 4 + elements/pfe-timestamp/docs/pfe-timestamp.md | 188 +++++++++ elements/pfe-timestamp/docs/preview.png | Bin 0 -> 13380 bytes .../package.json | 16 +- elements/pfe-timestamp/pfe-timestamp.scss | 13 + elements/pfe-timestamp/pfe-timestamp.ts | 95 +++++ .../test/pfe-timestamp.e2e.spec.ts} | 2 +- .../pfe-timestamp/test/pfe-timestamp.spec.ts | 290 ++++++++++++++ .../pfe-timestamp/timestamp--screenshot.png | Bin 0 -> 13380 bytes .../tsconfig.json | 1 + package-lock.json | 375 +++++++----------- tools/pfe-tools/test/vue-wrapper.ts | 2 +- tsconfig.settings.json | 12 +- 27 files changed, 957 insertions(+), 992 deletions(-) delete mode 100644 elements/pfe-datetime/README.md delete mode 100644 elements/pfe-datetime/datetime--screenshot.png delete mode 100644 elements/pfe-datetime/demo/pfe-datetime.html delete mode 100644 elements/pfe-datetime/demo/pfe-datetime.js delete mode 100644 elements/pfe-datetime/docs/pfe-datetime.md delete mode 100644 elements/pfe-datetime/docs/preview.png delete mode 100644 elements/pfe-datetime/pfe-datetime.scss delete mode 100644 elements/pfe-datetime/pfe-datetime.ts delete mode 100644 elements/pfe-datetime/test/pfe-datetime.spec.ts rename elements/{pfe-datetime => pfe-timestamp}/CHANGELOG.md (97%) rename elements/{pfe-datetime => pfe-timestamp}/LICENSE.txt (100%) create mode 100644 elements/pfe-timestamp/README.md rename elements/{pfe-datetime => pfe-timestamp}/custom-elements-manifest.config.js (100%) create mode 100644 elements/pfe-timestamp/demo/pfe-timestamp.html create mode 100644 elements/pfe-timestamp/demo/pfe-timestamp.js create mode 100644 elements/pfe-timestamp/docs/pfe-timestamp.md create mode 100644 elements/pfe-timestamp/docs/preview.png rename elements/{pfe-datetime => pfe-timestamp}/package.json (87%) create mode 100644 elements/pfe-timestamp/pfe-timestamp.scss create mode 100644 elements/pfe-timestamp/pfe-timestamp.ts rename elements/{pfe-datetime/test/pfe-datetime.e2e.spec.ts => pfe-timestamp/test/pfe-timestamp.e2e.spec.ts} (92%) create mode 100644 elements/pfe-timestamp/test/pfe-timestamp.spec.ts create mode 100644 elements/pfe-timestamp/timestamp--screenshot.png rename elements/{pfe-datetime => pfe-timestamp}/tsconfig.json (87%) diff --git a/elements/pfe-datetime/README.md b/elements/pfe-datetime/README.md deleted file mode 100644 index 723e5276eb..0000000000 --- a/elements/pfe-datetime/README.md +++ /dev/null @@ -1,83 +0,0 @@ -# PatternFly Elements Datetime - -This element enables developers to get a lot of the features from the [Intl Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) just by using attributes to set the format of the date and time they'd like to display. - -Read more about Datetime in the [PatternFly Elements Datetime documentation](https://patternflyelements.org/components/datetime) - -## Installation - -Load `` via CDN: - -```html - -``` - -Or, if you are using [NPM](https://npm.im), install it - -```bash -npm install @patternfly/pfe-datetime -``` - -Then once installed, import it to your application: - -```js -import '@patternfly/pfe-datetime'; -``` - -## Usage - -### Just the date: January 2, 2006 -```html - - Mon Jan 2 15:04:05 EST 2006 - -``` - -### With time: Monday, Jan 02, 2006, 3:04:05 PM -```html - - Mon Jan 2 15:04:05 EST 2006 - -``` - -### With an en-GB locale: Monday, 02 Jan 2006, 15:04:05 -You can use any locale here. -```html - - Mon Jan 2 15:04:05 EST 2006 - -``` - -### Time adverbial: 13 years ago -```html - - Mon Jan 2 15:04:05 EST 2006 - -``` - diff --git a/elements/pfe-datetime/datetime--screenshot.png b/elements/pfe-datetime/datetime--screenshot.png deleted file mode 100644 index 1b4d81f20c4d422896972019c5ddcd4466f43c4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91985 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 t`ags7pTYUh%K6XA`Oj - - - - - - - - - -

Unformatted

- - Mon Jan 2 15:04:05 EST 2006 - -
- -

Local

-

- Just date: - - Mon Jan 2 15:04:05 EST 2006 - -

-

- Just date (unix timestamp): - - Mon Jan 2 15:04:05 EST 2006 - - -

-

- With time: - - Mon Jan 2 15:04:05 EST 2006 - -

-

- With an en-GB locale: - - Mon Jan 2 15:04:05 EST 2006 - -

-

- With a es locale: - - Mon Jan 2 15:04:05 EST 2006 - -

-

- With time zone - - 2019-05-07T00:00:00.000Z - -

-
- -

Time Adverbial

-

- - Mon Jan 2 15:04:05 EST 2006 - -

-

- - Mon Jan 2 15:04:05 MST 2006 - -

-

- -

-

- -

-

- -

-

- - Mon Jan 2 15:04:05 MST 2006 - -

-

- - Mon Jan 2 15:04:05 MST 2006 - -

-
- -

Real-time updates

- - Mon Jan 2 15:04:05 EST 2006 - -
-
diff --git a/elements/pfe-datetime/demo/pfe-datetime.js b/elements/pfe-datetime/demo/pfe-datetime.js deleted file mode 100644 index da50bbd1e6..0000000000 --- a/elements/pfe-datetime/demo/pfe-datetime.js +++ /dev/null @@ -1,20 +0,0 @@ -import '@patternfly/pfe-band'; -import '@patternfly/pfe-datetime'; - -const root = document.querySelector('[data-demo="pfe-datetime"]')?.shadowRoot ?? document; - -const realtime = root.getElementById('realtime'); -const relative1 = root.getElementById('minutesago'); -const relative2 = root.getElementById('hoursuntil'); -const relative3 = root.getElementById('daysuntil'); - -relative1.setAttribute('datetime', new Date(Date.now() - 600000).toString()); -relative2.setAttribute('datetime', new Date(Date.now() + 6000000).toString()); -relative3.setAttribute('datetime', new Date(Date.now() + 200000000).toString()); - -function timer() { - realtime.setAttribute('datetime', new Date()); - requestAnimationFrame(timer); -} - -requestAnimationFrame(timer); diff --git a/elements/pfe-datetime/docs/pfe-datetime.md b/elements/pfe-datetime/docs/pfe-datetime.md deleted file mode 100644 index c5442719b9..0000000000 --- a/elements/pfe-datetime/docs/pfe-datetime.md +++ /dev/null @@ -1,186 +0,0 @@ -{% renderOverview %} - Datetime enables developers to get a lot of the features from the [Intl Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) just by using attributes to set the format of the date and time they'd like to display. - -
-
Current date:
-
- - -
-
With a Spanish language code of es:
-
- - -
-
Time adverbial:
-
- - -
-
-{% endrenderOverview %} - -{% band header="Usage" %} - ### Just the date - - Mon Jan 1 15:04:05 EST 2021 - - ```html - - Mon Jan 1 15:04:05 EST 2021 - - ``` - - ### With time - - Mon Jan 1 15:04:05 EST 2021 - - ```html - - Mon Jan 1 15:04:05 EST 2021 - - ``` - - ### With an en-GB locale - - Mon Jan 1 15:04:05 EST 2021 - - - ```html - - Mon Jan 1 15:04:05 EST 2021 - - ``` - - ### As UTC - - 2021-10-20T00:00:00.000Z - - - ```html - - 2021-10-20T00:00:00.000Z - - ``` - - ### Time adverbial - - Mon Jan 2 15:04:05 EST 2010 - - - ```html - - Mon Jan 2 15:04:05 EST 2010 - - ``` -{% endband %} - -{% renderSlots %}{% endrenderSlots %} - -{% renderAttributes %}{% endrenderAttributes %} - -{% renderProperties %}{% endrenderProperties %} - -{% renderMethods %}{% endrenderMethods %} - -{% renderEvents %}{% endrenderEvents %} - -{% renderCssCustomProperties %}{% endrenderCssCustomProperties %} - -{% renderCssParts %}{% endrenderCssParts %} - - diff --git a/elements/pfe-datetime/docs/preview.png b/elements/pfe-datetime/docs/preview.png deleted file mode 100644 index 39e8264d53adcd37934472ec27f7f2d5d757b520..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34956 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 LoLK(Lw;%r>wO>l$ diff --git a/elements/pfe-datetime/pfe-datetime.scss b/elements/pfe-datetime/pfe-datetime.scss deleted file mode 100644 index 1f0440ee0e..0000000000 --- a/elements/pfe-datetime/pfe-datetime.scss +++ /dev/null @@ -1,3 +0,0 @@ -:host { - display: inline; -} \ No newline at end of file diff --git a/elements/pfe-datetime/pfe-datetime.ts b/elements/pfe-datetime/pfe-datetime.ts deleted file mode 100644 index 0bcbc56906..0000000000 --- a/elements/pfe-datetime/pfe-datetime.ts +++ /dev/null @@ -1,226 +0,0 @@ -import { LitElement, html } from 'lit'; -import { customElement, property, state } from 'lit/decorators.js'; - -import { observed, pfelement } from '@patternfly/pfe-core/decorators.js'; -import { Logger } from '@patternfly/pfe-core/controllers/logger.js'; - -import style from './pfe-datetime.scss'; - -function dash(str: string): string { - return str - .replace(/[\w]([A-Z])/g, match => `${match[0]}-${match[1]}`) - .toLowerCase(); -} - -const INTL_CONFIGS = Object.entries({ - weekday: { - short: 'short', - long: 'long', - }, - day: { - 'numeric': 'numeric', - '2-digit': '2-digit', - }, - month: { - short: 'short', - long: 'long', - }, - year: { - 'numeric': 'numeric', - '2-digit': '2-digit', - }, - hour: { - 'numeric': 'numeric', - '2-digit': '2-digit', - }, - minute: { - 'numeric': 'numeric', - '2-digit': '2-digit', - }, - second: { - 'numeric': 'numeric', - '2-digit': '2-digit', - }, - timeZoneName: { - short: 'short', - long: 'long', - }, -}) as [keyof Required, object][]; - -/** - * @summary Display dates and times in a consistent format - * - * @attr {'narrow'|'short'|'long'} weekday - * @attr {'numeric'|'2-digit'|'narrow'|'short'|'long'} month - * @attr {'numeric'|'2-digit'} day - * @attr {'numeric'|'2-digit'} year - * @attr {'numeric'|'2-digit'} hour - * @attr {'numeric'|'2-digit'} minute - * @attr {'numeric'|'2-digit'} second - * @attr {'short'|'long'} time-zone-name - */ -@customElement('pfe-datetime') @pfelement() -export class PfeDatetime extends LitElement { - static readonly version = '{{version}}'; - - static readonly styles = [style]; - - /** - * The options for type are: - * - `local`: Shows a formatted time for the indicated locale if provided - * - `relative`: Shows a relative time (1 hour ago, 2 hours until) - */ - @property({ reflect: true }) type: 'local'|'relative' = 'local'; - - /** The value of this should be the same timestamp that you add to the light DOM. */ - @observed - @property({ reflect: true }) datetime = ''; - - /** - * A unix timestamp that will be converted for use in displaying the appropriate date. - * You would not use both datetime and timestamp, and the last updated will take precedence. - */ - @observed - @property({ type: Number, reflect: true }) timestamp?: number; - - /** Time Zone */ - @property({ reflect: true, attribute: 'time-zone' }) timeZone?: string; - - @state() private _datetime?: number; - - @state() private _timestamp?: number; - - private logger = new Logger(this); - - private get _dateTimeType() { - return this.type || 'local'; - } - - render() { - const formattedDate = this._getTypeString(); - return html` - ${formattedDate} - `; - } - - protected _datetimeChanged(_oldVal?: string, newVal?: string) { - if (!newVal || !Date.parse(newVal)) { - return; - } - - - if (Date.parse(newVal) && this._datetime === Date.parse(newVal)) { - return; - } - - - this.setDate(Date.parse(newVal)); - } - - protected _timestampChanged(_oldVal?: number, newVal?: number) { - if (newVal == null || this._timestamp === newVal) { - this.logger.log('early return'); - return; - } - - this._timestamp = newVal; - this.setDate(new Date(newVal * 1000)); - } - - private _getOptions(): Intl.DateTimeFormatOptions { - const options: Intl.DateTimeFormatOptions = {}; - - for (const [key, val] of INTL_CONFIGS) { - // converting the prop name from camel case to - // hyphenated so it matches the attribute. - // for example: timeZoneName to time-zone-name - const attributeName = dash(key); - - const configured = - this.getAttribute(attributeName) as string; - - if (configured) { - const value = val[configured as keyof typeof val]; - if (value) { - options[key] = value; - } - } - } - - if (this.timeZone) { - options.timeZone = this.timeZone; - } - - return options; - } - - private _getTypeString(): string { - if (this._datetime == null) { - return ''; - } - try { - const options = this._getOptions(); - const locale = this.getAttribute('locale') || navigator.language; - switch (this._dateTimeType) { - case 'local': - return new Intl.DateTimeFormat(locale, options).format(this._datetime); - case 'relative': - return this._getTimeRelative(this._datetime - Date.now()); - default: - return new Date(this._datetime ?? '').toLocaleString(); - } - } catch (e) { - return new Date(this._datetime ?? '').toLocaleString(); - } - } - - /** - * Based off of Github Relative Time - * https://github.com/github/time-elements/blob/master/src/relative-time.js - */ - private _getTimeRelative(ms: number) { - const tense = ms > 0 ? 'until' : 'ago'; - let str = 'just now'; - const s = Math.round(Math.abs(ms) / 1000); - const min = Math.round(s / 60); - const h = Math.round(min / 60); - const d = Math.round(h / 24); - const m = Math.round(d / 30); - const y = Math.round(m / 12); - if (m >= 18) { - str = `${y} years`; - } else if (m >= 12) { - str = 'a year'; - } else if (d >= 45) { - str = `${m} months`; - } else if (d >= 30) { - str = 'a month'; - } else if (h >= 36) { - str = `${d} days`; - } else if (h >= 24) { - str = 'a day'; - } else if (min >= 90) { - str = `${h} hours`; - } else if (min >= 45) { - str = 'an hour'; - } else if (s >= 90) { - str = `${min} minutes`; - } else if (s >= 45) { - str = 'a minute'; - } else if (s >= 10) { - str = `${s} seconds`; - } - - return str !== 'just now' ? `${str} ${tense}` : str; - } - - setDate(date: number|Date) { - this._datetime = date instanceof Date ? date.getTime() : date; - } -} - -declare global { - interface HTMLElementTagNameMap { - 'pfe-datetime': PfeDatetime; - } -} diff --git a/elements/pfe-datetime/test/pfe-datetime.spec.ts b/elements/pfe-datetime/test/pfe-datetime.spec.ts deleted file mode 100644 index 3935289a71..0000000000 --- a/elements/pfe-datetime/test/pfe-datetime.spec.ts +++ /dev/null @@ -1,118 +0,0 @@ -import { expect, html } from '@open-wc/testing'; -import { createFixture } from '@patternfly/pfe-tools/test/create-fixture.js'; - -import { PfeDatetime } from '@patternfly/pfe-datetime'; - -describe('', function() { - it('should upgrade', async function() { - const element = await createFixture(``); - expect(element, 'the should be an instance of PfeDatetime') - .to.be.an.instanceof(customElements.get('pfe-datetime')) - .and - .to.be.an.instanceof(PfeDatetime); - }); - - it('should show a simple date format if just a datetime attribute is provided', async function() { - const element = await createFixture(html` - - Mon Jan 2 15:04:05 EST 2006 - `); - const text = element.shadowRoot!.querySelector('span')!.textContent; - - expect(text, 'should just show a simple date').to.equal('1/2/2006'); - }); - - it('should show a formatted date', async function() { - const element = await createFixture(html` - - Mon Jan 2 15:04:05 EST 2006 - `); - const text = element.shadowRoot!.querySelector('span')!.textContent; - - expect(text, 'should show a formatted date').to.equal('January 2, 2006'); - }); - - it('should show a formatted date with time', async function() { - const element = await createFixture(html` - - Mon Jan 2 15:04:05 EST 2006 - `); - const { textContent } = element.shadowRoot!.querySelector('span')!; - const regex = /.*?, .*?, \d{4}, \d+:\d+:\d+ .{2}/; - - expect(regex.test(textContent!), 'should show a formatted date with time') - .to.be.true; - }); - - it('should show a relative time since the date', async function() { - const element = await createFixture(html` - - Mon Jan 2 15:04:05 EST 2006 - `); - const text = element.shadowRoot!.querySelector('span')!.textContent; - - await element.updateComplete; - - expect(text, 'should show a relative time since the date') - .to.match(/\d+ years ago/); - }); - - it('unix timestamp should convert and display properly', async function() { - const element = await createFixture(html` - - Mon Jan 2 15:04:05 EST 2006 - `); - const text = element.shadowRoot!.querySelector('span')!.textContent; - - expect(text, 'should show a relative time since the date').to.equal('1/2/2006'); - }); - - it('should show a formatted date with time for a different locale', async function() { - const element = await createFixture(html` - - Mon Jan 2 15:04:05 EST 2006 - `); - const text = element.shadowRoot!.querySelector('span')!.textContent; - - expect(text, 'should show a (locally) formatted date with time') - .to.equal('lunes, 02 de ene de 2006'); - }); - - it('should show formatted date for a specified time zone', async function() { - const element = await createFixture(` - - Mon Jan 2 15:04:05 EST 2006 - `); - const text = element.shadowRoot!.querySelector('span')!.textContent; - - expect(text, 'should show a formatted date for a specified time zone') - .to.equal('1/2/2006, UTC'); - }); -}); diff --git a/elements/pfe-datetime/CHANGELOG.md b/elements/pfe-timestamp/CHANGELOG.md similarity index 97% rename from elements/pfe-datetime/CHANGELOG.md rename to elements/pfe-timestamp/CHANGELOG.md index c99c3b55e0..03c3ba2855 100644 --- a/elements/pfe-datetime/CHANGELOG.md +++ b/elements/pfe-timestamp/CHANGELOG.md @@ -1,4 +1,4 @@ -# @patternfly/pfe-datetime +# @patternfly/pfe-timestamp ## 2.0.0-next.4 diff --git a/elements/pfe-datetime/LICENSE.txt b/elements/pfe-timestamp/LICENSE.txt similarity index 100% rename from elements/pfe-datetime/LICENSE.txt rename to elements/pfe-timestamp/LICENSE.txt diff --git a/elements/pfe-timestamp/README.md b/elements/pfe-timestamp/README.md new file mode 100644 index 0000000000..d1355cf7b0 --- /dev/null +++ b/elements/pfe-timestamp/README.md @@ -0,0 +1,64 @@ +# PatternFly Elements Timestamp + +A timestamp provides consistent formats for displaying date and time values. + +Read more about Datetime in the [PatternFly Elements Timestamp documentation](https://patternflyelements.org/components/timestamp) + +## Installation + +Load `` via CDN: + +```html + +``` + +Or, if you are using [NPM](https://npm.im), install it + +```bash +npm install @patternfly/pfe-timestamp +``` + +Then once installed, import it to your application: + +```js +import '@patternfly/pfe-timestamp'; +``` + +## Usage + +### Just the date: January 2, 2006 +```html + + +``` + +### With time: Monday, January 2, 2006 at 3:04:05 PM EST +```html + + +``` + +### With an en-GB locale: Monday, 2 January 2006 at 15:04:05 GMT-5 +You can use any locale here. +```html + + +``` + +### Relative time: 17 years ago +```html + + +``` + diff --git a/elements/pfe-datetime/custom-elements-manifest.config.js b/elements/pfe-timestamp/custom-elements-manifest.config.js similarity index 100% rename from elements/pfe-datetime/custom-elements-manifest.config.js rename to elements/pfe-timestamp/custom-elements-manifest.config.js diff --git a/elements/pfe-timestamp/demo/pfe-timestamp.html b/elements/pfe-timestamp/demo/pfe-timestamp.html new file mode 100644 index 0000000000..91baf7af4b --- /dev/null +++ b/elements/pfe-timestamp/demo/pfe-timestamp.html @@ -0,0 +1,152 @@ + + + + + + + + + +

Default

+

+ +

Basic formats

+

+

+

+

+

+ +

Custom format

+

+ +

Default tooltip

+

+ + + + +

+

+ + + + +

+ +

Custom tooltip

+

+ + + Last updated on + +

+

+ + Halloween + + +

+ +

Relative with tooltip

+

+ + + + +

+

+ + + + +

+ + +
diff --git a/elements/pfe-timestamp/demo/pfe-timestamp.js b/elements/pfe-timestamp/demo/pfe-timestamp.js new file mode 100644 index 0000000000..c1b85ec2a5 --- /dev/null +++ b/elements/pfe-timestamp/demo/pfe-timestamp.js @@ -0,0 +1,4 @@ +import '@patternfly/pfe-band'; +import '@patternfly/pfe-card'; +import '@patternfly/pfe-timestamp'; +import '@patternfly/pfe-tooltip'; diff --git a/elements/pfe-timestamp/docs/pfe-timestamp.md b/elements/pfe-timestamp/docs/pfe-timestamp.md new file mode 100644 index 0000000000..1de7be899d --- /dev/null +++ b/elements/pfe-timestamp/docs/pfe-timestamp.md @@ -0,0 +1,188 @@ +{% renderOverview %} + A timestamp provides consistent formats for displaying date and time values. + + + + + + + + + + + + + +
Default:
+
With a locale of es:
+
Relative time:
+ +{% endrenderOverview %} + +{% band header="Usage" %} + ### Default + By default, a timestamp will display the current date and time based on the current locale if the date attribute is not set. + + + ```html + + ``` + + ### Basic formats + The format of the displayed content can be customized by setting the `date-format` and/or `time-format` attributes. Setting only one of the attributes will display only the date or time, depending on which attribute is set. The possible options are "full", "long", "medium", and "short". + + You can also set the `display-suffix` attribute to display a custom suffix at the end of the displayed content. This will not override a timezone that is already displayed from the applied time format. + + + ```html + + ``` + + + ```html + + ``` + + + ```html + + ``` + + + ```html + + + ``` + + ### Custom format + The format of the displayed content can be further customized by setting the custom-format attributes. Read [datetime format options](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#options) for a list of options that can be set. + + + ```html + + + ``` + + ### Adding a tooltip + To add a tooltip that displays the timestamp content as a UTC time, you can wrap `pfe-timestamp` with `pfe-tooltip` and set the `is-utc` attribute on an additional `pfe-timestamp`. + + + + + + + ```html + + + + + ``` + + + + + + + ```html + + + + + ``` + + ### Relative time + To display relative time, set the `relative` attribute on `pfe-timestamp`. + + + + ```html + + ``` + + + + ```html + + ``` + + ### Relative time with a tooltip + To display relative time, set the `relative` attribute on `pfe-timestamp`. + + + + + + + ```html + + + + + ``` + + + + + + + ```html + + + + + ``` + + ### Set a locale to something other than the default locale + The default locale is inferred by the browser. To set the locale to something else, set the `locale` attribute. + + + + ```html + + ``` + + + + ```html + + ``` + + ### As a UTC timestamp + Set the `is-utc` attribute. + + + + ```html + + ``` +{% endband %} + +{% renderSlots %}{% endrenderSlots %} + +{% renderAttributes %}{% endrenderAttributes %} + +{% renderProperties %}{% endrenderProperties %} + +{% renderMethods %}{% endrenderMethods %} + +{% renderEvents %}{% endrenderEvents %} + +{% renderCssCustomProperties %}{% endrenderCssCustomProperties %} + +{% renderCssParts %}{% endrenderCssParts %} diff --git a/elements/pfe-timestamp/docs/preview.png b/elements/pfe-timestamp/docs/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..87de426b83e38f84452035d4c1993be6551382cd GIT binary patch literal 13380 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 E7k}nHH2?qr literal 0 HcmV?d00001 diff --git a/elements/pfe-datetime/package.json b/elements/pfe-timestamp/package.json similarity index 87% rename from elements/pfe-datetime/package.json rename to elements/pfe-timestamp/package.json index 7933c3f29c..ac9e777ebb 100644 --- a/elements/pfe-datetime/package.json +++ b/elements/pfe-timestamp/package.json @@ -1,15 +1,15 @@ { - "name": "@patternfly/pfe-datetime", + "name": "@patternfly/pfe-timestamp", "license": "MIT", "version": "2.0.0-next.4", - "description": "Datetime element for PFElements", + "description": "Timestamp element for PFElements", "customElements": "custom-elements.json", "type": "module", - "main": "./pfe-datetime.js", - "module": "./pfe-datetime.js", - "types": "./pfe-datetime.d.ts", + "main": "./pfe-timestamp.js", + "module": "./pfe-timestamp.js", + "types": "./pfe-timestamp.d.ts", "exports": { - ".": "./pfe-datetime.js", + ".": "./pfe-timestamp.js", "./*": "./*.js" }, "publishConfig": { @@ -25,7 +25,7 @@ "analyze": "cem analyze", "build": "run-s build:*", "build:clean": "npm run clean", - "build:esbuild": "node ../../scripts/build.js --include pfe-datetime", + "build:esbuild": "node ../../scripts/build.js --include pfe-timestamp", "build:analyze": "npm run analyze", "build:types": "tsc -b .", "🧑‍🔬-----TEST-------🧑‍🔬": "❓ Test packages", @@ -43,7 +43,7 @@ "repository": { "type": "git", "url": "github:patternfly/patternfly-elements", - "directory": "elements/pfe-datetime" + "directory": "elements/pfe-timestamp" }, "bugs": { "url": "https://github.com/patternfly/patternfly-elements/issues" diff --git a/elements/pfe-timestamp/pfe-timestamp.scss b/elements/pfe-timestamp/pfe-timestamp.scss new file mode 100644 index 0000000000..5c960fd577 --- /dev/null +++ b/elements/pfe-timestamp/pfe-timestamp.scss @@ -0,0 +1,13 @@ +:host { + display: inline; +} + +// @TODO: need a way to underline the text +// if a tooltip is surrounding pfe-timestamp +// :host(.has-tooltip) time { +// cursor: pointer; +// text-decoration: underline; +// text-decoration-style: dashed; +// text-decoration-thickness: 1px; +// text-underline-offset: 4px; +// } \ No newline at end of file diff --git a/elements/pfe-timestamp/pfe-timestamp.ts b/elements/pfe-timestamp/pfe-timestamp.ts new file mode 100644 index 0000000000..74f700d7cc --- /dev/null +++ b/elements/pfe-timestamp/pfe-timestamp.ts @@ -0,0 +1,95 @@ +import { LitElement, html } from 'lit'; +import { customElement, property } from 'lit/decorators.js'; + +import style from './pfe-timestamp.scss'; + +@customElement('pfe-timestamp') +export class PfeTimestamp extends LitElement { + static readonly version = '{{version}}'; + static readonly styles = [style]; + + @property({ reflect: true, type: String }) date: string = new Date().toLocaleString(); + @property({ reflect: true, attribute: 'date-format' }) dateFormat?: 'full' | 'long' | 'medium' | 'short'; + @property({ reflect: true, attribute: 'time-format' }) timeFormat?: 'full' | 'long' | 'medium' | 'short'; + @property({ attribute: 'custom-format', type: Object }) customFormat?: object; + @property({ reflect: true, attribute: 'display-suffix' }) displaySuffix?: string; + @property({ reflect: true }) locale?: string; + @property({ reflect: true, type: Boolean }) relative?: boolean; + @property({ reflect: true, attribute: 'is-utc', type: Boolean }) isUtc?: boolean; + @property({ + reflect: true, + attribute: 'is-12-hour', + converter: value => { + return !value || value === 'true'; + } + }) is12Hour?: boolean; + + render() { + const formatOptions = this.customFormat || { + ...(this.dateFormat && { dateStyle: this.dateFormat }), + ...(this.timeFormat && { timeStyle: this.timeFormat }), + ...(this.is12Hour !== undefined && { hour12: this.is12Hour }), + ...(this.isUtc && { timeZone: 'UTC' }) + }; + + if (!this.displaySuffix && this.isUtc) { + this.displaySuffix = 'UTC'; + } + + const _date = new Date(this.date); + const formattedDate = _date.toLocaleString(this.locale, formatOptions); + const isoDate = _date.toISOString(); + const timestampContent = this.relative ? this._getTimeRelative(_date) : `${formattedDate}${this.displaySuffix ? ` ${this.displaySuffix}` : ''}`; + + return html` + + `; + } + + /** + * Based off of Github Relative Time + * https://github.com/github/time-elements/blob/master/src/relative-time.js + */ + private _getTimeRelative(date: Date) { + const ms: number = date.getTime() - Date.now(); + const tense = ms > 0 ? 'until' : 'ago'; + let str = 'just now'; + const s = Math.round(Math.abs(ms) / 1000); + const min = Math.round(s / 60); + const h = Math.round(min / 60); + const d = Math.round(h / 24); + const m = Math.round(d / 30); + const y = Math.round(m / 12); + if (m >= 18) { + str = `${y} years`; + } else if (m >= 12) { + str = 'a year'; + } else if (d >= 45) { + str = `${m} months`; + } else if (d >= 30) { + str = 'a month'; + } else if (h >= 36) { + str = `${d} days`; + } else if (h >= 24) { + str = 'a day'; + } else if (min >= 90) { + str = `${h} hours`; + } else if (min >= 45) { + str = 'an hour'; + } else if (s >= 90) { + str = `${min} minutes`; + } else if (s >= 45) { + str = 'a minute'; + } else if (s >= 10) { + str = `${s} seconds`; + } + + return str !== 'just now' ? `${str} ${tense}` : str; + } +} + +declare global { + interface HTMLElementTagNameMap { + 'pfe-timestamp': PfeTimestamp; + } +} diff --git a/elements/pfe-datetime/test/pfe-datetime.e2e.spec.ts b/elements/pfe-timestamp/test/pfe-timestamp.e2e.spec.ts similarity index 92% rename from elements/pfe-datetime/test/pfe-datetime.e2e.spec.ts rename to elements/pfe-timestamp/test/pfe-timestamp.e2e.spec.ts index 0970dc4f4e..e040bdb484 100644 --- a/elements/pfe-datetime/test/pfe-datetime.e2e.spec.ts +++ b/elements/pfe-timestamp/test/pfe-timestamp.e2e.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; import { PfeDemoPage } from '@patternfly/pfe-tools/test/playwright/PfeDemoPage.js'; -const tagName = 'pfe-datetime'; +const tagName = 'pfe-timestamp'; test.describe(tagName, () => { test('snapshot', async ({ page }) => { diff --git a/elements/pfe-timestamp/test/pfe-timestamp.spec.ts b/elements/pfe-timestamp/test/pfe-timestamp.spec.ts new file mode 100644 index 0000000000..52c112506d --- /dev/null +++ b/elements/pfe-timestamp/test/pfe-timestamp.spec.ts @@ -0,0 +1,290 @@ +import { expect, html } from '@open-wc/testing'; +import { createFixture } from '@patternfly/pfe-tools/test/create-fixture.js'; +import { PfeTimestamp } from '@patternfly/pfe-timestamp'; + +describe('', function() { + it('should upgrade', async function() { + const element = await createFixture(``); + expect(element, 'the should be an instance of PfeTimestamp') + .to.be.an.instanceof(customElements.get('pfe-timestamp')) + .and + .to.be.an.instanceof(PfeTimestamp); + }); + + it('should show the current date by default with default formatting', async function() { + const element = await createFixture(html` + + `); + + const formattedDate = new Date().toLocaleString(); + const text = element.shadowRoot!.querySelector('time')!.textContent; + + expect(text, 'should show a default date and time').to.equal(formattedDate); + }); + + it('should set the correct ISO date on the datetime attribute in the time element', async () => { + const date = new Date().toString(); + const element = await createFixture(html` + + `); + + const datetimeAttributeValue = element.shadowRoot!.querySelector('time')!.getAttribute('datetime'); + const isoDate = new Date(element.date).toISOString(); + expect(datetimeAttributeValue).to.equal(isoDate); + }); + + it('should show a passed in date with default formatting', async () => { + const element = await createFixture(html` + + `); + + const text = element.shadowRoot!.querySelector('time')!.textContent; + expect(text, 'should show a passed in date with default formatting').to.equal('1/1/2022, 12:00:00 AM'); + }); + + it('should show custom formatting when date-format and time-format are passed in', async () => { + const element = await createFixture(html` + + `); + + const text = element.shadowRoot!.querySelector('time')!.textContent; + expect(text).to.equal('Saturday, January 1, 2022 at 12:00 AM'); + }); + + it('should show only a date when date-format is passed in', async () => { + const element = await createFixture(html` + + `); + + const text = element.shadowRoot!.querySelector('time')!.textContent; + expect(text).to.equal('Saturday, January 1, 2022'); + }); + + it('should show only time when time-format is passed in', async () => { + const element = await createFixture(html` + + `); + + const text = element.shadowRoot!.querySelector('time')!.textContent; + expect(text).to.equal('12:00 AM'); + }); + + it('should show custom formatting when custom-format is passed in', async () => { + const element = await createFixture(html` + + `); + + const text = element.shadowRoot!.querySelector('time')!.textContent; + expect(text).to.equal('Sat, Jan 1, 22, 12 AM'); + }); + + it('should show a custom suffix when display-suffix is passed in', async () => { + const element = await createFixture(html` + + `); + + const text = element.shadowRoot!.querySelector('time')!.textContent; + expect(text).to.equal('1/1/2022, 12:00:00 AM US Eastern'); + }); + + it('should show a 12 hour time when is-12-hour is passed in', async () => { + const element = await createFixture(html` + + `); + + const text = element.shadowRoot!.querySelector('time')!.textContent; + expect(text).to.equal('1/1/2022, 1:00:00 PM'); + }); + + it('should show a 24 hour time when is-12-hour is set to false', async () => { + const element = await createFixture(html` + + `); + + const text = element.shadowRoot!.querySelector('time')!.textContent; + expect(text).to.equal('1/1/2022, 13:00:00'); + }); + + it('should show with locale passed in', async () => { + const date = new Date(2022, 1, 1).toString(); + const element = await createFixture(html` + + `); + + const text = element.shadowRoot!.querySelector('time')!.textContent; + expect(text).to.equal('01/02/2022, 00:00:00'); + }); + + it('should show a 12 hour time by default for US locale', async () => { + const date = new Date(2022, 1, 1, 13, 0).toString(); + const element = await createFixture(html` + + `); + + const text = element.shadowRoot!.querySelector('time')!.textContent; + expect(text).to.equal('2/1/2022, 1:00:00 PM'); + }); + + it('should show a 24 hour time for US locale when is-12-hour is false', async () => { + const date = new Date(2022, 1, 1, 13, 0).toString(); + const element = await createFixture(html` + + `); + + const text = element.shadowRoot!.querySelector('time')!.textContent; + expect(text).to.equal('2/1/2022, 13:00:00'); + }); + + it('should show a 12 hour time for a 24 hour locale when is-12-hour is passed', async () => { + const date = new Date(2022, 1, 1, 13, 0).toString(); + const element = await createFixture(html` + + `); + + const text = element.shadowRoot!.querySelector('time')!.textContent; + expect(text).to.equal('01/02/2022, 1:00:00 pm'); + }); + + // it('should show the default tooltip content for the default variant', async () => { + // const date = new Date('1 Jan 2022 00:00:00 EST').toString(); + // const element = await createFixture(html` + // + // `); + + // const tooltipText = element.shadowRoot!.querySelector('span[slot="content"]')!.textContent; + // expect(tooltipText).to.equal('1/1/2022, 5:00:00 AM UTC'); + // }); + + // it('should show a custom tooltip suffix for the default variant', async () => { + // const date = new Date('1 Jan 2022 00:00:00 EST').toString(); + // const element = await createFixture(html` + // + // `); + + // const tooltipText = element.shadowRoot!.querySelector('span[slot="content"]')!.textContent; + // expect(tooltipText).to.equal('1/1/2022, 5:00:00 AM Coordinated Universal Time'); + // }); + + // it('should show custom tooltip content', async () => { + // const element = await createFixture(html` + // + // `); + + // const tooltipText = element.shadowRoot!.querySelector('span[slot="content"]')!.textContent; + // expect(tooltipText).to.equal('Custom tooltip content'); + // }); + + it('should show relative time', async () => { + const date = new Date(2015, 7, 9, 14, 57, 0); + const element = await createFixture(html` + + `); + + const text = element.shadowRoot!.querySelector('time')!.textContent; + expect(text).to.match(/\d+ years ago/); + }); + + // it('should show a simple date format if just a datetime attribute is provided', async function() { + // const element = await createFixture(html` + // + // Mon Jan 2 15:04:05 EST 2006 + // `); + // const text = element.shadowRoot!.querySelector('span')!.textContent; + + // expect(text, 'should just show a simple date').to.equal('1/2/2006'); + // }); + + // it('should show a formatted date', async function() { + // const element = await createFixture(html` + // + // Mon Jan 2 15:04:05 EST 2006 + // `); + // const text = element.shadowRoot!.querySelector('span')!.textContent; + + // expect(text, 'should show a formatted date').to.equal('January 2, 2006'); + // }); + + // it('should show a formatted date with time', async function() { + // const element = await createFixture(html` + // + // Mon Jan 2 15:04:05 EST 2006 + // `); + // const { textContent } = element.shadowRoot!.querySelector('span')!; + // const regex = /.*?, .*?, \d{4}, \d+:\d+:\d+ .{2}/; + + // expect(regex.test(textContent!), 'should show a formatted date with time') + // .to.be.true; + // }); + + // it('should show a relative time since the date', async function() { + // const element = await createFixture(html` + // + // Mon Jan 2 15:04:05 EST 2006 + // `); + // const text = element.shadowRoot!.querySelector('span')!.textContent; + + // await element.updateComplete; + + // expect(text, 'should show a relative time since the date') + // .to.match(/\d+ years ago/); + // }); + + // it('unix timestamp should convert and display properly', async function() { + // const element = await createFixture(html` + // + // Mon Jan 2 15:04:05 EST 2006 + // `); + // const text = element.shadowRoot!.querySelector('span')!.textContent; + + // expect(text, 'should show a relative time since the date').to.equal('1/2/2006'); + // }); + + // it('should show a formatted date with time for a different locale', async function() { + // const element = await createFixture(html` + // + // Mon Jan 2 15:04:05 EST 2006 + // `); + // const text = element.shadowRoot!.querySelector('span')!.textContent; + + // expect(text, 'should show a (locally) formatted date with time') + // .to.equal('lunes, 02 de ene de 2006'); + // }); + + // it('should show formatted date for a specified time zone', async function() { + // const element = await createFixture(` + // + // Mon Jan 2 15:04:05 EST 2006 + // `); + // const text = element.shadowRoot!.querySelector('span')!.textContent; + + // expect(text, 'should show a formatted date for a specified time zone') + // .to.equal('1/2/2006, UTC'); + // }); +}); diff --git a/elements/pfe-timestamp/timestamp--screenshot.png b/elements/pfe-timestamp/timestamp--screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..87de426b83e38f84452035d4c1993be6551382cd GIT binary patch literal 13380 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 E7k}nHH2?qr literal 0 HcmV?d00001 diff --git a/elements/pfe-datetime/tsconfig.json b/elements/pfe-timestamp/tsconfig.json similarity index 87% rename from elements/pfe-datetime/tsconfig.json rename to elements/pfe-timestamp/tsconfig.json index 0e4cb33328..7e9584dd36 100644 --- a/elements/pfe-datetime/tsconfig.json +++ b/elements/pfe-timestamp/tsconfig.json @@ -6,6 +6,7 @@ "rootDir": "." }, "references": [ + { "path": "../pfe-tooltip" }, { "path": "../../core/pfe-core" }, { "path": "../../tools/pfe-tools" } ] diff --git a/package-lock.json b/package-lock.json index 7930834c0a..d0dcbe56ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,7 +43,7 @@ }, "core/pfe-core": { "name": "@patternfly/pfe-core", - "version": "2.0.0-next.7", + "version": "2.0.0-next.8", "license": "MIT", "dependencies": { "@popperjs/core": "2.11.6", @@ -60,7 +60,7 @@ }, "core/pfe-styles": { "name": "@patternfly/pfe-styles", - "version": "2.0.0-next.2", + "version": "2.0.0-next.3", "license": "MIT", "devDependencies": { "@patternfly/pfe-sass": "^2.0.0-next.5" @@ -77,40 +77,22 @@ }, "elements/pfe-accordion": { "name": "@patternfly/pfe-accordion", - "version": "2.0.0-next.4", + "version": "2.0.0-next.5", "license": "MIT", "dependencies": { - "@patternfly/pfe-collapse": "^2.0.0-next.2", - "@patternfly/pfe-core": "^2.0.0-next.7", - "@patternfly/pfe-icon": "^2.0.0-next.3", + "@patternfly/pfe-collapse": "^2.0.0-next.3", + "@patternfly/pfe-core": "^2.0.0-next.8", + "@patternfly/pfe-icon": "^2.0.0-next.4", "lit": "2.3.0" } }, - "elements/pfe-accordion/node_modules/@patternfly/pfe-collapse": { - "version": "2.0.0-next.2", - "resolved": "https://registry.npmjs.org/@patternfly/pfe-collapse/-/pfe-collapse-2.0.0-next.2.tgz", - "integrity": "sha512-xGXUxG83JXqgEI7MN9GmmdDLur+v5Noz5YZhw0X2PrEDkFGIIVXfKe/Q4zF8R3nUvFHv99lXIfwj/yViDfHbgA==", - "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.4", - "lit": "^2.1.2" - } - }, - "elements/pfe-accordion/node_modules/@patternfly/pfe-icon": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/@patternfly/pfe-icon/-/pfe-icon-2.0.0-next.3.tgz", - "integrity": "sha512-WnuHPHVrD0Fxxud27erYe1fWBdwjM+5RmoiOIPDqZcCJmdMLGjeB31cOmiZC34tvMX5/TwheRWqdBkF0WRCaNw==", - "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.4", - "lit": "^2.1.2" - } - }, "elements/pfe-autocomplete": { "name": "@patternfly/pfe-autocomplete", - "version": "2.0.0-next.2", + "version": "2.0.0-next.3", "license": "MIT", "dependencies": { - "@patternfly/pfe-button": "^2.0.0-next.4", - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-button": "^2.0.0-next.5", + "@patternfly/pfe-core": "^2.0.0-next.8", "@patternfly/pfe-sass": "^2.0.0-next.5", "lit": "2.3.0" } @@ -125,91 +107,92 @@ }, "elements/pfe-avatar": { "name": "@patternfly/pfe-avatar", - "version": "2.0.0-next.1", + "version": "2.0.0-next.2", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "elements/pfe-badge": { "name": "@patternfly/pfe-badge", - "version": "2.0.0-next.1", + "version": "2.0.0-next.2", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "elements/pfe-band": { "name": "@patternfly/pfe-band", - "version": "2.0.0-next.2", + "version": "2.0.0-next.3", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "elements/pfe-button": { "name": "@patternfly/pfe-button", - "version": "2.0.0-next.4", + "version": "2.0.0-next.5", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", - "@patternfly/pfe-icon": "^2.0.0-next.3", - "@patternfly/pfe-progress-indicator": "^2.0.0-next.3", + "@patternfly/pfe-core": "^2.0.0-next.8", + "@patternfly/pfe-icon": "^2.0.0-next.4", + "@patternfly/pfe-progress-indicator": "^2.0.0-next.4", "lit": "2.3.0" } }, "elements/pfe-card": { "name": "@patternfly/pfe-card", - "version": "2.0.0-next.4", + "version": "2.0.0-next.5", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "elements/pfe-clipboard": { "name": "@patternfly/pfe-clipboard", - "version": "2.0.0-next.3", + "version": "2.0.0-next.4", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "elements/pfe-codeblock": { "name": "@patternfly/pfe-codeblock", - "version": "2.0.0-next.1", + "version": "2.0.0-next.2", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0", "prismjs": "1.28.0" } }, "elements/pfe-collapse": { "name": "@patternfly/pfe-collapse", - "version": "2.0.0-next.2", + "version": "2.0.0-next.3", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "elements/pfe-cta": { "name": "@patternfly/pfe-cta", - "version": "2.0.0-next.4", + "version": "2.0.0-next.5", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "elements/pfe-datetime": { "name": "@patternfly/pfe-datetime", "version": "2.0.0-next.3", + "extraneous": true, "license": "MIT", "dependencies": { "@patternfly/pfe-core": "^2.0.0-next.7", @@ -218,207 +201,178 @@ }, "elements/pfe-dropdown": { "name": "@patternfly/pfe-dropdown", - "version": "2.0.0-next.2", + "version": "2.0.0-next.3", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "elements/pfe-health-index": { "name": "@patternfly/pfe-health-index", - "version": "2.0.0-next.2", + "version": "2.0.0-next.3", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "elements/pfe-icon": { "name": "@patternfly/pfe-icon", - "version": "2.0.0-next.3", + "version": "2.0.0-next.4", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "elements/pfe-icon-panel": { "name": "@patternfly/pfe-icon-panel", - "version": "2.0.0-next.2", + "version": "2.0.0-next.3", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", - "@patternfly/pfe-icon": "^2.0.0-next.3", + "@patternfly/pfe-core": "^2.0.0-next.8", + "@patternfly/pfe-icon": "^2.0.0-next.4", "lit": "2.3.0" } }, - "elements/pfe-icon-panel/node_modules/@patternfly/pfe-icon": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/@patternfly/pfe-icon/-/pfe-icon-2.0.0-next.3.tgz", - "integrity": "sha512-WnuHPHVrD0Fxxud27erYe1fWBdwjM+5RmoiOIPDqZcCJmdMLGjeB31cOmiZC34tvMX5/TwheRWqdBkF0WRCaNw==", - "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.4", - "lit": "^2.1.2" - } - }, "elements/pfe-jump-links": { "name": "@patternfly/pfe-jump-links", - "version": "2.0.0-next.4", + "version": "2.0.0-next.5", "license": "MIT", "dependencies": { - "@patternfly/pfe-accordion": "^2.0.0-next.4", - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-accordion": "^2.0.0-next.5", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, - "elements/pfe-jump-links/node_modules/@patternfly/pfe-accordion": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/@patternfly/pfe-accordion/-/pfe-accordion-2.0.0-next.4.tgz", - "integrity": "sha512-bZxbUexdT/qv5L1rDmVvi/ffWNqHNJaAKzY+EopeACBVOh+2fOky5gNeyxleOU1wjBRE6wsX4FqcVnxas8wH0w==", - "dependencies": { - "@patternfly/pfe-collapse": "^2.0.0-next.2", - "@patternfly/pfe-core": "^2.0.0-next.4", - "@patternfly/pfe-icon": "^2.0.0-next.2", - "lit": "^2.1.2" - } - }, "elements/pfe-label": { "name": "@patternfly/pfe-label", - "version": "1.0.0-next.3", + "version": "1.0.0-next.4", "license": "MIT", "dependencies": { - "@patternfly/pfe-button": "^2.0.0-next.4", - "@patternfly/pfe-core": "^2.0.0-next.7", - "@patternfly/pfe-icon": "^2.0.0-next.3", + "@patternfly/pfe-button": "^2.0.0-next.5", + "@patternfly/pfe-core": "^2.0.0-next.8", + "@patternfly/pfe-icon": "^2.0.0-next.4", "lit": "2.3.0" } }, - "elements/pfe-label/node_modules/@patternfly/pfe-button": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/@patternfly/pfe-button/-/pfe-button-2.0.0-next.4.tgz", - "integrity": "sha512-8nCS1RPUNsqEfbeHqowr1HjqYNSYp++NAFrfqk928tYRCNK6OXvcU1sHag2lrWjMc5ZqET+OViws86DcrarB7Q==", - "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.6", - "lit": "^2.1.2" - } - }, - "elements/pfe-label/node_modules/@patternfly/pfe-icon": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/@patternfly/pfe-icon/-/pfe-icon-2.0.0-next.3.tgz", - "integrity": "sha512-WnuHPHVrD0Fxxud27erYe1fWBdwjM+5RmoiOIPDqZcCJmdMLGjeB31cOmiZC34tvMX5/TwheRWqdBkF0WRCaNw==", - "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.4", - "lit": "^2.1.2" - } - }, "elements/pfe-markdown": { "name": "@patternfly/pfe-markdown", - "version": "2.0.0-next.2", + "version": "2.0.0-next.3", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0", "marked": "4.0.18" } }, "elements/pfe-modal": { "name": "@patternfly/pfe-modal", - "version": "2.0.0-next.4", + "version": "2.0.0-next.5", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "elements/pfe-number": { "name": "@patternfly/pfe-number", - "version": "2.0.0-next.2", + "version": "2.0.0-next.3", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0", "numeral": "2.0.6" } }, "elements/pfe-page-status": { "name": "@patternfly/pfe-page-status", - "version": "2.0.0-next.3", + "version": "2.0.0-next.4", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "elements/pfe-primary-detail": { "name": "@patternfly/pfe-primary-detail", - "version": "2.0.0-next.2", + "version": "2.0.0-next.3", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "elements/pfe-progress-indicator": { "name": "@patternfly/pfe-progress-indicator", - "version": "2.0.0-next.3", + "version": "2.0.0-next.4", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "elements/pfe-progress-steps": { "name": "@patternfly/pfe-progress-steps", - "version": "2.0.0-next.1", + "version": "2.0.0-next.2", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "elements/pfe-readtime": { "name": "@patternfly/pfe-readtime", - "version": "2.0.0-next.2", + "version": "2.0.0-next.3", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "elements/pfe-select": { "name": "@patternfly/pfe-select", - "version": "2.0.0-next.3", + "version": "2.0.0-next.4", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "elements/pfe-tabs": { "name": "@patternfly/pfe-tabs", - "version": "2.0.0-next.2", + "version": "2.0.0-next.3", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", + "lit": "2.3.0" + } + }, + "elements/pfe-timestamp": { + "version": "2.0.0-next.4", + "license": "MIT", + "dependencies": { + "@patternfly/pfe-core": "^2.0.0-next.8", + "@patternfly/pfe-tooltip": "^1.1.0-next.3", "lit": "2.3.0" } }, "elements/pfe-toast": { "name": "@patternfly/pfe-toast", - "version": "2.0.0-next.2", + "version": "2.0.0-next.3", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "elements/pfe-tooltip": { "name": "@patternfly/pfe-tooltip", - "version": "1.1.0-next.2", + "version": "1.1.0-next.3", "license": "MIT", "dependencies": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, @@ -4148,10 +4102,6 @@ "resolved": "elements/pfe-cta", "link": true }, - "node_modules/@patternfly/pfe-datetime": { - "resolved": "elements/pfe-datetime", - "link": true - }, "node_modules/@patternfly/pfe-dropdown": { "resolved": "elements/pfe-dropdown", "link": true @@ -4224,6 +4174,10 @@ "resolved": "elements/pfe-tabs", "link": true }, + "node_modules/@patternfly/pfe-timestamp": { + "resolved": "elements/pfe-timestamp", + "link": true + }, "node_modules/@patternfly/pfe-toast": { "resolved": "elements/pfe-toast", "link": true @@ -25461,7 +25415,7 @@ }, "tools/create-element": { "name": "@patternfly/create-element", - "version": "1.0.0-next.12", + "version": "1.0.0-next.13", "license": "MIT", "dependencies": { "case": "1.6.3", @@ -25590,7 +25544,7 @@ }, "tools/eslint-config": { "name": "@patternfly/eslint-config-elements", - "version": "0.0.2-next.3", + "version": "0.0.2-next.4", "license": "MIT", "dependencies": { "@types/eslint": "8.4.5", @@ -25607,14 +25561,14 @@ } }, "tools/netlify-plugin-github-actions": { - "version": "0.0.1", + "version": "0.0.2-next.0", "dependencies": { "@octokit/core": "4.0.5" } }, "tools/pfe-tools": { "name": "@patternfly/pfe-tools", - "version": "1.0.0-next.27", + "version": "1.0.0-next.29", "license": "MIT", "dependencies": { "@11ty/eleventy": "1.0.2", @@ -29316,37 +29270,17 @@ "@patternfly/pfe-accordion": { "version": "file:elements/pfe-accordion", "requires": { - "@patternfly/pfe-collapse": "^2.0.0-next.2", - "@patternfly/pfe-core": "^2.0.0-next.7", - "@patternfly/pfe-icon": "^2.0.0-next.3", + "@patternfly/pfe-collapse": "^2.0.0-next.3", + "@patternfly/pfe-core": "^2.0.0-next.8", + "@patternfly/pfe-icon": "^2.0.0-next.4", "lit": "2.3.0" - }, - "dependencies": { - "@patternfly/pfe-collapse": { - "version": "2.0.0-next.2", - "resolved": "https://registry.npmjs.org/@patternfly/pfe-collapse/-/pfe-collapse-2.0.0-next.2.tgz", - "integrity": "sha512-xGXUxG83JXqgEI7MN9GmmdDLur+v5Noz5YZhw0X2PrEDkFGIIVXfKe/Q4zF8R3nUvFHv99lXIfwj/yViDfHbgA==", - "requires": { - "@patternfly/pfe-core": "^2.0.0-next.4", - "lit": "^2.1.2" - } - }, - "@patternfly/pfe-icon": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/@patternfly/pfe-icon/-/pfe-icon-2.0.0-next.3.tgz", - "integrity": "sha512-WnuHPHVrD0Fxxud27erYe1fWBdwjM+5RmoiOIPDqZcCJmdMLGjeB31cOmiZC34tvMX5/TwheRWqdBkF0WRCaNw==", - "requires": { - "@patternfly/pfe-core": "^2.0.0-next.4", - "lit": "^2.1.2" - } - } } }, "@patternfly/pfe-autocomplete": { "version": "file:elements/pfe-autocomplete", "requires": { - "@patternfly/pfe-button": "^2.0.0-next.4", - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-button": "^2.0.0-next.5", + "@patternfly/pfe-core": "^2.0.0-next.8", "@patternfly/pfe-sass": "^2.0.0-next.5", "lit": "2.3.0" }, @@ -29364,51 +29298,51 @@ "@patternfly/pfe-avatar": { "version": "file:elements/pfe-avatar", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "@patternfly/pfe-badge": { "version": "file:elements/pfe-badge", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "@patternfly/pfe-band": { "version": "file:elements/pfe-band", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "@patternfly/pfe-button": { "version": "file:elements/pfe-button", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", - "@patternfly/pfe-icon": "^2.0.0-next.3", - "@patternfly/pfe-progress-indicator": "^2.0.0-next.3", + "@patternfly/pfe-core": "^2.0.0-next.8", + "@patternfly/pfe-icon": "^2.0.0-next.4", + "@patternfly/pfe-progress-indicator": "^2.0.0-next.4", "lit": "2.3.0" } }, "@patternfly/pfe-card": { "version": "file:elements/pfe-card", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "@patternfly/pfe-clipboard": { "version": "file:elements/pfe-clipboard", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "@patternfly/pfe-codeblock": { "version": "file:elements/pfe-codeblock", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0", "prismjs": "1.28.0" } @@ -29416,7 +29350,7 @@ "@patternfly/pfe-collapse": { "version": "file:elements/pfe-collapse", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, @@ -29430,111 +29364,60 @@ "@patternfly/pfe-cta": { "version": "file:elements/pfe-cta", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", - "lit": "2.3.0" - } - }, - "@patternfly/pfe-datetime": { - "version": "file:elements/pfe-datetime", - "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "@patternfly/pfe-dropdown": { "version": "file:elements/pfe-dropdown", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "@patternfly/pfe-health-index": { "version": "file:elements/pfe-health-index", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "@patternfly/pfe-icon": { "version": "file:elements/pfe-icon", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "@patternfly/pfe-icon-panel": { "version": "file:elements/pfe-icon-panel", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", - "@patternfly/pfe-icon": "^2.0.0-next.3", + "@patternfly/pfe-core": "^2.0.0-next.8", + "@patternfly/pfe-icon": "^2.0.0-next.4", "lit": "2.3.0" - }, - "dependencies": { - "@patternfly/pfe-icon": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/@patternfly/pfe-icon/-/pfe-icon-2.0.0-next.3.tgz", - "integrity": "sha512-WnuHPHVrD0Fxxud27erYe1fWBdwjM+5RmoiOIPDqZcCJmdMLGjeB31cOmiZC34tvMX5/TwheRWqdBkF0WRCaNw==", - "requires": { - "@patternfly/pfe-core": "^2.0.0-next.4", - "lit": "^2.1.2" - } - } } }, "@patternfly/pfe-jump-links": { "version": "file:elements/pfe-jump-links", "requires": { - "@patternfly/pfe-accordion": "^2.0.0-next.4", - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-accordion": "^2.0.0-next.5", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" - }, - "dependencies": { - "@patternfly/pfe-accordion": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/@patternfly/pfe-accordion/-/pfe-accordion-2.0.0-next.4.tgz", - "integrity": "sha512-bZxbUexdT/qv5L1rDmVvi/ffWNqHNJaAKzY+EopeACBVOh+2fOky5gNeyxleOU1wjBRE6wsX4FqcVnxas8wH0w==", - "requires": { - "@patternfly/pfe-collapse": "^2.0.0-next.2", - "@patternfly/pfe-core": "^2.0.0-next.4", - "@patternfly/pfe-icon": "^2.0.0-next.2", - "lit": "^2.1.2" - } - } } }, "@patternfly/pfe-label": { "version": "file:elements/pfe-label", "requires": { - "@patternfly/pfe-button": "^2.0.0-next.4", - "@patternfly/pfe-core": "^2.0.0-next.7", - "@patternfly/pfe-icon": "^2.0.0-next.3", + "@patternfly/pfe-button": "^2.0.0-next.5", + "@patternfly/pfe-core": "^2.0.0-next.8", + "@patternfly/pfe-icon": "^2.0.0-next.4", "lit": "2.3.0" - }, - "dependencies": { - "@patternfly/pfe-button": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/@patternfly/pfe-button/-/pfe-button-2.0.0-next.4.tgz", - "integrity": "sha512-8nCS1RPUNsqEfbeHqowr1HjqYNSYp++NAFrfqk928tYRCNK6OXvcU1sHag2lrWjMc5ZqET+OViws86DcrarB7Q==", - "requires": { - "@patternfly/pfe-core": "^2.0.0-next.6", - "lit": "^2.1.2" - } - }, - "@patternfly/pfe-icon": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/@patternfly/pfe-icon/-/pfe-icon-2.0.0-next.3.tgz", - "integrity": "sha512-WnuHPHVrD0Fxxud27erYe1fWBdwjM+5RmoiOIPDqZcCJmdMLGjeB31cOmiZC34tvMX5/TwheRWqdBkF0WRCaNw==", - "requires": { - "@patternfly/pfe-core": "^2.0.0-next.4", - "lit": "^2.1.2" - } - } } }, "@patternfly/pfe-markdown": { "version": "file:elements/pfe-markdown", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0", "marked": "4.0.18" } @@ -29542,14 +29425,14 @@ "@patternfly/pfe-modal": { "version": "file:elements/pfe-modal", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "@patternfly/pfe-number": { "version": "file:elements/pfe-number", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0", "numeral": "2.0.6" } @@ -29557,35 +29440,35 @@ "@patternfly/pfe-page-status": { "version": "file:elements/pfe-page-status", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "@patternfly/pfe-primary-detail": { "version": "file:elements/pfe-primary-detail", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "@patternfly/pfe-progress-indicator": { "version": "file:elements/pfe-progress-indicator", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "@patternfly/pfe-progress-steps": { "version": "file:elements/pfe-progress-steps", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, "@patternfly/pfe-readtime": { "version": "file:elements/pfe-readtime", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, @@ -29598,7 +29481,7 @@ "@patternfly/pfe-select": { "version": "file:elements/pfe-select", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, @@ -29622,14 +29505,22 @@ "@patternfly/pfe-tabs": { "version": "file:elements/pfe-tabs", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", + "lit": "2.3.0" + } + }, + "@patternfly/pfe-timestamp": { + "version": "file:elements/pfe-timestamp", + "requires": { + "@patternfly/pfe-core": "^2.0.0-next.8", + "@patternfly/pfe-tooltip": "^1.1.0-next.3", "lit": "2.3.0" } }, "@patternfly/pfe-toast": { "version": "file:elements/pfe-toast", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, @@ -29937,7 +29828,7 @@ "@patternfly/pfe-tooltip": { "version": "file:elements/pfe-tooltip", "requires": { - "@patternfly/pfe-core": "^2.0.0-next.7", + "@patternfly/pfe-core": "^2.0.0-next.8", "lit": "2.3.0" } }, diff --git a/tools/pfe-tools/test/vue-wrapper.ts b/tools/pfe-tools/test/vue-wrapper.ts index b35daead2e..4deb53025f 100644 --- a/tools/pfe-tools/test/vue-wrapper.ts +++ b/tools/pfe-tools/test/vue-wrapper.ts @@ -46,7 +46,6 @@ export async function fixture( 'pfe-codeblock', 'pfe-collapse', 'pfe-cta', - 'pfe-datetime', 'pfe-dropdown', 'pfe-health-index', 'pfe-icon', @@ -62,6 +61,7 @@ export async function fixture( 'pfe-readtime', 'pfe-select', 'pfe-tabs', + 'pfe-timestamp', 'pfe-toast', ]; diff --git a/tsconfig.settings.json b/tsconfig.settings.json index 904d377fef..2c4ad4c2b1 100644 --- a/tsconfig.settings.json +++ b/tsconfig.settings.json @@ -101,9 +101,6 @@ "@patternfly/pfe-cta": [ "./elements/pfe-cta/pfe-cta.ts" ], - "@patternfly/pfe-datetime": [ - "./elements/pfe-datetime/pfe-datetime.ts" - ], "@patternfly/pfe-dropdown": [ "./elements/pfe-dropdown/pfe-dropdown.ts" ], @@ -152,6 +149,9 @@ "@patternfly/pfe-tabs": [ "./elements/pfe-tabs/pfe-tabs.ts" ], + "@patternfly/pfe-timestamp": [ + "./elements/pfe-timestamp/pfe-timestamp.ts" + ], "@patternfly/pfe-toast": [ "./elements/pfe-toast/pfe-toast.ts" ], @@ -203,9 +203,6 @@ { "path": "./elements/pfe-cta" }, - { - "path": "./elements/pfe-datetime" - }, { "path": "./elements/pfe-dropdown" }, @@ -257,6 +254,9 @@ { "path": "./elements/pfe-label" }, + { + "path": "./elements/pfe-timestamp" + }, { "path": "./elements/pfe-tooltip" } From 9f46937887d3efc79f80b75b2741b08f3ecf1a21 Mon Sep 17 00:00:00 2001 From: Kyle Buchanan Date: Fri, 9 Sep 2022 11:55:57 -0400 Subject: [PATCH 02/18] test(timestamp): attempting to fix tests --- elements/pfe-timestamp/test/pfe-timestamp.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/elements/pfe-timestamp/test/pfe-timestamp.spec.ts b/elements/pfe-timestamp/test/pfe-timestamp.spec.ts index 52c112506d..bb71d9d845 100644 --- a/elements/pfe-timestamp/test/pfe-timestamp.spec.ts +++ b/elements/pfe-timestamp/test/pfe-timestamp.spec.ts @@ -35,7 +35,7 @@ describe('', function() { it('should show a passed in date with default formatting', async () => { const element = await createFixture(html` - + `); const text = element.shadowRoot!.querySelector('time')!.textContent; From 885dcb3a4d7f1067448cd0284b7eac1f3a793eae Mon Sep 17 00:00:00 2001 From: Kyle Buchanan Date: Sun, 11 Sep 2022 10:40:14 -0400 Subject: [PATCH 03/18] test(timestamp): removing GMT from spec file --- elements/pfe-timestamp/test/pfe-timestamp.spec.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/elements/pfe-timestamp/test/pfe-timestamp.spec.ts b/elements/pfe-timestamp/test/pfe-timestamp.spec.ts index bb71d9d845..72c7d73684 100644 --- a/elements/pfe-timestamp/test/pfe-timestamp.spec.ts +++ b/elements/pfe-timestamp/test/pfe-timestamp.spec.ts @@ -44,7 +44,7 @@ describe('', function() { it('should show custom formatting when date-format and time-format are passed in', async () => { const element = await createFixture(html` - + `); const text = element.shadowRoot!.querySelector('time')!.textContent; @@ -53,7 +53,7 @@ describe('', function() { it('should show only a date when date-format is passed in', async () => { const element = await createFixture(html` - + `); const text = element.shadowRoot!.querySelector('time')!.textContent; @@ -62,7 +62,7 @@ describe('', function() { it('should show only time when time-format is passed in', async () => { const element = await createFixture(html` - + `); const text = element.shadowRoot!.querySelector('time')!.textContent; @@ -71,7 +71,7 @@ describe('', function() { it('should show custom formatting when custom-format is passed in', async () => { const element = await createFixture(html` - + `); const text = element.shadowRoot!.querySelector('time')!.textContent; @@ -80,7 +80,7 @@ describe('', function() { it('should show a custom suffix when display-suffix is passed in', async () => { const element = await createFixture(html` - + `); const text = element.shadowRoot!.querySelector('time')!.textContent; @@ -89,7 +89,7 @@ describe('', function() { it('should show a 12 hour time when is-12-hour is passed in', async () => { const element = await createFixture(html` - + `); const text = element.shadowRoot!.querySelector('time')!.textContent; @@ -98,7 +98,7 @@ describe('', function() { it('should show a 24 hour time when is-12-hour is set to false', async () => { const element = await createFixture(html` - + `); const text = element.shadowRoot!.querySelector('time')!.textContent; From 4ad2f0ac1196bb913a678ddf903c110012e96e85 Mon Sep 17 00:00:00 2001 From: Kyle Buchanan Date: Sun, 11 Sep 2022 10:46:49 -0400 Subject: [PATCH 04/18] docs(timestamp): updating README file --- elements/pfe-timestamp/docs/pfe-timestamp.md | 23 -------------------- 1 file changed, 23 deletions(-) diff --git a/elements/pfe-timestamp/docs/pfe-timestamp.md b/elements/pfe-timestamp/docs/pfe-timestamp.md index 1de7be899d..25f4614f63 100644 --- a/elements/pfe-timestamp/docs/pfe-timestamp.md +++ b/elements/pfe-timestamp/docs/pfe-timestamp.md @@ -1,29 +1,6 @@ {% renderOverview %} A timestamp provides consistent formats for displaying date and time values. - - - - - - - - - - - -
Default:
With a locale of es:
Relative time:
From 49613c7359310be2b1d9c982a792cb23534dbf53 Mon Sep 17 00:00:00 2001 From: Kyle Buchanan Date: Mon, 26 Sep 2022 16:37:03 -0400 Subject: [PATCH 05/18] chore(timestamp): adding a changelog for pfe-timestamp --- .changeset/eighty-news-double.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/eighty-news-double.md diff --git a/.changeset/eighty-news-double.md b/.changeset/eighty-news-double.md new file mode 100644 index 0000000000..caa3920d87 --- /dev/null +++ b/.changeset/eighty-news-double.md @@ -0,0 +1,6 @@ +--- +"@patternfly/pfe-timestamp": minor +"@patternfly/pfe-tools": minor +--- + +Changing from pfe-datetime to pfe-timestamp From 8a6fd1d655f6cb367697db4d2c13e29bba92b4ef Mon Sep 17 00:00:00 2001 From: Benny Powers Date: Wed, 28 Sep 2022 12:23:20 +0300 Subject: [PATCH 06/18] fix(timestamp): allow for underline in tooltip --- elements/pfe-timestamp/pfe-timestamp.scss | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/elements/pfe-timestamp/pfe-timestamp.scss b/elements/pfe-timestamp/pfe-timestamp.scss index 5c960fd577..91def3703c 100644 --- a/elements/pfe-timestamp/pfe-timestamp.scss +++ b/elements/pfe-timestamp/pfe-timestamp.scss @@ -1,13 +1,8 @@ :host { - display: inline; + display: inline; } -// @TODO: need a way to underline the text -// if a tooltip is surrounding pfe-timestamp -// :host(.has-tooltip) time { -// cursor: pointer; -// text-decoration: underline; -// text-decoration-style: dashed; -// text-decoration-thickness: 1px; -// text-underline-offset: 4px; -// } \ No newline at end of file +time { + text-decoration: var(--_timestamp-text-decoration, none); + text-underline-offset: var(--_timestamp-text-underline-offset, initial); +} From b8bc429a9fc214b09ed70192b4e7473d6bb1a835 Mon Sep 17 00:00:00 2001 From: Benny Powers Date: Wed, 28 Sep 2022 12:23:51 +0300 Subject: [PATCH 07/18] test(timestamp): use mocha context --- .../pfe-timestamp/test/pfe-timestamp.spec.ts | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/elements/pfe-timestamp/test/pfe-timestamp.spec.ts b/elements/pfe-timestamp/test/pfe-timestamp.spec.ts index 72c7d73684..d85cb85e16 100644 --- a/elements/pfe-timestamp/test/pfe-timestamp.spec.ts +++ b/elements/pfe-timestamp/test/pfe-timestamp.spec.ts @@ -22,7 +22,7 @@ describe('', function() { expect(text, 'should show a default date and time').to.equal(formattedDate); }); - it('should set the correct ISO date on the datetime attribute in the time element', async () => { + it('should set the correct ISO date on the datetime attribute in the time element', async function() { const date = new Date().toString(); const element = await createFixture(html` @@ -33,7 +33,7 @@ describe('', function() { expect(datetimeAttributeValue).to.equal(isoDate); }); - it('should show a passed in date with default formatting', async () => { + it('should show a passed in date with default formatting', async function() { const element = await createFixture(html` `); @@ -42,7 +42,7 @@ describe('', function() { expect(text, 'should show a passed in date with default formatting').to.equal('1/1/2022, 12:00:00 AM'); }); - it('should show custom formatting when date-format and time-format are passed in', async () => { + it('should show custom formatting when date-format and time-format are passed in', async function() { const element = await createFixture(html` `); @@ -51,7 +51,7 @@ describe('', function() { expect(text).to.equal('Saturday, January 1, 2022 at 12:00 AM'); }); - it('should show only a date when date-format is passed in', async () => { + it('should show only a date when date-format is passed in', async function() { const element = await createFixture(html` `); @@ -60,7 +60,7 @@ describe('', function() { expect(text).to.equal('Saturday, January 1, 2022'); }); - it('should show only time when time-format is passed in', async () => { + it('should show only time when time-format is passed in', async function() { const element = await createFixture(html` `); @@ -69,7 +69,7 @@ describe('', function() { expect(text).to.equal('12:00 AM'); }); - it('should show custom formatting when custom-format is passed in', async () => { + it('should show custom formatting when custom-format is passed in', async function() { const element = await createFixture(html` `); @@ -78,7 +78,7 @@ describe('', function() { expect(text).to.equal('Sat, Jan 1, 22, 12 AM'); }); - it('should show a custom suffix when display-suffix is passed in', async () => { + it('should show a custom suffix when display-suffix is passed in', async function() { const element = await createFixture(html` `); @@ -87,7 +87,7 @@ describe('', function() { expect(text).to.equal('1/1/2022, 12:00:00 AM US Eastern'); }); - it('should show a 12 hour time when is-12-hour is passed in', async () => { + it('should show a 12 hour time when is-12-hour is passed in', async function() { const element = await createFixture(html` `); @@ -96,7 +96,7 @@ describe('', function() { expect(text).to.equal('1/1/2022, 1:00:00 PM'); }); - it('should show a 24 hour time when is-12-hour is set to false', async () => { + it('should show a 24 hour time when is-12-hour is set to false', async function() { const element = await createFixture(html` `); @@ -105,7 +105,7 @@ describe('', function() { expect(text).to.equal('1/1/2022, 13:00:00'); }); - it('should show with locale passed in', async () => { + it('should show with locale passed in', async function() { const date = new Date(2022, 1, 1).toString(); const element = await createFixture(html` @@ -115,7 +115,7 @@ describe('', function() { expect(text).to.equal('01/02/2022, 00:00:00'); }); - it('should show a 12 hour time by default for US locale', async () => { + it('should show a 12 hour time by default for US locale', async function() { const date = new Date(2022, 1, 1, 13, 0).toString(); const element = await createFixture(html` @@ -125,7 +125,7 @@ describe('', function() { expect(text).to.equal('2/1/2022, 1:00:00 PM'); }); - it('should show a 24 hour time for US locale when is-12-hour is false', async () => { + it('should show a 24 hour time for US locale when is-12-hour is false', async function() { const date = new Date(2022, 1, 1, 13, 0).toString(); const element = await createFixture(html` @@ -135,7 +135,7 @@ describe('', function() { expect(text).to.equal('2/1/2022, 13:00:00'); }); - it('should show a 12 hour time for a 24 hour locale when is-12-hour is passed', async () => { + it('should show a 12 hour time for a 24 hour locale when is-12-hour is passed', async function() { const date = new Date(2022, 1, 1, 13, 0).toString(); const element = await createFixture(html` @@ -145,7 +145,7 @@ describe('', function() { expect(text).to.equal('01/02/2022, 1:00:00 pm'); }); - // it('should show the default tooltip content for the default variant', async () => { + // it('should show the default tooltip content for the default variant', async function() { // const date = new Date('1 Jan 2022 00:00:00 EST').toString(); // const element = await createFixture(html` // @@ -155,7 +155,7 @@ describe('', function() { // expect(tooltipText).to.equal('1/1/2022, 5:00:00 AM UTC'); // }); - // it('should show a custom tooltip suffix for the default variant', async () => { + // it('should show a custom tooltip suffix for the default variant', async function() { // const date = new Date('1 Jan 2022 00:00:00 EST').toString(); // const element = await createFixture(html` // @@ -165,7 +165,7 @@ describe('', function() { // expect(tooltipText).to.equal('1/1/2022, 5:00:00 AM Coordinated Universal Time'); // }); - // it('should show custom tooltip content', async () => { + // it('should show custom tooltip content', async function() { // const element = await createFixture(html` // // `); @@ -174,10 +174,10 @@ describe('', function() { // expect(tooltipText).to.equal('Custom tooltip content'); // }); - it('should show relative time', async () => { + it('should show relative time', async function() { const date = new Date(2015, 7, 9, 14, 57, 0); const element = await createFixture(html` - + `); const text = element.shadowRoot!.querySelector('time')!.textContent; From 2eea0922fd117f6baff45c56dbaad01be8ccbe42 Mon Sep 17 00:00:00 2001 From: Benny Powers Date: Wed, 28 Sep 2022 12:33:10 +0300 Subject: [PATCH 08/18] feat(tooltip): style slotted timestamps --- elements/pfe-tooltip/BaseTooltip.ts | 1 + elements/pfe-tooltip/pfe-tooltip.scss | 9 +++++++++ elements/pfe-tooltip/pfe-tooltip.ts | 4 ++++ 3 files changed, 14 insertions(+) create mode 100644 elements/pfe-tooltip/pfe-tooltip.scss diff --git a/elements/pfe-tooltip/BaseTooltip.ts b/elements/pfe-tooltip/BaseTooltip.ts index 6663515318..a7636344a2 100644 --- a/elements/pfe-tooltip/BaseTooltip.ts +++ b/elements/pfe-tooltip/BaseTooltip.ts @@ -10,6 +10,7 @@ import style from './BaseTooltip.scss'; export abstract class BaseTooltip extends LitElement { static readonly styles = [style]; + /** The placement of the tooltip, relative to the invoking content */ @property({ reflect: true }) position: Placement = 'top'; diff --git a/elements/pfe-tooltip/pfe-tooltip.scss b/elements/pfe-tooltip/pfe-tooltip.scss new file mode 100644 index 0000000000..1ef3a8cc0b --- /dev/null +++ b/elements/pfe-tooltip/pfe-tooltip.scss @@ -0,0 +1,9 @@ +:host { + --_timestamp-text-decoration: underline dashed 1px; + --_timestamp-text-underline-offset: 4px; +} + +#content { + --_timestamp-text-decoration: none; + --_timestamp-text-underline-offset: initial; +} diff --git a/elements/pfe-tooltip/pfe-tooltip.ts b/elements/pfe-tooltip/pfe-tooltip.ts index 963693d872..ec5e559010 100644 --- a/elements/pfe-tooltip/pfe-tooltip.ts +++ b/elements/pfe-tooltip/pfe-tooltip.ts @@ -1,6 +1,8 @@ import { customElement } from 'lit/decorators.js'; import { BaseTooltip } from './BaseTooltip.js'; +import styles from './pfe-tooltip.scss'; + /** * Patternfly tooltip * @@ -92,6 +94,8 @@ import { BaseTooltip } from './BaseTooltip.js'; @customElement('pfe-tooltip') export class PfeTooltip extends BaseTooltip { static readonly version = '{{version}}'; + + static readonly styles = [...BaseTooltip.styles, styles]; } declare global { From a735a483360086b37d641b6345614aea29eb4ecd Mon Sep 17 00:00:00 2001 From: Benny Powers Date: Wed, 28 Sep 2022 12:33:10 +0300 Subject: [PATCH 09/18] feat(tooltip): style slotted timestamps --- .changeset/big-monkeys-jam.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 .changeset/big-monkeys-jam.md diff --git a/.changeset/big-monkeys-jam.md b/.changeset/big-monkeys-jam.md new file mode 100644 index 0000000000..50eebaa47b --- /dev/null +++ b/.changeset/big-monkeys-jam.md @@ -0,0 +1,24 @@ +--- +"@patternfly/pfe-tooltip": minor +--- + +Adds styles to slotted timestamps. + +```html + + + Last updated on + + + + +``` From ffe66c2ddf5859915bb7f8c3ac865d92a088a88f Mon Sep 17 00:00:00 2001 From: Benny Powers Date: Wed, 28 Sep 2022 12:45:47 +0300 Subject: [PATCH 10/18] fix(timestamp): rename is-utc to utc --- elements/pfe-timestamp/demo/pfe-timestamp.html | 6 +++--- elements/pfe-timestamp/docs/pfe-timestamp.md | 16 ++++++++-------- elements/pfe-timestamp/pfe-timestamp.ts | 7 ++++--- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/elements/pfe-timestamp/demo/pfe-timestamp.html b/elements/pfe-timestamp/demo/pfe-timestamp.html index 91baf7af4b..70e25be0ba 100644 --- a/elements/pfe-timestamp/demo/pfe-timestamp.html +++ b/elements/pfe-timestamp/demo/pfe-timestamp.html @@ -24,13 +24,13 @@

Default tooltip

- +

- +

@@ -38,7 +38,7 @@

Custom tooltip

- Last updated on + Last updated on

diff --git a/elements/pfe-timestamp/docs/pfe-timestamp.md b/elements/pfe-timestamp/docs/pfe-timestamp.md index 25f4614f63..3a2c7f06cc 100644 --- a/elements/pfe-timestamp/docs/pfe-timestamp.md +++ b/elements/pfe-timestamp/docs/pfe-timestamp.md @@ -57,29 +57,29 @@ ``` ### Adding a tooltip - To add a tooltip that displays the timestamp content as a UTC time, you can wrap `pfe-timestamp` with `pfe-tooltip` and set the `is-utc` attribute on an additional `pfe-timestamp`. + To add a tooltip that displays the timestamp content as a UTC time, you can wrap `pfe-timestamp` with `pfe-tooltip` and set the `utc` attribute on an additional `pfe-timestamp`. - + ```html - + ``` - + ```html - + ``` @@ -141,12 +141,12 @@ ``` ### As a UTC timestamp - Set the `is-utc` attribute. + Set the `utc` attribute. - + ```html - + ``` {% endband %} diff --git a/elements/pfe-timestamp/pfe-timestamp.ts b/elements/pfe-timestamp/pfe-timestamp.ts index 74f700d7cc..9bc2fbad88 100644 --- a/elements/pfe-timestamp/pfe-timestamp.ts +++ b/elements/pfe-timestamp/pfe-timestamp.ts @@ -15,7 +15,8 @@ export class PfeTimestamp extends LitElement { @property({ reflect: true, attribute: 'display-suffix' }) displaySuffix?: string; @property({ reflect: true }) locale?: string; @property({ reflect: true, type: Boolean }) relative?: boolean; - @property({ reflect: true, attribute: 'is-utc', type: Boolean }) isUtc?: boolean; + + @property({ reflect: true, type: Boolean }) utc?: boolean; @property({ reflect: true, attribute: 'is-12-hour', @@ -29,10 +30,10 @@ export class PfeTimestamp extends LitElement { ...(this.dateFormat && { dateStyle: this.dateFormat }), ...(this.timeFormat && { timeStyle: this.timeFormat }), ...(this.is12Hour !== undefined && { hour12: this.is12Hour }), - ...(this.isUtc && { timeZone: 'UTC' }) + ...(this.utc && { timeZone: 'UTC' }) }; - if (!this.displaySuffix && this.isUtc) { + if (!this.displaySuffix && this.utc) { this.displaySuffix = 'UTC'; } From d1cce22e08edb38c07bc0b7b70628f784122afa2 Mon Sep 17 00:00:00 2001 From: Benny Powers Date: Wed, 28 Sep 2022 12:54:01 +0300 Subject: [PATCH 11/18] fix(timestamp): remove custom-format attribute --- .../pfe-timestamp/demo/pfe-timestamp.html | 12 ++++++++- elements/pfe-timestamp/docs/pfe-timestamp.md | 25 +++++++++++++++---- elements/pfe-timestamp/pfe-timestamp.ts | 16 +++++++++--- .../pfe-timestamp/test/pfe-timestamp.spec.ts | 25 +++++++++++-------- 4 files changed, 58 insertions(+), 20 deletions(-) diff --git a/elements/pfe-timestamp/demo/pfe-timestamp.html b/elements/pfe-timestamp/demo/pfe-timestamp.html index 70e25be0ba..fffe729be8 100644 --- a/elements/pfe-timestamp/demo/pfe-timestamp.html +++ b/elements/pfe-timestamp/demo/pfe-timestamp.html @@ -18,7 +18,17 @@

Basic formats

Custom format

-

+

+ +

Default tooltip

diff --git a/elements/pfe-timestamp/docs/pfe-timestamp.md b/elements/pfe-timestamp/docs/pfe-timestamp.md index 3a2c7f06cc..3ff486292c 100644 --- a/elements/pfe-timestamp/docs/pfe-timestamp.md +++ b/elements/pfe-timestamp/docs/pfe-timestamp.md @@ -48,12 +48,27 @@ ### Custom format The format of the displayed content can be further customized by setting the custom-format attributes. Read [datetime format options](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#options) for a list of options that can be set. - + + ```html - - + + ``` ### Adding a tooltip diff --git a/elements/pfe-timestamp/pfe-timestamp.ts b/elements/pfe-timestamp/pfe-timestamp.ts index 9bc2fbad88..0a1f499d61 100644 --- a/elements/pfe-timestamp/pfe-timestamp.ts +++ b/elements/pfe-timestamp/pfe-timestamp.ts @@ -9,27 +9,35 @@ export class PfeTimestamp extends LitElement { static readonly styles = [style]; @property({ reflect: true, type: String }) date: string = new Date().toLocaleString(); + @property({ reflect: true, attribute: 'date-format' }) dateFormat?: 'full' | 'long' | 'medium' | 'short'; + @property({ reflect: true, attribute: 'time-format' }) timeFormat?: 'full' | 'long' | 'medium' | 'short'; - @property({ attribute: 'custom-format', type: Object }) customFormat?: object; + + @property({ attribute: false }) customFormat?: object; + @property({ reflect: true, attribute: 'display-suffix' }) displaySuffix?: string; + @property({ reflect: true }) locale?: string; + @property({ reflect: true, type: Boolean }) relative?: boolean; @property({ reflect: true, type: Boolean }) utc?: boolean; + @property({ reflect: true, - attribute: 'is-12-hour', + attribute: 'hour-12', converter: value => { return !value || value === 'true'; } - }) is12Hour?: boolean; + }) hour12?: boolean; render() { + const { hour12 } = this; const formatOptions = this.customFormat || { ...(this.dateFormat && { dateStyle: this.dateFormat }), ...(this.timeFormat && { timeStyle: this.timeFormat }), - ...(this.is12Hour !== undefined && { hour12: this.is12Hour }), + ...{ hour12 }, ...(this.utc && { timeZone: 'UTC' }) }; diff --git a/elements/pfe-timestamp/test/pfe-timestamp.spec.ts b/elements/pfe-timestamp/test/pfe-timestamp.spec.ts index d85cb85e16..71d81eaa12 100644 --- a/elements/pfe-timestamp/test/pfe-timestamp.spec.ts +++ b/elements/pfe-timestamp/test/pfe-timestamp.spec.ts @@ -69,11 +69,16 @@ describe('', function() { expect(text).to.equal('12:00 AM'); }); - it('should show custom formatting when custom-format is passed in', async function() { + it('should show custom formatting when customFormat is passed in', async function() { const element = await createFixture(html` - + `); - const text = element.shadowRoot!.querySelector('time')!.textContent; expect(text).to.equal('Sat, Jan 1, 22, 12 AM'); }); @@ -87,7 +92,7 @@ describe('', function() { expect(text).to.equal('1/1/2022, 12:00:00 AM US Eastern'); }); - it('should show a 12 hour time when is-12-hour is passed in', async function() { + it('should show a 12 hour time when hour-12 is passed in', async function() { const element = await createFixture(html` `); @@ -96,9 +101,9 @@ describe('', function() { expect(text).to.equal('1/1/2022, 1:00:00 PM'); }); - it('should show a 24 hour time when is-12-hour is set to false', async function() { + it('should show a 24 hour time when hour-12 is set to false', async function() { const element = await createFixture(html` - + `); const text = element.shadowRoot!.querySelector('time')!.textContent; @@ -125,20 +130,20 @@ describe('', function() { expect(text).to.equal('2/1/2022, 1:00:00 PM'); }); - it('should show a 24 hour time for US locale when is-12-hour is false', async function() { + it('should show a 24 hour time for US locale when hour-12 is false', async function() { const date = new Date(2022, 1, 1, 13, 0).toString(); const element = await createFixture(html` - + `); const text = element.shadowRoot!.querySelector('time')!.textContent; expect(text).to.equal('2/1/2022, 13:00:00'); }); - it('should show a 12 hour time for a 24 hour locale when is-12-hour is passed', async function() { + it('should show a 12 hour time for a 24 hour locale when hour-12 is passed', async function() { const date = new Date(2022, 1, 1, 13, 0).toString(); const element = await createFixture(html` - + `); const text = element.shadowRoot!.querySelector('time')!.textContent; From e20ce11ab1f2bd3f1449aef59ba9fdc848f6af7a Mon Sep 17 00:00:00 2001 From: Benny Powers Date: Wed, 28 Sep 2022 12:54:53 +0300 Subject: [PATCH 12/18] refactor(timestamp): use ecma private field --- elements/pfe-timestamp/pfe-timestamp.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/elements/pfe-timestamp/pfe-timestamp.ts b/elements/pfe-timestamp/pfe-timestamp.ts index 0a1f499d61..314710f3e2 100644 --- a/elements/pfe-timestamp/pfe-timestamp.ts +++ b/elements/pfe-timestamp/pfe-timestamp.ts @@ -48,7 +48,7 @@ export class PfeTimestamp extends LitElement { const _date = new Date(this.date); const formattedDate = _date.toLocaleString(this.locale, formatOptions); const isoDate = _date.toISOString(); - const timestampContent = this.relative ? this._getTimeRelative(_date) : `${formattedDate}${this.displaySuffix ? ` ${this.displaySuffix}` : ''}`; + const timestampContent = this.relative ? this.#getTimeRelative(_date) : `${formattedDate}${this.displaySuffix ? ` ${this.displaySuffix}` : ''}`; return html` @@ -59,7 +59,7 @@ export class PfeTimestamp extends LitElement { * Based off of Github Relative Time * https://github.com/github/time-elements/blob/master/src/relative-time.js */ - private _getTimeRelative(date: Date) { + #getTimeRelative(date: Date) { const ms: number = date.getTime() - Date.now(); const tense = ms > 0 ? 'until' : 'ago'; let str = 'just now'; From b04cf1efb6db2534469083bba8a24870cadaee1e Mon Sep 17 00:00:00 2001 From: Kyle Buchanan Date: Wed, 28 Sep 2022 10:25:06 -0400 Subject: [PATCH 13/18] chore(timestamp): changing quotation marks in examples --- .../pfe-timestamp/demo/pfe-timestamp.html | 10 +++++----- elements/pfe-timestamp/docs/pfe-timestamp.md | 20 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/elements/pfe-timestamp/demo/pfe-timestamp.html b/elements/pfe-timestamp/demo/pfe-timestamp.html index fffe729be8..29361051e1 100644 --- a/elements/pfe-timestamp/demo/pfe-timestamp.html +++ b/elements/pfe-timestamp/demo/pfe-timestamp.html @@ -22,11 +22,11 @@

Custom format

diff --git a/elements/pfe-timestamp/docs/pfe-timestamp.md b/elements/pfe-timestamp/docs/pfe-timestamp.md index 3ff486292c..fdbcc08909 100644 --- a/elements/pfe-timestamp/docs/pfe-timestamp.md +++ b/elements/pfe-timestamp/docs/pfe-timestamp.md @@ -51,22 +51,22 @@ ```html ``` From 9494babb68a575d5d537191d1d7184bcfae9e7c2 Mon Sep 17 00:00:00 2001 From: Kyle Buchanan Date: Wed, 28 Sep 2022 10:59:19 -0400 Subject: [PATCH 14/18] fix(timestamp): fixing merge conflict in package-lock.json --- package-lock.json | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9a8b670a5e..f3069c6f39 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29837,18 +29837,6 @@ "lit": "2.3.0" } }, -<<<<<<< HEAD - "@patternfly/pfe-cta": { - "version": "file:elements/pfe-cta", -======= - "@patternfly/pfe-datetime": { - "version": "file:elements/pfe-datetime", ->>>>>>> main - "requires": { - "@patternfly/pfe-core": "^2.0.0-next.8", - "lit": "2.3.0" - } - }, "@patternfly/pfe-dropdown": { "version": "file:elements/pfe-dropdown", "requires": { From b6f8f8feba905c90a5ff00cac39906381d473613 Mon Sep 17 00:00:00 2001 From: Kyle Buchanan Date: Tue, 25 Oct 2022 09:28:29 -0400 Subject: [PATCH 15/18] chore(timestamp): fixing docs and removing the type for date --- .../pfe-timestamp/demo/pfe-timestamp.html | 88 ------------------- elements/pfe-timestamp/docs/pfe-timestamp.md | 7 +- elements/pfe-timestamp/pfe-timestamp.ts | 2 +- 3 files changed, 5 insertions(+), 92 deletions(-) diff --git a/elements/pfe-timestamp/demo/pfe-timestamp.html b/elements/pfe-timestamp/demo/pfe-timestamp.html index 29361051e1..95c5c9cb90 100644 --- a/elements/pfe-timestamp/demo/pfe-timestamp.html +++ b/elements/pfe-timestamp/demo/pfe-timestamp.html @@ -71,92 +71,4 @@

Relative with tooltip

- - diff --git a/elements/pfe-timestamp/docs/pfe-timestamp.md b/elements/pfe-timestamp/docs/pfe-timestamp.md index fdbcc08909..ee46d58549 100644 --- a/elements/pfe-timestamp/docs/pfe-timestamp.md +++ b/elements/pfe-timestamp/docs/pfe-timestamp.md @@ -1,10 +1,11 @@ {% renderOverview %} A timestamp provides consistent formats for displaying date and time values. -
Default:
-
With a locale of es:
-
Relative time:
+ Default:**** + With a locale of es:**** + + Relative time:**** {% endrenderOverview %} {% band header="Usage" %} diff --git a/elements/pfe-timestamp/pfe-timestamp.ts b/elements/pfe-timestamp/pfe-timestamp.ts index 314710f3e2..553378ab9d 100644 --- a/elements/pfe-timestamp/pfe-timestamp.ts +++ b/elements/pfe-timestamp/pfe-timestamp.ts @@ -8,7 +8,7 @@ export class PfeTimestamp extends LitElement { static readonly version = '{{version}}'; static readonly styles = [style]; - @property({ reflect: true, type: String }) date: string = new Date().toLocaleString(); + @property({ reflect: true }) date = new Date().toLocaleString(); @property({ reflect: true, attribute: 'date-format' }) dateFormat?: 'full' | 'long' | 'medium' | 'short'; From 07439db50a8a8b68b2e9a10f12cd587967497a77 Mon Sep 17 00:00:00 2001 From: Kyle Buchanan Date: Tue, 25 Oct 2022 10:05:03 -0400 Subject: [PATCH 16/18] chore(timestamp): removing commented out tests --- .../pfe-timestamp/test/pfe-timestamp.spec.ts | 133 ------------------ 1 file changed, 133 deletions(-) diff --git a/elements/pfe-timestamp/test/pfe-timestamp.spec.ts b/elements/pfe-timestamp/test/pfe-timestamp.spec.ts index 71d81eaa12..d11419c05a 100644 --- a/elements/pfe-timestamp/test/pfe-timestamp.spec.ts +++ b/elements/pfe-timestamp/test/pfe-timestamp.spec.ts @@ -150,35 +150,6 @@ describe('', function() { expect(text).to.equal('01/02/2022, 1:00:00 pm'); }); - // it('should show the default tooltip content for the default variant', async function() { - // const date = new Date('1 Jan 2022 00:00:00 EST').toString(); - // const element = await createFixture(html` - // - // `); - - // const tooltipText = element.shadowRoot!.querySelector('span[slot="content"]')!.textContent; - // expect(tooltipText).to.equal('1/1/2022, 5:00:00 AM UTC'); - // }); - - // it('should show a custom tooltip suffix for the default variant', async function() { - // const date = new Date('1 Jan 2022 00:00:00 EST').toString(); - // const element = await createFixture(html` - // - // `); - - // const tooltipText = element.shadowRoot!.querySelector('span[slot="content"]')!.textContent; - // expect(tooltipText).to.equal('1/1/2022, 5:00:00 AM Coordinated Universal Time'); - // }); - - // it('should show custom tooltip content', async function() { - // const element = await createFixture(html` - // - // `); - - // const tooltipText = element.shadowRoot!.querySelector('span[slot="content"]')!.textContent; - // expect(tooltipText).to.equal('Custom tooltip content'); - // }); - it('should show relative time', async function() { const date = new Date(2015, 7, 9, 14, 57, 0); const element = await createFixture(html` @@ -188,108 +159,4 @@ describe('', function() { const text = element.shadowRoot!.querySelector('time')!.textContent; expect(text).to.match(/\d+ years ago/); }); - - // it('should show a simple date format if just a datetime attribute is provided', async function() { - // const element = await createFixture(html` - // - // Mon Jan 2 15:04:05 EST 2006 - // `); - // const text = element.shadowRoot!.querySelector('span')!.textContent; - - // expect(text, 'should just show a simple date').to.equal('1/2/2006'); - // }); - - // it('should show a formatted date', async function() { - // const element = await createFixture(html` - // - // Mon Jan 2 15:04:05 EST 2006 - // `); - // const text = element.shadowRoot!.querySelector('span')!.textContent; - - // expect(text, 'should show a formatted date').to.equal('January 2, 2006'); - // }); - - // it('should show a formatted date with time', async function() { - // const element = await createFixture(html` - // - // Mon Jan 2 15:04:05 EST 2006 - // `); - // const { textContent } = element.shadowRoot!.querySelector('span')!; - // const regex = /.*?, .*?, \d{4}, \d+:\d+:\d+ .{2}/; - - // expect(regex.test(textContent!), 'should show a formatted date with time') - // .to.be.true; - // }); - - // it('should show a relative time since the date', async function() { - // const element = await createFixture(html` - // - // Mon Jan 2 15:04:05 EST 2006 - // `); - // const text = element.shadowRoot!.querySelector('span')!.textContent; - - // await element.updateComplete; - - // expect(text, 'should show a relative time since the date') - // .to.match(/\d+ years ago/); - // }); - - // it('unix timestamp should convert and display properly', async function() { - // const element = await createFixture(html` - // - // Mon Jan 2 15:04:05 EST 2006 - // `); - // const text = element.shadowRoot!.querySelector('span')!.textContent; - - // expect(text, 'should show a relative time since the date').to.equal('1/2/2006'); - // }); - - // it('should show a formatted date with time for a different locale', async function() { - // const element = await createFixture(html` - // - // Mon Jan 2 15:04:05 EST 2006 - // `); - // const text = element.shadowRoot!.querySelector('span')!.textContent; - - // expect(text, 'should show a (locally) formatted date with time') - // .to.equal('lunes, 02 de ene de 2006'); - // }); - - // it('should show formatted date for a specified time zone', async function() { - // const element = await createFixture(` - // - // Mon Jan 2 15:04:05 EST 2006 - // `); - // const text = element.shadowRoot!.querySelector('span')!.textContent; - - // expect(text, 'should show a formatted date for a specified time zone') - // .to.equal('1/2/2006, UTC'); - // }); }); From 25d9d8e019bd4164789526ab00364205de98f38d Mon Sep 17 00:00:00 2001 From: Kyle Buchanan Date: Tue, 25 Oct 2022 10:55:26 -0400 Subject: [PATCH 17/18] Update elements/pfe-timestamp/package.json Co-authored-by: Benny Powers --- elements/pfe-timestamp/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/elements/pfe-timestamp/package.json b/elements/pfe-timestamp/package.json index ac9e777ebb..55f7cce24f 100644 --- a/elements/pfe-timestamp/package.json +++ b/elements/pfe-timestamp/package.json @@ -2,7 +2,7 @@ "name": "@patternfly/pfe-timestamp", "license": "MIT", "version": "2.0.0-next.4", - "description": "Timestamp element for PFElements", + "description": "PatternFly Timestamp element", "customElements": "custom-elements.json", "type": "module", "main": "./pfe-timestamp.js", From 8eb32add0422fdb4fa71542adf8af233abf49f11 Mon Sep 17 00:00:00 2001 From: Kyle Buchanan Date: Tue, 25 Oct 2022 11:22:36 -0400 Subject: [PATCH 18/18] docs(timestamp): updating overview markup --- elements/pfe-timestamp/docs/pfe-timestamp.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/elements/pfe-timestamp/docs/pfe-timestamp.md b/elements/pfe-timestamp/docs/pfe-timestamp.md index ee46d58549..f22889c734 100644 --- a/elements/pfe-timestamp/docs/pfe-timestamp.md +++ b/elements/pfe-timestamp/docs/pfe-timestamp.md @@ -1,11 +1,11 @@ {% renderOverview %} A timestamp provides consistent formats for displaying date and time values. - Default:**** + Default: - With a locale of es:**** + With a locale of es: - Relative time:**** + Relative time: {% endrenderOverview %} {% band header="Usage" %}