@nixweb/nixloc-ui 0.0.118 → 0.0.121

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,37 @@
1
+ <mxfile host="65bd71144e">
2
+ <diagram id="E48Z9MQLlxmhIpPkPNIA" name="Store">
3
+ <mxGraphModel dx="1123" dy="612" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1200" pageHeight="1920" background="#ffffff" math="0" shadow="0">
4
+ <root>
5
+ <mxCell id="0"/>
6
+ <mxCell id="1" parent="0"/>
7
+ <mxCell id="4" value="" style="shape=curlyBracket;whiteSpace=wrap;html=1;rounded=1;fontFamily=Helvetica;fontSize=13;fontColor=#ffffff;fillColor=none;strokeColor=#E81313;strokeWidth=2;" vertex="1" parent="1">
8
+ <mxGeometry x="138" y="25" width="20" height="202" as="geometry"/>
9
+ </mxCell>
10
+ <mxCell id="5" value="&lt;font style=&quot;font-size: 19px&quot;&gt;state&lt;/font&gt;" style="text;strokeColor=none;fillColor=none;html=1;fontSize=24;fontStyle=1;verticalAlign=middle;align=center;fontFamily=Helvetica;fontColor=#000000;" vertex="1" parent="1">
11
+ <mxGeometry x="25" y="103" width="100" height="40" as="geometry"/>
12
+ </mxCell>
13
+ <mxCell id="6" value="&lt;span style=&quot;font-family: &amp;#34;helvetica&amp;#34; ; font-size: 13px ; font-style: normal ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; color: rgb(232 , 19 , 19) ; font-weight: bold&quot;&gt;relatorio:campo[ ]:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(240 , 240 , 240) ; font-family: &amp;#34;helvetica&amp;#34; ; font-size: 13px ; font-style: normal ; font-weight: 400 ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;Campos que poderão conter no relatório, os campos são os mesmos da tabela, os parâmetros aceitos estão no component &amp;lt;tabela&amp;gt;.&lt;/font&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;#34;helvetica&amp;#34; ; font-size: 13px ; font-style: normal ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; color: rgb(232 , 19 , 19) ; font-weight: bold&quot;&gt;relatorio:filtro[ ]:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(240 , 240 , 240) ; font-family: &amp;#34;helvetica&amp;#34; ; font-size: 13px ; font-style: normal ; font-weight: 400 ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;Campos que poderão conter no relatório, os campos são os mesmos da tabela.&lt;/font&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;#34;helvetica&amp;#34; ; font-size: 13px ; font-style: normal ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; color: rgb(232 , 19 , 19) ; font-weight: bold&quot;&gt;campoSelecionado[ ]:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(240 , 240 , 240) ; font-family: &amp;#34;helvetica&amp;#34; ; font-size: 13px ; font-style: normal ; font-weight: 400 ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;Campos que foram selecionados no componente &amp;lt;Filtro&amp;gt; do &amp;lt;QueryBuilder&amp;gt;.&lt;/font&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;#34;helvetica&amp;#34; ; font-size: 13px ; font-style: normal ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; color: rgb(232 , 19 , 19) ; font-weight: bold&quot;&gt;filtroSelecionado{ children [ } }:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(240 , 240 , 240) ; font-family: &amp;#34;helvetica&amp;#34; ; font-size: 13px ; font-style: normal ; font-weight: 400 ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;Filtros selecionados no componente &amp;lt;Filtro&amp;gt; do &amp;lt;QueryBuilder&amp;gt;, o próprio &amp;lt;QueryBuilder&amp;gt; retorna um v-model.&lt;/font&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;#34;helvetica&amp;#34; ; font-size: 13px ; font-style: normal ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; color: rgb(232 , 19 , 19) ; font-weight: bold&quot;&gt;campoOrdenado{}:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(240 , 240 , 240) ; font-family: &amp;#34;helvetica&amp;#34; ; font-size: 13px ; font-style: normal ; font-weight: 400 ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;Campo que for ordenado no componente &amp;lt;Filtro&amp;gt; do &amp;lt;QueryBuilder&amp;gt;.&lt;/font&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;#34;helvetica&amp;#34; ; font-size: 13px ; font-style: normal ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; color: rgb(232 , 19 , 19) ; font-weight: bold&quot;&gt;opcoes:valorInicial [ ]:&lt;/span&gt;&lt;span style=&quot;color: rgb(240 , 240 , 240) ; font-family: &amp;#34;helvetica&amp;#34; ; font-size: 13px ; font-style: normal ; font-weight: 400 ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;#34;helvetica&amp;#34; ; font-size: 13px ; font-style: normal ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; color: rgb(232 , 19 , 19) ; font-weight: bold&quot;&gt;opcoes:opcoes[ ]:&lt;/span&gt;&lt;span style=&quot;color: rgb(240 , 240 , 240) ; font-family: &amp;#34;helvetica&amp;#34; ; font-size: 13px ; font-style: normal ; font-weight: 400 ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;#34;helvetica&amp;#34; ; font-size: 13px ; font-style: normal ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; color: rgb(232 , 19 , 19) ; font-weight: bold&quot;&gt;opcoesValorInicial [ ]:&lt;/span&gt;&lt;span style=&quot;color: rgb(240 , 240 , 240) ; font-family: &amp;#34;helvetica&amp;#34; ; font-size: 13px ; font-style: normal ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; font-weight: bold&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;#34;helvetica&amp;#34; ; font-size: 13px ; font-style: normal ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; font-weight: bold ; color: rgb(232 , 19 , 19)&quot;&gt;consulta [ ]:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(240 , 240 , 240) ; font-family: &amp;#34;helvetica&amp;#34; ; font-size: 13px ; font-style: normal ; font-weight: 400 ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;Array com a consulta no padrão oData para ser filtrado.&lt;/font&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;#34;helvetica&amp;#34; ; font-size: 13px ; font-style: normal ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; font-weight: bold ; color: rgb(232 , 19 , 19)&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;#34;helvetica&amp;#34; ; font-size: 13px ; font-style: normal ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; font-weight: bold ; color: rgb(232 , 19 , 19)&quot;&gt;resumo [ ]:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(240 , 240 , 240) ; font-family: &amp;#34;helvetica&amp;#34; ; font-size: 13px ; font-style: normal ; font-weight: 400 ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;Array com a resumo no padrão oData.&lt;/font&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;#34;helvetica&amp;#34; ; font-size: 13px ; font-style: normal ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; font-weight: bold ; color: rgb(232 , 19 , 19)&quot;&gt;tags [ ]:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;#34;helvetica&amp;#34;&quot;&gt;Array com as tags que são carregadas no componente &amp;lt;Tags/&amp;gt;&lt;/span&gt;" style="text;whiteSpace=wrap;html=1;fontSize=13;fontFamily=Helvetica;fontColor=#000000;" vertex="1" parent="1">
14
+ <mxGeometry x="167" y="31" width="896" height="190" as="geometry"/>
15
+ </mxCell>
16
+ <mxCell id="7" value="" style="shape=curlyBracket;whiteSpace=wrap;html=1;rounded=1;fontFamily=Helvetica;fontSize=13;fontColor=#ffffff;fillColor=none;strokeColor=#006600;strokeWidth=2;" vertex="1" parent="1">
17
+ <mxGeometry x="138" y="266" width="20" height="156" as="geometry"/>
18
+ </mxCell>
19
+ <mxCell id="8" value="&lt;font style=&quot;font-size: 19px&quot;&gt;mutations&lt;/font&gt;" style="text;strokeColor=none;fillColor=none;html=1;fontSize=24;fontStyle=1;verticalAlign=middle;align=center;fontFamily=Helvetica;fontColor=#000000;" vertex="1" parent="1">
20
+ <mxGeometry x="27" y="321" width="100" height="40" as="geometry"/>
21
+ </mxCell>
22
+ <mxCell id="9" value="&lt;p style=&quot;color: rgb(240 , 240 , 240) ; font-family: &amp;#34;helvetica&amp;#34; ; font-style: normal ; font-weight: 400 ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; margin: 0px 0px 0px 8px ; font-size: 13px&quot;&gt;&lt;span data-lucid-type=&quot;application/vnd.lucid.text&quot; data-lucid-content=&quot;{&amp;#34;t&amp;#34;:&amp;#34;insereRelatorio(): Insere o objeto contendo as informações dos campos e filtros.\natualizaCampoSelecionado(): Insere os campos selecionados que vem do componente &amp;lt;Campo&amp;gt; do &amp;lt;QueryBuilder&amp;gt;.\natualizaFiltroSelecionado(): Insere as informações dos filtros iniciais para carregar no componente &amp;lt;Filtro&amp;gt;, utilizado quando tem um relatório salvo.\natualizaCampoOrdenado(): Insere qual campo está ordenado para efetuar a busca.\natualizaOpcoesValorInicial(): Insere as informações dos campos iniciais para carregar no componente &amp;lt;Campo&amp;gt;, utilizado quando tem um relatório salvo.\nremoveFiltroSelecionado(): Remove o filtro selecionado, utilizado quando uma tag é removida, então precisa atualizar o array de filtro.\natualizaConsultaFiltro(): Monta o array convertendo os filtros no padrão &amp;lt;QueryBuilder&amp;gt; para o formato oData através da classe converteParaOData(), bem como adiciona no array resumo[ ] caso possua configurado nos parâmetros iniciais. Faz tambem as validações de os dados estão corretos. \n&amp;#34;,&amp;#34;m&amp;#34;:[{&amp;#34;s&amp;#34;:0,&amp;#34;n&amp;#34;:&amp;#34;p&amp;#34;,&amp;#34;v&amp;#34;:1.127450980392157},{&amp;#34;s&amp;#34;:0,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#008a0eff&amp;#34;,&amp;#34;e&amp;#34;:19},{&amp;#34;s&amp;#34;:0,&amp;#34;n&amp;#34;:&amp;#34;fc&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;Bold&amp;#34;,&amp;#34;e&amp;#34;:17},{&amp;#34;s&amp;#34;:0,&amp;#34;n&amp;#34;:&amp;#34;fid&amp;#34;,&amp;#34;v&amp;#34;:5,&amp;#34;e&amp;#34;:17},{&amp;#34;s&amp;#34;:0,&amp;#34;n&amp;#34;:&amp;#34;b&amp;#34;,&amp;#34;v&amp;#34;:true,&amp;#34;e&amp;#34;:17},{&amp;#34;s&amp;#34;:81,&amp;#34;n&amp;#34;:&amp;#34;fc&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;Bold&amp;#34;,&amp;#34;e&amp;#34;:107},{&amp;#34;s&amp;#34;:81,&amp;#34;n&amp;#34;:&amp;#34;fid&amp;#34;,&amp;#34;v&amp;#34;:5,&amp;#34;e&amp;#34;:107},{&amp;#34;s&amp;#34;:81,&amp;#34;n&amp;#34;:&amp;#34;b&amp;#34;,&amp;#34;v&amp;#34;:true,&amp;#34;e&amp;#34;:107},{&amp;#34;s&amp;#34;:81,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#008a0eff&amp;#34;,&amp;#34;e&amp;#34;:109},{&amp;#34;s&amp;#34;:188,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#008a0eff&amp;#34;,&amp;#34;e&amp;#34;:217},{&amp;#34;s&amp;#34;:188,&amp;#34;n&amp;#34;:&amp;#34;fc&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;Bold&amp;#34;,&amp;#34;e&amp;#34;:215},{&amp;#34;s&amp;#34;:188,&amp;#34;n&amp;#34;:&amp;#34;fid&amp;#34;,&amp;#34;v&amp;#34;:5,&amp;#34;e&amp;#34;:215},{&amp;#34;s&amp;#34;:188,&amp;#34;n&amp;#34;:&amp;#34;b&amp;#34;,&amp;#34;v&amp;#34;:true,&amp;#34;e&amp;#34;:215},{&amp;#34;s&amp;#34;:339,&amp;#34;n&amp;#34;:&amp;#34;fc&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;Bold&amp;#34;,&amp;#34;e&amp;#34;:362},{&amp;#34;s&amp;#34;:339,&amp;#34;n&amp;#34;:&amp;#34;fid&amp;#34;,&amp;#34;v&amp;#34;:5,&amp;#34;e&amp;#34;:362},{&amp;#34;s&amp;#34;:339,&amp;#34;n&amp;#34;:&amp;#34;b&amp;#34;,&amp;#34;v&amp;#34;:true,&amp;#34;e&amp;#34;:362},{&amp;#34;s&amp;#34;:339,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#008a0eff&amp;#34;,&amp;#34;e&amp;#34;:364},{&amp;#34;s&amp;#34;:0,&amp;#34;n&amp;#34;:&amp;#34;s&amp;#34;,&amp;#34;v&amp;#34;:19.999999999999996,&amp;#34;e&amp;#34;:992},{&amp;#34;s&amp;#34;:81,&amp;#34;n&amp;#34;:&amp;#34;p&amp;#34;,&amp;#34;v&amp;#34;:1.127450980392157},{&amp;#34;s&amp;#34;:188,&amp;#34;n&amp;#34;:&amp;#34;p&amp;#34;,&amp;#34;v&amp;#34;:1.127450980392157},{&amp;#34;s&amp;#34;:418,&amp;#34;n&amp;#34;:&amp;#34;p&amp;#34;,&amp;#34;v&amp;#34;:1.127450980392157},{&amp;#34;s&amp;#34;:339,&amp;#34;n&amp;#34;:&amp;#34;p&amp;#34;,&amp;#34;v&amp;#34;:1.127450980392157},{&amp;#34;s&amp;#34;:418,&amp;#34;n&amp;#34;:&amp;#34;fc&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;Bold&amp;#34;,&amp;#34;e&amp;#34;:446},{&amp;#34;s&amp;#34;:418,&amp;#34;n&amp;#34;:&amp;#34;fid&amp;#34;,&amp;#34;v&amp;#34;:5,&amp;#34;e&amp;#34;:446},{&amp;#34;s&amp;#34;:418,&amp;#34;n&amp;#34;:&amp;#34;b&amp;#34;,&amp;#34;v&amp;#34;:true,&amp;#34;e&amp;#34;:446},{&amp;#34;s&amp;#34;:418,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#008a0eff&amp;#34;,&amp;#34;e&amp;#34;:448},{&amp;#34;s&amp;#34;:567,&amp;#34;n&amp;#34;:&amp;#34;fc&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;Bold&amp;#34;,&amp;#34;e&amp;#34;:568},{&amp;#34;s&amp;#34;:567,&amp;#34;n&amp;#34;:&amp;#34;fid&amp;#34;,&amp;#34;v&amp;#34;:5,&amp;#34;e&amp;#34;:568},{&amp;#34;s&amp;#34;:567,&amp;#34;n&amp;#34;:&amp;#34;b&amp;#34;,&amp;#34;v&amp;#34;:true,&amp;#34;e&amp;#34;:568},{&amp;#34;s&amp;#34;:567,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#008a0eff&amp;#34;,&amp;#34;e&amp;#34;:568},{&amp;#34;s&amp;#34;:568,&amp;#34;n&amp;#34;:&amp;#34;fc&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;Bold&amp;#34;,&amp;#34;e&amp;#34;:593},{&amp;#34;s&amp;#34;:568,&amp;#34;n&amp;#34;:&amp;#34;fid&amp;#34;,&amp;#34;v&amp;#34;:5,&amp;#34;e&amp;#34;:593},{&amp;#34;s&amp;#34;:568,&amp;#34;n&amp;#34;:&amp;#34;b&amp;#34;,&amp;#34;v&amp;#34;:true,&amp;#34;e&amp;#34;:593},{&amp;#34;s&amp;#34;:568,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#008a0eff&amp;#34;,&amp;#34;e&amp;#34;:595},{&amp;#34;s&amp;#34;:704,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#008a0eff&amp;#34;,&amp;#34;e&amp;#34;:730},{&amp;#34;s&amp;#34;:704,&amp;#34;n&amp;#34;:&amp;#34;fc&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;Bold&amp;#34;,&amp;#34;e&amp;#34;:730},{&amp;#34;s&amp;#34;:704,&amp;#34;n&amp;#34;:&amp;#34;b&amp;#34;,&amp;#34;v&amp;#34;:true,&amp;#34;e&amp;#34;:730},{&amp;#34;s&amp;#34;:704,&amp;#34;n&amp;#34;:&amp;#34;fid&amp;#34;,&amp;#34;v&amp;#34;:5,&amp;#34;e&amp;#34;:730},{&amp;#34;s&amp;#34;:568,&amp;#34;n&amp;#34;:&amp;#34;p&amp;#34;,&amp;#34;v&amp;#34;:1.127450980392157},{&amp;#34;s&amp;#34;:704,&amp;#34;n&amp;#34;:&amp;#34;p&amp;#34;,&amp;#34;v&amp;#34;:1.127450980392157}]}&quot;&gt;&lt;span style=&quot;font-weight: bold ; color: rgb(0 , 138 , 14)&quot;&gt;insereRelatorio()&lt;/span&gt;&lt;span style=&quot;color: rgb(0 , 138 , 14)&quot;&gt;:&lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;Insere o objeto contendo as informações dos campos e filtros.&lt;/font&gt;&lt;br&gt;&lt;span style=&quot;font-weight: bold ; color: rgb(0 , 138 , 14)&quot;&gt;atualizaCampoSelecionado()&lt;/span&gt;&lt;span style=&quot;color: rgb(0 , 138 , 14)&quot;&gt;:&lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Insere os campos selecionados que vem do componente &amp;lt;Campo&amp;gt; do &amp;lt;QueryBuilder&amp;gt;.&lt;/font&gt;&lt;br&gt;&lt;span style=&quot;font-weight: bold ; color: rgb(0 , 138 , 14)&quot;&gt;atualizaFiltroSelecionado()&lt;/span&gt;&lt;span style=&quot;color: rgb(0 , 138 , 14)&quot;&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;Insere as informações dos filtros iniciais para carregar no componente &amp;lt;Filtro&amp;gt;, utilizado quando tem um relatório salvo.&lt;/font&gt;&lt;br&gt;&lt;span style=&quot;font-weight: bold ; color: rgb(0 , 138 , 14)&quot;&gt;atualizaCampoOrdenado()&lt;/span&gt;&lt;span style=&quot;color: rgb(0 , 138 , 14)&quot;&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;Insere qual campo está ordenado para efetuar a busca.&lt;/font&gt;&lt;br&gt;&lt;span style=&quot;font-weight: bold ; color: rgb(0 , 138 , 14)&quot;&gt;atualizaOpcoesValorInicial()&lt;/span&gt;&lt;span style=&quot;color: rgb(0 , 138 , 14)&quot;&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;Insere as informações dos campos iniciais para carregar no componente &amp;lt;Campo&amp;gt;, utilizado quando tem um relatório salvo.&lt;/font&gt;&lt;span style=&quot;font-weight: bold ; color: rgb(0 , 138 , 14)&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold ; color: rgb(0 , 138 , 14)&quot;&gt;removeFiltroSelecionado()&lt;/span&gt;&lt;span style=&quot;color: rgb(0 , 138 , 14)&quot;&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;Remove o filtro selecionado, utilizado quando uma tag é removida, então precisa atualizar o array de filtro.&lt;/font&gt;&lt;br&gt;&lt;span style=&quot;color: rgb(0 , 138 , 14) ; font-weight: bold&quot;&gt;atualizaConsultaFiltro():&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;Monta o array convertendo os filtros no padrão &amp;lt;QueryBuilder&amp;gt; para o formato oData através da classe converteParaOData(),&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;color: rgb(240 , 240 , 240) ; font-family: &amp;#34;helvetica&amp;#34; ; font-style: normal ; font-weight: 400 ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; margin: 0px 0px 0px 8px ; font-size: 13px&quot;&gt;&lt;span data-lucid-type=&quot;application/vnd.lucid.text&quot; data-lucid-content=&quot;{&amp;#34;t&amp;#34;:&amp;#34;insereRelatorio(): Insere o objeto contendo as informações dos campos e filtros.\natualizaCampoSelecionado(): Insere os campos selecionados que vem do componente &amp;lt;Campo&amp;gt; do &amp;lt;QueryBuilder&amp;gt;.\natualizaFiltroSelecionado(): Insere as informações dos filtros iniciais para carregar no componente &amp;lt;Filtro&amp;gt;, utilizado quando tem um relatório salvo.\natualizaCampoOrdenado(): Insere qual campo está ordenado para efetuar a busca.\natualizaOpcoesValorInicial(): Insere as informações dos campos iniciais para carregar no componente &amp;lt;Campo&amp;gt;, utilizado quando tem um relatório salvo.\nremoveFiltroSelecionado(): Remove o filtro selecionado, utilizado quando uma tag é removida, então precisa atualizar o array de filtro.\natualizaConsultaFiltro(): Monta o array convertendo os filtros no padrão &amp;lt;QueryBuilder&amp;gt; para o formato oData através da classe converteParaOData(), bem como adiciona no array resumo[ ] caso possua configurado nos parâmetros iniciais. Faz tambem as validações de os dados estão corretos. \n&amp;#34;,&amp;#34;m&amp;#34;:[{&amp;#34;s&amp;#34;:0,&amp;#34;n&amp;#34;:&amp;#34;p&amp;#34;,&amp;#34;v&amp;#34;:1.127450980392157},{&amp;#34;s&amp;#34;:0,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#008a0eff&amp;#34;,&amp;#34;e&amp;#34;:19},{&amp;#34;s&amp;#34;:0,&amp;#34;n&amp;#34;:&amp;#34;fc&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;Bold&amp;#34;,&amp;#34;e&amp;#34;:17},{&amp;#34;s&amp;#34;:0,&amp;#34;n&amp;#34;:&amp;#34;fid&amp;#34;,&amp;#34;v&amp;#34;:5,&amp;#34;e&amp;#34;:17},{&amp;#34;s&amp;#34;:0,&amp;#34;n&amp;#34;:&amp;#34;b&amp;#34;,&amp;#34;v&amp;#34;:true,&amp;#34;e&amp;#34;:17},{&amp;#34;s&amp;#34;:81,&amp;#34;n&amp;#34;:&amp;#34;fc&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;Bold&amp;#34;,&amp;#34;e&amp;#34;:107},{&amp;#34;s&amp;#34;:81,&amp;#34;n&amp;#34;:&amp;#34;fid&amp;#34;,&amp;#34;v&amp;#34;:5,&amp;#34;e&amp;#34;:107},{&amp;#34;s&amp;#34;:81,&amp;#34;n&amp;#34;:&amp;#34;b&amp;#34;,&amp;#34;v&amp;#34;:true,&amp;#34;e&amp;#34;:107},{&amp;#34;s&amp;#34;:81,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#008a0eff&amp;#34;,&amp;#34;e&amp;#34;:109},{&amp;#34;s&amp;#34;:188,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#008a0eff&amp;#34;,&amp;#34;e&amp;#34;:217},{&amp;#34;s&amp;#34;:188,&amp;#34;n&amp;#34;:&amp;#34;fc&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;Bold&amp;#34;,&amp;#34;e&amp;#34;:215},{&amp;#34;s&amp;#34;:188,&amp;#34;n&amp;#34;:&amp;#34;fid&amp;#34;,&amp;#34;v&amp;#34;:5,&amp;#34;e&amp;#34;:215},{&amp;#34;s&amp;#34;:188,&amp;#34;n&amp;#34;:&amp;#34;b&amp;#34;,&amp;#34;v&amp;#34;:true,&amp;#34;e&amp;#34;:215},{&amp;#34;s&amp;#34;:339,&amp;#34;n&amp;#34;:&amp;#34;fc&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;Bold&amp;#34;,&amp;#34;e&amp;#34;:362},{&amp;#34;s&amp;#34;:339,&amp;#34;n&amp;#34;:&amp;#34;fid&amp;#34;,&amp;#34;v&amp;#34;:5,&amp;#34;e&amp;#34;:362},{&amp;#34;s&amp;#34;:339,&amp;#34;n&amp;#34;:&amp;#34;b&amp;#34;,&amp;#34;v&amp;#34;:true,&amp;#34;e&amp;#34;:362},{&amp;#34;s&amp;#34;:339,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#008a0eff&amp;#34;,&amp;#34;e&amp;#34;:364},{&amp;#34;s&amp;#34;:0,&amp;#34;n&amp;#34;:&amp;#34;s&amp;#34;,&amp;#34;v&amp;#34;:19.999999999999996,&amp;#34;e&amp;#34;:992},{&amp;#34;s&amp;#34;:81,&amp;#34;n&amp;#34;:&amp;#34;p&amp;#34;,&amp;#34;v&amp;#34;:1.127450980392157},{&amp;#34;s&amp;#34;:188,&amp;#34;n&amp;#34;:&amp;#34;p&amp;#34;,&amp;#34;v&amp;#34;:1.127450980392157},{&amp;#34;s&amp;#34;:418,&amp;#34;n&amp;#34;:&amp;#34;p&amp;#34;,&amp;#34;v&amp;#34;:1.127450980392157},{&amp;#34;s&amp;#34;:339,&amp;#34;n&amp;#34;:&amp;#34;p&amp;#34;,&amp;#34;v&amp;#34;:1.127450980392157},{&amp;#34;s&amp;#34;:418,&amp;#34;n&amp;#34;:&amp;#34;fc&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;Bold&amp;#34;,&amp;#34;e&amp;#34;:446},{&amp;#34;s&amp;#34;:418,&amp;#34;n&amp;#34;:&amp;#34;fid&amp;#34;,&amp;#34;v&amp;#34;:5,&amp;#34;e&amp;#34;:446},{&amp;#34;s&amp;#34;:418,&amp;#34;n&amp;#34;:&amp;#34;b&amp;#34;,&amp;#34;v&amp;#34;:true,&amp;#34;e&amp;#34;:446},{&amp;#34;s&amp;#34;:418,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#008a0eff&amp;#34;,&amp;#34;e&amp;#34;:448},{&amp;#34;s&amp;#34;:567,&amp;#34;n&amp;#34;:&amp;#34;fc&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;Bold&amp;#34;,&amp;#34;e&amp;#34;:568},{&amp;#34;s&amp;#34;:567,&amp;#34;n&amp;#34;:&amp;#34;fid&amp;#34;,&amp;#34;v&amp;#34;:5,&amp;#34;e&amp;#34;:568},{&amp;#34;s&amp;#34;:567,&amp;#34;n&amp;#34;:&amp;#34;b&amp;#34;,&amp;#34;v&amp;#34;:true,&amp;#34;e&amp;#34;:568},{&amp;#34;s&amp;#34;:567,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#008a0eff&amp;#34;,&amp;#34;e&amp;#34;:568},{&amp;#34;s&amp;#34;:568,&amp;#34;n&amp;#34;:&amp;#34;fc&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;Bold&amp;#34;,&amp;#34;e&amp;#34;:593},{&amp;#34;s&amp;#34;:568,&amp;#34;n&amp;#34;:&amp;#34;fid&amp;#34;,&amp;#34;v&amp;#34;:5,&amp;#34;e&amp;#34;:593},{&amp;#34;s&amp;#34;:568,&amp;#34;n&amp;#34;:&amp;#34;b&amp;#34;,&amp;#34;v&amp;#34;:true,&amp;#34;e&amp;#34;:593},{&amp;#34;s&amp;#34;:568,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#008a0eff&amp;#34;,&amp;#34;e&amp;#34;:595},{&amp;#34;s&amp;#34;:704,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#008a0eff&amp;#34;,&amp;#34;e&amp;#34;:730},{&amp;#34;s&amp;#34;:704,&amp;#34;n&amp;#34;:&amp;#34;fc&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;Bold&amp;#34;,&amp;#34;e&amp;#34;:730},{&amp;#34;s&amp;#34;:704,&amp;#34;n&amp;#34;:&amp;#34;b&amp;#34;,&amp;#34;v&amp;#34;:true,&amp;#34;e&amp;#34;:730},{&amp;#34;s&amp;#34;:704,&amp;#34;n&amp;#34;:&amp;#34;fid&amp;#34;,&amp;#34;v&amp;#34;:5,&amp;#34;e&amp;#34;:730},{&amp;#34;s&amp;#34;:568,&amp;#34;n&amp;#34;:&amp;#34;p&amp;#34;,&amp;#34;v&amp;#34;:1.127450980392157},{&amp;#34;s&amp;#34;:704,&amp;#34;n&amp;#34;:&amp;#34;p&amp;#34;,&amp;#34;v&amp;#34;:1.127450980392157}]}&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;bem como adiciona no array resumo[ ] caso possua configurado nos parâmetros iniciais. Faz tambem as validações de os dados estão corretos.&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;" style="text;whiteSpace=wrap;html=1;fontSize=19;fontFamily=Helvetica;fontColor=#E81313;" vertex="1" parent="1">
23
+ <mxGeometry x="162" y="273" width="917" height="142" as="geometry"/>
24
+ </mxCell>
25
+ <mxCell id="10" value="" style="shape=curlyBracket;whiteSpace=wrap;html=1;rounded=1;fontFamily=Helvetica;fontSize=13;fontColor=#ffffff;fillColor=none;strokeColor=#000099;strokeWidth=2;" vertex="1" parent="1">
26
+ <mxGeometry x="142" y="465" width="20" height="168" as="geometry"/>
27
+ </mxCell>
28
+ <mxCell id="11" value="&lt;font style=&quot;font-size: 19px&quot;&gt;getters&lt;/font&gt;" style="text;strokeColor=none;fillColor=none;html=1;fontSize=24;fontStyle=1;verticalAlign=middle;align=center;fontFamily=Helvetica;fontColor=#000000;" vertex="1" parent="1">
29
+ <mxGeometry x="31" y="520" width="100" height="40" as="geometry"/>
30
+ </mxCell>
31
+ <mxCell id="13" value="&lt;p style=&quot;font-family: &amp;#34;helvetica&amp;#34; ; font-style: normal ; font-weight: 400 ; letter-spacing: normal ; text-align: left ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; margin: 0px 0px 0px 8px ; font-size: 13px&quot;&gt;&lt;span data-lucid-type=&quot;application/vnd.lucid.text&quot; data-lucid-content=&quot;{&amp;#34;t&amp;#34;:&amp;#34;cabecalhoTabela: Verifica os campos da tabela que está marcado como mostrar=true e retorna para ser adicionado no componente &amp;lt;Tabela&amp;gt;.\nopcoes: Verifica os campos da tabela para montar as opções no componente &amp;lt;Filtro&amp;gt;, bem como tambem verifica quais estão marcados como mostrar=true e deixar como check e carregar no valorInicial. \nfiltroObrigatorio: Verifica se foi passado que o relatório tenha algum filtro que seja obrigatório e retorno um true ou false.\nfiltroSelecionado: Verifica se tem algum filtro selecionado que seja válido e adiciona, ou seja se tive algum filtro sem conteúdo não será adicionado. \noDataOrderBy: Pega o objeto que foi carregado no campoOrdenado que vem do &amp;lt;Campo&amp;gt; e monta um pedaço da url oData. \noDataSelect: Verifica os campos que estão selecionados e monta uma string para compor a url do oData..\noDataFilter: Verifica os filtros e monta uma string para compor a url do oData. \ntags: Verifica nos filtros selecionados os tipos de pesquisa para montar o array com as tags formatadas.&amp;#34;,&amp;#34;m&amp;#34;:[{&amp;#34;s&amp;#34;:0,&amp;#34;n&amp;#34;:&amp;#34;p&amp;#34;,&amp;#34;v&amp;#34;:1.127450980392157},{&amp;#34;s&amp;#34;:0,&amp;#34;n&amp;#34;:&amp;#34;b&amp;#34;,&amp;#34;v&amp;#34;:true,&amp;#34;e&amp;#34;:17},{&amp;#34;s&amp;#34;:0,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#1071e5ff&amp;#34;,&amp;#34;e&amp;#34;:18},{&amp;#34;s&amp;#34;:0,&amp;#34;n&amp;#34;:&amp;#34;fc&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;Bold&amp;#34;,&amp;#34;e&amp;#34;:17},{&amp;#34;s&amp;#34;:0,&amp;#34;n&amp;#34;:&amp;#34;fid&amp;#34;,&amp;#34;v&amp;#34;:5,&amp;#34;e&amp;#34;:17},{&amp;#34;s&amp;#34;:0,&amp;#34;n&amp;#34;:&amp;#34;s&amp;#34;,&amp;#34;v&amp;#34;:19.999999999999996,&amp;#34;e&amp;#34;:1017},{&amp;#34;s&amp;#34;:136,&amp;#34;n&amp;#34;:&amp;#34;b&amp;#34;,&amp;#34;v&amp;#34;:true,&amp;#34;e&amp;#34;:144},{&amp;#34;s&amp;#34;:136,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#1071e5ff&amp;#34;,&amp;#34;e&amp;#34;:144},{&amp;#34;s&amp;#34;:136,&amp;#34;n&amp;#34;:&amp;#34;fc&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;Bold&amp;#34;,&amp;#34;e&amp;#34;:144},{&amp;#34;s&amp;#34;:136,&amp;#34;n&amp;#34;:&amp;#34;fid&amp;#34;,&amp;#34;v&amp;#34;:5,&amp;#34;e&amp;#34;:144},{&amp;#34;s&amp;#34;:136,&amp;#34;n&amp;#34;:&amp;#34;p&amp;#34;,&amp;#34;v&amp;#34;:1.127450980392157},{&amp;#34;s&amp;#34;:330,&amp;#34;n&amp;#34;:&amp;#34;fc&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;Bold&amp;#34;,&amp;#34;e&amp;#34;:351},{&amp;#34;s&amp;#34;:330,&amp;#34;n&amp;#34;:&amp;#34;fid&amp;#34;,&amp;#34;v&amp;#34;:5,&amp;#34;e&amp;#34;:351},{&amp;#34;s&amp;#34;:330,&amp;#34;n&amp;#34;:&amp;#34;b&amp;#34;,&amp;#34;v&amp;#34;:true,&amp;#34;e&amp;#34;:351},{&amp;#34;s&amp;#34;:330,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#1071e5ff&amp;#34;,&amp;#34;e&amp;#34;:352},{&amp;#34;s&amp;#34;:332,&amp;#34;n&amp;#34;:&amp;#34;p&amp;#34;,&amp;#34;v&amp;#34;:1.127450980392157},{&amp;#34;s&amp;#34;:460,&amp;#34;n&amp;#34;:&amp;#34;fc&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;Bold&amp;#34;,&amp;#34;e&amp;#34;:479},{&amp;#34;s&amp;#34;:460,&amp;#34;n&amp;#34;:&amp;#34;fid&amp;#34;,&amp;#34;v&amp;#34;:5,&amp;#34;e&amp;#34;:479},{&amp;#34;s&amp;#34;:460,&amp;#34;n&amp;#34;:&amp;#34;b&amp;#34;,&amp;#34;v&amp;#34;:true,&amp;#34;e&amp;#34;:479},{&amp;#34;s&amp;#34;:460,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#1071e5ff&amp;#34;,&amp;#34;e&amp;#34;:480},{&amp;#34;s&amp;#34;:460,&amp;#34;n&amp;#34;:&amp;#34;p&amp;#34;,&amp;#34;v&amp;#34;:1.127450980392157},{&amp;#34;s&amp;#34;:613,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#1071e5ff&amp;#34;,&amp;#34;e&amp;#34;:627},{&amp;#34;s&amp;#34;:613,&amp;#34;n&amp;#34;:&amp;#34;fc&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;Bold&amp;#34;,&amp;#34;e&amp;#34;:627},{&amp;#34;s&amp;#34;:613,&amp;#34;n&amp;#34;:&amp;#34;fid&amp;#34;,&amp;#34;v&amp;#34;:5,&amp;#34;e&amp;#34;:627},{&amp;#34;s&amp;#34;:613,&amp;#34;n&amp;#34;:&amp;#34;b&amp;#34;,&amp;#34;v&amp;#34;:true,&amp;#34;e&amp;#34;:627},{&amp;#34;s&amp;#34;:613,&amp;#34;n&amp;#34;:&amp;#34;p&amp;#34;,&amp;#34;v&amp;#34;:1.127450980392157},{&amp;#34;s&amp;#34;:727,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#1071e5ff&amp;#34;,&amp;#34;e&amp;#34;:728},{&amp;#34;s&amp;#34;:729,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#1071e5ff&amp;#34;,&amp;#34;e&amp;#34;:742},{&amp;#34;s&amp;#34;:729,&amp;#34;n&amp;#34;:&amp;#34;fc&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;Bold&amp;#34;,&amp;#34;e&amp;#34;:742},{&amp;#34;s&amp;#34;:729,&amp;#34;n&amp;#34;:&amp;#34;fid&amp;#34;,&amp;#34;v&amp;#34;:5,&amp;#34;e&amp;#34;:742},{&amp;#34;s&amp;#34;:729,&amp;#34;n&amp;#34;:&amp;#34;b&amp;#34;,&amp;#34;v&amp;#34;:true,&amp;#34;e&amp;#34;:742},{&amp;#34;s&amp;#34;:729,&amp;#34;n&amp;#34;:&amp;#34;p&amp;#34;,&amp;#34;v&amp;#34;:1.127450980392157},{&amp;#34;s&amp;#34;:832,&amp;#34;n&amp;#34;:&amp;#34;fc&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;Bold&amp;#34;,&amp;#34;e&amp;#34;:844},{&amp;#34;s&amp;#34;:832,&amp;#34;n&amp;#34;:&amp;#34;fid&amp;#34;,&amp;#34;v&amp;#34;:5,&amp;#34;e&amp;#34;:844},{&amp;#34;s&amp;#34;:832,&amp;#34;n&amp;#34;:&amp;#34;b&amp;#34;,&amp;#34;v&amp;#34;:true,&amp;#34;e&amp;#34;:844},{&amp;#34;s&amp;#34;:832,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#1071e5ff&amp;#34;,&amp;#34;e&amp;#34;:845},{&amp;#34;s&amp;#34;:832,&amp;#34;n&amp;#34;:&amp;#34;p&amp;#34;,&amp;#34;v&amp;#34;:1.127450980392157},{&amp;#34;s&amp;#34;:913,&amp;#34;n&amp;#34;:&amp;#34;fc&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;Bold&amp;#34;,&amp;#34;e&amp;#34;:919},{&amp;#34;s&amp;#34;:913,&amp;#34;n&amp;#34;:&amp;#34;fid&amp;#34;,&amp;#34;v&amp;#34;:5,&amp;#34;e&amp;#34;:919},{&amp;#34;s&amp;#34;:913,&amp;#34;n&amp;#34;:&amp;#34;b&amp;#34;,&amp;#34;v&amp;#34;:true,&amp;#34;e&amp;#34;:919},{&amp;#34;s&amp;#34;:913,&amp;#34;n&amp;#34;:&amp;#34;c&amp;#34;,&amp;#34;v&amp;#34;:&amp;#34;#1071e5ff&amp;#34;,&amp;#34;e&amp;#34;:919},{&amp;#34;s&amp;#34;:913,&amp;#34;n&amp;#34;:&amp;#34;p&amp;#34;,&amp;#34;v&amp;#34;:1.127450980392157}]}&quot;&gt;&lt;span style=&quot;color: rgb(16 , 113 , 229) ; font-weight: bold&quot;&gt;cabecalhoTabela: &lt;/span&gt; &lt;font color=&quot;#000000&quot;&gt;Verifica os campos da tabela que está marcado como mostrar=true e retorna para ser adicionado no componente &amp;lt;Tabela&amp;gt;.&lt;/font&gt;&lt;br&gt;&lt;span style=&quot;color: rgb(16 , 113 , 229) ; font-weight: bold&quot;&gt;opcoes: &lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;Verifica os campos da tabela para montar as opções no componente &amp;lt;Filtro&amp;gt;, bem como tambem verifica quais estão marcados como mostrar=true e deixar como check e carregar no valorInicial.&lt;/font&gt;&lt;span style=&quot;color: rgb(16 , 113 , 229) ; font-weight: bold&quot;&gt; &lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(16 , 113 , 229) ; font-weight: bold&quot;&gt;filtroObrigatorio: &lt;/span&gt; &lt;font color=&quot;#000000&quot;&gt;Verifica se foi passado que o relatório tenha algum filtro que seja obrigatório e retorno um true ou false.&lt;/font&gt;&lt;br&gt;&lt;span style=&quot;color: rgb(16 , 113 , 229) ; font-weight: bold&quot;&gt;filtroSelecionado:&lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt; &lt;/span&gt; Verifica se tem algum filtro selecionado que seja válido e adiciona, ou seja se tive algum filtro sem conteúdo não será adicionado. &lt;/font&gt;&lt;br&gt;&lt;span style=&quot;color: rgb(16 , 113 , 229) ; font-weight: bold&quot;&gt;oDataOrderBy: &lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;Pega o objeto que foi carregado no campoOrdenado que vem do &amp;lt;Campo&amp;gt; e monta um pedaço da url oData. &lt;/font&gt;&lt;span style=&quot;color: rgb(16 , 113 , 229)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: rgb(240 , 240 , 240)&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(16 , 113 , 229) ; font-weight: bold&quot;&gt;oDataSelect: &lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;Verifica os campos que estão selecionados e monta uma string para compor a url do oData.&lt;/font&gt;&lt;br&gt;&lt;span style=&quot;color: rgb(16 , 113 , 229) ; font-weight: bold&quot;&gt;oDataFilter:&lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt; Verifica os filtros e monta uma string para compor a url do oData. &lt;/font&gt;&lt;br&gt;&lt;span style=&quot;color: rgb(16 , 113 , 229) ; font-weight: bold&quot;&gt;tags: &lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;Verifica nos filtros selecionados os tipos de pesquisa para montar o array com as tags formatadas.&lt;/font&gt;&lt;/span&gt;&lt;br&gt;&lt;/p&gt;" style="text;whiteSpace=wrap;html=1;fontSize=19;fontFamily=Helvetica;fontColor=#E81313;" vertex="1" parent="1">
32
+ <mxGeometry x="166" y="472" width="998" height="152" as="geometry"/>
33
+ </mxCell>
34
+ </root>
35
+ </mxGraphModel>
36
+ </diagram>
37
+ </mxfile>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nixweb/nixloc-ui",
3
- "version": "0.0.118",
3
+ "version": "0.0.121",
4
4
  "description": "Componentes UI",
