@turbo-red/strapi-plugin-lookup-enum
Version:
Like enum field, but options are extracted from a field provided by a single-type content.
1 lines • 16.7 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../admin/src/pluginId.ts","../../admin/src/utils/getTranslation.ts","../../admin/src/components/LookupEnumIcon.tsx","../../admin/src/components/MultiLookupEnumIcon.tsx","../../admin/src/index.ts"],"sourcesContent":["import jsonPackage from \"../../package.json\";\nexport default jsonPackage.strapi.name;\n","import pluginId from '../pluginId';\n\nconst getTranslation = (id: string) => `${pluginId}.${id}`;\n\nexport { getTranslation };\n","import React from 'react';\n\nfunction Icon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n className=\"sc-blHHSb fTSiDe\"\n version=\"1.1\"\n viewBox=\"0 0 32 32\"\n >\n <rect\n width=\"31\"\n height=\"23\"\n x=\"0.5\"\n y=\"4.5\"\n fill=\"#fbe7e7\"\n fillOpacity=\"1\"\n stroke=\"#872525\"\n strokeOpacity=\"1\"\n rx=\"2.5\"\n ></rect>\n <path\n fill=\"#7a3030\"\n fillOpacity=\"1\"\n d=\"M9.679 7.18a.75.75 0 00-1.358 0l-4 8.5a.75.75 0 001.357.64l.974-2.07h4.695l.974 2.07a.75.75 0 101.358-.64zm-2.32 5.57l1.64-3.489 1.643 3.489zm9.14-3c-.865 0-1.547.241-2.027.717a.75.75 0 101.056 1.063c.188-.187.516-.283.972-.283.584 0 1.074.323 1.21.757a3 3 0 00-1.21-.254c-1.516 0-2.75 1.121-2.75 2.5s1.234 2.5 2.75 2.5c.479.001.95-.114 1.375-.336A.75.75 0 0019.25 16v-3.75c0-1.379-1.234-2.5-2.75-2.5m0 5.5c-.687 0-1.25-.449-1.25-1 0-.551.563-1 1.25-1s1.25.449 1.25 1c0 .551-.562 1-1.25 1\"\n ></path>\n <g\n stroke=\"#020101\"\n strokeDasharray=\"none\"\n strokeOpacity=\"1\"\n transform=\"translate(1.285 -1.897)\"\n >\n <circle\n cx=\"15.212\"\n cy=\"16.58\"\n r=\"5.432\"\n fill=\"#efe7fb\"\n fillOpacity=\"0.559\"\n strokeWidth=\"0.6\"\n ></circle>\n <path\n fill=\"none\"\n fillOpacity=\"1\"\n strokeLinecap=\"round\"\n strokeWidth=\"1.623\"\n d=\"M19.427 20.761l4.94 4.94\"\n ></path>\n <path\n fill=\"none\"\n fillOpacity=\"1\"\n strokeLinecap=\"round\"\n strokeWidth=\"2.84\"\n d=\"M21.133 22.443l3.172 3.172\"\n ></path>\n </g>\n </svg>\n );\n}\n\nexport default Icon;\n","import React from 'react';\n\nfunction Icon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n className=\"sc-blHHSb fTSiDe\"\n viewBox=\"0 0 32 32\"\n >\n <rect width=\"31\" height=\"23\" x=\"0.5\" y=\"4.5\" fill=\"#fbe7e7\" stroke=\"#872525\" rx=\"2.5\"></rect>\n <g fill=\"#7a3030\" transform=\"translate(.612 1.407)\">\n <path d=\"M9.68 7.18a.75.75 0 00-1.358 0l-4 8.5a.75.75 0 001.357.64l.974-2.07h4.695l.974 2.07a.75.75 0 101.358-.64zm-2.32 5.57L9 9.26l1.643 3.49zm9.14-3c-.865 0-1.547.24-2.027.717a.75.75 0 101.056 1.063c.188-.187.516-.283.972-.283.584 0 1.074.323 1.21.757a3 3 0 00-1.21-.254c-1.516 0-2.75 1.12-2.75 2.5s1.234 2.5 2.75 2.5c.479 0 .95-.114 1.375-.336A.75.75 0 0019.25 16v-3.75c0-1.38-1.234-2.5-2.75-2.5m0 5.5c-.687 0-1.25-.45-1.25-1s.563-1 1.25-1 1.25.449 1.25 1-.562 1-1.25 1\"></path>\n <path\n strokeLinecap=\"round\"\n strokeWidth=\"1.153\"\n d=\"M2.045 18.326h3.36v-.922h-2.16v-10.8h2.16v-.92h-3.36z\"\n ></path>\n <path\n strokeLinecap=\"round\"\n strokeWidth=\"1.154\"\n d=\"M27.645 18.326h-3.36v-.922h2.16v-10.8h-2.16v-.92h3.36z\"\n ></path>\n <circle cx=\"20.807\" cy=\"15.922\" r=\"0.817\"></circle>\n <circle cx=\"23.01\" cy=\"15.922\" r=\"0.817\"></circle>\n <circle cx=\"25.09\" cy=\"15.922\" r=\"0.817\"></circle>\n </g>\n <g stroke=\"#020101\" transform=\"translate(1.286 -1.896)\">\n <circle\n cx=\"15.212\"\n cy=\"16.58\"\n r=\"5.431\"\n fill=\"#efe7fb\"\n fillOpacity=\"0.559\"\n strokeWidth=\"0.6\"\n ></circle>\n <path\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth=\"1.623\"\n d=\"M19.427 20.761l4.94 4.94\"\n ></path>\n <path\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth=\"2.84\"\n d=\"M21.133 22.443l3.172 3.172\"\n ></path>\n </g>\n </svg>\n );\n}\n\nexport default Icon;\n","import { getTranslation } from './utils/getTranslation';\nimport LookupEnumIcon from './components/LookupEnumIcon'\nimport MultiLookupEnumIcon from './components/MultiLookupEnumIcon'\n\nimport { StrapiApp, getFetchClient } from '@strapi/strapi/admin';\nimport pluginId from \"./pluginId\";\n\nexport default {\n async register(app: StrapiApp) {\n\n const { get } = getFetchClient();\n const contentTypesResp = await get<{ data: { uid: string; schema: { kind: 'collectionType' | 'singleType' } }[] }>(\n \"/content-type-builder/content-types\"\n );\n\n\n const contentTypeOptions: string[] = (!contentTypesResp.status || contentTypesResp.status === 200) ?\n contentTypesResp.data.data.filter(item => item.schema.kind === 'singleType').map(item => item.uid)\n : [];\n\n\n app.customFields.register(\n [{\n name: \"lookup-enum\",\n pluginId,\n type: \"string\",\n icon: LookupEnumIcon,\n intlLabel: {\n id: \"lookup-enum.label\",\n defaultMessage: \"Lookup enum\",\n },\n intlDescription: {\n id: \"lookup-enum.description\",\n defaultMessage: \"Like enum field , but options are extracted from a field provided by a single content type!\",\n },\n description: {\n id: \"lookup-enum.description\",\n defaultMessage: \"Like enum field , but options are extracted from a field provided by a single content type!\",\n },\n },\n {\n name: \"multi-lookup-enum\",\n pluginId,\n type: \"json\",\n icon: MultiLookupEnumIcon,\n intlLabel: {\n id: \"multi-lookup-enum.label\",\n defaultMessage: \"Multiple lookup enum\",\n },\n intlDescription: {\n id: \"multi-lookup-enum.description\",\n defaultMessage: \"Multiple selection enum field , options are extracted from a field provided by a single content type!\",\n },\n },\n ].map((item) => (\n {\n ...(item as any),\n\n components: {\n\n Input: async () => {\n const makeDynamicEnum =\n (await import(\n /* webpackChunkName: \"lookup-enum\" */ \"./components/DynamicEnum\"\n )).default;\n const component = makeDynamicEnum(item.type === 'json');\n return { default: component }\n }\n },\n options: {\n\n base: [\n\n {\n sectionTitle: {\n id: getTranslation('lookup-enum.options.advanced.optionsSection'),\n defaultMessage: 'Options source',\n },\n items: [\n {\n intlLabel: {\n id: getTranslation('lookup-enum.options.base.lookupSingleType'),\n defaultMessage: 'Single-Type',\n },\n name: 'options.lookupSingleType' as any,\n type: 'select',\n description: {\n id: getTranslation('lookup-enum.options.base.description'),\n defaultMessage: 'Lookup Single-Type entity',\n },\n options: contentTypeOptions.map((value) => {\n return {\n key: value,\n value,\n metadatas: {\n intlLabel: { id: `${value}.no-override`, defaultMessage: value },\n },\n }\n })\n },\n {\n intlLabel: {\n id: getTranslation('lookup-enum.options.base.lookupField'),\n defaultMessage: 'Lookup field',\n },\n name: 'options.lookupField' as any,\n type: 'text',\n\n description: {\n id: getTranslation('lookup-enum.options.base.description'),\n defaultMessage: 'Single-type text field where options are extracted using spaces,tabs and returns as delimiter.',\n },\n }\n ]\n },\n\n ],\n advanced: [\n {\n sectionTitle: {\n id: getTranslation('lookup-enum.options.advanced.settings'),\n defaultMessage: 'Settings',\n },\n items: [\n {\n name: 'required',\n type: 'checkbox',\n intlLabel: {\n id: 'form.attribute.item.requiredField',\n defaultMessage: 'Required field',\n },\n description: {\n id: 'form.attribute.item.requiredField.description',\n defaultMessage: \"You won't be able to create an entry if this field is empty\",\n },\n },\n {\n name: 'unique',\n type: 'checkbox',\n intlLabel: {\n id: 'form.attribute.item.uniqueField',\n defaultMessage: 'Unique field',\n },\n description: {\n id: 'form.attribute.item.uniqueField.description',\n defaultMessage: \"You won't be able to create an entry if there is an existing entry with identical content\",\n },\n },\n {\n name: 'private',\n type: 'checkbox',\n intlLabel: {\n id: 'form.attribute.item.privateField',\n defaultMessage: 'Private field',\n },\n description: {\n id: 'form.attribute.item.privateField.description',\n defaultMessage: \"This field will not show up in the API response\",\n },\n },\n ],\n }\n ]\n\n }\n })\n )\n );\n\n\n\n\n\n },\n\n async registerTrads(app: any) {\n const { locales } = app;\n\n const importedTranslations = await Promise.all(\n (locales as string[]).map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: getTranslation(data),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return importedTranslations;\n },\n};\n"],"names":["Icon","LookupEnumIcon","MultiLookupEnumIcon"],"mappings":"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"}