DmitrMakeev commited on
Commit
a2ef9c7
·
verified ·
1 Parent(s): 96c1e67

Update pages.html

Browse files
Files changed (1) hide show
  1. pages.html +26 -79
pages.html CHANGED
@@ -478,78 +478,25 @@ z-index: 1000; /* Убедитесь, что кнопка находится п
478
 
479
 
480
 
481
- // Создаем новый тип компонента для формы
482
- editor.Components.addType('custom-form', {
483
  model: {
484
  defaults: {
485
- // HTML-код формы с добавленными стилями
486
  content: `
487
  <div class="container">
488
- <form id="contactForm">
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 initForm = () => {
525
- const form = this.querySelector('#contactForm');
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
- if (avpInput) {
534
- avpInput.value = props.avp;
535
- }
536
- if (grupInput) {
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
- initForm();
565
  });
566
  } else {
567
- initForm();
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
- // Настройки для изменения URL отправки
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
- el.style.backgroundColor = bgColor;
651
  }
652
  if (textColor) {
653
- el.style.color = textColor;
654
  }
655
  if (fontSize) {
656
- el.style.fontSize = `${fontSize}px`;
657
  }
658
  }
659
  }
660
  });
661
- // Создаем блок для компонента формы
662
- editor.Blocks.add('custom-form-block', {
663
- label: 'Custom Form',
664
- content: { type: 'custom-form' },
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