5
5
  "author": "Fábio Ávila <fabio@nixweb.com.br>",
6
6
  "private": false,
@@ -10,12 +10,15 @@
10
10
  "lint": "vue-cli-service lint"
11
11
  },
12
12
  "dependencies": {
13
- "@babel/polyfill": "^7.2.5",
13
+ "@babel/polyfill": "^7.12.1",
14
14
  "@ckeditor/ckeditor5-vue2": "^2.0.0",
15
+ "axios": "^0.24.0",
15
16
  "bootstrap-vue": "^2.0.0-rc.11",
16
- "sass-loader": "^12.4.0",
17
+ "core-js": "^3.6.5",
18
+ "sass-loader": "^10.1.1",
17
19
  "v-runtime-template": "^1.10.0",
18
20
  "vodal": "^2.4.0",
21
+ "vue": "^2.6.11",
19
22
  "vue-color": "^2.7.0",
20
23
  "vue-currency-filter": "^3.3.0",
21
24
  "vue-html2pdf": "^1.8.0",
@@ -26,6 +29,7 @@
26
29
  "vue-multiselect": "^2.1.0",
27
30
  "vue-numeric": "^2.4.1",
28
31
  "vue-print-nb": "^1.7.5",
32
+ "vue-router": "^3.0.1",
29
33
  "vue-simple-progress": "^1.1.1",
30
34
  "vue-the-mask": "^0.11.1",
31
35
  "vue-toasted": "^1.1.28",
@@ -33,7 +37,9 @@
33
37
  "vue-upload-file": "^1.1.0",
34
38
  "vue2-datepicker": "^2.13.0",
35
39
  "vue2-editor": "^2.6.6",
36
- "vuejs-ace-editor": "^1.0.1"
40
+ "vuejs-ace-editor": "^1.0.1",
41
+ "vuex": "^3.6.2",
42
+ "vuex-persistedstate": "^4.0.0"
37
43
  },
