Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 50 additions & 11 deletions packages/accessibility-buttons/src/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,22 @@
import './accessibility-buttons.css'

function savePreference(key, value) {
try {
localStorage.setItem(key, value)
} catch (e) {
console.warn('Não foi possível salvar a preferência:', e)
}
}

function loadPreference(key) {
try {
return localStorage.getItem(key)
} catch (e) {
console.warn('Não foi possível carregar a preferência:', e)
return null
}
}

/**
* accessibilityButtons
* @param {Array} -
Expand Down Expand Up @@ -38,11 +55,11 @@
// Set buttons name and aria label
if (options) {
for (var key in options) {
if (options.hasOwnProperty(key)) {

Check failure on line 58 in packages/accessibility-buttons/src/index.js

View workflow job for this annotation

GitHub Actions / Run Checks

Do not access Object.prototype method 'hasOwnProperty' from target object
var obj = options[key]

for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {

Check failure on line 62 in packages/accessibility-buttons/src/index.js

View workflow job for this annotation

GitHub Actions / Run Checks

Do not access Object.prototype method 'hasOwnProperty' from target object
setting[key][prop] = obj[prop]
}
}
Expand All @@ -59,9 +76,10 @@
}),
$contrastButton = $accessibilityButtons.filter((button) => {
return button.getAttribute('data-accessibility') === 'contrast'
}),
storageFont = localStorage.accessibility_font,
storageContrast = localStorage.accessibility_contrast
})

var storageFont = loadPreference('accessibility_font')
var storageContrast = loadPreference('accessibility_contrast')

// Check if exist storage and set the correct button names and aria attributes
if (storageFont && $fontButton) {
Expand Down Expand Up @@ -116,7 +134,7 @@
)
})

localStorage.removeItem('accessibility_font')
savePreference('accessibility_font', 'false')
} else if (type === 'contrast') {
$contrastButton.forEach((button) => {
button.innerHTML = setting.contrast.nameButtonAdd
Expand All @@ -126,15 +144,14 @@
)
})

localStorage.removeItem('accessibility_contrast')
savePreference('accessibility_contrast', 'false')
}
} else {
$body.classList.add(classname)

if (type === 'font') {
if (!storageFont) {
localStorage.setItem('accessibility_font', true)
}
savePreference('accessibility_font', 'true')

$fontButton.forEach((button) => {
button.innerHTML = setting.font.nameButtonDecrease
button.setAttribute(
Expand All @@ -143,9 +160,8 @@
)
})
} else if (type === 'contrast') {
if (!storageContrast) {
localStorage.setItem('accessibility_contrast', true)
}
savePreference('accessibility_contrast', 'true')

$contrastButton.forEach((button) => {
button.innerHTML = setting.contrast.nameButtonRemove
button.setAttribute(
Expand All @@ -163,3 +179,26 @@
$accessibilityButtons[i].addEventListener('click', accessibility())
}
}

// Apply System Theme Preference
function applySystemThemePreference() {
if (window.matchMedia) {
const prefersDark = window.matchMedia(
'(prefers-color-scheme: dark)',
).matches

if (prefersDark) {
document.body.style.backgroundColor = 'black'
document.body.style.color = 'white'
console.info('Dark theme applied.')
} else {
document.body.style.backgroundColor = 'white'
document.body.style.color = 'black'
console.info('Light theme applied.')
}
}
}

document.addEventListener('DOMContentLoaded', function () {
applySystemThemePreference()
})
Loading