@directus/app 9.12.2 → 9.14.1
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/assets/accounts.40ab36c1.js +1 -0
- package/dist/assets/{active-line.ff3bc705.js → active-line.b531d8e7.js} +1 -1
- package/dist/assets/activity-log.9449feec.js +1 -0
- package/dist/assets/activity.fbd319d5.js +80 -0
- package/dist/assets/{apl.cc4825c6.js → apl.091e05c0.js} +1 -1
- package/dist/assets/ar-SA.215069dc.js +1 -0
- package/dist/assets/architecture.9e90b6f3.js +1 -0
- package/dist/assets/{asciiarmor.30bbdfc8.js → asciiarmor.72b1d474.js} +1 -1
- package/dist/assets/{asn.1.499e838e.js → asn.1.64b438d1.js} +1 -1
- package/dist/assets/{asterisk.a2fa7dc3.js → asterisk.2d23826f.js} +1 -1
- package/dist/assets/authentication.bc20bce5.js +73 -0
- package/dist/assets/{autorefresh.d36f34c8.js → autorefresh.65071be2.js} +1 -1
- package/dist/assets/aws.6652a1fd.js +1 -0
- package/dist/assets/backing-directus.02c28d29.js +1 -0
- package/dist/assets/bg-BG.9288ea83.js +1 -0
- package/dist/assets/bn-IN.4127b7a4.js +1 -0
- package/dist/assets/{br-FR.1ad76918.js → br-FR.d3564938.js} +1 -1
- package/dist/assets/{brainfuck.dab31c46.js → brainfuck.cb084ebc.js} +1 -1
- package/dist/assets/{ca-ES.365a1fc4.js → ca-ES.f3dfdef6.js} +1 -1
- package/dist/assets/cli.6e61515e.js +19 -0
- package/dist/assets/cli.863ef0d2.js +4 -0
- package/dist/assets/{clike.7aacd908.js → clike.c67024f2.js} +1 -1
- package/dist/assets/{clojure.c8d9937a.js → clojure.4409f83f.js} +1 -1
- package/dist/assets/cloudron.a348537b.js +1 -0
- package/dist/assets/{cmake.e0408576.js → cmake.2f7d66e8.js} +1 -1
- package/dist/assets/{cobol.86241640.js → cobol.1d3d945c.js} +1 -1
- package/dist/assets/codebase-overview.b46635f9.js +1 -0
- package/dist/assets/{coffeescript.6090d9e8.js → coffeescript.7dbfeb38.js} +1 -1
- package/dist/assets/collections.60e4b448.js +2 -0
- package/dist/assets/collections.80e4a52c.js +106 -0
- package/dist/assets/{commonlisp.eb3c5619.js → commonlisp.79d346a3.js} +1 -1
- package/dist/assets/config-options.8e2d8e17.js +138 -0
- package/dist/assets/content.003d7d7c.js +1 -0
- package/dist/assets/creating-extensions.9a98925a.js +11 -0
- package/dist/assets/{crystal.01db8e68.js → crystal.6f97295f.js} +1 -1
- package/dist/assets/cs-CZ.a3c83b73.js +1 -0
- package/dist/assets/{css.b1894218.js → css.87d5fc8d.js} +1 -1
- package/dist/assets/{cypher.c0cbf899.js → cypher.b46e268d.js} +1 -1
- package/dist/assets/{d.54d4201d.js → d.0277a0cc.js} +1 -1
- package/dist/assets/{da-DK.88f53a7d.js → da-DK.3c379038.js} +1 -1
- package/dist/assets/{dart.2218881c.js → dart.fd756766.js} +1 -1
- package/dist/assets/data-model.086edd1e.js +1 -0
- package/dist/assets/data-sharing.27afa5ee.js +1 -0
- package/dist/assets/de-DE.350023db.js +1 -0
- package/dist/assets/{diff.d7f03886.js → diff.1ed63843.js} +1 -1
- package/dist/assets/digitalocean-app-platform.aff2a50b.js +3 -0
- package/dist/assets/display-templates.d8e93a19.js +1 -0
- package/dist/assets/displays.e528abde.js +49 -0
- package/dist/assets/{django.913379d3.js → django.afa30018.js} +1 -1
- package/dist/assets/{docker.e1bb4205.js → docker.6f265c46.js} +7 -7
- package/dist/assets/{dockerfile.9c7cf88b.js → dockerfile.91c6378e.js} +1 -1
- package/dist/assets/documentation.ad1fdaf2.js +1 -0
- package/dist/assets/{dtd.dbc97bdb.js → dtd.8b391952.js} +1 -1
- package/dist/assets/{dylan.0c2df43b.js → dylan.5532ec69.js} +1 -1
- package/dist/assets/{ebnf.4c778620.js → ebnf.f179e348.js} +1 -1
- package/dist/assets/{ecl.778611ac.js → ecl.a37bdc2f.js} +1 -1
- package/dist/assets/{eiffel.2a73cd14.js → eiffel.883e1bfb.js} +1 -1
- package/dist/assets/{el-GR.98199dde.js → el-GR.103ebf8d.js} +1 -1
- package/dist/assets/{elm.90002323.js → elm.c40484aa.js} +1 -1
- package/dist/assets/email-templates.2bdb87a6.js +2 -0
- package/dist/assets/{en-CA.58d818b8.js → en-CA.9ad3a3ab.js} +1 -1
- package/dist/assets/{en-GB.74320d21.js → en-GB.c55341c7.js} +1 -1
- package/dist/assets/endpoints.2c9172db.js +27 -0
- package/dist/assets/{erlang.c8e3989e.js → erlang.60963eb0.js} +1 -1
- package/dist/assets/es-419.10094709.js +1 -0
- package/dist/assets/es-CL.7f44ec7c.js +1 -0
- package/dist/assets/es-ES.3ff9088e.js +1 -0
- package/dist/assets/es-MX.17370b17.js +1 -0
- package/dist/assets/{et-EE.9e35920e.js → et-EE.fb46a361.js} +1 -1
- package/dist/assets/extensions.8d3df212.js +12 -0
- package/dist/assets/{fa-IR.f3dc75f9.js → fa-IR.b864f77c.js} +1 -1
- package/dist/assets/{factor.a2db9c26.js → factor.6c5ee333.js} +1 -1
- package/dist/assets/faq.63c79c18.js +2 -0
- package/dist/assets/{fcl.02d85986.js → fcl.8e18cfdc.js} +1 -1
- package/dist/assets/{fi-FI.42afdce0.js → fi-FI.14f31cb4.js} +1 -1
- package/dist/assets/fields.715d4591.js +135 -0
- package/dist/assets/file-library.a4de4015.js +1 -0
- package/dist/assets/files.7c2ccfe2.js +189 -0
- package/dist/assets/filter-rules.056b97be.js +76 -0
- package/dist/assets/filters.2cb82fd9.js +1 -0
- package/dist/assets/flows.38f60cc8.js +172 -0
- package/dist/assets/flows.f378a262.js +15 -0
- package/dist/assets/{fo-FO.ffe478b0.js → fo-FO.cc444b75.js} +1 -1
- package/dist/assets/folders.fa66a5ce.js +132 -0
- package/dist/assets/{forth.725698ea.js → forth.5d8db187.js} +1 -1
- package/dist/assets/{fortran.e9ba7b47.js → fortran.ac24d46b.js} +1 -1
- package/dist/assets/{fr-CA.caa3fc8d.js → fr-CA.0e824ae4.js} +1 -1
- package/dist/assets/fr-FR.77a5277c.js +1 -0
- package/dist/assets/{gas.25b17a72.js → gas.f99de41f.js} +1 -1
- package/dist/assets/gcp.6c61b39e.js +60 -0
- package/dist/assets/{gfm.a7b6e273.js → gfm.c3250bc4.js} +1 -1
- package/dist/assets/{gherkin.1db310b6.js → gherkin.dd3614b2.js} +1 -1
- package/dist/assets/github-ci.04483301.js +2 -0
- package/dist/assets/glossary.485603d9.js +1 -0
- package/dist/assets/glossary.6efd77ad.js +1 -0
- package/dist/assets/{go.a0c64ca2.js → go.18ea1afe.js} +1 -1
- package/dist/assets/{groovy.b0ac2a1f.js → groovy.d1f3a61a.js} +1 -1
- package/dist/assets/{haml.233c9608.js → haml.a346df44.js} +1 -1
- package/dist/assets/{handlebars.b13fc00f.js → handlebars.a4eff81f.js} +1 -1
- package/dist/assets/{haskell-literate.af8f88ee.js → haskell-literate.57a5243e.js} +1 -1
- package/dist/assets/{haskell.adcf73db.js → haskell.3acf2710.js} +1 -1
- package/dist/assets/{haxe.f1a75c2e.js → haxe.bdf5968b.js} +1 -1
- package/dist/assets/{hi-IN.36e79faa.js → hi-IN.c0703db5.js} +1 -1
- package/dist/assets/hooks.f7efe9af.js +60 -0
- package/dist/assets/{hr-HR.b1e41c07.js → hr-HR.467388ee.js} +1 -1
- package/dist/assets/{htmlembedded.145e9718.js → htmlembedded.03cf45db.js} +1 -1
- package/dist/assets/{htmlmixed.6794685c.js → htmlmixed.987f61e9.js} +1 -1
- package/dist/assets/{http.5bb61ef1.js → http.a4c95466.js} +1 -1
- package/dist/assets/{hu-HU.9c7ec38f.js → hu-HU.47ab36e8.js} +1 -1
- package/dist/assets/id-ID.8089647c.js +1 -0
- package/dist/assets/{idl.f52ce6c3.js → idl.2fcbfa33.js} +1 -1
- package/dist/assets/iis.e068f41a.js +24 -0
- package/dist/assets/import-export.d334c127.js +2 -0
- package/dist/assets/{index.133de9ba.entry.js → index.02dcddad.entry.js} +222 -226
- package/dist/assets/index.087465cd.css +1 -0
- package/dist/assets/index.4254793b.js +26 -0
- package/dist/assets/{index.895a297f.css → index.6f497914.css} +1 -1
- package/dist/assets/{input-rich-text-html.817ccf8b.css → input-rich-text-html.172a38cb.css} +1 -1
- package/dist/assets/{input-rich-text-html.e9e92552.js → input-rich-text-html.75413785.js} +47 -47
- package/dist/assets/insights.b3ba896c.js +2 -0
- package/dist/assets/installation.2025f88b.js +1 -0
- package/dist/assets/interfaces.606c790c.js +46 -0
- package/dist/assets/introduction.41a72fb0.js +1 -0
- package/dist/assets/introduction.527c3465.js +4 -0
- package/dist/assets/introduction.5566b96e.js +90 -0
- package/dist/assets/introduction.ecd17b88.js +1 -0
- package/dist/assets/it-IT.58422a56.js +1 -0
- package/dist/assets/items.d1f658a9.js +1 -0
- package/dist/assets/items.d9c6a0b4.js +136 -0
- package/dist/assets/ja-JP.84597497.js +1 -0
- package/dist/assets/{javascript-hint.d8a99d8e.js → javascript-hint.db799360.js} +1 -1
- package/dist/assets/{javascript.357d6ab4.js → javascript.46c46918.js} +1 -1
- package/dist/assets/{jinja2.64181acd.js → jinja2.71e29364.js} +1 -1
- package/dist/assets/{jsx.ba14fb9d.js → jsx.9ae3ca09.js} +1 -1
- package/dist/assets/{julia.06a9ee42.js → julia.8b46f23e.js} +1 -1
- package/dist/assets/{ko-KR.5a129780.js → ko-KR.9056bd31.js} +1 -1
- package/dist/assets/{ku-TR.9eee23ff.js → ku-TR.3a07a57e.js} +1 -1
- package/dist/assets/layouts.0aa8d645.js +54 -0
- package/dist/assets/layouts.14b157dc.js +1 -0
- package/dist/assets/{livescript.687f6ca6.js → livescript.1c767a4c.js} +1 -1
- package/dist/assets/localization.c89061c7.js +1 -0
- package/dist/assets/{lt-LT.772aac6e.js → lt-LT.f2d719ff.js} +1 -1
- package/dist/assets/{lua.40597bfe.js → lua.42e69aa3.js} +1 -1
- package/dist/assets/manual.20d730b3.js +12 -0
- package/dist/assets/{mark-selection.feeab6e5.js → mark-selection.16acf9dc.js} +1 -1
- package/dist/assets/{match-highlighter.8afd3316.js → match-highlighter.8f0791ef.js} +1 -1
- package/dist/assets/{mathematica.6569f1d2.js → mathematica.6d38a8bc.js} +1 -1
- package/dist/assets/{mbox.d8c16b77.js → mbox.04641caf.js} +1 -1
- package/dist/assets/migrations.f13ec64d.js +19 -0
- package/dist/assets/{mirc.5f909857.js → mirc.a748cdbe.js} +1 -1
- package/dist/assets/{mllike.393c4525.js → mllike.78996bae.js} +1 -1
- package/dist/assets/{mn-MN.ae109212.js → mn-MN.c504a096.js} +1 -1
- package/dist/assets/{modelica.1180cc4d.js → modelica.e521b192.js} +1 -1
- package/dist/assets/modules.9b5ee510.js +69 -0
- package/dist/assets/{ms-MY.e50ff23a.js → ms-MY.e6553dad.js} +1 -1
- package/dist/assets/{mscgen.429d47df.js → mscgen.4b8f9009.js} +1 -1
- package/dist/assets/{multiplex.23c498d1.js → multiplex.c8ef0fcd.js} +1 -1
- package/dist/assets/{mumps.f94bba13.js → mumps.44c6f7dd.js} +1 -1
- package/dist/assets/{nginx.72bf7bab.js → nginx.0aef90d9.js} +1 -1
- package/dist/assets/{nl-NL.b57de112.js → nl-NL.2f00af44.js} +1 -1
- package/dist/assets/{no-NO.79458b78.js → no-NO.59f9d425.js} +1 -1
- package/dist/assets/notifications.674ee6f9.js +153 -0
- package/dist/assets/{nsis.68fe2711.js → nsis.21597a35.js} +1 -1
- package/dist/assets/{ntriples.964a7402.js → ntriples.a9ce3eee.js} +1 -1
- package/dist/assets/{octave.26aad7e7.js → octave.e4e6969c.js} +1 -1
- package/dist/assets/operations.46679bea.js +1 -0
- package/dist/assets/operations.9995851b.js +169 -0
- package/dist/assets/{overlay.b4b97f23.js → overlay.725bd47b.js} +1 -1
- package/dist/assets/overview.3616b560.js +1 -0
- package/dist/assets/overview.3c9f8f3d.js +1 -0
- package/dist/assets/overview.6438dc44.js +1 -0
- package/dist/assets/{oz.1076911f.js → oz.439981ca.js} +1 -1
- package/dist/assets/panels.570ee526.js +65 -0
- package/dist/assets/{pascal.8ad1e64f.js → pascal.e63a97cf.js} +1 -1
- package/dist/assets/{pegjs.c362f9d1.js → pegjs.9b76593b.js} +1 -1
- package/dist/assets/{perl.afe37b4f.js → perl.e5aa6f87.js} +1 -1
- package/dist/assets/permissions.768d1878.js +178 -0
- package/dist/assets/{php.2fcb5b78.js → php.d553fa6c.js} +1 -1
- package/dist/assets/{pig.1047d3c6.js → pig.657ad6df.js} +1 -1
- package/dist/assets/pl-PL.80cfbed6.js +1 -0
- package/dist/assets/plesk.b0ee9a9a.js +27 -0
- package/dist/assets/{powershell.a493c1a9.js → powershell.d67ba3f4.js} +1 -1
- package/dist/assets/presets-bookmarks.522baf53.js +1 -0
- package/dist/assets/presets.d902ebfa.js +164 -0
- package/dist/assets/project-settings.1f95b799.js +1 -0
- package/dist/assets/projects.1ea6a392.js +1 -0
- package/dist/assets/{properties.2ccd56b8.js → properties.da88b13f.js} +1 -1
- package/dist/assets/{protobuf.a0e463a0.js → protobuf.4d5afee3.js} +1 -1
- package/dist/assets/pt-BR.40750500.js +1 -0
- package/dist/assets/pt-PT.fae0fcc3.js +1 -0
- package/dist/assets/{pug.3909bb70.js → pug.3f42b721.js} +1 -1
- package/dist/assets/{puppet.298e3717.js → puppet.c79d85fc.js} +1 -1
- package/dist/assets/{python.099f62ce.js → python.d6ada07e.js} +1 -1
- package/dist/assets/{q.64763e8e.js → q.1a68bd88.js} +1 -1
- package/dist/assets/query.8abea6de.js +152 -0
- package/dist/assets/quickstart.75164dd7.js +9 -0
- package/dist/assets/quickstart.9985cb15.js +20 -0
- package/dist/assets/{r.f2c0470b.js → r.0c2eb3c2.js} +1 -1
- package/dist/assets/relations.9011b2b5.js +115 -0
- package/dist/assets/relationships.cbc9b1c5.js +55 -0
- package/dist/assets/resources.25cb1e34.js +1 -0
- package/dist/assets/revisions.c90ecb76.js +40 -0
- package/dist/assets/{ro-RO.5161835a.js → ro-RO.a1adfb6a.js} +1 -1
- package/dist/assets/roles.22f7aa37.js +171 -0
- package/dist/assets/{rpm.cf84a89e.js → rpm.bf07aaab.js} +1 -1
- package/dist/assets/{rst.26def927.js → rst.00e6f3ec.js} +1 -1
- package/dist/assets/{ru-RU.94a64be6.js → ru-RU.35703ea4.js} +1 -1
- package/dist/assets/{ruby.5fdee9b4.js → ruby.a058e7d1.js} +1 -1
- package/dist/assets/running-locally.ce0a8200.js +26 -0
- package/dist/assets/{rust.ab31720a.js → rust.f7ca883b.js} +1 -1
- package/dist/assets/{sas.d35671d3.js → sas.f9db0ec1.js} +1 -1
- package/dist/assets/{sass.be16b14c.js → sass.6c26d08e.js} +1 -1
- package/dist/assets/{scheme.da057889.js → scheme.b19aee0d.js} +1 -1
- package/dist/assets/sdk.916109ed.js +393 -0
- package/dist/assets/security.1963da73.js +1 -0
- package/dist/assets/server.afec52fc.js +114 -0
- package/dist/assets/settings.835be62f.js +51 -0
- package/dist/assets/settings.a02abd85.js +1 -0
- package/dist/assets/{shell.ba07ff2f.js → shell.b593f3c7.js} +1 -1
- package/dist/assets/{show-hint.4c3405db.js → show-hint.252396d2.js} +1 -1
- package/dist/assets/{sieve.9a88af42.js → sieve.b20bbc45.js} +1 -1
- package/dist/assets/{simple.306c97cf.js → simple.8b298831.js} +1 -1
- package/dist/assets/{sl-SI.719d987e.js → sl-SI.632899f8.js} +1 -1
- package/dist/assets/{slim.11e72018.js → slim.2a6f8eee.js} +1 -1
- package/dist/assets/{smalltalk.802facc0.js → smalltalk.9bee6f9b.js} +1 -1
- package/dist/assets/{smarty.410c0c8d.js → smarty.be5c58b8.js} +1 -1
- package/dist/assets/{solr.43e14cbf.js → solr.49b61be0.js} +1 -1
- package/dist/assets/{soy.18418f41.js → soy.0ff77af9.js} +1 -1
- package/dist/assets/{sparql.5169332f.js → sparql.9f5e3d7d.js} +1 -1
- package/dist/assets/{spreadsheet.2a7e9b13.js → spreadsheet.062b3700.js} +1 -1
- package/dist/assets/{sql.53c1d1ba.js → sql.a5128e43.js} +1 -1
- package/dist/assets/{sr-CS.c513578f.js → sr-CS.2e5b18be.js} +1 -1
- package/dist/assets/{sso-examples.b52061be.js → sso-examples.048b39c5.js} +12 -12
- package/dist/assets/sso.70be105f.js +22 -0
- package/dist/assets/{stex.7c4e0033.js → stex.0331c80e.js} +1 -1
- package/dist/assets/{stylus.dfe1c737.js → stylus.6423d65d.js} +1 -1
- package/dist/assets/support.fce2dba5.js +1 -0
- package/dist/assets/{sv-SE.a70fd097.js → sv-SE.d485ddd3.js} +1 -1
- package/dist/assets/{swift.e9cb43f5.js → swift.979a2826.js} +1 -1
- package/dist/assets/{tcl.7cc3bef5.js → tcl.fa1b798c.js} +1 -1
- package/dist/assets/teams.44eb670e.js +1 -0
- package/dist/assets/{textile.353c8497.js → textile.9dbd9b93.js} +1 -1
- package/dist/assets/{th-TH.bdbc4a8c.js → th-TH.1e9ab13f.js} +1 -1
- package/dist/assets/themes.e4a7762f.js +5 -0
- package/dist/assets/{tiddlywiki.f4ebe8db.js → tiddlywiki.fb030aa9.js} +1 -1
- package/dist/assets/{tiki.95dd78e4.js → tiki.2e2e82c0.js} +1 -1
- package/dist/assets/{toml.f50bb93a.js → toml.0c911c34.js} +1 -1
- package/dist/assets/{tornado.3e0cfd8c.js → tornado.466faa98.js} +1 -1
- package/dist/assets/tr-TR.feb24957.js +1 -0
- package/dist/assets/translation-strings.4ed25965.js +1 -0
- package/dist/assets/translations.cf2353ca.js +1 -0
- package/dist/assets/triggers.05092cdf.js +1 -0
- package/dist/assets/{troff.a2834e8f.js → troff.398ba40d.js} +1 -1
- package/dist/assets/{ttcn-cfg.447f138c.js → ttcn-cfg.7c37ebe0.js} +1 -1
- package/dist/assets/{ttcn.7d877404.js → ttcn.58e768c8.js} +1 -1
- package/dist/assets/{turtle.3b4898fd.js → turtle.2b65ee77.js} +1 -1
- package/dist/assets/{twig.53dd7cbe.js → twig.0cf35761.js} +1 -1
- package/dist/assets/ubuntu.35dc97df.js +11 -0
- package/dist/assets/uk-UA.0e92f9a4.js +1 -0
- package/dist/assets/upgrades-migrations.9218bbe9.js +1 -0
- package/dist/assets/use-sync.c0f4dfab.js +7 -7
- package/dist/assets/user-directory.3daaa818.js +1 -0
- package/dist/assets/users-roles-permissions.6e18f7ca.js +1 -0
- package/dist/assets/users.4f11a7c5.js +252 -0
- package/dist/assets/utilities.0e0d0ace.js +74 -0
- package/dist/assets/{vb.c3313898.js → vb.269200a5.js} +1 -1
- package/dist/assets/{vbscript.0b106bed.js → vbscript.b9c30330.js} +1 -1
- package/dist/assets/{velocity.c20bb29d.js → velocity.a54e5f76.js} +1 -1
- package/dist/assets/{verilog.2f6698b4.js → verilog.fd6a1be7.js} +1 -1
- package/dist/assets/{vhdl.6127eef7.js → vhdl.846afe81.js} +1 -1
- package/dist/assets/{vi-VN.7478a743.js → vi-VN.3e9c985f.js} +1 -1
- package/dist/assets/{vue.bb756ea0.js → vue.74e2af44.js} +1 -1
- package/dist/assets/{wast.66661aa3.js → wast.38b3f34b.js} +1 -1
- package/dist/assets/webhooks.00ee297b.js +147 -0
- package/dist/assets/webhooks.01ddb390.js +1 -0
- package/dist/assets/{webidl.0a42319e.js → webidl.481665e3.js} +1 -1
- package/dist/assets/{xquery.44dd200c.js → xquery.e254ba63.js} +1 -1
- package/dist/assets/{yacas.6f3863db.js → yacas.fc329640.js} +1 -1
- package/dist/assets/{yaml-frontmatter.42fca60b.js → yaml-frontmatter.84cccda6.js} +1 -1
- package/dist/assets/{yaml.d85fc2b2.js → yaml.3a95e8e9.js} +1 -1
- package/dist/assets/{z80.2bbe85a7.js → z80.691a0cb9.js} +1 -1
- package/dist/assets/zh-CN.432cf71e.js +1 -0
- package/dist/assets/zh-TW.cac20c88.js +1 -0
- package/dist/index.html +2 -2
- package/package.json +10 -7
- package/dist/assets/accounts.08433099.js +0 -1
- package/dist/assets/activity-log.496fa2f2.css +0 -1
- package/dist/assets/activity-log.fd558c9b.js +0 -1
- package/dist/assets/activity.0def80ca.js +0 -80
- package/dist/assets/ar-SA.1a6c2c65.js +0 -1
- package/dist/assets/architecture.6e6f13a7.js +0 -1
- package/dist/assets/authentication.a6f04750.js +0 -73
- package/dist/assets/aws.3b1c64af.js +0 -1
- package/dist/assets/backing-directus.0003d237.js +0 -1
- package/dist/assets/bg-BG.749c86ae.js +0 -1
- package/dist/assets/bn-IN.1385676c.js +0 -1
- package/dist/assets/cli.5153aa86.js +0 -4
- package/dist/assets/cli.e8e2526b.js +0 -19
- package/dist/assets/cloudron.53c430b8.js +0 -1
- package/dist/assets/codebase-overview.e9df94fc.js +0 -1
- package/dist/assets/collections.2453db3a.js +0 -106
- package/dist/assets/collections.aa896b3f.js +0 -2
- package/dist/assets/config-options.b1233b4b.js +0 -138
- package/dist/assets/content.1b1e95cf.js +0 -1
- package/dist/assets/creating-extensions.bfd7c57c.js +0 -11
- package/dist/assets/cs-CZ.6910228b.js +0 -1
- package/dist/assets/data-model.0e360572.js +0 -1
- package/dist/assets/data-sharing.da96e52e.js +0 -1
- package/dist/assets/de-DE.a4271e4f.js +0 -1
- package/dist/assets/digitalocean-app-platform.3412cb40.js +0 -3
- package/dist/assets/display-templates.915c0c5b.js +0 -1
- package/dist/assets/displays.99989c6d.js +0 -49
- package/dist/assets/documentation.788d4998.js +0 -1
- package/dist/assets/email-templates.1f5ac335.js +0 -2
- package/dist/assets/endpoints.aaac7c81.js +0 -27
- package/dist/assets/es-419.aa0bf259.js +0 -1
- package/dist/assets/es-CL.e42c6c3c.js +0 -1
- package/dist/assets/es-ES.5c7e9438.js +0 -1
- package/dist/assets/es-MX.b9c72674.js +0 -1
- package/dist/assets/extensions.34c12005.js +0 -12
- package/dist/assets/faq.89e68608.js +0 -2
- package/dist/assets/fields.54985585.js +0 -135
- package/dist/assets/file-library.b55c53fe.js +0 -1
- package/dist/assets/files.064d5a35.js +0 -187
- package/dist/assets/filter-rules.aec0af01.js +0 -76
- package/dist/assets/filters.3db1b044.js +0 -1
- package/dist/assets/flows.22228af1.js +0 -172
- package/dist/assets/flows.3ea1b90f.js +0 -15
- package/dist/assets/folders.0024d3d3.js +0 -132
- package/dist/assets/fr-FR.615da1bd.js +0 -1
- package/dist/assets/gcp.627205b5.js +0 -60
- package/dist/assets/github-ci.abd39dcc.js +0 -2
- package/dist/assets/glossary.312e2401.js +0 -1
- package/dist/assets/glossary.75ca2027.js +0 -1
- package/dist/assets/hooks.eda18b02.js +0 -60
- package/dist/assets/id-ID.a0052c00.js +0 -1
- package/dist/assets/iis.109e5a8a.js +0 -24
- package/dist/assets/import-export.3da878a4.js +0 -2
- package/dist/assets/index.55cf7b0a.js +0 -26
- package/dist/assets/index.ef58525d.css +0 -1
- package/dist/assets/insights.c8ed7c1c.js +0 -1
- package/dist/assets/installation.78c6d9f6.js +0 -1
- package/dist/assets/interfaces.9e145c45.js +0 -46
- package/dist/assets/introduction.2e6f5c1d.js +0 -90
- package/dist/assets/introduction.78a2a844.js +0 -4
- package/dist/assets/introduction.8a589eb0.js +0 -1
- package/dist/assets/introduction.fd7c08ac.js +0 -1
- package/dist/assets/it-IT.7b7f58ec.js +0 -1
- package/dist/assets/items.4205dfa0.js +0 -136
- package/dist/assets/items.64ed9295.js +0 -1
- package/dist/assets/ja-JP.819a38cf.js +0 -1
- package/dist/assets/layouts.3c14b583.js +0 -54
- package/dist/assets/layouts.ca8afd39.js +0 -1
- package/dist/assets/localization.374b7427.js +0 -1
- package/dist/assets/manual.ab601c95.js +0 -10
- package/dist/assets/migrations.8989fedc.js +0 -19
- package/dist/assets/modules.17c944d1.js +0 -69
- package/dist/assets/notifications.33c688c9.js +0 -153
- package/dist/assets/operations.22151874.js +0 -169
- package/dist/assets/operations.50a08aae.js +0 -1
- package/dist/assets/overview.3436365c.js +0 -1
- package/dist/assets/overview.623fafba.js +0 -1
- package/dist/assets/overview.dbebe94a.js +0 -1
- package/dist/assets/panels.385b173a.js +0 -65
- package/dist/assets/permissions.f84f8d42.js +0 -178
- package/dist/assets/pl-PL.7e448fa9.js +0 -1
- package/dist/assets/plesk.f7e3d5ef.js +0 -27
- package/dist/assets/presets-bookmarks.1b8ec70c.js +0 -1
- package/dist/assets/presets.b1e8b6c1.js +0 -164
- package/dist/assets/project-settings.d32669a9.js +0 -1
- package/dist/assets/projects.bb50c3df.js +0 -1
- package/dist/assets/pt-BR.2d6fa7cc.js +0 -1
- package/dist/assets/pt-PT.c28534a0.js +0 -1
- package/dist/assets/query.dbe0b56d.js +0 -152
- package/dist/assets/quickstart.01824cc9.js +0 -9
- package/dist/assets/quickstart.4d7c7736.js +0 -20
- package/dist/assets/relations.d29aa86d.js +0 -115
- package/dist/assets/relationships.c9c5db8a.js +0 -55
- package/dist/assets/resources.00028bf0.js +0 -1
- package/dist/assets/revisions.2898106e.js +0 -40
- package/dist/assets/roles.9fec37da.js +0 -171
- package/dist/assets/running-locally.811d0dcc.js +0 -26
- package/dist/assets/sdk.12cd7974.js +0 -393
- package/dist/assets/security.8e2a8a41.js +0 -1
- package/dist/assets/server.9f12ae3e.js +0 -114
- package/dist/assets/settings.149d1dff.js +0 -1
- package/dist/assets/settings.28abc1f0.js +0 -51
- package/dist/assets/sso.64b2717b.js +0 -22
- package/dist/assets/support.94e3734b.js +0 -1
- package/dist/assets/teams.9ff14f8f.js +0 -1
- package/dist/assets/themes.df7ec485.js +0 -5
- package/dist/assets/tr-TR.d7a7361f.js +0 -1
- package/dist/assets/translations.5191ab7c.js +0 -1
- package/dist/assets/triggers.1f1ace5f.js +0 -1
- package/dist/assets/ubuntu.f4c21886.js +0 -11
- package/dist/assets/uk-UA.473dd1c9.js +0 -1
- package/dist/assets/upgrades-migrations.15498a47.js +0 -1
- package/dist/assets/user-directory.47c8beb2.js +0 -1
- package/dist/assets/users-roles-permissions.005388fa.js +0 -1
- package/dist/assets/users.84251ab9.js +0 -252
- package/dist/assets/utilities.26e6a9e8.js +0 -74
- package/dist/assets/webhooks.4eeecb7d.js +0 -147
- package/dist/assets/webhooks.61b11e7d.js +0 -1
- package/dist/assets/zh-CN.c51e7308.js +0 -1
- package/dist/assets/zh-TW.8ef6cec8.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as n,o as d,b as c,w as s,g as e,e as a,B as t}from"./runtime-core.esm-bundler.b1f35d24.js";var i={};const h={class:"markdown-body"},u=e("blockquote",null,[e("p",null,"This is list of platform-specific terminology, and their meanings. Most are simply more approachable names for technical database terms.")],-1),f=e("p",null,[e("div",{class:"table-of-contents"},[e("ul",null,[e("li",null,[e("a",{href:"#admin-%2F-administrator"},"Admin / Administrator")]),e("li",null,[e("a",{href:"#alias"},"Alias")]),e("li",null,[e("a",{href:"#api"},"API")]),e("li",null,[e("a",{href:"#app"},"App")]),e("li",null,[e("a",{href:"#activity"},"Activity")]),e("li",null,[e("a",{href:"#collections"},"Collections")]),e("li",null,[e("a",{href:"#dashboards"},"Dashboards")]),e("li",null,[e("a",{href:"#database-abstraction"},"Database Abstraction")]),e("li",null,[e("a",{href:"#displays"},"Displays")]),e("li",null,[e("a",{href:"#environments"},"Environments")]),e("li",null,[e("a",{href:"#extensions"},"Extensions")]),e("li",null,[e("a",{href:"#fields"},"Fields")]),e("li",null,[e("a",{href:"#files-%26-assets"},"Files & Assets")]),e("li",null,[e("a",{href:"#icons"},"Icons")]),e("li",null,[e("a",{href:"#interfaces"},"Interfaces")]),e("li",null,[e("a",{href:"#items"},"Items")]),e("li",null,[e("a",{href:"#junction-collections"},"Junction Collections")]),e("li",null,[e("a",{href:"#layouts"},"Layouts")]),e("li",null,[e("a",{href:"#modules"},"Modules")]),e("li",null,[e("a",{href:"#multitenancy"},"Multitenancy")]),e("li",null,[e("a",{href:"#panels"},"Panels")]),e("li",null,[e("a",{href:"#permissions"},"Permissions")]),e("li",null,[e("a",{href:"#presets"},"Presets")]),e("li",null,[e("a",{href:"#primary-key-(pk)"},"Primary Key (PK)")]),e("li",null,[e("a",{href:"#projects"},"Projects")]),e("li",null,[e("a",{href:"#relationships"},"Relationships")]),e("li",null,[e("a",{href:"#revisions"},"Revisions")]),e("li",null,[e("a",{href:"#roles"},"Roles")]),e("li",null,[e("a",{href:"#storage-adapters"},"Storage Adapters")]),e("li",null,[e("a",{href:"#title-formatter"},"Title Formatter")]),e("li",null,[e("a",{href:"#translations"},"Translations")]),e("li",null,[e("a",{href:"#types"},"Types")]),e("li",null,[e("a",{href:"#users"},"Users")])])])],-1),p=e("h2",{id:"admin-%2F-administrator"},[t("Admin / Administrator "),e("a",{class:"header-anchor",href:"#admin-%2F-administrator"},"#")],-1),m=e("p",null,"An \u201CAdministrators\u201D Role (with Admin access enabled) is included when you first install the platform. All admin roles bypass the permissions check, providing unrestricted access to all data within the App and API. Additionally, only roles with the admin option enabled can manage Settings within the app.",-1),_=e("h2",{id:"alias"},[t("Alias "),e("a",{class:"header-anchor",href:"#alias"},"#")],-1),g=e("a",{href:"#fields"},"Fields",-1),y=t(" that do not map directly to an actual database column are called \u201Calias\u201D fields. For example, presentation fields (such as dividers and groups) and certain relational types that display data stored elsewhere (such as "),b=t("One-to-Many (O2M)"),v=t(" and "),w=t("Many-to-Many (M2M)"),A=t(")."),x=e("h2",{id:"api"},[t("API "),e("a",{class:"header-anchor",href:"#api"},"#")],-1),I=e("p",null,"The Application Programming Interface (API) provided by the platform is how you can programmatically connect your project\u2019s content, files, and system information to external code (like a website) or with other third-party services.",-1),k=e("h2",{id:"app"},[t("App "),e("a",{class:"header-anchor",href:"#app"},"#")],-1),T=e("p",null,[t("An intuitive no-code application for managing database content. Powered by the API, the modular and highly extensible App is written in "),e("a",{href:"https://vuejs.org",target:"_blank",rel:"noopener noreferrer"},"Vue.js"),t(".")],-1),C=e("h2",{id:"activity"},[t("Activity "),e("a",{class:"header-anchor",href:"#activity"},"#")],-1),D=e("p",null,"Activity is a log of all events that take place within the platform. Used for accountability, each activity record tracks the event type, user, timestamp, IP address, user-agent, and any associated revision data.",-1),P=e("h2",{id:"collections"},[t("Collections "),e("a",{class:"header-anchor",href:"#collections"},"#")],-1),j=t("Collections are containers for specific types of Items and contain any number of fields. Each collection represents a "),S=e("strong",null,"table",-1),F=t(" in your database. By default, the "),R=e("a",{href:"#title-formatter"},"title formatter",-1),M=t(" is used to display any existing database table names as human-readable collection titles. There are also \u201Cfolder\u201D collections that are "),L=t("exclusively used for organizational purposes"),E=t(", and don\u2019t hold any data themselves."),z=e("p",null,[t("Collections can be organized in any way that is appropriate for your project. You can architect them platform-specific (eg: "),e("em",null,"pages"),t(" of a website), or in a more platform-agnostic way (eg: raw "),e("em",null,"customers"),t(" of your business). While there\u2019s no right or wrong way to structure your data-model, we recommend keeping your data as agnostic as possible so it is easier to repurpose in the future. "),e("strong",null,"In short, learn to see your data as its own asset \u2014 not only through the lens of your immediate project needs"),t(".")],-1),B=e("p",null,[t("The only requirement of a collection is that it must contain a "),e("a",{href:"#primary-key-pk"},"Primary Key"),t(" field. This field stores a unique value that is used to reference the Collection\u2019s items throughout the database/platform.")],-1),G=e("h3",{id:"relevant-guides"},[t("Relevant Guides "),e("a",{class:"header-anchor",href:"#relevant-guides"},"#")],-1),q=t("Creating a Collection"),U=t("Configuring a Collection"),Q=t("Deleting a Collection"),O=t("Adjusting a Collection Layout"),W=e("h2",{id:"dashboards"},[t("Dashboards "),e("a",{class:"header-anchor",href:"#dashboards"},"#")],-1),N=e("p",null,[t("Dashboards within the Insights module organize different "),e("a",{href:"#panels"},"Panels"),t(" into an at-a-glance view. They can be used to group data based on department, objective, business process or anything you choose.")],-1),V=e("h2",{id:"database-abstraction"},[t("Database Abstraction "),e("a",{class:"header-anchor",href:"#database-abstraction"},"#")],-1),K=e("p",null,"Directus supports mirroring all the most widely used SQL databases, including PostgreSQL, MySQL, Microsoft SQL Server, SQLite, OracleDB, MariaDB, and other variants. Each vendor has subtle (and sometimes not so subtle) differences in how they function, so Directus includes an abstraction layer that helps it avoid writing different code for each type.",-1),H=e("p",null,[t("This means there is also the possibility of supporting other datastores in the future, such as NoSQL options like MongoDB, or even third-party data services like Firebase or Heroku. However these options are "),e("em",null,"fundamentally"),t(" different from the relational SQL databases we currently support, and so more research is needed.")],-1),Y=e("h2",{id:"displays"},[t("Displays "),e("a",{class:"header-anchor",href:"#displays"},"#")],-1),J=e("p",null,[t("Displays are the smaller, read-only counterpart to "),e("a",{href:"#interfaces"},"Interfaces"),t(", defining how a field\u2019s data will be displayed inline throughout the App.")],-1),X=e("p",null,[t("For example, you may have a \u201CStatus\u201D field that uses a "),e("em",null,"Dropdown"),t(" Interface on the Item Detail page, and a smaller "),e("em",null,"Badge"),t(" Display when the field is referenced throughout the rest of the App. Directus includes many Displays out-of-the-box, below are the some key examples:")],-1),Z=e("ul",null,[e("li",null,[e("strong",null,"Raw"),t(" \u2014 The exact value, straight from the API")]),e("li",null,[e("strong",null,"Formatted Value"),t(" \u2014 Provides options for string formatting")]),e("li",null,[e("strong",null,"Boolean"),t(" \u2014 Customizable True/False icons")]),e("li",null,[e("strong",null,"Color"),t(" \u2014 A color swatch preview")]),e("li",null,[e("strong",null,"DateTime"),t(" \u2014 Formatted or relative datetimes")]),e("li",null,[e("strong",null,"Image"),t(" \u2014 Thumbnail previews")]),e("li",null,[e("strong",null,"Labels"),t(" \u2014 Small, custom colored badges")]),e("li",null,[e("strong",null,"Rating"),t(" \u2014 Customizable stars")]),e("li",null,[e("strong",null,"Related Values"),t(" \u2014 Displays relational display titles")]),e("li",null,[e("strong",null,"User"),t(" \u2014 Avatar and name of a system user")])],-1),$=e("p",null,"In addition to the included core displays, custom displays allow for creating new and/or proprietary ways to view or represent field data. For example, you could create progress indicators, tooltips for relational data, specific formatting styles, or anything else.",-1),ee=e("h3",{id:"relevant-guides-2"},[t("Relevant Guides "),e("a",{class:"header-anchor",href:"#relevant-guides-2"},"#")],-1),te=t("Creating a Custom Display"),se=e("h2",{id:"environments"},[t("Environments "),e("a",{class:"header-anchor",href:"#environments"},"#")],-1),oe=e("p",null,"Environments (eg: dev, staging, prod) are tracked as separate Project instances. You can then use schema/content migrations to promote data between them.",-1),ae=e("h2",{id:"extensions"},[t("Extensions "),e("a",{class:"header-anchor",href:"#extensions"},"#")],-1),ne=t("The platform has been built to be modular and extensible. This helps keep the core codebase simple and clean (see the "),ie=t("80/20 Rule"),le=t("), while allowing the flexibility needed to satisfy all use-cases\u2026 no matter how complex. There are many different types of supported extensions, each offering a way to deeply customize, override, or extend the core platform. "),re=t("Learn more about Extensions"),de=t("."),ce=e("h2",{id:"fields"},[t("Fields "),e("a",{class:"header-anchor",href:"#fields"},"#")],-1),he=e("p",null,[t("Fields are a specific type of value within a Collection, storing the data of your item\u2019s content. Each field represents a "),e("strong",null,"column"),t(" in your database. For example, an "),e("code",{class:""},"articles"),t(),e("a",{href:"#collections"},"Collection"),t(" might have "),e("code",{class:""},"title"),t(", "),e("code",{class:""},"body"),t(", "),e("code",{class:""},"author"),t(", and "),e("code",{class:""},"date_published"),t(" field. Fields mirror the characteristics of their associated column, including its "),e("code",{class:""},"name"),t(", "),e("code",{class:""},"type"),t(", "),e("code",{class:""},"default"),t(", "),e("code",{class:""},"length"),t(", "),e("code",{class:""},"allow_null"),t(", etc.")],-1),ue=e("h3",{id:"relevant-guides-3"},[t("Relevant Guides "),e("a",{class:"header-anchor",href:"#relevant-guides-3"},"#")],-1),fe=t("Creating a Field"),pe=t("Duplicating Fields"),me=t("Adjusting Field Layout"),_e=t("Deleting Fields"),ge=e("h2",{id:"files-%26-assets"},[t("Files & Assets "),e("a",{class:"header-anchor",href:"#files-%26-assets"},"#")],-1),ye=e("p",null,"As you might have guessed, files includes images, videos, PDFs, text documents, or anything else. While files can technically be stored as code in the database, it is far more common to manage them as individual assets on a \u201Cdrive\u201D. The platform supports many options for uploading, storing, transforming, and retrieving different types of files, and it is an excellent Digital Asset Management system.",-1),be=e("h2",{id:"icons"},[t("Icons "),e("a",{class:"header-anchor",href:"#icons"},"#")],-1),ve=e("h3",{id:"material-icons"},[t("Material Icons "),e("a",{class:"header-anchor",href:"#material-icons"},"#")],-1),we=e("p",null,[t("Full list of icons "),e("a",{href:"https://fonts.google.com/icons",target:"_blank",rel:"noopener noreferrer"},"can be found here"),t(". Directus supports both filled & outlined variants of Material icons.")],-1),Ae=e("h3",{id:"social-icons"},[t("Social Icons "),e("a",{class:"header-anchor",href:"#social-icons"},"#")],-1),xe=e("p",null,[t("They are Font Awesome 5\u2019s brands icons. Full list of icons "),e("a",{href:"https://fontawesome.com/v5.15/icons?d=gallery&s=brands",target:"_blank",rel:"noopener noreferrer"},"can be found here"),t(". When using them as one of the auth provider icons, make sure to use underscores, such as "),e("code",{class:""},"blogger_b"),t(" for "),e("a",{href:"https://fontawesome.com/v5.15/icons/blogger-b?style=brands",target:"_blank",rel:"noopener noreferrer"},"blogger-b"),t(" icon.")],-1),Ie=e("h2",{id:"interfaces"},[t("Interfaces "),e("a",{class:"header-anchor",href:"#interfaces"},"#")],-1),ke=e("p",null,"Interfaces determine how you view or interact with a field. In most cases, they offer some sort of input tailored to managing data of a specific type, but can also be used exclusively for presentation. Examples include text inputs, toggles, WYSIWYG editors, dropdowns, sliders, image galleries, and more.",-1),Te=e("p",null,[t("In addition to the many core interfaces included out-of-the-box, "),e("em",null,"custom"),t(" interfaces allow for creating more tailored or proprietary options, such as seating charts, QR codes, or Stripe customer info.")],-1),Ce=e("h3",{id:"relevant-guides-4"},[t("Relevant Guides "),e("a",{class:"header-anchor",href:"#relevant-guides-4"},"#")],-1),De=t("Creating a Custom Interface"),Pe=e("h2",{id:"items"},[t("Items "),e("a",{class:"header-anchor",href:"#items"},"#")],-1),je=e("p",null,[t("Items are objects within a Collection which contain values for one or more fields. Each collection represents a "),e("strong",null,"record"),t(" in your database.")],-1),Se=e("p",null,"Items are the primary building blocks of your project content. Similar to a \u201Crow\u201D within a spreadsheet, all data within the platform is accessed via these \u201Catomic\u201D data units. Items themselves are fairly straightforward, however their real power comes from the complexity that begins to form when items are relationally connected to each other.",-1),Fe=e("p",null,[t("Items are referenced (both individually and relationally) by their unique "),e("a",{href:"#primary-key-pk"},"primary key"),t(".")],-1),Re=e("h4",{id:"relevant-guides-5"},[t("Relevant Guides "),e("a",{class:"header-anchor",href:"#relevant-guides-5"},"#")],-1),Me=t("Creating an Item"),Le=t("Archiving an Item"),Ee=t("Manually Sorting Items"),ze=t("Deleting an Item"),Be=e("h2",{id:"junction-collections"},[t("Junction Collections "),e("a",{class:"header-anchor",href:"#junction-collections"},"#")],-1),Ge=e("p",null,[t("The platform allows you to group Items within different Collections. But often times it is important to \u201Clink\u201D items across different collections (such as relating "),e("code",{class:""},"recipes"),t(" and "),e("code",{class:""},"ingredients"),t(") \u2014 this is called a relationship. There are several different types of relationships, but only some (M2M and M2A) require an additional collection to properly connect data. For instance, if you have a "),e("code",{class:""},"recipes"),t(" collection and an "),e("code",{class:""},"ingredients"),t(" collection, you would also need a "),e("code",{class:""},"recipe_ingredients"),t(" junction collection to sit between and connect the two.")],-1),qe=e("h2",{id:"layouts"},[t("Layouts "),e("a",{class:"header-anchor",href:"#layouts"},"#")],-1),Ue=e("p",null,"Layouts determine how you view or interact with a Collection. In most cases, they offer a way to browse items based on a specific type of data, but can also be used to visualize or interact with data. Directus includes several Layout options out-of-the-box, each with different features and configuration options.",-1),Qe=e("ul",null,[e("li",null,[e("strong",null,"Table"),t(" \u2014 Works with any type of data, showing items as rows and their fields as columns.")]),e("li",null,[e("strong",null,"Cards"),t(" \u2014 Ideal for image data, this layout shows items as a grid of image cards.")]),e("li",null,[e("strong",null,"Calendar"),t(" \u2014 Ideal for \u201Ctemporal\u201D data that is sorted by date or datetime.")]),e("li",null,[e("strong",null,"Map"),t(" \u2014 Ideal for \u201Cgeospatial\u201D data that is shown on a world map.")])],-1),Oe=e("p",null,"In addition to these core layouts, custom layouts allow for creating more tailored or proprietary ways to experience data within the App, such as Gantt charts, seating maps, or spreadsheets.",-1),We=e("h3",{id:"relevant-guides-6"},[t("Relevant Guides "),e("a",{class:"header-anchor",href:"#relevant-guides-6"},"#")],-1),Ne=t("Creating a Custom Layout"),Ve=e("h2",{id:"modules"},[t("Modules "),e("a",{class:"header-anchor",href:"#modules"},"#")],-1),Ke=e("p",null,"Modules are the highest and broadest level of organization within the App. There are several modules included out-of-the-box, however you can also add your own.",-1),He=t("The "),Ye=t("Module Bar"),Je=t(" lists all available Modules and allows you to switch between them. Each module also controls its own navigation bar to provide tailored access to sub-pages. All core functionality within the App can be bucketed into one of the following modules:"),Xe=t("Content"),Ze=t(" \u2014 The primary way to view and interact with database content"),$e=t("User Directory"),et=t(" \u2014 A dedicated section for the platform\u2019s system Users"),tt=t("File Library"),st=t(" \u2014 An aggregate of all files uploaded and managed within the platform"),ot=t("Insights"),at=t(" \u2014 Access to infinitely customizable data dashboards"),nt=t("App Guide"),it=t(" \u2014 A tailored, in-app portal for the platform\u2019s concepts, guides, and reference"),lt=t("Settings"),rt=t(" \u2014 An admin-only section for configuring the project and system settings"),dt=e("p",null,[t("In addition to these core modules, custom modules offer a "),e("em",null,"blank canvas"),t(" for creating altogether new/different experiences within the App, such as proprietary dashboards, compound datasets, or third-party integrations (eg: a Stripe Payments Console).")],-1),ct=e("h3",{id:"relevant-guides-7"},[t("Relevant Guides "),e("a",{class:"header-anchor",href:"#relevant-guides-7"},"#")],-1),ht=t("Creating a Custom Module"),ut=e("h2",{id:"multitenancy"},[t("Multitenancy "),e("a",{class:"header-anchor",href:"#multitenancy"},"#")],-1),ft=e("p",null,"Multitenancy is an architecture that allows multiple tenants (eg: customers) to be managed by the platform. There are two main ways to achieve multitenancy:",-1),pt=e("ul",null,[e("li",null,[e("strong",null,"Project Scoping"),t(" \u2014 Creating a super-admin layer that provisions new tenant projects has been made easier by the Cloud-native model of Directus 9+. This method involves developing custom code that can dynamically spin up/down projects, but is also the most flexible, supporting scoped extensions and differentiated project settings.")]),e("li",null,[e("strong",null,"Role Scoping"),t(" \u2014 In this method, you create one Role per tenant, and configure their permissions to properly scope them within a single project. This direction allows for tenants to share a single schema using "),e("em",null,"item"),t(" scoped permissions, or different schemas by using "),e("em",null,"collection"),t(" scoped permissions.")])],-1),mt=e("h2",{id:"panels"},[t("Panels "),e("a",{class:"header-anchor",href:"#panels"},"#")],-1),_t=t("Panels are modular units of data visualization that exist within the "),gt=t("Insights module"),yt=t(". Each panel exists within a "),bt=e("a",{href:"#dashboards"},"Dashboard",-1),vt=t(" and can be positioned and resized as needed."),wt=e("h3",{id:"relevant-guides-8"},[t("Relevant Guides "),e("a",{class:"header-anchor",href:"#relevant-guides-8"},"#")],-1),At=t("Creating a Custom Panel"),xt=e("h2",{id:"permissions"},[t("Permissions "),e("a",{class:"header-anchor",href:"#permissions"},"#")],-1),It=e("p",null,"Permissions are attached directly to a Role, defining what a user can create, read, update, and delete within the platform. Extremely granular, these filter-based permissions control access for the entire system.",-1),kt=e("h2",{id:"presets"},[t("Presets "),e("a",{class:"header-anchor",href:"#presets"},"#")],-1),Tt=e("p",null,[t("Presets store the exact state of a "),e("a",{href:"#collections"},"collection page"),t(". They are used to set layout defaults for a user, or to define bookmarks that can be used to quickly recall specific datasets.")],-1),Ct=e("h4",{id:"relevant-guides-9"},[t("Relevant Guides "),e("a",{class:"header-anchor",href:"#relevant-guides-9"},"#")],-1),Dt=t("Creating a Preset"),Pt=t("Deleting a Preset"),jt=e("h2",{id:"primary-key-(pk)"},[t("Primary Key (PK) "),e("a",{class:"header-anchor",href:"#primary-key-(pk)"},"#")],-1),St=e("p",null,[t("When we\u2019re trying to view or reference a specific "),e("a",{href:"#items"},"Item"),t(" within a "),e("a",{href:"#collections"},"Collection"),t(", you need some sort of unique identifier to know exactly where to look. Much like an address for a house, the primary key field provides the location of an item within its collection. For that reason, every collection must have a primary key field, and so they are configured when you create the collection. There are different types of identifiers you can use, but the field is often called "),e("code",{class:""},"id"),t(".")],-1),Ft=e("h2",{id:"projects"},[t("Projects "),e("a",{class:"header-anchor",href:"#projects"},"#")],-1),Rt=e("p",null,[t("A Project is a complete instance of the platform. Each project represents a "),e("strong",null,"Database"),t(", but also encapsulates a config file, asset storage, and any custom extensions. Projects are the highest level of organization in Directus.")],-1),Mt=t("Creating a Project"),Lt=t("Configuring a Project"),Et=t("Adjusting Project Settings"),zt=t("Upgrading a Project"),Bt=t("Backing-up a Project"),Gt=t("Migrating a Project"),qt=t("Deleting a Project"),Ut=e("h2",{id:"relationships"},[t("Relationships "),e("a",{class:"header-anchor",href:"#relationships"},"#")],-1),Qt=t("The platform allows you to group Items within different Collections. But often times it is important to \u201Clink\u201D items across different collections (such as relating "),Ot=e("code",{class:""},"recipes",-1),Wt=t(" and "),Nt=e("code",{class:""},"ingredients",-1),Vt=t(") \u2014 this is called a relationship, a crucial concept within any "),Kt=e("em",null,"relational",-1),Ht=t(" database. There are several different types of relationships, each serving a specific purpose. "),Yt=t("Learn more about Relationships"),Jt=t("."),Xt=e("h2",{id:"revisions"},[t("Revisions "),e("a",{class:"header-anchor",href:"#revisions"},"#")],-1),Zt=e("p",null,"Revisions are created whenever an Item is updated. These alternate versions are tracked so that previous states can be recovered. Every change made to items in Directus is stored as a complete versioned snapshot and a set of specific changes made (the delta). The revisions system is tightly coupled to the activity logs system, with each revision linked to the activity event where it was created.",-1),$t=e("h2",{id:"roles"},[t("Roles "),e("a",{class:"header-anchor",href:"#roles"},"#")],-1),es=e("p",null,"Roles define a specific set of access permissions, and are the primary organizational structure for Users within the platform. You can create an unlimited number of roles, so organize your users in whatever way feels most appropriate.",-1),ts=e("p",null,[t("During the installation process, Directus automatically creates an \u201CAdministrators\u201D Role, which is used to provide the initial admin user with full platform access. However this is just a "),e("em",null,"normal"),t(" role, and so it can still be updated, renamed, or even deleted. Keep in mind that your project must maintain at least one role with Admin Access at all times.")],-1),ss=e("p",null,"There is also a \u201CPublic\u201D role that determines access for unauthenticated access.",-1),os=e("h3",{id:"relevant-guides-10"},[t("Relevant Guides "),e("a",{class:"header-anchor",href:"#relevant-guides-10"},"#")],-1),as=t("Creating a Role"),ns=t("Configuring a Role"),is=t("Configuring Role Permissions"),ls=t("Configuring System Permissions"),rs=t("Deleting a Role"),ds=e("h2",{id:"storage-adapters"},[t("Storage Adapters "),e("a",{class:"header-anchor",href:"#storage-adapters"},"#")],-1),cs=e("p",null,"Storage adapters allow project files to be stored in different locations or services. By default, Directus includes the following drivers:",-1),hs=e("ul",null,[e("li",null,[e("strong",null,"Local Filesystem"),t(" \u2014 The default, any filesystem location or network-attached storage")]),e("li",null,[e("strong",null,"S3 or Equivalent"),t(" \u2014 Including AWS S3, DigitalOcean Spaces, Alibaba OSS, and others")]),e("li",null,[e("strong",null,"Google Cloud Storage"),t(" \u2014 A RESTful web service on the Google Cloud Platform")]),e("li",null,[e("strong",null,"Azure Blob Storage"),t(" \u2014 Azure storage account containers")])],-1),us=e("h2",{id:"title-formatter"},[t("Title Formatter "),e("a",{class:"header-anchor",href:"#title-formatter"},"#")],-1),fs=e("p",null,[t("Special Casing \u2014 If you are trying to update the specific casing (uppercase/lowercase) for a word (eg: "),e("code",{class:""},"Dna"),t(" to "),e("code",{class:""},"DNA"),t(") you will want to add the edge-case to the "),e("a",{href:"https://github.com/directus/directus/tree/main/packages/format-title/src",target:"_blank",rel:"noopener noreferrer"},"Format Title package"),t(". If you feel the case passes our "),e("a",{href:"https://docs.directus.io/contributing/introduction/#feature-requests",target:"_blank",rel:"noopener noreferrer"},"80/20 rule"),t(" you should submit a Pull Request to the codebase, otherwise you can update this in your instance.")],-1),ps=e("h2",{id:"translations"},[t("Translations "),e("a",{class:"header-anchor",href:"#translations"},"#")],-1),ms=e("p",null,[t("The platform supports internationalization across its entire Admin App. Many languages are currently supported, with more being added all the time. Anyone can add or refine any languages through the integration with "),e("a",{href:"https://locales.directus.io/",target:"_blank",rel:"noopener noreferrer"},"CrowdIn"),t(".")],-1),_s=e("p",null,"In addition to the App itself being multilingual, the platform allows translating your schema too. By default, collections and field names come from the database\u2019s naming, but you can override this in different languages.",-1),gs=e("p",null,"The platform also includes different ways to manage multilingual content. The built-in translation interface supports authoring content in any number of languages, side-by-side reference editing, and mixing in language agnostic content (such as dates or toggles).",-1),ys=e("h2",{id:"types"},[t("Types "),e("a",{class:"header-anchor",href:"#types"},"#")],-1),bs=e("p",null,"The \u201Ctype\u201D defines how field content is stored in the database and how it is returned by the API. Often called a data-type, these are important in ensuring field values are saved in a standardized format. Changing a field\u2019s type can cause data loss, so types are locked within the platform after a field is created.",-1),vs=e("h3",{id:"data-type-superset"},[t("Data Type Superset "),e("a",{class:"header-anchor",href:"#data-type-superset"},"#")],-1),ws=e("p",null,[t("Directus uses its built-in database abstraction to properly support all the different SQL vendors. However, these vendors do not share support for the same datatypes, instead, each SQL vendor maintains their own list. To standardize all of these differences, Directus has a single "),e("em",null,"superset"),t(" of types that map to the vendor-specific ones.")],-1),As=e("ul",null,[e("li",null,[e("strong",null,"String"),t(" \u2014 A shorter set of characters with a configurable max length")]),e("li",null,[e("strong",null,"Text"),t(" \u2014 A longer set of characters with no real-world max length")]),e("li",null,[e("strong",null,"Boolean"),t(" \u2014 A True or False value")]),e("li",null,[e("strong",null,"Binary"),t(" \u2014 The data of a binary file")]),e("li",null,[e("strong",null,"Integer"),t(" \u2014 A number without a decimal point")]),e("li",null,[e("strong",null,"Big Integer"),t(" \u2014 A larger number without a decimal point")]),e("li",null,[e("strong",null,"Float"),t(" \u2014 A less exact number with a floating decimal point")]),e("li",null,[e("strong",null,"Decimal"),t(" \u2014 A higher precision, exact decimal number often used in finances")]),e("li",null,[e("strong",null,"Timestamp"),t(" \u2014 A date, time, and timezone saved in ISO 8601 format")]),e("li",null,[e("strong",null,"DateTime"),t(" \u2014 A date and time saved in the database vendor\u2019s format")]),e("li",null,[e("strong",null,"Date"),t(" \u2014 A date saved in the database vendor\u2019s format")]),e("li",null,[e("strong",null,"Time"),t(" \u2014 A time saved in the database vendor\u2019s format")]),e("li",null,[e("strong",null,"JSON"),t(" \u2014 A value nested in JavaScript Object Notation")]),e("li",null,[e("strong",null,"CSV"),t(" \u2014 A comma-separated value, returned as an array of strings")]),e("li",null,[e("strong",null,"UUID"),t(" \u2014 A universally unique identifier saved in UUIDv4 format")]),e("li",null,[e("strong",null,"Hash"),t(" \u2014 A string hashed using argon2 cryptographic hash algorithm")]),e("li",null,[e("strong",null,"Alias"),t(" \u2014 For fields that do not have a database column "),e("a",{href:"#"},"Learn More")])],-1),xs=e("div",{class:"warning hint"},[e("p",null,[t("For "),e("strong",null,"SQLite"),t(", the "),e("strong",null,"Timestamp"),t(" type is stored as a "),e("strong",null,"DateTime"),t(".")])],-1),Is=e("h2",{id:"users"},[t("Users "),e("a",{class:"header-anchor",href:"#users"},"#")],-1),ks=e("p",null,[t("An active User is required to access a project. Each user is assigned to a "),e("a",{href:"#roles"},"Role"),t(" that determines what they have access to see and do. This means that the experience of users may vary significantly depending on their role\u2019s permissions.")],-1),Ts={title:"Glossary",modularExtension:!1},Cs={name:"glossary",setup(Ds,{expose:l}){return l({frontmatter:{title:"Glossary",modularExtension:!1}}),(Ps,js)=>{const o=n("router-link"),r=n("docswrapper");return d(),c(r,{frontmatter:Ts},{default:s(()=>[e("div",h,[u,f,p,m,_,e("p",null,[g,y,a(o,{to:"/docs/configuration/relationships/#one-to-many-o2m"},{default:s(()=>[b]),_:1}),v,a(o,{to:"/docs/configuration/relationships/#many-to-many-m2m"},{default:s(()=>[w]),_:1}),A]),x,I,k,T,C,D,P,e("p",null,[j,S,F,R,M,a(o,{to:"/docs/configuration/data-model/#sorting-grouping"},{default:s(()=>[L]),_:1}),E]),z,B,G,e("ul",null,[e("li",null,[a(o,{to:"/docs/configuration/data-model/#creating-a-collection"},{default:s(()=>[q]),_:1})]),e("li",null,[a(o,{to:"/docs/configuration/data-model/#configuring-a-collection"},{default:s(()=>[U]),_:1})]),e("li",null,[a(o,{to:"/docs/configuration/data-model/#deleting-a-collection"},{default:s(()=>[Q]),_:1})]),e("li",null,[a(o,{to:"/docs/configuration/data-model/#adjusting-a-collection-layout"},{default:s(()=>[O]),_:1})])]),W,N,V,K,H,Y,J,X,Z,$,ee,e("ul",null,[e("li",null,[a(o,{to:"/docs/extensions/displays/"},{default:s(()=>[te]),_:1})])]),se,oe,ae,e("p",null,[ne,a(o,{to:"/docs/contributing/introduction/#feature-requests"},{default:s(()=>[ie]),_:1}),le,a(o,{to:"/docs/extensions/introduction/"},{default:s(()=>[re]),_:1}),de]),ce,he,ue,e("ul",null,[e("li",null,[a(o,{to:"/docs/reference/system/fields/#creating-a-field"},{default:s(()=>[fe]),_:1})]),e("li",null,[a(o,{to:"/docs/reference/system/fields/#duplicating-a-field"},{default:s(()=>[pe]),_:1})]),e("li",null,[a(o,{to:"/docs/reference/system/fields/#adjusting-field-layout"},{default:s(()=>[me]),_:1})]),e("li",null,[a(o,{to:"/docs/reference/system/fields/#deleting-a-field"},{default:s(()=>[_e]),_:1})])]),ge,ye,be,ve,we,Ae,xe,Ie,ke,Te,Ce,e("ul",null,[e("li",null,[a(o,{to:"/docs/extensions/interfaces/"},{default:s(()=>[De]),_:1})])]),Pe,je,Se,Fe,Re,e("ul",null,[e("li",null,[a(o,{to:"/docs/app/content-collections/#creating-an-item"},{default:s(()=>[Me]),_:1})]),e("li",null,[a(o,{to:"/docs/app/content-items/#archiving-an-item"},{default:s(()=>[Le]),_:1})]),e("li",null,[a(o,{to:"/docs/app/content-collections/#manually-sorting-items"},{default:s(()=>[Ee]),_:1})]),e("li",null,[a(o,{to:"/docs/app/content-items/#deleting-an-item"},{default:s(()=>[ze]),_:1})])]),Be,Ge,qe,Ue,Qe,Oe,We,e("ul",null,[e("li",null,[a(o,{to:"/docs/extensions/layouts/"},{default:s(()=>[Ne]),_:1})])]),Ve,Ke,e("p",null,[He,a(o,{to:"/docs/app/overview/#_1-module-bar"},{default:s(()=>[Ye]),_:1}),Je]),e("ul",null,[e("li",null,[a(o,{to:"/docs/app/content-collections/"},{default:s(()=>[Xe]),_:1}),Ze]),e("li",null,[a(o,{to:"/docs/app/user-directory"},{default:s(()=>[$e]),_:1}),et]),e("li",null,[a(o,{to:"/docs/app/file-library"},{default:s(()=>[tt]),_:1}),st]),e("li",null,[a(o,{to:"/docs/app/insights"},{default:s(()=>[ot]),_:1}),at]),e("li",null,[a(o,{to:"/docs/app/overview"},{default:s(()=>[nt]),_:1}),it]),e("li",null,[a(o,{to:"/docs/app/settings"},{default:s(()=>[lt]),_:1}),rt])]),dt,ct,e("ul",null,[e("li",null,[a(o,{to:"/docs/extensions/modules/"},{default:s(()=>[ht]),_:1})])]),ut,ft,pt,mt,e("p",null,[_t,a(o,{to:"/docs/app/insights"},{default:s(()=>[gt]),_:1}),yt,bt,vt]),wt,e("ul",null,[e("li",null,[a(o,{to:"/docs/extensions/panels/"},{default:s(()=>[At]),_:1})])]),xt,It,kt,Tt,Ct,e("ul",null,[e("li",null,[a(o,{to:"/docs/reference/system/presets/#create-a-preset"},{default:s(()=>[Dt]),_:1})]),e("li",null,[a(o,{to:"/docs/reference/system/presets/#delete-a-preset"},{default:s(()=>[Pt]),_:1})])]),jt,St,Ft,Rt,e("ul",null,[e("li",null,[a(o,{to:"/docs/self-hosted/installation/"},{default:s(()=>[Mt]),_:1})]),e("li",null,[a(o,{to:"/docs/configuration/config-options/"},{default:s(()=>[Lt]),_:1})]),e("li",null,[a(o,{to:"/docs/configuration/project-settings/"},{default:s(()=>[Et]),_:1})]),e("li",null,[a(o,{to:"/docs/configuration/upgrades-migrations/"},{default:s(()=>[zt]),_:1})]),e("li",null,[a(o,{to:"/docs/configuration/upgrades-migrations/#backing-up-a-project"},{default:s(()=>[Bt]),_:1})]),e("li",null,[a(o,{to:"/docs/configuration/upgrades-migrations/#migrating-a-project"},{default:s(()=>[Gt]),_:1})]),e("li",null,[a(o,{to:"/docs/configuration/upgrades-migrations/#deleting-a-project"},{default:s(()=>[qt]),_:1})])]),Ut,e("p",null,[Qt,Ot,Wt,Nt,Vt,Kt,Ht,a(o,{to:"/docs/configuration/relationships/"},{default:s(()=>[Yt]),_:1}),Jt]),Xt,Zt,$t,es,ts,ss,os,e("ul",null,[e("li",null,[a(o,{to:"/docs/configuration/users-roles-permissions/#creating-a-role"},{default:s(()=>[as]),_:1})]),e("li",null,[a(o,{to:"/docs/configuration/users-roles-permissions/#configure-a-role"},{default:s(()=>[ns]),_:1})]),e("li",null,[a(o,{to:"/docs/configuration/users-roles-permissions/#configure-permissions"},{default:s(()=>[is]),_:1})]),e("li",null,[a(o,{to:"/docs/configuration/users-roles-permissions/#configure-system-permissions"},{default:s(()=>[ls]),_:1})]),e("li",null,[a(o,{to:"/docs/configuration/users-roles-permissions/#deleting-a-role"},{default:s(()=>[rs]),_:1})])]),ds,cs,hs,us,fs,ps,ms,_s,gs,ys,bs,vs,ws,As,xs,Is,ks])]),_:1})}}};typeof i=="function"&&i(Cs);export{Cs as default,Ts as frontmatter};
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import{a as c,o as a,b as o,w as r,g as e,B as l}from"./runtime-core.esm-bundler.b1f35d24.js";var s={};const i=e("div",{class:"markdown-body"},[e("blockquote",null,[e("p",null,"Custom API Hooks allow running custom logic when a specified event occurs within your project. There are different types of events to choose from.")]),e("h2",{id:"extension-entrypoint"},[l("Extension Entrypoint "),e("a",{class:"header-anchor",href:"#extension-entrypoint"},"#")]),e("p",null,[l("The entrypoint of your hook is the "),e("code",{class:""},"index"),l(" file inside the "),e("code",{class:""},"src/"),l(" folder of your extension package. It exports a register function to register one or more event listeners.")]),e("p",null,"Example of an entrypoint:"),e("pre",null,[e("code",{class:"language-js"},[e("span",{class:"hljs-keyword"},"export"),l(),e("span",{class:"hljs-keyword"},"default"),l(` ({ filter, action }) => {
|
|
2
|
-
filter(`),e("span",{class:"hljs-string"},"'items.create'"),l(", "),e("span",{class:"hljs-function"},"() =>"),l(` {
|
|
3
|
-
`),e("span",{class:"hljs-built_in"},"console"),l(".log("),e("span",{class:"hljs-string"},"'Creating Item!'"),l(`);
|
|
4
|
-
});
|
|
5
|
-
|
|
6
|
-
action(`),e("span",{class:"hljs-string"},"'items.create'"),l(", "),e("span",{class:"hljs-function"},"() =>"),l(` {
|
|
7
|
-
`),e("span",{class:"hljs-built_in"},"console"),l(".log("),e("span",{class:"hljs-string"},"'Item created!'"),l(`);
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
`)])]),e("h2",{id:"events"},[l("Events "),e("a",{class:"header-anchor",href:"#events"},"#")]),e("p",null,"Your hook can trigger on a variety of different events. An event is defined by its type and its name."),e("p",null,"There are four event types to choose from:"),e("ul",null,[e("li",null,[e("a",{href:"#filter"},"Filter")]),e("li",null,[e("a",{href:"#action"},"Action")]),e("li",null,[e("a",{href:"#init"},"Init")]),e("li",null,[e("a",{href:"#schedule"},"Schedule")])]),e("p",null,"Use filter hooks when you want the hook to fire before the event. Use action hooks when you want the hook to fire after the event."),e("h3",{id:"filter"},[l("Filter "),e("a",{class:"header-anchor",href:"#filter"},"#")]),e("p",null,"Filter hooks act on the event\u2019s payload before the event is fired. They allow you to check, modify, or cancel an event."),e("p",null,[l("Below is an example of canceling a "),e("code",{class:""},"create"),l(" event by throwing a standard Directus exception.")]),e("pre",null,[e("code",{class:"language-js"},[e("span",{class:"hljs-keyword"},"export"),l(),e("span",{class:"hljs-keyword"},"default"),l(` ({ filter }, { exceptions }) => {
|
|
11
|
-
`),e("span",{class:"hljs-keyword"},"const"),l(` { InvalidPayloadException } = exceptions;
|
|
12
|
-
|
|
13
|
-
filter(`),e("span",{class:"hljs-string"},"'items.create'"),l(", "),e("span",{class:"hljs-keyword"},"async"),l(` (input) => {
|
|
14
|
-
`),e("span",{class:"hljs-keyword"},"if"),l(` (LOGIC_TO_CANCEL_EVENT) {
|
|
15
|
-
`),e("span",{class:"hljs-keyword"},"throw"),l(),e("span",{class:"hljs-keyword"},"new"),l(` InvalidPayloadException(WHAT_IS_WRONG);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
`),e("span",{class:"hljs-keyword"},"return"),l(` input;
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
`)])]),e("p",null,"The filter register function receives two parameters:"),e("ul",null,[e("li",null,"The event name"),e("li",null,"A callback function that is executed whenever the event fires.")]),e("p",null,"The callback function itself receives three parameters:"),e("ul",null,[e("li",null,"The modifiable payload"),e("li",null,"An event-specific meta object"),e("li",null,"A context object")]),e("p",null,"The context object has the following properties:"),e("ul",null,[e("li",null,[e("code",{class:""},"database"),l(" \u2014 The current database transaction")]),e("li",null,[e("code",{class:""},"schema"),l(" \u2014 The current API schema in use")]),e("li",null,[e("code",{class:""},"accountability"),l(" \u2014 Information about the current user")])]),e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Performance"),e("p",null,[l("Filters can impact performance when not carefully implemented, as they are executed in a blocking manner. This applies in particular to filters firing on "),e("code",{class:""},"read"),l(" events, where a single request can result in a large amount of database reads.")])]),e("h3",{id:"action"},[l("Action "),e("a",{class:"header-anchor",href:"#action"},"#")]),e("p",null,"Action hooks execute after a defined event and receive data related to the event. Use action hooks when you need to automate responses to CRUD events on items or server actions."),e("p",null,"The action register function receives two parameters:"),e("ul",null,[e("li",null,"The event name"),e("li",null,"A callback function that is executed whenever the event fires.")]),e("p",null,"The callback function itself receives two parameters:"),e("ul",null,[e("li",null,"An event-specific meta object"),e("li",null,"A context object")]),e("p",null,"The context object has the following properties:"),e("ul",null,[e("li",null,[e("code",{class:""},"database"),l(" \u2014 The current database transaction")]),e("li",null,[e("code",{class:""},"schema"),l(" \u2014 The current API schema in use")]),e("li",null,[e("code",{class:""},"accountability"),l(" \u2014 Information about the current user")])]),e("h3",{id:"init"},[l("Init "),e("a",{class:"header-anchor",href:"#init"},"#")]),e("p",null,"Init hooks execute at a defined point within the lifecycle of Directus. Use init hook objects to inject logic into internal services."),e("p",null,"The init register function receives two parameters:"),e("ul",null,[e("li",null,"The event name"),e("li",null,"A callback function that is executed whenever the event fires.")]),e("p",null,"The callback function itself receives one parameter:"),e("ul",null,[e("li",null,"An event-specific meta object")]),e("h3",{id:"schedule"},[l("Schedule "),e("a",{class:"header-anchor",href:"#schedule"},"#")]),e("p",null,[l("Schedule hooks execute at certain points in time rather than when Directus performs a specific action. This is supported through "),e("a",{href:"https://www.npmjs.com/package/node-cron",target:"_blank",rel:"noopener noreferrer"},[e("code",{class:""},"node-cron")]),l(".")]),e("p",null,[l("To set up a scheduled event, provide a cron statement as the first parameter to the "),e("code",{class:""},"schedule()"),l(" function. For example "),e("code",{class:""},"schedule('15 14 1 * *', <...>)"),l(" (at 14:15 on day-of-month 1) or "),e("code",{class:""},"schedule('5 4 * * sun', <...>)"),l(" (at 04:05 on Sunday).")]),e("p",null,"Below is an example of registering a schedule hook."),e("pre",null,[e("code",{class:"language-js"},[e("span",{class:"hljs-keyword"},"import"),l(" axios "),e("span",{class:"hljs-keyword"},"from"),l(),e("span",{class:"hljs-string"},"'axios'"),l(`;
|
|
22
|
-
|
|
23
|
-
`),e("span",{class:"hljs-keyword"},"export"),l(),e("span",{class:"hljs-keyword"},"default"),l(` ({ schedule }) => {
|
|
24
|
-
schedule(`),e("span",{class:"hljs-string"},"'*/15 * * * *'"),l(", "),e("span",{class:"hljs-keyword"},"async"),l(` () => {
|
|
25
|
-
`),e("span",{class:"hljs-keyword"},"await"),l(" axios.post("),e("span",{class:"hljs-string"},"'http://example.com/webhook'"),l(", { "),e("span",{class:"hljs-attr"},"message"),l(": "),e("span",{class:"hljs-string"},"'Another 15 minutes passed...'"),l(` });
|
|
26
|
-
});
|
|
27
|
-
};
|
|
28
|
-
`)])]),e("h2",{id:"available-events"},[l("Available Events "),e("a",{class:"header-anchor",href:"#available-events"},"#")]),e("h3",{id:"filter-events"},[l("Filter Events "),e("a",{class:"header-anchor",href:"#filter-events"},"#")]),e("table",null,[e("thead",null,[e("tr",null,[e("th",null,"Name"),e("th",null,"Payload"),e("th",null,"Meta")])]),e("tbody",null,[e("tr",null,[e("td",null,[e("code",{class:""},"request.not_found")]),e("td",null,[e("code",{class:""},"false")]),e("td",null,[e("code",{class:""},"request"),l(", "),e("code",{class:""},"response")])]),e("tr",null,[e("td",null,[e("code",{class:""},"request.error")]),e("td",null,"The request errors"),e("td",null,"\u2013")]),e("tr",null,[e("td",null,[e("code",{class:""},"database.error")]),e("td",null,"The database error"),e("td",null,[e("code",{class:""},"client")])]),e("tr",null,[e("td",null,[e("code",{class:""},"auth.login")]),e("td",null,"The login payload"),e("td",null,[e("code",{class:""},"status"),l(", "),e("code",{class:""},"user"),l(", "),e("code",{class:""},"provider")])]),e("tr",null,[e("td",null,[e("code",{class:""},"auth.jwt")]),e("td",null,"The auth token"),e("td",null,[e("code",{class:""},"status"),l(", "),e("code",{class:""},"user"),l(", "),e("code",{class:""},"provider"),l(", "),e("code",{class:""},"type")])]),e("tr",null,[e("td",null,[e("code",{class:""},"authenticate")]),e("td",null,"The empty accountability object"),e("td",null,[e("code",{class:""},"req")])]),e("tr",null,[e("td",null,[e("code",{class:""},"(<collection>.)items.read")]),e("td",null,"The read item"),e("td",null,[e("code",{class:""},"query"),l(", "),e("code",{class:""},"collection")])]),e("tr",null,[e("td",null,[e("code",{class:""},"(<collection>.)items.create")]),e("td",null,"The new item"),e("td",null,[e("code",{class:""},"collection")])]),e("tr",null,[e("td",null,[e("code",{class:""},"(<collection>.)items.update")]),e("td",null,"The updated item"),e("td",null,[e("code",{class:""},"keys"),l(", "),e("code",{class:""},"collection")])]),e("tr",null,[e("td",null,[e("code",{class:""},"(<collection>.)items.delete")]),e("td",null,"The keys of the item"),e("td",null,[e("code",{class:""},"collection")])]),e("tr",null,[e("td",null,[e("code",{class:""},"<system-collection>.create")]),e("td",null,"The new item"),e("td",null,[e("code",{class:""},"collection")])]),e("tr",null,[e("td",null,[e("code",{class:""},"<system-collection>.update")]),e("td",null,"The updated item"),e("td",null,[e("code",{class:""},"keys"),l(", "),e("code",{class:""},"collection")])]),e("tr",null,[e("td",null,[e("code",{class:""},"<system-collection>.delete")]),e("td",null,"The keys of the item"),e("td",null,[e("code",{class:""},"collection")])])])]),e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"System Collections"),e("p",null,[e("code",{class:""},"<system-collection>"),l(" should be replaced with one of the system collection names "),e("code",{class:""},"activity"),l(", "),e("code",{class:""},"collections"),l(", "),e("code",{class:""},"fields"),l(", "),e("code",{class:""},"files"),l(" (except create/update), "),e("code",{class:""},"folders"),l(", "),e("code",{class:""},"permissions"),l(", "),e("code",{class:""},"presets"),l(", "),e("code",{class:""},"relations"),l(", "),e("code",{class:""},"revisions"),l(", "),e("code",{class:""},"roles"),l(", "),e("code",{class:""},"settings"),l(", "),e("code",{class:""},"users"),l(" or "),e("code",{class:""},"webhooks"),l(".")])]),e("h3",{id:"action-events"},[l("Action Events "),e("a",{class:"header-anchor",href:"#action-events"},"#")]),e("table",null,[e("thead",null,[e("tr",null,[e("th",null,"Name"),e("th",null,"Meta")])]),e("tbody",null,[e("tr",null,[e("td",null,[e("code",{class:""},"server.start")]),e("td",null,[e("code",{class:""},"server")])]),e("tr",null,[e("td",null,[e("code",{class:""},"server.stop")]),e("td",null,[e("code",{class:""},"server")])]),e("tr",null,[e("td",null,[e("code",{class:""},"response")]),e("td",null,[e("code",{class:""},"request"),l(", "),e("code",{class:""},"response"),l(", "),e("code",{class:""},"ip"),l(", "),e("code",{class:""},"duration"),l(", "),e("code",{class:""},"finished")])]),e("tr",null,[e("td",null,[e("code",{class:""},"auth.login")]),e("td",null,[e("code",{class:""},"payload"),l(", "),e("code",{class:""},"status"),l(", "),e("code",{class:""},"user"),l(", "),e("code",{class:""},"provider")])]),e("tr",null,[e("td",null,[e("code",{class:""},"files.upload")]),e("td",null,[e("code",{class:""},"payload"),l(", "),e("code",{class:""},"key"),l(", "),e("code",{class:""},"collection")])]),e("tr",null,[e("td",null,[e("code",{class:""},"(<collection>.)items.read")]),e("td",null,[e("code",{class:""},"payload"),l(", "),e("code",{class:""},"query"),l(", "),e("code",{class:""},"collection")])]),e("tr",null,[e("td",null,[e("code",{class:""},"(<collection>.)items.create")]),e("td",null,[e("code",{class:""},"payload"),l(", "),e("code",{class:""},"key"),l(", "),e("code",{class:""},"collection")])]),e("tr",null,[e("td",null,[e("code",{class:""},"(<collection>.)items.update")]),e("td",null,[e("code",{class:""},"payload"),l(", "),e("code",{class:""},"keys"),l(", "),e("code",{class:""},"collection")])]),e("tr",null,[e("td",null,[e("code",{class:""},"(<collection>.)items.delete")]),e("td",null,[e("code",{class:""},"keys"),l(", "),e("code",{class:""},"collection")])]),e("tr",null,[e("td",null,[e("code",{class:""},"(<collection>.)items.sort")]),e("td",null,[e("code",{class:""},"collection"),l(", "),e("code",{class:""},"item"),l(", "),e("code",{class:""},"to")])]),e("tr",null,[e("td",null,[e("code",{class:""},"<system-collection>.create")]),e("td",null,[e("code",{class:""},"payload"),l(", "),e("code",{class:""},"key"),l(", "),e("code",{class:""},"collection")])]),e("tr",null,[e("td",null,[e("code",{class:""},"<system-collection>.update")]),e("td",null,[e("code",{class:""},"payload"),l(", "),e("code",{class:""},"keys"),l(", "),e("code",{class:""},"collection")])]),e("tr",null,[e("td",null,[e("code",{class:""},"<system-collection>.delete")]),e("td",null,[e("code",{class:""},"keys"),l(", "),e("code",{class:""},"collection")])])])]),e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"System Collections"),e("p",null,[e("code",{class:""},"<system-collection>"),l(" should be replaced with one of the system collection names "),e("code",{class:""},"activity"),l(", "),e("code",{class:""},"collections"),l(", "),e("code",{class:""},"fields"),l(", "),e("code",{class:""},"files"),l(" (except create/update), "),e("code",{class:""},"folders"),l(", "),e("code",{class:""},"permissions"),l(", "),e("code",{class:""},"presets"),l(", "),e("code",{class:""},"relations"),l(", "),e("code",{class:""},"revisions"),l(", "),e("code",{class:""},"roles"),l(", "),e("code",{class:""},"settings"),l(", "),e("code",{class:""},"users"),l(" or "),e("code",{class:""},"webhooks"),l(".")])]),e("h3",{id:"init-events"},[l("Init Events "),e("a",{class:"header-anchor",href:"#init-events"},"#")]),e("table",null,[e("thead",null,[e("tr",null,[e("th",null,"Name"),e("th",null,"Meta")])]),e("tbody",null,[e("tr",null,[e("td",null,[e("code",{class:""},"cli.before")]),e("td",null,[e("code",{class:""},"program")])]),e("tr",null,[e("td",null,[e("code",{class:""},"cli.after")]),e("td",null,[e("code",{class:""},"program")])]),e("tr",null,[e("td",null,[e("code",{class:""},"app.before")]),e("td",null,[e("code",{class:""},"app")])]),e("tr",null,[e("td",null,[e("code",{class:""},"app.after")]),e("td",null,[e("code",{class:""},"app")])]),e("tr",null,[e("td",null,[e("code",{class:""},"routes.before")]),e("td",null,[e("code",{class:""},"app")])]),e("tr",null,[e("td",null,[e("code",{class:""},"routes.after")]),e("td",null,[e("code",{class:""},"app")])]),e("tr",null,[e("td",null,[e("code",{class:""},"routes.custom.before")]),e("td",null,[e("code",{class:""},"app")])]),e("tr",null,[e("td",null,[e("code",{class:""},"routes.custom.after")]),e("td",null,[e("code",{class:""},"app")])]),e("tr",null,[e("td",null,[e("code",{class:""},"middlewares.before")]),e("td",null,[e("code",{class:""},"app")])]),e("tr",null,[e("td",null,[e("code",{class:""},"middlewares.after")]),e("td",null,[e("code",{class:""},"app")])])])]),e("h2",{id:"register-function"},[l("Register Function "),e("a",{class:"header-anchor",href:"#register-function"},"#")]),e("p",null,"The register function receives an object containing the type-specific register functions as the first parameter:"),e("ul",null,[e("li",null,[e("code",{class:""},"filter"),l(" \u2014 Listen for a filter event")]),e("li",null,[e("code",{class:""},"action"),l(" \u2014 Listen for an action event")]),e("li",null,[e("code",{class:""},"init"),l(" \u2014 Listen for an init event")]),e("li",null,[e("code",{class:""},"schedule"),l(" \u2014 Execute a function at certain points in time")])]),e("p",null,"The second parameter is a context object with the following properties:"),e("ul",null,[e("li",null,[e("code",{class:""},"services"),l(" \u2014 All API internal services")]),e("li",null,[e("code",{class:""},"exceptions"),l(" \u2014 API exception objects that can be used for throwing \u201Cproper\u201D errors")]),e("li",null,[e("code",{class:""},"database"),l(" \u2014 Knex instance that is connected to the current database")]),e("li",null,[e("code",{class:""},"getSchema"),l(" \u2014 Async function that reads the full available schema for use in services")]),e("li",null,[e("code",{class:""},"env"),l(" \u2014 Parsed environment variables")]),e("li",null,[e("code",{class:""},"logger"),l(" \u2014 "),e("a",{href:"https://github.com/pinojs/pino",target:"_blank",rel:"noopener noreferrer"},"Pino"),l(" instance.")]),e("li",null,[e("code",{class:""},"emitter"),l(" \u2014 "),e("a",{href:"https://github.com/directus/directus/blob/main/api/src/emitter.ts",target:"_blank",rel:"noopener noreferrer"},"Event emitter"),l(" instance that can be used to trigger custom events for other extensions.")])]),e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Event loop"),e("p",null,"When implementing custom events using the emitter make sure you never directly or indirectly emit the same event your hook is currently handling as that would result in an infinite loop!")]),e("h2",{id:"example%3A-sync-with-external"},[l("Example: Sync with External "),e("a",{class:"header-anchor",href:"#example%3A-sync-with-external"},"#")]),e("pre",null,[e("code",{class:"language-js"},[e("span",{class:"hljs-keyword"},"import"),l(" axios "),e("span",{class:"hljs-keyword"},"from"),l(),e("span",{class:"hljs-string"},"'axios'"),l(`;
|
|
29
|
-
|
|
30
|
-
`),e("span",{class:"hljs-keyword"},"export"),l(),e("span",{class:"hljs-keyword"},"default"),l(` ({ filter }, { services, exceptions }) => {
|
|
31
|
-
`),e("span",{class:"hljs-keyword"},"const"),l(` { MailService } = services;
|
|
32
|
-
`),e("span",{class:"hljs-keyword"},"const"),l(` { ServiceUnavailableException, ForbiddenException } = exceptions;
|
|
33
|
-
|
|
34
|
-
`),e("span",{class:"hljs-comment"},"// Sync with external recipes service, cancel creation on failure"),l(`
|
|
35
|
-
filter(`),e("span",{class:"hljs-string"},"'items.create'"),l(", "),e("span",{class:"hljs-keyword"},"async"),l(` (input, { collection }, { schema }) => {
|
|
36
|
-
`),e("span",{class:"hljs-keyword"},"if"),l(" (collection !== "),e("span",{class:"hljs-string"},"'recipes'"),l(") "),e("span",{class:"hljs-keyword"},"return"),l(` input;
|
|
37
|
-
|
|
38
|
-
`),e("span",{class:"hljs-keyword"},"const"),l(" mailService = "),e("span",{class:"hljs-keyword"},"new"),l(` MailService({ schema });
|
|
39
|
-
|
|
40
|
-
`),e("span",{class:"hljs-keyword"},"try"),l(` {
|
|
41
|
-
`),e("span",{class:"hljs-keyword"},"await"),l(" axios.post("),e("span",{class:"hljs-string"},"'https://example.com/recipes'"),l(`, input);
|
|
42
|
-
`),e("span",{class:"hljs-keyword"},"await"),l(` mailService.send({
|
|
43
|
-
`),e("span",{class:"hljs-attr"},"to"),l(": "),e("span",{class:"hljs-string"},"'person@example.com'"),l(`,
|
|
44
|
-
`),e("span",{class:"hljs-attr"},"template"),l(`: {
|
|
45
|
-
`),e("span",{class:"hljs-attr"},"name"),l(": "),e("span",{class:"hljs-string"},"'item-created'"),l(`,
|
|
46
|
-
`),e("span",{class:"hljs-attr"},"data"),l(`: {
|
|
47
|
-
`),e("span",{class:"hljs-attr"},"collection"),l(`: collection,
|
|
48
|
-
},
|
|
49
|
-
},
|
|
50
|
-
});
|
|
51
|
-
} `),e("span",{class:"hljs-keyword"},"catch"),l(` (error) {
|
|
52
|
-
`),e("span",{class:"hljs-keyword"},"throw"),l(),e("span",{class:"hljs-keyword"},"new"),l(` ServiceUnavailableException(error);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
input.syncedWithExample = `),e("span",{class:"hljs-literal"},"true"),l(`;
|
|
56
|
-
|
|
57
|
-
`),e("span",{class:"hljs-keyword"},"return"),l(` input;
|
|
58
|
-
});
|
|
59
|
-
};
|
|
60
|
-
`)])])],-1),d={title:"Custom API Hooks",modularExtension:!0},u={name:"hooks",setup(h,{expose:t}){return t({frontmatter:{title:"Custom API Hooks",modularExtension:!0}}),(p,f)=>{const n=c("docswrapper");return a(),o(n,{frontmatter:d},{default:r(()=>[i]),_:1})}}};typeof s=="function"&&s(u);export{u as default,d as frontmatter};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var a={identifier:"Pengenal",avatar:"Avatar",application:"Aplikasi",default_provider:"Bawaan",published:"Dipublikasikan",draft:"Konsep",archived:"Diarsipkan",modules:"Modul",module_bar:"Papan Modul",tile_size:"Ukuran Corak",edit_field:"Edit Kolom",conditions:"Kondisi",location:"Lokasi",maps:"Peta",switch_user:"Beralih/ganti pengguna",item_creation:"Pembuatan Item",item_revision:"Revisi Item",enter_a_name:"Masukkan sebuah Nama...",duplicate_field:"Kolom Duplikat",half_width:"Lebar Setengah",full_width:"Lebar Penuh",group:"Grup",and:"Dan",or:"Atau",fill_width:"Lebar Penuh",field_name_translations:"Terjemahan Nama Kolom",enter_password_to_enable_tfa:"Masukkan password anda untuk Two-Factor Authentication",add_field:"Tambah Kolom",role_name:"Nama Peran",branch:"Cabang",leaf:"Daun",indeterminate:"Tidak tentu",edit_collection:"Edit Koleksi",exclusive:"Ekklusif",children:"Anak",db_only_click_to_configure:"Hanya Database: Tekan untuk Konfigurasi",show_active_items:"Tampilkan Item Aktif",show_archived_items:"Tampilkan Yang Diarsipkan",show_all_items:"Tampilkan semua item",edited:"Nilai Diedit",required:"Diperlukan",required_for_app_access:"Diperlukan untuk Akses Aplikasi",requires_value:"Wajib memiliki nilai",create_preset:"Buat Preset",create_panel:"Buat Panel",create_role:"Buat Peran",create_user:"Buat User",delete_panel:"Hapus Panel",create_webhook:"Buat Webhook",invite_users:"Undang Pengguna Lain",invite:"Undang",email_already_invited:'Email "{email}" sudah diundang',subject:"Subjek",inbox:"Kotak Masuk",emails:"Surel",connection_excellent:"Koneksi Luar Biasa",connection_good:"Koneksi Bagus",connection_fair:"Koneksi Standar",connection_poor:"Koneksi Buruk",primary:"Primer",rename_folder:"Ubah nama folder",delete_folder:"Hapus Folder",prefix:"Awalan",suffix:"Akhiran",reset_bookmark:"Hapus Markah",update_bookmark:"Hapus Markah",delete_bookmark:"Hapus Markah",delete_bookmark_copy:'Apakah anda yakin ingin menghapus markah "{bookmark}"? Tindakan ini tidak dapat dikembalikan.',logoutReason:{SIGN_OUT:"Telah keluar",SESSION_EXPIRED:"Sesi kadaluarsa"},public_label:"Publik",public_description:"Kendalikan data API yang tersedia tanpa autentikasi.",admin_description:"Peran administratif awal tanpa batasan akses aplikasi/API.",not_allowed:"Tidak Diizinkan",directus_version:"Versi Directus",node_version:"Versi Node",node_uptime:"Waktu Jalan Node",os_type:"Tipe OS",os_version:"Versi OS",os_uptime:"Waktu Jalan OS",os_totalmem:"Memori OS",archive:"Arsip",archive_confirm:"Apakah Anda yakin ingin mengarsipkan item ini?",archive_confirm_count:"Tidak ada item terpilih | Apakah Anda yakin ingin mengarsipkan item ini? | Apakah Anda yakin ingin mengarsipkan {count} item ini?",reset_system_permissions_to:"Set Ulang Perizinan Sistem ke:",reset_system_permissions_copy:"Tindakan ini akan menimpa perizinan kustom apapun yang mungkin telah diterapkan ke koleksi sistem. Apakah Anda yakin?",the_following_are_minimum_permissions:'Berikut adalah perizinan minimum yang diperlukan ketika "Akses Aplikasi" diaktifkan. Anda dapat mengembangkan perizinan lebih dari ini, tetapi tidak dibawahnya.',app_access_minimum:"Minimum Akses Aplikasi",recommended_defaults:"Bawaan yang Direkomendasikan",unarchive:"Batalkan pengarsipan",unarchive_confirm:"Apakah Anda yakin ingin membatalkan arsip dari item ini?",nested_files_folders_will_be_moved:"Berkas dan folder yang disarang akan dipindahkan satu tingkat keatas.",validationError:{eq:"Nilai harus {valid}",neq:"Nilai tidak boleh {invalid}",in:"Nilai harus salah satu dari {valid}",nin:"Nilai tidal boleh salah satu dari {invalid}",contains:"Nilai harus memiliki {substring}",ncontains:"Nilai tidak boleh memiliki {substring}",gt:"Nilai harus lebih besar dari {valid}",gte:"Nilai harus lebih besar atau sama dengan {valid}",lt:"Nilai harus kurang dari {valid}",lte:"Nilai harus kurang dari ataus sama dengan {valid}",empty:"Nilai harus kosong",nempty:"Nilai tidak boleh kosong",null:"Nilai harus kosong",nnull:"Nilai tidak boleh kosong",required:"Nilai diperlukan",unique:"Nilai harus unik",regex:"Format nilai tidak tepat"},all_access:"Semua Akses",no_access:"Tidak Ada Akses",use_custom:"Gunakan Kustom",nullable:"Dapat dikosongkan",allow_null_value:"Izinkan nilai KOSONG",allow_multiple:"Izinkan Beberapa",allow_multiple_to_be_open:"Izinkan Beberapa untuk Dibuka",enter_value_to_replace_nulls:"Harap masukkan nilai baru untuk menggantikan nilai kosong pada kolom ini.",field_standard:"Standar",field_presentation:"Presentasi & Alias",field_file:"Satu Berkas",field_files:"Beberapa Berkas",field_m2o:"Hubungan M2O",field_m2a:"Hubungan M2A",field_o2m:"Hubungan O2M",field_m2m:"Hubungan M2M",field_translations:"Terjemahan",field_group:"Grup Bidang",item_permissions:"Perizinan Item",field_permissions:"Perizinan Baris",field_validation:"Validasi Baris",field_presets:"Preset Baris",permissions_for_role:"Item {role} Peran dapat {action}.",fields_for_role:"Baris {role} Peran dapat {action}.",validation_for_role:"Aturan baris {action} Peran {role} harus tunduk.",presets_for_role:"Nilai bawaan baris untuk Peran {role}.",presentation_and_aliases:"Presentasi & Alias",revision_post_create:"Ini adalah bagaimana item ini terlihat ketika dibuat.",revision_post_update:"Ini adalah bagaimana item ini terlihat setelah pembaruan.",changes_made:"Dibawah adalah perubahan spesifik yang dibuat dalam revisi ini.",no_relational_data:"Ingat bahwa data yang berhubungan tidak termasuk disini.",hide_field_on_detail:"Sembunyikan Baris pada Rincian",show_field_on_detail:"Tampilkan Baris pada Rincian",delete_field:"Hapus Baris",fields_and_layout:"Baris & Layout",field_create_success:'Buat Baris: "{field}"',field_update_success:'Perbarui Baris: "{field}"',duplicate_where_to:"Dimana Anda ingin menggandakan baris ini?",language:"Bahasa",aggregate_function:"Fungsi Agregat",aggregate_precision:"Presisi Agregat",group_aggregation:"Grup Agregat",group_precision:"Grup Presisi",global:"Global",admins_have_all_permissions:"Admin memiliki semua perizinan",camera:"Kamera",show_zero:"Tampilkan Kosong",create_in_advanced_field_creation_mode:"Buat Bidang dalam Mode Lanjutan",continue_in_advanced_field_creation_mode:"Lanjutkan di Mode Pembuatan Bidang Lanjutan",sum:"Jumlah",sum_distinct:"Perbedaan Jumlah",avg:"Rata-rata",avg_distinct:"Perbedaan Rata-rata",count:"Hitung",count_distinct:"Perbedaan Hitung",min:"Min",max:"Maks",exposure:"Eksposur",shutter:"Shutter",iso:"ISO",focal_length:"Jarak Fokus",schema_setup_key:"Nama kolom baris database ini dan kunci API",create_field:"Buat Bidang",creating_new_field:"Kolom Baru ({collection})",field_in_collection:"{field} ({collection})",reset_page_preferences:"Reset Preferensi Halaman",hidden_field:"Kolom Tersembunyi",hidden_on_detail:"Disembunyikan dalam Rincian",disabled_editing_value:"Nonaktifkan mengubah nilai",key:"Kunci",alias:"Alias",bigInteger:"Big Integer",boolean:"Boolean",date:"Tanggal",date_range:"Rentang Tanggal",datetime:"DateTime",dateTime:"DateTime",precision:"Presisi",decimal:"Desimal",float:"Float",integer:"Integer",json:"JSON",xml:"XML",string:"String",text:"Teks",time:"Time",timestamp:"Timestamp",uuid:"UUID",hash:"Hash",geometry:"Geometri (Semua)","geometry.Point":"Titik","geometry.LineString":"StringGaris","geometry.Polygon":"Poligon","geometry.MultiPoint":"TitikMulti","geometry.MultiLineString":"Rangkaian beberapa baris","geometry.MultiPolygon":"Banyak poligon",not_available_for_type:"Tidak Tersedia Untuk Tipe Ini",create_translations:"Buat Terjemahan",auto_refresh:"Penyegaran Otomatis",refresh_interval:"Selang Waktu Segarkan",no_refresh:"Jangan Segarkan",refresh_interval_seconds:"Segarkan secara Instan | Setiap Detik | Setiap {seconds} Detik",refresh_interval_minutes:"Setiap Menit | Setiap {minutes} Menit",auto_generate:"Buat Otomatis",this_will_auto_setup_fields_relations:"Ini akan secara otomatis menkonfigurasi seluruh kolom dan hubungan yang dibutuhkan.",click_here:"Tekan di sini",to_manually_setup_translations:"untuk secara manual menkonfirgurasi penerjemah.",click_to_manage_translated_fields:"Belum ada baris yang diterjemahkan. Klik disini untuk membuatnya. | Terdapat satu baris yang diterjemahan. Klik disini untuk mengelolanya. | Terdapat {count} baris yang diterjemahkan. Klik disini untuk mengelola baris tersebut.",fields_group:"Grup kolom-kolom",no_collections_found:"Tidak ada koleksi ditemukan.",new_data_alert:"Berikut ini akan dibuat menurut Model Data Anda:",search_collection:"Cari Koleksi...",new_field:"Baris Baru",new_collection:"Koleksi Baru",add_m2o_to_collection:'Tambah M2O ke "{collection}"',add_o2m_to_collection:'Tambah O2M ke "{collection}"',add_m2m_to_collection:'Tambah M2M ke "{collection}"',choose_a_type:"Pilih tipe...",determined_by_relationship:"Ditentukan oleh relasi",add_note:"Tambahkan catatan untuk pengguna...",add_link:"Tambahkan Tautan",custom_link:"Tautan khusus",default_value:"Nilai Bawaan",standard_field:"Kolom Standar",single_file:"Satu Berkas",multiple_files:"Beberapa Berkas",m2o_relationship:"Relasi Banyak ke Satu",o2m_relationship:"Relasi Satu ke Banyak",m2m_relationship:"Relasi Banyak ke Banyak",m2a_relationship:"Relasi Banyak ke Semua",invalid_item:"Item tidak Valid",next:"Lanjut",field_name:"Nama Kolom",translations:"Terjemahan",no_translations:"Tidak ada terjemahan",note:"Catatan",enter_a_value:"Masukkan sebuah nilai...",enter_a_placeholder:"Masukkan sebuah placeholder...",length:"Panjang",precision_scale:"Presisi & Skala",readonly:"Hanya-baca",unique:"Unik",updated_on:"Diperbarui Pada",updated_by:"Diperbarui Oleh",primary_key:"Primary Key",foreign_key:"Kunci Asing",finish_setup:"Selesai Setup",dismiss:"Abaikan",raw_value:"Nilai mentah",copy_raw_value:"Salin Nilai Asli",copy_raw_value_success:"Disalin",copy_raw_value_fail:"Gagal menyalin",paste_raw_value:"Tempel Nilai Asli",paste_raw_value_success:"Ditempelkan",paste_raw_value_fail:"Gagal Menempelkan",view_raw_value:"Lihat Nilai Asli",edit_raw_value:"Sunting Nilai Mentah",enter_raw_value:"Masukkan nilai mentah...",clear_value:"Kosongkan Nilai",clear_changes:"Kosongkan Perubahan",reset_to_default:"Atur Ulang ke Bawaan",undo_changes:"Batalkan Perubahan",notifications:"Notifikasi",show_all_activity:"Tampilkan Semua Aktivitas",page_not_found:"Halaman Tidak Ditemukan",page_not_found_body:"Halaman yang Anda cari sepertinya tidak ada.",confirm_revert:"Konfirmasi Kembalikan",confirm_revert_body:"Ini akan mengembalikan item ke keadaaan yang dipilih.",display:"Tampilkan",settings_update_success:"Pengaturan telah diperbarui",title:"Judul",revision_delta_created:"Dibuat",revision_delta_created_externally:"Buat secara Eksternal",revision_delta_updated:"Diperbarui 1 Baris | Diperbarui {count} Baris",revision_delta_deleted:"Terhapus",revision_delta_reverted:"Dikembalikan",revision_delta_other:"Revisi",revision_delta_by:"{date} oleh {user}",private_user:"Pengguna Pribadi",creation_preview:"Pratinjau Kreasi",revision_preview:"Pratinjau Revisi",updates_made:"Pembaruan Dibuat",leave_comment:"Tinggalkan komentar...",post_comment_success:"Komentar telah diposting",item_create_success:"Item telah Dibuat | Item telah Dibuat",item_update_success:"Item telah Diperbarui | Item telah Diperbarui",item_delete_success:"Item telah Dihapus | Item telah Dihapus",this_collection:"Pengumpulan ini",related_collection:"Pengumpulan Terkait",related_collections:"Koleksi Terkait",translations_collection:"Koleksi Terjemahan",languages_collection:"Koleksi Bahasa",import_data_input_placeholder:"CSV atau JSON...",import_data_button:"Mulai Impor",import_data_indeterminate:"Mengimpor Data...",import_data_success:"Data berhasil diimpor dari {filename}",label_import:"Impor",label_export:"Ekspor",import_export:"Impor / Ekspor",format:"Format",last_page:"Halaman Terakhir",last_access:"Akses Terakhir",fill_template:"Isi dengan Nilai Template",a_unique_table_name:"Sebuah nama tabel unik...",a_unique_column_name:"Sebuah nama kolom unik...",enable_custom_values:"Aktifkan nilai khusus",submit:"Kirim",move_to_folder:"Pindahkan ke Folder",move:"Pindah",system:"Sistem",add_field_related:"Tambah Baris ke Koleksi Terkait",interface_label:"Antarmuka",today:"Hari Ini",yesterday:"Kemarin",delete_comment:"Hapus Komentar",functions:{year:"Tahun",month:"Bulan",count:"Hitung"},"date-fns_date":"PPP","date-fns_time":"h:mm:ss a","date-fns_time_no_seconds":"h:mm a","date-fns_date_short":"MMM d, u","date-fns_time_short":"h:mma","date-fns_date_short_no_year":"MMM d",minutes:"Menit",hours:"Jam",month:"Bulan",year:"Tahun",select_all:"Pilih Semua",months:{january:"Januari",february:"Februari",march:"Maret",april:"April",may:"Mei",june:"Juni",july:"Juli",august:"Agustus",september:"September",october:"Oktober",november:"November",december:"Desember"},drag_mode:"Mode Tarik",cancel_crop:"Batalkan Pemotongan",original:"Orisinal",url:"URL",import_label:"Impor",file_details:"Rincian Berkas",dimensions:"Dimensi",size:"Ukuran",created:"Dibuat",modified:"Telah dimodifikasi",checksum:"Checksum",owner:"Pemilik",edited_by:"Diedit oleh",folder:"Direktori",zoom:"Perbesar",download:"Unduh",open:"Buka",open_in_new_window:"Buka di Jendela Baru",open_folder:'Buka folder "{folder}"',foreground_color:"Warna Latar Depan",background_color:"Warna Latar Belakang",upload_from_device:"Unggah Berkas dari Perangkat",choose_from_library:"Pilih Berkas dari Pustaka",import_from_url:"Impor Berkas dari URL",replace_from_device:"Menggantikan Berkas dari Perangkat",replace_from_library:"Menggantikan Berkas dari Pustaka",replace_from_url:"Menggantikan Berkas dari URL",no_file_selected:"Tidak Ada Berkas Yang Dipilih",download_file:"Unduh Berkas",collection_key:"Kunci Koleksi",name:"Nama",primary_key_field:"Kolom Primary Key",type:"Tipe",creating_new_collection:"Membuat Koleksi Baru",created_by:"Dibuat Oleh",created_on:"Dibuat Pada",creating_collection_info:'Nama dari koleksi dan pengaturan/setup baris "kunci" unik...',creating_collection_system:"Aktifkan dan ganti nama baris opsional manapun ini.",auto_increment_integer:"Integer bertambah-otomatis",generated_uuid:"UUID yang Dihasilkan",manual_string:"String yang diinput manual",save_and_create_new:"Simpan dan Buat Baru",save_and_stay:"Simpan dan Tinggal",save_as_copy:"Simpan sebagai Salinan",add_existing:"Tambahkan Yang Ada",creating_items:"Membuat Item",enable_create_button:"Aktifkan Tombol Buat Baru",selecting_items:"Memilih item",enable_select_button:"Aktifkan Tombol Pemilihan",comments:"Komentar",no_comments:"Belum Ada Komentar",click_to_expand:"Tekan Untuk Memperluas",select_item:"Pilih Item",no_items:"Tidak Ada Item",search_items:"Cari item...",disabled:"Dinonaktifkan",information:"Informasi",report_bug:"Laporkan Bug",request_feature:"Meminta Fitur",interface_not_found:'Antarmuka "{interface}" tidak ditemukan.',reset_interface:"Atur ulang Antarmuka",display_not_found:'Tampilan "{display}" tidka ditemukan.',reset_display:"Set ulang Tampilan","list-m2a":"Pembangun (M2A)",item_count:"Tidak Ada Item | Satu Item | {count} Item",no_items_copy:"Belum ada item pada koleksi ini.",file_count:"Tidak Ada Berkas | Satu Berkas | {count} Berkas",no_files_copy:"Tidak ada berkas disini.",user_count:"Tidak Ada Pengguna | Satu Pengguna | {count} Pengguna",no_users_copy:"Belum ada pengguna didalam peran ini.",webhooks_count:"Tidak Ada Webhook | Satu Webhook | {count} Webhook",no_webhooks_copy:"Belum ada webhook yang dikonfigurasi. Mulailah dengan membuat satu di bawah ini.",no_notifications:"Tidak ada Pemberitahuan",no_notifications_copy:"Selesai!",activity_log:"Catatan Aktifitas",all_items:"Semua Item",any:"Setiap",csv:"CSV",no_collections:"Tidak ada koleksi",create_collection:"Buat Pengumpulan",no_collections_copy_admin:"Kamu belum punya Koleksi. Klik tombol di bawah ini untuk memulai.",no_collections_copy:"Kamu belum memiliki Koleksi. Silakan hubungi administrator sistem.",relationship_not_setup:"Relasi tidak dikonfigurasi dengan benar",display_template_not_setup:"Opsi templat tampilan disalahkonfigurasikan",collection_field_not_setup:"Opsi bidang koleksi disalahkonfigurasikan",select_a_collection:"Pilih Koleksi",select_a_field:"Pilih Bidang",active:"Aktif",move_to:"Pindahkan ke...",copy:"Salin",copy_to:"Salin ke...",no_other_dashboards_copy:"Anda belum memiliki Dasbor lainnya.",inactive:"Tidak aktif",users:"Pengguna",activity:"Aktivitas",activity_item:"Item Aktifitas",action:"Aksi",ip_address:"Alamat IP",user_agent:"Agen pengguna",webhooks:"Webhooks",decimals:"Desimal",value_decimals:"Nilai Desimal",min_value:"Nilai minimal",max_value:"Nilai maksimal",automatic:"Otomatis",field_width:"Lebar Bidang",add_filter:"Tambah Filter",upper_limit:"Batas atas...",lower_limit:"Batas bawah...",user_directory:"Direktori Pengguna",documentation:"Dokumentasi",sidebar:"Bilahsamping",duration:"Durasi",charset:"Charset",second:"detik",file_moved:"Berkas Dipindahkan",collection_created:"Koleksi Dibuat",modified_on:"Dimodifikasi Pada",card_size:"Ukuran Kartu",sort_field:"Sortir Baris",add_sort_field:"Tambah Baris Sortir",sort:"Sortir",status:"Status",remove:"Hapus",toggle_manual_sorting:"Aktifkan Sortir Manual",bookmark_doesnt_exist:"Bookmark Tidak Tersedia",bookmark_doesnt_exist_copy:"Bookmark yang Anda ingin bukan tidak dapat ditemukan.",bookmark_doesnt_exist_cta:"Kembali ke koleksi",select_an_item:"Pilih sebuah item...",edit:"Edit",enabled:"Diaktifkan",disable_tfa:"Nonaktifkan 2FA",tfa_scan_code:"Scan kode pada aplikasi peng-autentifikasi untuk menyelesaikan pengaturan 2FA",enter_otp_to_disable_tfa:"Masukkan kode OTP untuk menonaktifkan 2FA",create_account:"Buat Akun",account_created_successfully:"Akun Berhasil Dibuat",auto_fill:"Isi Otomatis",corresponding_field:"Bidang yang sesuai",errors:{COLLECTION_NOT_FOUND:"Koleksi tidak tersedia",FIELD_NOT_FOUND:"Baris tidak ditemukan",FORBIDDEN:"Dilarang",INVALID_CREDENTIALS:"Nama pengguna atau kata sandi salah",INVALID_OTP:"Kata sandi satu-kali salah",INVALID_PAYLOAD:"Payload tidak valid",INVALID_QUERY:"Kueri tidak valid",ITEM_LIMIT_REACHED:"Batas item tercapai",ITEM_NOT_FOUND:"Item tidak ditemukan",ROUTE_NOT_FOUND:"Tidak ditemukan",RECORD_NOT_UNIQUE:"Nilai duplikat terdeteksi",USER_SUSPENDED:"Pengguna Ditangguhkan",CONTAINS_NULL_VALUES:"Bidang berisi nilai nol",UNPROCESSABLE_ENTITY:"Entitas yang tidak dapat diproses",INTERNAL_SERVER_ERROR:"Kesalahan Tidak Terduga",NOT_NULL_VIOLATION:"Nilai tidak boleh kosong",ILLEGAL_ASSET_TRANSFORMATION:"Sumber gambar terlalu besar untuk diratinjau",VALUE_TOO_LONG:"Nilai terlalu panjang",VALUE_OUT_OF_RANGE:"Nilai di luar rentang",INVALID_FOREIGN_KEY:"Foreign key tidak valid",UNKNOWN:"Kesalahan Tidak Terduga"},security:"Keamanan",value_hashed:"Nilai telah Di-hash secara Aman",bookmark_name:"Nama bookmark...",create_bookmark:"Buat Bookmark",edit_bookmark:"Sunting Bookmark",bookmarks:"Markah",presets:"Preset",unexpected_error:"Kesalahan Tidak Terduga",unexpected_error_copy:"Terjadi galat yang tidak terduga, Silahkan mencoba lagi nanti.",copy_details:"Salin Rincian",no_app_access:"Tidak Ada Akses Aplikasi",no_app_access_copy:"Pengguna ini tidak diperbolehkan untuk menggunakan aplikasi admin.",password_reset_successful:"Sandi berhasil diatur ulang",back:"Kembali",filter:"Penyaring",editing_image:"Menyunting Gambar",square:"Persegi",free:"Bebas",flip_horizontal:"Balik Horisontal",flip_vertical:"Balik Vertikal",aspect_ratio:"Rasio Aspek",rotate:"Putar",all_users:"Semua Pengguna",delete_collection:"Hapus Koleksi",update_collection_success:"Perbarui Koleksi",delete_collection_success:"Koleksi yang Dihapus",make_collection_visible:"Buat Koleksi Terlihat",make_collection_hidden:"Buat Koleksi Tersembunyi",make_folder_visible:"Buat Folder Terlihat",make_folder_hidden:"Buat Folder Tersembunyi",start_end_of_count_items:"{start}-{end} dari {count} item",start_end_of_count_filtered_items:"{start}-{end} dari {count} item yang di filter",one_item:"1 item",one_filtered_item:"1 item yang di filter",collections_shown:"Koleksi yang ditampilkan",visible_collections:"Koleksi yang terlihat",hidden_collections:"Koleksi yang tersembunyi",show_hidden_collections:"Tampilkan koleksi yang tersembunyi",hide_hidden_collections:"Sembunyikan koleksi yang tersembunyi",show_header:"Tampilkan Tajuk",unmanaged_collections:"Koleksi yang tidak dikonfigurasi",system_collections:"Koleksi Sistem",placeholder:"Tulisan default pada input",icon_left:"Ikon Kiri",icon_right:"Ikon Kanan",count_other_revisions:"{count} Perbaikan lainnya",font:"Huruf",sans_serif:"Sans Serif",serif:"Serif",monospace:"Monospace",divider:"Pembagi/Pemecah",color:"Warna",circle:"Lingkaran",empty_item:"Item kosong",log_in_with:"Masuk dengan {provider}",conditional_styles:"Gaya Bersyarat",advanced_settings:"Pengaturan Lanjutan",advanced_filter:"Filter Lanjutan",delete_advanced_filter:"Hapus Filter",change_advanced_filter_operator:"Ganti Operator",operators:{eq:"Sama dengan",neq:"Tidak sama dengan",lt:"Kurang dari",gt:"Lebih besar dari",lte:"Kurang dari atau sama dengan",gte:"Lebih besar dari atau sama dengan",in:"Adalah salah satu dari",nin:"Bukan salah satu dari",null:"Adalah kosong",nnull:"Bukan null",contains:"Mengandung",ncontains:"Tidak mengandung",starts_with:"Dimulai dengan",nstarts_with:"Tidak dimulai dengan",ends_with:"Berakhir dengan",nends_with:"Tidak berakhir dengan",between:"Diantara",nbetween:"Tidak Diantara",empty:"Kosong",nempty:"Tidak kosong",all:"Berisi kunci-kunci ini",has:"Berisi sebagian kunci ini",intersects:"Beririsan",nintersects:"Tidak beririsan",intersects_bbox:"Memotong kotak pembatas",nintersects_bbox:"Tidak memotong kotak pembatas"},loading:"Memuat...",drop_to_upload:"Lepas untuk mengunggah",item:"Barang",items:"Barang-barang",upload_file:"Unggah Berkas",upload_file_indeterminate:"Mengunggah Berkas...",upload_file_success:"Berkas Diunggah",upload_files_indeterminate:"Mengunggah berkas {done}/{total}",upload_files_success:"{count} Berkas Diunggah",upload_pending:"Unggahan Tertunda",drag_file_here:"Geser & Lepas berkas disini",click_to_browse:"Klik untuk jelajahi",interface_options:"Pilihan Antarmuka",layout_options:"Pilihan Tata Letak",rows:"Baris",columns:"Kolom",collection_setup:"Penyiapan Koleksi",optional_system_fields:"Bidang sistem opsional",value_unique:"Nilai harus unik",all_activity:"Semua Aktivitas",create_item:"Buat item",display_template:"Tampilan Template",language_display_template:"Templat Tampilan Bahasa",translations_display_template:"Templat Tampilan Terjemahan",n_items_selected:"Tidak ada Item yang Dipilih | 1 Item Dipilih | {n} Item Dipilih",per_page:"Per Halaman",all_files:"Semua Berkas",my_files:"Berkas Saya",recent_files:"Berkas Terbaru",create_folder:"Buat Map",edit_folder:"Sunting Map",folder_name:"Nama Folder...",folder_key:"Kunci Map...",add_file:"Tambahkan berkas",replace_file:"Ganti berkas",no_results:"Tidak Ada Hasil",no_results_copy:"Sesuaikan atau bersihkan filter pencarian untuk melihat hasil.",clear_filters:"Bersihkan Filter",saves_automatically:"Menyimpan Secara Otomatis",role:"Peran",rule:"Aturan",user:"Pengguna",no_presets:"Tidak ada preset",no_presets_copy:"Belum ada preset atau penanda buku yang disimpan.",no_presets_cta:"Tambahkan preset",presets_only:"Hanya Preset",create:"Buat",on_create:"Saat Dibuat",on_update:"Saat Pembaruan",read:"Baca",update:"Perbarui",delete:"Hapus",select_fields:"Pilih Bidang",format_text:"Format Teks",format_value:"Nilai Format",abbreviate_value:"Singkatan Nilai",operator:"Operator",bold:"Tebal",toggle:"Beralih",icon_on:"Ikon Aktif",icon_off:"Ikon Tidak Aktif",label:"Label",flow_name:"Nama",flow_tracking_activity:"Hanya Aktifitas Melacak",flow_tracking_null:"Jangan Lacak Apapun",insights:"Wawasan",dashboard:"Dasbor",panel:"Panel",panel_options:"Opsi Panel",panel_header:"Judul Panel",panel_name_placeholder:"Beri nama panel ini...",panel_note_placeholder:"Opsi detail tentang panel ini...",panel_delete_confirm:"Apakah Anda yakin ingin menghapus panel ini? Tindakan ini tidak dapat dibatalkan.",dashboard_delete_confirm:"Apakah Anda yakin ingin menghapus dasbor ini? Tindakan ini tidak dapat dibatalkan.",edit_dashboard:"Sunting papan instrumen",delete_dashboard:"Menghapus Dasbor",visible:"Terlihat",prefix_placeholder:"Teks sebelum nilai...",suffix_placeholder:"Teks setelah nilai...",decimals_placeholder:"Jumlah tempat desimal...",no_dashboards:"Tidak ada Dasbor",no_dashboards_copy:"Anda belum memiliki dasbor.",create_dashboard:"Buat Dasbor",dashboard_name:"Nama Dasbor",no_data:"Tidak ada Data",accountability:"Akuntabilitas",full_screen:"Layar Penuh",edit_panels:"Sunting Panel",fit_to_screen:"Sesuaikan dengan Layar",image_url:"Tautan Gambar",alt_text:"Teks Alternatif",media:"Media",quality:"Kualitas",width:"Lebar",height:"Tinggi",source:"Sumber",url_placeholder:"Masukkan tautan...",display_text:"Teks Tampilan",display_text_placeholder:"Masukkan teks tampilan...",interface_group_text_and_numbers:"Teks & Angka",interface_group_selection:"Pilihan",interface_group_relational:"Relasional",interface_group_presentation:"Presentasi",interface_group_groups:"Kelompok",interface_group_other:"Lainnya",tooltip:"Keterangan alat",tooltip_placeholder:"Masukkan keterangan alat...",unlimited:"Tak terbatas",open_link_in:"Buka tautan di",new_tab:"Tab baru",current_tab:"Tab saat ini",save_image:"Simpan Gambar",save_media:"Simpan Media",wysiwyg_options:{aligncenter:"Rata Tengah",alignjustify:"Rata Kanan-Kiri",alignleft:"Rata Kiri",alignnone:"Tidak Sejajar",alignright:"Rata Kanan",forecolor:"Warna Latar Depan",backcolor:"Warna Latar Belakang",bold:"Tebal",italic:"Miring",underline:"Garis Bawah",strikethrough:"Coret Garis",subscript:"Berlangganan",superscript:"Superscript",codeblock:"Kode",blockquote:"Blockquote",bullist:"Daftar Bullet",numlist:"Daftar Nomor",hr:"Garis Horizontal",link:"Tambah/Sunting Tautan",unlink:"Hapus Tautan",media:"Tambah /Sunting Media",image:"Tambahkan/Sunting Gambar",copy:"Salin",cut:"Potong",paste:"Tempel",heading:"Judul",h1:"Judul 1",h2:"Judul 2",h3:"Judul 3",h4:"Judul 4",h5:"Judul 5",h6:"Judul 6",fontselect:"Pilih Fon",fontsizeselect:"Pilih Ukuran Fon",indent:"Indentasi",outdent:"Outdent",undo:"Undo",redo:"Ulangi",remove:"Hapus",removeformat:"Hapus Format",selectall:"Pilih Semua",table:"Tabel",visualaid:"Lihat elemen tak terlihat",source_code:"Edit Kode Sumber",fullscreen:"Layar Penuh",directionality:"Keterarahan"},dropdown:"Dropwdown",choices:"Pilihan",choices_option_configured_incorrectly:"Pilihan dikonfigurasi dengan tidak benar",deselect:"Hapus pilihan",deselect_all:"Hapus Semua",other:"Lainnya...",adding_user:"Menambahkan Pengguna",unknown_user:"Pengguna Tidak Dikenal",creating_in:"Membuat Item di {collection}",editing_in:"Mengedit Item di {collection}",viewing_in:"Melihat Item di {collection}",creating_unit:"Membuat {unit}",editing_unit:"Mengedit {unit}",editing_in_batch:"Mengedit Masal {count} item",no_options_available:"Tidak ada opsi tersedia",settings_data_model:"Model Data",settings_permissions:"Peran dan Izin",settings_project:"Pengaturan Proyek",settings_webhooks:"Webhooks",settings_presets:"Preset & Markah",one_or_more_options_are_missing:"Satu atau lebih opsi hilang",scope:"Lingkup",select:"Pilih...",layout:"Tata letak",tree_view:"Tampilan Pohon",changes_are_permanent:"Perubahan bersifat permanen",preset_name_placeholder:"Berfungsi sebagai bawaan saat kosong...",preset_search_placeholder:"Kueri penelusuran...",editing_preset:"Mengedit Preset",layout_preview:"Pratinjau Tata Letak",layout_setup:"Pengaturan Tata Letak",unsaved_changes:"Perubahan Tidak Disimpan",unsaved_changes_copy:"Anda yakin ingin meninggalkan halaman ini?",discard_changes:"Batalkan Perubahan",discard_all_changes:"Buang Semua Perubahan",discard_changes_copy:"Apakah Anda yakin ingin membatalkan semua perubahan yang dibuat?",show_x_axis:"Menunjukkan Sumbu X",show_y_axis:"Menunjukkan Sumbu Y",keep_editing:"Tetap Mengedit",page_help_collections_overview:"**Ikhtisar Koleksi** - \u2014 Daftar semua koleksi yang perlu anda akses.",page_help_collections_collection:"**Jelajahi Item** \u2014 Daftar semua {collection} item yang perlu Anda akses. Sesuaikan tata letak, filter, dan pengurutan untuk menyesuaikan tampilan Anda, dan bahkan simpan markah dari konfigurasi yang berbeda ini untuk akses cepat.",activity_feed:"Feed Aktifitas",add_new:"Tambah Baru",create_new:"Buat baru",all:"Semua",none:"Tidak ada",batch_delete_confirm:"Tidak ada item terpilih | Apakah Anda yakin ingin menghapus item ini? Tindakan ini tidak dapat dibatalkan. | Apakah Anda yakin ingin menghapus {count} item ini? Tindakan ini tidak dapat dibatalkan.",cancel:"Batal",collection:"Koleksi",collections:"Pengumpulan",content:"Konten",singleton_label:"Perlakukan sebagai objek tunggal",directus_collection:{directus_activity:"Log akuntabilitas untuk semua kejadian",directus_collections:"Konfigurasi koleksi tambahan dan metadata",directus_fields:"Isian konfigurasi tambahan dan metadata"},fields:{directus_activity:{item:"Kunci Utama Item",action:"Aksi",collection:"Koleksi",comment:"Komentar",user_agent:"Agen pengguna",ip:"Alamat IP",revisions:"Revisi"},directus_collections:{collection:"Koleksi",icon:"Ikon",note:"Catatan",color:"Warna",display_template:"Tampilan Template",hidden:"Tersembunyi",archive_app_filter:"Filter Aplikasi Arsip",archive_value:"Nilai Arsip",unarchive_value:"Batalkan pengarsipan Nilai",sort_field:"Sortir Baris",accountability:"Pelacakan Aktifitas & Revisi",archive_field:"Bidang Arsip",item_duplication_fields:"Bidang Duplikasi Item"},directus_files:{$thumbnail:"Gambar kecil",title:"Judul",description:"Deskripsi",tags:"Tagar",location:"Lokasi",storage:"Penyimpanan",filename_disk:"Nama file (Piringan)",filename_download:"Nama file (Unduh)",metadata:"Metadata",type:"Tipe Mime",filesize:"Ukuran berkas",modified_by:"Dimodifikasi Oleh",modified_on:"Dimodifikasi Pada",created_on:"Dibuat Pada",created_by:"Dibuat Oleh",embed:"Lampirkan",uploaded_by:"Diunggah Oleh",folder:"Direktori",width:"Lebar",uploaded_on:"Diunggah Pada",height:"Tinggi",charset:"Charset",duration:"Durasi"},directus_users:{first_name:"Nama Depan",last_name:"Nama belakang",email:"Email",password:"Kata Sandi",avatar:"Avatar",location:"Lokasi",title:"Judul",description:"Deskripsi",tags:"Tagar",user_preferences:"Preferensi Pengguna",language:"Bahasa",theme:"Tema",theme_auto:"Otomatis (Berdasarkan Sistem)",theme_light:"Mode Terang",theme_dark:"Mode Gelap",tfa_secret:"Otentikasi Dua Faktor",admin_options:"Opsi Admin",status:"Status",status_draft:"Konsep",status_invited:"Diundang",status_active:"Aktif",status_suspended:"Tergantung",status_archived:"Diarsipkan",role:"Peran",token:"Token",provider:"Penyedia",external_identifier:"Pengidentifikasi Eksternal",last_page:"Halaman Terakhir",last_access:"Akses Terakhir",email_notifications:"Email pemberitahuan"},directus_settings:{jpg:"JPEG",png:"PNG",webP:"JaringanP",tiff:"Bercekcok",mapping:"Pemetaan",basemaps:"Peta dasar",basemaps_raster:"Raster",basemaps_tile:"Ubin RasterJSON",basemaps_style:"Gaya Kotak peta",mapbox_key:"Token Akses Kotak peta",attribution:"Atribusi",attribution_placeholder:"Kontributor \xA9 OpenStreetMap",transforms_note:"Nama metode Sharp dan argumennya. Lihat konstruktor https://sharp.pixelplumbing.com/api- untuk informasi lebih.",additional_transforms:"Transformasi Tambahan",project_name:"Nama Proyek",project_descriptor:"Deskriptor Proyek",project_url:"URL Proyek",project_color:"Warna Proyek",project_logo:"Logo Proyek",branding:"Merk & Gaya",public_foreground:"Latar depan Publik",public_background:"Latar belakang Publik",public_note:"Catatan Publik",auth_password_policy:"Kebijakan Kata sandi Autentik",auth_login_attempts:"Upaya Login Autentik",files_and_thumbnails:"File & Penyimpanan",module_bar:"Papan Modul"},directus_shares:{name:"Nama",role:"Peran",password:"Kata Sandi",date_start:"Tanggal Mulai"},directus_fields:{note:"Catatan",hidden:"Tersembunyi",translation:"Terjemahan Nama Kolom",display_template:"Templat"},directus_roles:{name:"Nama Peran",description:"Deskripsi"},directus_webhooks:{name:"Nama",status:"Status",value:"Nilai",collections:"Pengumpulan"}},field_options:{directus_settings:{security_divider_title:"Keamanan",additional_transforms:"Transformasi Tambahan",transforms_note:"Nama metode Sharp dan argumennya. Lihat konstruktor https://sharp.pixelplumbing.com/api- untuk informasi lebih.",mapbox_key:"Token Akses Kotak peta",basemaps:"Peta dasar",basemaps_raster:"Raster",basemaps_tile:"Ubin RasterJSON",basemaps_style:"Gaya Kotak peta"},directus_activity:{login:"Masuk",create:"Buat",update:"Perbarui",delete:"Hapus"},directus_collections:{track_activity_revisions:"Lacak Aktifitas & Revisi",only_track_activity:"Hanya Aktifitas Melacak",do_not_track_anything:"Jangan Lacak Apapun",collection_setup:"Penyiapan Koleksi",note_placeholder:"Deskripsi koleksi ini...",hidden_label:"Sembunyikan di dalam Aplikasi",singleton:"Perlakukan sebagai objek tunggal",language:"Bahasa",translation:"Terjemahan",translation_placeholder:"Masukkan terjemahan...",collection_name:"Nama Koleksi",singular_unit:"Satuan Tunggal",plural_unit:"Satuan Jamak",archive_divider:"Arsip",archive_field_placeholder:"Pilih bidang...",archive_app_filter:"Aktifkan Filter Arsip Aplikasi",archive_value:"Nilai yang ditetapkan saat pengarsipan...",unarchive_value:"Nilai yang ditetapkan saat membatalkan pengarsipan...",sort_divider:"Sortir",sort_field:"Pilih bidang...",accountability_divider:"Akuntabilitas",duplication_divider:"Duplikasi"},directus_files:{title:"Judul yang unik...",description:"Deskripsi opsional...",location:"Lokasi opsional...",storage_divider:"Penamaan File",filename_disk:"Nama pada penyimpanan disk...",filename_download:"Nama saat mengunduh..."},directus_roles:{name:"Nama unik untuk peran ini...",description:"Deskripsi peran ini...",ip_access:"Tambahkan alamat IP yang diizinkan, biarkan kosong untuk mengizinkan semua...",fields:{icon_name:"Ikon",name_name:"Nama",name_placeholder:"Masukkan judul...",link_name:"Tautan",link_placeholder:"URL Relatif atau absolut..."},collections_name:"Pengumpulan",collections_addLabel:"Tambah Koleksi..."},directus_users:{preferences_divider:"Preferensi Pengguna",dropdown_auto:"Otomatis (Berdasarkan Sistem)",dropdown_light:"Mode Terang",dropdown_dark:"Mode Gelap",admin_divider:"Opsi Admin",status_dropdown_draft:"Konsep",status_dropdown_invited:"Diundang",status_dropdown_active:"Aktif",status_dropdown_suspended:"Tergantung",status_dropdown_archived:"Diarsipkan",token:"Masukkan token akses aman..."},directus_webhooks:{status_options_active:"Aktif",status_options_inactive:"Tidak aktif",data_label:"Kirim Data Acara",triggers_divider:"Pencetus",actions_create:"Buat",actions_update:"Perbarui",actions_delete:"Hapus",actions_login:"Masuk",headers:{header:"Header",value:"Nilai",add:"Tambah Header"}}},no_fields_in_collection:'Belum ada bidang pada "{collection}" ini',no_value:"Tidak berharga",do_nothing:"Tidak Ada",generate_and_save_uuid:"Hasilkan dan Simpan UUID",save_current_user_id:"Simpan ID Pengguna Saat ini",save_current_user_role:"Simpan Peran Pengguna Saat ini",save_current_datetime:"Simpan Tanggal/Waktu Saat ini",always_open:"Selalu Buka",start_open:"Mulai Terbuka",start_collapsed:"Mulai Runtuh",block:"Blokir",inline:"Inline",comment:"Komentar",expired:"Kedaluwarsa",share:"Bagikan",continue_label:"Lanjut",editing_role:"Peraturan {role}",delete_label:"Hapus",delete_field_are_you_sure:'Apakah Anda yakin Anda ingin menghapus bidang "{field}" ini? Tindakan ini tidak dapat dikembalikan.',description:"Deskripsi",done:"Selesai",duplicate:"Gandakan",limit:"Batas",email:"Email",embed:"Lampirkan",file:"Berkas",file_library:"Pustaka Berkas",forgot_password:"Lupa Kata Sandi",hidden:"Tersembunyi",icon:"Ikon",info:"Info",normal:"Normal",success:"Sukses",warning:"Peringatan",danger:"Bahaya",junction_collection:"Pengumpulan Persimpangan",latency:"Latensi",login:"Masuk",my_activity:"Aktivitas Saya",not_authenticated:"Tidak diautentikasi",authenticated:"Terautentikasi",options:"Pilihan",otp:"Kata Sandi Sekali Pakai",password:"Kata Sandi",permissions:"Izin",relationship:"Hubungan",reset:"Setel ulang",reset_password:"Atur Ulang Kata Sandi",revisions:"Revisi",no_revisions:"Belum Ada Revisi",revert:"Pulihkan",save:"Simpan",schema:"Skema",search:"Cari",select_existing:"Pilih yang Ada",select_field_type:"Pilih kolom",select_interface:"Pilih antarmuka",settings:"Pengaturan",sign_in:"Masuk",sign_out:"Keluar",sign_out_confirm:"Apakah Anda yakin ingin keluar?",something_went_wrong:"Ada yang salah.",sort_desc:"Mengurut Turun",template:"Templat",translation:"Terjemahan",translation_placeholder:"Masukkan terjemahan...",value:"Nilai",view_project:"Lihat Proyek",report_error:"Lapor Kesalahan",start:"Mulai",interfaces:{filter:{name:"Penyaring",description:"Konfigurasikan filter objek.",add_filter:"Tambah Filter",add_group:"Dan / Atau kelompok",add_value:"Tambahkan Nilai",logic_type_and:"DAN",logic_type_or:"ATAU",all:"Semua",any:"Setiap",and:"dan",of_the_following:"sebagai berikut",no_rules:"Tidak ada aturan yang dikonfigurasi",change_value:"Klik untuk ubah nilai",placeholder:"Seret aturan di sini"},"group-accordion":{name:"Akordeon",description:"Tampilkan bidang atau grup sebagai bagian akordeon",start:"Mulai",all_closed:"Semua Tertutup",first_opened:"Pertama kali Dibuka",all_opened:"Semua Dibuka",accordion_mode:"Mode Akordeon",max_one_section_open:"Maks 1 Bagian Dibuka"},"presentation-links":{"presentation-links":"Tautan Tombol",links:"Tautan",description:"Tombol tautan yang dapat dikonfigurasi untuk meluncurkan URL dinamis",style:"Gaya",primary:"Primer",link:"Tautan",button:"Tombol",error:"Tidak dapat melakukan aksi ini"},"select-multiple-checkbox":{checkboxes:"Kotak centang",description:"Pilih diantara beberapa opsi melalui kotak centang",allow_other:"Izinkan Lainnya",show_more:"Tampilkan {count} lebih banyak",items_shown:"Items yang Ditampilkan"},"select-multiple-checkbox-tree":{name:"Kotak centang (Pohon)",description:"Pilih diantara beberapa opsi melalui kotak centang bersarang",value_combining:"Menggabungkan Nilai",value_combining_note:"Mengontrol nilai apa yang disimpan saat pilihan bersarang dibuat.",show_all:"Tampilkan Semua",show_selected:"Tampilkan yang Dipilih"},"input-code":{code:"Kode",description:"Tulis atau bagikan cuplikan kode",line_number:"Nomor Baris",line_wrapping:"Pembungkus Garis",placeholder:"Masukkan kode di sini..."},"system-collection":{collection:"Koleksi",description:"Pilih diantara koleksi yang ada",include_system_collections:"Termasuk Koleksi Sistem"},"system-collections":{collections:"Pengumpulan",description:"Pilih diantara koleksi yang ada",include_system_collections:"Termasuk Koleksi Sistem"},"select-color":{color:"Warna",description:"Masukan atau pilih nilai warna"},datetime:{datetime:"Datetime"},"system-display-template":{"display-template":"Tampilan Template",collection_field_not_setup:"Opsi bidang koleksi disalahkonfigurasikan",select_a_collection:"Pilih Koleksi"},"presentation-divider":{divider:"Pembagi/Pemecah"},"select-dropdown":{allow_other:"Izinkan Lainnya",choices_value_placeholder:"Masukkan sebuah nilai..."},file:{file:"Berkas"},files:{files:"Berkas"},"input-hash":{hash:"Hash"},"select-icon":{icon:"Ikon",search_for_icon:"Cari ikon..."},"file-image":{image:"Gambar"},"system-interface":{interface:"Antarmuka"},"select-dropdown-m2o":{display_template:"Tampilan Template"},"input-rich-text-md":{edit:"Edit",previewFont:"Font Pratinjau",customSyntax:"Blok Kustom",customSyntax_label:"Tambahkan jenis sintaks khusus",customSyntax_add:"Tambahkan sintaks khusus",box:"Blokir / Sebaris"},map:{zoom:"Perbesar"},"system-folder":{folder:"Direktori"},tags:{tags:"Tagar"},boolean:{toggle:"Beralih",label_default:"Diaktifkan"},translations:{display_template:"Tampilan Template"},user:{user:"Pengguna",modes:{dropdown:"Dropwdown"}},"system-token":{"system-token":"Token"}},displays:{translations:{translations:"Terjemahan"},boolean:{boolean:"Boolean",icon_on:"Ikon Aktif",icon_off:"Ikon Tidak Aktif"},collection:{collection:"Koleksi"},color:{color:"Warna"},datetime:{datetime:"Datetime",format:"Format"},file:{file:"Berkas"},filesize:{filesize:"Ukuran Berkas"},"formatted-value":{format:"Format",font:"Huruf",font_serif:"Serif",font_monospace:"Monospace",bold:"Tebal",italic:"Miring",prefix:"Awalan",suffix:"Akhiran",color:"Warna",icon:"Ikon",text:"Teks"},icon:{icon:"Ikon"},image:{circle:"Lingkaran"},labels:{choices_value_placeholder:"Masukkan sebuah nilai..."},user:{user:"Pengguna",avatar:"Avatar",name:"Nama",both:"Keduanya"}},layouts:{cards:{cards:"Kartu",image_source:"Sumber Gambar",title:"Judul",subtitle:"Subjudul"},tabular:{tabular:"Tabel",spacing:"Spasi",comfortable:"Longgar",compact:"Rapat",cozy:"Normal"}},panels:{label:{name:"Label"}},operations:{notification:{recipient:"Pengguna"},request:{url:"URL"}}},e=a.identifier,i=a.avatar,n=a.application,t=a.default_provider,r=a.published,o=a.draft,l=a.archived,s=a.modules,_=a.module_bar,d=a.tile_size,c=a.edit_field,u=a.conditions,m=a.location,p=a.maps,v=a.switch_user,k=a.item_creation,g=a.item_revision,h=a.enter_a_name,f=a.duplicate_field,b=a.half_width,y=a.full_width,w=a.group,T=a.and,P=a.or,A=a.fill_width,B=a.field_name_translations,S=a.enter_password_to_enable_tfa,D=a.add_field,K=a.role_name,M=a.branch,N=a.leaf,x=a.indeterminate,I=a.edit_collection,L=a.exclusive,j=a.children,O=a.db_only_click_to_configure,R=a.show_active_items,U=a.show_archived_items,E=a.show_all_items,H=a.edited,F=a.required,z=a.required_for_app_access,G=a.requires_value,q=a.create_preset,J=a.create_panel,C=a.create_role,W=a.create_user,V=a.delete_panel,Y=a.create_webhook,X=a.invite_users,Q=a.invite,$=a.email_already_invited,Z=a.subject,aa=a.inbox,ea=a.emails,ia=a.connection_excellent,na=a.connection_good,ta=a.connection_fair,ra=a.connection_poor,oa=a.primary,la=a.rename_folder,sa=a.delete_folder,_a=a.prefix,da=a.suffix,ca=a.reset_bookmark,ua=a.update_bookmark,ma=a.delete_bookmark,pa=a.delete_bookmark_copy,va=a.logoutReason,ka=a.public_label,ga=a.public_description,ha=a.admin_description,fa=a.not_allowed,ba=a.directus_version,ya=a.node_version,wa=a.node_uptime,Ta=a.os_type,Pa=a.os_version,Aa=a.os_uptime,Ba=a.os_totalmem,Sa=a.archive,Da=a.archive_confirm,Ka=a.archive_confirm_count,Ma=a.reset_system_permissions_to,Na=a.reset_system_permissions_copy,xa=a.the_following_are_minimum_permissions,Ia=a.app_access_minimum,La=a.recommended_defaults,ja=a.unarchive,Oa=a.unarchive_confirm,Ra=a.nested_files_folders_will_be_moved,Ua=a.validationError,Ea=a.all_access,Ha=a.no_access,Fa=a.use_custom,za=a.nullable,Ga=a.allow_null_value,qa=a.allow_multiple,Ja=a.allow_multiple_to_be_open,Ca=a.enter_value_to_replace_nulls,Wa=a.field_standard,Va=a.field_presentation,Ya=a.field_file,Xa=a.field_files,Qa=a.field_m2o,$a=a.field_m2a,Za=a.field_o2m,ae=a.field_m2m,ee=a.field_translations,ie=a.field_group,ne=a.item_permissions,te=a.field_permissions,re=a.field_validation,oe=a.field_presets,le=a.permissions_for_role,se=a.fields_for_role,_e=a.validation_for_role,de=a.presets_for_role,ce=a.presentation_and_aliases,ue=a.revision_post_create,me=a.revision_post_update,pe=a.changes_made,ve=a.no_relational_data,ke=a.hide_field_on_detail,ge=a.show_field_on_detail,he=a.delete_field,fe=a.fields_and_layout,be=a.field_create_success,ye=a.field_update_success,we=a.duplicate_where_to,Te=a.language,Pe=a.aggregate_function,Ae=a.aggregate_precision,Be=a.group_aggregation,Se=a.group_precision,De=a.global,Ke=a.admins_have_all_permissions,Me=a.camera,Ne=a.show_zero,xe=a.create_in_advanced_field_creation_mode,Ie=a.continue_in_advanced_field_creation_mode,Le=a.sum,je=a.sum_distinct,Oe=a.avg,Re=a.avg_distinct,Ue=a.count,Ee=a.count_distinct,He=a.min,Fe=a.max,ze=a.exposure,Ge=a.shutter,qe=a.iso,Je=a.focal_length,Ce=a.schema_setup_key,We=a.create_field,Ve=a.creating_new_field,Ye=a.field_in_collection,Xe=a.reset_page_preferences,Qe=a.hidden_field,$e=a.hidden_on_detail,Ze=a.disabled_editing_value,ai=a.key,ei=a.alias,ii=a.bigInteger,ni=a.boolean,ti=a.date,ri=a.date_range,oi=a.datetime,li=a.dateTime,si=a.precision,_i=a.decimal,di=a.float,ci=a.integer,ui=a.json,mi=a.xml,pi=a.string,vi=a.text,ki=a.time,gi=a.timestamp,hi=a.uuid,fi=a.hash,bi=a.geometry,yi=a.not_available_for_type,wi=a.create_translations,Ti=a.auto_refresh,Pi=a.refresh_interval,Ai=a.no_refresh,Bi=a.refresh_interval_seconds,Si=a.refresh_interval_minutes,Di=a.auto_generate,Ki=a.this_will_auto_setup_fields_relations,Mi=a.click_here,Ni=a.to_manually_setup_translations,xi=a.click_to_manage_translated_fields,Ii=a.fields_group,Li=a.no_collections_found,ji=a.new_data_alert,Oi=a.search_collection,Ri=a.new_field,Ui=a.new_collection,Ei=a.add_m2o_to_collection,Hi=a.add_o2m_to_collection,Fi=a.add_m2m_to_collection,zi=a.choose_a_type,Gi=a.determined_by_relationship,qi=a.add_note,Ji=a.add_link,Ci=a.custom_link,Wi=a.default_value,Vi=a.standard_field,Yi=a.single_file,Xi=a.multiple_files,Qi=a.m2o_relationship,$i=a.o2m_relationship,Zi=a.m2m_relationship,an=a.m2a_relationship,en=a.invalid_item,nn=a.next,tn=a.field_name,rn=a.translations,on=a.no_translations,ln=a.note,sn=a.enter_a_value,_n=a.enter_a_placeholder,dn=a.length,cn=a.precision_scale,un=a.readonly,mn=a.unique,pn=a.updated_on,vn=a.updated_by,kn=a.primary_key,gn=a.foreign_key,hn=a.finish_setup,fn=a.dismiss,bn=a.raw_value,yn=a.copy_raw_value,wn=a.copy_raw_value_success,Tn=a.copy_raw_value_fail,Pn=a.paste_raw_value,An=a.paste_raw_value_success,Bn=a.paste_raw_value_fail,Sn=a.view_raw_value,Dn=a.edit_raw_value,Kn=a.enter_raw_value,Mn=a.clear_value,Nn=a.clear_changes,xn=a.reset_to_default,In=a.undo_changes,Ln=a.notifications,jn=a.show_all_activity,On=a.page_not_found,Rn=a.page_not_found_body,Un=a.confirm_revert,En=a.confirm_revert_body,Hn=a.display,Fn=a.settings_update_success,zn=a.title,Gn=a.revision_delta_created,qn=a.revision_delta_created_externally,Jn=a.revision_delta_updated,Cn=a.revision_delta_deleted,Wn=a.revision_delta_reverted,Vn=a.revision_delta_other,Yn=a.revision_delta_by,Xn=a.private_user,Qn=a.creation_preview,$n=a.revision_preview,Zn=a.updates_made,at=a.leave_comment,et=a.post_comment_success,it=a.item_create_success,nt=a.item_update_success,tt=a.item_delete_success,rt=a.this_collection,ot=a.related_collection,lt=a.related_collections,st=a.translations_collection,_t=a.languages_collection,dt=a.import_data_input_placeholder,ct=a.import_data_button,ut=a.import_data_indeterminate,mt=a.import_data_success,pt=a.label_import,vt=a.label_export,kt=a.import_export,gt=a.format,ht=a.last_page,ft=a.last_access,bt=a.fill_template,yt=a.a_unique_table_name,wt=a.a_unique_column_name,Tt=a.enable_custom_values,Pt=a.submit,At=a.move_to_folder,Bt=a.move,St=a.system,Dt=a.add_field_related,Kt=a.interface_label,Mt=a.today,Nt=a.yesterday,xt=a.delete_comment,It=a.functions,Lt=a.minutes,jt=a.hours,Ot=a.month,Rt=a.year,Ut=a.select_all,Et=a.months,Ht=a.drag_mode,Ft=a.cancel_crop,zt=a.original,Gt=a.url,qt=a.import_label,Jt=a.file_details,Ct=a.dimensions,Wt=a.size,Vt=a.created,Yt=a.modified,Xt=a.checksum,Qt=a.owner,$t=a.edited_by,Zt=a.folder,ar=a.zoom,er=a.download,ir=a.open,nr=a.open_in_new_window,tr=a.open_folder,rr=a.foreground_color,or=a.background_color,lr=a.upload_from_device,sr=a.choose_from_library,_r=a.import_from_url,dr=a.replace_from_device,cr=a.replace_from_library,ur=a.replace_from_url,mr=a.no_file_selected,pr=a.download_file,vr=a.collection_key,kr=a.name,gr=a.primary_key_field,hr=a.type,fr=a.creating_new_collection,br=a.created_by,yr=a.created_on,wr=a.creating_collection_info,Tr=a.creating_collection_system,Pr=a.auto_increment_integer,Ar=a.generated_uuid,Br=a.manual_string,Sr=a.save_and_create_new,Dr=a.save_and_stay,Kr=a.save_as_copy,Mr=a.add_existing,Nr=a.creating_items,xr=a.enable_create_button,Ir=a.selecting_items,Lr=a.enable_select_button,jr=a.comments,Or=a.no_comments,Rr=a.click_to_expand,Ur=a.select_item,Er=a.no_items,Hr=a.search_items,Fr=a.disabled,zr=a.information,Gr=a.report_bug,qr=a.request_feature,Jr=a.interface_not_found,Cr=a.reset_interface,Wr=a.display_not_found,Vr=a.reset_display,Yr=a.item_count,Xr=a.no_items_copy,Qr=a.file_count,$r=a.no_files_copy,Zr=a.user_count,ao=a.no_users_copy,eo=a.webhooks_count,io=a.no_webhooks_copy,no=a.no_notifications,to=a.no_notifications_copy,ro=a.activity_log,oo=a.all_items,lo=a.any,so=a.csv,_o=a.no_collections,co=a.create_collection,uo=a.no_collections_copy_admin,mo=a.no_collections_copy,po=a.relationship_not_setup,vo=a.display_template_not_setup,ko=a.collection_field_not_setup,go=a.select_a_collection,ho=a.select_a_field,fo=a.active,bo=a.move_to,yo=a.copy,wo=a.copy_to,To=a.no_other_dashboards_copy,Po=a.inactive,Ao=a.users,Bo=a.activity,So=a.activity_item,Do=a.action,Ko=a.ip_address,Mo=a.user_agent,No=a.webhooks,xo=a.decimals,Io=a.value_decimals,Lo=a.min_value,jo=a.max_value,Oo=a.automatic,Ro=a.field_width,Uo=a.add_filter,Eo=a.upper_limit,Ho=a.lower_limit,Fo=a.user_directory,zo=a.documentation,Go=a.sidebar,qo=a.duration,Jo=a.charset,Co=a.second,Wo=a.file_moved,Vo=a.collection_created,Yo=a.modified_on,Xo=a.card_size,Qo=a.sort_field,$o=a.add_sort_field,Zo=a.sort,al=a.status,el=a.remove,il=a.toggle_manual_sorting,nl=a.bookmark_doesnt_exist,tl=a.bookmark_doesnt_exist_copy,rl=a.bookmark_doesnt_exist_cta,ol=a.select_an_item,ll=a.edit,sl=a.enabled,_l=a.disable_tfa,dl=a.tfa_scan_code,cl=a.enter_otp_to_disable_tfa,ul=a.create_account,ml=a.account_created_successfully,pl=a.auto_fill,vl=a.corresponding_field,kl=a.errors,gl=a.security,hl=a.value_hashed,fl=a.bookmark_name,bl=a.create_bookmark,yl=a.edit_bookmark,wl=a.bookmarks,Tl=a.presets,Pl=a.unexpected_error,Al=a.unexpected_error_copy,Bl=a.copy_details,Sl=a.no_app_access,Dl=a.no_app_access_copy,Kl=a.password_reset_successful,Ml=a.back,Nl=a.filter,xl=a.editing_image,Il=a.square,Ll=a.free,jl=a.flip_horizontal,Ol=a.flip_vertical,Rl=a.aspect_ratio,Ul=a.rotate,El=a.all_users,Hl=a.delete_collection,Fl=a.update_collection_success,zl=a.delete_collection_success,Gl=a.make_collection_visible,ql=a.make_collection_hidden,Jl=a.make_folder_visible,Cl=a.make_folder_hidden,Wl=a.start_end_of_count_items,Vl=a.start_end_of_count_filtered_items,Yl=a.one_item,Xl=a.one_filtered_item,Ql=a.collections_shown,$l=a.visible_collections,Zl=a.hidden_collections,as=a.show_hidden_collections,es=a.hide_hidden_collections,is=a.show_header,ns=a.unmanaged_collections,ts=a.system_collections,rs=a.placeholder,os=a.icon_left,ls=a.icon_right,ss=a.count_other_revisions,_s=a.font,ds=a.sans_serif,cs=a.serif,us=a.monospace,ms=a.divider,ps=a.color,vs=a.circle,ks=a.empty_item,gs=a.log_in_with,hs=a.conditional_styles,fs=a.advanced_settings,bs=a.advanced_filter,ys=a.delete_advanced_filter,ws=a.change_advanced_filter_operator,Ts=a.operators,Ps=a.loading,As=a.drop_to_upload,Bs=a.item,Ss=a.items,Ds=a.upload_file,Ks=a.upload_file_indeterminate,Ms=a.upload_file_success,Ns=a.upload_files_indeterminate,xs=a.upload_files_success,Is=a.upload_pending,Ls=a.drag_file_here,js=a.click_to_browse,Os=a.interface_options,Rs=a.layout_options,Us=a.rows,Es=a.columns,Hs=a.collection_setup,Fs=a.optional_system_fields,zs=a.value_unique,Gs=a.all_activity,qs=a.create_item,Js=a.display_template,Cs=a.language_display_template,Ws=a.translations_display_template,Vs=a.n_items_selected,Ys=a.per_page,Xs=a.all_files,Qs=a.my_files,$s=a.recent_files,Zs=a.create_folder,a_=a.edit_folder,e_=a.folder_name,i_=a.folder_key,n_=a.add_file,t_=a.replace_file,r_=a.no_results,o_=a.no_results_copy,l_=a.clear_filters,s_=a.saves_automatically,__=a.role,d_=a.rule,c_=a.user,u_=a.no_presets,m_=a.no_presets_copy,p_=a.no_presets_cta,v_=a.presets_only,k_=a.create,g_=a.on_create,h_=a.on_update,f_=a.read,b_=a.update,y_=a.select_fields,w_=a.format_text,T_=a.format_value,P_=a.abbreviate_value,A_=a.operator,B_=a.bold,S_=a.toggle,D_=a.icon_on,K_=a.icon_off,M_=a.label,N_=a.flow_name,x_=a.flow_tracking_activity,I_=a.flow_tracking_null,L_=a.insights,j_=a.dashboard,O_=a.panel,R_=a.panel_options,U_=a.panel_header,E_=a.panel_name_placeholder,H_=a.panel_note_placeholder,F_=a.panel_delete_confirm,z_=a.dashboard_delete_confirm,G_=a.edit_dashboard,q_=a.delete_dashboard,J_=a.visible,C_=a.prefix_placeholder,W_=a.suffix_placeholder,V_=a.decimals_placeholder,Y_=a.no_dashboards,X_=a.no_dashboards_copy,Q_=a.create_dashboard,$_=a.dashboard_name,Z_=a.no_data,ad=a.accountability,ed=a.full_screen,id=a.edit_panels,nd=a.fit_to_screen,td=a.image_url,rd=a.alt_text,od=a.media,ld=a.quality,sd=a.width,_d=a.height,dd=a.source,cd=a.url_placeholder,ud=a.display_text,md=a.display_text_placeholder,pd=a.interface_group_text_and_numbers,vd=a.interface_group_selection,kd=a.interface_group_relational,gd=a.interface_group_presentation,hd=a.interface_group_groups,fd=a.interface_group_other,bd=a.tooltip,yd=a.tooltip_placeholder,wd=a.unlimited,Td=a.open_link_in,Pd=a.new_tab,Ad=a.current_tab,Bd=a.save_image,Sd=a.save_media,Dd=a.wysiwyg_options,Kd=a.dropdown,Md=a.choices,Nd=a.choices_option_configured_incorrectly,xd=a.deselect,Id=a.deselect_all,Ld=a.other,jd=a.adding_user,Od=a.unknown_user,Rd=a.creating_in,Ud=a.editing_in,Ed=a.viewing_in,Hd=a.creating_unit,Fd=a.editing_unit,zd=a.editing_in_batch,Gd=a.no_options_available,qd=a.settings_data_model,Jd=a.settings_permissions,Cd=a.settings_project,Wd=a.settings_webhooks,Vd=a.settings_presets,Yd=a.one_or_more_options_are_missing,Xd=a.scope,Qd=a.select,$d=a.layout,Zd=a.tree_view,ac=a.changes_are_permanent,ec=a.preset_name_placeholder,ic=a.preset_search_placeholder,nc=a.editing_preset,tc=a.layout_preview,rc=a.layout_setup,oc=a.unsaved_changes,lc=a.unsaved_changes_copy,sc=a.discard_changes,_c=a.discard_all_changes,dc=a.discard_changes_copy,cc=a.show_x_axis,uc=a.show_y_axis,mc=a.keep_editing,pc=a.page_help_collections_overview,vc=a.page_help_collections_collection,kc=a.activity_feed,gc=a.add_new,hc=a.create_new,fc=a.all,bc=a.none,yc=a.batch_delete_confirm,wc=a.cancel,Tc=a.collection,Pc=a.collections,Ac=a.content,Bc=a.singleton_label,Sc=a.directus_collection,Dc=a.fields,Kc=a.field_options,Mc=a.no_fields_in_collection,Nc=a.no_value,xc=a.do_nothing,Ic=a.generate_and_save_uuid,Lc=a.save_current_user_id,jc=a.save_current_user_role,Oc=a.save_current_datetime,Rc=a.always_open,Uc=a.start_open,Ec=a.start_collapsed,Hc=a.block,Fc=a.inline,zc=a.comment,Gc=a.expired,qc=a.share,Jc=a.continue_label,Cc=a.editing_role,Wc=a.delete_label,Vc=a.delete_field_are_you_sure,Yc=a.description,Xc=a.done,Qc=a.duplicate,$c=a.limit,Zc=a.email,au=a.embed,eu=a.file,iu=a.file_library,nu=a.forgot_password,tu=a.hidden,ru=a.icon,ou=a.info,lu=a.normal,su=a.success,_u=a.warning,du=a.danger,cu=a.junction_collection,uu=a.latency,mu=a.login,pu=a.my_activity,vu=a.not_authenticated,ku=a.authenticated,gu=a.options,hu=a.otp,fu=a.password,bu=a.permissions,yu=a.relationship,wu=a.reset,Tu=a.reset_password,Pu=a.revisions,Au=a.no_revisions,Bu=a.revert,Su=a.save,Du=a.schema,Ku=a.search,Mu=a.select_existing,Nu=a.select_field_type,xu=a.select_interface,Iu=a.settings,Lu=a.sign_in,ju=a.sign_out,Ou=a.sign_out_confirm,Ru=a.something_went_wrong,Uu=a.sort_desc,Eu=a.template,Hu=a.translation,Fu=a.translation_placeholder,zu=a.value,Gu=a.view_project,qu=a.report_error,Ju=a.start,Cu=a.interfaces,Wu=a.displays,Vu=a.layouts,Yu=a.panels,Xu=a.operations;export{wt as a_unique_column_name,yt as a_unique_table_name,P_ as abbreviate_value,ml as account_created_successfully,ad as accountability,Do as action,fo as active,Bo as activity,kc as activity_feed,So as activity_item,ro as activity_log,Mr as add_existing,D as add_field,Dt as add_field_related,n_ as add_file,Uo as add_filter,Ji as add_link,Fi as add_m2m_to_collection,Ei as add_m2o_to_collection,gc as add_new,qi as add_note,Hi as add_o2m_to_collection,$o as add_sort_field,jd as adding_user,ha as admin_description,Ke as admins_have_all_permissions,bs as advanced_filter,fs as advanced_settings,Pe as aggregate_function,Ae as aggregate_precision,ei as alias,fc as all,Ea as all_access,Gs as all_activity,Xs as all_files,oo as all_items,El as all_users,qa as allow_multiple,Ja as allow_multiple_to_be_open,Ga as allow_null_value,rd as alt_text,Rc as always_open,T as and,lo as any,Ia as app_access_minimum,n as application,Sa as archive,Da as archive_confirm,Ka as archive_confirm_count,l as archived,Rl as aspect_ratio,ku as authenticated,pl as auto_fill,Di as auto_generate,Pr as auto_increment_integer,Ti as auto_refresh,Oo as automatic,i as avatar,Oe as avg,Re as avg_distinct,Ml as back,or as background_color,yc as batch_delete_confirm,ii as bigInteger,Hc as block,B_ as bold,nl as bookmark_doesnt_exist,tl as bookmark_doesnt_exist_copy,rl as bookmark_doesnt_exist_cta,fl as bookmark_name,wl as bookmarks,ni as boolean,M as branch,Me as camera,wc as cancel,Ft as cancel_crop,Xo as card_size,ws as change_advanced_filter_operator,ac as changes_are_permanent,pe as changes_made,Jo as charset,Xt as checksum,j as children,Md as choices,Nd as choices_option_configured_incorrectly,zi as choose_a_type,sr as choose_from_library,vs as circle,Nn as clear_changes,l_ as clear_filters,Mn as clear_value,Mi as click_here,js as click_to_browse,Rr as click_to_expand,xi as click_to_manage_translated_fields,Tc as collection,Vo as collection_created,ko as collection_field_not_setup,vr as collection_key,Hs as collection_setup,Pc as collections,Ql as collections_shown,ps as color,Es as columns,zc as comment,jr as comments,hs as conditional_styles,u as conditions,Un as confirm_revert,En as confirm_revert_body,ia as connection_excellent,ta as connection_fair,na as connection_good,ra as connection_poor,Ac as content,Ie as continue_in_advanced_field_creation_mode,Jc as continue_label,yo as copy,Bl as copy_details,yn as copy_raw_value,Tn as copy_raw_value_fail,wn as copy_raw_value_success,wo as copy_to,vl as corresponding_field,Ue as count,Ee as count_distinct,ss as count_other_revisions,k_ as create,ul as create_account,bl as create_bookmark,co as create_collection,Q_ as create_dashboard,We as create_field,Zs as create_folder,xe as create_in_advanced_field_creation_mode,qs as create_item,hc as create_new,J as create_panel,q as create_preset,C as create_role,wi as create_translations,W as create_user,Y as create_webhook,Vt as created,br as created_by,yr as created_on,wr as creating_collection_info,Tr as creating_collection_system,Rd as creating_in,Nr as creating_items,fr as creating_new_collection,Ve as creating_new_field,Hd as creating_unit,Qn as creation_preview,so as csv,Ad as current_tab,Ci as custom_link,du as danger,j_ as dashboard,z_ as dashboard_delete_confirm,$_ as dashboard_name,ti as date,li as dateTime,ri as date_range,oi as datetime,O as db_only_click_to_configure,_i as decimal,xo as decimals,V_ as decimals_placeholder,a as default,t as default_provider,Wi as default_value,ys as delete_advanced_filter,ma as delete_bookmark,pa as delete_bookmark_copy,Hl as delete_collection,zl as delete_collection_success,xt as delete_comment,q_ as delete_dashboard,he as delete_field,Vc as delete_field_are_you_sure,sa as delete_folder,Wc as delete_label,V as delete_panel,Yc as description,xd as deselect,Id as deselect_all,Gi as determined_by_relationship,Ct as dimensions,Sc as directus_collection,ba as directus_version,_l as disable_tfa,Fr as disabled,Ze as disabled_editing_value,_c as discard_all_changes,sc as discard_changes,dc as discard_changes_copy,fn as dismiss,Hn as display,Wr as display_not_found,Js as display_template,vo as display_template_not_setup,ud as display_text,md as display_text_placeholder,Wu as displays,ms as divider,xc as do_nothing,zo as documentation,Xc as done,er as download,pr as download_file,o as draft,Ls as drag_file_here,Ht as drag_mode,As as drop_to_upload,Kd as dropdown,Qc as duplicate,f as duplicate_field,we as duplicate_where_to,qo as duration,ll as edit,yl as edit_bookmark,I as edit_collection,G_ as edit_dashboard,c as edit_field,a_ as edit_folder,id as edit_panels,Dn as edit_raw_value,H as edited,$t as edited_by,xl as editing_image,Ud as editing_in,zd as editing_in_batch,nc as editing_preset,Cc as editing_role,Fd as editing_unit,Zc as email,$ as email_already_invited,ea as emails,au as embed,ks as empty_item,xr as enable_create_button,Tt as enable_custom_values,Lr as enable_select_button,sl as enabled,h as enter_a_name,_n as enter_a_placeholder,sn as enter_a_value,cl as enter_otp_to_disable_tfa,S as enter_password_to_enable_tfa,Kn as enter_raw_value,Ca as enter_value_to_replace_nulls,kl as errors,L as exclusive,Gc as expired,ze as exposure,be as field_create_success,Ya as field_file,Xa as field_files,ie as field_group,Ye as field_in_collection,$a as field_m2a,ae as field_m2m,Qa as field_m2o,tn as field_name,B as field_name_translations,Za as field_o2m,Kc as field_options,te as field_permissions,Va as field_presentation,oe as field_presets,Wa as field_standard,ee as field_translations,ye as field_update_success,re as field_validation,Ro as field_width,Dc as fields,fe as fields_and_layout,se as fields_for_role,Ii as fields_group,eu as file,Qr as file_count,Jt as file_details,iu as file_library,Wo as file_moved,bt as fill_template,A as fill_width,Nl as filter,hn as finish_setup,nd as fit_to_screen,jl as flip_horizontal,Ol as flip_vertical,di as float,N_ as flow_name,x_ as flow_tracking_activity,I_ as flow_tracking_null,Je as focal_length,Zt as folder,i_ as folder_key,e_ as folder_name,_s as font,rr as foreground_color,gn as foreign_key,nu as forgot_password,gt as format,w_ as format_text,T_ as format_value,Ll as free,ed as full_screen,y as full_width,It as functions,Ic as generate_and_save_uuid,Ar as generated_uuid,bi as geometry,De as global,w as group,Be as group_aggregation,Se as group_precision,b as half_width,fi as hash,_d as height,tu as hidden,Zl as hidden_collections,Qe as hidden_field,$e as hidden_on_detail,ke as hide_field_on_detail,es as hide_hidden_collections,jt as hours,ru as icon,os as icon_left,K_ as icon_off,D_ as icon_on,ls as icon_right,e as identifier,td as image_url,ct as import_data_button,ut as import_data_indeterminate,dt as import_data_input_placeholder,mt as import_data_success,kt as import_export,_r as import_from_url,qt as import_label,Po as inactive,aa as inbox,x as indeterminate,ou as info,zr as information,Fc as inline,L_ as insights,ci as integer,hd as interface_group_groups,fd as interface_group_other,gd as interface_group_presentation,kd as interface_group_relational,vd as interface_group_selection,pd as interface_group_text_and_numbers,Kt as interface_label,Jr as interface_not_found,Os as interface_options,Cu as interfaces,en as invalid_item,Q as invite,X as invite_users,Ko as ip_address,qe as iso,Bs as item,Yr as item_count,it as item_create_success,k as item_creation,tt as item_delete_success,ne as item_permissions,g as item_revision,nt as item_update_success,Ss as items,ui as json,cu as junction_collection,mc as keep_editing,ai as key,M_ as label,vt as label_export,pt as label_import,Te as language,Cs as language_display_template,_t as languages_collection,ft as last_access,ht as last_page,uu as latency,$d as layout,Rs as layout_options,tc as layout_preview,rc as layout_setup,Vu as layouts,N as leaf,at as leave_comment,dn as length,$c as limit,Ps as loading,m as location,gs as log_in_with,mu as login,va as logoutReason,Ho as lower_limit,an as m2a_relationship,Zi as m2m_relationship,Qi as m2o_relationship,ql as make_collection_hidden,Gl as make_collection_visible,Cl as make_folder_hidden,Jl as make_folder_visible,Br as manual_string,p as maps,Fe as max,jo as max_value,od as media,He as min,Lo as min_value,Lt as minutes,Yt as modified,Yo as modified_on,_ as module_bar,s as modules,us as monospace,Ot as month,Et as months,Bt as move,bo as move_to,At as move_to_folder,Xi as multiple_files,pu as my_activity,Qs as my_files,Vs as n_items_selected,kr as name,Ra as nested_files_folders_will_be_moved,Ui as new_collection,ji as new_data_alert,Ri as new_field,Pd as new_tab,nn as next,Ha as no_access,Sl as no_app_access,Dl as no_app_access_copy,_o as no_collections,mo as no_collections_copy,uo as no_collections_copy_admin,Li as no_collections_found,Or as no_comments,Y_ as no_dashboards,X_ as no_dashboards_copy,Z_ as no_data,Mc as no_fields_in_collection,mr as no_file_selected,$r as no_files_copy,Er as no_items,Xr as no_items_copy,no as no_notifications,to as no_notifications_copy,Gd as no_options_available,To as no_other_dashboards_copy,u_ as no_presets,m_ as no_presets_copy,p_ as no_presets_cta,Ai as no_refresh,ve as no_relational_data,r_ as no_results,o_ as no_results_copy,Au as no_revisions,on as no_translations,ao as no_users_copy,Nc as no_value,io as no_webhooks_copy,wa as node_uptime,ya as node_version,bc as none,lu as normal,fa as not_allowed,vu as not_authenticated,yi as not_available_for_type,ln as note,Ln as notifications,za as nullable,$i as o2m_relationship,g_ as on_create,h_ as on_update,Xl as one_filtered_item,Yl as one_item,Yd as one_or_more_options_are_missing,ir as open,tr as open_folder,nr as open_in_new_window,Td as open_link_in,Xu as operations,A_ as operator,Ts as operators,Fs as optional_system_fields,gu as options,P as or,zt as original,Ba as os_totalmem,Ta as os_type,Aa as os_uptime,Pa as os_version,Ld as other,hu as otp,Qt as owner,vc as page_help_collections_collection,pc as page_help_collections_overview,On as page_not_found,Rn as page_not_found_body,O_ as panel,F_ as panel_delete_confirm,U_ as panel_header,E_ as panel_name_placeholder,H_ as panel_note_placeholder,R_ as panel_options,Yu as panels,fu as password,Kl as password_reset_successful,Pn as paste_raw_value,Bn as paste_raw_value_fail,An as paste_raw_value_success,Ys as per_page,bu as permissions,le as permissions_for_role,rs as placeholder,et as post_comment_success,si as precision,cn as precision_scale,_a as prefix,C_ as prefix_placeholder,ce as presentation_and_aliases,ec as preset_name_placeholder,ic as preset_search_placeholder,Tl as presets,de as presets_for_role,v_ as presets_only,oa as primary,kn as primary_key,gr as primary_key_field,Xn as private_user,ga as public_description,ka as public_label,r as published,ld as quality,bn as raw_value,f_ as read,un as readonly,$s as recent_files,La as recommended_defaults,Pi as refresh_interval,Si as refresh_interval_minutes,Bi as refresh_interval_seconds,ot as related_collection,lt as related_collections,yu as relationship,po as relationship_not_setup,el as remove,la as rename_folder,t_ as replace_file,dr as replace_from_device,cr as replace_from_library,ur as replace_from_url,Gr as report_bug,qu as report_error,qr as request_feature,F as required,z as required_for_app_access,G as requires_value,wu as reset,ca as reset_bookmark,Vr as reset_display,Cr as reset_interface,Xe as reset_page_preferences,Tu as reset_password,Na as reset_system_permissions_copy,Ma as reset_system_permissions_to,xn as reset_to_default,Bu as revert,Yn as revision_delta_by,Gn as revision_delta_created,qn as revision_delta_created_externally,Cn as revision_delta_deleted,Vn as revision_delta_other,Wn as revision_delta_reverted,Jn as revision_delta_updated,ue as revision_post_create,me as revision_post_update,$n as revision_preview,Pu as revisions,__ as role,K as role_name,Ul as rotate,Us as rows,d_ as rule,ds as sans_serif,Su as save,Sr as save_and_create_new,Dr as save_and_stay,Kr as save_as_copy,Oc as save_current_datetime,Lc as save_current_user_id,jc as save_current_user_role,Bd as save_image,Sd as save_media,s_ as saves_automatically,Du as schema,Ce as schema_setup_key,Xd as scope,Ku as search,Oi as search_collection,Hr as search_items,Co as second,gl as security,Qd as select,go as select_a_collection,ho as select_a_field,Ut as select_all,ol as select_an_item,Mu as select_existing,Nu as select_field_type,y_ as select_fields,xu as select_interface,Ur as select_item,Ir as selecting_items,cs as serif,Iu as settings,qd as settings_data_model,Jd as settings_permissions,Vd as settings_presets,Cd as settings_project,Fn as settings_update_success,Wd as settings_webhooks,qc as share,R as show_active_items,jn as show_all_activity,E as show_all_items,U as show_archived_items,ge as show_field_on_detail,is as show_header,as as show_hidden_collections,cc as show_x_axis,uc as show_y_axis,Ne as show_zero,Ge as shutter,Go as sidebar,Lu as sign_in,ju as sign_out,Ou as sign_out_confirm,Yi as single_file,Bc as singleton_label,Wt as size,Ru as something_went_wrong,Zo as sort,Uu as sort_desc,Qo as sort_field,dd as source,Il as square,Vi as standard_field,Ju as start,Ec as start_collapsed,Vl as start_end_of_count_filtered_items,Wl as start_end_of_count_items,Uc as start_open,al as status,pi as string,Z as subject,Pt as submit,su as success,da as suffix,W_ as suffix_placeholder,Le as sum,je as sum_distinct,v as switch_user,St as system,ts as system_collections,Eu as template,vi as text,dl as tfa_scan_code,xa as the_following_are_minimum_permissions,rt as this_collection,Ki as this_will_auto_setup_fields_relations,d as tile_size,ki as time,gi as timestamp,zn as title,Ni as to_manually_setup_translations,Mt as today,S_ as toggle,il as toggle_manual_sorting,bd as tooltip,yd as tooltip_placeholder,Hu as translation,Fu as translation_placeholder,rn as translations,st as translations_collection,Ws as translations_display_template,Zd as tree_view,hr as type,ja as unarchive,Oa as unarchive_confirm,In as undo_changes,Pl as unexpected_error,Al as unexpected_error_copy,mn as unique,Od as unknown_user,wd as unlimited,ns as unmanaged_collections,oc as unsaved_changes,lc as unsaved_changes_copy,b_ as update,ua as update_bookmark,Fl as update_collection_success,vn as updated_by,pn as updated_on,Zn as updates_made,Ds as upload_file,Ks as upload_file_indeterminate,Ms as upload_file_success,Ns as upload_files_indeterminate,xs as upload_files_success,lr as upload_from_device,Is as upload_pending,Eo as upper_limit,Gt as url,cd as url_placeholder,Fa as use_custom,c_ as user,Mo as user_agent,Zr as user_count,Fo as user_directory,Ao as users,hi as uuid,Ua as validationError,_e as validation_for_role,zu as value,Io as value_decimals,hl as value_hashed,zs as value_unique,Gu as view_project,Sn as view_raw_value,Ed as viewing_in,J_ as visible,$l as visible_collections,_u as warning,No as webhooks,eo as webhooks_count,sd as width,Dd as wysiwyg_options,mi as xml,Rt as year,Nt as yesterday,ar as zoom};
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import{a as t,o as r,b as i,w as o,g as e,B as s}from"./runtime-core.esm-bundler.b1f35d24.js";var a={};const c=e("div",{class:"markdown-body"},[e("p",null,[s("Deploying directus to IIS will require "),e("a",{href:"https://github.com/Azure/iisnode",target:"_blank",rel:"noopener noreferrer"},"iisnode"),s(", the IIS URL Rewrite module, an entrypoint file, and some specific web.config configurations.")]),e("h2",{id:"iisnode"},[s("iisnode "),e("a",{class:"header-anchor",href:"#iisnode"},"#")]),e("p",null,[s("iisnode can be downloaded from the "),e("a",{href:"https://github.com/Azure/iisnode/releases",target:"_blank",rel:"noopener noreferrer"},"azure/iisnode releases"),s(" page.")]),e("h2",{id:"iis-url-rewrite-module"},[s("IIS URL Rewrite module "),e("a",{class:"header-anchor",href:"#iis-url-rewrite-module"},"#")]),e("p",null,[s("The URL Rewrite module can be downloaded from the "),e("a",{href:"https://www.iis.net/downloads/microsoft/url-rewrite",target:"_blank",rel:"noopener noreferrer"},"Microsoft IIS website"),s(".")]),e("h2",{id:"entrypoint"},[s("Entrypoint "),e("a",{class:"header-anchor",href:"#entrypoint"},"#")]),e("p",null,[s("iisnode acts as a reverse proxy, and simply forwards requests to files based on any rewrite rules and the files available. Since iisnode simply pipes requests to files, running the directus CLI directly won\u2019t work. To get around this, use an entrypoint script like the "),e("code",{class:""},"index.js"),s(" below.")]),e("pre",null,[e("code",{class:"language-js"},[e("span",{class:"hljs-keyword"},"var"),s(" { startServer } = "),e("span",{class:"hljs-built_in"},"require"),s("("),e("span",{class:"hljs-string"},"'directus/server'"),s(`);
|
|
2
|
-
|
|
3
|
-
startServer();
|
|
4
|
-
`)])]),e("h2",{id:"web.config"},[s("web.config "),e("a",{class:"header-anchor",href:"#web.config"},"#")]),e("p",null,"With an entrypoint created, add a web.config to the root of the project. The following web.config is a simple example of running directus with iisnode"),e("pre",null,[e("code",{class:"language-xml"},[e("span",{class:"hljs-meta"},'<?xml version="1.0" encoding="utf-8"?>'),s(`
|
|
5
|
-
`),e("span",{class:"hljs-tag"},[s("<"),e("span",{class:"hljs-name"},"configuration"),s(">")]),s(`
|
|
6
|
-
`),e("span",{class:"hljs-tag"},[s("<"),e("span",{class:"hljs-name"},"location"),s(),e("span",{class:"hljs-attr"},"path"),s("="),e("span",{class:"hljs-string"},'"."'),s(),e("span",{class:"hljs-attr"},"inheritInChildApplications"),s("="),e("span",{class:"hljs-string"},'"false"'),s(">")]),s(`
|
|
7
|
-
`),e("span",{class:"hljs-tag"},[s("<"),e("span",{class:"hljs-name"},"system.webServer"),s(">")]),s(`
|
|
8
|
-
`),e("span",{class:"hljs-tag"},[s("<"),e("span",{class:"hljs-name"},"handlers"),s(">")]),s(`
|
|
9
|
-
`),e("span",{class:"hljs-tag"},[s("<"),e("span",{class:"hljs-name"},"add"),s(),e("span",{class:"hljs-attr"},"name"),s("="),e("span",{class:"hljs-string"},'"iisnode"'),s(),e("span",{class:"hljs-attr"},"path"),s("="),e("span",{class:"hljs-string"},'"index.js"'),s(),e("span",{class:"hljs-attr"},"verb"),s("="),e("span",{class:"hljs-string"},'"*"'),s(),e("span",{class:"hljs-attr"},"modules"),s("="),e("span",{class:"hljs-string"},'"iisnode"'),s(" />")]),s(`
|
|
10
|
-
`),e("span",{class:"hljs-tag"},[s("</"),e("span",{class:"hljs-name"},"handlers"),s(">")]),s(`
|
|
11
|
-
`),e("span",{class:"hljs-tag"},[s("<"),e("span",{class:"hljs-name"},"iisnode"),s(),e("span",{class:"hljs-attr"},"node_env"),s("="),e("span",{class:"hljs-string"},'"%node_env%"'),s(),e("span",{class:"hljs-attr"},"loggingEnabled"),s("="),e("span",{class:"hljs-string"},'"true"'),s(),e("span",{class:"hljs-attr"},"enableXFF"),s("="),e("span",{class:"hljs-string"},'"true"'),s(" />")]),s(`
|
|
12
|
-
`),e("span",{class:"hljs-tag"},[s("<"),e("span",{class:"hljs-name"},"rewrite"),s(">")]),s(`
|
|
13
|
-
`),e("span",{class:"hljs-tag"},[s("<"),e("span",{class:"hljs-name"},"rules"),s(">")]),s(`
|
|
14
|
-
`),e("span",{class:"hljs-tag"},[s("<"),e("span",{class:"hljs-name"},"rule"),s(),e("span",{class:"hljs-attr"},"name"),s("="),e("span",{class:"hljs-string"},'"root"'),s(">")]),s(`
|
|
15
|
-
`),e("span",{class:"hljs-tag"},[s("<"),e("span",{class:"hljs-name"},"match"),s(),e("span",{class:"hljs-attr"},"url"),s("="),e("span",{class:"hljs-string"},'"(.*)"'),s(" />")]),s(`
|
|
16
|
-
`),e("span",{class:"hljs-tag"},[s("<"),e("span",{class:"hljs-name"},"action"),s(),e("span",{class:"hljs-attr"},"type"),s("="),e("span",{class:"hljs-string"},'"Rewrite"'),s(),e("span",{class:"hljs-attr"},"url"),s("="),e("span",{class:"hljs-string"},'"index.js"'),s(" />")]),s(`
|
|
17
|
-
`),e("span",{class:"hljs-tag"},[s("</"),e("span",{class:"hljs-name"},"rule"),s(">")]),s(`
|
|
18
|
-
`),e("span",{class:"hljs-tag"},[s("</"),e("span",{class:"hljs-name"},"rules"),s(">")]),s(`
|
|
19
|
-
`),e("span",{class:"hljs-tag"},[s("</"),e("span",{class:"hljs-name"},"rewrite"),s(">")]),s(`
|
|
20
|
-
`),e("span",{class:"hljs-tag"},[s("<"),e("span",{class:"hljs-name"},"httpErrors"),s(),e("span",{class:"hljs-attr"},"existingResponse"),s("="),e("span",{class:"hljs-string"},'"PassThrough"'),s(" />")]),s(`
|
|
21
|
-
`),e("span",{class:"hljs-tag"},[s("</"),e("span",{class:"hljs-name"},"system.webServer"),s(">")]),s(`
|
|
22
|
-
`),e("span",{class:"hljs-tag"},[s("</"),e("span",{class:"hljs-name"},"location"),s(">")]),s(`
|
|
23
|
-
`),e("span",{class:"hljs-tag"},[s("</"),e("span",{class:"hljs-name"},"configuration"),s(">")]),s(`
|
|
24
|
-
`)])]),e("p",null,"A few important points regarding this file:"),e("ol",null,[e("li",null,[s("The iisnode handler "),e("code",{class:""},"path"),s(" parameter is set to the entrypoint filepath")]),e("li",null,[s("The iisnode handler "),e("code",{class:""},"verb"),s(" parameter is set to handle all verbs (*)")]),e("li",null,[s("The iisnode "),e("code",{class:""},"node_env"),s(" parameter is bound to the environment variable "),e("code",{class:""},"node_env")]),e("li",null,[s("The iisnode "),e("code",{class:""},"enableXFF"),s(" parameter is set to "),e("code",{class:""},"true"),s(". Since iisnode acts as a reverse proxy, this is required to pass client IP and other details on to the directus server, which directus modules expect and depend on.")]),e("li",null,"The rewrite rule is in place to send all requests made to this site to the entrypoint, ensuring that directus handles the routing and not IIS"),e("li",null,"The error page response needs to be untouched by IIS for two-factor authentication to work.")]),e("p",null,"While there are dozens even hundreds of options within IIS, this should help in getting started with Directus on IIS.")],-1),h={title:"IIS (Internet Information Services)",modularExtension:!1},p={name:"iis",setup(d,{expose:n}){return n({frontmatter:{title:"IIS (Internet Information Services)",modularExtension:!1}}),(u,j)=>{const l=t("docswrapper");return r(),i(l,{frontmatter:h},{default:o(()=>[c]),_:1})}}};typeof a=="function"&&a(p);export{p as default,h as frontmatter};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as s,o as d,b as p,w as o,g as e,e as l,B as t}from"./runtime-core.esm-bundler.b1f35d24.js";var r={};const c={class:"markdown-body"},h=e("blockquote",null,[e("p",null,"The Content, User Directory, and File Library modules allow importing and exporting of multiple Items stored as files. This makes it quick and easy to handle tasks like uploading and downloading new customer information; pulling down sales data for transformation, reports, analysis, and beyond.")],-1),m=e("p",null,[e("div",{class:"table-of-contents"},[e("ul",null,[e("li",null,[e("a",{href:"#import-items"},"Import Items")]),e("li",null,[e("a",{href:"#export-items"},"Export Items")]),e("li",null,[e("a",{href:"#export-items-menu"},"Export Items Menu")]),e("li",null,[e("a",{href:"#file-assets-and-media"},"File Assets and Media")])])])],-1),u={class:"tip hint"},_=e("div",{class:"hint-title"},"Before You Begin",-1),f=t("To use this utility, you will need to be familiar with "),x=t("Collections"),g=t(", "),y=t("Items"),I=t(", and "),w=t("Fields"),v=t("."),b={class:"tip hint"},F=e("div",{class:"hint-title"},"Import / Export via the API",-1),C=t("This page details Importing and Exporting of Items as files via the no-code app. However, you can also "),E=t("Import"),k=t(" and "),L=t("Export"),S=t(" Items as files programmatically via the API."),A=e("h2",{id:"import-items"},[t("Import Items "),e("a",{class:"header-anchor",href:"#import-items"},"#")],-1),T=e("video",{title:"Import Data From a File",autoplay:"",muted:"",loop:"",controls:""},[e("source",{src:"https://cdn.directus.io/docs/v9/app-guide/imports-exports/imports-exports-20220415A/import-items-20220416A.mp4",type:"video/mp4"})],-1),M=e("p",null,"To import Items from a file, follow the steps below.",-1),D=e("ol",null,[e("li",null,[t("Navigate to the desired Module and Collection."),e("br"),t(" Note: the User Directory and File Library are each composed of just one Collection.")]),e("li",null,[t("Click "),e("strong",null,"\u201CImport / Export\u201D"),t(" in the Sidebar.")]),e("li",null,"Click into the import search box. A file browser will open."),e("li",null,[t("Select the desired file and click "),e("strong",null,"\u201Copen\u201D"),t(".")]),e("li",null,[t("Click "),e("strong",null,"\u201CStart Import\u201D"),t(" to import the Items.")])],-1),N=e("p",null,"The Items will now be in the Collection. The file itself will not be stored in the Directus Project.",-1),V=e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"Importing Relational Files"),e("p",null,"It is possible to import relational Field values as well. For this task, the User performing the import will need access permissions for the related Collection and a firm understanding of the relational data model.")],-1),B=e("h2",{id:"export-items"},[t("Export Items "),e("a",{class:"header-anchor",href:"#export-items"},"#")],-1),U=e("video",{title:"Export Data to a File",autoplay:"",muted:"",loop:"",controls:""},[e("source",{src:`https://cdn.directus.io/docs/v9/app-guide/imports-exports/imports-exports-20220415A/export-items-20220416A.mp4
|
|
2
|
-
`,type:"video/mp4"})],-1),O=e("p",null,[t("When exporting Items, the "),e("a",{href:"#export-items-menu"},"Export Items Menu"),t(" provides granular control over exactly which Items and Fields are exported, how they are exported, and where they are exported. To export Items, follow the steps below.")],-1),P=e("ol",null,[e("li",null,[t("Navigate to the desired Module and Collection."),e("br"),t(" Note: the User Directory and File Library are each composed of one Collection.")]),e("li",null,[t("Click "),e("strong",null,"\u201CImport / Export\u201D"),t(" in the Sidebar.")]),e("li",null,[t("Click "),e("strong",null,"\u201CExport Items\u201D"),t(" and the "),e("a",{href:"#export-items-menu"},"Export Items Menu"),t(" will appear.")]),e("li",null,"Choose the desired format: CSV, JSON or XML."),e("li",null,[e("strong",null,"Optional:"),t(" Configure any other export details as desired.")]),e("li",null,[t("Click "),e("span",{mi:"",btn:""},"download"),t(" to download the file.")])],-1),j=e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"Opening the file in Excel?"),e("p",null,"Export your file to CSV to seamlessly open in excel.")],-1),q=e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"Exporting to File Library"),e("p",null,"When downloading 2,500 or more Items, you will be required to download into the Directus Project\u2019s File Library. After exporting, go to the File Library to download your file locally.")],-1),W=e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"Exporting Relational Files"),e("p",null,"It is possible to export relational Field values. For this task, the User performing the export will need access permissions for the related Collection and a firm understanding of the relational data model.")],-1),J=e("h2",{id:"export-items-menu"},[t("Export Items Menu "),e("a",{class:"header-anchor",href:"#export-items-menu"},"#")],-1),R=e("video",{title:"Export Data to a File",autoplay:"",muted:"",loop:"",controls:""},[e("source",{src:"https://cdn.directus.io/docs/v9/app-guide/imports-exports/imports-exports-20220415A/export-items-menu-20220416A.mp4",type:"video/mp4"})],-1),X=e("p",null,"This menu provides granular control over exactly which Items and Fields are exported, how they are exported, and where they are exported.",-1),H=e("ul",null,[e("li",null,[e("strong",null,"Format"),t(" \u2014 Choose to export Items as CSV, JSON, or XML.")]),e("li",null,[e("strong",null,"Limit"),t(" \u2014 Set the maximum number of Items to be exported.")]),e("li",null,[e("strong",null,"Export Location"),t(" \u2014 Download the export file directly to your machine or to the File Library.")]),e("li",null,[e("strong",null,"Folder"),t(" \u2014 Choose the Folder to download to "),e("em",null,"(if export location is the Folder Library)"),t(".")]),e("li",null,[e("strong",null,"Sort Field"),t(" \u2014 Choose Field to sort Items by.")]),e("li",null,[e("strong",null,"Sort Direction"),t(" \u2014 Choose to sort Items in ascending or descending order.")]),e("li",null,[e("strong",null,"Full-Text Search"),t(" \u2014 Limit exported Items to ones which matched as search results.")]),e("li",null,[e("strong",null,"Filter"),t(" \u2014 Limit exported Items with a Filter.")]),e("li",null,[e("strong",null,"Fields"),t(" \u2014 Add, remove, and re-order the Item Fields that will be exported.")])],-1),Y=e("h2",{id:"file-assets-and-media"},[t("File Assets and Media "),e("a",{class:"header-anchor",href:"#file-assets-and-media"},"#")],-1),z=e("p",null,"Some Collections may directly or relationally include Fields referencing images, videos or other file types. It is not possible to import or export files with this utility.",-1),G=t("To import and export files, please see the "),K=t("File Library Module"),Q=t("."),Z=e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"What does Import/Export do in the File Library?!"),e("p",null,[t("Import/Export handles Field Values associated with the file "),e("em",null,"(e.g. id, title, description, etc.)"),t(".")])],-1),$={title:"Import / Export",modularExtension:!1},ee={name:"import-export",setup(te,{expose:n}){return n({frontmatter:{title:"Import / Export",modularExtension:!1}}),(oe,ie)=>{const i=s("router-link"),a=s("docswrapper");return d(),p(a,{frontmatter:$},{default:o(()=>[e("div",c,[h,m,e("div",u,[_,e("p",null,[f,l(i,{to:"/docs/getting-started/glossary/#collections"},{default:o(()=>[x]),_:1}),g,l(i,{to:"/docs/getting-started/glossary/#items"},{default:o(()=>[y]),_:1}),I,l(i,{to:"/docs/getting-started/glossary/#fields"},{default:o(()=>[w]),_:1}),v])]),e("div",b,[F,e("p",null,[C,l(i,{to:"/docs/reference/system/utilities/#import-data-from-file"},{default:o(()=>[E]),_:1}),k,l(i,{to:"/docs/reference/system/utilities/#export-data-to-a-file"},{default:o(()=>[L]),_:1}),S])]),A,T,M,D,N,V,B,U,O,P,j,q,W,J,R,X,H,Y,z,e("p",null,[G,l(i,{to:"/docs/app/file-library/"},{default:o(()=>[K]),_:1}),Q]),Z])]),_:1})}}};typeof r=="function"&&r(ee);export{ee as default,$ as frontmatter};
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
var Ee=Object.defineProperty,je=Object.defineProperties;var Re=Object.getOwnPropertyDescriptors;var me=Object.getOwnPropertySymbols;var Pe=Object.prototype.hasOwnProperty,Te=Object.prototype.propertyIsEnumerable;var ge=(e,t,o)=>t in e?Ee(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,se=(e,t)=>{for(var o in t||(t={}))Pe.call(t,o)&&ge(e,o,t[o]);if(me)for(var o of me(t))Te.call(t,o)&&ge(e,o,t[o]);return e},_e=(e,t)=>je(e,Re(t));import{T as he,c as we,w as He}from"./vue.runtime.esm-bundler.ac4ff7af.js";import{u as Fe,a as ke,_ as U,b as Se,g as Ie,c as ce,d as Z,e as de,M as qe,t as We,f as ze,h as Ge,i as Qe,j as ye,l as Je,p as Xe,k as Ke,m as Ye,n as Ze,o as be,q as $e,r as xe,s as et,H as tt}from"./index.133de9ba.entry.js";import{l as le}from"./use-sync.c0f4dfab.js";import{storeToRefs as ue}from"./pinia.256cc3da.entry.js";import{useI18n as z}from"./vue-i18n.ecb0af35.entry.js";import{useRouter as Ce}from"./vue-router.8987d576.entry.js";import{d as B,c as C,r as $,I as ve,f as ee,a as i,n as x,p as T,o as a,b as _,w as s,q as I,e as l,u as E,g as O,F as te,v as A,x as Le,B as M,t as N,H as oe,P as ot,i as q,A as Oe,O as nt,j as at,C as st,G as b,h as rt,y as it,z as lt,J as ut,K as ct}from"./runtime-core.esm-bundler.b1f35d24.js";const dt=B({setup(){const{t:e}=z(),t=Fe(),o=ke(),u=C(()=>{var v;return o.settings===null||!((v=o.settings)!=null&&v.project_logo)?null:Se(Ie()+`assets/${o.settings.project_logo}`)}),d=$(!1),{queueHasItems:c}=ve(t);ee(()=>c.value,v=>{v&&(d.value=!0)});const r=C(()=>{var v;return(v=o.settings)==null?void 0:v.project_url}),n=C(()=>{var v;return(v=o.settings)!=null&&v.project_url?e("view_project"):!1});return{customLogoPath:u,showLoader:d,stopSpinnerIfQueueIsEmpty:p,url:r,urlTooltip:n};function p(){c.value===!1&&(d.value=!1)}}}),vt=["src"];function pt(e,t,o,u,d,c){const r=i("v-progress-linear"),n=x("tooltip");return T((a(),_(Le(e.url?"a":"div"),{href:e.url,target:e.url?"_blank":void 0,rel:e.url?"noopener noreferrer":void 0,class:A(["module-bar-logo",{loading:e.showLoader}])},{default:s(()=>[e.customLogoPath?(a(),I(te,{key:0},[l(he,{name:"fade"},{default:s(()=>[e.showLoader?(a(),_(r,{key:0,indeterminate:"",rounded:"",onAnimationiteration:e.stopSpinnerIfQueueIsEmpty},null,8,["onAnimationiteration"])):E("",!0)]),_:1}),O("img",{class:"custom-logo",src:e.customLogoPath,alt:"Project Logo"},null,8,vt)],64)):(a(),I("div",{key:1,class:A(["logo",{running:e.showLoader}]),onAnimationiteration:t[0]||(t[0]=(...p)=>e.stopSpinnerIfQueueIsEmpty&&e.stopSpinnerIfQueueIsEmpty(...p))},null,34))]),_:1},8,["href","target","rel","class"])),[[n,e.urlTooltip,void 0,{right:!0}]])}var _t=U(dt,[["render",pt],["__scopeId","data-v-a98d38ac"]]);const ft=B({setup(){const{t:e}=z(),t=ce(),o=Z(),{notificationsDrawerOpen:u}=ue(t),{unread:d}=ue(o),c=de(),r=$(!1),n=C(()=>{var w;return!c.currentUser||!("avatar"in c.currentUser)||!((w=c.currentUser)!=null&&w.avatar)?null:Se(Ie()+`assets/${c.currentUser.avatar.id}?key=system-medium-cover`)}),p=$(null),v=C(()=>{var m;return`/users/${(m=c.currentUser)==null?void 0:m.id}`}),y=C(()=>"/logout"),f=c.fullName;return{t:e,userFullName:f,avatarURL:n,userProfileLink:v,signOutActive:r,signOutLink:y,notificationsDrawerOpen:u,unread:d,avatarError:p}}}),mt={class:"module-bar-avatar"},gt=["src","alt"];function yt(e,t,o,u,d,c){const r=i("v-icon"),n=i("v-button"),p=i("v-badge"),v=i("v-card-title"),y=i("v-card-actions"),f=i("v-card"),w=i("v-dialog"),m=i("v-avatar"),P=i("router-link"),D=i("v-hover"),L=x("tooltip");return a(),I("div",mt,[l(p,{value:e.unread,disabled:e.unread==0,class:"notifications-badge"},{default:s(()=>[T((a(),_(n,{tile:"",icon:"","x-large":"",class:"notifications",onClick:t[0]||(t[0]=j=>e.notificationsDrawerOpen=!0)},{default:s(()=>[l(r,{name:"notifications"})]),_:1})),[[L,e.t("notifications"),void 0,{right:!0}]])]),_:1},8,["value","disabled"]),l(D,null,{default:s(({hover:j})=>[l(w,{modelValue:e.signOutActive,"onUpdate:modelValue":t[2]||(t[2]=h=>e.signOutActive=h),onEsc:t[3]||(t[3]=h=>e.signOutActive=!1)},{activator:s(({on:h})=>[l(he,{name:"sign-out"},{default:s(()=>[j?T((a(),_(n,{key:0,tile:"",icon:"","x-large":"",class:"sign-out",onClick:h},{default:s(()=>[l(r,{name:"logout"})]),_:2},1032,["onClick"])),[[L,e.t("sign_out"),void 0,{right:!0}]]):E("",!0)]),_:2},1024)]),default:s(()=>[l(f,null,{default:s(()=>[l(v,null,{default:s(()=>[M(N(e.t("sign_out_confirm")),1)]),_:1}),l(y,null,{default:s(()=>[l(n,{secondary:"",onClick:t[1]||(t[1]=h=>e.signOutActive=!e.signOutActive)},{default:s(()=>[M(N(e.t("cancel")),1)]),_:1}),l(n,{to:e.signOutLink},{default:s(()=>[M(N(e.t("sign_out")),1)]),_:1},8,["to"])]),_:1})]),_:1})]),_:2},1032,["modelValue"]),l(P,{to:e.userProfileLink},{default:s(()=>[T((a(),_(m,{tile:"",large:"",class:A({"no-avatar":!e.avatarURL})},{default:s(()=>[e.avatarURL&&!e.avatarError?(a(),I("img",{key:0,src:e.avatarURL,alt:e.userFullName,class:"avatar-image",onError:t[4]||(t[4]=h=>e.avatarError=h)},null,40,gt)):(a(),_(r,{key:1,name:"account_circle"}))]),_:1},8,["class"])),[[L,e.userFullName,void 0,{right:!0}]])]),_:1},8,["to"])]),_:1})])}var bt=U(ft,[["render",yt],["__scopeId","data-v-0dbe563a"]]);const $t=B({components:{ModuleBarLogo:_t,ModuleBarAvatar:bt},setup(){const e=ke(),{modules:t}=ze(),o=C(()=>t.value.map(d=>d.id));return{modules:C(()=>{var d;return e.settings?((d=e.settings.module_bar)!=null?d:qe).filter(c=>c.type==="link"?!0:c.enabled&&o.value.includes(c.id)).map(c=>{if(c.type==="link"){const n=le.exports.omit(c,["url"]);return c.url.startsWith("/")?n.to=c.url:n.href=c.url,We(n)}const r=t.value.find(n=>n.id===c.id);return _e(se(se({},c),t.value.find(n=>n.id===c.id)),{to:`/${r.id}`})}):[]})}}}),ht={class:"module-bar"},wt={class:"modules"};function kt(e,t,o,u,d,c){const r=i("module-bar-logo"),n=i("v-icon"),p=i("v-button"),v=i("module-bar-avatar"),y=x("tooltip");return a(),I("div",ht,[l(r),O("div",wt,[(a(!0),I(te,null,oe(e.modules,f=>T((a(),_(p,{key:f.id,icon:"","x-large":"",to:f.to,href:f.href,tile:"",style:ot(f.color?{"--v-button-color-active":f.color}:null)},{default:s(()=>[l(n,{name:f.icon},null,8,["name"])]),_:2},1032,["to","href","style"])),[[y,f.name,void 0,{right:!0}]])),128))]),l(v)])}var St=U($t,[["render",kt],["__scopeId","data-v-fc7a189c"]]);const It=B({setup(){const{t:e}=z(),{parsedInfo:t}=Ge(),o=Z(),u=de(),d=C(()=>o.dialogs);return{t:e,notifications:d,admin:u.isAdmin,done:r,getGitHubIssueLink:c};function c(n,p){var y,f,w,m;const v=`<!-- Please put a detailed explanation of the problem here. -->
|
|
2
|
-
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
### Project details
|
|
6
|
-
Directus Version: ${(y=t.value)==null?void 0:y.directus.version}
|
|
7
|
-
Environment: production
|
|
8
|
-
OS: ${(f=t.value)==null?void 0:f.os.type} ${(w=t.value)==null?void 0:w.os.version}
|
|
9
|
-
Node: ${(m=t.value)==null?void 0:m.node.version}
|
|
10
|
-
|
|
11
|
-
### Error
|
|
12
|
-
|
|
13
|
-
Title: ${p.title||"none"}
|
|
14
|
-
Message: ${p.text||"none"}
|
|
15
|
-
|
|
16
|
-
<details>
|
|
17
|
-
<summary>Stack Trace</summary>
|
|
18
|
-
<pre>
|
|
19
|
-
${JSON.stringify(p.error,Object.getOwnPropertyNames(p.error),2)}
|
|
20
|
-
</pre>
|
|
21
|
-
</details>
|
|
22
|
-
`;return`https://github.com/directus/directus/issues/new?body=${encodeURIComponent(v)}`}function r(n){o.remove(n)}}}),Ct={class:"notification-dialogs"},Lt=["href"];function Ot(e,t,o,u,d,c){const r=i("v-card-title"),n=i("v-error"),p=i("v-card-text"),v=i("v-button"),y=i("v-card-actions"),f=i("v-card"),w=i("v-dialog");return a(),I("div",Ct,[(a(!0),I(te,null,oe(e.notifications,m=>(a(),_(w,{key:m.id,"model-value":!0,persist:""},{default:s(()=>[l(f,{class:A([m.type])},{default:s(()=>[l(r,null,{default:s(()=>[M(N(m.title),1)]),_:2},1024),m.text?(a(),_(p,{key:0},{default:s(()=>[M(N(m.text)+" ",1),m.error?(a(),_(n,{key:0,error:m.error},null,8,["error"])):E("",!0)]),_:2},1024)):E("",!0),l(y,null,{default:s(()=>[m.type==="error"&&e.admin&&m.code==="UNKNOWN"?(a(),_(v,{key:0,secondary:""},{default:s(()=>[O("a",{target:"_blank",href:e.getGitHubIssueLink(m.id,m)},N(e.t("report_error")),9,Lt)]),_:2},1024)):E("",!0),l(v,{onClick:P=>e.done(m.id)},{default:s(()=>[M(N(e.t("dismiss")),1)]),_:2},1032,["onClick"])]),_:2},1024)]),_:2},1032,["class"])]),_:2},1024))),128))])}var Vt=U(It,[["render",Ot],["__scopeId","data-v-bb61b36a"]]);const Nt=B({props:{modelValue:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e){const{t}=z(),o=ce(),u=de(),d=Z(),c=Qe(),r=Ce(),n=$([]),p=$(0),v=$(!1),y=$(null),f=$([]),w=$(["inbox"]),{notificationsDrawerOpen:m}=ue(o),P=$([{text:t("subject"),value:"subject",sortable:!1,width:300,align:"left"},{text:t("timestamp"),value:"timestampDistance",sortable:!1,width:180,align:"left"}]);return D(),ee([()=>e.modelValue,w],()=>D()),{tableHeaders:P,t,notificationsDrawerOpen:m,page:p,notifications:n,loading:v,error:y,selection:f,onRowClick:j,toggleArchive:L,tab:w};async function D(){v.value=!0;try{const h=await ye.get("/notifications",{params:{filter:{_and:[{recipient:{_eq:u.currentUser.id}},{status:{_eq:w.value[0]}}]},fields:["id","subject","collection","item","timestamp"],sort:["-timestamp"]}});await d.getUnreadCount();const H=h.data.data,F=[];for(const G of H)F.push(_e(se({},G),{timestampDistance:await Je(Xe(G.timestamp),new Date,{addSuffix:!0})}));n.value=F}catch(h){y.value=h}finally{v.value=!1}}async function L(){await ye.patch("/notifications",{keys:f.value.map(({id:h})=>h),data:{status:w.value[0]==="inbox"?"archived":"inbox"}}),await D(),f.value=[]}function j({item:h}){var F;const H=c.getCollection(h.collection);(F=H==null?void 0:H.meta)!=null&&F.singleton?r.push(`/content/${h.collection}`):r.push(`/content/${h.collection}/${h.item}`),m.value=!1}}});function Dt(e,t,o,u,d,c){const r=i("v-icon"),n=i("v-button"),p=i("v-list-item-icon"),v=i("v-list-item-content"),y=i("v-tab"),f=i("v-tabs"),w=i("v-info"),m=i("v-table"),P=i("v-drawer"),D=x("tooltip");return a(),_(P,{modelValue:e.notificationsDrawerOpen,"onUpdate:modelValue":t[3]||(t[3]=L=>e.notificationsDrawerOpen=L),icon:"notifications",title:e.t("notifications"),onCancel:t[4]||(t[4]=L=>e.notificationsDrawerOpen=!1)},{actions:s(()=>[T((a(),_(n,{icon:"",rounded:"",disabled:e.selection.length===0,secondary:"",onClick:e.toggleArchive},{default:s(()=>[l(r,{name:e.tab[0]==="inbox"?"archive":"move_to_inbox"},null,8,["name"])]),_:1},8,["disabled","onClick"])),[[D,e.tab[0]==="inbox"?e.t("archive"):e.t("unarchive"),void 0,{bottom:!0}]])]),sidebar:s(()=>[l(f,{modelValue:e.tab,"onUpdate:modelValue":t[0]||(t[0]=L=>e.tab=L),vertical:""},{default:s(()=>[l(y,{value:"inbox"},{default:s(()=>[l(p,null,{default:s(()=>[l(r,{name:"inbox"})]),_:1}),l(v,null,{default:s(()=>[M(N(e.t("inbox")),1)]),_:1})]),_:1}),l(y,{value:"archived"},{default:s(()=>[l(p,null,{default:s(()=>[l(r,{name:"archive"})]),_:1}),l(v,null,{default:s(()=>[M(N(e.t("archive")),1)]),_:1})]),_:1})]),_:1},8,["modelValue"])]),default:s(()=>[!e.loading&&e.notifications.length===0?(a(),_(w,{key:0,icon:"notifications",title:e.t("no_notifications"),center:""},{default:s(()=>[M(N(e.t("no_notifications_copy")),1)]),_:1},8,["title"])):(a(),_(m,{key:1,modelValue:e.selection,"onUpdate:modelValue":t[1]||(t[1]=L=>e.selection=L),headers:e.tableHeaders,"onUpdate:headers":t[2]||(t[2]=L=>e.tableHeaders=L),"show-select":"",loading:e.loading,items:e.notifications,"item-key":"id","onClick:row":e.onRowClick},null,8,["modelValue","headers","loading","items","onClick:row"]))]),_:1},8,["modelValue","title"])}var Mt=U(Nt,[["render",Dt],["__scopeId","data-v-2e8d7f71"]]);const Ut=B({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=Z();return{close:o};function o(){e.showClose===!0&&t.remove(e.id)}}}),Bt={key:0,class:"icon"},At={class:"content"},Et={class:"title selectable"},jt={key:0,class:"text selectable"};function Rt(e,t,o,u,d,c){const r=i("v-progress-circular"),n=i("v-icon");return a(),I("div",{class:A(["notification-item",[e.type,{tail:e.tail,dense:e.dense}]]),onClick:t[0]||(t[0]=(...p)=>e.close&&e.close(...p))},[e.loading||e.progress||e.icon?(a(),I("div",Bt,[e.loading?(a(),_(r,{key:0,indeterminate:"",small:""})):e.progress?(a(),_(r,{key:1,small:"",value:e.progress},null,8,["value"])):(a(),_(n,{key:2,name:e.icon},null,8,["name"]))])):E("",!0),O("div",At,[O("p",Et,N(e.title),1),e.text?(a(),I("p",jt,N(e.text),1)):E("",!0)]),e.showClose?(a(),_(n,{key:1,name:"close",clickable:"",class:"close",onClick:e.close},null,8,["onClick"])):E("",!0)],2)}var Ve=U(Ut,[["render",Rt],["__scopeId","data-v-43553e80"]]);const Pt=B({components:{NotificationItem:Ve},props:{sidebarOpen:{type:Boolean,default:!1}},setup(){const e=Z();return{queue:ve(e).queue}}});function Tt(e,t,o,u,d,c){const r=i("notification-item");return a(),_(we,{class:A(["notifications-group",{"sidebar-open":e.sidebarOpen}]),name:"slide-fade",tag:"div"},{default:s(()=>[q(e.$slots,"default",{},void 0,!0),(a(!0),I(te,null,oe(e.queue,(n,p)=>(a(),_(r,Oe({key:n.id},n,{tail:p===e.queue.length-1,dense:e.sidebarOpen===!1,"show-close":n.persist===!0&&n.closeable!==!1}),null,16,["tail","dense","show-close"]))),128))]),_:3},8,["class"])}var Ht=U(Pt,[["render",Tt],["__scopeId","data-v-509bd4b0"]]);const Ft=B({props:{to:{type:String,default:null},icon:{type:String,default:"box"},active:{type:Boolean,default:!1}},emits:["click"],setup(){const e=ce(),{sidebarOpen:t}=ve(e);return{sidebarOpen:t}}}),qt={class:"icon"},Wt={key:0,class:"title"};function zt(e,t,o,u,d,c){const r=i("v-icon");return a(),_(Le(e.to?"router-link":"button"),{class:A(["sidebar-button",{active:e.active}]),onClick:t[0]||(t[0]=n=>e.$emit("click",n))},{default:s(()=>[O("div",qt,[l(r,{name:e.icon},null,8,["name"])]),e.sidebarOpen?(a(),I("div",Wt,[q(e.$slots,"default",{},void 0,!0)])):E("",!0)]),_:3},8,["class"])}var Gt=U(Ft,[["render",zt],["__scopeId","data-v-a8c828a4"]]);const Qt=B({components:{SidebarButton:Gt,NotificationItem:Ve},props:{sidebarOpen:{type:Boolean,default:!1},modelValue:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(){const{t:e}=z(),t=Z();return{t:e,lastFour:t.lastFour}}}),Jt={class:"notifications-preview"},Xt={key:0,class:"inline"},Kt={class:"padding-box"};function Yt(e,t,o,u,d,c){const r=i("router-link"),n=i("notification-item"),p=i("transition-expand"),v=i("sidebar-button"),y=x("tooltip");return a(),I("div",Jt,[l(p,{tag:"div"},{default:s(()=>[e.modelValue?(a(),I("div",Xt,[O("div",Kt,[l(r,{class:A(["link",{"has-items":e.lastFour.length>0}]),to:"/activity"},{default:s(()=>[M(N(e.t("show_all_activity")),1)]),_:1},8,["class"]),l(we,{tag:"div",name:"notification",class:"transition"},{default:s(()=>[(a(!0),I(te,null,oe(e.lastFour,f=>(a(),_(n,Oe({key:f.id},f),null,16))),128))]),_:1})])])):E("",!0)]),_:1}),T((a(),_(v,{active:e.modelValue,class:"toggle",icon:"pending_actions",onClick:t[0]||(t[0]=f=>e.$emit("update:modelValue",!e.modelValue))},{default:s(()=>[M(N(e.t("activity_log")),1)]),_:1},8,["active"])),[[y,e.t("activity_log"),void 0,{left:!0}]])])}var Zt=U(Qt,[["render",Yt],["__scopeId","data-v-415ab206"]]),X=1e3,K=X*60,Y=K*60,W=Y*24,xt=W*7,eo=W*365.25,re=function(e,t){t=t||{};var o=typeof e;if(o==="string"&&e.length>0)return to(e);if(o==="number"&&isFinite(e))return t.long?no(e):oo(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function to(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 o=parseFloat(t[1]),u=(t[2]||"ms").toLowerCase();switch(u){case"years":case"year":case"yrs":case"yr":case"y":return o*eo;case"weeks":case"week":case"w":return o*xt;case"days":case"day":case"d":return o*W;case"hours":case"hour":case"hrs":case"hr":case"h":return o*Y;case"minutes":case"minute":case"mins":case"min":case"m":return o*K;case"seconds":case"second":case"secs":case"sec":case"s":return o*X;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return o;default:return}}}}function oo(e){var t=Math.abs(e);return t>=W?Math.round(e/W)+"d":t>=Y?Math.round(e/Y)+"h":t>=K?Math.round(e/K)+"m":t>=X?Math.round(e/X)+"s":e+"ms"}function no(e){var t=Math.abs(e);return t>=W?ie(e,t,W,"day"):t>=Y?ie(e,t,Y,"hour"):t>=K?ie(e,t,K,"minute"):t>=X?ie(e,t,X,"second"):e+" ms"}function ie(e,t,o,u){var d=t>=o*1.5;return Math.round(e/o)+" "+u+(d?"s":"")}const ao=B({setup(){const{t:e}=z(),t=Ke(),o=C(()=>{const n=le.exports.sortBy(t.latency,["timestamp"]);return n[n.length-1]}),u=C(()=>{if(!t.latency||t.latency.length===0)return 0;const n=le.exports.sortBy(t.latency,["timestamp"]),p=n.slice(Math.max(n.length-5,0));let v=0;for(const{latency:y}of p)v+=y;return Math.round(v/p.length)}),d=C(()=>u.value<=250?4:u.value>250&&u.value<=500?3:u.value>500&&u.value<=750?2:1),c=C(()=>{switch(d.value){case 4:return`${e("connection_excellent")}
|
|
23
|
-
(${re(u.value)} ${e("latency")})`;case 3:return`${e("connection_good")}
|
|
24
|
-
(${re(u.value)} ${e("latency")})`;case 2:return`${e("connection_fair")}
|
|
25
|
-
(${re(u.value)} ${e("latency")})`;case 1:return`${e("connection_poor")}
|
|
26
|
-
(${re(u.value)} ${e("latency")})`;default:return null}});return{icon:C(()=>{switch(d.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:o,latencyTooltip:c}}}),so={class:"latency-indicator"};function ro(e,t,o,u,d,c){const r=i("v-progress-circular"),n=i("v-icon"),p=x("tooltip");return T((a(),I("div",so,[e.lastLatency?(a(),_(n,{key:1,name:e.icon},null,8,["name"])):(a(),_(r,{key:0,indeterminate:""}))])),[[p,e.latencyTooltip,void 0,{bottom:!0,end:!0}]])}var io=U(ao,[["render",ro],["__scopeId","data-v-2cfd5c8b"]]);const lo=B({components:{LatencyIndicator:io},setup(){const e=Ye(),t=C(()=>{var u,d;return(d=(u=e.info)==null?void 0:u.project)==null?void 0:d.project_name}),o=C(()=>{var u,d;return(d=(u=e.info)==null?void 0:u.project)==null?void 0:d.project_descriptor});return{name:t,descriptor:o}}}),uo={class:"project-info"},co={class:"name-container"};function vo(e,t,o,u,d,c){const r=i("latency-indicator"),n=i("v-text-overflow");return a(),I("div",uo,[l(r),O("div",co,[l(n,{placement:"right",class:"name",text:e.name},null,8,["text"]),e.descriptor?(a(),_(n,{key:0,placement:"right",class:"descriptor",text:e.descriptor},null,8,["text"])):E("",!0)])])}var po=U(lo,[["render",vo],["__scopeId","data-v-47e3c683"]]);const _o=B({props:{sidebarOpen:{type:Boolean,default:!1}},setup(e){const t=$([]),o=$(!1);return ee(()=>e.sidebarOpen,async u=>{u===!1?t.value=[]:(o.value=!0,await nt(),o.value=!1)}),{openDetail:t,mandatory:o}}});function fo(e,t,o,u,d,c){const r=i("v-item-group");return a(),_(r,{modelValue:e.openDetail,"onUpdate:modelValue":t[0]||(t[0]=n=>e.openDetail=n),class:"sidebar-detail-group",scope:"sidebar-detail",mandatory:e.mandatory},{default:s(()=>[q(e.$slots,"default",{},void 0,!0)]),_:3},8,["modelValue","mandatory"])}var mo=U(_o,[["render",fo],["__scopeId","data-v-ebb6371e"]]);const go=e=>(ut("data-v-d547d406"),e=e(),ct(),e),yo={class:"module-nav-content"},bo={class:"flex-container"},$o=go(()=>O("div",{class:"spacer"},null,-1)),ho=B({name:"private-view",props:{title:{default:null},smallHeader:{type:Boolean,default:!1}},setup(e){const t=e,{t:o}=z(),u=Ce(),d=$(),c=$(),{width:r}=Ze(),{width:n}=be(d),{width:p}=be(c),v=$(),{handleHover:y,onResizeHandlePointerDown:f,resetModuleNavWidth:w,onPointerMove:m,onPointerUp:P}=De();$e(window,"pointermove",m),$e(window,"pointerup",P);const{data:D}=xe("module-nav-width");at(()=>{!D.value||Number.isNaN(D.value)||(v.value.style.width=`${D.value}px`)});const{title:L}=ve(t),j=$(!1),h=de(),H=ce(),F=C(()=>{var S,g;return h.currentUser?((g=(S=h.currentUser)==null?void 0:S.role)==null?void 0:g.app_access)||!1:!0}),G=$(!1),{sidebarOpen:R,fullScreen:fe}=ue(H),Ne=C(()=>{var S;return((S=h.currentUser)==null?void 0:S.theme)||"auto"});st("main-element",d),u.afterEach(async()=>{var S;(S=d.value)==null||S.scrollTo({top:0}),fe.value=!1}),et(L);function De(){const S=$(!1),g=$(!1),ne=$(0),ae=$(0),V=$(null),k=$(0),Q=$(null);return ee(V,le.exports.debounce(J=>{J===220?D.value=null:D.value=J},300)),ee([r,n,p],()=>{r.value>1260?k.value=r.value-(590+60+p.value):r.value>960?k.value=r.value-(590+60+60):k.value=r.value-(60+60),V.value&&V.value>k.value&&(V.value=Math.max(220,k.value),v.value.style.width=`${V.value}px`)},{immediate:!0}),{handleHover:S,onResizeHandlePointerDown:pe,resetModuleNavWidth:Ue,onPointerMove:Be,onPointerUp:Ae};function pe(J){g.value=!0,ne.value=J.pageX,ae.value=v.value.offsetWidth}function Ue(){V.value=220,v.value.style.width="220px"}function Be(J){!g.value||(Q.value=window.requestAnimationFrame(()=>{V.value=Math.max(220,ae.value+(J.pageX-ne.value)),V.value>=k.value&&(V.value=k.value),V.value>220&&V.value<=230&&(V.value=220),v.value.style.width=`${V.value}px`}))}function Ae(){g.value===!0&&(g.value=!1,Q.value&&window.cancelAnimationFrame(Q.value))}}function Me(S){S.target&&S.target.classList.contains("close")===!1&&(R.value=!0)}return(S,g)=>{const ne=i("v-button"),ae=i("v-info"),V=i("v-overlay");return b(F)===!1?(a(),_(ae,{key:0,center:"",title:b(o)("no_app_access"),type:"danger",icon:"block"},{append:s(()=>[l(ne,{to:"/logout"},{default:s(()=>[M(N(b(o)("switch_user")),1)]),_:1})]),default:s(()=>[M(N(b(o)("no_app_access_copy"))+" ",1)]),_:1},8,["title"])):(a(),I("div",{key:1,class:A(["private-view",{theme:b(Ne),"full-screen":b(fe)}])},[O("aside",{id:"navigation",role:"navigation","aria-label":"Module Navigation",class:A({"is-open":j.value})},[l(St),O("div",{ref_key:"moduleNavEl",ref:v,class:"module-nav alt-colors"},[l(b(po)),O("div",yo,[q(S.$slots,"navigation",{},void 0,!0)]),O("div",{class:A(["module-nav-resize-handle",{active:b(y)}]),onPointerenter:g[0]||(g[0]=k=>y.value=!0),onPointerleave:g[1]||(g[1]=k=>y.value=!1),onPointerdown:g[2]||(g[2]=He((...k)=>b(f)&&b(f)(...k),["self"])),onDblclick:g[3]||(g[3]=(...k)=>b(w)&&b(w)(...k))},null,34)],512)],2),O("div",{id:"main-content",ref_key:"contentEl",ref:d,class:"content"},[l(b(tt),{small:e.smallHeader,"show-sidebar-toggle":"",title:b(L),"onToggle:sidebar":g[4]||(g[4]=k=>R.value=!b(R)),onPrimary:g[5]||(g[5]=k=>j.value=!j.value)},rt({_:2},[oe(S.$slots,(k,Q)=>({name:Q,fn:s(pe=>[q(S.$slots,Q,it(lt(pe)),void 0,!0)])}))]),1032,["small","title"]),O("main",null,[q(S.$slots,"default",{},void 0,!0)])],512),O("aside",{id:"sidebar",ref_key:"sidebarEl",ref:c,role:"contentinfo",class:A(["alt-colors",{"is-open":b(R)}]),"aria-label":"Module Sidebar",onClick:Me},[O("div",bo,[l(b(mo),{"sidebar-open":b(R)},{default:s(()=>[q(S.$slots,"sidebar",{},void 0,!0)]),_:3},8,["sidebar-open"]),$o,l(b(Zt),{modelValue:G.value,"onUpdate:modelValue":g[6]||(g[6]=k=>G.value=k),"sidebar-open":b(R)},null,8,["modelValue","sidebar-open"])])],2),l(V,{class:"nav-overlay",active:j.value,onClick:g[7]||(g[7]=k=>j.value=!1)},null,8,["active"]),l(V,{class:"sidebar-overlay",active:b(R),onClick:g[8]||(g[8]=k=>R.value=!1)},null,8,["active"]),l(Mt),G.value===!1?(a(),_(b(Ht),{key:0,"sidebar-open":b(R)},null,8,["sidebar-open"])):E("",!0),l(b(Vt))],2))}}});var No=U(ho,[["__scopeId","data-v-d547d406"]]);export{No as PrivateView,No as default};
|