38
44
  "devDependencies": {
39
45
  "@vue/cli-plugin-babel": "~4.5.0",
@@ -59,7 +65,7 @@
59
65
  "rules": {}
60
66
  },
61
67
  "engines": {
62
- "node": ">= 6.0.0",
68
+ "node": "16.14.2",
63
69
  "npm": ">= 3.0.0"
64
70
  },
65
71
  "browserslist": [
@@ -67,9 +73,5 @@
67
73
  "last 2 versions",
68
74
  "not dead"
69
75
  ],
70
- "main": "babel.config.js",
71
- "repository": {
72
- "type": "git",
73
- "url": "git+https://github.com/nixweb-sistemas/nixloc-ui.git"
74
- }
76
+ "main": "babel.config.js"
75
77
  }
package/public/index.html CHANGED
@@ -6,13 +6,11 @@
6
6
  <meta name="viewport" content="width=device-width,initial-scale=1.0">
7
7
  <link rel="shortcut icon" type="image/png" href="/favicon.ico" />
8
8
  <title>
9
- Nixloc - Component
9
+ Nixloc Componentes UI
10
10
  </title>
11
11
 
12
12
  <link rel="stylesheet" type="text/css" href="/styles/app.css">
13
- <link rel="stylesheet" type="text/css" href="/styles/menu.css">
14
-
15
- <script src="/js/menu.js"></script>
13
+
16
14
  </head>
