Skip to content

Commit

Permalink
Исправления форматирования (#782)
Browse files Browse the repository at this point in the history
* chore: Добавлена рекомендация компонента для линтинга md файлов

* style: Исправлены ошибки форматирования
  • Loading branch information
GulomovCreative authored Aug 14, 2024
1 parent bc54f11 commit 35aad90
Show file tree
Hide file tree
Showing 16 changed files with 1,336 additions and 1,056 deletions.
3 changes: 3 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"recommendations": ["DavidAnson.vscode-markdownlint"]
}
251 changes: 134 additions & 117 deletions docs/components/msaltcart/index.md

Large diffs are not rendered by default.

11 changes: 7 additions & 4 deletions docs/components/msaltcart/inputnumber.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,31 @@
:::

## Разметка

```html:line-numbers
<div class="ms-input-number-wrap">
<button class="ms-input-number-btn ms-input-number-minus" type="button">&#8722;</button>
<input class="ms-input-number-emulator" value="{$count}" name="count" type="text">
<button class="ms-input-number-btn ms-input-number-plus" type="button">&#43;</button>
<button class="ms-input-number-btn ms-input-number-minus" type="button">&#8722;</button>
<input class="ms-input-number-emulator" value="{$count}" name="count" type="text">
<button class="ms-input-number-btn ms-input-number-plus" type="button">&#43;</button>
</div>
```

## Атрибуты

* **min** - минимальное значение.
* **max** - максимальное значение.
* **step** - шаг изменения значения.
* **data-negative** - позволяет вводить отрицательные значения, если установлен.


## Инициализация

```js:line-numbers
const countInputs = cart.querySelectorAll('.ms-input-number-wrap input[type="number"]');
countInputs.length && countInputs.forEach(countInput => new CustomInputNumber(countInput));
```

## Изменение значения

