: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
api.ModuleServiceMenu = class extends api.Module {
id: 'style_service_menu',
value: 'image-horizontal',
id: 'title_service_menu',
selector: '.tb-menu-title'
id: 'description_service_menu',
selector: '.tb-menu-description'
id: 'price_service_menu',
selector: '.tb-menu-price'
show: '#price_fields_holder',
hide: 'price_service_menu'
hide: '#price_fields_holder',
show: 'price_service_menu'
id: 'price_fields_holder',
selector: '.tb-price-title'
selector: '.tb-price-value'
id: 'image_service_menu',
id: 'appearance_image_service_menu',
id: 'image_size_service_menu',
id: 'width_service_menu',
id: 'height_service_menu',
wrap_class: 'tb_group_element_lightbox tb_group_element_newtab'
id: 'lightbox_size_unit_width',
id: 'lightbox_size_unit_height',
wrap_class: 'tb_group_element_lightbox'
id: 'highlight_service_menu',
'highlight_text_service_menu',
'highlight_color_service_menu'
'highlight_text_service_menu',
'highlight_color_service_menu'
id: 'highlight_text_service_menu',
selector: '.tb-highlight-text'
id: 'highlight_color_service_menu',
custom_css: 'css_service_menu'
title_service_menu: i18n.menut,
description_service_menu: i18n.desc,
price_service_menu: '$200',
image_service_menu: 'https://themify.org/img/menu-pizza.png',
const setting = data || this.get('mod_settings');
return api.Helper.limitString((setting.title_service_menu || setting.description_service_menu));
const setting = data || this.get('mod_settings'),
imgUrl=setting.image_service_menu,
return super.getImage(setting);
static builderSave(settings) {
style_service_menu: 'image-left',
lightbox_size_unit_width:'pixels',
lightbox_size_unit_height: 'pixels',
highlight_color_service_menu: 'default',
appearance_image_service_menu:false,
highlight_service_menu:false,
if (settings[key] === def[key] || ((key==='add_price_check' || key==='appearance_image_service_menu' || key==='highlight_service_menu' || key==='image_zoom_icon') && (settings[key]==='|' || settings[key]==='false'))) {
if(!settings.highlight_service_menu){
delete settings.highlight_text_service_menu;
delete settings.highlight_color_service_menu;
if(!settings.image_service_menu){
delete settings.width_service_menu;
delete settings.height_service_menu;
if(!settings.link_service_menu){
delete settings.link_options;
if(!settings.link_options){
delete settings.image_zoom_icon;
if(settings.link_options!=='lightbox'){
delete settings.lightbox_width;
delete settings.lightbox_height;
if(!settings.lightbox_width){
delete settings.lightbox_size_unit_width;
if(!settings.lightbox_height){
delete settings.lightbox_size_unit_height;
if(!settings.add_price_check){
delete settings.price_fields_holder;
if(settings.price_fields_holder?.length===0){
delete settings.price_fields_holder;
delete settings.price_service_menu;
super.builderSave(settings);
const module = createElement(),
imageContent = createElement('','tb-image-content tf_overflow'),
menuTitleWrap=createElement('', 'tb-menu-title-wrap'),
classes = ['module', 'module-service-menu'],
constructor=this.constructor;
if(data.appearance_image_service_menu){
classes.push(data.appearance_image_service_menu.split('|').join(' '));
if (data.style_service_menu) {
classes.push(data.style_service_menu);
if (data.css_service_menu) {
classes.push(data.css_service_menu);
if (data.highlight_service_menu) {
const color=data.highlight_color_service_menu && data.highlight_color_service_menu!=='default'?data.highlight_color_service_menu:'tb_default_color';
if (data.highlight_text_service_menu) {
const highlightText=constructor.getModuleTitle(data.title_service_menu,'highlight_text_service_menu');
highlightText.className='tb-highlight-text';
module.appendChild(highlightText);
classes.push('has-highlight',color);
classes.push('no-highlight');
module.className = classes.join(' ');
if (data.image_service_menu){
const imageWrap =createElement('','tb-image-wrap tf_left'),
img=constructor.setEditableImage(createElement('img',{class:'tb_menu_image',alt:data.title_service_menu || data.description_service_menu}),'image_service_menu','width_service_menu','height_service_menu',data);
if (data.link_service_menu) {
const link = createElement('a',{href:data.link_service_menu}),
linkType=data.link_options;
if(linkType === 'lightbox'){
link.className='lightbox-builder themify_lightbox';
const lbWdith=data.lightbox_width,
lbHeight=data.lightbox_height,
units = {pixels: 'px',percents: '%'};
lightbox_settings.push(lbWdith + units[data.lightbox_size_unit_width]);
lightbox_settings.push(lbHeight + units[data.lightbox_size_unit_height]);
if(lightbox_settings.length>0){
link.dataset.zoomConfig=lightbox_settings.join('|');
else if(linkType==='newtab'){
if(data.image_zoom_icon === 'zoom' && linkType!== 'regular'){
const zoom = createElement('span','zoom');
zoom.appendChild(api.Helper.getIcon((linkType === 'newtab'?'fa-external-link':'fa-search')));
imageWrap.appendChild(link);
imageWrap.appendChild(img);
module.appendChild(imageWrap);
if (data.title_service_menu) {
menuTitleWrap.appendChild(constructor._setEditableContent(createElement(data.title_tag || 'h4','tb-menu-title'),'title_service_menu',data.title_service_menu));
if (data.description_service_menu) {
menuTitleWrap.appendChild(constructor._setEditableContent(createElement('','tb-menu-description'),'description_service_menu',data.description_service_menu));
imageContent.appendChild(menuTitleWrap);
if (data.price_service_menu !== '' || data.add_price_check === 'yes' ) {
const menuPrice=createElement('','tb-menu-price');
if(data.add_price_check=== 'yes'){
const arr=data.price_fields_holder || [];
for(let i=0;i<arr.length;++i){
let priceItem=createElement('','tb-price-item');
priceItem.appendChild(constructor._setEditableContent(createElement('','tb-price-title'),'label',arr[i].label,'','price_fields_holder',i));
priceItem.appendChild(constructor._setEditableContent(createElement('','tb-price-value'),'price',arr[i].price,'','price_fields_holder',i));
menuPrice.appendChild(priceItem);
constructor._setEditableContent(menuPrice,'price_service_menu',data.price_service_menu);
imageContent.appendChild(menuPrice);
module.appendChild(imageContent);