Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
1 line
6.5 KiB
Plaintext
1 line
6.5 KiB
Plaintext
{"version":3,"sources":["../../src/query-presets/constraints.ts"],"sourcesContent":["import { getTranslation } from '@payloadcms/translations'\n\nimport type { Config } from '../config/types.js'\nimport type { Field, Option } from '../fields/config/types.js'\nimport type { QueryPresetConstraint } from './types.js'\n\nimport { fieldAffectsData } from '../fields/config/types.js'\nimport { toWords } from '../utilities/formatLabels.js'\nimport { preventLockout } from './preventLockout.js'\nimport { operations } from './types.js'\n\nconst defaultConstraintOptions: Option[] = [\n {\n label: 'Everyone',\n value: 'everyone',\n },\n {\n label: 'Only Me',\n value: 'onlyMe',\n },\n {\n label: 'Specific Users',\n value: 'specificUsers',\n },\n]\n\nexport const getConstraints = (config: Config): Field => ({\n name: 'access',\n type: 'group',\n admin: {\n components: {\n Cell: '@payloadcms/next/client#QueryPresetsAccessCell',\n },\n condition: (data) => Boolean(data?.isShared),\n },\n fields: operations.map((constraintOperation) => ({\n type: 'collapsible',\n fields: [\n {\n name: constraintOperation,\n type: 'group',\n admin: {\n hideGutter: true,\n },\n fields: [\n {\n name: 'constraint',\n type: 'select',\n defaultValue: 'onlyMe',\n filterOptions: (args) =>\n typeof config?.queryPresets?.filterConstraints === 'function'\n ? config.queryPresets.filterConstraints(args)\n : args.options,\n label: ({ i18n }) =>\n `Specify who can ${constraintOperation} this ${getTranslation(config.queryPresets?.labels?.singular || 'Preset', i18n)}`,\n options: [\n ...defaultConstraintOptions,\n ...(config?.queryPresets?.constraints?.[constraintOperation]?.map(\n (option: QueryPresetConstraint) => ({\n label: option.label,\n value: option.value,\n }),\n ) || []),\n ],\n },\n {\n name: 'users',\n type: 'relationship',\n admin: {\n condition: (data) =>\n Boolean(data?.access?.[constraintOperation]?.constraint === 'specificUsers'),\n },\n hasMany: true,\n hooks: {\n beforeChange: [\n ({ data, req }) => {\n if (data?.access?.[constraintOperation]?.constraint === 'onlyMe' && req.user) {\n return [req.user.id]\n }\n\n if (\n data?.access?.[constraintOperation]?.constraint === 'specificUsers' &&\n req.user\n ) {\n return [...(data?.access?.[constraintOperation]?.users || []), req.user.id]\n }\n },\n ],\n },\n relationTo: config.admin?.user ?? 'users', // TODO: remove this fallback when the args are properly typed as `SanitizedConfig`\n },\n ...(config?.queryPresets?.constraints?.[constraintOperation]?.reduce(\n (acc: Field[], option: QueryPresetConstraint) => {\n option.fields?.forEach((field, index) => {\n acc.push({ ...field })\n\n if (fieldAffectsData(field)) {\n acc[index]!.admin = {\n ...(acc[index]?.admin || {}),\n condition: (data) =>\n Boolean(data?.access?.[constraintOperation]?.constraint === option.value),\n }\n }\n })\n\n return acc\n },\n [] as Field[],\n ) || []),\n ],\n label: false,\n },\n ],\n label: () => toWords(constraintOperation),\n })),\n label: 'Sharing settings',\n validate: preventLockout,\n})\n"],"names":["getTranslation","fieldAffectsData","toWords","preventLockout","operations","defaultConstraintOptions","label","value","getConstraints","config","name","type","admin","components","Cell","condition","data","Boolean","isShared","fields","map","constraintOperation","hideGutter","defaultValue","filterOptions","args","queryPresets","filterConstraints","options","i18n","labels","singular","constraints","option","access","constraint","hasMany","hooks","beforeChange","req","user","id","users","relationTo","reduce","acc","forEach","field","index","push","validate"],"mappings":"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"} |