Update pages.html
Browse files- pages.html +26 -79
pages.html
CHANGED
@@ -478,78 +478,25 @@ z-index: 1000; /* Убедитесь, что кнопка находится п
|
|
478 |
|
479 |
|
480 |
|
481 |
-
// Создаем новый тип компонента для
|
482 |
-
editor.Components.addType('custom-
|
483 |
model: {
|
484 |
defaults: {
|
485 |
-
// HTML-код
|
486 |
content: `
|
487 |
<div class="container">
|
488 |
-
<
|
489 |
-
<div class="form-group">
|
490 |
-
<label for="name">Имя</label>
|
491 |
-
<input type="text" id="name" required>
|
492 |
-
</div>
|
493 |
-
<div class="form-group">
|
494 |
-
<label for="email">Почта</label>
|
495 |
-
<input type="email" id="email" required>
|
496 |
-
</div>
|
497 |
-
<div class="form-group">
|
498 |
-
<label for="phone">Телефон</label>
|
499 |
-
<input type="tel" id="phone" required>
|
500 |
-
</div>
|
501 |
-
<div class="form-group">
|
502 |
-
<label for="options">Выберите тариф</label>
|
503 |
-
<select id="options" required>
|
504 |
-
<option value="" disabled selected>Тариф</option>
|
505 |
-
<option>БИЗНЕС - 69 970р.</option>
|
506 |
-
<option>PREMIUM - 89 970р.</option>
|
507 |
-
<option>VIP - 149 990р.</option>
|
508 |
-
</select>
|
509 |
-
</div>
|
510 |
-
<div class="form-check">
|
511 |
-
<input type="checkbox" id="newsletter_conf" required>
|
512 |
-
<label for="newsletter_conf">Согласие с <a href="#" id="usagePolicyLink">Условиями использования</a> и <a href="#" id="privacyPolicyLink">Политикой конфиденциальности</a></label>
|
513 |
-
</div>
|
514 |
-
<div class="form-check">
|
515 |
-
<input type="checkbox" id="newsletter_email" required>
|
516 |
-
<label for="newsletter_email">Согласие на email рассылку</label>
|
517 |
-
</div>
|
518 |
-
<button type="submit" class="btn-primary">ПЕРЕЙТИ К ОПЛАТЕ</button>
|
519 |
-
</form>
|
520 |
</div>
|
521 |
`,
|
522 |
-
// Скрипт для обработки
|
523 |
script: function(props) {
|
524 |
-
const
|
525 |
-
const
|
526 |
-
const avpInput = form.querySelector('input[name="avp_v"]');
|
527 |
-
const grupInput = form.querySelector('input[name="grup_v"]');
|
528 |
-
const red_urlInput = form.querySelector('input[name="red_url_v"]');
|
529 |
-
const pol_aInput = form.querySelector('input[name="pol_a"]');
|
530 |
-
const pol_bInput = form.querySelector('input[name="pol_b"]');
|
531 |
-
const new_wInput = form.querySelector('input[name="new_w"]');
|
532 |
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
grupInput.value = props.grup;
|
538 |
-
}
|
539 |
-
if (red_urlInput) {
|
540 |
-
red_urlInput.value = props.red_url;
|
541 |
-
}
|
542 |
-
if (pol_aInput) {
|
543 |
-
pol_aInput.value = props.pol_a;
|
544 |
-
}
|
545 |
-
if (pol_bInput) {
|
546 |
-
pol_bInput.value = props.pol_b;
|
547 |
-
}
|
548 |
-
if (new_wInput) {
|
549 |
-
new_wInput.value = props.new_w;
|
550 |
-
}
|
551 |
-
|
552 |
-
console.log('Form initialized with props:', props);
|
553 |
};
|
554 |
const loadScript = (src, callback) => {
|
555 |
const script = document.createElement('script');
|
@@ -561,10 +508,10 @@ editor.Components.addType('custom-form', {
|
|
561 |
if (typeof vkBridge === 'undefined') {
|
562 |
loadScript('https://unpkg.com/@vkontakte/vk-bridge/dist/browser.min.js', () => {
|
563 |
console.log('VK Bridge loaded!');
|
564 |
-
|
565 |
});
|
566 |
} else {
|
567 |
-
|
568 |
}
|
569 |
|
570 |
if (typeof VK === 'undefined') {
|
@@ -579,7 +526,7 @@ editor.Components.addType('custom-form', {
|
|
579 |
},
|
580 |
// Свойства, которые будут передаваться в скрипт
|
581 |
'script-props': ['avp', 'grup', 'red_url', 'pol_a', 'pol_b', 'new_w'],
|
582 |
-
// Настройки для изменения
|
583 |
traits: [
|
584 |
{
|
585 |
type: 'text',
|
@@ -617,23 +564,23 @@ editor.Components.addType('custom-form', {
|
|
617 |
label: 'Открвывать в новом окне браузера 0-НЕТ,1-ДА',
|
618 |
changeProp: true
|
619 |
},
|
620 |
-
// Добавляем настройки для стилей
|
621 |
{
|
622 |
type: 'color',
|
623 |
name: 'bgColor',
|
624 |
-
label: 'Цвет фона
|
625 |
changeProp: true
|
626 |
},
|
627 |
{
|
628 |
type: 'color',
|
629 |
name: 'textColor',
|
630 |
-
label: 'Цвет текста
|
631 |
changeProp: true
|
632 |
},
|
633 |
{
|
634 |
type: 'number',
|
635 |
name: 'fontSize',
|
636 |
-
label: 'Размер шрифта',
|
637 |
changeProp: true
|
638 |
}
|
639 |
]
|
@@ -646,25 +593,25 @@ editor.Components.addType('custom-form', {
|
|
646 |
const textColor = model.get('textColor');
|
647 |
const fontSize = model.get('fontSize');
|
648 |
|
|
|
649 |
if (bgColor) {
|
650 |
-
|
651 |
}
|
652 |
if (textColor) {
|
653 |
-
|
654 |
}
|
655 |
if (fontSize) {
|
656 |
-
|
657 |
}
|
658 |
}
|
659 |
}
|
660 |
});
|
661 |
-
// Создаем блок для компонента
|
662 |
-
editor.Blocks.add('custom-
|
663 |
-
label: 'Custom
|
664 |
-
content: { type: 'custom-
|
665 |
});
|
666 |
|
667 |
-
|
668 |
|
669 |
|
670 |
|
|
|
478 |
|
479 |
|
480 |
|
481 |
+
// Создаем новый тип компонента для кнопки
|
482 |
+
editor.Components.addType('custom-button', {
|
483 |
model: {
|
484 |
defaults: {
|
485 |
+
// HTML-код кнопки с добавленными стилями
|
486 |
content: `
|
487 |
<div class="container">
|
488 |
+
<button type="submit" class="btn-primary">ПЕРЕЙТИ К ОПЛАТЕ</button>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
489 |
</div>
|
490 |
`,
|
491 |
+
// Скрипт для обработки нажатия кнопки и загрузки зависимостей
|
492 |
script: function(props) {
|
493 |
+
const initButton = () => {
|
494 |
+
const button = this.querySelector('.btn-primary');
|
|
|
|
|
|
|
|
|
|
|
|
|
495 |
|
496 |
+
button.addEventListener('click', () => {
|
497 |
+
console.log('Button clicked with props:', props);
|
498 |
+
// Здесь можно добавить логику обработки нажатия кнопки
|
499 |
+
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
500 |
};
|
501 |
const loadScript = (src, callback) => {
|
502 |
const script = document.createElement('script');
|
|
|
508 |
if (typeof vkBridge === 'undefined') {
|
509 |
loadScript('https://unpkg.com/@vkontakte/vk-bridge/dist/browser.min.js', () => {
|
510 |
console.log('VK Bridge loaded!');
|
511 |
+
initButton();
|
512 |
});
|
513 |
} else {
|
514 |
+
initButton();
|
515 |
}
|
516 |
|
517 |
if (typeof VK === 'undefined') {
|
|
|
526 |
},
|
527 |
// Свойства, которые будут передаваться в скрипт
|
528 |
'script-props': ['avp', 'grup', 'red_url', 'pol_a', 'pol_b', 'new_w'],
|
529 |
+
// Настройки для изменения параметров и стилей кнопки
|
530 |
traits: [
|
531 |
{
|
532 |
type: 'text',
|
|
|
564 |
label: 'Открвывать в новом окне браузера 0-НЕТ,1-ДА',
|
565 |
changeProp: true
|
566 |
},
|
567 |
+
// Добавляем настройки для стилей кнопки
|
568 |
{
|
569 |
type: 'color',
|
570 |
name: 'bgColor',
|
571 |
+
label: 'Цвет фона кнопки',
|
572 |
changeProp: true
|
573 |
},
|
574 |
{
|
575 |
type: 'color',
|
576 |
name: 'textColor',
|
577 |
+
label: 'Цвет текста кнопки',
|
578 |
changeProp: true
|
579 |
},
|
580 |
{
|
581 |
type: 'number',
|
582 |
name: 'fontSize',
|
583 |
+
label: 'Размер шрифта кнопки',
|
584 |
changeProp: true
|
585 |
}
|
586 |
]
|
|
|
593 |
const textColor = model.get('textColor');
|
594 |
const fontSize = model.get('fontSize');
|
595 |
|
596 |
+
const button = el.querySelector('.btn-primary');
|
597 |
if (bgColor) {
|
598 |
+
button.style.backgroundColor = bgColor;
|
599 |
}
|
600 |
if (textColor) {
|
601 |
+
button.style.color = textColor;
|
602 |
}
|
603 |
if (fontSize) {
|
604 |
+
button.style.fontSize = `${fontSize}px`;
|
605 |
}
|
606 |
}
|
607 |
}
|
608 |
});
|
609 |
+
// Создаем блок для компонента кнопки
|
610 |
+
editor.Blocks.add('custom-button-block', {
|
611 |
+
label: 'Custom Button',
|
612 |
+
content: { type: 'custom-button' },
|
613 |
});
|
614 |
|
|
|
615 |
|
616 |
|
617 |
|