17
15
 
18
16
  <body>
@@ -13,7 +13,6 @@ textarea:focus, input:focus, select:focus {
13
13
  outline: 0 !important;
14
14
  }
15
15
 
16
-
17
16
  .form-control {
18
17
  font-size: 14px !important;
19
18
  border-left: 0px !important;
@@ -9,6 +9,7 @@
9
9
  class="selecione"
10
10
  :class="{
11
11
  'selecione-invalido': notificacoes.length > 0 && formSujo,
12
+ borda: mostrarBorda,
12
13
  }"
13
14
  >
14
15
  <multiselect
@@ -122,6 +123,10 @@ export default {
122
123
  type: Boolean,
123
124
  default: true,
124
125
  },
126
+ mostrarBorda: {
127
+ type: Boolean,
128
+ default: true,
129
+ },
125
130
  },
126
131
  components: {
127
132
  Multiselect,
@@ -140,6 +145,7 @@ export default {
140
145
  paginaAtual: 1,
141
146
  totalPorPagina: 20,
142
147
  },
148
+
143
149
  cadastrarNovo: false,
144
150
  carregando: true,
145
151
  notificacoes: [],
@@ -306,7 +312,6 @@ div.depois-lista {
306
312
  height: 36px;
307
313
  border-bottom: 1px solid #d6dadf;
308
314
  border-radius: 0px !important;
309
- margin-bottom: 20px;
310
315
  }
311
316
 
312
317
  .selecione-invalido {
@@ -321,4 +326,10 @@ div.depois-lista {
321
326
  font-size: 18px;
322
327
  margin-bottom: 5px;
323
328
  }
329
+
330
+ .borda {
331
+ border: 1px solid #dbdee0 !important;
332
+ border-radius: 5px !important;
333
+ height: 38px !important;
334
+ }
324
335
  </style>
@@ -9,6 +9,7 @@ export default class ConverteParaOdata {
9
9
  if (query.operator === "diferente") return `${campo} ne '${valor}'`;
10
10
  if (query.operator === "contem") return `contains(${campo},'${valor}')`;
11
11
  if (query.operator === "periodo") return this.convertePeriodo(valor);
12
+ if (query.operator === "escolher") return this.converteEscolher(campo, valor);
12
13
  if (query.operator === "checkbox") return this.converteCheckbox(campo, valor, tipo, label);
13
14
  if (query.operator === "=") return `${campo} eq ${valor}`;
14
15
  if (query.operator === "!=") return `${campo} ne ${valor}`;
@@ -22,6 +23,9 @@ export default class ConverteParaOdata {
22
23
  let fim = this.converteData(valor[1]);
23
24
  return `data ge ${inicio} and data le ${fim}`;
24
25
  }
26
+ converteEscolher(campo, valor) {
27
+ return `${campo} eq '${valor.id}'`;
28
+ }
25
29
  converteCheckbox(campo, valor, tipo, label) {
26
30
  let consulta = "";
27
31
  let sequencia = 0;
@@ -64,6 +64,10 @@
64
64
  :value="query.value"
65
65
  @input="updateQuery"
66
66
  />
67
+
68
+ <div class="div-escolher" v-if="rule.component == 'escolher'">
69
+ <Escolher :url="rule.props.url" :value="query.value" @input="updateQuery" />
70
+ </div>
67
71
  </div>
68
72
 
69
73
  <!-- Checkbox input -->
@@ -161,11 +165,23 @@
161
165
  <script>
162
166
  import QueryBuilderRule from "../../components/QueryBuilderRule";
163
167
  import DateTime from "@nixweb/nixloc-ui/src/component/forms/DateTime";
168
+ import Escolher from "@nixweb/nixloc-ui/src/component/forms/Escolher";
164
169
 
165
170
  export default {
166
171
  extends: QueryBuilderRule,
167
172
  components: {
168
173
  DateTime,
174
+ Escolher,
175
+ },
176
+ data() {
177
+ return {
178
+ teste: {},
179
+ };
169
180
  },
170
181
  };
171
182
  </script>
183
+ <style scoped>
184
+ .div-escolher {
185
+ width: 320px;
186
+ }
187
+ </style>
@@ -126,26 +126,28 @@
126
126
  <div class="g-div-moldura div-tabela" v-if="!carregando && tamanhoDados > 0">
127
127
  <b-row>
128
128
  <b-col sm="6">
129
- <div class="lado-a-lado">
130
- <ExportarExcel
131
- :botao="{ tipo: 'editar', titulo: 'Excel', tamanho: 'pequeno' }"
132
- nomeArquivo="Auditoria"
133
- :cabecalho="conteudo.cabecalhoTabela"
134
- :dados="conteudo.dados"
135
- />
136
- </div>
137
- <div class="lado-a-lado">
138
- <div>
139
- <Botao
140
- v-print="'#printMe'"
141
- chave="aplicaFiltro"
142
- tipo="editar"
143
- titulo="Imprimir"
144
- classeIcone="fas fa-print"
145
- tamanho="pequeno"
146
- :clique="aplicarFiltro"
129
+ <div class="div-botao">
130
+ <div class="lado-a-lado">
131
+ <ExportarExcel
132
+ :botao="{ tipo: 'editar', titulo: 'Excel', tamanho: 'pequeno' }"
133
+ nomeArquivo="Auditoria"
134
+ :cabecalho="conteudo.cabecalhoTabela"
135
+ :dados="conteudo.dados"
147
136
  />
148
137
  </div>
138
+ <div class="lado-a-lado">
139
+ <div>
140
+ <Botao
141
+ v-print="'#printMe'"
142
+ chave="aplicaFiltro"
143
+ tipo="editar"
144
+ titulo="Imprimir"
145
+ classeIcone="fas fa-print"
146
+ tamanho="pequeno"
147
+ :clique="aplicarFiltro"
148
+ />
149
+ </div>
150
+ </div>
149
151
  </div>
150
152
  </b-col>
151
153
  <b-col sm="6">
@@ -275,6 +277,8 @@ export default {
275
277
  });
276
278
  });
277
279
 
280
+ if (this.filtroObrigatorio.length == 0) retorno = false;
281
+
278
282
  return retorno;
279
283
  },
