Add Stimulus capabilities controller

This commit is contained in:
Andreas Nedbal 2023-01-17 05:45:12 +01:00 committed by Andreas Nedbal
parent e81e85cf9a
commit 07ea833d13
3 changed files with 24 additions and 1 deletions

View File

@ -0,0 +1,21 @@
import { Controller } from '@hotwired/stimulus';
export default class extends Controller {
connect(): void {
const capabilities = [];
if ('share' in navigator) {
capabilities.push('cap-web-share');
}
if ('serviceWorker' in navigator) {
capabilities.push('cap-service-worker');
}
if ('Notification' in window) {
capabilities.push('cap-notification');
}
this.element.classList.add(...capabilities);
}
}

View File

@ -5,6 +5,7 @@ import CharacterCountController from "retrospring/controllers/character_count_co
import CharacterCountWarningController from "retrospring/controllers/character_count_warning_controller"; import CharacterCountWarningController from "retrospring/controllers/character_count_warning_controller";
import FormatPopupController from "retrospring/controllers/format_popup_controller"; import FormatPopupController from "retrospring/controllers/format_popup_controller";
import CollapseController from "retrospring/controllers/collapse_controller"; import CollapseController from "retrospring/controllers/collapse_controller";
import CapabilitiesController from "retrospring/controllers/capabilities_controller";
/** /**
* This module sets up Stimulus and our controllers * This module sets up Stimulus and our controllers
@ -17,6 +18,7 @@ export default function (): void {
window['Stimulus'] = Application.start(); window['Stimulus'] = Application.start();
window['Stimulus'].register('announcement', AnnouncementController); window['Stimulus'].register('announcement', AnnouncementController);
window['Stimulus'].register('autofocus', AutofocusController); window['Stimulus'].register('autofocus', AutofocusController);
window['Stimulus'].register('capabilities', CapabilitiesController);
window['Stimulus'].register('character-count', CharacterCountController); window['Stimulus'].register('character-count', CharacterCountController);
window['Stimulus'].register('character-count-warning', CharacterCountWarningController); window['Stimulus'].register('character-count-warning', CharacterCountWarningController);
window['Stimulus'].register('collapse', CollapseController); window['Stimulus'].register('collapse', CollapseController);

View File

@ -23,7 +23,7 @@
= csrf_meta_tags = csrf_meta_tags
= yield(:og) = yield(:og)
= yield(:meta) = yield(:meta)
%body{ class: user_signed_in? ? '' : 'not-logged-in' } %body{ class: user_signed_in? ? nil : 'not-logged-in', data: { controller: "capabilities" } }
- if user_signed_in? - if user_signed_in?
= render 'navigation/main' = render 'navigation/main'
- else - else