Skip to content

Commit 84cf79d

Browse files
authored
Merge branch 'master' into feat-issue-741-add-event-cta
2 parents 31849a7 + fdfd6fc commit 84cf79d

File tree

7 files changed

+158
-113
lines changed

7 files changed

+158
-113
lines changed

CHANGELOG-prerelease.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
Tag: [v1.0.0-prerelease.41](https://github.com/patternfly/patternfly-elements/releases/tag/v1.0.0-prerelease.41)
44

55
- [](https://github.com/patternfly/patternfly-elements/commit/) feat: adding event to pfe-cta component
6+
- [](https://github.com/patternfly/patternfly-elements/commit/) feat: Add events to the generator
67

78
## Prerelease 40 ( 2020-03-10 )
89

@@ -40,6 +41,7 @@ Tag: [v1.0.0-prerelease.38](https://github.com/patternfly/patternfly-elements/re
4041
- [5585188](https://github.com/patternfly/patternfly-elements/commit/558518849087bd9b348c2827549acfe081d8ed96) docs: switching pfe-collapse story from heading tag to button
4142

4243
## Prerelease 37 ( 2020-01-28 )
44+
4345
Tag: [v1.0.0-prerelease.37](https://github.com/patternfly/patternfly-elements/releases/tag/v1.0.0-prerelease.37)
4446

4547
- [6a41811](https://github.com/patternfly/patternfly-elements/commit/6a418112668ba580918ac4a8b4b54e8df05c1155) fix: reference error when slot is missing in pfe-navigation

generators/element/index.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ module.exports = class extends Generator {
8787
if (config.author) {
8888
ret = typeof config.author.name === "undefined";
8989
}
90-
9190
return ret;
9291
}
9392
},
@@ -153,6 +152,20 @@ module.exports = class extends Generator {
153152
.split(",")
154153
.filter(s => s.length);
155154
}
155+
},
156+
{
157+
type: "input",
158+
name: "events",
159+
message:
160+
"List any events you want registered for the element, separated by commas (i.e., change, click)",
161+
// validate: function(answer) {},
162+
filter: function(response) {
163+
// remove whitespace, split on comma, and remove empty entries
164+
return response
165+
.replace(/\s/g, "")
166+
.split(",")
167+
.filter(s => s.length);
168+
}
156169
}
157170
]).then(answers => {
158171
if (Object.keys(answers).length > 0) {
@@ -241,6 +254,7 @@ module.exports = class extends Generator {
241254
rollupConfigLocation: rollupConfigLocation,
242255
attributes: answers.attributes,
243256
slots: answers.slots,
257+
events: answers.events,
244258
testFileLocation: testFileLocation
245259
};
246260

generators/element/templates/pfelement-README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@ Explain how this component meets accessibility standards.
3939
## Events
4040
Describe any events that are accessible external to the web component. There is no need to describe all the internal-only functions.
4141

42+
<%_ for(let i = 0; i < events.length; i++) { _%>
43+
### <%= elementName %>:<%= events[i] %>
44+
45+
<%_ } _%>
46+
4247
## Dependencies
4348
Describe any dependent elements or libraries here too.
4449

generators/element/templates/src/element.js

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,21 @@ class <%= elementClassName %> extends PFElement {
2121
<%_ } _%>
2222
}
2323

24-
<%_ if (attributes.length > 0) { _%>
25-
static get observedAttributes() {
26-
return [<% if (isPfelement) { %><%- _.join(attributes.map(item => `"pfe-${item}"`), ", ") %><% } else { %><%- _.join(attributes.map(item => `"${item}"`), ", ") %><% } %>];
27-
}
28-
<%_ } else { _%>
29-
// static get observedAttributes() {
30-
// return [];
31-
// }
32-
<%_ } _%>
24+
<% if (events.length < 1) { %>// <% } %>static get events() {
25+
<% if (events.length < 1) { %>// <% } %>return {<% for(let i = 0; i < events.length; i++) { %>
26+
<%= events[i] %>: `${this.tag}:<%= events[i] %>`<% if (i < (events.length - 1)) { %>,<% } } %>
27+
<% if (events.length < 1) { %>// <% } %>};
28+
<% if (events.length < 1) { %>// <% } %>}
3329

3430
// Declare the type of this component
3531
static get PfeType() {
3632
return PFElement.PfeTypes.<%= _.capitalize(template_type) %>;
3733
}
3834

35+
<% if (attributes.length < 1) { %>// <% } %>static get observedAttributes() {
36+
<% if (attributes.length < 1) { %>// <% } %>return [<% if (isPfelement) { %><%- _.join(attributes.map(item => `"pfe-${item}"`), ", ") %><% } else { %><%- _.join(attributes.map(item => `"${item}"`), ", ") %><% } %>];
37+
<% if (attributes.length < 1) { %>// <% } %>}
38+
3939
constructor() {
4040
super(<%= elementClassName %>, { type: <%= elementClassName %>.PfeType });
4141
<%_ if (slots.length > 0) { %>
@@ -56,17 +56,31 @@ class <%= elementClassName %> extends PFElement {
5656
// this.<%= slots[i] %>.addEventListener("slotchange", this._init);
5757
<%_ } _%>
5858
<%_ } _%>
59+
60+
<%_ for(let i = 0; i < events.length; i++) { _%>
61+
this.addEventListener(<%= elementClassName %>.events.<%= events[i] %>, this._<%= events[i] %>Handler);
62+
<%_ } _%>
5963
}
6064

61-
// disconnectedCallback() {}
65+
disconnectedCallback() {
66+
<%_ for(let i = 0; i < events.length; i++) { _%>
67+
this.removeEventListener(<%= elementClassName %>.events.<%= events[i] %>, this._<%= events[i] %>Handler);
68+
<%_ } _%>
69+
}
6270

6371
<%_ if (attributes.length > 0) { _%>
6472
// Process the attribute change
65-
attributeChangedCallback(attr, oldValue, newValue) {
66-
super.attributeChangedCallback(attr, oldValue, newValue);
73+
<% if (attributes.length < 1) { %>// <% } %>attributeChangedCallback(attr, oldValue, newValue) {
74+
<% if (attributes.length < 1) { %>// <% } %>super.attributeChangedCallback(attr, oldValue, newValue);
75+
<% if (attributes.length < 1) { %>// <% } %>}
76+
<%_ } _%>
77+
78+
<%_ for(let i = 0; i < events.length; i++) { _%>
79+
_<%= events[i] %>Handler(event) {
80+
this.emitEvent(<%= elementClassName %>.events.<%= events[i] %>, {
81+
detail: {}
82+
});
6783
}
68-
<%_ } else { _%>
69-
// attributeChangedCallback(attr, oldValue, newValue) {}
7084
<%_ } _%>
7185
}
7286

generators/element/templates/src/element.json

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,23 @@
4747
"default": "",
4848
"prefixed": <% if (isPfelement) { %>true<% } else { %>false<% } %>
4949
}<% if(attributes.length > 1 && i < attributes.length - 1) { %>,<% } %>
50-
<%_ } %>}<% if(attributes.length > 1) { %>,
50+
<% } %>}<% if(attributes.length > 1) { %>,
5151
"required": [ "<%= attributes[0] %>" ]<% } %>
52+
},
53+
"events": {
54+
"title": "Events",
55+
"description": "Definition of the supported events",
56+
"type": "object",
57+
"properties": {<% for(let i = 0; i < events.length; i++) { %><% if (i > 0) { %>,<% } %>
58+
"<%= events[i] %>": {
59+
"title": "<%= _.capitalize(events[i]) %>",
60+
"type": "string",
61+
"default": "<%= elementName %>:<%= events[i] %>"
62+
}<% } %>
63+
}
5264
}
5365
},
54-
"required": [ "slots", "attributes" ],
66+
"required": [ "slots", "attributes", "events" ],
5567
"additionalProperties": false
5668
}
5769

generators/element/templates/standalone-README.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,32 @@ Explain how this component meets accessibility standards.
1717

1818
## Slots
1919

20+
<%_ if (slots.length > 0) { _%>
21+
<%_ for(let i = 0; i < slots.length; i++) { _%>
22+
- `<%= slots[i] %>`: Describe this slot and best practices around what markup it can contain.
23+
<%_ } _%>
24+
<%_ } else { _%>
2025
- `namedSlot`: Describe each available slot and best practices around what markup it can contain.
26+
<%_ } _%>
2127

2228
## Attributes
2329

30+
<%_ if (attributes.length > 0) { _%>
31+
<%_ for(let i = 0; i < attributes.length; i++) { _%>
32+
- `<% if (isPfelement) { %>pfe-<% } %><%= attributes[i] %>`: Describe this attribute and what function is serves.
33+
<%_ } _%>
34+
<%_ } else { _%>
2435
- `attr`: Describe each available attribute and what function is serves.
36+
<%_ } _%>
2537

2638
## Events
2739
Describe any events that are accessible external to the web component. There is no need to describe all the internal-only functions.
2840

41+
<%_ for(let i = 0; i < events.length; i++) { _%>
42+
### <%= elementName %>:<%= events[i] %>
43+
44+
<%_ } _%>
45+
2946
## Dependencies
3047
Describe any dependent elements or libraries here too.
3148

0 commit comments

Comments
 (0)