Skip to content

Commit aa7dd8a

Browse files
authored
Merge pull request #4061 from sivaprasath2004/sivaprasath-closes-issue-4047
[Feature]: Add to live editor settings
2 parents 01b919d + a52aaf1 commit aa7dd8a

File tree

4 files changed

+70
-11
lines changed

4 files changed

+70
-11
lines changed

src/css/custom.css

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
--ifm-task-complete-color: #2e9e32e1;
3131
--ifm-task-incomplete-color: #3d78cbe1;
3232
--ifm-bg-color: #f8f9fa;
33+
--image-filter:invert(0);
3334
--site-color-svg-icon-favorite: #ff1100cb;
3435
}
3536

@@ -45,6 +46,7 @@
4546
--ifm-task-complete-color: #25c2a0;
4647
--ifm-task-incomplete-color: #3d78cbe1;
4748
--ifm-bg-color: #1a202c;
49+
--image-filter:invert(1);
4850
--site-color-svg-icon-favorite: #ff9100e5;
4951
}
5052

src/pages/LiveEditor/BasicEditor.tsx

Lines changed: 53 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import React, { useEffect, useState, useRef } from 'react';
2+
import style from '../../components/BrowserWindow/BrowserWindow.module.css';
23

3-
const BasicEditor: React.FC = () => {
4-
const [checker, setChecker] = useState({ html: true, css: false, js: false });
4+
const BasicEditor= () => {
5+
const [checker, setChecker] = useState({ html: true, css: false, js: false,settings:false,fontSize:10,fontColor:false,backcolor:false });
56
const [html, setHtml] = useState("");
67
const [css, setCss] = useState("");
78
const [js, setJs] = useState("");
@@ -47,11 +48,57 @@ const BasicEditor: React.FC = () => {
4748
<button className={!checker.css ? 'btn_activated css' : 'btn_deactivated'} onClick={() => setChecker({ html: false, css: true, js: false })}>CSS</button>
4849
<button className={!checker.js ? 'btn_activated js' : 'btn_deactivated'} onClick={() => setChecker({ html: false, css: false, js: true })}>JS</button>
4950
</div>
50-
<textarea className={checker.html ? 'editor_textarea_activate' : 'editor_textarea_deactivate'} value={html} placeholder="HTML" onChange={(e) => setHtml(e.target.value)}></textarea>
51-
<textarea className={checker.css ? 'editor_textarea_activate' : 'editor_textarea_deactivate'} value={css} placeholder="CSS" onChange={(e) => setCss(e.target.value)}></textarea>
52-
<textarea className={checker.js ? 'editor_textarea_activate' : 'editor_textarea_deactivate'} value={js} placeholder="JavaScript" onChange={(e) => setJs(e.target.value)}></textarea>
51+
<div className='editor_settings_nav'>
52+
<div className={`editor_settings_menu_con ${checker.settings?"activate_menu":"deactivate_menu"}`}>
53+
<div className='editor_settings_menu'>
54+
<p>Font Size</p>
55+
<button onClick={()=>setChecker(pre=>({...pre,fontSize:pre.fontSize!==30?pre.fontSize+1:pre.fontSize}))}>+</button>
56+
<p>{checker.fontSize}</p>
57+
<button onClick={()=>setChecker(pre=>({...pre,fontSize:pre.fontSize!==10?pre.fontSize-1:pre.fontSize}))}>-</button>
58+
</div>
59+
<div className='editor_settings_menu'>
60+
<p>color</p>
61+
<input
62+
type="color"
63+
value={checker.fontColor}
64+
onChange={(e)=>setChecker(pre=>({...pre,fontColor:e.target.value}))}
65+
/>
66+
</div>
67+
<div className='editor_settings_menu'>
68+
<p>Bakcground color</p>
69+
<input
70+
type="color"
71+
value={checker.backcolor}
72+
onChange={(e)=>setChecker(pre=>({...pre,backcolor:e.target.value}))}
73+
/>
74+
</div>
75+
</div>
76+
<div className='editor_setting_icon'>
77+
<img src="https://cdn-icons-png.flaticon.com/128/9333/9333993.png" onClick={()=>setChecker(pre => ({...pre, settings: !pre.settings}))} alt='settings'/>
78+
</div>
79+
</div>
80+
<textarea style={{fontSize:`${checker.fontSize}pt`,color:checker.fontColor==false?"unset":checker.fontColor,background:checker.backcolor==false?"transparent":checker.backcolor}} className={checker.html ? 'editor_textarea_activate' : 'editor_textarea_deactivate'} value={html} placeholder="HTML" onChange={(e) => setHtml(e.target.value)}></textarea>
81+
<textarea style={{fontSize:`${checker.fontSize}pt`,color:checker.fontColor==false?"unset":checker.fontColor,background:checker.backcolor==false?"transparent":checker.backcolor}} className={checker.css ? 'editor_textarea_activate' : 'editor_textarea_deactivate'} value={css} placeholder="CSS" onChange={(e) => setCss(e.target.value)}></textarea>
82+
<textarea style={{fontSize:`${checker.fontSize}pt`,color:checker.fontColor==false?"unset":checker.fontColor,background:checker.backcolor==false?"transparent":checker.backcolor}} className={checker.js ? 'editor_textarea_activate' : 'editor_textarea_deactivate'} value={js} placeholder="JavaScript" onChange={(e) => setJs(e.target.value)}></textarea>
83+
</div>
84+
<div className={style.browserWindow} style={{height:"35.3rem",flex:"1 0 30rem",marginTop:"1.3rem"}}>
85+
<div className={style.browserWindowHeader}>
86+
<div className={style.buttons}>
87+
<span className={style.dot} style={{background: '#f25f58'}} />
88+
<span className={style.dot} style={{background: '#fbbe3c'}} />
89+
<span className={style.dot} style={{background: '#58cb42'}} />
90+
</div>
91+
<div className={style.browserWindowMenuIcon}>
92+
<div>
93+
<span className={style.bar} />
94+
<span className={style.bar} />
95+
<span className={style.bar} />
96+
</div>
97+
</div>
5398
</div>
54-
<iframe ref={iframeRef} className='output_container' id="preview"></iframe>
99+
100+
<iframe ref={iframeRef} className='output_container' id="preview"></iframe>
101+
</div>
55102
</div>
56103
);
57104
}

src/pages/LiveEditor/index.css

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,34 @@
55
.editor_container{flex:1 0 20rem;display:flex;gap:1rem;justify-content:center;align-items:center;position:relative;padding:3rem;cursor:pointer}
66
.editor_container:hover{border: 1px solid;}
77
.normal_editor{display: flex;flex-wrap: wrap;justify-content: center;align-items: center;width:100vw}
8-
.normal_editor .editor_box,.normal_editor .output_container{
8+
.normal_editor .editor_box{
99
flex: 1 0 30rem;
1010
height: 35rem;
1111
position:relative;
1212
}
13+
.normal_editor .output_container{height: 32.3rem;width: 100%;}
1314
.normal_editor .output_container{background: white;}
1415
.editor_box .editor_nav{position: absolute;z-index: 2;gap: 1rem;display: flex;top: 2%;justify-content: center;align-items: center;right: 1%;}
1516
.editor_nav .btn_activated{padding: 0.3rem 1rem;border: none;font-family: monospace;font-weight: 600;cursor: pointer;}
1617
.editor_nav .html{background: rgb(230,81,0);color: white;}
1718
.editor_nav .css{background:rgb(2,119,189);color: white;}
1819
.editor_nav .js{background:rgb(255,214,0);color: rgb(0, 0, 0);}
1920
.editor_nav .btn_deactivated{display: none;}
21+
.editor_settings_nav{position: absolute;bottom: 1%;right: 1%;}
22+
.editor_settings_nav img{height: 1.5rem;cursor: pointer;filter: var(--image-filter);}
23+
.editor_settings_nav .editor_setting_icon{display: flex;justify-content: flex-end;}
24+
.editor_settings_menu_con{border: 1px solid;padding: 0.3rem;margin-bottom: 0.2rem;transition: 0.3s ease-in;background: var(--docsearch-hit-background);}
25+
.editor_settings_menu_con.activate_menu{opacity: 1;}
26+
.editor_settings_menu_con.deactivate_menu{display: none;}
27+
.editor_settings_menu{display: flex;gap: 1rem;justify-content: space-between;align-items: center;margin: 0.5rem;}
28+
.editor_settings_menu p{margin: 0;}
29+
.editor_settings_menu button{height: 1.5rem; width: 1.5rem;display: flex;justify-content: center;font-family: monospace;font-weight: 900;background:rgb(2,119,189);color: white;border: none;align-items: center;}
30+
.editor_settings_menu input{height: 3rem;width: 3rem;}
2031
.editor_textarea_activate{
2132
font-family: "Courier New", Courier, "Lucida Sans Typewriter", "Lucida Typewriter", monospace;
2233
width: 100%;
2334
min-height: 100%;
24-
float: left;
25-
font-size: 10pt;
35+
float: left;
2636
line-height: 14pt;
2737
font-weight: 200;
2838
padding: 10px;
@@ -40,4 +50,4 @@
4050
border-color: #33dd33;
4151
}
4252
.editor_textarea_deactivate{display: none;}
43-
53+

src/pages/LiveEditor/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ export default function LiveEditor() {
8989
title="dazzling-swanson-wne32"
9090
allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking"
9191
sandbox="allow-autoplay allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
92-
/> :<BasicEditor />
92+
/> :<BasicEditor />
9393
}
9494
</div>
9595
</Layout>

0 commit comments

Comments
 (0)