DmitrMakeev commited on
Commit
922304e
·
verified ·
1 Parent(s): 3928aa7

Update pages.html

Browse files
Files changed (1) hide show
  1. pages.html +61 -3
pages.html CHANGED
@@ -359,7 +359,7 @@ const editor = grapesjs.init({
359
  editor.Components.addType('menu-list-set', {
360
  model: {
361
  defaults: {
362
- content: '<div id="dropdown-settings"></div>',
363
  script: function(props) {
364
  const loadScriptToBody = (src, callback) => {
365
  const script = document.createElement('script');
@@ -368,20 +368,73 @@ editor.Components.addType('menu-list-set', {
368
  document.body.appendChild(script);
369
  };
370
 
 
 
 
 
 
 
 
371
  const library = props.library;
372
  let dropdownjsSrc;
 
373
  if (library === '1') {
374
  dropdownjsSrc = 'https://huggingface.co/spaces/DMTuit/psy_vk/resolve/main/js/menu_gen.js';
375
  loadScriptToBody(dropdownjsSrc, () => {
376
  console.log('DropdownJS script loaded!');
377
 
378
- // Убедиться, что меню инициализируется только после загрузки данных
379
  if (window.menu_list && window.menu_list.menu) {
380
  initializeMenu(window.menu_list);
381
  } else {
382
- console.error('menu_list is not available');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
383
  }
 
 
 
 
 
 
 
 
 
 
 
384
  });
 
 
 
 
 
 
 
 
 
 
 
385
  }
386
  },
387
  'script-props': ['menu_list', 'library'],
@@ -408,6 +461,10 @@ editor.Components.addType('menu-list-set', {
408
  }
409
  });
410
 
 
 
 
 
411
  </script>
412
 
413
 
@@ -426,6 +483,7 @@ editor.Components.addType('menu-list-set', {
426
 
427
 
428
 
 
429
 
430
 
431
 
 
359
  editor.Components.addType('menu-list-set', {
360
  model: {
361
  defaults: {
362
+ content: '<div id="dropdown-settings"><ul id="menu-list"></ul></div>',
363
  script: function(props) {
364
  const loadScriptToBody = (src, callback) => {
365
  const script = document.createElement('script');
 
368
  document.body.appendChild(script);
369
  };
370
 
371
+ // Проверка на наличие переданных данных
372
+ if (!props.menu_list || !props.library) {
373
+ console.error('menu_list or library is not provided');
374
+ return;
375
+ }
376
+
377
+ // Загрузка библиотеки в зависимости от выбранной опции
378
  const library = props.library;
379
  let dropdownjsSrc;
380
+
381
  if (library === '1') {
382
  dropdownjsSrc = 'https://huggingface.co/spaces/DMTuit/psy_vk/resolve/main/js/menu_gen.js';
383
  loadScriptToBody(dropdownjsSrc, () => {
384
  console.log('DropdownJS script loaded!');
385
 
386
+ // Проверяем, доступен ли объект меню и вызываем инициализацию
387
  if (window.menu_list && window.menu_list.menu) {
388
  initializeMenu(window.menu_list);
389
  } else {
390
+ console.error('menu_list is not available or not in the correct format');
391
+ }
392
+ });
393
+ } else {
394
+ console.error('No valid library selected');
395
+ }
396
+
397
+ // Функция инициализации меню
398
+ function initializeMenu(menu_list) {
399
+ const menuElement = document.getElementById('menu-list');
400
+ if (!menuElement) {
401
+ console.error('Menu element not found');
402
+ return;
403
+ }
404
+
405
+ menuElement.innerHTML = ''; // Очищаем текущий список
406
+
407
+ menu_list.menu.forEach(item => {
408
+ const li = document.createElement('li');
409
+ li.innerHTML = `<button data-link="${item.link}">${item.title}</button>`;
410
+ if (item.submenu) {
411
+ li.classList.add('dropdown');
412
+ const submenu = createSubmenu(item.submenu);
413
+ li.appendChild(submenu);
414
  }
415
+ menuElement.appendChild(li);
416
+ });
417
+
418
+ // Обработка кликов на кнопках
419
+ document.querySelectorAll('button').forEach(button => {
420
+ button.addEventListener('click', function() {
421
+ const link = this.getAttribute('data-link');
422
+ if (link) {
423
+ window.location.href = link;
424
+ }
425
+ });
426
  });
427
+
428
+ function createSubmenu(submenuItems) {
429
+ const ul = document.createElement('ul');
430
+ ul.classList.add('dropdown-content');
431
+ submenuItems.forEach(subItem => {
432
+ const li = document.createElement('li');
433
+ li.innerHTML = `<button data-link="${subItem.link}">${subItem.title}</button>`;
434
+ ul.appendChild(li);
435
+ });
436
+ return ul;
437
+ }
438
  }
439
  },
440
  'script-props': ['menu_list', 'library'],
 
461
  }
462
  });
463
 
464
+ editor.Blocks.add('dropdown-settings-block', {
465
+ label: 'Настройка выпадающего списка',
466
+ content: { type: 'menu-list-set' },
467
+ });
468
  </script>
469
 
470
 
 
483
 
484
 
485
 
486
+
487
 
488
 
489