From 63c6e5deae79d748234aaf87f2a5baa254f5848d Mon Sep 17 00:00:00 2001 From: ShevArtV Date: Fri, 23 Sep 2022 12:25:34 +0300 Subject: [PATCH 01/11] =?UTF-8?q?=D0=9C=D0=B5=D0=BB=D0=BA=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/minishop2/css/web/default.css | 28 +++++++++++++++++++ .../web/vanilajs/modules/msizitoast.class.js | 2 +- .../js/web/vanilajs/modules/msorder.class.js | 2 +- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/assets/components/minishop2/css/web/default.css b/assets/components/minishop2/css/web/default.css index c7d3c9496..f843c41d7 100644 --- a/assets/components/minishop2/css/web/default.css +++ b/assets/components/minishop2/css/web/default.css @@ -49,3 +49,31 @@ div.jGrowl > .ui-state-highlight { word-wrap: normal; white-space: pre; } + +/* Input Number */ +.ms-hidden{ + position: absolute !important; + opacity: 0; + visibility: hidden; + z-index: -10000 !important; +} +.ms-input-number-wrap{ + display: flex; + font-size: 16px; +} +.ms-input-number-emulator{ + width: 3em; + text-align: center; + border: none; + background-color: transparent; +} +.ms-input-number-emulator:focus, .ms-input-number-emulator:active{ + outline: none; + box-shadow: none; + border: none; +} +.ms-input-number-btn{ + display: flex; + align-items: center; + justify-content: center; +} diff --git a/assets/components/minishop2/js/web/vanilajs/modules/msizitoast.class.js b/assets/components/minishop2/js/web/vanilajs/modules/msizitoast.class.js index 5a386d761..bc60543dd 100644 --- a/assets/components/minishop2/js/web/vanilajs/modules/msizitoast.class.js +++ b/assets/components/minishop2/js/web/vanilajs/modules/msizitoast.class.js @@ -2,7 +2,7 @@ import MsNotify from './msnotify.class.js'; export default class MsIziToast extends MsNotify { show(type, message) { - if (window[this.config.handlerClassName]) { + if (window[this.config.handlerClassName] && message) { const options = Object.assign(this.config.handlerOptions, { title: message }); try { window[this.config.handlerClassName][type](options); diff --git a/assets/components/minishop2/js/web/vanilajs/modules/msorder.class.js b/assets/components/minishop2/js/web/vanilajs/modules/msorder.class.js index 0f0cb1c20..99db7baf4 100644 --- a/assets/components/minishop2/js/web/vanilajs/modules/msorder.class.js +++ b/assets/components/minishop2/js/web/vanilajs/modules/msorder.class.js @@ -112,7 +112,7 @@ export default class MsOrder { } } - field.value = response.data[key]; + field.value = response.data[key] || ''; field.classList.remove('error'); field.closest(this.inputParent).classList.remove('error'); } From 54e7158185674a782983cc43b4b07b10ab3fc16b Mon Sep 17 00:00:00 2001 From: ShevArtV Date: Fri, 23 Sep 2022 12:44:55 +0300 Subject: [PATCH 02/11] =?UTF-8?q?=D0=94=D0=BE=D0=BF=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D0=B8=D0=BC=D0=B5=D0=BD=D0=BE=D0=B2=D1=8B=D0=B2=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D1=8B=20=D0=B2=20=D0=BD=D0=B0?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=B0=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _build/data/transport.settings.php | 6 +++--- .../minishop2/js/web/vanilajs/message_settings.json | 6 +++--- .../minishop2/js/web/vanilajs/modules/minishop.class.js | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/_build/data/transport.settings.php b/_build/data/transport.settings.php index 1bec79b7e..bae91c5eb 100644 --- a/_build/data/transport.settings.php +++ b/_build/data/transport.settings.php @@ -299,7 +299,7 @@ 'area' => 'ms2_frontend', ], 'ms2_cart_js_class_name' => [ - 'value' => 'msCart', + 'value' => 'MsCart', 'xtype' => 'textfield', 'area' => 'ms2_frontend', ], @@ -309,7 +309,7 @@ 'area' => 'ms2_frontend', ], 'ms2_order_js_class_name' => [ - 'value' => 'msOrder', + 'value' => 'MsOrder', 'xtype' => 'textfield', 'area' => 'ms2_frontend', ], @@ -319,7 +319,7 @@ 'area' => 'ms2_frontend', ], 'ms2_notify_js_class_name' => [ - 'value' => 'msIziToast', + 'value' => 'MsIziToast', 'xtype' => 'textfield', 'area' => 'ms2_frontend', ], diff --git a/assets/components/minishop2/js/web/vanilajs/message_settings.json b/assets/components/minishop2/js/web/vanilajs/message_settings.json index d3651b02d..b9dbfaa8e 100644 --- a/assets/components/minishop2/js/web/vanilajs/message_settings.json +++ b/assets/components/minishop2/js/web/vanilajs/message_settings.json @@ -1,11 +1,11 @@ { - "msNotify": {}, - "msIziToast": { + "MsNotify": {}, + "MsIziToast": { "jsPath": "assets/components/minishop2/js/web/vanilajs/lib/izitoast/iziToast.min.js", "cssPath": "assets/components/minishop2/css/web/lib/izitoast/iziToast.min.css", "handlerClassName": "iziToast", "handlerOptions": { "timeout": 1500 } - } + }, } diff --git a/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js b/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js index 43305177f..a1ba2c202 100644 --- a/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js +++ b/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js @@ -52,7 +52,7 @@ export default class MiniShop { 'cartClassPath', 'cartClassName', './mscart.class.js', - 'msCart', + 'MsCart', 'Произошла ошибка при загрузке модуля корзины'); this.setHandler( @@ -60,7 +60,7 @@ export default class MiniShop { 'orderClassPath', 'orderClassName', './msorder.class.js', - 'msOrder', + 'MsOrder', 'Произошла ошибка при загрузке модуля отправки заказа'); if (this.miniShop2Config.notifySettingsPath) { @@ -73,7 +73,7 @@ export default class MiniShop { 'notifyClassPath', 'notifyClassName', './msnotify.class.js', - 'msNotify', + 'MsNotify', 'Произошла ошибка при загрузке модуля уведомлений', messageSettings); } From 7d81401291747adf857dc5f9644e4d097dbdf8d1 Mon Sep 17 00:00:00 2001 From: ShevArtV Date: Fri, 23 Sep 2022 13:06:02 +0300 Subject: [PATCH 03/11] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20controller().=20=D0=94=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4?= =?UTF-8?q?=20getObjectMethod().=20=D0=AD=D1=82=D0=BE=20=D0=BD=D1=83=D0=B6?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D1=85=D0=BE=D0=B4=D0=B0=20=D0=BE=D1=82=20callbacks=20=D0=BA=20?= =?UTF-8?q?events?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../js/web/vanilajs/modules/minishop.class.js | 34 +++++-------------- 1 file changed, 8 insertions(+), 26 deletions(-) diff --git a/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js b/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js index a1ba2c202..8e9221034 100644 --- a/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js +++ b/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js @@ -86,38 +86,20 @@ export default class MiniShop { const action = form.querySelector(this.action) ? form.querySelector(this.action).value : ''; if (action) { - const formData = new FormData(form); + const formData = new FormData(form), + components = this.getObjectMethod(action); formData.append(this.actionName, action); this.formData = formData; - - this.controller(action); + this[components.object][components.method](this.formData); } }); } - controller(action) { - switch (action) { - case 'cart/add': - this.Cart.add(this.formData); - break; - case 'cart/remove': - this.Cart.remove(this.formData); - break; - case 'cart/change': - this.Cart.change(this.formData); - break; - case 'cart/clean': - this.Cart.clean(this.formData); - break; - case 'order/submit': - this.Order.submit(this.formData); - break; - case 'order/clean': - this.Order.clean(this.formData); - break; - default: - return; - } + getObjectMethod(action) { + const actionComponents = action.split('/'), + object = actionComponents[0].replace(actionComponents[0].substring(0, 1), actionComponents[0].substring(0, 1).toUpperCase()), + method = actionComponents[1]; + return {object, method}; } callbacksObjectTemplate() { From acd02f090c7fdb178ef7934ec17833a88f222afa Mon Sep 17 00:00:00 2001 From: ShevArtV Date: Fri, 23 Sep 2022 13:23:45 +0300 Subject: [PATCH 04/11] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BF=D0=BE=D1=80=D1=8F=D0=B4=D0=BE=D0=BA=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BA=D0=B0=D0=B7=D0=B0=20=D1=83=D0=B2=D0=B5=D0=B4=D0=BE?= =?UTF-8?q?=D0=BC=D0=BB=D0=B5=D0=BD=D0=B8=D0=B9,=20=D1=82=D0=B5=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D1=8C=20=D0=B8=D1=85=20=D0=BC=D0=BE=D0=B6=D0=BD?= =?UTF-8?q?=D0=BE=20=D0=BE=D1=82=D0=BC=D0=B5=D0=BD=D1=8F=D1=82=D1=8C.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../minishop2/js/web/vanilajs/modules/minishop.class.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js b/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js index 8e9221034..c40a42de2 100644 --- a/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js +++ b/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js @@ -208,15 +208,13 @@ export default class MiniShop { if (response.ok) { const result = await response.json(); if (result.success) { - if (result.message) { - this.Message.success(result.message); - } this.runCallback(callbacks.response.success, this, result); this.runCallback(userCallbacks.response.success, this, result); + result.message ? this.Message.success(result.message) : ''; } else { - this.Message.error(result.message); this.runCallback(callbacks.response.error, this, result); this.runCallback(userCallbacks.response.error, this, result); + result.message ? this.Message.error(result.message) : ''; } this.runCallback(callbacks.ajax.done, this, response); this.runCallback(userCallbacks.ajax.done, this, response); From 939702e2f9bd9fa134adc6e14cc975ca88f3178e Mon Sep 17 00:00:00 2001 From: ShevArtV Date: Sun, 25 Sep 2022 12:22:55 +0300 Subject: [PATCH 05/11] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BF=D0=BE=D1=80=D1=8F=D0=B4=D0=BE=D0=BA=20=D1=83?= =?UTF-8?q?=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA=D0=B8=20=D0=BE=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=87=D0=B8=D0=BA=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=B2=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B8=20initializ?= =?UTF-8?q?e()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../js/web/vanilajs/modules/minishop.class.js | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js b/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js index c40a42de2..b554e88db 100644 --- a/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js +++ b/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js @@ -47,22 +47,6 @@ export default class MiniShop { } async initialize() { - this.setHandler( - 'Cart', - 'cartClassPath', - 'cartClassName', - './mscart.class.js', - 'MsCart', - 'Произошла ошибка при загрузке модуля корзины'); - - this.setHandler( - 'Order', - 'orderClassPath', - 'orderClassName', - './msorder.class.js', - 'MsOrder', - 'Произошла ошибка при загрузке модуля отправки заказа'); - if (this.miniShop2Config.notifySettingsPath) { const response = await this.sendResponse({ url: this.miniShop2Config.notifySettingsPath, method: 'GET' }); if (response.ok) { @@ -80,6 +64,22 @@ export default class MiniShop { } } + this.setHandler( + 'Cart', + 'cartClassPath', + 'cartClassName', + './mscart.class.js', + 'MsCart', + 'Произошла ошибка при загрузке модуля корзины'); + + this.setHandler( + 'Order', + 'orderClassPath', + 'orderClassName', + './msorder.class.js', + 'MsOrder', + 'Произошла ошибка при загрузке модуля отправки заказа'); + document.addEventListener('submit', e => { e.preventDefault(); const form = e.target; From 177376b15008d2b26db6783058f9b7ccdb2f7372 Mon Sep 17 00:00:00 2001 From: ShevArtV Date: Sun, 25 Sep 2022 12:28:11 +0300 Subject: [PATCH 06/11] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=81=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D0=B5=20minishop-?= =?UTF-8?q?loaded,=20=D0=B2=D0=BE=D0=B7=D0=BD=D0=B8=D0=BA=D0=B0=D0=B5?= =?UTF-8?q?=D1=82=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20=D0=B8=D0=BD=D0=B8?= =?UTF-8?q?=D1=86=D0=B8=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20?= =?UTF-8?q?miniShop2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../minishop2/js/web/vanilajs/modules/minishop.class.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js b/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js index b554e88db..43bccb8ab 100644 --- a/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js +++ b/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js @@ -28,6 +28,8 @@ export default class MiniShop { this.formData = null; this.Message = null; this.timeout = 300; + this.msLoadEvent = new CustomEvent('minishop-loaded', {bubbles: true, cancelable: false}); + this.initialize(); } @@ -93,6 +95,8 @@ export default class MiniShop { this[components.object][components.method](this.formData); } }); + + document.dispatchEvent(this.msLoadEvent); } getObjectMethod(action) { From 6b2f2185f9d5009d538800a8b96e3c9d78351817 Mon Sep 17 00:00:00 2001 From: ShevArtV Date: Sun, 25 Sep 2022 13:31:09 +0300 Subject: [PATCH 07/11] =?UTF-8?q?=D0=A1=D0=BA=D0=BE=D1=80=D1=80=D0=B5?= =?UTF-8?q?=D0=BA=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BB=20=D0=B8=D0=BD?= =?UTF-8?q?=D0=B8=D1=86=D0=B8=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D1=8E=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=B0=20MiniSop?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/components/minishop2/js/web/vanilajs/default.js | 2 +- .../minishop2/js/web/vanilajs/modules/minishop.class.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/assets/components/minishop2/js/web/vanilajs/default.js b/assets/components/minishop2/js/web/vanilajs/default.js index b93e3f543..bf773da45 100644 --- a/assets/components/minishop2/js/web/vanilajs/default.js +++ b/assets/components/minishop2/js/web/vanilajs/default.js @@ -1,5 +1,5 @@ import MiniShop from "./modules/minishop.class.js"; if (miniShop2Config) { - window.miniShop2 = new MiniShop(miniShop2Config); + new MiniShop(miniShop2Config); } diff --git a/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js b/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js index 43bccb8ab..3cf074d59 100644 --- a/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js +++ b/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js @@ -96,6 +96,7 @@ export default class MiniShop { } }); + window.miniShop2 = this; document.dispatchEvent(this.msLoadEvent); } From 8227384ce281185a5cd143f40d4053b71f9f3758 Mon Sep 17 00:00:00 2001 From: ShevArtV Date: Mon, 26 Sep 2022 11:38:42 +0300 Subject: [PATCH 08/11] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D1=83=20=D1=81=20?= =?UTF-8?q?JSON?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/minishop2/js/web/vanilajs/message_settings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/components/minishop2/js/web/vanilajs/message_settings.json b/assets/components/minishop2/js/web/vanilajs/message_settings.json index b9dbfaa8e..247bb9d0d 100644 --- a/assets/components/minishop2/js/web/vanilajs/message_settings.json +++ b/assets/components/minishop2/js/web/vanilajs/message_settings.json @@ -7,5 +7,5 @@ "handlerOptions": { "timeout": 1500 } - }, + } } From cda2fe16609661702ee7c90b36e35f22edfa9817 Mon Sep 17 00:00:00 2001 From: ShevArtV Date: Mon, 26 Sep 2022 13:51:05 +0300 Subject: [PATCH 09/11] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D0=BB=20?= =?UTF-8?q?=D1=81=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D0=B5=20minishop-loaded?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/components/minishop2/js/web/vanilajs/default.js | 2 +- .../minishop2/js/web/vanilajs/modules/minishop.class.js | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/assets/components/minishop2/js/web/vanilajs/default.js b/assets/components/minishop2/js/web/vanilajs/default.js index bf773da45..b93e3f543 100644 --- a/assets/components/minishop2/js/web/vanilajs/default.js +++ b/assets/components/minishop2/js/web/vanilajs/default.js @@ -1,5 +1,5 @@ import MiniShop from "./modules/minishop.class.js"; if (miniShop2Config) { - new MiniShop(miniShop2Config); + window.miniShop2 = new MiniShop(miniShop2Config); } diff --git a/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js b/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js index 3cf074d59..1421f56ad 100644 --- a/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js +++ b/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js @@ -28,7 +28,6 @@ export default class MiniShop { this.formData = null; this.Message = null; this.timeout = 300; - this.msLoadEvent = new CustomEvent('minishop-loaded', {bubbles: true, cancelable: false}); this.initialize(); } @@ -95,9 +94,6 @@ export default class MiniShop { this[components.object][components.method](this.formData); } }); - - window.miniShop2 = this; - document.dispatchEvent(this.msLoadEvent); } getObjectMethod(action) { From 21de4f4761288f907c15228bdfd8408c5aa6bce4 Mon Sep 17 00:00:00 2001 From: ShevArtV Date: Mon, 26 Sep 2022 14:50:18 +0300 Subject: [PATCH 10/11] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B6?= =?UTF-8?q?=D0=B0=D0=B5=D0=BC=20=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82=D1=8B?= =?UTF-8?q?=20=D0=B2=20=D1=88=D0=B0=D0=BF=D0=BA=D1=83.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/components/minishop2/model/minishop2/minishop2.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/components/minishop2/model/minishop2/minishop2.class.php b/core/components/minishop2/model/minishop2/minishop2.class.php index 2881af508..33203c66f 100644 --- a/core/components/minishop2/model/minishop2/minishop2.class.php +++ b/core/components/minishop2/model/minishop2/minishop2.class.php @@ -117,7 +117,7 @@ public function registerFrontend($ctx = 'web') $js .= '?v=' . substr(md5($this->version), 0, 10); } $js = str_replace($config['pl'], $config['vl'], $js); - $this->modx->regClientScript('',1); + $this->modx->regClientStartupScript('',1); } $js_setting = array( From 2364df4cb3af7a62098698ffe972d21eea1c5e95 Mon Sep 17 00:00:00 2001 From: ShevArtV Date: Tue, 27 Sep 2022 22:51:15 +0300 Subject: [PATCH 11/11] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=BF=D0=B8?= =?UTF-8?q?=D1=81=D0=B0=D0=BB=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20setHandle?= =?UTF-8?q?r()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../js/web/vanilajs/modules/minishop.class.js | 73 ++++++++----------- 1 file changed, 32 insertions(+), 41 deletions(-) diff --git a/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js b/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js index 1421f56ad..04d194049 100644 --- a/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js +++ b/assets/components/minishop2/js/web/vanilajs/modules/minishop.class.js @@ -1,9 +1,19 @@ export default class MiniShop { constructor(miniShop2Config) { - this.miniShop2Config = Object.assign(miniShop2Config, { + const defaults = { + notifyClassPath: './msnotify.class.js', + notifyClassName: 'MsNotify', + cartClassPath: './mscart.class.js', + cartClassName: 'MsCart', + orderClassPath: './msorder.class.js', + orderClassName: 'MsOrder', + moduleImportErrorMsg: 'Произошла ошибка при загрузке модуля', + properties: ['Message', 'Cart', 'Order'], actionUrl: document.location.href, formMethod: 'POST', - }); + }; + this.miniShop2Config = Object.assign(defaults, miniShop2Config); + this.miniShop2Config.callbacksObjectTemplate = this.callbacksObjectTemplate; this.Callbacks = this.miniShop2Config.Callbacks = { Cart: { @@ -32,54 +42,35 @@ export default class MiniShop { this.initialize(); } - async setHandler(property, pathPropertyName, classnamePropertyName, defaultPath, defaultClassName, errorMsg, response) { - const classPath = (this.miniShop2Config.hasOwnProperty(pathPropertyName) && this.miniShop2Config[pathPropertyName]) ? - this.miniShop2Config[pathPropertyName] : defaultPath, - className = (this.miniShop2Config.hasOwnProperty(classnamePropertyName) && this.miniShop2Config[classnamePropertyName]) ? - this.miniShop2Config[classnamePropertyName] : defaultClassName, - config = response ? response[className] : this; + async setHandler(property){ + let prefix = property.toLowerCase(), + response = false, + messageSettings = false; + if(prefix === 'message'){ + prefix = 'notify'; + response = await this.sendResponse({url: this.miniShop2Config.notifySettingsPath, method: 'GET'}); + if (response.ok) { + messageSettings = await response.json(); + } + } + const classPath = this.miniShop2Config[prefix + 'ClassPath']; + const className = this.miniShop2Config[prefix + 'ClassName']; + const config = messageSettings ? messageSettings[className] : this; try { - const { default: ModuleName } = await import(classPath); + const {default: ModuleName} = await import(classPath); this[property] = new ModuleName(config); } catch (e) { - console.error(e, errorMsg); + throw new Error(this.miniShop2Config.moduleImportErrorMsg); } } async initialize() { - if (this.miniShop2Config.notifySettingsPath) { - const response = await this.sendResponse({ url: this.miniShop2Config.notifySettingsPath, method: 'GET' }); - if (response.ok) { - const messageSettings = await response.json(); - if (messageSettings) { - this.setHandler( - 'Message', - 'notifyClassPath', - 'notifyClassName', - './msnotify.class.js', - 'MsNotify', - 'Произошла ошибка при загрузке модуля уведомлений', - messageSettings); - } - } - } - - this.setHandler( - 'Cart', - 'cartClassPath', - 'cartClassName', - './mscart.class.js', - 'MsCart', - 'Произошла ошибка при загрузке модуля корзины'); + if(!this.miniShop2Config.properties.length) { throw new Error('Не передан массив имён обработчиков'); } - this.setHandler( - 'Order', - 'orderClassPath', - 'orderClassName', - './msorder.class.js', - 'MsOrder', - 'Произошла ошибка при загрузке модуля отправки заказа'); + await this.miniShop2Config.properties.forEach(property => { + this.setHandler(property); + }); document.addEventListener('submit', e => { e.preventDefault();