@directus/app 9.0.1 → 9.1.0
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/dist/@directus_extensions-sdk.ec871470.js +1 -0
- package/dist/assets/{active-line.1e85080e.js → active-line.1fb45430.js} +1 -1
- package/dist/assets/{activity-log.f0b81785.js → activity-log.149b4235.js} +1 -1
- package/dist/assets/{activity.848efa17.js → activity.2e626708.js} +5 -5
- package/dist/assets/{api-endpoints.6b2f9a0a.js → api-endpoints.edac31b3.js} +2 -2
- package/dist/assets/{apl.81a36d94.js → apl.a63313b0.js} +1 -1
- package/dist/assets/{asciiarmor.41807b38.js → asciiarmor.3b1d0f31.js} +1 -1
- package/dist/assets/{asn.1.2fb547c7.js → asn.1.87a170ea.js} +1 -1
- package/dist/assets/{asterisk.f25d8cae.js → asterisk.2a94cb4c.js} +1 -1
- package/dist/assets/{authentication.595f862f.js → authentication.979423af.js} +5 -5
- package/dist/assets/{autorefresh.47068160.js → autorefresh.6db972ff.js} +1 -1
- package/dist/assets/{aws.684d8f17.js → aws.f5840be0.js} +1 -1
- package/dist/assets/{backing-directus.75b705d8.js → backing-directus.6c539fa4.js} +1 -1
- package/dist/assets/bg-BG.15567df7.js +2 -0
- package/dist/assets/{brainfuck.0eb32d6a.js → brainfuck.26d25aaf.js} +1 -1
- package/dist/assets/{cli.9c35ba03.js → cli.1923b2eb.js} +3 -3
- package/dist/assets/{cli.6bc58792.js → cli.709f9e2a.js} +2 -2
- package/dist/assets/{clike.8a91e766.js → clike.edc5829c.js} +1 -1
- package/dist/assets/{clojure.680b2086.js → clojure.7a100302.js} +1 -1
- package/dist/assets/{cmake.59d9f97d.js → cmake.380cdff4.js} +1 -1
- package/dist/assets/{cobol.11746877.js → cobol.f6d0d732.js} +1 -1
- package/dist/assets/{codebase-overview.bec34b38.js → codebase-overview.4ba1c217.js} +1 -1
- package/dist/assets/{coffeescript.cc7b12bb.js → coffeescript.fa9a0562.js} +1 -1
- package/dist/assets/{collections.fb0eff5f.js → collections.8d4ed63f.js} +4 -4
- package/dist/assets/{commonlisp.81cf66cf.js → commonlisp.02385e3e.js} +1 -1
- package/dist/assets/{config-options.5ba591a6.js → config-options.0020f748.js} +12 -12
- package/dist/assets/{content-collections.b24311e4.js → content-collections.359b5daf.js} +1 -1
- package/dist/assets/{content-items.16fafd36.js → content-items.f10c4240.js} +1 -1
- package/dist/assets/{content.31f08958.js → content.6c00b4f7.js} +1 -1
- package/dist/assets/{crystal.88773be1.js → crystal.b76a4aec.js} +1 -1
- package/dist/assets/css.c89f439b.js +1 -0
- package/dist/assets/{cypher.62d62091.js → cypher.56b17de3.js} +1 -1
- package/dist/assets/{d.235b72e5.js → d.6d07e4dd.js} +1 -1
- package/dist/assets/{dart.d5e0dc33.js → dart.c54df9d4.js} +1 -1
- package/dist/assets/{data-model.66f7e0e4.js → data-model.709f41ad.js} +1 -1
- package/dist/assets/{diff.236ec957.js → diff.e663c7d4.js} +1 -1
- package/dist/assets/digitalocean-app-platform.fd58d363.js +3 -0
- package/dist/assets/{displays.c55af3d6.js → displays.d13ea013.js} +5 -5
- package/dist/assets/{django.b7dc3aae.js → django.ad94c4f3.js} +1 -1
- package/dist/assets/{docker.d76fac42.js → docker.d440849a.js} +1 -1
- package/dist/assets/{dockerfile.1019efd6.js → dockerfile.d3c851d0.js} +1 -1
- package/dist/assets/{documentation.1092ea83.js → documentation.cda0921f.js} +1 -1
- package/dist/assets/{dtd.2a851c5f.js → dtd.a923df19.js} +1 -1
- package/dist/assets/{dylan.9bb2cd36.js → dylan.9d61b0d3.js} +1 -1
- package/dist/assets/{ebnf.276406d3.js → ebnf.6bf95ce3.js} +1 -1
- package/dist/assets/{ecl.11564c5b.js → ecl.02b879c9.js} +1 -1
- package/dist/assets/{eiffel.be49a681.js → eiffel.b441e9e0.js} +1 -1
- package/dist/assets/{elm.5c8852f7.js → elm.b21b96c7.js} +1 -1
- package/dist/assets/{email-templates.3c6a781e.js → email-templates.153388ae.js} +2 -2
- package/dist/assets/en-GB.1b37c659.js +1 -0
- package/dist/assets/{erlang.ead9639d.js → erlang.b3352f46.js} +1 -1
- package/dist/assets/es-419.4da87d2f.js +1 -0
- package/dist/assets/es-CL.b5d67084.js +1 -0
- package/dist/assets/es-ES.aeba85de.js +1 -0
- package/dist/assets/{extensions.b76bdde3.js → extensions.eb270497.js} +2 -2
- package/dist/assets/{factor.eed233f0.js → factor.6dde298e.js} +1 -1
- package/dist/assets/faq.c6cbe773.js +1 -0
- package/dist/assets/{fcl.271814f0.js → fcl.3b6a0156.js} +1 -1
- package/dist/assets/{fields.238d924d.js → fields.66b4a80a.js} +3 -3
- package/dist/assets/{file-library.d7ca55fc.js → file-library.25e1c929.js} +1 -1
- package/dist/assets/{files.92988e46.js → files.2b5db709.js} +1 -1
- package/dist/assets/{filter-rules.339629f8.js → filter-rules.23b50c24.js} +1 -1
- package/dist/assets/{folders.54e223af.js → folders.cf080e7c.js} +4 -4
- package/dist/assets/{forth.5c226e69.js → forth.568b9e62.js} +1 -1
- package/dist/assets/{fortran.a1e621fd.js → fortran.55e0d59b.js} +1 -1
- package/dist/assets/fr-FR.8a6c9f09.js +1 -0
- package/dist/assets/{gas.249ccc95.js → gas.4db1f658.js} +1 -1
- package/dist/assets/{gfm.392719b7.js → gfm.030ad601.js} +1 -1
- package/dist/assets/{gherkin.f1c57004.js → gherkin.ad583410.js} +1 -1
- package/dist/assets/{github-ci.0ba5d515.js → github-ci.9c11a482.js} +2 -2
- package/dist/assets/{glossary.4258b82f.js → glossary.eb10f432.js} +1 -1
- package/dist/assets/{go.55fe2209.js → go.93e3a800.js} +1 -1
- package/dist/assets/{groovy.49803548.js → groovy.de590f33.js} +1 -1
- package/dist/assets/{haml.00447402.js → haml.5acd6ee4.js} +1 -1
- package/dist/assets/{handlebars.2c2675b3.js → handlebars.5cf29f35.js} +1 -1
- package/dist/assets/{haskell-literate.f95e4126.js → haskell-literate.15d2f533.js} +1 -1
- package/dist/assets/{haskell.613e1328.js → haskell.0c3a5d85.js} +1 -1
- package/dist/assets/{haxe.e363e2e2.js → haxe.7d71b799.js} +1 -1
- package/dist/assets/hi-IN.f686e98f.js +1 -0
- package/dist/assets/hooks.bff79daf.js +94 -0
- package/dist/assets/{htmlembedded.5a5f0ffe.js → htmlembedded.24ede8c5.js} +1 -1
- package/dist/assets/{htmlmixed.05e7a4e9.js → htmlmixed.0714fe9c.js} +1 -1
- package/dist/assets/{http.36bf71f5.js → http.d94924e1.js} +1 -1
- package/dist/assets/{idl.369d3687.js → idl.6d5cfb21.js} +1 -1
- package/dist/assets/{iis.61b90801.js → iis.8f48b46a.js} +3 -2
- package/dist/assets/{index.2ffae100.js → index.01b31560.js} +1 -1
- package/dist/assets/{index.5ef6863e.js → index.032be8b7.js} +1 -1
- package/dist/assets/{index.bd506b24.js → index.071b0921.js} +1 -1
- package/dist/assets/index.077bdc14.css +1 -0
- package/dist/assets/index.0a964dae.css +1 -0
- package/dist/assets/{index.64b8816b.js → index.0f58cc2f.js} +1 -1
- package/dist/assets/{index.266ef2c9.js → index.0f959880.js} +1 -1
- package/dist/assets/{index.7a811ff8.js → index.106dfb9d.js} +1 -1
- package/dist/assets/{index.550c7d98.js → index.1802aa67.js} +1 -1
- package/dist/assets/{index.b73273e0.js → index.1f969a94.js} +1 -1
- package/dist/assets/{index.d03ceb16.js → index.20ac57d1.js} +1 -1
- package/dist/assets/{index.53d7b4b1.js → index.21616bb4.js} +1 -1
- package/dist/assets/{index.bd34bd8b.js → index.25aff973.js} +1 -1
- package/dist/assets/{index.544fc3f4.js → index.2699c99b.js} +1 -1
- package/dist/assets/{index.9c37c372.js → index.2aad0cee.js} +1 -1
- package/dist/assets/{index.dc1688d8.js → index.319b4222.js} +1 -1
- package/dist/assets/{index.6da8ed8b.js → index.35a34e2b.js} +1 -1
- package/dist/assets/{index.0caa5421.js → index.36c4f284.js} +1 -1
- package/dist/assets/{index.15d4ddd7.js → index.37e8e5c7.js} +1 -1
- package/dist/assets/{index.9597bb18.js → index.380a8d1f.js} +1 -1
- package/dist/assets/{index.e68f5a19.js → index.386e7bb1.js} +1 -1
- package/dist/assets/{index.aa7706f9.js → index.3aa19795.js} +1 -1
- package/dist/assets/{index.750b633c.js → index.3adc3d2e.js} +1 -1
- package/dist/assets/{index.19ae9f48.js → index.41e7cd63.js} +1 -1
- package/dist/assets/{index.e65c230c.js → index.4de13843.js} +1 -1
- package/dist/assets/{index.59451527.js → index.52f56cb8.js} +1 -1
- package/dist/assets/{index.7e86f332.js → index.52fb1436.js} +1 -1
- package/dist/assets/{index.77f16025.js → index.53c97358.js} +1 -1
- package/dist/assets/{index.6690c511.js → index.5665651d.js} +1 -1
- package/dist/assets/{index.f8360683.js → index.57ce03df.js} +1 -1
- package/dist/assets/{index.5c71b9bf.js → index.5cee2017.js} +1 -1
- package/dist/assets/{index.83459924.js → index.5dd89f5a.js} +1 -1
- package/dist/assets/{index.54a202be.js → index.632aa7a5.js} +1 -1
- package/dist/assets/{index.0b9941e1.js → index.65d30ed8.js} +1 -1
- package/dist/assets/{index.c36b50cf.js → index.65fe108b.js} +1 -1
- package/dist/assets/{index.1fb6fed8.js → index.6934844d.js} +1 -1
- package/dist/assets/{index.29fa87ff.js → index.6bc4b03b.js} +1 -1
- package/dist/assets/{index.b7e06d7c.js → index.6c6cfd02.js} +1 -1
- package/dist/assets/{index.15f9b058.js → index.6edc7f7f.js} +1 -1
- package/dist/assets/{index.31d1f296.js → index.6f0fc344.js} +1 -1
- package/dist/assets/{index.900f92f9.js → index.711a5d70.js} +1 -1
- package/dist/assets/{index.5a304363.js → index.74ffa87a.js} +1 -1
- package/dist/assets/{index.5286e9da.js → index.774b2ee3.js} +1 -1
- package/dist/assets/{index.5e175966.js → index.777adea0.js} +1 -1
- package/dist/assets/{index.216b6328.js → index.8053cc44.js} +1 -1
- package/dist/assets/{index.b2adcd91.js → index.8081cdc6.js} +1 -1
- package/dist/assets/{index.8e104536.js → index.8a6e3d50.js} +1 -1
- package/dist/assets/{index.1d2a8b64.js → index.90726b0d.js} +1 -1
- package/dist/assets/{index.65c5205d.js → index.930b04bd.js} +1 -1
- package/dist/assets/{index.376099f6.js → index.93ea422c.js} +1 -1
- package/dist/assets/{index.11bd8819.js → index.9443e0cb.js} +1 -1
- package/dist/assets/{index.0ed888d7.js → index.97d0cfe9.js} +1 -1
- package/dist/assets/{index.3c3c9275.js → index.98a5f70b.js} +1 -1
- package/dist/assets/{index.b75dc5c2.js → index.9a540e55.js} +1 -1
- package/dist/assets/{index.f07bb8da.js → index.a2312cea.js} +1 -1
- package/dist/assets/{index.7cb6c8da.js → index.a295ccab.js} +1 -1
- package/dist/assets/{index.bba3d752.js → index.a4ab27a2.js} +1 -1
- package/dist/assets/{index.19d9989e.js → index.a8fcc603.js} +1 -1
- package/dist/assets/{index.1d3c8b76.js → index.aef19a6c.js} +1 -1
- package/dist/assets/{index.fefbb129.js → index.b0ac188d.js} +1 -1
- package/dist/assets/{index.255ac1ac.js → index.b2f66056.js} +1 -1
- package/dist/assets/{index.87946fe5.js → index.b30355b8.js} +1 -1
- package/dist/assets/index.b7c458dd.js +26 -0
- package/dist/assets/{index.bee706b8.js → index.b80f08e2.js} +1 -1
- package/dist/assets/{index.c2ece3ef.js → index.ba16542c.js} +1 -1
- package/dist/assets/{index.d6eb48fd.js → index.ba4fccfa.js} +1 -1
- package/dist/assets/{index.14bae658.js → index.bd0b9050.js} +1 -1
- package/dist/assets/{index.1a242848.js → index.be355994.js} +1 -1
- package/dist/assets/{index.8c729bf2.js → index.c1abc495.js} +1 -1
- package/dist/assets/{index.40abc1ae.js → index.c4217a03.js} +1 -1
- package/dist/assets/{index.aa99cd2b.js → index.c52d890d.js} +1 -1
- package/dist/assets/{index.5d4c645c.js → index.c8d8cea3.js} +1 -1
- package/dist/assets/{index.0ba5b42a.js → index.ceccd7b0.js} +1 -1
- package/dist/assets/{index.0bd18bfd.js → index.d7c52831.js} +1 -1
- package/dist/assets/{index.8fbbb686.js → index.d900df0d.js} +1 -1
- package/dist/assets/{index.61b86afb.js → index.e2516fcf.js} +1 -1
- package/dist/assets/{index.f526c37a.js → index.eceb7719.js} +1 -1
- package/dist/assets/{index.49fe7bbe.js → index.f55469a4.js} +1 -1
- package/dist/assets/{index.5caafb3d.js → index.f6bdd3dc.js} +1 -1
- package/dist/assets/{index.0fb52a97.js → index.f82f535b.js} +1 -1
- package/dist/assets/{index.e713a183.js → index.f94e9d3c.js} +1 -1
- package/dist/assets/{index.1fd33265.js → index.f98c4963.js} +1 -1
- package/dist/assets/{index.94db319d.js → index.f9e49c6f.js} +1 -1
- package/dist/assets/{input-rich-text-html.8fe88ffb.js → input-rich-text-html.dfe08a32.js} +2 -2
- package/dist/assets/{insights.fe74fe29.js → insights.bdfe4fdb.js} +1 -1
- package/dist/assets/{installation.24a44faf.js → installation.3a531e4d.js} +1 -1
- package/dist/assets/{interfaces.23229e78.js → interfaces.e6c8f277.js} +7 -7
- package/dist/assets/introduction.1fa26f9f.js +1 -0
- package/dist/assets/{introduction.02e3c2a7.js → introduction.295c3b30.js} +2 -2
- package/dist/assets/{introduction.16f8f0b0.js → introduction.3da87e38.js} +1 -1
- package/dist/assets/{introduction.e29b10c2.js → introduction.85ed1394.js} +7 -7
- package/dist/assets/{it-IT.3c8c35dd.js → it-IT.5ee88a08.js} +1 -1
- package/dist/assets/{items.4227ac2d.js → items.4a58552c.js} +6 -6
- package/dist/assets/{javascript-hint.747ac6fc.js → javascript-hint.d4ef8031.js} +1 -1
- package/dist/assets/{javascript.84e4549d.js → javascript.e1b08a7c.js} +1 -1
- package/dist/assets/{jinja2.a9a0ddb1.js → jinja2.f8f38ccd.js} +1 -1
- package/dist/assets/{jsx.5d18b001.js → jsx.8aee4b64.js} +1 -1
- package/dist/assets/{julia.12cc2a8c.js → julia.4ab46b62.js} +1 -1
- package/dist/assets/ku-TR.3322375c.js +1 -0
- package/dist/assets/{layouts.1bd78154.js → layouts.54bf3f4f.js} +5 -5
- package/dist/assets/{livescript.f585b533.js → livescript.eb145824.js} +1 -1
- package/dist/assets/{localization.a73190dd.js → localization.b87f6d61.js} +1 -1
- package/dist/assets/logo-light.7a327cdd.svg +3 -0
- package/dist/assets/{lua.a656cb84.js → lua.492ef6f8.js} +1 -1
- package/dist/assets/{manual.794bb884.js → manual.ca166066.js} +4 -4
- package/dist/assets/{mark-selection.98a1b6fc.js → mark-selection.2a69ad50.js} +1 -1
- package/dist/assets/{match-highlighter.e1444e0b.js → match-highlighter.748e90d7.js} +1 -1
- package/dist/assets/{mathematica.448ae8b5.js → mathematica.85e0e720.js} +1 -1
- package/dist/assets/{mbox.977764b6.js → mbox.bd76d0e3.js} +1 -1
- package/dist/assets/{migrations.992a23b0.js → migrations.d7d0c3b8.js} +1 -1
- package/dist/assets/{mirc.ac98dd7b.js → mirc.ef885f9d.js} +1 -1
- package/dist/assets/{mllike.ee7c202f.js → mllike.09bad057.js} +1 -1
- package/dist/assets/{modelica.0e691287.js → modelica.705292e7.js} +1 -1
- package/dist/assets/{modules.116e46b4.js → modules.51a52010.js} +6 -6
- package/dist/assets/{mscgen.4c9c356e.js → mscgen.c905f040.js} +1 -1
- package/dist/assets/{multiplex.91d67c6e.js → multiplex.bc708602.js} +2 -2
- package/dist/assets/{mumps.c8a6b66b.js → mumps.232bd3cf.js} +1 -1
- package/dist/assets/{nginx.048f88c1.js → nginx.53b1a1cc.js} +1 -1
- package/dist/assets/notifications.95ecd845.js +153 -0
- package/dist/assets/{nsis.1830f129.js → nsis.2e11a243.js} +1 -1
- package/dist/assets/{ntriples.dff164ff.js → ntriples.28c82a78.js} +1 -1
- package/dist/assets/{octave.27aaa450.js → octave.12f6af40.js} +1 -1
- package/dist/assets/{overlay.ff3e2ac4.js → overlay.17bcab08.js} +1 -1
- package/dist/assets/{overview.c3721f80.js → overview.3735ce4e.js} +1 -1
- package/dist/assets/{overview.b56593b7.js → overview.a7294570.js} +1 -1
- package/dist/assets/{oz.c625131c.js → oz.d739be50.js} +1 -1
- package/dist/assets/{panels.c9913c4b.js → panels.2dc33a61.js} +1 -1
- package/dist/assets/{pascal.2c02faa8.js → pascal.5b65f314.js} +1 -1
- package/dist/assets/{pegjs.0854aa70.js → pegjs.0e1cb55b.js} +1 -1
- package/dist/assets/{perl.6bf3c050.js → perl.f5ebe96e.js} +1 -1
- package/dist/assets/{permissions.83661a53.js → permissions.35d2c816.js} +4 -4
- package/dist/assets/php.1a84936c.js +1 -0
- package/dist/assets/{pig.f6acccd0.js → pig.fe68742a.js} +1 -1
- package/dist/assets/{plesk.20b032fb.js → plesk.7e5e9105.js} +6 -6
- package/dist/assets/{powershell.3fe72e38.js → powershell.914a1e33.js} +1 -1
- package/dist/assets/{presets-bookmarks.dfa9b52f.js → presets-bookmarks.7ca67e49.js} +1 -1
- package/dist/assets/{presets.7e0c88ae.js → presets.ff69bed6.js} +1 -1
- package/dist/assets/project-settings.af73527a.js +1 -0
- package/dist/assets/{properties.8c3f631c.js → properties.30175490.js} +1 -1
- package/dist/assets/{protobuf.ff5609be.js → protobuf.3cc05f5b.js} +1 -1
- package/dist/assets/pt-BR.26238be4.js +1 -0
- package/dist/assets/{pug.e66669ae.js → pug.cc504c53.js} +1 -1
- package/dist/assets/{puppet.8585cc4d.js → puppet.1c9976ea.js} +1 -1
- package/dist/assets/{python.ce0163fc.js → python.cd7c7d5e.js} +1 -1
- package/dist/assets/{q.4a99aff9.js → q.ca9aad64.js} +1 -1
- package/dist/assets/{query.998e770c.js → query.3662a09a.js} +3 -3
- package/dist/assets/{quickstart.1aa6ffca.js → quickstart.03ac6f6c.js} +3 -3
- package/dist/assets/{r.d0ae744a.js → r.4cd7d336.js} +1 -1
- package/dist/assets/{relations.7edadd3b.js → relations.46c5aaca.js} +4 -4
- package/dist/assets/{relationships.b6ef88eb.js → relationships.417dbb85.js} +3 -3
- package/dist/assets/{revisions.9a70b1ec.js → revisions.2fc449af.js} +3 -3
- package/dist/assets/{roles.f017240c.js → roles.46105c9e.js} +4 -4
- package/dist/assets/{rpm.f0a7ad70.js → rpm.ba5fad62.js} +1 -1
- package/dist/assets/{rst.f0464fbc.js → rst.6c6d4c2c.js} +1 -1
- package/dist/assets/ru-RU.33141bc5.js +1 -0
- package/dist/assets/{ruby.4d15c7d1.js → ruby.2944282c.js} +1 -1
- package/dist/assets/{running-locally.bd69d8dc.js → running-locally.b9c6ac7c.js} +5 -5
- package/dist/assets/{rust.e4dfe0d4.js → rust.2c5788fa.js} +1 -1
- package/dist/assets/{sas.709abdd1.js → sas.a3f5d313.js} +1 -1
- package/dist/assets/{sass.2505dd07.js → sass.986c56a5.js} +1 -1
- package/dist/assets/{scheme.897fc126.js → scheme.54733295.js} +1 -1
- package/dist/assets/{sdk.b41be838.js → sdk.f79ec05d.js} +43 -25
- package/dist/assets/{security.548b2b76.js → security.ed62274d.js} +1 -1
- package/dist/assets/{server.d6f5abdc.js → server.9bf46def.js} +4 -4
- package/dist/assets/{settings.4b550f79.js → settings.bf65ae28.js} +1 -1
- package/dist/assets/{settings.5c0f889e.js → settings.cde8ffd7.js} +9 -5
- package/dist/assets/{shell.19de1cf8.js → shell.043f3329.js} +1 -1
- package/dist/assets/{show-hint.0412391d.js → show-hint.4d9b5efb.js} +1 -1
- package/dist/assets/sieve.24282682.js +1 -0
- package/dist/assets/{simple.ab4d8d4b.js → simple.a61e3410.js} +1 -1
- package/dist/assets/{slim.2805b872.js → slim.f414fbd8.js} +1 -1
- package/dist/assets/{smalltalk.ee9f0dd3.js → smalltalk.12047a6d.js} +1 -1
- package/dist/assets/{smarty.08c649b4.js → smarty.e04e1453.js} +1 -1
- package/dist/assets/{solr.36ddf5d2.js → solr.d6415c8b.js} +1 -1
- package/dist/assets/soy.66293c54.js +1 -0
- package/dist/assets/{sparql.e90ce227.js → sparql.9a0f5fb0.js} +1 -1
- package/dist/assets/{spreadsheet.812bc4c1.js → spreadsheet.a9745ff6.js} +1 -1
- package/dist/assets/sql.aed3072b.js +1 -0
- package/dist/assets/{stex.8fe110b6.js → stex.e1a54633.js} +1 -1
- package/dist/assets/stylus.71e0fdc6.js +1 -0
- package/dist/assets/{support.618bb824.js → support.d818a3ba.js} +1 -1
- package/dist/assets/sv-SE.060d5c25.js +1 -0
- package/dist/assets/{swift.a963a96b.js → swift.e957a034.js} +1 -1
- package/dist/assets/{tcl.c00f0ec5.js → tcl.aee8d35f.js} +1 -1
- package/dist/assets/{textile.431d240b.js → textile.ae334d71.js} +1 -1
- package/dist/assets/{themes.ec95c8cb.js → themes.cd13042d.js} +2 -2
- package/dist/assets/{tiddlywiki.1b4d0a22.js → tiddlywiki.0922294b.js} +1 -1
- package/dist/assets/{tiki.d37bbabb.js → tiki.b9504243.js} +1 -1
- package/dist/assets/{toml.1475fc5c.js → toml.d89c1075.js} +1 -1
- package/dist/assets/{tornado.e812c41b.js → tornado.9070fbf9.js} +1 -1
- package/dist/assets/{translations.8406cfe3.js → translations.02aa44ee.js} +1 -1
- package/dist/assets/{troff.52251200.js → troff.e70475ee.js} +1 -1
- package/dist/assets/{ttcn-cfg.4e31c9ce.js → ttcn-cfg.98c35417.js} +1 -1
- package/dist/assets/{ttcn.3ea9f7e4.js → ttcn.73d14f89.js} +1 -1
- package/dist/assets/{turtle.7f166fc9.js → turtle.6725c84b.js} +1 -1
- package/dist/assets/{twig.7c77b8f7.js → twig.eeb6221b.js} +1 -1
- package/dist/assets/ubuntu.adc7719b.js +11 -0
- package/dist/assets/{upgrades-migrations.df5c4042.js → upgrades-migrations.6b876472.js} +1 -1
- package/dist/assets/use-sync.864aa3cf.js +1 -0
- package/dist/assets/{user-directory.63d4d638.js → user-directory.5e0f8a9e.js} +1 -1
- package/dist/assets/{users-roles-permissions.68584449.js → users-roles-permissions.aa6e645d.js} +1 -1
- package/dist/assets/{users.c3c87007.js → users.c126e79c.js} +1 -1
- package/dist/assets/{utilities.e7ef40fc.js → utilities.0bddc943.js} +3 -3
- package/dist/assets/{vb.1551d2a2.js → vb.0680c963.js} +1 -1
- package/dist/assets/{vbscript.0c1ac8ad.js → vbscript.0bd9509a.js} +1 -1
- package/dist/assets/{velocity.63a0cbb3.js → velocity.0c534db9.js} +1 -1
- package/dist/assets/vendor.c46e17d6.js +2039 -0
- package/dist/assets/{verilog.37081dae.js → verilog.2cdac09c.js} +1 -1
- package/dist/assets/{vhdl.8c76cefa.js → vhdl.94c45860.js} +1 -1
- package/dist/assets/{vue.2098315b.js → vue.594a0de9.js} +1 -1
- package/dist/assets/{wast.b90e42f3.js → wast.0781628c.js} +1 -1
- package/dist/assets/{webhooks.59b09c0d.js → webhooks.5bdc49f0.js} +1 -1
- package/dist/assets/{webhooks.2dd2256f.js → webhooks.db4c9b9c.js} +5 -5
- package/dist/assets/{webidl.76dda28b.js → webidl.cc5ea6f7.js} +1 -1
- package/dist/assets/{xquery.5d4fe342.js → xquery.98800824.js} +1 -1
- package/dist/assets/{yacas.b1b2324d.js → yacas.c9a224a6.js} +1 -1
- package/dist/assets/{yaml-frontmatter.6a71ce09.js → yaml-frontmatter.4f8a599e.js} +1 -1
- package/dist/assets/{yaml.ca3ba26d.js → yaml.9997c2ba.js} +1 -1
- package/dist/assets/{z80.a23bb6d3.js → z80.7caf642c.js} +1 -1
- package/dist/index.194f59e3.js +340 -0
- package/dist/index.html +4 -4
- package/dist/vue-i18n.8f9bc4a1.js +1 -0
- package/dist/vue-router.f378de8a.js +1 -0
- package/dist/vue.eb2253b3.js +1 -0
- package/package.json +18 -17
- package/dist/@directus_extensions-sdk.8dd2238a.js +0 -1
- package/dist/assets/bg-BG.9212fbf7.js +0 -2
- package/dist/assets/css.f0a27894.js +0 -1
- package/dist/assets/digitalocean-app-platform.d8054fb4.js +0 -3
- package/dist/assets/es-419.f8a62d18.js +0 -1
- package/dist/assets/es-CL.76c7e2d1.js +0 -1
- package/dist/assets/es-ES.f23f1053.js +0 -1
- package/dist/assets/faq.e629faf1.js +0 -1
- package/dist/assets/fr-FR.e2625f19.js +0 -1
- package/dist/assets/hi-IN.d224762a.js +0 -1
- package/dist/assets/hooks.9441eb32.js +0 -75
- package/dist/assets/index.570f6759.js +0 -26
- package/dist/assets/index.9fb5b610.css +0 -1
- package/dist/assets/index.a49dcfb2.css +0 -1
- package/dist/assets/introduction.25a5119e.js +0 -1
- package/dist/assets/ku-TR.62749d99.js +0 -1
- package/dist/assets/logo-light.1a93a59d.svg +0 -3
- package/dist/assets/php.7f583bfa.js +0 -1
- package/dist/assets/project-settings.31256b54.js +0 -1
- package/dist/assets/pt-BR.e623fc8a.js +0 -1
- package/dist/assets/ru-RU.fec4e20e.js +0 -1
- package/dist/assets/sieve.da5795e7.js +0 -1
- package/dist/assets/soy.2c180864.js +0 -1
- package/dist/assets/sql.f222e1b8.js +0 -1
- package/dist/assets/stylus.02531228.js +0 -1
- package/dist/assets/sv-SE.1739ab58.js +0 -1
- package/dist/assets/ubuntu.67ddbadb.js +0 -11
- package/dist/assets/use-sync.da76e524.js +0 -1
- package/dist/assets/vendor.299bc11c.js +0 -2039
- package/dist/index.0f7650cb.js +0 -340
- package/dist/vue-i18n.b2a4a29c.js +0 -1
- package/dist/vue-router.cd2fde56.js +0 -1
- package/dist/vue.642980f3.js +0 -1
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import{p as o,q as a,C as c,v as u,M as l,D as e}from"./vendor.299bc11c.js";const r=l("div",{class:"markdown-body"},[l("blockquote",null,[l("p",null,"Custom API Hooks allow running custom logic when a specified event occurs within your project. They can be registered as either \u201Cblocking\u201D or immediate.")]),l("h2",{id:"1.-create-a-hook-file"},[e("1. Create a Hook File "),l("a",{class:"header-anchor",href:"#1.-create-a-hook-file"},"#")]),l("p",null,[e("Custom hooks are dynamically loaded from within your extensions folder. By default this directory is located at "),l("code",null,"/extensions"),e(", but it can be configured within your project\u2019s env file to be located anywhere.")]),l("h3",{id:"default-standalone-hook-location"},[e("Default Standalone Hook Location "),l("a",{class:"header-anchor",href:"#default-standalone-hook-location"},"#")]),l("pre",null,[l("code",null,`/extensions/hooks/<hook-id>/index.js
|
|
2
|
-
`)]),l("h2",{id:"2.-define-the-event"},[e("2. Define the Event "),l("a",{class:"header-anchor",href:"#2.-define-the-event"},"#")]),l("p",null,"Next, you will want to define your event. You can trigger your custom hook with any of the platform\u2019s many API events. An event is defined by its type and its name."),l("p",null,"Event names consist of multiple scopes delimited by a dot:"),l("pre",null,[l("code",null,`<scope>.<scope>...
|
|
3
|
-
// eg: items.create
|
|
4
|
-
// eg: users.update
|
|
5
|
-
// eg: auth.login
|
|
6
|
-
// eg: routes.custom.before
|
|
7
|
-
`)]),l("p",null,"There are four event types to choose from."),l("h3",{id:"filter"},[e("Filter "),l("a",{class:"header-anchor",href:"#filter"},"#")]),l("p",null,"A filter event executes prior to the event being fired. This allows you to check and/or modify the event\u2019s payload before it is processed."),l("p",null,"It also allows you to cancel an event based on the logic within the hook. Below is an example of how you can cancel a create event by throwing a standard Directus exception."),l("pre",null,[l("code",{class:"language-js"},[l("span",{class:"hljs-built_in"},"module"),e(".exports = "),l("span",{class:"hljs-function"},[l("span",{class:"hljs-keyword"},"function"),e(),l("span",{class:"hljs-title"},"registerHook"),e("("),l("span",{class:"hljs-params"},"{ filter }, { exceptions }"),e(") ")]),e(`{
|
|
8
|
-
`),l("span",{class:"hljs-keyword"},"const"),e(` { InvalidPayloadException } = exceptions;
|
|
9
|
-
|
|
10
|
-
filter(`),l("span",{class:"hljs-string"},"'items.create'"),e(", "),l("span",{class:"hljs-keyword"},"async"),e(` (input) => {
|
|
11
|
-
`),l("span",{class:"hljs-keyword"},"if"),e(` (LOGIC_TO_CANCEL_EVENT) {
|
|
12
|
-
`),l("span",{class:"hljs-keyword"},"throw"),e(),l("span",{class:"hljs-keyword"},"new"),e(` InvalidPayloadException(WHAT_IS_WRONG);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
`),l("span",{class:"hljs-keyword"},"return"),e(` input;
|
|
16
|
-
});
|
|
17
|
-
};
|
|
18
|
-
`)])]),l("p",null,"The filter register function receives two parameters:"),l("ul",null,[l("li",null,"The event name"),l("li",null,"A callback function that is executed whenever the event fires.")]),l("p",null,"The callback function itself receives three parameters:"),l("ul",null,[l("li",null,"The modifiable payload"),l("li",null,"An event-specific meta object"),l("li",null,"A context object")]),l("p",null,"The context object has the following properties:"),l("ul",null,[l("li",null,[l("code",null,"database"),e(" \u2014 The current database transaction")]),l("li",null,[l("code",null,"schema"),e(" \u2014 The current API schema in use")]),l("li",null,[l("code",null,"accountability"),e(" \u2014 Information about the current user")])]),l("h4",{id:"available-events"},[e("Available Events "),l("a",{class:"header-anchor",href:"#available-events"},"#")]),l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Name"),l("th",null,"Payload"),l("th",null,"Meta")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"request.not_found")]),l("td",null,[l("code",null,"false")]),l("td",null,[l("code",null,"request"),e(", "),l("code",null,"response")])]),l("tr",null,[l("td",null,[l("code",null,"request.error")]),l("td",null,"The request errors"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"database.error")]),l("td",null,"The database error"),l("td",null,[l("code",null,"client")])]),l("tr",null,[l("td",null,[l("code",null,"auth.login")]),l("td",null,"The login payload"),l("td",null,[l("code",null,"status"),e(", "),l("code",null,"user"),e(", "),l("code",null,"provider")])]),l("tr",null,[l("td",null,[l("code",null,"auth.jwt")]),l("td",null,"The auth token"),l("td",null,[l("code",null,"status"),e(", "),l("code",null,"user"),e(", "),l("code",null,"provider"),e(", "),l("code",null,"type")])]),l("tr",null,[l("td",null,[l("code",null,"(<collection>.)items.create")]),l("td",null,"The new item"),l("td",null,[l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"(<collection>.)items.update")]),l("td",null,"The updated item"),l("td",null,[l("code",null,"keys"),e(", "),l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"(<collection>.)items.delete")]),l("td",null,"The keys of the item"),l("td",null,[l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"<system-collection>.create")]),l("td",null,"The new item"),l("td",null,[l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"<system-collection>.update")]),l("td",null,"The updated item"),l("td",null,[l("code",null,"keys"),e(", "),l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"<system-collection>.delete")]),l("td",null,"The keys of the item"),l("td",null,[l("code",null,"collection")])])])]),l("div",{class:"tip hint"},[l("div",{class:"hint-title"},"System Collections"),l("p",null,[l("code",null,"<system-collection>"),e(" should be replaced with one of the system collection names "),l("code",null,"activity"),e(", "),l("code",null,"collections"),e(", "),l("code",null,"fields"),e(", "),l("code",null,"folders"),e(", "),l("code",null,"permissions"),e(", "),l("code",null,"presets"),e(", "),l("code",null,"relations"),e(", "),l("code",null,"revisions"),e(", "),l("code",null,"roles"),e(", "),l("code",null,"settings"),e(", "),l("code",null,"users"),e(" or "),l("code",null,"webhooks"),e(".")])]),l("h3",{id:"action"},[e("Action "),l("a",{class:"header-anchor",href:"#action"},"#")]),l("p",null,"An action event executes after a certain event and receives some data related to the event."),l("p",null,"The action register function receives two parameters:"),l("ul",null,[l("li",null,"The event name"),l("li",null,"A callback function that is executed whenever the event fires.")]),l("p",null,"The callback function itself receives two parameters:"),l("ul",null,[l("li",null,"An event-specific meta object"),l("li",null,"A context object")]),l("p",null,"The context object has the following properties:"),l("ul",null,[l("li",null,[l("code",null,"database"),e(" \u2014 The current database transaction")]),l("li",null,[l("code",null,"schema"),e(" \u2014 The current API schema in use")]),l("li",null,[l("code",null,"accountability"),e(" \u2014 Information about the current user")])]),l("h4",{id:"available-events-2"},[e("Available Events "),l("a",{class:"header-anchor",href:"#available-events-2"},"#")]),l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Name"),l("th",null,"Meta")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"server.start")]),l("td",null,[l("code",null,"server")])]),l("tr",null,[l("td",null,[l("code",null,"server.stop")]),l("td",null,[l("code",null,"server")])]),l("tr",null,[l("td",null,[l("code",null,"response")]),l("td",null,[l("code",null,"request"),e(", "),l("code",null,"response"),e(", "),l("code",null,"ip"),e(", "),l("code",null,"duration"),e(", "),l("code",null,"finished")])]),l("tr",null,[l("td",null,[l("code",null,"auth.login")]),l("td",null,[l("code",null,"payload"),e(", "),l("code",null,"status"),e(", "),l("code",null,"user"),e(", "),l("code",null,"provider")])]),l("tr",null,[l("td",null,[l("code",null,"files.upload")]),l("td",null,[l("code",null,"payload"),e(", "),l("code",null,"key"),e(", "),l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"(<collection>.)items.read")]),l("td",null,[l("code",null,"payload"),e(", "),l("code",null,"query"),e(", "),l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"(<collection>.)items.create")]),l("td",null,[l("code",null,"payload"),e(", "),l("code",null,"key"),e(", "),l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"(<collection>.)items.update")]),l("td",null,[l("code",null,"payload"),e(", "),l("code",null,"keys"),e(", "),l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"(<collection>.)items.delete")]),l("td",null,[l("code",null,"payload"),e(", "),l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"<system-collection>.create")]),l("td",null,[l("code",null,"payload"),e(", "),l("code",null,"key"),e(", "),l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"<system-collection>.update")]),l("td",null,[l("code",null,"payload"),e(", "),l("code",null,"keys"),e(", "),l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"<system-collection>.delete")]),l("td",null,[l("code",null,"payload"),e(", "),l("code",null,"collection")])])])]),l("div",{class:"tip hint"},[l("div",{class:"hint-title"},"System Collections"),l("p",null,[l("code",null,"<system-collection>"),e(" should be replaced with one of the system collection names "),l("code",null,"activity"),e(", "),l("code",null,"collections"),e(", "),l("code",null,"fields"),e(", "),l("code",null,"folders"),e(", "),l("code",null,"permissions"),e(", "),l("code",null,"presets"),e(", "),l("code",null,"relations"),e(", "),l("code",null,"revisions"),e(", "),l("code",null,"roles"),e(", "),l("code",null,"settings"),e(", "),l("code",null,"users"),e(" or "),l("code",null,"webhooks"),e(".")])]),l("h3",{id:"init"},[e("Init "),l("a",{class:"header-anchor",href:"#init"},"#")]),l("p",null,"An init event executes at a certain point within the lifecycle of Directus. Init events can be used to inject logic into internal services."),l("p",null,"The init register function receives two parameters:"),l("ul",null,[l("li",null,"The event name"),l("li",null,"A callback function that is executed whenever the event fires.")]),l("p",null,"The callback function itself receives one parameters:"),l("ul",null,[l("li",null,"An event-specific meta object")]),l("h4",{id:"available-events-3"},[e("Available Events "),l("a",{class:"header-anchor",href:"#available-events-3"},"#")]),l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Name"),l("th",null,"Meta")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"cli.before")]),l("td",null,[l("code",null,"program")])]),l("tr",null,[l("td",null,[l("code",null,"cli.after")]),l("td",null,[l("code",null,"program")])]),l("tr",null,[l("td",null,[l("code",null,"app.before")]),l("td",null,[l("code",null,"app")])]),l("tr",null,[l("td",null,[l("code",null,"app.after")]),l("td",null,[l("code",null,"app")])]),l("tr",null,[l("td",null,[l("code",null,"routes.before")]),l("td",null,[l("code",null,"app")])]),l("tr",null,[l("td",null,[l("code",null,"routes.after")]),l("td",null,[l("code",null,"app")])]),l("tr",null,[l("td",null,[l("code",null,"routes.custom.before")]),l("td",null,[l("code",null,"app")])]),l("tr",null,[l("td",null,[l("code",null,"routes.custom.after")]),l("td",null,[l("code",null,"app")])]),l("tr",null,[l("td",null,[l("code",null,"middlewares.before")]),l("td",null,[l("code",null,"app")])]),l("tr",null,[l("td",null,[l("code",null,"middlewares.after")]),l("td",null,[l("code",null,"app")])])])]),l("h3",{id:"schedule"},[e("Schedule "),l("a",{class:"header-anchor",href:"#schedule"},"#")]),l("p",null,[e("A schedule event executes at certain points in time. This is supported through "),l("a",{href:"https://www.npmjs.com/package/node-cron",target:"_blank",rel:"noopener noreferrer"},[l("code",null,"node-cron")]),e(". To set this up, provide a cron statement as the first parameter to the "),l("code",null,"schedule()"),e(" function, for example "),l("code",null,"schedule('15 14 1 * *', <...>)"),e(" (at 14:15 on day-of-month 1) or "),l("code",null,"schedule('5 4 * * sun', <...>)"),e(" (at 04:05 on Sunday). See example below:")]),l("pre",null,[l("code",{class:"language-js"},[l("span",{class:"hljs-keyword"},"const"),e(" axios = "),l("span",{class:"hljs-built_in"},"require"),e("("),l("span",{class:"hljs-string"},"'axios'"),e(`);
|
|
19
|
-
|
|
20
|
-
`),l("span",{class:"hljs-built_in"},"module"),e(".exports = "),l("span",{class:"hljs-function"},[l("span",{class:"hljs-keyword"},"function"),e(),l("span",{class:"hljs-title"},"registerHook"),e("("),l("span",{class:"hljs-params"},"{ schedule }"),e(") ")]),e(`{
|
|
21
|
-
schedule(`),l("span",{class:"hljs-string"},"'*/15 * * * *'"),e(", "),l("span",{class:"hljs-keyword"},"async"),e(` () => {
|
|
22
|
-
`),l("span",{class:"hljs-keyword"},"await"),e(" axios.post("),l("span",{class:"hljs-string"},"'http://example.com/webhook'"),e(", { "),l("span",{class:"hljs-attr"},"message"),e(": "),l("span",{class:"hljs-string"},"'Another 15 minutes passed...'"),e(` });
|
|
23
|
-
});
|
|
24
|
-
};
|
|
25
|
-
`)])]),l("h2",{id:"3.-register-your-hook"},[e("3. Register your Hook "),l("a",{class:"header-anchor",href:"#3.-register-your-hook"},"#")]),l("p",null,"Each custom hook is registered to its event scope using a function with the following format:"),l("pre",null,[l("code",{class:"language-js"},[l("span",{class:"hljs-keyword"},"const"),e(" axios = "),l("span",{class:"hljs-built_in"},"require"),e("("),l("span",{class:"hljs-string"},"'axios'"),e(`);
|
|
26
|
-
|
|
27
|
-
`),l("span",{class:"hljs-built_in"},"module"),e(".exports = "),l("span",{class:"hljs-function"},[l("span",{class:"hljs-keyword"},"function"),e(),l("span",{class:"hljs-title"},"registerHook"),e("("),l("span",{class:"hljs-params"},"{ action }"),e(") ")]),e(`{
|
|
28
|
-
action(`),l("span",{class:"hljs-string"},"'items.create'"),e(", "),l("span",{class:"hljs-function"},"() =>"),e(` {
|
|
29
|
-
axios.post(`),l("span",{class:"hljs-string"},"'http://example.com/webhook'"),e(`);
|
|
30
|
-
});
|
|
31
|
-
};
|
|
32
|
-
`)])]),l("h2",{id:"4.-develop-your-custom-hook"},[e("4. Develop your Custom Hook "),l("a",{class:"header-anchor",href:"#4.-develop-your-custom-hook"},"#")]),l("blockquote",null,[l("p",null,[e("Hooks can impact performance when not carefully implemented. This is especially true for filter hooks (as these are blocking) and hooks on "),l("code",null,"read"),e(" actions, as a single request can result in a large amount of database reads.")])]),l("h3",{id:"register-function"},[e("Register Function "),l("a",{class:"header-anchor",href:"#register-function"},"#")]),l("p",null,[e("The "),l("code",null,"registerHook"),e(" function receives an object containing the type-specific register functions as the first parameter:")]),l("ul",null,[l("li",null,[l("code",null,"filter"),e(" \u2014 Listen for a filter event")]),l("li",null,[l("code",null,"action"),e(" \u2014 Listen for an action event")]),l("li",null,[l("code",null,"init"),e(" \u2014 Listen for an init event")]),l("li",null,[l("code",null,"schedule"),e(" \u2014 Execute a function at certain points in time")])]),l("p",null,"The second parameter is a context object with the following properties:"),l("ul",null,[l("li",null,[l("code",null,"services"),e(" \u2014 All API internal services")]),l("li",null,[l("code",null,"exceptions"),e(" \u2014 API exception objects that can be used for throwing \u201Cproper\u201D errors")]),l("li",null,[l("code",null,"database"),e(" \u2014 Knex instance that is connected to the current database")]),l("li",null,[l("code",null,"getSchema"),e(" \u2014 Async function that reads the full available schema for use in services")]),l("li",null,[l("code",null,"env"),e(" \u2014 Parsed environment variables")]),l("li",null,[l("code",null,"logger"),e(" \u2014 "),l("a",{href:"https://github.com/pinojs/pino",target:"_blank",rel:"noopener noreferrer"},"Pino"),e(" instance.")])]),l("h2",{id:"5.-restart-the-api"},[e("5. Restart the API "),l("a",{class:"header-anchor",href:"#5.-restart-the-api"},"#")]),l("p",null,"To deploy your hook, simply restart the API by running:"),l("pre",null,[l("code",{class:"language-bash"},`npx directus start
|
|
33
|
-
`)]),l("h2",{id:"full-example"},[e("Full Example "),l("a",{class:"header-anchor",href:"#full-example"},"#")]),l("p",null,[l("code",null,"extensions/hooks/sync-with-external/index.js"),e(":")]),l("pre",null,[l("code",{class:"language-js"},[l("span",{class:"hljs-keyword"},"const"),e(" axios = "),l("span",{class:"hljs-built_in"},"require"),e("("),l("span",{class:"hljs-string"},"'axios'"),e(`);
|
|
34
|
-
|
|
35
|
-
`),l("span",{class:"hljs-built_in"},"module"),e(".exports = "),l("span",{class:"hljs-function"},[l("span",{class:"hljs-keyword"},"function"),e(),l("span",{class:"hljs-title"},"registerHook"),e("("),l("span",{class:"hljs-params"},"{ filter, action }, { services, exceptions }"),e(") ")]),e(`{
|
|
36
|
-
`),l("span",{class:"hljs-keyword"},"const"),e(` { MailService } = services;
|
|
37
|
-
`),l("span",{class:"hljs-keyword"},"const"),e(` { ServiceUnavailableException, ForbiddenException } = exceptions;
|
|
38
|
-
|
|
39
|
-
`),l("span",{class:"hljs-comment"},"// Sync with external recipes service, cancel creation on failure"),e(`
|
|
40
|
-
filter(`),l("span",{class:"hljs-string"},"'items.create'"),e(", "),l("span",{class:"hljs-keyword"},"async"),e(` (input, { collection }, { schema }) => {
|
|
41
|
-
`),l("span",{class:"hljs-keyword"},"if"),e(" (collection !== "),l("span",{class:"hljs-string"},"'recipes'"),e(") "),l("span",{class:"hljs-keyword"},"return"),e(` input;
|
|
42
|
-
|
|
43
|
-
`),l("span",{class:"hljs-keyword"},"const"),e(" mailService = "),l("span",{class:"hljs-keyword"},"new"),e(` MailService({ schema });
|
|
44
|
-
|
|
45
|
-
`),l("span",{class:"hljs-keyword"},"try"),e(` {
|
|
46
|
-
`),l("span",{class:"hljs-keyword"},"await"),e(" axios.post("),l("span",{class:"hljs-string"},"'https://example.com/recipes'"),e(`, input);
|
|
47
|
-
`),l("span",{class:"hljs-keyword"},"await"),e(` mailService.send({
|
|
48
|
-
`),l("span",{class:"hljs-attr"},"to"),e(": "),l("span",{class:"hljs-string"},"'person@example.com'"),e(`,
|
|
49
|
-
`),l("span",{class:"hljs-attr"},"template"),e(`: {
|
|
50
|
-
`),l("span",{class:"hljs-attr"},"name"),e(": "),l("span",{class:"hljs-string"},"'item-created'"),e(`,
|
|
51
|
-
`),l("span",{class:"hljs-attr"},"data"),e(`: {
|
|
52
|
-
`),l("span",{class:"hljs-attr"},"collection"),e(`: collection,
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
});
|
|
56
|
-
} `),l("span",{class:"hljs-keyword"},"catch"),e(` (error) {
|
|
57
|
-
`),l("span",{class:"hljs-keyword"},"throw"),e(),l("span",{class:"hljs-keyword"},"new"),e(` ServiceUnavailableException(error);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
input.syncedWithExample = `),l("span",{class:"hljs-literal"},"true"),e(`;
|
|
61
|
-
|
|
62
|
-
`),l("span",{class:"hljs-keyword"},"return"),e(` input;
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
`),l("span",{class:"hljs-comment"},"// Force everything to be admin-only at all times"),e(`
|
|
66
|
-
`),l("span",{class:"hljs-keyword"},"const"),e(" adminOnly = "),l("span",{class:"hljs-keyword"},"async"),e(` (_, { accountability }) => {
|
|
67
|
-
`),l("span",{class:"hljs-keyword"},"if"),e(" (accountability.admin !== "),l("span",{class:"hljs-literal"},"true"),e(") "),l("span",{class:"hljs-keyword"},"throw"),e(),l("span",{class:"hljs-keyword"},"new"),e(` ForbiddenException();
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
action(`),l("span",{class:"hljs-string"},"'items.create'"),e(`, adminOnly);
|
|
71
|
-
action(`),l("span",{class:"hljs-string"},"'items.read'"),e(`, adminOnly);
|
|
72
|
-
action(`),l("span",{class:"hljs-string"},"'items.update'"),e(`, adminOnly);
|
|
73
|
-
action(`),l("span",{class:"hljs-string"},"'items.delete'"),e(`, adminOnly);
|
|
74
|
-
};
|
|
75
|
-
`)])])],-1),m={setup(i,{expose:t}){const n={title:"Custom API Hooks",modularExtension:!0};return t({frontmatter:n}),(d,h)=>{const s=o("DocsWrapper");return a(),c(s,{frontmatter:n},{default:u(()=>[r]),_:1})}}};export{m as default};
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
var ue=Object.defineProperty,ce=Object.defineProperties;var de=Object.getOwnPropertyDescriptors;var X=Object.getOwnPropertySymbols;var pe=Object.prototype.hasOwnProperty,_e=Object.prototype.propertyIsEnumerable;var Z=(e,t,n)=>t in e?ue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,J=(e,t)=>{for(var n in t||(t={}))pe.call(t,n)&&Z(e,n,t[n]);if(X)for(var n of X(t))_e.call(t,n)&&Z(e,n,t[n]);return e},Y=(e,t)=>ce(e,de(t));import{o as S,y as j,B as $,r as U,L as R,w as x,p as s,Q as q,S as D,q as a,C as m,v as u,t as g,u as c,K as B,aD as ve,M as h,F as P,J as I,W as ee,D as C,E as k,l as W,I as G,av as fe,al as me,P as M,X as te,aF as ne,z as ge,ah as ye,O as $e,U as be,V as he,Z as ke,_ as Se}from"./vendor.299bc11c.js";import{u as we,a as oe,_ as w,b as se,g as ae,c as K,M as Ie,t as Oe,d as Le,e as Be,f as Ce,h as H,i as re,j as Ae,H as Ve,k as Ue}from"../index.0f7650cb.js";import"./use-sync.da76e524.js";const Me=S({setup(){const{t:e}=j(),t=we(),n=oe(),r=$(()=>{var _;return n.settings===null||!((_=n.settings)==null?void 0:_.project_logo)?null:se(ae()+`assets/${n.settings.project_logo}`)}),p=U(!1),{queueHasItems:l}=R(t);x(()=>l.value,_=>{_&&(p.value=!0)});const i=$(()=>{var _;return(_=n.settings)==null?void 0:_.project_url}),o=$(()=>{var _;return((_=n.settings)==null?void 0:_.project_url)?e("view_project"):!1});return{customLogoPath:r,showLoader:p,stopSpinnerIfQueueIsEmpty:d,url:i,urlTooltip:o};function d(){l.value===!1&&(p.value=!1)}}}),Ne=["src"];function je(e,t,n,r,p,l){const i=s("v-progress-linear"),o=q("tooltip");return D((a(),m(ee(e.url?"a":"div"),{href:e.url,target:e.url?"_blank":void 0,rel:e.url?"noopener noreferrer":void 0,class:I(["module-bar-logo",{loading:e.showLoader}])},{default:u(()=>[e.customLogoPath?(a(),g(P,{key:0},[c(ve,{name:"fade"},{default:u(()=>[e.showLoader?(a(),m(i,{key:0,indeterminate:"",rounded:"",onAnimationiteration:e.stopSpinnerIfQueueIsEmpty},null,8,["onAnimationiteration"])):B("",!0)]),_:1}),h("img",{class:"custom-logo",src:e.customLogoPath,alt:"Project Logo"},null,8,Ne)],64)):(a(),g("div",{key:1,class:I(["logo",{running:e.showLoader}]),onAnimationiteration:t[0]||(t[0]=(...d)=>e.stopSpinnerIfQueueIsEmpty&&e.stopSpinnerIfQueueIsEmpty(...d))},null,34))]),_:1},8,["href","target","rel","class"])),[[o,e.urlTooltip,void 0,{right:!0}]])}var De=w(Me,[["render",je],["__scopeId","data-v-a98d38ac"]]);const Te=S({setup(){const{t:e}=j(),t=K(),n=U(!1),r=$(()=>t.currentUser===null||t.currentUser.avatar===null?null:se(ae()+`assets/${t.currentUser.avatar.id}?key=system-medium-cover`)),p=$(()=>{var d;return`/users/${(d=t.currentUser)==null?void 0:d.id}`}),l=$(()=>"/logout"),i=t.fullName;return{t:e,userFullName:i,avatarURL:r,userProfileLink:p,signOutActive:n,signOutLink:l}}}),Ee=["src","alt"];function Fe(e,t,n,r,p,l){const i=s("v-icon"),o=s("v-button"),d=s("v-card-title"),_=s("v-card-actions"),y=s("v-card"),v=s("v-dialog"),O=s("v-avatar"),f=s("router-link"),b=s("v-hover"),V=q("tooltip");return a(),m(b,{class:"module-bar-avatar"},{default:u(({hover:L})=>[c(v,{modelValue:e.signOutActive,"onUpdate:modelValue":t[1]||(t[1]=A=>e.signOutActive=A),onEsc:t[2]||(t[2]=A=>e.signOutActive=!1)},{activator:u(({on:A})=>[D(c(o,{tile:"",icon:"","x-large":"",class:I([{show:L},"sign-out"]),onClick:A},{default:u(()=>[c(i,{name:"logout"})]),_:2},1032,["class","onClick"]),[[V,e.t("sign_out"),void 0,{right:!0}]])]),default:u(()=>[c(y,null,{default:u(()=>[c(d,null,{default:u(()=>[C(k(e.t("sign_out_confirm")),1)]),_:1}),c(_,null,{default:u(()=>[c(o,{secondary:"",onClick:t[0]||(t[0]=A=>e.signOutActive=!e.signOutActive)},{default:u(()=>[C(k(e.t("cancel")),1)]),_:1}),c(o,{to:e.signOutLink},{default:u(()=>[C(k(e.t("sign_out")),1)]),_:1},8,["to"])]),_:1})]),_:1})]),_:2},1032,["modelValue"]),c(f,{to:e.userProfileLink},{default:u(()=>[D(c(O,{tile:"",large:"",class:I({"no-avatar":!e.avatarURL})},{default:u(()=>[e.avatarURL?(a(),g("img",{key:0,src:e.avatarURL,alt:e.userFullName,class:"avatar-image"},null,8,Ee)):(a(),m(i,{key:1,name:"account_circle",outline:""}))]),_:1},8,["class"]),[[V,e.userFullName,void 0,{right:!0}]])]),_:1},8,["to"])]),_:1})}var Re=w(Te,[["render",Fe],["__scopeId","data-v-4fec1dae"]]);const qe=S({components:{ModuleBarLogo:De,ModuleBarAvatar:Re},setup(){const e=oe(),{modules:t}=Le(),n=$(()=>t.value.map(p=>p.id));return{modules:$(()=>{var p;return e.settings?((p=e.settings.module_bar)!=null?p:Ie).filter(l=>l.type==="link"?!0:l.enabled&&n.value.includes(l.id)).map(l=>{if(l.type==="link"){const o=W.exports.omit(l,["url"]);return l.url.startsWith("/")?o.to=l.url:o.href=l.url,Oe(o)}const i=t.value.find(o=>o.id===l.id);return Y(J(J({},l),t.value.find(o=>o.id===l.id)),{to:`/${i.id}`})}):[]})}}}),Pe={class:"module-bar"},Ge={class:"modules"};function He(e,t,n,r,p,l){const i=s("module-bar-logo"),o=s("v-icon"),d=s("v-button"),_=s("module-bar-avatar"),y=q("tooltip");return a(),g("div",Pe,[c(i),h("div",Ge,[(a(!0),g(P,null,G(e.modules,v=>D((a(),m(d,{key:v.id,icon:"","x-large":"",to:v.to,href:v.href,tile:"",style:fe(v.color?{"--v-button-color-active":v.color}:null)},{default:u(()=>[c(o,{name:v.icon,outline:""},null,8,["name"])]),_:2},1032,["to","href","style"])),[[y,v.name,void 0,{right:!0}]])),128))]),c(_)])}var Qe=w(qe,[["render",He],["__scopeId","data-v-53381a9e"]]);const ze=S({props:{sidebarOpen:{type:Boolean,default:!1}},setup(e){const t=U([]),n=U(!1);return x(()=>e.sidebarOpen,async r=>{r===!1?t.value=[]:(n.value=!0,await me(),n.value=!1)}),{openDetail:t,mandatory:n}}});function Je(e,t,n,r,p,l){const i=s("v-item-group");return a(),m(i,{modelValue:e.openDetail,"onUpdate:modelValue":t[0]||(t[0]=o=>e.openDetail=o),class:"sidebar-detail-group",scope:"sidebar-detail",mandatory:e.mandatory},{default:u(()=>[M(e.$slots,"default",{},void 0,!0)]),_:3},8,["modelValue","mandatory"])}var We=w(ze,[["render",Je],["__scopeId","data-v-ebb6371e"]]),T=1e3,E=T*60,F=E*60,N=F*24,Ke=N*7,Xe=N*365.25,Q=function(e,t){t=t||{};var n=typeof e;if(n==="string"&&e.length>0)return Ze(e);if(n==="number"&&isFinite(e))return t.long?xe(e):Ye(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function Ze(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!!t){var n=parseFloat(t[1]),r=(t[2]||"ms").toLowerCase();switch(r){case"years":case"year":case"yrs":case"yr":case"y":return n*Xe;case"weeks":case"week":case"w":return n*Ke;case"days":case"day":case"d":return n*N;case"hours":case"hour":case"hrs":case"hr":case"h":return n*F;case"minutes":case"minute":case"mins":case"min":case"m":return n*E;case"seconds":case"second":case"secs":case"sec":case"s":return n*T;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function Ye(e){var t=Math.abs(e);return t>=N?Math.round(e/N)+"d":t>=F?Math.round(e/F)+"h":t>=E?Math.round(e/E)+"m":t>=T?Math.round(e/T)+"s":e+"ms"}function xe(e){var t=Math.abs(e);return t>=N?z(e,t,N,"day"):t>=F?z(e,t,F,"hour"):t>=E?z(e,t,E,"minute"):t>=T?z(e,t,T,"second"):e+" ms"}function z(e,t,n,r){var p=t>=n*1.5;return Math.round(e/n)+" "+r+(p?"s":"")}const et=S({setup(){const{t:e}=j(),t=Be(),n=$(()=>{const o=W.exports.sortBy(t.latency,["timestamp"]);return o[o.length-1]}),r=$(()=>{if(!t.latency||t.latency.length===0)return 0;const o=W.exports.sortBy(t.latency,["timestamp"]),d=o.slice(Math.max(o.length-5,0));let _=0;for(const{latency:y}of d)_+=y;return Math.round(_/d.length)}),p=$(()=>r.value<=250?4:r.value>250&&r.value<=500?3:r.value>500&&r.value<=750?2:1),l=$(()=>{switch(p.value){case 4:return`${e("connection_excellent")}
|
|
2
|
-
(${Q(r.value)} ${e("latency")})`;case 3:return`${e("connection_good")}
|
|
3
|
-
(${Q(r.value)} ${e("latency")})`;case 2:return`${e("connection_fair")}
|
|
4
|
-
(${Q(r.value)} ${e("latency")})`;case 1:return`${e("connection_poor")}
|
|
5
|
-
(${Q(r.value)} ${e("latency")})`;default:return null}});return{icon:$(()=>{switch(p.value){case 4:return"signal_wifi_4_bar";case 3:return"signal_wifi_3_bar";case 2:return"signal_wifi_2_bar";case 1:return"signal_wifi_1_bar";default:return null}}),lastLatency:n,latencyTooltip:l}}}),tt={class:"latency-indicator"};function nt(e,t,n,r,p,l){const i=s("v-progress-circular"),o=s("v-icon"),d=q("tooltip");return D((a(),g("div",tt,[e.lastLatency?(a(),m(o,{key:1,name:e.icon},null,8,["name"])):(a(),m(i,{key:0,indeterminate:""}))],512)),[[d,e.latencyTooltip,void 0,{bottom:!0,end:!0}]])}var ot=w(et,[["render",nt],["__scopeId","data-v-2cfd5c8b"]]);const st=S({components:{LatencyIndicator:ot},setup(){const e=Ce();return{name:$(()=>{var n,r;return(r=(n=e.info)==null?void 0:n.project)==null?void 0:r.project_name})}}}),at={class:"project-info"},rt={class:"name"};function it(e,t,n,r,p,l){const i=s("latency-indicator");return a(),g("div",at,[c(i),h("span",rt,k(e.name),1)])}var lt=w(st,[["render",it],["__scopeId","data-v-08488eb6"]]);const ut=S({props:{id:{type:String,required:!0},title:{type:String,required:!0},text:{type:String,default:null},icon:{type:String,default:null},type:{type:String,default:"info",validator:e=>["info","success","warning","error"].includes(e)},tail:{type:Boolean,default:!1},dense:{type:Boolean,default:!1},showClose:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},progress:{type:Number,default:void 0}},setup(e){const t=H();return{close:n};function n(){e.showClose===!0&&t.remove(e.id)}}}),ct={key:0,class:"icon"},dt={class:"content"},pt={class:"title selectable"},_t={key:0,class:"text selectable"};function vt(e,t,n,r,p,l){const i=s("v-progress-circular"),o=s("v-icon");return a(),g("div",{class:I(["notification-item",[e.type,{tail:e.tail,dense:e.dense}]]),onClick:t[0]||(t[0]=(...d)=>e.close&&e.close(...d))},[e.loading||e.progress||e.icon?(a(),g("div",ct,[e.loading?(a(),m(i,{key:0,indeterminate:"",small:""})):e.progress?(a(),m(i,{key:1,small:"",value:e.progress},null,8,["value"])):(a(),m(o,{key:2,name:e.icon},null,8,["name"]))])):B("",!0),h("div",dt,[h("p",pt,k(e.title),1),e.text?(a(),g("p",_t,k(e.text),1)):B("",!0)]),e.showClose?(a(),m(o,{key:1,name:"close",clickable:"",class:"close",onClick:e.close},null,8,["onClick"])):B("",!0)],2)}var ie=w(ut,[["render",vt],["__scopeId","data-v-43553e80"]]);const ft=S({components:{NotificationItem:ie},props:{dense:{type:Boolean,default:!1}},setup(){const e=H();return{queue:R(e).queue}}});function mt(e,t,n,r,p,l){const i=s("notification-item");return a(),m(ne,{class:"notifications-group",name:"slide-fade",tag:"div"},{default:u(()=>[M(e.$slots,"default",{},void 0,!0),(a(!0),g(P,null,G(e.queue,(o,d)=>(a(),m(i,te({key:o.id},o,{tail:d===e.queue.length-1,dense:e.dense,"show-close":o.persist===!0&&o.closeable!==!1}),null,16,["tail","dense","show-close"]))),128))]),_:3})}var gt=w(ft,[["render",mt],["__scopeId","data-v-31bc6bbb"]]);const yt=S({props:{to:{type:String,default:null},icon:{type:String,default:"box"},active:{type:Boolean,default:!1}},emits:["click"],setup(){const e=re(),{sidebarOpen:t}=R(e);return{sidebarOpen:t}}}),$t={class:"icon"},bt={key:0,class:"title"};function ht(e,t,n,r,p,l){const i=s("v-icon");return a(),m(ee(e.to?"router-link":"button"),{class:I(["sidebar-button",{active:e.active}]),onClick:t[0]||(t[0]=o=>e.$emit("click",o))},{default:u(()=>[h("div",$t,[c(i,{name:e.icon,outline:""},null,8,["name"])]),e.sidebarOpen?(a(),g("div",bt,[M(e.$slots,"default",{},void 0,!0)])):B("",!0)]),_:3},8,["class"])}var kt=w(yt,[["render",ht],["__scopeId","data-v-3f4d4d50"]]);const St=S({components:{SidebarButton:kt,NotificationItem:ie},props:{sidebarOpen:{type:Boolean,default:!1},modelValue:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(){const{t:e}=j(),t=H();return{t:e,lastFour:t.lastFour}}}),wt={class:"notifications-preview"},It={key:0,class:"inline"},Ot={class:"padding-box"};function Lt(e,t,n,r,p,l){const i=s("router-link"),o=s("notification-item"),d=s("transition-expand"),_=s("sidebar-button"),y=q("tooltip");return a(),g("div",wt,[c(d,{tag:"div"},{default:u(()=>[e.modelValue?(a(),g("div",It,[h("div",Ot,[c(i,{class:I(["link",{"has-items":e.lastFour.length>0}]),to:"/notifications"},{default:u(()=>[C(k(e.t("show_all_activity")),1)]),_:1},8,["class"]),c(ne,{tag:"div",name:"notification",class:"transition"},{default:u(()=>[(a(!0),g(P,null,G(e.lastFour,v=>(a(),m(o,te({key:v.id},v),null,16))),128))]),_:1})])])):B("",!0)]),_:1}),D(c(_,{active:e.modelValue,class:"toggle",icon:"notifications",onClick:t[0]||(t[0]=v=>e.$emit("update:modelValue",!e.modelValue))},{default:u(()=>[C(k(e.t("notifications")),1)]),_:1},8,["active"]),[[y,e.t("notifications"),void 0,{left:!0}]])])}var Bt=w(St,[["render",Lt],["__scopeId","data-v-58468042"]]);const Ct=S({setup(){const{t:e}=j(),{parsedInfo:t}=Ae(),n=H(),r=K(),p=$(()=>n.dialogs);return{t:e,notifications:p,admin:r.isAdmin,done:i,getGitHubIssueLink:l};function l(o,d){var y,v,O,f;const _=`<!-- Please put a detailed explanation of the problem here. -->
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
### Project details
|
|
10
|
-
Directus Version: ${(y=t.value)==null?void 0:y.directus.version}
|
|
11
|
-
Environment: production
|
|
12
|
-
OS: ${(v=t.value)==null?void 0:v.os.type} ${(O=t.value)==null?void 0:O.os.version}
|
|
13
|
-
Node: ${(f=t.value)==null?void 0:f.node.version}
|
|
14
|
-
|
|
15
|
-
### Error
|
|
16
|
-
|
|
17
|
-
Title: ${d.title||"none"}
|
|
18
|
-
Message: ${d.text||"none"}
|
|
19
|
-
|
|
20
|
-
<details>
|
|
21
|
-
<summary>Stack Trace</summary>
|
|
22
|
-
<pre>
|
|
23
|
-
${JSON.stringify(d.error,Object.getOwnPropertyNames(d.error),2)}
|
|
24
|
-
</pre>
|
|
25
|
-
</details>
|
|
26
|
-
`;return`https://github.com/directus/directus/issues/new?body=${encodeURIComponent(_)}`}function i(o){n.remove(o)}}}),At={class:"notification-dialogs"},Vt=["href"];function Ut(e,t,n,r,p,l){const i=s("v-card-title"),o=s("v-error"),d=s("v-card-text"),_=s("v-button"),y=s("v-card-actions"),v=s("v-card"),O=s("v-dialog");return a(),g("div",At,[(a(!0),g(P,null,G(e.notifications,f=>(a(),m(O,{key:f.id,"model-value":!0,persist:""},{default:u(()=>[c(v,{class:I([f.type])},{default:u(()=>[c(i,null,{default:u(()=>[C(k(f.title),1)]),_:2},1024),f.text?(a(),m(d,{key:0},{default:u(()=>[C(k(f.text)+" ",1),f.error?(a(),m(o,{key:0,error:f.error},null,8,["error"])):B("",!0)]),_:2},1024)):B("",!0),c(y,null,{default:u(()=>[f.type==="error"&&e.admin&&f.code==="UNKNOWN"?(a(),m(_,{key:0,secondary:""},{default:u(()=>[h("a",{target:"_blank",href:e.getGitHubIssueLink(f.id,f)},k(e.t("report_error")),9,Vt)]),_:2},1024)):B("",!0),c(_,{onClick:b=>e.done(f.id)},{default:u(()=>[C(k(e.t("dismiss")),1)]),_:2},1032,["onClick"])]),_:2},1024)]),_:2},1032,["class"])]),_:2},1024))),128))])}var Mt=w(Ct,[["render",Ut],["__scopeId","data-v-bb61b36a"]]);const Nt=S({components:{ModuleBar:Qe,SidebarDetailGroup:We,HeaderBar:Ve,ProjectInfo:lt,NotificationsGroup:gt,NotificationsPreview:Bt,NotificationDialogs:Mt},props:{title:{type:String,default:null},smallHeader:{type:Boolean,default:!1}},setup(e){const{t}=j(),n=ge(),{title:r}=R(e),p=U(!1),l=U(),i=K(),o=re(),d=$(()=>{var b,V;return i.currentUser?((V=(b=i.currentUser)==null?void 0:b.role)==null?void 0:V.app_access)||!1:!0}),_=U(!1),{sidebarOpen:y,fullScreen:v}=R(o),O=$(()=>{var b;return((b=i.currentUser)==null?void 0:b.theme)||"auto"});return ye("main-element",l),n.afterEach(async()=>{var b;(b=l.value)==null||b.scrollTo({top:0}),v.value=!1}),Ue(r),{t,navOpen:p,contentEl:l,theme:O,sidebarOpen:y,openSidebar:f,notificationsPreviewActive:_,appAccess:d,fullScreen:v};function f(b){b.target&&b.target.classList.contains("close")===!1&&(y.value=!0)}}}),jt=e=>(ke("data-v-2451ccc8"),e=e(),Se(),e),Dt=C("Switch User"),Tt={class:"module-nav alt-colors"},Et={class:"module-nav-content"},Ft={id:"main-content",ref:"contentEl",class:"content"},Rt={class:"flex-container"},qt=jt(()=>h("div",{class:"spacer"},null,-1));function Pt(e,t,n,r,p,l){const i=s("v-button"),o=s("v-info"),d=s("module-bar"),_=s("project-info"),y=s("header-bar"),v=s("sidebar-detail-group"),O=s("notifications-preview"),f=s("v-overlay"),b=s("notifications-group"),V=s("notification-dialogs");return e.appAccess===!1?(a(),m(o,{key:0,center:"",title:e.t("no_app_access"),type:"danger",icon:"block"},{append:u(()=>[c(i,{to:"/logout"},{default:u(()=>[Dt]),_:1})]),default:u(()=>[C(k(e.t("no_app_access_copy"))+" ",1)]),_:1},8,["title"])):(a(),g("div",{key:1,class:I(["private-view",{theme:e.theme,"full-screen":e.fullScreen}])},[h("aside",{id:"navigation",role:"navigation","aria-label":"Module Navigation",class:I({"is-open":e.navOpen})},[c(d),h("div",Tt,[c(_),h("div",Et,[M(e.$slots,"navigation",{},void 0,!0)])])],2),h("div",Ft,[c(y,{small:e.smallHeader,"show-sidebar-toggle":"",title:e.title,"onToggle:sidebar":t[0]||(t[0]=L=>e.sidebarOpen=!e.sidebarOpen),onPrimary:t[1]||(t[1]=L=>e.navOpen=!e.navOpen)},$e({_:2},[G(e.$slots,(L,A)=>({name:A,fn:u(le=>[M(e.$slots,A,be(he(le)),void 0,!0)])}))]),1032,["small","title"]),h("main",null,[M(e.$slots,"default",{},void 0,!0)])],512),h("aside",{id:"sidebar",role:"contentinfo",class:I(["alt-colors",{"is-open":e.sidebarOpen}]),"aria-label":"Module Sidebar",onClick:t[3]||(t[3]=(...L)=>e.openSidebar&&e.openSidebar(...L))},[h("div",Rt,[c(v,{"sidebar-open":e.sidebarOpen},{default:u(()=>[M(e.$slots,"sidebar",{},void 0,!0)]),_:3},8,["sidebar-open"]),qt,c(O,{modelValue:e.notificationsPreviewActive,"onUpdate:modelValue":t[2]||(t[2]=L=>e.notificationsPreviewActive=L),"sidebar-open":e.sidebarOpen},null,8,["modelValue","sidebar-open"])])],2),c(f,{class:"nav-overlay",active:e.navOpen,onClick:t[4]||(t[4]=L=>e.navOpen=!1)},null,8,["active"]),c(f,{class:"sidebar-overlay",active:e.sidebarOpen,onClick:t[5]||(t[5]=L=>e.sidebarOpen=!1)},null,8,["active"]),e.notificationsPreviewActive===!1?(a(),m(b,{key:0,dense:e.sidebarOpen===!1},null,8,["dense"])):B("",!0),c(V)],2))}var Jt=w(Nt,[["render",Pt],["__scopeId","data-v-2451ccc8"]]);export{Jt as PrivateView,Jt as default};
|