diff --git a/hub/services/static/css/price-calculator.css b/hub/services/static/css/price-calculator.css index a65d8cc..5c1ef53 100644 --- a/hub/services/static/css/price-calculator.css +++ b/hub/services/static/css/price-calculator.css @@ -66,4 +66,13 @@ .btn-success.shadow:hover { transform: translateY(-1px); box-shadow: 0 0.25rem 0.75rem rgba(25, 135, 84, 0.2) !important; +} + +/* Ensure collapse starts properly hidden */ +#managedServiceIncludes { + transition: all 0.35s ease; +} + +#managedServiceIncludes:not(.show) { + display: none; } \ No newline at end of file diff --git a/hub/services/static/js/price-calculator/ui-manager.js b/hub/services/static/js/price-calculator/ui-manager.js index f37b44b..9b6a500 100644 --- a/hub/services/static/js/price-calculator/ui-manager.js +++ b/hub/services/static/js/price-calculator/ui-manager.js @@ -87,20 +87,16 @@ class UIManager { updateAddonPricingDisplay(domManager, mandatoryAddons, selectedOptionalAddons) { // Get references to the managed service includes elements const managedServiceIncludesContainer = domManager.get('managedServiceIncludesContainer'); - const managedServiceIncludes = domManager.get('managedServiceIncludes'); const managedServiceToggleButton = domManager.get('managedServiceToggleButton'); if (managedServiceIncludesContainer) { // Clear existing content managedServiceIncludesContainer.innerHTML = ''; - // Show/hide the entire managed service includes section based on mandatory addons + // Show/hide the toggle button based on mandatory addons const hasMandatoryAddons = mandatoryAddons && mandatoryAddons.length > 0; - if (managedServiceIncludes) { - managedServiceIncludes.style.display = hasMandatoryAddons ? 'block' : 'none'; - } - + // Only control button visibility - let Bootstrap handle collapse behavior completely if (managedServiceToggleButton) { managedServiceToggleButton.style.display = hasMandatoryAddons ? 'inline-block' : 'none'; } @@ -111,7 +107,7 @@ class UIManager { const addonRow = document.createElement('div'); addonRow.className = 'd-flex justify-content-between small text-muted mb-1'; addonRow.innerHTML = ` - ${addon.name} + Add-on: ${addon.name} CHF ${addon.price} `; managedServiceIncludesContainer.appendChild(addonRow); diff --git a/hub/services/templates/services/offering_detail.html b/hub/services/templates/services/offering_detail.html index 6e995b5..c0020dc 100644 --- a/hub/services/templates/services/offering_detail.html +++ b/hub/services/templates/services/offering_detail.html @@ -9,7 +9,6 @@ {% block extra_js %} {% if debug %} -{% compress js inline %} @@ -51,7 +50,6 @@ function selectPlan(element) { } } -{% endcompress %} {% else %} {% compress js %} @@ -444,7 +442,7 @@ function selectPlan(element) {
Managed Service (incl. Compute) -
@@ -452,12 +450,8 @@ function selectPlan(element) {
-