280
284
  tamanhoDados() {
@@ -405,37 +409,38 @@ export default {
405
409
  deep: true,
406
410
  },
407
411
  "conteudo.paginaAtual": {
408
- handler(value) {
409
- if (value <= this.conteudo.paginacao - 1) {
412
+ handler(paginaAtual) {
413
+ if (paginaAtual <= this.conteudo.paginacao - 1) {
410
414
  let self = this;
411
415
  setTimeout(function () {
412
416
  self.consultaOdata();
413
417
  }, 200);
414
418
  }
415
- if (value == this.conteudo.paginacao && value != 0) this.carregando = false;
419
+ if (paginaAtual == this.conteudo.paginacao && paginaAtual != 0)
420
+ this.carregando = false;
416
421
  },
417
422
  deep: true,
418
423
  },
419
424
  "conteudo.paginacao": {
420
- handler(value) {
425
+ handler() {
421
426
  this.consultaOdata();
422
427
  },
423
428
  deep: true,
424
429
  },
425
430
  "oDataFilter.consulta": {
426
- handler(value) {
431
+ handler() {
427
432
  this.btnDesativado = false;
428
433
  },
429
434
  deep: true,
430
435
  },
431
436
  oDataSelect: {
432
- handler(value) {
437
+ handler() {
433
438
  this.btnDesativado = false;
434
439
  },
435
440
  deep: true,
436
441
  },
437
442
  oDataOrderBy: {
438
- handler(value) {
443
+ handler() {
439
444
  this.btnDesativado = false;
440
445
  },
441
446
  deep: true,
@@ -445,6 +450,10 @@ export default {
445
450
  </script>
446
451
 
447
452
  <style scoped>
453
+ .div-botao {
454
+ padding-bottom: 15px;
455
+ }
456
+
448
457
  .div-progresso {
449
458
  margin-bottom: 10px;
450
459
  }
@@ -1,6 +1,6 @@
1
1
  import axios from "@/config/axios";
2
2
  import dicas from "@/config/dicas";
3
- import Token from "@nixweb/nixloc-ui/src/config/token";
3
+ import Token from "@/config/token";
4
4
 
5
5
 
6
6
  export default {
@@ -66,7 +66,6 @@ export default {
66
66
  if (value.query.value != null && value.query.value != "" && value.query.value != undefined)
67
67
  filtro.children.push(value);
68
68
  });
69
-
70
69
  return filtro;
71
70
  },
72
71
  temCampoSelecionado: (state) => (campo, valor) => {
@@ -125,6 +124,10 @@ export default {
125
124
  valor = `${value.query.value[0]} - ${value.query.value[1]}`;
126
125
  }
127
126
 
127
+ if (type == "custom-component" && value.query.operator == "escolher") {
128
+ valor = value.query.value.conteudo;
129
+ }
130
+
128
131
  if (type == "text" || type == "numeric") {
129
132
  valor = `${value.query.operator} "${value.query.value}"`;
130
133
  }
package/public/js/menu.js DELETED
@@ -1,11 +0,0 @@
1
- !function (e) { var t = {}; function n(s) { if (t[s]) return t[s].exports; var i = t[s] = { i: s, l: !1, exports: {} }; return e[s].call(i.exports, i, i.exports, n), i.l = !0, i.exports } n.m = e, n.c = t, n.d = function (e, t, s) { n.o(e, t) || Object.defineProperty(e, t, { enumerable: !0, get: s }) }, n.r = function (e) { "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e, "__esModule", { value: !0 }) }, n.t = function (e, t) { if (1 & t && (e = n(e)), 8 & t) return e; if (4 & t && "object" == typeof e && e && e.__esModule) return e; var s = Object.create(null); if (n.r(s), Object.defineProperty(s, "default", { enumerable: !0, value: e }), 2 & t && "string" != typeof e) for (var i in e) n.d(s, i, function (t) { return e[t] }.bind(null, i)); return s }, n.n = function (e) { var t = e && e.__esModule ? function () { return e.default } : function () { return e }; return n.d(t, "a", t), t }, n.o = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }, n.p = "", n(n.s = 0) }([function (e, t, n) {
2
- "use strict"; n.r(t); var s = { hooks: {}, extensions: [], navbar: { add: !0, title: "Menu", titleLink: "parent" }, slidingSubmenus: !0 }; var i = { classNames: { divider: "Divider", nolistview: "NoListview", nopanel: "NoPanel", panel: "Panel", selected: "Selected", vertical: "Vertical" }, language: null, panelNodetype: ["ul", "ol", "div"], screenReader: { closeSubmenu: "Close submenu", openSubmenu: "Open submenu", toggleSubmenu: "Toggle submenu" } }; const a = (e, t) => { "object" != o(e) && (e = {}), "object" != o(t) && (t = {}); for (let n in t) t.hasOwnProperty(n) && (void 0 === e[n] ? e[n] = t[n] : "object" == o(e[n]) && a(e[n], t[n])); return e }, o = e => ({}.toString.call(e).match(/\s([a-zA-Z]+)/)[1].toLowerCase()), r = () => "mm-" + l++; let l = 0; const m = e => "mm-" == e.slice(0, 3) ? e.slice(3) : e, c = {}, d = (e, t) => { void 0 === c[t] && (c[t] = {}), a(c[t], e) }; var h = { "Close submenu": "بستن زیرمنو", Menu: "منو", "Open submenu": "بازکردن زیرمنو", "Toggle submenu": "سوییچ زیرمنو" }, p = { "Close submenu": "Submenu sluiten", Menu: "Menu", "Open submenu": "Submenu openen", "Toggle submenu": "Submenu wisselen" }, u = { "Close submenu": "Fechar submenu", Menu: "Menu", "Open submenu": "Abrir submenu", "Toggle submenu": "Alternar submenu" }, f = { "Close submenu": "Закрыть подменю", Menu: "Меню", "Open submenu": "Открыть подменю", "Toggle submenu": "Переключить подменю" }, b = { "Close submenu": "Zatvoriť submenu", Menu: "Menu", "Open submenu": "Otvoriť submenu", "Toggle submenu": "Prepnúť submenu" }; const v = e => { const t = e.split("."), n = document.createElement(t.shift()); return n.classList.add(...t), n }, g = (e, t) => t.length ? [].slice.call(e.querySelectorAll(t)) : [], L = (e, t) => { const n = Array.prototype.slice.call(e.children); return t ? n.filter(e => e.matches(t)) : n }, _ = e => e.filter(e => !e.matches(".mm-hidden")), E = e => { let t = []; return _(e).forEach(e => { t.push(...L(e, "a.mm-listitem__text")) }), t.filter(e => !e.matches(".mm-btn--next")) }, y = (e, t, n) => { e.matches("." + t) && e.classList.add(n) }; let w = {}; const P = (e, t, n) => { "number" == typeof e && (e = "(min-width: " + e + "px)"), w[e] = w[e] || [], w[e].push({ yes: t, no: n }) }, S = (e, t) => { var n = t.matches ? "yes" : "no"; for (let t = 0; t < w[e].length; t++)w[e][t][n]() }; d({ "Close submenu": "Untermenü schließen", Menu: "Menü", "Open submenu": "Untermenü öffnen", "Toggle submenu": "Untermenü wechseln" }, "de"), d(h, "fa"), d(p, "nl"), d(u, "pt_br"), d(f, "ru"), d(b, "sk"); class x { constructor(e, t, n) { return this.opts = a(t, s), this.conf = a(n, i), this._api = ["i18n", "bind", "openPanel", "closePanel", "setSelected"], this.node = {}, this.hook = {}, this.node.menu = "string" == typeof e ? document.querySelector(e) : e, "function" == typeof this._deprecatedWarnings && this._deprecatedWarnings(), this.trigger("init:before"), this._initObservers(), this._initAddons(), this._initExtensions(), this._initHooks(), this._initAPI(), this._initMenu(), this._initPanels(), this._initOpened(), (() => { for (let e in w) { let t = window.matchMedia(e); S(e, t), t.onchange = n => { S(e, t) } } })(), this.trigger("init:after"), this } openPanel(e, t = !0, n = !0) { if (e) { if (e.matches(".mm-panel") || (e = e.closest(".mm-panel")), this.trigger("openPanel:before", [e, { animation: t, setfocus: n }]), e.parentElement.matches(".mm-listitem--vertical")) e.parentElement.classList.add("mm-listitem--opened"); else { const s = L(this.node.pnls, ".mm-panel--opened")[0]; e.matches(".mm-panel--parent") && s && s.classList.add("mm-panel--highest"); const i = ["mm-panel--opened", "mm-panel--parent"], a = []; t ? i.push("mm-panel--noanimation") : a.push("mm-panel--noanimation"), L(this.node.pnls, ".mm-panel").forEach(e => { e.classList.add(...a), e.classList.remove(...i), e !== s && e.classList.remove("mm-panel--highest") }), e.classList.add("mm-panel--opened"); let o = g(this.node.pnls, "#" + e.dataset.mmParent)[0]; for (; o;)o = o.closest(".mm-panel"), o.classList.add("mm-panel--parent"), o = g(this.node.pnls, "#" + o.dataset.mmParent)[0]; n && this.node.pnls.focus() } this.trigger("openPanel:after", [e, { animation: t, setfocus: n }]) } } closePanel(e, t = !0) { if (e) { if (this.trigger("closePanel:before", [e]), e.parentElement.matches(".mm-listitem--vertical")) e.parentElement.classList.remove("mm-listitem--opened"); else if (e.dataset.mmParent) { const n = g(this.node.pnls, "#" + e.dataset.mmParent)[0]; this.openPanel(n, t) } else { const n = L(this.node.pnls, ".mm-panel")[0]; e !== n && this.openPanel(n, t) } this.trigger("closePanel:after", [e]) } } togglePanel(e) { let t = "openPanel"; (e.parentElement.matches(".mm-listitem--opened") || e.matches(".mm-panel--opened")) && (t = "closePanel"), this[t](e) } setSelected(e) { this.trigger("setSelected:before", [e]), g(this.node.menu, ".mm-listitem--selected").forEach(e => { e.classList.remove("mm-listitem--selected") }), e.classList.add("mm-listitem--selected"), this.trigger("setSelected:after", [e]) } bind(e, t) { this.hook[e] = this.hook[e] || [], this.hook[e].push(t) } trigger(e, t) { if (this.hook[e]) for (var n = 0, s = this.hook[e].length; n < s; n++)this.hook[e][n].apply(this, t) } _initObservers() { this.panelObserver = new MutationObserver(e => { e.forEach(e => { e.addedNodes.forEach(e => { e.matches(this.conf.panelNodetype.join(", ")) && this._initListview(e) }) }) }), this.listviewObserver = new MutationObserver(e => { e.forEach(e => { e.addedNodes.forEach(e => { this._initListitem(e) }) }) }), this.listitemObserver = new MutationObserver(e => { e.forEach(e => { e.addedNodes.forEach(e => { console.log(e), (null == e ? void 0 : e.matches(this.conf.panelNodetype.join(", "))) && this._initSubPanel(e) }) }) }) } _initAPI() { const e = this; this.API = {}, this._api.forEach(t => { this.API[t] = function () { return e[t].apply(e, arguments) } }), this.node.menu.mmApi = this.API } _initHooks() { for (let e in this.opts.hooks) this.bind(e, this.opts.hooks[e]) } _initAddons() { this.trigger("initAddons:before"); for (let e in x.addons) x.addons[e].call(this); this.trigger("initAddons:after") } _initExtensions() { this.trigger("initExtensions:before"), "array" == o(this.opts.extensions) && (this.opts.extensions = { all: this.opts.extensions }), Object.keys(this.opts.extensions).forEach(e => { let t = this.opts.extensions[e].map(e => "mm-menu--" + e); t.length && P(e, () => { this.node.menu.classList.add(...t) }, () => { this.node.menu.classList.remove(...t) }) }), this.trigger("initExtensions:after") } _initMenu() { this.trigger("initMenu:before"), this.node.wrpr = this.node.wrpr || this.node.menu.parentElement, this.node.wrpr.classList.add("mm-wrapper"), this.node.menu.classList.add("mm-menu"), this.node.menu.id = this.node.menu.id || r(), this.node.menu.setAttribute("tabindex", "-1"); const e = L(this.node.menu).filter(e => e.matches(this.conf.panelNodetype.join(", "))); this.node.pnls = v("div.mm-panels"), this.node.menu.append(this.node.pnls), this.node.pnls.setAttribute("tabindex", "-1"), e.forEach(e => { this._initPanel(e) }), this.trigger("initMenu:after") } _initPanels() { this.trigger("initPanels:before"), this.node.menu.addEventListener("click", e => { var t, n; const s = (null === (n = null === (t = e.target) || void 0 === t ? void 0 : t.closest("a[href]")) || void 0 === n ? void 0 : n.getAttribute("href")) || ""; if ("#" === s.slice(0, 1)) try { const t = g(this.node.menu, s)[0]; t && (e.preventDefault(), this.togglePanel(t)) } catch (e) { } }, { capture: !0 }), this.trigger("initPanels:after") } _initPanel(e) { var t; if (!e.matches(".mm-panel") && (y(e, this.conf.classNames.panel, "mm-panel"), y(e, this.conf.classNames.nopanel, "mm-nopanel"), !e.matches(".mm-nopanel"))) { if (this.trigger("initPanel:before", [e]), e.id = e.id || r(), e.matches("ul, ol")) { const t = v("div"); t.id = e.id, e.removeAttribute("id"), [].slice.call(e.classList).filter(e => "mm-" === e.slice(0, 3)).forEach(n => { t.classList.add(n), e.classList.remove(n) }), Object.keys(e.dataset).filter(e => "mm" === e.slice(0, 2)).forEach(n => { t.dataset[n] = e.dataset[n], delete e.dataset[n] }), e.before(t), t.append(e), e = t } return e.classList.add("mm-panel"), (null === (t = e.parentElement) || void 0 === t ? void 0 : t.matches(".mm-listitem--vertical")) || this.node.pnls.append(e), this._initNavbar(e), L(e, "ul, ol").forEach(e => { this._initListview(e) }), this.panelObserver.observe(e, { childList: !0 }), this.trigger("initPanel:after", [e]), e } } _initNavbar(e) { if (L(e, ".mm-navbar").length) return; let t = null, n = null; if (e.dataset.mmParent) for (t = g(this.node.pnls, "#" + e.dataset.mmParent)[0], n = t.closest(".mm-panel"); n.closest(".mm-listitem--vertical");)n = n.parentElement.closest(".mm-panel"); if (null == t ? void 0 : t.matches(".mm-listitem--vertical")) return; this.trigger("initNavbar:before", [e]); const s = v("div.mm-navbar"); if (this.opts.navbar.add || s.classList.add("mm-hidden"), n) { const e = v("a.mm-btn.mm-btn--prev.mm-navbar__btn"); e.href = "#" + n.id, e.title = this.i18n(this.conf.screenReader.closeSubmenu), s.append(e) } let i = null; t ? i = L(t, ".mm-listitem__text")[0] : n && (i = g(n, 'a[href="#' + e.id + '"]')[0]); const a = v("a.mm-navbar__title"); switch (a.tabIndex = -1, a.ariaHidden = "true", this.opts.navbar.titleLink) { case "anchor": i && (a.href = i.getAttribute("href")); break; case "parent": n && (a.href = "#" + n.id) }const o = v("span"); var r; o.innerHTML = e.dataset.mmTitle || ((r = i) ? [].slice.call(r.childNodes).filter(e => e.nodeType === Node.TEXT_NODE).map(e => e.nodeValue.trim()).join(" ") : "") || this.i18n(this.opts.navbar.title) || this.i18n("Menu"), e.prepend(s), s.append(a), a.append(o), this.trigger("initNavbar:after", [e]) } _initListview(e) { ["htmlulistelement", "htmlolistelement"].includes(o(e)) && (e.matches(".mm-listview") || (y(e, this.conf.classNames.nolistview, "mm-nolistview"), e.matches(".mm-nolistview") || (this.trigger("initListview:before", [e]), e.classList.add("mm-listview"), L(e).forEach(e => { this._initListitem(e) }), this.listviewObserver.observe(e, { childList: !0 }), this.trigger("initListview:after", [e])))) } _initListitem(e) { ["htmllielement"].includes(o(e)) && (e.matches(".mm-listitem") || (y(e, this.conf.classNames.divider, "mm-divider"), e.matches(".mm-divider") || (this.trigger("initListitem:before", [e]), e.classList.add("mm-listitem"), y(e, this.conf.classNames.selected, "mm-listitem--selected"), L(e, "a, span").forEach(e => { e.classList.add("mm-listitem__text") }), L(e, this.conf.panelNodetype.join(", ")).forEach(e => { this._initSubPanel(e) }), this.listitemObserver.observe(e, { childList: !0 }), this.trigger("initListitem:after", [e])))) } _initSubPanel(e) { if (e.matches(".mm-panel")) return; const t = e.parentElement; (e.matches("." + this.conf.classNames.vertical) || !this.opts.slidingSubmenus) && t.classList.add("mm-listitem--vertical"), t.id = t.id || r(), e.id = e.id || r(), t.dataset.mmChild = e.id, e.dataset.mmParent = t.id; let n = L(t, ".mm-btn")[0]; n || (n = v("a.mm-btn.mm-btn--next.mm-listitem__btn"), L(t, "a, span").forEach(e => { e.matches("span") ? (n.classList.add("mm-listitem__text"), n.innerHTML = e.innerHTML, t.insertBefore(n, e.nextElementSibling), e.remove()) : t.insertBefore(n, e.nextElementSibling) }), n.title = this.i18n(this.conf.screenReader[t.matches(".mm-listitem--vertical") ? "toggleSubmenu" : "openSubmenu"])), n.href = "#" + e.id, this._initPanel(e) } _initOpened() { this.trigger("initOpened:before"); const e = g(this.node.pnls, ".mm-listitem--selected").pop(); let t = L(this.node.pnls, ".mm-panel")[0]; e && (this.setSelected(e), t = e.closest(".mm-panel")), this.openPanel(t, !1, !1), this.trigger("initOpened:after") } i18n(e) { return ((e, t) => "string" == typeof t && void 0 !== c[t] && c[t][e] || e)(e, this.conf.language) } static i18n(e = {}, t = "") { if (!e || !t) return c; d(e, t) } } x.addons = {}, x.node = {}, x.vars = {}; var M = { use: !0 }; var k = { clone: !1, menu: { insertMethod: "prepend", insertSelector: "body" }, page: { nodetype: "div", selector: null, noSelector: [] }, screenReader: { closeMenu: "Close menu", openMenu: "Open menu" } }; x.prototype.open = function () { if (!this.node.menu.matches(".mm-menu--opened")) { this.trigger("open:before"); this.node.wrpr.classList.add("mm-wrapper--opened"), this.node.menu.classList.add("mm-menu--opened"), this.node.wrpr.classList.add("mm-wrapper--opened"), this.node.menu.focus(), this.trigger("open:after") } }, x.prototype.close = function () { var e; if (!this.node.menu.matches(".mm-menu--opened")) return; this.trigger("close:before"), this.node.menu.classList.remove("mm-menu--opened"), this.node.wrpr.classList.remove("mm-wrapper--opened"); null === (e = document.querySelector(`[href="#${this.node.menu.id}"]`) || this.node.page || null) || void 0 === e || e.focus(), this.trigger("close:after") }, x.prototype.setPage = function (e) { var t = this.conf.offCanvas; if (!e) { let n = "string" == typeof t.page.selector ? g(document.body, t.page.selector) : L(document.body, t.page.nodetype); if (n = n.filter(e => !e.matches(".mm-menu, .mm-wrapper__blocker")), t.page.noSelector.length && (n = n.filter(e => !e.matches(t.page.noSelector.join(", ")))), n.length > 1) { let e = v("div"); n[0].before(e), n.forEach(t => { e.append(t) }), n = [e] } e = n[0] } this.trigger("setPage:before", [e]), e.setAttribute("tabindex", "-1"), e.classList.add("mm-page", "mm-slideout"), e.id = e.id || r(), x.node.blck.setAttribute("href", "#" + e.id), x.node.page = e, this.trigger("setPage:after", [e]) }; var T = { fix: !0 }; const C = "ontouchstart" in window || !!navigator.msMaxTouchPoints || !1; var O = { close: !1, open: !1 }; var N = { add: !1 }; var A = { use: !1, top: [], bottom: [], position: "left", type: "default" }; var j = { add: !1, blockPanel: !0, visible: 3 }; var H = { breadcrumbs: { separator: "/", removeFirst: !1 } }; function q() { this.opts.navbars = this.opts.navbars || [], this.conf.navbars = this.conf.navbars || {}, a(this.conf.navbars, H); let e = this.opts.navbars; if (void 0 !== e && (e instanceof Array || (e = [e]), e.length)) { var t = {}; e.forEach(e => { if (!(e = function (e) { return "boolean" == typeof e && e && (e = {}), "object" != typeof e && (e = {}), void 0 === e.content && (e.content = ["prev", "title"]), e.content instanceof Array || (e.content = [e.content]), void 0 === e.use && (e.use = !0), e }(e)).use) return; const n = v("div.mm-navbar"); let { position: s } = e; "bottom" !== s && (s = "top"), t[s] || (t[s] = v("div.mm-navbars.mm-navbars--" + s)), t[s].append(n); for (let t = 0, s = e.content.length; t < s; t++) { const s = e.content[t]; if ("string" == typeof s) { const e = q.navbarContents[s]; if ("function" == typeof e) e.call(this, n); else { let e = v("span"); e.innerHTML = s; const t = L(e); 1 == t.length && (e = t[0]), n.append(e) } } else n.append(s) } if ("string" == typeof e.type) { const t = q.navbarTypes[e.type]; "function" == typeof t && t.call(this, n) } let i = () => { n.classList.remove("mm-hidden") }, a = () => { n.classList.add("mm-hidden") }; "boolean" == typeof e.use ? this.bind("initMenu:after", i) : P(e.use, i, a) }), this.bind("initMenu:after", () => { for (let e in t) this.node.pnls["bottom" == e ? "after" : "before"](t[e]) }) } } q.navbarContents = { breadcrumbs: function (e) { var t = v("div.mm-navbar__breadcrumbs"); e.append(t), this.bind("initNavbar:after", e => { if (!e.querySelector(".mm-navbar__breadcrumbs")) { L(e, ".mm-navbar")[0].classList.add("mm-hidden"); for (var t = [], n = v("span.mm-navbar__breadcrumbs"), s = e, i = !0; s;) { if (!(s = s.closest(".mm-panel")).parentElement.matches(".mm-listitem--vertical")) { let e = g(s, ".mm-navbar__title span")[0]; if (e) { let n = e.textContent; n.length && t.unshift(i ? `<span>${n}</span>` : `<a \n href="#${s.id}" \n title="${this.i18n(this.conf.screenReader.openSubmenu)}"\n >${n}</a>`) } i = !1 } s = g(this.node.pnls, "#" + s.dataset.mmParent)[0] } this.conf.navbars.breadcrumbs.removeFirst && t.shift(), n.innerHTML = t.join('<span class="mm-separator">' + this.conf.navbars.breadcrumbs.separator + "</span>"), L(e, ".mm-navbar")[0].append(n) } }), this.bind("openPanel:before", e => { var n = e.querySelector(".mm-navbar__breadcrumbs"); t.innerHTML = n ? n.innerHTML : "" }) }, close: function (e) { const t = v("a.mm-btn.mm-btn--close.mm-navbar__btn"); t.title = this.i18n(this.conf.offCanvas.screenReader.closeMenu), e.append(t), this.bind("setPage:after", e => { t.href = "#" + e.id }) }, prev: function (e) { let t = v("a.mm-btn.mm-hidden"); e.append(t), this.bind("initNavbar:after", e => { L(e, ".mm-navbar")[0].classList.add("mm-hidden") }), this.bind("openPanel:before", e => { if (e.parentElement.matches(".mm-listitem--vertical")) return; t.classList.add("mm-hidden"); const n = e.querySelector(".mm-navbar__btn.mm-btn--prev"); if (n) { const e = n.cloneNode(!0); t.after(e), t.remove(), t = e } }) }, searchfield: function (e) { let t = v("div.mm-navbar__searchfield"); t.id = r(), e.append(t), this.opts.searchfield = this.opts.searchfield || {}, this.opts.searchfield.add = !0, this.opts.searchfield.addTo = "#" + t.id }, title: function (e) { let t = v("a.mm-navbar__title"); e.append(t), this.bind("openPanel:before", e => { if (e.parentElement.matches(".mm-listitem--vertical")) return; const n = e.querySelector(".mm-navbar__title"); if (n) { const e = n.cloneNode(!0); t.after(e), t.remove(), t = e } }) } }, q.navbarTypes = { tabs: function (e) { function t(n) { const s = L(e, `.mm-navbar__tab[href="#${n.id}"]`)[0]; if (s) s.classList.add("mm-navbar__tab--selected"), s.ariaExpanded = "true"; else { const e = g(this.node.pnls, "#" + n.dataset.mmParent)[0]; e && t.call(this, e.closest(".mm-panel")) } } e.classList.add("mm-navbar--tabs"), e.closest(".mm-navbars").classList.add("mm-navbars--has-tabs"), L(e, "a").forEach(e => { e.classList.add("mm-navbar__tab") }), this.bind("openPanel:before", n => { L(e, "a").forEach(e => { e.classList.remove("mm-navbar__tab--selected"), e.ariaExpanded = "false" }), t.call(this, n) }), this.bind("initPanels:after", () => { e.addEventListener("click", e => { var t, n, s; const i = null === (n = null === (t = e.target) || void 0 === t ? void 0 : t.closest(".mm-navbar__tab")) || void 0 === n ? void 0 : n.getAttribute("href"); try { null === (s = g(this.node.pnls, i + ".mm-panel")[0]) || void 0 === s || s.classList.add("mm-panel--noanimation") } catch (e) { } }, { capture: !0 }) }) } }; var I = { scroll: !1, update: !1 }; var R = { scrollOffset: 0, updateOffset: 50 }; var B = { add: !1, addTo: "panels", noResults: "No results found.", placeholder: "Search", searchIn: "panels", splash: "", title: "Search" }; var D = { cancel: !0, clear: !0, form: {}, input: {}, panel: {}, submit: !1 }, F = { cancel: "انصراف", "Cancel searching": "لغو جستجو", "Clear searchfield": "پاک کردن فیلد جستجو", "No results found.": "نتیجه‌ای یافت نشد.", Search: "جستجو" }, $ = { cancel: "annuleren", "Cancel searching": "Zoeken annuleren", "Clear searchfield": "Zoekveld leeg maken", "No results found.": "Geen resultaten gevonden.", Search: "Zoeken" }, Z = { cancel: "cancelar", "Cancel searching": "Cancelar pesquisa", "Clear searchfield": "Limpar campo de pesquisa", "No results found.": "Nenhum resultado encontrado.", Search: "Buscar" }, z = { cancel: "отменить", "Cancel searching": "Отменить поиск", "Clear searchfield": "Очистить поле поиска", "No results found.": "Ничего не найдено.", Search: "Найти" }, V = { cancel: "zrušiť", "Cancel searching": "Zrušiť vyhľadávanie", "Clear searchfield": "Vymazať pole vyhľadávania", "No results found.": "Neboli nájdené žiadne výsledky.", Search: "Vyhľadávanie" }; d({ cancel: "abbrechen", "Cancel searching": "Suche abbrechen", "Clear searchfield": "Suchfeld löschen", "No results found.": "Keine Ergebnisse gefunden.", Search: "Suche" }, "de"), d(F, "fa"), d($, "nl"), d(Z, "pt_br"), d(z, "ru"), d(V, "sk"); const U = function () { const e = this.opts.searchfield, t = this.conf.searchfield; let n = L(this.node.pnls, ".mm-panel--search")[0]; return n || (n = v("div.mm-panel--search"), ee(n, t.panel), e.title.length && (n.dataset.mmTitle = this.i18n(e.title)), n.append(v("ul")), this._initPanel(n), n) }, Y = function (e) { const t = this.opts.searchfield; if (e.matches(t.addTo)) { const t = e.matches(".mm-panel--search"); if (!g(e, ".mm-searchfield").length) { const n = K.call(this, t); t && n.classList.add("mm-searchfield--cancelable"), e.prepend(n), W.call(this, n) } } if (t.splash.length && e.matches(".mm-panel--search") && !g(e, ".mm-panel__splash").length) { const n = v("div.mm-panel__splash"); n.innerHTML = t.splash, e.append(n) } if (t.noResults.length && !g(e, ".mm-panel__noresults").length) { const n = v("div.mm-panel__noresults"); n.innerHTML = this.i18n(t.noResults), e.append(n) } }, K = function (e = !1) { const t = this.opts.searchfield, n = this.conf.searchfield, s = v("form.mm-searchfield"); ee(s, n.form); const i = v("div.mm-searchfield__input"); s.append(i); const a = v("input"); if (i.append(a), a.type = "text", a.autocomplete = "off", a.placeholder = this.i18n(t.placeholder), a.setAttribute("aria-label", this.i18n(t.placeholder)), ee(a, n.input), n.submit) { const e = v("button.mm-btnreset.mm-btn.mm-btn--next.mm-searchfield__btn"); e.type = "submit", i.append(e) } else if (n.clear) { const e = v("button.mm-btnreset.mm-btn.mm-btn--close.mm-searchfield__btn"); e.type = "reset", e.title = this.i18n("Clear searchfield"), i.append(e), s.addEventListener("reset", () => { window.requestAnimationFrame(() => { a.dispatchEvent(new Event("input")) }) }) } if (n.cancel && e) { const e = v("a.mm-searchfield__cancel"); e.href = "#", e.title = this.i18n("Cancel searching"), e.textContent = this.i18n("cancel"), s.append(e), e.addEventListener("click", () => { this.closePanel(L(this.node.pnls, ".mm-panel--search")[0], !1) }) } return s }, W = function (e) { const t = this.opts.searchfield, n = e.closest(".mm-panel") || g(this.node.pnls, ".mm-panel--search")[0], s = g(e, "input")[0]; let i = n.matches(".mm-panel--search") ? g(this.node.pnls, t.searchIn) : [n]; i = i.filter(e => !e.matches(".mm-panel--search")); const a = () => { const t = s.value.toLowerCase().trim(), a = []; if (i.forEach(e => { e.scrollTop = 0, a.push(...g(e, ".mm-listitem")) }), t.length) { this.trigger("search:before"), e.classList.add("mm-searchfield--searching"), n.classList.add("mm-panel--searching"), a.forEach(e => { const n = L(e, ".mm-listitem__text")[0]; var s; (!n || (s = n, Array.prototype.slice.call(s.childNodes).filter(e => 3 == e.nodeType).map(e => e.textContent).join(" ")).toLowerCase().indexOf(t) > -1) && (e.dataset.mmSearchresult = t) }); let s = 0; s = n.matches(".mm-panel--search") ? G(n, t, i) : J(t, i), n.classList[0 == s ? "add" : "remove"]("mm-panel--noresults"), this.trigger("search:after") } else this.trigger("clear:before"), e.classList.remove("mm-searchfield--searching"), n.classList.remove("mm-panel--searching", "mm-panel--noresults"), n.matches(".mm-panel--search") ? X(n) : Q(i), this.trigger("clear:after") }; s.addEventListener("input", a), a() }, G = (e, t, n) => { const s = g(e, ".mm-listview")[0]; s.innerHTML = ""; let i = 0; return n.forEach(e => { const n = g(e, `[data-mm-searchresult="${t}"]`); if (i += n.length, n.length) { const t = g(e, ".mm-navbar__title")[0]; if (t) { const e = v("li.mm-divider"); e.innerHTML = t.innerHTML, s.append(e) } n.forEach(e => { s.append(e.cloneNode(!0)) }) } }), i }, X = e => { g(e, ".mm-listview")[0].innerHTML = "" }, J = (e, t) => { let n = 0; return t.forEach(t => { const s = g(t, `[data-mm-searchresult="${e}"]`); n += s.length, s.length && s.forEach(t => { const n = ((e, t) => { let n = [], s = e.previousElementSibling; for (; s;)t && !s.matches(t) || n.push(s), s = s.previousElementSibling; return n })(t, ".mm-divider")[0]; n && (n.dataset.mmSearchresult = e) }), g(t, ".mm-listitem, .mm-divider").forEach(t => { t.classList[t.dataset.mmSearchresult === e ? "remove" : "add"]("mm-hidden") }) }), n }, Q = e => { e.forEach(e => { g(e, ".mm-listitem, .mm-divider").forEach(e => { e.classList.remove("mm-hidden") }) }) }, ee = (e, t) => { t && Object.keys(t).forEach(n => { e[n] = t[n] }) }; var te = { add: !1, addTo: "panels" }; var ne = { current: !0, hover: !1, parent: !1 }; var se = { collapsed: { use: !1, blockMenu: !0 }, expanded: { use: !1, initial: "open" } };
3
- /*!
4
- * mmenu.js
5
- * mmenujs.com
6
- *
7
- * Copyright (c) Fred Heusschen
8
- * frebsite.nl
9
- */
10
- x.addons = { offcanvas: function () { this.opts.offCanvas = this.opts.offCanvas || {}, this.conf.offCanvas = this.conf.offCanvas || {}; const e = a(this.opts.offCanvas, M), t = a(this.conf.offCanvas, k); e.use && (this._api.push("open", "close", "setPage"), x.node.blck || this.bind("initMenu:before", () => { const e = v("a.mm-wrapper__blocker.mm-slideout"); e.id = r(), e.title = this.i18n(t.screenReader.closeMenu), e.setAttribute("tabindex", "-1"), document.querySelector(t.menu.insertSelector).append(e), x.node.blck = e }), this.bind("initMenu:before", () => { t.clone && (this.node.menu = this.node.menu.cloneNode(!0), this.node.menu.id && (this.node.menu.id = "mm-" + this.node.menu.id), g(this.node.menu, "[id]").forEach(e => { e.id = "mm-" + e.id })), this.node.wrpr = document.querySelector(t.menu.insertSelector), document.querySelector(t.menu.insertSelector)[t.menu.insertMethod](this.node.menu) }), this.bind("initMenu:after", () => { this.setPage(x.node.page), this.node.menu.classList.add("mm-menu--offcanvas"); let e = window.location.hash; if (e) { let t = m(this.node.menu.id); t && t == e.slice(1) && setTimeout(() => { this.open() }, 1e3) } }), document.addEventListener("click", e => { var t; switch (null === (t = e.target.closest("a")) || void 0 === t ? void 0 : t.getAttribute("href")) { case "#" + m(this.node.menu.id): e.preventDefault(), this.open(); break; case "#" + m(x.node.page.id): e.preventDefault(), this.close() } }), document.addEventListener("keyup", e => { "Escape" == e.key && this.close() }), document.addEventListener("keyup", e => { var t; "Tab" == e.key && this.node.menu.matches(".mm-menu--opened") && !(null === (t = document.activeElement) || void 0 === t ? void 0 : t.closest("#" + this.node.menu.id)) && (console.log(document.activeElement), this.close()) })) }, scrollBugFix: function () { if (!C || !this.opts.offCanvas.use) return; this.opts.scrollBugFix = this.opts.scrollBugFix || {}; if (!a(this.opts.scrollBugFix, T).fix) return; const e = (e => { let t = "", n = null; return e.addEventListener("touchstart", e => { 1 === e.touches.length && (t = "", n = e.touches[0].pageY) }), e.addEventListener("touchend", e => { 0 === e.touches.length && (t = "", n = null) }), e.addEventListener("touchmove", e => { if (t = "", n && 1 === e.touches.length) { const s = e.changedTouches[0].pageY; s > n ? t = "down" : s < n && (t = "up"), n = s } }), { get: () => t } })(this.node.menu); this.node.menu.addEventListener("scroll", e => { e.preventDefault(), e.stopPropagation() }, { passive: !1 }), this.node.menu.addEventListener("touchmove", t => { let n = t.target.closest(".mm-panel, .mm-iconbar__top, .mm-iconbar__bottom"); n && n.closest(".mm-listitem--vertical") && (n = ((e, t) => { let n = [], s = e.parentElement; for (; s;)n.push(s), s = s.parentElement; return t ? n.filter(e => e.matches(t)) : n })(n, ".mm-panel").pop()), n ? (n.scrollHeight === n.offsetHeight || 0 == n.scrollTop && "down" == e.get() || n.scrollHeight == n.scrollTop + n.offsetHeight && "up" == e.get()) && t.stopPropagation() : t.stopPropagation() }, { passive: !1 }), this.bind("open:after", () => { var e = L(this.node.pnls, ".mm-panel--opened")[0]; e && (e.scrollTop = 0) }), window.addEventListener("orientationchange", e => { var t = L(this.node.pnls, ".mm-panel--opened")[0]; t && (t.scrollTop = 0, t.style["-webkit-overflow-scrolling"] = "auto", t.style["-webkit-overflow-scrolling"] = "touch") }) }, backButton: function () { if (this.opts.backButton = this.opts.backButton || {}, !this.opts.offCanvas.use) return; const e = a(this.opts.backButton, O), t = "#" + this.node.menu.id; if (e.close) { var n = []; const e = () => { n = [t], L(this.node.pnls, ".mm-panel--opened, .mm-panel--parent").forEach(e => { n.push("#" + e.id) }) }; this.bind("open:after", () => { history.pushState(null, document.title, t) }), this.bind("open:after", e), this.bind("openPanel:after", e), this.bind("close:after", () => { n = [], history.back(), history.pushState(null, document.title, location.pathname + location.search) }), window.addEventListener("popstate", e => { if (this.node.menu.matches(".mm-menu--opened") && n.length) { var s = (n = n.slice(0, -1))[n.length - 1]; s == t ? this.close() : (this.openPanel(this.node.menu.querySelector(s)), history.pushState(null, document.title, t)) } }) } e.open && window.addEventListener("popstate", e => { this.node.menu.matches(".mm-menu--opened") || location.hash != t || this.open() }) }, counters: function () { this.opts.counters = this.opts.counters || {}; if (!a(this.opts.counters, N).add) return; const e = e => { const t = this.node.pnls.querySelector("#" + e.dataset.mmParent); if (!t) return; const n = t.querySelector(".mm-counter"); if (!n) return; const s = []; L(e, ".mm-listview").forEach(e => { s.push(...L(e)) }), n.innerHTML = _(s).length.toString() }, t = new MutationObserver(t => { t.forEach(t => { "class" == t.attributeName && e(t.target.closest(".mm-panel")) }) }); this.bind("initListview:after", t => { const n = t.closest(".mm-panel"), s = this.node.pnls.querySelector("#" + n.dataset.mmParent); if (s) { if (!g(s, ".mm-counter").length) { const e = L(s, ".mm-btn")[0]; null == e || e.prepend(v("span.mm-counter")) } e(n) } }), this.bind("initListitem:after", e => { const n = e.closest(".mm-panel"); if (!n) return; this.node.pnls.querySelector("#" + n.dataset.mmParent) && t.observe(e, { attributes: !0 }) }) }, iconbar: function () { this.opts.iconbar = this.opts.iconbar || {}; const e = a(this.opts.iconbar, A); if (!e.use) return; let t; if (["top", "bottom"].forEach((n, s) => { let i = e[n]; "array" != o(i) && (i = [i]); const a = v("div.mm-iconbar__" + n); for (let e = 0, t = i.length; e < t; e++)"string" == typeof i[e] ? a.innerHTML += i[e] : a.append(i[e]); a.children.length && (t || (t = v("div.mm-iconbar")), t.append(a)) }), t) { this.bind("initMenu:after", () => { this.node.menu.prepend(t) }); let n = "mm-menu--iconbar-" + e.position, s = () => { this.node.menu.classList.add(n) }, i = () => { this.node.menu.classList.remove(n) }; if ("boolean" == typeof e.use ? this.bind("initMenu:after", s) : P(e.use, s, i), "tabs" == e.type) { t.classList.add("mm-iconbar--tabs"), t.addEventListener("click", e => { const t = e.target.closest(".mm-iconbar__tab"); if (t) if (t.matches(".mm-iconbar__tab--selected")) e.stopImmediatePropagation(); else try { const n = g(this.node.menu, t.getAttribute("href") + ".mm-panel")[0]; n && (e.preventDefault(), e.stopImmediatePropagation(), this.openPanel(n, !1)) } catch (e) { } }); const e = n => { g(t, "a").forEach(e => { e.classList.remove("mm-iconbar__tab--selected") }); const s = g(t, '[href="#' + n.id + '"]')[0]; if (s) s.classList.add("mm-iconbar__tab--selected"); else { const t = g(this.node.pnls, "#" + n.dataset.mmParent)[0]; t && e(t.closest(".mm-panel")) } }; this.bind("openPanel:before", e) } } }, iconPanels: function () { this.opts.iconPanels = this.opts.iconPanels || {}; const e = a(this.opts.iconPanels, j); let t = !1; if ("first" == e.visible && (t = !0, e.visible = 1), e.visible = Math.min(3, Math.max(1, e.visible)), e.visible++, e.add) { if (this.bind("initMenu:after", () => { this.node.menu.classList.add("mm-menu--iconpanel") }), this.bind("initPanel:after", e => { e.tabIndex = -1 }), this.bind("initPanels:after", () => { document.addEventListener("keyup", e => { var t; if ("Tab" === e.key && (null === (t = document.activeElement) || void 0 === t ? void 0 : t.closest(".mm-menu")) === this.node.menu) { const t = document.activeElement.closest(".mm-panel"); !document.activeElement.matches(".mm-panel__blocker") && (null == t ? void 0 : t.matches(".mm-panel--parent")) && (e.shiftKey ? L(t, ".mm-panel__blocker")[0].focus() : L(this.node.pnls, ".mm-panel--opened")[0].focus()) } }) }), t) this.bind("initMenu:after", () => { var e; null === (e = L(this.node.pnls, ".mm-panel")[0]) || void 0 === e || e.classList.add("mm-panel--iconpanel-first") }); else { const t = ["mm-panel--iconpanel-0", "mm-panel--iconpanel-1", "mm-panel--iconpanel-2", "mm-panel--iconpanel-3"]; this.bind("openPanel:after", n => { if (n.parentElement.matches(".mm-listitem--vertical")) return; let s = L(this.node.pnls, ".mm-panel"); s = s.filter(e => e.matches(".mm-panel--parent")), s.push(n), s = s.slice(-e.visible), s.forEach((e, n) => { e.classList.remove(...t), e.classList.add("mm-panel--iconpanel-" + n) }) }) } this.bind("initPanel:after", t => { if (e.blockPanel && !t.parentElement.matches(".mm-listitem--vertical") && !L(t, ".mm-panel__blocker")[0]) { const e = v("a.mm-panel__blocker"); e.href = "#" + t.closest(".mm-panel").id, e.title = this.i18n(this.conf.screenReader.closeSubmenu), t.prepend(e) } }) } }, navbars: q, pageScroll: function () { this.opts.pageScroll = this.opts.pageScroll || {}, this.conf.pageScroll = this.conf.pageScroll || {}; const e = a(this.opts.pageScroll, I), t = a(this.conf.pageScroll, R); var n; function s() { n && window.scrollTo({ top: n.getBoundingClientRect().top + document.scrollingElement.scrollTop - t.scrollOffset, behavior: "smooth" }), n = null } function i(e) { try { if ("#" == e.slice(0, 1)) return g(x.node.page, e)[0] } catch (e) { } return null } if (this.opts.offCanvas.use && e.scroll && (this.bind("close:after", () => { s() }), this.node.menu.addEventListener("click", e => { var t, a; const o = (null === (a = null === (t = e.target) || void 0 === t ? void 0 : t.closest("a[href]")) || void 0 === a ? void 0 : a.getAttribute("href")) || ""; (n = i(o)) && (e.preventDefault(), this.node.menu.matches(".mm-menu--sidebar-expanded") && this.node.wrpr.matches(".mm-wrapper--sidebar-expanded") ? s() : this.close()) })), e.update) { let e = []; this.bind("initListview:after", t => { const n = L(t, ".mm-listitem"); E(n).forEach(t => { const n = i(t.getAttribute("href")); n && e.unshift(n) }) }); let n = -1; window.addEventListener("scroll", s => { const i = window.scrollY; for (var a = 0; a < e.length; a++)if (e[a].offsetTop < i + t.updateOffset) { if (n !== a) { n = a; let t = L(this.node.pnls, ".mm-panel--opened")[0], s = g(t, ".mm-listitem"), i = E(s); i = i.filter(t => t.matches('[href="#' + e[a].id + '"]')), i.length && this.setSelected(i[0].parentElement) } break } }, { passive: !0 }) } }, searchfield: function () { this.opts.searchfield = this.opts.searchfield || {}, this.conf.searchfield = this.conf.searchfield || {}; const e = a(this.opts.searchfield, B); a(this.opts.searchfield, D); if (e.add) { switch (e.addTo) { case "panels": e.addTo = ".mm-panel"; break; case "searchpanel": e.addTo = ".mm-panel--search" }switch (e.searchIn) { case "panels": e.searchIn = ".mm-panel" }this.bind("initPanel:after", t => { t.matches(e.addTo) && !t.closest(".mm-listitem--vertical") && Y.call(this, t) }), this.bind("initMenu:after", () => { const t = U.call(this); Y.call(this, t), g(this.node.menu, e.addTo).forEach(n => { if (!n.matches(".mm-panel")) { const s = K.call(this, !0); n.append(s); const i = g(s, "input")[0]; e.splash.length ? (i.addEventListener("focusin", () => { this.openPanel(t, !1, !1) }), this.bind("openPanel:after", e => { e.matches(".mm-panel--search") ? s.classList.add("mm-searchfield--cancelable") : s.classList.remove("mm-searchfield--cancelable") })) : (this.bind("search:after", () => { this.openPanel(t, !1, !1) }), i.addEventListener("focusout", () => { i.value.length || this.closePanel(t, !1) })), W.call(this, s) } }) }), this.bind("close:before", () => { g(this.node.menu, ".mm-searchfield input").forEach(e => { e.blur() }) }) } }, sectionIndexer: function () { this.opts.sectionIndexer = this.opts.sectionIndexer || {}; a(this.opts.sectionIndexer, te).add && this.bind("initPanels:after", () => { if (!this.node.indx) { let e = ""; "abcdefghijklmnopqrstuvwxyz".split("").forEach(t => { e += '<a href="#">' + t + "</a>" }); let t = v("div.mm-sectionindexer"); t.innerHTML = e, this.node.pnls.prepend(t), this.node.indx = t, this.node.indx.addEventListener("click", e => { e.target.matches("a") && e.preventDefault() }); let n = e => { if (!e.target.matches("a")) return; const t = e.target.textContent, n = L(this.node.pnls, ".mm-panel--opened")[0]; let s = -1, i = n.scrollTop; n.scrollTop = 0, g(n, ".mm-divider").filter(e => !e.matches(".mm-hidden")).forEach(e => { s < 0 && t == e.textContent.trim().slice(0, 1).toLowerCase() && (s = e.offsetTop) }), n.scrollTop = s > -1 ? s : i }; C ? (this.node.indx.addEventListener("touchstart", n), this.node.indx.addEventListener("touchmove", n)) : this.node.indx.addEventListener("mouseover", n) } this.bind("openPanel:before", e => { const t = g(e, ".mm-divider").filter(e => !e.matches(".mm-hidden")).length; this.node.indx.classList[t ? "add" : "remove"]("mm-sectionindexer--active") }) }) }, setSelected: function () { this.opts.setSelected = this.opts.setSelected || {}; const e = a(this.opts.setSelected, ne); if ("detect" == e.current) { const e = t => { t = t.split("?")[0].split("#")[0]; const n = this.node.menu.querySelector('a[href="' + t + '"], a[href="' + t + '/"]'); if (n) this.setSelected(n.parentElement); else { const n = t.split("/").slice(0, -1); n.length && e(n.join("/")) } }; this.bind("initMenu:after", () => { e.call(this, window.location.href) }) } else e.current || this.bind("initListview:after", e => { L(e, ".mm-listitem--selected").forEach(e => { e.classList.remove("mm-listitem--selected") }) }); e.hover && this.bind("initMenu:after", () => { this.node.menu.classList.add("mm-menu--selected-hover") }), e.parent && (this.bind("openPanel:after", e => { g(this.node.pnls, ".mm-listitem--selected-parent").forEach(e => { e.classList.remove("mm-listitem--selected-parent") }); let t = e; for (; t;) { let e = g(this.node.pnls, "#" + t.dataset.mmParent)[0]; t = null == e ? void 0 : e.closest(".mm-panel"), e && !e.matches(".mm-listitem--vertical") && e.classList.add("mm-listitem--selected-parent") } }), this.bind("initMenu:after", () => { this.node.menu.classList.add("mm-menu--selected-parent") })) }, sidebar: function () { if (!this.opts.offCanvas.use) return; this.opts.sidebar = this.opts.sidebar || {}; const e = a(this.opts.sidebar, se); if (e.collapsed.use) { this.bind("initMenu:after", () => { if (this.node.menu.classList.add("mm-menu--sidebar-collapsed"), e.collapsed.blockMenu && !L(this.node.menu, ".mm-menu__blocker")[0]) { const e = v("a.mm-menu__blocker"); e.setAttribute("href", "#" + this.node.menu.id), this.node.menu.prepend(e), e.title = this.i18n(this.conf.screenReader.openMenu) } }); let t = () => { this.node.wrpr.classList.add("mm-wrapper--sidebar-collapsed") }, n = () => { this.node.wrpr.classList.remove("mm-wrapper--sidebar-collapsed") }; "boolean" == typeof e.collapsed.use ? this.bind("initMenu:after", t) : P(e.collapsed.use, t, n) } if (e.expanded.use) { this.bind("initMenu:after", () => { this.node.menu.classList.add("mm-menu--sidebar-expanded") }); let t = !1, n = () => { t = !0, this.node.wrpr.classList.add("mm-wrapper--sidebar-expanded"), this.open() }, s = () => { t = !1, this.node.wrpr.classList.remove("mm-wrapper--sidebar-expanded"), this.close() }; "boolean" == typeof e.expanded.use ? this.bind("initMenu:after", n) : P(e.expanded.use, n, s), this.bind("close:after", () => { t && window.sessionStorage.setItem("mmenuExpandedState", "closed") }), this.bind("open:after", () => { t && window.sessionStorage.setItem("mmenuExpandedState", "open") }); let i = e.expanded.initial; const a = window.sessionStorage.getItem("mmenuExpandedState"); switch (a) { case "open": case "closed": i = a }"closed" == i && this.bind("init:after", () => { this.close() }) } } }; t.default = x; window && (window.Mmenu = x)
11
- }]);