Skip to content

Commit 39b42c4

Browse files
chore: Update generator with knobs import; add events (#1527)
* chore: Update generator * chore: Update logic for events in storybook template * chore: Revert test listing, update line breaking in generator * Update test/index.html * chore: Update package lock Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
1 parent 20cb906 commit 39b42c4

File tree

3 files changed

+38
-8
lines changed

3 files changed

+38
-8
lines changed

generators/element/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -348,9 +348,9 @@ module.exports = class extends Generator {
348348
}
349349

350350
if (isPfelement) {
351-
if (fs.existsSync(this.templatePath("demo/element.story.js"))) {
351+
if (fs.existsSync(this.templatePath("demo/element.story.ejs"))) {
352352
this.fs.copyTpl(
353-
this.templatePath("demo/element.story.js"),
353+
this.templatePath("demo/element.story.ejs"),
354354
this.destinationPath(`${this.props.elementName}/demo/${this.props.elementName}.story.js`),
355355
this.props
356356
);

generators/element/templates/demo/element.story.js renamed to generators/element/templates/demo/element.story.ejs

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,20 @@
11
import { storiesOf } from "@storybook/polymer";
2-
import * as bridge from "@storybook/addon-knobs/polymer";
2+
import * as bridge from "@storybook/addon-knobs";
3+
import { withActions } from "@storybook/addon-actions";
34
import * as tools from "../../../.storybook/utils.js";
45

56
import <%= elementClassName %> from "../dist/<%= elementName %>";
67

78
const stories = storiesOf("<%= readmeName %>", module);
89

10+
// Add the readme
11+
import readme from "../README.md";
12+
stories.addParameters({
13+
notes: {
14+
markdown: readme
15+
}
16+
});
17+
918
// Define the template to be used
1019
const template = (data = {}) => {
1120
return tools.component(<%= elementClassName %>.tag, data.prop, data.slots);
@@ -17,14 +26,28 @@ const defaultContent = tools.autoContent(1, 2);
1726

1827
stories.addDecorator(bridge.withKnobs);
1928

29+
<% if (events.length > 0) { -%>
30+
// Log events
31+
<% for(let i = 0; i < events.length; i++) { -%>
32+
stories.addDecorator(withActions(`${<%= elementClassName %>.tag}:<%= events[i] %>`));
33+
<% } } -%>
34+
2035
stories.add(<%= elementClassName %>.tag, () => {
2136
let config = {};
2237
const props = <%= elementClassName %>.properties;
2338

2439
//-- Set any custom defaults just for storybook here
40+
let overrides = {};
41+
// Example:
42+
// let overrides = {
43+
// color: {
44+
// default: "lightest",
45+
// required: true
46+
// }
47+
// };
2548

2649
// Trigger the auto generation of the knobs for attributes
27-
config.prop = tools.autoPropKnobs(<%= elementClassName %>);
50+
config.prop = tools.autoPropKnobs(<%= elementClassName %>, overrides);
2851

2952
const slots = <%= elementClassName %>.slots;
3053

generators/element/templates/src/element.ejs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// Documentation for building can be found at: https://patternflyelements.com/docs/develop/javascript/
2+
13
import PFElement from "<%= pfeElementLocation %>";
24

35
class <%= elementClassName %> extends PFElement {
@@ -37,7 +39,7 @@ class <%= elementClassName %> extends PFElement {
3739
3840
static get properties() {
3941
return {<%_ if (attributes.length > 0) { _%>
40-
<%_ for(let i = 0; i < attributes.length; i++) { _%>
42+
<%_ for(let i = 0; i < attributes.length; i++) { %>
4143
<%= attributes[i] %>: {
4244
title: "<%= _.capitalize(attributes[i]) %>",
4345
// Valid types are: String, Boolean, and Number
@@ -66,7 +68,9 @@ class <%= elementClassName %> extends PFElement {
6668
6769
connectedCallback() {
6870
super.connectedCallback();
71+
6972
// If you need to initialize any attributes, do that here
73+
7074
<%_ if (slots.length > 0) { %>
7175
<%_ for(let i = 0; i < slots.length; i++) { _%>
7276
this.<%= _.camelCase(slots[i]) %> = this.querySelector(`[slot="${this.tag}--<%= slots[i] %>"]`);
@@ -77,14 +81,17 @@ class <%= elementClassName %> extends PFElement {
7781
<%_ } _%>
7882
<%_ } _%>
7983
84+
<%_ if (events.length > 0) { %>
85+
// @EXAMPLE Attaches a click event to fire the handler as a test
8086
<%_ for(let i = 0; i < events.length; i++) { _%>
81-
this.addEventListener(<%= elementClassName %>.events.<%= events[i] %>, this._<%= events[i] %>Handler);
87+
this.addEventListener("click", this._<%= events[i] %>Handler);
88+
<%_ } _%>
8289
<%_ } _%>
8390
}
8491
8592
disconnectedCallback() {
8693
<%_ for(let i = 0; i < events.length; i++) { _%>
87-
this.removeEventListener(<%= elementClassName %>.events.<%= events[i] %>, this._<%= events[i] %>Handler);
94+
this.removeEventListener("click", this._<%= events[i] %>Handler);
8895
<%_ } _%>
8996
}
9097
@@ -95,7 +102,7 @@ class <%= elementClassName %> extends PFElement {
95102
<% if (attributes.length < 1) { %>// <% } %>}
96103
<%_ } _%>
97104
98-
<%_ for(let i = 0; i < events.length; i++) { _%>
105+
<%_ for(let i = 0; i < events.length; i++) { %>
99106
_<%= events[i] %>Handler(event) {
100107
this.emitEvent(<%= elementClassName %>.events.<%= events[i] %>, {
101108
detail: {}

0 commit comments

Comments
 (0)