nexabase-report 0.2.6 → 0.2.9
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.
- package/README.md +255 -171
- package/dist/{html2canvas-CVvkCg-2.js → html2canvas-C7YA4nkW.js} +1 -1
- package/dist/{html2canvas-CVos72rP.js → html2canvas-Ch6xQdU-.js} +2 -2
- package/dist/{html2pdf-Cyvo1NsU.js → html2pdf-BmsoJhgy.js} +3 -3
- package/dist/{index-DxNI7UUB.js → index-TKDtDVn8.js} +22644 -20905
- package/dist/{index.es-Cl2FwCxT.js → index.es-DVVUHaBy.js} +2 -2
- package/dist/{jspdf.es.min-CluyHBde.js → jspdf.es.min-C0JdIV8T.js} +2 -2
- package/dist/lib/styles/_primevue-core.css +4 -4
- package/dist/nexabase-report.es.js +1 -1
- package/dist/nexabase-report.umd.js +151 -151
- package/examples/BlazorServer/Pages/FacturaReport.razor +52 -0
- package/examples/blazor-report/.vs/blazor-report/CopilotIndices/18.5.39187.10602/CodeChunks.db +0 -0
- package/examples/blazor-report/.vs/blazor-report/CopilotIndices/18.5.39187.10602/CodeChunks.db-shm +0 -0
- package/examples/blazor-report/.vs/blazor-report/CopilotIndices/18.5.39187.10602/CodeChunks.db-wal +0 -0
- package/examples/blazor-report/.vs/blazor-report/CopilotIndices/18.5.39187.10602/SemanticSymbols.db +0 -0
- package/examples/blazor-report/.vs/blazor-report/CopilotIndices/18.5.39187.10602/SemanticSymbols.db-shm +0 -0
- package/examples/blazor-report/.vs/blazor-report/CopilotIndices/18.5.39187.10602/SemanticSymbols.db-wal +0 -0
- package/examples/blazor-report/.vs/blazor-report.slnx/FileContentIndex/703a57d7-cf1c-457c-aa2c-6fb9398c8bf7.vsidx +0 -0
- package/examples/blazor-report/.vs/blazor-report.slnx/FileContentIndex/70741c74-9514-4067-90f8-96624e5a719f.vsidx +0 -0
- package/examples/blazor-report/.vs/blazor-report.slnx/FileContentIndex/7ca4089f-e321-418f-8d92-4cb41fb5a7fc.vsidx +0 -0
- package/examples/blazor-report/Components/App.razor +19 -0
- package/examples/blazor-report/Components/Layout/MainLayout.razor +23 -0
- package/examples/blazor-report/Components/Layout/MainLayout.razor.css +98 -0
- package/examples/blazor-report/Components/Layout/NavMenu.razor +30 -0
- package/examples/blazor-report/Components/Layout/NavMenu.razor.css +105 -0
- package/examples/blazor-report/Components/Layout/ReconnectModal.razor +31 -0
- package/examples/blazor-report/Components/Layout/ReconnectModal.razor.css +157 -0
- package/examples/blazor-report/Components/Layout/ReconnectModal.razor.js +63 -0
- package/examples/blazor-report/Components/Pages/Counter.razor +19 -0
- package/examples/blazor-report/Components/Pages/Error.razor +36 -0
- package/examples/blazor-report/Components/Pages/Factura.razor +32 -0
- package/examples/blazor-report/Components/Pages/Home.razor +16 -0
- package/examples/blazor-report/Components/Pages/NotFound.razor +5 -0
- package/examples/blazor-report/Components/Pages/Weather.razor +64 -0
- package/examples/blazor-report/Components/Routes.razor +6 -0
- package/examples/blazor-report/Components/_Imports.razor +11 -0
- package/examples/blazor-report/Program.cs +18 -0
- package/examples/blazor-report/Properties/launchSettings.json +23 -0
- package/examples/blazor-report/appsettings.Development.json +8 -0
- package/examples/blazor-report/appsettings.json +9 -0
- package/examples/blazor-report/bin/Debug/net10.0/appsettings.Development.json +8 -0
- package/examples/blazor-report/bin/Debug/net10.0/appsettings.json +9 -0
- package/examples/blazor-report/bin/Debug/net10.0/blazor-report.deps.json +23 -0
- package/examples/blazor-report/bin/Debug/net10.0/blazor-report.dll +0 -0
- package/examples/blazor-report/bin/Debug/net10.0/blazor-report.exe +0 -0
- package/examples/blazor-report/bin/Debug/net10.0/blazor-report.pdb +0 -0
- package/examples/blazor-report/bin/Debug/net10.0/blazor-report.runtimeconfig.json +20 -0
- package/examples/blazor-report/bin/Debug/net10.0/blazor-report.staticwebassets.endpoints.json +1 -0
- package/examples/blazor-report/bin/Debug/net10.0/blazor-report.staticwebassets.runtime.json +1 -0
- package/examples/blazor-report/blazor-report.csproj +12 -0
- package/examples/blazor-report/blazor-report.csproj.user +6 -0
- package/examples/blazor-report/obj/Debug/net10.0/.NETCoreApp,Version=v10.0.AssemblyAttributes.cs +4 -0
- package/examples/blazor-report/obj/Debug/net10.0/ApiEndpoints.json +1 -0
- package/examples/blazor-report/obj/Debug/net10.0/EmbeddedAttribute.cs +7 -0
- package/examples/blazor-report/obj/Debug/net10.0/ValidatableTypeAttribute.cs +9 -0
- package/examples/blazor-report/obj/Debug/net10.0/apphost.exe +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/blazor-report.AssemblyInfo.cs +23 -0
- package/examples/blazor-report/obj/Debug/net10.0/blazor-report.AssemblyInfoInputs.cache +1 -0
- package/examples/blazor-report/obj/Debug/net10.0/blazor-report.GeneratedMSBuildEditorConfig.editorconfig +71 -0
- package/examples/blazor-report/obj/Debug/net10.0/blazor-report.GlobalUsings.g.cs +18 -0
- package/examples/blazor-report/obj/Debug/net10.0/blazor-report.MvcApplicationPartsAssemblyInfo.cache +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/blazor-report.assets.cache +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/blazor-report.csproj.BuildWithSkipAnalyzers +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/blazor-report.csproj.CoreCompileInputs.cache +1 -0
- package/examples/blazor-report/obj/Debug/net10.0/blazor-report.csproj.FileListAbsolute.txt +87 -0
- package/examples/blazor-report/obj/Debug/net10.0/blazor-report.dll +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/blazor-report.genruntimeconfig.cache +1 -0
- package/examples/blazor-report/obj/Debug/net10.0/blazor-report.pdb +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/blazor-report.sourcelink.json +1 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/01gcr5ok0d-{0}-tdbxkamptv-tdbxkamptv.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/0u122lzsqf-{0}-v0zj4ognzu-v0zj4ognzu.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/19vuobcugt-{0}-ausgxo2sd3-ausgxo2sd3.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/2w8s7d0tmu-{0}-c2oey78nd0-c2oey78nd0.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/3seby862hk-{0}-pj5nd1wqec-pj5nd1wqec.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/4z6vyi198a-{0}-c2jlpeoesf-c2jlpeoesf.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/56erzxf847-{0}-rzd6atqjts-rzd6atqjts.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/6pye2umi32-{0}-nvvlpmu67g-nvvlpmu67g.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/6rkf7abng5-{0}-xbbil6v7co-xbbil6v7co.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/7qckystb2n-{0}-jj8uyg4cgr-jj8uyg4cgr.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/7y9tnc1ana-{0}-hwaxidwiwj-hwaxidwiwj.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/7zwf5lrnue-{0}-notf2xhcfb-notf2xhcfb.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/83pb0ayzsm-{0}-k8d9w2qqmf-k8d9w2qqmf.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/88dhp3hbzx-{0}-37tfw0ft22-37tfw0ft22.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/a0n8vocv65-{0}-khv3u5hwcm-khv3u5hwcm.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/acjalqkfgt-{0}-7ma0977mvv-7ma0977mvv.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/bgsbrgy7vf-{0}-h1s4sie4z3-h1s4sie4z3.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/c6laszq5ww-{0}-46ein0sx1k-46ein0sx1k.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/dm27gmg8ll-{0}-fvhpjtyr6v-fvhpjtyr6v.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/es0hst4x17-{0}-ee0r1s7dh0-ee0r1s7dh0.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/f4eerlwe3k-{0}-63fj8s7r0e-63fj8s7r0e.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/f5b7s575cu-{0}-ub07r2b239-ub07r2b239.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/gi3zzjjv2d-{0}-iovd86k7lj-iovd86k7lj.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/h9k7hhwqjn-{0}-m2jb7tclhy-m2jb7tclhy.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/hd6b60w7a9-{0}-pk9g2wxc8p-pk9g2wxc8p.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/iepu09js1p-{0}-493y06b0oq-493y06b0oq.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/k77ggeojrw-{0}-bqjiyaj88i-bqjiyaj88i.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/kpxymjsba6-{0}-kbrnm935zg-kbrnm935zg.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/kq868t8x5q-{0}-fsbi9cje9m-fsbi9cje9m.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/lbvdfe28z6-{0}-b7pk76d08c-b7pk76d08c.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/ltulwrnpym-{0}-erw9l3u2r3-erw9l3u2r3.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/pcqcp3y12o-{0}-lcd1t2u6c8-lcd1t2u6c8.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/q6ii8s1dt0-{0}-abdmv1u4y3-abdmv1u4y3.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/r8rcl1ft48-{0}-ft3s53vfgj-ft3s53vfgj.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/relgedb7iz-{0}-6pdc2jztkx-6pdc2jztkx.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/s7ng5by487-{0}-hrwsygsryq-hrwsygsryq.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/sezds5me7x-{0}-d7shbmvgxk-d7shbmvgxk.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/soo3rna5ha-{0}-0j3bgjxly4-0j3bgjxly4.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/t11mfcypsb-{0}-s35ty4nyc5-s35ty4nyc5.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/t35fshhzld-{0}-06098lyss8-06098lyss8.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/tb3gndp62e-{0}-dxx9fxp4il-dxx9fxp4il.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/tmx7wa8ilq-{0}-vr1egmr9el-vr1egmr9el.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/v33f9mpzye-{0}-r4e9w2rdcm-r4e9w2rdcm.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/va8x872qf1-{0}-aexeepp0ev-aexeepp0ev.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/w5d5wye635-{0}-j5mq2jizvt-j5mq2jizvt.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/weriyjrep0-{0}-y7v9cxd14o-y7v9cxd14o.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/ycnqkrbal1-{0}-m2jb7tclhy-m2jb7tclhy.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/yl0vb4jg87-{0}-jd9uben2k1-jd9uben2k1.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/z5nx2tkgl4-{0}-khy4lop6wu-khy4lop6wu.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/zeckyeunui-{0}-6cfz1n2cew-6cfz1n2cew.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/compressed/zu2f3ffzwm-{0}-cosvhxvwiu-cosvhxvwiu.gz +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/rbcswa.dswa.cache.json +1 -0
- package/examples/blazor-report/obj/Debug/net10.0/ref/blazor-report.dll +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/refint/blazor-report.dll +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/rjimswa.dswa.cache.json +1 -0
- package/examples/blazor-report/obj/Debug/net10.0/rjsmcshtml.dswa.cache.json +1 -0
- package/examples/blazor-report/obj/Debug/net10.0/rjsmrazor.dswa.cache.json +1 -0
- package/examples/blazor-report/obj/Debug/net10.0/rpswa.dswa.cache.json +1 -0
- package/examples/blazor-report/obj/Debug/net10.0/scopedcss/Components/Layout/MainLayout.razor.rz.scp.css +98 -0
- package/examples/blazor-report/obj/Debug/net10.0/scopedcss/Components/Layout/NavMenu.razor.rz.scp.css +105 -0
- package/examples/blazor-report/obj/Debug/net10.0/scopedcss/Components/Layout/ReconnectModal.razor.rz.scp.css +157 -0
- package/examples/blazor-report/obj/Debug/net10.0/scopedcss/bundle/blazor-report.styles.css +363 -0
- package/examples/blazor-report/obj/Debug/net10.0/scopedcss/projectbundle/blazor-report.bundle.scp.css +363 -0
- package/examples/blazor-report/obj/Debug/net10.0/staticwebassets.build.endpoints.json +1 -0
- package/examples/blazor-report/obj/Debug/net10.0/staticwebassets.build.json +1 -0
- package/examples/blazor-report/obj/Debug/net10.0/staticwebassets.build.json.cache +1 -0
- package/examples/blazor-report/obj/Debug/net10.0/staticwebassets.development.json +1 -0
- package/examples/blazor-report/obj/Debug/net10.0/staticwebassets.references.upToDateCheck.txt +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/staticwebassets.removed.txt +0 -0
- package/examples/blazor-report/obj/Debug/net10.0/swae.build.ex.cache +0 -0
- package/examples/blazor-report/obj/blazor-report.csproj.nuget.dgspec.json +499 -0
- package/examples/blazor-report/obj/blazor-report.csproj.nuget.g.props +19 -0
- package/examples/blazor-report/obj/blazor-report.csproj.nuget.g.targets +6 -0
- package/examples/blazor-report/obj/project.assets.json +542 -0
- package/examples/blazor-report/obj/project.nuget.cache +10 -0
- package/examples/blazor-report/wwwroot/app.css +60 -0
- package/examples/blazor-report/wwwroot/factura_de_recolecci/303/263n_de_residuos.json +528 -0
- package/examples/blazor-report/wwwroot/favicon.png +0 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css +4085 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map +1 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css +6 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map +1 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css +4084 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css.map +1 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css +6 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map +1 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css +597 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map +1 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css +6 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map +1 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css +594 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css.map +1 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css +6 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map +1 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css +5402 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css.map +1 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css +6 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css.map +1 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css +5393 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css.map +1 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css +6 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map +1 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap.css +12057 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map +1 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css +6 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map +1 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css +12030 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css.map +1 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css +6 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css.map +1 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js +6314 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map +1 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js +7 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js.map +1 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js +4447 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js.map +1 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js +7 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js.map +1 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/js/bootstrap.js +4494 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/js/bootstrap.js.map +1 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js +7 -0
- package/examples/blazor-report/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map +1 -0
- package/examples/integration/AspNetCoreRazorPages.cshtml +52 -0
- package/examples/integration/BlazorRazor.razor +84 -0
- package/examples/integration/BlazorServer.razor +91 -0
- package/examples/integration/index.html +100 -0
- package/examples/integration/integration-jquery.html +142 -0
- package/examples/viewer.html +58 -0
- package/package.json +4 -4
- package/dist/browser-lud4wlfC.js +0 -1473
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
@page "/reports/factura"
|
|
2
|
+
@inject IHttpClientFactory HttpFactory
|
|
3
|
+
@inject IJSRuntime JS
|
|
4
|
+
|
|
5
|
+
<h1 style="color:#1e3a8a; margin-bottom:16px;">Factura de Recolección</h1>
|
|
6
|
+
|
|
7
|
+
<div style="height:800px; border:1px solid #e5e7eb; border-radius:8px; overflow:hidden; background:white;">
|
|
8
|
+
<nexa-viewer id="viewer"></nexa-viewer>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div style="margin-top:16px; display:flex; gap:8px;">
|
|
12
|
+
<button @onclick="ExportPdf" style="padding:8px 16px; background:#1e40af; color:white; border:none; border-radius:6px; cursor:pointer;">PDF</button>
|
|
13
|
+
<button @onclick="ExportExcel" style="padding:8px 16px; background:#16a34a; color:white; border:none; border-radius:6px; cursor:pointer;">Excel</button>
|
|
14
|
+
<button @onclick="LoadReport" style="padding:8px 16px; background:#fff; border:1px solid #d1d5db; border-radius:6px; cursor:pointer;">Recargar</button>
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
@code {
|
|
18
|
+
private bool _loaded = false;
|
|
19
|
+
|
|
20
|
+
protected override async Task OnAfterRenderAsync(bool firstRender)
|
|
21
|
+
{
|
|
22
|
+
if (firstRender && !_loaded)
|
|
23
|
+
{
|
|
24
|
+
_loaded = true;
|
|
25
|
+
await LoadReport();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
private async Task LoadReport()
|
|
30
|
+
{
|
|
31
|
+
var http = HttpFactory.CreateClient();
|
|
32
|
+
var definition = await http.GetFromJsonAsync<object>("/examples/invoice-report.json");
|
|
33
|
+
var data = new Dictionary<string, object[]>
|
|
34
|
+
{
|
|
35
|
+
["main"] = new object[] { new { nofactura = "34", nombre = "CLIENTE EJEMPLO S.A.S.", nit = "900.123.456-7", direccion = "Calle 100 # 15-20" } }
|
|
36
|
+
};
|
|
37
|
+
await JS.InvokeVoidAsync("nexaReportRender", "viewer", definition, data);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
private async Task ExportPdf() => await JS.InvokeVoidAsync("nexaReportExportPdf", "viewer");
|
|
41
|
+
private async Task ExportExcel() => await JS.InvokeVoidAsync("nexaReportExportExcel", "viewer");
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
<script src="https://cdn.jsdelivr.net/npm/nexabase-report@0.2.8/dist/nexabase-report.umd.js"></script>
|
|
45
|
+
<script>
|
|
46
|
+
window.nexaReportRender = function(id, def, data) {
|
|
47
|
+
if (!window._nexaReg) { NexaReport.registerNexaReport(); window._nexaReg = true; }
|
|
48
|
+
setTimeout(() => { const v = document.getElementById(id); if (v) { v.definition = def; v.data = data; } }, 100);
|
|
49
|
+
};
|
|
50
|
+
window.nexaReportExportPdf = (id) => { const v = document.getElementById(id); v && v.exportPdf(); };
|
|
51
|
+
window.nexaReportExportExcel = (id) => { const v = document.getElementById(id); v && v.exportExcel(); };
|
|
52
|
+
</script>
|
package/examples/blazor-report/.vs/blazor-report/CopilotIndices/18.5.39187.10602/CodeChunks.db
ADDED
|
Binary file
|
package/examples/blazor-report/.vs/blazor-report/CopilotIndices/18.5.39187.10602/CodeChunks.db-shm
ADDED
|
Binary file
|
package/examples/blazor-report/.vs/blazor-report/CopilotIndices/18.5.39187.10602/CodeChunks.db-wal
ADDED
|
Binary file
|
package/examples/blazor-report/.vs/blazor-report/CopilotIndices/18.5.39187.10602/SemanticSymbols.db
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="es">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<base href="/" />
|
|
7
|
+
<ImportMap />
|
|
8
|
+
<link rel="icon" type="image/png" href="favicon.png" />
|
|
9
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/nexabase-report@0.2.8/dist/style.css" />
|
|
10
|
+
<HeadOutlet />
|
|
11
|
+
</head>
|
|
12
|
+
<body>
|
|
13
|
+
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
14
|
+
<script src="https://cdn.jsdelivr.net/npm/nexabase-report@0.2.8/dist/nexabase-report.umd.js"></script>
|
|
15
|
+
<Routes />
|
|
16
|
+
<ReconnectModal />
|
|
17
|
+
<script src="_framework/blazor.web.js"></script>
|
|
18
|
+
</body>
|
|
19
|
+
</html>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
@inherits LayoutComponentBase
|
|
2
|
+
|
|
3
|
+
<div class="page">
|
|
4
|
+
<div class="sidebar">
|
|
5
|
+
<NavMenu />
|
|
6
|
+
</div>
|
|
7
|
+
|
|
8
|
+
<main>
|
|
9
|
+
<div class="top-row px-4">
|
|
10
|
+
<a href="https://learn.microsoft.com/aspnet/core/" target="_blank">About</a>
|
|
11
|
+
</div>
|
|
12
|
+
|
|
13
|
+
<article class="content px-4">
|
|
14
|
+
@Body
|
|
15
|
+
</article>
|
|
16
|
+
</main>
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
<div id="blazor-error-ui" data-nosnippet>
|
|
20
|
+
An unhandled error has occurred.
|
|
21
|
+
<a href="." class="reload">Reload</a>
|
|
22
|
+
<span class="dismiss">🗙</span>
|
|
23
|
+
</div>
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
.page {
|
|
2
|
+
position: relative;
|
|
3
|
+
display: flex;
|
|
4
|
+
flex-direction: column;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
main {
|
|
8
|
+
flex: 1;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.sidebar {
|
|
12
|
+
background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.top-row {
|
|
16
|
+
background-color: #f7f7f7;
|
|
17
|
+
border-bottom: 1px solid #d6d5d5;
|
|
18
|
+
justify-content: flex-end;
|
|
19
|
+
height: 3.5rem;
|
|
20
|
+
display: flex;
|
|
21
|
+
align-items: center;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.top-row ::deep a, .top-row ::deep .btn-link {
|
|
25
|
+
white-space: nowrap;
|
|
26
|
+
margin-left: 1.5rem;
|
|
27
|
+
text-decoration: none;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.top-row ::deep a:hover, .top-row ::deep .btn-link:hover {
|
|
31
|
+
text-decoration: underline;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.top-row ::deep a:first-child {
|
|
35
|
+
overflow: hidden;
|
|
36
|
+
text-overflow: ellipsis;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@media (max-width: 640.98px) {
|
|
40
|
+
.top-row {
|
|
41
|
+
justify-content: space-between;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.top-row ::deep a, .top-row ::deep .btn-link {
|
|
45
|
+
margin-left: 0;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
@media (min-width: 641px) {
|
|
50
|
+
.page {
|
|
51
|
+
flex-direction: row;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.sidebar {
|
|
55
|
+
width: 250px;
|
|
56
|
+
height: 100vh;
|
|
57
|
+
position: sticky;
|
|
58
|
+
top: 0;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.top-row {
|
|
62
|
+
position: sticky;
|
|
63
|
+
top: 0;
|
|
64
|
+
z-index: 1;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.top-row.auth ::deep a:first-child {
|
|
68
|
+
flex: 1;
|
|
69
|
+
text-align: right;
|
|
70
|
+
width: 0;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.top-row, article {
|
|
74
|
+
padding-left: 2rem !important;
|
|
75
|
+
padding-right: 1.5rem !important;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
#blazor-error-ui {
|
|
80
|
+
color-scheme: light only;
|
|
81
|
+
background: lightyellow;
|
|
82
|
+
bottom: 0;
|
|
83
|
+
box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
|
|
84
|
+
box-sizing: border-box;
|
|
85
|
+
display: none;
|
|
86
|
+
left: 0;
|
|
87
|
+
padding: 0.6rem 1.25rem 0.7rem 1.25rem;
|
|
88
|
+
position: fixed;
|
|
89
|
+
width: 100%;
|
|
90
|
+
z-index: 1000;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
#blazor-error-ui .dismiss {
|
|
94
|
+
cursor: pointer;
|
|
95
|
+
position: absolute;
|
|
96
|
+
right: 0.75rem;
|
|
97
|
+
top: 0.5rem;
|
|
98
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<div class="top-row ps-3 navbar navbar-dark">
|
|
2
|
+
<div class="container-fluid">
|
|
3
|
+
<a class="navbar-brand" href="">blazor-report</a>
|
|
4
|
+
</div>
|
|
5
|
+
</div>
|
|
6
|
+
|
|
7
|
+
<input type="checkbox" title="Navigation menu" class="navbar-toggler" />
|
|
8
|
+
|
|
9
|
+
<div class="nav-scrollable" onclick="document.querySelector('.navbar-toggler').click()">
|
|
10
|
+
<nav class="nav flex-column">
|
|
11
|
+
<div class="nav-item px-3">
|
|
12
|
+
<NavLink class="nav-link" href="" Match="NavLinkMatch.All">
|
|
13
|
+
<span class="bi bi-house-door-fill-nav-menu" aria-hidden="true"></span> Home
|
|
14
|
+
</NavLink>
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
<div class="nav-item px-3">
|
|
18
|
+
<NavLink class="nav-link" href="counter">
|
|
19
|
+
<span class="bi bi-plus-square-fill-nav-menu" aria-hidden="true"></span> Counter
|
|
20
|
+
</NavLink>
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
<div class="nav-item px-3">
|
|
24
|
+
<NavLink class="nav-link" href="weather">
|
|
25
|
+
<span class="bi bi-list-nested-nav-menu" aria-hidden="true"></span> Weather
|
|
26
|
+
</NavLink>
|
|
27
|
+
</div>
|
|
28
|
+
</nav>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
.navbar-toggler {
|
|
2
|
+
appearance: none;
|
|
3
|
+
cursor: pointer;
|
|
4
|
+
width: 3.5rem;
|
|
5
|
+
height: 2.5rem;
|
|
6
|
+
color: white;
|
|
7
|
+
position: absolute;
|
|
8
|
+
top: 0.5rem;
|
|
9
|
+
right: 1rem;
|
|
10
|
+
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
11
|
+
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem rgba(255, 255, 255, 0.1);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.navbar-toggler:checked {
|
|
15
|
+
background-color: rgba(255, 255, 255, 0.5);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.top-row {
|
|
19
|
+
min-height: 3.5rem;
|
|
20
|
+
background-color: rgba(0,0,0,0.4);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.navbar-brand {
|
|
24
|
+
font-size: 1.1rem;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.bi {
|
|
28
|
+
display: inline-block;
|
|
29
|
+
position: relative;
|
|
30
|
+
width: 1.25rem;
|
|
31
|
+
height: 1.25rem;
|
|
32
|
+
margin-right: 0.75rem;
|
|
33
|
+
top: -1px;
|
|
34
|
+
background-size: cover;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.bi-house-door-fill-nav-menu {
|
|
38
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-house-door-fill' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E");
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.bi-plus-square-fill-nav-menu {
|
|
42
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-plus-square-fill' viewBox='0 0 16 16'%3E%3Cpath d='M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm6.5 4.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3a.5.5 0 0 1 1 0z'/%3E%3C/svg%3E");
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.bi-list-nested-nav-menu {
|
|
46
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-list-nested' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E");
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.nav-item {
|
|
50
|
+
font-size: 0.9rem;
|
|
51
|
+
padding-bottom: 0.5rem;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.nav-item:first-of-type {
|
|
55
|
+
padding-top: 1rem;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.nav-item:last-of-type {
|
|
59
|
+
padding-bottom: 1rem;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.nav-item ::deep .nav-link {
|
|
63
|
+
color: #d7d7d7;
|
|
64
|
+
background: none;
|
|
65
|
+
border: none;
|
|
66
|
+
border-radius: 4px;
|
|
67
|
+
height: 3rem;
|
|
68
|
+
display: flex;
|
|
69
|
+
align-items: center;
|
|
70
|
+
line-height: 3rem;
|
|
71
|
+
width: 100%;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.nav-item ::deep a.active {
|
|
75
|
+
background-color: rgba(255,255,255,0.37);
|
|
76
|
+
color: white;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.nav-item ::deep .nav-link:hover {
|
|
80
|
+
background-color: rgba(255,255,255,0.1);
|
|
81
|
+
color: white;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.nav-scrollable {
|
|
85
|
+
display: none;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.navbar-toggler:checked ~ .nav-scrollable {
|
|
89
|
+
display: block;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
@media (min-width: 641px) {
|
|
93
|
+
.navbar-toggler {
|
|
94
|
+
display: none;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.nav-scrollable {
|
|
98
|
+
/* Never collapse the sidebar for wide screens */
|
|
99
|
+
display: block;
|
|
100
|
+
|
|
101
|
+
/* Allow sidebar to scroll for tall menus */
|
|
102
|
+
height: calc(100vh - 3.5rem);
|
|
103
|
+
overflow-y: auto;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<script type="module" src="@Assets["Components/Layout/ReconnectModal.razor.js"]"></script>
|
|
2
|
+
|
|
3
|
+
<dialog id="components-reconnect-modal" data-nosnippet>
|
|
4
|
+
<div class="components-reconnect-container">
|
|
5
|
+
<div class="components-rejoining-animation" aria-hidden="true">
|
|
6
|
+
<div></div>
|
|
7
|
+
<div></div>
|
|
8
|
+
</div>
|
|
9
|
+
<p class="components-reconnect-first-attempt-visible">
|
|
10
|
+
Rejoining the server...
|
|
11
|
+
</p>
|
|
12
|
+
<p class="components-reconnect-repeated-attempt-visible">
|
|
13
|
+
Rejoin failed... trying again in <span id="components-seconds-to-next-attempt"></span> seconds.
|
|
14
|
+
</p>
|
|
15
|
+
<p class="components-reconnect-failed-visible">
|
|
16
|
+
Failed to rejoin.<br />Please retry or reload the page.
|
|
17
|
+
</p>
|
|
18
|
+
<button id="components-reconnect-button" class="components-reconnect-failed-visible">
|
|
19
|
+
Retry
|
|
20
|
+
</button>
|
|
21
|
+
<p class="components-pause-visible">
|
|
22
|
+
The session has been paused by the server.
|
|
23
|
+
</p>
|
|
24
|
+
<p class="components-resume-failed-visible">
|
|
25
|
+
Failed to resume the session.<br />Please retry or reload the page.
|
|
26
|
+
</p>
|
|
27
|
+
<button id="components-resume-button" class="components-pause-visible components-resume-failed-visible">
|
|
28
|
+
Resume
|
|
29
|
+
</button>
|
|
30
|
+
</div>
|
|
31
|
+
</dialog>
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
.components-reconnect-first-attempt-visible,
|
|
2
|
+
.components-reconnect-repeated-attempt-visible,
|
|
3
|
+
.components-reconnect-failed-visible,
|
|
4
|
+
.components-pause-visible,
|
|
5
|
+
.components-resume-failed-visible,
|
|
6
|
+
.components-rejoining-animation {
|
|
7
|
+
display: none;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible,
|
|
11
|
+
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation,
|
|
12
|
+
#components-reconnect-modal.components-reconnect-paused .components-pause-visible,
|
|
13
|
+
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible,
|
|
14
|
+
#components-reconnect-modal.components-reconnect-retrying,
|
|
15
|
+
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible,
|
|
16
|
+
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation,
|
|
17
|
+
#components-reconnect-modal.components-reconnect-failed,
|
|
18
|
+
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible {
|
|
19
|
+
display: block;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
#components-reconnect-modal {
|
|
24
|
+
background-color: white;
|
|
25
|
+
width: 20rem;
|
|
26
|
+
margin: 20vh auto;
|
|
27
|
+
padding: 2rem;
|
|
28
|
+
border: 0;
|
|
29
|
+
border-radius: 0.5rem;
|
|
30
|
+
box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.3);
|
|
31
|
+
opacity: 0;
|
|
32
|
+
transition: display 0.5s allow-discrete, overlay 0.5s allow-discrete;
|
|
33
|
+
animation: components-reconnect-modal-fadeOutOpacity 0.5s both;
|
|
34
|
+
&[open]
|
|
35
|
+
|
|
36
|
+
{
|
|
37
|
+
animation: components-reconnect-modal-slideUp 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity 0.5s ease-in-out 0.3s;
|
|
38
|
+
animation-fill-mode: both;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
#components-reconnect-modal::backdrop {
|
|
44
|
+
background-color: rgba(0, 0, 0, 0.4);
|
|
45
|
+
animation: components-reconnect-modal-fadeInOpacity 0.5s ease-in-out;
|
|
46
|
+
opacity: 1;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
@keyframes components-reconnect-modal-slideUp {
|
|
50
|
+
0% {
|
|
51
|
+
transform: translateY(30px) scale(0.95);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
100% {
|
|
55
|
+
transform: translateY(0);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
@keyframes components-reconnect-modal-fadeInOpacity {
|
|
60
|
+
0% {
|
|
61
|
+
opacity: 0;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
100% {
|
|
65
|
+
opacity: 1;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
@keyframes components-reconnect-modal-fadeOutOpacity {
|
|
70
|
+
0% {
|
|
71
|
+
opacity: 1;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
100% {
|
|
75
|
+
opacity: 0;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.components-reconnect-container {
|
|
80
|
+
display: flex;
|
|
81
|
+
flex-direction: column;
|
|
82
|
+
align-items: center;
|
|
83
|
+
gap: 1rem;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
#components-reconnect-modal p {
|
|
87
|
+
margin: 0;
|
|
88
|
+
text-align: center;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
#components-reconnect-modal button {
|
|
92
|
+
border: 0;
|
|
93
|
+
background-color: #6b9ed2;
|
|
94
|
+
color: white;
|
|
95
|
+
padding: 4px 24px;
|
|
96
|
+
border-radius: 4px;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
#components-reconnect-modal button:hover {
|
|
100
|
+
background-color: #3b6ea2;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
#components-reconnect-modal button:active {
|
|
104
|
+
background-color: #6b9ed2;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.components-rejoining-animation {
|
|
108
|
+
position: relative;
|
|
109
|
+
width: 80px;
|
|
110
|
+
height: 80px;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.components-rejoining-animation div {
|
|
114
|
+
position: absolute;
|
|
115
|
+
border: 3px solid #0087ff;
|
|
116
|
+
opacity: 1;
|
|
117
|
+
border-radius: 50%;
|
|
118
|
+
animation: components-rejoining-animation 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.components-rejoining-animation div:nth-child(2) {
|
|
122
|
+
animation-delay: -0.5s;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
@keyframes components-rejoining-animation {
|
|
126
|
+
0% {
|
|
127
|
+
top: 40px;
|
|
128
|
+
left: 40px;
|
|
129
|
+
width: 0;
|
|
130
|
+
height: 0;
|
|
131
|
+
opacity: 0;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
4.9% {
|
|
135
|
+
top: 40px;
|
|
136
|
+
left: 40px;
|
|
137
|
+
width: 0;
|
|
138
|
+
height: 0;
|
|
139
|
+
opacity: 0;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
5% {
|
|
143
|
+
top: 40px;
|
|
144
|
+
left: 40px;
|
|
145
|
+
width: 0;
|
|
146
|
+
height: 0;
|
|
147
|
+
opacity: 1;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
100% {
|
|
151
|
+
top: 0px;
|
|
152
|
+
left: 0px;
|
|
153
|
+
width: 80px;
|
|
154
|
+
height: 80px;
|
|
155
|
+
opacity: 0;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// Set up event handlers
|
|
2
|
+
const reconnectModal = document.getElementById("components-reconnect-modal");
|
|
3
|
+
reconnectModal.addEventListener("components-reconnect-state-changed", handleReconnectStateChanged);
|
|
4
|
+
|
|
5
|
+
const retryButton = document.getElementById("components-reconnect-button");
|
|
6
|
+
retryButton.addEventListener("click", retry);
|
|
7
|
+
|
|
8
|
+
const resumeButton = document.getElementById("components-resume-button");
|
|
9
|
+
resumeButton.addEventListener("click", resume);
|
|
10
|
+
|
|
11
|
+
function handleReconnectStateChanged(event) {
|
|
12
|
+
if (event.detail.state === "show") {
|
|
13
|
+
reconnectModal.showModal();
|
|
14
|
+
} else if (event.detail.state === "hide") {
|
|
15
|
+
reconnectModal.close();
|
|
16
|
+
} else if (event.detail.state === "failed") {
|
|
17
|
+
document.addEventListener("visibilitychange", retryWhenDocumentBecomesVisible);
|
|
18
|
+
} else if (event.detail.state === "rejected") {
|
|
19
|
+
location.reload();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
async function retry() {
|
|
24
|
+
document.removeEventListener("visibilitychange", retryWhenDocumentBecomesVisible);
|
|
25
|
+
|
|
26
|
+
try {
|
|
27
|
+
// Reconnect will asynchronously return:
|
|
28
|
+
// - true to mean success
|
|
29
|
+
// - false to mean we reached the server, but it rejected the connection (e.g., unknown circuit ID)
|
|
30
|
+
// - exception to mean we didn't reach the server (this can be sync or async)
|
|
31
|
+
const successful = await Blazor.reconnect();
|
|
32
|
+
if (!successful) {
|
|
33
|
+
// We have been able to reach the server, but the circuit is no longer available.
|
|
34
|
+
// We'll reload the page so the user can continue using the app as quickly as possible.
|
|
35
|
+
const resumeSuccessful = await Blazor.resumeCircuit();
|
|
36
|
+
if (!resumeSuccessful) {
|
|
37
|
+
location.reload();
|
|
38
|
+
} else {
|
|
39
|
+
reconnectModal.close();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
} catch (err) {
|
|
43
|
+
// We got an exception, server is currently unavailable
|
|
44
|
+
document.addEventListener("visibilitychange", retryWhenDocumentBecomesVisible);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
async function resume() {
|
|
49
|
+
try {
|
|
50
|
+
const successful = await Blazor.resumeCircuit();
|
|
51
|
+
if (!successful) {
|
|
52
|
+
location.reload();
|
|
53
|
+
}
|
|
54
|
+
} catch {
|
|
55
|
+
reconnectModal.classList.replace("components-reconnect-paused", "components-reconnect-resume-failed");
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
async function retryWhenDocumentBecomesVisible() {
|
|
60
|
+
if (document.visibilityState === "visible") {
|
|
61
|
+
await retry();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
@page "/counter"
|
|
2
|
+
@rendermode InteractiveServer
|
|
3
|
+
|
|
4
|
+
<PageTitle>Counter</PageTitle>
|
|
5
|
+
|
|
6
|
+
<h1>Counter</h1>
|
|
7
|
+
|
|
8
|
+
<p role="status">Current count: @currentCount</p>
|
|
9
|
+
|
|
10
|
+
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
|
|
11
|
+
|
|
12
|
+
@code {
|
|
13
|
+
private int currentCount = 0;
|
|
14
|
+
|
|
15
|
+
private void IncrementCount()
|
|
16
|
+
{
|
|
17
|
+
currentCount++;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
@page "/Error"
|
|
2
|
+
@using System.Diagnostics
|
|
3
|
+
|
|
4
|
+
<PageTitle>Error</PageTitle>
|
|
5
|
+
|
|
6
|
+
<h1 class="text-danger">Error.</h1>
|
|
7
|
+
<h2 class="text-danger">An error occurred while processing your request.</h2>
|
|
8
|
+
|
|
9
|
+
@if (ShowRequestId)
|
|
10
|
+
{
|
|
11
|
+
<p>
|
|
12
|
+
<strong>Request ID:</strong> <code>@RequestId</code>
|
|
13
|
+
</p>
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
<h3>Development Mode</h3>
|
|
17
|
+
<p>
|
|
18
|
+
Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
|
|
19
|
+
</p>
|
|
20
|
+
<p>
|
|
21
|
+
<strong>The Development environment shouldn't be enabled for deployed applications.</strong>
|
|
22
|
+
It can result in displaying sensitive information from exceptions to end users.
|
|
23
|
+
For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
|
|
24
|
+
and restarting the app.
|
|
25
|
+
</p>
|
|
26
|
+
|
|
27
|
+
@code{
|
|
28
|
+
[CascadingParameter]
|
|
29
|
+
private HttpContext? HttpContext { get; set; }
|
|
30
|
+
|
|
31
|
+
private string? RequestId { get; set; }
|
|
32
|
+
private bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
|
|
33
|
+
|
|
34
|
+
protected override void OnInitialized() =>
|
|
35
|
+
RequestId = Activity.Current?.Id ?? HttpContext?.TraceIdentifier;
|
|
36
|
+
}
|