diff --git a/.github/README.md b/.github/README.md
index 08aaa35d..2faeeb43 100644
--- a/.github/README.md
+++ b/.github/README.md
@@ -207,17 +207,17 @@ So, in order to let each one shine, I have I have built real-world apps in each
| Project | Framework | GitHub | Website |
|---|---|---|---|
-| [
Web Check](https://github.com/Lissy93/web-check) - All-in-one OSINT tool for analyzing any site | [](https://react.dev/) | [](https://github.com/Lissy93/web-check) | [🌐 web-check.xyz](https://web-check.xyz) |
-| [
Dashy](https://github.com/Lissy93/dashy) - Highly configurable self-hostable server dashboard | [](https://vuejs.org/) | [](https://github.com/Lissy93/dashy) | [🌐 dashy.to](https://dashy.to) |
-| [
Digital Defense](https://github.com/Lissy93/personal-security-checklist) - Interactive personal security checklist | [](https://qwik.builder.io/) | [](https://github.com/Lissy93/personal-security-checklist) | [🌐 digital-defense.io](https://digital-defense.io) |
-| [
Portainer Templates](https://github.com/Lissy93/portainer-templates) - Automated Docker deployment specs | [](https://svelte.dev/) | [](https://github.com/Lissy93/portainer-templates) | [🌐 portainer-templates](https://portainer-templates.as93.net/) |
-| [
Domain Locker](https://github.com/Lissy93/domain-locker) - Domain name portfolio manager | [](https://angular.io/) | [](https://github.com/Lissy93/domain-locker) | [🌐 domain-locker.com](https://domain-locker.com) |
-| [
Email Comparison](https://github.com/Lissy93/email-comparison) - Objective testing of mail providers | [](https://lit.dev/) | [](https://github.com/Lissy93/email-comparison) | [🌐 email-comparison](https://email-comparison.as93.net/) |
-| [
Who Dat](https://github.com/Lissy93/who-dat) - WHOIS lookup for domain registration info | [](https://alpinejs.dev/) | [](https://github.com/Lissy93/who-dat) | [🌐 who-dat.as93.net](https://who-dat.as93.net) |
-| [
Chief Snack Officer](https://github.com/Lissy93/cso) - Office snack management app | [](https://www.solidjs.com/) | [](https://github.com/Lissy93/cso) | [🌐 N/A](https://lissy93.github.io/cso) |
-| [
Awesome Privacy](https://github.com/Lissy93/awesome-privacy) - Curated directory of respectful apps | [](https://astro.build/) | [](https://github.com/Lissy93/awesome-privacy) | [🌐 awesome-privacy.xyz](https://awesome-privacy.xyz/) |
-| [
RAID Calculator](https://github.com/Lissy93/raid-calculator) - RAID array capacity and fault tolerance | [](https://vanjs.org/) | [](https://github.com/Lissy93/raid-calculator) | [🌐 raid-calculator](https://raid-calculator.as93.net/) |
-| [
Permissionator](https://github.com/Lissy93/permissionator) - Generating Linux file permissions | [](https://markojs.com/) | [](https://github.com/Lissy93/permissionator) | [🌐 permissionator](https://permissionator.as93.net) |
+| [ Web Check](https://github.com/Lissy93/web-check) - All-in-one OSINT tool for analyzing any site | [](https://react.dev/) | [](https://github.com/Lissy93/web-check) | [🌐 web-check.xyz](https://web-check.xyz) |
+| [
Dashy](https://github.com/Lissy93/dashy) - Highly configurable self-hostable server dashboard | [](https://vuejs.org/) | [](https://github.com/Lissy93/dashy) | [🌐 dashy.to](https://dashy.to) |
+| [
Digital Defense](https://github.com/Lissy93/personal-security-checklist) - Interactive personal security checklist | [](https://qwik.builder.io/) | [](https://github.com/Lissy93/personal-security-checklist) | [🌐 digital-defense.io](https://digital-defense.io) |
+| [
Networking Toolbox](https://github.com/Lissy93/networking-toolbox) - 100+ offline-first networking tools for sysadmins | [](https://svelte.dev/) | [](https://github.com/Lissy93/networking-toolbox) | [🌐 networkingtoolbox.net](https://networkingtoolbox.net/) |
+| [
Domain Locker](https://github.com/Lissy93/domain-locker) - Domain name portfolio manager | [](https://angular.io/) | [](https://github.com/Lissy93/domain-locker) | [🌐 domain-locker.com](https://domain-locker.com) |
+| [
Email Comparison](https://github.com/Lissy93/email-comparison) - Objective testing of mail providers | [](https://lit.dev/) | [](https://github.com/Lissy93/email-comparison) | [🌐 email-comparison](https://email-comparison.as93.net/) |
+| [
Who Dat](https://github.com/Lissy93/who-dat) - WHOIS lookup for domain registration info | [](https://alpinejs.dev/) | [](https://github.com/Lissy93/who-dat) | [🌐 who-dat.as93.net](https://who-dat.as93.net) |
+| [
Chief Snack Officer](https://github.com/Lissy93/cso) - Office snack management app | [](https://www.solidjs.com/) | [](https://github.com/Lissy93/cso) | [🌐 N/A](https://lissy93.github.io/cso) |
+| [
Awesome Privacy](https://github.com/Lissy93/awesome-privacy) - Curated directory of respectful apps | [](https://astro.build/) | [](https://github.com/Lissy93/awesome-privacy) | [🌐 awesome-privacy.xyz](https://awesome-privacy.xyz/) |
+| [
RAID Calculator](https://github.com/Lissy93/raid-calculator) - RAID array capacity and fault tolerance | [](https://vanjs.org/) | [](https://github.com/Lissy93/raid-calculator) | [🌐 raid-calculator](https://raid-calculator.as93.net/) |
+| [
Permissionator](https://github.com/Lissy93/permissionator) - Generating Linux file permissions | [](https://markojs.com/) | [](https://github.com/Lissy93/permissionator) | [🌐 permissionator](https://permissionator.as93.net) |
---
@@ -241,19 +241,19 @@ Each app gets built and tested to ensure that it is functional, compliant with t
| App | Build | Test | Lint |
|---|---|---|---|
-|
React |  |  |  |
-|
Angular |  |  |  |
-|
Svelte |  |  |  |
-|
Preact |  |  |  |
-|
Solid.js |  |  |  |
-|
Qwik |  |  |  |
-|
Vue 3 |  |  |  |
-|
jQuery |  |  |  |
-|
Alpine.js |  |  |  |
-|
Lit |  |  |  |
-|
VanJS |  |  |  |
-|
Lume.js |  |  |  |
-|
Vanilla JavaScript |  |  |  |
+|
React |  |  |  |
+|
Angular |  |  |  |
+|
Svelte |  |  |  |
+|
Preact |  |  |  |
+|
Solid.js |  |  |  |
+|
Qwik |  |  |  |
+|
Vue 3 |  |  |  |
+|
jQuery |  |  |  |
+|
Alpine.js |  |  |  |
+|
Lit |  |  |  |
+|
VanJS |  |  |  |
+|
Lume.js |  |  |  |
+|
Vanilla JavaScript |  |  |  |
---
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 4afc8e4d..c827cefa 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -266,7 +266,7 @@ jobs:
badges:
name: Update Lint Badges
needs: [setup, lint]
- if: always()
+ if: ${{ always() && github.event_name != 'pull_request' }}
runs-on: ubuntu-latest
continue-on-error: true
steps:
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index f422241e..dd15d864 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -431,7 +431,7 @@ jobs:
badges:
name: Update Test Badges
needs: [setup, test]
- if: always()
+ if: ${{ always() && github.event_name != 'pull_request' }}
runs-on: ubuntu-latest
continue-on-error: true
steps:
diff --git a/apps/alpine/README.md b/apps/alpine/README.md
index 651c6500..858ae9b3 100644
--- a/apps/alpine/README.md
+++ b/apps/alpine/README.md
@@ -110,7 +110,7 @@ For simple interactive websites, Alpine hits the sweet spot. You get modern reac
## Real-World App
Since the weather app is very simple, it may be helpful to see a more practical implementation of a Alpine.js app. So, checkout:
-
+
> **Who Dat** - _WHOIS lookup for domain registration info_
> 🐙 Get it on GitHub at [github.com/Lissy93/who-dat](https://github.com/Lissy93/who-dat)
diff --git a/apps/angular/README.md b/apps/angular/README.md
index be7e8520..f9f3ddcd 100644
--- a/apps/angular/README.md
+++ b/apps/angular/README.md
@@ -110,7 +110,7 @@ For a simple weather app, we really didn't need any of Angular's big or flagship
## Real-World App
Since the weather app is very simple, it may be helpful to see a more practical implementation of a Angular app. So, checkout:
-
+
> **Domain Locker** - _Domain name portfolio manager_
> 🐙 Get it on GitHub at [github.com/Lissy93/domain-locker](https://github.com/Lissy93/domain-locker)
diff --git a/apps/lit/README.md b/apps/lit/README.md
index b3b18f07..256e199d 100644
--- a/apps/lit/README.md
+++ b/apps/lit/README.md
@@ -109,7 +109,7 @@ But Lit really does shine for design systems and component libraries where you n
## Real-World App
Since the weather app is very simple, it may be helpful to see a more practical implementation of a Lit app. So, checkout:
-
+
> **Email Comparison** - _An objective comparison of privacy-respecting email providers_
> 🐙 Get it on GitHub at [github.com/Lissy93/email-comparison](https://github.com/Lissy93/email-comparison)
diff --git a/apps/lit/src/forecast-item.js b/apps/lit/src/forecast-item.js
index cfb71eae..e1ddf2e8 100644
--- a/apps/lit/src/forecast-item.js
+++ b/apps/lit/src/forecast-item.js
@@ -3,7 +3,6 @@ import { WeatherUtils } from './weather-utils.js';
import { designSystemStyles, baseStyles, componentStyles } from './shared-styles.js';
export class ForecastItem extends LitElement {
- // eslint-disable-next-line
static styles = [
designSystemStyles,
baseStyles,
@@ -15,7 +14,6 @@ export class ForecastItem extends LitElement {
`
];
- // eslint-disable-next-line
static properties = {
forecastData: { type: Object },
index: { type: Number },
@@ -32,7 +30,7 @@ export class ForecastItem extends LitElement {
}
render() {
- if (!this.forecastData) return html``;
+ if (!this.forecastData) {return html``;}
const { daily, index } = this;
const dayName = WeatherUtils.formatDate(daily.time[index]);
@@ -134,7 +132,7 @@ export class ForecastItem extends LitElement {
updated(changedProperties) {
super.updated(changedProperties);
-
+
if (changedProperties.has('active') && this.active) {
// Smooth scroll to the expanded item
setTimeout(() => {
@@ -144,4 +142,4 @@ export class ForecastItem extends LitElement {
}
}
-customElements.define('forecast-item', ForecastItem);
\ No newline at end of file
+customElements.define('forecast-item', ForecastItem);
diff --git a/apps/lit/src/shared-styles.js b/apps/lit/src/shared-styles.js
index de0355a0..51babaf7 100644
--- a/apps/lit/src/shared-styles.js
+++ b/apps/lit/src/shared-styles.js
@@ -519,4 +519,4 @@ export const componentStyles = css`
grid-template-columns: 1fr;
}
}
-`;
\ No newline at end of file
+`;
diff --git a/apps/lit/src/weather-app.js b/apps/lit/src/weather-app.js
index bd6fad22..53236471 100644
--- a/apps/lit/src/weather-app.js
+++ b/apps/lit/src/weather-app.js
@@ -5,7 +5,6 @@ import './weather-search.js';
import './weather-display.js';
export class WeatherApp extends LitElement {
- // eslint-disable-next-line
static styles = [
designSystemStyles,
baseStyles,
@@ -23,7 +22,6 @@ export class WeatherApp extends LitElement {
`
];
- // eslint-disable-next-line
static properties = {
_searchQuery: { state: true },
_isLoading: { state: true },
@@ -100,7 +98,7 @@ export class WeatherApp extends LitElement {
try {
this._setLoading(true);
this._clearError();
-
+
this._weatherData = await this._weatherService.getWeatherByCity(city);
this._saveLocation(city);
this._showWeatherContent();
@@ -142,16 +140,16 @@ export class WeatherApp extends LitElement {
}
navigator.geolocation.getCurrentPosition(
- async (position) => {
+ async(position) => {
try {
this._setLoading(true);
this._clearError();
-
+
const { latitude, longitude } = position.coords;
this._weatherData = await this._weatherService.getWeatherData(latitude, longitude);
this._weatherData.locationName = 'Current Location';
this._searchQuery = 'Current Location';
-
+
this._showWeatherContent();
resolve();
} catch (error) {
@@ -209,4 +207,4 @@ export class WeatherApp extends LitElement {
}
}
-customElements.define('weather-app', WeatherApp);
\ No newline at end of file
+customElements.define('weather-app', WeatherApp);
diff --git a/apps/lit/src/weather-display.js b/apps/lit/src/weather-display.js
index 8aa08035..9ae360ed 100644
--- a/apps/lit/src/weather-display.js
+++ b/apps/lit/src/weather-display.js
@@ -4,7 +4,6 @@ import { designSystemStyles, baseStyles, componentStyles } from './shared-styles
import './weather-forecast.js';
export class WeatherDisplay extends LitElement {
- // eslint-disable-next-line
static styles = [
designSystemStyles,
baseStyles,
@@ -16,7 +15,6 @@ export class WeatherDisplay extends LitElement {
`
];
- // eslint-disable-next-line
static properties = {
weatherData: { type: Object },
isLoading: { type: Boolean },
@@ -68,7 +66,7 @@ export class WeatherDisplay extends LitElement {
_renderWeatherContent() {
const { current, locationName, country } = this.weatherData;
-
+
return html`
+