```js:line-numbers
const countInput = cart.querySelector('.ms-input-number-wrap input[type="number"]');
countInput && (countInput.value = 55);
Expand Down
142 changes: 94 additions & 48 deletions docs/components/msaltcart/javascript.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,196 +7,242 @@
:::
:::tip
События предназначены для упрощения взаимодействия с DOM, но не для прерывания серверных действий. Если хотите прервать какое-то действие используйте событие **si:send:before**

```js:line-numbers
document.addEventListener('si:send:before', (e) => {
if (['cart_add','cart_remove','cart_clean'].includes(e.detail.headers['X-SIPRESET'])) {
e.preventDefault();
SendIt.Notify.error('It impossible!');
}
if (['cart_add','cart_remove','cart_clean'].includes(e.detail.headers['X-SIPRESET'])) {
e.preventDefault();
SendIt.Notify.error('It impossible!');
}
})
```

:::

#### msac:init - инициализация компонента
### msac:init - инициализация компонента

Событие возникает после загрузки всех модулей, указанных в JS конфигурации. Не имеет параметров. Не может быть отменено. Чтобы без проблем использовать все модули,
подписывайте на это событие, так как после его срабатывания объект **MsAltCart** и его модули точно доступны.
::: details Пример использования

```js:line-numbers
document.addEventListener('msac:init', (e) => {
console.log(MsAltCart);
console.log(MsAltCart);
});
```

:::

#### msac:row:replace:after - замена ряда
### msac:row:replace:after - замена ряда

Событие возникает после того как была произведена замена блока товара со старым ключом на блок с новым ключом. Не может быть отменено.

::: details Передаваемые параметры

* **cartName** - имя корзины, оно же имя плейсхолдера.
* **cart** - DOM-элемент корзины.
* **keyNew** - новый ключ товара.

:::

::: details Пример использования

```js:line-numbers
document.addEventListener('msac:row:replace:after', (e) => {
const {cart, cartName, keyNew} = e.detail;
const newRow = cart.querySelector(`data-msac-product="${keyNew}"`); // получаем вставленный ряд
// тут можно инициализировать плагины, например для кастомизации селекта
const {cart, cartName, keyNew} = e.detail;
const newRow = cart.querySelector(`data-msac-product="${keyNew}"`); // получаем вставленный ряд
// тут можно инициализировать плагины, например для кастомизации селекта
});
```

:::

#### msac:row:update:before - обновление ряда
### msac:row:update:before - обновление ряда

Событие возникает перед обновлением блока товара. Не может быть отменено.

::: details Передаваемые параметры

* **cartName** - имя корзины, оно же имя плейсхолдера.
* **cart** - DOM-элемент корзины.
* **data** - ответ сервера.
* **row** - DOM-элемент обновляемого ряда.
* **html** - HTML который будет вставлен.

:::

::: details Пример использования

```js:line-numbers
document.addEventListener('msac:row:update:before', (e) => {
const {cart, cartName, data, row, html} = e.detail;
// тут можно инициализировать плагины, например для кастомизации селекта
// или делать что-то ещё
const {cart, cartName, data, row, html} = e.detail;
// тут можно инициализировать плагины, например для кастомизации селекта
// или делать что-то ещё
});
```

:::

#### msac:totals:update:before - обновление суммарных значений
### msac:totals:update:before - обновление суммарных значений

Событие возникает перед обновлением суммарных значений. Не может быть отменено.

::: details Передаваемые параметры

* **cart** - DOM-элемент корзины.
* **data** - ответ сервера.

:::

::: details Пример использования

```js:line-numbers
document.addEventListener('msac:totals:update:before', (e) => {
const {cart, data} = e.detail;
// тут можно внести какие-то изменения в данные
const {cart, data} = e.detail;
// тут можно внести какие-то изменения в данные
});
```

:::

#### msac:row:add:after - добавление нового товара
### msac:row:add:after - добавление нового товара

Событие возникает после добавления нового товара. Не может быть отменено.

::: details Передаваемые параметры

* **cartName** - имя корзины, оно же имя плейсхолдера.
* **cart** - DOM-элемент корзины.
* **newRow** - DOM-элемент добавленного ряда.

:::

::: details Пример использования

```js:line-numbers
document.addEventListener('msac:row:add:after', (e) => {
const {cart, cartName, newRow} = e.detail;
// тут можно инициализировать плагины, например для кастомизации селекта
// или показать модалку с только что добавленным товаром
const modalCartEl = document.getElementById('modalCart');
if (e.detail.cartName === 'modal' && modalCartEl) {
const modalCart = new bootstrap.Modal(modalCartEl, {})
modalCart.show();
}
const {cart, cartName, newRow} = e.detail;
// тут можно инициализировать плагины, например для кастомизации селекта
// или показать модалку с только что добавленным товаром
const modalCartEl = document.getElementById('modalCart');
if (e.detail.cartName === 'modal' && modalCartEl) {
const modalCart = new bootstrap.Modal(modalCartEl, {})
modalCart.show();
}
});
```

:::

#### msac:row:remove:before - удалением DOM-элемента товара
### msac:row:remove:before - удалением DOM-элемента товара

Событие возникает перед удалением DOM-элемента товара. Может быть отменено.

::: details Передаваемые параметры

* **cartName** - имя корзины, оно же имя плейсхолдера.
* **cart** - DOM-элемент корзины.
* **row** - DOM-элемент удаляемого ряда.
:::

:::

::: details Пример использования

```js:line-numbers
document.addEventListener('msac:row:remove:before', (e) => {
const {cart, cartName, row} = e.detail;
// тут можно инициализировать плагины, например для кастомизации селекта
// или делать что-то ещё
const {cart, cartName, row} = e.detail;
// тут можно инициализировать плагины, например для кастомизации селекта
// или делать что-то ещё
});
```

:::

#### msac:html:prepare:after - подготовка html.
### msac:html:prepare:after - подготовка html

Событие возникает после подготовки html для вставки. Не может быть отменено.

::: details Передаваемые параметры

* **element** - подготовленный DOM-элемент.

:::

::: details Пример использования

```js:line-numbers
document.addEventListener('msac:html:prepare:after', (e) => {
const {element} = e.detail;
// тут можно инициализировать плагины, например для кастомизации селекта
// или делать что-то ещё
const {element} = e.detail;
// тут можно инициализировать плагины, например для кастомизации селекта
// или делать что-то ещё
});
```

:::

#### msac:cart:clean:before - подготовка html.
### msac:cart:clean:before - подготовка html

Событие возникает перед очистко блока корзины и показом чанка пустой корзины. Может быть отменено.

::: details Передаваемые параметры

* **cartName** - имя корзины, оно же имя плейсхолдера.
* **cart** - DOM-элемент корзины.

:::

::: details Пример использования

```js:line-numbers
document.addEventListener('msac:cart:clean:before', (e) => {
const {cartName, cart} = e.detail;
// тут можно инициализировать плагины, например для кастомизации селекта
// или делать что-то ещё
const {cartName, cart} = e.detail;
// тут можно инициализировать плагины, например для кастомизации селекта
// или делать что-то ещё
});
```

:::

## API

Компонент предоставляет возможность взаимодействовать с корзиной из JavaScript, используя ряд простых методов.
Компонент предоставляет возможность взаимодействовать с корзиной из JavaScript, используя ряд простых методов.

### Добавление товара

```js:line-numbers
MsAltCart.add(product_id, count, {
option_key: option_value,
})
```

Объект опций является необязательным параметром.

### Изменение товара

```js:line-numbers
MsAltCart.change(product_cart_key, count, {
option_key: option_value,
})
```

Объект опций является необязательным параметром.

### Удаление товара

```js:line-numbers
MsAltCart.remove(product_cart_key)
```

### Получение статуса и состава корзины

```js:line-numbers
const promise = MsAltCart.status();
promise.then((result) => console.log(result));
Expand Down
31 changes: 18 additions & 13 deletions docs/components/msaltcart/snippets.md
Original file line number Diff line number Diff line change
@@ -1,40 +1,45 @@
# Сниппеты

