Skip to content

Commit 9e84ef9

Browse files
committed
option to add nav-bar background image
1 parent f1ccc5b commit 9e84ef9

File tree

6 files changed

+30
-6
lines changed

6 files changed

+30
-6
lines changed

src/rapidoc.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ export default class RapiDoc extends LitElement {
7878

7979
// Nav Bar Colors
8080
navBgColor: { type: String, attribute: 'nav-bg-color' },
81+
navBgImage: { type: String, attribute: 'nav-bg-image' },
82+
navBgImageSize: { type: String, attribute: 'nav-bg-image-size' },
83+
navBgImageRepeat: { type: String, attribute: 'nav-bg-image-repeat' },
8184
navTextColor: { type: String, attribute: 'nav-text-color' },
8285
navHoverBgColor: { type: String, attribute: 'nav-hover-bg-color' },
8386
navHoverTextColor: { type: String, attribute: 'nav-hover-text-color' },

src/styles/nav-styles.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ export default html`
88
overflow: hidden;
99
color:var(--nav-text-color);
1010
background-color: var(--nav-bg-color);
11+
background-image: var(--nav-bg-image);
12+
background-size: var(--nav-bg-image-size);
13+
background-repeat: var(--nav-bg-image-repeat, 'no-repeat');
14+
background-blend-mode: multiply;
1115
box-sizing:border-box;
1216
line-height: 16px;
1317
display:none;

src/templates/main-body-template.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@ export default function mainBodyTemplate() {
6767
headerColor: isValidHexColor(this.headerColor) ? this.headerColor : '',
6868
primaryColor: isValidHexColor(this.primaryColor) ? this.primaryColor : '',
6969
navBgColor: isValidHexColor(this.navBgColor) ? this.navBgColor : '',
70+
navBgImage: this.navBgImage || '',
71+
navBgImageSize: this.navBgImageSize,
72+
navBgImageRepeat: this.navBgImageRepeat,
7073
navTextColor: isValidHexColor(this.navTextColor) ? this.navTextColor : '',
7174
navHoverBgColor: isValidHexColor(this.navHoverBgColor) ? this.navHoverBgColor : '',
7275
navHoverTextColor: isValidHexColor(this.navHoverTextColor) ? this.navHoverTextColor : '',

src/templates/navbar-template.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ export default function navbarTemplate() {
1212
${(this.allowSearch === 'false')
1313
? ''
1414
: html`
15-
<div style="position:sticky; top:0; display:flex; flex-direction:row; align-items: stretch; padding:24px; background: var(--nav-bg-color); border-bottom: 1px solid var(--nav-hover-bg-color)">
15+
<div style="position:sticky; top:0; display:flex; flex-direction:row; align-items: stretch; padding:24px; border-bottom: 1px solid var(--nav-hover-bg-color)">
1616
<div style="display:flex; flex:1">
1717
<input id="nav-bar-search"
18-
style="width:100%; padding-right:20px; color:var(--nav-hover-text-color); border-color:var(--nav-accent-color); background-color:var(--nav-hover-bg-color)"
18+
style="width:100%; padding-right:20px; color:var(--nav-hover-text-color); border-color:var(--nav-accent-color);"
1919
type="text" placeholder="search"
2020
@change="${this.onSearchChange}"
2121
spellcheck="false"

src/utils/color-utils.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ export default {
55
headerBg: '#444',
66
getRgb(hex) {
77
if (hex.indexOf('#') === 0) {
8-
hex = hex.slice(1);
8+
hex = hex.slice(1, 7);
99
}
1010
// convert 3-digit hex to 6-digits.
11-
if (hex.length === 3) {
11+
if (hex.length === 3 || hex.length === 4) {
1212
hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
1313
}
1414
if (hex.length !== 6) {
@@ -47,5 +47,5 @@ export default {
4747
};
4848

4949
export function isValidHexColor(colorCode) {
50-
return /^#([0-9A-F]{3}){1,2}$/i.test(colorCode);
50+
return /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/i.test(colorCode);
5151
}

src/utils/theme.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ export default function setTheme(baseTheme, theme = {}) {
2828
const headerColor = theme.headerColor ? theme.headerColor : ColorUtils.color.brightness(bg1, 10);
2929

3030
const navBgColor = theme.navBgColor ? theme.navBgColor : ColorUtils.color.brightness(bg1, 10);
31+
const navBgImage = theme.navBgImage || '';
32+
const navBgImageSize = theme.navBgImageSize;
33+
const navBgImageRepeat = theme.navBgImageRepeat;
3134
const navTextColor = theme.navTextColor ? theme.navTextColor : ColorUtils.color.opacity(ColorUtils.color.invert(navBgColor), '0.65');
3235
const navHoverBgColor = theme.navHoverBgColor ? theme.navHoverBgColor : ColorUtils.color.brightness(navBgColor, -15);
3336
const navHoverTextColor = theme.navHoverTextColor ? theme.navHoverTextColor : ColorUtils.color.invert(navBgColor);
@@ -49,6 +52,9 @@ export default function setTheme(baseTheme, theme = {}) {
4952
selectionFg,
5053

5154
navBgColor,
55+
navBgImage,
56+
navBgImageSize,
57+
navBgImageRepeat,
5258
navTextColor,
5359
navHoverBgColor,
5460
navHoverTextColor,
@@ -113,6 +119,9 @@ export default function setTheme(baseTheme, theme = {}) {
113119
const navAccentColor = theme.navAccentColor ? theme.navAccentColor : primaryColor;
114120
*/
115121
const navBgColor = theme.navBgColor ? theme.navBgColor : ColorUtils.color.brightness(bg1, -180);
122+
const navBgImage = theme.navBgImage || '';
123+
const navBgImageSize = theme.navBgImageSize || '';
124+
const navBgImageRepeat = theme.navBgImageRepeat;
116125
const navTextColor = theme.navTextColor ? theme.navTextColor : ColorUtils.color.opacity(ColorUtils.color.invert(navBgColor), '0.65');
117126
const navHoverBgColor = theme.navHoverBgColor ? theme.navHoverBgColor : ColorUtils.color.brightness(navBgColor, -15);
118127
const navHoverTextColor = theme.navHoverTextColor ? theme.navHoverTextColor : ColorUtils.color.invert(navBgColor);
@@ -133,6 +142,9 @@ export default function setTheme(baseTheme, theme = {}) {
133142
selectionFg,
134143

135144
navBgColor,
145+
navBgImage,
146+
navBgImageSize,
147+
navBgImageRepeat,
136148
navTextColor,
137149
navHoverBgColor,
138150
navHoverTextColor,
@@ -173,7 +185,6 @@ export default function setTheme(baseTheme, theme = {}) {
173185
brown: theme.brown ? theme.brown : '#D4AC0D',
174186
};
175187
}
176-
177188
return html`<style>
178189
:host {
179190
--bg:${newTheme.bg1};
@@ -218,6 +229,9 @@ export default function setTheme(baseTheme, theme = {}) {
218229
219230
/* Nav Colors */
220231
--nav-bg-color:${newTheme.navBgColor};
232+
--nav-bg-image: url(${newTheme.navBgImage});
233+
--nav-bg-image-size: ${newTheme.navBgImageSize || 'contain'};
234+
--nav-bg-image-repeat: ${newTheme.navBgImageRepeat || 'no-repeat'};
221235
--nav-text-color:${newTheme.navTextColor};
222236
--nav-hover-bg-color:${newTheme.navHoverBgColor};
223237
--nav-hover-text-color:${newTheme.navHoverTextColor};

0 commit comments

Comments
 (0)