Skip to content

Commit da61d0f

Browse files
authored
Merge pull request #7 from oslabs-beta/katherine/addingstyleclass
Katherine/addingstyleclass
2 parents 96065e3 + b602e4b commit da61d0f

File tree

7 files changed

+152
-175
lines changed

7 files changed

+152
-175
lines changed

src/components/right-sidebar/CodeSnippet.vue

Lines changed: 49 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,8 @@ Description:
1212
Select a component
1313
</div>
1414
<div v-else>{{ `${this.activeComponent}.vue` }}</div>
15-
<prism-editor
16-
v-model="code"
17-
:highlight="highlighter"
18-
line-numbers
19-
class="my-editor"
20-
readonly
21-
/>
22-
</div>
15+
<prism-editor v-model="code" :highlight="highlighter" line-numbers class="my-editor" readonly />
16+
</div>
2317
</template>
2418

2519
<script>
@@ -28,6 +22,7 @@ import { mapState } from "vuex";
2822
import { PrismEditor } from "vue-prism-editor";
2923
import "vue-prism-editor/dist/prismeditor.min.css";
3024
import { highlight, languages } from "prismjs/components/prism-core";
25+
import styleClassMap from '../../store/state/styleClassMap'
3126
import "prismjs/components/prism-clike";
3227
import "prismjs/components/prism-javascript";
3328
import "prismjs/themes/prism-tomorrow.css"; // import syntax highlighting styles
@@ -44,18 +39,19 @@ export default {
4439
PrismEditor,
4540
},
4641
computed: {
42+
//add
4743
// needs access to current component aka activeComponent
4844
...mapState(["componentMap", "activeComponent", "activeComponentObj", "exportAsTypescript"]),
4945
},
5046
methods: {
51-
snippetInvoke(){
52-
if (this.activeComponent !== ''){
47+
snippetInvoke() {
48+
if (this.activeComponent !== '') {
5349
this.code = this.createCodeSnippet(
5450
this.componentMap[this.activeComponent].componentName,
5551
this.componentMap[this.activeComponent].children
5652
)
57-
} else {
58-
this.code = 'Your component boilerplate will be displayed here.'
53+
} else {
54+
this.code = 'Your component boilerplate will be displayed here.'
5955
}
6056
},
6157
//highlighter does not work: OverVue 6.0;
@@ -95,32 +91,16 @@ export default {
9591
"list-ul": ["<ul", "</ul>"],
9692
input: ["<input", ""], //single
9793
navbar: ["<nav", "</nav>"],
98-
header:["<header","</header>"],
99-
footer:["<footer", "</footer>"],
94+
header: ["<header", "</header>"],
95+
footer: ["<footer", "</footer>"],
10096
meta: ["<meta", "</meta>"],
101-
h1:["<h1", "</h1>"],
102-
h2:["<h2", "</h2>"],
103-
h3:["<h3", "</h3>"],
104-
h4:["<h4", "</h4>"],
105-
h5:["<h5", "</h5>"],
106-
h6:["<h6", "</h6>"],
97+
h1: ["<h1", "</h1>"],
98+
h2: ["<h2", "</h2>"],
99+
h3: ["<h3", "</h3>"],
100+
h4: ["<h4", "</h4>"],
101+
h5: ["<h5", "</h5>"],
102+
h6: ["<h6", "</h6>"],
107103
};
108-
//test//
109-
// function writeClass(componentName) {
110-
// if (this.componentMap[componentName]?.classList?.length > 0) {
111-
// let commentStr = '<!--'
112-
// this.componentMap[componentName].classList.forEach((el) => {
113-
// commentStr += "\n"
114-
// commentStr += el;
115-
// })
116-
// commentStr += '\n-->\n\n'
117-
// return commentStr;
118-
// } else {
119-
// return ''
120-
// }
121-
// };
122-
// Helper function that recursively iterates through the given html element's children and their children's children.
123-
// also adds proper indentation to code snippet
124104
function writeNested(childrenArray, indent) {
125105
if (!childrenArray.length) {
126106
return "";
@@ -134,13 +114,13 @@ export default {
134114
nestedString += `<${child}/>\n`;
135115
} else {
136116
nestedString += htmlElementMap[child.text][0];
137-
if(child.class !== "") {
138-
nestedString += " " + "class = " + `"${el.class}"`;
139-
}
140-
if(child.text === "img" || child.text === "input" || child.text === "link") {
141-
nestedString += "/>";
142-
} else {nestedString += ">";}
143-
117+
if (child.class !== "") {
118+
nestedString += " " + "class = " + `"${el.class}"`;
119+
}
120+
if (child.text === "img" || child.text === "input" || child.text === "link") {
121+
nestedString += "/>";
122+
} else { nestedString += ">"; }
123+
144124
if (child.children.length) {
145125
nestedString += "\n";
146126
nestedString += writeNested(child.children, indented);
@@ -157,21 +137,22 @@ export default {
157137
// Iterates through active component's HTML elements list and adds to code snippet
158138
let htmlArr = this.componentMap[componentName].htmlList;
159139
console.log("ALERT")
160-
console.log(htmlArr[0].class)
161-
console.log(htmlArr[0].children)
140+
console.log('hellloo')
141+
console.log("here", htmlArr[0].class)
142+
console.log(htmlArr[0].children);
162143
let outputStr = ``;
163144
// eslint-disable-next-line no-unused-vars
164-
for (let el of htmlArr) {
145+
for (const el of htmlArr) {
165146
if (!el.text) {
166147
outputStr += ` <${el}/>\n`;
167148
} else {
168149
outputStr += ` `;
169-
outputStr += htmlElementMap[el.text][0]
170-
//if conditional to check class
171-
if(el.class !== "") {
172-
outputStr += " " + "class = " + `"${el.class}"`;
173-
}
174-
outputStr += ">";
150+
outputStr += htmlElementMap[el.text][0]
151+
//if conditional to check class
152+
if (el.class !== "") {
153+
outputStr += " " + "class = " + `"${el.class}"`;
154+
}
155+
outputStr += ">";
175156
if (el.children.length) {
176157
outputStr += "\n";
177158
outputStr += writeNested(el.children, ` `);
@@ -204,7 +185,7 @@ export default {
204185
imports += ' } from "vuex";\n';
205186
}
206187
207-
// if Typescript toggle is on, import defineComponent
188+
// if Typescript toggle is on, import defineComponent
208189
if (this.exportAsTypescript === "on") {
209190
imports += 'import { defineComponent } from "vue";\n';
210191
}
@@ -256,6 +237,16 @@ export default {
256237
methods += " },\n";
257238
}
258239
240+
let htmlArray = this.componentMap[componentName].htmlList;
241+
console.log("down here", htmlArray);
242+
let styleString = "";
243+
for (const html of htmlArray) {
244+
if (!html.class) styleString = "";
245+
if (html.class) {
246+
styleString += `.${html.class} {\n}\n`
247+
}
248+
}
249+
259250
// concat all code within script tags
260251
// if exportAsTypescript is on, out should be <script lang="ts">
261252
let output;
@@ -276,28 +267,28 @@ export default {
276267
output += "});\n<\/script>\n\n<style scoped>\n</style>"
277268
278269
} else {
279-
output += "};\n<\/script>\n\n<style scoped>\n</style>"
270+
output += `}; \n <\/script>\n\n<style scoped>\n${styleString}</style > `
280271
}
281-
return output;
272+
return output
282273
},
283274
},
284275
watch: {
285276
// watches activeComponentObj for changes to make it reactive upon mutation
286277
// // // watches componentMap for changes to make it reactive upon mutation
287278
activeComponent: {
288-
handler () {
279+
handler() {
289280
this.snippetInvoke();
290281
},
291282
deep: true
292283
},
293284
componentMap: {
294-
handler () {
285+
handler() {
295286
this.snippetInvoke();
296287
},
297288
deep: true
298289
},
299290
exportAsTypescript: {
300-
handler () {
291+
handler() {
301292
this.snippetInvoke();
302293
},
303294
}

0 commit comments

Comments
 (0)