diff --git a/Resources/Plugins/edit-design/browser.js b/Resources/Plugins/edit-design/browser.js index e12bb0c5..5c590f10 100644 --- a/Resources/Plugins/edit-design/browser.js +++ b/Resources/Plugins/edit-design/browser.js @@ -5,6 +5,8 @@ enabled(){ this.config = null; this.defaultConfig = { + columnWidth: "310px", + fontSize: "12px", avatarRadius: 10 }; @@ -132,6 +134,12 @@ enabled(){ }); } }); + + modal.find("[data-td-theme='"+TD.settings.getTheme()+"']").prop("checked", true); + + modal.find("[data-td-theme]").change(function(){ + TD.settings.setTheme($(this).attr("data-td-theme")); + $(document).trigger("uiToggleTheme"); }); }).methods({ _render: () => $(this.htmlModal), @@ -157,13 +165,60 @@ enabled(){ this.resetLayout(); this.resetDesign(); + this.css.insert(".txt-base-smallest, .txt-base-largest { font-size: "+this.config.fontSize+" !important }"); this.css.insert(".avatar { border-radius: "+this.config.avatarRadius+"% !important }"); + + if (this.config.columnWidth[0] === '/'){ + let cols = this.config.columnWidth.slice(1); + + this.css.insert(".column { width: calc((100vw - 205px) / "+cols+" - 8px) !important }"); + this.css.insert(".is-condensed .column { width: calc((100vw - 55px) / "+cols+" - 8px) !important }"); + } + else{ + this.css.insert(".column { width: "+this.config.columnWidth+" !important }"); + } + + switch(this.config.columnWidth){ + case "/6": + TD.settings.setColumnWidth("narrow"); + break; + + case "310px": + case "/5": + TD.settings.setColumnWidth("medium"); + break; + + default: + TD.settings.setColumnWidth(parseInt(this.config.columnWidth, 10) < 310 ? "narrow" : "wide"); // NaN will give "wide" + break; + } + + switch(this.config.fontSize){ + case "13px": TD.settings.setFontSize("small"); break; + case "14px": TD.settings.setFontSize("medium"); break; + case "15px": TD.settings.setFontSize("large"); break; + default: TD.settings.setFontSize(parseInt(this.config.fontSize, 10) >= 16 ? "largest" : "smallest"); break; + } }; } ready(){ + // configuration + switch(TD.settings.getColumnWidth()){ + case "wide": this.defaultConfig.columnWidth = "350px"; break; + case "narrow": this.defaultConfig.columnWidth = "270px"; break; + } + + switch(TD.settings.getFontSize()){ + case "small": this.defaultConfig.fontSize = "13px"; break; + case "medium": this.defaultConfig.fontSize = "14px"; break; + case "large": this.defaultConfig.fontSize = "15px"; break; + case "largest": this.defaultConfig.fontSize = "16px"; break; + } + this.onAppReady(); + // DOM $("[data-action='settings-menu']").on("click", this.onSettingsMenuClickedEvent); $(".js-app").append('<div id="td-design-plugin-modal" class="js-modal settings-modal ovl scroll-v scroll-styled-v"></div>'); } diff --git a/Resources/Plugins/edit-design/modal.html b/Resources/Plugins/edit-design/modal.html index fddbba0c..f63a3dee 100644 --- a/Resources/Plugins/edit-design/modal.html +++ b/Resources/Plugins/edit-design/modal.html @@ -7,6 +7,64 @@ </header> <div class="mdl-inner"> <div class="td-modal-content mdl-content js-mdl-content horizontal-flow-container"> + <div class="td-modal-inner-cols"> + <div class="l-column mdl-column"> + + <!-- THEME --> + + <label class="txt-uppercase touch-larger-label"> + <b>Theme</b> + </label> + <label class="radio"> + <input data-td-theme="dark" class="js-theme-radio touch-larger-label" name="theme" type="radio"> Dark + </label> + <label class="radio"> + <input data-td-theme="light" class="js-theme-radio touch-larger-label" name="theme" type="radio"> Light + </label> + </div> + <div class="l-column mdl-column"> + + <!-- COLUMN SIZE --> + + <label class="txt-uppercase touch-larger-label"> + <b>Columns</b> + </label> + <select data-td-key="columnWidth"> + <option disabled></option> + <optgroup label="Fixed width"> + <option value="270px">Narrow (270px)</option> + <option value="310px">Medium (310px)</option> + <option value="350px">Wide (350px)</option> + <option value="400px">Extreme (400px)</option> + </optgroup> + <option disabled></option> + <optgroup label="Dynamic width"> + <option value="/3">3 columns on screen</option> + <option value="/4">4 columns on screen</option> + <option value="/5">5 columns on screen</option> + <option value="/6">6 columns on screen</option> + </optgroup> + <option disabled></option> + </select> + </div> + <div class="l-column mdl-column"> + + <!-- FONT SIZE --> + + <label class="txt-uppercase touch-larger-label"> + <b>Font size</b> + </label> + <select data-td-key="fontSize"> + <option value="12px" data-td-font-size="smallest">Tiny (12px)</option> + <option value="13px" data-td-font-size="small">Small (13px)</option> + <option value="14px" data-td-font-size="medium">Medium (14px)</option> + <option value="15px" data-td-font-size="large">Large (15px)</option> + <option value="16px" data-td-font-size="largest">Very Large (16px)</option> + <option value="18px" data-td-font-size="largest">Massive (18px)</option> + <option value="20px" data-td-font-size="largest">Extreme (20px)</option> + </select> + </div> + </div> <!-- AVATAR SHAPE --> diff --git a/Resources/Plugins/edit-design/notification.js b/Resources/Plugins/edit-design/notification.js index c241bad4..db4f2dfe 100644 --- a/Resources/Plugins/edit-design/notification.js +++ b/Resources/Plugins/edit-design/notification.js @@ -21,11 +21,13 @@ run(){ // config handling this.defaultConfig = { + fontSize: "12px", avatarRadius: 10 }; var loadConfigObject = config => { let css = window.TDPF_createCustomStyle(this); + css.insert(".txt-base-smallest, .txt-base-largest { font-size: "+config.fontSize+" !important }"); css.insert(".avatar { border-radius: "+config.avatarRadius+"% !important }"); }; }