Fix data-theme and data-scale widget attributes not being applied
- Remove theme/scale assignments that override widget options in build process - Widget now properly uses data-theme and data-scale attributes from HTML - Both light and dark themes work correctly when multiple widgets on same page - Scale attribute properly applies to each widget independently
This commit is contained in:
parent
4ec42fdbc0
commit
c4770d5ee6
11
build.js
11
build.js
@ -141,8 +141,9 @@ function createWidgetJS(css, html, js) {
|
||||
.replace(/document\.querySelectorAll\(/g, 'this.container.querySelectorAll(')
|
||||
// Remove the DOMContentLoaded listener and class instantiation - we'll handle this in the widget wrapper
|
||||
.replace(/document\.addEventListener\('DOMContentLoaded'.*?\n.*?new DogCalorieCalculator.*?\n.*?\}\);/s, '')
|
||||
// Remove duplicate theme/scale assignments that override options
|
||||
.replace(/this\.theme = this\.getThemeFromURL\(\) \|\| 'system';\s*\n\s*this\.scale = this\.getScaleFromURL\(\) \|\| 1\.0;/g, '')
|
||||
// Remove theme/scale assignments that would override widget options
|
||||
.replace(/this\.theme = this\.getThemeFromURL\(\) \|\| CALCULATOR_CONFIG\.defaultTheme;/g, '')
|
||||
.replace(/this\.scale = this\.getScaleFromURL\(\) \|\| CALCULATOR_CONFIG\.defaultScale;/g, '')
|
||||
// Add widget initialization methods
|
||||
.replace(/constructor\(\) \{/, `constructor(container, options = {}) {
|
||||
this.container = container;
|
||||
@ -186,14 +187,14 @@ function createWidgetJS(css, html, js) {
|
||||
// Remove existing theme classes
|
||||
calculatorContainer.classList.remove('theme-light', 'theme-dark', 'theme-system');
|
||||
// Add the selected theme class
|
||||
if (['light', 'dark', 'system'].includes(this.options.theme)) {
|
||||
calculatorContainer.classList.add('theme-' + this.options.theme);
|
||||
if (['light', 'dark', 'system'].includes(this.theme)) {
|
||||
calculatorContainer.classList.add('theme-' + this.theme);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
applyScale() {
|
||||
const scale = Math.max(0.5, Math.min(2.0, this.options.scale));
|
||||
const scale = Math.max(0.5, Math.min(2.0, this.scale));
|
||||
if (scale !== 1.0) {
|
||||
this.container.style.transform = \`scale(\${scale})\`;
|
||||
this.container.style.transformOrigin = 'top left';
|
||||
|
||||
@ -2106,8 +2106,8 @@ const CALCULATOR_CONFIG = {
|
||||
this.scale = this.options.scale;
|
||||
this.currentMER = 0;
|
||||
this.isImperial = false;
|
||||
this.theme = this.getThemeFromURL() || CALCULATOR_CONFIG.defaultTheme;
|
||||
this.scale = this.getScaleFromURL() || CALCULATOR_CONFIG.defaultScale;
|
||||
|
||||
|
||||
this.foodSources = [];
|
||||
this.maxFoodSources = CALCULATOR_CONFIG.maxFoodSources;
|
||||
this.mealsPerDay = 2;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user