{"id":12670,"date":"2025-10-21T19:32:58","date_gmt":"2025-10-21T19:32:58","guid":{"rendered":"https:\/\/www.guiadoemitente.pt\/sandbox\/"},"modified":"2025-10-21T20:11:25","modified_gmt":"2025-10-21T20:11:25","slug":"sandbox","status":"publish","type":"page","link":"https:\/\/www.guiadoemitente.pt\/en\/sandbox\/","title":{"rendered":"Sandbox"},"content":{"rendered":"\n<h1 class=\"wp-block-heading has-text-color has-link-color wp-elements-300e66de0f9228ceee1f1a94f4c6e428\" style=\"color:#27224f\">Simulation of information disclosure to the market by companies participating in the <span style=\"color:#D3773F\">Market4Growth Sandbox<\/span><\/h1>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-color has-link-color wp-elements-9d6caef1dc25bf9b9e534a85f0df6c02\" style=\"color:#27224f\"><strong>Sandbox Market4Growth<\/strong> allows companies to test the potential of the capital market, with the support of specialized entities, in a simulated environment that is tailored and flexible according to each company\u2019s specific needs (more information available on the <a href=\"https:\/\/www.cmvm.pt\/PInstitucional\/Content?Input=0E4F13D691BAF3C7E104177AC36FC2DBD35B8539A20188DE007A9A2FDECCED58\" target=\"_blank\" rel=\"noopener\">CMVM website<\/a>).<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-69e06c4158284c1d571c4c2b8a6657d0\" style=\"color:#27224f\">One of the tools available in the <strong>Market4Growth Sandbox<\/strong> is the possibility for participating companies to disclose information to the market as if it were a listed company.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/issuers-guide.buzzvel.work\/wp-content\/uploads\/2024\/10\/image-1.png\" alt=\"\" class=\"wp-image-12500\" style=\"width:366px;height:auto\"\/><\/figure>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-color has-link-color wp-elements-54ec20b307b057467c6ba13efec049c3\" style=\"color:#27224f\">The information disclosed on this page is the sole responsibility of the companies. It has been published as part of their participation in the <strong>Sandbox Market4Growth<\/strong> and corresponds to a simulation of information disclosed by issuers of securities admitted to trading on the market<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-b63ceb32cb4abefb459f38d86a29ed0f\" style=\"color:#27224f\">This disclosure does not correspond to any form or intention of appealing to the public for investment, nor does it correspond to a public offering.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" data-id=\"12505\" src=\"https:\/\/issuers-guide.buzzvel.work\/wp-content\/uploads\/2024\/10\/image-2.png\" alt=\"\" class=\"wp-image-12505\"\/><\/figure>\n<\/div><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"w-full my-4\">\n    <div class=\"flex justify-end\">\n        <button id=\"open-filter\" class=\"flex items-center justify-between gap-2 min-w-[12rem] px-6 py-3 bg-theme-yellow-five rounded text-white text-base hover:opacity-80\">\n            Filters            <img decoding=\"async\" id=\"icon-filter\" class=\"w-6\" src=\"https:\/\/www.guiadoemitente.pt\/wp-content\/themes\/issuers-guide\/assets\/img\/filter-icon.svg\" alt=\"Filter Icon\">\n            <img decoding=\"async\" id=\"icon-close\" class=\"w-6 hidden\" src=\"https:\/\/www.guiadoemitente.pt\/wp-content\/themes\/issuers-guide\/assets\/img\/close-icon.svg\" alt=\"Filter Icon\">\n        <\/button>\n    <\/div>\n    <div class=\"flex flex-col gap-3 w-full !hidden\" id=\"filter-form\">\n        <div class=\"flex flex-col gap-1\">\n            <label class=\"text-theme-blue-four text-base font-medium\" for=\"filter-select\">Entity<\/label>\n            <input type=\"hidden\" id=\"filter-select\" name=\"taxonomy\" value=\"\">\n            <div class=\"relative w-full\">\n                <div id=\"select-term\" class=\"border border-theme-blue-four rounded-[0.375rem] h-[50px] p-2 cursor-pointer flex justify-between items-center select-none\">\n                    <span id=\"text-select\" class=\"text-sm text-theme-blue-four\">select an option<\/span>\n                    <span id=\"arrow-select\" class=\"\">\n                        <svg width=\"16\" height=\"16\" viewBox=\"0 -4.5 20 20\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\" fill=\"#000000\">\n                            <g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"><\/g>\n                            <g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/g>\n                            <g id=\"SVGRepo_iconCarrier\">\n                                <defs> <\/defs>\n                                <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                                    <g id=\"Dribbble-Light-Preview\" transform=\"translate(-180.000000, -6684.000000)\" fill=\"#1F266A\">\n                                        <g id=\"icons\" transform=\"translate(56.000000, 160.000000)\">\n                                            <path d=\"M144,6525.39 L142.594,6524 L133.987,6532.261 L133.069,6531.38 L133.074,6531.385 L125.427,6524.045 L124,6525.414 C126.113,6527.443 132.014,6533.107 133.987,6535 C135.453,6533.594 134.024,6534.965 144,6525.39\" id=\"arrow_down-[#339]\"> <\/path>\n                                        <\/g>\n                                    <\/g>\n                                <\/g>\n                            <\/g>\n                        <\/svg>\n                    <\/span>\n                <\/div>\n                <ul id=\"custom-options\" class=\"hidden absolute z-10 top-full left-0 bg-white rounded-b-[0.375rem] border border-theme-blue-four -mt-1 w-full text-theme-blue-four text-sm max-h-48 overflow-y-auto\">\n                    <li class=\"px-4 py-2 hover:bg-gray-100 border-b border-[#e7e7e7] cursor-pointer option-item\" value=\"todos\">All<\/li>\n                                    <\/ul>\n            <\/div>\n        <\/div>\n\n        <div class=\"flex flex-col md:flex-row items-start md:items-end gap-3\">\n            <div class=\"w-full flex flex-col gap-1\">\n                <label class=\"text-theme-blue-four text-base font-medium\" for=\"start-date\">Start date<\/label>\n                <!-- <input type=\"date\" class=\"rounded-[0.375rem] p-2 text-sm\" id=\"start-date\" name=\"start_date\"> -->\n                <div class=\"flex items-center justify-between gap-1 rounded-[0.375rem] px-2 border border-theme-blue-four\">\n                    <input type=\"text\" id=\"start-date\" placeholder=\"dd-mm-aaaa\" class=\"!border-0 !p-0 w-full bg-transparent text-sm focus-visible:outline-none\">\n                    <img decoding=\"async\" class=\"w-4 cursor-pointer\" src=\"https:\/\/www.guiadoemitente.pt\/wp-content\/themes\/issuers-guide\/assets\/img\/calendar-icon.svg\" alt=\"Calendar Icon\">\n                <\/div>\n            <\/div>\n            <div class=\"w-full flex flex-col gap-1\">\n                <label class=\"text-theme-blue-four text-base font-medium\" for=\"end-date\">End Date<\/label>\n                <!-- <input type=\"date\" class=\"rounded-[0.375rem] p-2 text-sm\" id=\"end-date\" name=\"end_date\"> -->\n                <div class=\"flex items-center justify-between gap-1 rounded-[0.375rem] px-2 border border-theme-blue-four\">\n                    <input type=\"text\" id=\"end-date\" placeholder=\"dd-mm-aaaa\" class=\"!border-0 !p-0 w-full bg-transparent text-sm focus-visible:outline-none\">\n                    <img decoding=\"async\" class=\"w-4 cursor-pointer\" src=\"https:\/\/www.guiadoemitente.pt\/wp-content\/themes\/issuers-guide\/assets\/img\/calendar-icon.svg\" alt=\"Calendar Icon\">\n                <\/div>\n            <\/div>\n            <div class=\"flex gap-3 w-full md:justify-end\">\n                <button type=\"button\" id=\"clear-filters\" onclick=\"clearFilterParams()\" class=\"flex justify-center items-center px-1 py-2 border border-theme-yellow-five text-theme-blue-four text-sm w-full max-w-[7rem] hover:opacity-80 rounded-[0.375rem]\">\n                    Clear Filters                <\/button>\n                <button onclick=\"fecthFilterApi()\" id=\"apply-filters\" class=\"flex justify-center items-center px-1 py-2 bg-theme-yellow-five text-white text-sm w-full max-w-25 hover:opacity-80 rounded-[0.375rem]\">\n                    Filter                <\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <div class=\"w-[90vw] md:w-full overflow-x-auto mt-8\">\n        <table class=\"w-full table-auto\" id=\"table\">\n            <thead>\n                <tr class=\"text-left text-sm font-semibold bg-theme-grey-two\/40 text-theme-blue-four\">\n                    <th class=\"p-2 whitespace-nowrap w-[140px]\">Date<\/th>\n                    <th class=\"p-2 whitespace-nowrap\">Entity<\/th>\n                    <th class=\"p-2 whitespace-nowrap\">Title<\/th>\n                    <th class=\"p-2 whitespace-nowrap\">Type<\/th>\n                    <th class=\"p-2 whitespace-nowrap text-center\">Download<\/th>\n                <\/tr>\n            <\/thead>\n            <tbody class=\"divide-y divide-gray-100 text-base\" id=\"table-body\">\n            <\/tbody>\n        <\/table>\n\n    <\/div>\n    <div id=\"loading-spinner-posts\" class=\"hidden flex justify-center items-center my-8 animate-spin\">\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 24 24\">\n            <path fill=\"currentColor\" fill-opacity=\".9\" d=\"M12 2.25c-5.384 0-9.75 4.366-9.75 9.75s4.366 9.75 9.75 9.75v-2.437A7.312 7.312 0 1 1 19.313 12h2.437c0-5.384-4.366-9.75-9.75-9.75\" \/>\n        <\/svg>\n    <\/div>\n<\/div>\n\n<script>\n    const openFilter = document.getElementById('open-filter');\n    const iconFilter = document.getElementById('icon-filter');\n    const iconClose = document.getElementById('icon-close');\n    const containerFilter = document.getElementById('filter-form');\n    const select = document.getElementById('select-term');\n    const selectedText = document.getElementById('text-select');\n    const options = document.getElementById('custom-options');\n    const filterSelect = document.getElementById('filter-select');\n    const arrowSelect = document.getElementById('arrow-select');\n    const startDateInput = document.getElementById('start-date');\n    const endDateInput = document.getElementById('end-date');\n    const filterButton = document.getElementById('apply-filters');\n    const clearFiltersButton = document.getElementById('clear-filters');\n    const loadingSpinnerPosts = document.getElementById('loading-spinner-posts');\n    const tableBody = document.getElementById('table');\n    openFilter.addEventListener('click', function() {\n        if (containerFilter.classList.contains('!hidden')) {\n            containerFilter.classList.remove('!hidden');\n            iconFilter.classList.add('hidden');\n            iconClose.classList.remove('hidden');\n        } else {\n            containerFilter.classList.add('!hidden');\n            iconFilter.classList.remove('hidden');\n            iconClose.classList.add('hidden');\n        }\n    })\n\n    var formdata = new FormData();\n    var requestOptions = {\n        method: 'POST',\n        body: formdata,\n        redirect: 'follow'\n    };\n\n    function fecthFilterApi() {\n        const entitySelected = filterSelect.value || 'todos';\n        const startDate = startDateInput.value || null;\n        const endDate = endDateInput.value || null;\n\n        const formatStartDate = startDate ? startDate.split('-').join('\/') : null;\n        const formatEndDate = endDate ? endDate.split('-').join('\/') : null;\n        loadingSpinnerPosts.classList.remove('hidden');\n        tableBody.classList.add('!hidden');\n        fetch(`https:\/\/www.guiadoemitente.pt\/en\/\/wp-json\/issuers-guide\/v1\/documents_list?entity=${entitySelected}&${formatStartDate ? 'startDate=' + formatStartDate : ''}&${formatEndDate ? 'endDate=' + formatEndDate : ''}&per_page=200`, requestOptions)\n            .then(response => response.text())\n            .then(result => {\n                const data = JSON.parse(result);\n\n                const tbody = document.getElementById('table-body');\n\n                if (tbody.hasChildNodes()) {\n                    tbody.innerHTML = '';\n                }\n\n                data.data.data.forEach(doc => {\n                    const tr = document.createElement('tr');\n                    const tdDate = document.createElement('td');\n                    tdDate.classList.add('p-2', 'text-sm');\n                    tdDate.textContent = doc.date;\n\n                    const tdEntity = document.createElement('td');\n                    tdEntity.classList.add('p-2', 'text-sm');\n                    tdEntity.textContent = doc.entity.name;\n\n                    const tdTitle = document.createElement('td');\n                    tdTitle.classList.add('p-2', 'text-sm');\n                    tdTitle.textContent = doc.title;\n\n                    const tdType = document.createElement('td');\n                    tdType.classList.add('p-2', 'text-sm');\n                    tdType.textContent = doc.type.name;\n\n                    const tdDownload = document.createElement('td');\n                    tdDownload.classList.add('p-2', 'text-sm');\n                    tdDownload.innerHTML = '<a class=\"flex justify-center items-center\" href=\"' + doc.file.url + '\" target=\"_blank\" class=\"text-theme-blue-four hover:underline\"><img decoding=\"async\" src=\"https:\/\/www.guiadoemitente.pt\/wp-content\/themes\/issuers-guide\/assets\/img\/download.svg\" alt=\"Download\"><\/a>';\n\n                    tr.appendChild(tdDate);\n                    tr.appendChild(tdEntity);\n                    tr.appendChild(tdTitle);\n                    tr.appendChild(tdType);\n                    tr.appendChild(tdDownload);\n\n                    tbody.appendChild(tr);\n                })\n            })\n            .finally(() => {\n                loadingSpinnerPosts.classList.add('hidden');\n                tableBody.classList.remove('!hidden');\n            });\n    }\n\n    document.addEventListener('DOMContentLoaded', function() {\n        fecthFilterApi();\n\n        select.addEventListener('click', function() {\n            options.classList.toggle('hidden');\n            arrowSelect.classList.toggle('rotate-180');\n        });\n\n        options.querySelectorAll('.option-item').forEach(option => {\n            option.addEventListener('click', function() {\n                selectedText.textContent = option.textContent;\n                filterSelect.value = option.getAttribute('value');\n                options.classList.add('hidden');\n                arrowSelect.classList.remove('rotate-180');\n            });\n        });\n\n        document.addEventListener('click', function(event) {\n            const isClickInside = select.contains(event.target) || options.contains(event.target);\n            if (!isClickInside) {\n                options.classList.add('hidden');\n                arrowSelect.classList.remove('rotate-180');\n            }\n        });\n    });\n\n    function clearFilterParams() {\n        filterSelect.value = 'todos';\n        selectedText.textContent = 'All';\n        startDateInput.value = '';\n        endDateInput.value = '';\n        fecthFilterApi();\n    }\n    var currentLanguage = 'en';\n    if (currentLanguage === 'pt-pt' || currentLanguage === 'pt-br') {\n\n        const startDatePicker = flatpickr(\"#start-date\", {\n            dateFormat: \"d-m-Y\",\n            onClose: function(selectedDates, dateStr, instance) {\n                endDatePicker.set(\"minDate\", dateStr);\n            },\n            locale: {\n                firstDayOfWeek: 1,\n                weekdays: {\n                    shorthand: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'S\u00e1b'],\n                    longhand: ['Domingo', 'Segunda', 'Ter\u00e7a', 'Quarta', 'Quinta', 'Sexta', 'S\u00e1bado'],\n                },\n                months: {\n                    shorthand: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],\n                    longhand: ['Janeiro', 'Fevereiro', 'Mar\u00e7o', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],\n                },\n            }\n        });\n    } else {\n        const startDatePicker = flatpickr(\"#start-date\", {\n            dateFormat: \"d-m-Y\",\n            onClose: function(selectedDates, dateStr, instance) {\n                endDatePicker.set(\"minDate\", dateStr);\n            }\n        });\n    }\n\n    if (currentLanguage === 'pt-pt' || currentLanguage === 'pt-br') {\n        const endDatePicker = flatpickr(\"#end-date\", {\n            dateFormat: \"d-m-Y\",\n            onClose: function(selectedDates, dateStr, instance) {\n                const startDate = startDatePicker.selectedDates[0];\n                if (startDate && startDate > selectedDates[0]) {\n                    endDatePicker.clear();\n                }\n            },\n            locale: {\n                firstDayOfWeek: 1,\n                weekdays: {\n                    shorthand: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'S\u00e1b'],\n                    longhand: ['Domingo', 'Segunda', 'Ter\u00e7a', 'Quarta', 'Quinta', 'Sexta', 'S\u00e1bado'],\n                },\n                months: {\n                    shorthand: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],\n                    longhand: ['Janeiro', 'Fevereiro', 'Mar\u00e7o', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],\n                },\n            }\n        });\n    } else {\n        const startDatePicker = flatpickr(\"#end-date\", {\n            dateFormat: \"d-m-Y\",\n            onClose: function(selectedDates, dateStr, instance) {\n                const startDate = startDatePicker.selectedDates[0];\n                if (startDate && startDate > selectedDates[0]) {\n                    endDatePicker.clear();\n                }\n            },\n        });\n    }\n<\/script>\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Simulation of information disclosure to the market by companies participating in the Market4Growth Sandbox Sandbox Market4Growth allows companies to test the potential of the capital market, with the support of specialized entities, in a simulated environment that is tailored and flexible according to each company\u2019s specific needs (more information available on the CMVM website). One [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-12670","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.guiadoemitente.pt\/en\/wp-json\/wp\/v2\/pages\/12670","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.guiadoemitente.pt\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.guiadoemitente.pt\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.guiadoemitente.pt\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.guiadoemitente.pt\/en\/wp-json\/wp\/v2\/comments?post=12670"}],"version-history":[{"count":1,"href":"https:\/\/www.guiadoemitente.pt\/en\/wp-json\/wp\/v2\/pages\/12670\/revisions"}],"predecessor-version":[{"id":12671,"href":"https:\/\/www.guiadoemitente.pt\/en\/wp-json\/wp\/v2\/pages\/12670\/revisions\/12671"}],"wp:attachment":[{"href":"https:\/\/www.guiadoemitente.pt\/en\/wp-json\/wp\/v2\/media?parent=12670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}