mirror of
https://github.com/OCA/web.git
synced 2025-02-22 13:21:25 +02:00
[ADD] web_widget_slick: Create module
* Create SlickJS widget field * Remove template test * Move web_widget_slick assets to backend only, update ReadMe, bump version * Remove highlighting in ReadMe
This commit is contained in:
8
web_widget_slick/static/src/css/slick.css
Executable file
8
web_widget_slick/static/src/css/slick.css
Executable file
@@ -0,0 +1,8 @@
|
||||
/* Copyright (C) 2016-TODAY LasLabs, Inc. [https://laslabs.com]
|
||||
* @author Dave Lasley <dave@laslabs.com>
|
||||
* @license AGPL-3
|
||||
**/
|
||||
|
||||
.slick-arrow{
|
||||
background-color: #4c4c4c !important;
|
||||
}
|
||||
114
web_widget_slick/static/src/js/widget_slick.js
Normal file
114
web_widget_slick/static/src/js/widget_slick.js
Normal file
@@ -0,0 +1,114 @@
|
||||
/* © 2016-TODAY LasLabs Inc.
|
||||
* License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
*/
|
||||
|
||||
odoo.define('web_widget_slick.slick_widget', function(require){
|
||||
"use strict";
|
||||
|
||||
var core = require('web.core');
|
||||
var AbstractManyField = require('web.form_relational').AbstractManyField;
|
||||
|
||||
var QWeb = core.qweb;
|
||||
var _t = core._t;
|
||||
|
||||
var FieldSlickImages = AbstractManyField.extend({
|
||||
|
||||
className: 'o_slick',
|
||||
template: 'FieldSlickImages',
|
||||
$slick: null,
|
||||
no_rerender: true,
|
||||
loading: [],
|
||||
loaded: 0,
|
||||
|
||||
defaults: {
|
||||
lazyLoad: 'ondemand',
|
||||
fieldName: 'datas',
|
||||
modelName: 'ir.attachment',
|
||||
slidesToShow: 3,
|
||||
slidesToScroll: 1,
|
||||
dots: true,
|
||||
infinite: true,
|
||||
speed: 500,
|
||||
arrows: true,
|
||||
responsive: [
|
||||
{
|
||||
breakpoint: 1024,
|
||||
settings: {
|
||||
slidesToShow: 3,
|
||||
slidesToScroll: 3,
|
||||
infinite: true,
|
||||
dots: true
|
||||
}
|
||||
},
|
||||
{
|
||||
breakpoint: 600,
|
||||
settings: {
|
||||
slidesToShow: 2,
|
||||
slidesToScroll: 2
|
||||
}
|
||||
},
|
||||
{
|
||||
breakpoint: 480,
|
||||
settings: {
|
||||
slidesToShow: 1,
|
||||
slidesToScroll: 1
|
||||
}
|
||||
},
|
||||
// You can unslick at a given breakpoint now by adding:
|
||||
// settings: "unslick"
|
||||
// instead of a settings object
|
||||
],
|
||||
},
|
||||
|
||||
init: function(field_manager, node) {
|
||||
this._super(field_manager, node);
|
||||
this.options = _.defaults(this.options, this.defaults);
|
||||
},
|
||||
|
||||
destroy_content: function() {
|
||||
var self = this;
|
||||
if (this.$slick) {
|
||||
console.log('Destroying SlickJS');
|
||||
var $imgs = this.$el.find('img');
|
||||
$imgs.each(function(idx, val){
|
||||
console.log('Removing ' + $imgs[idx]);
|
||||
self.$slick.slick('slickRemove', $imgs[idx]);
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
render_value: function() {
|
||||
var self = this;
|
||||
this._super();
|
||||
console.log('Rerendering SlickJS');
|
||||
this.destroy_content();
|
||||
|
||||
var baseUrl = '/web/image/' + this.options.modelName;
|
||||
|
||||
this.$slick = $('<div class="slick-container"></div>');
|
||||
this.$el.append(this.$slick);
|
||||
this.$slick.slick(this.options);
|
||||
|
||||
self.loading.push.apply(self.get('value'));
|
||||
|
||||
_.each(self.get('value'), function(id){
|
||||
var $img = $('<img></img>');
|
||||
var $div = $('<div></div>');
|
||||
$div.append($img);
|
||||
$img.attr('data-lazy', baseUrl + '/' + id + '/' + self.options.fieldName);
|
||||
self.$el.append($div);
|
||||
self.$slick.slick('slickAdd', $div);
|
||||
self.$slick.slick('slickGoTo', 0);
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
});
|
||||
|
||||
core.form_widget_registry.add("one2many_slick_images", FieldSlickImages);
|
||||
|
||||
return {
|
||||
FieldSlickImages: FieldSlickImages,
|
||||
}
|
||||
|
||||
});
|
||||
16
web_widget_slick/static/src/xml/field_templates.xml
Normal file
16
web_widget_slick/static/src/xml/field_templates.xml
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--
|
||||
© 2016-TODAY LasLabs Inc.
|
||||
@license AGPL-3 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
-->
|
||||
|
||||
<templates id="field_templates" xml:space="preserve">
|
||||
<t t-name="FieldSlickImages">
|
||||
<span t-att-style="widget.node.attrs.style">
|
||||
<t t-if="!widget.get('effective_readonly')">
|
||||
|
||||
</t>
|
||||
</span>
|
||||
</t>
|
||||
</templates>
|
||||
Reference in New Issue
Block a user