Skip to content

Commit b1e546b

Browse files
authored
feat: pfe-datetime adding time zone attribute (#881)
* feat: pfe-datetime adding time zone attribute Closes #880 * changelog update
1 parent a43a44a commit b1e546b

File tree

6 files changed

+74
-3
lines changed

6 files changed

+74
-3
lines changed

CHANGELOG-prerelease.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## Prerelease 48 ( TBD )
2+
3+
- []() feat: pfe-datetime adding time zone attribute #881
4+
15
## Prerelease 47 ( 2020-05-14 )
26

37
- [0323eab](https://github.com/patternfly/patternfly-elements/commit/0323eab2d9dd944cb51dee263056566fe1a14a57) fix: pfe-navigtation-item shouldn't add duplicative event listeners #870

elements/pfe-datetime/demo/index.html

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,15 @@ <h3>Local</h3>
114114
Mon Jan 2 15:04:05 EST 2006
115115
</pfe-datetime>
116116
</p>
117+
<p>
118+
<strong>With time zone</strong>
119+
<pfe-datetime
120+
datetime="2019-05-07T00:00:00.000Z"
121+
time-zone="UTC"
122+
time-zone-name="short">
123+
2019-05-07T00:00:00.000Z
124+
</pfe-datetime>
125+
</p>
117126
</div>
118127
<div>
119128
<h3>Time Adverbial</h3>

elements/pfe-datetime/demo/pfe-datetime.story.js

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,18 @@ stories.add(PfeDatetime.tag, () => {
7979
enum: ["numeric", "2-digit"]
8080
},
8181
locale: {
82-
title: "Timezone",
82+
title: "Locale",
8383
type: "string",
8484
default: "en-US"
85+
},
86+
"time-zone": {
87+
title: "Time Zone",
88+
type: "string"
89+
},
90+
"time-zone-name": {
91+
title: "Time Zone Name",
92+
type: "string",
93+
enum: ["short", "long"]
8594
}
8695
};
8796

@@ -204,6 +213,23 @@ storiesOf("Datetime", module).add("Demo", () => {
204213
${now}
205214
</pfe-datetime>
206215
</p>
216+
<p>
217+
<strong>With a time zone: </strong>
218+
<pfe-datetime
219+
datetime="${now}"
220+
type="local"
221+
weekday="long"
222+
month="short"
223+
day="2-digit"
224+
year="numeric"
225+
hour="2-digit"
226+
minute="2-digit"
227+
second="2-digit"
228+
time-zone="UTC"
229+
time-zone-name="short">
230+
${now}
231+
</pfe-datetime>
232+
</p>
207233
</section>
208234
<section>
209235
<h2>Time Adverbial</h2>

elements/pfe-datetime/src/pfe-datetime.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,12 +114,25 @@ class PfeDatetime extends PFElement {
114114
let options = {};
115115

116116
for (const prop in props) {
117-
const value = props[prop][this.getAttribute(prop)];
117+
// converting the prop name from camel case to
118+
// hyphenated so it matches the attribute.
119+
// for example: timeZoneName to time-zone-name
120+
let attributeName = prop
121+
.replace(/[\w]([A-Z])/g, match => {
122+
return match[0] + "-" + match[1];
123+
})
124+
.toLowerCase();
125+
126+
const value = props[prop][this.getAttribute(attributeName)];
118127
if (value) {
119128
options[prop] = value;
120129
}
121130
}
122131

132+
if (this.getAttribute("time-zone")) {
133+
options.timeZone = this.getAttribute("time-zone");
134+
}
135+
123136
return options;
124137
}
125138

elements/pfe-datetime/src/pfe-datetime.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,12 @@
7272
"type": "string",
7373
"default": "en-US"
7474
},
75-
"time_zone_name": {
75+
"time_zone": {
7676
"title": "Time Zone",
77+
"type": "string"
78+
},
79+
"time_zone_name": {
80+
"title": "Time Zone Name",
7781
"type": "string",
7882
"enum": ["short", "long"]
7983
}

elements/pfe-datetime/test/pfe-datetime_test.html

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,14 @@
8787
Mon Jan 2 15:04:05 EST 2006
8888
</pfe-datetime>
8989

90+
<pfe-datetime
91+
id="withTimeZone"
92+
datetime="Mon Jan 2 15:04:05 EST 2006"
93+
time-zone="UTC"
94+
time-zone-name="short">
95+
Mon Jan 2 15:04:05 EST 2006
96+
</pfe-datetime>
97+
9098
<script>
9199
suite('<pfe-datetime>', () => {
92100
test('it should upgrade', () => {
@@ -138,6 +146,13 @@
138146

139147
assert.equal(text, 'lunes, 02 de ene. de 2006', "should show a (locally) formatted date with time");
140148
});
149+
150+
test("it should show formatted date for a specified time zone", () => {
151+
const element = document.getElementById("withTimeZone");
152+
const text = element.shadowRoot.querySelector("span").textContent;
153+
154+
assert.equal(text, "1/2/2006, UTC", "should show a formatted date for a specified time zone");
155+
});
141156
})
142157
</script>
143158
</body>

0 commit comments

Comments
 (0)