## getCarts
## getCarts

Сниппет предназначен для вывода корзин на странице. Имеет только один параметр **tpls**, который принимает в качестве значения строку в формате JSON.

### Fenom

```fenom:line-numbers
{'!getCarts' | snippet: [
'tpls' => '{
"maincart":
{
"wrapper":"@FILE msac/cart.tpl","row":"@FILE msac/cartrow.tpl"
}
}'
'tpls' => '{
"maincart": {
"wrapper": "@FILE msac/cart.tpl","row":"@FILE msac/cartrow.tpl"
}
}'
]}
{'maincart' | placeholder}
```

### Стандартный синтаксис

```modx:line-numbers
[[!getCarts?
&tpls=`{
"maincart": {
"wrapper":"@FILE msac/cart.tpl","row":"@FILE msac/cartrow.tpl"
}
}`
&tpls=`{
"maincart": {
"wrapper":"@FILE msac/cart.tpl","row":"@FILE msac/cartrow.tpl"
}
}`
]]
[[+maincart]]
```

:::danger
Не смешивайте синтаксис: если сниппет вызван на страндартном синтаксисе, то плейсхолдеры вставляйте на стандартном. И не используйте в именах плейсхолдеров ничего кроме цифр и латиницы.
Не смешивайте синтаксис: если сниппет вызван на страндартном синтаксисе, то плейсхолдеры вставляйте на стандартном. И не используйте в именах плейсхолдеров ничего кроме цифр и латиницы.
:::

:::danger
Ключ объекта в параметре tpls и есть имя плейсхолдера для вставки в шаблоне.
:::

## msacConnector

Сниппет предназначен для обработки запросов с фронта. Его никогда и нигде не нужно вызывать.
Loading

0 comments on commit 35aad90

Please sign in to comment.