feat: VivesPOS landing on Winter CMS 1.2 — theme + plugin + Dockerfile
Some checks are pending
Module sub-split / Sub-split (push) Waiting to run
Some checks are pending
Module sub-split / Sub-split (push) Waiting to run
- 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
This commit is contained in:
81
modules/system/assets/ui/js/callout.js
Normal file
81
modules/system/assets/ui/js/callout.js
Normal file
@@ -0,0 +1,81 @@
|
||||
/*
|
||||
* Callout
|
||||
*
|
||||
* - Documentation: ../docs/callout.md
|
||||
*/
|
||||
+function ($) {
|
||||
'use strict';
|
||||
|
||||
// CALLOUT CLASS DEFINITION
|
||||
// ======================
|
||||
|
||||
var dismiss = '[data-dismiss="callout"]'
|
||||
var Callout = function (el) {
|
||||
$(el).on('click', dismiss, this.close)
|
||||
}
|
||||
|
||||
Callout.prototype.close = function (e) {
|
||||
var $this = $(this)
|
||||
var selector = $this.attr('data-target')
|
||||
|
||||
if (!selector) {
|
||||
selector = $this.attr('href')
|
||||
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
|
||||
}
|
||||
|
||||
var $parent = $(selector)
|
||||
|
||||
if (e) e.preventDefault()
|
||||
|
||||
if (!$parent.length) {
|
||||
$parent = $this.hasClass('callout') ? $this : $this.parent()
|
||||
}
|
||||
|
||||
$parent.trigger(e = $.Event('close.oc.callout'))
|
||||
|
||||
if (e.isDefaultPrevented()) return
|
||||
|
||||
$parent.removeClass('in')
|
||||
|
||||
function removeElement() {
|
||||
$parent.trigger('closed.oc.callout').remove()
|
||||
}
|
||||
|
||||
$.support.transition && $parent.hasClass('fade')
|
||||
? $parent
|
||||
.one($.support.transition.end, removeElement)
|
||||
.emulateTransitionEnd(500)
|
||||
: removeElement()
|
||||
}
|
||||
|
||||
// CALLOUT PLUGIN DEFINITION
|
||||
// =======================
|
||||
|
||||
var old = $.fn.callout
|
||||
|
||||
$.fn.callout = function (option) {
|
||||
return this.each(function () {
|
||||
var $this = $(this)
|
||||
var data = $this.data('oc.callout')
|
||||
|
||||
if (!data) $this.data('oc.callout', (data = new Callout(this)))
|
||||
if (typeof option == 'string') data[option].call($this)
|
||||
})
|
||||
}
|
||||
|
||||
$.fn.callout.Constructor = Callout
|
||||
|
||||
// CALLOUT NO CONFLICT
|
||||
// =================
|
||||
|
||||
$.fn.callout.noConflict = function () {
|
||||
$.fn.callout = old
|
||||
return this
|
||||
}
|
||||
|
||||
// CALLOUT DATA-API
|
||||
// ==============
|
||||
|
||||
$(document).on('click.oc.callout.data-api', dismiss, Callout.prototype.close)
|
||||
|
||||
}(jQuery);
|
||||
Reference in New Issue
Block a user