Files
vivespos-landing/modules/backend/widgets/form/partials/_field_range.php
avives 1f72193a64
Some checks are pending
Module sub-split / Sub-split (push) Waiting to run
feat: VivesPOS landing on Winter CMS 1.2 — theme + plugin + Dockerfile
- Base: wintercms/winter branch 1.2 (full framework)
- Theme vivespos: Canvas 7 + Bootstrap 5 CDN, custom CSS
- Layout: deferred GTM/GA4 tracking, JSON-LD SoftwareApplication
- Partials: hero (offline-first), features, modes (offline/nube toggle),
  screenshots, pricing (3 planes), comparison, FAQ, CTA
- Plugin VivesPOS.Site with ContactForm
- Dockerfile: PHP 8.2 Apache, port 80, healthcheck
- Added winter/wn-pages, blog, sitemap, seo plugins
- Active theme set to vivespos
2026-08-21 19:29:00 -06:00

41 lines
1.3 KiB
PHP

<!-- Range -->
<?php if ($this->previewMode): ?>
<span class="form-control"><?= isset($field->value) ? e($field->value) : '&nbsp;' ?></span>
<?php else: ?>
<?php
$min = $field->config['min'] ?? 0;
$max = $field->config['max'] ?? 100;
$step = $field->config['step'] ?? 1;
$value = $field->value;
if ($min > $max) {
$min = $max - $step;
}
if (is_null($value)) {
$value = ($min + $max) / 2;
}
?>
<input
type="range"
step="<?= $step ?>"
name="<?= $field->getName() ?>"
id="<?= $field->getId() ?>"
value="<?= e($value) ?>"
min="<?= $min ?>"
max="<?= $max ?>"
<?= $field->getAttributes() ?>
/>
<span style="position: absolute; transform: translateX(-50%)"></span>
<script>
(() => {
const input = document.getElementById("<?= $field->getId() ?>");
input.addEventListener("input", function () {
this.nextElementSibling.innerHTML = this.value;
var pos = ((this.value - <?= $min ?>) / (<?= $max ?> - <?= $min ?>) * 100);
this.nextElementSibling.style.left = `calc(${pos}% + ${8 - pos * 0.15}px)`;
});
input.dispatchEvent(new Event('input'));
})();
</script>
<?php endif; ?>