Javascript: формирование csv файла

Задача: на чистом javascript сформировать и сохранить из браузера файл формата csv, адекватно открывающийся табличным редактором (например OnlyOffice)

Решение:

rows=[];
rows.push(["aa","bb"]);

let csvContent = "data:text/csv;charset=utf-8," + rows.map(e => e.join(",")).join("\n");
var encodedUri = encodeURI(csvContent);
var link = document.createElement("a");
link.setAttribute("href", encodedUri);
link.setAttribute("download", "download.csv");
document.body.appendChild(link); 
link.click();

Что тут происходит: заполняется некий массив, далее создаётся ссылка в DOM, и в элемент ссылки записываются данные массива. Далее эмулируется нажатие собственно на эту ссылку.

Всплывающее окно на Битрикс «Управление сайтом»

Хм..вот плохо иногда быть самоучкой по методу научного тыка. Для некоторых вещей изобретал велосипед при наличии штатного функционала. Ранее всплывающие окна отрисовывал в стиле bootstrap, а оказывется для этого есть штатные вещи. Далее пример окна:

  popup_warning = BX.PopupWindowManager.create("popup-message", BX('element'), {
            content: 'Показания по всем радостям не записаны!',
            width: 300, 
            height: 200,
            zIndex: 100,
            closeIcon: {opacity: 1},
            titleBar: 'Внимание!',
            closeByEsc: true, 
            darkMode: false, 
            autoHide: false, 
            draggable: true, 
            resizable: true, 
            min_height: 100, 
            min_width: 100, 
            lightShadow: true, 
            overlay: {backgroundColor: 'black',opacity: 500}, 
            buttons: [
                new BX.PopupWindowButton({
                    text: 'Понятно', 
                    id: 'ok-btn', 
                    className: 'ui-btn ui-btn-success',
                    events: {
                      click: function() {
                          popup_warning.close()
                      }
                    }
                })
            ],
            events: {
               onPopupShow: function() {                                 
               },
               onPopupClose: function() {
               }
            }
        });

Подсмотрено тут